diff options
268 files changed, 15283 insertions, 8478 deletions
diff --git a/.depend b/.depend new file mode 100644 index 000000000..0893a87ab --- /dev/null +++ b/.depend | |||
@@ -0,0 +1,182 @@ | |||
1 | # DO NOT DELETE | ||
2 | |||
3 | addrmatch.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h match.h log.h | ||
4 | atomicio.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h atomicio.h | ||
5 | audit-bsm.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
6 | audit-linux.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
7 | audit.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
8 | auth-bsdauth.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
9 | auth-krb5.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h uidswap.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h | ||
10 | auth-options.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssherr.h log.h misc.h sshkey.h match.h ssh2.h auth-options.h | ||
11 | auth-pam.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
12 | auth-passwd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h | ||
13 | auth-rhosts.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h uidswap.h pathnames.h log.h misc.h key.h sshkey.h servconf.h canohost.h hostfile.h auth.h auth-pam.h audit.h loginrec.h | ||
14 | auth-shadow.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
15 | auth-sia.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
16 | auth-skey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
17 | auth.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h match.h groupaccess.h log.h misc.h servconf.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h canohost.h uidswap.h packet.h openbsd-compat/sys-queue.h | ||
18 | auth.o: dispatch.h opacket.h authfile.h monitor_wrap.h ssherr.h compat.h channels.h | ||
19 | auth2-chall.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh2.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h | ||
20 | auth2-gss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
21 | auth2-hostbased.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h canohost.h | ||
22 | auth2-hostbased.o: monitor_wrap.h pathnames.h ssherr.h match.h | ||
23 | auth2-kbdint.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h log.h misc.h servconf.h | ||
24 | auth2-none.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h atomicio.h xmalloc.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h ssh2.h ssherr.h | ||
25 | auth2-none.o: monitor_wrap.h | ||
26 | auth2-passwd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssherr.h log.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h monitor_wrap.h misc.h servconf.h | ||
27 | auth2-pubkey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h pathnames.h uidswap.h | ||
28 | auth2-pubkey.o: auth-options.h canohost.h monitor_wrap.h authfile.h match.h ssherr.h channels.h session.h | ||
29 | auth2.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h atomicio.h xmalloc.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h misc.h servconf.h compat.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h pathnames.h | ||
30 | auth2.o: monitor_wrap.h ssherr.h | ||
31 | authfd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh.h sshkey.h authfd.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h compat.h log.h atomicio.h misc.h ssherr.h | ||
32 | authfile.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h ssh.h log.h authfile.h misc.h atomicio.h sshkey.h ssherr.h krl.h | ||
33 | bitmap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h bitmap.h | ||
34 | bufaux.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h ssherr.h | ||
35 | bufbn.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
36 | bufec.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h ssherr.h | ||
37 | buffer.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h ssherr.h | ||
38 | canohost.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h canohost.h misc.h | ||
39 | chacha.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h chacha.h | ||
40 | channels.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h ssherr.h packet.h dispatch.h opacket.h log.h misc.h channels.h compat.h canohost.h key.h sshkey.h authfd.h pathnames.h | ||
41 | cipher-aes.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/openssl-compat.h | ||
42 | cipher-aesctr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h cipher-aesctr.h rijndael.h | ||
43 | cipher-chachapoly.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h ssherr.h cipher-chachapoly.h chacha.h poly1305.h | ||
44 | cipher-ctr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
45 | cipher.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h misc.h ssherr.h digest.h openbsd-compat/openssl-compat.h | ||
46 | cleanup.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h | ||
47 | clientloop.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h packet.h dispatch.h opacket.h compat.h channels.h key.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h | ||
48 | clientloop.o: kex.h mac.h myproposal.h log.h misc.h readconf.h clientloop.h sshconnect.h authfd.h atomicio.h sshpty.h match.h msg.h ssherr.h hostfile.h | ||
49 | compat.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h compat.h log.h match.h kex.h mac.h key.h sshkey.h | ||
50 | crc32.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crc32.h | ||
51 | dh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
52 | digest-libc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h digest.h | ||
53 | digest-openssl.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
54 | dispatch.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssh2.h log.h dispatch.h packet.h openbsd-compat/sys-queue.h opacket.h compat.h ssherr.h | ||
55 | dns.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h sshkey.h ssherr.h dns.h log.h digest.h | ||
56 | ed25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crypto_api.h ge25519.h fe25519.h sc25519.h | ||
57 | entropy.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
58 | fatal.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h | ||
59 | fe25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h fe25519.h crypto_api.h | ||
60 | ge25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h fe25519.h crypto_api.h sc25519.h ge25519.h ge25519_base.data | ||
61 | groupaccess.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h groupaccess.h match.h log.h | ||
62 | gss-genr.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
63 | gss-serv-krb5.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
64 | gss-serv.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
65 | hash.o: crypto_api.h includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h digest.h log.h ssherr.h | ||
66 | hmac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h digest.h hmac.h | ||
67 | hostfile.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h match.h sshkey.h hostfile.h log.h misc.h ssherr.h digest.h hmac.h | ||
68 | kex.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssh2.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h key.h log.h match.h misc.h | ||
69 | kex.o: monitor.h ssherr.h digest.h | ||
70 | kexc25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssh2.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h key.h log.h digest.h ssherr.h | ||
71 | kexc25519c.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h key.h log.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssh2.h digest.h ssherr.h | ||
72 | kexc25519s.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h kex.h mac.h key.h log.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h ssh2.h ssherr.h | ||
73 | kexdh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
74 | kexdhc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
75 | kexdhs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
76 | kexecdh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
77 | kexecdhc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
78 | kexecdhs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
79 | kexgex.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
80 | kexgexc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
81 | kexgexs.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
82 | key.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h key.h sshkey.h compat.h ssherr.h log.h authfile.h | ||
83 | krl.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h ssherr.h sshkey.h authfile.h misc.h log.h digest.h bitmap.h krl.h | ||
84 | log.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h | ||
85 | loginrec.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h key.h sshkey.h hostfile.h ssh.h loginrec.h log.h atomicio.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h canohost.h auth.h auth-pam.h audit.h | ||
86 | logintest.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h loginrec.h | ||
87 | mac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h digest.h hmac.h umac.h mac.h misc.h ssherr.h openbsd-compat/openssl-compat.h | ||
88 | match.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h match.h misc.h | ||
89 | md5crypt.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
90 | misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h misc.h log.h ssh.h ssherr.h uidswap.h | ||
91 | moduli.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
92 | monitor.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h atomicio.h xmalloc.h ssh.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h cipher.h cipher-chachapoly.h chacha.h poly1305.h | ||
93 | monitor.o: cipher-aesctr.h rijndael.h kex.h mac.h dh.h packet.h dispatch.h opacket.h auth-options.h sshpty.h channels.h session.h sshlogin.h canohost.h log.h misc.h servconf.h monitor.h monitor_wrap.h monitor_fdpass.h compat.h ssh2.h authfd.h match.h ssherr.h | ||
94 | monitor_fdpass.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h monitor_fdpass.h | ||
95 | monitor_wrap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h key.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h hostfile.h auth.h auth-pam.h audit.h | ||
96 | monitor_wrap.o: loginrec.h auth-options.h packet.h dispatch.h opacket.h log.h monitor.h monitor_wrap.h atomicio.h monitor_fdpass.h misc.h channels.h session.h servconf.h ssherr.h | ||
97 | msg.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h log.h atomicio.h msg.h misc.h | ||
98 | mux.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h log.h ssh.h ssh2.h pathnames.h misc.h match.h channels.h msg.h packet.h dispatch.h opacket.h monitor_fdpass.h sshpty.h key.h sshkey.h readconf.h clientloop.h | ||
99 | mux.o: ssherr.h | ||
100 | nchan.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h ssh2.h ssherr.h packet.h dispatch.h opacket.h channels.h compat.h log.h | ||
101 | opacket.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h | ||
102 | packet.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h key.h sshkey.h xmalloc.h crc32.h compat.h ssh2.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h digest.h log.h canohost.h misc.h | ||
103 | packet.o: channels.h ssh.h packet.h dispatch.h opacket.h ssherr.h | ||
104 | platform-misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
105 | platform-pledge.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
106 | platform-tracing.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h | ||
107 | platform.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h misc.h servconf.h key.h sshkey.h hostfile.h auth.h auth-pam.h audit.h loginrec.h | ||
108 | poly1305.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h poly1305.h | ||
109 | progressmeter.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h progressmeter.h atomicio.h misc.h | ||
110 | readconf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/glob.h xmalloc.h ssh.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h pathnames.h log.h sshkey.h misc.h readconf.h match.h kex.h mac.h key.h | ||
111 | readconf.o: uidswap.h myproposal.h digest.h | ||
112 | readpass.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h misc.h pathnames.h log.h ssh.h uidswap.h | ||
113 | rijndael.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h rijndael.h | ||
114 | sandbox-capsicum.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
115 | sandbox-darwin.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
116 | sandbox-null.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
117 | sandbox-pledge.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
118 | sandbox-rlimit.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
119 | sandbox-seccomp-filter.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
120 | sandbox-solaris.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
121 | sandbox-systrace.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
122 | sc25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sc25519.h crypto_api.h | ||
123 | scp.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssh.h atomicio.h pathnames.h log.h misc.h progressmeter.h utf8.h | ||
124 | servconf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h log.h misc.h servconf.h compat.h pathnames.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h key.h sshkey.h kex.h mac.h | ||
125 | servconf.o: match.h channels.h groupaccess.h canohost.h packet.h dispatch.h opacket.h hostfile.h auth.h auth-pam.h audit.h loginrec.h myproposal.h digest.h | ||
126 | serverloop.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h packet.h dispatch.h opacket.h log.h misc.h servconf.h canohost.h sshpty.h channels.h compat.h ssh2.h key.h sshkey.h cipher.h cipher-chachapoly.h chacha.h | ||
127 | serverloop.o: poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h hostfile.h auth.h auth-pam.h audit.h loginrec.h session.h auth-options.h serverloop.h ssherr.h | ||
128 | session.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshpty.h packet.h dispatch.h opacket.h match.h uidswap.h compat.h channels.h key.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h | ||
129 | session.o: cipher-aesctr.h rijndael.h hostfile.h auth.h auth-pam.h audit.h loginrec.h auth-options.h authfd.h pathnames.h log.h misc.h servconf.h sshlogin.h serverloop.h canohost.h session.h kex.h mac.h monitor_wrap.h sftp.h atomicio.h | ||
130 | sftp-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssherr.h log.h atomicio.h progressmeter.h misc.h utf8.h sftp.h sftp-common.h sftp-client.h openbsd-compat/glob.h | ||
131 | sftp-common.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssherr.h log.h misc.h sftp.h sftp-common.h | ||
132 | sftp-glob.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h sftp.h sftp-common.h sftp-client.h openbsd-compat/glob.h | ||
133 | sftp-server-main.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h sftp.h misc.h xmalloc.h | ||
134 | sftp-server.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h ssherr.h log.h misc.h match.h uidswap.h sftp.h sftp-common.h | ||
135 | sftp.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h log.h pathnames.h misc.h utf8.h sftp.h ssherr.h sftp-common.h sftp-client.h openbsd-compat/glob.h | ||
136 | ssh-add.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/openssl-compat.h xmalloc.h ssh.h log.h sshkey.h authfd.h authfile.h pathnames.h misc.h ssherr.h digest.h | ||
137 | ssh-agent.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshkey.h authfd.h compat.h log.h misc.h digest.h ssherr.h match.h | ||
138 | ssh-dss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
139 | ssh-ecdsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
140 | ssh-ed25519.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crypto_api.h log.h sshkey.h ssherr.h ssh.h | ||
141 | ssh-keygen.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h sshkey.h authfile.h uuencode.h pathnames.h log.h misc.h match.h hostfile.h dns.h ssh.h ssh2.h ssherr.h ssh-pkcs11.h atomicio.h krl.h digest.h utf8.h authfd.h | ||
142 | ssh-keyscan.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h sshkey.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h kex.h mac.h key.h compat.h myproposal.h packet.h dispatch.h | ||
143 | ssh-keyscan.o: opacket.h log.h atomicio.h misc.h hostfile.h ssherr.h ssh_api.h ssh2.h dns.h | ||
144 | ssh-keysign.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h log.h sshkey.h ssh.h ssh2.h misc.h authfile.h msg.h canohost.h pathnames.h readconf.h uidswap.h ssherr.h | ||
145 | ssh-pkcs11-client.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
146 | ssh-pkcs11-helper.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h log.h misc.h sshkey.h authfd.h ssh-pkcs11.h ssherr.h | ||
147 | ssh-pkcs11.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
148 | ssh-rsa.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
149 | ssh-xmss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
150 | ssh.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/openssl-compat.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h canohost.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h packet.h | ||
151 | ssh.o: dispatch.h opacket.h channels.h key.h sshkey.h authfd.h authfile.h pathnames.h clientloop.h log.h misc.h readconf.h sshconnect.h kex.h mac.h sshpty.h match.h msg.h uidswap.h version.h ssherr.h myproposal.h utf8.h | ||
152 | ssh_api.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssh_api.h openbsd-compat/sys-queue.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h sshkey.h kex.h mac.h key.h ssh.h ssh2.h packet.h dispatch.h opacket.h compat.h | ||
153 | ssh_api.o: log.h authfile.h misc.h version.h myproposal.h ssherr.h | ||
154 | sshbuf-getput-basic.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h | ||
155 | sshbuf-getput-crypto.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h | ||
156 | sshbuf-misc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h | ||
157 | sshbuf.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ssherr.h misc.h | ||
158 | sshconnect.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h key.h sshkey.h hostfile.h ssh.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h uidswap.h compat.h sshconnect.h log.h misc.h readconf.h atomicio.h dns.h monitor_fdpass.h | ||
159 | sshconnect.o: ssh2.h version.h authfile.h ssherr.h authfd.h | ||
160 | sshconnect2.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h packet.h dispatch.h opacket.h compat.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h key.h sshkey.h kex.h mac.h | ||
161 | sshconnect2.o: myproposal.h sshconnect.h authfile.h dh.h authfd.h log.h misc.h readconf.h match.h canohost.h msg.h pathnames.h uidswap.h hostfile.h ssherr.h utf8.h | ||
162 | sshd.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h ./openbsd-compat/sys-tree.h openbsd-compat/sys-queue.h xmalloc.h ssh.h ssh2.h sshpty.h packet.h dispatch.h opacket.h log.h misc.h match.h servconf.h uidswap.h compat.h cipher.h cipher-chachapoly.h | ||
163 | sshd.o: chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h key.h sshkey.h kex.h mac.h myproposal.h authfile.h pathnames.h atomicio.h canohost.h hostfile.h auth.h auth-pam.h audit.h loginrec.h authfd.h msg.h channels.h session.h monitor.h monitor_wrap.h ssh-sandbox.h auth-options.h version.h ssherr.h | ||
164 | ssherr.o: ssherr.h | ||
165 | sshkey-xmss.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
166 | sshkey.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crypto_api.h ssh2.h ssherr.h misc.h cipher.h cipher-chachapoly.h chacha.h poly1305.h cipher-aesctr.h rijndael.h digest.h sshkey.h sshkey-xmss.h match.h xmss_fast.h | ||
167 | sshlogin.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h loginrec.h log.h misc.h servconf.h | ||
168 | sshpty.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sshpty.h log.h misc.h | ||
169 | sshtty.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h sshpty.h | ||
170 | ttymodes.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h packet.h openbsd-compat/sys-queue.h dispatch.h opacket.h log.h compat.h ttymodes.h | ||
171 | uidswap.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h log.h uidswap.h xmalloc.h | ||
172 | umac.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h umac.h misc.h rijndael.h | ||
173 | umac128.o: umac.c includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h umac.h misc.h rijndael.h | ||
174 | utf8.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h utf8.h | ||
175 | uuencode.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h uuencode.h | ||
176 | verify.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h crypto_api.h | ||
177 | xmalloc.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h xmalloc.h log.h | ||
178 | xmss_commons.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
179 | xmss_fast.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
180 | xmss_hash.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
181 | xmss_hash_address.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
182 | xmss_wots.o: includes.h config.h defines.h platform.h openbsd-compat/openbsd-compat.h openbsd-compat/base64.h openbsd-compat/sigact.h openbsd-compat/readpassphrase.h openbsd-compat/vis.h openbsd-compat/getrrsetbyname.h openbsd-compat/sha1.h openbsd-compat/sha2.h openbsd-compat/rmd160.h openbsd-compat/md5.h openbsd-compat/blf.h openbsd-compat/getopt.h openbsd-compat/bsd-misc.h openbsd-compat/bsd-setres_id.h openbsd-compat/bsd-signal.h openbsd-compat/bsd-statvfs.h openbsd-compat/bsd-waitpid.h openbsd-compat/bsd-poll.h openbsd-compat/fake-rfc2553.h openbsd-compat/bsd-cygwin_util.h openbsd-compat/port-aix.h openbsd-compat/port-irix.h openbsd-compat/port-linux.h openbsd-compat/port-solaris.h openbsd-compat/port-net.h openbsd-compat/port-uw.h openbsd-compat/bsd-nextstep.h entropy.h buffer.h sshbuf.h | ||
diff --git a/.skipped-commit-ids b/.skipped-commit-ids index 7c03c9db8..b51baf90d 100644 --- a/.skipped-commit-ids +++ b/.skipped-commit-ids | |||
@@ -1,3 +1,10 @@ | |||
1 | 5317f294d63a876bfc861e19773b1575f96f027d remove libssh from makefiles | ||
2 | a337e886a49f96701ccbc4832bed086a68abfa85 Makefile changes | ||
3 | f2c9feb26963615c4fece921906cf72e248b61ee more Makefile | ||
4 | fa728823ba21c4b45212750e1d3a4b2086fd1a62 more Makefile refactoring | ||
5 | |||
6 | Old upstream tree: | ||
7 | |||
1 | 321065a95a7ccebdd5fd08482a1e19afbf524e35 Update DH groups | 8 | 321065a95a7ccebdd5fd08482a1e19afbf524e35 Update DH groups |
2 | d4f699a421504df35254cf1c6f1a7c304fb907ca Remove 1k bit groups | 9 | d4f699a421504df35254cf1c6f1a7c304fb907ca Remove 1k bit groups |
3 | aafe246655b53b52bc32c8a24002bc262f4230f7 Remove intermediate moduli | 10 | aafe246655b53b52bc32c8a24002bc262f4230f7 Remove intermediate moduli |
@@ -1,3 +1,2689 @@ | |||
1 | commit a0349a1cc4a18967ad1dbff5389bcdf9da098814 | ||
2 | Author: Damien Miller <djm@mindrot.org> | ||
3 | Date: Mon Apr 2 15:38:28 2018 +1000 | ||
4 | |||
5 | update versions in .spec files | ||
6 | |||
7 | commit 816ad38f79792f5617e3913be306ddb27e91091c | ||
8 | Author: Damien Miller <djm@mindrot.org> | ||
9 | Date: Mon Apr 2 15:38:20 2018 +1000 | ||
10 | |||
11 | update version number | ||
12 | |||
13 | commit 2c71ca1dd1efe458cb7dee3f8a1a566f913182c2 | ||
14 | Author: Darren Tucker <dtucker@dtucker.net> | ||
15 | Date: Fri Mar 30 18:23:07 2018 +1100 | ||
16 | |||
17 | Disable native strndup and strnlen on AIX. | ||
18 | |||
19 | On at least some revisions of AIX, strndup returns unterminated strings | ||
20 | under some conditions, apparently because strnlen returns incorrect | ||
21 | values in those cases. Disable both on AIX and use the replacements | ||
22 | from openbsd-compat. Fixes problem with ECDSA keys there, ok djm. | ||
23 | |||
24 | commit 6b5a17bc14e896e3904dc58d889b58934cfacd24 | ||
25 | Author: Darren Tucker <dtucker@dtucker.net> | ||
26 | Date: Mon Mar 26 13:12:44 2018 +1100 | ||
27 | |||
28 | Include ssh_api.h for struct ssh. | ||
29 | |||
30 | struct ssh is needed by implementations of sys_auth_passwd() that were | ||
31 | converted in commit bba02a50. Needed to fix build on AIX, I assume for | ||
32 | the other platforms too (although it should be harmless if not needed). | ||
33 | |||
34 | commit bc3f80e4d191b8e48650045dfa8a682cd3aabd4d | ||
35 | Author: Darren Tucker <dtucker@dtucker.net> | ||
36 | Date: Mon Mar 26 12:58:09 2018 +1100 | ||
37 | |||
38 | Remove UNICOS code missed during removal. | ||
39 | |||
40 | Fixes compile error on AIX. | ||
41 | |||
42 | commit 9d57762c24882e2f000a21a0ffc8c5908a1fa738 | ||
43 | Author: markus@openbsd.org <markus@openbsd.org> | ||
44 | Date: Sat Mar 24 19:29:03 2018 +0000 | ||
45 | |||
46 | upstream: openssh-7.7 | ||
47 | |||
48 | OpenBSD-Commit-ID: 274e614352460b9802c905f38fb5ea7ed5db3d41 | ||
49 | |||
50 | commit 4b7d8acdbbceef247dc035e611e577174ed8a87e | ||
51 | Author: Damien Miller <djm@mindrot.org> | ||
52 | Date: Mon Mar 26 09:37:02 2018 +1100 | ||
53 | |||
54 | Remove authinfo.sh test dependency on printenv | ||
55 | |||
56 | Some platforms lack printenv in the default $PATH. | ||
57 | Reported by Tom G. Christensen | ||
58 | |||
59 | commit 4afeaf3dcb7dc70efd98fcfcb0ed28a6b40b820e | ||
60 | Author: Tim Rice <tim@multitalents.net> | ||
61 | Date: Sun Mar 25 10:00:21 2018 -0700 | ||
62 | |||
63 | Use libiaf on all sysv5 systems | ||
64 | |||
65 | commit bba02a5094b3db228ceac41cb4bfca165d0735f3 | ||
66 | Author: Tim Rice <tim@multitalents.net> | ||
67 | Date: Sun Mar 25 09:17:33 2018 -0700 | ||
68 | |||
69 | modified: auth-sia.c | ||
70 | modified: openbsd-compat/port-aix.c | ||
71 | modified: openbsd-compat/port-uw.c | ||
72 | |||
73 | propogate changes to auth-passwd.c in commit | ||
74 | 7c856857607112a3dfe6414696bf4c7ab7fb0cb3 to other providers | ||
75 | of sys_auth_passwd() | ||
76 | |||
77 | commit d7a7a39168bdfe273587bf85d779d60569100a3f | ||
78 | Author: markus@openbsd.org <markus@openbsd.org> | ||
79 | Date: Sat Mar 24 19:29:03 2018 +0000 | ||
80 | |||
81 | upstream: openssh-7.7 | ||
82 | |||
83 | OpenBSD-Commit-ID: 274e614352460b9802c905f38fb5ea7ed5db3d41 | ||
84 | |||
85 | commit 9efcaaac314c611c6c0326e8bac5b486c424bbd2 | ||
86 | Author: markus@openbsd.org <markus@openbsd.org> | ||
87 | Date: Sat Mar 24 19:28:43 2018 +0000 | ||
88 | |||
89 | upstream: fix bogus warning when signing cert keys using agent; | ||
90 | |||
91 | from djm; ok deraadt dtucker | ||
92 | |||
93 | OpenBSD-Commit-ID: 12e50836ba2040042383a8b71e12d7ea06e9633d | ||
94 | |||
95 | commit 393436024d2e4b4c7a01f9cfa5854e7437896d11 | ||
96 | Author: Darren Tucker <dtucker@dtucker.net> | ||
97 | Date: Sun Mar 25 09:40:46 2018 +1100 | ||
98 | |||
99 | Replace /dev/stdin with "-". | ||
100 | |||
101 | For some reason sftp -b doesn't work with /dev/stdin on Cygwin, as noted | ||
102 | and suggested by vinschen at redhat.com. | ||
103 | |||
104 | commit b5974de1a1d419e316ffb6524b1b277dda2f3b49 | ||
105 | Author: Darren Tucker <dtucker@dtucker.net> | ||
106 | Date: Fri Mar 23 13:21:14 2018 +1100 | ||
107 | |||
108 | Provide $OBJ to paths in PuTTY interop tests. | ||
109 | |||
110 | commit dc31e79454e9b9140b33ad380565fdb59b9c4f33 | ||
111 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
112 | Date: Fri Mar 16 09:06:31 2018 +0000 | ||
113 | |||
114 | upstream: Tell puttygen to use /dev/urandom instead of /dev/random. On | ||
115 | |||
116 | OpenBSD they are both non-blocking, but on many other -portable platforms it | ||
117 | blocks, stalling tests. | ||
118 | |||
119 | OpenBSD-Regress-ID: 397d0d4c719c353f24d79f5b14775e0cfdf0e1cc | ||
120 | |||
121 | commit cb1f94431ef319cd48618b8b771b58739a8210cf | ||
122 | Author: markus@openbsd.org <markus@openbsd.org> | ||
123 | Date: Thu Mar 22 07:06:11 2018 +0000 | ||
124 | |||
125 | upstream: ssh/xmss: fix build; ok djm@ | ||
126 | |||
127 | OpenBSD-Commit-ID: c9374ca41d4497f1c673ab681cc33f6e7c5dd186 | ||
128 | |||
129 | commit 27979da9e4074322611355598f69175b9ff10d39 | ||
130 | Author: markus@openbsd.org <markus@openbsd.org> | ||
131 | Date: Thu Mar 22 07:05:48 2018 +0000 | ||
132 | |||
133 | upstream: ssh/xmss: fix deserialize for certs; ok djm@ | ||
134 | |||
135 | OpenBSD-Commit-ID: f44c41636c16ec83502039828beaf521c057dddc | ||
136 | |||
137 | commit c6cb2565c9285eb54fa9dfbb3890f5464aff410f | ||
138 | Author: Darren Tucker <dtucker@dtucker.net> | ||
139 | Date: Thu Mar 22 17:00:28 2018 +1100 | ||
140 | |||
141 | Save $? before case statement. | ||
142 | |||
143 | In some shells (FreeBSD 9, ash) the case statement resets $?, so save | ||
144 | for later testing. | ||
145 | |||
146 | commit 4c4e7f783b43b264c247233acb887ee10ed4ce4d | ||
147 | Author: djm@openbsd.org <djm@openbsd.org> | ||
148 | Date: Wed Mar 14 05:35:40 2018 +0000 | ||
149 | |||
150 | upstream: rename recently-added "valid-before" key restriction to | ||
151 | |||
152 | "expiry-time" as the former is confusing wrt similar terminology in X.509; | ||
153 | pointed out by jsing@ | ||
154 | |||
155 | OpenBSD-Regress-ID: ac8b41dbfd90cffd525d58350c327195b0937793 | ||
156 | |||
157 | commit 500396b204c58e78ad9d081516a365a9f28dc3fd | ||
158 | Author: djm@openbsd.org <djm@openbsd.org> | ||
159 | Date: Mon Mar 12 00:56:03 2018 +0000 | ||
160 | |||
161 | upstream: check valid-before option in authorized_keys | ||
162 | |||
163 | OpenBSD-Regress-ID: 7e1e4a84f7f099a290e5a4cbf4196f90ff2d7e11 | ||
164 | |||
165 | commit a76b5d26c2a51d7dd7a5164e683ab3f4419be215 | ||
166 | Author: djm@openbsd.org <djm@openbsd.org> | ||
167 | Date: Mon Mar 12 00:54:04 2018 +0000 | ||
168 | |||
169 | upstream: explicitly specify RSA/SHA-2 keytype here too | ||
170 | |||
171 | OpenBSD-Regress-ID: 74d7b24e8c72c27af6b481198344eb077e993a62 | ||
172 | |||
173 | commit 3a43297ce29d37c64e37c7e21282cb219e28d3d1 | ||
174 | Author: djm@openbsd.org <djm@openbsd.org> | ||
175 | Date: Mon Mar 12 00:52:57 2018 +0000 | ||
176 | |||
177 | upstream: exlicitly include RSA/SHA-2 keytypes in | ||
178 | |||
179 | PubkeyAcceptedKeyTypes here | ||
180 | |||
181 | OpenBSD-Regress-ID: 954d19e0032a74e31697fb1dc7e7d3d1b2d65fe9 | ||
182 | |||
183 | commit 037fdc1dc2d68e1d43f9c9e2586c02cabc8f7cc8 | ||
184 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
185 | Date: Wed Mar 14 06:56:20 2018 +0000 | ||
186 | |||
187 | upstream: sort expiry-time; | ||
188 | |||
189 | OpenBSD-Commit-ID: 8c7d82ee1e63e26ceb2b3d3a16514019f984f6bf | ||
190 | |||
191 | commit abc0fa38c9bc136871f28e452c3465c3051fc785 | ||
192 | Author: djm@openbsd.org <djm@openbsd.org> | ||
193 | Date: Wed Mar 14 05:35:40 2018 +0000 | ||
194 | |||
195 | upstream: rename recently-added "valid-before" key restriction to | ||
196 | |||
197 | "expiry-time" as the former is confusing wrt similar terminology in X.509; | ||
198 | pointed out by jsing@ | ||
199 | |||
200 | OpenBSD-Commit-ID: 376939466a1f562f3950a22314bc6505733aaae6 | ||
201 | |||
202 | commit bf0fbf2b11a44f06a64b620af7d01ff171c28e13 | ||
203 | Author: djm@openbsd.org <djm@openbsd.org> | ||
204 | Date: Mon Mar 12 00:52:01 2018 +0000 | ||
205 | |||
206 | upstream: add valid-before="[time]" authorized_keys option. A | ||
207 | |||
208 | simple way of giving a key an expiry date. ok markus@ | ||
209 | |||
210 | OpenBSD-Commit-ID: 1793b4dd5184fa87f42ed33c7b0f4f02bc877947 | ||
211 | |||
212 | commit fbd733ab7adc907118a6cf56c08ed90c7000043f | ||
213 | Author: Darren Tucker <dtucker@dtucker.net> | ||
214 | Date: Mon Mar 12 19:17:26 2018 +1100 | ||
215 | |||
216 | Add AC_LANG_PROGRAM to AC_COMPILE_IFELSE. | ||
217 | |||
218 | The recently added MIPS ABI tests need AC_LANG_PROGRAM to prevent | ||
219 | warnings from autoconf. Pointed out by klausz at haus-gisela.de. | ||
220 | |||
221 | commit c7c458e8261b04d161763cd333d74e7a5842e917 | ||
222 | Author: djm@openbsd.org <djm@openbsd.org> | ||
223 | Date: Wed Mar 7 23:53:08 2018 +0000 | ||
224 | |||
225 | upstream: revert recent strdelim() change, it causes problems with | ||
226 | |||
227 | some configs. | ||
228 | |||
229 | revision 1.124 | ||
230 | date: 2018/03/02 03:02:11; author: djm; state: Exp; lines: +19 -8; commitid: nNRsCijZiGG6SUTT; | ||
231 | Allow escaped quotes \" and \' in ssh_config and sshd_config quotes | ||
232 | option strings. bz#1596 ok markus@ | ||
233 | |||
234 | OpenBSD-Commit-ID: 59c40b1b81206d713c06b49d8477402c86babda5 | ||
235 | |||
236 | commit 0bcd871ccdf3baf2b642509ba4773d5be067cfa2 | ||
237 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
238 | Date: Mon Mar 5 07:03:18 2018 +0000 | ||
239 | |||
240 | upstream: move the input format details to -f; remove the output | ||
241 | |||
242 | format details and point to sshd(8), where it is documented; | ||
243 | |||
244 | ok dtucker | ||
245 | |||
246 | OpenBSD-Commit-ID: 95f17e47dae02a6ac7329708c8c893d4cad0004a | ||
247 | |||
248 | commit 45011511a09e03493568506ce32f4891a174a3bd | ||
249 | Author: Vicente Olivert Riera <Vincent.Riera@imgtec.com> | ||
250 | Date: Tue Jun 20 16:42:28 2017 +0100 | ||
251 | |||
252 | configure.ac: properly set seccomp_audit_arch for MIPS64 | ||
253 | |||
254 | Currently seccomp_audit_arch is set to AUDIT_ARCH_MIPS64 or | ||
255 | AUDIT_ARCH_MIPSEL64 (depending on the endinness) when openssh is built | ||
256 | for MIPS64. However, that's only valid for n64 ABI. The right macros for | ||
257 | n32 ABI defined in seccomp.h are AUDIT_ARCH_MIPS64N32 and | ||
258 | AUDIT_ARCH_MIPSEL64N32, for big and little endian respectively. | ||
259 | |||
260 | Because of that an sshd built for MIPS64 n32 rejects connection attempts | ||
261 | and the output of strace reveals that the problem is related to seccomp | ||
262 | audit: | ||
263 | |||
264 | [pid 194] prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, {len=57, | ||
265 | filter=0x555d5da0}) = 0 | ||
266 | [pid 194] write(7, "\0\0\0]\0\0\0\5\0\0\0Ulist_hostkey_types: "..., 97) = ? | ||
267 | [pid 193] <... poll resumed> ) = 2 ([{fd=5, revents=POLLIN|POLLHUP}, | ||
268 | {fd=6, revents=POLLHUP}]) | ||
269 | [pid 194] +++ killed by SIGSYS +++ | ||
270 | |||
271 | This patch fixes that problem by setting the right value to | ||
272 | seccomp_audit_arch taking into account the MIPS64 ABI. | ||
273 | |||
274 | Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> | ||
275 | |||
276 | commit 580086704c31de91dc7ba040a28e416bf1fefbca | ||
277 | Author: Vicente Olivert Riera <Vincent.Riera@imgtec.com> | ||
278 | Date: Tue Jun 20 16:42:11 2017 +0100 | ||
279 | |||
280 | configure.ac: detect MIPS ABI | ||
281 | |||
282 | Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> | ||
283 | |||
284 | commit cd4e937aa701f70366cd5b5969af525dff6fdf15 | ||
285 | Author: Alan Yee <alyee@ucsd.edu> | ||
286 | Date: Wed Mar 7 15:12:14 2018 -0800 | ||
287 | |||
288 | Use https URLs for links that support it. | ||
289 | |||
290 | commit c0a0c3fc4a76b682db22146b28ddc46566db1ce9 | ||
291 | Author: Darren Tucker <dtucker@dtucker.net> | ||
292 | Date: Mon Mar 5 20:03:07 2018 +1100 | ||
293 | |||
294 | Disable UTMPX on SunOS4. | ||
295 | |||
296 | commit 58fd4c5c0140f6636227ca7acbb149ab0c2509b9 | ||
297 | Author: Darren Tucker <dtucker@dtucker.net> | ||
298 | Date: Mon Mar 5 19:28:08 2018 +1100 | ||
299 | |||
300 | Check for and work around buggy fflush(NULL). | ||
301 | |||
302 | Some really old platforms (eg SunOS4) segfault on fflush(NULL) so check | ||
303 | for and work around. With klausz at haus-gisela.de. | ||
304 | |||
305 | commit 71e48bc7945f867029e50e06c665c66aed6d3c64 | ||
306 | Author: Darren Tucker <dtucker@dtucker.net> | ||
307 | Date: Mon Mar 5 10:22:32 2018 +1100 | ||
308 | |||
309 | Remove extra XMSS #endif | ||
310 | |||
311 | Extra #endif breaks compile with -DWITH_XMSS. Pointed out by Jack | ||
312 | Schmidt via github. | ||
313 | |||
314 | commit 055e09e2212ff52067786bf6d794ca9512ff7f0c | ||
315 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
316 | Date: Sat Mar 3 06:37:53 2018 +0000 | ||
317 | |||
318 | upstream: Update RSA minimum modulus size to 1024. sshkey.h rev 1.18 | ||
319 | |||
320 | bumped the minimum from 768 to 1024, update man page accordingly. | ||
321 | |||
322 | OpenBSD-Commit-ID: 27563ab4e866cd2aac40a5247876f6787c08a338 | ||
323 | |||
324 | commit 7e4fadd3248d6bb7d39d6688c76a613d35d2efc1 | ||
325 | Author: djm@openbsd.org <djm@openbsd.org> | ||
326 | Date: Sun Mar 4 01:46:48 2018 +0000 | ||
327 | |||
328 | upstream: for the pty control tests, just check that the PTY path | ||
329 | |||
330 | points to something in /dev (rather than checking the device node itself); | ||
331 | makes life easier for portable, where systems with dynamic ptys can delete | ||
332 | nodes before we get around to testing their existence. | ||
333 | |||
334 | OpenBSD-Regress-ID: b1e455b821e62572bccd98102f8dd9d09bb94994 | ||
335 | |||
336 | commit 13ef4cf53f24753fe920832b990b25c9c9cd0530 | ||
337 | Author: Darren Tucker <dtucker@dtucker.net> | ||
338 | Date: Sat Mar 3 16:21:20 2018 +1100 | ||
339 | |||
340 | Update PAM password change to new opts API. | ||
341 | |||
342 | commit 33561e68e0b27366cb769295a077aabc6a49d2a1 | ||
343 | Author: Darren Tucker <dtucker@dtucker.net> | ||
344 | Date: Sat Mar 3 14:56:09 2018 +1100 | ||
345 | |||
346 | Add strndup for platforms that need it. | ||
347 | |||
348 | Some platforms don't have strndup, which includes Solaris 10, NetBSD 3 | ||
349 | and FreeBSD 6. | ||
350 | |||
351 | commit e8a17feba95eef424303fb94441008f6c5347aaf | ||
352 | Author: Darren Tucker <dtucker@dtucker.net> | ||
353 | Date: Sat Mar 3 14:49:07 2018 +1100 | ||
354 | |||
355 | Flatten and alphabetize object file lists. | ||
356 | |||
357 | This will make maintenance and changes easier. "no objection" tim@ | ||
358 | |||
359 | commit de1920d743d295f50e6905e5957c4172c038e8eb | ||
360 | Author: djm@openbsd.org <djm@openbsd.org> | ||
361 | Date: Sat Mar 3 03:16:17 2018 +0000 | ||
362 | |||
363 | upstream: unit tests for new authorized_keys options API | ||
364 | |||
365 | OpenBSD-Regress-ID: 820f9ec9c6301f6ca330ad4052d85f0e67d0bdc1 | ||
366 | |||
367 | commit dc3e92df17556dc5b0ab19cee8dcb2a6ba348717 | ||
368 | Author: djm@openbsd.org <djm@openbsd.org> | ||
369 | Date: Fri Mar 2 02:53:27 2018 +0000 | ||
370 | |||
371 | upstream: fix testing of pty option, include positive test and | ||
372 | |||
373 | testing of restrict keyword | ||
374 | |||
375 | OpenBSD-Regress-ID: 4268f27c2706a0a95e725d9518c5bcbec9814c6d | ||
376 | |||
377 | commit 3d1edd1ebbc0aabea8bbe61903060f37137f7c61 | ||
378 | Author: djm@openbsd.org <djm@openbsd.org> | ||
379 | Date: Fri Mar 2 02:51:55 2018 +0000 | ||
380 | |||
381 | upstream: better testing for port-forwarding and restrict flags in | ||
382 | |||
383 | authorized_keys | ||
384 | |||
385 | OpenBSD-Regress-ID: ee771df8955f2735df54746872c6228aff381daa | ||
386 | |||
387 | commit 7c856857607112a3dfe6414696bf4c7ab7fb0cb3 | ||
388 | Author: djm@openbsd.org <djm@openbsd.org> | ||
389 | Date: Sat Mar 3 03:15:51 2018 +0000 | ||
390 | |||
391 | upstream: switch over to the new authorized_keys options API and | ||
392 | |||
393 | remove the legacy one. | ||
394 | |||
395 | Includes a fairly big refactor of auth2-pubkey.c to retain less state | ||
396 | between key file lines. | ||
397 | |||
398 | feedback and ok markus@ | ||
399 | |||
400 | OpenBSD-Commit-ID: dece6cae0f47751b9892080eb13d6625599573df | ||
401 | |||
402 | commit 90c4bec8b5f9ec4c003ae4abdf13fc7766f00c8b | ||
403 | Author: djm@openbsd.org <djm@openbsd.org> | ||
404 | Date: Sat Mar 3 03:06:02 2018 +0000 | ||
405 | |||
406 | upstream: Introduce a new API for handling authorized_keys options. | ||
407 | |||
408 | This API parses options to a dedicated structure rather than the old API's | ||
409 | approach of setting global state. It also includes support for merging | ||
410 | options, e.g. from authorized_keys, authorized_principals and/or | ||
411 | certificates. | ||
412 | |||
413 | feedback and ok markus@ | ||
414 | |||
415 | OpenBSD-Commit-ID: 98badda102cd575210d7802943e93a34232c80a2 | ||
416 | |||
417 | commit 26074380767e639ef89321610e146ae11016b385 | ||
418 | Author: djm@openbsd.org <djm@openbsd.org> | ||
419 | Date: Sat Mar 3 03:01:50 2018 +0000 | ||
420 | |||
421 | upstream: warn when the agent returns a signature type that was | ||
422 | |||
423 | different to what was requested. This might happen when an old/non-OpenSSH | ||
424 | agent is asked to make a rsa-sha2-256/512 signature but only supports | ||
425 | ssh-rsa. bz#2799 feedback and ok markus@ | ||
426 | |||
427 | OpenBSD-Commit-ID: 760c0f9438c5c58abc16b5f98008ff2d95cb13ce | ||
428 | |||
429 | commit f493d2b0b66fb003ed29f31dd66ff1aeb64be1fc | ||
430 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
431 | Date: Fri Mar 2 21:40:15 2018 +0000 | ||
432 | |||
433 | upstream: apply a lick of paint; tweaks/ok dtucker | ||
434 | |||
435 | OpenBSD-Commit-ID: 518a6736338045e0037f503c21027d958d05e703 | ||
436 | |||
437 | commit 713d9cb510e0e7759398716cbe6dcf43e574be71 | ||
438 | Author: djm@openbsd.org <djm@openbsd.org> | ||
439 | Date: Fri Mar 2 03:02:11 2018 +0000 | ||
440 | |||
441 | upstream: Allow escaped quotes \" and \' in ssh_config and | ||
442 | |||
443 | sshd_config quotes option strings. bz#1596 ok markus@ | ||
444 | |||
445 | OpenBSD-Commit-ID: dd3a29fc2dc905e8780198e5a6a30b096de1a1cb | ||
446 | |||
447 | commit 94b4e2d29afaaaef89a95289b16c18bf5627f7cd | ||
448 | Author: djm@openbsd.org <djm@openbsd.org> | ||
449 | Date: Fri Mar 2 02:08:03 2018 +0000 | ||
450 | |||
451 | upstream: refactor sshkey_read() to make it a little more, err, | ||
452 | |||
453 | readable. ok markus | ||
454 | |||
455 | OpenBSD-Commit-ID: 2e9247b5762fdac3b6335dc606d3822121714c28 | ||
456 | |||
457 | commit 5886b92968b360623491699247caddfb77a74d80 | ||
458 | Author: markus@openbsd.org <markus@openbsd.org> | ||
459 | Date: Thu Mar 1 20:32:16 2018 +0000 | ||
460 | |||
461 | upstream: missing #ifdef for _PATH_HOST_XMSS_KEY_FILE; report by | ||
462 | |||
463 | jmc@ | ||
464 | |||
465 | OpenBSD-Commit-ID: 9039cb69a3f9886bfef096891a9e7fcbd620280b | ||
466 | |||
467 | commit 3b36bed3d26f17f6a2b7e036e01777770fe1bcd4 | ||
468 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
469 | Date: Mon Feb 26 12:14:53 2018 +0000 | ||
470 | |||
471 | upstream: Remove unneeded (local) include. ok markus@ | ||
472 | |||
473 | OpenBSD-Commit-ID: 132812dd2296b1caa8cb07d2408afc28e4e60f93 | ||
474 | |||
475 | commit 27b9f3950e0289e225b57b7b880a8f1859dcd70b | ||
476 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
477 | Date: Mon Feb 26 03:56:44 2018 +0000 | ||
478 | |||
479 | upstream: Add $OpenBSD$ markers to xmss files to help keep synced | ||
480 | |||
481 | with portable. ok djm@. | ||
482 | |||
483 | OpenBSD-Commit-ID: 5233a27aafd1dfadad4b957225f95ae51eb365c1 | ||
484 | |||
485 | commit afd830847a82ebbd5aeab05bad6d2c8ce74df1cd | ||
486 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
487 | Date: Mon Feb 26 03:03:05 2018 +0000 | ||
488 | |||
489 | upstream: Add newline at end of file to prevent compiler warnings. | ||
490 | |||
491 | OpenBSD-Commit-ID: 52f247d4eafe840c7c14c8befa71a760a8eeb063 | ||
492 | |||
493 | commit 941e0d3e9bb8d5e4eb70cc694441445faf037c84 | ||
494 | Author: Darren Tucker <dtucker@dtucker.net> | ||
495 | Date: Wed Feb 28 19:59:35 2018 +1100 | ||
496 | |||
497 | Add WITH_XMSS, move to prevent conflicts. | ||
498 | |||
499 | Add #ifdef WITH_XMSS to ssh-xmss.c, move it in the other files to after | ||
500 | includes.h so it's less likely to conflict and will pick up WITH_XMSS if | ||
501 | added to config.h. | ||
502 | |||
503 | commit a10d8552d0d2438da4ed539275abcbf557d1e7a8 | ||
504 | Author: Darren Tucker <dtucker@dtucker.net> | ||
505 | Date: Tue Feb 27 14:45:17 2018 +1100 | ||
506 | |||
507 | Conditionally compile XMSS code. | ||
508 | |||
509 | The XMSS code is currently experimental and, unlike the rest of OpenSSH | ||
510 | cannot currently be compiled with a c89 compiler. | ||
511 | |||
512 | commit 146c3bd28c8dbee9c4b06465d9c9facab96b1e9b | ||
513 | Author: Darren Tucker <dtucker@dtucker.net> | ||
514 | Date: Mon Feb 26 12:51:29 2018 +1100 | ||
515 | |||
516 | Check dlopen has RTLD_NOW before enabling pkcs11. | ||
517 | |||
518 | commit 1323f120d06a26074c4d154fcbe7f49bcad3d741 | ||
519 | Author: Darren Tucker <dtucker@dtucker.net> | ||
520 | Date: Tue Feb 27 08:41:25 2018 +1100 | ||
521 | |||
522 | Check for attributes on prototype args. | ||
523 | |||
524 | Some compilers (gcc 2.9.53, 3.0 and probably others, see gcc bug #3481) | ||
525 | do not accept __attribute__ on function pointer prototype args. Check for | ||
526 | this and hide them if they're not accepted. | ||
527 | |||
528 | commit f0b245b0439e600fab782d19e97980e9f2c2533c | ||
529 | Author: Darren Tucker <dtucker@dtucker.net> | ||
530 | Date: Mon Feb 26 11:43:48 2018 +1100 | ||
531 | |||
532 | Check if HAVE_DECL_BZERO correctly. | ||
533 | |||
534 | commit c7ef4a399155e1621a532cc5e08e6fa773658dd4 | ||
535 | Author: Darren Tucker <dtucker@dtucker.net> | ||
536 | Date: Mon Feb 26 17:42:56 2018 +1100 | ||
537 | |||
538 | Wrap <stdint.h> in #ifdef HAVE_STDINT_H. | ||
539 | |||
540 | commit ac53ce46cf8165cbda7f57ee045f9f32e1e92b31 | ||
541 | Author: Darren Tucker <dtucker@dtucker.net> | ||
542 | Date: Mon Feb 26 16:24:23 2018 +1100 | ||
543 | |||
544 | Replace $(CURDIR) with $(PWD). | ||
545 | |||
546 | The former doesn't work on Solaris or BSDs. | ||
547 | |||
548 | commit 534b2680a15d14e7e60274d5b29b812d44cc5a44 | ||
549 | Author: Darren Tucker <dtucker@dtucker.net> | ||
550 | Date: Mon Feb 26 14:51:59 2018 +1100 | ||
551 | |||
552 | Comment out hexdump(). | ||
553 | |||
554 | Nothing currently uses them but they cause conflicts on at least | ||
555 | FreeBSD, possibly others. ok djm@ | ||
556 | |||
557 | commit 5aea4aa522f61bb2f34c3055a7de203909dfae77 | ||
558 | Author: Darren Tucker <dtucker@dtucker.net> | ||
559 | Date: Mon Feb 26 14:39:14 2018 +1100 | ||
560 | |||
561 | typo: missing ; | ||
562 | |||
563 | commit cd3ab57f9b388f8b1abf601dc4d78ff82d83b75e | ||
564 | Author: Darren Tucker <dtucker@dtucker.net> | ||
565 | Date: Mon Feb 26 14:37:06 2018 +1100 | ||
566 | |||
567 | Hook up flock() compat code. | ||
568 | |||
569 | Also a couple of minor changes: fail if we can't lock instead of | ||
570 | silently succeeding, and apply a couple of minor style fixes. | ||
571 | |||
572 | commit b087998d1ba90dd1ddb6bfdb17873dc3e7392798 | ||
573 | Author: Darren Tucker <dtucker@dtucker.net> | ||
574 | Date: Mon Feb 26 14:27:02 2018 +1100 | ||
575 | |||
576 | Import flock() compat from NetBSD. | ||
577 | |||
578 | From NetBSD's src/trunk/tools/compat/flock.c, no OpenSSH changes yet. | ||
579 | |||
580 | commit 89212533dde6798324e835b1499084658df4579e | ||
581 | Author: Darren Tucker <dtucker@dtucker.net> | ||
582 | Date: Mon Feb 26 12:32:14 2018 +1100 | ||
583 | |||
584 | Fix breakage when REGRESSTMP not set. | ||
585 | |||
586 | BUILDDIR is not set where used for REGRESSTMP, use make's CURDIR | ||
587 | instead. Pointed out by djm@. | ||
588 | |||
589 | commit f885474137df4b89498c0b8834c2ac72c47aa4bd | ||
590 | Author: Damien Miller <djm@mindrot.org> | ||
591 | Date: Mon Feb 26 12:18:14 2018 +1100 | ||
592 | |||
593 | XMSS-related files get includes.h | ||
594 | |||
595 | commit 612faa34c72e421cdc9e63f624526bae62d557cc | ||
596 | Author: Damien Miller <djm@mindrot.org> | ||
597 | Date: Mon Feb 26 12:17:55 2018 +1100 | ||
598 | |||
599 | object files end with .o - not .c | ||
600 | |||
601 | commit bda709b8e13d3eef19e69c2d1684139e3af728f5 | ||
602 | Author: Damien Miller <djm@mindrot.org> | ||
603 | Date: Mon Feb 26 12:17:22 2018 +1100 | ||
604 | |||
605 | avoid inclusion of deprecated selinux/flask.h | ||
606 | |||
607 | Use string_to_security_class() instead. | ||
608 | |||
609 | commit 2e396439365c4ca352cac222717d09b14f8a0dfd | ||
610 | Author: Damien Miller <djm@mindrot.org> | ||
611 | Date: Mon Feb 26 11:48:27 2018 +1100 | ||
612 | |||
613 | updatedepend | ||
614 | |||
615 | commit 1b11ea7c58cd5c59838b5fa574cd456d6047b2d4 | ||
616 | Author: markus@openbsd.org <markus@openbsd.org> | ||
617 | Date: Fri Feb 23 15:58:37 2018 +0000 | ||
618 | |||
619 | upstream: Add experimental support for PQC XMSS keys (Extended | ||
620 | |||
621 | Hash-Based Signatures) The code is not compiled in by default (see WITH_XMSS | ||
622 | in Makefile.inc) Joint work with stefan-lukas_gazdag at genua.eu See | ||
623 | https://tools.ietf.org/html/draft-irtf-cfrg-xmss-hash-based-signatures-12 ok | ||
624 | djm@ | ||
625 | |||
626 | OpenBSD-Commit-ID: ef3eccb96762a5d6f135d7daeef608df7776a7ac | ||
627 | |||
628 | commit 7d330a1ac02076de98cfc8fda05353d57b603755 | ||
629 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
630 | Date: Fri Feb 23 07:38:09 2018 +0000 | ||
631 | |||
632 | upstream: some cleanup for BindInterface and ssh-keyscan; | ||
633 | |||
634 | OpenBSD-Commit-ID: 1a719ebeae22a166adf05bea5009add7075acc8c | ||
635 | |||
636 | commit c7b5a47e3b9db9a0f0198f9c90c705f6307afc2b | ||
637 | Author: Darren Tucker <dtucker@dtucker.net> | ||
638 | Date: Sun Feb 25 23:55:41 2018 +1100 | ||
639 | |||
640 | Invert sense of getpgrp test. | ||
641 | |||
642 | AC_FUNC_GETPGRP tests if getpgrp(0) works, which it does if it's not | ||
643 | declared. Instead, test if the zero-arg version we want to use works. | ||
644 | |||
645 | commit b39593a6de5290650a01adf8699c6460570403c2 | ||
646 | Author: Darren Tucker <dtucker@dtucker.net> | ||
647 | Date: Sun Feb 25 13:25:15 2018 +1100 | ||
648 | |||
649 | Add no-op getsid implmentation. | ||
650 | |||
651 | commit 11057564eb6ab8fd987de50c3d7f394c6f6632b7 | ||
652 | Author: Darren Tucker <dtucker@dtucker.net> | ||
653 | Date: Sun Feb 25 11:22:57 2018 +1100 | ||
654 | |||
655 | bsd-statvfs: include sys/vfs.h, check for f_flags. | ||
656 | |||
657 | commit e9dede06e5bc582a4aeb5b1cd5a7a640d7de3609 | ||
658 | Author: Darren Tucker <dtucker@dtucker.net> | ||
659 | Date: Sun Feb 25 10:20:31 2018 +1100 | ||
660 | |||
661 | Handle calloc(0,x) where different from malloc. | ||
662 | |||
663 | Configure assumes that if malloc(0) returns null then calloc(0,n) | ||
664 | also does. On some old platforms (SunOS4) malloc behaves as expected | ||
665 | (as determined by AC_FUNC_MALLOC) but calloc doesn't. Test for this | ||
666 | at configure time and activate the replacement function if found, plus | ||
667 | handle this case in rpl_calloc. | ||
668 | |||
669 | commit 2eb4041493fd2635ffdc64a852d02b38c4955e0b | ||
670 | Author: Darren Tucker <dtucker@dtucker.net> | ||
671 | Date: Sat Feb 24 21:06:48 2018 +1100 | ||
672 | |||
673 | Add prototype for readv if needed. | ||
674 | |||
675 | commit 6c8c9a615b6d31db8a87bc25033f053d5b0a831e | ||
676 | Author: Darren Tucker <dtucker@dtucker.net> | ||
677 | Date: Sat Feb 24 20:46:37 2018 +1100 | ||
678 | |||
679 | Check for raise and supply if needed. | ||
680 | |||
681 | commit a9004425a032d7a7141a5437cfabfd02431e2a74 | ||
682 | Author: Darren Tucker <dtucker@dtucker.net> | ||
683 | Date: Sat Feb 24 20:25:22 2018 +1100 | ||
684 | |||
685 | Check for bzero and supply if needed. | ||
686 | |||
687 | Since explicit_bzero uses it via an indirect it needs to be a function | ||
688 | not just a macro. | ||
689 | |||
690 | commit 1a348359e4d2876203b5255941bae348557f4f54 | ||
691 | Author: djm@openbsd.org <djm@openbsd.org> | ||
692 | Date: Fri Feb 23 05:14:05 2018 +0000 | ||
693 | |||
694 | upstream: Add ssh-keyscan -D option to make it print its results in | ||
695 | |||
696 | SSHFP format bz#2821, ok dtucker@ | ||
697 | |||
698 | OpenBSD-Commit-ID: 831446b582e0f298ca15c9d99c415c899e392221 | ||
699 | |||
700 | commit 3e19fb976a47b44b3d7c4f8355269f7f2c5dd82c | ||
701 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
702 | Date: Fri Feb 23 04:18:46 2018 +0000 | ||
703 | |||
704 | upstream: Add missing braces. | ||
705 | |||
706 | Caught by the tinderbox's -Werror=misleading-indentation, ok djm@ | ||
707 | |||
708 | OpenBSD-Commit-ID: d44656af594c3b2366eb87d6abcef83e1c88a6ca | ||
709 | |||
710 | commit b59162da99399d89bd57f71c170c0003c55b1583 | ||
711 | Author: Darren Tucker <dtucker@dtucker.net> | ||
712 | Date: Fri Feb 23 15:20:42 2018 +1100 | ||
713 | |||
714 | Check for ifaddrs.h for BindInterface. | ||
715 | |||
716 | BindInterface required getifaddr and friends so disable if not available | ||
717 | (eg Solaris 10). We should be able to add support for some systems with | ||
718 | a bit more work but this gets the building again. | ||
719 | |||
720 | commit a8dd6fe0aa10b6866830b4688a73ef966f0aed88 | ||
721 | Author: Damien Miller <djm@mindrot.org> | ||
722 | Date: Fri Feb 23 14:19:11 2018 +1100 | ||
723 | |||
724 | space before tab in previous | ||
725 | |||
726 | commit b5e9263c7704247f9624c8f5c458e9181fcdbc09 | ||
727 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
728 | Date: Fri Feb 9 03:40:22 2018 +0000 | ||
729 | |||
730 | upstream: Replace fatal with exit in the case that we do not have | ||
731 | |||
732 | $SUDO set. Prevents test failures when neither sudo nor doas are configured. | ||
733 | |||
734 | OpenBSD-Regress-ID: 6a0464decc4f8ac7d6eded556a032b0fc521bc7b | ||
735 | |||
736 | commit 3e9d3192ad43758ef761c5b0aa3ac5ccf8121ef2 | ||
737 | Author: Darren Tucker <dtucker@dtucker.net> | ||
738 | Date: Fri Feb 23 14:10:53 2018 +1100 | ||
739 | |||
740 | Use portable syntax for REGRESSTMP. | ||
741 | |||
742 | commit 73282b61187883a2b2bb48e087fdda1d751d6059 | ||
743 | Author: djm@openbsd.org <djm@openbsd.org> | ||
744 | Date: Fri Feb 23 03:03:00 2018 +0000 | ||
745 | |||
746 | upstream: unbreak interop test after SSHv1 purge; patch from Colin | ||
747 | |||
748 | Watson via bz#2823 | ||
749 | |||
750 | OpenBSD-Regress-ID: 807d30a597756ed6612bdf46dfebca74f49cb31a | ||
751 | |||
752 | commit f8985dde5f46aedade0373365cbf86ed3f1aead2 | ||
753 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
754 | Date: Fri Feb 9 03:42:57 2018 +0000 | ||
755 | |||
756 | upstream: Skip sftp-chroot test when SUDO not set instead of | ||
757 | |||
758 | fatal(). | ||
759 | |||
760 | OpenBSD-Regress-ID: cd4b5f1109b0dc09af4e5ea7d4968c43fbcbde88 | ||
761 | |||
762 | commit df88551c02d4e3445c44ff67ba8757cff718609a | ||
763 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
764 | Date: Fri Feb 9 03:40:22 2018 +0000 | ||
765 | |||
766 | upstream: Replace fatal with exit in the case that we do not have | ||
767 | |||
768 | $SUDO set. Prevents test failures when neither sudo nor doas are configured. | ||
769 | |||
770 | OpenBSD-Regress-ID: 6a0464decc4f8ac7d6eded556a032b0fc521bc7b | ||
771 | |||
772 | commit 3b252c20b19f093e87363de197f1100b79705dd3 | ||
773 | Author: djm@openbsd.org <djm@openbsd.org> | ||
774 | Date: Thu Feb 8 08:46:20 2018 +0000 | ||
775 | |||
776 | upstream: some helpers to check verbose/quiet mode | ||
777 | |||
778 | OpenBSD-Regress-ID: e736aac39e563f5360a0935080a71d5fdcb976de | ||
779 | |||
780 | commit ac2e3026bbee1367e4cda34765d1106099be3287 | ||
781 | Author: djm@openbsd.org <djm@openbsd.org> | ||
782 | Date: Fri Feb 23 02:34:33 2018 +0000 | ||
783 | |||
784 | upstream: Add BindInterface ssh_config directive and -B | ||
785 | |||
786 | command-line argument to ssh(1) that directs it to bind its outgoing | ||
787 | connection to the address of the specified network interface. | ||
788 | |||
789 | BindInterface prefers to use addresses that aren't loopback or link- | ||
790 | local, but will fall back to those if no other addresses of the | ||
791 | required family are available on that interface. | ||
792 | |||
793 | Based on patch by Mike Manning in bz#2820, ok dtucker@ | ||
794 | |||
795 | OpenBSD-Commit-ID: c5064d285c2851f773dd736a2c342aa384fbf713 | ||
796 | |||
797 | commit fcdb9d777839a3fa034b3bc3067ba8c1f6886679 | ||
798 | Author: djm@openbsd.org <djm@openbsd.org> | ||
799 | Date: Mon Feb 19 00:55:02 2018 +0000 | ||
800 | |||
801 | upstream: emphasise that the hostkey rotation may send key types | ||
802 | |||
803 | that the client may not support, and that the client should simply disregard | ||
804 | such keys (this is what ssh does already). | ||
805 | |||
806 | OpenBSD-Commit-ID: 65f8ffbc32ac8d12be8f913d7c0ea55bef8622bf | ||
807 | |||
808 | commit ce066f688dc166506c082dac41ca686066e3de5f | ||
809 | Author: Darren Tucker <dtucker@dtucker.net> | ||
810 | Date: Thu Feb 22 20:45:09 2018 +1100 | ||
811 | |||
812 | Add headers for sys/audit.h. | ||
813 | |||
814 | On some older platforms (at least sunos4, probably others) sys/audit.h | ||
815 | requires some other headers. Patch from klausz at haus-gisela.de. | ||
816 | |||
817 | commit 3fd2d2291a695c96a54269deae079bacce6e3fb9 | ||
818 | Author: Darren Tucker <dtucker@dtucker.net> | ||
819 | Date: Mon Feb 19 18:37:40 2018 +1100 | ||
820 | |||
821 | Add REGRESSTMP make var override. | ||
822 | |||
823 | Defaults to original location ($srcdir/regress) but allows overriding | ||
824 | if desired, eg a directory in /tmp. | ||
825 | |||
826 | commit f8338428588f3ecb5243c86336eccaa28809f97e | ||
827 | Author: Darren Tucker <dtucker@dtucker.net> | ||
828 | Date: Sun Feb 18 15:53:15 2018 +1100 | ||
829 | |||
830 | Remove now-unused check for getrusage. | ||
831 | |||
832 | getrusage was used in ssh-rand-helper but that's now long gone. | ||
833 | Patch from klauszh at haus-gisela.de. | ||
834 | |||
835 | commit 8570177195f6a4b3173c0a25484a83641ee3faa6 | ||
836 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
837 | Date: Fri Feb 16 04:43:11 2018 +0000 | ||
838 | |||
839 | upstream: Don't send IUTF8 to servers that don't like them. | ||
840 | |||
841 | Some SSH servers eg "ConfD" drop the connection if the client sends the | ||
842 | new IUTF8 (RFC8160) terminal mode even if it's not set. Add a bug bit | ||
843 | for such servers and avoid sending IUTF8 to them. ok djm@ | ||
844 | |||
845 | OpenBSD-Commit-ID: 26425855402d870c3c0a90491e72e2a8a342ceda | ||
846 | |||
847 | commit f6dc2ba3c9d12be53057b9371f5109ec553a399f | ||
848 | Author: Darren Tucker <dtucker@dtucker.net> | ||
849 | Date: Fri Feb 16 17:32:28 2018 +1100 | ||
850 | |||
851 | freezero should check for NULL. | ||
852 | |||
853 | commit 680321f3eb46773883111e234b3c262142ff7c5b | ||
854 | Author: djm@openbsd.org <djm@openbsd.org> | ||
855 | Date: Fri Feb 16 02:40:45 2018 +0000 | ||
856 | |||
857 | upstream: Mention recent DH KEX methods: | ||
858 | |||
859 | diffie-hellman-group14-sha256 | ||
860 | diffie-hellman-group16-sha512 | ||
861 | diffie-hellman-group18-sha512 | ||
862 | |||
863 | From Jakub Jelen via bz#2826 | ||
864 | |||
865 | OpenBSD-Commit-ID: 51bf769f06e55447f4bfa7306949e62d2401907a | ||
866 | |||
867 | commit 88c50a5ae20902715f0fca306bb9c38514f71679 | ||
868 | Author: djm@openbsd.org <djm@openbsd.org> | ||
869 | Date: Fri Feb 16 02:32:40 2018 +0000 | ||
870 | |||
871 | upstream: stop loading DSA keys by default, remove sshd_config | ||
872 | |||
873 | stanza and manpage bits; from Colin Watson via bz#2662, ok dtucker@ | ||
874 | |||
875 | OpenBSD-Commit-ID: d33a849f481684ff655c140f5eb1b4acda8c5c09 | ||
876 | |||
877 | commit d2b3db2860c962927def39a52f67f1c23f7b201a | ||
878 | Author: jsing@openbsd.org <jsing@openbsd.org> | ||
879 | Date: Wed Feb 14 16:27:24 2018 +0000 | ||
880 | |||
881 | upstream: Ensure that D mod (P-1) and D mod (Q-1) are calculated in | ||
882 | |||
883 | constant time. | ||
884 | |||
885 | This avoids a potential side channel timing leak. | ||
886 | |||
887 | ok djm@ markus@ | ||
888 | |||
889 | OpenBSD-Commit-ID: 71ff3c16be03290e63d8edab8fac053d8a82968c | ||
890 | |||
891 | commit 4270efad7048535b4f250f493d70f9acfb201593 | ||
892 | Author: jsing@openbsd.org <jsing@openbsd.org> | ||
893 | Date: Wed Feb 14 16:03:32 2018 +0000 | ||
894 | |||
895 | upstream: Some obvious freezero() conversions. | ||
896 | |||
897 | This also zeros an ed25519_pk when it was not being zeroed previously. | ||
898 | |||
899 | ok djm@ dtucker@ | ||
900 | |||
901 | OpenBSD-Commit-ID: 5c196a3c85c23ac0bd9b11bcadaedd90b7a2ce82 | ||
902 | |||
903 | commit affa6ba67ffccc30b85d6e98f36eb5afd9386882 | ||
904 | Author: Darren Tucker <dtucker@dtucker.net> | ||
905 | Date: Thu Feb 15 22:32:04 2018 +1100 | ||
906 | |||
907 | Remove execute bit from modpipe.c. | ||
908 | |||
909 | commit 9879dca438526ae6dfd656fecb26b0558c29c731 | ||
910 | Author: Darren Tucker <dtucker@dtucker.net> | ||
911 | Date: Thu Feb 15 22:26:16 2018 +1100 | ||
912 | |||
913 | Update prngd link to point to sourceforge. | ||
914 | |||
915 | commit b6973fa5152b1a0bafd2417b7c3ad96f6e87d014 | ||
916 | Author: Darren Tucker <dtucker@dtucker.net> | ||
917 | Date: Thu Feb 15 22:22:38 2018 +1100 | ||
918 | |||
919 | Remove references to UNICOS. | ||
920 | |||
921 | commit f1ca487940449f0b64f38f1da575078257609966 | ||
922 | Author: Darren Tucker <dtucker@dtucker.net> | ||
923 | Date: Thu Feb 15 22:18:37 2018 +1100 | ||
924 | |||
925 | Remove extra newline. | ||
926 | |||
927 | commit 6d4e980f3cf27f409489cf89cd46c21501b13731 | ||
928 | Author: Darren Tucker <dtucker@dtucker.net> | ||
929 | Date: Thu Feb 15 22:16:54 2018 +1100 | ||
930 | |||
931 | OpenSSH's builtin entropy gathering is long gone. | ||
932 | |||
933 | commit 389125b25d1a1d7f22e907463b7e8eca74af79ea | ||
934 | Author: Darren Tucker <dtucker@dtucker.net> | ||
935 | Date: Thu Feb 15 21:43:01 2018 +1100 | ||
936 | |||
937 | Replace remaining mysignal() with signal(). | ||
938 | |||
939 | These seem to have been missed during the replacement of mysignal | ||
940 | with #define signal in commit 5ade9ab. Both include the requisite | ||
941 | headers to pick up the #define. | ||
942 | |||
943 | commit 265d88d4e61e352de6791733c8b29fa3d7d0c26d | ||
944 | Author: Darren Tucker <dtucker@dtucker.net> | ||
945 | Date: Thu Feb 15 20:06:19 2018 +1100 | ||
946 | |||
947 | Remove remaining now-obsolete cvs $Ids. | ||
948 | |||
949 | commit 015749e9b1d2f6e14733466d19ba72f014d0845c | ||
950 | Author: Darren Tucker <dtucker@dtucker.net> | ||
951 | Date: Thu Feb 15 17:01:54 2018 +1100 | ||
952 | |||
953 | Regenerate dependencies after UNICOS removal. | ||
954 | |||
955 | commit ddc0f3814881ea279a6b6d4d98e03afc60ae1ed7 | ||
956 | Author: Darren Tucker <dtucker@dtucker.net> | ||
957 | Date: Tue Feb 13 09:10:46 2018 +1100 | ||
958 | |||
959 | Remove UNICOS support. | ||
960 | |||
961 | The code required to support it is quite invasive to the mainline | ||
962 | code that is synced with upstream and is an ongoing maintenance burden. | ||
963 | Both the hardware and software are literal museum pieces these days and | ||
964 | we could not find anyone still running OpenSSH on one. | ||
965 | |||
966 | commit 174bed686968494723e6db881208cc4dac0d020f | ||
967 | Author: Darren Tucker <dtucker@dtucker.net> | ||
968 | Date: Tue Feb 13 18:12:47 2018 +1100 | ||
969 | |||
970 | Retpoline linker flag only needed for linking. | ||
971 | |||
972 | commit 075e258c2cc41e1d7f3ea2d292c5342091728d40 | ||
973 | Author: Darren Tucker <dtucker@dtucker.net> | ||
974 | Date: Tue Feb 13 17:36:43 2018 +1100 | ||
975 | |||
976 | Default PidFile is sshd.pid not ssh.pid. | ||
977 | |||
978 | commit 49f3c0ec47730ea264e2bd1e6ece11167d6384df | ||
979 | Author: Darren Tucker <dtucker@dtucker.net> | ||
980 | Date: Tue Feb 13 16:27:09 2018 +1100 | ||
981 | |||
982 | Remove assigned-to-but-never-used variable. | ||
983 | |||
984 | 'p' was removed in previous change but I neglected to remove the | ||
985 | otherwise-unused assignment to it. | ||
986 | |||
987 | commit b8bbff3b3fc823bf80c5ab226c94f13cb887d5b1 | ||
988 | Author: djm@openbsd.org <djm@openbsd.org> | ||
989 | Date: Tue Feb 13 03:36:56 2018 +0000 | ||
990 | |||
991 | upstream: remove space before tab | ||
992 | |||
993 | OpenBSD-Commit-ID: 674edd214d0a7332dd4623c9cf8117301b012890 | ||
994 | |||
995 | commit 05046d907c211cb9b4cd21b8eff9e7a46cd6c5ab | ||
996 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
997 | Date: Sun Feb 11 21:16:56 2018 +0000 | ||
998 | |||
999 | upstream Don't reset signal handlers inside handlers. | ||
1000 | |||
1001 | The signal handlers from the original ssh1 code on which OpenSSH | ||
1002 | is based assume unreliable signals and reinstall their handlers. | ||
1003 | Since OpenBSD (and pretty much every current system) has reliable | ||
1004 | signals this is not needed. In the unlikely even that -portable | ||
1005 | is still being used on such systems we will deal with it in the | ||
1006 | compat layer. ok deraadt@ | ||
1007 | |||
1008 | OpenBSD-Commit-ID: f53a1015cb6908431b92116130d285d71589612c | ||
1009 | |||
1010 | commit 3c51143c639ac686687c7acf9b373b8c08195ffb | ||
1011 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1012 | Date: Tue Feb 13 09:07:29 2018 +1100 | ||
1013 | |||
1014 | Whitespace sync with upstream. | ||
1015 | |||
1016 | commit 19edfd4af746bedf0df17f01953ba8c6d3186eb7 | ||
1017 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1018 | Date: Tue Feb 13 08:25:46 2018 +1100 | ||
1019 | |||
1020 | Whitespace sync with upstream. | ||
1021 | |||
1022 | commit fbfa6f980d7460b3e12b0ce88ed3b6018edf4711 | ||
1023 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1024 | Date: Sun Feb 11 21:25:11 2018 +1300 | ||
1025 | |||
1026 | Move signal compat code into bsd-signal.{c,h} | ||
1027 | |||
1028 | commit 24d2a33bd3bf5170700bfdd8675498aa09a79eab | ||
1029 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1030 | Date: Sun Feb 11 21:20:39 2018 +1300 | ||
1031 | |||
1032 | Include headers for linux/if.h. | ||
1033 | |||
1034 | Prevents configure-time "present but cannot be compiled" warning. | ||
1035 | |||
1036 | commit bc02181c24fc551aab85eb2cff0f90380928ef43 | ||
1037 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1038 | Date: Sun Feb 11 19:45:47 2018 +1300 | ||
1039 | |||
1040 | Fix test for -z,retpolineplt linker flag. | ||
1041 | |||
1042 | commit 3377df00ea3fece5293db85fe63baef33bf5152e | ||
1043 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1044 | Date: Sun Feb 11 09:32:37 2018 +1100 | ||
1045 | |||
1046 | Add checks for Spectre v2 mitigation (retpoline) | ||
1047 | |||
1048 | This adds checks for gcc and clang flags for mitigations for Spectre | ||
1049 | variant 2, ie "retpoline". It'll automatically enabled if the compiler | ||
1050 | supports it as part of toolchain hardening flag. ok djm@ | ||
1051 | |||
1052 | commit d9e5cf078ea5380da6df767bb1773802ec557ef0 | ||
1053 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1054 | Date: Sat Feb 10 09:25:34 2018 +0000 | ||
1055 | |||
1056 | upstream commit | ||
1057 | |||
1058 | constify some private key-related functions; based on | ||
1059 | https://github.com/openssh/openssh-portable/pull/56 by Vincent Brillault | ||
1060 | |||
1061 | OpenBSD-Commit-ID: dcb94a41834a15f4d00275cb5051616fdc4c988c | ||
1062 | |||
1063 | commit a7c38215d564bf98e8e9eb40c1079e3adf686f15 | ||
1064 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1065 | Date: Sat Feb 10 09:03:54 2018 +0000 | ||
1066 | |||
1067 | upstream commit | ||
1068 | |||
1069 | Mention ServerAliveTimeout in context of TCPKeepAlives; | ||
1070 | prompted by Christoph Anton Mitterer via github | ||
1071 | |||
1072 | OpenBSD-Commit-ID: f0cf1b5bd3f1fbf41d71c88d75d93afc1c880ca2 | ||
1073 | |||
1074 | commit 62562ceae61e4f7cf896566592bb840216e71061 | ||
1075 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1076 | Date: Sat Feb 10 06:54:38 2018 +0000 | ||
1077 | |||
1078 | upstream commit | ||
1079 | |||
1080 | clarify IgnoreUserKnownHosts; based on github PR from | ||
1081 | Christoph Anton Mitterer. | ||
1082 | |||
1083 | OpenBSD-Commit-ID: 4fff2c17620c342fb2f1f9c2d2e679aab3e589c3 | ||
1084 | |||
1085 | commit 4f011daa4cada6450fa810f7563b8968639bb562 | ||
1086 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1087 | Date: Sat Feb 10 06:40:28 2018 +0000 | ||
1088 | |||
1089 | upstream commit | ||
1090 | |||
1091 | Shorter, more accurate explanation of | ||
1092 | NoHostAuthenticationForLocalhost without the confusing example. Prompted by | ||
1093 | Christoph Anton Mitterer via github and bz#2293. | ||
1094 | |||
1095 | OpenBSD-Commit-ID: 19dc96bea25b80d78d416b581fb8506f1e7b76df | ||
1096 | |||
1097 | commit 77e05394af21d3f5faa0c09ed3855e4505a5cf9f | ||
1098 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1099 | Date: Sat Feb 10 06:15:12 2018 +0000 | ||
1100 | |||
1101 | upstream commit | ||
1102 | |||
1103 | Disable RemoteCommand and RequestTTY in the ssh session | ||
1104 | started by scp. sftp is already doing this. From Camden Narzt via github; ok | ||
1105 | dtucker | ||
1106 | |||
1107 | OpenBSD-Commit-ID: 59e2611141c0b2ee579c6866e8eb9d7d8217bc6b | ||
1108 | |||
1109 | commit ca613249a00b64b2eea9f52d3834b55c28cf2862 | ||
1110 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1111 | Date: Sat Feb 10 05:48:46 2018 +0000 | ||
1112 | |||
1113 | upstream commit | ||
1114 | |||
1115 | Refuse to create a certificate with an unusable number of | ||
1116 | principals; Prompted by gdestuynder via github | ||
1117 | |||
1118 | OpenBSD-Commit-ID: 8cfae2451e8f07810e3e2546dfdcce66984cbd29 | ||
1119 | |||
1120 | commit b56ac069d46b6f800de34e1e935f98d050731d14 | ||
1121 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1122 | Date: Sat Feb 10 05:43:26 2018 +0000 | ||
1123 | |||
1124 | upstream commit | ||
1125 | |||
1126 | fatal if we're unable to write all the public key; previously | ||
1127 | we would silently ignore errors writing the comment and terminating newline. | ||
1128 | Prompted by github PR from WillerZ; ok dtucker | ||
1129 | |||
1130 | OpenBSD-Commit-ID: 18fbfcfd4e8c6adbc84820039b64d70906e49831 | ||
1131 | |||
1132 | commit cdb10bd431f9f6833475c27e9a82ebb36fdb12db | ||
1133 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1134 | Date: Sat Feb 10 11:18:38 2018 +1100 | ||
1135 | |||
1136 | Add changelog entry for binary strip change. | ||
1137 | |||
1138 | commit fbddd91897cfaf456bfc2081f39fb4a2208a0ebf | ||
1139 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1140 | Date: Sat Feb 10 11:14:54 2018 +1100 | ||
1141 | |||
1142 | Remove unused variables. | ||
1143 | |||
1144 | commit 937d96587df99c16c611d828cded292fa474a32b | ||
1145 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1146 | Date: Sat Feb 10 11:12:45 2018 +1100 | ||
1147 | |||
1148 | Don't strip binaries so debuginfo gets built. | ||
1149 | |||
1150 | Tell install not to strip binaries during package creation so that the | ||
1151 | debuginfo package can be built. | ||
1152 | |||
1153 | commit eb0865f330f59c889ec92696b97bd397090e720c | ||
1154 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1155 | Date: Sat Feb 10 10:33:11 2018 +1100 | ||
1156 | |||
1157 | Fix bogus dates in changelog. | ||
1158 | |||
1159 | commit 7fbde1b34c1f6c9ca9e9d10805ba1e5e4538e165 | ||
1160 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1161 | Date: Sat Feb 10 10:25:15 2018 +1100 | ||
1162 | |||
1163 | Remove SSH1 from description. | ||
1164 | |||
1165 | commit 9c34a76f099c4e0634bf6ecc2f40ce93925402c4 | ||
1166 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1167 | Date: Sat Feb 10 10:19:16 2018 +1100 | ||
1168 | |||
1169 | Add support for compat-openssl10 build dep. | ||
1170 | |||
1171 | commit 04f4e8193cb5a5a751fcc356bd6656291fec539e | ||
1172 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1173 | Date: Sat Feb 10 09:57:04 2018 +1100 | ||
1174 | |||
1175 | Add leading zero so it'll work when rhel not set. | ||
1176 | |||
1177 | When rhel is not set it will error out with "bad if". Add leading zero | ||
1178 | as per https://fedoraproject.org/wiki/Packaging:DistTag so it'll work | ||
1179 | on non-RHEL. | ||
1180 | |||
1181 | commit 12abd67a6af28476550807a443b38def2076bb92 | ||
1182 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1183 | Date: Sat Feb 10 09:56:34 2018 +1100 | ||
1184 | |||
1185 | Update openssl-devel dependency. | ||
1186 | |||
1187 | commit b33e7645f8813719d7f9173fef24463c8833ebb3 | ||
1188 | Author: nkadel <nkadel@gmail.com> | ||
1189 | Date: Sun Nov 16 18:19:58 2014 -0500 | ||
1190 | |||
1191 | Add mandir with-mandir' for RHEL 5 compatibility. | ||
1192 | |||
1193 | Activate '--mandir' and '--with-mandir' settings in setup for RHEL | ||
1194 | 5 compatibility. | ||
1195 | |||
1196 | commit 94f8bf360eb0162e39ddf39d69925c2e93511e40 | ||
1197 | Author: nkadel <nkadel@gmail.com> | ||
1198 | Date: Sun Nov 16 18:18:51 2014 -0500 | ||
1199 | |||
1200 | Discard 'K5DIR' reporting. | ||
1201 | |||
1202 | It does not work inside 'mock' build environment. | ||
1203 | |||
1204 | commit bb7e54dbaf34b70b3e57acf7982f3a2136c94ee5 | ||
1205 | Author: nkadel <nkadel@gmail.com> | ||
1206 | Date: Sun Nov 16 18:17:15 2014 -0500 | ||
1207 | |||
1208 | Add 'dist' to 'rel' for OS specific RPM names. | ||
1209 | |||
1210 | commit 87346f1f57f71150a9b8c7029d8c210e27027716 | ||
1211 | Author: nkadel <nkadel@gmail.com> | ||
1212 | Date: Sun Nov 16 14:17:38 2014 -0500 | ||
1213 | |||
1214 | Add openssh-devel >= 0.9.8f for redhat spec file. | ||
1215 | |||
1216 | commit bec1478d710866d3c1b119343a35567a8fc71ec3 | ||
1217 | Author: nkadel <nkadel@gmail.com> | ||
1218 | Date: Sun Nov 16 13:10:24 2014 -0500 | ||
1219 | |||
1220 | Enhance BuildRequires for openssh-x11-askpass. | ||
1221 | |||
1222 | commit 3104fcbdd3c70aefcb0cdc3ee24948907db8dc8f | ||
1223 | Author: nkadel <nkadel@gmail.com> | ||
1224 | Date: Sun Nov 16 13:04:14 2014 -0500 | ||
1225 | |||
1226 | Always include x11-ssh-askpass SRPM. | ||
1227 | |||
1228 | Always include x11-ssh-askpass tarball in redhat SRPM, even if unused. | ||
1229 | |||
1230 | commit c61d0d038d58eebc365f31830be6e04ce373ad1b | ||
1231 | Author: Damien Miller <djm@mindrot.org> | ||
1232 | Date: Sat Feb 10 09:43:12 2018 +1100 | ||
1233 | |||
1234 | this is long unused; prompted by dtucker@ | ||
1235 | |||
1236 | commit 745771fb788e41bb7cdad34e5555bf82da3af7ed | ||
1237 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
1238 | Date: Fri Feb 9 02:37:36 2018 +0000 | ||
1239 | |||
1240 | upstream commit | ||
1241 | |||
1242 | Remove unused sKerberosTgtPassing from enum. From | ||
1243 | calestyo via github pull req #11, ok djm@ | ||
1244 | |||
1245 | OpenBSD-Commit-ID: 1008f8870865a7c4968b7aed402a0a9e3e5b9540 | ||
1246 | |||
1247 | commit 1f385f55332db830b0ae22a7663b98279ca2d657 | ||
1248 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
1249 | Date: Thu Feb 8 04:12:32 2018 +0000 | ||
1250 | |||
1251 | upstream commit | ||
1252 | |||
1253 | Rename struct umac_ctx to umac128_ctx too. In portable | ||
1254 | some linkers complain about two symbols with the same name having differing | ||
1255 | sizes. ok djm@ | ||
1256 | |||
1257 | OpenBSD-Commit-ID: cbebf8bdd3310a9795b4939a1e112cfe24061ca3 | ||
1258 | |||
1259 | commit f1f047fb031c0081dbc8738f05bf5d4cc47acadf | ||
1260 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
1261 | Date: Wed Feb 7 22:52:45 2018 +0000 | ||
1262 | |||
1263 | upstream commit | ||
1264 | |||
1265 | ssh_free checks for and handles NULL args, remove NULL | ||
1266 | checks from remaining callers. ok djm@ | ||
1267 | |||
1268 | OpenBSD-Commit-ID: bb926825c53724c069df68a93a2597f9192f7e7b | ||
1269 | |||
1270 | commit aee49b2a89b6b323c80dd3b431bd486e51f94c8c | ||
1271 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1272 | Date: Thu Feb 8 12:36:22 2018 +1100 | ||
1273 | |||
1274 | Set SO_REUSEADDR in regression test netcat. | ||
1275 | |||
1276 | Sometimes multiplex tests fail on Solaris with "netcat: local_listen: | ||
1277 | Address already in use" which is likely due to previous invocations | ||
1278 | leaving the port in TIME_WAIT. Set SO_REUSEADDR (in addition to | ||
1279 | SO_REUSEPORT which is alread set on platforms that support it). ok djm@ | ||
1280 | |||
1281 | commit 1749991c55bab716877b7c687cbfbf19189ac6f1 | ||
1282 | Author: jsing@openbsd.org <jsing@openbsd.org> | ||
1283 | Date: Wed Feb 7 05:17:56 2018 +0000 | ||
1284 | |||
1285 | upstream commit | ||
1286 | |||
1287 | Convert some explicit_bzero()/free() calls to freezero(). | ||
1288 | |||
1289 | ok deraadt@ dtucker@ | ||
1290 | |||
1291 | OpenBSD-Commit-ID: f566ab99149650ebe58b1d4b946ea726c3829609 | ||
1292 | |||
1293 | commit 94ec2b69d403f4318b7a0d9b17f8bc3efbf4d0d2 | ||
1294 | Author: jsing@openbsd.org <jsing@openbsd.org> | ||
1295 | Date: Wed Feb 7 05:15:49 2018 +0000 | ||
1296 | |||
1297 | upstream commit | ||
1298 | |||
1299 | Remove some #ifdef notyet code from OpenSSL 0.9.8 days. | ||
1300 | |||
1301 | These functions have never appeared in OpenSSL and are likely never to do | ||
1302 | so. | ||
1303 | |||
1304 | "kill it with fire" djm@ | ||
1305 | |||
1306 | OpenBSD-Commit-ID: fee9560e283fd836efc2631ef381658cc673d23e | ||
1307 | |||
1308 | commit 7cd31632e3a6607170ed0c9ed413a7ded5b9b377 | ||
1309 | Author: jsing@openbsd.org <jsing@openbsd.org> | ||
1310 | Date: Wed Feb 7 02:06:50 2018 +0000 | ||
1311 | |||
1312 | upstream commit | ||
1313 | |||
1314 | Remove all guards for calls to OpenSSL free functions - | ||
1315 | all of these functions handle NULL, from at least OpenSSL 1.0.1g onwards. | ||
1316 | |||
1317 | Prompted by dtucker@ asking about guards for RSA_free(), when looking at | ||
1318 | openssh-portable pr#84 on github. | ||
1319 | |||
1320 | ok deraadt@ dtucker@ | ||
1321 | |||
1322 | OpenBSD-Commit-ID: 954f1c51b94297d0ae1f749271e184141e0cadae | ||
1323 | |||
1324 | commit 3c000d57d46882eb736c6563edfc4995915c24a2 | ||
1325 | Author: Darren Tucker <dtucker@dtucker.net> | ||
1326 | Date: Wed Feb 7 09:19:38 2018 +1100 | ||
1327 | |||
1328 | Remove obsolete "Smartcard support" message | ||
1329 | |||
1330 | The configure checks that populated $SCARD_MSG were removed in commits | ||
1331 | 7ea845e4 and d8f60022 when the smartcard support was replaced with | ||
1332 | PKCS#11. | ||
1333 | |||
1334 | commit 3e615090de0ce36a833d811e01c28aec531247c4 | ||
1335 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
1336 | Date: Tue Feb 6 06:01:54 2018 +0000 | ||
1337 | |||
1338 | upstream commit | ||
1339 | |||
1340 | Replace "trojan horse" with the correct term (MITM). | ||
1341 | From maikel at predikkta.com via bz#2822, ok markus@ | ||
1342 | |||
1343 | OpenBSD-Commit-ID: e86ac64c512057c89edfadb43302ac0aa81a6c53 | ||
1344 | |||
1345 | commit 3484380110d437c50e17f87d18544286328c75cb | ||
1346 | Author: tb@openbsd.org <tb@openbsd.org> | ||
1347 | Date: Mon Feb 5 05:37:46 2018 +0000 | ||
1348 | |||
1349 | upstream commit | ||
1350 | |||
1351 | Add a couple of non-negativity checks to avoid close(-1). | ||
1352 | |||
1353 | ok djm | ||
1354 | |||
1355 | OpenBSD-Commit-ID: 4701ce0b37161c891c838d0931305f1d37a50880 | ||
1356 | |||
1357 | commit 5069320be93c8b2a6584b9f944c86f60c2b04e48 | ||
1358 | Author: tb@openbsd.org <tb@openbsd.org> | ||
1359 | Date: Mon Feb 5 05:36:49 2018 +0000 | ||
1360 | |||
1361 | upstream commit | ||
1362 | |||
1363 | The file descriptors for socket, stdin, stdout and stderr | ||
1364 | aren't necessarily distinct, so check if they are the same to avoid closing | ||
1365 | the same fd several times. | ||
1366 | |||
1367 | ok djm | ||
1368 | |||
1369 | OpenBSD-Commit-ID: 60d71fd22e9a32f5639d4ba6e25a2f417fc36ac1 | ||
1370 | |||
1371 | commit 2b428f90ea1b21d7a7c68ec1ee334253b3f9324d | ||
1372 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1373 | Date: Mon Feb 5 04:02:53 2018 +0000 | ||
1374 | |||
1375 | upstream commit | ||
1376 | |||
1377 | I accidentially a word | ||
1378 | |||
1379 | OpenBSD-Commit-ID: 4547ee713fa941da861e83ae7a3e6432f915e14a | ||
1380 | |||
1381 | commit 130283d5c2545ff017c2162dc1258c5354e29399 | ||
1382 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1383 | Date: Thu Jan 25 03:34:43 2018 +0000 | ||
1384 | |||
1385 | upstream commit | ||
1386 | |||
1387 | certificate options are case-sensitive; fix case on one | ||
1388 | that had it wrong. | ||
1389 | |||
1390 | move a badly-place sentence to a less bad place | ||
1391 | |||
1392 | OpenBSD-Commit-ID: 231e516bba860699a1eece6d48532d825f5f747b | ||
1393 | |||
1394 | commit 89f09ee68730337015bf0c3f138504494a34e9a6 | ||
1395 | Author: Damien Miller <djm@mindrot.org> | ||
1396 | Date: Wed Jan 24 12:20:44 2018 +1100 | ||
1397 | |||
1398 | crypto_api.h needs includes.h | ||
1399 | |||
1400 | commit c9c1bba06ad1c7cad8548549a68c071bd807af60 | ||
1401 | Author: stsp@openbsd.org <stsp@openbsd.org> | ||
1402 | Date: Tue Jan 23 20:00:58 2018 +0000 | ||
1403 | |||
1404 | upstream commit | ||
1405 | |||
1406 | Fix a logic bug in sshd_exchange_identification which | ||
1407 | prevented clients using major protocol version 2 from connecting to the | ||
1408 | server. ok millert@ | ||
1409 | |||
1410 | OpenBSD-Commit-ID: 8668dec04586e27f1c0eb039ef1feb93d80a5ee9 | ||
1411 | |||
1412 | commit a60c5dcfa2538ffc94dc5b5adb3db5b6ed905bdb | ||
1413 | Author: stsp@openbsd.org <stsp@openbsd.org> | ||
1414 | Date: Tue Jan 23 18:33:49 2018 +0000 | ||
1415 | |||
1416 | upstream commit | ||
1417 | |||
1418 | Add missing braces; fixes 'write: Socket is not | ||
1419 | connected' error in ssh. ok deraadt@ | ||
1420 | |||
1421 | OpenBSD-Commit-ID: db73a3a9e147722d410866cac34d43ed52e1ad24 | ||
1422 | |||
1423 | commit 20d53ac283e1c60245ea464bdedd015ed9b38f4a | ||
1424 | Author: Damien Miller <djm@mindrot.org> | ||
1425 | Date: Tue Jan 23 16:49:43 2018 +1100 | ||
1426 | |||
1427 | rebuild depends | ||
1428 | |||
1429 | commit 552ea155be44f9c439c1f9f0c38f9e593428f838 | ||
1430 | Author: Damien Miller <djm@mindrot.org> | ||
1431 | Date: Tue Jan 23 16:49:22 2018 +1100 | ||
1432 | |||
1433 | one SSH_BUG_BANNER instance that got away | ||
1434 | |||
1435 | commit 14b5c635d1190633b23ac3372379517fb645b0c2 | ||
1436 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1437 | Date: Tue Jan 23 05:27:21 2018 +0000 | ||
1438 | |||
1439 | upstream commit | ||
1440 | |||
1441 | Drop compatibility hacks for some ancient SSH | ||
1442 | implementations, including ssh.com <=2.* and OpenSSH <= 3.*. | ||
1443 | |||
1444 | These versions were all released in or before 2001 and predate the | ||
1445 | final SSH RFCs. The hacks in question aren't necessary for RFC- | ||
1446 | compliant SSH implementations. | ||
1447 | |||
1448 | ok markus@ | ||
1449 | |||
1450 | OpenBSD-Commit-ID: 4be81c67db57647f907f4e881fb9341448606138 | ||
1451 | |||
1452 | commit 7c77991f5de5d8475cbeb7cbb06d0c7d1611d7bb | ||
1453 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1454 | Date: Tue Jan 23 05:17:04 2018 +0000 | ||
1455 | |||
1456 | upstream commit | ||
1457 | |||
1458 | try harder to preserve errno during | ||
1459 | ssh_connect_direct() to make the final error message possibly accurate; | ||
1460 | bz#2814, ok dtucker@ | ||
1461 | |||
1462 | OpenBSD-Commit-ID: 57de882cb47381c319b04499fef845dd0c2b46ca | ||
1463 | |||
1464 | commit 9e9c4a7e57b96ab29fe6d7545ed09d2e5bddbdec | ||
1465 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1466 | Date: Tue Jan 23 05:12:12 2018 +0000 | ||
1467 | |||
1468 | upstream commit | ||
1469 | |||
1470 | unbreak support for clients that advertise a protocol | ||
1471 | version of "1.99" (indicating both v2 and v1 support). Busted by me during | ||
1472 | SSHv1 purge in r1.358; bz2810, ok dtucker | ||
1473 | |||
1474 | OpenBSD-Commit-ID: e8f9c2bee11afc16c872bb79d6abe9c555bd0e4b | ||
1475 | |||
1476 | commit fc21ea97968264ad9bb86b13fedaaec8fd3bf97d | ||
1477 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1478 | Date: Tue Jan 23 05:06:25 2018 +0000 | ||
1479 | |||
1480 | upstream commit | ||
1481 | |||
1482 | don't attempt to force hostnames that are addresses to | ||
1483 | lowercase, but instead canonicalise them through getnameinfo/getaddrinfo to | ||
1484 | remove ambiguities (e.g. ::0001 => ::1) before they are matched against | ||
1485 | known_hosts; bz#2763, ok dtucker@ | ||
1486 | |||
1487 | OpenBSD-Commit-ID: ba0863ff087e61e5c65efdbe53be3cb92c9aefa0 | ||
1488 | |||
1489 | commit d6364f6fb1a3d753d7ca9bf15b2adce961324513 | ||
1490 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1491 | Date: Tue Jan 23 05:01:15 2018 +0000 | ||
1492 | |||
1493 | upstream commit | ||
1494 | |||
1495 | avoid modifying pw->pw_passwd; let endpwent() clean up | ||
1496 | for us, but keep a scrubbed copy; bz2777, ok dtucker@ | ||
1497 | |||
1498 | OpenBSD-Commit-ID: 715afc0f59c6b82c4929a73279199ed241ce0752 | ||
1499 | |||
1500 | commit a69bbb07cd6fb4dfb9bdcacd370ab26d0a2b4215 | ||
1501 | Author: naddy@openbsd.org <naddy@openbsd.org> | ||
1502 | Date: Sat Jan 13 00:24:09 2018 +0000 | ||
1503 | |||
1504 | upstream commit | ||
1505 | |||
1506 | clarify authorship; prodded by and ok markus@ | ||
1507 | |||
1508 | OpenBSD-Commit-ID: e1938eee58c89b064befdabe232835fa83bb378c | ||
1509 | |||
1510 | commit 04214b30be3d3e73a01584db4e040d5ccbaaddd4 | ||
1511 | Author: markus@openbsd.org <markus@openbsd.org> | ||
1512 | Date: Mon Jan 8 15:37:21 2018 +0000 | ||
1513 | |||
1514 | upstream commit | ||
1515 | |||
1516 | group shared source files (e.g. SRCS_KEX) and allow | ||
1517 | compilation w/o OPENSSL ok djm@ | ||
1518 | |||
1519 | OpenBSD-Commit-ID: fa728823ba21c4b45212750e1d3a4b2086fd1a62 | ||
1520 | |||
1521 | commit 25cf9105b849932fc3b141590c009e704f2eeba6 | ||
1522 | Author: markus@openbsd.org <markus@openbsd.org> | ||
1523 | Date: Mon Jan 8 15:21:49 2018 +0000 | ||
1524 | |||
1525 | upstream commit | ||
1526 | |||
1527 | move subprocess() so scp/sftp do not need uidswap.o; ok | ||
1528 | djm@ | ||
1529 | |||
1530 | OpenBSD-Commit-ID: 6601b8360388542c2e5fef0f4085f8e54750bea8 | ||
1531 | |||
1532 | commit b0d34132b3ca26fe94013f01d7b92101e70b68bb | ||
1533 | Author: markus@openbsd.org <markus@openbsd.org> | ||
1534 | Date: Mon Jan 8 15:18:46 2018 +0000 | ||
1535 | |||
1536 | upstream commit | ||
1537 | |||
1538 | switch ssh-pkcs11-helper to new API; ok djm@ | ||
1539 | |||
1540 | OpenBSD-Commit-ID: e0c0ed2a568e25b1d2024f3e630f3fea837c2a42 | ||
1541 | |||
1542 | commit ec4a9831184c0c6ed5f7f0cfff01ede5455465a3 | ||
1543 | Author: markus@openbsd.org <markus@openbsd.org> | ||
1544 | Date: Mon Jan 8 15:15:36 2018 +0000 | ||
1545 | |||
1546 | upstream commit | ||
1547 | |||
1548 | split client/server kex; only ssh-keygen needs | ||
1549 | uuencode.o; only scp/sftp use progressmeter.o; ok djm@ | ||
1550 | |||
1551 | OpenBSD-Commit-ID: f2c9feb26963615c4fece921906cf72e248b61ee | ||
1552 | |||
1553 | commit ec77efeea06ac62ee1d76fe0b3225f3000775a9e | ||
1554 | Author: markus@openbsd.org <markus@openbsd.org> | ||
1555 | Date: Mon Jan 8 15:15:17 2018 +0000 | ||
1556 | |||
1557 | upstream commit | ||
1558 | |||
1559 | only ssh-keygen needs uuencode.o; only scp/sftp use | ||
1560 | progressmeter.o | ||
1561 | |||
1562 | OpenBSD-Commit-ID: a337e886a49f96701ccbc4832bed086a68abfa85 | ||
1563 | |||
1564 | commit 25aae35d3d6ee86a8c4c0b1896acafc1eab30172 | ||
1565 | Author: markus@openbsd.org <markus@openbsd.org> | ||
1566 | Date: Mon Jan 8 15:14:44 2018 +0000 | ||
1567 | |||
1568 | upstream commit | ||
1569 | |||
1570 | uuencode.h is not used | ||
1571 | |||
1572 | OpenBSD-Commit-ID: 238eb4659f3c119904326b9e94a5e507a912796c | ||
1573 | |||
1574 | commit 4f29309c4cb19bcb1774931db84cacc414f17d29 | ||
1575 | Author: Damien Miller <djm@mindrot.org> | ||
1576 | Date: Wed Jan 3 19:50:43 2018 +1100 | ||
1577 | |||
1578 | unbreak fuzz harness | ||
1579 | |||
1580 | commit f6b50bf84dc0b61f22c887c00423e0ea7644e844 | ||
1581 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1582 | Date: Thu Dec 21 05:46:35 2017 +0000 | ||
1583 | |||
1584 | upstream commit | ||
1585 | |||
1586 | another libssh casualty | ||
1587 | |||
1588 | OpenBSD-Regress-ID: 839b970560246de23e7c50215095fb527a5a83ec | ||
1589 | |||
1590 | commit 5fb4fb5a0158318fb8ed7dbb32f3869bbf221f13 | ||
1591 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1592 | Date: Thu Dec 21 03:01:49 2017 +0000 | ||
1593 | |||
1594 | upstream commit | ||
1595 | |||
1596 | missed one (unbreak after ssh/lib removal) | ||
1597 | |||
1598 | OpenBSD-Regress-ID: cfdd132143131769e2d2455e7892b5d55854c322 | ||
1599 | |||
1600 | commit e6c4134165d05447009437a96e7201276688807f | ||
1601 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1602 | Date: Thu Dec 21 00:41:22 2017 +0000 | ||
1603 | |||
1604 | upstream commit | ||
1605 | |||
1606 | unbreak unit tests after removal of src/usr.bin/ssh/lib | ||
1607 | |||
1608 | OpenBSD-Regress-ID: 3a79760494147b20761cbd2bd5c20e86c63dc8f9 | ||
1609 | |||
1610 | commit d45d69f2a937cea215c7f0424e5a4677b6d8c7fe | ||
1611 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1612 | Date: Thu Dec 21 00:00:28 2017 +0000 | ||
1613 | |||
1614 | upstream commit | ||
1615 | |||
1616 | revert stricter key type / signature type checking in | ||
1617 | userauth path; too much software generates inconsistent messages, so we need | ||
1618 | a better plan. | ||
1619 | |||
1620 | OpenBSD-Commit-ID: 4a44ddc991c803c4ecc8f1ad40e0ab4d22e1c519 | ||
1621 | |||
1622 | commit c5a6cbdb79752f7e761074abdb487953ea6db671 | ||
1623 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1624 | Date: Tue Dec 19 00:49:30 2017 +0000 | ||
1625 | |||
1626 | upstream commit | ||
1627 | |||
1628 | explicitly test all key types and their certificate | ||
1629 | counterparts | ||
1630 | |||
1631 | refactor a little | ||
1632 | |||
1633 | OpenBSD-Regress-ID: e9ecd5580821b9ef8b7106919c6980d8e45ca8c4 | ||
1634 | |||
1635 | commit f689adb7a370b5572612d88be9837ca9aea75447 | ||
1636 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
1637 | Date: Mon Dec 11 11:41:56 2017 +0000 | ||
1638 | |||
1639 | upstream commit | ||
1640 | |||
1641 | use cmp in a loop instead of diff -N to compare | ||
1642 | directories. The former works on more platforms for Portable. | ||
1643 | |||
1644 | OpenBSD-Regress-ID: c3aa72807f9c488e8829a26ae50fe5bcc5b57099 | ||
1645 | |||
1646 | commit 748dd8e5de332b24c40f4b3bbedb902acb048c98 | ||
1647 | Author: Damien Miller <djm@mindrot.org> | ||
1648 | Date: Tue Dec 19 16:17:59 2017 +1100 | ||
1649 | |||
1650 | remove blocks.c from Makefile | ||
1651 | |||
1652 | commit 278856320520e851063b06cef6ef1c60d4c5d652 | ||
1653 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1654 | Date: Tue Dec 19 00:24:34 2017 +0000 | ||
1655 | |||
1656 | upstream commit | ||
1657 | |||
1658 | include signature type and CA key (if applicable) in some | ||
1659 | debug messages | ||
1660 | |||
1661 | OpenBSD-Commit-ID: b71615cc20e78cec7105bb6e940c03ce9ae414a5 | ||
1662 | |||
1663 | commit 7860731ef190b52119fa480f8064ab03c44a120a | ||
1664 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1665 | Date: Mon Dec 18 23:16:23 2017 +0000 | ||
1666 | |||
1667 | upstream commit | ||
1668 | |||
1669 | unbreak hostkey rotation; attempting to sign with a | ||
1670 | desired signature algorithm of kex->hostkey_alg is incorrect when the key | ||
1671 | type isn't capable of making those signatures. ok markus@ | ||
1672 | |||
1673 | OpenBSD-Commit-ID: 35ae46864e1f5859831ec0d115ee5ea50953a906 | ||
1674 | |||
1675 | commit 966ef478339ad5e631fb684d2a8effe846ce3fd4 | ||
1676 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1677 | Date: Mon Dec 18 23:14:34 2017 +0000 | ||
1678 | |||
1679 | upstream commit | ||
1680 | |||
1681 | log mismatched RSA signature types; ok markus@ | ||
1682 | |||
1683 | OpenBSD-Commit-ID: 381bddfcc1e297a42292222f3bcb5ac2b7ea2418 | ||
1684 | |||
1685 | commit 349ecd4da3a985359694a74635748009be6baca6 | ||
1686 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1687 | Date: Mon Dec 18 23:13:42 2017 +0000 | ||
1688 | |||
1689 | upstream commit | ||
1690 | |||
1691 | pass kex->hostkey_alg and kex->hostkey_nid from pre-auth | ||
1692 | to post-auth unpriviledged child processes; ok markus@ | ||
1693 | |||
1694 | OpenBSD-Commit-ID: 4a35bc7af0a5f8a232d1361f79f4ebc376137302 | ||
1695 | |||
1696 | commit c9e37a8725c083441dd34a8a53768aa45c3c53fe | ||
1697 | Author: millert@openbsd.org <millert@openbsd.org> | ||
1698 | Date: Mon Dec 18 17:28:54 2017 +0000 | ||
1699 | |||
1700 | upstream commit | ||
1701 | |||
1702 | Add helper function for uri handing in scp where a | ||
1703 | missing path simply means ".". Also fix exit code and add warnings when an | ||
1704 | invalid uri is encountered. OK otto@ | ||
1705 | |||
1706 | OpenBSD-Commit-ID: 47dcf872380586dabf7fcc6e7baf5f8ad508ae1a | ||
1707 | |||
1708 | commit 04c7e28f83062dc42f2380d1bb3a6bf0190852c0 | ||
1709 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1710 | Date: Mon Dec 18 02:25:15 2017 +0000 | ||
1711 | |||
1712 | upstream commit | ||
1713 | |||
1714 | pass negotiated signing algorithm though to | ||
1715 | sshkey_verify() and check that the negotiated algorithm matches the type in | ||
1716 | the signature (only matters for RSA SHA1/SHA2 sigs). ok markus@ | ||
1717 | |||
1718 | OpenBSD-Commit-ID: 735fb15bf4adc060d3bee9d047a4bcaaa81b1af9 | ||
1719 | |||
1720 | commit 931c78dfd7fe30669681a59e536bbe66535f3ee9 | ||
1721 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1722 | Date: Mon Dec 18 02:22:29 2017 +0000 | ||
1723 | |||
1724 | upstream commit | ||
1725 | |||
1726 | sshkey_sigtype() function to return the type of a | ||
1727 | signature; ok markus@ | ||
1728 | |||
1729 | OpenBSD-Commit-ID: d3772b065ad6eed97285589bfb544befed9032e8 | ||
1730 | |||
1731 | commit 4cdc5956f2fcc9e9078938db833142dc07d8f523 | ||
1732 | Author: naddy@openbsd.org <naddy@openbsd.org> | ||
1733 | Date: Thu Dec 14 21:07:39 2017 +0000 | ||
1734 | |||
1735 | upstream commit | ||
1736 | |||
1737 | Replace ED25519's private SHA-512 implementation with a | ||
1738 | call to the regular digest code. This speeds up compilation considerably. ok | ||
1739 | markus@ | ||
1740 | |||
1741 | OpenBSD-Commit-ID: fcce8c3bcfe7389462a28228f63c823e80ade41c | ||
1742 | |||
1743 | commit 012e5cb839faf76549e3b6101b192fe1a74d367e | ||
1744 | Author: naddy@openbsd.org <naddy@openbsd.org> | ||
1745 | Date: Tue Dec 12 15:06:12 2017 +0000 | ||
1746 | |||
1747 | upstream commit | ||
1748 | |||
1749 | Create a persistent umac128.c source file: #define the | ||
1750 | output size and the name of the entry points for UMAC-128 before including | ||
1751 | umac.c. Idea from FreeBSD. ok dtucker@ | ||
1752 | |||
1753 | OpenBSD-Commit-ID: 463cfacfa07cb8060a4d4961e63dca307bf3f4b1 | ||
1754 | |||
1755 | commit b35addfb4cd3b5cdb56a2a489d38e940ada926c7 | ||
1756 | Author: Darren Tucker <dtucker@zip.com.au> | ||
1757 | Date: Mon Dec 11 16:23:28 2017 +1100 | ||
1758 | |||
1759 | Update .depend with empty config.h | ||
1760 | |||
1761 | commit 2d96f28246938e0ca474a939d8ac82ecd0de27e3 | ||
1762 | Author: Darren Tucker <dtucker@zip.com.au> | ||
1763 | Date: Mon Dec 11 16:21:55 2017 +1100 | ||
1764 | |||
1765 | Ensure config.h is always in dependencies. | ||
1766 | |||
1767 | Put an empty config.h into the dependency list to ensure that it's | ||
1768 | always listed and consistent. | ||
1769 | |||
1770 | commit ac4987a55ee5d4dcc8e87f7ae7c1f87be7257d71 | ||
1771 | Author: deraadt@openbsd.org <deraadt@openbsd.org> | ||
1772 | Date: Sun Dec 10 19:37:57 2017 +0000 | ||
1773 | |||
1774 | upstream commit | ||
1775 | |||
1776 | ssh/lib hasn't worked towards our code-sharing goals for | ||
1777 | a quit while, perhaps it is too verbose? Change each */Makefile to | ||
1778 | specifying exactly what sources that program requires, compiling it seperate. | ||
1779 | Maybe we'll iterate by sorting those into seperatable chunks, splitting up | ||
1780 | files which contain common code + server/client specific code, or whatnot. | ||
1781 | But this isn't one step, or we'd have done it a long time ago.. ok dtucker | ||
1782 | markus djm | ||
1783 | |||
1784 | OpenBSD-Commit-ID: 5317f294d63a876bfc861e19773b1575f96f027d | ||
1785 | |||
1786 | commit 48c23a39a8f1069a57264dd826f6c90aa12778d5 | ||
1787 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
1788 | Date: Sun Dec 10 05:55:29 2017 +0000 | ||
1789 | |||
1790 | upstream commit | ||
1791 | |||
1792 | Put remote client info back into the ClientAlive | ||
1793 | connection termination message. Based in part on diff from lars.nooden at | ||
1794 | gmail, ok djm | ||
1795 | |||
1796 | OpenBSD-Commit-ID: 80a0f619a29bbf2f32eb5297a69978a0e05d0ee0 | ||
1797 | |||
1798 | commit aabd75ec76575c1b17232e6526a644097cd798e5 | ||
1799 | Author: deraadt@openbsd.org <deraadt@openbsd.org> | ||
1800 | Date: Fri Dec 8 03:45:52 2017 +0000 | ||
1801 | |||
1802 | upstream commit | ||
1803 | |||
1804 | time_t printing needs %lld and (long long) casts ok djm | ||
1805 | |||
1806 | OpenBSD-Commit-ID: 4a93bc2b0d42a39b8f8de8bb74d07ad2e5e83ef7 | ||
1807 | |||
1808 | commit fd4eeeec16537870bd40d04836c7906ec141c17d | ||
1809 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1810 | Date: Fri Dec 8 02:14:33 2017 +0000 | ||
1811 | |||
1812 | upstream commit | ||
1813 | |||
1814 | fix ordering in previous to ensure errno isn't clobbered | ||
1815 | before logging. | ||
1816 | |||
1817 | OpenBSD-Commit-ID: e260bc1e145a9690dcb0d5aa9460c7b96a0c8ab2 | ||
1818 | |||
1819 | commit 155072fdb0d938015df828836beb2f18a294ab8a | ||
1820 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1821 | Date: Fri Dec 8 02:13:02 2017 +0000 | ||
1822 | |||
1823 | upstream commit | ||
1824 | |||
1825 | for some reason unix_listener() logged most errors twice | ||
1826 | with each message containing only some of the useful information; merge these | ||
1827 | |||
1828 | OpenBSD-Commit-ID: 1978a7594a9470c0dddcd719586066311b7c9a4a | ||
1829 | |||
1830 | commit 79c0e1d29959304e5a49af1dbc58b144628c09f3 | ||
1831 | Author: Darren Tucker <dtucker@zip.com.au> | ||
1832 | Date: Mon Dec 11 14:38:33 2017 +1100 | ||
1833 | |||
1834 | Add autogenerated dependency info to Makefile. | ||
1835 | |||
1836 | Adds a .depend file containing dependency information generated by | ||
1837 | makedepend, which is appended to the generated Makefile by configure. | ||
1838 | |||
1839 | You can regen the file with "make -f Makefile.in depend" if necessary, | ||
1840 | but we'll be looking at some way to automatically keep this up to date. | ||
1841 | |||
1842 | "no objection" djm@ | ||
1843 | |||
1844 | commit f001de8fbf7f3faddddd8efd03df18e57601f7eb | ||
1845 | Author: Darren Tucker <dtucker@zip.com.au> | ||
1846 | Date: Mon Dec 11 13:42:51 2017 +1100 | ||
1847 | |||
1848 | Fix pasto in ldns handling. | ||
1849 | |||
1850 | When ldns-config is not found, configure would check the wrong variable. | ||
1851 | ok djm@ | ||
1852 | |||
1853 | commit c5bfe83f67cb64e71cf2fe0d1500f6904b0099ee | ||
1854 | Author: Darren Tucker <dtucker@zip.com.au> | ||
1855 | Date: Sat Dec 9 10:12:23 2017 +1100 | ||
1856 | |||
1857 | Portable switched to git so s/CVS/git/. | ||
1858 | |||
1859 | commit bb82e61a40a4ee52e4eb904caaee2c27b763ab5b | ||
1860 | Author: Darren Tucker <dtucker@zip.com.au> | ||
1861 | Date: Sat Dec 9 08:06:00 2017 +1100 | ||
1862 | |||
1863 | Remove now-used check for perl. | ||
1864 | |||
1865 | commit e0ce54c0b9ca3a9388f9c50f4fa6cc25c28a3240 | ||
1866 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1867 | Date: Wed Dec 6 05:06:21 2017 +0000 | ||
1868 | |||
1869 | upstream commit | ||
1870 | |||
1871 | don't accept junk after "yes" or "no" responses to | ||
1872 | hostkey prompts. bz#2803 reported by Maksim Derbasov; ok dtucker@ | ||
1873 | |||
1874 | OpenBSD-Commit-ID: e1b159fb2253be973ce25eb7a7be26e6f967717c | ||
1875 | |||
1876 | commit 609d96b3d58475a15b2eb6b3d463f2c5d8e510c0 | ||
1877 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
1878 | Date: Tue Dec 5 23:59:47 2017 +0000 | ||
1879 | |||
1880 | upstream commit | ||
1881 | |||
1882 | Replace atoi and strtol conversions for integer arguments | ||
1883 | to config keywords with a checking wrapper around strtonum. This will | ||
1884 | prevent and flag invalid and negative arguments to these keywords. ok djm@ | ||
1885 | |||
1886 | OpenBSD-Commit-ID: 99ae3981f3d608a219ccb8d2fff635ae52c17998 | ||
1887 | |||
1888 | commit 168ecec13f9d7cb80c07df3bf7d414f4e4165e84 | ||
1889 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
1890 | Date: Tue Dec 5 23:56:07 2017 +0000 | ||
1891 | |||
1892 | upstream commit | ||
1893 | |||
1894 | Add missing break for rdomain. Prevents spurious | ||
1895 | "Deprecated option" warnings. ok djm@ | ||
1896 | |||
1897 | OpenBSD-Commit-ID: ba28a675d39bb04a974586241c3cba71a9c6099a | ||
1898 | |||
1899 | commit 927f8514ceffb1af380a5f63ab4d3f7709b1b198 | ||
1900 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1901 | Date: Tue Dec 5 01:30:19 2017 +0000 | ||
1902 | |||
1903 | upstream commit | ||
1904 | |||
1905 | include the addr:port in bind/listen failure messages | ||
1906 | |||
1907 | OpenBSD-Commit-ID: fdadb69fe1b38692608809cf0376b71c2c28e58e | ||
1908 | |||
1909 | commit a8c89499543e2d889629c4e5e8dcf47a655cf889 | ||
1910 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
1911 | Date: Wed Nov 29 05:49:54 2017 +0000 | ||
1912 | |||
1913 | upstream commit | ||
1914 | |||
1915 | Import updated moduli. | ||
1916 | |||
1917 | OpenBSD-Commit-ID: 524d210f982af6007aa936ca7f4c977f4d32f38a | ||
1918 | |||
1919 | commit 3dde09ab38c8e1cfc28252be473541a81bc57097 | ||
1920 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
1921 | Date: Tue Nov 28 21:10:22 2017 +0000 | ||
1922 | |||
1923 | upstream commit | ||
1924 | |||
1925 | Have sftp print a warning about shell cleanliness when | ||
1926 | decoding the first packet fails, which is usually caused by shells polluting | ||
1927 | stdout of non-interactive starups. bz#2800, ok markus@ deraadt@. | ||
1928 | |||
1929 | OpenBSD-Commit-ID: 88d6a9bf3470f9324b76ba1cbd53e50120f685b5 | ||
1930 | |||
1931 | commit 6c8a246437f612ada8541076be2414846d767319 | ||
1932 | Author: Darren Tucker <dtucker@zip.com.au> | ||
1933 | Date: Fri Dec 1 17:11:47 2017 +1100 | ||
1934 | |||
1935 | Replace mkinstalldirs with mkdir -p. | ||
1936 | |||
1937 | Check for MIKDIR_P and use it instead of mkinstalldirs. Should fix "mkdir: | ||
1938 | cannot create directory:... File exists" during "make install". | ||
1939 | Patch from eb at emlix.com. | ||
1940 | |||
1941 | commit 3058dd78d2e43ed0f82ad8eab8bb04b043a72023 | ||
1942 | Author: Darren Tucker <dtucker@zip.com.au> | ||
1943 | Date: Fri Dec 1 17:07:08 2017 +1100 | ||
1944 | |||
1945 | Pull in newer install-sh from autoconf-2.69. | ||
1946 | |||
1947 | Suggested by eb at emlix.com | ||
1948 | |||
1949 | commit 79226e5413c5b0fda3511351a8511ff457e306d8 | ||
1950 | Author: Darren Tucker <dtucker@zip.com.au> | ||
1951 | Date: Fri Dec 1 16:55:35 2017 +1100 | ||
1952 | |||
1953 | Remove RSA1 host key generation. | ||
1954 | |||
1955 | SSH1 support is now gone, remove SSH1 key generation. | ||
1956 | Patch from eb at emlix.com. | ||
1957 | |||
1958 | commit 2937dd02c572a12f33d5c334d518f6cbe0b645eb | ||
1959 | Author: djm@openbsd.org <djm@openbsd.org> | ||
1960 | Date: Tue Nov 28 06:09:38 2017 +0000 | ||
1961 | |||
1962 | upstream commit | ||
1963 | |||
1964 | more whitespace errors | ||
1965 | |||
1966 | OpenBSD-Commit-ID: 5e11c125378327b648940b90145e0d98beb05abb | ||
1967 | |||
1968 | commit 7f257bf3fd3a759f31098960cbbd1453fafc4164 | ||
1969 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
1970 | Date: Tue Nov 28 06:04:51 2017 +0000 | ||
1971 | |||
1972 | upstream commit | ||
1973 | |||
1974 | whitespace at EOL | ||
1975 | |||
1976 | OpenBSD-Commit-ID: 76d3965202b22d59c2784a8df3a8bfa5ee67b96a | ||
1977 | |||
1978 | commit 5db6fbf1438b108e5df3e79a1b4de544373bc2d4 | ||
1979 | Author: dtucker@openbsd.org@openbsd.org <dtucker@openbsd.org@openbsd.org> | ||
1980 | Date: Sat Nov 25 06:46:22 2017 +0000 | ||
1981 | |||
1982 | upstream commit | ||
1983 | |||
1984 | Add monotime_ts and monotime_tv that return monotonic | ||
1985 | timespec and timeval respectively. Replace calls to gettimeofday() in packet | ||
1986 | timing with monotime_tv so that the callers will work over a clock step. | ||
1987 | Should prevent integer overflow during clock steps reported by wangle6 at | ||
1988 | huawei.com. "I like" markus@ | ||
1989 | |||
1990 | OpenBSD-Commit-ID: 74d684264814ff806f197948b87aa732cb1b0b8a | ||
1991 | |||
1992 | commit 2d638e986085bdf1a40310ed6e2307463db96ea0 | ||
1993 | Author: dtucker@openbsd.org@openbsd.org <dtucker@openbsd.org@openbsd.org> | ||
1994 | Date: Sat Nov 25 05:58:47 2017 +0000 | ||
1995 | |||
1996 | upstream commit | ||
1997 | |||
1998 | Remove get_current_time() and replace with calls to | ||
1999 | monotime_double() which uses CLOCK_MONOTONIC and works over clock steps. "I | ||
2000 | like" markus@ | ||
2001 | |||
2002 | OpenBSD-Commit-ID: 3ad2f7d2414e2cfcaef99877a7a5b0baf2242952 | ||
2003 | |||
2004 | commit ba460acae48a36ef749cb23068f968f4d5d90a24 | ||
2005 | Author: Darren Tucker <dtucker@zip.com.au> | ||
2006 | Date: Fri Nov 24 16:24:31 2017 +1100 | ||
2007 | |||
2008 | Include string.h for explicit_bzero. | ||
2009 | |||
2010 | commit a65655fb1a12b77fb22f9e71559b9d73030ec8ff | ||
2011 | Author: Damien Miller <djm@mindrot.org> | ||
2012 | Date: Fri Nov 24 10:23:47 2017 +1100 | ||
2013 | |||
2014 | fix incorrect range of OpenSSL versions supported | ||
2015 | |||
2016 | Pointed out by Solar Designer | ||
2017 | |||
2018 | commit 83a1e5dbec52d05775174f368e0c44b08619a308 | ||
2019 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2020 | Date: Wed Nov 15 02:10:16 2017 +0000 | ||
2021 | |||
2022 | upstream commit | ||
2023 | |||
2024 | downgrade a couple more request parsing errors from | ||
2025 | process-fatal to just returning failure, making them consistent with the | ||
2026 | others that were already like that. | ||
2027 | |||
2028 | OpenBSD-Commit-ID: c111461f7a626690a2d53018ef26557b34652918 | ||
2029 | |||
2030 | commit 93c68a8f3da8e5e6acdc3396f54d73919165e242 | ||
2031 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2032 | Date: Wed Nov 15 00:13:40 2017 +0000 | ||
2033 | |||
2034 | upstream commit | ||
2035 | |||
2036 | fix regression in 7.6: failure to parse a signature request | ||
2037 | message shouldn't be fatal to the process, just the request. Reported by Ron | ||
2038 | Frederick | ||
2039 | |||
2040 | OpenBSD-Commit-ID: e5d01b3819caa1a2ad51fc57d6ded43f48bbcc05 | ||
2041 | |||
2042 | commit 548d3a66feb64c405733932a6b1abeaf7198fa71 | ||
2043 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2044 | Date: Tue Nov 14 00:45:29 2017 +0000 | ||
2045 | |||
2046 | upstream commit | ||
2047 | |||
2048 | fix problem in configuration parsing when in config dump mode | ||
2049 | (sshd -T) without providing a full connection specification (sshd -T -C ...) | ||
2050 | |||
2051 | spotted by bluhm@ | ||
2052 | |||
2053 | OpenBSD-Commit-ID: 7125faf5740eaa9d3a2f25400a0bc85e94e28b8f | ||
2054 | |||
2055 | commit 33edb6ebdc2f81ebed1bceadacdfb8910b64fb88 | ||
2056 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2057 | Date: Fri Nov 3 05:18:44 2017 +0000 | ||
2058 | |||
2059 | upstream commit | ||
2060 | |||
2061 | reuse parse_multistate for parse_flag (yes/no arguments). | ||
2062 | Saves a few lines of code and makes the parser more consistent wrt case- | ||
2063 | sensitivity. bz#2664 ok dtucker@ | ||
2064 | |||
2065 | OpenBSD-Commit-ID: b2ad1b6086858d5db71c7b11e5a74dba6d60efef | ||
2066 | |||
2067 | commit d52131a98316e76c0caa348f09bf6f7b9b01a1b9 | ||
2068 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2069 | Date: Fri Nov 3 05:14:04 2017 +0000 | ||
2070 | |||
2071 | upstream commit | ||
2072 | |||
2073 | allow certificate validity intervals that specify only a | ||
2074 | start or stop time (we already support specifying both or neither) | ||
2075 | |||
2076 | OpenBSD-Commit-ID: 9be486545603c003030bdb5c467d1318b46b4e42 | ||
2077 | |||
2078 | commit fbe8e7ac94c2fa380421a9205a8bc966549c2f91 | ||
2079 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2080 | Date: Fri Nov 3 03:46:52 2017 +0000 | ||
2081 | |||
2082 | upstream commit | ||
2083 | |||
2084 | allow "cd" and "lcd" commands with no explicit path | ||
2085 | argument. lcd will change to the local user's home directory as usual. cd | ||
2086 | will change to the starting directory for session (because the protocol | ||
2087 | offers no way to obtain the remote user's home directory). bz#2760 ok | ||
2088 | dtucker@ | ||
2089 | |||
2090 | OpenBSD-Commit-ID: 15333f5087cee8c1ed1330cac1bd0a3e6a767393 | ||
2091 | |||
2092 | commit 0208a48517b5e8e8b091f32fa4addcd67c31ca9e | ||
2093 | Author: dtucker@openbsd.org@openbsd.org <dtucker@openbsd.org@openbsd.org> | ||
2094 | Date: Fri Nov 3 03:18:53 2017 +0000 | ||
2095 | |||
2096 | upstream commit | ||
2097 | |||
2098 | When doing a config test with sshd -T, only require the | ||
2099 | attributes that are actually used in Match criteria rather than (an | ||
2100 | incomplete list of) all criteria. ok djm@, man page help jmc@ | ||
2101 | |||
2102 | OpenBSD-Commit-ID: b4e773c4212d3dea486d0259ae977551aab2c1fc | ||
2103 | |||
2104 | commit c357eed5a52cd2f4ff358b17e30e3f9a800644da | ||
2105 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2106 | Date: Fri Nov 3 02:32:19 2017 +0000 | ||
2107 | |||
2108 | upstream commit | ||
2109 | |||
2110 | typos in ECDSA certificate names; bz#2787 reported by | ||
2111 | Mike Gerow | ||
2112 | |||
2113 | OpenBSD-Commit-ID: 824938b6aba1b31321324ba1f56c05f84834b163 | ||
2114 | |||
2115 | commit ecbf005b8fd80b81d0c61dfc1e96fe3da6099395 | ||
2116 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2117 | Date: Fri Nov 3 02:29:17 2017 +0000 | ||
2118 | |||
2119 | upstream commit | ||
2120 | |||
2121 | Private keys in PEM format have been encrypted by AES-128 for | ||
2122 | a while (not 3DES). bz#2788 reported by Calum Mackay | ||
2123 | |||
2124 | OpenBSD-Commit-ID: bd33da7acbbb3c882f0a0ee56007a35ce0d8a11a | ||
2125 | |||
2126 | commit 81c9ccdbf6ddbf9bfbd6f1f775a5a7c13e47e185 | ||
2127 | Author: Darren Tucker <dtucker@zip.com.au> | ||
2128 | Date: Fri Nov 3 14:52:51 2017 +1100 | ||
2129 | |||
2130 | Check for linux/if.h when enabling rdomain. | ||
2131 | |||
2132 | musl libc doesn't seem to have linux/if.h, so check for its presence | ||
2133 | before enabling rdomain support on Linux. | ||
2134 | |||
2135 | commit fa1b834cce41a1ce3e6a8d57fb67ef18c9dd803f | ||
2136 | Author: Darren Tucker <dtucker@zip.com.au> | ||
2137 | Date: Fri Nov 3 14:09:45 2017 +1100 | ||
2138 | |||
2139 | Add headers for sys/sysctl.h and net/route.h | ||
2140 | |||
2141 | On at least older OpenBSDs, sys/sysctl.h and net/route.h require | ||
2142 | sys/types and, in the case of sys/sysctl.h, sys/param.h for MAXLOGNAME. | ||
2143 | |||
2144 | commit 41bff4da21fcd8a7c6a83a7e0f92b018f904f6fb | ||
2145 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2146 | Date: Fri Nov 3 02:22:41 2017 +0000 | ||
2147 | |||
2148 | upstream commit | ||
2149 | |||
2150 | avoid unused variable warnings for !WITH_OPENSSL; patch from | ||
2151 | Marcus Folkesson | ||
2152 | |||
2153 | OpenBSD-Commit-ID: c01d27a3f907acdc3dd4ea48170fac3ba236d229 | ||
2154 | |||
2155 | commit 6b373e4635a7470baa94253dd1dc8953663da9e8 | ||
2156 | Author: Marcus Folkesson <marcus.folkesson@gmail.com> | ||
2157 | Date: Sat Oct 28 19:48:39 2017 +0200 | ||
2158 | |||
2159 | only enable functions in dh.c when openssl is used | ||
2160 | |||
2161 | Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com> | ||
2162 | |||
2163 | commit 939b30ba23848b572e15bf92f0f1a3d9cf3acc2b | ||
2164 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2165 | Date: Wed Nov 1 00:04:15 2017 +0000 | ||
2166 | |||
2167 | upstream commit | ||
2168 | |||
2169 | fix broken stdout in ControlPersist mode, introduced by me in | ||
2170 | r1.467 and reported by Alf Schlichting | ||
2171 | |||
2172 | OpenBSD-Commit-ID: 3750a16e02108fc25f747e4ebcedb7123c1ef509 | ||
2173 | |||
2174 | commit f21455a084f9cc3942cf1bde64055a4916849fed | ||
2175 | Author: Darren Tucker <dtucker@zip.com.au> | ||
2176 | Date: Tue Oct 31 10:09:33 2017 +1100 | ||
2177 | |||
2178 | Include includes.h for HAVE_GETPAGESIZE. | ||
2179 | |||
2180 | The configure script checks for getpagesize() and sets HAVE_GETPAGESIZE in | ||
2181 | config.h, but bsd-getpagesize.c forgot to include includes.h (which | ||
2182 | indirectly includes config.h) so the checks always fails, causing linker | ||
2183 | issues when linking statically on systems with getpagesize(). | ||
2184 | |||
2185 | Patch from Peter Korsgaard <peter at korsgaard.com> | ||
2186 | |||
2187 | commit f2ad63c0718b93ac1d1e85f53fee33b06eef86b5 | ||
2188 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2189 | Date: Mon Oct 30 22:01:52 2017 +0000 | ||
2190 | |||
2191 | upstream commit | ||
2192 | |||
2193 | whitespace at EOL | ||
2194 | |||
2195 | OpenBSD-Regress-ID: f4b5df99b28c6f63478deb916c6ed0e794685f07 | ||
2196 | |||
2197 | commit c6415b1f8f1d0c2735564371647fd6a177fb9a3e | ||
2198 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2199 | Date: Mon Oct 30 21:59:43 2017 +0000 | ||
2200 | |||
2201 | upstream commit | ||
2202 | |||
2203 | whitespace at EOL | ||
2204 | |||
2205 | OpenBSD-Regress-ID: 19b1394393deee4c8a2114a3b7d18189f27a15cd | ||
2206 | |||
2207 | commit e4d4ddbbba0e585ca3ec3a455430750b4622a6d3 | ||
2208 | Author: millert@openbsd.org@openbsd.org <millert@openbsd.org@openbsd.org> | ||
2209 | Date: Wed Oct 25 20:08:36 2017 +0000 | ||
2210 | |||
2211 | upstream commit | ||
2212 | |||
2213 | Use printenv to test whether an SSH_USER_AUTH is set | ||
2214 | instead of using $SSH_USER_AUTH. The latter won't work with csh which treats | ||
2215 | unknown variables as an error when expanding them. OK markus@ | ||
2216 | |||
2217 | OpenBSD-Regress-ID: f601e878dd8b71aa40381573dde3a8f567e6f2d1 | ||
2218 | |||
2219 | commit 116b1b439413a724ebb3320633a64dd0f3ee1fe7 | ||
2220 | Author: millert@openbsd.org@openbsd.org <millert@openbsd.org@openbsd.org> | ||
2221 | Date: Tue Oct 24 19:33:32 2017 +0000 | ||
2222 | |||
2223 | upstream commit | ||
2224 | |||
2225 | Add tests for URI parsing. OK markus@ | ||
2226 | |||
2227 | OpenBSD-Regress-ID: 5d1df19874f3b916d1a2256a905526e17a98bd3b | ||
2228 | |||
2229 | commit dbe0662e9cd482593a4a8bf58c6481bfe8a747a4 | ||
2230 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2231 | Date: Fri Oct 27 01:57:06 2017 +0000 | ||
2232 | |||
2233 | upstream commit | ||
2234 | |||
2235 | whitespace at EOL | ||
2236 | |||
2237 | OpenBSD-Commit-ID: c95549cf5a07d56ea11aaff818415118720214f6 | ||
2238 | |||
2239 | commit d2135474344335a7c6ee643b6ade6db400fa76ee | ||
2240 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2241 | Date: Fri Oct 27 01:01:17 2017 +0000 | ||
2242 | |||
2243 | upstream commit | ||
2244 | |||
2245 | whitespace at EOL (lots) | ||
2246 | |||
2247 | OpenBSD-Commit-ID: 757257dd44116794ee1b5a45c6724973de181747 | ||
2248 | |||
2249 | commit b77c29a07f5a02c7c1998701c73d92bde7ae1608 | ||
2250 | Author: djm@openbsd.org@openbsd.org <djm@openbsd.org@openbsd.org> | ||
2251 | Date: Fri Oct 27 00:18:41 2017 +0000 | ||
2252 | |||
2253 | upstream commit | ||
2254 | |||
2255 | improve printing of rdomain on accept() a little | ||
2256 | |||
2257 | OpenBSD-Commit-ID: 5da58db2243606899cedaa646c70201b2d12247a | ||
2258 | |||
2259 | commit 68d3bbb2e6dfbf117c46e942142795b2cdd0274b | ||
2260 | Author: jmc@openbsd.org@openbsd.org <jmc@openbsd.org@openbsd.org> | ||
2261 | Date: Thu Oct 26 06:44:01 2017 +0000 | ||
2262 | |||
2263 | upstream commit | ||
2264 | |||
2265 | mark up the rdomain keyword; | ||
2266 | |||
2267 | OpenBSD-Commit-ID: 1b597d0ad0ad20e94dbd61ca066057e6f6313b8a | ||
2268 | |||
2269 | commit 0b2e2896b9d0d6cfb59e9ec8271085296bd4e99b | ||
2270 | Author: jmc@openbsd.org@openbsd.org <jmc@openbsd.org@openbsd.org> | ||
2271 | Date: Wed Oct 25 06:19:46 2017 +0000 | ||
2272 | |||
2273 | upstream commit | ||
2274 | |||
2275 | tweak the uri text, specifically removing some markup to | ||
2276 | make it a bit more readable; | ||
2277 | |||
2278 | issue reported by - and diff ok - millert | ||
2279 | |||
2280 | OpenBSD-Commit-ID: 8b56a20208040b2d0633536fd926e992de37ef3f | ||
2281 | |||
2282 | commit 7530e77bdc9415386d2a8ea3d086e8b611b2ba40 | ||
2283 | Author: jmc@openbsd.org@openbsd.org <jmc@openbsd.org@openbsd.org> | ||
2284 | Date: Wed Oct 25 06:18:06 2017 +0000 | ||
2285 | |||
2286 | upstream commit | ||
2287 | |||
2288 | simplify macros in previous, and some minor tweaks; | ||
2289 | |||
2290 | OpenBSD-Commit-ID: 6efeca3d8b095b76e21b484607d9cc67ac9a11ca | ||
2291 | |||
2292 | commit eb9c582b710dc48976b48eb2204218f6863bae9a | ||
2293 | Author: Damien Miller <djm@mindrot.org> | ||
2294 | Date: Tue Oct 31 00:46:29 2017 +1100 | ||
2295 | |||
2296 | Switch upstream git repository. | ||
2297 | |||
2298 | Previously portable OpenSSH has synced against a conversion of OpenBSD's | ||
2299 | CVS repository made using the git cvsimport tool, but this has become | ||
2300 | increasingly unreliable. | ||
2301 | |||
2302 | As of this commit, portable OpenSSH now tracks a conversion of the | ||
2303 | OpenBSD CVS upstream made using the excellent cvs2gitdump tool from | ||
2304 | YASUOKA Masahiko: https://github.com/yasuoka/cvs2gitdump | ||
2305 | |||
2306 | cvs2gitdump is considerably more reliable than gitcvsimport and the old | ||
2307 | version of cvsps that it uses under the hood, and is the same tool used | ||
2308 | to export the entire OpenBSD repository to git (so we know it can cope | ||
2309 | with future growth). | ||
2310 | |||
2311 | These new conversions are mirrored at github, so interested parties can | ||
2312 | match portable OpenSSH commits to their upstream counterparts. | ||
2313 | |||
2314 | https://github.com/djmdjm/openbsd-openssh-src | ||
2315 | https://github.com/djmdjm/openbsd-openssh-regress | ||
2316 | |||
2317 | An unfortunate side effect of switching upstreams is that we must have | ||
2318 | a flag day, across which the upstream commit IDs will be inconsistent. | ||
2319 | The old commit IDs are recorded with the tags "Upstream-ID" for main | ||
2320 | directory commits and "Upstream-Regress-ID" for regress commits. | ||
2321 | |||
2322 | To make it clear that the commit IDs do not refer to the same | ||
2323 | things, the new repository will instead use "OpenBSD-ID" and | ||
2324 | "OpenBSD-Regress-ID" tags instead. | ||
2325 | |||
2326 | Apart from being a longwinded explanation of what is going on, this | ||
2327 | commit message also serves to synchronise our tools with the state of | ||
2328 | the tree, which happens to be: | ||
2329 | |||
2330 | OpenBSD-ID: 9c43a9968c7929613284ea18e9fb92e4e2a8e4c1 | ||
2331 | OpenBSD-Regress-ID: b33b385719420bf3bc57d664feda6f699c147fef | ||
2332 | |||
2333 | commit 2de5c6b53bf063ac698596ef4e23d8e3099656ea | ||
2334 | Author: Damien Miller <djm@mindrot.org> | ||
2335 | Date: Fri Oct 27 08:42:33 2017 +1100 | ||
2336 | |||
2337 | fix rdomain compilation errors | ||
2338 | |||
2339 | commit 6bd5b569fd6dfd5e8c8af20bbc41e45c2d6462ab | ||
2340 | Author: Damien Miller <djm@mindrot.org> | ||
2341 | Date: Wed Oct 25 14:15:42 2017 +1100 | ||
2342 | |||
2343 | autoconf glue to enable Linux VRF | ||
2344 | |||
2345 | commit 97c5aaf925d61641d599071abb56012cde265978 | ||
2346 | Author: Damien Miller <djm@mindrot.org> | ||
2347 | Date: Wed Oct 25 14:09:56 2017 +1100 | ||
2348 | |||
2349 | basic valid_rdomain() implementation for Linux | ||
2350 | |||
2351 | commit ce1cca39d7935dd394080ce2df62f5ce5b51f485 | ||
2352 | Author: Damien Miller <djm@mindrot.org> | ||
2353 | Date: Wed Oct 25 13:47:59 2017 +1100 | ||
2354 | |||
2355 | implement get/set_rdomain() for Linux | ||
2356 | |||
2357 | Not enabled, pending implementation of valid_rdomain() and autoconf glue | ||
2358 | |||
2359 | commit 6eee79f9b8d4a3b113b698383948a119acb82415 | ||
2360 | Author: Damien Miller <djm@mindrot.org> | ||
2361 | Date: Wed Oct 25 13:22:29 2017 +1100 | ||
2362 | |||
2363 | stubs for rdomain replacement functions | ||
2364 | |||
2365 | commit f5594f939f844bbb688313697d6676238da355b3 | ||
2366 | Author: Damien Miller <djm@mindrot.org> | ||
2367 | Date: Wed Oct 25 13:13:57 2017 +1100 | ||
2368 | |||
2369 | rename port-tun.[ch] => port-net.[ch] | ||
2370 | |||
2371 | Ahead of adding rdomain support | ||
2372 | |||
2373 | commit d685e5a31feea35fb99e1a31a70b3c60a7f2a0eb | ||
2374 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2375 | Date: Wed Oct 25 02:10:39 2017 +0000 | ||
2376 | |||
2377 | upstream commit | ||
2378 | |||
2379 | uninitialised variable in PermitTunnel printing code | ||
2380 | |||
2381 | Upstream-ID: f04dc33e42855704e116b8da61095ecc71bc9e9a | ||
2382 | |||
2383 | commit 43c29bb7cfd46bbbc61e0ffa61a11e74d49a712f | ||
2384 | Author: Damien Miller <djm@mindrot.org> | ||
2385 | Date: Wed Oct 25 13:10:59 2017 +1100 | ||
2386 | |||
2387 | provide hooks and fallbacks for rdomain support | ||
2388 | |||
2389 | commit 3235473bc8e075fad7216b7cd62fcd2b0320ea04 | ||
2390 | Author: Damien Miller <djm@mindrot.org> | ||
2391 | Date: Wed Oct 25 11:25:43 2017 +1100 | ||
2392 | |||
2393 | check for net/route.h and sys/sysctl.h | ||
2394 | |||
2395 | commit 4d5456c7de108e17603a0920c4d15bca87244921 | ||
2396 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2397 | Date: Wed Oct 25 00:21:37 2017 +0000 | ||
2398 | |||
2399 | upstream commit | ||
2400 | |||
2401 | transfer ownership of stdout to the session channel by | ||
2402 | dup2'ing /dev/null to fd 1. This allows propagation of remote stdout close to | ||
2403 | the local side; reported by David Newall, ok markus@ | ||
2404 | |||
2405 | Upstream-ID: 8d9ac18a11d89e6b0415f0cbf67b928ac67f0e79 | ||
2406 | |||
2407 | commit 68af80e6fdeaeb79432209db614386ff0f37e75f | ||
2408 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2409 | Date: Wed Oct 25 00:19:47 2017 +0000 | ||
2410 | |||
2411 | upstream commit | ||
2412 | |||
2413 | add a "rdomain" criteria for the sshd_config Match | ||
2414 | keyword to allow conditional configuration that depends on which rdomain(4) a | ||
2415 | connection was recevied on. ok markus@ | ||
2416 | |||
2417 | Upstream-ID: 27d8fd5a3f1bae18c9c6e533afdf99bff887a4fb | ||
2418 | |||
2419 | commit 35eb33fb957979e3fcbe6ea0eaee8bf4a217421a | ||
2420 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2421 | Date: Wed Oct 25 00:17:08 2017 +0000 | ||
2422 | |||
2423 | upstream commit | ||
2424 | |||
2425 | add sshd_config RDomain keyword to place sshd and the | ||
2426 | subsequent user session (including the shell and any TCP/IP forwardings) into | ||
2427 | the specified rdomain(4) | ||
2428 | |||
2429 | ok markus@ | ||
2430 | |||
2431 | Upstream-ID: be2358e86346b5cacf20d90f59f980b87d1af0f5 | ||
2432 | |||
2433 | commit acf559e1cffbd1d6167cc1742729fc381069f06b | ||
2434 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2435 | Date: Wed Oct 25 00:15:35 2017 +0000 | ||
2436 | |||
2437 | upstream commit | ||
2438 | |||
2439 | Add optional rdomain qualifier to sshd_config's | ||
2440 | ListenAddress option to allow listening on a different rdomain(4), e.g. | ||
2441 | |||
2442 | ListenAddress 0.0.0.0 rdomain 4 | ||
2443 | |||
2444 | Upstream-ID: 24b6622c376feeed9e9be8b9605e593695ac9091 | ||
2445 | |||
2446 | commit b9903ee8ee8671b447fc260c2bee3761e26c7227 | ||
2447 | Author: millert@openbsd.org <millert@openbsd.org> | ||
2448 | Date: Tue Oct 24 19:41:45 2017 +0000 | ||
2449 | |||
2450 | upstream commit | ||
2451 | |||
2452 | Kill dead store and some spaces vs. tabs indent in | ||
2453 | parse_user_host_path(). Noticed by markus@ | ||
2454 | |||
2455 | Upstream-ID: 114fec91dadf9af46c7c94fd40fc630ea2de8200 | ||
2456 | |||
2457 | commit 0869627e00f4ee2a038cb62d7bd9ffad405e1800 | ||
2458 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
2459 | Date: Tue Oct 24 06:27:42 2017 +0000 | ||
2460 | |||
2461 | upstream commit | ||
2462 | |||
2463 | tweak previous; ok djm | ||
2464 | |||
2465 | Upstream-ID: 7d913981ab315296be1f759c67b6e17aea38fca9 | ||
2466 | |||
2467 | commit e3fa20e2e58fdc88a0e842358778f2de448b771b | ||
2468 | Author: Damien Miller <djm@mindrot.org> | ||
2469 | Date: Mon Oct 23 16:25:24 2017 +1100 | ||
2470 | |||
2471 | avoid -Wsign-compare warning in argv copying | ||
2472 | |||
2473 | commit b7548b12a6b2b4abf4d057192c353147e0abba08 | ||
2474 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2475 | Date: Mon Oct 23 05:08:00 2017 +0000 | ||
2476 | |||
2477 | upstream commit | ||
2478 | |||
2479 | Expose devices allocated for tun/tap forwarding. | ||
2480 | |||
2481 | At the client, the device may be obtained from a new %T expansion | ||
2482 | for LocalCommand. | ||
2483 | |||
2484 | At the server, the allocated devices will be listed in a | ||
2485 | SSH_TUNNEL variable exposed to the environment of any user sessions | ||
2486 | started after the tunnel forwarding was established. | ||
2487 | |||
2488 | ok markus | ||
2489 | |||
2490 | Upstream-ID: e61e53f8ae80566e9ddc0d67a5df5bdf2f3c9f9e | ||
2491 | |||
2492 | commit 887669ef032d63cf07f53cada216fa8a0c9a7d72 | ||
2493 | Author: millert@openbsd.org <millert@openbsd.org> | ||
2494 | Date: Sat Oct 21 23:06:24 2017 +0000 | ||
2495 | |||
2496 | upstream commit | ||
2497 | |||
2498 | Add URI support to ssh, sftp and scp. For example | ||
2499 | ssh://user@host or sftp://user@host/path. The connection parameters | ||
2500 | described in draft-ietf-secsh-scp-sftp-ssh-uri-04 are not implemented since | ||
2501 | the ssh fingerprint format in the draft uses md5 with no way to specify the | ||
2502 | hash function type. OK djm@ | ||
2503 | |||
2504 | Upstream-ID: 4ba3768b662d6722de59e6ecb00abf2d4bf9cacc | ||
2505 | |||
2506 | commit d27bff293cfeb2252f4c7a58babe5ad3262c6c98 | ||
2507 | Author: Damien Miller <djm@mindrot.org> | ||
2508 | Date: Fri Oct 20 13:22:00 2017 +1100 | ||
2509 | |||
2510 | Fix missed RCSID merges | ||
2511 | |||
2512 | commit d3b6aeb546242c9e61721225ac4387d416dd3d5e | ||
2513 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2514 | Date: Fri Oct 20 02:13:41 2017 +0000 | ||
2515 | |||
2516 | upstream commit | ||
2517 | |||
2518 | more RCSIDs | ||
2519 | |||
2520 | Upstream-Regress-ID: 1aecbe3f8224793f0ec56741a86d619830eb33be | ||
2521 | |||
2522 | commit b011edbb32e41aaab01386ce4c0efcc9ff681c4a | ||
2523 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2524 | Date: Fri Oct 20 01:56:39 2017 +0000 | ||
2525 | |||
2526 | upstream commit | ||
2527 | |||
2528 | add RCSIDs to these; they make syncing portable a bit | ||
2529 | easier | ||
2530 | |||
2531 | Upstream-ID: 56cb7021faea599736dd7e7f09c2e714425b1e68 | ||
2532 | |||
2533 | commit 6eb27597781dccaf0ec2b80107a9f0592a0cb464 | ||
2534 | Author: Damien Miller <djm@mindrot.org> | ||
2535 | Date: Fri Oct 20 12:54:15 2017 +1100 | ||
2536 | |||
2537 | upstream commit | ||
2538 | |||
2539 | Apply missing commit 1.11 to kexc25519s.c | ||
2540 | |||
2541 | Upstream-ID: 5f020e23a1ee6c3597af1f91511e68552cdf15e8 | ||
2542 | |||
2543 | commit 6f72280553cb6918859ebcacc717f2d2fafc1a27 | ||
2544 | Author: Damien Miller <djm@mindrot.org> | ||
2545 | Date: Fri Oct 20 12:52:50 2017 +1100 | ||
2546 | |||
2547 | upstream commit | ||
2548 | |||
2549 | Apply missing commit 1.127 to servconf.h | ||
2550 | |||
2551 | Upstream-ID: f14c4bac74a2b7cf1e3cff6bea5c447f192a7d15 | ||
2552 | |||
2553 | commit bb3e16ab25cb911238c2eb7455f9cf490cb143cc | ||
2554 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
2555 | Date: Wed Oct 18 05:36:59 2017 +0000 | ||
2556 | |||
2557 | upstream commit | ||
2558 | |||
2559 | remove unused Pp; | ||
2560 | |||
2561 | Upstream-ID: 8ad26467f1f6a40be887234085a8e01a61a00550 | ||
2562 | |||
2563 | commit 05b69e99570553c8e1eafb895b1fbf1d098d2e14 | ||
2564 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2565 | Date: Wed Oct 18 02:49:44 2017 +0000 | ||
2566 | |||
2567 | upstream commit | ||
2568 | |||
2569 | In the description of pattern-lists, clarify negated | ||
2570 | matches by explicitly stating that a negated match will never yield a | ||
2571 | positive result, and that at least one positive term in the pattern-list must | ||
2572 | match. bz#1918 | ||
2573 | |||
2574 | Upstream-ID: 652d2f9d993f158fc5f83cef4a95cd9d95ae6a14 | ||
2575 | |||
2576 | commit eb80e26a15c10bc65fed8b8cdb476819a713c0fd | ||
2577 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2578 | Date: Fri Oct 13 21:13:54 2017 +0000 | ||
2579 | |||
2580 | upstream commit | ||
2581 | |||
2582 | log debug messages sent to peer; ok deraadt markus | ||
2583 | |||
2584 | Upstream-ID: 3b4fdc0a06ea5083f61d96e20043000f477103d9 | ||
2585 | |||
2586 | commit 071325f458d615d7740da5c1c1d5a8b68a0b4605 | ||
2587 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
2588 | Date: Fri Oct 13 16:50:45 2017 +0000 | ||
2589 | |||
2590 | upstream commit | ||
2591 | |||
2592 | trim permitrootlogin description somewhat, to avoid | ||
2593 | ambiguity; original diff from walter alejandro iglesias, tweaked by sthen and | ||
2594 | myself | ||
2595 | |||
2596 | ok sthen schwarze deraadt | ||
2597 | |||
2598 | Upstream-ID: 1749418b2bc073f3fdd25fe21f8263c3637fe5d2 | ||
2599 | |||
2600 | commit 10727487becb897a15f658e0cb2d05466236e622 | ||
2601 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2602 | Date: Fri Oct 13 06:45:18 2017 +0000 | ||
2603 | |||
2604 | upstream commit | ||
2605 | |||
2606 | mention SSH_USER_AUTH in the list of environment | ||
2607 | variables | ||
2608 | |||
2609 | Upstream-ID: 1083397c3ee54b4933121ab058c70a0fc6383691 | ||
2610 | |||
2611 | commit 224f193d6a4b57e7a0cb2b9ecd3b6c54d721d8c2 | ||
2612 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2613 | Date: Fri Oct 13 06:24:51 2017 +0000 | ||
2614 | |||
2615 | upstream commit | ||
2616 | |||
2617 | BIO_get_mem_data() is supposed to take a char* as pointer | ||
2618 | argument, so don't pass it a const char* | ||
2619 | |||
2620 | Upstream-ID: 1ccd91eb7f4dd4f0fa812d4f956987cd00b5f6ec | ||
2621 | |||
2622 | commit cfa46825b5ef7097373ed8e31b01a4538a8db565 | ||
2623 | Author: benno@openbsd.org <benno@openbsd.org> | ||
2624 | Date: Mon Oct 9 20:12:51 2017 +0000 | ||
2625 | |||
2626 | upstream commit | ||
2627 | |||
2628 | clarify the order in which config statements are used. ok | ||
2629 | jmc@ djm@ | ||
2630 | |||
2631 | Upstream-ID: e37e27bb6bbac71315e22cb9690fd8a556a501ed | ||
2632 | |||
2633 | commit dceabc7ad7ebc7769c8214a1647af64c9a1d92e5 | ||
2634 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2635 | Date: Thu Oct 5 15:52:03 2017 +0000 | ||
2636 | |||
2637 | upstream commit | ||
2638 | |||
2639 | replace statically-sized arrays in ServerOptions with | ||
2640 | dynamic ones managed by xrecallocarray, removing some arbitrary (though | ||
2641 | large) limits and saving a bit of memory; "much nicer" markus@ | ||
2642 | |||
2643 | Upstream-ID: 1732720b2f478fe929d6687ac7b0a97ff2efe9d2 | ||
2644 | |||
2645 | commit 2b4f3ab050c2aaf6977604dd037041372615178d | ||
2646 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
2647 | Date: Thu Oct 5 12:56:50 2017 +0000 | ||
2648 | |||
2649 | upstream commit | ||
2650 | |||
2651 | %C is hashed; from klemens nanni ok markus | ||
2652 | |||
2653 | Upstream-ID: 6ebed7b2e1b6ee5402a67875d74f5e2859d8f998 | ||
2654 | |||
2655 | commit a66714508b86d6814e9055fefe362d9fe4d49ab3 | ||
2656 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2657 | Date: Wed Oct 4 18:50:23 2017 +0000 | ||
2658 | |||
2659 | upstream commit | ||
2660 | |||
2661 | exercise PermitOpen a little more thoroughly | ||
2662 | |||
2663 | Upstream-Regress-ID: f41592334e227a4c1f9a983044522de4502d5eac | ||
2664 | |||
2665 | commit 609ecc8e57eb88e2eac976bd3cae7f7889aaeff6 | ||
2666 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
2667 | Date: Tue Sep 26 22:39:25 2017 +0000 | ||
2668 | |||
2669 | upstream commit | ||
2670 | |||
2671 | UsePrivilegeSeparation is gone, stop trying to test it. | ||
2672 | |||
2673 | Upstream-Regress-ID: 796a5057cfd79456a20ea935cc53f6eb80ace191 | ||
2674 | |||
2675 | commit 69bda0228861f3dacd4fb3d28b60ce9d103d254b | ||
2676 | Author: djm@openbsd.org <djm@openbsd.org> | ||
2677 | Date: Wed Oct 4 18:49:30 2017 +0000 | ||
2678 | |||
2679 | upstream commit | ||
2680 | |||
2681 | fix (another) problem in PermitOpen introduced during the | ||
2682 | channels.c refactor: the third and subsequent arguments to PermitOpen were | ||
2683 | being silently ignored; ok markus@ | ||
2684 | |||
2685 | Upstream-ID: 067c89f1f53cbc381628012ba776d6861e6782fd | ||
2686 | |||
1 | commit 66bf74a92131b7effe49fb0eefe5225151869dc5 | 2687 | commit 66bf74a92131b7effe49fb0eefe5225151869dc5 |
2 | Author: djm@openbsd.org <djm@openbsd.org> | 2688 | Author: djm@openbsd.org <djm@openbsd.org> |
3 | Date: Mon Oct 2 19:33:20 2017 +0000 | 2689 | Date: Mon Oct 2 19:33:20 2017 +0000 |
@@ -7110,2242 +9796,3 @@ Author: Darren Tucker <dtucker@zip.com.au> | |||
7110 | Date: Mon Apr 4 11:07:59 2016 +1000 | 9796 | Date: Mon Apr 4 11:07:59 2016 +1000 |
7111 | 9797 | ||
7112 | Fix configure-time warnings for openssl test. | 9798 | Fix configure-time warnings for openssl test. |
7113 | |||
7114 | commit 95687f5831ae680f7959446d8ae4b52452ee05dd | ||
7115 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7116 | Date: Fri Apr 1 02:34:10 2016 +0000 | ||
7117 | |||
7118 | upstream commit | ||
7119 | |||
7120 | whitespace at EOL | ||
7121 | |||
7122 | Upstream-ID: 40ae2203d07cb14e0a89e1a0d4c6120ee8fd8c3a | ||
7123 | |||
7124 | commit fdfbf4580de09d84a974211715e14f88a5704b8e | ||
7125 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
7126 | Date: Thu Mar 31 05:24:06 2016 +0000 | ||
7127 | |||
7128 | upstream commit | ||
7129 | |||
7130 | Remove fallback from moduli to "primes" file that was | ||
7131 | deprecated in 2001 and fix log messages referring to primes file. Based on | ||
7132 | patch from xnox at ubuntu.com via bz#2559. "kill it" deraadt@ | ||
7133 | |||
7134 | Upstream-ID: 0d4f8c70e2fa7431a83b95f8ca81033147ba8713 | ||
7135 | |||
7136 | commit 0235a5fa67fcac51adb564cba69011a535f86f6b | ||
7137 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7138 | Date: Thu Mar 17 17:19:43 2016 +0000 | ||
7139 | |||
7140 | upstream commit | ||
7141 | |||
7142 | UseDNS affects ssh hostname processing in authorized_keys, | ||
7143 | not known_hosts; bz#2554 reported by jjelen AT redhat.com | ||
7144 | |||
7145 | Upstream-ID: c1c1bb895dde46095fc6d81d8653703928437591 | ||
7146 | |||
7147 | commit 8c4739338f5e379d05b19d6e544540114965f07e | ||
7148 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7149 | Date: Tue Mar 15 09:24:43 2016 +1100 | ||
7150 | |||
7151 | Don't call Solaris setproject() with UsePAM=yes. | ||
7152 | |||
7153 | When Solaris Projects are enabled along with PAM setting the project | ||
7154 | is PAM's responsiblity. bz#2425, based on patch from | ||
7155 | brent.paulson at gmail.com. | ||
7156 | |||
7157 | commit cff26f373c58457a32cb263e212cfff53fca987b | ||
7158 | Author: Damien Miller <djm@mindrot.org> | ||
7159 | Date: Tue Mar 15 04:30:21 2016 +1100 | ||
7160 | |||
7161 | remove slogin from *.spec | ||
7162 | |||
7163 | commit c38905ba391434834da86abfc988a2b8b9b62477 | ||
7164 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7165 | Date: Mon Mar 14 16:20:54 2016 +0000 | ||
7166 | |||
7167 | upstream commit | ||
7168 | |||
7169 | unbreak authentication using lone certificate keys in | ||
7170 | ssh-agent: when attempting pubkey auth with a certificate, if no separate | ||
7171 | private key is found among the keys then try with the certificate key itself. | ||
7172 | |||
7173 | bz#2550 reported by Peter Moody | ||
7174 | |||
7175 | Upstream-ID: f939cd76d68e6a9a3d1711b5a943d6ed1e623966 | ||
7176 | |||
7177 | commit 4b4bfb01cd40b9ddb948e6026ddd287cc303d871 | ||
7178 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7179 | Date: Thu Mar 10 11:47:57 2016 +0000 | ||
7180 | |||
7181 | upstream commit | ||
7182 | |||
7183 | sanitise characters destined for xauth reported by | ||
7184 | github.com/tintinweb feedback and ok deraadt and markus | ||
7185 | |||
7186 | Upstream-ID: 18ad8d0d74cbd2ea3306a16595a306ee356aa261 | ||
7187 | |||
7188 | commit 732b463d37221722b1206f43aa59563766a6a968 | ||
7189 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7190 | Date: Mon Mar 14 16:04:23 2016 +1100 | ||
7191 | |||
7192 | Pass supported malloc options to connect-privsep. | ||
7193 | |||
7194 | This allows us to activate only the supported options during the malloc | ||
7195 | option portion of the connect-privsep test. | ||
7196 | |||
7197 | commit d29c5b9b3e9f27394ca97a364ed4bb4a55a59744 | ||
7198 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7199 | Date: Mon Mar 14 09:30:58 2016 +1100 | ||
7200 | |||
7201 | Remove leftover roaming.h file. | ||
7202 | |||
7203 | Pointed out by des at des.no. | ||
7204 | |||
7205 | commit 8ff20ec95f4377021ed5e9b2331320f5c5a34cea | ||
7206 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7207 | Date: Mon Mar 14 09:24:03 2016 +1100 | ||
7208 | |||
7209 | Quote variables that may contain whitespace. | ||
7210 | |||
7211 | The variable $L_TMP_ID_FILE needs to be surrounded by quotes in order to | ||
7212 | survive paths containing whitespace. bz#2551, from Corinna Vinschen via | ||
7213 | Philip Hands. | ||
7214 | |||
7215 | commit 627824480c01f0b24541842c7206ab9009644d02 | ||
7216 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7217 | Date: Fri Mar 11 14:47:41 2016 +1100 | ||
7218 | |||
7219 | Include priv.h for priv_set_t. | ||
7220 | |||
7221 | From alex at cooperi.net. | ||
7222 | |||
7223 | commit e960051f9a264f682c4d2fefbeecffcfc66b0ddf | ||
7224 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7225 | Date: Wed Mar 9 13:14:18 2016 +1100 | ||
7226 | |||
7227 | Wrap stdint.h inside #ifdef HAVE_STDINT_H. | ||
7228 | |||
7229 | commit 2c48bd344d2c4b5e08dae9aea5ff44fc19a5e363 | ||
7230 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7231 | Date: Wed Mar 9 12:46:50 2016 +1100 | ||
7232 | |||
7233 | Add compat to monotime_double(). | ||
7234 | |||
7235 | Apply all of the portability changes in monotime() to monotime() double. | ||
7236 | Fixes build on at least older FreeBSD systems. | ||
7237 | |||
7238 | commit 7b40ef6c2eef40c339f6ea8920cb8a44838e10c9 | ||
7239 | Author: Damien Miller <djm@mindrot.org> | ||
7240 | Date: Tue Mar 8 14:12:58 2016 -0800 | ||
7241 | |||
7242 | make a regress-binaries target | ||
7243 | |||
7244 | Easier to build all the regression/unit test binaries in one pass | ||
7245 | than going through all of ${REGRESS_BINARIES} | ||
7246 | |||
7247 | commit c425494d6b6181beb54a1b3763ef9e944fd3c214 | ||
7248 | Author: Damien Miller <djm@mindrot.org> | ||
7249 | Date: Tue Mar 8 14:03:54 2016 -0800 | ||
7250 | |||
7251 | unbreak kexfuzz for -Werror without __bounded__ | ||
7252 | |||
7253 | commit 3ed9218c336607846563daea5d5ab4f701f4e042 | ||
7254 | Author: Damien Miller <djm@mindrot.org> | ||
7255 | Date: Tue Mar 8 14:01:29 2016 -0800 | ||
7256 | |||
7257 | unbreak PAM after canohost refactor | ||
7258 | |||
7259 | commit 885fb2a44ff694f01e4f6470f803629e11f62961 | ||
7260 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7261 | Date: Tue Mar 8 11:58:43 2016 +1100 | ||
7262 | |||
7263 | auth_get_canonical_hostname in portable code. | ||
7264 | |||
7265 | "refactor canohost.c" replaced get_canonical_hostname, this makes the | ||
7266 | same change to some portable-specific code. | ||
7267 | |||
7268 | commit 95767262caa6692eff1e1565be1f5cb297949a89 | ||
7269 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7270 | Date: Mon Mar 7 19:02:43 2016 +0000 | ||
7271 | |||
7272 | upstream commit | ||
7273 | |||
7274 | refactor canohost.c: move functions that cache results closer | ||
7275 | to the places that use them (authn and session code). After this, no state is | ||
7276 | cached in canohost.c | ||
7277 | |||
7278 | feedback and ok markus@ | ||
7279 | |||
7280 | Upstream-ID: 5f2e4df88d4803fc8ec59ec53629105e23ce625e | ||
7281 | |||
7282 | commit af0bb38ffd1f2c4f9f43b0029be2efe922815255 | ||
7283 | Author: Damien Miller <djm@mindrot.org> | ||
7284 | Date: Fri Mar 4 15:11:55 2016 +1100 | ||
7285 | |||
7286 | hook unittests/misc/kexfuzz into build | ||
7287 | |||
7288 | commit 331b8e07ee5bcbdca12c11cc8f51a7e8de09b248 | ||
7289 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
7290 | Date: Fri Mar 4 02:48:06 2016 +0000 | ||
7291 | |||
7292 | upstream commit | ||
7293 | |||
7294 | Filter debug messages out of log before picking the last | ||
7295 | two lines. Should prevent problems if any more debug output is added late in | ||
7296 | the connection. | ||
7297 | |||
7298 | Upstream-Regress-ID: 345d0a9589c381e7d640a4ead06cfaadf4db1363 | ||
7299 | |||
7300 | commit 0892edaa3ce623381d3a7635544cbc69b31cf9cb | ||
7301 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7302 | Date: Fri Mar 4 02:30:36 2016 +0000 | ||
7303 | |||
7304 | upstream commit | ||
7305 | |||
7306 | add KEX fuzzer harness; ok deraadt@ | ||
7307 | |||
7308 | Upstream-Regress-ID: 3df5242d30551b12b828aa9ba4a4cec0846be8d1 | ||
7309 | |||
7310 | commit ae2562c47d41b68dbb00240fd6dd60bed205367a | ||
7311 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
7312 | Date: Thu Mar 3 00:46:53 2016 +0000 | ||
7313 | |||
7314 | upstream commit | ||
7315 | |||
7316 | Look back 3 lines for possible error messages. Changes | ||
7317 | to the code mean that "Bad packet length" errors are 3 lines back instead of | ||
7318 | the previous two, which meant we didn't skip some offsets that we intended | ||
7319 | to. | ||
7320 | |||
7321 | Upstream-Regress-ID: 24f36912740a634d509a3144ebc8eb7c09b9c684 | ||
7322 | |||
7323 | commit 988e429d903acfb298bfddfd75e7994327adfed0 | ||
7324 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7325 | Date: Fri Mar 4 03:35:44 2016 +0000 | ||
7326 | |||
7327 | upstream commit | ||
7328 | |||
7329 | fix ClientAliveInterval when a time-based RekeyLimit is | ||
7330 | set; previously keepalive packets were not being sent. bz#2252 report and | ||
7331 | analysis by Christian Wittenhorst and Garrett Lee feedback and ok dtucker@ | ||
7332 | |||
7333 | Upstream-ID: d48f9deadd35fdacdd5106b41bb07630ddd4aa81 | ||
7334 | |||
7335 | commit 8ef04d7a94bcdb8b0085fdd2a79a844b7d40792d | ||
7336 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
7337 | Date: Wed Mar 2 22:43:52 2016 +0000 | ||
7338 | |||
7339 | upstream commit | ||
7340 | |||
7341 | Improve accuracy of reported transfer speeds by waiting | ||
7342 | for the ack from the other end. Pointed out by mmcc@, ok deraadt@ markus@ | ||
7343 | |||
7344 | Upstream-ID: 99f1cf15c9a8f161086b814d414d862795ae153d | ||
7345 | |||
7346 | commit b8d4eafe29684fe4f5bb587f7eab948e6ed62723 | ||
7347 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
7348 | Date: Wed Mar 2 22:42:40 2016 +0000 | ||
7349 | |||
7350 | upstream commit | ||
7351 | |||
7352 | Improve precision of progressmeter for sftp and scp by | ||
7353 | storing sub-second timestamps. Pointed out by mmcc@, ok deraadt@ markus@ | ||
7354 | |||
7355 | Upstream-ID: 38fd83a3d83dbf81c8ff7b5d1302382fe54970ab | ||
7356 | |||
7357 | commit 18f64b969c70ed00e74b9d8e50359dbe698ce4c0 | ||
7358 | Author: jca@openbsd.org <jca@openbsd.org> | ||
7359 | Date: Mon Feb 29 20:22:36 2016 +0000 | ||
7360 | |||
7361 | upstream commit | ||
7362 | |||
7363 | Print ssize_t with %zd; ok deraadt@ mmcc@ | ||
7364 | |||
7365 | Upstream-ID: 0590313bbb013ff6692298c98f7e0be349d124bd | ||
7366 | |||
7367 | commit 6e7f68ce38130c794ec1fb8d2a6091fbe982628d | ||
7368 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7369 | Date: Sun Feb 28 22:27:00 2016 +0000 | ||
7370 | |||
7371 | upstream commit | ||
7372 | |||
7373 | rearrange DH public value tests to be a little more clear | ||
7374 | |||
7375 | rearrange DH private value generation to explain rationale more | ||
7376 | clearly and include an extra sanity check. | ||
7377 | |||
7378 | ok deraadt | ||
7379 | |||
7380 | Upstream-ID: 9ad8a07e1a12684e1b329f9bd88941b249d4b2ad | ||
7381 | |||
7382 | commit 2ed17aa34008bdfc8db674315adc425a0712be11 | ||
7383 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7384 | Date: Tue Mar 1 15:24:20 2016 +1100 | ||
7385 | |||
7386 | Import updated moduli file from OpenBSD. | ||
7387 | |||
7388 | Note that 1.5k bit groups have been removed. | ||
7389 | |||
7390 | commit 72b061d4ba0f909501c595d709ea76e06b01e5c9 | ||
7391 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7392 | Date: Fri Feb 26 14:40:04 2016 +1100 | ||
7393 | |||
7394 | Add a note about using xlc on AIX. | ||
7395 | |||
7396 | commit fd4e4f2416baa2e6565ea49d52aade296bad3e28 | ||
7397 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7398 | Date: Wed Feb 24 10:44:25 2016 +1100 | ||
7399 | |||
7400 | Skip PrintLastLog in config dump mode. | ||
7401 | |||
7402 | When DISABLE_LASTLOG is set, do not try to include PrintLastLog in the | ||
7403 | config dump since it'll be reported as UNKNOWN. | ||
7404 | |||
7405 | commit 99135c764fa250801da5ec3b8d06cbd0111caae8 | ||
7406 | Author: Damien Miller <djm@mindrot.org> | ||
7407 | Date: Tue Feb 23 20:17:23 2016 +1100 | ||
7408 | |||
7409 | update spec/README versions ahead of release | ||
7410 | |||
7411 | commit b86a334aaaa4d1e643eb1fd71f718573d6d948b5 | ||
7412 | Author: Damien Miller <djm@mindrot.org> | ||
7413 | Date: Tue Feb 23 20:16:53 2016 +1100 | ||
7414 | |||
7415 | put back portable patchlevel to p1 | ||
7416 | |||
7417 | commit 555dd35ff176847e3c6bd068ba2e8db4022eb24f | ||
7418 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7419 | Date: Tue Feb 23 09:14:34 2016 +0000 | ||
7420 | |||
7421 | upstream commit | ||
7422 | |||
7423 | openssh-7.2 | ||
7424 | |||
7425 | Upstream-ID: 9db776b26014147fc907ece8460ef2bcb0f11e78 | ||
7426 | |||
7427 | commit 1acc058d0a7913838c830ed998a1a1fb5b7864bf | ||
7428 | Author: Damien Miller <djm@mindrot.org> | ||
7429 | Date: Tue Feb 23 16:12:13 2016 +1100 | ||
7430 | |||
7431 | Disable tests where fs perms are incorrect | ||
7432 | |||
7433 | Some tests have strict requirements on the filesystem permissions | ||
7434 | for certain files and directories. This adds a regress/check-perm | ||
7435 | tool that copies the relevant logic from sshd to exactly test | ||
7436 | the paths in question. This lets us skip tests when the local | ||
7437 | filesystem doesn't conform to our expectations rather than | ||
7438 | continuing and failing the test run. | ||
7439 | |||
7440 | ok dtucker@ | ||
7441 | |||
7442 | commit 39f303b1f36d934d8410b05625f25c7bcb75db4d | ||
7443 | Author: Damien Miller <djm@mindrot.org> | ||
7444 | Date: Tue Feb 23 12:56:59 2016 +1100 | ||
7445 | |||
7446 | fix sandbox on OSX Lion | ||
7447 | |||
7448 | sshd was failing with: | ||
7449 | |||
7450 | ssh_sandbox_child: sandbox_init: dlopen(/usr/lib/libsandbox.1.dylib, 261):cw | ||
7451 | image not found [preauth] | ||
7452 | |||
7453 | caused by chroot before sandboxing. Avoid by explicitly linking libsandbox | ||
7454 | to sshd. Spotted by Darren. | ||
7455 | |||
7456 | commit 0d1451a32c7436e6d3d482351e776bc5e7824ce4 | ||
7457 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7458 | Date: Tue Feb 23 01:34:14 2016 +0000 | ||
7459 | |||
7460 | upstream commit | ||
7461 | |||
7462 | fix spurious error message when incorrect passphrase | ||
7463 | entered for keys; reported by espie@ ok deraadt@ | ||
7464 | |||
7465 | Upstream-ID: 58b2e46e63ed6912ed1ee780bd3bd8560f9a5899 | ||
7466 | |||
7467 | commit 09d87d79741beb85768b5e788d7dfdf4bc3543dc | ||
7468 | Author: sobrado@openbsd.org <sobrado@openbsd.org> | ||
7469 | Date: Sat Feb 20 23:06:23 2016 +0000 | ||
7470 | |||
7471 | upstream commit | ||
7472 | |||
7473 | set ssh(1) protocol version to 2 only. | ||
7474 | |||
7475 | ok djm@ | ||
7476 | |||
7477 | Upstream-ID: e168daf9d27d7e392e3c9923826bd8e87b2b3a10 | ||
7478 | |||
7479 | commit 9262e07826ba5eebf8423f7ac9e47ec488c47869 | ||
7480 | Author: sobrado@openbsd.org <sobrado@openbsd.org> | ||
7481 | Date: Sat Feb 20 23:02:39 2016 +0000 | ||
7482 | |||
7483 | upstream commit | ||
7484 | |||
7485 | add missing ~/.ssh/id_ecdsa and ~/.ssh/id_ed25519 to | ||
7486 | IdentityFile. | ||
7487 | |||
7488 | ok djm@ | ||
7489 | |||
7490 | Upstream-ID: 6ce99466312e4ae7708017c3665e3edb976f70cf | ||
7491 | |||
7492 | commit c12f0fdce8f985fca8d71829fd64c5b89dc777f5 | ||
7493 | Author: sobrado@openbsd.org <sobrado@openbsd.org> | ||
7494 | Date: Sat Feb 20 23:01:46 2016 +0000 | ||
7495 | |||
7496 | upstream commit | ||
7497 | |||
7498 | AddressFamily defaults to any. | ||
7499 | |||
7500 | ok djm@ | ||
7501 | |||
7502 | Upstream-ID: 0d94aa06a4b889bf57a7f631c45ba36d24c13e0c | ||
7503 | |||
7504 | commit 907091acb188b1057d50c2158f74c3ecf1c2302b | ||
7505 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7506 | Date: Fri Feb 19 09:05:39 2016 +1100 | ||
7507 | |||
7508 | Make Solaris privs code build on older systems. | ||
7509 | |||
7510 | Not all systems with Solaris privs have priv_basicset so factor that | ||
7511 | out and provide backward compatibility code. Similarly, not all have | ||
7512 | PRIV_NET_ACCESS so wrap that in #ifdef. Based on code from | ||
7513 | alex at cooperi.net and djm@ with help from carson at taltos.org and | ||
7514 | wieland at purdue.edu. | ||
7515 | |||
7516 | commit 292a8dee14e5e67dcd1b49ba5c7b9023e8420d59 | ||
7517 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7518 | Date: Wed Feb 17 22:20:14 2016 +0000 | ||
7519 | |||
7520 | upstream commit | ||
7521 | |||
7522 | rekey refactor broke SSH1; spotted by Tom G. Christensen | ||
7523 | |||
7524 | Upstream-ID: 43f0d57928cc077c949af0bfa71ef574dcb58243 | ||
7525 | |||
7526 | commit 3a13cb543df9919aec2fc6b75f3dd3802facaeca | ||
7527 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7528 | Date: Wed Feb 17 08:57:34 2016 +0000 | ||
7529 | |||
7530 | upstream commit | ||
7531 | |||
7532 | rsa-sha2-512,rsa-sha2-256 cannot be selected explicitly | ||
7533 | in *KeyTypes options yet. Remove them from the lists of algorithms for now. | ||
7534 | committing on behalf of markus@ ok djm@ | ||
7535 | |||
7536 | Upstream-ID: c6e8820eb8e610ac21551832c0c89684a9a51bb7 | ||
7537 | |||
7538 | commit a685ae8d1c24fb7c712c55a4f3280ee76f5f1e4b | ||
7539 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
7540 | Date: Wed Feb 17 07:38:19 2016 +0000 | ||
7541 | |||
7542 | upstream commit | ||
7543 | |||
7544 | since these pages now clearly tell folks to avoid v1, | ||
7545 | normalise the docs from a v2 perspective (i.e. stop pointing out which bits | ||
7546 | are v2 only); | ||
7547 | |||
7548 | ok/tweaks djm ok markus | ||
7549 | |||
7550 | Upstream-ID: eb474f8c36fb6a532dc05c282f7965e38dcfa129 | ||
7551 | |||
7552 | commit c5c3f3279a0e4044b8de71b70d3570d692d0f29d | ||
7553 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7554 | Date: Wed Feb 17 05:29:04 2016 +0000 | ||
7555 | |||
7556 | upstream commit | ||
7557 | |||
7558 | make sandboxed privilege separation the default, not just | ||
7559 | for new installs; "absolutely" deraadt@ | ||
7560 | |||
7561 | Upstream-ID: 5221ef3b927d2df044e9aa3f5db74ae91743f69b | ||
7562 | |||
7563 | commit eb3f7337a651aa01d5dec019025e6cdc124ed081 | ||
7564 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
7565 | Date: Tue Feb 16 07:47:54 2016 +0000 | ||
7566 | |||
7567 | upstream commit | ||
7568 | |||
7569 | no need to state that protocol 2 is the default twice; | ||
7570 | |||
7571 | Upstream-ID: b1e4c36b0c2e12e338e5b66e2978f2ac953b95eb | ||
7572 | |||
7573 | commit e7901efa9b24e5b0c7e74f2c5520d47eead4d005 | ||
7574 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7575 | Date: Tue Feb 16 05:11:04 2016 +0000 | ||
7576 | |||
7577 | upstream commit | ||
7578 | |||
7579 | Replace list of ciphers and MACs adjacent to -1/-2 flag | ||
7580 | descriptions in ssh(1) with a strong recommendation not to use protocol 1. | ||
7581 | Add a similar warning to the Protocol option descriptions in ssh_config(5) | ||
7582 | and sshd_config(5); | ||
7583 | |||
7584 | prompted by and ok mmcc@ | ||
7585 | |||
7586 | Upstream-ID: 961f99e5437d50e636feca023978950a232ead5e | ||
7587 | |||
7588 | commit 5a0fcb77287342e2fc2ba1cee79b6af108973dc2 | ||
7589 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7590 | Date: Tue Feb 16 03:37:48 2016 +0000 | ||
7591 | |||
7592 | upstream commit | ||
7593 | |||
7594 | add a "Close session" log entry (at loglevel=verbose) to | ||
7595 | correspond to the existing "Starting session" one. Also include the session | ||
7596 | id number to make multiplexed sessions more apparent. | ||
7597 | |||
7598 | feedback and ok dtucker@ | ||
7599 | |||
7600 | Upstream-ID: e72d2ac080e02774376325136e532cb24c2e617c | ||
7601 | |||
7602 | commit 624fd395b559820705171f460dd33d67743d13d6 | ||
7603 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7604 | Date: Wed Feb 17 02:24:17 2016 +0000 | ||
7605 | |||
7606 | upstream commit | ||
7607 | |||
7608 | include bad $SSH_CONNECTION in failure output | ||
7609 | |||
7610 | Upstream-Regress-ID: b22d72edfde78c403aaec2b9c9753ef633cc0529 | ||
7611 | |||
7612 | commit 60d860e54b4f199e5e89963b1c086981309753cb | ||
7613 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7614 | Date: Wed Feb 17 13:37:09 2016 +1100 | ||
7615 | |||
7616 | Rollback addition of va_start. | ||
7617 | |||
7618 | va_start was added in 0f754e29dd3760fc0b172c1220f18b753fb0957e, however | ||
7619 | it has the wrong number of args and it's not usable in non-variadic | ||
7620 | functions anyway so it breaks things (for example Solaris 2.6 as | ||
7621 | reported by Tom G. Christensen).i ok djm@ | ||
7622 | |||
7623 | commit 2fee909c3cee2472a98b26eb82696297b81e0d38 | ||
7624 | Author: Darren Tucker <dtucker@zip.com.au> | ||
7625 | Date: Wed Feb 17 09:48:15 2016 +1100 | ||
7626 | |||
7627 | Look for gethostbyname in libresolv and libnsl. | ||
7628 | |||
7629 | Should fix build problem on Solaris 2.6 reported by Tom G. Christensen. | ||
7630 | |||
7631 | commit 5ac712d81a84396aab441a272ec429af5b738302 | ||
7632 | Author: Damien Miller <djm@mindrot.org> | ||
7633 | Date: Tue Feb 16 10:45:02 2016 +1100 | ||
7634 | |||
7635 | make existing ssh_malloc_init only for __OpenBSD__ | ||
7636 | |||
7637 | commit 24c9bded569d9f2449ded73f92fb6d12db7a9eec | ||
7638 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7639 | Date: Mon Feb 15 23:32:37 2016 +0000 | ||
7640 | |||
7641 | upstream commit | ||
7642 | |||
7643 | memleak of algorithm name in mm_answer_sign; reported by | ||
7644 | Jakub Jelen | ||
7645 | |||
7646 | Upstream-ID: ccd742cd25952240ebd23d7d4d6b605862584d08 | ||
7647 | |||
7648 | commit ffb1e7e896139a42ceb78676f637658f44612411 | ||
7649 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
7650 | Date: Mon Feb 15 09:47:49 2016 +0000 | ||
7651 | |||
7652 | upstream commit | ||
7653 | |||
7654 | Add a function to enable security-related malloc_options. | ||
7655 | With and ok deraadt@, something similar has been in the snaps for a while. | ||
7656 | |||
7657 | Upstream-ID: 43a95523b832b7f3b943d2908662191110c380ed | ||
7658 | |||
7659 | commit ef39e8c0497ff0564990a4f9e8b7338b3ba3507c | ||
7660 | Author: Damien Miller <djm@mindrot.org> | ||
7661 | Date: Tue Feb 16 10:34:39 2016 +1100 | ||
7662 | |||
7663 | sync ssh-copy-id with upstream 783ef08b0a75 | ||
7664 | |||
7665 | commit d2d772f55b19bb0e8d03c2fe1b9bb176d9779efd | ||
7666 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7667 | Date: Fri Feb 12 00:20:30 2016 +0000 | ||
7668 | |||
7669 | upstream commit | ||
7670 | |||
7671 | avoid fatal() for PKCS11 tokens that present empty key IDs | ||
7672 | bz#1773, ok markus@ | ||
7673 | |||
7674 | Upstream-ID: 044a764fee526f2c4a9d530bd10695422d01fc54 | ||
7675 | |||
7676 | commit e4c918a6c721410792b287c9fd21356a1bed5805 | ||
7677 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7678 | Date: Thu Feb 11 02:56:32 2016 +0000 | ||
7679 | |||
7680 | upstream commit | ||
7681 | |||
7682 | sync crypto algorithm lists in ssh_config(5) and | ||
7683 | sshd_config(5) with current reality. bz#2527 | ||
7684 | |||
7685 | Upstream-ID: d7fd1b6c1ed848d866236bcb1d7049d2bb9b2ff6 | ||
7686 | |||
7687 | commit e30cabfa4ab456a30b3224f7f545f1bdfc4a2517 | ||
7688 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7689 | Date: Thu Feb 11 02:21:34 2016 +0000 | ||
7690 | |||
7691 | upstream commit | ||
7692 | |||
7693 | fix regression in openssh-6.8 sftp client: existing | ||
7694 | destination directories would incorrectly terminate recursive uploads; | ||
7695 | bz#2528 | ||
7696 | |||
7697 | Upstream-ID: 3306be469f41f26758e3d447987ac6d662623e18 | ||
7698 | |||
7699 | commit 714e367226ded4dc3897078be48b961637350b05 | ||
7700 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7701 | Date: Tue Feb 9 05:30:04 2016 +0000 | ||
7702 | |||
7703 | upstream commit | ||
7704 | |||
7705 | turn off more old crypto in the client: hmac-md5, ripemd, | ||
7706 | truncated HMACs, RC4, blowfish. ok markus@ dtucker@ | ||
7707 | |||
7708 | Upstream-ID: 96aa11c2c082be45267a690c12f1d2aae6acd46e | ||
7709 | |||
7710 | commit 5a622844ff7f78dcb75e223399f9ef0977e8d0a3 | ||
7711 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7712 | Date: Mon Feb 8 23:40:12 2016 +0000 | ||
7713 | |||
7714 | upstream commit | ||
7715 | |||
7716 | don't attempt to percent_expand() already-canonicalised | ||
7717 | addresses, avoiding unnecessary failures when attempting to connect to scoped | ||
7718 | IPv6 addresses (that naturally contain '%' characters) | ||
7719 | |||
7720 | Upstream-ID: f24569cffa1a7cbde5f08dc739a72f4d78aa5c6a | ||
7721 | |||
7722 | commit 19bcf2ea2d17413f2d9730dd2a19575ff86b9b6a | ||
7723 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7724 | Date: Mon Feb 8 10:57:07 2016 +0000 | ||
7725 | |||
7726 | upstream commit | ||
7727 | |||
7728 | refactor activation of rekeying | ||
7729 | |||
7730 | This makes automatic rekeying internal to the packet code (previously | ||
7731 | the server and client loops needed to assist). In doing to it makes | ||
7732 | application of rekey limits more accurate by accounting for packets | ||
7733 | about to be sent as well as packets queued during rekeying events | ||
7734 | themselves. | ||
7735 | |||
7736 | Based on a patch from dtucker@ which was in turn based on a patch | ||
7737 | Aleksander Adamowski in bz#2521; ok markus@ | ||
7738 | |||
7739 | Upstream-ID: a441227fd64f9739850ca97b4cf794202860fcd8 | ||
7740 | |||
7741 | commit 603ba41179e4b53951c7b90ee95b6ef3faa3f15d | ||
7742 | Author: naddy@openbsd.org <naddy@openbsd.org> | ||
7743 | Date: Fri Feb 5 13:28:19 2016 +0000 | ||
7744 | |||
7745 | upstream commit | ||
7746 | |||
7747 | Only check errno if read() has returned an error. EOF is | ||
7748 | not an error. This fixes a problem where the mux master would sporadically | ||
7749 | fail to notice that the client had exited. ok mikeb@ djm@ | ||
7750 | |||
7751 | Upstream-ID: 3c2dadc21fac6ef64665688aac8a75fffd57ae53 | ||
7752 | |||
7753 | commit 56d7dac790693ce420d225119283bc355cff9185 | ||
7754 | Author: jsg@openbsd.org <jsg@openbsd.org> | ||
7755 | Date: Fri Feb 5 04:31:21 2016 +0000 | ||
7756 | |||
7757 | upstream commit | ||
7758 | |||
7759 | avoid an uninitialised value when NumberOfPasswordPrompts | ||
7760 | is 0 ok markus@ djm@ | ||
7761 | |||
7762 | Upstream-ID: 11b068d83c2865343aeb46acf1e9eec00f829b6b | ||
7763 | |||
7764 | commit deae7d52d59c5019c528f977360d87fdda15d20b | ||
7765 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7766 | Date: Fri Feb 5 03:07:06 2016 +0000 | ||
7767 | |||
7768 | upstream commit | ||
7769 | |||
7770 | mention internal DH-GEX fallback groups; bz#2302 | ||
7771 | |||
7772 | Upstream-ID: e7b395fcca3122cd825515f45a2e41c9a157e09e | ||
7773 | |||
7774 | commit cac3b6665f884d46192c0dc98a64112e8b11a766 | ||
7775 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7776 | Date: Fri Feb 5 02:37:56 2016 +0000 | ||
7777 | |||
7778 | upstream commit | ||
7779 | |||
7780 | better description for MaxSessions; bz#2531 | ||
7781 | |||
7782 | Upstream-ID: e2c0d74ee185cd1a3e9d4ca1f1b939b745b354da | ||
7783 | |||
7784 | commit 5ef4b0fdcc7a239577a754829b50022b91ab4712 | ||
7785 | Author: Damien Miller <djm@mindrot.org> | ||
7786 | Date: Wed Jan 27 17:45:56 2016 +1100 | ||
7787 | |||
7788 | avoid FreeBSD RCS Id in comment | ||
7789 | |||
7790 | Change old $FreeBSD version string in comment so it doesn't | ||
7791 | become an RCS ident downstream; requested by des AT des.no | ||
7792 | |||
7793 | commit 696d12683c90d20a0a9c5f4275fc916b7011fb04 | ||
7794 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7795 | Date: Thu Feb 4 23:43:48 2016 +0000 | ||
7796 | |||
7797 | upstream commit | ||
7798 | |||
7799 | printf argument casts to avoid warnings on strict | ||
7800 | compilers | ||
7801 | |||
7802 | Upstream-ID: 7b9f6712cef01865ad29070262d366cf13587c9c | ||
7803 | |||
7804 | commit 5658ef2501e785fbbdf5de2dc33b1ff7a4dca73a | ||
7805 | Author: millert@openbsd.org <millert@openbsd.org> | ||
7806 | Date: Mon Feb 1 21:18:17 2016 +0000 | ||
7807 | |||
7808 | upstream commit | ||
7809 | |||
7810 | Avoid ugly "DISPLAY "(null)" invalid; disabling X11 | ||
7811 | forwarding" message when DISPLAY is not set. This could also result in a | ||
7812 | crash on systems with a printf that doesn't handle NULL. OK djm@ | ||
7813 | |||
7814 | Upstream-ID: 20ee0cfbda678a247264c20ed75362042b90b412 | ||
7815 | |||
7816 | commit 537f88ec7bcf40bd444ac5584c707c5588c55c43 | ||
7817 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
7818 | Date: Fri Jan 29 05:18:15 2016 +0000 | ||
7819 | |||
7820 | upstream commit | ||
7821 | |||
7822 | Add regression test for RekeyLimit parsing of >32bit values | ||
7823 | (4G and 8G). | ||
7824 | |||
7825 | Upstream-Regress-ID: 548390350c62747b6234f522a99c319eee401328 | ||
7826 | |||
7827 | commit 4c6cb8330460f94e6c7ae28a364236d4188156a3 | ||
7828 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
7829 | Date: Fri Jan 29 23:04:46 2016 +0000 | ||
7830 | |||
7831 | upstream commit | ||
7832 | |||
7833 | Remove leftover roaming dead code. ok djm markus. | ||
7834 | |||
7835 | Upstream-ID: 13d1f9c8b65a5109756bcfd3b74df949d53615be | ||
7836 | |||
7837 | commit 28136471809806d6246ef41e4341467a39fe2f91 | ||
7838 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7839 | Date: Fri Jan 29 05:46:01 2016 +0000 | ||
7840 | |||
7841 | upstream commit | ||
7842 | |||
7843 | include packet type of non-data packets in debug3 output; | ||
7844 | ok markus dtucker | ||
7845 | |||
7846 | Upstream-ID: 034eaf639acc96459b9c5ce782db9fcd8bd02d41 | ||
7847 | |||
7848 | commit 6fd6e28daccafaa35f02741036abe64534c361a1 | ||
7849 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
7850 | Date: Fri Jan 29 03:31:03 2016 +0000 | ||
7851 | |||
7852 | upstream commit | ||
7853 | |||
7854 | Revert "account for packets buffered but not yet | ||
7855 | processed" change as it breaks for very small RekeyLimit values due to | ||
7856 | continuous rekeying. ok djm@ | ||
7857 | |||
7858 | Upstream-ID: 7e03f636cb45ab60db18850236ccf19079182a19 | ||
7859 | |||
7860 | commit 921ff00b0ac429666fb361d2d6cb1c8fff0006cb | ||
7861 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
7862 | Date: Fri Jan 29 02:54:45 2016 +0000 | ||
7863 | |||
7864 | upstream commit | ||
7865 | |||
7866 | Allow RekeyLimits in excess of 4G up to 2**63 bits | ||
7867 | (limited by the return type of scan_scaled). Part of bz#2521, ok djm. | ||
7868 | |||
7869 | Upstream-ID: 13bea82be566b9704821b1ea05bf7804335c7979 | ||
7870 | |||
7871 | commit c0060a65296f01d4634f274eee184c0e93ba0f23 | ||
7872 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
7873 | Date: Fri Jan 29 02:42:46 2016 +0000 | ||
7874 | |||
7875 | upstream commit | ||
7876 | |||
7877 | Account for packets buffered but not yet processed when | ||
7878 | computing whether or not it is time to perform rekeying. bz#2521, based | ||
7879 | loosely on a patch from olo at fb.com, ok djm@ | ||
7880 | |||
7881 | Upstream-ID: 67e268b547f990ed220f3cb70a5624d9bda12b8c | ||
7882 | |||
7883 | commit 44cf930e670488c85c9efeb373fa5f4b455692ac | ||
7884 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7885 | Date: Wed Jan 27 06:44:58 2016 +0000 | ||
7886 | |||
7887 | upstream commit | ||
7888 | |||
7889 | change old $FreeBSD version string in comment so it doesn't | ||
7890 | become an RCS ident downstream; requested by des AT des.no | ||
7891 | |||
7892 | Upstream-ID: 8ca558c01f184e596b45e4fc8885534b2c864722 | ||
7893 | |||
7894 | commit ebacd377769ac07d1bf3c75169644336056b7060 | ||
7895 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7896 | Date: Wed Jan 27 00:53:12 2016 +0000 | ||
7897 | |||
7898 | upstream commit | ||
7899 | |||
7900 | make the debug messages a bit more useful here | ||
7901 | |||
7902 | Upstream-ID: 478ccd4e897e0af8486b294aa63aa3f90ab78d64 | ||
7903 | |||
7904 | commit 458abc2934e82034c5c281336d8dc0f910aecad3 | ||
7905 | Author: jsg@openbsd.org <jsg@openbsd.org> | ||
7906 | Date: Sat Jan 23 05:31:35 2016 +0000 | ||
7907 | |||
7908 | upstream commit | ||
7909 | |||
7910 | Zero a stack buffer with explicit_bzero() instead of | ||
7911 | memset() when returning from client_loop() for consistency with | ||
7912 | buffer_free()/sshbuf_free(). | ||
7913 | |||
7914 | ok dtucker@ deraadt@ djm@ | ||
7915 | |||
7916 | Upstream-ID: bc9975b2095339811c3b954694d7d15ea5c58f66 | ||
7917 | |||
7918 | commit 65a3c0dacbc7dbb75ddb6a70ebe22d8de084d0b0 | ||
7919 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
7920 | Date: Wed Jan 20 09:22:39 2016 +0000 | ||
7921 | |||
7922 | upstream commit | ||
7923 | |||
7924 | Include sys/time.h for gettimeofday. From sortie at | ||
7925 | maxsi.org. | ||
7926 | |||
7927 | Upstream-ID: 6ed0c33b836d9de0a664cd091e86523ecaa2fb3b | ||
7928 | |||
7929 | commit fc77ccdc2ce6d5d06628b8da5048a6a5f6ffca5a | ||
7930 | Author: markus@openbsd.org <markus@openbsd.org> | ||
7931 | Date: Thu Jan 14 22:56:56 2016 +0000 | ||
7932 | |||
7933 | upstream commit | ||
7934 | |||
7935 | fd leaks; report Qualys Security Advisory team; ok | ||
7936 | deraadt@ | ||
7937 | |||
7938 | Upstream-ID: 4ec0f12b9d8fa202293c9effa115464185aa071d | ||
7939 | |||
7940 | commit a306863831c57ec5fad918687cc5d289ee8e2635 | ||
7941 | Author: markus@openbsd.org <markus@openbsd.org> | ||
7942 | Date: Thu Jan 14 16:17:39 2016 +0000 | ||
7943 | |||
7944 | upstream commit | ||
7945 | |||
7946 | remove roaming support; ok djm@ | ||
7947 | |||
7948 | Upstream-ID: 2cab8f4b197bc95776fb1c8dc2859dad0c64dc56 | ||
7949 | |||
7950 | commit 6ef49e83e30688504552ac10875feabd5521565f | ||
7951 | Author: deraadt@openbsd.org <deraadt@openbsd.org> | ||
7952 | Date: Thu Jan 14 14:34:34 2016 +0000 | ||
7953 | |||
7954 | upstream commit | ||
7955 | |||
7956 | Disable experimental client-side roaming support. Server | ||
7957 | side was disabled/gutted for years already, but this aspect was surprisingly | ||
7958 | forgotten. Thanks for report from Qualys | ||
7959 | |||
7960 | Upstream-ID: 2328004b58f431a554d4c1bf67f5407eae3389df | ||
7961 | |||
7962 | commit 8d7b523b96d3be180572d9d338cedaafc0570f60 | ||
7963 | Author: Damien Miller <djm@mindrot.org> | ||
7964 | Date: Thu Jan 14 11:08:19 2016 +1100 | ||
7965 | |||
7966 | bump version numbers | ||
7967 | |||
7968 | commit 8c3d512a1fac8b9c83b4d0c9c3f2376290bd84ca | ||
7969 | Author: Damien Miller <djm@mindrot.org> | ||
7970 | Date: Thu Jan 14 11:04:04 2016 +1100 | ||
7971 | |||
7972 | openssh-7.1p2 | ||
7973 | |||
7974 | commit e6c85f8889c5c9eb04796fdb76d2807636b9eef5 | ||
7975 | Author: Damien Miller <djm@mindrot.org> | ||
7976 | Date: Fri Jan 15 01:30:36 2016 +1100 | ||
7977 | |||
7978 | forcibly disable roaming support in the client | ||
7979 | |||
7980 | commit ed4ce82dbfa8a3a3c8ea6fa0db113c71e234416c | ||
7981 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7982 | Date: Wed Jan 13 23:04:47 2016 +0000 | ||
7983 | |||
7984 | upstream commit | ||
7985 | |||
7986 | eliminate fallback from untrusted X11 forwarding to trusted | ||
7987 | forwarding when the X server disables the SECURITY extension; Reported by | ||
7988 | Thomas Hoger; ok deraadt@ | ||
7989 | |||
7990 | Upstream-ID: f76195bd2064615a63ef9674a0e4096b0713f938 | ||
7991 | |||
7992 | commit 9a728cc918fad67c8a9a71201088b1e150340ba4 | ||
7993 | Author: djm@openbsd.org <djm@openbsd.org> | ||
7994 | Date: Tue Jan 12 23:42:54 2016 +0000 | ||
7995 | |||
7996 | upstream commit | ||
7997 | |||
7998 | use explicit_bzero() more liberally in the buffer code; ok | ||
7999 | deraadt | ||
8000 | |||
8001 | Upstream-ID: 0ece37069fd66bc6e4f55eb1321f93df372b65bf | ||
8002 | |||
8003 | commit 4626cbaf78767fc8e9c86dd04785386c59ae0839 | ||
8004 | Author: Damien Miller <djm@mindrot.org> | ||
8005 | Date: Fri Jan 8 14:24:56 2016 +1100 | ||
8006 | |||
8007 | Support Illumos/Solaris fine-grained privileges | ||
8008 | |||
8009 | Includes a pre-auth privsep sandbox and several pledge() | ||
8010 | emulations. bz#2511, patch by Alex Wilson. | ||
8011 | |||
8012 | ok dtucker@ | ||
8013 | |||
8014 | commit 422d1b3ee977ff4c724b597fb2e437d38fc8de9d | ||
8015 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8016 | Date: Thu Dec 31 00:33:52 2015 +0000 | ||
8017 | |||
8018 | upstream commit | ||
8019 | |||
8020 | fix three bugs in KRL code related to (unused) signature | ||
8021 | support: verification length was being incorrectly calculated, multiple | ||
8022 | signatures were being incorrectly processed and a NULL dereference that | ||
8023 | occurred when signatures were verified. Reported by Carl Jackson | ||
8024 | |||
8025 | Upstream-ID: e705e97ad3ccce84291eaa651708dd1b9692576b | ||
8026 | |||
8027 | commit 6074c84bf95d00f29cc7d5d3cd3798737851aa1a | ||
8028 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8029 | Date: Wed Dec 30 23:46:14 2015 +0000 | ||
8030 | |||
8031 | upstream commit | ||
8032 | |||
8033 | unused prototype | ||
8034 | |||
8035 | Upstream-ID: f3eef4389d53ed6c0d5c77dcdcca3060c745da97 | ||
8036 | |||
8037 | commit 6213f0e180e54122bb1ba928e11c784e2b4e5380 | ||
8038 | Author: guenther@openbsd.org <guenther@openbsd.org> | ||
8039 | Date: Sat Dec 26 20:51:35 2015 +0000 | ||
8040 | |||
8041 | upstream commit | ||
8042 | |||
8043 | Use pread/pwrite instead separate lseek+read/write for | ||
8044 | lastlog. Cast to off_t before multiplication to avoid truncation on ILP32 | ||
8045 | |||
8046 | ok kettenis@ mmcc@ | ||
8047 | |||
8048 | Upstream-ID: fc40092568cd195719ddf1a00aa0742340d616cf | ||
8049 | |||
8050 | commit d7d2bc95045a43dd56ea696cc1d030ac9d77e81f | ||
8051 | Author: semarie@openbsd.org <semarie@openbsd.org> | ||
8052 | Date: Sat Dec 26 07:46:03 2015 +0000 | ||
8053 | |||
8054 | upstream commit | ||
8055 | |||
8056 | adjust pledge promises for ControlMaster: when using | ||
8057 | "ask" or "autoask", the process will use ssh-askpass for asking confirmation. | ||
8058 | |||
8059 | problem found by halex@ | ||
8060 | |||
8061 | ok halex@ | ||
8062 | |||
8063 | Upstream-ID: 38a58b30ae3eef85051c74d3c247216ec0735f80 | ||
8064 | |||
8065 | commit 271df8185d9689b3fb0523f58514481b858f6843 | ||
8066 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8067 | Date: Sun Dec 13 22:42:23 2015 +0000 | ||
8068 | |||
8069 | upstream commit | ||
8070 | |||
8071 | unbreak connections with peers that set | ||
8072 | first_kex_follows; fix from Matt Johnston va bz#2515 | ||
8073 | |||
8074 | Upstream-ID: decc88ec4fc7515594fdb42b04aa03189a44184b | ||
8075 | |||
8076 | commit 43849a47c5f8687699eafbcb5604f6b9c395179f | ||
8077 | Author: doug@openbsd.org <doug@openbsd.org> | ||
8078 | Date: Fri Dec 11 17:41:37 2015 +0000 | ||
8079 | |||
8080 | upstream commit | ||
8081 | |||
8082 | Add "id" to ssh-agent pledge for subprocess support. | ||
8083 | |||
8084 | Found the hard way by Jan Johansson when using ssh-agent with X. Also, | ||
8085 | rearranged proc/exec and retval to match other pledge calls in the tree. | ||
8086 | |||
8087 | ok djm@ | ||
8088 | |||
8089 | Upstream-ID: 914255f6850e5e7fa830a2de6c38605333b584db | ||
8090 | |||
8091 | commit 52d7078421844b2f88329f5be3de370b0a938636 | ||
8092 | Author: mmcc@openbsd.org <mmcc@openbsd.org> | ||
8093 | Date: Fri Dec 11 04:21:11 2015 +0000 | ||
8094 | |||
8095 | upstream commit | ||
8096 | |||
8097 | Remove NULL-checks before sshbuf_free(). | ||
8098 | |||
8099 | ok djm@ | ||
8100 | |||
8101 | Upstream-ID: 5ebed00ed5f9f03b119a345085e8774565466917 | ||
8102 | |||
8103 | commit a4b9e0f4e4a6980a0eb8072f76ea611cab5b77e7 | ||
8104 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8105 | Date: Fri Dec 11 03:24:25 2015 +0000 | ||
8106 | |||
8107 | upstream commit | ||
8108 | |||
8109 | include remote port number in a few more messages; makes | ||
8110 | tying log messages together into a session a bit easier; bz#2503 ok dtucker@ | ||
8111 | |||
8112 | Upstream-ID: 9300dc354015f7a7368d94a8ff4a4266a69d237e | ||
8113 | |||
8114 | commit 6091c362e89079397e68744ae30df121b0a72c07 | ||
8115 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8116 | Date: Fri Dec 11 03:20:09 2015 +0000 | ||
8117 | |||
8118 | upstream commit | ||
8119 | |||
8120 | don't try to load SSHv1 private key when compiled without | ||
8121 | SSHv1 support. From Iain Morgan bz#2505 | ||
8122 | |||
8123 | Upstream-ID: 8b8e7b02a448cf5e5635979df2d83028f58868a7 | ||
8124 | |||
8125 | commit cce6a36bb95e81fa8bfb46daf22eabcf13afc352 | ||
8126 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8127 | Date: Fri Dec 11 03:19:09 2015 +0000 | ||
8128 | |||
8129 | upstream commit | ||
8130 | |||
8131 | use SSH_MAX_PUBKEY_BYTES consistently as buffer size when | ||
8132 | reading key files. Increase it to match the size of the buffers already being | ||
8133 | used. | ||
8134 | |||
8135 | Upstream-ID: 1b60586b484b55a947d99a0b32bd25e0ced56fae | ||
8136 | |||
8137 | commit 89540b6de025b80404a0cb8418c06377f3f98848 | ||
8138 | Author: mmcc@openbsd.org <mmcc@openbsd.org> | ||
8139 | Date: Fri Dec 11 02:31:47 2015 +0000 | ||
8140 | |||
8141 | upstream commit | ||
8142 | |||
8143 | Remove NULL-checks before sshkey_free(). | ||
8144 | |||
8145 | ok djm@ | ||
8146 | |||
8147 | Upstream-ID: 3e35afe8a25e021216696b5d6cde7f5d2e5e3f52 | ||
8148 | |||
8149 | commit 79394ed6d74572c2d2643d73937dad33727fc240 | ||
8150 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
8151 | Date: Fri Dec 11 02:29:03 2015 +0000 | ||
8152 | |||
8153 | upstream commit | ||
8154 | |||
8155 | fflush stdout so that output is seen even when running in | ||
8156 | debug mode when output may otherwise not be flushed. Patch from dustin at | ||
8157 | null-ptr.net. | ||
8158 | |||
8159 | Upstream-ID: b0c6b4cd2cdb01d7e9eefbffdc522e35b5bc4acc | ||
8160 | |||
8161 | commit ee607cccb6636eb543282ba90e0677b0604d8b7a | ||
8162 | Author: Darren Tucker <dtucker@zip.com.au> | ||
8163 | Date: Tue Dec 15 15:23:49 2015 +1100 | ||
8164 | |||
8165 | Increase robustness of redhat/openssh.spec | ||
8166 | |||
8167 | - remove configure --with-rsh, because this option isn't supported anymore | ||
8168 | - replace last occurrence of BuildPreReq by BuildRequires | ||
8169 | - update grep statement to query the krb5 include directory | ||
8170 | |||
8171 | Patch from CarstenGrohmann via github, ok djm. | ||
8172 | |||
8173 | commit b5fa0cd73555b991a543145603658d7088ec6b60 | ||
8174 | Author: Darren Tucker <dtucker@zip.com.au> | ||
8175 | Date: Tue Dec 15 15:10:32 2015 +1100 | ||
8176 | |||
8177 | Allow --without-ssl-engine with --without-openssl | ||
8178 | |||
8179 | Patch from Mike Frysinger via github. | ||
8180 | |||
8181 | commit c1d7e546f6029024f3257cc25c92f2bddf163125 | ||
8182 | Author: Darren Tucker <dtucker@zip.com.au> | ||
8183 | Date: Tue Dec 15 14:27:09 2015 +1100 | ||
8184 | |||
8185 | Include openssl crypto.h for SSLeay. | ||
8186 | |||
8187 | Patch from doughdemon via github. | ||
8188 | |||
8189 | commit c6f5f01651526e88c00d988ce59d71f481ebac62 | ||
8190 | Author: Darren Tucker <dtucker@zip.com.au> | ||
8191 | Date: Tue Dec 15 13:59:12 2015 +1100 | ||
8192 | |||
8193 | Add sys/time.h for gettimeofday. | ||
8194 | |||
8195 | Should allow it it compile with MUSL libc. Based on patch from | ||
8196 | doughdemon via github. | ||
8197 | |||
8198 | commit 39736be06c7498ef57d6970f2d85cf066ae57c82 | ||
8199 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8200 | Date: Fri Dec 11 02:20:28 2015 +0000 | ||
8201 | |||
8202 | upstream commit | ||
8203 | |||
8204 | correct error messages; from Tomas Kuthan bz#2507 | ||
8205 | |||
8206 | Upstream-ID: 7454a0affeab772398052954c79300aa82077093 | ||
8207 | |||
8208 | commit 94141b7ade24afceeb6762a3f99e09e47a6c42b6 | ||
8209 | Author: mmcc@openbsd.org <mmcc@openbsd.org> | ||
8210 | Date: Fri Dec 11 00:20:04 2015 +0000 | ||
8211 | |||
8212 | upstream commit | ||
8213 | |||
8214 | Pass (char *)NULL rather than (char *)0 to execl and | ||
8215 | execlp. | ||
8216 | |||
8217 | ok dtucker@ | ||
8218 | |||
8219 | Upstream-ID: 56c955106cbddba86c3dd9bbf786ac0d1b361492 | ||
8220 | |||
8221 | commit d59ce08811bf94111c2f442184cf7d1257ffae24 | ||
8222 | Author: mmcc@openbsd.org <mmcc@openbsd.org> | ||
8223 | Date: Thu Dec 10 17:08:40 2015 +0000 | ||
8224 | |||
8225 | upstream commit | ||
8226 | |||
8227 | Remove NULL-checks before free(). | ||
8228 | |||
8229 | ok dtucker@ | ||
8230 | |||
8231 | Upstream-ID: e3d3cb1ce900179906af36517b5eea0fb15e6ef8 | ||
8232 | |||
8233 | commit 8e56dd46cb37879c73bce2d6032cf5e7f82d5a71 | ||
8234 | Author: mmcc@openbsd.org <mmcc@openbsd.org> | ||
8235 | Date: Thu Dec 10 07:01:35 2015 +0000 | ||
8236 | |||
8237 | upstream commit | ||
8238 | |||
8239 | Fix a couple "the the" typos. ok dtucker@ | ||
8240 | |||
8241 | Upstream-ID: ec364c5af32031f013001fd28d1bd3dfacfe9a72 | ||
8242 | |||
8243 | commit 6262a0522ddc2c0f2e9358dcb68d59b46e9c533e | ||
8244 | Author: markus@openbsd.org <markus@openbsd.org> | ||
8245 | Date: Mon Dec 7 20:04:09 2015 +0000 | ||
8246 | |||
8247 | upstream commit | ||
8248 | |||
8249 | stricter encoding type checks for ssh-rsa; ok djm@ | ||
8250 | |||
8251 | Upstream-ID: 8cca7c787599a5e8391e184d0b4f36fdc3665650 | ||
8252 | |||
8253 | commit d86a3ba7af160c13496102aed861ae48a4297072 | ||
8254 | Author: Damien Miller <djm@mindrot.org> | ||
8255 | Date: Wed Dec 9 09:18:45 2015 +1100 | ||
8256 | |||
8257 | Don't set IPV6_V6ONLY on OpenBSD | ||
8258 | |||
8259 | It isn't necessary and runs afoul of pledge(2) restrictions. | ||
8260 | |||
8261 | commit da98c11d03d819a15429d8fff9688acd7505439f | ||
8262 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8263 | Date: Mon Dec 7 02:20:46 2015 +0000 | ||
8264 | |||
8265 | upstream commit | ||
8266 | |||
8267 | basic unit tests for rsa-sha2-* signature types | ||
8268 | |||
8269 | Upstream-Regress-ID: 7dc4b9db809d578ff104d591b4d86560c3598d3c | ||
8270 | |||
8271 | commit 3da893fdec9936dd2c23739cdb3c0c9d4c59fca0 | ||
8272 | Author: markus@openbsd.org <markus@openbsd.org> | ||
8273 | Date: Sat Dec 5 20:53:21 2015 +0000 | ||
8274 | |||
8275 | upstream commit | ||
8276 | |||
8277 | prefer rsa-sha2-512 over -256 for hostkeys, too; noticed | ||
8278 | by naddy@ | ||
8279 | |||
8280 | Upstream-ID: 685f55f7ec566a8caca587750672723a0faf3ffe | ||
8281 | |||
8282 | commit 8b56e59714d87181505e4678f0d6d39955caf10e | ||
8283 | Author: tobias@openbsd.org <tobias@openbsd.org> | ||
8284 | Date: Fri Dec 4 21:51:06 2015 +0000 | ||
8285 | |||
8286 | upstream commit | ||
8287 | |||
8288 | Properly handle invalid %-format by calling fatal. | ||
8289 | |||
8290 | ok deraadt, djm | ||
8291 | |||
8292 | Upstream-ID: 5692bce7d9f6eaa9c488cb93d3b55e758bef1eac | ||
8293 | |||
8294 | commit 76c9fbbe35aabc1db977fb78e827644345e9442e | ||
8295 | Author: markus@openbsd.org <markus@openbsd.org> | ||
8296 | Date: Fri Dec 4 16:41:28 2015 +0000 | ||
8297 | |||
8298 | upstream commit | ||
8299 | |||
8300 | implement SHA2-{256,512} for RSASSA-PKCS1-v1_5 signatures | ||
8301 | (user and host auth) based on draft-rsa-dsa-sha2-256-03.txt and | ||
8302 | draft-ssh-ext-info-04.txt; with & ok djm@ | ||
8303 | |||
8304 | Upstream-ID: cf82ce532b2733e5c4b34bb7b7c94835632db309 | ||
8305 | |||
8306 | commit 6064a8b8295cb5a17b5ebcfade53053377714f40 | ||
8307 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8308 | Date: Fri Dec 4 00:24:55 2015 +0000 | ||
8309 | |||
8310 | upstream commit | ||
8311 | |||
8312 | clean up agent_fd handling; properly initialise it to -1 | ||
8313 | and make tests consistent | ||
8314 | |||
8315 | ok markus@ | ||
8316 | |||
8317 | Upstream-ID: ac9554323d5065745caf17b5e37cb0f0d4825707 | ||
8318 | |||
8319 | commit b91926a97620f3e51761c271ba57aa5db790f48d | ||
8320 | Author: semarie@openbsd.org <semarie@openbsd.org> | ||
8321 | Date: Thu Dec 3 17:00:18 2015 +0000 | ||
8322 | |||
8323 | upstream commit | ||
8324 | |||
8325 | pledges ssh client: - mux client: which is used when | ||
8326 | ControlMaster is in use. will end with "stdio proc tty" (proc is to | ||
8327 | permit sending SIGWINCH to mux master on window resize) | ||
8328 | |||
8329 | - client loop: several levels of pledging depending of your used options | ||
8330 | |||
8331 | ok deraadt@ | ||
8332 | |||
8333 | Upstream-ID: 21676155a700e51f2ce911e33538e92a2cd1d94b | ||
8334 | |||
8335 | commit bcce47466bbc974636f588b5e4a9a18ae386f64a | ||
8336 | Author: doug@openbsd.org <doug@openbsd.org> | ||
8337 | Date: Wed Dec 2 08:30:50 2015 +0000 | ||
8338 | |||
8339 | upstream commit | ||
8340 | |||
8341 | Add "cpath" to the ssh-agent pledge so the cleanup | ||
8342 | handler can unlink(). | ||
8343 | |||
8344 | ok djm@ | ||
8345 | |||
8346 | Upstream-ID: 9e632991d48241d56db645602d381253a3d8c29d | ||
8347 | |||
8348 | commit a90d001543f46716b6590c6dcc681d5f5322f8cf | ||
8349 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8350 | Date: Wed Dec 2 08:00:58 2015 +0000 | ||
8351 | |||
8352 | upstream commit | ||
8353 | |||
8354 | ssh-agent pledge needs proc for askpass; spotted by todd@ | ||
8355 | |||
8356 | Upstream-ID: 349aa261b29cc0e7de47ef56167769c432630b2a | ||
8357 | |||
8358 | commit d952162b3c158a8f23220587bb6c8fcda75da551 | ||
8359 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8360 | Date: Tue Dec 1 23:29:24 2015 +0000 | ||
8361 | |||
8362 | upstream commit | ||
8363 | |||
8364 | basic pledge() for ssh-agent, more refinement needed | ||
8365 | |||
8366 | Upstream-ID: 5b5b03c88162fce549e45e1b6dd833f20bbb5e13 | ||
8367 | |||
8368 | commit f0191d7c8e76e30551084b79341886d9bb38e453 | ||
8369 | Author: Damien Miller <djm@mindrot.org> | ||
8370 | Date: Mon Nov 30 10:53:25 2015 +1100 | ||
8371 | |||
8372 | Revert "stub for pledge(2) for systems that lack it" | ||
8373 | |||
8374 | This reverts commit 14c887c8393adde2d9fd437d498be30f8c98535c. | ||
8375 | |||
8376 | dtucker beat me to it :/ | ||
8377 | |||
8378 | commit 6283cc72eb0e49a3470d30e07ca99a1ba9e89676 | ||
8379 | Author: Damien Miller <djm@mindrot.org> | ||
8380 | Date: Mon Nov 30 10:37:03 2015 +1100 | ||
8381 | |||
8382 | revert 7d4c7513: bring back S/Key prototypes | ||
8383 | |||
8384 | (but leave RCSID changes) | ||
8385 | |||
8386 | commit 14c887c8393adde2d9fd437d498be30f8c98535c | ||
8387 | Author: Damien Miller <djm@mindrot.org> | ||
8388 | Date: Mon Nov 30 09:45:29 2015 +1100 | ||
8389 | |||
8390 | stub for pledge(2) for systems that lack it | ||
8391 | |||
8392 | commit 452c0b6af5d14c37553e30059bf74456012493f3 | ||
8393 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8394 | Date: Sun Nov 29 22:18:37 2015 +0000 | ||
8395 | |||
8396 | upstream commit | ||
8397 | |||
8398 | pledge, better fatal() messages; feedback deraadt@ | ||
8399 | |||
8400 | Upstream-ID: 3e00f6ccfe2b9a7a2d1dbba5409586180801488f | ||
8401 | |||
8402 | commit 6da413c085dba37127687b2617a415602505729b | ||
8403 | Author: deraadt@openbsd.org <deraadt@openbsd.org> | ||
8404 | Date: Sat Nov 28 06:50:52 2015 +0000 | ||
8405 | |||
8406 | upstream commit | ||
8407 | |||
8408 | do not leak temp file if there is no known_hosts file | ||
8409 | from craig leres, ok djm | ||
8410 | |||
8411 | Upstream-ID: c820497fd5574844c782e79405c55860f170e426 | ||
8412 | |||
8413 | commit 3ddd15e1b63a4d4f06c8ab16fbdd8a5a61764f16 | ||
8414 | Author: Darren Tucker <dtucker@zip.com.au> | ||
8415 | Date: Mon Nov 30 07:23:53 2015 +1100 | ||
8416 | |||
8417 | Add a null implementation of pledge. | ||
8418 | |||
8419 | Fixes builds on almost everything. | ||
8420 | |||
8421 | commit b1d6b3971ef256a08692efc409fc9ada719111cc | ||
8422 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8423 | Date: Sat Nov 28 06:41:03 2015 +0000 | ||
8424 | |||
8425 | upstream commit | ||
8426 | |||
8427 | don't include port number in tcpip-forward replies for | ||
8428 | requests that don't allocate a port; bz#2509 diagnosed by Ron Frederick ok | ||
8429 | markus | ||
8430 | |||
8431 | Upstream-ID: 77efad818addb61ec638b5a2362f1554e21a970a | ||
8432 | |||
8433 | commit 9080bd0b9cf10d0f13b1f642f20cb84285cb8d65 | ||
8434 | Author: deraadt@openbsd.org <deraadt@openbsd.org> | ||
8435 | Date: Fri Nov 27 00:49:31 2015 +0000 | ||
8436 | |||
8437 | upstream commit | ||
8438 | |||
8439 | pledge "stdio rpath wpath cpath fattr tty proc exec" | ||
8440 | except for the -p option (which sadly has insane semantics...) ok semarie | ||
8441 | dtucker | ||
8442 | |||
8443 | Upstream-ID: 8854bbd58279abe00f6c33f8094bdc02c8c65059 | ||
8444 | |||
8445 | commit 4d90625b229cf6b3551d81550a9861897509a65f | ||
8446 | Author: halex@openbsd.org <halex@openbsd.org> | ||
8447 | Date: Fri Nov 20 23:04:01 2015 +0000 | ||
8448 | |||
8449 | upstream commit | ||
8450 | |||
8451 | allow comment change for all supported formats | ||
8452 | |||
8453 | ok djm@ | ||
8454 | |||
8455 | Upstream-ID: 5fc477cf2f119b2d44aa9c683af16cb00bb3744b | ||
8456 | |||
8457 | commit 8ca915fc761519dd1f7766a550ec597a81db5646 | ||
8458 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8459 | Date: Fri Nov 20 01:45:29 2015 +0000 | ||
8460 | |||
8461 | upstream commit | ||
8462 | |||
8463 | add cast to make -Werror clean | ||
8464 | |||
8465 | Upstream-ID: 288db4f8f810bd475be01320c198250a04ff064d | ||
8466 | |||
8467 | commit ac9473580dcd401f8281305af98635cdaae9bf96 | ||
8468 | Author: Damien Miller <djm@mindrot.org> | ||
8469 | Date: Fri Nov 20 12:35:41 2015 +1100 | ||
8470 | |||
8471 | fix multiple authentication using S/Key w/ privsep | ||
8472 | |||
8473 | bz#2502, patch from Kevin Korb and feandil_ | ||
8474 | |||
8475 | commit 88b6fcdeb87a2fb76767854d9eb15006662dca57 | ||
8476 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8477 | Date: Thu Nov 19 08:23:27 2015 +0000 | ||
8478 | |||
8479 | upstream commit | ||
8480 | |||
8481 | ban ConnectionAttempts=0, it makes no sense and would cause | ||
8482 | ssh_connect_direct() to print an uninitialised stack variable; bz#2500 | ||
8483 | reported by dvw AT phas.ubc.ca | ||
8484 | |||
8485 | Upstream-ID: 32b5134c608270583a90b93a07b3feb3cbd5f7d5 | ||
8486 | |||
8487 | commit 964ab3ee7a8f96bdbc963d5b5a91933d6045ebe7 | ||
8488 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8489 | Date: Thu Nov 19 01:12:32 2015 +0000 | ||
8490 | |||
8491 | upstream commit | ||
8492 | |||
8493 | trailing whitespace | ||
8494 | |||
8495 | Upstream-ID: 31fe0ad7c4d08e87f1d69c79372f5e3c5cd79051 | ||
8496 | |||
8497 | commit f96516d052dbe38561f6b92b0e4365d8e24bb686 | ||
8498 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8499 | Date: Thu Nov 19 01:09:38 2015 +0000 | ||
8500 | |||
8501 | upstream commit | ||
8502 | |||
8503 | print host certificate contents at debug level | ||
8504 | |||
8505 | Upstream-ID: 39354cdd8a2b32b308fd03f98645f877f540f00d | ||
8506 | |||
8507 | commit 499cf36fecd6040e30e2912dd25655bc574739a7 | ||
8508 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8509 | Date: Thu Nov 19 01:08:55 2015 +0000 | ||
8510 | |||
8511 | upstream commit | ||
8512 | |||
8513 | move the certificate validity formatting code to | ||
8514 | sshkey.[ch] | ||
8515 | |||
8516 | Upstream-ID: f05f7c78fab20d02ff1d5ceeda533ef52e8fe523 | ||
8517 | |||
8518 | commit bcb7bc77bbb1535d1008c7714085556f3065d99d | ||
8519 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8520 | Date: Wed Nov 18 08:37:28 2015 +0000 | ||
8521 | |||
8522 | upstream commit | ||
8523 | |||
8524 | fix "ssh-keygen -l" of private key, broken in support for | ||
8525 | multiple plain keys on stdin | ||
8526 | |||
8527 | Upstream-ID: 6b3132d2c62d03d0bad6f2bcd7e2d8b7dab5cd9d | ||
8528 | |||
8529 | commit 259adb6179e23195c8f6913635ea71040d1ccd63 | ||
8530 | Author: millert@openbsd.org <millert@openbsd.org> | ||
8531 | Date: Mon Nov 16 23:47:52 2015 +0000 | ||
8532 | |||
8533 | upstream commit | ||
8534 | |||
8535 | Replace remaining calls to index(3) with strchr(3). OK | ||
8536 | jca@ krw@ | ||
8537 | |||
8538 | Upstream-ID: 33837d767a0cf1db1489b96055f9e330bc0bab6d | ||
8539 | |||
8540 | commit c56a255162c2166884539c0a1f7511575325b477 | ||
8541 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8542 | Date: Mon Nov 16 22:53:07 2015 +0000 | ||
8543 | |||
8544 | upstream commit | ||
8545 | |||
8546 | Allow fingerprinting from standard input "ssh-keygen -lf | ||
8547 | -" | ||
8548 | |||
8549 | Support fingerprinting multiple plain keys in a file and authorized_keys | ||
8550 | files too (bz#1319) | ||
8551 | |||
8552 | ok markus@ | ||
8553 | |||
8554 | Upstream-ID: 903f8b4502929d6ccf53509e4e07eae084574b77 | ||
8555 | |||
8556 | commit 5b4010d9b923cf1b46c9c7b1887c013c2967e204 | ||
8557 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8558 | Date: Mon Nov 16 22:51:05 2015 +0000 | ||
8559 | |||
8560 | upstream commit | ||
8561 | |||
8562 | always call privsep_preauth_child() regardless of whether | ||
8563 | sshd was started by root; it does important priming before sandboxing and | ||
8564 | failing to call it could result in sandbox violations later; ok markus@ | ||
8565 | |||
8566 | Upstream-ID: c8a6d0d56c42f3faab38460dc917ca0d1705d383 | ||
8567 | |||
8568 | commit 3a9f84b58b0534bbb485f1eeab75665e2d03371f | ||
8569 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8570 | Date: Mon Nov 16 22:50:01 2015 +0000 | ||
8571 | |||
8572 | upstream commit | ||
8573 | |||
8574 | improve sshkey_read() semantics; only update *cpp when a | ||
8575 | key is successfully read; ok markus@ | ||
8576 | |||
8577 | Upstream-ID: f371e78e8f4fab366cf69a42bdecedaed5d1b089 | ||
8578 | |||
8579 | commit db6f8dc5dd5655b59368efd074994d4568bc3556 | ||
8580 | Author: logan@openbsd.org <logan@openbsd.org> | ||
8581 | Date: Mon Nov 16 06:13:04 2015 +0000 | ||
8582 | |||
8583 | upstream commit | ||
8584 | |||
8585 | 1) Use xcalloc() instead of xmalloc() to check for | ||
8586 | potential overflow. (Feedback from both mmcc@ and djm@) 2) move set_size | ||
8587 | just before the for loop. (suggested by djm@) | ||
8588 | |||
8589 | OK djm@ | ||
8590 | |||
8591 | Upstream-ID: 013534c308187284756c3141f11d2c0f33c47213 | ||
8592 | |||
8593 | commit 383f10fb84a0fee3c01f9d97594f3e22aa3cd5e0 | ||
8594 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8595 | Date: Mon Nov 16 00:30:02 2015 +0000 | ||
8596 | |||
8597 | upstream commit | ||
8598 | |||
8599 | Add a new authorized_keys option "restrict" that | ||
8600 | includes all current and future key restrictions (no-*-forwarding, etc). Also | ||
8601 | add permissive versions of the existing restrictions, e.g. "no-pty" -> "pty". | ||
8602 | This simplifies the task of setting up restricted keys and ensures they are | ||
8603 | maximally-restricted, regardless of any permissions we might implement in the | ||
8604 | future. | ||
8605 | |||
8606 | Example: | ||
8607 | |||
8608 | restrict,pty,command="nethack" ssh-ed25519 AAAAC3NzaC1lZDI1... | ||
8609 | |||
8610 | Idea from Jann Horn; ok markus@ | ||
8611 | |||
8612 | Upstream-ID: 04ceb9d448e46e67e13887a7ae5ea45b4f1719d0 | ||
8613 | |||
8614 | commit e41a071f7bda6af1fb3f081bed0151235fa61f15 | ||
8615 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
8616 | Date: Sun Nov 15 23:58:04 2015 +0000 | ||
8617 | |||
8618 | upstream commit | ||
8619 | |||
8620 | correct section number for ssh-agent; | ||
8621 | |||
8622 | Upstream-ID: 44be72fd8bcc167635c49b357b1beea8d5674bd6 | ||
8623 | |||
8624 | commit 1a11670286acddcc19f5eff0966c380831fc4638 | ||
8625 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
8626 | Date: Sun Nov 15 23:54:15 2015 +0000 | ||
8627 | |||
8628 | upstream commit | ||
8629 | |||
8630 | do not confuse mandoc by presenting "Dd"; | ||
8631 | |||
8632 | Upstream-ID: 1470fce171c47b60bbc7ecd0fc717a442c2cfe65 | ||
8633 | |||
8634 | commit f361df474c49a097bfcf16d1b7b5c36fcd844b4b | ||
8635 | Author: jcs@openbsd.org <jcs@openbsd.org> | ||
8636 | Date: Sun Nov 15 22:26:49 2015 +0000 | ||
8637 | |||
8638 | upstream commit | ||
8639 | |||
8640 | Add an AddKeysToAgent client option which can be set to | ||
8641 | 'yes', 'no', 'ask', or 'confirm', and defaults to 'no'. When enabled, a | ||
8642 | private key that is used during authentication will be added to ssh-agent if | ||
8643 | it is running (with confirmation enabled if set to 'confirm'). | ||
8644 | |||
8645 | Initial version from Joachim Schipper many years ago. | ||
8646 | |||
8647 | ok markus@ | ||
8648 | |||
8649 | Upstream-ID: a680db2248e8064ec55f8be72d539458c987d5f4 | ||
8650 | |||
8651 | commit d87063d9baf5479b6e813d47dfb694a97df6f6f5 | ||
8652 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8653 | Date: Fri Nov 13 04:39:35 2015 +0000 | ||
8654 | |||
8655 | upstream commit | ||
8656 | |||
8657 | send SSH2_MSG_UNIMPLEMENTED replies to unexpected | ||
8658 | messages during KEX; bz#2949, ok dtucker@ | ||
8659 | |||
8660 | Upstream-ID: 2b3abdff344d53c8d505f45c83a7b12e84935786 | ||
8661 | |||
8662 | commit 9fd04681a1e9b0af21e08ff82eb674cf0a499bfc | ||
8663 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8664 | Date: Fri Nov 13 04:38:06 2015 +0000 | ||
8665 | |||
8666 | upstream commit | ||
8667 | |||
8668 | Support "none" as an argument for sshd_config | ||
8669 | ForceCommand and ChrootDirectory. Useful inside Match blocks to override a | ||
8670 | global default. bz#2486 ok dtucker@ | ||
8671 | |||
8672 | Upstream-ID: 7ef478d6592bc7db5c7376fc33b4443e63dccfa5 | ||
8673 | |||
8674 | commit 94bc0b72c29e511cbbc5772190d43282e5acfdfe | ||
8675 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8676 | Date: Fri Nov 13 04:34:15 2015 +0000 | ||
8677 | |||
8678 | upstream commit | ||
8679 | |||
8680 | support multiple certificates (one per line) and | ||
8681 | reading from standard input (using "-f -") for "ssh-keygen -L"; ok dtucker@ | ||
8682 | |||
8683 | Upstream-ID: ecbadeeef3926e5be6281689b7250a32a80e88db | ||
8684 | |||
8685 | commit b6b9108f5b561c83612cb97ece4134eb59fde071 | ||
8686 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8687 | Date: Fri Nov 13 02:57:46 2015 +0000 | ||
8688 | |||
8689 | upstream commit | ||
8690 | |||
8691 | list a couple more options usable in Match blocks; | ||
8692 | bz#2489 | ||
8693 | |||
8694 | Upstream-ID: e4d03f39d254db4c0cc54101921bb89fbda19879 | ||
8695 | |||
8696 | commit a7994b3f5a5a5a33b52b0a6065d08e888f0a99fb | ||
8697 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8698 | Date: Wed Nov 11 04:56:39 2015 +0000 | ||
8699 | |||
8700 | upstream commit | ||
8701 | |||
8702 | improve PEEK/POKE macros: better casts, don't multiply | ||
8703 | evaluate arguments; ok deraadt@ | ||
8704 | |||
8705 | Upstream-ID: 9a1889e19647615ededbbabab89064843ba92d3e | ||
8706 | |||
8707 | commit 7d4c7513a7f209cb303a608ac6e46b3f1dfc11ec | ||
8708 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8709 | Date: Wed Nov 11 01:48:01 2015 +0000 | ||
8710 | |||
8711 | upstream commit | ||
8712 | |||
8713 | remove prototypes for long-gone s/key support; ok | ||
8714 | dtucker@ | ||
8715 | |||
8716 | Upstream-ID: db5bed3c57118af986490ab23d399df807359a79 | ||
8717 | |||
8718 | commit 07889c75926c040b8e095949c724e66af26441cb | ||
8719 | Author: Damien Miller <djm@mindrot.org> | ||
8720 | Date: Sat Nov 14 18:44:49 2015 +1100 | ||
8721 | |||
8722 | read back from libcrypto RAND when privdropping | ||
8723 | |||
8724 | makes certain libcrypto implementations cache a /dev/urandom fd | ||
8725 | in preparation of sandboxing. Based on patch by Greg Hartman. | ||
8726 | |||
8727 | commit 1560596f44c01bb0cef977816410950ed17b8ecd | ||
8728 | Author: Darren Tucker <dtucker@zip.com.au> | ||
8729 | Date: Tue Nov 10 11:14:47 2015 +1100 | ||
8730 | |||
8731 | Fix compiler warnings in the openssl header check. | ||
8732 | |||
8733 | Noted by Austin English. | ||
8734 | |||
8735 | commit e72a8575ffe1d8adff42c9abe9ca36938acc036b | ||
8736 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
8737 | Date: Sun Nov 8 23:24:03 2015 +0000 | ||
8738 | |||
8739 | upstream commit | ||
8740 | |||
8741 | -c before -H, in SYNOPSIS and usage(); | ||
8742 | |||
8743 | Upstream-ID: 25e8c58a69e1f37fcd54ac2cd1699370acb5e404 | ||
8744 | |||
8745 | commit 3a424cdd21db08c7b0ded902f97b8f02af5aa485 | ||
8746 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8747 | Date: Sun Nov 8 22:30:20 2015 +0000 | ||
8748 | |||
8749 | upstream commit | ||
8750 | |||
8751 | Add "ssh-keyscan -c ..." flag to allow fetching | ||
8752 | certificates instead of plain keys; ok markus@ | ||
8753 | |||
8754 | Upstream-ID: 0947e2177dba92339eced9e49d3c5bf7dda69f82 | ||
8755 | |||
8756 | commit 69fead5d7cdaa73bdece9fcba80f8e8e70b90346 | ||
8757 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
8758 | Date: Sun Nov 8 22:08:38 2015 +0000 | ||
8759 | |||
8760 | upstream commit | ||
8761 | |||
8762 | remove slogin links; ok deraadt markus djm | ||
8763 | |||
8764 | Upstream-ID: 39ba08548acde4c54f2d4520c202c2a863a3c730 | ||
8765 | |||
8766 | commit 2fecfd486bdba9f51b3a789277bb0733ca36e1c0 | ||
8767 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8768 | Date: Sun Nov 8 21:59:11 2015 +0000 | ||
8769 | |||
8770 | upstream commit | ||
8771 | |||
8772 | fix OOB read in packet code caused by missing return | ||
8773 | statement found by Ben Hawkes; ok markus@ deraadt@ | ||
8774 | |||
8775 | Upstream-ID: a3e3a85434ebfa0690d4879091959591f30efc62 | ||
8776 | |||
8777 | commit 5e288923a303ca672b686908320bc5368ebec6e6 | ||
8778 | Author: mmcc@openbsd.org <mmcc@openbsd.org> | ||
8779 | Date: Fri Nov 6 00:31:41 2015 +0000 | ||
8780 | |||
8781 | upstream commit | ||
8782 | |||
8783 | 1. rlogin and rsh are long gone 2. protocol version isn't | ||
8784 | of core relevance here, and v1 is going away | ||
8785 | |||
8786 | ok markus@, deraadt@ | ||
8787 | |||
8788 | Upstream-ID: 8b46bc94cf1ca7c8c1a75b1c958b2bb38d7579c8 | ||
8789 | |||
8790 | commit 8b29008bbe97f33381d9b4b93fcfa304168d0286 | ||
8791 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
8792 | Date: Thu Nov 5 09:48:05 2015 +0000 | ||
8793 | |||
8794 | upstream commit | ||
8795 | |||
8796 | "commandline" -> "command line", since there are so few | ||
8797 | examples of the former in the pages, so many of the latter, and in some of | ||
8798 | these pages we had multiple spellings; | ||
8799 | |||
8800 | prompted by tj | ||
8801 | |||
8802 | Upstream-ID: 78459d59bff74223f8139d9001ccd56fc4310659 | ||
8803 | |||
8804 | commit 996b24cebf20077fbe5db07b3a2c20c2d9db736e | ||
8805 | Author: Darren Tucker <dtucker@zip.com.au> | ||
8806 | Date: Thu Oct 29 20:57:34 2015 +1100 | ||
8807 | |||
8808 | (re)wrap SYS_sendsyslog in ifdef. | ||
8809 | |||
8810 | Replace ifdef that went missing in commit | ||
8811 | c61b42f2678f21f05653ac2d3d241b48ab5d59ac. Fixes build on older | ||
8812 | OpenBSDs. | ||
8813 | |||
8814 | commit b67e2e76fcf1ae7c802eb27ca927e16c91a513ff | ||
8815 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8816 | Date: Thu Oct 29 08:05:17 2015 +0000 | ||
8817 | |||
8818 | upstream commit | ||
8819 | |||
8820 | regress test for "PubkeyAcceptedKeyTypes +..." inside a | ||
8821 | Match block | ||
8822 | |||
8823 | Upstream-Regress-ID: 246c37ed64a2e5704d4c158ccdca1ff700e10647 | ||
8824 | |||
8825 | commit abd9dbc3c0d8c8c7561347cfa22166156e78c077 | ||
8826 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
8827 | Date: Mon Oct 26 02:50:58 2015 +0000 | ||
8828 | |||
8829 | upstream commit | ||
8830 | |||
8831 | Fix typo certopt->certopts in shell variable. This would | ||
8832 | cause the test to hang at a host key prompt if you have an A or CNAME for | ||
8833 | "proxy" in your local domain. | ||
8834 | |||
8835 | Upstream-Regress-ID: 6ea03bcd39443a83c89e2c5606392ceb9585836a | ||
8836 | |||
8837 | commit ed08510d38aef930a061ae30d10f2a9cf233bafa | ||
8838 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8839 | Date: Thu Oct 29 08:05:01 2015 +0000 | ||
8840 | |||
8841 | upstream commit | ||
8842 | |||
8843 | Fix "PubkeyAcceptedKeyTypes +..." inside a Match block; | ||
8844 | ok dtucker@ | ||
8845 | |||
8846 | Upstream-ID: 853662c4036730b966aab77684390c47b9738c69 | ||
8847 | |||
8848 | commit a4aef3ed29071719b2af82fdf1ac3c2514f82bc5 | ||
8849 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8850 | Date: Tue Oct 27 08:54:52 2015 +0000 | ||
8851 | |||
8852 | upstream commit | ||
8853 | |||
8854 | fix execv arguments in a way less likely to cause grief | ||
8855 | for -portable; ok dtucker@ | ||
8856 | |||
8857 | Upstream-ID: 5902bf0ea0371f39f1300698dc3b8e4105fc0fc5 | ||
8858 | |||
8859 | commit 63d188175accea83305e89fafa011136ff3d96ad | ||
8860 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8861 | Date: Tue Oct 27 01:44:45 2015 +0000 | ||
8862 | |||
8863 | upstream commit | ||
8864 | |||
8865 | log certificate serial in verbose() messages to match the | ||
8866 | main auth success/fail message; ok dtucker@ | ||
8867 | |||
8868 | Upstream-ID: dfc48b417c320b97c36ff351d303c142f2186288 | ||
8869 | |||
8870 | commit 2aaba0cfd560ecfe92aa50c00750e6143842cf1f | ||
8871 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8872 | Date: Tue Oct 27 00:49:53 2015 +0000 | ||
8873 | |||
8874 | upstream commit | ||
8875 | |||
8876 | avoid de-const warning & shrink; ok dtucker@ | ||
8877 | |||
8878 | Upstream-ID: 69a85ef94832378952a22c172009cbf52aaa11db | ||
8879 | |||
8880 | commit 03239c18312b9bab7d1c3b03062c61e8bbc1ca6e | ||
8881 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
8882 | Date: Sun Oct 25 23:42:00 2015 +0000 | ||
8883 | |||
8884 | upstream commit | ||
8885 | |||
8886 | Expand tildes in filenames passed to -i before checking | ||
8887 | whether or not the identity file exists. This means that if the shell | ||
8888 | doesn't do the expansion (eg because the option and filename were given as a | ||
8889 | single argument) then we'll still add the key. bz#2481, ok markus@ | ||
8890 | |||
8891 | Upstream-ID: db1757178a14ac519e9a3e1a2dbd21113cb3bfc6 | ||
8892 | |||
8893 | commit 97e184e508dd33c37860c732c0eca3fc57698b40 | ||
8894 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
8895 | Date: Sun Oct 25 23:14:03 2015 +0000 | ||
8896 | |||
8897 | upstream commit | ||
8898 | |||
8899 | Do not prepend "exec" to the shell command run by "Match | ||
8900 | exec" in a config file. It's an unnecessary optimization from repurposed | ||
8901 | ProxyCommand code and prevents some things working with some shells. | ||
8902 | bz#2471, pointed out by res at qoxp.net. ok markus@ | ||
8903 | |||
8904 | Upstream-ID: a1ead25ae336bfa15fb58d8c6b5589f85b4c33a3 | ||
8905 | |||
8906 | commit 8db134e7f457bcb069ec72bc4ee722e2af557c69 | ||
8907 | Author: Darren Tucker <dtucker@zip.com.au> | ||
8908 | Date: Thu Oct 29 10:48:23 2015 +1100 | ||
8909 | |||
8910 | Prevent name collisions with system glob (bz#2463) | ||
8911 | |||
8912 | Move glob.h from includes.h to the only caller (sftp) and override the | ||
8913 | names for the symbols. This prevents name collisions with the system glob | ||
8914 | in the case where something other than ssh uses it (eg kerberos). With | ||
8915 | jjelen at redhat.com, ok djm@ | ||
8916 | |||
8917 | commit 86c10dbbef6a5800d2431a66cf7f41a954bb62b5 | ||
8918 | Author: dtucker@openbsd.org <dtucker@openbsd.org> | ||
8919 | Date: Fri Oct 23 02:22:01 2015 +0000 | ||
8920 | |||
8921 | upstream commit | ||
8922 | |||
8923 | Update expected group sizes to match recent code changes. | ||
8924 | |||
8925 | Upstream-Regress-ID: 0004f0ea93428969fe75bcfff0d521c553977794 | ||
8926 | |||
8927 | commit 9ada37d36003a77902e90a3214981e417457cf13 | ||
8928 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8929 | Date: Sat Oct 24 22:56:19 2015 +0000 | ||
8930 | |||
8931 | upstream commit | ||
8932 | |||
8933 | fix keyscan output for multiple hosts/addrs on one line | ||
8934 | when host hashing or a non standard port is in use; bz#2479 ok dtucker@ | ||
8935 | |||
8936 | Upstream-ID: 5321dabfaeceba343da3c8a8b5754c6f4a0a307b | ||
8937 | |||
8938 | commit 44fc7cd7dcef6c52c6b7e9ff830dfa32879bd319 | ||
8939 | Author: djm@openbsd.org <djm@openbsd.org> | ||
8940 | Date: Sat Oct 24 22:52:22 2015 +0000 | ||
8941 | |||
8942 | upstream commit | ||
8943 | |||
8944 | skip "Could not chdir to home directory" message when | ||
8945 | chrooted | ||
8946 | |||
8947 | patch from Christian Hesse in bz#2485 ok dtucker@ | ||
8948 | |||
8949 | Upstream-ID: 86783c1953da426dff5b03b03ce46e699d9e5431 | ||
8950 | |||
8951 | commit a820a8618ec44735dabc688fab96fba38ad66bb2 | ||
8952 | Author: sthen@openbsd.org <sthen@openbsd.org> | ||
8953 | Date: Sat Oct 24 08:34:09 2015 +0000 | ||
8954 | |||
8955 | upstream commit | ||
8956 | |||
8957 | Handle the split of tun(4) "link0" into tap(4) in ssh | ||
8958 | tun-forwarding. Adapted from portable (using separate devices for this is the | ||
8959 | normal case in most OS). ok djm@ | ||
8960 | |||
8961 | Upstream-ID: 90facf4c59ce73d6741db1bc926e578ef465cd39 | ||
8962 | |||
8963 | commit 66d2e229baa9fe57b868c373b05f7ff3bb20055b | ||
8964 | Author: gsoares@openbsd.org <gsoares@openbsd.org> | ||
8965 | Date: Wed Oct 21 11:33:03 2015 +0000 | ||
8966 | |||
8967 | upstream commit | ||
8968 | |||
8969 | fix memory leak in error path ok djm@ | ||
8970 | |||
8971 | Upstream-ID: dd2f402b0a0029b755df029fc7f0679e1365ce35 | ||
8972 | |||
8973 | commit 7d6c0362039ceacdc1366b5df29ad5d2693c13e5 | ||
8974 | Author: mmcc@openbsd.org <mmcc@openbsd.org> | ||
8975 | Date: Tue Oct 20 23:24:25 2015 +0000 | ||
8976 | |||
8977 | upstream commit | ||
8978 | |||
8979 | Compare pointers to NULL rather than 0. | ||
8980 | |||
8981 | ok djm@ | ||
8982 | |||
8983 | Upstream-ID: 21616cfea27eda65a06e772cc887530b9a1a27f8 | ||
8984 | |||
8985 | commit f98a09cacff7baad8748c9aa217afd155a4d493f | ||
8986 | Author: mmcc@openbsd.org <mmcc@openbsd.org> | ||
8987 | Date: Tue Oct 20 03:36:35 2015 +0000 | ||
8988 | |||
8989 | upstream commit | ||
8990 | |||
8991 | Replace a function-local allocation with stack memory. | ||
8992 | |||
8993 | ok djm@ | ||
8994 | |||
8995 | Upstream-ID: c09fbbab637053a2ab9f33ca142b4e20a4c5a17e | ||
8996 | |||
8997 | commit ac908c1eeacccfa85659594d92428659320fd57e | ||
8998 | Author: Damien Miller <djm@mindrot.org> | ||
8999 | Date: Thu Oct 22 09:35:24 2015 +1100 | ||
9000 | |||
9001 | turn off PrintLastLog when --disable-lastlog | ||
9002 | |||
9003 | bz#2278 from Brent Paulson | ||
9004 | |||
9005 | commit b56deb847f4a0115a8bf488bf6ee8524658162fd | ||
9006 | Author: djm@openbsd.org <djm@openbsd.org> | ||
9007 | Date: Fri Oct 16 22:32:22 2015 +0000 | ||
9008 | |||
9009 | upstream commit | ||
9010 | |||
9011 | increase the minimum modulus that we will send or accept in | ||
9012 | diffie-hellman-group-exchange to 2048 bits; ok markus@ | ||
9013 | |||
9014 | Upstream-ID: 06dce7a24c17b999a0f5fadfe95de1ed6a1a9b6a | ||
9015 | |||
9016 | commit 5ee0063f024bf5b3f3ffb275b8cd20055d62b4b9 | ||
9017 | Author: djm@openbsd.org <djm@openbsd.org> | ||
9018 | Date: Fri Oct 16 18:40:49 2015 +0000 | ||
9019 | |||
9020 | upstream commit | ||
9021 | |||
9022 | better handle anchored FQDNs (e.g. 'cvs.openbsd.org.') in | ||
9023 | hostname canonicalisation - treat them as already canonical and remove the | ||
9024 | trailing '.' before matching ssh_config; ok markus@ | ||
9025 | |||
9026 | Upstream-ID: f7619652e074ac3febe8363f19622aa4853b679a | ||
9027 | |||
9028 | commit e92c499a75477ecfe94dd7b4aed89f20b1fac5a7 | ||
9029 | Author: mmcc@openbsd.org <mmcc@openbsd.org> | ||
9030 | Date: Fri Oct 16 17:07:24 2015 +0000 | ||
9031 | |||
9032 | upstream commit | ||
9033 | |||
9034 | 0 -> NULL when comparing with a char*. | ||
9035 | |||
9036 | ok dtucker@, djm@. | ||
9037 | |||
9038 | Upstream-ID: a928e9c21c0a9020727d99738ff64027c1272300 | ||
9039 | |||
9040 | commit b1d38a3cc6fe349feb8d16a5f520ef12d1de7cb2 | ||
9041 | Author: djm@openbsd.org <djm@openbsd.org> | ||
9042 | Date: Thu Oct 15 23:51:40 2015 +0000 | ||
9043 | |||
9044 | upstream commit | ||
9045 | |||
9046 | fix some signed/unsigned integer type mismatches in | ||
9047 | format strings; reported by Nicholas Lemonias | ||
9048 | |||
9049 | Upstream-ID: 78cd55420a0eef68c4095bdfddd1af84afe5f95c | ||
9050 | |||
9051 | commit 1a2663a15d356bb188196b6414b4c50dc12fd42b | ||
9052 | Author: djm@openbsd.org <djm@openbsd.org> | ||
9053 | Date: Thu Oct 15 23:08:23 2015 +0000 | ||
9054 | |||
9055 | upstream commit | ||
9056 | |||
9057 | argument to sshkey_from_private() and sshkey_demote() | ||
9058 | can't be NULL | ||
9059 | |||
9060 | Upstream-ID: 0111245b1641d387977a9b38da15916820a5fd1f | ||
9061 | |||
9062 | commit 0f754e29dd3760fc0b172c1220f18b753fb0957e | ||
9063 | Author: Damien Miller <djm@mindrot.org> | ||
9064 | Date: Fri Oct 16 10:53:14 2015 +1100 | ||
9065 | |||
9066 | need va_copy before va_start | ||
9067 | |||
9068 | reported by Nicholas Lemonias | ||
9069 | |||
9070 | commit eb6c50d82aa1f0d3fc95f5630ea69761e918bfcd | ||
9071 | Author: Damien Miller <djm@mindrot.org> | ||
9072 | Date: Thu Oct 15 15:48:28 2015 -0700 | ||
9073 | |||
9074 | fix compilation on systems without SYMLOOP_MAX | ||
9075 | |||
9076 | commit fafe1d84a210fb3dae7744f268059cc583db8c12 | ||
9077 | Author: Damien Miller <djm@mindrot.org> | ||
9078 | Date: Wed Oct 14 09:22:15 2015 -0700 | ||
9079 | |||
9080 | s/SANDBOX_TAME/SANDBOX_PLEDGE/g | ||
9081 | |||
9082 | commit 8f22911027ff6c17d7226d232ccd20727f389310 | ||
9083 | Author: Damien Miller <djm@mindrot.org> | ||
9084 | Date: Wed Oct 14 08:28:19 2015 +1100 | ||
9085 | |||
9086 | upstream commit | ||
9087 | |||
9088 | revision 1.20 | ||
9089 | date: 2015/10/13 20:55:37; author: millert; state: Exp; lines: +2 -2; commitid: X39sl5ay1czgFIgp; | ||
9090 | In rev 1.15 the sizeof argument was fixed in a strlcat() call but | ||
9091 | the truncation check immediately following it was not updated to | ||
9092 | match. Not an issue in practice since the buffers are the same | ||
9093 | size. OK deraadt@ | ||
9094 | |||
9095 | commit 23fa695bb735f54f04d46123662609edb6c76767 | ||
9096 | Author: Damien Miller <djm@mindrot.org> | ||
9097 | Date: Wed Oct 14 08:27:51 2015 +1100 | ||
9098 | |||
9099 | upstream commit | ||
9100 | |||
9101 | revision 1.19 | ||
9102 | date: 2015/01/16 16:48:51; author: deraadt; state: Exp; lines: +3 -3; commitid: 0DYulI8hhujBHMcR; | ||
9103 | Move to the <limits.h> universe. | ||
9104 | review by millert, binary checking process with doug, concept with guenther | ||
9105 | |||
9106 | commit c71be375a69af00c2d0a0c24d8752bec12d8fd1b | ||
9107 | Author: Damien Miller <djm@mindrot.org> | ||
9108 | Date: Wed Oct 14 08:27:08 2015 +1100 | ||
9109 | |||
9110 | upstream commit | ||
9111 | |||
9112 | revision 1.18 | ||
9113 | date: 2014/10/19 03:56:28; author: doug; state: Exp; lines: +9 -9; commitid: U6QxmtbXrGoc02S5; | ||
9114 | Revert last commit due to changed semantics found by make release. | ||
9115 | |||
9116 | commit c39ad23b06e9aecc3ff788e92f787a08472905b1 | ||
9117 | Author: Damien Miller <djm@mindrot.org> | ||
9118 | Date: Wed Oct 14 08:26:24 2015 +1100 | ||
9119 | |||
9120 | upstream commit | ||
9121 | |||
9122 | revision 1.17 | ||
9123 | date: 2014/10/18 20:43:52; author: doug; state: Exp; lines: +10 -10; commitid: I74hI1tVZtsspKEt; | ||
9124 | Better POSIX compliance in realpath(3). | ||
9125 | |||
9126 | millert@ made changes to realpath.c based on FreeBSD's version. I merged | ||
9127 | Todd's changes into dl_realpath.c. | ||
9128 | |||
9129 | ok millert@, guenther@ | ||
9130 | |||
9131 | commit e929a43f957dbd1254aca2aaf85c8c00cbfc25f4 | ||
9132 | Author: Damien Miller <djm@mindrot.org> | ||
9133 | Date: Wed Oct 14 08:25:55 2015 +1100 | ||
9134 | |||
9135 | upstream commit | ||
9136 | |||
9137 | revision 1.16 | ||
9138 | date: 2013/04/05 12:59:54; author: kurt; state: Exp; lines: +3 -1; | ||
9139 | - Add comments regarding copies of these files also in libexec/ld.so | ||
9140 | okay guenther@ | ||
9141 | |||
9142 | commit 5225db68e58a1048cb17f0e36e0d33bc4a8fc410 | ||
9143 | Author: Damien Miller <djm@mindrot.org> | ||
9144 | Date: Wed Oct 14 08:25:32 2015 +1100 | ||
9145 | |||
9146 | upstream commit | ||
9147 | |||
9148 | revision 1.15 | ||
9149 | date: 2012/09/13 15:39:05; author: deraadt; state: Exp; lines: +2 -2; | ||
9150 | specify the bounds of the dst to strlcat (both values were static and | ||
9151 | equal, but it is more correct) | ||
9152 | from Michal Mazurek | ||
9153 | |||
9154 | commit 7365fe5b4859de2305e40ea132da3823830fa710 | ||
9155 | Author: Damien Miller <djm@mindrot.org> | ||
9156 | Date: Wed Oct 14 08:25:09 2015 +1100 | ||
9157 | |||
9158 | upstream commit | ||
9159 | |||
9160 | revision 1.14 | ||
9161 | date: 2011/07/24 21:03:00; author: miod; state: Exp; lines: +35 -13; | ||
9162 | Recent Single Unix will malloc memory if the second argument of realpath() | ||
9163 | is NULL, and third-party software is starting to rely upon this. | ||
9164 | Adapted from FreeBSD via Jona Joachim (jaj ; hcl-club , .lu), with minor | ||
9165 | tweaks from nicm@ and yours truly. | ||
9166 | |||
9167 | commit e679c09cd1951f963793aa3d9748d1c3fdcf808f | ||
9168 | Author: djm@openbsd.org <djm@openbsd.org> | ||
9169 | Date: Tue Oct 13 16:15:21 2015 +0000 | ||
9170 | |||
9171 | upstream commit | ||
9172 | |||
9173 | apply PubkeyAcceptedKeyTypes filtering earlier, so all | ||
9174 | skipped keys are noted before pubkey authentication starts. ok dtucker@ | ||
9175 | |||
9176 | Upstream-ID: ba4f52f54268a421a2a5f98bb375403f4cb044b8 | ||
9177 | |||
9178 | commit 179c353f564ec7ada64b87730b25fb41107babd7 | ||
9179 | Author: djm@openbsd.org <djm@openbsd.org> | ||
9180 | Date: Tue Oct 13 00:21:27 2015 +0000 | ||
9181 | |||
9182 | upstream commit | ||
9183 | |||
9184 | free the correct IV length, don't assume it's always the | ||
9185 | cipher blocksize; ok dtucker@ | ||
9186 | |||
9187 | Upstream-ID: c260d9e5ec73628d9ff4b067fbb060eff5a7d298 | ||
9188 | |||
9189 | commit 2539dce2a049a8f6bb0d44cac51f07ad48e691d3 | ||
9190 | Author: deraadt@openbsd.org <deraadt@openbsd.org> | ||
9191 | Date: Fri Oct 9 01:37:08 2015 +0000 | ||
9192 | |||
9193 | upstream commit | ||
9194 | |||
9195 | Change all tame callers to namechange to pledge(2). | ||
9196 | |||
9197 | Upstream-ID: 17e654fc27ceaf523c60f4ffd9ec7ae4e7efc7f2 | ||
9198 | |||
9199 | commit 9846a2f4067383bb76b4e31a9d2303e0a9c13a73 | ||
9200 | Author: Damien Miller <djm@mindrot.org> | ||
9201 | Date: Thu Oct 8 04:30:48 2015 +1100 | ||
9202 | |||
9203 | hook tame(2) sandbox up to build | ||
9204 | |||
9205 | OpenBSD only for now | ||
9206 | |||
9207 | commit 0c46bbe68b70bdf0d6d20588e5847e71f3739fe6 | ||
9208 | Author: djm@openbsd.org <djm@openbsd.org> | ||
9209 | Date: Wed Oct 7 15:59:12 2015 +0000 | ||
9210 | |||
9211 | upstream commit | ||
9212 | |||
9213 | include PubkeyAcceptedKeyTypes in ssh -G config dump | ||
9214 | |||
9215 | Upstream-ID: 6c097ce6ffebf6fe393fb7988b5d152a5d6b36bb | ||
9216 | |||
9217 | commit bdcb73fb7641b1cf73c0065d1a0dd57b1e8b778e | ||
9218 | Author: sobrado@openbsd.org <sobrado@openbsd.org> | ||
9219 | Date: Wed Oct 7 14:45:30 2015 +0000 | ||
9220 | |||
9221 | upstream commit | ||
9222 | |||
9223 | UsePrivilegeSeparation defaults to sandbox now. | ||
9224 | |||
9225 | ok djm@ | ||
9226 | |||
9227 | Upstream-ID: bff136c38bcae89df82e044d2f42de21e1ad914f | ||
9228 | |||
9229 | commit 2905d6f99c837bb699b6ebc61711b19acd030709 | ||
9230 | Author: djm@openbsd.org <djm@openbsd.org> | ||
9231 | Date: Wed Oct 7 00:54:06 2015 +0000 | ||
9232 | |||
9233 | upstream commit | ||
9234 | |||
9235 | don't try to change tun device flags if they are already | ||
9236 | what we need; makes it possible to use tun/tap networking as non- root user | ||
9237 | if device permissions and interface flags are pre-established; based on patch | ||
9238 | by Ossi Herrala | ||
9239 | |||
9240 | Upstream-ID: 89099ac4634cd477b066865acf54cb230780fd21 | ||
9241 | |||
9242 | commit 0dc74512bdb105b048883f07de538b37e5e024d4 | ||
9243 | Author: Damien Miller <djm@mindrot.org> | ||
9244 | Date: Mon Oct 5 18:33:05 2015 -0700 | ||
9245 | |||
9246 | unbreak merge botch | ||
9247 | |||
9248 | commit fdd020e86439afa7f537e2429d29d4b744c94331 | ||
9249 | Author: djm@openbsd.org <djm@openbsd.org> | ||
9250 | Date: Tue Oct 6 01:20:59 2015 +0000 | ||
9251 | |||
9252 | upstream commit | ||
9253 | |||
9254 | adapt to recent sshkey_parse_private_fileblob() API | ||
9255 | change | ||
9256 | |||
9257 | Upstream-Regress-ID: 5c0d818da511e33e0abf6a92a31bd7163b7ad988 | ||
9258 | |||
9259 | commit 21ae8ee3b630b0925f973db647a1b9aa5fcdd4c5 | ||
9260 | Author: djm@openbsd.org <djm@openbsd.org> | ||
9261 | Date: Thu Sep 24 07:15:39 2015 +0000 | ||
9262 | |||
9263 | upstream commit | ||
9264 | |||
9265 | fix command-line option to match what was actually | ||
9266 | committed | ||
9267 | |||
9268 | Upstream-Regress-ID: 3e8c24a2044e8afd37e7ce17b69002ca817ac699 | ||
9269 | |||
9270 | commit e14ac43b75e68f1ffbd3e1a5e44143c8ae578dcd | ||
9271 | Author: djm@openbsd.org <djm@openbsd.org> | ||
9272 | Date: Thu Sep 24 06:16:53 2015 +0000 | ||
9273 | |||
9274 | upstream commit | ||
9275 | |||
9276 | regress test for CertificateFile; patch from Meghana Bhat | ||
9277 | via bz#2436 | ||
9278 | |||
9279 | Upstream-Regress-ID: e7a6e980cbe0f8081ba2e83de40d06c17be8bd25 | ||
9280 | |||
9281 | commit 905b054ed24e0d5b4ef226ebf2c8bfc02ae6d4ad | ||
9282 | Author: djm@openbsd.org <djm@openbsd.org> | ||
9283 | Date: Mon Oct 5 17:11:21 2015 +0000 | ||
9284 | |||
9285 | upstream commit | ||
9286 | |||
9287 | some more bzero->explicit_bzero, from Michael McConville | ||
9288 | |||
9289 | Upstream-ID: 17f19545685c33327db2efdc357c1c9225ff00d0 | ||
9290 | |||
9291 | commit b007159a0acdbcf65814b3ee05dbe2cf4ea46011 | ||
9292 | Author: deraadt@openbsd.org <deraadt@openbsd.org> | ||
9293 | Date: Fri Oct 2 15:52:55 2015 +0000 | ||
9294 | |||
9295 | upstream commit | ||
9296 | |||
9297 | fix email | ||
9298 | |||
9299 | Upstream-ID: 72150f2d54b94de14ebef1ea054ef974281bf834 | ||
9300 | |||
9301 | commit b19e1b4ab11884c4f62aee9f8ab53127a4732658 | ||
9302 | Author: deraadt@openbsd.org <deraadt@openbsd.org> | ||
9303 | Date: Fri Oct 2 01:39:52 2015 +0000 | ||
9304 | |||
9305 | upstream commit | ||
9306 | |||
9307 | a sandbox using tame ok djm | ||
9308 | |||
9309 | Upstream-ID: 4ca24e47895e72f5daaa02f3e3d3e5ca2d820fa3 | ||
9310 | |||
9311 | commit c61b42f2678f21f05653ac2d3d241b48ab5d59ac | ||
9312 | Author: deraadt@openbsd.org <deraadt@openbsd.org> | ||
9313 | Date: Fri Oct 2 01:39:26 2015 +0000 | ||
9314 | |||
9315 | upstream commit | ||
9316 | |||
9317 | re-order system calls in order of risk, ok i'll be | ||
9318 | honest, ordered this way they look like tame... ok djm | ||
9319 | |||
9320 | Upstream-ID: 42a1e6d251fd8be13c8262bee026059ae6328813 | ||
9321 | |||
9322 | commit c5f7c0843cb6e6074a93c8ac34e49ce33a6f5546 | ||
9323 | Author: jmc@openbsd.org <jmc@openbsd.org> | ||
9324 | Date: Fri Sep 25 18:19:54 2015 +0000 | ||
9325 | |||
9326 | upstream commit | ||
9327 | |||
9328 | some certificatefile tweaks; ok djm | ||
9329 | |||
9330 | Upstream-ID: 0e5a7852c28c05fc193419cc7e50e64c1c535af0 | ||
9331 | |||
9332 | commit 4e44a79a07d4b88b6a4e5e8c1bed5f58c841b1b8 | ||
9333 | Author: djm@openbsd.org <djm@openbsd.org> | ||
9334 | Date: Thu Sep 24 06:15:11 2015 +0000 | ||
9335 | |||
9336 | upstream commit | ||
9337 | |||
9338 | add ssh_config CertificateFile option to explicitly list | ||
9339 | a certificate; patch from Meghana Bhat on bz#2436; ok markus@ | ||
9340 | |||
9341 | Upstream-ID: 58648ec53c510b41c1f46d8fe293aadc87229ab8 | ||
9342 | |||
9343 | commit e3cbb06ade83c72b640a53728d362bbefa0008e2 | ||
9344 | Author: sobrado@openbsd.org <sobrado@openbsd.org> | ||
9345 | Date: Tue Sep 22 08:33:23 2015 +0000 | ||
9346 | |||
9347 | upstream commit | ||
9348 | |||
9349 | fix two typos. | ||
9350 | |||
9351 | Upstream-ID: 424402c0d8863a11b51749bacd7f8d932083b709 | ||
@@ -13,7 +13,7 @@ OpenSSL) | |||
13 | Zlib 1.1.4 or 1.2.1.2 or greater (earlier 1.2.x versions have problems): | 13 | Zlib 1.1.4 or 1.2.1.2 or greater (earlier 1.2.x versions have problems): |
14 | http://www.gzip.org/zlib/ | 14 | http://www.gzip.org/zlib/ |
15 | 15 | ||
16 | libcrypto (LibreSSL or OpenSSL >= 0.9.8f < 1.1.0) | 16 | libcrypto (LibreSSL or OpenSSL >= 1.0.1 < 1.1.0) |
17 | LibreSSL http://www.libressl.org/ ; or | 17 | LibreSSL http://www.libressl.org/ ; or |
18 | OpenSSL http://www.openssl.org/ | 18 | OpenSSL http://www.openssl.org/ |
19 | 19 | ||
@@ -91,7 +91,7 @@ http://nlnetlabs.nl/projects/ldns/ | |||
91 | Autoconf: | 91 | Autoconf: |
92 | 92 | ||
93 | If you modify configure.ac or configure doesn't exist (eg if you checked | 93 | If you modify configure.ac or configure doesn't exist (eg if you checked |
94 | the code out of CVS yourself) then you will need autoconf-2.69 to rebuild | 94 | the code out of git yourself) then you will need autoconf-2.69 to rebuild |
95 | the automatically generated files by running "autoreconf". Earlier | 95 | the automatically generated files by running "autoreconf". Earlier |
96 | versions may also work but this is not guaranteed. | 96 | versions may also work but this is not guaranteed. |
97 | 97 | ||
@@ -103,6 +103,13 @@ Native BSM support is known to exist in Solaris from at least 2.5.1, | |||
103 | FreeBSD 6.1 and OS X. Alternatively, you may use the OpenBSM | 103 | FreeBSD 6.1 and OS X. Alternatively, you may use the OpenBSM |
104 | implementation (http://www.openbsm.org). | 104 | implementation (http://www.openbsm.org). |
105 | 105 | ||
106 | makedepend: | ||
107 | |||
108 | https://www.x.org/archive/individual/util/ | ||
109 | |||
110 | If you are making significant changes to the code you may need to rebuild | ||
111 | the dependency (.depend) file using "make depend", which requires the | ||
112 | "makedepend" tool from the X11 distribution. | ||
106 | 113 | ||
107 | 2. Building / Installation | 114 | 2. Building / Installation |
108 | -------------------------- | 115 | -------------------------- |
@@ -162,13 +169,11 @@ also be enabled in sshd_config (refer to the UsePAM directive). | |||
162 | 169 | ||
163 | --with-prngd-socket=/some/file allows you to enable EGD or PRNGD | 170 | --with-prngd-socket=/some/file allows you to enable EGD or PRNGD |
164 | support and to specify a PRNGd socket. Use this if your Unix lacks | 171 | support and to specify a PRNGd socket. Use this if your Unix lacks |
165 | /dev/random and you don't want to use OpenSSH's builtin entropy | 172 | /dev/random. |
166 | collection support. | ||
167 | 173 | ||
168 | --with-prngd-port=portnum allows you to enable EGD or PRNGD support | 174 | --with-prngd-port=portnum allows you to enable EGD or PRNGD support |
169 | and to specify a EGD localhost TCP port. Use this if your Unix lacks | 175 | and to specify a EGD localhost TCP port. Use this if your Unix lacks |
170 | /dev/random and you don't want to use OpenSSH's builtin entropy | 176 | /dev/random. |
171 | collection support. | ||
172 | 177 | ||
173 | --with-lastlog=FILE will specify the location of the lastlog file. | 178 | --with-lastlog=FILE will specify the location of the lastlog file. |
174 | ./configure searches a few locations for lastlog, but may not find | 179 | ./configure searches a few locations for lastlog, but may not find |
@@ -204,8 +209,7 @@ created. | |||
204 | --with-xauth=PATH specifies the location of the xauth binary | 209 | --with-xauth=PATH specifies the location of the xauth binary |
205 | 210 | ||
206 | --with-ssl-dir=DIR allows you to specify where your Libre/OpenSSL | 211 | --with-ssl-dir=DIR allows you to specify where your Libre/OpenSSL |
207 | libraries | 212 | libraries are installed. |
208 | are installed. | ||
209 | 213 | ||
210 | --with-ssl-engine enables Libre/OpenSSL's (hardware) ENGINE support | 214 | --with-ssl-engine enables Libre/OpenSSL's (hardware) ENGINE support |
211 | 215 | ||
diff --git a/Makefile.in b/Makefile.in index 08b989a4d..1afb4f798 100644 --- a/Makefile.in +++ b/Makefile.in | |||
@@ -1,5 +1,3 @@ | |||
1 | # $Id: Makefile.in,v 1.365 2014/08/30 06:23:07 djm Exp $ | ||
2 | |||
3 | # uncomment if you run a non bourne compatable shell. Ie. csh | 1 | # uncomment if you run a non bourne compatable shell. Ie. csh |
4 | #SHELL = @SH@ | 2 | #SHELL = @SH@ |
5 | 3 | ||
@@ -54,16 +52,25 @@ AR=@AR@ | |||
54 | AWK=@AWK@ | 52 | AWK=@AWK@ |
55 | RANLIB=@RANLIB@ | 53 | RANLIB=@RANLIB@ |
56 | INSTALL=@INSTALL@ | 54 | INSTALL=@INSTALL@ |
57 | PERL=@PERL@ | ||
58 | SED=@SED@ | 55 | SED=@SED@ |
59 | ENT=@ENT@ | 56 | ENT=@ENT@ |
60 | XAUTH_PATH=@XAUTH_PATH@ | 57 | XAUTH_PATH=@XAUTH_PATH@ |
61 | LDFLAGS=-L. -Lopenbsd-compat/ @LDFLAGS@ | 58 | LDFLAGS=-L. -Lopenbsd-compat/ @LDFLAGS@ |
62 | EXEEXT=@EXEEXT@ | 59 | EXEEXT=@EXEEXT@ |
63 | MANFMT=@MANFMT@ | 60 | MANFMT=@MANFMT@ |
61 | MKDIR_P=@MKDIR_P@ | ||
64 | 62 | ||
65 | TARGETS=ssh$(EXEEXT) sshd$(EXEEXT) ssh-add$(EXEEXT) ssh-keygen$(EXEEXT) ssh-keyscan${EXEEXT} ssh-keysign${EXEEXT} ssh-pkcs11-helper$(EXEEXT) ssh-agent$(EXEEXT) scp$(EXEEXT) sftp-server$(EXEEXT) sftp$(EXEEXT) | 63 | TARGETS=ssh$(EXEEXT) sshd$(EXEEXT) ssh-add$(EXEEXT) ssh-keygen$(EXEEXT) ssh-keyscan${EXEEXT} ssh-keysign${EXEEXT} ssh-pkcs11-helper$(EXEEXT) ssh-agent$(EXEEXT) scp$(EXEEXT) sftp-server$(EXEEXT) sftp$(EXEEXT) |
66 | 64 | ||
65 | XMSS_OBJS=\ | ||
66 | ssh-xmss.o \ | ||
67 | sshkey-xmss.o \ | ||
68 | xmss_commons.o \ | ||
69 | xmss_fast.o \ | ||
70 | xmss_hash.o \ | ||
71 | xmss_hash_address.o \ | ||
72 | xmss_wots.o | ||
73 | |||
67 | LIBOPENSSH_OBJS=\ | 74 | LIBOPENSSH_OBJS=\ |
68 | ssh_api.o \ | 75 | ssh_api.o \ |
69 | ssherr.o \ | 76 | ssherr.o \ |
@@ -73,7 +80,8 @@ LIBOPENSSH_OBJS=\ | |||
73 | sshbuf-misc.o \ | 80 | sshbuf-misc.o \ |
74 | sshbuf-getput-crypto.o \ | 81 | sshbuf-getput-crypto.o \ |
75 | krl.o \ | 82 | krl.o \ |
76 | bitmap.o | 83 | bitmap.o \ |
84 | ${XMSS_OBJS} | ||
77 | 85 | ||
78 | LIBSSH_OBJS=${LIBOPENSSH_OBJS} \ | 86 | LIBSSH_OBJS=${LIBOPENSSH_OBJS} \ |
79 | authfd.o authfile.o bufaux.o bufbn.o bufec.o buffer.o \ | 87 | authfd.o authfile.o bufaux.o bufbn.o bufec.o buffer.o \ |
@@ -88,7 +96,7 @@ LIBSSH_OBJS=${LIBOPENSSH_OBJS} \ | |||
88 | ssh-pkcs11.o smult_curve25519_ref.o \ | 96 | ssh-pkcs11.o smult_curve25519_ref.o \ |
89 | poly1305.o chacha.o cipher-chachapoly.o \ | 97 | poly1305.o chacha.o cipher-chachapoly.o \ |
90 | ssh-ed25519.o digest-openssl.o digest-libc.o hmac.o \ | 98 | ssh-ed25519.o digest-openssl.o digest-libc.o hmac.o \ |
91 | sc25519.o ge25519.o fe25519.o ed25519.o verify.o hash.o blocks.o \ | 99 | sc25519.o ge25519.o fe25519.o ed25519.o verify.o hash.o \ |
92 | kex.o kexdh.o kexgex.o kexecdh.o kexc25519.o \ | 100 | kex.o kexdh.o kexgex.o kexecdh.o kexc25519.o \ |
93 | kexdhc.o kexgexc.o kexecdhc.o kexc25519c.o \ | 101 | kexdhc.o kexgexc.o kexecdhc.o kexc25519c.o \ |
94 | kexdhs.o kexgexs.o kexecdhs.o kexc25519s.o \ | 102 | kexdhs.o kexgexs.o kexecdhs.o kexc25519s.o \ |
@@ -219,13 +227,6 @@ $(CONFIGFILES): $(CONFIGFILES_IN) | |||
219 | moduli: | 227 | moduli: |
220 | echo | 228 | echo |
221 | 229 | ||
222 | # special case target for umac128 | ||
223 | umac128.o: umac.c | ||
224 | $(CC) $(CFLAGS) $(CPPFLAGS) -o umac128.o -c $(srcdir)/umac.c \ | ||
225 | -DUMAC_OUTPUT_LEN=16 -Dumac_new=umac128_new \ | ||
226 | -Dumac_update=umac128_update -Dumac_final=umac128_final \ | ||
227 | -Dumac_delete=umac128_delete -Dumac_ctx=umac128_ctx | ||
228 | |||
229 | clean: regressclean | 230 | clean: regressclean |
230 | rm -f *.o *.a $(TARGETS) logintest config.cache config.log | 231 | rm -f *.o *.a $(TARGETS) logintest config.cache config.log |
231 | rm -f *.out core survey | 232 | rm -f *.out core survey |
@@ -299,9 +300,21 @@ catman-do: | |||
299 | >$$base.0 ; \ | 300 | >$$base.0 ; \ |
300 | done | 301 | done |
301 | 302 | ||
302 | distprep: catman-do | 303 | depend: depend-rebuild |
304 | rm -f .depend.bak | ||
305 | |||
306 | depend-rebuild: | ||
307 | rm -f config.h | ||
308 | touch config.h | ||
309 | makedepend -w1000 -Y. -f .depend *.c 2>/dev/null | ||
310 | rm -f config.h | ||
311 | |||
312 | depend-check: depend-rebuild | ||
313 | cmp .depend .depend.bak || (echo .depend stale && exit 1) | ||
314 | |||
315 | distprep: catman-do depend-check | ||
303 | $(AUTORECONF) | 316 | $(AUTORECONF) |
304 | -rm -rf autom4te.cache | 317 | -rm -rf autom4te.cache .depend.bak |
305 | 318 | ||
306 | install: $(CONFIGFILES) $(MANPAGES) $(TARGETS) install-files install-sysconf host-key check-config | 319 | install: $(CONFIGFILES) $(MANPAGES) $(TARGETS) install-files install-sysconf host-key check-config |
307 | install-nokeys: $(CONFIGFILES) $(MANPAGES) $(TARGETS) install-files install-sysconf | 320 | install-nokeys: $(CONFIGFILES) $(MANPAGES) $(TARGETS) install-files install-sysconf |
@@ -311,14 +324,13 @@ check-config: | |||
311 | -$(DESTDIR)$(sbindir)/sshd -t -f $(DESTDIR)$(sysconfdir)/sshd_config | 324 | -$(DESTDIR)$(sbindir)/sshd -t -f $(DESTDIR)$(sysconfdir)/sshd_config |
312 | 325 | ||
313 | install-files: | 326 | install-files: |
314 | $(srcdir)/mkinstalldirs $(DESTDIR)$(bindir) | 327 | $(MKDIR_P) $(DESTDIR)$(bindir) |
315 | $(srcdir)/mkinstalldirs $(DESTDIR)$(sbindir) | 328 | $(MKDIR_P) $(DESTDIR)$(sbindir) |
316 | $(srcdir)/mkinstalldirs $(DESTDIR)$(mandir) | 329 | $(MKDIR_P) $(DESTDIR)$(mandir)/$(mansubdir)1 |
317 | $(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)1 | 330 | $(MKDIR_P) $(DESTDIR)$(mandir)/$(mansubdir)5 |
318 | $(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)5 | 331 | $(MKDIR_P) $(DESTDIR)$(mandir)/$(mansubdir)8 |
319 | $(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)8 | 332 | $(MKDIR_P) $(DESTDIR)$(libexecdir) |
320 | $(srcdir)/mkinstalldirs $(DESTDIR)$(libexecdir) | 333 | $(MKDIR_P) -m 0755 $(DESTDIR)$(PRIVSEP_PATH) |
321 | (umask 022 ; $(srcdir)/mkinstalldirs $(DESTDIR)$(PRIVSEP_PATH)) | ||
322 | $(INSTALL) -m 0755 $(STRIP_OPT) ssh$(EXEEXT) $(DESTDIR)$(bindir)/ssh$(EXEEXT) | 334 | $(INSTALL) -m 0755 $(STRIP_OPT) ssh$(EXEEXT) $(DESTDIR)$(bindir)/ssh$(EXEEXT) |
323 | $(INSTALL) -m 0755 $(STRIP_OPT) scp$(EXEEXT) $(DESTDIR)$(bindir)/scp$(EXEEXT) | 335 | $(INSTALL) -m 0755 $(STRIP_OPT) scp$(EXEEXT) $(DESTDIR)$(bindir)/scp$(EXEEXT) |
324 | $(INSTALL) -m 0755 $(STRIP_OPT) ssh-add$(EXEEXT) $(DESTDIR)$(bindir)/ssh-add$(EXEEXT) | 336 | $(INSTALL) -m 0755 $(STRIP_OPT) ssh-add$(EXEEXT) $(DESTDIR)$(bindir)/ssh-add$(EXEEXT) |
@@ -347,9 +359,7 @@ install-files: | |||
347 | $(INSTALL) -m 644 ssh-pkcs11-helper.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-pkcs11-helper.8 | 359 | $(INSTALL) -m 644 ssh-pkcs11-helper.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-pkcs11-helper.8 |
348 | 360 | ||
349 | install-sysconf: | 361 | install-sysconf: |
350 | if [ ! -d $(DESTDIR)$(sysconfdir) ]; then \ | 362 | $(MKDIR_P) $(DESTDIR)$(sysconfdir) |
351 | $(srcdir)/mkinstalldirs $(DESTDIR)$(sysconfdir); \ | ||
352 | fi | ||
353 | @if [ ! -f $(DESTDIR)$(sysconfdir)/ssh_config ]; then \ | 363 | @if [ ! -f $(DESTDIR)$(sysconfdir)/ssh_config ]; then \ |
354 | $(INSTALL) -m 644 ssh_config.out $(DESTDIR)$(sysconfdir)/ssh_config; \ | 364 | $(INSTALL) -m 644 ssh_config.out $(DESTDIR)$(sysconfdir)/ssh_config; \ |
355 | else \ | 365 | else \ |
@@ -377,9 +387,6 @@ host-key: ssh-keygen$(EXEEXT) | |||
377 | fi | 387 | fi |
378 | 388 | ||
379 | host-key-force: ssh-keygen$(EXEEXT) ssh$(EXEEXT) | 389 | host-key-force: ssh-keygen$(EXEEXT) ssh$(EXEEXT) |
380 | if ./ssh -Q protocol-version | grep '^1$$' >/dev/null; then \ | ||
381 | ./ssh-keygen -t rsa1 -f $(DESTDIR)$(sysconfdir)/ssh_host_key -N ""; \ | ||
382 | fi | ||
383 | ./ssh-keygen -t dsa -f $(DESTDIR)$(sysconfdir)/ssh_host_dsa_key -N "" | 390 | ./ssh-keygen -t dsa -f $(DESTDIR)$(sysconfdir)/ssh_host_dsa_key -N "" |
384 | ./ssh-keygen -t rsa -f $(DESTDIR)$(sysconfdir)/ssh_host_rsa_key -N "" | 391 | ./ssh-keygen -t rsa -f $(DESTDIR)$(sysconfdir)/ssh_host_rsa_key -N "" |
385 | ./ssh-keygen -t ed25519 -f $(DESTDIR)$(sysconfdir)/ssh_host_ed25519_key -N "" | 392 | ./ssh-keygen -t ed25519 -f $(DESTDIR)$(sysconfdir)/ssh_host_ed25519_key -N "" |
@@ -423,28 +430,16 @@ uninstall: | |||
423 | -rm -f $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-pkcs11-helper.8 | 430 | -rm -f $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-pkcs11-helper.8 |
424 | 431 | ||
425 | regress-prep: | 432 | regress-prep: |
426 | [ -d `pwd`/regress ] || mkdir -p `pwd`/regress | 433 | $(MKDIR_P) `pwd`/regress/unittests/test_helper |
427 | [ -d `pwd`/regress/unittests ] || mkdir -p `pwd`/regress/unittests | 434 | $(MKDIR_P) `pwd`/regress/unittests/sshbuf |
428 | [ -d `pwd`/regress/unittests/test_helper ] || \ | 435 | $(MKDIR_P) `pwd`/regress/unittests/sshkey |
429 | mkdir -p `pwd`/regress/unittests/test_helper | 436 | $(MKDIR_P) `pwd`/regress/unittests/bitmap |
430 | [ -d `pwd`/regress/unittests/sshbuf ] || \ | 437 | $(MKDIR_P) `pwd`/regress/unittests/conversion |
431 | mkdir -p `pwd`/regress/unittests/sshbuf | 438 | $(MKDIR_P) `pwd`/regress/unittests/hostkeys |
432 | [ -d `pwd`/regress/unittests/sshkey ] || \ | 439 | $(MKDIR_P) `pwd`/regress/unittests/kex |
433 | mkdir -p `pwd`/regress/unittests/sshkey | 440 | $(MKDIR_P) `pwd`/regress/unittests/match |
434 | [ -d `pwd`/regress/unittests/bitmap ] || \ | 441 | $(MKDIR_P) `pwd`/regress/unittests/utf8 |
435 | mkdir -p `pwd`/regress/unittests/bitmap | 442 | $(MKDIR_P) `pwd`/regress/misc/kexfuzz |
436 | [ -d `pwd`/regress/unittests/conversion ] || \ | ||
437 | mkdir -p `pwd`/regress/unittests/conversion | ||
438 | [ -d `pwd`/regress/unittests/hostkeys ] || \ | ||
439 | mkdir -p `pwd`/regress/unittests/hostkeys | ||
440 | [ -d `pwd`/regress/unittests/kex ] || \ | ||
441 | mkdir -p `pwd`/regress/unittests/kex | ||
442 | [ -d `pwd`/regress/unittests/match ] || \ | ||
443 | mkdir -p `pwd`/regress/unittests/match | ||
444 | [ -d `pwd`/regress/unittests/utf8 ] || \ | ||
445 | mkdir -p `pwd`/regress/unittests/utf8 | ||
446 | [ -d `pwd`/regress/misc/kexfuzz ] || \ | ||
447 | mkdir -p `pwd`/regress/misc/kexfuzz | ||
448 | [ -f `pwd`/regress/Makefile ] || \ | 443 | [ -f `pwd`/regress/Makefile ] || \ |
449 | ln -s `cd $(srcdir) && pwd`/regress/Makefile `pwd`/regress/Makefile | 444 | ln -s `cd $(srcdir) && pwd`/regress/Makefile `pwd`/regress/Makefile |
450 | 445 | ||
@@ -584,6 +579,8 @@ regress-binaries: regress/modpipe$(EXEEXT) \ | |||
584 | regress/unittests/utf8/test_utf8$(EXEEXT) \ | 579 | regress/unittests/utf8/test_utf8$(EXEEXT) \ |
585 | regress/misc/kexfuzz/kexfuzz$(EXEEXT) | 580 | regress/misc/kexfuzz/kexfuzz$(EXEEXT) |
586 | 581 | ||
582 | REGRESSTMP = "$(PWD)/regress" | ||
583 | |||
587 | tests interop-tests t-exec unit: regress-prep regress-binaries $(TARGETS) | 584 | tests interop-tests t-exec unit: regress-prep regress-binaries $(TARGETS) |
588 | BUILDDIR=`pwd`; \ | 585 | BUILDDIR=`pwd`; \ |
589 | TEST_SSH_SCP="$${BUILDDIR}/scp"; \ | 586 | TEST_SSH_SCP="$${BUILDDIR}/scp"; \ |
@@ -607,7 +604,7 @@ tests interop-tests t-exec unit: regress-prep regress-binaries $(TARGETS) | |||
607 | .OBJDIR="$${BUILDDIR}/regress" \ | 604 | .OBJDIR="$${BUILDDIR}/regress" \ |
608 | .CURDIR="`pwd`" \ | 605 | .CURDIR="`pwd`" \ |
609 | BUILDDIR="$${BUILDDIR}" \ | 606 | BUILDDIR="$${BUILDDIR}" \ |
610 | OBJ="$${BUILDDIR}/regress/" \ | 607 | OBJ="$(REGRESSTMP)" \ |
611 | PATH="$${BUILDDIR}:$${PATH}" \ | 608 | PATH="$${BUILDDIR}:$${PATH}" \ |
612 | TEST_ENV=MALLOC_OPTIONS="@TEST_MALLOC_OPTIONS@" \ | 609 | TEST_ENV=MALLOC_OPTIONS="@TEST_MALLOC_OPTIONS@" \ |
613 | TEST_MALLOC_OPTIONS="@TEST_MALLOC_OPTIONS@" \ | 610 | TEST_MALLOC_OPTIONS="@TEST_MALLOC_OPTIONS@" \ |
@@ -652,3 +649,5 @@ package: $(CONFIGFILES) $(MANPAGES) $(TARGETS) | |||
652 | if [ "@MAKE_PACKAGE_SUPPORTED@" = yes ]; then \ | 649 | if [ "@MAKE_PACKAGE_SUPPORTED@" = yes ]; then \ |
653 | sh buildpkg.sh; \ | 650 | sh buildpkg.sh; \ |
654 | fi | 651 | fi |
652 | |||
653 | # @DEPEND@ | ||
@@ -295,10 +295,14 @@ has completed. | |||
295 | string[] hostkeys | 295 | string[] hostkeys |
296 | 296 | ||
297 | Upon receiving this message, a client should check which of the | 297 | Upon receiving this message, a client should check which of the |
298 | supplied host keys are present in known_hosts. For keys that are | 298 | supplied host keys are present in known_hosts. |
299 | not present, it should send a "hostkeys-prove@openssh.com" message | 299 | |
300 | to request the server prove ownership of the private half of the | 300 | Note that the server may send key types that the client does not |
301 | key. | 301 | support. The client should disgregard such keys if they are received. |
302 | |||
303 | If the client identifies any keys that are not present for the host, | ||
304 | it should send a "hostkeys-prove@openssh.com" message to request the | ||
305 | server prove ownership of the private half of the key. | ||
302 | 306 | ||
303 | byte SSH_MSG_GLOBAL_REQUEST | 307 | byte SSH_MSG_GLOBAL_REQUEST |
304 | string "hostkeys-prove-00@openssh.com" | 308 | string "hostkeys-prove-00@openssh.com" |
@@ -454,4 +458,4 @@ respond with a SSH_FXP_STATUS message. | |||
454 | This extension is advertised in the SSH_FXP_VERSION hello with version | 458 | This extension is advertised in the SSH_FXP_VERSION hello with version |
455 | "1". | 459 | "1". |
456 | 460 | ||
457 | $OpenBSD: PROTOCOL,v 1.31 2017/05/26 01:40:07 djm Exp $ | 461 | $OpenBSD: PROTOCOL,v 1.32 2018/02/19 00:55:02 djm Exp $ |
diff --git a/PROTOCOL.certkeys b/PROTOCOL.certkeys index 42aa8c2a1..64cb18700 100644 --- a/PROTOCOL.certkeys +++ b/PROTOCOL.certkeys | |||
@@ -100,9 +100,9 @@ DSA certificate | |||
100 | 100 | ||
101 | ECDSA certificate | 101 | ECDSA certificate |
102 | 102 | ||
103 | string "ecdsa-sha2-nistp256-v01@openssh.com" | | 103 | string "ecdsa-sha2-nistp256-cert-v01@openssh.com" | |
104 | "ecdsa-sha2-nistp384-v01@openssh.com" | | 104 | "ecdsa-sha2-nistp384-cert-v01@openssh.com" | |
105 | "ecdsa-sha2-nistp521-v01@openssh.com" | 105 | "ecdsa-sha2-nistp521-cert-v01@openssh.com" |
106 | string nonce | 106 | string nonce |
107 | string curve | 107 | string curve |
108 | string public_key | 108 | string public_key |
@@ -291,4 +291,4 @@ permit-user-rc empty Flag indicating that execution of | |||
291 | of this script will not be permitted if | 291 | of this script will not be permitted if |
292 | this option is not present. | 292 | this option is not present. |
293 | 293 | ||
294 | $OpenBSD: PROTOCOL.certkeys,v 1.12 2017/05/31 04:29:44 djm Exp $ | 294 | $OpenBSD: PROTOCOL.certkeys,v 1.13 2017/11/03 02:32:19 djm Exp $ |
@@ -1,11 +1,11 @@ | |||
1 | See https://www.openssh.com/releasenotes.html#7.6p1 for the release notes. | 1 | See https://www.openssh.com/releasenotes.html#7.7p1 for the release notes. |
2 | 2 | ||
3 | Please read https://www.openssh.com/report.html for bug reporting | 3 | Please read https://www.openssh.com/report.html for bug reporting |
4 | instructions and note that we do not use Github for bug reporting or | 4 | instructions and note that we do not use Github for bug reporting or |
5 | patch/pull-request management. | 5 | patch/pull-request management. |
6 | 6 | ||
7 | - A Japanese translation of this document and of the release notes 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 https://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 | ||
11 | This is the port of OpenBSD's excellent OpenSSH[0] to Linux and other | 11 | This is the port of OpenBSD's excellent OpenSSH[0] to Linux and other |
@@ -22,7 +22,7 @@ This port consists of the re-introduction of autoconf support, PAM | |||
22 | support, EGD[1]/PRNGD[2] support and replacements for OpenBSD library | 22 | support, EGD[1]/PRNGD[2] support and replacements for OpenBSD library |
23 | functions that are (regrettably) absent from other unices. This port | 23 | functions that are (regrettably) absent from other unices. This port |
24 | has been best tested on AIX, Cygwin, HP-UX, Linux, MacOS/X, | 24 | has been best tested on AIX, Cygwin, HP-UX, Linux, MacOS/X, |
25 | NetBSD, OpenBSD, OpenServer, Solaris, Unicos, and UnixWare. | 25 | NetBSD, OpenBSD, OpenServer, Solaris and UnixWare. |
26 | 26 | ||
27 | This version actively tracks changes in the OpenBSD CVS repository. | 27 | This version actively tracks changes in the OpenBSD CVS repository. |
28 | 28 | ||
@@ -56,11 +56,11 @@ References - | |||
56 | 56 | ||
57 | [0] https://www.openssh.com/ | 57 | [0] https://www.openssh.com/ |
58 | [1] http://www.lothar.com/tech/crypto/ | 58 | [1] http://www.lothar.com/tech/crypto/ |
59 | [2] http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/prngd.html | 59 | [2] http://prngd.sourceforge.net/ |
60 | [3] http://www.gzip.org/zlib/ | 60 | [3] https://www.zlib.net/ |
61 | [4] http://www.openssl.org/ | 61 | [4] https://www.openssl.org/ |
62 | [5] http://www.openpam.org | 62 | [5] https://www.openpam.org |
63 | http://www.kernel.org/pub/linux/libs/pam/ | 63 | https://www.kernel.org/pub/linux/libs/pam/ |
64 | (PAM also is standard on Solaris and HP-UX 11) | 64 | (PAM also is standard on Solaris and HP-UX 11) |
65 | [6] http://thrysoee.dk/editline/ (portable version) | 65 | [6] https://thrysoee.dk/editline/ (portable version) |
66 | [7] http://man.openbsd.org/style.9 | 66 | [7] https://man.openbsd.org/style.9 |
diff --git a/README.privsep b/README.privsep index 2120544c7..460e90565 100644 --- a/README.privsep +++ b/README.privsep | |||
@@ -34,8 +34,8 @@ privsep user and chroot directory: | |||
34 | PAM-enabled OpenSSH is known to function with privsep on AIX, FreeBSD, | 34 | PAM-enabled OpenSSH is known to function with privsep on AIX, FreeBSD, |
35 | HP-UX (including Trusted Mode), Linux, NetBSD and Solaris. | 35 | HP-UX (including Trusted Mode), Linux, NetBSD and Solaris. |
36 | 36 | ||
37 | On Cygwin, Tru64 Unix, OpenServer, and Unicos only the pre-authentication | 37 | On Cygwin, Tru64 Unix and OpenServer only the pre-authentication part |
38 | part of privsep is supported. Post-authentication privsep is disabled | 38 | of privsep is supported. Post-authentication privsep is disabled |
39 | automatically (so you won't see the additional process mentioned below). | 39 | automatically (so you won't see the additional process mentioned below). |
40 | 40 | ||
41 | Note that for a normal interactive login with a shell, enabling privsep | 41 | Note that for a normal interactive login with a shell, enabling privsep |
diff --git a/auth-options.c b/auth-options.c index ccdd0b20a..b528c197a 100644 --- a/auth-options.c +++ b/auth-options.c | |||
@@ -1,13 +1,18 @@ | |||
1 | /* $OpenBSD: auth-options.c,v 1.74 2017/09/12 06:32:07 djm Exp $ */ | 1 | /* $OpenBSD: auth-options.c,v 1.78 2018/03/14 05:35:40 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 3 | * Copyright (c) 2018 Damien Miller <djm@mindrot.org> |
4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | 4 | * |
5 | * All rights reserved | 5 | * Permission to use, copy, modify, and distribute this software for any |
6 | * As far as I am concerned, the code I have written for this software | 6 | * purpose with or without fee is hereby granted, provided that the above |
7 | * can be used freely for any purpose. Any derived versions of this | 7 | * copyright notice and this permission notice appear in all copies. |
8 | * software must be clearly marked as such, and if the derived work is | 8 | * |
9 | * incompatible with the protocol description in the RFC file, it must be | 9 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
10 | * called by a name other than "ssh" or "Secure Shell". | 10 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
11 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
12 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
13 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
14 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
15 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
11 | */ | 16 | */ |
12 | 17 | ||
13 | #include "includes.h" | 18 | #include "includes.h" |
@@ -19,99 +24,33 @@ | |||
19 | #include <string.h> | 24 | #include <string.h> |
20 | #include <stdio.h> | 25 | #include <stdio.h> |
21 | #include <stdarg.h> | 26 | #include <stdarg.h> |
27 | #include <ctype.h> | ||
28 | #include <limits.h> | ||
22 | 29 | ||
23 | #include "openbsd-compat/sys-queue.h" | 30 | #include "openbsd-compat/sys-queue.h" |
24 | 31 | ||
25 | #include "key.h" /* XXX for typedef */ | ||
26 | #include "buffer.h" /* XXX for typedef */ | ||
27 | #include "xmalloc.h" | 32 | #include "xmalloc.h" |
28 | #include "match.h" | ||
29 | #include "ssherr.h" | 33 | #include "ssherr.h" |
30 | #include "log.h" | 34 | #include "log.h" |
31 | #include "canohost.h" | ||
32 | #include "packet.h" | ||
33 | #include "sshbuf.h" | 35 | #include "sshbuf.h" |
34 | #include "misc.h" | 36 | #include "misc.h" |
35 | #include "channels.h" | ||
36 | #include "servconf.h" | ||
37 | #include "sshkey.h" | 37 | #include "sshkey.h" |
38 | #include "match.h" | ||
39 | #include "ssh2.h" | ||
38 | #include "auth-options.h" | 40 | #include "auth-options.h" |
39 | #include "hostfile.h" | ||
40 | #include "auth.h" | ||
41 | |||
42 | /* Flags set authorized_keys flags */ | ||
43 | int no_port_forwarding_flag = 0; | ||
44 | int no_agent_forwarding_flag = 0; | ||
45 | int no_x11_forwarding_flag = 0; | ||
46 | int no_pty_flag = 0; | ||
47 | int no_user_rc = 0; | ||
48 | int key_is_cert_authority = 0; | ||
49 | |||
50 | /* "command=" option. */ | ||
51 | char *forced_command = NULL; | ||
52 | |||
53 | /* "environment=" options. */ | ||
54 | struct envstring *custom_environment = NULL; | ||
55 | |||
56 | /* "tunnel=" option. */ | ||
57 | int forced_tun_device = -1; | ||
58 | |||
59 | /* "principals=" option. */ | ||
60 | char *authorized_principals = NULL; | ||
61 | |||
62 | /* Throttle log messages. */ | ||
63 | int logged_from_hostip = 0; | ||
64 | int logged_cert_hostip = 0; | ||
65 | |||
66 | extern ServerOptions options; | ||
67 | |||
68 | /* XXX refactor to be stateless */ | ||
69 | |||
70 | void | ||
71 | auth_start_parse_options(void) | ||
72 | { | ||
73 | logged_from_hostip = 0; | ||
74 | logged_cert_hostip = 0; | ||
75 | } | ||
76 | |||
77 | void | ||
78 | auth_clear_options(void) | ||
79 | { | ||
80 | struct ssh *ssh = active_state; /* XXX */ | ||
81 | |||
82 | no_agent_forwarding_flag = 0; | ||
83 | no_port_forwarding_flag = 0; | ||
84 | no_pty_flag = 0; | ||
85 | no_x11_forwarding_flag = 0; | ||
86 | no_user_rc = 0; | ||
87 | key_is_cert_authority = 0; | ||
88 | while (custom_environment) { | ||
89 | struct envstring *ce = custom_environment; | ||
90 | custom_environment = ce->next; | ||
91 | free(ce->s); | ||
92 | free(ce); | ||
93 | } | ||
94 | free(forced_command); | ||
95 | forced_command = NULL; | ||
96 | free(authorized_principals); | ||
97 | authorized_principals = NULL; | ||
98 | forced_tun_device = -1; | ||
99 | channel_clear_permitted_opens(ssh); | ||
100 | } | ||
101 | 41 | ||
102 | /* | 42 | /* |
103 | * Match flag 'opt' in *optsp, and if allow_negate is set then also match | 43 | * Match flag 'opt' in *optsp, and if allow_negate is set then also match |
104 | * 'no-opt'. Returns -1 if option not matched, 1 if option matches or 0 | 44 | * 'no-opt'. Returns -1 if option not matched, 1 if option matches or 0 |
105 | * if negated option matches. | 45 | * if negated option matches. |
106 | * If the option or negated option matches, then *optsp is updated to | 46 | * If the option or negated option matches, then *optsp is updated to |
107 | * point to the first character after the option and, if 'msg' is not NULL | 47 | * point to the first character after the option. |
108 | * then a message based on it added via auth_debug_add(). | ||
109 | */ | 48 | */ |
110 | static int | 49 | static int |
111 | match_flag(const char *opt, int allow_negate, char **optsp, const char *msg) | 50 | opt_flag(const char *opt, int allow_negate, const char **optsp) |
112 | { | 51 | { |
113 | size_t opt_len = strlen(opt); | 52 | size_t opt_len = strlen(opt); |
114 | char *opts = *optsp; | 53 | const char *opts = *optsp; |
115 | int negate = 0; | 54 | int negate = 0; |
116 | 55 | ||
117 | if (allow_negate && strncasecmp(opts, "no-", 3) == 0) { | 56 | if (allow_negate && strncasecmp(opts, "no-", 3) == 0) { |
@@ -120,371 +59,92 @@ match_flag(const char *opt, int allow_negate, char **optsp, const char *msg) | |||
120 | } | 59 | } |
121 | if (strncasecmp(opts, opt, opt_len) == 0) { | 60 | if (strncasecmp(opts, opt, opt_len) == 0) { |
122 | *optsp = opts + opt_len; | 61 | *optsp = opts + opt_len; |
123 | if (msg != NULL) { | ||
124 | auth_debug_add("%s %s.", msg, | ||
125 | negate ? "disabled" : "enabled"); | ||
126 | } | ||
127 | return negate ? 0 : 1; | 62 | return negate ? 0 : 1; |
128 | } | 63 | } |
129 | return -1; | 64 | return -1; |
130 | } | 65 | } |
131 | 66 | ||
132 | /* | 67 | static char * |
133 | * return 1 if access is granted, 0 if not. | 68 | opt_dequote(const char **sp, const char **errstrp) |
134 | * side effect: sets key option flags | ||
135 | * XXX remove side effects; fill structure instead. | ||
136 | */ | ||
137 | int | ||
138 | auth_parse_options(struct passwd *pw, char *opts, const char *file, | ||
139 | u_long linenum) | ||
140 | { | 69 | { |
141 | struct ssh *ssh = active_state; /* XXX */ | 70 | const char *s = *sp; |
142 | const char *cp; | 71 | char *ret; |
143 | int i, r; | 72 | size_t i; |
144 | 73 | ||
145 | /* reset options */ | 74 | *errstrp = NULL; |
146 | auth_clear_options(); | 75 | if (*s != '"') { |
76 | *errstrp = "missing start quote"; | ||
77 | return NULL; | ||
78 | } | ||
79 | s++; | ||
80 | if ((ret = malloc(strlen((s)) + 1)) == NULL) { | ||
81 | *errstrp = "memory allocation failed"; | ||
82 | return NULL; | ||
83 | } | ||
84 | for (i = 0; *s != '\0' && *s != '"';) { | ||
85 | if (s[0] == '\\' && s[1] == '"') | ||
86 | s++; | ||
87 | ret[i++] = *s++; | ||
88 | } | ||
89 | if (*s == '\0') { | ||
90 | *errstrp = "missing end quote"; | ||
91 | free(ret); | ||
92 | return NULL; | ||
93 | } | ||
94 | ret[i] = '\0'; | ||
95 | s++; | ||
96 | *sp = s; | ||
97 | return ret; | ||
98 | } | ||
147 | 99 | ||
148 | if (!opts) | 100 | static int |
101 | opt_match(const char **opts, const char *term) | ||
102 | { | ||
103 | if (strncasecmp((*opts), term, strlen(term)) == 0 && | ||
104 | (*opts)[strlen(term)] == '=') { | ||
105 | *opts += strlen(term) + 1; | ||
149 | return 1; | 106 | return 1; |
150 | |||
151 | while (*opts && *opts != ' ' && *opts != '\t') { | ||
152 | if ((r = match_flag("cert-authority", 0, &opts, NULL)) != -1) { | ||
153 | key_is_cert_authority = r; | ||
154 | goto next_option; | ||
155 | } | ||
156 | if ((r = match_flag("restrict", 0, &opts, NULL)) != -1) { | ||
157 | auth_debug_add("Key is restricted."); | ||
158 | no_port_forwarding_flag = 1; | ||
159 | no_agent_forwarding_flag = 1; | ||
160 | no_x11_forwarding_flag = 1; | ||
161 | no_pty_flag = 1; | ||
162 | no_user_rc = 1; | ||
163 | goto next_option; | ||
164 | } | ||
165 | if ((r = match_flag("port-forwarding", 1, &opts, | ||
166 | "Port forwarding")) != -1) { | ||
167 | no_port_forwarding_flag = r != 1; | ||
168 | goto next_option; | ||
169 | } | ||
170 | if ((r = match_flag("agent-forwarding", 1, &opts, | ||
171 | "Agent forwarding")) != -1) { | ||
172 | no_agent_forwarding_flag = r != 1; | ||
173 | goto next_option; | ||
174 | } | ||
175 | if ((r = match_flag("x11-forwarding", 1, &opts, | ||
176 | "X11 forwarding")) != -1) { | ||
177 | no_x11_forwarding_flag = r != 1; | ||
178 | goto next_option; | ||
179 | } | ||
180 | if ((r = match_flag("pty", 1, &opts, | ||
181 | "PTY allocation")) != -1) { | ||
182 | no_pty_flag = r != 1; | ||
183 | goto next_option; | ||
184 | } | ||
185 | if ((r = match_flag("user-rc", 1, &opts, | ||
186 | "User rc execution")) != -1) { | ||
187 | no_user_rc = r != 1; | ||
188 | goto next_option; | ||
189 | } | ||
190 | cp = "command=\""; | ||
191 | if (strncasecmp(opts, cp, strlen(cp)) == 0) { | ||
192 | opts += strlen(cp); | ||
193 | free(forced_command); | ||
194 | forced_command = xmalloc(strlen(opts) + 1); | ||
195 | i = 0; | ||
196 | while (*opts) { | ||
197 | if (*opts == '"') | ||
198 | break; | ||
199 | if (*opts == '\\' && opts[1] == '"') { | ||
200 | opts += 2; | ||
201 | forced_command[i++] = '"'; | ||
202 | continue; | ||
203 | } | ||
204 | forced_command[i++] = *opts++; | ||
205 | } | ||
206 | if (!*opts) { | ||
207 | debug("%.100s, line %lu: missing end quote", | ||
208 | file, linenum); | ||
209 | auth_debug_add("%.100s, line %lu: missing end quote", | ||
210 | file, linenum); | ||
211 | free(forced_command); | ||
212 | forced_command = NULL; | ||
213 | goto bad_option; | ||
214 | } | ||
215 | forced_command[i] = '\0'; | ||
216 | auth_debug_add("Forced command."); | ||
217 | opts++; | ||
218 | goto next_option; | ||
219 | } | ||
220 | cp = "principals=\""; | ||
221 | if (strncasecmp(opts, cp, strlen(cp)) == 0) { | ||
222 | opts += strlen(cp); | ||
223 | free(authorized_principals); | ||
224 | authorized_principals = xmalloc(strlen(opts) + 1); | ||
225 | i = 0; | ||
226 | while (*opts) { | ||
227 | if (*opts == '"') | ||
228 | break; | ||
229 | if (*opts == '\\' && opts[1] == '"') { | ||
230 | opts += 2; | ||
231 | authorized_principals[i++] = '"'; | ||
232 | continue; | ||
233 | } | ||
234 | authorized_principals[i++] = *opts++; | ||
235 | } | ||
236 | if (!*opts) { | ||
237 | debug("%.100s, line %lu: missing end quote", | ||
238 | file, linenum); | ||
239 | auth_debug_add("%.100s, line %lu: missing end quote", | ||
240 | file, linenum); | ||
241 | free(authorized_principals); | ||
242 | authorized_principals = NULL; | ||
243 | goto bad_option; | ||
244 | } | ||
245 | authorized_principals[i] = '\0'; | ||
246 | auth_debug_add("principals: %.900s", | ||
247 | authorized_principals); | ||
248 | opts++; | ||
249 | goto next_option; | ||
250 | } | ||
251 | cp = "environment=\""; | ||
252 | if (strncasecmp(opts, cp, strlen(cp)) == 0) { | ||
253 | char *s; | ||
254 | struct envstring *new_envstring; | ||
255 | |||
256 | opts += strlen(cp); | ||
257 | s = xmalloc(strlen(opts) + 1); | ||
258 | i = 0; | ||
259 | while (*opts) { | ||
260 | if (*opts == '"') | ||
261 | break; | ||
262 | if (*opts == '\\' && opts[1] == '"') { | ||
263 | opts += 2; | ||
264 | s[i++] = '"'; | ||
265 | continue; | ||
266 | } | ||
267 | s[i++] = *opts++; | ||
268 | } | ||
269 | if (!*opts) { | ||
270 | debug("%.100s, line %lu: missing end quote", | ||
271 | file, linenum); | ||
272 | auth_debug_add("%.100s, line %lu: missing end quote", | ||
273 | file, linenum); | ||
274 | free(s); | ||
275 | goto bad_option; | ||
276 | } | ||
277 | s[i] = '\0'; | ||
278 | opts++; | ||
279 | if (options.permit_user_env) { | ||
280 | auth_debug_add("Adding to environment: " | ||
281 | "%.900s", s); | ||
282 | debug("Adding to environment: %.900s", s); | ||
283 | new_envstring = xcalloc(1, | ||
284 | sizeof(*new_envstring)); | ||
285 | new_envstring->s = s; | ||
286 | new_envstring->next = custom_environment; | ||
287 | custom_environment = new_envstring; | ||
288 | s = NULL; | ||
289 | } | ||
290 | free(s); | ||
291 | goto next_option; | ||
292 | } | ||
293 | cp = "from=\""; | ||
294 | if (strncasecmp(opts, cp, strlen(cp)) == 0) { | ||
295 | const char *remote_ip = ssh_remote_ipaddr(ssh); | ||
296 | const char *remote_host = auth_get_canonical_hostname( | ||
297 | ssh, options.use_dns); | ||
298 | char *patterns = xmalloc(strlen(opts) + 1); | ||
299 | |||
300 | opts += strlen(cp); | ||
301 | i = 0; | ||
302 | while (*opts) { | ||
303 | if (*opts == '"') | ||
304 | break; | ||
305 | if (*opts == '\\' && opts[1] == '"') { | ||
306 | opts += 2; | ||
307 | patterns[i++] = '"'; | ||
308 | continue; | ||
309 | } | ||
310 | patterns[i++] = *opts++; | ||
311 | } | ||
312 | if (!*opts) { | ||
313 | debug("%.100s, line %lu: missing end quote", | ||
314 | file, linenum); | ||
315 | auth_debug_add("%.100s, line %lu: missing end quote", | ||
316 | file, linenum); | ||
317 | free(patterns); | ||
318 | goto bad_option; | ||
319 | } | ||
320 | patterns[i] = '\0'; | ||
321 | opts++; | ||
322 | switch (match_host_and_ip(remote_host, remote_ip, | ||
323 | patterns)) { | ||
324 | case 1: | ||
325 | free(patterns); | ||
326 | /* Host name matches. */ | ||
327 | goto next_option; | ||
328 | case -1: | ||
329 | debug("%.100s, line %lu: invalid criteria", | ||
330 | file, linenum); | ||
331 | auth_debug_add("%.100s, line %lu: " | ||
332 | "invalid criteria", file, linenum); | ||
333 | /* FALLTHROUGH */ | ||
334 | case 0: | ||
335 | free(patterns); | ||
336 | if (!logged_from_hostip) { | ||
337 | logit("Authentication tried for %.100s with " | ||
338 | "correct key but not from a permitted " | ||
339 | "host (host=%.200s, ip=%.200s).", | ||
340 | pw->pw_name, remote_host, remote_ip); | ||
341 | logged_from_hostip = 1; | ||
342 | } | ||
343 | auth_debug_add("Your host '%.200s' is not " | ||
344 | "permitted to use this key for login.", | ||
345 | remote_host); | ||
346 | break; | ||
347 | } | ||
348 | /* deny access */ | ||
349 | return 0; | ||
350 | } | ||
351 | cp = "permitopen=\""; | ||
352 | if (strncasecmp(opts, cp, strlen(cp)) == 0) { | ||
353 | char *host, *p; | ||
354 | int port; | ||
355 | char *patterns = xmalloc(strlen(opts) + 1); | ||
356 | |||
357 | opts += strlen(cp); | ||
358 | i = 0; | ||
359 | while (*opts) { | ||
360 | if (*opts == '"') | ||
361 | break; | ||
362 | if (*opts == '\\' && opts[1] == '"') { | ||
363 | opts += 2; | ||
364 | patterns[i++] = '"'; | ||
365 | continue; | ||
366 | } | ||
367 | patterns[i++] = *opts++; | ||
368 | } | ||
369 | if (!*opts) { | ||
370 | debug("%.100s, line %lu: missing end quote", | ||
371 | file, linenum); | ||
372 | auth_debug_add("%.100s, line %lu: missing " | ||
373 | "end quote", file, linenum); | ||
374 | free(patterns); | ||
375 | goto bad_option; | ||
376 | } | ||
377 | patterns[i] = '\0'; | ||
378 | opts++; | ||
379 | p = patterns; | ||
380 | /* XXX - add streamlocal support */ | ||
381 | host = hpdelim(&p); | ||
382 | if (host == NULL || strlen(host) >= NI_MAXHOST) { | ||
383 | debug("%.100s, line %lu: Bad permitopen " | ||
384 | "specification <%.100s>", file, linenum, | ||
385 | patterns); | ||
386 | auth_debug_add("%.100s, line %lu: " | ||
387 | "Bad permitopen specification", file, | ||
388 | linenum); | ||
389 | free(patterns); | ||
390 | goto bad_option; | ||
391 | } | ||
392 | host = cleanhostname(host); | ||
393 | if (p == NULL || (port = permitopen_port(p)) < 0) { | ||
394 | debug("%.100s, line %lu: Bad permitopen port " | ||
395 | "<%.100s>", file, linenum, p ? p : ""); | ||
396 | auth_debug_add("%.100s, line %lu: " | ||
397 | "Bad permitopen port", file, linenum); | ||
398 | free(patterns); | ||
399 | goto bad_option; | ||
400 | } | ||
401 | if ((options.allow_tcp_forwarding & FORWARD_LOCAL) != 0) | ||
402 | channel_add_permitted_opens(ssh, host, port); | ||
403 | free(patterns); | ||
404 | goto next_option; | ||
405 | } | ||
406 | cp = "tunnel=\""; | ||
407 | if (strncasecmp(opts, cp, strlen(cp)) == 0) { | ||
408 | char *tun = NULL; | ||
409 | opts += strlen(cp); | ||
410 | tun = xmalloc(strlen(opts) + 1); | ||
411 | i = 0; | ||
412 | while (*opts) { | ||
413 | if (*opts == '"') | ||
414 | break; | ||
415 | tun[i++] = *opts++; | ||
416 | } | ||
417 | if (!*opts) { | ||
418 | debug("%.100s, line %lu: missing end quote", | ||
419 | file, linenum); | ||
420 | auth_debug_add("%.100s, line %lu: missing end quote", | ||
421 | file, linenum); | ||
422 | free(tun); | ||
423 | forced_tun_device = -1; | ||
424 | goto bad_option; | ||
425 | } | ||
426 | tun[i] = '\0'; | ||
427 | forced_tun_device = a2tun(tun, NULL); | ||
428 | free(tun); | ||
429 | if (forced_tun_device == SSH_TUNID_ERR) { | ||
430 | debug("%.100s, line %lu: invalid tun device", | ||
431 | file, linenum); | ||
432 | auth_debug_add("%.100s, line %lu: invalid tun device", | ||
433 | file, linenum); | ||
434 | forced_tun_device = -1; | ||
435 | goto bad_option; | ||
436 | } | ||
437 | auth_debug_add("Forced tun device: %d", forced_tun_device); | ||
438 | opts++; | ||
439 | goto next_option; | ||
440 | } | ||
441 | next_option: | ||
442 | /* | ||
443 | * Skip the comma, and move to the next option | ||
444 | * (or break out if there are no more). | ||
445 | */ | ||
446 | if (!*opts) | ||
447 | fatal("Bugs in auth-options.c option processing."); | ||
448 | if (*opts == ' ' || *opts == '\t') | ||
449 | break; /* End of options. */ | ||
450 | if (*opts != ',') | ||
451 | goto bad_option; | ||
452 | opts++; | ||
453 | /* Process the next option. */ | ||
454 | } | 107 | } |
108 | return 0; | ||
109 | } | ||
455 | 110 | ||
456 | /* grant access */ | 111 | static int |
457 | return 1; | 112 | dup_strings(char ***dstp, size_t *ndstp, char **src, size_t nsrc) |
113 | { | ||
114 | char **dst; | ||
115 | size_t i, j; | ||
458 | 116 | ||
459 | bad_option: | 117 | *dstp = NULL; |
460 | logit("Bad options in %.100s file, line %lu: %.50s", | 118 | *ndstp = 0; |
461 | file, linenum, opts); | 119 | if (nsrc == 0) |
462 | auth_debug_add("Bad options in %.100s file, line %lu: %.50s", | 120 | return 0; |
463 | file, linenum, opts); | ||
464 | 121 | ||
465 | /* deny access */ | 122 | if ((dst = calloc(nsrc, sizeof(*src))) == NULL) |
123 | return -1; | ||
124 | for (i = 0; i < nsrc; i++) { | ||
125 | if ((dst[i] = strdup(src[i])) == NULL) { | ||
126 | for (j = 0; j < i; j++) | ||
127 | free(dst[j]); | ||
128 | free(dst); | ||
129 | return -1; | ||
130 | } | ||
131 | } | ||
132 | /* success */ | ||
133 | *dstp = dst; | ||
134 | *ndstp = nsrc; | ||
466 | return 0; | 135 | return 0; |
467 | } | 136 | } |
468 | 137 | ||
469 | #define OPTIONS_CRITICAL 1 | 138 | #define OPTIONS_CRITICAL 1 |
470 | #define OPTIONS_EXTENSIONS 2 | 139 | #define OPTIONS_EXTENSIONS 2 |
471 | static int | 140 | static int |
472 | parse_option_list(struct sshbuf *oblob, struct passwd *pw, | 141 | cert_option_list(struct sshauthopt *opts, struct sshbuf *oblob, |
473 | u_int which, int crit, | 142 | u_int which, int crit) |
474 | int *cert_no_port_forwarding_flag, | ||
475 | int *cert_no_agent_forwarding_flag, | ||
476 | int *cert_no_x11_forwarding_flag, | ||
477 | int *cert_no_pty_flag, | ||
478 | int *cert_no_user_rc, | ||
479 | char **cert_forced_command, | ||
480 | int *cert_source_address_done) | ||
481 | { | 143 | { |
482 | struct ssh *ssh = active_state; /* XXX */ | ||
483 | char *command, *allowed; | 144 | char *command, *allowed; |
484 | const char *remote_ip; | ||
485 | char *name = NULL; | 145 | char *name = NULL; |
486 | struct sshbuf *c = NULL, *data = NULL; | 146 | struct sshbuf *c = NULL, *data = NULL; |
487 | int r, ret = -1, result, found; | 147 | int r, ret = -1, found; |
488 | 148 | ||
489 | if ((c = sshbuf_fromb(oblob)) == NULL) { | 149 | if ((c = sshbuf_fromb(oblob)) == NULL) { |
490 | error("%s: sshbuf_fromb failed", __func__); | 150 | error("%s: sshbuf_fromb failed", __func__); |
@@ -505,21 +165,21 @@ parse_option_list(struct sshbuf *oblob, struct passwd *pw, | |||
505 | found = 0; | 165 | found = 0; |
506 | if ((which & OPTIONS_EXTENSIONS) != 0) { | 166 | if ((which & OPTIONS_EXTENSIONS) != 0) { |
507 | if (strcmp(name, "permit-X11-forwarding") == 0) { | 167 | if (strcmp(name, "permit-X11-forwarding") == 0) { |
508 | *cert_no_x11_forwarding_flag = 0; | 168 | opts->permit_x11_forwarding_flag = 1; |
509 | found = 1; | 169 | found = 1; |
510 | } else if (strcmp(name, | 170 | } else if (strcmp(name, |
511 | "permit-agent-forwarding") == 0) { | 171 | "permit-agent-forwarding") == 0) { |
512 | *cert_no_agent_forwarding_flag = 0; | 172 | opts->permit_agent_forwarding_flag = 1; |
513 | found = 1; | 173 | found = 1; |
514 | } else if (strcmp(name, | 174 | } else if (strcmp(name, |
515 | "permit-port-forwarding") == 0) { | 175 | "permit-port-forwarding") == 0) { |
516 | *cert_no_port_forwarding_flag = 0; | 176 | opts->permit_port_forwarding_flag = 1; |
517 | found = 1; | 177 | found = 1; |
518 | } else if (strcmp(name, "permit-pty") == 0) { | 178 | } else if (strcmp(name, "permit-pty") == 0) { |
519 | *cert_no_pty_flag = 0; | 179 | opts->permit_pty_flag = 1; |
520 | found = 1; | 180 | found = 1; |
521 | } else if (strcmp(name, "permit-user-rc") == 0) { | 181 | } else if (strcmp(name, "permit-user-rc") == 0) { |
522 | *cert_no_user_rc = 0; | 182 | opts->permit_user_rc = 1; |
523 | found = 1; | 183 | found = 1; |
524 | } | 184 | } |
525 | } | 185 | } |
@@ -531,13 +191,13 @@ parse_option_list(struct sshbuf *oblob, struct passwd *pw, | |||
531 | "section: %s", name, ssh_err(r)); | 191 | "section: %s", name, ssh_err(r)); |
532 | goto out; | 192 | goto out; |
533 | } | 193 | } |
534 | if (*cert_forced_command != NULL) { | 194 | if (opts->force_command != NULL) { |
535 | error("Certificate has multiple " | 195 | error("Certificate has multiple " |
536 | "force-command options"); | 196 | "force-command options"); |
537 | free(command); | 197 | free(command); |
538 | goto out; | 198 | goto out; |
539 | } | 199 | } |
540 | *cert_forced_command = command; | 200 | opts->force_command = command; |
541 | found = 1; | 201 | found = 1; |
542 | } | 202 | } |
543 | if (strcmp(name, "source-address") == 0) { | 203 | if (strcmp(name, "source-address") == 0) { |
@@ -547,41 +207,19 @@ parse_option_list(struct sshbuf *oblob, struct passwd *pw, | |||
547 | "section: %s", name, ssh_err(r)); | 207 | "section: %s", name, ssh_err(r)); |
548 | goto out; | 208 | goto out; |
549 | } | 209 | } |
550 | if ((*cert_source_address_done)++) { | 210 | if (opts->required_from_host_cert != NULL) { |
551 | error("Certificate has multiple " | 211 | error("Certificate has multiple " |
552 | "source-address options"); | 212 | "source-address options"); |
553 | free(allowed); | 213 | free(allowed); |
554 | goto out; | 214 | goto out; |
555 | } | 215 | } |
556 | remote_ip = ssh_remote_ipaddr(ssh); | 216 | /* Check syntax */ |
557 | result = addr_match_cidr_list(remote_ip, | 217 | if (addr_match_cidr_list(NULL, allowed) == -1) { |
558 | allowed); | ||
559 | free(allowed); | ||
560 | switch (result) { | ||
561 | case 1: | ||
562 | /* accepted */ | ||
563 | break; | ||
564 | case 0: | ||
565 | /* no match */ | ||
566 | if (!logged_cert_hostip) { | ||
567 | logit("Authentication tried for %.100s " | ||
568 | "with valid certificate but not " | ||
569 | "from a permitted host " | ||
570 | "(ip=%.200s).", pw->pw_name, | ||
571 | remote_ip); | ||
572 | logged_cert_hostip = 1; | ||
573 | } | ||
574 | auth_debug_add("Your address '%.200s' " | ||
575 | "is not permitted to use this " | ||
576 | "certificate for login.", | ||
577 | remote_ip); | ||
578 | goto out; | ||
579 | case -1: | ||
580 | default: | ||
581 | error("Certificate source-address " | 218 | error("Certificate source-address " |
582 | "contents invalid"); | 219 | "contents invalid"); |
583 | goto out; | 220 | goto out; |
584 | } | 221 | } |
222 | opts->required_from_host_cert = allowed; | ||
585 | found = 1; | 223 | found = 1; |
586 | } | 224 | } |
587 | } | 225 | } |
@@ -607,74 +245,628 @@ parse_option_list(struct sshbuf *oblob, struct passwd *pw, | |||
607 | ret = 0; | 245 | ret = 0; |
608 | 246 | ||
609 | out: | 247 | out: |
610 | if (ret != 0 && | ||
611 | cert_forced_command != NULL && | ||
612 | *cert_forced_command != NULL) { | ||
613 | free(*cert_forced_command); | ||
614 | *cert_forced_command = NULL; | ||
615 | } | ||
616 | free(name); | 248 | free(name); |
617 | sshbuf_free(data); | 249 | sshbuf_free(data); |
618 | sshbuf_free(c); | 250 | sshbuf_free(c); |
619 | return ret; | 251 | return ret; |
620 | } | 252 | } |
621 | 253 | ||
254 | struct sshauthopt * | ||
255 | sshauthopt_new(void) | ||
256 | { | ||
257 | struct sshauthopt *ret; | ||
258 | |||
259 | if ((ret = calloc(1, sizeof(*ret))) == NULL) | ||
260 | return NULL; | ||
261 | ret->force_tun_device = -1; | ||
262 | return ret; | ||
263 | } | ||
264 | |||
265 | void | ||
266 | sshauthopt_free(struct sshauthopt *opts) | ||
267 | { | ||
268 | size_t i; | ||
269 | |||
270 | if (opts == NULL) | ||
271 | return; | ||
272 | |||
273 | free(opts->cert_principals); | ||
274 | free(opts->force_command); | ||
275 | free(opts->required_from_host_cert); | ||
276 | free(opts->required_from_host_keys); | ||
277 | |||
278 | for (i = 0; i < opts->nenv; i++) | ||
279 | free(opts->env[i]); | ||
280 | free(opts->env); | ||
281 | |||
282 | for (i = 0; i < opts->npermitopen; i++) | ||
283 | free(opts->permitopen[i]); | ||
284 | free(opts->permitopen); | ||
285 | |||
286 | explicit_bzero(opts, sizeof(*opts)); | ||
287 | free(opts); | ||
288 | } | ||
289 | |||
290 | struct sshauthopt * | ||
291 | sshauthopt_new_with_keys_defaults(void) | ||
292 | { | ||
293 | struct sshauthopt *ret = NULL; | ||
294 | |||
295 | if ((ret = sshauthopt_new()) == NULL) | ||
296 | return NULL; | ||
297 | |||
298 | /* Defaults for authorized_keys flags */ | ||
299 | ret->permit_port_forwarding_flag = 1; | ||
300 | ret->permit_agent_forwarding_flag = 1; | ||
301 | ret->permit_x11_forwarding_flag = 1; | ||
302 | ret->permit_pty_flag = 1; | ||
303 | ret->permit_user_rc = 1; | ||
304 | return ret; | ||
305 | } | ||
306 | |||
307 | struct sshauthopt * | ||
308 | sshauthopt_parse(const char *opts, const char **errstrp) | ||
309 | { | ||
310 | char **oarray, *opt, *cp, *tmp, *host; | ||
311 | int r; | ||
312 | struct sshauthopt *ret = NULL; | ||
313 | const char *errstr = "unknown error"; | ||
314 | uint64_t valid_before; | ||
315 | |||
316 | if (errstrp != NULL) | ||
317 | *errstrp = NULL; | ||
318 | if ((ret = sshauthopt_new_with_keys_defaults()) == NULL) | ||
319 | goto alloc_fail; | ||
320 | |||
321 | if (opts == NULL) | ||
322 | return ret; | ||
323 | |||
324 | while (*opts && *opts != ' ' && *opts != '\t') { | ||
325 | /* flag options */ | ||
326 | if ((r = opt_flag("restrict", 0, &opts)) != -1) { | ||
327 | ret->restricted = 1; | ||
328 | ret->permit_port_forwarding_flag = 0; | ||
329 | ret->permit_agent_forwarding_flag = 0; | ||
330 | ret->permit_x11_forwarding_flag = 0; | ||
331 | ret->permit_pty_flag = 0; | ||
332 | ret->permit_user_rc = 0; | ||
333 | } else if ((r = opt_flag("cert-authority", 0, &opts)) != -1) { | ||
334 | ret->cert_authority = r; | ||
335 | } else if ((r = opt_flag("port-forwarding", 1, &opts)) != -1) { | ||
336 | ret->permit_port_forwarding_flag = r == 1; | ||
337 | } else if ((r = opt_flag("agent-forwarding", 1, &opts)) != -1) { | ||
338 | ret->permit_agent_forwarding_flag = r == 1; | ||
339 | } else if ((r = opt_flag("x11-forwarding", 1, &opts)) != -1) { | ||
340 | ret->permit_x11_forwarding_flag = r == 1; | ||
341 | } else if ((r = opt_flag("pty", 1, &opts)) != -1) { | ||
342 | ret->permit_pty_flag = r == 1; | ||
343 | } else if ((r = opt_flag("user-rc", 1, &opts)) != -1) { | ||
344 | ret->permit_user_rc = r == 1; | ||
345 | } else if (opt_match(&opts, "command")) { | ||
346 | if (ret->force_command != NULL) { | ||
347 | errstr = "multiple \"command\" clauses"; | ||
348 | goto fail; | ||
349 | } | ||
350 | ret->force_command = opt_dequote(&opts, &errstr); | ||
351 | if (ret->force_command == NULL) | ||
352 | goto fail; | ||
353 | } else if (opt_match(&opts, "principals")) { | ||
354 | if (ret->cert_principals != NULL) { | ||
355 | errstr = "multiple \"principals\" clauses"; | ||
356 | goto fail; | ||
357 | } | ||
358 | ret->cert_principals = opt_dequote(&opts, &errstr); | ||
359 | if (ret->cert_principals == NULL) | ||
360 | goto fail; | ||
361 | } else if (opt_match(&opts, "from")) { | ||
362 | if (ret->required_from_host_keys != NULL) { | ||
363 | errstr = "multiple \"from\" clauses"; | ||
364 | goto fail; | ||
365 | } | ||
366 | ret->required_from_host_keys = opt_dequote(&opts, | ||
367 | &errstr); | ||
368 | if (ret->required_from_host_keys == NULL) | ||
369 | goto fail; | ||
370 | } else if (opt_match(&opts, "expiry-time")) { | ||
371 | if ((opt = opt_dequote(&opts, &errstr)) == NULL) | ||
372 | goto fail; | ||
373 | if (parse_absolute_time(opt, &valid_before) != 0 || | ||
374 | valid_before == 0) { | ||
375 | free(opt); | ||
376 | errstr = "invalid expires time"; | ||
377 | goto fail; | ||
378 | } | ||
379 | free(opt); | ||
380 | if (ret->valid_before == 0 || | ||
381 | valid_before < ret->valid_before) | ||
382 | ret->valid_before = valid_before; | ||
383 | } else if (opt_match(&opts, "environment")) { | ||
384 | if (ret->nenv > INT_MAX) { | ||
385 | errstr = "too many environment strings"; | ||
386 | goto fail; | ||
387 | } | ||
388 | if ((opt = opt_dequote(&opts, &errstr)) == NULL) | ||
389 | goto fail; | ||
390 | /* env name must be alphanumeric and followed by '=' */ | ||
391 | if ((tmp = strchr(opt, '=')) == NULL) { | ||
392 | free(opt); | ||
393 | errstr = "invalid environment string"; | ||
394 | goto fail; | ||
395 | } | ||
396 | for (cp = opt; cp < tmp; cp++) { | ||
397 | if (!isalnum((u_char)*cp)) { | ||
398 | free(opt); | ||
399 | errstr = "invalid environment string"; | ||
400 | goto fail; | ||
401 | } | ||
402 | } | ||
403 | /* Append it. */ | ||
404 | oarray = ret->env; | ||
405 | if ((ret->env = recallocarray(ret->env, ret->nenv, | ||
406 | ret->nenv + 1, sizeof(*ret->env))) == NULL) { | ||
407 | free(opt); | ||
408 | ret->env = oarray; /* put it back for cleanup */ | ||
409 | goto alloc_fail; | ||
410 | } | ||
411 | ret->env[ret->nenv++] = opt; | ||
412 | } else if (opt_match(&opts, "permitopen")) { | ||
413 | if (ret->npermitopen > INT_MAX) { | ||
414 | errstr = "too many permitopens"; | ||
415 | goto fail; | ||
416 | } | ||
417 | if ((opt = opt_dequote(&opts, &errstr)) == NULL) | ||
418 | goto fail; | ||
419 | if ((tmp = strdup(opt)) == NULL) { | ||
420 | free(opt); | ||
421 | goto alloc_fail; | ||
422 | } | ||
423 | cp = tmp; | ||
424 | /* validate syntax of permitopen before recording it. */ | ||
425 | host = hpdelim(&cp); | ||
426 | if (host == NULL || strlen(host) >= NI_MAXHOST) { | ||
427 | free(tmp); | ||
428 | free(opt); | ||
429 | errstr = "invalid permitopen hostname"; | ||
430 | goto fail; | ||
431 | } | ||
432 | /* | ||
433 | * don't want to use permitopen_port to avoid | ||
434 | * dependency on channels.[ch] here. | ||
435 | */ | ||
436 | if (cp == NULL || | ||
437 | (strcmp(cp, "*") != 0 && a2port(cp) <= 0)) { | ||
438 | free(tmp); | ||
439 | free(opt); | ||
440 | errstr = "invalid permitopen port"; | ||
441 | goto fail; | ||
442 | } | ||
443 | /* XXX - add streamlocal support */ | ||
444 | free(tmp); | ||
445 | /* Record it */ | ||
446 | oarray = ret->permitopen; | ||
447 | if ((ret->permitopen = recallocarray(ret->permitopen, | ||
448 | ret->npermitopen, ret->npermitopen + 1, | ||
449 | sizeof(*ret->permitopen))) == NULL) { | ||
450 | free(opt); | ||
451 | ret->permitopen = oarray; | ||
452 | goto alloc_fail; | ||
453 | } | ||
454 | ret->permitopen[ret->npermitopen++] = opt; | ||
455 | } else if (opt_match(&opts, "tunnel")) { | ||
456 | if ((opt = opt_dequote(&opts, &errstr)) == NULL) | ||
457 | goto fail; | ||
458 | ret->force_tun_device = a2tun(opt, NULL); | ||
459 | free(opt); | ||
460 | if (ret->force_tun_device == SSH_TUNID_ERR) { | ||
461 | errstr = "invalid tun device"; | ||
462 | goto fail; | ||
463 | } | ||
464 | } | ||
465 | /* | ||
466 | * Skip the comma, and move to the next option | ||
467 | * (or break out if there are no more). | ||
468 | */ | ||
469 | if (*opts == '\0' || *opts == ' ' || *opts == '\t') | ||
470 | break; /* End of options. */ | ||
471 | /* Anything other than a comma is an unknown option */ | ||
472 | if (*opts != ',') { | ||
473 | errstr = "unknown key option"; | ||
474 | goto fail; | ||
475 | } | ||
476 | opts++; | ||
477 | if (*opts == '\0') { | ||
478 | errstr = "unexpected end-of-options"; | ||
479 | goto fail; | ||
480 | } | ||
481 | } | ||
482 | |||
483 | /* success */ | ||
484 | if (errstrp != NULL) | ||
485 | *errstrp = NULL; | ||
486 | return ret; | ||
487 | |||
488 | alloc_fail: | ||
489 | errstr = "memory allocation failed"; | ||
490 | fail: | ||
491 | sshauthopt_free(ret); | ||
492 | if (errstrp != NULL) | ||
493 | *errstrp = errstr; | ||
494 | return NULL; | ||
495 | } | ||
496 | |||
497 | struct sshauthopt * | ||
498 | sshauthopt_from_cert(struct sshkey *k) | ||
499 | { | ||
500 | struct sshauthopt *ret; | ||
501 | |||
502 | if (k == NULL || !sshkey_type_is_cert(k->type) || k->cert == NULL || | ||
503 | k->cert->type != SSH2_CERT_TYPE_USER) | ||
504 | return NULL; | ||
505 | |||
506 | if ((ret = sshauthopt_new()) == NULL) | ||
507 | return NULL; | ||
508 | |||
509 | /* Handle options and critical extensions separately */ | ||
510 | if (cert_option_list(ret, k->cert->critical, | ||
511 | OPTIONS_CRITICAL, 1) == -1) { | ||
512 | sshauthopt_free(ret); | ||
513 | return NULL; | ||
514 | } | ||
515 | if (cert_option_list(ret, k->cert->extensions, | ||
516 | OPTIONS_EXTENSIONS, 0) == -1) { | ||
517 | sshauthopt_free(ret); | ||
518 | return NULL; | ||
519 | } | ||
520 | /* success */ | ||
521 | return ret; | ||
522 | } | ||
523 | |||
622 | /* | 524 | /* |
623 | * Set options from critical certificate options. These supersede user key | 525 | * Merges "additional" options to "primary" and returns the result. |
624 | * options so this must be called after auth_parse_options(). | 526 | * NB. Some options from primary have primacy. |
625 | */ | 527 | */ |
626 | int | 528 | struct sshauthopt * |
627 | auth_cert_options(struct sshkey *k, struct passwd *pw, const char **reason) | 529 | sshauthopt_merge(const struct sshauthopt *primary, |
530 | const struct sshauthopt *additional, const char **errstrp) | ||
628 | { | 531 | { |
629 | int cert_no_port_forwarding_flag = 1; | 532 | struct sshauthopt *ret; |
630 | int cert_no_agent_forwarding_flag = 1; | 533 | const char *errstr = "internal error"; |
631 | int cert_no_x11_forwarding_flag = 1; | 534 | const char *tmp; |
632 | int cert_no_pty_flag = 1; | 535 | |
633 | int cert_no_user_rc = 1; | 536 | if (errstrp != NULL) |
634 | char *cert_forced_command = NULL; | 537 | *errstrp = NULL; |
635 | int cert_source_address_done = 0; | 538 | |
636 | 539 | if ((ret = sshauthopt_new()) == NULL) | |
637 | *reason = "invalid certificate options"; | 540 | goto alloc_fail; |
638 | 541 | ||
639 | /* Separate options and extensions for v01 certs */ | 542 | /* cert_authority and cert_principals are cleared in result */ |
640 | if (parse_option_list(k->cert->critical, pw, | 543 | |
641 | OPTIONS_CRITICAL, 1, NULL, NULL, NULL, NULL, NULL, | 544 | /* Prefer access lists from primary. */ |
642 | &cert_forced_command, | 545 | /* XXX err is both set and mismatch? */ |
643 | &cert_source_address_done) == -1) | 546 | tmp = primary->required_from_host_cert; |
644 | return -1; | 547 | if (tmp == NULL) |
645 | if (parse_option_list(k->cert->extensions, pw, | 548 | tmp = additional->required_from_host_cert; |
646 | OPTIONS_EXTENSIONS, 0, | 549 | if (tmp != NULL && (ret->required_from_host_cert = strdup(tmp)) == NULL) |
647 | &cert_no_port_forwarding_flag, | 550 | goto alloc_fail; |
648 | &cert_no_agent_forwarding_flag, | 551 | tmp = primary->required_from_host_keys; |
649 | &cert_no_x11_forwarding_flag, | 552 | if (tmp == NULL) |
650 | &cert_no_pty_flag, | 553 | tmp = additional->required_from_host_keys; |
651 | &cert_no_user_rc, | 554 | if (tmp != NULL && (ret->required_from_host_keys = strdup(tmp)) == NULL) |
652 | NULL, NULL) == -1) | 555 | goto alloc_fail; |
653 | return -1; | 556 | |
557 | /* force_tun_device, permitopen and environment prefer the primary. */ | ||
558 | ret->force_tun_device = primary->force_tun_device; | ||
559 | if (ret->force_tun_device == -1) | ||
560 | ret->force_tun_device = additional->force_tun_device; | ||
561 | if (primary->nenv > 0) { | ||
562 | if (dup_strings(&ret->env, &ret->nenv, | ||
563 | primary->env, primary->nenv) != 0) | ||
564 | goto alloc_fail; | ||
565 | } else if (additional->nenv) { | ||
566 | if (dup_strings(&ret->env, &ret->nenv, | ||
567 | additional->env, additional->nenv) != 0) | ||
568 | goto alloc_fail; | ||
569 | } | ||
570 | if (primary->npermitopen > 0) { | ||
571 | if (dup_strings(&ret->permitopen, &ret->npermitopen, | ||
572 | primary->permitopen, primary->npermitopen) != 0) | ||
573 | goto alloc_fail; | ||
574 | } else if (additional->npermitopen > 0) { | ||
575 | if (dup_strings(&ret->permitopen, &ret->npermitopen, | ||
576 | additional->permitopen, additional->npermitopen) != 0) | ||
577 | goto alloc_fail; | ||
578 | } | ||
579 | |||
580 | /* Flags are logical-AND (i.e. must be set in both for permission) */ | ||
581 | #define OPTFLAG(x) ret->x = (primary->x == 1) && (additional->x == 1) | ||
582 | OPTFLAG(permit_port_forwarding_flag); | ||
583 | OPTFLAG(permit_agent_forwarding_flag); | ||
584 | OPTFLAG(permit_x11_forwarding_flag); | ||
585 | OPTFLAG(permit_pty_flag); | ||
586 | OPTFLAG(permit_user_rc); | ||
587 | #undef OPTFLAG | ||
588 | |||
589 | /* Earliest expiry time should win */ | ||
590 | if (primary->valid_before != 0) | ||
591 | ret->valid_before = primary->valid_before; | ||
592 | if (additional->valid_before != 0 && | ||
593 | additional->valid_before < ret->valid_before) | ||
594 | ret->valid_before = additional->valid_before; | ||
654 | 595 | ||
655 | no_port_forwarding_flag |= cert_no_port_forwarding_flag; | ||
656 | no_agent_forwarding_flag |= cert_no_agent_forwarding_flag; | ||
657 | no_x11_forwarding_flag |= cert_no_x11_forwarding_flag; | ||
658 | no_pty_flag |= cert_no_pty_flag; | ||
659 | no_user_rc |= cert_no_user_rc; | ||
660 | /* | 596 | /* |
661 | * Only permit both CA and key option forced-command if they match. | 597 | * When both multiple forced-command are specified, only |
662 | * Otherwise refuse the certificate. | 598 | * proceed if they are identical, otherwise fail. |
663 | */ | 599 | */ |
664 | if (cert_forced_command != NULL && forced_command != NULL) { | 600 | if (primary->force_command != NULL && |
665 | if (strcmp(forced_command, cert_forced_command) == 0) { | 601 | additional->force_command != NULL) { |
666 | free(forced_command); | 602 | if (strcmp(primary->force_command, |
667 | forced_command = cert_forced_command; | 603 | additional->force_command) == 0) { |
604 | /* ok */ | ||
605 | ret->force_command = strdup(primary->force_command); | ||
606 | if (ret->force_command == NULL) | ||
607 | goto alloc_fail; | ||
668 | } else { | 608 | } else { |
669 | *reason = "certificate and key options forced command " | 609 | errstr = "forced command options do not match"; |
670 | "do not match"; | 610 | goto fail; |
671 | free(cert_forced_command); | 611 | } |
672 | return -1; | 612 | } else if (primary->force_command != NULL) { |
613 | if ((ret->force_command = strdup( | ||
614 | primary->force_command)) == NULL) | ||
615 | goto alloc_fail; | ||
616 | } else if (additional->force_command != NULL) { | ||
617 | if ((ret->force_command = strdup( | ||
618 | additional->force_command)) == NULL) | ||
619 | goto alloc_fail; | ||
620 | } | ||
621 | /* success */ | ||
622 | if (errstrp != NULL) | ||
623 | *errstrp = NULL; | ||
624 | return ret; | ||
625 | |||
626 | alloc_fail: | ||
627 | errstr = "memory allocation failed"; | ||
628 | fail: | ||
629 | if (errstrp != NULL) | ||
630 | *errstrp = errstr; | ||
631 | sshauthopt_free(ret); | ||
632 | return NULL; | ||
633 | } | ||
634 | |||
635 | /* | ||
636 | * Copy options | ||
637 | */ | ||
638 | struct sshauthopt * | ||
639 | sshauthopt_copy(const struct sshauthopt *orig) | ||
640 | { | ||
641 | struct sshauthopt *ret; | ||
642 | |||
643 | if ((ret = sshauthopt_new()) == NULL) | ||
644 | return NULL; | ||
645 | |||
646 | #define OPTSCALAR(x) ret->x = orig->x | ||
647 | OPTSCALAR(permit_port_forwarding_flag); | ||
648 | OPTSCALAR(permit_agent_forwarding_flag); | ||
649 | OPTSCALAR(permit_x11_forwarding_flag); | ||
650 | OPTSCALAR(permit_pty_flag); | ||
651 | OPTSCALAR(permit_user_rc); | ||
652 | OPTSCALAR(restricted); | ||
653 | OPTSCALAR(cert_authority); | ||
654 | OPTSCALAR(force_tun_device); | ||
655 | OPTSCALAR(valid_before); | ||
656 | #undef OPTSCALAR | ||
657 | #define OPTSTRING(x) \ | ||
658 | do { \ | ||
659 | if (orig->x != NULL && (ret->x = strdup(orig->x)) == NULL) { \ | ||
660 | sshauthopt_free(ret); \ | ||
661 | return NULL; \ | ||
662 | } \ | ||
663 | } while (0) | ||
664 | OPTSTRING(cert_principals); | ||
665 | OPTSTRING(force_command); | ||
666 | OPTSTRING(required_from_host_cert); | ||
667 | OPTSTRING(required_from_host_keys); | ||
668 | #undef OPTSTRING | ||
669 | |||
670 | if (dup_strings(&ret->env, &ret->nenv, orig->env, orig->nenv) != 0 || | ||
671 | dup_strings(&ret->permitopen, &ret->npermitopen, | ||
672 | orig->permitopen, orig->npermitopen) != 0) { | ||
673 | sshauthopt_free(ret); | ||
674 | return NULL; | ||
675 | } | ||
676 | return ret; | ||
677 | } | ||
678 | |||
679 | static int | ||
680 | serialise_array(struct sshbuf *m, char **a, size_t n) | ||
681 | { | ||
682 | struct sshbuf *b; | ||
683 | size_t i; | ||
684 | int r; | ||
685 | |||
686 | if (n > INT_MAX) | ||
687 | return SSH_ERR_INTERNAL_ERROR; | ||
688 | |||
689 | if ((b = sshbuf_new()) == NULL) { | ||
690 | return SSH_ERR_ALLOC_FAIL; | ||
691 | } | ||
692 | for (i = 0; i < n; i++) { | ||
693 | if ((r = sshbuf_put_cstring(b, a[i])) != 0) { | ||
694 | sshbuf_free(b); | ||
695 | return r; | ||
673 | } | 696 | } |
674 | } else if (cert_forced_command != NULL) | 697 | } |
675 | forced_command = cert_forced_command; | 698 | if ((r = sshbuf_put_u32(m, n)) != 0 || |
699 | (r = sshbuf_put_stringb(m, b)) != 0) { | ||
700 | sshbuf_free(b); | ||
701 | return r; | ||
702 | } | ||
676 | /* success */ | 703 | /* success */ |
677 | *reason = NULL; | ||
678 | return 0; | 704 | return 0; |
679 | } | 705 | } |
680 | 706 | ||
707 | static int | ||
708 | deserialise_array(struct sshbuf *m, char ***ap, size_t *np) | ||
709 | { | ||
710 | char **a = NULL; | ||
711 | size_t i, n = 0; | ||
712 | struct sshbuf *b = NULL; | ||
713 | u_int tmp; | ||
714 | int r = SSH_ERR_INTERNAL_ERROR; | ||
715 | |||
716 | if ((r = sshbuf_get_u32(m, &tmp)) != 0 || | ||
717 | (r = sshbuf_froms(m, &b)) != 0) | ||
718 | goto out; | ||
719 | if (tmp > INT_MAX) { | ||
720 | r = SSH_ERR_INVALID_FORMAT; | ||
721 | goto out; | ||
722 | } | ||
723 | n = tmp; | ||
724 | if (n > 0 && (a = calloc(n, sizeof(*a))) == NULL) { | ||
725 | r = SSH_ERR_ALLOC_FAIL; | ||
726 | goto out; | ||
727 | } | ||
728 | for (i = 0; i < n; i++) { | ||
729 | if ((r = sshbuf_get_cstring(b, &a[i], NULL)) != 0) | ||
730 | goto out; | ||
731 | } | ||
732 | /* success */ | ||
733 | r = 0; | ||
734 | *ap = a; | ||
735 | a = NULL; | ||
736 | *np = n; | ||
737 | n = 0; | ||
738 | out: | ||
739 | for (i = 0; i < n; i++) | ||
740 | free(a[i]); | ||
741 | free(a); | ||
742 | sshbuf_free(b); | ||
743 | return r; | ||
744 | } | ||
745 | |||
746 | static int | ||
747 | serialise_nullable_string(struct sshbuf *m, const char *s) | ||
748 | { | ||
749 | int r; | ||
750 | |||
751 | if ((r = sshbuf_put_u8(m, s == NULL)) != 0 || | ||
752 | (r = sshbuf_put_cstring(m, s)) != 0) | ||
753 | return r; | ||
754 | return 0; | ||
755 | } | ||
756 | |||
757 | static int | ||
758 | deserialise_nullable_string(struct sshbuf *m, char **sp) | ||
759 | { | ||
760 | int r; | ||
761 | u_char flag; | ||
762 | |||
763 | *sp = NULL; | ||
764 | if ((r = sshbuf_get_u8(m, &flag)) != 0 || | ||
765 | (r = sshbuf_get_cstring(m, flag ? NULL : sp, NULL)) != 0) | ||
766 | return r; | ||
767 | return 0; | ||
768 | } | ||
769 | |||
770 | int | ||
771 | sshauthopt_serialise(const struct sshauthopt *opts, struct sshbuf *m, | ||
772 | int untrusted) | ||
773 | { | ||
774 | int r = SSH_ERR_INTERNAL_ERROR; | ||
775 | |||
776 | /* Flag and simple integer options */ | ||
777 | if ((r = sshbuf_put_u8(m, opts->permit_port_forwarding_flag)) != 0 || | ||
778 | (r = sshbuf_put_u8(m, opts->permit_agent_forwarding_flag)) != 0 || | ||
779 | (r = sshbuf_put_u8(m, opts->permit_x11_forwarding_flag)) != 0 || | ||
780 | (r = sshbuf_put_u8(m, opts->permit_pty_flag)) != 0 || | ||
781 | (r = sshbuf_put_u8(m, opts->permit_user_rc)) != 0 || | ||
782 | (r = sshbuf_put_u8(m, opts->restricted)) != 0 || | ||
783 | (r = sshbuf_put_u8(m, opts->cert_authority)) != 0 || | ||
784 | (r = sshbuf_put_u64(m, opts->valid_before)) != 0) | ||
785 | return r; | ||
786 | |||
787 | /* tunnel number can be negative to indicate "unset" */ | ||
788 | if ((r = sshbuf_put_u8(m, opts->force_tun_device == -1)) != 0 || | ||
789 | (r = sshbuf_put_u32(m, (opts->force_tun_device < 0) ? | ||
790 | 0 : (u_int)opts->force_tun_device)) != 0) | ||
791 | return r; | ||
792 | |||
793 | /* String options; these may be NULL */ | ||
794 | if ((r = serialise_nullable_string(m, | ||
795 | untrusted ? "yes" : opts->cert_principals)) != 0 || | ||
796 | (r = serialise_nullable_string(m, | ||
797 | untrusted ? "true" : opts->force_command)) != 0 || | ||
798 | (r = serialise_nullable_string(m, | ||
799 | untrusted ? NULL : opts->required_from_host_cert)) != 0 || | ||
800 | (r = serialise_nullable_string(m, | ||
801 | untrusted ? NULL : opts->required_from_host_keys)) != 0) | ||
802 | return r; | ||
803 | |||
804 | /* Array options */ | ||
805 | if ((r = serialise_array(m, opts->env, | ||
806 | untrusted ? 0 : opts->nenv)) != 0 || | ||
807 | (r = serialise_array(m, opts->permitopen, | ||
808 | untrusted ? 0 : opts->npermitopen)) != 0) | ||
809 | return r; | ||
810 | |||
811 | /* success */ | ||
812 | return 0; | ||
813 | } | ||
814 | |||
815 | int | ||
816 | sshauthopt_deserialise(struct sshbuf *m, struct sshauthopt **optsp) | ||
817 | { | ||
818 | struct sshauthopt *opts = NULL; | ||
819 | int r = SSH_ERR_INTERNAL_ERROR; | ||
820 | u_char f; | ||
821 | u_int tmp; | ||
822 | |||
823 | if ((opts = calloc(1, sizeof(*opts))) == NULL) | ||
824 | return SSH_ERR_ALLOC_FAIL; | ||
825 | |||
826 | #define OPT_FLAG(x) \ | ||
827 | do { \ | ||
828 | if ((r = sshbuf_get_u8(m, &f)) != 0) \ | ||
829 | goto out; \ | ||
830 | opts->x = f; \ | ||
831 | } while (0) | ||
832 | OPT_FLAG(permit_port_forwarding_flag); | ||
833 | OPT_FLAG(permit_agent_forwarding_flag); | ||
834 | OPT_FLAG(permit_x11_forwarding_flag); | ||
835 | OPT_FLAG(permit_pty_flag); | ||
836 | OPT_FLAG(permit_user_rc); | ||
837 | OPT_FLAG(restricted); | ||
838 | OPT_FLAG(cert_authority); | ||
839 | #undef OPT_FLAG | ||
840 | |||
841 | if ((r = sshbuf_get_u64(m, &opts->valid_before)) != 0) | ||
842 | goto out; | ||
843 | |||
844 | /* tunnel number can be negative to indicate "unset" */ | ||
845 | if ((r = sshbuf_get_u8(m, &f)) != 0 || | ||
846 | (r = sshbuf_get_u32(m, &tmp)) != 0) | ||
847 | goto out; | ||
848 | opts->force_tun_device = f ? -1 : (int)tmp; | ||
849 | |||
850 | /* String options may be NULL */ | ||
851 | if ((r = deserialise_nullable_string(m, &opts->cert_principals)) != 0 || | ||
852 | (r = deserialise_nullable_string(m, &opts->force_command)) != 0 || | ||
853 | (r = deserialise_nullable_string(m, | ||
854 | &opts->required_from_host_cert)) != 0 || | ||
855 | (r = deserialise_nullable_string(m, | ||
856 | &opts->required_from_host_keys)) != 0) | ||
857 | goto out; | ||
858 | |||
859 | /* Array options */ | ||
860 | if ((r = deserialise_array(m, &opts->env, &opts->nenv)) != 0 || | ||
861 | (r = deserialise_array(m, | ||
862 | &opts->permitopen, &opts->npermitopen)) != 0) | ||
863 | goto out; | ||
864 | |||
865 | /* success */ | ||
866 | r = 0; | ||
867 | *optsp = opts; | ||
868 | opts = NULL; | ||
869 | out: | ||
870 | sshauthopt_free(opts); | ||
871 | return r; | ||
872 | } | ||
diff --git a/auth-options.h b/auth-options.h index 4de0f14dc..bf59b30be 100644 --- a/auth-options.h +++ b/auth-options.h | |||
@@ -1,41 +1,91 @@ | |||
1 | /* $OpenBSD: auth-options.h,v 1.23 2017/05/31 10:54:00 markus Exp $ */ | 1 | /* $OpenBSD: auth-options.h,v 1.26 2018/03/12 00:52:01 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Copyright (c) 2018 Damien Miller <djm@mindrot.org> |
5 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | ||
6 | * All rights reserved | ||
7 | * | 5 | * |
8 | * As far as I am concerned, the code I have written for this software | 6 | * Permission to use, copy, modify, and distribute this software for any |
9 | * can be used freely for any purpose. Any derived versions of this | 7 | * purpose with or without fee is hereby granted, provided that the above |
10 | * software must be clearly marked as such, and if the derived work is | 8 | * copyright notice and this permission notice appear in all copies. |
11 | * incompatible with the protocol description in the RFC file, it must be | 9 | * |
12 | * called by a name other than "ssh" or "Secure Shell". | 10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
13 | */ | 17 | */ |
14 | 18 | ||
15 | #ifndef AUTH_OPTIONS_H | 19 | #ifndef AUTH_OPTIONS_H |
16 | #define AUTH_OPTIONS_H | 20 | #define AUTH_OPTIONS_H |
17 | 21 | ||
18 | /* Linked list of custom environment strings */ | 22 | struct passwd; |
19 | struct envstring { | 23 | struct sshkey; |
20 | struct envstring *next; | 24 | |
21 | char *s; | 25 | /* |
26 | * sshauthopt represents key options parsed from authorized_keys or | ||
27 | * from certificate extensions/options. | ||
28 | */ | ||
29 | struct sshauthopt { | ||
30 | /* Feature flags */ | ||
31 | int permit_port_forwarding_flag; | ||
32 | int permit_agent_forwarding_flag; | ||
33 | int permit_x11_forwarding_flag; | ||
34 | int permit_pty_flag; | ||
35 | int permit_user_rc; | ||
36 | |||
37 | /* "restrict" keyword was invoked */ | ||
38 | int restricted; | ||
39 | |||
40 | /* key/principal expiry date */ | ||
41 | uint64_t valid_before; | ||
42 | |||
43 | /* Certificate-related options */ | ||
44 | int cert_authority; | ||
45 | char *cert_principals; | ||
46 | |||
47 | int force_tun_device; | ||
48 | char *force_command; | ||
49 | |||
50 | /* Custom environment */ | ||
51 | size_t nenv; | ||
52 | char **env; | ||
53 | |||
54 | /* Permitted port forwardings */ | ||
55 | size_t npermitopen; | ||
56 | char **permitopen; | ||
57 | |||
58 | /* | ||
59 | * Permitted host/addresses (comma-separated) | ||
60 | * Caller must check source address matches both lists (if present). | ||
61 | */ | ||
62 | char *required_from_host_cert; | ||
63 | char *required_from_host_keys; | ||
22 | }; | 64 | }; |
23 | 65 | ||
24 | /* Flags that may be set in authorized_keys options. */ | 66 | struct sshauthopt *sshauthopt_new(void); |
25 | extern int no_port_forwarding_flag; | 67 | struct sshauthopt *sshauthopt_new_with_keys_defaults(void); |
26 | extern int no_agent_forwarding_flag; | 68 | void sshauthopt_free(struct sshauthopt *opts); |
27 | extern int no_x11_forwarding_flag; | 69 | struct sshauthopt *sshauthopt_copy(const struct sshauthopt *orig); |
28 | extern int no_pty_flag; | 70 | int sshauthopt_serialise(const struct sshauthopt *opts, struct sshbuf *m, int); |
29 | extern int no_user_rc; | 71 | int sshauthopt_deserialise(struct sshbuf *m, struct sshauthopt **opts); |
30 | extern char *forced_command; | 72 | |
31 | extern struct envstring *custom_environment; | 73 | /* |
32 | extern int forced_tun_device; | 74 | * Parse authorized_keys options. Returns an options structure on success |
33 | extern int key_is_cert_authority; | 75 | * or NULL on failure. Will set errstr on failure. |
34 | extern char *authorized_principals; | 76 | */ |
35 | 77 | struct sshauthopt *sshauthopt_parse(const char *s, const char **errstr); | |
36 | void auth_start_parse_options(void); | 78 | |
37 | int auth_parse_options(struct passwd *, char *, const char *, u_long); | 79 | /* |
38 | void auth_clear_options(void); | 80 | * Parse certification options to a struct sshauthopt. |
39 | int auth_cert_options(struct sshkey *, struct passwd *, const char **); | 81 | * Returns options on success or NULL on failure. |
82 | */ | ||
83 | struct sshauthopt *sshauthopt_from_cert(struct sshkey *k); | ||
84 | |||
85 | /* | ||
86 | * Merge key options. | ||
87 | */ | ||
88 | struct sshauthopt *sshauthopt_merge(const struct sshauthopt *primary, | ||
89 | const struct sshauthopt *additional, const char **errstrp); | ||
40 | 90 | ||
41 | #endif | 91 | #endif |
diff --git a/auth-pam.c b/auth-pam.c index de29c04c9..00ba87775 100644 --- a/auth-pam.c +++ b/auth-pam.c | |||
@@ -287,18 +287,27 @@ sshpam_chauthtok_ruid(pam_handle_t *pamh, int flags) | |||
287 | void | 287 | void |
288 | sshpam_password_change_required(int reqd) | 288 | sshpam_password_change_required(int reqd) |
289 | { | 289 | { |
290 | extern struct sshauthopt *auth_opts; | ||
291 | static int saved_port, saved_agent, saved_x11; | ||
292 | |||
290 | debug3("%s %d", __func__, reqd); | 293 | debug3("%s %d", __func__, reqd); |
291 | if (sshpam_authctxt == NULL) | 294 | if (sshpam_authctxt == NULL) |
292 | fatal("%s: PAM authctxt not initialized", __func__); | 295 | fatal("%s: PAM authctxt not initialized", __func__); |
293 | sshpam_authctxt->force_pwchange = reqd; | 296 | sshpam_authctxt->force_pwchange = reqd; |
294 | if (reqd) { | 297 | if (reqd) { |
295 | no_port_forwarding_flag |= 2; | 298 | saved_port = auth_opts->permit_port_forwarding_flag; |
296 | no_agent_forwarding_flag |= 2; | 299 | saved_agent = auth_opts->permit_agent_forwarding_flag; |
297 | no_x11_forwarding_flag |= 2; | 300 | saved_x11 = auth_opts->permit_x11_forwarding_flag; |
301 | auth_opts->permit_port_forwarding_flag = 0; | ||
302 | auth_opts->permit_agent_forwarding_flag = 0; | ||
303 | auth_opts->permit_x11_forwarding_flag = 0; | ||
298 | } else { | 304 | } else { |
299 | no_port_forwarding_flag &= ~2; | 305 | if (saved_port) |
300 | no_agent_forwarding_flag &= ~2; | 306 | auth_opts->permit_port_forwarding_flag = saved_port; |
301 | no_x11_forwarding_flag &= ~2; | 307 | if (saved_agent) |
308 | auth_opts->permit_agent_forwarding_flag = saved_agent; | ||
309 | if (saved_x11) | ||
310 | auth_opts->permit_x11_forwarding_flag = saved_x11; | ||
302 | } | 311 | } |
303 | } | 312 | } |
304 | 313 | ||
@@ -1077,7 +1086,7 @@ do_pam_chauthtok(void) | |||
1077 | } | 1086 | } |
1078 | 1087 | ||
1079 | void | 1088 | void |
1080 | do_pam_session(void) | 1089 | do_pam_session(struct ssh *ssh) |
1081 | { | 1090 | { |
1082 | debug3("PAM: opening session"); | 1091 | debug3("PAM: opening session"); |
1083 | 1092 | ||
@@ -1093,7 +1102,7 @@ do_pam_session(void) | |||
1093 | sshpam_session_open = 1; | 1102 | sshpam_session_open = 1; |
1094 | else { | 1103 | else { |
1095 | sshpam_session_open = 0; | 1104 | sshpam_session_open = 0; |
1096 | disable_forwarding(); | 1105 | auth_restrict_session(ssh); |
1097 | error("PAM: pam_open_session(): %s", | 1106 | error("PAM: pam_open_session(): %s", |
1098 | pam_strerror(sshpam_handle, sshpam_err)); | 1107 | pam_strerror(sshpam_handle, sshpam_err)); |
1099 | } | 1108 | } |
diff --git a/auth-pam.h b/auth-pam.h index c47b442e4..419860745 100644 --- a/auth-pam.h +++ b/auth-pam.h | |||
@@ -25,10 +25,12 @@ | |||
25 | #include "includes.h" | 25 | #include "includes.h" |
26 | #ifdef USE_PAM | 26 | #ifdef USE_PAM |
27 | 27 | ||
28 | struct ssh; | ||
29 | |||
28 | void start_pam(Authctxt *); | 30 | void start_pam(Authctxt *); |
29 | void finish_pam(void); | 31 | void finish_pam(void); |
30 | u_int do_pam_account(void); | 32 | u_int do_pam_account(void); |
31 | void do_pam_session(void); | 33 | void do_pam_session(struct ssh *); |
32 | void do_pam_setcred(int ); | 34 | void do_pam_setcred(int ); |
33 | void do_pam_chauthtok(void); | 35 | void do_pam_chauthtok(void); |
34 | int do_pam_putenv(char *, char *); | 36 | int do_pam_putenv(char *, char *); |
diff --git a/auth-passwd.c b/auth-passwd.c index 996c2cf71..6097fdd24 100644 --- a/auth-passwd.c +++ b/auth-passwd.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: auth-passwd.c,v 1.45 2016/07/21 01:39:35 dtucker Exp $ */ | 1 | /* $OpenBSD: auth-passwd.c,v 1.46 2018/03/03 03:15:51 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 |
@@ -68,22 +68,15 @@ extern login_cap_t *lc; | |||
68 | 68 | ||
69 | #define MAX_PASSWORD_LEN 1024 | 69 | #define MAX_PASSWORD_LEN 1024 |
70 | 70 | ||
71 | void | ||
72 | disable_forwarding(void) | ||
73 | { | ||
74 | no_port_forwarding_flag = 1; | ||
75 | no_agent_forwarding_flag = 1; | ||
76 | no_x11_forwarding_flag = 1; | ||
77 | } | ||
78 | |||
79 | /* | 71 | /* |
80 | * Tries to authenticate the user using password. Returns true if | 72 | * Tries to authenticate the user using password. Returns true if |
81 | * authentication succeeds. | 73 | * authentication succeeds. |
82 | */ | 74 | */ |
83 | int | 75 | int |
84 | auth_password(Authctxt *authctxt, const char *password) | 76 | auth_password(struct ssh *ssh, const char *password) |
85 | { | 77 | { |
86 | struct passwd * pw = authctxt->pw; | 78 | Authctxt *authctxt = ssh->authctxt; |
79 | struct passwd *pw = authctxt->pw; | ||
87 | int result, ok = authctxt->valid; | 80 | int result, ok = authctxt->valid; |
88 | #if defined(USE_SHADOW) && defined(HAS_SHADOW_EXPIRE) | 81 | #if defined(USE_SHADOW) && defined(HAS_SHADOW_EXPIRE) |
89 | static int expire_checked = 0; | 82 | static int expire_checked = 0; |
@@ -128,9 +121,9 @@ auth_password(Authctxt *authctxt, const char *password) | |||
128 | authctxt->force_pwchange = 1; | 121 | authctxt->force_pwchange = 1; |
129 | } | 122 | } |
130 | #endif | 123 | #endif |
131 | result = sys_auth_passwd(authctxt, password); | 124 | result = sys_auth_passwd(ssh, password); |
132 | if (authctxt->force_pwchange) | 125 | if (authctxt->force_pwchange) |
133 | disable_forwarding(); | 126 | auth_restrict_session(ssh); |
134 | return (result && ok); | 127 | return (result && ok); |
135 | } | 128 | } |
136 | 129 | ||
@@ -170,19 +163,19 @@ warn_expiry(Authctxt *authctxt, auth_session_t *as) | |||
170 | } | 163 | } |
171 | 164 | ||
172 | int | 165 | int |
173 | sys_auth_passwd(Authctxt *authctxt, const char *password) | 166 | sys_auth_passwd(struct ssh *ssh, const char *password) |
174 | { | 167 | { |
175 | struct passwd *pw = authctxt->pw; | 168 | Authctxt *authctxt = ssh->authctxt; |
176 | auth_session_t *as; | 169 | auth_session_t *as; |
177 | static int expire_checked = 0; | 170 | static int expire_checked = 0; |
178 | 171 | ||
179 | as = auth_usercheck(pw->pw_name, authctxt->style, "auth-ssh", | 172 | as = auth_usercheck(authctxt->pw->pw_name, authctxt->style, "auth-ssh", |
180 | (char *)password); | 173 | (char *)password); |
181 | if (as == NULL) | 174 | if (as == NULL) |
182 | return (0); | 175 | return (0); |
183 | if (auth_getstate(as) & AUTH_PWEXPIRED) { | 176 | if (auth_getstate(as) & AUTH_PWEXPIRED) { |
184 | auth_close(as); | 177 | auth_close(as); |
185 | disable_forwarding(); | 178 | auth_restrict_session(ssh); |
186 | authctxt->force_pwchange = 1; | 179 | authctxt->force_pwchange = 1; |
187 | return (1); | 180 | return (1); |
188 | } else { | 181 | } else { |
@@ -195,8 +188,9 @@ sys_auth_passwd(Authctxt *authctxt, const char *password) | |||
195 | } | 188 | } |
196 | #elif !defined(CUSTOM_SYS_AUTH_PASSWD) | 189 | #elif !defined(CUSTOM_SYS_AUTH_PASSWD) |
197 | int | 190 | int |
198 | sys_auth_passwd(Authctxt *authctxt, const char *password) | 191 | sys_auth_passwd(struct ssh *ssh, const char *password) |
199 | { | 192 | { |
193 | Authctxt *authctxt = ssh->authctxt; | ||
200 | struct passwd *pw = authctxt->pw; | 194 | struct passwd *pw = authctxt->pw; |
201 | char *encrypted_password, *salt = NULL; | 195 | char *encrypted_password, *salt = NULL; |
202 | 196 | ||
diff --git a/auth-sia.c b/auth-sia.c index a9e1c258c..7c97f03e5 100644 --- a/auth-sia.c +++ b/auth-sia.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <string.h> | 36 | #include <string.h> |
37 | 37 | ||
38 | #include "ssh.h" | 38 | #include "ssh.h" |
39 | #include "ssh_api.h" | ||
39 | #include "key.h" | 40 | #include "key.h" |
40 | #include "hostfile.h" | 41 | #include "hostfile.h" |
41 | #include "auth.h" | 42 | #include "auth.h" |
@@ -50,11 +51,12 @@ extern int saved_argc; | |||
50 | extern char **saved_argv; | 51 | extern char **saved_argv; |
51 | 52 | ||
52 | int | 53 | int |
53 | sys_auth_passwd(Authctxt *authctxt, const char *pass) | 54 | sys_auth_passwd(struct ssh *ssh, const char *pass) |
54 | { | 55 | { |
55 | int ret; | 56 | int ret; |
56 | SIAENTITY *ent = NULL; | 57 | SIAENTITY *ent = NULL; |
57 | const char *host; | 58 | const char *host; |
59 | Authctxt *authctxt = ssh->authctxt; | ||
58 | 60 | ||
59 | host = get_canonical_hostname(options.use_dns); | 61 | host = get_canonical_hostname(options.use_dns); |
60 | 62 | ||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: auth.c,v 1.124 2017/09/12 06:32:07 djm Exp $ */ | 1 | /* $OpenBSD: auth.c,v 1.127 2018/03/12 00:52:01 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -28,6 +28,7 @@ | |||
28 | #include <sys/types.h> | 28 | #include <sys/types.h> |
29 | #include <sys/stat.h> | 29 | #include <sys/stat.h> |
30 | #include <sys/socket.h> | 30 | #include <sys/socket.h> |
31 | #include <sys/wait.h> | ||
31 | 32 | ||
32 | #include <netinet/in.h> | 33 | #include <netinet/in.h> |
33 | 34 | ||
@@ -73,12 +74,14 @@ | |||
73 | #include "authfile.h" | 74 | #include "authfile.h" |
74 | #include "ssherr.h" | 75 | #include "ssherr.h" |
75 | #include "compat.h" | 76 | #include "compat.h" |
77 | #include "channels.h" | ||
76 | 78 | ||
77 | /* import */ | 79 | /* import */ |
78 | extern ServerOptions options; | 80 | extern ServerOptions options; |
79 | extern int use_privsep; | 81 | extern int use_privsep; |
80 | extern Buffer loginmsg; | 82 | extern Buffer loginmsg; |
81 | extern struct passwd *privsep_pw; | 83 | extern struct passwd *privsep_pw; |
84 | extern struct sshauthopt *auth_opts; | ||
82 | 85 | ||
83 | /* Debugging messages */ | 86 | /* Debugging messages */ |
84 | Buffer auth_debug; | 87 | Buffer auth_debug; |
@@ -385,10 +388,8 @@ auth_maxtries_exceeded(Authctxt *authctxt) | |||
385 | * Check whether root logins are disallowed. | 388 | * Check whether root logins are disallowed. |
386 | */ | 389 | */ |
387 | int | 390 | int |
388 | auth_root_allowed(const char *method) | 391 | auth_root_allowed(struct ssh *ssh, const char *method) |
389 | { | 392 | { |
390 | struct ssh *ssh = active_state; /* XXX */ | ||
391 | |||
392 | switch (options.permit_root_login) { | 393 | switch (options.permit_root_login) { |
393 | case PERMIT_YES: | 394 | case PERMIT_YES: |
394 | return 1; | 395 | return 1; |
@@ -400,7 +401,7 @@ auth_root_allowed(const char *method) | |||
400 | return 1; | 401 | return 1; |
401 | break; | 402 | break; |
402 | case PERMIT_FORCED_ONLY: | 403 | case PERMIT_FORCED_ONLY: |
403 | if (forced_command) { | 404 | if (auth_opts->force_command != NULL) { |
404 | logit("Root login accepted for forced command."); | 405 | logit("Root login accepted for forced command."); |
405 | return 1; | 406 | return 1; |
406 | } | 407 | } |
@@ -747,3 +748,343 @@ auth_get_canonical_hostname(struct ssh *ssh, int use_dns) | |||
747 | return dnsname; | 748 | return dnsname; |
748 | } | 749 | } |
749 | } | 750 | } |
751 | |||
752 | /* | ||
753 | * Runs command in a subprocess wuth a minimal environment. | ||
754 | * Returns pid on success, 0 on failure. | ||
755 | * The child stdout and stderr maybe captured, left attached or sent to | ||
756 | * /dev/null depending on the contents of flags. | ||
757 | * "tag" is prepended to log messages. | ||
758 | * NB. "command" is only used for logging; the actual command executed is | ||
759 | * av[0]. | ||
760 | */ | ||
761 | pid_t | ||
762 | subprocess(const char *tag, struct passwd *pw, const char *command, | ||
763 | int ac, char **av, FILE **child, u_int flags) | ||
764 | { | ||
765 | FILE *f = NULL; | ||
766 | struct stat st; | ||
767 | int fd, devnull, p[2], i; | ||
768 | pid_t pid; | ||
769 | char *cp, errmsg[512]; | ||
770 | u_int envsize; | ||
771 | char **child_env; | ||
772 | |||
773 | if (child != NULL) | ||
774 | *child = NULL; | ||
775 | |||
776 | debug3("%s: %s command \"%s\" running as %s (flags 0x%x)", __func__, | ||
777 | tag, command, pw->pw_name, flags); | ||
778 | |||
779 | /* Check consistency */ | ||
780 | if ((flags & SSH_SUBPROCESS_STDOUT_DISCARD) != 0 && | ||
781 | (flags & SSH_SUBPROCESS_STDOUT_CAPTURE) != 0) { | ||
782 | error("%s: inconsistent flags", __func__); | ||
783 | return 0; | ||
784 | } | ||
785 | if (((flags & SSH_SUBPROCESS_STDOUT_CAPTURE) == 0) != (child == NULL)) { | ||
786 | error("%s: inconsistent flags/output", __func__); | ||
787 | return 0; | ||
788 | } | ||
789 | |||
790 | /* | ||
791 | * If executing an explicit binary, then verify the it exists | ||
792 | * and appears safe-ish to execute | ||
793 | */ | ||
794 | if (*av[0] != '/') { | ||
795 | error("%s path is not absolute", tag); | ||
796 | return 0; | ||
797 | } | ||
798 | temporarily_use_uid(pw); | ||
799 | if (stat(av[0], &st) < 0) { | ||
800 | error("Could not stat %s \"%s\": %s", tag, | ||
801 | av[0], strerror(errno)); | ||
802 | restore_uid(); | ||
803 | return 0; | ||
804 | } | ||
805 | if (safe_path(av[0], &st, NULL, 0, errmsg, sizeof(errmsg)) != 0) { | ||
806 | error("Unsafe %s \"%s\": %s", tag, av[0], errmsg); | ||
807 | restore_uid(); | ||
808 | return 0; | ||
809 | } | ||
810 | /* Prepare to keep the child's stdout if requested */ | ||
811 | if (pipe(p) != 0) { | ||
812 | error("%s: pipe: %s", tag, strerror(errno)); | ||
813 | restore_uid(); | ||
814 | return 0; | ||
815 | } | ||
816 | restore_uid(); | ||
817 | |||
818 | switch ((pid = fork())) { | ||
819 | case -1: /* error */ | ||
820 | error("%s: fork: %s", tag, strerror(errno)); | ||
821 | close(p[0]); | ||
822 | close(p[1]); | ||
823 | return 0; | ||
824 | case 0: /* child */ | ||
825 | /* Prepare a minimal environment for the child. */ | ||
826 | envsize = 5; | ||
827 | child_env = xcalloc(sizeof(*child_env), envsize); | ||
828 | child_set_env(&child_env, &envsize, "PATH", _PATH_STDPATH); | ||
829 | child_set_env(&child_env, &envsize, "USER", pw->pw_name); | ||
830 | child_set_env(&child_env, &envsize, "LOGNAME", pw->pw_name); | ||
831 | child_set_env(&child_env, &envsize, "HOME", pw->pw_dir); | ||
832 | if ((cp = getenv("LANG")) != NULL) | ||
833 | child_set_env(&child_env, &envsize, "LANG", cp); | ||
834 | |||
835 | for (i = 0; i < NSIG; i++) | ||
836 | signal(i, SIG_DFL); | ||
837 | |||
838 | if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1) { | ||
839 | error("%s: open %s: %s", tag, _PATH_DEVNULL, | ||
840 | strerror(errno)); | ||
841 | _exit(1); | ||
842 | } | ||
843 | if (dup2(devnull, STDIN_FILENO) == -1) { | ||
844 | error("%s: dup2: %s", tag, strerror(errno)); | ||
845 | _exit(1); | ||
846 | } | ||
847 | |||
848 | /* Set up stdout as requested; leave stderr in place for now. */ | ||
849 | fd = -1; | ||
850 | if ((flags & SSH_SUBPROCESS_STDOUT_CAPTURE) != 0) | ||
851 | fd = p[1]; | ||
852 | else if ((flags & SSH_SUBPROCESS_STDOUT_DISCARD) != 0) | ||
853 | fd = devnull; | ||
854 | if (fd != -1 && dup2(fd, STDOUT_FILENO) == -1) { | ||
855 | error("%s: dup2: %s", tag, strerror(errno)); | ||
856 | _exit(1); | ||
857 | } | ||
858 | closefrom(STDERR_FILENO + 1); | ||
859 | |||
860 | /* Don't use permanently_set_uid() here to avoid fatal() */ | ||
861 | if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) != 0) { | ||
862 | error("%s: setresgid %u: %s", tag, (u_int)pw->pw_gid, | ||
863 | strerror(errno)); | ||
864 | _exit(1); | ||
865 | } | ||
866 | if (setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) != 0) { | ||
867 | error("%s: setresuid %u: %s", tag, (u_int)pw->pw_uid, | ||
868 | strerror(errno)); | ||
869 | _exit(1); | ||
870 | } | ||
871 | /* stdin is pointed to /dev/null at this point */ | ||
872 | if ((flags & SSH_SUBPROCESS_STDOUT_DISCARD) != 0 && | ||
873 | dup2(STDIN_FILENO, STDERR_FILENO) == -1) { | ||
874 | error("%s: dup2: %s", tag, strerror(errno)); | ||
875 | _exit(1); | ||
876 | } | ||
877 | |||
878 | execve(av[0], av, child_env); | ||
879 | error("%s exec \"%s\": %s", tag, command, strerror(errno)); | ||
880 | _exit(127); | ||
881 | default: /* parent */ | ||
882 | break; | ||
883 | } | ||
884 | |||
885 | close(p[1]); | ||
886 | if ((flags & SSH_SUBPROCESS_STDOUT_CAPTURE) == 0) | ||
887 | close(p[0]); | ||
888 | else if ((f = fdopen(p[0], "r")) == NULL) { | ||
889 | error("%s: fdopen: %s", tag, strerror(errno)); | ||
890 | close(p[0]); | ||
891 | /* Don't leave zombie child */ | ||
892 | kill(pid, SIGTERM); | ||
893 | while (waitpid(pid, NULL, 0) == -1 && errno == EINTR) | ||
894 | ; | ||
895 | return 0; | ||
896 | } | ||
897 | /* Success */ | ||
898 | debug3("%s: %s pid %ld", __func__, tag, (long)pid); | ||
899 | if (child != NULL) | ||
900 | *child = f; | ||
901 | return pid; | ||
902 | } | ||
903 | |||
904 | /* These functions link key/cert options to the auth framework */ | ||
905 | |||
906 | /* Log sshauthopt options locally and (optionally) for remote transmission */ | ||
907 | void | ||
908 | auth_log_authopts(const char *loc, const struct sshauthopt *opts, int do_remote) | ||
909 | { | ||
910 | int do_env = options.permit_user_env && opts->nenv > 0; | ||
911 | int do_permitopen = opts->npermitopen > 0 && | ||
912 | (options.allow_tcp_forwarding & FORWARD_LOCAL) != 0; | ||
913 | size_t i; | ||
914 | char msg[1024], buf[64]; | ||
915 | |||
916 | snprintf(buf, sizeof(buf), "%d", opts->force_tun_device); | ||
917 | /* Try to keep this alphabetically sorted */ | ||
918 | snprintf(msg, sizeof(msg), "key options:%s%s%s%s%s%s%s%s%s%s%s%s", | ||
919 | opts->permit_agent_forwarding_flag ? " agent-forwarding" : "", | ||
920 | opts->force_command == NULL ? "" : " command", | ||
921 | do_env ? " environment" : "", | ||
922 | opts->valid_before == 0 ? "" : "expires", | ||
923 | do_permitopen ? " permitopen" : "", | ||
924 | opts->permit_port_forwarding_flag ? " port-forwarding" : "", | ||
925 | opts->cert_principals == NULL ? "" : " principals", | ||
926 | opts->permit_pty_flag ? " pty" : "", | ||
927 | opts->force_tun_device == -1 ? "" : " tun=", | ||
928 | opts->force_tun_device == -1 ? "" : buf, | ||
929 | opts->permit_user_rc ? " user-rc" : "", | ||
930 | opts->permit_x11_forwarding_flag ? " x11-forwarding" : ""); | ||
931 | |||
932 | debug("%s: %s", loc, msg); | ||
933 | if (do_remote) | ||
934 | auth_debug_add("%s: %s", loc, msg); | ||
935 | |||
936 | if (options.permit_user_env) { | ||
937 | for (i = 0; i < opts->nenv; i++) { | ||
938 | debug("%s: environment: %s", loc, opts->env[i]); | ||
939 | if (do_remote) { | ||
940 | auth_debug_add("%s: environment: %s", | ||
941 | loc, opts->env[i]); | ||
942 | } | ||
943 | } | ||
944 | } | ||
945 | |||
946 | /* Go into a little more details for the local logs. */ | ||
947 | if (opts->valid_before != 0) { | ||
948 | format_absolute_time(opts->valid_before, buf, sizeof(buf)); | ||
949 | debug("%s: expires at %s", loc, buf); | ||
950 | } | ||
951 | if (opts->cert_principals != NULL) { | ||
952 | debug("%s: authorized principals: \"%s\"", | ||
953 | loc, opts->cert_principals); | ||
954 | } | ||
955 | if (opts->force_command != NULL) | ||
956 | debug("%s: forced command: \"%s\"", loc, opts->force_command); | ||
957 | if ((options.allow_tcp_forwarding & FORWARD_LOCAL) != 0) { | ||
958 | for (i = 0; i < opts->npermitopen; i++) { | ||
959 | debug("%s: permitted open: %s", | ||
960 | loc, opts->permitopen[i]); | ||
961 | } | ||
962 | } | ||
963 | } | ||
964 | |||
965 | /* Activate a new set of key/cert options; merging with what is there. */ | ||
966 | int | ||
967 | auth_activate_options(struct ssh *ssh, struct sshauthopt *opts) | ||
968 | { | ||
969 | struct sshauthopt *old = auth_opts; | ||
970 | const char *emsg = NULL; | ||
971 | |||
972 | debug("%s: setting new authentication options", __func__); | ||
973 | if ((auth_opts = sshauthopt_merge(old, opts, &emsg)) == NULL) { | ||
974 | error("Inconsistent authentication options: %s", emsg); | ||
975 | return -1; | ||
976 | } | ||
977 | return 0; | ||
978 | } | ||
979 | |||
980 | /* Disable forwarding, etc for the session */ | ||
981 | void | ||
982 | auth_restrict_session(struct ssh *ssh) | ||
983 | { | ||
984 | struct sshauthopt *restricted; | ||
985 | |||
986 | debug("%s: restricting session", __func__); | ||
987 | |||
988 | /* A blank sshauthopt defaults to permitting nothing */ | ||
989 | restricted = sshauthopt_new(); | ||
990 | restricted->restricted = 1; | ||
991 | |||
992 | if (auth_activate_options(ssh, restricted) != 0) | ||
993 | fatal("%s: failed to restrict session", __func__); | ||
994 | sshauthopt_free(restricted); | ||
995 | } | ||
996 | |||
997 | int | ||
998 | auth_authorise_keyopts(struct ssh *ssh, struct passwd *pw, | ||
999 | struct sshauthopt *opts, int allow_cert_authority, const char *loc) | ||
1000 | { | ||
1001 | const char *remote_ip = ssh_remote_ipaddr(ssh); | ||
1002 | const char *remote_host = auth_get_canonical_hostname(ssh, | ||
1003 | options.use_dns); | ||
1004 | time_t now = time(NULL); | ||
1005 | char buf[64]; | ||
1006 | |||
1007 | /* | ||
1008 | * Check keys/principals file expiry time. | ||
1009 | * NB. validity interval in certificate is handled elsewhere. | ||
1010 | */ | ||
1011 | if (opts->valid_before && now > 0 && | ||
1012 | opts->valid_before < (uint64_t)now) { | ||
1013 | format_absolute_time(opts->valid_before, buf, sizeof(buf)); | ||
1014 | debug("%s: entry expired at %s", loc, buf); | ||
1015 | auth_debug_add("%s: entry expired at %s", loc, buf); | ||
1016 | return -1; | ||
1017 | } | ||
1018 | /* Consistency checks */ | ||
1019 | if (opts->cert_principals != NULL && !opts->cert_authority) { | ||
1020 | debug("%s: principals on non-CA key", loc); | ||
1021 | auth_debug_add("%s: principals on non-CA key", loc); | ||
1022 | /* deny access */ | ||
1023 | return -1; | ||
1024 | } | ||
1025 | /* cert-authority flag isn't valid in authorized_principals files */ | ||
1026 | if (!allow_cert_authority && opts->cert_authority) { | ||
1027 | debug("%s: cert-authority flag invalid here", loc); | ||
1028 | auth_debug_add("%s: cert-authority flag invalid here", loc); | ||
1029 | /* deny access */ | ||
1030 | return -1; | ||
1031 | } | ||
1032 | |||
1033 | /* Perform from= checks */ | ||
1034 | if (opts->required_from_host_keys != NULL) { | ||
1035 | switch (match_host_and_ip(remote_host, remote_ip, | ||
1036 | opts->required_from_host_keys )) { | ||
1037 | case 1: | ||
1038 | /* Host name matches. */ | ||
1039 | break; | ||
1040 | case -1: | ||
1041 | default: | ||
1042 | debug("%s: invalid from criteria", loc); | ||
1043 | auth_debug_add("%s: invalid from criteria", loc); | ||
1044 | /* FALLTHROUGH */ | ||
1045 | case 0: | ||
1046 | logit("%s: Authentication tried for %.100s with " | ||
1047 | "correct key but not from a permitted " | ||
1048 | "host (host=%.200s, ip=%.200s, required=%.200s).", | ||
1049 | loc, pw->pw_name, remote_host, remote_ip, | ||
1050 | opts->required_from_host_keys); | ||
1051 | auth_debug_add("%s: Your host '%.200s' is not " | ||
1052 | "permitted to use this key for login.", | ||
1053 | loc, remote_host); | ||
1054 | /* deny access */ | ||
1055 | return -1; | ||
1056 | } | ||
1057 | } | ||
1058 | /* Check source-address restriction from certificate */ | ||
1059 | if (opts->required_from_host_cert != NULL) { | ||
1060 | switch (addr_match_cidr_list(remote_ip, | ||
1061 | opts->required_from_host_cert)) { | ||
1062 | case 1: | ||
1063 | /* accepted */ | ||
1064 | break; | ||
1065 | case -1: | ||
1066 | default: | ||
1067 | /* invalid */ | ||
1068 | error("%s: Certificate source-address invalid", | ||
1069 | loc); | ||
1070 | /* FALLTHROUGH */ | ||
1071 | case 0: | ||
1072 | logit("%s: Authentication tried for %.100s with valid " | ||
1073 | "certificate but not from a permitted source " | ||
1074 | "address (%.200s).", loc, pw->pw_name, remote_ip); | ||
1075 | auth_debug_add("%s: Your address '%.200s' is not " | ||
1076 | "permitted to use this certificate for login.", | ||
1077 | loc, remote_ip); | ||
1078 | return -1; | ||
1079 | } | ||
1080 | } | ||
1081 | /* | ||
1082 | * | ||
1083 | * XXX this is spammy. We should report remotely only for keys | ||
1084 | * that are successful in actual auth attempts, and not PK_OK | ||
1085 | * tests. | ||
1086 | */ | ||
1087 | auth_log_authopts(loc, opts, 1); | ||
1088 | |||
1089 | return 0; | ||
1090 | } | ||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: auth.h,v 1.93 2017/08/18 05:36:45 djm Exp $ */ | 1 | /* $OpenBSD: auth.h,v 1.95 2018/03/03 03:15:51 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 4 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
@@ -42,9 +42,11 @@ | |||
42 | #include <krb5.h> | 42 | #include <krb5.h> |
43 | #endif | 43 | #endif |
44 | 44 | ||
45 | struct passwd; | ||
45 | struct ssh; | 46 | struct ssh; |
46 | struct sshkey; | ||
47 | struct sshbuf; | 47 | struct sshbuf; |
48 | struct sshkey; | ||
49 | struct sshauthopt; | ||
48 | 50 | ||
49 | typedef struct Authctxt Authctxt; | 51 | typedef struct Authctxt Authctxt; |
50 | typedef struct Authmethod Authmethod; | 52 | typedef struct Authmethod Authmethod; |
@@ -129,11 +131,12 @@ struct KbdintDevice | |||
129 | int | 131 | int |
130 | auth_rhosts2(struct passwd *, const char *, const char *, const char *); | 132 | auth_rhosts2(struct passwd *, const char *, const char *, const char *); |
131 | 133 | ||
132 | int auth_password(Authctxt *, const char *); | 134 | int auth_password(struct ssh *, const char *); |
133 | 135 | ||
134 | int hostbased_key_allowed(struct passwd *, const char *, char *, | 136 | int hostbased_key_allowed(struct passwd *, const char *, char *, |
135 | struct sshkey *); | 137 | struct sshkey *); |
136 | int user_key_allowed(struct passwd *, struct sshkey *, int); | 138 | int user_key_allowed(struct ssh *, struct passwd *, struct sshkey *, int, |
139 | struct sshauthopt **); | ||
137 | int auth2_key_already_used(Authctxt *, const struct sshkey *); | 140 | int auth2_key_already_used(Authctxt *, const struct sshkey *); |
138 | 141 | ||
139 | /* | 142 | /* |
@@ -164,14 +167,12 @@ int auth_shadow_pwexpired(Authctxt *); | |||
164 | #include "audit.h" | 167 | #include "audit.h" |
165 | void remove_kbdint_device(const char *); | 168 | void remove_kbdint_device(const char *); |
166 | 169 | ||
167 | void disable_forwarding(void); | ||
168 | |||
169 | void do_authentication2(Authctxt *); | 170 | void do_authentication2(Authctxt *); |
170 | 171 | ||
171 | void auth_log(Authctxt *, int, int, const char *, const char *); | 172 | void auth_log(Authctxt *, int, int, const char *, const char *); |
172 | void auth_maxtries_exceeded(Authctxt *) __attribute__((noreturn)); | 173 | void auth_maxtries_exceeded(Authctxt *) __attribute__((noreturn)); |
173 | void userauth_finish(struct ssh *, int, const char *, const char *); | 174 | void userauth_finish(struct ssh *, int, const char *, const char *); |
174 | int auth_root_allowed(const char *); | 175 | int auth_root_allowed(struct ssh *, const char *); |
175 | 176 | ||
176 | void userauth_send_banner(const char *); | 177 | void userauth_send_banner(const char *); |
177 | 178 | ||
@@ -215,14 +216,29 @@ int get_hostkey_index(struct sshkey *, int, struct ssh *); | |||
215 | int sshd_hostkey_sign(struct sshkey *, struct sshkey *, u_char **, | 216 | int sshd_hostkey_sign(struct sshkey *, struct sshkey *, u_char **, |
216 | size_t *, const u_char *, size_t, const char *, u_int); | 217 | size_t *, const u_char *, size_t, const char *, u_int); |
217 | 218 | ||
219 | /* Key / cert options linkage to auth layer */ | ||
220 | const struct sshauthopt *auth_options(struct ssh *); | ||
221 | int auth_activate_options(struct ssh *, struct sshauthopt *); | ||
222 | void auth_restrict_session(struct ssh *); | ||
223 | int auth_authorise_keyopts(struct ssh *, struct passwd *pw, | ||
224 | struct sshauthopt *, int, const char *); | ||
225 | void auth_log_authopts(const char *, const struct sshauthopt *, int); | ||
226 | |||
218 | /* debug messages during authentication */ | 227 | /* debug messages during authentication */ |
219 | void auth_debug_add(const char *fmt,...) __attribute__((format(printf, 1, 2))); | 228 | void auth_debug_add(const char *fmt,...) |
229 | __attribute__((format(printf, 1, 2))); | ||
220 | void auth_debug_send(void); | 230 | void auth_debug_send(void); |
221 | void auth_debug_reset(void); | 231 | void auth_debug_reset(void); |
222 | 232 | ||
223 | struct passwd *fakepw(void); | 233 | struct passwd *fakepw(void); |
224 | 234 | ||
225 | int sys_auth_passwd(Authctxt *, const char *); | 235 | #define SSH_SUBPROCESS_STDOUT_DISCARD (1) /* Discard stdout */ |
236 | #define SSH_SUBPROCESS_STDOUT_CAPTURE (1<<1) /* Redirect stdout */ | ||
237 | #define SSH_SUBPROCESS_STDERR_DISCARD (1<<2) /* Discard stderr */ | ||
238 | pid_t subprocess(const char *, struct passwd *, | ||
239 | const char *, int, char **, FILE **, u_int flags); | ||
240 | |||
241 | int sys_auth_passwd(struct ssh *, const char *); | ||
226 | 242 | ||
227 | #define SKEY_PROMPT "\nS/Key Password: " | 243 | #define SKEY_PROMPT "\nS/Key Password: " |
228 | 244 | ||
diff --git a/auth2-hostbased.c b/auth2-hostbased.c index 92758b38c..8996f7e05 100644 --- a/auth2-hostbased.c +++ b/auth2-hostbased.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: auth2-hostbased.c,v 1.31 2017/06/24 06:34:38 djm Exp $ */ | 1 | /* $OpenBSD: auth2-hostbased.c,v 1.33 2018/01/23 05:27:21 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -62,7 +62,7 @@ userauth_hostbased(struct ssh *ssh) | |||
62 | Authctxt *authctxt = ssh->authctxt; | 62 | Authctxt *authctxt = ssh->authctxt; |
63 | struct sshbuf *b; | 63 | struct sshbuf *b; |
64 | struct sshkey *key = NULL; | 64 | struct sshkey *key = NULL; |
65 | char *pkalg, *cuser, *chost, *service; | 65 | char *pkalg, *cuser, *chost; |
66 | u_char *pkblob, *sig; | 66 | u_char *pkblob, *sig; |
67 | size_t alen, blen, slen; | 67 | size_t alen, blen, slen; |
68 | int r, pktype, authenticated = 0; | 68 | int r, pktype, authenticated = 0; |
@@ -118,15 +118,13 @@ userauth_hostbased(struct ssh *ssh) | |||
118 | goto done; | 118 | goto done; |
119 | } | 119 | } |
120 | 120 | ||
121 | service = ssh->compat & SSH_BUG_HBSERVICE ? "ssh-userauth" : | ||
122 | authctxt->service; | ||
123 | if ((b = sshbuf_new()) == NULL) | 121 | if ((b = sshbuf_new()) == NULL) |
124 | fatal("%s: sshbuf_new failed", __func__); | 122 | fatal("%s: sshbuf_new failed", __func__); |
125 | /* reconstruct packet */ | 123 | /* reconstruct packet */ |
126 | if ((r = sshbuf_put_string(b, session_id2, session_id2_len)) != 0 || | 124 | if ((r = sshbuf_put_string(b, session_id2, session_id2_len)) != 0 || |
127 | (r = sshbuf_put_u8(b, SSH2_MSG_USERAUTH_REQUEST)) != 0 || | 125 | (r = sshbuf_put_u8(b, SSH2_MSG_USERAUTH_REQUEST)) != 0 || |
128 | (r = sshbuf_put_cstring(b, authctxt->user)) != 0 || | 126 | (r = sshbuf_put_cstring(b, authctxt->user)) != 0 || |
129 | (r = sshbuf_put_cstring(b, service)) != 0 || | 127 | (r = sshbuf_put_cstring(b, authctxt->service)) != 0 || |
130 | (r = sshbuf_put_cstring(b, "hostbased")) != 0 || | 128 | (r = sshbuf_put_cstring(b, "hostbased")) != 0 || |
131 | (r = sshbuf_put_string(b, pkalg, alen)) != 0 || | 129 | (r = sshbuf_put_string(b, pkalg, alen)) != 0 || |
132 | (r = sshbuf_put_string(b, pkblob, blen)) != 0 || | 130 | (r = sshbuf_put_string(b, pkblob, blen)) != 0 || |
@@ -144,7 +142,7 @@ userauth_hostbased(struct ssh *ssh) | |||
144 | authenticated = 0; | 142 | authenticated = 0; |
145 | if (PRIVSEP(hostbased_key_allowed(authctxt->pw, cuser, chost, key)) && | 143 | if (PRIVSEP(hostbased_key_allowed(authctxt->pw, cuser, chost, key)) && |
146 | PRIVSEP(sshkey_verify(key, sig, slen, | 144 | PRIVSEP(sshkey_verify(key, sig, slen, |
147 | sshbuf_ptr(b), sshbuf_len(b), ssh->compat)) == 0) | 145 | sshbuf_ptr(b), sshbuf_len(b), pkalg, ssh->compat)) == 0) |
148 | authenticated = 1; | 146 | authenticated = 1; |
149 | 147 | ||
150 | auth2_record_key(authctxt, authenticated, key); | 148 | auth2_record_key(authctxt, authenticated, key); |
diff --git a/auth2-none.c b/auth2-none.c index 35d25fa63..8d4e9bb8c 100644 --- a/auth2-none.c +++ b/auth2-none.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: auth2-none.c,v 1.20 2017/05/30 14:29:59 markus Exp $ */ | 1 | /* $OpenBSD: auth2-none.c,v 1.21 2018/03/03 03:15:51 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -68,7 +68,7 @@ userauth_none(struct ssh *ssh) | |||
68 | if ((r = sshpkt_get_end(ssh)) != 0) | 68 | if ((r = sshpkt_get_end(ssh)) != 0) |
69 | fatal("%s: %s", __func__, ssh_err(r)); | 69 | fatal("%s: %s", __func__, ssh_err(r)); |
70 | if (options.permit_empty_passwd && options.password_authentication) | 70 | if (options.permit_empty_passwd && options.password_authentication) |
71 | return (PRIVSEP(auth_password(ssh->authctxt, ""))); | 71 | return (PRIVSEP(auth_password(ssh, ""))); |
72 | return (0); | 72 | return (0); |
73 | } | 73 | } |
74 | 74 | ||
diff --git a/auth2-passwd.c b/auth2-passwd.c index 5f7ba3244..445016aec 100644 --- a/auth2-passwd.c +++ b/auth2-passwd.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: auth2-passwd.c,v 1.14 2017/05/30 14:29:59 markus Exp $ */ | 1 | /* $OpenBSD: auth2-passwd.c,v 1.15 2018/03/03 03:15:51 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -63,7 +63,7 @@ userauth_passwd(struct ssh *ssh) | |||
63 | 63 | ||
64 | if (change) | 64 | if (change) |
65 | logit("password change not supported"); | 65 | logit("password change not supported"); |
66 | else if (PRIVSEP(auth_password(ssh->authctxt, password)) == 1) | 66 | else if (PRIVSEP(auth_password(ssh, password)) == 1) |
67 | authenticated = 1; | 67 | authenticated = 1; |
68 | explicit_bzero(password, len); | 68 | explicit_bzero(password, len); |
69 | free(password); | 69 | free(password); |
diff --git a/auth2-pubkey.c b/auth2-pubkey.c index 43f880b6b..8024b1d6a 100644 --- a/auth2-pubkey.c +++ b/auth2-pubkey.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: auth2-pubkey.c,v 1.71 2017/09/07 23:48:09 djm Exp $ */ | 1 | /* $OpenBSD: auth2-pubkey.c,v 1.77 2018/03/03 03:15:51 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -73,42 +73,39 @@ extern ServerOptions options; | |||
73 | extern u_char *session_id2; | 73 | extern u_char *session_id2; |
74 | extern u_int session_id2_len; | 74 | extern u_int session_id2_len; |
75 | 75 | ||
76 | static char * | ||
77 | format_key(const struct sshkey *key) | ||
78 | { | ||
79 | char *ret, *fp = sshkey_fingerprint(key, | ||
80 | options.fingerprint_hash, SSH_FP_DEFAULT); | ||
81 | |||
82 | xasprintf(&ret, "%s %s", sshkey_type(key), fp); | ||
83 | free(fp); | ||
84 | return ret; | ||
85 | } | ||
86 | |||
76 | static int | 87 | static int |
77 | userauth_pubkey(struct ssh *ssh) | 88 | userauth_pubkey(struct ssh *ssh) |
78 | { | 89 | { |
79 | Authctxt *authctxt = ssh->authctxt; | 90 | Authctxt *authctxt = ssh->authctxt; |
91 | struct passwd *pw = authctxt->pw; | ||
80 | struct sshbuf *b; | 92 | struct sshbuf *b; |
81 | struct sshkey *key = NULL; | 93 | struct sshkey *key = NULL; |
82 | char *pkalg, *userstyle = NULL, *fp = NULL; | 94 | char *pkalg, *userstyle = NULL, *key_s = NULL, *ca_s = NULL; |
83 | u_char *pkblob, *sig, have_sig; | 95 | u_char *pkblob, *sig, have_sig; |
84 | size_t blen, slen; | 96 | size_t blen, slen; |
85 | int r, pktype; | 97 | int r, pktype; |
86 | int authenticated = 0; | 98 | int authenticated = 0; |
99 | struct sshauthopt *authopts = NULL; | ||
87 | 100 | ||
88 | if (!authctxt->valid) { | 101 | if (!authctxt->valid) { |
89 | debug2("%s: disabled because of invalid user", __func__); | 102 | debug2("%s: disabled because of invalid user", __func__); |
90 | return 0; | 103 | return 0; |
91 | } | 104 | } |
92 | if ((r = sshpkt_get_u8(ssh, &have_sig)) != 0) | 105 | if ((r = sshpkt_get_u8(ssh, &have_sig)) != 0 || |
93 | fatal("%s: sshpkt_get_u8 failed: %s", __func__, ssh_err(r)); | 106 | (r = sshpkt_get_cstring(ssh, &pkalg, NULL)) != 0 || |
94 | if (ssh->compat & SSH_BUG_PKAUTH) { | 107 | (r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0) |
95 | debug2("%s: SSH_BUG_PKAUTH", __func__); | 108 | fatal("%s: parse request failed: %s", __func__, ssh_err(r)); |
96 | if ((b = sshbuf_new()) == NULL) | ||
97 | fatal("%s: sshbuf_new failed", __func__); | ||
98 | /* no explicit pkalg given */ | ||
99 | /* so we have to extract the pkalg from the pkblob */ | ||
100 | /* XXX use sshbuf_from() */ | ||
101 | if ((r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0 || | ||
102 | (r = sshbuf_put(b, pkblob, blen)) != 0 || | ||
103 | (r = sshbuf_get_cstring(b, &pkalg, NULL)) != 0) | ||
104 | fatal("%s: failed: %s", __func__, ssh_err(r)); | ||
105 | sshbuf_free(b); | ||
106 | } else { | ||
107 | if ((r = sshpkt_get_cstring(ssh, &pkalg, NULL)) != 0 || | ||
108 | (r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0) | ||
109 | fatal("%s: sshpkt_get_cstring failed: %s", | ||
110 | __func__, ssh_err(r)); | ||
111 | } | ||
112 | pktype = sshkey_type_from_name(pkalg); | 109 | pktype = sshkey_type_from_name(pkalg); |
113 | if (pktype == KEY_UNSPEC) { | 110 | if (pktype == KEY_UNSPEC) { |
114 | /* this is perfectly legal */ | 111 | /* this is perfectly legal */ |
@@ -135,7 +132,6 @@ userauth_pubkey(struct ssh *ssh) | |||
135 | "signature scheme"); | 132 | "signature scheme"); |
136 | goto done; | 133 | goto done; |
137 | } | 134 | } |
138 | fp = sshkey_fingerprint(key, options.fingerprint_hash, SSH_FP_DEFAULT); | ||
139 | if (auth2_key_already_used(authctxt, key)) { | 135 | if (auth2_key_already_used(authctxt, key)) { |
140 | logit("refusing previously-used %s key", sshkey_type(key)); | 136 | logit("refusing previously-used %s key", sshkey_type(key)); |
141 | goto done; | 137 | goto done; |
@@ -147,9 +143,15 @@ userauth_pubkey(struct ssh *ssh) | |||
147 | goto done; | 143 | goto done; |
148 | } | 144 | } |
149 | 145 | ||
146 | key_s = format_key(key); | ||
147 | if (sshkey_is_cert(key)) | ||
148 | ca_s = format_key(key->cert->signature_key); | ||
149 | |||
150 | if (have_sig) { | 150 | if (have_sig) { |
151 | debug3("%s: have signature for %s %s", | 151 | debug3("%s: have %s signature for %s%s%s", |
152 | __func__, sshkey_type(key), fp); | 152 | __func__, pkalg, key_s, |
153 | ca_s == NULL ? "" : " CA ", | ||
154 | ca_s == NULL ? "" : ca_s); | ||
153 | if ((r = sshpkt_get_string(ssh, &sig, &slen)) != 0 || | 155 | if ((r = sshpkt_get_string(ssh, &sig, &slen)) != 0 || |
154 | (r = sshpkt_get_end(ssh)) != 0) | 156 | (r = sshpkt_get_end(ssh)) != 0) |
155 | fatal("%s: %s", __func__, ssh_err(r)); | 157 | fatal("%s: %s", __func__, ssh_err(r)); |
@@ -172,22 +174,11 @@ userauth_pubkey(struct ssh *ssh) | |||
172 | authctxt->style ? authctxt->style : ""); | 174 | authctxt->style ? authctxt->style : ""); |
173 | if ((r = sshbuf_put_u8(b, SSH2_MSG_USERAUTH_REQUEST)) != 0 || | 175 | if ((r = sshbuf_put_u8(b, SSH2_MSG_USERAUTH_REQUEST)) != 0 || |
174 | (r = sshbuf_put_cstring(b, userstyle)) != 0 || | 176 | (r = sshbuf_put_cstring(b, userstyle)) != 0 || |
175 | (r = sshbuf_put_cstring(b, ssh->compat & SSH_BUG_PKSERVICE ? | 177 | (r = sshbuf_put_cstring(b, authctxt->service)) != 0 || |
176 | "ssh-userauth" : authctxt->service)) != 0) | 178 | (r = sshbuf_put_cstring(b, "publickey")) != 0 || |
177 | fatal("%s: build packet failed: %s", | 179 | (r = sshbuf_put_u8(b, have_sig)) != 0 || |
178 | __func__, ssh_err(r)); | 180 | (r = sshbuf_put_cstring(b, pkalg) != 0) || |
179 | if (ssh->compat & SSH_BUG_PKAUTH) { | 181 | (r = sshbuf_put_string(b, pkblob, blen)) != 0) |
180 | if ((r = sshbuf_put_u8(b, have_sig)) != 0) | ||
181 | fatal("%s: build packet failed: %s", | ||
182 | __func__, ssh_err(r)); | ||
183 | } else { | ||
184 | if ((r = sshbuf_put_cstring(b, "publickey")) != 0 || | ||
185 | (r = sshbuf_put_u8(b, have_sig)) != 0 || | ||
186 | (r = sshbuf_put_cstring(b, pkalg) != 0)) | ||
187 | fatal("%s: build packet failed: %s", | ||
188 | __func__, ssh_err(r)); | ||
189 | } | ||
190 | if ((r = sshbuf_put_string(b, pkblob, blen)) != 0) | ||
191 | fatal("%s: build packet failed: %s", | 182 | fatal("%s: build packet failed: %s", |
192 | __func__, ssh_err(r)); | 183 | __func__, ssh_err(r)); |
193 | #ifdef DEBUG_PK | 184 | #ifdef DEBUG_PK |
@@ -196,17 +187,20 @@ userauth_pubkey(struct ssh *ssh) | |||
196 | 187 | ||
197 | /* test for correct signature */ | 188 | /* test for correct signature */ |
198 | authenticated = 0; | 189 | authenticated = 0; |
199 | if (PRIVSEP(user_key_allowed(authctxt->pw, key, 1)) && | 190 | if (PRIVSEP(user_key_allowed(ssh, pw, key, 1, &authopts)) && |
200 | PRIVSEP(sshkey_verify(key, sig, slen, sshbuf_ptr(b), | 191 | PRIVSEP(sshkey_verify(key, sig, slen, sshbuf_ptr(b), |
201 | sshbuf_len(b), ssh->compat)) == 0) { | 192 | sshbuf_len(b), NULL, ssh->compat)) == 0) { |
202 | authenticated = 1; | 193 | authenticated = 1; |
203 | } | 194 | } |
204 | sshbuf_free(b); | 195 | sshbuf_free(b); |
205 | free(sig); | 196 | free(sig); |
206 | auth2_record_key(authctxt, authenticated, key); | 197 | auth2_record_key(authctxt, authenticated, key); |
207 | } else { | 198 | } else { |
208 | debug("%s: test whether pkalg/pkblob are acceptable for %s %s", | 199 | debug("%s: test pkalg %s pkblob %s%s%s", |
209 | __func__, sshkey_type(key), fp); | 200 | __func__, pkalg, key_s, |
201 | ca_s == NULL ? "" : " CA ", | ||
202 | ca_s == NULL ? "" : ca_s); | ||
203 | |||
210 | if ((r = sshpkt_get_end(ssh)) != 0) | 204 | if ((r = sshpkt_get_end(ssh)) != 0) |
211 | fatal("%s: %s", __func__, ssh_err(r)); | 205 | fatal("%s: %s", __func__, ssh_err(r)); |
212 | 206 | ||
@@ -218,7 +212,7 @@ userauth_pubkey(struct ssh *ssh) | |||
218 | * if a user is not allowed to login. is this an | 212 | * if a user is not allowed to login. is this an |
219 | * issue? -markus | 213 | * issue? -markus |
220 | */ | 214 | */ |
221 | if (PRIVSEP(user_key_allowed(authctxt->pw, key, 0))) { | 215 | if (PRIVSEP(user_key_allowed(ssh, pw, key, 0, NULL))) { |
222 | if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_PK_OK)) | 216 | if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_PK_OK)) |
223 | != 0 || | 217 | != 0 || |
224 | (r = sshpkt_put_cstring(ssh, pkalg)) != 0 || | 218 | (r = sshpkt_put_cstring(ssh, pkalg)) != 0 || |
@@ -229,15 +223,20 @@ userauth_pubkey(struct ssh *ssh) | |||
229 | authctxt->postponed = 1; | 223 | authctxt->postponed = 1; |
230 | } | 224 | } |
231 | } | 225 | } |
232 | if (authenticated != 1) | ||
233 | auth_clear_options(); | ||
234 | done: | 226 | done: |
227 | if (authenticated == 1 && auth_activate_options(ssh, authopts) != 0) { | ||
228 | debug("%s: key options inconsistent with existing", __func__); | ||
229 | authenticated = 0; | ||
230 | } | ||
235 | debug2("%s: authenticated %d pkalg %s", __func__, authenticated, pkalg); | 231 | debug2("%s: authenticated %d pkalg %s", __func__, authenticated, pkalg); |
232 | |||
233 | sshauthopt_free(authopts); | ||
236 | sshkey_free(key); | 234 | sshkey_free(key); |
237 | free(userstyle); | 235 | free(userstyle); |
238 | free(pkalg); | 236 | free(pkalg); |
239 | free(pkblob); | 237 | free(pkblob); |
240 | free(fp); | 238 | free(key_s); |
239 | free(ca_s); | ||
241 | return authenticated; | 240 | return authenticated; |
242 | } | 241 | } |
243 | 242 | ||
@@ -261,19 +260,77 @@ match_principals_option(const char *principal_list, struct sshkey_cert *cert) | |||
261 | return 0; | 260 | return 0; |
262 | } | 261 | } |
263 | 262 | ||
263 | /* | ||
264 | * Process a single authorized_principals format line. Returns 0 and sets | ||
265 | * authoptsp is principal is authorised, -1 otherwise. "loc" is used as a | ||
266 | * log preamble for file/line information. | ||
267 | */ | ||
268 | static int | ||
269 | check_principals_line(struct ssh *ssh, char *cp, const struct sshkey_cert *cert, | ||
270 | const char *loc, struct sshauthopt **authoptsp) | ||
271 | { | ||
272 | u_int i, found = 0; | ||
273 | char *ep, *line_opts; | ||
274 | const char *reason = NULL; | ||
275 | struct sshauthopt *opts = NULL; | ||
276 | |||
277 | if (authoptsp != NULL) | ||
278 | *authoptsp = NULL; | ||
279 | |||
280 | /* Trim trailing whitespace. */ | ||
281 | ep = cp + strlen(cp) - 1; | ||
282 | while (ep > cp && (*ep == '\n' || *ep == ' ' || *ep == '\t')) | ||
283 | *ep-- = '\0'; | ||
284 | |||
285 | /* | ||
286 | * If the line has internal whitespace then assume it has | ||
287 | * key options. | ||
288 | */ | ||
289 | line_opts = NULL; | ||
290 | if ((ep = strrchr(cp, ' ')) != NULL || | ||
291 | (ep = strrchr(cp, '\t')) != NULL) { | ||
292 | for (; *ep == ' ' || *ep == '\t'; ep++) | ||
293 | ; | ||
294 | line_opts = cp; | ||
295 | cp = ep; | ||
296 | } | ||
297 | if ((opts = sshauthopt_parse(line_opts, &reason)) == NULL) { | ||
298 | debug("%s: bad principals options: %s", loc, reason); | ||
299 | auth_debug_add("%s: bad principals options: %s", loc, reason); | ||
300 | return -1; | ||
301 | } | ||
302 | /* Check principals in cert against those on line */ | ||
303 | for (i = 0; i < cert->nprincipals; i++) { | ||
304 | if (strcmp(cp, cert->principals[i]) != 0) | ||
305 | continue; | ||
306 | debug3("%s: matched principal \"%.100s\"", | ||
307 | loc, cert->principals[i]); | ||
308 | found = 1; | ||
309 | } | ||
310 | if (found && authoptsp != NULL) { | ||
311 | *authoptsp = opts; | ||
312 | opts = NULL; | ||
313 | } | ||
314 | sshauthopt_free(opts); | ||
315 | return found ? 0 : -1; | ||
316 | } | ||
317 | |||
264 | static int | 318 | static int |
265 | process_principals(FILE *f, const char *file, struct passwd *pw, | 319 | process_principals(struct ssh *ssh, FILE *f, const char *file, |
266 | const struct sshkey_cert *cert) | 320 | const struct sshkey_cert *cert, struct sshauthopt **authoptsp) |
267 | { | 321 | { |
268 | char line[SSH_MAX_PUBKEY_BYTES], *cp, *ep, *line_opts; | 322 | char loc[256], line[SSH_MAX_PUBKEY_BYTES], *cp, *ep; |
269 | u_long linenum = 0; | 323 | u_long linenum = 0; |
270 | u_int i, found_principal = 0; | 324 | u_int found_principal = 0; |
325 | |||
326 | if (authoptsp != NULL) | ||
327 | *authoptsp = NULL; | ||
271 | 328 | ||
272 | auth_start_parse_options(); | ||
273 | while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { | 329 | while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { |
274 | /* Always consume entire input */ | 330 | /* Always consume entire input */ |
275 | if (found_principal) | 331 | if (found_principal) |
276 | continue; | 332 | continue; |
333 | |||
277 | /* Skip leading whitespace. */ | 334 | /* Skip leading whitespace. */ |
278 | for (cp = line; *cp == ' ' || *cp == '\t'; cp++) | 335 | for (cp = line; *cp == ' ' || *cp == '\t'; cp++) |
279 | ; | 336 | ; |
@@ -282,50 +339,33 @@ process_principals(FILE *f, const char *file, struct passwd *pw, | |||
282 | *ep = '\0'; | 339 | *ep = '\0'; |
283 | if (!*cp || *cp == '\n') | 340 | if (!*cp || *cp == '\n') |
284 | continue; | 341 | continue; |
285 | /* Trim trailing whitespace. */ | 342 | |
286 | ep = cp + strlen(cp) - 1; | 343 | snprintf(loc, sizeof(loc), "%.200s:%lu", file, linenum); |
287 | while (ep > cp && (*ep == '\n' || *ep == ' ' || *ep == '\t')) | 344 | if (check_principals_line(ssh, cp, cert, loc, authoptsp) == 0) |
288 | *ep-- = '\0'; | 345 | found_principal = 1; |
289 | /* | ||
290 | * If the line has internal whitespace then assume it has | ||
291 | * key options. | ||
292 | */ | ||
293 | line_opts = NULL; | ||
294 | if ((ep = strrchr(cp, ' ')) != NULL || | ||
295 | (ep = strrchr(cp, '\t')) != NULL) { | ||
296 | for (; *ep == ' ' || *ep == '\t'; ep++) | ||
297 | ; | ||
298 | line_opts = cp; | ||
299 | cp = ep; | ||
300 | } | ||
301 | for (i = 0; i < cert->nprincipals; i++) { | ||
302 | if (strcmp(cp, cert->principals[i]) == 0) { | ||
303 | debug3("%s:%lu: matched principal \"%.100s\"", | ||
304 | file, linenum, cert->principals[i]); | ||
305 | if (auth_parse_options(pw, line_opts, | ||
306 | file, linenum) != 1) | ||
307 | continue; | ||
308 | found_principal = 1; | ||
309 | continue; | ||
310 | } | ||
311 | } | ||
312 | } | 346 | } |
313 | return found_principal; | 347 | return found_principal; |
314 | } | 348 | } |
315 | 349 | ||
350 | /* XXX remove pw args here and elsewhere once ssh->authctxt is guaranteed */ | ||
351 | |||
316 | static int | 352 | static int |
317 | match_principals_file(char *file, struct passwd *pw, struct sshkey_cert *cert) | 353 | match_principals_file(struct ssh *ssh, struct passwd *pw, char *file, |
354 | struct sshkey_cert *cert, struct sshauthopt **authoptsp) | ||
318 | { | 355 | { |
319 | FILE *f; | 356 | FILE *f; |
320 | int success; | 357 | int success; |
321 | 358 | ||
359 | if (authoptsp != NULL) | ||
360 | *authoptsp = NULL; | ||
361 | |||
322 | temporarily_use_uid(pw); | 362 | temporarily_use_uid(pw); |
323 | debug("trying authorized principals file %s", file); | 363 | debug("trying authorized principals file %s", file); |
324 | if ((f = auth_openprincipals(file, pw, options.strict_modes)) == NULL) { | 364 | if ((f = auth_openprincipals(file, pw, options.strict_modes)) == NULL) { |
325 | restore_uid(); | 365 | restore_uid(); |
326 | return 0; | 366 | return 0; |
327 | } | 367 | } |
328 | success = process_principals(f, file, pw, cert); | 368 | success = process_principals(ssh, f, file, cert, authoptsp); |
329 | fclose(f); | 369 | fclose(f); |
330 | restore_uid(); | 370 | restore_uid(); |
331 | return success; | 371 | return success; |
@@ -336,12 +376,13 @@ match_principals_file(char *file, struct passwd *pw, struct sshkey_cert *cert) | |||
336 | * returns 1 if the principal is allowed or 0 otherwise. | 376 | * returns 1 if the principal is allowed or 0 otherwise. |
337 | */ | 377 | */ |
338 | static int | 378 | static int |
339 | match_principals_command(struct passwd *user_pw, const struct sshkey *key) | 379 | match_principals_command(struct ssh *ssh, struct passwd *user_pw, |
380 | const struct sshkey *key, struct sshauthopt **authoptsp) | ||
340 | { | 381 | { |
382 | struct passwd *runas_pw = NULL; | ||
341 | const struct sshkey_cert *cert = key->cert; | 383 | const struct sshkey_cert *cert = key->cert; |
342 | FILE *f = NULL; | 384 | FILE *f = NULL; |
343 | int r, ok, found_principal = 0; | 385 | int r, ok, found_principal = 0; |
344 | struct passwd *pw; | ||
345 | int i, ac = 0, uid_swapped = 0; | 386 | int i, ac = 0, uid_swapped = 0; |
346 | pid_t pid; | 387 | pid_t pid; |
347 | char *tmp, *username = NULL, *command = NULL, **av = NULL; | 388 | char *tmp, *username = NULL, *command = NULL, **av = NULL; |
@@ -349,6 +390,8 @@ match_principals_command(struct passwd *user_pw, const struct sshkey *key) | |||
349 | char serial_s[16]; | 390 | char serial_s[16]; |
350 | void (*osigchld)(int); | 391 | void (*osigchld)(int); |
351 | 392 | ||
393 | if (authoptsp != NULL) | ||
394 | *authoptsp = NULL; | ||
352 | if (options.authorized_principals_command == NULL) | 395 | if (options.authorized_principals_command == NULL) |
353 | return 0; | 396 | return 0; |
354 | if (options.authorized_principals_command_user == NULL) { | 397 | if (options.authorized_principals_command_user == NULL) { |
@@ -366,8 +409,8 @@ match_principals_command(struct passwd *user_pw, const struct sshkey *key) | |||
366 | /* Prepare and verify the user for the command */ | 409 | /* Prepare and verify the user for the command */ |
367 | username = percent_expand(options.authorized_principals_command_user, | 410 | username = percent_expand(options.authorized_principals_command_user, |
368 | "u", user_pw->pw_name, (char *)NULL); | 411 | "u", user_pw->pw_name, (char *)NULL); |
369 | pw = getpwnam(username); | 412 | runas_pw = getpwnam(username); |
370 | if (pw == NULL) { | 413 | if (runas_pw == NULL) { |
371 | error("AuthorizedPrincipalsCommandUser \"%s\" not found: %s", | 414 | error("AuthorizedPrincipalsCommandUser \"%s\" not found: %s", |
372 | username, strerror(errno)); | 415 | username, strerror(errno)); |
373 | goto out; | 416 | goto out; |
@@ -425,15 +468,15 @@ match_principals_command(struct passwd *user_pw, const struct sshkey *key) | |||
425 | /* Prepare a printable command for logs, etc. */ | 468 | /* Prepare a printable command for logs, etc. */ |
426 | command = argv_assemble(ac, av); | 469 | command = argv_assemble(ac, av); |
427 | 470 | ||
428 | if ((pid = subprocess("AuthorizedPrincipalsCommand", pw, command, | 471 | if ((pid = subprocess("AuthorizedPrincipalsCommand", runas_pw, command, |
429 | ac, av, &f, | 472 | ac, av, &f, |
430 | SSH_SUBPROCESS_STDOUT_CAPTURE|SSH_SUBPROCESS_STDERR_DISCARD)) == 0) | 473 | SSH_SUBPROCESS_STDOUT_CAPTURE|SSH_SUBPROCESS_STDERR_DISCARD)) == 0) |
431 | goto out; | 474 | goto out; |
432 | 475 | ||
433 | uid_swapped = 1; | 476 | uid_swapped = 1; |
434 | temporarily_use_uid(pw); | 477 | temporarily_use_uid(runas_pw); |
435 | 478 | ||
436 | ok = process_principals(f, "(command)", pw, cert); | 479 | ok = process_principals(ssh, f, "(command)", cert, authoptsp); |
437 | 480 | ||
438 | fclose(f); | 481 | fclose(f); |
439 | f = NULL; | 482 | f = NULL; |
@@ -460,133 +503,225 @@ match_principals_command(struct passwd *user_pw, const struct sshkey *key) | |||
460 | free(keytext); | 503 | free(keytext); |
461 | return found_principal; | 504 | return found_principal; |
462 | } | 505 | } |
506 | |||
507 | static void | ||
508 | skip_space(char **cpp) | ||
509 | { | ||
510 | char *cp; | ||
511 | |||
512 | for (cp = *cpp; *cp == ' ' || *cp == '\t'; cp++) | ||
513 | ; | ||
514 | *cpp = cp; | ||
515 | } | ||
516 | |||
517 | /* | ||
518 | * Advanced *cpp past the end of key options, defined as the first unquoted | ||
519 | * whitespace character. Returns 0 on success or -1 on failure (e.g. | ||
520 | * unterminated quotes). | ||
521 | */ | ||
522 | static int | ||
523 | advance_past_options(char **cpp) | ||
524 | { | ||
525 | char *cp = *cpp; | ||
526 | int quoted = 0; | ||
527 | |||
528 | for (; *cp && (quoted || (*cp != ' ' && *cp != '\t')); cp++) { | ||
529 | if (*cp == '\\' && cp[1] == '"') | ||
530 | cp++; /* Skip both */ | ||
531 | else if (*cp == '"') | ||
532 | quoted = !quoted; | ||
533 | } | ||
534 | *cpp = cp; | ||
535 | /* return failure for unterminated quotes */ | ||
536 | return (*cp == '\0' && quoted) ? -1 : 0; | ||
537 | } | ||
538 | |||
539 | /* | ||
540 | * Check a single line of an authorized_keys-format file. Returns 0 if key | ||
541 | * matches, -1 otherwise. Will return key/cert options via *authoptsp | ||
542 | * on success. "loc" is used as file/line location in log messages. | ||
543 | */ | ||
544 | static int | ||
545 | check_authkey_line(struct ssh *ssh, struct passwd *pw, struct sshkey *key, | ||
546 | char *cp, const char *loc, struct sshauthopt **authoptsp) | ||
547 | { | ||
548 | int want_keytype = sshkey_is_cert(key) ? KEY_UNSPEC : key->type; | ||
549 | struct sshkey *found = NULL; | ||
550 | struct sshauthopt *keyopts = NULL, *certopts = NULL, *finalopts = NULL; | ||
551 | char *key_options = NULL, *fp = NULL; | ||
552 | const char *reason = NULL; | ||
553 | int ret = -1; | ||
554 | |||
555 | if (authoptsp != NULL) | ||
556 | *authoptsp = NULL; | ||
557 | |||
558 | if ((found = sshkey_new(want_keytype)) == NULL) { | ||
559 | debug3("%s: keytype %d failed", __func__, want_keytype); | ||
560 | goto out; | ||
561 | } | ||
562 | |||
563 | /* XXX djm: peek at key type in line and skip if unwanted */ | ||
564 | |||
565 | if (sshkey_read(found, &cp) != 0) { | ||
566 | /* no key? check for options */ | ||
567 | debug2("%s: check options: '%s'", loc, cp); | ||
568 | key_options = cp; | ||
569 | if (advance_past_options(&cp) != 0) { | ||
570 | reason = "invalid key option string"; | ||
571 | goto fail_reason; | ||
572 | } | ||
573 | skip_space(&cp); | ||
574 | if (sshkey_read(found, &cp) != 0) { | ||
575 | /* still no key? advance to next line*/ | ||
576 | debug2("%s: advance: '%s'", loc, cp); | ||
577 | goto out; | ||
578 | } | ||
579 | } | ||
580 | /* Parse key options now; we need to know if this is a CA key */ | ||
581 | if ((keyopts = sshauthopt_parse(key_options, &reason)) == NULL) { | ||
582 | debug("%s: bad key options: %s", loc, reason); | ||
583 | auth_debug_add("%s: bad key options: %s", loc, reason); | ||
584 | goto out; | ||
585 | } | ||
586 | /* Ignore keys that don't match or incorrectly marked as CAs */ | ||
587 | if (sshkey_is_cert(key)) { | ||
588 | /* Certificate; check signature key against CA */ | ||
589 | if (!sshkey_equal(found, key->cert->signature_key) || | ||
590 | !keyopts->cert_authority) | ||
591 | goto out; | ||
592 | } else { | ||
593 | /* Plain key: check it against key found in file */ | ||
594 | if (!sshkey_equal(found, key) || keyopts->cert_authority) | ||
595 | goto out; | ||
596 | } | ||
597 | |||
598 | /* We have a candidate key, perform authorisation checks */ | ||
599 | if ((fp = sshkey_fingerprint(found, | ||
600 | options.fingerprint_hash, SSH_FP_DEFAULT)) == NULL) | ||
601 | fatal("%s: fingerprint failed", __func__); | ||
602 | |||
603 | debug("%s: matching %s found: %s %s", loc, | ||
604 | sshkey_is_cert(key) ? "CA" : "key", sshkey_type(found), fp); | ||
605 | |||
606 | if (auth_authorise_keyopts(ssh, pw, keyopts, | ||
607 | sshkey_is_cert(key), loc) != 0) { | ||
608 | reason = "Refused by key options"; | ||
609 | goto fail_reason; | ||
610 | } | ||
611 | /* That's all we need for plain keys. */ | ||
612 | if (!sshkey_is_cert(key)) { | ||
613 | verbose("Accepted key %s %s found at %s", | ||
614 | sshkey_type(found), fp, loc); | ||
615 | finalopts = keyopts; | ||
616 | keyopts = NULL; | ||
617 | goto success; | ||
618 | } | ||
619 | |||
620 | /* | ||
621 | * Additional authorisation for certificates. | ||
622 | */ | ||
623 | |||
624 | /* Parse and check options present in certificate */ | ||
625 | if ((certopts = sshauthopt_from_cert(key)) == NULL) { | ||
626 | reason = "Invalid certificate options"; | ||
627 | goto fail_reason; | ||
628 | } | ||
629 | if (auth_authorise_keyopts(ssh, pw, certopts, 0, loc) != 0) { | ||
630 | reason = "Refused by certificate options"; | ||
631 | goto fail_reason; | ||
632 | } | ||
633 | if ((finalopts = sshauthopt_merge(keyopts, certopts, &reason)) == NULL) | ||
634 | goto fail_reason; | ||
635 | |||
636 | /* | ||
637 | * If the user has specified a list of principals as | ||
638 | * a key option, then prefer that list to matching | ||
639 | * their username in the certificate principals list. | ||
640 | */ | ||
641 | if (keyopts->cert_principals != NULL && | ||
642 | !match_principals_option(keyopts->cert_principals, key->cert)) { | ||
643 | reason = "Certificate does not contain an authorized principal"; | ||
644 | goto fail_reason; | ||
645 | } | ||
646 | if (sshkey_cert_check_authority(key, 0, 0, | ||
647 | keyopts->cert_principals == NULL ? pw->pw_name : NULL, &reason) != 0) | ||
648 | goto fail_reason; | ||
649 | |||
650 | verbose("Accepted certificate ID \"%s\" (serial %llu) " | ||
651 | "signed by CA %s %s found at %s", | ||
652 | key->cert->key_id, | ||
653 | (unsigned long long)key->cert->serial, | ||
654 | sshkey_type(found), fp, loc); | ||
655 | |||
656 | success: | ||
657 | if (finalopts == NULL) | ||
658 | fatal("%s: internal error: missing options", __func__); | ||
659 | if (authoptsp != NULL) { | ||
660 | *authoptsp = finalopts; | ||
661 | finalopts = NULL; | ||
662 | } | ||
663 | /* success */ | ||
664 | ret = 0; | ||
665 | goto out; | ||
666 | |||
667 | fail_reason: | ||
668 | error("%s", reason); | ||
669 | auth_debug_add("%s", reason); | ||
670 | out: | ||
671 | free(fp); | ||
672 | sshauthopt_free(keyopts); | ||
673 | sshauthopt_free(certopts); | ||
674 | sshauthopt_free(finalopts); | ||
675 | sshkey_free(found); | ||
676 | return ret; | ||
677 | } | ||
678 | |||
463 | /* | 679 | /* |
464 | * Checks whether key is allowed in authorized_keys-format file, | 680 | * Checks whether key is allowed in authorized_keys-format file, |
465 | * returns 1 if the key is allowed or 0 otherwise. | 681 | * returns 1 if the key is allowed or 0 otherwise. |
466 | */ | 682 | */ |
467 | static int | 683 | static int |
468 | check_authkeys_file(FILE *f, char *file, struct sshkey *key, struct passwd *pw) | 684 | check_authkeys_file(struct ssh *ssh, struct passwd *pw, FILE *f, |
685 | char *file, struct sshkey *key, struct sshauthopt **authoptsp) | ||
469 | { | 686 | { |
470 | char line[SSH_MAX_PUBKEY_BYTES]; | 687 | char *cp, line[SSH_MAX_PUBKEY_BYTES], loc[256]; |
471 | int found_key = 0; | 688 | int found_key = 0; |
472 | u_long linenum = 0; | 689 | u_long linenum = 0; |
473 | struct sshkey *found = NULL; | ||
474 | 690 | ||
475 | auth_start_parse_options(); | 691 | if (authoptsp != NULL) |
476 | while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { | 692 | *authoptsp = NULL; |
477 | char *cp, *key_options = NULL, *fp = NULL; | ||
478 | const char *reason = NULL; | ||
479 | 693 | ||
694 | while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { | ||
480 | /* Always consume entire file */ | 695 | /* Always consume entire file */ |
481 | if (found_key) | 696 | if (found_key) |
482 | continue; | 697 | continue; |
483 | if (found != NULL) | ||
484 | sshkey_free(found); | ||
485 | found = sshkey_new(sshkey_is_cert(key) ? KEY_UNSPEC : key->type); | ||
486 | if (found == NULL) | ||
487 | goto done; | ||
488 | auth_clear_options(); | ||
489 | 698 | ||
490 | /* Skip leading whitespace, empty and comment lines. */ | 699 | /* Skip leading whitespace, empty and comment lines. */ |
491 | for (cp = line; *cp == ' ' || *cp == '\t'; cp++) | 700 | cp = line; |
492 | ; | 701 | skip_space(&cp); |
493 | if (!*cp || *cp == '\n' || *cp == '#') | 702 | if (!*cp || *cp == '\n' || *cp == '#') |
494 | continue; | 703 | continue; |
495 | 704 | snprintf(loc, sizeof(loc), "%.200s:%lu", file, linenum); | |
496 | if (sshkey_read(found, &cp) != 0) { | 705 | if (check_authkey_line(ssh, pw, key, cp, loc, authoptsp) == 0) |
497 | /* no key? check if there are options for this key */ | ||
498 | int quoted = 0; | ||
499 | debug2("user_key_allowed: check options: '%s'", cp); | ||
500 | key_options = cp; | ||
501 | for (; *cp && (quoted || (*cp != ' ' && *cp != '\t')); cp++) { | ||
502 | if (*cp == '\\' && cp[1] == '"') | ||
503 | cp++; /* Skip both */ | ||
504 | else if (*cp == '"') | ||
505 | quoted = !quoted; | ||
506 | } | ||
507 | /* Skip remaining whitespace. */ | ||
508 | for (; *cp == ' ' || *cp == '\t'; cp++) | ||
509 | ; | ||
510 | if (sshkey_read(found, &cp) != 0) { | ||
511 | debug2("user_key_allowed: advance: '%s'", cp); | ||
512 | /* still no key? advance to next line*/ | ||
513 | continue; | ||
514 | } | ||
515 | } | ||
516 | if (sshkey_is_cert(key)) { | ||
517 | if (!sshkey_equal(found, key->cert->signature_key)) | ||
518 | continue; | ||
519 | if (auth_parse_options(pw, key_options, file, | ||
520 | linenum) != 1) | ||
521 | continue; | ||
522 | if (!key_is_cert_authority) | ||
523 | continue; | ||
524 | if ((fp = sshkey_fingerprint(found, | ||
525 | options.fingerprint_hash, SSH_FP_DEFAULT)) == NULL) | ||
526 | continue; | ||
527 | debug("matching CA found: file %s, line %lu, %s %s", | ||
528 | file, linenum, sshkey_type(found), fp); | ||
529 | /* | ||
530 | * If the user has specified a list of principals as | ||
531 | * a key option, then prefer that list to matching | ||
532 | * their username in the certificate principals list. | ||
533 | */ | ||
534 | if (authorized_principals != NULL && | ||
535 | !match_principals_option(authorized_principals, | ||
536 | key->cert)) { | ||
537 | reason = "Certificate does not contain an " | ||
538 | "authorized principal"; | ||
539 | fail_reason: | ||
540 | free(fp); | ||
541 | error("%s", reason); | ||
542 | auth_debug_add("%s", reason); | ||
543 | continue; | ||
544 | } | ||
545 | if (sshkey_cert_check_authority(key, 0, 0, | ||
546 | authorized_principals == NULL ? pw->pw_name : NULL, | ||
547 | &reason) != 0) | ||
548 | goto fail_reason; | ||
549 | if (auth_cert_options(key, pw, &reason) != 0) | ||
550 | goto fail_reason; | ||
551 | verbose("Accepted certificate ID \"%s\" (serial %llu) " | ||
552 | "signed by %s CA %s via %s", key->cert->key_id, | ||
553 | (unsigned long long)key->cert->serial, | ||
554 | sshkey_type(found), fp, file); | ||
555 | free(fp); | ||
556 | found_key = 1; | ||
557 | break; | ||
558 | } else if (sshkey_equal(found, key)) { | ||
559 | if (auth_parse_options(pw, key_options, file, | ||
560 | linenum) != 1) | ||
561 | continue; | ||
562 | if (key_is_cert_authority) | ||
563 | continue; | ||
564 | if ((fp = sshkey_fingerprint(found, | ||
565 | options.fingerprint_hash, SSH_FP_DEFAULT)) == NULL) | ||
566 | continue; | ||
567 | debug("matching key found: file %s, line %lu %s %s", | ||
568 | file, linenum, sshkey_type(found), fp); | ||
569 | free(fp); | ||
570 | found_key = 1; | 706 | found_key = 1; |
571 | continue; | ||
572 | } | ||
573 | } | 707 | } |
574 | done: | ||
575 | if (found != NULL) | ||
576 | sshkey_free(found); | ||
577 | if (!found_key) | ||
578 | debug2("key not found"); | ||
579 | return found_key; | 708 | return found_key; |
580 | } | 709 | } |
581 | 710 | ||
582 | /* Authenticate a certificate key against TrustedUserCAKeys */ | 711 | /* Authenticate a certificate key against TrustedUserCAKeys */ |
583 | static int | 712 | static int |
584 | user_cert_trusted_ca(struct passwd *pw, struct sshkey *key) | 713 | user_cert_trusted_ca(struct ssh *ssh, struct passwd *pw, struct sshkey *key, |
714 | struct sshauthopt **authoptsp) | ||
585 | { | 715 | { |
586 | char *ca_fp, *principals_file = NULL; | 716 | char *ca_fp, *principals_file = NULL; |
587 | const char *reason; | 717 | const char *reason; |
718 | struct sshauthopt *principals_opts = NULL, *cert_opts = NULL; | ||
719 | struct sshauthopt *final_opts = NULL; | ||
588 | int r, ret = 0, found_principal = 0, use_authorized_principals; | 720 | int r, ret = 0, found_principal = 0, use_authorized_principals; |
589 | 721 | ||
722 | if (authoptsp != NULL) | ||
723 | *authoptsp = NULL; | ||
724 | |||
590 | if (!sshkey_is_cert(key) || options.trusted_user_ca_keys == NULL) | 725 | if (!sshkey_is_cert(key) || options.trusted_user_ca_keys == NULL) |
591 | return 0; | 726 | return 0; |
592 | 727 | ||
@@ -607,37 +742,69 @@ user_cert_trusted_ca(struct passwd *pw, struct sshkey *key) | |||
607 | * against the username. | 742 | * against the username. |
608 | */ | 743 | */ |
609 | if ((principals_file = authorized_principals_file(pw)) != NULL) { | 744 | if ((principals_file = authorized_principals_file(pw)) != NULL) { |
610 | if (match_principals_file(principals_file, pw, key->cert)) | 745 | if (match_principals_file(ssh, pw, principals_file, |
746 | key->cert, &principals_opts)) | ||
611 | found_principal = 1; | 747 | found_principal = 1; |
612 | } | 748 | } |
613 | /* Try querying command if specified */ | 749 | /* Try querying command if specified */ |
614 | if (!found_principal && match_principals_command(pw, key)) | 750 | if (!found_principal && match_principals_command(ssh, pw, key, |
751 | &principals_opts)) | ||
615 | found_principal = 1; | 752 | found_principal = 1; |
616 | /* If principals file or command is specified, then require a match */ | 753 | /* If principals file or command is specified, then require a match */ |
617 | use_authorized_principals = principals_file != NULL || | 754 | use_authorized_principals = principals_file != NULL || |
618 | options.authorized_principals_command != NULL; | 755 | options.authorized_principals_command != NULL; |
619 | if (!found_principal && use_authorized_principals) { | 756 | if (!found_principal && use_authorized_principals) { |
620 | reason = "Certificate does not contain an authorized principal"; | 757 | reason = "Certificate does not contain an authorized principal"; |
621 | fail_reason: | 758 | goto fail_reason; |
622 | error("%s", reason); | ||
623 | auth_debug_add("%s", reason); | ||
624 | goto out; | ||
625 | } | 759 | } |
760 | if (use_authorized_principals && principals_opts == NULL) | ||
761 | fatal("%s: internal error: missing principals_opts", __func__); | ||
626 | if (sshkey_cert_check_authority(key, 0, 1, | 762 | if (sshkey_cert_check_authority(key, 0, 1, |
627 | use_authorized_principals ? NULL : pw->pw_name, &reason) != 0) | 763 | use_authorized_principals ? NULL : pw->pw_name, &reason) != 0) |
628 | goto fail_reason; | 764 | goto fail_reason; |
629 | auth_start_parse_options(); | 765 | |
630 | if (auth_cert_options(key, pw, &reason) != 0) | 766 | /* Check authority from options in key and from principals file/cmd */ |
767 | if ((cert_opts = sshauthopt_from_cert(key)) == NULL) { | ||
768 | reason = "Invalid certificate options"; | ||
769 | goto fail_reason; | ||
770 | } | ||
771 | if (auth_authorise_keyopts(ssh, pw, cert_opts, 0, "cert") != 0) { | ||
772 | reason = "Refused by certificate options"; | ||
631 | goto fail_reason; | 773 | goto fail_reason; |
774 | } | ||
775 | if (principals_opts == NULL) { | ||
776 | final_opts = cert_opts; | ||
777 | cert_opts = NULL; | ||
778 | } else { | ||
779 | if (auth_authorise_keyopts(ssh, pw, principals_opts, 0, | ||
780 | "principals") != 0) { | ||
781 | reason = "Refused by certificate principals options"; | ||
782 | goto fail_reason; | ||
783 | } | ||
784 | if ((final_opts = sshauthopt_merge(principals_opts, | ||
785 | cert_opts, &reason)) == NULL) { | ||
786 | fail_reason: | ||
787 | error("%s", reason); | ||
788 | auth_debug_add("%s", reason); | ||
789 | goto out; | ||
790 | } | ||
791 | } | ||
632 | 792 | ||
793 | /* Success */ | ||
633 | verbose("Accepted certificate ID \"%s\" (serial %llu) signed by " | 794 | verbose("Accepted certificate ID \"%s\" (serial %llu) signed by " |
634 | "%s CA %s via %s", key->cert->key_id, | 795 | "%s CA %s via %s", key->cert->key_id, |
635 | (unsigned long long)key->cert->serial, | 796 | (unsigned long long)key->cert->serial, |
636 | sshkey_type(key->cert->signature_key), ca_fp, | 797 | sshkey_type(key->cert->signature_key), ca_fp, |
637 | options.trusted_user_ca_keys); | 798 | options.trusted_user_ca_keys); |
799 | if (authoptsp != NULL) { | ||
800 | *authoptsp = final_opts; | ||
801 | final_opts = NULL; | ||
802 | } | ||
638 | ret = 1; | 803 | ret = 1; |
639 | |||
640 | out: | 804 | out: |
805 | sshauthopt_free(principals_opts); | ||
806 | sshauthopt_free(cert_opts); | ||
807 | sshauthopt_free(final_opts); | ||
641 | free(principals_file); | 808 | free(principals_file); |
642 | free(ca_fp); | 809 | free(ca_fp); |
643 | return ret; | 810 | return ret; |
@@ -648,17 +815,22 @@ user_cert_trusted_ca(struct passwd *pw, struct sshkey *key) | |||
648 | * returns 1 if the key is allowed or 0 otherwise. | 815 | * returns 1 if the key is allowed or 0 otherwise. |
649 | */ | 816 | */ |
650 | static int | 817 | static int |
651 | user_key_allowed2(struct passwd *pw, struct sshkey *key, char *file) | 818 | user_key_allowed2(struct ssh *ssh, struct passwd *pw, struct sshkey *key, |
819 | char *file, struct sshauthopt **authoptsp) | ||
652 | { | 820 | { |
653 | FILE *f; | 821 | FILE *f; |
654 | int found_key = 0; | 822 | int found_key = 0; |
655 | 823 | ||
824 | if (authoptsp != NULL) | ||
825 | *authoptsp = NULL; | ||
826 | |||
656 | /* Temporarily use the user's uid. */ | 827 | /* Temporarily use the user's uid. */ |
657 | temporarily_use_uid(pw); | 828 | temporarily_use_uid(pw); |
658 | 829 | ||
659 | debug("trying public key file %s", file); | 830 | debug("trying public key file %s", file); |
660 | if ((f = auth_openkeyfile(file, pw, options.strict_modes)) != NULL) { | 831 | if ((f = auth_openkeyfile(file, pw, options.strict_modes)) != NULL) { |
661 | found_key = check_authkeys_file(f, file, key, pw); | 832 | found_key = check_authkeys_file(ssh, pw, f, file, |
833 | key, authoptsp); | ||
662 | fclose(f); | 834 | fclose(f); |
663 | } | 835 | } |
664 | 836 | ||
@@ -671,17 +843,20 @@ user_key_allowed2(struct passwd *pw, struct sshkey *key, char *file) | |||
671 | * returns 1 if the key is allowed or 0 otherwise. | 843 | * returns 1 if the key is allowed or 0 otherwise. |
672 | */ | 844 | */ |
673 | static int | 845 | static int |
674 | user_key_command_allowed2(struct passwd *user_pw, struct sshkey *key) | 846 | user_key_command_allowed2(struct ssh *ssh, struct passwd *user_pw, |
847 | struct sshkey *key, struct sshauthopt **authoptsp) | ||
675 | { | 848 | { |
849 | struct passwd *runas_pw = NULL; | ||
676 | FILE *f = NULL; | 850 | FILE *f = NULL; |
677 | int r, ok, found_key = 0; | 851 | int r, ok, found_key = 0; |
678 | struct passwd *pw; | ||
679 | int i, uid_swapped = 0, ac = 0; | 852 | int i, uid_swapped = 0, ac = 0; |
680 | pid_t pid; | 853 | pid_t pid; |
681 | char *username = NULL, *key_fp = NULL, *keytext = NULL; | 854 | char *username = NULL, *key_fp = NULL, *keytext = NULL; |
682 | char *tmp, *command = NULL, **av = NULL; | 855 | char *tmp, *command = NULL, **av = NULL; |
683 | void (*osigchld)(int); | 856 | void (*osigchld)(int); |
684 | 857 | ||
858 | if (authoptsp != NULL) | ||
859 | *authoptsp = NULL; | ||
685 | if (options.authorized_keys_command == NULL) | 860 | if (options.authorized_keys_command == NULL) |
686 | return 0; | 861 | return 0; |
687 | if (options.authorized_keys_command_user == NULL) { | 862 | if (options.authorized_keys_command_user == NULL) { |
@@ -698,8 +873,8 @@ user_key_command_allowed2(struct passwd *user_pw, struct sshkey *key) | |||
698 | /* Prepare and verify the user for the command */ | 873 | /* Prepare and verify the user for the command */ |
699 | username = percent_expand(options.authorized_keys_command_user, | 874 | username = percent_expand(options.authorized_keys_command_user, |
700 | "u", user_pw->pw_name, (char *)NULL); | 875 | "u", user_pw->pw_name, (char *)NULL); |
701 | pw = getpwnam(username); | 876 | runas_pw = getpwnam(username); |
702 | if (pw == NULL) { | 877 | if (runas_pw == NULL) { |
703 | error("AuthorizedKeysCommandUser \"%s\" not found: %s", | 878 | error("AuthorizedKeysCommandUser \"%s\" not found: %s", |
704 | username, strerror(errno)); | 879 | username, strerror(errno)); |
705 | goto out; | 880 | goto out; |
@@ -757,15 +932,16 @@ user_key_command_allowed2(struct passwd *user_pw, struct sshkey *key) | |||
757 | xasprintf(&command, "%s %s", av[0], av[1]); | 932 | xasprintf(&command, "%s %s", av[0], av[1]); |
758 | } | 933 | } |
759 | 934 | ||
760 | if ((pid = subprocess("AuthorizedKeysCommand", pw, command, | 935 | if ((pid = subprocess("AuthorizedKeysCommand", runas_pw, command, |
761 | ac, av, &f, | 936 | ac, av, &f, |
762 | SSH_SUBPROCESS_STDOUT_CAPTURE|SSH_SUBPROCESS_STDERR_DISCARD)) == 0) | 937 | SSH_SUBPROCESS_STDOUT_CAPTURE|SSH_SUBPROCESS_STDERR_DISCARD)) == 0) |
763 | goto out; | 938 | goto out; |
764 | 939 | ||
765 | uid_swapped = 1; | 940 | uid_swapped = 1; |
766 | temporarily_use_uid(pw); | 941 | temporarily_use_uid(runas_pw); |
767 | 942 | ||
768 | ok = check_authkeys_file(f, options.authorized_keys_command, key, pw); | 943 | ok = check_authkeys_file(ssh, user_pw, f, |
944 | options.authorized_keys_command, key, authoptsp); | ||
769 | 945 | ||
770 | fclose(f); | 946 | fclose(f); |
771 | f = NULL; | 947 | f = NULL; |
@@ -795,10 +971,14 @@ user_key_command_allowed2(struct passwd *user_pw, struct sshkey *key) | |||
795 | * Check whether key authenticates and authorises the user. | 971 | * Check whether key authenticates and authorises the user. |
796 | */ | 972 | */ |
797 | int | 973 | int |
798 | user_key_allowed(struct passwd *pw, struct sshkey *key, int auth_attempt) | 974 | user_key_allowed(struct ssh *ssh, struct passwd *pw, struct sshkey *key, |
975 | int auth_attempt, struct sshauthopt **authoptsp) | ||
799 | { | 976 | { |
800 | u_int success, i; | 977 | u_int success, i; |
801 | char *file; | 978 | char *file; |
979 | struct sshauthopt *opts = NULL; | ||
980 | if (authoptsp != NULL) | ||
981 | *authoptsp = NULL; | ||
802 | 982 | ||
803 | if (auth_key_is_revoked(key)) | 983 | if (auth_key_is_revoked(key)) |
804 | return 0; | 984 | return 0; |
@@ -806,25 +986,31 @@ user_key_allowed(struct passwd *pw, struct sshkey *key, int auth_attempt) | |||
806 | auth_key_is_revoked(key->cert->signature_key)) | 986 | auth_key_is_revoked(key->cert->signature_key)) |
807 | return 0; | 987 | return 0; |
808 | 988 | ||
809 | success = user_cert_trusted_ca(pw, key); | 989 | if ((success = user_cert_trusted_ca(ssh, pw, key, &opts)) != 0) |
810 | if (success) | 990 | goto out; |
811 | return success; | 991 | sshauthopt_free(opts); |
992 | opts = NULL; | ||
812 | 993 | ||
813 | success = user_key_command_allowed2(pw, key); | 994 | if ((success = user_key_command_allowed2(ssh, pw, key, &opts)) != 0) |
814 | if (success > 0) | 995 | goto out; |
815 | return success; | 996 | sshauthopt_free(opts); |
997 | opts = NULL; | ||
816 | 998 | ||
817 | for (i = 0; !success && i < options.num_authkeys_files; i++) { | 999 | for (i = 0; !success && i < options.num_authkeys_files; i++) { |
818 | |||
819 | if (strcasecmp(options.authorized_keys_files[i], "none") == 0) | 1000 | if (strcasecmp(options.authorized_keys_files[i], "none") == 0) |
820 | continue; | 1001 | continue; |
821 | file = expand_authorized_keys( | 1002 | file = expand_authorized_keys( |
822 | options.authorized_keys_files[i], pw); | 1003 | options.authorized_keys_files[i], pw); |
823 | 1004 | success = user_key_allowed2(ssh, pw, key, file, &opts); | |
824 | success = user_key_allowed2(pw, key, file); | ||
825 | free(file); | 1005 | free(file); |
826 | } | 1006 | } |
827 | 1007 | ||
1008 | out: | ||
1009 | if (success && authoptsp != NULL) { | ||
1010 | *authoptsp = opts; | ||
1011 | opts = NULL; | ||
1012 | } | ||
1013 | sshauthopt_free(opts); | ||
828 | return success; | 1014 | return success; |
829 | } | 1015 | } |
830 | 1016 | ||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: auth2.c,v 1.143 2017/06/24 06:34:38 djm Exp $ */ | 1 | /* $OpenBSD: auth2.c,v 1.145 2018/03/03 03:15:51 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -140,9 +140,6 @@ auth2_read_banner(void) | |||
140 | void | 140 | void |
141 | userauth_send_banner(const char *msg) | 141 | userauth_send_banner(const char *msg) |
142 | { | 142 | { |
143 | if (datafellows & SSH_BUG_BANNER) | ||
144 | return; | ||
145 | |||
146 | packet_start(SSH2_MSG_USERAUTH_BANNER); | 143 | packet_start(SSH2_MSG_USERAUTH_BANNER); |
147 | packet_put_cstring(msg); | 144 | packet_put_cstring(msg); |
148 | packet_put_cstring(""); /* language, unused */ | 145 | packet_put_cstring(""); /* language, unused */ |
@@ -155,7 +152,7 @@ userauth_banner(void) | |||
155 | { | 152 | { |
156 | char *banner = NULL; | 153 | char *banner = NULL; |
157 | 154 | ||
158 | if (options.banner == NULL || (datafellows & SSH_BUG_BANNER) != 0) | 155 | if (options.banner == NULL) |
159 | return; | 156 | return; |
160 | 157 | ||
161 | if ((banner = PRIVSEP(auth2_read_banner())) == NULL) | 158 | if ((banner = PRIVSEP(auth2_read_banner())) == NULL) |
@@ -321,7 +318,7 @@ userauth_finish(struct ssh *ssh, int authenticated, const char *method, | |||
321 | 318 | ||
322 | /* Special handling for root */ | 319 | /* Special handling for root */ |
323 | if (authenticated && authctxt->pw->pw_uid == 0 && | 320 | if (authenticated && authctxt->pw->pw_uid == 0 && |
324 | !auth_root_allowed(method)) { | 321 | !auth_root_allowed(ssh, method)) { |
325 | authenticated = 0; | 322 | authenticated = 0; |
326 | #ifdef SSH_AUDIT_EVENTS | 323 | #ifdef SSH_AUDIT_EVENTS |
327 | PRIVSEP(audit_event(SSH_LOGIN_ROOT_DENIED)); | 324 | PRIVSEP(audit_event(SSH_LOGIN_ROOT_DENIED)); |
@@ -360,13 +357,6 @@ userauth_finish(struct ssh *ssh, int authenticated, const char *method, | |||
360 | } | 357 | } |
361 | #endif | 358 | #endif |
362 | 359 | ||
363 | #ifdef _UNICOS | ||
364 | if (authenticated && cray_access_denied(authctxt->user)) { | ||
365 | authenticated = 0; | ||
366 | fatal("Access denied for user %s.", authctxt->user); | ||
367 | } | ||
368 | #endif /* _UNICOS */ | ||
369 | |||
370 | if (authenticated == 1) { | 360 | if (authenticated == 1) { |
371 | /* turn off userauth */ | 361 | /* turn off userauth */ |
372 | ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_REQUEST, &dispatch_protocol_ignore); | 362 | ssh_dispatch_set(ssh, SSH2_MSG_USERAUTH_REQUEST, &dispatch_protocol_ignore); |
@@ -377,7 +367,6 @@ userauth_finish(struct ssh *ssh, int authenticated, const char *method, | |||
377 | authctxt->success = 1; | 367 | authctxt->success = 1; |
378 | ssh_packet_set_log_preamble(ssh, "user %s", authctxt->user); | 368 | ssh_packet_set_log_preamble(ssh, "user %s", authctxt->user); |
379 | } else { | 369 | } else { |
380 | |||
381 | /* Allow initial try of "none" auth without failure penalty */ | 370 | /* Allow initial try of "none" auth without failure penalty */ |
382 | if (!partial && !authctxt->server_caused_failure && | 371 | if (!partial && !authctxt->server_caused_failure && |
383 | (authctxt->attempt > 1 || strcmp(method, "none") != 0)) | 372 | (authctxt->attempt > 1 || strcmp(method, "none") != 0)) |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: authfd.c,v 1.105 2017/07/01 13:50:45 djm Exp $ */ | 1 | /* $OpenBSD: authfd.c,v 1.108 2018/02/23 15:58:37 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 |
@@ -129,7 +129,7 @@ ssh_request_reply(int sock, struct sshbuf *request, struct sshbuf *reply) | |||
129 | 129 | ||
130 | /* Get the length of the message, and format it in the buffer. */ | 130 | /* Get the length of the message, and format it in the buffer. */ |
131 | len = sshbuf_len(request); | 131 | len = sshbuf_len(request); |
132 | put_u32(buf, len); | 132 | POKE_U32(buf, len); |
133 | 133 | ||
134 | /* Send the length and then the packet to the agent. */ | 134 | /* Send the length and then the packet to the agent. */ |
135 | if (atomicio(vwrite, sock, buf, 4) != 4 || | 135 | if (atomicio(vwrite, sock, buf, 4) != 4 || |
@@ -144,7 +144,7 @@ ssh_request_reply(int sock, struct sshbuf *request, struct sshbuf *reply) | |||
144 | return SSH_ERR_AGENT_COMMUNICATION; | 144 | return SSH_ERR_AGENT_COMMUNICATION; |
145 | 145 | ||
146 | /* Extract the length, and check it for sanity. */ | 146 | /* Extract the length, and check it for sanity. */ |
147 | len = get_u32(buf); | 147 | len = PEEK_U32(buf); |
148 | if (len > MAX_AGENT_REPLY_LEN) | 148 | if (len > MAX_AGENT_REPLY_LEN) |
149 | return SSH_ERR_INVALID_FORMAT; | 149 | return SSH_ERR_INVALID_FORMAT; |
150 | 150 | ||
@@ -353,8 +353,6 @@ ssh_agent_sign(int sock, const struct sshkey *key, | |||
353 | 353 | ||
354 | if (datalen > SSH_KEY_MAX_SIGN_DATA_SIZE) | 354 | if (datalen > SSH_KEY_MAX_SIGN_DATA_SIZE) |
355 | return SSH_ERR_INVALID_ARGUMENT; | 355 | return SSH_ERR_INVALID_ARGUMENT; |
356 | if (compat & SSH_BUG_SIGBLOB) | ||
357 | flags |= SSH_AGENT_OLD_SIGNATURE; | ||
358 | if ((msg = sshbuf_new()) == NULL) | 356 | if ((msg = sshbuf_new()) == NULL) |
359 | return SSH_ERR_ALLOC_FAIL; | 357 | return SSH_ERR_ALLOC_FAIL; |
360 | if ((r = sshkey_to_blob(key, &blob, &blen)) != 0) | 358 | if ((r = sshkey_to_blob(key, &blob, &blen)) != 0) |
@@ -393,19 +391,7 @@ ssh_agent_sign(int sock, const struct sshkey *key, | |||
393 | 391 | ||
394 | 392 | ||
395 | static int | 393 | static int |
396 | ssh_encode_identity_ssh2(struct sshbuf *b, struct sshkey *key, | 394 | encode_constraints(struct sshbuf *m, u_int life, u_int confirm, u_int maxsign) |
397 | const char *comment) | ||
398 | { | ||
399 | int r; | ||
400 | |||
401 | if ((r = sshkey_private_serialize(key, b)) != 0 || | ||
402 | (r = sshbuf_put_cstring(b, comment)) != 0) | ||
403 | return r; | ||
404 | return 0; | ||
405 | } | ||
406 | |||
407 | static int | ||
408 | encode_constraints(struct sshbuf *m, u_int life, u_int confirm) | ||
409 | { | 395 | { |
410 | int r; | 396 | int r; |
411 | 397 | ||
@@ -418,6 +404,11 @@ encode_constraints(struct sshbuf *m, u_int life, u_int confirm) | |||
418 | if ((r = sshbuf_put_u8(m, SSH_AGENT_CONSTRAIN_CONFIRM)) != 0) | 404 | if ((r = sshbuf_put_u8(m, SSH_AGENT_CONSTRAIN_CONFIRM)) != 0) |
419 | goto out; | 405 | goto out; |
420 | } | 406 | } |
407 | if (maxsign != 0) { | ||
408 | if ((r = sshbuf_put_u8(m, SSH_AGENT_CONSTRAIN_MAXSIGN)) != 0 || | ||
409 | (r = sshbuf_put_u32(m, maxsign)) != 0) | ||
410 | goto out; | ||
411 | } | ||
421 | r = 0; | 412 | r = 0; |
422 | out: | 413 | out: |
423 | return r; | 414 | return r; |
@@ -428,11 +419,11 @@ encode_constraints(struct sshbuf *m, u_int life, u_int confirm) | |||
428 | * This call is intended only for use by ssh-add(1) and like applications. | 419 | * This call is intended only for use by ssh-add(1) and like applications. |
429 | */ | 420 | */ |
430 | int | 421 | int |
431 | ssh_add_identity_constrained(int sock, struct sshkey *key, const char *comment, | 422 | ssh_add_identity_constrained(int sock, const struct sshkey *key, |
432 | u_int life, u_int confirm) | 423 | const char *comment, u_int life, u_int confirm, u_int maxsign) |
433 | { | 424 | { |
434 | struct sshbuf *msg; | 425 | struct sshbuf *msg; |
435 | int r, constrained = (life || confirm); | 426 | int r, constrained = (life || confirm || maxsign); |
436 | u_char type; | 427 | u_char type; |
437 | 428 | ||
438 | if ((msg = sshbuf_new()) == NULL) | 429 | if ((msg = sshbuf_new()) == NULL) |
@@ -449,11 +440,15 @@ ssh_add_identity_constrained(int sock, struct sshkey *key, const char *comment, | |||
449 | #endif | 440 | #endif |
450 | case KEY_ED25519: | 441 | case KEY_ED25519: |
451 | case KEY_ED25519_CERT: | 442 | case KEY_ED25519_CERT: |
443 | case KEY_XMSS: | ||
444 | case KEY_XMSS_CERT: | ||
452 | type = constrained ? | 445 | type = constrained ? |
453 | SSH2_AGENTC_ADD_ID_CONSTRAINED : | 446 | SSH2_AGENTC_ADD_ID_CONSTRAINED : |
454 | SSH2_AGENTC_ADD_IDENTITY; | 447 | SSH2_AGENTC_ADD_IDENTITY; |
455 | if ((r = sshbuf_put_u8(msg, type)) != 0 || | 448 | if ((r = sshbuf_put_u8(msg, type)) != 0 || |
456 | (r = ssh_encode_identity_ssh2(msg, key, comment)) != 0) | 449 | (r = sshkey_private_serialize_maxsign(key, msg, maxsign, |
450 | NULL)) != 0 || | ||
451 | (r = sshbuf_put_cstring(msg, comment)) != 0) | ||
457 | goto out; | 452 | goto out; |
458 | break; | 453 | break; |
459 | default: | 454 | default: |
@@ -461,7 +456,7 @@ ssh_add_identity_constrained(int sock, struct sshkey *key, const char *comment, | |||
461 | goto out; | 456 | goto out; |
462 | } | 457 | } |
463 | if (constrained && | 458 | if (constrained && |
464 | (r = encode_constraints(msg, life, confirm)) != 0) | 459 | (r = encode_constraints(msg, life, confirm, maxsign)) != 0) |
465 | goto out; | 460 | goto out; |
466 | if ((r = ssh_request_reply(sock, msg, msg)) != 0) | 461 | if ((r = ssh_request_reply(sock, msg, msg)) != 0) |
467 | goto out; | 462 | goto out; |
@@ -539,7 +534,7 @@ ssh_update_card(int sock, int add, const char *reader_id, const char *pin, | |||
539 | (r = sshbuf_put_cstring(msg, pin)) != 0) | 534 | (r = sshbuf_put_cstring(msg, pin)) != 0) |
540 | goto out; | 535 | goto out; |
541 | if (constrained && | 536 | if (constrained && |
542 | (r = encode_constraints(msg, life, confirm)) != 0) | 537 | (r = encode_constraints(msg, life, confirm, 0)) != 0) |
543 | goto out; | 538 | goto out; |
544 | if ((r = ssh_request_reply(sock, msg, msg)) != 0) | 539 | if ((r = ssh_request_reply(sock, msg, msg)) != 0) |
545 | goto out; | 540 | goto out; |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: authfd.h,v 1.41 2017/06/28 01:09:22 djm Exp $ */ | 1 | /* $OpenBSD: authfd.h,v 1.43 2018/02/23 15:58:37 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -29,8 +29,8 @@ void ssh_close_authentication_socket(int sock); | |||
29 | int ssh_lock_agent(int sock, int lock, const char *password); | 29 | int ssh_lock_agent(int sock, int lock, const char *password); |
30 | int ssh_fetch_identitylist(int sock, struct ssh_identitylist **idlp); | 30 | int ssh_fetch_identitylist(int sock, struct ssh_identitylist **idlp); |
31 | void ssh_free_identitylist(struct ssh_identitylist *idl); | 31 | void ssh_free_identitylist(struct ssh_identitylist *idl); |
32 | int ssh_add_identity_constrained(int sock, struct sshkey *key, | 32 | int ssh_add_identity_constrained(int sock, const struct sshkey *key, |
33 | const char *comment, u_int life, u_int confirm); | 33 | const char *comment, u_int life, u_int confirm, u_int maxsign); |
34 | int ssh_remove_identity(int sock, struct sshkey *key); | 34 | int ssh_remove_identity(int sock, struct sshkey *key); |
35 | int ssh_update_card(int sock, int add, const char *reader_id, | 35 | int ssh_update_card(int sock, int add, const char *reader_id, |
36 | const char *pin, u_int life, u_int confirm); | 36 | const char *pin, u_int life, u_int confirm); |
@@ -77,6 +77,7 @@ int ssh_agent_sign(int sock, const struct sshkey *key, | |||
77 | 77 | ||
78 | #define SSH_AGENT_CONSTRAIN_LIFETIME 1 | 78 | #define SSH_AGENT_CONSTRAIN_LIFETIME 1 |
79 | #define SSH_AGENT_CONSTRAIN_CONFIRM 2 | 79 | #define SSH_AGENT_CONSTRAIN_CONFIRM 2 |
80 | #define SSH_AGENT_CONSTRAIN_MAXSIGN 3 | ||
80 | 81 | ||
81 | /* extended failure messages */ | 82 | /* extended failure messages */ |
82 | #define SSH2_AGENT_FAILURE 30 | 83 | #define SSH2_AGENT_FAILURE 30 |
diff --git a/authfile.c b/authfile.c index d09b700d2..57dcd808c 100644 --- a/authfile.c +++ b/authfile.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: authfile.c,v 1.127 2017/07/01 13:50:45 djm Exp $ */ | 1 | /* $OpenBSD: authfile.c,v 1.128 2018/02/23 15:58:37 markus 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 | * |
@@ -191,6 +191,8 @@ sshkey_load_private_type(int type, const char *filename, const char *passphrase, | |||
191 | *perm_ok = 1; | 191 | *perm_ok = 1; |
192 | 192 | ||
193 | r = sshkey_load_private_type_fd(fd, type, passphrase, keyp, commentp); | 193 | r = sshkey_load_private_type_fd(fd, type, passphrase, keyp, commentp); |
194 | if (r == 0 && keyp && *keyp) | ||
195 | r = sshkey_set_filename(*keyp, filename); | ||
194 | out: | 196 | out: |
195 | close(fd); | 197 | close(fd); |
196 | return r; | 198 | return r; |
@@ -249,6 +251,9 @@ sshkey_load_private(const char *filename, const char *passphrase, | |||
249 | (r = sshkey_parse_private_fileblob(buffer, passphrase, keyp, | 251 | (r = sshkey_parse_private_fileblob(buffer, passphrase, keyp, |
250 | commentp)) != 0) | 252 | commentp)) != 0) |
251 | goto out; | 253 | goto out; |
254 | if (keyp && *keyp && | ||
255 | (r = sshkey_set_filename(*keyp, filename)) != 0) | ||
256 | goto out; | ||
252 | r = 0; | 257 | r = 0; |
253 | out: | 258 | out: |
254 | close(fd); | 259 | close(fd); |
@@ -397,6 +402,7 @@ sshkey_load_private_cert(int type, const char *filename, const char *passphrase, | |||
397 | case KEY_ECDSA: | 402 | case KEY_ECDSA: |
398 | #endif /* WITH_OPENSSL */ | 403 | #endif /* WITH_OPENSSL */ |
399 | case KEY_ED25519: | 404 | case KEY_ED25519: |
405 | case KEY_XMSS: | ||
400 | case KEY_UNSPEC: | 406 | case KEY_UNSPEC: |
401 | break; | 407 | break; |
402 | default: | 408 | default: |
@@ -1,3 +1,4 @@ | |||
1 | /* $OpenBSD: bitmap.c,v 1.9 2017/10/20 01:56:39 djm Exp $ */ | ||
1 | /* | 2 | /* |
2 | * Copyright (c) 2015 Damien Miller <djm@mindrot.org> | 3 | * Copyright (c) 2015 Damien Miller <djm@mindrot.org> |
3 | * | 4 | * |
@@ -1,3 +1,4 @@ | |||
1 | /* $OpenBSD: bitmap.h,v 1.2 2017/10/20 01:56:39 djm Exp $ */ | ||
1 | /* | 2 | /* |
2 | * Copyright (c) 2015 Damien Miller <djm@mindrot.org> | 3 | * Copyright (c) 2015 Damien Miller <djm@mindrot.org> |
3 | * | 4 | * |
diff --git a/blocks.c b/blocks.c deleted file mode 100644 index ad93fe509..000000000 --- a/blocks.c +++ /dev/null | |||
@@ -1,248 +0,0 @@ | |||
1 | /* $OpenBSD: blocks.c,v 1.3 2013/12/09 11:03:45 markus Exp $ */ | ||
2 | |||
3 | /* | ||
4 | * Public Domain, Author: Daniel J. Bernstein | ||
5 | * Copied from nacl-20110221/crypto_hashblocks/sha512/ref/blocks.c | ||
6 | */ | ||
7 | |||
8 | #include "includes.h" | ||
9 | |||
10 | #include "crypto_api.h" | ||
11 | |||
12 | typedef unsigned long long uint64; | ||
13 | |||
14 | static uint64 load_bigendian(const unsigned char *x) | ||
15 | { | ||
16 | return | ||
17 | (uint64) (x[7]) \ | ||
18 | | (((uint64) (x[6])) << 8) \ | ||
19 | | (((uint64) (x[5])) << 16) \ | ||
20 | | (((uint64) (x[4])) << 24) \ | ||
21 | | (((uint64) (x[3])) << 32) \ | ||
22 | | (((uint64) (x[2])) << 40) \ | ||
23 | | (((uint64) (x[1])) << 48) \ | ||
24 | | (((uint64) (x[0])) << 56) | ||
25 | ; | ||
26 | } | ||
27 | |||
28 | static void store_bigendian(unsigned char *x,uint64 u) | ||
29 | { | ||
30 | x[7] = u; u >>= 8; | ||
31 | x[6] = u; u >>= 8; | ||
32 | x[5] = u; u >>= 8; | ||
33 | x[4] = u; u >>= 8; | ||
34 | x[3] = u; u >>= 8; | ||
35 | x[2] = u; u >>= 8; | ||
36 | x[1] = u; u >>= 8; | ||
37 | x[0] = u; | ||
38 | } | ||
39 | |||
40 | #define SHR(x,c) ((x) >> (c)) | ||
41 | #define ROTR(x,c) (((x) >> (c)) | ((x) << (64 - (c)))) | ||
42 | |||
43 | #define Ch(x,y,z) ((x & y) ^ (~x & z)) | ||
44 | #define Maj(x,y,z) ((x & y) ^ (x & z) ^ (y & z)) | ||
45 | #define Sigma0(x) (ROTR(x,28) ^ ROTR(x,34) ^ ROTR(x,39)) | ||
46 | #define Sigma1(x) (ROTR(x,14) ^ ROTR(x,18) ^ ROTR(x,41)) | ||
47 | #define sigma0(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHR(x,7)) | ||
48 | #define sigma1(x) (ROTR(x,19) ^ ROTR(x,61) ^ SHR(x,6)) | ||
49 | |||
50 | #define M(w0,w14,w9,w1) w0 = sigma1(w14) + w9 + sigma0(w1) + w0; | ||
51 | |||
52 | #define EXPAND \ | ||
53 | M(w0 ,w14,w9 ,w1 ) \ | ||
54 | M(w1 ,w15,w10,w2 ) \ | ||
55 | M(w2 ,w0 ,w11,w3 ) \ | ||
56 | M(w3 ,w1 ,w12,w4 ) \ | ||
57 | M(w4 ,w2 ,w13,w5 ) \ | ||
58 | M(w5 ,w3 ,w14,w6 ) \ | ||
59 | M(w6 ,w4 ,w15,w7 ) \ | ||
60 | M(w7 ,w5 ,w0 ,w8 ) \ | ||
61 | M(w8 ,w6 ,w1 ,w9 ) \ | ||
62 | M(w9 ,w7 ,w2 ,w10) \ | ||
63 | M(w10,w8 ,w3 ,w11) \ | ||
64 | M(w11,w9 ,w4 ,w12) \ | ||
65 | M(w12,w10,w5 ,w13) \ | ||
66 | M(w13,w11,w6 ,w14) \ | ||
67 | M(w14,w12,w7 ,w15) \ | ||
68 | M(w15,w13,w8 ,w0 ) | ||
69 | |||
70 | #define F(w,k) \ | ||
71 | T1 = h + Sigma1(e) + Ch(e,f,g) + k + w; \ | ||
72 | T2 = Sigma0(a) + Maj(a,b,c); \ | ||
73 | h = g; \ | ||
74 | g = f; \ | ||
75 | f = e; \ | ||
76 | e = d + T1; \ | ||
77 | d = c; \ | ||
78 | c = b; \ | ||
79 | b = a; \ | ||
80 | a = T1 + T2; | ||
81 | |||
82 | int crypto_hashblocks_sha512(unsigned char *statebytes,const unsigned char *in,unsigned long long inlen) | ||
83 | { | ||
84 | uint64 state[8]; | ||
85 | uint64 a; | ||
86 | uint64 b; | ||
87 | uint64 c; | ||
88 | uint64 d; | ||
89 | uint64 e; | ||
90 | uint64 f; | ||
91 | uint64 g; | ||
92 | uint64 h; | ||
93 | uint64 T1; | ||
94 | uint64 T2; | ||
95 | |||
96 | a = load_bigendian(statebytes + 0); state[0] = a; | ||
97 | b = load_bigendian(statebytes + 8); state[1] = b; | ||
98 | c = load_bigendian(statebytes + 16); state[2] = c; | ||
99 | d = load_bigendian(statebytes + 24); state[3] = d; | ||
100 | e = load_bigendian(statebytes + 32); state[4] = e; | ||
101 | f = load_bigendian(statebytes + 40); state[5] = f; | ||
102 | g = load_bigendian(statebytes + 48); state[6] = g; | ||
103 | h = load_bigendian(statebytes + 56); state[7] = h; | ||
104 | |||
105 | while (inlen >= 128) { | ||
106 | uint64 w0 = load_bigendian(in + 0); | ||
107 | uint64 w1 = load_bigendian(in + 8); | ||
108 | uint64 w2 = load_bigendian(in + 16); | ||
109 | uint64 w3 = load_bigendian(in + 24); | ||
110 | uint64 w4 = load_bigendian(in + 32); | ||
111 | uint64 w5 = load_bigendian(in + 40); | ||
112 | uint64 w6 = load_bigendian(in + 48); | ||
113 | uint64 w7 = load_bigendian(in + 56); | ||
114 | uint64 w8 = load_bigendian(in + 64); | ||
115 | uint64 w9 = load_bigendian(in + 72); | ||
116 | uint64 w10 = load_bigendian(in + 80); | ||
117 | uint64 w11 = load_bigendian(in + 88); | ||
118 | uint64 w12 = load_bigendian(in + 96); | ||
119 | uint64 w13 = load_bigendian(in + 104); | ||
120 | uint64 w14 = load_bigendian(in + 112); | ||
121 | uint64 w15 = load_bigendian(in + 120); | ||
122 | |||
123 | F(w0 ,0x428a2f98d728ae22ULL) | ||
124 | F(w1 ,0x7137449123ef65cdULL) | ||
125 | F(w2 ,0xb5c0fbcfec4d3b2fULL) | ||
126 | F(w3 ,0xe9b5dba58189dbbcULL) | ||
127 | F(w4 ,0x3956c25bf348b538ULL) | ||
128 | F(w5 ,0x59f111f1b605d019ULL) | ||
129 | F(w6 ,0x923f82a4af194f9bULL) | ||
130 | F(w7 ,0xab1c5ed5da6d8118ULL) | ||
131 | F(w8 ,0xd807aa98a3030242ULL) | ||
132 | F(w9 ,0x12835b0145706fbeULL) | ||
133 | F(w10,0x243185be4ee4b28cULL) | ||
134 | F(w11,0x550c7dc3d5ffb4e2ULL) | ||
135 | F(w12,0x72be5d74f27b896fULL) | ||
136 | F(w13,0x80deb1fe3b1696b1ULL) | ||
137 | F(w14,0x9bdc06a725c71235ULL) | ||
138 | F(w15,0xc19bf174cf692694ULL) | ||
139 | |||
140 | EXPAND | ||
141 | |||
142 | F(w0 ,0xe49b69c19ef14ad2ULL) | ||
143 | F(w1 ,0xefbe4786384f25e3ULL) | ||
144 | F(w2 ,0x0fc19dc68b8cd5b5ULL) | ||
145 | F(w3 ,0x240ca1cc77ac9c65ULL) | ||
146 | F(w4 ,0x2de92c6f592b0275ULL) | ||
147 | F(w5 ,0x4a7484aa6ea6e483ULL) | ||
148 | F(w6 ,0x5cb0a9dcbd41fbd4ULL) | ||
149 | F(w7 ,0x76f988da831153b5ULL) | ||
150 | F(w8 ,0x983e5152ee66dfabULL) | ||
151 | F(w9 ,0xa831c66d2db43210ULL) | ||
152 | F(w10,0xb00327c898fb213fULL) | ||
153 | F(w11,0xbf597fc7beef0ee4ULL) | ||
154 | F(w12,0xc6e00bf33da88fc2ULL) | ||
155 | F(w13,0xd5a79147930aa725ULL) | ||
156 | F(w14,0x06ca6351e003826fULL) | ||
157 | F(w15,0x142929670a0e6e70ULL) | ||
158 | |||
159 | EXPAND | ||
160 | |||
161 | F(w0 ,0x27b70a8546d22ffcULL) | ||
162 | F(w1 ,0x2e1b21385c26c926ULL) | ||
163 | F(w2 ,0x4d2c6dfc5ac42aedULL) | ||
164 | F(w3 ,0x53380d139d95b3dfULL) | ||
165 | F(w4 ,0x650a73548baf63deULL) | ||
166 | F(w5 ,0x766a0abb3c77b2a8ULL) | ||
167 | F(w6 ,0x81c2c92e47edaee6ULL) | ||
168 | F(w7 ,0x92722c851482353bULL) | ||
169 | F(w8 ,0xa2bfe8a14cf10364ULL) | ||
170 | F(w9 ,0xa81a664bbc423001ULL) | ||
171 | F(w10,0xc24b8b70d0f89791ULL) | ||
172 | F(w11,0xc76c51a30654be30ULL) | ||
173 | F(w12,0xd192e819d6ef5218ULL) | ||
174 | F(w13,0xd69906245565a910ULL) | ||
175 | F(w14,0xf40e35855771202aULL) | ||
176 | F(w15,0x106aa07032bbd1b8ULL) | ||
177 | |||
178 | EXPAND | ||
179 | |||
180 | F(w0 ,0x19a4c116b8d2d0c8ULL) | ||
181 | F(w1 ,0x1e376c085141ab53ULL) | ||
182 | F(w2 ,0x2748774cdf8eeb99ULL) | ||
183 | F(w3 ,0x34b0bcb5e19b48a8ULL) | ||
184 | F(w4 ,0x391c0cb3c5c95a63ULL) | ||
185 | F(w5 ,0x4ed8aa4ae3418acbULL) | ||
186 | F(w6 ,0x5b9cca4f7763e373ULL) | ||
187 | F(w7 ,0x682e6ff3d6b2b8a3ULL) | ||
188 | F(w8 ,0x748f82ee5defb2fcULL) | ||
189 | F(w9 ,0x78a5636f43172f60ULL) | ||
190 | F(w10,0x84c87814a1f0ab72ULL) | ||
191 | F(w11,0x8cc702081a6439ecULL) | ||
192 | F(w12,0x90befffa23631e28ULL) | ||
193 | F(w13,0xa4506cebde82bde9ULL) | ||
194 | F(w14,0xbef9a3f7b2c67915ULL) | ||
195 | F(w15,0xc67178f2e372532bULL) | ||
196 | |||
197 | EXPAND | ||
198 | |||
199 | F(w0 ,0xca273eceea26619cULL) | ||
200 | F(w1 ,0xd186b8c721c0c207ULL) | ||
201 | F(w2 ,0xeada7dd6cde0eb1eULL) | ||
202 | F(w3 ,0xf57d4f7fee6ed178ULL) | ||
203 | F(w4 ,0x06f067aa72176fbaULL) | ||
204 | F(w5 ,0x0a637dc5a2c898a6ULL) | ||
205 | F(w6 ,0x113f9804bef90daeULL) | ||
206 | F(w7 ,0x1b710b35131c471bULL) | ||
207 | F(w8 ,0x28db77f523047d84ULL) | ||
208 | F(w9 ,0x32caab7b40c72493ULL) | ||
209 | F(w10,0x3c9ebe0a15c9bebcULL) | ||
210 | F(w11,0x431d67c49c100d4cULL) | ||
211 | F(w12,0x4cc5d4becb3e42b6ULL) | ||
212 | F(w13,0x597f299cfc657e2aULL) | ||
213 | F(w14,0x5fcb6fab3ad6faecULL) | ||
214 | F(w15,0x6c44198c4a475817ULL) | ||
215 | |||
216 | a += state[0]; | ||
217 | b += state[1]; | ||
218 | c += state[2]; | ||
219 | d += state[3]; | ||
220 | e += state[4]; | ||
221 | f += state[5]; | ||
222 | g += state[6]; | ||
223 | h += state[7]; | ||
224 | |||
225 | state[0] = a; | ||
226 | state[1] = b; | ||
227 | state[2] = c; | ||
228 | state[3] = d; | ||
229 | state[4] = e; | ||
230 | state[5] = f; | ||
231 | state[6] = g; | ||
232 | state[7] = h; | ||
233 | |||
234 | in += 128; | ||
235 | inlen -= 128; | ||
236 | } | ||
237 | |||
238 | store_bigendian(statebytes + 0,state[0]); | ||
239 | store_bigendian(statebytes + 8,state[1]); | ||
240 | store_bigendian(statebytes + 16,state[2]); | ||
241 | store_bigendian(statebytes + 24,state[3]); | ||
242 | store_bigendian(statebytes + 32,state[4]); | ||
243 | store_bigendian(statebytes + 40,state[5]); | ||
244 | store_bigendian(statebytes + 48,state[6]); | ||
245 | store_bigendian(statebytes + 56,state[7]); | ||
246 | |||
247 | return inlen; | ||
248 | } | ||
diff --git a/channels.c b/channels.c index 83442be06..bdee1f386 100644 --- a/channels.c +++ b/channels.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: channels.c,v 1.375 2017/09/24 13:45:34 djm Exp $ */ | 1 | /* $OpenBSD: channels.c,v 1.379 2018/02/05 05:36:49 tb 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 |
@@ -436,10 +436,15 @@ channel_close_fd(struct ssh *ssh, int *fdp) | |||
436 | static void | 436 | static void |
437 | channel_close_fds(struct ssh *ssh, Channel *c) | 437 | channel_close_fds(struct ssh *ssh, Channel *c) |
438 | { | 438 | { |
439 | int sock = c->sock, rfd = c->rfd, wfd = c->wfd, efd = c->efd; | ||
440 | |||
439 | channel_close_fd(ssh, &c->sock); | 441 | channel_close_fd(ssh, &c->sock); |
440 | channel_close_fd(ssh, &c->rfd); | 442 | if (rfd != sock) |
441 | channel_close_fd(ssh, &c->wfd); | 443 | channel_close_fd(ssh, &c->rfd); |
442 | channel_close_fd(ssh, &c->efd); | 444 | if (wfd != sock && wfd != rfd) |
445 | channel_close_fd(ssh, &c->wfd); | ||
446 | if (efd != sock && efd != rfd && efd != wfd) | ||
447 | channel_close_fd(ssh, &c->efd); | ||
443 | } | 448 | } |
444 | 449 | ||
445 | static void | 450 | static void |
@@ -1582,13 +1587,8 @@ channel_post_x11_listener(struct ssh *ssh, Channel *c, | |||
1582 | SSH_CHANNEL_OPENING, newsock, newsock, -1, | 1587 | SSH_CHANNEL_OPENING, newsock, newsock, -1, |
1583 | c->local_window_max, c->local_maxpacket, 0, buf, 1); | 1588 | c->local_window_max, c->local_maxpacket, 0, buf, 1); |
1584 | open_preamble(ssh, __func__, nc, "x11"); | 1589 | open_preamble(ssh, __func__, nc, "x11"); |
1585 | if ((r = sshpkt_put_cstring(ssh, remote_ipaddr)) != 0) { | 1590 | if ((r = sshpkt_put_cstring(ssh, remote_ipaddr)) != 0 || |
1586 | fatal("%s: channel %i: reply %s", __func__, | 1591 | (r = sshpkt_put_u32(ssh, remote_port)) != 0) { |
1587 | c->self, ssh_err(r)); | ||
1588 | } | ||
1589 | if ((datafellows & SSH_BUG_X11FWD) != 0) | ||
1590 | debug2("channel %d: ssh2 x11 bug compat mode", nc->self); | ||
1591 | else if ((r = sshpkt_put_u32(ssh, remote_port)) != 0) { | ||
1592 | fatal("%s: channel %i: reply %s", __func__, | 1592 | fatal("%s: channel %i: reply %s", __func__, |
1593 | c->self, ssh_err(r)); | 1593 | c->self, ssh_err(r)); |
1594 | } | 1594 | } |
@@ -1668,19 +1668,6 @@ port_open_helper(struct ssh *ssh, Channel *c, char *rtype) | |||
1668 | free(local_ipaddr); | 1668 | free(local_ipaddr); |
1669 | } | 1669 | } |
1670 | 1670 | ||
1671 | static void | ||
1672 | channel_set_reuseaddr(int fd) | ||
1673 | { | ||
1674 | int on = 1; | ||
1675 | |||
1676 | /* | ||
1677 | * Set socket options. | ||
1678 | * Allow local port reuse in TIME_WAIT. | ||
1679 | */ | ||
1680 | if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) | ||
1681 | error("setsockopt SO_REUSEADDR fd %d: %s", fd, strerror(errno)); | ||
1682 | } | ||
1683 | |||
1684 | void | 1671 | void |
1685 | channel_set_x11_refuse_time(struct ssh *ssh, u_int refuse_time) | 1672 | channel_set_x11_refuse_time(struct ssh *ssh, u_int refuse_time) |
1686 | { | 1673 | { |
@@ -1837,15 +1824,13 @@ channel_post_connecting(struct ssh *ssh, Channel *c, | |||
1837 | if ((r = sshpkt_start(ssh, | 1824 | if ((r = sshpkt_start(ssh, |
1838 | SSH2_MSG_CHANNEL_OPEN_FAILURE)) != 0 || | 1825 | SSH2_MSG_CHANNEL_OPEN_FAILURE)) != 0 || |
1839 | (r = sshpkt_put_u32(ssh, c->remote_id)) != 0 || | 1826 | (r = sshpkt_put_u32(ssh, c->remote_id)) != 0 || |
1840 | (r = sshpkt_put_u32(ssh, SSH2_OPEN_CONNECT_FAILED)) | 1827 | (r = sshpkt_put_u32(ssh, |
1841 | != 0) | 1828 | SSH2_OPEN_CONNECT_FAILED)) != 0 || |
1842 | fatal("%s: channel %i: failure: %s", __func__, | 1829 | (r = sshpkt_put_cstring(ssh, strerror(err))) != 0 || |
1843 | c->self, ssh_err(r)); | 1830 | (r = sshpkt_put_cstring(ssh, "")) != 0) { |
1844 | if ((datafellows & SSH_BUG_OPENFAILURE) == 0 && | ||
1845 | ((r = sshpkt_put_cstring(ssh, strerror(err))) != 0 || | ||
1846 | (r = sshpkt_put_cstring(ssh, "")) != 0)) | ||
1847 | fatal("%s: channel %i: failure: %s", __func__, | 1831 | fatal("%s: channel %i: failure: %s", __func__, |
1848 | c->self, ssh_err(r)); | 1832 | c->self, ssh_err(r)); |
1833 | } | ||
1849 | if ((r = sshpkt_send(ssh)) != 0) | 1834 | if ((r = sshpkt_send(ssh)) != 0) |
1850 | fatal("%s: channel %i: %s", __func__, c->self, | 1835 | fatal("%s: channel %i: %s", __func__, c->self, |
1851 | ssh_err(r)); | 1836 | ssh_err(r)); |
@@ -3123,13 +3108,11 @@ channel_input_open_failure(int type, u_int32_t seq, struct ssh *ssh) | |||
3123 | error("%s: reason: %s", __func__, ssh_err(r)); | 3108 | error("%s: reason: %s", __func__, ssh_err(r)); |
3124 | packet_disconnect("Invalid open failure message"); | 3109 | packet_disconnect("Invalid open failure message"); |
3125 | } | 3110 | } |
3126 | if ((datafellows & SSH_BUG_OPENFAILURE) == 0) { | 3111 | /* skip language */ |
3127 | /* skip language */ | 3112 | if ((r = sshpkt_get_cstring(ssh, &msg, NULL)) != 0 || |
3128 | if ((r = sshpkt_get_cstring(ssh, &msg, NULL)) != 0 || | 3113 | (r = sshpkt_get_string_direct(ssh, NULL, NULL)) != 0) { |
3129 | (r = sshpkt_get_string_direct(ssh, NULL, NULL)) != 0) { | 3114 | error("%s: message/lang: %s", __func__, ssh_err(r)); |
3130 | error("%s: message/lang: %s", __func__, ssh_err(r)); | 3115 | packet_disconnect("Invalid open failure message"); |
3131 | packet_disconnect("Invalid open failure message"); | ||
3132 | } | ||
3133 | } | 3116 | } |
3134 | ssh_packet_check_eom(ssh); | 3117 | ssh_packet_check_eom(ssh); |
3135 | logit("channel %d: open failed: %s%s%s", c->self, | 3118 | logit("channel %d: open failed: %s%s%s", c->self, |
@@ -3364,11 +3347,12 @@ channel_setup_fwd_listener_tcpip(struct ssh *ssh, int type, | |||
3364 | sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); | 3347 | sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); |
3365 | if (sock < 0) { | 3348 | if (sock < 0) { |
3366 | /* this is no error since kernel may not support ipv6 */ | 3349 | /* this is no error since kernel may not support ipv6 */ |
3367 | verbose("socket: %.100s", strerror(errno)); | 3350 | verbose("socket [%s]:%s: %.100s", ntop, strport, |
3351 | strerror(errno)); | ||
3368 | continue; | 3352 | continue; |
3369 | } | 3353 | } |
3370 | 3354 | ||
3371 | channel_set_reuseaddr(sock); | 3355 | set_reuseaddr(sock); |
3372 | if (ai->ai_family == AF_INET6) | 3356 | if (ai->ai_family == AF_INET6) |
3373 | sock_set_v6only(sock); | 3357 | sock_set_v6only(sock); |
3374 | 3358 | ||
@@ -3382,9 +3366,11 @@ channel_setup_fwd_listener_tcpip(struct ssh *ssh, int type, | |||
3382 | * already bound | 3366 | * already bound |
3383 | */ | 3367 | */ |
3384 | if (!ai->ai_next) | 3368 | if (!ai->ai_next) |
3385 | error("bind: %.100s", strerror(errno)); | 3369 | error("bind [%s]:%s: %.100s", |
3370 | ntop, strport, strerror(errno)); | ||
3386 | else | 3371 | else |
3387 | verbose("bind: %.100s", strerror(errno)); | 3372 | verbose("bind [%s]:%s: %.100s", |
3373 | ntop, strport, strerror(errno)); | ||
3388 | 3374 | ||
3389 | close(sock); | 3375 | close(sock); |
3390 | continue; | 3376 | continue; |
@@ -3392,6 +3378,8 @@ channel_setup_fwd_listener_tcpip(struct ssh *ssh, int type, | |||
3392 | /* Start listening for connections on the socket. */ | 3378 | /* Start listening for connections on the socket. */ |
3393 | if (listen(sock, SSH_LISTEN_BACKLOG) < 0) { | 3379 | if (listen(sock, SSH_LISTEN_BACKLOG) < 0) { |
3394 | error("listen: %.100s", strerror(errno)); | 3380 | error("listen: %.100s", strerror(errno)); |
3381 | error("listen [%s]:%s: %.100s", ntop, strport, | ||
3382 | strerror(errno)); | ||
3395 | close(sock); | 3383 | close(sock); |
3396 | continue; | 3384 | continue; |
3397 | } | 3385 | } |
@@ -3672,15 +3660,9 @@ static const char * | |||
3672 | channel_rfwd_bind_host(const char *listen_host) | 3660 | channel_rfwd_bind_host(const char *listen_host) |
3673 | { | 3661 | { |
3674 | if (listen_host == NULL) { | 3662 | if (listen_host == NULL) { |
3675 | if (datafellows & SSH_BUG_RFWD_ADDR) | 3663 | return "localhost"; |
3676 | return "127.0.0.1"; | ||
3677 | else | ||
3678 | return "localhost"; | ||
3679 | } else if (*listen_host == '\0' || strcmp(listen_host, "*") == 0) { | 3664 | } else if (*listen_host == '\0' || strcmp(listen_host, "*") == 0) { |
3680 | if (datafellows & SSH_BUG_RFWD_ADDR) | 3665 | return ""; |
3681 | return "0.0.0.0"; | ||
3682 | else | ||
3683 | return ""; | ||
3684 | } else | 3666 | } else |
3685 | return listen_host; | 3667 | return listen_host; |
3686 | } | 3668 | } |
@@ -4439,7 +4421,7 @@ x11_create_display_inet(struct ssh *ssh, int x11_display_offset, | |||
4439 | if (ai->ai_family == AF_INET6) | 4421 | if (ai->ai_family == AF_INET6) |
4440 | sock_set_v6only(sock); | 4422 | sock_set_v6only(sock); |
4441 | if (x11_use_localhost) | 4423 | if (x11_use_localhost) |
4442 | channel_set_reuseaddr(sock); | 4424 | set_reuseaddr(sock); |
4443 | if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) { | 4425 | if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) { |
4444 | debug2("%s: bind port %d: %.100s", __func__, | 4426 | debug2("%s: bind port %d: %.100s", __func__, |
4445 | port, strerror(errno)); | 4427 | port, strerror(errno)); |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: cipher.c,v 1.107 2017/05/07 23:12:57 djm Exp $ */ | 1 | /* $OpenBSD: cipher.c,v 1.111 2018/02/23 15:58:37 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 |
@@ -310,8 +310,7 @@ cipher_init(struct sshcipher_ctx **ccp, const struct sshcipher *cipher, | |||
310 | } else { | 310 | } else { |
311 | if (cc != NULL) { | 311 | if (cc != NULL) { |
312 | #ifdef WITH_OPENSSL | 312 | #ifdef WITH_OPENSSL |
313 | if (cc->evp != NULL) | 313 | EVP_CIPHER_CTX_free(cc->evp); |
314 | EVP_CIPHER_CTX_free(cc->evp); | ||
315 | #endif /* WITH_OPENSSL */ | 314 | #endif /* WITH_OPENSSL */ |
316 | explicit_bzero(cc, sizeof(*cc)); | 315 | explicit_bzero(cc, sizeof(*cc)); |
317 | free(cc); | 316 | free(cc); |
@@ -402,7 +401,7 @@ cipher_get_length(struct sshcipher_ctx *cc, u_int *plenp, u_int seqnr, | |||
402 | cp, len); | 401 | cp, len); |
403 | if (len < 4) | 402 | if (len < 4) |
404 | return SSH_ERR_MESSAGE_INCOMPLETE; | 403 | return SSH_ERR_MESSAGE_INCOMPLETE; |
405 | *plenp = get_u32(cp); | 404 | *plenp = PEEK_U32(cp); |
406 | return 0; | 405 | return 0; |
407 | } | 406 | } |
408 | 407 | ||
@@ -416,10 +415,8 @@ cipher_free(struct sshcipher_ctx *cc) | |||
416 | else if ((cc->cipher->flags & CFLAG_AESCTR) != 0) | 415 | else if ((cc->cipher->flags & CFLAG_AESCTR) != 0) |
417 | explicit_bzero(&cc->ac_ctx, sizeof(cc->ac_ctx)); | 416 | explicit_bzero(&cc->ac_ctx, sizeof(cc->ac_ctx)); |
418 | #ifdef WITH_OPENSSL | 417 | #ifdef WITH_OPENSSL |
419 | if (cc->evp != NULL) { | 418 | EVP_CIPHER_CTX_free(cc->evp); |
420 | EVP_CIPHER_CTX_free(cc->evp); | 419 | cc->evp = NULL; |
421 | cc->evp = NULL; | ||
422 | } | ||
423 | #endif | 420 | #endif |
424 | explicit_bzero(cc, sizeof(*cc)); | 421 | explicit_bzero(cc, sizeof(*cc)); |
425 | free(cc); | 422 | free(cc); |
@@ -449,9 +446,9 @@ cipher_get_keyiv_len(const struct sshcipher_ctx *cc) | |||
449 | int | 446 | int |
450 | cipher_get_keyiv(struct sshcipher_ctx *cc, u_char *iv, u_int len) | 447 | cipher_get_keyiv(struct sshcipher_ctx *cc, u_char *iv, u_int len) |
451 | { | 448 | { |
452 | const struct sshcipher *c = cc->cipher; | ||
453 | #ifdef WITH_OPENSSL | 449 | #ifdef WITH_OPENSSL |
454 | int evplen; | 450 | const struct sshcipher *c = cc->cipher; |
451 | int evplen; | ||
455 | #endif | 452 | #endif |
456 | 453 | ||
457 | if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) { | 454 | if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) { |
@@ -494,9 +491,9 @@ cipher_get_keyiv(struct sshcipher_ctx *cc, u_char *iv, u_int len) | |||
494 | int | 491 | int |
495 | cipher_set_keyiv(struct sshcipher_ctx *cc, const u_char *iv) | 492 | cipher_set_keyiv(struct sshcipher_ctx *cc, const u_char *iv) |
496 | { | 493 | { |
497 | const struct sshcipher *c = cc->cipher; | ||
498 | #ifdef WITH_OPENSSL | 494 | #ifdef WITH_OPENSSL |
499 | int evplen = 0; | 495 | const struct sshcipher *c = cc->cipher; |
496 | int evplen = 0; | ||
500 | #endif | 497 | #endif |
501 | 498 | ||
502 | if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) | 499 | if ((cc->cipher->flags & CFLAG_CHACHAPOLY) != 0) |
diff --git a/clientloop.c b/clientloop.c index 0010b8337..ef803e985 100644 --- a/clientloop.c +++ b/clientloop.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: clientloop.c,v 1.305 2017/09/19 04:24:22 djm Exp $ */ | 1 | /* $OpenBSD: clientloop.c,v 1.311 2018/02/11 21:16:56 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 |
@@ -214,7 +214,6 @@ static void | |||
214 | window_change_handler(int sig) | 214 | window_change_handler(int sig) |
215 | { | 215 | { |
216 | received_window_change_signal = 1; | 216 | received_window_change_signal = 1; |
217 | signal(SIGWINCH, window_change_handler); | ||
218 | } | 217 | } |
219 | 218 | ||
220 | /* | 219 | /* |
@@ -230,19 +229,6 @@ signal_handler(int sig) | |||
230 | } | 229 | } |
231 | 230 | ||
232 | /* | 231 | /* |
233 | * Returns current time in seconds from Jan 1, 1970 with the maximum | ||
234 | * available resolution. | ||
235 | */ | ||
236 | |||
237 | static double | ||
238 | get_current_time(void) | ||
239 | { | ||
240 | struct timeval tv; | ||
241 | gettimeofday(&tv, NULL); | ||
242 | return (double) tv.tv_sec + (double) tv.tv_usec / 1000000.0; | ||
243 | } | ||
244 | |||
245 | /* | ||
246 | * Sets control_persist_exit_time to the absolute time when the | 232 | * Sets control_persist_exit_time to the absolute time when the |
247 | * backgrounded control master should exit due to expiry of the | 233 | * backgrounded control master should exit due to expiry of the |
248 | * ControlPersist timeout. Sets it to 0 if we are not a backgrounded | 234 | * ControlPersist timeout. Sets it to 0 if we are not a backgrounded |
@@ -1260,7 +1246,7 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg, | |||
1260 | fatal("%s pledge(): %s", __func__, strerror(errno)); | 1246 | fatal("%s pledge(): %s", __func__, strerror(errno)); |
1261 | } | 1247 | } |
1262 | 1248 | ||
1263 | start_time = get_current_time(); | 1249 | start_time = monotime_double(); |
1264 | 1250 | ||
1265 | /* Initialize variables. */ | 1251 | /* Initialize variables. */ |
1266 | last_was_cr = 1; | 1252 | last_was_cr = 1; |
@@ -1458,7 +1444,7 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg, | |||
1458 | buffer_free(&stderr_buffer); | 1444 | buffer_free(&stderr_buffer); |
1459 | 1445 | ||
1460 | /* Report bytes transferred, and transfer rates. */ | 1446 | /* Report bytes transferred, and transfer rates. */ |
1461 | total_time = get_current_time() - start_time; | 1447 | total_time = monotime_double() - start_time; |
1462 | packet_get_bytes(&ibytes, &obytes); | 1448 | packet_get_bytes(&ibytes, &obytes); |
1463 | verbose("Transferred: sent %llu, received %llu bytes, in %.1f seconds", | 1449 | verbose("Transferred: sent %llu, received %llu bytes, in %.1f seconds", |
1464 | (unsigned long long)obytes, (unsigned long long)ibytes, total_time); | 1450 | (unsigned long long)obytes, (unsigned long long)ibytes, total_time); |
@@ -1567,12 +1553,7 @@ client_request_x11(struct ssh *ssh, const char *request_type, int rchan) | |||
1567 | return NULL; | 1553 | return NULL; |
1568 | } | 1554 | } |
1569 | originator = packet_get_string(NULL); | 1555 | originator = packet_get_string(NULL); |
1570 | if (datafellows & SSH_BUG_X11FWD) { | 1556 | originator_port = packet_get_int(); |
1571 | debug2("buggy server: x11 request w/o originator_port"); | ||
1572 | originator_port = 0; | ||
1573 | } else { | ||
1574 | originator_port = packet_get_int(); | ||
1575 | } | ||
1576 | packet_check_eom(); | 1557 | packet_check_eom(); |
1577 | /* XXX check permission */ | 1558 | /* XXX check permission */ |
1578 | debug("client_request_x11: request from %s %d", originator, | 1559 | debug("client_request_x11: request from %s %d", originator, |
@@ -1614,12 +1595,13 @@ client_request_agent(struct ssh *ssh, const char *request_type, int rchan) | |||
1614 | return c; | 1595 | return c; |
1615 | } | 1596 | } |
1616 | 1597 | ||
1617 | int | 1598 | char * |
1618 | client_request_tun_fwd(struct ssh *ssh, int tun_mode, | 1599 | client_request_tun_fwd(struct ssh *ssh, int tun_mode, |
1619 | int local_tun, int remote_tun) | 1600 | int local_tun, int remote_tun) |
1620 | { | 1601 | { |
1621 | Channel *c; | 1602 | Channel *c; |
1622 | int fd; | 1603 | int fd; |
1604 | char *ifname = NULL; | ||
1623 | 1605 | ||
1624 | if (tun_mode == SSH_TUNMODE_NO) | 1606 | if (tun_mode == SSH_TUNMODE_NO) |
1625 | return 0; | 1607 | return 0; |
@@ -1627,10 +1609,11 @@ client_request_tun_fwd(struct ssh *ssh, int tun_mode, | |||
1627 | debug("Requesting tun unit %d in mode %d", local_tun, tun_mode); | 1609 | debug("Requesting tun unit %d in mode %d", local_tun, tun_mode); |
1628 | 1610 | ||
1629 | /* Open local tunnel device */ | 1611 | /* Open local tunnel device */ |
1630 | if ((fd = tun_open(local_tun, tun_mode)) == -1) { | 1612 | if ((fd = tun_open(local_tun, tun_mode, &ifname)) == -1) { |
1631 | error("Tunnel device open failed."); | 1613 | error("Tunnel device open failed."); |
1632 | return -1; | 1614 | return NULL; |
1633 | } | 1615 | } |
1616 | debug("Tunnel forwarding using interface %s", ifname); | ||
1634 | 1617 | ||
1635 | c = channel_new(ssh, "tun", SSH_CHANNEL_OPENING, fd, fd, -1, | 1618 | c = channel_new(ssh, "tun", SSH_CHANNEL_OPENING, fd, fd, -1, |
1636 | CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT, 0, "tun", 1); | 1619 | CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT, 0, "tun", 1); |
@@ -1651,7 +1634,7 @@ client_request_tun_fwd(struct ssh *ssh, int tun_mode, | |||
1651 | packet_put_int(remote_tun); | 1634 | packet_put_int(remote_tun); |
1652 | packet_send(); | 1635 | packet_send(); |
1653 | 1636 | ||
1654 | return 0; | 1637 | return ifname; |
1655 | } | 1638 | } |
1656 | 1639 | ||
1657 | /* XXXX move to generic input handler */ | 1640 | /* XXXX move to generic input handler */ |
@@ -1702,10 +1685,8 @@ client_input_channel_open(int type, u_int32_t seq, struct ssh *ssh) | |||
1702 | packet_start(SSH2_MSG_CHANNEL_OPEN_FAILURE); | 1685 | packet_start(SSH2_MSG_CHANNEL_OPEN_FAILURE); |
1703 | packet_put_int(rchan); | 1686 | packet_put_int(rchan); |
1704 | packet_put_int(SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED); | 1687 | packet_put_int(SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED); |
1705 | if (!(datafellows & SSH_BUG_OPENFAILURE)) { | 1688 | packet_put_cstring("open failed"); |
1706 | packet_put_cstring("open failed"); | 1689 | packet_put_cstring(""); |
1707 | packet_put_cstring(""); | ||
1708 | } | ||
1709 | packet_send(); | 1690 | packet_send(); |
1710 | } | 1691 | } |
1711 | free(ctype); | 1692 | free(ctype); |
@@ -1917,7 +1898,7 @@ client_global_hostkeys_private_confirm(struct ssh *ssh, int type, | |||
1917 | struct hostkeys_update_ctx *ctx = (struct hostkeys_update_ctx *)_ctx; | 1898 | struct hostkeys_update_ctx *ctx = (struct hostkeys_update_ctx *)_ctx; |
1918 | size_t i, ndone; | 1899 | size_t i, ndone; |
1919 | struct sshbuf *signdata; | 1900 | struct sshbuf *signdata; |
1920 | int r; | 1901 | int r, kexsigtype, use_kexsigtype; |
1921 | const u_char *sig; | 1902 | const u_char *sig; |
1922 | size_t siglen; | 1903 | size_t siglen; |
1923 | 1904 | ||
@@ -1929,6 +1910,9 @@ client_global_hostkeys_private_confirm(struct ssh *ssh, int type, | |||
1929 | hostkeys_update_ctx_free(ctx); | 1910 | hostkeys_update_ctx_free(ctx); |
1930 | return; | 1911 | return; |
1931 | } | 1912 | } |
1913 | kexsigtype = sshkey_type_plain( | ||
1914 | sshkey_type_from_name(ssh->kex->hostkey_alg)); | ||
1915 | |||
1932 | if ((signdata = sshbuf_new()) == NULL) | 1916 | if ((signdata = sshbuf_new()) == NULL) |
1933 | fatal("%s: sshbuf_new failed", __func__); | 1917 | fatal("%s: sshbuf_new failed", __func__); |
1934 | /* Don't want to accidentally accept an unbound signature */ | 1918 | /* Don't want to accidentally accept an unbound signature */ |
@@ -1957,8 +1941,15 @@ client_global_hostkeys_private_confirm(struct ssh *ssh, int type, | |||
1957 | __func__, ssh_err(r)); | 1941 | __func__, ssh_err(r)); |
1958 | goto out; | 1942 | goto out; |
1959 | } | 1943 | } |
1944 | /* | ||
1945 | * For RSA keys, prefer to use the signature type negotiated | ||
1946 | * during KEX to the default (SHA1). | ||
1947 | */ | ||
1948 | use_kexsigtype = kexsigtype == KEY_RSA && | ||
1949 | sshkey_type_plain(ctx->keys[i]->type) == KEY_RSA; | ||
1960 | if ((r = sshkey_verify(ctx->keys[i], sig, siglen, | 1950 | if ((r = sshkey_verify(ctx->keys[i], sig, siglen, |
1961 | sshbuf_ptr(signdata), sshbuf_len(signdata), 0)) != 0) { | 1951 | sshbuf_ptr(signdata), sshbuf_len(signdata), |
1952 | use_kexsigtype ? ssh->kex->hostkey_alg : NULL, 0)) != 0) { | ||
1962 | error("%s: server gave bad signature for %s key %zu", | 1953 | error("%s: server gave bad signature for %s key %zu", |
1963 | __func__, sshkey_type(ctx->keys[i]), i); | 1954 | __func__, sshkey_type(ctx->keys[i]), i); |
1964 | goto out; | 1955 | goto out; |
diff --git a/clientloop.h b/clientloop.h index a1975ccc8..8d1f0bff6 100644 --- a/clientloop.h +++ b/clientloop.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: clientloop.h,v 1.34 2017/09/12 06:32:07 djm Exp $ */ | 1 | /* $OpenBSD: clientloop.h,v 1.35 2017/10/23 05:08:00 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -46,7 +46,7 @@ int client_x11_get_proto(struct ssh *, const char *, const char *, | |||
46 | void client_global_request_reply_fwd(int, u_int32_t, void *); | 46 | void client_global_request_reply_fwd(int, u_int32_t, void *); |
47 | void client_session2_setup(struct ssh *, int, int, int, | 47 | void client_session2_setup(struct ssh *, int, int, int, |
48 | const char *, struct termios *, int, Buffer *, char **); | 48 | const char *, struct termios *, int, Buffer *, char **); |
49 | int client_request_tun_fwd(struct ssh *, int, int, int); | 49 | char *client_request_tun_fwd(struct ssh *, int, int, int); |
50 | void client_stop_mux(void); | 50 | void client_stop_mux(void); |
51 | 51 | ||
52 | /* Escape filter for protocol 2 sessions */ | 52 | /* Escape filter for protocol 2 sessions */ |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: compat.c,v 1.104 2017/07/25 09:22:25 dtucker Exp $ */ | 1 | /* $OpenBSD: compat.c,v 1.106 2018/02/16 04:43:11 dtucker Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -50,83 +50,20 @@ compat_datafellows(const char *version) | |||
50 | char *pat; | 50 | char *pat; |
51 | int bugs; | 51 | int bugs; |
52 | } check[] = { | 52 | } check[] = { |
53 | { "OpenSSH-2.0*," | ||
54 | "OpenSSH-2.1*," | ||
55 | "OpenSSH_2.1*," | ||
56 | "OpenSSH_2.2*", SSH_OLD_SESSIONID|SSH_BUG_BANNER| | ||
57 | SSH_OLD_DHGEX|SSH_BUG_NOREKEY| | ||
58 | SSH_BUG_EXTEOF|SSH_OLD_FORWARD_ADDR}, | ||
59 | { "OpenSSH_2.3.0*", SSH_BUG_BANNER|SSH_BUG_BIGENDIANAES| | ||
60 | SSH_OLD_DHGEX|SSH_BUG_NOREKEY| | ||
61 | SSH_BUG_EXTEOF|SSH_OLD_FORWARD_ADDR}, | ||
62 | { "OpenSSH_2.3.*", SSH_BUG_BIGENDIANAES|SSH_OLD_DHGEX| | ||
63 | SSH_BUG_NOREKEY|SSH_BUG_EXTEOF| | ||
64 | SSH_OLD_FORWARD_ADDR}, | ||
65 | { "OpenSSH_2.5.0p1*," | ||
66 | "OpenSSH_2.5.1p1*", | ||
67 | SSH_BUG_BIGENDIANAES|SSH_OLD_DHGEX| | ||
68 | SSH_BUG_NOREKEY|SSH_BUG_EXTEOF| | ||
69 | SSH_OLD_FORWARD_ADDR}, | ||
70 | { "OpenSSH_2.5.0*," | ||
71 | "OpenSSH_2.5.1*," | ||
72 | "OpenSSH_2.5.2*", SSH_OLD_DHGEX|SSH_BUG_NOREKEY| | ||
73 | SSH_BUG_EXTEOF|SSH_OLD_FORWARD_ADDR}, | ||
74 | { "OpenSSH_2.5.3*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF| | ||
75 | SSH_OLD_FORWARD_ADDR}, | ||
76 | { "OpenSSH_2.*," | 53 | { "OpenSSH_2.*," |
77 | "OpenSSH_3.0*," | 54 | "OpenSSH_3.0*," |
78 | "OpenSSH_3.1*", SSH_BUG_EXTEOF|SSH_OLD_FORWARD_ADDR}, | 55 | "OpenSSH_3.1*", SSH_BUG_EXTEOF|SSH_OLD_FORWARD_ADDR}, |
79 | { "OpenSSH_3.*", SSH_OLD_FORWARD_ADDR }, | 56 | { "OpenSSH_3.*", SSH_OLD_FORWARD_ADDR }, |
80 | { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF}, | 57 | { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF}, |
81 | { "OpenSSH_4*", 0 }, | 58 | { "OpenSSH_2*," |
59 | "OpenSSH_3*," | ||
60 | "OpenSSH_4*", 0 }, | ||
82 | { "OpenSSH_5*", SSH_NEW_OPENSSH|SSH_BUG_DYNAMIC_RPORT}, | 61 | { "OpenSSH_5*", SSH_NEW_OPENSSH|SSH_BUG_DYNAMIC_RPORT}, |
83 | { "OpenSSH_6.6.1*", SSH_NEW_OPENSSH}, | 62 | { "OpenSSH_6.6.1*", SSH_NEW_OPENSSH}, |
84 | { "OpenSSH_6.5*," | 63 | { "OpenSSH_6.5*," |
85 | "OpenSSH_6.6*", SSH_NEW_OPENSSH|SSH_BUG_CURVE25519PAD}, | 64 | "OpenSSH_6.6*", SSH_NEW_OPENSSH|SSH_BUG_CURVE25519PAD}, |
86 | { "OpenSSH*", SSH_NEW_OPENSSH }, | 65 | { "OpenSSH*", SSH_NEW_OPENSSH }, |
87 | { "*MindTerm*", 0 }, | 66 | { "*MindTerm*", 0 }, |
88 | { "2.1.0*", SSH_BUG_SIGBLOB|SSH_BUG_HMAC| | ||
89 | SSH_OLD_SESSIONID|SSH_BUG_DEBUG| | ||
90 | SSH_BUG_RSASIGMD5|SSH_BUG_HBSERVICE| | ||
91 | SSH_BUG_FIRSTKEX }, | ||
92 | { "2.1 *", SSH_BUG_SIGBLOB|SSH_BUG_HMAC| | ||
93 | SSH_OLD_SESSIONID|SSH_BUG_DEBUG| | ||
94 | SSH_BUG_RSASIGMD5|SSH_BUG_HBSERVICE| | ||
95 | SSH_BUG_FIRSTKEX }, | ||
96 | { "2.0.13*," | ||
97 | "2.0.14*," | ||
98 | "2.0.15*," | ||
99 | "2.0.16*," | ||
100 | "2.0.17*," | ||
101 | "2.0.18*," | ||
102 | "2.0.19*", SSH_BUG_SIGBLOB|SSH_BUG_HMAC| | ||
103 | SSH_OLD_SESSIONID|SSH_BUG_DEBUG| | ||
104 | SSH_BUG_PKSERVICE|SSH_BUG_X11FWD| | ||
105 | SSH_BUG_PKOK|SSH_BUG_RSASIGMD5| | ||
106 | SSH_BUG_HBSERVICE|SSH_BUG_OPENFAILURE| | ||
107 | SSH_BUG_DUMMYCHAN|SSH_BUG_FIRSTKEX }, | ||
108 | { "2.0.11*," | ||
109 | "2.0.12*", SSH_BUG_SIGBLOB|SSH_BUG_HMAC| | ||
110 | SSH_OLD_SESSIONID|SSH_BUG_DEBUG| | ||
111 | SSH_BUG_PKSERVICE|SSH_BUG_X11FWD| | ||
112 | SSH_BUG_PKAUTH|SSH_BUG_PKOK| | ||
113 | SSH_BUG_RSASIGMD5|SSH_BUG_OPENFAILURE| | ||
114 | SSH_BUG_DUMMYCHAN|SSH_BUG_FIRSTKEX }, | ||
115 | { "2.0.*", SSH_BUG_SIGBLOB|SSH_BUG_HMAC| | ||
116 | SSH_OLD_SESSIONID|SSH_BUG_DEBUG| | ||
117 | SSH_BUG_PKSERVICE|SSH_BUG_X11FWD| | ||
118 | SSH_BUG_PKAUTH|SSH_BUG_PKOK| | ||
119 | SSH_BUG_RSASIGMD5|SSH_BUG_OPENFAILURE| | ||
120 | SSH_BUG_DERIVEKEY|SSH_BUG_DUMMYCHAN| | ||
121 | SSH_BUG_FIRSTKEX }, | ||
122 | { "2.2.0*," | ||
123 | "2.3.0*", SSH_BUG_HMAC|SSH_BUG_DEBUG| | ||
124 | SSH_BUG_RSASIGMD5|SSH_BUG_FIRSTKEX }, | ||
125 | { "2.3.*", SSH_BUG_DEBUG|SSH_BUG_RSASIGMD5| | ||
126 | SSH_BUG_FIRSTKEX }, | ||
127 | { "2.4", SSH_OLD_SESSIONID }, /* Van Dyke */ | ||
128 | { "2.*", SSH_BUG_DEBUG|SSH_BUG_FIRSTKEX| | ||
129 | SSH_BUG_RFWD_ADDR }, | ||
130 | { "3.0.*", SSH_BUG_DEBUG }, | 67 | { "3.0.*", SSH_BUG_DEBUG }, |
131 | { "3.0 SecureCRT*", SSH_OLD_SESSIONID }, | 68 | { "3.0 SecureCRT*", SSH_OLD_SESSIONID }, |
132 | { "1.7 SecureFX*", SSH_OLD_SESSIONID }, | 69 | { "1.7 SecureFX*", SSH_OLD_SESSIONID }, |
@@ -189,6 +126,8 @@ compat_datafellows(const char *version) | |||
189 | "WinSCP_release_5.7.3," | 126 | "WinSCP_release_5.7.3," |
190 | "WinSCP_release_5.7.4", | 127 | "WinSCP_release_5.7.4", |
191 | SSH_OLD_DHGEX }, | 128 | SSH_OLD_DHGEX }, |
129 | { "ConfD-*", | ||
130 | SSH_BUG_UTF8TTYMODE }, | ||
192 | { NULL, 0 } | 131 | { NULL, 0 } |
193 | }; | 132 | }; |
194 | 133 | ||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: compat.h,v 1.49 2017/04/30 23:13:25 djm Exp $ */ | 1 | /* $OpenBSD: compat.h,v 1.51 2018/02/16 04:43:11 dtucker Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved. | 4 | * Copyright (c) 1999, 2000, 2001 Markus Friedl. All rights reserved. |
@@ -32,31 +32,31 @@ | |||
32 | #define SSH_PROTO_1_PREFERRED 0x02 | 32 | #define SSH_PROTO_1_PREFERRED 0x02 |
33 | #define SSH_PROTO_2 0x04 | 33 | #define SSH_PROTO_2 0x04 |
34 | 34 | ||
35 | #define SSH_BUG_SIGBLOB 0x00000001 | 35 | #define SSH_BUG_UTF8TTYMODE 0x00000001 |
36 | #define SSH_BUG_PKSERVICE 0x00000002 | 36 | /* #define unused 0x00000002 */ |
37 | #define SSH_BUG_HMAC 0x00000004 | 37 | /* #define unused 0x00000004 */ |
38 | #define SSH_BUG_X11FWD 0x00000008 | 38 | /* #define unused 0x00000008 */ |
39 | #define SSH_OLD_SESSIONID 0x00000010 | 39 | #define SSH_OLD_SESSIONID 0x00000010 |
40 | #define SSH_BUG_PKAUTH 0x00000020 | 40 | /* #define unused 0x00000020 */ |
41 | #define SSH_BUG_DEBUG 0x00000040 | 41 | #define SSH_BUG_DEBUG 0x00000040 |
42 | #define SSH_BUG_BANNER 0x00000080 | 42 | /* #define unused 0x00000080 */ |
43 | #define SSH_BUG_IGNOREMSG 0x00000100 | 43 | #define SSH_BUG_IGNOREMSG 0x00000100 |
44 | #define SSH_BUG_PKOK 0x00000200 | 44 | /* #define unused 0x00000200 */ |
45 | #define SSH_BUG_PASSWORDPAD 0x00000400 | 45 | #define SSH_BUG_PASSWORDPAD 0x00000400 |
46 | #define SSH_BUG_SCANNER 0x00000800 | 46 | #define SSH_BUG_SCANNER 0x00000800 |
47 | #define SSH_BUG_BIGENDIANAES 0x00001000 | 47 | #define SSH_BUG_BIGENDIANAES 0x00001000 |
48 | #define SSH_BUG_RSASIGMD5 0x00002000 | 48 | #define SSH_BUG_RSASIGMD5 0x00002000 |
49 | #define SSH_OLD_DHGEX 0x00004000 | 49 | #define SSH_OLD_DHGEX 0x00004000 |
50 | #define SSH_BUG_NOREKEY 0x00008000 | 50 | #define SSH_BUG_NOREKEY 0x00008000 |
51 | #define SSH_BUG_HBSERVICE 0x00010000 | 51 | /* #define unused 0x00010000 */ |
52 | #define SSH_BUG_OPENFAILURE 0x00020000 | 52 | /* #define unused 0x00020000 */ |
53 | #define SSH_BUG_DERIVEKEY 0x00040000 | 53 | /* #define unused 0x00040000 */ |
54 | #define SSH_BUG_DUMMYCHAN 0x00100000 | 54 | /* #define unused 0x00100000 */ |
55 | #define SSH_BUG_EXTEOF 0x00200000 | 55 | #define SSH_BUG_EXTEOF 0x00200000 |
56 | #define SSH_BUG_PROBE 0x00400000 | 56 | #define SSH_BUG_PROBE 0x00400000 |
57 | #define SSH_BUG_FIRSTKEX 0x00800000 | 57 | /* #define unused 0x00800000 */ |
58 | #define SSH_OLD_FORWARD_ADDR 0x01000000 | 58 | #define SSH_OLD_FORWARD_ADDR 0x01000000 |
59 | #define SSH_BUG_RFWD_ADDR 0x02000000 | 59 | /* #define unused 0x02000000 */ |
60 | #define SSH_NEW_OPENSSH 0x04000000 | 60 | #define SSH_NEW_OPENSSH 0x04000000 |
61 | #define SSH_BUG_DYNAMIC_RPORT 0x08000000 | 61 | #define SSH_BUG_DYNAMIC_RPORT 0x08000000 |
62 | #define SSH_BUG_CURVE25519PAD 0x10000000 | 62 | #define SSH_BUG_CURVE25519PAD 0x10000000 |
diff --git a/config.h.in b/config.h.in index 0b244fd5f..4c9545c78 100644 --- a/config.h.in +++ b/config.h.in | |||
@@ -34,9 +34,6 @@ | |||
34 | /* Define if you system's inet_ntoa is busted (e.g. Irix gcc issue) */ | 34 | /* Define if you system's inet_ntoa is busted (e.g. Irix gcc issue) */ |
35 | #undef BROKEN_INET_NTOA | 35 | #undef BROKEN_INET_NTOA |
36 | 36 | ||
37 | /* ia_uinfo routines not supported by OS yet */ | ||
38 | #undef BROKEN_LIBIAF | ||
39 | |||
40 | /* Define if your struct dirent expects you to allocate extra space for d_name | 37 | /* Define if your struct dirent expects you to allocate extra space for d_name |
41 | */ | 38 | */ |
42 | #undef BROKEN_ONE_BYTE_DIRENT_D_NAME | 39 | #undef BROKEN_ONE_BYTE_DIRENT_D_NAME |
@@ -75,6 +72,12 @@ | |||
75 | /* Define if your snprintf is busted */ | 72 | /* Define if your snprintf is busted */ |
76 | #undef BROKEN_SNPRINTF | 73 | #undef BROKEN_SNPRINTF |
77 | 74 | ||
75 | /* strndup broken, see APAR IY61211 */ | ||
76 | #undef BROKEN_STRNDUP | ||
77 | |||
78 | /* strnlen broken, see APAR IY62551 */ | ||
79 | #undef BROKEN_STRNLEN | ||
80 | |||
78 | /* strnvis detected broken */ | 81 | /* strnvis detected broken */ |
79 | #undef BROKEN_STRNVIS | 82 | #undef BROKEN_STRNVIS |
80 | 83 | ||
@@ -132,6 +135,9 @@ | |||
132 | /* Enable for PKCS#11 support */ | 135 | /* Enable for PKCS#11 support */ |
133 | #undef ENABLE_PKCS11 | 136 | #undef ENABLE_PKCS11 |
134 | 137 | ||
138 | /* define if fflush(NULL) does not work */ | ||
139 | #undef FFLUSH_NULL_BUG | ||
140 | |||
135 | /* File names may not contain backslash characters */ | 141 | /* File names may not contain backslash characters */ |
136 | #undef FILESYSTEM_NO_BACKSLASH | 142 | #undef FILESYSTEM_NO_BACKSLASH |
137 | 143 | ||
@@ -141,7 +147,7 @@ | |||
141 | /* fsid_t has member __val */ | 147 | /* fsid_t has member __val */ |
142 | #undef FSID_HAS___VAL | 148 | #undef FSID_HAS___VAL |
143 | 149 | ||
144 | /* Define to 1 if the `getpgrp' function requires zero arguments. */ | 150 | /* getpgrp takes one arg */ |
145 | #undef GETPGRP_VOID | 151 | #undef GETPGRP_VOID |
146 | 152 | ||
147 | /* Conflicting defs for getspnam */ | 153 | /* Conflicting defs for getspnam */ |
@@ -252,7 +258,10 @@ | |||
252 | /* Define to 1 if you have the <bstring.h> header file. */ | 258 | /* Define to 1 if you have the <bstring.h> header file. */ |
253 | #undef HAVE_BSTRING_H | 259 | #undef HAVE_BSTRING_H |
254 | 260 | ||
255 | /* calloc(x, 0) returns NULL */ | 261 | /* Define to 1 if you have the `bzero' function. */ |
262 | #undef HAVE_BZERO | ||
263 | |||
264 | /* calloc(0, x) returns NULL */ | ||
256 | #undef HAVE_CALLOC | 265 | #undef HAVE_CALLOC |
257 | 266 | ||
258 | /* Define to 1 if you have the `cap_rights_limit' function. */ | 267 | /* Define to 1 if you have the `cap_rights_limit' function. */ |
@@ -299,6 +308,10 @@ | |||
299 | don't. */ | 308 | don't. */ |
300 | #undef HAVE_DECL_AUTHENTICATE | 309 | #undef HAVE_DECL_AUTHENTICATE |
301 | 310 | ||
311 | /* Define to 1 if you have the declaration of `bzero', and to 0 if you don't. | ||
312 | */ | ||
313 | #undef HAVE_DECL_BZERO | ||
314 | |||
302 | /* Define to 1 if you have the declaration of `GLOB_NOMATCH', and to 0 if you | 315 | /* Define to 1 if you have the declaration of `GLOB_NOMATCH', and to 0 if you |
303 | don't. */ | 316 | don't. */ |
304 | #undef HAVE_DECL_GLOB_NOMATCH | 317 | #undef HAVE_DECL_GLOB_NOMATCH |
@@ -347,6 +360,10 @@ | |||
347 | don't. */ | 360 | don't. */ |
348 | #undef HAVE_DECL_PASSWDEXPIRED | 361 | #undef HAVE_DECL_PASSWDEXPIRED |
349 | 362 | ||
363 | /* Define to 1 if you have the declaration of `readv', and to 0 if you don't. | ||
364 | */ | ||
365 | #undef HAVE_DECL_READV | ||
366 | |||
350 | /* Define to 1 if you have the declaration of `setauthdb', and to 0 if you | 367 | /* Define to 1 if you have the declaration of `setauthdb', and to 0 if you |
351 | don't. */ | 368 | don't. */ |
352 | #undef HAVE_DECL_SETAUTHDB | 369 | #undef HAVE_DECL_SETAUTHDB |
@@ -466,6 +483,9 @@ | |||
466 | /* Define to 1 if you have the <floatingpoint.h> header file. */ | 483 | /* Define to 1 if you have the <floatingpoint.h> header file. */ |
467 | #undef HAVE_FLOATINGPOINT_H | 484 | #undef HAVE_FLOATINGPOINT_H |
468 | 485 | ||
486 | /* Define to 1 if you have the `flock' function. */ | ||
487 | #undef HAVE_FLOCK | ||
488 | |||
469 | /* Define to 1 if you have the `fmt_scaled' function. */ | 489 | /* Define to 1 if you have the `fmt_scaled' function. */ |
470 | #undef HAVE_FMT_SCALED | 490 | #undef HAVE_FMT_SCALED |
471 | 491 | ||
@@ -553,12 +573,12 @@ | |||
553 | /* Define if getrrsetbyname() exists */ | 573 | /* Define if getrrsetbyname() exists */ |
554 | #undef HAVE_GETRRSETBYNAME | 574 | #undef HAVE_GETRRSETBYNAME |
555 | 575 | ||
556 | /* Define to 1 if you have the `getrusage' function. */ | ||
557 | #undef HAVE_GETRUSAGE | ||
558 | |||
559 | /* Define to 1 if you have the `getseuserbyname' function. */ | 576 | /* Define to 1 if you have the `getseuserbyname' function. */ |
560 | #undef HAVE_GETSEUSERBYNAME | 577 | #undef HAVE_GETSEUSERBYNAME |
561 | 578 | ||
579 | /* Define to 1 if you have the `getsid' function. */ | ||
580 | #undef HAVE_GETSID | ||
581 | |||
562 | /* Define to 1 if you have the `gettimeofday' function. */ | 582 | /* Define to 1 if you have the `gettimeofday' function. */ |
563 | #undef HAVE_GETTIMEOFDAY | 583 | #undef HAVE_GETTIMEOFDAY |
564 | 584 | ||
@@ -640,6 +660,9 @@ | |||
640 | /* Define if you have ut_id in utmpx.h */ | 660 | /* Define if you have ut_id in utmpx.h */ |
641 | #undef HAVE_ID_IN_UTMPX | 661 | #undef HAVE_ID_IN_UTMPX |
642 | 662 | ||
663 | /* Define to 1 if you have the <ifaddrs.h> header file. */ | ||
664 | #undef HAVE_IFADDRS_H | ||
665 | |||
643 | /* Define to 1 if you have the `inet_aton' function. */ | 666 | /* Define to 1 if you have the `inet_aton' function. */ |
644 | #undef HAVE_INET_ATON | 667 | #undef HAVE_INET_ATON |
645 | 668 | ||
@@ -821,6 +844,9 @@ | |||
821 | /* Define to 1 if you have the <net/if_tun.h> header file. */ | 844 | /* Define to 1 if you have the <net/if_tun.h> header file. */ |
822 | #undef HAVE_NET_IF_TUN_H | 845 | #undef HAVE_NET_IF_TUN_H |
823 | 846 | ||
847 | /* Define to 1 if you have the <net/route.h> header file. */ | ||
848 | #undef HAVE_NET_ROUTE_H | ||
849 | |||
824 | /* Define if you are on NeXT */ | 850 | /* Define if you are on NeXT */ |
825 | #undef HAVE_NEXT | 851 | #undef HAVE_NEXT |
826 | 852 | ||
@@ -903,6 +929,9 @@ | |||
903 | /* Define to 1 if you have the `pututxline' function. */ | 929 | /* Define to 1 if you have the `pututxline' function. */ |
904 | #undef HAVE_PUTUTXLINE | 930 | #undef HAVE_PUTUTXLINE |
905 | 931 | ||
932 | /* Define to 1 if you have the `raise' function. */ | ||
933 | #undef HAVE_RAISE | ||
934 | |||
906 | /* Define to 1 if you have the `readpassphrase' function. */ | 935 | /* Define to 1 if you have the `readpassphrase' function. */ |
907 | #undef HAVE_READPASSPHRASE | 936 | #undef HAVE_READPASSPHRASE |
908 | 937 | ||
@@ -1120,6 +1149,9 @@ | |||
1120 | /* Define to 1 if you have the `strmode' function. */ | 1149 | /* Define to 1 if you have the `strmode' function. */ |
1121 | #undef HAVE_STRMODE | 1150 | #undef HAVE_STRMODE |
1122 | 1151 | ||
1152 | /* Define to 1 if you have the `strndup' function. */ | ||
1153 | #undef HAVE_STRNDUP | ||
1154 | |||
1123 | /* Define to 1 if you have the `strnlen' function. */ | 1155 | /* Define to 1 if you have the `strnlen' function. */ |
1124 | #undef HAVE_STRNLEN | 1156 | #undef HAVE_STRNLEN |
1125 | 1157 | ||
@@ -1174,6 +1206,9 @@ | |||
1174 | /* define if you have struct sockaddr_storage data type */ | 1206 | /* define if you have struct sockaddr_storage data type */ |
1175 | #undef HAVE_STRUCT_SOCKADDR_STORAGE | 1207 | #undef HAVE_STRUCT_SOCKADDR_STORAGE |
1176 | 1208 | ||
1209 | /* Define to 1 if `f_flags' is a member of `struct statfs'. */ | ||
1210 | #undef HAVE_STRUCT_STATFS_F_FLAGS | ||
1211 | |||
1177 | /* Define to 1 if `st_blksize' is a member of `struct stat'. */ | 1212 | /* Define to 1 if `st_blksize' is a member of `struct stat'. */ |
1178 | #undef HAVE_STRUCT_STAT_ST_BLKSIZE | 1213 | #undef HAVE_STRUCT_STAT_ST_BLKSIZE |
1179 | 1214 | ||
@@ -1219,6 +1254,12 @@ | |||
1219 | /* Define if your system defines sys_errlist[] */ | 1254 | /* Define if your system defines sys_errlist[] */ |
1220 | #undef HAVE_SYS_ERRLIST | 1255 | #undef HAVE_SYS_ERRLIST |
1221 | 1256 | ||
1257 | /* Define to 1 if you have the <sys/file.h> header file. */ | ||
1258 | #undef HAVE_SYS_FILE_H | ||
1259 | |||
1260 | /* Define to 1 if you have the <sys/label.h> header file. */ | ||
1261 | #undef HAVE_SYS_LABEL_H | ||
1262 | |||
1222 | /* Define to 1 if you have the <sys/mman.h> header file. */ | 1263 | /* Define to 1 if you have the <sys/mman.h> header file. */ |
1223 | #undef HAVE_SYS_MMAN_H | 1264 | #undef HAVE_SYS_MMAN_H |
1224 | 1265 | ||
@@ -1264,6 +1305,9 @@ | |||
1264 | /* Define to 1 if you have the <sys/strtio.h> header file. */ | 1305 | /* Define to 1 if you have the <sys/strtio.h> header file. */ |
1265 | #undef HAVE_SYS_STRTIO_H | 1306 | #undef HAVE_SYS_STRTIO_H |
1266 | 1307 | ||
1308 | /* Define to 1 if you have the <sys/sysctl.h> header file. */ | ||
1309 | #undef HAVE_SYS_SYSCTL_H | ||
1310 | |||
1267 | /* Force use of sys/syslog.h on Ultrix */ | 1311 | /* Force use of sys/syslog.h on Ultrix */ |
1268 | #undef HAVE_SYS_SYSLOG_H | 1312 | #undef HAVE_SYS_SYSLOG_H |
1269 | 1313 | ||
@@ -1282,6 +1326,9 @@ | |||
1282 | /* Define to 1 if you have the <sys/un.h> header file. */ | 1326 | /* Define to 1 if you have the <sys/un.h> header file. */ |
1283 | #undef HAVE_SYS_UN_H | 1327 | #undef HAVE_SYS_UN_H |
1284 | 1328 | ||
1329 | /* Define to 1 if you have the <sys/vfs.h> header file. */ | ||
1330 | #undef HAVE_SYS_VFS_H | ||
1331 | |||
1285 | /* Define to 1 if you have the `tcgetpgrp' function. */ | 1332 | /* Define to 1 if you have the `tcgetpgrp' function. */ |
1286 | #undef HAVE_TCGETPGRP | 1333 | #undef HAVE_TCGETPGRP |
1287 | 1334 | ||
@@ -1496,12 +1543,12 @@ | |||
1496 | /* Need setpgrp to acquire controlling tty */ | 1543 | /* Need setpgrp to acquire controlling tty */ |
1497 | #undef NEED_SETPGRP | 1544 | #undef NEED_SETPGRP |
1498 | 1545 | ||
1546 | /* compiler does not accept __attribute__ on protoype args */ | ||
1547 | #undef NO_ATTRIBUTE_ON_PROTOTYPE_ARGS | ||
1548 | |||
1499 | /* compiler does not accept __attribute__ on return types */ | 1549 | /* compiler does not accept __attribute__ on return types */ |
1500 | #undef NO_ATTRIBUTE_ON_RETURN_TYPE | 1550 | #undef NO_ATTRIBUTE_ON_RETURN_TYPE |
1501 | 1551 | ||
1502 | /* Define if you don't want to use lastlog in session.c */ | ||
1503 | #undef NO_SSH_LASTLOG | ||
1504 | |||
1505 | /* Define to disable UID restoration test */ | 1552 | /* Define to disable UID restoration test */ |
1506 | #undef NO_UID_RESTORATION_TEST | 1553 | #undef NO_UID_RESTORATION_TEST |
1507 | 1554 | ||
@@ -1681,6 +1728,9 @@ | |||
1681 | /* syslog_r function is safe to use in in a signal handler */ | 1728 | /* syslog_r function is safe to use in in a signal handler */ |
1682 | #undef SYSLOG_R_SAFE_IN_SIGHAND | 1729 | #undef SYSLOG_R_SAFE_IN_SIGHAND |
1683 | 1730 | ||
1731 | /* Support routing domains using Linux VRF */ | ||
1732 | #undef SYS_RDOMAIN_LINUX | ||
1733 | |||
1684 | /* Support passwords > 8 chars */ | 1734 | /* Support passwords > 8 chars */ |
1685 | #undef UNIXWARE_LONG_PASSWORDS | 1735 | #undef UNIXWARE_LONG_PASSWORDS |
1686 | 1736 | ||
@@ -624,6 +624,7 @@ ac_includes_default="\ | |||
624 | #endif" | 624 | #endif" |
625 | 625 | ||
626 | ac_subst_vars='LTLIBOBJS | 626 | ac_subst_vars='LTLIBOBJS |
627 | DEPEND | ||
627 | UNSUPPORTED_ALGORITHMS | 628 | UNSUPPORTED_ALGORITHMS |
628 | TEST_MALLOC_OPTIONS | 629 | TEST_MALLOC_OPTIONS |
629 | TEST_SSH_UTF8 | 630 | TEST_SSH_UTF8 |
@@ -663,11 +664,11 @@ SH | |||
663 | TEST_MINUS_S_SH | 664 | TEST_MINUS_S_SH |
664 | ENT | 665 | ENT |
665 | SED | 666 | SED |
666 | PERL | ||
667 | KILL | 667 | KILL |
668 | CAT | 668 | CAT |
669 | ac_ct_AR | 669 | ac_ct_AR |
670 | AR | 670 | AR |
671 | MKDIR_P | ||
671 | INSTALL_DATA | 672 | INSTALL_DATA |
672 | INSTALL_SCRIPT | 673 | INSTALL_SCRIPT |
673 | INSTALL_PROGRAM | 674 | INSTALL_PROGRAM |
@@ -1473,7 +1474,7 @@ Optional Packages: | |||
1473 | --with-superuser-path= Specify different path for super-user | 1474 | --with-superuser-path= Specify different path for super-user |
1474 | --with-4in6 Check for and convert IPv4 in IPv6 mapped addresses | 1475 | --with-4in6 Check for and convert IPv4 in IPv6 mapped addresses |
1475 | --with-bsd-auth Enable BSD auth support | 1476 | --with-bsd-auth Enable BSD auth support |
1476 | --with-pid-dir=PATH Specify location of ssh.pid file | 1477 | --with-pid-dir=PATH Specify location of sshd.pid file |
1477 | --with-lastlog=FILE|DIR specify lastlog location common locations | 1478 | --with-lastlog=FILE|DIR specify lastlog location common locations |
1478 | 1479 | ||
1479 | Some influential environment variables: | 1480 | Some influential environment variables: |
@@ -4564,6 +4565,48 @@ $as_echo "$ac_cv_path_EGREP" >&6; } | |||
4564 | EGREP="$ac_cv_path_EGREP" | 4565 | EGREP="$ac_cv_path_EGREP" |
4565 | 4566 | ||
4566 | 4567 | ||
4568 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 | ||
4569 | $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } | ||
4570 | if test -z "$MKDIR_P"; then | ||
4571 | if ${ac_cv_path_mkdir+:} false; then : | ||
4572 | $as_echo_n "(cached) " >&6 | ||
4573 | else | ||
4574 | as_save_IFS=$IFS; IFS=$PATH_SEPARATOR | ||
4575 | for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin | ||
4576 | do | ||
4577 | IFS=$as_save_IFS | ||
4578 | test -z "$as_dir" && as_dir=. | ||
4579 | for ac_prog in mkdir gmkdir; do | ||
4580 | for ac_exec_ext in '' $ac_executable_extensions; do | ||
4581 | as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue | ||
4582 | case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( | ||
4583 | 'mkdir (GNU coreutils) '* | \ | ||
4584 | 'mkdir (coreutils) '* | \ | ||
4585 | 'mkdir (fileutils) '4.1*) | ||
4586 | ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext | ||
4587 | break 3;; | ||
4588 | esac | ||
4589 | done | ||
4590 | done | ||
4591 | done | ||
4592 | IFS=$as_save_IFS | ||
4593 | |||
4594 | fi | ||
4595 | |||
4596 | test -d ./--version && rmdir ./--version | ||
4597 | if test "${ac_cv_path_mkdir+set}" = set; then | ||
4598 | MKDIR_P="$ac_cv_path_mkdir -p" | ||
4599 | else | ||
4600 | # As a last resort, use the slow shell script. Don't cache a | ||
4601 | # value for MKDIR_P within a source directory, because that will | ||
4602 | # break other packages using the cache if that directory is | ||
4603 | # removed, or if the value is a relative name. | ||
4604 | MKDIR_P="$ac_install_sh -d" | ||
4605 | fi | ||
4606 | fi | ||
4607 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 | ||
4608 | $as_echo "$MKDIR_P" >&6; } | ||
4609 | |||
4567 | if test -n "$ac_tool_prefix"; then | 4610 | if test -n "$ac_tool_prefix"; then |
4568 | for ac_prog in ar | 4611 | for ac_prog in ar |
4569 | do | 4612 | do |
@@ -4744,51 +4787,6 @@ $as_echo "no" >&6; } | |||
4744 | fi | 4787 | fi |
4745 | 4788 | ||
4746 | 4789 | ||
4747 | for ac_prog in perl5 perl | ||
4748 | do | ||
4749 | # Extract the first word of "$ac_prog", so it can be a program name with args. | ||
4750 | set dummy $ac_prog; ac_word=$2 | ||
4751 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 | ||
4752 | $as_echo_n "checking for $ac_word... " >&6; } | ||
4753 | if ${ac_cv_path_PERL+:} false; then : | ||
4754 | $as_echo_n "(cached) " >&6 | ||
4755 | else | ||
4756 | case $PERL in | ||
4757 | [\\/]* | ?:[\\/]*) | ||
4758 | ac_cv_path_PERL="$PERL" # Let the user override the test with a path. | ||
4759 | ;; | ||
4760 | *) | ||
4761 | as_save_IFS=$IFS; IFS=$PATH_SEPARATOR | ||
4762 | for as_dir in $PATH | ||
4763 | do | ||
4764 | IFS=$as_save_IFS | ||
4765 | test -z "$as_dir" && as_dir=. | ||
4766 | for ac_exec_ext in '' $ac_executable_extensions; do | ||
4767 | if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then | ||
4768 | ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" | ||
4769 | $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 | ||
4770 | break 2 | ||
4771 | fi | ||
4772 | done | ||
4773 | done | ||
4774 | IFS=$as_save_IFS | ||
4775 | |||
4776 | ;; | ||
4777 | esac | ||
4778 | fi | ||
4779 | PERL=$ac_cv_path_PERL | ||
4780 | if test -n "$PERL"; then | ||
4781 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 | ||
4782 | $as_echo "$PERL" >&6; } | ||
4783 | else | ||
4784 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||
4785 | $as_echo "no" >&6; } | ||
4786 | fi | ||
4787 | |||
4788 | |||
4789 | test -n "$PERL" && break | ||
4790 | done | ||
4791 | |||
4792 | # 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. |
4793 | set dummy sed; ac_word=$2 | 4791 | set dummy sed; ac_word=$2 |
4794 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 | 4792 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
@@ -4829,7 +4827,6 @@ $as_echo "no" >&6; } | |||
4829 | fi | 4827 | fi |
4830 | 4828 | ||
4831 | 4829 | ||
4832 | |||
4833 | # Extract the first word of "ent", so it can be a program name with args. | 4830 | # Extract the first word of "ent", so it can be a program name with args. |
4834 | set dummy ent; ac_word=$2 | 4831 | set dummy ent; ac_word=$2 |
4835 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 | 4832 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 |
@@ -6223,6 +6220,172 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | |||
6223 | } | 6220 | } |
6224 | if test "x$use_toolchain_hardening" = "x1"; then | 6221 | if test "x$use_toolchain_hardening" = "x1"; then |
6225 | { | 6222 | { |
6223 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -mfunction-return=thunk" >&5 | ||
6224 | $as_echo_n "checking if $CC supports compile flag -mfunction-return=thunk... " >&6; } | ||
6225 | saved_CFLAGS="$CFLAGS" | ||
6226 | CFLAGS="$CFLAGS $WERROR -mfunction-return=thunk" | ||
6227 | _define_flag="" | ||
6228 | test "x$_define_flag" = "x" && _define_flag="-mfunction-return=thunk" | ||
6229 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||
6230 | /* end confdefs.h. */ | ||
6231 | |||
6232 | #include <stdlib.h> | ||
6233 | #include <stdio.h> | ||
6234 | int main(int argc, char **argv) { | ||
6235 | /* Some math to catch -ftrapv problems in the toolchain */ | ||
6236 | int i = 123 * argc, j = 456 + argc, k = 789 - argc; | ||
6237 | float l = i * 2.1; | ||
6238 | double m = l / 0.5; | ||
6239 | long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; | ||
6240 | printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); | ||
6241 | exit(0); | ||
6242 | } | ||
6243 | |||
6244 | _ACEOF | ||
6245 | if ac_fn_c_try_compile "$LINENO"; then : | ||
6246 | |||
6247 | if `grep -i "unrecognized option" conftest.err >/dev/null` | ||
6248 | then | ||
6249 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||
6250 | $as_echo "no" >&6; } | ||
6251 | CFLAGS="$saved_CFLAGS" | ||
6252 | else | ||
6253 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | ||
6254 | $as_echo "yes" >&6; } | ||
6255 | CFLAGS="$saved_CFLAGS $_define_flag" | ||
6256 | fi | ||
6257 | else | ||
6258 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||
6259 | $as_echo "no" >&6; } | ||
6260 | CFLAGS="$saved_CFLAGS" | ||
6261 | |||
6262 | fi | ||
6263 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
6264 | } # gcc | ||
6265 | { | ||
6266 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -mindirect-branch=thunk" >&5 | ||
6267 | $as_echo_n "checking if $CC supports compile flag -mindirect-branch=thunk... " >&6; } | ||
6268 | saved_CFLAGS="$CFLAGS" | ||
6269 | CFLAGS="$CFLAGS $WERROR -mindirect-branch=thunk" | ||
6270 | _define_flag="" | ||
6271 | test "x$_define_flag" = "x" && _define_flag="-mindirect-branch=thunk" | ||
6272 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||
6273 | /* end confdefs.h. */ | ||
6274 | |||
6275 | #include <stdlib.h> | ||
6276 | #include <stdio.h> | ||
6277 | int main(int argc, char **argv) { | ||
6278 | /* Some math to catch -ftrapv problems in the toolchain */ | ||
6279 | int i = 123 * argc, j = 456 + argc, k = 789 - argc; | ||
6280 | float l = i * 2.1; | ||
6281 | double m = l / 0.5; | ||
6282 | long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; | ||
6283 | printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); | ||
6284 | exit(0); | ||
6285 | } | ||
6286 | |||
6287 | _ACEOF | ||
6288 | if ac_fn_c_try_compile "$LINENO"; then : | ||
6289 | |||
6290 | if `grep -i "unrecognized option" conftest.err >/dev/null` | ||
6291 | then | ||
6292 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||
6293 | $as_echo "no" >&6; } | ||
6294 | CFLAGS="$saved_CFLAGS" | ||
6295 | else | ||
6296 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | ||
6297 | $as_echo "yes" >&6; } | ||
6298 | CFLAGS="$saved_CFLAGS $_define_flag" | ||
6299 | fi | ||
6300 | else | ||
6301 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||
6302 | $as_echo "no" >&6; } | ||
6303 | CFLAGS="$saved_CFLAGS" | ||
6304 | |||
6305 | fi | ||
6306 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
6307 | } # gcc | ||
6308 | { | ||
6309 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -mretpoline" >&5 | ||
6310 | $as_echo_n "checking if $CC supports compile flag -mretpoline... " >&6; } | ||
6311 | saved_CFLAGS="$CFLAGS" | ||
6312 | CFLAGS="$CFLAGS $WERROR -mretpoline" | ||
6313 | _define_flag="" | ||
6314 | test "x$_define_flag" = "x" && _define_flag="-mretpoline" | ||
6315 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||
6316 | /* end confdefs.h. */ | ||
6317 | |||
6318 | #include <stdlib.h> | ||
6319 | #include <stdio.h> | ||
6320 | int main(int argc, char **argv) { | ||
6321 | /* Some math to catch -ftrapv problems in the toolchain */ | ||
6322 | int i = 123 * argc, j = 456 + argc, k = 789 - argc; | ||
6323 | float l = i * 2.1; | ||
6324 | double m = l / 0.5; | ||
6325 | long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; | ||
6326 | printf("%d %d %d %f %f %lld %lld\n", i, j, k, l, m, n, o); | ||
6327 | exit(0); | ||
6328 | } | ||
6329 | |||
6330 | _ACEOF | ||
6331 | if ac_fn_c_try_compile "$LINENO"; then : | ||
6332 | |||
6333 | if `grep -i "unrecognized option" conftest.err >/dev/null` | ||
6334 | then | ||
6335 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||
6336 | $as_echo "no" >&6; } | ||
6337 | CFLAGS="$saved_CFLAGS" | ||
6338 | else | ||
6339 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | ||
6340 | $as_echo "yes" >&6; } | ||
6341 | CFLAGS="$saved_CFLAGS $_define_flag" | ||
6342 | fi | ||
6343 | else | ||
6344 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||
6345 | $as_echo "no" >&6; } | ||
6346 | CFLAGS="$saved_CFLAGS" | ||
6347 | |||
6348 | fi | ||
6349 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
6350 | } # clang | ||
6351 | { | ||
6352 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $LD supports link flag -Wl,-z,retpolineplt" >&5 | ||
6353 | $as_echo_n "checking if $LD supports link flag -Wl,-z,retpolineplt... " >&6; } | ||
6354 | saved_LDFLAGS="$LDFLAGS" | ||
6355 | LDFLAGS="$LDFLAGS $WERROR -Wl,-z,retpolineplt" | ||
6356 | _define_flag="" | ||
6357 | test "x$_define_flag" = "x" && _define_flag="-Wl,-z,retpolineplt" | ||
6358 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||
6359 | /* end confdefs.h. */ | ||
6360 | |||
6361 | #include <stdlib.h> | ||
6362 | #include <stdio.h> | ||
6363 | int main(int argc, char **argv) { | ||
6364 | /* Some math to catch -ftrapv problems in the toolchain */ | ||
6365 | int i = 123 * argc, j = 456 + argc, k = 789 - argc; | ||
6366 | float l = i * 2.1; | ||
6367 | double m = l / 0.5; | ||
6368 | long long int n = argc * 12345LL, o = 12345LL * (long long int)argc; | ||
6369 | long long p = n * o; | ||
6370 | printf("%d %d %d %f %f %lld %lld %lld\n", i, j, k, l, m, n, o, p); | ||
6371 | exit(0); | ||
6372 | } | ||
6373 | |||
6374 | _ACEOF | ||
6375 | if ac_fn_c_try_link "$LINENO"; then : | ||
6376 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | ||
6377 | $as_echo "yes" >&6; } | ||
6378 | LDFLAGS="$saved_LDFLAGS $_define_flag" | ||
6379 | else | ||
6380 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||
6381 | $as_echo "no" >&6; } | ||
6382 | LDFLAGS="$saved_LDFLAGS" | ||
6383 | |||
6384 | fi | ||
6385 | rm -f core conftest.err conftest.$ac_objext \ | ||
6386 | conftest$ac_exeext conftest.$ac_ext | ||
6387 | } | ||
6388 | { | ||
6226 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -D_FORTIFY_SOURCE=2" >&5 | 6389 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports compile flag -D_FORTIFY_SOURCE=2" >&5 |
6227 | $as_echo_n "checking if $CC supports compile flag -D_FORTIFY_SOURCE=2... " >&6; } | 6390 | $as_echo_n "checking if $CC supports compile flag -D_FORTIFY_SOURCE=2... " >&6; } |
6228 | saved_CFLAGS="$CFLAGS" | 6391 | saved_CFLAGS="$CFLAGS" |
@@ -6591,6 +6754,34 @@ $as_echo "#define NO_ATTRIBUTE_ON_RETURN_TYPE 1" >>confdefs.h | |||
6591 | fi | 6754 | fi |
6592 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | 6755 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
6593 | 6756 | ||
6757 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler allows __attribute__ prototype args" >&5 | ||
6758 | $as_echo_n "checking if compiler allows __attribute__ prototype args... " >&6; } | ||
6759 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||
6760 | /* end confdefs.h. */ | ||
6761 | |||
6762 | #include <stdlib.h> | ||
6763 | typedef void foo(const char *, ...) __attribute__((format(printf, 1, 2))); | ||
6764 | int | ||
6765 | main () | ||
6766 | { | ||
6767 | exit(0); | ||
6768 | ; | ||
6769 | return 0; | ||
6770 | } | ||
6771 | _ACEOF | ||
6772 | if ac_fn_c_try_compile "$LINENO"; then : | ||
6773 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | ||
6774 | $as_echo "yes" >&6; } | ||
6775 | else | ||
6776 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||
6777 | $as_echo "no" >&6; } | ||
6778 | |||
6779 | $as_echo "#define NO_ATTRIBUTE_ON_PROTOTYPE_ARGS 1" >>confdefs.h | ||
6780 | |||
6781 | |||
6782 | fi | ||
6783 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
6784 | |||
6594 | if test "x$no_attrib_nonnull" != "x1" ; then | 6785 | if test "x$no_attrib_nonnull" != "x1" ; then |
6595 | 6786 | ||
6596 | $as_echo "#define HAVE_ATTRIBUTE__NONNULL__ 1" >>confdefs.h | 6787 | $as_echo "#define HAVE_ATTRIBUTE__NONNULL__ 1" >>confdefs.h |
@@ -6717,6 +6908,7 @@ for ac_header in \ | |||
6717 | glob.h \ | 6908 | glob.h \ |
6718 | ia.h \ | 6909 | ia.h \ |
6719 | iaf.h \ | 6910 | iaf.h \ |
6911 | ifaddrs.h \ | ||
6720 | inttypes.h \ | 6912 | inttypes.h \ |
6721 | langinfo.h \ | 6913 | langinfo.h \ |
6722 | limits.h \ | 6914 | limits.h \ |
@@ -6740,12 +6932,13 @@ for ac_header in \ | |||
6740 | stdint.h \ | 6932 | stdint.h \ |
6741 | string.h \ | 6933 | string.h \ |
6742 | strings.h \ | 6934 | strings.h \ |
6743 | sys/audit.h \ | ||
6744 | sys/bitypes.h \ | 6935 | sys/bitypes.h \ |
6745 | sys/bsdtty.h \ | 6936 | sys/bsdtty.h \ |
6746 | sys/cdefs.h \ | 6937 | sys/cdefs.h \ |
6747 | sys/dir.h \ | 6938 | sys/dir.h \ |
6939 | sys/file.h \ | ||
6748 | sys/mman.h \ | 6940 | sys/mman.h \ |
6941 | sys/label.h \ | ||
6749 | sys/ndir.h \ | 6942 | sys/ndir.h \ |
6750 | sys/poll.h \ | 6943 | sys/poll.h \ |
6751 | sys/prctl.h \ | 6944 | sys/prctl.h \ |
@@ -6760,6 +6953,7 @@ for ac_header in \ | |||
6760 | sys/sysmacros.h \ | 6953 | sys/sysmacros.h \ |
6761 | sys/time.h \ | 6954 | sys/time.h \ |
6762 | sys/timers.h \ | 6955 | sys/timers.h \ |
6956 | sys/vfs.h \ | ||
6763 | time.h \ | 6957 | time.h \ |
6764 | tmpdir.h \ | 6958 | tmpdir.h \ |
6765 | ttyent.h \ | 6959 | ttyent.h \ |
@@ -6786,6 +6980,32 @@ fi | |||
6786 | done | 6980 | done |
6787 | 6981 | ||
6788 | 6982 | ||
6983 | # On some platforms (eg SunOS4) sys/audit.h requires sys/[time|types|label.h] | ||
6984 | # to be included first. | ||
6985 | for ac_header in sys/audit.h | ||
6986 | do : | ||
6987 | ac_fn_c_check_header_compile "$LINENO" "sys/audit.h" "ac_cv_header_sys_audit_h" " | ||
6988 | #ifdef HAVE_SYS_TIME_H | ||
6989 | # include <sys/time.h> | ||
6990 | #endif | ||
6991 | #ifdef HAVE_SYS_TYPES_H | ||
6992 | # include <sys/types.h> | ||
6993 | #endif | ||
6994 | #ifdef HAVE_SYS_LABEL_H | ||
6995 | # include <sys/label.h> | ||
6996 | #endif | ||
6997 | |||
6998 | " | ||
6999 | if test "x$ac_cv_header_sys_audit_h" = xyes; then : | ||
7000 | cat >>confdefs.h <<_ACEOF | ||
7001 | #define HAVE_SYS_AUDIT_H 1 | ||
7002 | _ACEOF | ||
7003 | |||
7004 | fi | ||
7005 | |||
7006 | done | ||
7007 | |||
7008 | |||
6789 | # sys/capsicum.h requires sys/types.h | 7009 | # sys/capsicum.h requires sys/types.h |
6790 | for ac_header in sys/capsicum.h | 7010 | for ac_header in sys/capsicum.h |
6791 | do : | 7011 | do : |
@@ -6805,6 +7025,29 @@ fi | |||
6805 | done | 7025 | done |
6806 | 7026 | ||
6807 | 7027 | ||
7028 | # net/route.h requires sys/socket.h and sys/types.h. | ||
7029 | # sys/sysctl.h also requires sys/param.h | ||
7030 | for ac_header in net/route.h sys/sysctl.h | ||
7031 | do : | ||
7032 | as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` | ||
7033 | ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " | ||
7034 | #ifdef HAVE_SYS_TYPES_H | ||
7035 | # include <sys/types.h> | ||
7036 | #endif | ||
7037 | #include <sys/param.h> | ||
7038 | #include <sys/socket.h> | ||
7039 | |||
7040 | " | ||
7041 | if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : | ||
7042 | cat >>confdefs.h <<_ACEOF | ||
7043 | #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 | ||
7044 | _ACEOF | ||
7045 | |||
7046 | fi | ||
7047 | |||
7048 | done | ||
7049 | |||
7050 | |||
6808 | # lastlog.h requires sys/time.h to be included first on Solaris | 7051 | # lastlog.h requires sys/time.h to be included first on Solaris |
6809 | for ac_header in lastlog.h | 7052 | for ac_header in lastlog.h |
6810 | do : | 7053 | do : |
@@ -7185,6 +7428,12 @@ $as_echo "#define PTY_ZEROREAD 1" >>confdefs.h | |||
7185 | 7428 | ||
7186 | $as_echo "#define PLATFORM_SYS_DIR_UID 2" >>confdefs.h | 7429 | $as_echo "#define PLATFORM_SYS_DIR_UID 2" >>confdefs.h |
7187 | 7430 | ||
7431 | |||
7432 | $as_echo "#define BROKEN_STRNDUP 1" >>confdefs.h | ||
7433 | |||
7434 | |||
7435 | $as_echo "#define BROKEN_STRNLEN 1" >>confdefs.h | ||
7436 | |||
7188 | ;; | 7437 | ;; |
7189 | *-*-android*) | 7438 | *-*-android*) |
7190 | 7439 | ||
@@ -7695,6 +7944,19 @@ $as_echo "#define SSH_TUN_COMPAT_AF 1" >>confdefs.h | |||
7695 | $as_echo "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h | 7944 | $as_echo "#define SSH_TUN_PREPEND_AF 1" >>confdefs.h |
7696 | 7945 | ||
7697 | fi | 7946 | fi |
7947 | ac_fn_c_check_header_compile "$LINENO" "linux/if.h" "ac_cv_header_linux_if_h" " | ||
7948 | #ifdef HAVE_SYS_TYPES_H | ||
7949 | # include <sys/types.H> | ||
7950 | #endif | ||
7951 | |||
7952 | " | ||
7953 | if test "x$ac_cv_header_linux_if_h" = xyes; then : | ||
7954 | |||
7955 | $as_echo "#define SYS_RDOMAIN_LINUX 1" >>confdefs.h | ||
7956 | |||
7957 | fi | ||
7958 | |||
7959 | |||
7698 | for ac_header in linux/seccomp.h linux/filter.h linux/audit.h | 7960 | for ac_header in linux/seccomp.h linux/filter.h linux/audit.h |
7699 | do : | 7961 | do : |
7700 | as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` | 7962 | as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` |
@@ -7709,6 +7971,75 @@ fi | |||
7709 | 7971 | ||
7710 | done | 7972 | done |
7711 | 7973 | ||
7974 | # Obtain MIPS ABI | ||
7975 | case "$host" in | ||
7976 | mips*) | ||
7977 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||
7978 | /* end confdefs.h. */ | ||
7979 | |||
7980 | #if _MIPS_SIM != _ABIO32 | ||
7981 | #error | ||
7982 | #endif | ||
7983 | |||
7984 | int | ||
7985 | main () | ||
7986 | { | ||
7987 | |||
7988 | ; | ||
7989 | return 0; | ||
7990 | } | ||
7991 | _ACEOF | ||
7992 | if ac_fn_c_try_compile "$LINENO"; then : | ||
7993 | mips_abi="o32" | ||
7994 | else | ||
7995 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||
7996 | /* end confdefs.h. */ | ||
7997 | |||
7998 | #if _MIPS_SIM != _ABIN32 | ||
7999 | #error | ||
8000 | #endif | ||
8001 | |||
8002 | int | ||
8003 | main () | ||
8004 | { | ||
8005 | |||
8006 | ; | ||
8007 | return 0; | ||
8008 | } | ||
8009 | _ACEOF | ||
8010 | if ac_fn_c_try_compile "$LINENO"; then : | ||
8011 | mips_abi="n32" | ||
8012 | else | ||
8013 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||
8014 | /* end confdefs.h. */ | ||
8015 | |||
8016 | #if _MIPS_SIM != _ABI64 | ||
8017 | #error | ||
8018 | #endif | ||
8019 | |||
8020 | int | ||
8021 | main () | ||
8022 | { | ||
8023 | |||
8024 | ; | ||
8025 | return 0; | ||
8026 | } | ||
8027 | _ACEOF | ||
8028 | if ac_fn_c_try_compile "$LINENO"; then : | ||
8029 | mips_abi="n64" | ||
8030 | else | ||
8031 | as_fn_error $? "unknown MIPS ABI" "$LINENO" 5 | ||
8032 | |||
8033 | fi | ||
8034 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
8035 | |||
8036 | fi | ||
8037 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
8038 | |||
8039 | fi | ||
8040 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
8041 | ;; | ||
8042 | esac | ||
7712 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for seccomp architecture" >&5 | 8043 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for seccomp architecture" >&5 |
7713 | $as_echo_n "checking for seccomp architecture... " >&6; } | 8044 | $as_echo_n "checking for seccomp architecture... " >&6; } |
7714 | seccomp_audit_arch= | 8045 | seccomp_audit_arch= |
@@ -7744,10 +8075,24 @@ $as_echo_n "checking for seccomp architecture... " >&6; } | |||
7744 | seccomp_audit_arch=AUDIT_ARCH_MIPSEL | 8075 | seccomp_audit_arch=AUDIT_ARCH_MIPSEL |
7745 | ;; | 8076 | ;; |
7746 | mips64-*) | 8077 | mips64-*) |
7747 | seccomp_audit_arch=AUDIT_ARCH_MIPS64 | 8078 | case "$mips_abi" in |
8079 | "n32") | ||
8080 | seccomp_audit_arch=AUDIT_ARCH_MIPS64N32 | ||
8081 | ;; | ||
8082 | "n64") | ||
8083 | seccomp_audit_arch=AUDIT_ARCH_MIPS64 | ||
8084 | ;; | ||
8085 | esac | ||
7748 | ;; | 8086 | ;; |
7749 | mips64el-*) | 8087 | mips64el-*) |
7750 | seccomp_audit_arch=AUDIT_ARCH_MIPSEL64 | 8088 | case "$mips_abi" in |
8089 | "n32") | ||
8090 | seccomp_audit_arch=AUDIT_ARCH_MIPSEL64N32 | ||
8091 | ;; | ||
8092 | "n64") | ||
8093 | seccomp_audit_arch=AUDIT_ARCH_MIPSEL64 | ||
8094 | ;; | ||
8095 | esac | ||
7751 | ;; | 8096 | ;; |
7752 | esac | 8097 | esac |
7753 | if test "x$seccomp_audit_arch" != "x" ; then | 8098 | if test "x$seccomp_audit_arch" != "x" ; then |
@@ -8102,6 +8447,9 @@ done | |||
8102 | conf_lastlog_location=/var/adm/lastlog | 8447 | conf_lastlog_location=/var/adm/lastlog |
8103 | $as_echo "#define USE_PIPES 1" >>confdefs.h | 8448 | $as_echo "#define USE_PIPES 1" >>confdefs.h |
8104 | 8449 | ||
8450 | |||
8451 | $as_echo "#define DISABLE_UTMPX 1" >>confdefs.h | ||
8452 | |||
8105 | ;; | 8453 | ;; |
8106 | *-ncr-sysv*) | 8454 | *-ncr-sysv*) |
8107 | LIBS="$LIBS -lc89" | 8455 | LIBS="$LIBS -lc89" |
@@ -8260,12 +8608,10 @@ $as_echo "#define UNIXWARE_LONG_PASSWORDS 1" >>confdefs.h | |||
8260 | $as_echo "#define BROKEN_TCGETATTR_ICANON 1" >>confdefs.h | 8608 | $as_echo "#define BROKEN_TCGETATTR_ICANON 1" >>confdefs.h |
8261 | 8609 | ||
8262 | TEST_SHELL=$SHELL # let configure find us a capable shell | 8610 | TEST_SHELL=$SHELL # let configure find us a capable shell |
8611 | check_for_libcrypt_later=1 | ||
8263 | case "$host" in | 8612 | case "$host" in |
8264 | *-*-sysv5SCO_SV*) # SCO OpenServer 6.x | 8613 | *-*-sysv5SCO_SV*) # SCO OpenServer 6.x |
8265 | maildir=/var/spool/mail | 8614 | maildir=/var/spool/mail |
8266 | |||
8267 | $as_echo "#define BROKEN_LIBIAF 1" >>confdefs.h | ||
8268 | |||
8269 | $as_echo "#define BROKEN_UPDWTMPX 1" >>confdefs.h | 8615 | $as_echo "#define BROKEN_UPDWTMPX 1" >>confdefs.h |
8270 | 8616 | ||
8271 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getluid in -lprot" >&5 | 8617 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getluid in -lprot" >&5 |
@@ -8318,17 +8664,12 @@ _ACEOF | |||
8318 | fi | 8664 | fi |
8319 | done | 8665 | done |
8320 | 8666 | ||
8321 | $as_echo "#define HAVE_SECUREWARE 1" >>confdefs.h | ||
8322 | |||
8323 | $as_echo "#define DISABLE_SHADOW 1" >>confdefs.h | ||
8324 | |||
8325 | 8667 | ||
8326 | fi | 8668 | fi |
8327 | 8669 | ||
8328 | ;; | 8670 | ;; |
8329 | *) $as_echo "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h | 8671 | *) $as_echo "#define LOCKED_PASSWD_STRING \"*LK*\"" >>confdefs.h |
8330 | 8672 | ||
8331 | check_for_libcrypt_later=1 | ||
8332 | ;; | 8673 | ;; |
8333 | esac | 8674 | esac |
8334 | ;; | 8675 | ;; |
@@ -8383,58 +8724,6 @@ done | |||
8383 | TEST_SHELL=$SHELL # let configure find us a capable shell | 8724 | TEST_SHELL=$SHELL # let configure find us a capable shell |
8384 | SKIP_DISABLE_LASTLOG_DEFINE=yes | 8725 | SKIP_DISABLE_LASTLOG_DEFINE=yes |
8385 | ;; | 8726 | ;; |
8386 | *-*-unicosmk*) | ||
8387 | |||
8388 | $as_echo "#define NO_SSH_LASTLOG 1" >>confdefs.h | ||
8389 | |||
8390 | $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h | ||
8391 | |||
8392 | $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h | ||
8393 | |||
8394 | $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h | ||
8395 | |||
8396 | $as_echo "#define USE_PIPES 1" >>confdefs.h | ||
8397 | |||
8398 | $as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h | ||
8399 | |||
8400 | LDFLAGS="$LDFLAGS" | ||
8401 | LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm" | ||
8402 | MANTYPE=cat | ||
8403 | ;; | ||
8404 | *-*-unicosmp*) | ||
8405 | $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h | ||
8406 | |||
8407 | $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h | ||
8408 | |||
8409 | $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h | ||
8410 | |||
8411 | $as_echo "#define WITH_ABBREV_NO_TTY 1" >>confdefs.h | ||
8412 | |||
8413 | $as_echo "#define USE_PIPES 1" >>confdefs.h | ||
8414 | |||
8415 | $as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h | ||
8416 | |||
8417 | LDFLAGS="$LDFLAGS" | ||
8418 | LIBS="$LIBS -lgen -lacid -ldb" | ||
8419 | MANTYPE=cat | ||
8420 | ;; | ||
8421 | *-*-unicos*) | ||
8422 | $as_echo "#define SETEUID_BREAKS_SETUID 1" >>confdefs.h | ||
8423 | |||
8424 | $as_echo "#define BROKEN_SETREUID 1" >>confdefs.h | ||
8425 | |||
8426 | $as_echo "#define BROKEN_SETREGID 1" >>confdefs.h | ||
8427 | |||
8428 | $as_echo "#define USE_PIPES 1" >>confdefs.h | ||
8429 | |||
8430 | $as_echo "#define DISABLE_FD_PASSING 1" >>confdefs.h | ||
8431 | |||
8432 | $as_echo "#define NO_SSH_LASTLOG 1" >>confdefs.h | ||
8433 | |||
8434 | LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal" | ||
8435 | LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm" | ||
8436 | MANTYPE=cat | ||
8437 | ;; | ||
8438 | *-dec-osf*) | 8727 | *-dec-osf*) |
8439 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Digital Unix SIA" >&5 | 8728 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Digital Unix SIA" >&5 |
8440 | $as_echo_n "checking for Digital Unix SIA... " >&6; } | 8729 | $as_echo_n "checking for Digital Unix SIA... " >&6; } |
@@ -9874,7 +10163,43 @@ fi | |||
9874 | 10163 | ||
9875 | 10164 | ||
9876 | # autoconf doesn't have AC_FUNC_CALLOC so fake it if malloc returns NULL; | 10165 | # autoconf doesn't have AC_FUNC_CALLOC so fake it if malloc returns NULL; |
9877 | if test "x$ac_cv_func_malloc_0_nonnull" != "xyes"; then | 10166 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking if calloc(0, N) returns non-null" >&5 |
10167 | $as_echo_n "checking if calloc(0, N) returns non-null... " >&6; } | ||
10168 | if test "$cross_compiling" = yes; then : | ||
10169 | { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming same as malloc" >&5 | ||
10170 | $as_echo "$as_me: WARNING: cross compiling: assuming same as malloc" >&2;} | ||
10171 | func_calloc_0_nonnull="$ac_cv_func_malloc_0_nonnull" | ||
10172 | |||
10173 | else | ||
10174 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||
10175 | /* end confdefs.h. */ | ||
10176 | #include <stdlib.h> | ||
10177 | int | ||
10178 | main () | ||
10179 | { | ||
10180 | void *p = calloc(0, 1); exit(p == NULL); | ||
10181 | |||
10182 | ; | ||
10183 | return 0; | ||
10184 | } | ||
10185 | _ACEOF | ||
10186 | if ac_fn_c_try_run "$LINENO"; then : | ||
10187 | func_calloc_0_nonnull=yes | ||
10188 | else | ||
10189 | func_calloc_0_nonnull=no | ||
10190 | fi | ||
10191 | rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ | ||
10192 | conftest.$ac_objext conftest.beam conftest.$ac_ext | ||
10193 | fi | ||
10194 | |||
10195 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $func_calloc_0_nonnull" >&5 | ||
10196 | $as_echo "$func_calloc_0_nonnull" >&6; } | ||
10197 | |||
10198 | if test "x$func_calloc_0_nonnull" == "xyes"; then | ||
10199 | |||
10200 | $as_echo "#define HAVE_CALLOC 1" >>confdefs.h | ||
10201 | |||
10202 | else | ||
9878 | 10203 | ||
9879 | $as_echo "#define HAVE_CALLOC 0" >>confdefs.h | 10204 | $as_echo "#define HAVE_CALLOC 0" >>confdefs.h |
9880 | 10205 | ||
@@ -10256,7 +10581,7 @@ else | |||
10256 | LDNSCONFIG="$ac_cv_path_LDNSCONFIG" | 10581 | LDNSCONFIG="$ac_cv_path_LDNSCONFIG" |
10257 | fi | 10582 | fi |
10258 | 10583 | ||
10259 | if test "x$PKGCONFIG" = "xno"; then | 10584 | if test "x$LDNSCONFIG" = "xno"; then |
10260 | CPPFLAGS="$CPPFLAGS -I${withval}/include" | 10585 | CPPFLAGS="$CPPFLAGS -I${withval}/include" |
10261 | LDFLAGS="$LDFLAGS -L${withval}/lib" | 10586 | LDFLAGS="$LDFLAGS -L${withval}/lib" |
10262 | LIBS="-lldns $LIBS" | 10587 | LIBS="-lldns $LIBS" |
@@ -10833,6 +11158,7 @@ for ac_func in \ | |||
10833 | bcrypt_pbkdf \ | 11158 | bcrypt_pbkdf \ |
10834 | bindresvport_sa \ | 11159 | bindresvport_sa \ |
10835 | blf_enc \ | 11160 | blf_enc \ |
11161 | bzero \ | ||
10836 | cap_rights_limit \ | 11162 | cap_rights_limit \ |
10837 | clock \ | 11163 | clock \ |
10838 | closefrom \ | 11164 | closefrom \ |
@@ -10843,6 +11169,7 @@ for ac_func in \ | |||
10843 | explicit_bzero \ | 11169 | explicit_bzero \ |
10844 | fchmod \ | 11170 | fchmod \ |
10845 | fchown \ | 11171 | fchown \ |
11172 | flock \ | ||
10846 | freeaddrinfo \ | 11173 | freeaddrinfo \ |
10847 | freezero \ | 11174 | freezero \ |
10848 | fstatfs \ | 11175 | fstatfs \ |
@@ -10857,9 +11184,9 @@ for ac_func in \ | |||
10857 | getpeereid \ | 11184 | getpeereid \ |
10858 | getpeerucred \ | 11185 | getpeerucred \ |
10859 | getpgid \ | 11186 | getpgid \ |
10860 | getpgrp \ | ||
10861 | _getpty \ | 11187 | _getpty \ |
10862 | getrlimit \ | 11188 | getrlimit \ |
11189 | getsid \ | ||
10863 | getttyent \ | 11190 | getttyent \ |
10864 | glob \ | 11191 | glob \ |
10865 | group_from_gid \ | 11192 | group_from_gid \ |
@@ -10881,6 +11208,7 @@ for ac_func in \ | |||
10881 | poll \ | 11208 | poll \ |
10882 | prctl \ | 11209 | prctl \ |
10883 | pstat \ | 11210 | pstat \ |
11211 | raise \ | ||
10884 | readpassphrase \ | 11212 | readpassphrase \ |
10885 | reallocarray \ | 11213 | reallocarray \ |
10886 | recvmsg \ | 11214 | recvmsg \ |
@@ -10915,6 +11243,7 @@ for ac_func in \ | |||
10915 | strlcat \ | 11243 | strlcat \ |
10916 | strlcpy \ | 11244 | strlcpy \ |
10917 | strmode \ | 11245 | strmode \ |
11246 | strndup \ | ||
10918 | strnlen \ | 11247 | strnlen \ |
10919 | strnvis \ | 11248 | strnvis \ |
10920 | strptime \ | 11249 | strptime \ |
@@ -10949,6 +11278,18 @@ fi | |||
10949 | done | 11278 | done |
10950 | 11279 | ||
10951 | 11280 | ||
11281 | ac_fn_c_check_decl "$LINENO" "bzero" "ac_cv_have_decl_bzero" "$ac_includes_default" | ||
11282 | if test "x$ac_cv_have_decl_bzero" = xyes; then : | ||
11283 | ac_have_decl=1 | ||
11284 | else | ||
11285 | ac_have_decl=0 | ||
11286 | fi | ||
11287 | |||
11288 | cat >>confdefs.h <<_ACEOF | ||
11289 | #define HAVE_DECL_BZERO $ac_have_decl | ||
11290 | _ACEOF | ||
11291 | |||
11292 | |||
10952 | for ac_func in mblen mbtowc nl_langinfo wcwidth | 11293 | for ac_func in mblen mbtowc nl_langinfo wcwidth |
10953 | do : | 11294 | do : |
10954 | as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` | 11295 | as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` |
@@ -11090,9 +11431,15 @@ $as_echo "$ac_cv_search_dlopen" >&6; } | |||
11090 | ac_res=$ac_cv_search_dlopen | 11431 | ac_res=$ac_cv_search_dlopen |
11091 | if test "$ac_res" != no; then : | 11432 | if test "$ac_res" != no; then : |
11092 | test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" | 11433 | test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" |
11434 | ac_fn_c_check_decl "$LINENO" "RTLD_NOW" "ac_cv_have_decl_RTLD_NOW" "#include <dlfcn.h> | ||
11435 | |||
11436 | " | ||
11437 | if test "x$ac_cv_have_decl_RTLD_NOW" = xyes; then : | ||
11093 | 11438 | ||
11094 | $as_echo "#define ENABLE_PKCS11 /**/" >>confdefs.h | 11439 | $as_echo "#define ENABLE_PKCS11 /**/" >>confdefs.h |
11095 | 11440 | ||
11441 | fi | ||
11442 | |||
11096 | 11443 | ||
11097 | fi | 11444 | fi |
11098 | 11445 | ||
@@ -11258,21 +11605,6 @@ $as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h | |||
11258 | fi | 11605 | fi |
11259 | 11606 | ||
11260 | 11607 | ||
11261 | ac_fn_c_check_decl "$LINENO" "getrusage" "ac_cv_have_decl_getrusage" "$ac_includes_default" | ||
11262 | if test "x$ac_cv_have_decl_getrusage" = xyes; then : | ||
11263 | for ac_func in getrusage | ||
11264 | do : | ||
11265 | ac_fn_c_check_func "$LINENO" "getrusage" "ac_cv_func_getrusage" | ||
11266 | if test "x$ac_cv_func_getrusage" = xyes; then : | ||
11267 | cat >>confdefs.h <<_ACEOF | ||
11268 | #define HAVE_GETRUSAGE 1 | ||
11269 | _ACEOF | ||
11270 | |||
11271 | fi | ||
11272 | done | ||
11273 | |||
11274 | fi | ||
11275 | |||
11276 | ac_fn_c_check_decl "$LINENO" "strsep" "ac_cv_have_decl_strsep" " | 11608 | ac_fn_c_check_decl "$LINENO" "strsep" "ac_cv_have_decl_strsep" " |
11277 | #ifdef HAVE_STRING_H | 11609 | #ifdef HAVE_STRING_H |
11278 | # include <string.h> | 11610 | # include <string.h> |
@@ -11365,6 +11697,21 @@ cat >>confdefs.h <<_ACEOF | |||
11365 | _ACEOF | 11697 | _ACEOF |
11366 | 11698 | ||
11367 | 11699 | ||
11700 | ac_fn_c_check_decl "$LINENO" "readv" "ac_cv_have_decl_readv" " | ||
11701 | #include <sys/types.h> | ||
11702 | #include <sys/uio.h> | ||
11703 | #include <unistd.h> | ||
11704 | |||
11705 | " | ||
11706 | if test "x$ac_cv_have_decl_readv" = xyes; then : | ||
11707 | ac_have_decl=1 | ||
11708 | else | ||
11709 | ac_have_decl=0 | ||
11710 | fi | ||
11711 | |||
11712 | cat >>confdefs.h <<_ACEOF | ||
11713 | #define HAVE_DECL_READV $ac_have_decl | ||
11714 | _ACEOF | ||
11368 | ac_fn_c_check_decl "$LINENO" "writev" "ac_cv_have_decl_writev" " | 11715 | ac_fn_c_check_decl "$LINENO" "writev" "ac_cv_have_decl_writev" " |
11369 | #include <sys/types.h> | 11716 | #include <sys/types.h> |
11370 | #include <sys/uio.h> | 11717 | #include <sys/uio.h> |
@@ -11655,6 +12002,39 @@ fi | |||
11655 | done | 12002 | done |
11656 | 12003 | ||
11657 | 12004 | ||
12005 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fflush(NULL)" >&5 | ||
12006 | $as_echo_n "checking for working fflush(NULL)... " >&6; } | ||
12007 | if test "$cross_compiling" = yes; then : | ||
12008 | { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cross compiling: assuming working" >&5 | ||
12009 | $as_echo "$as_me: WARNING: cross compiling: assuming working" >&2;} | ||
12010 | |||
12011 | else | ||
12012 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||
12013 | /* end confdefs.h. */ | ||
12014 | #include <stdio.h> | ||
12015 | int | ||
12016 | main () | ||
12017 | { | ||
12018 | fflush(NULL); exit(0); | ||
12019 | ; | ||
12020 | return 0; | ||
12021 | } | ||
12022 | _ACEOF | ||
12023 | if ac_fn_c_try_run "$LINENO"; then : | ||
12024 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 | ||
12025 | $as_echo "yes" >&6; } | ||
12026 | else | ||
12027 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 | ||
12028 | $as_echo "no" >&6; } | ||
12029 | |||
12030 | $as_echo "#define FFLUSH_NULL_BUG 1" >>confdefs.h | ||
12031 | |||
12032 | fi | ||
12033 | rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ | ||
12034 | conftest.$ac_objext conftest.beam conftest.$ac_ext | ||
12035 | fi | ||
12036 | |||
12037 | |||
11658 | for ac_func in gettimeofday time | 12038 | for ac_func in gettimeofday time |
11659 | do : | 12039 | do : |
11660 | as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` | 12040 | as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` |
@@ -12396,38 +12776,45 @@ fi | |||
12396 | 12776 | ||
12397 | fi | 12777 | fi |
12398 | 12778 | ||
12399 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5 | 12779 | for ac_func in getpgrp |
12400 | $as_echo_n "checking whether getpgrp requires zero arguments... " >&6; } | 12780 | do : |
12401 | if ${ac_cv_func_getpgrp_void+:} false; then : | 12781 | ac_fn_c_check_func "$LINENO" "getpgrp" "ac_cv_func_getpgrp" |
12402 | $as_echo_n "(cached) " >&6 | 12782 | if test "x$ac_cv_func_getpgrp" = xyes; then : |
12403 | else | 12783 | cat >>confdefs.h <<_ACEOF |
12404 | # Use it with a single arg. | 12784 | #define HAVE_GETPGRP 1 |
12405 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | 12785 | _ACEOF |
12786 | |||
12787 | { $as_echo "$as_me:${as_lineno-$LINENO}: checking if getpgrp accepts zero args" >&5 | ||
12788 | $as_echo_n "checking if getpgrp accepts zero args... " >&6; } | ||
12789 | cat confdefs.h - <<_ACEOF >conftest.$ac_ext | ||
12406 | /* end confdefs.h. */ | 12790 | /* end confdefs.h. */ |
12407 | $ac_includes_default | 12791 | $ac_includes_default |
12408 | int | 12792 | int |
12409 | main () | 12793 | main () |
12410 | { | 12794 | { |
12411 | getpgrp (0); | 12795 | getpgrp(); |
12412 | ; | 12796 | ; |
12413 | return 0; | 12797 | return 0; |
12414 | } | 12798 | } |
12415 | _ACEOF | 12799 | _ACEOF |
12416 | if ac_fn_c_try_compile "$LINENO"; then : | 12800 | if ac_fn_c_try_compile "$LINENO"; then : |
12417 | ac_cv_func_getpgrp_void=no | 12801 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 |
12802 | $as_echo "yes" >&6; } | ||
12803 | |||
12804 | $as_echo "#define GETPGRP_VOID 1" >>confdefs.h | ||
12805 | |||
12418 | else | 12806 | else |
12419 | ac_cv_func_getpgrp_void=yes | 12807 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 |
12420 | fi | 12808 | $as_echo "no" >&6; } |
12421 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
12422 | 12809 | ||
12423 | fi | 12810 | $as_echo "#define GETPGRP_VOID 0" >>confdefs.h |
12424 | { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5 | ||
12425 | $as_echo "$ac_cv_func_getpgrp_void" >&6; } | ||
12426 | if test $ac_cv_func_getpgrp_void = yes; then | ||
12427 | 12811 | ||
12428 | $as_echo "#define GETPGRP_VOID 1" >>confdefs.h | ||
12429 | 12812 | ||
12430 | fi | 12813 | fi |
12814 | rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext | ||
12815 | |||
12816 | fi | ||
12817 | done | ||
12431 | 12818 | ||
12432 | 12819 | ||
12433 | # Search for OpenSSL | 12820 | # Search for OpenSSL |
@@ -15193,6 +15580,33 @@ _ACEOF | |||
15193 | fi | 15580 | fi |
15194 | 15581 | ||
15195 | 15582 | ||
15583 | ac_fn_c_check_member "$LINENO" "struct statfs" "f_flags" "ac_cv_member_struct_statfs_f_flags" " | ||
15584 | #include <sys/types.h> | ||
15585 | #ifdef HAVE_SYS_BITYPES_H | ||
15586 | #include <sys/bitypes.h> | ||
15587 | #endif | ||
15588 | #ifdef HAVE_SYS_STATFS_H | ||
15589 | #include <sys/statfs.h> | ||
15590 | #endif | ||
15591 | #ifdef HAVE_SYS_STATVFS_H | ||
15592 | #include <sys/statvfs.h> | ||
15593 | #endif | ||
15594 | #ifdef HAVE_SYS_VFS_H | ||
15595 | #include <sys/vfs.h> | ||
15596 | #endif | ||
15597 | |||
15598 | " | ||
15599 | if test "x$ac_cv_member_struct_statfs_f_flags" = xyes; then : | ||
15600 | |||
15601 | cat >>confdefs.h <<_ACEOF | ||
15602 | #define HAVE_STRUCT_STATFS_F_FLAGS 1 | ||
15603 | _ACEOF | ||
15604 | |||
15605 | |||
15606 | fi | ||
15607 | |||
15608 | |||
15609 | |||
15196 | ac_fn_c_check_type "$LINENO" "in_addr_t" "ac_cv_type_in_addr_t" "#include <sys/types.h> | 15610 | ac_fn_c_check_type "$LINENO" "in_addr_t" "ac_cv_type_in_addr_t" "#include <sys/types.h> |
15197 | #include <netinet/in.h> | 15611 | #include <netinet/in.h> |
15198 | " | 15612 | " |
@@ -19272,6 +19686,8 @@ TEST_MALLOC_OPTIONS=$TEST_MALLOC_OPTIONS | |||
19272 | 19686 | ||
19273 | UNSUPPORTED_ALGORITHMS=$unsupported_algorithms | 19687 | UNSUPPORTED_ALGORITHMS=$unsupported_algorithms |
19274 | 19688 | ||
19689 | DEPEND=$(cat $srcdir/.depend) | ||
19690 | |||
19275 | 19691 | ||
19276 | CFLAGS="${CFLAGS} ${CFLAGS_AFTER}" | 19692 | CFLAGS="${CFLAGS} ${CFLAGS_AFTER}" |
19277 | LDFLAGS="${LDFLAGS} ${LDFLAGS_AFTER}" | 19693 | LDFLAGS="${LDFLAGS} ${LDFLAGS_AFTER}" |
@@ -19859,6 +20275,7 @@ gives unlimited permission to copy, distribute and modify it." | |||
19859 | ac_pwd='$ac_pwd' | 20275 | ac_pwd='$ac_pwd' |
19860 | srcdir='$srcdir' | 20276 | srcdir='$srcdir' |
19861 | INSTALL='$INSTALL' | 20277 | INSTALL='$INSTALL' |
20278 | MKDIR_P='$MKDIR_P' | ||
19862 | AWK='$AWK' | 20279 | AWK='$AWK' |
19863 | test -n "\$AWK" || AWK=awk | 20280 | test -n "\$AWK" || AWK=awk |
19864 | _ACEOF | 20281 | _ACEOF |
@@ -20426,6 +20843,11 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix | |||
20426 | [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; | 20843 | [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; |
20427 | *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; | 20844 | *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; |
20428 | esac | 20845 | esac |
20846 | ac_MKDIR_P=$MKDIR_P | ||
20847 | case $MKDIR_P in | ||
20848 | [\\/$]* | ?:[\\/]* ) ;; | ||
20849 | */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; | ||
20850 | esac | ||
20429 | _ACEOF | 20851 | _ACEOF |
20430 | 20852 | ||
20431 | cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 | 20853 | cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 |
@@ -20480,6 +20902,7 @@ s&@builddir@&$ac_builddir&;t t | |||
20480 | s&@abs_builddir@&$ac_abs_builddir&;t t | 20902 | s&@abs_builddir@&$ac_abs_builddir&;t t |
20481 | s&@abs_top_builddir@&$ac_abs_top_builddir&;t t | 20903 | s&@abs_top_builddir@&$ac_abs_top_builddir&;t t |
20482 | s&@INSTALL@&$ac_INSTALL&;t t | 20904 | s&@INSTALL@&$ac_INSTALL&;t t |
20905 | s&@MKDIR_P@&$ac_MKDIR_P&;t t | ||
20483 | $ac_datarootdir_hack | 20906 | $ac_datarootdir_hack |
20484 | " | 20907 | " |
20485 | eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ | 20908 | eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ |
@@ -20607,7 +21030,6 @@ echo " PAM support: $PAM_MSG" | |||
20607 | echo " OSF SIA support: $SIA_MSG" | 21030 | echo " OSF SIA support: $SIA_MSG" |
20608 | echo " KerberosV support: $KRB5_MSG" | 21031 | echo " KerberosV support: $KRB5_MSG" |
20609 | echo " SELinux support: $SELINUX_MSG" | 21032 | echo " SELinux support: $SELINUX_MSG" |
20610 | echo " Smartcard support: $SCARD_MSG" | ||
20611 | echo " S/KEY support: $SKEY_MSG" | 21033 | echo " S/KEY support: $SKEY_MSG" |
20612 | echo " MD5 password support: $MD5_MSG" | 21034 | echo " MD5 password support: $MD5_MSG" |
20613 | echo " libedit support: $LIBEDIT_MSG" | 21035 | echo " libedit support: $LIBEDIT_MSG" |
diff --git a/configure.ac b/configure.ac index 483a9038c..eac143b4d 100644 --- a/configure.ac +++ b/configure.ac | |||
@@ -1,4 +1,3 @@ | |||
1 | # $Id: configure.ac,v 1.583 2014/08/26 20:32:01 djm Exp $ | ||
2 | # | 1 | # |
3 | # Copyright (c) 1999-2004 Damien Miller | 2 | # Copyright (c) 1999-2004 Damien Miller |
4 | # | 3 | # |
@@ -30,12 +29,11 @@ AC_PROG_CPP | |||
30 | AC_PROG_RANLIB | 29 | AC_PROG_RANLIB |
31 | AC_PROG_INSTALL | 30 | AC_PROG_INSTALL |
32 | AC_PROG_EGREP | 31 | AC_PROG_EGREP |
32 | AC_PROG_MKDIR_P | ||
33 | AC_CHECK_TOOLS([AR], [ar]) | 33 | AC_CHECK_TOOLS([AR], [ar]) |
34 | AC_PATH_PROG([CAT], [cat]) | 34 | AC_PATH_PROG([CAT], [cat]) |
35 | AC_PATH_PROG([KILL], [kill]) | 35 | AC_PATH_PROG([KILL], [kill]) |
36 | AC_PATH_PROGS([PERL], [perl5 perl]) | ||
37 | AC_PATH_PROG([SED], [sed]) | 36 | AC_PATH_PROG([SED], [sed]) |
38 | AC_SUBST([PERL]) | ||
39 | AC_PATH_PROG([ENT], [ent]) | 37 | AC_PATH_PROG([ENT], [ent]) |
40 | AC_SUBST([ENT]) | 38 | AC_SUBST([ENT]) |
41 | AC_PATH_PROG([TEST_MINUS_S_SH], [bash]) | 39 | AC_PATH_PROG([TEST_MINUS_S_SH], [bash]) |
@@ -164,6 +162,10 @@ if test "$GCC" = "yes" || test "$GCC" = "egcs"; then | |||
164 | OSSH_CHECK_CFLAG_COMPILE([-Wunused-result], [-Wno-unused-result]) | 162 | OSSH_CHECK_CFLAG_COMPILE([-Wunused-result], [-Wno-unused-result]) |
165 | OSSH_CHECK_CFLAG_COMPILE([-fno-strict-aliasing]) | 163 | OSSH_CHECK_CFLAG_COMPILE([-fno-strict-aliasing]) |
166 | if test "x$use_toolchain_hardening" = "x1"; then | 164 | if test "x$use_toolchain_hardening" = "x1"; then |
165 | OSSH_CHECK_CFLAG_COMPILE([-mfunction-return=thunk]) # gcc | ||
166 | OSSH_CHECK_CFLAG_COMPILE([-mindirect-branch=thunk]) # gcc | ||
167 | OSSH_CHECK_CFLAG_COMPILE([-mretpoline]) # clang | ||
168 | OSSH_CHECK_LDFLAG_LINK([-Wl,-z,retpolineplt]) | ||
167 | OSSH_CHECK_CFLAG_COMPILE([-D_FORTIFY_SOURCE=2]) | 169 | OSSH_CHECK_CFLAG_COMPILE([-D_FORTIFY_SOURCE=2]) |
168 | OSSH_CHECK_LDFLAG_LINK([-Wl,-z,relro]) | 170 | OSSH_CHECK_LDFLAG_LINK([-Wl,-z,relro]) |
169 | OSSH_CHECK_LDFLAG_LINK([-Wl,-z,now]) | 171 | OSSH_CHECK_LDFLAG_LINK([-Wl,-z,now]) |
@@ -263,6 +265,18 @@ __attribute__((__unused__)) static void foo(void){return;}]], | |||
263 | [compiler does not accept __attribute__ on return types]) ] | 265 | [compiler does not accept __attribute__ on return types]) ] |
264 | ) | 266 | ) |
265 | 267 | ||
268 | AC_MSG_CHECKING([if compiler allows __attribute__ prototype args]) | ||
269 | AC_COMPILE_IFELSE( | ||
270 | [AC_LANG_PROGRAM([[ | ||
271 | #include <stdlib.h> | ||
272 | typedef void foo(const char *, ...) __attribute__((format(printf, 1, 2)));]], | ||
273 | [[ exit(0); ]])], | ||
274 | [ AC_MSG_RESULT([yes]) ], | ||
275 | [ AC_MSG_RESULT([no]) | ||
276 | AC_DEFINE(NO_ATTRIBUTE_ON_PROTOTYPE_ARGS, 1, | ||
277 | [compiler does not accept __attribute__ on protoype args]) ] | ||
278 | ) | ||
279 | |||
266 | if test "x$no_attrib_nonnull" != "x1" ; then | 280 | if test "x$no_attrib_nonnull" != "x1" ; then |
267 | AC_DEFINE([HAVE_ATTRIBUTE__NONNULL__], [1], [Have attribute nonnull]) | 281 | AC_DEFINE([HAVE_ATTRIBUTE__NONNULL__], [1], [Have attribute nonnull]) |
268 | fi | 282 | fi |
@@ -363,6 +377,7 @@ AC_CHECK_HEADERS([ \ | |||
363 | glob.h \ | 377 | glob.h \ |
364 | ia.h \ | 378 | ia.h \ |
365 | iaf.h \ | 379 | iaf.h \ |
380 | ifaddrs.h \ | ||
366 | inttypes.h \ | 381 | inttypes.h \ |
367 | langinfo.h \ | 382 | langinfo.h \ |
368 | limits.h \ | 383 | limits.h \ |
@@ -386,12 +401,13 @@ AC_CHECK_HEADERS([ \ | |||
386 | stdint.h \ | 401 | stdint.h \ |
387 | string.h \ | 402 | string.h \ |
388 | strings.h \ | 403 | strings.h \ |
389 | sys/audit.h \ | ||
390 | sys/bitypes.h \ | 404 | sys/bitypes.h \ |
391 | sys/bsdtty.h \ | 405 | sys/bsdtty.h \ |
392 | sys/cdefs.h \ | 406 | sys/cdefs.h \ |
393 | sys/dir.h \ | 407 | sys/dir.h \ |
408 | sys/file.h \ | ||
394 | sys/mman.h \ | 409 | sys/mman.h \ |
410 | sys/label.h \ | ||
395 | sys/ndir.h \ | 411 | sys/ndir.h \ |
396 | sys/poll.h \ | 412 | sys/poll.h \ |
397 | sys/prctl.h \ | 413 | sys/prctl.h \ |
@@ -406,6 +422,7 @@ AC_CHECK_HEADERS([ \ | |||
406 | sys/sysmacros.h \ | 422 | sys/sysmacros.h \ |
407 | sys/time.h \ | 423 | sys/time.h \ |
408 | sys/timers.h \ | 424 | sys/timers.h \ |
425 | sys/vfs.h \ | ||
409 | time.h \ | 426 | time.h \ |
410 | tmpdir.h \ | 427 | tmpdir.h \ |
411 | ttyent.h \ | 428 | ttyent.h \ |
@@ -420,6 +437,20 @@ AC_CHECK_HEADERS([ \ | |||
420 | wchar.h \ | 437 | wchar.h \ |
421 | ]) | 438 | ]) |
422 | 439 | ||
440 | # On some platforms (eg SunOS4) sys/audit.h requires sys/[time|types|label.h] | ||
441 | # to be included first. | ||
442 | AC_CHECK_HEADERS([sys/audit.h], [], [], [ | ||
443 | #ifdef HAVE_SYS_TIME_H | ||
444 | # include <sys/time.h> | ||
445 | #endif | ||
446 | #ifdef HAVE_SYS_TYPES_H | ||
447 | # include <sys/types.h> | ||
448 | #endif | ||
449 | #ifdef HAVE_SYS_LABEL_H | ||
450 | # include <sys/label.h> | ||
451 | #endif | ||
452 | ]) | ||
453 | |||
423 | # sys/capsicum.h requires sys/types.h | 454 | # sys/capsicum.h requires sys/types.h |
424 | AC_CHECK_HEADERS([sys/capsicum.h], [], [], [ | 455 | AC_CHECK_HEADERS([sys/capsicum.h], [], [], [ |
425 | #ifdef HAVE_SYS_TYPES_H | 456 | #ifdef HAVE_SYS_TYPES_H |
@@ -427,6 +458,16 @@ AC_CHECK_HEADERS([sys/capsicum.h], [], [], [ | |||
427 | #endif | 458 | #endif |
428 | ]) | 459 | ]) |
429 | 460 | ||
461 | # net/route.h requires sys/socket.h and sys/types.h. | ||
462 | # sys/sysctl.h also requires sys/param.h | ||
463 | AC_CHECK_HEADERS([net/route.h sys/sysctl.h], [], [], [ | ||
464 | #ifdef HAVE_SYS_TYPES_H | ||
465 | # include <sys/types.h> | ||
466 | #endif | ||
467 | #include <sys/param.h> | ||
468 | #include <sys/socket.h> | ||
469 | ]) | ||
470 | |||
430 | # lastlog.h requires sys/time.h to be included first on Solaris | 471 | # lastlog.h requires sys/time.h to be included first on Solaris |
431 | AC_CHECK_HEADERS([lastlog.h], [], [], [ | 472 | AC_CHECK_HEADERS([lastlog.h], [], [], [ |
432 | #ifdef HAVE_SYS_TIME_H | 473 | #ifdef HAVE_SYS_TIME_H |
@@ -562,6 +603,8 @@ case "$host" in | |||
562 | [AIX 5.2 and 5.3 (and presumably newer) require this]) | 603 | [AIX 5.2 and 5.3 (and presumably newer) require this]) |
563 | AC_DEFINE([PTY_ZEROREAD], [1], [read(1) can return 0 for a non-closed fd]) | 604 | AC_DEFINE([PTY_ZEROREAD], [1], [read(1) can return 0 for a non-closed fd]) |
564 | AC_DEFINE([PLATFORM_SYS_DIR_UID], 2, [System dirs owned by bin (uid 2)]) | 605 | AC_DEFINE([PLATFORM_SYS_DIR_UID], 2, [System dirs owned by bin (uid 2)]) |
606 | AC_DEFINE([BROKEN_STRNDUP], 1, [strndup broken, see APAR IY61211]) | ||
607 | AC_DEFINE([BROKEN_STRNLEN], 1, [strnlen broken, see APAR IY62551]) | ||
565 | ;; | 608 | ;; |
566 | *-*-android*) | 609 | *-*-android*) |
567 | AC_DEFINE([DISABLE_UTMP], [1], [Define if you don't want to use utmp]) | 610 | AC_DEFINE([DISABLE_UTMP], [1], [Define if you don't want to use utmp]) |
@@ -793,8 +836,36 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) | |||
793 | AC_DEFINE([SSH_TUN_PREPEND_AF], [1], | 836 | AC_DEFINE([SSH_TUN_PREPEND_AF], [1], |
794 | [Prepend the address family to IP tunnel traffic]) | 837 | [Prepend the address family to IP tunnel traffic]) |
795 | fi | 838 | fi |
839 | AC_CHECK_HEADER([linux/if.h], | ||
840 | AC_DEFINE([SYS_RDOMAIN_LINUX], [1], | ||
841 | [Support routing domains using Linux VRF]), [], [ | ||
842 | #ifdef HAVE_SYS_TYPES_H | ||
843 | # include <sys/types.H> | ||
844 | #endif | ||
845 | ]) | ||
796 | AC_CHECK_HEADERS([linux/seccomp.h linux/filter.h linux/audit.h], [], | 846 | AC_CHECK_HEADERS([linux/seccomp.h linux/filter.h linux/audit.h], [], |
797 | [], [#include <linux/types.h>]) | 847 | [], [#include <linux/types.h>]) |
848 | # Obtain MIPS ABI | ||
849 | case "$host" in | ||
850 | mips*) | ||
851 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ | ||
852 | #if _MIPS_SIM != _ABIO32 | ||
853 | #error | ||
854 | #endif | ||
855 | ]])],[mips_abi="o32"],[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ | ||
856 | #if _MIPS_SIM != _ABIN32 | ||
857 | #error | ||
858 | #endif | ||
859 | ]])],[mips_abi="n32"],[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ | ||
860 | #if _MIPS_SIM != _ABI64 | ||
861 | #error | ||
862 | #endif | ||
863 | ]])],[mips_abi="n64"],[AC_MSG_ERROR([unknown MIPS ABI]) | ||
864 | ]) | ||
865 | ]) | ||
866 | ]) | ||
867 | ;; | ||
868 | esac | ||
798 | AC_MSG_CHECKING([for seccomp architecture]) | 869 | AC_MSG_CHECKING([for seccomp architecture]) |
799 | seccomp_audit_arch= | 870 | seccomp_audit_arch= |
800 | case "$host" in | 871 | case "$host" in |
@@ -829,10 +900,24 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) | |||
829 | seccomp_audit_arch=AUDIT_ARCH_MIPSEL | 900 | seccomp_audit_arch=AUDIT_ARCH_MIPSEL |
830 | ;; | 901 | ;; |
831 | mips64-*) | 902 | mips64-*) |
832 | seccomp_audit_arch=AUDIT_ARCH_MIPS64 | 903 | case "$mips_abi" in |
904 | "n32") | ||
905 | seccomp_audit_arch=AUDIT_ARCH_MIPS64N32 | ||
906 | ;; | ||
907 | "n64") | ||
908 | seccomp_audit_arch=AUDIT_ARCH_MIPS64 | ||
909 | ;; | ||
910 | esac | ||
833 | ;; | 911 | ;; |
834 | mips64el-*) | 912 | mips64el-*) |
835 | seccomp_audit_arch=AUDIT_ARCH_MIPSEL64 | 913 | case "$mips_abi" in |
914 | "n32") | ||
915 | seccomp_audit_arch=AUDIT_ARCH_MIPSEL64N32 | ||
916 | ;; | ||
917 | "n64") | ||
918 | seccomp_audit_arch=AUDIT_ARCH_MIPSEL64 | ||
919 | ;; | ||
920 | esac | ||
836 | ;; | 921 | ;; |
837 | esac | 922 | esac |
838 | if test "x$seccomp_audit_arch" != "x" ; then | 923 | if test "x$seccomp_audit_arch" != "x" ; then |
@@ -983,6 +1068,7 @@ mips-sony-bsd|mips-sony-newsos4) | |||
983 | conf_wtmp_location=/var/adm/wtmp | 1068 | conf_wtmp_location=/var/adm/wtmp |
984 | conf_lastlog_location=/var/adm/lastlog | 1069 | conf_lastlog_location=/var/adm/lastlog |
985 | AC_DEFINE([USE_PIPES]) | 1070 | AC_DEFINE([USE_PIPES]) |
1071 | AC_DEFINE([DISABLE_UTMPX], [1], [no utmpx]) | ||
986 | ;; | 1072 | ;; |
987 | *-ncr-sysv*) | 1073 | *-ncr-sysv*) |
988 | LIBS="$LIBS -lc89" | 1074 | LIBS="$LIBS -lc89" |
@@ -1031,20 +1117,16 @@ mips-sony-bsd|mips-sony-newsos4) | |||
1031 | AC_DEFINE([PASSWD_NEEDS_USERNAME]) | 1117 | AC_DEFINE([PASSWD_NEEDS_USERNAME]) |
1032 | AC_DEFINE([BROKEN_TCGETATTR_ICANON]) | 1118 | AC_DEFINE([BROKEN_TCGETATTR_ICANON]) |
1033 | TEST_SHELL=$SHELL # let configure find us a capable shell | 1119 | TEST_SHELL=$SHELL # let configure find us a capable shell |
1120 | check_for_libcrypt_later=1 | ||
1034 | case "$host" in | 1121 | case "$host" in |
1035 | *-*-sysv5SCO_SV*) # SCO OpenServer 6.x | 1122 | *-*-sysv5SCO_SV*) # SCO OpenServer 6.x |
1036 | maildir=/var/spool/mail | 1123 | maildir=/var/spool/mail |
1037 | AC_DEFINE([BROKEN_LIBIAF], [1], | ||
1038 | [ia_uinfo routines not supported by OS yet]) | ||
1039 | AC_DEFINE([BROKEN_UPDWTMPX]) | 1124 | AC_DEFINE([BROKEN_UPDWTMPX]) |
1040 | AC_CHECK_LIB([prot], [getluid], [ LIBS="$LIBS -lprot" | 1125 | AC_CHECK_LIB([prot], [getluid], [ LIBS="$LIBS -lprot" |
1041 | AC_CHECK_FUNCS([getluid setluid], , , [-lprot]) | 1126 | AC_CHECK_FUNCS([getluid setluid], , , [-lprot]) |
1042 | AC_DEFINE([HAVE_SECUREWARE]) | ||
1043 | AC_DEFINE([DISABLE_SHADOW]) | ||
1044 | ], , ) | 1127 | ], , ) |
1045 | ;; | 1128 | ;; |
1046 | *) AC_DEFINE([LOCKED_PASSWD_STRING], ["*LK*"]) | 1129 | *) AC_DEFINE([LOCKED_PASSWD_STRING], ["*LK*"]) |
1047 | check_for_libcrypt_later=1 | ||
1048 | ;; | 1130 | ;; |
1049 | esac | 1131 | esac |
1050 | ;; | 1132 | ;; |
@@ -1077,40 +1159,6 @@ mips-sony-bsd|mips-sony-newsos4) | |||
1077 | TEST_SHELL=$SHELL # let configure find us a capable shell | 1159 | TEST_SHELL=$SHELL # let configure find us a capable shell |
1078 | SKIP_DISABLE_LASTLOG_DEFINE=yes | 1160 | SKIP_DISABLE_LASTLOG_DEFINE=yes |
1079 | ;; | 1161 | ;; |
1080 | *-*-unicosmk*) | ||
1081 | AC_DEFINE([NO_SSH_LASTLOG], [1], | ||
1082 | [Define if you don't want to use lastlog in session.c]) | ||
1083 | AC_DEFINE([SETEUID_BREAKS_SETUID]) | ||
1084 | AC_DEFINE([BROKEN_SETREUID]) | ||
1085 | AC_DEFINE([BROKEN_SETREGID]) | ||
1086 | AC_DEFINE([USE_PIPES]) | ||
1087 | AC_DEFINE([DISABLE_FD_PASSING]) | ||
1088 | LDFLAGS="$LDFLAGS" | ||
1089 | LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm" | ||
1090 | MANTYPE=cat | ||
1091 | ;; | ||
1092 | *-*-unicosmp*) | ||
1093 | AC_DEFINE([SETEUID_BREAKS_SETUID]) | ||
1094 | AC_DEFINE([BROKEN_SETREUID]) | ||
1095 | AC_DEFINE([BROKEN_SETREGID]) | ||
1096 | AC_DEFINE([WITH_ABBREV_NO_TTY]) | ||
1097 | AC_DEFINE([USE_PIPES]) | ||
1098 | AC_DEFINE([DISABLE_FD_PASSING]) | ||
1099 | LDFLAGS="$LDFLAGS" | ||
1100 | LIBS="$LIBS -lgen -lacid -ldb" | ||
1101 | MANTYPE=cat | ||
1102 | ;; | ||
1103 | *-*-unicos*) | ||
1104 | AC_DEFINE([SETEUID_BREAKS_SETUID]) | ||
1105 | AC_DEFINE([BROKEN_SETREUID]) | ||
1106 | AC_DEFINE([BROKEN_SETREGID]) | ||
1107 | AC_DEFINE([USE_PIPES]) | ||
1108 | AC_DEFINE([DISABLE_FD_PASSING]) | ||
1109 | AC_DEFINE([NO_SSH_LASTLOG]) | ||
1110 | LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal" | ||
1111 | LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm" | ||
1112 | MANTYPE=cat | ||
1113 | ;; | ||
1114 | *-dec-osf*) | 1162 | *-dec-osf*) |
1115 | AC_MSG_CHECKING([for Digital Unix SIA]) | 1163 | AC_MSG_CHECKING([for Digital Unix SIA]) |
1116 | no_osfsia="" | 1164 | no_osfsia="" |
@@ -1361,8 +1409,23 @@ AC_FUNC_STRFTIME | |||
1361 | AC_FUNC_MALLOC | 1409 | AC_FUNC_MALLOC |
1362 | AC_FUNC_REALLOC | 1410 | AC_FUNC_REALLOC |
1363 | # autoconf doesn't have AC_FUNC_CALLOC so fake it if malloc returns NULL; | 1411 | # autoconf doesn't have AC_FUNC_CALLOC so fake it if malloc returns NULL; |
1364 | if test "x$ac_cv_func_malloc_0_nonnull" != "xyes"; then | 1412 | AC_MSG_CHECKING([if calloc(0, N) returns non-null]) |
1365 | AC_DEFINE(HAVE_CALLOC, 0, [calloc(x, 0) returns NULL]) | 1413 | AC_RUN_IFELSE( |
1414 | [AC_LANG_PROGRAM( | ||
1415 | [[ #include <stdlib.h> ]], | ||
1416 | [[ void *p = calloc(0, 1); exit(p == NULL); ]] | ||
1417 | )], | ||
1418 | [ func_calloc_0_nonnull=yes ], | ||
1419 | [ func_calloc_0_nonnull=no ], | ||
1420 | [ AC_MSG_WARN([cross compiling: assuming same as malloc]) | ||
1421 | func_calloc_0_nonnull="$ac_cv_func_malloc_0_nonnull"] | ||
1422 | ) | ||
1423 | AC_MSG_RESULT([$func_calloc_0_nonnull]) | ||
1424 | |||
1425 | if test "x$func_calloc_0_nonnull" == "xyes"; then | ||
1426 | AC_DEFINE(HAVE_CALLOC, 1, [calloc(0, x) returns non-null]) | ||
1427 | else | ||
1428 | AC_DEFINE(HAVE_CALLOC, 0, [calloc(0, x) returns NULL]) | ||
1366 | AC_DEFINE(calloc, rpl_calloc, | 1429 | AC_DEFINE(calloc, rpl_calloc, |
1367 | [Define to rpl_calloc if the replacement function should be used.]) | 1430 | [Define to rpl_calloc if the replacement function should be used.]) |
1368 | fi | 1431 | fi |
@@ -1567,7 +1630,7 @@ AC_ARG_WITH(ldns, | |||
1567 | ldns="" | 1630 | ldns="" |
1568 | if test "x$withval" = "xyes" ; then | 1631 | if test "x$withval" = "xyes" ; then |
1569 | AC_PATH_TOOL([LDNSCONFIG], [ldns-config], [no]) | 1632 | AC_PATH_TOOL([LDNSCONFIG], [ldns-config], [no]) |
1570 | if test "x$PKGCONFIG" = "xno"; then | 1633 | if test "x$LDNSCONFIG" = "xno"; then |
1571 | CPPFLAGS="$CPPFLAGS -I${withval}/include" | 1634 | CPPFLAGS="$CPPFLAGS -I${withval}/include" |
1572 | LDFLAGS="$LDFLAGS -L${withval}/lib" | 1635 | LDFLAGS="$LDFLAGS -L${withval}/lib" |
1573 | LIBS="-lldns $LIBS" | 1636 | LIBS="-lldns $LIBS" |
@@ -1775,6 +1838,7 @@ AC_CHECK_FUNCS([ \ | |||
1775 | bcrypt_pbkdf \ | 1838 | bcrypt_pbkdf \ |
1776 | bindresvport_sa \ | 1839 | bindresvport_sa \ |
1777 | blf_enc \ | 1840 | blf_enc \ |
1841 | bzero \ | ||
1778 | cap_rights_limit \ | 1842 | cap_rights_limit \ |
1779 | clock \ | 1843 | clock \ |
1780 | closefrom \ | 1844 | closefrom \ |
@@ -1785,6 +1849,7 @@ AC_CHECK_FUNCS([ \ | |||
1785 | explicit_bzero \ | 1849 | explicit_bzero \ |
1786 | fchmod \ | 1850 | fchmod \ |
1787 | fchown \ | 1851 | fchown \ |
1852 | flock \ | ||
1788 | freeaddrinfo \ | 1853 | freeaddrinfo \ |
1789 | freezero \ | 1854 | freezero \ |
1790 | fstatfs \ | 1855 | fstatfs \ |
@@ -1799,9 +1864,9 @@ AC_CHECK_FUNCS([ \ | |||
1799 | getpeereid \ | 1864 | getpeereid \ |
1800 | getpeerucred \ | 1865 | getpeerucred \ |
1801 | getpgid \ | 1866 | getpgid \ |
1802 | getpgrp \ | ||
1803 | _getpty \ | 1867 | _getpty \ |
1804 | getrlimit \ | 1868 | getrlimit \ |
1869 | getsid \ | ||
1805 | getttyent \ | 1870 | getttyent \ |
1806 | glob \ | 1871 | glob \ |
1807 | group_from_gid \ | 1872 | group_from_gid \ |
@@ -1823,6 +1888,7 @@ AC_CHECK_FUNCS([ \ | |||
1823 | poll \ | 1888 | poll \ |
1824 | prctl \ | 1889 | prctl \ |
1825 | pstat \ | 1890 | pstat \ |
1891 | raise \ | ||
1826 | readpassphrase \ | 1892 | readpassphrase \ |
1827 | reallocarray \ | 1893 | reallocarray \ |
1828 | recvmsg \ | 1894 | recvmsg \ |
@@ -1857,6 +1923,7 @@ AC_CHECK_FUNCS([ \ | |||
1857 | strlcat \ | 1923 | strlcat \ |
1858 | strlcpy \ | 1924 | strlcpy \ |
1859 | strmode \ | 1925 | strmode \ |
1926 | strndup \ | ||
1860 | strnlen \ | 1927 | strnlen \ |
1861 | strnvis \ | 1928 | strnvis \ |
1862 | strptime \ | 1929 | strptime \ |
@@ -1880,6 +1947,8 @@ AC_CHECK_FUNCS([ \ | |||
1880 | warn \ | 1947 | warn \ |
1881 | ]) | 1948 | ]) |
1882 | 1949 | ||
1950 | AC_CHECK_DECLS([bzero]) | ||
1951 | |||
1883 | dnl Wide character support. | 1952 | dnl Wide character support. |
1884 | AC_CHECK_FUNCS([mblen mbtowc nl_langinfo wcwidth]) | 1953 | AC_CHECK_FUNCS([mblen mbtowc nl_langinfo wcwidth]) |
1885 | 1954 | ||
@@ -1922,7 +1991,10 @@ AC_ARG_ENABLE([pkcs11], | |||
1922 | if test "x$openssl" = "xyes" && test "x$disable_pkcs11" = "x"; then | 1991 | if test "x$openssl" = "xyes" && test "x$disable_pkcs11" = "x"; then |
1923 | # PKCS#11 support requires dlopen() and co | 1992 | # PKCS#11 support requires dlopen() and co |
1924 | AC_SEARCH_LIBS([dlopen], [dl], | 1993 | AC_SEARCH_LIBS([dlopen], [dl], |
1925 | [AC_DEFINE([ENABLE_PKCS11], [], [Enable for PKCS#11 support])] | 1994 | AC_CHECK_DECL([RTLD_NOW], |
1995 | AC_DEFINE([ENABLE_PKCS11], [], [Enable for PKCS#11 support]), | ||
1996 | [], [#include <dlfcn.h>] | ||
1997 | ) | ||
1926 | ) | 1998 | ) |
1927 | fi | 1999 | fi |
1928 | 2000 | ||
@@ -1949,7 +2021,6 @@ AC_SEARCH_LIBS([clock_gettime], [rt], | |||
1949 | [AC_DEFINE([HAVE_CLOCK_GETTIME], [1], [Have clock_gettime])]) | 2021 | [AC_DEFINE([HAVE_CLOCK_GETTIME], [1], [Have clock_gettime])]) |
1950 | 2022 | ||
1951 | dnl Make sure prototypes are defined for these before using them. | 2023 | dnl Make sure prototypes are defined for these before using them. |
1952 | AC_CHECK_DECL([getrusage], [AC_CHECK_FUNCS([getrusage])]) | ||
1953 | AC_CHECK_DECL([strsep], | 2024 | AC_CHECK_DECL([strsep], |
1954 | [AC_CHECK_FUNCS([strsep])], | 2025 | [AC_CHECK_FUNCS([strsep])], |
1955 | [], | 2026 | [], |
@@ -1985,7 +2056,7 @@ AC_CHECK_DECLS([O_NONBLOCK], , , | |||
1985 | #endif | 2056 | #endif |
1986 | ]) | 2057 | ]) |
1987 | 2058 | ||
1988 | AC_CHECK_DECLS([writev], , , [ | 2059 | AC_CHECK_DECLS([readv, writev], , , [ |
1989 | #include <sys/types.h> | 2060 | #include <sys/types.h> |
1990 | #include <sys/uio.h> | 2061 | #include <sys/uio.h> |
1991 | #include <unistd.h> | 2062 | #include <unistd.h> |
@@ -2102,6 +2173,16 @@ AC_CHECK_FUNCS([realpath], [ | |||
2102 | ) | 2173 | ) |
2103 | ]) | 2174 | ]) |
2104 | 2175 | ||
2176 | AC_MSG_CHECKING([for working fflush(NULL)]) | ||
2177 | AC_RUN_IFELSE( | ||
2178 | [AC_LANG_PROGRAM([[#include <stdio.h>]], [[fflush(NULL); exit(0);]])], | ||
2179 | AC_MSG_RESULT([yes]), | ||
2180 | [AC_MSG_RESULT([no]) | ||
2181 | AC_DEFINE([FFLUSH_NULL_BUG], [1], | ||
2182 | [define if fflush(NULL) does not work])], | ||
2183 | AC_MSG_WARN([cross compiling: assuming working]) | ||
2184 | ) | ||
2185 | |||
2105 | dnl Checks for time functions | 2186 | dnl Checks for time functions |
2106 | AC_CHECK_FUNCS([gettimeofday time]) | 2187 | AC_CHECK_FUNCS([gettimeofday time]) |
2107 | dnl Checks for utmp functions | 2188 | dnl Checks for utmp functions |
@@ -2473,7 +2554,16 @@ static void sighandler(int sig) { _exit(1); } | |||
2473 | ) | 2554 | ) |
2474 | fi | 2555 | fi |
2475 | 2556 | ||
2476 | AC_FUNC_GETPGRP | 2557 | AC_CHECK_FUNCS([getpgrp],[ |
2558 | AC_MSG_CHECKING([if getpgrp accepts zero args]) | ||
2559 | AC_COMPILE_IFELSE( | ||
2560 | [AC_LANG_PROGRAM([[$ac_includes_default]], [[ getpgrp(); ]])], | ||
2561 | [ AC_MSG_RESULT([yes]) | ||
2562 | AC_DEFINE([GETPGRP_VOID], [1], [getpgrp takes zero args])], | ||
2563 | [ AC_MSG_RESULT([no]) | ||
2564 | AC_DEFINE([GETPGRP_VOID], [0], [getpgrp takes one arg])] | ||
2565 | ) | ||
2566 | ]) | ||
2477 | 2567 | ||
2478 | # Search for OpenSSL | 2568 | # Search for OpenSSL |
2479 | saved_CPPFLAGS="$CPPFLAGS" | 2569 | saved_CPPFLAGS="$CPPFLAGS" |
@@ -3721,6 +3811,23 @@ AC_CHECK_TYPES([fsblkcnt_t, fsfilcnt_t], , , [ | |||
3721 | #endif | 3811 | #endif |
3722 | ]) | 3812 | ]) |
3723 | 3813 | ||
3814 | AC_CHECK_MEMBERS([struct statfs.f_flags], [], [], [[ | ||
3815 | #include <sys/types.h> | ||
3816 | #ifdef HAVE_SYS_BITYPES_H | ||
3817 | #include <sys/bitypes.h> | ||
3818 | #endif | ||
3819 | #ifdef HAVE_SYS_STATFS_H | ||
3820 | #include <sys/statfs.h> | ||
3821 | #endif | ||
3822 | #ifdef HAVE_SYS_STATVFS_H | ||
3823 | #include <sys/statvfs.h> | ||
3824 | #endif | ||
3825 | #ifdef HAVE_SYS_VFS_H | ||
3826 | #include <sys/vfs.h> | ||
3827 | #endif | ||
3828 | ]]) | ||
3829 | |||
3830 | |||
3724 | AC_CHECK_TYPES([in_addr_t, in_port_t], , , | 3831 | AC_CHECK_TYPES([in_addr_t, in_port_t], , , |
3725 | [#include <sys/types.h> | 3832 | [#include <sys/types.h> |
3726 | #include <netinet/in.h>]) | 3833 | #include <netinet/in.h>]) |
@@ -4858,7 +4965,7 @@ if test ! -d $piddir ; then | |||
4858 | fi | 4965 | fi |
4859 | 4966 | ||
4860 | AC_ARG_WITH([pid-dir], | 4967 | AC_ARG_WITH([pid-dir], |
4861 | [ --with-pid-dir=PATH Specify location of ssh.pid file], | 4968 | [ --with-pid-dir=PATH Specify location of sshd.pid file], |
4862 | [ | 4969 | [ |
4863 | if test -n "$withval" && test "x$withval" != "xno" && \ | 4970 | if test -n "$withval" && test "x$withval" != "xno" && \ |
4864 | test "x${withval}" != "xyes"; then | 4971 | test "x${withval}" != "xyes"; then |
@@ -5159,6 +5266,7 @@ AC_SUBST([TEST_SSH_IPV6], [$TEST_SSH_IPV6]) | |||
5159 | AC_SUBST([TEST_SSH_UTF8], [$TEST_SSH_UTF8]) | 5266 | AC_SUBST([TEST_SSH_UTF8], [$TEST_SSH_UTF8]) |
5160 | AC_SUBST([TEST_MALLOC_OPTIONS], [$TEST_MALLOC_OPTIONS]) | 5267 | AC_SUBST([TEST_MALLOC_OPTIONS], [$TEST_MALLOC_OPTIONS]) |
5161 | AC_SUBST([UNSUPPORTED_ALGORITHMS], [$unsupported_algorithms]) | 5268 | AC_SUBST([UNSUPPORTED_ALGORITHMS], [$unsupported_algorithms]) |
5269 | AC_SUBST([DEPEND], [$(cat $srcdir/.depend)]) | ||
5162 | 5270 | ||
5163 | CFLAGS="${CFLAGS} ${CFLAGS_AFTER}" | 5271 | CFLAGS="${CFLAGS} ${CFLAGS_AFTER}" |
5164 | LDFLAGS="${LDFLAGS} ${LDFLAGS_AFTER}" | 5272 | LDFLAGS="${LDFLAGS} ${LDFLAGS_AFTER}" |
@@ -5210,7 +5318,6 @@ echo " PAM support: $PAM_MSG" | |||
5210 | echo " OSF SIA support: $SIA_MSG" | 5318 | echo " OSF SIA support: $SIA_MSG" |
5211 | echo " KerberosV support: $KRB5_MSG" | 5319 | echo " KerberosV support: $KRB5_MSG" |
5212 | echo " SELinux support: $SELINUX_MSG" | 5320 | echo " SELinux support: $SELINUX_MSG" |
5213 | echo " Smartcard support: $SCARD_MSG" | ||
5214 | echo " S/KEY support: $SKEY_MSG" | 5321 | echo " S/KEY support: $SKEY_MSG" |
5215 | echo " TCP Wrappers support: $TCPW_MSG" | 5322 | echo " TCP Wrappers support: $TCPW_MSG" |
5216 | echo " MD5 password support: $MD5_MSG" | 5323 | echo " MD5 password support: $MD5_MSG" |
diff --git a/contrib/aix/README b/contrib/aix/README index 4a11ae703..1aa591978 100644 --- a/contrib/aix/README +++ b/contrib/aix/README | |||
@@ -47,4 +47,3 @@ you get to keep both pieces. | |||
47 | - Darren Tucker (dtucker at zip dot com dot au) | 47 | - Darren Tucker (dtucker at zip dot com dot au) |
48 | 2002/03/01 | 48 | 2002/03/01 |
49 | 49 | ||
50 | $Id: README,v 1.4 2003/08/25 05:01:04 dtucker Exp $ | ||
diff --git a/contrib/aix/buildbff.sh b/contrib/aix/buildbff.sh index 81d8cc301..00b384dc7 100755 --- a/contrib/aix/buildbff.sh +++ b/contrib/aix/buildbff.sh | |||
@@ -1,7 +1,6 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | # | 2 | # |
3 | # buildbff.sh: Create AIX SMIT-installable OpenSSH packages | 3 | # buildbff.sh: Create AIX SMIT-installable OpenSSH packages |
4 | # $Id: buildbff.sh,v 1.13 2011/05/05 03:48:41 djm Exp $ | ||
5 | # | 4 | # |
6 | # Author: Darren Tucker (dtucker at zip dot com dot au) | 5 | # Author: Darren Tucker (dtucker at zip dot com dot au) |
7 | # This file is placed in the public domain and comes with absolutely | 6 | # This file is placed in the public domain and comes with absolutely |
diff --git a/contrib/aix/inventory.sh b/contrib/aix/inventory.sh index e2641e79c..7d76f4971 100755 --- a/contrib/aix/inventory.sh +++ b/contrib/aix/inventory.sh | |||
@@ -1,7 +1,6 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | # | 2 | # |
3 | # inventory.sh | 3 | # inventory.sh |
4 | # $Id: inventory.sh,v 1.6 2003/11/21 12:48:56 djm Exp $ | ||
5 | # | 4 | # |
6 | # Originally written by Ben Lindstrom, modified by Darren Tucker to use perl | 5 | # Originally written by Ben Lindstrom, modified by Darren Tucker to use perl |
7 | # This file is placed into the public domain. | 6 | # This file is placed into the public domain. |
diff --git a/contrib/cygwin/Makefile b/contrib/cygwin/Makefile index a0261f48d..4b78cd950 100644 --- a/contrib/cygwin/Makefile +++ b/contrib/cygwin/Makefile | |||
@@ -13,6 +13,7 @@ defaultsdir=$(sysconfdir)/defaults/etc | |||
13 | inetdefdir=$(defaultsdir)/inetd.d | 13 | inetdefdir=$(defaultsdir)/inetd.d |
14 | PRIVSEP_PATH=/var/empty | 14 | PRIVSEP_PATH=/var/empty |
15 | INSTALL=/usr/bin/install -c | 15 | INSTALL=/usr/bin/install -c |
16 | MKDIR_P=$(srcdir)/mkinstalldirs | ||
16 | 17 | ||
17 | DESTDIR= | 18 | DESTDIR= |
18 | 19 | ||
@@ -23,7 +24,7 @@ all: | |||
23 | @echo | 24 | @echo |
24 | 25 | ||
25 | move-config-files: $(DESTDIR)$(sysconfdir)/ssh_config $(DESTDIR)$(sysconfdir)/sshd_config | 26 | move-config-files: $(DESTDIR)$(sysconfdir)/ssh_config $(DESTDIR)$(sysconfdir)/sshd_config |
26 | $(srcdir)/mkinstalldirs $(DESTDIR)$(defaultsdir) | 27 | $(MKDIR_P) $(DESTDIR)$(defaultsdir) |
27 | mv $(DESTDIR)$(sysconfdir)/ssh_config $(DESTDIR)$(defaultsdir) | 28 | mv $(DESTDIR)$(sysconfdir)/ssh_config $(DESTDIR)$(defaultsdir) |
28 | mv $(DESTDIR)$(sysconfdir)/sshd_config $(DESTDIR)$(defaultsdir) | 29 | mv $(DESTDIR)$(sysconfdir)/sshd_config $(DESTDIR)$(defaultsdir) |
29 | 30 | ||
@@ -31,11 +32,11 @@ remove-empty-dir: | |||
31 | rm -rf $(DESTDIR)$(PRIVSEP_PATH) | 32 | rm -rf $(DESTDIR)$(PRIVSEP_PATH) |
32 | 33 | ||
33 | install-inetd-config: | 34 | install-inetd-config: |
34 | $(srcdir)/mkinstalldirs $(DESTDIR)$(inetdefdir) | 35 | $(MKDIR_P) $(DESTDIR)$(inetdefdir) |
35 | $(INSTALL) -m 644 sshd-inetd $(DESTDIR)$(inetdefdir)/sshd-inetd | 36 | $(INSTALL) -m 644 sshd-inetd $(DESTDIR)$(inetdefdir)/sshd-inetd |
36 | 37 | ||
37 | install-sshdoc: | 38 | install-sshdoc: |
38 | $(srcdir)/mkinstalldirs $(DESTDIR)$(sshdocdir) | 39 | $(MKDIR_P) $(DESTDIR)$(sshdocdir) |
39 | -$(INSTALL) -m 644 $(srcdir)/CREDITS $(DESTDIR)$(sshdocdir)/CREDITS | 40 | -$(INSTALL) -m 644 $(srcdir)/CREDITS $(DESTDIR)$(sshdocdir)/CREDITS |
40 | -$(INSTALL) -m 644 $(srcdir)/ChangeLog $(DESTDIR)$(sshdocdir)/ChangeLog | 41 | -$(INSTALL) -m 644 $(srcdir)/ChangeLog $(DESTDIR)$(sshdocdir)/ChangeLog |
41 | -$(INSTALL) -m 644 $(srcdir)/LICENCE $(DESTDIR)$(sshdocdir)/LICENCE | 42 | -$(INSTALL) -m 644 $(srcdir)/LICENCE $(DESTDIR)$(sshdocdir)/LICENCE |
@@ -52,13 +53,13 @@ install-sshdoc: | |||
52 | -$(INSTALL) -m 644 $(srcdir)/TODO $(DESTDIR)$(sshdocdir)/TODO | 53 | -$(INSTALL) -m 644 $(srcdir)/TODO $(DESTDIR)$(sshdocdir)/TODO |
53 | 54 | ||
54 | install-cygwindoc: README | 55 | install-cygwindoc: README |
55 | $(srcdir)/mkinstalldirs $(DESTDIR)$(cygdocdir) | 56 | $(MKDIR_P) $(DESTDIR)$(cygdocdir) |
56 | $(INSTALL) -m 644 README $(DESTDIR)$(cygdocdir)/openssh.README | 57 | $(INSTALL) -m 644 README $(DESTDIR)$(cygdocdir)/openssh.README |
57 | 58 | ||
58 | install-doc: install-sshdoc install-cygwindoc | 59 | install-doc: install-sshdoc install-cygwindoc |
59 | 60 | ||
60 | install-scripts: ssh-host-config ssh-user-config | 61 | install-scripts: ssh-host-config ssh-user-config |
61 | $(srcdir)/mkinstalldirs $(DESTDIR)$(bindir) | 62 | $(MKDIR_P) $(DESTDIR)$(bindir) |
62 | $(INSTALL) -m 755 ssh-host-config $(DESTDIR)$(bindir)/ssh-host-config | 63 | $(INSTALL) -m 755 ssh-host-config $(DESTDIR)$(bindir)/ssh-host-config |
63 | $(INSTALL) -m 755 ssh-user-config $(DESTDIR)$(bindir)/ssh-user-config | 64 | $(INSTALL) -m 755 ssh-user-config $(DESTDIR)$(bindir)/ssh-user-config |
64 | 65 | ||
diff --git a/contrib/findssl.sh b/contrib/findssl.sh index 263fd2644..95a0d66df 100644 --- a/contrib/findssl.sh +++ b/contrib/findssl.sh | |||
@@ -1,7 +1,5 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | # | 2 | # |
3 | # $Id: findssl.sh,v 1.4 2007/02/19 11:44:25 dtucker Exp $ | ||
4 | # | ||
5 | # findssl.sh | 3 | # findssl.sh |
6 | # Search for all instances of OpenSSL headers and libraries | 4 | # Search for all instances of OpenSSL headers and libraries |
7 | # and print their versions. | 5 | # and print their versions. |
diff --git a/contrib/redhat/openssh.spec b/contrib/redhat/openssh.spec index a96a36e49..a0d5e2071 100644 --- a/contrib/redhat/openssh.spec +++ b/contrib/redhat/openssh.spec | |||
@@ -1,5 +1,5 @@ | |||
1 | %define ver 7.6p1 | 1 | %define ver 7.7p1 |
2 | %define rel 1 | 2 | %define rel 1%{?dist} |
3 | 3 | ||
4 | # OpenSSH privilege separation requires a user & group ID | 4 | # OpenSSH privilege separation requires a user & group ID |
5 | %define sshd_uid 74 | 5 | %define sshd_uid 74 |
@@ -23,8 +23,19 @@ | |||
23 | # Use GTK2 instead of GNOME in gnome-ssh-askpass | 23 | # Use GTK2 instead of GNOME in gnome-ssh-askpass |
24 | %define gtk2 1 | 24 | %define gtk2 1 |
25 | 25 | ||
26 | # Is this build for RHL 6.x? | 26 | # Use build6x options for older RHEL builds |
27 | # RHEL 7 not yet supported | ||
28 | %if 0%{?rhel} > 6 | ||
27 | %define build6x 0 | 29 | %define build6x 0 |
30 | %else | ||
31 | %define build6x 1 | ||
32 | %endif | ||
33 | |||
34 | %if 0%{?fedora} >= 26 | ||
35 | %define compat_openssl 1 | ||
36 | %else | ||
37 | %define compat_openssl 0 | ||
38 | %endif | ||
28 | 39 | ||
29 | # Do we want kerberos5 support (1=yes 0=no) | 40 | # Do we want kerberos5 support (1=yes 0=no) |
30 | %define kerberos5 1 | 41 | %define kerberos5 1 |
@@ -64,7 +75,7 @@ | |||
64 | %define kerberos5 0 | 75 | %define kerberos5 0 |
65 | %endif | 76 | %endif |
66 | 77 | ||
67 | Summary: The OpenSSH implementation of SSH protocol versions 1 and 2. | 78 | Summary: The OpenSSH implementation of SSH protocol version 2. |
68 | Name: openssh | 79 | Name: openssh |
69 | Version: %{ver} | 80 | Version: %{ver} |
70 | %if %{rescue} | 81 | %if %{rescue} |
@@ -74,9 +85,7 @@ Release: %{rel} | |||
74 | %endif | 85 | %endif |
75 | URL: https://www.openssh.com/portable.html | 86 | URL: https://www.openssh.com/portable.html |
76 | Source0: https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-%{version}.tar.gz | 87 | Source0: https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-%{version}.tar.gz |
77 | %if ! %{no_x11_askpass} | ||
78 | Source1: http://www.jmknoble.net/software/x11-ssh-askpass/x11-ssh-askpass-%{aversion}.tar.gz | 88 | Source1: http://www.jmknoble.net/software/x11-ssh-askpass/x11-ssh-askpass-%{aversion}.tar.gz |
79 | %endif | ||
80 | License: BSD | 89 | License: BSD |
81 | Group: Applications/Internet | 90 | Group: Applications/Internet |
82 | BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot | 91 | BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot |
@@ -86,7 +95,13 @@ PreReq: initscripts >= 5.00 | |||
86 | %else | 95 | %else |
87 | Requires: initscripts >= 5.20 | 96 | Requires: initscripts >= 5.20 |
88 | %endif | 97 | %endif |
89 | BuildRequires: perl, openssl-devel | 98 | BuildRequires: perl |
99 | %if %{compat_openssl} | ||
100 | BuildRequires: compat-openssl10-devel | ||
101 | %else | ||
102 | BuildRequires: openssl-devel >= 1.0.1 | ||
103 | BuildRequires: openssl-devel < 1.1 | ||
104 | %endif | ||
90 | BuildRequires: /bin/login | 105 | BuildRequires: /bin/login |
91 | %if ! %{build6x} | 106 | %if ! %{build6x} |
92 | BuildRequires: glibc-devel, pam | 107 | BuildRequires: glibc-devel, pam |
@@ -95,6 +110,12 @@ BuildRequires: /usr/include/security/pam_appl.h | |||
95 | %endif | 110 | %endif |
96 | %if ! %{no_x11_askpass} | 111 | %if ! %{no_x11_askpass} |
97 | BuildRequires: /usr/include/X11/Xlib.h | 112 | BuildRequires: /usr/include/X11/Xlib.h |
113 | # Xt development tools | ||
114 | BuildRequires: libXt-devel | ||
115 | # Provides xmkmf | ||
116 | BuildRequires: imake | ||
117 | # Rely on relatively recent gtk | ||
118 | BuildRequires: gtk2-devel | ||
98 | %endif | 119 | %endif |
99 | %if ! %{no_gnome_askpass} | 120 | %if ! %{no_gnome_askpass} |
100 | BuildRequires: pkgconfig | 121 | BuildRequires: pkgconfig |
@@ -183,11 +204,6 @@ environment. | |||
183 | CFLAGS="$RPM_OPT_FLAGS -Os"; export CFLAGS | 204 | CFLAGS="$RPM_OPT_FLAGS -Os"; export CFLAGS |
184 | %endif | 205 | %endif |
185 | 206 | ||
186 | %if %{kerberos5} | ||
187 | K5DIR=`rpm -ql krb5-devel | grep 'include/krb5\.h' | sed 's,\/include\/krb5.h,,'` | ||
188 | echo K5DIR=$K5DIR | ||
189 | %endif | ||
190 | |||
191 | %configure \ | 207 | %configure \ |
192 | --sysconfdir=%{_sysconfdir}/ssh \ | 208 | --sysconfdir=%{_sysconfdir}/ssh \ |
193 | --libexecdir=%{_libexecdir}/openssh \ | 209 | --libexecdir=%{_libexecdir}/openssh \ |
@@ -196,6 +212,9 @@ echo K5DIR=$K5DIR | |||
196 | --with-superuser-path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin \ | 212 | --with-superuser-path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin \ |
197 | --with-privsep-path=%{_var}/empty/sshd \ | 213 | --with-privsep-path=%{_var}/empty/sshd \ |
198 | --with-md5-passwords \ | 214 | --with-md5-passwords \ |
215 | --mandir=%{_mandir} \ | ||
216 | --with-mantype=man \ | ||
217 | --disable-strip \ | ||
199 | %if %{scard} | 218 | %if %{scard} |
200 | --with-smartcard \ | 219 | --with-smartcard \ |
201 | %endif | 220 | %endif |
@@ -262,12 +281,12 @@ install -m644 contrib/redhat/sshd.pam $RPM_BUILD_ROOT/etc/pam.d/sshd | |||
262 | install -m755 contrib/redhat/sshd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/sshd | 281 | install -m755 contrib/redhat/sshd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/sshd |
263 | 282 | ||
264 | %if ! %{no_x11_askpass} | 283 | %if ! %{no_x11_askpass} |
265 | install -s x11-ssh-askpass-%{aversion}/x11-ssh-askpass $RPM_BUILD_ROOT%{_libexecdir}/openssh/x11-ssh-askpass | 284 | install x11-ssh-askpass-%{aversion}/x11-ssh-askpass $RPM_BUILD_ROOT%{_libexecdir}/openssh/x11-ssh-askpass |
266 | ln -s x11-ssh-askpass $RPM_BUILD_ROOT%{_libexecdir}/openssh/ssh-askpass | 285 | ln -s x11-ssh-askpass $RPM_BUILD_ROOT%{_libexecdir}/openssh/ssh-askpass |
267 | %endif | 286 | %endif |
268 | 287 | ||
269 | %if ! %{no_gnome_askpass} | 288 | %if ! %{no_gnome_askpass} |
270 | install -s contrib/gnome-ssh-askpass $RPM_BUILD_ROOT%{_libexecdir}/openssh/gnome-ssh-askpass | 289 | install contrib/gnome-ssh-askpass $RPM_BUILD_ROOT%{_libexecdir}/openssh/gnome-ssh-askpass |
271 | %endif | 290 | %endif |
272 | 291 | ||
273 | %if ! %{scard} | 292 | %if ! %{scard} |
@@ -391,7 +410,7 @@ fi | |||
391 | %doc x11-ssh-askpass-%{aversion}/README | 410 | %doc x11-ssh-askpass-%{aversion}/README |
392 | %doc x11-ssh-askpass-%{aversion}/ChangeLog | 411 | %doc x11-ssh-askpass-%{aversion}/ChangeLog |
393 | %doc x11-ssh-askpass-%{aversion}/SshAskpass*.ad | 412 | %doc x11-ssh-askpass-%{aversion}/SshAskpass*.ad |
394 | %attr(0755,root,root) %{_libexecdir}/openssh/ssh-askpass | 413 | %{_libexecdir}/openssh/ssh-askpass |
395 | %attr(0755,root,root) %{_libexecdir}/openssh/x11-ssh-askpass | 414 | %attr(0755,root,root) %{_libexecdir}/openssh/x11-ssh-askpass |
396 | %endif | 415 | %endif |
397 | 416 | ||
@@ -403,6 +422,22 @@ fi | |||
403 | %endif | 422 | %endif |
404 | 423 | ||
405 | %changelog | 424 | %changelog |
425 | * Sat Feb 10 2018 Darren Tucker <dtucker@dtucker.net> | ||
426 | - Update openssl-devel dependency to match current requirements. | ||
427 | - Handle Fedora >=6 openssl 1.0 compat libs. | ||
428 | - Remove SSH1 from description. | ||
429 | - Don't strip binaries at build time so that debuginfo package can be | ||
430 | created. | ||
431 | |||
432 | * Sun Nov 16 2014 Nico Kadel-Garcia <nakdel@gmail.com> | ||
433 | - Add '--mandir' and '--with-mantype' for RHEL 5 compatibility | ||
434 | - Add 'dist' option to 'ver' so package names reflect OS at build time | ||
435 | - Always include x11-ssh-askpass tarball in SRPM | ||
436 | - Add openssh-x11-aspass BuildRequires for libXT-devel, imake, gtk2-devel | ||
437 | - Discard 'K5DIR' reporting, not usable inside 'mock' for RHEL 5 compatibility | ||
438 | - Discard obsolete '--with-rsh' configure option | ||
439 | - Update openssl-devel dependency to 0.9.8f, as found in autoconf | ||
440 | |||
406 | * Wed Jul 14 2010 Tim Rice <tim@multitalents.net> | 441 | * Wed Jul 14 2010 Tim Rice <tim@multitalents.net> |
407 | - test for skip_x11_askpass (line 77) should have been for no_x11_askpass | 442 | - test for skip_x11_askpass (line 77) should have been for no_x11_askpass |
408 | 443 | ||
@@ -414,7 +449,7 @@ fi | |||
414 | - Don't install profile.d scripts when not building with GNOME/GTK askpass | 449 | - Don't install profile.d scripts when not building with GNOME/GTK askpass |
415 | (patch from bet@rahul.net) | 450 | (patch from bet@rahul.net) |
416 | 451 | ||
417 | * Wed Oct 01 2002 Damien Miller <djm@mindrot.org> | 452 | * Tue Oct 01 2002 Damien Miller <djm@mindrot.org> |
418 | - Install ssh-agent setgid nobody to prevent ptrace() key theft attacks | 453 | - Install ssh-agent setgid nobody to prevent ptrace() key theft attacks |
419 | 454 | ||
420 | * Mon Sep 30 2002 Damien Miller <djm@mindrot.org> | 455 | * Mon Sep 30 2002 Damien Miller <djm@mindrot.org> |
@@ -460,7 +495,7 @@ fi | |||
460 | - remove dependency on db1-devel, which has just been swallowed up whole | 495 | - remove dependency on db1-devel, which has just been swallowed up whole |
461 | by gnome-libs-devel | 496 | by gnome-libs-devel |
462 | 497 | ||
463 | * Sun Dec 29 2001 Nalin Dahyabhai <nalin@redhat.com> | 498 | * Sat Dec 29 2001 Nalin Dahyabhai <nalin@redhat.com> |
464 | - adjust build dependencies so that build6x actually works right (fix | 499 | - adjust build dependencies so that build6x actually works right (fix |
465 | from Hugo van der Kooij) | 500 | from Hugo van der Kooij) |
466 | 501 | ||
diff --git a/contrib/redhat/sshd.init b/contrib/redhat/sshd.init index 40c8dfd9f..8ee5fcd3b 100755 --- a/contrib/redhat/sshd.init +++ b/contrib/redhat/sshd.init | |||
@@ -40,7 +40,6 @@ start() | |||
40 | # Create keys if necessary | 40 | # Create keys if necessary |
41 | /usr/bin/ssh-keygen -A | 41 | /usr/bin/ssh-keygen -A |
42 | if [ -x /sbin/restorecon ]; then | 42 | if [ -x /sbin/restorecon ]; then |
43 | /sbin/restorecon /etc/ssh/ssh_host_key.pub | ||
44 | /sbin/restorecon /etc/ssh/ssh_host_rsa_key.pub | 43 | /sbin/restorecon /etc/ssh/ssh_host_rsa_key.pub |
45 | /sbin/restorecon /etc/ssh/ssh_host_dsa_key.pub | 44 | /sbin/restorecon /etc/ssh/ssh_host_dsa_key.pub |
46 | /sbin/restorecon /etc/ssh/ssh_host_ecdsa_key.pub | 45 | /sbin/restorecon /etc/ssh/ssh_host_ecdsa_key.pub |
diff --git a/contrib/redhat/sshd.init.old b/contrib/redhat/sshd.init.old index 0deb6080e..8a30f7da4 100755 --- a/contrib/redhat/sshd.init.old +++ b/contrib/redhat/sshd.init.old | |||
@@ -24,7 +24,6 @@ prog="sshd" | |||
24 | # Some functions to make the below more readable | 24 | # Some functions to make the below more readable |
25 | KEYGEN=/usr/bin/ssh-keygen | 25 | KEYGEN=/usr/bin/ssh-keygen |
26 | SSHD=/usr/sbin/sshd | 26 | SSHD=/usr/sbin/sshd |
27 | RSA1_KEY=/etc/ssh/ssh_host_key | ||
28 | RSA_KEY=/etc/ssh/ssh_host_rsa_key | 27 | RSA_KEY=/etc/ssh/ssh_host_rsa_key |
29 | DSA_KEY=/etc/ssh/ssh_host_dsa_key | 28 | DSA_KEY=/etc/ssh/ssh_host_dsa_key |
30 | PID_FILE=/var/run/sshd.pid | 29 | PID_FILE=/var/run/sshd.pid |
@@ -61,21 +60,6 @@ my_failure() { | |||
61 | ;; | 60 | ;; |
62 | esac | 61 | esac |
63 | } | 62 | } |
64 | do_rsa1_keygen() { | ||
65 | if [ ! -s $RSA1_KEY ]; then | ||
66 | echo -n "Generating SSH1 RSA host key: " | ||
67 | if $KEYGEN -q -t rsa1 -f $RSA1_KEY -C '' -N '' >&/dev/null; then | ||
68 | chmod 600 $RSA1_KEY | ||
69 | chmod 644 $RSA1_KEY.pub | ||
70 | my_success "RSA1 key generation" | ||
71 | echo | ||
72 | else | ||
73 | my_failure "RSA1 key generation" | ||
74 | echo | ||
75 | exit 1 | ||
76 | fi | ||
77 | fi | ||
78 | } | ||
79 | do_rsa_keygen() { | 63 | do_rsa_keygen() { |
80 | if [ ! -s $RSA_KEY ]; then | 64 | if [ ! -s $RSA_KEY ]; then |
81 | echo -n "Generating SSH2 RSA host key: " | 65 | echo -n "Generating SSH2 RSA host key: " |
@@ -119,7 +103,6 @@ do_restart_sanity_check() { | |||
119 | case "$1" in | 103 | case "$1" in |
120 | start) | 104 | start) |
121 | # Create keys if necessary | 105 | # Create keys if necessary |
122 | do_rsa1_keygen; | ||
123 | do_rsa_keygen; | 106 | do_rsa_keygen; |
124 | do_dsa_keygen; | 107 | do_dsa_keygen; |
125 | 108 | ||
diff --git a/contrib/suse/openssh.spec b/contrib/suse/openssh.spec index fdb3578cb..d9c4298f1 100644 --- a/contrib/suse/openssh.spec +++ b/contrib/suse/openssh.spec | |||
@@ -13,7 +13,7 @@ | |||
13 | 13 | ||
14 | Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation | 14 | Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation |
15 | Name: openssh | 15 | Name: openssh |
16 | Version: 7.6p1 | 16 | Version: 7.7p1 |
17 | URL: https://www.openssh.com/ | 17 | URL: https://www.openssh.com/ |
18 | Release: 1 | 18 | Release: 1 |
19 | Source0: openssh-%{version}.tar.gz | 19 | Source0: openssh-%{version}.tar.gz |
diff --git a/crypto_api.h b/crypto_api.h index 5820ce8fa..7f45bbd69 100644 --- a/crypto_api.h +++ b/crypto_api.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: crypto_api.h,v 1.3 2013/12/17 10:36:38 markus Exp $ */ | 1 | /* $OpenBSD: crypto_api.h,v 1.4 2017/12/14 21:07:39 naddy Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Assembled from generated headers and source files by Markus Friedl. | 4 | * Assembled from generated headers and source files by Markus Friedl. |
@@ -8,6 +8,8 @@ | |||
8 | #ifndef crypto_api_h | 8 | #ifndef crypto_api_h |
9 | #define crypto_api_h | 9 | #define crypto_api_h |
10 | 10 | ||
11 | #include "includes.h" | ||
12 | |||
11 | #ifdef HAVE_STDINT_H | 13 | #ifdef HAVE_STDINT_H |
12 | # include <stdint.h> | 14 | # include <stdint.h> |
13 | #endif | 15 | #endif |
@@ -18,12 +20,6 @@ typedef uint32_t crypto_uint32; | |||
18 | 20 | ||
19 | #define randombytes(buf, buf_len) arc4random_buf((buf), (buf_len)) | 21 | #define randombytes(buf, buf_len) arc4random_buf((buf), (buf_len)) |
20 | 22 | ||
21 | #define crypto_hashblocks_sha512_STATEBYTES 64U | ||
22 | #define crypto_hashblocks_sha512_BLOCKBYTES 128U | ||
23 | |||
24 | int crypto_hashblocks_sha512(unsigned char *, const unsigned char *, | ||
25 | unsigned long long); | ||
26 | |||
27 | #define crypto_hash_sha512_BYTES 64U | 23 | #define crypto_hash_sha512_BYTES 64U |
28 | 24 | ||
29 | int crypto_hash_sha512(unsigned char *, const unsigned char *, | 25 | int crypto_hash_sha512(unsigned char *, const unsigned char *, |
diff --git a/debian/.git-dpm b/debian/.git-dpm index c60a212e2..c57923b4d 100644 --- a/debian/.git-dpm +++ b/debian/.git-dpm | |||
@@ -1,8 +1,11 @@ | |||
1 | # see git-dpm(1) from git-dpm package | 1 | # see git-dpm(1) from git-dpm package |
2 | bd081a1ae125c7c6b2cfec89746d1298a306ad78 | 2 | ea67bc97339c9a507343e4a1f5fb867f678fbe1d |
3 | bd081a1ae125c7c6b2cfec89746d1298a306ad78 | 3 | ea67bc97339c9a507343e4a1f5fb867f678fbe1d |
4 | 62f54f20bf351468e0124f63cc2902ee40d9b0e9 | 4 | ed6ae9c1a014a08ff5db3d768f01f2e427eeb476 |
5 | 62f54f20bf351468e0124f63cc2902ee40d9b0e9 | 5 | ed6ae9c1a014a08ff5db3d768f01f2e427eeb476 |
6 | openssh_7.6p1.orig.tar.gz | 6 | openssh_7.7p1.orig.tar.gz |
7 | a6984bc2c72192bed015c8b879b35dd9f5350b3b | 7 | 446fe9ed171f289f0d62197dffdbfdaaf21c49f2 |
8 | 1489788 | 8 | 1536900 |
9 | debianTag="debian/%e%%%V" | ||
10 | patchedTag="patched/%e%%%V" | ||
11 | upstreamTag="upstream/%U" | ||
diff --git a/debian/changelog b/debian/changelog index 627124b96..5a180a84c 100644 --- a/debian/changelog +++ b/debian/changelog | |||
@@ -1,3 +1,116 @@ | |||
1 | openssh (1:7.7p1-3) UNRELEASED; urgency=medium | ||
2 | |||
3 | [ Colin Watson ] | ||
4 | * Adjust git-dpm tagging configuration. | ||
5 | |||
6 | [ Juri Grabowski ] | ||
7 | * Add rescue.target with ssh support. | ||
8 | |||
9 | -- Colin Watson <cjwatson@debian.org> Sat, 16 Jun 2018 12:42:36 +0100 | ||
10 | |||
11 | openssh (1:7.7p1-2) unstable; urgency=medium | ||
12 | |||
13 | * Fix parsing of DebianBanner option (closes: #894730). | ||
14 | |||
15 | -- Colin Watson <cjwatson@debian.org> Wed, 04 Apr 2018 00:47:29 +0100 | ||
16 | |||
17 | openssh (1:7.7p1-1) unstable; urgency=medium | ||
18 | |||
19 | * New upstream release (https://www.openssh.com/txt/release-7.7): | ||
20 | - ssh(1)/sshd(8): Drop compatibility support for some very old SSH | ||
21 | implementations, including ssh.com <=2.* and OpenSSH <= 3.*. These | ||
22 | versions were all released in or before 2001 and predate the final SSH | ||
23 | RFCs. The support in question isn't necessary for RFC-compliant SSH | ||
24 | implementations. | ||
25 | - Add experimental support for PQC XMSS keys (Extended Hash-Based | ||
26 | Signatures). | ||
27 | - sshd(8): Add an "rdomain" criterion for the sshd_config Match keyword | ||
28 | to allow conditional configuration that depends on which routing | ||
29 | domain a connection was received on. | ||
30 | - sshd_config(5): Add an optional rdomain qualifier to the ListenAddress | ||
31 | directive to allow listening on different routing domains. | ||
32 | - sshd(8): Add "expiry-time" option for authorized_keys files to allow | ||
33 | for expiring keys. | ||
34 | - ssh(1): Add a BindInterface option to allow binding the outgoing | ||
35 | connection to an interface's address (basically a more usable | ||
36 | BindAddress; closes: #289592). | ||
37 | - ssh(1): Expose device allocated for tun/tap forwarding via a new %T | ||
38 | expansion for LocalCommand. This allows LocalCommand to be used to | ||
39 | prepare the interface. | ||
40 | - sshd(8): Expose the device allocated for tun/tap forwarding via a new | ||
41 | SSH_TUNNEL environment variable. This allows automatic setup of the | ||
42 | interface and surrounding network configuration automatically on the | ||
43 | server. | ||
44 | - ssh(1)/scp(1)/sftp(1): Add URI support to ssh, sftp and scp, e.g. | ||
45 | ssh://user@host or sftp://user@host/path. Additional connection | ||
46 | parameters described in draft-ietf-secsh-scp-sftp-ssh-uri-04 are not | ||
47 | implemented since the ssh fingerprint format in the draft uses the | ||
48 | deprecated MD5 hash with no way to specify any other algorithm. | ||
49 | - ssh-keygen(1): Allow certificate validity intervals that specify only | ||
50 | a start or stop time (instead of both or neither). | ||
51 | - sftp(1): Allow "cd" and "lcd" commands with no explicit path argument. | ||
52 | lcd will change to the local user's home directory as usual. cd will | ||
53 | change to the starting directory for session (because the protocol | ||
54 | offers no way to obtain the remote user's home directory). | ||
55 | - sshd(8): When doing a config test with sshd -T, only require the | ||
56 | attributes that are actually used in Match criteria rather than (an | ||
57 | incomplete list of) all criteria. | ||
58 | - ssh(1)/sshd(8): More strictly check signature types during key | ||
59 | exchange against what was negotiated. Prevents downgrade of RSA | ||
60 | signatures made with SHA-256/512 to SHA-1. | ||
61 | - sshd(8): Fix support for client that advertise a protocol version of | ||
62 | "1.99" (indicating that they are prepared to accept both SSHv1 and | ||
63 | SSHv2). This was broken in OpenSSH 7.6 during the removal of SSHv1 | ||
64 | support. | ||
65 | - ssh(1): Warn when the agent returns a ssh-rsa (SHA1) signature when a | ||
66 | rsa-sha2-256/512 signature was requested. This condition is possible | ||
67 | when an old or non-OpenSSH agent is in use. | ||
68 | - ssh-agent(1): Fix regression introduced in 7.6 that caused ssh-agent | ||
69 | to fatally exit if presented an invalid signature request message. | ||
70 | - sshd_config(5): Accept yes/no flag options case-insensitively, as has | ||
71 | been the case in ssh_config(5) for a long time (LP: #1656557). | ||
72 | - ssh(1): Improve error reporting for failures during connection. Under | ||
73 | some circumstances misleading errors were being shown. | ||
74 | - ssh-keyscan(1): Add -D option to allow printing of results directly in | ||
75 | SSHFP format. | ||
76 | - ssh(1): Compatibility fix for some servers that erroneously drop the | ||
77 | connection when the IUTF8 (RFC8160) option is sent. | ||
78 | - scp(1): Disable RemoteCommand and RequestTTY in the ssh session | ||
79 | started by scp (sftp was already doing this). | ||
80 | - ssh-keygen(1): Refuse to create a certificate with an unusable number | ||
81 | of principals. | ||
82 | - ssh-keygen(1): Fatally exit if ssh-keygen is unable to write all the | ||
83 | public key during key generation. Previously it would silently ignore | ||
84 | errors writing the comment and terminating newline. | ||
85 | - ssh(1): Do not modify hostname arguments that are addresses by | ||
86 | automatically forcing them to lower-case. Instead canonicalise them | ||
87 | jo resolve ambiguities (e.g. ::0001 => ::1) before they are matched | ||
88 | against known_hosts. | ||
89 | - ssh(1): Don't accept junk after "yes" or "no" responses to hostkey | ||
90 | prompts. | ||
91 | - sftp(1): Have sftp print a warning about shell cleanliness when | ||
92 | decoding the first packet fails, which is usually caused by shells | ||
93 | polluting stdout of non-interactive startups. | ||
94 | - ssh(1)/sshd(8): Switch timers in packet code from using wall-clock | ||
95 | time to monotonic time, allowing the packet layer to better function | ||
96 | over a clock step and avoiding possible integer overflows during | ||
97 | steps. | ||
98 | - sshd(8): Correctly detect MIPS ABI in use at configure time. Fixes | ||
99 | sandbox violations on some environments. | ||
100 | - Build and link with "retpoline" flags when available to mitigate the | ||
101 | "branch target injection" style (variant 2) of the Spectre | ||
102 | branch-prediction vulnerability. | ||
103 | |||
104 | -- Colin Watson <cjwatson@debian.org> Tue, 03 Apr 2018 12:40:24 +0100 | ||
105 | |||
106 | openssh (1:7.6p1-5) unstable; urgency=medium | ||
107 | |||
108 | * Explicitly build-depend on pkg-config, rather than implicitly | ||
109 | build-depending on it via libgtk-3-dev (thanks, Aurelien Jarno; closes: | ||
110 | #894558). | ||
111 | |||
112 | -- Colin Watson <cjwatson@debian.org> Sun, 01 Apr 2018 21:37:19 +0100 | ||
113 | |||
1 | openssh (1:7.6p1-4) unstable; urgency=medium | 114 | openssh (1:7.6p1-4) unstable; urgency=medium |
2 | 115 | ||
3 | * Move VCS to salsa.debian.org. | 116 | * Move VCS to salsa.debian.org. |
diff --git a/debian/control b/debian/control index 541753a8e..4452e62b0 100644 --- a/debian/control +++ b/debian/control | |||
@@ -16,6 +16,7 @@ Build-Depends: autotools-dev, | |||
16 | libssl1.0-dev | libssl-dev (<< 1.1.0~), | 16 | libssl1.0-dev | libssl-dev (<< 1.1.0~), |
17 | libsystemd-dev [linux-any], | 17 | libsystemd-dev [linux-any], |
18 | libwrap0-dev | libwrap-dev, | 18 | libwrap0-dev | libwrap-dev, |
19 | pkg-config, | ||
19 | zlib1g-dev (>= 1:1.2.3), | 20 | zlib1g-dev (>= 1:1.2.3), |
20 | Standards-Version: 4.1.0 | 21 | Standards-Version: 4.1.0 |
21 | Uploaders: Colin Watson <cjwatson@debian.org>, | 22 | Uploaders: Colin Watson <cjwatson@debian.org>, |
diff --git a/debian/patches/auth-log-verbosity.patch b/debian/patches/auth-log-verbosity.patch deleted file mode 100644 index ba7642d83..000000000 --- a/debian/patches/auth-log-verbosity.patch +++ /dev/null | |||
@@ -1,120 +0,0 @@ | |||
1 | From 50e9edb57b6808cbbf63fe3433febb103baac1e8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Sun, 9 Feb 2014 16:10:02 +0000 | ||
4 | Subject: Quieten logs when multiple from= restrictions are used | ||
5 | |||
6 | Bug-Debian: http://bugs.debian.org/630606 | ||
7 | Forwarded: no | ||
8 | Last-Update: 2017-10-04 | ||
9 | |||
10 | Patch-Name: auth-log-verbosity.patch | ||
11 | --- | ||
12 | auth-options.c | 35 ++++++++++++++++++++++++++--------- | ||
13 | auth-options.h | 1 + | ||
14 | auth2-pubkey.c | 3 +++ | ||
15 | 3 files changed, 30 insertions(+), 9 deletions(-) | ||
16 | |||
17 | diff --git a/auth-options.c b/auth-options.c | ||
18 | index bed00eef..ccdd0b20 100644 | ||
19 | --- a/auth-options.c | ||
20 | +++ b/auth-options.c | ||
21 | @@ -59,10 +59,21 @@ int forced_tun_device = -1; | ||
22 | /* "principals=" option. */ | ||
23 | char *authorized_principals = NULL; | ||
24 | |||
25 | +/* Throttle log messages. */ | ||
26 | +int logged_from_hostip = 0; | ||
27 | +int logged_cert_hostip = 0; | ||
28 | + | ||
29 | extern ServerOptions options; | ||
30 | |||
31 | /* XXX refactor to be stateless */ | ||
32 | |||
33 | +void | ||
34 | +auth_start_parse_options(void) | ||
35 | +{ | ||
36 | + logged_from_hostip = 0; | ||
37 | + logged_cert_hostip = 0; | ||
38 | +} | ||
39 | + | ||
40 | void | ||
41 | auth_clear_options(void) | ||
42 | { | ||
43 | @@ -322,10 +333,13 @@ auth_parse_options(struct passwd *pw, char *opts, const char *file, | ||
44 | /* FALLTHROUGH */ | ||
45 | case 0: | ||
46 | free(patterns); | ||
47 | - logit("Authentication tried for %.100s with " | ||
48 | - "correct key but not from a permitted " | ||
49 | - "host (host=%.200s, ip=%.200s).", | ||
50 | - pw->pw_name, remote_host, remote_ip); | ||
51 | + if (!logged_from_hostip) { | ||
52 | + logit("Authentication tried for %.100s with " | ||
53 | + "correct key but not from a permitted " | ||
54 | + "host (host=%.200s, ip=%.200s).", | ||
55 | + pw->pw_name, remote_host, remote_ip); | ||
56 | + logged_from_hostip = 1; | ||
57 | + } | ||
58 | auth_debug_add("Your host '%.200s' is not " | ||
59 | "permitted to use this key for login.", | ||
60 | remote_host); | ||
61 | @@ -549,11 +563,14 @@ parse_option_list(struct sshbuf *oblob, struct passwd *pw, | ||
62 | break; | ||
63 | case 0: | ||
64 | /* no match */ | ||
65 | - logit("Authentication tried for %.100s " | ||
66 | - "with valid certificate but not " | ||
67 | - "from a permitted host " | ||
68 | - "(ip=%.200s).", pw->pw_name, | ||
69 | - remote_ip); | ||
70 | + if (!logged_cert_hostip) { | ||
71 | + logit("Authentication tried for %.100s " | ||
72 | + "with valid certificate but not " | ||
73 | + "from a permitted host " | ||
74 | + "(ip=%.200s).", pw->pw_name, | ||
75 | + remote_ip); | ||
76 | + logged_cert_hostip = 1; | ||
77 | + } | ||
78 | auth_debug_add("Your address '%.200s' " | ||
79 | "is not permitted to use this " | ||
80 | "certificate for login.", | ||
81 | diff --git a/auth-options.h b/auth-options.h | ||
82 | index 547f0163..4de0f14d 100644 | ||
83 | --- a/auth-options.h | ||
84 | +++ b/auth-options.h | ||
85 | @@ -33,6 +33,7 @@ extern int forced_tun_device; | ||
86 | extern int key_is_cert_authority; | ||
87 | extern char *authorized_principals; | ||
88 | |||
89 | +void auth_start_parse_options(void); | ||
90 | int auth_parse_options(struct passwd *, char *, const char *, u_long); | ||
91 | void auth_clear_options(void); | ||
92 | int auth_cert_options(struct sshkey *, struct passwd *, const char **); | ||
93 | diff --git a/auth2-pubkey.c b/auth2-pubkey.c | ||
94 | index 169839b0..43f880b6 100644 | ||
95 | --- a/auth2-pubkey.c | ||
96 | +++ b/auth2-pubkey.c | ||
97 | @@ -269,6 +269,7 @@ process_principals(FILE *f, const char *file, struct passwd *pw, | ||
98 | u_long linenum = 0; | ||
99 | u_int i, found_principal = 0; | ||
100 | |||
101 | + auth_start_parse_options(); | ||
102 | while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { | ||
103 | /* Always consume entire input */ | ||
104 | if (found_principal) | ||
105 | @@ -471,6 +472,7 @@ check_authkeys_file(FILE *f, char *file, struct sshkey *key, struct passwd *pw) | ||
106 | u_long linenum = 0; | ||
107 | struct sshkey *found = NULL; | ||
108 | |||
109 | + auth_start_parse_options(); | ||
110 | while (read_keyfile_line(f, file, line, sizeof(line), &linenum) != -1) { | ||
111 | char *cp, *key_options = NULL, *fp = NULL; | ||
112 | const char *reason = NULL; | ||
113 | @@ -624,6 +626,7 @@ user_cert_trusted_ca(struct passwd *pw, struct sshkey *key) | ||
114 | if (sshkey_cert_check_authority(key, 0, 1, | ||
115 | use_authorized_principals ? NULL : pw->pw_name, &reason) != 0) | ||
116 | goto fail_reason; | ||
117 | + auth_start_parse_options(); | ||
118 | if (auth_cert_options(key, pw, &reason) != 0) | ||
119 | goto fail_reason; | ||
120 | |||
diff --git a/debian/patches/authorized-keys-man-symlink.patch b/debian/patches/authorized-keys-man-symlink.patch index 56f6de37f..239c36f78 100644 --- a/debian/patches/authorized-keys-man-symlink.patch +++ b/debian/patches/authorized-keys-man-symlink.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 312eb64a9faf4e8cdb95f2ae147ecbfa6c0efd83 Mon Sep 17 00:00:00 2001 | 1 | From 66488db1ed04b4ca150ec530ed212fa46a653c1a Mon Sep 17 00:00:00 2001 |
2 | From: Tomas Pospisek <tpo_deb@sourcepole.ch> | 2 | From: Tomas Pospisek <tpo_deb@sourcepole.ch> |
3 | Date: Sun, 9 Feb 2014 16:10:07 +0000 | 3 | Date: Sun, 9 Feb 2014 16:10:07 +0000 |
4 | Subject: Install authorized_keys(5) as a symlink to sshd(8) | 4 | Subject: 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 | ||
15 | diff --git a/Makefile.in b/Makefile.in | 15 | diff --git a/Makefile.in b/Makefile.in |
16 | index f6e9fe4c..08b989a4 100644 | 16 | index 6f3f042b..1afb4f79 100644 |
17 | --- a/Makefile.in | 17 | --- a/Makefile.in |
18 | +++ b/Makefile.in | 18 | +++ b/Makefile.in |
19 | @@ -340,6 +340,7 @@ install-files: | 19 | @@ -352,6 +352,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 8134afba4..b1338d2c7 100644 --- a/debian/patches/debian-banner.patch +++ b/debian/patches/debian-banner.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From ae96c03ce51af2c529bfa2f2de57f4fa938ea552 Mon Sep 17 00:00:00 2001 | 1 | From 9ec4db016a0510c449f9cefeb3299c2e755698c7 Mon Sep 17 00:00:00 2001 |
2 | From: Kees Cook <kees@debian.org> | 2 | From: Kees Cook <kees@debian.org> |
3 | Date: Sun, 9 Feb 2014 16:10:06 +0000 | 3 | Date: Sun, 9 Feb 2014 16:10:06 +0000 |
4 | Subject: Add DebianBanner server configuration option | 4 | Subject: Add DebianBanner server configuration option |
@@ -8,7 +8,7 @@ initial protocol handshake, for those scared by package-versioning.patch. | |||
8 | 8 | ||
9 | Bug-Debian: http://bugs.debian.org/562048 | 9 | Bug-Debian: http://bugs.debian.org/562048 |
10 | Forwarded: not-needed | 10 | Forwarded: not-needed |
11 | Last-Update: 2017-10-04 | 11 | Last-Update: 2018-04-03 |
12 | 12 | ||
13 | Patch-Name: debian-banner.patch | 13 | Patch-Name: debian-banner.patch |
14 | --- | 14 | --- |
@@ -19,10 +19,10 @@ Patch-Name: debian-banner.patch | |||
19 | 4 files changed, 18 insertions(+), 1 deletion(-) | 19 | 4 files changed, 18 insertions(+), 1 deletion(-) |
20 | 20 | ||
21 | diff --git a/servconf.c b/servconf.c | 21 | diff --git a/servconf.c b/servconf.c |
22 | index 9889fb0a..b0146405 100644 | 22 | index 3fff3d53..0a8f6fd6 100644 |
23 | --- a/servconf.c | 23 | --- a/servconf.c |
24 | +++ b/servconf.c | 24 | +++ b/servconf.c |
25 | @@ -167,6 +167,7 @@ initialize_server_options(ServerOptions *options) | 25 | @@ -177,6 +177,7 @@ initialize_server_options(ServerOptions *options) |
26 | options->fingerprint_hash = -1; | 26 | options->fingerprint_hash = -1; |
27 | options->disable_forwarding = -1; | 27 | options->disable_forwarding = -1; |
28 | options->expose_userauth_info = -1; | 28 | options->expose_userauth_info = -1; |
@@ -30,7 +30,7 @@ index 9889fb0a..b0146405 100644 | |||
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 | @@ -342,6 +343,8 @@ fill_default_server_options(ServerOptions *options) | 33 | @@ -393,6 +394,8 @@ fill_default_server_options(ServerOptions *options) |
34 | options->disable_forwarding = 0; | 34 | options->disable_forwarding = 0; |
35 | if (options->expose_userauth_info == -1) | 35 | if (options->expose_userauth_info == -1) |
36 | options->expose_userauth_info = 0; | 36 | options->expose_userauth_info = 0; |
@@ -39,38 +39,38 @@ index 9889fb0a..b0146405 100644 | |||
39 | 39 | ||
40 | assemble_algorithms(options); | 40 | assemble_algorithms(options); |
41 | 41 | ||
42 | @@ -429,6 +432,7 @@ typedef enum { | 42 | @@ -480,6 +483,7 @@ typedef enum { |
43 | sStreamLocalBindMask, sStreamLocalBindUnlink, | 43 | sStreamLocalBindMask, sStreamLocalBindUnlink, |
44 | sAllowStreamLocalForwarding, sFingerprintHash, sDisableForwarding, | 44 | sAllowStreamLocalForwarding, sFingerprintHash, sDisableForwarding, |
45 | sExposeAuthInfo, | 45 | sExposeAuthInfo, sRDomain, |
46 | + sDebianBanner, | 46 | + sDebianBanner, |
47 | sDeprecated, sIgnore, sUnsupported | 47 | sDeprecated, sIgnore, sUnsupported |
48 | } ServerOpCodes; | 48 | } ServerOpCodes; |
49 | 49 | ||
50 | @@ -582,6 +586,7 @@ static struct { | 50 | @@ -634,6 +638,7 @@ static struct { |
51 | { "fingerprinthash", sFingerprintHash, SSHCFG_GLOBAL }, | ||
52 | { "disableforwarding", sDisableForwarding, SSHCFG_ALL }, | 51 | { "disableforwarding", sDisableForwarding, SSHCFG_ALL }, |
53 | { "exposeauthinfo", sExposeAuthInfo, SSHCFG_ALL }, | 52 | { "exposeauthinfo", sExposeAuthInfo, SSHCFG_ALL }, |
53 | { "rdomain", sRDomain, 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 | @@ -1907,6 +1912,10 @@ process_server_config_line(ServerOptions *options, char *line, | 58 | @@ -2056,6 +2061,10 @@ process_server_config_line(ServerOptions *options, char *line, |
59 | intptr = &options->expose_userauth_info; | 59 | *charptr = xstrdup(arg); |
60 | goto parse_flag; | 60 | break; |
61 | 61 | ||
62 | + case sDebianBanner: | 62 | + case sDebianBanner: |
63 | + intptr = &options->debian_banner; | 63 | + intptr = &options->debian_banner; |
64 | + goto parse_int; | 64 | + goto parse_flag; |
65 | + | 65 | + |
66 | case sDeprecated: | 66 | case sDeprecated: |
67 | case sIgnore: | 67 | case sIgnore: |
68 | case sUnsupported: | 68 | case sUnsupported: |
69 | diff --git a/servconf.h b/servconf.h | 69 | diff --git a/servconf.h b/servconf.h |
70 | index 641e93c8..410c4275 100644 | 70 | index 5dfc9bc0..b0fa7045 100644 |
71 | --- a/servconf.h | 71 | --- a/servconf.h |
72 | +++ b/servconf.h | 72 | +++ b/servconf.h |
73 | @@ -200,6 +200,8 @@ typedef struct { | 73 | @@ -211,6 +211,8 @@ typedef struct { |
74 | 74 | ||
75 | int fingerprint_hash; | 75 | int fingerprint_hash; |
76 | int expose_userauth_info; | 76 | int expose_userauth_info; |
@@ -80,10 +80,10 @@ index 641e93c8..410c4275 100644 | |||
80 | 80 | ||
81 | /* Information about the incoming connection as used by Match */ | 81 | /* Information about the incoming connection as used by Match */ |
82 | diff --git a/sshd.c b/sshd.c | 82 | diff --git a/sshd.c b/sshd.c |
83 | index eccf81bb..a5a1193d 100644 | 83 | index 9a7f5495..1d645a17 100644 |
84 | --- a/sshd.c | 84 | --- a/sshd.c |
85 | +++ b/sshd.c | 85 | +++ b/sshd.c |
86 | @@ -378,7 +378,8 @@ sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out) | 86 | @@ -384,7 +384,8 @@ sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out) |
87 | char remote_version[256]; /* Must be at least as big as buf. */ | 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\r\n", | 89 | xasprintf(&server_version_string, "SSH-%d.%d-%.100s%s%s\r\n", |
@@ -94,10 +94,10 @@ index eccf81bb..a5a1193d 100644 | |||
94 | options.version_addendum); | 94 | options.version_addendum); |
95 | 95 | ||
96 | diff --git a/sshd_config.5 b/sshd_config.5 | 96 | diff --git a/sshd_config.5 b/sshd_config.5 |
97 | index 7db25552..41e8c939 100644 | 97 | index 1a1c6dd0..45044a70 100644 |
98 | --- a/sshd_config.5 | 98 | --- a/sshd_config.5 |
99 | +++ b/sshd_config.5 | 99 | +++ b/sshd_config.5 |
100 | @@ -530,6 +530,11 @@ or | 100 | @@ -531,6 +531,11 @@ or |
101 | .Cm no . | 101 | .Cm no . |
102 | The default is | 102 | The default is |
103 | .Cm yes . | 103 | .Cm yes . |
diff --git a/debian/patches/debian-config.patch b/debian/patches/debian-config.patch index a3f595752..ebf5d23bc 100644 --- a/debian/patches/debian-config.patch +++ b/debian/patches/debian-config.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 4847e512c0b94c615b838904a5f139a761bee284 Mon Sep 17 00:00:00 2001 | 1 | From e8e09061f8168f6f105f56fca10b6cd61b9f587a Mon Sep 17 00:00:00 2001 |
2 | From: Colin Watson <cjwatson@debian.org> | 2 | From: Colin Watson <cjwatson@debian.org> |
3 | Date: Sun, 9 Feb 2014 16:10:18 +0000 | 3 | Date: Sun, 9 Feb 2014 16:10:18 +0000 |
4 | Subject: Various Debian-specific configuration changes | 4 | Subject: Various Debian-specific configuration changes |
@@ -39,10 +39,10 @@ Patch-Name: debian-config.patch | |||
39 | 6 files changed, 77 insertions(+), 9 deletions(-) | 39 | 6 files changed, 77 insertions(+), 9 deletions(-) |
40 | 40 | ||
41 | diff --git a/readconf.c b/readconf.c | 41 | diff --git a/readconf.c b/readconf.c |
42 | index be3d5873..41f36aa8 100644 | 42 | index 50349e23..efcf2d62 100644 |
43 | --- a/readconf.c | 43 | --- a/readconf.c |
44 | +++ b/readconf.c | 44 | +++ b/readconf.c |
45 | @@ -1940,7 +1940,7 @@ fill_default_options(Options * options) | 45 | @@ -1916,7 +1916,7 @@ fill_default_options(Options * options) |
46 | if (options->forward_x11 == -1) | 46 | if (options->forward_x11 == -1) |
47 | options->forward_x11 = 0; | 47 | options->forward_x11 = 0; |
48 | if (options->forward_x11_trusted == -1) | 48 | if (options->forward_x11_trusted == -1) |
@@ -52,10 +52,10 @@ index be3d5873..41f36aa8 100644 | |||
52 | options->forward_x11_timeout = 1200; | 52 | options->forward_x11_timeout = 1200; |
53 | /* | 53 | /* |
54 | diff --git a/ssh.1 b/ssh.1 | 54 | diff --git a/ssh.1 b/ssh.1 |
55 | index 711fe608..f1b01c56 100644 | 55 | index f8fc26d2..8a03db95 100644 |
56 | --- a/ssh.1 | 56 | --- a/ssh.1 |
57 | +++ b/ssh.1 | 57 | +++ b/ssh.1 |
58 | @@ -764,6 +764,16 @@ directive in | 58 | @@ -768,6 +768,16 @@ directive in |
59 | .Xr ssh_config 5 | 59 | .Xr ssh_config 5 |
60 | for more information. | 60 | for more information. |
61 | .Pp | 61 | .Pp |
@@ -72,7 +72,7 @@ index 711fe608..f1b01c56 100644 | |||
72 | .It Fl x | 72 | .It Fl x |
73 | Disables X11 forwarding. | 73 | Disables X11 forwarding. |
74 | .Pp | 74 | .Pp |
75 | @@ -772,6 +782,17 @@ Enables trusted X11 forwarding. | 75 | @@ -776,6 +786,17 @@ Enables trusted X11 forwarding. |
76 | Trusted X11 forwardings are not subjected to the X11 SECURITY extension | 76 | Trusted X11 forwardings are not subjected to the X11 SECURITY extension |
77 | controls. | 77 | controls. |
78 | .Pp | 78 | .Pp |
@@ -114,7 +114,7 @@ index bcb9f153..1b676fb2 100644 | |||
114 | + HashKnownHosts yes | 114 | + HashKnownHosts yes |
115 | + GSSAPIAuthentication yes | 115 | + GSSAPIAuthentication yes |
116 | diff --git a/ssh_config.5 b/ssh_config.5 | 116 | diff --git a/ssh_config.5 b/ssh_config.5 |
117 | index 1edfe761..2da7029a 100644 | 117 | index ca052884..ed6e5d02 100644 |
118 | --- a/ssh_config.5 | 118 | --- a/ssh_config.5 |
119 | +++ b/ssh_config.5 | 119 | +++ b/ssh_config.5 |
120 | @@ -71,6 +71,22 @@ Since the first obtained value for each parameter is used, more | 120 | @@ -71,6 +71,22 @@ Since the first obtained value for each parameter is used, more |
@@ -140,7 +140,7 @@ index 1edfe761..2da7029a 100644 | |||
140 | The file contains keyword-argument pairs, one per line. | 140 | The file contains keyword-argument pairs, one per line. |
141 | Lines starting with | 141 | Lines starting with |
142 | .Ql # | 142 | .Ql # |
143 | @@ -683,11 +699,12 @@ elapsed. | 143 | @@ -690,11 +706,12 @@ elapsed. |
144 | .It Cm ForwardX11Trusted | 144 | .It Cm ForwardX11Trusted |
145 | If this option is set to | 145 | If this option is set to |
146 | .Cm yes , | 146 | .Cm yes , |
@@ -155,10 +155,10 @@ index 1edfe761..2da7029a 100644 | |||
155 | from stealing or tampering with data belonging to trusted X11 | 155 | from stealing or tampering with data belonging to trusted X11 |
156 | clients. | 156 | clients. |
157 | diff --git a/sshd_config b/sshd_config | 157 | diff --git a/sshd_config b/sshd_config |
158 | index c01dd656..f68edf36 100644 | 158 | index 86263d71..de9cc9fe 100644 |
159 | --- a/sshd_config | 159 | --- a/sshd_config |
160 | +++ b/sshd_config | 160 | +++ b/sshd_config |
161 | @@ -58,8 +58,9 @@ AuthorizedKeysFile .ssh/authorized_keys | 161 | @@ -57,8 +57,9 @@ AuthorizedKeysFile .ssh/authorized_keys |
162 | #PasswordAuthentication yes | 162 | #PasswordAuthentication yes |
163 | #PermitEmptyPasswords no | 163 | #PermitEmptyPasswords no |
164 | 164 | ||
@@ -170,7 +170,7 @@ index c01dd656..f68edf36 100644 | |||
170 | 170 | ||
171 | # Kerberos options | 171 | # Kerberos options |
172 | #KerberosAuthentication no | 172 | #KerberosAuthentication no |
173 | @@ -82,16 +83,16 @@ AuthorizedKeysFile .ssh/authorized_keys | 173 | @@ -81,16 +82,16 @@ AuthorizedKeysFile .ssh/authorized_keys |
174 | # If you just want the PAM account and session checks to run without | 174 | # If you just want the PAM account and session checks to run without |
175 | # PAM authentication, then enable this but set PasswordAuthentication | 175 | # PAM authentication, then enable this but set PasswordAuthentication |
176 | # and ChallengeResponseAuthentication to 'no'. | 176 | # and ChallengeResponseAuthentication to 'no'. |
@@ -190,7 +190,7 @@ index c01dd656..f68edf36 100644 | |||
190 | #PrintLastLog yes | 190 | #PrintLastLog yes |
191 | #TCPKeepAlive yes | 191 | #TCPKeepAlive yes |
192 | #UseLogin no | 192 | #UseLogin no |
193 | @@ -109,8 +110,11 @@ AuthorizedKeysFile .ssh/authorized_keys | 193 | @@ -108,8 +109,11 @@ AuthorizedKeysFile .ssh/authorized_keys |
194 | # no default banner path | 194 | # no default banner path |
195 | #Banner none | 195 | #Banner none |
196 | 196 | ||
@@ -204,10 +204,10 @@ index c01dd656..f68edf36 100644 | |||
204 | # Example of overriding settings on a per-user basis | 204 | # Example of overriding settings on a per-user basis |
205 | #Match User anoncvs | 205 | #Match User anoncvs |
206 | diff --git a/sshd_config.5 b/sshd_config.5 | 206 | diff --git a/sshd_config.5 b/sshd_config.5 |
207 | index 79676a95..16be4f62 100644 | 207 | index 44b91846..4c7ee425 100644 |
208 | --- a/sshd_config.5 | 208 | --- a/sshd_config.5 |
209 | +++ b/sshd_config.5 | 209 | +++ b/sshd_config.5 |
210 | @@ -55,6 +55,28 @@ Arguments may optionally be enclosed in double quotes | 210 | @@ -56,6 +56,28 @@ Arguments may optionally be enclosed in double quotes |
211 | .Pq \&" | 211 | .Pq \&" |
212 | in order to represent arguments containing spaces. | 212 | in order to represent arguments containing spaces. |
213 | .Pp | 213 | .Pp |
diff --git a/debian/patches/dnssec-sshfp.patch b/debian/patches/dnssec-sshfp.patch index a8d98855a..0ba825f4e 100644 --- a/debian/patches/dnssec-sshfp.patch +++ b/debian/patches/dnssec-sshfp.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From f500e89e2310f6308a998357d72d767e3b01553c Mon Sep 17 00:00:00 2001 | 1 | From 8c11a03efd47de883b52838735d6890ca8d4d9f8 Mon Sep 17 00:00:00 2001 |
2 | From: Colin Watson <cjwatson@debian.org> | 2 | From: Colin Watson <cjwatson@debian.org> |
3 | Date: Sun, 9 Feb 2014 16:10:01 +0000 | 3 | Date: Sun, 9 Feb 2014 16:10:01 +0000 |
4 | Subject: Force use of DNSSEC even if "options edns0" isn't in resolv.conf | 4 | Subject: Force use of DNSSEC even if "options edns0" isn't in resolv.conf |
@@ -18,10 +18,10 @@ Patch-Name: dnssec-sshfp.patch | |||
18 | 3 files changed, 21 insertions(+), 6 deletions(-) | 18 | 3 files changed, 21 insertions(+), 6 deletions(-) |
19 | 19 | ||
20 | diff --git a/dns.c b/dns.c | 20 | diff --git a/dns.c b/dns.c |
21 | index 6e1abb53..8e0ca691 100644 | 21 | index ff1a2c41..82ec9719 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 | @@ -211,6 +211,7 @@ verify_host_key_dns(const char *hostname, struct sockaddr *address, |
25 | { | 25 | { |
26 | u_int counter; | 26 | u_int counter; |
27 | int result; | 27 | int result; |
@@ -29,7 +29,7 @@ index 6e1abb53..8e0ca691 100644 | |||
29 | struct rrsetinfo *fingerprints = NULL; | 29 | struct rrsetinfo *fingerprints = NULL; |
30 | 30 | ||
31 | u_int8_t hostkey_algorithm; | 31 | u_int8_t hostkey_algorithm; |
32 | @@ -229,8 +230,19 @@ verify_host_key_dns(const char *hostname, struct sockaddr *address, | 32 | @@ -234,8 +235,19 @@ verify_host_key_dns(const char *hostname, struct sockaddr *address, |
33 | return -1; | 33 | return -1; |
34 | } | 34 | } |
35 | 35 | ||
diff --git a/debian/patches/doc-hash-tab-completion.patch b/debian/patches/doc-hash-tab-completion.patch index c4342181d..86f3a1fc4 100644 --- a/debian/patches/doc-hash-tab-completion.patch +++ b/debian/patches/doc-hash-tab-completion.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From a07f7c1fe9d8dc3bfe4cb8bbe6bb5a27b638d024 Mon Sep 17 00:00:00 2001 | 1 | From 6765f629a8f5416b133d26e023a201193c33d8b5 Mon Sep 17 00:00:00 2001 |
2 | From: Colin Watson <cjwatson@debian.org> | 2 | From: Colin Watson <cjwatson@debian.org> |
3 | Date: Sun, 9 Feb 2014 16:10:11 +0000 | 3 | Date: Sun, 9 Feb 2014 16:10:11 +0000 |
4 | Subject: Document that HashKnownHosts may break tab-completion | 4 | Subject: 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 | ||
15 | diff --git a/ssh_config.5 b/ssh_config.5 | 15 | diff --git a/ssh_config.5 b/ssh_config.5 |
16 | index 7810a418..1edfe761 100644 | 16 | index 84dcd52c..ca052884 100644 |
17 | --- a/ssh_config.5 | 17 | --- a/ssh_config.5 |
18 | +++ b/ssh_config.5 | 18 | +++ b/ssh_config.5 |
19 | @@ -777,6 +777,9 @@ Note that existing names and addresses in known hosts files | 19 | @@ -784,6 +784,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/fix-regress-putty-transfer.patch b/debian/patches/fix-regress-putty-transfer.patch deleted file mode 100644 index cfec3a9d2..000000000 --- a/debian/patches/fix-regress-putty-transfer.patch +++ /dev/null | |||
@@ -1,37 +0,0 @@ | |||
1 | From bd081a1ae125c7c6b2cfec89746d1298a306ad78 Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Tue, 16 Jan 2018 17:38:36 +0000 | ||
4 | Subject: Fix putty-transfer regression test | ||
5 | |||
6 | The test key file is still called putty.rsa2, not putty.rsa. | ||
7 | |||
8 | Forwarded: no | ||
9 | Last-Update: 2018-01-16 | ||
10 | |||
11 | Patch-Name: fix-regress-putty-transfer.patch | ||
12 | --- | ||
13 | regress/putty-transfer.sh | 4 ++-- | ||
14 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
15 | |||
16 | diff --git a/regress/putty-transfer.sh b/regress/putty-transfer.sh | ||
17 | index 32c79f9e..57e46540 100644 | ||
18 | --- a/regress/putty-transfer.sh | ||
19 | +++ b/regress/putty-transfer.sh | ||
20 | @@ -15,7 +15,7 @@ for c in 0 1 ; do | ||
21 | ${OBJ}/.putty/sessions/compression_$c | ||
22 | echo "Compression=$c" >> ${OBJ}/.putty/sessions/kex_$k | ||
23 | env HOME=$PWD ${PLINK} -load compression_$c -batch \ | ||
24 | - -i putty.rsa cat ${DATA} > ${COPY} | ||
25 | + -i putty.rsa2 cat ${DATA} > ${COPY} | ||
26 | if [ $? -ne 0 ]; then | ||
27 | fail "ssh cat $DATA failed" | ||
28 | fi | ||
29 | @@ -26,7 +26,7 @@ for c in 0 1 ; do | ||
30 | rm -f ${COPY} | ||
31 | dd if=$DATA obs=${s} 2> /dev/null | \ | ||
32 | env HOME=$PWD ${PLINK} -load compression_$c \ | ||
33 | - -batch -i putty.rsa \ | ||
34 | + -batch -i putty.rsa2 \ | ||
35 | "cat > ${COPY}" | ||
36 | if [ $? -ne 0 ]; then | ||
37 | fail "ssh cat $DATA failed" | ||
diff --git a/debian/patches/gnome-ssh-askpass2-icon.patch b/debian/patches/gnome-ssh-askpass2-icon.patch index e46c0f8b2..2959854e4 100644 --- a/debian/patches/gnome-ssh-askpass2-icon.patch +++ b/debian/patches/gnome-ssh-askpass2-icon.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 18950b79898be885c6b77d463367639647e54e28 Mon Sep 17 00:00:00 2001 | 1 | From 4ccb07d2ebea1b01b56a455790224ce97a0b36e8 Mon Sep 17 00:00:00 2001 |
2 | From: Vincent Untz <vuntz@ubuntu.com> | 2 | From: Vincent Untz <vuntz@ubuntu.com> |
3 | Date: Sun, 9 Feb 2014 16:10:16 +0000 | 3 | Date: Sun, 9 Feb 2014 16:10:16 +0000 |
4 | Subject: Give the ssh-askpass-gnome window a default icon | 4 | Subject: Give the ssh-askpass-gnome window a default icon |
diff --git a/debian/patches/gssapi.patch b/debian/patches/gssapi.patch index 0726a5020..a67ebced0 100644 --- a/debian/patches/gssapi.patch +++ b/debian/patches/gssapi.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 4e70490950e5c5134df48848affaf73685bf0284 Mon Sep 17 00:00:00 2001 | 1 | From cb427e23bf78d65407c78d868c4ef525dbfaa68f Mon Sep 17 00:00:00 2001 |
2 | From: Simon Wilkinson <simon@sxw.org.uk> | 2 | From: Simon Wilkinson <simon@sxw.org.uk> |
3 | Date: Sun, 9 Feb 2014 16:09:48 +0000 | 3 | Date: Sun, 9 Feb 2014 16:09:48 +0000 |
4 | Subject: GSSAPI key exchange support | 4 | Subject: GSSAPI key exchange support |
@@ -181,10 +181,10 @@ index 00000000..f117a336 | |||
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> |
183 | diff --git a/Makefile.in b/Makefile.in | 183 | diff --git a/Makefile.in b/Makefile.in |
184 | index c52ce191..f6e9fe4c 100644 | 184 | index 04e1c8e5..6f3f042b 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 | @@ -100,6 +100,7 @@ LIBSSH_OBJS=${LIBOPENSSH_OBJS} \ |
188 | kex.o kexdh.o kexgex.o kexecdh.o kexc25519.o \ | 188 | kex.o kexdh.o kexgex.o kexecdh.o kexc25519.o \ |
189 | kexdhc.o kexgexc.o kexecdhc.o kexc25519c.o \ | 189 | kexdhc.o kexgexc.o kexecdhc.o kexc25519c.o \ |
190 | kexdhs.o kexgexs.o kexecdhs.o kexc25519s.o \ | 190 | kexdhs.o kexgexs.o kexecdhs.o kexc25519s.o \ |
@@ -192,7 +192,7 @@ index c52ce191..f6e9fe4c 100644 | |||
192 | platform-pledge.o platform-tracing.o platform-misc.o | 192 | platform-pledge.o platform-tracing.o platform-misc.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 \ | 195 | @@ -113,7 +114,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.o monitor_wrap.o auth-krb5.o \ | 198 | monitor.o monitor_wrap.o auth-krb5.o \ |
@@ -253,10 +253,10 @@ index a5a81ed2..38e7fee2 100644 | |||
253 | return (krb5_cc_resolve(ctx, ccname, ccache)); | 253 | return (krb5_cc_resolve(ctx, ccname, ccache)); |
254 | } | 254 | } |
255 | diff --git a/auth.c b/auth.c | 255 | diff --git a/auth.c b/auth.c |
256 | index a4490617..6aec3605 100644 | 256 | index 63366768..76d586e3 100644 |
257 | --- a/auth.c | 257 | --- a/auth.c |
258 | +++ b/auth.c | 258 | +++ b/auth.c |
259 | @@ -395,7 +395,8 @@ auth_root_allowed(const char *method) | 259 | @@ -396,7 +396,8 @@ auth_root_allowed(struct ssh *ssh, 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 a4490617..6aec3605 100644 | |||
266 | return 1; | 266 | return 1; |
267 | break; | 267 | break; |
268 | case PERMIT_FORCED_ONLY: | 268 | case PERMIT_FORCED_ONLY: |
269 | @@ -727,99 +728,6 @@ fakepw(void) | 269 | @@ -728,99 +729,6 @@ fakepw(void) |
270 | return (&fake); | 270 | return (&fake); |
271 | } | 271 | } |
272 | 272 | ||
@@ -455,7 +455,7 @@ index 589283b7..fd411d3a 100644 | |||
455 | "gssapi-with-mic", | 455 | "gssapi-with-mic", |
456 | userauth_gssapi, | 456 | userauth_gssapi, |
457 | diff --git a/auth2.c b/auth2.c | 457 | diff --git a/auth2.c b/auth2.c |
458 | index 862e0996..54070e3a 100644 | 458 | index e0034229..c34f58c4 100644 |
459 | --- a/auth2.c | 459 | --- a/auth2.c |
460 | +++ b/auth2.c | 460 | +++ b/auth2.c |
461 | @@ -72,6 +72,7 @@ extern Authmethod method_passwd; | 461 | @@ -72,6 +72,7 @@ extern Authmethod method_passwd; |
@@ -593,7 +593,7 @@ index 26d62855..0cadc9f1 100644 | |||
593 | int get_peer_port(int); | 593 | int get_peer_port(int); |
594 | char *get_local_ipaddr(int); | 594 | char *get_local_ipaddr(int); |
595 | diff --git a/clientloop.c b/clientloop.c | 595 | diff --git a/clientloop.c b/clientloop.c |
596 | index 791d336e..0010b833 100644 | 596 | index 7bcf22e3..ef803e98 100644 |
597 | --- a/clientloop.c | 597 | --- a/clientloop.c |
598 | +++ b/clientloop.c | 598 | +++ b/clientloop.c |
599 | @@ -112,6 +112,10 @@ | 599 | @@ -112,6 +112,10 @@ |
@@ -607,7 +607,7 @@ index 791d336e..0010b833 100644 | |||
607 | /* import options */ | 607 | /* import options */ |
608 | extern Options options; | 608 | extern Options options; |
609 | 609 | ||
610 | @@ -1349,9 +1353,18 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg, | 610 | @@ -1335,9 +1339,18 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg, |
611 | break; | 611 | break; |
612 | 612 | ||
613 | /* Do channel operations unless rekeying in progress. */ | 613 | /* Do channel operations unless rekeying in progress. */ |
@@ -628,10 +628,10 @@ index 791d336e..0010b833 100644 | |||
628 | client_process_net_input(readset); | 628 | client_process_net_input(readset); |
629 | 629 | ||
630 | diff --git a/config.h.in b/config.h.in | 630 | diff --git a/config.h.in b/config.h.in |
631 | index 63fc548b..0b244fd5 100644 | 631 | index 57208740..4c9545c7 100644 |
632 | --- a/config.h.in | 632 | --- a/config.h.in |
633 | +++ b/config.h.in | 633 | +++ b/config.h.in |
634 | @@ -1696,6 +1696,9 @@ | 634 | @@ -1746,6 +1746,9 @@ |
635 | /* Use btmp to log bad logins */ | 635 | /* Use btmp to log bad logins */ |
636 | #undef USE_BTMP | 636 | #undef USE_BTMP |
637 | 637 | ||
@@ -641,7 +641,7 @@ index 63fc548b..0b244fd5 100644 | |||
641 | /* Use libedit for sftp */ | 641 | /* Use libedit for sftp */ |
642 | #undef USE_LIBEDIT | 642 | #undef USE_LIBEDIT |
643 | 643 | ||
644 | @@ -1711,6 +1714,9 @@ | 644 | @@ -1761,6 +1764,9 @@ |
645 | /* Use PIPES instead of a socketpair() */ | 645 | /* Use PIPES instead of a socketpair() */ |
646 | #undef USE_PIPES | 646 | #undef USE_PIPES |
647 | 647 | ||
@@ -652,10 +652,10 @@ index 63fc548b..0b244fd5 100644 | |||
652 | #undef USE_SOLARIS_PRIVS | 652 | #undef USE_SOLARIS_PRIVS |
653 | 653 | ||
654 | diff --git a/configure.ac b/configure.ac | 654 | diff --git a/configure.ac b/configure.ac |
655 | index 889f5063..84bfad8c 100644 | 655 | index 663062be..1cd5eab6 100644 |
656 | --- a/configure.ac | 656 | --- a/configure.ac |
657 | +++ b/configure.ac | 657 | +++ b/configure.ac |
658 | @@ -621,6 +621,30 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) | 658 | @@ -664,6 +664,30 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) |
659 | [Use tunnel device compatibility to OpenBSD]) | 659 | [Use tunnel device compatibility to OpenBSD]) |
660 | AC_DEFINE([SSH_TUN_PREPEND_AF], [1], | 660 | AC_DEFINE([SSH_TUN_PREPEND_AF], [1], |
661 | [Prepend the address family to IP tunnel traffic]) | 661 | [Prepend the address family to IP tunnel traffic]) |
@@ -1435,7 +1435,7 @@ index 6cae720e..967c6cfb 100644 | |||
1435 | 1435 | ||
1436 | /* Privileged */ | 1436 | /* Privileged */ |
1437 | diff --git a/kex.c b/kex.c | 1437 | diff --git a/kex.c b/kex.c |
1438 | index d5d5a9da..bb1bd661 100644 | 1438 | index 15ea28b0..6cc2935f 100644 |
1439 | --- a/kex.c | 1439 | --- a/kex.c |
1440 | +++ b/kex.c | 1440 | +++ b/kex.c |
1441 | @@ -54,6 +54,10 @@ | 1441 | @@ -54,6 +54,10 @@ |
@@ -1475,7 +1475,7 @@ index d5d5a9da..bb1bd661 100644 | |||
1475 | return NULL; | 1475 | return NULL; |
1476 | } | 1476 | } |
1477 | 1477 | ||
1478 | @@ -601,6 +617,9 @@ kex_free(struct kex *kex) | 1478 | @@ -599,6 +615,9 @@ kex_free(struct kex *kex) |
1479 | sshbuf_free(kex->peer); | 1479 | sshbuf_free(kex->peer); |
1480 | sshbuf_free(kex->my); | 1480 | sshbuf_free(kex->my); |
1481 | free(kex->session_id); | 1481 | free(kex->session_id); |
@@ -2170,10 +2170,10 @@ index 00000000..38ca082b | |||
2170 | +} | 2170 | +} |
2171 | +#endif /* GSSAPI */ | 2171 | +#endif /* GSSAPI */ |
2172 | diff --git a/monitor.c b/monitor.c | 2172 | diff --git a/monitor.c b/monitor.c |
2173 | index f517da48..cabfeb8a 100644 | 2173 | index c68e1b0d..868fb0d2 100644 |
2174 | --- a/monitor.c | 2174 | --- a/monitor.c |
2175 | +++ b/monitor.c | 2175 | +++ b/monitor.c |
2176 | @@ -157,6 +157,8 @@ int mm_answer_gss_setup_ctx(int, Buffer *); | 2176 | @@ -158,6 +158,8 @@ int mm_answer_gss_setup_ctx(int, Buffer *); |
2177 | int mm_answer_gss_accept_ctx(int, Buffer *); | 2177 | int mm_answer_gss_accept_ctx(int, Buffer *); |
2178 | int mm_answer_gss_userok(int, Buffer *); | 2178 | int mm_answer_gss_userok(int, Buffer *); |
2179 | int mm_answer_gss_checkmic(int, Buffer *); | 2179 | int mm_answer_gss_checkmic(int, Buffer *); |
@@ -2182,7 +2182,7 @@ index f517da48..cabfeb8a 100644 | |||
2182 | #endif | 2182 | #endif |
2183 | 2183 | ||
2184 | #ifdef SSH_AUDIT_EVENTS | 2184 | #ifdef SSH_AUDIT_EVENTS |
2185 | @@ -230,11 +232,18 @@ struct mon_table mon_dispatch_proto20[] = { | 2185 | @@ -232,11 +234,18 @@ struct mon_table mon_dispatch_proto20[] = { |
2186 | {MONITOR_REQ_GSSSTEP, 0, mm_answer_gss_accept_ctx}, | 2186 | {MONITOR_REQ_GSSSTEP, 0, mm_answer_gss_accept_ctx}, |
2187 | {MONITOR_REQ_GSSUSEROK, MON_ONCE|MON_AUTHDECIDE, mm_answer_gss_userok}, | 2187 | {MONITOR_REQ_GSSUSEROK, MON_ONCE|MON_AUTHDECIDE, mm_answer_gss_userok}, |
2188 | {MONITOR_REQ_GSSCHECKMIC, MON_ONCE, mm_answer_gss_checkmic}, | 2188 | {MONITOR_REQ_GSSCHECKMIC, MON_ONCE, mm_answer_gss_checkmic}, |
@@ -2201,7 +2201,7 @@ index f517da48..cabfeb8a 100644 | |||
2201 | #ifdef WITH_OPENSSL | 2201 | #ifdef WITH_OPENSSL |
2202 | {MONITOR_REQ_MODULI, 0, mm_answer_moduli}, | 2202 | {MONITOR_REQ_MODULI, 0, mm_answer_moduli}, |
2203 | #endif | 2203 | #endif |
2204 | @@ -302,6 +311,10 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor) | 2204 | @@ -306,6 +315,10 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor) |
2205 | /* Permit requests for moduli and signatures */ | 2205 | /* Permit requests for moduli and signatures */ |
2206 | monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1); | 2206 | monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1); |
2207 | monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1); | 2207 | monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1); |
@@ -2212,7 +2212,7 @@ index f517da48..cabfeb8a 100644 | |||
2212 | 2212 | ||
2213 | /* The first few requests do not require asynchronous access */ | 2213 | /* The first few requests do not require asynchronous access */ |
2214 | while (!authenticated) { | 2214 | while (!authenticated) { |
2215 | @@ -408,6 +421,10 @@ monitor_child_postauth(struct monitor *pmonitor) | 2215 | @@ -415,6 +428,10 @@ monitor_child_postauth(struct monitor *pmonitor) |
2216 | monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1); | 2216 | monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1); |
2217 | monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1); | 2217 | monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1); |
2218 | monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1); | 2218 | monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1); |
@@ -2221,9 +2221,9 @@ index f517da48..cabfeb8a 100644 | |||
2221 | + monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1); | 2221 | + monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1); |
2222 | +#endif | 2222 | +#endif |
2223 | 2223 | ||
2224 | if (!no_pty_flag) { | 2224 | if (auth_opts->permit_pty_flag) { |
2225 | monitor_permit(mon_dispatch, MONITOR_REQ_PTY, 1); | 2225 | monitor_permit(mon_dispatch, MONITOR_REQ_PTY, 1); |
2226 | @@ -1626,6 +1643,13 @@ monitor_apply_keystate(struct monitor *pmonitor) | 2226 | @@ -1652,6 +1669,13 @@ monitor_apply_keystate(struct monitor *pmonitor) |
2227 | # endif | 2227 | # endif |
2228 | #endif /* WITH_OPENSSL */ | 2228 | #endif /* WITH_OPENSSL */ |
2229 | kex->kex[KEX_C25519_SHA256] = kexc25519_server; | 2229 | kex->kex[KEX_C25519_SHA256] = kexc25519_server; |
@@ -2237,7 +2237,7 @@ index f517da48..cabfeb8a 100644 | |||
2237 | kex->load_host_public_key=&get_hostkey_public_by_type; | 2237 | kex->load_host_public_key=&get_hostkey_public_by_type; |
2238 | kex->load_host_private_key=&get_hostkey_private_by_type; | 2238 | kex->load_host_private_key=&get_hostkey_private_by_type; |
2239 | kex->host_key_index=&get_hostkey_index; | 2239 | kex->host_key_index=&get_hostkey_index; |
2240 | @@ -1714,8 +1738,8 @@ mm_answer_gss_setup_ctx(int sock, Buffer *m) | 2240 | @@ -1740,8 +1764,8 @@ mm_answer_gss_setup_ctx(int sock, Buffer *m) |
2241 | OM_uint32 major; | 2241 | OM_uint32 major; |
2242 | u_int len; | 2242 | u_int len; |
2243 | 2243 | ||
@@ -2248,7 +2248,7 @@ index f517da48..cabfeb8a 100644 | |||
2248 | 2248 | ||
2249 | goid.elements = buffer_get_string(m, &len); | 2249 | goid.elements = buffer_get_string(m, &len); |
2250 | goid.length = len; | 2250 | goid.length = len; |
2251 | @@ -1744,8 +1768,8 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m) | 2251 | @@ -1770,8 +1794,8 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m) |
2252 | OM_uint32 flags = 0; /* GSI needs this */ | 2252 | OM_uint32 flags = 0; /* GSI needs this */ |
2253 | u_int len; | 2253 | u_int len; |
2254 | 2254 | ||
@@ -2259,7 +2259,7 @@ index f517da48..cabfeb8a 100644 | |||
2259 | 2259 | ||
2260 | in.value = buffer_get_string(m, &len); | 2260 | in.value = buffer_get_string(m, &len); |
2261 | in.length = len; | 2261 | in.length = len; |
2262 | @@ -1764,6 +1788,7 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m) | 2262 | @@ -1790,6 +1814,7 @@ mm_answer_gss_accept_ctx(int sock, Buffer *m) |
2263 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0); | 2263 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0); |
2264 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1); | 2264 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1); |
2265 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1); | 2265 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1); |
@@ -2267,7 +2267,7 @@ index f517da48..cabfeb8a 100644 | |||
2267 | } | 2267 | } |
2268 | return (0); | 2268 | return (0); |
2269 | } | 2269 | } |
2270 | @@ -1775,8 +1800,8 @@ mm_answer_gss_checkmic(int sock, Buffer *m) | 2270 | @@ -1801,8 +1826,8 @@ mm_answer_gss_checkmic(int sock, Buffer *m) |
2271 | OM_uint32 ret; | 2271 | OM_uint32 ret; |
2272 | u_int len; | 2272 | u_int len; |
2273 | 2273 | ||
@@ -2278,7 +2278,7 @@ index f517da48..cabfeb8a 100644 | |||
2278 | 2278 | ||
2279 | gssbuf.value = buffer_get_string(m, &len); | 2279 | gssbuf.value = buffer_get_string(m, &len); |
2280 | gssbuf.length = len; | 2280 | gssbuf.length = len; |
2281 | @@ -1805,10 +1830,11 @@ mm_answer_gss_userok(int sock, Buffer *m) | 2281 | @@ -1831,10 +1856,11 @@ mm_answer_gss_userok(int sock, Buffer *m) |
2282 | int authenticated; | 2282 | int authenticated; |
2283 | const char *displayname; | 2283 | const char *displayname; |
2284 | 2284 | ||
@@ -2293,7 +2293,7 @@ index f517da48..cabfeb8a 100644 | |||
2293 | 2293 | ||
2294 | buffer_clear(m); | 2294 | buffer_clear(m); |
2295 | buffer_put_int(m, authenticated); | 2295 | buffer_put_int(m, authenticated); |
2296 | @@ -1824,5 +1850,76 @@ mm_answer_gss_userok(int sock, Buffer *m) | 2296 | @@ -1850,5 +1876,76 @@ mm_answer_gss_userok(int sock, Buffer *m) |
2297 | /* Monitor loop will terminate if authenticated */ | 2297 | /* Monitor loop will terminate if authenticated */ |
2298 | return (authenticated); | 2298 | return (authenticated); |
2299 | } | 2299 | } |
@@ -2385,10 +2385,10 @@ index d68f6745..ec41404c 100644 | |||
2385 | 2385 | ||
2386 | struct monitor { | 2386 | struct monitor { |
2387 | diff --git a/monitor_wrap.c b/monitor_wrap.c | 2387 | diff --git a/monitor_wrap.c b/monitor_wrap.c |
2388 | index 69212aaf..0e171a6a 100644 | 2388 | index 9666bda4..e749efc1 100644 |
2389 | --- a/monitor_wrap.c | 2389 | --- a/monitor_wrap.c |
2390 | +++ b/monitor_wrap.c | 2390 | +++ b/monitor_wrap.c |
2391 | @@ -937,7 +937,7 @@ mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic) | 2391 | @@ -943,7 +943,7 @@ mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic) |
2392 | } | 2392 | } |
2393 | 2393 | ||
2394 | int | 2394 | int |
@@ -2397,7 +2397,7 @@ index 69212aaf..0e171a6a 100644 | |||
2397 | { | 2397 | { |
2398 | Buffer m; | 2398 | Buffer m; |
2399 | int authenticated = 0; | 2399 | int authenticated = 0; |
2400 | @@ -954,5 +954,50 @@ mm_ssh_gssapi_userok(char *user) | 2400 | @@ -960,5 +960,50 @@ mm_ssh_gssapi_userok(char *user) |
2401 | debug3("%s: user %sauthenticated",__func__, authenticated ? "" : "not "); | 2401 | debug3("%s: user %sauthenticated",__func__, authenticated ? "" : "not "); |
2402 | return (authenticated); | 2402 | return (authenticated); |
2403 | } | 2403 | } |
@@ -2449,10 +2449,10 @@ index 69212aaf..0e171a6a 100644 | |||
2449 | #endif /* GSSAPI */ | 2449 | #endif /* GSSAPI */ |
2450 | 2450 | ||
2451 | diff --git a/monitor_wrap.h b/monitor_wrap.h | 2451 | diff --git a/monitor_wrap.h b/monitor_wrap.h |
2452 | index 9e032d20..7b2e8945 100644 | 2452 | index 76233270..0970d1f8 100644 |
2453 | --- a/monitor_wrap.h | 2453 | --- a/monitor_wrap.h |
2454 | +++ b/monitor_wrap.h | 2454 | +++ b/monitor_wrap.h |
2455 | @@ -57,8 +57,10 @@ int mm_sshkey_verify(const struct sshkey *, const u_char *, size_t, | 2455 | @@ -60,8 +60,10 @@ int mm_sshkey_verify(const struct sshkey *, const u_char *, size_t, |
2456 | OM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **, gss_OID); | 2456 | OM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **, gss_OID); |
2457 | OM_uint32 mm_ssh_gssapi_accept_ctx(Gssctxt *, | 2457 | OM_uint32 mm_ssh_gssapi_accept_ctx(Gssctxt *, |
2458 | gss_buffer_desc *, gss_buffer_desc *, OM_uint32 *); | 2458 | gss_buffer_desc *, gss_buffer_desc *, OM_uint32 *); |
@@ -2465,7 +2465,7 @@ index 9e032d20..7b2e8945 100644 | |||
2465 | 2465 | ||
2466 | #ifdef USE_PAM | 2466 | #ifdef USE_PAM |
2467 | diff --git a/readconf.c b/readconf.c | 2467 | diff --git a/readconf.c b/readconf.c |
2468 | index f63894f9..99e03ee1 100644 | 2468 | index 88051db5..c8e79299 100644 |
2469 | --- a/readconf.c | 2469 | --- a/readconf.c |
2470 | +++ b/readconf.c | 2470 | +++ b/readconf.c |
2471 | @@ -160,6 +160,8 @@ typedef enum { | 2471 | @@ -160,6 +160,8 @@ typedef enum { |
@@ -2498,7 +2498,7 @@ index f63894f9..99e03ee1 100644 | |||
2498 | #endif | 2498 | #endif |
2499 | #ifdef ENABLE_PKCS11 | 2499 | #ifdef ENABLE_PKCS11 |
2500 | { "smartcarddevice", oPKCS11Provider }, | 2500 | { "smartcarddevice", oPKCS11Provider }, |
2501 | @@ -976,10 +988,30 @@ parse_time: | 2501 | @@ -950,10 +962,30 @@ parse_time: |
2502 | intptr = &options->gss_authentication; | 2502 | intptr = &options->gss_authentication; |
2503 | goto parse_flag; | 2503 | goto parse_flag; |
2504 | 2504 | ||
@@ -2529,7 +2529,7 @@ index f63894f9..99e03ee1 100644 | |||
2529 | case oBatchMode: | 2529 | case oBatchMode: |
2530 | intptr = &options->batch_mode; | 2530 | intptr = &options->batch_mode; |
2531 | goto parse_flag; | 2531 | goto parse_flag; |
2532 | @@ -1790,7 +1822,12 @@ initialize_options(Options * options) | 2532 | @@ -1765,7 +1797,12 @@ initialize_options(Options * options) |
2533 | options->pubkey_authentication = -1; | 2533 | options->pubkey_authentication = -1; |
2534 | options->challenge_response_authentication = -1; | 2534 | options->challenge_response_authentication = -1; |
2535 | options->gss_authentication = -1; | 2535 | options->gss_authentication = -1; |
@@ -2542,7 +2542,7 @@ index f63894f9..99e03ee1 100644 | |||
2542 | options->password_authentication = -1; | 2542 | options->password_authentication = -1; |
2543 | options->kbd_interactive_authentication = -1; | 2543 | options->kbd_interactive_authentication = -1; |
2544 | options->kbd_interactive_devices = NULL; | 2544 | options->kbd_interactive_devices = NULL; |
2545 | @@ -1930,8 +1967,14 @@ fill_default_options(Options * options) | 2545 | @@ -1906,8 +1943,14 @@ fill_default_options(Options * options) |
2546 | options->challenge_response_authentication = 1; | 2546 | options->challenge_response_authentication = 1; |
2547 | if (options->gss_authentication == -1) | 2547 | if (options->gss_authentication == -1) |
2548 | options->gss_authentication = 0; | 2548 | options->gss_authentication = 0; |
@@ -2558,7 +2558,7 @@ index f63894f9..99e03ee1 100644 | |||
2558 | options->password_authentication = 1; | 2558 | options->password_authentication = 1; |
2559 | if (options->kbd_interactive_authentication == -1) | 2559 | if (options->kbd_interactive_authentication == -1) |
2560 | diff --git a/readconf.h b/readconf.h | 2560 | diff --git a/readconf.h b/readconf.h |
2561 | index 22fe5c18..d61161a8 100644 | 2561 | index f4d9e2b2..f469daaf 100644 |
2562 | --- a/readconf.h | 2562 | --- a/readconf.h |
2563 | +++ b/readconf.h | 2563 | +++ b/readconf.h |
2564 | @@ -42,7 +42,12 @@ typedef struct { | 2564 | @@ -42,7 +42,12 @@ typedef struct { |
@@ -2575,10 +2575,10 @@ index 22fe5c18..d61161a8 100644 | |||
2575 | * authentication. */ | 2575 | * authentication. */ |
2576 | int kbd_interactive_authentication; /* Try keyboard-interactive auth. */ | 2576 | int kbd_interactive_authentication; /* Try keyboard-interactive auth. */ |
2577 | diff --git a/servconf.c b/servconf.c | 2577 | diff --git a/servconf.c b/servconf.c |
2578 | index 2c321a4a..8ba74517 100644 | 2578 | index 0f0d0906..cbbea05b 100644 |
2579 | --- a/servconf.c | 2579 | --- a/servconf.c |
2580 | +++ b/servconf.c | 2580 | +++ b/servconf.c |
2581 | @@ -113,8 +113,10 @@ initialize_server_options(ServerOptions *options) | 2581 | @@ -123,8 +123,10 @@ initialize_server_options(ServerOptions *options) |
2582 | options->kerberos_ticket_cleanup = -1; | 2582 | options->kerberos_ticket_cleanup = -1; |
2583 | options->kerberos_get_afs_token = -1; | 2583 | options->kerberos_get_afs_token = -1; |
2584 | options->gss_authentication=-1; | 2584 | options->gss_authentication=-1; |
@@ -2589,7 +2589,7 @@ index 2c321a4a..8ba74517 100644 | |||
2589 | options->password_authentication = -1; | 2589 | options->password_authentication = -1; |
2590 | options->kbd_interactive_authentication = -1; | 2590 | options->kbd_interactive_authentication = -1; |
2591 | options->challenge_response_authentication = -1; | 2591 | options->challenge_response_authentication = -1; |
2592 | @@ -268,10 +270,14 @@ fill_default_server_options(ServerOptions *options) | 2592 | @@ -315,10 +317,14 @@ fill_default_server_options(ServerOptions *options) |
2593 | options->kerberos_get_afs_token = 0; | 2593 | options->kerberos_get_afs_token = 0; |
2594 | if (options->gss_authentication == -1) | 2594 | if (options->gss_authentication == -1) |
2595 | options->gss_authentication = 0; | 2595 | options->gss_authentication = 0; |
@@ -2604,7 +2604,7 @@ index 2c321a4a..8ba74517 100644 | |||
2604 | if (options->password_authentication == -1) | 2604 | if (options->password_authentication == -1) |
2605 | options->password_authentication = 1; | 2605 | options->password_authentication = 1; |
2606 | if (options->kbd_interactive_authentication == -1) | 2606 | if (options->kbd_interactive_authentication == -1) |
2607 | @@ -410,6 +416,7 @@ typedef enum { | 2607 | @@ -461,6 +467,7 @@ typedef enum { |
2608 | sHostKeyAlgorithms, | 2608 | sHostKeyAlgorithms, |
2609 | sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile, | 2609 | sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile, |
2610 | sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor, | 2610 | sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor, |
@@ -2612,7 +2612,7 @@ index 2c321a4a..8ba74517 100644 | |||
2612 | sAcceptEnv, sPermitTunnel, | 2612 | sAcceptEnv, sPermitTunnel, |
2613 | sMatch, sPermitOpen, sForceCommand, sChrootDirectory, | 2613 | sMatch, sPermitOpen, sForceCommand, sChrootDirectory, |
2614 | sUsePrivilegeSeparation, sAllowAgentForwarding, | 2614 | sUsePrivilegeSeparation, sAllowAgentForwarding, |
2615 | @@ -484,12 +491,20 @@ static struct { | 2615 | @@ -535,12 +542,20 @@ static struct { |
2616 | #ifdef GSSAPI | 2616 | #ifdef GSSAPI |
2617 | { "gssapiauthentication", sGssAuthentication, SSHCFG_ALL }, | 2617 | { "gssapiauthentication", sGssAuthentication, SSHCFG_ALL }, |
2618 | { "gssapicleanupcredentials", sGssCleanupCreds, SSHCFG_GLOBAL }, | 2618 | { "gssapicleanupcredentials", sGssCleanupCreds, SSHCFG_GLOBAL }, |
@@ -2633,7 +2633,7 @@ index 2c321a4a..8ba74517 100644 | |||
2633 | { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL }, | 2633 | { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL }, |
2634 | { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL }, | 2634 | { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL }, |
2635 | { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL }, | 2635 | { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL }, |
2636 | @@ -1253,6 +1268,10 @@ process_server_config_line(ServerOptions *options, char *line, | 2636 | @@ -1407,6 +1422,10 @@ process_server_config_line(ServerOptions *options, char *line, |
2637 | intptr = &options->gss_authentication; | 2637 | intptr = &options->gss_authentication; |
2638 | goto parse_flag; | 2638 | goto parse_flag; |
2639 | 2639 | ||
@@ -2644,7 +2644,7 @@ index 2c321a4a..8ba74517 100644 | |||
2644 | case sGssCleanupCreds: | 2644 | case sGssCleanupCreds: |
2645 | intptr = &options->gss_cleanup_creds; | 2645 | intptr = &options->gss_cleanup_creds; |
2646 | goto parse_flag; | 2646 | goto parse_flag; |
2647 | @@ -1261,6 +1280,10 @@ process_server_config_line(ServerOptions *options, char *line, | 2647 | @@ -1415,6 +1434,10 @@ process_server_config_line(ServerOptions *options, char *line, |
2648 | intptr = &options->gss_strict_acceptor; | 2648 | intptr = &options->gss_strict_acceptor; |
2649 | goto parse_flag; | 2649 | goto parse_flag; |
2650 | 2650 | ||
@@ -2655,7 +2655,7 @@ index 2c321a4a..8ba74517 100644 | |||
2655 | case sPasswordAuthentication: | 2655 | case sPasswordAuthentication: |
2656 | intptr = &options->password_authentication; | 2656 | intptr = &options->password_authentication; |
2657 | goto parse_flag; | 2657 | goto parse_flag; |
2658 | @@ -2301,7 +2324,10 @@ dump_config(ServerOptions *o) | 2658 | @@ -2453,7 +2476,10 @@ dump_config(ServerOptions *o) |
2659 | #endif | 2659 | #endif |
2660 | #ifdef GSSAPI | 2660 | #ifdef GSSAPI |
2661 | dump_cfg_fmtint(sGssAuthentication, o->gss_authentication); | 2661 | dump_cfg_fmtint(sGssAuthentication, o->gss_authentication); |
@@ -2667,10 +2667,10 @@ index 2c321a4a..8ba74517 100644 | |||
2667 | dump_cfg_fmtint(sPasswordAuthentication, o->password_authentication); | 2667 | dump_cfg_fmtint(sPasswordAuthentication, o->password_authentication); |
2668 | dump_cfg_fmtint(sKbdInteractiveAuthentication, | 2668 | dump_cfg_fmtint(sKbdInteractiveAuthentication, |
2669 | diff --git a/servconf.h b/servconf.h | 2669 | diff --git a/servconf.h b/servconf.h |
2670 | index 1dca702e..641e93c8 100644 | 2670 | index 37a0fb1a..5dfc9bc0 100644 |
2671 | --- a/servconf.h | 2671 | --- a/servconf.h |
2672 | +++ b/servconf.h | 2672 | +++ b/servconf.h |
2673 | @@ -119,8 +119,10 @@ typedef struct { | 2673 | @@ -130,8 +130,10 @@ typedef struct { |
2674 | int kerberos_get_afs_token; /* If true, try to get AFS token if | 2674 | int kerberos_get_afs_token; /* If true, try to get AFS token if |
2675 | * authenticated with Kerberos. */ | 2675 | * authenticated with Kerberos. */ |
2676 | int gss_authentication; /* If true, permit GSSAPI authentication */ | 2676 | int gss_authentication; /* If true, permit GSSAPI authentication */ |
@@ -2799,10 +2799,10 @@ index c12f5ef5..bcb9f153 100644 | |||
2799 | # CheckHostIP yes | 2799 | # CheckHostIP yes |
2800 | # AddressFamily any | 2800 | # AddressFamily any |
2801 | diff --git a/ssh_config.5 b/ssh_config.5 | 2801 | diff --git a/ssh_config.5 b/ssh_config.5 |
2802 | index eab8dd01..9a06a757 100644 | 2802 | index 71705cab..66826aa7 100644 |
2803 | --- a/ssh_config.5 | 2803 | --- a/ssh_config.5 |
2804 | +++ b/ssh_config.5 | 2804 | +++ b/ssh_config.5 |
2805 | @@ -720,10 +720,42 @@ The default is | 2805 | @@ -727,10 +727,42 @@ The default is |
2806 | Specifies whether user authentication based on GSSAPI is allowed. | 2806 | Specifies whether user authentication based on GSSAPI is allowed. |
2807 | The default is | 2807 | The default is |
2808 | .Cm no . | 2808 | .Cm no . |
@@ -2846,7 +2846,7 @@ index eab8dd01..9a06a757 100644 | |||
2846 | Indicates that | 2846 | Indicates that |
2847 | .Xr ssh 1 | 2847 | .Xr ssh 1 |
2848 | diff --git a/sshconnect2.c b/sshconnect2.c | 2848 | diff --git a/sshconnect2.c b/sshconnect2.c |
2849 | index be9397e4..c22477f5 100644 | 2849 | index 1f4a74cf..83562c68 100644 |
2850 | --- a/sshconnect2.c | 2850 | --- a/sshconnect2.c |
2851 | +++ b/sshconnect2.c | 2851 | +++ b/sshconnect2.c |
2852 | @@ -162,6 +162,11 @@ ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port) | 2852 | @@ -162,6 +162,11 @@ ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port) |
@@ -2959,7 +2959,7 @@ index be9397e4..c22477f5 100644 | |||
2959 | {"gssapi-with-mic", | 2959 | {"gssapi-with-mic", |
2960 | userauth_gssapi, | 2960 | userauth_gssapi, |
2961 | NULL, | 2961 | NULL, |
2962 | @@ -654,25 +720,40 @@ userauth_gssapi(Authctxt *authctxt) | 2962 | @@ -643,25 +709,40 @@ userauth_gssapi(Authctxt *authctxt) |
2963 | static u_int mech = 0; | 2963 | static u_int mech = 0; |
2964 | OM_uint32 min; | 2964 | OM_uint32 min; |
2965 | int ok = 0; | 2965 | int ok = 0; |
@@ -3002,7 +3002,7 @@ index be9397e4..c22477f5 100644 | |||
3002 | if (!ok) | 3002 | if (!ok) |
3003 | return 0; | 3003 | return 0; |
3004 | 3004 | ||
3005 | @@ -763,8 +844,8 @@ input_gssapi_response(int type, u_int32_t plen, struct ssh *ssh) | 3005 | @@ -752,8 +833,8 @@ input_gssapi_response(int type, u_int32_t plen, struct ssh *ssh) |
3006 | { | 3006 | { |
3007 | Authctxt *authctxt = ssh->authctxt; | 3007 | Authctxt *authctxt = ssh->authctxt; |
3008 | Gssctxt *gssctxt; | 3008 | Gssctxt *gssctxt; |
@@ -3013,7 +3013,7 @@ index be9397e4..c22477f5 100644 | |||
3013 | 3013 | ||
3014 | if (authctxt == NULL) | 3014 | if (authctxt == NULL) |
3015 | fatal("input_gssapi_response: no authentication context"); | 3015 | fatal("input_gssapi_response: no authentication context"); |
3016 | @@ -877,6 +958,48 @@ input_gssapi_error(int type, u_int32_t plen, struct ssh *ssh) | 3016 | @@ -866,6 +947,48 @@ input_gssapi_error(int type, u_int32_t plen, struct ssh *ssh) |
3017 | free(lang); | 3017 | free(lang); |
3018 | return 0; | 3018 | return 0; |
3019 | } | 3019 | } |
@@ -3063,10 +3063,10 @@ index be9397e4..c22477f5 100644 | |||
3063 | 3063 | ||
3064 | int | 3064 | int |
3065 | diff --git a/sshd.c b/sshd.c | 3065 | diff --git a/sshd.c b/sshd.c |
3066 | index 51a1aaf6..45e50fac 100644 | 3066 | index fd95b681..e88185ef 100644 |
3067 | --- a/sshd.c | 3067 | --- a/sshd.c |
3068 | +++ b/sshd.c | 3068 | +++ b/sshd.c |
3069 | @@ -122,6 +122,10 @@ | 3069 | @@ -123,6 +123,10 @@ |
3070 | #include "version.h" | 3070 | #include "version.h" |
3071 | #include "ssherr.h" | 3071 | #include "ssherr.h" |
3072 | 3072 | ||
@@ -3077,7 +3077,7 @@ index 51a1aaf6..45e50fac 100644 | |||
3077 | /* Re-exec fds */ | 3077 | /* Re-exec fds */ |
3078 | #define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1) | 3078 | #define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1) |
3079 | #define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2) | 3079 | #define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2) |
3080 | @@ -529,7 +533,7 @@ privsep_preauth_child(void) | 3080 | @@ -531,7 +535,7 @@ privsep_preauth_child(void) |
3081 | 3081 | ||
3082 | #ifdef GSSAPI | 3082 | #ifdef GSSAPI |
3083 | /* Cache supported mechanism OIDs for later use */ | 3083 | /* Cache supported mechanism OIDs for later use */ |
@@ -3086,7 +3086,7 @@ index 51a1aaf6..45e50fac 100644 | |||
3086 | ssh_gssapi_prepare_supported_oids(); | 3086 | ssh_gssapi_prepare_supported_oids(); |
3087 | #endif | 3087 | #endif |
3088 | 3088 | ||
3089 | @@ -1708,10 +1712,13 @@ main(int ac, char **av) | 3089 | @@ -1753,10 +1757,13 @@ main(int ac, char **av) |
3090 | key ? "private" : "agent", i, sshkey_ssh_name(pubkey), fp); | 3090 | key ? "private" : "agent", i, sshkey_ssh_name(pubkey), fp); |
3091 | free(fp); | 3091 | free(fp); |
3092 | } | 3092 | } |
@@ -3100,8 +3100,8 @@ index 51a1aaf6..45e50fac 100644 | |||
3100 | 3100 | ||
3101 | /* | 3101 | /* |
3102 | * Load certificates. They are stored in an array at identical | 3102 | * Load certificates. They are stored in an array at identical |
3103 | @@ -1987,6 +1994,60 @@ main(int ac, char **av) | 3103 | @@ -2047,6 +2054,60 @@ main(int ac, char **av) |
3104 | remote_ip, remote_port, laddr, ssh_local_port(ssh)); | 3104 | rdomain == NULL ? "" : "\""); |
3105 | free(laddr); | 3105 | free(laddr); |
3106 | 3106 | ||
3107 | +#ifdef USE_SECURITY_SESSION_API | 3107 | +#ifdef USE_SECURITY_SESSION_API |
@@ -3161,7 +3161,7 @@ index 51a1aaf6..45e50fac 100644 | |||
3161 | /* | 3161 | /* |
3162 | * We don't want to listen forever unless the other side | 3162 | * We don't want to listen forever unless the other side |
3163 | * successfully authenticates itself. So we set up an alarm which is | 3163 | * successfully authenticates itself. So we set up an alarm which is |
3164 | @@ -2170,6 +2231,48 @@ do_ssh2_kex(void) | 3164 | @@ -2234,6 +2295,48 @@ do_ssh2_kex(void) |
3165 | myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal( | 3165 | myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal( |
3166 | list_hostkey_types()); | 3166 | list_hostkey_types()); |
3167 | 3167 | ||
@@ -3210,7 +3210,7 @@ index 51a1aaf6..45e50fac 100644 | |||
3210 | /* start key exchange */ | 3210 | /* start key exchange */ |
3211 | if ((r = kex_setup(active_state, myproposal)) != 0) | 3211 | if ((r = kex_setup(active_state, myproposal)) != 0) |
3212 | fatal("kex_setup: %s", ssh_err(r)); | 3212 | fatal("kex_setup: %s", ssh_err(r)); |
3213 | @@ -2187,6 +2290,13 @@ do_ssh2_kex(void) | 3213 | @@ -2251,6 +2354,13 @@ do_ssh2_kex(void) |
3214 | # endif | 3214 | # endif |
3215 | #endif | 3215 | #endif |
3216 | kex->kex[KEX_C25519_SHA256] = kexc25519_server; | 3216 | kex->kex[KEX_C25519_SHA256] = kexc25519_server; |
@@ -3225,10 +3225,10 @@ index 51a1aaf6..45e50fac 100644 | |||
3225 | kex->client_version_string=client_version_string; | 3225 | kex->client_version_string=client_version_string; |
3226 | kex->server_version_string=server_version_string; | 3226 | kex->server_version_string=server_version_string; |
3227 | diff --git a/sshd_config b/sshd_config | 3227 | diff --git a/sshd_config b/sshd_config |
3228 | index 4eb2e02e..c01dd656 100644 | 3228 | index 3109d5d7..86263d71 100644 |
3229 | --- a/sshd_config | 3229 | --- a/sshd_config |
3230 | +++ b/sshd_config | 3230 | +++ b/sshd_config |
3231 | @@ -70,6 +70,8 @@ AuthorizedKeysFile .ssh/authorized_keys | 3231 | @@ -69,6 +69,8 @@ AuthorizedKeysFile .ssh/authorized_keys |
3232 | # GSSAPI options | 3232 | # GSSAPI options |
3233 | #GSSAPIAuthentication no | 3233 | #GSSAPIAuthentication no |
3234 | #GSSAPICleanupCredentials yes | 3234 | #GSSAPICleanupCredentials yes |
@@ -3238,10 +3238,10 @@ index 4eb2e02e..c01dd656 100644 | |||
3238 | # Set this to 'yes' to enable PAM authentication, account processing, | 3238 | # Set this to 'yes' to enable PAM authentication, account processing, |
3239 | # and session processing. If this is enabled, PAM authentication will | 3239 | # and session processing. If this is enabled, PAM authentication will |
3240 | diff --git a/sshd_config.5 b/sshd_config.5 | 3240 | diff --git a/sshd_config.5 b/sshd_config.5 |
3241 | index 251b7467..0dbcb8da 100644 | 3241 | index e3c7c393..c4a3f3cb 100644 |
3242 | --- a/sshd_config.5 | 3242 | --- a/sshd_config.5 |
3243 | +++ b/sshd_config.5 | 3243 | +++ b/sshd_config.5 |
3244 | @@ -635,6 +635,11 @@ The default is | 3244 | @@ -636,6 +636,11 @@ The default is |
3245 | Specifies whether user authentication based on GSSAPI is allowed. | 3245 | Specifies whether user authentication based on GSSAPI is allowed. |
3246 | The default is | 3246 | The default is |
3247 | .Cm no . | 3247 | .Cm no . |
@@ -3253,7 +3253,7 @@ index 251b7467..0dbcb8da 100644 | |||
3253 | .It Cm GSSAPICleanupCredentials | 3253 | .It Cm GSSAPICleanupCredentials |
3254 | Specifies whether to automatically destroy the user's credentials cache | 3254 | Specifies whether to automatically destroy the user's credentials cache |
3255 | on logout. | 3255 | on logout. |
3256 | @@ -654,6 +659,11 @@ machine's default store. | 3256 | @@ -655,6 +660,11 @@ machine's default store. |
3257 | This facility is provided to assist with operation on multi homed machines. | 3257 | This facility is provided to assist with operation on multi homed machines. |
3258 | The default is | 3258 | The default is |
3259 | .Cm yes . | 3259 | .Cm yes . |
@@ -3266,10 +3266,10 @@ index 251b7467..0dbcb8da 100644 | |||
3266 | Specifies the key types that will be accepted for hostbased authentication | 3266 | Specifies the key types that will be accepted for hostbased authentication |
3267 | as a comma-separated pattern list. | 3267 | as a comma-separated pattern list. |
3268 | diff --git a/sshkey.c b/sshkey.c | 3268 | diff --git a/sshkey.c b/sshkey.c |
3269 | index e91c54f5..c2cf0e03 100644 | 3269 | index 7712fba2..08887286 100644 |
3270 | --- a/sshkey.c | 3270 | --- a/sshkey.c |
3271 | +++ b/sshkey.c | 3271 | +++ b/sshkey.c |
3272 | @@ -112,6 +112,7 @@ static const struct keytype keytypes[] = { | 3272 | @@ -122,6 +122,7 @@ static const struct keytype keytypes[] = { |
3273 | # endif /* OPENSSL_HAS_NISTP521 */ | 3273 | # endif /* OPENSSL_HAS_NISTP521 */ |
3274 | # endif /* OPENSSL_HAS_ECC */ | 3274 | # endif /* OPENSSL_HAS_ECC */ |
3275 | #endif /* WITH_OPENSSL */ | 3275 | #endif /* WITH_OPENSSL */ |
@@ -3277,7 +3277,7 @@ index e91c54f5..c2cf0e03 100644 | |||
3277 | { NULL, NULL, -1, -1, 0, 0 } | 3277 | { NULL, NULL, -1, -1, 0, 0 } |
3278 | }; | 3278 | }; |
3279 | 3279 | ||
3280 | @@ -200,7 +201,7 @@ sshkey_alg_list(int certs_only, int plain_only, int include_sigonly, char sep) | 3280 | @@ -210,7 +211,7 @@ sshkey_alg_list(int certs_only, int plain_only, int include_sigonly, char sep) |
3281 | const struct keytype *kt; | 3281 | const struct keytype *kt; |
3282 | 3282 | ||
3283 | for (kt = keytypes; kt->type != -1; kt++) { | 3283 | for (kt = keytypes; kt->type != -1; kt++) { |
@@ -3287,13 +3287,13 @@ index e91c54f5..c2cf0e03 100644 | |||
3287 | if (!include_sigonly && kt->sigonly) | 3287 | if (!include_sigonly && kt->sigonly) |
3288 | continue; | 3288 | continue; |
3289 | diff --git a/sshkey.h b/sshkey.h | 3289 | diff --git a/sshkey.h b/sshkey.h |
3290 | index 9093eac5..b5d020cb 100644 | 3290 | index 155cd45a..4e89049f 100644 |
3291 | --- a/sshkey.h | 3291 | --- a/sshkey.h |
3292 | +++ b/sshkey.h | 3292 | +++ b/sshkey.h |
3293 | @@ -61,6 +61,7 @@ enum sshkey_types { | 3293 | @@ -63,6 +63,7 @@ enum sshkey_types { |
3294 | KEY_DSA_CERT, | ||
3295 | KEY_ECDSA_CERT, | ||
3296 | KEY_ED25519_CERT, | 3294 | KEY_ED25519_CERT, |
3295 | KEY_XMSS, | ||
3296 | KEY_XMSS_CERT, | ||
3297 | + KEY_NULL, | 3297 | + KEY_NULL, |
3298 | KEY_UNSPEC | 3298 | KEY_UNSPEC |
3299 | }; | 3299 | }; |
diff --git a/debian/patches/keepalive-extensions.patch b/debian/patches/keepalive-extensions.patch index d3eca5924..68fa28e5c 100644 --- a/debian/patches/keepalive-extensions.patch +++ b/debian/patches/keepalive-extensions.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From c147d4dbab74e0dbf738beb9d9f4220534ae9da6 Mon Sep 17 00:00:00 2001 | 1 | From a7045c36e6e072c8f9250fbe11cf2f9db9f51a08 Mon Sep 17 00:00:00 2001 |
2 | From: Richard Kettlewell <rjk@greenend.org.uk> | 2 | From: Richard Kettlewell <rjk@greenend.org.uk> |
3 | Date: Sun, 9 Feb 2014 16:09:52 +0000 | 3 | Date: Sun, 9 Feb 2014 16:09:52 +0000 |
4 | Subject: Various keepalive extensions | 4 | Subject: 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 | ||
28 | diff --git a/readconf.c b/readconf.c | 28 | diff --git a/readconf.c b/readconf.c |
29 | index d2b28a41..45caa095 100644 | 29 | index 1f1be778..7f2b5c17 100644 |
30 | --- a/readconf.c | 30 | --- a/readconf.c |
31 | +++ b/readconf.c | 31 | +++ b/readconf.c |
32 | @@ -174,6 +174,7 @@ typedef enum { | 32 | @@ -174,6 +174,7 @@ typedef enum { |
@@ -37,7 +37,7 @@ index d2b28a41..45caa095 100644 | |||
37 | oIgnore, oIgnoredUnknownOption, oDeprecated, oUnsupported | 37 | oIgnore, oIgnoredUnknownOption, oDeprecated, oUnsupported |
38 | } OpCodes; | 38 | } OpCodes; |
39 | 39 | ||
40 | @@ -318,6 +319,8 @@ static struct { | 40 | @@ -319,6 +320,8 @@ static struct { |
41 | { "pubkeyacceptedkeytypes", oPubkeyAcceptedKeyTypes }, | 41 | { "pubkeyacceptedkeytypes", oPubkeyAcceptedKeyTypes }, |
42 | { "ignoreunknown", oIgnoreUnknown }, | 42 | { "ignoreunknown", oIgnoreUnknown }, |
43 | { "proxyjump", oProxyJump }, | 43 | { "proxyjump", oProxyJump }, |
@@ -46,7 +46,7 @@ index d2b28a41..45caa095 100644 | |||
46 | 46 | ||
47 | { NULL, oBadOption } | 47 | { NULL, oBadOption } |
48 | }; | 48 | }; |
49 | @@ -1406,6 +1409,8 @@ parse_keytypes: | 49 | @@ -1378,6 +1381,8 @@ parse_keytypes: |
50 | goto parse_flag; | 50 | goto parse_flag; |
51 | 51 | ||
52 | case oServerAliveInterval: | 52 | case oServerAliveInterval: |
@@ -55,7 +55,7 @@ index d2b28a41..45caa095 100644 | |||
55 | intptr = &options->server_alive_interval; | 55 | intptr = &options->server_alive_interval; |
56 | goto parse_time; | 56 | goto parse_time; |
57 | 57 | ||
58 | @@ -2042,8 +2047,13 @@ fill_default_options(Options * options) | 58 | @@ -2019,8 +2024,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,7 +72,7 @@ index d2b28a41..45caa095 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) |
74 | diff --git a/ssh_config.5 b/ssh_config.5 | 74 | diff --git a/ssh_config.5 b/ssh_config.5 |
75 | index 9a06a757..d6f43c2d 100644 | 75 | index 66826aa7..32c3632c 100644 |
76 | --- a/ssh_config.5 | 76 | --- a/ssh_config.5 |
77 | +++ b/ssh_config.5 | 77 | +++ b/ssh_config.5 |
78 | @@ -247,8 +247,12 @@ Valid arguments are | 78 | @@ -247,8 +247,12 @@ Valid arguments are |
@@ -89,7 +89,7 @@ index 9a06a757..d6f43c2d 100644 | |||
89 | The argument must be | 89 | The argument must be |
90 | .Cm yes | 90 | .Cm yes |
91 | or | 91 | or |
92 | @@ -1455,7 +1459,14 @@ from the server, | 92 | @@ -1463,7 +1467,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 9a06a757..d6f43c2d 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 | @@ -1529,6 +1540,12 @@ Specifies whether the system should send TCP keepalive messages to the | 108 | @@ -1537,6 +1548,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,10 +119,10 @@ index 9a06a757..d6f43c2d 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. |
121 | diff --git a/sshd_config.5 b/sshd_config.5 | 121 | diff --git a/sshd_config.5 b/sshd_config.5 |
122 | index 0dbcb8da..7db25552 100644 | 122 | index c4a3f3cb..1a1c6dd0 100644 |
123 | --- a/sshd_config.5 | 123 | --- a/sshd_config.5 |
124 | +++ b/sshd_config.5 | 124 | +++ b/sshd_config.5 |
125 | @@ -1454,6 +1454,9 @@ This avoids infinitely hanging sessions. | 125 | @@ -1495,6 +1495,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 | .Cm no . | 128 | .Cm no . |
diff --git a/debian/patches/mention-ssh-keygen-on-keychange.patch b/debian/patches/mention-ssh-keygen-on-keychange.patch index 3edb37705..542b42ae9 100644 --- a/debian/patches/mention-ssh-keygen-on-keychange.patch +++ b/debian/patches/mention-ssh-keygen-on-keychange.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 19be4218cdb262f7b584b0104ee430de0e24eeb8 Mon Sep 17 00:00:00 2001 | 1 | From 76ab788bcf265360e1b88f8ced6085198c320fdd Mon Sep 17 00:00:00 2001 |
2 | From: Scott Moser <smoser@ubuntu.com> | 2 | From: Scott Moser <smoser@ubuntu.com> |
3 | Date: Sun, 9 Feb 2014 16:10:03 +0000 | 3 | Date: Sun, 9 Feb 2014 16:10:03 +0000 |
4 | Subject: Mention ssh-keygen in ssh fingerprint changed warning | 4 | Subject: Mention ssh-keygen in ssh fingerprint changed warning |
@@ -14,10 +14,10 @@ Patch-Name: mention-ssh-keygen-on-keychange.patch | |||
14 | 1 file changed, 8 insertions(+), 1 deletion(-) | 14 | 1 file changed, 8 insertions(+), 1 deletion(-) |
15 | 15 | ||
16 | diff --git a/sshconnect.c b/sshconnect.c | 16 | diff --git a/sshconnect.c b/sshconnect.c |
17 | index 5eed5880..7ce2716c 100644 | 17 | index 8ab01c0e..58f9eac8 100644 |
18 | --- a/sshconnect.c | 18 | --- a/sshconnect.c |
19 | +++ b/sshconnect.c | 19 | +++ b/sshconnect.c |
20 | @@ -1022,9 +1022,13 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port, | 20 | @@ -1141,9 +1141,13 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port, |
21 | error("%s. This could either mean that", key_msg); | 21 | error("%s. This could either mean that", key_msg); |
22 | error("DNS SPOOFING is happening or the IP address for the host"); | 22 | error("DNS SPOOFING is happening or the IP address for the host"); |
23 | error("and its host key have changed at the same time."); | 23 | error("and its host key have changed at the same time."); |
@@ -32,7 +32,7 @@ index 5eed5880..7ce2716c 100644 | |||
32 | } | 32 | } |
33 | /* The host key has changed. */ | 33 | /* The host key has changed. */ |
34 | warn_changed_key(host_key); | 34 | warn_changed_key(host_key); |
35 | @@ -1033,6 +1037,9 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port, | 35 | @@ -1152,6 +1156,9 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port, |
36 | error("Offending %s key in %s:%lu", | 36 | error("Offending %s key in %s:%lu", |
37 | sshkey_type(host_found->key), | 37 | sshkey_type(host_found->key), |
38 | host_found->file, host_found->line); | 38 | host_found->file, host_found->line); |
diff --git a/debian/patches/no-dsa-host-key-by-default.patch b/debian/patches/no-dsa-host-key-by-default.patch deleted file mode 100644 index c24ff4e3f..000000000 --- a/debian/patches/no-dsa-host-key-by-default.patch +++ /dev/null | |||
@@ -1,83 +0,0 @@ | |||
1 | From 922f3a7599d03234b6bb2ffb22a33624e7cf1953 Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Mon, 16 Jan 2017 13:53:04 +0000 | ||
4 | Subject: Remove ssh_host_dsa_key from HostKey default | ||
5 | |||
6 | The client no longer accepts DSA host keys, and servers using the | ||
7 | default HostKey setting should have better host keys available. | ||
8 | |||
9 | Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=2662 | ||
10 | Bug-Debian: https://bugs.debian.org/850614 | ||
11 | Last-Update: 2017-01-16 | ||
12 | |||
13 | Patch-Name: no-dsa-host-key-by-default.patch | ||
14 | --- | ||
15 | servconf.c | 2 -- | ||
16 | sshd.8 | 7 +++---- | ||
17 | sshd_config | 1 - | ||
18 | sshd_config.5 | 7 +++---- | ||
19 | 4 files changed, 6 insertions(+), 11 deletions(-) | ||
20 | |||
21 | diff --git a/servconf.c b/servconf.c | ||
22 | index b0146405..5e996cf8 100644 | ||
23 | --- a/servconf.c | ||
24 | +++ b/servconf.c | ||
25 | @@ -205,8 +205,6 @@ fill_default_server_options(ServerOptions *options) | ||
26 | /* fill default hostkeys for protocols */ | ||
27 | options->host_key_files[options->num_host_key_files++] = | ||
28 | _PATH_HOST_RSA_KEY_FILE; | ||
29 | - options->host_key_files[options->num_host_key_files++] = | ||
30 | - _PATH_HOST_DSA_KEY_FILE; | ||
31 | #ifdef OPENSSL_HAS_ECC | ||
32 | options->host_key_files[options->num_host_key_files++] = | ||
33 | _PATH_HOST_ECDSA_KEY_FILE; | ||
34 | diff --git a/sshd.8 b/sshd.8 | ||
35 | index 02c5e1df..8c230657 100644 | ||
36 | --- a/sshd.8 | ||
37 | +++ b/sshd.8 | ||
38 | @@ -164,11 +164,10 @@ This option must be given if | ||
39 | is not run as root (as the normal | ||
40 | host key files are normally not readable by anyone but root). | ||
41 | The default is | ||
42 | -.Pa /etc/ssh/ssh_host_dsa_key , | ||
43 | -.Pa /etc/ssh/ssh_host_ecdsa_key , | ||
44 | -.Pa /etc/ssh/ssh_host_ed25519_key | ||
45 | +.Pa /etc/ssh/ssh_host_rsa_key , | ||
46 | +.Pa /etc/ssh/ssh_host_ecdsa_key | ||
47 | and | ||
48 | -.Pa /etc/ssh/ssh_host_rsa_key . | ||
49 | +.Pa /etc/ssh/ssh_host_ed25519_key . | ||
50 | It is possible to have multiple host key files for | ||
51 | the different host key algorithms. | ||
52 | .It Fl i | ||
53 | diff --git a/sshd_config b/sshd_config | ||
54 | index f68edf36..92822959 100644 | ||
55 | --- a/sshd_config | ||
56 | +++ b/sshd_config | ||
57 | @@ -16,7 +16,6 @@ | ||
58 | #ListenAddress :: | ||
59 | |||
60 | #HostKey /etc/ssh/ssh_host_rsa_key | ||
61 | -#HostKey /etc/ssh/ssh_host_dsa_key | ||
62 | #HostKey /etc/ssh/ssh_host_ecdsa_key | ||
63 | #HostKey /etc/ssh/ssh_host_ed25519_key | ||
64 | |||
65 | diff --git a/sshd_config.5 b/sshd_config.5 | ||
66 | index 16be4f62..ef520680 100644 | ||
67 | --- a/sshd_config.5 | ||
68 | +++ b/sshd_config.5 | ||
69 | @@ -749,11 +749,10 @@ is not to load any certificates. | ||
70 | Specifies a file containing a private host key | ||
71 | used by SSH. | ||
72 | The defaults are | ||
73 | -.Pa /etc/ssh/ssh_host_dsa_key , | ||
74 | -.Pa /etc/ssh/ssh_host_ecdsa_key , | ||
75 | -.Pa /etc/ssh/ssh_host_ed25519_key | ||
76 | +.Pa /etc/ssh/ssh_host_rsa_key , | ||
77 | +.Pa /etc/ssh/ssh_host_ecdsa_key | ||
78 | and | ||
79 | -.Pa /etc/ssh/ssh_host_rsa_key . | ||
80 | +.Pa /etc/ssh/ssh_host_ed25519_key . | ||
81 | .Pp | ||
82 | Note that | ||
83 | .Xr sshd 8 | ||
diff --git a/debian/patches/no-openssl-version-status.patch b/debian/patches/no-openssl-version-status.patch index cbfaebfe0..f6646ca20 100644 --- a/debian/patches/no-openssl-version-status.patch +++ b/debian/patches/no-openssl-version-status.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From b614a7f9148af821919165be47c6c29f59dc6b44 Mon Sep 17 00:00:00 2001 | 1 | From 7cdc2be2d56f5f49c9f2557d056bf2c15a141a79 Mon Sep 17 00:00:00 2001 |
2 | From: Kurt Roeckx <kurt@roeckx.be> | 2 | From: Kurt Roeckx <kurt@roeckx.be> |
3 | Date: Sun, 9 Feb 2014 16:10:14 +0000 | 3 | Date: Sun, 9 Feb 2014 16:10:14 +0000 |
4 | Subject: Don't check the status field of the OpenSSL version | 4 | Subject: Don't check the status field of the OpenSSL version |
diff --git a/debian/patches/openbsd-docs.patch b/debian/patches/openbsd-docs.patch index 9297decd6..a9e8aac29 100644 --- a/debian/patches/openbsd-docs.patch +++ b/debian/patches/openbsd-docs.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 7e53354725eeb002e6126a73fd5f294ed9f9b03e Mon Sep 17 00:00:00 2001 | 1 | From c3d9231e598560dfe63a56a422439d263a2c3ebe Mon Sep 17 00:00:00 2001 |
2 | From: Colin Watson <cjwatson@debian.org> | 2 | From: Colin Watson <cjwatson@debian.org> |
3 | Date: Sun, 9 Feb 2014 16:10:09 +0000 | 3 | Date: Sun, 9 Feb 2014 16:10:09 +0000 |
4 | Subject: Adjust various OpenBSD-specific references in manual pages | 4 | Subject: Adjust various OpenBSD-specific references in manual pages |
@@ -44,7 +44,7 @@ index ef0de085..149846c8 100644 | |||
44 | .Sh SEE ALSO | 44 | .Sh SEE ALSO |
45 | .Xr ssh-keygen 1 , | 45 | .Xr ssh-keygen 1 , |
46 | diff --git a/ssh-keygen.1 b/ssh-keygen.1 | 46 | diff --git a/ssh-keygen.1 b/ssh-keygen.1 |
47 | index 5f1ec09b..dfbc65dd 100644 | 47 | index 3525d7d1..39767e62 100644 |
48 | --- a/ssh-keygen.1 | 48 | --- a/ssh-keygen.1 |
49 | +++ b/ssh-keygen.1 | 49 | +++ b/ssh-keygen.1 |
50 | @@ -176,9 +176,7 @@ key in | 50 | @@ -176,9 +176,7 @@ key in |
@@ -69,7 +69,7 @@ index 5f1ec09b..dfbc65dd 100644 | |||
69 | .It Fl a Ar rounds | 69 | .It Fl a Ar rounds |
70 | When saving a new-format private key (i.e. an ed25519 key or when the | 70 | When saving a new-format private key (i.e. an ed25519 key or when the |
71 | .Fl o | 71 | .Fl o |
72 | @@ -676,7 +672,7 @@ option. | 72 | @@ -685,7 +681,7 @@ option. |
73 | Valid generator values are 2, 3, and 5. | 73 | Valid generator values are 2, 3, and 5. |
74 | .Pp | 74 | .Pp |
75 | Screened DH groups may be installed in | 75 | Screened DH groups may be installed in |
@@ -78,7 +78,7 @@ index 5f1ec09b..dfbc65dd 100644 | |||
78 | It is important that this file contains moduli of a range of bit lengths and | 78 | It is important that this file contains moduli of a range of bit lengths and |
79 | that both ends of a connection share common moduli. | 79 | that both ends of a connection share common moduli. |
80 | .Sh CERTIFICATES | 80 | .Sh CERTIFICATES |
81 | @@ -863,7 +859,7 @@ on all machines | 81 | @@ -872,7 +868,7 @@ on all machines |
82 | where the user wishes to log in using public key authentication. | 82 | where the user wishes to log in using public key authentication. |
83 | There is no need to keep the contents of this file secret. | 83 | There is no need to keep the contents of this file secret. |
84 | .Pp | 84 | .Pp |
@@ -88,10 +88,10 @@ index 5f1ec09b..dfbc65dd 100644 | |||
88 | The file format is described in | 88 | The file format is described in |
89 | .Xr moduli 5 . | 89 | .Xr moduli 5 . |
90 | diff --git a/ssh.1 b/ssh.1 | 90 | diff --git a/ssh.1 b/ssh.1 |
91 | index 3cc94688..2a2aab30 100644 | 91 | index 0ef7c170..54e21d88 100644 |
92 | --- a/ssh.1 | 92 | --- a/ssh.1 |
93 | +++ b/ssh.1 | 93 | +++ b/ssh.1 |
94 | @@ -842,6 +842,10 @@ implements public key authentication protocol automatically, | 94 | @@ -846,6 +846,10 @@ implements public key authentication protocol automatically, |
95 | using one of the DSA, ECDSA, Ed25519 or RSA algorithms. | 95 | using one of the DSA, ECDSA, Ed25519 or RSA algorithms. |
96 | The HISTORY section of | 96 | The HISTORY section of |
97 | .Xr ssl 8 | 97 | .Xr ssl 8 |
@@ -103,7 +103,7 @@ index 3cc94688..2a2aab30 100644 | |||
103 | .Pp | 103 | .Pp |
104 | The file | 104 | The file |
105 | diff --git a/sshd.8 b/sshd.8 | 105 | diff --git a/sshd.8 b/sshd.8 |
106 | index 2ed523a2..02c5e1df 100644 | 106 | index c8299d5e..378aeb9f 100644 |
107 | --- a/sshd.8 | 107 | --- a/sshd.8 |
108 | +++ b/sshd.8 | 108 | +++ b/sshd.8 |
109 | @@ -65,7 +65,7 @@ over an insecure network. | 109 | @@ -65,7 +65,7 @@ over an insecure network. |
@@ -115,7 +115,7 @@ index 2ed523a2..02c5e1df 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 | @@ -850,7 +850,7 @@ This file is for host-based authentication (see | 118 | @@ -856,7 +856,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 2ed523a2..02c5e1df 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 | @@ -950,7 +950,6 @@ The content of this file is not sensitive; it can be world-readable. | 127 | @@ -954,7 +954,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 2ed523a2..02c5e1df 100644 | |||
133 | .Xr sshd_config 5 , | 133 | .Xr sshd_config 5 , |
134 | .Xr inetd 8 , | 134 | .Xr inetd 8 , |
135 | diff --git a/sshd_config.5 b/sshd_config.5 | 135 | diff --git a/sshd_config.5 b/sshd_config.5 |
136 | index 41e8c939..79676a95 100644 | 136 | index 45044a70..44b91846 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 | @@ -383,8 +383,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 |
diff --git a/debian/patches/package-versioning.patch b/debian/patches/package-versioning.patch index 0d851e68c..db144f505 100644 --- a/debian/patches/package-versioning.patch +++ b/debian/patches/package-versioning.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 326b09bce8058629980cc92f289fd7912269eb98 Mon Sep 17 00:00:00 2001 | 1 | From 52359fc0d6ee73ee6e24332b2777dc8abdaed652 Mon Sep 17 00:00:00 2001 |
2 | From: Matthew Vernon <matthew@debian.org> | 2 | From: Matthew Vernon <matthew@debian.org> |
3 | Date: Sun, 9 Feb 2014 16:10:05 +0000 | 3 | Date: Sun, 9 Feb 2014 16:10:05 +0000 |
4 | Subject: Include the Debian version in our identification | 4 | Subject: Include the Debian version in our identification |
@@ -19,10 +19,10 @@ Patch-Name: package-versioning.patch | |||
19 | 3 files changed, 8 insertions(+), 3 deletions(-) | 19 | 3 files changed, 8 insertions(+), 3 deletions(-) |
20 | 20 | ||
21 | diff --git a/sshconnect.c b/sshconnect.c | 21 | diff --git a/sshconnect.c b/sshconnect.c |
22 | index 7ce2716c..3280b310 100644 | 22 | index 58f9eac8..15d8b807 100644 |
23 | --- a/sshconnect.c | 23 | --- a/sshconnect.c |
24 | +++ b/sshconnect.c | 24 | +++ b/sshconnect.c |
25 | @@ -517,7 +517,7 @@ send_client_banner(int connection_out, int minor1) | 25 | @@ -638,7 +638,7 @@ send_client_banner(int connection_out, int minor1) |
26 | { | 26 | { |
27 | /* Send our own protocol version identification. */ | 27 | /* Send our own protocol version identification. */ |
28 | xasprintf(&client_version_string, "SSH-%d.%d-%.100s\r\n", | 28 | xasprintf(&client_version_string, "SSH-%d.%d-%.100s\r\n", |
@@ -32,10 +32,10 @@ index 7ce2716c..3280b310 100644 | |||
32 | strlen(client_version_string)) != strlen(client_version_string)) | 32 | strlen(client_version_string)) != strlen(client_version_string)) |
33 | fatal("write: %.100s", strerror(errno)); | 33 | fatal("write: %.100s", strerror(errno)); |
34 | diff --git a/sshd.c b/sshd.c | 34 | diff --git a/sshd.c b/sshd.c |
35 | index af1ec337..eccf81bb 100644 | 35 | index 6d911c19..9a7f5495 100644 |
36 | --- a/sshd.c | 36 | --- a/sshd.c |
37 | +++ b/sshd.c | 37 | +++ b/sshd.c |
38 | @@ -378,7 +378,7 @@ sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out) | 38 | @@ -384,7 +384,7 @@ sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out) |
39 | char remote_version[256]; /* Must be at least as big as buf. */ | 39 | char remote_version[256]; /* Must be at least as big as buf. */ |
40 | 40 | ||
41 | xasprintf(&server_version_string, "SSH-%d.%d-%.100s%s%s\r\n", | 41 | xasprintf(&server_version_string, "SSH-%d.%d-%.100s%s%s\r\n", |
@@ -45,11 +45,11 @@ index af1ec337..eccf81bb 100644 | |||
45 | options.version_addendum); | 45 | options.version_addendum); |
46 | 46 | ||
47 | diff --git a/version.h b/version.h | 47 | diff --git a/version.h b/version.h |
48 | index e093f623..b7c5ad2a 100644 | 48 | index ea52b26f..a3fa6e0b 100644 |
49 | --- a/version.h | 49 | --- a/version.h |
50 | +++ b/version.h | 50 | +++ b/version.h |
51 | @@ -3,4 +3,9 @@ | 51 | @@ -3,4 +3,9 @@ |
52 | #define SSH_VERSION "OpenSSH_7.6" | 52 | #define SSH_VERSION "OpenSSH_7.7" |
53 | 53 | ||
54 | #define SSH_PORTABLE "p1" | 54 | #define SSH_PORTABLE "p1" |
55 | -#define SSH_RELEASE SSH_VERSION SSH_PORTABLE | 55 | -#define SSH_RELEASE SSH_VERSION SSH_PORTABLE |
diff --git a/debian/patches/permitopen-argument-handling.patch b/debian/patches/permitopen-argument-handling.patch deleted file mode 100644 index 6369c395c..000000000 --- a/debian/patches/permitopen-argument-handling.patch +++ /dev/null | |||
@@ -1,51 +0,0 @@ | |||
1 | From e293f21da513a7db59fe1997c9e90e2e9cdbceda Mon Sep 17 00:00:00 2001 | ||
2 | From: "djm@openbsd.org" <djm@openbsd.org> | ||
3 | Date: Wed, 4 Oct 2017 18:49:30 +0000 | ||
4 | Subject: Fix PermitOpen argument handling | ||
5 | |||
6 | fix (another) problem in PermitOpen introduced during the | ||
7 | channels.c refactor: the third and subsequent arguments to PermitOpen were | ||
8 | being silently ignored; ok markus@ | ||
9 | |||
10 | Upstream-ID: 067c89f1f53cbc381628012ba776d6861e6782fd | ||
11 | |||
12 | Origin: https://anongit.mindrot.org/openssh.git/commit/?id=7c9613fac3371cf65fb07739212cdd1ebf6575da | ||
13 | Last-Update: 2017-10-07 | ||
14 | |||
15 | Patch-Name: permitopen-argument-handling.patch | ||
16 | --- | ||
17 | servconf.c | 8 ++++---- | ||
18 | 1 file changed, 4 insertions(+), 4 deletions(-) | ||
19 | |||
20 | diff --git a/servconf.c b/servconf.c | ||
21 | index 5e996cf8..9daa182c 100644 | ||
22 | --- a/servconf.c | ||
23 | +++ b/servconf.c | ||
24 | @@ -1,5 +1,5 @@ | ||
25 | |||
26 | -/* $OpenBSD: servconf.c,v 1.312 2017/10/02 19:33:20 djm Exp $ */ | ||
27 | +/* $OpenBSD: servconf.c,v 1.313 2017/10/04 18:49:30 djm Exp $ */ | ||
28 | /* | ||
29 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | ||
30 | * All rights reserved | ||
31 | @@ -1690,9 +1690,9 @@ process_server_config_line(ServerOptions *options, char *line, | ||
32 | if (!arg || *arg == '\0') | ||
33 | fatal("%s line %d: missing PermitOpen specification", | ||
34 | filename, linenum); | ||
35 | - i = options->num_permitted_opens; /* modified later */ | ||
36 | + value = options->num_permitted_opens; /* modified later */ | ||
37 | if (strcmp(arg, "any") == 0 || strcmp(arg, "none") == 0) { | ||
38 | - if (*activep && i == 0) { | ||
39 | + if (*activep && value == 0) { | ||
40 | options->num_permitted_opens = 1; | ||
41 | options->permitted_opens = xcalloc(1, | ||
42 | sizeof(*options->permitted_opens)); | ||
43 | @@ -1710,7 +1710,7 @@ process_server_config_line(ServerOptions *options, char *line, | ||
44 | if (arg == NULL || ((port = permitopen_port(arg)) < 0)) | ||
45 | fatal("%s line %d: bad port number in " | ||
46 | "PermitOpen", filename, linenum); | ||
47 | - if (*activep && i == 0) { | ||
48 | + if (*activep && value == 0) { | ||
49 | options->permitted_opens = xrecallocarray( | ||
50 | options->permitted_opens, | ||
51 | options->num_permitted_opens, | ||
diff --git a/debian/patches/restore-authorized_keys2.patch b/debian/patches/restore-authorized_keys2.patch index 098f9d681..2e680f5ce 100644 --- a/debian/patches/restore-authorized_keys2.patch +++ b/debian/patches/restore-authorized_keys2.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 6c2e9847f608cc9c36236eecc58241cd3358dd5b Mon Sep 17 00:00:00 2001 | 1 | From 1e4b9d8e6cee1e15edfc12aa0294fa78639496b9 Mon Sep 17 00:00:00 2001 |
2 | From: Colin Watson <cjwatson@debian.org> | 2 | From: Colin Watson <cjwatson@debian.org> |
3 | Date: Sun, 5 Mar 2017 02:02:11 +0000 | 3 | Date: Sun, 5 Mar 2017 02:02:11 +0000 |
4 | Subject: Restore reading authorized_keys2 by default | 4 | Subject: Restore reading authorized_keys2 by default |
@@ -18,7 +18,7 @@ Patch-Name: restore-authorized_keys2.patch | |||
18 | 1 file changed, 2 insertions(+), 3 deletions(-) | 18 | 1 file changed, 2 insertions(+), 3 deletions(-) |
19 | 19 | ||
20 | diff --git a/sshd_config b/sshd_config | 20 | diff --git a/sshd_config b/sshd_config |
21 | index 92822959..a32dc1d4 100644 | 21 | index de9cc9fe..31e14a4f 100644 |
22 | --- a/sshd_config | 22 | --- a/sshd_config |
23 | +++ b/sshd_config | 23 | +++ b/sshd_config |
24 | @@ -36,9 +36,8 @@ | 24 | @@ -36,9 +36,8 @@ |
diff --git a/debian/patches/restore-tcp-wrappers.patch b/debian/patches/restore-tcp-wrappers.patch index 5832897d2..4132937da 100644 --- a/debian/patches/restore-tcp-wrappers.patch +++ b/debian/patches/restore-tcp-wrappers.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From cdd9076a145a95c21538eedb3f728a897480c5de Mon Sep 17 00:00:00 2001 | 1 | From 398af3d66bfe8dc7d436570026571e522a0a13a0 Mon Sep 17 00:00:00 2001 |
2 | From: Colin Watson <cjwatson@debian.org> | 2 | From: Colin Watson <cjwatson@debian.org> |
3 | Date: Tue, 7 Oct 2014 13:22:41 +0100 | 3 | Date: Tue, 7 Oct 2014 13:22:41 +0100 |
4 | Subject: Restore TCP wrappers support | 4 | Subject: 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 | ||
30 | diff --git a/configure.ac b/configure.ac | 30 | diff --git a/configure.ac b/configure.ac |
31 | index 84bfad8c..3b30736b 100644 | 31 | index 1cd5eab6..3e23e60d 100644 |
32 | --- a/configure.ac | 32 | --- a/configure.ac |
33 | +++ b/configure.ac | 33 | +++ b/configure.ac |
34 | @@ -1503,6 +1503,62 @@ AC_ARG_WITH([skey], | 34 | @@ -1566,6 +1566,62 @@ AC_ARG_WITH([skey], |
35 | ] | 35 | ] |
36 | ) | 36 | ) |
37 | 37 | ||
@@ -94,19 +94,19 @@ index 84bfad8c..3b30736b 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 | @@ -5133,6 +5189,7 @@ echo " KerberosV support: $KRB5_MSG" | 97 | @@ -5240,6 +5296,7 @@ echo " OSF SIA support: $SIA_MSG" |
98 | echo " KerberosV support: $KRB5_MSG" | ||
98 | echo " SELinux support: $SELINUX_MSG" | 99 | echo " SELinux support: $SELINUX_MSG" |
99 | echo " Smartcard support: $SCARD_MSG" | ||
100 | echo " S/KEY support: $SKEY_MSG" | 100 | echo " S/KEY support: $SKEY_MSG" |
101 | +echo " TCP Wrappers support: $TCPW_MSG" | 101 | +echo " TCP Wrappers support: $TCPW_MSG" |
102 | echo " MD5 password support: $MD5_MSG" | 102 | echo " MD5 password support: $MD5_MSG" |
103 | echo " libedit support: $LIBEDIT_MSG" | 103 | echo " libedit support: $LIBEDIT_MSG" |
104 | echo " libldns support: $LDNS_MSG" | 104 | echo " libldns support: $LDNS_MSG" |
105 | diff --git a/sshd.8 b/sshd.8 | 105 | diff --git a/sshd.8 b/sshd.8 |
106 | index a4201146..2ed523a2 100644 | 106 | index 968ba66b..c8299d5e 100644 |
107 | --- a/sshd.8 | 107 | --- a/sshd.8 |
108 | +++ b/sshd.8 | 108 | +++ b/sshd.8 |
109 | @@ -839,6 +839,12 @@ the user's home directory becomes accessible. | 109 | @@ -845,6 +845,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 a4201146..2ed523a2 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 | @@ -943,6 +949,7 @@ The content of this file is not sensitive; it can be world-readable. | 122 | @@ -947,6 +953,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 a4201146..2ed523a2 100644 | |||
128 | .Xr moduli 5 , | 128 | .Xr moduli 5 , |
129 | .Xr sshd_config 5 , | 129 | .Xr sshd_config 5 , |
130 | diff --git a/sshd.c b/sshd.c | 130 | diff --git a/sshd.c b/sshd.c |
131 | index 45e50fac..a66e9ca6 100644 | 131 | index e88185ef..4ed0364f 100644 |
132 | --- a/sshd.c | 132 | --- a/sshd.c |
133 | +++ b/sshd.c | 133 | +++ b/sshd.c |
134 | @@ -126,6 +126,13 @@ | 134 | @@ -127,6 +127,13 @@ |
135 | #include <Security/AuthSession.h> | 135 | #include <Security/AuthSession.h> |
136 | #endif | 136 | #endif |
137 | 137 | ||
@@ -145,7 +145,7 @@ index 45e50fac..a66e9ca6 100644 | |||
145 | /* Re-exec fds */ | 145 | /* Re-exec fds */ |
146 | #define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1) | 146 | #define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1) |
147 | #define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2) | 147 | #define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2) |
148 | @@ -1987,6 +1994,24 @@ main(int ac, char **av) | 148 | @@ -2042,6 +2049,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 |
@@ -168,5 +168,5 @@ index 45e50fac..a66e9ca6 100644 | |||
168 | + } | 168 | + } |
169 | +#endif /* LIBWRAP */ | 169 | +#endif /* LIBWRAP */ |
170 | 170 | ||
171 | /* Log the connection. */ | 171 | rdomain = ssh_packet_rdomain_in(ssh); |
172 | laddr = get_local_ipaddr(sock_in); | 172 | |
diff --git a/debian/patches/scp-quoting.patch b/debian/patches/scp-quoting.patch index 43153ec04..d969d5e8e 100644 --- a/debian/patches/scp-quoting.patch +++ b/debian/patches/scp-quoting.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From ef7aa8189491e0b43f14f7f15fb5e66903f7e185 Mon Sep 17 00:00:00 2001 | 1 | From e800454207f4d7a0c402f129029b8282209cdf74 Mon Sep 17 00:00:00 2001 |
2 | From: =?UTF-8?q?Nicolas=20Valc=C3=A1rcel?= <nvalcarcel@ubuntu.com> | 2 | From: =?UTF-8?q?Nicolas=20Valc=C3=A1rcel?= <nvalcarcel@ubuntu.com> |
3 | Date: Sun, 9 Feb 2014 16:09:59 +0000 | 3 | Date: Sun, 9 Feb 2014 16:09:59 +0000 |
4 | Subject: Adjust scp quoting in verbose mode | 4 | Subject: 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 | ||
19 | diff --git a/scp.c b/scp.c | 19 | diff --git a/scp.c b/scp.c |
20 | index a533eb09..12e3199d 100644 | 20 | index 31e6709f..2bbf6938 100644 |
21 | --- a/scp.c | 21 | --- a/scp.c |
22 | +++ b/scp.c | 22 | +++ b/scp.c |
23 | @@ -194,8 +194,16 @@ do_local_cmd(arglist *a) | 23 | @@ -198,8 +198,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/seccomp-getuid-geteuid.patch b/debian/patches/seccomp-getuid-geteuid.patch index 41455aa83..293322e9c 100644 --- a/debian/patches/seccomp-getuid-geteuid.patch +++ b/debian/patches/seccomp-getuid-geteuid.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 8165600205696cca8a080a5cb6746070512174e9 Mon Sep 17 00:00:00 2001 | 1 | From 5b35741e661c6a95e39f5f897ae62c0f3686ca4f Mon Sep 17 00:00:00 2001 |
2 | From: Eduardo Barretto <ebarretto@linux.vnet.ibm.com> | 2 | From: Eduardo Barretto <ebarretto@linux.vnet.ibm.com> |
3 | Date: Tue, 9 May 2017 13:31:05 -0300 | 3 | Date: Tue, 9 May 2017 13:31:05 -0300 |
4 | Subject: Allow getuid and geteuid calls | 4 | Subject: Allow getuid and geteuid calls |
diff --git a/debian/patches/seccomp-s390-flock-ipc.patch b/debian/patches/seccomp-s390-flock-ipc.patch index 5fb94137d..030d8f417 100644 --- a/debian/patches/seccomp-s390-flock-ipc.patch +++ b/debian/patches/seccomp-s390-flock-ipc.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From a5a99443e190a90eb511215aa7c1fa940f79b901 Mon Sep 17 00:00:00 2001 | 1 | From 8435aa5e322a4899dcb9bc68d5f0551e93d3f5a5 Mon Sep 17 00:00:00 2001 |
2 | From: Eduardo Barretto <ebarretto@linux.vnet.ibm.com> | 2 | From: Eduardo Barretto <ebarretto@linux.vnet.ibm.com> |
3 | Date: Tue, 9 May 2017 10:53:04 -0300 | 3 | Date: Tue, 9 May 2017 10:53:04 -0300 |
4 | Subject: Allow flock and ipc syscall for s390 architecture | 4 | Subject: Allow flock and ipc syscall for s390 architecture |
diff --git a/debian/patches/seccomp-s390-ioctl-ep11-crypto.patch b/debian/patches/seccomp-s390-ioctl-ep11-crypto.patch index 595b3d6ec..77606886d 100644 --- a/debian/patches/seccomp-s390-ioctl-ep11-crypto.patch +++ b/debian/patches/seccomp-s390-ioctl-ep11-crypto.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 801a62eedaaf47b20dbf4b426dc3e084bf0c8d49 Mon Sep 17 00:00:00 2001 | 1 | From ea67bc97339c9a507343e4a1f5fb867f678fbe1d Mon Sep 17 00:00:00 2001 |
2 | From: Eduardo Barretto <ebarretto@linux.vnet.ibm.com> | 2 | From: Eduardo Barretto <ebarretto@linux.vnet.ibm.com> |
3 | Date: Tue, 9 May 2017 13:33:30 -0300 | 3 | Date: Tue, 9 May 2017 13:33:30 -0300 |
4 | Subject: Enable specific ioctl call for EP11 crypto card (s390) | 4 | Subject: Enable specific ioctl call for EP11 crypto card (s390) |
diff --git a/debian/patches/selinux-role.patch b/debian/patches/selinux-role.patch index 1402b9025..5662207cd 100644 --- a/debian/patches/selinux-role.patch +++ b/debian/patches/selinux-role.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 4b276122c04aed0726803a92c8ca955e614a4d3a Mon Sep 17 00:00:00 2001 | 1 | From 7da968d97beba5fb80a5488516563ea1376db907 Mon Sep 17 00:00:00 2001 |
2 | From: Manoj Srivastava <srivasta@debian.org> | 2 | From: Manoj Srivastava <srivasta@debian.org> |
3 | Date: Sun, 9 Feb 2014 16:09:49 +0000 | 3 | Date: Sun, 9 Feb 2014 16:09:49 +0000 |
4 | Subject: Handle SELinux authorisation roles | 4 | Subject: Handle SELinux authorisation roles |
@@ -31,10 +31,10 @@ Patch-Name: selinux-role.patch | |||
31 | 15 files changed, 97 insertions(+), 30 deletions(-) | 31 | 15 files changed, 97 insertions(+), 30 deletions(-) |
32 | 32 | ||
33 | diff --git a/auth.h b/auth.h | 33 | diff --git a/auth.h b/auth.h |
34 | index 29835ae9..27a1a88e 100644 | 34 | index 23ce67ca..15ba7073 100644 |
35 | --- a/auth.h | 35 | --- a/auth.h |
36 | +++ b/auth.h | 36 | +++ b/auth.h |
37 | @@ -63,6 +63,7 @@ struct Authctxt { | 37 | @@ -65,6 +65,7 @@ struct Authctxt { |
38 | char *service; | 38 | char *service; |
39 | struct passwd *pw; /* set if 'valid' */ | 39 | struct passwd *pw; /* set if 'valid' */ |
40 | char *style; | 40 | char *style; |
@@ -43,10 +43,10 @@ index 29835ae9..27a1a88e 100644 | |||
43 | /* Method lists for multiple authentication */ | 43 | /* Method lists for multiple authentication */ |
44 | char **auth_methods; /* modified from server config */ | 44 | char **auth_methods; /* modified from server config */ |
45 | diff --git a/auth2.c b/auth2.c | 45 | diff --git a/auth2.c b/auth2.c |
46 | index 54070e3a..1f9ec632 100644 | 46 | index c34f58c4..be5e9f15 100644 |
47 | --- a/auth2.c | 47 | --- a/auth2.c |
48 | +++ b/auth2.c | 48 | +++ b/auth2.c |
49 | @@ -221,7 +221,7 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) | 49 | @@ -218,7 +218,7 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) |
50 | { | 50 | { |
51 | Authctxt *authctxt = ssh->authctxt; | 51 | Authctxt *authctxt = ssh->authctxt; |
52 | Authmethod *m = NULL; | 52 | Authmethod *m = NULL; |
@@ -55,7 +55,7 @@ index 54070e3a..1f9ec632 100644 | |||
55 | int authenticated = 0; | 55 | int authenticated = 0; |
56 | 56 | ||
57 | if (authctxt == NULL) | 57 | if (authctxt == NULL) |
58 | @@ -233,8 +233,13 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) | 58 | @@ -230,8 +230,13 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) |
59 | debug("userauth-request for user %s service %s method %s", user, service, method); | 59 | debug("userauth-request for user %s service %s method %s", user, service, method); |
60 | debug("attempt %d failures %d", authctxt->attempt, authctxt->failures); | 60 | debug("attempt %d failures %d", authctxt->attempt, authctxt->failures); |
61 | 61 | ||
@@ -69,7 +69,7 @@ index 54070e3a..1f9ec632 100644 | |||
69 | 69 | ||
70 | if (authctxt->attempt++ == 0) { | 70 | if (authctxt->attempt++ == 0) { |
71 | /* setup auth context */ | 71 | /* setup auth context */ |
72 | @@ -261,8 +266,9 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) | 72 | @@ -258,8 +263,9 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) |
73 | use_privsep ? " [net]" : ""); | 73 | use_privsep ? " [net]" : ""); |
74 | authctxt->service = xstrdup(service); | 74 | authctxt->service = xstrdup(service); |
75 | authctxt->style = style ? xstrdup(style) : NULL; | 75 | authctxt->style = style ? xstrdup(style) : NULL; |
@@ -81,10 +81,10 @@ index 54070e3a..1f9ec632 100644 | |||
81 | if (auth2_setup_methods_lists(authctxt) != 0) | 81 | if (auth2_setup_methods_lists(authctxt) != 0) |
82 | packet_disconnect("no authentication methods enabled"); | 82 | packet_disconnect("no authentication methods enabled"); |
83 | diff --git a/monitor.c b/monitor.c | 83 | diff --git a/monitor.c b/monitor.c |
84 | index cabfeb8a..510e3496 100644 | 84 | index 868fb0d2..ed37458f 100644 |
85 | --- a/monitor.c | 85 | --- a/monitor.c |
86 | +++ b/monitor.c | 86 | +++ b/monitor.c |
87 | @@ -127,6 +127,7 @@ int mm_answer_sign(int, Buffer *); | 87 | @@ -128,6 +128,7 @@ int mm_answer_sign(int, Buffer *); |
88 | int mm_answer_pwnamallow(int, Buffer *); | 88 | int mm_answer_pwnamallow(int, Buffer *); |
89 | int mm_answer_auth2_read_banner(int, Buffer *); | 89 | int mm_answer_auth2_read_banner(int, Buffer *); |
90 | int mm_answer_authserv(int, Buffer *); | 90 | int mm_answer_authserv(int, Buffer *); |
@@ -92,7 +92,7 @@ index cabfeb8a..510e3496 100644 | |||
92 | int mm_answer_authpassword(int, Buffer *); | 92 | int mm_answer_authpassword(int, Buffer *); |
93 | int mm_answer_bsdauthquery(int, Buffer *); | 93 | int mm_answer_bsdauthquery(int, Buffer *); |
94 | int mm_answer_bsdauthrespond(int, Buffer *); | 94 | int mm_answer_bsdauthrespond(int, Buffer *); |
95 | @@ -204,6 +205,7 @@ struct mon_table mon_dispatch_proto20[] = { | 95 | @@ -206,6 +207,7 @@ struct mon_table mon_dispatch_proto20[] = { |
96 | {MONITOR_REQ_SIGN, MON_ONCE, mm_answer_sign}, | 96 | {MONITOR_REQ_SIGN, MON_ONCE, mm_answer_sign}, |
97 | {MONITOR_REQ_PWNAM, MON_ONCE, mm_answer_pwnamallow}, | 97 | {MONITOR_REQ_PWNAM, MON_ONCE, mm_answer_pwnamallow}, |
98 | {MONITOR_REQ_AUTHSERV, MON_ONCE, mm_answer_authserv}, | 98 | {MONITOR_REQ_AUTHSERV, MON_ONCE, mm_answer_authserv}, |
@@ -100,7 +100,7 @@ index cabfeb8a..510e3496 100644 | |||
100 | {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}, |
101 | {MONITOR_REQ_AUTHPASSWORD, MON_AUTH, mm_answer_authpassword}, | 101 | {MONITOR_REQ_AUTHPASSWORD, MON_AUTH, mm_answer_authpassword}, |
102 | #ifdef USE_PAM | 102 | #ifdef USE_PAM |
103 | @@ -799,6 +801,7 @@ mm_answer_pwnamallow(int sock, Buffer *m) | 103 | @@ -806,6 +808,7 @@ mm_answer_pwnamallow(int sock, Buffer *m) |
104 | 104 | ||
105 | /* Allow service/style information on the auth context */ | 105 | /* Allow service/style information on the auth context */ |
106 | monitor_permit(mon_dispatch, MONITOR_REQ_AUTHSERV, 1); | 106 | monitor_permit(mon_dispatch, MONITOR_REQ_AUTHSERV, 1); |
@@ -108,7 +108,7 @@ index cabfeb8a..510e3496 100644 | |||
108 | monitor_permit(mon_dispatch, MONITOR_REQ_AUTH2_READ_BANNER, 1); | 108 | monitor_permit(mon_dispatch, MONITOR_REQ_AUTH2_READ_BANNER, 1); |
109 | 109 | ||
110 | #ifdef USE_PAM | 110 | #ifdef USE_PAM |
111 | @@ -829,14 +832,37 @@ mm_answer_authserv(int sock, Buffer *m) | 111 | @@ -836,14 +839,37 @@ mm_answer_authserv(int sock, Buffer *m) |
112 | 112 | ||
113 | authctxt->service = buffer_get_string(m, NULL); | 113 | authctxt->service = buffer_get_string(m, NULL); |
114 | authctxt->style = buffer_get_string(m, NULL); | 114 | authctxt->style = buffer_get_string(m, NULL); |
@@ -148,7 +148,7 @@ index cabfeb8a..510e3496 100644 | |||
148 | return (0); | 148 | return (0); |
149 | } | 149 | } |
150 | 150 | ||
151 | @@ -1471,7 +1497,7 @@ mm_answer_pty(int sock, Buffer *m) | 151 | @@ -1497,7 +1523,7 @@ mm_answer_pty(int sock, Buffer *m) |
152 | 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)); |
153 | if (res == 0) | 153 | if (res == 0) |
154 | goto error; | 154 | goto error; |
@@ -171,10 +171,10 @@ index ec41404c..4c7955d7 100644 | |||
171 | 171 | ||
172 | struct monitor { | 172 | struct monitor { |
173 | diff --git a/monitor_wrap.c b/monitor_wrap.c | 173 | diff --git a/monitor_wrap.c b/monitor_wrap.c |
174 | index 0e171a6a..d806bb2e 100644 | 174 | index e749efc1..7b2d06c6 100644 |
175 | --- a/monitor_wrap.c | 175 | --- a/monitor_wrap.c |
176 | +++ b/monitor_wrap.c | 176 | +++ b/monitor_wrap.c |
177 | @@ -336,10 +336,10 @@ mm_auth2_read_banner(void) | 177 | @@ -331,10 +331,10 @@ mm_auth2_read_banner(void) |
178 | return (banner); | 178 | return (banner); |
179 | } | 179 | } |
180 | 180 | ||
@@ -187,7 +187,7 @@ index 0e171a6a..d806bb2e 100644 | |||
187 | { | 187 | { |
188 | Buffer m; | 188 | Buffer m; |
189 | 189 | ||
190 | @@ -348,12 +348,30 @@ mm_inform_authserv(char *service, char *style) | 190 | @@ -343,12 +343,30 @@ mm_inform_authserv(char *service, char *style) |
191 | buffer_init(&m); | 191 | buffer_init(&m); |
192 | buffer_put_cstring(&m, service); | 192 | buffer_put_cstring(&m, service); |
193 | buffer_put_cstring(&m, style ? style : ""); | 193 | buffer_put_cstring(&m, style ? style : ""); |
@@ -217,12 +217,12 @@ index 0e171a6a..d806bb2e 100644 | |||
217 | + | 217 | + |
218 | /* Do the password authentication */ | 218 | /* Do the password authentication */ |
219 | int | 219 | int |
220 | mm_auth_password(Authctxt *authctxt, char *password) | 220 | mm_auth_password(struct ssh *ssh, char *password) |
221 | diff --git a/monitor_wrap.h b/monitor_wrap.h | 221 | diff --git a/monitor_wrap.h b/monitor_wrap.h |
222 | index 7b2e8945..a9ccb243 100644 | 222 | index 0970d1f8..492de5c8 100644 |
223 | --- a/monitor_wrap.h | 223 | --- a/monitor_wrap.h |
224 | +++ b/monitor_wrap.h | 224 | +++ b/monitor_wrap.h |
225 | @@ -41,7 +41,8 @@ int mm_is_monitor(void); | 225 | @@ -43,7 +43,8 @@ int mm_is_monitor(void); |
226 | DH *mm_choose_dh(int, int, int); | 226 | DH *mm_choose_dh(int, int, int); |
227 | int mm_key_sign(struct sshkey *, u_char **, u_int *, const u_char *, u_int, | 227 | int mm_key_sign(struct sshkey *, u_char **, u_int *, const u_char *, u_int, |
228 | const char *); | 228 | const char *); |
@@ -231,9 +231,9 @@ index 7b2e8945..a9ccb243 100644 | |||
231 | +void mm_inform_authrole(char *); | 231 | +void mm_inform_authrole(char *); |
232 | struct passwd *mm_getpwnamallow(const char *); | 232 | struct passwd *mm_getpwnamallow(const char *); |
233 | char *mm_auth2_read_banner(void); | 233 | char *mm_auth2_read_banner(void); |
234 | int mm_auth_password(struct Authctxt *, char *); | 234 | int mm_auth_password(struct ssh *, char *); |
235 | diff --git a/openbsd-compat/port-linux.c b/openbsd-compat/port-linux.c | 235 | diff --git a/openbsd-compat/port-linux.c b/openbsd-compat/port-linux.c |
236 | index e4c5d1b7..e26faf08 100644 | 236 | index 8c5325cc..8a3e5c68 100644 |
237 | --- a/openbsd-compat/port-linux.c | 237 | --- a/openbsd-compat/port-linux.c |
238 | +++ b/openbsd-compat/port-linux.c | 238 | +++ b/openbsd-compat/port-linux.c |
239 | @@ -27,6 +27,12 @@ | 239 | @@ -27,6 +27,12 @@ |
@@ -249,7 +249,7 @@ index e4c5d1b7..e26faf08 100644 | |||
249 | #include "log.h" | 249 | #include "log.h" |
250 | #include "xmalloc.h" | 250 | #include "xmalloc.h" |
251 | #include "port-linux.h" | 251 | #include "port-linux.h" |
252 | @@ -56,7 +62,7 @@ ssh_selinux_enabled(void) | 252 | @@ -55,7 +61,7 @@ ssh_selinux_enabled(void) |
253 | 253 | ||
254 | /* Return the default security context for the given username */ | 254 | /* Return the default security context for the given username */ |
255 | static security_context_t | 255 | static security_context_t |
@@ -258,7 +258,7 @@ index e4c5d1b7..e26faf08 100644 | |||
258 | { | 258 | { |
259 | security_context_t sc = NULL; | 259 | security_context_t sc = NULL; |
260 | char *sename = NULL, *lvl = NULL; | 260 | char *sename = NULL, *lvl = NULL; |
261 | @@ -71,9 +77,16 @@ ssh_selinux_getctxbyname(char *pwname) | 261 | @@ -70,9 +76,16 @@ ssh_selinux_getctxbyname(char *pwname) |
262 | #endif | 262 | #endif |
263 | 263 | ||
264 | #ifdef HAVE_GET_DEFAULT_CONTEXT_WITH_LEVEL | 264 | #ifdef HAVE_GET_DEFAULT_CONTEXT_WITH_LEVEL |
@@ -277,7 +277,7 @@ index e4c5d1b7..e26faf08 100644 | |||
277 | #endif | 277 | #endif |
278 | 278 | ||
279 | if (r != 0) { | 279 | if (r != 0) { |
280 | @@ -103,7 +116,7 @@ ssh_selinux_getctxbyname(char *pwname) | 280 | @@ -102,7 +115,7 @@ ssh_selinux_getctxbyname(char *pwname) |
281 | 281 | ||
282 | /* Set the execution context to the default for the specified user */ | 282 | /* Set the execution context to the default for the specified user */ |
283 | void | 283 | void |
@@ -286,7 +286,7 @@ index e4c5d1b7..e26faf08 100644 | |||
286 | { | 286 | { |
287 | security_context_t user_ctx = NULL; | 287 | security_context_t user_ctx = NULL; |
288 | 288 | ||
289 | @@ -112,7 +125,7 @@ ssh_selinux_setup_exec_context(char *pwname) | 289 | @@ -111,7 +124,7 @@ ssh_selinux_setup_exec_context(char *pwname) |
290 | 290 | ||
291 | debug3("%s: setting execution context", __func__); | 291 | debug3("%s: setting execution context", __func__); |
292 | 292 | ||
@@ -295,7 +295,7 @@ index e4c5d1b7..e26faf08 100644 | |||
295 | if (setexeccon(user_ctx) != 0) { | 295 | if (setexeccon(user_ctx) != 0) { |
296 | switch (security_getenforce()) { | 296 | switch (security_getenforce()) { |
297 | case -1: | 297 | case -1: |
298 | @@ -134,7 +147,7 @@ ssh_selinux_setup_exec_context(char *pwname) | 298 | @@ -133,7 +146,7 @@ ssh_selinux_setup_exec_context(char *pwname) |
299 | 299 | ||
300 | /* Set the TTY context for the specified user */ | 300 | /* Set the TTY context for the specified user */ |
301 | void | 301 | void |
@@ -364,10 +364,10 @@ index ea4f9c58..60d72ffe 100644 | |||
364 | char *platform_krb5_get_principal_name(const char *); | 364 | char *platform_krb5_get_principal_name(const char *); |
365 | int platform_sys_dir_uid(uid_t); | 365 | int platform_sys_dir_uid(uid_t); |
366 | diff --git a/session.c b/session.c | 366 | diff --git a/session.c b/session.c |
367 | index 4bccb62d..d40afe4f 100644 | 367 | index 58826db1..ff301c98 100644 |
368 | --- a/session.c | 368 | --- a/session.c |
369 | +++ b/session.c | 369 | +++ b/session.c |
370 | @@ -1312,7 +1312,7 @@ safely_chroot(const char *path, uid_t uid) | 370 | @@ -1322,7 +1322,7 @@ safely_chroot(const char *path, uid_t uid) |
371 | 371 | ||
372 | /* Set login name, uid, gid, and groups. */ | 372 | /* Set login name, uid, gid, and groups. */ |
373 | void | 373 | void |
@@ -376,7 +376,7 @@ index 4bccb62d..d40afe4f 100644 | |||
376 | { | 376 | { |
377 | char *chroot_path, *tmp; | 377 | char *chroot_path, *tmp; |
378 | 378 | ||
379 | @@ -1340,7 +1340,7 @@ do_setusercontext(struct passwd *pw) | 379 | @@ -1350,7 +1350,7 @@ do_setusercontext(struct passwd *pw) |
380 | endgrent(); | 380 | endgrent(); |
381 | #endif | 381 | #endif |
382 | 382 | ||
@@ -385,7 +385,7 @@ index 4bccb62d..d40afe4f 100644 | |||
385 | 385 | ||
386 | if (!in_chroot && options.chroot_directory != NULL && | 386 | if (!in_chroot && options.chroot_directory != NULL && |
387 | strcasecmp(options.chroot_directory, "none") != 0) { | 387 | strcasecmp(options.chroot_directory, "none") != 0) { |
388 | @@ -1477,7 +1477,7 @@ do_child(struct ssh *ssh, Session *s, const char *command) | 388 | @@ -1487,7 +1487,7 @@ do_child(struct ssh *ssh, Session *s, const char *command) |
389 | 389 | ||
390 | /* Force a password change */ | 390 | /* Force a password change */ |
391 | if (s->authctxt->force_pwchange) { | 391 | if (s->authctxt->force_pwchange) { |
@@ -394,7 +394,7 @@ index 4bccb62d..d40afe4f 100644 | |||
394 | child_close_fds(ssh); | 394 | child_close_fds(ssh); |
395 | do_pwchange(s); | 395 | do_pwchange(s); |
396 | exit(1); | 396 | exit(1); |
397 | @@ -1499,7 +1499,7 @@ do_child(struct ssh *ssh, Session *s, const char *command) | 397 | @@ -1505,7 +1505,7 @@ do_child(struct ssh *ssh, Session *s, const char *command) |
398 | /* 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 */ |
399 | if (!options.use_pam) | 399 | if (!options.use_pam) |
400 | do_nologin(pw); | 400 | do_nologin(pw); |
@@ -403,7 +403,7 @@ index 4bccb62d..d40afe4f 100644 | |||
403 | /* | 403 | /* |
404 | * PAM session modules in do_setusercontext may have | 404 | * PAM session modules in do_setusercontext may have |
405 | * generated messages, so if this in an interactive | 405 | * generated messages, so if this in an interactive |
406 | @@ -1891,7 +1891,7 @@ session_pty_req(struct ssh *ssh, Session *s) | 406 | @@ -1897,7 +1897,7 @@ session_pty_req(struct ssh *ssh, Session *s) |
407 | tty_parse_modes(s->ttyfd, &n_bytes); | 407 | tty_parse_modes(s->ttyfd, &n_bytes); |
408 | 408 | ||
409 | if (!use_privsep) | 409 | if (!use_privsep) |
@@ -426,10 +426,10 @@ index 54dd1f0c..8535ebce 100644 | |||
426 | const char *session_get_remote_name_or_ip(struct ssh *, u_int, int); | 426 | const char *session_get_remote_name_or_ip(struct ssh *, u_int, int); |
427 | 427 | ||
428 | diff --git a/sshd.c b/sshd.c | 428 | diff --git a/sshd.c b/sshd.c |
429 | index a66e9ca6..af1ec337 100644 | 429 | index 4ed0364f..6d911c19 100644 |
430 | --- a/sshd.c | 430 | --- a/sshd.c |
431 | +++ b/sshd.c | 431 | +++ b/sshd.c |
432 | @@ -677,7 +677,7 @@ privsep_postauth(Authctxt *authctxt) | 432 | @@ -679,7 +679,7 @@ privsep_postauth(Authctxt *authctxt) |
433 | reseed_prngs(); | 433 | reseed_prngs(); |
434 | 434 | ||
435 | /* Drop privileges */ | 435 | /* Drop privileges */ |
@@ -439,10 +439,10 @@ index a66e9ca6..af1ec337 100644 | |||
439 | skip: | 439 | skip: |
440 | /* It is safe now to apply the key state */ | 440 | /* It is safe now to apply the key state */ |
441 | diff --git a/sshpty.c b/sshpty.c | 441 | diff --git a/sshpty.c b/sshpty.c |
442 | index fe2fb5aa..feb22b06 100644 | 442 | index 4da84d05..676ade50 100644 |
443 | --- a/sshpty.c | 443 | --- a/sshpty.c |
444 | +++ b/sshpty.c | 444 | +++ b/sshpty.c |
445 | @@ -187,7 +187,7 @@ pty_change_window_size(int ptyfd, u_int row, u_int col, | 445 | @@ -162,7 +162,7 @@ pty_change_window_size(int ptyfd, u_int row, u_int col, |
446 | } | 446 | } |
447 | 447 | ||
448 | void | 448 | void |
@@ -451,7 +451,7 @@ index fe2fb5aa..feb22b06 100644 | |||
451 | { | 451 | { |
452 | struct group *grp; | 452 | struct group *grp; |
453 | gid_t gid; | 453 | gid_t gid; |
454 | @@ -209,7 +209,7 @@ pty_setowner(struct passwd *pw, const char *tty) | 454 | @@ -184,7 +184,7 @@ pty_setowner(struct passwd *pw, const char *tty) |
455 | strerror(errno)); | 455 | strerror(errno)); |
456 | 456 | ||
457 | #ifdef WITH_SELINUX | 457 | #ifdef WITH_SELINUX |
diff --git a/debian/patches/series b/debian/patches/series index 01aa2c87c..e409902b5 100644 --- a/debian/patches/series +++ b/debian/patches/series | |||
@@ -8,7 +8,6 @@ user-group-modes.patch | |||
8 | scp-quoting.patch | 8 | scp-quoting.patch |
9 | shell-path.patch | 9 | shell-path.patch |
10 | dnssec-sshfp.patch | 10 | dnssec-sshfp.patch |
11 | auth-log-verbosity.patch | ||
12 | mention-ssh-keygen-on-keychange.patch | 11 | mention-ssh-keygen-on-keychange.patch |
13 | package-versioning.patch | 12 | package-versioning.patch |
14 | debian-banner.patch | 13 | debian-banner.patch |
@@ -21,10 +20,7 @@ no-openssl-version-status.patch | |||
21 | gnome-ssh-askpass2-icon.patch | 20 | gnome-ssh-askpass2-icon.patch |
22 | systemd-readiness.patch | 21 | systemd-readiness.patch |
23 | debian-config.patch | 22 | debian-config.patch |
24 | no-dsa-host-key-by-default.patch | ||
25 | restore-authorized_keys2.patch | 23 | restore-authorized_keys2.patch |
26 | seccomp-s390-flock-ipc.patch | 24 | seccomp-s390-flock-ipc.patch |
27 | seccomp-getuid-geteuid.patch | 25 | seccomp-getuid-geteuid.patch |
28 | seccomp-s390-ioctl-ep11-crypto.patch | 26 | seccomp-s390-ioctl-ep11-crypto.patch |
29 | permitopen-argument-handling.patch | ||
30 | fix-regress-putty-transfer.patch | ||
diff --git a/debian/patches/shell-path.patch b/debian/patches/shell-path.patch index 29abf10f2..638d348f2 100644 --- a/debian/patches/shell-path.patch +++ b/debian/patches/shell-path.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From c239ba6fa4560704a237779f82445d5f125847e1 Mon Sep 17 00:00:00 2001 | 1 | From 72fead7f622b074c9b92dbdb8ae745faf2702b3d Mon Sep 17 00:00:00 2001 |
2 | From: Colin Watson <cjwatson@debian.org> | 2 | From: Colin Watson <cjwatson@debian.org> |
3 | Date: Sun, 9 Feb 2014 16:10:00 +0000 | 3 | Date: Sun, 9 Feb 2014 16:10:00 +0000 |
4 | Subject: Look for $SHELL on the path for ProxyCommand/LocalCommand | 4 | Subject: 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 | ||
18 | diff --git a/sshconnect.c b/sshconnect.c | 18 | diff --git a/sshconnect.c b/sshconnect.c |
19 | index dc7a704d..5eed5880 100644 | 19 | index 3805d35d..8ab01c0e 100644 |
20 | --- a/sshconnect.c | 20 | --- a/sshconnect.c |
21 | +++ b/sshconnect.c | 21 | +++ b/sshconnect.c |
22 | @@ -235,7 +235,7 @@ ssh_proxy_connect(struct ssh *ssh, const char *host, u_short port, | 22 | @@ -239,7 +239,7 @@ ssh_proxy_connect(struct ssh *ssh, const char *host, u_short port, |
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 dc7a704d..5eed5880 100644 | |||
28 | perror(argv[0]); | 28 | perror(argv[0]); |
29 | exit(1); | 29 | exit(1); |
30 | } | 30 | } |
31 | @@ -1435,7 +1435,7 @@ ssh_local_cmd(const char *args) | 31 | @@ -1554,7 +1554,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/ssh-agent-setgid.patch b/debian/patches/ssh-agent-setgid.patch index 9ac4977b5..b7cd10dd1 100644 --- a/debian/patches/ssh-agent-setgid.patch +++ b/debian/patches/ssh-agent-setgid.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From b37d4f364f9c9bfbaf372e903ebbe80ef8ae2264 Mon Sep 17 00:00:00 2001 | 1 | From 9155e0368189860345a5f4b52a756266704447af Mon Sep 17 00:00:00 2001 |
2 | From: Colin Watson <cjwatson@debian.org> | 2 | From: Colin Watson <cjwatson@debian.org> |
3 | Date: Sun, 9 Feb 2014 16:10:13 +0000 | 3 | Date: Sun, 9 Feb 2014 16:10:13 +0000 |
4 | Subject: Document consequences of ssh-agent being setgid in ssh-agent(1) | 4 | Subject: Document consequences of ssh-agent being setgid in ssh-agent(1) |
diff --git a/debian/patches/ssh-argv0.patch b/debian/patches/ssh-argv0.patch index 3a560ad78..2539fa8ed 100644 --- a/debian/patches/ssh-argv0.patch +++ b/debian/patches/ssh-argv0.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 7e5cf5d27a7be47203280c665ca7311269f53671 Mon Sep 17 00:00:00 2001 | 1 | From 77113aa5aacb35d773268411edbe3bca4255703d Mon Sep 17 00:00:00 2001 |
2 | From: Colin Watson <cjwatson@debian.org> | 2 | From: Colin Watson <cjwatson@debian.org> |
3 | Date: Sun, 9 Feb 2014 16:10:10 +0000 | 3 | Date: Sun, 9 Feb 2014 16:10:10 +0000 |
4 | Subject: ssh(1): Refer to ssh-argv0(1) | 4 | Subject: ssh(1): Refer to ssh-argv0(1) |
@@ -18,10 +18,10 @@ Patch-Name: ssh-argv0.patch | |||
18 | 1 file changed, 1 insertion(+) | 18 | 1 file changed, 1 insertion(+) |
19 | 19 | ||
20 | diff --git a/ssh.1 b/ssh.1 | 20 | diff --git a/ssh.1 b/ssh.1 |
21 | index 2a2aab30..711fe608 100644 | 21 | index 54e21d88..f8fc26d2 100644 |
22 | --- a/ssh.1 | 22 | --- a/ssh.1 |
23 | +++ b/ssh.1 | 23 | +++ b/ssh.1 |
24 | @@ -1556,6 +1556,7 @@ if an error occurred. | 24 | @@ -1571,6 +1571,7 @@ if an error occurred. |
25 | .Xr sftp 1 , | 25 | .Xr sftp 1 , |
26 | .Xr ssh-add 1 , | 26 | .Xr ssh-add 1 , |
27 | .Xr ssh-agent 1 , | 27 | .Xr ssh-agent 1 , |
diff --git a/debian/patches/ssh-vulnkey-compat.patch b/debian/patches/ssh-vulnkey-compat.patch index ef1ce4e99..34ff8a497 100644 --- a/debian/patches/ssh-vulnkey-compat.patch +++ b/debian/patches/ssh-vulnkey-compat.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 19971fb92159a621b55f0b9da76dd38a56d7247c Mon Sep 17 00:00:00 2001 | 1 | From 4fb99d4eb8936b6ffae3749717abfc2dccbaa162 Mon Sep 17 00:00:00 2001 |
2 | From: Colin Watson <cjwatson@ubuntu.com> | 2 | From: Colin Watson <cjwatson@ubuntu.com> |
3 | Date: Sun, 9 Feb 2014 16:09:50 +0000 | 3 | Date: Sun, 9 Feb 2014 16:09:50 +0000 |
4 | Subject: Accept obsolete ssh-vulnkey configuration options | 4 | Subject: 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 | ||
19 | diff --git a/readconf.c b/readconf.c | 19 | diff --git a/readconf.c b/readconf.c |
20 | index 99e03ee1..d2b28a41 100644 | 20 | index c8e79299..1f1be778 100644 |
21 | --- a/readconf.c | 21 | --- a/readconf.c |
22 | +++ b/readconf.c | 22 | +++ b/readconf.c |
23 | @@ -189,6 +189,7 @@ static struct { | 23 | @@ -189,6 +189,7 @@ static struct { |
@@ -29,10 +29,10 @@ index 99e03ee1..d2b28a41 100644 | |||
29 | { "useroaming", oDeprecated }, | 29 | { "useroaming", oDeprecated }, |
30 | { "usersh", oDeprecated }, | 30 | { "usersh", oDeprecated }, |
31 | diff --git a/servconf.c b/servconf.c | 31 | diff --git a/servconf.c b/servconf.c |
32 | index 8ba74517..9889fb0a 100644 | 32 | index cbbea05b..3fff3d53 100644 |
33 | --- a/servconf.c | 33 | --- a/servconf.c |
34 | +++ b/servconf.c | 34 | +++ b/servconf.c |
35 | @@ -525,6 +525,7 @@ static struct { | 35 | @@ -576,6 +576,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 }, |
diff --git a/debian/patches/syslog-level-silent.patch b/debian/patches/syslog-level-silent.patch index 3ed6287a9..897433408 100644 --- a/debian/patches/syslog-level-silent.patch +++ b/debian/patches/syslog-level-silent.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 215bd91f12b0ddb9754483ee6e3c3b4751256dca Mon Sep 17 00:00:00 2001 | 1 | From 027619c6b05713e3f08a51e7232389383900e5d8 Mon Sep 17 00:00:00 2001 |
2 | From: Jonathan David Amery <jdamery@ysolde.ucam.org> | 2 | From: Jonathan David Amery <jdamery@ysolde.ucam.org> |
3 | Date: Sun, 9 Feb 2014 16:09:54 +0000 | 3 | Date: Sun, 9 Feb 2014 16:09:54 +0000 |
4 | Subject: "LogLevel SILENT" compatibility | 4 | Subject: "LogLevel SILENT" compatibility |
@@ -33,10 +33,10 @@ index 99450dd1..1559091d 100644 | |||
33 | { "FATAL", SYSLOG_LEVEL_FATAL }, | 33 | { "FATAL", SYSLOG_LEVEL_FATAL }, |
34 | { "ERROR", SYSLOG_LEVEL_ERROR }, | 34 | { "ERROR", SYSLOG_LEVEL_ERROR }, |
35 | diff --git a/ssh.c b/ssh.c | 35 | diff --git a/ssh.c b/ssh.c |
36 | index ae37432b..9cb21171 100644 | 36 | index d3619fe2..e36debf6 100644 |
37 | --- a/ssh.c | 37 | --- a/ssh.c |
38 | +++ b/ssh.c | 38 | +++ b/ssh.c |
39 | @@ -1166,7 +1166,7 @@ main(int ac, char **av) | 39 | @@ -1252,7 +1252,7 @@ main(int ac, char **av) |
40 | /* Do not allocate a tty if stdin is not a tty. */ | 40 | /* Do not allocate a tty if stdin is not a tty. */ |
41 | if ((!isatty(fileno(stdin)) || stdin_null_flag) && | 41 | if ((!isatty(fileno(stdin)) || stdin_null_flag) && |
42 | options.request_tty != REQUEST_TTY_FORCE) { | 42 | options.request_tty != REQUEST_TTY_FORCE) { |
diff --git a/debian/patches/systemd-readiness.patch b/debian/patches/systemd-readiness.patch index 537a5cab6..a0e733f1b 100644 --- a/debian/patches/systemd-readiness.patch +++ b/debian/patches/systemd-readiness.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From ba3f6b85ede72ef42987f0069f5ed2b88ebe69fd Mon Sep 17 00:00:00 2001 | 1 | From 4acdde3e5b206718774fa162763058155fe572bf Mon Sep 17 00:00:00 2001 |
2 | From: Michael Biebl <biebl@debian.org> | 2 | From: Michael Biebl <biebl@debian.org> |
3 | Date: Mon, 21 Dec 2015 16:08:47 +0000 | 3 | Date: Mon, 21 Dec 2015 16:08:47 +0000 |
4 | Subject: Add systemd readiness notification support | 4 | Subject: 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 | ||
16 | diff --git a/configure.ac b/configure.ac | 16 | diff --git a/configure.ac b/configure.ac |
17 | index 3b30736b..483a9038 100644 | 17 | index 3e23e60d..eac143b4 100644 |
18 | --- a/configure.ac | 18 | --- a/configure.ac |
19 | +++ b/configure.ac | 19 | +++ b/configure.ac |
20 | @@ -4389,6 +4389,29 @@ AC_ARG_WITH([kerberos5], | 20 | @@ -4496,6 +4496,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 3b30736b..483a9038 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 | @@ -5196,6 +5219,7 @@ echo " libldns support: $LDNS_MSG" | 50 | @@ -5303,6 +5326,7 @@ echo " libldns support: $LDNS_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 3b30736b..483a9038 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" |
58 | diff --git a/sshd.c b/sshd.c | 58 | diff --git a/sshd.c b/sshd.c |
59 | index a5a1193d..1fde5a63 100644 | 59 | index 1d645a17..3a86e66e 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 @@ |
@@ -70,7 +70,7 @@ index a5a1193d..1fde5a63 100644 | |||
70 | #include "xmalloc.h" | 70 | #include "xmalloc.h" |
71 | #include "ssh.h" | 71 | #include "ssh.h" |
72 | #include "ssh2.h" | 72 | #include "ssh2.h" |
73 | @@ -1881,6 +1885,11 @@ main(int ac, char **av) | 73 | @@ -1933,6 +1937,11 @@ main(int ac, char **av) |
74 | } | 74 | } |
75 | } | 75 | } |
76 | 76 | ||
diff --git a/debian/patches/user-group-modes.patch b/debian/patches/user-group-modes.patch index 338c7567d..a7201b318 100644 --- a/debian/patches/user-group-modes.patch +++ b/debian/patches/user-group-modes.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From b1033fed87fd9fa24dccab45f00cadcbc7144c47 Mon Sep 17 00:00:00 2001 | 1 | From 9e45701c5d6105444cc2f4f5d6c44b0f69969479 Mon Sep 17 00:00:00 2001 |
2 | From: Colin Watson <cjwatson@debian.org> | 2 | From: Colin Watson <cjwatson@debian.org> |
3 | Date: Sun, 9 Feb 2014 16:09:58 +0000 | 3 | Date: Sun, 9 Feb 2014 16:09:58 +0000 |
4 | Subject: Allow harmless group-writability | 4 | Subject: Allow harmless group-writability |
@@ -51,10 +51,10 @@ index ecf956f0..4dccd5e6 100644 | |||
51 | pw->pw_name, buf); | 51 | pw->pw_name, buf); |
52 | auth_debug_add("Bad file modes for %.200s", buf); | 52 | auth_debug_add("Bad file modes for %.200s", buf); |
53 | diff --git a/auth.c b/auth.c | 53 | diff --git a/auth.c b/auth.c |
54 | index 6aec3605..68a1e4a7 100644 | 54 | index 76d586e3..68b9fe79 100644 |
55 | --- a/auth.c | 55 | --- a/auth.c |
56 | +++ b/auth.c | 56 | +++ b/auth.c |
57 | @@ -467,8 +467,7 @@ check_key_in_hostfiles(struct passwd *pw, struct sshkey *key, const char *host, | 57 | @@ -468,8 +468,7 @@ check_key_in_hostfiles(struct passwd *pw, struct sshkey *key, const char *host, |
58 | user_hostfile = tilde_expand_filename(userfile, pw->pw_uid); | 58 | user_hostfile = tilde_expand_filename(userfile, pw->pw_uid); |
59 | if (options.strict_modes && | 59 | if (options.strict_modes && |
60 | (stat(user_hostfile, &st) == 0) && | 60 | (stat(user_hostfile, &st) == 0) && |
@@ -65,7 +65,7 @@ index 6aec3605..68a1e4a7 100644 | |||
65 | "bad owner or modes for %.200s", | 65 | "bad owner or modes for %.200s", |
66 | pw->pw_name, user_hostfile); | 66 | pw->pw_name, user_hostfile); |
67 | diff --git a/misc.c b/misc.c | 67 | diff --git a/misc.c b/misc.c |
68 | index 05950a47..40aeeef3 100644 | 68 | index 874dcc8a..75c4113f 100644 |
69 | --- a/misc.c | 69 | --- a/misc.c |
70 | +++ b/misc.c | 70 | +++ b/misc.c |
71 | @@ -57,8 +57,9 @@ | 71 | @@ -57,8 +57,9 @@ |
@@ -79,7 +79,7 @@ index 05950a47..40aeeef3 100644 | |||
79 | #ifdef SSH_TUN_OPENBSD | 79 | #ifdef SSH_TUN_OPENBSD |
80 | #include <net/if.h> | 80 | #include <net/if.h> |
81 | #endif | 81 | #endif |
82 | @@ -723,6 +724,55 @@ read_keyfile_line(FILE *f, const char *filename, char *buf, size_t bufsz, | 82 | @@ -1030,6 +1031,55 @@ read_keyfile_line(FILE *f, const char *filename, char *buf, size_t bufsz, |
83 | return -1; | 83 | return -1; |
84 | } | 84 | } |
85 | 85 | ||
@@ -133,9 +133,9 @@ index 05950a47..40aeeef3 100644 | |||
133 | +} | 133 | +} |
134 | + | 134 | + |
135 | int | 135 | int |
136 | tun_open(int tun, int mode) | 136 | tun_open(int tun, int mode, char **ifname) |
137 | { | 137 | { |
138 | @@ -1626,8 +1676,7 @@ safe_path(const char *name, struct stat *stp, const char *pw_dir, | 138 | @@ -1797,8 +1847,7 @@ safe_path(const char *name, struct stat *stp, const char *pw_dir, |
139 | snprintf(err, errlen, "%s is not a regular file", buf); | 139 | snprintf(err, errlen, "%s is not a regular file", buf); |
140 | return -1; | 140 | return -1; |
141 | } | 141 | } |
@@ -145,7 +145,7 @@ index 05950a47..40aeeef3 100644 | |||
145 | snprintf(err, errlen, "bad ownership or modes for file %s", | 145 | snprintf(err, errlen, "bad ownership or modes for file %s", |
146 | buf); | 146 | buf); |
147 | return -1; | 147 | return -1; |
148 | @@ -1642,8 +1691,7 @@ safe_path(const char *name, struct stat *stp, const char *pw_dir, | 148 | @@ -1813,8 +1862,7 @@ safe_path(const char *name, struct stat *stp, const char *pw_dir, |
149 | strlcpy(buf, cp, sizeof(buf)); | 149 | strlcpy(buf, cp, sizeof(buf)); |
150 | 150 | ||
151 | if (stat(buf, &st) < 0 || | 151 | if (stat(buf, &st) < 0 || |
@@ -156,10 +156,10 @@ index 05950a47..40aeeef3 100644 | |||
156 | "bad ownership or modes for directory %s", buf); | 156 | "bad ownership or modes for directory %s", buf); |
157 | return -1; | 157 | return -1; |
158 | diff --git a/misc.h b/misc.h | 158 | diff --git a/misc.h b/misc.h |
159 | index 153d1137..d8759ab1 100644 | 159 | index cdafea73..51943db9 100644 |
160 | --- a/misc.h | 160 | --- a/misc.h |
161 | +++ b/misc.h | 161 | +++ b/misc.h |
162 | @@ -163,6 +163,8 @@ char *read_passphrase(const char *, int); | 162 | @@ -168,6 +168,8 @@ char *read_passphrase(const char *, int); |
163 | int ask_permission(const char *, ...) __attribute__((format(printf, 1, 2))); | 163 | int ask_permission(const char *, ...) __attribute__((format(printf, 1, 2))); |
164 | int read_keyfile_line(FILE *, const char *, char *, size_t, u_long *); | 164 | int read_keyfile_line(FILE *, const char *, char *, size_t, u_long *); |
165 | 165 | ||
@@ -169,10 +169,10 @@ index 153d1137..d8759ab1 100644 | |||
169 | #define MAXIMUM(a, b) (((a) > (b)) ? (a) : (b)) | 169 | #define MAXIMUM(a, b) (((a) > (b)) ? (a) : (b)) |
170 | #define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y)) | 170 | #define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y)) |
171 | diff --git a/readconf.c b/readconf.c | 171 | diff --git a/readconf.c b/readconf.c |
172 | index 45caa095..be3d5873 100644 | 172 | index 7f2b5c17..50349e23 100644 |
173 | --- a/readconf.c | 173 | --- a/readconf.c |
174 | +++ b/readconf.c | 174 | +++ b/readconf.c |
175 | @@ -1766,8 +1766,7 @@ read_config_file_depth(const char *filename, struct passwd *pw, | 175 | @@ -1741,8 +1741,7 @@ read_config_file_depth(const char *filename, struct passwd *pw, |
176 | 176 | ||
177 | if (fstat(fileno(f), &sb) == -1) | 177 | if (fstat(fileno(f), &sb) == -1) |
178 | fatal("fstat %s: %s", filename, strerror(errno)); | 178 | fatal("fstat %s: %s", filename, strerror(errno)); |
@@ -183,10 +183,10 @@ index 45caa095..be3d5873 100644 | |||
183 | } | 183 | } |
184 | 184 | ||
185 | diff --git a/ssh.1 b/ssh.1 | 185 | diff --git a/ssh.1 b/ssh.1 |
186 | index 2ab1697f..3cc94688 100644 | 186 | index b4078525..0ef7c170 100644 |
187 | --- a/ssh.1 | 187 | --- a/ssh.1 |
188 | +++ b/ssh.1 | 188 | +++ b/ssh.1 |
189 | @@ -1456,6 +1456,8 @@ The file format and configuration options are described in | 189 | @@ -1471,6 +1471,8 @@ The file format and configuration options are described in |
190 | .Xr ssh_config 5 . | 190 | .Xr ssh_config 5 . |
191 | Because of the potential for abuse, this file must have strict permissions: | 191 | Because of the potential for abuse, this file must have strict permissions: |
192 | read/write for the user, and not writable by others. | 192 | read/write for the user, and not writable by others. |
@@ -196,10 +196,10 @@ index 2ab1697f..3cc94688 100644 | |||
196 | .It Pa ~/.ssh/environment | 196 | .It Pa ~/.ssh/environment |
197 | Contains additional definitions for environment variables; see | 197 | Contains additional definitions for environment variables; see |
198 | diff --git a/ssh_config.5 b/ssh_config.5 | 198 | diff --git a/ssh_config.5 b/ssh_config.5 |
199 | index d6f43c2d..7810a418 100644 | 199 | index 32c3632c..84dcd52c 100644 |
200 | --- a/ssh_config.5 | 200 | --- a/ssh_config.5 |
201 | +++ b/ssh_config.5 | 201 | +++ b/ssh_config.5 |
202 | @@ -1786,6 +1786,8 @@ The format of this file is described above. | 202 | @@ -1818,6 +1818,8 @@ The format of this file is described above. |
203 | This file is used by the SSH client. | 203 | This file is used by the SSH client. |
204 | Because of the potential for abuse, this file must have strict permissions: | 204 | Because of the potential for abuse, this file must have strict permissions: |
205 | read/write for the user, and not accessible by others. | 205 | read/write for the user, and not accessible by others. |
@@ -214,24 +214,12 @@ typedef signed char int8_t; | |||
214 | # if (SIZEOF_SHORT_INT == 2) | 214 | # if (SIZEOF_SHORT_INT == 2) |
215 | typedef short int int16_t; | 215 | typedef short int int16_t; |
216 | # else | 216 | # else |
217 | # ifdef _UNICOS | ||
218 | # if (SIZEOF_SHORT_INT == 4) | ||
219 | typedef short int16_t; | ||
220 | # else | ||
221 | typedef long int16_t; | ||
222 | # endif | ||
223 | # else | ||
224 | # error "16 bit int type not found." | 217 | # error "16 bit int type not found." |
225 | # endif /* _UNICOS */ | ||
226 | # endif | 218 | # endif |
227 | # if (SIZEOF_INT == 4) | 219 | # if (SIZEOF_INT == 4) |
228 | typedef int int32_t; | 220 | typedef int int32_t; |
229 | # else | 221 | # else |
230 | # ifdef _UNICOS | ||
231 | typedef long int32_t; | ||
232 | # else | ||
233 | # error "32 bit int type not found." | 222 | # error "32 bit int type not found." |
234 | # endif /* _UNICOS */ | ||
235 | # endif | 223 | # endif |
236 | #endif | 224 | #endif |
237 | 225 | ||
@@ -247,24 +235,12 @@ typedef unsigned char u_int8_t; | |||
247 | # if (SIZEOF_SHORT_INT == 2) | 235 | # if (SIZEOF_SHORT_INT == 2) |
248 | typedef unsigned short int u_int16_t; | 236 | typedef unsigned short int u_int16_t; |
249 | # else | 237 | # else |
250 | # ifdef _UNICOS | ||
251 | # if (SIZEOF_SHORT_INT == 4) | ||
252 | typedef unsigned short u_int16_t; | ||
253 | # else | ||
254 | typedef unsigned long u_int16_t; | ||
255 | # endif | ||
256 | # else | ||
257 | # error "16 bit int type not found." | 238 | # error "16 bit int type not found." |
258 | # endif | ||
259 | # endif | 239 | # endif |
260 | # if (SIZEOF_INT == 4) | 240 | # if (SIZEOF_INT == 4) |
261 | typedef unsigned int u_int32_t; | 241 | typedef unsigned int u_int32_t; |
262 | # else | 242 | # else |
263 | # ifdef _UNICOS | ||
264 | typedef unsigned long u_int32_t; | ||
265 | # else | ||
266 | # error "32 bit int type not found." | 243 | # error "32 bit int type not found." |
267 | # endif | ||
268 | # endif | 244 | # endif |
269 | # endif | 245 | # endif |
270 | #define __BIT_TYPES_DEFINED__ | 246 | #define __BIT_TYPES_DEFINED__ |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dh.c,v 1.62 2016/12/15 21:20:41 dtucker Exp $ */ | 1 | /* $OpenBSD: dh.c,v 1.63 2018/02/07 02:06:50 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2000 Niels Provos. All rights reserved. | 3 | * Copyright (c) 2000 Niels Provos. All rights reserved. |
4 | * | 4 | * |
@@ -25,6 +25,7 @@ | |||
25 | 25 | ||
26 | #include "includes.h" | 26 | #include "includes.h" |
27 | 27 | ||
28 | #ifdef WITH_OPENSSL | ||
28 | 29 | ||
29 | #include <openssl/bn.h> | 30 | #include <openssl/bn.h> |
30 | #include <openssl/dh.h> | 31 | #include <openssl/dh.h> |
@@ -134,10 +135,8 @@ parse_prime(int linenum, char *line, struct dhgroup *dhg) | |||
134 | return 1; | 135 | return 1; |
135 | 136 | ||
136 | fail: | 137 | fail: |
137 | if (dhg->g != NULL) | 138 | BN_clear_free(dhg->g); |
138 | BN_clear_free(dhg->g); | 139 | BN_clear_free(dhg->p); |
139 | if (dhg->p != NULL) | ||
140 | BN_clear_free(dhg->p); | ||
141 | dhg->g = dhg->p = NULL; | 140 | dhg->g = dhg->p = NULL; |
142 | return 0; | 141 | return 0; |
143 | } | 142 | } |
@@ -465,3 +464,5 @@ dh_estimate(int bits) | |||
465 | return 7680; | 464 | return 7680; |
466 | return 8192; | 465 | return 8192; |
467 | } | 466 | } |
467 | |||
468 | #endif /* WITH_OPENSSL */ | ||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dns.c,v 1.37 2017/09/14 04:32:21 djm Exp $ */ | 1 | /* $OpenBSD: dns.c,v 1.38 2018/02/23 15:58:37 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2003 Wesley Griffin. All rights reserved. | 4 | * Copyright (c) 2003 Wesley Griffin. All rights reserved. |
@@ -105,6 +105,11 @@ dns_read_key(u_int8_t *algorithm, u_int8_t *digest_type, | |||
105 | if (!*digest_type) | 105 | if (!*digest_type) |
106 | *digest_type = SSHFP_HASH_SHA256; | 106 | *digest_type = SSHFP_HASH_SHA256; |
107 | break; | 107 | break; |
108 | case KEY_XMSS: | ||
109 | *algorithm = SSHFP_KEY_XMSS; | ||
110 | if (!*digest_type) | ||
111 | *digest_type = SSHFP_HASH_SHA256; | ||
112 | break; | ||
108 | default: | 113 | default: |
109 | *algorithm = SSHFP_KEY_RESERVED; /* 0 */ | 114 | *algorithm = SSHFP_KEY_RESERVED; /* 0 */ |
110 | *digest_type = SSHFP_HASH_RESERVED; /* 0 */ | 115 | *digest_type = SSHFP_HASH_RESERVED; /* 0 */ |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: dns.h,v 1.17 2017/09/14 04:32:21 djm Exp $ */ | 1 | /* $OpenBSD: dns.h,v 1.18 2018/02/23 15:58:37 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2003 Wesley Griffin. All rights reserved. | 4 | * Copyright (c) 2003 Wesley Griffin. All rights reserved. |
@@ -33,7 +33,8 @@ enum sshfp_types { | |||
33 | SSHFP_KEY_RSA = 1, | 33 | SSHFP_KEY_RSA = 1, |
34 | SSHFP_KEY_DSA = 2, | 34 | SSHFP_KEY_DSA = 2, |
35 | SSHFP_KEY_ECDSA = 3, | 35 | SSHFP_KEY_ECDSA = 3, |
36 | SSHFP_KEY_ED25519 = 4 | 36 | SSHFP_KEY_ED25519 = 4, |
37 | SSHFP_KEY_XMSS = 5 | ||
37 | }; | 38 | }; |
38 | 39 | ||
39 | enum sshfp_hashes { | 40 | enum sshfp_hashes { |
@@ -108,7 +108,7 @@ get_random_bytes_prngd(unsigned char *buf, int len, | |||
108 | strlen(socket_path) + 1; | 108 | strlen(socket_path) + 1; |
109 | } | 109 | } |
110 | 110 | ||
111 | old_sigpipe = mysignal(SIGPIPE, SIG_IGN); | 111 | old_sigpipe = signal(SIGPIPE, SIG_IGN); |
112 | 112 | ||
113 | errors = 0; | 113 | errors = 0; |
114 | rval = -1; | 114 | rval = -1; |
@@ -158,7 +158,7 @@ reopen: | |||
158 | 158 | ||
159 | rval = 0; | 159 | rval = 0; |
160 | done: | 160 | done: |
161 | mysignal(SIGPIPE, old_sigpipe); | 161 | signal(SIGPIPE, old_sigpipe); |
162 | if (fd != -1) | 162 | if (fd != -1) |
163 | close(fd); | 163 | close(fd); |
164 | return rval; | 164 | return rval; |
diff --git a/fixprogs b/fixprogs deleted file mode 100755 index af76ee392..000000000 --- a/fixprogs +++ /dev/null | |||
@@ -1,72 +0,0 @@ | |||
1 | #!/usr/bin/perl | ||
2 | # | ||
3 | # fixprogs - run through the list of entropy commands and | ||
4 | # score out the losers | ||
5 | # | ||
6 | |||
7 | $entscale = 50; # divisor for optional entropy measurement | ||
8 | |||
9 | sub usage { | ||
10 | return("Usage: $0 <command file>\n"); | ||
11 | } | ||
12 | |||
13 | if (($#ARGV == -1) || ($#ARGV>1)) { | ||
14 | die(&usage); | ||
15 | } | ||
16 | |||
17 | # 'undocumented' option - run ent (in second param) on the output | ||
18 | if ($#ARGV==1) { | ||
19 | $entcmd=$ARGV[1] | ||
20 | } else { | ||
21 | $entcmd = "" | ||
22 | }; | ||
23 | |||
24 | $infilename = $ARGV[0]; | ||
25 | |||
26 | if (!open(IN, "<".$infilename)) { | ||
27 | die("Couldn't open input file"); | ||
28 | } | ||
29 | $outfilename=$infilename.".out"; | ||
30 | if (!open(OUT, ">$outfilename")) { | ||
31 | die("Couldn't open output file $outfilename"); | ||
32 | } | ||
33 | @infile=<IN>; | ||
34 | |||
35 | select(OUT); $|=1; select(STDOUT); | ||
36 | |||
37 | foreach (@infile) { | ||
38 | if (/^\s*\#/ || /^\s*$/) { | ||
39 | print OUT; | ||
40 | next; | ||
41 | } | ||
42 | ($cmd, $path, $est) = /^\"([^\"]+)\"\s+([\w\/_-]+)\s+([\d\.\-]+)/o; | ||
43 | @args = split(/ /, $cmd); | ||
44 | if (! ($pid = fork())) { | ||
45 | # child | ||
46 | close STDIN; close STDOUT; close STDERR; | ||
47 | open (STDIN, "</dev/null"); | ||
48 | open (STDOUT, ">/dev/null"); | ||
49 | open (STDERR, ">/dev/null"); | ||
50 | exec $path @args; | ||
51 | exit 1; # shouldn't be here | ||
52 | } | ||
53 | # parent | ||
54 | waitpid ($pid, 0); $ret=$? >> 8; | ||
55 | |||
56 | if ($ret != 0) { | ||
57 | $path = "undef"; | ||
58 | } else { | ||
59 | if ($entcmd ne "") { | ||
60 | # now try to run ent on the command | ||
61 | $mostargs=join(" ", splice(@args,1)); | ||
62 | print "Evaluating '$path $mostargs'\n"; | ||
63 | @ent = qx{$path $mostargs | $entcmd -b -t}; | ||
64 | @ent = grep(/^1,/, @ent); | ||
65 | ($null, $null, $rate) = split(/,/, $ent[0]); | ||
66 | $est = $rate / $entscale; # scale the estimate back | ||
67 | } | ||
68 | } | ||
69 | print OUT "\"$cmd\" $path $est\n"; | ||
70 | } | ||
71 | |||
72 | close(IN); | ||
@@ -1,76 +1,27 @@ | |||
1 | /* $OpenBSD: hash.c,v 1.3 2013/12/09 11:03:45 markus Exp $ */ | 1 | /* $OpenBSD: hash.c,v 1.4 2017/12/14 21:07:39 naddy Exp $ */ |
2 | |||
3 | /* Copied from nacl-20110221/crypto_hash/sha512/ref/hash.c */ | ||
4 | 2 | ||
3 | /* $OpenBSD: hash.c,v 1.5 2018/01/13 00:24:09 naddy Exp $ */ | ||
5 | /* | 4 | /* |
6 | 20080913 | 5 | * Public domain. Author: Christian Weisgerber <naddy@openbsd.org> |
7 | D. J. Bernstein | 6 | * API compatible reimplementation of function from nacl |
8 | Public domain. | 7 | */ |
9 | */ | ||
10 | |||
11 | #include "includes.h" | ||
12 | 8 | ||
13 | #include "crypto_api.h" | 9 | #include "crypto_api.h" |
14 | 10 | ||
15 | #define blocks crypto_hashblocks_sha512 | 11 | #include <stdarg.h> |
16 | 12 | ||
17 | static const unsigned char iv[64] = { | 13 | #include "digest.h" |
18 | 0x6a,0x09,0xe6,0x67,0xf3,0xbc,0xc9,0x08, | 14 | #include "log.h" |
19 | 0xbb,0x67,0xae,0x85,0x84,0xca,0xa7,0x3b, | 15 | #include "ssherr.h" |
20 | 0x3c,0x6e,0xf3,0x72,0xfe,0x94,0xf8,0x2b, | ||
21 | 0xa5,0x4f,0xf5,0x3a,0x5f,0x1d,0x36,0xf1, | ||
22 | 0x51,0x0e,0x52,0x7f,0xad,0xe6,0x82,0xd1, | ||
23 | 0x9b,0x05,0x68,0x8c,0x2b,0x3e,0x6c,0x1f, | ||
24 | 0x1f,0x83,0xd9,0xab,0xfb,0x41,0xbd,0x6b, | ||
25 | 0x5b,0xe0,0xcd,0x19,0x13,0x7e,0x21,0x79 | ||
26 | } ; | ||
27 | 16 | ||
28 | typedef unsigned long long uint64; | 17 | int |
29 | 18 | crypto_hash_sha512(unsigned char *out, const unsigned char *in, | |
30 | int crypto_hash_sha512(unsigned char *out,const unsigned char *in,unsigned long long inlen) | 19 | unsigned long long inlen) |
31 | { | 20 | { |
32 | unsigned char h[64]; | 21 | int r; |
33 | unsigned char padded[256]; | ||
34 | unsigned int i; | ||
35 | unsigned long long bytes = inlen; | ||
36 | |||
37 | for (i = 0;i < 64;++i) h[i] = iv[i]; | ||
38 | |||
39 | blocks(h,in,inlen); | ||
40 | in += inlen; | ||
41 | inlen &= 127; | ||
42 | in -= inlen; | ||
43 | |||
44 | for (i = 0;i < inlen;++i) padded[i] = in[i]; | ||
45 | padded[inlen] = 0x80; | ||
46 | |||
47 | if (inlen < 112) { | ||
48 | for (i = inlen + 1;i < 119;++i) padded[i] = 0; | ||
49 | padded[119] = bytes >> 61; | ||
50 | padded[120] = bytes >> 53; | ||
51 | padded[121] = bytes >> 45; | ||
52 | padded[122] = bytes >> 37; | ||
53 | padded[123] = bytes >> 29; | ||
54 | padded[124] = bytes >> 21; | ||
55 | padded[125] = bytes >> 13; | ||
56 | padded[126] = bytes >> 5; | ||
57 | padded[127] = bytes << 3; | ||
58 | blocks(h,padded,128); | ||
59 | } else { | ||
60 | for (i = inlen + 1;i < 247;++i) padded[i] = 0; | ||
61 | padded[247] = bytes >> 61; | ||
62 | padded[248] = bytes >> 53; | ||
63 | padded[249] = bytes >> 45; | ||
64 | padded[250] = bytes >> 37; | ||
65 | padded[251] = bytes >> 29; | ||
66 | padded[252] = bytes >> 21; | ||
67 | padded[253] = bytes >> 13; | ||
68 | padded[254] = bytes >> 5; | ||
69 | padded[255] = bytes << 3; | ||
70 | blocks(h,padded,256); | ||
71 | } | ||
72 | |||
73 | for (i = 0;i < 64;++i) out[i] = h[i]; | ||
74 | 22 | ||
75 | return 0; | 23 | if ((r = ssh_digest_memory(SSH_DIGEST_SHA512, in, inlen, out, |
24 | crypto_hash_sha512_BYTES)) != 0) | ||
25 | fatal("%s: %s", __func__, ssh_err(r)); | ||
26 | return 0; | ||
76 | } | 27 | } |
diff --git a/install-sh b/install-sh index 220abbf61..377bb8687 100755 --- a/install-sh +++ b/install-sh | |||
@@ -1,251 +1,527 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | # | ||
3 | # install - install a program, script, or datafile | 2 | # install - install a program, script, or datafile |
4 | # This comes from X11R5 (mit/util/scripts/install.sh). | 3 | |
4 | scriptversion=2011-11-20.07; # UTC | ||
5 | |||
6 | # This originates from X11R5 (mit/util/scripts/install.sh), which was | ||
7 | # later released in X11R6 (xc/config/util/install.sh) with the | ||
8 | # following copyright and license. | ||
9 | # | ||
10 | # Copyright (C) 1994 X Consortium | ||
11 | # | ||
12 | # Permission is hereby granted, free of charge, to any person obtaining a copy | ||
13 | # of this software and associated documentation files (the "Software"), to | ||
14 | # deal in the Software without restriction, including without limitation the | ||
15 | # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | ||
16 | # sell copies of the Software, and to permit persons to whom the Software is | ||
17 | # furnished to do so, subject to the following conditions: | ||
18 | # | ||
19 | # The above copyright notice and this permission notice shall be included in | ||
20 | # all copies or substantial portions of the Software. | ||
21 | # | ||
22 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
23 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
24 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
25 | # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN | ||
26 | # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- | ||
27 | # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
5 | # | 28 | # |
6 | # Copyright 1991 by the Massachusetts Institute of Technology | 29 | # Except as contained in this notice, the name of the X Consortium shall not |
30 | # be used in advertising or otherwise to promote the sale, use or other deal- | ||
31 | # ings in this Software without prior written authorization from the X Consor- | ||
32 | # tium. | ||
7 | # | 33 | # |
8 | # Permission to use, copy, modify, distribute, and sell this software and its | 34 | # |
9 | # documentation for any purpose is hereby granted without fee, provided that | 35 | # FSF changes to this file are in the public domain. |
10 | # the above copyright notice appear in all copies and that both that | ||
11 | # copyright notice and this permission notice appear in supporting | ||
12 | # documentation, and that the name of M.I.T. not be used in advertising or | ||
13 | # publicity pertaining to distribution of the software without specific, | ||
14 | # written prior permission. M.I.T. makes no representations about the | ||
15 | # suitability of this software for any purpose. It is provided "as is" | ||
16 | # without express or implied warranty. | ||
17 | # | 36 | # |
18 | # Calling this script install-sh is preferred over install.sh, to prevent | 37 | # Calling this script install-sh is preferred over install.sh, to prevent |
19 | # `make' implicit rules from creating a file called install from it | 38 | # 'make' implicit rules from creating a file called install from it |
20 | # when there is no Makefile. | 39 | # when there is no Makefile. |
21 | # | 40 | # |
22 | # This script is compatible with the BSD install script, but was written | 41 | # This script is compatible with the BSD install script, but was written |
23 | # from scratch. It can only install one file at a time, a restriction | 42 | # from scratch. |
24 | # shared with many OS's install programs. | ||
25 | 43 | ||
44 | nl=' | ||
45 | ' | ||
46 | IFS=" "" $nl" | ||
26 | 47 | ||
27 | # set DOITPROG to echo to test this script | 48 | # set DOITPROG to echo to test this script |
28 | 49 | ||
29 | # Don't use :- since 4.3BSD and earlier shells don't like it. | 50 | # Don't use :- since 4.3BSD and earlier shells don't like it. |
30 | doit="${DOITPROG-}" | 51 | doit=${DOITPROG-} |
31 | 52 | if test -z "$doit"; then | |
32 | 53 | doit_exec=exec | |
33 | # put in absolute paths if you don't have them in your path; or use env. vars. | ||
34 | |||
35 | mvprog="${MVPROG-mv}" | ||
36 | cpprog="${CPPROG-cp}" | ||
37 | chmodprog="${CHMODPROG-chmod}" | ||
38 | chownprog="${CHOWNPROG-chown}" | ||
39 | chgrpprog="${CHGRPPROG-chgrp}" | ||
40 | stripprog="${STRIPPROG-strip}" | ||
41 | rmprog="${RMPROG-rm}" | ||
42 | mkdirprog="${MKDIRPROG-mkdir}" | ||
43 | |||
44 | transformbasename="" | ||
45 | transform_arg="" | ||
46 | instcmd="$mvprog" | ||
47 | chmodcmd="$chmodprog 0755" | ||
48 | chowncmd="" | ||
49 | chgrpcmd="" | ||
50 | stripcmd="" | ||
51 | rmcmd="$rmprog -f" | ||
52 | mvcmd="$mvprog" | ||
53 | src="" | ||
54 | dst="" | ||
55 | dir_arg="" | ||
56 | |||
57 | while [ x"$1" != x ]; do | ||
58 | case $1 in | ||
59 | -c) instcmd="$cpprog" | ||
60 | shift | ||
61 | continue;; | ||
62 | |||
63 | -d) dir_arg=true | ||
64 | shift | ||
65 | continue;; | ||
66 | |||
67 | -m) chmodcmd="$chmodprog $2" | ||
68 | shift | ||
69 | shift | ||
70 | continue;; | ||
71 | |||
72 | -o) chowncmd="$chownprog $2" | ||
73 | shift | ||
74 | shift | ||
75 | continue;; | ||
76 | |||
77 | -g) chgrpcmd="$chgrpprog $2" | ||
78 | shift | ||
79 | shift | ||
80 | continue;; | ||
81 | |||
82 | -s) stripcmd="$stripprog" | ||
83 | shift | ||
84 | continue;; | ||
85 | |||
86 | -t=*) transformarg=`echo $1 | sed 's/-t=//'` | ||
87 | shift | ||
88 | continue;; | ||
89 | |||
90 | -b=*) transformbasename=`echo $1 | sed 's/-b=//'` | ||
91 | shift | ||
92 | continue;; | ||
93 | |||
94 | *) if [ x"$src" = x ] | ||
95 | then | ||
96 | src=$1 | ||
97 | else | ||
98 | # this colon is to work around a 386BSD /bin/sh bug | ||
99 | : | ||
100 | dst=$1 | ||
101 | fi | ||
102 | shift | ||
103 | continue;; | ||
104 | esac | ||
105 | done | ||
106 | |||
107 | if [ x"$src" = x ] | ||
108 | then | ||
109 | echo "install: no input file specified" | ||
110 | exit 1 | ||
111 | else | 54 | else |
112 | true | 55 | doit_exec=$doit |
113 | fi | 56 | fi |
114 | 57 | ||
115 | if [ x"$dir_arg" != x ]; then | 58 | # Put in absolute file names if you don't have them in your path; |
116 | dst=$src | 59 | # or use environment vars. |
117 | src="" | 60 | |
118 | 61 | chgrpprog=${CHGRPPROG-chgrp} | |
119 | if [ -d $dst ]; then | 62 | chmodprog=${CHMODPROG-chmod} |
120 | instcmd=: | 63 | chownprog=${CHOWNPROG-chown} |
121 | chmodcmd="" | 64 | cmpprog=${CMPPROG-cmp} |
122 | else | 65 | cpprog=${CPPROG-cp} |
123 | instcmd=mkdir | 66 | mkdirprog=${MKDIRPROG-mkdir} |
124 | fi | 67 | mvprog=${MVPROG-mv} |
125 | else | 68 | rmprog=${RMPROG-rm} |
69 | stripprog=${STRIPPROG-strip} | ||
70 | |||
71 | posix_glob='?' | ||
72 | initialize_posix_glob=' | ||
73 | test "$posix_glob" != "?" || { | ||
74 | if (set -f) 2>/dev/null; then | ||
75 | posix_glob= | ||
76 | else | ||
77 | posix_glob=: | ||
78 | fi | ||
79 | } | ||
80 | ' | ||
126 | 81 | ||
127 | # Waiting for this to be detected by the "$instcmd $src $dsttmp" command | 82 | posix_mkdir= |
128 | # might cause directories to be created, which would be especially bad | ||
129 | # if $src (and thus $dsttmp) contains '*'. | ||
130 | 83 | ||
131 | if [ -f $src -o -d $src ] | 84 | # Desired mode of installed file. |
132 | then | 85 | mode=0755 |
133 | true | ||
134 | else | ||
135 | echo "install: $src does not exist" | ||
136 | exit 1 | ||
137 | fi | ||
138 | |||
139 | if [ x"$dst" = x ] | ||
140 | then | ||
141 | echo "install: no destination specified" | ||
142 | exit 1 | ||
143 | else | ||
144 | true | ||
145 | fi | ||
146 | 86 | ||
147 | # If destination is a directory, append the input filename; if your system | 87 | chgrpcmd= |
148 | # does not like double slashes in filenames, you may need to add some logic | 88 | chmodcmd=$chmodprog |
89 | chowncmd= | ||
90 | mvcmd=$mvprog | ||
91 | rmcmd="$rmprog -f" | ||
92 | stripcmd= | ||
149 | 93 | ||
150 | if [ -d $dst ] | 94 | src= |
151 | then | 95 | dst= |
152 | dst="$dst"/`basename $src` | 96 | dir_arg= |
153 | else | 97 | dst_arg= |
154 | true | ||
155 | fi | ||
156 | fi | ||
157 | 98 | ||
158 | ## this sed command emulates the dirname command | 99 | copy_on_change=false |
159 | dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` | 100 | no_target_directory= |
160 | 101 | ||
161 | # Make sure that the destination directory exists. | 102 | usage="\ |
162 | # this part is taken from Noah Friedman's mkinstalldirs script | 103 | Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE |
104 | or: $0 [OPTION]... SRCFILES... DIRECTORY | ||
105 | or: $0 [OPTION]... -t DIRECTORY SRCFILES... | ||
106 | or: $0 [OPTION]... -d DIRECTORIES... | ||
163 | 107 | ||
164 | # Skip lots of stat calls in the usual case. | 108 | In the 1st form, copy SRCFILE to DSTFILE. |
165 | if [ ! -d "$dstdir" ]; then | 109 | In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. |
166 | defaultIFS=' | 110 | In the 4th, create DIRECTORIES. |
167 | ' | ||
168 | IFS="${IFS-${defaultIFS}}" | ||
169 | 111 | ||
170 | oIFS="${IFS}" | 112 | Options: |
171 | # Some sh's can't handle IFS=/ for some reason. | 113 | --help display this help and exit. |
172 | IFS='%' | 114 | --version display version info and exit. |
173 | set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` | ||
174 | IFS="${oIFS}" | ||
175 | 115 | ||
176 | pathcomp='' | 116 | -c (ignored) |
117 | -C install only if different (preserve the last data modification time) | ||
118 | -d create directories instead of installing files. | ||
119 | -g GROUP $chgrpprog installed files to GROUP. | ||
120 | -m MODE $chmodprog installed files to MODE. | ||
121 | -o USER $chownprog installed files to USER. | ||
122 | -s $stripprog installed files. | ||
123 | -t DIRECTORY install into DIRECTORY. | ||
124 | -T report an error if DSTFILE is a directory. | ||
177 | 125 | ||
178 | while [ $# -ne 0 ] ; do | 126 | Environment variables override the default commands: |
179 | pathcomp="${pathcomp}${1}" | 127 | CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG |
180 | shift | 128 | RMPROG STRIPPROG |
129 | " | ||
181 | 130 | ||
182 | if [ ! -d "${pathcomp}" ] ; | 131 | while test $# -ne 0; do |
183 | then | 132 | case $1 in |
184 | $mkdirprog "${pathcomp}" | 133 | -c) ;; |
185 | else | ||
186 | true | ||
187 | fi | ||
188 | 134 | ||
189 | pathcomp="${pathcomp}/" | 135 | -C) copy_on_change=true;; |
190 | done | ||
191 | fi | ||
192 | 136 | ||
193 | if [ x"$dir_arg" != x ] | 137 | -d) dir_arg=true;; |
194 | then | ||
195 | $doit $instcmd $dst && | ||
196 | 138 | ||
197 | if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && | 139 | -g) chgrpcmd="$chgrpprog $2" |
198 | if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && | 140 | shift;; |
199 | if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && | ||
200 | if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi | ||
201 | else | ||
202 | 141 | ||
203 | # If we're going to rename the final executable, determine the name now. | 142 | --help) echo "$usage"; exit $?;; |
204 | 143 | ||
205 | if [ x"$transformarg" = x ] | 144 | -m) mode=$2 |
206 | then | 145 | case $mode in |
207 | dstfile=`basename $dst` | 146 | *' '* | *' '* | *' |
208 | else | 147 | '* | *'*'* | *'?'* | *'['*) |
209 | dstfile=`basename $dst $transformbasename | | 148 | echo "$0: invalid mode: $mode" >&2 |
210 | sed $transformarg`$transformbasename | 149 | exit 1;; |
211 | fi | 150 | esac |
151 | shift;; | ||
212 | 152 | ||
213 | # don't allow the sed command to completely eliminate the filename | 153 | -o) chowncmd="$chownprog $2" |
154 | shift;; | ||
214 | 155 | ||
215 | if [ x"$dstfile" = x ] | 156 | -s) stripcmd=$stripprog;; |
216 | then | ||
217 | dstfile=`basename $dst` | ||
218 | else | ||
219 | true | ||
220 | fi | ||
221 | 157 | ||
222 | # Make a temp file name in the proper directory. | 158 | -t) dst_arg=$2 |
159 | # Protect names problematic for 'test' and other utilities. | ||
160 | case $dst_arg in | ||
161 | -* | [=\(\)!]) dst_arg=./$dst_arg;; | ||
162 | esac | ||
163 | shift;; | ||
223 | 164 | ||
224 | dsttmp=$dstdir/#inst.$$# | 165 | -T) no_target_directory=true;; |
225 | 166 | ||
226 | # Move or copy the file name to the temp name | 167 | --version) echo "$0 $scriptversion"; exit $?;; |
227 | 168 | ||
228 | $doit $instcmd $src $dsttmp && | 169 | --) shift |
170 | break;; | ||
229 | 171 | ||
230 | trap "rm -f ${dsttmp}" 0 && | 172 | -*) echo "$0: invalid option: $1" >&2 |
173 | exit 1;; | ||
231 | 174 | ||
232 | # and set any options; do chmod last to preserve setuid bits | 175 | *) break;; |
176 | esac | ||
177 | shift | ||
178 | done | ||
233 | 179 | ||
234 | # If any of these fail, we abort the whole thing. If we want to | 180 | if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then |
235 | # ignore errors from any of these, just make sure not to ignore | 181 | # When -d is used, all remaining arguments are directories to create. |
236 | # errors from the above "$doit $instcmd $src $dsttmp" command. | 182 | # When -t is used, the destination is already specified. |
183 | # Otherwise, the last argument is the destination. Remove it from $@. | ||
184 | for arg | ||
185 | do | ||
186 | if test -n "$dst_arg"; then | ||
187 | # $@ is not empty: it contains at least $arg. | ||
188 | set fnord "$@" "$dst_arg" | ||
189 | shift # fnord | ||
190 | fi | ||
191 | shift # arg | ||
192 | dst_arg=$arg | ||
193 | # Protect names problematic for 'test' and other utilities. | ||
194 | case $dst_arg in | ||
195 | -* | [=\(\)!]) dst_arg=./$dst_arg;; | ||
196 | esac | ||
197 | done | ||
198 | fi | ||
237 | 199 | ||
238 | if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && | 200 | if test $# -eq 0; then |
239 | if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && | 201 | if test -z "$dir_arg"; then |
240 | if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && | 202 | echo "$0: no input file specified." >&2 |
241 | if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && | 203 | exit 1 |
204 | fi | ||
205 | # It's OK to call 'install-sh -d' without argument. | ||
206 | # This can happen when creating conditional directories. | ||
207 | exit 0 | ||
208 | fi | ||
242 | 209 | ||
243 | # Now rename the file to the real destination. | 210 | if test -z "$dir_arg"; then |
211 | do_exit='(exit $ret); exit $ret' | ||
212 | trap "ret=129; $do_exit" 1 | ||
213 | trap "ret=130; $do_exit" 2 | ||
214 | trap "ret=141; $do_exit" 13 | ||
215 | trap "ret=143; $do_exit" 15 | ||
216 | |||
217 | # Set umask so as not to create temps with too-generous modes. | ||
218 | # However, 'strip' requires both read and write access to temps. | ||
219 | case $mode in | ||
220 | # Optimize common cases. | ||
221 | *644) cp_umask=133;; | ||
222 | *755) cp_umask=22;; | ||
223 | |||
224 | *[0-7]) | ||
225 | if test -z "$stripcmd"; then | ||
226 | u_plus_rw= | ||
227 | else | ||
228 | u_plus_rw='% 200' | ||
229 | fi | ||
230 | cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; | ||
231 | *) | ||
232 | if test -z "$stripcmd"; then | ||
233 | u_plus_rw= | ||
234 | else | ||
235 | u_plus_rw=,u+rw | ||
236 | fi | ||
237 | cp_umask=$mode$u_plus_rw;; | ||
238 | esac | ||
239 | fi | ||
244 | 240 | ||
245 | $doit $rmcmd -f $dstdir/$dstfile && | 241 | for src |
246 | $doit $mvcmd $dsttmp $dstdir/$dstfile | 242 | do |
243 | # Protect names problematic for 'test' and other utilities. | ||
244 | case $src in | ||
245 | -* | [=\(\)!]) src=./$src;; | ||
246 | esac | ||
247 | |||
248 | if test -n "$dir_arg"; then | ||
249 | dst=$src | ||
250 | dstdir=$dst | ||
251 | test -d "$dstdir" | ||
252 | dstdir_status=$? | ||
253 | else | ||
254 | |||
255 | # Waiting for this to be detected by the "$cpprog $src $dsttmp" command | ||
256 | # might cause directories to be created, which would be especially bad | ||
257 | # if $src (and thus $dsttmp) contains '*'. | ||
258 | if test ! -f "$src" && test ! -d "$src"; then | ||
259 | echo "$0: $src does not exist." >&2 | ||
260 | exit 1 | ||
261 | fi | ||
262 | |||
263 | if test -z "$dst_arg"; then | ||
264 | echo "$0: no destination specified." >&2 | ||
265 | exit 1 | ||
266 | fi | ||
267 | dst=$dst_arg | ||
268 | |||
269 | # If destination is a directory, append the input filename; won't work | ||
270 | # if double slashes aren't ignored. | ||
271 | if test -d "$dst"; then | ||
272 | if test -n "$no_target_directory"; then | ||
273 | echo "$0: $dst_arg: Is a directory" >&2 | ||
274 | exit 1 | ||
275 | fi | ||
276 | dstdir=$dst | ||
277 | dst=$dstdir/`basename "$src"` | ||
278 | dstdir_status=0 | ||
279 | else | ||
280 | # Prefer dirname, but fall back on a substitute if dirname fails. | ||
281 | dstdir=` | ||
282 | (dirname "$dst") 2>/dev/null || | ||
283 | expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ | ||
284 | X"$dst" : 'X\(//\)[^/]' \| \ | ||
285 | X"$dst" : 'X\(//\)$' \| \ | ||
286 | X"$dst" : 'X\(/\)' \| . 2>/dev/null || | ||
287 | echo X"$dst" | | ||
288 | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ | ||
289 | s//\1/ | ||
290 | q | ||
291 | } | ||
292 | /^X\(\/\/\)[^/].*/{ | ||
293 | s//\1/ | ||
294 | q | ||
295 | } | ||
296 | /^X\(\/\/\)$/{ | ||
297 | s//\1/ | ||
298 | q | ||
299 | } | ||
300 | /^X\(\/\).*/{ | ||
301 | s//\1/ | ||
302 | q | ||
303 | } | ||
304 | s/.*/./; q' | ||
305 | ` | ||
306 | |||
307 | test -d "$dstdir" | ||
308 | dstdir_status=$? | ||
309 | fi | ||
310 | fi | ||
311 | |||
312 | obsolete_mkdir_used=false | ||
313 | |||
314 | if test $dstdir_status != 0; then | ||
315 | case $posix_mkdir in | ||
316 | '') | ||
317 | # Create intermediate dirs using mode 755 as modified by the umask. | ||
318 | # This is like FreeBSD 'install' as of 1997-10-28. | ||
319 | umask=`umask` | ||
320 | case $stripcmd.$umask in | ||
321 | # Optimize common cases. | ||
322 | *[2367][2367]) mkdir_umask=$umask;; | ||
323 | .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; | ||
324 | |||
325 | *[0-7]) | ||
326 | mkdir_umask=`expr $umask + 22 \ | ||
327 | - $umask % 100 % 40 + $umask % 20 \ | ||
328 | - $umask % 10 % 4 + $umask % 2 | ||
329 | `;; | ||
330 | *) mkdir_umask=$umask,go-w;; | ||
331 | esac | ||
332 | |||
333 | # With -d, create the new directory with the user-specified mode. | ||
334 | # Otherwise, rely on $mkdir_umask. | ||
335 | if test -n "$dir_arg"; then | ||
336 | mkdir_mode=-m$mode | ||
337 | else | ||
338 | mkdir_mode= | ||
339 | fi | ||
247 | 340 | ||
248 | fi && | 341 | posix_mkdir=false |
342 | case $umask in | ||
343 | *[123567][0-7][0-7]) | ||
344 | # POSIX mkdir -p sets u+wx bits regardless of umask, which | ||
345 | # is incompatible with FreeBSD 'install' when (umask & 300) != 0. | ||
346 | ;; | ||
347 | *) | ||
348 | tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ | ||
349 | trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 | ||
350 | |||
351 | if (umask $mkdir_umask && | ||
352 | exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 | ||
353 | then | ||
354 | if test -z "$dir_arg" || { | ||
355 | # Check for POSIX incompatibilities with -m. | ||
356 | # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or | ||
357 | # other-writable bit of parent directory when it shouldn't. | ||
358 | # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. | ||
359 | ls_ld_tmpdir=`ls -ld "$tmpdir"` | ||
360 | case $ls_ld_tmpdir in | ||
361 | d????-?r-*) different_mode=700;; | ||
362 | d????-?--*) different_mode=755;; | ||
363 | *) false;; | ||
364 | esac && | ||
365 | $mkdirprog -m$different_mode -p -- "$tmpdir" && { | ||
366 | ls_ld_tmpdir_1=`ls -ld "$tmpdir"` | ||
367 | test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" | ||
368 | } | ||
369 | } | ||
370 | then posix_mkdir=: | ||
371 | fi | ||
372 | rmdir "$tmpdir/d" "$tmpdir" | ||
373 | else | ||
374 | # Remove any dirs left behind by ancient mkdir implementations. | ||
375 | rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null | ||
376 | fi | ||
377 | trap '' 0;; | ||
378 | esac;; | ||
379 | esac | ||
249 | 380 | ||
381 | if | ||
382 | $posix_mkdir && ( | ||
383 | umask $mkdir_umask && | ||
384 | $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" | ||
385 | ) | ||
386 | then : | ||
387 | else | ||
388 | |||
389 | # The umask is ridiculous, or mkdir does not conform to POSIX, | ||
390 | # or it failed possibly due to a race condition. Create the | ||
391 | # directory the slow way, step by step, checking for races as we go. | ||
392 | |||
393 | case $dstdir in | ||
394 | /*) prefix='/';; | ||
395 | [-=\(\)!]*) prefix='./';; | ||
396 | *) prefix='';; | ||
397 | esac | ||
398 | |||
399 | eval "$initialize_posix_glob" | ||
400 | |||
401 | oIFS=$IFS | ||
402 | IFS=/ | ||
403 | $posix_glob set -f | ||
404 | set fnord $dstdir | ||
405 | shift | ||
406 | $posix_glob set +f | ||
407 | IFS=$oIFS | ||
408 | |||
409 | prefixes= | ||
410 | |||
411 | for d | ||
412 | do | ||
413 | test X"$d" = X && continue | ||
414 | |||
415 | prefix=$prefix$d | ||
416 | if test -d "$prefix"; then | ||
417 | prefixes= | ||
418 | else | ||
419 | if $posix_mkdir; then | ||
420 | (umask=$mkdir_umask && | ||
421 | $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break | ||
422 | # Don't fail if two instances are running concurrently. | ||
423 | test -d "$prefix" || exit 1 | ||
424 | else | ||
425 | case $prefix in | ||
426 | *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; | ||
427 | *) qprefix=$prefix;; | ||
428 | esac | ||
429 | prefixes="$prefixes '$qprefix'" | ||
430 | fi | ||
431 | fi | ||
432 | prefix=$prefix/ | ||
433 | done | ||
434 | |||
435 | if test -n "$prefixes"; then | ||
436 | # Don't fail if two instances are running concurrently. | ||
437 | (umask $mkdir_umask && | ||
438 | eval "\$doit_exec \$mkdirprog $prefixes") || | ||
439 | test -d "$dstdir" || exit 1 | ||
440 | obsolete_mkdir_used=true | ||
441 | fi | ||
442 | fi | ||
443 | fi | ||
444 | |||
445 | if test -n "$dir_arg"; then | ||
446 | { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && | ||
447 | { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && | ||
448 | { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || | ||
449 | test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 | ||
450 | else | ||
451 | |||
452 | # Make a couple of temp file names in the proper directory. | ||
453 | dsttmp=$dstdir/_inst.$$_ | ||
454 | rmtmp=$dstdir/_rm.$$_ | ||
455 | |||
456 | # Trap to clean up those temp files at exit. | ||
457 | trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 | ||
458 | |||
459 | # Copy the file name to the temp name. | ||
460 | (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && | ||
461 | |||
462 | # and set any options; do chmod last to preserve setuid bits. | ||
463 | # | ||
464 | # If any of these fail, we abort the whole thing. If we want to | ||
465 | # ignore errors from any of these, just make sure not to ignore | ||
466 | # errors from the above "$doit $cpprog $src $dsttmp" command. | ||
467 | # | ||
468 | { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && | ||
469 | { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && | ||
470 | { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && | ||
471 | { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && | ||
472 | |||
473 | # If -C, don't bother to copy if it wouldn't change the file. | ||
474 | if $copy_on_change && | ||
475 | old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && | ||
476 | new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && | ||
477 | |||
478 | eval "$initialize_posix_glob" && | ||
479 | $posix_glob set -f && | ||
480 | set X $old && old=:$2:$4:$5:$6 && | ||
481 | set X $new && new=:$2:$4:$5:$6 && | ||
482 | $posix_glob set +f && | ||
483 | |||
484 | test "$old" = "$new" && | ||
485 | $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 | ||
486 | then | ||
487 | rm -f "$dsttmp" | ||
488 | else | ||
489 | # Rename the file to the real destination. | ||
490 | $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || | ||
491 | |||
492 | # The rename failed, perhaps because mv can't rename something else | ||
493 | # to itself, or perhaps because mv is so ancient that it does not | ||
494 | # support -f. | ||
495 | { | ||
496 | # Now remove or move aside any old file at destination location. | ||
497 | # We try this two ways since rm can't unlink itself on some | ||
498 | # systems and the destination file might be busy for other | ||
499 | # reasons. In this case, the final cleanup might fail but the new | ||
500 | # file should still install successfully. | ||
501 | { | ||
502 | test ! -f "$dst" || | ||
503 | $doit $rmcmd -f "$dst" 2>/dev/null || | ||
504 | { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && | ||
505 | { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } | ||
506 | } || | ||
507 | { echo "$0: cannot unlink or rename $dst" >&2 | ||
508 | (exit 1); exit 1 | ||
509 | } | ||
510 | } && | ||
511 | |||
512 | # Now rename the file to the real destination. | ||
513 | $doit $mvcmd "$dsttmp" "$dst" | ||
514 | } | ||
515 | fi || exit 1 | ||
516 | |||
517 | trap '' 0 | ||
518 | fi | ||
519 | done | ||
250 | 520 | ||
251 | exit 0 | 521 | # Local variables: |
522 | # eval: (add-hook 'write-file-hooks 'time-stamp) | ||
523 | # time-stamp-start: "scriptversion=" | ||
524 | # time-stamp-format: "%:y-%02m-%02d.%02H" | ||
525 | # time-stamp-time-zone: "UTC" | ||
526 | # time-stamp-end: "; # UTC" | ||
527 | # End: | ||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: kex.c,v 1.134 2017/06/13 12:13:59 djm Exp $ */ | 1 | /* $OpenBSD: kex.c,v 1.136 2018/02/07 02:06:50 jsing 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 | * |
@@ -603,11 +603,9 @@ kex_free(struct kex *kex) | |||
603 | u_int mode; | 603 | u_int mode; |
604 | 604 | ||
605 | #ifdef WITH_OPENSSL | 605 | #ifdef WITH_OPENSSL |
606 | if (kex->dh) | 606 | DH_free(kex->dh); |
607 | DH_free(kex->dh); | ||
608 | #ifdef OPENSSL_HAS_ECC | 607 | #ifdef OPENSSL_HAS_ECC |
609 | if (kex->ec_client_key) | 608 | EC_KEY_free(kex->ec_client_key); |
610 | EC_KEY_free(kex->ec_client_key); | ||
611 | #endif /* OPENSSL_HAS_ECC */ | 609 | #endif /* OPENSSL_HAS_ECC */ |
612 | #endif /* WITH_OPENSSL */ | 610 | #endif /* WITH_OPENSSL */ |
613 | for (mode = 0; mode < MODE_MAX; mode++) { | 611 | for (mode = 0; mode < MODE_MAX; mode++) { |
@@ -694,9 +692,6 @@ choose_mac(struct ssh *ssh, struct sshmac *mac, char *client, char *server) | |||
694 | free(name); | 692 | free(name); |
695 | return SSH_ERR_INTERNAL_ERROR; | 693 | return SSH_ERR_INTERNAL_ERROR; |
696 | } | 694 | } |
697 | /* truncate the key */ | ||
698 | if (ssh->compat & SSH_BUG_HMAC) | ||
699 | mac->key_len = 16; | ||
700 | mac->name = name; | 695 | mac->name = name; |
701 | mac->key = NULL; | 696 | mac->key = NULL; |
702 | mac->enabled = 0; | 697 | mac->enabled = 0; |
@@ -885,8 +880,7 @@ kex_choose_conf(struct ssh *ssh) | |||
885 | kex->dh_need = dh_need; | 880 | kex->dh_need = dh_need; |
886 | 881 | ||
887 | /* ignore the next message if the proposals do not match */ | 882 | /* ignore the next message if the proposals do not match */ |
888 | if (first_kex_follows && !proposals_match(my, peer) && | 883 | if (first_kex_follows && !proposals_match(my, peer)) |
889 | !(ssh->compat & SSH_BUG_FIRSTKEX)) | ||
890 | ssh->dispatch_skip_packets = 1; | 884 | ssh->dispatch_skip_packets = 1; |
891 | r = 0; | 885 | r = 0; |
892 | out: | 886 | out: |
diff --git a/kexc25519c.c b/kexc25519c.c index e488013e9..a8d92149c 100644 --- a/kexc25519c.c +++ b/kexc25519c.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: kexc25519c.c,v 1.8 2017/05/31 04:17:12 djm Exp $ */ | 1 | /* $OpenBSD: kexc25519c.c,v 1.9 2017/12/18 02:25:15 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2001 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2001 Markus Friedl. All rights reserved. |
4 | * Copyright (c) 2010 Damien Miller. All rights reserved. | 4 | * Copyright (c) 2010 Damien Miller. All rights reserved. |
@@ -141,7 +141,7 @@ input_kex_c25519_reply(int type, u_int32_t seq, struct ssh *ssh) | |||
141 | goto out; | 141 | goto out; |
142 | 142 | ||
143 | if ((r = sshkey_verify(server_host_key, signature, slen, hash, hashlen, | 143 | if ((r = sshkey_verify(server_host_key, signature, slen, hash, hashlen, |
144 | ssh->compat)) != 0) | 144 | kex->hostkey_alg, ssh->compat)) != 0) |
145 | goto out; | 145 | goto out; |
146 | 146 | ||
147 | /* save session id */ | 147 | /* save session id */ |
diff --git a/kexc25519s.c b/kexc25519s.c index 0a008d447..0800a7a4b 100644 --- a/kexc25519s.c +++ b/kexc25519s.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: kexc25519s.c,v 1.10 2015/12/04 16:41:28 markus Exp $ */ | 1 | /* $OpenBSD: kexc25519s.c,v 1.11 2017/05/31 04:19:28 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2001 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2001 Markus Friedl. All rights reserved. |
4 | * Copyright (c) 2010 Damien Miller. All rights reserved. | 4 | * Copyright (c) 2010 Damien Miller. All rights reserved. |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: kexdhc.c,v 1.20 2017/05/30 14:23:52 markus Exp $ */ | 1 | /* $OpenBSD: kexdhc.c,v 1.22 2018/02/07 02:06:51 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2001 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2001 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -183,7 +183,7 @@ input_kex_dh(int type, u_int32_t seq, struct ssh *ssh) | |||
183 | goto out; | 183 | goto out; |
184 | 184 | ||
185 | if ((r = sshkey_verify(server_host_key, signature, slen, hash, hashlen, | 185 | if ((r = sshkey_verify(server_host_key, signature, slen, hash, hashlen, |
186 | ssh->compat)) != 0) | 186 | kex->hostkey_alg, ssh->compat)) != 0) |
187 | goto out; | 187 | goto out; |
188 | 188 | ||
189 | /* save session id */ | 189 | /* save session id */ |
@@ -203,14 +203,12 @@ input_kex_dh(int type, u_int32_t seq, struct ssh *ssh) | |||
203 | explicit_bzero(hash, sizeof(hash)); | 203 | explicit_bzero(hash, sizeof(hash)); |
204 | DH_free(kex->dh); | 204 | DH_free(kex->dh); |
205 | kex->dh = NULL; | 205 | kex->dh = NULL; |
206 | if (dh_server_pub) | 206 | BN_clear_free(dh_server_pub); |
207 | BN_clear_free(dh_server_pub); | ||
208 | if (kbuf) { | 207 | if (kbuf) { |
209 | explicit_bzero(kbuf, klen); | 208 | explicit_bzero(kbuf, klen); |
210 | free(kbuf); | 209 | free(kbuf); |
211 | } | 210 | } |
212 | if (shared_secret) | 211 | BN_clear_free(shared_secret); |
213 | BN_clear_free(shared_secret); | ||
214 | sshkey_free(server_host_key); | 212 | sshkey_free(server_host_key); |
215 | free(server_host_key_blob); | 213 | free(server_host_key_blob); |
216 | free(signature); | 214 | free(signature); |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: kexdhs.c,v 1.25 2017/05/30 14:23:52 markus Exp $ */ | 1 | /* $OpenBSD: kexdhs.c,v 1.26 2018/02/07 02:06:51 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2001 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2001 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -208,14 +208,12 @@ input_kex_dh_init(int type, u_int32_t seq, struct ssh *ssh) | |||
208 | explicit_bzero(hash, sizeof(hash)); | 208 | explicit_bzero(hash, sizeof(hash)); |
209 | DH_free(kex->dh); | 209 | DH_free(kex->dh); |
210 | kex->dh = NULL; | 210 | kex->dh = NULL; |
211 | if (dh_client_pub) | 211 | BN_clear_free(dh_client_pub); |
212 | BN_clear_free(dh_client_pub); | ||
213 | if (kbuf) { | 212 | if (kbuf) { |
214 | explicit_bzero(kbuf, klen); | 213 | explicit_bzero(kbuf, klen); |
215 | free(kbuf); | 214 | free(kbuf); |
216 | } | 215 | } |
217 | if (shared_secret) | 216 | BN_clear_free(shared_secret); |
218 | BN_clear_free(shared_secret); | ||
219 | free(server_host_key_blob); | 217 | free(server_host_key_blob); |
220 | free(signature); | 218 | free(signature); |
221 | return r; | 219 | return r; |
diff --git a/kexecdhc.c b/kexecdhc.c index d8a8b660f..ac146a362 100644 --- a/kexecdhc.c +++ b/kexecdhc.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: kexecdhc.c,v 1.11 2017/05/30 14:23:52 markus Exp $ */ | 1 | /* $OpenBSD: kexecdhc.c,v 1.13 2018/02/07 02:06:51 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2001 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2001 Markus Friedl. All rights reserved. |
4 | * Copyright (c) 2010 Damien Miller. All rights reserved. | 4 | * Copyright (c) 2010 Damien Miller. All rights reserved. |
@@ -89,8 +89,7 @@ kexecdh_client(struct ssh *ssh) | |||
89 | ssh_dispatch_set(ssh, SSH2_MSG_KEX_ECDH_REPLY, &input_kex_ecdh_reply); | 89 | ssh_dispatch_set(ssh, SSH2_MSG_KEX_ECDH_REPLY, &input_kex_ecdh_reply); |
90 | r = 0; | 90 | r = 0; |
91 | out: | 91 | out: |
92 | if (client_key) | 92 | EC_KEY_free(client_key); |
93 | EC_KEY_free(client_key); | ||
94 | return r; | 93 | return r; |
95 | } | 94 | } |
96 | 95 | ||
@@ -188,7 +187,7 @@ input_kex_ecdh_reply(int type, u_int32_t seq, struct ssh *ssh) | |||
188 | goto out; | 187 | goto out; |
189 | 188 | ||
190 | if ((r = sshkey_verify(server_host_key, signature, slen, hash, | 189 | if ((r = sshkey_verify(server_host_key, signature, slen, hash, |
191 | hashlen, ssh->compat)) != 0) | 190 | hashlen, kex->hostkey_alg, ssh->compat)) != 0) |
192 | goto out; | 191 | goto out; |
193 | 192 | ||
194 | /* save session id */ | 193 | /* save session id */ |
@@ -206,18 +205,14 @@ input_kex_ecdh_reply(int type, u_int32_t seq, struct ssh *ssh) | |||
206 | r = kex_send_newkeys(ssh); | 205 | r = kex_send_newkeys(ssh); |
207 | out: | 206 | out: |
208 | explicit_bzero(hash, sizeof(hash)); | 207 | explicit_bzero(hash, sizeof(hash)); |
209 | if (kex->ec_client_key) { | 208 | EC_KEY_free(kex->ec_client_key); |
210 | EC_KEY_free(kex->ec_client_key); | 209 | kex->ec_client_key = NULL; |
211 | kex->ec_client_key = NULL; | 210 | EC_POINT_clear_free(server_public); |
212 | } | ||
213 | if (server_public) | ||
214 | EC_POINT_clear_free(server_public); | ||
215 | if (kbuf) { | 211 | if (kbuf) { |
216 | explicit_bzero(kbuf, klen); | 212 | explicit_bzero(kbuf, klen); |
217 | free(kbuf); | 213 | free(kbuf); |
218 | } | 214 | } |
219 | if (shared_secret) | 215 | BN_clear_free(shared_secret); |
220 | BN_clear_free(shared_secret); | ||
221 | sshkey_free(server_host_key); | 216 | sshkey_free(server_host_key); |
222 | free(server_host_key_blob); | 217 | free(server_host_key_blob); |
223 | free(signature); | 218 | free(signature); |
diff --git a/kexecdhs.c b/kexecdhs.c index dc24a3af6..af4f30309 100644 --- a/kexecdhs.c +++ b/kexecdhs.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: kexecdhs.c,v 1.16 2017/05/30 14:23:52 markus Exp $ */ | 1 | /* $OpenBSD: kexecdhs.c,v 1.17 2018/02/07 02:06:51 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2001 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2001 Markus Friedl. All rights reserved. |
4 | * Copyright (c) 2010 Damien Miller. All rights reserved. | 4 | * Copyright (c) 2010 Damien Miller. All rights reserved. |
@@ -187,18 +187,14 @@ input_kex_ecdh_init(int type, u_int32_t seq, struct ssh *ssh) | |||
187 | r = kex_send_newkeys(ssh); | 187 | r = kex_send_newkeys(ssh); |
188 | out: | 188 | out: |
189 | explicit_bzero(hash, sizeof(hash)); | 189 | explicit_bzero(hash, sizeof(hash)); |
190 | if (kex->ec_client_key) { | 190 | EC_KEY_free(kex->ec_client_key); |
191 | EC_KEY_free(kex->ec_client_key); | 191 | kex->ec_client_key = NULL; |
192 | kex->ec_client_key = NULL; | 192 | EC_KEY_free(server_key); |
193 | } | ||
194 | if (server_key) | ||
195 | EC_KEY_free(server_key); | ||
196 | if (kbuf) { | 193 | if (kbuf) { |
197 | explicit_bzero(kbuf, klen); | 194 | explicit_bzero(kbuf, klen); |
198 | free(kbuf); | 195 | free(kbuf); |
199 | } | 196 | } |
200 | if (shared_secret) | 197 | BN_clear_free(shared_secret); |
201 | BN_clear_free(shared_secret); | ||
202 | free(server_host_key_blob); | 198 | free(server_host_key_blob); |
203 | free(signature); | 199 | free(signature); |
204 | return r; | 200 | return r; |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: kexgexc.c,v 1.25 2017/05/30 14:23:52 markus Exp $ */ | 1 | /* $OpenBSD: kexgexc.c,v 1.27 2018/02/07 02:06:51 jsing 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. |
@@ -134,10 +134,8 @@ input_kex_dh_gex_group(int type, u_int32_t seq, struct ssh *ssh) | |||
134 | ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_REPLY, &input_kex_dh_gex_reply); | 134 | ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_REPLY, &input_kex_dh_gex_reply); |
135 | r = 0; | 135 | r = 0; |
136 | out: | 136 | out: |
137 | if (p) | 137 | BN_clear_free(p); |
138 | BN_clear_free(p); | 138 | BN_clear_free(g); |
139 | if (g) | ||
140 | BN_clear_free(g); | ||
141 | return r; | 139 | return r; |
142 | } | 140 | } |
143 | 141 | ||
@@ -230,7 +228,7 @@ input_kex_dh_gex_reply(int type, u_int32_t seq, struct ssh *ssh) | |||
230 | goto out; | 228 | goto out; |
231 | 229 | ||
232 | if ((r = sshkey_verify(server_host_key, signature, slen, hash, | 230 | if ((r = sshkey_verify(server_host_key, signature, slen, hash, |
233 | hashlen, ssh->compat)) != 0) | 231 | hashlen, kex->hostkey_alg, ssh->compat)) != 0) |
234 | goto out; | 232 | goto out; |
235 | 233 | ||
236 | /* save session id */ | 234 | /* save session id */ |
@@ -250,14 +248,12 @@ input_kex_dh_gex_reply(int type, u_int32_t seq, struct ssh *ssh) | |||
250 | explicit_bzero(hash, sizeof(hash)); | 248 | explicit_bzero(hash, sizeof(hash)); |
251 | DH_free(kex->dh); | 249 | DH_free(kex->dh); |
252 | kex->dh = NULL; | 250 | kex->dh = NULL; |
253 | if (dh_server_pub) | 251 | BN_clear_free(dh_server_pub); |
254 | BN_clear_free(dh_server_pub); | ||
255 | if (kbuf) { | 252 | if (kbuf) { |
256 | explicit_bzero(kbuf, klen); | 253 | explicit_bzero(kbuf, klen); |
257 | free(kbuf); | 254 | free(kbuf); |
258 | } | 255 | } |
259 | if (shared_secret) | 256 | BN_clear_free(shared_secret); |
260 | BN_clear_free(shared_secret); | ||
261 | sshkey_free(server_host_key); | 257 | sshkey_free(server_host_key); |
262 | free(server_host_key_blob); | 258 | free(server_host_key_blob); |
263 | free(signature); | 259 | free(signature); |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: kexgexs.c,v 1.31 2017/05/30 14:23:52 markus Exp $ */ | 1 | /* $OpenBSD: kexgexs.c,v 1.32 2018/02/07 02:06:51 jsing 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. |
@@ -237,14 +237,12 @@ input_kex_dh_gex_init(int type, u_int32_t seq, struct ssh *ssh) | |||
237 | out: | 237 | out: |
238 | DH_free(kex->dh); | 238 | DH_free(kex->dh); |
239 | kex->dh = NULL; | 239 | kex->dh = NULL; |
240 | if (dh_client_pub) | 240 | BN_clear_free(dh_client_pub); |
241 | BN_clear_free(dh_client_pub); | ||
242 | if (kbuf) { | 241 | if (kbuf) { |
243 | explicit_bzero(kbuf, klen); | 242 | explicit_bzero(kbuf, klen); |
244 | free(kbuf); | 243 | free(kbuf); |
245 | } | 244 | } |
246 | if (shared_secret) | 245 | BN_clear_free(shared_secret); |
247 | BN_clear_free(shared_secret); | ||
248 | free(server_host_key_blob); | 246 | free(server_host_key_blob); |
249 | free(signature); | 247 | free(signature); |
250 | return r; | 248 | return r; |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: key.c,v 1.131 2017/05/30 14:16:41 markus Exp $ */ | 1 | /* $OpenBSD: key.c,v 1.132 2017/12/18 02:25:15 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * placed in the public domain | 3 | * placed in the public domain |
4 | */ | 4 | */ |
@@ -95,21 +95,6 @@ key_sign(const Key *key, u_char **sigp, u_int *lenp, | |||
95 | return 0; | 95 | return 0; |
96 | } | 96 | } |
97 | 97 | ||
98 | int | ||
99 | key_verify(const Key *key, const u_char *signature, u_int signaturelen, | ||
100 | const u_char *data, u_int datalen) | ||
101 | { | ||
102 | int r; | ||
103 | |||
104 | if ((r = sshkey_verify(key, signature, signaturelen, | ||
105 | data, datalen, datafellows)) != 0) { | ||
106 | fatal_on_fatal_errors(r, __func__, 0); | ||
107 | error("%s: %s", __func__, ssh_err(r)); | ||
108 | return r == SSH_ERR_SIGNATURE_INVALID ? 0 : -1; | ||
109 | } | ||
110 | return 1; | ||
111 | } | ||
112 | |||
113 | Key * | 98 | Key * |
114 | key_demote(const Key *k) | 99 | key_demote(const Key *k) |
115 | { | 100 | { |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: key.h,v 1.51 2017/05/30 14:16:41 markus Exp $ */ | 1 | /* $OpenBSD: key.h,v 1.52 2017/12/18 02:25:15 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. |
@@ -58,7 +58,6 @@ int key_to_blob(const Key *, u_char **, u_int *); | |||
58 | 58 | ||
59 | int key_sign(const Key *, u_char **, u_int *, const u_char *, u_int, | 59 | int key_sign(const Key *, u_char **, u_int *, const u_char *, u_int, |
60 | const char *); | 60 | const char *); |
61 | int key_verify(const Key *, const u_char *, u_int, const u_char *, u_int); | ||
62 | 61 | ||
63 | /* authfile.c */ | 62 | /* authfile.c */ |
64 | Key *key_load_cert(const char *); | 63 | Key *key_load_cert(const char *); |
@@ -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: krl.c,v 1.40 2017/05/31 09:15:42 deraadt Exp $ */ | 17 | /* $OpenBSD: krl.c,v 1.41 2017/12/18 02:25:15 djm Exp $ */ |
18 | 18 | ||
19 | #include "includes.h" | 19 | #include "includes.h" |
20 | 20 | ||
@@ -1014,7 +1014,7 @@ ssh_krl_from_blob(struct sshbuf *buf, struct ssh_krl **krlp, | |||
1014 | } | 1014 | } |
1015 | /* Check signature over entire KRL up to this point */ | 1015 | /* Check signature over entire KRL up to this point */ |
1016 | if ((r = sshkey_verify(key, blob, blen, | 1016 | if ((r = sshkey_verify(key, blob, blen, |
1017 | sshbuf_ptr(buf), sig_off, 0)) != 0) | 1017 | sshbuf_ptr(buf), sig_off, NULL, 0)) != 0) |
1018 | goto out; | 1018 | goto out; |
1019 | /* Check if this key has already signed this KRL */ | 1019 | /* Check if this key has already signed this KRL */ |
1020 | for (i = 0; i < nca_used; i++) { | 1020 | for (i = 0; i < nca_used; i++) { |
diff --git a/loginrec.c b/loginrec.c index 788553e92..bdbc9bbf4 100644 --- a/loginrec.c +++ b/loginrec.c | |||
@@ -663,15 +663,9 @@ construct_utmp(struct logininfo *li, | |||
663 | switch (li->type) { | 663 | switch (li->type) { |
664 | case LTYPE_LOGIN: | 664 | case LTYPE_LOGIN: |
665 | ut->ut_type = USER_PROCESS; | 665 | ut->ut_type = USER_PROCESS; |
666 | #ifdef _UNICOS | ||
667 | cray_set_tmpdir(ut); | ||
668 | #endif | ||
669 | break; | 666 | break; |
670 | case LTYPE_LOGOUT: | 667 | case LTYPE_LOGOUT: |
671 | ut->ut_type = DEAD_PROCESS; | 668 | ut->ut_type = DEAD_PROCESS; |
672 | #ifdef _UNICOS | ||
673 | cray_retain_utmp(ut, li->pid); | ||
674 | #endif | ||
675 | break; | 669 | break; |
676 | } | 670 | } |
677 | # endif | 671 | # endif |
diff --git a/md5crypt.c b/md5crypt.c index 22ef98933..52cf2959a 100644 --- a/md5crypt.c +++ b/md5crypt.c | |||
@@ -50,7 +50,7 @@ is_md5_salt(const char *salt) | |||
50 | char * | 50 | char * |
51 | md5_crypt(const char *pw, const char *salt) | 51 | md5_crypt(const char *pw, const char *salt) |
52 | { | 52 | { |
53 | static char passwd[120], salt_copy[9], *p; | 53 | static char passwd[120], salt_copy[9]; |
54 | static const char *sp, *ep; | 54 | static const char *sp, *ep; |
55 | unsigned char final[16]; | 55 | unsigned char final[16]; |
56 | int sl, pl, i, j; | 56 | int sl, pl, i, j; |
@@ -139,8 +139,6 @@ md5_crypt(const char *pw, const char *salt) | |||
139 | MD5_Final(final, &ctx1); | 139 | MD5_Final(final, &ctx1); |
140 | } | 140 | } |
141 | 141 | ||
142 | p = passwd + strlen(passwd); | ||
143 | |||
144 | l = (final[ 0]<<16) | (final[ 6]<<8) | final[12]; | 142 | l = (final[ 0]<<16) | (final[ 6]<<8) | final[12]; |
145 | strlcat(passwd, to64(l, 4), sizeof(passwd)); | 143 | strlcat(passwd, to64(l, 4), sizeof(passwd)); |
146 | l = (final[ 1]<<16) | (final[ 7]<<8) | final[13]; | 144 | l = (final[ 1]<<16) | (final[ 7]<<8) | final[13]; |
diff --git a/mdoc2man.awk b/mdoc2man.awk index 3e8725452..d393ae6f1 100644 --- a/mdoc2man.awk +++ b/mdoc2man.awk | |||
@@ -1,7 +1,5 @@ | |||
1 | #!/usr/bin/awk | 1 | #!/usr/bin/awk |
2 | # | 2 | # |
3 | # $Id: mdoc2man.awk,v 1.9 2009/10/24 00:52:42 dtucker Exp $ | ||
4 | # | ||
5 | # Version history: | 3 | # Version history: |
6 | # v4+ Adapted for OpenSSH Portable (see cvs Id and history) | 4 | # v4+ Adapted for OpenSSH Portable (see cvs Id and history) |
7 | # v3, I put the program under a proper license | 5 | # v3, I put the program under a proper license |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: misc.c,v 1.113 2017/08/18 05:48:04 djm Exp $ */ | 1 | /* $OpenBSD: misc.c,v 1.127 2018/03/12 00:52:01 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) 2005,2006 Damien Miller. All rights reserved. | 4 | * Copyright (c) 2005,2006 Damien Miller. All rights reserved. |
@@ -168,6 +168,73 @@ set_nodelay(int fd) | |||
168 | error("setsockopt TCP_NODELAY: %.100s", strerror(errno)); | 168 | error("setsockopt TCP_NODELAY: %.100s", strerror(errno)); |
169 | } | 169 | } |
170 | 170 | ||
171 | /* Allow local port reuse in TIME_WAIT */ | ||
172 | int | ||
173 | set_reuseaddr(int fd) | ||
174 | { | ||
175 | int on = 1; | ||
176 | |||
177 | if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) { | ||
178 | error("setsockopt SO_REUSEADDR fd %d: %s", fd, strerror(errno)); | ||
179 | return -1; | ||
180 | } | ||
181 | return 0; | ||
182 | } | ||
183 | |||
184 | /* Get/set routing domain */ | ||
185 | char * | ||
186 | get_rdomain(int fd) | ||
187 | { | ||
188 | #if defined(HAVE_SYS_GET_RDOMAIN) | ||
189 | return sys_get_rdomain(fd); | ||
190 | #elif defined(__OpenBSD__) | ||
191 | int rtable; | ||
192 | char *ret; | ||
193 | socklen_t len = sizeof(rtable); | ||
194 | |||
195 | if (getsockopt(fd, SOL_SOCKET, SO_RTABLE, &rtable, &len) == -1) { | ||
196 | error("Failed to get routing domain for fd %d: %s", | ||
197 | fd, strerror(errno)); | ||
198 | return NULL; | ||
199 | } | ||
200 | xasprintf(&ret, "%d", rtable); | ||
201 | return ret; | ||
202 | #else /* defined(__OpenBSD__) */ | ||
203 | return NULL; | ||
204 | #endif | ||
205 | } | ||
206 | |||
207 | int | ||
208 | set_rdomain(int fd, const char *name) | ||
209 | { | ||
210 | #if defined(HAVE_SYS_SET_RDOMAIN) | ||
211 | return sys_set_rdomain(fd, name); | ||
212 | #elif defined(__OpenBSD__) | ||
213 | int rtable; | ||
214 | const char *errstr; | ||
215 | |||
216 | if (name == NULL) | ||
217 | return 0; /* default table */ | ||
218 | |||
219 | rtable = (int)strtonum(name, 0, 255, &errstr); | ||
220 | if (errstr != NULL) { | ||
221 | /* Shouldn't happen */ | ||
222 | error("Invalid routing domain \"%s\": %s", name, errstr); | ||
223 | return -1; | ||
224 | } | ||
225 | if (setsockopt(fd, SOL_SOCKET, SO_RTABLE, | ||
226 | &rtable, sizeof(rtable)) == -1) { | ||
227 | error("Failed to set routing domain %d on fd %d: %s", | ||
228 | rtable, fd, strerror(errno)); | ||
229 | return -1; | ||
230 | } | ||
231 | return 0; | ||
232 | #else /* defined(__OpenBSD__) */ | ||
233 | error("Setting routing domain is not supported on this platform"); | ||
234 | return -1; | ||
235 | #endif | ||
236 | } | ||
237 | |||
171 | /* Characters considered whitespace in strsep calls. */ | 238 | /* Characters considered whitespace in strsep calls. */ |
172 | #define WHITESPACE " \t\r\n" | 239 | #define WHITESPACE " \t\r\n" |
173 | #define QUOTE "\"" | 240 | #define QUOTE "\"" |
@@ -396,11 +463,12 @@ put_host_port(const char *host, u_short port) | |||
396 | * Search for next delimiter between hostnames/addresses and ports. | 463 | * Search for next delimiter between hostnames/addresses and ports. |
397 | * Argument may be modified (for termination). | 464 | * Argument may be modified (for termination). |
398 | * Returns *cp if parsing succeeds. | 465 | * Returns *cp if parsing succeeds. |
399 | * *cp is set to the start of the next delimiter, if one was found. | 466 | * *cp is set to the start of the next field, if one was found. |
467 | * The delimiter char, if present, is stored in delim. | ||
400 | * If this is the last field, *cp is set to NULL. | 468 | * If this is the last field, *cp is set to NULL. |
401 | */ | 469 | */ |
402 | char * | 470 | static char * |
403 | hpdelim(char **cp) | 471 | hpdelim2(char **cp, char *delim) |
404 | { | 472 | { |
405 | char *s, *old; | 473 | char *s, *old; |
406 | 474 | ||
@@ -423,6 +491,8 @@ hpdelim(char **cp) | |||
423 | 491 | ||
424 | case ':': | 492 | case ':': |
425 | case '/': | 493 | case '/': |
494 | if (delim != NULL) | ||
495 | *delim = *s; | ||
426 | *s = '\0'; /* terminate */ | 496 | *s = '\0'; /* terminate */ |
427 | *cp = s + 1; | 497 | *cp = s + 1; |
428 | break; | 498 | break; |
@@ -435,6 +505,12 @@ hpdelim(char **cp) | |||
435 | } | 505 | } |
436 | 506 | ||
437 | char * | 507 | char * |
508 | hpdelim(char **cp) | ||
509 | { | ||
510 | return hpdelim2(cp, NULL); | ||
511 | } | ||
512 | |||
513 | char * | ||
438 | cleanhostname(char *host) | 514 | cleanhostname(char *host) |
439 | { | 515 | { |
440 | if (*host == '[' && host[strlen(host) - 1] == ']') { | 516 | if (*host == '[' && host[strlen(host) - 1] == ']') { |
@@ -468,6 +544,75 @@ colon(char *cp) | |||
468 | } | 544 | } |
469 | 545 | ||
470 | /* | 546 | /* |
547 | * Parse a [user@]host:[path] string. | ||
548 | * Caller must free returned user, host and path. | ||
549 | * Any of the pointer return arguments may be NULL (useful for syntax checking). | ||
550 | * If user was not specified then *userp will be set to NULL. | ||
551 | * If host was not specified then *hostp will be set to NULL. | ||
552 | * If path was not specified then *pathp will be set to ".". | ||
553 | * Returns 0 on success, -1 on failure. | ||
554 | */ | ||
555 | int | ||
556 | parse_user_host_path(const char *s, char **userp, char **hostp, char **pathp) | ||
557 | { | ||
558 | char *user = NULL, *host = NULL, *path = NULL; | ||
559 | char *sdup, *tmp; | ||
560 | int ret = -1; | ||
561 | |||
562 | if (userp != NULL) | ||
563 | *userp = NULL; | ||
564 | if (hostp != NULL) | ||
565 | *hostp = NULL; | ||
566 | if (pathp != NULL) | ||
567 | *pathp = NULL; | ||
568 | |||
569 | sdup = xstrdup(s); | ||
570 | |||
571 | /* Check for remote syntax: [user@]host:[path] */ | ||
572 | if ((tmp = colon(sdup)) == NULL) | ||
573 | goto out; | ||
574 | |||
575 | /* Extract optional path */ | ||
576 | *tmp++ = '\0'; | ||
577 | if (*tmp == '\0') | ||
578 | tmp = "."; | ||
579 | path = xstrdup(tmp); | ||
580 | |||
581 | /* Extract optional user and mandatory host */ | ||
582 | tmp = strrchr(sdup, '@'); | ||
583 | if (tmp != NULL) { | ||
584 | *tmp++ = '\0'; | ||
585 | host = xstrdup(cleanhostname(tmp)); | ||
586 | if (*sdup != '\0') | ||
587 | user = xstrdup(sdup); | ||
588 | } else { | ||
589 | host = xstrdup(cleanhostname(sdup)); | ||
590 | user = NULL; | ||
591 | } | ||
592 | |||
593 | /* Success */ | ||
594 | if (userp != NULL) { | ||
595 | *userp = user; | ||
596 | user = NULL; | ||
597 | } | ||
598 | if (hostp != NULL) { | ||
599 | *hostp = host; | ||
600 | host = NULL; | ||
601 | } | ||
602 | if (pathp != NULL) { | ||
603 | *pathp = path; | ||
604 | path = NULL; | ||
605 | } | ||
606 | ret = 0; | ||
607 | out: | ||
608 | free(sdup); | ||
609 | free(user); | ||
610 | free(host); | ||
611 | free(path); | ||
612 | return ret; | ||
613 | } | ||
614 | |||
615 | /* | ||
471 | * Parse a [user@]host[:port] string. | 616 | * Parse a [user@]host[:port] string. |
472 | * Caller must free returned user and host. | 617 | * Caller must free returned user and host. |
473 | * Any of the pointer return arguments may be NULL (useful for syntax checking). | 618 | * Any of the pointer return arguments may be NULL (useful for syntax checking). |
@@ -492,7 +637,7 @@ parse_user_host_port(const char *s, char **userp, char **hostp, int *portp) | |||
492 | if ((sdup = tmp = strdup(s)) == NULL) | 637 | if ((sdup = tmp = strdup(s)) == NULL) |
493 | return -1; | 638 | return -1; |
494 | /* Extract optional username */ | 639 | /* Extract optional username */ |
495 | if ((cp = strchr(tmp, '@')) != NULL) { | 640 | if ((cp = strrchr(tmp, '@')) != NULL) { |
496 | *cp = '\0'; | 641 | *cp = '\0'; |
497 | if (*tmp == '\0') | 642 | if (*tmp == '\0') |
498 | goto out; | 643 | goto out; |
@@ -528,6 +673,168 @@ parse_user_host_port(const char *s, char **userp, char **hostp, int *portp) | |||
528 | return ret; | 673 | return ret; |
529 | } | 674 | } |
530 | 675 | ||
676 | /* | ||
677 | * Converts a two-byte hex string to decimal. | ||
678 | * Returns the decimal value or -1 for invalid input. | ||
679 | */ | ||
680 | static int | ||
681 | hexchar(const char *s) | ||
682 | { | ||
683 | unsigned char result[2]; | ||
684 | int i; | ||
685 | |||
686 | for (i = 0; i < 2; i++) { | ||
687 | if (s[i] >= '0' && s[i] <= '9') | ||
688 | result[i] = (unsigned char)(s[i] - '0'); | ||
689 | else if (s[i] >= 'a' && s[i] <= 'f') | ||
690 | result[i] = (unsigned char)(s[i] - 'a') + 10; | ||
691 | else if (s[i] >= 'A' && s[i] <= 'F') | ||
692 | result[i] = (unsigned char)(s[i] - 'A') + 10; | ||
693 | else | ||
694 | return -1; | ||
695 | } | ||
696 | return (result[0] << 4) | result[1]; | ||
697 | } | ||
698 | |||
699 | /* | ||
700 | * Decode an url-encoded string. | ||
701 | * Returns a newly allocated string on success or NULL on failure. | ||
702 | */ | ||
703 | static char * | ||
704 | urldecode(const char *src) | ||
705 | { | ||
706 | char *ret, *dst; | ||
707 | int ch; | ||
708 | |||
709 | ret = xmalloc(strlen(src) + 1); | ||
710 | for (dst = ret; *src != '\0'; src++) { | ||
711 | switch (*src) { | ||
712 | case '+': | ||
713 | *dst++ = ' '; | ||
714 | break; | ||
715 | case '%': | ||
716 | if (!isxdigit((unsigned char)src[1]) || | ||
717 | !isxdigit((unsigned char)src[2]) || | ||
718 | (ch = hexchar(src + 1)) == -1) { | ||
719 | free(ret); | ||
720 | return NULL; | ||
721 | } | ||
722 | *dst++ = ch; | ||
723 | src += 2; | ||
724 | break; | ||
725 | default: | ||
726 | *dst++ = *src; | ||
727 | break; | ||
728 | } | ||
729 | } | ||
730 | *dst = '\0'; | ||
731 | |||
732 | return ret; | ||
733 | } | ||
734 | |||
735 | /* | ||
736 | * Parse an (scp|ssh|sftp)://[user@]host[:port][/path] URI. | ||
737 | * See https://tools.ietf.org/html/draft-ietf-secsh-scp-sftp-ssh-uri-04 | ||
738 | * Either user or path may be url-encoded (but not host or port). | ||
739 | * Caller must free returned user, host and path. | ||
740 | * Any of the pointer return arguments may be NULL (useful for syntax checking) | ||
741 | * but the scheme must always be specified. | ||
742 | * If user was not specified then *userp will be set to NULL. | ||
743 | * If port was not specified then *portp will be -1. | ||
744 | * If path was not specified then *pathp will be set to NULL. | ||
745 | * Returns 0 on success, 1 if non-uri/wrong scheme, -1 on error/invalid uri. | ||
746 | */ | ||
747 | int | ||
748 | parse_uri(const char *scheme, const char *uri, char **userp, char **hostp, | ||
749 | int *portp, char **pathp) | ||
750 | { | ||
751 | char *uridup, *cp, *tmp, ch; | ||
752 | char *user = NULL, *host = NULL, *path = NULL; | ||
753 | int port = -1, ret = -1; | ||
754 | size_t len; | ||
755 | |||
756 | len = strlen(scheme); | ||
757 | if (strncmp(uri, scheme, len) != 0 || strncmp(uri + len, "://", 3) != 0) | ||
758 | return 1; | ||
759 | uri += len + 3; | ||
760 | |||
761 | if (userp != NULL) | ||
762 | *userp = NULL; | ||
763 | if (hostp != NULL) | ||
764 | *hostp = NULL; | ||
765 | if (portp != NULL) | ||
766 | *portp = -1; | ||
767 | if (pathp != NULL) | ||
768 | *pathp = NULL; | ||
769 | |||
770 | uridup = tmp = xstrdup(uri); | ||
771 | |||
772 | /* Extract optional ssh-info (username + connection params) */ | ||
773 | if ((cp = strchr(tmp, '@')) != NULL) { | ||
774 | char *delim; | ||
775 | |||
776 | *cp = '\0'; | ||
777 | /* Extract username and connection params */ | ||
778 | if ((delim = strchr(tmp, ';')) != NULL) { | ||
779 | /* Just ignore connection params for now */ | ||
780 | *delim = '\0'; | ||
781 | } | ||
782 | if (*tmp == '\0') { | ||
783 | /* Empty username */ | ||
784 | goto out; | ||
785 | } | ||
786 | if ((user = urldecode(tmp)) == NULL) | ||
787 | goto out; | ||
788 | tmp = cp + 1; | ||
789 | } | ||
790 | |||
791 | /* Extract mandatory hostname */ | ||
792 | if ((cp = hpdelim2(&tmp, &ch)) == NULL || *cp == '\0') | ||
793 | goto out; | ||
794 | host = xstrdup(cleanhostname(cp)); | ||
795 | if (!valid_domain(host, 0, NULL)) | ||
796 | goto out; | ||
797 | |||
798 | if (tmp != NULL && *tmp != '\0') { | ||
799 | if (ch == ':') { | ||
800 | /* Convert and verify port. */ | ||
801 | if ((cp = strchr(tmp, '/')) != NULL) | ||
802 | *cp = '\0'; | ||
803 | if ((port = a2port(tmp)) <= 0) | ||
804 | goto out; | ||
805 | tmp = cp ? cp + 1 : NULL; | ||
806 | } | ||
807 | if (tmp != NULL && *tmp != '\0') { | ||
808 | /* Extract optional path */ | ||
809 | if ((path = urldecode(tmp)) == NULL) | ||
810 | goto out; | ||
811 | } | ||
812 | } | ||
813 | |||
814 | /* Success */ | ||
815 | if (userp != NULL) { | ||
816 | *userp = user; | ||
817 | user = NULL; | ||
818 | } | ||
819 | if (hostp != NULL) { | ||
820 | *hostp = host; | ||
821 | host = NULL; | ||
822 | } | ||
823 | if (portp != NULL) | ||
824 | *portp = port; | ||
825 | if (pathp != NULL) { | ||
826 | *pathp = path; | ||
827 | path = NULL; | ||
828 | } | ||
829 | ret = 0; | ||
830 | out: | ||
831 | free(uridup); | ||
832 | free(user); | ||
833 | free(host); | ||
834 | free(path); | ||
835 | return ret; | ||
836 | } | ||
837 | |||
531 | /* function to assist building execv() arguments */ | 838 | /* function to assist building execv() arguments */ |
532 | void | 839 | void |
533 | addargs(arglist *args, char *fmt, ...) | 840 | addargs(arglist *args, char *fmt, ...) |
@@ -774,16 +1081,19 @@ secure_permissions(struct stat *st, uid_t uid) | |||
774 | } | 1081 | } |
775 | 1082 | ||
776 | int | 1083 | int |
777 | tun_open(int tun, int mode) | 1084 | tun_open(int tun, int mode, char **ifname) |
778 | { | 1085 | { |
779 | #if defined(CUSTOM_SYS_TUN_OPEN) | 1086 | #if defined(CUSTOM_SYS_TUN_OPEN) |
780 | return (sys_tun_open(tun, mode)); | 1087 | return (sys_tun_open(tun, mode, ifname)); |
781 | #elif defined(SSH_TUN_OPENBSD) | 1088 | #elif defined(SSH_TUN_OPENBSD) |
782 | struct ifreq ifr; | 1089 | struct ifreq ifr; |
783 | char name[100]; | 1090 | char name[100]; |
784 | int fd = -1, sock; | 1091 | int fd = -1, sock; |
785 | const char *tunbase = "tun"; | 1092 | const char *tunbase = "tun"; |
786 | 1093 | ||
1094 | if (ifname != NULL) | ||
1095 | *ifname = NULL; | ||
1096 | |||
787 | if (mode == SSH_TUNMODE_ETHERNET) | 1097 | if (mode == SSH_TUNMODE_ETHERNET) |
788 | tunbase = "tap"; | 1098 | tunbase = "tap"; |
789 | 1099 | ||
@@ -830,6 +1140,9 @@ tun_open(int tun, int mode) | |||
830 | } | 1140 | } |
831 | } | 1141 | } |
832 | 1142 | ||
1143 | if (ifname != NULL) | ||
1144 | *ifname = xstrdup(ifr.ifr_name); | ||
1145 | |||
833 | close(sock); | 1146 | close(sock); |
834 | return fd; | 1147 | return fd; |
835 | 1148 | ||
@@ -996,8 +1309,8 @@ ms_subtract_diff(struct timeval *start, int *ms) | |||
996 | { | 1309 | { |
997 | struct timeval diff, finish; | 1310 | struct timeval diff, finish; |
998 | 1311 | ||
999 | gettimeofday(&finish, NULL); | 1312 | monotime_tv(&finish); |
1000 | timersub(&finish, start, &diff); | 1313 | timersub(&finish, start, &diff); |
1001 | *ms -= (diff.tv_sec * 1000) + (diff.tv_usec / 1000); | 1314 | *ms -= (diff.tv_sec * 1000) + (diff.tv_usec / 1000); |
1002 | } | 1315 | } |
1003 | 1316 | ||
@@ -1010,54 +1323,63 @@ ms_to_timeval(struct timeval *tv, int ms) | |||
1010 | tv->tv_usec = (ms % 1000) * 1000; | 1323 | tv->tv_usec = (ms % 1000) * 1000; |
1011 | } | 1324 | } |
1012 | 1325 | ||
1013 | time_t | 1326 | void |
1014 | monotime(void) | 1327 | monotime_ts(struct timespec *ts) |
1015 | { | 1328 | { |
1016 | #if defined(HAVE_CLOCK_GETTIME) && \ | 1329 | struct timeval tv; |
1017 | (defined(CLOCK_MONOTONIC) || defined(CLOCK_BOOTTIME)) | 1330 | #if defined(HAVE_CLOCK_GETTIME) && (defined(CLOCK_BOOTTIME) || \ |
1018 | struct timespec ts; | 1331 | defined(CLOCK_MONOTONIC) || defined(CLOCK_REALTIME)) |
1019 | static int gettime_failed = 0; | 1332 | static int gettime_failed = 0; |
1020 | 1333 | ||
1021 | if (!gettime_failed) { | 1334 | if (!gettime_failed) { |
1022 | #if defined(CLOCK_BOOTTIME) | 1335 | # ifdef CLOCK_BOOTTIME |
1023 | if (clock_gettime(CLOCK_BOOTTIME, &ts) == 0) | 1336 | if (clock_gettime(CLOCK_BOOTTIME, ts) == 0) |
1024 | return (ts.tv_sec); | 1337 | return; |
1025 | #endif | 1338 | # endif /* CLOCK_BOOTTIME */ |
1026 | #if defined(CLOCK_MONOTONIC) | 1339 | # ifdef CLOCK_MONOTONIC |
1027 | if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) | 1340 | if (clock_gettime(CLOCK_MONOTONIC, ts) == 0) |
1028 | return (ts.tv_sec); | 1341 | return; |
1029 | #endif | 1342 | # endif /* CLOCK_MONOTONIC */ |
1343 | # ifdef CLOCK_REALTIME | ||
1344 | /* Not monotonic, but we're almost out of options here. */ | ||
1345 | if (clock_gettime(CLOCK_REALTIME, ts) == 0) | ||
1346 | return; | ||
1347 | # endif /* CLOCK_REALTIME */ | ||
1030 | debug3("clock_gettime: %s", strerror(errno)); | 1348 | debug3("clock_gettime: %s", strerror(errno)); |
1031 | gettime_failed = 1; | 1349 | gettime_failed = 1; |
1032 | } | 1350 | } |
1033 | #endif /* HAVE_CLOCK_GETTIME && (CLOCK_MONOTONIC || CLOCK_BOOTTIME */ | 1351 | #endif /* HAVE_CLOCK_GETTIME && (BOOTTIME || MONOTONIC || REALTIME) */ |
1352 | gettimeofday(&tv, NULL); | ||
1353 | ts->tv_sec = tv.tv_sec; | ||
1354 | ts->tv_nsec = (long)tv.tv_usec * 1000; | ||
1355 | } | ||
1034 | 1356 | ||
1035 | return time(NULL); | 1357 | void |
1358 | monotime_tv(struct timeval *tv) | ||
1359 | { | ||
1360 | struct timespec ts; | ||
1361 | |||
1362 | monotime_ts(&ts); | ||
1363 | tv->tv_sec = ts.tv_sec; | ||
1364 | tv->tv_usec = ts.tv_nsec / 1000; | ||
1365 | } | ||
1366 | |||
1367 | time_t | ||
1368 | monotime(void) | ||
1369 | { | ||
1370 | struct timespec ts; | ||
1371 | |||
1372 | monotime_ts(&ts); | ||
1373 | return ts.tv_sec; | ||
1036 | } | 1374 | } |
1037 | 1375 | ||
1038 | double | 1376 | double |
1039 | monotime_double(void) | 1377 | monotime_double(void) |
1040 | { | 1378 | { |
1041 | #if defined(HAVE_CLOCK_GETTIME) && \ | ||
1042 | (defined(CLOCK_MONOTONIC) || defined(CLOCK_BOOTTIME)) | ||
1043 | struct timespec ts; | 1379 | struct timespec ts; |
1044 | static int gettime_failed = 0; | ||
1045 | |||
1046 | if (!gettime_failed) { | ||
1047 | #if defined(CLOCK_BOOTTIME) | ||
1048 | if (clock_gettime(CLOCK_BOOTTIME, &ts) == 0) | ||
1049 | return (ts.tv_sec + (double)ts.tv_nsec / 1000000000); | ||
1050 | #endif | ||
1051 | #if defined(CLOCK_MONOTONIC) | ||
1052 | if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) | ||
1053 | return (ts.tv_sec + (double)ts.tv_nsec / 1000000000); | ||
1054 | #endif | ||
1055 | debug3("clock_gettime: %s", strerror(errno)); | ||
1056 | gettime_failed = 1; | ||
1057 | } | ||
1058 | #endif /* HAVE_CLOCK_GETTIME && (CLOCK_MONOTONIC || CLOCK_BOOTTIME */ | ||
1059 | 1380 | ||
1060 | return (double)time(NULL); | 1381 | monotime_ts(&ts); |
1382 | return ts.tv_sec + ((double)ts.tv_nsec / 1000000000); | ||
1061 | } | 1383 | } |
1062 | 1384 | ||
1063 | void | 1385 | void |
@@ -1079,7 +1401,7 @@ bandwidth_limit(struct bwlimit *bw, size_t read_len) | |||
1079 | struct timespec ts, rm; | 1401 | struct timespec ts, rm; |
1080 | 1402 | ||
1081 | if (!timerisset(&bw->bwstart)) { | 1403 | if (!timerisset(&bw->bwstart)) { |
1082 | gettimeofday(&bw->bwstart, NULL); | 1404 | monotime_tv(&bw->bwstart); |
1083 | return; | 1405 | return; |
1084 | } | 1406 | } |
1085 | 1407 | ||
@@ -1087,7 +1409,7 @@ bandwidth_limit(struct bwlimit *bw, size_t read_len) | |||
1087 | if (bw->lamt < bw->thresh) | 1409 | if (bw->lamt < bw->thresh) |
1088 | return; | 1410 | return; |
1089 | 1411 | ||
1090 | gettimeofday(&bw->bwend, NULL); | 1412 | monotime_tv(&bw->bwend); |
1091 | timersub(&bw->bwend, &bw->bwstart, &bw->bwend); | 1413 | timersub(&bw->bwend, &bw->bwstart, &bw->bwend); |
1092 | if (!timerisset(&bw->bwend)) | 1414 | if (!timerisset(&bw->bwend)) |
1093 | return; | 1415 | return; |
@@ -1121,7 +1443,7 @@ bandwidth_limit(struct bwlimit *bw, size_t read_len) | |||
1121 | } | 1443 | } |
1122 | 1444 | ||
1123 | bw->lamt = 0; | 1445 | bw->lamt = 0; |
1124 | gettimeofday(&bw->bwstart, NULL); | 1446 | monotime_tv(&bw->bwstart); |
1125 | } | 1447 | } |
1126 | 1448 | ||
1127 | /* Make a template filename for mk[sd]temp() */ | 1449 | /* Make a template filename for mk[sd]temp() */ |
@@ -1222,9 +1544,10 @@ unix_listener(const char *path, int backlog, int unlink_first) | |||
1222 | 1544 | ||
1223 | memset(&sunaddr, 0, sizeof(sunaddr)); | 1545 | memset(&sunaddr, 0, sizeof(sunaddr)); |
1224 | sunaddr.sun_family = AF_UNIX; | 1546 | sunaddr.sun_family = AF_UNIX; |
1225 | if (strlcpy(sunaddr.sun_path, path, sizeof(sunaddr.sun_path)) >= sizeof(sunaddr.sun_path)) { | 1547 | if (strlcpy(sunaddr.sun_path, path, |
1226 | error("%s: \"%s\" too long for Unix domain socket", __func__, | 1548 | sizeof(sunaddr.sun_path)) >= sizeof(sunaddr.sun_path)) { |
1227 | path); | 1549 | error("%s: path \"%s\" too long for Unix domain socket", |
1550 | __func__, path); | ||
1228 | errno = ENAMETOOLONG; | 1551 | errno = ENAMETOOLONG; |
1229 | return -1; | 1552 | return -1; |
1230 | } | 1553 | } |
@@ -1232,7 +1555,7 @@ unix_listener(const char *path, int backlog, int unlink_first) | |||
1232 | sock = socket(PF_UNIX, SOCK_STREAM, 0); | 1555 | sock = socket(PF_UNIX, SOCK_STREAM, 0); |
1233 | if (sock < 0) { | 1556 | if (sock < 0) { |
1234 | saved_errno = errno; | 1557 | saved_errno = errno; |
1235 | error("socket: %.100s", strerror(errno)); | 1558 | error("%s: socket: %.100s", __func__, strerror(errno)); |
1236 | errno = saved_errno; | 1559 | errno = saved_errno; |
1237 | return -1; | 1560 | return -1; |
1238 | } | 1561 | } |
@@ -1242,18 +1565,18 @@ unix_listener(const char *path, int backlog, int unlink_first) | |||
1242 | } | 1565 | } |
1243 | if (bind(sock, (struct sockaddr *)&sunaddr, sizeof(sunaddr)) < 0) { | 1566 | if (bind(sock, (struct sockaddr *)&sunaddr, sizeof(sunaddr)) < 0) { |
1244 | saved_errno = errno; | 1567 | saved_errno = errno; |
1245 | error("bind: %.100s", strerror(errno)); | 1568 | error("%s: cannot bind to path %s: %s", |
1569 | __func__, path, strerror(errno)); | ||
1246 | close(sock); | 1570 | close(sock); |
1247 | error("%s: cannot bind to path: %s", __func__, path); | ||
1248 | errno = saved_errno; | 1571 | errno = saved_errno; |
1249 | return -1; | 1572 | return -1; |
1250 | } | 1573 | } |
1251 | if (listen(sock, backlog) < 0) { | 1574 | if (listen(sock, backlog) < 0) { |
1252 | saved_errno = errno; | 1575 | saved_errno = errno; |
1253 | error("listen: %.100s", strerror(errno)); | 1576 | error("%s: cannot listen on path %s: %s", |
1577 | __func__, path, strerror(errno)); | ||
1254 | close(sock); | 1578 | close(sock); |
1255 | unlink(path); | 1579 | unlink(path); |
1256 | error("%s: cannot listen on path: %s", __func__, path); | ||
1257 | errno = saved_errno; | 1580 | errno = saved_errno; |
1258 | return -1; | 1581 | return -1; |
1259 | } | 1582 | } |
@@ -1467,158 +1790,6 @@ argv_assemble(int argc, char **argv) | |||
1467 | return ret; | 1790 | return ret; |
1468 | } | 1791 | } |
1469 | 1792 | ||
1470 | /* | ||
1471 | * Runs command in a subprocess wuth a minimal environment. | ||
1472 | * Returns pid on success, 0 on failure. | ||
1473 | * The child stdout and stderr maybe captured, left attached or sent to | ||
1474 | * /dev/null depending on the contents of flags. | ||
1475 | * "tag" is prepended to log messages. | ||
1476 | * NB. "command" is only used for logging; the actual command executed is | ||
1477 | * av[0]. | ||
1478 | */ | ||
1479 | pid_t | ||
1480 | subprocess(const char *tag, struct passwd *pw, const char *command, | ||
1481 | int ac, char **av, FILE **child, u_int flags) | ||
1482 | { | ||
1483 | FILE *f = NULL; | ||
1484 | struct stat st; | ||
1485 | int fd, devnull, p[2], i; | ||
1486 | pid_t pid; | ||
1487 | char *cp, errmsg[512]; | ||
1488 | u_int envsize; | ||
1489 | char **child_env; | ||
1490 | |||
1491 | if (child != NULL) | ||
1492 | *child = NULL; | ||
1493 | |||
1494 | debug3("%s: %s command \"%s\" running as %s (flags 0x%x)", __func__, | ||
1495 | tag, command, pw->pw_name, flags); | ||
1496 | |||
1497 | /* Check consistency */ | ||
1498 | if ((flags & SSH_SUBPROCESS_STDOUT_DISCARD) != 0 && | ||
1499 | (flags & SSH_SUBPROCESS_STDOUT_CAPTURE) != 0) { | ||
1500 | error("%s: inconsistent flags", __func__); | ||
1501 | return 0; | ||
1502 | } | ||
1503 | if (((flags & SSH_SUBPROCESS_STDOUT_CAPTURE) == 0) != (child == NULL)) { | ||
1504 | error("%s: inconsistent flags/output", __func__); | ||
1505 | return 0; | ||
1506 | } | ||
1507 | |||
1508 | /* | ||
1509 | * If executing an explicit binary, then verify the it exists | ||
1510 | * and appears safe-ish to execute | ||
1511 | */ | ||
1512 | if (*av[0] != '/') { | ||
1513 | error("%s path is not absolute", tag); | ||
1514 | return 0; | ||
1515 | } | ||
1516 | temporarily_use_uid(pw); | ||
1517 | if (stat(av[0], &st) < 0) { | ||
1518 | error("Could not stat %s \"%s\": %s", tag, | ||
1519 | av[0], strerror(errno)); | ||
1520 | restore_uid(); | ||
1521 | return 0; | ||
1522 | } | ||
1523 | if (safe_path(av[0], &st, NULL, 0, errmsg, sizeof(errmsg)) != 0) { | ||
1524 | error("Unsafe %s \"%s\": %s", tag, av[0], errmsg); | ||
1525 | restore_uid(); | ||
1526 | return 0; | ||
1527 | } | ||
1528 | /* Prepare to keep the child's stdout if requested */ | ||
1529 | if (pipe(p) != 0) { | ||
1530 | error("%s: pipe: %s", tag, strerror(errno)); | ||
1531 | restore_uid(); | ||
1532 | return 0; | ||
1533 | } | ||
1534 | restore_uid(); | ||
1535 | |||
1536 | switch ((pid = fork())) { | ||
1537 | case -1: /* error */ | ||
1538 | error("%s: fork: %s", tag, strerror(errno)); | ||
1539 | close(p[0]); | ||
1540 | close(p[1]); | ||
1541 | return 0; | ||
1542 | case 0: /* child */ | ||
1543 | /* Prepare a minimal environment for the child. */ | ||
1544 | envsize = 5; | ||
1545 | child_env = xcalloc(sizeof(*child_env), envsize); | ||
1546 | child_set_env(&child_env, &envsize, "PATH", _PATH_STDPATH); | ||
1547 | child_set_env(&child_env, &envsize, "USER", pw->pw_name); | ||
1548 | child_set_env(&child_env, &envsize, "LOGNAME", pw->pw_name); | ||
1549 | child_set_env(&child_env, &envsize, "HOME", pw->pw_dir); | ||
1550 | if ((cp = getenv("LANG")) != NULL) | ||
1551 | child_set_env(&child_env, &envsize, "LANG", cp); | ||
1552 | |||
1553 | for (i = 0; i < NSIG; i++) | ||
1554 | signal(i, SIG_DFL); | ||
1555 | |||
1556 | if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1) { | ||
1557 | error("%s: open %s: %s", tag, _PATH_DEVNULL, | ||
1558 | strerror(errno)); | ||
1559 | _exit(1); | ||
1560 | } | ||
1561 | if (dup2(devnull, STDIN_FILENO) == -1) { | ||
1562 | error("%s: dup2: %s", tag, strerror(errno)); | ||
1563 | _exit(1); | ||
1564 | } | ||
1565 | |||
1566 | /* Set up stdout as requested; leave stderr in place for now. */ | ||
1567 | fd = -1; | ||
1568 | if ((flags & SSH_SUBPROCESS_STDOUT_CAPTURE) != 0) | ||
1569 | fd = p[1]; | ||
1570 | else if ((flags & SSH_SUBPROCESS_STDOUT_DISCARD) != 0) | ||
1571 | fd = devnull; | ||
1572 | if (fd != -1 && dup2(fd, STDOUT_FILENO) == -1) { | ||
1573 | error("%s: dup2: %s", tag, strerror(errno)); | ||
1574 | _exit(1); | ||
1575 | } | ||
1576 | closefrom(STDERR_FILENO + 1); | ||
1577 | |||
1578 | /* Don't use permanently_set_uid() here to avoid fatal() */ | ||
1579 | if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) != 0) { | ||
1580 | error("%s: setresgid %u: %s", tag, (u_int)pw->pw_gid, | ||
1581 | strerror(errno)); | ||
1582 | _exit(1); | ||
1583 | } | ||
1584 | if (setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) != 0) { | ||
1585 | error("%s: setresuid %u: %s", tag, (u_int)pw->pw_uid, | ||
1586 | strerror(errno)); | ||
1587 | _exit(1); | ||
1588 | } | ||
1589 | /* stdin is pointed to /dev/null at this point */ | ||
1590 | if ((flags & SSH_SUBPROCESS_STDOUT_DISCARD) != 0 && | ||
1591 | dup2(STDIN_FILENO, STDERR_FILENO) == -1) { | ||
1592 | error("%s: dup2: %s", tag, strerror(errno)); | ||
1593 | _exit(1); | ||
1594 | } | ||
1595 | |||
1596 | execve(av[0], av, child_env); | ||
1597 | error("%s exec \"%s\": %s", tag, command, strerror(errno)); | ||
1598 | _exit(127); | ||
1599 | default: /* parent */ | ||
1600 | break; | ||
1601 | } | ||
1602 | |||
1603 | close(p[1]); | ||
1604 | if ((flags & SSH_SUBPROCESS_STDOUT_CAPTURE) == 0) | ||
1605 | close(p[0]); | ||
1606 | else if ((f = fdopen(p[0], "r")) == NULL) { | ||
1607 | error("%s: fdopen: %s", tag, strerror(errno)); | ||
1608 | close(p[0]); | ||
1609 | /* Don't leave zombie child */ | ||
1610 | kill(pid, SIGTERM); | ||
1611 | while (waitpid(pid, NULL, 0) == -1 && errno == EINTR) | ||
1612 | ; | ||
1613 | return 0; | ||
1614 | } | ||
1615 | /* Success */ | ||
1616 | debug3("%s: %s pid %ld", __func__, tag, (long)pid); | ||
1617 | if (child != NULL) | ||
1618 | *child = f; | ||
1619 | return pid; | ||
1620 | } | ||
1621 | |||
1622 | /* Returns 0 if pid exited cleanly, non-zero otherwise */ | 1793 | /* Returns 0 if pid exited cleanly, non-zero otherwise */ |
1623 | int | 1794 | int |
1624 | exited_cleanly(pid_t pid, const char *tag, const char *cmd, int quiet) | 1795 | exited_cleanly(pid_t pid, const char *tag, const char *cmd, int quiet) |
@@ -1787,7 +1958,122 @@ child_set_env(char ***envp, u_int *envsizep, const char *name, | |||
1787 | } | 1958 | } |
1788 | 1959 | ||
1789 | /* Allocate space and format the variable in the appropriate slot. */ | 1960 | /* Allocate space and format the variable in the appropriate slot. */ |
1961 | /* XXX xasprintf */ | ||
1790 | env[i] = xmalloc(strlen(name) + 1 + strlen(value) + 1); | 1962 | env[i] = xmalloc(strlen(name) + 1 + strlen(value) + 1); |
1791 | snprintf(env[i], strlen(name) + 1 + strlen(value) + 1, "%s=%s", name, value); | 1963 | snprintf(env[i], strlen(name) + 1 + strlen(value) + 1, "%s=%s", name, value); |
1792 | } | 1964 | } |
1793 | 1965 | ||
1966 | /* | ||
1967 | * Check and optionally lowercase a domain name, also removes trailing '.' | ||
1968 | * Returns 1 on success and 0 on failure, storing an error message in errstr. | ||
1969 | */ | ||
1970 | int | ||
1971 | valid_domain(char *name, int makelower, const char **errstr) | ||
1972 | { | ||
1973 | size_t i, l = strlen(name); | ||
1974 | u_char c, last = '\0'; | ||
1975 | static char errbuf[256]; | ||
1976 | |||
1977 | if (l == 0) { | ||
1978 | strlcpy(errbuf, "empty domain name", sizeof(errbuf)); | ||
1979 | goto bad; | ||
1980 | } | ||
1981 | if (!isalpha((u_char)name[0]) && !isdigit((u_char)name[0])) { | ||
1982 | snprintf(errbuf, sizeof(errbuf), "domain name \"%.100s\" " | ||
1983 | "starts with invalid character", name); | ||
1984 | goto bad; | ||
1985 | } | ||
1986 | for (i = 0; i < l; i++) { | ||
1987 | c = tolower((u_char)name[i]); | ||
1988 | if (makelower) | ||
1989 | name[i] = (char)c; | ||
1990 | if (last == '.' && c == '.') { | ||
1991 | snprintf(errbuf, sizeof(errbuf), "domain name " | ||
1992 | "\"%.100s\" contains consecutive separators", name); | ||
1993 | goto bad; | ||
1994 | } | ||
1995 | if (c != '.' && c != '-' && !isalnum(c) && | ||
1996 | c != '_') /* technically invalid, but common */ { | ||
1997 | snprintf(errbuf, sizeof(errbuf), "domain name " | ||
1998 | "\"%.100s\" contains invalid characters", name); | ||
1999 | goto bad; | ||
2000 | } | ||
2001 | last = c; | ||
2002 | } | ||
2003 | if (name[l - 1] == '.') | ||
2004 | name[l - 1] = '\0'; | ||
2005 | if (errstr != NULL) | ||
2006 | *errstr = NULL; | ||
2007 | return 1; | ||
2008 | bad: | ||
2009 | if (errstr != NULL) | ||
2010 | *errstr = errbuf; | ||
2011 | return 0; | ||
2012 | } | ||
2013 | |||
2014 | const char * | ||
2015 | atoi_err(const char *nptr, int *val) | ||
2016 | { | ||
2017 | const char *errstr = NULL; | ||
2018 | long long num; | ||
2019 | |||
2020 | if (nptr == NULL || *nptr == '\0') | ||
2021 | return "missing"; | ||
2022 | num = strtonum(nptr, 0, INT_MAX, &errstr); | ||
2023 | if (errstr == NULL) | ||
2024 | *val = (int)num; | ||
2025 | return errstr; | ||
2026 | } | ||
2027 | |||
2028 | int | ||
2029 | parse_absolute_time(const char *s, uint64_t *tp) | ||
2030 | { | ||
2031 | struct tm tm; | ||
2032 | time_t tt; | ||
2033 | char buf[32], *fmt; | ||
2034 | |||
2035 | *tp = 0; | ||
2036 | |||
2037 | /* | ||
2038 | * POSIX strptime says "The application shall ensure that there | ||
2039 | * is white-space or other non-alphanumeric characters between | ||
2040 | * any two conversion specifications" so arrange things this way. | ||
2041 | */ | ||
2042 | switch (strlen(s)) { | ||
2043 | case 8: /* YYYYMMDD */ | ||
2044 | fmt = "%Y-%m-%d"; | ||
2045 | snprintf(buf, sizeof(buf), "%.4s-%.2s-%.2s", s, s + 4, s + 6); | ||
2046 | break; | ||
2047 | case 12: /* YYYYMMDDHHMM */ | ||
2048 | fmt = "%Y-%m-%dT%H:%M"; | ||
2049 | snprintf(buf, sizeof(buf), "%.4s-%.2s-%.2sT%.2s:%.2s", | ||
2050 | s, s + 4, s + 6, s + 8, s + 10); | ||
2051 | break; | ||
2052 | case 14: /* YYYYMMDDHHMMSS */ | ||
2053 | fmt = "%Y-%m-%dT%H:%M:%S"; | ||
2054 | snprintf(buf, sizeof(buf), "%.4s-%.2s-%.2sT%.2s:%.2s:%.2s", | ||
2055 | s, s + 4, s + 6, s + 8, s + 10, s + 12); | ||
2056 | break; | ||
2057 | default: | ||
2058 | return SSH_ERR_INVALID_FORMAT; | ||
2059 | } | ||
2060 | |||
2061 | memset(&tm, 0, sizeof(tm)); | ||
2062 | if (strptime(buf, fmt, &tm) == NULL) | ||
2063 | return SSH_ERR_INVALID_FORMAT; | ||
2064 | if ((tt = mktime(&tm)) < 0) | ||
2065 | return SSH_ERR_INVALID_FORMAT; | ||
2066 | /* success */ | ||
2067 | *tp = (uint64_t)tt; | ||
2068 | return 0; | ||
2069 | } | ||
2070 | |||
2071 | void | ||
2072 | format_absolute_time(uint64_t t, char *buf, size_t len) | ||
2073 | { | ||
2074 | time_t tt = t > INT_MAX ? INT_MAX : t; /* XXX revisit in 2038 :P */ | ||
2075 | struct tm tm; | ||
2076 | |||
2077 | localtime_r(&tt, &tm); | ||
2078 | strftime(buf, len, "%Y-%m-%dT%H:%M:%S", &tm); | ||
2079 | } | ||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: misc.h,v 1.63 2017/08/18 05:48:04 djm Exp $ */ | 1 | /* $OpenBSD: misc.h,v 1.71 2018/03/12 00:52:01 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -48,13 +48,18 @@ char *strdelim(char **); | |||
48 | int set_nonblock(int); | 48 | int set_nonblock(int); |
49 | int unset_nonblock(int); | 49 | int unset_nonblock(int); |
50 | void set_nodelay(int); | 50 | void set_nodelay(int); |
51 | int set_reuseaddr(int); | ||
52 | char *get_rdomain(int); | ||
53 | int set_rdomain(int, const char *); | ||
51 | int a2port(const char *); | 54 | int a2port(const char *); |
52 | int a2tun(const char *, int *); | 55 | int a2tun(const char *, int *); |
53 | char *put_host_port(const char *, u_short); | 56 | char *put_host_port(const char *, u_short); |
54 | char *hpdelim(char **); | 57 | char *hpdelim(char **); |
55 | char *cleanhostname(char *); | 58 | char *cleanhostname(char *); |
56 | char *colon(char *); | 59 | char *colon(char *); |
60 | int parse_user_host_path(const char *, char **, char **, char **); | ||
57 | int parse_user_host_port(const char *, char **, char **, int *); | 61 | int parse_user_host_port(const char *, char **, char **, int *); |
62 | int parse_uri(const char *, const char *, char **, char **, int *, char **); | ||
58 | long convtime(const char *); | 63 | long convtime(const char *); |
59 | char *tilde_expand_filename(const char *, uid_t); | 64 | char *tilde_expand_filename(const char *, uid_t); |
60 | char *percent_expand(const char *, ...) __attribute__((__sentinel__)); | 65 | char *percent_expand(const char *, ...) __attribute__((__sentinel__)); |
@@ -62,10 +67,16 @@ char *tohex(const void *, size_t); | |||
62 | void sanitise_stdfd(void); | 67 | void sanitise_stdfd(void); |
63 | void ms_subtract_diff(struct timeval *, int *); | 68 | void ms_subtract_diff(struct timeval *, int *); |
64 | void ms_to_timeval(struct timeval *, int); | 69 | void ms_to_timeval(struct timeval *, int); |
70 | void monotime_ts(struct timespec *); | ||
71 | void monotime_tv(struct timeval *); | ||
65 | time_t monotime(void); | 72 | time_t monotime(void); |
66 | double monotime_double(void); | 73 | double monotime_double(void); |
67 | void lowercase(char *s); | 74 | void lowercase(char *s); |
68 | int unix_listener(const char *, int, int); | 75 | int unix_listener(const char *, int, int); |
76 | int valid_domain(char *, int, const char **); | ||
77 | const char *atoi_err(const char *, int *); | ||
78 | int parse_absolute_time(const char *, uint64_t *); | ||
79 | void format_absolute_time(uint64_t, char *, size_t); | ||
69 | 80 | ||
70 | void sock_set_v6only(int); | 81 | void sock_set_v6only(int); |
71 | 82 | ||
@@ -84,7 +95,7 @@ void replacearg(arglist *, u_int, char *, ...) | |||
84 | __attribute__((format(printf, 3, 4))); | 95 | __attribute__((format(printf, 3, 4))); |
85 | void freeargs(arglist *); | 96 | void freeargs(arglist *); |
86 | 97 | ||
87 | int tun_open(int, int); | 98 | int tun_open(int, int, char **); |
88 | 99 | ||
89 | /* Common definitions for ssh tunnel device forwarding */ | 100 | /* Common definitions for ssh tunnel device forwarding */ |
90 | #define SSH_TUNMODE_NO 0x00 | 101 | #define SSH_TUNMODE_NO 0x00 |
@@ -140,12 +151,6 @@ int argv_split(const char *, int *, char ***); | |||
140 | char *argv_assemble(int, char **argv); | 151 | char *argv_assemble(int, char **argv); |
141 | int exited_cleanly(pid_t, const char *, const char *, int); | 152 | int exited_cleanly(pid_t, const char *, const char *, int); |
142 | 153 | ||
143 | #define SSH_SUBPROCESS_STDOUT_DISCARD (1) /* Discard stdout */ | ||
144 | #define SSH_SUBPROCESS_STDOUT_CAPTURE (1<<1) /* Redirect stdout */ | ||
145 | #define SSH_SUBPROCESS_STDERR_DISCARD (1<<2) /* Discard stderr */ | ||
146 | pid_t subprocess(const char *, struct passwd *, | ||
147 | const char *, int, char **, FILE **, u_int flags); | ||
148 | |||
149 | struct stat; | 154 | struct stat; |
150 | int safe_path(const char *, struct stat *, const char *, uid_t, | 155 | int safe_path(const char *, struct stat *, const char *, uid_t, |
151 | char *, size_t); | 156 | char *, size_t); |
diff --git a/mkinstalldirs b/mkinstalldirs index 47d5f43fe..399f40925 100755 --- a/mkinstalldirs +++ b/mkinstalldirs | |||
@@ -4,8 +4,6 @@ | |||
4 | # Created: 1993-05-16 | 4 | # Created: 1993-05-16 |
5 | # Public domain | 5 | # Public domain |
6 | 6 | ||
7 | # $Id: mkinstalldirs,v 1.2 2003/11/21 12:48:55 djm Exp $ | ||
8 | |||
9 | errstatus=0 | 7 | errstatus=0 |
10 | 8 | ||
11 | for file | 9 | for file |
@@ -1,431 +1,407 @@ | |||
1 | # $OpenBSD: moduli,v 1.18 2016/08/11 01:42:11 dtucker Exp $ | 1 | # $OpenBSD: moduli,v 1.20 2017/11/29 05:49:54 dtucker Exp $ |
2 | # Time Type Tests Tries Size Generator Modulus | 2 | # Time Type Tests Tries Size Generator Modulus |
3 | 20160301052556 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D19F4647 | 3 | 20170623034823 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAE4E76CB |
4 | 20160301052601 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D1A5C13B | 4 | 20170623034906 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAEB63283 |
5 | 20160301052612 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D1B7A3EF | 5 | 20170623034928 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAEE49C27 |
6 | 20160301052620 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D1C4C33B | 6 | 20170623034936 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAEF2BE1B |
7 | 20160301052628 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D1CFFACB | 7 | 20170623034957 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAF22F2D7 |
8 | 20160301052645 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D1F31D8B | 8 | 20170623035029 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAF68D3A7 |
9 | 20160301052703 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D218C293 | 9 | 20170623035052 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EAF9A9793 |
10 | 20160301052723 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D24116E3 | 10 | 20170623035228 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB085C01B |
11 | 20160301052732 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D25321F3 | 11 | 20170623035326 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1140217 |
12 | 20160301052741 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D260D8E3 | 12 | 20170623035332 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB11ACBD7 |
13 | 20160301052748 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D26CD3D3 | 13 | 20170623035408 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB16AD187 |
14 | 20160301052756 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D2791F7B | 14 | 20170623035414 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1737B53 |
15 | 20160301052823 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D2B71133 | 15 | 20170623035442 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1B1C483 |
16 | 20160301052827 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D2BABBA3 | 16 | 20170623035454 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1C8B93B |
17 | 20160301052832 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D2BFC957 | 17 | 20170623035510 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB1EAD06B |
18 | 20160301052931 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D3514117 | 18 | 20170623035525 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB208DA8B |
19 | 20160301053017 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D3BF91F7 | 19 | 20170623035553 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB2498F17 |
20 | 20160301053037 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D3E9113F | 20 | 20170623035604 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB25D82D3 |
21 | 20160301053101 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D41BFA83 | 21 | 20170623035609 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB262420F |
22 | 20160301053129 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D45A369F | 22 | 20170623035735 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB3376DEF |
23 | 20160301053217 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D4CB8683 | 23 | 20170623035801 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB370E193 |
24 | 20160301053222 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D4D01463 | 24 | 20170623035916 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB426D9CF |
25 | 20160301053251 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D50F62C3 | 25 | 20170623035935 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB44E559B |
26 | 20160301053309 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D5351887 | 26 | 20170623035955 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB4777177 |
27 | 20160301053333 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D568358B | 27 | 20170623040012 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB4995E77 |
28 | 20160301053350 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D58AA31F | 28 | 20170623040023 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB4ACAF8B |
29 | 20160301053359 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D5991AF3 | 29 | 20170623040032 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB4BB1ADB |
30 | 20160301053438 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D5F65E07 | 30 | 20170623040120 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB52D4F1F |
31 | 20160301053523 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D65F37D3 | 31 | 20170623040131 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB542306B |
32 | 20160301053556 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D6AB7E73 | 32 | 20170623040202 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5899CB7 |
33 | 20160301053608 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D6C131CB | 33 | 20170623040216 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5A317FB |
34 | 20160301053631 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D6F18A93 | 34 | 20170623040224 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5AEBE43 |
35 | 20160301053647 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D7132B7F | 35 | 20170623040246 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5E190BF |
36 | 20160301053724 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D76995EB | 36 | 20170623040254 2 6 100 2047 2 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB5EBE533 |
37 | 20160301053743 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D793D27B | 37 | 20170623040334 2 6 100 2047 5 F740D04A6CFD4547DDBE874AEED3DF220F4ABD1EEA9BB022EDB3019835812EB327F3F0BBD0D137702856B499924C1A0D78D467EFBCB2215008FC3918FF88710ED5CA4F3554494F3AC374C8695B1DA006470F1C5C751825389DF3FBAC83DFEFAE2B07FA30E3B6B13D2BF9FAA27DCBD03FEB6847F08C3C6C89B04366A78D8C43E1E26B63ED5BB9A3E1AAE00BD4A4BF058B41B70E9F599C7DAE2E42701C68FDDEFE7213432E77342F785D64B723FF33A2D9C6F85F149776F898EF8BEFE3D03D2163974A3C0F13520F4BE92A246DED5A6FC997B2657D1A72A1210E881D0A0F14E93522268E3D8FFB84ABB3B9B064985E891C7C0DC09E166008A5E13A777EB649ECAF |
38 | 20160301053757 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D7AE856B | 38 | 20170623040448 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C4B50D13 |
39 | 20160301053820 2 6 100 2047 5 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D7E1810F | 39 | 20170623040459 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C4C9F477 |
40 | 20160301053828 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D7EC09EB | 40 | 20170623040510 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C4DDC50B |
41 | 20160301053831 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D7ECC2FB | 41 | 20170623040603 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C55E2BE7 |
42 | 20160301053958 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D8B829CB | 42 | 20170623040614 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C5715757 |
43 | 20160301054042 2 6 100 2047 2 DA57B18976E9C55CEAC3BFFF70419A1550258EA7359400BD4FAC8F4203B73E0BC54D62C0A2D9AA9B543FACA0290514EA426DE6FEF897CB858243511DCE5170420C799D888DCFDC4502FF49B66F34E75C00E98A55408A791FF5CFEA7C288F8E6664226A6A90BE237D2E40C207B5AD0CAEDFDA4946E63AEA351A09EF462515FED4098694241CD07E2CB7727B39B8B1B9467D72DFB908D8169F5DB3CD5A6BEBE1344C585A882508B760402E86EB9B5548A7B98635ECFCDC02FF62B29C53847142FC598ADC66F622F6E9F73BDF02B3D795C0DF23D00E5A3A7748F3E1D5B06F46D4568CE3F4CC57E67D4C36DF5C12800620698C727CC5F5BCACF3B7E17E37D91CFCF3 | 43 | 20170623040626 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C58A0617 |
44 | 20160301054134 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251903103B | 44 | 20170623040632 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C5910FF7 |
45 | 20160301054139 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF2519072B8B | 45 | 20170623040709 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C5E85ABB |
46 | 20160301054157 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF25192F631F | 46 | 20170623040729 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C61714B7 |
47 | 20160301054207 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF25193F9E7F | 47 | 20170623040745 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C6362DF7 |
48 | 20160301054213 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF2519475A1F | 48 | 20170623040759 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C64F9EEB |
49 | 20160301054301 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF2519BA6807 | 49 | 20170623040829 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C6949627 |
50 | 20160301054320 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF2519E2FA7F | 50 | 20170623040836 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C69F6763 |
51 | 20160301054340 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251A0CD913 | 51 | 20170623040925 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C712B23B |
52 | 20160301054413 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251A5B8A43 | 52 | 20170623040941 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C7336C6F |
53 | 20160301054511 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251AE66597 | 53 | 20170623041004 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C76418FB |
54 | 20160301054527 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251B03A57F | 54 | 20170623041040 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C7B6A153 |
55 | 20160301054544 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251B276FBB | 55 | 20170623041049 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C7C6F12F |
56 | 20160301054548 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251B2915B3 | 56 | 20170623041059 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C7D798EF |
57 | 20160301054621 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251B79A4BB | 57 | 20170623041129 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C81D54F3 |
58 | 20160301054714 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251BF77377 | 58 | 20170623041311 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C919987F |
59 | 20160301054737 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251C28D853 | 59 | 20170623041314 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C91A831B |
60 | 20160301054819 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251C8C959B | 60 | 20170623041341 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C95422FF |
61 | 20160301054844 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251CC0A39B | 61 | 20170623041350 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C9646B7F |
62 | 20160301055002 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251D7C0A9F | 62 | 20170623041354 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3C9662E87 |
63 | 20160301055021 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251DA0A72F | 63 | 20170623041503 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CA105123 |
64 | 20160301055024 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251DA1003F | 64 | 20170623041522 2 6 100 2047 5 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CA3BE707 |
65 | 20160301055029 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251DA4B607 | 65 | 20170623041541 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CA620DAB |
66 | 20160301055034 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251DA82003 | 66 | 20170623041546 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CA66FFC3 |
67 | 20160301055101 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251DE323BB | 67 | 20170623041620 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CAB69493 |
68 | 20160301055123 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251E13DB33 | 68 | 20170623041704 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CB1C2B4B |
69 | 20160301055136 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251E2A2203 | 69 | 20170623041709 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CB1FD10B |
70 | 20160301055141 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251E2F180B | 70 | 20170623041747 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CB7550DB |
71 | 20160301055208 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251E6B2E8B | 71 | 20170623041822 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CBC63D2B |
72 | 20160301055248 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251ECCA61B | 72 | 20170623041830 2 6 100 2047 2 EDB5FA2E865AD05F06510EFBFC71F9DFBAA5C1EEF3F6FDC2650C1D8C507DECA3422AE18746EA7D7BEA600C0AE9A0812A3DC02C099F8AF046EF014EC2A58734A716F156FCE4F19E3A9EB38F225A1CA0B868F70B3BE0CAE3AC2A20F330EF3CC33CB27D1FCB2D27505409144F957AC592567AC0B2A8099F6D58B546C7EE734FD806CDFDDE5F41C38966EB61005CA78D970BFA2C77F099BB19543B559AA118B6F303644D541E83B293138BEF5B8F0B0382ACA8DBDD693845FF6B7EE6ABF1B8B4733998F31DBF74F9CBA5145A0C5345EDC5B056CDCAA3AF605701C56651B8A968AD6D7E421DD3B5F3765865D5FDC55252F25C9661CD71A43A20B13A16CFF3CBD499AB |
73 | 20160301055312 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251EFFD5C7 | 73 | 20170623043901 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5508B03E93 |
74 | 20160301055319 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251F08AD6B | 74 | 20170623044452 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5509C5C937 |
75 | 20160301055413 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251F881A4B | 75 | 20170623044600 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5509F436FB |
76 | 20160301055420 2 6 100 2047 5 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251F8FC967 | 76 | 20170623044825 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550A640733 |
77 | 20160301055438 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251FB8102B | 77 | 20170623045050 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550AD6755B |
78 | 20160301055505 2 6 100 2047 2 F030C513D5C6694FB09539ECF9D8290608A96280EDDEB74FD66DD43CACE3A5BFD6BC4F02EF38E44F68296DA50091214D9E6C518D715D76E19CCCA0578886B93ADA36E8AFDC23B311DA04EB8AC2FF31F3B87BD27C283519DF9CFCAA9D4EF822ECD2AD5593D3819399CEF3FAF0B786071496A9BD94164F739A2D1E0DEBB798BAEF0540B4388D3762523B68E100D6EE231DD95BEB4F4472E9E2236A24E0891DF5A19222A6C69D531C9E73DEF6ADAC84D61BC4EEA36E2A9FD64902461BFAF9BF81D699E141EE77A03996DC4586D3487A0E6189696C1D67F91E91595EB584AD1DF9EF5FC64160EAC3F2D88B4FB0E20A7925FE133D71EF9E1DD018101AAF251FF16983 | 78 | 20170623045124 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550AE93B43 |
79 | 20160301061411 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26C5D83833 | 79 | 20170623045420 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550B6F1ED3 |
80 | 20160301061835 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26C6AAA907 | 80 | 20170623045805 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550C20298F |
81 | 20160301062447 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26C7D2DF17 | 81 | 20170623045930 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550C5914BF |
82 | 20160301062535 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26C7F0856B | 82 | 20170623050341 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550D1A1773 |
83 | 20160301062652 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26C8266573 | 83 | 20170623050720 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550DC219FB |
84 | 20160301062708 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26C82B4297 | 84 | 20170623051801 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB550FBDD1AF |
85 | 20160301063801 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CA342897 | 85 | 20170623052216 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5510842093 |
86 | 20160301063920 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CA6B6B53 | 86 | 20170623052416 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5510DBFCD7 |
87 | 20160301064001 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CA83D25B | 87 | 20170623052526 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55110BB843 |
88 | 20160301064133 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CAC6E0AF | 88 | 20170623052831 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB551196B36B |
89 | 20160301064312 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CB0B8B2F | 89 | 20170623053119 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB551217A237 |
90 | 20160301064624 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CB9E9EBB | 90 | 20170623053458 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5512C20307 |
91 | 20160301064954 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CC41F773 | 91 | 20170623053734 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55133990CB |
92 | 20160301065030 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CC56680F | 92 | 20170623054412 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5514721AB3 |
93 | 20160301065134 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CC82B2B3 | 93 | 20170623054517 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55149F4D0B |
94 | 20160301065432 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CD0A0833 | 94 | 20170623055017 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB551583DD9B |
95 | 20160301065614 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CD54CA17 | 95 | 20170623055422 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55163A7903 |
96 | 20160301070010 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CE0A7B73 | 96 | 20170623055449 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516475E5F |
97 | 20160301070046 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CE21045B | 97 | 20170623055516 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516556F37 |
98 | 20160301070141 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CE4560CB | 98 | 20170623055539 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55165F8F67 |
99 | 20160301070334 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CE9951EF | 99 | 20170623055716 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516A5CA13 |
100 | 20160301070607 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CF0C830B | 100 | 20170623055812 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516C8A4A3 |
101 | 20160301070911 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CF96B75B | 101 | 20170623055846 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5516DBF96B |
102 | 20160301070931 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26CF9EB207 | 102 | 20170623060438 2 6 100 3071 2 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5517E20F03 |
103 | 20160301071405 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D07614DB | 103 | 20170623060534 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB551803F1D7 |
104 | 20160301071648 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D0F1177B | 104 | 20170623060551 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55180824C7 |
105 | 20160301071915 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D15E484F | 105 | 20170623060759 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB5518622977 |
106 | 20160301071932 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D16371F3 | 106 | 20170623061152 2 6 100 3071 5 E795DA675C82260F11D7C50B677AE8A8D94BF342724BB06FA0D426CE2E83E8971A1BE2AC59516488B25D561568B14DBBFFB5F33686D2952409B9C20FC19A13CB91C9176420F59F464DC198E254B87C765DC12B885CF1A463858C3CB0A918AF66C6A2CA06A48B4D5BDEB5A56B24C36BA330488DFCBDD499957E755CCE704F183CB4549441A7D761C22B7F7CB66BE50F0A6591F17778F51E73544B765E83A3C00BD3309F8CE1B135A3DD481DBE8C2CEE54E8DDF1351015E70D9012662E69F654A5A9F68C416167685A1695C8139BA1825287C98680945506D5AB750BEB68C6D2B430E7E4043D0A00DECDA77F81A2432929F530C5BC0CBBC011095D897BD81FB98792345F5372BA53E53F31FB09730C58E8FDA9F7C1EBA0AEA4FE50B2B5CE146043CB18BFB3A12F06ED1D3287242D3D59E85E0A5E243626525D3EAD946126B9F32590011EEA0EDD5E2025037D51940B3E1A45B614A23F48278977535E3773F0AA2A24413F4A397AC0881582E8832C7B140C0BA4818A55C8620FD2BEBB55190DD957 |
107 | 20160301072032 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D18BD843 | 107 | 20170623061950 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EBBB813F |
108 | 20160301072158 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D1C7632B | 108 | 20170623062054 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EBE73A63 |
109 | 20160301072445 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D2450187 | 109 | 20170623062250 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EC3B7BBB |
110 | 20160301072709 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D2B15CFB | 110 | 20170623062850 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21ED5538D7 |
111 | 20160301073130 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D37B3327 | 111 | 20170623063051 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDADBD87 |
112 | 20160301073142 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D37C7FA3 | 112 | 20170623063106 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDB14127 |
113 | 20160301073822 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D4B57B13 | 113 | 20170623063228 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDEBD58B |
114 | 20160301074016 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D50A615F | 114 | 20170623063242 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDEE14B3 |
115 | 20160301074134 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D5419827 | 115 | 20170623063301 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EDF542E7 |
116 | 20160301074208 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D554AA2F | 116 | 20170623063538 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EE64F8A3 |
117 | 20160301074359 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D5A29FEB | 117 | 20170623063759 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21EEC9D597 |
118 | 20160301074457 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D5C6DA83 | 118 | 20170623064815 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F0A8EB1F |
119 | 20160301074620 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D601594B | 119 | 20170623065609 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F21F5CB7 |
120 | 20160301074846 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D66D7E6B | 120 | 20170623070150 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F32604CB |
121 | 20160301074917 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D67D64E7 | 121 | 20170623070933 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F48C5ED3 |
122 | 20160301075053 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D6C27B8B | 122 | 20170623071215 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F5044ECB |
123 | 20160301075132 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D6DB9C33 | 123 | 20170623071504 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F5815613 |
124 | 20160301075225 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D6FE9337 | 124 | 20170623071625 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F5B8F8AB |
125 | 20160301075252 2 6 100 3071 5 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D70AF577 | 125 | 20170623071723 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F5DE3F7B |
126 | 20160301075345 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D72CB613 | 126 | 20170623071945 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F645009B |
127 | 20160301075358 2 6 100 3071 2 E2871F8AF82B8E1038DDACF268D3690580ED64FC99F13D64B8322F1F6F19B0860BD4CB74BD2FF72ADF1090B0506E77743EA2C3102093C10A5045A17F92E403AE24B4E9276F9999A4AAD7DF5F2C03EB72B6BB303FE894149BFD670A13ADEDEFBD726A12A7F32919BC4FFFC8FA3E2E73645B432EB894D6906D1E6E8CD5C8BB882953EAA0306508205B6BC0B99177C81E9E9192D8185185CE82CF310AD42A24DB83039A4F10D1C55E7EA7D4C020BD12947A25732829D1AC6100ED9DA3F4D834D8EB28875F37B399C5AE21D6A122950A41680857CEB6A25158A108E8E0338047A2DD979AB97E9F84ABA18FB1DD43FD630F494CEACF0F7FFEF38BC14968B0FDF4942927D0169B46E84D52356EB1B7D04EFCDF2239AEA21A63B6F64E83AC18F81EB6EAEF03328B830860C184B4434B39FA6AE31C751FB5BA1AEA1BD8D41457D9AE58C6EFD230493454BA3C5EB791E74CAB907D0AF1173FFB99D78953660B23127550350A9A09B0116099087A04B56078C274874507ED92ECD2D98A7F064C26D72F088B | 127 | 20170623072445 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F721A837 |
128 | 20160301080151 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F1FA94507 | 128 | 20170623072516 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F731AF17 |
129 | 20160301080332 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F1FF62A2F | 129 | 20170623073343 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F8B6F58F |
130 | 20160301080512 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F203E0E3F | 130 | 20170623073442 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F8DA7A47 |
131 | 20160301080759 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F20BE897F | 131 | 20170623073826 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21F983F783 |
132 | 20160301081008 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F211E8DAB | 132 | 20170623074239 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FA40B7CF |
133 | 20160301081510 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F220FBEBB | 133 | 20170623074307 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FA4F193B |
134 | 20160301081725 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F22727C13 | 134 | 20170623074345 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FA61D323 |
135 | 20160301082213 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2352279F | 135 | 20170623074648 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FAEB991B |
136 | 20160301083400 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F25905AEF | 136 | 20170623074919 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FB5876F7 |
137 | 20160301083955 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F26AB557B | 137 | 20170623075011 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FB79557F |
138 | 20160301084035 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F26C1D647 | 138 | 20170623075040 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FB88E5F7 |
139 | 20160301084145 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F26F0E75B | 139 | 20170623075211 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FBC86DF3 |
140 | 20160301084827 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F282FE7DB | 140 | 20170623075233 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FBD19D1B |
141 | 20160301084906 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2847CBF7 | 141 | 20170623075313 2 6 100 3071 5 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FBE8A97F |
142 | 20160301085226 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F28E1E963 | 142 | 20170623080026 2 6 100 3071 2 E787C1EA14A0022F3F98A02847D293441332B2EB8BFF8C4D74ECFF730CCA9D1AFC6433A6DD4BA7089EC18D8D314550FCDC6DA23FEFDE48622BB6FFD89AB71CC0BA6C8C0930593E85A442A9C589ECF35E17D9CC7E2AE713B3704D69B61EF6E79A41AE02ADBF7966DF94B1C6861795B7EDFA8D7418EBAEB47F26F158AEF3DB418FD1632DBB93B431204964B78C7AE9ED796E39F1B6DE1FEE4CE77815462F36342E80B44B052BADC06F78CFEA7D3D0B294C5C8E8E623F95F5D3C1A17D911A0E78FE7754AA4A440FE75498D9AA47AACF2FC2F716630AEF10950F1FACD4CF847A7E4B0C20F507A7322996DBC4D2250A99CB213CB95AAF7A8B6A0B5317BE8FF728D3A0A0AAEA1B86729DDD59566916640F9AF7A455145CE29CB58884CC2E9DD705B1E87D10E139945FBE70D20D718FED9AF202A22673D76128A5FCB2860419675ADB97512628C7C65C7078B0C730A258C8979912C18EC065367791A404C71318B78FE29CC115ECD74C4EFCDE86C35BD0CFC3ADC41B4F24243A262B251F6E21FD35417B |
143 | 20160301085254 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F28EF835B | 143 | 20170623082844 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069919E3F0A3 |
144 | 20160301085737 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F29D012DB | 144 | 20170623084111 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906991AE37AEB |
145 | 20160301085933 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2A259503 | 145 | 20170623091322 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906991D857A5F |
146 | 20160301090045 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2A569E5F | 146 | 20170623095654 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699210172E7 |
147 | 20160301090201 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2A89EEB7 | 147 | 20170623095828 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069921188C6B |
148 | 20160301090441 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2B037B2F | 148 | 20170623095901 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699211B667F |
149 | 20160301090534 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2B2559FB | 149 | 20170623100423 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069921818383 |
150 | 20160301090628 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2B484193 | 150 | 20170623101338 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699223C1F3B |
151 | 20160301092125 2 6 100 3071 5 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2E1E1337 | 151 | 20170623101757 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699228B3683 |
152 | 20160301092513 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2ECC261B | 152 | 20170623104910 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699250221BB |
153 | 20160301093051 2 6 100 3071 2 F5B3EB8BEBA51E3899E7F8C7E202FBB132EF5731B3C2AC07945AEDA6A77A194E69538E08ABB8BBC3FC5AC2D3F66E582AA280D1832065E63F462AE71CD69CB3523656358545BF625F0F0BA9A8902D2A09484BE915E4AB809B8C767F84AADC75744E07F691893DA5DCCCD3FE8A7140858A9CF09A52E3A8F1050913A592B5750BC54682523B6920F626D87A717D6680B4EE430317DDF7B36458D479ADF6855FE46D865D02F8161D8BD8F4D0F330EE27B28AA40D48B6EA8E183223FCBC4E9C4F1F615DE750A5F8BE130EE46DC23970AD5A3CB93F5822A53084553A3B27A72ADD55958935D98B06D6398B00A718EA6BCE075DD6708F714002AF5A75C67D087DB8308B6FCEC775DBE8415F57CCD39C13496F0782D4834C03241D1B2EFE5CD07D702BD489DE25DAF08CA1DE5FDA5962A8CC6E0283B992640B8706B076531844CF66D26BEC2DD5A0BCDABE6A048BA55F8C25621E8CAA55F2D9E011896DEA823CF9FFBC76143FF7F4653C3BBDC34138A482A150A221E2CA2BE774B7BD22B2481F2FD6418B | 153 | 20170623110231 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699260AC373 |
154 | 20160301101954 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29E60ED3CB | 154 | 20170623110814 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992672C113 |
155 | 20160301104238 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29E7F21B53 | 155 | 20170623113826 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069928D90D4F |
156 | 20160301105433 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29E8EA1923 | 156 | 20170623120249 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992AC1BA3F |
157 | 20160301110823 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EA099523 | 157 | 20170623121815 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992BFC1B7B |
158 | 20160301111806 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EAD0379B | 158 | 20170623122456 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992C7EB0CF |
159 | 20160301112515 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EB5F9FF7 | 159 | 20170623123432 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992D3D886B |
160 | 20160301112655 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EB7A3C73 | 160 | 20170623125910 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992F34AA0B |
161 | 20160301113152 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EBD8A1AF | 161 | 20170623130350 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906992F8B1CFF |
162 | 20160301114603 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29ED0421CF | 162 | 20170623131900 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069930BE28FB |
163 | 20160301115854 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EE10BE07 | 163 | 20170623132006 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069930CCBBC3 |
164 | 20160301122138 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29EFED1757 | 164 | 20170623134400 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069932B40887 |
165 | 20160301124138 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F18BB82B | 165 | 20170623134659 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069932E77127 |
166 | 20160301124341 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F1AE9F93 | 166 | 20170623140059 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069934031953 |
167 | 20160301130540 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F378431B | 167 | 20170623140936 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069934AC3B0F |
168 | 20160301132038 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F4B041CB | 168 | 20170623142309 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069935BCCF33 |
169 | 20160301132156 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F4C33A3B | 169 | 20170623142743 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB47998481906993611A26B |
170 | 20160301133248 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F59F1817 | 170 | 20170623150027 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069938A6965B |
171 | 20160301135039 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F70D3707 | 171 | 20170623150107 2 6 100 4095 2 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB479984819069938AB78CB |
172 | 20160301135200 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F720CFD3 | 172 | 20170623150738 2 6 100 4095 5 DCFD3F9E0CF8187E955D8AEB347A5E4250C2B78E67E73E1DCDB99D67EC98180AE5FEF9119D38E50CBDBF46C8B2F62240FF5E1B28FB01276B82DB7422A777AA30AC5A9423D9AC3D33C9FECCC85823BD1138919E8F831364B093CF13B11CDD11394AA8D2256D58264266F780EABBA494E99EF63EC1F69997D180ABBA50B091AFD7FF478DAFF435CE2529E5F8FC81316AB0EA636014E125715FC77D653B142734C93FCD825C28CB928D579E9ED2C6C11E89C64B9C4B91CA962FB11C824F302BDEF7F67D1F7AC95F52B49FD4A044101BA3BDDD59C7663AB270D24DC846B90925F615EBFA5182F261938182E301C83FDC027381BD0FA753C84E57CC51531E7D0C468988B67D0B312E73C65E21D93C69C7862553F60BC9B26C6B5FB68BEDA3D7B0770C1116FF2B88484C7FB29A9D46D01719E89CB76A25C1B8349E3F8DA38CC00B3C1502BA6775BE363D27FA71A72DE0094E6805DEABB343B4A6DC98CD5F5191017B4E1CB0E5EE2FA979642305B8FDE9EE6A26E469C03C8B806F9492C0C544D7A0FE7773B3940812AE6B76C447BC28AA8127D9A7FEB7F98B9720C889CE2FF4806225B012B06F2FC0737D2A73A3046BD7ACBF0A8CF02BB3FAB81A60A29C0AA5B3B731541F62B542F4EF8224C6BAF6A087D0A9FE43492E5CE13F855E80457A516155CCA04A6144E402A1A3D71D657556B9124837730953505EB4799848190699392AA267 |
173 | 20160301135955 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F7BFD4BF | 173 | 20170623152234 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DA657F33 |
174 | 20160301141625 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29F9118567 | 174 | 20170623152823 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DAD58DFF |
175 | 20160301143329 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FA446E3B | 175 | 20170623153243 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DB1F719B |
176 | 20160301143411 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FA4A5D73 | 176 | 20170623153719 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DB76316F |
177 | 20160301143511 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FA57571B | 177 | 20170623154606 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DC289BA3 |
178 | 20160301145341 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FBCEC3DB | 178 | 20170623155435 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DCCFF757 |
179 | 20160301150532 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FCBAFB3B | 179 | 20170623161905 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988DEC7BD43 |
180 | 20160301150756 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FCE5B5B3 | 180 | 20170623163928 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E064A38B |
181 | 20160301151026 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FD119B83 | 181 | 20170623164410 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E0BD160B |
182 | 20160301152435 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FE2CAD43 | 182 | 20170623172908 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E467E87B |
183 | 20160301152638 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FE504DD3 | 183 | 20170623174045 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E54CE16F |
184 | 20160301153829 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FF425A73 | 184 | 20170623175902 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E6CA185F |
185 | 20160301154015 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FF5FBCDB | 185 | 20170623180229 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E706D14B |
186 | 20160301154135 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FF725ADF | 186 | 20170623180811 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E76F7CD3 |
187 | 20160301154325 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F29FF9005B3 | 187 | 20170623180923 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E77E8123 |
188 | 20160301155218 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F2A00430653 | 188 | 20170623182724 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988E8D82A2B |
189 | 20160301160626 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F2A01612A43 | 189 | 20170623185420 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988EAF9DAE7 |
190 | 20160301160831 2 6 100 4095 5 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F2A01842FE7 | 190 | 20170623195226 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988EFA2202B |
191 | 20160301161542 2 6 100 4095 2 EF7840BC7248E3E12D223BD86584358750562F5FCB298632E269C7F4347DC441CEBCBAF5B8AD25C3A3EE85A97FC342EF2B320425ACE6A816200E4A46596E6D911E8E5940E4ED1F64275D1A2A1E2DC8A34E26026A8DD9D20AF2E36B2BEB467168E516F1DF9145DBA60CE4BE46B34E918D36F581B2860BEBD153A09BF5B51348137CEB0BFA43FDEF5398C538CB9854BED966017DC918E4EA26E0E1A283AEA90F41B2D27CBC34E6AA64FE7E370D532BE4A0DB2E77958CA6E570DEDA817FB91351B65E227BAF96383323820AC5CF785CD686E99398773DF19C1E33D7199A5104337AD3C8CF78FE1AF5D8A4A2B8C092E1FD2688F2829E006C050257DC4C16576AB12AC01AE40F35785586902058735024E0CF90B1DD3B547647AC6F98A70BE3CA9EF80E9A1E408D29FDBE7935625B9AB863891D6D30A54903DD23933303055B8E864751CEB7A153A841D2E1CD3C5943C7F6F1BB2836ED387BE4FB3075363317A1E813965497F5CC621A72B1CF5B50813B418F391FB7C4530B6C19416B4A942063012798536BBF853166697747F39827832A3D135ABFB03BF15990787F64D25E629ED1A6009BADF5447730445ACF2684715A84ECBC4B3A1E2C93E3EFCF4D9373E1355740776F66353576D7359C69EAE48FCFB06CA7536F4B132BFCE6DB2FDBD687B24E7A0AD1EBCBF887A7258C24D8AC9BB86BF847D9AC980919AD9BAF3F2A020ED50B | 191 | 20170623195633 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988EFEED5BF |
192 | 20160301165149 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE54C87A80B | 192 | 20170623201051 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F10F59CB |
193 | 20160301165241 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE54C91EA2B | 193 | 20170623202959 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F2921927 |
194 | 20160301165750 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE54CFA74E3 | 194 | 20170623203734 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F32287EB |
195 | 20160301173839 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE5504AEAFB | 195 | 20170623204218 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F37F8B03 |
196 | 20160301174247 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE5509AF4D7 | 196 | 20170623204329 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F38F411F |
197 | 20160301174504 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE550BFB1D7 | 197 | 20170623204840 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F3EE7B13 |
198 | 20160301180608 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE5526F5F0F | 198 | 20170623205709 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F493374B |
199 | 20160301181854 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55377C36B | 199 | 20170623205814 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F4A24813 |
200 | 20160301182221 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE553B4B8F3 | 200 | 20170623210627 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F53F787B |
201 | 20160301183911 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55510470B | 201 | 20170623210958 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F57EC8EB |
202 | 20160301184110 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE555338897 | 202 | 20170623211248 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F5B1A9D7 |
203 | 20160301184426 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55571A23F | 203 | 20170623213826 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F7B2A7AF |
204 | 20160301190148 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE556DEB983 | 204 | 20170623213924 2 6 100 4095 2 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F7BDBA73 |
205 | 20160301192446 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE558BD1523 | 205 | 20170623214723 2 6 100 4095 5 F2D0058FA043FB189699D118DE484B66A10DCE703B27209CFC6D23D9178067C9D560D7D8BA9D4439A22AED66322F25D886C0A5CD41821B49AAE3D7A7B72F9B0E2D823709AF5444C7E9474DF5867E605E638923A2FAD546A86B8014BA460D238A939B445D7489C91977B54AB531D75B0F4264F187218F885129751EC78654F4B21191365FEA1B7FEFC40842BBC07C4F1D1AD153F6A39B582406F6B5895336A1199F7556EE957EAC716AE6678CBE5390730F0EBB3CC5210242A80CB128BFD747ED1B61AF6BBD5B5DC07B34C5CA7AF73D1EE973B93E13918801AEFD674DF92A0AD84BFA2A8CEE1AD26140DA1D5FC0C450A1EAEBC88F8EA8E703A0F3A814E1F6975AA5BE732473575D16F137D2CE5F7A546CE4371ECB5E8052295E122A9CF89A026E2D09BDE56B8B04CC4CAE66CD0C5E0DFE30695DD798C50E39C911C887FEBACAAEFD2BFE7D454E051C432D66AD84680DA7C126F1A9C7C540283CCB863B9414BB536BA358259104ECB406B4976F97558FA4E5854888A8D13C96A14025DA0C55F869F6AF954B1E7AA1D317262C52099860E870A7EAF72F9910ACA809FF2DEA37FCA3EFB31FD43A308E4138E40178BEAC0FBB0E79ED7D1DCF8F8A81A4ABBFE6749F4C1B96BD65A14822490BC0A71E854BC8077C7A8F2C6FE308F86DEC97F600A4A0015F086B021F7F0BCAFDE3DA4D7E38A9AA1E992539389E99412FD22988F8513E37 |
206 | 20160301193428 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE559875F5F | 206 | 20170623233949 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D915376BC3 |
207 | 20160301193505 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE5598BF0AB | 207 | 20170624020214 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D918FF036F |
208 | 20160301194148 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55A0E82C3 | 208 | 20170624030028 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D91A80668F |
209 | 20160301195020 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55AB8837B | 209 | 20170624033630 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D91B697BC3 |
210 | 20160301195917 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55B6C5AB3 | 210 | 20170624052652 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D91E5556DB |
211 | 20160301200332 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55BBC661B | 211 | 20170624075515 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D922262F73 |
212 | 20160301201317 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55C7D9887 | 212 | 20170624103157 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92638CCD7 |
213 | 20160301201523 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55CA30A3B | 213 | 20170624120558 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92895C273 |
214 | 20160301202029 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55D044403 | 214 | 20170624130210 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92A0429E7 |
215 | 20160301203514 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55E324A43 | 215 | 20170624131317 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92A441063 |
216 | 20160301203700 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55E4D607B | 216 | 20170624132538 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92A8E794F |
217 | 20160301204309 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55EC519A7 | 217 | 20170624133715 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92AD26E07 |
218 | 20160301205135 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55F6BDE23 | 218 | 20170624145051 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92CB7412F |
219 | 20160301205244 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55F7B0B23 | 219 | 20170624163751 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D92F668E7B |
220 | 20160301205520 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55FA81627 | 220 | 20170624172739 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D930A8FC4B |
221 | 20160301205558 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE55FACF2AF | 221 | 20170624174055 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D930F6B80B |
222 | 20160301213318 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE562B75737 | 222 | 20170624185924 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D932ED85B7 |
223 | 20160301214847 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE563F5D2EB | 223 | 20170624220917 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D937BF2B3B |
224 | 20160301215746 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE564AA7C23 | 224 | 20170624222456 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D9381B839B |
225 | 20160301220025 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE564DC00EB | 225 | 20170625033902 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94007305B |
226 | 20160301222154 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE5669AE6CF | 226 | 20170625053719 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D942F8C1E7 |
227 | 20160301223932 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE567FEFC33 | 227 | 20170625062259 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D944178FAB |
228 | 20160301225302 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE569139497 | 228 | 20170625072908 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D945B1B3DF |
229 | 20160301225705 2 6 100 4095 5 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE5695E7AB7 | 229 | 20170625075138 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D9463A10C3 |
230 | 20160301230308 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE569D3D2B3 | 230 | 20170625080610 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94691AE5B |
231 | 20160301230751 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE56A2CD9CB | 231 | 20170625112146 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94B5B8CDB |
232 | 20160301231012 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE56A537EDB | 232 | 20170625113648 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94BB43777 |
233 | 20160301231655 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE56AD78EE3 | 233 | 20170625131459 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94E2020A7 |
234 | 20160301232437 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE56B7299EB | 234 | 20170625141110 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D94F7F2B87 |
235 | 20160301232518 2 6 100 4095 2 E268D4796069A7E90EC81DC69831656A982D57FD2C1E7810FD32855F3A67C150F52C2B45EC5C1183DE82AE98202BCD0CA7D1CD0A4D15AE296B23B6FCC0BD171005C939D9D1D75DEA733A6B4F3DA9A96759881B7482ABC3CF967763F261D0D6BEDDEE374F138597B347A57A4E21F8F801CD8F8A33FB3638FE0CE021E052AD5CE00E23E3A6644C844E8F79749384DBD4AC2D46B7804D797174F4BF19F92D8710B18BAE576F69449EA91681A92B0E8E95EECB47CCB0720DA611EF8686A09A7DB37726E1357EA9A1CFB7B2DB04529147BD30F96515123A7B5540890860D45C7C033DC0FAF079A0A7825C6A6DFD9B87189F2EEFBE5F68BA9B1DDA8E3BF26ECA3A8A261BF5C67E2A01C8E4BDFAA1C221950596216C69468493E424DBBCEFB8BCCF0A83C773123087F355A15EE7515BC3C6536FFCA05B50F8FB7F3A57103DDB6FA82E2B902991086E2EA9284CB09FEC7A4184EBA09A700930188711313FD16C27B338BA4BA55736E0C7B4C6E731933BD9FD7DDC80BC3A23676FF871FE3E21945BFC83B22C3992E2219F75A6C7AD05F66F2D09B8C805C2E1FFBEDBE5115FD9FB023B58B37FAFEA2CDE16C52A54BD7090C03438EF19F04D8FC630055FC96AFEA891B8CDF6016A6E101A9C27C1E6A5A3B81DC785B6E8808EF59414B58C1CBC5E3E1428DA520F1AA2E8BF6A6554F2DCA1CE30972E13BED33D2744621C763D387AE56B78E563 | 235 | 20170625144415 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D9504A46D3 |
236 | 20160302001351 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF880CFD33 | 236 | 20170625145639 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D9508CDF97 |
237 | 20160302060207 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF915C8E67 | 237 | 20170625203254 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D958CDC1DB |
238 | 20160302080221 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF9484D603 | 238 | 20170625215049 2 6 100 6143 2 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D95AA6BE13 |
239 | 20160302085858 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF95FD5243 | 239 | 20170625220255 2 6 100 6143 5 E30D9BCD65DA0EAEF6A1D4D083834D4724538836AE04DFB6A7DAF235F5D9992B7E42128D43E229BF4906EF0C6A27F60B95A1FC514C2D55A0D616B3B6924F08E9C0BCD8AE1CB624F645785C2AA552C94E125D6602CF63CF52014A1B0A4AE0DE823B03B6ABFA25839ABC3E8E050C295B8B3471EC58EAD9B659294C72EA65229E4E8EB21CA79CBB41BB552118A3CD32108E51D5FCE5C46A6CD03E4246CB57E32BAA09B15503FBFA4F4C943B2378F10EE312C1F12A14010AFD1698B8EBCCFC8D0DF17829A153199154EBF9E40FD81B8E1AF5881D0EC1D3BEDB2D0F1DB9C44C9D8E7047310623D4FAAE28D2C16612CFB9AE9A8FD05B8FE22930346ECF7B21B5800778EA0D5D3B7BDF18B03ABF33C9D0B4648CF687ED229C811CE290CFAF94F9C9AF4EC3E47480955E5C81E85DA9EBCE99652DA07225C7CCEF39E224556E48D6371981C7232E00F3419F7B335FF36FE3989558277654DB356063ABC8F7BD0EF828B40D3BFC06D12FEC51278ACD32C3B67D4E2A0BBA1E20BDDA06DB9AF6AB250179DE3332EAC0A6D381963B51E8E167B8285BA3E6538B1D38B16B32196ABE009ADFDAF5E686E0107F76ED10414B6249D6895188456505CDB897FFCCEB8931802F87C02DFDC62825C6255DF2654712BE230CC86A30229D9E3438DB35CEED8F8447B9209CDECFC1776D2C43B4B98E9EEA3F4C049C1287CDB4540D395A4BC992602150CCC0479597E221E201B778DCA9701C517C89B95004FC19373ED9755C90FF32C44013678876EAD3FE5E637BF2F1959130EAF79E7A93088F52AA0AC993324294536CF3787C3A3F06F2DC201A070967E6F4525803DC83F5160B560465A4CE4BF20315858BE0E62A07C55B3A772CBF93DE99AADFCB304D2B544A9F17A22C2BEB791D98F714CA7CFF701CB7CAEC55C292A25A147935D7BBD1E66F2ED3EBC66E763209169033CE5A2D9884DC0CBAFF37517372544E1EB780A26CC71E5649EDFD5DA2FCFB58093D74D76FC2DAEC54567104701C31E3872C15BAC5F2A96833EEDAB9B7FF731F827DB3273D271BA8F9DE06181C1E38D031896971D801C571954337D95AE8D4FF |
240 | 20160302110323 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF99425D23 | 240 | 20170626000351 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A06777EB |
241 | 20160302115537 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF9AA4530F | 241 | 20170626010044 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A1E685DB |
242 | 20160302121026 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF9AFF17B3 | 242 | 20170626011405 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A237A0AB |
243 | 20160302125303 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF9C1752FB | 243 | 20170626020723 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A39C76DB |
244 | 20160302132855 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF9D055A3B | 244 | 20170626021405 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A3C0D837 |
245 | 20160302145027 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDF9F210C3B | 245 | 20170626025354 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A4CB1E73 |
246 | 20160302160128 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFA0F799CF | 246 | 20170626025848 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A4E33427 |
247 | 20160302164318 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFA205C49B | 247 | 20170626034407 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A60D840F |
248 | 20160302193543 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFA66F725B | 248 | 20170626042648 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973A7271AD3 |
249 | 20160302223446 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFAB045BFF | 249 | 20170626063327 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973AA7A8227 |
250 | 20160302230706 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFABD44B9F | 250 | 20170626073301 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973AC001F7B |
251 | 20160303005014 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFAE7817DB | 251 | 20170626073912 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973AC204247 |
252 | 20160303013053 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFAF76805B | 252 | 20170626083935 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973ADB29CEF |
253 | 20160303031806 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFB234F5BB | 253 | 20170626085130 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973ADFA675B |
254 | 20160303034446 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFB2DCD713 | 254 | 20170626103016 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B0702723 |
255 | 20160303042131 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFB3CABEBB | 255 | 20170626110918 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B1648BFF |
256 | 20160303052710 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFB569F28F | 256 | 20170626113343 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B1F924B3 |
257 | 20160303064237 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFB744D6A7 | 257 | 20170626150922 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B78B107B |
258 | 20160303074318 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFB8C38E87 | 258 | 20170626162428 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973B972EB6B |
259 | 20160303091435 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFBB0B707F | 259 | 20170626171558 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973BAC16547 |
260 | 20160303111232 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFBE003643 | 260 | 20170626231518 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973C3C4E533 |
261 | 20160303112343 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFBE40A0B3 | 261 | 20170627001636 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973C53DC917 |
262 | 20160303113550 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFBE87B0BF | 262 | 20170627023229 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973C8A24E33 |
263 | 20160303120708 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFBF49A92B | 263 | 20170627055348 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973CDB0A037 |
264 | 20160303122005 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFBF954093 | 264 | 20170627085558 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973D234059B |
265 | 20160303134821 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFC1C0AD17 | 265 | 20170627111046 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973D57B1B3B |
266 | 20160303183137 2 6 100 6143 5 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFC8B45457 | 266 | 20170627114331 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973D63E6527 |
267 | 20160303204451 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFCBFBCF5B | 267 | 20170627143549 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DA76351B |
268 | 20160303210530 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFCC756893 | 268 | 20170627150713 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DB2FF40B |
269 | 20160303224116 2 6 100 6143 2 D9752DD196C5E138B7F542FD56561455DDBDF05DCC107F8A5C8F393529CEBAE3CECA54E85766015CBFE1856D830D7A20385951C0941FF754570F697951C77F6FC064C28B708E8A691BDA8C6C1921C7559288EE8A024EB50D923EFF9F143E76B053D2B5FF1779C1CDC0E5856BBE4396928E605009866CFD212C68183120D5A7EA14BD3878690406069F8BC9AED334AEB6C25FD4CD9421F860893256B1A7741F729982BC109E3B6DF4D86CCFCDC1EBAB2EB13836E7988CB9F32F3EC5120E6B2DD74FF13E456A1A01E313E00A728D2ED690A656DACB1C71C6BADCA959CD944EBA762FC8B0B3CEF237386ED3D4FC6983A8F950B956DC76C09B6AAE22B5B8501B73B6E685FA40AA56139A8C02F6E0B7836E3F08EB5F9D4EC83A8BDA394FC5DA24D2CF078AE7491E3856A18FCA2C68BF9BC82ABCDE494CDFB31F82E5FE8C20D7832412F478BFC67A2B4B2CF5F266DDF53CB62372957861B95FFD2C82C46E48ACD75CAEC30E8453C8A24020ABB6143665441179478D8E33E505C2E34C1EA8F22205CA8FB31A48209BCF10ACD56B6B0060DE1836A4C9EF3C062C552C1BC8528D262FF0A2BEB56626C69A8CC7BA24F65FC39768212BB7C41BFFEDDAFD1A1528F6258F2ABC102F693425FDDF20D9EC9601FBFDC6FCD43E551C082A8A1373A1CB5E83BCD8175D9B60662D03ED5894D3EF4325180633C33FA1DD0964CC0CAEDE403146E7A5B8ED74FC6AB359EE1909A45A445429B17C04658E7F4F31F84DD194FDFBF3EF345C1B4EF2563E16351808FE4262B52D0C8AA748DF502FEF3A92C9F6A6A03BDE903DD1392177265313C08E767B003614AC6C6BFC501AAC24737BB3C8CC0160D81FC3BC6244974E1D83D15E676976F92999AEE25A66E7FE124A94D52A902E035FA5F866833D7AD3387BE2423095930671D8588E49510AEC9430ED1F03A02F3160124D893833D44FA4B51FED9044AE5B4136105466D5CD711FDFC37690183BA1D4930347148433D76B98A857EF4962FE0F48A16F20454555411EC778B248529F50503C4E0D62A122EEF42CA6BEFC7B3517CCB75A293AF2532E29FC2889DFDFCEC94F0B | 269 | 20170627151417 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DB566CC3 |
270 | 20160304002011 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F213AE3B5BB | 270 | 20170627162358 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DD096627 |
271 | 20160304013213 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F213CCC818F | 271 | 20170627175138 2 6 100 6143 5 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DF2B3477 |
272 | 20160304014837 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F213D3357F7 | 272 | 20170627180034 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973DF5CD463 |
273 | 20160304050100 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F21426DAC33 | 273 | 20170627192816 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973E16B337B |
274 | 20160304070516 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2145B0AFE3 | 274 | 20170627194138 2 6 100 6143 2 FE3AFB7EA9CBCB633757EA982ED0DDFF120459E69D35DB36ACC5F69B04A5CCEE59A0312A97687F2B3DBC20917F4BF0B16D97B75EDCA16B58BDEB8BB1A726F6CB8BF5D7FC483777129A1C19CB559943EF201323760672C63859E830C6E99AFE5DD7A4E89BAD41C63B687558DD277F4E06A29D1E14A21CAA6FDD4E6F21EB8B146F2C04F93B1C94234E6295F2F8773B16BA3D51758841EA48ADD1A626E252DB3B78594B4586AC9E9EAF100F294ADC82BEBBF8CAB96B671EE7050B42733EB741107C5D2199D305C84F93C6AEEE6BD607DB7C0EFED773FB1DB73B04EFA72EB36111B99EBE6EEE899307FD288329FB2DB7E81776AEF0F935FFEE77611BDCFEC309F97EEB6E36FE42CA4C8EFAA0B4B93F5D83606B8FA7B49DD1DBB8F828B9C805381CB5DF4AC7FFAE27C62CBCD2FE80BB4157EB7F3267041255AC2F7EA3B450951878166049E5FF1BD3B361082FB184E342DDA1961ACFD90944F37E09A06AFE463AA9AA66EE699D28C4D109F3E8111CF4D625161B2855C11593AE408AE44DC026091119744FF09A4AB3C00717ACA004E26ACA53BF6444D839CF477A56FEAFFBF2E4CB946512815269D8E3C163FC29288A917A4A0ACC6DF54454CE2D54AC79AE05BF816DE1E3E9D3A9CC69DBE674880F98ECB8D8D4C4247AC07BC9B7C40FB89C4B9D4DA4604B37D15047DFB28C5D241CDFA327C3996872A0C05B84342F81A308D7796CA4A4038E47A5D4658F757C3F9645F11DEA92AE4D2E77FDB1A5D12519FF947F39A68152528CB02F915894D728C0E755B8BC4A99FCFC778A4099558A06D5FECC4C22DAA7E23C3B5E8E99B5365D5046C8C65846D949A521C0B25EFE5F5CD0845F09C29C096C4A80755120A299EA652B204775E53B2D521F366F4EF9FA65B1D8CB048295C39BE92667200E2889B1577CBD0AC23B2280B758A3650BE60D55F215DBF166873592253B1254968B5A46A61C792A153342C3ADE408676F4B27B7F22C50B079D0E32AEA134168A53A36F18E2FFA2459EDBA89BEC13D19C342235F6E9CF8F721B608F6297A3486173A7D5CED5E2AF6343775668C1B1FB0B745157973E1B23A4B |
275 | 20160304085926 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2148A9E96B | 275 | 20170627235654 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CE22848CB |
276 | 20160304092251 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F21493F5C9B | 276 | 20170628025708 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CE4C7FC03 |
277 | 20160304092815 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F21495C2BA3 | 277 | 20170628090844 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CEA316C0F |
278 | 20160304115839 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F214D4FED23 | 278 | 20170628104935 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CEB9D111B |
279 | 20160304122842 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F214E130FAF | 279 | 20170628114328 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CEC57837B |
280 | 20160304143749 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F215161823F | 280 | 20170628155547 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CEFEB085F |
281 | 20160304160139 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2153888D53 | 281 | 20170628161354 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CF024A37B |
282 | 20160304160440 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F215394B933 | 282 | 20170629103301 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CF75BD46F |
283 | 20160304162214 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F215400CF9B | 283 | 20170629121023 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6CF8B74F97 |
284 | 20160304212008 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F215BACC633 | 284 | 20170630003105 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D0331EC63 |
285 | 20160304221341 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F215D065E4F | 285 | 20170630052003 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D04F2C61B |
286 | 20160304221614 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F215D0E8A6F | 286 | 20170630145450 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D0CF7BF93 |
287 | 20160305022340 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F216368CBBB | 287 | 20170701010810 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D1578081F |
288 | 20160305044620 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F216709F6C7 | 288 | 20170701015400 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D161119BF |
289 | 20160305053801 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2168484233 | 289 | 20170701082405 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D1B5FB48B |
290 | 20160305060125 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2168D0E0E7 | 290 | 20170701092427 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D1C2B0E47 |
291 | 20160305081042 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F216C1797FB | 291 | 20170701161137 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D21ABD21B |
292 | 20160305094218 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F216E608403 | 292 | 20170702022204 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D29CF7033 |
293 | 20160305095044 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F216E8BAD0F | 293 | 20170702023811 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D29FB9AAF |
294 | 20160305095440 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F216E9B001F | 294 | 20170702062241 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D2CED4213 |
295 | 20160305111737 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2170A72F1B | 295 | 20170702082528 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D2E88DA5F |
296 | 20160305152313 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2176C19D53 | 296 | 20170702151719 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D33FAA757 |
297 | 20160305152947 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2176E37BCB | 297 | 20170702175101 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D360021F3 |
298 | 20160305154608 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F217744E9E3 | 298 | 20170702200102 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D37A9C6C7 |
299 | 20160305161226 2 6 100 6143 5 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2177E547CF | 299 | 20170703011731 2 6 100 7679 5 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D3BCD4977 |
300 | 20160305173357 2 6 100 6143 2 FC87210E608B51094653AB8D5963CAEF1C053FBDBBEDF91B83BBD945C79B4F67E96E8FA2C32DD50643434724257CC86C29F3CA2D266A719934B4D350E933D37153610C332F148D4B22D7D790A2A83995B0600254F640BD5E48B7D97D1BCEE76515FE078CE062EFB08529A5670F773DF514EC5392403D50C33577AFCDDE7D90224AEED69799AE17968CADDBFDC81A6E10B1CDE4A0D3F41C4B82CE346E0621973BE07918EAD36D7C67BCF2984D0F78BCD1E540847CA4DC90D909845862D4F699ABFA17F5749554774BC2C59443265CE386C655055202009B32590EB0FD85F203E63425342E756AB57F5BA14BD2E283B617A230E11A955442F0C1F53AF4F08DFD1D2606DD5DD04486C40A0E6D2DB2B390D664A97D32ED7868A6AAC5F2E534B7C880EE0F6834EC100D547B823547443D02980F1EBB2EBB6D57E9368BC70C440BB5406220630583D59AB11C489B0B0B8591A7F9FF322BFD4B9FE0672800A402F9734652EF151B44180D4EA7A713C66873A245691AAF295272BFF02979772EC48D65CF34540F38EDF2B95BDF8E7A88062866A8F5471F29993E1D4A4F1638A447D237964907CA1090C0CE1D4FDD79277219F9E1CE63E3E95BAFF8017639969710AE8520769B09C318BDD8A0CB3560DDC3A6281E1816EF16D942980934B6B381D44FD19311FDE8457113B6F8FBC9101EC20F6F216712BC17A63A753F0724BA90EA9A4766FF93BBA39020CC72E0B33CB6CC3C3D87A13CB86BA9C1A9B9086DBD905F62B29782E5AAD4C27704913415E583A0EF1F2586C612DCA66CA31FD1F797752EC984E543616C7575ADC6BDAB9788F82C9258DF1E58777440BDAD5D93A2CBEAC466D6BE37CC4307CA0534B00B6EBEE4C3958BC587117E8E26D13E36B1D4A9D0F7DB2F00E9568EB21F6530EF635650C51DC9D04B788439BE01ACBF5501D673896A170037E0048882DCF5A09F7605AEFEA5615A534B5CAE77D46B00E27CAC0C7685AA235EBC0941B056FCE7737E3BD6597EF0C5774D1535F294645B12025F17474F9066DA7DFD867B72E3706FAEECD892C05D92494D7A3BEE52080BAC6FCA8F2179D3586B | 300 | 20170703155054 2 6 100 7679 2 E411B879FDA69428A30BDE74B417706E5936E16C5E1F2B64A07EAE1D69C857C23126701460740D93467EB3A3386827E658069CAC4D55CC4929493C193D53A0D91141135B2F0B19E659BB541883E569D38B329761EDF3C409D34A49870356F3723AD2F720383E49B1752B837DF80F48632A469A0A96AC8F02E5B766B590D722B5BD3ED9191BB70C1D4044A3D5CE850489216C3184D73BAE2B655D76B30EC1851951A756E2A45CD1FF82A83BDC1803005034BEB2EAC35FF7362831D8FBE02E07B1CCA351D47AD65B5282151FB2711A880410CED2C1CF205CC2072F6F244189F5BDB3AFDBA7FB02DD21C99D1EF72C1EF8BC6C68A273D16CB2D3CA190C30BDDEEAD7CA2E519F3AF806B5CBD436B971C1F1981EB35CB4007D129F43E660F7E47E807C889A1DC5FEFA7C304DB41B36982FEFB7390DC6C8E9474D3EEB84B3F757C367475EB1B4CB5B86F9507090F2CB37533E2B96BBC6F75B3BF1F4CECF18F67E7492A681845CF5AFA1B70FB3B0A09CDD3375BCF716CBF2A594533D157CB6C4008CF8C4818C9418E44A995028487B0346BD399BFB431CA94B3FC2AF9822520153105ADACEBE719CC24D1D043AC2AC24BD41759AA452000C43CB885D5F0D71DC2451A2C5C04B0B085BD23B5295B7A109DCD729C34479D51EAB4617FDD163128B25F5803B262C3D97E2D63B3E84D85B67ECDFDE6FA377E208BD2EF867072D341AC731338268AD82285DD6D219DE44EB0588E477CBFCD5F5C068D2FA877339424F324012D346C3E2B3C4408E4FD84535C5D4EA02137ABE0426BC4C3AD6EABAA221579CBA22023F8204ECCC98D143652DEBF5869CD73A81C0E4C6FC9A22F9E648B6783AA1D0F0A1F76B1C4E8692339A6A259F3D8419CF7FD22A26023678BFE4F70C79E7F113882E6C7A0606C5AA9094DB161683E43CCEC8C73FEBC7B82617B90541C2BC15EBA18B55E430373CF21DD235BA332EE6D7A6D042BAB4DEF94939AAD2A1F6FD235B09CA6CCFB45A614C79F3C83253B82BB73826DD22127F3F14292A9B682D607D6C9313DF5324712F976C8978AEDC97B40095E66BF850BCB83F477E1F5AB045844EA5CA0652C7C2C284B90FFDCAE2D5F3C165F66FCE871A5D0AFAA158E77099BFA7A969C8F3425E326D24E7E875D588B5E652ED331ABE4A72AFF7D89CFA9D55116B2610AEA4D1D16BCE1FE8D22849827677FEC8EC9864F5A4B874E7AA3228E31DACECA3ED7E1F31675CCA03E599E748BBCA483821DDC5F1C7ED376EDE7A650AD06CE3FC4E76062354B7D89093EBBF9717CED067846349E8BBEEC4CDDE0907F2DD1C31125F1DBB7B9A94E07677C4EBC756A5ED3D8DB30FB5772328272C6D431F42D3 |
301 | 20160305235825 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B0B4DFC33 | 301 | 20170704184253 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936A2722BB3 |
302 | 20160306022229 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B0D65D0DB | 302 | 20170704204537 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936A4446CCB |
303 | 20160306093737 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B13D7D927 | 303 | 20170705051520 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936ABC7F083 |
304 | 20160306094452 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B13E933BB | 304 | 20170705084652 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936AED1CC73 |
305 | 20160306160337 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B1971D123 | 305 | 20170705094007 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936AF8A26FF |
306 | 20160306224032 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B1F3B6DAB | 306 | 20170705115139 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B15913CF |
307 | 20160306225345 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B1F6160BF | 307 | 20170705123819 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B1FD105B |
308 | 20160306233854 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B2005324F | 308 | 20170705150548 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B411305B |
309 | 20160307010902 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B214E9673 | 309 | 20170705152103 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B43D87FB |
310 | 20160307051433 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B24C9A09F | 310 | 20170705174143 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936B637D557 |
311 | 20160307062817 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B25CA759B | 311 | 20170706120313 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936C5C0BE63 |
312 | 20160307113227 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B2A201EFB | 312 | 20170706131942 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936C6CA2F0F |
313 | 20160307123109 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B2AEC017F | 313 | 20170706141404 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936C781A68B |
314 | 20160307185147 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B3059D223 | 314 | 20170706153843 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936C8A1C2AB |
315 | 20160308031623 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B3779276B | 315 | 20170706173242 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CA322EEF |
316 | 20160308074434 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B3B36AF7F | 316 | 20170706183451 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CB02939B |
317 | 20160308080500 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B3B735E1B | 317 | 20170706184330 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CB163C7B |
318 | 20160308090559 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B3C46A863 | 318 | 20170706195815 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CC15613B |
319 | 20160308204809 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B45F50A43 | 319 | 20170707002909 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936CFBE39B3 |
320 | 20160308220844 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B47098FDB | 320 | 20170707012259 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D06F0ADF |
321 | 20160309000534 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B4893E51B | 321 | 20170707064939 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D4E0A703 |
322 | 20160309035855 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B4B9D5AF3 | 322 | 20170707065604 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D4EE0BAF |
323 | 20160309042540 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B4BEF4FBB | 323 | 20170707120623 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D9082CA3 |
324 | 20160309152136 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B54B515AB | 324 | 20170707121752 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936D928FC67 |
325 | 20160309192852 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B57FBEBF7 | 325 | 20170707164931 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936DCD75823 |
326 | 20160310013359 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B5CE29283 | 326 | 20170707220455 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E0F28243 |
327 | 20160310035549 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B5EB8EE13 | 327 | 20170707233018 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E20BF7B3 |
328 | 20160310075706 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B61EA384F | 328 | 20170708014205 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E3C89587 |
329 | 20160310173812 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B6993761B | 329 | 20170708023140 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E469C123 |
330 | 20160310190029 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B6A9FDA07 | 330 | 20170708053646 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E6DBCAE7 |
331 | 20160310193821 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B6B156863 | 331 | 20170708071735 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E8297A7F |
332 | 20160311033330 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B714D2463 | 332 | 20170708072409 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936E836D247 |
333 | 20160311043906 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B7225A617 | 333 | 20170708102649 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936EA984FCF |
334 | 20160311054129 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B72E8A083 | 334 | 20170708144918 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936EE06AB6B |
335 | 20160311060123 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B7320D78F | 335 | 20170708163647 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936EF6DD803 |
336 | 20160311060829 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B732F58C3 | 336 | 20170708181531 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936F0B07D83 |
337 | 20160311071819 2 6 100 7679 2 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B740FC84B | 337 | 20170708234000 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936F4E4D5BF |
338 | 20160311081031 2 6 100 7679 5 CDE6C545B0D2F4A803F7AA7269ADA925DA60EAE55764AE38A7C61738B71DA67096F9E2CABF9B30B2E33E1FE97BFE4CE54B53041F2B2A0DAEF6135B6FB4990BE5C32AA56F223B6FDA4599B58517C6B78EA50C8E17CBB37865B5DB8AB5AB0F9A30B27AD76B11F758F10643A569346816280CE9368A159957E161B5E877CBD33D838B725F3CBAA53F6BC1B8F0062B9ED6D756CBB077B92A0A010636B4B92D570C8E0E3BA5553A92B7F1BF41C7AF7354849491B1C63886EE4A52DDBCF24444D5EA1636F883C1B5482E5ECBCA45BB5C741E9A302554B218DEC84908A75D6A2FB12CD96B1C6046A27FCBEDF260AA445C90A156DC17A1147861792E81840E71D0C8DA6BFC54BE0AA2409B7B23807FC07EF4B2B88B6AA9755809D084448E20D06890B4F299F4A38653F34BB52F38E06E4BC7AECD019E6E06FE39238F661726D7FD4AF8F5CFD49177CE8F8D324C99A00D4FF37B5CE5845106893B0AB4600F0A47BC5C3A536969498548EB86BC2ADB0155F9D2F94B02E7198CCE6E03D091191F63F7CD9AF5F2781D32C105A5DD8425090F90FD2099FE37630A69DB179A7161A226B0CD24C93C087B3AC90EF711C2358DC39EA53C0B9BEAF30851B9DCC5BCE27B4595D391DB68336FF330D3A1E90358A2CB1B35765C6F629D737EF13D6565390D25F3DC8E5A17FDDAF740568659F064CC5DB9F4A3A6CA3BA027A58CD18880F4941CC9B372BDB9B3398FBC357B7672EFEA922537846A4F4B7F393B927786A30DEEC3E5234CFB2D9CE459D1CB2140DE33052CF325BF81C4AA80928FB4906B6700F9CC2628747894CDF90FE2C2F07303F435CFD182F661B19E802092BEDB3E22C275A9AB635DD60A442E2E3D6B61CB204898EB0F0D888CE8903FA8521B9EF18046904F63B66C70B2C503CD1E2A2EEF203274D59D5A86F1B2758B9DDC9F97708841322C99BE9A47524A8BE01D7152B9ACF12C0181BB8C1884DD03FF26FA916FD95A4325DAC03139C80F7931F24694AFDDC150848579C28276BC4DA72400277F560A1E9701186148B5ADADDA2BCC8F7ED47A999DC77C3D6C7E20AD7F3C0A4DFAD3B8EEA0C0C402A28B27B01EAE661CF48CB7A8E14FF0597612798D954B1AC078984BAC3353F2A9829E9F29D88562F5EF90DF5A5E81A97C4BC9565F2F915B43ECD333B189D3C774E18B397D3B6640D8F4902DE3A90BF4E2646302A4BE7341A40F83AEC49B7DC31C0B91CF4BF022EBC8623CDFAD234CECD39942649B386CC65EBED4676F6B0FBC015D2C300B252A7DE8DC6434270DF9918D48FF541CAFFEE9485166EFB82C4F4FB2FA109C6C16D475052E530B12FB81DF189F77C08A9DC2F6A4F37E38601B74B68FAF | 338 | 20170709023719 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936F727B0C3 |
339 | 20160311170649 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9B171F787 | 339 | 20170709063946 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936FA3DA1B3 |
340 | 20160311195449 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9B3EAFC07 | 340 | 20170709093311 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145936FC71EB57 |
341 | 20160312113901 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9C1FC4A03 | 341 | 20170709151341 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D14593700D34957 |
342 | 20160312141825 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9C45A6C9B | 342 | 20170709162318 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D14593701B3041F |
343 | 20160312221956 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9CB35C95F | 343 | 20170709184215 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D1459370374B3A3 |
344 | 20160313023234 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9CED021AB | 344 | 20170709215933 2 6 100 7679 5 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D14593705ED75E7 |
345 | 20160313062450 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9D2124DF7 | 345 | 20170710000252 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D145937077174C3 |
346 | 20160313135733 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9D880F89B | 346 | 20170710052851 2 6 100 7679 2 C0388038628CD48D5377C99911D89CEDF70AC54721EE6974975D61C9E25580D2108B48CBCDB8B647B271FA822546C00580DB013D19EE5A49EFD9AAECA2036A83BB3E2F96C3E7CB273AA9ACEFCA5A3E4C7C8FCF3332DE11288D8BD76E17B4C530F5F6EFB0D757F63E3B2B519EE960FA8206DF81E7B9DA463CE389E3164588BF5B66355D481DC620F0B2F352782105DF3AB86076DD7D612CE9839CB251D5C975166859A41B740E08E66B746B710479FAA430E2891E60647E04FE71D8F8BC9A6BCD20CFB42299142DC016E672CC350D497809379F54F6F3D1649ADCE72ADECEAAE1ECA85EEE8006700379DE3687A67AF796E1F317815461CFF6E58615CD453265612315FA8F99DC65D9CC218004671E43CE58C9F54862D86B58FD71212199A2A562B1AB9604BF43676A403E8EA56A69E68F1CF0C60C83B8EB31D9C0A23D8410C3A6898D749CAD8CDA9F17A224536BD08436B25E50BA67BAD09276BB55583CEDF48AEEFFD8FA3DBE4F609760DF1EDED136B38792CD164D2EA3C5443F0D8F9117544A9A6AAC615ADE01440B7948B2B53BC3F7218DEDEB16D23C3B0C2AA4BEB99F9A9225D87B6CCB037D8E9A2918C20FE9F2BFF429FD0F23AE370E820842AEDD823DD5B6DDD7F4AD3A06735A2E4144DBABEA5DD83A6AA98EED5F6F3021C246FBABD280986A1E7A24CCBE11BC3050CC04DB566277CECBA8B5BDC1D15E1F066B25B668C7B87EA54894EC7559B64F1400934DCE1C06A10955988E3B3F4A40566B3989608404859335C53EBD6BEE21614EB7C954D543DBA7EB61555B7CED9D08EF560426DBCE3018FBEF788CF69AEAB433B692A9E28CBAFEFC048BD9AB423678D4DD5807329BCC417CF77EC7FD8E50B6D9A8D6B2017B24F6890557AF327980D086499B7C4ED6518B9C23DAB9571CA9E8E949C039C5CC002CBC9BDD08728D543143AFE577738AD309AB2493A8157272196B73C28A4826B37A8274198A4E8188CDADB1D7BB209C84D03500F79B9DFEC1E4441F34069CC01D6B9A57940914F56217C0F3A5CE0C75DE2815EE396D4AB00EC9695DFBCDD88EA6C8017CC29B1257EED39B50E0D075CCF9564D4B22F59F4B5E6667E4CACAC6B63D8CC1C9AB2CC6309A319E559D2062FB99D15B62F08E4DAD676698813D227FF8967B3B3830970E92277B2446A3C269A74FB437800824A8987DA3636A17A53C7E55C66077BE0FBD63441402F19C6C4E1F1C46185A3F3F5D7D7F553F0066EBFCF2ECD74CFC6DB48F6A458AE66EC12532B691FA3AE9A0C19809B3A1AF06340EFB012A33D484D272CA09D5862DAC5E3A00006F260BDE5CE74E007AB12A8F686373949308E574DCE7EA9D1459370B975DE3 |
347 | 20160314002320 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9E14CBED3 | 347 | 20170710074510 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C8898200FD23 |
348 | 20160314074608 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9E75C54D3 | 348 | 20170710114649 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88984F315BB |
349 | 20160314135741 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9EC7E3DAB | 349 | 20170711033842 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88990A1C3A7 |
350 | 20160314140815 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9EC9AC0E7 | 350 | 20170711064933 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88992F18383 |
351 | 20160314202745 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9F1BD98C3 | 351 | 20170711070835 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C8899321BE1B |
352 | 20160314223316 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9F36F08D3 | 352 | 20170712081942 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889A5694573 |
353 | 20160315005016 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9F54715BF | 353 | 20170712175235 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889AC1C9503 |
354 | 20160315013952 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9F5E3A7F3 | 354 | 20170712184856 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889ACBA643B |
355 | 20160315060542 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9F968A573 | 355 | 20170712224446 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889AF76B1E3 |
356 | 20160315072619 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9FA7969D3 | 356 | 20170713034208 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889B2F38EEF |
357 | 20160315105849 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9FD4C31DB | 357 | 20170713034622 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889B2F6567F |
358 | 20160315120521 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9FE292087 | 358 | 20170713071216 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889B55B411B |
359 | 20160315121136 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073B9FE352FC3 | 359 | 20170713222010 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889BFD2C803 |
360 | 20160315152946 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA00CB151B | 360 | 20170714013005 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889C1EF6397 |
361 | 20160315165331 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA01DFD347 | 361 | 20170714094721 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889C7A27293 |
362 | 20160315184225 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA034D7527 | 362 | 20170714141853 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889CAA42B27 |
363 | 20160315214330 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA05A75E33 | 363 | 20170714204505 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889CEF31E77 |
364 | 20160316020204 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA0912D52F | 364 | 20170714205139 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889CEFD860B |
365 | 20160316065014 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA0CD7441F | 365 | 20170714214942 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889CF9B7253 |
366 | 20160316121031 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA1102A093 | 366 | 20170714230801 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889D071D153 |
367 | 20160316165356 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA14B5C017 | 367 | 20170715054028 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889D4C6B33F |
368 | 20160316191831 2 6 100 7679 2 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA168B1623 | 368 | 20170715152910 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889DB4248D3 |
369 | 20160316230539 2 6 100 7679 5 EC435B7E292EBAAEC94B8E8A53ED9F3FF717BB820D4893F0BBE6589BD3AF344B765A6000950C6244B2E4262E7E500BF699AF0FF49605A15EB80C61429C9FB79F658C3E0F8DB516AF9703BCB5E84ABA314292808DC70D183C513609A6D345F5D8676256E25108EE70B210C0293B5C804CF21FD843D2F5F79F91F57CF2C2EFB7052CA5F73544F0568A68FA5583CA6EDD300817AAB25E650B0AB9523C6C60156726F4B5243A8BE580308BB6297E23785893119D49B2407D4D8DACD551D08A5F9BB32BD7965313EC6C9DDCD685A62F7AFC8E71DF10F9E1FA25EB3DCD41D7DBDEFE5DB565BAE0CB62F192AA573A126FB92C9638457E73EB4C007268142D9506B17D20A4D73B51E21983D9AC86F7ABBDCE9B9D10BE307642C49382E27B45ADB32E9FF7A2203F395C71EAF7656DF83F57E527CCA37A2BE9AFBA89FB718DB95CC041BF4025FF1CB5F463C8A09FD374AF3F143EE53FF4B369117BDBE0743335B1B5650B68C5B4F64E42D4CF0B329316F4FCD5E66F4A1359F2B29684961CA04EC5AC787FD4BF990F3FBE698D69FAF946DE12A4215392928E29ACF24F940AE4046C74BC6E799EE1D85BA8264C6C7DFF62A244CA2D05C4352870E0E8EF71F884AEFA4A4CA704B6C6607D2E59D36253350AF73C1FBE9C5D61A26A9024B715B45ECF1487D23970C5E405B46029403DD95B2F5672E61863E48CBB280300B2CF87C749F0ACC52940819688C819250B71E54397C8792AAB31655BCE19FAD3A7C59BD64904CC806304AEB6DC8B534081CD2EFD2808977FAC9BAB540EC153DD98D8B33984EC40BCFBC0C5D5B95AB3E183961DB2EE8883B174A3CFEC21CBE7F200FDD2879C1BA808B65A03B02793688FBB1F753333A23A4139766DD3ECD30742E55C25474D068CAB008BA6957CB014E4D46C4BF3084C8343D61231B6B997A8BCEE761D907E4323B92EED55575A38048D686B04F6614B7F931BF1F7D2CF35912E3472F424B11FEBA41F6D569B1A13002A33D5660844A896436AA4D8BC74B6951C75F883D747690B6AD3501B84C6C5B4E29C4153A98C0F2DF38CAFDF00E15CFE8DB0939E5611518DB4547CB2880B5F2D431526082D608384FA3BDD78B75157F25C7A2448249E635C20051C39577AE777C75E7B424CB647B76C9880E905E401DA09DE7A6A5F3E59376B24DCAC613C6EF263741FA15E83B64C78C03016FD34AB608D77100FD8733F130F63A0725B8E7CCD344F5E9A460D2F4F5BE139A6B57A3955A47726A02D6425EF8D1440709517F2DE1D8BB1D054BF69B77E44B4C4427F26EC6303F91CF197298214820264AFACBD355F08E278734BDBF1E116ADF6C1C03ADF5E73212A7073BA1974D157 | 369 | 20170715213011 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889DF38680B |
370 | 20160317204037 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F505984F7 | 370 | 20170716095854 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889E75F9737 |
371 | 20160317232704 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F52635AA3 | 371 | 20170716115603 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889E896321F |
372 | 20160318065706 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F57FAD16B | 372 | 20170717072754 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889F528B29F |
373 | 20160318115527 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F5BAEDEAF | 373 | 20170718103850 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889FB304F4F |
374 | 20160318183751 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F608FC39F | 374 | 20170718123146 2 6 100 8191 5 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C889FC58729F |
375 | 20160318220732 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F6315D9EB | 375 | 20170718203220 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88A012AA89B |
376 | 20160318231533 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F63E5739F | 376 | 20170718211015 2 6 100 8191 2 DDFBC1CD4FB7E30639422038F1FFBA2CD3EC3915F3C923282C6588F6EB218FF7B24870C0FE4B48213AB0948E101686FB7B0093ED467B6CA413EDD4B0BFE2155AEBC4DA3D2DD0C78DA9AD989A0E989010D6D5E86A123C169E126F97826EE5F602FF641FDF642A107E7538CB61740CBAF69F6C7DC5DD4DF28998AB61B8672F0B74A3A8DD7D165828D69DCC1BAE4D45F707C3894E040BCC0AF7AA810A6D5CB89276217EB7AFAFE4966D68C10318E8C8CB23CA593E8057F29FF9154908B11D6530E6352F9406C81D9DAC5C298979320B4E0DD89203A1F680C8084154D0439DB6C53EDAF6FCC0E8682EC99D345180120AEC810CBB0C2F1B6D1B660ACEAAD5996A5D184659B6A1F11456BA6A5E94D223959D8171C030499A9DB458702CB35CA7E7CD75D26FF5E94640AB8740ECE82559784BB6D5CB4D041D053629BD3F4178077F3F7E280296C46A3F0FBC37813A1AA221FBA2612F0CFE56450E9B1F2C2AE278EC7A7AAB66D61FA9749FE997EDC31131091620897014D33B2386B490CFD80656B7D2EB08C9DA9928798986996D60F74D766EB8988E2FF676E38C587E7A6651AA28BEB8BB56EBBD6E641E92309AEAA671A5F2EC72629442D2C3A4C2B8E4304DC71B342CD116527832078E6B53C1E0A72909615B408E17625F7259ACA98E46359448FC141F57B51A069B8A402AE3A87E10AE7E910F3916BAC6CE716C539E825A06626673DE7EBD899A3982FCC599791E7CA964C0D37BB076708C03DC7C022980974025C0EA9B72CC3D0A03E4626E030E9C857ECF6B3807AC9E8E0F72098C7E80DAA05BFF60394A8374096878F015597DD5B22E65646A7DDC87B5F6AE68594DF39B0BDB2675A32369AD81FD62033146B8DA6A801E918572CBC70DEBA9F70D088D69425733ACE0084E60E7FCB459A5B71F74F711184B1AEA240834D28D049474BB2E7ED1B17AA2B5EB7D274341456834320BE8FB245B1C2B84A096E7E40573FEB7C2997ED16C8C2C62409B8064398ED220FA82C59E53AD7E864C24473FCC7F017B897D5855F092A9428957467EFD93F67D3FA302C578328A9484CD0496CC83BEAC96504F9601DA2048D25BF43B5A69E46234A164D854B89DF1DEDC36F0304BA5FC035B27E782087C3EC0A81840A3EC042204C63F9698CC74A818428039B23664C409529C4EDD822DF77819805023795EE625D524F12824C1F1FE99546DF75107AFFF7D424C4C3FB3D0BDA2E9BC0D93603457FFE44FABEAB1E6B62223B201D42784731BEE11E0FF0BF29C930DAF913F974739800522E2B9C4094475A5F35AA92E2939E5719EB4EE19446ADC9ECC7EE6BAB5D264C9E74AB6DE856D541146048341EB51734A34E33EF8D929F645E23FD902CB5676DA9C84C9F46490710DC8CF2AA922252C3885CBD8D0CB1D176CAFEB46A625C56BE949F487C6E35E2CE481F024C88A0186FF33 |
377 | 20160319161235 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F7037DD73 | 377 | 20170719070720 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FA20B88F |
378 | 20160319230645 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F751E7BE3 | 378 | 20170719080355 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FABF2F5B |
379 | 20160320013744 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F76DF3D47 | 379 | 20170719081323 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FAD37237 |
380 | 20160320040506 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F789CABBF | 380 | 20170719083433 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FB0C1BEB |
381 | 20160321132428 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F8FC5A85B | 381 | 20170719124018 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225378FDE8D93F |
382 | 20160321160901 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F91961EDF | 382 | 20170720083815 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253790C2785C7 |
383 | 20160321181311 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F92F8EDBB | 383 | 20170720203303 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379147CF99B |
384 | 20160321224946 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F9615911F | 384 | 20170721064950 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253791BAF7AFB |
385 | 20160321230806 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F963FE5D3 | 385 | 20170721151849 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379217C124F |
386 | 20160322064427 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F9B60592B | 386 | 20170721220636 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379260D3263 |
387 | 20160322090339 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F9CE9AD5B | 387 | 20170722033935 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537929DAE9CB |
388 | 20160322103202 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F9DDFC97B | 388 | 20170722155118 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379320A3B27 |
389 | 20160322120630 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F9EE9F43F | 389 | 20170722181755 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537933A7A623 |
390 | 20160322130823 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27F9F927B4B | 390 | 20170722212038 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379359D2C63 |
391 | 20160322151455 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FA0F6C9EB | 391 | 20170722230812 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537936C5DA37 |
392 | 20160322151924 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FA0FAAD73 | 392 | 20170723005838 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537937F9469F |
393 | 20160323004347 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FA73E643F | 393 | 20170723041453 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253793A1DBF1B |
394 | 20160323011842 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FA794B363 | 394 | 20170723051250 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253793AB9FC9B |
395 | 20160323041407 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FA98073AF | 395 | 20170723112206 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253793EBF09F7 |
396 | 20160323042341 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FA992813B | 396 | 20170723140224 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253794072005B |
397 | 20160324042502 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FB9535E6F | 397 | 20170723170945 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379427689A7 |
398 | 20160324084810 2 6 100 8191 2 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FBC2024D3 | 398 | 20170724050156 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253794A23E407 |
399 | 20160324112528 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FBDCE47F7 | 399 | 20170724065019 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253794B47E553 |
400 | 20160324195325 2 6 100 8191 5 D8320CDE33443FD11E472910A82D580EF614A690CF5313E998A695702508351835AF6D1DF2FA7AF2F1B234CB85E4174D67D9A32B8CC58DAF6DCFD555275B1D038D5EAAC00E0396BFF8A3686F1BB5DADDEB3C5F12B02358C7A1249A01CB1AA2AB3FAC5FC95CB7D16A38DBCD11804212872394D9A2E2F2797A3062AC5AF0C0C57F5ABEF3608546608EC08F197CE2CCF0490875BE4BCF1BD35358AF5694217F2E3DE713800F3C4071622FDBAD20CAEBE2BA60C80DF012DA576EE24A753749C0BAD8707A2382B6E909FF0B8F4A304EEDB1BF04CA0747166981279FE69248AF0DD177702DA2DC709E301D7D6FE985A7D3F7A1678A9BEF306D6036F143806563C42ADFFD8D70595F0C60BA39F0D392CE7EF7CA57547DB2E35B0464FEC6F59F6095F93BD0A241589CAEE15E2226873D31876900E534999F1D2E23E7239FF679377580065A861D3E29FA7215979BDE039ED1FFED26CC2F5541C5CD907E81434EED0479D8737262CCB2807A70504088F23E72A3D949F37C2C8E957DC2FE64BB9CE028013270F42E022BA671F1670EBD20413453A3CF19F53A1A6BDE5D744E39BBF9377384AAF0FBAF475DD1067A2906244CB87F919159DDC71256A251F1BBA789B18D97602C9C1254A4443849C16E0CE2A7A0B6AA6F117788A92C1CB3F60E2C8E539840E3AF49B9248D3E1CAACB08B43146F07CC53D2573086ED062D108C9AC924F58265CCEF3731D39FE5D4F983EADD0E9F9D8B68D953AA9342B8604AFE7916E544D88870F2ED0AFC2CD0C47DD1E5F361004D97B5108D13CD127DEC8609FA2C65FF1714FD45F3B2B3809BAC06DFCA198B71B3929E2A7B62538E5B1B8B5024D8BB78438883911A6FCA870DB16F8F2DA46D9C611F785428A356B40C07B2B8A72E157E3497DE2982AAAE4D2D9F4368469A7AD4061AEE188DA4317D826721B9F9B1A361FECF0C725E0AB6F17C147D2C62A4D11989DB1503F85763FA3E4A49BAB6BDD05C95199158D421B115F40B124EE448803E07496DE7C2682D4AF433662978CFDCFAC88C9100C46CC16929A10E3082BCAD4444D59FE57717FB4BE8DE45F4D84716D204AC97CBA5A7824765636C571AD6780AAA7510E832EECC54D571A780F90BC6A1B54DE8CC83ECB797A9065CC9807CC99DD7638AFC500D05FD2EDEB795227CAA37EBBC04A37DF07762E0319F27B523282D11DEFD85A1DBA40C87EA1EA4D1B9B2A2FC34F9F5395AE51E3A994FE25C680022E5ABD19D11703C2CB6EEE1780F76FEA8601FAE9E27BC16F832BC16776609DC2B0E3D605E635258A95907A148D583B44E202BA4A48211DA3358B7B391B6F3AD0F84D9D7F97DFFA9D819C3D316A59173E8CA970240349A89E09F0A9B1A4B4C6FFCDD878A977BC9EB254318574C40C49D2DCE56FF803601E1752BE3824F94D0D66C1C5FDADCC9670BFC85C422811D27FC34000DF | 400 | 20170725032628 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA225379588A6BE3 |
401 | 20160325054405 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD3C9827F7 | 401 | 20170725142722 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253795F8CFE9B |
402 | 20160325073844 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD3DFD683B | 402 | 20170725192821 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537962B35BAB |
403 | 20160326035547 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD4D2BE973 | 403 | 20170726032919 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537967BE1D7F |
404 | 20160326072058 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD4FA14E4B | 404 | 20170726062511 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA22537969930233 |
405 | 20160326092507 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD511CC0FB | 405 | 20170726073958 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253796A4B8B7B |
406 | 20160326124028 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD537EA3E7 | 406 | 20170726144150 2 6 100 8191 5 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253796EA9D3DF |
407 | 20160326204702 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD595EF333 | 407 | 20170726150548 2 6 100 8191 2 D84B8E9B7259F34AA46062684AD05873FD407C5FA804FFBC429D0DED5B497259FFF7F3C26D7A4C21592FCD658B607A5BDE7C4EAA7F5A3B6B713EAEDD5D0D47029CF51556BAFBBC91819DDA500332F7CE6777565C34CE56ED26BFE90830291C460891DDFEBF4FFFE5F217602081211E73EEC97612AC2C9FE8988738F0DC0FD2241B3C54357109D82FAAB532DB9C18B53B543D43B533FD67E36547972674968EB83AEE7EFC9F2AAF2C610C452EEA89A4FF5089BA6922F35128A844F6350A70671DD53C205AC7A75A1659CD3E57D385AB0BD78AF14DC129B1172884F1FCF5D795B6031A2BEB2410948A422D21AD3A215C85720F5EE695E235E36832E0A559DACDBD2B7CA3A1317CA005A963B49E3337829C40974C70F47540D89AAE625A1FD110874DC13D6E7B5711021F0CFD94C46D87582EBFF78EB2412B6D91DC0250A0B805F5E3B096ACB247C2A247A39164337FB3CB818AD4A950E6347B801DA742E5B532F4FC48815AA62B894FDB23B6E4D448DB62713AA46CC33C7D83D60A44B2B70FE8D841A56A4150A01C82B19CB93AE0AAA65E765EFF95933AC55742E0240744158B9CEF9DA8E18C3736BC8894306BF86D9B927CD62252ABFD39A3B352168336404C6B5F0DB4AEE518069274266E0C424F45D487B500BC087F49B53B0FA822D306D8B272E66C035569FFF1A191D354728253419E5B49115B88EB94E8452A28A3D699E73709FFD95D30430D45B730AF36D90C4DF464241C059375E8215E02294DFEAF8169BF1B47F7EE6F6479CB772D552D604589CE0A80BF7C38AFB2D8111D02A11D02264E2D1634128E53835E5815A92C19027DD08493C23344883FA5F2802A67E586221E2E22DFB8C67D75903F7211D52D19DC92DAC9C2E55D5D23E4B316F4F36AE24526C0D7CB5D43A5FA64CD621E9BBEB44ADAC0FB50237872CF13E0008D4D8F3B53B7F97FF8FD71E7B6ECCE359F5FBF3F6128DFD062C1E1177C6DDB97CBB9ED8AF082BF55D2DDF76920020A8AFCA08235752DE7542237D273F0324767F297BD98F573642B54D55AAEDCD9A5DB65DDF24F1E52489E22A8CDB204653F03A45261E20C965772CC92D71AD8A9DCA1205CA72C3AE330CA9ABFC93BD4C0591279661736B131AE905D5EB899BED456FE76BE26C4700FDF3238999B250DEF64F155FED724D3E38BDCAAD31CAC112BF39F0BC0CD3A906BEA43676E126616B51546C9E282117163EA7B38F255797A803F663EA16485FE4A8C2510409D3B6EF809EAC2BF897277A17A9C6E58709B57591FDA62321CEC2F545FCDB0AEEAF33ED378707C81711E003F1E77EEEE292F61E37FDC2FC4F97CEA96E1A4FB8643A9F18C9D6780BC5B815E43AF81E3B1D47D68D5A559C194F35A143B9EAE147D975BEF88D55AF1408BC1705C02F112616D08BFE6A44C0EFAC373CBB557E4953C79ACAA2253796EE14A73 |
408 | 20160327004038 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD5C324F5B | ||
409 | 20160327062851 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD606E1A47 | ||
410 | 20160327081155 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD61A5005F | ||
411 | 20160327123555 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD64D2A70F | ||
412 | 20160327223323 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD6BD47A7B | ||
413 | 20160328011117 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD6DAD19BF | ||
414 | 20160328031621 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD6F1E5643 | ||
415 | 20160328081352 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD7291B183 | ||
416 | 20160328130100 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD75E7418B | ||
417 | 20160328200420 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD7AC63CBB | ||
418 | 20160328203420 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD7B12C7E3 | ||
419 | 20160329051003 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD80FE5033 | ||
420 | 20160329150013 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD87A1FCEB | ||
421 | 20160329205744 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD8BA2A65B | ||
422 | 20160330010039 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD8E545E13 | ||
423 | 20160330064620 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD922B39AB | ||
424 | 20160330195544 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD9AE926F7 | ||
425 | 20160330202118 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD9B2841A3 | ||
426 | 20160331010824 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DD9E522A6F | ||
427 | 20160331155606 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DDA80BFF2B | ||
428 | 20160401003202 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DDADA756E7 | ||
429 | 20160401083841 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DDB2E0BFC7 | ||
430 | 20160401133333 2 6 100 8191 5 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DDB612067F | ||
431 | 20160401171656 2 6 100 8191 2 E8E5A3AF93DBD4FB99E4325B3B9308AE7731E7E27B532A2D0AF5306CB249EF6C63C7DFB66FC19B8E84A5672B378D77DD413933ACA7F62EABCD4012865D9336A47AD7E596B21EA5B6A2695C0F6C1C70D92CFF3CA18522B29993AA0A43A6849CEFFF53DF7E33C833B5B0037D8906528C80F98C2FC22F0C43B933795D153ECD05FC0D734F4EC61BBBD611F61CACA7CEC4FEF72A127074ACF73A11B1004A954C48D18E74B534E318069C5CE76C1D9BBB0326432B3C39F26058B6D6077B562CBE0DCA4E5B53F1CF9B80EB4F40DA6DAADF924DD2E7A689321F1558FFB55DA7B91009767791BDA252285D117D45A77FF044F467273CDEA8D4B5AC83DBF16DDB8F5FA4C1556129FFF4213D199DE4E0996BAA284FEC13A86A9F81E7FEAD84B4C59CC6DD641ADDE2E74DEAAD096E53F1F9509BF4A5405BAE67B7A1107E685D6CB934A422673ED632BD91BF84758C9B504DBFF7835E36B038C74400C983452CFEE72FACF76D3AE196BA44DF804657B92D6B646DA47910E53FAE8979C1DA9120C672CD4AAD18A7BDBA2AD397F7B0E01AA7AF4700F9A83EDBA90D25F74C1DCE0520BA9DE24636629D0140BB4BC6C2A703103E5A234BBB9154AEBA22D48F8EBC37368CCC68DC6BA310E2060EC37BCA2BF7DBD68F951BB23D7C018DB2CBC74752F5CED8ECA04EC743A8F4B503831DB09C387F6BD3A7DF1A25BCA452FFB852B134B67CCE4B0141E84B3D796BFDE7BFB2C34760C64200D40728560598B6FB965C0187495318A6EE97E6648F476939AE82F3D9D51761652672CFB3263385219E41D9A26ECFD975AB2005F67B9B6DB6D72ACE42C5079C2E11BEF3B2C0B334E9D4C2EFE518AD4BB8C0A9A995F99B4625D570E283D41EB4542BA37ADCEB772E45F77A72071874CBF8E9C2022DB9FAB62BB8BB11F72416193D10F4A493BDD9FB68A3BADF8130AE380D1987CD5ECCD6D9F5AD2F219D0076964D17F2232E5DAACB832D6E54A0CDAE72302C52604675053C5ED83680DB1D5A2FB9D4885B61E29465FDC016B9CE5DD93582A7221167E77C194C6E7A6D00E98A3E0FBE3987B1C5C1562AE878FC14AC7458003F949665D92F4F01B7A511C9C9126B79E32258AD5BFAB38B91B710AFDD222312DB543EA712C60CF8C8C0C9A7968A9AED867EA11E9718D25EF8A21F18A2F2B3FB28944F8E049705ADC399296AFBA30228CC7AF6D39F49689A16FF5FD64F09A2233970885EB76AEF2650D9A16CA594A3C67F0640095D10FB6E818BDC512F36446FB7277480BA1947D49A8AB5D78965DB16F2E50BFD09910DB0DD99654A32E07C86CF1601D618E7B9D2745C4CFC983E3D48FFE5A08AA471B29DD0E7BBE6DC1DE82FF8988E76835D0E03C177945886DC273C9C91B8B0950E7619490125AFC453772CB66D45D3CEBA3AFA919AE4AEF42D36AF7EDC4C5F030B5720C82FB229E9DDB86F198B | ||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: moduli.c,v 1.31 2016/09/12 01:22:38 deraadt Exp $ */ | 1 | /* $OpenBSD: moduli.c,v 1.32 2017/12/08 03:45:52 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> |
@@ -412,8 +412,8 @@ gen_candidates(FILE *out, u_int32_t memory, u_int32_t power, BIGNUM *start) | |||
412 | 412 | ||
413 | time(&time_stop); | 413 | time(&time_stop); |
414 | 414 | ||
415 | logit("%.24s Sieved with %u small primes in %ld seconds", | 415 | logit("%.24s Sieved with %u small primes in %lld seconds", |
416 | ctime(&time_stop), largetries, (long) (time_stop - time_start)); | 416 | ctime(&time_stop), largetries, (long long)(time_stop - time_start)); |
417 | 417 | ||
418 | for (j = r = 0; j < largebits; j++) { | 418 | for (j = r = 0; j < largebits; j++) { |
419 | if (BIT_TEST(LargeSieve, j)) | 419 | if (BIT_TEST(LargeSieve, j)) |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: monitor.c,v 1.174 2017/10/02 19:33:20 djm Exp $ */ | 1 | /* $OpenBSD: monitor.c,v 1.180 2018/03/03 03:15:51 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> |
@@ -116,6 +116,7 @@ extern u_char session_id[]; | |||
116 | extern Buffer auth_debug; | 116 | extern Buffer auth_debug; |
117 | extern int auth_debug_init; | 117 | extern int auth_debug_init; |
118 | extern Buffer loginmsg; | 118 | extern Buffer loginmsg; |
119 | extern struct sshauthopt *auth_opts; /* XXX move to permanent ssh->authctxt? */ | ||
119 | 120 | ||
120 | /* State exported from the child */ | 121 | /* State exported from the child */ |
121 | static struct sshbuf *child_state; | 122 | static struct sshbuf *child_state; |
@@ -175,6 +176,7 @@ static Authctxt *authctxt; | |||
175 | static u_char *key_blob = NULL; | 176 | static u_char *key_blob = NULL; |
176 | static u_int key_bloblen = 0; | 177 | static u_int key_bloblen = 0; |
177 | static int key_blobtype = MM_NOKEY; | 178 | static int key_blobtype = MM_NOKEY; |
179 | static struct sshauthopt *key_opts = NULL; | ||
178 | static char *hostbased_cuser = NULL; | 180 | static char *hostbased_cuser = NULL; |
179 | static char *hostbased_chost = NULL; | 181 | static char *hostbased_chost = NULL; |
180 | static char *auth_method = "unknown"; | 182 | static char *auth_method = "unknown"; |
@@ -263,7 +265,6 @@ struct mon_table mon_dispatch_postauth20[] = { | |||
263 | struct mon_table *mon_dispatch; | 265 | struct mon_table *mon_dispatch; |
264 | 266 | ||
265 | /* Specifies if a certain message is allowed at the moment */ | 267 | /* Specifies if a certain message is allowed at the moment */ |
266 | |||
267 | static void | 268 | static void |
268 | monitor_permit(struct mon_table *ent, enum monitor_reqtype type, int permit) | 269 | monitor_permit(struct mon_table *ent, enum monitor_reqtype type, int permit) |
269 | { | 270 | { |
@@ -300,12 +301,15 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor) | |||
300 | 301 | ||
301 | debug3("preauth child monitor started"); | 302 | debug3("preauth child monitor started"); |
302 | 303 | ||
303 | close(pmonitor->m_recvfd); | 304 | if (pmonitor->m_recvfd >= 0) |
304 | close(pmonitor->m_log_sendfd); | 305 | close(pmonitor->m_recvfd); |
306 | if (pmonitor->m_log_sendfd >= 0) | ||
307 | close(pmonitor->m_log_sendfd); | ||
305 | pmonitor->m_log_sendfd = pmonitor->m_recvfd = -1; | 308 | pmonitor->m_log_sendfd = pmonitor->m_recvfd = -1; |
306 | 309 | ||
307 | authctxt = _authctxt; | 310 | authctxt = _authctxt; |
308 | memset(authctxt, 0, sizeof(*authctxt)); | 311 | memset(authctxt, 0, sizeof(*authctxt)); |
312 | ssh->authctxt = authctxt; | ||
309 | 313 | ||
310 | authctxt->loginmsg = &loginmsg; | 314 | authctxt->loginmsg = &loginmsg; |
311 | 315 | ||
@@ -344,7 +348,7 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor) | |||
344 | fatal("%s: unexpected authentication from %d", | 348 | fatal("%s: unexpected authentication from %d", |
345 | __func__, ent->type); | 349 | __func__, ent->type); |
346 | if (authctxt->pw->pw_uid == 0 && | 350 | if (authctxt->pw->pw_uid == 0 && |
347 | !auth_root_allowed(auth_method)) | 351 | !auth_root_allowed(ssh, auth_method)) |
348 | authenticated = 0; | 352 | authenticated = 0; |
349 | #ifdef USE_PAM | 353 | #ifdef USE_PAM |
350 | /* PAM needs to perform account checks after auth */ | 354 | /* PAM needs to perform account checks after auth */ |
@@ -378,6 +382,7 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor) | |||
378 | 382 | ||
379 | debug("%s: %s has been authenticated by privileged process", | 383 | debug("%s: %s has been authenticated by privileged process", |
380 | __func__, authctxt->user); | 384 | __func__, authctxt->user); |
385 | ssh->authctxt = NULL; | ||
381 | ssh_packet_set_log_preamble(ssh, "user %s", authctxt->user); | 386 | ssh_packet_set_log_preamble(ssh, "user %s", authctxt->user); |
382 | 387 | ||
383 | mm_get_keystate(pmonitor); | 388 | mm_get_keystate(pmonitor); |
@@ -386,8 +391,10 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor) | |||
386 | while (pmonitor->m_log_recvfd != -1 && monitor_read_log(pmonitor) == 0) | 391 | while (pmonitor->m_log_recvfd != -1 && monitor_read_log(pmonitor) == 0) |
387 | ; | 392 | ; |
388 | 393 | ||
389 | close(pmonitor->m_sendfd); | 394 | if (pmonitor->m_recvfd >= 0) |
390 | close(pmonitor->m_log_recvfd); | 395 | close(pmonitor->m_recvfd); |
396 | if (pmonitor->m_log_sendfd >= 0) | ||
397 | close(pmonitor->m_log_sendfd); | ||
391 | pmonitor->m_sendfd = pmonitor->m_log_recvfd = -1; | 398 | pmonitor->m_sendfd = pmonitor->m_log_recvfd = -1; |
392 | } | 399 | } |
393 | 400 | ||
@@ -428,7 +435,7 @@ monitor_child_postauth(struct monitor *pmonitor) | |||
428 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1); | 435 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1); |
429 | #endif | 436 | #endif |
430 | 437 | ||
431 | if (!no_pty_flag) { | 438 | if (auth_opts->permit_pty_flag) { |
432 | monitor_permit(mon_dispatch, MONITOR_REQ_PTY, 1); | 439 | monitor_permit(mon_dispatch, MONITOR_REQ_PTY, 1); |
433 | monitor_permit(mon_dispatch, MONITOR_REQ_PTYCLEANUP, 1); | 440 | monitor_permit(mon_dispatch, MONITOR_REQ_PTYCLEANUP, 1); |
434 | } | 441 | } |
@@ -573,9 +580,11 @@ monitor_reset_key_state(void) | |||
573 | free(key_blob); | 580 | free(key_blob); |
574 | free(hostbased_cuser); | 581 | free(hostbased_cuser); |
575 | free(hostbased_chost); | 582 | free(hostbased_chost); |
583 | sshauthopt_free(key_opts); | ||
576 | key_blob = NULL; | 584 | key_blob = NULL; |
577 | key_bloblen = 0; | 585 | key_bloblen = 0; |
578 | key_blobtype = MM_NOKEY; | 586 | key_blobtype = MM_NOKEY; |
587 | key_opts = NULL; | ||
579 | hostbased_cuser = NULL; | 588 | hostbased_cuser = NULL; |
580 | hostbased_chost = NULL; | 589 | hostbased_chost = NULL; |
581 | } | 590 | } |
@@ -779,12 +788,10 @@ mm_answer_pwnamallow(int sock, Buffer *m) | |||
779 | for (i = 0; i < options.nx; i++) \ | 788 | for (i = 0; i < options.nx; i++) \ |
780 | buffer_put_cstring(m, options.x[i]); \ | 789 | buffer_put_cstring(m, options.x[i]); \ |
781 | } while (0) | 790 | } while (0) |
782 | #define M_CP_STRARRAYOPT_ALLOC(x, nx) M_CP_STRARRAYOPT(x, nx) | ||
783 | /* See comment in servconf.h */ | 791 | /* See comment in servconf.h */ |
784 | COPY_MATCH_STRING_OPTS(); | 792 | COPY_MATCH_STRING_OPTS(); |
785 | #undef M_CP_STROPT | 793 | #undef M_CP_STROPT |
786 | #undef M_CP_STRARRAYOPT | 794 | #undef M_CP_STRARRAYOPT |
787 | #undef M_CP_STRARRAYOPT_ALLOC | ||
788 | 795 | ||
789 | /* Create valid auth method lists */ | 796 | /* Create valid auth method lists */ |
790 | if (auth2_setup_methods_lists(authctxt) != 0) { | 797 | if (auth2_setup_methods_lists(authctxt) != 0) { |
@@ -869,6 +876,7 @@ mm_answer_authrole(int sock, Buffer *m) | |||
869 | int | 876 | int |
870 | mm_answer_authpassword(int sock, Buffer *m) | 877 | mm_answer_authpassword(int sock, Buffer *m) |
871 | { | 878 | { |
879 | struct ssh *ssh = active_state; /* XXX */ | ||
872 | static int call_count; | 880 | static int call_count; |
873 | char *passwd; | 881 | char *passwd; |
874 | int authenticated; | 882 | int authenticated; |
@@ -879,7 +887,7 @@ mm_answer_authpassword(int sock, Buffer *m) | |||
879 | passwd = buffer_get_string(m, &plen); | 887 | passwd = buffer_get_string(m, &plen); |
880 | /* Only authenticate if the context is valid */ | 888 | /* Only authenticate if the context is valid */ |
881 | authenticated = options.password_authentication && | 889 | authenticated = options.password_authentication && |
882 | auth_password(authctxt, passwd); | 890 | auth_password(ssh, passwd); |
883 | explicit_bzero(passwd, strlen(passwd)); | 891 | explicit_bzero(passwd, strlen(passwd)); |
884 | free(passwd); | 892 | free(passwd); |
885 | 893 | ||
@@ -1170,15 +1178,16 @@ mm_answer_pam_free_ctx(int sock, Buffer *m) | |||
1170 | int | 1178 | int |
1171 | mm_answer_keyallowed(int sock, Buffer *m) | 1179 | mm_answer_keyallowed(int sock, Buffer *m) |
1172 | { | 1180 | { |
1181 | struct ssh *ssh = active_state; /* XXX */ | ||
1173 | struct sshkey *key; | 1182 | struct sshkey *key; |
1174 | char *cuser, *chost; | 1183 | char *cuser, *chost; |
1175 | u_char *blob; | 1184 | u_char *blob; |
1176 | u_int bloblen, pubkey_auth_attempt; | 1185 | u_int bloblen, pubkey_auth_attempt; |
1177 | enum mm_keytype type = 0; | 1186 | enum mm_keytype type = 0; |
1178 | int allowed = 0; | 1187 | int r, allowed = 0; |
1188 | struct sshauthopt *opts = NULL; | ||
1179 | 1189 | ||
1180 | debug3("%s entering", __func__); | 1190 | debug3("%s entering", __func__); |
1181 | |||
1182 | type = buffer_get_int(m); | 1191 | type = buffer_get_int(m); |
1183 | cuser = buffer_get_string(m, NULL); | 1192 | cuser = buffer_get_string(m, NULL); |
1184 | chost = buffer_get_string(m, NULL); | 1193 | chost = buffer_get_string(m, NULL); |
@@ -1197,28 +1206,31 @@ mm_answer_keyallowed(int sock, Buffer *m) | |||
1197 | 1206 | ||
1198 | switch (type) { | 1207 | switch (type) { |
1199 | case MM_USERKEY: | 1208 | case MM_USERKEY: |
1200 | allowed = options.pubkey_authentication && | ||
1201 | !auth2_key_already_used(authctxt, key) && | ||
1202 | match_pattern_list(sshkey_ssh_name(key), | ||
1203 | options.pubkey_key_types, 0) == 1 && | ||
1204 | user_key_allowed(authctxt->pw, key, | ||
1205 | pubkey_auth_attempt); | ||
1206 | auth_method = "publickey"; | 1209 | auth_method = "publickey"; |
1207 | if (options.pubkey_authentication && | 1210 | if (!options.pubkey_authentication) |
1208 | (!pubkey_auth_attempt || allowed != 1)) | 1211 | break; |
1209 | auth_clear_options(); | 1212 | if (auth2_key_already_used(authctxt, key)) |
1213 | break; | ||
1214 | if (match_pattern_list(sshkey_ssh_name(key), | ||
1215 | options.pubkey_key_types, 0) != 1) | ||
1216 | break; | ||
1217 | allowed = user_key_allowed(ssh, authctxt->pw, key, | ||
1218 | pubkey_auth_attempt, &opts); | ||
1210 | break; | 1219 | break; |
1211 | case MM_HOSTKEY: | 1220 | case MM_HOSTKEY: |
1212 | allowed = options.hostbased_authentication && | 1221 | auth_method = "hostbased"; |
1213 | !auth2_key_already_used(authctxt, key) && | 1222 | if (!options.hostbased_authentication) |
1214 | match_pattern_list(sshkey_ssh_name(key), | 1223 | break; |
1215 | options.hostbased_key_types, 0) == 1 && | 1224 | if (auth2_key_already_used(authctxt, key)) |
1216 | hostbased_key_allowed(authctxt->pw, | 1225 | break; |
1226 | if (match_pattern_list(sshkey_ssh_name(key), | ||
1227 | options.hostbased_key_types, 0) != 1) | ||
1228 | break; | ||
1229 | allowed = hostbased_key_allowed(authctxt->pw, | ||
1217 | cuser, chost, key); | 1230 | cuser, chost, key); |
1218 | auth2_record_info(authctxt, | 1231 | auth2_record_info(authctxt, |
1219 | "client user \"%.100s\", client host \"%.100s\"", | 1232 | "client user \"%.100s\", client host \"%.100s\"", |
1220 | cuser, chost); | 1233 | cuser, chost); |
1221 | auth_method = "hostbased"; | ||
1222 | break; | 1234 | break; |
1223 | default: | 1235 | default: |
1224 | fatal("%s: unknown key type %d", __func__, type); | 1236 | fatal("%s: unknown key type %d", __func__, type); |
@@ -1226,7 +1238,10 @@ mm_answer_keyallowed(int sock, Buffer *m) | |||
1226 | } | 1238 | } |
1227 | } | 1239 | } |
1228 | 1240 | ||
1229 | debug3("%s: key is %s", __func__, allowed ? "allowed" : "not allowed"); | 1241 | debug3("%s: %s authentication%s: %s key is %s", __func__, |
1242 | auth_method, pubkey_auth_attempt ? "" : " test", | ||
1243 | (key == NULL || !authctxt->valid) ? "invalid" : sshkey_type(key), | ||
1244 | allowed ? "allowed" : "not allowed"); | ||
1230 | 1245 | ||
1231 | auth2_record_key(authctxt, 0, key); | 1246 | auth2_record_key(authctxt, 0, key); |
1232 | sshkey_free(key); | 1247 | sshkey_free(key); |
@@ -1239,6 +1254,7 @@ mm_answer_keyallowed(int sock, Buffer *m) | |||
1239 | key_blob = blob; | 1254 | key_blob = blob; |
1240 | key_bloblen = bloblen; | 1255 | key_bloblen = bloblen; |
1241 | key_blobtype = type; | 1256 | key_blobtype = type; |
1257 | key_opts = opts; | ||
1242 | hostbased_cuser = cuser; | 1258 | hostbased_cuser = cuser; |
1243 | hostbased_chost = chost; | 1259 | hostbased_chost = chost; |
1244 | } else { | 1260 | } else { |
@@ -1251,10 +1267,13 @@ mm_answer_keyallowed(int sock, Buffer *m) | |||
1251 | 1267 | ||
1252 | buffer_clear(m); | 1268 | buffer_clear(m); |
1253 | buffer_put_int(m, allowed); | 1269 | buffer_put_int(m, allowed); |
1254 | buffer_put_int(m, forced_command != NULL); | 1270 | if (opts != NULL && (r = sshauthopt_serialise(opts, m, 1)) != 0) |
1255 | 1271 | fatal("%s: sshauthopt_serialise: %s", __func__, ssh_err(r)); | |
1256 | mm_request_send(sock, MONITOR_ANS_KEYALLOWED, m); | 1272 | mm_request_send(sock, MONITOR_ANS_KEYALLOWED, m); |
1257 | 1273 | ||
1274 | if (!allowed) | ||
1275 | sshauthopt_free(opts); | ||
1276 | |||
1258 | return (0); | 1277 | return (0); |
1259 | } | 1278 | } |
1260 | 1279 | ||
@@ -1300,18 +1319,13 @@ monitor_valid_userblob(u_char *data, u_int datalen) | |||
1300 | free(userstyle); | 1319 | free(userstyle); |
1301 | free(cp); | 1320 | free(cp); |
1302 | buffer_skip_string(&b); | 1321 | buffer_skip_string(&b); |
1303 | if (datafellows & SSH_BUG_PKAUTH) { | 1322 | cp = buffer_get_cstring(&b, NULL); |
1304 | if (!buffer_get_char(&b)) | 1323 | if (strcmp("publickey", cp) != 0) |
1305 | fail++; | 1324 | fail++; |
1306 | } else { | 1325 | free(cp); |
1307 | cp = buffer_get_cstring(&b, NULL); | 1326 | if (!buffer_get_char(&b)) |
1308 | if (strcmp("publickey", cp) != 0) | 1327 | fail++; |
1309 | fail++; | 1328 | buffer_skip_string(&b); |
1310 | free(cp); | ||
1311 | if (!buffer_get_char(&b)) | ||
1312 | fail++; | ||
1313 | buffer_skip_string(&b); | ||
1314 | } | ||
1315 | buffer_skip_string(&b); | 1329 | buffer_skip_string(&b); |
1316 | if (buffer_len(&b) != 0) | 1330 | if (buffer_len(&b) != 0) |
1317 | fail++; | 1331 | fail++; |
@@ -1382,20 +1396,29 @@ monitor_valid_hostbasedblob(u_char *data, u_int datalen, char *cuser, | |||
1382 | int | 1396 | int |
1383 | mm_answer_keyverify(int sock, struct sshbuf *m) | 1397 | mm_answer_keyverify(int sock, struct sshbuf *m) |
1384 | { | 1398 | { |
1399 | struct ssh *ssh = active_state; /* XXX */ | ||
1385 | struct sshkey *key; | 1400 | struct sshkey *key; |
1386 | u_char *signature, *data, *blob; | 1401 | u_char *signature, *data, *blob; |
1402 | char *sigalg; | ||
1387 | size_t signaturelen, datalen, bloblen; | 1403 | size_t signaturelen, datalen, bloblen; |
1388 | int r, ret, valid_data = 0, encoded_ret; | 1404 | int r, ret, valid_data = 0, encoded_ret; |
1389 | 1405 | ||
1390 | if ((r = sshbuf_get_string(m, &blob, &bloblen)) != 0 || | 1406 | if ((r = sshbuf_get_string(m, &blob, &bloblen)) != 0 || |
1391 | (r = sshbuf_get_string(m, &signature, &signaturelen)) != 0 || | 1407 | (r = sshbuf_get_string(m, &signature, &signaturelen)) != 0 || |
1392 | (r = sshbuf_get_string(m, &data, &datalen)) != 0) | 1408 | (r = sshbuf_get_string(m, &data, &datalen)) != 0 || |
1409 | (r = sshbuf_get_cstring(m, &sigalg, NULL)) != 0) | ||
1393 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | 1410 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
1394 | 1411 | ||
1395 | if (hostbased_cuser == NULL || hostbased_chost == NULL || | 1412 | if (hostbased_cuser == NULL || hostbased_chost == NULL || |
1396 | !monitor_allowed_key(blob, bloblen)) | 1413 | !monitor_allowed_key(blob, bloblen)) |
1397 | fatal("%s: bad key, not previously allowed", __func__); | 1414 | fatal("%s: bad key, not previously allowed", __func__); |
1398 | 1415 | ||
1416 | /* Empty signature algorithm means NULL. */ | ||
1417 | if (*sigalg == '\0') { | ||
1418 | free(sigalg); | ||
1419 | sigalg = NULL; | ||
1420 | } | ||
1421 | |||
1399 | /* XXX use sshkey_froms here; need to change key_blob, etc. */ | 1422 | /* XXX use sshkey_froms here; need to change key_blob, etc. */ |
1400 | if ((r = sshkey_from_blob(blob, bloblen, &key)) != 0) | 1423 | if ((r = sshkey_from_blob(blob, bloblen, &key)) != 0) |
1401 | fatal("%s: bad public key blob: %s", __func__, ssh_err(r)); | 1424 | fatal("%s: bad public key blob: %s", __func__, ssh_err(r)); |
@@ -1418,7 +1441,7 @@ mm_answer_keyverify(int sock, struct sshbuf *m) | |||
1418 | fatal("%s: bad signature data blob", __func__); | 1441 | fatal("%s: bad signature data blob", __func__); |
1419 | 1442 | ||
1420 | ret = sshkey_verify(key, signature, signaturelen, data, datalen, | 1443 | ret = sshkey_verify(key, signature, signaturelen, data, datalen, |
1421 | active_state->compat); | 1444 | sigalg, active_state->compat); |
1422 | debug3("%s: %s %p signature %s", __func__, auth_method, key, | 1445 | debug3("%s: %s %p signature %s", __func__, auth_method, key, |
1423 | (ret == 0) ? "verified" : "unverified"); | 1446 | (ret == 0) ? "verified" : "unverified"); |
1424 | auth2_record_key(authctxt, ret == 0, key); | 1447 | auth2_record_key(authctxt, ret == 0, key); |
@@ -1426,7 +1449,10 @@ mm_answer_keyverify(int sock, struct sshbuf *m) | |||
1426 | free(blob); | 1449 | free(blob); |
1427 | free(signature); | 1450 | free(signature); |
1428 | free(data); | 1451 | free(data); |
1452 | free(sigalg); | ||
1429 | 1453 | ||
1454 | if (key_blobtype == MM_USERKEY) | ||
1455 | auth_activate_options(ssh, key_opts); | ||
1430 | monitor_reset_key_state(); | 1456 | monitor_reset_key_state(); |
1431 | 1457 | ||
1432 | sshkey_free(key); | 1458 | sshkey_free(key); |
diff --git a/monitor_wrap.c b/monitor_wrap.c index d806bb2e7..7b2d06c65 100644 --- a/monitor_wrap.c +++ b/monitor_wrap.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: monitor_wrap.c,v 1.94 2017/10/02 19:33:20 djm Exp $ */ | 1 | /* $OpenBSD: monitor_wrap.c,v 1.99 2018/03/03 03:15:51 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> |
@@ -76,7 +76,6 @@ | |||
76 | #include "atomicio.h" | 76 | #include "atomicio.h" |
77 | #include "monitor_fdpass.h" | 77 | #include "monitor_fdpass.h" |
78 | #include "misc.h" | 78 | #include "misc.h" |
79 | #include "uuencode.h" | ||
80 | 79 | ||
81 | #include "channels.h" | 80 | #include "channels.h" |
82 | #include "session.h" | 81 | #include "session.h" |
@@ -287,19 +286,15 @@ out: | |||
287 | newopts->x = buffer_get_string(&m, NULL); \ | 286 | newopts->x = buffer_get_string(&m, NULL); \ |
288 | } while (0) | 287 | } while (0) |
289 | #define M_CP_STRARRAYOPT(x, nx) do { \ | 288 | #define M_CP_STRARRAYOPT(x, nx) do { \ |
290 | for (i = 0; i < newopts->nx; i++) \ | ||
291 | newopts->x[i] = buffer_get_string(&m, NULL); \ | ||
292 | } while (0) | ||
293 | #define M_CP_STRARRAYOPT_ALLOC(x, nx) do { \ | ||
294 | newopts->x = newopts->nx == 0 ? \ | 289 | newopts->x = newopts->nx == 0 ? \ |
295 | NULL : xcalloc(newopts->nx, sizeof(*newopts->x)); \ | 290 | NULL : xcalloc(newopts->nx, sizeof(*newopts->x)); \ |
296 | M_CP_STRARRAYOPT(x, nx); \ | 291 | for (i = 0; i < newopts->nx; i++) \ |
292 | newopts->x[i] = buffer_get_string(&m, NULL); \ | ||
297 | } while (0) | 293 | } while (0) |
298 | /* See comment in servconf.h */ | 294 | /* See comment in servconf.h */ |
299 | COPY_MATCH_STRING_OPTS(); | 295 | COPY_MATCH_STRING_OPTS(); |
300 | #undef M_CP_STROPT | 296 | #undef M_CP_STROPT |
301 | #undef M_CP_STRARRAYOPT | 297 | #undef M_CP_STRARRAYOPT |
302 | #undef M_CP_STRARRAYOPT_ALLOC | ||
303 | 298 | ||
304 | copy_set_server_options(&options, newopts, 1); | 299 | copy_set_server_options(&options, newopts, 1); |
305 | log_change_level(options.log_level); | 300 | log_change_level(options.log_level); |
@@ -374,7 +369,7 @@ mm_inform_authrole(char *role) | |||
374 | 369 | ||
375 | /* Do the password authentication */ | 370 | /* Do the password authentication */ |
376 | int | 371 | int |
377 | mm_auth_password(Authctxt *authctxt, char *password) | 372 | mm_auth_password(struct ssh *ssh, char *password) |
378 | { | 373 | { |
379 | Buffer m; | 374 | Buffer m; |
380 | int authenticated = 0; | 375 | int authenticated = 0; |
@@ -401,34 +396,38 @@ mm_auth_password(Authctxt *authctxt, char *password) | |||
401 | } | 396 | } |
402 | 397 | ||
403 | int | 398 | int |
404 | mm_user_key_allowed(struct passwd *pw, struct sshkey *key, | 399 | mm_user_key_allowed(struct ssh *ssh, struct passwd *pw, struct sshkey *key, |
405 | int pubkey_auth_attempt) | 400 | int pubkey_auth_attempt, struct sshauthopt **authoptp) |
406 | { | 401 | { |
407 | return (mm_key_allowed(MM_USERKEY, NULL, NULL, key, | 402 | return (mm_key_allowed(MM_USERKEY, NULL, NULL, key, |
408 | pubkey_auth_attempt)); | 403 | pubkey_auth_attempt, authoptp)); |
409 | } | 404 | } |
410 | 405 | ||
411 | int | 406 | int |
412 | mm_hostbased_key_allowed(struct passwd *pw, const char *user, const char *host, | 407 | mm_hostbased_key_allowed(struct passwd *pw, const char *user, const char *host, |
413 | struct sshkey *key) | 408 | struct sshkey *key) |
414 | { | 409 | { |
415 | return (mm_key_allowed(MM_HOSTKEY, user, host, key, 0)); | 410 | return (mm_key_allowed(MM_HOSTKEY, user, host, key, 0, NULL)); |
416 | } | 411 | } |
417 | 412 | ||
418 | int | 413 | int |
419 | mm_key_allowed(enum mm_keytype type, const char *user, const char *host, | 414 | mm_key_allowed(enum mm_keytype type, const char *user, const char *host, |
420 | struct sshkey *key, int pubkey_auth_attempt) | 415 | struct sshkey *key, int pubkey_auth_attempt, struct sshauthopt **authoptp) |
421 | { | 416 | { |
422 | Buffer m; | 417 | Buffer m; |
423 | u_char *blob; | 418 | u_char *blob; |
424 | u_int len; | 419 | u_int len; |
425 | int allowed = 0, have_forced = 0; | 420 | int r, allowed = 0; |
421 | struct sshauthopt *opts = NULL; | ||
426 | 422 | ||
427 | debug3("%s entering", __func__); | 423 | debug3("%s entering", __func__); |
428 | 424 | ||
425 | if (authoptp != NULL) | ||
426 | *authoptp = NULL; | ||
427 | |||
429 | /* Convert the key to a blob and the pass it over */ | 428 | /* Convert the key to a blob and the pass it over */ |
430 | if (!key_to_blob(key, &blob, &len)) | 429 | if (!key_to_blob(key, &blob, &len)) |
431 | return (0); | 430 | return 0; |
432 | 431 | ||
433 | buffer_init(&m); | 432 | buffer_init(&m); |
434 | buffer_put_int(&m, type); | 433 | buffer_put_int(&m, type); |
@@ -441,18 +440,24 @@ mm_key_allowed(enum mm_keytype type, const char *user, const char *host, | |||
441 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, &m); | 440 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYALLOWED, &m); |
442 | 441 | ||
443 | debug3("%s: waiting for MONITOR_ANS_KEYALLOWED", __func__); | 442 | debug3("%s: waiting for MONITOR_ANS_KEYALLOWED", __func__); |
444 | mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_KEYALLOWED, &m); | 443 | mm_request_receive_expect(pmonitor->m_recvfd, |
444 | MONITOR_ANS_KEYALLOWED, &m); | ||
445 | 445 | ||
446 | allowed = buffer_get_int(&m); | 446 | allowed = buffer_get_int(&m); |
447 | 447 | if (allowed && type == MM_USERKEY) { | |
448 | /* fake forced command */ | 448 | if ((r = sshauthopt_deserialise(&m, &opts)) != 0) |
449 | auth_clear_options(); | 449 | fatal("%s: sshauthopt_deserialise: %s", |
450 | have_forced = buffer_get_int(&m); | 450 | __func__, ssh_err(r)); |
451 | forced_command = have_forced ? xstrdup("true") : NULL; | 451 | } |
452 | |||
453 | buffer_free(&m); | 452 | buffer_free(&m); |
454 | 453 | ||
455 | return (allowed); | 454 | if (authoptp != NULL) { |
455 | *authoptp = opts; | ||
456 | opts = NULL; | ||
457 | } | ||
458 | sshauthopt_free(opts); | ||
459 | |||
460 | return allowed; | ||
456 | } | 461 | } |
457 | 462 | ||
458 | /* | 463 | /* |
@@ -463,7 +468,7 @@ mm_key_allowed(enum mm_keytype type, const char *user, const char *host, | |||
463 | 468 | ||
464 | int | 469 | int |
465 | mm_sshkey_verify(const struct sshkey *key, const u_char *sig, size_t siglen, | 470 | mm_sshkey_verify(const struct sshkey *key, const u_char *sig, size_t siglen, |
466 | const u_char *data, size_t datalen, u_int compat) | 471 | const u_char *data, size_t datalen, const char *sigalg, u_int compat) |
467 | { | 472 | { |
468 | Buffer m; | 473 | Buffer m; |
469 | u_char *blob; | 474 | u_char *blob; |
@@ -480,6 +485,7 @@ mm_sshkey_verify(const struct sshkey *key, const u_char *sig, size_t siglen, | |||
480 | buffer_put_string(&m, blob, len); | 485 | buffer_put_string(&m, blob, len); |
481 | buffer_put_string(&m, sig, siglen); | 486 | buffer_put_string(&m, sig, siglen); |
482 | buffer_put_string(&m, data, datalen); | 487 | buffer_put_string(&m, data, datalen); |
488 | buffer_put_cstring(&m, sigalg == NULL ? "" : sigalg); | ||
483 | free(blob); | 489 | free(blob); |
484 | 490 | ||
485 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYVERIFY, &m); | 491 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_KEYVERIFY, &m); |
diff --git a/monitor_wrap.h b/monitor_wrap.h index a9ccb243e..492de5c85 100644 --- a/monitor_wrap.h +++ b/monitor_wrap.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: monitor_wrap.h,v 1.35 2017/05/31 08:09:45 markus Exp $ */ | 1 | /* $OpenBSD: monitor_wrap.h,v 1.37 2018/03/03 03:15:51 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> | 4 | * Copyright 2002 Niels Provos <provos@citi.umich.edu> |
@@ -35,6 +35,8 @@ enum mm_keytype { MM_NOKEY, MM_HOSTKEY, MM_USERKEY }; | |||
35 | 35 | ||
36 | struct monitor; | 36 | struct monitor; |
37 | struct Authctxt; | 37 | struct Authctxt; |
38 | struct sshkey; | ||
39 | struct sshauthopt; | ||
38 | 40 | ||
39 | void mm_log_handler(LogLevel, const char *, void *); | 41 | void mm_log_handler(LogLevel, const char *, void *); |
40 | int mm_is_monitor(void); | 42 | int mm_is_monitor(void); |
@@ -45,14 +47,15 @@ void mm_inform_authserv(char *, char *, char *); | |||
45 | void mm_inform_authrole(char *); | 47 | void mm_inform_authrole(char *); |
46 | struct passwd *mm_getpwnamallow(const char *); | 48 | struct passwd *mm_getpwnamallow(const char *); |
47 | char *mm_auth2_read_banner(void); | 49 | char *mm_auth2_read_banner(void); |
48 | int mm_auth_password(struct Authctxt *, char *); | 50 | int mm_auth_password(struct ssh *, char *); |
49 | int mm_key_allowed(enum mm_keytype, const char *, const char *, struct sshkey *, | 51 | int mm_key_allowed(enum mm_keytype, const char *, const char *, struct sshkey *, |
50 | int); | 52 | int, struct sshauthopt **); |
51 | int mm_user_key_allowed(struct passwd *, struct sshkey *, int); | 53 | int mm_user_key_allowed(struct ssh *, struct passwd *, struct sshkey *, int, |
54 | struct sshauthopt **); | ||
52 | int mm_hostbased_key_allowed(struct passwd *, const char *, | 55 | int mm_hostbased_key_allowed(struct passwd *, const char *, |
53 | const char *, struct sshkey *); | 56 | const char *, struct sshkey *); |
54 | int mm_sshkey_verify(const struct sshkey *, const u_char *, size_t, | 57 | int mm_sshkey_verify(const struct sshkey *, const u_char *, size_t, |
55 | const u_char *, size_t, u_int); | 58 | const u_char *, size_t, const char *, u_int); |
56 | 59 | ||
57 | #ifdef GSSAPI | 60 | #ifdef GSSAPI |
58 | OM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **, gss_OID); | 61 | OM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **, gss_OID); |
@@ -1,3 +1,4 @@ | |||
1 | /* $OpenBSD: opacket.c,v 1.7 2017/10/20 01:56:39 djm Exp $ */ | ||
1 | /* Written by Markus Friedl. Placed in the public domain. */ | 2 | /* Written by Markus Friedl. Placed in the public domain. */ |
2 | 3 | ||
3 | #include "includes.h" | 4 | #include "includes.h" |
@@ -1,3 +1,4 @@ | |||
1 | /* $OpenBSD: opacket.h,v 1.12 2017/10/20 01:56:39 djm Exp $ */ | ||
1 | #ifndef _OPACKET_H | 2 | #ifndef _OPACKET_H |
2 | /* Written by Markus Friedl. Placed in the public domain. */ | 3 | /* Written by Markus Friedl. Placed in the public domain. */ |
3 | 4 | ||
diff --git a/openbsd-compat/Makefile.in b/openbsd-compat/Makefile.in index ac8ae4305..8e3b42991 100644 --- a/openbsd-compat/Makefile.in +++ b/openbsd-compat/Makefile.in | |||
@@ -1,5 +1,3 @@ | |||
1 | # $Id: Makefile.in,v 1.56 2014/09/30 23:43:08 djm Exp $ | ||
2 | |||
3 | sysconfdir=@sysconfdir@ | 1 | sysconfdir=@sysconfdir@ |
4 | piddir=@piddir@ | 2 | piddir=@piddir@ |
5 | srcdir=@srcdir@ | 3 | srcdir=@srcdir@ |
@@ -16,11 +14,84 @@ RANLIB=@RANLIB@ | |||
16 | INSTALL=@INSTALL@ | 14 | INSTALL=@INSTALL@ |
17 | LDFLAGS=-L. @LDFLAGS@ | 15 | LDFLAGS=-L. @LDFLAGS@ |
18 | 16 | ||
19 | OPENBSD=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 recallocarray.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 freezero.o | 17 | OPENBSD=base64.o \ |
18 | basename.o \ | ||
19 | bcrypt_pbkdf.o \ | ||
20 | bcrypt_pbkdf.o \ | ||
21 | bindresvport.o \ | ||
22 | blowfish.o \ | ||
23 | daemon.o \ | ||
24 | dirname.o \ | ||
25 | explicit_bzero.o \ | ||
26 | fmt_scaled.o \ | ||
27 | freezero.o \ | ||
28 | getcwd.o \ | ||
29 | getgrouplist.o \ | ||
30 | getopt_long.o \ | ||
31 | getrrsetbyname.o \ | ||
32 | glob.o \ | ||
33 | inet_aton.o \ | ||
34 | inet_ntoa.o \ | ||
35 | inet_ntop.o \ | ||
36 | md5.o \ | ||
37 | mktemp.o \ | ||
38 | pwcache.o \ | ||
39 | readpassphrase.o \ | ||
40 | reallocarray.o \ | ||
41 | realpath.o \ | ||
42 | recallocarray.o \ | ||
43 | rmd160.o \ | ||
44 | rresvport.o \ | ||
45 | setenv.o \ | ||
46 | setproctitle.o \ | ||
47 | sha1.o \ | ||
48 | sha2.o \ | ||
49 | sigact.o \ | ||
50 | strcasestr.o \ | ||
51 | strlcat.o \ | ||
52 | strlcpy.o \ | ||
53 | strmode.o \ | ||
54 | strndup.o \ | ||
55 | strnlen.o \ | ||
56 | strptime.o \ | ||
57 | strsep.o \ | ||
58 | strtoll.o \ | ||
59 | strtonum.o \ | ||
60 | strtoull.o \ | ||
61 | strtoul.o \ | ||
62 | timingsafe_bcmp.o \ | ||
63 | vis.o | ||
20 | 64 | ||
21 | COMPAT=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-getpagesize.o bsd-misc.o bsd-nextstep.o bsd-openpty.o bsd-poll.o bsd-malloc.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 | 65 | COMPAT= arc4random.o \ |
66 | bsd-asprintf.o \ | ||
67 | bsd-closefrom.o \ | ||
68 | bsd-cygwin_util.o \ | ||
69 | bsd-err.o \ | ||
70 | bsd-flock.o \ | ||
71 | bsd-getpagesize.o \ | ||
72 | bsd-getpeereid.o \ | ||
73 | bsd-malloc.o \ | ||
74 | bsd-misc.o \ | ||
75 | bsd-nextstep.o \ | ||
76 | bsd-openpty.o \ | ||
77 | bsd-poll.o \ | ||
78 | bsd-setres_id.o \ | ||
79 | bsd-signal.o \ | ||
80 | bsd-snprintf.o \ | ||
81 | bsd-statvfs.o \ | ||
82 | bsd-waitpid.o \ | ||
83 | fake-rfc2553.o \ | ||
84 | getrrsetbyname-ldns.o \ | ||
85 | kludge-fd_set.o \ | ||
86 | openssl-compat.o \ | ||
87 | xcrypt.o | ||
22 | 88 | ||
23 | PORTS=port-aix.o port-irix.o port-linux.o port-solaris.o port-tun.o port-uw.o | 89 | PORTS= port-aix.o \ |
90 | port-irix.o \ | ||
91 | port-linux.o \ | ||
92 | port-solaris.o \ | ||
93 | port-net.o \ | ||
94 | port-uw.o | ||
24 | 95 | ||
25 | .c.o: | 96 | .c.o: |
26 | $(CC) $(CFLAGS) $(CPPFLAGS) -c $< | 97 | $(CC) $(CFLAGS) $(CPPFLAGS) -c $< |
diff --git a/openbsd-compat/bsd-cray.c b/openbsd-compat/bsd-cray.c deleted file mode 100644 index c02e63261..000000000 --- a/openbsd-compat/bsd-cray.c +++ /dev/null | |||
@@ -1,816 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | * bsd-cray.c | ||
4 | * | ||
5 | * Copyright (c) 2002, Cray Inc. (Wendy Palm <wendyp@cray.com>) | ||
6 | * Significant portions provided by | ||
7 | * Wayne Schroeder, SDSC <schroeder@sdsc.edu> | ||
8 | * William Jones, UTexas <jones@tacc.utexas.edu> | ||
9 | * | ||
10 | * Redistribution and use in source and binary forms, with or without | ||
11 | * modification, are permitted provided that the following conditions | ||
12 | * are met: | ||
13 | * 1. Redistributions of source code must retain the above copyright | ||
14 | * notice, this list of conditions and the following disclaimer. | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in the | ||
17 | * documentation and/or other materials provided with the distribution. | ||
18 | * | ||
19 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | ||
20 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
21 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||
22 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
23 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
24 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
25 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
26 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
27 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
28 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
29 | * | ||
30 | * Created: Apr 22 16.34:00 2002 wp | ||
31 | * | ||
32 | * This file contains functions required for proper execution | ||
33 | * on UNICOS systems. | ||
34 | * | ||
35 | */ | ||
36 | #ifdef _UNICOS | ||
37 | |||
38 | #include <udb.h> | ||
39 | #include <tmpdir.h> | ||
40 | #include <unistd.h> | ||
41 | #include <sys/category.h> | ||
42 | #include <utmp.h> | ||
43 | #include <sys/jtab.h> | ||
44 | #include <signal.h> | ||
45 | #include <sys/priv.h> | ||
46 | #include <sys/secparm.h> | ||
47 | #include <sys/tfm.h> | ||
48 | #include <sys/usrv.h> | ||
49 | #include <sys/sysv.h> | ||
50 | #include <sys/sectab.h> | ||
51 | #include <sys/secstat.h> | ||
52 | #include <sys/stat.h> | ||
53 | #include <sys/session.h> | ||
54 | #include <stdarg.h> | ||
55 | #include <stdlib.h> | ||
56 | #include <string.h> | ||
57 | #include <unistd.h> | ||
58 | #include <pwd.h> | ||
59 | #include <fcntl.h> | ||
60 | #include <errno.h> | ||
61 | #include <ia.h> | ||
62 | #include <urm.h> | ||
63 | #include "ssh.h" | ||
64 | |||
65 | #include "includes.h" | ||
66 | #include "sys/types.h" | ||
67 | |||
68 | #ifndef HAVE_STRUCT_SOCKADDR_STORAGE | ||
69 | # define _SS_MAXSIZE 128 /* Implementation specific max size */ | ||
70 | # define _SS_PADSIZE (_SS_MAXSIZE - sizeof (struct sockaddr)) | ||
71 | |||
72 | # define ss_family ss_sa.sa_family | ||
73 | #endif /* !HAVE_STRUCT_SOCKADDR_STORAGE */ | ||
74 | |||
75 | #ifndef IN6_IS_ADDR_LOOPBACK | ||
76 | # define IN6_IS_ADDR_LOOPBACK(a) \ | ||
77 | (((u_int32_t *) (a))[0] == 0 && ((u_int32_t *) (a))[1] == 0 && \ | ||
78 | ((u_int32_t *) (a))[2] == 0 && ((u_int32_t *) (a))[3] == htonl (1)) | ||
79 | #endif /* !IN6_IS_ADDR_LOOPBACK */ | ||
80 | |||
81 | #ifndef AF_INET6 | ||
82 | /* Define it to something that should never appear */ | ||
83 | #define AF_INET6 AF_MAX | ||
84 | #endif | ||
85 | |||
86 | #include "log.h" | ||
87 | #include "servconf.h" | ||
88 | #include "bsd-cray.h" | ||
89 | |||
90 | #define MAXACID 80 | ||
91 | |||
92 | extern ServerOptions options; | ||
93 | |||
94 | char cray_tmpdir[TPATHSIZ + 1]; /* job TMPDIR path */ | ||
95 | |||
96 | struct sysv sysv; /* system security structure */ | ||
97 | struct usrv usrv; /* user security structure */ | ||
98 | |||
99 | /* | ||
100 | * Functions. | ||
101 | */ | ||
102 | void cray_retain_utmp(struct utmp *, int); | ||
103 | void cray_delete_tmpdir(char *, int, uid_t); | ||
104 | void cray_init_job(struct passwd *); | ||
105 | void cray_set_tmpdir(struct utmp *); | ||
106 | void cray_login_failure(char *, int); | ||
107 | int cray_setup(uid_t, char *, const char *); | ||
108 | int cray_access_denied(char *); | ||
109 | |||
110 | void | ||
111 | cray_login_failure(char *username, int errcode) | ||
112 | { | ||
113 | struct udb *ueptr; /* UDB pointer for username */ | ||
114 | ia_failure_t fsent; /* ia_failure structure */ | ||
115 | ia_failure_ret_t fret; /* ia_failure return stuff */ | ||
116 | struct jtab jtab; /* job table structure */ | ||
117 | int jid = 0; /* job id */ | ||
118 | |||
119 | if ((jid = getjtab(&jtab)) < 0) | ||
120 | debug("cray_login_failure(): getjtab error"); | ||
121 | |||
122 | getsysudb(); | ||
123 | if ((ueptr = getudbnam(username)) == UDB_NULL) | ||
124 | debug("cray_login_failure(): getudbname() returned NULL"); | ||
125 | endudb(); | ||
126 | |||
127 | memset(&fsent, '\0', sizeof(fsent)); | ||
128 | fsent.revision = 0; | ||
129 | fsent.uname = username; | ||
130 | fsent.host = (char *)get_canonical_hostname(options.use_dns); | ||
131 | fsent.ttyn = "sshd"; | ||
132 | fsent.caller = IA_SSHD; | ||
133 | fsent.flags = IA_INTERACTIVE; | ||
134 | fsent.ueptr = ueptr; | ||
135 | fsent.jid = jid; | ||
136 | fsent.errcode = errcode; | ||
137 | fsent.pwdp = NULL; | ||
138 | fsent.exitcode = 0; /* dont exit in ia_failure() */ | ||
139 | |||
140 | fret.revision = 0; | ||
141 | fret.normal = 0; | ||
142 | |||
143 | /* | ||
144 | * Call ia_failure because of an login failure. | ||
145 | */ | ||
146 | ia_failure(&fsent, &fret); | ||
147 | } | ||
148 | |||
149 | /* | ||
150 | * Cray access denied | ||
151 | */ | ||
152 | int | ||
153 | cray_access_denied(char *username) | ||
154 | { | ||
155 | struct udb *ueptr; /* UDB pointer for username */ | ||
156 | int errcode; /* IA errorcode */ | ||
157 | |||
158 | errcode = 0; | ||
159 | getsysudb(); | ||
160 | if ((ueptr = getudbnam(username)) == UDB_NULL) | ||
161 | debug("cray_login_failure(): getudbname() returned NULL"); | ||
162 | endudb(); | ||
163 | |||
164 | if (ueptr != NULL && ueptr->ue_disabled) | ||
165 | errcode = IA_DISABLED; | ||
166 | if (errcode) | ||
167 | cray_login_failure(username, errcode); | ||
168 | |||
169 | return (errcode); | ||
170 | } | ||
171 | |||
172 | /* | ||
173 | * record_failed_login: generic "login failed" interface function | ||
174 | */ | ||
175 | void | ||
176 | record_failed_login(const char *user, const char *hostname, const char *ttyname) | ||
177 | { | ||
178 | cray_login_failure((char *)user, IA_UDBERR); | ||
179 | } | ||
180 | |||
181 | int | ||
182 | cray_setup (uid_t uid, char *username, const char *command) | ||
183 | { | ||
184 | extern struct udb *getudb(); | ||
185 | extern char *setlimits(); | ||
186 | |||
187 | int err; /* error return */ | ||
188 | time_t system_time; /* current system clock */ | ||
189 | time_t expiration_time; /* password expiration time */ | ||
190 | int maxattempts; /* maximum no. of failed login attempts */ | ||
191 | int SecureSys; /* unicos security flag */ | ||
192 | int minslevel = 0; /* system minimum security level */ | ||
193 | int i, j; | ||
194 | int valid_acct = -1; /* flag for reading valid acct */ | ||
195 | char acct_name[MAXACID] = { "" }; /* used to read acct name */ | ||
196 | struct jtab jtab; /* Job table struct */ | ||
197 | struct udb ue; /* udb entry for logging-in user */ | ||
198 | struct udb *up; /* pointer to UDB entry */ | ||
199 | struct secstat secinfo; /* file security attributes */ | ||
200 | struct servprov init_info; /* used for sesscntl() call */ | ||
201 | int jid; /* job ID */ | ||
202 | int pid; /* process ID */ | ||
203 | char *sr; /* status return from setlimits() */ | ||
204 | char *ttyn = NULL; /* ttyname or command name*/ | ||
205 | char hostname[MAXHOSTNAMELEN]; | ||
206 | /* passwd stuff for ia_user */ | ||
207 | passwd_t pwdacm, pwddialup, pwdudb, pwdwal, pwddce; | ||
208 | ia_user_ret_t uret; /* stuff returned from ia_user */ | ||
209 | ia_user_t usent; /* ia_user main structure */ | ||
210 | int ia_rcode; /* ia_user return code */ | ||
211 | ia_failure_t fsent; /* ia_failure structure */ | ||
212 | ia_failure_ret_t fret; /* ia_failure return stuff */ | ||
213 | ia_success_t ssent; /* ia_success structure */ | ||
214 | ia_success_ret_t sret; /* ia_success return stuff */ | ||
215 | int ia_mlsrcode; /* ia_mlsuser return code */ | ||
216 | int secstatrc; /* [f]secstat return code */ | ||
217 | |||
218 | if (SecureSys = (int)sysconf(_SC_CRAY_SECURE_SYS)) { | ||
219 | getsysv(&sysv, sizeof(struct sysv)); | ||
220 | minslevel = sysv.sy_minlvl; | ||
221 | if (getusrv(&usrv) < 0) | ||
222 | fatal("getusrv() failed, errno = %d", errno); | ||
223 | } | ||
224 | hostname[0] = '\0'; | ||
225 | strlcpy(hostname, | ||
226 | (char *)get_canonical_hostname(options.use_dns), | ||
227 | MAXHOSTNAMELEN); | ||
228 | /* | ||
229 | * Fetch user's UDB entry. | ||
230 | */ | ||
231 | getsysudb(); | ||
232 | if ((up = getudbnam(username)) == UDB_NULL) | ||
233 | fatal("cannot fetch user's UDB entry"); | ||
234 | |||
235 | /* | ||
236 | * Prevent any possible fudging so perform a data | ||
237 | * safety check and compare the supplied uid against | ||
238 | * the udb's uid. | ||
239 | */ | ||
240 | if (up->ue_uid != uid) | ||
241 | fatal("IA uid missmatch"); | ||
242 | endudb(); | ||
243 | |||
244 | if ((jid = getjtab(&jtab)) < 0) { | ||
245 | debug("getjtab"); | ||
246 | return(-1); | ||
247 | } | ||
248 | pid = getpid(); | ||
249 | ttyn = ttyname(0); | ||
250 | if (SecureSys) { | ||
251 | if (ttyn != NULL) | ||
252 | secstatrc = secstat(ttyn, &secinfo); | ||
253 | else | ||
254 | secstatrc = fsecstat(1, &secinfo); | ||
255 | |||
256 | if (secstatrc == 0) | ||
257 | debug("[f]secstat() successful"); | ||
258 | else | ||
259 | fatal("[f]secstat() error, rc = %d", secstatrc); | ||
260 | } | ||
261 | if ((ttyn == NULL) && ((char *)command != NULL)) | ||
262 | ttyn = (char *)command; | ||
263 | /* | ||
264 | * Initialize all structures to call ia_user | ||
265 | */ | ||
266 | usent.revision = 0; | ||
267 | usent.uname = username; | ||
268 | usent.host = hostname; | ||
269 | usent.ttyn = ttyn; | ||
270 | usent.caller = IA_SSHD; | ||
271 | usent.pswdlist = &pwdacm; | ||
272 | usent.ueptr = &ue; | ||
273 | usent.flags = IA_INTERACTIVE | IA_FFLAG; | ||
274 | pwdacm.atype = IA_SECURID; | ||
275 | pwdacm.pwdp = NULL; | ||
276 | pwdacm.next = &pwdudb; | ||
277 | |||
278 | pwdudb.atype = IA_UDB; | ||
279 | pwdudb.pwdp = NULL; | ||
280 | pwdudb.next = &pwddce; | ||
281 | |||
282 | pwddce.atype = IA_DCE; | ||
283 | pwddce.pwdp = NULL; | ||
284 | pwddce.next = &pwddialup; | ||
285 | |||
286 | pwddialup.atype = IA_DIALUP; | ||
287 | pwddialup.pwdp = NULL; | ||
288 | /* pwddialup.next = &pwdwal; */ | ||
289 | pwddialup.next = NULL; | ||
290 | |||
291 | pwdwal.atype = IA_WAL; | ||
292 | pwdwal.pwdp = NULL; | ||
293 | pwdwal.next = NULL; | ||
294 | |||
295 | uret.revision = 0; | ||
296 | uret.pswd = NULL; | ||
297 | uret.normal = 0; | ||
298 | |||
299 | ia_rcode = ia_user(&usent, &uret); | ||
300 | switch (ia_rcode) { | ||
301 | /* | ||
302 | * These are acceptable return codes from ia_user() | ||
303 | */ | ||
304 | case IA_UDBWEEK: /* Password Expires in 1 week */ | ||
305 | expiration_time = ue.ue_pwage.time + ue.ue_pwage.maxage; | ||
306 | printf ("WARNING - your current password will expire %s\n", | ||
307 | ctime((const time_t *)&expiration_time)); | ||
308 | break; | ||
309 | case IA_UDBEXPIRED: | ||
310 | if (ttyname(0) != NULL) { | ||
311 | /* Force a password change */ | ||
312 | printf("Your password has expired; Choose a new one.\n"); | ||
313 | execl("/bin/passwd", "passwd", username, 0); | ||
314 | exit(9); | ||
315 | } | ||
316 | break; | ||
317 | case IA_NORMAL: /* Normal Return Code */ | ||
318 | break; | ||
319 | case IA_BACKDOOR: | ||
320 | /* XXX: can we memset it to zero here so save some of this */ | ||
321 | strlcpy(ue.ue_name, "root", sizeof(ue.ue_name)); | ||
322 | strlcpy(ue.ue_dir, "/", sizeof(ue.ue_dir)); | ||
323 | strlcpy(ue.ue_shell, "/bin/sh", sizeof(ue.ue_shell)); | ||
324 | |||
325 | ue.ue_passwd[0] = '\0'; | ||
326 | ue.ue_age[0] = '\0'; | ||
327 | ue.ue_comment[0] = '\0'; | ||
328 | ue.ue_loghost[0] = '\0'; | ||
329 | ue.ue_logline[0] = '\0'; | ||
330 | |||
331 | ue.ue_uid = -1; | ||
332 | ue.ue_nice[UDBRC_INTER] = 0; | ||
333 | |||
334 | for (i = 0; i < MAXVIDS; i++) | ||
335 | ue.ue_gids[i] = 0; | ||
336 | |||
337 | ue.ue_logfails = 0; | ||
338 | ue.ue_minlvl = ue.ue_maxlvl = ue.ue_deflvl = minslevel; | ||
339 | ue.ue_defcomps = 0; | ||
340 | ue.ue_comparts = 0; | ||
341 | ue.ue_permits = 0; | ||
342 | ue.ue_trap = 0; | ||
343 | ue.ue_disabled = 0; | ||
344 | ue.ue_logtime = 0; | ||
345 | break; | ||
346 | case IA_CONSOLE: /* Superuser not from Console */ | ||
347 | case IA_TRUSTED: /* Trusted user */ | ||
348 | if (options.permit_root_login > PERMIT_NO) | ||
349 | break; /* Accept root login */ | ||
350 | default: | ||
351 | /* | ||
352 | * These are failed return codes from ia_user() | ||
353 | */ | ||
354 | switch (ia_rcode) | ||
355 | { | ||
356 | case IA_BADAUTH: | ||
357 | printf("Bad authorization, access denied.\n"); | ||
358 | break; | ||
359 | case IA_DISABLED: | ||
360 | printf("Your login has been disabled. Contact the system "); | ||
361 | printf("administrator for assistance.\n"); | ||
362 | break; | ||
363 | case IA_GETSYSV: | ||
364 | printf("getsysv() failed - errno = %d\n", errno); | ||
365 | break; | ||
366 | case IA_MAXLOGS: | ||
367 | printf("Maximum number of failed login attempts exceeded.\n"); | ||
368 | printf("Access denied.\n"); | ||
369 | break; | ||
370 | case IA_UDBPWDNULL: | ||
371 | if (SecureSys) | ||
372 | printf("NULL Password not allowed on MLS systems.\n"); | ||
373 | break; | ||
374 | default: | ||
375 | break; | ||
376 | } | ||
377 | |||
378 | /* | ||
379 | * Authentication failed. | ||
380 | */ | ||
381 | printf("sshd: Login incorrect, (0%o)\n", | ||
382 | ia_rcode-IA_ERRORCODE); | ||
383 | |||
384 | /* | ||
385 | * Initialize structure for ia_failure | ||
386 | * which will exit. | ||
387 | */ | ||
388 | fsent.revision = 0; | ||
389 | fsent.uname = username; | ||
390 | fsent.host = hostname; | ||
391 | fsent.ttyn = ttyn; | ||
392 | fsent.caller = IA_SSHD; | ||
393 | fsent.flags = IA_INTERACTIVE; | ||
394 | fsent.ueptr = &ue; | ||
395 | fsent.jid = jid; | ||
396 | fsent.errcode = ia_rcode; | ||
397 | fsent.pwdp = uret.pswd; | ||
398 | fsent.exitcode = 1; | ||
399 | |||
400 | fret.revision = 0; | ||
401 | fret.normal = 0; | ||
402 | |||
403 | /* | ||
404 | * Call ia_failure because of an IA failure. | ||
405 | * There is no return because ia_failure exits. | ||
406 | */ | ||
407 | ia_failure(&fsent, &fret); | ||
408 | |||
409 | exit(1); | ||
410 | } | ||
411 | |||
412 | ia_mlsrcode = IA_NORMAL; | ||
413 | if (SecureSys) { | ||
414 | debug("calling ia_mlsuser()"); | ||
415 | ia_mlsrcode = ia_mlsuser(&ue, &secinfo, &usrv, NULL, 0); | ||
416 | } | ||
417 | if (ia_mlsrcode != IA_NORMAL) { | ||
418 | printf("sshd: Login incorrect, (0%o)\n", | ||
419 | ia_mlsrcode-IA_ERRORCODE); | ||
420 | /* | ||
421 | * Initialize structure for ia_failure | ||
422 | * which will exit. | ||
423 | */ | ||
424 | fsent.revision = 0; | ||
425 | fsent.uname = username; | ||
426 | fsent.host = hostname; | ||
427 | fsent.ttyn = ttyn; | ||
428 | fsent.caller = IA_SSHD; | ||
429 | fsent.flags = IA_INTERACTIVE; | ||
430 | fsent.ueptr = &ue; | ||
431 | fsent.jid = jid; | ||
432 | fsent.errcode = ia_mlsrcode; | ||
433 | fsent.pwdp = uret.pswd; | ||
434 | fsent.exitcode = 1; | ||
435 | fret.revision = 0; | ||
436 | fret.normal = 0; | ||
437 | |||
438 | /* | ||
439 | * Call ia_failure because of an IA failure. | ||
440 | * There is no return because ia_failure exits. | ||
441 | */ | ||
442 | ia_failure(&fsent,&fret); | ||
443 | exit(1); | ||
444 | } | ||
445 | |||
446 | /* Provide login status information */ | ||
447 | if (options.print_lastlog && ue.ue_logtime != 0) { | ||
448 | printf("Last successful login was : %.*s ", 19, | ||
449 | (char *)ctime(&ue.ue_logtime)); | ||
450 | |||
451 | if (*ue.ue_loghost != '\0') { | ||
452 | printf("from %.*s\n", sizeof(ue.ue_loghost), | ||
453 | ue.ue_loghost); | ||
454 | } else { | ||
455 | printf("on %.*s\n", sizeof(ue.ue_logline), | ||
456 | ue.ue_logline); | ||
457 | } | ||
458 | |||
459 | if (SecureSys && (ue.ue_logfails != 0)) { | ||
460 | printf(" followed by %d failed attempts\n", | ||
461 | ue.ue_logfails); | ||
462 | } | ||
463 | } | ||
464 | |||
465 | /* | ||
466 | * Call ia_success to process successful I/A. | ||
467 | */ | ||
468 | ssent.revision = 0; | ||
469 | ssent.uname = username; | ||
470 | ssent.host = hostname; | ||
471 | ssent.ttyn = ttyn; | ||
472 | ssent.caller = IA_SSHD; | ||
473 | ssent.flags = IA_INTERACTIVE; | ||
474 | ssent.ueptr = &ue; | ||
475 | ssent.jid = jid; | ||
476 | ssent.errcode = ia_rcode; | ||
477 | ssent.us = NULL; | ||
478 | ssent.time = 1; /* Set ue_logtime */ | ||
479 | |||
480 | sret.revision = 0; | ||
481 | sret.normal = 0; | ||
482 | |||
483 | ia_success(&ssent, &sret); | ||
484 | |||
485 | /* | ||
486 | * Query for account, iff > 1 valid acid & askacid permbit | ||
487 | */ | ||
488 | if (((ue.ue_permbits & PERMBITS_ACCTID) || | ||
489 | (ue.ue_acids[0] >= 0) && (ue.ue_acids[1] >= 0)) && | ||
490 | ue.ue_permbits & PERMBITS_ASKACID) { | ||
491 | if (ttyname(0) != NULL) { | ||
492 | debug("cray_setup: ttyname true case, %.100s", ttyname); | ||
493 | while (valid_acct == -1) { | ||
494 | printf("Account (? for available accounts)" | ||
495 | " [%s]: ", acid2nam(ue.ue_acids[0])); | ||
496 | fgets(acct_name, MAXACID, stdin); | ||
497 | switch (acct_name[0]) { | ||
498 | case EOF: | ||
499 | exit(0); | ||
500 | break; | ||
501 | case '\0': | ||
502 | valid_acct = ue.ue_acids[0]; | ||
503 | strlcpy(acct_name, acid2nam(valid_acct), MAXACID); | ||
504 | break; | ||
505 | case '?': | ||
506 | /* Print the list 3 wide */ | ||
507 | for (i = 0, j = 0; i < MAXVIDS; i++) { | ||
508 | if (ue.ue_acids[i] == -1) { | ||
509 | printf("\n"); | ||
510 | break; | ||
511 | } | ||
512 | if (++j == 4) { | ||
513 | j = 1; | ||
514 | printf("\n"); | ||
515 | } | ||
516 | printf(" %s", | ||
517 | acid2nam(ue.ue_acids[i])); | ||
518 | } | ||
519 | if (ue.ue_permbits & PERMBITS_ACCTID) { | ||
520 | printf("\"acctid\" permbit also allows" | ||
521 | " you to select any valid " | ||
522 | "account name.\n"); | ||
523 | } | ||
524 | printf("\n"); | ||
525 | break; | ||
526 | default: | ||
527 | valid_acct = nam2acid(acct_name); | ||
528 | if (valid_acct == -1) | ||
529 | printf( | ||
530 | "Account id not found for" | ||
531 | " account name \"%s\"\n\n", | ||
532 | acct_name); | ||
533 | break; | ||
534 | } | ||
535 | /* | ||
536 | * If an account was given, search the user's | ||
537 | * acids array to verify they can use this account. | ||
538 | */ | ||
539 | if ((valid_acct != -1) && | ||
540 | !(ue.ue_permbits & PERMBITS_ACCTID)) { | ||
541 | for (i = 0; i < MAXVIDS; i++) { | ||
542 | if (ue.ue_acids[i] == -1) | ||
543 | break; | ||
544 | if (valid_acct == ue.ue_acids[i]) | ||
545 | break; | ||
546 | } | ||
547 | if (i == MAXVIDS || | ||
548 | ue.ue_acids[i] == -1) { | ||
549 | fprintf(stderr, "Cannot set" | ||
550 | " account name to " | ||
551 | "\"%s\", permission " | ||
552 | "denied\n\n", acct_name); | ||
553 | valid_acct = -1; | ||
554 | } | ||
555 | } | ||
556 | } | ||
557 | } else { | ||
558 | /* | ||
559 | * The client isn't connected to a terminal and can't | ||
560 | * respond to an acid prompt. Use default acid. | ||
561 | */ | ||
562 | debug("cray_setup: ttyname false case, %.100s", | ||
563 | ttyname); | ||
564 | valid_acct = ue.ue_acids[0]; | ||
565 | } | ||
566 | } else { | ||
567 | /* | ||
568 | * The user doesn't have the askacid permbit set or | ||
569 | * only has one valid account to use. | ||
570 | */ | ||
571 | valid_acct = ue.ue_acids[0]; | ||
572 | } | ||
573 | if (acctid(0, valid_acct) < 0) { | ||
574 | printf ("Bad account id: %d\n", valid_acct); | ||
575 | exit(1); | ||
576 | } | ||
577 | |||
578 | /* | ||
579 | * Now set shares, quotas, limits, including CPU time for the | ||
580 | * (interactive) job and process, and set up permissions | ||
581 | * (for chown etc), etc. | ||
582 | */ | ||
583 | if (setshares(ue.ue_uid, valid_acct, printf, 0, 0)) { | ||
584 | printf("Unable to give %d shares to <%s>(%d/%d)\n", | ||
585 | ue.ue_shares, ue.ue_name, ue.ue_uid, valid_acct); | ||
586 | exit(1); | ||
587 | } | ||
588 | |||
589 | sr = setlimits(username, C_PROC, pid, UDBRC_INTER); | ||
590 | if (sr != NULL) { | ||
591 | debug("%.200s", sr); | ||
592 | exit(1); | ||
593 | } | ||
594 | sr = setlimits(username, C_JOB, jid, UDBRC_INTER); | ||
595 | if (sr != NULL) { | ||
596 | debug("%.200s", sr); | ||
597 | exit(1); | ||
598 | } | ||
599 | /* | ||
600 | * Place the service provider information into | ||
601 | * the session table (Unicos) or job table (Unicos/mk). | ||
602 | * There exist double defines for the job/session table in | ||
603 | * unicos/mk (jtab.h) so no need for a compile time switch. | ||
604 | */ | ||
605 | memset(&init_info, '\0', sizeof(init_info)); | ||
606 | init_info.s_sessinit.si_id = URM_SPT_LOGIN; | ||
607 | init_info.s_sessinit.si_pid = getpid(); | ||
608 | init_info.s_sessinit.si_sid = jid; | ||
609 | sesscntl(0, S_SETSERVPO, (int)&init_info); | ||
610 | |||
611 | /* | ||
612 | * Set user and controlling tty security attributes. | ||
613 | */ | ||
614 | if (SecureSys) { | ||
615 | if (setusrv(&usrv) == -1) { | ||
616 | debug("setusrv() failed, errno = %d",errno); | ||
617 | exit(1); | ||
618 | } | ||
619 | } | ||
620 | |||
621 | return (0); | ||
622 | } | ||
623 | |||
624 | /* | ||
625 | * The rc.* and /etc/sdaemon methods of starting a program on unicos/unicosmk | ||
626 | * can have pal privileges that sshd can inherit which | ||
627 | * could allow a user to su to root with out a password. | ||
628 | * This subroutine clears all privileges. | ||
629 | */ | ||
630 | void | ||
631 | drop_cray_privs() | ||
632 | { | ||
633 | #if defined(_SC_CRAY_PRIV_SU) | ||
634 | priv_proc_t *privstate; | ||
635 | int result; | ||
636 | extern int priv_set_proc(); | ||
637 | extern priv_proc_t *priv_init_proc(); | ||
638 | |||
639 | /* | ||
640 | * If ether of theses two flags are not set | ||
641 | * then don't allow this version of ssh to run. | ||
642 | */ | ||
643 | if (!sysconf(_SC_CRAY_PRIV_SU)) | ||
644 | fatal("Not PRIV_SU system."); | ||
645 | if (!sysconf(_SC_CRAY_POSIX_PRIV)) | ||
646 | fatal("Not POSIX_PRIV."); | ||
647 | |||
648 | debug("Setting MLS labels.");; | ||
649 | |||
650 | if (sysconf(_SC_CRAY_SECURE_MAC)) { | ||
651 | usrv.sv_minlvl = SYSLOW; | ||
652 | usrv.sv_actlvl = SYSHIGH; | ||
653 | usrv.sv_maxlvl = SYSHIGH; | ||
654 | } else { | ||
655 | usrv.sv_minlvl = sysv.sy_minlvl; | ||
656 | usrv.sv_actlvl = sysv.sy_minlvl; | ||
657 | usrv.sv_maxlvl = sysv.sy_maxlvl; | ||
658 | } | ||
659 | usrv.sv_actcmp = 0; | ||
660 | usrv.sv_valcmp = sysv.sy_valcmp; | ||
661 | |||
662 | usrv.sv_intcat = TFM_SYSTEM; | ||
663 | usrv.sv_valcat |= (TFM_SYSTEM | TFM_SYSFILE); | ||
664 | |||
665 | if (setusrv(&usrv) < 0) { | ||
666 | fatal("%s(%d): setusrv(): %s", __FILE__, __LINE__, | ||
667 | strerror(errno)); | ||
668 | } | ||
669 | |||
670 | if ((privstate = priv_init_proc()) != NULL) { | ||
671 | result = priv_set_proc(privstate); | ||
672 | if (result != 0 ) { | ||
673 | fatal("%s(%d): priv_set_proc(): %s", | ||
674 | __FILE__, __LINE__, strerror(errno)); | ||
675 | } | ||
676 | priv_free_proc(privstate); | ||
677 | } | ||
678 | debug ("Privileges should be cleared..."); | ||
679 | #else | ||
680 | /* XXX: do this differently */ | ||
681 | # error Cray systems must be run with _SC_CRAY_PRIV_SU on! | ||
682 | #endif | ||
683 | } | ||
684 | |||
685 | |||
686 | /* | ||
687 | * Retain utmp/wtmp information - used by cray accounting. | ||
688 | */ | ||
689 | void | ||
690 | cray_retain_utmp(struct utmp *ut, int pid) | ||
691 | { | ||
692 | int fd; | ||
693 | struct utmp utmp; | ||
694 | |||
695 | if ((fd = open(UTMP_FILE, O_RDONLY)) != -1) { | ||
696 | /* XXX use atomicio */ | ||
697 | while (read(fd, (char *)&utmp, sizeof(utmp)) == sizeof(utmp)) { | ||
698 | if (pid == utmp.ut_pid) { | ||
699 | ut->ut_jid = utmp.ut_jid; | ||
700 | strncpy(ut->ut_tpath, utmp.ut_tpath, sizeof(utmp.ut_tpath)); | ||
701 | strncpy(ut->ut_host, utmp.ut_host, sizeof(utmp.ut_host)); | ||
702 | strncpy(ut->ut_name, utmp.ut_name, sizeof(utmp.ut_name)); | ||
703 | break; | ||
704 | } | ||
705 | } | ||
706 | close(fd); | ||
707 | } else | ||
708 | fatal("Unable to open utmp file"); | ||
709 | } | ||
710 | |||
711 | /* | ||
712 | * tmpdir support. | ||
713 | */ | ||
714 | |||
715 | /* | ||
716 | * find and delete jobs tmpdir. | ||
717 | */ | ||
718 | void | ||
719 | cray_delete_tmpdir(char *login, int jid, uid_t uid) | ||
720 | { | ||
721 | static char jtmp[TPATHSIZ]; | ||
722 | struct stat statbuf; | ||
723 | int child, c, wstat; | ||
724 | |||
725 | for (c = 'a'; c <= 'z'; c++) { | ||
726 | snprintf(jtmp, TPATHSIZ, "%s/jtmp.%06d%c", JTMPDIR, jid, c); | ||
727 | if (stat(jtmp, &statbuf) == 0 && statbuf.st_uid == uid) | ||
728 | break; | ||
729 | } | ||
730 | |||
731 | if (c > 'z') | ||
732 | return; | ||
733 | |||
734 | if ((child = fork()) == 0) { | ||
735 | execl(CLEANTMPCMD, CLEANTMPCMD, login, jtmp, (char *)NULL); | ||
736 | fatal("cray_delete_tmpdir: execl of CLEANTMPCMD failed"); | ||
737 | } | ||
738 | |||
739 | while (waitpid(child, &wstat, 0) == -1 && errno == EINTR) | ||
740 | ; | ||
741 | } | ||
742 | |||
743 | /* | ||
744 | * Remove tmpdir on job termination. | ||
745 | */ | ||
746 | void | ||
747 | cray_job_termination_handler(int sig) | ||
748 | { | ||
749 | int jid; | ||
750 | char *login = NULL; | ||
751 | struct jtab jtab; | ||
752 | |||
753 | if ((jid = waitjob(&jtab)) == -1 || | ||
754 | (login = uid2nam(jtab.j_uid)) == NULL) | ||
755 | return; | ||
756 | |||
757 | cray_delete_tmpdir(login, jid, jtab.j_uid); | ||
758 | } | ||
759 | |||
760 | /* | ||
761 | * Set job id and create tmpdir directory. | ||
762 | */ | ||
763 | void | ||
764 | cray_init_job(struct passwd *pw) | ||
765 | { | ||
766 | int jid; | ||
767 | int c; | ||
768 | |||
769 | jid = setjob(pw->pw_uid, WJSIGNAL); | ||
770 | if (jid < 0) | ||
771 | fatal("System call setjob failure"); | ||
772 | |||
773 | for (c = 'a'; c <= 'z'; c++) { | ||
774 | snprintf(cray_tmpdir, TPATHSIZ, "%s/jtmp.%06d%c", JTMPDIR, jid, c); | ||
775 | if (mkdir(cray_tmpdir, JTMPMODE) != 0) | ||
776 | continue; | ||
777 | if (chown(cray_tmpdir, pw->pw_uid, pw->pw_gid) != 0) { | ||
778 | rmdir(cray_tmpdir); | ||
779 | continue; | ||
780 | } | ||
781 | break; | ||
782 | } | ||
783 | |||
784 | if (c > 'z') | ||
785 | cray_tmpdir[0] = '\0'; | ||
786 | } | ||
787 | |||
788 | void | ||
789 | cray_set_tmpdir(struct utmp *ut) | ||
790 | { | ||
791 | int jid; | ||
792 | struct jtab jbuf; | ||
793 | |||
794 | if ((jid = getjtab(&jbuf)) < 0) | ||
795 | return; | ||
796 | |||
797 | /* | ||
798 | * Set jid and tmpdir in utmp record. | ||
799 | */ | ||
800 | ut->ut_jid = jid; | ||
801 | strncpy(ut->ut_tpath, cray_tmpdir, TPATHSIZ); | ||
802 | } | ||
803 | #endif /* UNICOS */ | ||
804 | |||
805 | #ifdef _UNICOSMP | ||
806 | #include <pwd.h> | ||
807 | /* | ||
808 | * Set job id and create tmpdir directory. | ||
809 | */ | ||
810 | void | ||
811 | cray_init_job(struct passwd *pw) | ||
812 | { | ||
813 | initrm_silent(pw->pw_uid); | ||
814 | return; | ||
815 | } | ||
816 | #endif /* _UNICOSMP */ | ||
diff --git a/openbsd-compat/bsd-cray.h b/openbsd-compat/bsd-cray.h deleted file mode 100644 index ca626a021..000000000 --- a/openbsd-compat/bsd-cray.h +++ /dev/null | |||
@@ -1,59 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2002, Cray Inc. (Wendy Palm <wendyp@cray.com>) | ||
3 | * Significant portions provided by | ||
4 | * Wayne Schroeder, SDSC <schroeder@sdsc.edu> | ||
5 | * William Jones, UTexas <jones@tacc.utexas.edu> | ||
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 | * Created: Apr 22 16.34:00 2002 wp | ||
28 | * | ||
29 | * This file contains functions required for proper execution | ||
30 | * on UNICOS systems. | ||
31 | * | ||
32 | */ | ||
33 | |||
34 | #ifndef _BSD_CRAY_H | ||
35 | #define _BSD_CRAY_H | ||
36 | |||
37 | #ifdef _UNICOS | ||
38 | |||
39 | void cray_init_job(struct passwd *); | ||
40 | void cray_job_termination_handler(int); | ||
41 | void cray_login_failure(char *, int ); | ||
42 | int cray_access_denied(char *); | ||
43 | extern char cray_tmpdir[]; | ||
44 | |||
45 | #define CUSTOM_FAILED_LOGIN 1 | ||
46 | |||
47 | #ifndef IA_SSHD | ||
48 | # define IA_SSHD IA_LOGIN | ||
49 | #endif | ||
50 | #ifndef MAXHOSTNAMELEN | ||
51 | # define MAXHOSTNAMELEN 64 | ||
52 | #endif | ||
53 | #ifndef _CRAYT3E | ||
54 | # define TIOCGPGRP (tIOC|20) | ||
55 | #endif | ||
56 | |||
57 | #endif /* UNICOS */ | ||
58 | |||
59 | #endif /* _BSD_CRAY_H */ | ||
diff --git a/openbsd-compat/bsd-flock.c b/openbsd-compat/bsd-flock.c new file mode 100644 index 000000000..9b15d1eaf --- /dev/null +++ b/openbsd-compat/bsd-flock.c | |||
@@ -0,0 +1,81 @@ | |||
1 | /* $NetBSD: flock.c,v 1.6 2008/04/28 20:24:12 martin Exp $ */ | ||
2 | |||
3 | /*- | ||
4 | * Copyright (c) 2001 The NetBSD Foundation, Inc. | ||
5 | * All rights reserved. | ||
6 | * | ||
7 | * This code is derived from software contributed to The NetBSD Foundation | ||
8 | * by Todd Vierling. | ||
9 | * | ||
10 | * Redistribution and use in source and binary forms, with or without | ||
11 | * modification, are permitted provided that the following conditions | ||
12 | * are met: | ||
13 | * 1. Redistributions of source code must retain the above copyright | ||
14 | * notice, this list of conditions and the following disclaimer. | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in the | ||
17 | * documentation and/or other materials provided with the distribution. | ||
18 | * | ||
19 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | ||
20 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | ||
21 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
22 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | ||
23 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
29 | * POSSIBILITY OF SUCH DAMAGE. | ||
30 | */ | ||
31 | |||
32 | /* | ||
33 | * Emulate flock() with fcntl(), where available. | ||
34 | * Otherwise, don't do locking; just pretend success. | ||
35 | */ | ||
36 | |||
37 | #include "includes.h" | ||
38 | |||
39 | #ifndef HAVE_FLOCK | ||
40 | #include <errno.h> | ||
41 | #include <fcntl.h> | ||
42 | |||
43 | int | ||
44 | flock(int fd, int op) | ||
45 | { | ||
46 | int rc = 0; | ||
47 | |||
48 | #if defined(F_SETLK) && defined(F_SETLKW) | ||
49 | struct flock fl = {0}; | ||
50 | |||
51 | switch (op & (LOCK_EX|LOCK_SH|LOCK_UN)) { | ||
52 | case LOCK_EX: | ||
53 | fl.l_type = F_WRLCK; | ||
54 | break; | ||
55 | |||
56 | case LOCK_SH: | ||
57 | fl.l_type = F_RDLCK; | ||
58 | break; | ||
59 | |||
60 | case LOCK_UN: | ||
61 | fl.l_type = F_UNLCK; | ||
62 | break; | ||
63 | |||
64 | default: | ||
65 | errno = EINVAL; | ||
66 | return -1; | ||
67 | } | ||
68 | |||
69 | fl.l_whence = SEEK_SET; | ||
70 | rc = fcntl(fd, op & LOCK_NB ? F_SETLK : F_SETLKW, &fl); | ||
71 | |||
72 | if (rc && (errno == EAGAIN)) | ||
73 | errno = EWOULDBLOCK; | ||
74 | #else | ||
75 | rc = -1; | ||
76 | errno = ENOSYS; | ||
77 | #endif | ||
78 | |||
79 | return rc; | ||
80 | } | ||
81 | #endif | ||
diff --git a/openbsd-compat/bsd-getpagesize.c b/openbsd-compat/bsd-getpagesize.c index 9daddfbd3..416a8d4cb 100644 --- a/openbsd-compat/bsd-getpagesize.c +++ b/openbsd-compat/bsd-getpagesize.c | |||
@@ -1,5 +1,7 @@ | |||
1 | /* Placed in the public domain */ | 1 | /* Placed in the public domain */ |
2 | 2 | ||
3 | #include "includes.h" | ||
4 | |||
3 | #ifndef HAVE_GETPAGESIZE | 5 | #ifndef HAVE_GETPAGESIZE |
4 | 6 | ||
5 | #include <unistd.h> | 7 | #include <unistd.h> |
diff --git a/openbsd-compat/bsd-malloc.c b/openbsd-compat/bsd-malloc.c index 6402ab588..482facdc9 100644 --- a/openbsd-compat/bsd-malloc.c +++ b/openbsd-compat/bsd-malloc.c | |||
@@ -50,6 +50,8 @@ rpl_realloc(void *ptr, size_t size) | |||
50 | { | 50 | { |
51 | if (size == 0) | 51 | if (size == 0) |
52 | size = 1; | 52 | size = 1; |
53 | if (ptr == 0) | ||
54 | return malloc(size); | ||
53 | return realloc(ptr, size); | 55 | return realloc(ptr, size); |
54 | } | 56 | } |
55 | #endif | 57 | #endif |
diff --git a/openbsd-compat/bsd-misc.c b/openbsd-compat/bsd-misc.c index 29f6ad38c..3daf61071 100644 --- a/openbsd-compat/bsd-misc.c +++ b/openbsd-compat/bsd-misc.c | |||
@@ -104,16 +104,6 @@ const char *strerror(int e) | |||
104 | } | 104 | } |
105 | #endif | 105 | #endif |
106 | 106 | ||
107 | #if !defined(HAVE_STRSIGNAL) | ||
108 | char *strsignal(int sig) | ||
109 | { | ||
110 | static char buf[16]; | ||
111 | |||
112 | (void)snprintf(buf, sizeof(buf), "%d", sig); | ||
113 | return buf; | ||
114 | } | ||
115 | #endif | ||
116 | |||
117 | #ifndef HAVE_UTIMES | 107 | #ifndef HAVE_UTIMES |
118 | int utimes(char *filename, struct timeval *tvp) | 108 | int utimes(char *filename, struct timeval *tvp) |
119 | { | 109 | { |
@@ -221,33 +211,6 @@ tcsendbreak(int fd, int duration) | |||
221 | } | 211 | } |
222 | #endif /* HAVE_TCSENDBREAK */ | 212 | #endif /* HAVE_TCSENDBREAK */ |
223 | 213 | ||
224 | mysig_t | ||
225 | mysignal(int sig, mysig_t act) | ||
226 | { | ||
227 | #ifdef HAVE_SIGACTION | ||
228 | struct sigaction sa, osa; | ||
229 | |||
230 | if (sigaction(sig, NULL, &osa) == -1) | ||
231 | return (mysig_t) -1; | ||
232 | if (osa.sa_handler != act) { | ||
233 | memset(&sa, 0, sizeof(sa)); | ||
234 | sigemptyset(&sa.sa_mask); | ||
235 | sa.sa_flags = 0; | ||
236 | #ifdef SA_INTERRUPT | ||
237 | if (sig == SIGALRM) | ||
238 | sa.sa_flags |= SA_INTERRUPT; | ||
239 | #endif | ||
240 | sa.sa_handler = act; | ||
241 | if (sigaction(sig, &sa, NULL) == -1) | ||
242 | return (mysig_t) -1; | ||
243 | } | ||
244 | return (osa.sa_handler); | ||
245 | #else | ||
246 | #undef signal | ||
247 | return (signal(sig, act)); | ||
248 | #endif | ||
249 | } | ||
250 | |||
251 | #ifndef HAVE_STRDUP | 214 | #ifndef HAVE_STRDUP |
252 | char * | 215 | char * |
253 | strdup(const char *str) | 216 | strdup(const char *str) |
@@ -275,7 +238,7 @@ isblank(int c) | |||
275 | pid_t | 238 | pid_t |
276 | getpgid(pid_t pid) | 239 | getpgid(pid_t pid) |
277 | { | 240 | { |
278 | #if defined(HAVE_GETPGRP) && !defined(GETPGRP_VOID) | 241 | #if defined(HAVE_GETPGRP) && !defined(GETPGRP_VOID) && GETPGRP_VOID == 0 |
279 | return getpgrp(pid); | 242 | return getpgrp(pid); |
280 | #elif defined(HAVE_GETPGRP) | 243 | #elif defined(HAVE_GETPGRP) |
281 | if (pid == 0) | 244 | if (pid == 0) |
@@ -319,3 +282,45 @@ llabs(long long j) | |||
319 | return (j < 0 ? -j : j); | 282 | return (j < 0 ? -j : j); |
320 | } | 283 | } |
321 | #endif | 284 | #endif |
285 | |||
286 | #ifndef HAVE_BZERO | ||
287 | void | ||
288 | bzero(void *b, size_t n) | ||
289 | { | ||
290 | (void)memset(b, 0, n); | ||
291 | } | ||
292 | #endif | ||
293 | |||
294 | #ifndef HAVE_RAISE | ||
295 | int | ||
296 | raise(int sig) | ||
297 | { | ||
298 | kill(getpid(), sig); | ||
299 | } | ||
300 | #endif | ||
301 | |||
302 | #ifndef HAVE_GETSID | ||
303 | pid_t | ||
304 | getsid(pid_t pid) | ||
305 | { | ||
306 | errno = ENOSYS; | ||
307 | return -1; | ||
308 | } | ||
309 | #endif | ||
310 | |||
311 | #ifdef FFLUSH_NULL_BUG | ||
312 | #undef fflush | ||
313 | int _ssh_compat_fflush(FILE *f) | ||
314 | { | ||
315 | int r1, r2, r3; | ||
316 | |||
317 | if (f == NULL) { | ||
318 | r2 = fflush(stdout); | ||
319 | r3 = fflush(stderr); | ||
320 | if (r1 == -1 || r2 == -1 || r3 == -1) | ||
321 | return -1; | ||
322 | return 0; | ||
323 | } | ||
324 | return fflush(f); | ||
325 | } | ||
326 | #endif | ||
diff --git a/openbsd-compat/bsd-misc.h b/openbsd-compat/bsd-misc.h index 0b1a3504f..52ec52853 100644 --- a/openbsd-compat/bsd-misc.h +++ b/openbsd-compat/bsd-misc.h | |||
@@ -49,10 +49,6 @@ int setegid(uid_t); | |||
49 | const char *strerror(int); | 49 | const char *strerror(int); |
50 | #endif | 50 | #endif |
51 | 51 | ||
52 | #if !defined(HAVE_STRSIGNAL) | ||
53 | char *strsignal(int); | ||
54 | #endif | ||
55 | |||
56 | #if !defined(HAVE_SETLINEBUF) | 52 | #if !defined(HAVE_SETLINEBUF) |
57 | #define setlinebuf(a) (setvbuf((a), NULL, _IOLBF, 0)) | 53 | #define setlinebuf(a) (setvbuf((a), NULL, _IOLBF, 0)) |
58 | #endif | 54 | #endif |
@@ -98,12 +94,6 @@ int tcsendbreak(int, int); | |||
98 | int unsetenv(const char *); | 94 | int unsetenv(const char *); |
99 | #endif | 95 | #endif |
100 | 96 | ||
101 | /* wrapper for signal interface */ | ||
102 | typedef void (*mysig_t)(int); | ||
103 | mysig_t mysignal(int sig, mysig_t act); | ||
104 | |||
105 | #define signal(a,b) mysignal(a,b) | ||
106 | |||
107 | #ifndef HAVE_ISBLANK | 97 | #ifndef HAVE_ISBLANK |
108 | int isblank(int); | 98 | int isblank(int); |
109 | #endif | 99 | #endif |
@@ -143,4 +133,28 @@ void warn(const char *, ...) __attribute__((format(printf, 1, 2))); | |||
143 | long long llabs(long long); | 133 | long long llabs(long long); |
144 | #endif | 134 | #endif |
145 | 135 | ||
136 | #if defined(HAVE_DECL_BZERO) && HAVE_DECL_BZERO == 0 | ||
137 | void bzero(void *, size_t); | ||
138 | #endif | ||
139 | |||
140 | #ifndef HAVE_RAISE | ||
141 | int raise(int); | ||
142 | #endif | ||
143 | |||
144 | #ifndef HAVE_GETSID | ||
145 | pid_t getsid(pid_t); | ||
146 | #endif | ||
147 | |||
148 | #ifndef HAVE_FLOCK | ||
149 | # define LOCK_SH 0x01 | ||
150 | # define LOCK_EX 0x02 | ||
151 | # define LOCK_NB 0x04 | ||
152 | # define LOCK_UN 0x08 | ||
153 | int flock(int, int); | ||
154 | #endif | ||
155 | |||
156 | #ifdef FFLUSH_NULL_BUG | ||
157 | # define fflush(x) (_ssh_compat_fflush(x)) | ||
158 | #endif | ||
159 | |||
146 | #endif /* _BSD_MISC_H */ | 160 | #endif /* _BSD_MISC_H */ |
diff --git a/openbsd-compat/bsd-openpty.c b/openbsd-compat/bsd-openpty.c index b28235860..e8ad542f8 100644 --- a/openbsd-compat/bsd-openpty.c +++ b/openbsd-compat/bsd-openpty.c | |||
@@ -147,31 +147,6 @@ openpty(int *amaster, int *aslave, char *name, struct termios *termp, | |||
147 | } | 147 | } |
148 | return (0); | 148 | return (0); |
149 | 149 | ||
150 | #elif defined(_UNICOS) | ||
151 | char ptbuf[64], ttbuf[64]; | ||
152 | int i; | ||
153 | int highpty; | ||
154 | |||
155 | highpty = 128; | ||
156 | #ifdef _SC_CRAY_NPTY | ||
157 | if ((highpty = sysconf(_SC_CRAY_NPTY)) == -1) | ||
158 | highpty = 128; | ||
159 | #endif /* _SC_CRAY_NPTY */ | ||
160 | |||
161 | for (i = 0; i < highpty; i++) { | ||
162 | snprintf(ptbuf, sizeof(ptbuf), "/dev/pty/%03d", i); | ||
163 | snprintf(ttbuf, sizeof(ttbuf), "/dev/ttyp%03d", i); | ||
164 | if ((*amaster = open(ptbuf, O_RDWR|O_NOCTTY)) == -1) | ||
165 | continue; | ||
166 | /* Open the slave side. */ | ||
167 | if ((*aslave = open(ttbuf, O_RDWR|O_NOCTTY)) == -1) { | ||
168 | close(*amaster); | ||
169 | return (-1); | ||
170 | } | ||
171 | return (0); | ||
172 | } | ||
173 | return (-1); | ||
174 | |||
175 | #else | 150 | #else |
176 | /* BSD-style pty code. */ | 151 | /* BSD-style pty code. */ |
177 | char ptbuf[64], ttbuf[64]; | 152 | char ptbuf[64], ttbuf[64]; |
diff --git a/openbsd-compat/bsd-signal.c b/openbsd-compat/bsd-signal.c new file mode 100644 index 000000000..979010e84 --- /dev/null +++ b/openbsd-compat/bsd-signal.c | |||
@@ -0,0 +1,62 @@ | |||
1 | /* | ||
2 | * Copyright (c) 1999-2004 Damien Miller <djm@mindrot.org> | ||
3 | * | ||
4 | * Permission to use, copy, modify, and distribute this software for any | ||
5 | * purpose with or without fee is hereby granted, provided that the above | ||
6 | * copyright notice and this permission notice appear in all copies. | ||
7 | * | ||
8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
15 | */ | ||
16 | |||
17 | #include "includes.h" | ||
18 | |||
19 | #include <signal.h> | ||
20 | #include <string.h> | ||
21 | #include <unistd.h> | ||
22 | |||
23 | #include "openbsd-compat/bsd-signal.h" | ||
24 | |||
25 | #undef signal | ||
26 | |||
27 | mysig_t | ||
28 | mysignal(int sig, mysig_t act) | ||
29 | { | ||
30 | #ifdef HAVE_SIGACTION | ||
31 | struct sigaction sa, osa; | ||
32 | |||
33 | if (sigaction(sig, NULL, &osa) == -1) | ||
34 | return (mysig_t) -1; | ||
35 | if (osa.sa_handler != act) { | ||
36 | memset(&sa, 0, sizeof(sa)); | ||
37 | sigemptyset(&sa.sa_mask); | ||
38 | sa.sa_flags = 0; | ||
39 | #ifdef SA_INTERRUPT | ||
40 | if (sig == SIGALRM) | ||
41 | sa.sa_flags |= SA_INTERRUPT; | ||
42 | #endif | ||
43 | sa.sa_handler = act; | ||
44 | if (sigaction(sig, &sa, NULL) == -1) | ||
45 | return (mysig_t) -1; | ||
46 | } | ||
47 | return (osa.sa_handler); | ||
48 | #else | ||
49 | return (signal(sig, act)); | ||
50 | #endif | ||
51 | } | ||
52 | |||
53 | #if !defined(HAVE_STRSIGNAL) | ||
54 | char *strsignal(int sig) | ||
55 | { | ||
56 | static char buf[16]; | ||
57 | |||
58 | (void)snprintf(buf, sizeof(buf), "%d", sig); | ||
59 | return buf; | ||
60 | } | ||
61 | #endif | ||
62 | |||
diff --git a/openbsd-compat/bsd-signal.h b/openbsd-compat/bsd-signal.h new file mode 100644 index 000000000..4cb8cb7a0 --- /dev/null +++ b/openbsd-compat/bsd-signal.h | |||
@@ -0,0 +1,39 @@ | |||
1 | /* | ||
2 | * Copyright (c) 1999-2004 Damien Miller <djm@mindrot.org> | ||
3 | * | ||
4 | * Permission to use, copy, modify, and distribute this software for any | ||
5 | * purpose with or without fee is hereby granted, provided that the above | ||
6 | * copyright notice and this permission notice appear in all copies. | ||
7 | * | ||
8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
15 | */ | ||
16 | |||
17 | #ifndef _BSD_SIGNAL_H | ||
18 | #define _BSD_SIGNAL_H | ||
19 | |||
20 | #include "includes.h" | ||
21 | |||
22 | #ifndef _NSIG | ||
23 | # ifdef NSIG | ||
24 | # define _NSIG NSIG | ||
25 | # else | ||
26 | # define _NSIG 128 | ||
27 | # endif | ||
28 | #endif | ||
29 | |||
30 | /* wrapper for signal interface */ | ||
31 | typedef void (*mysig_t)(int); | ||
32 | mysig_t mysignal(int sig, mysig_t act); | ||
33 | #define signal(a,b) mysignal(a,b) | ||
34 | |||
35 | #if !defined(HAVE_STRSIGNAL) | ||
36 | char *strsignal(int); | ||
37 | #endif | ||
38 | |||
39 | #endif /* _BSD_SIGNAL_H */ | ||
diff --git a/openbsd-compat/bsd-statvfs.c b/openbsd-compat/bsd-statvfs.c index 458dbe89c..e3bd87d98 100644 --- a/openbsd-compat/bsd-statvfs.c +++ b/openbsd-compat/bsd-statvfs.c | |||
@@ -25,6 +25,10 @@ | |||
25 | 25 | ||
26 | #include <errno.h> | 26 | #include <errno.h> |
27 | 27 | ||
28 | #ifndef MNAMELEN | ||
29 | # define MNAMELEN 32 | ||
30 | #endif | ||
31 | |||
28 | static void | 32 | static void |
29 | copy_statfs_to_statvfs(struct statvfs *to, struct statfs *from) | 33 | copy_statfs_to_statvfs(struct statvfs *to, struct statfs *from) |
30 | { | 34 | { |
@@ -37,7 +41,11 @@ copy_statfs_to_statvfs(struct statvfs *to, struct statfs *from) | |||
37 | to->f_ffree = from->f_ffree; | 41 | to->f_ffree = from->f_ffree; |
38 | to->f_favail = from->f_ffree; /* no exact equivalent */ | 42 | to->f_favail = from->f_ffree; /* no exact equivalent */ |
39 | to->f_fsid = 0; /* XXX fix me */ | 43 | to->f_fsid = 0; /* XXX fix me */ |
44 | #ifdef HAVE_STRUCT_STATFS_F_FLAGS | ||
40 | to->f_flag = from->f_flags; | 45 | to->f_flag = from->f_flags; |
46 | #else | ||
47 | to->f_flag = 0; | ||
48 | #endif | ||
41 | to->f_namemax = MNAMELEN; | 49 | to->f_namemax = MNAMELEN; |
42 | } | 50 | } |
43 | 51 | ||
diff --git a/openbsd-compat/bsd-statvfs.h b/openbsd-compat/bsd-statvfs.h index 815ec03b2..e2a4c15f7 100644 --- a/openbsd-compat/bsd-statvfs.h +++ b/openbsd-compat/bsd-statvfs.h | |||
@@ -26,6 +26,9 @@ | |||
26 | #ifdef HAVE_SYS_STATFS_H | 26 | #ifdef HAVE_SYS_STATFS_H |
27 | #include <sys/statfs.h> | 27 | #include <sys/statfs.h> |
28 | #endif | 28 | #endif |
29 | #ifdef HAVE_SYS_VFS_H | ||
30 | #include <sys/vfs.h> | ||
31 | #endif | ||
29 | 32 | ||
30 | #ifndef HAVE_FSBLKCNT_T | 33 | #ifndef HAVE_FSBLKCNT_T |
31 | typedef unsigned long fsblkcnt_t; | 34 | typedef unsigned long fsblkcnt_t; |
diff --git a/openbsd-compat/freezero.c b/openbsd-compat/freezero.c index 3af8f4a73..90b9d3813 100644 --- a/openbsd-compat/freezero.c +++ b/openbsd-compat/freezero.c | |||
@@ -16,11 +16,15 @@ | |||
16 | 16 | ||
17 | #include "includes.h" | 17 | #include "includes.h" |
18 | 18 | ||
19 | #include <string.h> | ||
20 | |||
19 | #ifndef HAVE_FREEZERO | 21 | #ifndef HAVE_FREEZERO |
20 | 22 | ||
21 | void | 23 | void |
22 | freezero(void *ptr, size_t sz) | 24 | freezero(void *ptr, size_t sz) |
23 | { | 25 | { |
26 | if (ptr == NULL) | ||
27 | return; | ||
24 | explicit_bzero(ptr, sz); | 28 | explicit_bzero(ptr, sz); |
25 | free(ptr); | 29 | free(ptr); |
26 | } | 30 | } |
diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h index cac799e84..b48fb9342 100644 --- a/openbsd-compat/openbsd-compat.h +++ b/openbsd-compat/openbsd-compat.h | |||
@@ -170,15 +170,24 @@ int BSDgetopt(int argc, char * const *argv, const char *opts); | |||
170 | #include "openbsd-compat/getopt.h" | 170 | #include "openbsd-compat/getopt.h" |
171 | #endif | 171 | #endif |
172 | 172 | ||
173 | #if defined(HAVE_DECL_WRITEV) && HAVE_DECL_WRITEV == 0 | 173 | #if ((defined(HAVE_DECL_READV) && HAVE_DECL_READV == 0) || \ |
174 | (defined(HAVE_DECL_WRITEV) && HAVE_DECL_WRITEV == 0)) | ||
174 | # include <sys/types.h> | 175 | # include <sys/types.h> |
175 | # include <sys/uio.h> | 176 | # include <sys/uio.h> |
177 | |||
178 | # if defined(HAVE_DECL_READV) && HAVE_DECL_READV == 0 | ||
179 | int readv(int, struct iovec *, int); | ||
180 | # endif | ||
181 | |||
182 | # if defined(HAVE_DECL_WRITEV) && HAVE_DECL_WRITEV == 0 | ||
176 | int writev(int, struct iovec *, int); | 183 | int writev(int, struct iovec *, int); |
184 | # endif | ||
177 | #endif | 185 | #endif |
178 | 186 | ||
179 | /* Home grown routines */ | 187 | /* Home grown routines */ |
180 | #include "bsd-misc.h" | 188 | #include "bsd-misc.h" |
181 | #include "bsd-setres_id.h" | 189 | #include "bsd-setres_id.h" |
190 | #include "bsd-signal.h" | ||
182 | #include "bsd-statvfs.h" | 191 | #include "bsd-statvfs.h" |
183 | #include "bsd-waitpid.h" | 192 | #include "bsd-waitpid.h" |
184 | #include "bsd-poll.h" | 193 | #include "bsd-poll.h" |
@@ -315,14 +324,13 @@ char *shadow_pw(struct passwd *pw); | |||
315 | #include "fake-rfc2553.h" | 324 | #include "fake-rfc2553.h" |
316 | 325 | ||
317 | /* Routines for a single OS platform */ | 326 | /* Routines for a single OS platform */ |
318 | #include "bsd-cray.h" | ||
319 | #include "bsd-cygwin_util.h" | 327 | #include "bsd-cygwin_util.h" |
320 | 328 | ||
321 | #include "port-aix.h" | 329 | #include "port-aix.h" |
322 | #include "port-irix.h" | 330 | #include "port-irix.h" |
323 | #include "port-linux.h" | 331 | #include "port-linux.h" |
324 | #include "port-solaris.h" | 332 | #include "port-solaris.h" |
325 | #include "port-tun.h" | 333 | #include "port-net.h" |
326 | #include "port-uw.h" | 334 | #include "port-uw.h" |
327 | 335 | ||
328 | /* _FORTIFY_SOURCE breaks FD_ISSET(n)/FD_SET(n) for n > FD_SETSIZE. Avoid. */ | 336 | /* _FORTIFY_SOURCE breaks FD_ISSET(n)/FD_SET(n) for n > FD_SETSIZE. Avoid. */ |
diff --git a/openbsd-compat/port-aix.c b/openbsd-compat/port-aix.c index c2970c4db..79c868966 100644 --- a/openbsd-compat/port-aix.c +++ b/openbsd-compat/port-aix.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include "hostfile.h" | 32 | #include "hostfile.h" |
33 | #include "auth.h" | 33 | #include "auth.h" |
34 | #include "ssh.h" | 34 | #include "ssh.h" |
35 | #include "ssh_api.h" | ||
35 | #include "log.h" | 36 | #include "log.h" |
36 | 37 | ||
37 | #ifdef _AIX | 38 | #ifdef _AIX |
@@ -171,8 +172,9 @@ aix_valid_authentications(const char *user) | |||
171 | * returns 0. | 172 | * returns 0. |
172 | */ | 173 | */ |
173 | int | 174 | int |
174 | sys_auth_passwd(Authctxt *ctxt, const char *password) | 175 | sys_auth_passwd(struct ssh *ssh, const char *password) |
175 | { | 176 | { |
177 | Authctxt *ctxt = ssh->authctxt; | ||
176 | char *authmsg = NULL, *msg = NULL, *name = ctxt->pw->pw_name; | 178 | char *authmsg = NULL, *msg = NULL, *name = ctxt->pw->pw_name; |
177 | int authsuccess = 0, expired, reenter, result; | 179 | int authsuccess = 0, expired, reenter, result; |
178 | 180 | ||
diff --git a/openbsd-compat/port-linux.c b/openbsd-compat/port-linux.c index e26faf08c..8a3e5c68d 100644 --- a/openbsd-compat/port-linux.c +++ b/openbsd-compat/port-linux.c | |||
@@ -39,7 +39,6 @@ | |||
39 | 39 | ||
40 | #ifdef WITH_SELINUX | 40 | #ifdef WITH_SELINUX |
41 | #include <selinux/selinux.h> | 41 | #include <selinux/selinux.h> |
42 | #include <selinux/flask.h> | ||
43 | #include <selinux/get_context_list.h> | 42 | #include <selinux/get_context_list.h> |
44 | 43 | ||
45 | #ifndef SSH_SELINUX_UNCONFINED_TYPE | 44 | #ifndef SSH_SELINUX_UNCONFINED_TYPE |
@@ -152,6 +151,7 @@ ssh_selinux_setup_pty(char *pwname, const char *tty, const char *role) | |||
152 | security_context_t new_tty_ctx = NULL; | 151 | security_context_t new_tty_ctx = NULL; |
153 | security_context_t user_ctx = NULL; | 152 | security_context_t user_ctx = NULL; |
154 | security_context_t old_tty_ctx = NULL; | 153 | security_context_t old_tty_ctx = NULL; |
154 | security_class_t chrclass; | ||
155 | 155 | ||
156 | if (!ssh_selinux_enabled()) | 156 | if (!ssh_selinux_enabled()) |
157 | return; | 157 | return; |
@@ -166,9 +166,12 @@ ssh_selinux_setup_pty(char *pwname, const char *tty, const char *role) | |||
166 | error("%s: getfilecon: %s", __func__, strerror(errno)); | 166 | error("%s: getfilecon: %s", __func__, strerror(errno)); |
167 | goto out; | 167 | goto out; |
168 | } | 168 | } |
169 | 169 | if ((chrclass = string_to_security_class("chr_file")) == 0) { | |
170 | error("%s: couldn't get security class for chr_file", __func__); | ||
171 | goto out; | ||
172 | } | ||
170 | if (security_compute_relabel(user_ctx, old_tty_ctx, | 173 | if (security_compute_relabel(user_ctx, old_tty_ctx, |
171 | SECCLASS_CHR_FILE, &new_tty_ctx) != 0) { | 174 | chrclass, &new_tty_ctx) != 0) { |
172 | error("%s: security_compute_relabel: %s", | 175 | error("%s: security_compute_relabel: %s", |
173 | __func__, strerror(errno)); | 176 | __func__, strerror(errno)); |
174 | goto out; | 177 | goto out; |
diff --git a/openbsd-compat/port-tun.c b/openbsd-compat/port-net.c index 7579c6084..7050629c3 100644 --- a/openbsd-compat/port-tun.c +++ b/openbsd-compat/port-net.c | |||
@@ -37,6 +37,90 @@ | |||
37 | #include "ssherr.h" | 37 | #include "ssherr.h" |
38 | 38 | ||
39 | /* | 39 | /* |
40 | * This file contains various portability code for network support, | ||
41 | * including tun/tap forwarding and routing domains. | ||
42 | */ | ||
43 | |||
44 | #if defined(SYS_RDOMAIN_LINUX) || defined(SSH_TUN_LINUX) | ||
45 | #include <linux/if.h> | ||
46 | #endif | ||
47 | |||
48 | #if defined(SYS_RDOMAIN_LINUX) | ||
49 | char * | ||
50 | sys_get_rdomain(int fd) | ||
51 | { | ||
52 | char dev[IFNAMSIZ + 1]; | ||
53 | socklen_t len = sizeof(dev) - 1; | ||
54 | |||
55 | if (getsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, dev, &len) == -1) { | ||
56 | error("%s: cannot determine VRF for fd=%d : %s", | ||
57 | __func__, fd, strerror(errno)); | ||
58 | return NULL; | ||
59 | } | ||
60 | dev[len] = '\0'; | ||
61 | return strdup(dev); | ||
62 | } | ||
63 | |||
64 | int | ||
65 | sys_set_rdomain(int fd, const char *name) | ||
66 | { | ||
67 | if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, | ||
68 | name, strlen(name)) == -1) { | ||
69 | error("%s: setsockopt(%d, SO_BINDTODEVICE, %s): %s", | ||
70 | __func__, fd, name, strerror(errno)); | ||
71 | return -1; | ||
72 | } | ||
73 | return 0; | ||
74 | } | ||
75 | |||
76 | int | ||
77 | sys_valid_rdomain(const char *name) | ||
78 | { | ||
79 | int fd; | ||
80 | |||
81 | /* | ||
82 | * This is a pretty crappy way to test. It would be better to | ||
83 | * check whether "name" represents a VRF device, but apparently | ||
84 | * that requires an rtnetlink transaction. | ||
85 | */ | ||
86 | if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) | ||
87 | return 0; | ||
88 | if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, | ||
89 | name, strlen(name)) == -1) { | ||
90 | close(fd); | ||
91 | return 0; | ||
92 | } | ||
93 | close(fd); | ||
94 | return 1; | ||
95 | } | ||
96 | #elif defined(SYS_RDOMAIN_XXX) | ||
97 | /* XXX examples */ | ||
98 | char * | ||
99 | sys_get_rdomain(int fd) | ||
100 | { | ||
101 | return NULL; | ||
102 | } | ||
103 | |||
104 | int | ||
105 | sys_set_rdomain(int fd, const char *name) | ||
106 | { | ||
107 | return -1; | ||
108 | } | ||
109 | |||
110 | int | ||
111 | valid_rdomain(const char *name) | ||
112 | { | ||
113 | return 0; | ||
114 | } | ||
115 | |||
116 | void | ||
117 | sys_set_process_rdomain(const char *name) | ||
118 | { | ||
119 | fatal("%s: not supported", __func__); | ||
120 | } | ||
121 | #endif /* defined(SYS_RDOMAIN_XXX) */ | ||
122 | |||
123 | /* | ||
40 | * This is the portable version of the SSH tunnel forwarding, it | 124 | * This is the portable version of the SSH tunnel forwarding, it |
41 | * uses some preprocessor definitions for various platform-specific | 125 | * uses some preprocessor definitions for various platform-specific |
42 | * settings. | 126 | * settings. |
@@ -52,16 +136,18 @@ | |||
52 | */ | 136 | */ |
53 | 137 | ||
54 | #if defined(SSH_TUN_LINUX) | 138 | #if defined(SSH_TUN_LINUX) |
55 | #include <linux/if.h> | ||
56 | #include <linux/if_tun.h> | 139 | #include <linux/if_tun.h> |
57 | 140 | ||
58 | int | 141 | int |
59 | sys_tun_open(int tun, int mode) | 142 | sys_tun_open(int tun, int mode, char **ifname) |
60 | { | 143 | { |
61 | struct ifreq ifr; | 144 | struct ifreq ifr; |
62 | int fd = -1; | 145 | int fd = -1; |
63 | const char *name = NULL; | 146 | const char *name = NULL; |
64 | 147 | ||
148 | if (ifname != NULL) | ||
149 | *ifname = NULL; | ||
150 | |||
65 | if ((fd = open("/dev/net/tun", O_RDWR)) == -1) { | 151 | if ((fd = open("/dev/net/tun", O_RDWR)) == -1) { |
66 | debug("%s: failed to open tunnel control interface: %s", | 152 | debug("%s: failed to open tunnel control interface: %s", |
67 | __func__, strerror(errno)); | 153 | __func__, strerror(errno)); |
@@ -99,6 +185,9 @@ sys_tun_open(int tun, int mode) | |||
99 | else | 185 | else |
100 | debug("%s: %s mode %d fd %d", __func__, ifr.ifr_name, mode, fd); | 186 | debug("%s: %s mode %d fd %d", __func__, ifr.ifr_name, mode, fd); |
101 | 187 | ||
188 | if (ifname != NULL && (*ifname = strdup(ifr.ifr_name))) | ||
189 | goto failed; | ||
190 | |||
102 | return (fd); | 191 | return (fd); |
103 | 192 | ||
104 | failed: | 193 | failed: |
@@ -116,13 +205,16 @@ sys_tun_open(int tun, int mode) | |||
116 | #endif | 205 | #endif |
117 | 206 | ||
118 | int | 207 | int |
119 | sys_tun_open(int tun, int mode) | 208 | sys_tun_open(int tun, int mode, char **ifname) |
120 | { | 209 | { |
121 | struct ifreq ifr; | 210 | struct ifreq ifr; |
122 | char name[100]; | 211 | char name[100]; |
123 | int fd = -1, sock, flag; | 212 | int fd = -1, sock, flag; |
124 | const char *tunbase = "tun"; | 213 | const char *tunbase = "tun"; |
125 | 214 | ||
215 | if (ifname != NULL) | ||
216 | *ifname = NULL; | ||
217 | |||
126 | if (mode == SSH_TUNMODE_ETHERNET) { | 218 | if (mode == SSH_TUNMODE_ETHERNET) { |
127 | #ifdef SSH_TUN_NO_L2 | 219 | #ifdef SSH_TUN_NO_L2 |
128 | debug("%s: no layer 2 tunnelling support", __func__); | 220 | debug("%s: no layer 2 tunnelling support", __func__); |
@@ -180,6 +272,9 @@ sys_tun_open(int tun, int mode) | |||
180 | goto failed; | 272 | goto failed; |
181 | } | 273 | } |
182 | 274 | ||
275 | if (ifname != NULL && (*ifname = strdup(ifr.ifr_name))) | ||
276 | goto failed; | ||
277 | |||
183 | close(sock); | 278 | close(sock); |
184 | return (fd); | 279 | return (fd); |
185 | 280 | ||
diff --git a/openbsd-compat/port-tun.h b/openbsd-compat/port-net.h index 103514370..3a0d1104b 100644 --- a/openbsd-compat/port-tun.h +++ b/openbsd-compat/port-net.h | |||
@@ -22,7 +22,7 @@ struct ssh; | |||
22 | 22 | ||
23 | #if defined(SSH_TUN_LINUX) || defined(SSH_TUN_FREEBSD) | 23 | #if defined(SSH_TUN_LINUX) || defined(SSH_TUN_FREEBSD) |
24 | # define CUSTOM_SYS_TUN_OPEN | 24 | # define CUSTOM_SYS_TUN_OPEN |
25 | int sys_tun_open(int, int); | 25 | int sys_tun_open(int, int, char **); |
26 | #endif | 26 | #endif |
27 | 27 | ||
28 | #if defined(SSH_TUN_COMPAT_AF) || defined(SSH_TUN_PREPEND_AF) | 28 | #if defined(SSH_TUN_COMPAT_AF) || defined(SSH_TUN_PREPEND_AF) |
@@ -31,4 +31,18 @@ int sys_tun_infilter(struct ssh *, struct Channel *, char *, int); | |||
31 | u_char *sys_tun_outfilter(struct ssh *, struct Channel *, u_char **, size_t *); | 31 | u_char *sys_tun_outfilter(struct ssh *, struct Channel *, u_char **, size_t *); |
32 | #endif | 32 | #endif |
33 | 33 | ||
34 | #if defined(SYS_RDOMAIN_LINUX) | ||
35 | # define HAVE_SYS_GET_RDOMAIN | ||
36 | # define HAVE_SYS_SET_RDOMAIN | ||
37 | # define HAVE_SYS_VALID_RDOMAIN | ||
38 | char *sys_get_rdomain(int fd); | ||
39 | int sys_set_rdomain(int fd, const char *name); | ||
40 | int sys_valid_rdomain(const char *name); | ||
41 | #endif | ||
42 | |||
43 | #if defined(SYS_RDOMAIN_XXX) | ||
44 | # define HAVE_SYS_SET_PROCESS_RDOMAIN | ||
45 | void sys_set_process_rdomain(const char *name); | ||
46 | #endif | ||
47 | |||
34 | #endif | 48 | #endif |
diff --git a/openbsd-compat/port-uw.c b/openbsd-compat/port-uw.c index db24dbb94..014cac264 100644 --- a/openbsd-compat/port-uw.c +++ b/openbsd-compat/port-uw.c | |||
@@ -47,12 +47,14 @@ | |||
47 | #include "hostfile.h" | 47 | #include "hostfile.h" |
48 | #include "auth.h" | 48 | #include "auth.h" |
49 | #include "ssh.h" | 49 | #include "ssh.h" |
50 | #include "ssh_api.h" | ||
50 | 51 | ||
51 | int nischeck(char *); | 52 | int nischeck(char *); |
52 | 53 | ||
53 | int | 54 | int |
54 | sys_auth_passwd(Authctxt *authctxt, const char *password) | 55 | sys_auth_passwd(struct ssh *ssh, const char *password) |
55 | { | 56 | { |
57 | Authctxt *authctxt = ssh->authctxt; | ||
56 | struct passwd *pw = authctxt->pw; | 58 | struct passwd *pw = authctxt->pw; |
57 | char *salt; | 59 | char *salt; |
58 | int result; | 60 | int result; |
diff --git a/openbsd-compat/readpassphrase.c b/openbsd-compat/readpassphrase.c index 24aed6e46..ff8ff3dec 100644 --- a/openbsd-compat/readpassphrase.c +++ b/openbsd-compat/readpassphrase.c | |||
@@ -46,14 +46,6 @@ | |||
46 | # define _POSIX_VDISABLE VDISABLE | 46 | # define _POSIX_VDISABLE VDISABLE |
47 | #endif | 47 | #endif |
48 | 48 | ||
49 | #ifndef _NSIG | ||
50 | # ifdef NSIG | ||
51 | # define _NSIG NSIG | ||
52 | # else | ||
53 | # define _NSIG 128 | ||
54 | # endif | ||
55 | #endif | ||
56 | |||
57 | static volatile sig_atomic_t signo[_NSIG]; | 49 | static volatile sig_atomic_t signo[_NSIG]; |
58 | 50 | ||
59 | static void handler(int); | 51 | static void handler(int); |
diff --git a/openbsd-compat/regress/Makefile.in b/openbsd-compat/regress/Makefile.in index dabdb0912..529331be5 100644 --- a/openbsd-compat/regress/Makefile.in +++ b/openbsd-compat/regress/Makefile.in | |||
@@ -1,5 +1,3 @@ | |||
1 | # $Id: Makefile.in,v 1.5 2014/06/17 13:06:08 dtucker Exp $ | ||
2 | |||
3 | sysconfdir=@sysconfdir@ | 1 | sysconfdir=@sysconfdir@ |
4 | piddir=@piddir@ | 2 | piddir=@piddir@ |
5 | srcdir=@srcdir@ | 3 | srcdir=@srcdir@ |
diff --git a/openbsd-compat/strndup.c b/openbsd-compat/strndup.c new file mode 100644 index 000000000..ebb4eccfb --- /dev/null +++ b/openbsd-compat/strndup.c | |||
@@ -0,0 +1,43 @@ | |||
1 | /* $OpenBSD: strndup.c,v 1.2 2015/08/31 02:53:57 guenther Exp $ */ | ||
2 | |||
3 | /* | ||
4 | * Copyright (c) 2010 Todd C. Miller <Todd.Miller@courtesan.com> | ||
5 | * | ||
6 | * 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 | * copyright notice and this permission notice appear in all copies. | ||
9 | * | ||
10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
17 | */ | ||
18 | |||
19 | #include "config.h" | ||
20 | #if !defined(HAVE_STRNDUP) || defined(BROKEN_STRNDUP) | ||
21 | #include <sys/types.h> | ||
22 | |||
23 | #include <stddef.h> | ||
24 | #include <stdlib.h> | ||
25 | #include <string.h> | ||
26 | |||
27 | char * | ||
28 | strndup(const char *str, size_t maxlen) | ||
29 | { | ||
30 | char *copy; | ||
31 | size_t len; | ||
32 | |||
33 | len = strnlen(str, maxlen); | ||
34 | copy = malloc(len + 1); | ||
35 | if (copy != NULL) { | ||
36 | (void)memcpy(copy, str, len); | ||
37 | copy[len] = '\0'; | ||
38 | } | ||
39 | |||
40 | return copy; | ||
41 | } | ||
42 | DEF_WEAK(strndup); | ||
43 | #endif /* HAVE_STRNDUP */ | ||
diff --git a/openbsd-compat/strnlen.c b/openbsd-compat/strnlen.c index 93d515595..8cc6b96b5 100644 --- a/openbsd-compat/strnlen.c +++ b/openbsd-compat/strnlen.c | |||
@@ -19,7 +19,7 @@ | |||
19 | /* OPENBSD ORIGINAL: lib/libc/string/strnlen.c */ | 19 | /* OPENBSD ORIGINAL: lib/libc/string/strnlen.c */ |
20 | 20 | ||
21 | #include "config.h" | 21 | #include "config.h" |
22 | #ifndef HAVE_STRNLEN | 22 | #if !defined(HAVE_STRNLEN) || defined(BROKEN_STRNLEN) |
23 | #include <sys/types.h> | 23 | #include <sys/types.h> |
24 | 24 | ||
25 | #include <string.h> | 25 | #include <string.h> |
diff --git a/opensshd.init.in b/opensshd.init.in index 3908566b7..99e5a51ab 100755 --- a/opensshd.init.in +++ b/opensshd.init.in | |||
@@ -17,7 +17,6 @@ PIDFILE=$piddir/sshd.pid | |||
17 | PidFile=`grep "^PidFile" ${sysconfdir}/sshd_config | tr "=" " " | awk '{print $2}'` | 17 | PidFile=`grep "^PidFile" ${sysconfdir}/sshd_config | tr "=" " " | awk '{print $2}'` |
18 | [ X$PidFile = X ] || PIDFILE=$PidFile | 18 | [ X$PidFile = X ] || PIDFILE=$PidFile |
19 | SSH_KEYGEN=$prefix/bin/ssh-keygen | 19 | SSH_KEYGEN=$prefix/bin/ssh-keygen |
20 | HOST_KEY_RSA1=$sysconfdir/ssh_host_key | ||
21 | HOST_KEY_DSA=$sysconfdir/ssh_host_dsa_key | 20 | HOST_KEY_DSA=$sysconfdir/ssh_host_dsa_key |
22 | HOST_KEY_RSA=$sysconfdir/ssh_host_rsa_key | 21 | HOST_KEY_RSA=$sysconfdir/ssh_host_rsa_key |
23 | @COMMENT_OUT_ECC@HOST_KEY_ECDSA=$sysconfdir/ssh_host_ecdsa_key | 22 | @COMMENT_OUT_ECC@HOST_KEY_ECDSA=$sysconfdir/ssh_host_ecdsa_key |
@@ -25,9 +24,6 @@ HOST_KEY_ED25519=$sysconfdir/ssh_host_ed25519_key | |||
25 | 24 | ||
26 | 25 | ||
27 | checkkeys() { | 26 | checkkeys() { |
28 | @COMMENT_OUT_RSA1@ if [ ! -f $HOST_KEY_RSA1 ]; then | ||
29 | @COMMENT_OUT_RSA1@ ${SSH_KEYGEN} -t rsa1 -f ${HOST_KEY_RSA1} -N "" | ||
30 | @COMMENT_OUT_RSA1@ fi | ||
31 | if [ ! -f $HOST_KEY_DSA ]; then | 27 | if [ ! -f $HOST_KEY_DSA ]; then |
32 | ${SSH_KEYGEN} -t dsa -f ${HOST_KEY_DSA} -N "" | 28 | ${SSH_KEYGEN} -t dsa -f ${HOST_KEY_DSA} -N "" |
33 | fi | 29 | fi |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: packet.c,v 1.264 2017/09/12 06:32:07 djm Exp $ */ | 1 | /* $OpenBSD: packet.c,v 1.269 2017/12/18 23:13:42 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 |
@@ -557,6 +557,18 @@ ssh_local_port(struct ssh *ssh) | |||
557 | return ssh->local_port; | 557 | return ssh->local_port; |
558 | } | 558 | } |
559 | 559 | ||
560 | /* Returns the routing domain of the input socket, or NULL if unavailable */ | ||
561 | const char * | ||
562 | ssh_packet_rdomain_in(struct ssh *ssh) | ||
563 | { | ||
564 | if (ssh->rdomain_in != NULL) | ||
565 | return ssh->rdomain_in; | ||
566 | if (!ssh_packet_connection_is_on_socket(ssh)) | ||
567 | return NULL; | ||
568 | ssh->rdomain_in = get_rdomain(ssh->state->connection_in); | ||
569 | return ssh->rdomain_in; | ||
570 | } | ||
571 | |||
560 | /* Closes the connection and clears and frees internal data structures. */ | 572 | /* Closes the connection and clears and frees internal data structures. */ |
561 | 573 | ||
562 | static void | 574 | static void |
@@ -1320,7 +1332,7 @@ ssh_packet_read_seqnr(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p) | |||
1320 | for (;;) { | 1332 | for (;;) { |
1321 | if (state->packet_timeout_ms != -1) { | 1333 | if (state->packet_timeout_ms != -1) { |
1322 | ms_to_timeval(&timeout, ms_remain); | 1334 | ms_to_timeval(&timeout, ms_remain); |
1323 | gettimeofday(&start, NULL); | 1335 | monotime_tv(&start); |
1324 | } | 1336 | } |
1325 | if ((r = select(state->connection_in + 1, setp, | 1337 | if ((r = select(state->connection_in + 1, setp, |
1326 | NULL, NULL, timeoutp)) >= 0) | 1338 | NULL, NULL, timeoutp)) >= 0) |
@@ -1774,6 +1786,8 @@ ssh_packet_send_debug(struct ssh *ssh, const char *fmt,...) | |||
1774 | vsnprintf(buf, sizeof(buf), fmt, args); | 1786 | vsnprintf(buf, sizeof(buf), fmt, args); |
1775 | va_end(args); | 1787 | va_end(args); |
1776 | 1788 | ||
1789 | debug3("sending debug message: %s", buf); | ||
1790 | |||
1777 | if ((r = sshpkt_start(ssh, SSH2_MSG_DEBUG)) != 0 || | 1791 | if ((r = sshpkt_start(ssh, SSH2_MSG_DEBUG)) != 0 || |
1778 | (r = sshpkt_put_u8(ssh, 0)) != 0 || /* always display */ | 1792 | (r = sshpkt_put_u8(ssh, 0)) != 0 || /* always display */ |
1779 | (r = sshpkt_put_cstring(ssh, buf)) != 0 || | 1793 | (r = sshpkt_put_cstring(ssh, buf)) != 0 || |
@@ -1783,8 +1797,8 @@ ssh_packet_send_debug(struct ssh *ssh, const char *fmt,...) | |||
1783 | fatal("%s: %s", __func__, ssh_err(r)); | 1797 | fatal("%s: %s", __func__, ssh_err(r)); |
1784 | } | 1798 | } |
1785 | 1799 | ||
1786 | static void | 1800 | void |
1787 | fmt_connection_id(struct ssh *ssh, char *s, size_t l) | 1801 | sshpkt_fmt_connection_id(struct ssh *ssh, char *s, size_t l) |
1788 | { | 1802 | { |
1789 | snprintf(s, l, "%.200s%s%s port %d", | 1803 | snprintf(s, l, "%.200s%s%s port %d", |
1790 | ssh->log_preamble ? ssh->log_preamble : "", | 1804 | ssh->log_preamble ? ssh->log_preamble : "", |
@@ -1800,7 +1814,7 @@ sshpkt_fatal(struct ssh *ssh, const char *tag, int r) | |||
1800 | { | 1814 | { |
1801 | char remote_id[512]; | 1815 | char remote_id[512]; |
1802 | 1816 | ||
1803 | fmt_connection_id(ssh, remote_id, sizeof(remote_id)); | 1817 | sshpkt_fmt_connection_id(ssh, remote_id, sizeof(remote_id)); |
1804 | 1818 | ||
1805 | switch (r) { | 1819 | switch (r) { |
1806 | case SSH_ERR_CONN_CLOSED: | 1820 | case SSH_ERR_CONN_CLOSED: |
@@ -1862,7 +1876,7 @@ ssh_packet_disconnect(struct ssh *ssh, const char *fmt,...) | |||
1862 | * Format the message. Note that the caller must make sure the | 1876 | * Format the message. Note that the caller must make sure the |
1863 | * message is of limited size. | 1877 | * message is of limited size. |
1864 | */ | 1878 | */ |
1865 | fmt_connection_id(ssh, remote_id, sizeof(remote_id)); | 1879 | sshpkt_fmt_connection_id(ssh, remote_id, sizeof(remote_id)); |
1866 | va_start(args, fmt); | 1880 | va_start(args, fmt); |
1867 | vsnprintf(buf, sizeof(buf), fmt, args); | 1881 | vsnprintf(buf, sizeof(buf), fmt, args); |
1868 | va_end(args); | 1882 | va_end(args); |
@@ -1945,7 +1959,7 @@ ssh_packet_write_wait(struct ssh *ssh) | |||
1945 | for (;;) { | 1959 | for (;;) { |
1946 | if (state->packet_timeout_ms != -1) { | 1960 | if (state->packet_timeout_ms != -1) { |
1947 | ms_to_timeval(&timeout, ms_remain); | 1961 | ms_to_timeval(&timeout, ms_remain); |
1948 | gettimeofday(&start, NULL); | 1962 | monotime_tv(&start); |
1949 | } | 1963 | } |
1950 | if ((ret = select(state->connection_out + 1, | 1964 | if ((ret = select(state->connection_out + 1, |
1951 | NULL, setp, NULL, timeoutp)) >= 0) | 1965 | NULL, setp, NULL, timeoutp)) >= 0) |
@@ -2159,7 +2173,9 @@ kex_to_blob(struct sshbuf *m, struct kex *kex) | |||
2159 | if ((r = sshbuf_put_string(m, kex->session_id, | 2173 | if ((r = sshbuf_put_string(m, kex->session_id, |
2160 | kex->session_id_len)) != 0 || | 2174 | kex->session_id_len)) != 0 || |
2161 | (r = sshbuf_put_u32(m, kex->we_need)) != 0 || | 2175 | (r = sshbuf_put_u32(m, kex->we_need)) != 0 || |
2176 | (r = sshbuf_put_cstring(m, kex->hostkey_alg)) != 0 || | ||
2162 | (r = sshbuf_put_u32(m, kex->hostkey_type)) != 0 || | 2177 | (r = sshbuf_put_u32(m, kex->hostkey_type)) != 0 || |
2178 | (r = sshbuf_put_u32(m, kex->hostkey_nid)) != 0 || | ||
2163 | (r = sshbuf_put_u32(m, kex->kex_type)) != 0 || | 2179 | (r = sshbuf_put_u32(m, kex->kex_type)) != 0 || |
2164 | (r = sshbuf_put_stringb(m, kex->my)) != 0 || | 2180 | (r = sshbuf_put_stringb(m, kex->my)) != 0 || |
2165 | (r = sshbuf_put_stringb(m, kex->peer)) != 0 || | 2181 | (r = sshbuf_put_stringb(m, kex->peer)) != 0 || |
@@ -2323,7 +2339,9 @@ kex_from_blob(struct sshbuf *m, struct kex **kexp) | |||
2323 | } | 2339 | } |
2324 | if ((r = sshbuf_get_string(m, &kex->session_id, &kex->session_id_len)) != 0 || | 2340 | if ((r = sshbuf_get_string(m, &kex->session_id, &kex->session_id_len)) != 0 || |
2325 | (r = sshbuf_get_u32(m, &kex->we_need)) != 0 || | 2341 | (r = sshbuf_get_u32(m, &kex->we_need)) != 0 || |
2342 | (r = sshbuf_get_cstring(m, &kex->hostkey_alg, NULL)) != 0 || | ||
2326 | (r = sshbuf_get_u32(m, (u_int *)&kex->hostkey_type)) != 0 || | 2343 | (r = sshbuf_get_u32(m, (u_int *)&kex->hostkey_type)) != 0 || |
2344 | (r = sshbuf_get_u32(m, (u_int *)&kex->hostkey_nid)) != 0 || | ||
2327 | (r = sshbuf_get_u32(m, &kex->kex_type)) != 0 || | 2345 | (r = sshbuf_get_u32(m, &kex->kex_type)) != 0 || |
2328 | (r = sshbuf_get_stringb(m, kex->my)) != 0 || | 2346 | (r = sshbuf_get_stringb(m, kex->my)) != 0 || |
2329 | (r = sshbuf_get_stringb(m, kex->peer)) != 0 || | 2347 | (r = sshbuf_get_stringb(m, kex->peer)) != 0 || |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: packet.h,v 1.82 2017/09/12 06:32:07 djm Exp $ */ | 1 | /* $OpenBSD: packet.h,v 1.84 2017/12/10 05:55:29 dtucker Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -61,6 +61,7 @@ struct ssh { | |||
61 | int remote_port; | 61 | int remote_port; |
62 | char *local_ipaddr; | 62 | char *local_ipaddr; |
63 | int local_port; | 63 | int local_port; |
64 | char *rdomain_in; | ||
64 | 65 | ||
65 | /* Optional preamble for log messages (e.g. username) */ | 66 | /* Optional preamble for log messages (e.g. username) */ |
66 | char *log_preamble; | 67 | char *log_preamble; |
@@ -162,6 +163,7 @@ const char *ssh_remote_ipaddr(struct ssh *); | |||
162 | int ssh_remote_port(struct ssh *); | 163 | int ssh_remote_port(struct ssh *); |
163 | const char *ssh_local_ipaddr(struct ssh *); | 164 | const char *ssh_local_ipaddr(struct ssh *); |
164 | int ssh_local_port(struct ssh *); | 165 | int ssh_local_port(struct ssh *); |
166 | const char *ssh_packet_rdomain_in(struct ssh *); | ||
165 | 167 | ||
166 | void ssh_packet_set_rekey_limits(struct ssh *, u_int64_t, u_int32_t); | 168 | void ssh_packet_set_rekey_limits(struct ssh *, u_int64_t, u_int32_t); |
167 | time_t ssh_packet_get_rekey_timeout(struct ssh *); | 169 | time_t ssh_packet_get_rekey_timeout(struct ssh *); |
@@ -200,6 +202,7 @@ int sshpkt_get_cstring(struct ssh *ssh, char **valp, size_t *lenp); | |||
200 | int sshpkt_get_ec(struct ssh *ssh, EC_POINT *v, const EC_GROUP *g); | 202 | int sshpkt_get_ec(struct ssh *ssh, EC_POINT *v, const EC_GROUP *g); |
201 | int sshpkt_get_bignum2(struct ssh *ssh, BIGNUM *v); | 203 | int sshpkt_get_bignum2(struct ssh *ssh, BIGNUM *v); |
202 | int sshpkt_get_end(struct ssh *ssh); | 204 | int sshpkt_get_end(struct ssh *ssh); |
205 | void sshpkt_fmt_connection_id(struct ssh *ssh, char *s, size_t l); | ||
203 | const u_char *sshpkt_ptr(struct ssh *, size_t *lenp); | 206 | const u_char *sshpkt_ptr(struct ssh *, size_t *lenp); |
204 | 207 | ||
205 | /* OLD API */ | 208 | /* OLD API */ |
diff --git a/pathnames.h b/pathnames.h index 1c221b01b..cb44caa4d 100644 --- a/pathnames.h +++ b/pathnames.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: pathnames.h,v 1.27 2017/05/05 10:42:49 naddy Exp $ */ | 1 | /* $OpenBSD: pathnames.h,v 1.28 2018/02/23 15:58:37 markus Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -39,6 +39,7 @@ | |||
39 | #define _PATH_HOST_DSA_KEY_FILE SSHDIR "/ssh_host_dsa_key" | 39 | #define _PATH_HOST_DSA_KEY_FILE SSHDIR "/ssh_host_dsa_key" |
40 | #define _PATH_HOST_ECDSA_KEY_FILE SSHDIR "/ssh_host_ecdsa_key" | 40 | #define _PATH_HOST_ECDSA_KEY_FILE SSHDIR "/ssh_host_ecdsa_key" |
41 | #define _PATH_HOST_ED25519_KEY_FILE SSHDIR "/ssh_host_ed25519_key" | 41 | #define _PATH_HOST_ED25519_KEY_FILE SSHDIR "/ssh_host_ed25519_key" |
42 | #define _PATH_HOST_XMSS_KEY_FILE SSHDIR "/ssh_host_xmss_key" | ||
42 | #define _PATH_HOST_RSA_KEY_FILE SSHDIR "/ssh_host_rsa_key" | 43 | #define _PATH_HOST_RSA_KEY_FILE SSHDIR "/ssh_host_rsa_key" |
43 | #define _PATH_DH_MODULI SSHDIR "/moduli" | 44 | #define _PATH_DH_MODULI SSHDIR "/moduli" |
44 | 45 | ||
@@ -75,6 +76,7 @@ | |||
75 | #define _PATH_SSH_CLIENT_ID_ECDSA _PATH_SSH_USER_DIR "/id_ecdsa" | 76 | #define _PATH_SSH_CLIENT_ID_ECDSA _PATH_SSH_USER_DIR "/id_ecdsa" |
76 | #define _PATH_SSH_CLIENT_ID_RSA _PATH_SSH_USER_DIR "/id_rsa" | 77 | #define _PATH_SSH_CLIENT_ID_RSA _PATH_SSH_USER_DIR "/id_rsa" |
77 | #define _PATH_SSH_CLIENT_ID_ED25519 _PATH_SSH_USER_DIR "/id_ed25519" | 78 | #define _PATH_SSH_CLIENT_ID_ED25519 _PATH_SSH_USER_DIR "/id_ed25519" |
79 | #define _PATH_SSH_CLIENT_ID_XMSS _PATH_SSH_USER_DIR "/id_xmss" | ||
78 | 80 | ||
79 | /* | 81 | /* |
80 | * Configuration file in user's home directory. This file need not be | 82 | * Configuration file in user's home directory. This file need not be |
diff --git a/readconf.c b/readconf.c index 41f36aa8d..efcf2d628 100644 --- a/readconf.c +++ b/readconf.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: readconf.c,v 1.279 2017/09/21 19:16:53 markus Exp $ */ | 1 | /* $OpenBSD: readconf.c,v 1.283 2018/02/23 15:58:37 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 |
@@ -156,7 +156,7 @@ typedef enum { | |||
156 | oPubkeyAuthentication, | 156 | oPubkeyAuthentication, |
157 | oKbdInteractiveAuthentication, oKbdInteractiveDevices, oHostKeyAlias, | 157 | oKbdInteractiveAuthentication, oKbdInteractiveDevices, oHostKeyAlias, |
158 | oDynamicForward, oPreferredAuthentications, oHostbasedAuthentication, | 158 | oDynamicForward, oPreferredAuthentications, oHostbasedAuthentication, |
159 | oHostKeyAlgorithms, oBindAddress, oPKCS11Provider, | 159 | oHostKeyAlgorithms, oBindAddress, oBindInterface, oPKCS11Provider, |
160 | oClearAllForwardings, oNoHostAuthenticationForLocalhost, | 160 | oClearAllForwardings, oNoHostAuthenticationForLocalhost, |
161 | oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout, | 161 | oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout, |
162 | oAddressFamily, oGssAuthentication, oGssDelegateCreds, | 162 | oAddressFamily, oGssAuthentication, oGssDelegateCreds, |
@@ -280,6 +280,7 @@ static struct { | |||
280 | { "preferredauthentications", oPreferredAuthentications }, | 280 | { "preferredauthentications", oPreferredAuthentications }, |
281 | { "hostkeyalgorithms", oHostKeyAlgorithms }, | 281 | { "hostkeyalgorithms", oHostKeyAlgorithms }, |
282 | { "bindaddress", oBindAddress }, | 282 | { "bindaddress", oBindAddress }, |
283 | { "bindinterface", oBindInterface }, | ||
283 | { "clearallforwardings", oClearAllForwardings }, | 284 | { "clearallforwardings", oClearAllForwardings }, |
284 | { "enablesshkeysign", oEnableSSHKeysign }, | 285 | { "enablesshkeysign", oEnableSSHKeysign }, |
285 | { "verifyhostkeydns", oVerifyHostKeyDNS }, | 286 | { "verifyhostkeydns", oVerifyHostKeyDNS }, |
@@ -699,34 +700,6 @@ match_cfg_line(Options *options, char **condition, struct passwd *pw, | |||
699 | return result; | 700 | return result; |
700 | } | 701 | } |
701 | 702 | ||
702 | /* Check and prepare a domain name: removes trailing '.' and lowercases */ | ||
703 | static void | ||
704 | valid_domain(char *name, const char *filename, int linenum) | ||
705 | { | ||
706 | size_t i, l = strlen(name); | ||
707 | u_char c, last = '\0'; | ||
708 | |||
709 | if (l == 0) | ||
710 | fatal("%s line %d: empty hostname suffix", filename, linenum); | ||
711 | if (!isalpha((u_char)name[0]) && !isdigit((u_char)name[0])) | ||
712 | fatal("%s line %d: hostname suffix \"%.100s\" " | ||
713 | "starts with invalid character", filename, linenum, name); | ||
714 | for (i = 0; i < l; i++) { | ||
715 | c = tolower((u_char)name[i]); | ||
716 | name[i] = (char)c; | ||
717 | if (last == '.' && c == '.') | ||
718 | fatal("%s line %d: hostname suffix \"%.100s\" contains " | ||
719 | "consecutive separators", filename, linenum, name); | ||
720 | if (c != '.' && c != '-' && !isalnum(c) && | ||
721 | c != '_') /* technically invalid, but common */ | ||
722 | fatal("%s line %d: hostname suffix \"%.100s\" contains " | ||
723 | "invalid characters", filename, linenum, name); | ||
724 | last = c; | ||
725 | } | ||
726 | if (name[l - 1] == '.') | ||
727 | name[l - 1] = '\0'; | ||
728 | } | ||
729 | |||
730 | /* | 703 | /* |
731 | * Returns the number of the token pointed to by cp or oBadOption. | 704 | * Returns the number of the token pointed to by cp or oBadOption. |
732 | */ | 705 | */ |
@@ -861,6 +834,7 @@ process_config_line_depth(Options *options, struct passwd *pw, const char *host, | |||
861 | const struct multistate *multistate_ptr; | 834 | const struct multistate *multistate_ptr; |
862 | struct allowed_cname *cname; | 835 | struct allowed_cname *cname; |
863 | glob_t gl; | 836 | glob_t gl; |
837 | const char *errstr; | ||
864 | 838 | ||
865 | if (activep == NULL) { /* We are processing a command line directive */ | 839 | if (activep == NULL) { /* We are processing a command line directive */ |
866 | cmdline = 1; | 840 | cmdline = 1; |
@@ -1162,6 +1136,10 @@ parse_char_array: | |||
1162 | charptr = &options->bind_address; | 1136 | charptr = &options->bind_address; |
1163 | goto parse_string; | 1137 | goto parse_string; |
1164 | 1138 | ||
1139 | case oBindInterface: | ||
1140 | charptr = &options->bind_interface; | ||
1141 | goto parse_string; | ||
1142 | |||
1165 | case oPKCS11Provider: | 1143 | case oPKCS11Provider: |
1166 | charptr = &options->pkcs11_provider; | 1144 | charptr = &options->pkcs11_provider; |
1167 | goto parse_string; | 1145 | goto parse_string; |
@@ -1195,15 +1173,9 @@ parse_command: | |||
1195 | intptr = &options->port; | 1173 | intptr = &options->port; |
1196 | parse_int: | 1174 | parse_int: |
1197 | arg = strdelim(&s); | 1175 | arg = strdelim(&s); |
1198 | if (!arg || *arg == '\0') | 1176 | if ((errstr = atoi_err(arg, &value)) != NULL) |
1199 | fatal("%.200s line %d: Missing argument.", filename, linenum); | 1177 | fatal("%s line %d: integer value %s.", |
1200 | if (arg[0] < '0' || arg[0] > '9') | 1178 | filename, linenum, errstr); |
1201 | fatal("%.200s line %d: Bad number.", filename, linenum); | ||
1202 | |||
1203 | /* Octal, decimal, or hex format? */ | ||
1204 | value = strtol(arg, &endofnumber, 0); | ||
1205 | if (arg == endofnumber) | ||
1206 | fatal("%.200s line %d: Bad number.", filename, linenum); | ||
1207 | if (*activep && *intptr == -1) | 1179 | if (*activep && *intptr == -1) |
1208 | *intptr = value; | 1180 | *intptr = value; |
1209 | break; | 1181 | break; |
@@ -1600,7 +1572,10 @@ parse_keytypes: | |||
1600 | case oCanonicalDomains: | 1572 | case oCanonicalDomains: |
1601 | value = options->num_canonical_domains != 0; | 1573 | value = options->num_canonical_domains != 0; |
1602 | while ((arg = strdelim(&s)) != NULL && *arg != '\0') { | 1574 | while ((arg = strdelim(&s)) != NULL && *arg != '\0') { |
1603 | valid_domain(arg, filename, linenum); | 1575 | if (!valid_domain(arg, 1, &errstr)) { |
1576 | fatal("%s line %d: %s", filename, linenum, | ||
1577 | errstr); | ||
1578 | } | ||
1604 | if (!*activep || value) | 1579 | if (!*activep || value) |
1605 | continue; | 1580 | continue; |
1606 | if (options->num_canonical_domains >= MAX_CANON_DOMAINS) | 1581 | if (options->num_canonical_domains >= MAX_CANON_DOMAINS) |
@@ -1872,6 +1847,7 @@ initialize_options(Options * options) | |||
1872 | options->log_level = SYSLOG_LEVEL_NOT_SET; | 1847 | options->log_level = SYSLOG_LEVEL_NOT_SET; |
1873 | options->preferred_authentications = NULL; | 1848 | options->preferred_authentications = NULL; |
1874 | options->bind_address = NULL; | 1849 | options->bind_address = NULL; |
1850 | options->bind_interface = NULL; | ||
1875 | options->pkcs11_provider = NULL; | 1851 | options->pkcs11_provider = NULL; |
1876 | options->enable_ssh_keysign = - 1; | 1852 | options->enable_ssh_keysign = - 1; |
1877 | options->no_host_authentication_for_localhost = - 1; | 1853 | options->no_host_authentication_for_localhost = - 1; |
@@ -2015,6 +1991,7 @@ fill_default_options(Options * options) | |||
2015 | #endif | 1991 | #endif |
2016 | add_identity_file(options, "~/", | 1992 | add_identity_file(options, "~/", |
2017 | _PATH_SSH_CLIENT_ID_ED25519, 0); | 1993 | _PATH_SSH_CLIENT_ID_ED25519, 0); |
1994 | add_identity_file(options, "~/", _PATH_SSH_CLIENT_ID_XMSS, 0); | ||
2018 | } | 1995 | } |
2019 | if (options->escape_char == -1) | 1996 | if (options->escape_char == -1) |
2020 | options->escape_char = '~'; | 1997 | options->escape_char = '~'; |
@@ -2347,11 +2324,13 @@ parse_jump(const char *s, Options *o, int active) | |||
2347 | 2324 | ||
2348 | if (first) { | 2325 | if (first) { |
2349 | /* First argument and configuration is active */ | 2326 | /* First argument and configuration is active */ |
2350 | if (parse_user_host_port(cp, &user, &host, &port) != 0) | 2327 | if (parse_ssh_uri(cp, &user, &host, &port) == -1 || |
2328 | parse_user_host_port(cp, &user, &host, &port) != 0) | ||
2351 | goto out; | 2329 | goto out; |
2352 | } else { | 2330 | } else { |
2353 | /* Subsequent argument or inactive configuration */ | 2331 | /* Subsequent argument or inactive configuration */ |
2354 | if (parse_user_host_port(cp, NULL, NULL, NULL) != 0) | 2332 | if (parse_ssh_uri(cp, NULL, NULL, NULL) == -1 || |
2333 | parse_user_host_port(cp, NULL, NULL, NULL) != 0) | ||
2355 | goto out; | 2334 | goto out; |
2356 | } | 2335 | } |
2357 | first = 0; /* only check syntax for subsequent hosts */ | 2336 | first = 0; /* only check syntax for subsequent hosts */ |
@@ -2376,6 +2355,18 @@ parse_jump(const char *s, Options *o, int active) | |||
2376 | return ret; | 2355 | return ret; |
2377 | } | 2356 | } |
2378 | 2357 | ||
2358 | int | ||
2359 | parse_ssh_uri(const char *uri, char **userp, char **hostp, int *portp) | ||
2360 | { | ||
2361 | char *path; | ||
2362 | int r; | ||
2363 | |||
2364 | r = parse_uri("ssh", uri, userp, hostp, portp, &path); | ||
2365 | if (r == 0 && path != NULL) | ||
2366 | r = -1; /* path not allowed */ | ||
2367 | return r; | ||
2368 | } | ||
2369 | |||
2379 | /* XXX the following is a near-vebatim copy from servconf.c; refactor */ | 2370 | /* XXX the following is a near-vebatim copy from servconf.c; refactor */ |
2380 | static const char * | 2371 | static const char * |
2381 | fmt_multistate_int(int val, const struct multistate *m) | 2372 | fmt_multistate_int(int val, const struct multistate *m) |
@@ -2578,6 +2569,7 @@ dump_client_config(Options *o, const char *host) | |||
2578 | 2569 | ||
2579 | /* String options */ | 2570 | /* String options */ |
2580 | dump_cfg_string(oBindAddress, o->bind_address); | 2571 | dump_cfg_string(oBindAddress, o->bind_address); |
2572 | dump_cfg_string(oBindInterface, o->bind_interface); | ||
2581 | dump_cfg_string(oCiphers, o->ciphers ? o->ciphers : KEX_CLIENT_ENCRYPT); | 2573 | dump_cfg_string(oCiphers, o->ciphers ? o->ciphers : KEX_CLIENT_ENCRYPT); |
2582 | dump_cfg_string(oControlPath, o->control_path); | 2574 | dump_cfg_string(oControlPath, o->control_path); |
2583 | dump_cfg_string(oHostKeyAlgorithms, o->hostkeyalgorithms); | 2575 | dump_cfg_string(oHostKeyAlgorithms, o->hostkeyalgorithms); |
diff --git a/readconf.h b/readconf.h index d61161a84..f469daaff 100644 --- a/readconf.h +++ b/readconf.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: readconf.h,v 1.123 2017/09/03 23:33:13 djm Exp $ */ | 1 | /* $OpenBSD: readconf.h,v 1.125 2018/02/23 02:34:33 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -86,6 +86,7 @@ typedef struct { | |||
86 | char *user_hostfiles[SSH_MAX_HOSTS_FILES]; | 86 | char *user_hostfiles[SSH_MAX_HOSTS_FILES]; |
87 | char *preferred_authentications; | 87 | char *preferred_authentications; |
88 | char *bind_address; /* local socket address for connection to sshd */ | 88 | char *bind_address; /* local socket address for connection to sshd */ |
89 | char *bind_interface; /* local interface for bind address */ | ||
89 | char *pkcs11_provider; /* PKCS#11 provider */ | 90 | char *pkcs11_provider; /* PKCS#11 provider */ |
90 | int verify_host_key_dns; /* Verify host key using DNS */ | 91 | int verify_host_key_dns; /* Verify host key using DNS */ |
91 | 92 | ||
@@ -209,6 +210,7 @@ int read_config_file(const char *, struct passwd *, const char *, | |||
209 | const char *, Options *, int); | 210 | const char *, Options *, int); |
210 | int parse_forward(struct Forward *, const char *, int, int); | 211 | int parse_forward(struct Forward *, const char *, int, int); |
211 | int parse_jump(const char *, Options *, int); | 212 | int parse_jump(const char *, Options *, int); |
213 | int parse_ssh_uri(const char *, char **, char **, int *); | ||
212 | int default_ssh_port(void); | 214 | int default_ssh_port(void); |
213 | int option_clear_or_none(const char *); | 215 | int option_clear_or_none(const char *); |
214 | void dump_client_config(Options *o, const char *host); | 216 | void dump_client_config(Options *o, const char *host); |
diff --git a/regress/Makefile b/regress/Makefile index 7d50f9cfa..d15898ad0 100644 --- a/regress/Makefile +++ b/regress/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: Makefile,v 1.95 2017/06/24 06:35:24 djm Exp $ | 1 | # $OpenBSD: Makefile,v 1.96 2017/10/24 19:33:32 millert Exp $ |
2 | 2 | ||
3 | REGRESS_TARGETS= unit t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t-exec | 3 | REGRESS_TARGETS= unit t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t-exec |
4 | tests: prep $(REGRESS_TARGETS) | 4 | tests: prep $(REGRESS_TARGETS) |
@@ -19,6 +19,7 @@ distclean: clean | |||
19 | LTESTS= connect \ | 19 | LTESTS= connect \ |
20 | proxy-connect \ | 20 | proxy-connect \ |
21 | connect-privsep \ | 21 | connect-privsep \ |
22 | connect-uri \ | ||
22 | proto-version \ | 23 | proto-version \ |
23 | proto-mismatch \ | 24 | proto-mismatch \ |
24 | exit-status \ | 25 | exit-status \ |
@@ -42,6 +43,7 @@ LTESTS= connect \ | |||
42 | keygen-moduli \ | 43 | keygen-moduli \ |
43 | key-options \ | 44 | key-options \ |
44 | scp \ | 45 | scp \ |
46 | scp-uri \ | ||
45 | sftp \ | 47 | sftp \ |
46 | sftp-chroot \ | 48 | sftp-chroot \ |
47 | sftp-cmds \ | 49 | sftp-cmds \ |
@@ -49,6 +51,7 @@ LTESTS= connect \ | |||
49 | sftp-batch \ | 51 | sftp-batch \ |
50 | sftp-glob \ | 52 | sftp-glob \ |
51 | sftp-perm \ | 53 | sftp-perm \ |
54 | sftp-uri \ | ||
52 | reconfigure \ | 55 | reconfigure \ |
53 | dynamic-forward \ | 56 | dynamic-forward \ |
54 | forwarding \ | 57 | forwarding \ |
diff --git a/regress/README.regress b/regress/README.regress index 9b99bdacb..867855017 100644 --- a/regress/README.regress +++ b/regress/README.regress | |||
@@ -100,5 +100,3 @@ Known Issues. | |||
100 | - Recent GNU coreutils deprecate "head -[n]": this will cause the yes-head | 100 | - Recent GNU coreutils deprecate "head -[n]": this will cause the yes-head |
101 | test to fail. The old behaviour can be restored by setting (and | 101 | test to fail. The old behaviour can be restored by setting (and |
102 | exporting) _POSIX2_VERSION=199209 before running the tests. | 102 | exporting) _POSIX2_VERSION=199209 before running the tests. |
103 | |||
104 | $Id: README.regress,v 1.12 2011/05/05 03:48:42 djm Exp $ | ||
diff --git a/regress/agent-getpeereid.sh b/regress/agent-getpeereid.sh index 037a50914..769c29e8d 100644 --- a/regress/agent-getpeereid.sh +++ b/regress/agent-getpeereid.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: agent-getpeereid.sh,v 1.9 2017/09/13 14:58:26 bluhm Exp $ | 1 | # $OpenBSD: agent-getpeereid.sh,v 1.10 2018/02/09 03:40:22 dtucker Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="disallow agent attach from other uid" | 4 | tid="disallow agent attach from other uid" |
@@ -18,6 +18,7 @@ case "x$SUDO" in | |||
18 | xdoas) ;; | 18 | xdoas) ;; |
19 | x) | 19 | x) |
20 | echo "need SUDO to switch to uid $UNPRIV" | 20 | echo "need SUDO to switch to uid $UNPRIV" |
21 | echo SKIPPED | ||
21 | exit 0 ;; | 22 | exit 0 ;; |
22 | *) | 23 | *) |
23 | echo "unsupported $SUDO - "doas" and "sudo" are allowed" | 24 | echo "unsupported $SUDO - "doas" and "sudo" are allowed" |
diff --git a/regress/agent-ptrace.sh b/regress/agent-ptrace.sh index bb676d631..2d795ee32 100644 --- a/regress/agent-ptrace.sh +++ b/regress/agent-ptrace.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: agent-ptrace.sh,v 1.2 2014/02/27 21:21:25 djm Exp $ | 1 | # $OpenBSD: agent-ptrace.sh,v 1.3 2015/09/11 04:55:01 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="disallow agent ptrace attach" | 4 | tid="disallow agent ptrace attach" |
diff --git a/regress/agent.sh b/regress/agent.sh index 0baf0c74a..7111056c9 100644 --- a/regress/agent.sh +++ b/regress/agent.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: agent.sh,v 1.12 2017/04/30 23:34:55 djm Exp $ | 1 | # $OpenBSD: agent.sh,v 1.13 2017/12/19 00:49:30 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="simple agent test" | 4 | tid="simple agent test" |
@@ -12,66 +12,106 @@ trace "start agent" | |||
12 | eval `${SSHAGENT} -s` > /dev/null | 12 | eval `${SSHAGENT} -s` > /dev/null |
13 | r=$? | 13 | r=$? |
14 | if [ $r -ne 0 ]; then | 14 | if [ $r -ne 0 ]; then |
15 | fail "could not start ssh-agent: exit code $r" | 15 | fatal "could not start ssh-agent: exit code $r" |
16 | else | 16 | fi |
17 | ${SSHADD} -l > /dev/null 2>&1 | 17 | |
18 | if [ $? -ne 1 ]; then | 18 | ${SSHADD} -l > /dev/null 2>&1 |
19 | fail "ssh-add -l did not fail with exit code 1" | 19 | if [ $? -ne 1 ]; then |
20 | fi | 20 | fail "ssh-add -l did not fail with exit code 1" |
21 | trace "overwrite authorized keys" | 21 | fi |
22 | printf '' > $OBJ/authorized_keys_$USER | 22 | |
23 | for t in ${SSH_KEYTYPES}; do | 23 | rm -f $OBJ/user_ca_key $OBJ/user_ca_key.pub |
24 | # generate user key for agent | 24 | ${SSHKEYGEN} -q -N '' -t ed25519 -f $OBJ/user_ca_key \ |
25 | rm -f $OBJ/$t-agent | 25 | || fatal "ssh-keygen failed" |
26 | ${SSHKEYGEN} -q -N '' -t $t -f $OBJ/$t-agent ||\ | 26 | |
27 | fail "ssh-keygen for $t-agent failed" | 27 | trace "overwrite authorized keys" |
28 | # add to authorized keys | 28 | printf '' > $OBJ/authorized_keys_$USER |
29 | cat $OBJ/$t-agent.pub >> $OBJ/authorized_keys_$USER | 29 | |
30 | # add privat key to agent | 30 | for t in ${SSH_KEYTYPES}; do |
31 | ${SSHADD} $OBJ/$t-agent > /dev/null 2>&1 | 31 | # generate user key for agent |
32 | if [ $? -ne 0 ]; then | 32 | rm -f $OBJ/$t-agent $OBJ/$t-agent.pub* |
33 | fail "ssh-add did succeed exit code 0" | 33 | ${SSHKEYGEN} -q -N '' -t $t -f $OBJ/$t-agent ||\ |
34 | fi | 34 | fatal "ssh-keygen for $t-agent failed" |
35 | done | 35 | # Make a certificate for each too. |
36 | ${SSHADD} -l > /dev/null 2>&1 | 36 | ${SSHKEYGEN} -qs $OBJ/user_ca_key -I "$t cert" \ |
37 | r=$? | 37 | -n estragon $OBJ/$t-agent.pub || fatal "ca sign failed" |
38 | if [ $r -ne 0 ]; then | 38 | |
39 | fail "ssh-add -l failed: exit code $r" | 39 | # add to authorized keys |
40 | fi | 40 | cat $OBJ/$t-agent.pub >> $OBJ/authorized_keys_$USER |
41 | # the same for full pubkey output | 41 | # add privat key to agent |
42 | ${SSHADD} -L > /dev/null 2>&1 | 42 | ${SSHADD} $OBJ/$t-agent > /dev/null 2>&1 |
43 | r=$? | 43 | if [ $? -ne 0 ]; then |
44 | if [ $r -ne 0 ]; then | 44 | fail "ssh-add did succeed exit code 0" |
45 | fail "ssh-add -L failed: exit code $r" | ||
46 | fi | 45 | fi |
46 | # Remove private key to ensure that we aren't accidentally using it. | ||
47 | rm -f $OBJ/$t-agent | ||
48 | done | ||
49 | |||
50 | # Remove explicit identity directives from ssh_proxy | ||
51 | mv $OBJ/ssh_proxy $OBJ/ssh_proxy_bak | ||
52 | grep -vi identityfile $OBJ/ssh_proxy_bak > $OBJ/ssh_proxy | ||
53 | |||
54 | ${SSHADD} -l > /dev/null 2>&1 | ||
55 | r=$? | ||
56 | if [ $r -ne 0 ]; then | ||
57 | fail "ssh-add -l failed: exit code $r" | ||
58 | fi | ||
59 | # the same for full pubkey output | ||
60 | ${SSHADD} -L > /dev/null 2>&1 | ||
61 | r=$? | ||
62 | if [ $r -ne 0 ]; then | ||
63 | fail "ssh-add -L failed: exit code $r" | ||
64 | fi | ||
47 | 65 | ||
48 | trace "simple connect via agent" | 66 | trace "simple connect via agent" |
49 | ${SSH} -F $OBJ/ssh_proxy somehost exit 52 | 67 | ${SSH} -F $OBJ/ssh_proxy somehost exit 52 |
68 | r=$? | ||
69 | if [ $r -ne 52 ]; then | ||
70 | fail "ssh connect with failed (exit code $r)" | ||
71 | fi | ||
72 | |||
73 | for t in ${SSH_KEYTYPES}; do | ||
74 | trace "connect via agent using $t key" | ||
75 | ${SSH} -F $OBJ/ssh_proxy -i $OBJ/$t-agent.pub -oIdentitiesOnly=yes \ | ||
76 | somehost exit 52 | ||
50 | r=$? | 77 | r=$? |
51 | if [ $r -ne 52 ]; then | 78 | if [ $r -ne 52 ]; then |
52 | fail "ssh connect with failed (exit code $r)" | 79 | fail "ssh connect with failed (exit code $r)" |
53 | fi | 80 | fi |
81 | done | ||
54 | 82 | ||
55 | trace "agent forwarding" | 83 | trace "agent forwarding" |
56 | ${SSH} -A -F $OBJ/ssh_proxy somehost ${SSHADD} -l > /dev/null 2>&1 | 84 | ${SSH} -A -F $OBJ/ssh_proxy somehost ${SSHADD} -l > /dev/null 2>&1 |
57 | r=$? | 85 | r=$? |
58 | if [ $r -ne 0 ]; then | 86 | if [ $r -ne 0 ]; then |
59 | fail "ssh-add -l via agent fwd failed (exit code $r)" | 87 | fail "ssh-add -l via agent fwd failed (exit code $r)" |
60 | fi | 88 | fi |
61 | ${SSH} -A -F $OBJ/ssh_proxy somehost \ | 89 | ${SSH} -A -F $OBJ/ssh_proxy somehost \ |
62 | "${SSH} -F $OBJ/ssh_proxy somehost exit 52" | 90 | "${SSH} -F $OBJ/ssh_proxy somehost exit 52" |
63 | r=$? | 91 | r=$? |
64 | if [ $r -ne 52 ]; then | 92 | if [ $r -ne 52 ]; then |
65 | fail "agent fwd failed (exit code $r)" | 93 | fail "agent fwd failed (exit code $r)" |
66 | fi | 94 | fi |
67 | 95 | ||
68 | trace "delete all agent keys" | 96 | (printf 'cert-authority,principals="estragon" '; cat $OBJ/user_ca_key.pub) \ |
69 | ${SSHADD} -D > /dev/null 2>&1 | 97 | > $OBJ/authorized_keys_$USER |
98 | for t in ${SSH_KEYTYPES}; do | ||
99 | trace "connect via agent using $t key" | ||
100 | ${SSH} -F $OBJ/ssh_proxy -i $OBJ/$t-agent.pub \ | ||
101 | -oCertificateFile=$OBJ/$t-agent-cert.pub \ | ||
102 | -oIdentitiesOnly=yes somehost exit 52 | ||
70 | r=$? | 103 | r=$? |
71 | if [ $r -ne 0 ]; then | 104 | if [ $r -ne 52 ]; then |
72 | fail "ssh-add -D failed: exit code $r" | 105 | fail "ssh connect with failed (exit code $r)" |
73 | fi | 106 | fi |
107 | done | ||
74 | 108 | ||
75 | trace "kill agent" | 109 | trace "delete all agent keys" |
76 | ${SSHAGENT} -k > /dev/null | 110 | ${SSHADD} -D > /dev/null 2>&1 |
111 | r=$? | ||
112 | if [ $r -ne 0 ]; then | ||
113 | fail "ssh-add -D failed: exit code $r" | ||
77 | fi | 114 | fi |
115 | |||
116 | trace "kill agent" | ||
117 | ${SSHAGENT} -k > /dev/null | ||
diff --git a/regress/allow-deny-users.sh b/regress/allow-deny-users.sh index 86805e193..4165111e0 100644 --- a/regress/allow-deny-users.sh +++ b/regress/allow-deny-users.sh | |||
@@ -1,5 +1,6 @@ | |||
1 | # Public Domain | 1 | # Public Domain |
2 | # Zev Weiss, 2016 | 2 | # Zev Weiss, 2016 |
3 | # $OpenBSD: allow-deny-users.sh,v 1.4 2017/10/20 02:13:41 djm Exp $ | ||
3 | 4 | ||
4 | tid="AllowUsers/DenyUsers" | 5 | tid="AllowUsers/DenyUsers" |
5 | 6 | ||
diff --git a/regress/authinfo.sh b/regress/authinfo.sh index e725296c9..3caf89478 100644 --- a/regress/authinfo.sh +++ b/regress/authinfo.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: authinfo.sh,v 1.1 2017/06/24 06:35:24 djm Exp $ | 1 | # $OpenBSD: authinfo.sh,v 1.2 2017/10/25 20:08:36 millert Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="authinfo" | 4 | tid="authinfo" |
@@ -6,7 +6,7 @@ tid="authinfo" | |||
6 | # Ensure the environment variable doesn't leak when ExposeAuthInfo=no. | 6 | # Ensure the environment variable doesn't leak when ExposeAuthInfo=no. |
7 | verbose "ExposeAuthInfo=no" | 7 | verbose "ExposeAuthInfo=no" |
8 | env SSH_USER_AUTH=blah ${SSH} -F $OBJ/ssh_proxy x \ | 8 | env SSH_USER_AUTH=blah ${SSH} -F $OBJ/ssh_proxy x \ |
9 | 'test -z "$SSH_USER_AUTH"' || fail "SSH_USER_AUTH present" | 9 | 'env | grep SSH_USER_AUTH >/dev/null' && fail "SSH_USER_AUTH present" |
10 | 10 | ||
11 | verbose "ExposeAuthInfo=yes" | 11 | verbose "ExposeAuthInfo=yes" |
12 | echo ExposeAuthInfo=yes >> $OBJ/sshd_proxy | 12 | echo ExposeAuthInfo=yes >> $OBJ/sshd_proxy |
diff --git a/regress/cert-userkey.sh b/regress/cert-userkey.sh index 6a23fe300..30c2c156d 100644 --- a/regress/cert-userkey.sh +++ b/regress/cert-userkey.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: cert-userkey.sh,v 1.18 2017/04/30 23:34:55 djm Exp $ | 1 | # $OpenBSD: cert-userkey.sh,v 1.19 2018/03/12 00:54:04 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="certified user keys" | 4 | tid="certified user keys" |
@@ -8,6 +8,7 @@ cp $OBJ/sshd_proxy $OBJ/sshd_proxy_bak | |||
8 | cp $OBJ/ssh_proxy $OBJ/ssh_proxy_bak | 8 | cp $OBJ/ssh_proxy $OBJ/ssh_proxy_bak |
9 | 9 | ||
10 | PLAIN_TYPES=`$SSH -Q key-plain | sed 's/^ssh-dss/ssh-dsa/;s/^ssh-//'` | 10 | PLAIN_TYPES=`$SSH -Q key-plain | sed 's/^ssh-dss/ssh-dsa/;s/^ssh-//'` |
11 | EXTRA_TYPES="" | ||
11 | 12 | ||
12 | if echo "$PLAIN_TYPES" | grep '^rsa$' >/dev/null 2>&1 ; then | 13 | if echo "$PLAIN_TYPES" | grep '^rsa$' >/dev/null 2>&1 ; then |
13 | PLAIN_TYPES="$PLAIN_TYPES rsa-sha2-256 rsa-sha2-512" | 14 | PLAIN_TYPES="$PLAIN_TYPES rsa-sha2-256 rsa-sha2-512" |
@@ -15,7 +16,7 @@ fi | |||
15 | 16 | ||
16 | kname() { | 17 | kname() { |
17 | case $ktype in | 18 | case $ktype in |
18 | rsa-sha2-*) ;; | 19 | rsa-sha2-*) n="$ktype" ;; |
19 | # subshell because some seds will add a newline | 20 | # subshell because some seds will add a newline |
20 | *) n=$(echo $1 | sed 's/^dsa/ssh-dss/;s/^rsa/ssh-rsa/;s/^ed/ssh-ed/') ;; | 21 | *) n=$(echo $1 | sed 's/^dsa/ssh-dss/;s/^rsa/ssh-rsa/;s/^ed/ssh-ed/') ;; |
21 | esac | 22 | esac |
diff --git a/regress/cfgmatch.sh b/regress/cfgmatch.sh index 2504d04f4..dd11e404d 100644 --- a/regress/cfgmatch.sh +++ b/regress/cfgmatch.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: cfgmatch.sh,v 1.10 2017/04/30 23:34:55 djm Exp $ | 1 | # $OpenBSD: cfgmatch.sh,v 1.11 2017/10/04 18:50:23 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="sshd_config match" | 4 | tid="sshd_config match" |
@@ -41,7 +41,7 @@ stop_client() | |||
41 | cp $OBJ/sshd_proxy $OBJ/sshd_proxy_bak | 41 | cp $OBJ/sshd_proxy $OBJ/sshd_proxy_bak |
42 | echo "PermitOpen 127.0.0.1:1" >>$OBJ/sshd_config | 42 | echo "PermitOpen 127.0.0.1:1" >>$OBJ/sshd_config |
43 | echo "Match Address 127.0.0.1" >>$OBJ/sshd_config | 43 | echo "Match Address 127.0.0.1" >>$OBJ/sshd_config |
44 | echo "PermitOpen 127.0.0.1:$PORT" >>$OBJ/sshd_config | 44 | echo "PermitOpen 127.0.0.1:2 127.0.0.1:3 127.0.0.1:$PORT" >>$OBJ/sshd_config |
45 | 45 | ||
46 | grep -v AuthorizedKeysFile $OBJ/sshd_proxy_bak > $OBJ/sshd_proxy | 46 | grep -v AuthorizedKeysFile $OBJ/sshd_proxy_bak > $OBJ/sshd_proxy |
47 | echo "AuthorizedKeysFile /dev/null" >>$OBJ/sshd_proxy | 47 | echo "AuthorizedKeysFile /dev/null" >>$OBJ/sshd_proxy |
@@ -49,7 +49,7 @@ echo "PermitOpen 127.0.0.1:1" >>$OBJ/sshd_proxy | |||
49 | echo "Match user $USER" >>$OBJ/sshd_proxy | 49 | echo "Match user $USER" >>$OBJ/sshd_proxy |
50 | echo "AuthorizedKeysFile /dev/null $OBJ/authorized_keys_%u" >>$OBJ/sshd_proxy | 50 | echo "AuthorizedKeysFile /dev/null $OBJ/authorized_keys_%u" >>$OBJ/sshd_proxy |
51 | echo "Match Address 127.0.0.1" >>$OBJ/sshd_proxy | 51 | echo "Match Address 127.0.0.1" >>$OBJ/sshd_proxy |
52 | echo "PermitOpen 127.0.0.1:$PORT" >>$OBJ/sshd_proxy | 52 | echo "PermitOpen 127.0.0.1:2 127.0.0.1:3 127.0.0.1:$PORT" >>$OBJ/sshd_proxy |
53 | 53 | ||
54 | start_sshd | 54 | start_sshd |
55 | 55 | ||
diff --git a/regress/connect-uri.sh b/regress/connect-uri.sh new file mode 100644 index 000000000..f13f15e66 --- /dev/null +++ b/regress/connect-uri.sh | |||
@@ -0,0 +1,29 @@ | |||
1 | # $OpenBSD: connect-uri.sh,v 1.1 2017/10/24 19:33:32 millert Exp $ | ||
2 | # Placed in the Public Domain. | ||
3 | |||
4 | tid="uri connect" | ||
5 | |||
6 | # Remove Port and User from ssh_config, we want to rely on the URI | ||
7 | cp $OBJ/ssh_config $OBJ/ssh_config.orig | ||
8 | egrep -v '^ +(Port|User) +.*$' $OBJ/ssh_config.orig > $OBJ/ssh_config | ||
9 | |||
10 | start_sshd | ||
11 | |||
12 | verbose "$tid: no trailing slash" | ||
13 | ${SSH} -F $OBJ/ssh_config "ssh://${USER}@somehost:${PORT}" true | ||
14 | if [ $? -ne 0 ]; then | ||
15 | fail "ssh connection failed" | ||
16 | fi | ||
17 | |||
18 | verbose "$tid: trailing slash" | ||
19 | ${SSH} -F $OBJ/ssh_config "ssh://${USER}@somehost:${PORT}/" true | ||
20 | if [ $? -ne 0 ]; then | ||
21 | fail "ssh connection failed" | ||
22 | fi | ||
23 | |||
24 | verbose "$tid: with path name" | ||
25 | ${SSH} -F $OBJ/ssh_config "ssh://${USER}@somehost:${PORT}/${DATA}" true \ | ||
26 | > /dev/null 2>&1 | ||
27 | if [ $? -eq 0 ]; then | ||
28 | fail "ssh connection succeeded, expected failure" | ||
29 | fi | ||
diff --git a/regress/forward-control.sh b/regress/forward-control.sh index 2e9dbb53a..93d05cf63 100644 --- a/regress/forward-control.sh +++ b/regress/forward-control.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: forward-control.sh,v 1.4 2017/04/30 23:34:55 djm Exp $ | 1 | # $OpenBSD: forward-control.sh,v 1.5 2018/03/02 02:51:55 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="sshd control of local and remote forwarding" | 4 | tid="sshd control of local and remote forwarding" |
@@ -151,6 +151,33 @@ all_tests() { | |||
151 | > ${OBJ}/sshd_proxy | 151 | > ${OBJ}/sshd_proxy |
152 | check_lfwd $_permit_lfwd "$_prefix, permitopen" | 152 | check_lfwd $_permit_lfwd "$_prefix, permitopen" |
153 | check_rfwd $_permit_rfwd "$_prefix, permitopen" | 153 | check_rfwd $_permit_rfwd "$_prefix, permitopen" |
154 | # Check port-forwarding flags in authorized_keys. | ||
155 | # These two should refuse all. | ||
156 | sed "s/^/no-port-forwarding /" \ | ||
157 | < ${OBJ}/authorized_keys_${USER}.bak \ | ||
158 | > ${OBJ}/authorized_keys_${USER} || fatal "sed 3 fail" | ||
159 | ( cat ${OBJ}/sshd_proxy.bak ; | ||
160 | echo "AllowTcpForwarding $_tcpfwd" ) \ | ||
161 | > ${OBJ}/sshd_proxy | ||
162 | check_lfwd N "$_prefix, no-port-forwarding" | ||
163 | check_rfwd N "$_prefix, no-port-forwarding" | ||
164 | sed "s/^/restrict /" \ | ||
165 | < ${OBJ}/authorized_keys_${USER}.bak \ | ||
166 | > ${OBJ}/authorized_keys_${USER} || fatal "sed 4 fail" | ||
167 | ( cat ${OBJ}/sshd_proxy.bak ; | ||
168 | echo "AllowTcpForwarding $_tcpfwd" ) \ | ||
169 | > ${OBJ}/sshd_proxy | ||
170 | check_lfwd N "$_prefix, restrict" | ||
171 | check_rfwd N "$_prefix, restrict" | ||
172 | # This should pass the same cases as _nopermit* | ||
173 | sed "s/^/restrict,port-forwarding /" \ | ||
174 | < ${OBJ}/authorized_keys_${USER}.bak \ | ||
175 | > ${OBJ}/authorized_keys_${USER} || fatal "sed 5 fail" | ||
176 | ( cat ${OBJ}/sshd_proxy.bak ; | ||
177 | echo "AllowTcpForwarding $_tcpfwd" ) \ | ||
178 | > ${OBJ}/sshd_proxy | ||
179 | check_lfwd $_plain_lfwd "$_prefix, restrict,port-forwarding" | ||
180 | check_rfwd $_plain_rfwd "$_prefix, restrict,port-forwarding" | ||
154 | } | 181 | } |
155 | 182 | ||
156 | # no-permitopen mismatch-permitopen match-permitopen | 183 | # no-permitopen mismatch-permitopen match-permitopen |
diff --git a/regress/key-options.sh b/regress/key-options.sh index 2adee6833..d680737c1 100644 --- a/regress/key-options.sh +++ b/regress/key-options.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: key-options.sh,v 1.4 2017/04/30 23:34:55 djm Exp $ | 1 | # $OpenBSD: key-options.sh,v 1.8 2018/03/14 05:35:40 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="key options" | 4 | tid="key options" |
@@ -21,12 +21,46 @@ for c in 'command="echo bar"' 'no-pty,command="echo bar"'; do | |||
21 | done | 21 | done |
22 | 22 | ||
23 | # Test no-pty | 23 | # Test no-pty |
24 | sed 's/.*/no-pty &/' $origkeys >$authkeys | 24 | expect_pty_succeed() { |
25 | verbose "key option proto no-pty" | 25 | which=$1 |
26 | r=`${SSH} -q -F $OBJ/ssh_proxy somehost tty` | 26 | opts=$2 |
27 | if [ -f "$r" ]; then | 27 | rm -f $OBJ/data |
28 | fail "key option failed no-pty (pty $r)" | 28 | sed "s/.*/$opts &/" $origkeys >$authkeys |
29 | fi | 29 | verbose "key option pty $which" |
30 | ${SSH} -ttq -F $OBJ/ssh_proxy somehost "tty > $OBJ/data; exit 0" | ||
31 | if [ $? -ne 0 ] ; then | ||
32 | fail "key option failed $which" | ||
33 | else | ||
34 | r=`cat $OBJ/data` | ||
35 | case "$r" in | ||
36 | /dev/*) ;; | ||
37 | *) fail "key option failed $which (pty $r)" ;; | ||
38 | esac | ||
39 | fi | ||
40 | } | ||
41 | expect_pty_fail() { | ||
42 | which=$1 | ||
43 | opts=$2 | ||
44 | rm -f $OBJ/data | ||
45 | sed "s/.*/$opts &/" $origkeys >$authkeys | ||
46 | verbose "key option pty $which" | ||
47 | ${SSH} -ttq -F $OBJ/ssh_proxy somehost "tty > $OBJ/data; exit 0" | ||
48 | if [ $? -eq 0 ]; then | ||
49 | r=`cat $OBJ/data` | ||
50 | if [ -e "$r" ]; then | ||
51 | fail "key option failed $which (pty $r)" | ||
52 | fi | ||
53 | case "$r" in | ||
54 | /dev/*) fail "key option failed $which (pty $r)" ;; | ||
55 | *) ;; | ||
56 | esac | ||
57 | fi | ||
58 | } | ||
59 | # First ensure that we can allocate a pty by default. | ||
60 | expect_pty_succeed "default" "" | ||
61 | expect_pty_fail "no-pty" "no-pty" | ||
62 | expect_pty_fail "restrict" "restrict" | ||
63 | expect_pty_succeed "restrict,pty" "restrict,pty" | ||
30 | 64 | ||
31 | # Test environment= | 65 | # Test environment= |
32 | echo 'PermitUserEnvironment yes' >> $OBJ/sshd_proxy | 66 | echo 'PermitUserEnvironment yes' >> $OBJ/sshd_proxy |
@@ -60,4 +94,22 @@ for f in 127.0.0.1 '127.0.0.0\/8'; do | |||
60 | fi | 94 | fi |
61 | done | 95 | done |
62 | 96 | ||
63 | rm -f "$origkeys" | 97 | check_valid_before() { |
98 | which=$1 | ||
99 | opts=$2 | ||
100 | expect=$3 | ||
101 | sed "s/.*/$opts &/" $origkeys >$authkeys | ||
102 | verbose "key option expiry-time $which" | ||
103 | ${SSH} -q -F $OBJ/ssh_proxy somehost true | ||
104 | r=$? | ||
105 | case "$expect" in | ||
106 | fail) test $r -eq 0 && fail "key option succeeded $which" ;; | ||
107 | pass) test $r -ne 0 && fail "key option failed $which" ;; | ||
108 | *) fatal "unknown expectation $expect" ;; | ||
109 | esac | ||
110 | } | ||
111 | check_valid_before "default" "" "pass" | ||
112 | check_valid_before "invalid" 'expiry-time="INVALID"' "fail" | ||
113 | check_valid_before "expired" 'expiry-time="19990101"' "fail" | ||
114 | check_valid_before "valid" 'expiry-time="20380101"' "pass" | ||
115 | |||
diff --git a/regress/keys-command.sh b/regress/keys-command.sh index 9c9ada7c7..4029e2c78 100644 --- a/regress/keys-command.sh +++ b/regress/keys-command.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: keys-command.sh,v 1.3 2015/05/21 06:40:02 djm Exp $ | 1 | # $OpenBSD: keys-command.sh,v 1.4 2016/09/26 21:34:38 bluhm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="authorized keys from command" | 4 | tid="authorized keys from command" |
diff --git a/regress/keytype.sh b/regress/keytype.sh index 88b022de4..f78a2c171 100644 --- a/regress/keytype.sh +++ b/regress/keytype.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: keytype.sh,v 1.5 2017/03/20 22:08:06 djm Exp $ | 1 | # $OpenBSD: keytype.sh,v 1.7 2018/03/12 00:54:04 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="login with different key types" | 4 | tid="login with different key types" |
@@ -17,7 +17,7 @@ for i in `$SSH -Q key`; do | |||
17 | esac | 17 | esac |
18 | done | 18 | done |
19 | 19 | ||
20 | for kt in $ktypes; do | 20 | for kt in $ktypes; do |
21 | rm -f $OBJ/key.$kt | 21 | rm -f $OBJ/key.$kt |
22 | bits=`echo ${kt} | awk -F- '{print $2}'` | 22 | bits=`echo ${kt} | awk -F- '{print $2}'` |
23 | type=`echo ${kt} | awk -F- '{print $1}'` | 23 | type=`echo ${kt} | awk -F- '{print $1}'` |
@@ -27,28 +27,28 @@ for kt in $ktypes; do | |||
27 | done | 27 | done |
28 | 28 | ||
29 | tries="1 2 3" | 29 | tries="1 2 3" |
30 | for ut in $ktypes; do | 30 | for ut in $ktypes; do |
31 | htypes=$ut | 31 | htypes=$ut |
32 | #htypes=$ktypes | 32 | #htypes=$ktypes |
33 | for ht in $htypes; do | 33 | for ht in $htypes; do |
34 | case $ht in | 34 | case $ht in |
35 | dsa-1024) t=ssh-dss;; | 35 | dsa-1024) t=ssh-dss;; |
36 | ecdsa-256) t=ecdsa-sha2-nistp256;; | 36 | ecdsa-256) t=ecdsa-sha2-nistp256;; |
37 | ecdsa-384) t=ecdsa-sha2-nistp384;; | 37 | ecdsa-384) t=ecdsa-sha2-nistp384;; |
38 | ecdsa-521) t=ecdsa-sha2-nistp521;; | 38 | ecdsa-521) t=ecdsa-sha2-nistp521;; |
39 | ed25519-512) t=ssh-ed25519;; | 39 | ed25519-512) t=ssh-ed25519;; |
40 | rsa-*) t=ssh-rsa;; | 40 | rsa-*) t=rsa-sha2-512,rsa-sha2-256,ssh-rsa;; |
41 | esac | 41 | esac |
42 | trace "ssh connect, userkey $ut, hostkey $ht" | 42 | trace "ssh connect, userkey $ut, hostkey $ht" |
43 | ( | 43 | ( |
44 | grep -v HostKey $OBJ/sshd_proxy_bak | 44 | grep -v HostKey $OBJ/sshd_proxy_bak |
45 | echo HostKey $OBJ/key.$ht | 45 | echo HostKey $OBJ/key.$ht |
46 | echo PubkeyAcceptedKeyTypes $t | 46 | echo PubkeyAcceptedKeyTypes $t |
47 | echo HostKeyAlgorithms $t | 47 | echo HostKeyAlgorithms $t |
48 | ) > $OBJ/sshd_proxy | 48 | ) > $OBJ/sshd_proxy |
49 | ( | 49 | ( |
50 | grep -v IdentityFile $OBJ/ssh_proxy_bak | 50 | grep -v IdentityFile $OBJ/ssh_proxy_bak |
51 | echo IdentityFile $OBJ/key.$ut | 51 | echo IdentityFile $OBJ/key.$ut |
52 | echo PubkeyAcceptedKeyTypes $t | 52 | echo PubkeyAcceptedKeyTypes $t |
53 | echo HostKeyAlgorithms $t | 53 | echo HostKeyAlgorithms $t |
54 | ) > $OBJ/ssh_proxy | 54 | ) > $OBJ/ssh_proxy |
diff --git a/regress/limit-keytype.sh b/regress/limit-keytype.sh index c0cf2fed6..04f11977e 100644 --- a/regress/limit-keytype.sh +++ b/regress/limit-keytype.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: limit-keytype.sh,v 1.4 2015/10/29 08:05:17 djm Exp $ | 1 | # $OpenBSD: limit-keytype.sh,v 1.5 2018/03/12 00:52:57 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="restrict pubkey type" | 4 | tid="restrict pubkey type" |
@@ -60,7 +60,8 @@ ${SSH} $opts -i $OBJ/user_key2 proxy true || fatal "key2 failed" | |||
60 | 60 | ||
61 | # Allow plain Ed25519 and RSA. The certificate should fail. | 61 | # Allow plain Ed25519 and RSA. The certificate should fail. |
62 | verbose "allow rsa,ed25519" | 62 | verbose "allow rsa,ed25519" |
63 | prepare_config "PubkeyAcceptedKeyTypes ssh-rsa,ssh-ed25519" | 63 | prepare_config \ |
64 | "PubkeyAcceptedKeyTypes rsa-sha2-256,rsa-sha2-512,ssh-rsa,ssh-ed25519" | ||
64 | ${SSH} $certopts proxy true && fatal "cert succeeded" | 65 | ${SSH} $certopts proxy true && fatal "cert succeeded" |
65 | ${SSH} $opts -i $OBJ/user_key1 proxy true || fatal "key1 failed" | 66 | ${SSH} $opts -i $OBJ/user_key1 proxy true || fatal "key1 failed" |
66 | ${SSH} $opts -i $OBJ/user_key2 proxy true || fatal "key2 failed" | 67 | ${SSH} $opts -i $OBJ/user_key2 proxy true || fatal "key2 failed" |
@@ -74,14 +75,14 @@ ${SSH} $opts -i $OBJ/user_key2 proxy true && fatal "key2 succeeded" | |||
74 | 75 | ||
75 | # Allow all certs. Plain keys should fail. | 76 | # Allow all certs. Plain keys should fail. |
76 | verbose "allow cert only" | 77 | verbose "allow cert only" |
77 | prepare_config "PubkeyAcceptedKeyTypes ssh-*-cert-v01@openssh.com" | 78 | prepare_config "PubkeyAcceptedKeyTypes *-cert-v01@openssh.com" |
78 | ${SSH} $certopts proxy true || fatal "cert failed" | 79 | ${SSH} $certopts proxy true || fatal "cert failed" |
79 | ${SSH} $opts -i $OBJ/user_key1 proxy true && fatal "key1 succeeded" | 80 | ${SSH} $opts -i $OBJ/user_key1 proxy true && fatal "key1 succeeded" |
80 | ${SSH} $opts -i $OBJ/user_key2 proxy true && fatal "key2 succeeded" | 81 | ${SSH} $opts -i $OBJ/user_key2 proxy true && fatal "key2 succeeded" |
81 | 82 | ||
82 | # Allow RSA in main config, Ed25519 for non-existent user. | 83 | # Allow RSA in main config, Ed25519 for non-existent user. |
83 | verbose "match w/ no match" | 84 | verbose "match w/ no match" |
84 | prepare_config "PubkeyAcceptedKeyTypes ssh-rsa" \ | 85 | prepare_config "PubkeyAcceptedKeyTypes rsa-sha2-256,rsa-sha2-512,ssh-rsa" \ |
85 | "Match user x$USER" "PubkeyAcceptedKeyTypes +ssh-ed25519" | 86 | "Match user x$USER" "PubkeyAcceptedKeyTypes +ssh-ed25519" |
86 | ${SSH} $certopts proxy true && fatal "cert succeeded" | 87 | ${SSH} $certopts proxy true && fatal "cert succeeded" |
87 | ${SSH} $opts -i $OBJ/user_key1 proxy true && fatal "key1 succeeded" | 88 | ${SSH} $opts -i $OBJ/user_key1 proxy true && fatal "key1 succeeded" |
diff --git a/regress/misc/fuzz-harness/sig_fuzz.cc b/regress/misc/fuzz-harness/sig_fuzz.cc index 0e535b49a..dd1fda091 100644 --- a/regress/misc/fuzz-harness/sig_fuzz.cc +++ b/regress/misc/fuzz-harness/sig_fuzz.cc | |||
@@ -37,13 +37,13 @@ int LLVMFuzzerTestOneInput(const uint8_t* sig, size_t slen) | |||
37 | static const size_t dlen = strlen(data); | 37 | static const size_t dlen = strlen(data); |
38 | 38 | ||
39 | #ifdef WITH_OPENSSL | 39 | #ifdef WITH_OPENSSL |
40 | sshkey_verify(rsa, sig, slen, (const u_char *)data, dlen, 0); | 40 | sshkey_verify(rsa, sig, slen, (const u_char *)data, dlen, NULL, 0); |
41 | sshkey_verify(dsa, sig, slen, (const u_char *)data, dlen, 0); | 41 | sshkey_verify(dsa, sig, slen, (const u_char *)data, dlen, NULL, 0); |
42 | sshkey_verify(ecdsa256, sig, slen, (const u_char *)data, dlen, 0); | 42 | sshkey_verify(ecdsa256, sig, slen, (const u_char *)data, dlen, NULL, 0); |
43 | sshkey_verify(ecdsa384, sig, slen, (const u_char *)data, dlen, 0); | 43 | sshkey_verify(ecdsa384, sig, slen, (const u_char *)data, dlen, NULL, 0); |
44 | sshkey_verify(ecdsa521, sig, slen, (const u_char *)data, dlen, 0); | 44 | sshkey_verify(ecdsa521, sig, slen, (const u_char *)data, dlen, NULL, 0); |
45 | #endif | 45 | #endif |
46 | sshkey_verify(ed25519, sig, slen, (const u_char *)data, dlen, 0); | 46 | sshkey_verify(ed25519, sig, slen, (const u_char *)data, dlen, NULL, 0); |
47 | return 0; | 47 | return 0; |
48 | } | 48 | } |
49 | 49 | ||
diff --git a/regress/misc/kexfuzz/Makefile b/regress/misc/kexfuzz/Makefile index d0aca8dfe..a7bb6b70d 100644 --- a/regress/misc/kexfuzz/Makefile +++ b/regress/misc/kexfuzz/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: Makefile,v 1.2 2017/04/17 11:02:31 jsg Exp $ | 1 | # $OpenBSD: Makefile,v 1.3 2017/12/21 05:46:35 djm Exp $ |
2 | 2 | ||
3 | .include <bsd.own.mk> | 3 | .include <bsd.own.mk> |
4 | .include <bsd.obj.mk> | 4 | .include <bsd.obj.mk> |
@@ -9,6 +9,25 @@ OPENSSL?= yes | |||
9 | 9 | ||
10 | PROG= kexfuzz | 10 | PROG= kexfuzz |
11 | SRCS= kexfuzz.c | 11 | SRCS= kexfuzz.c |
12 | |||
13 | SSHREL=../../../../../usr.bin/ssh | ||
14 | .PATH: ${.CURDIR}/${SSHREL} | ||
15 | # From usr.bin/ssh | ||
16 | SRCS+=sshbuf-getput-basic.c sshbuf-getput-crypto.c sshbuf-misc.c sshbuf.c | ||
17 | SRCS+=atomicio.c sshkey.c authfile.c cipher.c log.c ssh-rsa.c ssh-dss.c | ||
18 | SRCS+=ssh-ecdsa.c ssh-ed25519.c mac.c umac.c umac128.c hmac.c misc.c | ||
19 | SRCS+=ssherr.c uidswap.c cleanup.c xmalloc.c match.c krl.c fatal.c | ||
20 | SRCS+=addrmatch.c bitmap.c packet.c dispatch.c canohost.c ssh_api.c | ||
21 | SRCS+=kex.c kexc25519.c kexc25519c.c kexc25519s.c kexdh.c kexdhc.c kexdhs.c | ||
22 | SRCS+=kexecdh.c kexecdhc.c kexecdhs.c kexgex.c kexgexc.c kexgexs.c | ||
23 | SRCS+=dh.c compat.c | ||
24 | SRCS+=ed25519.c hash.c ge25519.c fe25519.c sc25519.c verify.c | ||
25 | SRCS+=cipher-chachapoly.c chacha.c poly1305.c | ||
26 | SRCS+=smult_curve25519_ref.c | ||
27 | |||
28 | SRCS+=digest-openssl.c | ||
29 | #SRCS+=digest-libc.c | ||
30 | |||
12 | NOMAN= 1 | 31 | NOMAN= 1 |
13 | 32 | ||
14 | .if (${OPENSSL:L} == "yes") | 33 | .if (${OPENSSL:L} == "yes") |
@@ -49,23 +68,14 @@ CDIAGFLAGS+= -Wswitch | |||
49 | CDIAGFLAGS+= -Wtrigraphs | 68 | CDIAGFLAGS+= -Wtrigraphs |
50 | CDIAGFLAGS+= -Wuninitialized | 69 | CDIAGFLAGS+= -Wuninitialized |
51 | CDIAGFLAGS+= -Wunused | 70 | CDIAGFLAGS+= -Wunused |
71 | CDIAGFLAGS+= -Wno-unused-parameter | ||
52 | .if ${COMPILER_VERSION:L} != "gcc3" | 72 | .if ${COMPILER_VERSION:L} != "gcc3" |
53 | CDIAGFLAGS+= -Wpointer-sign | ||
54 | CDIAGFLAGS+= -Wold-style-definition | 73 | CDIAGFLAGS+= -Wold-style-definition |
55 | .endif | 74 | .endif |
56 | 75 | ||
57 | SSHREL=../../../../../usr.bin/ssh | ||
58 | 76 | ||
59 | CFLAGS+=-I${.CURDIR}/${SSHREL} | 77 | CFLAGS+=-I${.CURDIR}/${SSHREL} |
60 | 78 | ||
61 | .if exists(${.CURDIR}/${SSHREL}/lib/${__objdir}) | ||
62 | LDADD+=-L${.CURDIR}/${SSHREL}/lib/${__objdir} -lssh | ||
63 | DPADD+=${.CURDIR}/${SSHREL}/lib/${__objdir}/libssh.a | ||
64 | .else | ||
65 | LDADD+=-L${.CURDIR}/${SSHREL}/lib -lssh | ||
66 | DPADD+=${.CURDIR}/${SSHREL}/lib/libssh.a | ||
67 | .endif | ||
68 | |||
69 | LDADD+= -lutil -lz | 79 | LDADD+= -lutil -lz |
70 | DPADD+= ${LIBUTIL} ${LIBZ} | 80 | DPADD+= ${LIBUTIL} ${LIBZ} |
71 | 81 | ||
diff --git a/regress/misc/kexfuzz/README b/regress/misc/kexfuzz/README index abd7b50ee..504c26f3b 100644 --- a/regress/misc/kexfuzz/README +++ b/regress/misc/kexfuzz/README | |||
@@ -30,3 +30,5 @@ Limitations: kexfuzz can't change the ordering of packets at | |||
30 | present. It is limited to replacing individual packets with | 30 | present. It is limited to replacing individual packets with |
31 | fuzzed variants with the same type. It really should allow | 31 | fuzzed variants with the same type. It really should allow |
32 | insertion, deletion on replacement of packets too. | 32 | insertion, deletion on replacement of packets too. |
33 | |||
34 | $OpenBSD: README,v 1.3 2017/10/20 02:13:41 djm Exp $ | ||
diff --git a/regress/modpipe.c b/regress/modpipe.c index 5f4824b51..5f4824b51 100755..100644 --- a/regress/modpipe.c +++ b/regress/modpipe.c | |||
diff --git a/regress/netcat.c b/regress/netcat.c index 98a08b1ec..56bd09de5 100644 --- a/regress/netcat.c +++ b/regress/netcat.c | |||
@@ -738,7 +738,12 @@ local_listen(char *host, char *port, struct addrinfo hints) | |||
738 | #ifdef SO_REUSEPORT | 738 | #ifdef SO_REUSEPORT |
739 | ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x)); | 739 | ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &x, sizeof(x)); |
740 | if (ret == -1) | 740 | if (ret == -1) |
741 | err(1, "setsockopt"); | 741 | err(1, "setsockopt SO_REUSEPORT"); |
742 | #endif | ||
743 | #ifdef SO_REUSEADDR | ||
744 | ret = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &x, sizeof(x)); | ||
745 | if (ret == -1) | ||
746 | err(1, "setsockopt SO_REUSEADDR"); | ||
742 | #endif | 747 | #endif |
743 | set_common_sockopts(s); | 748 | set_common_sockopts(s); |
744 | 749 | ||
diff --git a/regress/proxy-connect.sh b/regress/proxy-connect.sh index f1b9d9f76..39bbd3c96 100644 --- a/regress/proxy-connect.sh +++ b/regress/proxy-connect.sh | |||
@@ -1,25 +1,19 @@ | |||
1 | # $OpenBSD: proxy-connect.sh,v 1.10 2017/04/30 23:34:55 djm Exp $ | 1 | # $OpenBSD: proxy-connect.sh,v 1.11 2017/09/26 22:39:25 dtucker Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="proxy connect" | 4 | tid="proxy connect" |
5 | 5 | ||
6 | mv $OBJ/sshd_proxy $OBJ/sshd_proxy.orig | 6 | for c in no yes; do |
7 | 7 | verbose "plain username comp=$c" | |
8 | for ps in no yes; do | 8 | opts="-oCompression=$c -F $OBJ/ssh_proxy" |
9 | cp $OBJ/sshd_proxy.orig $OBJ/sshd_proxy | 9 | SSH_CONNECTION=`${SSH} $opts 999.999.999.999 'echo $SSH_CONNECTION'` |
10 | echo "UsePrivilegeSeparation $ps" >> $OBJ/sshd_proxy | 10 | if [ $? -ne 0 ]; then |
11 | for c in no yes; do | 11 | fail "ssh proxyconnect comp=$c failed" |
12 | verbose "plain username privsep=$ps comp=$c" | 12 | fi |
13 | opts="-oCompression=$c -F $OBJ/ssh_proxy" | 13 | if [ "$SSH_CONNECTION" != "UNKNOWN 65535 UNKNOWN 65535" ]; then |
14 | SSH_CONNECTION=`${SSH} $opts 999.999.999.999 'echo $SSH_CONNECTION'` | 14 | fail "bad SSH_CONNECTION comp=$c: " \ |
15 | if [ $? -ne 0 ]; then | 15 | "$SSH_CONNECTION" |
16 | fail "ssh proxyconnect privsep=$ps comp=$c failed" | 16 | fi |
17 | fi | ||
18 | if [ "$SSH_CONNECTION" != "UNKNOWN 65535 UNKNOWN 65535" ]; then | ||
19 | fail "bad SSH_CONNECTION privsep=$ps comp=$c: " \ | ||
20 | "$SSH_CONNECTION" | ||
21 | fi | ||
22 | done | ||
23 | done | 17 | done |
24 | 18 | ||
25 | verbose "username with style" | 19 | verbose "username with style" |
diff --git a/regress/putty-ciphers.sh b/regress/putty-ciphers.sh index 419daabba..191a2bda8 100644 --- a/regress/putty-ciphers.sh +++ b/regress/putty-ciphers.sh | |||
@@ -15,7 +15,7 @@ for c in aes 3des aes128-ctr aes192-ctr aes256-ctr ; do | |||
15 | echo "Cipher=$c" >> ${OBJ}/.putty/sessions/cipher_$c | 15 | echo "Cipher=$c" >> ${OBJ}/.putty/sessions/cipher_$c |
16 | 16 | ||
17 | rm -f ${COPY} | 17 | rm -f ${COPY} |
18 | env HOME=$PWD ${PLINK} -load cipher_$c -batch -i putty.rsa2 \ | 18 | env HOME=$PWD ${PLINK} -load cipher_$c -batch -i ${OBJ}/putty.rsa2 \ |
19 | cat ${DATA} > ${COPY} | 19 | cat ${DATA} > ${COPY} |
20 | if [ $? -ne 0 ]; then | 20 | if [ $? -ne 0 ]; then |
21 | fail "ssh cat $DATA failed" | 21 | fail "ssh cat $DATA failed" |
diff --git a/regress/putty-kex.sh b/regress/putty-kex.sh index 9d3c6a9f0..71c09701b 100644 --- a/regress/putty-kex.sh +++ b/regress/putty-kex.sh | |||
@@ -14,7 +14,7 @@ for k in dh-gex-sha1 dh-group1-sha1 dh-group14-sha1 ; do | |||
14 | ${OBJ}/.putty/sessions/kex_$k | 14 | ${OBJ}/.putty/sessions/kex_$k |
15 | echo "KEX=$k" >> ${OBJ}/.putty/sessions/kex_$k | 15 | echo "KEX=$k" >> ${OBJ}/.putty/sessions/kex_$k |
16 | 16 | ||
17 | env HOME=$PWD ${PLINK} -load kex_$k -batch -i putty.rsa2 true | 17 | env HOME=$PWD ${PLINK} -load kex_$k -batch -i ${OBJ}/putty.rsa2 true |
18 | if [ $? -ne 0 ]; then | 18 | if [ $? -ne 0 ]; then |
19 | fail "KEX $k failed" | 19 | fail "KEX $k failed" |
20 | fi | 20 | fi |
diff --git a/regress/putty-transfer.sh b/regress/putty-transfer.sh index 57e465404..4928d4533 100644 --- a/regress/putty-transfer.sh +++ b/regress/putty-transfer.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: putty-transfer.sh,v 1.5 2017/04/30 23:34:55 djm Exp $ | 1 | # $OpenBSD: putty-transfer.sh,v 1.6 2018/02/23 03:03:00 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="putty transfer data" | 4 | tid="putty transfer data" |
@@ -15,7 +15,7 @@ for c in 0 1 ; do | |||
15 | ${OBJ}/.putty/sessions/compression_$c | 15 | ${OBJ}/.putty/sessions/compression_$c |
16 | echo "Compression=$c" >> ${OBJ}/.putty/sessions/kex_$k | 16 | echo "Compression=$c" >> ${OBJ}/.putty/sessions/kex_$k |
17 | env HOME=$PWD ${PLINK} -load compression_$c -batch \ | 17 | env HOME=$PWD ${PLINK} -load compression_$c -batch \ |
18 | -i putty.rsa2 cat ${DATA} > ${COPY} | 18 | -i ${OBJ}/putty.rsa2 cat ${DATA} > ${COPY} |
19 | if [ $? -ne 0 ]; then | 19 | if [ $? -ne 0 ]; then |
20 | fail "ssh cat $DATA failed" | 20 | fail "ssh cat $DATA failed" |
21 | fi | 21 | fi |
@@ -26,7 +26,7 @@ for c in 0 1 ; do | |||
26 | rm -f ${COPY} | 26 | rm -f ${COPY} |
27 | dd if=$DATA obs=${s} 2> /dev/null | \ | 27 | dd if=$DATA obs=${s} 2> /dev/null | \ |
28 | env HOME=$PWD ${PLINK} -load compression_$c \ | 28 | env HOME=$PWD ${PLINK} -load compression_$c \ |
29 | -batch -i putty.rsa2 \ | 29 | -batch -i ${OBJ}/putty.rsa2 \ |
30 | "cat > ${COPY}" | 30 | "cat > ${COPY}" |
31 | if [ $? -ne 0 ]; then | 31 | if [ $? -ne 0 ]; then |
32 | fail "ssh cat $DATA failed" | 32 | fail "ssh cat $DATA failed" |
diff --git a/regress/scp-uri.sh b/regress/scp-uri.sh new file mode 100644 index 000000000..c03d8bbe0 --- /dev/null +++ b/regress/scp-uri.sh | |||
@@ -0,0 +1,70 @@ | |||
1 | # $OpenBSD: scp-uri.sh,v 1.2 2017/12/11 11:41:56 dtucker Exp $ | ||
2 | # Placed in the Public Domain. | ||
3 | |||
4 | tid="scp-uri" | ||
5 | |||
6 | #set -x | ||
7 | |||
8 | COPY2=${OBJ}/copy2 | ||
9 | DIR=${COPY}.dd | ||
10 | DIR2=${COPY}.dd2 | ||
11 | |||
12 | SRC=`dirname ${SCRIPT}` | ||
13 | cp ${SRC}/scp-ssh-wrapper.sh ${OBJ}/scp-ssh-wrapper.scp | ||
14 | chmod 755 ${OBJ}/scp-ssh-wrapper.scp | ||
15 | scpopts="-q -S ${OBJ}/scp-ssh-wrapper.scp" | ||
16 | export SCP # used in scp-ssh-wrapper.scp | ||
17 | |||
18 | scpclean() { | ||
19 | rm -rf ${COPY} ${COPY2} ${DIR} ${DIR2} | ||
20 | mkdir ${DIR} ${DIR2} | ||
21 | } | ||
22 | |||
23 | # Remove Port and User from ssh_config, we want to rely on the URI | ||
24 | cp $OBJ/ssh_config $OBJ/ssh_config.orig | ||
25 | egrep -v '^ +(Port|User) +.*$' $OBJ/ssh_config.orig > $OBJ/ssh_config | ||
26 | |||
27 | verbose "$tid: simple copy local file to remote file" | ||
28 | scpclean | ||
29 | $SCP $scpopts ${DATA} "scp://${USER}@somehost:${PORT}/${COPY}" || fail "copy failed" | ||
30 | cmp ${DATA} ${COPY} || fail "corrupted copy" | ||
31 | |||
32 | verbose "$tid: simple copy remote file to local file" | ||
33 | scpclean | ||
34 | $SCP $scpopts "scp://${USER}@somehost:${PORT}/${DATA}" ${COPY} || fail "copy failed" | ||
35 | cmp ${DATA} ${COPY} || fail "corrupted copy" | ||
36 | |||
37 | verbose "$tid: simple copy local file to remote dir" | ||
38 | scpclean | ||
39 | cp ${DATA} ${COPY} | ||
40 | $SCP $scpopts ${COPY} "scp://${USER}@somehost:${PORT}/${DIR}" || fail "copy failed" | ||
41 | cmp ${COPY} ${DIR}/copy || fail "corrupted copy" | ||
42 | |||
43 | verbose "$tid: simple copy remote file to local dir" | ||
44 | scpclean | ||
45 | cp ${DATA} ${COPY} | ||
46 | $SCP $scpopts "scp://${USER}@somehost:${PORT}/${COPY}" ${DIR} || fail "copy failed" | ||
47 | cmp ${COPY} ${DIR}/copy || fail "corrupted copy" | ||
48 | |||
49 | verbose "$tid: recursive local dir to remote dir" | ||
50 | scpclean | ||
51 | rm -rf ${DIR2} | ||
52 | cp ${DATA} ${DIR}/copy | ||
53 | $SCP $scpopts -r ${DIR} "scp://${USER}@somehost:${PORT}/${DIR2}" || fail "copy failed" | ||
54 | for i in $(cd ${DIR} && echo *); do | ||
55 | cmp ${DIR}/$i ${DIR2}/$i || fail "corrupted copy" | ||
56 | done | ||
57 | |||
58 | verbose "$tid: recursive remote dir to local dir" | ||
59 | scpclean | ||
60 | rm -rf ${DIR2} | ||
61 | cp ${DATA} ${DIR}/copy | ||
62 | $SCP $scpopts -r "scp://${USER}@somehost:${PORT}/${DIR}" ${DIR2} || fail "copy failed" | ||
63 | for i in $(cd ${DIR} && echo *); do | ||
64 | cmp ${DIR}/$i ${DIR2}/$i || fail "corrupted copy" | ||
65 | done | ||
66 | |||
67 | # TODO: scp -3 | ||
68 | |||
69 | scpclean | ||
70 | rm -f ${OBJ}/scp-ssh-wrapper.exe | ||
diff --git a/regress/sftp-chroot.sh b/regress/sftp-chroot.sh index 4ea2fce85..ba5bd1efb 100644 --- a/regress/sftp-chroot.sh +++ b/regress/sftp-chroot.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: sftp-chroot.sh,v 1.5 2016/09/26 21:34:38 bluhm Exp $ | 1 | # $OpenBSD: sftp-chroot.sh,v 1.6 2018/02/09 03:42:57 dtucker Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="sftp in chroot" | 4 | tid="sftp in chroot" |
@@ -8,8 +8,9 @@ FILENAME=testdata_${USER} | |||
8 | PRIVDATA=${CHROOT}/${FILENAME} | 8 | PRIVDATA=${CHROOT}/${FILENAME} |
9 | 9 | ||
10 | if [ -z "$SUDO" -a ! -w /var/run ]; then | 10 | if [ -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 "need SUDO to create file in /var/run, test won't work without" |
12 | exit 0 | 12 | echo SKIPPED |
13 | exit 0 | ||
13 | fi | 14 | fi |
14 | 15 | ||
15 | if ! $OBJ/check-perm -m chroot "$CHROOT" ; then | 16 | if ! $OBJ/check-perm -m chroot "$CHROOT" ; then |
diff --git a/regress/sftp-uri.sh b/regress/sftp-uri.sh new file mode 100644 index 000000000..7be104dfb --- /dev/null +++ b/regress/sftp-uri.sh | |||
@@ -0,0 +1,63 @@ | |||
1 | # $OpenBSD: sftp-uri.sh,v 1.1 2017/10/24 19:33:32 millert Exp $ | ||
2 | # Placed in the Public Domain. | ||
3 | |||
4 | tid="sftp-uri" | ||
5 | |||
6 | #set -x | ||
7 | |||
8 | COPY2=${OBJ}/copy2 | ||
9 | DIR=${COPY}.dd | ||
10 | DIR2=${COPY}.dd2 | ||
11 | SRC=`dirname ${SCRIPT}` | ||
12 | |||
13 | sftpclean() { | ||
14 | rm -rf ${COPY} ${COPY2} ${DIR} ${DIR2} | ||
15 | mkdir ${DIR} ${DIR2} | ||
16 | } | ||
17 | |||
18 | start_sshd -oForceCommand="internal-sftp -d /" | ||
19 | |||
20 | # Remove Port and User from ssh_config, we want to rely on the URI | ||
21 | cp $OBJ/ssh_config $OBJ/ssh_config.orig | ||
22 | egrep -v '^ +(Port|User) +.*$' $OBJ/ssh_config.orig > $OBJ/ssh_config | ||
23 | |||
24 | verbose "$tid: non-interactive fetch to local file" | ||
25 | sftpclean | ||
26 | ${SFTP} -q -S "$SSH" -F $OBJ/ssh_config "sftp://${USER}@somehost:${PORT}/${DATA}" ${COPY} || fail "copy failed" | ||
27 | cmp ${DATA} ${COPY} || fail "corrupted copy" | ||
28 | |||
29 | verbose "$tid: non-interactive fetch to local dir" | ||
30 | sftpclean | ||
31 | cp ${DATA} ${COPY} | ||
32 | ${SFTP} -q -S "$SSH" -F $OBJ/ssh_config "sftp://${USER}@somehost:${PORT}/${COPY}" ${DIR} || fail "copy failed" | ||
33 | cmp ${COPY} ${DIR}/copy || fail "corrupted copy" | ||
34 | |||
35 | verbose "$tid: put to remote directory (trailing slash)" | ||
36 | sftpclean | ||
37 | ${SFTP} -q -S "$SSH" -F $OBJ/ssh_config -b - \ | ||
38 | "sftp://${USER}@somehost:${PORT}/${DIR}/" > /dev/null 2>&1 << EOF | ||
39 | version | ||
40 | put ${DATA} copy | ||
41 | EOF | ||
42 | r=$? | ||
43 | if [ $r -ne 0 ]; then | ||
44 | fail "sftp failed with $r" | ||
45 | else | ||
46 | cmp ${DATA} ${DIR}/copy || fail "corrupted copy" | ||
47 | fi | ||
48 | |||
49 | verbose "$tid: put to remote directory (no slash)" | ||
50 | sftpclean | ||
51 | ${SFTP} -q -S "$SSH" -F $OBJ/ssh_config -b - \ | ||
52 | "sftp://${USER}@somehost:${PORT}/${DIR}" > /dev/null 2>&1 << EOF | ||
53 | version | ||
54 | put ${DATA} copy | ||
55 | EOF | ||
56 | r=$? | ||
57 | if [ $r -ne 0 ]; then | ||
58 | fail "sftp failed with $r" | ||
59 | else | ||
60 | cmp ${DATA} ${DIR}/copy || fail "corrupted copy" | ||
61 | fi | ||
62 | |||
63 | sftpclean | ||
diff --git a/regress/sftp.sh b/regress/sftp.sh index b8e9f7527..a5c88f584 100644 --- a/regress/sftp.sh +++ b/regress/sftp.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: sftp.sh,v 1.5 2013/05/17 10:28:11 dtucker Exp $ | 1 | # $OpenBSD: sftp.sh,v 1.6 2017/10/30 21:59:43 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="basic sftp put/get" | 4 | tid="basic sftp put/get" |
@@ -22,11 +22,11 @@ for B in ${BUFFERSIZE}; do | |||
22 | r=$? | 22 | r=$? |
23 | if [ $r -ne 0 ]; then | 23 | if [ $r -ne 0 ]; then |
24 | fail "sftp failed with $r" | 24 | fail "sftp failed with $r" |
25 | else | 25 | else |
26 | cmp $DATA ${COPY}.1 || fail "corrupted copy after get" | 26 | cmp $DATA ${COPY}.1 || fail "corrupted copy after get" |
27 | cmp $DATA ${COPY}.2 || fail "corrupted copy after put" | 27 | cmp $DATA ${COPY}.2 || fail "corrupted copy after put" |
28 | fi | 28 | fi |
29 | done | 29 | done |
30 | done | 30 | done |
31 | rm -f ${COPY}.1 ${COPY}.2 | 31 | rm -f ${COPY}.1 ${COPY}.2 |
32 | rm -f $SFTPCMDFILE | 32 | rm -f $SFTPCMDFILE |
diff --git a/regress/sshd-log-wrapper.sh b/regress/sshd-log-wrapper.sh index c00934c78..29dc44aa0 100644 --- a/regress/sshd-log-wrapper.sh +++ b/regress/sshd-log-wrapper.sh | |||
@@ -1,5 +1,5 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | # $OpenBSD: sshd-log-wrapper.sh,v 1.3 2013/04/07 02:16:03 dtucker Exp $ | 2 | # $OpenBSD: sshd-log-wrapper.sh,v 1.4 2016/11/25 02:56:49 dtucker Exp $ |
3 | # Placed in the Public Domain. | 3 | # Placed in the Public Domain. |
4 | # | 4 | # |
5 | # simple wrapper for sshd proxy mode to catch stderr output | 5 | # simple wrapper for sshd proxy mode to catch stderr output |
diff --git a/regress/test-exec.sh b/regress/test-exec.sh index 68f010b70..b6169f157 100644 --- a/regress/test-exec.sh +++ b/regress/test-exec.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: test-exec.sh,v 1.61 2017/07/28 10:32:08 dtucker Exp $ | 1 | # $OpenBSD: test-exec.sh,v 1.62 2018/03/16 09:06:31 dtucker Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | #SUDO=sudo | 4 | #SUDO=sudo |
@@ -503,6 +503,7 @@ if test "$REGRESS_INTEROP_PUTTY" = "yes" ; then | |||
503 | # Add a PuTTY key to authorized_keys | 503 | # Add a PuTTY key to authorized_keys |
504 | rm -f ${OBJ}/putty.rsa2 | 504 | rm -f ${OBJ}/putty.rsa2 |
505 | if ! puttygen -t rsa -o ${OBJ}/putty.rsa2 \ | 505 | if ! puttygen -t rsa -o ${OBJ}/putty.rsa2 \ |
506 | --random-device=/dev/urandom \ | ||
506 | --new-passphrase /dev/null < /dev/null > /dev/null; then | 507 | --new-passphrase /dev/null < /dev/null > /dev/null; then |
507 | echo "Your installed version of PuTTY is too old to support --new-passphrase; trying without (may require manual interaction) ..." >&2 | 508 | echo "Your installed version of PuTTY is too old to support --new-passphrase; trying without (may require manual interaction) ..." >&2 |
508 | puttygen -t rsa -o ${OBJ}/putty.rsa2 < /dev/null > /dev/null | 509 | puttygen -t rsa -o ${OBJ}/putty.rsa2 < /dev/null > /dev/null |
@@ -526,6 +527,9 @@ if test "$REGRESS_INTEROP_PUTTY" = "yes" ; then | |||
526 | echo "ProxyTelnetCommand=sh ${SRC}/sshd-log-wrapper.sh ${TEST_SSHD_LOGFILE} ${SSHD} -i -f $OBJ/sshd_proxy" >> ${OBJ}/.putty/sessions/localhost_proxy | 527 | echo "ProxyTelnetCommand=sh ${SRC}/sshd-log-wrapper.sh ${TEST_SSHD_LOGFILE} ${SSHD} -i -f $OBJ/sshd_proxy" >> ${OBJ}/.putty/sessions/localhost_proxy |
527 | echo "ProxyLocalhost=1" >> ${OBJ}/.putty/sessions/localhost_proxy | 528 | echo "ProxyLocalhost=1" >> ${OBJ}/.putty/sessions/localhost_proxy |
528 | 529 | ||
530 | PUTTYDIR=${OBJ}/.putty | ||
531 | export PUTTYDIR | ||
532 | |||
529 | REGRESS_INTEROP_PUTTY=yes | 533 | REGRESS_INTEROP_PUTTY=yes |
530 | fi | 534 | fi |
531 | 535 | ||
diff --git a/regress/unittests/Makefile b/regress/unittests/Makefile index e975f6ca4..e464b085a 100644 --- a/regress/unittests/Makefile +++ b/regress/unittests/Makefile | |||
@@ -1,6 +1,7 @@ | |||
1 | # $OpenBSD: Makefile,v 1.9 2017/03/14 01:20:29 dtucker Exp $ | 1 | # $OpenBSD: Makefile,v 1.10 2018/03/03 03:16:17 djm Exp $ |
2 | 2 | ||
3 | REGRESS_FAIL_EARLY?= yes | 3 | REGRESS_FAIL_EARLY?= yes |
4 | SUBDIR= test_helper sshbuf sshkey bitmap kex hostkeys utf8 match conversion | 4 | SUBDIR= test_helper sshbuf sshkey bitmap kex hostkeys utf8 match conversion |
5 | SUBDIR+=authopt | ||
5 | 6 | ||
6 | .include <bsd.subdir.mk> | 7 | .include <bsd.subdir.mk> |
diff --git a/regress/unittests/Makefile.inc b/regress/unittests/Makefile.inc index 36d1ff42c..b509f4452 100644 --- a/regress/unittests/Makefile.inc +++ b/regress/unittests/Makefile.inc | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: Makefile.inc,v 1.11 2017/04/30 23:33:48 djm Exp $ | 1 | # $OpenBSD: Makefile.inc,v 1.12 2017/12/21 00:41:22 djm Exp $ |
2 | 2 | ||
3 | .include <bsd.own.mk> | 3 | .include <bsd.own.mk> |
4 | .include <bsd.obj.mk> | 4 | .include <bsd.obj.mk> |
@@ -30,8 +30,8 @@ CDIAGFLAGS+= -Wswitch | |||
30 | CDIAGFLAGS+= -Wtrigraphs | 30 | CDIAGFLAGS+= -Wtrigraphs |
31 | CDIAGFLAGS+= -Wuninitialized | 31 | CDIAGFLAGS+= -Wuninitialized |
32 | CDIAGFLAGS+= -Wunused | 32 | CDIAGFLAGS+= -Wunused |
33 | CDIAGFLAGS+= -Wno-unused-parameter | ||
33 | .if ${COMPILER_VERSION:L} != "gcc3" | 34 | .if ${COMPILER_VERSION:L} != "gcc3" |
34 | CDIAGFLAGS+= -Wpointer-sign | ||
35 | CDIAGFLAGS+= -Wold-style-definition | 35 | CDIAGFLAGS+= -Wold-style-definition |
36 | .endif | 36 | .endif |
37 | 37 | ||
@@ -47,17 +47,7 @@ LDADD+=-L${.CURDIR}/../test_helper -ltest_helper | |||
47 | DPADD+=${.CURDIR}/../test_helper/libtest_helper.a | 47 | DPADD+=${.CURDIR}/../test_helper/libtest_helper.a |
48 | .endif | 48 | .endif |
49 | 49 | ||
50 | .if exists(${.CURDIR}/${SSHREL}/lib/${__objdir}) | 50 | .PATH: ${.CURDIR}/${SSHREL} |
51 | LDADD+=-L${.CURDIR}/${SSHREL}/lib/${__objdir} -lssh | ||
52 | LIBSSH=${.CURDIR}/${SSHREL}/lib/${__objdir}/libssh.a | ||
53 | .else | ||
54 | LDADD+=-L${.CURDIR}/${SSHREL}/lib -lssh | ||
55 | LIBSSH=${.CURDIR}/${SSHREL}/lib/libssh.a | ||
56 | .endif | ||
57 | DPADD+=${LIBSSH} | ||
58 | ${PROG}: ${LIBSSH} | ||
59 | ${LIBSSH}: | ||
60 | cd ${.CURDIR}/${SSHREL} && ${MAKE} lib | ||
61 | 51 | ||
62 | LDADD+= -lcrypto | 52 | LDADD+= -lcrypto |
63 | DPADD+= ${LIBCRYPTO} | 53 | DPADD+= ${LIBCRYPTO} |
diff --git a/regress/unittests/authopt/testdata/all_permit.cert b/regress/unittests/authopt/testdata/all_permit.cert new file mode 100644 index 000000000..38ac57318 --- /dev/null +++ b/regress/unittests/authopt/testdata/all_permit.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIOv/h7mJS1WkRHukSvqPwKDiNVrcib/VqBLpbHW6xjWCAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAAAAAAIIAAAAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9yd2FyZGluZwAAAAAAAAAWcGVybWl0LXBvcnQtZm9yd2FyZGluZwAAAAAAAAAKcGVybWl0LXB0eQAAAAAAAAAOcGVybWl0LXVzZXItcmMAAAAAAAAAAAAAADMAAAALc3NoLWVkMjU1MTkAAAAgKFWCzCzQTh9UkoHphbgwaa86Q16Kern0UjqOr7Q+Jk8AAABTAAAAC3NzaC1lZDI1NTE5AAAAQNe1XDN+J4Eb82TH5J5sYypcabocufjTFRfpU57K+csRP41Yo1FCSEWx95ilUuNvK9Iv3yFDOeVPzdqRqzWoHwE= user key | |||
diff --git a/regress/unittests/authopt/testdata/bad_sourceaddr.cert b/regress/unittests/authopt/testdata/bad_sourceaddr.cert new file mode 100644 index 000000000..9732745ac --- /dev/null +++ b/regress/unittests/authopt/testdata/bad_sourceaddr.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAILFEJyunlz9scYU3mwbOEJoSSkeO1z20uNBw13tEn+lJAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAHwAAAA5zb3VyY2UtYWRkcmVzcwAAAAkAAAAFeHh4eHgAAACCAAAAFXBlcm1pdC1YMTEtZm9yd2FyZGluZwAAAAAAAAAXcGVybWl0LWFnZW50LWZvcndhcmRpbmcAAAAAAAAAFnBlcm1pdC1wb3J0LWZvcndhcmRpbmcAAAAAAAAACnBlcm1pdC1wdHkAAAAAAAAADnBlcm1pdC11c2VyLXJjAAAAAAAAAAAAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIChVgsws0E4fVJKB6YW4MGmvOkNeinq59FI6jq+0PiZPAAAAUwAAAAtzc2gtZWQyNTUxOQAAAEA5xY/OEAJ3tgg8/KJqaBR5KMdYYRDiMJ6u4VKS9lQOV1HJQvDDvjj3F5k53BIqTJRVQx242YWs+B3C4db/uLgB user key | |||
diff --git a/regress/unittests/authopt/testdata/force_command.cert b/regress/unittests/authopt/testdata/force_command.cert new file mode 100644 index 000000000..f7af27e43 --- /dev/null +++ b/regress/unittests/authopt/testdata/force_command.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIJkpCeqaVl6qnp7qa90KehAmHFecx3HW8HZQ22KEqeKBAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAHAAAAA1mb3JjZS1jb21tYW5kAAAABwAAAANmb28AAACCAAAAFXBlcm1pdC1YMTEtZm9yd2FyZGluZwAAAAAAAAAXcGVybWl0LWFnZW50LWZvcndhcmRpbmcAAAAAAAAAFnBlcm1pdC1wb3J0LWZvcndhcmRpbmcAAAAAAAAACnBlcm1pdC1wdHkAAAAAAAAADnBlcm1pdC11c2VyLXJjAAAAAAAAAAAAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIChVgsws0E4fVJKB6YW4MGmvOkNeinq59FI6jq+0PiZPAAAAUwAAAAtzc2gtZWQyNTUxOQAAAEAxbhjgbXvfEumRP1E7VH8nUfuJyVlDChhCxiPg9Nvb9PFK8cHdDUEybDCzKCsIDieRc3mtLTyEu7Kb52va/B4C user key | |||
diff --git a/regress/unittests/authopt/testdata/host.cert b/regress/unittests/authopt/testdata/host.cert new file mode 100644 index 000000000..6326d0453 --- /dev/null +++ b/regress/unittests/authopt/testdata/host.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIFWMw3ftP29RSefnxQwdvK1KiE2G9Y7rPRrJ7ZsrDiOeAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAACAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAAAAAAAAAAAAAAAAAMwAAAAtzc2gtZWQyNTUxOQAAACAoVYLMLNBOH1SSgemFuDBprzpDXop6ufRSOo6vtD4mTwAAAFMAAAALc3NoLWVkMjU1MTkAAABAKTMqwPkaBg23RS7/aj347dc2kY4bWt/sHwzREYSrKRqZ5RNBnSvZOQ8m5euMCEuf92bZ8VJEdF653jRiW6VoBA== user key | |||
diff --git a/regress/unittests/authopt/testdata/mktestdata.sh b/regress/unittests/authopt/testdata/mktestdata.sh new file mode 100644 index 000000000..06a24e390 --- /dev/null +++ b/regress/unittests/authopt/testdata/mktestdata.sh | |||
@@ -0,0 +1,48 @@ | |||
1 | #/bin/sh | ||
2 | |||
3 | set -xe | ||
4 | |||
5 | rm -f ca_key ca_key.pub | ||
6 | rm -f user_key user_key.pub | ||
7 | rm -f *.cert | ||
8 | |||
9 | ssh-keygen -q -f ca_key -t ed25519 -C CA -N '' | ||
10 | ssh-keygen -q -f user_key -t ed25519 -C "user key" -N '' | ||
11 | |||
12 | sign() { | ||
13 | output=$1 | ||
14 | shift | ||
15 | set -xe | ||
16 | ssh-keygen -q -s ca_key -I user -n user \ | ||
17 | -V 19990101:19991231 -z 1 "$@" user_key.pub | ||
18 | mv user_key-cert.pub "$output" | ||
19 | } | ||
20 | |||
21 | sign all_permit.cert -Opermit-agent-forwarding -Opermit-port-forwarding \ | ||
22 | -Opermit-pty -Opermit-user-rc -Opermit-X11-forwarding | ||
23 | sign no_permit.cert -Oclear | ||
24 | |||
25 | sign no_agentfwd.cert -Ono-agent-forwarding | ||
26 | sign no_portfwd.cert -Ono-port-forwarding | ||
27 | sign no_pty.cert -Ono-pty | ||
28 | sign no_user_rc.cert -Ono-user-rc | ||
29 | sign no_x11fwd.cert -Ono-X11-forwarding | ||
30 | |||
31 | sign only_agentfwd.cert -Oclear -Opermit-agent-forwarding | ||
32 | sign only_portfwd.cert -Oclear -Opermit-port-forwarding | ||
33 | sign only_pty.cert -Oclear -Opermit-pty | ||
34 | sign only_user_rc.cert -Oclear -Opermit-user-rc | ||
35 | sign only_x11fwd.cert -Oclear -Opermit-X11-forwarding | ||
36 | |||
37 | sign force_command.cert -Oforce-command="foo" | ||
38 | sign sourceaddr.cert -Osource-address="127.0.0.1/32,::1/128" | ||
39 | |||
40 | # ssh-keygen won't permit generation of certs with invalid source-address | ||
41 | # values, so we do it as a custom extension. | ||
42 | sign bad_sourceaddr.cert -Ocritical:source-address=xxxxx | ||
43 | |||
44 | sign unknown_critical.cert -Ocritical:blah=foo | ||
45 | |||
46 | sign host.cert -h | ||
47 | |||
48 | rm -f user_key ca_key user_key.pub ca_key.pub | ||
diff --git a/regress/unittests/authopt/testdata/no_agentfwd.cert b/regress/unittests/authopt/testdata/no_agentfwd.cert new file mode 100644 index 000000000..bfa5c2e65 --- /dev/null +++ b/regress/unittests/authopt/testdata/no_agentfwd.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIL2qEsLCVtKaBkbCrZicxbPUorcHHrQ8yw5h/26krTOlAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAAAAAAGMAAAAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABZwZXJtaXQtcG9ydC1mb3J3YXJkaW5nAAAAAAAAAApwZXJtaXQtcHR5AAAAAAAAAA5wZXJtaXQtdXNlci1yYwAAAAAAAAAAAAAAMwAAAAtzc2gtZWQyNTUxOQAAACAoVYLMLNBOH1SSgemFuDBprzpDXop6ufRSOo6vtD4mTwAAAFMAAAALc3NoLWVkMjU1MTkAAABAdRhISpol01OwV30g39PM/JD1t35muskX4lyCcGpFQ08GQtBuHE/hABOp6apbGBJIC7CZYYF+uHkD7PfGU3NPAQ== user key | |||
diff --git a/regress/unittests/authopt/testdata/no_permit.cert b/regress/unittests/authopt/testdata/no_permit.cert new file mode 100644 index 000000000..351e138ae --- /dev/null +++ b/regress/unittests/authopt/testdata/no_permit.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIGVQtVgp9sD4sc8esIhVWbZaM8d0NxpX3UbEVzTHm9feAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAAAAAAAAAAAAAAAAAMwAAAAtzc2gtZWQyNTUxOQAAACAoVYLMLNBOH1SSgemFuDBprzpDXop6ufRSOo6vtD4mTwAAAFMAAAALc3NoLWVkMjU1MTkAAABAIKlI0TqqraKjYTjIuKhwoxAV/XnzWRJHq8lNs4aj5yDb84un2xXDF/0vXoLjPgVcLgEbksBKKn0i4whp+xn9Ag== user key | |||
diff --git a/regress/unittests/authopt/testdata/no_portfwd.cert b/regress/unittests/authopt/testdata/no_portfwd.cert new file mode 100644 index 000000000..9457dc34e --- /dev/null +++ b/regress/unittests/authopt/testdata/no_portfwd.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIE6gC/QjjuzGWVDkr8ZyaHhja80V+lKLC/MvmEFa+CEBAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAAAAAAGQAAAAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9yd2FyZGluZwAAAAAAAAAKcGVybWl0LXB0eQAAAAAAAAAOcGVybWl0LXVzZXItcmMAAAAAAAAAAAAAADMAAAALc3NoLWVkMjU1MTkAAAAgKFWCzCzQTh9UkoHphbgwaa86Q16Kern0UjqOr7Q+Jk8AAABTAAAAC3NzaC1lZDI1NTE5AAAAQEzpgckYlfc1BK1ir0reDSXo9OIDx4UoDMrNXrFO6I44NXoJJ4TlUUJH07WcKp/Xp5ESCdyVZtqwgHQxZr0+PwI= user key | |||
diff --git a/regress/unittests/authopt/testdata/no_pty.cert b/regress/unittests/authopt/testdata/no_pty.cert new file mode 100644 index 000000000..e8154ec7f --- /dev/null +++ b/regress/unittests/authopt/testdata/no_pty.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIFFjhISpSDR3blDejuCf2T9Fe4aHW53jG7KOH2PV/E7jAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAAAAAAHAAAAAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9yd2FyZGluZwAAAAAAAAAWcGVybWl0LXBvcnQtZm9yd2FyZGluZwAAAAAAAAAOcGVybWl0LXVzZXItcmMAAAAAAAAAAAAAADMAAAALc3NoLWVkMjU1MTkAAAAgKFWCzCzQTh9UkoHphbgwaa86Q16Kern0UjqOr7Q+Jk8AAABTAAAAC3NzaC1lZDI1NTE5AAAAQF5c4BdxVYgqbMGAep414IGFK4deCFBCeNUTOLpKodrfb1M0gS4d2qoeMxZvMv5yMf/viKl/gallHzEmcrEcIQY= user key | |||
diff --git a/regress/unittests/authopt/testdata/no_user_rc.cert b/regress/unittests/authopt/testdata/no_user_rc.cert new file mode 100644 index 000000000..6676a0cbd --- /dev/null +++ b/regress/unittests/authopt/testdata/no_user_rc.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIFUM0VLATkYh05QeS5uuhB1X50NMom3jTWeQUmrPQ1FwAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAAAAAAGwAAAAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9yd2FyZGluZwAAAAAAAAAWcGVybWl0LXBvcnQtZm9yd2FyZGluZwAAAAAAAAAKcGVybWl0LXB0eQAAAAAAAAAAAAAAMwAAAAtzc2gtZWQyNTUxOQAAACAoVYLMLNBOH1SSgemFuDBprzpDXop6ufRSOo6vtD4mTwAAAFMAAAALc3NoLWVkMjU1MTkAAABAcmJ3c2FCKJL9BCLv1Ij+uN1N+NWZmMXYionsSkv42Go4pMZiH3g8UfTd+OKq9Q7GAcCzGXa///6Dr/wqFssoDA== user key | |||
diff --git a/regress/unittests/authopt/testdata/no_x11fwd.cert b/regress/unittests/authopt/testdata/no_x11fwd.cert new file mode 100644 index 000000000..0aff9e6cf --- /dev/null +++ b/regress/unittests/authopt/testdata/no_x11fwd.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIPRKPAP+b5S+4zihdgoJrYNcMovFBgKZaJupIhN1kUvkAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAAAAAAGUAAAAXcGVybWl0LWFnZW50LWZvcndhcmRpbmcAAAAAAAAAFnBlcm1pdC1wb3J0LWZvcndhcmRpbmcAAAAAAAAACnBlcm1pdC1wdHkAAAAAAAAADnBlcm1pdC11c2VyLXJjAAAAAAAAAAAAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIChVgsws0E4fVJKB6YW4MGmvOkNeinq59FI6jq+0PiZPAAAAUwAAAAtzc2gtZWQyNTUxOQAAAECMzj6VDfT+BJmIEo1qUKdr8VDLExF92K7KkbNxTH77n7uip7TL24HDfXjYBCvqxSSn9KAGBhnWsIC/GPx6A+cP user key | |||
diff --git a/regress/unittests/authopt/testdata/only_agentfwd.cert b/regress/unittests/authopt/testdata/only_agentfwd.cert new file mode 100644 index 000000000..3cf64b05c --- /dev/null +++ b/regress/unittests/authopt/testdata/only_agentfwd.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIOvJ28yW5uvA7yxE3ySuyFvPjcRYKAr03CYr4okGTNIFAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAAAAAAB8AAAAXcGVybWl0LWFnZW50LWZvcndhcmRpbmcAAAAAAAAAAAAAADMAAAALc3NoLWVkMjU1MTkAAAAgKFWCzCzQTh9UkoHphbgwaa86Q16Kern0UjqOr7Q+Jk8AAABTAAAAC3NzaC1lZDI1NTE5AAAAQEG2uTgmOSk9dJ0s/Ol1EIERXFP9PF6AauF9t5jBMSthNyvSANSrC/1EIaf4TV5kMYfhZxJXoS0XHQjGndcq2AE= user key | |||
diff --git a/regress/unittests/authopt/testdata/only_portfwd.cert b/regress/unittests/authopt/testdata/only_portfwd.cert new file mode 100644 index 000000000..bb09c3a63 --- /dev/null +++ b/regress/unittests/authopt/testdata/only_portfwd.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIGPoYoExiSyHMyDEvOFgoNZXk5z91u7xq/7357X23TotAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAAAAAAB4AAAAWcGVybWl0LXBvcnQtZm9yd2FyZGluZwAAAAAAAAAAAAAAMwAAAAtzc2gtZWQyNTUxOQAAACAoVYLMLNBOH1SSgemFuDBprzpDXop6ufRSOo6vtD4mTwAAAFMAAAALc3NoLWVkMjU1MTkAAABAHN3YnwipcbDKVn+PObGSoaT9rwlau+yrPYZ50oetvCKng3RMjGaV+roqlv0vjjLcxE9J4Y0ti+9MXtQ0D7beBA== user key | |||
diff --git a/regress/unittests/authopt/testdata/only_pty.cert b/regress/unittests/authopt/testdata/only_pty.cert new file mode 100644 index 000000000..520c89f3b --- /dev/null +++ b/regress/unittests/authopt/testdata/only_pty.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAILvocWYto5Lg7P46YLbe7U4/b2h9Lr5rWqMZ4Cj4ra7RAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAAAAAABIAAAAKcGVybWl0LXB0eQAAAAAAAAAAAAAAMwAAAAtzc2gtZWQyNTUxOQAAACAoVYLMLNBOH1SSgemFuDBprzpDXop6ufRSOo6vtD4mTwAAAFMAAAALc3NoLWVkMjU1MTkAAABASv2xQvp+Y6E8dCf5pzg3MZaan5bl1ToYXNcmQ3ysGrk9Djkcu8m3TytDpF471KmUejxy/iF4xjs9CDpk7h+SBQ== user key | |||
diff --git a/regress/unittests/authopt/testdata/only_user_rc.cert b/regress/unittests/authopt/testdata/only_user_rc.cert new file mode 100644 index 000000000..fb49c35f3 --- /dev/null +++ b/regress/unittests/authopt/testdata/only_user_rc.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIJwsRZQ7kx4A8AQ0q/G/3i6sHM48kr4TxJtTcyy3lZAPAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAAAAAABYAAAAOcGVybWl0LXVzZXItcmMAAAAAAAAAAAAAADMAAAALc3NoLWVkMjU1MTkAAAAgKFWCzCzQTh9UkoHphbgwaa86Q16Kern0UjqOr7Q+Jk8AAABTAAAAC3NzaC1lZDI1NTE5AAAAQDhgEXsvoHr21XrxmiZq/sIjWeYapp11XvEVkkTBPVhBnPwtrrUeJbPmGs3gmJkQdv8BYajYpT7TXEX8GvEeLwU= user key | |||
diff --git a/regress/unittests/authopt/testdata/only_x11fwd.cert b/regress/unittests/authopt/testdata/only_x11fwd.cert new file mode 100644 index 000000000..6715585a0 --- /dev/null +++ b/regress/unittests/authopt/testdata/only_x11fwd.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIDAhZFZBl3eu8Qa8I5BaHCz/mpH8xCjaPusBwo1eJ9OGAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAAAAAAB0AAAAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAAAAAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIChVgsws0E4fVJKB6YW4MGmvOkNeinq59FI6jq+0PiZPAAAAUwAAAAtzc2gtZWQyNTUxOQAAAEDysfgbhniX/zdA8576rrDJpaO2D7QtQse2KWIM9XmREPkLKeP6FKiXKKFcPQiMyV28rptfvK8bBXAiOvITSUgL user key | |||
diff --git a/regress/unittests/authopt/testdata/sourceaddr.cert b/regress/unittests/authopt/testdata/sourceaddr.cert new file mode 100644 index 000000000..0fcf7b182 --- /dev/null +++ b/regress/unittests/authopt/testdata/sourceaddr.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIJ54qqoPs87gtjN1aJoLUn7ZTYUtcaGxkzLyJvRkYG7nAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAALgAAAA5zb3VyY2UtYWRkcmVzcwAAABgAAAAUMTI3LjAuMC4xLzMyLDo6MS8xMjgAAACCAAAAFXBlcm1pdC1YMTEtZm9yd2FyZGluZwAAAAAAAAAXcGVybWl0LWFnZW50LWZvcndhcmRpbmcAAAAAAAAAFnBlcm1pdC1wb3J0LWZvcndhcmRpbmcAAAAAAAAACnBlcm1pdC1wdHkAAAAAAAAADnBlcm1pdC11c2VyLXJjAAAAAAAAAAAAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIChVgsws0E4fVJKB6YW4MGmvOkNeinq59FI6jq+0PiZPAAAAUwAAAAtzc2gtZWQyNTUxOQAAAEAppSUKQ/a9tw/HgIazWceCO3d48GU7mkV4iQMpWWs2nB1dFryY1GDtZrBggAjMviwmBXyM3jIk5vxJDINZXGQJ user key | |||
diff --git a/regress/unittests/authopt/testdata/unknown_critical.cert b/regress/unittests/authopt/testdata/unknown_critical.cert new file mode 100644 index 000000000..216960ab3 --- /dev/null +++ b/regress/unittests/authopt/testdata/unknown_critical.cert | |||
@@ -0,0 +1 @@ | |||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIIjs/wRAB/p5QShSfqoU9cWnCLT3lSveUirk61A27KxVAAAAICeF4LbtRqwIRhewXifa5PKpbSU9P/K8CzeVYj8J/iBoAAAAAAAAAAEAAAABAAAABHVzZXIAAAAIAAAABHVzZXIAAAAANouDYAAAAAA4a2VgAAAAEwAAAARibGFoAAAABwAAAANmb28AAACCAAAAFXBlcm1pdC1YMTEtZm9yd2FyZGluZwAAAAAAAAAXcGVybWl0LWFnZW50LWZvcndhcmRpbmcAAAAAAAAAFnBlcm1pdC1wb3J0LWZvcndhcmRpbmcAAAAAAAAACnBlcm1pdC1wdHkAAAAAAAAADnBlcm1pdC11c2VyLXJjAAAAAAAAAAAAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIChVgsws0E4fVJKB6YW4MGmvOkNeinq59FI6jq+0PiZPAAAAUwAAAAtzc2gtZWQyNTUxOQAAAEDix3FV7JIBuHNAwtZOVIqGBq8lqhnEwP51DqPA43qt+Tzynm56EWxuFzgGehBPF3L8gl+fVqxIJmiQ9iHB0LUD user key | |||
diff --git a/regress/unittests/authopt/tests.c b/regress/unittests/authopt/tests.c new file mode 100644 index 000000000..0e8aacb91 --- /dev/null +++ b/regress/unittests/authopt/tests.c | |||
@@ -0,0 +1,573 @@ | |||
1 | /* $OpenBSD: tests.c,v 1.1 2018/03/03 03:16:17 djm Exp $ */ | ||
2 | |||
3 | /* | ||
4 | * Regress test for keys options functions. | ||
5 | * | ||
6 | * Placed in the public domain | ||
7 | */ | ||
8 | |||
9 | #include <sys/types.h> | ||
10 | #include <sys/param.h> | ||
11 | #include <stdio.h> | ||
12 | #include <stdint.h> | ||
13 | #include <stdlib.h> | ||
14 | #include <string.h> | ||
15 | |||
16 | #include "test_helper.h" | ||
17 | |||
18 | #include "sshkey.h" | ||
19 | #include "authfile.h" | ||
20 | #include "auth-options.h" | ||
21 | #include "misc.h" | ||
22 | #include "log.h" | ||
23 | |||
24 | static struct sshkey * | ||
25 | load_key(const char *name) | ||
26 | { | ||
27 | struct sshkey *ret; | ||
28 | int r; | ||
29 | |||
30 | r = sshkey_load_public(test_data_file(name), &ret, NULL); | ||
31 | ASSERT_INT_EQ(r, 0); | ||
32 | ASSERT_PTR_NE(ret, NULL); | ||
33 | return ret; | ||
34 | } | ||
35 | |||
36 | static struct sshauthopt * | ||
37 | default_authkey_opts(void) | ||
38 | { | ||
39 | struct sshauthopt *ret = sshauthopt_new(); | ||
40 | |||
41 | ASSERT_PTR_NE(ret, NULL); | ||
42 | ret->permit_port_forwarding_flag = 1; | ||
43 | ret->permit_agent_forwarding_flag = 1; | ||
44 | ret->permit_x11_forwarding_flag = 1; | ||
45 | ret->permit_pty_flag = 1; | ||
46 | ret->permit_user_rc = 1; | ||
47 | return ret; | ||
48 | } | ||
49 | |||
50 | static struct sshauthopt * | ||
51 | default_authkey_restrict_opts(void) | ||
52 | { | ||
53 | struct sshauthopt *ret = sshauthopt_new(); | ||
54 | |||
55 | ASSERT_PTR_NE(ret, NULL); | ||
56 | ret->permit_port_forwarding_flag = 0; | ||
57 | ret->permit_agent_forwarding_flag = 0; | ||
58 | ret->permit_x11_forwarding_flag = 0; | ||
59 | ret->permit_pty_flag = 0; | ||
60 | ret->permit_user_rc = 0; | ||
61 | ret->restricted = 1; | ||
62 | return ret; | ||
63 | } | ||
64 | |||
65 | static char ** | ||
66 | commasplit(const char *s, size_t *np) | ||
67 | { | ||
68 | char *ocp, *cp, *cp2, **ret = NULL; | ||
69 | size_t n; | ||
70 | |||
71 | ocp = cp = strdup(s); | ||
72 | ASSERT_PTR_NE(cp, NULL); | ||
73 | for (n = 0; (cp2 = strsep(&cp, ",")) != NULL;) { | ||
74 | ret = recallocarray(ret, n, n + 1, sizeof(*ret)); | ||
75 | ASSERT_PTR_NE(ret, NULL); | ||
76 | cp2 = strdup(cp2); | ||
77 | ASSERT_PTR_NE(cp2, NULL); | ||
78 | ret[n++] = cp2; | ||
79 | } | ||
80 | free(ocp); | ||
81 | *np = n; | ||
82 | return ret; | ||
83 | } | ||
84 | |||
85 | static void | ||
86 | compare_opts(const struct sshauthopt *opts, | ||
87 | const struct sshauthopt *expected) | ||
88 | { | ||
89 | size_t i; | ||
90 | |||
91 | ASSERT_PTR_NE(opts, NULL); | ||
92 | ASSERT_PTR_NE(expected, NULL); | ||
93 | ASSERT_PTR_NE(expected, opts); /* bozo :) */ | ||
94 | |||
95 | #define FLAG_EQ(x) ASSERT_INT_EQ(opts->x, expected->x) | ||
96 | FLAG_EQ(permit_port_forwarding_flag); | ||
97 | FLAG_EQ(permit_agent_forwarding_flag); | ||
98 | FLAG_EQ(permit_x11_forwarding_flag); | ||
99 | FLAG_EQ(permit_pty_flag); | ||
100 | FLAG_EQ(permit_user_rc); | ||
101 | FLAG_EQ(restricted); | ||
102 | FLAG_EQ(cert_authority); | ||
103 | #undef FLAG_EQ | ||
104 | |||
105 | #define STR_EQ(x) \ | ||
106 | do { \ | ||
107 | if (expected->x == NULL) \ | ||
108 | ASSERT_PTR_EQ(opts->x, expected->x); \ | ||
109 | else \ | ||
110 | ASSERT_STRING_EQ(opts->x, expected->x); \ | ||
111 | } while (0) | ||
112 | STR_EQ(cert_principals); | ||
113 | STR_EQ(force_command); | ||
114 | STR_EQ(required_from_host_cert); | ||
115 | STR_EQ(required_from_host_keys); | ||
116 | #undef STR_EQ | ||
117 | |||
118 | #define ARRAY_EQ(nx, x) \ | ||
119 | do { \ | ||
120 | ASSERT_SIZE_T_EQ(opts->nx, expected->nx); \ | ||
121 | if (expected->nx == 0) \ | ||
122 | break; \ | ||
123 | for (i = 0; i < expected->nx; i++) \ | ||
124 | ASSERT_STRING_EQ(opts->x[i], expected->x[i]); \ | ||
125 | } while (0) | ||
126 | ARRAY_EQ(nenv, env); | ||
127 | ARRAY_EQ(npermitopen, permitopen); | ||
128 | #undef ARRAY_EQ | ||
129 | } | ||
130 | |||
131 | static void | ||
132 | test_authkeys_parse(void) | ||
133 | { | ||
134 | struct sshauthopt *opts, *expected; | ||
135 | const char *errstr; | ||
136 | |||
137 | #define FAIL_TEST(label, keywords) \ | ||
138 | do { \ | ||
139 | TEST_START("sshauthopt_parse invalid " label); \ | ||
140 | opts = sshauthopt_parse(keywords, &errstr); \ | ||
141 | ASSERT_PTR_EQ(opts, NULL); \ | ||
142 | ASSERT_PTR_NE(errstr, NULL); \ | ||
143 | TEST_DONE(); \ | ||
144 | } while (0) | ||
145 | #define CHECK_SUCCESS_AND_CLEANUP() \ | ||
146 | do { \ | ||
147 | if (errstr != NULL) \ | ||
148 | ASSERT_STRING_EQ(errstr, ""); \ | ||
149 | compare_opts(opts, expected); \ | ||
150 | sshauthopt_free(expected); \ | ||
151 | sshauthopt_free(opts); \ | ||
152 | } while (0) | ||
153 | |||
154 | /* Basic tests */ | ||
155 | TEST_START("sshauthopt_parse empty"); | ||
156 | expected = default_authkey_opts(); | ||
157 | opts = sshauthopt_parse("", &errstr); | ||
158 | CHECK_SUCCESS_AND_CLEANUP(); | ||
159 | TEST_DONE(); | ||
160 | |||
161 | TEST_START("sshauthopt_parse trailing whitespace"); | ||
162 | expected = default_authkey_opts(); | ||
163 | opts = sshauthopt_parse(" ", &errstr); | ||
164 | CHECK_SUCCESS_AND_CLEANUP(); | ||
165 | TEST_DONE(); | ||
166 | |||
167 | TEST_START("sshauthopt_parse restrict"); | ||
168 | expected = default_authkey_restrict_opts(); | ||
169 | opts = sshauthopt_parse("restrict", &errstr); | ||
170 | CHECK_SUCCESS_AND_CLEANUP(); | ||
171 | TEST_DONE(); | ||
172 | |||
173 | /* Invalid syntax */ | ||
174 | FAIL_TEST("trailing comma", "restrict,"); | ||
175 | FAIL_TEST("bare comma", ","); | ||
176 | FAIL_TEST("unknown option", "BLAH"); | ||
177 | FAIL_TEST("unknown option with trailing comma", "BLAH,"); | ||
178 | FAIL_TEST("unknown option with trailing whitespace", "BLAH "); | ||
179 | |||
180 | /* force_tun_device */ | ||
181 | TEST_START("sshauthopt_parse tunnel explicit"); | ||
182 | expected = default_authkey_opts(); | ||
183 | expected->force_tun_device = 1; | ||
184 | opts = sshauthopt_parse("tunnel=\"1\"", &errstr); | ||
185 | CHECK_SUCCESS_AND_CLEANUP(); | ||
186 | TEST_DONE(); | ||
187 | |||
188 | TEST_START("sshauthopt_parse tunnel any"); | ||
189 | expected = default_authkey_opts(); | ||
190 | expected->force_tun_device = SSH_TUNID_ANY; | ||
191 | opts = sshauthopt_parse("tunnel=\"any\"", &errstr); | ||
192 | CHECK_SUCCESS_AND_CLEANUP(); | ||
193 | TEST_DONE(); | ||
194 | |||
195 | FAIL_TEST("tunnel", "tunnel=\"blah\""); | ||
196 | |||
197 | /* Flag options */ | ||
198 | #define FLAG_TEST(keyword, var, val) \ | ||
199 | do { \ | ||
200 | TEST_START("sshauthopt_parse " keyword); \ | ||
201 | expected = default_authkey_opts(); \ | ||
202 | expected->var = val; \ | ||
203 | opts = sshauthopt_parse(keyword, &errstr); \ | ||
204 | CHECK_SUCCESS_AND_CLEANUP(); \ | ||
205 | expected = default_authkey_restrict_opts(); \ | ||
206 | expected->var = val; \ | ||
207 | opts = sshauthopt_parse("restrict,"keyword, &errstr); \ | ||
208 | CHECK_SUCCESS_AND_CLEANUP(); \ | ||
209 | TEST_DONE(); \ | ||
210 | } while (0) | ||
211 | /* Positive flags */ | ||
212 | FLAG_TEST("cert-authority", cert_authority, 1); | ||
213 | FLAG_TEST("port-forwarding", permit_port_forwarding_flag, 1); | ||
214 | FLAG_TEST("agent-forwarding", permit_agent_forwarding_flag, 1); | ||
215 | FLAG_TEST("x11-forwarding", permit_x11_forwarding_flag, 1); | ||
216 | FLAG_TEST("pty", permit_pty_flag, 1); | ||
217 | FLAG_TEST("user-rc", permit_user_rc, 1); | ||
218 | /* Negative flags */ | ||
219 | FLAG_TEST("no-port-forwarding", permit_port_forwarding_flag, 0); | ||
220 | FLAG_TEST("no-agent-forwarding", permit_agent_forwarding_flag, 0); | ||
221 | FLAG_TEST("no-x11-forwarding", permit_x11_forwarding_flag, 0); | ||
222 | FLAG_TEST("no-pty", permit_pty_flag, 0); | ||
223 | FLAG_TEST("no-user-rc", permit_user_rc, 0); | ||
224 | #undef FLAG_TEST | ||
225 | FAIL_TEST("no-cert-authority", "no-cert-authority"); | ||
226 | |||
227 | /* String options */ | ||
228 | #define STRING_TEST(keyword, var, val) \ | ||
229 | do { \ | ||
230 | TEST_START("sshauthopt_parse " keyword); \ | ||
231 | expected = default_authkey_opts(); \ | ||
232 | expected->var = strdup(val); \ | ||
233 | ASSERT_PTR_NE(expected->var, NULL); \ | ||
234 | opts = sshauthopt_parse(keyword "=" #val, &errstr); \ | ||
235 | CHECK_SUCCESS_AND_CLEANUP(); \ | ||
236 | expected = default_authkey_restrict_opts(); \ | ||
237 | expected->var = strdup(val); \ | ||
238 | ASSERT_PTR_NE(expected->var, NULL); \ | ||
239 | opts = sshauthopt_parse( \ | ||
240 | "restrict," keyword "=" #val ",restrict", &errstr); \ | ||
241 | CHECK_SUCCESS_AND_CLEANUP(); \ | ||
242 | TEST_DONE(); \ | ||
243 | } while (0) | ||
244 | STRING_TEST("command", force_command, "/bin/true"); | ||
245 | STRING_TEST("principals", cert_principals, "gregor,josef,K"); | ||
246 | STRING_TEST("from", required_from_host_keys, "127.0.0.0/8"); | ||
247 | #undef STRING_TEST | ||
248 | FAIL_TEST("unquoted command", "command=oops"); | ||
249 | FAIL_TEST("unquoted principals", "principals=estragon"); | ||
250 | FAIL_TEST("unquoted from", "from=127.0.0.1"); | ||
251 | |||
252 | /* String array option tests */ | ||
253 | #define ARRAY_TEST(label, keywords, var, nvar, val) \ | ||
254 | do { \ | ||
255 | TEST_START("sshauthopt_parse " label); \ | ||
256 | expected = default_authkey_opts(); \ | ||
257 | expected->var = commasplit(val, &expected->nvar); \ | ||
258 | ASSERT_PTR_NE(expected->var, NULL); \ | ||
259 | opts = sshauthopt_parse(keywords, &errstr); \ | ||
260 | CHECK_SUCCESS_AND_CLEANUP(); \ | ||
261 | expected = default_authkey_restrict_opts(); \ | ||
262 | expected->var = commasplit(val, &expected->nvar); \ | ||
263 | ASSERT_PTR_NE(expected->var, NULL); \ | ||
264 | opts = sshauthopt_parse( \ | ||
265 | "restrict," keywords ",restrict", &errstr); \ | ||
266 | CHECK_SUCCESS_AND_CLEANUP(); \ | ||
267 | TEST_DONE(); \ | ||
268 | } while (0) | ||
269 | ARRAY_TEST("environment", "environment=\"foo=1\",environment=\"bar=2\"", | ||
270 | env, nenv, "foo=1,bar=2"); | ||
271 | ARRAY_TEST("permitopen", "permitopen=\"foo:123\",permitopen=\"bar:*\"", | ||
272 | permitopen, npermitopen, "foo:123,bar:*"); | ||
273 | #undef ARRAY_TEST | ||
274 | FAIL_TEST("environment", "environment=\",=bah\""); | ||
275 | FAIL_TEST("permitopen port", "foo:bar"); | ||
276 | FAIL_TEST("permitopen missing port", "foo:"); | ||
277 | FAIL_TEST("permitopen missing port specification", "foo"); | ||
278 | FAIL_TEST("permitopen invalid host", "[:"); | ||
279 | |||
280 | #undef CHECK_SUCCESS_AND_CLEANUP | ||
281 | #undef FAIL_TEST | ||
282 | } | ||
283 | |||
284 | static void | ||
285 | test_cert_parse(void) | ||
286 | { | ||
287 | struct sshkey *cert; | ||
288 | struct sshauthopt *opts, *expected; | ||
289 | |||
290 | #define CHECK_SUCCESS_AND_CLEANUP() \ | ||
291 | do { \ | ||
292 | compare_opts(opts, expected); \ | ||
293 | sshauthopt_free(expected); \ | ||
294 | sshauthopt_free(opts); \ | ||
295 | sshkey_free(cert); \ | ||
296 | } while (0) | ||
297 | #define FLAG_TEST(keybase, var) \ | ||
298 | do { \ | ||
299 | TEST_START("sshauthopt_from_cert no_" keybase); \ | ||
300 | cert = load_key("no_" keybase ".cert"); \ | ||
301 | expected = default_authkey_opts(); \ | ||
302 | expected->var = 0; \ | ||
303 | opts = sshauthopt_from_cert(cert); \ | ||
304 | CHECK_SUCCESS_AND_CLEANUP(); \ | ||
305 | TEST_DONE(); \ | ||
306 | TEST_START("sshauthopt_from_cert only_" keybase); \ | ||
307 | cert = load_key("only_" keybase ".cert"); \ | ||
308 | expected = sshauthopt_new(); \ | ||
309 | ASSERT_PTR_NE(expected, NULL); \ | ||
310 | expected->var = 1; \ | ||
311 | opts = sshauthopt_from_cert(cert); \ | ||
312 | CHECK_SUCCESS_AND_CLEANUP(); \ | ||
313 | TEST_DONE(); \ | ||
314 | } while (0) | ||
315 | FLAG_TEST("agentfwd", permit_agent_forwarding_flag); | ||
316 | FLAG_TEST("portfwd", permit_port_forwarding_flag); | ||
317 | FLAG_TEST("pty", permit_pty_flag); | ||
318 | FLAG_TEST("user_rc", permit_user_rc); | ||
319 | FLAG_TEST("x11fwd", permit_x11_forwarding_flag); | ||
320 | #undef FLAG_TEST | ||
321 | |||
322 | TEST_START("sshauthopt_from_cert all permitted"); | ||
323 | cert = load_key("all_permit.cert"); | ||
324 | expected = default_authkey_opts(); | ||
325 | opts = sshauthopt_from_cert(cert); | ||
326 | CHECK_SUCCESS_AND_CLEANUP(); | ||
327 | TEST_DONE(); | ||
328 | |||
329 | TEST_START("sshauthopt_from_cert nothing permitted"); | ||
330 | cert = load_key("no_permit.cert"); | ||
331 | expected = sshauthopt_new(); | ||
332 | ASSERT_PTR_NE(expected, NULL); | ||
333 | opts = sshauthopt_from_cert(cert); | ||
334 | CHECK_SUCCESS_AND_CLEANUP(); | ||
335 | TEST_DONE(); | ||
336 | |||
337 | TEST_START("sshauthopt_from_cert force-command"); | ||
338 | cert = load_key("force_command.cert"); | ||
339 | expected = default_authkey_opts(); | ||
340 | expected->force_command = strdup("foo"); | ||
341 | ASSERT_PTR_NE(expected->force_command, NULL); | ||
342 | opts = sshauthopt_from_cert(cert); | ||
343 | CHECK_SUCCESS_AND_CLEANUP(); | ||
344 | TEST_DONE(); | ||
345 | |||
346 | TEST_START("sshauthopt_from_cert source-address"); | ||
347 | cert = load_key("sourceaddr.cert"); | ||
348 | expected = default_authkey_opts(); | ||
349 | expected->required_from_host_cert = strdup("127.0.0.1/32,::1/128"); | ||
350 | ASSERT_PTR_NE(expected->required_from_host_cert, NULL); | ||
351 | opts = sshauthopt_from_cert(cert); | ||
352 | CHECK_SUCCESS_AND_CLEANUP(); | ||
353 | TEST_DONE(); | ||
354 | #undef CHECK_SUCCESS_AND_CLEANUP | ||
355 | |||
356 | #define FAIL_TEST(keybase) \ | ||
357 | do { \ | ||
358 | TEST_START("sshauthopt_from_cert " keybase); \ | ||
359 | cert = load_key(keybase ".cert"); \ | ||
360 | opts = sshauthopt_from_cert(cert); \ | ||
361 | ASSERT_PTR_EQ(opts, NULL); \ | ||
362 | sshkey_free(cert); \ | ||
363 | TEST_DONE(); \ | ||
364 | } while (0) | ||
365 | FAIL_TEST("host"); | ||
366 | FAIL_TEST("bad_sourceaddr"); | ||
367 | FAIL_TEST("unknown_critical"); | ||
368 | #undef FAIL_TEST | ||
369 | } | ||
370 | |||
371 | static void | ||
372 | test_merge(void) | ||
373 | { | ||
374 | struct sshkey *cert; | ||
375 | struct sshauthopt *key_opts, *cert_opts, *merge_opts, *expected; | ||
376 | const char *errstr; | ||
377 | |||
378 | /* | ||
379 | * Prepare for a test by making some key and cert options and | ||
380 | * attempting to merge them. | ||
381 | */ | ||
382 | #define PREPARE(label, keyname, keywords) \ | ||
383 | do { \ | ||
384 | expected = NULL; \ | ||
385 | TEST_START("sshauthopt_merge " label); \ | ||
386 | cert = load_key(keyname ".cert"); \ | ||
387 | cert_opts = sshauthopt_from_cert(cert); \ | ||
388 | ASSERT_PTR_NE(cert_opts, NULL); \ | ||
389 | key_opts = sshauthopt_parse(keywords, &errstr); \ | ||
390 | if (errstr != NULL) \ | ||
391 | ASSERT_STRING_EQ(errstr, ""); \ | ||
392 | ASSERT_PTR_NE(key_opts, NULL); \ | ||
393 | merge_opts = sshauthopt_merge(key_opts, \ | ||
394 | cert_opts, &errstr); \ | ||
395 | } while (0) | ||
396 | |||
397 | /* Cleanup stuff allocated by PREPARE() */ | ||
398 | #define CLEANUP() \ | ||
399 | do { \ | ||
400 | sshauthopt_free(expected); \ | ||
401 | sshauthopt_free(merge_opts); \ | ||
402 | sshauthopt_free(key_opts); \ | ||
403 | sshauthopt_free(cert_opts); \ | ||
404 | sshkey_free(cert); \ | ||
405 | } while (0) | ||
406 | |||
407 | /* Check the results of PREPARE() against expectation; calls CLEANUP */ | ||
408 | #define CHECK_SUCCESS_AND_CLEANUP() \ | ||
409 | do { \ | ||
410 | if (errstr != NULL) \ | ||
411 | ASSERT_STRING_EQ(errstr, ""); \ | ||
412 | compare_opts(merge_opts, expected); \ | ||
413 | CLEANUP(); \ | ||
414 | } while (0) | ||
415 | |||
416 | /* Check a single case of merging of flag options */ | ||
417 | #define FLAG_CASE(keybase, label, keyname, keywords, mostly_off, var, val) \ | ||
418 | do { \ | ||
419 | PREPARE(keybase " " label, keyname, keywords); \ | ||
420 | expected = mostly_off ? \ | ||
421 | sshauthopt_new() : default_authkey_opts(); \ | ||
422 | expected->var = val; \ | ||
423 | ASSERT_PTR_NE(expected, NULL); \ | ||
424 | CHECK_SUCCESS_AND_CLEANUP(); \ | ||
425 | TEST_DONE(); \ | ||
426 | } while (0) | ||
427 | |||
428 | /* | ||
429 | * Fairly exhaustive exercise of a flag option. Tests | ||
430 | * option both set and clear in certificate, set and clear in | ||
431 | * authorized_keys and set and cleared via restrict keyword. | ||
432 | */ | ||
433 | #define FLAG_TEST(keybase, keyword, var) \ | ||
434 | do { \ | ||
435 | FLAG_CASE(keybase, "keys:default,yes cert:default,no", \ | ||
436 | "no_" keybase, keyword, 0, var, 0); \ | ||
437 | FLAG_CASE(keybase,"keys:-*,yes cert:default,no", \ | ||
438 | "no_" keybase, "restrict," keyword, 1, var, 0); \ | ||
439 | FLAG_CASE(keybase, "keys:default,no cert:default,no", \ | ||
440 | "no_" keybase, "no-" keyword, 0, var, 0); \ | ||
441 | FLAG_CASE(keybase, "keys:-*,no cert:default,no", \ | ||
442 | "no_" keybase, "restrict,no-" keyword, 1, var, 0); \ | ||
443 | \ | ||
444 | FLAG_CASE(keybase, "keys:default,yes cert:-*,yes", \ | ||
445 | "only_" keybase, keyword, 1, var, 1); \ | ||
446 | FLAG_CASE(keybase,"keys:-*,yes cert:-*,yes", \ | ||
447 | "only_" keybase, "restrict," keyword, 1, var, 1); \ | ||
448 | FLAG_CASE(keybase, "keys:default,no cert:-*,yes", \ | ||
449 | "only_" keybase, "no-" keyword, 1, var, 0); \ | ||
450 | FLAG_CASE(keybase, "keys:-*,no cert:-*,yes", \ | ||
451 | "only_" keybase, "restrict,no-" keyword, 1, var, 0); \ | ||
452 | \ | ||
453 | FLAG_CASE(keybase, "keys:default,yes cert:-*", \ | ||
454 | "no_permit", keyword, 1, var, 0); \ | ||
455 | FLAG_CASE(keybase,"keys:-*,yes cert:-*", \ | ||
456 | "no_permit", "restrict," keyword, 1, var, 0); \ | ||
457 | FLAG_CASE(keybase, "keys:default,no cert:-*", \ | ||
458 | "no_permit", "no-" keyword, 1, var, 0); \ | ||
459 | FLAG_CASE(keybase, "keys:-*,no cert:-*", \ | ||
460 | "no_permit", "restrict,no-" keyword, 1, var, 0); \ | ||
461 | \ | ||
462 | FLAG_CASE(keybase, "keys:default,yes cert:*", \ | ||
463 | "all_permit", keyword, 0, var, 1); \ | ||
464 | FLAG_CASE(keybase,"keys:-*,yes cert:*", \ | ||
465 | "all_permit", "restrict," keyword, 1, var, 1); \ | ||
466 | FLAG_CASE(keybase, "keys:default,no cert:*", \ | ||
467 | "all_permit", "no-" keyword, 0, var, 0); \ | ||
468 | FLAG_CASE(keybase, "keys:-*,no cert:*", \ | ||
469 | "all_permit", "restrict,no-" keyword, 1, var, 0); \ | ||
470 | \ | ||
471 | } while (0) | ||
472 | FLAG_TEST("portfwd", "port-forwarding", permit_port_forwarding_flag); | ||
473 | FLAG_TEST("agentfwd", "agent-forwarding", permit_agent_forwarding_flag); | ||
474 | FLAG_TEST("pty", "pty", permit_pty_flag); | ||
475 | FLAG_TEST("user_rc", "user-rc", permit_user_rc); | ||
476 | FLAG_TEST("x11fwd", "x11-forwarding", permit_x11_forwarding_flag); | ||
477 | #undef FLAG_TEST | ||
478 | |||
479 | PREPARE("source-address both", "sourceaddr", "from=\"127.0.0.1\""); | ||
480 | expected = default_authkey_opts(); | ||
481 | expected->required_from_host_cert = strdup("127.0.0.1/32,::1/128"); | ||
482 | ASSERT_PTR_NE(expected->required_from_host_cert, NULL); | ||
483 | expected->required_from_host_keys = strdup("127.0.0.1"); | ||
484 | ASSERT_PTR_NE(expected->required_from_host_keys, NULL); | ||
485 | CHECK_SUCCESS_AND_CLEANUP(); | ||
486 | TEST_DONE(); | ||
487 | |||
488 | PREPARE("source-address none", "all_permit", ""); | ||
489 | expected = default_authkey_opts(); | ||
490 | CHECK_SUCCESS_AND_CLEANUP(); | ||
491 | TEST_DONE(); | ||
492 | |||
493 | PREPARE("source-address keys", "all_permit", "from=\"127.0.0.1\""); | ||
494 | expected = default_authkey_opts(); | ||
495 | expected->required_from_host_keys = strdup("127.0.0.1"); | ||
496 | ASSERT_PTR_NE(expected->required_from_host_keys, NULL); | ||
497 | CHECK_SUCCESS_AND_CLEANUP(); | ||
498 | TEST_DONE(); | ||
499 | |||
500 | PREPARE("source-address cert", "sourceaddr", ""); | ||
501 | expected = default_authkey_opts(); | ||
502 | expected->required_from_host_cert = strdup("127.0.0.1/32,::1/128"); | ||
503 | ASSERT_PTR_NE(expected->required_from_host_cert, NULL); | ||
504 | CHECK_SUCCESS_AND_CLEANUP(); | ||
505 | TEST_DONE(); | ||
506 | |||
507 | PREPARE("force-command both", "force_command", "command=\"foo\""); | ||
508 | expected = default_authkey_opts(); | ||
509 | expected->force_command = strdup("foo"); | ||
510 | ASSERT_PTR_NE(expected->force_command, NULL); | ||
511 | CHECK_SUCCESS_AND_CLEANUP(); | ||
512 | TEST_DONE(); | ||
513 | |||
514 | PREPARE("force-command none", "all_permit", ""); | ||
515 | expected = default_authkey_opts(); | ||
516 | CHECK_SUCCESS_AND_CLEANUP(); | ||
517 | TEST_DONE(); | ||
518 | |||
519 | PREPARE("force-command keys", "all_permit", "command=\"bar\""); | ||
520 | expected = default_authkey_opts(); | ||
521 | expected->force_command = strdup("bar"); | ||
522 | ASSERT_PTR_NE(expected->force_command, NULL); | ||
523 | CHECK_SUCCESS_AND_CLEANUP(); | ||
524 | TEST_DONE(); | ||
525 | |||
526 | PREPARE("force-command cert", "force_command", ""); | ||
527 | expected = default_authkey_opts(); | ||
528 | expected->force_command = strdup("foo"); | ||
529 | ASSERT_PTR_NE(expected->force_command, NULL); | ||
530 | CHECK_SUCCESS_AND_CLEANUP(); | ||
531 | TEST_DONE(); | ||
532 | |||
533 | PREPARE("force-command mismatch", "force_command", "command=\"bar\""); | ||
534 | ASSERT_PTR_EQ(merge_opts, NULL); | ||
535 | CLEANUP(); | ||
536 | TEST_DONE(); | ||
537 | |||
538 | PREPARE("tunnel", "all_permit", "tunnel=\"6\""); | ||
539 | expected = default_authkey_opts(); | ||
540 | expected->force_tun_device = 6; | ||
541 | CHECK_SUCCESS_AND_CLEANUP(); | ||
542 | TEST_DONE(); | ||
543 | |||
544 | PREPARE("permitopen", "all_permit", | ||
545 | "permitopen=\"127.0.0.1:*\",permitopen=\"127.0.0.1:123\""); | ||
546 | expected = default_authkey_opts(); | ||
547 | expected->permitopen = commasplit("127.0.0.1:*,127.0.0.1:123", | ||
548 | &expected->npermitopen); | ||
549 | CHECK_SUCCESS_AND_CLEANUP(); | ||
550 | TEST_DONE(); | ||
551 | |||
552 | PREPARE("environment", "all_permit", | ||
553 | "environment=\"foo=a\",environment=\"bar=b\""); | ||
554 | expected = default_authkey_opts(); | ||
555 | expected->env = commasplit("foo=a,bar=b", &expected->nenv); | ||
556 | CHECK_SUCCESS_AND_CLEANUP(); | ||
557 | TEST_DONE(); | ||
558 | } | ||
559 | |||
560 | void | ||
561 | tests(void) | ||
562 | { | ||
563 | extern char *__progname; | ||
564 | LogLevel ll = test_is_verbose() ? | ||
565 | SYSLOG_LEVEL_DEBUG3 : SYSLOG_LEVEL_QUIET; | ||
566 | |||
567 | /* test_cert_parse() are a bit spammy to error() by default... */ | ||
568 | log_init(__progname, ll, SYSLOG_FACILITY_USER, 1); | ||
569 | |||
570 | test_authkeys_parse(); | ||
571 | test_cert_parse(); | ||
572 | test_merge(); | ||
573 | } | ||
diff --git a/regress/unittests/bitmap/Makefile b/regress/unittests/bitmap/Makefile index bd21949f8..fe30acc77 100644 --- a/regress/unittests/bitmap/Makefile +++ b/regress/unittests/bitmap/Makefile | |||
@@ -1,7 +1,11 @@ | |||
1 | # $OpenBSD: Makefile,v 1.3 2016/11/01 13:43:27 tb Exp $ | 1 | # $OpenBSD: Makefile,v 1.4 2017/12/21 00:41:22 djm Exp $ |
2 | 2 | ||
3 | PROG=test_bitmap | 3 | PROG=test_bitmap |
4 | SRCS=tests.c | 4 | SRCS=tests.c |
5 | |||
6 | # From usr.sbin/ssh | ||
7 | SRCS+=bitmap.c atomicio.c | ||
8 | |||
5 | REGRESS_TARGETS=run-regress-${PROG} | 9 | REGRESS_TARGETS=run-regress-${PROG} |
6 | 10 | ||
7 | run-regress-${PROG}: ${PROG} | 11 | run-regress-${PROG}: ${PROG} |
diff --git a/regress/unittests/conversion/Makefile b/regress/unittests/conversion/Makefile index cde97dc28..8b2a09cc3 100644 --- a/regress/unittests/conversion/Makefile +++ b/regress/unittests/conversion/Makefile | |||
@@ -1,7 +1,12 @@ | |||
1 | # $OpenBSD: Makefile,v 1.1 2017/03/14 01:20:29 dtucker Exp $ | 1 | # $OpenBSD: Makefile,v 1.2 2017/12/21 00:41:22 djm Exp $ |
2 | 2 | ||
3 | PROG=test_conversion | 3 | PROG=test_conversion |
4 | SRCS=tests.c | 4 | SRCS=tests.c |
5 | |||
6 | # From usr.bin/ssh | ||
7 | SRCS+=sshbuf-getput-basic.c sshbuf-getput-crypto.c sshbuf-misc.c sshbuf.c | ||
8 | SRCS+=atomicio.c misc.c xmalloc.c log.c uidswap.c cleanup.c fatal.c ssherr.c | ||
9 | |||
5 | REGRESS_TARGETS=run-regress-${PROG} | 10 | REGRESS_TARGETS=run-regress-${PROG} |
6 | 11 | ||
7 | run-regress-${PROG}: ${PROG} | 12 | run-regress-${PROG}: ${PROG} |
diff --git a/regress/unittests/hostkeys/Makefile b/regress/unittests/hostkeys/Makefile index ae3c342bd..336885122 100644 --- a/regress/unittests/hostkeys/Makefile +++ b/regress/unittests/hostkeys/Makefile | |||
@@ -1,7 +1,20 @@ | |||
1 | # $OpenBSD: Makefile,v 1.3 2016/11/01 13:43:27 tb Exp $ | 1 | # $OpenBSD: Makefile,v 1.4 2017/12/21 00:41:22 djm Exp $ |
2 | 2 | ||
3 | PROG=test_hostkeys | 3 | PROG=test_hostkeys |
4 | SRCS=tests.c test_iterate.c | 4 | SRCS=tests.c test_iterate.c |
5 | |||
6 | # From usr.bin/ssh | ||
7 | SRCS+=sshbuf-getput-basic.c sshbuf-getput-crypto.c sshbuf-misc.c sshbuf.c | ||
8 | SRCS+=atomicio.c sshkey.c authfile.c cipher.c log.c ssh-rsa.c ssh-dss.c | ||
9 | SRCS+=ssh-ecdsa.c ssh-ed25519.c mac.c umac.c umac128.c hmac.c misc.c | ||
10 | SRCS+=ssherr.c uidswap.c cleanup.c xmalloc.c match.c krl.c fatal.c | ||
11 | SRCS+=addrmatch.c bitmap.c hostfile.c | ||
12 | SRCS+=ed25519.c hash.c ge25519.c fe25519.c sc25519.c verify.c | ||
13 | SRCS+=cipher-chachapoly.c chacha.c poly1305.c | ||
14 | |||
15 | SRCS+=digest-openssl.c | ||
16 | #SRCS+=digest-libc.c | ||
17 | |||
5 | REGRESS_TARGETS=run-regress-${PROG} | 18 | REGRESS_TARGETS=run-regress-${PROG} |
6 | 19 | ||
7 | run-regress-${PROG}: ${PROG} | 20 | run-regress-${PROG}: ${PROG} |
diff --git a/regress/unittests/kex/Makefile b/regress/unittests/kex/Makefile index 7ed312675..5c61307a3 100644 --- a/regress/unittests/kex/Makefile +++ b/regress/unittests/kex/Makefile | |||
@@ -1,7 +1,24 @@ | |||
1 | # $OpenBSD: Makefile,v 1.4 2016/11/01 13:43:27 tb Exp $ | 1 | # $OpenBSD: Makefile,v 1.5 2017/12/21 00:41:22 djm Exp $ |
2 | 2 | ||
3 | PROG=test_kex | 3 | PROG=test_kex |
4 | SRCS=tests.c test_kex.c | 4 | SRCS=tests.c test_kex.c |
5 | |||
6 | # From usr.bin/ssh | ||
7 | SRCS+=sshbuf-getput-basic.c sshbuf-getput-crypto.c sshbuf-misc.c sshbuf.c | ||
8 | SRCS+=atomicio.c sshkey.c authfile.c cipher.c log.c ssh-rsa.c ssh-dss.c | ||
9 | SRCS+=ssh-ecdsa.c ssh-ed25519.c mac.c umac.c umac128.c hmac.c misc.c | ||
10 | SRCS+=ssherr.c uidswap.c cleanup.c xmalloc.c match.c krl.c fatal.c | ||
11 | SRCS+=addrmatch.c bitmap.c packet.c dispatch.c canohost.c ssh_api.c | ||
12 | SRCS+=kex.c kexc25519.c kexc25519c.c kexc25519s.c kexdh.c kexdhc.c kexdhs.c | ||
13 | SRCS+=kexecdh.c kexecdhc.c kexecdhs.c kexgex.c kexgexc.c kexgexs.c | ||
14 | SRCS+=dh.c compat.c | ||
15 | SRCS+=ed25519.c hash.c ge25519.c fe25519.c sc25519.c verify.c | ||
16 | SRCS+=cipher-chachapoly.c chacha.c poly1305.c | ||
17 | SRCS+=smult_curve25519_ref.c | ||
18 | |||
19 | SRCS+=digest-openssl.c | ||
20 | #SRCS+=digest-libc.c | ||
21 | |||
5 | REGRESS_TARGETS=run-regress-${PROG} | 22 | REGRESS_TARGETS=run-regress-${PROG} |
6 | 23 | ||
7 | run-regress-${PROG}: ${PROG} | 24 | run-regress-${PROG}: ${PROG} |
diff --git a/regress/unittests/match/Makefile b/regress/unittests/match/Makefile index bd4aed844..87e75826a 100644 --- a/regress/unittests/match/Makefile +++ b/regress/unittests/match/Makefile | |||
@@ -1,7 +1,13 @@ | |||
1 | # $OpenBSD: Makefile,v 1.3 2016/11/01 13:43:27 tb Exp $ | 1 | # $OpenBSD: Makefile,v 1.4 2017/12/21 03:01:49 djm Exp $ |
2 | 2 | ||
3 | PROG=test_match | 3 | PROG=test_match |
4 | SRCS=tests.c | 4 | SRCS=tests.c |
5 | |||
6 | # From usr.bin/ssh | ||
7 | SRCS+=sshbuf-getput-basic.c sshbuf-getput-crypto.c sshbuf-misc.c sshbuf.c | ||
8 | SRCS+=match.c misc.c log.c uidswap.c fatal.c ssherr.c addrmatch.c xmalloc.c | ||
9 | SRCS+=cleanup.c atomicio.c | ||
10 | |||
5 | REGRESS_TARGETS=run-regress-${PROG} | 11 | REGRESS_TARGETS=run-regress-${PROG} |
6 | 12 | ||
7 | run-regress-${PROG}: ${PROG} | 13 | run-regress-${PROG}: ${PROG} |
diff --git a/regress/unittests/sshbuf/Makefile b/regress/unittests/sshbuf/Makefile index 69b27566b..81d4f27a6 100644 --- a/regress/unittests/sshbuf/Makefile +++ b/regress/unittests/sshbuf/Makefile | |||
@@ -1,4 +1,6 @@ | |||
1 | # $OpenBSD: Makefile,v 1.5 2016/11/01 13:43:27 tb Exp $ | 1 | # $OpenBSD: Makefile,v 1.6 2017/12/21 00:41:22 djm Exp $ |
2 | |||
3 | .include <bsd.regress.mk> | ||
2 | 4 | ||
3 | PROG=test_sshbuf | 5 | PROG=test_sshbuf |
4 | SRCS=tests.c | 6 | SRCS=tests.c |
@@ -10,5 +12,11 @@ SRCS+=test_sshbuf_fuzz.c | |||
10 | SRCS+=test_sshbuf_getput_fuzz.c | 12 | SRCS+=test_sshbuf_getput_fuzz.c |
11 | SRCS+=test_sshbuf_fixed.c | 13 | SRCS+=test_sshbuf_fixed.c |
12 | 14 | ||
13 | .include <bsd.regress.mk> | 15 | # From usr.bin/ssh |
16 | SRCS+=sshbuf-getput-basic.c sshbuf-getput-crypto.c sshbuf-misc.c sshbuf.c | ||
17 | SRCS+=atomicio.c | ||
18 | |||
19 | run-regress-${PROG}: ${PROG} | ||
20 | env ${TEST_ENV} ./${PROG} | ||
21 | |||
14 | 22 | ||
diff --git a/regress/unittests/sshkey/Makefile b/regress/unittests/sshkey/Makefile index cfbfcf8f1..1c940bec6 100644 --- a/regress/unittests/sshkey/Makefile +++ b/regress/unittests/sshkey/Makefile | |||
@@ -1,7 +1,20 @@ | |||
1 | # $OpenBSD: Makefile,v 1.4 2016/11/01 13:43:27 tb Exp $ | 1 | # $OpenBSD: Makefile,v 1.5 2017/12/21 00:41:22 djm Exp $ |
2 | 2 | ||
3 | PROG=test_sshkey | 3 | PROG=test_sshkey |
4 | SRCS=tests.c test_sshkey.c test_file.c test_fuzz.c common.c | 4 | SRCS=tests.c test_sshkey.c test_file.c test_fuzz.c common.c |
5 | |||
6 | # From usr.bin/ssh | ||
7 | SRCS+=sshbuf-getput-basic.c sshbuf-getput-crypto.c sshbuf-misc.c sshbuf.c | ||
8 | SRCS+=atomicio.c sshkey.c authfile.c cipher.c log.c ssh-rsa.c ssh-dss.c | ||
9 | SRCS+=ssh-ecdsa.c ssh-ed25519.c mac.c umac.c umac128.c hmac.c misc.c | ||
10 | SRCS+=ssherr.c uidswap.c cleanup.c xmalloc.c match.c krl.c fatal.c | ||
11 | SRCS+=addrmatch.c bitmap.c | ||
12 | SRCS+=ed25519.c hash.c ge25519.c fe25519.c sc25519.c verify.c | ||
13 | SRCS+=cipher-chachapoly.c chacha.c poly1305.c | ||
14 | |||
15 | SRCS+=digest-openssl.c | ||
16 | #SRCS+=digest-libc.c | ||
17 | |||
5 | REGRESS_TARGETS=run-regress-${PROG} | 18 | REGRESS_TARGETS=run-regress-${PROG} |
6 | 19 | ||
7 | run-regress-${PROG}: ${PROG} | 20 | run-regress-${PROG}: ${PROG} |
diff --git a/regress/unittests/sshkey/test_fuzz.c b/regress/unittests/sshkey/test_fuzz.c index 6706045d5..d3b0c92b4 100644 --- a/regress/unittests/sshkey/test_fuzz.c +++ b/regress/unittests/sshkey/test_fuzz.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: test_fuzz.c,v 1.7 2017/04/30 23:33:48 djm Exp $ */ | 1 | /* $OpenBSD: test_fuzz.c,v 1.8 2017/12/21 00:41:22 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Fuzz tests for key parsing | 3 | * Fuzz tests for key parsing |
4 | * | 4 | * |
@@ -83,7 +83,7 @@ sig_fuzz(struct sshkey *k, const char *sig_alg) | |||
83 | fuzz = fuzz_begin(FUZZ_1_BIT_FLIP | /* too slow FUZZ_2_BIT_FLIP | */ | 83 | fuzz = fuzz_begin(FUZZ_1_BIT_FLIP | /* too slow FUZZ_2_BIT_FLIP | */ |
84 | FUZZ_1_BYTE_FLIP | FUZZ_2_BYTE_FLIP | | 84 | FUZZ_1_BYTE_FLIP | FUZZ_2_BYTE_FLIP | |
85 | FUZZ_TRUNCATE_START | FUZZ_TRUNCATE_END, sig, l); | 85 | FUZZ_TRUNCATE_START | FUZZ_TRUNCATE_END, sig, l); |
86 | ASSERT_INT_EQ(sshkey_verify(k, sig, l, c, sizeof(c), 0), 0); | 86 | ASSERT_INT_EQ(sshkey_verify(k, sig, l, c, sizeof(c), NULL, 0), 0); |
87 | free(sig); | 87 | free(sig); |
88 | TEST_ONERROR(onerror, fuzz); | 88 | TEST_ONERROR(onerror, fuzz); |
89 | for(; !fuzz_done(fuzz); fuzz_next(fuzz)) { | 89 | for(; !fuzz_done(fuzz); fuzz_next(fuzz)) { |
@@ -91,7 +91,7 @@ sig_fuzz(struct sshkey *k, const char *sig_alg) | |||
91 | if (fuzz_matches_original(fuzz)) | 91 | if (fuzz_matches_original(fuzz)) |
92 | continue; | 92 | continue; |
93 | ASSERT_INT_NE(sshkey_verify(k, fuzz_ptr(fuzz), fuzz_len(fuzz), | 93 | ASSERT_INT_NE(sshkey_verify(k, fuzz_ptr(fuzz), fuzz_len(fuzz), |
94 | c, sizeof(c), 0), 0); | 94 | c, sizeof(c), NULL, 0), 0); |
95 | } | 95 | } |
96 | fuzz_cleanup(fuzz); | 96 | fuzz_cleanup(fuzz); |
97 | } | 97 | } |
diff --git a/regress/unittests/sshkey/test_sshkey.c b/regress/unittests/sshkey/test_sshkey.c index 0a73322a3..1aa608f92 100644 --- a/regress/unittests/sshkey/test_sshkey.c +++ b/regress/unittests/sshkey/test_sshkey.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: test_sshkey.c,v 1.12 2017/05/08 06:08:42 djm Exp $ */ | 1 | /* $OpenBSD: test_sshkey.c,v 1.13 2017/12/21 00:41:22 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Regress test for sshkey.h key management API | 3 | * Regress test for sshkey.h key management API |
4 | * | 4 | * |
@@ -121,11 +121,11 @@ signature_test(struct sshkey *k, struct sshkey *bad, const char *sig_alg, | |||
121 | ASSERT_INT_EQ(sshkey_sign(k, &sig, &len, d, l, sig_alg, 0), 0); | 121 | ASSERT_INT_EQ(sshkey_sign(k, &sig, &len, d, l, sig_alg, 0), 0); |
122 | ASSERT_SIZE_T_GT(len, 8); | 122 | ASSERT_SIZE_T_GT(len, 8); |
123 | ASSERT_PTR_NE(sig, NULL); | 123 | ASSERT_PTR_NE(sig, NULL); |
124 | ASSERT_INT_EQ(sshkey_verify(k, sig, len, d, l, 0), 0); | 124 | ASSERT_INT_EQ(sshkey_verify(k, sig, len, d, l, NULL, 0), 0); |
125 | ASSERT_INT_NE(sshkey_verify(bad, sig, len, d, l, 0), 0); | 125 | ASSERT_INT_NE(sshkey_verify(bad, sig, len, d, l, NULL, 0), 0); |
126 | /* Fuzz test is more comprehensive, this is just a smoke test */ | 126 | /* Fuzz test is more comprehensive, this is just a smoke test */ |
127 | sig[len - 5] ^= 0x10; | 127 | sig[len - 5] ^= 0x10; |
128 | ASSERT_INT_NE(sshkey_verify(k, sig, len, d, l, 0), 0); | 128 | ASSERT_INT_NE(sshkey_verify(k, sig, len, d, l, NULL, 0), 0); |
129 | free(sig); | 129 | free(sig); |
130 | } | 130 | } |
131 | 131 | ||
diff --git a/regress/unittests/test_helper/test_helper.c b/regress/unittests/test_helper/test_helper.c index f855137fb..866f3495d 100644 --- a/regress/unittests/test_helper/test_helper.c +++ b/regress/unittests/test_helper/test_helper.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: test_helper.c,v 1.7 2017/03/14 01:10:07 dtucker Exp $ */ | 1 | /* $OpenBSD: test_helper.c,v 1.8 2018/02/08 08:46:20 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2011 Damien Miller <djm@mindrot.org> | 3 | * Copyright (c) 2011 Damien Miller <djm@mindrot.org> |
4 | * | 4 | * |
@@ -166,6 +166,18 @@ main(int argc, char **argv) | |||
166 | return 0; | 166 | return 0; |
167 | } | 167 | } |
168 | 168 | ||
169 | int | ||
170 | test_is_verbose() | ||
171 | { | ||
172 | return verbose_mode; | ||
173 | } | ||
174 | |||
175 | int | ||
176 | test_is_quiet() | ||
177 | { | ||
178 | return quiet_mode; | ||
179 | } | ||
180 | |||
169 | const char * | 181 | const char * |
170 | test_data_file(const char *name) | 182 | test_data_file(const char *name) |
171 | { | 183 | { |
diff --git a/regress/unittests/test_helper/test_helper.h b/regress/unittests/test_helper/test_helper.h index 615b7832b..6da0066e9 100644 --- a/regress/unittests/test_helper/test_helper.h +++ b/regress/unittests/test_helper/test_helper.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: test_helper.h,v 1.7 2017/03/14 01:10:07 dtucker Exp $ */ | 1 | /* $OpenBSD: test_helper.h,v 1.8 2018/02/08 08:46:20 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2011 Damien Miller <djm@mindrot.org> | 3 | * Copyright (c) 2011 Damien Miller <djm@mindrot.org> |
4 | * | 4 | * |
@@ -43,6 +43,8 @@ void test_start(const char *n); | |||
43 | void test_info(char *s, size_t len); | 43 | void test_info(char *s, size_t len); |
44 | void set_onerror_func(test_onerror_func_t *f, void *ctx); | 44 | void set_onerror_func(test_onerror_func_t *f, void *ctx); |
45 | void test_done(void); | 45 | void test_done(void); |
46 | int test_is_verbose(void); | ||
47 | int test_is_quiet(void); | ||
46 | void test_subtest_info(const char *fmt, ...) | 48 | void test_subtest_info(const char *fmt, ...) |
47 | __attribute__((format(printf, 1, 2))); | 49 | __attribute__((format(printf, 1, 2))); |
48 | void ssl_err_check(const char *file, int line); | 50 | void ssl_err_check(const char *file, int line); |
diff --git a/regress/unittests/utf8/Makefile b/regress/unittests/utf8/Makefile index a975264fc..f8eec0484 100644 --- a/regress/unittests/utf8/Makefile +++ b/regress/unittests/utf8/Makefile | |||
@@ -1,7 +1,11 @@ | |||
1 | # $OpenBSD: Makefile,v 1.4 2016/11/01 13:43:27 tb Exp $ | 1 | # $OpenBSD: Makefile,v 1.5 2017/12/21 00:41:22 djm Exp $ |
2 | 2 | ||
3 | PROG=test_utf8 | 3 | PROG=test_utf8 |
4 | SRCS=tests.c | 4 | SRCS=tests.c |
5 | |||
6 | # From usr.bin/ssh | ||
7 | SRCS+=utf8.c atomicio.c | ||
8 | |||
5 | REGRESS_TARGETS=run-regress-${PROG} | 9 | REGRESS_TARGETS=run-regress-${PROG} |
6 | 10 | ||
7 | run-regress-${PROG}: ${PROG} | 11 | run-regress-${PROG}: ${PROG} |
diff --git a/regress/yes-head.sh b/regress/yes-head.sh index fce2f6580..2759eb8ce 100644 --- a/regress/yes-head.sh +++ b/regress/yes-head.sh | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: yes-head.sh,v 1.5 2015/03/03 22:35:19 markus Exp $ | 1 | # $OpenBSD: yes-head.sh,v 1.6 2017/04/30 23:34:55 djm Exp $ |
2 | # Placed in the Public Domain. | 2 | # Placed in the Public Domain. |
3 | 3 | ||
4 | tid="yes pipe head" | 4 | tid="yes pipe head" |
@@ -5,8 +5,7 @@ NAME | |||
5 | 5 | ||
6 | SYNOPSIS | 6 | SYNOPSIS |
7 | scp [-346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] | 7 | scp [-346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] |
8 | [-l limit] [-o ssh_option] [-P port] [-S program] | 8 | [-l limit] [-o ssh_option] [-P port] [-S program] source ... target |
9 | [[user@]host1:]file1 ... [[user@]host2:]file2 | ||
10 | 9 | ||
11 | DESCRIPTION | 10 | DESCRIPTION |
12 | scp copies files between hosts on a network. It uses ssh(1) for data | 11 | scp copies files between hosts on a network. It uses ssh(1) for data |
@@ -14,11 +13,14 @@ DESCRIPTION | |||
14 | as ssh(1). scp will ask for passwords or passphrases if they are needed | 13 | as ssh(1). scp will ask for passwords or passphrases if they are needed |
15 | for authentication. | 14 | for authentication. |
16 | 15 | ||
17 | File names may contain a user and host specification to indicate that the | 16 | The source and target may be specified as a local pathname, a remote host |
18 | file is to be copied to/from that host. Local file names can be made | 17 | with optional path in the form [user@]host:[path], or a URI in the form |
19 | explicit using absolute or relative pathnames to avoid scp treating file | 18 | scp://[user@]host[:port][/path]. Local file names can be made explicit |
20 | names containing M-bM-^@M-^X:M-bM-^@M-^Y as host specifiers. Copies between two remote hosts | 19 | using absolute or relative pathnames to avoid scp treating file names |
21 | are also permitted. | 20 | containing M-bM-^@M-^X:M-bM-^@M-^Y as host specifiers. |
21 | |||
22 | When copying between two remote hosts, if the URI format is used, a port | ||
23 | may only be specified on the target if the -3 option is used. | ||
22 | 24 | ||
23 | The options are as follows: | 25 | The options are as follows: |
24 | 26 | ||
@@ -63,6 +65,7 @@ DESCRIPTION | |||
63 | AddressFamily | 65 | AddressFamily |
64 | BatchMode | 66 | BatchMode |
65 | BindAddress | 67 | BindAddress |
68 | BindInterface | ||
66 | CanonicalDomains | 69 | CanonicalDomains |
67 | CanonicalizeFallbackLocal | 70 | CanonicalizeFallbackLocal |
68 | CanonicalizeHostname | 71 | CanonicalizeHostname |
@@ -156,4 +159,4 @@ AUTHORS | |||
156 | Timo Rinne <tri@iki.fi> | 159 | Timo Rinne <tri@iki.fi> |
157 | Tatu Ylonen <ylo@cs.hut.fi> | 160 | Tatu Ylonen <ylo@cs.hut.fi> |
158 | 161 | ||
159 | OpenBSD 6.2 May 3, 2017 OpenBSD 6.2 | 162 | OpenBSD 6.2 February 23, 2018 OpenBSD 6.2 |
@@ -8,9 +8,9 @@ | |||
8 | .\" | 8 | .\" |
9 | .\" Created: Sun May 7 00:14:37 1995 ylo | 9 | .\" Created: Sun May 7 00:14:37 1995 ylo |
10 | .\" | 10 | .\" |
11 | .\" $OpenBSD: scp.1,v 1.74 2017/05/03 21:49:18 naddy Exp $ | 11 | .\" $OpenBSD: scp.1,v 1.77 2018/02/23 07:38:09 jmc Exp $ |
12 | .\" | 12 | .\" |
13 | .Dd $Mdocdate: May 3 2017 $ | 13 | .Dd $Mdocdate: February 23 2018 $ |
14 | .Dt SCP 1 | 14 | .Dt SCP 1 |
15 | .Os | 15 | .Os |
16 | .Sh NAME | 16 | .Sh NAME |
@@ -18,7 +18,6 @@ | |||
18 | .Nd secure copy (remote file copy program) | 18 | .Nd secure copy (remote file copy program) |
19 | .Sh SYNOPSIS | 19 | .Sh SYNOPSIS |
20 | .Nm scp | 20 | .Nm scp |
21 | .Bk -words | ||
22 | .Op Fl 346BCpqrv | 21 | .Op Fl 346BCpqrv |
23 | .Op Fl c Ar cipher | 22 | .Op Fl c Ar cipher |
24 | .Op Fl F Ar ssh_config | 23 | .Op Fl F Ar ssh_config |
@@ -27,20 +26,7 @@ | |||
27 | .Op Fl o Ar ssh_option | 26 | .Op Fl o Ar ssh_option |
28 | .Op Fl P Ar port | 27 | .Op Fl P Ar port |
29 | .Op Fl S Ar program | 28 | .Op Fl S Ar program |
30 | .Sm off | 29 | .Ar source ... target |
31 | .Oo | ||
32 | .Op Ar user No @ | ||
33 | .Ar host1 : | ||
34 | .Oc Ar file1 | ||
35 | .Sm on | ||
36 | .Ar ... | ||
37 | .Sm off | ||
38 | .Oo | ||
39 | .Op Ar user No @ | ||
40 | .Ar host2 : | ||
41 | .Oc Ar file2 | ||
42 | .Sm on | ||
43 | .Ek | ||
44 | .Sh DESCRIPTION | 30 | .Sh DESCRIPTION |
45 | .Nm | 31 | .Nm |
46 | copies files between hosts on a network. | 32 | copies files between hosts on a network. |
@@ -53,15 +39,33 @@ same security as | |||
53 | will ask for passwords or passphrases if they are needed for | 39 | will ask for passwords or passphrases if they are needed for |
54 | authentication. | 40 | authentication. |
55 | .Pp | 41 | .Pp |
56 | File names may contain a user and host specification to indicate | 42 | The |
57 | that the file is to be copied to/from that host. | 43 | .Ar source |
44 | and | ||
45 | .Ar target | ||
46 | may be specified as a local pathname, a remote host with optional path | ||
47 | in the form | ||
48 | .Sm off | ||
49 | .Oo user @ Oc host : Op path , | ||
50 | .Sm on | ||
51 | or a URI in the form | ||
52 | .Sm off | ||
53 | .No scp:// Oo user @ Oc host Oo : port Oc Op / path . | ||
54 | .Sm on | ||
58 | Local file names can be made explicit using absolute or relative pathnames | 55 | Local file names can be made explicit using absolute or relative pathnames |
59 | to avoid | 56 | to avoid |
60 | .Nm | 57 | .Nm |
61 | treating file names containing | 58 | treating file names containing |
62 | .Sq :\& | 59 | .Sq :\& |
63 | as host specifiers. | 60 | as host specifiers. |
64 | Copies between two remote hosts are also permitted. | 61 | .Pp |
62 | When copying between two remote hosts, if the URI format is used, a | ||
63 | .Ar port | ||
64 | may only be specified on the | ||
65 | .Ar target | ||
66 | if the | ||
67 | .Fl 3 | ||
68 | option is used. | ||
65 | .Pp | 69 | .Pp |
66 | The options are as follows: | 70 | The options are as follows: |
67 | .Bl -tag -width Ds | 71 | .Bl -tag -width Ds |
@@ -120,6 +124,7 @@ For full details of the options listed below, and their possible values, see | |||
120 | .It AddressFamily | 124 | .It AddressFamily |
121 | .It BatchMode | 125 | .It BatchMode |
122 | .It BindAddress | 126 | .It BindAddress |
127 | .It BindInterface | ||
123 | .It CanonicalDomains | 128 | .It CanonicalDomains |
124 | .It CanonicalizeFallbackLocal | 129 | .It CanonicalizeFallbackLocal |
125 | .It CanonicalizeHostname | 130 | .It CanonicalizeHostname |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: scp.c,v 1.192 2017/05/31 09:15:42 deraadt Exp $ */ | 1 | /* $OpenBSD: scp.c,v 1.195 2018/02/10 06:15:12 djm 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). |
@@ -112,6 +112,7 @@ | |||
112 | #endif | 112 | #endif |
113 | 113 | ||
114 | #include "xmalloc.h" | 114 | #include "xmalloc.h" |
115 | #include "ssh.h" | ||
115 | #include "atomicio.h" | 116 | #include "atomicio.h" |
116 | #include "pathnames.h" | 117 | #include "pathnames.h" |
117 | #include "log.h" | 118 | #include "log.h" |
@@ -123,8 +124,8 @@ extern char *__progname; | |||
123 | 124 | ||
124 | #define COPY_BUFLEN 16384 | 125 | #define COPY_BUFLEN 16384 |
125 | 126 | ||
126 | int do_cmd(char *host, char *remuser, char *cmd, int *fdin, int *fdout); | 127 | int do_cmd(char *host, char *remuser, int port, char *cmd, int *fdin, int *fdout); |
127 | int do_cmd2(char *host, char *remuser, char *cmd, int fdin, int fdout); | 128 | int do_cmd2(char *host, char *remuser, int port, char *cmd, int fdin, int fdout); |
128 | 129 | ||
129 | /* Struct for addargs */ | 130 | /* Struct for addargs */ |
130 | arglist args; | 131 | arglist args; |
@@ -149,6 +150,9 @@ int showprogress = 1; | |||
149 | */ | 150 | */ |
150 | int throughlocal = 0; | 151 | int throughlocal = 0; |
151 | 152 | ||
153 | /* Non-standard port to use for the ssh connection or -1. */ | ||
154 | int sshport = -1; | ||
155 | |||
152 | /* This is the program to execute for the secured connection. ("ssh" or -S) */ | 156 | /* This is the program to execute for the secured connection. ("ssh" or -S) */ |
153 | char *ssh_program = _PATH_SSH_PROGRAM; | 157 | char *ssh_program = _PATH_SSH_PROGRAM; |
154 | 158 | ||
@@ -239,7 +243,7 @@ do_local_cmd(arglist *a) | |||
239 | */ | 243 | */ |
240 | 244 | ||
241 | int | 245 | int |
242 | do_cmd(char *host, char *remuser, char *cmd, int *fdin, int *fdout) | 246 | do_cmd(char *host, char *remuser, int port, char *cmd, int *fdin, int *fdout) |
243 | { | 247 | { |
244 | int pin[2], pout[2], reserved[2]; | 248 | int pin[2], pout[2], reserved[2]; |
245 | 249 | ||
@@ -249,6 +253,9 @@ do_cmd(char *host, char *remuser, char *cmd, int *fdin, int *fdout) | |||
249 | ssh_program, host, | 253 | ssh_program, host, |
250 | remuser ? remuser : "(unspecified)", cmd); | 254 | remuser ? remuser : "(unspecified)", cmd); |
251 | 255 | ||
256 | if (port == -1) | ||
257 | port = sshport; | ||
258 | |||
252 | /* | 259 | /* |
253 | * Reserve two descriptors so that the real pipes won't get | 260 | * Reserve two descriptors so that the real pipes won't get |
254 | * descriptors 0 and 1 because that will screw up dup2 below. | 261 | * descriptors 0 and 1 because that will screw up dup2 below. |
@@ -282,6 +289,10 @@ do_cmd(char *host, char *remuser, char *cmd, int *fdin, int *fdout) | |||
282 | close(pout[1]); | 289 | close(pout[1]); |
283 | 290 | ||
284 | replacearg(&args, 0, "%s", ssh_program); | 291 | replacearg(&args, 0, "%s", ssh_program); |
292 | if (port != -1) { | ||
293 | addargs(&args, "-p"); | ||
294 | addargs(&args, "%d", port); | ||
295 | } | ||
285 | if (remuser != NULL) { | 296 | if (remuser != NULL) { |
286 | addargs(&args, "-l"); | 297 | addargs(&args, "-l"); |
287 | addargs(&args, "%s", remuser); | 298 | addargs(&args, "%s", remuser); |
@@ -313,7 +324,7 @@ do_cmd(char *host, char *remuser, char *cmd, int *fdin, int *fdout) | |||
313 | * This way the input and output of two commands can be connected. | 324 | * This way the input and output of two commands can be connected. |
314 | */ | 325 | */ |
315 | int | 326 | int |
316 | do_cmd2(char *host, char *remuser, char *cmd, int fdin, int fdout) | 327 | do_cmd2(char *host, char *remuser, int port, char *cmd, int fdin, int fdout) |
317 | { | 328 | { |
318 | pid_t pid; | 329 | pid_t pid; |
319 | int status; | 330 | int status; |
@@ -324,6 +335,9 @@ do_cmd2(char *host, char *remuser, char *cmd, int fdin, int fdout) | |||
324 | ssh_program, host, | 335 | ssh_program, host, |
325 | remuser ? remuser : "(unspecified)", cmd); | 336 | remuser ? remuser : "(unspecified)", cmd); |
326 | 337 | ||
338 | if (port == -1) | ||
339 | port = sshport; | ||
340 | |||
327 | /* Fork a child to execute the command on the remote host using ssh. */ | 341 | /* Fork a child to execute the command on the remote host using ssh. */ |
328 | pid = fork(); | 342 | pid = fork(); |
329 | if (pid == 0) { | 343 | if (pid == 0) { |
@@ -331,6 +345,10 @@ do_cmd2(char *host, char *remuser, char *cmd, int fdin, int fdout) | |||
331 | dup2(fdout, 1); | 345 | dup2(fdout, 1); |
332 | 346 | ||
333 | replacearg(&args, 0, "%s", ssh_program); | 347 | replacearg(&args, 0, "%s", ssh_program); |
348 | if (port != -1) { | ||
349 | addargs(&args, "-p"); | ||
350 | addargs(&args, "%d", port); | ||
351 | } | ||
334 | if (remuser != NULL) { | 352 | if (remuser != NULL) { |
335 | addargs(&args, "-l"); | 353 | addargs(&args, "-l"); |
336 | addargs(&args, "%s", remuser); | 354 | addargs(&args, "%s", remuser); |
@@ -375,14 +393,14 @@ void rsource(char *, struct stat *); | |||
375 | void sink(int, char *[]); | 393 | void sink(int, char *[]); |
376 | void source(int, char *[]); | 394 | void source(int, char *[]); |
377 | void tolocal(int, char *[]); | 395 | void tolocal(int, char *[]); |
378 | void toremote(char *, int, char *[]); | 396 | void toremote(int, char *[]); |
379 | void usage(void); | 397 | void usage(void); |
380 | 398 | ||
381 | int | 399 | int |
382 | main(int argc, char **argv) | 400 | main(int argc, char **argv) |
383 | { | 401 | { |
384 | int ch, fflag, tflag, status, n; | 402 | int ch, fflag, tflag, status, n; |
385 | char *targ, **newargv; | 403 | char **newargv; |
386 | const char *errstr; | 404 | const char *errstr; |
387 | extern char *optarg; | 405 | extern char *optarg; |
388 | extern int optind; | 406 | extern int optind; |
@@ -408,6 +426,8 @@ main(int argc, char **argv) | |||
408 | addargs(&args, "-oForwardAgent=no"); | 426 | addargs(&args, "-oForwardAgent=no"); |
409 | addargs(&args, "-oPermitLocalCommand=no"); | 427 | addargs(&args, "-oPermitLocalCommand=no"); |
410 | addargs(&args, "-oClearAllForwardings=yes"); | 428 | addargs(&args, "-oClearAllForwardings=yes"); |
429 | addargs(&args, "-oRemoteCommand=none"); | ||
430 | addargs(&args, "-oRequestTTY=no"); | ||
411 | 431 | ||
412 | fflag = tflag = 0; | 432 | fflag = tflag = 0; |
413 | while ((ch = getopt(argc, argv, "dfl:prtvBCc:i:P:q12346S:o:F:")) != -1) | 433 | while ((ch = getopt(argc, argv, "dfl:prtvBCc:i:P:q12346S:o:F:")) != -1) |
@@ -438,10 +458,9 @@ main(int argc, char **argv) | |||
438 | addargs(&args, "%s", optarg); | 458 | addargs(&args, "%s", optarg); |
439 | break; | 459 | break; |
440 | case 'P': | 460 | case 'P': |
441 | addargs(&remote_remote_args, "-p"); | 461 | sshport = a2port(optarg); |
442 | addargs(&remote_remote_args, "%s", optarg); | 462 | if (sshport <= 0) |
443 | addargs(&args, "-p"); | 463 | fatal("bad port \"%s\"\n", optarg); |
444 | addargs(&args, "%s", optarg); | ||
445 | break; | 464 | break; |
446 | case 'B': | 465 | case 'B': |
447 | addargs(&remote_remote_args, "-oBatchmode=yes"); | 466 | addargs(&remote_remote_args, "-oBatchmode=yes"); |
@@ -541,8 +560,8 @@ main(int argc, char **argv) | |||
541 | 560 | ||
542 | (void) signal(SIGPIPE, lostconn); | 561 | (void) signal(SIGPIPE, lostconn); |
543 | 562 | ||
544 | if ((targ = colon(argv[argc - 1]))) /* Dest is remote host. */ | 563 | if (colon(argv[argc - 1])) /* Dest is remote host. */ |
545 | toremote(targ, argc, argv); | 564 | toremote(argc, argv); |
546 | else { | 565 | else { |
547 | if (targetshouldbedirectory) | 566 | if (targetshouldbedirectory) |
548 | verifydir(argv[argc - 1]); | 567 | verifydir(argv[argc - 1]); |
@@ -597,72 +616,90 @@ do_times(int fd, int verb, const struct stat *sb) | |||
597 | return (response()); | 616 | return (response()); |
598 | } | 617 | } |
599 | 618 | ||
619 | static int | ||
620 | parse_scp_uri(const char *uri, char **userp, char **hostp, int *portp, | ||
621 | char **pathp) | ||
622 | { | ||
623 | int r; | ||
624 | |||
625 | r = parse_uri("scp", uri, userp, hostp, portp, pathp); | ||
626 | if (r == 0 && *pathp == NULL) | ||
627 | *pathp = xstrdup("."); | ||
628 | return r; | ||
629 | } | ||
630 | |||
600 | void | 631 | void |
601 | toremote(char *targ, int argc, char **argv) | 632 | toremote(int argc, char **argv) |
602 | { | 633 | { |
603 | char *bp, *host, *src, *suser, *thost, *tuser, *arg; | 634 | char *suser = NULL, *host = NULL, *src = NULL; |
635 | char *bp, *tuser, *thost, *targ; | ||
636 | int sport = -1, tport = -1; | ||
604 | arglist alist; | 637 | arglist alist; |
605 | int i; | 638 | int i, r; |
606 | u_int j; | 639 | u_int j; |
607 | 640 | ||
608 | memset(&alist, '\0', sizeof(alist)); | 641 | memset(&alist, '\0', sizeof(alist)); |
609 | alist.list = NULL; | 642 | alist.list = NULL; |
610 | 643 | ||
611 | *targ++ = 0; | 644 | /* Parse target */ |
612 | if (*targ == 0) | 645 | r = parse_scp_uri(argv[argc - 1], &tuser, &thost, &tport, &targ); |
613 | targ = "."; | 646 | if (r == -1) { |
614 | 647 | fmprintf(stderr, "%s: invalid uri\n", argv[argc - 1]); | |
615 | arg = xstrdup(argv[argc - 1]); | 648 | ++errs; |
616 | if ((thost = strrchr(arg, '@'))) { | 649 | goto out; |
617 | /* user@host */ | 650 | } |
618 | *thost++ = 0; | 651 | if (r != 0) { |
619 | tuser = arg; | 652 | if (parse_user_host_path(argv[argc - 1], &tuser, &thost, |
620 | if (*tuser == '\0') | 653 | &targ) == -1) { |
621 | tuser = NULL; | 654 | fmprintf(stderr, "%s: invalid target\n", argv[argc - 1]); |
622 | } else { | 655 | ++errs; |
623 | thost = arg; | 656 | goto out; |
624 | tuser = NULL; | 657 | } |
625 | } | 658 | } |
626 | |||
627 | if (tuser != NULL && !okname(tuser)) { | 659 | if (tuser != NULL && !okname(tuser)) { |
628 | free(arg); | 660 | ++errs; |
629 | return; | 661 | goto out; |
630 | } | 662 | } |
631 | 663 | ||
664 | /* Parse source files */ | ||
632 | for (i = 0; i < argc - 1; i++) { | 665 | for (i = 0; i < argc - 1; i++) { |
633 | src = colon(argv[i]); | 666 | free(suser); |
634 | if (src && throughlocal) { /* extended remote to remote */ | 667 | free(host); |
635 | *src++ = 0; | 668 | free(src); |
636 | if (*src == 0) | 669 | r = parse_scp_uri(argv[i], &suser, &host, &sport, &src); |
637 | src = "."; | 670 | if (r == -1) { |
638 | host = strrchr(argv[i], '@'); | 671 | fmprintf(stderr, "%s: invalid uri\n", argv[i]); |
639 | if (host) { | 672 | ++errs; |
640 | *host++ = 0; | 673 | continue; |
641 | host = cleanhostname(host); | 674 | } |
642 | suser = argv[i]; | 675 | if (r != 0) { |
643 | if (*suser == '\0') | 676 | parse_user_host_path(argv[i], &suser, &host, &src); |
644 | suser = pwd->pw_name; | 677 | } |
645 | else if (!okname(suser)) | 678 | if (suser != NULL && !okname(suser)) { |
646 | continue; | 679 | ++errs; |
647 | } else { | 680 | continue; |
648 | host = cleanhostname(argv[i]); | 681 | } |
649 | suser = NULL; | 682 | if (host && throughlocal) { /* extended remote to remote */ |
650 | } | ||
651 | xasprintf(&bp, "%s -f %s%s", cmd, | 683 | xasprintf(&bp, "%s -f %s%s", cmd, |
652 | *src == '-' ? "-- " : "", src); | 684 | *src == '-' ? "-- " : "", src); |
653 | if (do_cmd(host, suser, bp, &remin, &remout) < 0) | 685 | if (do_cmd(host, suser, sport, bp, &remin, &remout) < 0) |
654 | exit(1); | 686 | exit(1); |
655 | free(bp); | 687 | free(bp); |
656 | host = cleanhostname(thost); | ||
657 | xasprintf(&bp, "%s -t %s%s", cmd, | 688 | xasprintf(&bp, "%s -t %s%s", cmd, |
658 | *targ == '-' ? "-- " : "", targ); | 689 | *targ == '-' ? "-- " : "", targ); |
659 | if (do_cmd2(host, tuser, bp, remin, remout) < 0) | 690 | if (do_cmd2(thost, tuser, tport, bp, remin, remout) < 0) |
660 | exit(1); | 691 | exit(1); |
661 | free(bp); | 692 | free(bp); |
662 | (void) close(remin); | 693 | (void) close(remin); |
663 | (void) close(remout); | 694 | (void) close(remout); |
664 | remin = remout = -1; | 695 | remin = remout = -1; |
665 | } else if (src) { /* standard remote to remote */ | 696 | } else if (host) { /* standard remote to remote */ |
697 | if (tport != -1 && tport != SSH_DEFAULT_PORT) { | ||
698 | /* This would require the remote support URIs */ | ||
699 | fatal("target port not supported with two " | ||
700 | "remote hosts without the -3 option"); | ||
701 | } | ||
702 | |||
666 | freeargs(&alist); | 703 | freeargs(&alist); |
667 | addargs(&alist, "%s", ssh_program); | 704 | addargs(&alist, "%s", ssh_program); |
668 | addargs(&alist, "-x"); | 705 | addargs(&alist, "-x"); |
@@ -672,23 +709,14 @@ toremote(char *targ, int argc, char **argv) | |||
672 | addargs(&alist, "%s", | 709 | addargs(&alist, "%s", |
673 | remote_remote_args.list[j]); | 710 | remote_remote_args.list[j]); |
674 | } | 711 | } |
675 | *src++ = 0; | 712 | |
676 | if (*src == 0) | 713 | if (sport != -1) { |
677 | src = "."; | 714 | addargs(&alist, "-p"); |
678 | host = strrchr(argv[i], '@'); | 715 | addargs(&alist, "%d", sport); |
679 | 716 | } | |
680 | if (host) { | 717 | if (suser) { |
681 | *host++ = 0; | ||
682 | host = cleanhostname(host); | ||
683 | suser = argv[i]; | ||
684 | if (*suser == '\0') | ||
685 | suser = pwd->pw_name; | ||
686 | else if (!okname(suser)) | ||
687 | continue; | ||
688 | addargs(&alist, "-l"); | 718 | addargs(&alist, "-l"); |
689 | addargs(&alist, "%s", suser); | 719 | addargs(&alist, "%s", suser); |
690 | } else { | ||
691 | host = cleanhostname(argv[i]); | ||
692 | } | 720 | } |
693 | addargs(&alist, "--"); | 721 | addargs(&alist, "--"); |
694 | addargs(&alist, "%s", host); | 722 | addargs(&alist, "%s", host); |
@@ -703,8 +731,7 @@ toremote(char *targ, int argc, char **argv) | |||
703 | if (remin == -1) { | 731 | if (remin == -1) { |
704 | xasprintf(&bp, "%s -t %s%s", cmd, | 732 | xasprintf(&bp, "%s -t %s%s", cmd, |
705 | *targ == '-' ? "-- " : "", targ); | 733 | *targ == '-' ? "-- " : "", targ); |
706 | host = cleanhostname(thost); | 734 | if (do_cmd(thost, tuser, tport, bp, &remin, |
707 | if (do_cmd(host, tuser, bp, &remin, | ||
708 | &remout) < 0) | 735 | &remout) < 0) |
709 | exit(1); | 736 | exit(1); |
710 | if (response() < 0) | 737 | if (response() < 0) |
@@ -714,21 +741,42 @@ toremote(char *targ, int argc, char **argv) | |||
714 | source(1, argv + i); | 741 | source(1, argv + i); |
715 | } | 742 | } |
716 | } | 743 | } |
717 | free(arg); | 744 | out: |
745 | free(tuser); | ||
746 | free(thost); | ||
747 | free(targ); | ||
748 | free(suser); | ||
749 | free(host); | ||
750 | free(src); | ||
718 | } | 751 | } |
719 | 752 | ||
720 | void | 753 | void |
721 | tolocal(int argc, char **argv) | 754 | tolocal(int argc, char **argv) |
722 | { | 755 | { |
723 | char *bp, *host, *src, *suser; | 756 | char *bp, *host = NULL, *src = NULL, *suser = NULL; |
724 | arglist alist; | 757 | arglist alist; |
725 | int i; | 758 | int i, r, sport = -1; |
726 | 759 | ||
727 | memset(&alist, '\0', sizeof(alist)); | 760 | memset(&alist, '\0', sizeof(alist)); |
728 | alist.list = NULL; | 761 | alist.list = NULL; |
729 | 762 | ||
730 | for (i = 0; i < argc - 1; i++) { | 763 | for (i = 0; i < argc - 1; i++) { |
731 | if (!(src = colon(argv[i]))) { /* Local to local. */ | 764 | free(suser); |
765 | free(host); | ||
766 | free(src); | ||
767 | r = parse_scp_uri(argv[i], &suser, &host, &sport, &src); | ||
768 | if (r == -1) { | ||
769 | fmprintf(stderr, "%s: invalid uri\n", argv[i]); | ||
770 | ++errs; | ||
771 | continue; | ||
772 | } | ||
773 | if (r != 0) | ||
774 | parse_user_host_path(argv[i], &suser, &host, &src); | ||
775 | if (suser != NULL && !okname(suser)) { | ||
776 | ++errs; | ||
777 | continue; | ||
778 | } | ||
779 | if (!host) { /* Local to local. */ | ||
732 | freeargs(&alist); | 780 | freeargs(&alist); |
733 | addargs(&alist, "%s", _PATH_CP); | 781 | addargs(&alist, "%s", _PATH_CP); |
734 | if (iamrecursive) | 782 | if (iamrecursive) |
@@ -742,22 +790,10 @@ tolocal(int argc, char **argv) | |||
742 | ++errs; | 790 | ++errs; |
743 | continue; | 791 | continue; |
744 | } | 792 | } |
745 | *src++ = 0; | 793 | /* Remote to local. */ |
746 | if (*src == 0) | ||
747 | src = "."; | ||
748 | if ((host = strrchr(argv[i], '@')) == NULL) { | ||
749 | host = argv[i]; | ||
750 | suser = NULL; | ||
751 | } else { | ||
752 | *host++ = 0; | ||
753 | suser = argv[i]; | ||
754 | if (*suser == '\0') | ||
755 | suser = pwd->pw_name; | ||
756 | } | ||
757 | host = cleanhostname(host); | ||
758 | xasprintf(&bp, "%s -f %s%s", | 794 | xasprintf(&bp, "%s -f %s%s", |
759 | cmd, *src == '-' ? "-- " : "", src); | 795 | cmd, *src == '-' ? "-- " : "", src); |
760 | if (do_cmd(host, suser, bp, &remin, &remout) < 0) { | 796 | if (do_cmd(host, suser, sport, bp, &remin, &remout) < 0) { |
761 | free(bp); | 797 | free(bp); |
762 | ++errs; | 798 | ++errs; |
763 | continue; | 799 | continue; |
@@ -767,6 +803,9 @@ tolocal(int argc, char **argv) | |||
767 | (void) close(remin); | 803 | (void) close(remin); |
768 | remin = remout = -1; | 804 | remin = remout = -1; |
769 | } | 805 | } |
806 | free(suser); | ||
807 | free(host); | ||
808 | free(src); | ||
770 | } | 809 | } |
771 | 810 | ||
772 | void | 811 | void |
@@ -1283,8 +1322,7 @@ usage(void) | |||
1283 | { | 1322 | { |
1284 | (void) fprintf(stderr, | 1323 | (void) fprintf(stderr, |
1285 | "usage: scp [-346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]\n" | 1324 | "usage: scp [-346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]\n" |
1286 | " [-l limit] [-o ssh_option] [-P port] [-S program]\n" | 1325 | " [-l limit] [-o ssh_option] [-P port] [-S program] source ... target\n"); |
1287 | " [[user@]host1:]file1 ... [[user@]host2:]file2\n"); | ||
1288 | exit(1); | 1326 | exit(1); |
1289 | } | 1327 | } |
1290 | 1328 | ||
diff --git a/servconf.c b/servconf.c index 9daa182c0..0a8f6fd62 100644 --- a/servconf.c +++ b/servconf.c | |||
@@ -1,5 +1,5 @@ | |||
1 | 1 | ||
2 | /* $OpenBSD: servconf.c,v 1.313 2017/10/04 18:49:30 djm Exp $ */ | 2 | /* $OpenBSD: servconf.c,v 1.326 2018/03/01 20:32:16 markus 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 |
@@ -15,10 +15,16 @@ | |||
15 | 15 | ||
16 | #include <sys/types.h> | 16 | #include <sys/types.h> |
17 | #include <sys/socket.h> | 17 | #include <sys/socket.h> |
18 | #ifdef HAVE_SYS_SYSCTL_H | ||
19 | #include <sys/sysctl.h> | ||
20 | #endif | ||
18 | 21 | ||
19 | #include <netinet/in.h> | 22 | #include <netinet/in.h> |
20 | #include <netinet/in_systm.h> | 23 | #include <netinet/in_systm.h> |
21 | #include <netinet/ip.h> | 24 | #include <netinet/ip.h> |
25 | #ifdef HAVE_NET_ROUTE_H | ||
26 | #include <net/route.h> | ||
27 | #endif | ||
22 | 28 | ||
23 | #include <ctype.h> | 29 | #include <ctype.h> |
24 | #include <netdb.h> | 30 | #include <netdb.h> |
@@ -58,8 +64,10 @@ | |||
58 | #include "myproposal.h" | 64 | #include "myproposal.h" |
59 | #include "digest.h" | 65 | #include "digest.h" |
60 | 66 | ||
61 | static void add_listen_addr(ServerOptions *, char *, int); | 67 | static void add_listen_addr(ServerOptions *, const char *, |
62 | static void add_one_listen_addr(ServerOptions *, char *, int); | 68 | const char *, int); |
69 | static void add_one_listen_addr(ServerOptions *, const char *, | ||
70 | const char *, int); | ||
63 | 71 | ||
64 | /* Use of privilege separation or not */ | 72 | /* Use of privilege separation or not */ |
65 | extern int use_privsep; | 73 | extern int use_privsep; |
@@ -81,7 +89,9 @@ initialize_server_options(ServerOptions *options) | |||
81 | options->queued_listen_addrs = NULL; | 89 | options->queued_listen_addrs = NULL; |
82 | options->num_queued_listens = 0; | 90 | options->num_queued_listens = 0; |
83 | options->listen_addrs = NULL; | 91 | options->listen_addrs = NULL; |
92 | options->num_listen_addrs = 0; | ||
84 | options->address_family = -1; | 93 | options->address_family = -1; |
94 | options->routing_domain = NULL; | ||
85 | options->num_host_key_files = 0; | 95 | options->num_host_key_files = 0; |
86 | options->num_host_cert_files = 0; | 96 | options->num_host_cert_files = 0; |
87 | options->host_key_agent = NULL; | 97 | options->host_key_agent = NULL; |
@@ -191,10 +201,45 @@ assemble_algorithms(ServerOptions *o) | |||
191 | fatal("kex_assemble_names failed"); | 201 | fatal("kex_assemble_names failed"); |
192 | } | 202 | } |
193 | 203 | ||
204 | static void | ||
205 | array_append(const char *file, const int line, const char *directive, | ||
206 | char ***array, u_int *lp, const char *s) | ||
207 | { | ||
208 | |||
209 | if (*lp >= INT_MAX) | ||
210 | fatal("%s line %d: Too many %s entries", file, line, directive); | ||
211 | |||
212 | *array = xrecallocarray(*array, *lp, *lp + 1, sizeof(**array)); | ||
213 | (*array)[*lp] = xstrdup(s); | ||
214 | (*lp)++; | ||
215 | } | ||
216 | |||
217 | void | ||
218 | servconf_add_hostkey(const char *file, const int line, | ||
219 | ServerOptions *options, const char *path) | ||
220 | { | ||
221 | char *apath = derelativise_path(path); | ||
222 | |||
223 | array_append(file, line, "HostKey", | ||
224 | &options->host_key_files, &options->num_host_key_files, apath); | ||
225 | free(apath); | ||
226 | } | ||
227 | |||
228 | void | ||
229 | servconf_add_hostcert(const char *file, const int line, | ||
230 | ServerOptions *options, const char *path) | ||
231 | { | ||
232 | char *apath = derelativise_path(path); | ||
233 | |||
234 | array_append(file, line, "HostCertificate", | ||
235 | &options->host_cert_files, &options->num_host_cert_files, apath); | ||
236 | free(apath); | ||
237 | } | ||
238 | |||
194 | void | 239 | void |
195 | fill_default_server_options(ServerOptions *options) | 240 | fill_default_server_options(ServerOptions *options) |
196 | { | 241 | { |
197 | int i; | 242 | u_int i; |
198 | 243 | ||
199 | /* Portable-specific options */ | 244 | /* Portable-specific options */ |
200 | if (options->use_pam == -1) | 245 | if (options->use_pam == -1) |
@@ -203,14 +248,18 @@ fill_default_server_options(ServerOptions *options) | |||
203 | /* Standard Options */ | 248 | /* Standard Options */ |
204 | if (options->num_host_key_files == 0) { | 249 | if (options->num_host_key_files == 0) { |
205 | /* fill default hostkeys for protocols */ | 250 | /* fill default hostkeys for protocols */ |
206 | options->host_key_files[options->num_host_key_files++] = | 251 | servconf_add_hostkey("[default]", 0, options, |
207 | _PATH_HOST_RSA_KEY_FILE; | 252 | _PATH_HOST_RSA_KEY_FILE); |
208 | #ifdef OPENSSL_HAS_ECC | 253 | #ifdef OPENSSL_HAS_ECC |
209 | options->host_key_files[options->num_host_key_files++] = | 254 | servconf_add_hostkey("[default]", 0, options, |
210 | _PATH_HOST_ECDSA_KEY_FILE; | 255 | _PATH_HOST_ECDSA_KEY_FILE); |
211 | #endif | 256 | #endif |
212 | options->host_key_files[options->num_host_key_files++] = | 257 | servconf_add_hostkey("[default]", 0, options, |
213 | _PATH_HOST_ED25519_KEY_FILE; | 258 | _PATH_HOST_ED25519_KEY_FILE); |
259 | #ifdef WITH_XMSS | ||
260 | servconf_add_hostkey("[default]", 0, options, | ||
261 | _PATH_HOST_XMSS_KEY_FILE); | ||
262 | #endif /* WITH_XMSS */ | ||
214 | } | 263 | } |
215 | /* No certificates by default */ | 264 | /* No certificates by default */ |
216 | if (options->num_ports == 0) | 265 | if (options->num_ports == 0) |
@@ -218,7 +267,7 @@ fill_default_server_options(ServerOptions *options) | |||
218 | if (options->address_family == -1) | 267 | if (options->address_family == -1) |
219 | options->address_family = AF_UNSPEC; | 268 | options->address_family = AF_UNSPEC; |
220 | if (options->listen_addrs == NULL) | 269 | if (options->listen_addrs == NULL) |
221 | add_listen_addr(options, NULL, 0); | 270 | add_listen_addr(options, NULL, NULL, 0); |
222 | if (options->pid_file == NULL) | 271 | if (options->pid_file == NULL) |
223 | options->pid_file = xstrdup(_PATH_SSH_DAEMON_PID_FILE); | 272 | options->pid_file = xstrdup(_PATH_SSH_DAEMON_PID_FILE); |
224 | if (options->login_grace_time == -1) | 273 | if (options->login_grace_time == -1) |
@@ -318,10 +367,14 @@ fill_default_server_options(ServerOptions *options) | |||
318 | if (options->client_alive_count_max == -1) | 367 | if (options->client_alive_count_max == -1) |
319 | options->client_alive_count_max = 3; | 368 | options->client_alive_count_max = 3; |
320 | if (options->num_authkeys_files == 0) { | 369 | if (options->num_authkeys_files == 0) { |
321 | options->authorized_keys_files[options->num_authkeys_files++] = | 370 | array_append("[default]", 0, "AuthorizedKeysFiles", |
322 | xstrdup(_PATH_SSH_USER_PERMITTED_KEYS); | 371 | &options->authorized_keys_files, |
323 | options->authorized_keys_files[options->num_authkeys_files++] = | 372 | &options->num_authkeys_files, |
324 | xstrdup(_PATH_SSH_USER_PERMITTED_KEYS2); | 373 | _PATH_SSH_USER_PERMITTED_KEYS); |
374 | array_append("[default]", 0, "AuthorizedKeysFiles", | ||
375 | &options->authorized_keys_files, | ||
376 | &options->num_authkeys_files, | ||
377 | _PATH_SSH_USER_PERMITTED_KEYS2); | ||
325 | } | 378 | } |
326 | if (options->permit_tun == -1) | 379 | if (options->permit_tun == -1) |
327 | options->permit_tun = SSH_TUNMODE_NO; | 380 | options->permit_tun = SSH_TUNMODE_NO; |
@@ -365,6 +418,7 @@ fill_default_server_options(ServerOptions *options) | |||
365 | CLEAR_ON_NONE(options->authorized_principals_file); | 418 | CLEAR_ON_NONE(options->authorized_principals_file); |
366 | CLEAR_ON_NONE(options->adm_forced_command); | 419 | CLEAR_ON_NONE(options->adm_forced_command); |
367 | CLEAR_ON_NONE(options->chroot_directory); | 420 | CLEAR_ON_NONE(options->chroot_directory); |
421 | CLEAR_ON_NONE(options->routing_domain); | ||
368 | for (i = 0; i < options->num_host_key_files; i++) | 422 | for (i = 0; i < options->num_host_key_files; i++) |
369 | CLEAR_ON_NONE(options->host_key_files[i]); | 423 | CLEAR_ON_NONE(options->host_key_files[i]); |
370 | for (i = 0; i < options->num_host_cert_files; i++) | 424 | for (i = 0; i < options->num_host_cert_files; i++) |
@@ -400,8 +454,7 @@ typedef enum { | |||
400 | sPermitRootLogin, sLogFacility, sLogLevel, | 454 | sPermitRootLogin, sLogFacility, sLogLevel, |
401 | sRhostsRSAAuthentication, sRSAAuthentication, | 455 | sRhostsRSAAuthentication, sRSAAuthentication, |
402 | sKerberosAuthentication, sKerberosOrLocalPasswd, sKerberosTicketCleanup, | 456 | sKerberosAuthentication, sKerberosOrLocalPasswd, sKerberosTicketCleanup, |
403 | sKerberosGetAFSToken, | 457 | sKerberosGetAFSToken, sChallengeResponseAuthentication, |
404 | sKerberosTgtPassing, sChallengeResponseAuthentication, | ||
405 | sPasswordAuthentication, sKbdInteractiveAuthentication, | 458 | sPasswordAuthentication, sKbdInteractiveAuthentication, |
406 | sListenAddress, sAddressFamily, | 459 | sListenAddress, sAddressFamily, |
407 | sPrintMotd, sPrintLastLog, sIgnoreRhosts, | 460 | sPrintMotd, sPrintLastLog, sIgnoreRhosts, |
@@ -429,7 +482,7 @@ typedef enum { | |||
429 | sAuthenticationMethods, sHostKeyAgent, sPermitUserRC, | 482 | sAuthenticationMethods, sHostKeyAgent, sPermitUserRC, |
430 | sStreamLocalBindMask, sStreamLocalBindUnlink, | 483 | sStreamLocalBindMask, sStreamLocalBindUnlink, |
431 | sAllowStreamLocalForwarding, sFingerprintHash, sDisableForwarding, | 484 | sAllowStreamLocalForwarding, sFingerprintHash, sDisableForwarding, |
432 | sExposeAuthInfo, | 485 | sExposeAuthInfo, sRDomain, |
433 | sDebianBanner, | 486 | sDebianBanner, |
434 | sDeprecated, sIgnore, sUnsupported | 487 | sDeprecated, sIgnore, sUnsupported |
435 | } ServerOpCodes; | 488 | } ServerOpCodes; |
@@ -584,6 +637,7 @@ static struct { | |||
584 | { "fingerprinthash", sFingerprintHash, SSHCFG_GLOBAL }, | 637 | { "fingerprinthash", sFingerprintHash, SSHCFG_GLOBAL }, |
585 | { "disableforwarding", sDisableForwarding, SSHCFG_ALL }, | 638 | { "disableforwarding", sDisableForwarding, SSHCFG_ALL }, |
586 | { "exposeauthinfo", sExposeAuthInfo, SSHCFG_ALL }, | 639 | { "exposeauthinfo", sExposeAuthInfo, SSHCFG_ALL }, |
640 | { "rdomain", sRDomain, SSHCFG_ALL }, | ||
587 | { "debianbanner", sDebianBanner, SSHCFG_GLOBAL }, | 641 | { "debianbanner", sDebianBanner, SSHCFG_GLOBAL }, |
588 | { NULL, sBadOption, 0 } | 642 | { NULL, sBadOption, 0 } |
589 | }; | 643 | }; |
@@ -638,23 +692,51 @@ derelativise_path(const char *path) | |||
638 | } | 692 | } |
639 | 693 | ||
640 | static void | 694 | static void |
641 | add_listen_addr(ServerOptions *options, char *addr, int port) | 695 | add_listen_addr(ServerOptions *options, const char *addr, |
696 | const char *rdomain, int port) | ||
642 | { | 697 | { |
643 | u_int i; | 698 | u_int i; |
644 | 699 | ||
645 | if (port == 0) | 700 | if (port > 0) |
646 | for (i = 0; i < options->num_ports; i++) | 701 | add_one_listen_addr(options, addr, rdomain, port); |
647 | add_one_listen_addr(options, addr, options->ports[i]); | 702 | else { |
648 | else | 703 | for (i = 0; i < options->num_ports; i++) { |
649 | add_one_listen_addr(options, addr, port); | 704 | add_one_listen_addr(options, addr, rdomain, |
705 | options->ports[i]); | ||
706 | } | ||
707 | } | ||
650 | } | 708 | } |
651 | 709 | ||
652 | static void | 710 | static void |
653 | add_one_listen_addr(ServerOptions *options, char *addr, int port) | 711 | add_one_listen_addr(ServerOptions *options, const char *addr, |
712 | const char *rdomain, int port) | ||
654 | { | 713 | { |
655 | struct addrinfo hints, *ai, *aitop; | 714 | struct addrinfo hints, *ai, *aitop; |
656 | char strport[NI_MAXSERV]; | 715 | char strport[NI_MAXSERV]; |
657 | int gaierr; | 716 | int gaierr; |
717 | u_int i; | ||
718 | |||
719 | /* Find listen_addrs entry for this rdomain */ | ||
720 | for (i = 0; i < options->num_listen_addrs; i++) { | ||
721 | if (rdomain == NULL && options->listen_addrs[i].rdomain == NULL) | ||
722 | break; | ||
723 | if (rdomain == NULL || options->listen_addrs[i].rdomain == NULL) | ||
724 | continue; | ||
725 | if (strcmp(rdomain, options->listen_addrs[i].rdomain) == 0) | ||
726 | break; | ||
727 | } | ||
728 | if (i >= options->num_listen_addrs) { | ||
729 | /* No entry for this rdomain; allocate one */ | ||
730 | if (i >= INT_MAX) | ||
731 | fatal("%s: too many listen addresses", __func__); | ||
732 | options->listen_addrs = xrecallocarray(options->listen_addrs, | ||
733 | options->num_listen_addrs, options->num_listen_addrs + 1, | ||
734 | sizeof(*options->listen_addrs)); | ||
735 | i = options->num_listen_addrs++; | ||
736 | if (rdomain != NULL) | ||
737 | options->listen_addrs[i].rdomain = xstrdup(rdomain); | ||
738 | } | ||
739 | /* options->listen_addrs[i] points to the addresses for this rdomain */ | ||
658 | 740 | ||
659 | memset(&hints, 0, sizeof(hints)); | 741 | memset(&hints, 0, sizeof(hints)); |
660 | hints.ai_family = options->address_family; | 742 | hints.ai_family = options->address_family; |
@@ -667,8 +749,44 @@ add_one_listen_addr(ServerOptions *options, char *addr, int port) | |||
667 | ssh_gai_strerror(gaierr)); | 749 | ssh_gai_strerror(gaierr)); |
668 | for (ai = aitop; ai->ai_next; ai = ai->ai_next) | 750 | for (ai = aitop; ai->ai_next; ai = ai->ai_next) |
669 | ; | 751 | ; |
670 | ai->ai_next = options->listen_addrs; | 752 | ai->ai_next = options->listen_addrs[i].addrs; |
671 | options->listen_addrs = aitop; | 753 | options->listen_addrs[i].addrs = aitop; |
754 | } | ||
755 | |||
756 | /* Returns nonzero if the routing domain name is valid */ | ||
757 | static int | ||
758 | valid_rdomain(const char *name) | ||
759 | { | ||
760 | #if defined(HAVE_SYS_VALID_RDOMAIN) | ||
761 | return sys_valid_rdomain(name); | ||
762 | #elif defined(__OpenBSD__) | ||
763 | const char *errstr; | ||
764 | long long num; | ||
765 | struct rt_tableinfo info; | ||
766 | int mib[6]; | ||
767 | size_t miblen = sizeof(mib); | ||
768 | |||
769 | if (name == NULL) | ||
770 | return 1; | ||
771 | |||
772 | num = strtonum(name, 0, 255, &errstr); | ||
773 | if (errstr != NULL) | ||
774 | return 0; | ||
775 | |||
776 | /* Check whether the table actually exists */ | ||
777 | memset(mib, 0, sizeof(mib)); | ||
778 | mib[0] = CTL_NET; | ||
779 | mib[1] = PF_ROUTE; | ||
780 | mib[4] = NET_RT_TABLE; | ||
781 | mib[5] = (int)num; | ||
782 | if (sysctl(mib, 6, &info, &miblen, NULL, 0) == -1) | ||
783 | return 0; | ||
784 | |||
785 | return 1; | ||
786 | #else /* defined(__OpenBSD__) */ | ||
787 | error("Routing domains are not supported on this platform"); | ||
788 | return 0; | ||
789 | #endif | ||
672 | } | 790 | } |
673 | 791 | ||
674 | /* | 792 | /* |
@@ -676,18 +794,19 @@ add_one_listen_addr(ServerOptions *options, char *addr, int port) | |||
676 | * and AddressFamily options. | 794 | * and AddressFamily options. |
677 | */ | 795 | */ |
678 | static void | 796 | static void |
679 | queue_listen_addr(ServerOptions *options, char *addr, int port) | 797 | queue_listen_addr(ServerOptions *options, const char *addr, |
798 | const char *rdomain, int port) | ||
680 | { | 799 | { |
681 | options->queued_listen_addrs = xreallocarray( | 800 | struct queued_listenaddr *qla; |
682 | options->queued_listen_addrs, options->num_queued_listens + 1, | 801 | |
683 | sizeof(addr)); | 802 | options->queued_listen_addrs = xrecallocarray( |
684 | options->queued_listen_ports = xreallocarray( | 803 | options->queued_listen_addrs, |
685 | options->queued_listen_ports, options->num_queued_listens + 1, | 804 | options->num_queued_listens, options->num_queued_listens + 1, |
686 | sizeof(port)); | 805 | sizeof(*options->queued_listen_addrs)); |
687 | options->queued_listen_addrs[options->num_queued_listens] = | 806 | qla = &options->queued_listen_addrs[options->num_queued_listens++]; |
688 | xstrdup(addr); | 807 | qla->addr = xstrdup(addr); |
689 | options->queued_listen_ports[options->num_queued_listens] = port; | 808 | qla->port = port; |
690 | options->num_queued_listens++; | 809 | qla->rdomain = rdomain == NULL ? NULL : xstrdup(rdomain); |
691 | } | 810 | } |
692 | 811 | ||
693 | /* | 812 | /* |
@@ -697,6 +816,7 @@ static void | |||
697 | process_queued_listen_addrs(ServerOptions *options) | 816 | process_queued_listen_addrs(ServerOptions *options) |
698 | { | 817 | { |
699 | u_int i; | 818 | u_int i; |
819 | struct queued_listenaddr *qla; | ||
700 | 820 | ||
701 | if (options->num_ports == 0) | 821 | if (options->num_ports == 0) |
702 | options->ports[options->num_ports++] = SSH_DEFAULT_PORT; | 822 | options->ports[options->num_ports++] = SSH_DEFAULT_PORT; |
@@ -704,15 +824,13 @@ process_queued_listen_addrs(ServerOptions *options) | |||
704 | options->address_family = AF_UNSPEC; | 824 | options->address_family = AF_UNSPEC; |
705 | 825 | ||
706 | for (i = 0; i < options->num_queued_listens; i++) { | 826 | for (i = 0; i < options->num_queued_listens; i++) { |
707 | add_listen_addr(options, options->queued_listen_addrs[i], | 827 | qla = &options->queued_listen_addrs[i]; |
708 | options->queued_listen_ports[i]); | 828 | add_listen_addr(options, qla->addr, qla->rdomain, qla->port); |
709 | free(options->queued_listen_addrs[i]); | 829 | free(qla->addr); |
710 | options->queued_listen_addrs[i] = NULL; | 830 | free(qla->rdomain); |
711 | } | 831 | } |
712 | free(options->queued_listen_addrs); | 832 | free(options->queued_listen_addrs); |
713 | options->queued_listen_addrs = NULL; | 833 | options->queued_listen_addrs = NULL; |
714 | free(options->queued_listen_ports); | ||
715 | options->queued_listen_ports = NULL; | ||
716 | options->num_queued_listens = 0; | 834 | options->num_queued_listens = 0; |
717 | } | 835 | } |
718 | 836 | ||
@@ -766,6 +884,7 @@ get_connection_info(int populate, int use_dns) | |||
766 | ci.address = ssh_remote_ipaddr(ssh); | 884 | ci.address = ssh_remote_ipaddr(ssh); |
767 | ci.laddress = ssh_local_ipaddr(ssh); | 885 | ci.laddress = ssh_local_ipaddr(ssh); |
768 | ci.lport = ssh_local_port(ssh); | 886 | ci.lport = ssh_local_port(ssh); |
887 | ci.rdomain = ssh_packet_rdomain_in(ssh); | ||
769 | return &ci; | 888 | return &ci; |
770 | } | 889 | } |
771 | 890 | ||
@@ -830,6 +949,13 @@ out: | |||
830 | return result; | 949 | return result; |
831 | } | 950 | } |
832 | 951 | ||
952 | static void | ||
953 | match_test_missing_fatal(const char *criteria, const char *attrib) | ||
954 | { | ||
955 | fatal("'Match %s' in configuration but '%s' not in connection " | ||
956 | "test specification.", criteria, attrib); | ||
957 | } | ||
958 | |||
833 | /* | 959 | /* |
834 | * All of the attributes on a single Match line are ANDed together, so we need | 960 | * All of the attributes on a single Match line are ANDed together, so we need |
835 | * to check every attribute and set the result to zero if any attribute does | 961 | * to check every attribute and set the result to zero if any attribute does |
@@ -867,20 +993,24 @@ match_cfg_line(char **condition, int line, struct connection_info *ci) | |||
867 | return -1; | 993 | return -1; |
868 | } | 994 | } |
869 | if (strcasecmp(attrib, "user") == 0) { | 995 | if (strcasecmp(attrib, "user") == 0) { |
870 | if (ci == NULL || ci->user == NULL) { | 996 | if (ci == NULL) { |
871 | result = 0; | 997 | result = 0; |
872 | continue; | 998 | continue; |
873 | } | 999 | } |
1000 | if (ci->user == NULL) | ||
1001 | match_test_missing_fatal("User", "user"); | ||
874 | if (match_pattern_list(ci->user, arg, 0) != 1) | 1002 | if (match_pattern_list(ci->user, arg, 0) != 1) |
875 | result = 0; | 1003 | result = 0; |
876 | else | 1004 | else |
877 | debug("user %.100s matched 'User %.100s' at " | 1005 | debug("user %.100s matched 'User %.100s' at " |
878 | "line %d", ci->user, arg, line); | 1006 | "line %d", ci->user, arg, line); |
879 | } else if (strcasecmp(attrib, "group") == 0) { | 1007 | } else if (strcasecmp(attrib, "group") == 0) { |
880 | if (ci == NULL || ci->user == NULL) { | 1008 | if (ci == NULL) { |
881 | result = 0; | 1009 | result = 0; |
882 | continue; | 1010 | continue; |
883 | } | 1011 | } |
1012 | if (ci->user == NULL) | ||
1013 | match_test_missing_fatal("Group", "user"); | ||
884 | switch (match_cfg_line_group(arg, line, ci->user)) { | 1014 | switch (match_cfg_line_group(arg, line, ci->user)) { |
885 | case -1: | 1015 | case -1: |
886 | return -1; | 1016 | return -1; |
@@ -888,20 +1018,24 @@ match_cfg_line(char **condition, int line, struct connection_info *ci) | |||
888 | result = 0; | 1018 | result = 0; |
889 | } | 1019 | } |
890 | } else if (strcasecmp(attrib, "host") == 0) { | 1020 | } else if (strcasecmp(attrib, "host") == 0) { |
891 | if (ci == NULL || ci->host == NULL) { | 1021 | if (ci == NULL) { |
892 | result = 0; | 1022 | result = 0; |
893 | continue; | 1023 | continue; |
894 | } | 1024 | } |
1025 | if (ci->host == NULL) | ||
1026 | match_test_missing_fatal("Host", "host"); | ||
895 | if (match_hostname(ci->host, arg) != 1) | 1027 | if (match_hostname(ci->host, arg) != 1) |
896 | result = 0; | 1028 | result = 0; |
897 | else | 1029 | else |
898 | debug("connection from %.100s matched 'Host " | 1030 | debug("connection from %.100s matched 'Host " |
899 | "%.100s' at line %d", ci->host, arg, line); | 1031 | "%.100s' at line %d", ci->host, arg, line); |
900 | } else if (strcasecmp(attrib, "address") == 0) { | 1032 | } else if (strcasecmp(attrib, "address") == 0) { |
901 | if (ci == NULL || ci->address == NULL) { | 1033 | if (ci == NULL) { |
902 | result = 0; | 1034 | result = 0; |
903 | continue; | 1035 | continue; |
904 | } | 1036 | } |
1037 | if (ci->address == NULL) | ||
1038 | match_test_missing_fatal("Address", "addr"); | ||
905 | switch (addr_match_list(ci->address, arg)) { | 1039 | switch (addr_match_list(ci->address, arg)) { |
906 | case 1: | 1040 | case 1: |
907 | debug("connection from %.100s matched 'Address " | 1041 | debug("connection from %.100s matched 'Address " |
@@ -915,10 +1049,13 @@ match_cfg_line(char **condition, int line, struct connection_info *ci) | |||
915 | return -1; | 1049 | return -1; |
916 | } | 1050 | } |
917 | } else if (strcasecmp(attrib, "localaddress") == 0){ | 1051 | } else if (strcasecmp(attrib, "localaddress") == 0){ |
918 | if (ci == NULL || ci->laddress == NULL) { | 1052 | if (ci == NULL) { |
919 | result = 0; | 1053 | result = 0; |
920 | continue; | 1054 | continue; |
921 | } | 1055 | } |
1056 | if (ci->laddress == NULL) | ||
1057 | match_test_missing_fatal("LocalAddress", | ||
1058 | "laddr"); | ||
922 | switch (addr_match_list(ci->laddress, arg)) { | 1059 | switch (addr_match_list(ci->laddress, arg)) { |
923 | case 1: | 1060 | case 1: |
924 | debug("connection from %.100s matched " | 1061 | debug("connection from %.100s matched " |
@@ -938,10 +1075,12 @@ match_cfg_line(char **condition, int line, struct connection_info *ci) | |||
938 | arg); | 1075 | arg); |
939 | return -1; | 1076 | return -1; |
940 | } | 1077 | } |
941 | if (ci == NULL || ci->lport == 0) { | 1078 | if (ci == NULL) { |
942 | result = 0; | 1079 | result = 0; |
943 | continue; | 1080 | continue; |
944 | } | 1081 | } |
1082 | if (ci->lport == 0) | ||
1083 | match_test_missing_fatal("LocalPort", "lport"); | ||
945 | /* TODO support port lists */ | 1084 | /* TODO support port lists */ |
946 | if (port == ci->lport) | 1085 | if (port == ci->lport) |
947 | debug("connection from %.100s matched " | 1086 | debug("connection from %.100s matched " |
@@ -949,6 +1088,16 @@ match_cfg_line(char **condition, int line, struct connection_info *ci) | |||
949 | ci->laddress, port, line); | 1088 | ci->laddress, port, line); |
950 | else | 1089 | else |
951 | result = 0; | 1090 | result = 0; |
1091 | } else if (strcasecmp(attrib, "rdomain") == 0) { | ||
1092 | if (ci == NULL || ci->rdomain == NULL) { | ||
1093 | result = 0; | ||
1094 | continue; | ||
1095 | } | ||
1096 | if (match_pattern_list(ci->rdomain, arg, 0) != 1) | ||
1097 | result = 0; | ||
1098 | else | ||
1099 | debug("user %.100s matched 'RDomain %.100s' at " | ||
1100 | "line %d", ci->rdomain, arg, line); | ||
952 | } else { | 1101 | } else { |
953 | error("Unsupported Match attribute %s", attrib); | 1102 | error("Unsupported Match attribute %s", attrib); |
954 | return -1; | 1103 | return -1; |
@@ -971,6 +1120,11 @@ struct multistate { | |||
971 | char *key; | 1120 | char *key; |
972 | int value; | 1121 | int value; |
973 | }; | 1122 | }; |
1123 | static const struct multistate multistate_flag[] = { | ||
1124 | { "yes", 1 }, | ||
1125 | { "no", 0 }, | ||
1126 | { NULL, -1 } | ||
1127 | }; | ||
974 | static const struct multistate multistate_addressfamily[] = { | 1128 | static const struct multistate multistate_addressfamily[] = { |
975 | { "inet", AF_INET }, | 1129 | { "inet", AF_INET }, |
976 | { "inet6", AF_INET6 }, | 1130 | { "inet6", AF_INET6 }, |
@@ -1020,6 +1174,7 @@ process_server_config_line(ServerOptions *options, char *line, | |||
1020 | size_t len; | 1174 | size_t len; |
1021 | long long val64; | 1175 | long long val64; |
1022 | const struct multistate *multistate_ptr; | 1176 | const struct multistate *multistate_ptr; |
1177 | const char *errstr; | ||
1023 | 1178 | ||
1024 | /* Strip trailing whitespace. Allow \f (form feed) at EOL only */ | 1179 | /* Strip trailing whitespace. Allow \f (form feed) at EOL only */ |
1025 | if ((len = strlen(line)) == 0) | 1180 | if ((len = strlen(line)) == 0) |
@@ -1107,20 +1262,33 @@ process_server_config_line(ServerOptions *options, char *line, | |||
1107 | /* check for bare IPv6 address: no "[]" and 2 or more ":" */ | 1262 | /* check for bare IPv6 address: no "[]" and 2 or more ":" */ |
1108 | if (strchr(arg, '[') == NULL && (p = strchr(arg, ':')) != NULL | 1263 | if (strchr(arg, '[') == NULL && (p = strchr(arg, ':')) != NULL |
1109 | && strchr(p+1, ':') != NULL) { | 1264 | && strchr(p+1, ':') != NULL) { |
1110 | queue_listen_addr(options, arg, 0); | ||
1111 | break; | ||
1112 | } | ||
1113 | p = hpdelim(&arg); | ||
1114 | if (p == NULL) | ||
1115 | fatal("%s line %d: bad address:port usage", | ||
1116 | filename, linenum); | ||
1117 | p = cleanhostname(p); | ||
1118 | if (arg == NULL) | ||
1119 | port = 0; | 1265 | port = 0; |
1120 | else if ((port = a2port(arg)) <= 0) | 1266 | p = arg; |
1121 | fatal("%s line %d: bad port number", filename, linenum); | 1267 | } else { |
1268 | p = hpdelim(&arg); | ||
1269 | if (p == NULL) | ||
1270 | fatal("%s line %d: bad address:port usage", | ||
1271 | filename, linenum); | ||
1272 | p = cleanhostname(p); | ||
1273 | if (arg == NULL) | ||
1274 | port = 0; | ||
1275 | else if ((port = a2port(arg)) <= 0) | ||
1276 | fatal("%s line %d: bad port number", | ||
1277 | filename, linenum); | ||
1278 | } | ||
1279 | /* Optional routing table */ | ||
1280 | arg2 = NULL; | ||
1281 | if ((arg = strdelim(&cp)) != NULL) { | ||
1282 | if (strcmp(arg, "rdomain") != 0 || | ||
1283 | (arg2 = strdelim(&cp)) == NULL) | ||
1284 | fatal("%s line %d: bad ListenAddress syntax", | ||
1285 | filename, linenum); | ||
1286 | if (!valid_rdomain(arg2)) | ||
1287 | fatal("%s line %d: bad routing domain", | ||
1288 | filename, linenum); | ||
1289 | } | ||
1122 | 1290 | ||
1123 | queue_listen_addr(options, p, port); | 1291 | queue_listen_addr(options, p, arg2, port); |
1124 | 1292 | ||
1125 | break; | 1293 | break; |
1126 | 1294 | ||
@@ -1147,22 +1315,12 @@ process_server_config_line(ServerOptions *options, char *line, | |||
1147 | break; | 1315 | break; |
1148 | 1316 | ||
1149 | case sHostKeyFile: | 1317 | case sHostKeyFile: |
1150 | intptr = &options->num_host_key_files; | ||
1151 | if (*intptr >= MAX_HOSTKEYS) | ||
1152 | fatal("%s line %d: too many host keys specified (max %d).", | ||
1153 | filename, linenum, MAX_HOSTKEYS); | ||
1154 | charptr = &options->host_key_files[*intptr]; | ||
1155 | parse_filename: | ||
1156 | arg = strdelim(&cp); | 1318 | arg = strdelim(&cp); |
1157 | if (!arg || *arg == '\0') | 1319 | if (!arg || *arg == '\0') |
1158 | fatal("%s line %d: missing file name.", | 1320 | fatal("%s line %d: missing file name.", |
1159 | filename, linenum); | 1321 | filename, linenum); |
1160 | if (*activep && *charptr == NULL) { | 1322 | if (*activep) |
1161 | *charptr = derelativise_path(arg); | 1323 | servconf_add_hostkey(filename, linenum, options, arg); |
1162 | /* increase optional counter */ | ||
1163 | if (intptr != NULL) | ||
1164 | *intptr = *intptr + 1; | ||
1165 | } | ||
1166 | break; | 1324 | break; |
1167 | 1325 | ||
1168 | case sHostKeyAgent: | 1326 | case sHostKeyAgent: |
@@ -1177,17 +1335,28 @@ process_server_config_line(ServerOptions *options, char *line, | |||
1177 | break; | 1335 | break; |
1178 | 1336 | ||
1179 | case sHostCertificate: | 1337 | case sHostCertificate: |
1180 | intptr = &options->num_host_cert_files; | 1338 | arg = strdelim(&cp); |
1181 | if (*intptr >= MAX_HOSTKEYS) | 1339 | if (!arg || *arg == '\0') |
1182 | fatal("%s line %d: too many host certificates " | 1340 | fatal("%s line %d: missing file name.", |
1183 | "specified (max %d).", filename, linenum, | 1341 | filename, linenum); |
1184 | MAX_HOSTCERTS); | 1342 | if (*activep) |
1185 | charptr = &options->host_cert_files[*intptr]; | 1343 | servconf_add_hostcert(filename, linenum, options, arg); |
1186 | goto parse_filename; | 1344 | break; |
1187 | 1345 | ||
1188 | case sPidFile: | 1346 | case sPidFile: |
1189 | charptr = &options->pid_file; | 1347 | charptr = &options->pid_file; |
1190 | goto parse_filename; | 1348 | parse_filename: |
1349 | arg = strdelim(&cp); | ||
1350 | if (!arg || *arg == '\0') | ||
1351 | fatal("%s line %d: missing file name.", | ||
1352 | filename, linenum); | ||
1353 | if (*activep && *charptr == NULL) { | ||
1354 | *charptr = derelativise_path(arg); | ||
1355 | /* increase optional counter */ | ||
1356 | if (intptr != NULL) | ||
1357 | *intptr = *intptr + 1; | ||
1358 | } | ||
1359 | break; | ||
1191 | 1360 | ||
1192 | case sPermitRootLogin: | 1361 | case sPermitRootLogin: |
1193 | intptr = &options->permit_root_login; | 1362 | intptr = &options->permit_root_login; |
@@ -1197,21 +1366,8 @@ process_server_config_line(ServerOptions *options, char *line, | |||
1197 | case sIgnoreRhosts: | 1366 | case sIgnoreRhosts: |
1198 | intptr = &options->ignore_rhosts; | 1367 | intptr = &options->ignore_rhosts; |
1199 | parse_flag: | 1368 | parse_flag: |
1200 | arg = strdelim(&cp); | 1369 | multistate_ptr = multistate_flag; |
1201 | if (!arg || *arg == '\0') | 1370 | goto parse_multistate; |
1202 | fatal("%s line %d: missing yes/no argument.", | ||
1203 | filename, linenum); | ||
1204 | value = 0; /* silence compiler */ | ||
1205 | if (strcmp(arg, "yes") == 0) | ||
1206 | value = 1; | ||
1207 | else if (strcmp(arg, "no") == 0) | ||
1208 | value = 0; | ||
1209 | else | ||
1210 | fatal("%s line %d: Bad yes/no argument: %s", | ||
1211 | filename, linenum, arg); | ||
1212 | if (*activep && *intptr == -1) | ||
1213 | *intptr = value; | ||
1214 | break; | ||
1215 | 1371 | ||
1216 | case sIgnoreUserKnownHosts: | 1372 | case sIgnoreUserKnownHosts: |
1217 | intptr = &options->ignore_user_known_hosts; | 1373 | intptr = &options->ignore_user_known_hosts; |
@@ -1316,10 +1472,9 @@ process_server_config_line(ServerOptions *options, char *line, | |||
1316 | intptr = &options->x11_display_offset; | 1472 | intptr = &options->x11_display_offset; |
1317 | parse_int: | 1473 | parse_int: |
1318 | arg = strdelim(&cp); | 1474 | arg = strdelim(&cp); |
1319 | if (!arg || *arg == '\0') | 1475 | if ((errstr = atoi_err(arg, &value)) != NULL) |
1320 | fatal("%s line %d: missing integer value.", | 1476 | fatal("%s line %d: integer value %s.", |
1321 | filename, linenum); | 1477 | filename, linenum, errstr); |
1322 | value = atoi(arg); | ||
1323 | if (*activep && *intptr == -1) | 1478 | if (*activep && *intptr == -1) |
1324 | *intptr = value; | 1479 | *intptr = value; |
1325 | break; | 1480 | break; |
@@ -1439,55 +1594,47 @@ process_server_config_line(ServerOptions *options, char *line, | |||
1439 | 1594 | ||
1440 | case sAllowUsers: | 1595 | case sAllowUsers: |
1441 | while ((arg = strdelim(&cp)) && *arg != '\0') { | 1596 | while ((arg = strdelim(&cp)) && *arg != '\0') { |
1442 | if (options->num_allow_users >= MAX_ALLOW_USERS) | ||
1443 | fatal("%s line %d: too many allow users.", | ||
1444 | filename, linenum); | ||
1445 | if (match_user(NULL, NULL, NULL, arg) == -1) | 1597 | if (match_user(NULL, NULL, NULL, arg) == -1) |
1446 | fatal("%s line %d: invalid AllowUsers pattern: " | 1598 | fatal("%s line %d: invalid AllowUsers pattern: " |
1447 | "\"%.100s\"", filename, linenum, arg); | 1599 | "\"%.100s\"", filename, linenum, arg); |
1448 | if (!*activep) | 1600 | if (!*activep) |
1449 | continue; | 1601 | continue; |
1450 | options->allow_users[options->num_allow_users++] = | 1602 | array_append(filename, linenum, "AllowUsers", |
1451 | xstrdup(arg); | 1603 | &options->allow_users, &options->num_allow_users, |
1604 | arg); | ||
1452 | } | 1605 | } |
1453 | break; | 1606 | break; |
1454 | 1607 | ||
1455 | case sDenyUsers: | 1608 | case sDenyUsers: |
1456 | while ((arg = strdelim(&cp)) && *arg != '\0') { | 1609 | while ((arg = strdelim(&cp)) && *arg != '\0') { |
1457 | if (options->num_deny_users >= MAX_DENY_USERS) | ||
1458 | fatal("%s line %d: too many deny users.", | ||
1459 | filename, linenum); | ||
1460 | if (match_user(NULL, NULL, NULL, arg) == -1) | 1610 | if (match_user(NULL, NULL, NULL, arg) == -1) |
1461 | fatal("%s line %d: invalid DenyUsers pattern: " | 1611 | fatal("%s line %d: invalid DenyUsers pattern: " |
1462 | "\"%.100s\"", filename, linenum, arg); | 1612 | "\"%.100s\"", filename, linenum, arg); |
1463 | if (!*activep) | 1613 | if (!*activep) |
1464 | continue; | 1614 | continue; |
1465 | options->deny_users[options->num_deny_users++] = | 1615 | array_append(filename, linenum, "DenyUsers", |
1466 | xstrdup(arg); | 1616 | &options->deny_users, &options->num_deny_users, |
1617 | arg); | ||
1467 | } | 1618 | } |
1468 | break; | 1619 | break; |
1469 | 1620 | ||
1470 | case sAllowGroups: | 1621 | case sAllowGroups: |
1471 | while ((arg = strdelim(&cp)) && *arg != '\0') { | 1622 | while ((arg = strdelim(&cp)) && *arg != '\0') { |
1472 | if (options->num_allow_groups >= MAX_ALLOW_GROUPS) | ||
1473 | fatal("%s line %d: too many allow groups.", | ||
1474 | filename, linenum); | ||
1475 | if (!*activep) | 1623 | if (!*activep) |
1476 | continue; | 1624 | continue; |
1477 | options->allow_groups[options->num_allow_groups++] = | 1625 | array_append(filename, linenum, "AllowGroups", |
1478 | xstrdup(arg); | 1626 | &options->allow_groups, &options->num_allow_groups, |
1627 | arg); | ||
1479 | } | 1628 | } |
1480 | break; | 1629 | break; |
1481 | 1630 | ||
1482 | case sDenyGroups: | 1631 | case sDenyGroups: |
1483 | while ((arg = strdelim(&cp)) && *arg != '\0') { | 1632 | while ((arg = strdelim(&cp)) && *arg != '\0') { |
1484 | if (options->num_deny_groups >= MAX_DENY_GROUPS) | ||
1485 | fatal("%s line %d: too many deny groups.", | ||
1486 | filename, linenum); | ||
1487 | if (!*activep) | 1633 | if (!*activep) |
1488 | continue; | 1634 | continue; |
1489 | options->deny_groups[options->num_deny_groups++] = | 1635 | array_append(filename, linenum, "DenyGroups", |
1490 | xstrdup(arg); | 1636 | &options->deny_groups, &options->num_deny_groups, |
1637 | arg); | ||
1491 | } | 1638 | } |
1492 | break; | 1639 | break; |
1493 | 1640 | ||
@@ -1606,14 +1753,12 @@ process_server_config_line(ServerOptions *options, char *line, | |||
1606 | case sAuthorizedKeysFile: | 1753 | case sAuthorizedKeysFile: |
1607 | if (*activep && options->num_authkeys_files == 0) { | 1754 | if (*activep && options->num_authkeys_files == 0) { |
1608 | while ((arg = strdelim(&cp)) && *arg != '\0') { | 1755 | while ((arg = strdelim(&cp)) && *arg != '\0') { |
1609 | if (options->num_authkeys_files >= | 1756 | arg = tilde_expand_filename(arg, getuid()); |
1610 | MAX_AUTHKEYS_FILES) | 1757 | array_append(filename, linenum, |
1611 | fatal("%s line %d: " | 1758 | "AuthorizedKeysFile", |
1612 | "too many authorized keys files.", | 1759 | &options->authorized_keys_files, |
1613 | filename, linenum); | 1760 | &options->num_authkeys_files, arg); |
1614 | options->authorized_keys_files[ | 1761 | free(arg); |
1615 | options->num_authkeys_files++] = | ||
1616 | tilde_expand_filename(arg, getuid()); | ||
1617 | } | 1762 | } |
1618 | } | 1763 | } |
1619 | return 0; | 1764 | return 0; |
@@ -1645,13 +1790,11 @@ process_server_config_line(ServerOptions *options, char *line, | |||
1645 | if (strchr(arg, '=') != NULL) | 1790 | if (strchr(arg, '=') != NULL) |
1646 | fatal("%s line %d: Invalid environment name.", | 1791 | fatal("%s line %d: Invalid environment name.", |
1647 | filename, linenum); | 1792 | filename, linenum); |
1648 | if (options->num_accept_env >= MAX_ACCEPT_ENV) | ||
1649 | fatal("%s line %d: too many allow env.", | ||
1650 | filename, linenum); | ||
1651 | if (!*activep) | 1793 | if (!*activep) |
1652 | continue; | 1794 | continue; |
1653 | options->accept_env[options->num_accept_env++] = | 1795 | array_append(filename, linenum, "AcceptEnv", |
1654 | xstrdup(arg); | 1796 | &options->accept_env, &options->num_accept_env, |
1797 | arg); | ||
1655 | } | 1798 | } |
1656 | break; | 1799 | break; |
1657 | 1800 | ||
@@ -1711,15 +1854,12 @@ process_server_config_line(ServerOptions *options, char *line, | |||
1711 | fatal("%s line %d: bad port number in " | 1854 | fatal("%s line %d: bad port number in " |
1712 | "PermitOpen", filename, linenum); | 1855 | "PermitOpen", filename, linenum); |
1713 | if (*activep && value == 0) { | 1856 | if (*activep && value == 0) { |
1714 | options->permitted_opens = xrecallocarray( | 1857 | array_append(filename, linenum, |
1715 | options->permitted_opens, | 1858 | "PermitOpen", |
1716 | options->num_permitted_opens, | 1859 | &options->permitted_opens, |
1717 | options->num_permitted_opens + 1, | 1860 | &options->num_permitted_opens, arg2); |
1718 | sizeof(*options->permitted_opens)); | 1861 | } |
1719 | i = options->num_permitted_opens++; | 1862 | free(arg2); |
1720 | options->permitted_opens[i] = arg2; | ||
1721 | } else | ||
1722 | free(arg2); | ||
1723 | } | 1863 | } |
1724 | break; | 1864 | break; |
1725 | 1865 | ||
@@ -1842,11 +1982,6 @@ process_server_config_line(ServerOptions *options, char *line, | |||
1842 | value = 0; /* seen "any" pseudo-method */ | 1982 | value = 0; /* seen "any" pseudo-method */ |
1843 | value2 = 0; /* sucessfully parsed any method */ | 1983 | value2 = 0; /* sucessfully parsed any method */ |
1844 | while ((arg = strdelim(&cp)) && *arg != '\0') { | 1984 | while ((arg = strdelim(&cp)) && *arg != '\0') { |
1845 | if (options->num_auth_methods >= | ||
1846 | MAX_AUTH_METHODS) | ||
1847 | fatal("%s line %d: " | ||
1848 | "too many authentication methods.", | ||
1849 | filename, linenum); | ||
1850 | if (strcmp(arg, "any") == 0) { | 1985 | if (strcmp(arg, "any") == 0) { |
1851 | if (options->num_auth_methods > 0) { | 1986 | if (options->num_auth_methods > 0) { |
1852 | fatal("%s line %d: \"any\" " | 1987 | fatal("%s line %d: \"any\" " |
@@ -1867,8 +2002,10 @@ process_server_config_line(ServerOptions *options, char *line, | |||
1867 | value2 = 1; | 2002 | value2 = 1; |
1868 | if (!*activep) | 2003 | if (!*activep) |
1869 | continue; | 2004 | continue; |
1870 | options->auth_methods[ | 2005 | array_append(filename, linenum, |
1871 | options->num_auth_methods++] = xstrdup(arg); | 2006 | "AuthenticationMethods", |
2007 | &options->auth_methods, | ||
2008 | &options->num_auth_methods, arg); | ||
1872 | } | 2009 | } |
1873 | if (value2 == 0) { | 2010 | if (value2 == 0) { |
1874 | fatal("%s line %d: no AuthenticationMethods " | 2011 | fatal("%s line %d: no AuthenticationMethods " |
@@ -1910,9 +2047,23 @@ process_server_config_line(ServerOptions *options, char *line, | |||
1910 | intptr = &options->expose_userauth_info; | 2047 | intptr = &options->expose_userauth_info; |
1911 | goto parse_flag; | 2048 | goto parse_flag; |
1912 | 2049 | ||
2050 | case sRDomain: | ||
2051 | charptr = &options->routing_domain; | ||
2052 | arg = strdelim(&cp); | ||
2053 | if (!arg || *arg == '\0') | ||
2054 | fatal("%.200s line %d: Missing argument.", | ||
2055 | filename, linenum); | ||
2056 | if (strcasecmp(arg, "none") != 0 && strcmp(arg, "%D") != 0 && | ||
2057 | !valid_rdomain(arg)) | ||
2058 | fatal("%s line %d: bad routing domain", | ||
2059 | filename, linenum); | ||
2060 | if (*activep && *charptr == NULL) | ||
2061 | *charptr = xstrdup(arg); | ||
2062 | break; | ||
2063 | |||
1913 | case sDebianBanner: | 2064 | case sDebianBanner: |
1914 | intptr = &options->debian_banner; | 2065 | intptr = &options->debian_banner; |
1915 | goto parse_int; | 2066 | goto parse_flag; |
1916 | 2067 | ||
1917 | case sDeprecated: | 2068 | case sDeprecated: |
1918 | case sIgnore: | 2069 | case sIgnore: |
@@ -1994,6 +2145,8 @@ int parse_server_match_testspec(struct connection_info *ci, char *spec) | |||
1994 | ci->user = xstrdup(p + 5); | 2145 | ci->user = xstrdup(p + 5); |
1995 | } else if (strncmp(p, "laddr=", 6) == 0) { | 2146 | } else if (strncmp(p, "laddr=", 6) == 0) { |
1996 | ci->laddress = xstrdup(p + 6); | 2147 | ci->laddress = xstrdup(p + 6); |
2148 | } else if (strncmp(p, "rdomain=", 8) == 0) { | ||
2149 | ci->rdomain = xstrdup(p + 8); | ||
1997 | } else if (strncmp(p, "lport=", 6) == 0) { | 2150 | } else if (strncmp(p, "lport=", 6) == 0) { |
1998 | ci->lport = a2port(p + 6); | 2151 | ci->lport = a2port(p + 6); |
1999 | if (ci->lport == -1) { | 2152 | if (ci->lport == -1) { |
@@ -2011,19 +2164,6 @@ int parse_server_match_testspec(struct connection_info *ci, char *spec) | |||
2011 | } | 2164 | } |
2012 | 2165 | ||
2013 | /* | 2166 | /* |
2014 | * returns 1 for a complete spec, 0 for partial spec and -1 for an | ||
2015 | * empty spec. | ||
2016 | */ | ||
2017 | int server_match_spec_complete(struct connection_info *ci) | ||
2018 | { | ||
2019 | if (ci->user && ci->host && ci->address) | ||
2020 | return 1; /* complete */ | ||
2021 | if (!ci->user && !ci->host && !ci->address) | ||
2022 | return -1; /* empty */ | ||
2023 | return 0; /* partial */ | ||
2024 | } | ||
2025 | |||
2026 | /* | ||
2027 | * Copy any supported values that are set. | 2167 | * Copy any supported values that are set. |
2028 | * | 2168 | * |
2029 | * If the preauth flag is set, we do not bother copying the string or | 2169 | * If the preauth flag is set, we do not bother copying the string or |
@@ -2088,17 +2228,16 @@ copy_set_server_options(ServerOptions *dst, ServerOptions *src, int preauth) | |||
2088 | dst->n = src->n; \ | 2228 | dst->n = src->n; \ |
2089 | } \ | 2229 | } \ |
2090 | } while(0) | 2230 | } while(0) |
2091 | #define M_CP_STRARRAYOPT(n, num_n) do {\ | 2231 | #define M_CP_STRARRAYOPT(s, num_s) do {\ |
2092 | if (src->num_n != 0) { \ | 2232 | u_int i; \ |
2093 | for (dst->num_n = 0; dst->num_n < src->num_n; dst->num_n++) \ | 2233 | if (src->num_s != 0) { \ |
2094 | dst->n[dst->num_n] = xstrdup(src->n[dst->num_n]); \ | 2234 | for (i = 0; i < dst->num_s; i++) \ |
2095 | } \ | 2235 | free(dst->s[i]); \ |
2096 | } while(0) | 2236 | free(dst->s); \ |
2097 | #define M_CP_STRARRAYOPT_ALLOC(n, num_n) do { \ | 2237 | dst->s = xcalloc(src->num_s, sizeof(*dst->s)); \ |
2098 | if (src->num_n != 0) { \ | 2238 | for (i = 0; i < src->num_s; i++) \ |
2099 | dst->n = xcalloc(src->num_n, sizeof(*dst->n)); \ | 2239 | dst->s[i] = xstrdup(src->s[i]); \ |
2100 | M_CP_STRARRAYOPT(n, num_n); \ | 2240 | dst->num_s = src->num_s; \ |
2101 | dst->num_n = src->num_n; \ | ||
2102 | } \ | 2241 | } \ |
2103 | } while(0) | 2242 | } while(0) |
2104 | 2243 | ||
@@ -2131,7 +2270,6 @@ copy_set_server_options(ServerOptions *dst, ServerOptions *src, int preauth) | |||
2131 | #undef M_CP_INTOPT | 2270 | #undef M_CP_INTOPT |
2132 | #undef M_CP_STROPT | 2271 | #undef M_CP_STROPT |
2133 | #undef M_CP_STRARRAYOPT | 2272 | #undef M_CP_STRARRAYOPT |
2134 | #undef M_CP_STRARRAYOPT_ALLOC | ||
2135 | 2273 | ||
2136 | void | 2274 | void |
2137 | parse_server_config(ServerOptions *options, const char *filename, Buffer *conf, | 2275 | parse_server_config(ServerOptions *options, const char *filename, Buffer *conf, |
@@ -2262,45 +2400,61 @@ dump_cfg_strarray_oneline(ServerOpCodes code, u_int count, char **vals) | |||
2262 | printf("\n"); | 2400 | printf("\n"); |
2263 | } | 2401 | } |
2264 | 2402 | ||
2265 | void | 2403 | static char * |
2266 | dump_config(ServerOptions *o) | 2404 | format_listen_addrs(struct listenaddr *la) |
2267 | { | 2405 | { |
2268 | u_int i; | 2406 | int r; |
2269 | int ret; | ||
2270 | struct addrinfo *ai; | 2407 | struct addrinfo *ai; |
2271 | char addr[NI_MAXHOST], port[NI_MAXSERV], *s = NULL; | 2408 | char addr[NI_MAXHOST], port[NI_MAXSERV]; |
2272 | char *laddr1 = xstrdup(""), *laddr2 = NULL; | 2409 | char *laddr1 = xstrdup(""), *laddr2 = NULL; |
2273 | 2410 | ||
2274 | /* these are usually at the top of the config */ | ||
2275 | for (i = 0; i < o->num_ports; i++) | ||
2276 | printf("port %d\n", o->ports[i]); | ||
2277 | dump_cfg_fmtint(sAddressFamily, o->address_family); | ||
2278 | |||
2279 | /* | 2411 | /* |
2280 | * ListenAddress must be after Port. add_one_listen_addr pushes | 2412 | * ListenAddress must be after Port. add_one_listen_addr pushes |
2281 | * addresses onto a stack, so to maintain ordering we need to | 2413 | * addresses onto a stack, so to maintain ordering we need to |
2282 | * print these in reverse order. | 2414 | * print these in reverse order. |
2283 | */ | 2415 | */ |
2284 | for (ai = o->listen_addrs; ai; ai = ai->ai_next) { | 2416 | for (ai = la->addrs; ai; ai = ai->ai_next) { |
2285 | if ((ret = getnameinfo(ai->ai_addr, ai->ai_addrlen, addr, | 2417 | if ((r = getnameinfo(ai->ai_addr, ai->ai_addrlen, addr, |
2286 | sizeof(addr), port, sizeof(port), | 2418 | sizeof(addr), port, sizeof(port), |
2287 | NI_NUMERICHOST|NI_NUMERICSERV)) != 0) { | 2419 | NI_NUMERICHOST|NI_NUMERICSERV)) != 0) { |
2288 | error("getnameinfo failed: %.100s", | 2420 | error("getnameinfo: %.100s", ssh_gai_strerror(r)); |
2289 | (ret != EAI_SYSTEM) ? gai_strerror(ret) : | 2421 | continue; |
2290 | strerror(errno)); | 2422 | } |
2423 | laddr2 = laddr1; | ||
2424 | if (ai->ai_family == AF_INET6) { | ||
2425 | xasprintf(&laddr1, "listenaddress [%s]:%s%s%s\n%s", | ||
2426 | addr, port, | ||
2427 | la->rdomain == NULL ? "" : " rdomain ", | ||
2428 | la->rdomain == NULL ? "" : la->rdomain, | ||
2429 | laddr2); | ||
2291 | } else { | 2430 | } else { |
2292 | laddr2 = laddr1; | 2431 | xasprintf(&laddr1, "listenaddress %s:%s%s%s\n%s", |
2293 | if (ai->ai_family == AF_INET6) | 2432 | addr, port, |
2294 | xasprintf(&laddr1, "listenaddress [%s]:%s\n%s", | 2433 | la->rdomain == NULL ? "" : " rdomain ", |
2295 | addr, port, laddr2); | 2434 | la->rdomain == NULL ? "" : la->rdomain, |
2296 | else | 2435 | laddr2); |
2297 | xasprintf(&laddr1, "listenaddress %s:%s\n%s", | ||
2298 | addr, port, laddr2); | ||
2299 | free(laddr2); | ||
2300 | } | 2436 | } |
2437 | free(laddr2); | ||
2438 | } | ||
2439 | return laddr1; | ||
2440 | } | ||
2441 | |||
2442 | void | ||
2443 | dump_config(ServerOptions *o) | ||
2444 | { | ||
2445 | char *s; | ||
2446 | u_int i; | ||
2447 | |||
2448 | /* these are usually at the top of the config */ | ||
2449 | for (i = 0; i < o->num_ports; i++) | ||
2450 | printf("port %d\n", o->ports[i]); | ||
2451 | dump_cfg_fmtint(sAddressFamily, o->address_family); | ||
2452 | |||
2453 | for (i = 0; i < o->num_listen_addrs; i++) { | ||
2454 | s = format_listen_addrs(&o->listen_addrs[i]); | ||
2455 | printf("%s", s); | ||
2456 | free(s); | ||
2301 | } | 2457 | } |
2302 | printf("%s", laddr1); | ||
2303 | free(laddr1); | ||
2304 | 2458 | ||
2305 | /* integer arguments */ | 2459 | /* integer arguments */ |
2306 | #ifdef USE_PAM | 2460 | #ifdef USE_PAM |
@@ -2392,6 +2546,7 @@ dump_config(ServerOptions *o) | |||
2392 | o->hostkeyalgorithms : KEX_DEFAULT_PK_ALG); | 2546 | o->hostkeyalgorithms : KEX_DEFAULT_PK_ALG); |
2393 | dump_cfg_string(sPubkeyAcceptedKeyTypes, o->pubkey_key_types ? | 2547 | dump_cfg_string(sPubkeyAcceptedKeyTypes, o->pubkey_key_types ? |
2394 | o->pubkey_key_types : KEX_DEFAULT_PK_ALG); | 2548 | o->pubkey_key_types : KEX_DEFAULT_PK_ALG); |
2549 | dump_cfg_string(sRDomain, o->routing_domain); | ||
2395 | 2550 | ||
2396 | /* string arguments requiring a lookup */ | 2551 | /* string arguments requiring a lookup */ |
2397 | dump_cfg_string(sLogLevel, log_level_name(o->log_level)); | 2552 | dump_cfg_string(sLogLevel, log_level_name(o->log_level)); |
@@ -2420,11 +2575,13 @@ dump_config(ServerOptions *o) | |||
2420 | printf("maxstartups %d:%d:%d\n", o->max_startups_begin, | 2575 | printf("maxstartups %d:%d:%d\n", o->max_startups_begin, |
2421 | o->max_startups_rate, o->max_startups); | 2576 | o->max_startups_rate, o->max_startups); |
2422 | 2577 | ||
2423 | for (i = 0; tunmode_desc[i].val != -1; i++) | 2578 | s = NULL; |
2579 | for (i = 0; tunmode_desc[i].val != -1; i++) { | ||
2424 | if (tunmode_desc[i].val == o->permit_tun) { | 2580 | if (tunmode_desc[i].val == o->permit_tun) { |
2425 | s = tunmode_desc[i].text; | 2581 | s = tunmode_desc[i].text; |
2426 | break; | 2582 | break; |
2427 | } | 2583 | } |
2584 | } | ||
2428 | dump_cfg_string(sPermitTunnel, s); | 2585 | dump_cfg_string(sPermitTunnel, s); |
2429 | 2586 | ||
2430 | printf("ipqos %s ", iptos2str(o->ip_qos_interactive)); | 2587 | printf("ipqos %s ", iptos2str(o->ip_qos_interactive)); |
diff --git a/servconf.h b/servconf.h index 410c42754..b0fa70455 100644 --- a/servconf.h +++ b/servconf.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: servconf.h,v 1.126 2017/10/02 19:33:20 djm Exp $ */ | 1 | /* $OpenBSD: servconf.h,v 1.130 2017/10/25 00:19:47 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
@@ -18,17 +18,7 @@ | |||
18 | 18 | ||
19 | #define MAX_PORTS 256 /* Max # ports. */ | 19 | #define MAX_PORTS 256 /* Max # ports. */ |
20 | 20 | ||
21 | #define MAX_ALLOW_USERS 256 /* Max # users on allow list. */ | ||
22 | #define MAX_DENY_USERS 256 /* Max # users on deny list. */ | ||
23 | #define MAX_ALLOW_GROUPS 256 /* Max # groups on allow list. */ | ||
24 | #define MAX_DENY_GROUPS 256 /* Max # groups on deny list. */ | ||
25 | #define MAX_SUBSYSTEMS 256 /* Max # subsystems. */ | 21 | #define MAX_SUBSYSTEMS 256 /* Max # subsystems. */ |
26 | #define MAX_HOSTKEYS 256 /* Max # hostkeys. */ | ||
27 | #define MAX_HOSTCERTS 256 /* Max # host certificates. */ | ||
28 | #define MAX_ACCEPT_ENV 256 /* Max # of env vars. */ | ||
29 | #define MAX_MATCH_GROUPS 256 /* Max # of groups for Match. */ | ||
30 | #define MAX_AUTHKEYS_FILES 256 /* Max # of authorized_keys files. */ | ||
31 | #define MAX_AUTH_METHODS 256 /* Max # of AuthenticationMethods. */ | ||
32 | 22 | ||
33 | /* permit_root_login */ | 23 | /* permit_root_login */ |
34 | #define PERMIT_NOT_SET -1 | 24 | #define PERMIT_NOT_SET -1 |
@@ -61,21 +51,42 @@ | |||
61 | struct ssh; | 51 | struct ssh; |
62 | struct fwd_perm_list; | 52 | struct fwd_perm_list; |
63 | 53 | ||
54 | /* | ||
55 | * Used to store addresses from ListenAddr directives. These may be | ||
56 | * incomplete, as they may specify addresses that need to be merged | ||
57 | * with any ports requested by ListenPort. | ||
58 | */ | ||
59 | struct queued_listenaddr { | ||
60 | char *addr; | ||
61 | int port; /* <=0 if unspecified */ | ||
62 | char *rdomain; | ||
63 | }; | ||
64 | |||
65 | /* Resolved listen addresses, grouped by optional routing domain */ | ||
66 | struct listenaddr { | ||
67 | char *rdomain; | ||
68 | struct addrinfo *addrs; | ||
69 | }; | ||
70 | |||
64 | typedef struct { | 71 | typedef struct { |
65 | u_int num_ports; | 72 | u_int num_ports; |
66 | u_int ports_from_cmdline; | 73 | u_int ports_from_cmdline; |
67 | int ports[MAX_PORTS]; /* Port number to listen on. */ | 74 | int ports[MAX_PORTS]; /* Port number to listen on. */ |
75 | struct queued_listenaddr *queued_listen_addrs; | ||
68 | u_int num_queued_listens; | 76 | u_int num_queued_listens; |
69 | char **queued_listen_addrs; | 77 | struct listenaddr *listen_addrs; |
70 | int *queued_listen_ports; | 78 | u_int num_listen_addrs; |
71 | struct addrinfo *listen_addrs; /* Addresses on which the server listens. */ | 79 | int address_family; /* Address family used by the server. */ |
72 | int address_family; /* Address family used by the server. */ | 80 | |
73 | char *host_key_files[MAX_HOSTKEYS]; /* Files containing host keys. */ | 81 | char *routing_domain; /* Bind session to routing domain */ |
74 | int num_host_key_files; /* Number of files for host keys. */ | 82 | |
75 | char *host_cert_files[MAX_HOSTCERTS]; /* Files containing host certs. */ | 83 | char **host_key_files; /* Files containing host keys. */ |
76 | int num_host_cert_files; /* Number of files for host certs. */ | 84 | u_int num_host_key_files; /* Number of files for host keys. */ |
77 | char *host_key_agent; /* ssh-agent socket for host keys. */ | 85 | char **host_cert_files; /* Files containing host certs. */ |
78 | char *pid_file; /* Where to put our pid */ | 86 | u_int num_host_cert_files; /* Number of files for host certs. */ |
87 | |||
88 | char *host_key_agent; /* ssh-agent socket for host keys. */ | ||
89 | char *pid_file; /* Where to put our pid */ | ||
79 | int login_grace_time; /* Disconnect if no auth in this time | 90 | int login_grace_time; /* Disconnect if no auth in this time |
80 | * (sec). */ | 91 | * (sec). */ |
81 | int permit_root_login; /* PERMIT_*, see above */ | 92 | int permit_root_login; /* PERMIT_*, see above */ |
@@ -136,13 +147,13 @@ typedef struct { | |||
136 | int allow_agent_forwarding; | 147 | int allow_agent_forwarding; |
137 | int disable_forwarding; | 148 | int disable_forwarding; |
138 | u_int num_allow_users; | 149 | u_int num_allow_users; |
139 | char *allow_users[MAX_ALLOW_USERS]; | 150 | char **allow_users; |
140 | u_int num_deny_users; | 151 | u_int num_deny_users; |
141 | char *deny_users[MAX_DENY_USERS]; | 152 | char **deny_users; |
142 | u_int num_allow_groups; | 153 | u_int num_allow_groups; |
143 | char *allow_groups[MAX_ALLOW_GROUPS]; | 154 | char **allow_groups; |
144 | u_int num_deny_groups; | 155 | u_int num_deny_groups; |
145 | char *deny_groups[MAX_DENY_GROUPS]; | 156 | char **deny_groups; |
146 | 157 | ||
147 | u_int num_subsystems; | 158 | u_int num_subsystems; |
148 | char *subsystem_name[MAX_SUBSYSTEMS]; | 159 | char *subsystem_name[MAX_SUBSYSTEMS]; |
@@ -150,7 +161,7 @@ typedef struct { | |||
150 | char *subsystem_args[MAX_SUBSYSTEMS]; | 161 | char *subsystem_args[MAX_SUBSYSTEMS]; |
151 | 162 | ||
152 | u_int num_accept_env; | 163 | u_int num_accept_env; |
153 | char *accept_env[MAX_ACCEPT_ENV]; | 164 | char **accept_env; |
154 | 165 | ||
155 | int max_startups_begin; | 166 | int max_startups_begin; |
156 | int max_startups_rate; | 167 | int max_startups_rate; |
@@ -169,8 +180,8 @@ typedef struct { | |||
169 | * disconnect the session | 180 | * disconnect the session |
170 | */ | 181 | */ |
171 | 182 | ||
172 | u_int num_authkeys_files; /* Files containing public keys */ | 183 | u_int num_authkeys_files; /* Files containing public keys */ |
173 | char *authorized_keys_files[MAX_AUTHKEYS_FILES]; | 184 | char **authorized_keys_files; |
174 | 185 | ||
175 | char *adm_forced_command; | 186 | char *adm_forced_command; |
176 | 187 | ||
@@ -196,7 +207,7 @@ typedef struct { | |||
196 | char *version_addendum; /* Appended to SSH banner */ | 207 | char *version_addendum; /* Appended to SSH banner */ |
197 | 208 | ||
198 | u_int num_auth_methods; | 209 | u_int num_auth_methods; |
199 | char *auth_methods[MAX_AUTH_METHODS]; | 210 | char **auth_methods; |
200 | 211 | ||
201 | int fingerprint_hash; | 212 | int fingerprint_hash; |
202 | int expose_userauth_info; | 213 | int expose_userauth_info; |
@@ -211,6 +222,7 @@ struct connection_info { | |||
211 | const char *address; /* remote address */ | 222 | const char *address; /* remote address */ |
212 | const char *laddress; /* local address */ | 223 | const char *laddress; /* local address */ |
213 | int lport; /* local port */ | 224 | int lport; /* local port */ |
225 | const char *rdomain; /* routing domain if available */ | ||
214 | }; | 226 | }; |
215 | 227 | ||
216 | 228 | ||
@@ -234,6 +246,7 @@ struct connection_info { | |||
234 | M_CP_STROPT(authorized_principals_command_user); \ | 246 | M_CP_STROPT(authorized_principals_command_user); \ |
235 | M_CP_STROPT(hostbased_key_types); \ | 247 | M_CP_STROPT(hostbased_key_types); \ |
236 | M_CP_STROPT(pubkey_key_types); \ | 248 | M_CP_STROPT(pubkey_key_types); \ |
249 | M_CP_STROPT(routing_domain); \ | ||
237 | M_CP_STRARRAYOPT(authorized_keys_files, num_authkeys_files); \ | 250 | M_CP_STRARRAYOPT(authorized_keys_files, num_authkeys_files); \ |
238 | M_CP_STRARRAYOPT(allow_users, num_allow_users); \ | 251 | M_CP_STRARRAYOPT(allow_users, num_allow_users); \ |
239 | M_CP_STRARRAYOPT(deny_users, num_deny_users); \ | 252 | M_CP_STRARRAYOPT(deny_users, num_deny_users); \ |
@@ -241,7 +254,7 @@ struct connection_info { | |||
241 | M_CP_STRARRAYOPT(deny_groups, num_deny_groups); \ | 254 | M_CP_STRARRAYOPT(deny_groups, num_deny_groups); \ |
242 | M_CP_STRARRAYOPT(accept_env, num_accept_env); \ | 255 | M_CP_STRARRAYOPT(accept_env, num_accept_env); \ |
243 | M_CP_STRARRAYOPT(auth_methods, num_auth_methods); \ | 256 | M_CP_STRARRAYOPT(auth_methods, num_auth_methods); \ |
244 | M_CP_STRARRAYOPT_ALLOC(permitted_opens, num_permitted_opens); \ | 257 | M_CP_STRARRAYOPT(permitted_opens, num_permitted_opens); \ |
245 | } while (0) | 258 | } while (0) |
246 | 259 | ||
247 | struct connection_info *get_connection_info(int, int); | 260 | struct connection_info *get_connection_info(int, int); |
@@ -259,5 +272,9 @@ int server_match_spec_complete(struct connection_info *); | |||
259 | void copy_set_server_options(ServerOptions *, ServerOptions *, int); | 272 | void copy_set_server_options(ServerOptions *, ServerOptions *, int); |
260 | void dump_config(ServerOptions *); | 273 | void dump_config(ServerOptions *); |
261 | char *derelativise_path(const char *); | 274 | char *derelativise_path(const char *); |
275 | void servconf_add_hostkey(const char *, const int, | ||
276 | ServerOptions *, const char *path); | ||
277 | void servconf_add_hostcert(const char *, const int, | ||
278 | ServerOptions *, const char *path); | ||
262 | 279 | ||
263 | #endif /* SERVCONF_H */ | 280 | #endif /* SERVCONF_H */ |
diff --git a/serverloop.c b/serverloop.c index 24bbae322..d6fe24cc1 100644 --- a/serverloop.c +++ b/serverloop.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: serverloop.c,v 1.198 2017/09/12 06:35:32 djm Exp $ */ | 1 | /* $OpenBSD: serverloop.c,v 1.205 2018/03/03 03:15:51 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 |
@@ -82,6 +82,7 @@ extern ServerOptions options; | |||
82 | 82 | ||
83 | /* XXX */ | 83 | /* XXX */ |
84 | extern Authctxt *the_authctxt; | 84 | extern Authctxt *the_authctxt; |
85 | extern struct sshauthopt *auth_opts; | ||
85 | extern int use_privsep; | 86 | extern int use_privsep; |
86 | 87 | ||
87 | static int no_more_sessions = 0; /* Disallow further sessions. */ | 88 | static int no_more_sessions = 0; /* Disallow further sessions. */ |
@@ -99,6 +100,9 @@ static volatile sig_atomic_t received_sigterm = 0; | |||
99 | /* prototypes */ | 100 | /* prototypes */ |
100 | static void server_init_dispatch(void); | 101 | static void server_init_dispatch(void); |
101 | 102 | ||
103 | /* requested tunnel forwarding interface(s), shared with session.c */ | ||
104 | char *tun_fwd_ifnames = NULL; | ||
105 | |||
102 | /* | 106 | /* |
103 | * we write to this pipe if a SIGCHLD is caught in order to avoid | 107 | * we write to this pipe if a SIGCHLD is caught in order to avoid |
104 | * the race between select() and child_terminated | 108 | * the race between select() and child_terminated |
@@ -150,9 +154,6 @@ sigchld_handler(int sig) | |||
150 | { | 154 | { |
151 | int save_errno = errno; | 155 | int save_errno = errno; |
152 | child_terminated = 1; | 156 | child_terminated = 1; |
153 | #ifndef _UNICOS | ||
154 | mysignal(SIGCHLD, sigchld_handler); | ||
155 | #endif | ||
156 | notify_parent(); | 157 | notify_parent(); |
157 | errno = save_errno; | 158 | errno = save_errno; |
158 | } | 159 | } |
@@ -168,10 +169,12 @@ static void | |||
168 | client_alive_check(struct ssh *ssh) | 169 | client_alive_check(struct ssh *ssh) |
169 | { | 170 | { |
170 | int channel_id; | 171 | int channel_id; |
172 | char remote_id[512]; | ||
171 | 173 | ||
172 | /* timeout, check to see how many we have had */ | 174 | /* timeout, check to see how many we have had */ |
173 | if (packet_inc_alive_timeouts() > options.client_alive_count_max) { | 175 | if (packet_inc_alive_timeouts() > options.client_alive_count_max) { |
174 | logit("Timeout, client not responding."); | 176 | sshpkt_fmt_connection_id(ssh, remote_id, sizeof(remote_id)); |
177 | logit("Timeout, client not responding from %s", remote_id); | ||
175 | cleanup_exit(255); | 178 | cleanup_exit(255); |
176 | } | 179 | } |
177 | 180 | ||
@@ -371,7 +374,7 @@ server_loop2(struct ssh *ssh, Authctxt *authctxt) | |||
371 | 374 | ||
372 | debug("Entering interactive session for SSH2."); | 375 | debug("Entering interactive session for SSH2."); |
373 | 376 | ||
374 | mysignal(SIGCHLD, sigchld_handler); | 377 | signal(SIGCHLD, sigchld_handler); |
375 | child_terminated = 0; | 378 | child_terminated = 0; |
376 | connection_in = packet_get_connection_in(); | 379 | connection_in = packet_get_connection_in(); |
377 | connection_out = packet_get_connection_out(); | 380 | connection_out = packet_get_connection_out(); |
@@ -454,12 +457,13 @@ server_request_direct_tcpip(struct ssh *ssh, int *reason, const char **errmsg) | |||
454 | originator_port = packet_get_int(); | 457 | originator_port = packet_get_int(); |
455 | packet_check_eom(); | 458 | packet_check_eom(); |
456 | 459 | ||
457 | debug("server_request_direct_tcpip: originator %s port %d, target %s " | 460 | debug("%s: originator %s port %d, target %s port %d", __func__, |
458 | "port %d", originator, originator_port, target, target_port); | 461 | originator, originator_port, target, target_port); |
459 | 462 | ||
460 | /* XXX fine grained permissions */ | 463 | /* XXX fine grained permissions */ |
461 | if ((options.allow_tcp_forwarding & FORWARD_LOCAL) != 0 && | 464 | if ((options.allow_tcp_forwarding & FORWARD_LOCAL) != 0 && |
462 | !no_port_forwarding_flag && !options.disable_forwarding) { | 465 | auth_opts->permit_port_forwarding_flag && |
466 | !options.disable_forwarding) { | ||
463 | c = channel_connect_to_port(ssh, target, target_port, | 467 | c = channel_connect_to_port(ssh, target, target_port, |
464 | "direct-tcpip", "direct-tcpip", reason, errmsg); | 468 | "direct-tcpip", "direct-tcpip", reason, errmsg); |
465 | } else { | 469 | } else { |
@@ -485,20 +489,20 @@ server_request_direct_streamlocal(struct ssh *ssh) | |||
485 | struct passwd *pw = the_authctxt->pw; | 489 | struct passwd *pw = the_authctxt->pw; |
486 | 490 | ||
487 | if (pw == NULL || !the_authctxt->valid) | 491 | if (pw == NULL || !the_authctxt->valid) |
488 | fatal("server_input_global_request: no/invalid user"); | 492 | fatal("%s: no/invalid user", __func__); |
489 | 493 | ||
490 | target = packet_get_string(NULL); | 494 | target = packet_get_string(NULL); |
491 | originator = packet_get_string(NULL); | 495 | originator = packet_get_string(NULL); |
492 | originator_port = packet_get_int(); | 496 | originator_port = packet_get_int(); |
493 | packet_check_eom(); | 497 | packet_check_eom(); |
494 | 498 | ||
495 | debug("server_request_direct_streamlocal: originator %s port %d, target %s", | 499 | debug("%s: originator %s port %d, target %s", __func__, |
496 | originator, originator_port, target); | 500 | originator, originator_port, target); |
497 | 501 | ||
498 | /* XXX fine grained permissions */ | 502 | /* XXX fine grained permissions */ |
499 | if ((options.allow_streamlocal_forwarding & FORWARD_LOCAL) != 0 && | 503 | if ((options.allow_streamlocal_forwarding & FORWARD_LOCAL) != 0 && |
500 | !no_port_forwarding_flag && !options.disable_forwarding && | 504 | auth_opts->permit_port_forwarding_flag && |
501 | (pw->pw_uid == 0 || use_privsep)) { | 505 | !options.disable_forwarding && (pw->pw_uid == 0 || use_privsep)) { |
502 | c = channel_connect_to_path(ssh, target, | 506 | c = channel_connect_to_path(ssh, target, |
503 | "direct-streamlocal@openssh.com", "direct-streamlocal"); | 507 | "direct-streamlocal@openssh.com", "direct-streamlocal"); |
504 | } else { | 508 | } else { |
@@ -517,8 +521,8 @@ static Channel * | |||
517 | server_request_tun(struct ssh *ssh) | 521 | server_request_tun(struct ssh *ssh) |
518 | { | 522 | { |
519 | Channel *c = NULL; | 523 | Channel *c = NULL; |
520 | int mode, tun; | 524 | int mode, tun, sock; |
521 | int sock; | 525 | char *tmp, *ifname = NULL; |
522 | 526 | ||
523 | mode = packet_get_int(); | 527 | mode = packet_get_int(); |
524 | switch (mode) { | 528 | switch (mode) { |
@@ -536,14 +540,16 @@ server_request_tun(struct ssh *ssh) | |||
536 | } | 540 | } |
537 | 541 | ||
538 | tun = packet_get_int(); | 542 | tun = packet_get_int(); |
539 | if (forced_tun_device != -1) { | 543 | if (auth_opts->force_tun_device != -1) { |
540 | if (tun != SSH_TUNID_ANY && forced_tun_device != tun) | 544 | if (tun != SSH_TUNID_ANY && auth_opts->force_tun_device != tun) |
541 | goto done; | 545 | goto done; |
542 | tun = forced_tun_device; | 546 | tun = auth_opts->force_tun_device; |
543 | } | 547 | } |
544 | sock = tun_open(tun, mode); | 548 | sock = tun_open(tun, mode, &ifname); |
545 | if (sock < 0) | 549 | if (sock < 0) |
546 | goto done; | 550 | goto done; |
551 | debug("Tunnel forwarding using interface %s", ifname); | ||
552 | |||
547 | c = channel_new(ssh, "tun", SSH_CHANNEL_OPEN, sock, sock, -1, | 553 | c = channel_new(ssh, "tun", SSH_CHANNEL_OPEN, sock, sock, -1, |
548 | CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT, 0, "tun", 1); | 554 | CHAN_TCP_WINDOW_DEFAULT, CHAN_TCP_PACKET_DEFAULT, 0, "tun", 1); |
549 | c->datagram = 1; | 555 | c->datagram = 1; |
@@ -553,6 +559,19 @@ server_request_tun(struct ssh *ssh) | |||
553 | sys_tun_outfilter, NULL, NULL); | 559 | sys_tun_outfilter, NULL, NULL); |
554 | #endif | 560 | #endif |
555 | 561 | ||
562 | /* | ||
563 | * Update the list of names exposed to the session | ||
564 | * XXX remove these if the tunnels are closed (won't matter | ||
565 | * much if they are already in the environment though) | ||
566 | */ | ||
567 | tmp = tun_fwd_ifnames; | ||
568 | xasprintf(&tun_fwd_ifnames, "%s%s%s", | ||
569 | tun_fwd_ifnames == NULL ? "" : tun_fwd_ifnames, | ||
570 | tun_fwd_ifnames == NULL ? "" : ",", | ||
571 | ifname); | ||
572 | free(tmp); | ||
573 | free(ifname); | ||
574 | |||
556 | done: | 575 | done: |
557 | if (c == NULL) | 576 | if (c == NULL) |
558 | packet_send_debug("Failed to open the tunnel device."); | 577 | packet_send_debug("Failed to open the tunnel device."); |
@@ -635,10 +654,8 @@ server_input_channel_open(int type, u_int32_t seq, struct ssh *ssh) | |||
635 | packet_start(SSH2_MSG_CHANNEL_OPEN_FAILURE); | 654 | packet_start(SSH2_MSG_CHANNEL_OPEN_FAILURE); |
636 | packet_put_int(rchan); | 655 | packet_put_int(rchan); |
637 | packet_put_int(reason); | 656 | packet_put_int(reason); |
638 | if (!(datafellows & SSH_BUG_OPENFAILURE)) { | 657 | packet_put_cstring(errmsg ? errmsg : "open failed"); |
639 | packet_put_cstring(errmsg ? errmsg : "open failed"); | 658 | packet_put_cstring(""); |
640 | packet_put_cstring(""); | ||
641 | } | ||
642 | packet_send(); | 659 | packet_send(); |
643 | } | 660 | } |
644 | free(ctype); | 661 | free(ctype); |
@@ -651,7 +668,7 @@ server_input_hostkeys_prove(struct ssh *ssh, struct sshbuf **respp) | |||
651 | struct sshbuf *resp = NULL; | 668 | struct sshbuf *resp = NULL; |
652 | struct sshbuf *sigbuf = NULL; | 669 | struct sshbuf *sigbuf = NULL; |
653 | struct sshkey *key = NULL, *key_pub = NULL, *key_prv = NULL; | 670 | struct sshkey *key = NULL, *key_pub = NULL, *key_prv = NULL; |
654 | int r, ndx, success = 0; | 671 | int r, ndx, kexsigtype, use_kexsigtype, success = 0; |
655 | const u_char *blob; | 672 | const u_char *blob; |
656 | u_char *sig = 0; | 673 | u_char *sig = 0; |
657 | size_t blen, slen; | 674 | size_t blen, slen; |
@@ -659,6 +676,8 @@ server_input_hostkeys_prove(struct ssh *ssh, struct sshbuf **respp) | |||
659 | if ((resp = sshbuf_new()) == NULL || (sigbuf = sshbuf_new()) == NULL) | 676 | if ((resp = sshbuf_new()) == NULL || (sigbuf = sshbuf_new()) == NULL) |
660 | fatal("%s: sshbuf_new", __func__); | 677 | fatal("%s: sshbuf_new", __func__); |
661 | 678 | ||
679 | kexsigtype = sshkey_type_plain( | ||
680 | sshkey_type_from_name(ssh->kex->hostkey_alg)); | ||
662 | while (ssh_packet_remaining(ssh) > 0) { | 681 | while (ssh_packet_remaining(ssh) > 0) { |
663 | sshkey_free(key); | 682 | sshkey_free(key); |
664 | key = NULL; | 683 | key = NULL; |
@@ -689,13 +708,20 @@ server_input_hostkeys_prove(struct ssh *ssh, struct sshbuf **respp) | |||
689 | sshbuf_reset(sigbuf); | 708 | sshbuf_reset(sigbuf); |
690 | free(sig); | 709 | free(sig); |
691 | sig = NULL; | 710 | sig = NULL; |
711 | /* | ||
712 | * For RSA keys, prefer to use the signature type negotiated | ||
713 | * during KEX to the default (SHA1). | ||
714 | */ | ||
715 | use_kexsigtype = kexsigtype == KEY_RSA && | ||
716 | sshkey_type_plain(key->type) == KEY_RSA; | ||
692 | if ((r = sshbuf_put_cstring(sigbuf, | 717 | if ((r = sshbuf_put_cstring(sigbuf, |
693 | "hostkeys-prove-00@openssh.com")) != 0 || | 718 | "hostkeys-prove-00@openssh.com")) != 0 || |
694 | (r = sshbuf_put_string(sigbuf, | 719 | (r = sshbuf_put_string(sigbuf, |
695 | ssh->kex->session_id, ssh->kex->session_id_len)) != 0 || | 720 | ssh->kex->session_id, ssh->kex->session_id_len)) != 0 || |
696 | (r = sshkey_puts(key, sigbuf)) != 0 || | 721 | (r = sshkey_puts(key, sigbuf)) != 0 || |
697 | (r = ssh->kex->sign(key_prv, key_pub, &sig, &slen, | 722 | (r = ssh->kex->sign(key_prv, key_pub, &sig, &slen, |
698 | sshbuf_ptr(sigbuf), sshbuf_len(sigbuf), NULL, 0)) != 0 || | 723 | sshbuf_ptr(sigbuf), sshbuf_len(sigbuf), |
724 | use_kexsigtype ? ssh->kex->hostkey_alg : NULL, 0)) != 0 || | ||
699 | (r = sshbuf_put_string(resp, sig, slen)) != 0) { | 725 | (r = sshbuf_put_string(resp, sig, slen)) != 0) { |
700 | error("%s: couldn't prepare signature: %s", | 726 | error("%s: couldn't prepare signature: %s", |
701 | __func__, ssh_err(r)); | 727 | __func__, ssh_err(r)); |
@@ -742,7 +768,8 @@ server_input_global_request(int type, u_int32_t seq, struct ssh *ssh) | |||
742 | 768 | ||
743 | /* check permissions */ | 769 | /* check permissions */ |
744 | if ((options.allow_tcp_forwarding & FORWARD_REMOTE) == 0 || | 770 | if ((options.allow_tcp_forwarding & FORWARD_REMOTE) == 0 || |
745 | no_port_forwarding_flag || options.disable_forwarding || | 771 | !auth_opts->permit_port_forwarding_flag || |
772 | options.disable_forwarding || | ||
746 | (!want_reply && fwd.listen_port == 0) || | 773 | (!want_reply && fwd.listen_port == 0) || |
747 | (fwd.listen_port != 0 && | 774 | (fwd.listen_port != 0 && |
748 | !bind_permitted(fwd.listen_port, pw->pw_uid))) { | 775 | !bind_permitted(fwd.listen_port, pw->pw_uid))) { |
@@ -780,7 +807,8 @@ server_input_global_request(int type, u_int32_t seq, struct ssh *ssh) | |||
780 | 807 | ||
781 | /* check permissions */ | 808 | /* check permissions */ |
782 | if ((options.allow_streamlocal_forwarding & FORWARD_REMOTE) == 0 | 809 | if ((options.allow_streamlocal_forwarding & FORWARD_REMOTE) == 0 |
783 | || no_port_forwarding_flag || options.disable_forwarding || | 810 | || !auth_opts->permit_port_forwarding_flag || |
811 | options.disable_forwarding || | ||
784 | (pw->pw_uid != 0 && !use_privsep)) { | 812 | (pw->pw_uid != 0 && !use_privsep)) { |
785 | success = 0; | 813 | success = 0; |
786 | packet_send_debug("Server has disabled " | 814 | packet_send_debug("Server has disabled " |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: session.c,v 1.292 2017/09/12 06:32:07 djm Exp $ */ | 1 | /* $OpenBSD: session.c,v 1.294 2018/03/03 03:15:51 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 |
@@ -140,6 +140,8 @@ extern u_int utmp_len; | |||
140 | extern int startup_pipe; | 140 | extern int startup_pipe; |
141 | extern void destroy_sensitive_data(void); | 141 | extern void destroy_sensitive_data(void); |
142 | extern Buffer loginmsg; | 142 | extern Buffer loginmsg; |
143 | extern struct sshauthopt *auth_opts; | ||
144 | char *tun_fwd_ifnames; /* serverloop.c */ | ||
143 | 145 | ||
144 | /* original command from peer. */ | 146 | /* original command from peer. */ |
145 | const char *original_command = NULL; | 147 | const char *original_command = NULL; |
@@ -287,14 +289,42 @@ prepare_auth_info_file(struct passwd *pw, struct sshbuf *info) | |||
287 | restore_uid(); | 289 | restore_uid(); |
288 | } | 290 | } |
289 | 291 | ||
292 | static void | ||
293 | set_permitopen_from_authopts(struct ssh *ssh, const struct sshauthopt *opts) | ||
294 | { | ||
295 | char *tmp, *cp, *host; | ||
296 | int port; | ||
297 | size_t i; | ||
298 | |||
299 | if ((options.allow_tcp_forwarding & FORWARD_LOCAL) == 0) | ||
300 | return; | ||
301 | channel_clear_permitted_opens(ssh); | ||
302 | for (i = 0; i < auth_opts->npermitopen; i++) { | ||
303 | tmp = cp = xstrdup(auth_opts->permitopen[i]); | ||
304 | /* This shouldn't fail as it has already been checked */ | ||
305 | if ((host = hpdelim(&cp)) == NULL) | ||
306 | fatal("%s: internal error: hpdelim", __func__); | ||
307 | host = cleanhostname(host); | ||
308 | if (cp == NULL || (port = permitopen_port(cp)) < 0) | ||
309 | fatal("%s: internal error: permitopen port", | ||
310 | __func__); | ||
311 | channel_add_permitted_opens(ssh, host, port); | ||
312 | free(tmp); | ||
313 | } | ||
314 | } | ||
315 | |||
290 | void | 316 | void |
291 | do_authenticated(struct ssh *ssh, Authctxt *authctxt) | 317 | do_authenticated(struct ssh *ssh, Authctxt *authctxt) |
292 | { | 318 | { |
293 | setproctitle("%s", authctxt->pw->pw_name); | 319 | setproctitle("%s", authctxt->pw->pw_name); |
294 | 320 | ||
321 | auth_log_authopts("active", auth_opts, 0); | ||
322 | |||
295 | /* setup the channel layer */ | 323 | /* setup the channel layer */ |
296 | /* XXX - streamlocal? */ | 324 | /* XXX - streamlocal? */ |
297 | if (no_port_forwarding_flag || options.disable_forwarding || | 325 | set_permitopen_from_authopts(ssh, auth_opts); |
326 | if (!auth_opts->permit_port_forwarding_flag || | ||
327 | options.disable_forwarding || | ||
298 | (options.allow_tcp_forwarding & FORWARD_LOCAL) == 0) | 328 | (options.allow_tcp_forwarding & FORWARD_LOCAL) == 0) |
299 | channel_disable_adm_local_opens(ssh); | 329 | channel_disable_adm_local_opens(ssh); |
300 | else | 330 | else |
@@ -334,7 +364,6 @@ int | |||
334 | do_exec_no_pty(struct ssh *ssh, Session *s, const char *command) | 364 | do_exec_no_pty(struct ssh *ssh, Session *s, const char *command) |
335 | { | 365 | { |
336 | pid_t pid; | 366 | pid_t pid; |
337 | |||
338 | #ifdef USE_PIPES | 367 | #ifdef USE_PIPES |
339 | int pin[2], pout[2], perr[2]; | 368 | int pin[2], pout[2], perr[2]; |
340 | 369 | ||
@@ -450,11 +479,6 @@ do_exec_no_pty(struct ssh *ssh, Session *s, const char *command) | |||
450 | close(err[0]); | 479 | close(err[0]); |
451 | #endif | 480 | #endif |
452 | 481 | ||
453 | |||
454 | #ifdef _UNICOS | ||
455 | cray_init_job(s->pw); /* set up cray jid and tmpdir */ | ||
456 | #endif | ||
457 | |||
458 | /* Do processing for the child (exec command etc). */ | 482 | /* Do processing for the child (exec command etc). */ |
459 | do_child(ssh, s, command); | 483 | do_child(ssh, s, command); |
460 | /* NOTREACHED */ | 484 | /* NOTREACHED */ |
@@ -462,9 +486,6 @@ do_exec_no_pty(struct ssh *ssh, Session *s, const char *command) | |||
462 | break; | 486 | break; |
463 | } | 487 | } |
464 | 488 | ||
465 | #ifdef _UNICOS | ||
466 | signal(WJSIGNAL, cray_job_termination_handler); | ||
467 | #endif /* _UNICOS */ | ||
468 | #ifdef HAVE_CYGWIN | 489 | #ifdef HAVE_CYGWIN |
469 | cygwin_set_impersonation_token(INVALID_HANDLE_VALUE); | 490 | cygwin_set_impersonation_token(INVALID_HANDLE_VALUE); |
470 | #endif | 491 | #endif |
@@ -576,9 +597,6 @@ do_exec_pty(struct ssh *ssh, Session *s, const char *command) | |||
576 | close(ttyfd); | 597 | close(ttyfd); |
577 | 598 | ||
578 | /* record login, etc. similar to login(1) */ | 599 | /* record login, etc. similar to login(1) */ |
579 | #ifdef _UNICOS | ||
580 | cray_init_job(s->pw); /* set up cray jid and tmpdir */ | ||
581 | #endif /* _UNICOS */ | ||
582 | #ifndef HAVE_OSF_SIA | 600 | #ifndef HAVE_OSF_SIA |
583 | do_login(ssh, s, command); | 601 | do_login(ssh, s, command); |
584 | #endif | 602 | #endif |
@@ -592,9 +610,6 @@ do_exec_pty(struct ssh *ssh, Session *s, const char *command) | |||
592 | break; | 610 | break; |
593 | } | 611 | } |
594 | 612 | ||
595 | #ifdef _UNICOS | ||
596 | signal(WJSIGNAL, cray_job_termination_handler); | ||
597 | #endif /* _UNICOS */ | ||
598 | #ifdef HAVE_CYGWIN | 613 | #ifdef HAVE_CYGWIN |
599 | cygwin_set_impersonation_token(INVALID_HANDLE_VALUE); | 614 | cygwin_set_impersonation_token(INVALID_HANDLE_VALUE); |
600 | #endif | 615 | #endif |
@@ -656,9 +671,9 @@ do_exec(struct ssh *ssh, Session *s, const char *command) | |||
656 | original_command = command; | 671 | original_command = command; |
657 | command = options.adm_forced_command; | 672 | command = options.adm_forced_command; |
658 | forced = "(config)"; | 673 | forced = "(config)"; |
659 | } else if (forced_command) { | 674 | } else if (auth_opts->force_command != NULL) { |
660 | original_command = command; | 675 | original_command = command; |
661 | command = forced_command; | 676 | command = auth_opts->force_command; |
662 | forced = "(key-option)"; | 677 | forced = "(key-option)"; |
663 | } | 678 | } |
664 | if (forced != NULL) { | 679 | if (forced != NULL) { |
@@ -961,8 +976,9 @@ static char ** | |||
961 | do_setup_env(struct ssh *ssh, Session *s, const char *shell) | 976 | do_setup_env(struct ssh *ssh, Session *s, const char *shell) |
962 | { | 977 | { |
963 | char buf[256]; | 978 | char buf[256]; |
979 | size_t n; | ||
964 | u_int i, envsize; | 980 | u_int i, envsize; |
965 | char **env, *laddr; | 981 | char *ocp, *cp, **env, *laddr; |
966 | struct passwd *pw = s->pw; | 982 | struct passwd *pw = s->pw; |
967 | #if !defined (HAVE_LOGIN_CAP) && !defined (HAVE_CYGWIN) | 983 | #if !defined (HAVE_LOGIN_CAP) && !defined (HAVE_CYGWIN) |
968 | char *path = NULL; | 984 | char *path = NULL; |
@@ -1037,20 +1053,17 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell) | |||
1037 | if (getenv("TZ")) | 1053 | if (getenv("TZ")) |
1038 | child_set_env(&env, &envsize, "TZ", getenv("TZ")); | 1054 | child_set_env(&env, &envsize, "TZ", getenv("TZ")); |
1039 | 1055 | ||
1040 | /* Set custom environment options from RSA authentication. */ | 1056 | /* Set custom environment options from pubkey authentication. */ |
1041 | while (custom_environment) { | 1057 | if (options.permit_user_env) { |
1042 | struct envstring *ce = custom_environment; | 1058 | for (n = 0 ; n < auth_opts->nenv; n++) { |
1043 | char *str = ce->s; | 1059 | ocp = xstrdup(auth_opts->env[n]); |
1044 | 1060 | cp = strchr(ocp, '='); | |
1045 | for (i = 0; str[i] != '=' && str[i]; i++) | 1061 | if (*cp == '=') { |
1046 | ; | 1062 | *cp = '\0'; |
1047 | if (str[i] == '=') { | 1063 | child_set_env(&env, &envsize, ocp, cp + 1); |
1048 | str[i] = 0; | 1064 | } |
1049 | child_set_env(&env, &envsize, str, str + i + 1); | 1065 | free(ocp); |
1050 | } | 1066 | } |
1051 | custom_environment = ce->next; | ||
1052 | free(ce->s); | ||
1053 | free(ce); | ||
1054 | } | 1067 | } |
1055 | 1068 | ||
1056 | /* SSH_CLIENT deprecated */ | 1069 | /* SSH_CLIENT deprecated */ |
@@ -1066,6 +1079,8 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell) | |||
1066 | free(laddr); | 1079 | free(laddr); |
1067 | child_set_env(&env, &envsize, "SSH_CONNECTION", buf); | 1080 | child_set_env(&env, &envsize, "SSH_CONNECTION", buf); |
1068 | 1081 | ||
1082 | if (tun_fwd_ifnames != NULL) | ||
1083 | child_set_env(&env, &envsize, "SSH_TUNNEL", tun_fwd_ifnames); | ||
1069 | if (auth_info_file != NULL) | 1084 | if (auth_info_file != NULL) |
1070 | child_set_env(&env, &envsize, "SSH_USER_AUTH", auth_info_file); | 1085 | child_set_env(&env, &envsize, "SSH_USER_AUTH", auth_info_file); |
1071 | if (s->ttyfd != -1) | 1086 | if (s->ttyfd != -1) |
@@ -1078,11 +1093,6 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell) | |||
1078 | child_set_env(&env, &envsize, "SSH_ORIGINAL_COMMAND", | 1093 | child_set_env(&env, &envsize, "SSH_ORIGINAL_COMMAND", |
1079 | original_command); | 1094 | original_command); |
1080 | 1095 | ||
1081 | #ifdef _UNICOS | ||
1082 | if (cray_tmpdir[0] != '\0') | ||
1083 | child_set_env(&env, &envsize, "TMPDIR", cray_tmpdir); | ||
1084 | #endif /* _UNICOS */ | ||
1085 | |||
1086 | /* | 1096 | /* |
1087 | * Since we clear KRB5CCNAME at startup, if it's set now then it | 1097 | * Since we clear KRB5CCNAME at startup, if it's set now then it |
1088 | * must have been set by a native authentication method (eg AIX or | 1098 | * must have been set by a native authentication method (eg AIX or |
@@ -1155,7 +1165,7 @@ do_setup_env(struct ssh *ssh, Session *s, const char *shell) | |||
1155 | * first in this order). | 1165 | * first in this order). |
1156 | */ | 1166 | */ |
1157 | static void | 1167 | static void |
1158 | do_rc_files(Session *s, const char *shell) | 1168 | do_rc_files(struct ssh *ssh, Session *s, const char *shell) |
1159 | { | 1169 | { |
1160 | FILE *f = NULL; | 1170 | FILE *f = NULL; |
1161 | char cmd[1024]; | 1171 | char cmd[1024]; |
@@ -1167,7 +1177,7 @@ do_rc_files(Session *s, const char *shell) | |||
1167 | 1177 | ||
1168 | /* ignore _PATH_SSH_USER_RC for subsystems and admin forced commands */ | 1178 | /* ignore _PATH_SSH_USER_RC for subsystems and admin forced commands */ |
1169 | if (!s->is_subsystem && options.adm_forced_command == NULL && | 1179 | if (!s->is_subsystem && options.adm_forced_command == NULL && |
1170 | !no_user_rc && options.permit_user_rc && | 1180 | auth_opts->permit_user_rc && options.permit_user_rc && |
1171 | stat(_PATH_SSH_USER_RC, &st) >= 0) { | 1181 | stat(_PATH_SSH_USER_RC, &st) >= 0) { |
1172 | snprintf(cmd, sizeof cmd, "%s -c '%s %s'", | 1182 | snprintf(cmd, sizeof cmd, "%s -c '%s %s'", |
1173 | shell, _PATH_BSHELL, _PATH_SSH_USER_RC); | 1183 | shell, _PATH_BSHELL, _PATH_SSH_USER_RC); |
@@ -1248,10 +1258,10 @@ do_nologin(struct passwd *pw) | |||
1248 | /* /etc/nologin exists. Print its contents if we can and exit. */ | 1258 | /* /etc/nologin exists. Print its contents if we can and exit. */ |
1249 | logit("User %.100s not allowed because %s exists", pw->pw_name, nl); | 1259 | logit("User %.100s not allowed because %s exists", pw->pw_name, nl); |
1250 | if ((f = fopen(nl, "r")) != NULL) { | 1260 | if ((f = fopen(nl, "r")) != NULL) { |
1251 | while (fgets(buf, sizeof(buf), f)) | 1261 | while (fgets(buf, sizeof(buf), f)) |
1252 | fputs(buf, stderr); | 1262 | fputs(buf, stderr); |
1253 | fclose(f); | 1263 | fclose(f); |
1254 | } | 1264 | } |
1255 | exit(254); | 1265 | exit(254); |
1256 | } | 1266 | } |
1257 | 1267 | ||
@@ -1483,10 +1493,6 @@ do_child(struct ssh *ssh, Session *s, const char *command) | |||
1483 | exit(1); | 1493 | exit(1); |
1484 | } | 1494 | } |
1485 | 1495 | ||
1486 | #ifdef _UNICOS | ||
1487 | cray_setup(pw->pw_uid, pw->pw_name, command); | ||
1488 | #endif /* _UNICOS */ | ||
1489 | |||
1490 | /* | 1496 | /* |
1491 | * Login(1) does this as well, and it needs uid 0 for the "-h" | 1497 | * Login(1) does this as well, and it needs uid 0 for the "-h" |
1492 | * switch, so we let login(1) to this for us. | 1498 | * switch, so we let login(1) to this for us. |
@@ -1591,7 +1597,7 @@ do_child(struct ssh *ssh, Session *s, const char *command) | |||
1591 | 1597 | ||
1592 | closefrom(STDERR_FILENO + 1); | 1598 | closefrom(STDERR_FILENO + 1); |
1593 | 1599 | ||
1594 | do_rc_files(s, shell); | 1600 | do_rc_files(ssh, s, shell); |
1595 | 1601 | ||
1596 | /* restore SIGPIPE for child */ | 1602 | /* restore SIGPIPE for child */ |
1597 | signal(SIGPIPE, SIG_DFL); | 1603 | signal(SIGPIPE, SIG_DFL); |
@@ -1854,8 +1860,8 @@ session_pty_req(struct ssh *ssh, Session *s) | |||
1854 | u_int len; | 1860 | u_int len; |
1855 | int n_bytes; | 1861 | int n_bytes; |
1856 | 1862 | ||
1857 | if (no_pty_flag || !options.permit_tty) { | 1863 | if (!auth_opts->permit_pty_flag || !options.permit_tty) { |
1858 | debug("Allocating a pty not permitted for this authentication."); | 1864 | debug("Allocating a pty not permitted for this connection."); |
1859 | return 0; | 1865 | return 0; |
1860 | } | 1866 | } |
1861 | if (s->ttyfd != -1) { | 1867 | if (s->ttyfd != -1) { |
@@ -2043,9 +2049,11 @@ static int | |||
2043 | session_auth_agent_req(struct ssh *ssh, Session *s) | 2049 | session_auth_agent_req(struct ssh *ssh, Session *s) |
2044 | { | 2050 | { |
2045 | static int called = 0; | 2051 | static int called = 0; |
2052 | |||
2046 | packet_check_eom(); | 2053 | packet_check_eom(); |
2047 | if (no_agent_forwarding_flag || !options.allow_agent_forwarding) { | 2054 | if (!auth_opts->permit_agent_forwarding_flag || |
2048 | debug("session_auth_agent_req: no_agent_forwarding_flag"); | 2055 | !options.allow_agent_forwarding) { |
2056 | debug("%s: agent forwarding disabled", __func__); | ||
2049 | return 0; | 2057 | return 0; |
2050 | } | 2058 | } |
2051 | if (called) { | 2059 | if (called) { |
@@ -2423,8 +2431,8 @@ session_setup_x11fwd(struct ssh *ssh, Session *s) | |||
2423 | char hostname[NI_MAXHOST]; | 2431 | char hostname[NI_MAXHOST]; |
2424 | u_int i; | 2432 | u_int i; |
2425 | 2433 | ||
2426 | if (no_x11_forwarding_flag) { | 2434 | if (!auth_opts->permit_x11_forwarding_flag) { |
2427 | packet_send_debug("X11 forwarding disabled in user configuration file."); | 2435 | packet_send_debug("X11 forwarding disabled by key options."); |
2428 | return 0; | 2436 | return 0; |
2429 | } | 2437 | } |
2430 | if (!options.x11_forwarding) { | 2438 | if (!options.x11_forwarding) { |
@@ -2433,7 +2441,7 @@ session_setup_x11fwd(struct ssh *ssh, Session *s) | |||
2433 | } | 2441 | } |
2434 | if (options.xauth_location == NULL || | 2442 | if (options.xauth_location == NULL || |
2435 | (stat(options.xauth_location, &st) == -1)) { | 2443 | (stat(options.xauth_location, &st) == -1)) { |
2436 | packet_send_debug("No xauth program; cannot forward with spoofing."); | 2444 | packet_send_debug("No xauth program; cannot forward X11."); |
2437 | return 0; | 2445 | return 0; |
2438 | } | 2446 | } |
2439 | if (s->display != NULL) { | 2447 | if (s->display != NULL) { |
diff --git a/sftp-client.c b/sftp-client.c index 626330262..0b53a2e68 100644 --- a/sftp-client.c +++ b/sftp-client.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sftp-client.c,v 1.127 2017/08/11 04:41:08 djm Exp $ */ | 1 | /* $OpenBSD: sftp-client.c,v 1.128 2017/11/28 21:10:22 dtucker 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 | * |
@@ -130,7 +130,7 @@ send_msg(struct sftp_conn *conn, struct sshbuf *m) | |||
130 | } | 130 | } |
131 | 131 | ||
132 | static void | 132 | static void |
133 | get_msg(struct sftp_conn *conn, struct sshbuf *m) | 133 | get_msg_extended(struct sftp_conn *conn, struct sshbuf *m, int initial) |
134 | { | 134 | { |
135 | u_int msg_len; | 135 | u_int msg_len; |
136 | u_char *p; | 136 | u_char *p; |
@@ -148,8 +148,12 @@ get_msg(struct sftp_conn *conn, struct sshbuf *m) | |||
148 | 148 | ||
149 | if ((r = sshbuf_get_u32(m, &msg_len)) != 0) | 149 | if ((r = sshbuf_get_u32(m, &msg_len)) != 0) |
150 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | 150 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
151 | if (msg_len > SFTP_MAX_MSG_LENGTH) | 151 | if (msg_len > SFTP_MAX_MSG_LENGTH) { |
152 | fatal("Received message too long %u", msg_len); | 152 | do_log2(initial ? SYSLOG_LEVEL_ERROR : SYSLOG_LEVEL_FATAL, |
153 | "Received message too long %u", msg_len); | ||
154 | fatal("Ensure the remote shell produces no output " | ||
155 | "for non-interactive sessions."); | ||
156 | } | ||
153 | 157 | ||
154 | if ((r = sshbuf_reserve(m, msg_len, &p)) != 0) | 158 | if ((r = sshbuf_reserve(m, msg_len, &p)) != 0) |
155 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | 159 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
@@ -164,6 +168,12 @@ get_msg(struct sftp_conn *conn, struct sshbuf *m) | |||
164 | } | 168 | } |
165 | 169 | ||
166 | static void | 170 | static void |
171 | get_msg(struct sftp_conn *conn, struct sshbuf *m) | ||
172 | { | ||
173 | get_msg_extended(conn, m, 0); | ||
174 | } | ||
175 | |||
176 | static void | ||
167 | send_string_request(struct sftp_conn *conn, u_int id, u_int code, const char *s, | 177 | send_string_request(struct sftp_conn *conn, u_int id, u_int code, const char *s, |
168 | u_int len) | 178 | u_int len) |
169 | { | 179 | { |
@@ -406,7 +416,7 @@ do_init(int fd_in, int fd_out, u_int transfer_buflen, u_int num_requests, | |||
406 | 416 | ||
407 | sshbuf_reset(msg); | 417 | sshbuf_reset(msg); |
408 | 418 | ||
409 | get_msg(ret, msg); | 419 | get_msg_extended(ret, msg, 1); |
410 | 420 | ||
411 | /* Expecting a VERSION reply */ | 421 | /* Expecting a VERSION reply */ |
412 | if ((r = sshbuf_get_u8(msg, &type)) != 0) | 422 | if ((r = sshbuf_get_u8(msg, &type)) != 0) |
@@ -7,32 +7,29 @@ SYNOPSIS | |||
7 | sftp [-46aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher] | 7 | sftp [-46aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher] |
8 | [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit] | 8 | [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit] |
9 | [-o ssh_option] [-P port] [-R num_requests] [-S program] | 9 | [-o ssh_option] [-P port] [-R num_requests] [-S program] |
10 | [-s subsystem | sftp_server] host | 10 | [-s subsystem | sftp_server] destination |
11 | sftp [user@]host[:file ...] | ||
12 | sftp [user@]host[:dir[/]] | ||
13 | sftp -b batchfile [user@]host | ||
14 | 11 | ||
15 | DESCRIPTION | 12 | DESCRIPTION |
16 | sftp is an interactive file transfer program, similar to ftp(1), which | 13 | sftp is a file transfer program, similar to ftp(1), which performs all |
17 | performs all operations over an encrypted ssh(1) transport. It may also | 14 | operations over an encrypted ssh(1) transport. It may also use many |
18 | use many features of ssh, such as public key authentication and | 15 | features of ssh, such as public key authentication and compression. |
19 | compression. sftp connects and logs into the specified host, then enters | ||
20 | an interactive command mode. | ||
21 | 16 | ||
22 | The second usage format will retrieve files automatically if a non- | 17 | The destination may be specified either as [user@]host[:path] or as a URI |
23 | interactive authentication method is used; otherwise it will do so after | 18 | in the form sftp://[user@]host[:port][/path]. |
24 | successful interactive authentication. | ||
25 | 19 | ||
26 | The third usage format allows sftp to start in a remote directory. | 20 | If the destination includes a path and it is not a directory, sftp will |
21 | retrieve files automatically if a non-interactive authentication method | ||
22 | is used; otherwise it will do so after successful interactive | ||
23 | authentication. | ||
27 | 24 | ||
28 | The final usage format allows for automated sessions using the -b option. | 25 | If no path is specified, or if the path is a directory, sftp will log in |
29 | In such cases, it is necessary to configure non-interactive | 26 | to the specified host and enter interactive command mode, changing to the |
30 | authentication to obviate the need to enter a password at connection time | 27 | remote directory if one was specified. An optional trailing slash can be |
31 | (see sshd(8) and ssh-keygen(1) for details). | 28 | used to force the path to be interpreted as a directory. |
32 | 29 | ||
33 | Since some usage formats use colon characters to delimit host names from | 30 | Since the destination formats use colon characters to delimit host names |
34 | path names, IPv6 addresses must be enclosed in square brackets to avoid | 31 | from path names or port numbers, IPv6 addresses must be enclosed in |
35 | ambiguity. | 32 | square brackets to avoid ambiguity. |
36 | 33 | ||
37 | The options are as follows: | 34 | The options are as follows: |
38 | 35 | ||
@@ -53,14 +50,15 @@ DESCRIPTION | |||
53 | -b batchfile | 50 | -b batchfile |
54 | Batch mode reads a series of commands from an input batchfile | 51 | Batch mode reads a series of commands from an input batchfile |
55 | instead of stdin. Since it lacks user interaction it should be | 52 | instead of stdin. Since it lacks user interaction it should be |
56 | used in conjunction with non-interactive authentication. A | 53 | used in conjunction with non-interactive authentication to |
57 | batchfile of M-bM-^@M-^X-M-bM-^@M-^Y may be used to indicate standard input. sftp | 54 | obviate the need to enter a password at connection time (see |
58 | will abort if any of the following commands fail: get, put, | 55 | sshd(8) and ssh-keygen(1) for details). A batchfile of M-bM-^@M-^X-M-bM-^@M-^Y may |
59 | reget, reput, rename, ln, rm, mkdir, chdir, ls, lchdir, chmod, | 56 | be used to indicate standard input. sftp will abort if any of |
60 | chown, chgrp, lpwd, df, symlink, and lmkdir. Termination on | 57 | the following commands fail: get, put, reget, reput, rename, ln, |
61 | error can be suppressed on a command by command basis by | 58 | rm, mkdir, chdir, ls, lchdir, chmod, chown, chgrp, lpwd, df, |
62 | prefixing the command with a M-bM-^@M-^X-M-bM-^@M-^Y character (for example, -rm | 59 | symlink, and lmkdir. Termination on error can be suppressed on a |
63 | /tmp/blah*). | 60 | command by command basis by prefixing the command with a M-bM-^@M-^X-M-bM-^@M-^Y |
61 | character (for example, -rm /tmp/blah*). | ||
64 | 62 | ||
65 | -C Enables compression (via ssh's -C flag). | 63 | -C Enables compression (via ssh's -C flag). |
66 | 64 | ||
@@ -99,6 +97,7 @@ DESCRIPTION | |||
99 | AddressFamily | 97 | AddressFamily |
100 | BatchMode | 98 | BatchMode |
101 | BindAddress | 99 | BindAddress |
100 | BindInterface | ||
102 | CanonicalDomains | 101 | CanonicalDomains |
103 | CanonicalizeFallbackLocal | 102 | CanonicalizeFallbackLocal |
104 | CanonicalizeHostname | 103 | CanonicalizeHostname |
@@ -193,8 +192,9 @@ INTERACTIVE COMMANDS | |||
193 | 192 | ||
194 | bye Quit sftp. | 193 | bye Quit sftp. |
195 | 194 | ||
196 | cd path | 195 | cd [path] |
197 | Change remote directory to path. | 196 | Change remote directory to path. If path is not specified, then |
197 | change directory to the one the session started in. | ||
198 | 198 | ||
199 | chgrp grp path | 199 | chgrp grp path |
200 | Change group of file path to grp. path may contain glob(3) | 200 | Change group of file path to grp. path may contain glob(3) |
@@ -246,8 +246,9 @@ INTERACTIVE COMMANDS | |||
246 | 246 | ||
247 | help Display help text. | 247 | help Display help text. |
248 | 248 | ||
249 | lcd path | 249 | lcd [path] |
250 | Change local directory to path. | 250 | Change local directory to path. If path is not specified, then |
251 | change directory to the local user's home directory. | ||
251 | 252 | ||
252 | lls [ls-options [path]] | 253 | lls [ls-options [path]] |
253 | Display local directory listing of either path or current | 254 | Display local directory listing of either path or current |
@@ -374,4 +375,4 @@ SEE ALSO | |||
374 | T. Ylonen and S. Lehtinen, SSH File Transfer Protocol, draft-ietf-secsh- | 375 | T. Ylonen and S. Lehtinen, SSH File Transfer Protocol, draft-ietf-secsh- |
375 | filexfer-00.txt, January 2001, work in progress material. | 376 | filexfer-00.txt, January 2001, work in progress material. |
376 | 377 | ||
377 | OpenBSD 6.2 May 3, 2017 OpenBSD 6.2 | 378 | OpenBSD 6.2 February 23, 2018 OpenBSD 6.2 |
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: sftp.1,v 1.110 2017/05/03 21:49:18 naddy Exp $ | 1 | .\" $OpenBSD: sftp.1,v 1.114 2018/02/23 07:38:09 jmc Exp $ |
2 | .\" | 2 | .\" |
3 | .\" Copyright (c) 2001 Damien Miller. All rights reserved. | 3 | .\" Copyright (c) 2001 Damien Miller. All rights reserved. |
4 | .\" | 4 | .\" |
@@ -22,7 +22,7 @@ | |||
22 | .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 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. | 23 | .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
24 | .\" | 24 | .\" |
25 | .Dd $Mdocdate: May 3 2017 $ | 25 | .Dd $Mdocdate: February 23 2018 $ |
26 | .Dt SFTP 1 | 26 | .Dt SFTP 1 |
27 | .Os | 27 | .Os |
28 | .Sh NAME | 28 | .Sh NAME |
@@ -30,7 +30,6 @@ | |||
30 | .Nd secure file transfer program | 30 | .Nd secure file transfer program |
31 | .Sh SYNOPSIS | 31 | .Sh SYNOPSIS |
32 | .Nm sftp | 32 | .Nm sftp |
33 | .Bk -words | ||
34 | .Op Fl 46aCfpqrv | 33 | .Op Fl 46aCfpqrv |
35 | .Op Fl B Ar buffer_size | 34 | .Op Fl B Ar buffer_size |
36 | .Op Fl b Ar batchfile | 35 | .Op Fl b Ar batchfile |
@@ -44,54 +43,55 @@ | |||
44 | .Op Fl R Ar num_requests | 43 | .Op Fl R Ar num_requests |
45 | .Op Fl S Ar program | 44 | .Op Fl S Ar program |
46 | .Op Fl s Ar subsystem | sftp_server | 45 | .Op Fl s Ar subsystem | sftp_server |
47 | .Ar host | 46 | .Ar destination |
48 | .Ek | ||
49 | .Nm sftp | ||
50 | .Oo Ar user Ns @ Oc Ns | ||
51 | .Ar host Ns Op : Ns Ar | ||
52 | .Nm sftp | ||
53 | .Oo | ||
54 | .Ar user Ns @ Oc Ns | ||
55 | .Ar host Ns Oo : Ns Ar dir Ns | ||
56 | .Op Ar / | ||
57 | .Oc | ||
58 | .Nm sftp | ||
59 | .Fl b Ar batchfile | ||
60 | .Oo Ar user Ns @ Oc Ns Ar host | ||
61 | .Sh DESCRIPTION | 47 | .Sh DESCRIPTION |
62 | .Nm | 48 | .Nm |
63 | is an interactive file transfer program, similar to | 49 | is a file transfer program, similar to |
64 | .Xr ftp 1 , | 50 | .Xr ftp 1 , |
65 | which performs all operations over an encrypted | 51 | which performs all operations over an encrypted |
66 | .Xr ssh 1 | 52 | .Xr ssh 1 |
67 | transport. | 53 | transport. |
68 | It may also use many features of ssh, such as public key authentication and | 54 | It may also use many features of ssh, such as public key authentication and |
69 | compression. | 55 | compression. |
70 | .Nm | ||
71 | connects and logs into the specified | ||
72 | .Ar host , | ||
73 | then enters an interactive command mode. | ||
74 | .Pp | 56 | .Pp |
75 | The second usage format will retrieve files automatically if a non-interactive | 57 | The |
58 | .Ar destination | ||
59 | may be specified either as | ||
60 | .Sm off | ||
61 | .Oo user @ Oc host Op : path | ||
62 | .Sm on | ||
63 | or as a URI in the form | ||
64 | .Sm off | ||
65 | .No sftp:// Oo user @ Oc host Oo : port Oc Op / path . | ||
66 | .Sm on | ||
67 | .Pp | ||
68 | If the | ||
69 | .Ar destination | ||
70 | includes a | ||
71 | .Ar path | ||
72 | and it is not a directory, | ||
73 | .Nm | ||
74 | will retrieve files automatically if a non-interactive | ||
76 | authentication method is used; otherwise it will do so after | 75 | authentication method is used; otherwise it will do so after |
77 | successful interactive authentication. | 76 | successful interactive authentication. |
78 | .Pp | 77 | .Pp |
79 | The third usage format allows | 78 | If no |
79 | .Ar path | ||
80 | is specified, or if the | ||
81 | .Ar path | ||
82 | is a directory, | ||
80 | .Nm | 83 | .Nm |
81 | to start in a remote directory. | 84 | will log in to the specified |
82 | .Pp | 85 | .Ar host |
83 | The final usage format allows for automated sessions using the | 86 | and enter interactive command mode, changing to the remote directory |
84 | .Fl b | 87 | if one was specified. |
85 | option. | 88 | An optional trailing slash can be used to force the |
86 | In such cases, it is necessary to configure non-interactive authentication | 89 | .Ar path |
87 | to obviate the need to enter a password at connection time (see | 90 | to be interpreted as a directory. |
88 | .Xr sshd 8 | ||
89 | and | ||
90 | .Xr ssh-keygen 1 | ||
91 | for details). | ||
92 | .Pp | 91 | .Pp |
93 | Since some usage formats use colon characters to delimit host names from path | 92 | Since the destination formats use colon characters to delimit host |
94 | names, IPv6 addresses must be enclosed in square brackets to avoid ambiguity. | 93 | names from path names or port numbers, IPv6 addresses must be |
94 | enclosed in square brackets to avoid ambiguity. | ||
95 | .Pp | 95 | .Pp |
96 | The options are as follows: | 96 | The options are as follows: |
97 | .Bl -tag -width Ds | 97 | .Bl -tag -width Ds |
@@ -121,7 +121,12 @@ Batch mode reads a series of commands from an input | |||
121 | instead of | 121 | instead of |
122 | .Em stdin . | 122 | .Em stdin . |
123 | Since it lacks user interaction it should be used in conjunction with | 123 | Since it lacks user interaction it should be used in conjunction with |
124 | non-interactive authentication. | 124 | non-interactive authentication to obviate the need to enter a password |
125 | at connection time (see | ||
126 | .Xr sshd 8 | ||
127 | and | ||
128 | .Xr ssh-keygen 1 | ||
129 | for details). | ||
125 | A | 130 | A |
126 | .Ar batchfile | 131 | .Ar batchfile |
127 | of | 132 | of |
@@ -189,6 +194,7 @@ For full details of the options listed below, and their possible values, see | |||
189 | .It AddressFamily | 194 | .It AddressFamily |
190 | .It BatchMode | 195 | .It BatchMode |
191 | .It BindAddress | 196 | .It BindAddress |
197 | .It BindInterface | ||
192 | .It CanonicalDomains | 198 | .It CanonicalDomains |
193 | .It CanonicalizeFallbackLocal | 199 | .It CanonicalizeFallbackLocal |
194 | .It CanonicalizeHostname | 200 | .It CanonicalizeHostname |
@@ -296,9 +302,12 @@ must be escaped with backslashes | |||
296 | .It Ic bye | 302 | .It Ic bye |
297 | Quit | 303 | Quit |
298 | .Nm sftp . | 304 | .Nm sftp . |
299 | .It Ic cd Ar path | 305 | .It Ic cd Op Ar path |
300 | Change remote directory to | 306 | Change remote directory to |
301 | .Ar path . | 307 | .Ar path . |
308 | If | ||
309 | .Ar path | ||
310 | is not specified, then change directory to the one the session started in. | ||
302 | .It Ic chgrp Ar grp Ar path | 311 | .It Ic chgrp Ar grp Ar path |
303 | Change group of file | 312 | Change group of file |
304 | .Ar path | 313 | .Ar path |
@@ -402,9 +411,12 @@ Note that | |||
402 | does not follow symbolic links when performing recursive transfers. | 411 | does not follow symbolic links when performing recursive transfers. |
403 | .It Ic help | 412 | .It Ic help |
404 | Display help text. | 413 | Display help text. |
405 | .It Ic lcd Ar path | 414 | .It Ic lcd Op Ar path |
406 | Change local directory to | 415 | Change local directory to |
407 | .Ar path . | 416 | .Ar path . |
417 | If | ||
418 | .Ar path | ||
419 | is not specified, then change directory to the local user's home directory. | ||
408 | .It Ic lls Op Ar ls-options Op Ar path | 420 | .It Ic lls Op Ar ls-options Op Ar path |
409 | Display local directory listing of either | 421 | Display local directory listing of either |
410 | .Ar path | 422 | .Ar path |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sftp.c,v 1.180 2017/06/10 06:33:34 djm Exp $ */ | 1 | /* $OpenBSD: sftp.c,v 1.182 2017/11/03 03:46:52 djm 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 | * |
@@ -217,8 +217,6 @@ static const struct CMD cmds[] = { | |||
217 | { NULL, -1, -1 } | 217 | { NULL, -1, -1 } |
218 | }; | 218 | }; |
219 | 219 | ||
220 | int interactive_loop(struct sftp_conn *, char *file1, char *file2); | ||
221 | |||
222 | /* ARGSUSED */ | 220 | /* ARGSUSED */ |
223 | static void | 221 | static void |
224 | killchild(int signo) | 222 | killchild(int signo) |
@@ -1288,7 +1286,7 @@ parse_args(const char **cpp, int *ignore_errors, int *aflag, | |||
1288 | char *cp2, **argv; | 1286 | char *cp2, **argv; |
1289 | int base = 0; | 1287 | int base = 0; |
1290 | long l; | 1288 | long l; |
1291 | int i, cmdnum, optidx, argc; | 1289 | int path1_mandatory = 0, i, cmdnum, optidx, argc; |
1292 | 1290 | ||
1293 | /* Skip leading whitespace */ | 1291 | /* Skip leading whitespace */ |
1294 | cp = cp + strspn(cp, WHITESPACE); | 1292 | cp = cp + strspn(cp, WHITESPACE); |
@@ -1378,13 +1376,17 @@ parse_args(const char **cpp, int *ignore_errors, int *aflag, | |||
1378 | case I_RM: | 1376 | case I_RM: |
1379 | case I_MKDIR: | 1377 | case I_MKDIR: |
1380 | case I_RMDIR: | 1378 | case I_RMDIR: |
1379 | case I_LMKDIR: | ||
1380 | path1_mandatory = 1; | ||
1381 | /* FALLTHROUGH */ | ||
1381 | case I_CHDIR: | 1382 | case I_CHDIR: |
1382 | case I_LCHDIR: | 1383 | case I_LCHDIR: |
1383 | case I_LMKDIR: | ||
1384 | if ((optidx = parse_no_flags(cmd, argv, argc)) == -1) | 1384 | if ((optidx = parse_no_flags(cmd, argv, argc)) == -1) |
1385 | return -1; | 1385 | return -1; |
1386 | /* Get pathname (mandatory) */ | 1386 | /* Get pathname (mandatory) */ |
1387 | if (argc - optidx < 1) { | 1387 | if (argc - optidx < 1) { |
1388 | if (!path1_mandatory) | ||
1389 | break; /* return a NULL path1 */ | ||
1388 | error("You must specify a path after a %s command.", | 1390 | error("You must specify a path after a %s command.", |
1389 | cmd); | 1391 | cmd); |
1390 | return -1; | 1392 | return -1; |
@@ -1469,7 +1471,7 @@ parse_args(const char **cpp, int *ignore_errors, int *aflag, | |||
1469 | 1471 | ||
1470 | static int | 1472 | static int |
1471 | parse_dispatch_command(struct sftp_conn *conn, const char *cmd, char **pwd, | 1473 | parse_dispatch_command(struct sftp_conn *conn, const char *cmd, char **pwd, |
1472 | int err_abort) | 1474 | const char *startdir, int err_abort) |
1473 | { | 1475 | { |
1474 | char *path1, *path2, *tmp; | 1476 | char *path1, *path2, *tmp; |
1475 | int ignore_errors = 0, aflag = 0, fflag = 0, hflag = 0, | 1477 | int ignore_errors = 0, aflag = 0, fflag = 0, hflag = 0, |
@@ -1549,6 +1551,8 @@ parse_dispatch_command(struct sftp_conn *conn, const char *cmd, char **pwd, | |||
1549 | err = do_rmdir(conn, path1); | 1551 | err = do_rmdir(conn, path1); |
1550 | break; | 1552 | break; |
1551 | case I_CHDIR: | 1553 | case I_CHDIR: |
1554 | if (path1 == NULL || *path1 == '\0') | ||
1555 | path1 = xstrdup(startdir); | ||
1552 | path1 = make_absolute(path1, *pwd); | 1556 | path1 = make_absolute(path1, *pwd); |
1553 | if ((tmp = do_realpath(conn, path1)) == NULL) { | 1557 | if ((tmp = do_realpath(conn, path1)) == NULL) { |
1554 | err = 1; | 1558 | err = 1; |
@@ -1597,6 +1601,8 @@ parse_dispatch_command(struct sftp_conn *conn, const char *cmd, char **pwd, | |||
1597 | err = do_df(conn, path1, hflag, iflag); | 1601 | err = do_df(conn, path1, hflag, iflag); |
1598 | break; | 1602 | break; |
1599 | case I_LCHDIR: | 1603 | case I_LCHDIR: |
1604 | if (path1 == NULL || *path1 == '\0') | ||
1605 | path1 = xstrdup("~"); | ||
1600 | tmp = tilde_expand_filename(path1, getuid()); | 1606 | tmp = tilde_expand_filename(path1, getuid()); |
1601 | free(path1); | 1607 | free(path1); |
1602 | path1 = tmp; | 1608 | path1 = tmp; |
@@ -2083,11 +2089,11 @@ complete(EditLine *el, int ch) | |||
2083 | } | 2089 | } |
2084 | #endif /* USE_LIBEDIT */ | 2090 | #endif /* USE_LIBEDIT */ |
2085 | 2091 | ||
2086 | int | 2092 | static int |
2087 | interactive_loop(struct sftp_conn *conn, char *file1, char *file2) | 2093 | interactive_loop(struct sftp_conn *conn, char *file1, char *file2) |
2088 | { | 2094 | { |
2089 | char *remote_path; | 2095 | char *remote_path; |
2090 | char *dir = NULL; | 2096 | char *dir = NULL, *startdir = NULL; |
2091 | char cmd[2048]; | 2097 | char cmd[2048]; |
2092 | int err, interactive; | 2098 | int err, interactive; |
2093 | EditLine *el = NULL; | 2099 | EditLine *el = NULL; |
@@ -2131,6 +2137,7 @@ interactive_loop(struct sftp_conn *conn, char *file1, char *file2) | |||
2131 | remote_path = do_realpath(conn, "."); | 2137 | remote_path = do_realpath(conn, "."); |
2132 | if (remote_path == NULL) | 2138 | if (remote_path == NULL) |
2133 | fatal("Need cwd"); | 2139 | fatal("Need cwd"); |
2140 | startdir = xstrdup(remote_path); | ||
2134 | 2141 | ||
2135 | if (file1 != NULL) { | 2142 | if (file1 != NULL) { |
2136 | dir = xstrdup(file1); | 2143 | dir = xstrdup(file1); |
@@ -2141,8 +2148,9 @@ interactive_loop(struct sftp_conn *conn, char *file1, char *file2) | |||
2141 | mprintf("Changing to: %s\n", dir); | 2148 | mprintf("Changing to: %s\n", dir); |
2142 | snprintf(cmd, sizeof cmd, "cd \"%s\"", dir); | 2149 | snprintf(cmd, sizeof cmd, "cd \"%s\"", dir); |
2143 | if (parse_dispatch_command(conn, cmd, | 2150 | if (parse_dispatch_command(conn, cmd, |
2144 | &remote_path, 1) != 0) { | 2151 | &remote_path, startdir, 1) != 0) { |
2145 | free(dir); | 2152 | free(dir); |
2153 | free(startdir); | ||
2146 | free(remote_path); | 2154 | free(remote_path); |
2147 | free(conn); | 2155 | free(conn); |
2148 | return (-1); | 2156 | return (-1); |
@@ -2154,8 +2162,9 @@ interactive_loop(struct sftp_conn *conn, char *file1, char *file2) | |||
2154 | file2 == NULL ? "" : " ", | 2162 | file2 == NULL ? "" : " ", |
2155 | file2 == NULL ? "" : file2); | 2163 | file2 == NULL ? "" : file2); |
2156 | err = parse_dispatch_command(conn, cmd, | 2164 | err = parse_dispatch_command(conn, cmd, |
2157 | &remote_path, 1); | 2165 | &remote_path, startdir, 1); |
2158 | free(dir); | 2166 | free(dir); |
2167 | free(startdir); | ||
2159 | free(remote_path); | 2168 | free(remote_path); |
2160 | free(conn); | 2169 | free(conn); |
2161 | return (err); | 2170 | return (err); |
@@ -2214,11 +2223,12 @@ interactive_loop(struct sftp_conn *conn, char *file1, char *file2) | |||
2214 | signal(SIGINT, cmd_interrupt); | 2223 | signal(SIGINT, cmd_interrupt); |
2215 | 2224 | ||
2216 | err = parse_dispatch_command(conn, cmd, &remote_path, | 2225 | err = parse_dispatch_command(conn, cmd, &remote_path, |
2217 | batchmode); | 2226 | startdir, batchmode); |
2218 | if (err != 0) | 2227 | if (err != 0) |
2219 | break; | 2228 | break; |
2220 | } | 2229 | } |
2221 | free(remote_path); | 2230 | free(remote_path); |
2231 | free(startdir); | ||
2222 | free(conn); | 2232 | free(conn); |
2223 | 2233 | ||
2224 | #ifdef USE_LIBEDIT | 2234 | #ifdef USE_LIBEDIT |
@@ -2301,19 +2311,16 @@ usage(void) | |||
2301 | "[-i identity_file] [-l limit]\n" | 2311 | "[-i identity_file] [-l limit]\n" |
2302 | " [-o ssh_option] [-P port] [-R num_requests] " | 2312 | " [-o ssh_option] [-P port] [-R num_requests] " |
2303 | "[-S program]\n" | 2313 | "[-S program]\n" |
2304 | " [-s subsystem | sftp_server] host\n" | 2314 | " [-s subsystem | sftp_server] destination\n", |
2305 | " %s [user@]host[:file ...]\n" | 2315 | __progname); |
2306 | " %s [user@]host[:dir[/]]\n" | ||
2307 | " %s -b batchfile [user@]host\n", | ||
2308 | __progname, __progname, __progname, __progname); | ||
2309 | exit(1); | 2316 | exit(1); |
2310 | } | 2317 | } |
2311 | 2318 | ||
2312 | int | 2319 | int |
2313 | main(int argc, char **argv) | 2320 | main(int argc, char **argv) |
2314 | { | 2321 | { |
2315 | int in, out, ch, err; | 2322 | int in, out, ch, err, tmp, port = -1; |
2316 | char *host = NULL, *userhost, *cp, *file2 = NULL; | 2323 | char *host = NULL, *user, *cp, *file2 = NULL; |
2317 | int debug_level = 0, sshver = 2; | 2324 | int debug_level = 0, sshver = 2; |
2318 | char *file1 = NULL, *sftp_server = NULL; | 2325 | char *file1 = NULL, *sftp_server = NULL; |
2319 | char *ssh_program = _PATH_SSH_PROGRAM, *sftp_direct = NULL; | 2326 | char *ssh_program = _PATH_SSH_PROGRAM, *sftp_direct = NULL; |
@@ -2368,7 +2375,9 @@ main(int argc, char **argv) | |||
2368 | addargs(&args, "-%c", ch); | 2375 | addargs(&args, "-%c", ch); |
2369 | break; | 2376 | break; |
2370 | case 'P': | 2377 | case 'P': |
2371 | addargs(&args, "-oPort %s", optarg); | 2378 | port = a2port(optarg); |
2379 | if (port <= 0) | ||
2380 | fatal("Bad port \"%s\"\n", optarg); | ||
2372 | break; | 2381 | break; |
2373 | case 'v': | 2382 | case 'v': |
2374 | if (debug_level < 3) { | 2383 | if (debug_level < 3) { |
@@ -2451,33 +2460,38 @@ main(int argc, char **argv) | |||
2451 | if (sftp_direct == NULL) { | 2460 | if (sftp_direct == NULL) { |
2452 | if (optind == argc || argc > (optind + 2)) | 2461 | if (optind == argc || argc > (optind + 2)) |
2453 | usage(); | 2462 | usage(); |
2463 | argv += optind; | ||
2454 | 2464 | ||
2455 | userhost = xstrdup(argv[optind]); | 2465 | switch (parse_uri("sftp", *argv, &user, &host, &tmp, &file1)) { |
2456 | file2 = argv[optind+1]; | 2466 | case -1: |
2457 | 2467 | usage(); | |
2458 | if ((host = strrchr(userhost, '@')) == NULL) | 2468 | break; |
2459 | host = userhost; | 2469 | case 0: |
2460 | else { | 2470 | if (tmp != -1) |
2461 | *host++ = '\0'; | 2471 | port = tmp; |
2462 | if (!userhost[0]) { | 2472 | break; |
2463 | fprintf(stderr, "Missing username\n"); | 2473 | default: |
2464 | usage(); | 2474 | if (parse_user_host_path(*argv, &user, &host, |
2475 | &file1) == -1) { | ||
2476 | /* Treat as a plain hostname. */ | ||
2477 | host = xstrdup(*argv); | ||
2478 | host = cleanhostname(host); | ||
2465 | } | 2479 | } |
2466 | addargs(&args, "-l"); | 2480 | break; |
2467 | addargs(&args, "%s", userhost); | ||
2468 | } | ||
2469 | |||
2470 | if ((cp = colon(host)) != NULL) { | ||
2471 | *cp++ = '\0'; | ||
2472 | file1 = cp; | ||
2473 | } | 2481 | } |
2482 | file2 = *(argv + 1); | ||
2474 | 2483 | ||
2475 | host = cleanhostname(host); | ||
2476 | if (!*host) { | 2484 | if (!*host) { |
2477 | fprintf(stderr, "Missing hostname\n"); | 2485 | fprintf(stderr, "Missing hostname\n"); |
2478 | usage(); | 2486 | usage(); |
2479 | } | 2487 | } |
2480 | 2488 | ||
2489 | if (port != -1) | ||
2490 | addargs(&args, "-oPort %d", port); | ||
2491 | if (user != NULL) { | ||
2492 | addargs(&args, "-l"); | ||
2493 | addargs(&args, "%s", user); | ||
2494 | } | ||
2481 | addargs(&args, "-oProtocol %d", sshver); | 2495 | addargs(&args, "-oProtocol %d", sshver); |
2482 | 2496 | ||
2483 | /* no subsystem if the server-spec contains a '/' */ | 2497 | /* no subsystem if the server-spec contains a '/' */ |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-add.c,v 1.134 2017/08/29 09:42:29 dlg Exp $ */ | 1 | /* $OpenBSD: ssh-add.c,v 1.135 2018/02/23 15:58:37 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 |
@@ -78,6 +78,7 @@ static char *default_files[] = { | |||
78 | #endif | 78 | #endif |
79 | #endif /* WITH_OPENSSL */ | 79 | #endif /* WITH_OPENSSL */ |
80 | _PATH_SSH_CLIENT_ID_ED25519, | 80 | _PATH_SSH_CLIENT_ID_ED25519, |
81 | _PATH_SSH_CLIENT_ID_XMSS, | ||
81 | NULL | 82 | NULL |
82 | }; | 83 | }; |
83 | 84 | ||
@@ -89,6 +90,10 @@ static int lifetime = 0; | |||
89 | /* User has to confirm key use */ | 90 | /* User has to confirm key use */ |
90 | static int confirm = 0; | 91 | static int confirm = 0; |
91 | 92 | ||
93 | /* Maximum number of signatures (XMSS) */ | ||
94 | static u_int maxsign = 0; | ||
95 | static u_int minleft = 0; | ||
96 | |||
92 | /* we keep a cache of one passphrase */ | 97 | /* we keep a cache of one passphrase */ |
93 | static char *pass = NULL; | 98 | static char *pass = NULL; |
94 | static void | 99 | static void |
@@ -190,7 +195,10 @@ add_file(int agent_fd, const char *filename, int key_only, int qflag) | |||
190 | char *comment = NULL; | 195 | char *comment = NULL; |
191 | char msg[1024], *certpath = NULL; | 196 | char msg[1024], *certpath = NULL; |
192 | int r, fd, ret = -1; | 197 | int r, fd, ret = -1; |
198 | size_t i; | ||
199 | u_int32_t left; | ||
193 | struct sshbuf *keyblob; | 200 | struct sshbuf *keyblob; |
201 | struct ssh_identitylist *idlist; | ||
194 | 202 | ||
195 | if (strcmp(filename, "-") == 0) { | 203 | if (strcmp(filename, "-") == 0) { |
196 | fd = STDIN_FILENO; | 204 | fd = STDIN_FILENO; |
@@ -268,8 +276,40 @@ add_file(int agent_fd, const char *filename, int key_only, int qflag) | |||
268 | comment = xstrdup(filename); | 276 | comment = xstrdup(filename); |
269 | sshbuf_free(keyblob); | 277 | sshbuf_free(keyblob); |
270 | 278 | ||
279 | /* For XMSS */ | ||
280 | if ((r = sshkey_set_filename(private, filename)) != 0) { | ||
281 | fprintf(stderr, "Could not add filename to private key: %s (%s)\n", | ||
282 | filename, comment); | ||
283 | goto out; | ||
284 | } | ||
285 | if (maxsign && minleft && | ||
286 | (r = ssh_fetch_identitylist(agent_fd, &idlist)) == 0) { | ||
287 | for (i = 0; i < idlist->nkeys; i++) { | ||
288 | if (!sshkey_equal_public(idlist->keys[i], private)) | ||
289 | continue; | ||
290 | left = sshkey_signatures_left(idlist->keys[i]); | ||
291 | if (left < minleft) { | ||
292 | fprintf(stderr, | ||
293 | "Only %d signatures left.\n", left); | ||
294 | break; | ||
295 | } | ||
296 | fprintf(stderr, "Skipping update: "); | ||
297 | if (left == minleft) { | ||
298 | fprintf(stderr, | ||
299 | "required signatures left (%d).\n", left); | ||
300 | } else { | ||
301 | fprintf(stderr, | ||
302 | "more signatures left (%d) than" | ||
303 | " required (%d).\n", left, minleft); | ||
304 | } | ||
305 | ssh_free_identitylist(idlist); | ||
306 | goto out; | ||
307 | } | ||
308 | ssh_free_identitylist(idlist); | ||
309 | } | ||
310 | |||
271 | if ((r = ssh_add_identity_constrained(agent_fd, private, comment, | 311 | if ((r = ssh_add_identity_constrained(agent_fd, private, comment, |
272 | lifetime, confirm)) == 0) { | 312 | lifetime, confirm, maxsign)) == 0) { |
273 | fprintf(stderr, "Identity added: %s (%s)\n", filename, comment); | 313 | fprintf(stderr, "Identity added: %s (%s)\n", filename, comment); |
274 | ret = 0; | 314 | ret = 0; |
275 | if (lifetime != 0) | 315 | if (lifetime != 0) |
@@ -317,7 +357,7 @@ add_file(int agent_fd, const char *filename, int key_only, int qflag) | |||
317 | sshkey_free(cert); | 357 | sshkey_free(cert); |
318 | 358 | ||
319 | if ((r = ssh_add_identity_constrained(agent_fd, private, comment, | 359 | if ((r = ssh_add_identity_constrained(agent_fd, private, comment, |
320 | lifetime, confirm)) != 0) { | 360 | lifetime, confirm, maxsign)) != 0) { |
321 | error("Certificate %s (%s) add failed: %s", certpath, | 361 | error("Certificate %s (%s) add failed: %s", certpath, |
322 | private->cert->key_id, ssh_err(r)); | 362 | private->cert->key_id, ssh_err(r)); |
323 | goto out; | 363 | goto out; |
@@ -368,6 +408,7 @@ list_identities(int agent_fd, int do_fp) | |||
368 | char *fp; | 408 | char *fp; |
369 | int r; | 409 | int r; |
370 | struct ssh_identitylist *idlist; | 410 | struct ssh_identitylist *idlist; |
411 | u_int32_t left; | ||
371 | size_t i; | 412 | size_t i; |
372 | 413 | ||
373 | if ((r = ssh_fetch_identitylist(agent_fd, &idlist)) != 0) { | 414 | if ((r = ssh_fetch_identitylist(agent_fd, &idlist)) != 0) { |
@@ -392,7 +433,12 @@ list_identities(int agent_fd, int do_fp) | |||
392 | ssh_err(r)); | 433 | ssh_err(r)); |
393 | continue; | 434 | continue; |
394 | } | 435 | } |
395 | fprintf(stdout, " %s\n", idlist->comments[i]); | 436 | fprintf(stdout, " %s", idlist->comments[i]); |
437 | left = sshkey_signatures_left(idlist->keys[i]); | ||
438 | if (left > 0) | ||
439 | fprintf(stdout, | ||
440 | " [signatures left %d]", left); | ||
441 | fprintf(stdout, "\n"); | ||
396 | } | 442 | } |
397 | } | 443 | } |
398 | ssh_free_identitylist(idlist); | 444 | ssh_free_identitylist(idlist); |
@@ -454,6 +500,8 @@ usage(void) | |||
454 | fprintf(stderr, " -L List public key parameters of all identities.\n"); | 500 | fprintf(stderr, " -L List public key parameters of all identities.\n"); |
455 | fprintf(stderr, " -k Load only keys and not certificates.\n"); | 501 | fprintf(stderr, " -k Load only keys and not certificates.\n"); |
456 | fprintf(stderr, " -c Require confirmation to sign using identities\n"); | 502 | fprintf(stderr, " -c Require confirmation to sign using identities\n"); |
503 | fprintf(stderr, " -m minleft Maxsign is only changed if less than minleft are left (for XMSS)\n"); | ||
504 | fprintf(stderr, " -M maxsign Maximum number of signatures allowed (for XMSS)\n"); | ||
457 | fprintf(stderr, " -t life Set lifetime (in seconds) when adding identities.\n"); | 505 | fprintf(stderr, " -t life Set lifetime (in seconds) when adding identities.\n"); |
458 | fprintf(stderr, " -d Delete identity.\n"); | 506 | fprintf(stderr, " -d Delete identity.\n"); |
459 | fprintf(stderr, " -D Delete all identities.\n"); | 507 | fprintf(stderr, " -D Delete all identities.\n"); |
@@ -500,7 +548,7 @@ main(int argc, char **argv) | |||
500 | exit(2); | 548 | exit(2); |
501 | } | 549 | } |
502 | 550 | ||
503 | while ((ch = getopt(argc, argv, "klLcdDxXE:e:qs:t:")) != -1) { | 551 | while ((ch = getopt(argc, argv, "klLcdDxXE:e:M:m:qs:t:")) != -1) { |
504 | switch (ch) { | 552 | switch (ch) { |
505 | case 'E': | 553 | case 'E': |
506 | fingerprint_hash = ssh_digest_alg_by_name(optarg); | 554 | fingerprint_hash = ssh_digest_alg_by_name(optarg); |
@@ -525,6 +573,22 @@ main(int argc, char **argv) | |||
525 | case 'c': | 573 | case 'c': |
526 | confirm = 1; | 574 | confirm = 1; |
527 | break; | 575 | break; |
576 | case 'm': | ||
577 | minleft = (int)strtonum(optarg, 1, UINT_MAX, NULL); | ||
578 | if (minleft == 0) { | ||
579 | usage(); | ||
580 | ret = 1; | ||
581 | goto done; | ||
582 | } | ||
583 | break; | ||
584 | case 'M': | ||
585 | maxsign = (int)strtonum(optarg, 1, UINT_MAX, NULL); | ||
586 | if (maxsign == 0) { | ||
587 | usage(); | ||
588 | ret = 1; | ||
589 | goto done; | ||
590 | } | ||
591 | break; | ||
528 | case 'd': | 592 | case 'd': |
529 | deleting = 1; | 593 | deleting = 1; |
530 | break; | 594 | break; |
diff --git a/ssh-agent.c b/ssh-agent.c index 0c6c36592..2a4578b03 100644 --- a/ssh-agent.c +++ b/ssh-agent.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-agent.c,v 1.224 2017/07/24 04:34:28 djm Exp $ */ | 1 | /* $OpenBSD: ssh-agent.c,v 1.228 2018/02/23 15:58:37 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 |
@@ -245,7 +245,8 @@ process_request_identities(SocketEntry *e) | |||
245 | (r = sshbuf_put_u32(msg, idtab->nentries)) != 0) | 245 | (r = sshbuf_put_u32(msg, idtab->nentries)) != 0) |
246 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | 246 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
247 | TAILQ_FOREACH(id, &idtab->idlist, next) { | 247 | TAILQ_FOREACH(id, &idtab->idlist, next) { |
248 | if ((r = sshkey_puts(id->key, msg)) != 0 || | 248 | if ((r = sshkey_puts_opts(id->key, msg, SSHKEY_SERIALIZE_INFO)) |
249 | != 0 || | ||
249 | (r = sshbuf_put_cstring(msg, id->comment)) != 0) { | 250 | (r = sshbuf_put_cstring(msg, id->comment)) != 0) { |
250 | error("%s: put key/comment: %s", __func__, | 251 | error("%s: put key/comment: %s", __func__, |
251 | ssh_err(r)); | 252 | ssh_err(r)); |
@@ -287,10 +288,11 @@ process_sign_request2(SocketEntry *e) | |||
287 | fatal("%s: sshbuf_new failed", __func__); | 288 | fatal("%s: sshbuf_new failed", __func__); |
288 | if ((r = sshkey_froms(e->request, &key)) != 0 || | 289 | if ((r = sshkey_froms(e->request, &key)) != 0 || |
289 | (r = sshbuf_get_string_direct(e->request, &data, &dlen)) != 0 || | 290 | (r = sshbuf_get_string_direct(e->request, &data, &dlen)) != 0 || |
290 | (r = sshbuf_get_u32(e->request, &flags)) != 0) | 291 | (r = sshbuf_get_u32(e->request, &flags)) != 0) { |
291 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | 292 | error("%s: couldn't parse request: %s", __func__, ssh_err(r)); |
292 | if (flags & SSH_AGENT_OLD_SIGNATURE) | 293 | goto send; |
293 | compat = SSH_BUG_SIGBLOB; | 294 | } |
295 | |||
294 | if ((id = lookup_identity(key)) == NULL) { | 296 | if ((id = lookup_identity(key)) == NULL) { |
295 | verbose("%s: %s key not found", __func__, sshkey_type(key)); | 297 | verbose("%s: %s key not found", __func__, sshkey_type(key)); |
296 | goto send; | 298 | goto send; |
@@ -401,7 +403,7 @@ process_add_identity(SocketEntry *e) | |||
401 | { | 403 | { |
402 | Identity *id; | 404 | Identity *id; |
403 | int success = 0, confirm = 0; | 405 | int success = 0, confirm = 0; |
404 | u_int seconds; | 406 | u_int seconds, maxsign; |
405 | char *comment = NULL; | 407 | char *comment = NULL; |
406 | time_t death = 0; | 408 | time_t death = 0; |
407 | struct sshkey *k = NULL; | 409 | struct sshkey *k = NULL; |
@@ -432,6 +434,18 @@ process_add_identity(SocketEntry *e) | |||
432 | case SSH_AGENT_CONSTRAIN_CONFIRM: | 434 | case SSH_AGENT_CONSTRAIN_CONFIRM: |
433 | confirm = 1; | 435 | confirm = 1; |
434 | break; | 436 | break; |
437 | case SSH_AGENT_CONSTRAIN_MAXSIGN: | ||
438 | if ((r = sshbuf_get_u32(e->request, &maxsign)) != 0) { | ||
439 | error("%s: bad maxsign constraint: %s", | ||
440 | __func__, ssh_err(r)); | ||
441 | goto err; | ||
442 | } | ||
443 | if ((r = sshkey_enable_maxsign(k, maxsign)) != 0) { | ||
444 | error("%s: cannot enable maxsign: %s", | ||
445 | __func__, ssh_err(r)); | ||
446 | goto err; | ||
447 | } | ||
448 | break; | ||
435 | default: | 449 | default: |
436 | error("%s: Unknown constraint %d", __func__, ctype); | 450 | error("%s: Unknown constraint %d", __func__, ctype); |
437 | err: | 451 | err: |
@@ -447,14 +461,15 @@ process_add_identity(SocketEntry *e) | |||
447 | death = monotime() + lifetime; | 461 | death = monotime() + lifetime; |
448 | if ((id = lookup_identity(k)) == NULL) { | 462 | if ((id = lookup_identity(k)) == NULL) { |
449 | id = xcalloc(1, sizeof(Identity)); | 463 | id = xcalloc(1, sizeof(Identity)); |
450 | id->key = k; | ||
451 | TAILQ_INSERT_TAIL(&idtab->idlist, id, next); | 464 | TAILQ_INSERT_TAIL(&idtab->idlist, id, next); |
452 | /* Increment the number of identities. */ | 465 | /* Increment the number of identities. */ |
453 | idtab->nentries++; | 466 | idtab->nentries++; |
454 | } else { | 467 | } else { |
455 | sshkey_free(k); | 468 | /* key state might have been updated */ |
469 | sshkey_free(id->key); | ||
456 | free(id->comment); | 470 | free(id->comment); |
457 | } | 471 | } |
472 | id->key = k; | ||
458 | id->comment = comment; | 473 | id->comment = comment; |
459 | id->death = death; | 474 | id->death = death; |
460 | id->confirm = confirm; | 475 | id->confirm = confirm; |
@@ -472,6 +487,11 @@ process_lock_agent(SocketEntry *e, int lock) | |||
472 | static u_int fail_count = 0; | 487 | static u_int fail_count = 0; |
473 | size_t pwlen; | 488 | size_t pwlen; |
474 | 489 | ||
490 | /* | ||
491 | * This is deliberately fatal: the user has requested that we lock, | ||
492 | * but we can't parse their request properly. The only safe thing to | ||
493 | * do is abort. | ||
494 | */ | ||
475 | if ((r = sshbuf_get_cstring(e->request, &passwd, &pwlen)) != 0) | 495 | if ((r = sshbuf_get_cstring(e->request, &passwd, &pwlen)) != 0) |
476 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | 496 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
477 | if (pwlen == 0) { | 497 | if (pwlen == 0) { |
@@ -529,7 +549,7 @@ no_identities(SocketEntry *e) | |||
529 | static void | 549 | static void |
530 | process_add_smartcard_key(SocketEntry *e) | 550 | process_add_smartcard_key(SocketEntry *e) |
531 | { | 551 | { |
532 | char *provider = NULL, *pin, canonical_provider[PATH_MAX]; | 552 | char *provider = NULL, *pin = NULL, canonical_provider[PATH_MAX]; |
533 | int r, i, count = 0, success = 0, confirm = 0; | 553 | int r, i, count = 0, success = 0, confirm = 0; |
534 | u_int seconds; | 554 | u_int seconds; |
535 | time_t death = 0; | 555 | time_t death = 0; |
@@ -538,17 +558,23 @@ process_add_smartcard_key(SocketEntry *e) | |||
538 | Identity *id; | 558 | Identity *id; |
539 | 559 | ||
540 | if ((r = sshbuf_get_cstring(e->request, &provider, NULL)) != 0 || | 560 | if ((r = sshbuf_get_cstring(e->request, &provider, NULL)) != 0 || |
541 | (r = sshbuf_get_cstring(e->request, &pin, NULL)) != 0) | 561 | (r = sshbuf_get_cstring(e->request, &pin, NULL)) != 0) { |
542 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | 562 | error("%s: buffer error: %s", __func__, ssh_err(r)); |
563 | goto send; | ||
564 | } | ||
543 | 565 | ||
544 | while (sshbuf_len(e->request)) { | 566 | while (sshbuf_len(e->request)) { |
545 | if ((r = sshbuf_get_u8(e->request, &type)) != 0) | 567 | if ((r = sshbuf_get_u8(e->request, &type)) != 0) { |
546 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | 568 | error("%s: buffer error: %s", __func__, ssh_err(r)); |
569 | goto send; | ||
570 | } | ||
547 | switch (type) { | 571 | switch (type) { |
548 | case SSH_AGENT_CONSTRAIN_LIFETIME: | 572 | case SSH_AGENT_CONSTRAIN_LIFETIME: |
549 | if ((r = sshbuf_get_u32(e->request, &seconds)) != 0) | 573 | if ((r = sshbuf_get_u32(e->request, &seconds)) != 0) { |
550 | fatal("%s: buffer error: %s", | 574 | error("%s: buffer error: %s", |
551 | __func__, ssh_err(r)); | 575 | __func__, ssh_err(r)); |
576 | goto send; | ||
577 | } | ||
552 | death = monotime() + seconds; | 578 | death = monotime() + seconds; |
553 | break; | 579 | break; |
554 | case SSH_AGENT_CONSTRAIN_CONFIRM: | 580 | case SSH_AGENT_CONSTRAIN_CONFIRM: |
@@ -606,8 +632,10 @@ process_remove_smartcard_key(SocketEntry *e) | |||
606 | Identity *id, *nxt; | 632 | Identity *id, *nxt; |
607 | 633 | ||
608 | if ((r = sshbuf_get_cstring(e->request, &provider, NULL)) != 0 || | 634 | if ((r = sshbuf_get_cstring(e->request, &provider, NULL)) != 0 || |
609 | (r = sshbuf_get_cstring(e->request, &pin, NULL)) != 0) | 635 | (r = sshbuf_get_cstring(e->request, &pin, NULL)) != 0) { |
610 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | 636 | error("%s: buffer error: %s", __func__, ssh_err(r)); |
637 | goto send; | ||
638 | } | ||
611 | free(pin); | 639 | free(pin); |
612 | 640 | ||
613 | if (realpath(provider, canonical_provider) == NULL) { | 641 | if (realpath(provider, canonical_provider) == NULL) { |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-dss.c,v 1.35 2016/04/21 06:08:02 djm Exp $ */ | 1 | /* $OpenBSD: ssh-dss.c,v 1.37 2018/02/07 02:06:51 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -86,42 +86,28 @@ ssh_dss_sign(const struct sshkey *key, u_char **sigp, size_t *lenp, | |||
86 | BN_bn2bin(sig->r, sigblob + SIGBLOB_LEN - INTBLOB_LEN - rlen); | 86 | BN_bn2bin(sig->r, sigblob + SIGBLOB_LEN - INTBLOB_LEN - rlen); |
87 | BN_bn2bin(sig->s, sigblob + SIGBLOB_LEN - slen); | 87 | BN_bn2bin(sig->s, sigblob + SIGBLOB_LEN - slen); |
88 | 88 | ||
89 | if (compat & SSH_BUG_SIGBLOB) { | 89 | if ((b = sshbuf_new()) == NULL) { |
90 | if (sigp != NULL) { | 90 | ret = SSH_ERR_ALLOC_FAIL; |
91 | if ((*sigp = malloc(SIGBLOB_LEN)) == NULL) { | 91 | goto out; |
92 | ret = SSH_ERR_ALLOC_FAIL; | 92 | } |
93 | goto out; | 93 | if ((ret = sshbuf_put_cstring(b, "ssh-dss")) != 0 || |
94 | } | 94 | (ret = sshbuf_put_string(b, sigblob, SIGBLOB_LEN)) != 0) |
95 | memcpy(*sigp, sigblob, SIGBLOB_LEN); | 95 | goto out; |
96 | } | 96 | |
97 | if (lenp != NULL) | 97 | len = sshbuf_len(b); |
98 | *lenp = SIGBLOB_LEN; | 98 | if (sigp != NULL) { |
99 | ret = 0; | 99 | if ((*sigp = malloc(len)) == NULL) { |
100 | } else { | ||
101 | /* ietf-drafts */ | ||
102 | if ((b = sshbuf_new()) == NULL) { | ||
103 | ret = SSH_ERR_ALLOC_FAIL; | 100 | ret = SSH_ERR_ALLOC_FAIL; |
104 | goto out; | 101 | goto out; |
105 | } | 102 | } |
106 | if ((ret = sshbuf_put_cstring(b, "ssh-dss")) != 0 || | 103 | memcpy(*sigp, sshbuf_ptr(b), len); |
107 | (ret = sshbuf_put_string(b, sigblob, SIGBLOB_LEN)) != 0) | ||
108 | goto out; | ||
109 | len = sshbuf_len(b); | ||
110 | if (sigp != NULL) { | ||
111 | if ((*sigp = malloc(len)) == NULL) { | ||
112 | ret = SSH_ERR_ALLOC_FAIL; | ||
113 | goto out; | ||
114 | } | ||
115 | memcpy(*sigp, sshbuf_ptr(b), len); | ||
116 | } | ||
117 | if (lenp != NULL) | ||
118 | *lenp = len; | ||
119 | ret = 0; | ||
120 | } | 104 | } |
105 | if (lenp != NULL) | ||
106 | *lenp = len; | ||
107 | ret = 0; | ||
121 | out: | 108 | out: |
122 | explicit_bzero(digest, sizeof(digest)); | 109 | explicit_bzero(digest, sizeof(digest)); |
123 | if (sig != NULL) | 110 | DSA_SIG_free(sig); |
124 | DSA_SIG_free(sig); | ||
125 | sshbuf_free(b); | 111 | sshbuf_free(b); |
126 | return ret; | 112 | return ret; |
127 | } | 113 | } |
@@ -146,28 +132,20 @@ ssh_dss_verify(const struct sshkey *key, | |||
146 | return SSH_ERR_INTERNAL_ERROR; | 132 | return SSH_ERR_INTERNAL_ERROR; |
147 | 133 | ||
148 | /* fetch signature */ | 134 | /* fetch signature */ |
149 | if (compat & SSH_BUG_SIGBLOB) { | 135 | if ((b = sshbuf_from(signature, signaturelen)) == NULL) |
150 | if ((sigblob = malloc(signaturelen)) == NULL) | 136 | return SSH_ERR_ALLOC_FAIL; |
151 | return SSH_ERR_ALLOC_FAIL; | 137 | if (sshbuf_get_cstring(b, &ktype, NULL) != 0 || |
152 | memcpy(sigblob, signature, signaturelen); | 138 | sshbuf_get_string(b, &sigblob, &len) != 0) { |
153 | len = signaturelen; | 139 | ret = SSH_ERR_INVALID_FORMAT; |
154 | } else { | 140 | goto out; |
155 | /* ietf-drafts */ | 141 | } |
156 | if ((b = sshbuf_from(signature, signaturelen)) == NULL) | 142 | if (strcmp("ssh-dss", ktype) != 0) { |
157 | return SSH_ERR_ALLOC_FAIL; | 143 | ret = SSH_ERR_KEY_TYPE_MISMATCH; |
158 | if (sshbuf_get_cstring(b, &ktype, NULL) != 0 || | 144 | goto out; |
159 | sshbuf_get_string(b, &sigblob, &len) != 0) { | 145 | } |
160 | ret = SSH_ERR_INVALID_FORMAT; | 146 | if (sshbuf_len(b) != 0) { |
161 | goto out; | 147 | ret = SSH_ERR_UNEXPECTED_TRAILING_DATA; |
162 | } | 148 | goto out; |
163 | if (strcmp("ssh-dss", ktype) != 0) { | ||
164 | ret = SSH_ERR_KEY_TYPE_MISMATCH; | ||
165 | goto out; | ||
166 | } | ||
167 | if (sshbuf_len(b) != 0) { | ||
168 | ret = SSH_ERR_UNEXPECTED_TRAILING_DATA; | ||
169 | goto out; | ||
170 | } | ||
171 | } | 149 | } |
172 | 150 | ||
173 | if (len != SIGBLOB_LEN) { | 151 | if (len != SIGBLOB_LEN) { |
@@ -207,8 +185,7 @@ ssh_dss_verify(const struct sshkey *key, | |||
207 | 185 | ||
208 | out: | 186 | out: |
209 | explicit_bzero(digest, sizeof(digest)); | 187 | explicit_bzero(digest, sizeof(digest)); |
210 | if (sig != NULL) | 188 | DSA_SIG_free(sig); |
211 | DSA_SIG_free(sig); | ||
212 | sshbuf_free(b); | 189 | sshbuf_free(b); |
213 | free(ktype); | 190 | free(ktype); |
214 | if (sigblob != NULL) { | 191 | if (sigblob != NULL) { |
diff --git a/ssh-ecdsa.c b/ssh-ecdsa.c index d7bf3c69b..3d3b78d7b 100644 --- a/ssh-ecdsa.c +++ b/ssh-ecdsa.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-ecdsa.c,v 1.13 2016/04/21 06:08:02 djm Exp $ */ | 1 | /* $OpenBSD: ssh-ecdsa.c,v 1.14 2018/02/07 02:06:51 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
4 | * Copyright (c) 2010 Damien Miller. All rights reserved. | 4 | * Copyright (c) 2010 Damien Miller. All rights reserved. |
@@ -101,8 +101,7 @@ ssh_ecdsa_sign(const struct sshkey *key, u_char **sigp, size_t *lenp, | |||
101 | explicit_bzero(digest, sizeof(digest)); | 101 | explicit_bzero(digest, sizeof(digest)); |
102 | sshbuf_free(b); | 102 | sshbuf_free(b); |
103 | sshbuf_free(bb); | 103 | sshbuf_free(bb); |
104 | if (sig != NULL) | 104 | ECDSA_SIG_free(sig); |
105 | ECDSA_SIG_free(sig); | ||
106 | return ret; | 105 | return ret; |
107 | } | 106 | } |
108 | 107 | ||
@@ -180,8 +179,7 @@ ssh_ecdsa_verify(const struct sshkey *key, | |||
180 | explicit_bzero(digest, sizeof(digest)); | 179 | explicit_bzero(digest, sizeof(digest)); |
181 | sshbuf_free(sigbuf); | 180 | sshbuf_free(sigbuf); |
182 | sshbuf_free(b); | 181 | sshbuf_free(b); |
183 | if (sig != NULL) | 182 | ECDSA_SIG_free(sig); |
184 | ECDSA_SIG_free(sig); | ||
185 | free(ktype); | 183 | free(ktype); |
186 | return ret; | 184 | return ret; |
187 | } | 185 | } |
diff --git a/ssh-keygen.0 b/ssh-keygen.0 index fb2c02fe7..417e8382b 100644 --- a/ssh-keygen.0 +++ b/ssh-keygen.0 | |||
@@ -226,8 +226,10 @@ DESCRIPTION | |||
226 | -O option | 226 | -O option |
227 | Specify a certificate option when signing a key. This option may | 227 | Specify a certificate option when signing a key. This option may |
228 | be specified multiple times. See also the CERTIFICATES section | 228 | be specified multiple times. See also the CERTIFICATES section |
229 | for further details. The options that are valid for user | 229 | for further details. |
230 | certificates are: | 230 | |
231 | At present, no standard options are valid for host keys. The | ||
232 | options that are valid for user certificates are: | ||
231 | 233 | ||
232 | clear Clear all enabled permissions. This is useful for | 234 | clear Clear all enabled permissions. This is useful for |
233 | clearing the default set of permissions so permissions | 235 | clearing the default set of permissions so permissions |
@@ -246,8 +248,6 @@ DESCRIPTION | |||
246 | unknown critical options will cause the certificate to be | 248 | unknown critical options will cause the certificate to be |
247 | refused. | 249 | refused. |
248 | 250 | ||
249 | At present, no standard options are valid for host keys. | ||
250 | |||
251 | force-command=command | 251 | force-command=command |
252 | Forces the execution of command instead of any shell or | 252 | Forces the execution of command instead of any shell or |
253 | command specified by the user when the certificate is | 253 | command specified by the user when the certificate is |
@@ -280,7 +280,7 @@ DESCRIPTION | |||
280 | permit-user-rc | 280 | permit-user-rc |
281 | Allows execution of ~/.ssh/rc by sshd(8). | 281 | Allows execution of ~/.ssh/rc by sshd(8). |
282 | 282 | ||
283 | permit-x11-forwarding | 283 | permit-X11-forwarding |
284 | Allows X11 forwarding. | 284 | Allows X11 forwarding. |
285 | 285 | ||
286 | source-address=address_list | 286 | source-address=address_list |
@@ -349,19 +349,26 @@ DESCRIPTION | |||
349 | validity interval may consist of a single time, indicating that | 349 | validity interval may consist of a single time, indicating that |
350 | the certificate is valid beginning now and expiring at that time, | 350 | the certificate is valid beginning now and expiring at that time, |
351 | or may consist of two times separated by a colon to indicate an | 351 | or may consist of two times separated by a colon to indicate an |
352 | explicit time interval. The start time may be specified as a | 352 | explicit time interval. |
353 | date in YYYYMMDD format, a time in YYYYMMDDHHMMSS format or a | 353 | |
354 | relative time (to the current time) consisting of a minus sign | 354 | The start time may be specified as the string M-bM-^@M-^\alwaysM-bM-^@M-^] to |
355 | followed by a relative time in the format described in the TIME | 355 | indicate the certificate has no specified start time, a date in |
356 | FORMATS section of sshd_config(5). The end time may be specified | 356 | YYYYMMDD format, a time in YYYYMMDDHHMM[SS] format, a relative |
357 | as a YYYYMMDD date, a YYYYMMDDHHMMSS time or a relative time | 357 | time (to the current time) consisting of a minus sign followed by |
358 | starting with a plus character. | 358 | an interval in the format described in the TIME FORMATS section |
359 | of sshd_config(5). | ||
360 | |||
361 | The end time may be specified as a YYYYMMDD date, a | ||
362 | YYYYMMDDHHMM[SS] time, a relative time starting with a plus | ||
363 | character or the string M-bM-^@M-^\foreverM-bM-^@M-^] to indicate that the | ||
364 | certificate has no expirty date. | ||
359 | 365 | ||
360 | For example: M-bM-^@M-^\+52w1dM-bM-^@M-^] (valid from now to 52 weeks and one day | 366 | For example: M-bM-^@M-^\+52w1dM-bM-^@M-^] (valid from now to 52 weeks and one day |
361 | from now), M-bM-^@M-^\-4w:+4wM-bM-^@M-^] (valid from four weeks ago to four weeks | 367 | from now), M-bM-^@M-^\-4w:+4wM-bM-^@M-^] (valid from four weeks ago to four weeks |
362 | from now), M-bM-^@M-^\20100101123000:20110101123000M-bM-^@M-^] (valid from 12:30 PM, | 368 | from now), M-bM-^@M-^\20100101123000:20110101123000M-bM-^@M-^] (valid from 12:30 PM, |
363 | January 1st, 2010 to 12:30 PM, January 1st, 2011), M-bM-^@M-^\-1d:20110101M-bM-^@M-^] | 369 | January 1st, 2010 to 12:30 PM, January 1st, 2011), M-bM-^@M-^\-1d:20110101M-bM-^@M-^] |
364 | (valid from yesterday to midnight, January 1st, 2011). | 370 | (valid from yesterday to midnight, January 1st, 2011). |
371 | M-bM-^@M-^\-1m:foreverM-bM-^@M-^] (valid from one minute ago and never expiring). | ||
365 | 372 | ||
366 | -v Verbose mode. Causes ssh-keygen to print debugging messages | 373 | -v Verbose mode. Causes ssh-keygen to print debugging messages |
367 | about its progress. This is helpful for debugging moduli | 374 | about its progress. This is helpful for debugging moduli |
@@ -570,4 +577,4 @@ AUTHORS | |||
570 | created OpenSSH. Markus Friedl contributed the support for SSH protocol | 577 | created OpenSSH. Markus Friedl contributed the support for SSH protocol |
571 | versions 1.5 and 2.0. | 578 | versions 1.5 and 2.0. |
572 | 579 | ||
573 | OpenBSD 6.2 July 8, 2017 OpenBSD 6.2 | 580 | OpenBSD 6.2 March 12, 2018 OpenBSD 6.2 |
diff --git a/ssh-keygen.1 b/ssh-keygen.1 index dfbc65ddb..39767e621 100644 --- a/ssh-keygen.1 +++ b/ssh-keygen.1 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: ssh-keygen.1,v 1.144 2017/07/08 18:32:54 jmc Exp $ | 1 | .\" $OpenBSD: ssh-keygen.1,v 1.147 2018/03/12 00:52: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 |
@@ -35,7 +35,7 @@ | |||
35 | .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 35 | .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
36 | .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 36 | .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
37 | .\" | 37 | .\" |
38 | .Dd $Mdocdate: July 8 2017 $ | 38 | .Dd $Mdocdate: March 12 2018 $ |
39 | .Dt SSH-KEYGEN 1 | 39 | .Dt SSH-KEYGEN 1 |
40 | .Os | 40 | .Os |
41 | .Sh NAME | 41 | .Sh NAME |
@@ -421,6 +421,8 @@ This option may be specified multiple times. | |||
421 | See also the | 421 | See also the |
422 | .Sx CERTIFICATES | 422 | .Sx CERTIFICATES |
423 | section for further details. | 423 | section for further details. |
424 | .Pp | ||
425 | At present, no standard options are valid for host keys. | ||
424 | The options that are valid for user certificates are: | 426 | The options that are valid for user certificates are: |
425 | .Pp | 427 | .Pp |
426 | .Bl -tag -width Ds -compact | 428 | .Bl -tag -width Ds -compact |
@@ -444,8 +446,6 @@ contents (usually indicating a flag). | |||
444 | Extensions may be ignored by a client or server that does not recognise them, | 446 | Extensions may be ignored by a client or server that does not recognise them, |
445 | whereas unknown critical options will cause the certificate to be refused. | 447 | whereas unknown critical options will cause the certificate to be refused. |
446 | .Pp | 448 | .Pp |
447 | At present, no standard options are valid for host keys. | ||
448 | .Pp | ||
449 | .It Ic force-command Ns = Ns Ar command | 449 | .It Ic force-command Ns = Ns Ar command |
450 | Forces the execution of | 450 | Forces the execution of |
451 | .Ar command | 451 | .Ar command |
@@ -490,7 +490,7 @@ Allows execution of | |||
490 | by | 490 | by |
491 | .Xr sshd 8 . | 491 | .Xr sshd 8 . |
492 | .Pp | 492 | .Pp |
493 | .It Ic permit-x11-forwarding | 493 | .It Ic permit-X11-forwarding |
494 | Allows X11 forwarding. | 494 | Allows X11 forwarding. |
495 | .Pp | 495 | .Pp |
496 | .It Ic source-address Ns = Ns Ar address_list | 496 | .It Ic source-address Ns = Ns Ar address_list |
@@ -580,13 +580,20 @@ Specify a validity interval when signing a certificate. | |||
580 | A validity interval may consist of a single time, indicating that the | 580 | A validity interval may consist of a single time, indicating that the |
581 | certificate is valid beginning now and expiring at that time, or may consist | 581 | certificate is valid beginning now and expiring at that time, or may consist |
582 | of two times separated by a colon to indicate an explicit time interval. | 582 | of two times separated by a colon to indicate an explicit time interval. |
583 | The start time may be specified as a date in YYYYMMDD format, a time | 583 | .Pp |
584 | in YYYYMMDDHHMMSS format or a relative time (to the current time) consisting | 584 | The start time may be specified as the string |
585 | of a minus sign followed by a relative time in the format described in the | 585 | .Dq always |
586 | to indicate the certificate has no specified start time, | ||
587 | a date in YYYYMMDD format, a time in YYYYMMDDHHMM[SS] format, | ||
588 | a relative time (to the current time) consisting of a minus sign followed by | ||
589 | an interval in the format described in the | ||
586 | TIME FORMATS section of | 590 | TIME FORMATS section of |
587 | .Xr sshd_config 5 . | 591 | .Xr sshd_config 5 . |
588 | The end time may be specified as a YYYYMMDD date, a YYYYMMDDHHMMSS time or | 592 | .Pp |
589 | a relative time starting with a plus character. | 593 | The end time may be specified as a YYYYMMDD date, a YYYYMMDDHHMM[SS] time, |
594 | a relative time starting with a plus character or the string | ||
595 | .Dq forever | ||
596 | to indicate that the certificate has no expirty date. | ||
590 | .Pp | 597 | .Pp |
591 | For example: | 598 | For example: |
592 | .Dq +52w1d | 599 | .Dq +52w1d |
@@ -597,6 +604,8 @@ For example: | |||
597 | (valid from 12:30 PM, January 1st, 2010 to 12:30 PM, January 1st, 2011), | 604 | (valid from 12:30 PM, January 1st, 2010 to 12:30 PM, January 1st, 2011), |
598 | .Dq -1d:20110101 | 605 | .Dq -1d:20110101 |
599 | (valid from yesterday to midnight, January 1st, 2011). | 606 | (valid from yesterday to midnight, January 1st, 2011). |
607 | .Dq -1m:forever | ||
608 | (valid from one minute ago and never expiring). | ||
600 | .It Fl v | 609 | .It Fl v |
601 | Verbose mode. | 610 | Verbose mode. |
602 | Causes | 611 | Causes |
diff --git a/ssh-keygen.c b/ssh-keygen.c index 835f7d016..9aac64fc3 100644 --- a/ssh-keygen.c +++ b/ssh-keygen.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-keygen.c,v 1.307 2017/07/07 03:53:12 djm Exp $ */ | 1 | /* $OpenBSD: ssh-keygen.c,v 1.314 2018/03/12 00:52:01 djm 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 |
@@ -275,6 +275,10 @@ ask_filename(struct passwd *pw, const char *prompt) | |||
275 | case KEY_ED25519_CERT: | 275 | case KEY_ED25519_CERT: |
276 | name = _PATH_SSH_CLIENT_ID_ED25519; | 276 | name = _PATH_SSH_CLIENT_ID_ED25519; |
277 | break; | 277 | break; |
278 | case KEY_XMSS: | ||
279 | case KEY_XMSS_CERT: | ||
280 | name = _PATH_SSH_CLIENT_ID_XMSS; | ||
281 | break; | ||
278 | default: | 282 | default: |
279 | fatal("bad key type"); | 283 | fatal("bad key type"); |
280 | } | 284 | } |
@@ -377,13 +381,6 @@ do_convert_to_pem(struct sshkey *k) | |||
377 | if (!PEM_write_RSAPublicKey(stdout, k->rsa)) | 381 | if (!PEM_write_RSAPublicKey(stdout, k->rsa)) |
378 | fatal("PEM_write_RSAPublicKey failed"); | 382 | fatal("PEM_write_RSAPublicKey failed"); |
379 | break; | 383 | break; |
380 | #if notyet /* OpenSSH 0.9.8 lacks this function */ | ||
381 | case KEY_DSA: | ||
382 | if (!PEM_write_DSAPublicKey(stdout, k->dsa)) | ||
383 | fatal("PEM_write_DSAPublicKey failed"); | ||
384 | break; | ||
385 | #endif | ||
386 | /* XXX ECDSA? */ | ||
387 | default: | 384 | default: |
388 | fatal("%s: unsupported key type %s", __func__, sshkey_type(k)); | 385 | fatal("%s: unsupported key type %s", __func__, sshkey_type(k)); |
389 | } | 386 | } |
@@ -539,7 +536,7 @@ do_convert_private_ssh2_from_blob(u_char *blob, u_int blen) | |||
539 | 536 | ||
540 | /* try the key */ | 537 | /* try the key */ |
541 | if (sshkey_sign(key, &sig, &slen, data, sizeof(data), NULL, 0) != 0 || | 538 | if (sshkey_sign(key, &sig, &slen, data, sizeof(data), NULL, 0) != 0 || |
542 | sshkey_verify(key, sig, slen, data, sizeof(data), 0) != 0) { | 539 | sshkey_verify(key, sig, slen, data, sizeof(data), NULL, 0) != 0) { |
543 | sshkey_free(key); | 540 | sshkey_free(key); |
544 | free(sig); | 541 | free(sig); |
545 | return NULL; | 542 | return NULL; |
@@ -671,9 +668,6 @@ do_convert_from_pem(struct sshkey **k, int *private) | |||
671 | { | 668 | { |
672 | FILE *fp; | 669 | FILE *fp; |
673 | RSA *rsa; | 670 | RSA *rsa; |
674 | #ifdef notyet | ||
675 | DSA *dsa; | ||
676 | #endif | ||
677 | 671 | ||
678 | if ((fp = fopen(identity_file, "r")) == NULL) | 672 | if ((fp = fopen(identity_file, "r")) == NULL) |
679 | fatal("%s: %s: %s", __progname, identity_file, strerror(errno)); | 673 | fatal("%s: %s: %s", __progname, identity_file, strerror(errno)); |
@@ -685,18 +679,6 @@ do_convert_from_pem(struct sshkey **k, int *private) | |||
685 | fclose(fp); | 679 | fclose(fp); |
686 | return; | 680 | return; |
687 | } | 681 | } |
688 | #if notyet /* OpenSSH 0.9.8 lacks this function */ | ||
689 | rewind(fp); | ||
690 | if ((dsa = PEM_read_DSAPublicKey(fp, NULL, NULL, NULL)) != NULL) { | ||
691 | if ((*k = sshkey_new(KEY_UNSPEC)) == NULL) | ||
692 | fatal("sshkey_new failed"); | ||
693 | (*k)->type = KEY_DSA; | ||
694 | (*k)->dsa = dsa; | ||
695 | fclose(fp); | ||
696 | return; | ||
697 | } | ||
698 | /* XXX ECDSA */ | ||
699 | #endif | ||
700 | fatal("%s: unrecognised raw private key format", __func__); | 682 | fatal("%s: unrecognised raw private key format", __func__); |
701 | } | 683 | } |
702 | 684 | ||
@@ -991,6 +973,9 @@ do_gen_all_hostkeys(struct passwd *pw) | |||
991 | #endif /* OPENSSL_HAS_ECC */ | 973 | #endif /* OPENSSL_HAS_ECC */ |
992 | #endif /* WITH_OPENSSL */ | 974 | #endif /* WITH_OPENSSL */ |
993 | { "ed25519", "ED25519",_PATH_HOST_ED25519_KEY_FILE }, | 975 | { "ed25519", "ED25519",_PATH_HOST_ED25519_KEY_FILE }, |
976 | #ifdef WITH_XMSS | ||
977 | { "xmss", "XMSS",_PATH_HOST_XMSS_KEY_FILE }, | ||
978 | #endif /* WITH_XMSS */ | ||
994 | { NULL, NULL, NULL } | 979 | { NULL, NULL, NULL } |
995 | }; | 980 | }; |
996 | 981 | ||
@@ -1477,7 +1462,8 @@ do_change_comment(struct passwd *pw) | |||
1477 | } | 1462 | } |
1478 | } | 1463 | } |
1479 | 1464 | ||
1480 | if (private->type != KEY_ED25519 && !use_new_format) { | 1465 | if (private->type != KEY_ED25519 && private->type != KEY_XMSS && |
1466 | !use_new_format) { | ||
1481 | error("Comments are only supported for keys stored in " | 1467 | error("Comments are only supported for keys stored in " |
1482 | "the new format (-o)."); | 1468 | "the new format (-o)."); |
1483 | explicit_bzero(passphrase, strlen(passphrase)); | 1469 | explicit_bzero(passphrase, strlen(passphrase)); |
@@ -1719,13 +1705,16 @@ do_ca_sign(struct passwd *pw, int argc, char **argv) | |||
1719 | } | 1705 | } |
1720 | free(otmp); | 1706 | free(otmp); |
1721 | } | 1707 | } |
1708 | if (n > SSHKEY_CERT_MAX_PRINCIPALS) | ||
1709 | fatal("Too many certificate principals specified"); | ||
1722 | 1710 | ||
1723 | tmp = tilde_expand_filename(argv[i], pw->pw_uid); | 1711 | tmp = tilde_expand_filename(argv[i], pw->pw_uid); |
1724 | if ((r = sshkey_load_public(tmp, &public, &comment)) != 0) | 1712 | if ((r = sshkey_load_public(tmp, &public, &comment)) != 0) |
1725 | fatal("%s: unable to open \"%s\": %s", | 1713 | fatal("%s: unable to open \"%s\": %s", |
1726 | __func__, tmp, ssh_err(r)); | 1714 | __func__, tmp, ssh_err(r)); |
1727 | if (public->type != KEY_RSA && public->type != KEY_DSA && | 1715 | if (public->type != KEY_RSA && public->type != KEY_DSA && |
1728 | public->type != KEY_ECDSA && public->type != KEY_ED25519) | 1716 | public->type != KEY_ECDSA && public->type != KEY_ED25519 && |
1717 | public->type != KEY_XMSS) | ||
1729 | fatal("%s: key \"%s\" type %s cannot be certified", | 1718 | fatal("%s: key \"%s\" type %s cannot be certified", |
1730 | __func__, tmp, sshkey_type(public)); | 1719 | __func__, tmp, sshkey_type(public)); |
1731 | 1720 | ||
@@ -1809,40 +1798,6 @@ parse_relative_time(const char *s, time_t now) | |||
1809 | return now + (u_int64_t)(secs * mul); | 1798 | return now + (u_int64_t)(secs * mul); |
1810 | } | 1799 | } |
1811 | 1800 | ||
1812 | static u_int64_t | ||
1813 | parse_absolute_time(const char *s) | ||
1814 | { | ||
1815 | struct tm tm; | ||
1816 | time_t tt; | ||
1817 | char buf[32], *fmt; | ||
1818 | |||
1819 | /* | ||
1820 | * POSIX strptime says "The application shall ensure that there | ||
1821 | * is white-space or other non-alphanumeric characters between | ||
1822 | * any two conversion specifications" so arrange things this way. | ||
1823 | */ | ||
1824 | switch (strlen(s)) { | ||
1825 | case 8: | ||
1826 | fmt = "%Y-%m-%d"; | ||
1827 | snprintf(buf, sizeof(buf), "%.4s-%.2s-%.2s", s, s + 4, s + 6); | ||
1828 | break; | ||
1829 | case 14: | ||
1830 | fmt = "%Y-%m-%dT%H:%M:%S"; | ||
1831 | snprintf(buf, sizeof(buf), "%.4s-%.2s-%.2sT%.2s:%.2s:%.2s", | ||
1832 | s, s + 4, s + 6, s + 8, s + 10, s + 12); | ||
1833 | break; | ||
1834 | default: | ||
1835 | fatal("Invalid certificate time format %s", s); | ||
1836 | } | ||
1837 | |||
1838 | memset(&tm, 0, sizeof(tm)); | ||
1839 | if (strptime(buf, fmt, &tm) == NULL) | ||
1840 | fatal("Invalid certificate time %s", s); | ||
1841 | if ((tt = mktime(&tm)) < 0) | ||
1842 | fatal("Certificate time %s cannot be represented", s); | ||
1843 | return (u_int64_t)tt; | ||
1844 | } | ||
1845 | |||
1846 | static void | 1801 | static void |
1847 | parse_cert_times(char *timespec) | 1802 | parse_cert_times(char *timespec) |
1848 | { | 1803 | { |
@@ -1865,8 +1820,8 @@ parse_cert_times(char *timespec) | |||
1865 | 1820 | ||
1866 | /* | 1821 | /* |
1867 | * from:to, where | 1822 | * from:to, where |
1868 | * from := [+-]timespec | YYYYMMDD | YYYYMMDDHHMMSS | 1823 | * from := [+-]timespec | YYYYMMDD | YYYYMMDDHHMMSS | "always" |
1869 | * to := [+-]timespec | YYYYMMDD | YYYYMMDDHHMMSS | 1824 | * to := [+-]timespec | YYYYMMDD | YYYYMMDDHHMMSS | "forever" |
1870 | */ | 1825 | */ |
1871 | from = xstrdup(timespec); | 1826 | from = xstrdup(timespec); |
1872 | to = strchr(from, ':'); | 1827 | to = strchr(from, ':'); |
@@ -1876,13 +1831,17 @@ parse_cert_times(char *timespec) | |||
1876 | 1831 | ||
1877 | if (*from == '-' || *from == '+') | 1832 | if (*from == '-' || *from == '+') |
1878 | cert_valid_from = parse_relative_time(from, now); | 1833 | cert_valid_from = parse_relative_time(from, now); |
1879 | else | 1834 | else if (strcmp(from, "always") == 0) |
1880 | cert_valid_from = parse_absolute_time(from); | 1835 | cert_valid_from = 0; |
1836 | else if (parse_absolute_time(from, &cert_valid_from) != 0) | ||
1837 | fatal("Invalid from time \"%s\"", from); | ||
1881 | 1838 | ||
1882 | if (*to == '-' || *to == '+') | 1839 | if (*to == '-' || *to == '+') |
1883 | cert_valid_to = parse_relative_time(to, now); | 1840 | cert_valid_to = parse_relative_time(to, now); |
1884 | else | 1841 | else if (strcmp(to, "forever") == 0) |
1885 | cert_valid_to = parse_absolute_time(to); | 1842 | cert_valid_to = ~(u_int64_t)0; |
1843 | else if (parse_absolute_time(to, &cert_valid_to) != 0) | ||
1844 | fatal("Invalid to time \"%s\"", to); | ||
1886 | 1845 | ||
1887 | if (cert_valid_to <= cert_valid_from) | 1846 | if (cert_valid_to <= cert_valid_from) |
1888 | fatal("Empty certificate validity interval"); | 1847 | fatal("Empty certificate validity interval"); |
@@ -2421,7 +2380,7 @@ main(int argc, char **argv) | |||
2421 | gen_all_hostkeys = 1; | 2380 | gen_all_hostkeys = 1; |
2422 | break; | 2381 | break; |
2423 | case 'b': | 2382 | case 'b': |
2424 | bits = (u_int32_t)strtonum(optarg, 256, 32768, &errstr); | 2383 | bits = (u_int32_t)strtonum(optarg, 10, 32768, &errstr); |
2425 | if (errstr) | 2384 | if (errstr) |
2426 | fatal("Bits has bad value %s (%s)", | 2385 | fatal("Bits has bad value %s (%s)", |
2427 | optarg, errstr); | 2386 | optarg, errstr); |
@@ -2699,6 +2658,8 @@ main(int argc, char **argv) | |||
2699 | _PATH_HOST_ECDSA_KEY_FILE, rr_hostname); | 2658 | _PATH_HOST_ECDSA_KEY_FILE, rr_hostname); |
2700 | n += do_print_resource_record(pw, | 2659 | n += do_print_resource_record(pw, |
2701 | _PATH_HOST_ED25519_KEY_FILE, rr_hostname); | 2660 | _PATH_HOST_ED25519_KEY_FILE, rr_hostname); |
2661 | n += do_print_resource_record(pw, | ||
2662 | _PATH_HOST_XMSS_KEY_FILE, rr_hostname); | ||
2702 | if (n == 0) | 2663 | if (n == 0) |
2703 | fatal("no keys found."); | 2664 | fatal("no keys found."); |
2704 | exit(0); | 2665 | exit(0); |
@@ -2859,7 +2820,8 @@ passphrase_again: | |||
2859 | if ((r = sshkey_write(public, f)) != 0) | 2820 | if ((r = sshkey_write(public, f)) != 0) |
2860 | error("write key failed: %s", ssh_err(r)); | 2821 | error("write key failed: %s", ssh_err(r)); |
2861 | fprintf(f, " %s\n", comment); | 2822 | fprintf(f, " %s\n", comment); |
2862 | fclose(f); | 2823 | if (ferror(f) || fclose(f) != 0) |
2824 | fatal("write public failed: %s", strerror(errno)); | ||
2863 | 2825 | ||
2864 | if (!quiet) { | 2826 | if (!quiet) { |
2865 | fp = sshkey_fingerprint(public, fingerprint_hash, | 2827 | fp = sshkey_fingerprint(public, fingerprint_hash, |
diff --git a/ssh-keyscan.0 b/ssh-keyscan.0 index 1a9751ef1..c0278ee0a 100644 --- a/ssh-keyscan.0 +++ b/ssh-keyscan.0 | |||
@@ -1,62 +1,66 @@ | |||
1 | SSH-KEYSCAN(1) General Commands Manual SSH-KEYSCAN(1) | 1 | SSH-KEYSCAN(1) General Commands Manual SSH-KEYSCAN(1) |
2 | 2 | ||
3 | NAME | 3 | NAME |
4 | ssh-keyscan M-bM-^@M-^S gather ssh public keys | 4 | ssh-keyscan M-bM-^@M-^S gather SSH public keys |
5 | 5 | ||
6 | SYNOPSIS | 6 | SYNOPSIS |
7 | ssh-keyscan [-46cHv] [-f file] [-p port] [-T timeout] [-t type] | 7 | ssh-keyscan [-46cDHv] [-f file] [-p port] [-T timeout] [-t type] |
8 | [host | addrlist namelist] ... | 8 | [host | addrlist namelist] |
9 | 9 | ||
10 | DESCRIPTION | 10 | DESCRIPTION |
11 | ssh-keyscan is a utility for gathering the public ssh host keys of a | 11 | ssh-keyscan is a utility for gathering the public SSH host keys of a |
12 | number of hosts. It was designed to aid in building and verifying | 12 | number of hosts. It was designed to aid in building and verifying |
13 | ssh_known_hosts files. ssh-keyscan provides a minimal interface suitable | 13 | ssh_known_hosts files, the format of which is documented in sshd(8). |
14 | for use by shell and perl scripts. | 14 | ssh-keyscan provides a minimal interface suitable for use by shell and |
15 | perl scripts. | ||
15 | 16 | ||
16 | ssh-keyscan uses non-blocking socket I/O to contact as many hosts as | 17 | ssh-keyscan uses non-blocking socket I/O to contact as many hosts as |
17 | possible in parallel, so it is very efficient. The keys from a domain of | 18 | possible in parallel, so it is very efficient. The keys from a domain of |
18 | 1,000 hosts can be collected in tens of seconds, even when some of those | 19 | 1,000 hosts can be collected in tens of seconds, even when some of those |
19 | hosts are down or do not run ssh. For scanning, one does not need login | 20 | hosts are down or do not run sshd(8). For scanning, one does not need |
20 | access to the machines that are being scanned, nor does the scanning | 21 | login access to the machines that are being scanned, nor does the |
21 | process involve any encryption. | 22 | scanning process involve any encryption. |
22 | 23 | ||
23 | The options are as follows: | 24 | The options are as follows: |
24 | 25 | ||
25 | -4 Forces ssh-keyscan to use IPv4 addresses only. | 26 | -4 Force ssh-keyscan to use IPv4 addresses only. |
26 | 27 | ||
27 | -6 Forces ssh-keyscan to use IPv6 addresses only. | 28 | -6 Force ssh-keyscan to use IPv6 addresses only. |
28 | 29 | ||
29 | -c Request certificates from target hosts instead of plain keys. | 30 | -c Request certificates from target hosts instead of plain keys. |
30 | 31 | ||
32 | -D Print keys found as SSHFP DNS records. The default is to print | ||
33 | keys in a format usable as a ssh(1) known_hosts file. | ||
34 | |||
31 | -f file | 35 | -f file |
32 | Read hosts or M-bM-^@M-^\addrlist namelistM-bM-^@M-^] pairs from file, one per line. | 36 | Read hosts or M-bM-^@M-^\addrlist namelistM-bM-^@M-^] pairs from file, one per line. |
33 | If - is supplied instead of a filename, ssh-keyscan will read | 37 | If M-bM-^@M-^X-M-bM-^@M-^Y is supplied instead of a filename, ssh-keyscan will read |
34 | hosts or M-bM-^@M-^\addrlist namelistM-bM-^@M-^] pairs from the standard input. | 38 | from the standard input. Input is expected in the format: |
39 | |||
40 | 1.2.3.4,1.2.4.4 name.my.domain,name,n.my.domain,n,1.2.3.4,1.2.4.4 | ||
35 | 41 | ||
36 | -H Hash all hostnames and addresses in the output. Hashed names may | 42 | -H Hash all hostnames and addresses in the output. Hashed names may |
37 | be used normally by ssh and sshd, but they do not reveal | 43 | be used normally by ssh(1) and sshd(8), but they do not reveal |
38 | identifying information should the file's contents be disclosed. | 44 | identifying information should the file's contents be disclosed. |
39 | 45 | ||
40 | -p port | 46 | -p port |
41 | Port to connect to on the remote host. | 47 | Connect to port on the remote host. |
42 | 48 | ||
43 | -T timeout | 49 | -T timeout |
44 | Set the timeout for connection attempts. If timeout seconds have | 50 | Set the timeout for connection attempts. If timeout seconds have |
45 | elapsed since a connection was initiated to a host or since the | 51 | elapsed since a connection was initiated to a host or since the |
46 | last time anything was read from that host, then the connection | 52 | last time anything was read from that host, the connection is |
47 | is closed and the host in question considered unavailable. | 53 | closed and the host in question considered unavailable. The |
48 | Default is 5 seconds. | 54 | default is 5 seconds. |
49 | 55 | ||
50 | -t type | 56 | -t type |
51 | Specifies the type of the key to fetch from the scanned hosts. | 57 | Specify the type of the key to fetch from the scanned hosts. The |
52 | The possible values are 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-^]. | 58 | possible values are 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-^]. |
53 | Multiple values may be specified by separating them with commas. | 59 | Multiple values may be specified by separating them with commas. |
54 | The default is to fetch M-bM-^@M-^\rsaM-bM-^@M-^], M-bM-^@M-^\ecdsaM-bM-^@M-^], and M-bM-^@M-^\ed25519M-bM-^@M-^] keys. | 60 | The default is to fetch M-bM-^@M-^\rsaM-bM-^@M-^], M-bM-^@M-^\ecdsaM-bM-^@M-^], and M-bM-^@M-^\ed25519M-bM-^@M-^] keys. |
55 | 61 | ||
56 | -v Verbose mode. Causes ssh-keyscan to print debugging messages | 62 | -v Verbose mode: print debugging messages about progress. |
57 | about its progress. | ||
58 | 63 | ||
59 | SECURITY | ||
60 | If an ssh_known_hosts file is constructed using ssh-keyscan without | 64 | If an ssh_known_hosts file is constructed using ssh-keyscan without |
61 | verifying the keys, users will be vulnerable to man in the middle | 65 | verifying the keys, users will be vulnerable to man in the middle |
62 | attacks. On the other hand, if the security model allows such a risk, | 66 | attacks. On the other hand, if the security model allows such a risk, |
@@ -65,42 +69,28 @@ SECURITY | |||
65 | created. | 69 | created. |
66 | 70 | ||
67 | FILES | 71 | FILES |
68 | Input format: | ||
69 | |||
70 | 1.2.3.4,1.2.4.4 name.my.domain,name,n.my.domain,n,1.2.3.4,1.2.4.4 | ||
71 | |||
72 | Output format for RSA, DSA, ECDSA, and Ed25519 keys: | ||
73 | |||
74 | host-or-namelist keytype base64-encoded-key | ||
75 | |||
76 | Where keytype is either M-bM-^@M-^\ecdsa-sha2-nistp256M-bM-^@M-^], M-bM-^@M-^\ecdsa-sha2-nistp384M-bM-^@M-^], | ||
77 | M-bM-^@M-^\ecdsa-sha2-nistp521M-bM-^@M-^], M-bM-^@M-^\ssh-ed25519M-bM-^@M-^], M-bM-^@M-^\ssh-dssM-bM-^@M-^] or M-bM-^@M-^\ssh-rsaM-bM-^@M-^]. | ||
78 | |||
79 | /etc/ssh/ssh_known_hosts | 72 | /etc/ssh/ssh_known_hosts |
80 | 73 | ||
81 | EXAMPLES | 74 | EXAMPLES |
82 | Print the rsa host key for machine hostname: | 75 | Print the RSA host key for machine hostname: |
83 | 76 | ||
84 | $ ssh-keyscan hostname | 77 | $ ssh-keyscan -t rsa hostname |
85 | 78 | ||
86 | Find all hosts from the file ssh_hosts which have new or different keys | 79 | Find all hosts from the file ssh_hosts which have new or different keys |
87 | from those in the sorted file ssh_known_hosts: | 80 | from those in the sorted file ssh_known_hosts: |
88 | 81 | ||
89 | $ ssh-keyscan -t rsa,dsa,ecdsa,ed25519 -f ssh_hosts | \ | 82 | $ ssh-keyscan -t rsa,dsa,ecdsa,ed25519 -f ssh_hosts | \ |
90 | sort -u - ssh_known_hosts | diff ssh_known_hosts - | 83 | sort -u - ssh_known_hosts | diff ssh_known_hosts - |
91 | 84 | ||
92 | SEE ALSO | 85 | SEE ALSO |
93 | ssh(1), sshd(8) | 86 | ssh(1), sshd(8) |
94 | 87 | ||
88 | Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints, RFC | ||
89 | 4255, 2006. | ||
90 | |||
95 | AUTHORS | 91 | AUTHORS |
96 | David Mazieres <dm@lcs.mit.edu> wrote the initial version, and Wayne | 92 | David Mazieres <dm@lcs.mit.edu> wrote the initial version, and Wayne |
97 | Davison <wayned@users.sourceforge.net> added support for protocol version | 93 | Davison <wayned@users.sourceforge.net> added support for protocol version |
98 | 2. | 94 | 2. |
99 | 95 | ||
100 | BUGS | 96 | OpenBSD 6.2 March 5, 2018 OpenBSD 6.2 |
101 | It generates "Connection closed by remote host" messages on the consoles | ||
102 | of all the machines it scans if the server is older than version 2.9. | ||
103 | This is because it opens a connection to the ssh port, reads the public | ||
104 | key, and drops the connection as soon as it gets the key. | ||
105 | |||
106 | OpenBSD 6.2 May 2, 2017 OpenBSD 6.2 | ||
diff --git a/ssh-keyscan.1 b/ssh-keyscan.1 index aa4a2ae83..f3d7a4078 100644 --- a/ssh-keyscan.1 +++ b/ssh-keyscan.1 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: ssh-keyscan.1,v 1.40 2017/05/02 17:04:09 jmc Exp $ | 1 | .\" $OpenBSD: ssh-keyscan.1,v 1.44 2018/03/05 07:03:18 jmc Exp $ |
2 | .\" | 2 | .\" |
3 | .\" Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>. | 3 | .\" Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>. |
4 | .\" | 4 | .\" |
@@ -6,30 +6,29 @@ | |||
6 | .\" permitted provided that due credit is given to the author and the | 6 | .\" permitted provided that due credit is given to the author and the |
7 | .\" OpenBSD project by leaving this copyright notice intact. | 7 | .\" OpenBSD project by leaving this copyright notice intact. |
8 | .\" | 8 | .\" |
9 | .Dd $Mdocdate: May 2 2017 $ | 9 | .Dd $Mdocdate: March 5 2018 $ |
10 | .Dt SSH-KEYSCAN 1 | 10 | .Dt SSH-KEYSCAN 1 |
11 | .Os | 11 | .Os |
12 | .Sh NAME | 12 | .Sh NAME |
13 | .Nm ssh-keyscan | 13 | .Nm ssh-keyscan |
14 | .Nd gather ssh public keys | 14 | .Nd gather SSH public keys |
15 | .Sh SYNOPSIS | 15 | .Sh SYNOPSIS |
16 | .Nm ssh-keyscan | 16 | .Nm ssh-keyscan |
17 | .Bk -words | 17 | .Op Fl 46cDHv |
18 | .Op Fl 46cHv | ||
19 | .Op Fl f Ar file | 18 | .Op Fl f Ar file |
20 | .Op Fl p Ar port | 19 | .Op Fl p Ar port |
21 | .Op Fl T Ar timeout | 20 | .Op Fl T Ar timeout |
22 | .Op Fl t Ar type | 21 | .Op Fl t Ar type |
23 | .Op Ar host | addrlist namelist | 22 | .Op Ar host | addrlist namelist |
24 | .Ar ... | ||
25 | .Ek | ||
26 | .Sh DESCRIPTION | 23 | .Sh DESCRIPTION |
27 | .Nm | 24 | .Nm |
28 | is a utility for gathering the public ssh host keys of a number of | 25 | is a utility for gathering the public SSH host keys of a number of |
29 | hosts. | 26 | hosts. |
30 | It was designed to aid in building and verifying | 27 | It was designed to aid in building and verifying |
31 | .Pa ssh_known_hosts | 28 | .Pa ssh_known_hosts |
32 | files. | 29 | files, |
30 | the format of which is documented in | ||
31 | .Xr sshd 8 . | ||
33 | .Nm | 32 | .Nm |
34 | provides a minimal interface suitable for use by shell and perl | 33 | provides a minimal interface suitable for use by shell and perl |
35 | scripts. | 34 | scripts. |
@@ -39,7 +38,8 @@ uses non-blocking socket I/O to contact as many hosts as possible in | |||
39 | parallel, so it is very efficient. | 38 | parallel, so it is very efficient. |
40 | The keys from a domain of 1,000 | 39 | The keys from a domain of 1,000 |
41 | hosts can be collected in tens of seconds, even when some of those | 40 | hosts can be collected in tens of seconds, even when some of those |
42 | hosts are down or do not run ssh. | 41 | hosts are down or do not run |
42 | .Xr sshd 8 . | ||
43 | For scanning, one does not need | 43 | For scanning, one does not need |
44 | login access to the machines that are being scanned, nor does the | 44 | login access to the machines that are being scanned, nor does the |
45 | scanning process involve any encryption. | 45 | scanning process involve any encryption. |
@@ -47,15 +47,21 @@ scanning process involve any encryption. | |||
47 | The options are as follows: | 47 | The options are as follows: |
48 | .Bl -tag -width Ds | 48 | .Bl -tag -width Ds |
49 | .It Fl 4 | 49 | .It Fl 4 |
50 | Forces | 50 | Force |
51 | .Nm | 51 | .Nm |
52 | to use IPv4 addresses only. | 52 | to use IPv4 addresses only. |
53 | .It Fl 6 | 53 | .It Fl 6 |
54 | Forces | 54 | Force |
55 | .Nm | 55 | .Nm |
56 | to use IPv6 addresses only. | 56 | to use IPv6 addresses only. |
57 | .It Fl c | 57 | .It Fl c |
58 | Request certificates from target hosts instead of plain keys. | 58 | Request certificates from target hosts instead of plain keys. |
59 | .It Fl D | ||
60 | Print keys found as SSHFP DNS records. | ||
61 | The default is to print keys in a format usable as a | ||
62 | .Xr ssh 1 | ||
63 | .Pa known_hosts | ||
64 | file. | ||
59 | .It Fl f Ar file | 65 | .It Fl f Ar file |
60 | Read hosts or | 66 | Read hosts or |
61 | .Dq addrlist namelist | 67 | .Dq addrlist namelist |
@@ -63,32 +69,36 @@ pairs from | |||
63 | .Ar file , | 69 | .Ar file , |
64 | one per line. | 70 | one per line. |
65 | If | 71 | If |
66 | .Pa - | 72 | .Sq - |
67 | is supplied instead of a filename, | 73 | is supplied instead of a filename, |
68 | .Nm | 74 | .Nm |
69 | will read hosts or | 75 | will read from the standard input. |
70 | .Dq addrlist namelist | 76 | Input is expected in the format: |
71 | pairs from the standard input. | 77 | .Bd -literal |
78 | 1.2.3.4,1.2.4.4 name.my.domain,name,n.my.domain,n,1.2.3.4,1.2.4.4 | ||
79 | .Ed | ||
72 | .It Fl H | 80 | .It Fl H |
73 | Hash all hostnames and addresses in the output. | 81 | Hash all hostnames and addresses in the output. |
74 | Hashed names may be used normally by | 82 | Hashed names may be used normally by |
75 | .Nm ssh | 83 | .Xr ssh 1 |
76 | and | 84 | and |
77 | .Nm sshd , | 85 | .Xr sshd 8 , |
78 | but they do not reveal identifying information should the file's contents | 86 | but they do not reveal identifying information should the file's contents |
79 | be disclosed. | 87 | be disclosed. |
80 | .It Fl p Ar port | 88 | .It Fl p Ar port |
81 | Port to connect to on the remote host. | 89 | Connect to |
90 | .Ar port | ||
91 | on the remote host. | ||
82 | .It Fl T Ar timeout | 92 | .It Fl T Ar timeout |
83 | Set the timeout for connection attempts. | 93 | Set the timeout for connection attempts. |
84 | If | 94 | If |
85 | .Ar timeout | 95 | .Ar timeout |
86 | seconds have elapsed since a connection was initiated to a host or since the | 96 | seconds have elapsed since a connection was initiated to a host or since the |
87 | last time anything was read from that host, then the connection is | 97 | last time anything was read from that host, the connection is |
88 | closed and the host in question considered unavailable. | 98 | closed and the host in question considered unavailable. |
89 | Default is 5 seconds. | 99 | The default is 5 seconds. |
90 | .It Fl t Ar type | 100 | .It Fl t Ar type |
91 | Specifies the type of the key to fetch from the scanned hosts. | 101 | Specify the type of the key to fetch from the scanned hosts. |
92 | The possible values are | 102 | The possible values are |
93 | .Dq dsa , | 103 | .Dq dsa , |
94 | .Dq ecdsa , | 104 | .Dq ecdsa , |
@@ -103,12 +113,10 @@ and | |||
103 | .Dq ed25519 | 113 | .Dq ed25519 |
104 | keys. | 114 | keys. |
105 | .It Fl v | 115 | .It Fl v |
106 | Verbose mode. | 116 | Verbose mode: |
107 | Causes | 117 | print debugging messages about progress. |
108 | .Nm | ||
109 | to print debugging messages about its progress. | ||
110 | .El | 118 | .El |
111 | .Sh SECURITY | 119 | .Pp |
112 | If an ssh_known_hosts file is constructed using | 120 | If an ssh_known_hosts file is constructed using |
113 | .Nm | 121 | .Nm |
114 | without verifying the keys, users will be vulnerable to | 122 | without verifying the keys, users will be vulnerable to |
@@ -119,54 +127,32 @@ On the other hand, if the security model allows such a risk, | |||
119 | can help in the detection of tampered keyfiles or man in the middle | 127 | can help in the detection of tampered keyfiles or man in the middle |
120 | attacks which have begun after the ssh_known_hosts file was created. | 128 | attacks which have begun after the ssh_known_hosts file was created. |
121 | .Sh FILES | 129 | .Sh FILES |
122 | Input format: | ||
123 | .Bd -literal | ||
124 | 1.2.3.4,1.2.4.4 name.my.domain,name,n.my.domain,n,1.2.3.4,1.2.4.4 | ||
125 | .Ed | ||
126 | .Pp | ||
127 | Output format for RSA, DSA, ECDSA, and Ed25519 keys: | ||
128 | .Bd -literal | ||
129 | host-or-namelist keytype base64-encoded-key | ||
130 | .Ed | ||
131 | .Pp | ||
132 | Where | ||
133 | .Ar keytype | ||
134 | is either | ||
135 | .Dq ecdsa-sha2-nistp256 , | ||
136 | .Dq ecdsa-sha2-nistp384 , | ||
137 | .Dq ecdsa-sha2-nistp521 , | ||
138 | .Dq ssh-ed25519 , | ||
139 | .Dq ssh-dss | ||
140 | or | ||
141 | .Dq ssh-rsa . | ||
142 | .Pp | ||
143 | .Pa /etc/ssh/ssh_known_hosts | 130 | .Pa /etc/ssh/ssh_known_hosts |
144 | .Sh EXAMPLES | 131 | .Sh EXAMPLES |
145 | Print the rsa host key for machine | 132 | Print the RSA host key for machine |
146 | .Ar hostname : | 133 | .Ar hostname : |
147 | .Bd -literal | 134 | .Pp |
148 | $ ssh-keyscan hostname | 135 | .Dl $ ssh-keyscan -t rsa hostname |
149 | .Ed | ||
150 | .Pp | 136 | .Pp |
151 | Find all hosts from the file | 137 | Find all hosts from the file |
152 | .Pa ssh_hosts | 138 | .Pa ssh_hosts |
153 | which have new or different keys from those in the sorted file | 139 | which have new or different keys from those in the sorted file |
154 | .Pa ssh_known_hosts : | 140 | .Pa ssh_known_hosts : |
155 | .Bd -literal | 141 | .Bd -literal -offset indent |
156 | $ ssh-keyscan -t rsa,dsa,ecdsa,ed25519 -f ssh_hosts | \e | 142 | $ ssh-keyscan -t rsa,dsa,ecdsa,ed25519 -f ssh_hosts | \e |
157 | sort -u - ssh_known_hosts | diff ssh_known_hosts - | 143 | sort -u - ssh_known_hosts | diff ssh_known_hosts - |
158 | .Ed | 144 | .Ed |
159 | .Sh SEE ALSO | 145 | .Sh SEE ALSO |
160 | .Xr ssh 1 , | 146 | .Xr ssh 1 , |
161 | .Xr sshd 8 | 147 | .Xr sshd 8 |
148 | .Rs | ||
149 | .%D 2006 | ||
150 | .%R RFC 4255 | ||
151 | .%T Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints | ||
152 | .Re | ||
162 | .Sh AUTHORS | 153 | .Sh AUTHORS |
163 | .An -nosplit | 154 | .An -nosplit |
164 | .An David Mazieres Aq Mt dm@lcs.mit.edu | 155 | .An David Mazieres Aq Mt dm@lcs.mit.edu |
165 | wrote the initial version, and | 156 | wrote the initial version, and |
166 | .An Wayne Davison Aq Mt wayned@users.sourceforge.net | 157 | .An Wayne Davison Aq Mt wayned@users.sourceforge.net |
167 | added support for protocol version 2. | 158 | added support for protocol version 2. |
168 | .Sh BUGS | ||
169 | It generates "Connection closed by remote host" messages on the consoles | ||
170 | of all the machines it scans if the server is older than version 2.9. | ||
171 | This is because it opens a connection to the ssh port, reads the public | ||
172 | key, and drops the connection as soon as it gets the key. | ||
diff --git a/ssh-keyscan.c b/ssh-keyscan.c index 258123ae8..381fb0844 100644 --- a/ssh-keyscan.c +++ b/ssh-keyscan.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-keyscan.c,v 1.115 2017/06/30 04:17:23 dtucker Exp $ */ | 1 | /* $OpenBSD: ssh-keyscan.c,v 1.119 2018/03/02 21:40:15 jmc Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>. | 3 | * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>. |
4 | * | 4 | * |
@@ -46,6 +46,7 @@ | |||
46 | #include "hostfile.h" | 46 | #include "hostfile.h" |
47 | #include "ssherr.h" | 47 | #include "ssherr.h" |
48 | #include "ssh_api.h" | 48 | #include "ssh_api.h" |
49 | #include "dns.h" | ||
49 | 50 | ||
50 | /* Flag indicating whether IPv4 or IPv6. This can be set on the command line. | 51 | /* Flag indicating whether IPv4 or IPv6. This can be set on the command line. |
51 | Default value is AF_UNSPEC means both IPv4 and IPv6. */ | 52 | Default value is AF_UNSPEC means both IPv4 and IPv6. */ |
@@ -57,15 +58,18 @@ int ssh_port = SSH_DEFAULT_PORT; | |||
57 | #define KT_RSA (1<<1) | 58 | #define KT_RSA (1<<1) |
58 | #define KT_ECDSA (1<<2) | 59 | #define KT_ECDSA (1<<2) |
59 | #define KT_ED25519 (1<<3) | 60 | #define KT_ED25519 (1<<3) |
61 | #define KT_XMSS (1<<4) | ||
60 | 62 | ||
61 | #define KT_MIN KT_DSA | 63 | #define KT_MIN KT_DSA |
62 | #define KT_MAX KT_ED25519 | 64 | #define KT_MAX KT_XMSS |
63 | 65 | ||
64 | int get_cert = 0; | 66 | int get_cert = 0; |
65 | int get_keytypes = KT_RSA|KT_ECDSA|KT_ED25519; | 67 | int get_keytypes = KT_RSA|KT_ECDSA|KT_ED25519; |
66 | 68 | ||
67 | int hash_hosts = 0; /* Hash hostname on output */ | 69 | int hash_hosts = 0; /* Hash hostname on output */ |
68 | 70 | ||
71 | int print_sshfp = 0; /* Print SSHFP records instead of known_hosts */ | ||
72 | |||
69 | #define MAXMAXFD 256 | 73 | #define MAXMAXFD 256 |
70 | 74 | ||
71 | /* The number of seconds after which to give up on a TCP connection */ | 75 | /* The number of seconds after which to give up on a TCP connection */ |
@@ -235,6 +239,10 @@ keygrab_ssh2(con *c) | |||
235 | myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = get_cert ? | 239 | myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = get_cert ? |
236 | "ssh-ed25519-cert-v01@openssh.com" : "ssh-ed25519"; | 240 | "ssh-ed25519-cert-v01@openssh.com" : "ssh-ed25519"; |
237 | break; | 241 | break; |
242 | case KT_XMSS: | ||
243 | myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = get_cert ? | ||
244 | "ssh-xmss-cert-v01@openssh.com" : "ssh-xmss@openssh.com"; | ||
245 | break; | ||
238 | case KT_ECDSA: | 246 | case KT_ECDSA: |
239 | myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = get_cert ? | 247 | myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = get_cert ? |
240 | "ecdsa-sha2-nistp256-cert-v01@openssh.com," | 248 | "ecdsa-sha2-nistp256-cert-v01@openssh.com," |
@@ -280,6 +288,11 @@ keyprint_one(const char *host, struct sshkey *key) | |||
280 | char *hostport; | 288 | char *hostport; |
281 | const char *known_host, *hashed; | 289 | const char *known_host, *hashed; |
282 | 290 | ||
291 | if (print_sshfp) { | ||
292 | export_dns_rr(host, key, stdout, 0); | ||
293 | return; | ||
294 | } | ||
295 | |||
283 | hostport = put_host_port(host, ssh_port); | 296 | hostport = put_host_port(host, ssh_port); |
284 | lowercase(hostport); | 297 | lowercase(hostport); |
285 | if (hash_hosts && (hashed = host_hash(host, NULL, 0)) == NULL) | 298 | if (hash_hosts && (hashed = host_hash(host, NULL, 0)) == NULL) |
@@ -377,7 +390,7 @@ conalloc(char *iname, char *oname, int keytype) | |||
377 | fdcon[s].c_len = 4; | 390 | fdcon[s].c_len = 4; |
378 | fdcon[s].c_off = 0; | 391 | fdcon[s].c_off = 0; |
379 | fdcon[s].c_keytype = keytype; | 392 | fdcon[s].c_keytype = keytype; |
380 | gettimeofday(&fdcon[s].c_tv, NULL); | 393 | monotime_tv(&fdcon[s].c_tv); |
381 | fdcon[s].c_tv.tv_sec += timeout; | 394 | fdcon[s].c_tv.tv_sec += timeout; |
382 | TAILQ_INSERT_TAIL(&tq, &fdcon[s], c_link); | 395 | TAILQ_INSERT_TAIL(&tq, &fdcon[s], c_link); |
383 | FD_SET(s, read_wait); | 396 | FD_SET(s, read_wait); |
@@ -411,7 +424,7 @@ static void | |||
411 | contouch(int s) | 424 | contouch(int s) |
412 | { | 425 | { |
413 | TAILQ_REMOVE(&tq, &fdcon[s], c_link); | 426 | TAILQ_REMOVE(&tq, &fdcon[s], c_link); |
414 | gettimeofday(&fdcon[s].c_tv, NULL); | 427 | monotime_tv(&fdcon[s].c_tv); |
415 | fdcon[s].c_tv.tv_sec += timeout; | 428 | fdcon[s].c_tv.tv_sec += timeout; |
416 | TAILQ_INSERT_TAIL(&tq, &fdcon[s], c_link); | 429 | TAILQ_INSERT_TAIL(&tq, &fdcon[s], c_link); |
417 | } | 430 | } |
@@ -497,7 +510,8 @@ congreet(int s) | |||
497 | confree(s); | 510 | confree(s); |
498 | return; | 511 | return; |
499 | } | 512 | } |
500 | fprintf(stderr, "# %s:%d %s\n", c->c_name, ssh_port, chop(buf)); | 513 | fprintf(stderr, "%c %s:%d %s\n", print_sshfp ? ';' : '#', |
514 | c->c_name, ssh_port, chop(buf)); | ||
501 | keygrab_ssh2(c); | 515 | keygrab_ssh2(c); |
502 | confree(s); | 516 | confree(s); |
503 | } | 517 | } |
@@ -545,7 +559,7 @@ conloop(void) | |||
545 | con *c; | 559 | con *c; |
546 | int i; | 560 | int i; |
547 | 561 | ||
548 | gettimeofday(&now, NULL); | 562 | monotime_tv(&now); |
549 | c = TAILQ_FIRST(&tq); | 563 | c = TAILQ_FIRST(&tq); |
550 | 564 | ||
551 | if (c && (c->c_tv.tv_sec > now.tv_sec || | 565 | if (c && (c->c_tv.tv_sec > now.tv_sec || |
@@ -621,8 +635,8 @@ static void | |||
621 | usage(void) | 635 | usage(void) |
622 | { | 636 | { |
623 | fprintf(stderr, | 637 | fprintf(stderr, |
624 | "usage: %s [-46cHv] [-f file] [-p port] [-T timeout] [-t type]\n" | 638 | "usage: %s [-46cDHv] [-f file] [-p port] [-T timeout] [-t type]\n" |
625 | "\t\t [host | addrlist namelist] ...\n", | 639 | "\t\t [host | addrlist namelist]\n", |
626 | __progname); | 640 | __progname); |
627 | exit(1); | 641 | exit(1); |
628 | } | 642 | } |
@@ -650,7 +664,7 @@ main(int argc, char **argv) | |||
650 | if (argc <= 1) | 664 | if (argc <= 1) |
651 | usage(); | 665 | usage(); |
652 | 666 | ||
653 | while ((opt = getopt(argc, argv, "cHv46p:T:t:f:")) != -1) { | 667 | while ((opt = getopt(argc, argv, "cDHv46p:T:t:f:")) != -1) { |
654 | switch (opt) { | 668 | switch (opt) { |
655 | case 'H': | 669 | case 'H': |
656 | hash_hosts = 1; | 670 | hash_hosts = 1; |
@@ -658,6 +672,9 @@ main(int argc, char **argv) | |||
658 | case 'c': | 672 | case 'c': |
659 | get_cert = 1; | 673 | get_cert = 1; |
660 | break; | 674 | break; |
675 | case 'D': | ||
676 | print_sshfp = 1; | ||
677 | break; | ||
661 | case 'p': | 678 | case 'p': |
662 | ssh_port = a2port(optarg); | 679 | ssh_port = a2port(optarg); |
663 | if (ssh_port <= 0) { | 680 | if (ssh_port <= 0) { |
@@ -706,6 +723,9 @@ main(int argc, char **argv) | |||
706 | case KEY_ED25519: | 723 | case KEY_ED25519: |
707 | get_keytypes |= KT_ED25519; | 724 | get_keytypes |= KT_ED25519; |
708 | break; | 725 | break; |
726 | case KEY_XMSS: | ||
727 | get_keytypes |= KT_XMSS; | ||
728 | break; | ||
709 | case KEY_UNSPEC: | 729 | case KEY_UNSPEC: |
710 | default: | 730 | default: |
711 | fatal("Unknown key type \"%s\"", tname); | 731 | fatal("Unknown key type \"%s\"", tname); |
diff --git a/ssh-keysign.c b/ssh-keysign.c index ac5034de8..78bb66b08 100644 --- a/ssh-keysign.c +++ b/ssh-keysign.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-keysign.c,v 1.52 2016/02/15 09:47:49 dtucker Exp $ */ | 1 | /* $OpenBSD: ssh-keysign.c,v 1.54 2018/02/23 15:58:38 markus Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2002 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2002 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -158,7 +158,7 @@ valid_request(struct passwd *pw, char *host, struct sshkey **ret, | |||
158 | 158 | ||
159 | debug3("%s: fail %d", __func__, fail); | 159 | debug3("%s: fail %d", __func__, fail); |
160 | 160 | ||
161 | if (fail && key != NULL) | 161 | if (fail) |
162 | sshkey_free(key); | 162 | sshkey_free(key); |
163 | else if (ret != NULL) | 163 | else if (ret != NULL) |
164 | *ret = key; | 164 | *ret = key; |
@@ -171,7 +171,7 @@ main(int argc, char **argv) | |||
171 | { | 171 | { |
172 | struct sshbuf *b; | 172 | struct sshbuf *b; |
173 | Options options; | 173 | Options options; |
174 | #define NUM_KEYTYPES 4 | 174 | #define NUM_KEYTYPES 5 |
175 | struct sshkey *keys[NUM_KEYTYPES], *key = NULL; | 175 | struct sshkey *keys[NUM_KEYTYPES], *key = NULL; |
176 | struct passwd *pw; | 176 | struct passwd *pw; |
177 | int r, key_fd[NUM_KEYTYPES], i, found, version = 2, fd; | 177 | int r, key_fd[NUM_KEYTYPES], i, found, version = 2, fd; |
@@ -198,6 +198,7 @@ main(int argc, char **argv) | |||
198 | key_fd[i++] = open(_PATH_HOST_DSA_KEY_FILE, O_RDONLY); | 198 | key_fd[i++] = open(_PATH_HOST_DSA_KEY_FILE, O_RDONLY); |
199 | key_fd[i++] = open(_PATH_HOST_ECDSA_KEY_FILE, O_RDONLY); | 199 | key_fd[i++] = open(_PATH_HOST_ECDSA_KEY_FILE, O_RDONLY); |
200 | key_fd[i++] = open(_PATH_HOST_ED25519_KEY_FILE, O_RDONLY); | 200 | key_fd[i++] = open(_PATH_HOST_ED25519_KEY_FILE, O_RDONLY); |
201 | key_fd[i++] = open(_PATH_HOST_XMSS_KEY_FILE, O_RDONLY); | ||
201 | key_fd[i++] = open(_PATH_HOST_RSA_KEY_FILE, O_RDONLY); | 202 | key_fd[i++] = open(_PATH_HOST_RSA_KEY_FILE, O_RDONLY); |
202 | 203 | ||
203 | original_real_uid = getuid(); /* XXX readconf.c needs this */ | 204 | original_real_uid = getuid(); /* XXX readconf.c needs this */ |
diff --git a/ssh-pkcs11-client.c b/ssh-pkcs11-client.c index a79c87210..fc7582827 100644 --- a/ssh-pkcs11-client.c +++ b/ssh-pkcs11-client.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-pkcs11-client.c,v 1.7 2017/05/30 08:52:19 markus Exp $ */ | 1 | /* $OpenBSD: ssh-pkcs11-client.c,v 1.8 2018/02/05 05:37:46 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2010 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2010 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -99,7 +99,8 @@ pkcs11_init(int interactive) | |||
99 | void | 99 | void |
100 | pkcs11_terminate(void) | 100 | pkcs11_terminate(void) |
101 | { | 101 | { |
102 | close(fd); | 102 | if (fd >= 0) |
103 | close(fd); | ||
103 | } | 104 | } |
104 | 105 | ||
105 | static int | 106 | static int |
diff --git a/ssh-pkcs11-helper.c b/ssh-pkcs11-helper.c index fd3039c14..6301033c5 100644 --- a/ssh-pkcs11-helper.c +++ b/ssh-pkcs11-helper.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-pkcs11-helper.c,v 1.13 2017/05/30 08:52:19 markus Exp $ */ | 1 | /* $OpenBSD: ssh-pkcs11-helper.c,v 1.14 2018/01/08 15:18:46 markus Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2010 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2010 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -30,12 +30,13 @@ | |||
30 | #include <errno.h> | 30 | #include <errno.h> |
31 | 31 | ||
32 | #include "xmalloc.h" | 32 | #include "xmalloc.h" |
33 | #include "buffer.h" | 33 | #include "sshbuf.h" |
34 | #include "log.h" | 34 | #include "log.h" |
35 | #include "misc.h" | 35 | #include "misc.h" |
36 | #include "key.h" | 36 | #include "sshkey.h" |
37 | #include "authfd.h" | 37 | #include "authfd.h" |
38 | #include "ssh-pkcs11.h" | 38 | #include "ssh-pkcs11.h" |
39 | #include "ssherr.h" | ||
39 | 40 | ||
40 | #ifdef ENABLE_PKCS11 | 41 | #ifdef ENABLE_PKCS11 |
41 | 42 | ||
@@ -51,13 +52,9 @@ TAILQ_HEAD(, pkcs11_keyinfo) pkcs11_keylist; | |||
51 | 52 | ||
52 | #define MAX_MSG_LENGTH 10240 /*XXX*/ | 53 | #define MAX_MSG_LENGTH 10240 /*XXX*/ |
53 | 54 | ||
54 | /* helper */ | ||
55 | #define get_int() buffer_get_int(&iqueue); | ||
56 | #define get_string(lenp) buffer_get_string(&iqueue, lenp); | ||
57 | |||
58 | /* input and output queue */ | 55 | /* input and output queue */ |
59 | Buffer iqueue; | 56 | struct sshbuf *iqueue; |
60 | Buffer oqueue; | 57 | struct sshbuf *oqueue; |
61 | 58 | ||
62 | static void | 59 | static void |
63 | add_key(struct sshkey *k, char *name) | 60 | add_key(struct sshkey *k, char *name) |
@@ -80,7 +77,7 @@ del_keys_by_name(char *name) | |||
80 | if (!strcmp(ki->providername, name)) { | 77 | if (!strcmp(ki->providername, name)) { |
81 | TAILQ_REMOVE(&pkcs11_keylist, ki, next); | 78 | TAILQ_REMOVE(&pkcs11_keylist, ki, next); |
82 | free(ki->providername); | 79 | free(ki->providername); |
83 | key_free(ki->key); | 80 | sshkey_free(ki->key); |
84 | free(ki); | 81 | free(ki); |
85 | } | 82 | } |
86 | } | 83 | } |
@@ -94,20 +91,19 @@ lookup_key(struct sshkey *k) | |||
94 | 91 | ||
95 | TAILQ_FOREACH(ki, &pkcs11_keylist, next) { | 92 | TAILQ_FOREACH(ki, &pkcs11_keylist, next) { |
96 | debug("check %p %s", ki, ki->providername); | 93 | debug("check %p %s", ki, ki->providername); |
97 | if (key_equal(k, ki->key)) | 94 | if (sshkey_equal(k, ki->key)) |
98 | return (ki->key); | 95 | return (ki->key); |
99 | } | 96 | } |
100 | return (NULL); | 97 | return (NULL); |
101 | } | 98 | } |
102 | 99 | ||
103 | static void | 100 | static void |
104 | send_msg(Buffer *m) | 101 | send_msg(struct sshbuf *m) |
105 | { | 102 | { |
106 | int mlen = buffer_len(m); | 103 | int r; |
107 | 104 | ||
108 | buffer_put_int(&oqueue, mlen); | 105 | if ((r = sshbuf_put_stringb(oqueue, m)) != 0) |
109 | buffer_append(&oqueue, buffer_ptr(m), mlen); | 106 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
110 | buffer_consume(m, mlen); | ||
111 | } | 107 | } |
112 | 108 | ||
113 | static void | 109 | static void |
@@ -115,69 +111,85 @@ process_add(void) | |||
115 | { | 111 | { |
116 | char *name, *pin; | 112 | char *name, *pin; |
117 | struct sshkey **keys; | 113 | struct sshkey **keys; |
118 | int i, nkeys; | 114 | int r, i, nkeys; |
119 | u_char *blob; | 115 | u_char *blob; |
120 | u_int blen; | 116 | size_t blen; |
121 | Buffer msg; | 117 | struct sshbuf *msg; |
122 | 118 | ||
123 | buffer_init(&msg); | 119 | if ((msg = sshbuf_new()) == NULL) |
124 | name = get_string(NULL); | 120 | fatal("%s: sshbuf_new failed", __func__); |
125 | pin = get_string(NULL); | 121 | if ((r = sshbuf_get_cstring(iqueue, &name, NULL)) != 0 || |
122 | (r = sshbuf_get_cstring(iqueue, &pin, NULL)) != 0) | ||
123 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
126 | if ((nkeys = pkcs11_add_provider(name, pin, &keys)) > 0) { | 124 | if ((nkeys = pkcs11_add_provider(name, pin, &keys)) > 0) { |
127 | buffer_put_char(&msg, SSH2_AGENT_IDENTITIES_ANSWER); | 125 | if ((r = sshbuf_put_u8(msg, |
128 | buffer_put_int(&msg, nkeys); | 126 | SSH2_AGENT_IDENTITIES_ANSWER)) != 0 || |
127 | (r = sshbuf_put_u32(msg, nkeys)) != 0) | ||
128 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
129 | for (i = 0; i < nkeys; i++) { | 129 | for (i = 0; i < nkeys; i++) { |
130 | if (key_to_blob(keys[i], &blob, &blen) == 0) | 130 | if ((r = sshkey_to_blob(keys[i], &blob, &blen)) != 0) { |
131 | debug("%s: sshkey_to_blob: %s", | ||
132 | __func__, ssh_err(r)); | ||
131 | continue; | 133 | continue; |
132 | buffer_put_string(&msg, blob, blen); | 134 | } |
133 | buffer_put_cstring(&msg, name); | 135 | if ((r = sshbuf_put_string(msg, blob, blen)) != 0 || |
136 | (r = sshbuf_put_cstring(msg, name)) != 0) | ||
137 | fatal("%s: buffer error: %s", | ||
138 | __func__, ssh_err(r)); | ||
134 | free(blob); | 139 | free(blob); |
135 | add_key(keys[i], name); | 140 | add_key(keys[i], name); |
136 | } | 141 | } |
137 | free(keys); | 142 | free(keys); |
138 | } else { | 143 | } else { |
139 | buffer_put_char(&msg, SSH_AGENT_FAILURE); | 144 | if ((r = sshbuf_put_u8(msg, SSH_AGENT_FAILURE)) != 0) |
145 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
140 | } | 146 | } |
141 | free(pin); | 147 | free(pin); |
142 | free(name); | 148 | free(name); |
143 | send_msg(&msg); | 149 | send_msg(msg); |
144 | buffer_free(&msg); | 150 | sshbuf_free(msg); |
145 | } | 151 | } |
146 | 152 | ||
147 | static void | 153 | static void |
148 | process_del(void) | 154 | process_del(void) |
149 | { | 155 | { |
150 | char *name, *pin; | 156 | char *name, *pin; |
151 | Buffer msg; | 157 | struct sshbuf *msg; |
152 | 158 | int r; | |
153 | buffer_init(&msg); | 159 | |
154 | name = get_string(NULL); | 160 | if ((msg = sshbuf_new()) == NULL) |
155 | pin = get_string(NULL); | 161 | fatal("%s: sshbuf_new failed", __func__); |
162 | if ((r = sshbuf_get_cstring(iqueue, &name, NULL)) != 0 || | ||
163 | (r = sshbuf_get_cstring(iqueue, &pin, NULL)) != 0) | ||
164 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
156 | del_keys_by_name(name); | 165 | del_keys_by_name(name); |
157 | if (pkcs11_del_provider(name) == 0) | 166 | if ((r = sshbuf_put_u8(msg, pkcs11_del_provider(name) == 0 ? |
158 | buffer_put_char(&msg, SSH_AGENT_SUCCESS); | 167 | SSH_AGENT_SUCCESS : SSH_AGENT_FAILURE)) != 0) |
159 | else | 168 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); |
160 | buffer_put_char(&msg, SSH_AGENT_FAILURE); | ||
161 | free(pin); | 169 | free(pin); |
162 | free(name); | 170 | free(name); |
163 | send_msg(&msg); | 171 | send_msg(msg); |
164 | buffer_free(&msg); | 172 | sshbuf_free(msg); |
165 | } | 173 | } |
166 | 174 | ||
167 | static void | 175 | static void |
168 | process_sign(void) | 176 | process_sign(void) |
169 | { | 177 | { |
170 | u_char *blob, *data, *signature = NULL; | 178 | u_char *blob, *data, *signature = NULL; |
171 | u_int blen, dlen, slen = 0; | 179 | size_t blen, dlen, slen = 0; |
172 | int ok = -1; | 180 | int r, ok = -1; |
173 | struct sshkey *key, *found; | 181 | struct sshkey *key, *found; |
174 | Buffer msg; | 182 | struct sshbuf *msg; |
175 | 183 | ||
176 | blob = get_string(&blen); | 184 | /* XXX support SHA2 signature flags */ |
177 | data = get_string(&dlen); | 185 | if ((r = sshbuf_get_string(iqueue, &blob, &blen)) != 0 || |
178 | (void)get_int(); /* XXX ignore flags */ | 186 | (r = sshbuf_get_string(iqueue, &data, &dlen)) != 0 || |
187 | (r = sshbuf_get_u32(iqueue, NULL)) != 0) | ||
188 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
179 | 189 | ||
180 | if ((key = key_from_blob(blob, blen)) != NULL) { | 190 | if ((r = sshkey_from_blob(blob, blen, &key)) != 0) |
191 | error("%s: sshkey_from_blob: %s", __func__, ssh_err(r)); | ||
192 | else { | ||
181 | if ((found = lookup_key(key)) != NULL) { | 193 | if ((found = lookup_key(key)) != NULL) { |
182 | #ifdef WITH_OPENSSL | 194 | #ifdef WITH_OPENSSL |
183 | int ret; | 195 | int ret; |
@@ -191,20 +203,23 @@ process_sign(void) | |||
191 | } | 203 | } |
192 | #endif /* WITH_OPENSSL */ | 204 | #endif /* WITH_OPENSSL */ |
193 | } | 205 | } |
194 | key_free(key); | 206 | sshkey_free(key); |
195 | } | 207 | } |
196 | buffer_init(&msg); | 208 | if ((msg = sshbuf_new()) == NULL) |
209 | fatal("%s: sshbuf_new failed", __func__); | ||
197 | if (ok == 0) { | 210 | if (ok == 0) { |
198 | buffer_put_char(&msg, SSH2_AGENT_SIGN_RESPONSE); | 211 | if ((r = sshbuf_put_u8(msg, SSH2_AGENT_SIGN_RESPONSE)) != 0 || |
199 | buffer_put_string(&msg, signature, slen); | 212 | (r = sshbuf_put_string(msg, signature, slen)) != 0) |
213 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
200 | } else { | 214 | } else { |
201 | buffer_put_char(&msg, SSH_AGENT_FAILURE); | 215 | if ((r = sshbuf_put_u8(msg, SSH2_AGENT_FAILURE)) != 0) |
216 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
202 | } | 217 | } |
203 | free(data); | 218 | free(data); |
204 | free(blob); | 219 | free(blob); |
205 | free(signature); | 220 | free(signature); |
206 | send_msg(&msg); | 221 | send_msg(msg); |
207 | buffer_free(&msg); | 222 | sshbuf_free(msg); |
208 | } | 223 | } |
209 | 224 | ||
210 | static void | 225 | static void |
@@ -213,13 +228,14 @@ process(void) | |||
213 | u_int msg_len; | 228 | u_int msg_len; |
214 | u_int buf_len; | 229 | u_int buf_len; |
215 | u_int consumed; | 230 | u_int consumed; |
216 | u_int type; | 231 | u_char type; |
217 | u_char *cp; | 232 | const u_char *cp; |
233 | int r; | ||
218 | 234 | ||
219 | buf_len = buffer_len(&iqueue); | 235 | buf_len = sshbuf_len(iqueue); |
220 | if (buf_len < 5) | 236 | if (buf_len < 5) |
221 | return; /* Incomplete message. */ | 237 | return; /* Incomplete message. */ |
222 | cp = buffer_ptr(&iqueue); | 238 | cp = sshbuf_ptr(iqueue); |
223 | msg_len = get_u32(cp); | 239 | msg_len = get_u32(cp); |
224 | if (msg_len > MAX_MSG_LENGTH) { | 240 | if (msg_len > MAX_MSG_LENGTH) { |
225 | error("bad message len %d", msg_len); | 241 | error("bad message len %d", msg_len); |
@@ -227,9 +243,10 @@ process(void) | |||
227 | } | 243 | } |
228 | if (buf_len < msg_len + 4) | 244 | if (buf_len < msg_len + 4) |
229 | return; | 245 | return; |
230 | buffer_consume(&iqueue, 4); | 246 | if ((r = sshbuf_consume(iqueue, 4)) != 0 || |
247 | (r = sshbuf_get_u8(iqueue, &type)) != 0) | ||
248 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
231 | buf_len -= 4; | 249 | buf_len -= 4; |
232 | type = buffer_get_char(&iqueue); | ||
233 | switch (type) { | 250 | switch (type) { |
234 | case SSH_AGENTC_ADD_SMARTCARD_KEY: | 251 | case SSH_AGENTC_ADD_SMARTCARD_KEY: |
235 | debug("process_add"); | 252 | debug("process_add"); |
@@ -248,17 +265,19 @@ process(void) | |||
248 | break; | 265 | break; |
249 | } | 266 | } |
250 | /* discard the remaining bytes from the current packet */ | 267 | /* discard the remaining bytes from the current packet */ |
251 | if (buf_len < buffer_len(&iqueue)) { | 268 | if (buf_len < sshbuf_len(iqueue)) { |
252 | error("iqueue grew unexpectedly"); | 269 | error("iqueue grew unexpectedly"); |
253 | cleanup_exit(255); | 270 | cleanup_exit(255); |
254 | } | 271 | } |
255 | consumed = buf_len - buffer_len(&iqueue); | 272 | consumed = buf_len - sshbuf_len(iqueue); |
256 | if (msg_len < consumed) { | 273 | if (msg_len < consumed) { |
257 | error("msg_len %d < consumed %d", msg_len, consumed); | 274 | error("msg_len %d < consumed %d", msg_len, consumed); |
258 | cleanup_exit(255); | 275 | cleanup_exit(255); |
259 | } | 276 | } |
260 | if (msg_len > consumed) | 277 | if (msg_len > consumed) { |
261 | buffer_consume(&iqueue, msg_len - consumed); | 278 | if ((r = sshbuf_consume(iqueue, msg_len - consumed)) != 0) |
279 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
280 | } | ||
262 | } | 281 | } |
263 | 282 | ||
264 | void | 283 | void |
@@ -272,7 +291,7 @@ int | |||
272 | main(int argc, char **argv) | 291 | main(int argc, char **argv) |
273 | { | 292 | { |
274 | fd_set *rset, *wset; | 293 | fd_set *rset, *wset; |
275 | int in, out, max, log_stderr = 0; | 294 | int r, in, out, max, log_stderr = 0; |
276 | ssize_t len, olen, set_size; | 295 | ssize_t len, olen, set_size; |
277 | SyslogFacility log_facility = SYSLOG_FACILITY_AUTH; | 296 | SyslogFacility log_facility = SYSLOG_FACILITY_AUTH; |
278 | LogLevel log_level = SYSLOG_LEVEL_ERROR; | 297 | LogLevel log_level = SYSLOG_LEVEL_ERROR; |
@@ -298,8 +317,10 @@ main(int argc, char **argv) | |||
298 | if (out > max) | 317 | if (out > max) |
299 | max = out; | 318 | max = out; |
300 | 319 | ||
301 | buffer_init(&iqueue); | 320 | if ((iqueue = sshbuf_new()) == NULL) |
302 | buffer_init(&oqueue); | 321 | fatal("%s: sshbuf_new failed", __func__); |
322 | if ((oqueue = sshbuf_new()) == NULL) | ||
323 | fatal("%s: sshbuf_new failed", __func__); | ||
303 | 324 | ||
304 | set_size = howmany(max + 1, NFDBITS) * sizeof(fd_mask); | 325 | set_size = howmany(max + 1, NFDBITS) * sizeof(fd_mask); |
305 | rset = xmalloc(set_size); | 326 | rset = xmalloc(set_size); |
@@ -314,11 +335,13 @@ main(int argc, char **argv) | |||
314 | * the worst-case length packet it can generate, | 335 | * the worst-case length packet it can generate, |
315 | * otherwise apply backpressure by stopping reads. | 336 | * otherwise apply backpressure by stopping reads. |
316 | */ | 337 | */ |
317 | if (buffer_check_alloc(&iqueue, sizeof(buf)) && | 338 | if ((r = sshbuf_check_reserve(iqueue, sizeof(buf))) == 0 && |
318 | buffer_check_alloc(&oqueue, MAX_MSG_LENGTH)) | 339 | (r = sshbuf_check_reserve(oqueue, MAX_MSG_LENGTH)) == 0) |
319 | FD_SET(in, rset); | 340 | FD_SET(in, rset); |
341 | else if (r != SSH_ERR_NO_BUFFER_SPACE) | ||
342 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
320 | 343 | ||
321 | olen = buffer_len(&oqueue); | 344 | olen = sshbuf_len(oqueue); |
322 | if (olen > 0) | 345 | if (olen > 0) |
323 | FD_SET(out, wset); | 346 | FD_SET(out, wset); |
324 | 347 | ||
@@ -338,18 +361,20 @@ main(int argc, char **argv) | |||
338 | } else if (len < 0) { | 361 | } else if (len < 0) { |
339 | error("read: %s", strerror(errno)); | 362 | error("read: %s", strerror(errno)); |
340 | cleanup_exit(1); | 363 | cleanup_exit(1); |
341 | } else { | 364 | } else if ((r = sshbuf_put(iqueue, buf, len)) != 0) { |
342 | buffer_append(&iqueue, buf, len); | 365 | fatal("%s: buffer error: %s", |
366 | __func__, ssh_err(r)); | ||
343 | } | 367 | } |
344 | } | 368 | } |
345 | /* send oqueue to stdout */ | 369 | /* send oqueue to stdout */ |
346 | if (FD_ISSET(out, wset)) { | 370 | if (FD_ISSET(out, wset)) { |
347 | len = write(out, buffer_ptr(&oqueue), olen); | 371 | len = write(out, sshbuf_ptr(oqueue), olen); |
348 | if (len < 0) { | 372 | if (len < 0) { |
349 | error("write: %s", strerror(errno)); | 373 | error("write: %s", strerror(errno)); |
350 | cleanup_exit(1); | 374 | cleanup_exit(1); |
351 | } else { | 375 | } else if ((r = sshbuf_consume(oqueue, len)) != 0) { |
352 | buffer_consume(&oqueue, len); | 376 | fatal("%s: buffer error: %s", |
377 | __func__, ssh_err(r)); | ||
353 | } | 378 | } |
354 | } | 379 | } |
355 | 380 | ||
@@ -358,8 +383,10 @@ main(int argc, char **argv) | |||
358 | * into the output buffer, otherwise stop processing input | 383 | * into the output buffer, otherwise stop processing input |
359 | * and let the output queue drain. | 384 | * and let the output queue drain. |
360 | */ | 385 | */ |
361 | if (buffer_check_alloc(&oqueue, MAX_MSG_LENGTH)) | 386 | if ((r = sshbuf_check_reserve(oqueue, MAX_MSG_LENGTH)) == 0) |
362 | process(); | 387 | process(); |
388 | else if (r != SSH_ERR_NO_BUFFER_SPACE) | ||
389 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
363 | } | 390 | } |
364 | } | 391 | } |
365 | #else /* ENABLE_PKCS11 */ | 392 | #else /* ENABLE_PKCS11 */ |
diff --git a/ssh-pkcs11.c b/ssh-pkcs11.c index b37491c5d..65a7b5897 100644 --- a/ssh-pkcs11.c +++ b/ssh-pkcs11.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-pkcs11.c,v 1.25 2017/05/31 09:15:42 deraadt Exp $ */ | 1 | /* $OpenBSD: ssh-pkcs11.c,v 1.26 2018/02/07 02:06:51 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2010 Markus Friedl. All rights reserved. | 3 | * Copyright (c) 2010 Markus Friedl. All rights reserved. |
4 | * | 4 | * |
@@ -532,8 +532,7 @@ pkcs11_fetch_keys_filter(struct pkcs11_provider *p, CK_ULONG slotidx, | |||
532 | == NULL) { | 532 | == NULL) { |
533 | error("RSAPublicKey_dup"); | 533 | error("RSAPublicKey_dup"); |
534 | } | 534 | } |
535 | if (x509) | 535 | X509_free(x509); |
536 | X509_free(x509); | ||
537 | } | 536 | } |
538 | if (rsa && rsa->n && rsa->e && | 537 | if (rsa && rsa->n && rsa->e && |
539 | pkcs11_rsa_wrap(p, slotidx, &attribs[0], rsa) == 0) { | 538 | pkcs11_rsa_wrap(p, slotidx, &attribs[0], rsa) == 0) { |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-rsa.c,v 1.62 2017/07/01 13:50:45 djm Exp $ */ | 1 | /* $OpenBSD: ssh-rsa.c,v 1.66 2018/02/14 16:27:24 jsing 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 | * |
@@ -33,6 +33,7 @@ | |||
33 | #define SSHKEY_INTERNAL | 33 | #define SSHKEY_INTERNAL |
34 | #include "sshkey.h" | 34 | #include "sshkey.h" |
35 | #include "digest.h" | 35 | #include "digest.h" |
36 | #include "log.h" | ||
36 | 37 | ||
37 | static int openssh_RSA_verify(int, u_char *, size_t, u_char *, size_t, RSA *); | 38 | static int openssh_RSA_verify(int, u_char *, size_t, u_char *, size_t, RSA *); |
38 | 39 | ||
@@ -78,13 +79,12 @@ rsa_hash_alg_nid(int type) | |||
78 | } | 79 | } |
79 | } | 80 | } |
80 | 81 | ||
81 | /* calculate p-1 and q-1 */ | ||
82 | int | 82 | int |
83 | ssh_rsa_generate_additional_parameters(struct sshkey *key) | 83 | ssh_rsa_generate_additional_parameters(struct sshkey *key) |
84 | { | 84 | { |
85 | RSA *rsa; | ||
86 | BIGNUM *aux = NULL; | 85 | BIGNUM *aux = NULL; |
87 | BN_CTX *ctx = NULL; | 86 | BN_CTX *ctx = NULL; |
87 | BIGNUM d; | ||
88 | int r; | 88 | int r; |
89 | 89 | ||
90 | if (key == NULL || key->rsa == NULL || | 90 | if (key == NULL || key->rsa == NULL || |
@@ -97,12 +97,15 @@ ssh_rsa_generate_additional_parameters(struct sshkey *key) | |||
97 | r = SSH_ERR_ALLOC_FAIL; | 97 | r = SSH_ERR_ALLOC_FAIL; |
98 | goto out; | 98 | goto out; |
99 | } | 99 | } |
100 | rsa = key->rsa; | 100 | BN_set_flags(aux, BN_FLG_CONSTTIME); |
101 | 101 | ||
102 | if ((BN_sub(aux, rsa->q, BN_value_one()) == 0) || | 102 | BN_init(&d); |
103 | (BN_mod(rsa->dmq1, rsa->d, aux, ctx) == 0) || | 103 | BN_with_flags(&d, key->rsa->d, BN_FLG_CONSTTIME); |
104 | (BN_sub(aux, rsa->p, BN_value_one()) == 0) || | 104 | |
105 | (BN_mod(rsa->dmp1, rsa->d, aux, ctx) == 0)) { | 105 | if ((BN_sub(aux, key->rsa->q, BN_value_one()) == 0) || |
106 | (BN_mod(key->rsa->dmq1, &d, aux, ctx) == 0) || | ||
107 | (BN_sub(aux, key->rsa->p, BN_value_one()) == 0) || | ||
108 | (BN_mod(key->rsa->dmp1, &d, aux, ctx) == 0)) { | ||
106 | r = SSH_ERR_LIBCRYPTO_ERROR; | 109 | r = SSH_ERR_LIBCRYPTO_ERROR; |
107 | goto out; | 110 | goto out; |
108 | } | 111 | } |
@@ -119,7 +122,7 @@ ssh_rsa_sign(const struct sshkey *key, u_char **sigp, size_t *lenp, | |||
119 | const u_char *data, size_t datalen, const char *alg_ident) | 122 | const u_char *data, size_t datalen, const char *alg_ident) |
120 | { | 123 | { |
121 | u_char digest[SSH_DIGEST_MAX_LENGTH], *sig = NULL; | 124 | u_char digest[SSH_DIGEST_MAX_LENGTH], *sig = NULL; |
122 | size_t slen; | 125 | size_t slen = 0; |
123 | u_int dlen, len; | 126 | u_int dlen, len; |
124 | int nid, hash_alg, ret = SSH_ERR_INTERNAL_ERROR; | 127 | int nid, hash_alg, ret = SSH_ERR_INTERNAL_ERROR; |
125 | struct sshbuf *b = NULL; | 128 | struct sshbuf *b = NULL; |
@@ -188,21 +191,19 @@ ssh_rsa_sign(const struct sshkey *key, u_char **sigp, size_t *lenp, | |||
188 | ret = 0; | 191 | ret = 0; |
189 | out: | 192 | out: |
190 | explicit_bzero(digest, sizeof(digest)); | 193 | explicit_bzero(digest, sizeof(digest)); |
191 | if (sig != NULL) { | 194 | freezero(sig, slen); |
192 | explicit_bzero(sig, slen); | ||
193 | free(sig); | ||
194 | } | ||
195 | sshbuf_free(b); | 195 | sshbuf_free(b); |
196 | return ret; | 196 | return ret; |
197 | } | 197 | } |
198 | 198 | ||
199 | int | 199 | int |
200 | ssh_rsa_verify(const struct sshkey *key, | 200 | ssh_rsa_verify(const struct sshkey *key, |
201 | const u_char *sig, size_t siglen, const u_char *data, size_t datalen) | 201 | const u_char *sig, size_t siglen, const u_char *data, size_t datalen, |
202 | const char *alg) | ||
202 | { | 203 | { |
203 | char *ktype = NULL; | 204 | char *sigtype = NULL; |
204 | int hash_alg, ret = SSH_ERR_INTERNAL_ERROR; | 205 | int hash_alg, ret = SSH_ERR_INTERNAL_ERROR; |
205 | size_t len, diff, modlen, dlen; | 206 | size_t len = 0, diff, modlen, dlen; |
206 | struct sshbuf *b = NULL; | 207 | struct sshbuf *b = NULL; |
207 | u_char digest[SSH_DIGEST_MAX_LENGTH], *osigblob, *sigblob = NULL; | 208 | u_char digest[SSH_DIGEST_MAX_LENGTH], *osigblob, *sigblob = NULL; |
208 | 209 | ||
@@ -215,11 +216,19 @@ ssh_rsa_verify(const struct sshkey *key, | |||
215 | 216 | ||
216 | if ((b = sshbuf_from(sig, siglen)) == NULL) | 217 | if ((b = sshbuf_from(sig, siglen)) == NULL) |
217 | return SSH_ERR_ALLOC_FAIL; | 218 | return SSH_ERR_ALLOC_FAIL; |
218 | if (sshbuf_get_cstring(b, &ktype, NULL) != 0) { | 219 | if (sshbuf_get_cstring(b, &sigtype, NULL) != 0) { |
219 | ret = SSH_ERR_INVALID_FORMAT; | 220 | ret = SSH_ERR_INVALID_FORMAT; |
220 | goto out; | 221 | goto out; |
221 | } | 222 | } |
222 | if ((hash_alg = rsa_hash_alg_from_ident(ktype)) == -1) { | 223 | /* XXX djm: need cert types that reliably yield SHA-2 signatures */ |
224 | if (alg != NULL && strcmp(alg, sigtype) != 0 && | ||
225 | strcmp(alg, "ssh-rsa-cert-v01@openssh.com") != 0) { | ||
226 | error("%s: RSA signature type mismatch: " | ||
227 | "expected %s received %s", __func__, alg, sigtype); | ||
228 | ret = SSH_ERR_SIGNATURE_INVALID; | ||
229 | goto out; | ||
230 | } | ||
231 | if ((hash_alg = rsa_hash_alg_from_ident(sigtype)) == -1) { | ||
223 | ret = SSH_ERR_KEY_TYPE_MISMATCH; | 232 | ret = SSH_ERR_KEY_TYPE_MISMATCH; |
224 | goto out; | 233 | goto out; |
225 | } | 234 | } |
@@ -259,11 +268,8 @@ ssh_rsa_verify(const struct sshkey *key, | |||
259 | ret = openssh_RSA_verify(hash_alg, digest, dlen, sigblob, len, | 268 | ret = openssh_RSA_verify(hash_alg, digest, dlen, sigblob, len, |
260 | key->rsa); | 269 | key->rsa); |
261 | out: | 270 | out: |
262 | if (sigblob != NULL) { | 271 | freezero(sigblob, len); |
263 | explicit_bzero(sigblob, len); | 272 | free(sigtype); |
264 | free(sigblob); | ||
265 | } | ||
266 | free(ktype); | ||
267 | sshbuf_free(b); | 273 | sshbuf_free(b); |
268 | explicit_bzero(digest, sizeof(digest)); | 274 | explicit_bzero(digest, sizeof(digest)); |
269 | return ret; | 275 | return ret; |
@@ -384,10 +390,7 @@ openssh_RSA_verify(int hash_alg, u_char *hash, size_t hashlen, | |||
384 | } | 390 | } |
385 | ret = 0; | 391 | ret = 0; |
386 | done: | 392 | done: |
387 | if (decrypted) { | 393 | freezero(decrypted, rsasize); |
388 | explicit_bzero(decrypted, rsasize); | ||
389 | free(decrypted); | ||
390 | } | ||
391 | return ret; | 394 | return ret; |
392 | } | 395 | } |
393 | #endif /* WITH_OPENSSL */ | 396 | #endif /* WITH_OPENSSL */ |
diff --git a/ssh-xmss.c b/ssh-xmss.c new file mode 100644 index 000000000..4c734fd7d --- /dev/null +++ b/ssh-xmss.c | |||
@@ -0,0 +1,192 @@ | |||
1 | /* $OpenBSD: ssh-xmss.c,v 1.1 2018/02/23 15:58:38 markus Exp $*/ | ||
2 | /* | ||
3 | * Copyright (c) 2017 Stefan-Lukas Gazdag. | ||
4 | * Copyright (c) 2017 Markus Friedl. | ||
5 | * | ||
6 | * 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 | * copyright notice and this permission notice appear in all copies. | ||
9 | * | ||
10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
17 | */ | ||
18 | #include "includes.h" | ||
19 | #ifdef WITH_XMSS | ||
20 | |||
21 | #define SSHKEY_INTERNAL | ||
22 | #include <sys/types.h> | ||
23 | #include <limits.h> | ||
24 | |||
25 | #include <string.h> | ||
26 | #include <stdarg.h> | ||
27 | #include <unistd.h> | ||
28 | |||
29 | #include "log.h" | ||
30 | #include "sshbuf.h" | ||
31 | #include "sshkey.h" | ||
32 | #include "sshkey-xmss.h" | ||
33 | #include "ssherr.h" | ||
34 | #include "ssh.h" | ||
35 | |||
36 | #include "xmss_fast.h" | ||
37 | |||
38 | int | ||
39 | ssh_xmss_sign(const struct sshkey *key, u_char **sigp, size_t *lenp, | ||
40 | const u_char *data, size_t datalen, u_int compat) | ||
41 | { | ||
42 | u_char *sig = NULL; | ||
43 | size_t slen = 0, len = 0, required_siglen; | ||
44 | unsigned long long smlen; | ||
45 | int r, ret; | ||
46 | struct sshbuf *b = NULL; | ||
47 | |||
48 | if (lenp != NULL) | ||
49 | *lenp = 0; | ||
50 | if (sigp != NULL) | ||
51 | *sigp = NULL; | ||
52 | |||
53 | if (key == NULL || | ||
54 | sshkey_type_plain(key->type) != KEY_XMSS || | ||
55 | key->xmss_sk == NULL || | ||
56 | sshkey_xmss_params(key) == NULL) | ||
57 | return SSH_ERR_INVALID_ARGUMENT; | ||
58 | if ((r = sshkey_xmss_siglen(key, &required_siglen)) != 0) | ||
59 | return r; | ||
60 | if (datalen >= INT_MAX - required_siglen) | ||
61 | return SSH_ERR_INVALID_ARGUMENT; | ||
62 | smlen = slen = datalen + required_siglen; | ||
63 | if ((sig = malloc(slen)) == NULL) | ||
64 | return SSH_ERR_ALLOC_FAIL; | ||
65 | if ((r = sshkey_xmss_get_state(key, error)) != 0) | ||
66 | goto out; | ||
67 | if ((ret = xmss_sign(key->xmss_sk, sshkey_xmss_bds_state(key), sig, &smlen, | ||
68 | data, datalen, sshkey_xmss_params(key))) != 0 || smlen <= datalen) { | ||
69 | r = SSH_ERR_INVALID_ARGUMENT; /* XXX better error? */ | ||
70 | goto out; | ||
71 | } | ||
72 | /* encode signature */ | ||
73 | if ((b = sshbuf_new()) == NULL) { | ||
74 | r = SSH_ERR_ALLOC_FAIL; | ||
75 | goto out; | ||
76 | } | ||
77 | if ((r = sshbuf_put_cstring(b, "ssh-xmss@openssh.com")) != 0 || | ||
78 | (r = sshbuf_put_string(b, sig, smlen - datalen)) != 0) | ||
79 | goto out; | ||
80 | len = sshbuf_len(b); | ||
81 | if (sigp != NULL) { | ||
82 | if ((*sigp = malloc(len)) == NULL) { | ||
83 | r = SSH_ERR_ALLOC_FAIL; | ||
84 | goto out; | ||
85 | } | ||
86 | memcpy(*sigp, sshbuf_ptr(b), len); | ||
87 | } | ||
88 | if (lenp != NULL) | ||
89 | *lenp = len; | ||
90 | /* success */ | ||
91 | r = 0; | ||
92 | out: | ||
93 | if ((ret = sshkey_xmss_update_state(key, error)) != 0) { | ||
94 | /* discard signature since we cannot update the state */ | ||
95 | if (r == 0 && sigp != NULL && *sigp != NULL) { | ||
96 | explicit_bzero(*sigp, len); | ||
97 | free(*sigp); | ||
98 | } | ||
99 | if (sigp != NULL) | ||
100 | *sigp = NULL; | ||
101 | if (lenp != NULL) | ||
102 | *lenp = 0; | ||
103 | r = ret; | ||
104 | } | ||
105 | sshbuf_free(b); | ||
106 | if (sig != NULL) { | ||
107 | explicit_bzero(sig, slen); | ||
108 | free(sig); | ||
109 | } | ||
110 | |||
111 | return r; | ||
112 | } | ||
113 | |||
114 | int | ||
115 | ssh_xmss_verify(const struct sshkey *key, | ||
116 | const u_char *signature, size_t signaturelen, | ||
117 | const u_char *data, size_t datalen, u_int compat) | ||
118 | { | ||
119 | struct sshbuf *b = NULL; | ||
120 | char *ktype = NULL; | ||
121 | const u_char *sigblob; | ||
122 | u_char *sm = NULL, *m = NULL; | ||
123 | size_t len, required_siglen; | ||
124 | unsigned long long smlen = 0, mlen = 0; | ||
125 | int r, ret; | ||
126 | |||
127 | if (key == NULL || | ||
128 | sshkey_type_plain(key->type) != KEY_XMSS || | ||
129 | key->xmss_pk == NULL || | ||
130 | sshkey_xmss_params(key) == NULL || | ||
131 | signature == NULL || signaturelen == 0) | ||
132 | return SSH_ERR_INVALID_ARGUMENT; | ||
133 | if ((r = sshkey_xmss_siglen(key, &required_siglen)) != 0) | ||
134 | return r; | ||
135 | if (datalen >= INT_MAX - required_siglen) | ||
136 | return SSH_ERR_INVALID_ARGUMENT; | ||
137 | |||
138 | if ((b = sshbuf_from(signature, signaturelen)) == NULL) | ||
139 | return SSH_ERR_ALLOC_FAIL; | ||
140 | if ((r = sshbuf_get_cstring(b, &ktype, NULL)) != 0 || | ||
141 | (r = sshbuf_get_string_direct(b, &sigblob, &len)) != 0) | ||
142 | goto out; | ||
143 | if (strcmp("ssh-xmss@openssh.com", ktype) != 0) { | ||
144 | r = SSH_ERR_KEY_TYPE_MISMATCH; | ||
145 | goto out; | ||
146 | } | ||
147 | if (sshbuf_len(b) != 0) { | ||
148 | r = SSH_ERR_UNEXPECTED_TRAILING_DATA; | ||
149 | goto out; | ||
150 | } | ||
151 | if (len != required_siglen) { | ||
152 | r = SSH_ERR_INVALID_FORMAT; | ||
153 | goto out; | ||
154 | } | ||
155 | if (datalen >= SIZE_MAX - len) { | ||
156 | r = SSH_ERR_INVALID_ARGUMENT; | ||
157 | goto out; | ||
158 | } | ||
159 | smlen = len + datalen; | ||
160 | mlen = smlen; | ||
161 | if ((sm = malloc(smlen)) == NULL || (m = malloc(mlen)) == NULL) { | ||
162 | r = SSH_ERR_ALLOC_FAIL; | ||
163 | goto out; | ||
164 | } | ||
165 | memcpy(sm, sigblob, len); | ||
166 | memcpy(sm+len, data, datalen); | ||
167 | if ((ret = xmss_sign_open(m, &mlen, sm, smlen, | ||
168 | key->xmss_pk, sshkey_xmss_params(key))) != 0) { | ||
169 | debug2("%s: crypto_sign_xmss_open failed: %d", | ||
170 | __func__, ret); | ||
171 | } | ||
172 | if (ret != 0 || mlen != datalen) { | ||
173 | r = SSH_ERR_SIGNATURE_INVALID; | ||
174 | goto out; | ||
175 | } | ||
176 | /* XXX compare 'm' and 'data' ? */ | ||
177 | /* success */ | ||
178 | r = 0; | ||
179 | out: | ||
180 | if (sm != NULL) { | ||
181 | explicit_bzero(sm, smlen); | ||
182 | free(sm); | ||
183 | } | ||
184 | if (m != NULL) { | ||
185 | explicit_bzero(m, smlen); /* NB mlen may be invalid if r != 0 */ | ||
186 | free(m); | ||
187 | } | ||
188 | sshbuf_free(b); | ||
189 | free(ktype); | ||
190 | return r; | ||
191 | } | ||
192 | #endif /* WITH_XMSS */ | ||
@@ -4,13 +4,13 @@ NAME | |||
4 | ssh M-bM-^@M-^S OpenSSH SSH client (remote login program) | 4 | ssh M-bM-^@M-^S OpenSSH SSH client (remote login program) |
5 | 5 | ||
6 | SYNOPSIS | 6 | SYNOPSIS |
7 | ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] | 7 | ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] |
8 | [-D [bind_address:]port] [-E log_file] [-e escape_char] | 8 | [-c cipher_spec] [-D [bind_address:]port] [-E log_file] |
9 | [-F configfile] [-I pkcs11] [-i identity_file] | 9 | [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] |
10 | [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] | 10 | [-J destination] [-L address] [-l login_name] [-m mac_spec] |
11 | [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] | 11 | [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] |
12 | [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] | 12 | [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] destination |
13 | [user@]hostname [command] | 13 | [command] |
14 | 14 | ||
15 | DESCRIPTION | 15 | DESCRIPTION |
16 | ssh (SSH client) is a program for logging into a remote machine and for | 16 | ssh (SSH client) is a program for logging into a remote machine and for |
@@ -19,11 +19,12 @@ DESCRIPTION | |||
19 | network. X11 connections, arbitrary TCP ports and UNIX-domain sockets | 19 | network. X11 connections, arbitrary TCP ports and UNIX-domain sockets |
20 | can also be forwarded over the secure channel. | 20 | can also be forwarded over the secure channel. |
21 | 21 | ||
22 | ssh connects and logs into the specified hostname (with optional user | 22 | ssh connects and logs into the specified destination, which may be |
23 | name). The user must prove his/her identity to the remote machine using | 23 | specified as either [user@]hostname or a URI of the form |
24 | one of several methods (see below). | 24 | ssh://[user@]hostname[:port]. The user must prove his/her identity to |
25 | the remote machine using one of several methods (see below). | ||
25 | 26 | ||
26 | If command is specified, it is executed on the remote host instead of a | 27 | If a command is specified, it is executed on the remote host instead of a |
27 | login shell. | 28 | login shell. |
28 | 29 | ||
29 | The options are as follows: | 30 | The options are as follows: |
@@ -46,6 +47,11 @@ DESCRIPTION | |||
46 | 47 | ||
47 | -a Disables forwarding of the authentication agent connection. | 48 | -a Disables forwarding of the authentication agent connection. |
48 | 49 | ||
50 | -B bind_interface | ||
51 | Bind to the address of bind_interface before attempting to | ||
52 | connect to the destination host. This is only useful on systems | ||
53 | with more than one address. | ||
54 | |||
49 | -b bind_address | 55 | -b bind_address |
50 | Use bind_address on the local machine as the source address of | 56 | Use bind_address on the local machine as the source address of |
51 | the connection. Only useful on systems with more than one | 57 | the connection. Only useful on systems with more than one |
@@ -138,12 +144,12 @@ DESCRIPTION | |||
138 | information from the filename obtained by appending -cert.pub to | 144 | information from the filename obtained by appending -cert.pub to |
139 | identity filenames. | 145 | identity filenames. |
140 | 146 | ||
141 | -J [user@]host[:port] | 147 | -J destination |
142 | Connect to the target host by first making a ssh connection to | 148 | Connect to the target host by first making a ssh connection to |
143 | the jump host and then establishing a TCP forwarding to the | 149 | the jump host described by destination and then establishing a |
144 | ultimate destination from there. Multiple jump hops may be | 150 | TCP forwarding to the ultimate destination from there. Multiple |
145 | specified separated by comma characters. This is a shortcut to | 151 | jump hops may be specified separated by comma characters. This |
146 | specify a ProxyJump configuration directive. | 152 | is a shortcut to specify a ProxyJump configuration directive. |
147 | 153 | ||
148 | -K Enables GSSAPI-based authentication and forwarding (delegation) | 154 | -K Enables GSSAPI-based authentication and forwarding (delegation) |
149 | of GSSAPI credentials to the server. | 155 | of GSSAPI credentials to the server. |
@@ -785,6 +791,16 @@ ENVIRONMENT | |||
785 | command. If the current session has no tty, this | 791 | command. If the current session has no tty, this |
786 | variable is not set. | 792 | variable is not set. |
787 | 793 | ||
794 | SSH_TUNNEL Optionally set by sshd(8) to contain the interface | ||
795 | names assigned if tunnel forwarding was requested | ||
796 | by the client. | ||
797 | |||
798 | SSH_USER_AUTH Optionally set by sshd(8), this variable may | ||
799 | contain a pathname to a file that lists the | ||
800 | authentication methods successfully used when the | ||
801 | session was established, including any public keys | ||
802 | that were used. | ||
803 | |||
788 | TZ This variable is set to indicate the present time | 804 | TZ This variable is set to indicate the present time |
789 | zone if it was set when the daemon was started | 805 | zone if it was set when the daemon was started |
790 | (i.e. the daemon passes the value on to new | 806 | (i.e. the daemon passes the value on to new |
@@ -846,7 +862,7 @@ FILES | |||
846 | ignore a private key file if it is accessible by others. It is | 862 | ignore a private key file if it is accessible by others. It is |
847 | possible to specify a passphrase when generating the key which | 863 | possible to specify a passphrase when generating the key which |
848 | will be used to encrypt the sensitive part of this file using | 864 | will be used to encrypt the sensitive part of this file using |
849 | 3DES. | 865 | AES-128. |
850 | 866 | ||
851 | ~/.ssh/id_dsa.pub | 867 | ~/.ssh/id_dsa.pub |
852 | ~/.ssh/id_ecdsa.pub | 868 | ~/.ssh/id_ecdsa.pub |
@@ -957,4 +973,4 @@ AUTHORS | |||
957 | created OpenSSH. Markus Friedl contributed the support for SSH protocol | 973 | created OpenSSH. Markus Friedl contributed the support for SSH protocol |
958 | versions 1.5 and 2.0. | 974 | versions 1.5 and 2.0. |
959 | 975 | ||
960 | OpenBSD 6.2 September 21, 2017 OpenBSD 6.2 | 976 | OpenBSD 6.2 February 23, 2018 OpenBSD 6.2 |
@@ -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.1,v 1.384 2017/09/21 19:16:53 markus Exp $ | 36 | .\" $OpenBSD: ssh.1,v 1.391 2018/02/23 07:38:09 jmc Exp $ |
37 | .Dd $Mdocdate: September 21 2017 $ | 37 | .Dd $Mdocdate: February 23 2018 $ |
38 | .Dt SSH 1 | 38 | .Dt SSH 1 |
39 | .Os | 39 | .Os |
40 | .Sh NAME | 40 | .Sh NAME |
@@ -42,8 +42,8 @@ | |||
42 | .Nd OpenSSH SSH client (remote login program) | 42 | .Nd OpenSSH SSH client (remote login program) |
43 | .Sh SYNOPSIS | 43 | .Sh SYNOPSIS |
44 | .Nm ssh | 44 | .Nm ssh |
45 | .Bk -words | ||
46 | .Op Fl 46AaCfGgKkMNnqsTtVvXxYy | 45 | .Op Fl 46AaCfGgKkMNnqsTtVvXxYy |
46 | .Op Fl B Ar bind_interface | ||
47 | .Op Fl b Ar bind_address | 47 | .Op Fl b Ar bind_address |
48 | .Op Fl c Ar cipher_spec | 48 | .Op Fl c Ar cipher_spec |
49 | .Op Fl D Oo Ar bind_address : Oc Ns Ar port | 49 | .Op Fl D Oo Ar bind_address : Oc Ns Ar port |
@@ -52,7 +52,7 @@ | |||
52 | .Op Fl F Ar configfile | 52 | .Op Fl F Ar configfile |
53 | .Op Fl I Ar pkcs11 | 53 | .Op Fl I Ar pkcs11 |
54 | .Op Fl i Ar identity_file | 54 | .Op Fl i Ar identity_file |
55 | .Op Fl J Oo Ar user Ns @ Oc Ns Ar host Ns Op : Ns Ar port | 55 | .Op Fl J Ar destination |
56 | .Op Fl L Ar address | 56 | .Op Fl L Ar address |
57 | .Op Fl l Ar login_name | 57 | .Op Fl l Ar login_name |
58 | .Op Fl m Ar mac_spec | 58 | .Op Fl m Ar mac_spec |
@@ -64,9 +64,8 @@ | |||
64 | .Op Fl S Ar ctl_path | 64 | .Op Fl S Ar ctl_path |
65 | .Op Fl W Ar host : Ns Ar port | 65 | .Op Fl W Ar host : Ns Ar port |
66 | .Op Fl w Ar local_tun Ns Op : Ns Ar remote_tun | 66 | .Op Fl w Ar local_tun Ns Op : Ns Ar remote_tun |
67 | .Oo Ar user Ns @ Oc Ns Ar hostname | 67 | .Ar destination |
68 | .Op Ar command | 68 | .Op Ar command |
69 | .Ek | ||
70 | .Sh DESCRIPTION | 69 | .Sh DESCRIPTION |
71 | .Nm | 70 | .Nm |
72 | (SSH client) is a program for logging into a remote machine and for | 71 | (SSH client) is a program for logging into a remote machine and for |
@@ -79,15 +78,20 @@ sockets can also be forwarded over the secure channel. | |||
79 | .Pp | 78 | .Pp |
80 | .Nm | 79 | .Nm |
81 | connects and logs into the specified | 80 | connects and logs into the specified |
82 | .Ar hostname | 81 | .Ar destination , |
83 | (with optional | 82 | which may be specified as either |
84 | .Ar user | 83 | .Sm off |
85 | name). | 84 | .Oo user @ Oc hostname |
85 | .Sm on | ||
86 | or a URI of the form | ||
87 | .Sm off | ||
88 | .No ssh:// Oo user @ Oc hostname Op : port . | ||
89 | .Sm on | ||
86 | The user must prove | 90 | The user must prove |
87 | his/her identity to the remote machine using one of several methods | 91 | his/her identity to the remote machine using one of several methods |
88 | (see below). | 92 | (see below). |
89 | .Pp | 93 | .Pp |
90 | If | 94 | If a |
91 | .Ar command | 95 | .Ar command |
92 | is specified, | 96 | is specified, |
93 | it is executed on the remote host instead of a login shell. | 97 | it is executed on the remote host instead of a login shell. |
@@ -121,6 +125,12 @@ authenticate using the identities loaded into the agent. | |||
121 | .It Fl a | 125 | .It Fl a |
122 | Disables forwarding of the authentication agent connection. | 126 | Disables forwarding of the authentication agent connection. |
123 | .Pp | 127 | .Pp |
128 | .It Fl B Ar bind_interface | ||
129 | Bind to the address of | ||
130 | .Ar bind_interface | ||
131 | before attempting to connect to the destination host. | ||
132 | This is only useful on systems with more than one address. | ||
133 | .Pp | ||
124 | .It Fl b Ar bind_address | 134 | .It Fl b Ar bind_address |
125 | Use | 135 | Use |
126 | .Ar bind_address | 136 | .Ar bind_address |
@@ -287,17 +297,11 @@ by appending | |||
287 | .Pa -cert.pub | 297 | .Pa -cert.pub |
288 | to identity filenames. | 298 | to identity filenames. |
289 | .Pp | 299 | .Pp |
290 | .It Fl J Xo | 300 | .It Fl J Ar destination |
291 | .Sm off | ||
292 | .Op Ar user No @ | ||
293 | .Ar host | ||
294 | .Op : Ar port | ||
295 | .Sm on | ||
296 | .Xc | ||
297 | Connect to the target host by first making a | 301 | Connect to the target host by first making a |
298 | .Nm | 302 | .Nm |
299 | connection to the jump | 303 | connection to the jump host described by |
300 | .Ar host | 304 | .Ar destination |
301 | and then establishing a TCP forwarding to the ultimate destination from | 305 | and then establishing a TCP forwarding to the ultimate destination from |
302 | there. | 306 | there. |
303 | Multiple jump hops may be specified separated by comma characters. | 307 | Multiple jump hops may be specified separated by comma characters. |
@@ -1418,6 +1422,17 @@ This is set to the name of the tty (path to the device) associated | |||
1418 | with the current shell or command. | 1422 | with the current shell or command. |
1419 | If the current session has no tty, | 1423 | If the current session has no tty, |
1420 | this variable is not set. | 1424 | this variable is not set. |
1425 | .It Ev SSH_TUNNEL | ||
1426 | Optionally set by | ||
1427 | .Xr sshd 8 | ||
1428 | to contain the interface names assigned if tunnel forwarding was | ||
1429 | requested by the client. | ||
1430 | .It Ev SSH_USER_AUTH | ||
1431 | Optionally set by | ||
1432 | .Xr sshd 8 , | ||
1433 | this variable may contain a pathname to a file that lists the authentication | ||
1434 | methods successfully used when the session was established, including any | ||
1435 | public keys that were used. | ||
1421 | .It Ev TZ | 1436 | .It Ev TZ |
1422 | This variable is set to indicate the present time zone if it | 1437 | This variable is set to indicate the present time zone if it |
1423 | was set when the daemon was started (i.e. the daemon passes the value | 1438 | was set when the daemon was started (i.e. the daemon passes the value |
@@ -1501,7 +1516,7 @@ accessible by others (read/write/execute). | |||
1501 | will simply ignore a private key file if it is accessible by others. | 1516 | will simply ignore a private key file if it is accessible by others. |
1502 | It is possible to specify a passphrase when | 1517 | It is possible to specify a passphrase when |
1503 | generating the key which will be used to encrypt the | 1518 | generating the key which will be used to encrypt the |
1504 | sensitive part of this file using 3DES. | 1519 | sensitive part of this file using AES-128. |
1505 | .Pp | 1520 | .Pp |
1506 | .It Pa ~/.ssh/id_dsa.pub | 1521 | .It Pa ~/.ssh/id_dsa.pub |
1507 | .It Pa ~/.ssh/id_ecdsa.pub | 1522 | .It Pa ~/.ssh/id_ecdsa.pub |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh.c,v 1.464 2017/09/21 19:16:53 markus Exp $ */ | 1 | /* $OpenBSD: ssh.c,v 1.475 2018/02/23 15:58:38 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 |
@@ -168,6 +168,10 @@ char *config = NULL; | |||
168 | */ | 168 | */ |
169 | char *host; | 169 | char *host; |
170 | 170 | ||
171 | /* Various strings used to to percent_expand() arguments */ | ||
172 | static char thishost[NI_MAXHOST], shorthost[NI_MAXHOST], portstr[NI_MAXSERV]; | ||
173 | static char uidstr[32], *host_arg, *conn_hash_hex; | ||
174 | |||
171 | /* socket address the host resolves to */ | 175 | /* socket address the host resolves to */ |
172 | struct sockaddr_storage hostaddr; | 176 | struct sockaddr_storage hostaddr; |
173 | 177 | ||
@@ -197,19 +201,19 @@ static void | |||
197 | usage(void) | 201 | usage(void) |
198 | { | 202 | { |
199 | fprintf(stderr, | 203 | fprintf(stderr, |
200 | "usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]\n" | 204 | "usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]\n" |
201 | " [-D [bind_address:]port] [-E log_file] [-e escape_char]\n" | 205 | " [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]\n" |
202 | " [-F configfile] [-I pkcs11] [-i identity_file]\n" | 206 | " [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]\n" |
203 | " [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]\n" | 207 | " [-i identity_file] [-J [user@]host[:port]] [-L address]\n" |
204 | " [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]\n" | 208 | " [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]\n" |
205 | " [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]\n" | 209 | " [-Q query_option] [-R address] [-S ctl_path] [-W host:port]\n" |
206 | " [user@]hostname [command]\n" | 210 | " [-w local_tun[:remote_tun]] destination [command]\n" |
207 | ); | 211 | ); |
208 | exit(255); | 212 | exit(255); |
209 | } | 213 | } |
210 | 214 | ||
211 | static int ssh_session2(struct ssh *); | 215 | static int ssh_session2(struct ssh *, struct passwd *); |
212 | static void load_public_identity_files(void); | 216 | static void load_public_identity_files(struct passwd *); |
213 | static void main_sigchld_handler(int); | 217 | static void main_sigchld_handler(int); |
214 | 218 | ||
215 | /* ~/ expand a list of paths. NB. assumes path[n] is heap-allocated. */ | 219 | /* ~/ expand a list of paths. NB. assumes path[n] is heap-allocated. */ |
@@ -267,6 +271,40 @@ resolve_host(const char *name, int port, int logerr, char *cname, size_t clen) | |||
267 | return res; | 271 | return res; |
268 | } | 272 | } |
269 | 273 | ||
274 | /* Returns non-zero if name can only be an address and not a hostname */ | ||
275 | static int | ||
276 | is_addr_fast(const char *name) | ||
277 | { | ||
278 | return (strchr(name, '%') != NULL || strchr(name, ':') != NULL || | ||
279 | strspn(name, "0123456789.") == strlen(name)); | ||
280 | } | ||
281 | |||
282 | /* Returns non-zero if name represents a valid, single address */ | ||
283 | static int | ||
284 | is_addr(const char *name) | ||
285 | { | ||
286 | char strport[NI_MAXSERV]; | ||
287 | struct addrinfo hints, *res; | ||
288 | |||
289 | if (is_addr_fast(name)) | ||
290 | return 1; | ||
291 | |||
292 | snprintf(strport, sizeof strport, "%u", default_ssh_port()); | ||
293 | memset(&hints, 0, sizeof(hints)); | ||
294 | hints.ai_family = options.address_family == -1 ? | ||
295 | AF_UNSPEC : options.address_family; | ||
296 | hints.ai_socktype = SOCK_STREAM; | ||
297 | hints.ai_flags = AI_NUMERICHOST|AI_NUMERICSERV; | ||
298 | if (getaddrinfo(name, strport, &hints, &res) != 0) | ||
299 | return 0; | ||
300 | if (res == NULL || res->ai_next != NULL) { | ||
301 | freeaddrinfo(res); | ||
302 | return 0; | ||
303 | } | ||
304 | freeaddrinfo(res); | ||
305 | return 1; | ||
306 | } | ||
307 | |||
270 | /* | 308 | /* |
271 | * Attempt to resolve a numeric host address / port to a single address. | 309 | * Attempt to resolve a numeric host address / port to a single address. |
272 | * Returns a canonical address string. | 310 | * Returns a canonical address string. |
@@ -372,20 +410,10 @@ resolve_canonicalize(char **hostp, int port) | |||
372 | char *cp, *fullhost, newname[NI_MAXHOST]; | 410 | char *cp, *fullhost, newname[NI_MAXHOST]; |
373 | struct addrinfo *addrs; | 411 | struct addrinfo *addrs; |
374 | 412 | ||
375 | if (options.canonicalize_hostname == SSH_CANONICALISE_NO) | ||
376 | return NULL; | ||
377 | |||
378 | /* | 413 | /* |
379 | * Don't attempt to canonicalize names that will be interpreted by | 414 | * Attempt to canonicalise addresses, regardless of |
380 | * a proxy unless the user specifically requests so. | 415 | * whether hostname canonicalisation was requested |
381 | */ | 416 | */ |
382 | direct = option_clear_or_none(options.proxy_command) && | ||
383 | options.jump_host == NULL; | ||
384 | if (!direct && | ||
385 | options.canonicalize_hostname != SSH_CANONICALISE_ALWAYS) | ||
386 | return NULL; | ||
387 | |||
388 | /* Try numeric hostnames first */ | ||
389 | if ((addrs = resolve_addr(*hostp, port, | 417 | if ((addrs = resolve_addr(*hostp, port, |
390 | newname, sizeof(newname))) != NULL) { | 418 | newname, sizeof(newname))) != NULL) { |
391 | debug2("%s: hostname %.100s is address", __func__, *hostp); | 419 | debug2("%s: hostname %.100s is address", __func__, *hostp); |
@@ -398,6 +426,30 @@ resolve_canonicalize(char **hostp, int port) | |||
398 | return addrs; | 426 | return addrs; |
399 | } | 427 | } |
400 | 428 | ||
429 | /* | ||
430 | * If this looks like an address but didn't parse as one, it might | ||
431 | * be an address with an invalid interface scope. Skip further | ||
432 | * attempts at canonicalisation. | ||
433 | */ | ||
434 | if (is_addr_fast(*hostp)) { | ||
435 | debug("%s: hostname %.100s is an unrecognised address", | ||
436 | __func__, *hostp); | ||
437 | return NULL; | ||
438 | } | ||
439 | |||
440 | if (options.canonicalize_hostname == SSH_CANONICALISE_NO) | ||
441 | return NULL; | ||
442 | |||
443 | /* | ||
444 | * Don't attempt to canonicalize names that will be interpreted by | ||
445 | * a proxy unless the user specifically requests so. | ||
446 | */ | ||
447 | direct = option_clear_or_none(options.proxy_command) && | ||
448 | options.jump_host == NULL; | ||
449 | if (!direct && | ||
450 | options.canonicalize_hostname != SSH_CANONICALISE_ALWAYS) | ||
451 | return NULL; | ||
452 | |||
401 | /* If domain name is anchored, then resolve it now */ | 453 | /* If domain name is anchored, then resolve it now */ |
402 | if ((*hostp)[strlen(*hostp) - 1] == '.') { | 454 | if ((*hostp)[strlen(*hostp) - 1] == '.') { |
403 | debug3("%s: name is fully qualified", __func__); | 455 | debug3("%s: name is fully qualified", __func__); |
@@ -456,14 +508,14 @@ resolve_canonicalize(char **hostp, int port) | |||
456 | * file if the user specifies a config file on the command line. | 508 | * file if the user specifies a config file on the command line. |
457 | */ | 509 | */ |
458 | static void | 510 | static void |
459 | process_config_files(const char *host_arg, struct passwd *pw, int post_canon) | 511 | process_config_files(const char *host_name, struct passwd *pw, int post_canon) |
460 | { | 512 | { |
461 | char buf[PATH_MAX]; | 513 | char buf[PATH_MAX]; |
462 | int r; | 514 | int r; |
463 | 515 | ||
464 | if (config != NULL) { | 516 | if (config != NULL) { |
465 | if (strcasecmp(config, "none") != 0 && | 517 | if (strcasecmp(config, "none") != 0 && |
466 | !read_config_file(config, pw, host, host_arg, &options, | 518 | !read_config_file(config, pw, host, host_name, &options, |
467 | SSHCONF_USERCONF | (post_canon ? SSHCONF_POSTCANON : 0))) | 519 | SSHCONF_USERCONF | (post_canon ? SSHCONF_POSTCANON : 0))) |
468 | fatal("Can't open user config file %.100s: " | 520 | fatal("Can't open user config file %.100s: " |
469 | "%.100s", config, strerror(errno)); | 521 | "%.100s", config, strerror(errno)); |
@@ -471,13 +523,13 @@ process_config_files(const char *host_arg, struct passwd *pw, int post_canon) | |||
471 | r = snprintf(buf, sizeof buf, "%s/%s", pw->pw_dir, | 523 | r = snprintf(buf, sizeof buf, "%s/%s", pw->pw_dir, |
472 | _PATH_SSH_USER_CONFFILE); | 524 | _PATH_SSH_USER_CONFFILE); |
473 | if (r > 0 && (size_t)r < sizeof(buf)) | 525 | if (r > 0 && (size_t)r < sizeof(buf)) |
474 | (void)read_config_file(buf, pw, host, host_arg, | 526 | (void)read_config_file(buf, pw, host, host_name, |
475 | &options, SSHCONF_CHECKPERM | SSHCONF_USERCONF | | 527 | &options, SSHCONF_CHECKPERM | SSHCONF_USERCONF | |
476 | (post_canon ? SSHCONF_POSTCANON : 0)); | 528 | (post_canon ? SSHCONF_POSTCANON : 0)); |
477 | 529 | ||
478 | /* Read systemwide configuration file after user config. */ | 530 | /* Read systemwide configuration file after user config. */ |
479 | (void)read_config_file(_PATH_HOST_CONFIG_FILE, pw, | 531 | (void)read_config_file(_PATH_HOST_CONFIG_FILE, pw, |
480 | host, host_arg, &options, | 532 | host, host_name, &options, |
481 | post_canon ? SSHCONF_POSTCANON : 0); | 533 | post_canon ? SSHCONF_POSTCANON : 0); |
482 | } | 534 | } |
483 | } | 535 | } |
@@ -510,10 +562,9 @@ main(int ac, char **av) | |||
510 | { | 562 | { |
511 | struct ssh *ssh = NULL; | 563 | struct ssh *ssh = NULL; |
512 | int i, r, opt, exit_status, use_syslog, direct, timeout_ms; | 564 | int i, r, opt, exit_status, use_syslog, direct, timeout_ms; |
513 | int config_test = 0, opt_terminated = 0; | 565 | int was_addr, config_test = 0, opt_terminated = 0; |
514 | char *p, *cp, *line, *argv0, buf[PATH_MAX], *host_arg, *logfile; | 566 | char *p, *cp, *line, *argv0, buf[PATH_MAX], *logfile; |
515 | char thishost[NI_MAXHOST], shorthost[NI_MAXHOST], portstr[NI_MAXSERV]; | 567 | char cname[NI_MAXHOST]; |
516 | char cname[NI_MAXHOST], uidstr[32], *conn_hash_hex; | ||
517 | struct stat st; | 568 | struct stat st; |
518 | struct passwd *pw; | 569 | struct passwd *pw; |
519 | extern int optind, optreset; | 570 | extern int optind, optreset; |
@@ -612,7 +663,7 @@ main(int ac, char **av) | |||
612 | 663 | ||
613 | again: | 664 | again: |
614 | while ((opt = getopt(ac, av, "1246ab:c:e:fgi:kl:m:no:p:qstvx" | 665 | while ((opt = getopt(ac, av, "1246ab:c:e:fgi:kl:m:no:p:qstvx" |
615 | "ACD:E:F:GI:J:KL:MNO:PQ:R:S:TVw:W:XYy")) != -1) { | 666 | "AB:CD:E:F:GI:J:KL:MNO:PQ:R:S:TVw:W:XYy")) != -1) { |
616 | switch (opt) { | 667 | switch (opt) { |
617 | case '1': | 668 | case '1': |
618 | fatal("SSH protocol v.1 is no longer supported"); | 669 | fatal("SSH protocol v.1 is no longer supported"); |
@@ -846,14 +897,18 @@ main(int ac, char **av) | |||
846 | options.control_master = SSHCTL_MASTER_YES; | 897 | options.control_master = SSHCTL_MASTER_YES; |
847 | break; | 898 | break; |
848 | case 'p': | 899 | case 'p': |
849 | options.port = a2port(optarg); | 900 | if (options.port == -1) { |
850 | if (options.port <= 0) { | 901 | options.port = a2port(optarg); |
851 | fprintf(stderr, "Bad port '%s'\n", optarg); | 902 | if (options.port <= 0) { |
852 | exit(255); | 903 | fprintf(stderr, "Bad port '%s'\n", |
904 | optarg); | ||
905 | exit(255); | ||
906 | } | ||
853 | } | 907 | } |
854 | break; | 908 | break; |
855 | case 'l': | 909 | case 'l': |
856 | options.user = optarg; | 910 | if (options.user == NULL) |
911 | options.user = optarg; | ||
857 | break; | 912 | break; |
858 | 913 | ||
859 | case 'L': | 914 | case 'L': |
@@ -918,6 +973,9 @@ main(int ac, char **av) | |||
918 | case 'b': | 973 | case 'b': |
919 | options.bind_address = optarg; | 974 | options.bind_address = optarg; |
920 | break; | 975 | break; |
976 | case 'B': | ||
977 | options.bind_interface = optarg; | ||
978 | break; | ||
921 | case 'F': | 979 | case 'F': |
922 | config = optarg; | 980 | config = optarg; |
923 | break; | 981 | break; |
@@ -933,16 +991,38 @@ main(int ac, char **av) | |||
933 | av += optind; | 991 | av += optind; |
934 | 992 | ||
935 | if (ac > 0 && !host) { | 993 | if (ac > 0 && !host) { |
936 | if (strrchr(*av, '@')) { | 994 | int tport; |
995 | char *tuser; | ||
996 | switch (parse_ssh_uri(*av, &tuser, &host, &tport)) { | ||
997 | case -1: | ||
998 | usage(); | ||
999 | break; | ||
1000 | case 0: | ||
1001 | if (options.user == NULL) { | ||
1002 | options.user = tuser; | ||
1003 | tuser = NULL; | ||
1004 | } | ||
1005 | free(tuser); | ||
1006 | if (options.port == -1 && tport != -1) | ||
1007 | options.port = tport; | ||
1008 | break; | ||
1009 | default: | ||
937 | p = xstrdup(*av); | 1010 | p = xstrdup(*av); |
938 | cp = strrchr(p, '@'); | 1011 | cp = strrchr(p, '@'); |
939 | if (cp == NULL || cp == p) | 1012 | if (cp != NULL) { |
940 | usage(); | 1013 | if (cp == p) |
941 | options.user = p; | 1014 | usage(); |
942 | *cp = '\0'; | 1015 | if (options.user == NULL) { |
943 | host = xstrdup(++cp); | 1016 | options.user = p; |
944 | } else | 1017 | p = NULL; |
945 | host = xstrdup(*av); | 1018 | } |
1019 | *cp++ = '\0'; | ||
1020 | host = xstrdup(cp); | ||
1021 | free(p); | ||
1022 | } else | ||
1023 | host = p; | ||
1024 | break; | ||
1025 | } | ||
946 | if (ac > 1 && !opt_terminated) { | 1026 | if (ac > 1 && !opt_terminated) { |
947 | optind = optreset = 1; | 1027 | optind = optreset = 1; |
948 | goto again; | 1028 | goto again; |
@@ -994,9 +1074,9 @@ main(int ac, char **av) | |||
994 | if (logfile != NULL) | 1074 | if (logfile != NULL) |
995 | log_redirect_stderr_to(logfile); | 1075 | log_redirect_stderr_to(logfile); |
996 | log_init(argv0, | 1076 | log_init(argv0, |
997 | options.log_level == SYSLOG_LEVEL_NOT_SET ? | 1077 | options.log_level == SYSLOG_LEVEL_NOT_SET ? |
998 | SYSLOG_LEVEL_INFO : options.log_level, | 1078 | SYSLOG_LEVEL_INFO : options.log_level, |
999 | options.log_facility == SYSLOG_FACILITY_NOT_SET ? | 1079 | options.log_facility == SYSLOG_FACILITY_NOT_SET ? |
1000 | SYSLOG_FACILITY_USER : options.log_facility, | 1080 | SYSLOG_FACILITY_USER : options.log_facility, |
1001 | !use_syslog); | 1081 | !use_syslog); |
1002 | 1082 | ||
@@ -1026,16 +1106,22 @@ main(int ac, char **av) | |||
1026 | options.hostname = xstrdup(host); | 1106 | options.hostname = xstrdup(host); |
1027 | } | 1107 | } |
1028 | 1108 | ||
1029 | /* If canonicalization requested then try to apply it */ | 1109 | /* Don't lowercase addresses, they will be explicitly canonicalised */ |
1030 | lowercase(host); | 1110 | if ((was_addr = is_addr(host)) == 0) |
1031 | if (options.canonicalize_hostname != SSH_CANONICALISE_NO) | 1111 | lowercase(host); |
1112 | |||
1113 | /* | ||
1114 | * Try to canonicalize if requested by configuration or the | ||
1115 | * hostname is an address. | ||
1116 | */ | ||
1117 | if (options.canonicalize_hostname != SSH_CANONICALISE_NO || was_addr) | ||
1032 | addrs = resolve_canonicalize(&host, options.port); | 1118 | addrs = resolve_canonicalize(&host, options.port); |
1033 | 1119 | ||
1034 | /* | 1120 | /* |
1035 | * If CanonicalizePermittedCNAMEs have been specified but | 1121 | * If CanonicalizePermittedCNAMEs have been specified but |
1036 | * other canonicalization did not happen (by not being requested | 1122 | * other canonicalization did not happen (by not being requested |
1037 | * or by failing with fallback) then the hostname may still be changed | 1123 | * or by failing with fallback) then the hostname may still be changed |
1038 | * as a result of CNAME following. | 1124 | * as a result of CNAME following. |
1039 | * | 1125 | * |
1040 | * Try to resolve the bare hostname name using the system resolver's | 1126 | * Try to resolve the bare hostname name using the system resolver's |
1041 | * usual search rules and then apply the CNAME follow rules. | 1127 | * usual search rules and then apply the CNAME follow rules. |
@@ -1177,6 +1263,7 @@ main(int ac, char **av) | |||
1177 | if (options.user == NULL) | 1263 | if (options.user == NULL) |
1178 | options.user = xstrdup(pw->pw_name); | 1264 | options.user = xstrdup(pw->pw_name); |
1179 | 1265 | ||
1266 | /* Set up strings used to percent_expand() arguments */ | ||
1180 | if (gethostname(thishost, sizeof(thishost)) == -1) | 1267 | if (gethostname(thishost, sizeof(thishost)) == -1) |
1181 | fatal("gethostname: %s", strerror(errno)); | 1268 | fatal("gethostname: %s", strerror(errno)); |
1182 | strlcpy(shorthost, thishost, sizeof(shorthost)); | 1269 | strlcpy(shorthost, thishost, sizeof(shorthost)); |
@@ -1194,24 +1281,11 @@ main(int ac, char **av) | |||
1194 | ssh_digest_free(md); | 1281 | ssh_digest_free(md); |
1195 | conn_hash_hex = tohex(conn_hash, ssh_digest_bytes(SSH_DIGEST_SHA1)); | 1282 | conn_hash_hex = tohex(conn_hash, ssh_digest_bytes(SSH_DIGEST_SHA1)); |
1196 | 1283 | ||
1197 | if (options.local_command != NULL) { | 1284 | /* |
1198 | debug3("expanding LocalCommand: %s", options.local_command); | 1285 | * Expand tokens in arguments. NB. LocalCommand is expanded later, |
1199 | cp = options.local_command; | 1286 | * after port-forwarding is set up, so it may pick up any local |
1200 | options.local_command = percent_expand(cp, | 1287 | * tunnel interface name allocated. |
1201 | "C", conn_hash_hex, | 1288 | */ |
1202 | "L", shorthost, | ||
1203 | "d", pw->pw_dir, | ||
1204 | "h", host, | ||
1205 | "l", thishost, | ||
1206 | "n", host_arg, | ||
1207 | "p", portstr, | ||
1208 | "r", options.user, | ||
1209 | "u", pw->pw_name, | ||
1210 | (char *)NULL); | ||
1211 | debug3("expanded LocalCommand: %s", options.local_command); | ||
1212 | free(cp); | ||
1213 | } | ||
1214 | |||
1215 | if (options.remote_command != NULL) { | 1289 | if (options.remote_command != NULL) { |
1216 | debug3("expanding RemoteCommand: %s", options.remote_command); | 1290 | debug3("expanding RemoteCommand: %s", options.remote_command); |
1217 | cp = options.remote_command; | 1291 | cp = options.remote_command; |
@@ -1230,7 +1304,6 @@ main(int ac, char **av) | |||
1230 | free(cp); | 1304 | free(cp); |
1231 | buffer_append(&command, options.remote_command, | 1305 | buffer_append(&command, options.remote_command, |
1232 | strlen(options.remote_command)); | 1306 | strlen(options.remote_command)); |
1233 | |||
1234 | } | 1307 | } |
1235 | 1308 | ||
1236 | if (options.control_path != NULL) { | 1309 | if (options.control_path != NULL) { |
@@ -1311,7 +1384,7 @@ main(int ac, char **av) | |||
1311 | sensitive_data.keys = NULL; | 1384 | sensitive_data.keys = NULL; |
1312 | sensitive_data.external_keysign = 0; | 1385 | sensitive_data.external_keysign = 0; |
1313 | if (options.hostbased_authentication) { | 1386 | if (options.hostbased_authentication) { |
1314 | sensitive_data.nkeys = 9; | 1387 | sensitive_data.nkeys = 11; |
1315 | sensitive_data.keys = xcalloc(sensitive_data.nkeys, | 1388 | sensitive_data.keys = xcalloc(sensitive_data.nkeys, |
1316 | sizeof(struct sshkey)); /* XXX */ | 1389 | sizeof(struct sshkey)); /* XXX */ |
1317 | for (i = 0; i < sensitive_data.nkeys; i++) | 1390 | for (i = 0; i < sensitive_data.nkeys; i++) |
@@ -1338,6 +1411,10 @@ main(int ac, char **av) | |||
1338 | _PATH_HOST_RSA_KEY_FILE, "", NULL, NULL); | 1411 | _PATH_HOST_RSA_KEY_FILE, "", NULL, NULL); |
1339 | sensitive_data.keys[8] = key_load_private_type(KEY_DSA, | 1412 | sensitive_data.keys[8] = key_load_private_type(KEY_DSA, |
1340 | _PATH_HOST_DSA_KEY_FILE, "", NULL, NULL); | 1413 | _PATH_HOST_DSA_KEY_FILE, "", NULL, NULL); |
1414 | sensitive_data.keys[9] = key_load_private_cert(KEY_XMSS, | ||
1415 | _PATH_HOST_XMSS_KEY_FILE, "", NULL); | ||
1416 | sensitive_data.keys[10] = key_load_private_type(KEY_XMSS, | ||
1417 | _PATH_HOST_XMSS_KEY_FILE, "", NULL, NULL); | ||
1341 | PRIV_END; | 1418 | PRIV_END; |
1342 | 1419 | ||
1343 | if (options.hostbased_authentication == 1 && | 1420 | if (options.hostbased_authentication == 1 && |
@@ -1345,7 +1422,8 @@ main(int ac, char **av) | |||
1345 | sensitive_data.keys[5] == NULL && | 1422 | sensitive_data.keys[5] == NULL && |
1346 | sensitive_data.keys[6] == NULL && | 1423 | sensitive_data.keys[6] == NULL && |
1347 | sensitive_data.keys[7] == NULL && | 1424 | sensitive_data.keys[7] == NULL && |
1348 | sensitive_data.keys[8] == NULL) { | 1425 | sensitive_data.keys[8] == NULL && |
1426 | sensitive_data.keys[9] == NULL) { | ||
1349 | #ifdef OPENSSL_HAS_ECC | 1427 | #ifdef OPENSSL_HAS_ECC |
1350 | sensitive_data.keys[1] = key_load_cert( | 1428 | sensitive_data.keys[1] = key_load_cert( |
1351 | _PATH_HOST_ECDSA_KEY_FILE); | 1429 | _PATH_HOST_ECDSA_KEY_FILE); |
@@ -1366,6 +1444,10 @@ main(int ac, char **av) | |||
1366 | _PATH_HOST_RSA_KEY_FILE, NULL); | 1444 | _PATH_HOST_RSA_KEY_FILE, NULL); |
1367 | sensitive_data.keys[8] = key_load_public( | 1445 | sensitive_data.keys[8] = key_load_public( |
1368 | _PATH_HOST_DSA_KEY_FILE, NULL); | 1446 | _PATH_HOST_DSA_KEY_FILE, NULL); |
1447 | sensitive_data.keys[9] = key_load_cert( | ||
1448 | _PATH_HOST_XMSS_KEY_FILE); | ||
1449 | sensitive_data.keys[10] = key_load_public( | ||
1450 | _PATH_HOST_XMSS_KEY_FILE, NULL); | ||
1369 | sensitive_data.external_keysign = 1; | 1451 | sensitive_data.external_keysign = 1; |
1370 | } | 1452 | } |
1371 | } | 1453 | } |
@@ -1401,7 +1483,7 @@ main(int ac, char **av) | |||
1401 | } | 1483 | } |
1402 | } | 1484 | } |
1403 | /* load options.identity_files */ | 1485 | /* load options.identity_files */ |
1404 | load_public_identity_files(); | 1486 | load_public_identity_files(pw); |
1405 | 1487 | ||
1406 | /* optionally set the SSH_AUTHSOCKET_ENV_NAME varibale */ | 1488 | /* optionally set the SSH_AUTHSOCKET_ENV_NAME varibale */ |
1407 | if (options.identity_agent && | 1489 | if (options.identity_agent && |
@@ -1465,7 +1547,7 @@ main(int ac, char **av) | |||
1465 | } | 1547 | } |
1466 | 1548 | ||
1467 | skip_connect: | 1549 | skip_connect: |
1468 | exit_status = ssh_session2(ssh); | 1550 | exit_status = ssh_session2(ssh, pw); |
1469 | packet_close(); | 1551 | packet_close(); |
1470 | 1552 | ||
1471 | if (options.control_path != NULL && muxserver_sock != -1) | 1553 | if (options.control_path != NULL && muxserver_sock != -1) |
@@ -1485,29 +1567,29 @@ control_persist_detach(void) | |||
1485 | 1567 | ||
1486 | debug("%s: backgrounding master process", __func__); | 1568 | debug("%s: backgrounding master process", __func__); |
1487 | 1569 | ||
1488 | /* | 1570 | /* |
1489 | * master (current process) into the background, and make the | 1571 | * master (current process) into the background, and make the |
1490 | * foreground process a client of the backgrounded master. | 1572 | * foreground process a client of the backgrounded master. |
1491 | */ | 1573 | */ |
1492 | switch ((pid = fork())) { | 1574 | switch ((pid = fork())) { |
1493 | case -1: | 1575 | case -1: |
1494 | fatal("%s: fork: %s", __func__, strerror(errno)); | 1576 | fatal("%s: fork: %s", __func__, strerror(errno)); |
1495 | case 0: | 1577 | case 0: |
1496 | /* Child: master process continues mainloop */ | 1578 | /* Child: master process continues mainloop */ |
1497 | break; | 1579 | break; |
1498 | default: | 1580 | default: |
1499 | /* Parent: set up mux slave to connect to backgrounded master */ | 1581 | /* Parent: set up mux slave to connect to backgrounded master */ |
1500 | debug2("%s: background process is %ld", __func__, (long)pid); | 1582 | debug2("%s: background process is %ld", __func__, (long)pid); |
1501 | stdin_null_flag = ostdin_null_flag; | 1583 | stdin_null_flag = ostdin_null_flag; |
1502 | options.request_tty = orequest_tty; | 1584 | options.request_tty = orequest_tty; |
1503 | tty_flag = otty_flag; | 1585 | tty_flag = otty_flag; |
1504 | close(muxserver_sock); | 1586 | close(muxserver_sock); |
1505 | muxserver_sock = -1; | 1587 | muxserver_sock = -1; |
1506 | options.control_master = SSHCTL_MASTER_NO; | 1588 | options.control_master = SSHCTL_MASTER_NO; |
1507 | muxclient(options.control_path); | 1589 | muxclient(options.control_path); |
1508 | /* muxclient() doesn't return on success. */ | 1590 | /* muxclient() doesn't return on success. */ |
1509 | fatal("Failed to connect to new control master"); | 1591 | fatal("Failed to connect to new control master"); |
1510 | } | 1592 | } |
1511 | if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1) { | 1593 | if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1) { |
1512 | error("%s: open(\"/dev/null\"): %s", __func__, | 1594 | error("%s: open(\"/dev/null\"): %s", __func__, |
1513 | strerror(errno)); | 1595 | strerror(errno)); |
@@ -1562,7 +1644,7 @@ ssh_confirm_remote_forward(struct ssh *ssh, int type, u_int32_t seq, void *ctxt) | |||
1562 | channel_update_permitted_opens(ssh, rfwd->handle, -1); | 1644 | channel_update_permitted_opens(ssh, rfwd->handle, -1); |
1563 | } | 1645 | } |
1564 | } | 1646 | } |
1565 | 1647 | ||
1566 | if (type == SSH2_MSG_REQUEST_FAILURE) { | 1648 | if (type == SSH2_MSG_REQUEST_FAILURE) { |
1567 | if (options.exit_on_forward_failure) { | 1649 | if (options.exit_on_forward_failure) { |
1568 | if (rfwd->listen_path != NULL) | 1650 | if (rfwd->listen_path != NULL) |
@@ -1624,7 +1706,7 @@ ssh_init_stdio_forwarding(struct ssh *ssh) | |||
1624 | } | 1706 | } |
1625 | 1707 | ||
1626 | static void | 1708 | static void |
1627 | ssh_init_forwarding(struct ssh *ssh) | 1709 | ssh_init_forwarding(struct ssh *ssh, char **ifname) |
1628 | { | 1710 | { |
1629 | int success = 0; | 1711 | int success = 0; |
1630 | int i; | 1712 | int i; |
@@ -1682,14 +1764,15 @@ ssh_init_forwarding(struct ssh *ssh) | |||
1682 | 1764 | ||
1683 | /* Initiate tunnel forwarding. */ | 1765 | /* Initiate tunnel forwarding. */ |
1684 | if (options.tun_open != SSH_TUNMODE_NO) { | 1766 | if (options.tun_open != SSH_TUNMODE_NO) { |
1685 | if (client_request_tun_fwd(ssh, options.tun_open, | 1767 | if ((*ifname = client_request_tun_fwd(ssh, |
1686 | options.tun_local, options.tun_remote) == -1) { | 1768 | options.tun_open, options.tun_local, |
1769 | options.tun_remote)) == NULL) { | ||
1687 | if (options.exit_on_forward_failure) | 1770 | if (options.exit_on_forward_failure) |
1688 | fatal("Could not request tunnel forwarding."); | 1771 | fatal("Could not request tunnel forwarding."); |
1689 | else | 1772 | else |
1690 | error("Could not request tunnel forwarding."); | 1773 | error("Could not request tunnel forwarding."); |
1691 | } | 1774 | } |
1692 | } | 1775 | } |
1693 | } | 1776 | } |
1694 | 1777 | ||
1695 | static void | 1778 | static void |
@@ -1798,20 +1881,41 @@ ssh_session2_open(struct ssh *ssh) | |||
1798 | } | 1881 | } |
1799 | 1882 | ||
1800 | static int | 1883 | static int |
1801 | ssh_session2(struct ssh *ssh) | 1884 | ssh_session2(struct ssh *ssh, struct passwd *pw) |
1802 | { | 1885 | { |
1803 | int id = -1; | 1886 | int devnull, id = -1; |
1887 | char *cp, *tun_fwd_ifname = NULL; | ||
1804 | 1888 | ||
1805 | /* XXX should be pre-session */ | 1889 | /* XXX should be pre-session */ |
1806 | if (!options.control_persist) | 1890 | if (!options.control_persist) |
1807 | ssh_init_stdio_forwarding(ssh); | 1891 | ssh_init_stdio_forwarding(ssh); |
1808 | ssh_init_forwarding(ssh); | 1892 | |
1893 | ssh_init_forwarding(ssh, &tun_fwd_ifname); | ||
1894 | |||
1895 | if (options.local_command != NULL) { | ||
1896 | debug3("expanding LocalCommand: %s", options.local_command); | ||
1897 | cp = options.local_command; | ||
1898 | options.local_command = percent_expand(cp, | ||
1899 | "C", conn_hash_hex, | ||
1900 | "L", shorthost, | ||
1901 | "d", pw->pw_dir, | ||
1902 | "h", host, | ||
1903 | "l", thishost, | ||
1904 | "n", host_arg, | ||
1905 | "p", portstr, | ||
1906 | "r", options.user, | ||
1907 | "u", pw->pw_name, | ||
1908 | "T", tun_fwd_ifname == NULL ? "NONE" : tun_fwd_ifname, | ||
1909 | (char *)NULL); | ||
1910 | debug3("expanded LocalCommand: %s", options.local_command); | ||
1911 | free(cp); | ||
1912 | } | ||
1809 | 1913 | ||
1810 | /* Start listening for multiplex clients */ | 1914 | /* Start listening for multiplex clients */ |
1811 | if (!packet_get_mux()) | 1915 | if (!packet_get_mux()) |
1812 | muxserver_listen(ssh); | 1916 | muxserver_listen(ssh); |
1813 | 1917 | ||
1814 | /* | 1918 | /* |
1815 | * If we are in control persist mode and have a working mux listen | 1919 | * If we are in control persist mode and have a working mux listen |
1816 | * socket, then prepare to background ourselves and have a foreground | 1920 | * socket, then prepare to background ourselves and have a foreground |
1817 | * client attach as a control slave. | 1921 | * client attach as a control slave. |
@@ -1820,18 +1924,18 @@ ssh_session2(struct ssh *ssh) | |||
1820 | * after the connection is fully established (in particular, | 1924 | * after the connection is fully established (in particular, |
1821 | * async rfwd replies have been received for ExitOnForwardFailure). | 1925 | * async rfwd replies have been received for ExitOnForwardFailure). |
1822 | */ | 1926 | */ |
1823 | if (options.control_persist && muxserver_sock != -1) { | 1927 | if (options.control_persist && muxserver_sock != -1) { |
1824 | ostdin_null_flag = stdin_null_flag; | 1928 | ostdin_null_flag = stdin_null_flag; |
1825 | ono_shell_flag = no_shell_flag; | 1929 | ono_shell_flag = no_shell_flag; |
1826 | orequest_tty = options.request_tty; | 1930 | orequest_tty = options.request_tty; |
1827 | otty_flag = tty_flag; | 1931 | otty_flag = tty_flag; |
1828 | stdin_null_flag = 1; | 1932 | stdin_null_flag = 1; |
1829 | no_shell_flag = 1; | 1933 | no_shell_flag = 1; |
1830 | tty_flag = 0; | 1934 | tty_flag = 0; |
1831 | if (!fork_after_authentication_flag) | 1935 | if (!fork_after_authentication_flag) |
1832 | need_controlpersist_detach = 1; | 1936 | need_controlpersist_detach = 1; |
1833 | fork_after_authentication_flag = 1; | 1937 | fork_after_authentication_flag = 1; |
1834 | } | 1938 | } |
1835 | /* | 1939 | /* |
1836 | * ControlPersist mux listen socket setup failed, attempt the | 1940 | * ControlPersist mux listen socket setup failed, attempt the |
1837 | * stdio forward setup that we skipped earlier. | 1941 | * stdio forward setup that we skipped earlier. |
@@ -1839,7 +1943,7 @@ ssh_session2(struct ssh *ssh) | |||
1839 | if (options.control_persist && muxserver_sock == -1) | 1943 | if (options.control_persist && muxserver_sock == -1) |
1840 | ssh_init_stdio_forwarding(ssh); | 1944 | ssh_init_stdio_forwarding(ssh); |
1841 | 1945 | ||
1842 | if (!no_shell_flag || (datafellows & SSH_BUG_DUMMYCHAN)) | 1946 | if (!no_shell_flag) |
1843 | id = ssh_session2_open(ssh); | 1947 | id = ssh_session2_open(ssh); |
1844 | else { | 1948 | else { |
1845 | packet_set_interactive( | 1949 | packet_set_interactive( |
@@ -1863,6 +1967,22 @@ ssh_session2(struct ssh *ssh) | |||
1863 | ssh_local_cmd(options.local_command); | 1967 | ssh_local_cmd(options.local_command); |
1864 | 1968 | ||
1865 | /* | 1969 | /* |
1970 | * stdout is now owned by the session channel; clobber it here | ||
1971 | * so future channel closes are propagated to the local fd. | ||
1972 | * NB. this can only happen after LocalCommand has completed, | ||
1973 | * as it may want to write to stdout. | ||
1974 | */ | ||
1975 | if (!need_controlpersist_detach) { | ||
1976 | if ((devnull = open(_PATH_DEVNULL, O_WRONLY)) == -1) | ||
1977 | error("%s: open %s: %s", __func__, | ||
1978 | _PATH_DEVNULL, strerror(errno)); | ||
1979 | if (dup2(devnull, STDOUT_FILENO) < 0) | ||
1980 | fatal("%s: dup2() stdout failed", __func__); | ||
1981 | if (devnull > STDERR_FILENO) | ||
1982 | close(devnull); | ||
1983 | } | ||
1984 | |||
1985 | /* | ||
1866 | * If requested and we are not interested in replies to remote | 1986 | * If requested and we are not interested in replies to remote |
1867 | * forwarding requests, then let ssh continue in the background. | 1987 | * forwarding requests, then let ssh continue in the background. |
1868 | */ | 1988 | */ |
@@ -1881,12 +2001,10 @@ ssh_session2(struct ssh *ssh) | |||
1881 | 2001 | ||
1882 | /* Loads all IdentityFile and CertificateFile keys */ | 2002 | /* Loads all IdentityFile and CertificateFile keys */ |
1883 | static void | 2003 | static void |
1884 | load_public_identity_files(void) | 2004 | load_public_identity_files(struct passwd *pw) |
1885 | { | 2005 | { |
1886 | char *filename, *cp, thishost[NI_MAXHOST]; | 2006 | char *filename, *cp; |
1887 | char *pwdir = NULL, *pwname = NULL; | ||
1888 | struct sshkey *public; | 2007 | struct sshkey *public; |
1889 | struct passwd *pw; | ||
1890 | int i; | 2008 | int i; |
1891 | u_int n_ids, n_certs; | 2009 | u_int n_ids, n_certs; |
1892 | char *identity_files[SSH_MAX_IDENTITY_FILES]; | 2010 | char *identity_files[SSH_MAX_IDENTITY_FILES]; |
@@ -1925,11 +2043,6 @@ load_public_identity_files(void) | |||
1925 | #endif /* ENABLE_PKCS11 */ | 2043 | #endif /* ENABLE_PKCS11 */ |
1926 | if ((pw = getpwuid(original_real_uid)) == NULL) | 2044 | if ((pw = getpwuid(original_real_uid)) == NULL) |
1927 | fatal("load_public_identity_files: getpwuid failed"); | 2045 | fatal("load_public_identity_files: getpwuid failed"); |
1928 | pwname = xstrdup(pw->pw_name); | ||
1929 | pwdir = xstrdup(pw->pw_dir); | ||
1930 | if (gethostname(thishost, sizeof(thishost)) == -1) | ||
1931 | fatal("load_public_identity_files: gethostname: %s", | ||
1932 | strerror(errno)); | ||
1933 | for (i = 0; i < options.num_identity_files; i++) { | 2046 | for (i = 0; i < options.num_identity_files; i++) { |
1934 | if (n_ids >= SSH_MAX_IDENTITY_FILES || | 2047 | if (n_ids >= SSH_MAX_IDENTITY_FILES || |
1935 | strcasecmp(options.identity_files[i], "none") == 0) { | 2048 | strcasecmp(options.identity_files[i], "none") == 0) { |
@@ -1939,8 +2052,8 @@ load_public_identity_files(void) | |||
1939 | } | 2052 | } |
1940 | cp = tilde_expand_filename(options.identity_files[i], | 2053 | cp = tilde_expand_filename(options.identity_files[i], |
1941 | original_real_uid); | 2054 | original_real_uid); |
1942 | filename = percent_expand(cp, "d", pwdir, | 2055 | filename = percent_expand(cp, "d", pw->pw_dir, |
1943 | "u", pwname, "l", thishost, "h", host, | 2056 | "u", pw->pw_name, "l", thishost, "h", host, |
1944 | "r", options.user, (char *)NULL); | 2057 | "r", options.user, (char *)NULL); |
1945 | free(cp); | 2058 | free(cp); |
1946 | public = key_load_public(filename, NULL); | 2059 | public = key_load_public(filename, NULL); |
@@ -1985,8 +2098,8 @@ load_public_identity_files(void) | |||
1985 | for (i = 0; i < options.num_certificate_files; i++) { | 2098 | for (i = 0; i < options.num_certificate_files; i++) { |
1986 | cp = tilde_expand_filename(options.certificate_files[i], | 2099 | cp = tilde_expand_filename(options.certificate_files[i], |
1987 | original_real_uid); | 2100 | original_real_uid); |
1988 | filename = percent_expand(cp, "d", pwdir, | 2101 | filename = percent_expand(cp, "d", pw->pw_dir, |
1989 | "u", pwname, "l", thishost, "h", host, | 2102 | "u", pw->pw_name, "l", thishost, "h", host, |
1990 | "r", options.user, (char *)NULL); | 2103 | "r", options.user, (char *)NULL); |
1991 | free(cp); | 2104 | free(cp); |
1992 | 2105 | ||
@@ -2019,11 +2132,6 @@ load_public_identity_files(void) | |||
2019 | memcpy(options.certificate_files, | 2132 | memcpy(options.certificate_files, |
2020 | certificate_files, sizeof(certificate_files)); | 2133 | certificate_files, sizeof(certificate_files)); |
2021 | memcpy(options.certificates, certificates, sizeof(certificates)); | 2134 | memcpy(options.certificates, certificates, sizeof(certificates)); |
2022 | |||
2023 | explicit_bzero(pwname, strlen(pwname)); | ||
2024 | free(pwname); | ||
2025 | explicit_bzero(pwdir, strlen(pwdir)); | ||
2026 | free(pwdir); | ||
2027 | } | 2135 | } |
2028 | 2136 | ||
2029 | static void | 2137 | static void |
@@ -2036,7 +2144,5 @@ main_sigchld_handler(int sig) | |||
2036 | while ((pid = waitpid(-1, &status, WNOHANG)) > 0 || | 2144 | while ((pid = waitpid(-1, &status, WNOHANG)) > 0 || |
2037 | (pid < 0 && errno == EINTR)) | 2145 | (pid < 0 && errno == EINTR)) |
2038 | ; | 2146 | ; |
2039 | |||
2040 | signal(sig, main_sigchld_handler); | ||
2041 | errno = save_errno; | 2147 | errno = save_errno; |
2042 | } | 2148 | } |
diff --git a/ssh_config.0 b/ssh_config.0 index 9493953ab..4109b1909 100644 --- a/ssh_config.0 +++ b/ssh_config.0 | |||
@@ -112,6 +112,11 @@ DESCRIPTION | |||
112 | one address. Note that this option does not work if | 112 | one address. Note that this option does not work if |
113 | UsePrivilegedPort is set to yes. | 113 | UsePrivilegedPort is set to yes. |
114 | 114 | ||
115 | BindInterface | ||
116 | Use the address of the specified interface on the local machine | ||
117 | as the source address of the connection. Note that this option | ||
118 | does not work if UsePrivilegedPort is set to yes. | ||
119 | |||
115 | CanonicalDomains | 120 | CanonicalDomains |
116 | When CanonicalizeHostname is enabled, this option specifies the | 121 | When CanonicalizeHostname is enabled, this option specifies the |
117 | list of domain suffixes in which to search for the specified | 122 | list of domain suffixes in which to search for the specified |
@@ -583,7 +588,10 @@ DESCRIPTION | |||
583 | curve25519-sha256,curve25519-sha256@libssh.org, | 588 | curve25519-sha256,curve25519-sha256@libssh.org, |
584 | ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, | 589 | ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, |
585 | diffie-hellman-group-exchange-sha256, | 590 | diffie-hellman-group-exchange-sha256, |
591 | diffie-hellman-group16-sha512, | ||
592 | diffie-hellman-group18-sha512, | ||
586 | diffie-hellman-group-exchange-sha1, | 593 | diffie-hellman-group-exchange-sha1, |
594 | diffie-hellman-group14-sha256, | ||
587 | diffie-hellman-group14-sha1 | 595 | diffie-hellman-group14-sha1 |
588 | 596 | ||
589 | The list of available key exchange algorithms may also be | 597 | The list of available key exchange algorithms may also be |
@@ -652,12 +660,8 @@ DESCRIPTION | |||
652 | "ssh -Q mac". | 660 | "ssh -Q mac". |
653 | 661 | ||
654 | NoHostAuthenticationForLocalhost | 662 | NoHostAuthenticationForLocalhost |
655 | This option can be used if the home directory is shared across | 663 | Disable host authentication for localhost (loopback addresses). |
656 | machines. In this case localhost will refer to a different | 664 | The argument to this keyword must be yes or no (the default). |
657 | machine on each of the machines and the user will get many | ||
658 | warnings about changed host keys. However, this option disables | ||
659 | host authentication for localhost. The argument to this keyword | ||
660 | must be yes or no (the default). | ||
661 | 665 | ||
662 | NumberOfPasswordPrompts | 666 | NumberOfPasswordPrompts |
663 | Specifies the number of password prompts before giving up. The | 667 | Specifies the number of password prompts before giving up. The |
@@ -713,12 +717,12 @@ DESCRIPTION | |||
713 | ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p | 717 | ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p |
714 | 718 | ||
715 | ProxyJump | 719 | ProxyJump |
716 | Specifies one or more jump proxies as [user@]host[:port]. | 720 | Specifies one or more jump proxies as either [user@]host[:port] |
717 | Multiple proxies may be separated by comma characters and will be | 721 | or an ssh URI. Multiple proxies may be separated by comma |
718 | visited sequentially. Setting this option will cause ssh(1) to | 722 | characters and will be visited sequentially. Setting this option |
719 | connect to the target host by first making a ssh(1) connection to | 723 | will cause ssh(1) to connect to the target host by first making a |
720 | the specified ProxyJump host and then establishing a TCP | 724 | ssh(1) connection to the specified ProxyJump host and then |
721 | forwarding to the ultimate target from there. | 725 | establishing a TCP forwarding to the ultimate target from there. |
722 | 726 | ||
723 | Note that this option will compete with the ProxyCommand option - | 727 | Note that this option will compete with the ProxyCommand option - |
724 | whichever is specified first will prevent later instances of the | 728 | whichever is specified first will prevent later instances of the |
@@ -883,8 +887,8 @@ DESCRIPTION | |||
883 | If this flag is set to yes, ssh(1) will never automatically add | 887 | If this flag is set to yes, ssh(1) will never automatically add |
884 | host keys to the ~/.ssh/known_hosts file, and refuses to connect | 888 | host keys to the ~/.ssh/known_hosts file, and refuses to connect |
885 | to hosts whose host key has changed. This provides maximum | 889 | to hosts whose host key has changed. This provides maximum |
886 | protection against trojan horse attacks, though it can be | 890 | protection against man-in-the-middle (MITM) attacks, though it |
887 | annoying when the /etc/ssh/ssh_known_hosts file is poorly | 891 | can be annoying when the /etc/ssh/ssh_known_hosts file is poorly |
888 | maintained or when connections to new hosts are frequently made. | 892 | maintained or when connections to new hosts are frequently made. |
889 | This option forces the user to manually add all new hosts. | 893 | This option forces the user to manually add all new hosts. |
890 | 894 | ||
@@ -918,6 +922,7 @@ DESCRIPTION | |||
918 | 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. |
919 | 923 | ||
920 | To disable TCP keepalive messages, the value should be set to no. | 924 | To disable TCP keepalive messages, the value should be set to no. |
925 | See also ServerAliveInterval for protocol-level keepalives. | ||
921 | 926 | ||
922 | Tunnel Request tun(4) device forwarding between the client and the | 927 | Tunnel Request tun(4) device forwarding between the client and the |
923 | server. The argument must be yes, point-to-point (layer 3), | 928 | server. The argument must be yes, point-to-point (layer 3), |
@@ -1012,12 +1017,23 @@ PATTERNS | |||
1012 | 1017 | ||
1013 | from="!*.dialup.example.com,*.example.com" | 1018 | from="!*.dialup.example.com,*.example.com" |
1014 | 1019 | ||
1020 | Note that a negated match will never produce a positive result by itself. | ||
1021 | For example, attempting to match "host3" against the following pattern- | ||
1022 | list will fail: | ||
1023 | |||
1024 | from="!host1,!host2" | ||
1025 | |||
1026 | The solution here is to include a term that will yield a positive match, | ||
1027 | such as a wildcard: | ||
1028 | |||
1029 | from="!host1,!host2,*" | ||
1030 | |||
1015 | TOKENS | 1031 | TOKENS |
1016 | Arguments to some keywords can make use of tokens, which are expanded at | 1032 | Arguments to some keywords can make use of tokens, which are expanded at |
1017 | runtime: | 1033 | runtime: |
1018 | 1034 | ||
1019 | %% A literal M-bM-^@M-^X%M-bM-^@M-^Y. | 1035 | %% A literal M-bM-^@M-^X%M-bM-^@M-^Y. |
1020 | %C Shorthand for %l%h%p%r. | 1036 | %C Hash of %l%h%p%r. |
1021 | %d Local user's home directory. | 1037 | %d Local user's home directory. |
1022 | %h The remote hostname. | 1038 | %h The remote hostname. |
1023 | %i The local user ID. | 1039 | %i The local user ID. |
@@ -1026,6 +1042,8 @@ TOKENS | |||
1026 | %n The original remote hostname, as given on the command line. | 1042 | %n The original remote hostname, as given on the command line. |
1027 | %p The remote port. | 1043 | %p The remote port. |
1028 | %r The remote username. | 1044 | %r The remote username. |
1045 | %T The local tun(4) or tap(4) network interface assigned if | ||
1046 | tunnel forwarding was requested, or "NONE" otherwise. | ||
1029 | %u The local username. | 1047 | %u The local username. |
1030 | 1048 | ||
1031 | Match exec accepts the tokens %%, %h, %L, %l, %n, %p, %r, and %u. | 1049 | Match exec accepts the tokens %%, %h, %L, %l, %n, %p, %r, and %u. |
@@ -1040,7 +1058,8 @@ TOKENS | |||
1040 | IdentityAgent and IdentityFile accept the tokens %%, %d, %h, %l, %r, and | 1058 | IdentityAgent and IdentityFile accept the tokens %%, %d, %h, %l, %r, and |
1041 | %u. | 1059 | %u. |
1042 | 1060 | ||
1043 | LocalCommand accepts the tokens %%, %C, %d, %h, %l, %n, %p, %r, and %u. | 1061 | LocalCommand accepts the tokens %%, %C, %d, %h, %l, %n, %p, %r, %T, and |
1062 | %u. | ||
1044 | 1063 | ||
1045 | ProxyCommand accepts the tokens %%, %h, %p, and %r. | 1064 | ProxyCommand accepts the tokens %%, %h, %p, and %r. |
1046 | 1065 | ||
@@ -1070,4 +1089,4 @@ AUTHORS | |||
1070 | created OpenSSH. Markus Friedl contributed the support for SSH protocol | 1089 | created OpenSSH. Markus Friedl contributed the support for SSH protocol |
1071 | versions 1.5 and 2.0. | 1090 | versions 1.5 and 2.0. |
1072 | 1091 | ||
1073 | OpenBSD 6.2 September 21, 2017 OpenBSD 6.2 | 1092 | OpenBSD 6.2 February 23, 2018 OpenBSD 6.2 |
diff --git a/ssh_config.5 b/ssh_config.5 index 2da7029af..ed6e5d026 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.256 2017/09/21 19:16:53 markus Exp $ | 36 | .\" $OpenBSD: ssh_config.5,v 1.268 2018/02/23 07:38:09 jmc Exp $ |
37 | .Dd $Mdocdate: September 21 2017 $ | 37 | .Dd $Mdocdate: February 23 2018 $ |
38 | .Dt SSH_CONFIG 5 | 38 | .Dt SSH_CONFIG 5 |
39 | .Os | 39 | .Os |
40 | .Sh NAME | 40 | .Sh NAME |
@@ -282,6 +282,13 @@ Note that this option does not work if | |||
282 | .Cm UsePrivilegedPort | 282 | .Cm UsePrivilegedPort |
283 | is set to | 283 | is set to |
284 | .Cm yes . | 284 | .Cm yes . |
285 | .It Cm BindInterface | ||
286 | Use the address of the specified interface on the local machine as the | ||
287 | source address of the connection. | ||
288 | Note that this option does not work if | ||
289 | .Cm UsePrivilegedPort | ||
290 | is set to | ||
291 | .Cm yes . | ||
285 | .It Cm CanonicalDomains | 292 | .It Cm CanonicalDomains |
286 | When | 293 | When |
287 | .Cm CanonicalizeHostname | 294 | .Cm CanonicalizeHostname |
@@ -1071,7 +1078,10 @@ The default is: | |||
1071 | curve25519-sha256,curve25519-sha256@libssh.org, | 1078 | curve25519-sha256,curve25519-sha256@libssh.org, |
1072 | ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, | 1079 | ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, |
1073 | diffie-hellman-group-exchange-sha256, | 1080 | diffie-hellman-group-exchange-sha256, |
1081 | diffie-hellman-group16-sha512, | ||
1082 | diffie-hellman-group18-sha512, | ||
1074 | diffie-hellman-group-exchange-sha1, | 1083 | diffie-hellman-group-exchange-sha1, |
1084 | diffie-hellman-group14-sha256, | ||
1075 | diffie-hellman-group14-sha1 | 1085 | diffie-hellman-group14-sha1 |
1076 | .Ed | 1086 | .Ed |
1077 | .Pp | 1087 | .Pp |
@@ -1163,10 +1173,7 @@ hmac-sha2-256,hmac-sha2-512,hmac-sha1 | |||
1163 | The list of available MAC algorithms may also be obtained using | 1173 | The list of available MAC algorithms may also be obtained using |
1164 | .Qq ssh -Q mac . | 1174 | .Qq ssh -Q mac . |
1165 | .It Cm NoHostAuthenticationForLocalhost | 1175 | .It Cm NoHostAuthenticationForLocalhost |
1166 | This option can be used if the home directory is shared across machines. | 1176 | Disable host authentication for localhost (loopback addresses). |
1167 | In this case localhost will refer to a different machine on each of | ||
1168 | the machines and the user will get many warnings about changed host keys. | ||
1169 | However, this option disables host authentication for localhost. | ||
1170 | The argument to this keyword must be | 1177 | The argument to this keyword must be |
1171 | .Cm yes | 1178 | .Cm yes |
1172 | or | 1179 | or |
@@ -1254,13 +1261,14 @@ For example, the following directive would connect via an HTTP proxy at | |||
1254 | ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p | 1261 | ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p |
1255 | .Ed | 1262 | .Ed |
1256 | .It Cm ProxyJump | 1263 | .It Cm ProxyJump |
1257 | Specifies one or more jump proxies as | 1264 | Specifies one or more jump proxies as either |
1258 | .Xo | 1265 | .Xo |
1259 | .Sm off | 1266 | .Sm off |
1260 | .Op Ar user No @ | 1267 | .Op Ar user No @ |
1261 | .Ar host | 1268 | .Ar host |
1262 | .Op : Ns Ar port | 1269 | .Op : Ns Ar port |
1263 | .Sm on | 1270 | .Sm on |
1271 | or an ssh URI | ||
1264 | .Xc . | 1272 | .Xc . |
1265 | Multiple proxies may be separated by comma characters and will be visited | 1273 | Multiple proxies may be separated by comma characters and will be visited |
1266 | sequentially. | 1274 | sequentially. |
@@ -1520,7 +1528,7 @@ If this flag is set to | |||
1520 | will never automatically add host keys to the | 1528 | will never automatically add host keys to the |
1521 | .Pa ~/.ssh/known_hosts | 1529 | .Pa ~/.ssh/known_hosts |
1522 | file, and refuses to connect to hosts whose host key has changed. | 1530 | file, and refuses to connect to hosts whose host key has changed. |
1523 | This provides maximum protection against trojan horse attacks, | 1531 | This provides maximum protection against man-in-the-middle (MITM) attacks, |
1524 | though it can be annoying when the | 1532 | though it can be annoying when the |
1525 | .Pa /etc/ssh/ssh_known_hosts | 1533 | .Pa /etc/ssh/ssh_known_hosts |
1526 | file is poorly maintained or when connections to new hosts are | 1534 | file is poorly maintained or when connections to new hosts are |
@@ -1578,6 +1586,9 @@ This is important in scripts, and many users want it too. | |||
1578 | .Pp | 1586 | .Pp |
1579 | To disable TCP keepalive messages, the value should be set to | 1587 | To disable TCP keepalive messages, the value should be set to |
1580 | .Cm no . | 1588 | .Cm no . |
1589 | See also | ||
1590 | .Cm ServerAliveInterval | ||
1591 | for protocol-level keepalives. | ||
1581 | .It Cm Tunnel | 1592 | .It Cm Tunnel |
1582 | Request | 1593 | Request |
1583 | .Xr tun 4 | 1594 | .Xr tun 4 |
@@ -1743,6 +1754,18 @@ pool, | |||
1743 | the following entry (in authorized_keys) could be used: | 1754 | the following entry (in authorized_keys) could be used: |
1744 | .Pp | 1755 | .Pp |
1745 | .Dl from=\&"!*.dialup.example.com,*.example.com\&" | 1756 | .Dl from=\&"!*.dialup.example.com,*.example.com\&" |
1757 | .Pp | ||
1758 | Note that a negated match will never produce a positive result by itself. | ||
1759 | For example, attempting to match | ||
1760 | .Qq host3 | ||
1761 | against the following pattern-list will fail: | ||
1762 | .Pp | ||
1763 | .Dl from=\&"!host1,!host2\&" | ||
1764 | .Pp | ||
1765 | The solution here is to include a term that will yield a positive match, | ||
1766 | such as a wildcard: | ||
1767 | .Pp | ||
1768 | .Dl from=\&"!host1,!host2,*\&" | ||
1746 | .Sh TOKENS | 1769 | .Sh TOKENS |
1747 | Arguments to some keywords can make use of tokens, | 1770 | Arguments to some keywords can make use of tokens, |
1748 | which are expanded at runtime: | 1771 | which are expanded at runtime: |
@@ -1752,7 +1775,7 @@ which are expanded at runtime: | |||
1752 | A literal | 1775 | A literal |
1753 | .Sq % . | 1776 | .Sq % . |
1754 | .It \&%C | 1777 | .It \&%C |
1755 | Shorthand for %l%h%p%r. | 1778 | Hash of %l%h%p%r. |
1756 | .It %d | 1779 | .It %d |
1757 | Local user's home directory. | 1780 | Local user's home directory. |
1758 | .It %h | 1781 | .It %h |
@@ -1769,6 +1792,15 @@ The original remote hostname, as given on the command line. | |||
1769 | The remote port. | 1792 | The remote port. |
1770 | .It %r | 1793 | .It %r |
1771 | The remote username. | 1794 | The remote username. |
1795 | .It \&%T | ||
1796 | The local | ||
1797 | .Xr tun 4 | ||
1798 | or | ||
1799 | .Xr tap 4 | ||
1800 | network interface assigned if | ||
1801 | tunnel forwarding was requested, or | ||
1802 | .Qq NONE | ||
1803 | otherwise. | ||
1772 | .It %u | 1804 | .It %u |
1773 | The local username. | 1805 | The local username. |
1774 | .El | 1806 | .El |
@@ -1791,7 +1823,7 @@ and | |||
1791 | accept the tokens %%, %d, %h, %l, %r, and %u. | 1823 | accept the tokens %%, %d, %h, %l, %r, and %u. |
1792 | .Pp | 1824 | .Pp |
1793 | .Cm LocalCommand | 1825 | .Cm LocalCommand |
1794 | accepts the tokens %%, %C, %d, %h, %l, %n, %p, %r, and %u. | 1826 | accepts the tokens %%, %C, %d, %h, %l, %n, %p, %r, %T, and %u. |
1795 | .Pp | 1827 | .Pp |
1796 | .Cm ProxyCommand | 1828 | .Cm ProxyCommand |
1797 | accepts the tokens %%, %h, %p, and %r. | 1829 | accepts the tokens %%, %h, %p, and %r. |
diff --git a/sshconnect.c b/sshconnect.c index 3280b310d..15d8b807e 100644 --- a/sshconnect.c +++ b/sshconnect.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sshconnect.c,v 1.287 2017/09/14 04:32:21 djm Exp $ */ | 1 | /* $OpenBSD: sshconnect.c,v 1.297 2018/02/23 15:58:38 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 |
@@ -23,6 +23,7 @@ | |||
23 | # include <sys/time.h> | 23 | # include <sys/time.h> |
24 | #endif | 24 | #endif |
25 | 25 | ||
26 | #include <net/if.h> | ||
26 | #include <netinet/in.h> | 27 | #include <netinet/in.h> |
27 | #include <arpa/inet.h> | 28 | #include <arpa/inet.h> |
28 | 29 | ||
@@ -43,6 +44,9 @@ | |||
43 | #include <stdlib.h> | 44 | #include <stdlib.h> |
44 | #include <string.h> | 45 | #include <string.h> |
45 | #include <unistd.h> | 46 | #include <unistd.h> |
47 | #ifdef HAVE_IFADDRS_H | ||
48 | # include <ifaddrs.h> | ||
49 | #endif | ||
46 | 50 | ||
47 | #include "xmalloc.h" | 51 | #include "xmalloc.h" |
48 | #include "key.h" | 52 | #include "key.h" |
@@ -270,14 +274,83 @@ ssh_kill_proxy_command(void) | |||
270 | kill(proxy_command_pid, SIGHUP); | 274 | kill(proxy_command_pid, SIGHUP); |
271 | } | 275 | } |
272 | 276 | ||
277 | #ifdef HAVE_IFADDRS_H | ||
278 | /* | ||
279 | * Search a interface address list (returned from getifaddrs(3)) for an | ||
280 | * address that matches the desired address family on the specifed interface. | ||
281 | * Returns 0 and fills in *resultp and *rlenp on success. Returns -1 on failure. | ||
282 | */ | ||
283 | static int | ||
284 | check_ifaddrs(const char *ifname, int af, const struct ifaddrs *ifaddrs, | ||
285 | struct sockaddr_storage *resultp, socklen_t *rlenp) | ||
286 | { | ||
287 | struct sockaddr_in6 *sa6; | ||
288 | struct sockaddr_in *sa; | ||
289 | struct in6_addr *v6addr; | ||
290 | const struct ifaddrs *ifa; | ||
291 | int allow_local; | ||
292 | |||
293 | /* | ||
294 | * Prefer addresses that are not loopback or linklocal, but use them | ||
295 | * if nothing else matches. | ||
296 | */ | ||
297 | for (allow_local = 0; allow_local < 2; allow_local++) { | ||
298 | for (ifa = ifaddrs; ifa != NULL; ifa = ifa->ifa_next) { | ||
299 | if (ifa->ifa_addr == NULL || ifa->ifa_name == NULL || | ||
300 | (ifa->ifa_flags & IFF_UP) == 0 || | ||
301 | ifa->ifa_addr->sa_family != af || | ||
302 | strcmp(ifa->ifa_name, options.bind_interface) != 0) | ||
303 | continue; | ||
304 | switch (ifa->ifa_addr->sa_family) { | ||
305 | case AF_INET: | ||
306 | sa = (struct sockaddr_in *)ifa->ifa_addr; | ||
307 | if (!allow_local && sa->sin_addr.s_addr == | ||
308 | htonl(INADDR_LOOPBACK)) | ||
309 | continue; | ||
310 | if (*rlenp < sizeof(struct sockaddr_in)) { | ||
311 | error("%s: v4 addr doesn't fit", | ||
312 | __func__); | ||
313 | return -1; | ||
314 | } | ||
315 | *rlenp = sizeof(struct sockaddr_in); | ||
316 | memcpy(resultp, sa, *rlenp); | ||
317 | return 0; | ||
318 | case AF_INET6: | ||
319 | sa6 = (struct sockaddr_in6 *)ifa->ifa_addr; | ||
320 | v6addr = &sa6->sin6_addr; | ||
321 | if (!allow_local && | ||
322 | (IN6_IS_ADDR_LINKLOCAL(v6addr) || | ||
323 | IN6_IS_ADDR_LOOPBACK(v6addr))) | ||
324 | continue; | ||
325 | if (*rlenp < sizeof(struct sockaddr_in6)) { | ||
326 | error("%s: v6 addr doesn't fit", | ||
327 | __func__); | ||
328 | return -1; | ||
329 | } | ||
330 | *rlenp = sizeof(struct sockaddr_in6); | ||
331 | memcpy(resultp, sa6, *rlenp); | ||
332 | return 0; | ||
333 | } | ||
334 | } | ||
335 | } | ||
336 | return -1; | ||
337 | } | ||
338 | #endif | ||
339 | |||
273 | /* | 340 | /* |
274 | * Creates a (possibly privileged) socket for use as the ssh connection. | 341 | * Creates a (possibly privileged) socket for use as the ssh connection. |
275 | */ | 342 | */ |
276 | static int | 343 | static int |
277 | ssh_create_socket(int privileged, struct addrinfo *ai) | 344 | ssh_create_socket(int privileged, struct addrinfo *ai) |
278 | { | 345 | { |
279 | int sock, r, gaierr; | 346 | int sock, r, oerrno; |
347 | struct sockaddr_storage bindaddr; | ||
348 | socklen_t bindaddrlen = 0; | ||
280 | struct addrinfo hints, *res = NULL; | 349 | struct addrinfo hints, *res = NULL; |
350 | #ifdef HAVE_IFADDRS_H | ||
351 | struct ifaddrs *ifaddrs = NULL; | ||
352 | #endif | ||
353 | char ntop[NI_MAXHOST]; | ||
281 | 354 | ||
282 | sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); | 355 | sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); |
283 | if (sock < 0) { | 356 | if (sock < 0) { |
@@ -287,22 +360,55 @@ ssh_create_socket(int privileged, struct addrinfo *ai) | |||
287 | fcntl(sock, F_SETFD, FD_CLOEXEC); | 360 | fcntl(sock, F_SETFD, FD_CLOEXEC); |
288 | 361 | ||
289 | /* Bind the socket to an alternative local IP address */ | 362 | /* Bind the socket to an alternative local IP address */ |
290 | if (options.bind_address == NULL && !privileged) | 363 | if (options.bind_address == NULL && options.bind_interface == NULL && |
364 | !privileged) | ||
291 | return sock; | 365 | return sock; |
292 | 366 | ||
293 | if (options.bind_address) { | 367 | if (options.bind_address != NULL) { |
294 | memset(&hints, 0, sizeof(hints)); | 368 | memset(&hints, 0, sizeof(hints)); |
295 | hints.ai_family = ai->ai_family; | 369 | hints.ai_family = ai->ai_family; |
296 | hints.ai_socktype = ai->ai_socktype; | 370 | hints.ai_socktype = ai->ai_socktype; |
297 | hints.ai_protocol = ai->ai_protocol; | 371 | hints.ai_protocol = ai->ai_protocol; |
298 | hints.ai_flags = AI_PASSIVE; | 372 | hints.ai_flags = AI_PASSIVE; |
299 | gaierr = getaddrinfo(options.bind_address, NULL, &hints, &res); | 373 | if ((r = getaddrinfo(options.bind_address, NULL, |
300 | if (gaierr) { | 374 | &hints, &res)) != 0) { |
301 | error("getaddrinfo: %s: %s", options.bind_address, | 375 | error("getaddrinfo: %s: %s", options.bind_address, |
302 | ssh_gai_strerror(gaierr)); | 376 | ssh_gai_strerror(r)); |
303 | close(sock); | 377 | goto fail; |
304 | return -1; | 378 | } |
379 | if (res == NULL) { | ||
380 | error("getaddrinfo: no addrs"); | ||
381 | goto fail; | ||
305 | } | 382 | } |
383 | if (res->ai_addrlen > sizeof(bindaddr)) { | ||
384 | error("%s: addr doesn't fit", __func__); | ||
385 | goto fail; | ||
386 | } | ||
387 | memcpy(&bindaddr, res->ai_addr, res->ai_addrlen); | ||
388 | bindaddrlen = res->ai_addrlen; | ||
389 | } else if (options.bind_interface != NULL) { | ||
390 | #ifdef HAVE_IFADDRS_H | ||
391 | if ((r = getifaddrs(&ifaddrs)) != 0) { | ||
392 | error("getifaddrs: %s: %s", options.bind_interface, | ||
393 | strerror(errno)); | ||
394 | goto fail; | ||
395 | } | ||
396 | bindaddrlen = sizeof(bindaddr); | ||
397 | if (check_ifaddrs(options.bind_interface, ai->ai_family, | ||
398 | ifaddrs, &bindaddr, &bindaddrlen) != 0) { | ||
399 | logit("getifaddrs: %s: no suitable addresses", | ||
400 | options.bind_interface); | ||
401 | goto fail; | ||
402 | } | ||
403 | #else | ||
404 | error("BindInterface not supported on this platform."); | ||
405 | #endif | ||
406 | } | ||
407 | if ((r = getnameinfo((struct sockaddr *)&bindaddr, bindaddrlen, | ||
408 | ntop, sizeof(ntop), NULL, 0, NI_NUMERICHOST)) != 0) { | ||
409 | error("%s: getnameinfo failed: %s", __func__, | ||
410 | ssh_gai_strerror(r)); | ||
411 | goto fail; | ||
306 | } | 412 | } |
307 | /* | 413 | /* |
308 | * If we are running as root and want to connect to a privileged | 414 | * If we are running as root and want to connect to a privileged |
@@ -310,25 +416,32 @@ ssh_create_socket(int privileged, struct addrinfo *ai) | |||
310 | */ | 416 | */ |
311 | if (privileged) { | 417 | if (privileged) { |
312 | PRIV_START; | 418 | PRIV_START; |
313 | r = bindresvport_sa(sock, res ? res->ai_addr : NULL); | 419 | r = bindresvport_sa(sock, |
420 | bindaddrlen == 0 ? NULL : (struct sockaddr *)&bindaddr); | ||
421 | oerrno = errno; | ||
314 | PRIV_END; | 422 | PRIV_END; |
315 | if (r < 0) { | 423 | if (r < 0) { |
316 | error("bindresvport_sa: af=%d %s", ai->ai_family, | 424 | error("bindresvport_sa %s: %s", ntop, |
317 | strerror(errno)); | 425 | strerror(oerrno)); |
318 | goto fail; | 426 | goto fail; |
319 | } | 427 | } |
320 | } else { | 428 | } else if (bind(sock, (struct sockaddr *)&bindaddr, bindaddrlen) != 0) { |
321 | if (bind(sock, res->ai_addr, res->ai_addrlen) < 0) { | 429 | error("bind %s: %s", ntop, strerror(errno)); |
322 | error("bind: %s: %s", options.bind_address, | 430 | goto fail; |
323 | strerror(errno)); | ||
324 | fail: | ||
325 | close(sock); | ||
326 | freeaddrinfo(res); | ||
327 | return -1; | ||
328 | } | ||
329 | } | 431 | } |
432 | debug("%s: bound to %s", __func__, ntop); | ||
433 | /* success */ | ||
434 | goto out; | ||
435 | fail: | ||
436 | close(sock); | ||
437 | sock = -1; | ||
438 | out: | ||
330 | if (res != NULL) | 439 | if (res != NULL) |
331 | freeaddrinfo(res); | 440 | freeaddrinfo(res); |
441 | #ifdef HAVE_IFADDRS_H | ||
442 | if (ifaddrs != NULL) | ||
443 | freeifaddrs(ifaddrs); | ||
444 | #endif | ||
332 | return sock; | 445 | return sock; |
333 | } | 446 | } |
334 | 447 | ||
@@ -344,7 +457,7 @@ waitrfd(int fd, int *timeoutp) | |||
344 | struct timeval t_start; | 457 | struct timeval t_start; |
345 | int oerrno, r; | 458 | int oerrno, r; |
346 | 459 | ||
347 | gettimeofday(&t_start, NULL); | 460 | monotime_tv(&t_start); |
348 | pfd.fd = fd; | 461 | pfd.fd = fd; |
349 | pfd.events = POLLIN; | 462 | pfd.events = POLLIN; |
350 | for (; *timeoutp >= 0;) { | 463 | for (; *timeoutp >= 0;) { |
@@ -416,7 +529,7 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop, | |||
416 | int connection_attempts, int *timeout_ms, int want_keepalive, int needpriv) | 529 | int connection_attempts, int *timeout_ms, int want_keepalive, int needpriv) |
417 | { | 530 | { |
418 | int on = 1; | 531 | int on = 1; |
419 | int sock = -1, attempt; | 532 | int oerrno, sock = -1, attempt; |
420 | char ntop[NI_MAXHOST], strport[NI_MAXSERV]; | 533 | char ntop[NI_MAXHOST], strport[NI_MAXSERV]; |
421 | struct addrinfo *ai; | 534 | struct addrinfo *ai; |
422 | 535 | ||
@@ -436,12 +549,16 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop, | |||
436 | */ | 549 | */ |
437 | for (ai = aitop; ai; ai = ai->ai_next) { | 550 | for (ai = aitop; ai; ai = ai->ai_next) { |
438 | if (ai->ai_family != AF_INET && | 551 | if (ai->ai_family != AF_INET && |
439 | ai->ai_family != AF_INET6) | 552 | ai->ai_family != AF_INET6) { |
553 | errno = EAFNOSUPPORT; | ||
440 | continue; | 554 | continue; |
555 | } | ||
441 | if (getnameinfo(ai->ai_addr, ai->ai_addrlen, | 556 | if (getnameinfo(ai->ai_addr, ai->ai_addrlen, |
442 | ntop, sizeof(ntop), strport, sizeof(strport), | 557 | ntop, sizeof(ntop), strport, sizeof(strport), |
443 | NI_NUMERICHOST|NI_NUMERICSERV) != 0) { | 558 | NI_NUMERICHOST|NI_NUMERICSERV) != 0) { |
559 | oerrno = errno; | ||
444 | error("%s: getnameinfo failed", __func__); | 560 | error("%s: getnameinfo failed", __func__); |
561 | errno = oerrno; | ||
445 | continue; | 562 | continue; |
446 | } | 563 | } |
447 | debug("Connecting to %.200s [%.100s] port %s.", | 564 | debug("Connecting to %.200s [%.100s] port %s.", |
@@ -449,9 +566,11 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop, | |||
449 | 566 | ||
450 | /* Create a socket for connecting. */ | 567 | /* Create a socket for connecting. */ |
451 | sock = ssh_create_socket(needpriv, ai); | 568 | sock = ssh_create_socket(needpriv, ai); |
452 | if (sock < 0) | 569 | if (sock < 0) { |
453 | /* Any error is already output */ | 570 | /* Any error is already output */ |
571 | errno = 0; | ||
454 | continue; | 572 | continue; |
573 | } | ||
455 | 574 | ||
456 | if (timeout_connect(sock, ai->ai_addr, ai->ai_addrlen, | 575 | if (timeout_connect(sock, ai->ai_addr, ai->ai_addrlen, |
457 | timeout_ms) >= 0) { | 576 | timeout_ms) >= 0) { |
@@ -459,10 +578,12 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop, | |||
459 | memcpy(hostaddr, ai->ai_addr, ai->ai_addrlen); | 578 | memcpy(hostaddr, ai->ai_addr, ai->ai_addrlen); |
460 | break; | 579 | break; |
461 | } else { | 580 | } else { |
581 | oerrno = errno; | ||
462 | debug("connect to address %s port %s: %s", | 582 | debug("connect to address %s port %s: %s", |
463 | ntop, strport, strerror(errno)); | 583 | ntop, strport, strerror(errno)); |
464 | close(sock); | 584 | close(sock); |
465 | sock = -1; | 585 | sock = -1; |
586 | errno = oerrno; | ||
466 | } | 587 | } |
467 | } | 588 | } |
468 | if (sock != -1) | 589 | if (sock != -1) |
@@ -472,8 +593,8 @@ ssh_connect_direct(struct ssh *ssh, const char *host, struct addrinfo *aitop, | |||
472 | /* Return failure if we didn't get a successful connection. */ | 593 | /* Return failure if we didn't get a successful connection. */ |
473 | if (sock == -1) { | 594 | if (sock == -1) { |
474 | error("ssh: connect to host %s port %s: %s", | 595 | error("ssh: connect to host %s port %s: %s", |
475 | host, strport, strerror(errno)); | 596 | host, strport, errno == 0 ? "failure" : strerror(errno)); |
476 | return (-1); | 597 | return -1; |
477 | } | 598 | } |
478 | 599 | ||
479 | debug("Connection established."); | 600 | debug("Connection established."); |
@@ -610,9 +731,6 @@ ssh_exchange_identification(int timeout_ms) | |||
610 | if (mismatch) | 731 | if (mismatch) |
611 | fatal("Protocol major versions differ: %d vs. %d", | 732 | fatal("Protocol major versions differ: %d vs. %d", |
612 | PROTOCOL_MAJOR_2, remote_major); | 733 | PROTOCOL_MAJOR_2, remote_major); |
613 | if ((datafellows & SSH_BUG_DERIVEKEY) != 0) | ||
614 | fatal("Server version \"%.100s\" uses unsafe key agreement; " | ||
615 | "refusing connection", remote_version); | ||
616 | if ((datafellows & SSH_BUG_RSASIGMD5) != 0) | 734 | if ((datafellows & SSH_BUG_RSASIGMD5) != 0) |
617 | logit("Server version \"%.100s\" uses unsafe RSA signature " | 735 | logit("Server version \"%.100s\" uses unsafe RSA signature " |
618 | "scheme; disabling use of RSA keys", remote_version); | 736 | "scheme; disabling use of RSA keys", remote_version); |
@@ -631,11 +749,12 @@ confirm(const char *prompt) | |||
631 | return 0; | 749 | return 0; |
632 | for (msg = prompt;;msg = again) { | 750 | for (msg = prompt;;msg = again) { |
633 | p = read_passphrase(msg, RP_ECHO); | 751 | p = read_passphrase(msg, RP_ECHO); |
634 | if (p == NULL || | 752 | if (p == NULL) |
635 | (p[0] == '\0') || (p[0] == '\n') || | 753 | return 0; |
636 | strncasecmp(p, "no", 2) == 0) | 754 | p[strcspn(p, "\n")] = '\0'; |
755 | if (p[0] == '\0' || strcasecmp(p, "no") == 0) | ||
637 | ret = 0; | 756 | ret = 0; |
638 | if (p && strncasecmp(p, "yes", 3) == 0) | 757 | else if (strcasecmp(p, "yes") == 0) |
639 | ret = 1; | 758 | ret = 1; |
640 | free(p); | 759 | free(p); |
641 | if (ret != -1) | 760 | if (ret != -1) |
@@ -1178,8 +1297,7 @@ fail: | |||
1178 | host_key = raw_key; | 1297 | host_key = raw_key; |
1179 | goto retry; | 1298 | goto retry; |
1180 | } | 1299 | } |
1181 | if (raw_key != NULL) | 1300 | sshkey_free(raw_key); |
1182 | sshkey_free(raw_key); | ||
1183 | free(ip); | 1301 | free(ip); |
1184 | free(host); | 1302 | free(host); |
1185 | if (host_hostkeys != NULL) | 1303 | if (host_hostkeys != NULL) |
@@ -1364,6 +1482,7 @@ show_other_keys(struct hostkeys *hostkeys, struct sshkey *key) | |||
1364 | KEY_DSA, | 1482 | KEY_DSA, |
1365 | KEY_ECDSA, | 1483 | KEY_ECDSA, |
1366 | KEY_ED25519, | 1484 | KEY_ED25519, |
1485 | KEY_XMSS, | ||
1367 | -1 | 1486 | -1 |
1368 | }; | 1487 | }; |
1369 | int i, ret = 0; | 1488 | int i, ret = 0; |
@@ -1460,8 +1579,8 @@ ssh_local_cmd(const char *args) | |||
1460 | } | 1579 | } |
1461 | 1580 | ||
1462 | void | 1581 | void |
1463 | maybe_add_key_to_agent(char *authfile, struct sshkey *private, char *comment, | 1582 | maybe_add_key_to_agent(char *authfile, const struct sshkey *private, |
1464 | char *passphrase) | 1583 | char *comment, char *passphrase) |
1465 | { | 1584 | { |
1466 | int auth_sock = -1, r; | 1585 | int auth_sock = -1, r; |
1467 | 1586 | ||
@@ -1481,7 +1600,7 @@ maybe_add_key_to_agent(char *authfile, struct sshkey *private, char *comment, | |||
1481 | } | 1600 | } |
1482 | 1601 | ||
1483 | if ((r = ssh_add_identity_constrained(auth_sock, private, comment, 0, | 1602 | if ((r = ssh_add_identity_constrained(auth_sock, private, comment, 0, |
1484 | (options.add_keys_to_agent == 3))) == 0) | 1603 | (options.add_keys_to_agent == 3), 0)) == 0) |
1485 | debug("identity added to agent: %s", authfile); | 1604 | debug("identity added to agent: %s", authfile); |
1486 | else | 1605 | else |
1487 | debug("could not add identity to agent: %s (%d)", authfile, r); | 1606 | debug("could not add identity to agent: %s (%d)", authfile, r); |
diff --git a/sshconnect.h b/sshconnect.h index b5029e234..dd648b096 100644 --- a/sshconnect.h +++ b/sshconnect.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sshconnect.h,v 1.31 2017/09/12 06:32:07 djm Exp $ */ | 1 | /* $OpenBSD: sshconnect.h,v 1.32 2018/02/10 09:25:35 djm Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2000 Markus Friedl. All rights reserved. | 4 | * Copyright (c) 2000 Markus Friedl. All rights reserved. |
@@ -57,7 +57,7 @@ void ssh_userauth2(const char *, const char *, char *, Sensitive *); | |||
57 | void ssh_put_password(char *); | 57 | void ssh_put_password(char *); |
58 | int ssh_local_cmd(const char *); | 58 | int ssh_local_cmd(const char *); |
59 | 59 | ||
60 | void maybe_add_key_to_agent(char *, struct sshkey *, char *, char *); | 60 | void maybe_add_key_to_agent(char *, const struct sshkey *, char *, char *); |
61 | 61 | ||
62 | /* | 62 | /* |
63 | * Macros to raise/lower permissions. | 63 | * Macros to raise/lower permissions. |
diff --git a/sshconnect2.c b/sshconnect2.c index c22477f59..83562c688 100644 --- a/sshconnect2.c +++ b/sshconnect2.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sshconnect2.c,v 1.266 2017/08/27 00:38:41 dtucker Exp $ */ | 1 | /* $OpenBSD: sshconnect2.c,v 1.270 2018/03/24 19:28:43 markus 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. |
@@ -644,7 +644,6 @@ input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh) | |||
644 | Authctxt *authctxt = ssh->authctxt; | 644 | Authctxt *authctxt = ssh->authctxt; |
645 | struct sshkey *key = NULL; | 645 | struct sshkey *key = NULL; |
646 | Identity *id = NULL; | 646 | Identity *id = NULL; |
647 | Buffer b; | ||
648 | int pktype, sent = 0; | 647 | int pktype, sent = 0; |
649 | u_int alen, blen; | 648 | u_int alen, blen; |
650 | char *pkalg, *fp; | 649 | char *pkalg, *fp; |
@@ -652,18 +651,9 @@ input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh) | |||
652 | 651 | ||
653 | if (authctxt == NULL) | 652 | if (authctxt == NULL) |
654 | fatal("input_userauth_pk_ok: no authentication context"); | 653 | fatal("input_userauth_pk_ok: no authentication context"); |
655 | if (datafellows & SSH_BUG_PKOK) { | 654 | |
656 | /* this is similar to SSH_BUG_PKAUTH */ | 655 | pkalg = packet_get_string(&alen); |
657 | debug2("input_userauth_pk_ok: SSH_BUG_PKOK"); | 656 | pkblob = packet_get_string(&blen); |
658 | pkblob = packet_get_string(&blen); | ||
659 | buffer_init(&b); | ||
660 | buffer_append(&b, pkblob, blen); | ||
661 | pkalg = buffer_get_string(&b, &alen); | ||
662 | buffer_free(&b); | ||
663 | } else { | ||
664 | pkalg = packet_get_string(&alen); | ||
665 | pkblob = packet_get_string(&blen); | ||
666 | } | ||
667 | packet_check_eom(); | 657 | packet_check_eom(); |
668 | 658 | ||
669 | debug("Server accepts key: pkalg %s blen %u", pkalg, blen); | 659 | debug("Server accepts key: pkalg %s blen %u", pkalg, blen); |
@@ -700,8 +690,7 @@ input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh) | |||
700 | } | 690 | } |
701 | } | 691 | } |
702 | done: | 692 | done: |
703 | if (key != NULL) | 693 | key_free(key); |
704 | key_free(key); | ||
705 | free(pkalg); | 694 | free(pkalg); |
706 | free(pkblob); | 695 | free(pkblob); |
707 | 696 | ||
@@ -1136,17 +1125,46 @@ key_sign_encode(const struct sshkey *key) | |||
1136 | return key_ssh_name(key); | 1125 | return key_ssh_name(key); |
1137 | } | 1126 | } |
1138 | 1127 | ||
1128 | /* | ||
1129 | * Some agents will return ssh-rsa signatures when asked to make a | ||
1130 | * rsa-sha2-* signature. Check what they actually gave back and warn the | ||
1131 | * user if the agent has returned an unexpected type. | ||
1132 | */ | ||
1133 | static int | ||
1134 | check_sigtype(const struct sshkey *key, const u_char *sig, size_t len) | ||
1135 | { | ||
1136 | int r; | ||
1137 | char *sigtype = NULL; | ||
1138 | const char *alg = key_sign_encode(key); | ||
1139 | |||
1140 | if (sshkey_is_cert(key)) | ||
1141 | return 0; | ||
1142 | if ((r = sshkey_sigtype(sig, len, &sigtype)) != 0) | ||
1143 | return r; | ||
1144 | if (strcmp(sigtype, alg) != 0) { | ||
1145 | logit("warning: agent returned different signature type %s " | ||
1146 | "(expected %s)", sigtype, alg); | ||
1147 | } | ||
1148 | free(sigtype); | ||
1149 | /* Incorrect signature types aren't an error ... yet */ | ||
1150 | return 0; | ||
1151 | } | ||
1152 | |||
1139 | static int | 1153 | static int |
1140 | identity_sign(struct identity *id, u_char **sigp, size_t *lenp, | 1154 | identity_sign(struct identity *id, u_char **sigp, size_t *lenp, |
1141 | const u_char *data, size_t datalen, u_int compat) | 1155 | const u_char *data, size_t datalen, u_int compat) |
1142 | { | 1156 | { |
1143 | struct sshkey *prv; | 1157 | struct sshkey *prv; |
1144 | int ret; | 1158 | int r; |
1145 | 1159 | ||
1146 | /* the agent supports this key */ | 1160 | /* the agent supports this key */ |
1147 | if (id->key != NULL && id->agent_fd != -1) | 1161 | if (id->key != NULL && id->agent_fd != -1) { |
1148 | return ssh_agent_sign(id->agent_fd, id->key, sigp, lenp, | 1162 | if ((r = ssh_agent_sign(id->agent_fd, id->key, sigp, lenp, |
1149 | data, datalen, key_sign_encode(id->key), compat); | 1163 | data, datalen, key_sign_encode(id->key), compat)) != 0 || |
1164 | (r = check_sigtype(id->key, *sigp, *lenp)) != 0) | ||
1165 | return r; | ||
1166 | return 0; | ||
1167 | } | ||
1150 | 1168 | ||
1151 | /* | 1169 | /* |
1152 | * we have already loaded the private key or | 1170 | * we have already loaded the private key or |
@@ -1165,10 +1183,10 @@ identity_sign(struct identity *id, u_char **sigp, size_t *lenp, | |||
1165 | __func__, id->filename); | 1183 | __func__, id->filename); |
1166 | return SSH_ERR_KEY_NOT_FOUND; | 1184 | return SSH_ERR_KEY_NOT_FOUND; |
1167 | } | 1185 | } |
1168 | ret = sshkey_sign(prv, sigp, lenp, data, datalen, | 1186 | r = sshkey_sign(prv, sigp, lenp, data, datalen, |
1169 | key_sign_encode(prv), compat); | 1187 | key_sign_encode(prv), compat); |
1170 | sshkey_free(prv); | 1188 | sshkey_free(prv); |
1171 | return (ret); | 1189 | return r; |
1172 | } | 1190 | } |
1173 | 1191 | ||
1174 | static int | 1192 | static int |
@@ -1223,17 +1241,10 @@ sign_and_send_pubkey(Authctxt *authctxt, Identity *id) | |||
1223 | } | 1241 | } |
1224 | buffer_put_char(&b, SSH2_MSG_USERAUTH_REQUEST); | 1242 | buffer_put_char(&b, SSH2_MSG_USERAUTH_REQUEST); |
1225 | buffer_put_cstring(&b, authctxt->server_user); | 1243 | buffer_put_cstring(&b, authctxt->server_user); |
1226 | buffer_put_cstring(&b, | 1244 | buffer_put_cstring(&b, authctxt->service); |
1227 | datafellows & SSH_BUG_PKSERVICE ? | 1245 | buffer_put_cstring(&b, authctxt->method->name); |
1228 | "ssh-userauth" : | 1246 | buffer_put_char(&b, have_sig); |
1229 | authctxt->service); | 1247 | buffer_put_cstring(&b, key_sign_encode(id->key)); |
1230 | if (datafellows & SSH_BUG_PKAUTH) { | ||
1231 | buffer_put_char(&b, have_sig); | ||
1232 | } else { | ||
1233 | buffer_put_cstring(&b, authctxt->method->name); | ||
1234 | buffer_put_char(&b, have_sig); | ||
1235 | buffer_put_cstring(&b, key_sign_encode(id->key)); | ||
1236 | } | ||
1237 | buffer_put_string(&b, blob, bloblen); | 1248 | buffer_put_string(&b, blob, bloblen); |
1238 | 1249 | ||
1239 | /* | 1250 | /* |
@@ -1293,19 +1304,6 @@ sign_and_send_pubkey(Authctxt *authctxt, Identity *id) | |||
1293 | #ifdef DEBUG_PK | 1304 | #ifdef DEBUG_PK |
1294 | buffer_dump(&b); | 1305 | buffer_dump(&b); |
1295 | #endif | 1306 | #endif |
1296 | if (datafellows & SSH_BUG_PKSERVICE) { | ||
1297 | buffer_clear(&b); | ||
1298 | buffer_append(&b, session_id2, session_id2_len); | ||
1299 | skip = session_id2_len; | ||
1300 | buffer_put_char(&b, SSH2_MSG_USERAUTH_REQUEST); | ||
1301 | buffer_put_cstring(&b, authctxt->server_user); | ||
1302 | buffer_put_cstring(&b, authctxt->service); | ||
1303 | buffer_put_cstring(&b, authctxt->method->name); | ||
1304 | buffer_put_char(&b, have_sig); | ||
1305 | if (!(datafellows & SSH_BUG_PKAUTH)) | ||
1306 | buffer_put_cstring(&b, key_ssh_name(id->key)); | ||
1307 | buffer_put_string(&b, blob, bloblen); | ||
1308 | } | ||
1309 | free(blob); | 1307 | free(blob); |
1310 | 1308 | ||
1311 | /* append signature */ | 1309 | /* append signature */ |
@@ -1347,8 +1345,7 @@ send_pubkey_test(Authctxt *authctxt, Identity *id) | |||
1347 | packet_put_cstring(authctxt->service); | 1345 | packet_put_cstring(authctxt->service); |
1348 | packet_put_cstring(authctxt->method->name); | 1346 | packet_put_cstring(authctxt->method->name); |
1349 | packet_put_char(have_sig); | 1347 | packet_put_char(have_sig); |
1350 | if (!(datafellows & SSH_BUG_PKAUTH)) | 1348 | packet_put_cstring(key_sign_encode(id->key)); |
1351 | packet_put_cstring(key_sign_encode(id->key)); | ||
1352 | packet_put_string(blob, bloblen); | 1349 | packet_put_string(blob, bloblen); |
1353 | free(blob); | 1350 | free(blob); |
1354 | packet_send(); | 1351 | packet_send(); |
@@ -1864,7 +1861,6 @@ userauth_hostbased(Authctxt *authctxt) | |||
1864 | struct ssh *ssh = active_state; | 1861 | struct ssh *ssh = active_state; |
1865 | struct sshkey *private = NULL; | 1862 | struct sshkey *private = NULL; |
1866 | struct sshbuf *b = NULL; | 1863 | struct sshbuf *b = NULL; |
1867 | const char *service; | ||
1868 | u_char *sig = NULL, *keyblob = NULL; | 1864 | u_char *sig = NULL, *keyblob = NULL; |
1869 | char *fp = NULL, *chost = NULL, *lname = NULL; | 1865 | char *fp = NULL, *chost = NULL, *lname = NULL; |
1870 | size_t siglen = 0, keylen = 0; | 1866 | size_t siglen = 0, keylen = 0; |
@@ -1935,9 +1931,6 @@ userauth_hostbased(Authctxt *authctxt) | |||
1935 | xasprintf(&chost, "%s.", lname); | 1931 | xasprintf(&chost, "%s.", lname); |
1936 | debug2("%s: chost %s", __func__, chost); | 1932 | debug2("%s: chost %s", __func__, chost); |
1937 | 1933 | ||
1938 | service = datafellows & SSH_BUG_HBSERVICE ? "ssh-userauth" : | ||
1939 | authctxt->service; | ||
1940 | |||
1941 | /* construct data */ | 1934 | /* construct data */ |
1942 | if ((b = sshbuf_new()) == NULL) { | 1935 | if ((b = sshbuf_new()) == NULL) { |
1943 | error("%s: sshbuf_new failed", __func__); | 1936 | error("%s: sshbuf_new failed", __func__); |
@@ -1950,7 +1943,7 @@ userauth_hostbased(Authctxt *authctxt) | |||
1950 | if ((r = sshbuf_put_string(b, session_id2, session_id2_len)) != 0 || | 1943 | if ((r = sshbuf_put_string(b, session_id2, session_id2_len)) != 0 || |
1951 | (r = sshbuf_put_u8(b, SSH2_MSG_USERAUTH_REQUEST)) != 0 || | 1944 | (r = sshbuf_put_u8(b, SSH2_MSG_USERAUTH_REQUEST)) != 0 || |
1952 | (r = sshbuf_put_cstring(b, authctxt->server_user)) != 0 || | 1945 | (r = sshbuf_put_cstring(b, authctxt->server_user)) != 0 || |
1953 | (r = sshbuf_put_cstring(b, service)) != 0 || | 1946 | (r = sshbuf_put_cstring(b, authctxt->service)) != 0 || |
1954 | (r = sshbuf_put_cstring(b, authctxt->method->name)) != 0 || | 1947 | (r = sshbuf_put_cstring(b, authctxt->method->name)) != 0 || |
1955 | (r = sshbuf_put_cstring(b, key_ssh_name(private))) != 0 || | 1948 | (r = sshbuf_put_cstring(b, key_ssh_name(private))) != 0 || |
1956 | (r = sshbuf_put_string(b, keyblob, keylen)) != 0 || | 1949 | (r = sshbuf_put_string(b, keyblob, keylen)) != 0 || |
@@ -33,12 +33,14 @@ DESCRIPTION | |||
33 | -C connection_spec | 33 | -C connection_spec |
34 | Specify the connection parameters to use for the -T extended test | 34 | Specify the connection parameters to use for the -T extended test |
35 | mode. If provided, any Match directives in the configuration | 35 | mode. If provided, any Match directives in the configuration |
36 | file that would apply to the specified user, host, and address | 36 | file that would apply are applied before the configuration is |
37 | will be set before the configuration is written to standard | 37 | written to standard output. The connection parameters are |
38 | output. The connection parameters are supplied as keyword=value | 38 | supplied as keyword=value pairs and may be supplied in any order, |
39 | pairs. The keywords are M-bM-^@M-^\userM-bM-^@M-^], M-bM-^@M-^\hostM-bM-^@M-^], M-bM-^@M-^\laddrM-bM-^@M-^], M-bM-^@M-^\lportM-bM-^@M-^], and | ||
40 | M-bM-^@M-^\addrM-bM-^@M-^]. All are required and may be supplied in any order, | ||
41 | either with multiple -C options or as a comma-separated list. | 39 | either with multiple -C options or as a comma-separated list. |
40 | The keywords are M-bM-^@M-^\addr,M-bM-^@M-^] M-bM-^@M-^\userM-bM-^@M-^], M-bM-^@M-^\hostM-bM-^@M-^], M-bM-^@M-^\laddrM-bM-^@M-^], M-bM-^@M-^\lportM-bM-^@M-^], and | ||
41 | M-bM-^@M-^\rdomainM-bM-^@M-^] and correspond to source address, user, resolved source | ||
42 | host name, local address, local port number and routing domain | ||
43 | respectively. | ||
42 | 44 | ||
43 | -c host_certificate_file | 45 | -c host_certificate_file |
44 | Specifies a path to a certificate file to identify sshd during | 46 | Specifies a path to a certificate file to identify sshd during |
@@ -75,10 +77,9 @@ DESCRIPTION | |||
75 | Specifies a file from which a host key is read. This option must | 77 | Specifies a file from which a host key is read. This option must |
76 | be given if sshd is not run as root (as the normal host key files | 78 | be given if sshd is not run as root (as the normal host key files |
77 | are normally not readable by anyone but root). The default is | 79 | are normally not readable by anyone but root). The default is |
78 | /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_ecdsa_key, | 80 | /etc/ssh/ssh_host_ecdsa_key, /etc/ssh/ssh_host_ed25519_key and |
79 | /etc/ssh/ssh_host_ed25519_key and /etc/ssh/ssh_host_rsa_key. It | 81 | /etc/ssh/ssh_host_rsa_key. It is possible to have multiple host |
80 | is possible to have multiple host key files for the different | 82 | key files for the different host key algorithms. |
81 | host key algorithms. | ||
82 | 83 | ||
83 | -i Specifies that sshd is being run from inetd(8). | 84 | -i Specifies that sshd is being run from inetd(8). |
84 | 85 | ||
@@ -247,7 +248,7 @@ AUTHORIZED_KEYS FILE FORMAT | |||
247 | You don't want to type them in; instead, copy the id_dsa.pub, | 248 | You don't want to type them in; instead, copy the id_dsa.pub, |
248 | id_ecdsa.pub, id_ed25519.pub, or the id_rsa.pub file and edit it. | 249 | id_ecdsa.pub, id_ed25519.pub, or the id_rsa.pub file and edit it. |
249 | 250 | ||
250 | sshd enforces a minimum RSA key modulus size of 768 bits. | 251 | sshd enforces a minimum RSA key modulus size of 1024 bits. |
251 | 252 | ||
252 | The options (if present) consist of comma-separated option | 253 | The options (if present) consist of comma-separated option |
253 | specifications. No spaces are permitted, except within double quotes. | 254 | specifications. No spaces are permitted, except within double quotes. |
@@ -299,6 +300,11 @@ AUTHORIZED_KEYS FILE FORMAT | |||
299 | this type are permitted. Environment processing is disabled by | 300 | this type are permitted. Environment processing is disabled by |
300 | default and is controlled via the PermitUserEnvironment option. | 301 | default and is controlled via the PermitUserEnvironment option. |
301 | 302 | ||
303 | expiry-time="timespec" | ||
304 | Specifies a time after which the key will not be accepted. The | ||
305 | time may be specified as a YYYYMMDD date or a YYYYMMDDHHMM[SS] | ||
306 | time in the system time-zone. | ||
307 | |||
302 | from="pattern-list" | 308 | from="pattern-list" |
303 | Specifies that in addition to public key authentication, either | 309 | Specifies that in addition to public key authentication, either |
304 | the canonical name of the remote host or its IP address must be | 310 | the canonical name of the remote host or its IP address must be |
@@ -346,6 +352,7 @@ AUTHORIZED_KEYS FILE FORMAT | |||
346 | 352 | ||
347 | port-forwarding | 353 | port-forwarding |
348 | Enable port forwarding previously disabled by the restrict | 354 | Enable port forwarding previously disabled by the restrict |
355 | option. | ||
349 | 356 | ||
350 | principals="principals" | 357 | principals="principals" |
351 | On a cert-authority line, specifies allowed principals for | 358 | On a cert-authority line, specifies allowed principals for |
@@ -567,7 +574,6 @@ FILES | |||
567 | allows host-based authentication without permitting login with | 574 | allows host-based authentication without permitting login with |
568 | rlogin/rsh. | 575 | rlogin/rsh. |
569 | 576 | ||
570 | /etc/ssh/ssh_host_dsa_key | ||
571 | /etc/ssh/ssh_host_ecdsa_key | 577 | /etc/ssh/ssh_host_ecdsa_key |
572 | /etc/ssh/ssh_host_ed25519_key | 578 | /etc/ssh/ssh_host_ed25519_key |
573 | /etc/ssh/ssh_host_rsa_key | 579 | /etc/ssh/ssh_host_rsa_key |
@@ -576,7 +582,6 @@ FILES | |||
576 | not accessible to others. Note that sshd does not start if these | 582 | not accessible to others. Note that sshd does not start if these |
577 | files are group/world-accessible. | 583 | files are group/world-accessible. |
578 | 584 | ||
579 | /etc/ssh/ssh_host_dsa_key.pub | ||
580 | /etc/ssh/ssh_host_ecdsa_key.pub | 585 | /etc/ssh/ssh_host_ecdsa_key.pub |
581 | /etc/ssh/ssh_host_ed25519_key.pub | 586 | /etc/ssh/ssh_host_ed25519_key.pub |
582 | /etc/ssh/ssh_host_rsa_key.pub | 587 | /etc/ssh/ssh_host_rsa_key.pub |
@@ -629,4 +634,4 @@ AUTHORS | |||
629 | versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support | 634 | versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support |
630 | for privilege separation. | 635 | for privilege separation. |
631 | 636 | ||
632 | OpenBSD 6.2 June 24, 2017 OpenBSD 6.2 | 637 | OpenBSD 6.2 March 14, 2018 OpenBSD 6.2 |
@@ -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.291 2017/06/24 06:28:50 jmc Exp $ | 36 | .\" $OpenBSD: sshd.8,v 1.299 2018/03/14 06:56:20 jmc Exp $ |
37 | .Dd $Mdocdate: June 24 2017 $ | 37 | .Dd $Mdocdate: March 14 2018 $ |
38 | .Dt SSHD 8 | 38 | .Dt SSHD 8 |
39 | .Os | 39 | .Os |
40 | .Sh NAME | 40 | .Sh NAME |
@@ -100,20 +100,22 @@ Specify the connection parameters to use for the | |||
100 | extended test mode. | 100 | extended test mode. |
101 | If provided, any | 101 | If provided, any |
102 | .Cm Match | 102 | .Cm Match |
103 | directives in the configuration file | 103 | directives in the configuration file that would apply are applied before the |
104 | that would apply to the specified user, host, and address will be set before | 104 | configuration is written to standard output. |
105 | the configuration is written to standard output. | 105 | The connection parameters are supplied as keyword=value pairs and may be |
106 | The connection parameters are supplied as keyword=value pairs. | 106 | supplied in any order, either with multiple |
107 | .Fl C | ||
108 | options or as a comma-separated list. | ||
107 | The keywords are | 109 | The keywords are |
110 | .Dq addr, | ||
108 | .Dq user , | 111 | .Dq user , |
109 | .Dq host , | 112 | .Dq host , |
110 | .Dq laddr , | 113 | .Dq laddr , |
111 | .Dq lport , | 114 | .Dq lport , |
112 | and | 115 | and |
113 | .Dq addr . | 116 | .Dq rdomain |
114 | All are required and may be supplied in any order, either with multiple | 117 | and correspond to source address, user, resolved source host name, |
115 | .Fl C | 118 | local address, local port number and routing domain respectively. |
116 | options or as a comma-separated list. | ||
117 | .It Fl c Ar host_certificate_file | 119 | .It Fl c Ar host_certificate_file |
118 | Specifies a path to a certificate file to identify | 120 | Specifies a path to a certificate file to identify |
119 | .Nm | 121 | .Nm |
@@ -164,10 +166,10 @@ This option must be given if | |||
164 | is not run as root (as the normal | 166 | is not run as root (as the normal |
165 | host key files are normally not readable by anyone but root). | 167 | host key files are normally not readable by anyone but root). |
166 | The default is | 168 | The default is |
167 | .Pa /etc/ssh/ssh_host_rsa_key , | 169 | .Pa /etc/ssh/ssh_host_ecdsa_key , |
168 | .Pa /etc/ssh/ssh_host_ecdsa_key | 170 | .Pa /etc/ssh/ssh_host_ed25519_key |
169 | and | 171 | and |
170 | .Pa /etc/ssh/ssh_host_ed25519_key . | 172 | .Pa /etc/ssh/ssh_host_rsa_key . |
171 | It is possible to have multiple host key files for | 173 | It is possible to have multiple host key files for |
172 | the different host key algorithms. | 174 | the different host key algorithms. |
173 | .It Fl i | 175 | .It Fl i |
@@ -451,7 +453,7 @@ or the | |||
451 | file and edit it. | 453 | file and edit it. |
452 | .Pp | 454 | .Pp |
453 | .Nm | 455 | .Nm |
454 | enforces a minimum RSA key modulus size of 768 bits. | 456 | enforces a minimum RSA key modulus size of 1024 bits. |
455 | .Pp | 457 | .Pp |
456 | The options (if present) consist of comma-separated option | 458 | The options (if present) consist of comma-separated option |
457 | specifications. | 459 | specifications. |
@@ -511,6 +513,10 @@ Environment processing is disabled by default and is | |||
511 | controlled via the | 513 | controlled via the |
512 | .Cm PermitUserEnvironment | 514 | .Cm PermitUserEnvironment |
513 | option. | 515 | option. |
516 | .It Cm expiry-time="timespec" | ||
517 | Specifies a time after which the key will not be accepted. | ||
518 | The time may be specified as a YYYYMMDD date or a YYYYMMDDHHMM[SS] time | ||
519 | in the system time-zone. | ||
514 | .It Cm from="pattern-list" | 520 | .It Cm from="pattern-list" |
515 | Specifies that in addition to public key authentication, either the canonical | 521 | Specifies that in addition to public key authentication, either the canonical |
516 | name of the remote host or its IP address must be present in the | 522 | name of the remote host or its IP address must be present in the |
@@ -565,6 +571,7 @@ matches any port. | |||
565 | .It Cm port-forwarding | 571 | .It Cm port-forwarding |
566 | Enable port forwarding previously disabled by the | 572 | Enable port forwarding previously disabled by the |
567 | .Cm restrict | 573 | .Cm restrict |
574 | option. | ||
568 | .It Cm principals="principals" | 575 | .It Cm principals="principals" |
569 | On a | 576 | On a |
570 | .Cm cert-authority | 577 | .Cm cert-authority |
@@ -876,7 +883,6 @@ This file is used in exactly the same way as | |||
876 | but allows host-based authentication without permitting login with | 883 | but allows host-based authentication without permitting login with |
877 | rlogin/rsh. | 884 | rlogin/rsh. |
878 | .Pp | 885 | .Pp |
879 | .It Pa /etc/ssh/ssh_host_dsa_key | ||
880 | .It Pa /etc/ssh/ssh_host_ecdsa_key | 886 | .It Pa /etc/ssh/ssh_host_ecdsa_key |
881 | .It Pa /etc/ssh/ssh_host_ed25519_key | 887 | .It Pa /etc/ssh/ssh_host_ed25519_key |
882 | .It Pa /etc/ssh/ssh_host_rsa_key | 888 | .It Pa /etc/ssh/ssh_host_rsa_key |
@@ -887,7 +893,6 @@ Note that | |||
887 | .Nm | 893 | .Nm |
888 | does not start if these files are group/world-accessible. | 894 | does not start if these files are group/world-accessible. |
889 | .Pp | 895 | .Pp |
890 | .It Pa /etc/ssh/ssh_host_dsa_key.pub | ||
891 | .It Pa /etc/ssh/ssh_host_ecdsa_key.pub | 896 | .It Pa /etc/ssh/ssh_host_ecdsa_key.pub |
892 | .It Pa /etc/ssh/ssh_host_ed25519_key.pub | 897 | .It Pa /etc/ssh/ssh_host_ed25519_key.pub |
893 | .It Pa /etc/ssh/ssh_host_rsa_key.pub | 898 | .It Pa /etc/ssh/ssh_host_rsa_key.pub |
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sshd.c,v 1.492 2017/09/12 06:32:07 djm Exp $ */ | 1 | /* $OpenBSD: sshd.c,v 1.506 2018/03/03 03:15:51 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 |
@@ -123,6 +123,7 @@ | |||
123 | #endif | 123 | #endif |
124 | #include "monitor_wrap.h" | 124 | #include "monitor_wrap.h" |
125 | #include "ssh-sandbox.h" | 125 | #include "ssh-sandbox.h" |
126 | #include "auth-options.h" | ||
126 | #include "version.h" | 127 | #include "version.h" |
127 | #include "ssherr.h" | 128 | #include "ssherr.h" |
128 | 129 | ||
@@ -159,7 +160,12 @@ char *config_file_name = _PATH_SERVER_CONFIG_FILE; | |||
159 | */ | 160 | */ |
160 | int debug_flag = 0; | 161 | int debug_flag = 0; |
161 | 162 | ||
162 | /* Flag indicating that the daemon should only test the configuration and keys. */ | 163 | /* |
164 | * Indicating that the daemon should only test the configuration and keys. | ||
165 | * If test_flag > 1 ("-T" flag), then sshd will also dump the effective | ||
166 | * configuration, optionally using connection information provided by the | ||
167 | * "-C" flag. | ||
168 | */ | ||
163 | int test_flag = 0; | 169 | int test_flag = 0; |
164 | 170 | ||
165 | /* Flag indicating that the daemon is being started from inetd. */ | 171 | /* Flag indicating that the daemon is being started from inetd. */ |
@@ -242,6 +248,9 @@ static int privsep_chroot = 1; | |||
242 | /* global authentication context */ | 248 | /* global authentication context */ |
243 | Authctxt *the_authctxt = NULL; | 249 | Authctxt *the_authctxt = NULL; |
244 | 250 | ||
251 | /* global key/cert auth options. XXX move to permanent ssh->authctxt? */ | ||
252 | struct sshauthopt *auth_opts = NULL; | ||
253 | |||
245 | /* sshd_config buffer */ | 254 | /* sshd_config buffer */ |
246 | Buffer cfg; | 255 | Buffer cfg; |
247 | 256 | ||
@@ -293,7 +302,6 @@ sighup_handler(int sig) | |||
293 | int save_errno = errno; | 302 | int save_errno = errno; |
294 | 303 | ||
295 | received_sighup = 1; | 304 | received_sighup = 1; |
296 | signal(SIGHUP, sighup_handler); | ||
297 | errno = save_errno; | 305 | errno = save_errno; |
298 | } | 306 | } |
299 | 307 | ||
@@ -343,8 +351,6 @@ main_sigchld_handler(int sig) | |||
343 | while ((pid = waitpid(-1, &status, WNOHANG)) > 0 || | 351 | while ((pid = waitpid(-1, &status, WNOHANG)) > 0 || |
344 | (pid < 0 && errno == EINTR)) | 352 | (pid < 0 && errno == EINTR)) |
345 | ; | 353 | ; |
346 | |||
347 | signal(SIGCHLD, main_sigchld_handler); | ||
348 | errno = save_errno; | 354 | errno = save_errno; |
349 | } | 355 | } |
350 | 356 | ||
@@ -457,16 +463,12 @@ sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out) | |||
457 | logit("Client version \"%.100s\" uses unsafe RSA signature " | 463 | logit("Client version \"%.100s\" uses unsafe RSA signature " |
458 | "scheme; disabling use of RSA keys", remote_version); | 464 | "scheme; disabling use of RSA keys", remote_version); |
459 | } | 465 | } |
460 | if ((ssh->compat & SSH_BUG_DERIVEKEY) != 0) { | ||
461 | fatal("Client version \"%.100s\" uses unsafe key agreement; " | ||
462 | "refusing connection", remote_version); | ||
463 | } | ||
464 | 466 | ||
465 | chop(server_version_string); | 467 | chop(server_version_string); |
466 | debug("Local version string %.200s", server_version_string); | 468 | debug("Local version string %.200s", server_version_string); |
467 | 469 | ||
468 | if (remote_major != 2 || | 470 | if (remote_major != 2 && |
469 | (remote_major == 1 && remote_minor != 99)) { | 471 | !(remote_major == 1 && remote_minor == 99)) { |
470 | s = "Protocol major versions differ.\n"; | 472 | s = "Protocol major versions differ.\n"; |
471 | (void) atomicio(vwrite, sock_out, s, strlen(s)); | 473 | (void) atomicio(vwrite, sock_out, s, strlen(s)); |
472 | close(sock_in); | 474 | close(sock_in); |
@@ -483,7 +485,7 @@ sshd_exchange_identification(struct ssh *ssh, int sock_in, int sock_out) | |||
483 | void | 485 | void |
484 | destroy_sensitive_data(void) | 486 | destroy_sensitive_data(void) |
485 | { | 487 | { |
486 | int i; | 488 | u_int i; |
487 | 489 | ||
488 | for (i = 0; i < options.num_host_key_files; i++) { | 490 | for (i = 0; i < options.num_host_key_files; i++) { |
489 | if (sensitive_data.host_keys[i]) { | 491 | if (sensitive_data.host_keys[i]) { |
@@ -502,7 +504,7 @@ void | |||
502 | demote_sensitive_data(void) | 504 | demote_sensitive_data(void) |
503 | { | 505 | { |
504 | struct sshkey *tmp; | 506 | struct sshkey *tmp; |
505 | int i; | 507 | u_int i; |
506 | 508 | ||
507 | for (i = 0; i < options.num_host_key_files; i++) { | 509 | for (i = 0; i < options.num_host_key_files; i++) { |
508 | if (sensitive_data.host_keys[i]) { | 510 | if (sensitive_data.host_keys[i]) { |
@@ -701,7 +703,7 @@ list_hostkey_types(void) | |||
701 | Buffer b; | 703 | Buffer b; |
702 | const char *p; | 704 | const char *p; |
703 | char *ret; | 705 | char *ret; |
704 | int i; | 706 | u_int i; |
705 | struct sshkey *key; | 707 | struct sshkey *key; |
706 | 708 | ||
707 | buffer_init(&b); | 709 | buffer_init(&b); |
@@ -723,6 +725,7 @@ list_hostkey_types(void) | |||
723 | case KEY_DSA: | 725 | case KEY_DSA: |
724 | case KEY_ECDSA: | 726 | case KEY_ECDSA: |
725 | case KEY_ED25519: | 727 | case KEY_ED25519: |
728 | case KEY_XMSS: | ||
726 | if (buffer_len(&b) > 0) | 729 | if (buffer_len(&b) > 0) |
727 | buffer_append(&b, ",", 1); | 730 | buffer_append(&b, ",", 1); |
728 | p = key_ssh_name(key); | 731 | p = key_ssh_name(key); |
@@ -744,6 +747,7 @@ list_hostkey_types(void) | |||
744 | case KEY_DSA_CERT: | 747 | case KEY_DSA_CERT: |
745 | case KEY_ECDSA_CERT: | 748 | case KEY_ECDSA_CERT: |
746 | case KEY_ED25519_CERT: | 749 | case KEY_ED25519_CERT: |
750 | case KEY_XMSS_CERT: | ||
747 | if (buffer_len(&b) > 0) | 751 | if (buffer_len(&b) > 0) |
748 | buffer_append(&b, ",", 1); | 752 | buffer_append(&b, ",", 1); |
749 | p = key_ssh_name(key); | 753 | p = key_ssh_name(key); |
@@ -761,7 +765,7 @@ list_hostkey_types(void) | |||
761 | static struct sshkey * | 765 | static struct sshkey * |
762 | get_hostkey_by_type(int type, int nid, int need_private, struct ssh *ssh) | 766 | get_hostkey_by_type(int type, int nid, int need_private, struct ssh *ssh) |
763 | { | 767 | { |
764 | int i; | 768 | u_int i; |
765 | struct sshkey *key; | 769 | struct sshkey *key; |
766 | 770 | ||
767 | for (i = 0; i < options.num_host_key_files; i++) { | 771 | for (i = 0; i < options.num_host_key_files; i++) { |
@@ -770,6 +774,7 @@ get_hostkey_by_type(int type, int nid, int need_private, struct ssh *ssh) | |||
770 | case KEY_DSA_CERT: | 774 | case KEY_DSA_CERT: |
771 | case KEY_ECDSA_CERT: | 775 | case KEY_ECDSA_CERT: |
772 | case KEY_ED25519_CERT: | 776 | case KEY_ED25519_CERT: |
777 | case KEY_XMSS_CERT: | ||
773 | key = sensitive_data.host_certificates[i]; | 778 | key = sensitive_data.host_certificates[i]; |
774 | break; | 779 | break; |
775 | default: | 780 | default: |
@@ -801,7 +806,7 @@ get_hostkey_private_by_type(int type, int nid, struct ssh *ssh) | |||
801 | struct sshkey * | 806 | struct sshkey * |
802 | get_hostkey_by_index(int ind) | 807 | get_hostkey_by_index(int ind) |
803 | { | 808 | { |
804 | if (ind < 0 || ind >= options.num_host_key_files) | 809 | if (ind < 0 || (u_int)ind >= options.num_host_key_files) |
805 | return (NULL); | 810 | return (NULL); |
806 | return (sensitive_data.host_keys[ind]); | 811 | return (sensitive_data.host_keys[ind]); |
807 | } | 812 | } |
@@ -809,7 +814,7 @@ get_hostkey_by_index(int ind) | |||
809 | struct sshkey * | 814 | struct sshkey * |
810 | get_hostkey_public_by_index(int ind, struct ssh *ssh) | 815 | get_hostkey_public_by_index(int ind, struct ssh *ssh) |
811 | { | 816 | { |
812 | if (ind < 0 || ind >= options.num_host_key_files) | 817 | if (ind < 0 || (u_int)ind >= options.num_host_key_files) |
813 | return (NULL); | 818 | return (NULL); |
814 | return (sensitive_data.host_pubkeys[ind]); | 819 | return (sensitive_data.host_pubkeys[ind]); |
815 | } | 820 | } |
@@ -817,7 +822,7 @@ get_hostkey_public_by_index(int ind, struct ssh *ssh) | |||
817 | int | 822 | int |
818 | get_hostkey_index(struct sshkey *key, int compare, struct ssh *ssh) | 823 | get_hostkey_index(struct sshkey *key, int compare, struct ssh *ssh) |
819 | { | 824 | { |
820 | int i; | 825 | u_int i; |
821 | 826 | ||
822 | for (i = 0; i < options.num_host_key_files; i++) { | 827 | for (i = 0; i < options.num_host_key_files; i++) { |
823 | if (key_is_cert(key)) { | 828 | if (key_is_cert(key)) { |
@@ -846,7 +851,8 @@ notify_hostkeys(struct ssh *ssh) | |||
846 | { | 851 | { |
847 | struct sshbuf *buf; | 852 | struct sshbuf *buf; |
848 | struct sshkey *key; | 853 | struct sshkey *key; |
849 | int i, nkeys, r; | 854 | u_int i, nkeys; |
855 | int r; | ||
850 | char *fp; | 856 | char *fp; |
851 | 857 | ||
852 | /* Some clients cannot cope with the hostkeys message, skip those. */ | 858 | /* Some clients cannot cope with the hostkeys message, skip those. */ |
@@ -877,7 +883,7 @@ notify_hostkeys(struct ssh *ssh) | |||
877 | packet_put_string(sshbuf_ptr(buf), sshbuf_len(buf)); | 883 | packet_put_string(sshbuf_ptr(buf), sshbuf_len(buf)); |
878 | nkeys++; | 884 | nkeys++; |
879 | } | 885 | } |
880 | debug3("%s: sent %d hostkeys", __func__, nkeys); | 886 | debug3("%s: sent %u hostkeys", __func__, nkeys); |
881 | if (nkeys == 0) | 887 | if (nkeys == 0) |
882 | fatal("%s: no hostkeys", __func__); | 888 | fatal("%s: no hostkeys", __func__); |
883 | packet_send(); | 889 | packet_send(); |
@@ -1030,13 +1036,13 @@ server_accept_inetd(int *sock_in, int *sock_out) | |||
1030 | * Listen for TCP connections | 1036 | * Listen for TCP connections |
1031 | */ | 1037 | */ |
1032 | static void | 1038 | static void |
1033 | server_listen(void) | 1039 | listen_on_addrs(struct listenaddr *la) |
1034 | { | 1040 | { |
1035 | int ret, listen_sock, on = 1; | 1041 | int ret, listen_sock; |
1036 | struct addrinfo *ai; | 1042 | struct addrinfo *ai; |
1037 | char ntop[NI_MAXHOST], strport[NI_MAXSERV]; | 1043 | char ntop[NI_MAXHOST], strport[NI_MAXSERV]; |
1038 | 1044 | ||
1039 | for (ai = options.listen_addrs; ai; ai = ai->ai_next) { | 1045 | for (ai = la->addrs; ai; ai = ai->ai_next) { |
1040 | if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6) | 1046 | if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6) |
1041 | continue; | 1047 | continue; |
1042 | if (num_listen_socks >= MAX_LISTEN_SOCKS) | 1048 | if (num_listen_socks >= MAX_LISTEN_SOCKS) |
@@ -1066,13 +1072,13 @@ server_listen(void) | |||
1066 | close(listen_sock); | 1072 | close(listen_sock); |
1067 | continue; | 1073 | continue; |
1068 | } | 1074 | } |
1069 | /* | 1075 | /* Socket options */ |
1070 | * Set socket options. | 1076 | set_reuseaddr(listen_sock); |
1071 | * Allow local port reuse in TIME_WAIT. | 1077 | if (la->rdomain != NULL && |
1072 | */ | 1078 | set_rdomain(listen_sock, la->rdomain) == -1) { |
1073 | if (setsockopt(listen_sock, SOL_SOCKET, SO_REUSEADDR, | 1079 | close(listen_sock); |
1074 | &on, sizeof(on)) == -1) | 1080 | continue; |
1075 | error("setsockopt SO_REUSEADDR: %s", strerror(errno)); | 1081 | } |
1076 | 1082 | ||
1077 | /* Only communicate in IPv6 over AF_INET6 sockets. */ | 1083 | /* Only communicate in IPv6 over AF_INET6 sockets. */ |
1078 | if (ai->ai_family == AF_INET6) | 1084 | if (ai->ai_family == AF_INET6) |
@@ -1094,9 +1100,28 @@ server_listen(void) | |||
1094 | if (listen(listen_sock, SSH_LISTEN_BACKLOG) < 0) | 1100 | if (listen(listen_sock, SSH_LISTEN_BACKLOG) < 0) |
1095 | fatal("listen on [%s]:%s: %.100s", | 1101 | fatal("listen on [%s]:%s: %.100s", |
1096 | ntop, strport, strerror(errno)); | 1102 | ntop, strport, strerror(errno)); |
1097 | logit("Server listening on %s port %s.", ntop, strport); | 1103 | logit("Server listening on %s port %s%s%s.", |
1104 | ntop, strport, | ||
1105 | la->rdomain == NULL ? "" : " rdomain ", | ||
1106 | la->rdomain == NULL ? "" : la->rdomain); | ||
1107 | } | ||
1108 | } | ||
1109 | |||
1110 | static void | ||
1111 | server_listen(void) | ||
1112 | { | ||
1113 | u_int i; | ||
1114 | |||
1115 | for (i = 0; i < options.num_listen_addrs; i++) { | ||
1116 | listen_on_addrs(&options.listen_addrs[i]); | ||
1117 | freeaddrinfo(options.listen_addrs[i].addrs); | ||
1118 | free(options.listen_addrs[i].rdomain); | ||
1119 | memset(&options.listen_addrs[i], 0, | ||
1120 | sizeof(options.listen_addrs[i])); | ||
1098 | } | 1121 | } |
1099 | freeaddrinfo(options.listen_addrs); | 1122 | free(options.listen_addrs); |
1123 | options.listen_addrs = NULL; | ||
1124 | options.num_listen_addrs = 0; | ||
1100 | 1125 | ||
1101 | if (!num_listen_socks) | 1126 | if (!num_listen_socks) |
1102 | fatal("Cannot bind any address."); | 1127 | fatal("Cannot bind any address."); |
@@ -1364,6 +1389,46 @@ check_ip_options(struct ssh *ssh) | |||
1364 | #endif /* IP_OPTIONS */ | 1389 | #endif /* IP_OPTIONS */ |
1365 | } | 1390 | } |
1366 | 1391 | ||
1392 | /* Set the routing domain for this process */ | ||
1393 | static void | ||
1394 | set_process_rdomain(struct ssh *ssh, const char *name) | ||
1395 | { | ||
1396 | #if defined(HAVE_SYS_SET_PROCESS_RDOMAIN) | ||
1397 | if (name == NULL) | ||
1398 | return; /* default */ | ||
1399 | |||
1400 | if (strcmp(name, "%D") == 0) { | ||
1401 | /* "expands" to routing domain of connection */ | ||
1402 | if ((name = ssh_packet_rdomain_in(ssh)) == NULL) | ||
1403 | return; | ||
1404 | } | ||
1405 | /* NB. We don't pass 'ssh' to sys_set_process_rdomain() */ | ||
1406 | return sys_set_process_rdomain(name); | ||
1407 | #elif defined(__OpenBSD__) | ||
1408 | int rtable, ortable = getrtable(); | ||
1409 | const char *errstr; | ||
1410 | |||
1411 | if (name == NULL) | ||
1412 | return; /* default */ | ||
1413 | |||
1414 | if (strcmp(name, "%D") == 0) { | ||
1415 | /* "expands" to routing domain of connection */ | ||
1416 | if ((name = ssh_packet_rdomain_in(ssh)) == NULL) | ||
1417 | return; | ||
1418 | } | ||
1419 | |||
1420 | rtable = (int)strtonum(name, 0, 255, &errstr); | ||
1421 | if (errstr != NULL) /* Shouldn't happen */ | ||
1422 | fatal("Invalid routing domain \"%s\": %s", name, errstr); | ||
1423 | if (rtable != ortable && setrtable(rtable) != 0) | ||
1424 | fatal("Unable to set routing domain %d: %s", | ||
1425 | rtable, strerror(errno)); | ||
1426 | debug("%s: set routing domain %d (was %d)", __func__, rtable, ortable); | ||
1427 | #else /* defined(__OpenBSD__) */ | ||
1428 | fatal("Unable to set routing domain: not supported in this platform"); | ||
1429 | #endif | ||
1430 | } | ||
1431 | |||
1367 | /* | 1432 | /* |
1368 | * Main program for the daemon. | 1433 | * Main program for the daemon. |
1369 | */ | 1434 | */ |
@@ -1373,20 +1438,19 @@ main(int ac, char **av) | |||
1373 | struct ssh *ssh = NULL; | 1438 | struct ssh *ssh = NULL; |
1374 | extern char *optarg; | 1439 | extern char *optarg; |
1375 | extern int optind; | 1440 | extern int optind; |
1376 | int r, opt, i, j, on = 1, already_daemon; | 1441 | int r, opt, on = 1, already_daemon, remote_port; |
1377 | int sock_in = -1, sock_out = -1, newsock = -1; | 1442 | int sock_in = -1, sock_out = -1, newsock = -1; |
1378 | const char *remote_ip; | 1443 | const char *remote_ip, *rdomain; |
1379 | int remote_port; | ||
1380 | char *fp, *line, *laddr, *logfile = NULL; | 1444 | char *fp, *line, *laddr, *logfile = NULL; |
1381 | int config_s[2] = { -1 , -1 }; | 1445 | int config_s[2] = { -1 , -1 }; |
1382 | u_int n; | 1446 | u_int i, j; |
1383 | u_int64_t ibytes, obytes; | 1447 | u_int64_t ibytes, obytes; |
1384 | mode_t new_umask; | 1448 | mode_t new_umask; |
1385 | struct sshkey *key; | 1449 | struct sshkey *key; |
1386 | struct sshkey *pubkey; | 1450 | struct sshkey *pubkey; |
1387 | int keytype; | 1451 | int keytype; |
1388 | Authctxt *authctxt; | 1452 | Authctxt *authctxt; |
1389 | struct connection_info *connection_info = get_connection_info(0, 0); | 1453 | struct connection_info *connection_info = NULL; |
1390 | 1454 | ||
1391 | ssh_malloc_init(); /* must be called before any mallocs */ | 1455 | ssh_malloc_init(); /* must be called before any mallocs */ |
1392 | 1456 | ||
@@ -1399,7 +1463,7 @@ main(int ac, char **av) | |||
1399 | saved_argc = ac; | 1463 | saved_argc = ac; |
1400 | rexec_argc = ac; | 1464 | rexec_argc = ac; |
1401 | saved_argv = xcalloc(ac + 1, sizeof(*saved_argv)); | 1465 | saved_argv = xcalloc(ac + 1, sizeof(*saved_argv)); |
1402 | for (i = 0; i < ac; i++) | 1466 | for (i = 0; (int)i < ac; i++) |
1403 | saved_argv[i] = xstrdup(av[i]); | 1467 | saved_argv[i] = xstrdup(av[i]); |
1404 | saved_argv[i] = NULL; | 1468 | saved_argv[i] = NULL; |
1405 | 1469 | ||
@@ -1432,12 +1496,8 @@ main(int ac, char **av) | |||
1432 | config_file_name = optarg; | 1496 | config_file_name = optarg; |
1433 | break; | 1497 | break; |
1434 | case 'c': | 1498 | case 'c': |
1435 | if (options.num_host_cert_files >= MAX_HOSTCERTS) { | 1499 | servconf_add_hostcert("[command-line]", 0, |
1436 | fprintf(stderr, "too many host certificates.\n"); | 1500 | &options, optarg); |
1437 | exit(1); | ||
1438 | } | ||
1439 | options.host_cert_files[options.num_host_cert_files++] = | ||
1440 | derelativise_path(optarg); | ||
1441 | break; | 1501 | break; |
1442 | case 'd': | 1502 | case 'd': |
1443 | if (debug_flag == 0) { | 1503 | if (debug_flag == 0) { |
@@ -1496,12 +1556,8 @@ main(int ac, char **av) | |||
1496 | /* protocol 1, ignored */ | 1556 | /* protocol 1, ignored */ |
1497 | break; | 1557 | break; |
1498 | case 'h': | 1558 | case 'h': |
1499 | if (options.num_host_key_files >= MAX_HOSTKEYS) { | 1559 | servconf_add_hostkey("[command-line]", 0, |
1500 | fprintf(stderr, "too many host keys.\n"); | 1560 | &options, optarg); |
1501 | exit(1); | ||
1502 | } | ||
1503 | options.host_key_files[options.num_host_key_files++] = | ||
1504 | derelativise_path(optarg); | ||
1505 | break; | 1561 | break; |
1506 | case 't': | 1562 | case 't': |
1507 | test_flag = 1; | 1563 | test_flag = 1; |
@@ -1510,6 +1566,7 @@ main(int ac, char **av) | |||
1510 | test_flag = 2; | 1566 | test_flag = 2; |
1511 | break; | 1567 | break; |
1512 | case 'C': | 1568 | case 'C': |
1569 | connection_info = get_connection_info(0, 0); | ||
1513 | if (parse_server_match_testspec(connection_info, | 1570 | if (parse_server_match_testspec(connection_info, |
1514 | optarg) == -1) | 1571 | optarg) == -1) |
1515 | exit(1); | 1572 | exit(1); |
@@ -1568,24 +1625,13 @@ main(int ac, char **av) | |||
1568 | if (getenv("KRB5CCNAME") != NULL) | 1625 | if (getenv("KRB5CCNAME") != NULL) |
1569 | (void) unsetenv("KRB5CCNAME"); | 1626 | (void) unsetenv("KRB5CCNAME"); |
1570 | 1627 | ||
1571 | #ifdef _UNICOS | ||
1572 | /* Cray can define user privs drop all privs now! | ||
1573 | * Not needed on PRIV_SU systems! | ||
1574 | */ | ||
1575 | drop_cray_privs(); | ||
1576 | #endif | ||
1577 | |||
1578 | sensitive_data.have_ssh2_key = 0; | 1628 | sensitive_data.have_ssh2_key = 0; |
1579 | 1629 | ||
1580 | /* | 1630 | /* |
1581 | * If we're doing an extended config test, make sure we have all of | 1631 | * If we're not doing an extended test do not silently ignore connection |
1582 | * the parameters we need. If we're not doing an extended test, | 1632 | * test params. |
1583 | * do not silently ignore connection test params. | ||
1584 | */ | 1633 | */ |
1585 | if (test_flag >= 2 && server_match_spec_complete(connection_info) == 0) | 1634 | if (test_flag < 2 && connection_info != NULL) |
1586 | fatal("user, host and addr are all required when testing " | ||
1587 | "Match configs"); | ||
1588 | if (test_flag < 2 && server_match_spec_complete(connection_info) >= 0) | ||
1589 | fatal("Config test connection parameter (-C) provided without " | 1635 | fatal("Config test connection parameter (-C) provided without " |
1590 | "test mode (-T)"); | 1636 | "test mode (-T)"); |
1591 | 1637 | ||
@@ -1627,12 +1673,12 @@ main(int ac, char **av) | |||
1627 | * and warns for trivial misconfigurations that could break login. | 1673 | * and warns for trivial misconfigurations that could break login. |
1628 | */ | 1674 | */ |
1629 | if (options.num_auth_methods != 0) { | 1675 | if (options.num_auth_methods != 0) { |
1630 | for (n = 0; n < options.num_auth_methods; n++) { | 1676 | for (i = 0; i < options.num_auth_methods; i++) { |
1631 | if (auth2_methods_valid(options.auth_methods[n], | 1677 | if (auth2_methods_valid(options.auth_methods[i], |
1632 | 1) == 0) | 1678 | 1) == 0) |
1633 | break; | 1679 | break; |
1634 | } | 1680 | } |
1635 | if (n >= options.num_auth_methods) | 1681 | if (i >= options.num_auth_methods) |
1636 | fatal("AuthenticationMethods cannot be satisfied by " | 1682 | fatal("AuthenticationMethods cannot be satisfied by " |
1637 | "enabled authentication methods"); | 1683 | "enabled authentication methods"); |
1638 | } | 1684 | } |
@@ -1658,10 +1704,8 @@ main(int ac, char **av) | |||
1658 | fatal("Privilege separation user %s does not exist", | 1704 | fatal("Privilege separation user %s does not exist", |
1659 | SSH_PRIVSEP_USER); | 1705 | SSH_PRIVSEP_USER); |
1660 | } else { | 1706 | } else { |
1661 | explicit_bzero(privsep_pw->pw_passwd, | ||
1662 | strlen(privsep_pw->pw_passwd)); | ||
1663 | privsep_pw = pwcopy(privsep_pw); | 1707 | privsep_pw = pwcopy(privsep_pw); |
1664 | free(privsep_pw->pw_passwd); | 1708 | freezero(privsep_pw->pw_passwd, strlen(privsep_pw->pw_passwd)); |
1665 | privsep_pw->pw_passwd = xstrdup("*"); | 1709 | privsep_pw->pw_passwd = xstrdup("*"); |
1666 | } | 1710 | } |
1667 | endpwent(); | 1711 | endpwent(); |
@@ -1713,6 +1757,7 @@ main(int ac, char **av) | |||
1713 | case KEY_DSA: | 1757 | case KEY_DSA: |
1714 | case KEY_ECDSA: | 1758 | case KEY_ECDSA: |
1715 | case KEY_ED25519: | 1759 | case KEY_ED25519: |
1760 | case KEY_XMSS: | ||
1716 | if (have_agent || key != NULL) | 1761 | if (have_agent || key != NULL) |
1717 | sensitive_data.have_ssh2_key = 1; | 1762 | sensitive_data.have_ssh2_key = 1; |
1718 | break; | 1763 | break; |
@@ -1771,7 +1816,7 @@ main(int ac, char **av) | |||
1771 | continue; | 1816 | continue; |
1772 | } | 1817 | } |
1773 | sensitive_data.host_certificates[j] = key; | 1818 | sensitive_data.host_certificates[j] = key; |
1774 | debug("host certificate: #%d type %d %s", j, key->type, | 1819 | debug("host certificate: #%u type %d %s", j, key->type, |
1775 | key_type(key)); | 1820 | key_type(key)); |
1776 | } | 1821 | } |
1777 | 1822 | ||
@@ -1795,8 +1840,13 @@ main(int ac, char **av) | |||
1795 | } | 1840 | } |
1796 | 1841 | ||
1797 | if (test_flag > 1) { | 1842 | if (test_flag > 1) { |
1798 | if (server_match_spec_complete(connection_info) == 1) | 1843 | /* |
1799 | parse_server_match_config(&options, connection_info); | 1844 | * If no connection info was provided by -C then use |
1845 | * use a blank one that will cause no predicate to match. | ||
1846 | */ | ||
1847 | if (connection_info == NULL) | ||
1848 | connection_info = get_connection_info(0, 0); | ||
1849 | parse_server_match_config(&options, connection_info); | ||
1800 | dump_config(&options); | 1850 | dump_config(&options); |
1801 | } | 1851 | } |
1802 | 1852 | ||
@@ -1815,8 +1865,10 @@ main(int ac, char **av) | |||
1815 | debug("setgroups() failed: %.200s", strerror(errno)); | 1865 | debug("setgroups() failed: %.200s", strerror(errno)); |
1816 | 1866 | ||
1817 | if (rexec_flag) { | 1867 | if (rexec_flag) { |
1868 | if (rexec_argc < 0) | ||
1869 | fatal("rexec_argc %d < 0", rexec_argc); | ||
1818 | rexec_argv = xcalloc(rexec_argc + 2, sizeof(char *)); | 1870 | rexec_argv = xcalloc(rexec_argc + 2, sizeof(char *)); |
1819 | for (i = 0; i < rexec_argc; i++) { | 1871 | for (i = 0; i < (u_int)rexec_argc; i++) { |
1820 | debug("rexec_argv[%d]='%s'", i, saved_argv[i]); | 1872 | debug("rexec_argv[%d]='%s'", i, saved_argv[i]); |
1821 | rexec_argv[i] = saved_argv[i]; | 1873 | rexec_argv[i] = saved_argv[i]; |
1822 | } | 1874 | } |
@@ -1994,6 +2046,9 @@ main(int ac, char **av) | |||
1994 | cleanup_exit(255); | 2046 | cleanup_exit(255); |
1995 | } | 2047 | } |
1996 | 2048 | ||
2049 | if (options.routing_domain != NULL) | ||
2050 | set_process_rdomain(ssh, options.routing_domain); | ||
2051 | |||
1997 | /* | 2052 | /* |
1998 | * The rest of the code depends on the fact that | 2053 | * The rest of the code depends on the fact that |
1999 | * ssh_remote_ipaddr() caches the remote ip, even if | 2054 | * ssh_remote_ipaddr() caches the remote ip, even if |
@@ -2023,10 +2078,15 @@ main(int ac, char **av) | |||
2023 | } | 2078 | } |
2024 | #endif /* LIBWRAP */ | 2079 | #endif /* LIBWRAP */ |
2025 | 2080 | ||
2081 | rdomain = ssh_packet_rdomain_in(ssh); | ||
2082 | |||
2026 | /* Log the connection. */ | 2083 | /* Log the connection. */ |
2027 | laddr = get_local_ipaddr(sock_in); | 2084 | laddr = get_local_ipaddr(sock_in); |
2028 | verbose("Connection from %s port %d on %s port %d", | 2085 | verbose("Connection from %s port %d on %s port %d%s%s%s", |
2029 | remote_ip, remote_port, laddr, ssh_local_port(ssh)); | 2086 | remote_ip, remote_port, laddr, ssh_local_port(ssh), |
2087 | rdomain == NULL ? "" : " rdomain \"", | ||
2088 | rdomain == NULL ? "" : rdomain, | ||
2089 | rdomain == NULL ? "" : "\""); | ||
2030 | free(laddr); | 2090 | free(laddr); |
2031 | 2091 | ||
2032 | #ifdef USE_SECURITY_SESSION_API | 2092 | #ifdef USE_SECURITY_SESSION_API |
@@ -2106,6 +2166,10 @@ main(int ac, char **av) | |||
2106 | /* XXX global for cleanup, access from other modules */ | 2166 | /* XXX global for cleanup, access from other modules */ |
2107 | the_authctxt = authctxt; | 2167 | the_authctxt = authctxt; |
2108 | 2168 | ||
2169 | /* Set default key authentication options */ | ||
2170 | if ((auth_opts = sshauthopt_new_with_keys_defaults()) == NULL) | ||
2171 | fatal("allocation failed"); | ||
2172 | |||
2109 | /* prepare buffer to collect messages to display to user after login */ | 2173 | /* prepare buffer to collect messages to display to user after login */ |
2110 | buffer_init(&loginmsg); | 2174 | buffer_init(&loginmsg); |
2111 | auth_debug_reset(); | 2175 | auth_debug_reset(); |
@@ -2162,7 +2226,7 @@ main(int ac, char **av) | |||
2162 | #ifdef USE_PAM | 2226 | #ifdef USE_PAM |
2163 | if (options.use_pam) { | 2227 | if (options.use_pam) { |
2164 | do_pam_setcred(1); | 2228 | do_pam_setcred(1); |
2165 | do_pam_session(); | 2229 | do_pam_session(ssh); |
2166 | } | 2230 | } |
2167 | #endif | 2231 | #endif |
2168 | 2232 | ||
diff --git a/sshd_config b/sshd_config index a32dc1d46..31e14a4f0 100644 --- a/sshd_config +++ b/sshd_config | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $ | 1 | # $OpenBSD: sshd_config,v 1.102 2018/02/16 02:32:40 djm 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. |
diff --git a/sshd_config.0 b/sshd_config.0 index 678ee14b4..95c17fc8d 100644 --- a/sshd_config.0 +++ b/sshd_config.0 | |||
@@ -6,9 +6,10 @@ NAME | |||
6 | DESCRIPTION | 6 | DESCRIPTION |
7 | sshd(8) reads configuration data from /etc/ssh/sshd_config (or the file | 7 | sshd(8) reads configuration data from /etc/ssh/sshd_config (or the file |
8 | specified with -f on the command line). The file contains keyword- | 8 | specified with -f on the command line). The file contains keyword- |
9 | argument pairs, one per line. Lines starting with M-bM-^@M-^X#M-bM-^@M-^Y and empty lines | 9 | argument pairs, one per line. For each keyword, the first obtained value |
10 | are interpreted as comments. Arguments may optionally be enclosed in | 10 | will be used. Lines starting with M-bM-^@M-^X#M-bM-^@M-^Y and empty lines are interpreted as |
11 | double quotes (") in order to represent arguments containing spaces. | 11 | comments. Arguments may optionally be enclosed in double quotes (") in |
12 | order to represent arguments containing spaces. | ||
12 | 13 | ||
13 | The possible keywords and their meanings are as follows (note that | 14 | The possible keywords and their meanings are as follows (note that |
14 | keywords are case-insensitive and arguments are case-sensitive): | 15 | keywords are case-insensitive and arguments are case-sensitive): |
@@ -422,9 +423,8 @@ DESCRIPTION | |||
422 | 423 | ||
423 | HostKey | 424 | HostKey |
424 | Specifies a file containing a private host key used by SSH. The | 425 | Specifies a file containing a private host key used by SSH. The |
425 | defaults are /etc/ssh/ssh_host_dsa_key, | 426 | defaults are /etc/ssh/ssh_host_ecdsa_key, |
426 | /etc/ssh/ssh_host_ecdsa_key, /etc/ssh/ssh_host_ed25519_key and | 427 | /etc/ssh/ssh_host_ed25519_key and /etc/ssh/ssh_host_rsa_key. |
427 | /etc/ssh/ssh_host_rsa_key. | ||
428 | 428 | ||
429 | Note that sshd(8) will refuse to use a file if it is group/world- | 429 | Note that sshd(8) will refuse to use a file if it is group/world- |
430 | accessible and that the HostKeyAlgorithms option restricts which | 430 | accessible and that the HostKeyAlgorithms option restricts which |
@@ -465,8 +465,9 @@ DESCRIPTION | |||
465 | 465 | ||
466 | IgnoreUserKnownHosts | 466 | IgnoreUserKnownHosts |
467 | Specifies whether sshd(8) should ignore the user's | 467 | Specifies whether sshd(8) should ignore the user's |
468 | ~/.ssh/known_hosts during HostbasedAuthentication. The default | 468 | ~/.ssh/known_hosts during HostbasedAuthentication and use only |
469 | is no. | 469 | the system-wide known hosts file /etc/ssh/known_hosts. The |
470 | default is no. | ||
470 | 471 | ||
471 | IPQoS Specifies the IPv4 type-of-service or DSCP class for the | 472 | IPQoS Specifies the IPv4 type-of-service or DSCP class for the |
472 | connection. Accepted values are af11, af12, af13, af21, af22, | 473 | connection. Accepted values are af11, af12, af13, af21, af22, |
@@ -521,6 +522,9 @@ DESCRIPTION | |||
521 | curve25519-sha256@libssh.org | 522 | curve25519-sha256@libssh.org |
522 | diffie-hellman-group1-sha1 | 523 | diffie-hellman-group1-sha1 |
523 | diffie-hellman-group14-sha1 | 524 | diffie-hellman-group14-sha1 |
525 | diffie-hellman-group14-sha256 | ||
526 | diffie-hellman-group16-sha512 | ||
527 | diffie-hellman-group18-sha512 | ||
524 | diffie-hellman-group-exchange-sha1 | 528 | diffie-hellman-group-exchange-sha1 |
525 | diffie-hellman-group-exchange-sha256 | 529 | diffie-hellman-group-exchange-sha256 |
526 | ecdh-sha2-nistp256 | 530 | ecdh-sha2-nistp256 |
@@ -532,7 +536,8 @@ DESCRIPTION | |||
532 | curve25519-sha256,curve25519-sha256@libssh.org, | 536 | curve25519-sha256,curve25519-sha256@libssh.org, |
533 | ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, | 537 | ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, |
534 | diffie-hellman-group-exchange-sha256, | 538 | diffie-hellman-group-exchange-sha256, |
535 | diffie-hellman-group14-sha1 | 539 | diffie-hellman-group16-sha512,diffie-hellman-group18-sha512, |
540 | diffie-hellman-group14-sha256,diffie-hellman-group14-sha1 | ||
536 | 541 | ||
537 | The list of available key exchange algorithms may also be | 542 | The list of available key exchange algorithms may also be |
538 | obtained using "ssh -Q kex". | 543 | obtained using "ssh -Q kex". |
@@ -541,13 +546,18 @@ DESCRIPTION | |||
541 | Specifies the local addresses sshd(8) should listen on. The | 546 | Specifies the local addresses sshd(8) should listen on. The |
542 | following forms may be used: | 547 | following forms may be used: |
543 | 548 | ||
544 | ListenAddress host|IPv4_addr|IPv6_addr | 549 | ListenAddress hostname|address [rdomain domain] |
545 | ListenAddress host|IPv4_addr:port | 550 | ListenAddress hostname:port [rdomain domain] |
546 | ListenAddress [host|IPv6_addr]:port | 551 | ListenAddress IPv4_address:port [rdomain domain] |
552 | ListenAddress [hostname|address]:port [rdomain domain] | ||
547 | 553 | ||
548 | If port is not specified, sshd will listen on the address and all | 554 | The optional rdomain qualifier requests sshd(8) listen in an |
549 | Port options specified. The default is to listen on all local | 555 | explicit routing domain. If port is not specified, sshd will |
550 | addresses. Multiple ListenAddress options are permitted. | 556 | listen on the address and all Port options specified. The |
557 | default is to listen on all local addresses on the current | ||
558 | default routing domain. Multiple ListenAddress options are | ||
559 | permitted. For more information on routing domains, see | ||
560 | rdomain(4). | ||
551 | 561 | ||
552 | LoginGraceTime | 562 | LoginGraceTime |
553 | The server disconnects after this time if the user has not | 563 | The server disconnects after this time if the user has not |
@@ -612,10 +622,13 @@ DESCRIPTION | |||
612 | 622 | ||
613 | The arguments to Match are one or more criteria-pattern pairs or | 623 | The arguments to Match are one or more criteria-pattern pairs or |
614 | the single token All which matches all criteria. The available | 624 | the single token All which matches all criteria. The available |
615 | criteria are User, Group, Host, LocalAddress, LocalPort, and | 625 | criteria are User, Group, Host, LocalAddress, LocalPort, RDomain, |
616 | Address. The match patterns may consist of single entries or | 626 | and Address (with RDomain representing the rdomain(4) on which |
617 | comma-separated lists and may use the wildcard and negation | 627 | the connection was received.) |
618 | operators described in the PATTERNS section of ssh_config(5). | 628 | |
629 | The match patterns may consist of single entries or comma- | ||
630 | separated lists and may use the wildcard and negation operators | ||
631 | described in the PATTERNS section of ssh_config(5). | ||
619 | 632 | ||
620 | The patterns in an Address criteria may additionally contain | 633 | The patterns in an Address criteria may additionally contain |
621 | addresses to match in CIDR address/masklen format, such as | 634 | addresses to match in CIDR address/masklen format, such as |
@@ -640,7 +653,7 @@ DESCRIPTION | |||
640 | MaxAuthTries, MaxSessions, PasswordAuthentication, | 653 | MaxAuthTries, MaxSessions, PasswordAuthentication, |
641 | PermitEmptyPasswords, PermitOpen, PermitRootLogin, PermitTTY, | 654 | PermitEmptyPasswords, PermitOpen, PermitRootLogin, PermitTTY, |
642 | PermitTunnel, PermitUserRC, PubkeyAcceptedKeyTypes, | 655 | PermitTunnel, PermitUserRC, PubkeyAcceptedKeyTypes, |
643 | PubkeyAuthentication, RekeyLimit, RevokedKeys, | 656 | PubkeyAuthentication, RekeyLimit, RevokedKeys, RDomain, |
644 | StreamLocalBindMask, StreamLocalBindUnlink, TrustedUserCAKeys, | 657 | StreamLocalBindMask, StreamLocalBindUnlink, TrustedUserCAKeys, |
645 | X11DisplayOffset, X11Forwarding and X11UseLocalHost. | 658 | X11DisplayOffset, X11Forwarding and X11UseLocalHost. |
646 | 659 | ||
@@ -700,12 +713,12 @@ DESCRIPTION | |||
700 | 713 | ||
701 | PermitRootLogin | 714 | PermitRootLogin |
702 | Specifies whether root can log in using ssh(1). The argument | 715 | Specifies whether root can log in using ssh(1). The argument |
703 | must be yes, prohibit-password, without-password, | 716 | must be yes, prohibit-password, forced-commands-only, or no. The |
704 | forced-commands-only, or no. The default is prohibit-password. | 717 | default is prohibit-password. |
705 | 718 | ||
706 | If this option is set to prohibit-password or without-password, | 719 | If this option is set to prohibit-password (or its deprecated |
707 | password and keyboard-interactive authentication are disabled for | 720 | alias, without-password), password and keyboard-interactive |
708 | root. | 721 | authentication are disabled for root. |
709 | 722 | ||
710 | If this option is set to forced-commands-only, root login with | 723 | If this option is set to forced-commands-only, root login with |
711 | public key authentication will be allowed, but only if the | 724 | public key authentication will be allowed, but only if the |
@@ -807,6 +820,13 @@ DESCRIPTION | |||
807 | ssh-keygen(1). For more information on KRLs, see the KEY | 820 | ssh-keygen(1). For more information on KRLs, see the KEY |
808 | REVOCATION LISTS section in ssh-keygen(1). | 821 | REVOCATION LISTS section in ssh-keygen(1). |
809 | 822 | ||
823 | RDomain | ||
824 | Specifies an explicit routing domain that is applied after | ||
825 | authentication has completed. The user session, as well and any | ||
826 | forwarded or listening IP sockets, will be bound to this | ||
827 | rdomain(4). If the routing domain is set to %D, then the domain | ||
828 | in which the incoming connection was received will be applied. | ||
829 | |||
810 | StreamLocalBindMask | 830 | StreamLocalBindMask |
811 | Sets the octal file creation mode mask (umask) used when creating | 831 | Sets the octal file creation mode mask (umask) used when creating |
812 | a Unix-domain socket file for local or remote port forwarding. | 832 | a Unix-domain socket file for local or remote port forwarding. |
@@ -980,6 +1000,8 @@ TOKENS | |||
980 | runtime: | 1000 | runtime: |
981 | 1001 | ||
982 | %% A literal M-bM-^@M-^X%M-bM-^@M-^Y. | 1002 | %% A literal M-bM-^@M-^X%M-bM-^@M-^Y. |
1003 | %D The routing domain in which the incoming connection was | ||
1004 | received. | ||
983 | %F The fingerprint of the CA key. | 1005 | %F The fingerprint of the CA key. |
984 | %f The fingerprint of the key or certificate. | 1006 | %f The fingerprint of the key or certificate. |
985 | %h The home directory of the user. | 1007 | %h The home directory of the user. |
@@ -1002,6 +1024,8 @@ TOKENS | |||
1002 | 1024 | ||
1003 | ChrootDirectory accepts the tokens %%, %h, and %u. | 1025 | ChrootDirectory accepts the tokens %%, %h, and %u. |
1004 | 1026 | ||
1027 | RoutingDomain accepts the token %D. | ||
1028 | |||
1005 | FILES | 1029 | FILES |
1006 | /etc/ssh/sshd_config | 1030 | /etc/ssh/sshd_config |
1007 | Contains configuration data for sshd(8). This file should be | 1031 | Contains configuration data for sshd(8). This file should be |
@@ -1019,4 +1043,4 @@ AUTHORS | |||
1019 | versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support | 1043 | versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support |
1020 | for privilege separation. | 1044 | for privilege separation. |
1021 | 1045 | ||
1022 | OpenBSD 6.2 September 27, 2017 OpenBSD 6.2 | 1046 | OpenBSD 6.2 February 16, 2018 OpenBSD 6.2 |
diff --git a/sshd_config.5 b/sshd_config.5 index ef520680f..4c7ee4254 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.253 2017/09/27 06:45:53 jmc Exp $ | 36 | .\" $OpenBSD: sshd_config.5,v 1.263 2018/02/16 02:40:45 djm Exp $ |
37 | .Dd $Mdocdate: September 27 2017 $ | 37 | .Dd $Mdocdate: February 16 2018 $ |
38 | .Dt SSHD_CONFIG 5 | 38 | .Dt SSHD_CONFIG 5 |
39 | .Os | 39 | .Os |
40 | .Sh NAME | 40 | .Sh NAME |
@@ -48,6 +48,7 @@ reads configuration data from | |||
48 | .Fl f | 48 | .Fl f |
49 | on the command line). | 49 | on the command line). |
50 | The file contains keyword-argument pairs, one per line. | 50 | The file contains keyword-argument pairs, one per line. |
51 | For each keyword, the first obtained value will be used. | ||
51 | Lines starting with | 52 | Lines starting with |
52 | .Ql # | 53 | .Ql # |
53 | and empty lines are interpreted as comments. | 54 | and empty lines are interpreted as comments. |
@@ -749,10 +750,10 @@ is not to load any certificates. | |||
749 | Specifies a file containing a private host key | 750 | Specifies a file containing a private host key |
750 | used by SSH. | 751 | used by SSH. |
751 | The defaults are | 752 | The defaults are |
752 | .Pa /etc/ssh/ssh_host_rsa_key , | 753 | .Pa /etc/ssh/ssh_host_ecdsa_key , |
753 | .Pa /etc/ssh/ssh_host_ecdsa_key | 754 | .Pa /etc/ssh/ssh_host_ed25519_key |
754 | and | 755 | and |
755 | .Pa /etc/ssh/ssh_host_ed25519_key . | 756 | .Pa /etc/ssh/ssh_host_rsa_key . |
756 | .Pp | 757 | .Pp |
757 | Note that | 758 | Note that |
758 | .Xr sshd 8 | 759 | .Xr sshd 8 |
@@ -811,7 +812,9 @@ Specifies whether | |||
811 | should ignore the user's | 812 | should ignore the user's |
812 | .Pa ~/.ssh/known_hosts | 813 | .Pa ~/.ssh/known_hosts |
813 | during | 814 | during |
814 | .Cm HostbasedAuthentication . | 815 | .Cm HostbasedAuthentication |
816 | and use only the system-wide known hosts file | ||
817 | .Pa /etc/ssh/known_hosts . | ||
815 | The default is | 818 | The default is |
816 | .Cm no . | 819 | .Cm no . |
817 | .It Cm IPQoS | 820 | .It Cm IPQoS |
@@ -912,6 +915,12 @@ diffie-hellman-group1-sha1 | |||
912 | .It | 915 | .It |
913 | diffie-hellman-group14-sha1 | 916 | diffie-hellman-group14-sha1 |
914 | .It | 917 | .It |
918 | diffie-hellman-group14-sha256 | ||
919 | .It | ||
920 | diffie-hellman-group16-sha512 | ||
921 | .It | ||
922 | diffie-hellman-group18-sha512 | ||
923 | .It | ||
915 | diffie-hellman-group-exchange-sha1 | 924 | diffie-hellman-group-exchange-sha1 |
916 | .It | 925 | .It |
917 | diffie-hellman-group-exchange-sha256 | 926 | diffie-hellman-group-exchange-sha256 |
@@ -928,7 +937,8 @@ The default is: | |||
928 | curve25519-sha256,curve25519-sha256@libssh.org, | 937 | curve25519-sha256,curve25519-sha256@libssh.org, |
929 | ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, | 938 | ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521, |
930 | diffie-hellman-group-exchange-sha256, | 939 | diffie-hellman-group-exchange-sha256, |
931 | diffie-hellman-group14-sha1 | 940 | diffie-hellman-group16-sha512,diffie-hellman-group18-sha512, |
941 | diffie-hellman-group14-sha256,diffie-hellman-group14-sha1 | ||
932 | .Ed | 942 | .Ed |
933 | .Pp | 943 | .Pp |
934 | The list of available key exchange algorithms may also be obtained using | 944 | The list of available key exchange algorithms may also be obtained using |
@@ -943,31 +953,47 @@ The following forms may be used: | |||
943 | .It | 953 | .It |
944 | .Cm ListenAddress | 954 | .Cm ListenAddress |
945 | .Sm off | 955 | .Sm off |
946 | .Ar host | Ar IPv4_addr | Ar IPv6_addr | 956 | .Ar hostname | address |
957 | .Sm on | ||
958 | .Op Cm rdomain Ar domain | ||
959 | .It | ||
960 | .Cm ListenAddress | ||
961 | .Sm off | ||
962 | .Ar hostname : port | ||
947 | .Sm on | 963 | .Sm on |
964 | .Op Cm rdomain Ar domain | ||
948 | .It | 965 | .It |
949 | .Cm ListenAddress | 966 | .Cm ListenAddress |
950 | .Sm off | 967 | .Sm off |
951 | .Ar host | Ar IPv4_addr : Ar port | 968 | .Ar IPv4_address : port |
952 | .Sm on | 969 | .Sm on |
970 | .Op Cm rdomain Ar domain | ||
953 | .It | 971 | .It |
954 | .Cm ListenAddress | 972 | .Cm ListenAddress |
955 | .Sm off | 973 | .Sm off |
956 | .Oo | 974 | .Oo Ar hostname | address Oc : Ar port |
957 | .Ar host | Ar IPv6_addr Oc : Ar port | ||
958 | .Sm on | 975 | .Sm on |
976 | .Op Cm rdomain Ar domain | ||
959 | .El | 977 | .El |
960 | .Pp | 978 | .Pp |
979 | The optional | ||
980 | .Cm rdomain | ||
981 | qualifier requests | ||
982 | .Xr sshd 8 | ||
983 | listen in an explicit routing domain. | ||
961 | If | 984 | If |
962 | .Ar port | 985 | .Ar port |
963 | is not specified, | 986 | is not specified, |
964 | sshd will listen on the address and all | 987 | sshd will listen on the address and all |
965 | .Cm Port | 988 | .Cm Port |
966 | options specified. | 989 | options specified. |
967 | The default is to listen on all local addresses. | 990 | The default is to listen on all local addresses on the current default |
991 | routing domain. | ||
968 | Multiple | 992 | Multiple |
969 | .Cm ListenAddress | 993 | .Cm ListenAddress |
970 | options are permitted. | 994 | options are permitted. |
995 | For more information on routing domains, see | ||
996 | .Xr rdomain 4 . | ||
971 | .It Cm LoginGraceTime | 997 | .It Cm LoginGraceTime |
972 | The server disconnects after this time if the user has not | 998 | The server disconnects after this time if the user has not |
973 | successfully logged in. | 999 | successfully logged in. |
@@ -1071,8 +1097,15 @@ The available criteria are | |||
1071 | .Cm Host , | 1097 | .Cm Host , |
1072 | .Cm LocalAddress , | 1098 | .Cm LocalAddress , |
1073 | .Cm LocalPort , | 1099 | .Cm LocalPort , |
1100 | .Cm RDomain , | ||
1074 | and | 1101 | and |
1075 | .Cm Address . | 1102 | .Cm Address |
1103 | (with | ||
1104 | .Cm RDomain | ||
1105 | representing the | ||
1106 | .Xr rdomain 4 | ||
1107 | on which the connection was received.) | ||
1108 | .Pp | ||
1076 | The match patterns may consist of single entries or comma-separated | 1109 | The match patterns may consist of single entries or comma-separated |
1077 | lists and may use the wildcard and negation operators described in the | 1110 | lists and may use the wildcard and negation operators described in the |
1078 | .Sx PATTERNS | 1111 | .Sx PATTERNS |
@@ -1135,6 +1168,7 @@ Available keywords are | |||
1135 | .Cm PubkeyAuthentication , | 1168 | .Cm PubkeyAuthentication , |
1136 | .Cm RekeyLimit , | 1169 | .Cm RekeyLimit , |
1137 | .Cm RevokedKeys , | 1170 | .Cm RevokedKeys , |
1171 | .Cm RDomain , | ||
1138 | .Cm StreamLocalBindMask , | 1172 | .Cm StreamLocalBindMask , |
1139 | .Cm StreamLocalBindUnlink , | 1173 | .Cm StreamLocalBindUnlink , |
1140 | .Cm TrustedUserCAKeys , | 1174 | .Cm TrustedUserCAKeys , |
@@ -1223,7 +1257,6 @@ Specifies whether root can log in using | |||
1223 | The argument must be | 1257 | The argument must be |
1224 | .Cm yes , | 1258 | .Cm yes , |
1225 | .Cm prohibit-password , | 1259 | .Cm prohibit-password , |
1226 | .Cm without-password , | ||
1227 | .Cm forced-commands-only , | 1260 | .Cm forced-commands-only , |
1228 | or | 1261 | or |
1229 | .Cm no . | 1262 | .Cm no . |
@@ -1232,8 +1265,8 @@ The default is | |||
1232 | .Pp | 1265 | .Pp |
1233 | If this option is set to | 1266 | If this option is set to |
1234 | .Cm prohibit-password | 1267 | .Cm prohibit-password |
1235 | or | 1268 | (or its deprecated alias, |
1236 | .Cm without-password , | 1269 | .Cm without-password ) , |
1237 | password and keyboard-interactive authentication are disabled for root. | 1270 | password and keyboard-interactive authentication are disabled for root. |
1238 | .Pp | 1271 | .Pp |
1239 | If this option is set to | 1272 | If this option is set to |
@@ -1396,6 +1429,15 @@ an OpenSSH Key Revocation List (KRL) as generated by | |||
1396 | .Xr ssh-keygen 1 . | 1429 | .Xr ssh-keygen 1 . |
1397 | For more information on KRLs, see the KEY REVOCATION LISTS section in | 1430 | For more information on KRLs, see the KEY REVOCATION LISTS section in |
1398 | .Xr ssh-keygen 1 . | 1431 | .Xr ssh-keygen 1 . |
1432 | .It Cm RDomain | ||
1433 | Specifies an explicit routing domain that is applied after authentication | ||
1434 | has completed. | ||
1435 | The user session, as well and any forwarded or listening IP sockets, | ||
1436 | will be bound to this | ||
1437 | .Xr rdomain 4 . | ||
1438 | If the routing domain is set to | ||
1439 | .Cm \&%D , | ||
1440 | then the domain in which the incoming connection was received will be applied. | ||
1399 | .It Cm StreamLocalBindMask | 1441 | .It Cm StreamLocalBindMask |
1400 | Sets the octal file creation mode mask | 1442 | Sets the octal file creation mode mask |
1401 | .Pq umask | 1443 | .Pq umask |
@@ -1664,6 +1706,8 @@ which are expanded at runtime: | |||
1664 | .It %% | 1706 | .It %% |
1665 | A literal | 1707 | A literal |
1666 | .Sq % . | 1708 | .Sq % . |
1709 | .It \&%D | ||
1710 | The routing domain in which the incoming connection was received. | ||
1667 | .It %F | 1711 | .It %F |
1668 | The fingerprint of the CA key. | 1712 | The fingerprint of the CA key. |
1669 | .It %f | 1713 | .It %f |
@@ -1700,6 +1744,9 @@ accepts the tokens %%, %h, and %u. | |||
1700 | .Pp | 1744 | .Pp |
1701 | .Cm ChrootDirectory | 1745 | .Cm ChrootDirectory |
1702 | accepts the tokens %%, %h, and %u. | 1746 | accepts the tokens %%, %h, and %u. |
1747 | .Pp | ||
1748 | .Cm RoutingDomain | ||
1749 | accepts the token %D. | ||
1703 | .Sh FILES | 1750 | .Sh FILES |
1704 | .Bl -tag -width Ds | 1751 | .Bl -tag -width Ds |
1705 | .It Pa /etc/ssh/sshd_config | 1752 | .It Pa /etc/ssh/sshd_config |
diff --git a/sshkey-xmss.c b/sshkey-xmss.c new file mode 100644 index 000000000..5d66ee790 --- /dev/null +++ b/sshkey-xmss.c | |||
@@ -0,0 +1,1055 @@ | |||
1 | /* $OpenBSD: sshkey-xmss.c,v 1.1 2018/02/23 15:58:38 markus Exp $ */ | ||
2 | /* | ||
3 | * Copyright (c) 2017 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 | #ifdef WITH_XMSS | ||
28 | |||
29 | #include <sys/types.h> | ||
30 | #include <sys/uio.h> | ||
31 | |||
32 | #include <stdio.h> | ||
33 | #include <string.h> | ||
34 | #include <unistd.h> | ||
35 | #include <fcntl.h> | ||
36 | #include <errno.h> | ||
37 | #ifdef HAVE_SYS_FILE_H | ||
38 | # include <sys/file.h> | ||
39 | #endif | ||
40 | |||
41 | #include "ssh2.h" | ||
42 | #include "ssherr.h" | ||
43 | #include "sshbuf.h" | ||
44 | #include "cipher.h" | ||
45 | #include "sshkey.h" | ||
46 | #include "sshkey-xmss.h" | ||
47 | #include "atomicio.h" | ||
48 | |||
49 | #include "xmss_fast.h" | ||
50 | |||
51 | /* opaque internal XMSS state */ | ||
52 | #define XMSS_MAGIC "xmss-state-v1" | ||
53 | #define XMSS_CIPHERNAME "aes256-gcm@openssh.com" | ||
54 | struct ssh_xmss_state { | ||
55 | xmss_params params; | ||
56 | u_int32_t n, w, h, k; | ||
57 | |||
58 | bds_state bds; | ||
59 | u_char *stack; | ||
60 | u_int32_t stackoffset; | ||
61 | u_char *stacklevels; | ||
62 | u_char *auth; | ||
63 | u_char *keep; | ||
64 | u_char *th_nodes; | ||
65 | u_char *retain; | ||
66 | treehash_inst *treehash; | ||
67 | |||
68 | u_int32_t idx; /* state read from file */ | ||
69 | u_int32_t maxidx; /* resticted # of signatures */ | ||
70 | int have_state; /* .state file exists */ | ||
71 | int lockfd; /* locked in sshkey_xmss_get_state() */ | ||
72 | int allow_update; /* allow sshkey_xmss_update_state() */ | ||
73 | char *enc_ciphername;/* encrypt state with cipher */ | ||
74 | u_char *enc_keyiv; /* encrypt state with key */ | ||
75 | u_int32_t enc_keyiv_len; /* length of enc_keyiv */ | ||
76 | }; | ||
77 | |||
78 | int sshkey_xmss_init_bds_state(struct sshkey *); | ||
79 | int sshkey_xmss_init_enc_key(struct sshkey *, const char *); | ||
80 | void sshkey_xmss_free_bds(struct sshkey *); | ||
81 | int sshkey_xmss_get_state_from_file(struct sshkey *, const char *, | ||
82 | int *, sshkey_printfn *); | ||
83 | int sshkey_xmss_encrypt_state(const struct sshkey *, struct sshbuf *, | ||
84 | struct sshbuf **); | ||
85 | int sshkey_xmss_decrypt_state(const struct sshkey *, struct sshbuf *, | ||
86 | struct sshbuf **); | ||
87 | int sshkey_xmss_serialize_enc_key(const struct sshkey *, struct sshbuf *); | ||
88 | int sshkey_xmss_deserialize_enc_key(struct sshkey *, struct sshbuf *); | ||
89 | |||
90 | #define PRINT(s...) do { if (pr) pr(s); } while (0) | ||
91 | |||
92 | int | ||
93 | sshkey_xmss_init(struct sshkey *key, const char *name) | ||
94 | { | ||
95 | struct ssh_xmss_state *state; | ||
96 | |||
97 | if (key->xmss_state != NULL) | ||
98 | return SSH_ERR_INVALID_FORMAT; | ||
99 | if (name == NULL) | ||
100 | return SSH_ERR_INVALID_FORMAT; | ||
101 | state = calloc(sizeof(struct ssh_xmss_state), 1); | ||
102 | if (state == NULL) | ||
103 | return SSH_ERR_ALLOC_FAIL; | ||
104 | if (strcmp(name, XMSS_SHA2_256_W16_H10_NAME) == 0) { | ||
105 | state->n = 32; | ||
106 | state->w = 16; | ||
107 | state->h = 10; | ||
108 | } else if (strcmp(name, XMSS_SHA2_256_W16_H16_NAME) == 0) { | ||
109 | state->n = 32; | ||
110 | state->w = 16; | ||
111 | state->h = 16; | ||
112 | } else if (strcmp(name, XMSS_SHA2_256_W16_H20_NAME) == 0) { | ||
113 | state->n = 32; | ||
114 | state->w = 16; | ||
115 | state->h = 20; | ||
116 | } else { | ||
117 | free(state); | ||
118 | return SSH_ERR_KEY_TYPE_UNKNOWN; | ||
119 | } | ||
120 | if ((key->xmss_name = strdup(name)) == NULL) { | ||
121 | free(state); | ||
122 | return SSH_ERR_ALLOC_FAIL; | ||
123 | } | ||
124 | state->k = 2; /* XXX hardcoded */ | ||
125 | state->lockfd = -1; | ||
126 | if (xmss_set_params(&state->params, state->n, state->h, state->w, | ||
127 | state->k) != 0) { | ||
128 | free(state); | ||
129 | return SSH_ERR_INVALID_FORMAT; | ||
130 | } | ||
131 | key->xmss_state = state; | ||
132 | return 0; | ||
133 | } | ||
134 | |||
135 | void | ||
136 | sshkey_xmss_free_state(struct sshkey *key) | ||
137 | { | ||
138 | struct ssh_xmss_state *state = key->xmss_state; | ||
139 | |||
140 | sshkey_xmss_free_bds(key); | ||
141 | if (state) { | ||
142 | if (state->enc_keyiv) { | ||
143 | explicit_bzero(state->enc_keyiv, state->enc_keyiv_len); | ||
144 | free(state->enc_keyiv); | ||
145 | } | ||
146 | free(state->enc_ciphername); | ||
147 | free(state); | ||
148 | } | ||
149 | key->xmss_state = NULL; | ||
150 | } | ||
151 | |||
152 | #define SSH_XMSS_K2_MAGIC "k=2" | ||
153 | #define num_stack(x) ((x->h+1)*(x->n)) | ||
154 | #define num_stacklevels(x) (x->h+1) | ||
155 | #define num_auth(x) ((x->h)*(x->n)) | ||
156 | #define num_keep(x) ((x->h >> 1)*(x->n)) | ||
157 | #define num_th_nodes(x) ((x->h - x->k)*(x->n)) | ||
158 | #define num_retain(x) (((1ULL << x->k) - x->k - 1) * (x->n)) | ||
159 | #define num_treehash(x) ((x->h) - (x->k)) | ||
160 | |||
161 | int | ||
162 | sshkey_xmss_init_bds_state(struct sshkey *key) | ||
163 | { | ||
164 | struct ssh_xmss_state *state = key->xmss_state; | ||
165 | u_int32_t i; | ||
166 | |||
167 | state->stackoffset = 0; | ||
168 | if ((state->stack = calloc(num_stack(state), 1)) == NULL || | ||
169 | (state->stacklevels = calloc(num_stacklevels(state), 1))== NULL || | ||
170 | (state->auth = calloc(num_auth(state), 1)) == NULL || | ||
171 | (state->keep = calloc(num_keep(state), 1)) == NULL || | ||
172 | (state->th_nodes = calloc(num_th_nodes(state), 1)) == NULL || | ||
173 | (state->retain = calloc(num_retain(state), 1)) == NULL || | ||
174 | (state->treehash = calloc(num_treehash(state), | ||
175 | sizeof(treehash_inst))) == NULL) { | ||
176 | sshkey_xmss_free_bds(key); | ||
177 | return SSH_ERR_ALLOC_FAIL; | ||
178 | } | ||
179 | for (i = 0; i < state->h - state->k; i++) | ||
180 | state->treehash[i].node = &state->th_nodes[state->n*i]; | ||
181 | xmss_set_bds_state(&state->bds, state->stack, state->stackoffset, | ||
182 | state->stacklevels, state->auth, state->keep, state->treehash, | ||
183 | state->retain, 0); | ||
184 | return 0; | ||
185 | } | ||
186 | |||
187 | void | ||
188 | sshkey_xmss_free_bds(struct sshkey *key) | ||
189 | { | ||
190 | struct ssh_xmss_state *state = key->xmss_state; | ||
191 | |||
192 | if (state == NULL) | ||
193 | return; | ||
194 | free(state->stack); | ||
195 | free(state->stacklevels); | ||
196 | free(state->auth); | ||
197 | free(state->keep); | ||
198 | free(state->th_nodes); | ||
199 | free(state->retain); | ||
200 | free(state->treehash); | ||
201 | state->stack = NULL; | ||
202 | state->stacklevels = NULL; | ||
203 | state->auth = NULL; | ||
204 | state->keep = NULL; | ||
205 | state->th_nodes = NULL; | ||
206 | state->retain = NULL; | ||
207 | state->treehash = NULL; | ||
208 | } | ||
209 | |||
210 | void * | ||
211 | sshkey_xmss_params(const struct sshkey *key) | ||
212 | { | ||
213 | struct ssh_xmss_state *state = key->xmss_state; | ||
214 | |||
215 | if (state == NULL) | ||
216 | return NULL; | ||
217 | return &state->params; | ||
218 | } | ||
219 | |||
220 | void * | ||
221 | sshkey_xmss_bds_state(const struct sshkey *key) | ||
222 | { | ||
223 | struct ssh_xmss_state *state = key->xmss_state; | ||
224 | |||
225 | if (state == NULL) | ||
226 | return NULL; | ||
227 | return &state->bds; | ||
228 | } | ||
229 | |||
230 | int | ||
231 | sshkey_xmss_siglen(const struct sshkey *key, size_t *lenp) | ||
232 | { | ||
233 | struct ssh_xmss_state *state = key->xmss_state; | ||
234 | |||
235 | if (lenp == NULL) | ||
236 | return SSH_ERR_INVALID_ARGUMENT; | ||
237 | if (state == NULL) | ||
238 | return SSH_ERR_INVALID_FORMAT; | ||
239 | *lenp = 4 + state->n + | ||
240 | state->params.wots_par.keysize + | ||
241 | state->h * state->n; | ||
242 | return 0; | ||
243 | } | ||
244 | |||
245 | size_t | ||
246 | sshkey_xmss_pklen(const struct sshkey *key) | ||
247 | { | ||
248 | struct ssh_xmss_state *state = key->xmss_state; | ||
249 | |||
250 | if (state == NULL) | ||
251 | return 0; | ||
252 | return state->n * 2; | ||
253 | } | ||
254 | |||
255 | size_t | ||
256 | sshkey_xmss_sklen(const struct sshkey *key) | ||
257 | { | ||
258 | struct ssh_xmss_state *state = key->xmss_state; | ||
259 | |||
260 | if (state == NULL) | ||
261 | return 0; | ||
262 | return state->n * 4 + 4; | ||
263 | } | ||
264 | |||
265 | int | ||
266 | sshkey_xmss_init_enc_key(struct sshkey *k, const char *ciphername) | ||
267 | { | ||
268 | struct ssh_xmss_state *state = k->xmss_state; | ||
269 | const struct sshcipher *cipher; | ||
270 | size_t keylen = 0, ivlen = 0; | ||
271 | |||
272 | if (state == NULL) | ||
273 | return SSH_ERR_INVALID_ARGUMENT; | ||
274 | if ((cipher = cipher_by_name(ciphername)) == NULL) | ||
275 | return SSH_ERR_INTERNAL_ERROR; | ||
276 | if ((state->enc_ciphername = strdup(ciphername)) == NULL) | ||
277 | return SSH_ERR_ALLOC_FAIL; | ||
278 | keylen = cipher_keylen(cipher); | ||
279 | ivlen = cipher_ivlen(cipher); | ||
280 | state->enc_keyiv_len = keylen + ivlen; | ||
281 | if ((state->enc_keyiv = calloc(state->enc_keyiv_len, 1)) == NULL) { | ||
282 | free(state->enc_ciphername); | ||
283 | state->enc_ciphername = NULL; | ||
284 | return SSH_ERR_ALLOC_FAIL; | ||
285 | } | ||
286 | arc4random_buf(state->enc_keyiv, state->enc_keyiv_len); | ||
287 | return 0; | ||
288 | } | ||
289 | |||
290 | int | ||
291 | sshkey_xmss_serialize_enc_key(const struct sshkey *k, struct sshbuf *b) | ||
292 | { | ||
293 | struct ssh_xmss_state *state = k->xmss_state; | ||
294 | int r; | ||
295 | |||
296 | if (state == NULL || state->enc_keyiv == NULL || | ||
297 | state->enc_ciphername == NULL) | ||
298 | return SSH_ERR_INVALID_ARGUMENT; | ||
299 | if ((r = sshbuf_put_cstring(b, state->enc_ciphername)) != 0 || | ||
300 | (r = sshbuf_put_string(b, state->enc_keyiv, | ||
301 | state->enc_keyiv_len)) != 0) | ||
302 | return r; | ||
303 | return 0; | ||
304 | } | ||
305 | |||
306 | int | ||
307 | sshkey_xmss_deserialize_enc_key(struct sshkey *k, struct sshbuf *b) | ||
308 | { | ||
309 | struct ssh_xmss_state *state = k->xmss_state; | ||
310 | size_t len; | ||
311 | int r; | ||
312 | |||
313 | if (state == NULL) | ||
314 | return SSH_ERR_INVALID_ARGUMENT; | ||
315 | if ((r = sshbuf_get_cstring(b, &state->enc_ciphername, NULL)) != 0 || | ||
316 | (r = sshbuf_get_string(b, &state->enc_keyiv, &len)) != 0) | ||
317 | return r; | ||
318 | state->enc_keyiv_len = len; | ||
319 | return 0; | ||
320 | } | ||
321 | |||
322 | int | ||
323 | sshkey_xmss_serialize_pk_info(const struct sshkey *k, struct sshbuf *b, | ||
324 | enum sshkey_serialize_rep opts) | ||
325 | { | ||
326 | struct ssh_xmss_state *state = k->xmss_state; | ||
327 | u_char have_info = 1; | ||
328 | u_int32_t idx; | ||
329 | int r; | ||
330 | |||
331 | if (state == NULL) | ||
332 | return SSH_ERR_INVALID_ARGUMENT; | ||
333 | if (opts != SSHKEY_SERIALIZE_INFO) | ||
334 | return 0; | ||
335 | idx = k->xmss_sk ? PEEK_U32(k->xmss_sk) : state->idx; | ||
336 | if ((r = sshbuf_put_u8(b, have_info)) != 0 || | ||
337 | (r = sshbuf_put_u32(b, idx)) != 0 || | ||
338 | (r = sshbuf_put_u32(b, state->maxidx)) != 0) | ||
339 | return r; | ||
340 | return 0; | ||
341 | } | ||
342 | |||
343 | int | ||
344 | sshkey_xmss_deserialize_pk_info(struct sshkey *k, struct sshbuf *b) | ||
345 | { | ||
346 | struct ssh_xmss_state *state = k->xmss_state; | ||
347 | u_char have_info; | ||
348 | int r; | ||
349 | |||
350 | if (state == NULL) | ||
351 | return SSH_ERR_INVALID_ARGUMENT; | ||
352 | /* optional */ | ||
353 | if (sshbuf_len(b) == 0) | ||
354 | return 0; | ||
355 | if ((r = sshbuf_get_u8(b, &have_info)) != 0) | ||
356 | return r; | ||
357 | if (have_info != 1) | ||
358 | return SSH_ERR_INVALID_ARGUMENT; | ||
359 | if ((r = sshbuf_get_u32(b, &state->idx)) != 0 || | ||
360 | (r = sshbuf_get_u32(b, &state->maxidx)) != 0) | ||
361 | return r; | ||
362 | return 0; | ||
363 | } | ||
364 | |||
365 | int | ||
366 | sshkey_xmss_generate_private_key(struct sshkey *k, u_int bits) | ||
367 | { | ||
368 | int r; | ||
369 | const char *name; | ||
370 | |||
371 | if (bits == 10) { | ||
372 | name = XMSS_SHA2_256_W16_H10_NAME; | ||
373 | } else if (bits == 16) { | ||
374 | name = XMSS_SHA2_256_W16_H16_NAME; | ||
375 | } else if (bits == 20) { | ||
376 | name = XMSS_SHA2_256_W16_H20_NAME; | ||
377 | } else { | ||
378 | name = XMSS_DEFAULT_NAME; | ||
379 | } | ||
380 | if ((r = sshkey_xmss_init(k, name)) != 0 || | ||
381 | (r = sshkey_xmss_init_bds_state(k)) != 0 || | ||
382 | (r = sshkey_xmss_init_enc_key(k, XMSS_CIPHERNAME)) != 0) | ||
383 | return r; | ||
384 | if ((k->xmss_pk = malloc(sshkey_xmss_pklen(k))) == NULL || | ||
385 | (k->xmss_sk = malloc(sshkey_xmss_sklen(k))) == NULL) { | ||
386 | return SSH_ERR_ALLOC_FAIL; | ||
387 | } | ||
388 | xmss_keypair(k->xmss_pk, k->xmss_sk, sshkey_xmss_bds_state(k), | ||
389 | sshkey_xmss_params(k)); | ||
390 | return 0; | ||
391 | } | ||
392 | |||
393 | int | ||
394 | sshkey_xmss_get_state_from_file(struct sshkey *k, const char *filename, | ||
395 | int *have_file, sshkey_printfn *pr) | ||
396 | { | ||
397 | struct sshbuf *b = NULL, *enc = NULL; | ||
398 | int ret = SSH_ERR_SYSTEM_ERROR, r, fd = -1; | ||
399 | u_int32_t len; | ||
400 | unsigned char buf[4], *data = NULL; | ||
401 | |||
402 | *have_file = 0; | ||
403 | if ((fd = open(filename, O_RDONLY)) >= 0) { | ||
404 | *have_file = 1; | ||
405 | if (atomicio(read, fd, buf, sizeof(buf)) != sizeof(buf)) { | ||
406 | PRINT("%s: corrupt state file: %s", __func__, filename); | ||
407 | goto done; | ||
408 | } | ||
409 | len = PEEK_U32(buf); | ||
410 | if ((data = calloc(len, 1)) == NULL) { | ||
411 | ret = SSH_ERR_ALLOC_FAIL; | ||
412 | goto done; | ||
413 | } | ||
414 | if (atomicio(read, fd, data, len) != len) { | ||
415 | PRINT("%s: cannot read blob: %s", __func__, filename); | ||
416 | goto done; | ||
417 | } | ||
418 | if ((enc = sshbuf_from(data, len)) == NULL) { | ||
419 | ret = SSH_ERR_ALLOC_FAIL; | ||
420 | goto done; | ||
421 | } | ||
422 | sshkey_xmss_free_bds(k); | ||
423 | if ((r = sshkey_xmss_decrypt_state(k, enc, &b)) != 0) { | ||
424 | ret = r; | ||
425 | goto done; | ||
426 | } | ||
427 | if ((r = sshkey_xmss_deserialize_state(k, b)) != 0) { | ||
428 | ret = r; | ||
429 | goto done; | ||
430 | } | ||
431 | ret = 0; | ||
432 | } | ||
433 | done: | ||
434 | if (fd != -1) | ||
435 | close(fd); | ||
436 | free(data); | ||
437 | sshbuf_free(enc); | ||
438 | sshbuf_free(b); | ||
439 | return ret; | ||
440 | } | ||
441 | |||
442 | int | ||
443 | sshkey_xmss_get_state(const struct sshkey *k, sshkey_printfn *pr) | ||
444 | { | ||
445 | struct ssh_xmss_state *state = k->xmss_state; | ||
446 | u_int32_t idx = 0; | ||
447 | char *filename = NULL; | ||
448 | char *statefile = NULL, *ostatefile = NULL, *lockfile = NULL; | ||
449 | int lockfd = -1, have_state = 0, have_ostate, tries = 0; | ||
450 | int ret = SSH_ERR_INVALID_ARGUMENT, r; | ||
451 | |||
452 | if (state == NULL) | ||
453 | goto done; | ||
454 | /* | ||
455 | * If maxidx is set, then we are allowed a limited number | ||
456 | * of signatures, but don't need to access the disk. | ||
457 | * Otherwise we need to deal with the on-disk state. | ||
458 | */ | ||
459 | if (state->maxidx) { | ||
460 | /* xmss_sk always contains the current state */ | ||
461 | idx = PEEK_U32(k->xmss_sk); | ||
462 | if (idx < state->maxidx) { | ||
463 | state->allow_update = 1; | ||
464 | return 0; | ||
465 | } | ||
466 | return SSH_ERR_INVALID_ARGUMENT; | ||
467 | } | ||
468 | if ((filename = k->xmss_filename) == NULL) | ||
469 | goto done; | ||
470 | if (asprintf(&lockfile, "%s.lock", filename) < 0 || | ||
471 | asprintf(&statefile, "%s.state", filename) < 0 || | ||
472 | asprintf(&ostatefile, "%s.ostate", filename) < 0) { | ||
473 | ret = SSH_ERR_ALLOC_FAIL; | ||
474 | goto done; | ||
475 | } | ||
476 | if ((lockfd = open(lockfile, O_CREAT|O_RDONLY, 0600)) < 0) { | ||
477 | ret = SSH_ERR_SYSTEM_ERROR; | ||
478 | PRINT("%s: cannot open/create: %s", __func__, lockfile); | ||
479 | goto done; | ||
480 | } | ||
481 | while (flock(lockfd, LOCK_EX|LOCK_NB) < 0) { | ||
482 | if (errno != EWOULDBLOCK) { | ||
483 | ret = SSH_ERR_SYSTEM_ERROR; | ||
484 | PRINT("%s: cannot lock: %s", __func__, lockfile); | ||
485 | goto done; | ||
486 | } | ||
487 | if (++tries > 10) { | ||
488 | ret = SSH_ERR_SYSTEM_ERROR; | ||
489 | PRINT("%s: giving up on: %s", __func__, lockfile); | ||
490 | goto done; | ||
491 | } | ||
492 | usleep(1000*100*tries); | ||
493 | } | ||
494 | /* XXX no longer const */ | ||
495 | if ((r = sshkey_xmss_get_state_from_file((struct sshkey *)k, | ||
496 | statefile, &have_state, pr)) != 0) { | ||
497 | if ((r = sshkey_xmss_get_state_from_file((struct sshkey *)k, | ||
498 | ostatefile, &have_ostate, pr)) == 0) { | ||
499 | state->allow_update = 1; | ||
500 | r = sshkey_xmss_forward_state(k, 1); | ||
501 | state->idx = PEEK_U32(k->xmss_sk); | ||
502 | state->allow_update = 0; | ||
503 | } | ||
504 | } | ||
505 | if (!have_state && !have_ostate) { | ||
506 | /* check that bds state is initialized */ | ||
507 | if (state->bds.auth == NULL) | ||
508 | goto done; | ||
509 | PRINT("%s: start from scratch idx 0: %u", __func__, state->idx); | ||
510 | } else if (r != 0) { | ||
511 | ret = r; | ||
512 | goto done; | ||
513 | } | ||
514 | if (state->idx + 1 < state->idx) { | ||
515 | PRINT("%s: state wrap: %u", __func__, state->idx); | ||
516 | goto done; | ||
517 | } | ||
518 | state->have_state = have_state; | ||
519 | state->lockfd = lockfd; | ||
520 | state->allow_update = 1; | ||
521 | lockfd = -1; | ||
522 | ret = 0; | ||
523 | done: | ||
524 | if (lockfd != -1) | ||
525 | close(lockfd); | ||
526 | free(lockfile); | ||
527 | free(statefile); | ||
528 | free(ostatefile); | ||
529 | return ret; | ||
530 | } | ||
531 | |||
532 | int | ||
533 | sshkey_xmss_forward_state(const struct sshkey *k, u_int32_t reserve) | ||
534 | { | ||
535 | struct ssh_xmss_state *state = k->xmss_state; | ||
536 | u_char *sig = NULL; | ||
537 | size_t required_siglen; | ||
538 | unsigned long long smlen; | ||
539 | u_char data; | ||
540 | int ret, r; | ||
541 | |||
542 | if (state == NULL || !state->allow_update) | ||
543 | return SSH_ERR_INVALID_ARGUMENT; | ||
544 | if (reserve == 0) | ||
545 | return SSH_ERR_INVALID_ARGUMENT; | ||
546 | if (state->idx + reserve <= state->idx) | ||
547 | return SSH_ERR_INVALID_ARGUMENT; | ||
548 | if ((r = sshkey_xmss_siglen(k, &required_siglen)) != 0) | ||
549 | return r; | ||
550 | if ((sig = malloc(required_siglen)) == NULL) | ||
551 | return SSH_ERR_ALLOC_FAIL; | ||
552 | while (reserve-- > 0) { | ||
553 | state->idx = PEEK_U32(k->xmss_sk); | ||
554 | smlen = required_siglen; | ||
555 | if ((ret = xmss_sign(k->xmss_sk, sshkey_xmss_bds_state(k), | ||
556 | sig, &smlen, &data, 0, sshkey_xmss_params(k))) != 0) { | ||
557 | r = SSH_ERR_INVALID_ARGUMENT; | ||
558 | break; | ||
559 | } | ||
560 | } | ||
561 | free(sig); | ||
562 | return r; | ||
563 | } | ||
564 | |||
565 | int | ||
566 | sshkey_xmss_update_state(const struct sshkey *k, sshkey_printfn *pr) | ||
567 | { | ||
568 | struct ssh_xmss_state *state = k->xmss_state; | ||
569 | struct sshbuf *b = NULL, *enc = NULL; | ||
570 | u_int32_t idx = 0; | ||
571 | unsigned char buf[4]; | ||
572 | char *filename = NULL; | ||
573 | char *statefile = NULL, *ostatefile = NULL, *nstatefile = NULL; | ||
574 | int fd = -1; | ||
575 | int ret = SSH_ERR_INVALID_ARGUMENT; | ||
576 | |||
577 | if (state == NULL || !state->allow_update) | ||
578 | return ret; | ||
579 | if (state->maxidx) { | ||
580 | /* no update since the number of signatures is limited */ | ||
581 | ret = 0; | ||
582 | goto done; | ||
583 | } | ||
584 | idx = PEEK_U32(k->xmss_sk); | ||
585 | if (idx == state->idx) { | ||
586 | /* no signature happend, no need to update */ | ||
587 | ret = 0; | ||
588 | goto done; | ||
589 | } else if (idx != state->idx + 1) { | ||
590 | PRINT("%s: more than one signature happened: idx %u state %u", | ||
591 | __func__, idx, state->idx); | ||
592 | goto done; | ||
593 | } | ||
594 | state->idx = idx; | ||
595 | if ((filename = k->xmss_filename) == NULL) | ||
596 | goto done; | ||
597 | if (asprintf(&statefile, "%s.state", filename) < 0 || | ||
598 | asprintf(&ostatefile, "%s.ostate", filename) < 0 || | ||
599 | asprintf(&nstatefile, "%s.nstate", filename) < 0) { | ||
600 | ret = SSH_ERR_ALLOC_FAIL; | ||
601 | goto done; | ||
602 | } | ||
603 | unlink(nstatefile); | ||
604 | if ((b = sshbuf_new()) == NULL) { | ||
605 | ret = SSH_ERR_ALLOC_FAIL; | ||
606 | goto done; | ||
607 | } | ||
608 | if ((ret = sshkey_xmss_serialize_state(k, b)) != 0) { | ||
609 | PRINT("%s: SERLIALIZE FAILED: %d", __func__, ret); | ||
610 | goto done; | ||
611 | } | ||
612 | if ((ret = sshkey_xmss_encrypt_state(k, b, &enc)) != 0) { | ||
613 | PRINT("%s: ENCRYPT FAILED: %d", __func__, ret); | ||
614 | goto done; | ||
615 | } | ||
616 | if ((fd = open(nstatefile, O_CREAT|O_WRONLY|O_EXCL, 0600)) < 0) { | ||
617 | ret = SSH_ERR_SYSTEM_ERROR; | ||
618 | PRINT("%s: open new state file: %s", __func__, nstatefile); | ||
619 | goto done; | ||
620 | } | ||
621 | POKE_U32(buf, sshbuf_len(enc)); | ||
622 | if (atomicio(vwrite, fd, buf, sizeof(buf)) != sizeof(buf)) { | ||
623 | ret = SSH_ERR_SYSTEM_ERROR; | ||
624 | PRINT("%s: write new state file hdr: %s", __func__, nstatefile); | ||
625 | close(fd); | ||
626 | goto done; | ||
627 | } | ||
628 | if (atomicio(vwrite, fd, (void *)sshbuf_ptr(enc), sshbuf_len(enc)) != | ||
629 | sshbuf_len(enc)) { | ||
630 | ret = SSH_ERR_SYSTEM_ERROR; | ||
631 | PRINT("%s: write new state file data: %s", __func__, nstatefile); | ||
632 | close(fd); | ||
633 | goto done; | ||
634 | } | ||
635 | if (fsync(fd) < 0) { | ||
636 | ret = SSH_ERR_SYSTEM_ERROR; | ||
637 | PRINT("%s: sync new state file: %s", __func__, nstatefile); | ||
638 | close(fd); | ||
639 | goto done; | ||
640 | } | ||
641 | if (close(fd) < 0) { | ||
642 | ret = SSH_ERR_SYSTEM_ERROR; | ||
643 | PRINT("%s: close new state file: %s", __func__, nstatefile); | ||
644 | goto done; | ||
645 | } | ||
646 | if (state->have_state) { | ||
647 | unlink(ostatefile); | ||
648 | if (link(statefile, ostatefile)) { | ||
649 | ret = SSH_ERR_SYSTEM_ERROR; | ||
650 | PRINT("%s: backup state %s to %s", __func__, statefile, | ||
651 | ostatefile); | ||
652 | goto done; | ||
653 | } | ||
654 | } | ||
655 | if (rename(nstatefile, statefile) < 0) { | ||
656 | ret = SSH_ERR_SYSTEM_ERROR; | ||
657 | PRINT("%s: rename %s to %s", __func__, nstatefile, statefile); | ||
658 | goto done; | ||
659 | } | ||
660 | ret = 0; | ||
661 | done: | ||
662 | if (state->lockfd != -1) { | ||
663 | close(state->lockfd); | ||
664 | state->lockfd = -1; | ||
665 | } | ||
666 | if (nstatefile) | ||
667 | unlink(nstatefile); | ||
668 | free(statefile); | ||
669 | free(ostatefile); | ||
670 | free(nstatefile); | ||
671 | sshbuf_free(b); | ||
672 | sshbuf_free(enc); | ||
673 | return ret; | ||
674 | } | ||
675 | |||
676 | int | ||
677 | sshkey_xmss_serialize_state(const struct sshkey *k, struct sshbuf *b) | ||
678 | { | ||
679 | struct ssh_xmss_state *state = k->xmss_state; | ||
680 | treehash_inst *th; | ||
681 | u_int32_t i, node; | ||
682 | int r; | ||
683 | |||
684 | if (state == NULL) | ||
685 | return SSH_ERR_INVALID_ARGUMENT; | ||
686 | if (state->stack == NULL) | ||
687 | return SSH_ERR_INVALID_ARGUMENT; | ||
688 | state->stackoffset = state->bds.stackoffset; /* copy back */ | ||
689 | if ((r = sshbuf_put_cstring(b, SSH_XMSS_K2_MAGIC)) != 0 || | ||
690 | (r = sshbuf_put_u32(b, state->idx)) != 0 || | ||
691 | (r = sshbuf_put_string(b, state->stack, num_stack(state))) != 0 || | ||
692 | (r = sshbuf_put_u32(b, state->stackoffset)) != 0 || | ||
693 | (r = sshbuf_put_string(b, state->stacklevels, num_stacklevels(state))) != 0 || | ||
694 | (r = sshbuf_put_string(b, state->auth, num_auth(state))) != 0 || | ||
695 | (r = sshbuf_put_string(b, state->keep, num_keep(state))) != 0 || | ||
696 | (r = sshbuf_put_string(b, state->th_nodes, num_th_nodes(state))) != 0 || | ||
697 | (r = sshbuf_put_string(b, state->retain, num_retain(state))) != 0 || | ||
698 | (r = sshbuf_put_u32(b, num_treehash(state))) != 0) | ||
699 | return r; | ||
700 | for (i = 0; i < num_treehash(state); i++) { | ||
701 | th = &state->treehash[i]; | ||
702 | node = th->node - state->th_nodes; | ||
703 | if ((r = sshbuf_put_u32(b, th->h)) != 0 || | ||
704 | (r = sshbuf_put_u32(b, th->next_idx)) != 0 || | ||
705 | (r = sshbuf_put_u32(b, th->stackusage)) != 0 || | ||
706 | (r = sshbuf_put_u8(b, th->completed)) != 0 || | ||
707 | (r = sshbuf_put_u32(b, node)) != 0) | ||
708 | return r; | ||
709 | } | ||
710 | return 0; | ||
711 | } | ||
712 | |||
713 | int | ||
714 | sshkey_xmss_serialize_state_opt(const struct sshkey *k, struct sshbuf *b, | ||
715 | enum sshkey_serialize_rep opts) | ||
716 | { | ||
717 | struct ssh_xmss_state *state = k->xmss_state; | ||
718 | int r = SSH_ERR_INVALID_ARGUMENT; | ||
719 | |||
720 | if (state == NULL) | ||
721 | return SSH_ERR_INVALID_ARGUMENT; | ||
722 | if ((r = sshbuf_put_u8(b, opts)) != 0) | ||
723 | return r; | ||
724 | switch (opts) { | ||
725 | case SSHKEY_SERIALIZE_STATE: | ||
726 | r = sshkey_xmss_serialize_state(k, b); | ||
727 | break; | ||
728 | case SSHKEY_SERIALIZE_FULL: | ||
729 | if ((r = sshkey_xmss_serialize_enc_key(k, b)) != 0) | ||
730 | break; | ||
731 | r = sshkey_xmss_serialize_state(k, b); | ||
732 | break; | ||
733 | case SSHKEY_SERIALIZE_DEFAULT: | ||
734 | r = 0; | ||
735 | break; | ||
736 | default: | ||
737 | r = SSH_ERR_INVALID_ARGUMENT; | ||
738 | break; | ||
739 | } | ||
740 | return r; | ||
741 | } | ||
742 | |||
743 | int | ||
744 | sshkey_xmss_deserialize_state(struct sshkey *k, struct sshbuf *b) | ||
745 | { | ||
746 | struct ssh_xmss_state *state = k->xmss_state; | ||
747 | treehash_inst *th; | ||
748 | u_int32_t i, lh, node; | ||
749 | size_t ls, lsl, la, lk, ln, lr; | ||
750 | char *magic; | ||
751 | int r; | ||
752 | |||
753 | if (state == NULL) | ||
754 | return SSH_ERR_INVALID_ARGUMENT; | ||
755 | if (k->xmss_sk == NULL) | ||
756 | return SSH_ERR_INVALID_ARGUMENT; | ||
757 | if ((state->treehash = calloc(num_treehash(state), | ||
758 | sizeof(treehash_inst))) == NULL) | ||
759 | return SSH_ERR_ALLOC_FAIL; | ||
760 | if ((r = sshbuf_get_cstring(b, &magic, NULL)) != 0 || | ||
761 | (r = sshbuf_get_u32(b, &state->idx)) != 0 || | ||
762 | (r = sshbuf_get_string(b, &state->stack, &ls)) != 0 || | ||
763 | (r = sshbuf_get_u32(b, &state->stackoffset)) != 0 || | ||
764 | (r = sshbuf_get_string(b, &state->stacklevels, &lsl)) != 0 || | ||
765 | (r = sshbuf_get_string(b, &state->auth, &la)) != 0 || | ||
766 | (r = sshbuf_get_string(b, &state->keep, &lk)) != 0 || | ||
767 | (r = sshbuf_get_string(b, &state->th_nodes, &ln)) != 0 || | ||
768 | (r = sshbuf_get_string(b, &state->retain, &lr)) != 0 || | ||
769 | (r = sshbuf_get_u32(b, &lh)) != 0) | ||
770 | return r; | ||
771 | if (strcmp(magic, SSH_XMSS_K2_MAGIC) != 0) | ||
772 | return SSH_ERR_INVALID_ARGUMENT; | ||
773 | /* XXX check stackoffset */ | ||
774 | if (ls != num_stack(state) || | ||
775 | lsl != num_stacklevels(state) || | ||
776 | la != num_auth(state) || | ||
777 | lk != num_keep(state) || | ||
778 | ln != num_th_nodes(state) || | ||
779 | lr != num_retain(state) || | ||
780 | lh != num_treehash(state)) | ||
781 | return SSH_ERR_INVALID_ARGUMENT; | ||
782 | for (i = 0; i < num_treehash(state); i++) { | ||
783 | th = &state->treehash[i]; | ||
784 | if ((r = sshbuf_get_u32(b, &th->h)) != 0 || | ||
785 | (r = sshbuf_get_u32(b, &th->next_idx)) != 0 || | ||
786 | (r = sshbuf_get_u32(b, &th->stackusage)) != 0 || | ||
787 | (r = sshbuf_get_u8(b, &th->completed)) != 0 || | ||
788 | (r = sshbuf_get_u32(b, &node)) != 0) | ||
789 | return r; | ||
790 | if (node < num_th_nodes(state)) | ||
791 | th->node = &state->th_nodes[node]; | ||
792 | } | ||
793 | POKE_U32(k->xmss_sk, state->idx); | ||
794 | xmss_set_bds_state(&state->bds, state->stack, state->stackoffset, | ||
795 | state->stacklevels, state->auth, state->keep, state->treehash, | ||
796 | state->retain, 0); | ||
797 | return 0; | ||
798 | } | ||
799 | |||
800 | int | ||
801 | sshkey_xmss_deserialize_state_opt(struct sshkey *k, struct sshbuf *b) | ||
802 | { | ||
803 | enum sshkey_serialize_rep opts; | ||
804 | u_char have_state; | ||
805 | int r; | ||
806 | |||
807 | if ((r = sshbuf_get_u8(b, &have_state)) != 0) | ||
808 | return r; | ||
809 | |||
810 | opts = have_state; | ||
811 | switch (opts) { | ||
812 | case SSHKEY_SERIALIZE_DEFAULT: | ||
813 | r = 0; | ||
814 | break; | ||
815 | case SSHKEY_SERIALIZE_STATE: | ||
816 | if ((r = sshkey_xmss_deserialize_state(k, b)) != 0) | ||
817 | return r; | ||
818 | break; | ||
819 | case SSHKEY_SERIALIZE_FULL: | ||
820 | if ((r = sshkey_xmss_deserialize_enc_key(k, b)) != 0 || | ||
821 | (r = sshkey_xmss_deserialize_state(k, b)) != 0) | ||
822 | return r; | ||
823 | break; | ||
824 | default: | ||
825 | r = SSH_ERR_INVALID_FORMAT; | ||
826 | break; | ||
827 | } | ||
828 | return r; | ||
829 | } | ||
830 | |||
831 | int | ||
832 | sshkey_xmss_encrypt_state(const struct sshkey *k, struct sshbuf *b, | ||
833 | struct sshbuf **retp) | ||
834 | { | ||
835 | struct ssh_xmss_state *state = k->xmss_state; | ||
836 | struct sshbuf *encrypted = NULL, *encoded = NULL, *padded = NULL; | ||
837 | struct sshcipher_ctx *ciphercontext = NULL; | ||
838 | const struct sshcipher *cipher; | ||
839 | u_char *cp, *key, *iv = NULL; | ||
840 | size_t i, keylen, ivlen, blocksize, authlen, encrypted_len, aadlen; | ||
841 | int r = SSH_ERR_INTERNAL_ERROR; | ||
842 | |||
843 | if (retp != NULL) | ||
844 | *retp = NULL; | ||
845 | if (state == NULL || | ||
846 | state->enc_keyiv == NULL || | ||
847 | state->enc_ciphername == NULL) | ||
848 | return SSH_ERR_INTERNAL_ERROR; | ||
849 | if ((cipher = cipher_by_name(state->enc_ciphername)) == NULL) { | ||
850 | r = SSH_ERR_INTERNAL_ERROR; | ||
851 | goto out; | ||
852 | } | ||
853 | blocksize = cipher_blocksize(cipher); | ||
854 | keylen = cipher_keylen(cipher); | ||
855 | ivlen = cipher_ivlen(cipher); | ||
856 | authlen = cipher_authlen(cipher); | ||
857 | if (state->enc_keyiv_len != keylen + ivlen) { | ||
858 | r = SSH_ERR_INVALID_FORMAT; | ||
859 | goto out; | ||
860 | } | ||
861 | key = state->enc_keyiv; | ||
862 | if ((encrypted = sshbuf_new()) == NULL || | ||
863 | (encoded = sshbuf_new()) == NULL || | ||
864 | (padded = sshbuf_new()) == NULL || | ||
865 | (iv = malloc(ivlen)) == NULL) { | ||
866 | r = SSH_ERR_ALLOC_FAIL; | ||
867 | goto out; | ||
868 | } | ||
869 | |||
870 | /* replace first 4 bytes of IV with index to ensure uniqueness */ | ||
871 | memcpy(iv, key + keylen, ivlen); | ||
872 | POKE_U32(iv, state->idx); | ||
873 | |||
874 | if ((r = sshbuf_put(encoded, XMSS_MAGIC, sizeof(XMSS_MAGIC))) != 0 || | ||
875 | (r = sshbuf_put_u32(encoded, state->idx)) != 0) | ||
876 | goto out; | ||
877 | |||
878 | /* padded state will be encrypted */ | ||
879 | if ((r = sshbuf_putb(padded, b)) != 0) | ||
880 | goto out; | ||
881 | i = 0; | ||
882 | while (sshbuf_len(padded) % blocksize) { | ||
883 | if ((r = sshbuf_put_u8(padded, ++i & 0xff)) != 0) | ||
884 | goto out; | ||
885 | } | ||
886 | encrypted_len = sshbuf_len(padded); | ||
887 | |||
888 | /* header including the length of state is used as AAD */ | ||
889 | if ((r = sshbuf_put_u32(encoded, encrypted_len)) != 0) | ||
890 | goto out; | ||
891 | aadlen = sshbuf_len(encoded); | ||
892 | |||
893 | /* concat header and state */ | ||
894 | if ((r = sshbuf_putb(encoded, padded)) != 0) | ||
895 | goto out; | ||
896 | |||
897 | /* reserve space for encryption of encoded data plus auth tag */ | ||
898 | /* encrypt at offset addlen */ | ||
899 | if ((r = sshbuf_reserve(encrypted, | ||
900 | encrypted_len + aadlen + authlen, &cp)) != 0 || | ||
901 | (r = cipher_init(&ciphercontext, cipher, key, keylen, | ||
902 | iv, ivlen, 1)) != 0 || | ||
903 | (r = cipher_crypt(ciphercontext, 0, cp, sshbuf_ptr(encoded), | ||
904 | encrypted_len, aadlen, authlen)) != 0) | ||
905 | goto out; | ||
906 | |||
907 | /* success */ | ||
908 | r = 0; | ||
909 | out: | ||
910 | if (retp != NULL) { | ||
911 | *retp = encrypted; | ||
912 | encrypted = NULL; | ||
913 | } | ||
914 | sshbuf_free(padded); | ||
915 | sshbuf_free(encoded); | ||
916 | sshbuf_free(encrypted); | ||
917 | cipher_free(ciphercontext); | ||
918 | free(iv); | ||
919 | return r; | ||
920 | } | ||
921 | |||
922 | int | ||
923 | sshkey_xmss_decrypt_state(const struct sshkey *k, struct sshbuf *encoded, | ||
924 | struct sshbuf **retp) | ||
925 | { | ||
926 | struct ssh_xmss_state *state = k->xmss_state; | ||
927 | struct sshbuf *copy = NULL, *decrypted = NULL; | ||
928 | struct sshcipher_ctx *ciphercontext = NULL; | ||
929 | const struct sshcipher *cipher = NULL; | ||
930 | u_char *key, *iv = NULL, *dp; | ||
931 | size_t keylen, ivlen, authlen, aadlen; | ||
932 | u_int blocksize, encrypted_len, index; | ||
933 | int r = SSH_ERR_INTERNAL_ERROR; | ||
934 | |||
935 | if (retp != NULL) | ||
936 | *retp = NULL; | ||
937 | if (state == NULL || | ||
938 | state->enc_keyiv == NULL || | ||
939 | state->enc_ciphername == NULL) | ||
940 | return SSH_ERR_INTERNAL_ERROR; | ||
941 | if ((cipher = cipher_by_name(state->enc_ciphername)) == NULL) { | ||
942 | r = SSH_ERR_INVALID_FORMAT; | ||
943 | goto out; | ||
944 | } | ||
945 | blocksize = cipher_blocksize(cipher); | ||
946 | keylen = cipher_keylen(cipher); | ||
947 | ivlen = cipher_ivlen(cipher); | ||
948 | authlen = cipher_authlen(cipher); | ||
949 | if (state->enc_keyiv_len != keylen + ivlen) { | ||
950 | r = SSH_ERR_INTERNAL_ERROR; | ||
951 | goto out; | ||
952 | } | ||
953 | key = state->enc_keyiv; | ||
954 | |||
955 | if ((copy = sshbuf_fromb(encoded)) == NULL || | ||
956 | (decrypted = sshbuf_new()) == NULL || | ||
957 | (iv = malloc(ivlen)) == NULL) { | ||
958 | r = SSH_ERR_ALLOC_FAIL; | ||
959 | goto out; | ||
960 | } | ||
961 | |||
962 | /* check magic */ | ||
963 | if (sshbuf_len(encoded) < sizeof(XMSS_MAGIC) || | ||
964 | memcmp(sshbuf_ptr(encoded), XMSS_MAGIC, sizeof(XMSS_MAGIC))) { | ||
965 | r = SSH_ERR_INVALID_FORMAT; | ||
966 | goto out; | ||
967 | } | ||
968 | /* parse public portion */ | ||
969 | if ((r = sshbuf_consume(encoded, sizeof(XMSS_MAGIC))) != 0 || | ||
970 | (r = sshbuf_get_u32(encoded, &index)) != 0 || | ||
971 | (r = sshbuf_get_u32(encoded, &encrypted_len)) != 0) | ||
972 | goto out; | ||
973 | |||
974 | /* check size of encrypted key blob */ | ||
975 | if (encrypted_len < blocksize || (encrypted_len % blocksize) != 0) { | ||
976 | r = SSH_ERR_INVALID_FORMAT; | ||
977 | goto out; | ||
978 | } | ||
979 | /* check that an appropriate amount of auth data is present */ | ||
980 | if (sshbuf_len(encoded) < encrypted_len + authlen) { | ||
981 | r = SSH_ERR_INVALID_FORMAT; | ||
982 | goto out; | ||
983 | } | ||
984 | |||
985 | aadlen = sshbuf_len(copy) - sshbuf_len(encoded); | ||
986 | |||
987 | /* replace first 4 bytes of IV with index to ensure uniqueness */ | ||
988 | memcpy(iv, key + keylen, ivlen); | ||
989 | POKE_U32(iv, index); | ||
990 | |||
991 | /* decrypt private state of key */ | ||
992 | if ((r = sshbuf_reserve(decrypted, aadlen + encrypted_len, &dp)) != 0 || | ||
993 | (r = cipher_init(&ciphercontext, cipher, key, keylen, | ||
994 | iv, ivlen, 0)) != 0 || | ||
995 | (r = cipher_crypt(ciphercontext, 0, dp, sshbuf_ptr(copy), | ||
996 | encrypted_len, aadlen, authlen)) != 0) | ||
997 | goto out; | ||
998 | |||
999 | /* there should be no trailing data */ | ||
1000 | if ((r = sshbuf_consume(encoded, encrypted_len + authlen)) != 0) | ||
1001 | goto out; | ||
1002 | if (sshbuf_len(encoded) != 0) { | ||
1003 | r = SSH_ERR_INVALID_FORMAT; | ||
1004 | goto out; | ||
1005 | } | ||
1006 | |||
1007 | /* remove AAD */ | ||
1008 | if ((r = sshbuf_consume(decrypted, aadlen)) != 0) | ||
1009 | goto out; | ||
1010 | /* XXX encrypted includes unchecked padding */ | ||
1011 | |||
1012 | /* success */ | ||
1013 | r = 0; | ||
1014 | if (retp != NULL) { | ||
1015 | *retp = decrypted; | ||
1016 | decrypted = NULL; | ||
1017 | } | ||
1018 | out: | ||
1019 | cipher_free(ciphercontext); | ||
1020 | sshbuf_free(copy); | ||
1021 | sshbuf_free(decrypted); | ||
1022 | free(iv); | ||
1023 | return r; | ||
1024 | } | ||
1025 | |||
1026 | u_int32_t | ||
1027 | sshkey_xmss_signatures_left(const struct sshkey *k) | ||
1028 | { | ||
1029 | struct ssh_xmss_state *state = k->xmss_state; | ||
1030 | u_int32_t idx; | ||
1031 | |||
1032 | if (sshkey_type_plain(k->type) == KEY_XMSS && state && | ||
1033 | state->maxidx) { | ||
1034 | idx = k->xmss_sk ? PEEK_U32(k->xmss_sk) : state->idx; | ||
1035 | if (idx < state->maxidx) | ||
1036 | return state->maxidx - idx; | ||
1037 | } | ||
1038 | return 0; | ||
1039 | } | ||
1040 | |||
1041 | int | ||
1042 | sshkey_xmss_enable_maxsign(struct sshkey *k, u_int32_t maxsign) | ||
1043 | { | ||
1044 | struct ssh_xmss_state *state = k->xmss_state; | ||
1045 | |||
1046 | if (sshkey_type_plain(k->type) != KEY_XMSS) | ||
1047 | return SSH_ERR_INVALID_ARGUMENT; | ||
1048 | if (maxsign == 0) | ||
1049 | return 0; | ||
1050 | if (state->idx + maxsign < state->idx) | ||
1051 | return SSH_ERR_INVALID_ARGUMENT; | ||
1052 | state->maxidx = state->idx + maxsign; | ||
1053 | return 0; | ||
1054 | } | ||
1055 | #endif /* WITH_XMSS */ | ||
diff --git a/sshkey-xmss.h b/sshkey-xmss.h new file mode 100644 index 000000000..b9f8ead10 --- /dev/null +++ b/sshkey-xmss.h | |||
@@ -0,0 +1,56 @@ | |||
1 | /* $OpenBSD: sshkey-xmss.h,v 1.1 2018/02/23 15:58:38 markus Exp $ */ | ||
2 | /* | ||
3 | * Copyright (c) 2017 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 | #ifndef SSHKEY_XMSS_H | ||
26 | #define SSHKEY_XMSS_H | ||
27 | |||
28 | #define XMSS_SHA2_256_W16_H10_NAME "XMSS_SHA2-256_W16_H10" | ||
29 | #define XMSS_SHA2_256_W16_H16_NAME "XMSS_SHA2-256_W16_H16" | ||
30 | #define XMSS_SHA2_256_W16_H20_NAME "XMSS_SHA2-256_W16_H20" | ||
31 | #define XMSS_DEFAULT_NAME XMSS_SHA2_256_W16_H10_NAME | ||
32 | |||
33 | size_t sshkey_xmss_pklen(const struct sshkey *); | ||
34 | size_t sshkey_xmss_sklen(const struct sshkey *); | ||
35 | int sshkey_xmss_init(struct sshkey *, const char *); | ||
36 | void sshkey_xmss_free_state(struct sshkey *); | ||
37 | int sshkey_xmss_generate_private_key(struct sshkey *, u_int); | ||
38 | int sshkey_xmss_serialize_state(const struct sshkey *, struct sshbuf *); | ||
39 | int sshkey_xmss_serialize_state_opt(const struct sshkey *, struct sshbuf *, | ||
40 | enum sshkey_serialize_rep); | ||
41 | int sshkey_xmss_serialize_pk_info(const struct sshkey *, struct sshbuf *, | ||
42 | enum sshkey_serialize_rep); | ||
43 | int sshkey_xmss_deserialize_state(struct sshkey *, struct sshbuf *); | ||
44 | int sshkey_xmss_deserialize_state_opt(struct sshkey *, struct sshbuf *); | ||
45 | int sshkey_xmss_deserialize_pk_info(struct sshkey *, struct sshbuf *); | ||
46 | |||
47 | int sshkey_xmss_siglen(const struct sshkey *, size_t *); | ||
48 | void *sshkey_xmss_params(const struct sshkey *); | ||
49 | void *sshkey_xmss_bds_state(const struct sshkey *); | ||
50 | int sshkey_xmss_get_state(const struct sshkey *, sshkey_printfn *); | ||
51 | int sshkey_xmss_enable_maxsign(struct sshkey *, u_int32_t); | ||
52 | int sshkey_xmss_forward_state(const struct sshkey *, u_int32_t); | ||
53 | int sshkey_xmss_update_state(const struct sshkey *, sshkey_printfn *); | ||
54 | u_int32_t sshkey_xmss_signatures_left(const struct sshkey *); | ||
55 | |||
56 | #endif /* SSHKEY_XMSS_H */ | ||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sshkey.c,v 1.56 2017/08/12 06:42:52 djm Exp $ */ | 1 | /* $OpenBSD: sshkey.c,v 1.64 2018/03/22 07:05: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 | * Copyright (c) 2008 Alexander von Gernler. All rights reserved. | 4 | * Copyright (c) 2008 Alexander von Gernler. All rights reserved. |
@@ -55,8 +55,11 @@ | |||
55 | #include "digest.h" | 55 | #include "digest.h" |
56 | #define SSHKEY_INTERNAL | 56 | #define SSHKEY_INTERNAL |
57 | #include "sshkey.h" | 57 | #include "sshkey.h" |
58 | #include "sshkey-xmss.h" | ||
58 | #include "match.h" | 59 | #include "match.h" |
59 | 60 | ||
61 | #include "xmss_fast.h" | ||
62 | |||
60 | /* openssh private key file format */ | 63 | /* openssh private key file format */ |
61 | #define MARK_BEGIN "-----BEGIN OPENSSH PRIVATE KEY-----\n" | 64 | #define MARK_BEGIN "-----BEGIN OPENSSH PRIVATE KEY-----\n" |
62 | #define MARK_END "-----END OPENSSH PRIVATE KEY-----\n" | 65 | #define MARK_END "-----END OPENSSH PRIVATE KEY-----\n" |
@@ -71,6 +74,8 @@ | |||
71 | /* Version identification string for SSH v1 identity files. */ | 74 | /* Version identification string for SSH v1 identity files. */ |
72 | #define LEGACY_BEGIN "SSH PRIVATE KEY FILE FORMAT 1.1\n" | 75 | #define LEGACY_BEGIN "SSH PRIVATE KEY FILE FORMAT 1.1\n" |
73 | 76 | ||
77 | int sshkey_private_serialize_opt(const struct sshkey *key, | ||
78 | struct sshbuf *buf, enum sshkey_serialize_rep); | ||
74 | static int sshkey_from_blob_internal(struct sshbuf *buf, | 79 | static int sshkey_from_blob_internal(struct sshbuf *buf, |
75 | struct sshkey **keyp, int allow_cert); | 80 | struct sshkey **keyp, int allow_cert); |
76 | 81 | ||
@@ -87,6 +92,11 @@ static const struct keytype keytypes[] = { | |||
87 | { "ssh-ed25519", "ED25519", KEY_ED25519, 0, 0, 0 }, | 92 | { "ssh-ed25519", "ED25519", KEY_ED25519, 0, 0, 0 }, |
88 | { "ssh-ed25519-cert-v01@openssh.com", "ED25519-CERT", | 93 | { "ssh-ed25519-cert-v01@openssh.com", "ED25519-CERT", |
89 | KEY_ED25519_CERT, 0, 1, 0 }, | 94 | KEY_ED25519_CERT, 0, 1, 0 }, |
95 | #ifdef WITH_XMSS | ||
96 | { "ssh-xmss@openssh.com", "XMSS", KEY_XMSS, 0, 0, 0 }, | ||
97 | { "ssh-xmss-cert-v01@openssh.com", "XMSS-CERT", | ||
98 | KEY_XMSS_CERT, 0, 1, 0 }, | ||
99 | #endif /* WITH_XMSS */ | ||
90 | #ifdef WITH_OPENSSL | 100 | #ifdef WITH_OPENSSL |
91 | { "ssh-rsa", "RSA", KEY_RSA, 0, 0, 0 }, | 101 | { "ssh-rsa", "RSA", KEY_RSA, 0, 0, 0 }, |
92 | { "rsa-sha2-256", "RSA", KEY_RSA, 0, 0, 1 }, | 102 | { "rsa-sha2-256", "RSA", KEY_RSA, 0, 0, 1 }, |
@@ -275,6 +285,8 @@ sshkey_size(const struct sshkey *k) | |||
275 | #endif /* WITH_OPENSSL */ | 285 | #endif /* WITH_OPENSSL */ |
276 | case KEY_ED25519: | 286 | case KEY_ED25519: |
277 | case KEY_ED25519_CERT: | 287 | case KEY_ED25519_CERT: |
288 | case KEY_XMSS: | ||
289 | case KEY_XMSS_CERT: | ||
278 | return 256; /* XXX */ | 290 | return 256; /* XXX */ |
279 | } | 291 | } |
280 | return 0; | 292 | return 0; |
@@ -288,6 +300,7 @@ sshkey_type_is_valid_ca(int type) | |||
288 | case KEY_DSA: | 300 | case KEY_DSA: |
289 | case KEY_ECDSA: | 301 | case KEY_ECDSA: |
290 | case KEY_ED25519: | 302 | case KEY_ED25519: |
303 | case KEY_XMSS: | ||
291 | return 1; | 304 | return 1; |
292 | default: | 305 | default: |
293 | return 0; | 306 | return 0; |
@@ -315,6 +328,8 @@ sshkey_type_plain(int type) | |||
315 | return KEY_ECDSA; | 328 | return KEY_ECDSA; |
316 | case KEY_ED25519_CERT: | 329 | case KEY_ED25519_CERT: |
317 | return KEY_ED25519; | 330 | return KEY_ED25519; |
331 | case KEY_XMSS_CERT: | ||
332 | return KEY_XMSS; | ||
318 | default: | 333 | default: |
319 | return type; | 334 | return type; |
320 | } | 335 | } |
@@ -421,8 +436,7 @@ cert_free(struct sshkey_cert *cert) | |||
421 | free(cert->principals[i]); | 436 | free(cert->principals[i]); |
422 | free(cert->principals); | 437 | free(cert->principals); |
423 | sshkey_free(cert->signature_key); | 438 | sshkey_free(cert->signature_key); |
424 | explicit_bzero(cert, sizeof(*cert)); | 439 | freezero(cert, sizeof(*cert)); |
425 | free(cert); | ||
426 | } | 440 | } |
427 | 441 | ||
428 | static struct sshkey_cert * | 442 | static struct sshkey_cert * |
@@ -463,6 +477,8 @@ sshkey_new(int type) | |||
463 | k->cert = NULL; | 477 | k->cert = NULL; |
464 | k->ed25519_sk = NULL; | 478 | k->ed25519_sk = NULL; |
465 | k->ed25519_pk = NULL; | 479 | k->ed25519_pk = NULL; |
480 | k->xmss_sk = NULL; | ||
481 | k->xmss_pk = NULL; | ||
466 | switch (k->type) { | 482 | switch (k->type) { |
467 | #ifdef WITH_OPENSSL | 483 | #ifdef WITH_OPENSSL |
468 | case KEY_RSA: | 484 | case KEY_RSA: |
@@ -470,8 +486,7 @@ sshkey_new(int type) | |||
470 | if ((rsa = RSA_new()) == NULL || | 486 | if ((rsa = RSA_new()) == NULL || |
471 | (rsa->n = BN_new()) == NULL || | 487 | (rsa->n = BN_new()) == NULL || |
472 | (rsa->e = BN_new()) == NULL) { | 488 | (rsa->e = BN_new()) == NULL) { |
473 | if (rsa != NULL) | 489 | RSA_free(rsa); |
474 | RSA_free(rsa); | ||
475 | free(k); | 490 | free(k); |
476 | return NULL; | 491 | return NULL; |
477 | } | 492 | } |
@@ -484,8 +499,7 @@ sshkey_new(int type) | |||
484 | (dsa->q = BN_new()) == NULL || | 499 | (dsa->q = BN_new()) == NULL || |
485 | (dsa->g = BN_new()) == NULL || | 500 | (dsa->g = BN_new()) == NULL || |
486 | (dsa->pub_key = BN_new()) == NULL) { | 501 | (dsa->pub_key = BN_new()) == NULL) { |
487 | if (dsa != NULL) | 502 | DSA_free(dsa); |
488 | DSA_free(dsa); | ||
489 | free(k); | 503 | free(k); |
490 | return NULL; | 504 | return NULL; |
491 | } | 505 | } |
@@ -498,6 +512,8 @@ sshkey_new(int type) | |||
498 | #endif /* WITH_OPENSSL */ | 512 | #endif /* WITH_OPENSSL */ |
499 | case KEY_ED25519: | 513 | case KEY_ED25519: |
500 | case KEY_ED25519_CERT: | 514 | case KEY_ED25519_CERT: |
515 | case KEY_XMSS: | ||
516 | case KEY_XMSS_CERT: | ||
501 | /* no need to prealloc */ | 517 | /* no need to prealloc */ |
502 | break; | 518 | break; |
503 | case KEY_UNSPEC: | 519 | case KEY_UNSPEC: |
@@ -546,6 +562,8 @@ sshkey_add_private(struct sshkey *k) | |||
546 | #endif /* WITH_OPENSSL */ | 562 | #endif /* WITH_OPENSSL */ |
547 | case KEY_ED25519: | 563 | case KEY_ED25519: |
548 | case KEY_ED25519_CERT: | 564 | case KEY_ED25519_CERT: |
565 | case KEY_XMSS: | ||
566 | case KEY_XMSS_CERT: | ||
549 | /* no need to prealloc */ | 567 | /* no need to prealloc */ |
550 | break; | 568 | break; |
551 | case KEY_UNSPEC: | 569 | case KEY_UNSPEC: |
@@ -579,38 +597,43 @@ sshkey_free(struct sshkey *k) | |||
579 | #ifdef WITH_OPENSSL | 597 | #ifdef WITH_OPENSSL |
580 | case KEY_RSA: | 598 | case KEY_RSA: |
581 | case KEY_RSA_CERT: | 599 | case KEY_RSA_CERT: |
582 | if (k->rsa != NULL) | 600 | RSA_free(k->rsa); |
583 | RSA_free(k->rsa); | ||
584 | k->rsa = NULL; | 601 | k->rsa = NULL; |
585 | break; | 602 | break; |
586 | case KEY_DSA: | 603 | case KEY_DSA: |
587 | case KEY_DSA_CERT: | 604 | case KEY_DSA_CERT: |
588 | if (k->dsa != NULL) | 605 | DSA_free(k->dsa); |
589 | DSA_free(k->dsa); | ||
590 | k->dsa = NULL; | 606 | k->dsa = NULL; |
591 | break; | 607 | break; |
592 | # ifdef OPENSSL_HAS_ECC | 608 | # ifdef OPENSSL_HAS_ECC |
593 | case KEY_ECDSA: | 609 | case KEY_ECDSA: |
594 | case KEY_ECDSA_CERT: | 610 | case KEY_ECDSA_CERT: |
595 | if (k->ecdsa != NULL) | 611 | EC_KEY_free(k->ecdsa); |
596 | EC_KEY_free(k->ecdsa); | ||
597 | k->ecdsa = NULL; | 612 | k->ecdsa = NULL; |
598 | break; | 613 | break; |
599 | # endif /* OPENSSL_HAS_ECC */ | 614 | # endif /* OPENSSL_HAS_ECC */ |
600 | #endif /* WITH_OPENSSL */ | 615 | #endif /* WITH_OPENSSL */ |
601 | case KEY_ED25519: | 616 | case KEY_ED25519: |
602 | case KEY_ED25519_CERT: | 617 | case KEY_ED25519_CERT: |
603 | if (k->ed25519_pk) { | 618 | freezero(k->ed25519_pk, ED25519_PK_SZ); |
604 | explicit_bzero(k->ed25519_pk, ED25519_PK_SZ); | 619 | k->ed25519_pk = NULL; |
605 | free(k->ed25519_pk); | 620 | freezero(k->ed25519_sk, ED25519_SK_SZ); |
606 | k->ed25519_pk = NULL; | 621 | k->ed25519_sk = NULL; |
607 | } | 622 | break; |
608 | if (k->ed25519_sk) { | 623 | #ifdef WITH_XMSS |
609 | explicit_bzero(k->ed25519_sk, ED25519_SK_SZ); | 624 | case KEY_XMSS: |
610 | free(k->ed25519_sk); | 625 | case KEY_XMSS_CERT: |
611 | k->ed25519_sk = NULL; | 626 | freezero(k->xmss_pk, sshkey_xmss_pklen(k)); |
612 | } | 627 | k->xmss_pk = NULL; |
613 | break; | 628 | freezero(k->xmss_sk, sshkey_xmss_sklen(k)); |
629 | k->xmss_sk = NULL; | ||
630 | sshkey_xmss_free_state(k); | ||
631 | free(k->xmss_name); | ||
632 | k->xmss_name = NULL; | ||
633 | free(k->xmss_filename); | ||
634 | k->xmss_filename = NULL; | ||
635 | break; | ||
636 | #endif /* WITH_XMSS */ | ||
614 | case KEY_UNSPEC: | 637 | case KEY_UNSPEC: |
615 | break; | 638 | break; |
616 | default: | 639 | default: |
@@ -618,8 +641,7 @@ sshkey_free(struct sshkey *k) | |||
618 | } | 641 | } |
619 | if (sshkey_is_cert(k)) | 642 | if (sshkey_is_cert(k)) |
620 | cert_free(k->cert); | 643 | cert_free(k->cert); |
621 | explicit_bzero(k, sizeof(*k)); | 644 | freezero(k, sizeof(*k)); |
622 | free(k); | ||
623 | } | 645 | } |
624 | 646 | ||
625 | static int | 647 | static int |
@@ -691,6 +713,13 @@ sshkey_equal_public(const struct sshkey *a, const struct sshkey *b) | |||
691 | case KEY_ED25519_CERT: | 713 | case KEY_ED25519_CERT: |
692 | return a->ed25519_pk != NULL && b->ed25519_pk != NULL && | 714 | return a->ed25519_pk != NULL && b->ed25519_pk != NULL && |
693 | memcmp(a->ed25519_pk, b->ed25519_pk, ED25519_PK_SZ) == 0; | 715 | memcmp(a->ed25519_pk, b->ed25519_pk, ED25519_PK_SZ) == 0; |
716 | #ifdef WITH_XMSS | ||
717 | case KEY_XMSS: | ||
718 | case KEY_XMSS_CERT: | ||
719 | return a->xmss_pk != NULL && b->xmss_pk != NULL && | ||
720 | sshkey_xmss_pklen(a) == sshkey_xmss_pklen(b) && | ||
721 | memcmp(a->xmss_pk, b->xmss_pk, sshkey_xmss_pklen(a)) == 0; | ||
722 | #endif /* WITH_XMSS */ | ||
694 | default: | 723 | default: |
695 | return 0; | 724 | return 0; |
696 | } | 725 | } |
@@ -710,7 +739,8 @@ sshkey_equal(const struct sshkey *a, const struct sshkey *b) | |||
710 | } | 739 | } |
711 | 740 | ||
712 | static int | 741 | static int |
713 | to_blob_buf(const struct sshkey *key, struct sshbuf *b, int force_plain) | 742 | to_blob_buf(const struct sshkey *key, struct sshbuf *b, int force_plain, |
743 | enum sshkey_serialize_rep opts) | ||
714 | { | 744 | { |
715 | int type, ret = SSH_ERR_INTERNAL_ERROR; | 745 | int type, ret = SSH_ERR_INTERNAL_ERROR; |
716 | const char *typename; | 746 | const char *typename; |
@@ -734,6 +764,9 @@ to_blob_buf(const struct sshkey *key, struct sshbuf *b, int force_plain) | |||
734 | case KEY_RSA_CERT: | 764 | case KEY_RSA_CERT: |
735 | #endif /* WITH_OPENSSL */ | 765 | #endif /* WITH_OPENSSL */ |
736 | case KEY_ED25519_CERT: | 766 | case KEY_ED25519_CERT: |
767 | #ifdef WITH_XMSS | ||
768 | case KEY_XMSS_CERT: | ||
769 | #endif /* WITH_XMSS */ | ||
737 | /* Use the existing blob */ | 770 | /* Use the existing blob */ |
738 | /* XXX modified flag? */ | 771 | /* XXX modified flag? */ |
739 | if ((ret = sshbuf_putb(b, key->cert->certblob)) != 0) | 772 | if ((ret = sshbuf_putb(b, key->cert->certblob)) != 0) |
@@ -778,6 +811,19 @@ to_blob_buf(const struct sshkey *key, struct sshbuf *b, int force_plain) | |||
778 | key->ed25519_pk, ED25519_PK_SZ)) != 0) | 811 | key->ed25519_pk, ED25519_PK_SZ)) != 0) |
779 | return ret; | 812 | return ret; |
780 | break; | 813 | break; |
814 | #ifdef WITH_XMSS | ||
815 | case KEY_XMSS: | ||
816 | if (key->xmss_name == NULL || key->xmss_pk == NULL || | ||
817 | sshkey_xmss_pklen(key) == 0) | ||
818 | return SSH_ERR_INVALID_ARGUMENT; | ||
819 | if ((ret = sshbuf_put_cstring(b, typename)) != 0 || | ||
820 | (ret = sshbuf_put_cstring(b, key->xmss_name)) != 0 || | ||
821 | (ret = sshbuf_put_string(b, | ||
822 | key->xmss_pk, sshkey_xmss_pklen(key))) != 0 || | ||
823 | (ret = sshkey_xmss_serialize_pk_info(key, b, opts)) != 0) | ||
824 | return ret; | ||
825 | break; | ||
826 | #endif /* WITH_XMSS */ | ||
781 | default: | 827 | default: |
782 | return SSH_ERR_KEY_TYPE_UNKNOWN; | 828 | return SSH_ERR_KEY_TYPE_UNKNOWN; |
783 | } | 829 | } |
@@ -787,18 +833,19 @@ to_blob_buf(const struct sshkey *key, struct sshbuf *b, int force_plain) | |||
787 | int | 833 | int |
788 | sshkey_putb(const struct sshkey *key, struct sshbuf *b) | 834 | sshkey_putb(const struct sshkey *key, struct sshbuf *b) |
789 | { | 835 | { |
790 | return to_blob_buf(key, b, 0); | 836 | return to_blob_buf(key, b, 0, SSHKEY_SERIALIZE_DEFAULT); |
791 | } | 837 | } |
792 | 838 | ||
793 | int | 839 | int |
794 | sshkey_puts(const struct sshkey *key, struct sshbuf *b) | 840 | sshkey_puts_opts(const struct sshkey *key, struct sshbuf *b, |
841 | enum sshkey_serialize_rep opts) | ||
795 | { | 842 | { |
796 | struct sshbuf *tmp; | 843 | struct sshbuf *tmp; |
797 | int r; | 844 | int r; |
798 | 845 | ||
799 | if ((tmp = sshbuf_new()) == NULL) | 846 | if ((tmp = sshbuf_new()) == NULL) |
800 | return SSH_ERR_ALLOC_FAIL; | 847 | return SSH_ERR_ALLOC_FAIL; |
801 | r = to_blob_buf(key, tmp, 0); | 848 | r = to_blob_buf(key, tmp, 0, opts); |
802 | if (r == 0) | 849 | if (r == 0) |
803 | r = sshbuf_put_stringb(b, tmp); | 850 | r = sshbuf_put_stringb(b, tmp); |
804 | sshbuf_free(tmp); | 851 | sshbuf_free(tmp); |
@@ -806,13 +853,20 @@ sshkey_puts(const struct sshkey *key, struct sshbuf *b) | |||
806 | } | 853 | } |
807 | 854 | ||
808 | int | 855 | int |
856 | sshkey_puts(const struct sshkey *key, struct sshbuf *b) | ||
857 | { | ||
858 | return sshkey_puts_opts(key, b, SSHKEY_SERIALIZE_DEFAULT); | ||
859 | } | ||
860 | |||
861 | int | ||
809 | sshkey_putb_plain(const struct sshkey *key, struct sshbuf *b) | 862 | sshkey_putb_plain(const struct sshkey *key, struct sshbuf *b) |
810 | { | 863 | { |
811 | return to_blob_buf(key, b, 1); | 864 | return to_blob_buf(key, b, 1, SSHKEY_SERIALIZE_DEFAULT); |
812 | } | 865 | } |
813 | 866 | ||
814 | static int | 867 | static int |
815 | to_blob(const struct sshkey *key, u_char **blobp, size_t *lenp, int force_plain) | 868 | to_blob(const struct sshkey *key, u_char **blobp, size_t *lenp, int force_plain, |
869 | enum sshkey_serialize_rep opts) | ||
816 | { | 870 | { |
817 | int ret = SSH_ERR_INTERNAL_ERROR; | 871 | int ret = SSH_ERR_INTERNAL_ERROR; |
818 | size_t len; | 872 | size_t len; |
@@ -824,7 +878,7 @@ to_blob(const struct sshkey *key, u_char **blobp, size_t *lenp, int force_plain) | |||
824 | *blobp = NULL; | 878 | *blobp = NULL; |
825 | if ((b = sshbuf_new()) == NULL) | 879 | if ((b = sshbuf_new()) == NULL) |
826 | return SSH_ERR_ALLOC_FAIL; | 880 | return SSH_ERR_ALLOC_FAIL; |
827 | if ((ret = to_blob_buf(key, b, force_plain)) != 0) | 881 | if ((ret = to_blob_buf(key, b, force_plain, opts)) != 0) |
828 | goto out; | 882 | goto out; |
829 | len = sshbuf_len(b); | 883 | len = sshbuf_len(b); |
830 | if (lenp != NULL) | 884 | if (lenp != NULL) |
@@ -845,13 +899,13 @@ to_blob(const struct sshkey *key, u_char **blobp, size_t *lenp, int force_plain) | |||
845 | int | 899 | int |
846 | sshkey_to_blob(const struct sshkey *key, u_char **blobp, size_t *lenp) | 900 | sshkey_to_blob(const struct sshkey *key, u_char **blobp, size_t *lenp) |
847 | { | 901 | { |
848 | return to_blob(key, blobp, lenp, 0); | 902 | return to_blob(key, blobp, lenp, 0, SSHKEY_SERIALIZE_DEFAULT); |
849 | } | 903 | } |
850 | 904 | ||
851 | int | 905 | int |
852 | sshkey_plain_to_blob(const struct sshkey *key, u_char **blobp, size_t *lenp) | 906 | sshkey_plain_to_blob(const struct sshkey *key, u_char **blobp, size_t *lenp) |
853 | { | 907 | { |
854 | return to_blob(key, blobp, lenp, 1); | 908 | return to_blob(key, blobp, lenp, 1, SSHKEY_SERIALIZE_DEFAULT); |
855 | } | 909 | } |
856 | 910 | ||
857 | int | 911 | int |
@@ -870,7 +924,8 @@ sshkey_fingerprint_raw(const struct sshkey *k, int dgst_alg, | |||
870 | r = SSH_ERR_INVALID_ARGUMENT; | 924 | r = SSH_ERR_INVALID_ARGUMENT; |
871 | goto out; | 925 | goto out; |
872 | } | 926 | } |
873 | if ((r = to_blob(k, &blob, &blob_len, 1)) != 0) | 927 | if ((r = to_blob(k, &blob, &blob_len, 1, SSHKEY_SERIALIZE_DEFAULT)) |
928 | != 0) | ||
874 | goto out; | 929 | goto out; |
875 | if ((ret = calloc(1, SSH_DIGEST_MAX_LENGTH)) == NULL) { | 930 | if ((ret = calloc(1, SSH_DIGEST_MAX_LENGTH)) == NULL) { |
876 | r = SSH_ERR_ALLOC_FAIL; | 931 | r = SSH_ERR_ALLOC_FAIL; |
@@ -912,8 +967,7 @@ fingerprint_b64(const char *alg, u_char *dgst_raw, size_t dgst_raw_len) | |||
912 | return ret; | 967 | return ret; |
913 | if ((r = b64_ntop(dgst_raw, dgst_raw_len, | 968 | if ((r = b64_ntop(dgst_raw, dgst_raw_len, |
914 | ret + plen, rlen - plen)) == -1) { | 969 | ret + plen, rlen - plen)) == -1) { |
915 | explicit_bzero(ret, rlen); | 970 | freezero(ret, rlen); |
916 | free(ret); | ||
917 | return NULL; | 971 | return NULL; |
918 | } | 972 | } |
919 | /* Trim padding characters from end */ | 973 | /* Trim padding characters from end */ |
@@ -1162,22 +1216,37 @@ sshkey_fingerprint(const struct sshkey *k, int dgst_alg, | |||
1162 | return retval; | 1216 | return retval; |
1163 | } | 1217 | } |
1164 | 1218 | ||
1219 | static int | ||
1220 | peek_type_nid(const char *s, size_t l, int *nid) | ||
1221 | { | ||
1222 | const struct keytype *kt; | ||
1223 | |||
1224 | for (kt = keytypes; kt->type != -1; kt++) { | ||
1225 | if (kt->name == NULL || strlen(kt->name) != l) | ||
1226 | continue; | ||
1227 | if (memcmp(s, kt->name, l) == 0) { | ||
1228 | *nid = -1; | ||
1229 | if (kt->type == KEY_ECDSA || kt->type == KEY_ECDSA_CERT) | ||
1230 | *nid = kt->nid; | ||
1231 | return kt->type; | ||
1232 | } | ||
1233 | } | ||
1234 | return KEY_UNSPEC; | ||
1235 | } | ||
1165 | 1236 | ||
1166 | /* returns 0 ok, and < 0 error */ | 1237 | /* XXX this can now be made const char * */ |
1167 | int | 1238 | int |
1168 | sshkey_read(struct sshkey *ret, char **cpp) | 1239 | sshkey_read(struct sshkey *ret, char **cpp) |
1169 | { | 1240 | { |
1170 | struct sshkey *k; | 1241 | struct sshkey *k; |
1171 | int retval = SSH_ERR_INVALID_FORMAT; | 1242 | char *cp, *blobcopy; |
1172 | char *ep, *cp, *space; | 1243 | size_t space; |
1173 | int r, type, curve_nid = -1; | 1244 | int r, type, curve_nid = -1; |
1174 | struct sshbuf *blob; | 1245 | struct sshbuf *blob; |
1175 | 1246 | ||
1176 | if (ret == NULL) | 1247 | if (ret == NULL) |
1177 | return SSH_ERR_INVALID_ARGUMENT; | 1248 | return SSH_ERR_INVALID_ARGUMENT; |
1178 | 1249 | ||
1179 | cp = *cpp; | ||
1180 | |||
1181 | switch (ret->type) { | 1250 | switch (ret->type) { |
1182 | case KEY_UNSPEC: | 1251 | case KEY_UNSPEC: |
1183 | case KEY_RSA: | 1252 | case KEY_RSA: |
@@ -1188,120 +1257,147 @@ sshkey_read(struct sshkey *ret, char **cpp) | |||
1188 | case KEY_ECDSA_CERT: | 1257 | case KEY_ECDSA_CERT: |
1189 | case KEY_RSA_CERT: | 1258 | case KEY_RSA_CERT: |
1190 | case KEY_ED25519_CERT: | 1259 | case KEY_ED25519_CERT: |
1191 | space = strchr(cp, ' '); | 1260 | #ifdef WITH_XMSS |
1192 | if (space == NULL) | 1261 | case KEY_XMSS: |
1193 | return SSH_ERR_INVALID_FORMAT; | 1262 | case KEY_XMSS_CERT: |
1194 | *space = '\0'; | 1263 | #endif /* WITH_XMSS */ |
1195 | type = sshkey_type_from_name(cp); | 1264 | break; /* ok */ |
1196 | if (sshkey_type_plain(type) == KEY_ECDSA && | 1265 | default: |
1197 | (curve_nid = sshkey_ecdsa_nid_from_name(cp)) == -1) | 1266 | return SSH_ERR_INVALID_ARGUMENT; |
1198 | return SSH_ERR_EC_CURVE_INVALID; | 1267 | } |
1199 | *space = ' '; | 1268 | |
1200 | if (type == KEY_UNSPEC) | 1269 | /* Decode type */ |
1201 | return SSH_ERR_INVALID_FORMAT; | 1270 | cp = *cpp; |
1202 | cp = space+1; | 1271 | space = strcspn(cp, " \t"); |
1203 | if (*cp == '\0') | 1272 | if (space == strlen(cp)) |
1204 | return SSH_ERR_INVALID_FORMAT; | 1273 | return SSH_ERR_INVALID_FORMAT; |
1205 | if (ret->type != KEY_UNSPEC && ret->type != type) | 1274 | if ((type = peek_type_nid(cp, space, &curve_nid)) == KEY_UNSPEC) |
1206 | return SSH_ERR_KEY_TYPE_MISMATCH; | 1275 | return SSH_ERR_INVALID_FORMAT; |
1207 | if ((blob = sshbuf_new()) == NULL) | 1276 | |
1208 | return SSH_ERR_ALLOC_FAIL; | 1277 | /* skip whitespace */ |
1209 | /* trim comment */ | 1278 | for (cp += space; *cp == ' ' || *cp == '\t'; cp++) |
1210 | space = strchr(cp, ' '); | 1279 | ; |
1211 | if (space) { | 1280 | if (*cp == '\0') |
1212 | /* advance 'space': skip whitespace */ | 1281 | return SSH_ERR_INVALID_FORMAT; |
1213 | *space++ = '\0'; | 1282 | if (ret->type != KEY_UNSPEC && ret->type != type) |
1214 | while (*space == ' ' || *space == '\t') | 1283 | return SSH_ERR_KEY_TYPE_MISMATCH; |
1215 | space++; | 1284 | if ((blob = sshbuf_new()) == NULL) |
1216 | ep = space; | 1285 | return SSH_ERR_ALLOC_FAIL; |
1217 | } else | 1286 | |
1218 | ep = cp + strlen(cp); | 1287 | /* find end of keyblob and decode */ |
1219 | if ((r = sshbuf_b64tod(blob, cp)) != 0) { | 1288 | space = strcspn(cp, " \t"); |
1220 | sshbuf_free(blob); | 1289 | if ((blobcopy = strndup(cp, space)) == NULL) { |
1221 | return r; | ||
1222 | } | ||
1223 | if ((r = sshkey_from_blob(sshbuf_ptr(blob), | ||
1224 | sshbuf_len(blob), &k)) != 0) { | ||
1225 | sshbuf_free(blob); | ||
1226 | return r; | ||
1227 | } | ||
1228 | sshbuf_free(blob); | 1290 | sshbuf_free(blob); |
1229 | if (k->type != type) { | 1291 | return SSH_ERR_ALLOC_FAIL; |
1230 | sshkey_free(k); | 1292 | } |
1231 | return SSH_ERR_KEY_TYPE_MISMATCH; | 1293 | if ((r = sshbuf_b64tod(blob, blobcopy)) != 0) { |
1232 | } | 1294 | free(blobcopy); |
1233 | if (sshkey_type_plain(type) == KEY_ECDSA && | 1295 | sshbuf_free(blob); |
1234 | curve_nid != k->ecdsa_nid) { | 1296 | return r; |
1297 | } | ||
1298 | free(blobcopy); | ||
1299 | if ((r = sshkey_fromb(blob, &k)) != 0) { | ||
1300 | sshbuf_free(blob); | ||
1301 | return r; | ||
1302 | } | ||
1303 | sshbuf_free(blob); | ||
1304 | |||
1305 | /* skip whitespace and leave cp at start of comment */ | ||
1306 | for (cp += space; *cp == ' ' || *cp == '\t'; cp++) | ||
1307 | ; | ||
1308 | |||
1309 | /* ensure type of blob matches type at start of line */ | ||
1310 | if (k->type != type) { | ||
1311 | sshkey_free(k); | ||
1312 | return SSH_ERR_KEY_TYPE_MISMATCH; | ||
1313 | } | ||
1314 | if (sshkey_type_plain(type) == KEY_ECDSA && curve_nid != k->ecdsa_nid) { | ||
1315 | sshkey_free(k); | ||
1316 | return SSH_ERR_EC_CURVE_MISMATCH; | ||
1317 | } | ||
1318 | |||
1319 | /* Fill in ret from parsed key */ | ||
1320 | ret->type = type; | ||
1321 | if (sshkey_is_cert(ret)) { | ||
1322 | if (!sshkey_is_cert(k)) { | ||
1235 | sshkey_free(k); | 1323 | sshkey_free(k); |
1236 | return SSH_ERR_EC_CURVE_MISMATCH; | 1324 | return SSH_ERR_EXPECTED_CERT; |
1237 | } | ||
1238 | ret->type = type; | ||
1239 | if (sshkey_is_cert(ret)) { | ||
1240 | if (!sshkey_is_cert(k)) { | ||
1241 | sshkey_free(k); | ||
1242 | return SSH_ERR_EXPECTED_CERT; | ||
1243 | } | ||
1244 | if (ret->cert != NULL) | ||
1245 | cert_free(ret->cert); | ||
1246 | ret->cert = k->cert; | ||
1247 | k->cert = NULL; | ||
1248 | } | 1325 | } |
1249 | switch (sshkey_type_plain(ret->type)) { | 1326 | if (ret->cert != NULL) |
1327 | cert_free(ret->cert); | ||
1328 | ret->cert = k->cert; | ||
1329 | k->cert = NULL; | ||
1330 | } | ||
1331 | switch (sshkey_type_plain(ret->type)) { | ||
1250 | #ifdef WITH_OPENSSL | 1332 | #ifdef WITH_OPENSSL |
1251 | case KEY_RSA: | 1333 | case KEY_RSA: |
1252 | if (ret->rsa != NULL) | 1334 | RSA_free(ret->rsa); |
1253 | RSA_free(ret->rsa); | 1335 | ret->rsa = k->rsa; |
1254 | ret->rsa = k->rsa; | 1336 | k->rsa = NULL; |
1255 | k->rsa = NULL; | ||
1256 | #ifdef DEBUG_PK | 1337 | #ifdef DEBUG_PK |
1257 | RSA_print_fp(stderr, ret->rsa, 8); | 1338 | RSA_print_fp(stderr, ret->rsa, 8); |
1258 | #endif | 1339 | #endif |
1259 | break; | 1340 | break; |
1260 | case KEY_DSA: | 1341 | case KEY_DSA: |
1261 | if (ret->dsa != NULL) | 1342 | DSA_free(ret->dsa); |
1262 | DSA_free(ret->dsa); | 1343 | ret->dsa = k->dsa; |
1263 | ret->dsa = k->dsa; | 1344 | k->dsa = NULL; |
1264 | k->dsa = NULL; | ||
1265 | #ifdef DEBUG_PK | 1345 | #ifdef DEBUG_PK |
1266 | DSA_print_fp(stderr, ret->dsa, 8); | 1346 | DSA_print_fp(stderr, ret->dsa, 8); |
1267 | #endif | 1347 | #endif |
1268 | break; | 1348 | break; |
1269 | # ifdef OPENSSL_HAS_ECC | 1349 | # ifdef OPENSSL_HAS_ECC |
1270 | case KEY_ECDSA: | 1350 | case KEY_ECDSA: |
1271 | if (ret->ecdsa != NULL) | 1351 | EC_KEY_free(ret->ecdsa); |
1272 | EC_KEY_free(ret->ecdsa); | 1352 | ret->ecdsa = k->ecdsa; |
1273 | ret->ecdsa = k->ecdsa; | 1353 | ret->ecdsa_nid = k->ecdsa_nid; |
1274 | ret->ecdsa_nid = k->ecdsa_nid; | 1354 | k->ecdsa = NULL; |
1275 | k->ecdsa = NULL; | 1355 | k->ecdsa_nid = -1; |
1276 | k->ecdsa_nid = -1; | ||
1277 | #ifdef DEBUG_PK | 1356 | #ifdef DEBUG_PK |
1278 | sshkey_dump_ec_key(ret->ecdsa); | 1357 | sshkey_dump_ec_key(ret->ecdsa); |
1279 | #endif | 1358 | #endif |
1280 | break; | 1359 | break; |
1281 | # endif /* OPENSSL_HAS_ECC */ | 1360 | # endif /* OPENSSL_HAS_ECC */ |
1282 | #endif /* WITH_OPENSSL */ | 1361 | #endif /* WITH_OPENSSL */ |
1283 | case KEY_ED25519: | 1362 | case KEY_ED25519: |
1284 | free(ret->ed25519_pk); | 1363 | freezero(ret->ed25519_pk, ED25519_PK_SZ); |
1285 | ret->ed25519_pk = k->ed25519_pk; | 1364 | ret->ed25519_pk = k->ed25519_pk; |
1286 | k->ed25519_pk = NULL; | 1365 | k->ed25519_pk = NULL; |
1287 | #ifdef DEBUG_PK | 1366 | #ifdef DEBUG_PK |
1288 | /* XXX */ | 1367 | /* XXX */ |
1289 | #endif | 1368 | #endif |
1290 | break; | ||
1291 | } | ||
1292 | *cpp = ep; | ||
1293 | retval = 0; | ||
1294 | /*XXXX*/ | ||
1295 | sshkey_free(k); | ||
1296 | if (retval != 0) | ||
1297 | break; | ||
1298 | break; | 1369 | break; |
1370 | #ifdef WITH_XMSS | ||
1371 | case KEY_XMSS: | ||
1372 | free(ret->xmss_pk); | ||
1373 | ret->xmss_pk = k->xmss_pk; | ||
1374 | k->xmss_pk = NULL; | ||
1375 | free(ret->xmss_state); | ||
1376 | ret->xmss_state = k->xmss_state; | ||
1377 | k->xmss_state = NULL; | ||
1378 | free(ret->xmss_name); | ||
1379 | ret->xmss_name = k->xmss_name; | ||
1380 | k->xmss_name = NULL; | ||
1381 | free(ret->xmss_filename); | ||
1382 | ret->xmss_filename = k->xmss_filename; | ||
1383 | k->xmss_filename = NULL; | ||
1384 | #ifdef DEBUG_PK | ||
1385 | /* XXX */ | ||
1386 | #endif | ||
1387 | break; | ||
1388 | #endif /* WITH_XMSS */ | ||
1299 | default: | 1389 | default: |
1300 | return SSH_ERR_INVALID_ARGUMENT; | 1390 | sshkey_free(k); |
1391 | return SSH_ERR_INTERNAL_ERROR; | ||
1301 | } | 1392 | } |
1302 | return retval; | 1393 | sshkey_free(k); |
1394 | |||
1395 | /* success */ | ||
1396 | *cpp = cp; | ||
1397 | return 0; | ||
1303 | } | 1398 | } |
1304 | 1399 | ||
1400 | |||
1305 | int | 1401 | int |
1306 | sshkey_to_base64(const struct sshkey *key, char **b64p) | 1402 | sshkey_to_base64(const struct sshkey *key, char **b64p) |
1307 | { | 1403 | { |
@@ -1411,10 +1507,8 @@ rsa_generate_private_key(u_int bits, RSA **rsap) | |||
1411 | private = NULL; | 1507 | private = NULL; |
1412 | ret = 0; | 1508 | ret = 0; |
1413 | out: | 1509 | out: |
1414 | if (private != NULL) | 1510 | RSA_free(private); |
1415 | RSA_free(private); | 1511 | BN_free(f4); |
1416 | if (f4 != NULL) | ||
1417 | BN_free(f4); | ||
1418 | return ret; | 1512 | return ret; |
1419 | } | 1513 | } |
1420 | 1514 | ||
@@ -1442,8 +1536,7 @@ dsa_generate_private_key(u_int bits, DSA **dsap) | |||
1442 | private = NULL; | 1536 | private = NULL; |
1443 | ret = 0; | 1537 | ret = 0; |
1444 | out: | 1538 | out: |
1445 | if (private != NULL) | 1539 | DSA_free(private); |
1446 | DSA_free(private); | ||
1447 | return ret; | 1540 | return ret; |
1448 | } | 1541 | } |
1449 | 1542 | ||
@@ -1522,8 +1615,7 @@ ecdsa_generate_private_key(u_int bits, int *nid, EC_KEY **ecdsap) | |||
1522 | private = NULL; | 1615 | private = NULL; |
1523 | ret = 0; | 1616 | ret = 0; |
1524 | out: | 1617 | out: |
1525 | if (private != NULL) | 1618 | EC_KEY_free(private); |
1526 | EC_KEY_free(private); | ||
1527 | return ret; | 1619 | return ret; |
1528 | } | 1620 | } |
1529 | # endif /* OPENSSL_HAS_ECC */ | 1621 | # endif /* OPENSSL_HAS_ECC */ |
@@ -1550,6 +1642,11 @@ sshkey_generate(int type, u_int bits, struct sshkey **keyp) | |||
1550 | crypto_sign_ed25519_keypair(k->ed25519_pk, k->ed25519_sk); | 1642 | crypto_sign_ed25519_keypair(k->ed25519_pk, k->ed25519_sk); |
1551 | ret = 0; | 1643 | ret = 0; |
1552 | break; | 1644 | break; |
1645 | #ifdef WITH_XMSS | ||
1646 | case KEY_XMSS: | ||
1647 | ret = sshkey_xmss_generate_private_key(k, bits); | ||
1648 | break; | ||
1649 | #endif /* WITH_XMSS */ | ||
1553 | #ifdef WITH_OPENSSL | 1650 | #ifdef WITH_OPENSSL |
1554 | case KEY_DSA: | 1651 | case KEY_DSA: |
1555 | ret = dsa_generate_private_key(bits, &k->dsa); | 1652 | ret = dsa_generate_private_key(bits, &k->dsa); |
@@ -1693,6 +1790,29 @@ sshkey_from_private(const struct sshkey *k, struct sshkey **pkp) | |||
1693 | memcpy(n->ed25519_pk, k->ed25519_pk, ED25519_PK_SZ); | 1790 | memcpy(n->ed25519_pk, k->ed25519_pk, ED25519_PK_SZ); |
1694 | } | 1791 | } |
1695 | break; | 1792 | break; |
1793 | #ifdef WITH_XMSS | ||
1794 | case KEY_XMSS: | ||
1795 | case KEY_XMSS_CERT: | ||
1796 | if ((n = sshkey_new(k->type)) == NULL) | ||
1797 | return SSH_ERR_ALLOC_FAIL; | ||
1798 | if ((ret = sshkey_xmss_init(n, k->xmss_name)) != 0) { | ||
1799 | sshkey_free(n); | ||
1800 | return ret; | ||
1801 | } | ||
1802 | if (k->xmss_pk != NULL) { | ||
1803 | size_t pklen = sshkey_xmss_pklen(k); | ||
1804 | if (pklen == 0 || sshkey_xmss_pklen(n) != pklen) { | ||
1805 | sshkey_free(n); | ||
1806 | return SSH_ERR_INTERNAL_ERROR; | ||
1807 | } | ||
1808 | if ((n->xmss_pk = malloc(pklen)) == NULL) { | ||
1809 | sshkey_free(n); | ||
1810 | return SSH_ERR_ALLOC_FAIL; | ||
1811 | } | ||
1812 | memcpy(n->xmss_pk, k->xmss_pk, pklen); | ||
1813 | } | ||
1814 | break; | ||
1815 | #endif /* WITH_XMSS */ | ||
1696 | default: | 1816 | default: |
1697 | return SSH_ERR_KEY_TYPE_UNKNOWN; | 1817 | return SSH_ERR_KEY_TYPE_UNKNOWN; |
1698 | } | 1818 | } |
@@ -1815,7 +1935,7 @@ cert_parse(struct sshbuf *b, struct sshkey *key, struct sshbuf *certbuf) | |||
1815 | goto out; | 1935 | goto out; |
1816 | } | 1936 | } |
1817 | if ((ret = sshkey_verify(key->cert->signature_key, sig, slen, | 1937 | if ((ret = sshkey_verify(key->cert->signature_key, sig, slen, |
1818 | sshbuf_ptr(key->cert->certblob), signed_len, 0)) != 0) | 1938 | sshbuf_ptr(key->cert->certblob), signed_len, NULL, 0)) != 0) |
1819 | goto out; | 1939 | goto out; |
1820 | 1940 | ||
1821 | /* Success */ | 1941 | /* Success */ |
@@ -1834,7 +1954,7 @@ sshkey_from_blob_internal(struct sshbuf *b, struct sshkey **keyp, | |||
1834 | int allow_cert) | 1954 | int allow_cert) |
1835 | { | 1955 | { |
1836 | int type, ret = SSH_ERR_INTERNAL_ERROR; | 1956 | int type, ret = SSH_ERR_INTERNAL_ERROR; |
1837 | char *ktype = NULL, *curve = NULL; | 1957 | char *ktype = NULL, *curve = NULL, *xmss_name = NULL; |
1838 | struct sshkey *key = NULL; | 1958 | struct sshkey *key = NULL; |
1839 | size_t len; | 1959 | size_t len; |
1840 | u_char *pk = NULL; | 1960 | u_char *pk = NULL; |
@@ -1934,8 +2054,7 @@ sshkey_from_blob_internal(struct sshbuf *b, struct sshkey **keyp, | |||
1934 | ret = SSH_ERR_EC_CURVE_MISMATCH; | 2054 | ret = SSH_ERR_EC_CURVE_MISMATCH; |
1935 | goto out; | 2055 | goto out; |
1936 | } | 2056 | } |
1937 | if (key->ecdsa != NULL) | 2057 | EC_KEY_free(key->ecdsa); |
1938 | EC_KEY_free(key->ecdsa); | ||
1939 | if ((key->ecdsa = EC_KEY_new_by_curve_name(key->ecdsa_nid)) | 2058 | if ((key->ecdsa = EC_KEY_new_by_curve_name(key->ecdsa_nid)) |
1940 | == NULL) { | 2059 | == NULL) { |
1941 | ret = SSH_ERR_EC_CURVE_INVALID; | 2060 | ret = SSH_ERR_EC_CURVE_INVALID; |
@@ -1986,6 +2105,36 @@ sshkey_from_blob_internal(struct sshbuf *b, struct sshkey **keyp, | |||
1986 | key->ed25519_pk = pk; | 2105 | key->ed25519_pk = pk; |
1987 | pk = NULL; | 2106 | pk = NULL; |
1988 | break; | 2107 | break; |
2108 | #ifdef WITH_XMSS | ||
2109 | case KEY_XMSS_CERT: | ||
2110 | /* Skip nonce */ | ||
2111 | if (sshbuf_get_string_direct(b, NULL, NULL) != 0) { | ||
2112 | ret = SSH_ERR_INVALID_FORMAT; | ||
2113 | goto out; | ||
2114 | } | ||
2115 | /* FALLTHROUGH */ | ||
2116 | case KEY_XMSS: | ||
2117 | if ((ret = sshbuf_get_cstring(b, &xmss_name, NULL)) != 0) | ||
2118 | goto out; | ||
2119 | if ((key = sshkey_new(type)) == NULL) { | ||
2120 | ret = SSH_ERR_ALLOC_FAIL; | ||
2121 | goto out; | ||
2122 | } | ||
2123 | if ((ret = sshkey_xmss_init(key, xmss_name)) != 0) | ||
2124 | goto out; | ||
2125 | if ((ret = sshbuf_get_string(b, &pk, &len)) != 0) | ||
2126 | goto out; | ||
2127 | if (len == 0 || len != sshkey_xmss_pklen(key)) { | ||
2128 | ret = SSH_ERR_INVALID_FORMAT; | ||
2129 | goto out; | ||
2130 | } | ||
2131 | key->xmss_pk = pk; | ||
2132 | pk = NULL; | ||
2133 | if (type != KEY_XMSS_CERT && | ||
2134 | (ret = sshkey_xmss_deserialize_pk_info(key, b)) != 0) | ||
2135 | goto out; | ||
2136 | break; | ||
2137 | #endif /* WITH_XMSS */ | ||
1989 | case KEY_UNSPEC: | 2138 | case KEY_UNSPEC: |
1990 | default: | 2139 | default: |
1991 | ret = SSH_ERR_KEY_TYPE_UNKNOWN; | 2140 | ret = SSH_ERR_KEY_TYPE_UNKNOWN; |
@@ -2008,12 +2157,12 @@ sshkey_from_blob_internal(struct sshbuf *b, struct sshkey **keyp, | |||
2008 | out: | 2157 | out: |
2009 | sshbuf_free(copy); | 2158 | sshbuf_free(copy); |
2010 | sshkey_free(key); | 2159 | sshkey_free(key); |
2160 | free(xmss_name); | ||
2011 | free(ktype); | 2161 | free(ktype); |
2012 | free(curve); | 2162 | free(curve); |
2013 | free(pk); | 2163 | free(pk); |
2014 | #if defined(WITH_OPENSSL) && defined(OPENSSL_HAS_ECC) | 2164 | #if defined(WITH_OPENSSL) && defined(OPENSSL_HAS_ECC) |
2015 | if (q != NULL) | 2165 | EC_POINT_free(q); |
2016 | EC_POINT_free(q); | ||
2017 | #endif /* WITH_OPENSSL && OPENSSL_HAS_ECC */ | 2166 | #endif /* WITH_OPENSSL && OPENSSL_HAS_ECC */ |
2018 | return ret; | 2167 | return ret; |
2019 | } | 2168 | } |
@@ -2051,6 +2200,31 @@ sshkey_froms(struct sshbuf *buf, struct sshkey **keyp) | |||
2051 | } | 2200 | } |
2052 | 2201 | ||
2053 | int | 2202 | int |
2203 | sshkey_sigtype(const u_char *sig, size_t siglen, char **sigtypep) | ||
2204 | { | ||
2205 | int r; | ||
2206 | struct sshbuf *b = NULL; | ||
2207 | char *sigtype = NULL; | ||
2208 | |||
2209 | if (sigtypep != NULL) | ||
2210 | *sigtypep = NULL; | ||
2211 | if ((b = sshbuf_from(sig, siglen)) == NULL) | ||
2212 | return SSH_ERR_ALLOC_FAIL; | ||
2213 | if ((r = sshbuf_get_cstring(b, &sigtype, NULL)) != 0) | ||
2214 | goto out; | ||
2215 | /* success */ | ||
2216 | if (sigtypep != NULL) { | ||
2217 | *sigtypep = sigtype; | ||
2218 | sigtype = NULL; | ||
2219 | } | ||
2220 | r = 0; | ||
2221 | out: | ||
2222 | free(sigtype); | ||
2223 | sshbuf_free(b); | ||
2224 | return r; | ||
2225 | } | ||
2226 | |||
2227 | int | ||
2054 | sshkey_sign(const struct sshkey *key, | 2228 | sshkey_sign(const struct sshkey *key, |
2055 | u_char **sigp, size_t *lenp, | 2229 | u_char **sigp, size_t *lenp, |
2056 | const u_char *data, size_t datalen, const char *alg, u_int compat) | 2230 | const u_char *data, size_t datalen, const char *alg, u_int compat) |
@@ -2078,6 +2252,11 @@ sshkey_sign(const struct sshkey *key, | |||
2078 | case KEY_ED25519: | 2252 | case KEY_ED25519: |
2079 | case KEY_ED25519_CERT: | 2253 | case KEY_ED25519_CERT: |
2080 | return ssh_ed25519_sign(key, sigp, lenp, data, datalen, compat); | 2254 | return ssh_ed25519_sign(key, sigp, lenp, data, datalen, compat); |
2255 | #ifdef WITH_XMSS | ||
2256 | case KEY_XMSS: | ||
2257 | case KEY_XMSS_CERT: | ||
2258 | return ssh_xmss_sign(key, sigp, lenp, data, datalen, compat); | ||
2259 | #endif /* WITH_XMSS */ | ||
2081 | default: | 2260 | default: |
2082 | return SSH_ERR_KEY_TYPE_UNKNOWN; | 2261 | return SSH_ERR_KEY_TYPE_UNKNOWN; |
2083 | } | 2262 | } |
@@ -2085,11 +2264,12 @@ sshkey_sign(const struct sshkey *key, | |||
2085 | 2264 | ||
2086 | /* | 2265 | /* |
2087 | * ssh_key_verify returns 0 for a correct signature and < 0 on error. | 2266 | * ssh_key_verify returns 0 for a correct signature and < 0 on error. |
2267 | * If "alg" specified, then the signature must use that algorithm. | ||
2088 | */ | 2268 | */ |
2089 | int | 2269 | int |
2090 | sshkey_verify(const struct sshkey *key, | 2270 | sshkey_verify(const struct sshkey *key, |
2091 | const u_char *sig, size_t siglen, | 2271 | const u_char *sig, size_t siglen, |
2092 | const u_char *data, size_t dlen, u_int compat) | 2272 | const u_char *data, size_t dlen, const char *alg, u_int compat) |
2093 | { | 2273 | { |
2094 | if (siglen == 0 || dlen > SSH_KEY_MAX_SIGN_DATA_SIZE) | 2274 | if (siglen == 0 || dlen > SSH_KEY_MAX_SIGN_DATA_SIZE) |
2095 | return SSH_ERR_INVALID_ARGUMENT; | 2275 | return SSH_ERR_INVALID_ARGUMENT; |
@@ -2105,11 +2285,16 @@ sshkey_verify(const struct sshkey *key, | |||
2105 | # endif /* OPENSSL_HAS_ECC */ | 2285 | # endif /* OPENSSL_HAS_ECC */ |
2106 | case KEY_RSA_CERT: | 2286 | case KEY_RSA_CERT: |
2107 | case KEY_RSA: | 2287 | case KEY_RSA: |
2108 | return ssh_rsa_verify(key, sig, siglen, data, dlen); | 2288 | return ssh_rsa_verify(key, sig, siglen, data, dlen, alg); |
2109 | #endif /* WITH_OPENSSL */ | 2289 | #endif /* WITH_OPENSSL */ |
2110 | case KEY_ED25519: | 2290 | case KEY_ED25519: |
2111 | case KEY_ED25519_CERT: | 2291 | case KEY_ED25519_CERT: |
2112 | return ssh_ed25519_verify(key, sig, siglen, data, dlen, compat); | 2292 | return ssh_ed25519_verify(key, sig, siglen, data, dlen, compat); |
2293 | #ifdef WITH_XMSS | ||
2294 | case KEY_XMSS: | ||
2295 | case KEY_XMSS_CERT: | ||
2296 | return ssh_xmss_verify(key, sig, siglen, data, dlen, compat); | ||
2297 | #endif /* WITH_XMSS */ | ||
2113 | default: | 2298 | default: |
2114 | return SSH_ERR_KEY_TYPE_UNKNOWN; | 2299 | return SSH_ERR_KEY_TYPE_UNKNOWN; |
2115 | } | 2300 | } |
@@ -2133,6 +2318,8 @@ sshkey_demote(const struct sshkey *k, struct sshkey **dkp) | |||
2133 | pk->rsa = NULL; | 2318 | pk->rsa = NULL; |
2134 | pk->ed25519_pk = NULL; | 2319 | pk->ed25519_pk = NULL; |
2135 | pk->ed25519_sk = NULL; | 2320 | pk->ed25519_sk = NULL; |
2321 | pk->xmss_pk = NULL; | ||
2322 | pk->xmss_sk = NULL; | ||
2136 | 2323 | ||
2137 | switch (k->type) { | 2324 | switch (k->type) { |
2138 | #ifdef WITH_OPENSSL | 2325 | #ifdef WITH_OPENSSL |
@@ -2194,6 +2381,29 @@ sshkey_demote(const struct sshkey *k, struct sshkey **dkp) | |||
2194 | memcpy(pk->ed25519_pk, k->ed25519_pk, ED25519_PK_SZ); | 2381 | memcpy(pk->ed25519_pk, k->ed25519_pk, ED25519_PK_SZ); |
2195 | } | 2382 | } |
2196 | break; | 2383 | break; |
2384 | #ifdef WITH_XMSS | ||
2385 | case KEY_XMSS_CERT: | ||
2386 | if ((ret = sshkey_cert_copy(k, pk)) != 0) | ||
2387 | goto fail; | ||
2388 | /* FALLTHROUGH */ | ||
2389 | case KEY_XMSS: | ||
2390 | if ((ret = sshkey_xmss_init(pk, k->xmss_name)) != 0) | ||
2391 | goto fail; | ||
2392 | if (k->xmss_pk != NULL) { | ||
2393 | size_t pklen = sshkey_xmss_pklen(k); | ||
2394 | |||
2395 | if (pklen == 0 || sshkey_xmss_pklen(pk) != pklen) { | ||
2396 | ret = SSH_ERR_INTERNAL_ERROR; | ||
2397 | goto fail; | ||
2398 | } | ||
2399 | if ((pk->xmss_pk = malloc(pklen)) == NULL) { | ||
2400 | ret = SSH_ERR_ALLOC_FAIL; | ||
2401 | goto fail; | ||
2402 | } | ||
2403 | memcpy(pk->xmss_pk, k->xmss_pk, pklen); | ||
2404 | } | ||
2405 | break; | ||
2406 | #endif /* WITH_XMSS */ | ||
2197 | default: | 2407 | default: |
2198 | ret = SSH_ERR_KEY_TYPE_UNKNOWN; | 2408 | ret = SSH_ERR_KEY_TYPE_UNKNOWN; |
2199 | fail: | 2409 | fail: |
@@ -2225,6 +2435,11 @@ sshkey_to_certified(struct sshkey *k) | |||
2225 | case KEY_ED25519: | 2435 | case KEY_ED25519: |
2226 | newtype = KEY_ED25519_CERT; | 2436 | newtype = KEY_ED25519_CERT; |
2227 | break; | 2437 | break; |
2438 | #ifdef WITH_XMSS | ||
2439 | case KEY_XMSS: | ||
2440 | newtype = KEY_XMSS_CERT; | ||
2441 | break; | ||
2442 | #endif /* WITH_XMSS */ | ||
2228 | default: | 2443 | default: |
2229 | return SSH_ERR_INVALID_ARGUMENT; | 2444 | return SSH_ERR_INVALID_ARGUMENT; |
2230 | } | 2445 | } |
@@ -2309,6 +2524,18 @@ sshkey_certify_custom(struct sshkey *k, struct sshkey *ca, const char *alg, | |||
2309 | k->ed25519_pk, ED25519_PK_SZ)) != 0) | 2524 | k->ed25519_pk, ED25519_PK_SZ)) != 0) |
2310 | goto out; | 2525 | goto out; |
2311 | break; | 2526 | break; |
2527 | #ifdef WITH_XMSS | ||
2528 | case KEY_XMSS_CERT: | ||
2529 | if (k->xmss_name == NULL) { | ||
2530 | ret = SSH_ERR_INVALID_ARGUMENT; | ||
2531 | goto out; | ||
2532 | } | ||
2533 | if ((ret = sshbuf_put_cstring(cert, k->xmss_name)) || | ||
2534 | (ret = sshbuf_put_string(cert, | ||
2535 | k->xmss_pk, sshkey_xmss_pklen(k))) != 0) | ||
2536 | goto out; | ||
2537 | break; | ||
2538 | #endif /* WITH_XMSS */ | ||
2312 | default: | 2539 | default: |
2313 | ret = SSH_ERR_INVALID_ARGUMENT; | 2540 | ret = SSH_ERR_INVALID_ARGUMENT; |
2314 | goto out; | 2541 | goto out; |
@@ -2466,7 +2693,8 @@ sshkey_format_cert_validity(const struct sshkey_cert *cert, char *s, size_t l) | |||
2466 | } | 2693 | } |
2467 | 2694 | ||
2468 | int | 2695 | int |
2469 | sshkey_private_serialize(const struct sshkey *key, struct sshbuf *b) | 2696 | sshkey_private_serialize_opt(const struct sshkey *key, struct sshbuf *b, |
2697 | enum sshkey_serialize_rep opts) | ||
2470 | { | 2698 | { |
2471 | int r = SSH_ERR_INTERNAL_ERROR; | 2699 | int r = SSH_ERR_INTERNAL_ERROR; |
2472 | 2700 | ||
@@ -2552,6 +2780,36 @@ sshkey_private_serialize(const struct sshkey *key, struct sshbuf *b) | |||
2552 | ED25519_SK_SZ)) != 0) | 2780 | ED25519_SK_SZ)) != 0) |
2553 | goto out; | 2781 | goto out; |
2554 | break; | 2782 | break; |
2783 | #ifdef WITH_XMSS | ||
2784 | case KEY_XMSS: | ||
2785 | if (key->xmss_name == NULL) { | ||
2786 | r = SSH_ERR_INVALID_ARGUMENT; | ||
2787 | goto out; | ||
2788 | } | ||
2789 | if ((r = sshbuf_put_cstring(b, key->xmss_name)) != 0 || | ||
2790 | (r = sshbuf_put_string(b, key->xmss_pk, | ||
2791 | sshkey_xmss_pklen(key))) != 0 || | ||
2792 | (r = sshbuf_put_string(b, key->xmss_sk, | ||
2793 | sshkey_xmss_sklen(key))) != 0 || | ||
2794 | (r = sshkey_xmss_serialize_state_opt(key, b, opts)) != 0) | ||
2795 | goto out; | ||
2796 | break; | ||
2797 | case KEY_XMSS_CERT: | ||
2798 | if (key->cert == NULL || sshbuf_len(key->cert->certblob) == 0 || | ||
2799 | key->xmss_name == NULL) { | ||
2800 | r = SSH_ERR_INVALID_ARGUMENT; | ||
2801 | goto out; | ||
2802 | } | ||
2803 | if ((r = sshbuf_put_stringb(b, key->cert->certblob)) != 0 || | ||
2804 | (r = sshbuf_put_cstring(b, key->xmss_name)) != 0 || | ||
2805 | (r = sshbuf_put_string(b, key->xmss_pk, | ||
2806 | sshkey_xmss_pklen(key))) != 0 || | ||
2807 | (r = sshbuf_put_string(b, key->xmss_sk, | ||
2808 | sshkey_xmss_sklen(key))) != 0 || | ||
2809 | (r = sshkey_xmss_serialize_state_opt(key, b, opts)) != 0) | ||
2810 | goto out; | ||
2811 | break; | ||
2812 | #endif /* WITH_XMSS */ | ||
2555 | default: | 2813 | default: |
2556 | r = SSH_ERR_INVALID_ARGUMENT; | 2814 | r = SSH_ERR_INVALID_ARGUMENT; |
2557 | goto out; | 2815 | goto out; |
@@ -2563,13 +2821,21 @@ sshkey_private_serialize(const struct sshkey *key, struct sshbuf *b) | |||
2563 | } | 2821 | } |
2564 | 2822 | ||
2565 | int | 2823 | int |
2824 | sshkey_private_serialize(const struct sshkey *key, struct sshbuf *b) | ||
2825 | { | ||
2826 | return sshkey_private_serialize_opt(key, b, | ||
2827 | SSHKEY_SERIALIZE_DEFAULT); | ||
2828 | } | ||
2829 | |||
2830 | int | ||
2566 | sshkey_private_deserialize(struct sshbuf *buf, struct sshkey **kp) | 2831 | sshkey_private_deserialize(struct sshbuf *buf, struct sshkey **kp) |
2567 | { | 2832 | { |
2568 | char *tname = NULL, *curve = NULL; | 2833 | char *tname = NULL, *curve = NULL, *xmss_name = NULL; |
2569 | struct sshkey *k = NULL; | 2834 | struct sshkey *k = NULL; |
2570 | size_t pklen = 0, sklen = 0; | 2835 | size_t pklen = 0, sklen = 0; |
2571 | int type, r = SSH_ERR_INTERNAL_ERROR; | 2836 | int type, r = SSH_ERR_INTERNAL_ERROR; |
2572 | u_char *ed25519_pk = NULL, *ed25519_sk = NULL; | 2837 | u_char *ed25519_pk = NULL, *ed25519_sk = NULL; |
2838 | u_char *xmss_pk = NULL, *xmss_sk = NULL; | ||
2573 | #ifdef WITH_OPENSSL | 2839 | #ifdef WITH_OPENSSL |
2574 | BIGNUM *exponent = NULL; | 2840 | BIGNUM *exponent = NULL; |
2575 | #endif /* WITH_OPENSSL */ | 2841 | #endif /* WITH_OPENSSL */ |
@@ -2714,6 +2980,53 @@ sshkey_private_deserialize(struct sshbuf *buf, struct sshkey **kp) | |||
2714 | k->ed25519_sk = ed25519_sk; | 2980 | k->ed25519_sk = ed25519_sk; |
2715 | ed25519_pk = ed25519_sk = NULL; | 2981 | ed25519_pk = ed25519_sk = NULL; |
2716 | break; | 2982 | break; |
2983 | #ifdef WITH_XMSS | ||
2984 | case KEY_XMSS: | ||
2985 | if ((k = sshkey_new_private(type)) == NULL) { | ||
2986 | r = SSH_ERR_ALLOC_FAIL; | ||
2987 | goto out; | ||
2988 | } | ||
2989 | if ((r = sshbuf_get_cstring(buf, &xmss_name, NULL)) != 0 || | ||
2990 | (r = sshkey_xmss_init(k, xmss_name)) != 0 || | ||
2991 | (r = sshbuf_get_string(buf, &xmss_pk, &pklen)) != 0 || | ||
2992 | (r = sshbuf_get_string(buf, &xmss_sk, &sklen)) != 0) | ||
2993 | goto out; | ||
2994 | if (pklen != sshkey_xmss_pklen(k) || | ||
2995 | sklen != sshkey_xmss_sklen(k)) { | ||
2996 | r = SSH_ERR_INVALID_FORMAT; | ||
2997 | goto out; | ||
2998 | } | ||
2999 | k->xmss_pk = xmss_pk; | ||
3000 | k->xmss_sk = xmss_sk; | ||
3001 | xmss_pk = xmss_sk = NULL; | ||
3002 | /* optional internal state */ | ||
3003 | if ((r = sshkey_xmss_deserialize_state_opt(k, buf)) != 0) | ||
3004 | goto out; | ||
3005 | break; | ||
3006 | case KEY_XMSS_CERT: | ||
3007 | if ((r = sshkey_froms(buf, &k)) != 0 || | ||
3008 | (r = sshkey_add_private(k)) != 0 || | ||
3009 | (r = sshbuf_get_cstring(buf, &xmss_name, NULL)) != 0 || | ||
3010 | (r = sshbuf_get_string(buf, &xmss_pk, &pklen)) != 0 || | ||
3011 | (r = sshbuf_get_string(buf, &xmss_sk, &sklen)) != 0) | ||
3012 | goto out; | ||
3013 | if (strcmp(xmss_name, k->xmss_name)) { | ||
3014 | r = SSH_ERR_INVALID_FORMAT; | ||
3015 | goto out; | ||
3016 | } | ||
3017 | if (pklen != sshkey_xmss_pklen(k) || | ||
3018 | sklen != sshkey_xmss_sklen(k)) { | ||
3019 | r = SSH_ERR_INVALID_FORMAT; | ||
3020 | goto out; | ||
3021 | } | ||
3022 | k->xmss_pk = xmss_pk; | ||
3023 | k->xmss_sk = xmss_sk; | ||
3024 | xmss_pk = xmss_sk = NULL; | ||
3025 | /* optional internal state */ | ||
3026 | if ((r = sshkey_xmss_deserialize_state_opt(k, buf)) != 0) | ||
3027 | goto out; | ||
3028 | break; | ||
3029 | #endif /* WITH_XMSS */ | ||
2717 | default: | 3030 | default: |
2718 | r = SSH_ERR_KEY_TYPE_UNKNOWN; | 3031 | r = SSH_ERR_KEY_TYPE_UNKNOWN; |
2719 | goto out; | 3032 | goto out; |
@@ -2740,18 +3053,14 @@ sshkey_private_deserialize(struct sshbuf *buf, struct sshkey **kp) | |||
2740 | free(tname); | 3053 | free(tname); |
2741 | free(curve); | 3054 | free(curve); |
2742 | #ifdef WITH_OPENSSL | 3055 | #ifdef WITH_OPENSSL |
2743 | if (exponent != NULL) | 3056 | BN_clear_free(exponent); |
2744 | BN_clear_free(exponent); | ||
2745 | #endif /* WITH_OPENSSL */ | 3057 | #endif /* WITH_OPENSSL */ |
2746 | sshkey_free(k); | 3058 | sshkey_free(k); |
2747 | if (ed25519_pk != NULL) { | 3059 | freezero(ed25519_pk, pklen); |
2748 | explicit_bzero(ed25519_pk, pklen); | 3060 | freezero(ed25519_sk, sklen); |
2749 | free(ed25519_pk); | 3061 | free(xmss_name); |
2750 | } | 3062 | freezero(xmss_pk, pklen); |
2751 | if (ed25519_sk != NULL) { | 3063 | freezero(xmss_sk, sklen); |
2752 | explicit_bzero(ed25519_sk, sklen); | ||
2753 | free(ed25519_sk); | ||
2754 | } | ||
2755 | return r; | 3064 | return r; |
2756 | } | 3065 | } |
2757 | 3066 | ||
@@ -2829,8 +3138,7 @@ sshkey_ec_validate_public(const EC_GROUP *group, const EC_POINT *public) | |||
2829 | ret = 0; | 3138 | ret = 0; |
2830 | out: | 3139 | out: |
2831 | BN_CTX_free(bnctx); | 3140 | BN_CTX_free(bnctx); |
2832 | if (nq != NULL) | 3141 | EC_POINT_free(nq); |
2833 | EC_POINT_free(nq); | ||
2834 | return ret; | 3142 | return ret; |
2835 | } | 3143 | } |
2836 | 3144 | ||
@@ -3007,7 +3315,8 @@ sshkey_private_to_blob2(const struct sshkey *prv, struct sshbuf *blob, | |||
3007 | goto out; | 3315 | goto out; |
3008 | 3316 | ||
3009 | /* append private key and comment*/ | 3317 | /* append private key and comment*/ |
3010 | if ((r = sshkey_private_serialize(prv, encrypted)) != 0 || | 3318 | if ((r = sshkey_private_serialize_opt(prv, encrypted, |
3319 | SSHKEY_SERIALIZE_FULL)) != 0 || | ||
3011 | (r = sshbuf_put_cstring(encrypted, comment)) != 0) | 3320 | (r = sshbuf_put_cstring(encrypted, comment)) != 0) |
3012 | goto out; | 3321 | goto out; |
3013 | 3322 | ||
@@ -3305,7 +3614,7 @@ sshkey_private_pem_to_blob(struct sshkey *key, struct sshbuf *blob, | |||
3305 | int blen, len = strlen(_passphrase); | 3614 | int blen, len = strlen(_passphrase); |
3306 | u_char *passphrase = (len > 0) ? (u_char *)_passphrase : NULL; | 3615 | u_char *passphrase = (len > 0) ? (u_char *)_passphrase : NULL; |
3307 | const EVP_CIPHER *cipher = (len > 0) ? EVP_aes_128_cbc() : NULL; | 3616 | const EVP_CIPHER *cipher = (len > 0) ? EVP_aes_128_cbc() : NULL; |
3308 | const u_char *bptr; | 3617 | char *bptr; |
3309 | BIO *bio = NULL; | 3618 | BIO *bio = NULL; |
3310 | 3619 | ||
3311 | if (len > 0 && len <= 4) | 3620 | if (len > 0 && len <= 4) |
@@ -3368,6 +3677,9 @@ sshkey_private_to_fileblob(struct sshkey *key, struct sshbuf *blob, | |||
3368 | passphrase, comment); | 3677 | passphrase, comment); |
3369 | #endif /* WITH_OPENSSL */ | 3678 | #endif /* WITH_OPENSSL */ |
3370 | case KEY_ED25519: | 3679 | case KEY_ED25519: |
3680 | #ifdef WITH_XMSS | ||
3681 | case KEY_XMSS: | ||
3682 | #endif /* WITH_XMSS */ | ||
3371 | return sshkey_private_to_blob2(key, blob, passphrase, | 3683 | return sshkey_private_to_blob2(key, blob, passphrase, |
3372 | comment, new_format_cipher, new_format_rounds); | 3684 | comment, new_format_cipher, new_format_rounds); |
3373 | default: | 3685 | default: |
@@ -3525,8 +3837,7 @@ sshkey_parse_private_pem_fileblob(struct sshbuf *blob, int type, | |||
3525 | } | 3837 | } |
3526 | out: | 3838 | out: |
3527 | BIO_free(bio); | 3839 | BIO_free(bio); |
3528 | if (pk != NULL) | 3840 | EVP_PKEY_free(pk); |
3529 | EVP_PKEY_free(pk); | ||
3530 | sshkey_free(prv); | 3841 | sshkey_free(prv); |
3531 | return r; | 3842 | return r; |
3532 | } | 3843 | } |
@@ -3552,6 +3863,9 @@ sshkey_parse_private_fileblob_type(struct sshbuf *blob, int type, | |||
3552 | passphrase, keyp); | 3863 | passphrase, keyp); |
3553 | #endif /* WITH_OPENSSL */ | 3864 | #endif /* WITH_OPENSSL */ |
3554 | case KEY_ED25519: | 3865 | case KEY_ED25519: |
3866 | #ifdef WITH_XMSS | ||
3867 | case KEY_XMSS: | ||
3868 | #endif /* WITH_XMSS */ | ||
3555 | return sshkey_parse_private2(blob, type, passphrase, | 3869 | return sshkey_parse_private2(blob, type, passphrase, |
3556 | keyp, commentp); | 3870 | keyp, commentp); |
3557 | case KEY_UNSPEC: | 3871 | case KEY_UNSPEC: |
@@ -3583,3 +3897,90 @@ sshkey_parse_private_fileblob(struct sshbuf *buffer, const char *passphrase, | |||
3583 | return sshkey_parse_private_fileblob_type(buffer, KEY_UNSPEC, | 3897 | return sshkey_parse_private_fileblob_type(buffer, KEY_UNSPEC, |
3584 | passphrase, keyp, commentp); | 3898 | passphrase, keyp, commentp); |
3585 | } | 3899 | } |
3900 | |||
3901 | #ifdef WITH_XMSS | ||
3902 | /* | ||
3903 | * serialize the key with the current state and forward the state | ||
3904 | * maxsign times. | ||
3905 | */ | ||
3906 | int | ||
3907 | sshkey_private_serialize_maxsign(const struct sshkey *k, struct sshbuf *b, | ||
3908 | u_int32_t maxsign, sshkey_printfn *pr) | ||
3909 | { | ||
3910 | int r, rupdate; | ||
3911 | |||
3912 | if (maxsign == 0 || | ||
3913 | sshkey_type_plain(k->type) != KEY_XMSS) | ||
3914 | return sshkey_private_serialize_opt(k, b, | ||
3915 | SSHKEY_SERIALIZE_DEFAULT); | ||
3916 | if ((r = sshkey_xmss_get_state(k, pr)) != 0 || | ||
3917 | (r = sshkey_private_serialize_opt(k, b, | ||
3918 | SSHKEY_SERIALIZE_STATE)) != 0 || | ||
3919 | (r = sshkey_xmss_forward_state(k, maxsign)) != 0) | ||
3920 | goto out; | ||
3921 | r = 0; | ||
3922 | out: | ||
3923 | if ((rupdate = sshkey_xmss_update_state(k, pr)) != 0) { | ||
3924 | if (r == 0) | ||
3925 | r = rupdate; | ||
3926 | } | ||
3927 | return r; | ||
3928 | } | ||
3929 | |||
3930 | u_int32_t | ||
3931 | sshkey_signatures_left(const struct sshkey *k) | ||
3932 | { | ||
3933 | if (sshkey_type_plain(k->type) == KEY_XMSS) | ||
3934 | return sshkey_xmss_signatures_left(k); | ||
3935 | return 0; | ||
3936 | } | ||
3937 | |||
3938 | int | ||
3939 | sshkey_enable_maxsign(struct sshkey *k, u_int32_t maxsign) | ||
3940 | { | ||
3941 | if (sshkey_type_plain(k->type) != KEY_XMSS) | ||
3942 | return SSH_ERR_INVALID_ARGUMENT; | ||
3943 | return sshkey_xmss_enable_maxsign(k, maxsign); | ||
3944 | } | ||
3945 | |||
3946 | int | ||
3947 | sshkey_set_filename(struct sshkey *k, const char *filename) | ||
3948 | { | ||
3949 | if (k == NULL) | ||
3950 | return SSH_ERR_INVALID_ARGUMENT; | ||
3951 | if (sshkey_type_plain(k->type) != KEY_XMSS) | ||
3952 | return 0; | ||
3953 | if (filename == NULL) | ||
3954 | return SSH_ERR_INVALID_ARGUMENT; | ||
3955 | if ((k->xmss_filename = strdup(filename)) == NULL) | ||
3956 | return SSH_ERR_ALLOC_FAIL; | ||
3957 | return 0; | ||
3958 | } | ||
3959 | #else | ||
3960 | int | ||
3961 | sshkey_private_serialize_maxsign(const struct sshkey *k, struct sshbuf *b, | ||
3962 | u_int32_t maxsign, sshkey_printfn *pr) | ||
3963 | { | ||
3964 | return sshkey_private_serialize_opt(k, b, SSHKEY_SERIALIZE_DEFAULT); | ||
3965 | } | ||
3966 | |||
3967 | u_int32_t | ||
3968 | sshkey_signatures_left(const struct sshkey *k) | ||
3969 | { | ||
3970 | return 0; | ||
3971 | } | ||
3972 | |||
3973 | int | ||
3974 | sshkey_enable_maxsign(struct sshkey *k, u_int32_t maxsign) | ||
3975 | { | ||
3976 | return SSH_ERR_INVALID_ARGUMENT; | ||
3977 | } | ||
3978 | |||
3979 | int | ||
3980 | sshkey_set_filename(struct sshkey *k, const char *filename) | ||
3981 | { | ||
3982 | if (k == NULL) | ||
3983 | return SSH_ERR_INVALID_ARGUMENT; | ||
3984 | return 0; | ||
3985 | } | ||
3986 | #endif /* WITH_XMSS */ | ||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: sshkey.h,v 1.21 2017/07/01 13:50:45 djm Exp $ */ | 1 | /* $OpenBSD: sshkey.h,v 1.24 2018/02/23 15:58:38 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. |
@@ -61,6 +61,8 @@ enum sshkey_types { | |||
61 | KEY_DSA_CERT, | 61 | KEY_DSA_CERT, |
62 | KEY_ECDSA_CERT, | 62 | KEY_ECDSA_CERT, |
63 | KEY_ED25519_CERT, | 63 | KEY_ED25519_CERT, |
64 | KEY_XMSS, | ||
65 | KEY_XMSS_CERT, | ||
64 | KEY_NULL, | 66 | KEY_NULL, |
65 | KEY_UNSPEC | 67 | KEY_UNSPEC |
66 | }; | 68 | }; |
@@ -77,6 +79,14 @@ enum sshkey_fp_rep { | |||
77 | SSH_FP_RANDOMART | 79 | SSH_FP_RANDOMART |
78 | }; | 80 | }; |
79 | 81 | ||
82 | /* Private key serialisation formats, used on the wire */ | ||
83 | enum sshkey_serialize_rep { | ||
84 | SSHKEY_SERIALIZE_DEFAULT = 0, | ||
85 | SSHKEY_SERIALIZE_STATE = 1, | ||
86 | SSHKEY_SERIALIZE_FULL = 2, | ||
87 | SSHKEY_SERIALIZE_INFO = 254, | ||
88 | }; | ||
89 | |||
80 | /* key is stored in external hardware */ | 90 | /* key is stored in external hardware */ |
81 | #define SSHKEY_FLAG_EXT 0x0001 | 91 | #define SSHKEY_FLAG_EXT 0x0001 |
82 | 92 | ||
@@ -105,6 +115,11 @@ struct sshkey { | |||
105 | EC_KEY *ecdsa; | 115 | EC_KEY *ecdsa; |
106 | u_char *ed25519_sk; | 116 | u_char *ed25519_sk; |
107 | u_char *ed25519_pk; | 117 | u_char *ed25519_pk; |
118 | char *xmss_name; | ||
119 | char *xmss_filename; /* for state file updates */ | ||
120 | void *xmss_state; /* depends on xmss_name, opaque */ | ||
121 | u_char *xmss_sk; | ||
122 | u_char *xmss_pk; | ||
108 | struct sshkey_cert *cert; | 123 | struct sshkey_cert *cert; |
109 | }; | 124 | }; |
110 | 125 | ||
@@ -172,13 +187,16 @@ int sshkey_to_blob(const struct sshkey *, u_char **, size_t *); | |||
172 | int sshkey_to_base64(const struct sshkey *, char **); | 187 | int sshkey_to_base64(const struct sshkey *, char **); |
173 | int sshkey_putb(const struct sshkey *, struct sshbuf *); | 188 | int sshkey_putb(const struct sshkey *, struct sshbuf *); |
174 | int sshkey_puts(const struct sshkey *, struct sshbuf *); | 189 | int sshkey_puts(const struct sshkey *, struct sshbuf *); |
190 | int sshkey_puts_opts(const struct sshkey *, struct sshbuf *, | ||
191 | enum sshkey_serialize_rep); | ||
175 | int sshkey_plain_to_blob(const struct sshkey *, u_char **, size_t *); | 192 | int sshkey_plain_to_blob(const struct sshkey *, u_char **, size_t *); |
176 | int sshkey_putb_plain(const struct sshkey *, struct sshbuf *); | 193 | int sshkey_putb_plain(const struct sshkey *, struct sshbuf *); |
177 | 194 | ||
195 | int sshkey_sigtype(const u_char *, size_t, char **); | ||
178 | int sshkey_sign(const struct sshkey *, u_char **, size_t *, | 196 | int sshkey_sign(const struct sshkey *, u_char **, size_t *, |
179 | const u_char *, size_t, const char *, u_int); | 197 | const u_char *, size_t, const char *, u_int); |
180 | int sshkey_verify(const struct sshkey *, const u_char *, size_t, | 198 | int sshkey_verify(const struct sshkey *, const u_char *, size_t, |
181 | const u_char *, size_t, u_int); | 199 | const u_char *, size_t, const char *, u_int); |
182 | 200 | ||
183 | /* for debug */ | 201 | /* for debug */ |
184 | void sshkey_dump_ec_point(const EC_GROUP *, const EC_POINT *); | 202 | void sshkey_dump_ec_point(const EC_GROUP *, const EC_POINT *); |
@@ -186,6 +204,8 @@ void sshkey_dump_ec_key(const EC_KEY *); | |||
186 | 204 | ||
187 | /* private key parsing and serialisation */ | 205 | /* private key parsing and serialisation */ |
188 | int sshkey_private_serialize(const struct sshkey *key, struct sshbuf *buf); | 206 | int sshkey_private_serialize(const struct sshkey *key, struct sshbuf *buf); |
207 | int sshkey_private_serialize_opt(const struct sshkey *key, struct sshbuf *buf, | ||
208 | enum sshkey_serialize_rep); | ||
189 | int sshkey_private_deserialize(struct sshbuf *buf, struct sshkey **keyp); | 209 | int sshkey_private_deserialize(struct sshbuf *buf, struct sshkey **keyp); |
190 | 210 | ||
191 | /* private key file format parsing and serialisation */ | 211 | /* private key file format parsing and serialisation */ |
@@ -200,12 +220,26 @@ int sshkey_parse_private_fileblob_type(struct sshbuf *blob, int type, | |||
200 | /* XXX should be internal, but used by ssh-keygen */ | 220 | /* XXX should be internal, but used by ssh-keygen */ |
201 | int ssh_rsa_generate_additional_parameters(struct sshkey *); | 221 | int ssh_rsa_generate_additional_parameters(struct sshkey *); |
202 | 222 | ||
223 | /* stateful keys (e.g. XMSS) */ | ||
224 | #ifdef NO_ATTRIBUTE_ON_PROTOTYPE_ARGS | ||
225 | typedef void sshkey_printfn(const char *, ...); | ||
226 | #else | ||
227 | typedef void sshkey_printfn(const char *, ...) __attribute__((format(printf, 1, 2))); | ||
228 | #endif | ||
229 | int sshkey_set_filename(struct sshkey *, const char *); | ||
230 | int sshkey_enable_maxsign(struct sshkey *, u_int32_t); | ||
231 | u_int32_t sshkey_signatures_left(const struct sshkey *); | ||
232 | int sshkey_forward_state(const struct sshkey *, u_int32_t, sshkey_printfn *); | ||
233 | int sshkey_private_serialize_maxsign(const struct sshkey *key, struct sshbuf *buf, | ||
234 | u_int32_t maxsign, sshkey_printfn *pr); | ||
235 | |||
203 | #ifdef SSHKEY_INTERNAL | 236 | #ifdef SSHKEY_INTERNAL |
204 | int ssh_rsa_sign(const struct sshkey *key, | 237 | int ssh_rsa_sign(const struct sshkey *key, |
205 | u_char **sigp, size_t *lenp, const u_char *data, size_t datalen, | 238 | u_char **sigp, size_t *lenp, const u_char *data, size_t datalen, |
206 | const char *ident); | 239 | const char *ident); |
207 | int ssh_rsa_verify(const struct sshkey *key, | 240 | int ssh_rsa_verify(const struct sshkey *key, |
208 | const u_char *sig, size_t siglen, const u_char *data, size_t datalen); | 241 | const u_char *sig, size_t siglen, const u_char *data, size_t datalen, |
242 | const char *alg); | ||
209 | int ssh_dss_sign(const struct sshkey *key, u_char **sigp, size_t *lenp, | 243 | int ssh_dss_sign(const struct sshkey *key, u_char **sigp, size_t *lenp, |
210 | const u_char *data, size_t datalen, u_int compat); | 244 | const u_char *data, size_t datalen, u_int compat); |
211 | int ssh_dss_verify(const struct sshkey *key, | 245 | int ssh_dss_verify(const struct sshkey *key, |
@@ -221,6 +255,11 @@ int ssh_ed25519_sign(const struct sshkey *key, u_char **sigp, size_t *lenp, | |||
221 | int ssh_ed25519_verify(const struct sshkey *key, | 255 | int ssh_ed25519_verify(const struct sshkey *key, |
222 | const u_char *signature, size_t signaturelen, | 256 | const u_char *signature, size_t signaturelen, |
223 | const u_char *data, size_t datalen, u_int compat); | 257 | const u_char *data, size_t datalen, u_int compat); |
258 | int ssh_xmss_sign(const struct sshkey *key, u_char **sigp, size_t *lenp, | ||
259 | const u_char *data, size_t datalen, u_int compat); | ||
260 | int ssh_xmss_verify(const struct sshkey *key, | ||
261 | const u_char *signature, size_t signaturelen, | ||
262 | const u_char *data, size_t datalen, u_int compat); | ||
224 | #endif | 263 | #endif |
225 | 264 | ||
226 | #if !defined(WITH_OPENSSL) | 265 | #if !defined(WITH_OPENSSL) |
@@ -100,30 +100,6 @@ pty_make_controlling_tty(int *ttyfd, const char *tty) | |||
100 | { | 100 | { |
101 | int fd; | 101 | int fd; |
102 | 102 | ||
103 | #ifdef _UNICOS | ||
104 | if (setsid() < 0) | ||
105 | error("setsid: %.100s", strerror(errno)); | ||
106 | |||
107 | fd = open(tty, O_RDWR|O_NOCTTY); | ||
108 | if (fd != -1) { | ||
109 | signal(SIGHUP, SIG_IGN); | ||
110 | ioctl(fd, TCVHUP, (char *)NULL); | ||
111 | signal(SIGHUP, SIG_DFL); | ||
112 | setpgid(0, 0); | ||
113 | close(fd); | ||
114 | } else { | ||
115 | error("Failed to disconnect from controlling tty."); | ||
116 | } | ||
117 | |||
118 | debug("Setting controlling tty using TCSETCTTY."); | ||
119 | ioctl(*ttyfd, TCSETCTTY, NULL); | ||
120 | fd = open("/dev/tty", O_RDWR); | ||
121 | if (fd < 0) | ||
122 | error("%.100s: %.100s", tty, strerror(errno)); | ||
123 | close(*ttyfd); | ||
124 | *ttyfd = fd; | ||
125 | #else /* _UNICOS */ | ||
126 | |||
127 | /* First disconnect from the old controlling tty. */ | 103 | /* First disconnect from the old controlling tty. */ |
128 | #ifdef TIOCNOTTY | 104 | #ifdef TIOCNOTTY |
129 | fd = open(_PATH_TTY, O_RDWR | O_NOCTTY); | 105 | fd = open(_PATH_TTY, O_RDWR | O_NOCTTY); |
@@ -167,7 +143,6 @@ pty_make_controlling_tty(int *ttyfd, const char *tty) | |||
167 | strerror(errno)); | 143 | strerror(errno)); |
168 | else | 144 | else |
169 | close(fd); | 145 | close(fd); |
170 | #endif /* _UNICOS */ | ||
171 | } | 146 | } |
172 | 147 | ||
173 | /* Changes the window size associated with the pty. */ | 148 | /* Changes the window size associated with the pty. */ |
diff --git a/ttymodes.c b/ttymodes.c index 845139635..f9fdb92de 100644 --- a/ttymodes.c +++ b/ttymodes.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ttymodes.c,v 1.32 2017/04/30 23:26:54 djm Exp $ */ | 1 | /* $OpenBSD: ttymodes.c,v 1.33 2018/02/16 04:43:11 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 |
@@ -56,6 +56,7 @@ | |||
56 | #include "log.h" | 56 | #include "log.h" |
57 | #include "compat.h" | 57 | #include "compat.h" |
58 | #include "buffer.h" | 58 | #include "buffer.h" |
59 | #include "compat.h" | ||
59 | 60 | ||
60 | #define TTY_OP_END 0 | 61 | #define TTY_OP_END 0 |
61 | /* | 62 | /* |
@@ -308,9 +309,15 @@ tty_make_modes(int fd, struct termios *tiop) | |||
308 | buffer_put_char(&buf, OP); \ | 309 | buffer_put_char(&buf, OP); \ |
309 | buffer_put_int(&buf, special_char_encode(tio.c_cc[NAME])); | 310 | buffer_put_int(&buf, special_char_encode(tio.c_cc[NAME])); |
310 | 311 | ||
312 | #define SSH_TTYMODE_IUTF8 42 /* for SSH_BUG_UTF8TTYMODE */ | ||
313 | |||
311 | #define TTYMODE(NAME, FIELD, OP) \ | 314 | #define TTYMODE(NAME, FIELD, OP) \ |
312 | buffer_put_char(&buf, OP); \ | 315 | if (OP == SSH_TTYMODE_IUTF8 && (datafellows & SSH_BUG_UTF8TTYMODE)) { \ |
313 | buffer_put_int(&buf, ((tio.FIELD & NAME) != 0)); | 316 | debug3("%s: SSH_BUG_UTF8TTYMODE", __func__); \ |
317 | } else { \ | ||
318 | buffer_put_char(&buf, OP); \ | ||
319 | buffer_put_int(&buf, ((tio.FIELD & NAME) != 0)); \ | ||
320 | } | ||
314 | 321 | ||
315 | #include "ttymodes.h" | 322 | #include "ttymodes.h" |
316 | 323 | ||
@@ -1,6 +1,6 @@ | |||
1 | /* $OpenBSD: umac.c,v 1.12 2017/05/31 08:09:45 markus Exp $ */ | 1 | /* $OpenBSD: umac.c,v 1.16 2017/12/12 15:06:12 naddy Exp $ */ |
2 | /* ----------------------------------------------------------------------- | 2 | /* ----------------------------------------------------------------------- |
3 | * | 3 | * |
4 | * umac.c -- C Implementation UMAC Message Authentication | 4 | * umac.c -- C Implementation UMAC Message Authentication |
5 | * | 5 | * |
6 | * Version 0.93b of rfc4418.txt -- 2006 July 18 | 6 | * Version 0.93b of rfc4418.txt -- 2006 July 18 |
@@ -10,7 +10,7 @@ | |||
10 | * Please report bugs and suggestions to the UMAC webpage. | 10 | * Please report bugs and suggestions to the UMAC webpage. |
11 | * | 11 | * |
12 | * Copyright (c) 1999-2006 Ted Krovetz | 12 | * Copyright (c) 1999-2006 Ted Krovetz |
13 | * | 13 | * |
14 | * Permission to use, copy, modify, and distribute this software and | 14 | * Permission to use, copy, modify, and distribute this software and |
15 | * its documentation for any purpose and with or without fee, is hereby | 15 | * its documentation for any purpose and with or without fee, is hereby |
16 | * granted provided that the above copyright notice appears in all copies | 16 | * granted provided that the above copyright notice appears in all copies |
@@ -18,10 +18,10 @@ | |||
18 | * holder not be used in advertising or publicity pertaining to | 18 | * holder not be used in advertising or publicity pertaining to |
19 | * distribution of the software without specific, written prior permission. | 19 | * distribution of the software without specific, written prior permission. |
20 | * | 20 | * |
21 | * Comments should be directed to Ted Krovetz (tdk@acm.org) | 21 | * Comments should be directed to Ted Krovetz (tdk@acm.org) |
22 | * | 22 | * |
23 | * ---------------------------------------------------------------------- */ | 23 | * ---------------------------------------------------------------------- */ |
24 | 24 | ||
25 | /* ////////////////////// IMPORTANT NOTES ///////////////////////////////// | 25 | /* ////////////////////// IMPORTANT NOTES ///////////////////////////////// |
26 | * | 26 | * |
27 | * 1) This version does not work properly on messages larger than 16MB | 27 | * 1) This version does not work properly on messages larger than 16MB |
@@ -47,7 +47,7 @@ | |||
47 | * produced under gcc with optimizations set -O3 or higher. Dunno why. | 47 | * produced under gcc with optimizations set -O3 or higher. Dunno why. |
48 | * | 48 | * |
49 | /////////////////////////////////////////////////////////////////////// */ | 49 | /////////////////////////////////////////////////////////////////////// */ |
50 | 50 | ||
51 | /* ---------------------------------------------------------------------- */ | 51 | /* ---------------------------------------------------------------------- */ |
52 | /* --- User Switches ---------------------------------------------------- */ | 52 | /* --- User Switches ---------------------------------------------------- */ |
53 | /* ---------------------------------------------------------------------- */ | 53 | /* ---------------------------------------------------------------------- */ |
@@ -187,11 +187,11 @@ static void kdf(void *bufp, aes_int_key key, UINT8 ndx, int nbytes) | |||
187 | UINT8 out_buf[AES_BLOCK_LEN]; | 187 | UINT8 out_buf[AES_BLOCK_LEN]; |
188 | UINT8 *dst_buf = (UINT8 *)bufp; | 188 | UINT8 *dst_buf = (UINT8 *)bufp; |
189 | int i; | 189 | int i; |
190 | 190 | ||
191 | /* Setup the initial value */ | 191 | /* Setup the initial value */ |
192 | in_buf[AES_BLOCK_LEN-9] = ndx; | 192 | in_buf[AES_BLOCK_LEN-9] = ndx; |
193 | in_buf[AES_BLOCK_LEN-1] = i = 1; | 193 | in_buf[AES_BLOCK_LEN-1] = i = 1; |
194 | 194 | ||
195 | while (nbytes >= AES_BLOCK_LEN) { | 195 | while (nbytes >= AES_BLOCK_LEN) { |
196 | aes_encryption(in_buf, out_buf, key); | 196 | aes_encryption(in_buf, out_buf, key); |
197 | memcpy(dst_buf,out_buf,AES_BLOCK_LEN); | 197 | memcpy(dst_buf,out_buf,AES_BLOCK_LEN); |
@@ -208,7 +208,7 @@ static void kdf(void *bufp, aes_int_key key, UINT8 ndx, int nbytes) | |||
208 | } | 208 | } |
209 | 209 | ||
210 | /* The final UHASH result is XOR'd with the output of a pseudorandom | 210 | /* The final UHASH result is XOR'd with the output of a pseudorandom |
211 | * function. Here, we use AES to generate random output and | 211 | * function. Here, we use AES to generate random output and |
212 | * xor the appropriate bytes depending on the last bits of nonce. | 212 | * xor the appropriate bytes depending on the last bits of nonce. |
213 | * This scheme is optimized for sequential, increasing big-endian nonces. | 213 | * This scheme is optimized for sequential, increasing big-endian nonces. |
214 | */ | 214 | */ |
@@ -222,10 +222,10 @@ typedef struct { | |||
222 | static void pdf_init(pdf_ctx *pc, aes_int_key prf_key) | 222 | static void pdf_init(pdf_ctx *pc, aes_int_key prf_key) |
223 | { | 223 | { |
224 | UINT8 buf[UMAC_KEY_LEN]; | 224 | UINT8 buf[UMAC_KEY_LEN]; |
225 | 225 | ||
226 | kdf(buf, prf_key, 0, UMAC_KEY_LEN); | 226 | kdf(buf, prf_key, 0, UMAC_KEY_LEN); |
227 | aes_key_setup(buf, pc->prf_key); | 227 | aes_key_setup(buf, pc->prf_key); |
228 | 228 | ||
229 | /* Initialize pdf and cache */ | 229 | /* Initialize pdf and cache */ |
230 | memset(pc->nonce, 0, sizeof(pc->nonce)); | 230 | memset(pc->nonce, 0, sizeof(pc->nonce)); |
231 | aes_encryption(pc->nonce, pc->cache, pc->prf_key); | 231 | aes_encryption(pc->nonce, pc->cache, pc->prf_key); |
@@ -238,7 +238,7 @@ static void pdf_gen_xor(pdf_ctx *pc, const UINT8 nonce[8], UINT8 buf[8]) | |||
238 | * of the AES output. If last time around we returned the ndx-1st | 238 | * of the AES output. If last time around we returned the ndx-1st |
239 | * element, then we may have the result in the cache already. | 239 | * element, then we may have the result in the cache already. |
240 | */ | 240 | */ |
241 | 241 | ||
242 | #if (UMAC_OUTPUT_LEN == 4) | 242 | #if (UMAC_OUTPUT_LEN == 4) |
243 | #define LOW_BIT_MASK 3 | 243 | #define LOW_BIT_MASK 3 |
244 | #elif (UMAC_OUTPUT_LEN == 8) | 244 | #elif (UMAC_OUTPUT_LEN == 8) |
@@ -255,7 +255,7 @@ static void pdf_gen_xor(pdf_ctx *pc, const UINT8 nonce[8], UINT8 buf[8]) | |||
255 | #endif | 255 | #endif |
256 | *(UINT32 *)t.tmp_nonce_lo = ((const UINT32 *)nonce)[1]; | 256 | *(UINT32 *)t.tmp_nonce_lo = ((const UINT32 *)nonce)[1]; |
257 | t.tmp_nonce_lo[3] &= ~LOW_BIT_MASK; /* zero last bit */ | 257 | t.tmp_nonce_lo[3] &= ~LOW_BIT_MASK; /* zero last bit */ |
258 | 258 | ||
259 | if ( (((UINT32 *)t.tmp_nonce_lo)[0] != ((UINT32 *)pc->nonce)[1]) || | 259 | if ( (((UINT32 *)t.tmp_nonce_lo)[0] != ((UINT32 *)pc->nonce)[1]) || |
260 | (((const UINT32 *)nonce)[0] != ((UINT32 *)pc->nonce)[0]) ) | 260 | (((const UINT32 *)nonce)[0] != ((UINT32 *)pc->nonce)[0]) ) |
261 | { | 261 | { |
@@ -263,7 +263,7 @@ static void pdf_gen_xor(pdf_ctx *pc, const UINT8 nonce[8], UINT8 buf[8]) | |||
263 | ((UINT32 *)pc->nonce)[1] = ((UINT32 *)t.tmp_nonce_lo)[0]; | 263 | ((UINT32 *)pc->nonce)[1] = ((UINT32 *)t.tmp_nonce_lo)[0]; |
264 | aes_encryption(pc->nonce, pc->cache, pc->prf_key); | 264 | aes_encryption(pc->nonce, pc->cache, pc->prf_key); |
265 | } | 265 | } |
266 | 266 | ||
267 | #if (UMAC_OUTPUT_LEN == 4) | 267 | #if (UMAC_OUTPUT_LEN == 4) |
268 | *((UINT32 *)buf) ^= ((UINT32 *)pc->cache)[ndx]; | 268 | *((UINT32 *)buf) ^= ((UINT32 *)pc->cache)[ndx]; |
269 | #elif (UMAC_OUTPUT_LEN == 8) | 269 | #elif (UMAC_OUTPUT_LEN == 8) |
@@ -284,28 +284,28 @@ static void pdf_gen_xor(pdf_ctx *pc, const UINT8 nonce[8], UINT8 buf[8]) | |||
284 | /* ---------------------------------------------------------------------- */ | 284 | /* ---------------------------------------------------------------------- */ |
285 | 285 | ||
286 | /* The NH-based hash functions used in UMAC are described in the UMAC paper | 286 | /* The NH-based hash functions used in UMAC are described in the UMAC paper |
287 | * and specification, both of which can be found at the UMAC website. | 287 | * and specification, both of which can be found at the UMAC website. |
288 | * The interface to this implementation has two | 288 | * The interface to this implementation has two |
289 | * versions, one expects the entire message being hashed to be passed | 289 | * versions, one expects the entire message being hashed to be passed |
290 | * in a single buffer and returns the hash result immediately. The second | 290 | * in a single buffer and returns the hash result immediately. The second |
291 | * allows the message to be passed in a sequence of buffers. In the | 291 | * allows the message to be passed in a sequence of buffers. In the |
292 | * muliple-buffer interface, the client calls the routine nh_update() as | 292 | * muliple-buffer interface, the client calls the routine nh_update() as |
293 | * many times as necessary. When there is no more data to be fed to the | 293 | * many times as necessary. When there is no more data to be fed to the |
294 | * hash, the client calls nh_final() which calculates the hash output. | 294 | * hash, the client calls nh_final() which calculates the hash output. |
295 | * Before beginning another hash calculation the nh_reset() routine | 295 | * Before beginning another hash calculation the nh_reset() routine |
296 | * must be called. The single-buffer routine, nh(), is equivalent to | 296 | * must be called. The single-buffer routine, nh(), is equivalent to |
297 | * the sequence of calls nh_update() and nh_final(); however it is | 297 | * the sequence of calls nh_update() and nh_final(); however it is |
298 | * optimized and should be prefered whenever the multiple-buffer interface | 298 | * optimized and should be prefered whenever the multiple-buffer interface |
299 | * is not necessary. When using either interface, it is the client's | 299 | * is not necessary. When using either interface, it is the client's |
300 | * responsability to pass no more than L1_KEY_LEN bytes per hash result. | 300 | * responsability to pass no more than L1_KEY_LEN bytes per hash result. |
301 | * | 301 | * |
302 | * The routine nh_init() initializes the nh_ctx data structure and | 302 | * The routine nh_init() initializes the nh_ctx data structure and |
303 | * must be called once, before any other PDF routine. | 303 | * must be called once, before any other PDF routine. |
304 | */ | 304 | */ |
305 | 305 | ||
306 | /* The "nh_aux" routines do the actual NH hashing work. They | 306 | /* The "nh_aux" routines do the actual NH hashing work. They |
307 | * expect buffers to be multiples of L1_PAD_BOUNDARY. These routines | 307 | * expect buffers to be multiples of L1_PAD_BOUNDARY. These routines |
308 | * produce output for all STREAMS NH iterations in one call, | 308 | * produce output for all STREAMS NH iterations in one call, |
309 | * allowing the parallel implementation of the streams. | 309 | * allowing the parallel implementation of the streams. |
310 | */ | 310 | */ |
311 | 311 | ||
@@ -328,10 +328,10 @@ typedef struct { | |||
328 | #if (UMAC_OUTPUT_LEN == 4) | 328 | #if (UMAC_OUTPUT_LEN == 4) |
329 | 329 | ||
330 | static void nh_aux(void *kp, const void *dp, void *hp, UINT32 dlen) | 330 | static void nh_aux(void *kp, const void *dp, void *hp, UINT32 dlen) |
331 | /* NH hashing primitive. Previous (partial) hash result is loaded and | 331 | /* NH hashing primitive. Previous (partial) hash result is loaded and |
332 | * then stored via hp pointer. The length of the data pointed at by "dp", | 332 | * then stored via hp pointer. The length of the data pointed at by "dp", |
333 | * "dlen", is guaranteed to be divisible by L1_PAD_BOUNDARY (32). Key | 333 | * "dlen", is guaranteed to be divisible by L1_PAD_BOUNDARY (32). Key |
334 | * is expected to be endian compensated in memory at key setup. | 334 | * is expected to be endian compensated in memory at key setup. |
335 | */ | 335 | */ |
336 | { | 336 | { |
337 | UINT64 h; | 337 | UINT64 h; |
@@ -340,7 +340,7 @@ static void nh_aux(void *kp, const void *dp, void *hp, UINT32 dlen) | |||
340 | const UINT32 *d = (const UINT32 *)dp; | 340 | const UINT32 *d = (const UINT32 *)dp; |
341 | UINT32 d0,d1,d2,d3,d4,d5,d6,d7; | 341 | UINT32 d0,d1,d2,d3,d4,d5,d6,d7; |
342 | UINT32 k0,k1,k2,k3,k4,k5,k6,k7; | 342 | UINT32 k0,k1,k2,k3,k4,k5,k6,k7; |
343 | 343 | ||
344 | h = *((UINT64 *)hp); | 344 | h = *((UINT64 *)hp); |
345 | do { | 345 | do { |
346 | d0 = LOAD_UINT32_LITTLE(d+0); d1 = LOAD_UINT32_LITTLE(d+1); | 346 | d0 = LOAD_UINT32_LITTLE(d+0); d1 = LOAD_UINT32_LITTLE(d+1); |
@@ -353,7 +353,7 @@ static void nh_aux(void *kp, const void *dp, void *hp, UINT32 dlen) | |||
353 | h += MUL64((k1 + d1), (k5 + d5)); | 353 | h += MUL64((k1 + d1), (k5 + d5)); |
354 | h += MUL64((k2 + d2), (k6 + d6)); | 354 | h += MUL64((k2 + d2), (k6 + d6)); |
355 | h += MUL64((k3 + d3), (k7 + d7)); | 355 | h += MUL64((k3 + d3), (k7 + d7)); |
356 | 356 | ||
357 | d += 8; | 357 | d += 8; |
358 | k += 8; | 358 | k += 8; |
359 | } while (--c); | 359 | } while (--c); |
@@ -421,7 +421,7 @@ static void nh_aux(void *kp, const void *dp, void *hp, UINT32 dlen) | |||
421 | UINT32 d0,d1,d2,d3,d4,d5,d6,d7; | 421 | UINT32 d0,d1,d2,d3,d4,d5,d6,d7; |
422 | UINT32 k0,k1,k2,k3,k4,k5,k6,k7, | 422 | UINT32 k0,k1,k2,k3,k4,k5,k6,k7, |
423 | k8,k9,k10,k11,k12,k13,k14,k15; | 423 | k8,k9,k10,k11,k12,k13,k14,k15; |
424 | 424 | ||
425 | h1 = *((UINT64 *)hp); | 425 | h1 = *((UINT64 *)hp); |
426 | h2 = *((UINT64 *)hp + 1); | 426 | h2 = *((UINT64 *)hp + 1); |
427 | h3 = *((UINT64 *)hp + 2); | 427 | h3 = *((UINT64 *)hp + 2); |
@@ -434,26 +434,26 @@ static void nh_aux(void *kp, const void *dp, void *hp, UINT32 dlen) | |||
434 | d6 = LOAD_UINT32_LITTLE(d+6); d7 = LOAD_UINT32_LITTLE(d+7); | 434 | d6 = LOAD_UINT32_LITTLE(d+6); d7 = LOAD_UINT32_LITTLE(d+7); |
435 | k8 = *(k+8); k9 = *(k+9); k10 = *(k+10); k11 = *(k+11); | 435 | k8 = *(k+8); k9 = *(k+9); k10 = *(k+10); k11 = *(k+11); |
436 | k12 = *(k+12); k13 = *(k+13); k14 = *(k+14); k15 = *(k+15); | 436 | k12 = *(k+12); k13 = *(k+13); k14 = *(k+14); k15 = *(k+15); |
437 | 437 | ||
438 | h1 += MUL64((k0 + d0), (k4 + d4)); | 438 | h1 += MUL64((k0 + d0), (k4 + d4)); |
439 | h2 += MUL64((k4 + d0), (k8 + d4)); | 439 | h2 += MUL64((k4 + d0), (k8 + d4)); |
440 | h3 += MUL64((k8 + d0), (k12 + d4)); | 440 | h3 += MUL64((k8 + d0), (k12 + d4)); |
441 | 441 | ||
442 | h1 += MUL64((k1 + d1), (k5 + d5)); | 442 | h1 += MUL64((k1 + d1), (k5 + d5)); |
443 | h2 += MUL64((k5 + d1), (k9 + d5)); | 443 | h2 += MUL64((k5 + d1), (k9 + d5)); |
444 | h3 += MUL64((k9 + d1), (k13 + d5)); | 444 | h3 += MUL64((k9 + d1), (k13 + d5)); |
445 | 445 | ||
446 | h1 += MUL64((k2 + d2), (k6 + d6)); | 446 | h1 += MUL64((k2 + d2), (k6 + d6)); |
447 | h2 += MUL64((k6 + d2), (k10 + d6)); | 447 | h2 += MUL64((k6 + d2), (k10 + d6)); |
448 | h3 += MUL64((k10 + d2), (k14 + d6)); | 448 | h3 += MUL64((k10 + d2), (k14 + d6)); |
449 | 449 | ||
450 | h1 += MUL64((k3 + d3), (k7 + d7)); | 450 | h1 += MUL64((k3 + d3), (k7 + d7)); |
451 | h2 += MUL64((k7 + d3), (k11 + d7)); | 451 | h2 += MUL64((k7 + d3), (k11 + d7)); |
452 | h3 += MUL64((k11 + d3), (k15 + d7)); | 452 | h3 += MUL64((k11 + d3), (k15 + d7)); |
453 | 453 | ||
454 | k0 = k8; k1 = k9; k2 = k10; k3 = k11; | 454 | k0 = k8; k1 = k9; k2 = k10; k3 = k11; |
455 | k4 = k12; k5 = k13; k6 = k14; k7 = k15; | 455 | k4 = k12; k5 = k13; k6 = k14; k7 = k15; |
456 | 456 | ||
457 | d += 8; | 457 | d += 8; |
458 | k += 8; | 458 | k += 8; |
459 | } while (--c); | 459 | } while (--c); |
@@ -477,7 +477,7 @@ static void nh_aux(void *kp, const void *dp, void *hp, UINT32 dlen) | |||
477 | UINT32 k0,k1,k2,k3,k4,k5,k6,k7, | 477 | UINT32 k0,k1,k2,k3,k4,k5,k6,k7, |
478 | k8,k9,k10,k11,k12,k13,k14,k15, | 478 | k8,k9,k10,k11,k12,k13,k14,k15, |
479 | k16,k17,k18,k19; | 479 | k16,k17,k18,k19; |
480 | 480 | ||
481 | h1 = *((UINT64 *)hp); | 481 | h1 = *((UINT64 *)hp); |
482 | h2 = *((UINT64 *)hp + 1); | 482 | h2 = *((UINT64 *)hp + 1); |
483 | h3 = *((UINT64 *)hp + 2); | 483 | h3 = *((UINT64 *)hp + 2); |
@@ -492,31 +492,31 @@ static void nh_aux(void *kp, const void *dp, void *hp, UINT32 dlen) | |||
492 | k8 = *(k+8); k9 = *(k+9); k10 = *(k+10); k11 = *(k+11); | 492 | k8 = *(k+8); k9 = *(k+9); k10 = *(k+10); k11 = *(k+11); |
493 | k12 = *(k+12); k13 = *(k+13); k14 = *(k+14); k15 = *(k+15); | 493 | k12 = *(k+12); k13 = *(k+13); k14 = *(k+14); k15 = *(k+15); |
494 | k16 = *(k+16); k17 = *(k+17); k18 = *(k+18); k19 = *(k+19); | 494 | k16 = *(k+16); k17 = *(k+17); k18 = *(k+18); k19 = *(k+19); |
495 | 495 | ||
496 | h1 += MUL64((k0 + d0), (k4 + d4)); | 496 | h1 += MUL64((k0 + d0), (k4 + d4)); |
497 | h2 += MUL64((k4 + d0), (k8 + d4)); | 497 | h2 += MUL64((k4 + d0), (k8 + d4)); |
498 | h3 += MUL64((k8 + d0), (k12 + d4)); | 498 | h3 += MUL64((k8 + d0), (k12 + d4)); |
499 | h4 += MUL64((k12 + d0), (k16 + d4)); | 499 | h4 += MUL64((k12 + d0), (k16 + d4)); |
500 | 500 | ||
501 | h1 += MUL64((k1 + d1), (k5 + d5)); | 501 | h1 += MUL64((k1 + d1), (k5 + d5)); |
502 | h2 += MUL64((k5 + d1), (k9 + d5)); | 502 | h2 += MUL64((k5 + d1), (k9 + d5)); |
503 | h3 += MUL64((k9 + d1), (k13 + d5)); | 503 | h3 += MUL64((k9 + d1), (k13 + d5)); |
504 | h4 += MUL64((k13 + d1), (k17 + d5)); | 504 | h4 += MUL64((k13 + d1), (k17 + d5)); |
505 | 505 | ||
506 | h1 += MUL64((k2 + d2), (k6 + d6)); | 506 | h1 += MUL64((k2 + d2), (k6 + d6)); |
507 | h2 += MUL64((k6 + d2), (k10 + d6)); | 507 | h2 += MUL64((k6 + d2), (k10 + d6)); |
508 | h3 += MUL64((k10 + d2), (k14 + d6)); | 508 | h3 += MUL64((k10 + d2), (k14 + d6)); |
509 | h4 += MUL64((k14 + d2), (k18 + d6)); | 509 | h4 += MUL64((k14 + d2), (k18 + d6)); |
510 | 510 | ||
511 | h1 += MUL64((k3 + d3), (k7 + d7)); | 511 | h1 += MUL64((k3 + d3), (k7 + d7)); |
512 | h2 += MUL64((k7 + d3), (k11 + d7)); | 512 | h2 += MUL64((k7 + d3), (k11 + d7)); |
513 | h3 += MUL64((k11 + d3), (k15 + d7)); | 513 | h3 += MUL64((k11 + d3), (k15 + d7)); |
514 | h4 += MUL64((k15 + d3), (k19 + d7)); | 514 | h4 += MUL64((k15 + d3), (k19 + d7)); |
515 | 515 | ||
516 | k0 = k8; k1 = k9; k2 = k10; k3 = k11; | 516 | k0 = k8; k1 = k9; k2 = k10; k3 = k11; |
517 | k4 = k12; k5 = k13; k6 = k14; k7 = k15; | 517 | k4 = k12; k5 = k13; k6 = k14; k7 = k15; |
518 | k8 = k16; k9 = k17; k10 = k18; k11 = k19; | 518 | k8 = k16; k9 = k17; k10 = k18; k11 = k19; |
519 | 519 | ||
520 | d += 8; | 520 | d += 8; |
521 | k += 8; | 521 | k += 8; |
522 | } while (--c); | 522 | } while (--c); |
@@ -541,7 +541,7 @@ static void nh_transform(nh_ctx *hc, const UINT8 *buf, UINT32 nbytes) | |||
541 | */ | 541 | */ |
542 | { | 542 | { |
543 | UINT8 *key; | 543 | UINT8 *key; |
544 | 544 | ||
545 | key = hc->nh_key + hc->bytes_hashed; | 545 | key = hc->nh_key + hc->bytes_hashed; |
546 | nh_aux(key, buf, hc->state, nbytes); | 546 | nh_aux(key, buf, hc->state, nbytes); |
547 | } | 547 | } |
@@ -613,7 +613,7 @@ static void nh_update(nh_ctx *hc, const UINT8 *buf, UINT32 nbytes) | |||
613 | /* even multiple of HASH_BUF_BYTES. */ | 613 | /* even multiple of HASH_BUF_BYTES. */ |
614 | { | 614 | { |
615 | UINT32 i,j; | 615 | UINT32 i,j; |
616 | 616 | ||
617 | j = hc->next_data_empty; | 617 | j = hc->next_data_empty; |
618 | if ((j + nbytes) >= HASH_BUF_BYTES) { | 618 | if ((j + nbytes) >= HASH_BUF_BYTES) { |
619 | if (j) { | 619 | if (j) { |
@@ -677,12 +677,12 @@ static void nh_final(nh_ctx *hc, UINT8 *result) | |||
677 | if (hc->next_data_empty != 0) { | 677 | if (hc->next_data_empty != 0) { |
678 | nh_len = ((hc->next_data_empty + (L1_PAD_BOUNDARY - 1)) & | 678 | nh_len = ((hc->next_data_empty + (L1_PAD_BOUNDARY - 1)) & |
679 | ~(L1_PAD_BOUNDARY - 1)); | 679 | ~(L1_PAD_BOUNDARY - 1)); |
680 | zero_pad(hc->data + hc->next_data_empty, | 680 | zero_pad(hc->data + hc->next_data_empty, |
681 | nh_len - hc->next_data_empty); | 681 | nh_len - hc->next_data_empty); |
682 | nh_transform(hc, hc->data, nh_len); | 682 | nh_transform(hc, hc->data, nh_len); |
683 | hc->bytes_hashed += hc->next_data_empty; | 683 | hc->bytes_hashed += hc->next_data_empty; |
684 | } else if (hc->bytes_hashed == 0) { | 684 | } else if (hc->bytes_hashed == 0) { |
685 | nh_len = L1_PAD_BOUNDARY; | 685 | nh_len = L1_PAD_BOUNDARY; |
686 | zero_pad(hc->data, L1_PAD_BOUNDARY); | 686 | zero_pad(hc->data, L1_PAD_BOUNDARY); |
687 | nh_transform(hc, hc->data, nh_len); | 687 | nh_transform(hc, hc->data, nh_len); |
688 | } | 688 | } |
@@ -711,10 +711,10 @@ static void nh(nh_ctx *hc, const UINT8 *buf, UINT32 padded_len, | |||
711 | */ | 711 | */ |
712 | { | 712 | { |
713 | UINT32 nbits; | 713 | UINT32 nbits; |
714 | 714 | ||
715 | /* Initialize the hash state */ | 715 | /* Initialize the hash state */ |
716 | nbits = (unpadded_len << 3); | 716 | nbits = (unpadded_len << 3); |
717 | 717 | ||
718 | ((UINT64 *)result)[0] = nbits; | 718 | ((UINT64 *)result)[0] = nbits; |
719 | #if (UMAC_OUTPUT_LEN >= 8) | 719 | #if (UMAC_OUTPUT_LEN >= 8) |
720 | ((UINT64 *)result)[1] = nbits; | 720 | ((UINT64 *)result)[1] = nbits; |
@@ -725,7 +725,7 @@ static void nh(nh_ctx *hc, const UINT8 *buf, UINT32 padded_len, | |||
725 | #if (UMAC_OUTPUT_LEN == 16) | 725 | #if (UMAC_OUTPUT_LEN == 16) |
726 | ((UINT64 *)result)[3] = nbits; | 726 | ((UINT64 *)result)[3] = nbits; |
727 | #endif | 727 | #endif |
728 | 728 | ||
729 | nh_aux(hc->nh_key, buf, result, padded_len); | 729 | nh_aux(hc->nh_key, buf, result, padded_len); |
730 | } | 730 | } |
731 | 731 | ||
@@ -744,16 +744,16 @@ static void nh(nh_ctx *hc, const UINT8 *buf, UINT32 padded_len, | |||
744 | * buffers are presented sequentially. In the sequential interface, the | 744 | * buffers are presented sequentially. In the sequential interface, the |
745 | * UHASH client calls the routine uhash_update() as many times as necessary. | 745 | * UHASH client calls the routine uhash_update() as many times as necessary. |
746 | * When there is no more data to be fed to UHASH, the client calls | 746 | * When there is no more data to be fed to UHASH, the client calls |
747 | * uhash_final() which | 747 | * uhash_final() which |
748 | * calculates the UHASH output. Before beginning another UHASH calculation | 748 | * calculates the UHASH output. Before beginning another UHASH calculation |
749 | * the uhash_reset() routine must be called. The all-at-once UHASH routine, | 749 | * the uhash_reset() routine must be called. The all-at-once UHASH routine, |
750 | * uhash(), is equivalent to the sequence of calls uhash_update() and | 750 | * uhash(), is equivalent to the sequence of calls uhash_update() and |
751 | * uhash_final(); however it is optimized and should be | 751 | * uhash_final(); however it is optimized and should be |
752 | * used whenever the sequential interface is not necessary. | 752 | * used whenever the sequential interface is not necessary. |
753 | * | 753 | * |
754 | * The routine uhash_init() initializes the uhash_ctx data structure and | 754 | * The routine uhash_init() initializes the uhash_ctx data structure and |
755 | * must be called once, before any other UHASH routine. | 755 | * must be called once, before any other UHASH routine. |
756 | */ | 756 | */ |
757 | 757 | ||
758 | /* ---------------------------------------------------------------------- */ | 758 | /* ---------------------------------------------------------------------- */ |
759 | /* ----- Constants and uhash_ctx ---------------------------------------- */ | 759 | /* ----- Constants and uhash_ctx ---------------------------------------- */ |
@@ -802,13 +802,13 @@ static UINT64 poly64(UINT64 cur, UINT64 key, UINT64 data) | |||
802 | x_lo, | 802 | x_lo, |
803 | x_hi; | 803 | x_hi; |
804 | UINT64 X,T,res; | 804 | UINT64 X,T,res; |
805 | 805 | ||
806 | X = MUL64(key_hi, cur_lo) + MUL64(cur_hi, key_lo); | 806 | X = MUL64(key_hi, cur_lo) + MUL64(cur_hi, key_lo); |
807 | x_lo = (UINT32)X; | 807 | x_lo = (UINT32)X; |
808 | x_hi = (UINT32)(X >> 32); | 808 | x_hi = (UINT32)(X >> 32); |
809 | 809 | ||
810 | res = (MUL64(key_hi, cur_hi) + x_hi) * 59 + MUL64(key_lo, cur_lo); | 810 | res = (MUL64(key_hi, cur_hi) + x_hi) * 59 + MUL64(key_lo, cur_lo); |
811 | 811 | ||
812 | T = ((UINT64)x_lo << 32); | 812 | T = ((UINT64)x_lo << 32); |
813 | res += T; | 813 | res += T; |
814 | if (res < T) | 814 | if (res < T) |
@@ -832,10 +832,10 @@ static void poly_hash(uhash_ctx_t hc, UINT32 data_in[]) | |||
832 | { | 832 | { |
833 | int i; | 833 | int i; |
834 | UINT64 *data=(UINT64*)data_in; | 834 | UINT64 *data=(UINT64*)data_in; |
835 | 835 | ||
836 | for (i = 0; i < STREAMS; i++) { | 836 | for (i = 0; i < STREAMS; i++) { |
837 | if ((UINT32)(data[i] >> 32) == 0xfffffffful) { | 837 | if ((UINT32)(data[i] >> 32) == 0xfffffffful) { |
838 | hc->poly_accum[i] = poly64(hc->poly_accum[i], | 838 | hc->poly_accum[i] = poly64(hc->poly_accum[i], |
839 | hc->poly_key_8[i], p64 - 1); | 839 | hc->poly_key_8[i], p64 - 1); |
840 | hc->poly_accum[i] = poly64(hc->poly_accum[i], | 840 | hc->poly_accum[i] = poly64(hc->poly_accum[i], |
841 | hc->poly_key_8[i], (data[i] - 59)); | 841 | hc->poly_key_8[i], (data[i] - 59)); |
@@ -862,7 +862,7 @@ static UINT64 ip_aux(UINT64 t, UINT64 *ipkp, UINT64 data) | |||
862 | t = t + ipkp[1] * (UINT64)(UINT16)(data >> 32); | 862 | t = t + ipkp[1] * (UINT64)(UINT16)(data >> 32); |
863 | t = t + ipkp[2] * (UINT64)(UINT16)(data >> 16); | 863 | t = t + ipkp[2] * (UINT64)(UINT16)(data >> 16); |
864 | t = t + ipkp[3] * (UINT64)(UINT16)(data); | 864 | t = t + ipkp[3] * (UINT64)(UINT16)(data); |
865 | 865 | ||
866 | return t; | 866 | return t; |
867 | } | 867 | } |
868 | 868 | ||
@@ -870,7 +870,7 @@ static UINT32 ip_reduce_p36(UINT64 t) | |||
870 | { | 870 | { |
871 | /* Divisionless modular reduction */ | 871 | /* Divisionless modular reduction */ |
872 | UINT64 ret; | 872 | UINT64 ret; |
873 | 873 | ||
874 | ret = (t & m36) + 5 * (t >> 36); | 874 | ret = (t & m36) + 5 * (t >> 36); |
875 | if (ret >= p36) | 875 | if (ret >= p36) |
876 | ret -= p36; | 876 | ret -= p36; |
@@ -888,7 +888,7 @@ static void ip_short(uhash_ctx_t ahc, UINT8 *nh_res, u_char *res) | |||
888 | { | 888 | { |
889 | UINT64 t; | 889 | UINT64 t; |
890 | UINT64 *nhp = (UINT64 *)nh_res; | 890 | UINT64 *nhp = (UINT64 *)nh_res; |
891 | 891 | ||
892 | t = ip_aux(0,ahc->ip_keys, nhp[0]); | 892 | t = ip_aux(0,ahc->ip_keys, nhp[0]); |
893 | STORE_UINT32_BIG((UINT32 *)res+0, ip_reduce_p36(t) ^ ahc->ip_trans[0]); | 893 | STORE_UINT32_BIG((UINT32 *)res+0, ip_reduce_p36(t) ^ ahc->ip_trans[0]); |
894 | #if (UMAC_OUTPUT_LEN >= 8) | 894 | #if (UMAC_OUTPUT_LEN >= 8) |
@@ -919,7 +919,7 @@ static void ip_long(uhash_ctx_t ahc, u_char *res) | |||
919 | if (ahc->poly_accum[i] >= p64) | 919 | if (ahc->poly_accum[i] >= p64) |
920 | ahc->poly_accum[i] -= p64; | 920 | ahc->poly_accum[i] -= p64; |
921 | t = ip_aux(0,ahc->ip_keys+(i*4), ahc->poly_accum[i]); | 921 | t = ip_aux(0,ahc->ip_keys+(i*4), ahc->poly_accum[i]); |
922 | STORE_UINT32_BIG((UINT32 *)res+i, | 922 | STORE_UINT32_BIG((UINT32 *)res+i, |
923 | ip_reduce_p36(t) ^ ahc->ip_trans[i]); | 923 | ip_reduce_p36(t) ^ ahc->ip_trans[i]); |
924 | } | 924 | } |
925 | } | 925 | } |
@@ -958,13 +958,13 @@ static void uhash_init(uhash_ctx_t ahc, aes_int_key prf_key) | |||
958 | { | 958 | { |
959 | int i; | 959 | int i; |
960 | UINT8 buf[(8*STREAMS+4)*sizeof(UINT64)]; | 960 | UINT8 buf[(8*STREAMS+4)*sizeof(UINT64)]; |
961 | 961 | ||
962 | /* Zero the entire uhash context */ | 962 | /* Zero the entire uhash context */ |
963 | memset(ahc, 0, sizeof(uhash_ctx)); | 963 | memset(ahc, 0, sizeof(uhash_ctx)); |
964 | 964 | ||
965 | /* Initialize the L1 hash */ | 965 | /* Initialize the L1 hash */ |
966 | nh_init(&ahc->hash, prf_key); | 966 | nh_init(&ahc->hash, prf_key); |
967 | 967 | ||
968 | /* Setup L2 hash variables */ | 968 | /* Setup L2 hash variables */ |
969 | kdf(buf, prf_key, 2, sizeof(buf)); /* Fill buffer with index 1 key */ | 969 | kdf(buf, prf_key, 2, sizeof(buf)); /* Fill buffer with index 1 key */ |
970 | for (i = 0; i < STREAMS; i++) { | 970 | for (i = 0; i < STREAMS; i++) { |
@@ -978,17 +978,17 @@ static void uhash_init(uhash_ctx_t ahc, aes_int_key prf_key) | |||
978 | ahc->poly_key_8[i] &= ((UINT64)0x01ffffffu << 32) + 0x01ffffffu; | 978 | ahc->poly_key_8[i] &= ((UINT64)0x01ffffffu << 32) + 0x01ffffffu; |
979 | ahc->poly_accum[i] = 1; /* Our polyhash prepends a non-zero word */ | 979 | ahc->poly_accum[i] = 1; /* Our polyhash prepends a non-zero word */ |
980 | } | 980 | } |
981 | 981 | ||
982 | /* Setup L3-1 hash variables */ | 982 | /* Setup L3-1 hash variables */ |
983 | kdf(buf, prf_key, 3, sizeof(buf)); /* Fill buffer with index 2 key */ | 983 | kdf(buf, prf_key, 3, sizeof(buf)); /* Fill buffer with index 2 key */ |
984 | for (i = 0; i < STREAMS; i++) | 984 | for (i = 0; i < STREAMS; i++) |
985 | memcpy(ahc->ip_keys+4*i, buf+(8*i+4)*sizeof(UINT64), | 985 | memcpy(ahc->ip_keys+4*i, buf+(8*i+4)*sizeof(UINT64), |
986 | 4*sizeof(UINT64)); | 986 | 4*sizeof(UINT64)); |
987 | endian_convert_if_le(ahc->ip_keys, sizeof(UINT64), | 987 | endian_convert_if_le(ahc->ip_keys, sizeof(UINT64), |
988 | sizeof(ahc->ip_keys)); | 988 | sizeof(ahc->ip_keys)); |
989 | for (i = 0; i < STREAMS*4; i++) | 989 | for (i = 0; i < STREAMS*4; i++) |
990 | ahc->ip_keys[i] %= p36; /* Bring into Z_p36 */ | 990 | ahc->ip_keys[i] %= p36; /* Bring into Z_p36 */ |
991 | 991 | ||
992 | /* Setup L3-2 hash variables */ | 992 | /* Setup L3-2 hash variables */ |
993 | /* Fill buffer with index 4 key */ | 993 | /* Fill buffer with index 4 key */ |
994 | kdf(ahc->ip_trans, prf_key, 4, STREAMS * sizeof(UINT32)); | 994 | kdf(ahc->ip_trans, prf_key, 4, STREAMS * sizeof(UINT32)); |
@@ -1006,7 +1006,7 @@ static uhash_ctx_t uhash_alloc(u_char key[]) | |||
1006 | uhash_ctx_t ctx; | 1006 | uhash_ctx_t ctx; |
1007 | u_char bytes_to_add; | 1007 | u_char bytes_to_add; |
1008 | aes_int_key prf_key; | 1008 | aes_int_key prf_key; |
1009 | 1009 | ||
1010 | ctx = (uhash_ctx_t)malloc(sizeof(uhash_ctx)+ALLOC_BOUNDARY); | 1010 | ctx = (uhash_ctx_t)malloc(sizeof(uhash_ctx)+ALLOC_BOUNDARY); |
1011 | if (ctx) { | 1011 | if (ctx) { |
1012 | if (ALLOC_BOUNDARY) { | 1012 | if (ALLOC_BOUNDARY) { |
@@ -1029,7 +1029,7 @@ static int uhash_free(uhash_ctx_t ctx) | |||
1029 | { | 1029 | { |
1030 | /* Free memory allocated by uhash_alloc */ | 1030 | /* Free memory allocated by uhash_alloc */ |
1031 | u_char bytes_to_sub; | 1031 | u_char bytes_to_sub; |
1032 | 1032 | ||
1033 | if (ctx) { | 1033 | if (ctx) { |
1034 | if (ALLOC_BOUNDARY) { | 1034 | if (ALLOC_BOUNDARY) { |
1035 | bytes_to_sub = *((u_char *)ctx - 1); | 1035 | bytes_to_sub = *((u_char *)ctx - 1); |
@@ -1050,12 +1050,12 @@ static int uhash_update(uhash_ctx_t ctx, const u_char *input, long len) | |||
1050 | UWORD bytes_hashed, bytes_remaining; | 1050 | UWORD bytes_hashed, bytes_remaining; |
1051 | UINT64 result_buf[STREAMS]; | 1051 | UINT64 result_buf[STREAMS]; |
1052 | UINT8 *nh_result = (UINT8 *)&result_buf; | 1052 | UINT8 *nh_result = (UINT8 *)&result_buf; |
1053 | 1053 | ||
1054 | if (ctx->msg_len + len <= L1_KEY_LEN) { | 1054 | if (ctx->msg_len + len <= L1_KEY_LEN) { |
1055 | nh_update(&ctx->hash, (const UINT8 *)input, len); | 1055 | nh_update(&ctx->hash, (const UINT8 *)input, len); |
1056 | ctx->msg_len += len; | 1056 | ctx->msg_len += len; |
1057 | } else { | 1057 | } else { |
1058 | 1058 | ||
1059 | bytes_hashed = ctx->msg_len % L1_KEY_LEN; | 1059 | bytes_hashed = ctx->msg_len % L1_KEY_LEN; |
1060 | if (ctx->msg_len == L1_KEY_LEN) | 1060 | if (ctx->msg_len == L1_KEY_LEN) |
1061 | bytes_hashed = L1_KEY_LEN; | 1061 | bytes_hashed = L1_KEY_LEN; |
@@ -1128,15 +1128,15 @@ static int uhash(uhash_ctx_t ahc, u_char *msg, long len, u_char *res) | |||
1128 | UINT8 nh_result[STREAMS*sizeof(UINT64)]; | 1128 | UINT8 nh_result[STREAMS*sizeof(UINT64)]; |
1129 | UINT32 nh_len; | 1129 | UINT32 nh_len; |
1130 | int extra_zeroes_needed; | 1130 | int extra_zeroes_needed; |
1131 | 1131 | ||
1132 | /* If the message to be hashed is no longer than L1_HASH_LEN, we skip | 1132 | /* If the message to be hashed is no longer than L1_HASH_LEN, we skip |
1133 | * the polyhash. | 1133 | * the polyhash. |
1134 | */ | 1134 | */ |
1135 | if (len <= L1_KEY_LEN) { | 1135 | if (len <= L1_KEY_LEN) { |
1136 | if (len == 0) /* If zero length messages will not */ | 1136 | if (len == 0) /* If zero length messages will not */ |
1137 | nh_len = L1_PAD_BOUNDARY; /* be seen, comment out this case */ | 1137 | nh_len = L1_PAD_BOUNDARY; /* be seen, comment out this case */ |
1138 | else | 1138 | else |
1139 | nh_len = ((len + (L1_PAD_BOUNDARY - 1)) & ~(L1_PAD_BOUNDARY - 1)); | 1139 | nh_len = ((len + (L1_PAD_BOUNDARY - 1)) & ~(L1_PAD_BOUNDARY - 1)); |
1140 | extra_zeroes_needed = nh_len - len; | 1140 | extra_zeroes_needed = nh_len - len; |
1141 | zero_pad((UINT8 *)msg + len, extra_zeroes_needed); | 1141 | zero_pad((UINT8 *)msg + len, extra_zeroes_needed); |
1142 | nh(&ahc->hash, (UINT8 *)msg, nh_len, len, nh_result); | 1142 | nh(&ahc->hash, (UINT8 *)msg, nh_len, len, nh_result); |
@@ -1161,7 +1161,7 @@ static int uhash(uhash_ctx_t ahc, u_char *msg, long len, u_char *res) | |||
1161 | 1161 | ||
1162 | ip_long(ahc, res); | 1162 | ip_long(ahc, res); |
1163 | } | 1163 | } |
1164 | 1164 | ||
1165 | uhash_reset(ahc); | 1165 | uhash_reset(ahc); |
1166 | return 1; | 1166 | return 1; |
1167 | } | 1167 | } |
@@ -1175,9 +1175,9 @@ static int uhash(uhash_ctx_t ahc, u_char *msg, long len, u_char *res) | |||
1175 | 1175 | ||
1176 | /* The UMAC interface has two interfaces, an all-at-once interface where | 1176 | /* The UMAC interface has two interfaces, an all-at-once interface where |
1177 | * the entire message to be authenticated is passed to UMAC in one buffer, | 1177 | * the entire message to be authenticated is passed to UMAC in one buffer, |
1178 | * and a sequential interface where the message is presented a little at a | 1178 | * and a sequential interface where the message is presented a little at a |
1179 | * time. The all-at-once is more optimaized than the sequential version and | 1179 | * time. The all-at-once is more optimaized than the sequential version and |
1180 | * should be preferred when the sequential interface is not required. | 1180 | * should be preferred when the sequential interface is not required. |
1181 | */ | 1181 | */ |
1182 | struct umac_ctx { | 1182 | struct umac_ctx { |
1183 | uhash_ctx hash; /* Hash function for message compression */ | 1183 | uhash_ctx hash; /* Hash function for message compression */ |
@@ -1213,14 +1213,14 @@ int umac_delete(struct umac_ctx *ctx) | |||
1213 | /* ---------------------------------------------------------------------- */ | 1213 | /* ---------------------------------------------------------------------- */ |
1214 | 1214 | ||
1215 | struct umac_ctx *umac_new(const u_char key[]) | 1215 | struct umac_ctx *umac_new(const u_char key[]) |
1216 | /* Dynamically allocate a umac_ctx struct, initialize variables, | 1216 | /* Dynamically allocate a umac_ctx struct, initialize variables, |
1217 | * generate subkeys from key. Align to 16-byte boundary. | 1217 | * generate subkeys from key. Align to 16-byte boundary. |
1218 | */ | 1218 | */ |
1219 | { | 1219 | { |
1220 | struct umac_ctx *ctx, *octx; | 1220 | struct umac_ctx *ctx, *octx; |
1221 | size_t bytes_to_add; | 1221 | size_t bytes_to_add; |
1222 | aes_int_key prf_key; | 1222 | aes_int_key prf_key; |
1223 | 1223 | ||
1224 | octx = ctx = xcalloc(1, sizeof(*ctx) + ALLOC_BOUNDARY); | 1224 | octx = ctx = xcalloc(1, sizeof(*ctx) + ALLOC_BOUNDARY); |
1225 | if (ctx) { | 1225 | if (ctx) { |
1226 | if (ALLOC_BOUNDARY) { | 1226 | if (ALLOC_BOUNDARY) { |
@@ -1234,7 +1234,7 @@ struct umac_ctx *umac_new(const u_char key[]) | |||
1234 | uhash_init(&ctx->hash, prf_key); | 1234 | uhash_init(&ctx->hash, prf_key); |
1235 | explicit_bzero(prf_key, sizeof(prf_key)); | 1235 | explicit_bzero(prf_key, sizeof(prf_key)); |
1236 | } | 1236 | } |
1237 | 1237 | ||
1238 | return (ctx); | 1238 | return (ctx); |
1239 | } | 1239 | } |
1240 | 1240 | ||
@@ -1245,7 +1245,7 @@ int umac_final(struct umac_ctx *ctx, u_char tag[], const u_char nonce[8]) | |||
1245 | { | 1245 | { |
1246 | uhash_final(&ctx->hash, (u_char *)tag); | 1246 | uhash_final(&ctx->hash, (u_char *)tag); |
1247 | pdf_gen_xor(&ctx->pdf, (const UINT8 *)nonce, (UINT8 *)tag); | 1247 | pdf_gen_xor(&ctx->pdf, (const UINT8 *)nonce, (UINT8 *)tag); |
1248 | 1248 | ||
1249 | return (1); | 1249 | return (1); |
1250 | } | 1250 | } |
1251 | 1251 | ||
@@ -1263,14 +1263,14 @@ int umac_update(struct umac_ctx *ctx, const u_char *input, long len) | |||
1263 | /* ---------------------------------------------------------------------- */ | 1263 | /* ---------------------------------------------------------------------- */ |
1264 | 1264 | ||
1265 | #if 0 | 1265 | #if 0 |
1266 | int umac(struct umac_ctx *ctx, u_char *input, | 1266 | int umac(struct umac_ctx *ctx, u_char *input, |
1267 | long len, u_char tag[], | 1267 | long len, u_char tag[], |
1268 | u_char nonce[8]) | 1268 | u_char nonce[8]) |
1269 | /* All-in-one version simply calls umac_update() and umac_final(). */ | 1269 | /* All-in-one version simply calls umac_update() and umac_final(). */ |
1270 | { | 1270 | { |
1271 | uhash(&ctx->hash, input, len, (u_char *)tag); | 1271 | uhash(&ctx->hash, input, len, (u_char *)tag); |
1272 | pdf_gen_xor(&ctx->pdf, (UINT8 *)nonce, (UINT8 *)tag); | 1272 | pdf_gen_xor(&ctx->pdf, (UINT8 *)nonce, (UINT8 *)tag); |
1273 | 1273 | ||
1274 | return (1); | 1274 | return (1); |
1275 | } | 1275 | } |
1276 | #endif | 1276 | #endif |
diff --git a/umac128.c b/umac128.c new file mode 100644 index 000000000..f71792506 --- /dev/null +++ b/umac128.c | |||
@@ -0,0 +1,10 @@ | |||
1 | /* $OpenBSD: umac128.c,v 1.2 2018/02/08 04:12:32 dtucker Exp $ */ | ||
2 | |||
3 | #define UMAC_OUTPUT_LEN 16 | ||
4 | #define umac_new umac128_new | ||
5 | #define umac_update umac128_update | ||
6 | #define umac_final umac128_final | ||
7 | #define umac_delete umac128_delete | ||
8 | #define umac_ctx umac128_ctx | ||
9 | |||
10 | #include "umac.c" | ||
@@ -1,6 +1,6 @@ | |||
1 | /* $OpenBSD: version.h,v 1.80 2017/09/30 22:26:33 djm Exp $ */ | 1 | /* $OpenBSD: version.h,v 1.81 2018/03/24 19:29:03 markus Exp $ */ |
2 | 2 | ||
3 | #define SSH_VERSION "OpenSSH_7.6" | 3 | #define SSH_VERSION "OpenSSH_7.7" |
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 |
diff --git a/xmss_commons.c b/xmss_commons.c new file mode 100644 index 000000000..59486aead --- /dev/null +++ b/xmss_commons.c | |||
@@ -0,0 +1,36 @@ | |||
1 | /* $OpenBSD: xmss_commons.c,v 1.2 2018/02/26 03:56:44 dtucker Exp $ */ | ||
2 | /* | ||
3 | xmss_commons.c 20160722 | ||
4 | Andreas Hülsing | ||
5 | Joost Rijneveld | ||
6 | Public domain. | ||
7 | */ | ||
8 | |||
9 | #include "includes.h" | ||
10 | #ifdef WITH_XMSS | ||
11 | |||
12 | #include "xmss_commons.h" | ||
13 | #include <stdlib.h> | ||
14 | #include <stdio.h> | ||
15 | #ifdef HAVE_STDINT_H | ||
16 | #include <stdint.h> | ||
17 | #endif | ||
18 | |||
19 | void to_byte(unsigned char *out, unsigned long long in, uint32_t bytes) | ||
20 | { | ||
21 | int32_t i; | ||
22 | for (i = bytes-1; i >= 0; i--) { | ||
23 | out[i] = in & 0xff; | ||
24 | in = in >> 8; | ||
25 | } | ||
26 | } | ||
27 | |||
28 | #if 0 | ||
29 | void hexdump(const unsigned char *a, size_t len) | ||
30 | { | ||
31 | size_t i; | ||
32 | for (i = 0; i < len; i++) | ||
33 | printf("%02x", a[i]); | ||
34 | } | ||
35 | #endif | ||
36 | #endif /* WITH_XMSS */ | ||
diff --git a/xmss_commons.h b/xmss_commons.h new file mode 100644 index 000000000..a98e4799c --- /dev/null +++ b/xmss_commons.h | |||
@@ -0,0 +1,21 @@ | |||
1 | #ifdef WITH_XMSS | ||
2 | /* $OpenBSD: xmss_commons.h,v 1.3 2018/02/26 03:56:44 dtucker Exp $ */ | ||
3 | /* | ||
4 | xmss_commons.h 20160722 | ||
5 | Andreas Hülsing | ||
6 | Joost Rijneveld | ||
7 | Public domain. | ||
8 | */ | ||
9 | #ifndef XMSS_COMMONS_H | ||
10 | #define XMSS_COMMONS_H | ||
11 | |||
12 | #include <stdlib.h> | ||
13 | #ifdef HAVE_STDINT_H | ||
14 | #include <stdint.h> | ||
15 | #endif | ||
16 | #endif | ||
17 | void to_byte(unsigned char *output, unsigned long long in, uint32_t bytes); | ||
18 | #if 0 | ||
19 | void hexdump(const unsigned char *a, size_t len); | ||
20 | #endif | ||
21 | #endif /* WITH_XMSS */ | ||
diff --git a/xmss_fast.c b/xmss_fast.c new file mode 100644 index 000000000..e37447f60 --- /dev/null +++ b/xmss_fast.c | |||
@@ -0,0 +1,1106 @@ | |||
1 | /* $OpenBSD: xmss_fast.c,v 1.3 2018/03/22 07:06:11 markus Exp $ */ | ||
2 | /* | ||
3 | xmss_fast.c version 20160722 | ||
4 | Andreas Hülsing | ||
5 | Joost Rijneveld | ||
6 | Public domain. | ||
7 | */ | ||
8 | |||
9 | #include "includes.h" | ||
10 | #ifdef WITH_XMSS | ||
11 | |||
12 | #include <stdlib.h> | ||
13 | #include <string.h> | ||
14 | #ifdef HAVE_STDINT_H | ||
15 | #include <stdint.h> | ||
16 | #endif | ||
17 | |||
18 | #include "xmss_fast.h" | ||
19 | #include "crypto_api.h" | ||
20 | #include "xmss_wots.h" | ||
21 | #include "xmss_hash.h" | ||
22 | |||
23 | #include "xmss_commons.h" | ||
24 | #include "xmss_hash_address.h" | ||
25 | // For testing | ||
26 | #include "stdio.h" | ||
27 | |||
28 | |||
29 | |||
30 | /** | ||
31 | * Used for pseudorandom keygeneration, | ||
32 | * generates the seed for the WOTS keypair at address addr | ||
33 | * | ||
34 | * takes n byte sk_seed and returns n byte seed using 32 byte address addr. | ||
35 | */ | ||
36 | static void get_seed(unsigned char *seed, const unsigned char *sk_seed, int n, uint32_t addr[8]) | ||
37 | { | ||
38 | unsigned char bytes[32]; | ||
39 | // Make sure that chain addr, hash addr, and key bit are 0! | ||
40 | setChainADRS(addr,0); | ||
41 | setHashADRS(addr,0); | ||
42 | setKeyAndMask(addr,0); | ||
43 | // Generate pseudorandom value | ||
44 | addr_to_byte(bytes, addr); | ||
45 | prf(seed, bytes, sk_seed, n); | ||
46 | } | ||
47 | |||
48 | /** | ||
49 | * Initialize xmss params struct | ||
50 | * parameter names are the same as in the draft | ||
51 | * parameter k is K as used in the BDS algorithm | ||
52 | */ | ||
53 | int xmss_set_params(xmss_params *params, int n, int h, int w, int k) | ||
54 | { | ||
55 | if (k >= h || k < 2 || (h - k) % 2) { | ||
56 | fprintf(stderr, "For BDS traversal, H - K must be even, with H > K >= 2!\n"); | ||
57 | return 1; | ||
58 | } | ||
59 | params->h = h; | ||
60 | params->n = n; | ||
61 | params->k = k; | ||
62 | wots_params wots_par; | ||
63 | wots_set_params(&wots_par, n, w); | ||
64 | params->wots_par = wots_par; | ||
65 | return 0; | ||
66 | } | ||
67 | |||
68 | /** | ||
69 | * Initialize BDS state struct | ||
70 | * parameter names are the same as used in the description of the BDS traversal | ||
71 | */ | ||
72 | void xmss_set_bds_state(bds_state *state, unsigned char *stack, int stackoffset, unsigned char *stacklevels, unsigned char *auth, unsigned char *keep, treehash_inst *treehash, unsigned char *retain, int next_leaf) | ||
73 | { | ||
74 | state->stack = stack; | ||
75 | state->stackoffset = stackoffset; | ||
76 | state->stacklevels = stacklevels; | ||
77 | state->auth = auth; | ||
78 | state->keep = keep; | ||
79 | state->treehash = treehash; | ||
80 | state->retain = retain; | ||
81 | state->next_leaf = next_leaf; | ||
82 | } | ||
83 | |||
84 | /** | ||
85 | * Initialize xmssmt_params struct | ||
86 | * parameter names are the same as in the draft | ||
87 | * | ||
88 | * Especially h is the total tree height, i.e. the XMSS trees have height h/d | ||
89 | */ | ||
90 | int xmssmt_set_params(xmssmt_params *params, int n, int h, int d, int w, int k) | ||
91 | { | ||
92 | if (h % d) { | ||
93 | fprintf(stderr, "d must divide h without remainder!\n"); | ||
94 | return 1; | ||
95 | } | ||
96 | params->h = h; | ||
97 | params->d = d; | ||
98 | params->n = n; | ||
99 | params->index_len = (h + 7) / 8; | ||
100 | xmss_params xmss_par; | ||
101 | if (xmss_set_params(&xmss_par, n, (h/d), w, k)) { | ||
102 | return 1; | ||
103 | } | ||
104 | params->xmss_par = xmss_par; | ||
105 | return 0; | ||
106 | } | ||
107 | |||
108 | /** | ||
109 | * Computes a leaf from a WOTS public key using an L-tree. | ||
110 | */ | ||
111 | static void l_tree(unsigned char *leaf, unsigned char *wots_pk, const xmss_params *params, const unsigned char *pub_seed, uint32_t addr[8]) | ||
112 | { | ||
113 | unsigned int l = params->wots_par.len; | ||
114 | unsigned int n = params->n; | ||
115 | uint32_t i = 0; | ||
116 | uint32_t height = 0; | ||
117 | uint32_t bound; | ||
118 | |||
119 | //ADRS.setTreeHeight(0); | ||
120 | setTreeHeight(addr, height); | ||
121 | |||
122 | while (l > 1) { | ||
123 | bound = l >> 1; //floor(l / 2); | ||
124 | for (i = 0; i < bound; i++) { | ||
125 | //ADRS.setTreeIndex(i); | ||
126 | setTreeIndex(addr, i); | ||
127 | //wots_pk[i] = RAND_HASH(pk[2i], pk[2i + 1], SEED, ADRS); | ||
128 | hash_h(wots_pk+i*n, wots_pk+i*2*n, pub_seed, addr, n); | ||
129 | } | ||
130 | //if ( l % 2 == 1 ) { | ||
131 | if (l & 1) { | ||
132 | //pk[floor(l / 2) + 1] = pk[l]; | ||
133 | memcpy(wots_pk+(l>>1)*n, wots_pk+(l-1)*n, n); | ||
134 | //l = ceil(l / 2); | ||
135 | l=(l>>1)+1; | ||
136 | } | ||
137 | else { | ||
138 | //l = ceil(l / 2); | ||
139 | l=(l>>1); | ||
140 | } | ||
141 | //ADRS.setTreeHeight(ADRS.getTreeHeight() + 1); | ||
142 | height++; | ||
143 | setTreeHeight(addr, height); | ||
144 | } | ||
145 | //return pk[0]; | ||
146 | memcpy(leaf, wots_pk, n); | ||
147 | } | ||
148 | |||
149 | /** | ||
150 | * Computes the leaf at a given address. First generates the WOTS key pair, then computes leaf using l_tree. As this happens position independent, we only require that addr encodes the right ltree-address. | ||
151 | */ | ||
152 | static void gen_leaf_wots(unsigned char *leaf, const unsigned char *sk_seed, const xmss_params *params, const unsigned char *pub_seed, uint32_t ltree_addr[8], uint32_t ots_addr[8]) | ||
153 | { | ||
154 | unsigned char seed[params->n]; | ||
155 | unsigned char pk[params->wots_par.keysize]; | ||
156 | |||
157 | get_seed(seed, sk_seed, params->n, ots_addr); | ||
158 | wots_pkgen(pk, seed, &(params->wots_par), pub_seed, ots_addr); | ||
159 | |||
160 | l_tree(leaf, pk, params, pub_seed, ltree_addr); | ||
161 | } | ||
162 | |||
163 | static int treehash_minheight_on_stack(bds_state* state, const xmss_params *params, const treehash_inst *treehash) { | ||
164 | unsigned int r = params->h, i; | ||
165 | for (i = 0; i < treehash->stackusage; i++) { | ||
166 | if (state->stacklevels[state->stackoffset - i - 1] < r) { | ||
167 | r = state->stacklevels[state->stackoffset - i - 1]; | ||
168 | } | ||
169 | } | ||
170 | return r; | ||
171 | } | ||
172 | |||
173 | /** | ||
174 | * Merkle's TreeHash algorithm. The address only needs to initialize the first 78 bits of addr. Everything else will be set by treehash. | ||
175 | * Currently only used for key generation. | ||
176 | * | ||
177 | */ | ||
178 | static void treehash_setup(unsigned char *node, int height, int index, bds_state *state, const unsigned char *sk_seed, const xmss_params *params, const unsigned char *pub_seed, const uint32_t addr[8]) | ||
179 | { | ||
180 | unsigned int idx = index; | ||
181 | unsigned int n = params->n; | ||
182 | unsigned int h = params->h; | ||
183 | unsigned int k = params->k; | ||
184 | // use three different addresses because at this point we use all three formats in parallel | ||
185 | uint32_t ots_addr[8]; | ||
186 | uint32_t ltree_addr[8]; | ||
187 | uint32_t node_addr[8]; | ||
188 | // only copy layer and tree address parts | ||
189 | memcpy(ots_addr, addr, 12); | ||
190 | // type = ots | ||
191 | setType(ots_addr, 0); | ||
192 | memcpy(ltree_addr, addr, 12); | ||
193 | setType(ltree_addr, 1); | ||
194 | memcpy(node_addr, addr, 12); | ||
195 | setType(node_addr, 2); | ||
196 | |||
197 | uint32_t lastnode, i; | ||
198 | unsigned char stack[(height+1)*n]; | ||
199 | unsigned int stacklevels[height+1]; | ||
200 | unsigned int stackoffset=0; | ||
201 | unsigned int nodeh; | ||
202 | |||
203 | lastnode = idx+(1<<height); | ||
204 | |||
205 | for (i = 0; i < h-k; i++) { | ||
206 | state->treehash[i].h = i; | ||
207 | state->treehash[i].completed = 1; | ||
208 | state->treehash[i].stackusage = 0; | ||
209 | } | ||
210 | |||
211 | i = 0; | ||
212 | for (; idx < lastnode; idx++) { | ||
213 | setLtreeADRS(ltree_addr, idx); | ||
214 | setOTSADRS(ots_addr, idx); | ||
215 | gen_leaf_wots(stack+stackoffset*n, sk_seed, params, pub_seed, ltree_addr, ots_addr); | ||
216 | stacklevels[stackoffset] = 0; | ||
217 | stackoffset++; | ||
218 | if (h - k > 0 && i == 3) { | ||
219 | memcpy(state->treehash[0].node, stack+stackoffset*n, n); | ||
220 | } | ||
221 | while (stackoffset>1 && stacklevels[stackoffset-1] == stacklevels[stackoffset-2]) | ||
222 | { | ||
223 | nodeh = stacklevels[stackoffset-1]; | ||
224 | if (i >> nodeh == 1) { | ||
225 | memcpy(state->auth + nodeh*n, stack+(stackoffset-1)*n, n); | ||
226 | } | ||
227 | else { | ||
228 | if (nodeh < h - k && i >> nodeh == 3) { | ||
229 | memcpy(state->treehash[nodeh].node, stack+(stackoffset-1)*n, n); | ||
230 | } | ||
231 | else if (nodeh >= h - k) { | ||
232 | memcpy(state->retain + ((1 << (h - 1 - nodeh)) + nodeh - h + (((i >> nodeh) - 3) >> 1)) * n, stack+(stackoffset-1)*n, n); | ||
233 | } | ||
234 | } | ||
235 | setTreeHeight(node_addr, stacklevels[stackoffset-1]); | ||
236 | setTreeIndex(node_addr, (idx >> (stacklevels[stackoffset-1]+1))); | ||
237 | hash_h(stack+(stackoffset-2)*n, stack+(stackoffset-2)*n, pub_seed, | ||
238 | node_addr, n); | ||
239 | stacklevels[stackoffset-2]++; | ||
240 | stackoffset--; | ||
241 | } | ||
242 | i++; | ||
243 | } | ||
244 | |||
245 | for (i = 0; i < n; i++) | ||
246 | node[i] = stack[i]; | ||
247 | } | ||
248 | |||
249 | static void treehash_update(treehash_inst *treehash, bds_state *state, const unsigned char *sk_seed, const xmss_params *params, const unsigned char *pub_seed, const uint32_t addr[8]) { | ||
250 | int n = params->n; | ||
251 | |||
252 | uint32_t ots_addr[8]; | ||
253 | uint32_t ltree_addr[8]; | ||
254 | uint32_t node_addr[8]; | ||
255 | // only copy layer and tree address parts | ||
256 | memcpy(ots_addr, addr, 12); | ||
257 | // type = ots | ||
258 | setType(ots_addr, 0); | ||
259 | memcpy(ltree_addr, addr, 12); | ||
260 | setType(ltree_addr, 1); | ||
261 | memcpy(node_addr, addr, 12); | ||
262 | setType(node_addr, 2); | ||
263 | |||
264 | setLtreeADRS(ltree_addr, treehash->next_idx); | ||
265 | setOTSADRS(ots_addr, treehash->next_idx); | ||
266 | |||
267 | unsigned char nodebuffer[2 * n]; | ||
268 | unsigned int nodeheight = 0; | ||
269 | gen_leaf_wots(nodebuffer, sk_seed, params, pub_seed, ltree_addr, ots_addr); | ||
270 | while (treehash->stackusage > 0 && state->stacklevels[state->stackoffset-1] == nodeheight) { | ||
271 | memcpy(nodebuffer + n, nodebuffer, n); | ||
272 | memcpy(nodebuffer, state->stack + (state->stackoffset-1)*n, n); | ||
273 | setTreeHeight(node_addr, nodeheight); | ||
274 | setTreeIndex(node_addr, (treehash->next_idx >> (nodeheight+1))); | ||
275 | hash_h(nodebuffer, nodebuffer, pub_seed, node_addr, n); | ||
276 | nodeheight++; | ||
277 | treehash->stackusage--; | ||
278 | state->stackoffset--; | ||
279 | } | ||
280 | if (nodeheight == treehash->h) { // this also implies stackusage == 0 | ||
281 | memcpy(treehash->node, nodebuffer, n); | ||
282 | treehash->completed = 1; | ||
283 | } | ||
284 | else { | ||
285 | memcpy(state->stack + state->stackoffset*n, nodebuffer, n); | ||
286 | treehash->stackusage++; | ||
287 | state->stacklevels[state->stackoffset] = nodeheight; | ||
288 | state->stackoffset++; | ||
289 | treehash->next_idx++; | ||
290 | } | ||
291 | } | ||
292 | |||
293 | /** | ||
294 | * Computes a root node given a leaf and an authapth | ||
295 | */ | ||
296 | static void validate_authpath(unsigned char *root, const unsigned char *leaf, unsigned long leafidx, const unsigned char *authpath, const xmss_params *params, const unsigned char *pub_seed, uint32_t addr[8]) | ||
297 | { | ||
298 | unsigned int n = params->n; | ||
299 | |||
300 | uint32_t i, j; | ||
301 | unsigned char buffer[2*n]; | ||
302 | |||
303 | // If leafidx is odd (last bit = 1), current path element is a right child and authpath has to go to the left. | ||
304 | // Otherwise, it is the other way around | ||
305 | if (leafidx & 1) { | ||
306 | for (j = 0; j < n; j++) | ||
307 | buffer[n+j] = leaf[j]; | ||
308 | for (j = 0; j < n; j++) | ||
309 | buffer[j] = authpath[j]; | ||
310 | } | ||
311 | else { | ||
312 | for (j = 0; j < n; j++) | ||
313 | buffer[j] = leaf[j]; | ||
314 | for (j = 0; j < n; j++) | ||
315 | buffer[n+j] = authpath[j]; | ||
316 | } | ||
317 | authpath += n; | ||
318 | |||
319 | for (i=0; i < params->h-1; i++) { | ||
320 | setTreeHeight(addr, i); | ||
321 | leafidx >>= 1; | ||
322 | setTreeIndex(addr, leafidx); | ||
323 | if (leafidx&1) { | ||
324 | hash_h(buffer+n, buffer, pub_seed, addr, n); | ||
325 | for (j = 0; j < n; j++) | ||
326 | buffer[j] = authpath[j]; | ||
327 | } | ||
328 | else { | ||
329 | hash_h(buffer, buffer, pub_seed, addr, n); | ||
330 | for (j = 0; j < n; j++) | ||
331 | buffer[j+n] = authpath[j]; | ||
332 | } | ||
333 | authpath += n; | ||
334 | } | ||
335 | setTreeHeight(addr, (params->h-1)); | ||
336 | leafidx >>= 1; | ||
337 | setTreeIndex(addr, leafidx); | ||
338 | hash_h(root, buffer, pub_seed, addr, n); | ||
339 | } | ||
340 | |||
341 | /** | ||
342 | * Performs one treehash update on the instance that needs it the most. | ||
343 | * Returns 1 if such an instance was not found | ||
344 | **/ | ||
345 | static char bds_treehash_update(bds_state *state, unsigned int updates, const unsigned char *sk_seed, const xmss_params *params, unsigned char *pub_seed, const uint32_t addr[8]) { | ||
346 | uint32_t i, j; | ||
347 | unsigned int level, l_min, low; | ||
348 | unsigned int h = params->h; | ||
349 | unsigned int k = params->k; | ||
350 | unsigned int used = 0; | ||
351 | |||
352 | for (j = 0; j < updates; j++) { | ||
353 | l_min = h; | ||
354 | level = h - k; | ||
355 | for (i = 0; i < h - k; i++) { | ||
356 | if (state->treehash[i].completed) { | ||
357 | low = h; | ||
358 | } | ||
359 | else if (state->treehash[i].stackusage == 0) { | ||
360 | low = i; | ||
361 | } | ||
362 | else { | ||
363 | low = treehash_minheight_on_stack(state, params, &(state->treehash[i])); | ||
364 | } | ||
365 | if (low < l_min) { | ||
366 | level = i; | ||
367 | l_min = low; | ||
368 | } | ||
369 | } | ||
370 | if (level == h - k) { | ||
371 | break; | ||
372 | } | ||
373 | treehash_update(&(state->treehash[level]), state, sk_seed, params, pub_seed, addr); | ||
374 | used++; | ||
375 | } | ||
376 | return updates - used; | ||
377 | } | ||
378 | |||
379 | /** | ||
380 | * Updates the state (typically NEXT_i) by adding a leaf and updating the stack | ||
381 | * Returns 1 if all leaf nodes have already been processed | ||
382 | **/ | ||
383 | static char bds_state_update(bds_state *state, const unsigned char *sk_seed, const xmss_params *params, unsigned char *pub_seed, const uint32_t addr[8]) { | ||
384 | uint32_t ltree_addr[8]; | ||
385 | uint32_t node_addr[8]; | ||
386 | uint32_t ots_addr[8]; | ||
387 | |||
388 | int n = params->n; | ||
389 | int h = params->h; | ||
390 | int k = params->k; | ||
391 | |||
392 | int nodeh; | ||
393 | int idx = state->next_leaf; | ||
394 | if (idx == 1 << h) { | ||
395 | return 1; | ||
396 | } | ||
397 | |||
398 | // only copy layer and tree address parts | ||
399 | memcpy(ots_addr, addr, 12); | ||
400 | // type = ots | ||
401 | setType(ots_addr, 0); | ||
402 | memcpy(ltree_addr, addr, 12); | ||
403 | setType(ltree_addr, 1); | ||
404 | memcpy(node_addr, addr, 12); | ||
405 | setType(node_addr, 2); | ||
406 | |||
407 | setOTSADRS(ots_addr, idx); | ||
408 | setLtreeADRS(ltree_addr, idx); | ||
409 | |||
410 | gen_leaf_wots(state->stack+state->stackoffset*n, sk_seed, params, pub_seed, ltree_addr, ots_addr); | ||
411 | |||
412 | state->stacklevels[state->stackoffset] = 0; | ||
413 | state->stackoffset++; | ||
414 | if (h - k > 0 && idx == 3) { | ||
415 | memcpy(state->treehash[0].node, state->stack+state->stackoffset*n, n); | ||
416 | } | ||
417 | while (state->stackoffset>1 && state->stacklevels[state->stackoffset-1] == state->stacklevels[state->stackoffset-2]) { | ||
418 | nodeh = state->stacklevels[state->stackoffset-1]; | ||
419 | if (idx >> nodeh == 1) { | ||
420 | memcpy(state->auth + nodeh*n, state->stack+(state->stackoffset-1)*n, n); | ||
421 | } | ||
422 | else { | ||
423 | if (nodeh < h - k && idx >> nodeh == 3) { | ||
424 | memcpy(state->treehash[nodeh].node, state->stack+(state->stackoffset-1)*n, n); | ||
425 | } | ||
426 | else if (nodeh >= h - k) { | ||
427 | memcpy(state->retain + ((1 << (h - 1 - nodeh)) + nodeh - h + (((idx >> nodeh) - 3) >> 1)) * n, state->stack+(state->stackoffset-1)*n, n); | ||
428 | } | ||
429 | } | ||
430 | setTreeHeight(node_addr, state->stacklevels[state->stackoffset-1]); | ||
431 | setTreeIndex(node_addr, (idx >> (state->stacklevels[state->stackoffset-1]+1))); | ||
432 | hash_h(state->stack+(state->stackoffset-2)*n, state->stack+(state->stackoffset-2)*n, pub_seed, node_addr, n); | ||
433 | |||
434 | state->stacklevels[state->stackoffset-2]++; | ||
435 | state->stackoffset--; | ||
436 | } | ||
437 | state->next_leaf++; | ||
438 | return 0; | ||
439 | } | ||
440 | |||
441 | /** | ||
442 | * Returns the auth path for node leaf_idx and computes the auth path for the | ||
443 | * next leaf node, using the algorithm described by Buchmann, Dahmen and Szydlo | ||
444 | * in "Post Quantum Cryptography", Springer 2009. | ||
445 | */ | ||
446 | static void bds_round(bds_state *state, const unsigned long leaf_idx, const unsigned char *sk_seed, const xmss_params *params, unsigned char *pub_seed, uint32_t addr[8]) | ||
447 | { | ||
448 | unsigned int i; | ||
449 | unsigned int n = params->n; | ||
450 | unsigned int h = params->h; | ||
451 | unsigned int k = params->k; | ||
452 | |||
453 | unsigned int tau = h; | ||
454 | unsigned int startidx; | ||
455 | unsigned int offset, rowidx; | ||
456 | unsigned char buf[2 * n]; | ||
457 | |||
458 | uint32_t ots_addr[8]; | ||
459 | uint32_t ltree_addr[8]; | ||
460 | uint32_t node_addr[8]; | ||
461 | // only copy layer and tree address parts | ||
462 | memcpy(ots_addr, addr, 12); | ||
463 | // type = ots | ||
464 | setType(ots_addr, 0); | ||
465 | memcpy(ltree_addr, addr, 12); | ||
466 | setType(ltree_addr, 1); | ||
467 | memcpy(node_addr, addr, 12); | ||
468 | setType(node_addr, 2); | ||
469 | |||
470 | for (i = 0; i < h; i++) { | ||
471 | if (! ((leaf_idx >> i) & 1)) { | ||
472 | tau = i; | ||
473 | break; | ||
474 | } | ||
475 | } | ||
476 | |||
477 | if (tau > 0) { | ||
478 | memcpy(buf, state->auth + (tau-1) * n, n); | ||
479 | // we need to do this before refreshing state->keep to prevent overwriting | ||
480 | memcpy(buf + n, state->keep + ((tau-1) >> 1) * n, n); | ||
481 | } | ||
482 | if (!((leaf_idx >> (tau + 1)) & 1) && (tau < h - 1)) { | ||
483 | memcpy(state->keep + (tau >> 1)*n, state->auth + tau*n, n); | ||
484 | } | ||
485 | if (tau == 0) { | ||
486 | setLtreeADRS(ltree_addr, leaf_idx); | ||
487 | setOTSADRS(ots_addr, leaf_idx); | ||
488 | gen_leaf_wots(state->auth, sk_seed, params, pub_seed, ltree_addr, ots_addr); | ||
489 | } | ||
490 | else { | ||
491 | setTreeHeight(node_addr, (tau-1)); | ||
492 | setTreeIndex(node_addr, leaf_idx >> tau); | ||
493 | hash_h(state->auth + tau * n, buf, pub_seed, node_addr, n); | ||
494 | for (i = 0; i < tau; i++) { | ||
495 | if (i < h - k) { | ||
496 | memcpy(state->auth + i * n, state->treehash[i].node, n); | ||
497 | } | ||
498 | else { | ||
499 | offset = (1 << (h - 1 - i)) + i - h; | ||
500 | rowidx = ((leaf_idx >> i) - 1) >> 1; | ||
501 | memcpy(state->auth + i * n, state->retain + (offset + rowidx) * n, n); | ||
502 | } | ||
503 | } | ||
504 | |||
505 | for (i = 0; i < ((tau < h - k) ? tau : (h - k)); i++) { | ||
506 | startidx = leaf_idx + 1 + 3 * (1 << i); | ||
507 | if (startidx < 1U << h) { | ||
508 | state->treehash[i].h = i; | ||
509 | state->treehash[i].next_idx = startidx; | ||
510 | state->treehash[i].completed = 0; | ||
511 | state->treehash[i].stackusage = 0; | ||
512 | } | ||
513 | } | ||
514 | } | ||
515 | } | ||
516 | |||
517 | /* | ||
518 | * Generates a XMSS key pair for a given parameter set. | ||
519 | * Format sk: [(32bit) idx || SK_SEED || SK_PRF || PUB_SEED || root] | ||
520 | * Format pk: [root || PUB_SEED] omitting algo oid. | ||
521 | */ | ||
522 | int xmss_keypair(unsigned char *pk, unsigned char *sk, bds_state *state, xmss_params *params) | ||
523 | { | ||
524 | unsigned int n = params->n; | ||
525 | // Set idx = 0 | ||
526 | sk[0] = 0; | ||
527 | sk[1] = 0; | ||
528 | sk[2] = 0; | ||
529 | sk[3] = 0; | ||
530 | // Init SK_SEED (n byte), SK_PRF (n byte), and PUB_SEED (n byte) | ||
531 | randombytes(sk+4, 3*n); | ||
532 | // Copy PUB_SEED to public key | ||
533 | memcpy(pk+n, sk+4+2*n, n); | ||
534 | |||
535 | uint32_t addr[8] = {0, 0, 0, 0, 0, 0, 0, 0}; | ||
536 | |||
537 | // Compute root | ||
538 | treehash_setup(pk, params->h, 0, state, sk+4, params, sk+4+2*n, addr); | ||
539 | // copy root to sk | ||
540 | memcpy(sk+4+3*n, pk, n); | ||
541 | return 0; | ||
542 | } | ||
543 | |||
544 | /** | ||
545 | * Signs a message. | ||
546 | * Returns | ||
547 | * 1. an array containing the signature followed by the message AND | ||
548 | * 2. an updated secret key! | ||
549 | * | ||
550 | */ | ||
551 | int xmss_sign(unsigned char *sk, bds_state *state, unsigned char *sig_msg, unsigned long long *sig_msg_len, const unsigned char *msg, unsigned long long msglen, const xmss_params *params) | ||
552 | { | ||
553 | unsigned int h = params->h; | ||
554 | unsigned int n = params->n; | ||
555 | unsigned int k = params->k; | ||
556 | uint16_t i = 0; | ||
557 | |||
558 | // Extract SK | ||
559 | unsigned long idx = ((unsigned long)sk[0] << 24) | ((unsigned long)sk[1] << 16) | ((unsigned long)sk[2] << 8) | sk[3]; | ||
560 | unsigned char sk_seed[n]; | ||
561 | memcpy(sk_seed, sk+4, n); | ||
562 | unsigned char sk_prf[n]; | ||
563 | memcpy(sk_prf, sk+4+n, n); | ||
564 | unsigned char pub_seed[n]; | ||
565 | memcpy(pub_seed, sk+4+2*n, n); | ||
566 | |||
567 | // index as 32 bytes string | ||
568 | unsigned char idx_bytes_32[32]; | ||
569 | to_byte(idx_bytes_32, idx, 32); | ||
570 | |||
571 | unsigned char hash_key[3*n]; | ||
572 | |||
573 | // Update SK | ||
574 | sk[0] = ((idx + 1) >> 24) & 255; | ||
575 | sk[1] = ((idx + 1) >> 16) & 255; | ||
576 | sk[2] = ((idx + 1) >> 8) & 255; | ||
577 | sk[3] = (idx + 1) & 255; | ||
578 | // -- Secret key for this non-forward-secure version is now updated. | ||
579 | // -- A productive implementation should use a file handle instead and write the updated secret key at this point! | ||
580 | |||
581 | // Init working params | ||
582 | unsigned char R[n]; | ||
583 | unsigned char msg_h[n]; | ||
584 | unsigned char ots_seed[n]; | ||
585 | uint32_t ots_addr[8] = {0, 0, 0, 0, 0, 0, 0, 0}; | ||
586 | |||
587 | // --------------------------------- | ||
588 | // Message Hashing | ||
589 | // --------------------------------- | ||
590 | |||
591 | // Message Hash: | ||
592 | // First compute pseudorandom value | ||
593 | prf(R, idx_bytes_32, sk_prf, n); | ||
594 | // Generate hash key (R || root || idx) | ||
595 | memcpy(hash_key, R, n); | ||
596 | memcpy(hash_key+n, sk+4+3*n, n); | ||
597 | to_byte(hash_key+2*n, idx, n); | ||
598 | // Then use it for message digest | ||
599 | h_msg(msg_h, msg, msglen, hash_key, 3*n, n); | ||
600 | |||
601 | // Start collecting signature | ||
602 | *sig_msg_len = 0; | ||
603 | |||
604 | // Copy index to signature | ||
605 | sig_msg[0] = (idx >> 24) & 255; | ||
606 | sig_msg[1] = (idx >> 16) & 255; | ||
607 | sig_msg[2] = (idx >> 8) & 255; | ||
608 | sig_msg[3] = idx & 255; | ||
609 | |||
610 | sig_msg += 4; | ||
611 | *sig_msg_len += 4; | ||
612 | |||
613 | // Copy R to signature | ||
614 | for (i = 0; i < n; i++) | ||
615 | sig_msg[i] = R[i]; | ||
616 | |||
617 | sig_msg += n; | ||
618 | *sig_msg_len += n; | ||
619 | |||
620 | // ---------------------------------- | ||
621 | // Now we start to "really sign" | ||
622 | // ---------------------------------- | ||
623 | |||
624 | // Prepare Address | ||
625 | setType(ots_addr, 0); | ||
626 | setOTSADRS(ots_addr, idx); | ||
627 | |||
628 | // Compute seed for OTS key pair | ||
629 | get_seed(ots_seed, sk_seed, n, ots_addr); | ||
630 | |||
631 | // Compute WOTS signature | ||
632 | wots_sign(sig_msg, msg_h, ots_seed, &(params->wots_par), pub_seed, ots_addr); | ||
633 | |||
634 | sig_msg += params->wots_par.keysize; | ||
635 | *sig_msg_len += params->wots_par.keysize; | ||
636 | |||
637 | // the auth path was already computed during the previous round | ||
638 | memcpy(sig_msg, state->auth, h*n); | ||
639 | |||
640 | if (idx < (1U << h) - 1) { | ||
641 | bds_round(state, idx, sk_seed, params, pub_seed, ots_addr); | ||
642 | bds_treehash_update(state, (h - k) >> 1, sk_seed, params, pub_seed, ots_addr); | ||
643 | } | ||
644 | |||
645 | /* TODO: save key/bds state here! */ | ||
646 | |||
647 | sig_msg += params->h*n; | ||
648 | *sig_msg_len += params->h*n; | ||
649 | |||
650 | //Whipe secret elements? | ||
651 | //zerobytes(tsk, CRYPTO_SECRETKEYBYTES); | ||
652 | |||
653 | |||
654 | memcpy(sig_msg, msg, msglen); | ||
655 | *sig_msg_len += msglen; | ||
656 | |||
657 | return 0; | ||
658 | } | ||
659 | |||
660 | /** | ||
661 | * Verifies a given message signature pair under a given public key. | ||
662 | */ | ||
663 | int xmss_sign_open(unsigned char *msg, unsigned long long *msglen, const unsigned char *sig_msg, unsigned long long sig_msg_len, const unsigned char *pk, const xmss_params *params) | ||
664 | { | ||
665 | unsigned int n = params->n; | ||
666 | |||
667 | unsigned long long i, m_len; | ||
668 | unsigned long idx=0; | ||
669 | unsigned char wots_pk[params->wots_par.keysize]; | ||
670 | unsigned char pkhash[n]; | ||
671 | unsigned char root[n]; | ||
672 | unsigned char msg_h[n]; | ||
673 | unsigned char hash_key[3*n]; | ||
674 | |||
675 | unsigned char pub_seed[n]; | ||
676 | memcpy(pub_seed, pk+n, n); | ||
677 | |||
678 | // Init addresses | ||
679 | uint32_t ots_addr[8] = {0, 0, 0, 0, 0, 0, 0, 0}; | ||
680 | uint32_t ltree_addr[8] = {0, 0, 0, 0, 0, 0, 0, 0}; | ||
681 | uint32_t node_addr[8] = {0, 0, 0, 0, 0, 0, 0, 0}; | ||
682 | |||
683 | setType(ots_addr, 0); | ||
684 | setType(ltree_addr, 1); | ||
685 | setType(node_addr, 2); | ||
686 | |||
687 | // Extract index | ||
688 | idx = ((unsigned long)sig_msg[0] << 24) | ((unsigned long)sig_msg[1] << 16) | ((unsigned long)sig_msg[2] << 8) | sig_msg[3]; | ||
689 | printf("verify:: idx = %lu\n", idx); | ||
690 | |||
691 | // Generate hash key (R || root || idx) | ||
692 | memcpy(hash_key, sig_msg+4,n); | ||
693 | memcpy(hash_key+n, pk, n); | ||
694 | to_byte(hash_key+2*n, idx, n); | ||
695 | |||
696 | sig_msg += (n+4); | ||
697 | sig_msg_len -= (n+4); | ||
698 | |||
699 | // hash message | ||
700 | unsigned long long tmp_sig_len = params->wots_par.keysize+params->h*n; | ||
701 | m_len = sig_msg_len - tmp_sig_len; | ||
702 | h_msg(msg_h, sig_msg + tmp_sig_len, m_len, hash_key, 3*n, n); | ||
703 | |||
704 | //----------------------- | ||
705 | // Verify signature | ||
706 | //----------------------- | ||
707 | |||
708 | // Prepare Address | ||
709 | setOTSADRS(ots_addr, idx); | ||
710 | // Check WOTS signature | ||
711 | wots_pkFromSig(wots_pk, sig_msg, msg_h, &(params->wots_par), pub_seed, ots_addr); | ||
712 | |||
713 | sig_msg += params->wots_par.keysize; | ||
714 | sig_msg_len -= params->wots_par.keysize; | ||
715 | |||
716 | // Compute Ltree | ||
717 | setLtreeADRS(ltree_addr, idx); | ||
718 | l_tree(pkhash, wots_pk, params, pub_seed, ltree_addr); | ||
719 | |||
720 | // Compute root | ||
721 | validate_authpath(root, pkhash, idx, sig_msg, params, pub_seed, node_addr); | ||
722 | |||
723 | sig_msg += params->h*n; | ||
724 | sig_msg_len -= params->h*n; | ||
725 | |||
726 | for (i = 0; i < n; i++) | ||
727 | if (root[i] != pk[i]) | ||
728 | goto fail; | ||
729 | |||
730 | *msglen = sig_msg_len; | ||
731 | for (i = 0; i < *msglen; i++) | ||
732 | msg[i] = sig_msg[i]; | ||
733 | |||
734 | return 0; | ||
735 | |||
736 | |||
737 | fail: | ||
738 | *msglen = sig_msg_len; | ||
739 | for (i = 0; i < *msglen; i++) | ||
740 | msg[i] = 0; | ||
741 | *msglen = -1; | ||
742 | return -1; | ||
743 | } | ||
744 | |||
745 | /* | ||
746 | * Generates a XMSSMT key pair for a given parameter set. | ||
747 | * Format sk: [(ceil(h/8) bit) idx || SK_SEED || SK_PRF || PUB_SEED || root] | ||
748 | * Format pk: [root || PUB_SEED] omitting algo oid. | ||
749 | */ | ||
750 | int xmssmt_keypair(unsigned char *pk, unsigned char *sk, bds_state *states, unsigned char *wots_sigs, xmssmt_params *params) | ||
751 | { | ||
752 | unsigned int n = params->n; | ||
753 | unsigned int i; | ||
754 | unsigned char ots_seed[params->n]; | ||
755 | // Set idx = 0 | ||
756 | for (i = 0; i < params->index_len; i++) { | ||
757 | sk[i] = 0; | ||
758 | } | ||
759 | // Init SK_SEED (n byte), SK_PRF (n byte), and PUB_SEED (n byte) | ||
760 | randombytes(sk+params->index_len, 3*n); | ||
761 | // Copy PUB_SEED to public key | ||
762 | memcpy(pk+n, sk+params->index_len+2*n, n); | ||
763 | |||
764 | // Set address to point on the single tree on layer d-1 | ||
765 | uint32_t addr[8] = {0, 0, 0, 0, 0, 0, 0, 0}; | ||
766 | setLayerADRS(addr, (params->d-1)); | ||
767 | // Set up state and compute wots signatures for all but topmost tree root | ||
768 | for (i = 0; i < params->d - 1; i++) { | ||
769 | // Compute seed for OTS key pair | ||
770 | treehash_setup(pk, params->xmss_par.h, 0, states + i, sk+params->index_len, &(params->xmss_par), pk+n, addr); | ||
771 | setLayerADRS(addr, (i+1)); | ||
772 | get_seed(ots_seed, sk+params->index_len, n, addr); | ||
773 | wots_sign(wots_sigs + i*params->xmss_par.wots_par.keysize, pk, ots_seed, &(params->xmss_par.wots_par), pk+n, addr); | ||
774 | } | ||
775 | treehash_setup(pk, params->xmss_par.h, 0, states + i, sk+params->index_len, &(params->xmss_par), pk+n, addr); | ||
776 | memcpy(sk+params->index_len+3*n, pk, n); | ||
777 | return 0; | ||
778 | } | ||
779 | |||
780 | /** | ||
781 | * Signs a message. | ||
782 | * Returns | ||
783 | * 1. an array containing the signature followed by the message AND | ||
784 | * 2. an updated secret key! | ||
785 | * | ||
786 | */ | ||
787 | int xmssmt_sign(unsigned char *sk, bds_state *states, unsigned char *wots_sigs, unsigned char *sig_msg, unsigned long long *sig_msg_len, const unsigned char *msg, unsigned long long msglen, const xmssmt_params *params) | ||
788 | { | ||
789 | unsigned int n = params->n; | ||
790 | |||
791 | unsigned int tree_h = params->xmss_par.h; | ||
792 | unsigned int h = params->h; | ||
793 | unsigned int k = params->xmss_par.k; | ||
794 | unsigned int idx_len = params->index_len; | ||
795 | uint64_t idx_tree; | ||
796 | uint32_t idx_leaf; | ||
797 | uint64_t i, j; | ||
798 | int needswap_upto = -1; | ||
799 | unsigned int updates; | ||
800 | |||
801 | unsigned char sk_seed[n]; | ||
802 | unsigned char sk_prf[n]; | ||
803 | unsigned char pub_seed[n]; | ||
804 | // Init working params | ||
805 | unsigned char R[n]; | ||
806 | unsigned char msg_h[n]; | ||
807 | unsigned char hash_key[3*n]; | ||
808 | unsigned char ots_seed[n]; | ||
809 | uint32_t addr[8] = {0, 0, 0, 0, 0, 0, 0, 0}; | ||
810 | uint32_t ots_addr[8] = {0, 0, 0, 0, 0, 0, 0, 0}; | ||
811 | unsigned char idx_bytes_32[32]; | ||
812 | bds_state tmp; | ||
813 | |||
814 | // Extract SK | ||
815 | unsigned long long idx = 0; | ||
816 | for (i = 0; i < idx_len; i++) { | ||
817 | idx |= ((unsigned long long)sk[i]) << 8*(idx_len - 1 - i); | ||
818 | } | ||
819 | |||
820 | memcpy(sk_seed, sk+idx_len, n); | ||
821 | memcpy(sk_prf, sk+idx_len+n, n); | ||
822 | memcpy(pub_seed, sk+idx_len+2*n, n); | ||
823 | |||
824 | // Update SK | ||
825 | for (i = 0; i < idx_len; i++) { | ||
826 | sk[i] = ((idx + 1) >> 8*(idx_len - 1 - i)) & 255; | ||
827 | } | ||
828 | // -- Secret key for this non-forward-secure version is now updated. | ||
829 | // -- A productive implementation should use a file handle instead and write the updated secret key at this point! | ||
830 | |||
831 | |||
832 | // --------------------------------- | ||
833 | // Message Hashing | ||
834 | // --------------------------------- | ||
835 | |||
836 | // Message Hash: | ||
837 | // First compute pseudorandom value | ||
838 | to_byte(idx_bytes_32, idx, 32); | ||
839 | prf(R, idx_bytes_32, sk_prf, n); | ||
840 | // Generate hash key (R || root || idx) | ||
841 | memcpy(hash_key, R, n); | ||
842 | memcpy(hash_key+n, sk+idx_len+3*n, n); | ||
843 | to_byte(hash_key+2*n, idx, n); | ||
844 | |||
845 | // Then use it for message digest | ||
846 | h_msg(msg_h, msg, msglen, hash_key, 3*n, n); | ||
847 | |||
848 | // Start collecting signature | ||
849 | *sig_msg_len = 0; | ||
850 | |||
851 | // Copy index to signature | ||
852 | for (i = 0; i < idx_len; i++) { | ||
853 | sig_msg[i] = (idx >> 8*(idx_len - 1 - i)) & 255; | ||
854 | } | ||
855 | |||
856 | sig_msg += idx_len; | ||
857 | *sig_msg_len += idx_len; | ||
858 | |||
859 | // Copy R to signature | ||
860 | for (i = 0; i < n; i++) | ||
861 | sig_msg[i] = R[i]; | ||
862 | |||
863 | sig_msg += n; | ||
864 | *sig_msg_len += n; | ||
865 | |||
866 | // ---------------------------------- | ||
867 | // Now we start to "really sign" | ||
868 | // ---------------------------------- | ||
869 | |||
870 | // Handle lowest layer separately as it is slightly different... | ||
871 | |||
872 | // Prepare Address | ||
873 | setType(ots_addr, 0); | ||
874 | idx_tree = idx >> tree_h; | ||
875 | idx_leaf = (idx & ((1 << tree_h)-1)); | ||
876 | setLayerADRS(ots_addr, 0); | ||
877 | setTreeADRS(ots_addr, idx_tree); | ||
878 | setOTSADRS(ots_addr, idx_leaf); | ||
879 | |||
880 | // Compute seed for OTS key pair | ||
881 | get_seed(ots_seed, sk_seed, n, ots_addr); | ||
882 | |||
883 | // Compute WOTS signature | ||
884 | wots_sign(sig_msg, msg_h, ots_seed, &(params->xmss_par.wots_par), pub_seed, ots_addr); | ||
885 | |||
886 | sig_msg += params->xmss_par.wots_par.keysize; | ||
887 | *sig_msg_len += params->xmss_par.wots_par.keysize; | ||
888 | |||
889 | memcpy(sig_msg, states[0].auth, tree_h*n); | ||
890 | sig_msg += tree_h*n; | ||
891 | *sig_msg_len += tree_h*n; | ||
892 | |||
893 | // prepare signature of remaining layers | ||
894 | for (i = 1; i < params->d; i++) { | ||
895 | // put WOTS signature in place | ||
896 | memcpy(sig_msg, wots_sigs + (i-1)*params->xmss_par.wots_par.keysize, params->xmss_par.wots_par.keysize); | ||
897 | |||
898 | sig_msg += params->xmss_par.wots_par.keysize; | ||
899 | *sig_msg_len += params->xmss_par.wots_par.keysize; | ||
900 | |||
901 | // put AUTH nodes in place | ||
902 | memcpy(sig_msg, states[i].auth, tree_h*n); | ||
903 | sig_msg += tree_h*n; | ||
904 | *sig_msg_len += tree_h*n; | ||
905 | } | ||
906 | |||
907 | updates = (tree_h - k) >> 1; | ||
908 | |||
909 | setTreeADRS(addr, (idx_tree + 1)); | ||
910 | // mandatory update for NEXT_0 (does not count towards h-k/2) if NEXT_0 exists | ||
911 | if ((1 + idx_tree) * (1 << tree_h) + idx_leaf < (1ULL << h)) { | ||
912 | bds_state_update(&states[params->d], sk_seed, &(params->xmss_par), pub_seed, addr); | ||
913 | } | ||
914 | |||
915 | for (i = 0; i < params->d; i++) { | ||
916 | // check if we're not at the end of a tree | ||
917 | if (! (((idx + 1) & ((1ULL << ((i+1)*tree_h)) - 1)) == 0)) { | ||
918 | idx_leaf = (idx >> (tree_h * i)) & ((1 << tree_h)-1); | ||
919 | idx_tree = (idx >> (tree_h * (i+1))); | ||
920 | setLayerADRS(addr, i); | ||
921 | setTreeADRS(addr, idx_tree); | ||
922 | if (i == (unsigned int) (needswap_upto + 1)) { | ||
923 | bds_round(&states[i], idx_leaf, sk_seed, &(params->xmss_par), pub_seed, addr); | ||
924 | } | ||
925 | updates = bds_treehash_update(&states[i], updates, sk_seed, &(params->xmss_par), pub_seed, addr); | ||
926 | setTreeADRS(addr, (idx_tree + 1)); | ||
927 | // if a NEXT-tree exists for this level; | ||
928 | if ((1 + idx_tree) * (1 << tree_h) + idx_leaf < (1ULL << (h - tree_h * i))) { | ||
929 | if (i > 0 && updates > 0 && states[params->d + i].next_leaf < (1ULL << h)) { | ||
930 | bds_state_update(&states[params->d + i], sk_seed, &(params->xmss_par), pub_seed, addr); | ||
931 | updates--; | ||
932 | } | ||
933 | } | ||
934 | } | ||
935 | else if (idx < (1ULL << h) - 1) { | ||
936 | memcpy(&tmp, states+params->d + i, sizeof(bds_state)); | ||
937 | memcpy(states+params->d + i, states + i, sizeof(bds_state)); | ||
938 | memcpy(states + i, &tmp, sizeof(bds_state)); | ||
939 | |||
940 | setLayerADRS(ots_addr, (i+1)); | ||
941 | setTreeADRS(ots_addr, ((idx + 1) >> ((i+2) * tree_h))); | ||
942 | setOTSADRS(ots_addr, (((idx >> ((i+1) * tree_h)) + 1) & ((1 << tree_h)-1))); | ||
943 | |||
944 | get_seed(ots_seed, sk+params->index_len, n, ots_addr); | ||
945 | wots_sign(wots_sigs + i*params->xmss_par.wots_par.keysize, states[i].stack, ots_seed, &(params->xmss_par.wots_par), pub_seed, ots_addr); | ||
946 | |||
947 | states[params->d + i].stackoffset = 0; | ||
948 | states[params->d + i].next_leaf = 0; | ||
949 | |||
950 | updates--; // WOTS-signing counts as one update | ||
951 | needswap_upto = i; | ||
952 | for (j = 0; j < tree_h-k; j++) { | ||
953 | states[i].treehash[j].completed = 1; | ||
954 | } | ||
955 | } | ||
956 | } | ||
957 | |||
958 | //Whipe secret elements? | ||
959 | //zerobytes(tsk, CRYPTO_SECRETKEYBYTES); | ||
960 | |||
961 | memcpy(sig_msg, msg, msglen); | ||
962 | *sig_msg_len += msglen; | ||
963 | |||
964 | return 0; | ||
965 | } | ||
966 | |||
967 | /** | ||
968 | * Verifies a given message signature pair under a given public key. | ||
969 | */ | ||
970 | int xmssmt_sign_open(unsigned char *msg, unsigned long long *msglen, const unsigned char *sig_msg, unsigned long long sig_msg_len, const unsigned char *pk, const xmssmt_params *params) | ||
971 | { | ||
972 | unsigned int n = params->n; | ||
973 | |||
974 | unsigned int tree_h = params->xmss_par.h; | ||
975 | unsigned int idx_len = params->index_len; | ||
976 | uint64_t idx_tree; | ||
977 | uint32_t idx_leaf; | ||
978 | |||
979 | unsigned long long i, m_len; | ||
980 | unsigned long long idx=0; | ||
981 | unsigned char wots_pk[params->xmss_par.wots_par.keysize]; | ||
982 | unsigned char pkhash[n]; | ||
983 | unsigned char root[n]; | ||
984 | unsigned char msg_h[n]; | ||
985 | unsigned char hash_key[3*n]; | ||
986 | |||
987 | unsigned char pub_seed[n]; | ||
988 | memcpy(pub_seed, pk+n, n); | ||
989 | |||
990 | // Init addresses | ||
991 | uint32_t ots_addr[8] = {0, 0, 0, 0, 0, 0, 0, 0}; | ||
992 | uint32_t ltree_addr[8] = {0, 0, 0, 0, 0, 0, 0, 0}; | ||
993 | uint32_t node_addr[8] = {0, 0, 0, 0, 0, 0, 0, 0}; | ||
994 | |||
995 | // Extract index | ||
996 | for (i = 0; i < idx_len; i++) { | ||
997 | idx |= ((unsigned long long)sig_msg[i]) << (8*(idx_len - 1 - i)); | ||
998 | } | ||
999 | printf("verify:: idx = %llu\n", idx); | ||
1000 | sig_msg += idx_len; | ||
1001 | sig_msg_len -= idx_len; | ||
1002 | |||
1003 | // Generate hash key (R || root || idx) | ||
1004 | memcpy(hash_key, sig_msg,n); | ||
1005 | memcpy(hash_key+n, pk, n); | ||
1006 | to_byte(hash_key+2*n, idx, n); | ||
1007 | |||
1008 | sig_msg += n; | ||
1009 | sig_msg_len -= n; | ||
1010 | |||
1011 | |||
1012 | // hash message (recall, R is now on pole position at sig_msg | ||
1013 | unsigned long long tmp_sig_len = (params->d * params->xmss_par.wots_par.keysize) + (params->h * n); | ||
1014 | m_len = sig_msg_len - tmp_sig_len; | ||
1015 | h_msg(msg_h, sig_msg + tmp_sig_len, m_len, hash_key, 3*n, n); | ||
1016 | |||
1017 | |||
1018 | //----------------------- | ||
1019 | // Verify signature | ||
1020 | //----------------------- | ||
1021 | |||
1022 | // Prepare Address | ||
1023 | idx_tree = idx >> tree_h; | ||
1024 | idx_leaf = (idx & ((1 << tree_h)-1)); | ||
1025 | setLayerADRS(ots_addr, 0); | ||
1026 | setTreeADRS(ots_addr, idx_tree); | ||
1027 | setType(ots_addr, 0); | ||
1028 | |||
1029 | memcpy(ltree_addr, ots_addr, 12); | ||
1030 | setType(ltree_addr, 1); | ||
1031 | |||
1032 | memcpy(node_addr, ltree_addr, 12); | ||
1033 | setType(node_addr, 2); | ||
1034 | |||
1035 | setOTSADRS(ots_addr, idx_leaf); | ||
1036 | |||
1037 | // Check WOTS signature | ||
1038 | wots_pkFromSig(wots_pk, sig_msg, msg_h, &(params->xmss_par.wots_par), pub_seed, ots_addr); | ||
1039 | |||
1040 | sig_msg += params->xmss_par.wots_par.keysize; | ||
1041 | sig_msg_len -= params->xmss_par.wots_par.keysize; | ||
1042 | |||
1043 | // Compute Ltree | ||
1044 | setLtreeADRS(ltree_addr, idx_leaf); | ||
1045 | l_tree(pkhash, wots_pk, &(params->xmss_par), pub_seed, ltree_addr); | ||
1046 | |||
1047 | // Compute root | ||
1048 | validate_authpath(root, pkhash, idx_leaf, sig_msg, &(params->xmss_par), pub_seed, node_addr); | ||
1049 | |||
1050 | sig_msg += tree_h*n; | ||
1051 | sig_msg_len -= tree_h*n; | ||
1052 | |||
1053 | for (i = 1; i < params->d; i++) { | ||
1054 | // Prepare Address | ||
1055 | idx_leaf = (idx_tree & ((1 << tree_h)-1)); | ||
1056 | idx_tree = idx_tree >> tree_h; | ||
1057 | |||
1058 | setLayerADRS(ots_addr, i); | ||
1059 | setTreeADRS(ots_addr, idx_tree); | ||
1060 | setType(ots_addr, 0); | ||
1061 | |||
1062 | memcpy(ltree_addr, ots_addr, 12); | ||
1063 | setType(ltree_addr, 1); | ||
1064 | |||
1065 | memcpy(node_addr, ltree_addr, 12); | ||
1066 | setType(node_addr, 2); | ||
1067 | |||
1068 | setOTSADRS(ots_addr, idx_leaf); | ||
1069 | |||
1070 | // Check WOTS signature | ||
1071 | wots_pkFromSig(wots_pk, sig_msg, root, &(params->xmss_par.wots_par), pub_seed, ots_addr); | ||
1072 | |||
1073 | sig_msg += params->xmss_par.wots_par.keysize; | ||
1074 | sig_msg_len -= params->xmss_par.wots_par.keysize; | ||
1075 | |||
1076 | // Compute Ltree | ||
1077 | setLtreeADRS(ltree_addr, idx_leaf); | ||
1078 | l_tree(pkhash, wots_pk, &(params->xmss_par), pub_seed, ltree_addr); | ||
1079 | |||
1080 | // Compute root | ||
1081 | validate_authpath(root, pkhash, idx_leaf, sig_msg, &(params->xmss_par), pub_seed, node_addr); | ||
1082 | |||
1083 | sig_msg += tree_h*n; | ||
1084 | sig_msg_len -= tree_h*n; | ||
1085 | |||
1086 | } | ||
1087 | |||
1088 | for (i = 0; i < n; i++) | ||
1089 | if (root[i] != pk[i]) | ||
1090 | goto fail; | ||
1091 | |||
1092 | *msglen = sig_msg_len; | ||
1093 | for (i = 0; i < *msglen; i++) | ||
1094 | msg[i] = sig_msg[i]; | ||
1095 | |||
1096 | return 0; | ||
1097 | |||
1098 | |||
1099 | fail: | ||
1100 | *msglen = sig_msg_len; | ||
1101 | for (i = 0; i < *msglen; i++) | ||
1102 | msg[i] = 0; | ||
1103 | *msglen = -1; | ||
1104 | return -1; | ||
1105 | } | ||
1106 | #endif /* WITH_XMSS */ | ||
diff --git a/xmss_fast.h b/xmss_fast.h new file mode 100644 index 000000000..2ffba7057 --- /dev/null +++ b/xmss_fast.h | |||
@@ -0,0 +1,111 @@ | |||
1 | #ifdef WITH_XMSS | ||
2 | /* $OpenBSD: xmss_fast.h,v 1.2 2018/02/26 03:56:44 dtucker Exp $ */ | ||
3 | /* | ||
4 | xmss_fast.h version 20160722 | ||
5 | Andreas Hülsing | ||
6 | Joost Rijneveld | ||
7 | Public domain. | ||
8 | */ | ||
9 | |||
10 | #include "xmss_wots.h" | ||
11 | |||
12 | #ifndef XMSS_H | ||
13 | #define XMSS_H | ||
14 | typedef struct{ | ||
15 | unsigned int level; | ||
16 | unsigned long long subtree; | ||
17 | unsigned int subleaf; | ||
18 | } leafaddr; | ||
19 | |||
20 | typedef struct{ | ||
21 | wots_params wots_par; | ||
22 | unsigned int n; | ||
23 | unsigned int h; | ||
24 | unsigned int k; | ||
25 | } xmss_params; | ||
26 | |||
27 | typedef struct{ | ||
28 | xmss_params xmss_par; | ||
29 | unsigned int n; | ||
30 | unsigned int h; | ||
31 | unsigned int d; | ||
32 | unsigned int index_len; | ||
33 | } xmssmt_params; | ||
34 | |||
35 | typedef struct{ | ||
36 | unsigned int h; | ||
37 | unsigned int next_idx; | ||
38 | unsigned int stackusage; | ||
39 | unsigned char completed; | ||
40 | unsigned char *node; | ||
41 | } treehash_inst; | ||
42 | |||
43 | typedef struct { | ||
44 | unsigned char *stack; | ||
45 | unsigned int stackoffset; | ||
46 | unsigned char *stacklevels; | ||
47 | unsigned char *auth; | ||
48 | unsigned char *keep; | ||
49 | treehash_inst *treehash; | ||
50 | unsigned char *retain; | ||
51 | unsigned int next_leaf; | ||
52 | } bds_state; | ||
53 | |||
54 | /** | ||
55 | * Initialize BDS state struct | ||
56 | * parameter names are the same as used in the description of the BDS traversal | ||
57 | */ | ||
58 | void xmss_set_bds_state(bds_state *state, unsigned char *stack, int stackoffset, unsigned char *stacklevels, unsigned char *auth, unsigned char *keep, treehash_inst *treehash, unsigned char *retain, int next_leaf); | ||
59 | /** | ||
60 | * Initializes parameter set. | ||
61 | * Needed, for any of the other methods. | ||
62 | */ | ||
63 | int xmss_set_params(xmss_params *params, int n, int h, int w, int k); | ||
64 | /** | ||
65 | * Initialize xmssmt_params struct | ||
66 | * parameter names are the same as in the draft | ||
67 | * | ||
68 | * Especially h is the total tree height, i.e. the XMSS trees have height h/d | ||
69 | */ | ||
70 | int xmssmt_set_params(xmssmt_params *params, int n, int h, int d, int w, int k); | ||
71 | /** | ||
72 | * Generates a XMSS key pair for a given parameter set. | ||
73 | * Format sk: [(32bit) idx || SK_SEED || SK_PRF || PUB_SEED || root] | ||
74 | * Format pk: [root || PUB_SEED] omitting algo oid. | ||
75 | */ | ||
76 | int xmss_keypair(unsigned char *pk, unsigned char *sk, bds_state *state, xmss_params *params); | ||
77 | /** | ||
78 | * Signs a message. | ||
79 | * Returns | ||
80 | * 1. an array containing the signature followed by the message AND | ||
81 | * 2. an updated secret key! | ||
82 | * | ||
83 | */ | ||
84 | int xmss_sign(unsigned char *sk, bds_state *state, unsigned char *sig_msg, unsigned long long *sig_msg_len, const unsigned char *msg,unsigned long long msglen, const xmss_params *params); | ||
85 | /** | ||
86 | * Verifies a given message signature pair under a given public key. | ||
87 | * | ||
88 | * Note: msg and msglen are pure outputs which carry the message in case verification succeeds. The (input) message is assumed to be within sig_msg which has the form (sig||msg). | ||
89 | */ | ||
90 | int xmss_sign_open(unsigned char *msg,unsigned long long *msglen, const unsigned char *sig_msg,unsigned long long sig_msg_len, const unsigned char *pk, const xmss_params *params); | ||
91 | |||
92 | /* | ||
93 | * Generates a XMSSMT key pair for a given parameter set. | ||
94 | * Format sk: [(ceil(h/8) bit) idx || SK_SEED || SK_PRF || PUB_SEED || root] | ||
95 | * Format pk: [root || PUB_SEED] omitting algo oid. | ||
96 | */ | ||
97 | int xmssmt_keypair(unsigned char *pk, unsigned char *sk, bds_state *states, unsigned char *wots_sigs, xmssmt_params *params); | ||
98 | /** | ||
99 | * Signs a message. | ||
100 | * Returns | ||
101 | * 1. an array containing the signature followed by the message AND | ||
102 | * 2. an updated secret key! | ||
103 | * | ||
104 | */ | ||
105 | int xmssmt_sign(unsigned char *sk, bds_state *state, unsigned char *wots_sigs, unsigned char *sig_msg, unsigned long long *sig_msg_len, const unsigned char *msg, unsigned long long msglen, const xmssmt_params *params); | ||
106 | /** | ||
107 | * Verifies a given message signature pair under a given public key. | ||
108 | */ | ||
109 | int xmssmt_sign_open(unsigned char *msg, unsigned long long *msglen, const unsigned char *sig_msg, unsigned long long sig_msg_len, const unsigned char *pk, const xmssmt_params *params); | ||
110 | #endif | ||
111 | #endif /* WITH_XMSS */ | ||
diff --git a/xmss_hash.c b/xmss_hash.c new file mode 100644 index 000000000..b9eee7cff --- /dev/null +++ b/xmss_hash.c | |||
@@ -0,0 +1,140 @@ | |||
1 | /* $OpenBSD: xmss_hash.c,v 1.2 2018/02/26 03:56:44 dtucker Exp $ */ | ||
2 | /* | ||
3 | hash.c version 20160722 | ||
4 | Andreas Hülsing | ||
5 | Joost Rijneveld | ||
6 | Public domain. | ||
7 | */ | ||
8 | |||
9 | #include "includes.h" | ||
10 | #ifdef WITH_XMSS | ||
11 | |||
12 | #include "xmss_hash_address.h" | ||
13 | #include "xmss_commons.h" | ||
14 | #include "xmss_hash.h" | ||
15 | |||
16 | #include <stddef.h> | ||
17 | #ifdef HAVE_STDINT_H | ||
18 | #include <stdint.h> | ||
19 | #endif | ||
20 | #include <stdio.h> | ||
21 | #include <string.h> | ||
22 | #include <openssl/sha.h> | ||
23 | #include <openssl/hmac.h> | ||
24 | #include <openssl/evp.h> | ||
25 | |||
26 | int core_hash_SHA2(unsigned char *, const unsigned int, const unsigned char *, | ||
27 | unsigned int, const unsigned char *, unsigned long long, unsigned int); | ||
28 | |||
29 | unsigned char* addr_to_byte(unsigned char *bytes, const uint32_t addr[8]){ | ||
30 | #if IS_LITTLE_ENDIAN==1 | ||
31 | int i = 0; | ||
32 | for(i=0;i<8;i++) | ||
33 | to_byte(bytes+i*4, addr[i],4); | ||
34 | return bytes; | ||
35 | #else | ||
36 | memcpy(bytes, addr, 32); | ||
37 | return bytes; | ||
38 | #endif | ||
39 | } | ||
40 | |||
41 | int core_hash_SHA2(unsigned char *out, const unsigned int type, const unsigned char *key, unsigned int keylen, const unsigned char *in, unsigned long long inlen, unsigned int n){ | ||
42 | unsigned long long i = 0; | ||
43 | unsigned char buf[inlen + n + keylen]; | ||
44 | |||
45 | // Input is (toByte(X, 32) || KEY || M) | ||
46 | |||
47 | // set toByte | ||
48 | to_byte(buf, type, n); | ||
49 | |||
50 | for (i=0; i < keylen; i++) { | ||
51 | buf[i+n] = key[i]; | ||
52 | } | ||
53 | |||
54 | for (i=0; i < inlen; i++) { | ||
55 | buf[keylen + n + i] = in[i]; | ||
56 | } | ||
57 | |||
58 | if (n == 32) { | ||
59 | SHA256(buf, inlen + keylen + n, out); | ||
60 | return 0; | ||
61 | } | ||
62 | else { | ||
63 | if (n == 64) { | ||
64 | SHA512(buf, inlen + keylen + n, out); | ||
65 | return 0; | ||
66 | } | ||
67 | } | ||
68 | return 1; | ||
69 | } | ||
70 | |||
71 | /** | ||
72 | * Implements PRF | ||
73 | */ | ||
74 | int prf(unsigned char *out, const unsigned char *in, const unsigned char *key, unsigned int keylen) | ||
75 | { | ||
76 | return core_hash_SHA2(out, 3, key, keylen, in, 32, keylen); | ||
77 | } | ||
78 | |||
79 | /* | ||
80 | * Implemts H_msg | ||
81 | */ | ||
82 | int h_msg(unsigned char *out, const unsigned char *in, unsigned long long inlen, const unsigned char *key, const unsigned int keylen, const unsigned int n) | ||
83 | { | ||
84 | if (keylen != 3*n){ | ||
85 | // H_msg takes 3n-bit keys, but n does not match the keylength of keylen | ||
86 | return -1; | ||
87 | } | ||
88 | return core_hash_SHA2(out, 2, key, keylen, in, inlen, n); | ||
89 | } | ||
90 | |||
91 | /** | ||
92 | * We assume the left half is in in[0]...in[n-1] | ||
93 | */ | ||
94 | int hash_h(unsigned char *out, const unsigned char *in, const unsigned char *pub_seed, uint32_t addr[8], const unsigned int n) | ||
95 | { | ||
96 | |||
97 | unsigned char buf[2*n]; | ||
98 | unsigned char key[n]; | ||
99 | unsigned char bitmask[2*n]; | ||
100 | unsigned char byte_addr[32]; | ||
101 | unsigned int i; | ||
102 | |||
103 | setKeyAndMask(addr, 0); | ||
104 | addr_to_byte(byte_addr, addr); | ||
105 | prf(key, byte_addr, pub_seed, n); | ||
106 | // Use MSB order | ||
107 | setKeyAndMask(addr, 1); | ||
108 | addr_to_byte(byte_addr, addr); | ||
109 | prf(bitmask, byte_addr, pub_seed, n); | ||
110 | setKeyAndMask(addr, 2); | ||
111 | addr_to_byte(byte_addr, addr); | ||
112 | prf(bitmask+n, byte_addr, pub_seed, n); | ||
113 | for (i = 0; i < 2*n; i++) { | ||
114 | buf[i] = in[i] ^ bitmask[i]; | ||
115 | } | ||
116 | return core_hash_SHA2(out, 1, key, n, buf, 2*n, n); | ||
117 | } | ||
118 | |||
119 | int hash_f(unsigned char *out, const unsigned char *in, const unsigned char *pub_seed, uint32_t addr[8], const unsigned int n) | ||
120 | { | ||
121 | unsigned char buf[n]; | ||
122 | unsigned char key[n]; | ||
123 | unsigned char bitmask[n]; | ||
124 | unsigned char byte_addr[32]; | ||
125 | unsigned int i; | ||
126 | |||
127 | setKeyAndMask(addr, 0); | ||
128 | addr_to_byte(byte_addr, addr); | ||
129 | prf(key, byte_addr, pub_seed, n); | ||
130 | |||
131 | setKeyAndMask(addr, 1); | ||
132 | addr_to_byte(byte_addr, addr); | ||
133 | prf(bitmask, byte_addr, pub_seed, n); | ||
134 | |||
135 | for (i = 0; i < n; i++) { | ||
136 | buf[i] = in[i] ^ bitmask[i]; | ||
137 | } | ||
138 | return core_hash_SHA2(out, 0, key, n, buf, n, n); | ||
139 | } | ||
140 | #endif /* WITH_XMSS */ | ||
diff --git a/xmss_hash.h b/xmss_hash.h new file mode 100644 index 000000000..d19c62152 --- /dev/null +++ b/xmss_hash.h | |||
@@ -0,0 +1,22 @@ | |||
1 | #ifdef WITH_XMSS | ||
2 | /* $OpenBSD: xmss_hash.h,v 1.2 2018/02/26 03:56:44 dtucker Exp $ */ | ||
3 | /* | ||
4 | hash.h version 20160722 | ||
5 | Andreas Hülsing | ||
6 | Joost Rijneveld | ||
7 | Public domain. | ||
8 | */ | ||
9 | |||
10 | #ifndef HASH_H | ||
11 | #define HASH_H | ||
12 | |||
13 | #define IS_LITTLE_ENDIAN 1 | ||
14 | |||
15 | unsigned char* addr_to_byte(unsigned char *bytes, const uint32_t addr[8]); | ||
16 | int prf(unsigned char *out, const unsigned char *in, const unsigned char *key, unsigned int keylen); | ||
17 | int h_msg(unsigned char *out,const unsigned char *in,unsigned long long inlen, const unsigned char *key, const unsigned int keylen, const unsigned int n); | ||
18 | int hash_h(unsigned char *out, const unsigned char *in, const unsigned char *pub_seed, uint32_t addr[8], const unsigned int n); | ||
19 | int hash_f(unsigned char *out, const unsigned char *in, const unsigned char *pub_seed, uint32_t addr[8], const unsigned int n); | ||
20 | |||
21 | #endif | ||
22 | #endif /* WITH_XMSS */ | ||
diff --git a/xmss_hash_address.c b/xmss_hash_address.c new file mode 100644 index 000000000..c6c1347e9 --- /dev/null +++ b/xmss_hash_address.c | |||
@@ -0,0 +1,66 @@ | |||
1 | /* $OpenBSD: xmss_hash_address.c,v 1.2 2018/02/26 03:56:44 dtucker Exp $ */ | ||
2 | /* | ||
3 | hash_address.c version 20160722 | ||
4 | Andreas Hülsing | ||
5 | Joost Rijneveld | ||
6 | Public domain. | ||
7 | */ | ||
8 | #include "includes.h" | ||
9 | #ifdef WITH_XMSS | ||
10 | |||
11 | #ifdef HAVE_STDINT_H | ||
12 | #include <stdint.h> | ||
13 | #endif | ||
14 | #include "xmss_hash_address.h" /* prototypes */ | ||
15 | |||
16 | void setLayerADRS(uint32_t adrs[8], uint32_t layer){ | ||
17 | adrs[0] = layer; | ||
18 | } | ||
19 | |||
20 | void setTreeADRS(uint32_t adrs[8], uint64_t tree){ | ||
21 | adrs[1] = (uint32_t) (tree >> 32); | ||
22 | adrs[2] = (uint32_t) tree; | ||
23 | } | ||
24 | |||
25 | void setType(uint32_t adrs[8], uint32_t type){ | ||
26 | adrs[3] = type; | ||
27 | int i; | ||
28 | for(i = 4; i < 8; i++){ | ||
29 | adrs[i] = 0; | ||
30 | } | ||
31 | } | ||
32 | |||
33 | void setKeyAndMask(uint32_t adrs[8], uint32_t keyAndMask){ | ||
34 | adrs[7] = keyAndMask; | ||
35 | } | ||
36 | |||
37 | // OTS | ||
38 | |||
39 | void setOTSADRS(uint32_t adrs[8], uint32_t ots){ | ||
40 | adrs[4] = ots; | ||
41 | } | ||
42 | |||
43 | void setChainADRS(uint32_t adrs[8], uint32_t chain){ | ||
44 | adrs[5] = chain; | ||
45 | } | ||
46 | |||
47 | void setHashADRS(uint32_t adrs[8], uint32_t hash){ | ||
48 | adrs[6] = hash; | ||
49 | } | ||
50 | |||
51 | // L-tree | ||
52 | |||
53 | void setLtreeADRS(uint32_t adrs[8], uint32_t ltree){ | ||
54 | adrs[4] = ltree; | ||
55 | } | ||
56 | |||
57 | // Hash Tree & L-tree | ||
58 | |||
59 | void setTreeHeight(uint32_t adrs[8], uint32_t treeHeight){ | ||
60 | adrs[5] = treeHeight; | ||
61 | } | ||
62 | |||
63 | void setTreeIndex(uint32_t adrs[8], uint32_t treeIndex){ | ||
64 | adrs[6] = treeIndex; | ||
65 | } | ||
66 | #endif /* WITH_XMSS */ | ||
diff --git a/xmss_hash_address.h b/xmss_hash_address.h new file mode 100644 index 000000000..66bb4cc4d --- /dev/null +++ b/xmss_hash_address.h | |||
@@ -0,0 +1,40 @@ | |||
1 | #ifdef WITH_XMSS | ||
2 | /* $OpenBSD: xmss_hash_address.h,v 1.2 2018/02/26 03:56:44 dtucker Exp $ */ | ||
3 | /* | ||
4 | hash_address.h version 20160722 | ||
5 | Andreas Hülsing | ||
6 | Joost Rijneveld | ||
7 | Public domain. | ||
8 | */ | ||
9 | |||
10 | #ifdef HAVE_STDINT_H | ||
11 | #include <stdint.h> | ||
12 | #endif | ||
13 | |||
14 | void setLayerADRS(uint32_t adrs[8], uint32_t layer); | ||
15 | |||
16 | void setTreeADRS(uint32_t adrs[8], uint64_t tree); | ||
17 | |||
18 | void setType(uint32_t adrs[8], uint32_t type); | ||
19 | |||
20 | void setKeyAndMask(uint32_t adrs[8], uint32_t keyAndMask); | ||
21 | |||
22 | // OTS | ||
23 | |||
24 | void setOTSADRS(uint32_t adrs[8], uint32_t ots); | ||
25 | |||
26 | void setChainADRS(uint32_t adrs[8], uint32_t chain); | ||
27 | |||
28 | void setHashADRS(uint32_t adrs[8], uint32_t hash); | ||
29 | |||
30 | // L-tree | ||
31 | |||
32 | void setLtreeADRS(uint32_t adrs[8], uint32_t ltree); | ||
33 | |||
34 | // Hash Tree & L-tree | ||
35 | |||
36 | void setTreeHeight(uint32_t adrs[8], uint32_t treeHeight); | ||
37 | |||
38 | void setTreeIndex(uint32_t adrs[8], uint32_t treeIndex); | ||
39 | |||
40 | #endif /* WITH_XMSS */ | ||
diff --git a/xmss_wots.c b/xmss_wots.c new file mode 100644 index 000000000..b4702ed8d --- /dev/null +++ b/xmss_wots.c | |||
@@ -0,0 +1,192 @@ | |||
1 | /* $OpenBSD: xmss_wots.c,v 1.2 2018/02/26 03:56:44 dtucker Exp $ */ | ||
2 | /* | ||
3 | wots.c version 20160722 | ||
4 | Andreas Hülsing | ||
5 | Joost Rijneveld | ||
6 | Public domain. | ||
7 | */ | ||
8 | |||
9 | #include "includes.h" | ||
10 | #ifdef WITH_XMSS | ||
11 | |||
12 | #include <stdlib.h> | ||
13 | #ifdef HAVE_STDINT_H | ||
14 | #include <stdint.h> | ||
15 | #endif | ||
16 | #include <limits.h> | ||
17 | #include "xmss_commons.h" | ||
18 | #include "xmss_hash.h" | ||
19 | #include "xmss_wots.h" | ||
20 | #include "xmss_hash_address.h" | ||
21 | |||
22 | |||
23 | /* libm-free version of log2() for wots */ | ||
24 | static inline int | ||
25 | wots_log2(uint32_t v) | ||
26 | { | ||
27 | int b; | ||
28 | |||
29 | for (b = sizeof (v) * CHAR_BIT - 1; b >= 0; b--) { | ||
30 | if ((1U << b) & v) { | ||
31 | return b; | ||
32 | } | ||
33 | } | ||
34 | return 0; | ||
35 | } | ||
36 | |||
37 | void | ||
38 | wots_set_params(wots_params *params, int n, int w) | ||
39 | { | ||
40 | params->n = n; | ||
41 | params->w = w; | ||
42 | params->log_w = wots_log2(params->w); | ||
43 | params->len_1 = (CHAR_BIT * n) / params->log_w; | ||
44 | params->len_2 = (wots_log2(params->len_1 * (w - 1)) / params->log_w) + 1; | ||
45 | params->len = params->len_1 + params->len_2; | ||
46 | params->keysize = params->len * params->n; | ||
47 | } | ||
48 | |||
49 | /** | ||
50 | * Helper method for pseudorandom key generation | ||
51 | * Expands an n-byte array into a len*n byte array | ||
52 | * this is done using PRF | ||
53 | */ | ||
54 | static void expand_seed(unsigned char *outseeds, const unsigned char *inseed, const wots_params *params) | ||
55 | { | ||
56 | uint32_t i = 0; | ||
57 | unsigned char ctr[32]; | ||
58 | for(i = 0; i < params->len; i++){ | ||
59 | to_byte(ctr, i, 32); | ||
60 | prf((outseeds + (i*params->n)), ctr, inseed, params->n); | ||
61 | } | ||
62 | } | ||
63 | |||
64 | /** | ||
65 | * Computes the chaining function. | ||
66 | * out and in have to be n-byte arrays | ||
67 | * | ||
68 | * interpretes in as start-th value of the chain | ||
69 | * addr has to contain the address of the chain | ||
70 | */ | ||
71 | static void gen_chain(unsigned char *out, const unsigned char *in, unsigned int start, unsigned int steps, const wots_params *params, const unsigned char *pub_seed, uint32_t addr[8]) | ||
72 | { | ||
73 | uint32_t i, j; | ||
74 | for (j = 0; j < params->n; j++) | ||
75 | out[j] = in[j]; | ||
76 | |||
77 | for (i = start; i < (start+steps) && i < params->w; i++) { | ||
78 | setHashADRS(addr, i); | ||
79 | hash_f(out, out, pub_seed, addr, params->n); | ||
80 | } | ||
81 | } | ||
82 | |||
83 | /** | ||
84 | * base_w algorithm as described in draft. | ||
85 | * | ||
86 | * | ||
87 | */ | ||
88 | static void base_w(int *output, const int out_len, const unsigned char *input, const wots_params *params) | ||
89 | { | ||
90 | int in = 0; | ||
91 | int out = 0; | ||
92 | uint32_t total = 0; | ||
93 | int bits = 0; | ||
94 | int consumed = 0; | ||
95 | |||
96 | for (consumed = 0; consumed < out_len; consumed++) { | ||
97 | if (bits == 0) { | ||
98 | total = input[in]; | ||
99 | in++; | ||
100 | bits += 8; | ||
101 | } | ||
102 | bits -= params->log_w; | ||
103 | output[out] = (total >> bits) & (params->w - 1); | ||
104 | out++; | ||
105 | } | ||
106 | } | ||
107 | |||
108 | void wots_pkgen(unsigned char *pk, const unsigned char *sk, const wots_params *params, const unsigned char *pub_seed, uint32_t addr[8]) | ||
109 | { | ||
110 | uint32_t i; | ||
111 | expand_seed(pk, sk, params); | ||
112 | for (i=0; i < params->len; i++) { | ||
113 | setChainADRS(addr, i); | ||
114 | gen_chain(pk+i*params->n, pk+i*params->n, 0, params->w-1, params, pub_seed, addr); | ||
115 | } | ||
116 | } | ||
117 | |||
118 | |||
119 | int wots_sign(unsigned char *sig, const unsigned char *msg, const unsigned char *sk, const wots_params *params, const unsigned char *pub_seed, uint32_t addr[8]) | ||
120 | { | ||
121 | //int basew[params->len]; | ||
122 | int csum = 0; | ||
123 | uint32_t i = 0; | ||
124 | int *basew = calloc(params->len, sizeof(int)); | ||
125 | if (basew == NULL) | ||
126 | return -1; | ||
127 | |||
128 | base_w(basew, params->len_1, msg, params); | ||
129 | |||
130 | for (i=0; i < params->len_1; i++) { | ||
131 | csum += params->w - 1 - basew[i]; | ||
132 | } | ||
133 | |||
134 | csum = csum << (8 - ((params->len_2 * params->log_w) % 8)); | ||
135 | |||
136 | int len_2_bytes = ((params->len_2 * params->log_w) + 7) / 8; | ||
137 | |||
138 | unsigned char csum_bytes[len_2_bytes]; | ||
139 | to_byte(csum_bytes, csum, len_2_bytes); | ||
140 | |||
141 | int csum_basew[params->len_2]; | ||
142 | base_w(csum_basew, params->len_2, csum_bytes, params); | ||
143 | |||
144 | for (i = 0; i < params->len_2; i++) { | ||
145 | basew[params->len_1 + i] = csum_basew[i]; | ||
146 | } | ||
147 | |||
148 | expand_seed(sig, sk, params); | ||
149 | |||
150 | for (i = 0; i < params->len; i++) { | ||
151 | setChainADRS(addr, i); | ||
152 | gen_chain(sig+i*params->n, sig+i*params->n, 0, basew[i], params, pub_seed, addr); | ||
153 | } | ||
154 | free(basew); | ||
155 | return 0; | ||
156 | } | ||
157 | |||
158 | int wots_pkFromSig(unsigned char *pk, const unsigned char *sig, const unsigned char *msg, const wots_params *params, const unsigned char *pub_seed, uint32_t addr[8]) | ||
159 | { | ||
160 | int csum = 0; | ||
161 | uint32_t i = 0; | ||
162 | int *basew = calloc(params->len, sizeof(int)); | ||
163 | if (basew == NULL) | ||
164 | return -1; | ||
165 | |||
166 | base_w(basew, params->len_1, msg, params); | ||
167 | |||
168 | for (i=0; i < params->len_1; i++) { | ||
169 | csum += params->w - 1 - basew[i]; | ||
170 | } | ||
171 | |||
172 | csum = csum << (8 - ((params->len_2 * params->log_w) % 8)); | ||
173 | |||
174 | int len_2_bytes = ((params->len_2 * params->log_w) + 7) / 8; | ||
175 | |||
176 | unsigned char csum_bytes[len_2_bytes]; | ||
177 | to_byte(csum_bytes, csum, len_2_bytes); | ||
178 | |||
179 | int csum_basew[params->len_2]; | ||
180 | base_w(csum_basew, params->len_2, csum_bytes, params); | ||
181 | |||
182 | for (i = 0; i < params->len_2; i++) { | ||
183 | basew[params->len_1 + i] = csum_basew[i]; | ||
184 | } | ||
185 | for (i=0; i < params->len; i++) { | ||
186 | setChainADRS(addr, i); | ||
187 | gen_chain(pk+i*params->n, sig+i*params->n, basew[i], params->w-1-basew[i], params, pub_seed, addr); | ||
188 | } | ||
189 | free(basew); | ||
190 | return 0; | ||
191 | } | ||
192 | #endif /* WITH_XMSS */ | ||
diff --git a/xmss_wots.h b/xmss_wots.h new file mode 100644 index 000000000..1eebf3b21 --- /dev/null +++ b/xmss_wots.h | |||
@@ -0,0 +1,64 @@ | |||
1 | #ifdef WITH_XMSS | ||
2 | /* $OpenBSD: xmss_wots.h,v 1.3 2018/02/26 12:14:53 dtucker Exp $ */ | ||
3 | /* | ||
4 | wots.h version 20160722 | ||
5 | Andreas Hülsing | ||
6 | Joost Rijneveld | ||
7 | Public domain. | ||
8 | */ | ||
9 | |||
10 | #ifndef WOTS_H | ||
11 | #define WOTS_H | ||
12 | |||
13 | #ifdef HAVE_STDINT_H | ||
14 | #include "stdint.h" | ||
15 | #endif | ||
16 | |||
17 | /** | ||
18 | * WOTS parameter set | ||
19 | * | ||
20 | * Meaning as defined in draft-irtf-cfrg-xmss-hash-based-signatures-02 | ||
21 | */ | ||
22 | typedef struct { | ||
23 | uint32_t len_1; | ||
24 | uint32_t len_2; | ||
25 | uint32_t len; | ||
26 | uint32_t n; | ||
27 | uint32_t w; | ||
28 | uint32_t log_w; | ||
29 | uint32_t keysize; | ||
30 | } wots_params; | ||
31 | |||
32 | /** | ||
33 | * Set the WOTS parameters, | ||
34 | * only m, n, w are required as inputs, | ||
35 | * len, len_1, and len_2 are computed from those. | ||
36 | * | ||
37 | * Assumes w is a power of 2 | ||
38 | */ | ||
39 | void wots_set_params(wots_params *params, int n, int w); | ||
40 | |||
41 | /** | ||
42 | * WOTS key generation. Takes a 32byte seed for the secret key, expands it to a full WOTS secret key and computes the corresponding public key. | ||
43 | * For this it takes the seed pub_seed which is used to generate bitmasks and hash keys and the address of this WOTS key pair addr | ||
44 | * | ||
45 | * params, must have been initialized before using wots_set params for params ! This is not done in this function | ||
46 | * | ||
47 | * Places the computed public key at address pk. | ||
48 | */ | ||
49 | void wots_pkgen(unsigned char *pk, const unsigned char *sk, const wots_params *params, const unsigned char *pub_seed, uint32_t addr[8]); | ||
50 | |||
51 | /** | ||
52 | * Takes a m-byte message and the 32-byte seed for the secret key to compute a signature that is placed at "sig". | ||
53 | * | ||
54 | */ | ||
55 | int wots_sign(unsigned char *sig, const unsigned char *msg, const unsigned char *sk, const wots_params *params, const unsigned char *pub_seed, uint32_t addr[8]); | ||
56 | |||
57 | /** | ||
58 | * Takes a WOTS signature, a m-byte message and computes a WOTS public key that it places at pk. | ||
59 | * | ||
60 | */ | ||
61 | int wots_pkFromSig(unsigned char *pk, const unsigned char *sig, const unsigned char *msg, const wots_params *params, const unsigned char *pub_seed, uint32_t addr[8]); | ||
62 | |||
63 | #endif | ||
64 | #endif /* WITH_XMSS */ | ||