Some patches for zip and unzip under Cygwin and Unix

Cosmin Truta <[email protected]> Fri, 28 Nov 2003 10:33:33 -0500
Newsgroups gmane.comp.archivers.info-zip
Message-ID <[email protected]>
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime-oOUblnuQwHKola3qYQ6TW/IULO3mGbRi9nwVQlTi/[email protected] for more info.

--1686162181-2072418402-1069715579=:24829
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <[email protected]>


[To MOD: some time ago, I sent this message to the zip-bugs list,
 but then I saw the FAQ note about discontinuing that list, so I am
 resending my message here.
 Don't bother to read and approve the old one.]


---------- Forwarded message ----------
Date: Mon, 24 Nov 2003 18:12:59 -0500 (EST)
From: Cosmin Truta <[email protected]>
To: Info-ZIP <[email protected]>
Cc: Charles Wilson <[email protected]>
Subject: Some patches for zip and unzip under Cygwin and Unix


Hi,

I am attaching a set of patches for the latest zip24h beta:

  ftp://ftp.info-zip.org/pub/infozip/OLD/beta/zip24h.zip

and for the latest unzip551c beta:

  ftp://ftp.info-zip.org/pub/infozip/OLD/beta/unz551c.zip


**

Here are the modifications to zip24h:

Z1).
ChangeLog entry:
- Adapt the Unix port to work under Cygwin.
Notes:
- Some of the modifications are inspired from Charles Wilson's patches.
  If you accept this part, please also credit him in the ChangeLog.
- Affected files: unix/Makefile, unix/osdep.h, unix/unix.c, unix/zipup.h
- The motivation for this patch is to be able to benefit from the Unix
  FS in Cygwin; most notably, to benefit from symlinks. Also, to be
  able to store and retrieve UIDs and GIDs.
- A more detailed summary of modifications:
  - Open files in binary mode (FOPR/FOPM/FOPW/fhow).
  - Use "_crc_i386.s" instead of "crc_i386.s" in unix/Makefile, so that
    it doesn't clash with "crc_i386.S".
  - Add the Cygwin target in unix/Makefile, which is the same as
    "generic_gcc" plus the definition E=".exe".
  - Define the MSDOS symbol and undefine the WIN32 symbol in
    unix/osdep.h. Right now, it's possible to regard Cygwin either
    as a Win32 platform (with NTSD and stuff) by using
    win32/makefile.gcc, or as a Unix platform (with symlinks and stuff)
    by using unix/Makefile. MSDOS is defined in both cases.
- You might not agree with the change in ex2in() in unix/unix.c.
  I tried to make that change as unintrusive as possible; if you do
  disagree with it, please allow me to bring further arguments before
  rejecting my idea. Thanks.

Z2).
ChangeLog entry:
- Add Cygwin, Intel i586 and Intel i686 to version_local() in Unix.
Note:
- Apparently, there is no __i786__ macro...

Z3).
ChangeLog entry:
- Do not test the S_IFLNK flag if NO_SYMLINK is defined.
Note:
- Although I don't know what Unix flavor lacks symlinks, I noticed
  that S_IFLNK gets undefined under NO_SYMLINK, in "tailor.h". As a
  result, the compilation used to break in unix/unix.c. I artificially
  defined this NO_SYMLINK macro myself, just for testing, and now it
  seems to work.

Z4).
ChangeLog entry:
- Compile out the "UT" extra-field handling in Unix, if
  NO_EF_UT_TIME is defined.
ChangeLog entry:
- Compile out the "Ux" entra-field handling in Unix, if
  NO_EF_IZUNIX or NO_EF_IZUNIX2 is defined.
Notes:
- Affected files: unix/osdep.h, unix/unix.c, zip.c
- Well, I know there is "zip -X", but that's not good enough.
  If one uses zip to make software distributions, there may be
  a need to store the universal time "UT", but there is no need
  to store the GID/UID (in Unix) or the NT "SD" (in NT), etc.
  These fields only have meaning inside the file system where the
  archive was created, and otherwise, they are junk.
  Ideally, there should be a run-time option ("zip -XX" ?...)
  that allows the user to select only the flags that make sense for
  distribution (fields like "UT"), but even if this kind of support
  doesn't exist, there should be at least the possibility to make
  custom builds of zip, that filter the local junk out.
  I am glad that NO_NTSD_EAS exists for Win32, and I also liked to
  have a NO_EF_IZUNIX option.
- Similarly, there should be a way to compile the USE_EF_IZUNIX2
  code in, and USE_EF_UT_TIME out. [implemented]
- Similarly, it would be nice to have a way to disable the storing
  of the "creation time" and "last access" time in the "UT" field
  when using zip for archiving software distributions.
  [not implemented; might be a good idea for "zip -XX"; please let
  me know about your decision]

Z5).
ChangeLog entry [not really necessary]:
- Improve style when avoiding unused variable warning in unix/unix.c
Note:
- The former "if (isdir == 42) return n;" was really ugly.
  Not to mention that my solution "if (isdir) return n; return n;"
  has a better chance to be optimized by the compiler, as a simple
  "return n;".

Z6).
ChangeLog entry:
- Remove the recognition of __CYGWIN32__ in win32/osdep.h
Note:
- The support of Cygwin prior to Beta 20 doesn't make sense anymore.
  Cygwin is now in a pretty advanced stage, with lots of Unix API
  support, so chances are that those ancient betas don't even work
  if the source code happens to rely on new Cygwin features (which
  are, in fact, standard POSIX features).
  In addition, none of the Cygwin folks want to hear about supporting
  anything older than Cygwin 1.0. Cygwin is now at version 1.5.
  __CYGWIN32__ is just noise.

Z7).
ChangeLog entries [not really about Unix or Cygwin...]:
- Remove -DMSDOS in win32/makefile.bor and win32/makefile.w32
- Improve "clean" target in win32/makefile.bor;
  add "clean" target in win32/makefile.w32.
Note:
- That -DMSDOS isn't necessary, because it is already enabled in
  the source code. Besides, it isn't used consistently across
  makefiles. Rather than adding it everywhere, I figured it's better
  to remove it from everywhere.


**

Here are the modifications to unzip551c:

U1).
ChangeLog entry:
- Adapt the Unix port to work under Cygwin.
Notes:
- Ditto, as in Z1).
  Also please credit Charles Wilson.
- Affected files: unzip.h, unzpriv.h, unix/Makefile
- I inserted Cygwin in the comment lists that accompanies the definition
  of MODERN and PROTO; I also reorganized that list a little, to make
  it more consistent with the coming preprocessed code.
- There was a typo inside unzpriv.h. Instead of fixing the typo,
  I rephrased the whole comment, which now looks more clear IMHO.

U2).
ChangeLog entry:
- Add Cygwin, Intel i586 and Intel i686 to version_local() in Unix.

U3).
ChangeLog entry [not really necessary]:
- Fix typo in unix/Makefile and unix/unix.c
  maxosx --> macosx, CygWin --> Cygwin

U4).
ChangeLog entry:
- Remove the recognition of __CYGWIN32__ in win32/w32cfg.h
Note:
- Ditto, as in Z6).


**


This is it. Enjoy :-)
Cosmin
--1686162181-2072418402-1069715579=:24829
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="zip24h-cos.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.58.0311241812590.24829-RRbLuHh/[email protected]>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME="zip24h-cos.diff"

