svn commit: r349523 - in stable/12: contrib/libarchive contrib/libarchive/libarchive contrib/libarchive/libarchive/test contrib/libarchive/libarchive_fe contrib/libarchive/tar lib/libarchive lib/li...
Martin Matuska
mm at FreeBSD.org
Fri Jun 28 22:31:57 UTC 2019
Author: mm
Date: Fri Jun 28 22:31:53 2019
New Revision: 349523
URL: https://svnweb.freebsd.org/changeset/base/349523
Log:
MFC r348993,349135:
Sync libarchive with vendor including security fixes
r348993:
- version bumped to 3.4.0
- check_symlinks_fsobj() without chdir() and fchdir()
- bsdtar.1 manpage fixes
- patches from OpenBSD to libarchive_fe/passphrase.c
r349135:
PR #1212: RAR5 reader - window_mask was not updated correctly
(OSS-Fuzz 15278)
OSS-Fuzz 15120: RAR reader - extend use after free bugfix
Added:
stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5_different_window_size.rar.uu
- copied unchanged from r349135, head/contrib/libarchive/libarchive/test/test_read_format_rar5_different_window_size.rar.uu
stable/12/contrib/libarchive/libarchive/test/test_read_format_rar_ppmd_use_after_free2.rar.uu
- copied unchanged from r349135, head/contrib/libarchive/libarchive/test/test_read_format_rar_ppmd_use_after_free2.rar.uu
Modified:
stable/12/contrib/libarchive/NEWS
stable/12/contrib/libarchive/README.md
stable/12/contrib/libarchive/libarchive/archive.h
stable/12/contrib/libarchive/libarchive/archive_entry.h
stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar.c
stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar5.c
stable/12/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c
stable/12/contrib/libarchive/libarchive/archive_write_disk_posix.c
stable/12/contrib/libarchive/libarchive/test/test_read_format_rar.c
stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5.c
stable/12/contrib/libarchive/libarchive_fe/line_reader.c
stable/12/contrib/libarchive/libarchive_fe/passphrase.c
stable/12/contrib/libarchive/tar/bsdtar.1
stable/12/lib/libarchive/config_freebsd.h
stable/12/lib/libarchive/tests/Makefile
stable/12/usr.bin/bsdcat/Makefile
stable/12/usr.bin/cpio/Makefile
stable/12/usr.bin/tar/Makefile
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/contrib/libarchive/NEWS
==============================================================================
--- stable/12/contrib/libarchive/NEWS Fri Jun 28 22:28:51 2019 (r349522)
+++ stable/12/contrib/libarchive/NEWS Fri Jun 28 22:31:53 2019 (r349523)
@@ -1,3 +1,7 @@
+Jun 11, 2019: libarchive 3.4.0 released
+
+May 18, 2019: Fixes for reading Android APK and JAR archives
+
Apr 16, 2019: Support for non-recursive list and extract
Apr 14, 2019: New tar option: --exclude-vcs
@@ -6,7 +10,7 @@ Mar 27, 2019: Support for file and directory symlinks
Mar 12, 2019: Important fixes for storing file attributes and flags
-Jan 20, 2019: Support for xz, lzma, ppmd8 and bzip2 compression in zip archives
+Jan 20, 2019: Support for xz, lzma, ppmd8 and bzip2 decompression in ZIP files
Oct 06, 2018: RAR 5.0 reader
Modified: stable/12/contrib/libarchive/README.md
==============================================================================
--- stable/12/contrib/libarchive/README.md Fri Jun 28 22:28:51 2019 (r349522)
+++ stable/12/contrib/libarchive/README.md Fri Jun 28 22:31:53 2019 (r349523)
@@ -81,6 +81,7 @@ Currently, the library automatically detects and reads
* Binary cpio (big-endian or little-endian)
* ISO9660 CD-ROM images (with optional Rockridge or Joliet extensions)
* ZIP archives (with uncompressed or "deflate" compressed entries, including support for encrypted Zip archives)
+ * ZIPX archives (with support for bzip2, ppmd8, lzma and xz compressed entries)
* GNU and BSD 'ar' archives
* 'mtree' format
* 7-Zip archives
Modified: stable/12/contrib/libarchive/libarchive/archive.h
==============================================================================
--- stable/12/contrib/libarchive/libarchive/archive.h Fri Jun 28 22:28:51 2019 (r349522)
+++ stable/12/contrib/libarchive/libarchive/archive.h Fri Jun 28 22:31:53 2019 (r349523)
@@ -36,7 +36,7 @@
* assert that ARCHIVE_VERSION_NUMBER >= 2012108.
*/
/* Note: Compiler will complain if this does not match archive_entry.h! */
-#define ARCHIVE_VERSION_NUMBER 3003003
+#define ARCHIVE_VERSION_NUMBER 3004000
#include <sys/stat.h>
#include <stddef.h> /* for wchar_t */
@@ -155,7 +155,7 @@ __LA_DECL int archive_version_number(void);
/*
* Textual name/version of the library, useful for version displays.
*/
-#define ARCHIVE_VERSION_ONLY_STRING "3.3.3"
+#define ARCHIVE_VERSION_ONLY_STRING "3.4.0"
#define ARCHIVE_VERSION_STRING "libarchive " ARCHIVE_VERSION_ONLY_STRING
__LA_DECL const char * archive_version_string(void);
Modified: stable/12/contrib/libarchive/libarchive/archive_entry.h
==============================================================================
--- stable/12/contrib/libarchive/libarchive/archive_entry.h Fri Jun 28 22:28:51 2019 (r349522)
+++ stable/12/contrib/libarchive/libarchive/archive_entry.h Fri Jun 28 22:31:53 2019 (r349523)
@@ -30,7 +30,7 @@
#define ARCHIVE_ENTRY_H_INCLUDED
/* Note: Compiler will complain if this does not match archive.h! */
-#define ARCHIVE_VERSION_NUMBER 3003003
+#define ARCHIVE_VERSION_NUMBER 3004000
/*
* Note: archive_entry.h is for use outside of libarchive; the
Modified: stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar.c
==============================================================================
--- stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar.c Fri Jun 28 22:28:51 2019 (r349522)
+++ stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar.c Fri Jun 28 22:31:53 2019 (r349523)
@@ -1027,6 +1027,7 @@ archive_read_format_rar_read_data(struct archive_read
if (ret != ARCHIVE_OK && ret != ARCHIVE_WARN) {
__archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context);
rar->start_new_table = 1;
+ rar->ppmd_valid = 0;
}
break;
Modified: stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar5.c
==============================================================================
--- stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar5.c Fri Jun 28 22:28:51 2019 (r349522)
+++ stable/12/contrib/libarchive/libarchive/archive_read_support_format_rar5.c Fri Jun 28 22:31:53 2019 (r349523)
@@ -1125,6 +1125,13 @@ static void init_header(struct archive_read* a) {
a->archive.archive_format_name = "RAR5";
}
+static void init_window_mask(struct rar5* rar) {
+ if (rar->cstate.window_size)
+ rar->cstate.window_mask = rar->cstate.window_size - 1;
+ else
+ rar->cstate.window_mask = 0;
+}
+
enum HEADER_FLAGS {
HFL_EXTRA_DATA = 0x0001,
HFL_DATA = 0x0002,
@@ -1672,6 +1679,7 @@ static int process_head_file(struct archive_read* a, s
/* Values up to 64M should fit into ssize_t on every
* architecture. */
rar->cstate.window_size = (ssize_t) window_size;
+ init_window_mask(rar);
rar->file.solid = (compression_info & SOLID) > 0;
rar->file.service = 0;
@@ -2235,10 +2243,7 @@ static int rar5_read_header(struct archive_read *a,
static void init_unpack(struct rar5* rar) {
rar->file.calculated_crc32 = 0;
- if (rar->cstate.window_size)
- rar->cstate.window_mask = rar->cstate.window_size - 1;
- else
- rar->cstate.window_mask = 0;
+ init_window_mask(rar);
free(rar->cstate.window_buf);
free(rar->cstate.filtered_buf);
@@ -2851,7 +2856,7 @@ static int do_uncompress_block(struct archive_read* a,
* - Values lower than 256 are just bytes. Those codes
* can be stored in the output buffer directly.
*
- * - Code 256 defines a new filter, which is later used to
+ * - Code 256 defines a new filter, which is later used to
* ransform the data block accordingly to the filter type.
* The data block needs to be fully uncompressed first.
*
@@ -3906,7 +3911,7 @@ static int rar5_read_data_skip(struct archive_read *a)
/* Turn off "skip mode". */
rar->skip_mode--;
- if(ret < 0) {
+ if(ret < 0 || ret == ARCHIVE_EOF) {
/* Propagate any potential error conditions
* to the caller. */
return ret;
Modified: stable/12/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c
==============================================================================
--- stable/12/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c Fri Jun 28 22:28:51 2019 (r349522)
+++ stable/12/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c Fri Jun 28 22:31:53 2019 (r349523)
@@ -60,7 +60,7 @@ static int archive_filter_b64encode_write(struct archi
const void *, size_t);
static int archive_filter_b64encode_close(struct archive_write_filter *);
static int archive_filter_b64encode_free(struct archive_write_filter *);
-static void b64_encode(struct archive_string *, const unsigned char *, size_t);
+static void la_b64_encode(struct archive_string *, const unsigned char *, size_t);
static int64_t atol8(const char *, size_t);
static const char base64[] = {
@@ -180,7 +180,7 @@ archive_filter_b64encode_open(struct archive_write_fil
}
static void
-b64_encode(struct archive_string *as, const unsigned char *p, size_t len)
+la_b64_encode(struct archive_string *as, const unsigned char *p, size_t len)
{
int c;
@@ -234,12 +234,12 @@ archive_filter_b64encode_write(struct archive_write_fi
}
if (state->hold_len < LBYTES)
return (ret);
- b64_encode(&state->encoded_buff, state->hold, LBYTES);
+ la_b64_encode(&state->encoded_buff, state->hold, LBYTES);
state->hold_len = 0;
}
for (; length >= LBYTES; length -= LBYTES, p += LBYTES)
- b64_encode(&state->encoded_buff, p, LBYTES);
+ la_b64_encode(&state->encoded_buff, p, LBYTES);
/* Save remaining bytes. */
if (length > 0) {
@@ -270,7 +270,7 @@ archive_filter_b64encode_close(struct archive_write_fi
/* Flush remaining bytes. */
if (state->hold_len != 0)
- b64_encode(&state->encoded_buff, state->hold, state->hold_len);
+ la_b64_encode(&state->encoded_buff, state->hold, state->hold_len);
archive_string_sprintf(&state->encoded_buff, "====\n");
/* Write the last block */
archive_write_set_bytes_in_last_block(f->archive, 1);
Modified: stable/12/contrib/libarchive/libarchive/archive_write_disk_posix.c
==============================================================================
--- stable/12/contrib/libarchive/libarchive/archive_write_disk_posix.c Fri Jun 28 22:28:51 2019 (r349522)
+++ stable/12/contrib/libarchive/libarchive/archive_write_disk_posix.c Fri Jun 28 22:31:53 2019 (r349523)
@@ -165,6 +165,10 @@ __FBSDID("$FreeBSD$");
#define O_NOFOLLOW 0
#endif
+#ifndef AT_FDCWD
+#define AT_FDCWD -100
+#endif
+
struct fixup_entry {
struct fixup_entry *next;
struct archive_acl acl;
@@ -348,6 +352,8 @@ struct archive_write_disk {
#define HFS_BLOCKS(s) ((s) >> 12)
+
+static int la_opendirat(int, const char *);
static void fsobj_error(int *, struct archive_string *, int, const char *,
const char *);
static int check_symlinks_fsobj(char *, int *, struct archive_string *,
@@ -401,6 +407,37 @@ static ssize_t _archive_write_disk_data_block(struct a
size_t, int64_t);
static int
+la_opendirat(int fd, const char *path) {
+ const int flags = O_CLOEXEC
+#if defined(O_BINARY)
+ | O_BINARY
+#endif
+#if defined(O_DIRECTORY)
+ | O_DIRECTORY
+#endif
+#if defined(O_PATH)
+ | O_PATH
+#elif defined(O_SEARCH)
+ | O_SEARCH
+#elif defined(O_EXEC)
+ | O_EXEC
+#else
+ | O_RDONLY
+#endif
+ ;
+
+#if !defined(HAVE_OPENAT)
+ if (fd != AT_FDCWD) {
+ errno = ENOTSUP;
+ return (-1);
+ } else
+ return (open(fd, path, flags));
+#else
+ return (openat(fd, path, flags));
+#endif
+}
+
+static int
lazy_stat(struct archive_write_disk *a)
{
if (a->pst != NULL) {
@@ -1909,7 +1946,7 @@ edit_deep_directories(struct archive_write_disk *a)
return;
/* Try to record our starting dir. */
- a->restore_pwd = open(".", O_RDONLY | O_BINARY | O_CLOEXEC);
+ a->restore_pwd = la_opendirat(AT_FDCWD, ".");
__archive_ensure_cloexec_flag(a->restore_pwd);
if (a->restore_pwd < 0)
return;
@@ -2342,7 +2379,7 @@ _archive_write_disk_close(struct archive *_a)
{
struct archive_write_disk *a = (struct archive_write_disk *)_a;
struct fixup_entry *next, *p;
- int ret;
+ int fd, ret;
archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC,
ARCHIVE_STATE_HEADER | ARCHIVE_STATE_DATA,
@@ -2353,21 +2390,33 @@ _archive_write_disk_close(struct archive *_a)
p = sort_dir_list(a->fixup_list);
while (p != NULL) {
+ fd = -1;
a->pst = NULL; /* Mark stat cache as out-of-date. */
+ if (p->fixup &
+ (TODO_TIMES | TODO_MODE_BASE | TODO_ACLS | TODO_FFLAGS)) {
+ fd = open(p->name,
+ O_WRONLY | O_BINARY | O_NOFOLLOW | O_CLOEXEC);
+ }
if (p->fixup & TODO_TIMES) {
- set_times(a, -1, p->mode, p->name,
+ set_times(a, fd, p->mode, p->name,
p->atime, p->atime_nanos,
p->birthtime, p->birthtime_nanos,
p->mtime, p->mtime_nanos,
p->ctime, p->ctime_nanos);
}
- if (p->fixup & TODO_MODE_BASE)
+ if (p->fixup & TODO_MODE_BASE) {
+#ifdef HAVE_FCHMOD
+ if (fd >= 0)
+ fchmod(fd, p->mode);
+ else
+#endif
chmod(p->name, p->mode);
+ }
if (p->fixup & TODO_ACLS)
- archive_write_disk_set_acls(&a->archive, -1, p->name,
- &p->acl, p->mode);
+ archive_write_disk_set_acls(&a->archive, fd,
+ p->name, &p->acl, p->mode);
if (p->fixup & TODO_FFLAGS)
- set_fflags_platform(a, -1, p->name,
+ set_fflags_platform(a, fd, p->name,
p->mode, p->fflags_set, 0);
if (p->fixup & TODO_MAC_METADATA)
set_mac_metadata(a, p->name, p->mac_metadata,
@@ -2376,6 +2425,8 @@ _archive_write_disk_close(struct archive *_a)
archive_acl_clear(&p->acl);
free(p->mac_metadata);
free(p->name);
+ if (fd >= 0)
+ close(fd);
free(p);
p = next;
}
@@ -2540,8 +2591,6 @@ fsobj_error(int *a_eno, struct archive_string *a_estr,
* scan the path and both can be optimized by comparing against other
* recent paths.
*/
-/* TODO: Extend this to support symlinks on Windows Vista and later. */
-
/*
* Checks the given path to see if any elements along it are symlinks. Returns
* ARCHIVE_OK if there are none, otherwise puts an error in errmsg.
@@ -2550,7 +2599,8 @@ static int
check_symlinks_fsobj(char *path, int *a_eno, struct archive_string *a_estr,
int flags)
{
-#if !defined(HAVE_LSTAT)
+#if !defined(HAVE_LSTAT) && \
+ !(defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT))
/* Platform doesn't have lstat, so we can't look for symlinks. */
(void)path; /* UNUSED */
(void)error_number; /* UNUSED */
@@ -2565,7 +2615,10 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
char c;
int r;
struct stat st;
- int restore_pwd;
+ int chdir_fd;
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+ int fd;
+#endif
/* Nothing to do here if name is empty */
if(path[0] == '\0')
@@ -2586,9 +2639,9 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
* c holds what used to be in *tail
* last is 1 if this is the last tail
*/
- restore_pwd = open(".", O_RDONLY | O_BINARY | O_CLOEXEC);
- __archive_ensure_cloexec_flag(restore_pwd);
- if (restore_pwd < 0) {
+ chdir_fd = la_opendirat(AT_FDCWD, ".");
+ __archive_ensure_cloexec_flag(chdir_fd);
+ if (chdir_fd < 0) {
fsobj_error(a_eno, a_estr, errno,
"Could not open ", path);
return (ARCHIVE_FATAL);
@@ -2621,7 +2674,11 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
c = tail[0];
tail[0] = '\0';
/* Check that we haven't hit a symlink. */
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+ r = fstatat(chdir_fd, head, &st, AT_SYMLINK_NOFOLLOW);
+#else
r = lstat(head, &st);
+#endif
if (r != 0) {
tail[0] = c;
/* We've hit a dir that doesn't exist; stop now. */
@@ -2647,7 +2704,19 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
}
} else if (S_ISDIR(st.st_mode)) {
if (!last) {
- if (chdir(head) != 0) {
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+ fd = la_opendirat(chdir_fd, head);
+ if (fd < 0)
+ r = -1;
+ else {
+ r = 0;
+ close(chdir_fd);
+ chdir_fd = fd;
+ }
+#else
+ r = chdir(head);
+#endif
+ if (r != 0) {
tail[0] = c;
fsobj_error(a_eno, a_estr, errno,
"Could not chdir ", path);
@@ -2664,7 +2733,12 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
* so we can overwrite it with the
* item being extracted.
*/
- if (unlink(head)) {
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+ r = unlinkat(chdir_fd, head, 0);
+#else
+ r = unlink(head);
+#endif
+ if (r != 0) {
tail[0] = c;
fsobj_error(a_eno, a_estr, errno,
"Could not remove symlink ",
@@ -2694,7 +2768,12 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
break;
} else if (flags & ARCHIVE_EXTRACT_UNLINK) {
/* User asked us to remove problems. */
- if (unlink(head) != 0) {
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+ r = unlinkat(chdir_fd, head, 0);
+#else
+ r = unlink(head);
+#endif
+ if (r != 0) {
tail[0] = c;
fsobj_error(a_eno, a_estr, 0,
"Cannot remove intervening "
@@ -2712,7 +2791,11 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
* This is needed to extract hardlinks over
* symlinks.
*/
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+ r = fstatat(chdir_fd, head, &st, 0);
+#else
r = la_stat(head, &st);
+#endif
if (r != 0) {
tail[0] = c;
if (errno == ENOENT) {
@@ -2725,7 +2808,19 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
break;
}
} else if (S_ISDIR(st.st_mode)) {
- if (chdir(head) != 0) {
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+ fd = la_opendirat(chdir_fd, head);
+ if (fd < 0)
+ r = -1;
+ else {
+ r = 0;
+ close(chdir_fd);
+ chdir_fd = fd;
+ }
+#else
+ r = chdir(head);
+#endif
+ if (r != 0) {
tail[0] = c;
fsobj_error(a_eno, a_estr,
errno,
@@ -2761,16 +2856,21 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar
}
/* Catches loop exits via break */
tail[0] = c;
-#ifdef HAVE_FCHDIR
+#if defined(HAVE_OPENAT) && defined(HAVE_FSTATAT) && defined(HAVE_UNLINKAT)
+ /* If we operate with openat(), fstatat() and unlinkat() there was
+ * no chdir(), so just close the fd */
+ if (chdir_fd >= 0)
+ close(chdir_fd);
+#elif HAVE_FCHDIR
/* If we changed directory above, restore it here. */
- if (restore_pwd >= 0) {
- r = fchdir(restore_pwd);
+ if (chdir_fd >= 0) {
+ r = fchdir(chdir_fd);
if (r != 0) {
fsobj_error(a_eno, a_estr, errno,
"chdir() failure", "");
}
- close(restore_pwd);
- restore_pwd = -1;
+ close(chdir_fd);
+ chdir_fd = -1;
if (r != 0) {
res = (ARCHIVE_FATAL);
}
@@ -3387,6 +3487,7 @@ static int
set_mode(struct archive_write_disk *a, int mode)
{
int r = ARCHIVE_OK;
+ int r2;
mode &= 07777; /* Strip off file type bits. */
if (a->todo & TODO_SGID_CHECK) {
@@ -3480,21 +3581,19 @@ set_mode(struct archive_write_disk *a, int mode)
* post-extract fixup, which is handled elsewhere.
*/
#ifdef HAVE_FCHMOD
- if (a->fd >= 0) {
- if (fchmod(a->fd, mode) != 0) {
- archive_set_error(&a->archive, errno,
- "Can't set permissions to 0%o", (int)mode);
- r = ARCHIVE_WARN;
- }
- } else
+ if (a->fd >= 0)
+ r2 = fchmod(a->fd, mode);
+ else
#endif
- /* If this platform lacks fchmod(), then
- * we'll just use chmod(). */
- if (chmod(a->name, mode) != 0) {
- archive_set_error(&a->archive, errno,
- "Can't set permissions to 0%o", (int)mode);
- r = ARCHIVE_WARN;
- }
+ /* If this platform lacks fchmod(), then
+ * we'll just use chmod(). */
+ r2 = chmod(a->name, mode);
+
+ if (r2 != 0) {
+ archive_set_error(&a->archive, errno,
+ "Can't set permissions to 0%o", (int)mode);
+ r = ARCHIVE_WARN;
+ }
}
return (r);
}
Modified: stable/12/contrib/libarchive/libarchive/test/test_read_format_rar.c
==============================================================================
--- stable/12/contrib/libarchive/libarchive/test/test_read_format_rar.c Fri Jun 28 22:28:51 2019 (r349522)
+++ stable/12/contrib/libarchive/libarchive/test/test_read_format_rar.c Fri Jun 28 22:31:53 2019 (r349523)
@@ -3776,6 +3776,35 @@ DEFINE_TEST(test_read_format_rar_ppmd_use_after_free)
assertA(ARCHIVE_OK == archive_read_next_header(a, &ae));
assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
+ /* Test EOF */
+ assertA(1 == archive_read_next_header(a, &ae));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_rar_ppmd_use_after_free2)
+{
+ uint8_t buf[16];
+ const char* reffile = "test_read_format_rar_ppmd_use_after_free2.rar";
+
+ struct archive_entry *ae;
+ struct archive *a;
+
+ extract_reference_file(reffile);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_support_filter_all(a));
+ assertA(0 == archive_read_support_format_all(a));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
+
+ assertA(ARCHIVE_OK == archive_read_next_header(a, &ae));
+ assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
+ assertA(ARCHIVE_OK == archive_read_next_header(a, &ae));
+ assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
+
+ /* Test EOF */
+ assertA(1 == archive_read_next_header(a, &ae));
+
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
Modified: stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5.c
==============================================================================
--- stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5.c Fri Jun 28 22:28:51 2019 (r349522)
+++ stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5.c Fri Jun 28 22:31:53 2019 (r349523)
@@ -1194,3 +1194,24 @@ DEFINE_TEST(test_read_format_rar5_fileattr)
EPILOGUE();
}
+
+DEFINE_TEST(test_read_format_rar5_different_window_size)
+{
+ char buf[4096];
+ PROLOGUE("test_read_format_rar5_different_window_size.rar");
+
+ /* Return codes of those calls are ignored, because this sample file
+ * is invalid. However, the unpacker shouldn't produce any SIGSEGV
+ * errors during processing. */
+
+ (void) archive_read_next_header(a, &ae);
+ while(0 != archive_read_data(a, buf, sizeof(buf))) {}
+
+ (void) archive_read_next_header(a, &ae);
+ while(0 != archive_read_data(a, buf, sizeof(buf))) {}
+
+ (void) archive_read_next_header(a, &ae);
+ while(0 != archive_read_data(a, buf, sizeof(buf))) {}
+
+ EPILOGUE();
+}
Copied: stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5_different_window_size.rar.uu (from r349135, head/contrib/libarchive/libarchive/test/test_read_format_rar5_different_window_size.rar.uu)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/12/contrib/libarchive/libarchive/test/test_read_format_rar5_different_window_size.rar.uu Fri Jun 28 22:31:53 2019 (r349523, copy of r349135, head/contrib/libarchive/libarchive/test/test_read_format_rar5_different_window_size.rar.uu)
@@ -0,0 +1,675 @@
+begin 600 test_read_format_rar5_different_window_size.rar
+M4F%R(1H'`0"-[P+2``'#M#P\7P$'`0"-[P+2``7#`/KZ^OKZA5N8F)B8F)@`
+MF`*8T at 7"F!=A_________P$$_____________________R%285(A&@?_____
+M_________________V@`[E##M#P\7P$'`0"-[P+2``7"87)26`!W=%)A<B$:
+M!P$`C>\"T@`"QP\)`'(A&@<!&B/2+0`"**%285(A&@=A<B$:!P$`C>\"T@`"
+MQP\`"7(AFC`!&B/2+0`"*"%285(A&@<8`0"-[P+2``7#10!A4B$:!Q@!`#)S
+M-/_______U)A<B$:!P$`C>\"T@`"!QS1T='1T='1T='6T='1T='1T='1T='1
+MT='1T='1T='1T='1T=&UQX`.`"'X"/\E``*H'#`"`/+__TO__O_G*_____\`
+M`"\O``#_02+M____`-X`_["&AFVQJ@,#45TW,?;V]@$``/____\3]O;V]O;_
+M_S\``/]!(.VG+R\``/]!(.T)__^PWOS_```O+S$``/8@[;L`````````````
+M-3XR9%Q<7%Q<7%Q<7%Q<7%QZ7%PJ7%Q<7"]<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<
+M7#)<7#9<,F1I9V5R=#4V,61I870]+ at HN"G0 at 9&5V270 at 9&1I9V5S7%Q<7'=E
+M9"XR9&EG97)T-38R9&EA=#TN"BX*="!D979)="!D9&EG97-T/2X*+ at HN"@HF
+M+BX**%)A<B$:!P$`C>\"T@`"!QS1T='1T='1T='6T='1T='1T='1T='1T='1
+MT='1T='1T='1T=&UQX`.`"'X"/\E``*H'#`"`/+__TO__O_G*_____\``"\O
+M``#_02+M____`-X`_["&AFVQJ@,#45TW,?;V]@$````````3]O;V]O;__S\`
+M`/]!(.VG+R\``/]!(.T)__^PWOS_```O+P```/8@[;L`````````````-38R
+M9%Q<7%Q<7%Q<7%Q<7%QZ7%PJ7%Q<7"]<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7#)<
+M7#9<,F1I9V5R=#4V,61I870]+ at HN"G0 at 9&5V270 at 9&1I9V5S7%Q<7'=E9"XR
+M9&EG97)T-38R9&EA=#TN"BX*="!D979)="!D9&EG97-T/2X*+ at HN"@HF+E)A
+M<B$:!P$`C>\"T@`"PP<<K/UN``#___\+`0`"(<O_`0(`+W-E="!T:6UE`/[_
+M_^P`````````````````````````````````````````````````````````
+M````````````````````````````````````````!0``````````````````
+M````````````````````````````````````````````````````````````
+M`````#\56BUL:#4M#0````%L<0!SI/\````!]9^?G_*?`9_?GY_U0.`56BUL
+M:```````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````&UM)C$@4 at H#`\[_CQ5:+6QH-BTZ,PD at .W-L<0'(_P(````!
+M#B<G````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````]_\`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````P,#`P,#`P,#`P,#`P,#
+M`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````X-S(M,#$E,U0S.GH``O__/\/#P\/#P\/#P\/#(@##
+MP\/#PP'#P\/#P\/#P___________________________________________
+M____________________________]/_______\/#P\/#P\/#P\/#P\/#+</#
+MP\/#P^KJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJ
+MZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZF1I9V5S=#TN"BX*+ at H*)BXN
+M"B@*+BX**`HN"BX*+C`**`H*+ at HN+E!<-3,R4>KJZNKJZNKJZNKJZNKJZNKJ
+MZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNK#P\/#P\/#P\/#R\-MP\/#
+MP\/#P\/#P\/#P\/#P\/#`</#P\/#P\/#____________________________
+M_________________________________________S8R9&EG97)T6STN"BX*
+M+ at H*)F5V:6,V_________\/#P\/#P\/#P\/#P\/#+</#P\/#P\/#P\/#PS8N
+M"@HN"@HN+PHR,#<P-S`O<TYT("!@<W0]P\/#P\/#P\/#PP`0:#HR,PT*;%=O
+M861?;"X*+ at IG89P`,#`P,#`P,#`P,#`P,#`P,#`!`#`W,#<P,C`P,#`P,#`P
+M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,$,P,#`P,#`P,#`P,#`P
+M,#`P,#`P-3`P,#`X,#`P,#`P,#`P13`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P
+M,#`P,#`P`0`"*"%285(A&@<8`0"-[P+2``7#`!H'``1G``````````#O`M(`
+M`L</``D`+ at DR'`#]`0`7__\)`"X),AP`_0$`%___$5)A<B'_$5)A<B$:AP$`
+MC>\"T@`#QP\`"2$:TB,M``(H(5)A4B$:!Q@!`(WO`M(`!0``````````````
+M`````````0``````_____P#_965E965E965E965E965E965E8'-T/2X*+ at HN
+M"C(P-S`W,&EA='EA<B$*+ at H*)BXF+ at HH"BX*+ at HN4%XO83(U:39D9V5S=#TN
+M"BX*+ at H*)BXN"@H*)BXN"B@*+ at HN"BY07#4S,C8R9"]S3G0@(%MS=#T]+ at HN
+M"BX*"B8N+ at HH"BX*+ at HN4%PU,S(V(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A
+M(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A
+M(2$A(2X*"B8N+BY<-EPR9&EG97)T-38R9&EA=#TN"BX*="XN+ at HH"BX*+ at HN
+M4%QH83(U-F0N+PHR,"4P-S`O<TYT("!D<W0]+ at HN"BX*"B9T/2X*+ at HN"@H*
+M)BX*+BXH+PHN"BY07&AA,C4V9&EG97-T/2X*+ at HN"@HF+BX**`H_+ at HN"BY0
+M7%Q<7%Q<7%Q<7%Q<,C8R9&EG97)T-38R9%Q<7%Q<7%Q<7%Q<7%QZ7%PJ7%Q<
+M7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7#)<7#9<,F1I9V5R=#4V,F1I870]+ at HN
+M"G0 at 9&5V270 at 9&1I9V5S=#TN"BX*+ at H*)BXN"B@*+BX**`HN"BX]+ at HN"BX*
+M"B8N+ at HH"BX*+ at HN4%Q<7%Q<7%Q<7%Q<7#(V,F1I9V5R=#4V,F1<7%Q<7%Q<
+M7%Q<7%Q<>EQ<*EQ<7%PO7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7%PR7%PV7#!D:6=E
+M<G0U-C%D:6%T/2X*+ at IT(&1E=DET(&0Z[NXZ,````"L-"E=!4D,M1&%T93H)
+M,3 at W,BTP-RTS5#,Z-SHU6 at T*#0I#BVYT^)=7=#%Z5T%20R\Q+C`-"D-O;G1E
+M;G0M3&5N9W1H.C`V#0I7*5=!4B\O.ZRL-&X*05)#+ZRL at 9$-"DQA<W0M36]D
+M:69I960Z"3$X-S(M,#$E,U0S.GH``O__/\/#P\/#P\/#P\/#(@##P\/#PP'#
+MP\/#P\/#P______________________________________#P\/#P\/#P\,`
+M$&@Z,C,-"FQ7;V%D7VPN"BX*9V&<`#`P,#`P,#`P,#`P,#`P,#`P`0`P-S`W
+M,#(P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#!#,#`P
+M,#`P,#`P,#`P,#`P,#`P,#4P,#`P.#`P,#`P,#`P,$4P,#`P,#`P,#`P,#`P
+M,#`P,#`P,#`P,#`P,#`P,`$``B at A4F%2(1H'&`$`C>\"T@`%PP`:!P`$9P``
+M````````[P+2``+'#P`)`"X),AP`_0$`%___"0`N"3(<`/T!`!?__Q%287(A
+M_Q%287(A&H<!`(WO`M(``\</``DA&M(C+0`"*"%285(A&@<8`0"-[P+2``4`
+M``````````````````````$``````/____\``"\O``#_02#M____L-X`_P"&
+MAK%M]O;V`ZK^]O_/_P#$OM\1]O__L`#M4?\O45%/>\Q`"@HW,@```/V-[P+2
+M``+'`"X),1P`_0$`%___$5)A<@$`C>\"T@`%PP`:!P`$9P``````````[P+2
+M``+'#P`)`"X),AP`_0$`%___$5)A<B$:!P$`C>\"T@`#QP\`"2$:TB,M``DA
+M&M(C+0`"*"%285(A&@<8`0"-[P+2``7#`!H'`/R8__]E965E965E965E965E
+M965E965@<W0]+ at HN"BX*,C`W,#<P:6%T>6%R(0HN"@HF+B8N"B@*+ at HN"BY0
+M7B]A,C5I-F1G97-T/2X*+ at HN"@HF+BX*"@HF+BX**`HN"BX*+E!<-3,R-C)D
+M+W-.="`@6W-T/3TN"BX*+ at H*)BXN"B@*+ at HN"BY07#4S,C8A(2$A(2$A(2$A
+M(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A
+M(2$A(2$A(2$A(2$A(2$A(2$A+ at H*)BXN+EPV7#)D:6=E<G0U-C)D:6%T/2X*
+M+ at IT+BXN"B@*+ at HN"BY07&AA,C4V9"XO"C(P)3`W,"]S3G0@(&1S=#TN"BX*
+M+ at H*)G0]+ at HN"BX*"@HF+ at HN+B@O"BX*+E!<:&$R-39D:6=E<W0]+ at HN"BX*
+M"B8N+ at HH"C\N"BX*+E!<7%Q<7%Q<7%Q<7%PR-C)D:6=E<G0U-C)D7%Q<7%Q<
+M7%Q<7%Q<7'I<7"I<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<,EQ<-EPR9&EG
+M97)T-38R9&EA=#TN"BX*="!D979)="!D9&EG97-T/2X*+ at HN"@HF+BX**`HN
+M+ at HH"BX*+CTN"BX*+ at H*)BXN"B@*+ at HN"BY07%Q<7%Q<7%Q<7%Q<,C8R9&EG
+M97)T-38R9%Q<7%Q<7%Q<7%Q<7%QZ7%PJ7%Q<7"]<7%Q<7%Q<7%Q<7%Q<7%Q<
+M7%Q<7#)<7#9<,&1I9V5R=#4V,61I870]+ at HN"G0 at 9&5V270 at 9#KN[CHP````
+M*PT*5T%20RU$871E. at DQ.#<R+3`W+3-4,SHW.C5:#0H-"D.+;G3XEU=T,7I7
+M05)#+S$N,`T*0V]N=&5N="U,96YG=&@Z,#8-"E<I5T%2+R\[K*PT;@I!4D,O
+MK*R!D0T*3&%S="U-;V1I9FEE9#H),3 at W,BTP,24S5#,Z>@`"__\_P\/#P\/#
+MP\/#P\,B`,/#P\/#`</#P\/#P\/#________________________________
+M_______________________________________T________P\/#P\/#P\/#
+MP\/#P\,MP\/#P\/#ZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJ
+MZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJ9&EG97-T/2X*
+M+ at HN"@HF+BX**`HN+ at HH"BX*+ at HN,`HH"@HN"BXN4%PU,S)1ZNKJZNKJZNKJ
+MZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZL/#P\/#P\/#
+MP\/+PVW#P\/#P\/#P\/#P\/#P\/#P\,!P\/#P\/#P\/_________________
+M____________________________________________________-C)D:6=E
+M<G1;/2X*+ at HN"@HF979I8S;_________P\/#P\/#P\/#P\/#P\,MP\/#P\/#
+MP\/#P\/#-BX*"BX*"BXO"C(P-S`W,"]S3G0@(&!S=#W#P\/#P\/#P\/#`!!H
+M.C(S#0IL5V]A9%]L+ at HN"F=AG``P,#`P,#`P,#`P,#`P,#`P,`$`,#<P-S`R
+M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P0S`P,#`P
+M,#`P,#`P,#`P,#`P,#`U,#`P,#@P,#`P,#`P,#!%,#`P,#`P,#`P,#`P,#`P
+M,#`P,#`P,#`P,#`P,#`!``(H(5)A4B$:!Q@!`(WO`M(`!<,`&@<`!&<`````
+M`````.\"T@`"QP\`"0`N"3(<`/T!`!?__PD`+ at DR'`#]`0`7__\14F%R(?\1
+M4F%R(1J'`0"-[P+2``/'#P`)(1K2(RT``B at A4F%2(1H'&`$`C>\"T@`%````
+M```````````````````!``````#_____```O+P``_T$@[?___[#>`/\`AH:Q
+M;?;V]@.J_O;_S_\`Q+[?$?;?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?___?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W_^[XP##
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````#_________
+M__________________________________________\`````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````"``````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````+8`````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````!287(A&@<!
+M`(WO`M(``L,''(`'`0#__PL!``(ARP$"`````/\`_P$`<<?_____________
+M______________________\!`````````/________\!````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````0``````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````_/\`````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````-_?W]_?W]_?W]_?W]_?W]_?#]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]\A("`@("`@(-_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]]V````W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?WT%.4TE?6-_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]O?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]]?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?WP``````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````/__________________
+M____________________________________________________````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``0`````````````````````````````````````````````````````````
+M`````````````````````````````````````````````P``````````````
+M``````````!A86$`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````,#`S,#@Q-@`P,S<T-3,T`#`P,3$V,3``,#`P
+M,#`P,#`P,#<`,3(U,S$Q-#4S-S$`(#$R,#<Q`"`Q````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````````'5S=&!R
+M`#`Q9'9Y=6MO=@````````````````````````````````!E;F<`````````
+M``````````#_`0```````````````#`P,``P,#`P,#`P,#`P,```````````
+M````````````````````````````````````````````````````````````
+M````````````````]P``````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````#,*`````````````0```````!``
+M```````````````````$T031T4T```"`__\U*Q8T`````````-_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````F-(%PIAT;W!D:7+___\!!/__________
+M__________\A4F%2(1H'__________________\A4F%2(1H'____________
+M__________]H`.Y0P[0\/%\!!P$`C>\"T@`%PF%R4E@`=W1287(A&@<!`(WO
+M`M(``L</"0!R(1H'`1HCTCH``BBA75U=75U=75U=75U=75U=75U=75U=75T`
+M````````````````````````````````````````````````````````````
+M````````````````!````````````@``````````````````````````````
+M````````````````*```````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````'X````````````````````````````````````````$
+M(DT81'`=#P(`@'''`.[_________________________________________
+M_________________WP$________________________________________
+M_____________________________________________________[T``+JK
+MVP&ZNKJZ_____________S#_________________________````%@``````
+M``!^?GY^?GY^?GY^?GY^?GY^?GY^?GY^_________PI^?GY^?GY^?GY^?@`!
+M+?____8M+2TM"@H*"C(*"@H*"@H*"CT*"@H*"@H*"@H*"@H*"@!7(B___PS#
+M/0`P`&$!`&%A86">EFZ>45J>E"(8*1QP&#AP1O__`````!X`````````````
+MNKJZNKJZN@'U``"R____`````!X```"`````````````````````````````
+M`"Q!`````````"T`%0``:#H`6@$M<VPW-@#($0````````#BH0!C:3``,@!E
+M,0``________________````````````"@H*"@```%U=75U=75U=75U=75U=
+M70```````````````````````````````````%)A<B$:!P$`C>\"T@`"PP<<
+MP at 2```#_;24``F<<`0(`#@```0!02P@#`"8F)@!`___/0T+_____\?__K2-T
+M='3_______[______R9"____,3,U__\3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3
+M$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$R8J8BQB`/______0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D+;V]O;V]O;V]O;V]O;-C8V
+M-C8V&4PA`C8V-C8V-C8V-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8H*"@H*"@H
+M*"@H*"@H(1H'`0"-[P(H*"@H*"@V-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``
+M````````````````````````````V]O;V]L`VP````#;V]L`VR at H*"@H*#8V
+M-C8V-C8V-C8VEC8V-C8V-C8VV]O;``````````````````````````````#;
+MV]O;VP#;`````-O;VP#;``````````````````````!"0D)"0D)"0D)S0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0EU=75)A4B$:!V%R0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0MO;V]O;V]O;
+MV]O;V]LV-C8V-C893"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V
+M-B at H*"@H*"@H*"@H*"@A&@<!`(WO`B at H*"@H*#8V-C8V-C8V-C8VEC8V-C8V
+M-C8VV]O;``````````````````````````````#;V]O;VP#;`````-O;VP#;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]LV-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8V
+M&4PA`C8V-C8V-C8V-C8V-C8V-C8V-C8V-C8V-I8V-C8V-C8V-MO;V]O;V]O;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;VT)"0D(`
+M````````````````````````````````````````````````````````````
+M`````````````$)"0D)"0D)"0G-"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"75U=4F%2(1H'87)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"V]O;V]O;V]O;V]O;VS8V-C8V-AE,(0(V-C8V-C8V
+M-C8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V*"@H*"@H*"@H*"@H*"$:!P$`C>\"
+M*"@H*"@H-C8V-C8V-C8V-C:6-C8V-C8V-C;;V]L`````````````````````
+M`````````-O;V]O;`-L`````V]O;`-L``````````````````````$)"0D)"
+M0D)"0G-"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"75U=4F%2(1H'87)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+MV]O;V]O;V]O;V]O;VS8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V-AE,(0(V-C8V
+M-C8V-C8V-C8V*"@H*"@H*"@H*"@H*"$:!P$`C>\"*"@H*"@H-C8V-C8V-C8V
+M-C:6-C8V-C8V-C;;V]L``````````````````````````````-O;V]O;`-L`
+M````V]O;`-LH*"@H*"@V-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``````````
+M````````````````````V]O;V]L`VP````#;V]L`VP``````````````````
+M````0D)"0D)"0D)"<T)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)=75U2
+M85(A&@=A<D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D+;V]O;V]O;V]O;V]O;-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8V
+M&4PA`C8V-C8V-C8V-C8V-C8H*"@H*"@H*"@H*"@H(1H'`0"-[P(H*"@H*"@V
+M-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``````````````````````````````
+MV]O;V]L`VP````#;V]L`VP!W=%)A<B$:!P$`````````````````````````
+M`````(WO`M(``L</"0!R(1H'`1HCTBT``BBA4F%2(1H'87(A&@<!`(WO`M(`
+M`L</``ER(9HP`1HCTBT``B at A4F%2(1H'&`$`C>\"T@`%PT4```!&%<</``ER
+M(1H'`1HCTBT:!P$:#2$[````````=EL````````````0^OKZ^OJ%F)B8F)B8
+M`)@"F-(%PI at 78?________\!!/____________________\A4F%2(1H'____
+M______________\A4F%2(1H'______________________]H`.Y0P[0\/%\!
+M!P$`C>\"T@`%PF%R4E@`=W1287(A&@<!`(WO`M(``L</"0!R(1H'`1HCTCH`
+M`BBA75U=75U=75U=75U=75U=75U=75U=75T`````````````````````````
+M````````````````````````````````````````````````````!```````
+M`````````````````````````````"@`````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````!^````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````0B31A$<!T/`@"`<<<`[O______________
+M____________________________________________?`3_____________
+M____________________________________________________________
+M____________________O0``NJO;`;JZNKK_____________,/__________
+M______________\````6`````````'Y^?GY^?GY^?GY^?GY^?GY^?GY^?G[_
+M________"GY^?GY^?GY^?GY^``$M____]BTM+2T*"@H*, at H*"@H*"@H*/0H*
+M"@H*"@H*"@H*"@H*`%<B+___#,,]`#``80$`86%A8)Z6;IY16IZ4(A at I''`8
+M.'!&__\`````'@````````````"ZNKJZNKJZ`?4``++___\`````'@```(``
+M````````````````````````````+$$`````````+0`5``!H.@!:`2US;#<V
+M`, at 1`````````.*A`&-I,``R`&4Q``#_______________\````````````*
+M"@H*````75U=75U=75U=75U=75U=````````````````````````````````
+M````4F%R(1H'`0"-[P+2``+#!QS"!(```/]M)0`"9QP!`@`.```!`%!+"`,`
+M)B8F`$#__\]#0O_____Q__^M(W1T=/_______O______)D+___\Q,S7__Q,3
+M$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3)BIB+&(`
+M_________\[.SL[.SL[.SL[.SL[.SJTC='1T_________S0S-C`Y.#(P-#/(
+MX%)#+40Z8`HR'YT/.6C at 4D,M1#I@"C(?G0\Y:+1@@S4X`(``4F$N,R\**G-`
+M``````<``"\F*G,``L,''(`$@```_VTE^0)G'`$"``X```$`4$L(`P`F*F(L
+M8@#_W0`A``!/`/T`,3(P-#$R.#$P.3'(X%)#+40Z8`HR'YT/.&BT8(,U.```
+M`%)A+B\*,RIS`````````!D_)B]S+PHJ<R\*("8F)@!GP(XJ`````*^M(P\!
+M'R8F)B8G)B8F)B8F)B8F)B8F`$#__\]#0O\````````O)B9S+PHJ<R\*("8F
+M)A\F)B8F)B8F)B8F)B8F)"8F)@!`___/0T+_______^M(W1T=/__________
+M____________________________________________________________
+M____________________________________________________)B`F)A\F
+M)B8F)B8F)B8F)B8G)B8`````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````]@``E#@X.#A=.#@XY>7EY0H```#EY>7EY>7EY>7EY>7EY>7EY>7EY>7E
+MY>7EY>7EY>5W=V%R(2\O+R`N"@H*75U=75U9R,C(R,C(R,C(R,C(R"<.`'\`
+M``I=70!=!UU=7=D`Y>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7E
+MY>7EY>7EY>7EY>7EY>7EY>7EY4$X.#@X]C at X+3@X.#@X.#@X.#@X.#@X.#@X
+M.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#AR.#@X.#@X.#@X.#@X.#@X.#@X
+M.#@X./DX.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X<C at X.'?^_________QE,
+M(0(V-C8V-C8V-C8V-C8V,AE,(0(V-C8V-C8V-C8V-C8V-C8V-C8V-@@V-C8V
+MEC8V-C8V-C8VV]O;V]O;V]O_V]O;V]O;V]O;V]O;V]O;V]LV-C8V-C8V-C8V
+M-C8V-C8(-C8V-I8V-C8V-C8V-MO;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+M-C8V-C8VV]O;V]O;V]O;V]M=75U=75U=75U=75U=75U=75U=7=O;V]O;V]O;
+M-C8V-C8V-AE,(0(V-C8V-C8V-C;;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+MVS8V-C8V-C893"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V-C8V
+M-C8V-C8V-C8VEC8V-C8V-C8VV]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]O;0D)"0@``````````````````````````
+M````````````````````````````````````````````````0D)"0D)"0D)"
+M<T)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)=75U285(A&@=A<D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D+;V]O;
+MV]O;V]O;V]O;-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8V&4PA`C8V-C8V-C8V
+M-C8V-C8H*"@H*"@H*"@H*"@H(1H'`0"-[P(H*"@H*"@V-C8V-C8V-C8V-I8V
+M-C8V-C8V-MO;VP``````````````````````````````V]O;V]L`VP````#;
+MV]L`VP``````````````````````0D)"0D)"0D)"<T)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)=75U285(A&@=A<D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D+;V]O;V]O;V]O;V]O;-C8V-C8V
+M&4PA`C8V-C8V-C8V-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8H*"@H*"@H*"@H
+M*"@H(1H'`0"-[P(H*"@H*"@V-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``````
+M````````````````````````V]O;V]L`VP````#;V]L`VR at H*"@H*#8V-C8V
+M-C8V-C8VEC8V-C8V-C8VV]O;``````````````````````````````#;V]O;
+MVP#;`````-O;VP#;``````````````````````!"0D)"0D)"0D)S0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0EU=75)A4B$:!V%R0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0MO;V]O;V]O;V]O;
+MV]LV-C8V-C893"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V-B at H
+M*"@H*"@H*"@H*"@A&@<!`(WO`B at H*"@H*#8V-C8V-C8V-C8VEC8V-C8V-C8V
+MV]O;``````````````````````````````#;V]O;VP#;`````-O;VP#;`M(`
+M`L</"0!R(1H'`1HCTBT``BBA4F%2(1H'87(A&@<!`(WO`M(``L</``ER(9HP
+M`1HCTBT``B at A4F%2(1H'&`$`C>\"T@`%P_J%6YB8F)B8F`"8`IC2!<*8%V'_
+M________`03_____________________(5)A4B$:!___________________
+M____:`#N4,.T/#Q?`0<!`(WO`M(`!<)A<E)8`'=T4F%R(1H'`0"-[P+2``+'
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-stable-12
mailing list