ZGlmZiAtcnUgemlwMjRoL3VuaXgvTWFrZWZpbGUgemlwLW5ldy91bml4L01h
a2VmaWxlDQotLS0gemlwMjRoL3VuaXgvTWFrZWZpbGUJTW9uIE5vdiAyOSAw
MDoyMjo0MiAxOTk5DQorKysgemlwLW5ldy91bml4L01ha2VmaWxlCVNhdCBO
b3YgMjIgMTQ6MzI6MDAgMjAwMw0KQEAgLTUsOCArNSw4IEBADQogCUBlY2hv
ICcnDQogCUBlY2hvICdNYWtlIHdoYXQ/ICBZb3UgbXVzdCBzYXkgd2hhdCBz
eXN0ZW0gdG8gbWFrZSBaaXAgZm9yLS1lLmcuJw0KIAlAZWNobyAnIm1ha2Ug
Z2VuZXJpYyIuICBDaG9pY2VzOiBnZW5lcmljLCBnZW5lcmljX2djYywnDQot
CUBlY2hvICdhdHQ2MzAwbm9kaXIsIGNvaGVyZW50LCBjcmF5X3YzLCBseW54
LCBtaW5peCwgb3MzOTAsIHFueCwnDQotCUBlY2hvICdxbnhudG8sIHNvbGFy
aXMsIHNvbGFyaXNfZ2NjJw0KKwlAZWNobyAnYXR0NjMwMG5vZGlyLCBjb2hl
cmVudCwgY3JheV92MywgY3lnd2luLCBseW54LCBtaW5peCwnDQorCUBlY2hv
ICdvczM5MCwgcW54LCBxbnhudG8sIHNvbGFyaXMsIHNvbGFyaXNfZ2NjJw0K
IAlAZWNobyAnU2VlIHRoZSBmaWxlcyBJTlNUQUxMIGFuZCB6aXAudHh0IGZv
ciBtb3JlIGluZm9ybWF0aW9uLicNCiAJQGVjaG8gJycNCiANCkBAIC0xNiwx
MiArMTYsMTIgQEANCiBTSEVMTCA9IC9iaW4vc2gNCiBMTiA9IGxuIC1zDQog
DQotIyAodG8gdXNlIHRoZSBHbnUgY29tcGlsZXIsIGNoYW5nZSBjYyB0byBn
Y2MgaW4gQ0MpDQorIyAodG8gdXNlIHRoZSBHTlUgY29tcGlsZXIsIGNoYW5n
ZSBjYyB0byBnY2MgaW4gQ0MpDQogQ0MgPSBjYw0KIEJJTkQgPSAkKENDKQ0K
IEFTID0gJChDQykgLWMNCi1FID0NCiBDUFAgPSAvbGliL2NwcA0KK0UgPQ0K
IA0KICMgcHJvYmFibHkgY2FuIGNoYW5nZSB0aGlzIHRvICdpbnN0YWxsJyBp
ZiB5b3UgaGF2ZSBpdA0KIElOU1RBTEwgPSBjcA0KQEAgLTkyLDkgKzkyLDEw
IEBADQogCXJtIC1mIF9tYXRjaC5zDQogDQogY3JjX2kzODYubzogY3JjX2kz
ODYuUw0KLQkkKENQUCkgY3JjX2kzODYuUyA+IGNyY19pMzg2LnMNCi0JJChB
UykgY3JjX2kzODYucw0KLQlybSAtZiBjcmNfaTM4Ni5zDQorCSQoQ1BQKSBj
cmNfaTM4Ni5TID4gX2NyY19pMzg2LnMNCisJJChBUykgX2NyY19pMzg2LnMN
CisJbXYgX2NyY19pMzg2Lm8gY3JjX2kzODYubw0KKwlybSAtZiBfY3JjX2kz
ODYucw0KIA0KIHVuaXgubzogdW5peC91bml4LmMNCiAJJChDQykgLWMgJChD
RkxBR1MpIHVuaXgvdW5peC5jDQpAQCAtMTc5LDYgKzE4MCwxMCBAQA0KIGNy
YXlfdjM6DQogCSQoTUFLRSkgemlwcyBDQz0ic2NjIiBcDQogCQlDRkxBR1M9
Ii1EVU5JWCAtSS4gLU8gLWggdmVjdG9yMiAtaCBzY2FsYXIzIC1ESEFWRV9E
SVJFTlRfSCINCisNCisjIEN5Z3dpbg0KK2N5Z3dpbjoNCisJJChNQUtFKSBn
ZW5lcmljIENDPWdjYyBDUFA9ImdjYyAtRSIgRT0iLmV4ZSINCiANCiAjIEx5
bnhPUw0KIGx5bng6DQpkaWZmIC1ydSB6aXAyNGgvdW5peC9vc2RlcC5oIHpp
cC1uZXcvdW5peC9vc2RlcC5oDQotLS0gemlwMjRoL3VuaXgvb3NkZXAuaAlT
dW4gTm92IDA3IDA1OjUyOjAwIDE5OTkNCisrKyB6aXAtbmV3L3VuaXgvb3Nk
ZXAuaAlTYXQgTm92IDIyIDE0OjQwOjAwIDIwMDMNCkBAIC0xLDUgKzEsNSBA
QA0KIC8qDQotICBDb3B5cmlnaHQgKGMpIDE5OTAtMTk5OSBJbmZvLVpJUC4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICBDb3B5cmlnaHQgKGMpIDE5OTAt
MjAwMyBJbmZvLVpJUC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogDQogICBT
ZWUgdGhlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0UsIHZlcnNpb24gMTk5
OS1PY3QtMDUgb3IgbGF0ZXINCiAgICh0aGUgY29udGVudHMgb2Ygd2hpY2gg
YXJlIGFsc28gaW5jbHVkZWQgaW4gemlwLmgpIGZvciB0ZXJtcyBvZiB1c2Uu
DQpAQCAtOSw0ICs5LDM5IEBADQogI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0K
ICNpbmNsdWRlIDxzeXMvc3RhdC5oPg0KIA0KLSNkZWZpbmUgVVNFX0VGX1VU
X1RJTUUgICAgICAgICAgLyogRW5hYmxlIHVzZSBvZiAiVVQiIGV4dHJhIGZp
ZWxkIHRpbWUgaW5mbyAqLw0KKw0KKyNpZmRlZiBfX0NZR1dJTl9fDQorDQor
LyogVGhlIEN5Z3dpbiAoV2luZG93cykgZmlsZSBzeXN0ZW0gaXMgYW4gZXh0
ZW5zaW9uIG9mIE1TRE9TOg0KKyAqICAgJ1xcJyBpcyBhIGRpcmVjdG9yeSBz
ZXBhcmF0b3IgaW4gcGF0aHM7DQorICogICAiXHJcbiIgaXMgYSByZWNvcmQg
KGxpbmUpIHRlcm1pbmF0b3IgaW4gdGV4dCBmaWxlczsNCisgKiAgIGV0Yy4N
CisgKi8NCisjICBkZWZpbmUgTVNET1MNCisNCisvKiBGaWxlIG9wZXJhdGlv
bnM6DQorICogICB1c2UgImIiIGZvciBiaW5hcnk7DQorICogICB1c2UgIlMi
IGZvciBzZXF1ZW50aWFsIGFjY2VzcyBvbiBOVCB0byBwcmV2ZW50IHRoZSBO
VCBmaWxlIGNhY2hlDQorICogICBlYXRpbmcgdXAgbWVtb3J5IHdpdGggbGFy
Z2UgLnppcCBmaWxlcy4NCisgKi8NCisjICBkZWZpbmUgRk9QUiAicmIiDQor
IyAgZGVmaW5lIEZPUE0gInIrYiINCisjICBkZWZpbmUgRk9QVyAid2JTIg0K
Kw0KKy8qIEN5Z3dpbiBpcyBub3QgV2luMzIuICovDQorIyAgdW5kZWYgV0lO
MzINCisNCisjZW5kaWYgLyogP19fQ1lHV0lOX18gKi8NCisNCisNCisvKiBF
bmFibGUgdGhlICJVVCIgZXh0cmEgZmllbGQgKHRpbWUgaW5mbykgKi8NCisj
aWYgIWRlZmluZWQoTk9fRUZfVVRfVElNRSkgJiYgIWRlZmluZWQoVVNFX0VG
X1VUX1RJTUUpDQorIyAgZGVmaW5lIFVTRV9FRl9VVF9USU1FDQorI2VuZGlm
DQorDQorLyogRW5hYmxlIHRoZSAiVXgiIGV4dHJhIGZpZWxkIChnaWQvdWlk
KSAqLw0KKyNpZiAhZGVmaW5lZChOT19FRl9JWlVOSVgpICYmICFkZWZpbmVk
KE5PX0VGX0laVU5JWDIpDQorIyAgaWZuZGVmIFVTRV9FRl9JWlVOSVgyDQor
IyAgICBkZWZpbmUgVVNFX0VGX0laVU5JWDINCisjICBlbmRpZg0KKyNlbmRp
Zg0KZGlmZiAtcnUgemlwMjRoL3VuaXgvdW5peC5jIHppcC1uZXcvdW5peC91
bml4LmMNCi0tLSB6aXAyNGgvdW5peC91bml4LmMJU2F0IEphbiAxOSAwNDoy
Mjo0NCAyMDAyDQorKysgemlwLW5ldy91bml4L3VuaXguYwlNb24gTm92IDI0
IDExOjIyOjAwIDIwMDMNCkBAIC0xLDUgKzEsNSBAQA0KIC8qDQotICBDb3B5
cmlnaHQgKGMpIDE5OTAtMjAwMSBJbmZvLVpJUC4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuDQorICBDb3B5cmlnaHQgKGMpIDE5OTAtMjAwMyBJbmZvLVpJUC4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogDQogICBTZWUgdGhlIGFjY29tcGFu
eWluZyBmaWxlIExJQ0VOU0UsIHZlcnNpb24gMTk5OS1PY3QtMDUgb3IgbGF0
ZXINCiAgICh0aGUgY29udGVudHMgb2Ygd2hpY2ggYXJlIGFsc28gaW5jbHVk
ZWQgaW4gemlwLmgpIGZvciB0ZXJtcyBvZiB1c2UuDQpAQCAtMTQxLDggKzE0
MSwxMSBAQA0KICNpZmRlZiBPUzM5MA0KICAgaWYgKFNfSVNSRUcocy5zdF9t
b2RlKSB8fCBTX0lTTE5LKHMuc3RfbW9kZSkpDQogI2Vsc2UNCi0gIGlmICgo
cy5zdF9tb2RlICYgU19JRlJFRykgPT0gU19JRlJFRyB8fA0KLSAgICAgIChz
LnN0X21vZGUgJiBTX0lGTE5LKSA9PSBTX0lGTE5LKQ0KKyAgaWYgKChzLnN0
X21vZGUgJiBTX0lGUkVHKSA9PSBTX0lGUkVHDQorIyAgaWZuZGVmIE5PX1NZ
TUxJTksNCisgICAgICB8fCAocy5zdF9tb2RlICYgU19JRkxOSykgPT0gU19J
RkxOSw0KKyMgIGVuZGlmDQorICAgICAgKQ0KICNlbmRpZg0KICAgew0KICAg
ICAvKiBhZGQgb3IgcmVtb3ZlIG5hbWUgb2YgZmlsZSAqLw0KQEAgLTIxMCwx
NSArMjEzLDI1IEBADQogICAgc3RyaW5nIG9yIE5VTEwgaWYgbm90IGVub3Vn
aCBtZW1vcnkuICovDQogew0KICAgY2hhciAqbjsgICAgICAgICAgICAgIC8q
IGludGVybmFsIGZpbGUgbmFtZSAobWFsbG9jJ2VkKSAqLw0KLSAgY2hhciAq
dCA9IE5VTEw7ICAgICAgIC8qIHNob3J0ZW5lZCBuYW1lICovDQorICBjaGFy
ICp0ID0geDsgICAgICAgICAgLyogc2hvcnRlbmVkIG5hbWUgKi8NCiAgIGlu
dCBkb3NmbGFnOw0KIA0KLSAgZG9zZmxhZyA9IGRvc2lmeTsgIC8qIGRlZmF1
bHQgZm9yIG5vbi1ET1MgYW5kIG5vbi1PUy8yICovDQorICBkb3NmbGFnID0g
ZG9zaWZ5OyAgICAgLyogZGVmYXVsdCBmb3Igbm9uLURPUyBhbmQgbm9uLU9T
LzIgKi8NCiANCiAgIC8qIEZpbmQgc3RhcnRpbmcgcG9pbnQgaW4gbmFtZSBi
ZWZvcmUgZG9pbmcgbWFsbG9jICovDQorI2lmZGVmIE1TRE9TICAgICAgICAg
ICAgLyogc3lzdGVtcyBtYXNxdWVyYWRpbmcgYXMgVW5peDogREpHUFAsIEN5
Z3dpbiwgZXRjLiAqLw0KKyAgLyogQ29udmVydCBiYWNrc2xhc2hlcyB0byBz
bGFzaGVzICovDQorICBmb3IgKG4gPSB0OyAqbiAhPSAnXDAnOyBuKyspDQor
ICAgIGlmICgqbiA9PSAnXFwnKQ0KKyAgICAgICpuID0gJy8nOw0KKyAgLyog
U3RyaXAgZHJpdmUgc3BlY2lmaWNhdGlvbiAqLw0KKyAgaWYgKGlzYWxwaGEo
KHVjaCl0WzBdKSAmJiB0WzFdID09ICc6JykNCisgICAgdCArPSAyOw0KKyAg
ZWxzZQ0KKyNlbmRpZg0KICAgLyogU3RyaXAgIi8vaG9zdC9zaGFyZS8iIHBh
cnQgb2YgYSBVTkMgbmFtZSAqLw0KLSAgaWYgKCFzdHJuY21wKHgsIi8vIiwy
KSAmJiAoeFsyXSAhPSAnXDAnICYmIHhbMl0gIT0gJy8nKSkgew0KLSAgICBu
ID0geCArIDI7DQorICBpZiAoIXN0cm5jbXAodCwgIi8vIiwgMikgJiYgKHRb
Ml0gIT0gJ1wwJyAmJiB0WzJdICE9ICcvJykpIHsNCisgICAgbiA9IHQgKyAy
Ow0KICAgICB3aGlsZSAoKm4gIT0gJ1wwJyAmJiAqbiAhPSAnLycpDQogICAg
ICAgbisrOyAgICAgICAgICAgICAgLyogc3RyaXAgaG9zdCBuYW1lICovDQog
ICAgIGlmICgqbiAhPSAnXDAnKSB7DQpAQCAtMjI4LDggKzI0MSw3IEBADQog
ICAgIH0NCiAgICAgaWYgKCpuICE9ICdcMCcpDQogICAgICAgdCA9IG4gKyAx
Ow0KLSAgfSBlbHNlDQotICAgICAgdCA9IHg7DQorICB9DQogICB3aGlsZSAo
KnQgPT0gJy8nKQ0KICAgICB0Kys7ICAgICAgICAgICAgICAgIC8qIHN0cmlw
IGxlYWRpbmcgJy8nIGNoYXJzIHRvIGdldCBhIHJlbGF0aXZlIHBhdGggKi8N
CiAgIHdoaWxlICgqdCA9PSAnLicgJiYgdFsxXSA9PSAnLycpDQpAQCAtMjQ0
LDE4ICsyNTYsMTggQEANCiAgICAgcmV0dXJuIE5VTEw7DQogICBzdHJjcHko
biwgdCk7DQogDQotICBpZiAoaXNkaXIgPT0gNDIpIHJldHVybiBuOyAgICAv
KiBhdm9pZCB3YXJuaW5nIG9uIHVudXNlZCB2YXJpYWJsZSAqLw0KLQ0KICAg
aWYgKGRvc2lmeSkNCiAgICAgbXNuYW1lKG4pOw0KIA0KICNpZmRlZiBFQkNE
SUMNCi0gIHN0cnRvYXNjKG4sIG4pOyAgICAgICAgICAgICAgIC8qIGhlcmUg
YmVjYXVzZSBtc25hbWUoKSBuZWVkcyBuYXRpdmUgY29kaW5nICovDQorICBz
dHJ0b2FzYyhuLCBuKTsgICAgICAgLyogaGVyZSBiZWNhdXNlIG1zbmFtZSgp
IG5lZWRzIG5hdGl2ZSBjb2RpbmcgKi8NCiAjZW5kaWYNCiANCiAgIC8qIFJl
dHVybmVkIG1hbGxvYydlZCBuYW1lICovDQogICBpZiAocGRvc2ZsYWcpDQog
ICAgICpwZG9zZmxhZyA9IGRvc2ZsYWc7DQorDQorICBpZiAoaXNkaXIpIHJl
dHVybiBuOyAgLyogYXZvaWQgd2FybmluZyBvbiB1bnVzZWQgdmFyaWFibGUg
Ki8NCiAgIHJldHVybiBuOw0KIH0NCiANCkBAIC00MDksNiArNDIxLDcgQEAN
CiAgIC8qIHN0b3JlIGZ1bGwgZGF0YSBpbiBsb2NhbCBoZWFkZXIgYnV0IGp1
c3QgbW9kaWZpY2F0aW9uIHRpbWUgc3RhbXAgaW5mbw0KICAgICAgaW4gY2Vu
dHJhbCBoZWFkZXIgKi8NCiB7DQorI2lmIGRlZmluZWQoVVNFX0VGX1VUX1RJ
TUUpIHx8IGRlZmluZWQoVVNFX0VGX0laVU5JWDIpDQogICBzdHJ1Y3Qgc3Rh
dCBzOw0KIA0KICAgLyogRm9yIHRoZSBmdWxsIHNpemVkIFVUIGxvY2FsIGZp
ZWxkIGluY2x1ZGluZyB0aGUgVUlEL0dJRCBmaWVsZHMsIHdlDQpAQCAtNDE2
LDE4ICs0MjksMjkgQEANCiAgIGlmIChMU1NUQVQoei0+bmFtZSwgJnMpKQ0K
ICAgICByZXR1cm4gWkVfT1BFTjsNCiANCi0jZGVmaW5lIEVCX0xfVVRfU0la
RSAgICAoRUJfSEVBRFNJWkUgKyBFQl9VVF9MRU4oMikpDQotI2RlZmluZSBF
Ql9DX1VUX1NJWkUgICAgKEVCX0hFQURTSVpFICsgRUJfVVRfTEVOKDEpKQ0K
LSNkZWZpbmUgRUJfTF9VWDJfU0laRSAgIChFQl9IRUFEU0laRSArIEVCX1VY
Ml9NSU5MRU4pDQotI2RlZmluZSBFQl9DX1VYMl9TSVpFICAgRUJfSEVBRFNJ
WkUNCi0jZGVmaW5lIEVGX0xfVU5JWF9TSVpFICAoRUJfTF9VVF9TSVpFICsg
RUJfTF9VWDJfU0laRSkNCi0jZGVmaW5lIEVGX0NfVU5JWF9TSVpFICAoRUJf
Q19VVF9TSVpFICsgRUJfQ19VWDJfU0laRSkNCisjIGlmZGVmIFVTRV9FRl9V
VF9USU1FDQorIyAgZGVmaW5lIEVCX0xfVVRfU0laRSAgICAoRUJfSEVBRFNJ
WkUgKyBFQl9VVF9MRU4oMikpDQorIyAgZGVmaW5lIEVCX0NfVVRfU0laRSAg
ICAoRUJfSEVBRFNJWkUgKyBFQl9VVF9MRU4oMSkpDQorIyBlbHNlDQorIyAg
ZGVmaW5lIEVCX0xfVVRfU0laRSAgICAwDQorIyAgZGVmaW5lIEVCX0NfVVRf
U0laRSAgICAwDQorIyBlbmRpZg0KKyMgaWZkZWYgVVNFX0VGX0laVU5JWDIN
CisjICBkZWZpbmUgRUJfTF9VWDJfU0laRSAgIChFQl9IRUFEU0laRSArIEVC
X1VYMl9NSU5MRU4pDQorIyAgZGVmaW5lIEVCX0NfVVgyX1NJWkUgICAgRUJf
SEVBRFNJWkUNCisjIGVsc2UNCisjICBkZWZpbmUgRUJfTF9VWDJfU0laRSAg
IDANCisjICBkZWZpbmUgRUJfQ19VWDJfU0laRSAgIDANCisjIGVuZGlmDQor
IyBkZWZpbmUgRUZfTF9VTklYX1NJWkUgICAoRUJfTF9VVF9TSVpFICsgRUJf
TF9VWDJfU0laRSkNCisjIGRlZmluZSBFRl9DX1VOSVhfU0laRSAgIChFQl9D
X1VUX1NJWkUgKyBFQl9DX1VYMl9TSVpFKQ0KIA0KICAgaWYgKCh6LT5leHRy
YSA9IChjaGFyICopbWFsbG9jKEVGX0xfVU5JWF9TSVpFKSkgPT0gTlVMTCkN
CiAgICAgcmV0dXJuIFpFX01FTTsNCiAgIGlmICgoei0+Y2V4dHJhID0gKGNo
YXIgKiltYWxsb2MoRUZfQ19VTklYX1NJWkUpKSA9PSBOVUxMKQ0KICAgICBy
ZXR1cm4gWkVfTUVNOw0KIA0KKyMgaWZkZWYgVVNFX0VGX1VUX1RJTUUNCiAg
IHotPmV4dHJhWzBdICA9ICdVJzsNCiAgIHotPmV4dHJhWzFdICA9ICdUJzsN
CiAgIHotPmV4dHJhWzJdICA9IChjaGFyKUVCX1VUX0xFTigyKTsgICAgLyog
bGVuZ3RoIG9mIGRhdGEgcGFydCBvZiBsb2NhbCBlLmYuICovDQpAQCAtNDQx
LDIzICs0NjUsMzYgQEANCiAgIHotPmV4dHJhWzEwXSA9IChjaGFyKShzLnN0
X2F0aW1lID4+IDgpOw0KICAgei0+ZXh0cmFbMTFdID0gKGNoYXIpKHMuc3Rf
YXRpbWUgPj4gMTYpOw0KICAgei0+ZXh0cmFbMTJdID0gKGNoYXIpKHMuc3Rf
YXRpbWUgPj4gMjQpOw0KLSAgei0+ZXh0cmFbMTNdID0gJ1UnOw0KLSAgei0+
ZXh0cmFbMTRdID0gJ3gnOw0KLSAgei0+ZXh0cmFbMTVdID0gKGNoYXIpRUJf
VVgyX01JTkxFTjsgICAvKiBsZW5ndGggb2YgZGF0YSBwYXJ0IG9mIGxvY2Fs
IGUuZi4gKi8NCi0gIHotPmV4dHJhWzE2XSA9IDA7DQotICB6LT5leHRyYVsx
N10gPSAoY2hhcikocy5zdF91aWQpOw0KLSAgei0+ZXh0cmFbMThdID0gKGNo
YXIpKHMuc3RfdWlkID4+IDgpOw0KLSAgei0+ZXh0cmFbMTldID0gKGNoYXIp
KHMuc3RfZ2lkKTsNCi0gIHotPmV4dHJhWzIwXSA9IChjaGFyKShzLnN0X2dp
ZCA+PiA4KTsNCi0gIHotPmV4dCA9IEVGX0xfVU5JWF9TSVpFOw0KLQ0KICAg
bWVtY3B5KHotPmNleHRyYSwgei0+ZXh0cmEsIEVCX0NfVVRfU0laRSk7DQog
ICB6LT5jZXh0cmFbRUJfTEVOXSA9IChjaGFyKUVCX1VUX0xFTigxKTsNCi0g
IG1lbWNweSh6LT5jZXh0cmErRUJfQ19VVF9TSVpFLCB6LT5leHRyYStFQl9M
X1VUX1NJWkUsIEVCX0NfVVgyX1NJWkUpOw0KLSAgei0+Y2V4dHJhW0VCX0xF
TitFQl9DX1VUX1NJWkVdID0gMDsNCisjIGVuZGlmIC8qID9VU0VfRUZfVVRf
VElNRSAqLw0KKyMgaWZkZWYgVVNFX0VGX0laVU5JWDINCisgIHsNCisgICAg
Y2hhciAqZXh0cmEsICpjZXh0cmE7DQorIyAgaWZkZWYgVVNFX0VGX1VUX1RJ
TUUNCisgICAgZXh0cmEgID0gei0+ZXh0cmEgICsgRUJfTF9VVF9TSVpFOw0K
KyAgICBjZXh0cmEgPSB6LT5jZXh0cmEgKyBFQl9DX1VUX1NJWkU7DQorIyAg
ZWxzZQ0KKyAgICBleHRyYSAgPSB6LT5leHRyYTsNCisgICAgY2V4dHJhID0g
ei0+Y2V4dHJhOw0KKyMgIGVuZGlmDQorICAgIGV4dHJhWzBdID0gJ1UnOw0K
KyAgICBleHRyYVsxXSA9ICd4JzsNCisgICAgZXh0cmFbMl0gPSAoY2hhcilF
Ql9VWDJfTUlOTEVOOyAgICAgLyogbGVuZ3RoIG9mIGRhdGEgcGFydCBvZiBs
b2NhbCBlLmYuICovDQorICAgIGV4dHJhWzNdID0gMDsNCisgICAgZXh0cmFb
NF0gPSAoY2hhcikocy5zdF91aWQpOw0KKyAgICBleHRyYVs1XSA9IChjaGFy
KShzLnN0X3VpZCA+PiA4KTsNCisgICAgZXh0cmFbNl0gPSAoY2hhcikocy5z
dF9naWQpOw0KKyAgICBleHRyYVs3XSA9IChjaGFyKShzLnN0X2dpZCA+PiA4
KTsNCisgICAgbWVtY3B5KGNleHRyYSwgZXh0cmEsIEVCX0NfVVgyX1NJWkUp
Ow0KKyAgICBjZXh0cmFbRUJfTEVOXSA9IDA7DQorICB9DQorIyBlbmRpZiAv
KiA/VVNFX0VGX0laVU5JWDIgKi8NCisNCisgIHotPmV4dCAgPSBFRl9MX1VO
SVhfU0laRTsNCiAgIHotPmNleHQgPSBFRl9DX1VOSVhfU0laRTsNCiANCi0j
aWYgMCAgLyogVUlEL0dJRCBwcmVzZW5jZSBpcyBub3cgc2lnbmFsZWQgYnkg
Y2VudHJhbCBFRl9JWlVOSVgyIGZpZWxkICEgKi8NCisjIGlmIDAgIC8qIFVJ
RC9HSUQgcHJlc2VuY2UgaXMgbm93IHNpZ25hbGVkIGJ5IGNlbnRyYWwgRUZf
SVpVTklYMiBmaWVsZCAhICovDQogICAvKiBsb3dlci1taWRkbGUgZXh0ZXJu
YWwtYXR0cmlidXRlIGJ5dGUgKHVudXNlZCB1bnRpbCBub3cpOg0KICAgICog
ICBoaWdoIGJpdCAgICAgICAgPT4gKGhhdmUgR01UIG1vZC9hY2MgdGltZXMp
ID4+PiBOTyBMT05HRVIgVVNFRCEgPDw8DQogICAgKiAgIHNlY29uZC1oaWdo
IGJpdCA9PiBoYXZlIFVuaXggVUlEL0dJRCBpbmZvDQpAQCAtNDY3LDcgKzUw
NCwxMCBAQA0KICAgICogICAgICAgdmVyc2lvbnMgMi4waiB1cCB0byAyLjB2
LCBmb3IgYWJvdXQgMS41IHllYXJzLg0KICAgICovDQogICB6LT5hdHggfD0g
MHg0MDAwOw0KLSNlbmRpZiAvKiBuZXZlciAqLw0KKyMgZW5kaWYgLyogbmV2
ZXIgKi8NCisNCisjZW5kaWYgLyogPyhVU0VfRUZfVVRfVElNRSB8fCBVU0Vf
RUZfSVpVTklYMikgKi8NCisNCiAgIHJldHVybiBaRV9PSzsNCiB9DQogDQpA
QCAtNjcxLDYgKzcxMSwxNSBAQA0KICMgZW5kaWYgLyogTmV0QlNEICovDQog
IyBlbmRpZiAvKiBCU0QgPiAxOTkxMDMgKi8NCiAjZWxzZQ0KKyNpZmRlZiBf
X0NZR1dJTl9fDQorIyAgZGVmaW5lIE9TX05BTUUgIkN5Z3dpbiINCisjZWxz
ZQ0KKyNpZiBkZWZpbmVkKGk2ODYpIHx8IGRlZmluZWQoX19pNjg2KSB8fCBk
ZWZpbmVkKF9faTY4Nl9fKQ0KKyMgIGRlZmluZSBPU19OQU1FICJJbnRlbCA2
ODYiDQorI2Vsc2UNCisjaWYgZGVmaW5lZChpNTg2KSB8fCBkZWZpbmVkKF9f
aTU4NikgfHwgZGVmaW5lZChfX2k1ODZfXykNCisjICBkZWZpbmUgT1NfTkFN
RSAiSW50ZWwgNTg2Ig0KKyNlbHNlDQogI2lmIGRlZmluZWQoaTQ4NikgfHwg
ZGVmaW5lZChfX2k0ODYpIHx8IGRlZmluZWQoX19pNDg2X18pDQogIyAgZGVm
aW5lIE9TX05BTUUgIkludGVsIDQ4NiINCiAjZWxzZQ0KQEAgLTcyMCw2ICs3
NjksOSBAQA0KICNlbmRpZiAvKiBQeXJhbWlkICovDQogI2VuZGlmIC8qIDM4
NiAqLw0KICNlbmRpZiAvKiA0ODYgKi8NCisjZW5kaWYgLyogNTg2ICovDQor
I2VuZGlmIC8qIDY4NiAqLw0KKyNlbmRpZiAvKiBDeWd3aW4gKi8NCiAjZW5k
aWYgLyogQlNEICovDQogI2VuZGlmIC8qIFNDTyBYZW5peCAqLw0KICNlbmRp
ZiAvKiBTQ08gVW5peCAqLw0KZGlmZiAtcnUgemlwMjRoL3VuaXgvemlwdXAu
aCB6aXAtbmV3L3VuaXgvemlwdXAuaA0KLS0tIHppcDI0aC91bml4L3ppcHVw
LmgJU3VuIE5vdiAwNyAwNTo1MjoxMiAxOTk5DQorKysgemlwLW5ldy91bml4
L3ppcHVwLmgJU2F0IE5vdiAyMiAxMjo0MDowMCAyMDAzDQpAQCAtMSw1ICsx
LDUgQEANCiAvKg0KLSAgQ29weXJpZ2h0IChjKSAxOTkwLTE5OTkgSW5mby1a
SVAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAgQ29weXJpZ2h0IChjKSAx
OTkwLTIwMDMgSW5mby1aSVAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KIA0K
ICAgU2VlIHRoZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFLCB2ZXJzaW9u
IDE5OTktT2N0LTA1IG9yIGxhdGVyDQogICAodGhlIGNvbnRlbnRzIG9mIHdo
aWNoIGFyZSBhbHNvIGluY2x1ZGVkIGluIHppcC5oKSBmb3IgdGVybXMgb2Yg
dXNlLg0KQEAgLTksNyArOSwxMCBAQA0KICNpZm5kZWYgT19SRE9OTFkNCiAj
ICBkZWZpbmUgT19SRE9OTFkgMA0KICNlbmRpZg0KLSNkZWZpbmUgZmhvdyBP
X1JET05MWQ0KKyNpZm5kZWYgT19CSU5BUlkNCisjICBkZWZpbmUgT19CSU5B
UlkgMA0KKyNlbmRpZg0KKyNkZWZpbmUgZmhvdyAoT19SRE9OTFl8T19CSU5B
UlkpDQogI2RlZmluZSBmYmFkICgtMSkNCiB0eXBlZGVmIGludCBmdHlwZTsN
CiAjZGVmaW5lIHpvcGVuKG4scCkgb3BlbihuLHApDQpkaWZmIC1ydSB6aXAy
NGgvd2luMzIvbWFrZWZpbGUuYm9yIHppcC1uZXcvd2luMzIvbWFrZWZpbGUu
Ym9yDQotLS0gemlwMjRoL3dpbjMyL21ha2VmaWxlLmJvcglTYXQgSmFuIDE5
IDA0OjQ4OjI4IDIwMDINCisrKyB6aXAtbmV3L3dpbjMyL21ha2VmaWxlLmJv
cglNb24gTm92IDI0IDEyOjEyOjAwIDIwMDMNCkBAIC0zOSw3ICszOSw3IEBA
DQogIyBBbHRob3VnaCwgSSBkaWQgbm90IGRpc2FibGUgdGhpcyB3YXJuaW5n
LCBiZWNhdXNlLCBnZW5lcmFsbHkgc3BlYWtpbmcsDQogIyBpdCBjb25jZXJu
cyBjb3JyZWN0IEMgY29kaW5nLiBbY29tbWVudCBieTogQ29zbWluIFRydXRh
XQ0KIA0KLUNGTEFHUz0tdyAtdy1hdXMgLXctY2NjIC13LXBhciAtdy1zaWcg
LU8yIC1JLiAtRFdJTjMyIC1ETVNET1MgJChMT0MpDQorQ0ZMQUdTPS13IC13
LWF1cyAtdy1jY2MgLXctcGFyIC13LXNpZyAtTzIgLUkuIC1EV0lOMzIgJChM
T0MpDQogVVRJTEZMQUdTPS1EVVRJTCAkKENGTEFHUykgLW8NCiANCiAhaWZk
ZWYgVVNFVEFTTTE2DQpAQCAtMTkzLDMgKzE5Myw0IEBADQogY2xlYW46DQog
CWRlbCAqLm9iag0KIAlkZWwgKi5leGUNCisJZGVsICoudGRzDQpkaWZmIC1y
dSB6aXAyNGgvd2luMzIvbWFrZWZpbGUudzMyIHppcC1uZXcvd2luMzIvbWFr
ZWZpbGUudzMyDQotLS0gemlwMjRoL3dpbjMyL21ha2VmaWxlLnczMglTYXQg
RmViIDEyIDA2OjA4OjEyIDIwMDANCisrKyB6aXAtbmV3L3dpbjMyL21ha2Vm
aWxlLnczMglNb24gTm92IDI0IDEyOjA3OjQ0IDIwMDMNCkBAIC0xOSw3ICsx
OSw3IEBADQogDQogIyAtLS0tLS0tLS0tLS0tIDMyLWJpdCBNaWNyb3NvZnQg
VmlzdWFsIEMrKyAtLS0tLS0tLS0tLS0tDQogQ0M9Y2wgLW5vbG9nbw0KLUNG
TEFHUz0tVzMgLU8yIC1EV0lOMzIgLURNU0RPUyAkKENGTEdfQVNNKSAkKExP
QykNCitDRkxBR1M9LVczIC1PMiAtRFdJTjMyICQoQ0ZMR19BU00pICQoTE9D
KQ0KIFVUSUxGTEFHUz0kKENGTEFHUykgLURVVElMIC1GbyRADQogDQogIyBS
ZW1vdmUgIi1jb2ZmIiBmcm9tIEFTRkxBR1MgaWYgeW91IGRvIG5vdCBoYXZl
IE1BU00gNi4xMS4NCkBAIC0xNDAsMyArMTQwLDcgQEANCiANCiB6aXBzcGxp
dC5leGU6ICQoT0JKUykNCiAJJChMRCkgJChMREZMQUdTKSAkKE9CSlMpDQor
DQorY2xlYW46DQorCWRlbCAqLm9iag0KKwlkZWwgKi5leGUNCmRpZmYgLXJ1
IHppcDI0aC93aW4zMi9vc2RlcC5oIHppcC1uZXcvd2luMzIvb3NkZXAuaA0K
LS0tIHppcDI0aC93aW4zMi9vc2RlcC5oCVNhdCBKYW4gMTkgMDQ6NDg6Mjgg
MjAwMg0KKysrIHppcC1uZXcvd2luMzIvb3NkZXAuaAlNb24gTm92IDI0IDEx
OjU2OjM0IDIwMDMNCkBAIC0xOSwxMCArMTksNiBAQA0KICMgIGRlZmluZSBX
QVRDT01DXzM4Ng0KICNlbmRpZg0KIA0KLSNpZiAoZGVmaW5lZChfX0NZR1dJ
TjMyX18pICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pKQ0KLSMgIGRlZmluZSBf
X0NZR1dJTl9fICAgICAgICAgICAgLyogY29tcGF0aWJpbGl0eSBmb3IgQ3ln
V2luIEIxOSBhbmQgb2xkZXIgKi8NCi0jZW5kaWYNCi0NCiAvKiBlbmFibGUg
bXVsdGlieXRlIGNoYXJhY3RlciBzZXQgc3VwcG9ydCBieSBkZWZhdWx0ICov
DQogI2lmbmRlZiBfTUJDUw0KICMgIGRlZmluZSBfTUJDUw0KZGlmZiAtcnUg
emlwMjRoL3ppcC5jIHppcC1uZXcvemlwLmMNCi0tLSB6aXAyNGgvemlwLmMJ
U3VuIEZlYiAwMyAwNTowODowMCAyMDAyDQorKysgemlwLW5ldy96aXAuYwlT
dW4gTm92IDIzIDIzOjE4OjAwIDIwMDMNCkBAIC0xLDUgKzEsNSBAQA0KIC8q
DQotICBDb3B5cmlnaHQgKGMpIDE5OTAtMjAwMiBJbmZvLVpJUC4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuDQorICBDb3B5cmlnaHQgKGMpIDE5OTAtMjAwMyBJ
bmZvLVpJUC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogDQogICBTZWUgdGhl
IGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0UsIHZlcnNpb24gMjAwMC1BcHIt
MDkgb3IgbGF0ZXINCiAgICh0aGUgY29udGVudHMgb2Ygd2hpY2ggYXJlIGFs
c28gaW5jbHVkZWQgaW4gemlwLmgpIGZvciB0ZXJtcyBvZiB1c2UuDQpAQCAt
NTE1LDYgKzUxNSw5IEBADQogI2VuZGlmDQogI2lmZGVmIERFQlVHDQogICAg
ICJERUJVRyIsDQorI2VuZGlmDQorI2lmIGRlZmluZWQoVVNFX0VGX0laVU5J
WCkgfHwgZGVmaW5lZChVU0VfRUZfSVpVTklYMikNCisgICAgIlVTRV9FRl9J
WlVOSVgiLA0KICNlbmRpZg0KICNpZmRlZiBVU0VfRUZfVVRfVElNRQ0KICAg
ICAiVVNFX0VGX1VUX1RJTUUiLA0K

--1686162181-2072418402-1069715579=:24829
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="unz551c-cos.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.58.0311241812591.24829-RRbLuHh/[email protected]>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME="unz551c-cos.diff"

ZGlmZiAtcnUgdW56NTUxYy91bml4L01ha2VmaWxlIHVuemlwLW5ldy91bml4
L01ha2VmaWxlDQotLS0gdW56NTUxYy91bml4L01ha2VmaWxlCVdlZCBNYXkg
MDcgMTg6NTA6MTAgMjAwMw0KKysrIHVuemlwLW5ldy91bml4L01ha2VmaWxl
CVNhdCBOb3YgMjIgMTk6MzQ6MDAgMjAwMw0KQEAgLTEyNCw5ICsxMjQsOSBA
QA0KIFNZU1RFTVNHID0gZ2VuZXJpYyBnZW5lcmljMiBnZW5lcmljMyBnZW5l
cmljX3psaWIgZ2VuZXJpY19zaGxpYg0KIFNZU1RFTVMxID0gMzg2aSAzQngg
NzMwMCA3MzAwX2djYyBhaXggYWl4X3J0IGFtZGFobCBhbWRhaGxfZWZ0IGFw
b2xsbyBhdmlpb24NCiBTWVNURU1TMiA9IGJzZCBic2RpIGJzZGlfbm9hc20g
YnVsbCBjb2hlcmVudCBjb252ZXggY3JheSBjcmF5X29wdCBjeWJlcl9zZ2kN
Ci1TWVNURU1TMyA9IGRlYyBkbml4IGVuY29yZSBldGEgZnJlZWJzZCBnY2Mg
Z291bGQgaGs2OCBocCBocHV4IGlzYyBpc2NfZ2NjDQorU1lTVEVNUzMgPSBj
eWd3aW4gZGVjIGRuaXggZW5jb3JlIGV0YSBmcmVlYnNkIGdjYyBnb3VsZCBo
azY4IGhwIGhwdXggaXNjIGlzY19nY2MNCiBTWVNURU1TNCA9IGlzaSBsaW51
eCBsaW51eF9kb3MgbGludXhfbm9hc20gbGludXhfc2hsaWIgbGludXhfc2hs
aWJ6IGx5bngNCi1TWVNURU1TNSA9IG1heG9zeCBtYWNvc3hfZ2NjIG1pbml4
IG1pcHMgbXBlaXggbmV4dCBuZXh0MTAgbmV4dDJ4IG5leHQzeA0KK1NZU1RF
TVM1ID0gbWFjb3N4IG1hY29zeF9nY2MgbWluaXggbWlwcyBtcGVpeCBuZXh0
IG5leHQxMCBuZXh0MnggbmV4dDN4DQogU1lTVEVNUzYgPSBuZXh0ZmF0IG9z
ZjEgcGl4ZWwgcHR4IHB5cmFtaWQgcW54bnRvIHJlYWxpeCByZWd1bHVzIHJz
NjAwMCBzY28NCiBTWVNURU1TNyA9IHNjb19kb3Mgc2NvX3NsIHNjb194Mjg2
IHNlcXVlbnQgc2dpIHNvbGFyaXMgc29sYXJpc19wa2cgc3RhcmRlbnQNCiBT
WVNURU1TOCA9IHN0ZWxsYXIgc3Vub3MzIHN1bm9zNCBzeXN2IHN5c3ZfZ2Nj
IHN5c3Y2MzAwIHRhaG9lIHRpX3N5c3YgdWx0cml4DQpAQCAtNDI0LDcgKzQy
NCw3IEBADQogCUBlY2hvICIiDQogCXJtIC1mICQoVU5aSVBTKSAkKE9CSlMp
ICQoT0JKRikgJChPQkpYKSBhcGkkTyBhcGloZWxwJE8gY3JjX2djYyRPIFwN
CiAJICBjcmNfc3lzdiRPIHVuemlwc3RiJE8gY3J5cHRfLmMgZXh0cmFjdF8u
YyBnbG9iYWxzXy5jIGluZmxhdGVfLmMgXA0KLQkgIHR0eWlvXy5jIGNyY19p
Mzg2LnMgbXNkb3NfLmMgcHJvY2Vzc18uYyB1bml4Xy5jIHVuemlwc2Z4LmMN
CisJICB0dHlpb18uYyBtc2Rvc18uYyBwcm9jZXNzXy5jIHVuaXhfLmMgdW56
aXBzZnguYw0KIAlybSAtcmYgLi8kKFBLR0RJUikNCiANCiAjIFBhY2thZ2Ug
Z2VuZXJhdGlvbiBpbnRlcmZhY2UgKGJ5IEouQnVzaCkuICBPcmlnaW5hbGx5
IHRlc3RlZCB1bmRlciBTdW4NCkBAIC03MDUsNiArNzA1LDEyIEBADQogY3li
ZXJfc2dpOgl1bml4X21ha2UNCiAJJChNQUtFKSB1bnppcHMgQ0Y9IiQoQ0Yp
IC1JL3Vzci9pbmNsdWRlL2JzZCJcDQogCSBMRj0iLWxic2QgJChMRikiIFNM
PSItbGJzZCAkKFNMKSINCisNCitjeWd3aW46CQl1bml4X21ha2UNCisJJChN
QUtFKSB1bnppcHMgQ0M9Z2NjIExEPWdjYyBBUz1nY2NcDQorCSBDRj0iLU8z
IC1JLiAtREFTTV9DUkMgJChMT0MpIlwNCisJIEFGPSItRGkzODYgJChBRiki
IENSQzMyPWNyY19nY2NcDQorCSBFPSIuZXhlIiBDUD0iY3AiIExOPSJsbiAt
cyINCiANCiAjIDY4MHgwLCBESUFCIGRuaXggNS4yLzUuMyAoYSBTd2VkaXNo
IFN5c3RlbSBWIGNsb25lKQ0KICMNCmRpZmYgLXJ1IHVuejU1MWMvdW5peC91
bml4LmMgdW56aXAtbmV3L3VuaXgvdW5peC5jDQotLS0gdW56NTUxYy91bml4
L3VuaXguYwlTYXQgTWF5IDEwIDE0OjExOjMwIDIwMDMNCisrKyB1bnppcC1u
ZXcvdW5peC91bml4LmMJTW9uIE5vdiAyNCAxMTo0MDowMCAyMDAzDQpAQCAt
NTA3LDcgKzUwNyw3IEBADQogICAgICAgICAgICAgICAgIGxhc3RzZW1pID0g
KGNoYXIgKilOVUxMOyAvKiBsZWF2ZSBkaXJlY3Rvcnkgc2VtaS1jb2xvbnMg
YWxvbmUgKi8NCiAgICAgICAgICAgICAgICAgYnJlYWs7DQogDQotI2lmZGVm
IF9fQ1lHV0lOX18gICAvKiBDeWdXaW4gcnVucyBvbiBXaW4zMiwgYXBwbHkg
RkFUL05URlMgZmlsZW5hbWUgcnVsZXMgKi8NCisjaWZkZWYgX19DWUdXSU5f
XyAgIC8qIEN5Z3dpbiBydW5zIG9uIFdpbjMyLCBhcHBseSBGQVQvTlRGUyBm
aWxlbmFtZSBydWxlcyAqLw0KICAgICAgICAgICAgIGNhc2UgJzonOiAgICAg
ICAgIC8qIGRyaXZlIHNwZWMgbm90IHN0b3JlZCwgc28gbm8gY29sb24gYWxs
b3dlZCAqLw0KICAgICAgICAgICAgIGNhc2UgJ1xcJzogICAgICAgIC8qICdc
XCcgbWF5IGNvbWUgYXMgbm9ybWFsIGZpbGVuYW1lIGNoYXIgKG5vdCAqLw0K
ICAgICAgICAgICAgIGNhc2UgJzwnOiAgICAgICAgIC8qICBkaXIgc2VwIGNo
YXIhKSBmcm9tIHVuaXgtbGlrZSBmaWxlIHN5c3RlbSAqLw0KQEAgLTEzNTUs
NiArMTM1NSwxNSBAQA0KICNpZmRlZiBfXzM4NkJTRF9fDQogICAgICAgKEJT
RDRfNCA9PSAxKT8gIiAoMzg2QlNELCBwb3N0LTQuNCByZWxlYXNlKSIgOiAi
ICgzODZCU0QpIiwNCiAjZWxzZQ0KKyNpZmRlZiBfX0NZR1dJTl9fDQorICAg
ICAgIiAoQ3lnd2luKSIsDQorI2Vsc2UNCisjaWYgZGVmaW5lZChpNjg2KSB8
fCBkZWZpbmVkKF9faTY4NikgfHwgZGVmaW5lZChfX2k2ODZfXykNCisgICAg
ICAiIChJbnRlbCA2ODYpIiwNCisjZWxzZQ0KKyNpZiBkZWZpbmVkKGk1ODYp
IHx8IGRlZmluZWQoX19pNTg2KSB8fCBkZWZpbmVkKF9faTU4Nl9fKQ0KKyAg
ICAgICIgKEludGVsIDU4NikiLA0KKyNlbHNlDQogI2lmIGRlZmluZWQoaTQ4
NikgfHwgZGVmaW5lZChfX2k0ODYpIHx8IGRlZmluZWQoX19pNDg2X18pDQog
ICAgICAgIiAoSW50ZWwgNDg2KSIsDQogI2Vsc2UNCkBAIC0xNDA0LDYgKzE0
MTMsOSBAQA0KICNlbmRpZiAvKiBQeXJhbWlkICovDQogI2VuZGlmIC8qIDM4
NiAqLw0KICNlbmRpZiAvKiA0ODYgKi8NCisjZW5kaWYgLyogNTg2ICovDQor
I2VuZGlmIC8qIDY4NiAqLw0KKyNlbmRpZiAvKiBDeWd3aW4gKi8NCiAjZW5k
aWYgLyogMzg2QlNEICovDQogI2VuZGlmIC8qIEJTREkgQlNELzM4NiAqLw0K
ICNlbmRpZiAvKiBOZXRCU0QgKi8NCmRpZmYgLXJ1IHVuejU1MWMvdW56aXAu
aCB1bnppcC1uZXcvdW56aXAuaA0KLS0tIHVuejU1MWMvdW56aXAuaAlUaHUg
TWF5IDA4IDE5OjU1OjQyIDIwMDMNCisrKyB1bnppcC1uZXcvdW56aXAuaAlT
YXQgTm92IDIyIDE4OjQ0OjAwIDIwMDMNCkBAIC0xOTcsMTEgKzE5NywxMiBA
QA0KICMgIGRlZmluZSBNQUNPUw0KICNlbmRpZg0KIA0KLS8qIHVzZSBwcm90
b3R5cGVzIGFuZCBBTlNJIGxpYnJhcmllcyBpZiBfX1NURENfXywgb3IgTWlj
cm9zb2Z0IG9yIEJvcmxhbmQgQywgb3INCi0gKiBTaWxpY29uIEdyYXBoaWNz
LCBvciBDb252ZXg/LCBvciBJQk0gQyBTZXQvMiwgb3IgR05VIGdjYy9lbXgs
IG9yIFdhdGNvbSBDLA0KLSAqIG9yIE1hY2ludG9zaCwgb3IgV2luZG93cyBO
VCwgb3IgU2VxdWVudCwgb3IgQXRhcmkgb3IgSUJNIFJTLzYwMDAuDQorLyog
dXNlIHByb3RvdHlwZXMgYW5kIEFOU0kgbGlicmFyaWVzIGlmIF9fU1REQ19f
LCBvciBNUy1ET1MsIG9yIE9TLzIsIG9yIFdpbjMyLA0KKyAqIG9yIElCTSBD
IFNldC8yLCBvciBCb3JsYW5kIEMsIG9yIFdhdGNvbSBDLCBvciBHTlUgZ2Nj
IChlbXggb3IgQ3lnd2luKSwNCisgKiBvciBNYWNpbnRvc2gsIG9yIFNlcXVl
bnQsIG9yIEF0YXJpLCBvciBJQk0gUlMvNjAwMCwgb3IgU2lsaWNvbiBHcmFw
aGljcywNCisgKiBvciBDb252ZXg/LCBvciBCZU9TLg0KICAqLw0KLSNpZiAo
ZGVmaW5lZChfX1NURENfXykgfHwgZGVmaW5lZChNU0RPUykgfHwgZGVmaW5l
ZChXSU4zMikgfHwgZGVmaW5lZChfX0VNWF9fKSkNCisjaWYgKGRlZmluZWQo
X19TVERDX18pIHx8IGRlZmluZWQoTVNET1MpIHx8IGRlZmluZWQoT1MyKSB8
fCBkZWZpbmVkKFdJTjMyKSkNCiAjICBpZm5kZWYgUFJPVE8NCiAjICAgIGRl
ZmluZSBQUk9UTw0KICMgIGVuZGlmDQpAQCAtMjEwLDYgKzIxMSwxNCBAQA0K
ICMgIGVuZGlmDQogI2VuZGlmDQogI2lmIChkZWZpbmVkKF9fSUJNQ19fKSB8
fCBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX1dBVENPTUNf
XykpDQorIyAgaWZuZGVmIFBST1RPDQorIyAgICBkZWZpbmUgUFJPVE8NCisj
ICBlbmRpZg0KKyMgIGlmbmRlZiBNT0RFUk4NCisjICAgIGRlZmluZSBNT0RF
Uk4NCisjICBlbmRpZg0KKyNlbmRpZg0KKyNpZiAoZGVmaW5lZChfX0VNWF9f
KSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pKQ0KICMgIGlmbmRlZiBQUk9UTw0K
ICMgICAgZGVmaW5lIFBST1RPDQogIyAgZW5kaWYNCmRpZmYgLXJ1IHVuejU1
MWMvdW56cHJpdi5oIHVuemlwLW5ldy91bnpwcml2LmgNCi0tLSB1bno1NTFj
L3VuenByaXYuaAlTdW4gTWFyIDIzIDE2OjIxOjI2IDIwMDMNCisrKyB1bnpp
cC1uZXcvdW56cHJpdi5oCVNhdCBOb3YgMjIgMTk6NTU6MDAgMjAwMw0KQEAg
LTkzLDggKzkzLDggQEANCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSovDQogDQogLyogU29tZSAiZnJlZSIgY29tcGlsZXIgZGlzdHJpYnV0
aW9ucyBmb3IgV2luMzIvaTM4NiBzeXN0ZW1zIHRyeSB0bw0KLSAqIHN1cHBv
cnQgYm90aCBVbml4IGFuZCBXaW4zMiBlbnZpcm9ubWVudHMuIEZvciBJbmZv
LVpJUCBwdXJwb3NlLA0KLSAqIHN1cHBvcnQgZm9yIHRoZSAibmF0aXZlIiBm
aWxlIHN5c3RlbSBmZWF0dXJlcyBpcyBwcmVmZXJlZC4uLg0KKyAqIHN1cHBv
cnQgYm90aCBVbml4IGFuZCBXaW4zMiBlbnZpcm9ubWVudHMuDQorICogSW5m
by1aSVAgcHJlZmVycyB0byBzdXBwb3J0IHRoZSAibmF0aXZlIiBmaWxlIHN5
c3RlbSBmZWF0dXJlcy4uLg0KICAqLw0KICNpZiAoZGVmaW5lZChXSU4zMikg
JiYgZGVmaW5lZChVTklYKSkNCiAjICB1bmRlZiBVTklYDQpAQCAtMzM0LDYg
KzMzNCwxOCBAQA0KICMgIGRlZmluZSBJTlRfU1BSSU5URg0KICMgIGRlZmlu
ZSBTWU1MSU5LUw0KICMgIGRlZmluZSBNQUlOIG1haW5fc3R1YiAgICAgICAg
ICAvKiBub3cgdGhhdCB3ZSdyZSB1c2luZyBhIHdyYXBwZXIuLi4gKi8NCisj
ZW5kaWYNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
KyAgICBDeWd3aW4gc2VjdGlvbjoNCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSovDQorDQorI2lmZGVmIF9fQ1lHV0lOX18NCisjICBkZWZp
bmUgRElSRU5UDQorIyAgZGVmaW5lIEhBVkVfVEVSTUlPU19IDQorIyAgaWZu
ZGVmIHRpbWV6b25lDQorIyAgICBkZWZpbmUgdGltZXpvbmUgX3RpbWV6b25l
DQorIyAgZW5kaWYNCiAjZW5kaWYNCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KZGlmZiAtcnUgdW56NTUxYy93aW4zMi93MzJjZmcu
aCB1bnppcC1uZXcvd2luMzIvdzMyY2ZnLmgNCi0tLSB1bno1NTFjL3dpbjMy
L3czMmNmZy5oCVNhdCBKYW4gMDQgMTA6MDk6MTYgMjAwMw0KKysrIHVuemlw
LW5ldy93aW4zMi93MzJjZmcuaAlTYXQgTm92IDIyIDE5OjUyOjMwIDIwMDMN
CkBAIC0xMywxNiArMTMsMTEgQEANCiAjaWZuZGVmIF9fdzMyY2ZnX2gNCiAj
ZGVmaW5lIF9fdzMyY2ZnX2gNCiANCi0jaWYgKGRlZmluZWQoX19DWUdXSU4z
Ml9fKSAmJiAhZGVmaW5lZChfX0NZR1dJTl9fKSkNCi0jICBkZWZpbmUgX19D
WUdXSU5fXyAgICAgICAgICAgIC8qIGNvbXBhdGliaWxpdHkgZm9yIEN5Z1dp
biBCMTkgYW5kIG9sZGVyICovDQotI2VuZGlmDQotDQogI2lmZGVmIF9fQ1lH
V0lOX18NCi0vKiBUaG9zZSBJZGlvdHMgYXQgQ3lnbnVzIGhhdmUgc3RhcnRl
ZCB0byBzZXQgIlVuaXgiIGlkZW50aWZpZXJzDQotICogZm9yIGEgV2luMzIg
Y29tcGlsZXIgLi4uDQotICovDQotIyAgaWZkZWYgVU5JWA0KLSMgICAgdW5k
ZWYgVU5JWA0KKy8qIFdlIHJlZ2FyZCBDeWd3aW4gYXMgYSAiV2luMzIgbmF0
aXZlIiBmaWxlIHN5c3RlbS4gKi8NCisjICB1bmRlZiBVTklYDQorIyAgaWZu
ZGVmIFdJTjMyDQorIyAgICBkZWZpbmUgV0lOMzINCiAjICBlbmRpZg0KICNl
bmRpZg0KIA0K

--1686162181-2072418402-1069715579=:24829--