<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugs.gentoo.org/bugzilla.dtd">

<bugzilla version="2.22.7"
          urlbase="http://bugs.gentoo.org/"
          maintainer="bugzilla@gentoo.org"
>

    <bug>
          <bug_id>120867</bug_id>
          
          <creation_ts>2006-01-29 14:13 0000</creation_ts>
          <short_desc>dev-db/firebird-1.5.2 fails with gcc-4.0</short_desc>
          <delta_ts>2006-08-17 00:04:22 0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Gentoo Linux</product>
          <component>GCC Porting</component>
          <version>2005.1</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>117482</blocked>
          
          <everconfirmed>1</everconfirmed>
          <reporter>nichoj@gentoo.org</reporter>
          <assigned_to>sekretarz@gentoo.org</assigned_to>
          <cc>dirtyepic@gentoo.org</cc>
    
    <cc>fauli@gentoo.org</cc>
    
    <cc>h.mth@web.de</cc>
    
    <cc>halcy0n@gentoo.org</cc>
    
    <cc>tiago.freire@gmail.com</cc>

      

      
          <long_desc isprivate="0">
            <who>nichoj@gentoo.org</who>
            <bug_when>2006-01-29 14:13:22 0000</bug_when>
            <thetext>I get the following when emerging firebird-1.5.2:

make[3]: Entering directory `/var/tmp/portage/firebird-1.5.2/work/firebird-1.5.2.4731/src&apos;
g++ -march=k8 -O2 -pipe -march=k8 -O2 -pipe -I../src/include/gen -I../src/include -fno-omit-frame-pointer -DNDEBUG -DLINUX -DAMD64 -MMD -fPIC -fmessage-length=0  -DPROD_BUILD -march=k8 -O2 -pipe -I../src/include/gen -I../src/include -fno-omit-frame-pointer -DNDEBUG -DLINUX -DAMD64 -MMD -fPIC -fmessage-length=0  -DPROD_BUILD -I../src/include/gen -I../src/include -fno-omit-frame-pointer -DNDEBUG -DLINUX -DAMD64 -MMD -fPIC -fmessage-length=0  -DPROD_BUILD -march=k8 -O2 -pipe -I../src/include/gen -I../src/include -fno-omit-frame-pointer -DNDEBUG -DLINUX -DAMD64 -MMD -fPIC -fmessage-length=0  -DPROD_BUILD -I../src/include/gen -I../src/include -fno-omit-frame-pointer -DNDEBUG -DLINUX -DAMD64 -MMD -fPIC -fmessage-length=0  -DPROD_BUILD -I../src/include/gen -I../src/include -fno-omit-frame-pointer -DNDEBUG -DLINUX -DAMD64 -MMD -fPIC -fmessage-length=0  -DPROD_BUILD -c ../src/common/classes/alloc.cpp -o ../temp/libfbcommon/common/classes/alloc.o
../src/common/classes/../../include/../common/classes/alloc.h:256: error: </thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>nichoj@gentoo.org</who>
            <bug_when>2006-01-29 14:13:22 0000</bug_when>
            <thetext>I get the following when emerging firebird-1.5.2:

make[3]: Entering directory `/var/tmp/portage/firebird-1.5.2/work/firebird-1.5.2.4731/src&apos;
g++ -march=k8 -O2 -pipe -march=k8 -O2 -pipe -I../src/include/gen -I../src/include -fno-omit-frame-pointer -DNDEBUG -DLINUX -DAMD64 -MMD -fPIC -fmessage-length=0  -DPROD_BUILD -march=k8 -O2 -pipe -I../src/include/gen -I../src/include -fno-omit-frame-pointer -DNDEBUG -DLINUX -DAMD64 -MMD -fPIC -fmessage-length=0  -DPROD_BUILD -I../src/include/gen -I../src/include -fno-omit-frame-pointer -DNDEBUG -DLINUX -DAMD64 -MMD -fPIC -fmessage-length=0  -DPROD_BUILD -march=k8 -O2 -pipe -I../src/include/gen -I../src/include -fno-omit-frame-pointer -DNDEBUG -DLINUX -DAMD64 -MMD -fPIC -fmessage-length=0  -DPROD_BUILD -I../src/include/gen -I../src/include -fno-omit-frame-pointer -DNDEBUG -DLINUX -DAMD64 -MMD -fPIC -fmessage-length=0  -DPROD_BUILD -I../src/include/gen -I../src/include -fno-omit-frame-pointer -DNDEBUG -DLINUX -DAMD64 -MMD -fPIC -fmessage-length=0  -DPROD_BUILD -c ../src/common/classes/alloc.cpp -o ../temp/libfbcommon/common/classes/alloc.o
../src/common/classes/../../include/../common/classes/alloc.h:256: error: void* operator new(size_t, Firebird::MemoryPool&amp;) may not be declared as static
../src/common/classes/../../include/../common/classes/alloc.h:260: error: void* operator new [](size_t, Firebird::MemoryPool&amp;) may not be declared as static
make[3]: *** [../temp/libfbcommon/common/classes/alloc.o] Error 1
make[3]: Leaving directory `/var/tmp/portage/firebird-1.5.2/work/firebird-1.5.2.4731/src&apos;
make[2]: *** [libfbcommon] Error 2
make[2]: Leaving directory `/var/tmp/portage/firebird-1.5.2/work/firebird-1.5.2.4731/src&apos;
make[1]: *** [../gen/firebird/bin/gpre_static] Error 2
make[1]: Leaving directory `/var/tmp/portage/firebird-1.5.2/work/firebird-1.5.2.4731/src&apos;
make: *** [firebird] Error 2

Portage 2.1_pre3-r1 (!/usr/gentoo-x86/profiles/default-linux/amd64/2005.1, gcc-4.0.2, glibc-2.3.6-r2, 2.6.13-gentoo-r3 x86_64)
=================================================================
System uname: 2.6.13-gentoo-r3 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 4400+
Gentoo Base System version 1.12.0_pre15
distcc 2.18.3 x86_64-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled]
ccache version 2.4 [disabled]
dev-lang/python:     2.3.5, 2.4.2
sys-apps/sandbox:    1.2.17
sys-devel/autoconf:  2.13, 2.59-r7
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1
sys-devel/binutils:  2.16.1-r1
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.11-r3
ACCEPT_KEYWORDS=&quot;amd64 ~amd64&quot;
AUTOCLEAN=&quot;yes&quot;
CBUILD=&quot;x86_64-pc-linux-gnu&quot;
CFLAGS=&quot;-march=k8 -O2 -pipe&quot;
CHOST=&quot;x86_64-pc-linux-gnu&quot;
CONFIG_PROTECT=&quot;/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/share/config /var/qmail/control&quot;
CONFIG_PROTECT_MASK=&quot;/etc/gconf /etc/env.d&quot;
CXXFLAGS=&quot;-march=k8 -O2 -pipe&quot;
DISTDIR=&quot;/development/distfiles&quot;
FEATURES=&quot;autoaddcvs autoconfig cvs digest distlocks multilib-strict sandbox sfperms sign strict&quot;
GENTOO_MIRRORS=&quot;http://mirrors.acm.cs.rpi.edu/gentoo&quot;
MAKEOPTS=&quot;-j3&quot;
PKGDIR=&quot;/usr/local/packages&quot;
PORTAGE_TMPDIR=&quot;/var/tmp&quot;
PORTDIR=&quot;/usr/portage&quot;
PORTDIR_OVERLAY=&quot;/development/overlays/java-experimental /development/overlays/free-java-overlay /development/overlays/chewi-overlay /development/overlays/axxo-overlay /development/overlays/maven-overlay /development/overlays/crossdev-overlay&quot;
SYNC=&quot;cvs://nichoj@cvs.gentoo.org:/var/cvsroot&quot;
USE=&quot;amd64 X aac adns alsa apache2 arts audiofile automount avi bash-completion berkdb bitmap-fonts bzip2 cairo cdr crypt cscope cups curl dbus devmap divx4linux dvd dvdr dvi eds emboss encode exif expat faad fam ffmpeg firefox flac foomaticdb fortran gdbm gif gimpprint glitz glut gmp gnome gpm gstreamer gtk gtk2 gtkhtml hal howl idn imagemagick imlib ipv6 java javamail jpeg kde lcms ldap libclamav libwww lzw lzw-tiff mad matroska mhash mng motif mozilla mp3 mpeg mysql nautilus ncurses nls nptl nsplugin nvidia offensive ogg oggvorbis opengl pam pcre pda pdflib perl php png postgres python qt quicktime readline ruby samba sdl sox spell sqlite ssl subversion svg syslog tcpd tetex theora tiff truetype truetype-fonts type1-fonts udev unicode usb userlocales vorbis wxwindows xine xml2 xmms xpm xv xvid zlib elibc_glibc kernel_linux userland_GNU&quot;
Unset:  ASFLAGS, CTARGET, LANG, LC_ALL, LDFLAGS, LINGUAS</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>fauli@gentoo.org</who>
            <bug_when>2006-01-30 15:28:37 0000</bug_when>
            <thetext>The firebird team is not going to support gcc 4.x for firebird &lt; 2.0
I could not find a distribution which claims to have successfully compiled 1.x with gcc 4.x.

http://sourceforge.net/mailarchive/message.php?msg_id=14504848</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>h.mth@web.de</who>
            <bug_when>2006-02-26 03:26:45 0000</bug_when>
            <thetext>Created an attachment (id=80752)
nearly complete gcc4 patch

part from debian svn
http://svn.debian.org/wsvn/pkg-firebird/trunk/debian/patches/?rev=0&amp;sc=1

fixed errors likewise

src/burp/std_desc.h from cvs

error:
g++  -DBOOT_BUILD -I../src/include/gen -I../src/include -fno-omit-frame-pointer -fno-builtin -DNDEBUG -DLINUX -MMD -fPIC  -DPROD_BUILD -c ../src/burp/burp.cpp -o ../temp/static.gbak/burp/burp.o
../src/burp/../burp/std_desc.h:65: Fehler: expected unqualified-id before </thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>h.mth@web.de</who>
            <bug_when>2006-02-26 03:26:45 0000</bug_when>
            <thetext>Created an attachment (id=80752)
nearly complete gcc4 patch

part from debian svn
http://svn.debian.org/wsvn/pkg-firebird/trunk/debian/patches/?rev=0&amp;sc=1

fixed errors likewise

src/burp/std_desc.h from cvs

error:
g++  -DBOOT_BUILD -I../src/include/gen -I../src/include -fno-omit-frame-pointer -fno-builtin -DNDEBUG -DLINUX -MMD -fPIC  -DPROD_BUILD -c ../src/burp/burp.cpp -o ../temp/static.gbak/burp/burp.o
../src/burp/../burp/std_desc.h:65: Fehler: expected unqualified-id before »-« token
make[3]: *** [../temp/static.gbak/burp/burp.o] Fehler 1

No idea how to solve this last error. :)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>jakub@gentoo.org</who>
            <bug_when>2006-03-13 14:58:13 0000</bug_when>
            <thetext>*** Bug 126077 has been marked as a duplicate of this bug. ***</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>halcy0n@gentoo.org</who>
            <bug_when>2006-03-16 23:07:42 0000</bug_when>
            <thetext>Created an attachment (id=82338)
gcc-4.0 patch

This should fix the last piece that was broken.

Are there any plans to fix this, or just recommend upgrading to firebird-2.x?  I plan on moving gcc-4.1 into ~arch soon, so you may want to think about it :)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>h.mth@web.de</who>
            <bug_when>2006-03-17 07:06:22 0000</bug_when>
            <thetext>Mark:
That is how I got it to compile, too. But now INVALID_HANDLE_VALUE is undefined. Is that good?
However, I would recommend upgrading to firebird-2.x because of upstream support for gcc4.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>halcy0n@gentoo.org</who>
            <bug_when>2006-03-17 08:34:17 0000</bug_when>
            <thetext>(In reply to comment #5)
&gt; Mark:
&gt; That is how I got it to compile, too. But now INVALID_HANDLE_VALUE is
&gt; undefined. Is that good?

INVALID_HANDLE_VALUE is #define&apos;d in another file, which is why you got the error in the first place.  If you got this from upstream, I&apos;m assuming they finally did it the right way and decided to use a const instead.  Either way works, and it would have failed at compile time if there was a problem...though you should still test it and let me know if anything explodes. :)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>halcy0n@gentoo.org</who>
            <bug_when>2006-03-31 21:50:47 0000</bug_when>
            <thetext>Does this break anything, or can you apply this patch Karol?  Or should I?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dirtyepic@gentoo.org</who>
            <bug_when>2006-07-22 08:26:12 0000</bug_when>
            <thetext>ping.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>sekretarz@gentoo.org</who>
            <bug_when>2006-08-05 15:44:32 0000</bug_when>
            <thetext>Created an attachment (id=93546)
patch to fix compilation problems with gcc-4.1 on amd64

This patch fixes problems with firebird and gcc-4.1 on amd64. Mainly there&apos;re casting problems. This patch will be merged with gcc-4.0.patch and added to portage today</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>sekretarz@gentoo.org</who>
            <bug_when>2006-08-07 00:57:45 0000</bug_when>
            <thetext>Fixed in portage, thanks for help</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>dirtyepic@gentoo.org</who>
            <bug_when>2006-08-16 16:31:29 0000</bug_when>
            <thetext>any chance we could get this patch in 1.5.3?  this is blocking gcc 4.1 stabilization on x86 and amd64.  if it&apos;s better to stabilize 1.5.3-r1, lemme know and i&apos;ll file the bug. :)</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>fauli@gentoo.org</who>
            <bug_when>2006-08-17 00:04:22 0000</bug_when>
            <thetext>Please use bug #140707 for the stabilisation bugs if you want to bring a GCC 4.1 capable version into the stable tree...and that might be a different bug.</thetext>
          </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80752</attachid>
            <date>2006-02-26 03:26 0000</date>
            <desc>nearly complete gcc4 patch</desc>
            <filename>firebird-gcc4.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtdXJOYWQgZmlyZWJpcmQyLTEuNS4zLjQ4NzB+L3NyYy9jb21tb24vY2xhc3Nlcy9hbGxv
Yy5oIGZpcmViaXJkMi0xLjUuMy40ODcwL3NyYy9jb21tb24vY2xhc3Nlcy9hbGxvYy5oCi0tLSBm
aXJlYmlyZDItMS41LjMuNDg3MH4vc3JjL2NvbW1vbi9jbGFzc2VzL2FsbG9jLmgJMjAwNi0wMi0w
MSAyMzowNzowMi4wMDAwMDAwMDAgKzAyMDAKKysrIGZpcmViaXJkMi0xLjUuMy40ODcwL3NyYy9j
b21tb24vY2xhc3Nlcy9hbGxvYy5oCTIwMDYtMDItMDEgMjM6MDc6MDQuMDAwMDAwMDAwICswMjAw
CkBAIC0yNDEsMjMgKzI0MSwyOSBAQAogCiB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIG1l
bSkgdGhyb3coKTsKIAorI2lmICBfX0dOVUNfXyA8IDQKKyNkZWZpbmUgU1RBVElDX05FVyBzdGF0
aWMKKyNlbHNlCisjZGVmaW5lIFNUQVRJQ19ORVcKKyNlbmRpZgorCiAjaWZkZWYgREVCVUdfR0RT
X0FMTE9DCi1zdGF0aWMgaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QgcywgRmlyZWJp
cmQ6Ok1lbW9yeVBvb2wmIHBvb2wsIGNoYXIqIGZpbGUsIGludCBsaW5lKSB7CitTVEFUSUNfTkVX
IGlubGluZSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90IHMsIEZpcmViaXJkOjpNZW1vcnlQb29s
JiBwb29sLCBjaGFyKiBmaWxlLCBpbnQgbGluZSkgewogCXJldHVybiBwb29sLmFsbG9jYXRlKHMs
IDAsIGZpbGUsIGxpbmUpOwogLy8JcmV0dXJuIHBvb2wuY2FsbG9jKHMsIDAsIGZpbGUsIGxpbmUp
OwogfQotc3RhdGljIGlubGluZSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QgcywgRmlyZWJp
cmQ6Ok1lbW9yeVBvb2wmIHBvb2wsIGNoYXIqIGZpbGUsIGludCBsaW5lKSB7CitTVEFUSUNfTkVX
IGlubGluZSB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QgcywgRmlyZWJpcmQ6Ok1lbW9yeVBv
b2wmIHBvb2wsIGNoYXIqIGZpbGUsIGludCBsaW5lKSB7CiAJcmV0dXJuIHBvb2wuYWxsb2NhdGUo
cywgMCwgZmlsZSwgbGluZSk7CiAvLwlyZXR1cm4gcG9vbC5jYWxsb2MocywgMCwgZmlsZSwgbGlu
ZSk7CiB9CiAjZGVmaW5lIEZCX05FVyhwb29sKSBuZXcocG9vbCxfX0ZJTEVfXyxfX0xJTkVfXykK
ICNkZWZpbmUgRkJfTkVXX1JQVChwb29sLGNvdW50KSBuZXcocG9vbCxjb3VudCxfX0ZJTEVfXyxf
X0xJTkVfXykKICNlbHNlCi1zdGF0aWMgaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qg
cywgRmlyZWJpcmQ6Ok1lbW9yeVBvb2wmIHBvb2wpIHsKK1NUQVRJQ19ORVcgaW5saW5lIHZvaWQq
IG9wZXJhdG9yIG5ldyhzaXplX3QgcywgRmlyZWJpcmQ6Ok1lbW9yeVBvb2wmIHBvb2wpIHsKIAly
ZXR1cm4gcG9vbC5hbGxvY2F0ZShzKTsKIC8vCXJldHVybiBwb29sLmNhbGxvYyhzKTsKIH0KLXN0
YXRpYyBpbmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90IHMsIEZpcmViaXJkOjpNZW1v
cnlQb29sJiBwb29sKSB7CitTVEFUSUNfTkVXIGlubGluZSB2b2lkKiBvcGVyYXRvciBuZXdbXShz
aXplX3QgcywgRmlyZWJpcmQ6Ok1lbW9yeVBvb2wmIHBvb2wpIHsKIAlyZXR1cm4gcG9vbC5hbGxv
Y2F0ZShzKTsKIC8vCXJldHVybiBwb29sLmNhbGxvYyhzKTsKIH0KZGlmZiAtdXJOYWQgZmlyZWJp
cmQyLTEuNS4zLjQ4NzB+L3NyYy9jb21tb24vY29uZmlnL2NvbmZpZy5jcHAgZmlyZWJpcmQyLTEu
NS4zLjQ4NzAvc3JjL2NvbW1vbi9jb25maWcvY29uZmlnLmNwcAotLS0gZmlyZWJpcmQyLTEuNS4z
LjQ4NzB+L3NyYy9jb21tb24vY29uZmlnL2NvbmZpZy5jcHAJMjAwNi0wMi0wMSAyMzowNzowMi4w
MDAwMDAwMDAgKzAyMDAKKysrIGZpcmViaXJkMi0xLjUuMy40ODcwL3NyYy9jb21tb24vY29uZmln
L2NvbmZpZy5jcHAJMjAwNi0wMi0wMSAyMzowNzowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTI2MSwx
MiArMjYxLDEyIEBACiAKIGludCBDb25maWc6OmdldFNvcnRNZW1CbG9ja1NpemUoKQogewotCXJl
dHVybiAoaW50KSBzeXNDb25maWcudmFsdWVzW0tFWV9TT1JUX01FTV9CTE9DS19TSVpFXTsKKwly
ZXR1cm4gKGludCkoSVBUUikgc3lzQ29uZmlnLnZhbHVlc1tLRVlfU09SVF9NRU1fQkxPQ0tfU0la
RV07CiB9CiAKIGludCBDb25maWc6OmdldFNvcnRNZW1VcHBlckxpbWl0KCkKIHsKLQlyZXR1cm4g
KGludCkgc3lzQ29uZmlnLnZhbHVlc1tLRVlfU09SVF9NRU1fVVBQRVJfTElNSVRdOworCXJldHVy
biAoaW50KShJUFRSKSBzeXNDb25maWcudmFsdWVzW0tFWV9TT1JUX01FTV9VUFBFUl9MSU1JVF07
CiB9CiAKIGJvb2wgQ29uZmlnOjpnZXRSZW1vdGVGaWxlT3BlbkFiaWxpdHkoKQpAQCAtMjc2LDEy
ICsyNzYsMTIgQEAKIAogaW50IENvbmZpZzo6Z2V0R3VhcmRpYW5PcHRpb24oKQogewotCXJldHVy
biAoaW50KSBzeXNDb25maWcudmFsdWVzW0tFWV9HVUFSRElBTl9PUFRJT05dOworCXJldHVybiAo
aW50KShJUFRSKSBzeXNDb25maWcudmFsdWVzW0tFWV9HVUFSRElBTl9PUFRJT05dOwogfQogCiBp
bnQgQ29uZmlnOjpnZXRDcHVBZmZpbml0eU1hc2soKQogewotCXJldHVybiAoaW50KSBzeXNDb25m
aWcudmFsdWVzW0tFWV9DUFVfQUZGSU5JVFlfTUFTS107CisJcmV0dXJuIChpbnQpKElQVFIpIHN5
c0NvbmZpZy52YWx1ZXNbS0VZX0NQVV9BRkZJTklUWV9NQVNLXTsKIH0KIAogYm9vbCBDb25maWc6
OmdldE9sZFBhcmFtZXRlck9yZGVyaW5nKCkKQEAgLTI5MSw3ICsyOTEsNyBAQAogCiBpbnQgQ29u
ZmlnOjpnZXRUY3BSZW1vdGVCdWZmZXJTaXplKCkKIHsKLQlyZXR1cm4gKGludCkgc3lzQ29uZmln
LnZhbHVlc1tLRVlfVENQX1JFTU9URV9CVUZGRVJfU0laRV07CisJcmV0dXJuIChpbnQpKElQVFIp
IHN5c0NvbmZpZy52YWx1ZXNbS0VZX1RDUF9SRU1PVEVfQlVGRkVSX1NJWkVdOwogfQogCiBib29s
IENvbmZpZzo6Z2V0VGNwTm9OYWdsZSgpCkBAIC0zMDEsMzcgKzMwMSwzNyBAQAogCiBpbnQgQ29u
ZmlnOjpnZXRJcGNNYXBTaXplKCkKIHsKLQlyZXR1cm4gKGludCkgc3lzQ29uZmlnLnZhbHVlc1tL
RVlfSVBDX01BUF9TSVpFXTsKKwlyZXR1cm4gKGludCkoSVBUUikgc3lzQ29uZmlnLnZhbHVlc1tL
RVlfSVBDX01BUF9TSVpFXTsKIH0KIAogaW50IENvbmZpZzo6Z2V0RGVmYXVsdERiQ2FjaGVQYWdl
cygpCiB7Ci0JcmV0dXJuIChpbnQpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX0RFRkFVTFRfREJfQ0FD
SEVfUEFHRVNdOworCXJldHVybiAoaW50KShJUFRSKSBzeXNDb25maWcudmFsdWVzW0tFWV9ERUZB
VUxUX0RCX0NBQ0hFX1BBR0VTXTsKIH0KIAogaW50IENvbmZpZzo6Z2V0Q29ubmVjdGlvblRpbWVv
dXQoKQogewotCXJldHVybiAoaW50KSBzeXNDb25maWcudmFsdWVzW0tFWV9DT05ORUNUSU9OX1RJ
TUVPVVRdOworCXJldHVybiAoaW50KShJUFRSKSBzeXNDb25maWcudmFsdWVzW0tFWV9DT05ORUNU
SU9OX1RJTUVPVVRdOwogfQogCiBpbnQgQ29uZmlnOjpnZXREdW1teVBhY2tldEludGVydmFsKCkK
IHsKLQlyZXR1cm4gKGludCkgc3lzQ29uZmlnLnZhbHVlc1tLRVlfRFVNTVlfUEFDS0VUX0lOVEVS
VkFMXTsKKwlyZXR1cm4gKGludCkoSVBUUikgc3lzQ29uZmlnLnZhbHVlc1tLRVlfRFVNTVlfUEFD
S0VUX0lOVEVSVkFMXTsKIH0KIAogaW50IENvbmZpZzo6Z2V0TG9ja01lbVNpemUoKQogewotCXJl
dHVybiAoaW50KSBzeXNDb25maWcudmFsdWVzW0tFWV9MT0NLX01FTV9TSVpFXTsKKwlyZXR1cm4g
KGludCkoSVBUUikgc3lzQ29uZmlnLnZhbHVlc1tLRVlfTE9DS19NRU1fU0laRV07CiB9CiAKIGlu
dCBDb25maWc6OmdldExvY2tTZW1Db3VudCgpCiB7Ci0JcmV0dXJuIChpbnQpIHN5c0NvbmZpZy52
YWx1ZXNbS0VZX0xPQ0tfU0VNX0NPVU5UXTsKKwlyZXR1cm4gKGludCkoSVBUUikgc3lzQ29uZmln
LnZhbHVlc1tLRVlfTE9DS19TRU1fQ09VTlRdOwogfQogCiBpbnQgQ29uZmlnOjpnZXRMb2NrU2ln
bmFsKCkKIHsKLQlyZXR1cm4gKGludCkgc3lzQ29uZmlnLnZhbHVlc1tLRVlfTE9DS19TSUdOQUxd
OworCXJldHVybiAoaW50KShJUFRSKSBzeXNDb25maWcudmFsdWVzW0tFWV9MT0NLX1NJR05BTF07
CiB9CiAKIGJvb2wgQ29uZmlnOjpnZXRMb2NrR3JhbnRPcmRlcigpCkBAIC0zNDEsMjcgKzM0MSwy
NyBAQAogCiBpbnQgQ29uZmlnOjpnZXRMb2NrSGFzaFNsb3RzKCkKIHsKLQlyZXR1cm4gKGludCkg
c3lzQ29uZmlnLnZhbHVlc1tLRVlfTE9DS19IQVNIX1NMT1RTXTsKKwlyZXR1cm4gKGludCkoSVBU
Uikgc3lzQ29uZmlnLnZhbHVlc1tLRVlfTE9DS19IQVNIX1NMT1RTXTsKIH0KIAogaW50IENvbmZp
Zzo6Z2V0TG9ja0FjcXVpcmVTcGlucygpCiB7Ci0JcmV0dXJuIChpbnQpIHN5c0NvbmZpZy52YWx1
ZXNbS0VZX0xPQ0tfQUNRVUlSRV9TUElOU107CisJcmV0dXJuIChpbnQpKElQVFIpIHN5c0NvbmZp
Zy52YWx1ZXNbS0VZX0xPQ0tfQUNRVUlSRV9TUElOU107CiB9CiAKIGludCBDb25maWc6OmdldEV2
ZW50TWVtU2l6ZSgpCiB7Ci0JcmV0dXJuIChpbnQpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX0VWRU5U
X01FTV9TSVpFXTsKKwlyZXR1cm4gKGludCkoSVBUUikgc3lzQ29uZmlnLnZhbHVlc1tLRVlfRVZF
TlRfTUVNX1NJWkVdOwogfQogCiBpbnQgQ29uZmlnOjpnZXREZWFkbG9ja1RpbWVvdXQoKQogewot
CXJldHVybiAoaW50KSBzeXNDb25maWcudmFsdWVzW0tFWV9ERUFETE9DS19USU1FT1VUXTsKKwly
ZXR1cm4gKGludCkoSVBUUikgc3lzQ29uZmlnLnZhbHVlc1tLRVlfREVBRExPQ0tfVElNRU9VVF07
CiB9CiAKIGludCBDb25maWc6OmdldFNvbGFyaXNTdGFsbFZhbHVlKCkKIHsKLQlyZXR1cm4gKGlu
dCkgc3lzQ29uZmlnLnZhbHVlc1tLRVlfU09MQVJJU19TVEFMTF9WQUxVRV07CisJcmV0dXJuIChp
bnQpKElQVFIpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX1NPTEFSSVNfU1RBTExfVkFMVUVdOwogfQog
CiBib29sIENvbmZpZzo6Z2V0VHJhY2VNZW1vcnlQb29scygpCkBAIC0zNzEsNyArMzcxLDcgQEAK
IAogaW50IENvbmZpZzo6Z2V0UHJpb3JpdHlTd2l0Y2hEZWxheSgpCiB7Ci0JaW50IHJjID0gKGlu
dCkgc3lzQ29uZmlnLnZhbHVlc1tLRVlfUFJJT1JJVFlfU1dJVENIX0RFTEFZXTsKKwlpbnQgcmMg
PSAoaW50KShJUFRSKSBzeXNDb25maWcudmFsdWVzW0tFWV9QUklPUklUWV9TV0lUQ0hfREVMQVld
OwogCWlmIChyYyA8IDEpCiAJCXJjID0gMTsKIAlyZXR1cm4gcmM7CkBAIC0zNzksNyArMzc5LDcg
QEAKIAogaW50IENvbmZpZzo6Z2V0RGVhZFRocmVhZHNDb2xsZWN0aW9uKCkKIHsKLQlpbnQgcmMg
PSAoaW50KSBzeXNDb25maWcudmFsdWVzW0tFWV9ERUFEX1RIUkVBRFNfQ09MTEVDVElPTl07CisJ
aW50IHJjID0gKGludCkoSVBUUikgc3lzQ29uZmlnLnZhbHVlc1tLRVlfREVBRF9USFJFQURTX0NP
TExFQ1RJT05dOwogCWlmIChyYyA8IDEpCiAJCXJjID0gMTsKIAlyZXR1cm4gcmM7CkBAIC0zODcs
NyArMzg3LDcgQEAKIAogaW50IENvbmZpZzo6Z2V0UHJpb3JpdHlCb29zdCgpCiB7Ci0JaW50IHJj
ID0gKGludCkgc3lzQ29uZmlnLnZhbHVlc1tLRVlfUFJJT1JJVFlfQk9PU1RdOworCWludCByYyA9
IChpbnQpKElQVFIpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX1BSSU9SSVRZX0JPT1NUXTsKIAlpZiAo
cmMgPCAxKQogCQlyYyA9IDE7CiAJaWYgKHJjID4gMTAwMCkKQEAgLTQwMiw3ICs0MDIsNyBAQAog
CiBpbnQgQ29uZmlnOjpnZXRSZW1vdGVTZXJ2aWNlUG9ydCgpCiB7Ci0JcmV0dXJuIChpbnQpIHN5
c0NvbmZpZy52YWx1ZXNbS0VZX1JFTU9URV9TRVJWSUNFX1BPUlRdOworCXJldHVybiAoaW50KShJ
UFRSKSBzeXNDb25maWcudmFsdWVzW0tFWV9SRU1PVEVfU0VSVklDRV9QT1JUXTsKIH0KIAogY29u
c3QgY2hhciAqQ29uZmlnOjpnZXRSZW1vdGVQaXBlTmFtZSgpCkBAIC00MTcsMTcgKzQxNywxNyBA
QAogCiBpbnQgQ29uZmlnOjpnZXRNYXhVbmZsdXNoZWRXcml0ZXMoKQogewotCXJldHVybiAoaW50
KSBzeXNDb25maWcudmFsdWVzW0tFWV9NQVhfVU5GTFVTSEVEX1dSSVRFU107CisJcmV0dXJuIChp
bnQpKElQVFIpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX01BWF9VTkZMVVNIRURfV1JJVEVTXTsKIH0K
IAogaW50IENvbmZpZzo6Z2V0TWF4VW5mbHVzaGVkV3JpdGVUaW1lKCkKIHsKLQlyZXR1cm4gKGlu
dCkgc3lzQ29uZmlnLnZhbHVlc1tLRVlfTUFYX1VORkxVU0hFRF9XUklURV9USU1FXTsKKwlyZXR1
cm4gKGludCkoSVBUUikgc3lzQ29uZmlnLnZhbHVlc1tLRVlfTUFYX1VORkxVU0hFRF9XUklURV9U
SU1FXTsKIH0KIAogaW50IENvbmZpZzo6Z2V0UHJvY2Vzc1ByaW9yaXR5TGV2ZWwoKQogewotCXJl
dHVybiAoaW50KSBzeXNDb25maWcudmFsdWVzW0tFWV9QUk9DRVNTX1BSSU9SSVRZX0xFVkVMXTsK
KwlyZXR1cm4gKGludCkoSVBUUikgc3lzQ29uZmlnLnZhbHVlc1tLRVlfUFJPQ0VTU19QUklPUklU
WV9MRVZFTF07CiB9CiAKIGJvb2wgQ29uZmlnOjpnZXRDcmVhdGVJbnRlcm5hbFdpbmRvdygpCkBA
IC00NDMsNyArNDQzLDcgQEAKIGludCBDb25maWc6OmdldFJlbW90ZUF1eFBvcnQoKQogewogI2lm
ZGVmIFNVUEVSU0VSVkVSCi0JcmV0dXJuIChpbnQpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX1JFTU9U
RV9BVVhfUE9SVF07CisJcmV0dXJuIChpbnQpKElQVFIpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX1JF
TU9URV9BVVhfUE9SVF07CiAjZWxzZQogCXJldHVybiAwOwogI2VuZGlmCmRpZmYgLXVyTmFkIGZp
cmViaXJkMi0xLjUuMy40ODcwfi9zcmMvZ3ByZS9jX2N4eC5jcHAgZmlyZWJpcmQyLTEuNS4zLjQ4
NzAvc3JjL2dwcmUvY19jeHguY3BwCi0tLSBmaXJlYmlyZDItMS41LjMuNDg3MH4vc3JjL2dwcmUv
Y19jeHguY3BwCTIwMDYtMDItMDEgMjM6MDc6MDIuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmly
ZDItMS41LjMuNDg3MC9zcmMvZ3ByZS9jX2N4eC5jcHAJMjAwNi0wMi0wMSAyMzowNzowNC4wMDAw
MDAwMDAgKzAyMDAKQEAgLTIxODQsNyArMjE4NCw3IEBACiAKIAlhcmdzLnBhdF9kYXRhYmFzZSA9
IChEQkIpIGluaXQtPm5vZF9hcmdbM107CiAJYXJncy5wYXRfdmVjdG9yMSA9IHN0YXR1c192ZWN0
b3IoYWN0aW9uKTsKLQlhcmdzLnBhdF9sb25nMSA9IChpbnQpIGluaXQtPm5vZF9hcmdbMl07CisJ
YXJncy5wYXRfbG9uZzEgPSAoaW50KShJUFRSKSBpbml0LT5ub2RfYXJnWzJdOwogCWFyZ3MucGF0
X3ZhbHVlMiA9IChpbnQpIGV2ZW50X2xpc3QtPm5vZF9jb3VudDsKIAogLy8gIGdlbmVyYXRlIGNh
bGwgdG8gZHluYW1pY2FsbHkgZ2VuZXJhdGUgZXZlbnQgYmxvY2tzIApAQCAtMjI1NSw3ICsyMjU1
LDcgQEAKIAkJZXZlbnRfaW5pdCA9IChHUFJFX05PRCkgZXZlbnRfYWN0aW9uLT5hY3Rfb2JqZWN0
OwogCQlzdGFja19uYW1lID0gKFNZTSkgZXZlbnRfaW5pdC0+bm9kX2FyZ1swXTsKIAkJaWYgKCFz
dHJjbXAoZXZlbnRfbmFtZS0+c3ltX3N0cmluZywgc3RhY2tfbmFtZS0+c3ltX3N0cmluZykpIHsK
LQkJCWlkZW50ID0gKGludCkgZXZlbnRfaW5pdC0+bm9kX2FyZ1syXTsKKwkJCWlkZW50ID0gKGlu
dCkoSVBUUikgZXZlbnRfaW5pdC0+bm9kX2FyZ1syXTsKIAkJCWRhdGFiYXNlID0gKERCQikgZXZl
bnRfaW5pdC0+bm9kX2FyZ1szXTsKIAkJfQogCX0KZGlmZiAtdXJOYWQgZmlyZWJpcmQyLTEuNS4z
LjQ4NzB+L3NyYy9ncHJlL2NtZC5jcHAgZmlyZWJpcmQyLTEuNS4zLjQ4NzAvc3JjL2dwcmUvY21k
LmNwcAotLS0gZmlyZWJpcmQyLTEuNS4zLjQ4NzB+L3NyYy9ncHJlL2NtZC5jcHAJMjAwNi0wMi0w
MSAyMzowNzowMi4wMDAwMDAwMDAgKzAyMDAKKysrIGZpcmViaXJkMi0xLjUuMy40ODcwL3NyYy9n
cHJlL2NtZC5jcHAJMjAwNi0wMi0wMSAyMzowNzowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTIwNCw3
ICsyMDQsNyBAQAogCiAJY2FzZSBBQ1RfZHJvcF9zaGFkb3c6CiAJCXB1dF9udW1lcmljKHJlcXVl
c3QsIGdkc19keW5fZGVsZXRlX3NoYWRvdywKLQkJCQkJKFNTSE9SVCkgYWN0aW9uLT5hY3Rfb2Jq
ZWN0KTsKKwkJCQkJKFNTSE9SVCkoSVBUUikgYWN0aW9uLT5hY3Rfb2JqZWN0KTsKIAkJU1RVRkZf
RU5EOwogCQlicmVhazsKIApkaWZmIC11ck5hZCBmaXJlYmlyZDItMS41LjMuNDg3MH4vc3JjL2dw
cmUvY21lLmNwcCBmaXJlYmlyZDItMS41LjMuNDg3MC9zcmMvZ3ByZS9jbWUuY3BwCi0tLSBmaXJl
YmlyZDItMS41LjMuNDg3MH4vc3JjL2dwcmUvY21lLmNwcAkyMDA2LTAyLTAxIDIzOjA3OjAyLjAw
MDAwMDAwMCArMDIwMAorKysgZmlyZWJpcmQyLTEuNS4zLjQ4NzAvc3JjL2dwcmUvY21lLmNwcAky
MDA2LTAyLTAxIDIzOjA3OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMjUxLDcgKzI1MSw3IEBACiAv
LyAqKiBCZWdpbiBkYXRlL3RpbWUvdGltZXN0YW1wIHN1cHBvcnQgKgogCWNhc2Ugbm9kX2V4dHJh
Y3Q6CiAJCVNUVUZGKGJscl9leHRyYWN0KTsKLQkJc3dpdGNoICgoS1dXT1JEUykgKGludCkgbm9k
ZS0+bm9kX2FyZ1swXSkKKwkJc3dpdGNoICgoS1dXT1JEUykgKGludCkoSVBUUikgbm9kZS0+bm9k
X2FyZ1sxXSkKIAkJewogCQljYXNlIEtXX1lFQVI6CiAJCQlTVFVGRihibHJfZXh0cmFjdF95ZWFy
KTsKQEAgLTQ3OCw3ICs0NzgsNyBAQAogLy8gKiogQmVnaW4gZGF0ZS90aW1lL3RpbWVzdGFtcCBz
dXBwb3J0ICoKIAljYXNlIG5vZF9leHRyYWN0OgogCQl7Ci0JCQlLV1dPUkRTIGt3X3dvcmQgPSAo
S1dXT1JEUykgKGludCkgbm9kZS0+bm9kX2FyZ1swXTsKKwkJCUtXV09SRFMga3dfd29yZCA9IChL
V1dPUkRTKSAoaW50KShJUFRSKSBub2RlLT5ub2RfYXJnWzBdOwogCQkJQ01FX2dldF9kdHlwZShu
b2RlLT5ub2RfYXJnWzFdLCBmKTsKIAkJCXN3aXRjaCAoZi0+ZmxkX2R0eXBlKQogCQkJewpkaWZm
IC11ck5hZCBmaXJlYmlyZDItMS41LjMuNDg3MH4vc3JjL2dwcmUvY29iLmNwcCBmaXJlYmlyZDIt
MS41LjMuNDg3MC9zcmMvZ3ByZS9jb2IuY3BwCi0tLSBmaXJlYmlyZDItMS41LjMuNDg3MH4vc3Jj
L2dwcmUvY29iLmNwcAkyMDA2LTAyLTAxIDIzOjA3OjAyLjAwMDAwMDAwMCArMDIwMAorKysgZmly
ZWJpcmQyLTEuNS4zLjQ4NzAvc3JjL2dwcmUvY29iLmNwcAkyMDA2LTAyLTAxIDIzOjA3OjA0LjAw
MDAwMDAwMCArMDIwMApAQCAtMzgyLDcgKzM4Miw3IEBACiBzdGF0aWMgdm9pZAlnZW5fb25fZXJy
b3IgKEFDVCk7CiBzdGF0aWMgdm9pZAlnZW5fcHJvY2VkdXJlIChBQ1QpOwogc3RhdGljIHZvaWQJ
Z2VuX3B1dF9zZWdtZW50IChBQ1QpOwotc3RhdGljIHZvaWQJZ2VuX3JhdyAoVUNIQVIgKiwgZW51
bSByZXFfdCwgaW50LCBpbnQpOworc3RhdGljIHZvaWQJZ2VuX3JhdyAoVUNIQVIgKiwgZW51bSBy
ZXFfdCwgaW50LCBJUFRSKTsKIHN0YXRpYyB2b2lkCWdlbl9yZWFkeSAoQUNUKTsKIHN0YXRpYyB2
b2lkCWdlbl9yZWNlaXZlIChBQ1QsIFBPUik7CiBzdGF0aWMgdm9pZAlnZW5fcmVsZWFzZSAoQUNU
KTsKQEAgLTI2NTYsNyArMjY1Niw3IEBACiAKIAlhcmdzLnBhdF9kYXRhYmFzZSA9IChEQkIpIGlu
aXQtPm5vZF9hcmdbM107CiAJYXJncy5wYXRfdmVjdG9yMSA9IHN0YXR1c192ZWN0b3IoYWN0aW9u
KTsKLQlhcmdzLnBhdF92YWx1ZTEgPSAoaW50KSBpbml0LT5ub2RfYXJnWzJdOworCWFyZ3MucGF0
X3ZhbHVlMSA9IChJUFRSKSBpbml0LT5ub2RfYXJnWzJdOwogCWFyZ3MucGF0X3ZhbHVlMiA9IChp
bnQpIGV2ZW50X2xpc3QtPm5vZF9jb3VudDsKIAlhcmdzLnBhdF9zdHJpbmcxID0gSVNDX0VWRU5U
X0JMT0NLOwogCWFyZ3MucGF0X3N0cmluZzIgPSBJU0NfRVZFTlRfV0FJVDsKQEAgLTI3MTIsNyAr
MjcxMiw3IEBACiAJTExTIHN0YWNrX3B0cjsKIAlBQ1QgZXZlbnRfYWN0aW9uOwogCVNTSE9SVCBj
b2x1bW47Ci0JaW50IGlkZW50OworCUlQVFIgaWRlbnQ7CiAJVEVYVCBzWzY0XTsKIAlURVhUICpw
YXR0ZXJuMSA9CiAJCSJDQUxMIFwiJVMyXCIgVVNJTkcgJVYxLCAlUkYlREglUkUsICVWRiVTNCVO
MUwlVkUsICVWRiVTNCVOMUElVkUsICVWRiVTNCVOMUIlVkUiOwpAQCAtMjczMCw3ICsyNzMwLDcg
QEAKIAkJZXZlbnRfaW5pdCA9IChHUFJFX05PRCkgZXZlbnRfYWN0aW9uLT5hY3Rfb2JqZWN0Owog
CQlzdGFja19uYW1lID0gKFNZTSkgZXZlbnRfaW5pdC0+bm9kX2FyZ1swXTsKIAkJaWYgKCFzdHJj
bXAoZXZlbnRfbmFtZS0+c3ltX3N0cmluZywgc3RhY2tfbmFtZS0+c3ltX3N0cmluZykpIHsKLQkJ
CWlkZW50ID0gKGludCkgZXZlbnRfaW5pdC0+bm9kX2FyZ1syXTsKKwkJCWlkZW50ID0gKElQVFIp
IGV2ZW50X2luaXQtPm5vZF9hcmdbMl07CiAJCQlkYXRhYmFzZSA9IChEQkIpIGV2ZW50X2luaXQt
Pm5vZF9hcmdbM107CiAJCX0KIAl9CkBAIC0zODQ1LDcgKzM4NDUsNyBAQAogCiBzdGF0aWMgdm9p
ZCBnZW5fcmF3KAogCQkJICAgVUNIQVIgKiBibHIsCi0JCQkgICBlbnVtIHJlcV90IHJlcXVlc3Rf
dHlwZSwgaW50IHJlcXVlc3RfbGVuZ3RoLCBpbnQgaWRlbnQpCisJCQkgICBlbnVtIHJlcV90IHJl
cXVlc3RfdHlwZSwgaW50IHJlcXVlc3RfbGVuZ3RoLCBJUFRSIGlkZW50KQogewogCVVDSEFSICpj
OwogCVRFWFQgc1syNTZdOwpAQCAtNDE5Myw3ICs0MTkzLDcgQEAKIAkJCXByaW50YShuYW1lc1tD
T0xVTU5fMF0sIEZBTFNFLCAiMDEgICVzJWQuIiwKIAkJCQkgICBuYW1lc1tJU0NfXSwgYmxvYi0+
YmxiX2JwYl9pZGVudCk7CiAJCQlnZW5fcmF3KGJsb2ItPmJsYl9icGIsIHJlcXVlc3QtPnJlcV90
eXBlLCBibG9iLT5ibGJfYnBiX2xlbmd0aCwKLQkJCQkJKGludCkgcmVxdWVzdCk7CisJCQkJCShJ
UFRSKSByZXF1ZXN0KTsKIAkJCXByaW50YShuYW1lc1tDT01NRU5UXSwgRkFMU0UsICIgIik7CiAJ
CX0KICNpZmRlZiBQWVhJUwpAQCAtNDcwMyw3ICs0NzAzLDcgQEAKIHN0YXRpYyB2b2lkIGdlbl90
eXBlKCBBQ1QgYWN0aW9uKQogewogCi0JcHJpbnRhKG5hbWVzW0NPTFVNTl0sIFRSVUUsICIlbGQi
LCBhY3Rpb24tPmFjdF9vYmplY3QpOworCXByaW50YShuYW1lc1tDT0xVTU5dLCBUUlVFLCAiJWxk
IiwgKElQVFIpIGFjdGlvbi0+YWN0X29iamVjdCk7CiB9CiAKIApkaWZmIC11ck5hZCBmaXJlYmly
ZDItMS41LjMuNDg3MH4vc3JjL2dwcmUvcGF0LmggZmlyZWJpcmQyLTEuNS4zLjQ4NzAvc3JjL2dw
cmUvcGF0LmgKLS0tIGZpcmViaXJkMi0xLjUuMy40ODcwfi9zcmMvZ3ByZS9wYXQuaAkyMDA2LTAy
LTAxIDIzOjA3OjAyLjAwMDAwMDAwMCArMDIwMAorKysgZmlyZWJpcmQyLTEuNS4zLjQ4NzAvc3Jj
L2dwcmUvcGF0LmgJMjAwNi0wMi0wMSAyMzowNzowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTg1LDcg
Kzg1LDcgQEAKIAlVU0hPUlQgcGF0X2lkZW50MjsKIAlURVhUICpwYXRfdmVjdG9yMTsKIAlURVhU
ICpwYXRfdmVjdG9yMjsKLQlpbnQgcGF0X3ZhbHVlMTsKKwlJUFRSIHBhdF92YWx1ZTE7CiAJaW50
IHBhdF92YWx1ZTI7CiAJaW50IHBhdF92YWx1ZTM7CiAJaW50IHBhdF92YWx1ZTQ7CmRpZmYgLXVy
TmFkIGZpcmViaXJkMi0xLjUuMy40ODcwfi9zcmMvanJkL2JsYi5jcHAgZmlyZWJpcmQyLTEuNS4z
LjQ4NzAvc3JjL2pyZC9ibGIuY3BwCi0tLSBmaXJlYmlyZDItMS41LjMuNDg3MH4vc3JjL2pyZC9i
bGIuY3BwCTIwMDYtMDItMDEgMjM6MDc6MDIuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZDIt
MS41LjMuNDg3MC9zcmMvanJkL2JsYi5jcHAJMjAwNi0wMi0wMSAyMzowNzowNC4wMDAwMDAwMDAg
KzAyMDAKQEAgLTg2MCw4ICs4NjAsOCBAQAogCXJlcXVlc3QgPSB0ZGJiLT50ZGJiX3JlcXVlc3Q7
CiAJc291cmNlID0gKEJJRCkgZnJvbV9kZXNjLT5kc2NfYWRkcmVzczsKIAlkZXN0aW5hdGlvbiA9
IChCSUQpIHRvX2Rlc2MtPmRzY19hZGRyZXNzOwotCWlkID0gKFVTSE9SVCkgZmllbGQtPm5vZF9h
cmdbZV9mbGRfaWRdOwotCXJwYiA9ICZyZXF1ZXN0LT5yZXFfcnBiWyhpbnQpIGZpZWxkLT5ub2Rf
YXJnW2VfZmxkX3N0cmVhbV1dOworCWlkID0gKFVTSE9SVCkoSVBUUikgZmllbGQtPm5vZF9hcmdb
ZV9mbGRfaWRdOworCXJwYiA9ICZyZXF1ZXN0LT5yZXFfcnBiWyhpbnQpKElQVFIpIGZpZWxkLT5u
b2RfYXJnW2VfZmxkX3N0cmVhbV1dOwogCXJlbGF0aW9uID0gcnBiLT5ycGJfcmVsYXRpb247CiAJ
cmVjb3JkID0gcnBiLT5ycGJfcmVjb3JkOwogCmRpZmYgLXVyTmFkIGZpcmViaXJkMi0xLjUuMy40
ODcwfi9zcmMvanJkL2NtcC5jcHAgZmlyZWJpcmQyLTEuNS4zLjQ4NzAvc3JjL2pyZC9jbXAuY3Bw
Ci0tLSBmaXJlYmlyZDItMS41LjMuNDg3MH4vc3JjL2pyZC9jbXAuY3BwCTIwMDYtMDItMDEgMjM6
MDc6MDIuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZDItMS41LjMuNDg3MC9zcmMvanJkL2Nt
cC5jcHAJMjAwNi0wMi0wMSAyMzowNzowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTk1OCw5ICs5NTgs
OSBAQAogCQkJRk1UIGZvcm1hdDsKIAkJCVVTSE9SVCBpZDsKIAotCQkJaWQgPSAoVVNIT1JUKSBu
b2RlLT5ub2RfYXJnW2VfZmxkX2lkXTsKKwkJCWlkID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9k
X2FyZ1tlX2ZsZF9pZF07CiAJCQlmb3JtYXQgPQotCQkJCUNNUF9mb3JtYXQodGRiYiwgY3NiLCAo
VVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV0pOworCQkJCUNNUF9mb3JtYXQodGRi
YiwgY3NiLCAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV0pOwogCQkJ
aWYgKGlkID49IGZvcm1hdC0+Zm10X2NvdW50KSB7CiAJCQkJZGVzYy0+ZHNjX2R0eXBlID0gZHR5
cGVfbnVsbDsKIAkJCQlkZXNjLT5kc2NfbGVuZ3RoID0gMDsKQEAgLTk4Myw5ICs5ODMsOSBAQAog
CiAJCQlzdWIgPSBub2RlLT5ub2RfYXJnW2Vfc2NsX2ZpZWxkXTsKIAkJCXJlbGF0aW9uID0KLQkJ
CQljc2ItPmNzYl9ycHRbKFVTSE9SVCkgc3ViLT4KKwkJCQljc2ItPmNzYl9ycHRbKFVTSE9SVCko
SVBUUikgc3ViLT4KIAkJCQkJCQkgbm9kX2FyZ1tlX2ZsZF9zdHJlYW1dXS5jc2JfcmVsYXRpb247
Ci0JCQlpZCA9IChVU0hPUlQpIHN1Yi0+bm9kX2FyZ1tlX2ZsZF9pZF07CisJCQlpZCA9IChVU0hP
UlQpKElQVFIpIHN1Yi0+bm9kX2FyZ1tlX2ZsZF9pZF07CiAJCQlmaWVsZCA9IE1FVF9nZXRfZmll
bGQocmVsYXRpb24sIGlkKTsKIAkJCWlmICghZmllbGQgfHwgIShhcnJheSA9IGZpZWxkLT5mbGRf
YXJyYXkpKQogCQkJCUlCRVJST1IoMjIzKTsJLyogbXNnIDIyMyBhcmd1bWVudCBvZiBzY2FsYXIg
b3BlcmF0aW9uIG11c3QgYmUgYW4gYXJyYXkgKi8KQEAgLTE2NjEsNyArMTY2MSw3IEBACiAJCXJl
dHVybjsKIAogCWNhc2Ugbm9kX2V4dHJhY3Q6Ci0JCWlmICgoVUxPTkcpIG5vZGUtPm5vZF9hcmdb
ZV9leHRyYWN0X3BhcnRdID09IGJscl9leHRyYWN0X3NlY29uZCkgeworCQlpZiAoKFVMT05HKShJ
UFRSKSBub2RlLT5ub2RfYXJnW2VfZXh0cmFjdF9wYXJ0XSA9PSBibHJfZXh0cmFjdF9zZWNvbmQp
IHsKIAkJCS8qIFFVQUREQVRFIC0gU0VDT05EIHJldHVybnMgYSBmbG9hdCwgb3Igc2NhbGVkISAq
LwogCQkJZGVzYy0+ZHNjX2R0eXBlID0gZHR5cGVfbG9uZzsKIAkJCWRlc2MtPmRzY19sZW5ndGgg
PSBzaXplb2YoVUxPTkcpOwpAQCAtMTcyMCw3ICsxNzIwLDcgQEAKIAogCQkJbWVzc2FnZSA9IG5v
ZGUtPm5vZF9hcmdbZV9hcmdfbWVzc2FnZV07CiAJCQlmb3JtYXQgPSAoRk1UKSBtZXNzYWdlLT5u
b2RfYXJnW2VfbXNnX2Zvcm1hdF07Ci0JCQkqZGVzYyA9IGZvcm1hdC0+Zm10X2Rlc2NbKGludCkg
bm9kZS0+bm9kX2FyZ1tlX2FyZ19udW1iZXJdXTsKKwkJCSpkZXNjID0gZm9ybWF0LT5mbXRfZGVz
Y1soaW50KShJUFRSKSBub2RlLT5ub2RfYXJnW2VfYXJnX251bWJlcl1dOwogCQkJcmV0dXJuOwog
CQl9CiAKQEAgLTI2NTMsOCArMjY1Myw4IEBACiAJCQkJIWlucHV0LT5ub2RfYXJnW2VfZmxkX2lk
XSAmJiAhaW5wdXQtPm5vZF9hcmdbZV9mbGRfc3RyZWFtXSkKIAkJCQktLWZpZWxkX2lkOwogCQkJ
ZWxzZQotCQkJCWZpZWxkX2lkID0gKFVTSE9SVCkgaW5wdXQtPm5vZF9hcmdbZV9mbGRfaWRdOwot
CQkJc3RyZWFtID0gKFVTSE9SVCkgaW5wdXQtPm5vZF9hcmdbZV9mbGRfc3RyZWFtXTsKKwkJCQlm
aWVsZF9pZCA9IChVU0hPUlQpKElQVFIpIGlucHV0LT5ub2RfYXJnW2VfZmxkX2lkXTsKKwkJCXN0
cmVhbSA9IChVU0hPUlQpKElQVFIpIGlucHV0LT5ub2RfYXJnW2VfZmxkX3N0cmVhbV07CiAJCQlp
ZiAocmVtYXBfZmxkKSB7CiAJCQkJSlJEX1JFTCByZWxhdGlvbjsKIAkJCQlKUkRfRkxEIGZpZWxk
OwpAQCAtMjY2Miw3ICsyNjYyLDcgQEAKIAkJCQlyZWxhdGlvbiA9ICgqY3NiKS0+Y3NiX3JwdFtz
dHJlYW1dLmNzYl9yZWxhdGlvbjsKIAkJCQlmaWVsZCA9IE1FVF9nZXRfZmllbGQocmVsYXRpb24s
IGZpZWxkX2lkKTsKIAkJCQlpZiAoZmllbGQtPmZsZF9zb3VyY2UpCi0JCQkJCWZpZWxkX2lkID0g
KFVTSE9SVCkgZmllbGQtPmZsZF9zb3VyY2UtPm5vZF9hcmdbZV9mbGRfaWRdOworCQkJCQlmaWVs
ZF9pZCA9IChVU0hPUlQpKElQVFIpIGZpZWxkLT5mbGRfc291cmNlLT5ub2RfYXJnW2VfZmxkX2lk
XTsKIAkJCX0KIAkJCWlmIChyZW1hcCkKIAkJCQlzdHJlYW0gPSByZW1hcFtzdHJlYW1dOwpAQCAt
Mjc3Myw3ICsyNzczLDcgQEAKIAkJCW5vZGUtPm5vZF90eXBlID0gaW5wdXQtPm5vZF90eXBlOwog
CQkJbm9kZS0+bm9kX2NvdW50ID0gMDsKIAotCQkJc3RyZWFtID0gKFVTSE9SVCkgaW5wdXQtPm5v
ZF9hcmdbZV9yZWxfc3RyZWFtXTsKKwkJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIGlucHV0LT5u
b2RfYXJnW2VfcmVsX3N0cmVhbV07CiAJLyoqIAogCSAgICBMYXN0IGVudHJ5IGluIHRoZSByZW1h
cCBjb250YWlucyB0aGUgdGhlIG9yaWdpbmFsIHN0cmVhbSBudW1iZXIuCiAJICAgIEdldCB0aGF0
IHN0cmVhbSBudW1iZXIgc28gdGhhdCB0aGUgZmxhZ3MgY2FuIGJlIGNvcGllZCAKQEAgLTI4NTMs
NyArMjg1Myw3IEBACiAJCQlub2RlLT5ub2RfYXJnW2VfcHJjX2lucHV0c10gPQogCQkJCWNvcHko
dGRiYiwgY3NiLCBpbnB1dC0+bm9kX2FyZ1tlX3ByY19pbnB1dHNdLCByZW1hcCwgZmllbGRfaWQs
CiAJCQkJCSBub2RlLT5ub2RfYXJnW2VfcHJjX2luX21zZ10sIHJlbWFwX2ZsZCk7Ci0JCQlzdHJl
YW0gPSAoVVNIT1JUKSBpbnB1dC0+bm9kX2FyZ1tlX3ByY19zdHJlYW1dOworCQkJc3RyZWFtID0g
KFVTSE9SVCkoSVBUUikgaW5wdXQtPm5vZF9hcmdbZV9wcmNfc3RyZWFtXTsKIAkJCW5ld19zdHJl
YW0gPSAoKmNzYiktPmNzYl9uX3N0cmVhbSsrOwogCQkJbm9kZS0+bm9kX2FyZ1tlX3ByY19zdHJl
YW1dID0gKEpSRF9OT0QpIChTTE9ORykgbmV3X3N0cmVhbTsKIAkJCS8qIFRNTjogSGVyZSB3ZSBz
aG91bGQgcmVhbGx5IGhhdmUgdGhlIGZvbGxvd2luZyBhc3NlcnQgKi8KQEAgLTI4NjMsNyArMjg2
Myw3IEBACiAJCQllbGVtZW50ID0gQ01QX2NzYl9lbGVtZW50KGNzYiwgbmV3X3N0cmVhbSk7CiAJ
CQkvLyBTS0lEREVSOiBNYXliZSB3ZSBuZWVkIHRvIGNoZWNrIGlmIHdlIHJlYWxseSBmb3VuZCBh
IHByb2NlZHVyZSA/CiAJCQllbGVtZW50LT5jc2JfcHJvY2VkdXJlID0gTUVUX2xvb2t1cF9wcm9j
ZWR1cmVfaWQodGRiYiwKLQkJCSAgKFNTSE9SVClub2RlLT5ub2RfYXJnW2VfcHJjX3Byb2NlZHVy
ZV0sRkFMU0UsRkFMU0UsMCk7CisJCQkgIChTU0hPUlQpKElQVFIpbm9kZS0+bm9kX2FyZ1tlX3By
Y19wcm9jZWR1cmVdLEZBTFNFLEZBTFNFLDApOwogCiAJCQkoKmNzYiktPmNzYl9ycHRbbmV3X3N0
cmVhbV0uY3NiX2ZsYWdzIHw9CiAJCQkJKCpjc2IpLT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdz
ICYgY3NiX25vX2Ria2V5OwpAQCAtMjg3Niw3ICsyODc2LDcgQEAKIAkJbm9kZSA9IFBBUl9tYWtl
X25vZGUodGRiYiwgZV9hZ2dfbGVuZ3RoKTsKIAkJbm9kZS0+bm9kX3R5cGUgPSBpbnB1dC0+bm9k
X3R5cGU7CiAJCW5vZGUtPm5vZF9jb3VudCA9IDA7Ci0JCXN0cmVhbSA9IChVU0hPUlQpIGlucHV0
LT5ub2RfYXJnW2VfYWdnX3N0cmVhbV07CisJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIGlucHV0
LT5ub2RfYXJnW2VfYWdnX3N0cmVhbV07CiAJCWFzc2VydChzdHJlYW0gPD0gTUFYX1NUUkVBTVMp
OwogCQluZXdfc3RyZWFtID0gKCpjc2IpLT5jc2Jfbl9zdHJlYW0rKzsKIAkJYXNzZXJ0KG5ld19z
dHJlYW0gPD0gTUFYX1NUUkVBTVMpOwpAQCAtMjkwNSw3ICsyOTA1LDcgQEAKIAkJbm9kZSA9IFBB
Ul9tYWtlX25vZGUodGRiYiwgZV91bmlfbGVuZ3RoKTsKIAkJbm9kZS0+bm9kX3R5cGUgPSBpbnB1
dC0+bm9kX3R5cGU7CiAJCW5vZGUtPm5vZF9jb3VudCA9IDI7Ci0JCXN0cmVhbSA9IChVU0hPUlQp
IGlucHV0LT5ub2RfYXJnW2VfdW5pX3N0cmVhbV07CisJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIp
IGlucHV0LT5ub2RfYXJnW2VfdW5pX3N0cmVhbV07CiAJCW5ld19zdHJlYW0gPSAoKmNzYiktPmNz
Yl9uX3N0cmVhbSsrOwogCQlub2RlLT5ub2RfYXJnW2VfdW5pX3N0cmVhbV0gPSAoSlJEX05PRCkg
KFNMT05HKSBuZXdfc3RyZWFtOwogCQkvKiBUTU46IEhlcmUgd2Ugc2hvdWxkIHJlYWxseSBoYXZl
IHRoZSBmb2xsb3dpbmcgYXNzZXJ0ICovCkBAIC0zMDQzLDcgKzMwNDMsNyBAQAogCQkJY3NiX3Jl
cGVhdCAqdGFpbDsKIAkJCUpSRF9SRUwgcmVsYXRpb247CiAKLQkJCXN0cmVhbSA9IChVU0hPUlQp
IG5vZGUtPm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKKwkJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIp
IG5vZGUtPm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKIAkJCWNzYi0+Y3NiX3JwdFtzdHJlYW1dLmNz
Yl9mbGFncyB8PSBjc2Jfbm9fZGJrZXk7CiAJCQl0YWlsID0gJmNzYi0+Y3NiX3JwdFtzdHJlYW1d
OwogCQkJaWYgKCAocmVsYXRpb24gPSB0YWlsLT5jc2JfcmVsYXRpb24pICkKQEAgLTMyNzEsNyAr
MzI3MSw3IEBACiAJCQlKUkRfRkxEIGZpZWxkOwogCQkJVUNIQVIgKm1hcCwgbG9jYWxfbWFwW01B
UF9MRU5HVEhdOwogCi0JCQlzdHJlYW0gPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfZmxkX3N0
cmVhbV07CisJCQlzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfZmxkX3N0
cmVhbV07CiAKIAkJCS8qIExvb2sgYXQgYWxsIHJzZSdzIHdoaWNoIGFyZSBsb3dlciBpbiBzY29w
ZSB0aGFuIHRoZSByc2Ugd2hpY2ggdGhpcyBmaWVsZCAKIAkJCSAgIGlzIHJlZmVyZW5jaW5nLCBh
bmQgbWFyayB0aGVtIGFzIHZhcnlpbmcgLS0gdGhlIHJ1bGUgaXMgdGhhdCBpZiBhIGZpZWxkIApA
QCAtMzI5Miw3ICszMjkyLDcgQEAKIAkJCWlmICghKHJlbGF0aW9uID0gdGFpbC0+Y3NiX3JlbGF0
aW9uKSB8fAogCQkJCSEoZmllbGQgPQogCQkJCSAgTUVUX2dldF9maWVsZChyZWxhdGlvbiwKLQkJ
CQkJCQkJKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9pZF0pKSkgYnJlYWs7CisJCQkJCQkJ
CShVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9mbGRfaWRdKSkpIGJyZWFrOwogCiAJCQkv
KiBpZiB0aGlzIGlzIGEgbW9kaWZ5IG9yIHN0b3JlLCBjaGVjayBSRUZFUkVOQ0VTIGFjY2VzcyB0
byBhbnkgZm9yZWlnbiBrZXlzLiAqLwogCkBAIC0zNDA0LDkgKzM0MDQsOSBAQAogCiAJCQlzdWIg
PSBub2RlLT5ub2RfYXJnW2VfYXNnbl9mcm9tXTsKIAkJCWlmIChzdWItPm5vZF90eXBlID09IG5v
ZF9maWVsZCkgewotCQkJCXN0cmVhbSA9IChVU0hPUlQpIHN1Yi0+bm9kX2FyZ1tlX2ZsZF9zdHJl
YW1dOworCQkJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIHN1Yi0+bm9kX2FyZ1tlX2ZsZF9zdHJl
YW1dOwogCQkJCWZpZWxkID0gTUVUX2dldF9maWVsZCgoKmNzYiktPmNzYl9ycHRbc3RyZWFtXS5j
c2JfcmVsYXRpb24sCi0JCQkJCQkJCQkgIChVU0hPUlQpIHN1Yi0+bm9kX2FyZ1tlX2ZsZF9pZF0p
OworCQkJCQkJCQkJICAoVVNIT1JUKShJUFRSKSBzdWItPm5vZF9hcmdbZV9mbGRfaWRdKTsKIAkJ
CQlpZiAoZmllbGQpCiAJCQkJCW5vZGUtPm5vZF9hcmdbZV9hc2duX21pc3NpbmcyXSA9IGZpZWxk
LT5mbGRfbWlzc2luZ192YWx1ZTsKIAkJCX0KQEAgLTM0MTQsMTIgKzM0MTQsMTIgQEAKIAkJCXN1
YiA9IG5vZGUtPm5vZF9hcmdbZV9hc2duX3RvXTsKIAkJCWlmIChzdWItPm5vZF90eXBlICE9IG5v
ZF9maWVsZCkKIAkJCQlicmVhazsKLQkJCXN0cmVhbSA9IChVU0hPUlQpIHN1Yi0+bm9kX2FyZ1tl
X2ZsZF9zdHJlYW1dOworCQkJc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgc3ViLT5ub2RfYXJnW2Vf
ZmxkX3N0cmVhbV07CiAJCQl0YWlsID0gJigqY3NiKS0+Y3NiX3JwdFtzdHJlYW1dOwogCQkJaWYg
KCEKIAkJCQkoZmllbGQgPQogCQkJCSBNRVRfZ2V0X2ZpZWxkKHRhaWwtPmNzYl9yZWxhdGlvbiwK
LQkJCQkJCQkgICAoVVNIT1JUKSBzdWItPm5vZF9hcmdbZV9mbGRfaWRdKSkpIGJyZWFrOworCQkJ
CQkJCSAgIChVU0hPUlQpKElQVFIpIHN1Yi0+bm9kX2FyZ1tlX2ZsZF9pZF0pKSkgYnJlYWs7CiAJ
CQlpZiAoZmllbGQtPmZsZF9taXNzaW5nX3ZhbHVlKSB7CiAJCQkJbm9kZS0+bm9kX2FyZ1tlX2Fz
Z25fbWlzc2luZ10gPSBmaWVsZC0+ZmxkX21pc3NpbmdfdmFsdWU7CiAJCQkJbm9kZS0+bm9kX2Nv
dW50ID0gMzsKQEAgLTM0MzMsNyArMzQzMyw3IEBACiAJCWJyZWFrOwogCiAJY2FzZSBub2RfbW9k
aWZ5OgotCQlzdHJlYW0gPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfbW9kX25ld19zdHJlYW1d
OworCQlzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfbW9kX25ld19zdHJl
YW1dOwogCQl0YWlsID0gJigqY3NiKS0+Y3NiX3JwdFtzdHJlYW1dOwogCQl0YWlsLT5jc2JfZmxh
Z3MgfD0gY3NiX21vZGlmeTsKIAkJcGFzczFfbW9kaWZ5KHRkYmIsIGNzYiwgbm9kZSk7CkBAIC0z
NDQxLDEzICszNDQxLDEzIEBACiAJCS8qIGFzc2VydChub2RlLT5ub2RfYXJnIFtlX21vZF9uZXdf
c3RyZWFtXSA8PSBNQVhfVVNIT1JUKTsgKi8KIAkJaWYgKCAobm9kZS0+bm9kX2FyZ1tlX21vZF92
YWxpZGF0ZV0gPQogCQkJbWFrZV92YWxpZGF0aW9uKHRkYmIsIGNzYiwKLQkJCQkJCQkoVVNIT1JU
KSBub2RlLT4KKwkJCQkJCQkoVVNIT1JUKShJUFRSKSBub2RlLT4KIAkJCQkJCQlub2RfYXJnW2Vf
bW9kX25ld19zdHJlYW1dKSkgKSBub2RlLT5ub2RfY291bnQgPQogCQkJCU1BWChub2RlLT5ub2Rf
Y291bnQsIChVU0hPUlQpIGVfbW9kX3ZhbGlkYXRlICsgMSk7CiAJCWJyZWFrOwogCiAJY2FzZSBu
b2RfZXJhc2U6Ci0JCXN0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9lcmFzZV9zdHJl
YW1dOworCQlzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfZXJhc2Vfc3Ry
ZWFtXTsKIAkJdGFpbCA9ICYoKmNzYiktPmNzYl9ycHRbc3RyZWFtXTsKIAkJdGFpbC0+Y3NiX2Zs
YWdzIHw9IGNzYl9lcmFzZTsKIAkJcGFzczFfZXJhc2UodGRiYiwgY3NiLCBub2RlKTsKQEAgLTM0
NjMsMTIgKzM0NjMsMTIgQEAKIAogCWNhc2Ugbm9kX3N0b3JlOgogCQlzdWIgPSBub2RlLT5ub2Rf
YXJnW2Vfc3RvX3JlbGF0aW9uXTsKLQkJc3RyZWFtID0gKFVTSE9SVCkgc3ViLT5ub2RfYXJnW2Vf
cmVsX3N0cmVhbV07CisJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIHN1Yi0+bm9kX2FyZ1tlX3Jl
bF9zdHJlYW1dOwogCQl0YWlsID0gJigqY3NiKS0+Y3NiX3JwdFtzdHJlYW1dOwogCQl0YWlsLT5j
c2JfZmxhZ3MgfD0gY3NiX3N0b3JlOwogCQlzdWIgPSBwYXNzMV9zdG9yZSh0ZGJiLCBjc2IsIG5v
ZGUpOwogCQlpZiAoc3ViKSB7Ci0JCQlzdHJlYW0gPSAoVVNIT1JUKSBzdWItPm5vZF9hcmdbZV9y
ZWxfc3RyZWFtXTsKKwkJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIHN1Yi0+bm9kX2FyZ1tlX3Jl
bF9zdHJlYW1dOwogCQkJaWYgKCghbm9kZS0+bm9kX2FyZ1tlX3N0b19zdWJfc3RvcmVdKSAmJgog
CQkJCShub2RlLT5ub2RfYXJnW2Vfc3RvX3ZhbGlkYXRlXSA9CiAJCQkJIG1ha2VfdmFsaWRhdGlv
bih0ZGJiLCBjc2IsIHN0cmVhbSkpKSBub2RlLT5ub2RfY291bnQgPQpAQCAtMzQ5NSw3ICszNDk1
LDcgQEAKIAogCWNhc2Ugbm9kX2FnZ3JlZ2F0ZToKIAkJYXNzZXJ0KChpbnQpbm9kZS0+bm9kX2Fy
Z1tlX2FnZ19zdHJlYW1dIDw9IE1BWF9TVFJFQU1TKTsKLQkJKCpjc2IpLT5jc2JfcnB0WyhVU0hP
UlQpIG5vZGUtPm5vZF9hcmdbZV9hZ2dfc3RyZWFtXV0uY3NiX2ZsYWdzIHw9CisJCSgqY3NiKS0+
Y3NiX3JwdFsoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfYWdnX3N0cmVhbV1dLmNzYl9m
bGFncyB8PQogCQkJY3NiX25vX2Ria2V5OwogCQlpZ25vcmVfZGJrZXkodGRiYiwgKmNzYiwgKFJT
RSkgbm9kZS0+bm9kX2FyZ1tlX2FnZ19yc2VdLCB2aWV3KTsKIAkJbm9kZS0+bm9kX2FyZ1tlX2Fn
Z19yc2VdID0KQEAgLTM1MjMsNyArMzUyMyw3IEBACiAJCQlOT0RfVCB0eXBlOwogCiAJCQl0eXBl
ID0gbm9kZS0+bm9kX3R5cGU7Ci0JCQlzdHJlYW0gPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnWzBd
OworCQkJc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1swXTsKIAogCQkJaWYg
KCEoKmNzYiktPmNzYl9ycHRbc3RyZWFtXS5jc2JfbWFwKSAKIAkJCQlyZXR1cm4gbm9kZTsKQEAg
LTM1NTgsNyArMzU1OCw3IEBACiAJCWJyZWFrOwogCiAJY2FzZSBub2RfY2FyZGluYWxpdHk6Ci0J
CXN0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9jYXJkX3N0cmVhbV07CisJCXN0cmVh
bSA9IChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9jYXJkX3N0cmVhbV07CiAJCSgqY3Ni
KS0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9mbGFncyB8PSBjc2JfY29tcHV0ZTsKIAkJYnJlYWs7CiAK
QEAgLTM2MjUsNyArMzYyNSw3IEBACiAvKiBUbyBzdXBwb3J0IHZpZXdzIG9mIHZpZXdzLCBsb29w
IHVudGlsIHdlIGhpdCBhIHJlYWwgcmVsYXRpb24gKi8KIAogCWZvciAoOzspIHsKLQkJc3RyZWFt
ID0gbmV3X3N0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9lcmFzZV9zdHJlYW1dOwor
CQlzdHJlYW0gPSBuZXdfc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2Vy
YXNlX3N0cmVhbV07CiAJCXRhaWwgPSAmKCpjc2IpLT5jc2JfcnB0W3N0cmVhbV07CiAJCXRhaWwt
PmNzYl9mbGFncyB8PSBjc2JfZXJhc2U7CiAJCXJlbGF0aW9uID0gKCpjc2IpLT5jc2JfcnB0W3N0
cmVhbV0uY3NiX3JlbGF0aW9uOwpAQCAtMzY5Myw3ICszNjkzLDcgQEAKIAogCQlwYXJlbnQgPSBy
ZWxhdGlvbjsKIAkJcGFyZW50X3N0cmVhbSA9IHN0cmVhbTsKLQkJbmV3X3N0cmVhbSA9IChVU0hP
UlQpIHNvdXJjZS0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOworCQluZXdfc3RyZWFtID0gKFVTSE9S
VCkoSVBUUikgc291cmNlLT5ub2RfYXJnW2VfcmVsX3N0cmVhbV07CiAJCW5vZGUtPm5vZF9hcmdb
ZV9lcmFzZV9zdHJlYW1dID0gKEpSRF9OT0QpIChTTE9ORykgbWFwW25ld19zdHJlYW1dOwogCX0K
IH0KQEAgLTM3NDAsNyArMzc0MCw3IEBACiAJCQkJZmllbGQgPSBNRVRfZ2V0X2ZpZWxkKHJlbGF0
aW9uLCBpZCk7CiAJCQkJaWYgKGZpZWxkLT5mbGRfc291cmNlKQogCQkJCQluZXdfaWQgPQotCQkJ
CQkJKFVTSE9SVCkgKEpSRF9OT0QpIChmaWVsZC0+ZmxkX3NvdXJjZSktPm5vZF9hcmdbZV9mbGRf
aWRdOworCQkJCQkJKFVTSE9SVCkoSVBUUikgKEpSRF9OT0QpIChmaWVsZC0+ZmxkX3NvdXJjZSkt
Pm5vZF9hcmdbZV9mbGRfaWRdOwogCQkJCWVsc2UKIAkJCQkJbmV3X2lkID0gaWQ7CiAJCQl9CkBA
IC0zODAyLDggKzM4MDIsOCBAQAogLyogVG8gc3VwcG9ydCB2aWV3cyBvZiB2aWV3cywgbG9vcCB1
bnRpbCB3ZSBoaXQgYSByZWFsIHJlbGF0aW9uICovCiAKIAlmb3IgKDs7KSB7Ci0JCXN0cmVhbSA9
IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9tb2Rfb3JnX3N0cmVhbV07Ci0JCW5ld19zdHJlYW0g
PSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfbW9kX25ld19zdHJlYW1dOworCQlzdHJlYW0gPSAo
VVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfbW9kX29yZ19zdHJlYW1dOworCQluZXdfc3Ry
ZWFtID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX21vZF9uZXdfc3RyZWFtXTsKIAkJ
dGFpbCA9ICYoKmNzYiktPmNzYl9ycHRbbmV3X3N0cmVhbV07CiAJCXRhaWwtPmNzYl9mbGFncyB8
PSBjc2JfbW9kaWZ5OwogCQlyZWxhdGlvbiA9ICgqY3NiKS0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9y
ZWxhdGlvbjsKQEAgLTM4NDIsNyArMzg0Miw3IEBACiAJCQlub2RlLT5ub2RfY291bnQgPQogCQkJ
CU1BWChub2RlLT5ub2RfY291bnQsIChVU0hPUlQpIGVfbW9kX21hcF92aWV3ICsgMSk7CiAJCQlt
YXAgPSAoKmNzYiktPmNzYl9ycHRbc3RyZWFtXS5jc2JfbWFwOwotCQkJc3RyZWFtID0gKFVTSE9S
VCkgc291cmNlLT5ub2RfYXJnW2VfcmVsX3N0cmVhbV07CisJCQlzdHJlYW0gPSAoVVNIT1JUKShJ
UFRSKSBzb3VyY2UtPm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKIAkJCXN0cmVhbSA9IG1hcFtzdHJl
YW1dOwogCQkJdmlld19zdHJlYW0gPSBuZXdfc3RyZWFtOwogCkBAIC0zODUwLDE4ICszODUwLDE4
IEBACiAKIAkJCW1hcCA9CiAJCQkJYWxsb2NfbWFwKHRkYmIsIGNzYiwKLQkJCQkJCSAgKFNTSE9S
VCkgbm9kZS0+bm9kX2FyZ1tlX21vZF9uZXdfc3RyZWFtXSk7CisJCQkJCQkgIChTU0hPUlQpKElQ
VFIpIG5vZGUtPm5vZF9hcmdbZV9tb2RfbmV3X3N0cmVhbV0pOwogCQkJc291cmNlID0gY29weSh0
ZGJiLCBjc2IsIHNvdXJjZSwgbWFwLCAwLCBOVUxMLCBGQUxTRSk7CiAJCQkvKiBUTU46IEhlcmUg
d2Ugc2hvdWxkIHJlYWxseSBoYXZlIHRoZSBmb2xsb3dpbmcgYXNzZXJ0ICovCiAJCQkvKiBhc3Nl
cnQoc291cmNlLT5ub2RfYXJnIFtlX3JlbF9zdHJlYW1dIDw9IE1BWF9VQ0hBUik7ICovCi0JCQlt
YXBbbmV3X3N0cmVhbV0gPSAoVUNIQVIpIHNvdXJjZS0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOwor
CQkJbWFwW25ld19zdHJlYW1dID0gKFVDSEFSKShJUFRSKSBzb3VyY2UtPm5vZF9hcmdbZV9yZWxf
c3RyZWFtXTsKIAkJCXZpZXdfbm9kZSA9IGNvcHkodGRiYiwgY3NiLCBub2RlLCBtYXAsIDAsIE5V
TEwsIFRSVUUpOwogCQkJdmlld19ub2RlLT5ub2RfYXJnW2VfbW9kX29yZ19zdHJlYW1dID0gKEpS
RF9OT0QpIChTTE9ORykgc3RyZWFtOwogCQkJdmlld19ub2RlLT5ub2RfYXJnW2VfbW9kX25ld19z
dHJlYW1dID0KIAkJCQlzb3VyY2UtPm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKIAkJCXZpZXdfbm9k
ZS0+bm9kX2FyZ1tlX21vZF9tYXBfdmlld10gPSBOVUxMOwogCQkJbm9kZS0+bm9kX2FyZ1tlX21v
ZF9zdWJfbW9kXSA9IHZpZXdfbm9kZTsKLQkJCW5ld19zdHJlYW0gPSAoVVNIT1JUKSBzb3VyY2Ut
Pm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKKwkJCW5ld19zdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBz
b3VyY2UtPm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKIAkJCXZpZXdfbm9kZS0+bm9kX2FyZ1tlX21v
ZF9zdGF0ZW1lbnRdID0KIAkJCQlwYXNzMV9leHBhbmRfdmlldyh0ZGJiLCAqY3NiLCB2aWV3X3N0
cmVhbSwgbmV3X3N0cmVhbSwgVFJVRSk7CiAJCQlub2RlLT5ub2RfY291bnQgPQpAQCAtMzg3NCwx
NCArMzg3NCwxNCBAQAogCQkJLyogVmlldyBwYXNzZXMgbXVzdGVyIC0tIGRvIHNvbWUgdHJhbnNs
YXRpb24uICBTdGFydCB3aXRoIHNvdXJjZSBzdHJlYW0gKi8KIAogCQkJbWFwID0gKCpjc2IpLT5j
c2JfcnB0W3N0cmVhbV0uY3NiX21hcDsKLQkJCXN0cmVhbSA9IChVU0hPUlQpIHNvdXJjZS0+bm9k
X2FyZ1tlX3JlbF9zdHJlYW1dOworCQkJc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgc291cmNlLT5u
b2RfYXJnW2VfcmVsX3N0cmVhbV07CiAJCQlub2RlLT5ub2RfYXJnW2VfbW9kX29yZ19zdHJlYW1d
ID0gKEpSRF9OT0QpIChTTE9ORykgbWFwW3N0cmVhbV07CiAKIAkJCS8qIE5leHQsIGRvIHVwZGF0
ZSBzdHJlYW0gKi8KIAogCQkJbWFwID0KIAkJCQlhbGxvY19tYXAodGRiYiwgY3NiLAotCQkJCQkJ
ICAoU1NIT1JUKSBub2RlLT5ub2RfYXJnW2VfbW9kX25ld19zdHJlYW1dKTsKKwkJCQkJCSAgKFNT
SE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX21vZF9uZXdfc3RyZWFtXSk7CiAJCQlzb3VyY2Ug
PSBjb3B5KHRkYmIsIGNzYiwgc291cmNlLCBtYXAsIDAsIE5VTEwsIEZBTFNFKTsKIAkJCW5vZGUt
Pm5vZF9hcmdbZV9tb2RfbmV3X3N0cmVhbV0gPSBzb3VyY2UtPm5vZF9hcmdbZV9yZWxfc3RyZWFt
XTsKIAkJfQpAQCAtNDEyOCw3ICs0MTI4LDcgQEAKIAogCQlwYXNzMSh0ZGJiLCBjc2IsIHNvdXJj
ZSwgcGFyZW50X3ZpZXcsIHZpZXdfc3RyZWFtLCBGQUxTRSk7CiAJCXByb2NlZHVyZSA9IE1FVF9s
b29rdXBfcHJvY2VkdXJlX2lkKHRkYmIsIAotCQkgIChTU0hPUlQpc291cmNlLT5ub2RfYXJnW2Vf
cHJjX3Byb2NlZHVyZV0sIEZBTFNFLCBGQUxTRSwgMCk7CisJCSAgKFNTSE9SVCkoSVBUUilzb3Vy
Y2UtPm5vZF9hcmdbZV9wcmNfcHJvY2VkdXJlXSwgRkFMU0UsIEZBTFNFLCAwKTsKIAkJcG9zdF9w
cm9jZWR1cmVfYWNjZXNzKHRkYmIsICpjc2IsIHByb2NlZHVyZSk7CiAJCUNNUF9wb3N0X3Jlc291
cmNlKCYoKmNzYiktPmNzYl9yZXNvdXJjZXMsIChCTEspIHByb2NlZHVyZSwKIAkJCQkJCSAgUmVz
b3VyY2U6OnJzY19wcm9jZWR1cmUsIHByb2NlZHVyZS0+cHJjX2lkKTsKQEAgLTQxNjAsNyArNDE2
MCw3IEBACiAJCQkJCSAgdmlldy0+cmVsX2lkKTsKIAlzb3VyY2UtPm5vZF9hcmdbZV9yZWxfdmll
d10gPSAoSlJEX05PRCkgcGFyZW50X3ZpZXc7CiAKLQlzdHJlYW0gPSAoVVNIT1JUKSBzb3VyY2Ut
Pm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKKwlzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBzb3VyY2Ut
Pm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKIAllbGVtZW50ID0gQ01QX2NzYl9lbGVtZW50KGNzYiwg
c3RyZWFtKTsKIAllbGVtZW50LT5jc2JfdmlldyA9IHBhcmVudF92aWV3OwogLyogVE1OOiBIZXJl
IHdlIHNob3VsZCByZWFsbHkgaGF2ZSB0aGUgZm9sbG93aW5nIGFzc2VydCAqLwpAQCAtNDE3NSw3
ICs0MTc1LDcgQEAKIAkJZm9yICh2Y3hfcHRyID0gJnBhcmVudF92aWV3LT5yZWxfdmlld19jb250
ZXh0czsgKnZjeF9wdHI7CiAJCQkgdmN4X3B0ciA9ICYoKnZjeF9wdHIpLT52Y3hfbmV4dCkKIAkJ
CWlmICgoKnZjeF9wdHIpLT52Y3hfY29udGV4dCA9PQotCQkJCShVU0hPUlQpIHNvdXJjZS0+bm9k
X2FyZ1tlX3JlbF9jb250ZXh0XSkgeworCQkJCShVU0hPUlQpKElQVFIpIHNvdXJjZS0+bm9kX2Fy
Z1tlX3JlbF9jb250ZXh0XSkgewogCQkJCWVsZW1lbnQtPmNzYl9hbGlhcyA9ICgqdmN4X3B0cikt
PnZjeF9jb250ZXh0X25hbWU7CiAJCQkJYnJlYWs7CiAJCQl9CkBAIC00MzE5LDcgKzQzMTksNyBA
QAogCiAJZm9yICg7OykgewogCQlvcmlnaW5hbCA9IG5vZGUtPm5vZF9hcmdbZV9zdG9fcmVsYXRp
b25dOwotCQlzdHJlYW0gPSAoVVNIT1JUKSBvcmlnaW5hbC0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1d
OworCQlzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBvcmlnaW5hbC0+bm9kX2FyZ1tlX3JlbF9zdHJl
YW1dOwogCQl0YWlsID0gJigqY3NiKS0+Y3NiX3JwdFtzdHJlYW1dOwogCQl0YWlsLT5jc2JfZmxh
Z3MgfD0gY3NiX3N0b3JlOwogCQlyZWxhdGlvbiA9ICgqY3NiKS0+Y3NiX3JwdFtzdHJlYW1dLmNz
Yl9yZWxhdGlvbjsKQEAgLTQzNzMsNyArNDM3Myw3IEBACiAJCQlub2RlLT5ub2RfYXJnW2Vfc3Rv
X3JlbGF0aW9uXSA9CiAJCQkJY29weSh0ZGJiLCBjc2IsIHNvdXJjZSwgbWFwLCAwLCBOVUxMLCBG
QUxTRSk7CiAJCQluZXdfc3RyZWFtID0KLQkJCQkoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2Vfc3Rv
X3JlbGF0aW9uXS0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOworCQkJCShVU0hPUlQpKElQVFIpIG5v
ZGUtPm5vZF9hcmdbZV9zdG9fcmVsYXRpb25dLT5ub2RfYXJnW2VfcmVsX3N0cmVhbV07CiAJCQlu
b2RlLT5ub2RfYXJnW2Vfc3RvX3N0YXRlbWVudF0gPQogCQkJCXBhc3MxX2V4cGFuZF92aWV3KHRk
YmIsICpjc2IsIHN0cmVhbSwgbmV3X3N0cmVhbSwgVFJVRSk7CiAJCQlub2RlLT5ub2RfYXJnW2Vf
c3RvX3N0YXRlbWVudF0gPQpAQCAtNDcyMSw5ICs0NzIxLDkgQEAKIAkJLyogQUI6IE1hcmsgdGhl
IHN0cmVhbXMgaW52b2x2ZWQgd2l0aCBhbiBVUERBVEUgc3RhdGVtZW50CiAJCSAgIGFjdGl2ZS4g
U28gdGhhdCB0aGUgb3B0aW1pemVyIGNhbiB1c2UgaW5kaWNlcyBmb3IgCiAJCSAgIGV2ZW50dWFs
bHkgdXNlZCBzdWItc2VsZWN0cy4gKi8KLQkJc3RyZWFtID0gKFVTSE9SVCkgbm9kZS0+bm9kX2Fy
Z1tlX21vZF9vcmdfc3RyZWFtXTsKKwkJc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9k
X2FyZ1tlX21vZF9vcmdfc3RyZWFtXTsKIAkJY3NiLT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdz
IHw9IGNzYl9hY3RpdmU7Ci0JCXN0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9tb2Rf
bmV3X3N0cmVhbV07CisJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9t
b2RfbmV3X3N0cmVhbV07CiAJCWNzYi0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9mbGFncyB8PSBjc2Jf
YWN0aXZlOwogCX0KIApAQCAtNDczNSw5ICs0NzM1LDkgQEAKIAogCWlmIChub2RlLT5ub2RfdHlw
ZSA9PSBub2RfbW9kaWZ5KSB7CiAJCS8qIEFCOiBSZW1vdmUgdGhlIHByZXZpb3VzIGZsYWdzICov
Ci0JCXN0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9tb2Rfb3JnX3N0cmVhbV07CisJ
CXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9tb2Rfb3JnX3N0cmVhbV07
CiAJCWNzYi0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9mbGFncyAmPSB+Y3NiX2FjdGl2ZTsKLQkJc3Ry
ZWFtID0gKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tlX21vZF9uZXdfc3RyZWFtXTsKKwkJc3RyZWFt
ID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX21vZF9uZXdfc3RyZWFtXTsKIAkJY3Ni
LT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdzICY9IH5jc2JfYWN0aXZlOwogCX0KIApAQCAtNDgz
Niw3ICs0ODM2LDcgQEAKIAkJCUZNVCBmb3JtYXQ7CiAJCQlmbXQ6OmZtdF9kZXNjX2l0ZXJhdG9y
IGRlc2M7CiAKLQkJCXN0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9tb2Rfb3JnX3N0
cmVhbV07CisJCQlzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfbW9kX29y
Z19zdHJlYW1dOwogCQkJY3NiLT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdzIHw9IGNzYl91cGRh
dGU7CiAJCQlmb3JtYXQgPSBDTVBfZm9ybWF0KHRkYmIsIGNzYiwgc3RyZWFtKTsKIAkJCWRlc2Mg
PSBmb3JtYXQtPmZtdF9kZXNjLmJlZ2luKCk7CkBAIC00ODYxLDEzICs0ODYxLDEzIEBACiAJCWJy
ZWFrOwogCiAJY2FzZSBub2RfZXJhc2U6Ci0JCXN0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9h
cmdbZV9lcmFzZV9zdHJlYW1dOworCQlzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2Rf
YXJnW2VfZXJhc2Vfc3RyZWFtXTsKIAkJY3NiLT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdzIHw9
IGNzYl91cGRhdGU7CiAJCWJyZWFrOwogCiAJY2FzZSBub2RfZmllbGQ6Ci0JCXN0cmVhbSA9IChV
U0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9mbGRfc3RyZWFtXTsKLQkJaWQgPSAoVVNIT1JUKSBub2Rl
LT5ub2RfYXJnW2VfZmxkX2lkXTsKKwkJc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9k
X2FyZ1tlX2ZsZF9zdHJlYW1dOworCQlpZCA9IChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdb
ZV9mbGRfaWRdOwogCQlTQk1fc2V0KHRkYmIsICZjc2ItPmNzYl9ycHRbc3RyZWFtXS5jc2JfZmll
bGRzLCBpZCk7CiAJCWlmIChub2RlLT5ub2RfZmxhZ3MgJiBub2RfdmFsdWUpIHsKIAkJCWNzYi0+
Y3NiX2ltcHVyZSArPSBzaXplb2Yoc3RydWN0IHZsdXgpOwpAQCAtNDk0MSw3ICs0OTQxLDcgQEAK
IAkJcGFzczJfcnNlKHRkYmIsIGNzYiwgKFJTRSkgbm9kZS0+bm9kX2FyZ1tlX2FnZ19yc2VdKTsK
IAkJcGFzczIodGRiYiwgY3NiLCBub2RlLT5ub2RfYXJnW2VfYWdnX21hcF0sIG5vZGUpOwogCQlw
YXNzMih0ZGJiLCBjc2IsIG5vZGUtPm5vZF9hcmdbZV9hZ2dfZ3JvdXBdLCBub2RlKTsKLQkJc3Ry
ZWFtID0gKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tlX2FnZ19zdHJlYW1dOworCQlzdHJlYW0gPSAo
VVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfYWdnX3N0cmVhbV07CiAJCWFzc2VydChzdHJl
YW0gPD0gTUFYX1NUUkVBTVMpOwogCQlwcm9jZXNzX21hcCh0ZGJiLCBjc2IsIG5vZGUtPm5vZF9h
cmdbZV9hZ2dfbWFwXSwKIAkJCQkJJmNzYi0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9mb3JtYXQpOwpA
QCAtNTA1MCw3ICs1MDUwLDcgQEAKIAogCQlub2RlID0gKnB0cjsKIAkJaWYgKG5vZGUtPm5vZF90
eXBlID09IG5vZF9yZWxhdGlvbikgewotCQkJVVNIT1JUIHN0cmVhbSA9IChVU0hPUlQpIG5vZGUt
Pm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKKwkJCVVTSE9SVCBzdHJlYW0gPSAoVVNIT1JUKShJUFRS
KSBub2RlLT5ub2RfYXJnW2VfcmVsX3N0cmVhbV07CiAJCQljc2ItPmNzYl9ycHRbc3RyZWFtXS5j
c2JfZmxhZ3MgfD0gY3NiX2FjdGl2ZTsKIAkJCXBhc3MyKHRkYmIsIGNzYiwgbm9kZSwgKEpSRF9O
T0QpIHJzZSk7CiAJCX0KQEAgLTUwNTgsMTIgKzUwNTgsMTIgQEAKIAkJCXBhc3MyX3JzZSh0ZGJi
LCBjc2IsIChSU0UpIG5vZGUpOwogCQl9CiAJCWVsc2UgaWYgKG5vZGUtPm5vZF90eXBlID09IG5v
ZF9wcm9jZWR1cmUpIHsKLQkJCVVTSE9SVCBzdHJlYW0gPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJn
W2VfcHJjX3N0cmVhbV07CisJCQlVU0hPUlQgc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+
bm9kX2FyZ1tlX3ByY19zdHJlYW1dOwogCQkJY3NiLT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdz
IHw9IGNzYl9hY3RpdmU7CiAJCQlwYXNzMih0ZGJiLCBjc2IsIG5vZGUsIChKUkRfTk9EKSByc2Up
OwogCQl9CiAJCWVsc2UgaWYgKG5vZGUtPm5vZF90eXBlID09IG5vZF9hZ2dyZWdhdGUpIHsKLQkJ
CVVTSE9SVCBzdHJlYW0gPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfYWdnX3N0cmVhbV07CisJ
CQlVU0hPUlQgc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2FnZ19zdHJl
YW1dOwogCQkJYXNzZXJ0KHN0cmVhbSA8PSBNQVhfU1RSRUFNUyk7CiAJCQljc2ItPmNzYl9ycHRb
c3RyZWFtXS5jc2JfZmxhZ3MgfD0gY3NiX2FjdGl2ZTsKIAkJCXBhc3MyKHRkYmIsIGNzYiwgbm9k
ZSwgKEpSRF9OT0QpIHJzZSk7CkBAIC01MTE4LDcgKzUxMTgsNyBAQAogLyogTWFrZSB1cCBhIGZv
cm1hdCBibG9jayBzdWZmaWNpZW50bHkgbGFyZ2UgdG8gaG9sZCBpbnN0YW50aWF0ZWQgcmVjb3Jk
ICovCiAKIAljbGF1c2VzID0gbm9kZS0+bm9kX2FyZ1tlX3VuaV9jbGF1c2VzXTsKLQlpZCA9IChV
U0hPUlQpIG5vZGUtPm5vZF9hcmdbZV91bmlfc3RyZWFtXTsKKwlpZCA9IChVU0hPUlQpKElQVFIp
IG5vZGUtPm5vZF9hcmdbZV91bmlfc3RyZWFtXTsKIAlmb3JtYXQgPSAmY3NiLT5jc2JfcnB0W2lk
XS5jc2JfZm9ybWF0OwogCiAvKiBQcm9jZXNzIGFsdGVybmF0aW5nIHJzZSBhbmQgbWFwIGJsb2Nr
cyAqLwpAQCAtNTE2MCw3ICs1MTYwLDcgQEAKIAogCWZvciAocHRyID0gcnNlLT5yc2VfcmVsYXRp
b24sIGVuZCA9IHB0ciArIHJzZS0+cnNlX2NvdW50OyBwdHIgPCBlbmQ7CiAJCSBwdHIrKykgaWYg
KCgqcHRyKS0+bm9kX3R5cGUgPT0gbm9kX3JlbGF0aW9uKSB7Ci0JCQlzdHJlYW0gPSAoVVNIT1JU
KSAoKnB0ciktPm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKKwkJCXN0cmVhbSA9IChVU0hPUlQpKElQ
VFIpICgqcHRyKS0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOwogCQkJaWYgKCEoY3NiLT5jc2JfcnB0
W3N0cmVhbV0uY3NiX3BsYW4pKQogCQkJCUVSUl9wb3N0KGdkc19ub19zdHJlYW1fcGxhbiwgZ2Rz
X2FyZ19zdHJpbmcsCiAJCQkJCQkgY3NiLT5jc2JfcnB0W3N0cmVhbV0uY3NiX3JlbGF0aW9uLT5y
ZWxfbmFtZSwgMCk7CkBAIC01MjEzLDcgKzUyMTMsNyBAQAogCiAvKiBmaW5kIHRoZSB0YWlsIGZv
ciB0aGUgcmVsYXRpb24gc3BlY2lmaWVkIGluIHRoZSByc2UgKi8KIAotCXN0cmVhbSA9IChVU0hP
UlQpIHBsYW5fcmVsYXRpb25fbm9kZS0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOworCXN0cmVhbSA9
IChVU0hPUlQpKElQVFIpIHBsYW5fcmVsYXRpb25fbm9kZS0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1d
OwogCXRhaWwgPSAmY3NiLT5jc2JfcnB0W3N0cmVhbV07CiAKIC8qIGlmIHRoZSBwbGFuIHJlZmVy
ZW5jZXMgYSB2aWV3LCBmaW5kIHRoZSByZWFsIGJhc2UgcmVsYXRpb24gCkBAIC01NDQ5LDE1ICs1
NDQ5LDE1IEBACiAJCSBwdHIgPCBlbmQ7IHB0cisrKSB7CiAJCW5vZGUgPSAqcHRyOwogCQlpZiAo
bm9kZS0+bm9kX3R5cGUgPT0gbm9kX3JlbGF0aW9uKSB7Ci0JCQlVU0hPUlQgc3RyZWFtID0gKFVT
SE9SVCkgbm9kZS0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOworCQkJVVNIT1JUIHN0cmVhbSA9IChV
U0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKIAkJCWNzYi0+Y3NiX3Jw
dFtzdHJlYW1dLmNzYl9mbGFncyAmPSB+Y3NiX2FjdGl2ZTsKIAkJfQogCQllbHNlIGlmIChub2Rl
LT5ub2RfdHlwZSA9PSBub2RfcHJvY2VkdXJlKSB7Ci0JCQlVU0hPUlQgc3RyZWFtID0gKFVTSE9S
VCkgbm9kZS0+bm9kX2FyZ1tlX3ByY19zdHJlYW1dOworCQkJVVNIT1JUIHN0cmVhbSA9IChVU0hP
UlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9wcmNfc3RyZWFtXTsKIAkJCWNzYi0+Y3NiX3JwdFtz
dHJlYW1dLmNzYl9mbGFncyAmPSB+Y3NiX2FjdGl2ZTsKIAkJfQogCQllbHNlIGlmIChub2RlLT5u
b2RfdHlwZSA9PSBub2RfYWdncmVnYXRlKSB7Ci0JCQlVU0hPUlQgc3RyZWFtID0gKFVTSE9SVCkg
bm9kZS0+bm9kX2FyZ1tlX2FnZ19zdHJlYW1dOworCQkJVVNIT1JUIHN0cmVhbSA9IChVU0hPUlQp
KElQVFIpIG5vZGUtPm5vZF9hcmdbZV9hZ2dfc3RyZWFtXTsKIAkJCWFzc2VydChzdHJlYW0gPD0g
TUFYX1NUUkVBTVMpOwogCQkJY3NiLT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdzICY9IH5jc2Jf
YWN0aXZlOwogCQl9CkBAIC01NTUzLDcgKzU1NTMsNyBAQAogCWZvciAoZW5kID0gcHRyICsgbWFw
LT5ub2RfY291bnQ7IHB0ciA8IGVuZDsgcHRyKyspIHsKIAkJYXNzaWdubWVudCA9ICpwdHI7CiAJ
CWZpZWxkID0gYXNzaWdubWVudC0+bm9kX2FyZ1tlX2FzZ25fdG9dOwotCQlpZCA9IChVU0hPUlQp
IGZpZWxkLT5ub2RfYXJnW2VfZmxkX2lkXTsKKwkJaWQgPSAoVVNIT1JUKShJUFRSKSBmaWVsZC0+
bm9kX2FyZ1tlX2ZsZF9pZF07CiAJCWlmIChpZCA+PSBmb3JtYXQtPmZtdF9jb3VudCkgewogCQkJ
Zm9ybWF0LT5mbXRfZGVzYy5yZXNpemUoaWQgKyAxKTsKIAkJfQpAQCAtNTY4OSwxMyArNTY4OSwx
MyBAQAogCQkvKiBmb3IgYWdncmVnYXRlcywgY2hlY2sgY3VycmVudCByc2UsIGlmIG5vdCBmb3Vu
ZCB0aGVuIGNoZWNrIAogCQkgICB0aGUgc3ViLXJzZSAqLwogCQlpZiAoc3ViLT5ub2RfdHlwZSA9
PSBub2RfYWdncmVnYXRlKSB7Ci0JCQlpZiAoKHN0cmVhbSA9PSAoVVNIT1JUKSBzdWItPm5vZF9h
cmdbZV9yZWxfc3RyZWFtXSkgfHwKKwkJCWlmICgoc3RyZWFtID09IChVU0hPUlQpKElQVFIpIHN1
Yi0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dKSB8fAogCQkJCShzdHJlYW1faW5fcnNlKHN0cmVhbSwg
KFJTRSkgc3ViLT5ub2RfYXJnW2VfYWdnX3JzZV0pKSkKIAkJCQlyZXR1cm4gVFJVRTsJLyogZG8g
bm90IG1hcmsgYXMgdmFyaWFudCAqLwogCQl9CiAKIAkJaWYgKChzdWItPm5vZF90eXBlID09IG5v
ZF9yZWxhdGlvbikgJiYKLQkJCShzdHJlYW0gPT0gKFVTSE9SVCkgc3ViLT5ub2RfYXJnW2VfcmVs
X3N0cmVhbV0pKQorCQkJKHN0cmVhbSA9PSAoVVNIT1JUKShJUFRSKSBzdWItPm5vZF9hcmdbZV9y
ZWxfc3RyZWFtXSkpCiAJCQlyZXR1cm4gVFJVRTsJCS8qIGRvIG5vdCBtYXJrIGFzIHZhcmlhbnQg
Ki8KIAl9CiAKZGlmZiAtdXJOYWQgZmlyZWJpcmQyLTEuNS4zLjQ4NzB+L3NyYy9qcmQvY29tbW9u
LmggZmlyZWJpcmQyLTEuNS4zLjQ4NzAvc3JjL2pyZC9jb21tb24uaAotLS0gZmlyZWJpcmQyLTEu
NS4zLjQ4NzB+L3NyYy9qcmQvY29tbW9uLmgJMjAwNi0wMi0wMSAyMzowNzowMi4wMDAwMDAwMDAg
KzAyMDAKKysrIGZpcmViaXJkMi0xLjUuMy40ODcwL3NyYy9qcmQvY29tbW9uLmgJMjAwNi0wMi0w
MSAyMzowNzowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTg1Niw4ICs4NTYsOCBAQAogCiAjZGVmaW5l
IEpSRF9CVUdDSEsgMTUJCQkvKiBmYWNpbGl0eSBjb2RlIGZvciBidWdjaGVjayBtZXNzYWdlcyAq
LwogI2lmbmRlZiBPRkZTRVQKLSNkZWZpbmUgT0ZGU0VUKHN0cnVjdCxmbGQpICAgICAgKChpbnQp
ICYoKHN0cnVjdCkgMCktPmZsZCkKLSNkZWZpbmUgT0ZGU0VUQShzdHJ1Y3QsZmxkKSAgICAgKChp
bnQpICgoc3RydWN0KSAwKS0+ZmxkKQorI2RlZmluZSBPRkZTRVQoc3RydWN0LGZsZCkgICAgICAo
KGludCkoSVBUUikgJigoc3RydWN0KSAwKS0+ZmxkKQorI2RlZmluZSBPRkZTRVRBKHN0cnVjdCxm
bGQpICAgICAoKGludCkoSVBUUikgKChzdHJ1Y3QpIDApLT5mbGQpCiAjZW5kaWYKIAogI2lmbmRl
ZiBPRFNfQUxJR05NRU5UCmRpZmYgLXVyTmFkIGZpcmViaXJkMi0xLjUuMy40ODcwfi9zcmMvanJk
L2RwbS5lcHAgZmlyZWJpcmQyLTEuNS4zLjQ4NzAvc3JjL2pyZC9kcG0uZXBwCi0tLSBmaXJlYmly
ZDItMS41LjMuNDg3MH4vc3JjL2pyZC9kcG0uZXBwCTIwMDYtMDItMDEgMjM6MDc6MDIuMDAwMDAw
MDAwICswMjAwCisrKyBmaXJlYmlyZDItMS41LjMuNDg3MC9zcmMvanJkL2RwbS5lcHAJMjAwNi0w
Mi0wMSAyMzowNzowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTIxMTksNyArMjExOSw3IEBACiAKIAlE
RUJVRyBpZiAoc3RhY2spCiAJCXdoaWxlICgqc3RhY2spCi0JCQlDQ0hfcHJlY2VkZW5jZSh0ZGJi
LCAmcnBiLT5ycGJfd2luZG93LCAoU0xPTkcpIExMU19QT1Aoc3RhY2spKTsKKwkJCUNDSF9wcmVj
ZWRlbmNlKHRkYmIsICZycGItPnJwYl93aW5kb3csIChTTE9ORykoSVBUUikgTExTX1BPUChzdGFj
aykpOwogCiAJQ0NIX3ByZWNlZGVuY2UodGRiYiwgJnJwYi0+cnBiX3dpbmRvdywgLXJwYi0+cnBi
X3RyYW5zYWN0aW9uKTsKIAlDQ0hfTUFSSyh0ZGJiLCAmcnBiLT5ycGJfd2luZG93KTsKQEAgLTI3
MzYsNyArMjczNiw3IEBACiAgICBJZiB0aGUgcGFnZSBuZWVkIHRvIGJlIGNvbXByZXNzZWQsIGNv
bXByZXNzIGl0LiAqLwogCiAJd2hpbGUgKCpzdGFjaykKLQkJQ0NIX3ByZWNlZGVuY2UodGRiYiwg
JnJwYi0+cnBiX3dpbmRvdywgKFNMT05HKSBMTFNfUE9QKHN0YWNrKSk7CisJCUNDSF9wcmVjZWRl
bmNlKHRkYmIsICZycGItPnJwYl93aW5kb3csIChTTE9ORykoSVBUUikgTExTX1BPUChzdGFjaykp
OwogCUNDSF9NQVJLKHRkYmIsICZycGItPnJwYl93aW5kb3cpOwogCWkgPSBwYWdlLT5kcGdfY291
bnQgKyAoKHNsb3QpID8gMCA6IDEpOwogCmRpZmYgLXVyTmFkIGZpcmViaXJkMi0xLjUuMy40ODcw
fi9zcmMvanJkL2V2bC5jcHAgZmlyZWJpcmQyLTEuNS4zLjQ4NzAvc3JjL2pyZC9ldmwuY3BwCi0t
LSBmaXJlYmlyZDItMS41LjMuNDg3MH4vc3JjL2pyZC9ldmwuY3BwCTIwMDYtMDItMDEgMjM6MDc6
MDIuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZDItMS41LjMuNDg3MC9zcmMvanJkL2V2bC5j
cHAJMjAwNi0wMi0wMSAyMzowNzowNC4wMDAwMDAwMDAgKzAyMDAKQEAgLTI0OCw3ICsyNDgsNyBA
QAogCQlhcmdfbnVtYmVyID0gKGludCkoSVBUUilub2RlLT5ub2RfYXJnW2VfYXJnX251bWJlcl07
CiAJCWRlc2MgPSAmZm9ybWF0LT5mbXRfZGVzY1thcmdfbnVtYmVyXTsKIAkJaW1wdXJlLT52bHVf
ZGVzYy5kc2NfYWRkcmVzcyA9Ci0JCQkoVUNIQVIgKikgcmVxdWVzdCArIG1lc3NhZ2UtPm5vZF9p
bXB1cmUgKyAoaW50KSBkZXNjLT5kc2NfYWRkcmVzczsKKwkJCShVQ0hBUiAqKSByZXF1ZXN0ICsg
bWVzc2FnZS0+bm9kX2ltcHVyZSArIChpbnQpKElQVFIpIGRlc2MtPmRzY19hZGRyZXNzOwogCQlp
bXB1cmUtPnZsdV9kZXNjLmRzY19kdHlwZSA9IGRlc2MtPmRzY19kdHlwZTsKIAkJaW1wdXJlLT52
bHVfZGVzYy5kc2NfbGVuZ3RoID0gZGVzYy0+ZHNjX2xlbmd0aDsKIAkJaW1wdXJlLT52bHVfZGVz
Yy5kc2Nfc2NhbGUgPSBkZXNjLT5kc2Nfc2NhbGU7CkBAIC0yODgsOCArMjg4LDggQEAKIAkJLy8g
bWF5IGhhcHBlbi4gSSBjaGVja2VkIHRyaWdnZXJzIGFuZCBpbnNlcnQvdXBkYXRlIHN0YXRlbWVu
dHMuCiAJCS8vIEFsbCBzZWVtIHRvIHdvcmsgZmluZS4KIAkJcmVjb3JkID0KLQkJCXJlcXVlc3Qt
PnJlcV9ycGJbKGludCkgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dXS5ycGJfcmVjb3JkOwot
CQlFVkxfZmllbGQoMCwgcmVjb3JkLCAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfZmxkX2lkXSwK
KwkJCXJlcXVlc3QtPnJlcV9ycGJbKGludCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9zdHJl
YW1dXS5ycGJfcmVjb3JkOworCQlFVkxfZmllbGQoMCwgcmVjb3JkLCAoVVNIT1JUKShJUFRSKSBu
b2RlLT5ub2RfYXJnW2VfZmxkX2lkXSwKIAkJCQkgICZpbXB1cmUtPnZsdV9kZXNjKTsKIAkJaWYg
KCFpbXB1cmUtPnZsdV9kZXNjLmRzY19hZGRyZXNzKQogCQkJRVJSX3Bvc3QoZ2RzX3JlYWRfb25s
eV9maWVsZCwgMCk7CkBAIC0zNTksNyArMzU5LDcgQEAKIAkJCWltcHVyZSA9IChJTlYpICgoU0NI
QVIgKikgdGRiYi0+dGRiYl9yZXF1ZXN0ICsgbm9kZS0+bm9kX2ltcHVyZSk7CiAJCQlTQk1fcmVz
ZXQoJmltcHVyZS0+aW52X2JpdG1hcCk7CiAJCQlkZXNjID0gRVZMX2V4cHIodGRiYiwgbm9kZS0+
bm9kX2FyZ1swXSk7Ci0JCQlpZCA9IDEgKyAyICogKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1sxXTsK
KwkJCWlkID0gMSArIDIgKiAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnWzFdOwogCQkJbnVt
YmVycyA9IGRlc2MtPmRzY19hZGRyZXNzOwogCQkJbnVtYmVycyArPSBpZCAqIHNpemVvZihTTE9O
Ryk7CiAJCQlNT1ZFX0ZBU1QobnVtYmVycywgJnJlbF9kYmtleSwgc2l6ZW9mKFNMT05HKSk7CkBA
IC04MjgsMTAgKzgyOCwxMCBAQAogCQkJfQogCQkJbWVzc2FnZSA9IG5vZGUtPm5vZF9hcmdbZV9h
cmdfbWVzc2FnZV07CiAJCQlmb3JtYXQgPSAoRk1UKSBtZXNzYWdlLT5ub2RfYXJnW2VfbXNnX2Zv
cm1hdF07Ci0JCQlkZXNjID0gJmZvcm1hdC0+Zm10X2Rlc2NbKGludCkgbm9kZS0+bm9kX2FyZ1tl
X2FyZ19udW1iZXJdXTsKKwkJCWRlc2MgPSAmZm9ybWF0LT5mbXRfZGVzY1soaW50KShJUFRSKSBu
b2RlLT5ub2RfYXJnW2VfYXJnX251bWJlcl1dOwogCiAJCQlpbXB1cmUtPnZsdV9kZXNjLmRzY19h
ZGRyZXNzID0gKFVDSEFSICopIHJlcXVlc3QgKwotCQkJCW1lc3NhZ2UtPm5vZF9pbXB1cmUgKyAo
aW50KSBkZXNjLT5kc2NfYWRkcmVzczsKKwkJCQltZXNzYWdlLT5ub2RfaW1wdXJlICsgKGludCko
SVBUUikgZGVzYy0+ZHNjX2FkZHJlc3M7CiAJCQlpbXB1cmUtPnZsdV9kZXNjLmRzY19kdHlwZSA9
IGRlc2MtPmRzY19kdHlwZTsKIAkJCWltcHVyZS0+dmx1X2Rlc2MuZHNjX2xlbmd0aCA9IGRlc2Mt
PmRzY19sZW5ndGg7CiAJCQlpbXB1cmUtPnZsdV9kZXNjLmRzY19zY2FsZSA9IGRlc2MtPmRzY19z
Y2FsZTsKQEAgLTg1MSwxNCArODUxLDE0IEBACiAJY2FzZSBub2RfZmllbGQ6CiAJCXsKIAkJCVJF
QyByZWNvcmQgPQotCQkJCXJlcXVlc3QtPnJlcV9ycGJbKGludClub2RlLT5ub2RfYXJnW2VfZmxk
X3N0cmVhbV1dLnJwYl9yZWNvcmQ7CisJCQkJcmVxdWVzdC0+cmVxX3JwYlsoaW50KShJUFRSKW5v
ZGUtPm5vZF9hcmdbZV9mbGRfc3RyZWFtXV0ucnBiX3JlY29yZDsKIAkJCS8qIEluIG9yZGVyIHRv
ICJtYXAgYSBudWxsIHRvIGEgZGVmYXVsdCIgdmFsdWUgKGluIEVWTF9maWVsZCgpKSwgCiAJCQkg
KiB0aGUgcmVsYXRpb24gYmxvY2sgaXMgcmVmZXJlbmNlZC4gCiAJCQkgKiBSZWZlcmVuY2U6IEJ1
ZyAxMDExNiwgMTA0MjQgCiAJCQkgKi8KLQkJCWlmICghRVZMX2ZpZWxkKHJlcXVlc3QtPnJlcV9y
cGJbKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dXS5ycGJfcmVsYXRpb24sCisJ
CQlpZiAoIUVWTF9maWVsZChyZXF1ZXN0LT5yZXFfcnBiWyhVU0hPUlQpKElQVFIpIG5vZGUtPm5v
ZF9hcmdbZV9mbGRfc3RyZWFtXV0ucnBiX3JlbGF0aW9uLAogCQkJCQkJCXJlY29yZCwKLQkJCQkJ
CQkoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfZmxkX2lkXSwKKwkJCQkJCQkoVVNIT1JUKShJUFRS
KSBub2RlLT5ub2RfYXJnW2VfZmxkX2lkXSwKIAkJCQkJCQkmaW1wdXJlLT52bHVfZGVzYykpCiAJ
CQl7CiAJCQkJcmVxdWVzdC0+cmVxX2ZsYWdzIHw9IHJlcV9udWxsOwpAQCAtOTk3LDcgKzk5Nyw3
IEBACiAJCQlVTE9ORyBleHRyYWN0X3BhcnQ7CiAKIAkJCWltcHVyZSA9IChWTFUpICgoU0NIQVIg
KikgcmVxdWVzdCArIG5vZGUtPm5vZF9pbXB1cmUpOwotCQkJZXh0cmFjdF9wYXJ0ID0gKFVMT05H
KSBub2RlLT5ub2RfYXJnW2VfZXh0cmFjdF9wYXJ0XTsKKwkJCWV4dHJhY3RfcGFydCA9IChVTE9O
RykoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2V4dHJhY3RfcGFydF07CiAJCQl2YWx1ZSA9IEVWTF9l
eHByKHRkYmIsIG5vZGUtPm5vZF9hcmdbZV9leHRyYWN0X3ZhbHVlXSk7CiAKIAkJCWltcHVyZS0+
dmx1X2Rlc2MuZHNjX2R0eXBlID0gZHR5cGVfc2hvcnQ7CkBAIC0xMTczLDggKzExNzMsOCBAQAog
CiAJCXN3aXRjaCAobm9kZS0+bm9kX3R5cGUpIHsKIAkJY2FzZSBub2RfZ2VuX2lkOgkJLyogcmV0
dXJuIGEgMzItYml0IGdlbmVyYXRvciB2YWx1ZSAqLwotCQkJaW1wdXJlLT52bHVfbWlzYy52bHVf
bG9uZyA9IChTTE9ORykgRFBNX2dlbl9pZCh0ZGJiLAotCQkJCQkJCQkJCQkJCQkgICAoU0xPTkcp
CisJCQlpbXB1cmUtPnZsdV9taXNjLnZsdV9sb25nID0gKFNMT05HKShJUFRSKSBEUE1fZ2VuX2lk
KHRkYmIsCisJCQkJCQkJCQkJCQkJCSAgIChTTE9ORykoSVBUUikKIAkJCQkJCQkJCQkJCQkJICAg
bm9kZS0+bm9kX2FyZwogCQkJCQkJCQkJCQkJCQkgICBbZV9nZW5faWRdLCAwLAogCQkJCQkJCQkJ
CQkJCQkgICBNT1ZfZ2V0X2ludDY0CkBAIC0xMTg5LDcgKzExODksNyBAQAogCiAJCWNhc2Ugbm9k
X2dlbl9pZDI6CiAJCQlpbXB1cmUtPnZsdV9taXNjLnZsdV9pbnQ2NCA9IERQTV9nZW5faWQodGRi
YiwKLQkJCQkJCQkJCQkJCQkoU0xPTkcpCisJCQkJCQkJCQkJCQkJKFNMT05HKShJUFRSKQogCQkJ
CQkJCQkJCQkJCW5vZGUtPm5vZF9hcmdbZV9nZW5faWRdLAogCQkJCQkJCQkJCQkJCTAsCiAJCQkJ
CQkJCQkJCQkJTU9WX2dldF9pbnQ2NCh2YWx1ZXNbMF0sCkBAIC0xMzgzLDcgKzEzODMsNyBAQAog
CQlyZXR1cm4gRkFMU0U7CiAJfQogCi0JZGVzYy0+ZHNjX2FkZHJlc3MgPSByZWNvcmQtPnJlY19k
YXRhICsgKGludCkgZGVzYy0+ZHNjX2FkZHJlc3M7CisJZGVzYy0+ZHNjX2FkZHJlc3MgPSByZWNv
cmQtPnJlY19kYXRhICsgKGludCkoSVBUUikgZGVzYy0+ZHNjX2FkZHJlc3M7CiAKIAlpZiAoVEVT
VF9OVUxMKHJlY29yZCwgaWQpKSB7CiAJCWRlc2MtPmRzY19mbGFncyB8PSBEU0NfbnVsbDsKQEAg
LTE3MjUsOSArMTcyNSw5IEBACiAJewogCQlmcm9tID0gKCpwdHIpLT5ub2RfYXJnW2VfYXNnbl9m
cm9tXTsKIAkJZmllbGQgPSAoKnB0ciktPm5vZF9hcmdbZV9hc2duX3RvXTsKLQkJaWQgPSAoVVNI
T1JUKSBmaWVsZC0+bm9kX2FyZ1tlX2ZsZF9pZF07CisJCWlkID0gKFVTSE9SVCkoSVBUUikgZmll
bGQtPm5vZF9hcmdbZV9mbGRfaWRdOwogCQlyZWNvcmQgPQotCQkJcmVxdWVzdC0+cmVxX3JwYlso
aW50KSBmaWVsZC0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dXS5ycGJfcmVjb3JkOworCQkJcmVxdWVz
dC0+cmVxX3JwYlsoaW50KShJUFRSKSBmaWVsZC0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dXS5ycGJf
cmVjb3JkOwogCQlpbXB1cmUgPSAoVkxVWCkgKChTQ0hBUiAqKSByZXF1ZXN0ICsgZnJvbS0+bm9k
X2ltcHVyZSk7CiAJCXN3aXRjaCAoZnJvbS0+bm9kX3R5cGUpCiAJCXsKQEAgLTMzOTUsNyArMzM5
NSw3IEBACiAKIAlyZXF1ZXN0ID0gdGRiYi0+dGRiYl9yZXF1ZXN0OwogCWltcHVyZSA9IChWTFUp
ICgoU0NIQVIgKikgcmVxdWVzdCArIG5vZGUtPm5vZF9pbXB1cmUpOwotCXJwYiA9ICZyZXF1ZXN0
LT5yZXFfcnBiWyhpbnQpIG5vZGUtPm5vZF9hcmdbMF1dOworCXJwYiA9ICZyZXF1ZXN0LT5yZXFf
cnBiWyhpbnQpKElQVFIpIG5vZGUtPm5vZF9hcmdbMF1dOwogCXJlbGF0aW9uID0gcnBiLT5ycGJf
cmVsYXRpb247CiAKIC8qIEZvcm1hdCBkYmtleSBhcyB2ZWN0b3Igb2YgcmVsYXRpb24gaWQsIHJl
Y29yZCBudW1iZXIgKi8KQEAgLTQ1MDAsNyArNDUwMCw3IEBACiAKIAlyZXF1ZXN0ID0gdGRiYi0+
dGRiYl9yZXF1ZXN0OwogCWltcHVyZSA9IChWTFUpICgoU0NIQVIgKikgcmVxdWVzdCArIG5vZGUt
Pm5vZF9pbXB1cmUpOwotCXJwYiA9ICZyZXF1ZXN0LT5yZXFfcnBiWyhpbnQpIG5vZGUtPm5vZF9h
cmdbMF1dOworCXJwYiA9ICZyZXF1ZXN0LT5yZXFfcnBiWyhpbnQpKElQVFIpIG5vZGUtPm5vZF9h
cmdbMF1dOwogCiAvKiBJZiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBoYXMgdXBkYXRlZCB0aGUg
cmVjb3JkLCB0aGUgcmVjb3JkIHZlcnNpb24KICAqIGNvbWluZyBpbiBmcm9tIERTUUwgd2lsbCBo
YXZlIHRoZSBvcmlnaW5hbCB0cmFuc2FjdGlvbiAjIChvciBjdXJyZW50CmRpZmYgLXVyTmFkIGZp
cmViaXJkMi0xLjUuMy40ODcwfi9zcmMvanJkL2V4ZS5jcHAgZmlyZWJpcmQyLTEuNS4zLjQ4NzAv
c3JjL2pyZC9leGUuY3BwCi0tLSBmaXJlYmlyZDItMS41LjMuNDg3MH4vc3JjL2pyZC9leGUuY3Bw
CTIwMDYtMDItMDEgMjM6MDc6MDIuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZDItMS41LjMu
NDg3MC9zcmMvanJkL2V4ZS5jcHAJMjAwNi0wMi0wMSAyMzowNzowNC4wMDAwMDAwMDAgKzAyMDAK
QEAgLTM3NSw4ICszNzUsOCBAQAogCiAJaWYgKHRvLT5ub2RfdHlwZSA9PSBub2RfZmllbGQpCiAJ
ewotCQlTU0hPUlQgaWQgPSAoVVNIT1JUKSB0by0+bm9kX2FyZ1tlX2ZsZF9pZF07Ci0JCVJFQyBy
ZWNvcmQgPSByZXF1ZXN0LT5yZXFfcnBiWyhpbnQpIHRvLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV1d
LnJwYl9yZWNvcmQ7CisJCVNTSE9SVCBpZCA9IChVU0hPUlQpKElQVFIpIHRvLT5ub2RfYXJnW2Vf
ZmxkX2lkXTsKKwkJUkVDIHJlY29yZCA9IHJlcXVlc3QtPnJlcV9ycGJbKGludCkoSVBUUikgdG8t
Pm5vZF9hcmdbZV9mbGRfc3RyZWFtXV0ucnBiX3JlY29yZDsKIAkJaWYgKG51bGwpIHsKIAkJCVNF
VF9OVUxMKHJlY29yZCwgaWQpOwogCQl9IGVsc2UgewpAQCAtNjM5LDcgKzYzOSw3IEBACiAJbWVz
c2FnZSA9IHJlcXVlc3QtPnJlcV9tZXNzYWdlOwogCWZvcm1hdCA9IChGTVQpIG1lc3NhZ2UtPm5v
ZF9hcmdbZV9tc2dfZm9ybWF0XTsKIAotCWlmIChtc2cgIT0gKFVTSE9SVCkgbWVzc2FnZS0+bm9k
X2FyZ1tlX21zZ19udW1iZXJdKQorCWlmIChtc2cgIT0gKFVTSE9SVCkoSVBUUikgbWVzc2FnZS0+
bm9kX2FyZ1tlX21zZ19udW1iZXJdKQogCQlFUlJfcG9zdChnZHNfcmVxX3N5bmMsIDApOwogCiAJ
aWYgKGxlbmd0aCAhPSBmb3JtYXQtPmZtdF9sZW5ndGgpCkBAIC03ODgsNyArNzg4LDcgQEAKIAkJ
Zm9yIChwdHIgPSBub2RlLT5ub2RfYXJnLCBlbmQgPSBwdHIgKyBub2RlLT5ub2RfY291bnQ7IHB0
ciA8IGVuZDsKIAkJCSBwdHIrKykgewogCQkJbWVzc2FnZSA9ICgqcHRyKS0+bm9kX2FyZ1tlX3Nl
bmRfbWVzc2FnZV07Ci0JCQlpZiAoKFVTSE9SVCkgbWVzc2FnZS0+bm9kX2FyZ1tlX21zZ19udW1i
ZXJdID09IG1zZykgeworCQkJaWYgKChVU0hPUlQpKElQVFIpIG1lc3NhZ2UtPm5vZF9hcmdbZV9t
c2dfbnVtYmVyXSA9PSBtc2cpIHsKIAkJCQlyZXF1ZXN0LT5yZXFfbmV4dCA9ICpwdHI7CiAJCQkJ
YnJlYWs7CiAJCQl9CkBAIC03OTgsNyArNzk4LDcgQEAKIAogCWZvcm1hdCA9IChGTVQpIG1lc3Nh
Z2UtPm5vZF9hcmdbZV9tc2dfZm9ybWF0XTsKIAotCWlmIChtc2cgIT0gKFVTSE9SVCkgbWVzc2Fn
ZS0+bm9kX2FyZ1tlX21zZ19udW1iZXJdKQorCWlmIChtc2cgIT0gKFVTSE9SVCkoSVBUUikgbWVz
c2FnZS0+bm9kX2FyZ1tlX21zZ19udW1iZXJdKQogCQlFUlJfcG9zdChnZHNfcmVxX3N5bmMsIDAp
OwogCiAJaWYgKGxlbmd0aCAhPSBmb3JtYXQtPmZtdF9sZW5ndGgpCkBAIC0xMDQ5LDcgKzEwNDks
NyBAQAogCQlkZXNjID0gJmZvcm1hdC0+Zm10X2Rlc2Nbbl07CiAJCWlmICghZGVzYy0+ZHNjX2Fk
ZHJlc3MpCiAJCQljb250aW51ZTsKLQkJcCA9IHJlY29yZC0+cmVjX2RhdGEgKyAoU0xPTkcpIGRl
c2MtPmRzY19hZGRyZXNzOworCQlwID0gcmVjb3JkLT5yZWNfZGF0YSArIChTTE9ORykoSVBUUikg
ZGVzYy0+ZHNjX2FkZHJlc3M7CiAJCWlmIChURVNUX05VTEwocmVjb3JkLCBuKSkKIAkJewogCQkJ
aWYgKGxlbmd0aCA9IGRlc2MtPmRzY19sZW5ndGgpCkBAIC0xMTM0LDcgKzExMzQsNyBAQAogCiAJ
cmVxdWVzdCA9IHRkYmItPnRkYmJfcmVxdWVzdDsKIAl0cmFuc2FjdGlvbiA9IHJlcXVlc3QtPnJl
cV90cmFuc2FjdGlvbjsKLQlycGIgPSAmcmVxdWVzdC0+cmVxX3JwYlsoaW50KSBub2RlLT5ub2Rf
YXJnW2VfZXJhc2Vfc3RyZWFtXV07CisJcnBiID0gJnJlcXVlc3QtPnJlcV9ycGJbKGludCkoSVBU
Uikgbm9kZS0+bm9kX2FyZ1tlX2VyYXNlX3N0cmVhbV1dOwogCXJlbGF0aW9uID0gcnBiLT5ycGJf
cmVsYXRpb247CiAKICNpZmRlZiBQQ19FTkdJTkUKQEAgLTIwMTUsNyArMjAxNSw3IEBACiAJCQlj
YXNlIGpyZF9yZXE6OnJlcV9ldmFsdWF0ZToKIAkJCQlpZiAodHJhbnNhY3Rpb24gIT0gZGJiLT5k
YmJfc3lzX3RyYW5zKSB7CiAKLQkJCQkJVUNIQVIgb3BlcmF0aW9uID0gKFVDSEFSKSBub2RlLT5u
b2RfYXJnW2Vfc2F2X29wZXJhdGlvbl07CisJCQkJCVVDSEFSIG9wZXJhdGlvbiA9IChVQ0hBUiko
SVBUUikgbm9kZS0+bm9kX2FyZ1tlX3Nhdl9vcGVyYXRpb25dOwogCQkJCQlURVhUICogbm9kZV9z
YXZlcG9pbnRfbmFtZSA9IChURVhUKikgbm9kZS0+bm9kX2FyZ1tlX3Nhdl9uYW1lXTsgCiAKIAkJ
CQkJLy8gU2tpcCB0aGUgc2F2ZXBvaW50IGNyZWF0ZWQgYnkgRVhFX3N0YXJ0CkBAIC0yMzI4LDcg
KzIzMjgsNyBAQAogCQkJCWJyZWFrOwogCiAJCQljYXNlIGpyZF9yZXE6OnJlcV91bndpbmQ6Ci0J
CQkJaWYgKChyZXF1ZXN0LT5yZXFfbGFiZWwgPT0gKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tlX2xi
bF9sYWJlbF0pICYmCisJCQkJaWYgKChyZXF1ZXN0LT5yZXFfbGFiZWwgPT0gKFVTSE9SVCkoSVBU
Uikgbm9kZS0+bm9kX2FyZ1tlX2xibF9sYWJlbF0pICYmCiAJCQkJCQkocmVxdWVzdC0+cmVxX2Zs
YWdzICYgKHJlcV9sZWF2ZSB8IHJlcV9lcnJvcl9oYW5kbGVyKSkpIHsKIAkJCQkJcmVxdWVzdC0+
cmVxX2ZsYWdzICY9IH5yZXFfbGVhdmU7CiAJCQkJCXJlcXVlc3QtPnJlcV9vcGVyYXRpb24gPSBq
cmRfcmVxOjpyZXFfcmV0dXJuOwpAQCAtMjM0Miw3ICsyMzQyLDcgQEAKIAkJY2FzZSBub2RfbGVh
dmU6CiAJCQlyZXF1ZXN0LT5yZXFfZmxhZ3MgfD0gcmVxX2xlYXZlOwogCQkJcmVxdWVzdC0+cmVx
X29wZXJhdGlvbiA9IGpyZF9yZXE6OnJlcV91bndpbmQ7Ci0JCQlyZXF1ZXN0LT5yZXFfbGFiZWwg
PSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnWzBdOworCQkJcmVxdWVzdC0+cmVxX2xhYmVsID0gKFVT
SE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1swXTsKIAkJCW5vZGUgPSBub2RlLT5ub2RfcGFyZW50
OwogCQkJYnJlYWs7CiAKQEAgLTI2NTIsNyArMjY1Miw3IEBACiAJCQkJRFNDICpkZXNjOwogCiAJ
CQkJZGVzYyA9IEVWTF9leHByKHRkYmIsIG5vZGUtPm5vZF9hcmdbZV9nZW5fdmFsdWVdKTsKLQkJ
CQkodm9pZCkgRFBNX2dlbl9pZCh0ZGJiLCAoU0xPTkcpIG5vZGUtPm5vZF9hcmdbZV9nZW5faWRd
LCAxLAorCQkJCSh2b2lkKSBEUE1fZ2VuX2lkKHRkYmIsIChTTE9ORykoSVBUUikgbm9kZS0+bm9k
X2FyZ1tlX2dlbl9pZF0sIDEsCiAJCQkJCQkJCSAgTU9WX2dldF9pbnQ2NChkZXNjLCAwKSk7CiAJ
CQkJcmVxdWVzdC0+cmVxX29wZXJhdGlvbiA9IGpyZF9yZXE6OnJlcV9yZXR1cm47CiAJCQl9CkBA
IC0yNjY0LDcgKzI2NjQsNyBAQAogCQkJCURTQyAqZGVzYzsKIAogCQkJCWRlc2MgPSBFVkxfZXhw
cih0ZGJiLCBub2RlLT5ub2RfYXJnW2VfZ2VuX3ZhbHVlXSk7Ci0JCQkJKHZvaWQpIERQTV9nZW5f
aWQodGRiYiwgKFNMT05HKSBub2RlLT5ub2RfYXJnW2VfZ2VuX2lkXSwgMSwKKwkJCQkodm9pZCkg
RFBNX2dlbl9pZCh0ZGJiLCAoU0xPTkcpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9nZW5faWRdLCAx
LAogCQkJCQkJCQkgIE1PVl9nZXRfaW50NjQoZGVzYywgMCkpOwogCQkJCXJlcXVlc3QtPnJlcV9v
cGVyYXRpb24gPSBqcmRfcmVxOjpyZXFfcmV0dXJuOwogCQkJfQpAQCAtMjc5NCwxMSArMjc5NCwx
MSBAQAogCXRyYW5zYWN0aW9uID0gcmVxdWVzdC0+cmVxX3RyYW5zYWN0aW9uOwogCWltcHVyZSA9
IChTVEEpICgoU0NIQVIgKikgcmVxdWVzdCArIG5vZGUtPm5vZF9pbXB1cmUpOwogCi0Jb3JnX3N0
cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9tb2Rfb3JnX3N0cmVhbV07CisJb3JnX3N0
cmVhbSA9IChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9tb2Rfb3JnX3N0cmVhbV07CiAJ
b3JnX3JwYiA9ICZyZXF1ZXN0LT5yZXFfcnBiW29yZ19zdHJlYW1dOwogCXJlbGF0aW9uID0gb3Jn
X3JwYi0+cnBiX3JlbGF0aW9uOwogCi0JbmV3X3N0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9h
cmdbZV9tb2RfbmV3X3N0cmVhbV07CisJbmV3X3N0cmVhbSA9IChVU0hPUlQpKElQVFIpIG5vZGUt
Pm5vZF9hcmdbZV9tb2RfbmV3X3N0cmVhbV07CiAJbmV3X3JwYiA9ICZyZXF1ZXN0LT5yZXFfcnBi
W25ld19zdHJlYW1dOwogCiAjaWZkZWYgUENfRU5HSU5FCkBAIC0zNzk1LDcgKzM3OTUsNyBAQAog
CUpSRF9SRVEgICAgcmVxdWVzdCAgICAgPSB0ZGJiLT50ZGJiX3JlcXVlc3Q7CiAJSlJEX1RSQSAg
ICB0cmFuc2FjdGlvbiA9IHJlcXVlc3QtPnJlcV90cmFuc2FjdGlvbjsKIAlTVEEgICAgaW1wdXJl
ICAgICAgPSAoU1RBKSAoKFNDSEFSICopIHJlcXVlc3QgKyBub2RlLT5ub2RfaW1wdXJlKTsKLQlT
U0hPUlQgc3RyZWFtICAgICAgPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2Vfc3RvX3JlbGF0aW9u
XS0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOworCVNTSE9SVCBzdHJlYW0gICAgICA9IChVU0hPUlQp
KElQVFIpIG5vZGUtPm5vZF9hcmdbZV9zdG9fcmVsYXRpb25dLT5ub2RfYXJnW2VfcmVsX3N0cmVh
bV07CiAJUlBCKiAgIHJwYiAgICAgICAgID0gJnJlcXVlc3QtPnJlcV9ycGJbc3RyZWFtXTsKIAlK
UkRfUkVMICAgIHJlbGF0aW9uICAgID0gcnBiLT5ycGJfcmVsYXRpb247CiAKQEAgLTQyMDEsOCAr
NDIwMSw4IEBACiAKIAkJCWlmIChub2RlLT5ub2RfdHlwZSA9PSBub2RfZmllbGQpCiAJCQl7Ci0J
CQkJc3RyZWFtID0gKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dOwotCQkJCWlk
ID0gKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9pZF07CisJCQkJc3RyZWFtID0gKFVTSE9S
VCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dOworCQkJCWlkID0gKFVTSE9SVCko
SVBUUikgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9pZF07CiAJCQkJcmVsYXRpb24gPSByZXF1ZXN0LT5y
ZXFfcnBiW3N0cmVhbV0ucnBiX3JlbGF0aW9uOwogCiAJCQkJaWYgKCh2ZWN0b3IgPSByZWxhdGlv
bi0+cmVsX2ZpZWxkcykgJiYKZGlmZiAtdXJOYWQgZmlyZWJpcmQyLTEuNS4zLjQ4NzB+L3NyYy9q
cmQvZXh0LmNwcCBmaXJlYmlyZDItMS41LjMuNDg3MC9zcmMvanJkL2V4dC5jcHAKLS0tIGZpcmVi
aXJkMi0xLjUuMy40ODcwfi9zcmMvanJkL2V4dC5jcHAJMjAwNi0wMi0wMSAyMzowNzowMi4wMDAw
MDAwMDAgKzAyMDAKKysrIGZpcmViaXJkMi0xLjUuMy40ODcwL3NyYy9qcmQvZXh0LmNwcAkyMDA2
LTAyLTAxIDIzOjA3OjA0LjAwMDAwMDAwMCArMDIwMApAQCAtMjY2LDcgKzI2Niw3IEBACiAJcmVj
b3JkID0gcnBiLT5ycGJfcmVjb3JkOwogCWZvcm1hdCA9IHJlY29yZC0+cmVjX2Zvcm1hdDsKIAot
CW9mZnNldCA9IChTU0hPUlQpIGZvcm1hdC0+Zm10X2Rlc2NbMF0uZHNjX2FkZHJlc3M7CisJb2Zm
c2V0ID0gKFNTSE9SVCkoSVBUUikgZm9ybWF0LT5mbXRfZGVzY1swXS5kc2NfYWRkcmVzczsKIAlw
ID0gcmVjb3JkLT5yZWNfZGF0YSArIG9mZnNldDsKIAlsID0gcmVjb3JkLT5yZWNfbGVuZ3RoIC0g
b2Zmc2V0OwogCkBAIC0yOTksNyArMjk5LDcgQEAKIAkJCWNvbnRpbnVlOwogCQlpZiAoIChsaXRl
cmFsID0gKExJVCkgZmllbGQtPmZsZF9taXNzaW5nX3ZhbHVlKSApIHsKIAkJCWRlc2MgPSAqZGVz
Y19wdHI7Ci0JCQlkZXNjLmRzY19hZGRyZXNzID0gcmVjb3JkLT5yZWNfZGF0YSArIChpbnQpIGRl
c2MuZHNjX2FkZHJlc3M7CisJCQlkZXNjLmRzY19hZGRyZXNzID0gcmVjb3JkLT5yZWNfZGF0YSAr
IChpbnQpKElQVFIpIGRlc2MuZHNjX2FkZHJlc3M7CiAJCQlpZiAoIU1PVl9jb21wYXJlKCZsaXRl
cmFsLT5saXRfZGVzYywgJmRlc2MpKQogCQkJCWNvbnRpbnVlOwogCQl9CkBAIC01MTIsNyArNTEy
LDcgQEAKIAkJCWRlc2NfcHRyLT5kc2NfbGVuZ3RoICYmCiAJCQlURVNUX05VTEwocmVjb3JkLCBp
KSkKIAkJewotCQkJcCA9IHJlY29yZC0+cmVjX2RhdGEgKyAoaW50KSBkZXNjX3B0ci0+ZHNjX2Fk
ZHJlc3M7CisJCQlwID0gcmVjb3JkLT5yZWNfZGF0YSArIChpbnQpKElQVFIpIGRlc2NfcHRyLT5k
c2NfYWRkcmVzczsKIAkJCWlmICggKGxpdGVyYWwgPSAoTElUKSBmaWVsZC0+ZmxkX21pc3Npbmdf
dmFsdWUpICkgewogCQkJCWRlc2MgPSAqZGVzY19wdHI7CiAJCQkJZGVzYy5kc2NfYWRkcmVzcyA9
IHA7CkBAIC01MjgsNyArNTI4LDcgQEAKIAkJfQogCX0KIAotCW9mZnNldCA9IChVU0hPUlQpIGZv
cm1hdC0+Zm10X2Rlc2NbMF0uZHNjX2FkZHJlc3M7CisJb2Zmc2V0ID0gKFVTSE9SVCkoSVBUUikg
Zm9ybWF0LT5mbXRfZGVzY1swXS5kc2NfYWRkcmVzczsKIAlwID0gcmVjb3JkLT5yZWNfZGF0YSAr
IG9mZnNldDsKIAlsID0gcmVjb3JkLT5yZWNfbGVuZ3RoIC0gb2Zmc2V0OwogCmRpZmYgLXVyTmFk
IGZpcmViaXJkMi0xLjUuMy40ODcwfi9zcmMvanJkL2dkcy5jcHAgZmlyZWJpcmQyLTEuNS4zLjQ4
NzAvc3JjL2pyZC9nZHMuY3BwCi0tLSBmaXJlYmlyZDItMS41LjMuNDg3MH4vc3JjL2pyZC9nZHMu
Y3BwCTIwMDYtMDItMDEgMjM6MDc6MDMuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZDItMS41
LjMuNDg3MC9zcmMvanJkL2dkcy5jcHAJMjAwNi0wMi0wMSAyMzowNzowNC4wMDAwMDAwMDAgKzAy
MDAKQEAgLTIyODcsNyArMjI4Nyw3IEBACiAJCXJldHVybiByZXN1bHQ7CiAKIAlpZiAoc3RkaW9f
ZmxhZykKLQkJaWYgKCEocmVzdWx0ID0gaWJfZmRvcGVuKChpbnQpIHJlc3VsdCwgIncrIikpKQor
CQlpZiAoIShyZXN1bHQgPSBpYl9mZG9wZW4oKGludCkoSVBUUikgcmVzdWx0LCAidysiKSkpCiAJ
CQlyZXR1cm4gKHZvaWQgKiktMTsKIAogCWlmIChleHBhbmRlZF9zdHJpbmcpCmRpZmYgLXVyTmFk
IGZpcmViaXJkMi0xLjUuMy40ODcwfi9zcmMvanJkL2lkeC5jcHAgZmlyZWJpcmQyLTEuNS4zLjQ4
NzAvc3JjL2pyZC9pZHguY3BwCi0tLSBmaXJlYmlyZDItMS41LjMuNDg3MH4vc3JjL2pyZC9pZHgu
Y3BwCTIwMDYtMDItMDEgMjM6MDc6MDIuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZDItMS41
LjMuNDg3MC9zcmMvanJkL2lkeC5jcHAJMjAwNi0wMi0wMSAyMzowNzowNC4wMDAwMDAwMDAgKzAy
MDAKQEAgLTEwNTUsMTIgKzEwNTUsMTIgQEAKIAkJCSBpbmRleF9udW1iZXIgPCBpZHgtPmlkeF9m
b3JlaWduX3ByaW1hcmllcy0+Y291bnQoKTsKIAkJCSBpbmRleF9udW1iZXIrKykgewogCQkJaWYg
KGlkeC0+aWR4X2lkICE9Ci0JCQkJKFVDSEFSKSAoKmlkeC0+aWR4X2ZvcmVpZ25fcHJpbWFyaWVz
KVtpbmRleF9udW1iZXJdKSBjb250aW51ZTsKKwkJCQkoVUNIQVIpKElQVFIpICgqaWR4LT5pZHhf
Zm9yZWlnbl9wcmltYXJpZXMpW2luZGV4X251bWJlcl0pIGNvbnRpbnVlOwogCQkJcGFydG5lcl9y
ZWxhdGlvbiA9CiAJCQkJTUVUX3JlbGF0aW9uKHRkYmIsCi0JCQkJCQkJIChpbnQpICgqaWR4LT5p
ZHhfZm9yZWlnbl9yZWxhdGlvbnMpW2luZGV4X251bWJlcl0pOworCQkJCQkJCSAoaW50KShJUFRS
KSAoKmlkeC0+aWR4X2ZvcmVpZ25fcmVsYXRpb25zKVtpbmRleF9udW1iZXJdKTsKIAkJCWluZGV4
X2lkID0KLQkJCQkoVVNIT1JUKSAoKmlkeC0+aWR4X2ZvcmVpZ25faW5kZXhlcylbaW5kZXhfbnVt
YmVyXTsKKwkJCQkoVVNIT1JUKShJUFRSKSAoKmlkeC0+aWR4X2ZvcmVpZ25faW5kZXhlcylbaW5k
ZXhfbnVtYmVyXTsKIAkJCWlmICggKHJlc3VsdCA9CiAJCQkJY2hlY2tfcGFydG5lcl9pbmRleCh0
ZGJiLCByZWxhdGlvbiwgcmVjb3JkLCB0cmFuc2FjdGlvbiwgaWR4LAogCQkJCQkJCQkJcGFydG5l
cl9yZWxhdGlvbiwgaW5kZXhfaWQpKSApCmRpZmYgLXVyTmFkIGZpcmViaXJkMi0xLjUuMy40ODcw
fi9zcmMvanJkL2luZi5jcHAgZmlyZWJpcmQyLTEuNS4zLjQ4NzAvc3JjL2pyZC9pbmYuY3BwCi0t
LSBmaXJlYmlyZDItMS41LjMuNDg3MH4vc3JjL2pyZC9pbmYuY3BwCTIwMDMtMDYtMDggMTY6MTM6
MjMuMDAwMDAwMDAwICswMzAwCisrKyBmaXJlYmlyZDItMS41LjMuNDg3MC9zcmMvanJkL2luZi5j
cHAJMjAwNi0wMi0wMSAyMzowNzoyMy4wMDAwMDAwMDAgKzAyMDAKQEAgLTk3Miw3ICs5NzIsNyBA
QAogCQkJbm9kZSA9IHJlcXVlc3QtPnJlcV9tZXNzYWdlOwogCQkJaWYgKGl0ZW0gPT0gZ2RzX2lu
Zm9fbWVzc2FnZV9udW1iZXIpCiAJCQkJbGVuZ3RoID0KLQkJCQkJSU5GX2NvbnZlcnQoKFNMT05H
KSBub2RlLT5ub2RfYXJnW2VfbXNnX251bWJlcl0sCisJCQkJCUlORl9jb252ZXJ0KChTTE9ORyko
SVBUUikgbm9kZS0+bm9kX2FyZ1tlX21zZ19udW1iZXJdLAogCQkJCQkJCQlidWZmZXJfcHRyKTsK
IAkJCWVsc2UgewogCQkJCWZvcm1hdCA9IChGTVQpIG5vZGUtPm5vZF9hcmdbZV9tc2dfZm9ybWF0
XTsKZGlmZiAtdXJOYWQgZmlyZWJpcmQyLTEuNS4zLjQ4NzB+L3NyYy9qcmQvbWV0LmVwcCBmaXJl
YmlyZDItMS41LjMuNDg3MC9zcmMvanJkL21ldC5lcHAKLS0tIGZpcmViaXJkMi0xLjUuMy40ODcw
fi9zcmMvanJkL21ldC5lcHAJMjAwNi0wMi0wMSAyMzowNzowMi4wMDAwMDAwMDAgKzAyMDAKKysr
IGZpcmViaXJkMi0xLjUuMy40ODcwL3NyYy9qcmQvbWV0LmVwcAkyMDA2LTAyLTAxIDIzOjA3OjA0
LjAwMDAwMDAwMCArMDIwMApAQCAtOTMyLDcgKzkzMiw3IEBACiAJCQlpZiAoZGVzYy0+ZHNjX2Fk
ZHJlc3MpCiAJCQl7CiAJCQkJZm9ybWF0LT5mbXRfbGVuZ3RoID0KLQkJCQkJKFVMT05HKSBkZXNj
LT5kc2NfYWRkcmVzcyArIGRlc2MtPmRzY19sZW5ndGg7CisJCQkJCShVTE9ORykoSVBUUikgZGVz
Yy0+ZHNjX2FkZHJlc3MgKyBkZXNjLT5kc2NfbGVuZ3RoOwogCQkJCWJyZWFrOwogCQkJfQogCQl9
CkBAIC0yMTMzLDEzICsyMTMzLDEzIEBACiAJCQkJIGluZGV4X251bWJlciA8IHJlZmVyZW5jZXMt
PmZyZ25fcmVmZXJlbmNlX2lkcy0+Y291bnQoKTsKIAkJCQkgaW5kZXhfbnVtYmVyKyspCiAJCQl7
Ci0JCQkJaWYgKGlkeC0+aWR4X2lkID09IChVQ0hBUikgKCpyZWZlcmVuY2VzLT5mcmduX3JlZmVy
ZW5jZV9pZHMpCisJCQkJaWYgKGlkeC0+aWR4X2lkID09IChVQ0hBUikoSVBUUikgKCpyZWZlcmVu
Y2VzLT5mcmduX3JlZmVyZW5jZV9pZHMpCiAJCQkJCQkJCQkJCVtpbmRleF9udW1iZXJdKQogCQkJ
CXsKIAkJCQkJaWR4LT5pZHhfcHJpbWFyeV9yZWxhdGlvbiA9Ci0JCQkJCQkoVVNIT1JUKSAoKnJl
ZmVyZW5jZXMtPmZyZ25fcmVsYXRpb25zKVtpbmRleF9udW1iZXJdOworCQkJCQkJKFVTSE9SVCko
SVBUUikgKCpyZWZlcmVuY2VzLT5mcmduX3JlbGF0aW9ucylbaW5kZXhfbnVtYmVyXTsKIAkJCQkJ
aWR4LT5pZHhfcHJpbWFyeV9pbmRleCA9Ci0JCQkJCQkoVUNIQVIpICgqcmVmZXJlbmNlcy0+ZnJn
bl9pbmRleGVzKVtpbmRleF9udW1iZXJdOworCQkJCQkJKFVDSEFSKShJUFRSKSAoKnJlZmVyZW5j
ZXMtPmZyZ25faW5kZXhlcylbaW5kZXhfbnVtYmVyXTsKIAkJCQkJcmV0dXJuIFRSVUU7CiAJCQkJ
fQogCQkJfQpAQCAtMjE1NSw3ICsyMTU1LDcgQEAKIAkJCQkgaW5kZXhfbnVtYmVyIDwgZGVwZW5k
ZW5jaWVzLT5wcmltX3JlZmVyZW5jZV9pZHMtPmNvdW50KCk7CiAJCQkJIGluZGV4X251bWJlcisr
KQogCQkJewotCQkJCWlmIChpZHgtPmlkeF9pZCA9PSAoVUNIQVIpICgqZGVwZW5kZW5jaWVzLT5w
cmltX3JlZmVyZW5jZV9pZHMpCisJCQkJaWYgKGlkeC0+aWR4X2lkID09IChVQ0hBUikoSVBUUikg
KCpkZXBlbmRlbmNpZXMtPnByaW1fcmVmZXJlbmNlX2lkcykKIAkJCQkJCQkJCQkJW2luZGV4X251
bWJlcl0pCiAJCQkJewogCQkJCQlpZHgtPmlkeF9mb3JlaWduX3ByaW1hcmllcyA9CkBAIC0zMDAx
LDEwICszMDAxLDEwIEBACiAJCXsKIAkJCWlmICggKG5vZGUgPSBjc2JfLT5jc2JfcnB0W2ldLmNz
Yl9tZXNzYWdlKSApCiAJCQl7Ci0JCQkJaWYgKChpbnQpIG5vZGUtPm5vZF9hcmdbZV9tc2dfbnVt
YmVyXSA9PSAwKQorCQkJCWlmICgoaW50KShJUFRSKSBub2RlLT5ub2RfYXJnW2VfbXNnX251bWJl
cl0gPT0gMCkKIAkJCQl7CiAJCQkJCXByb2NlZHVyZS0+cHJjX2lucHV0X21zZyA9IG5vZGU7Ci0J
CQkJfSBlbHNlIGlmICgoaW50KSBub2RlLT5ub2RfYXJnW2VfbXNnX251bWJlcl0gPT0gMSkKKwkJ
CQl9IGVsc2UgaWYgKChpbnQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9tc2dfbnVtYmVyXSA9PSAx
KQogCQkJCXsKIAkJCQkJcHJvY2VkdXJlLT5wcmNfb3V0cHV0X21zZyA9IG5vZGU7CiAJCQkJfQpA
QCAtNDU4MCw3ICs0NTgwLDcgQEAKIAkJbm9kZSA9IChKUkRfTk9EKSBMTFNfUE9QKCZjc2ItPmNz
Yl9kZXBlbmRlbmNpZXMpOwogCQlpZiAoIW5vZGUtPm5vZF9hcmdbZV9kZXBfb2JqZWN0XSkKIAkJ
CWNvbnRpbnVlOwotCQlkcGRvX3R5cGUgPSAoU1NIT1JUKSBub2RlLT5ub2RfYXJnW2VfZGVwX29i
amVjdF90eXBlXTsKKwkJZHBkb190eXBlID0gKFNTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tl
X2RlcF9vYmplY3RfdHlwZV07CiAgICAgICAgIHJlbGF0aW9uID0gTlVMTDsKICAgICAgICAgcHJv
Y2VkdXJlID0gTlVMTDsKICAgICAgICAgc3dpdGNoIChkcGRvX3R5cGUpIHsKQEAgLTQ1OTMsMTMg
KzQ1OTMsMTMgQEAKICAgICAgICAgICAgIGRwZG9fbmFtZSA9IChURVhUKikgcHJvY2VkdXJlLT5w
cmNfbmFtZS0+c3RyX2RhdGE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBvYmpf
ZXhjZXB0aW9uOgotICAgICAgICAgICAgbnVtYmVyID0gKFNMT05HKSBub2RlLT5ub2RfYXJnIFtl
X2RlcF9vYmplY3RdOworICAgICAgICAgICAgbnVtYmVyID0gKFNMT05HKShJUFRSKSBub2RlLT5u
b2RfYXJnIFtlX2RlcF9vYmplY3RdOwogICAgICAgICAgICAgTUVUX2xvb2t1cF9leGNlcHRpb24g
KHRkYmIsIG51bWJlciwgbmFtZSwgTlVMTCk7CiAgICAgICAgICAgICBkcGRvX25hbWUgPSBuYW1l
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAvKiBDVkM6IEhlcmUgSSdtIGdvaW5n
IHRvIHRyYWNrIHRob3NlIHBlc2t5IHRoaW5ncyBuYW1lZCBnZW5lcmF0b3JzIGFuZCBVREZzLiAq
LwogICAgICAgICBjYXNlIG9ial9nZW5lcmF0b3I6Ci0gICAgICAgICAgICBudW1iZXIgPSAoU0xP
TkcpIG5vZGUtPm5vZF9hcmcgW2VfZGVwX29iamVjdF07CisgICAgICAgICAgICBudW1iZXIgPSAo
U0xPTkcpKElQVFIpIG5vZGUtPm5vZF9hcmcgW2VfZGVwX29iamVjdF07CiAgICAgICAgICAgICBN
RVRfbG9va3VwX2dlbmVyYXRvcl9pZCAodGRiYiwgbnVtYmVyLCBuYW1lKTsKICAgICAgICAgICAg
IGRwZG9fbmFtZSA9IG5hbWU7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ2MTcsNyArNDYxNyw3
IEBACiAJCXsKIAkJCWlmIChmaWVsZF9ub2RlLT5ub2RfdHlwZSA9PSBub2RfZmllbGQpCiAJCQl7
Ci0JCQkJZmxkX2lkID0gKFNTSE9SVCkgZmllbGRfbm9kZS0+bm9kX2FyZ1swXTsKKwkJCQlmbGRf
aWQgPSAoU1NIT1JUKShJUFRSKSBmaWVsZF9ub2RlLT5ub2RfYXJnWzBdOwogCQkJCWlmIChyZWxh
dGlvbikKIAkJCQl7CiAJCQkJCWlmICggKGZpZWxkID0gTUVUX2dldF9maWVsZChyZWxhdGlvbiwg
ZmxkX2lkKSkgKQpkaWZmIC11ck5hZCBmaXJlYmlyZDItMS41LjMuNDg3MH4vc3JjL2pyZC9zZGwu
Y3BwIGZpcmViaXJkMi0xLjUuMy40ODcwL3NyYy9qcmQvc2RsLmNwcAotLS0gZmlyZWJpcmQyLTEu
NS4zLjQ4NzB+L3NyYy9qcmQvc2RsLmNwcAkyMDA2LTAyLTAxIDIzOjA3OjAzLjAwMDAwMDAwMCAr
MDIwMAorKysgZmlyZWJpcmQyLTEuNS4zLjQ4NzAvc3JjL2pyZC9zZGwuY3BwCTIwMDYtMDItMDEg
MjM6MDc6MDQuMDAwMDAwMDAwICswMjAwCkBAIC02OTksNyArNjk5LDcgQEAKIAkJCX0KIAkJCWVs
ZW1lbnRfZGVzYyA9IGFycmF5X2Rlc2MtPmFkc19ycHRbdmFsdWVdLmFkc19kZXNjOwogCQkJZWxl
bWVudF9kZXNjLmRzY19hZGRyZXNzID0gKEJMT0JfUFRSICopIGFyZy0+c2RsX2FyZ19hcnJheSAr
Ci0JCQkJKFNMT05HKSBlbGVtZW50X2Rlc2MuZHNjX2FkZHJlc3MgKworCQkJCShTTE9ORykoSVBU
UikgZWxlbWVudF9kZXNjLmRzY19hZGRyZXNzICsKIAkJCQkoYXJyYXlfZGVzYy0+YWRzX2VsZW1l
bnRfbGVuZ3RoICogc3Vic2NyaXB0KTsKIAogCQkJLyogSXMgdGhpcyBlbGVtZW50IHdpdGhpbiB0
aGUgYXJyYXkgYm91bmRzPyAqLwotLS0gZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvcWxpL2V4cGFu
ZC5jcHAub3JpZwkyMDA2LTAyLTI2IDEyOjI5OjQ4LjAwMDAwMDAwMCArMDEwMAorKysgZmlyZWJp
cmQtMS41LjMuNDg3MC9zcmMvcWxpL2V4cGFuZC5jcHAJMjAwNi0wMi0yNiAxMjozMDowMC4wMDAw
MDAwMDAgKzAxMDAKQEAgLTIyMjAsNyArMjIyMCw3IEBACiAJZm9yIChpID0gMDsgaSA8IG5vZGUt
Pm5vZF9jb3VudDsgaSsrKSB7CiAJCWV4cHIgPSAqc3luX3B0cisrOwogCQlpZiAoZXhwci0+c3lu
X3R5cGUgPT0gbm9kX3Bvc2l0aW9uKSB7Ci0JCQlwb3NpdGlvbiA9IChVU0hPUlQpIGV4cHItPnN5
bl9hcmdbMF07CisJCQlwb3NpdGlvbiA9IChVU0hPUlQpKElQVFIpIGV4cHItPnN5bl9hcmdbMF07
CiAJCQlpZiAoIWxpc3QgfHwgIXBvc2l0aW9uIHx8IHBvc2l0aW9uID4gbGlzdC0+bm9kX2NvdW50
KQogCQkJCUlCRVJST1IoMTUyKTsJLyogTXNnMTUyIGludmFsaWQgT1JERVIgQlkgb3JkaW5hbCAq
LwogCQkJaXRlbSA9IChJVE0pIGxpc3QtPm5vZF9hcmdbcG9zaXRpb24gLSAxXTsKLS0tIGZpcmVi
aXJkLTEuNS4zLjQ4NzAvc3JjL3FsaS9jb21tYW5kLmNwcC5vcmlnCTIwMDYtMDItMjYgMTI6Mjg6
MTcuMDAwMDAwMDAwICswMTAwCisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9xbGkvY29tbWFu
ZC5jcHAJMjAwNi0wMi0yNiAxMjoyOToxMC4wMDAwMDAwMDAgKzAxMDAKQEAgLTMxMSwzMiArMzEx
LDMyIEBACiAJcHRyID0gbm9kZS0+c3luX2FyZzsKIAogCWZvciAoaSA9IDA7IGkgPCBub2RlLT5z
eW5fY291bnQ7IGkrKykgewotCQlmb28gPSAoVVNIT1JUKSAqIHB0cisrOworCQlmb28gPSAoVVNI
T1JUKShJUFRSKSAqIHB0cisrOwogCQlzdyA9IChFTlVNIHNldF90KSBmb287CiAJCXZhbHVlID0g
KnB0cisrOwogCQlzd2l0Y2ggKHN3KSB7CiAJCWNhc2Ugc2V0X2JscjoKLQkJCVFMSV9ibHIgPSAo
VVNIT1JUKSB2YWx1ZTsKKwkJCVFMSV9ibHIgPSAoVVNIT1JUKShJUFRSKSB2YWx1ZTsKIAkJCWJy
ZWFrOwogCiAJCWNhc2Ugc2V0X3N0YXRpc3RpY3M6Ci0JCQlRTElfc3RhdGlzdGljcyA9IChVU0hP
UlQpIHZhbHVlOworCQkJUUxJX3N0YXRpc3RpY3MgPSAoVVNIT1JUKShJUFRSKSB2YWx1ZTsKIAkJ
CWJyZWFrOwogCiAJCWNhc2Ugc2V0X2NvbHVtbnM6Ci0JCQlRTElfbmFtZV9jb2x1bW5zID0gUUxJ
X2NvbHVtbnMgPSAoVVNIT1JUKSB2YWx1ZTsKKwkJCVFMSV9uYW1lX2NvbHVtbnMgPSBRTElfY29s
dW1ucyA9IChVU0hPUlQpKElQVFIpIHZhbHVlOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBzZXRfbGlu
ZXM6Ci0JCQlRTElfbGluZXMgPSAoVVNIT1JUKSB2YWx1ZTsKKwkJCVFMSV9saW5lcyA9IChVU0hP
UlQpKElQVFIpIHZhbHVlOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBzZXRfc2VtaToKLQkJCVFMSV9z
ZW1pID0gKFVTSE9SVCkgdmFsdWU7CisJCQlRTElfc2VtaSA9IChVU0hPUlQpKElQVFIpIHZhbHVl
OwogCQkJYnJlYWs7CiAKIAkJY2FzZSBzZXRfZWNobzoKLQkJCVFMSV9lY2hvID0gKFVTSE9SVCkg
dmFsdWU7CisJCQlRTElfZWNobyA9IChVU0hPUlQpKElQVFIpIHZhbHVlOwogCQkJYnJlYWs7CiAK
IAkJY2FzZSBzZXRfZm9ybToKQEAgLTM5OSw3ICszOTksNyBAQAogCQkJYnJlYWs7CiAKIAkJY2Fz
ZSBzZXRfY291bnQ6Ci0JCQlRTElfY291bnQgPSAoVVNIT1JUKSB2YWx1ZTsKKwkJCVFMSV9jb3Vu
dCA9IChVU0hPUlQpKElQVFIpIHZhbHVlOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBzZXRfY2hhcnNl
dDoKLS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL3FsaS9tZXRhLmVwcC5vcmlnCTIwMDYtMDIt
MjYgMTI6MzA6MjQuMDAwMDAwMDAwICswMTAwCisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9x
bGkvbWV0YS5lcHAJMjAwNi0wMi0yNiAxMjozMDo0MC4wMDAwMDAwMDAgKzAxMDAKQEAgLTM3OTUs
NyArMzc5NSw3IEBACiAJUkxCIHJsYjsKIAogCi0JcHJpdmlsZWdlcyA9IChVU0hPUlQpIG5vZGUt
PnN5bl9hcmdbc19ncmFudF9wcml2aWxlZ2VzXTsKKwlwcml2aWxlZ2VzID0gKFVTSE9SVCkoSVBU
Uikgbm9kZS0+c3luX2FyZ1tzX2dyYW50X3ByaXZpbGVnZXNdOwogCXJlbGF0aW9uID0gKFFMSV9S
RUwpIG5vZGUtPnN5bl9hcmdbc19ncmFudF9yZWxhdGlvbl07CiAJcmVsYXRpb24tPnJlbF9kYXRh
YmFzZSA9IGRhdGFiYXNlID0gc2V0dXBfdXBkYXRlKHJlbGF0aW9uLT5yZWxfZGF0YWJhc2UpOwog
CXJlbGF0aW9uX25hbWUgPSByZWxhdGlvbi0+cmVsX3N5bWJvbC0+c3ltX3N0cmluZzsKLS0tIGZp
cmViaXJkLTEuNS4zLjQ4NzAvc3JjL2RzcWwvcGFyc2UuY3BwLm9yaWcJMjAwNi0wMi0yNiAxMjox
ODo0Mi4wMDAwMDAwMDAgKzAxMDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2RzcWwvcGFy
c2UuY3BwCTIwMDYtMDItMjYgMTI6MjE6MDAuMDAwMDAwMDAwICswMTAwCkBAIC02NDIxLDcgKzY0
MjEsNyBAQAogY2FzZSA3OToKIHsgCiAJCQlsZXguZ19maWVsZC0+ZmxkX2R0eXBlID0gZHR5cGVf
Y3N0cmluZzsgCi0JCQlsZXguZ19maWVsZC0+ZmxkX2NoYXJhY3Rlcl9sZW5ndGggPSAoVVNIT1JU
KSB5eXZzcFstMl07IH0KKwkJCWxleC5nX2ZpZWxkLT5mbGRfY2hhcmFjdGVyX2xlbmd0aCA9IChV
U0hPUlQpKElQVFIpIHl5dnNwWy0yXTsgfQogYnJlYWs7CiBjYXNlIDgwOgogeyB5eXZhbCA9IChE
U1FMX05PRCkgTlVMTDsgfQpAQCAtNzU0MSwyNyArNzU0MSwyNyBAQAogY2FzZSA1MDc6CiB7IAog
CQkJbGV4LmdfZmllbGQtPmZsZF9kdHlwZSA9IGR0eXBlX2Jsb2I7IAotCQkJbGV4LmdfZmllbGQt
PmZsZF9zZWdfbGVuZ3RoID0gKFVTSE9SVCkgeXl2c3BbLTFdOworCQkJbGV4LmdfZmllbGQtPmZs
ZF9zZWdfbGVuZ3RoID0gKFVTSE9SVCkoSVBUUikgeXl2c3BbLTFdOwogCQkJbGV4LmdfZmllbGQt
PmZsZF9zdWJfdHlwZSA9IDA7CiAJCQl9CiBicmVhazsKIGNhc2UgNTA4OgogeyAKIAkJCWxleC5n
X2ZpZWxkLT5mbGRfZHR5cGUgPSBkdHlwZV9ibG9iOyAKLQkJCWxleC5nX2ZpZWxkLT5mbGRfc2Vn
X2xlbmd0aCA9IChVU0hPUlQpIHl5dnNwWy0zXTsKLQkJCWxleC5nX2ZpZWxkLT5mbGRfc3ViX3R5
cGUgPSAoVVNIT1JUKSB5eXZzcFstMV07CisJCQlsZXguZ19maWVsZC0+ZmxkX3NlZ19sZW5ndGgg
PSAoVVNIT1JUKShJUFRSKSB5eXZzcFstM107CisJCQlsZXguZ19maWVsZC0+ZmxkX3N1Yl90eXBl
ID0gKFVTSE9SVCkoSVBUUikgeXl2c3BbLTFdOwogCQkJfQogYnJlYWs7CiBjYXNlIDUwOToKIHsg
CiAJCQlsZXguZ19maWVsZC0+ZmxkX2R0eXBlID0gZHR5cGVfYmxvYjsgCiAJCQlsZXguZ19maWVs
ZC0+ZmxkX3NlZ19sZW5ndGggPSA4MDsKLQkJCWxleC5nX2ZpZWxkLT5mbGRfc3ViX3R5cGUgPSAo
VVNIT1JUKSB5eXZzcFstMV07CisJCQlsZXguZ19maWVsZC0+ZmxkX3N1Yl90eXBlID0gKFVTSE9S
VCkoSVBUUikgeXl2c3BbLTFdOwogCQkJfQogYnJlYWs7CiBjYXNlIDUxMDoKIHsKLQkJCWxleC5n
X2ZpZWxkLT5mbGRfc2VnX2xlbmd0aCA9IChVU0hPUlQpIHl5dnNwWzBdOworCQkJbGV4LmdfZmll
bGQtPmZsZF9zZWdfbGVuZ3RoID0gKFVTSE9SVCkoSVBUUikgeXl2c3BbMF07CiAJCSAgCX0KIGJy
ZWFrOwogY2FzZSA1MTE6CkBAIC03NTcxLDcgKzc1NzEsNyBAQAogYnJlYWs7CiBjYXNlIDUxMjoK
IHsKLQkJCWxleC5nX2ZpZWxkLT5mbGRfc3ViX3R5cGUgPSAoVVNIT1JUKSB5eXZzcFswXTsKKwkJ
CWxleC5nX2ZpZWxkLT5mbGRfc3ViX3R5cGUgPSAoVVNIT1JUKShJUFRSKSB5eXZzcFswXTsKIAkJ
CX0KIGJyZWFrOwogY2FzZSA1MTM6CkBAIC03NTkyLDcgKzc1OTIsNyBAQAogY2FzZSA1MTc6CiB7
IAogCQkJbGV4LmdfZmllbGQtPmZsZF9kdHlwZSA9IGR0eXBlX3RleHQ7IAotCQkJbGV4LmdfZmll
bGQtPmZsZF9jaGFyYWN0ZXJfbGVuZ3RoID0gKFVTSE9SVCkgeXl2c3BbLTFdOyAKKwkJCWxleC5n
X2ZpZWxkLT5mbGRfY2hhcmFjdGVyX2xlbmd0aCA9IChVU0hPUlQpKElQVFIpIHl5dnNwWy0xXTsg
CiAJCQlsZXguZ19maWVsZC0+ZmxkX2ZsYWdzIHw9IEZMRF9uYXRpb25hbDsKIAkJCX0KIGJyZWFr
OwpAQCAtNzYwNiwxNCArNzYwNiwxNCBAQAogY2FzZSA1MTk6CiB7IAogCQkJbGV4LmdfZmllbGQt
PmZsZF9kdHlwZSA9IGR0eXBlX3Zhcnlpbmc7IAotCQkJbGV4LmdfZmllbGQtPmZsZF9jaGFyYWN0
ZXJfbGVuZ3RoID0gKFVTSE9SVCkgeXl2c3BbLTFdOyAKKwkJCWxleC5nX2ZpZWxkLT5mbGRfY2hh
cmFjdGVyX2xlbmd0aCA9IChVU0hPUlQpKElQVFIpIHl5dnNwWy0xXTsgCiAJCQlsZXguZ19maWVs
ZC0+ZmxkX2ZsYWdzIHw9IEZMRF9uYXRpb25hbDsKIAkJCX0KIGJyZWFrOwogY2FzZSA1MjA6CiB7
IAogCQkJbGV4LmdfZmllbGQtPmZsZF9kdHlwZSA9IGR0eXBlX3RleHQ7IAotCQkJbGV4LmdfZmll
bGQtPmZsZF9jaGFyYWN0ZXJfbGVuZ3RoID0gKFVTSE9SVCkgeXl2c3BbLTFdOyAKKwkJCWxleC5n
X2ZpZWxkLT5mbGRfY2hhcmFjdGVyX2xlbmd0aCA9IChVU0hPUlQpKElQVFIpIHl5dnNwWy0xXTsg
CiAJCQl9CiBicmVhazsKIGNhc2UgNTIxOgpAQCAtNzYyNSw3ICs3NjI1LDcgQEAKIGNhc2UgNTIy
OgogeyAKIAkJCWxleC5nX2ZpZWxkLT5mbGRfZHR5cGUgPSBkdHlwZV92YXJ5aW5nOyAKLQkJCWxl
eC5nX2ZpZWxkLT5mbGRfY2hhcmFjdGVyX2xlbmd0aCA9IChVU0hPUlQpIHl5dnNwWy0xXTsgCisJ
CQlsZXguZ19maWVsZC0+ZmxkX2NoYXJhY3Rlcl9sZW5ndGggPSAoVVNIT1JUKShJUFRSKSB5eXZz
cFstMV07IAogCQkJfQogYnJlYWs7CiBjYXNlIDUzMToKQEAgLTc3MDUsNyArNzcwNSw3IEBACiAJ
CQkgICAgCWxleC5nX2ZpZWxkLT5mbGRfZHR5cGUgPSBkdHlwZV9sb25nOyAKIAkJCSAgICAJbGV4
LmdfZmllbGQtPmZsZF9sZW5ndGggPSBzaXplb2YgKFNMT05HKTsgCiAJCQkgICAgCX0KLQkJCWxl
eC5nX2ZpZWxkLT5mbGRfcHJlY2lzaW9uID0gKFVTSE9SVCkgeXl2c3BbLTFdOworCQkJbGV4Lmdf
ZmllbGQtPmZsZF9wcmVjaXNpb24gPSAoVVNIT1JUKShJUFRSKSB5eXZzcFstMV07CiAJCQl9CiBi
cmVhazsKIGNhc2UgNTM2OgpAQCAtNzc2NSw4ICs3NzY1LDggQEAKIAkJCSAgICAJbGV4LmdfZmll
bGQtPmZsZF9sZW5ndGggPSBzaXplb2YgKFNMT05HKTsgCiAJCQkgICAgCX0KIAkJCSAgICB9Ci0J
CQlsZXguZ19maWVsZC0+ZmxkX3ByZWNpc2lvbiA9IChVU0hPUlQpIHl5dnNwWy0zXTsKLQkJCWxl
eC5nX2ZpZWxkLT5mbGRfc2NhbGUgPSAtIChTU0hPUlQpIHl5dnNwWy0xXTsKKwkJCWxleC5nX2Zp
ZWxkLT5mbGRfcHJlY2lzaW9uID0gKFVTSE9SVCkoSVBUUikgeXl2c3BbLTNdOworCQkJbGV4Lmdf
ZmllbGQtPmZsZF9zY2FsZSA9IC0gKFNTSE9SVCkoSVBUUikgeXl2c3BbLTFdOwogCQkJfQogYnJl
YWs7CiBjYXNlIDUzOToKQEAgLTc5MzIsNyArNzkzMiw3IEBACiB7IHl5dmFsID0gbWFrZV9ub2Rl
IChub2RfdGFibGVfbG9jaywgKGludCkgMiwgbWFrZV9saXN0ICh5eXZzcFstMV0pLCB5eXZzcFsw
XSk7IH0KIGJyZWFrOwogY2FzZSA2MDI6Ci17IHl5dmFsID0gbWFrZV9mbGFnX25vZGUgKG5vZF9s
b2NrX21vZGUsIChTU0hPUlQpICgoU1NIT1JUKSB5eXZzcFstMV0gfCAoU1NIT1JUKSB5eXZzcFsw
XSksIChTU0hPUlQpIDAsIE5VTEwpOyB9Cit7IHl5dmFsID0gbWFrZV9mbGFnX25vZGUgKG5vZF9s
b2NrX21vZGUsIChTU0hPUlQpICgoU1NIT1JUKShJUFRSKSB5eXZzcFstMV0gfCAoU1NIT1JUKShJ
UFRSKSB5eXZzcFswXSksIChTU0hPUlQpIDAsIE5VTEwpOyB9CiBicmVhazsKIGNhc2UgNjAzOgog
eyB5eXZhbCA9IDA7IH0KLS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2J1cnAvc3RkX2Rlc2Mu
aC5vcmlnCTIwMDYtMDItMjYgMTI6MjE6NTIuMDAwMDAwMDAwICswMTAwCisrKyBmaXJlYmlyZC0x
LjUuMy40ODcwL3NyYy9idXJwL3N0ZF9kZXNjLmgJMjAwNi0wMi0yNiAxMjoyNjoxMC4wMDAwMDAw
MDAgKzAxMDAKQEAgLTM1LDEyICszNSwzNSBAQAogI2luY2x1ZGUgImZpcmViaXJkLmgiCiAKICNp
ZmRlZiBXSU5fTlQKKwogI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNkZWZpbmUJR0JBS19TVERJTl9E
RVNDCQkJR2V0U3RkSGFuZGxlKFNURF9JTlBVVF9IQU5ETEUpCS8qIHN0YW5kYXJ0IGlucHV0ICBm
aWxlIGRlc2NyaXB0b3IgKi8KLSNkZWZpbmUJR0JBS19TVERPVVRfREVTQwkJR2V0U3RkSGFuZGxl
KFNURF9PVVRQVVRfSEFORExFKQkvKiBzdGFuZGFydCBvdXRwdXQgZmlsZSBkZXNjcmlwdG9yICov
CisKK3R5cGVkZWYgSEFORExFIERFU0M7CisKK3N0YXRpYyBpbmxpbmUgREVTQyBHQkFLX1NURElO
X0RFU0Modm9pZCkKK3sKKwlyZXR1cm4gR2V0U3RkSGFuZGxlKFNURF9JTlBVVF9IQU5ETEUpOyAv
LyBzdGFuZGFyZCBpbnB1dCBmaWxlIGRlc2NyaXB0b3IgCit9CitzdGF0aWMgaW5saW5lIERFU0Mg
R0JBS19TVERPVVRfREVTQyh2b2lkKQoreworCXJldHVybiBHZXRTdGRIYW5kbGUoU1REX09VVFBV
VF9IQU5ETEUpOwkvLyBzdGFuZGFyZCBvdXRwdXQgZmlsZSBkZXNjcmlwdG9yCit9CisKICNlbHNl
IC8vV0lOX05UCi0jZGVmaW5lCUdCQUtfU1RESU5fREVTQwkJCShpbnQpMAkvKiBzdGFuZGFydCBp
bnB1dCAgZmlsZSBkZXNjcmlwdG9yICovCi0jZGVmaW5lCUdCQUtfU1RET1VUX0RFU0MJCShpbnQp
MQkvKiBzdGFuZGFydCBvdXRwdXQgZmlsZSBkZXNjcmlwdG9yICovCisKK3R5cGVkZWYgaW50IERF
U0M7CisKK3N0YXRpYyBpbmxpbmUgREVTQyBHQkFLX1NURElOX0RFU0Modm9pZCkKK3sKKwlyZXR1
cm4gMDsJLy8gc3RhbmRhcmQgaW5wdXQgZmlsZSBkZXNjcmlwdG9yIAorfQorc3RhdGljIGlubGlu
ZSBERVNDIEdCQUtfU1RET1VUX0RFU0Modm9pZCkKK3sKKwlyZXR1cm4gMTsJLy8gc3RhbmRhcmQg
b3V0cHV0IGZpbGUgZGVzY3JpcHRvcgorfQorCitjb25zdCBpbnQgSU5WQUxJRF9IQU5ETEVfVkFM
VUUgPSAtMTsKKwogI2VuZGlmIC8vV0lOX05UCiAKICNlbmRpZiAgLy9HQkFLX1NURF9ERVNDX0gK
LS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2J1cnAvYnVycC5jcHAub3JpZwkyMDA2LTAyLTI2
IDEyOjI0OjIwLjAwMDAwMDAwMCArMDEwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvYnVy
cC9idXJwLmNwcAkyMDA2LTAyLTI2IDEyOjI1OjA4LjAwMDAwMDAwMCArMDEwMApAQCAtMTYwNiw3
ICsxNjA2LDcgQEAKICNpZm5kZWYgV0lOX05UCiAJCQkJc2lnbmFsKFNJR1BJUEUsIFNJR19JR04p
OwogI2VuZGlmCi0JCQkJZmlsLT5maWxfZmQgPSByZWludGVycHJldF9jYXN0PERFU0M+KEdCQUtf
U1RET1VUX0RFU0MpOworCQkJCWZpbC0+ZmlsX2ZkID0gR0JBS19TVERPVVRfREVTQygpOwogCQkJ
CWJyZWFrOwogCQkJfQogCQkJZWxzZQpAQCAtMTcyNCw3ICsxNzI0LDcgQEAKIAogCXRkZ2JsLT5h
Y3Rpb24tPmFjdF9hY3Rpb24gPSBBQ1RfcmVzdG9yZTsKIAlpZiAoIXN0cmNtcChmaWwtPmZpbF9u
YW1lLCAic3RkaW4iKSkgewotCQlmaWwtPmZpbF9mZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8REVTQz4o
R0JBS19TVERJTl9ERVNDKTsKKwkJZmlsLT5maWxfZmQgPSBHQkFLX1NURElOX0RFU0MoKTsKIAkJ
dGRnYmwtPmZpbGVfZGVzYyA9IGZpbC0+ZmlsX2ZkOwogCQl0ZGdibC0+Z2JsX3N3X2ZpbGVzID0g
ZmlsLT5maWxfbmV4dDsKIAl9Ci0tLSBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9qcmQvcGFyLmNw
cC5vcmlnCTIwMDYtMDItMjYgMTI6MTU6NTkuMDAwMDAwMDAwICswMTAwCisrKyBmaXJlYmlyZC0x
LjUuMy40ODcwL3NyYy9qcmQvcGFyLmNwcAkyMDA2LTAyLTI2IDEyOjE2OjIwLjAwMDAwMDAwMCAr
MDEwMApAQCAtMjUxOCw3ICsyNTE4LDcgQEAKIAkJbm9kZS0+bm9kX2FyZ1tlX2FnZ19yc2VdID0g
cGFyc2UodGRiYiwgY3NiLCBUWVBFX1JTRSk7CiAJCW5vZGUtPm5vZF9hcmdbZV9hZ2dfZ3JvdXBd
ID0gcGFyc2UodGRiYiwgY3NiLCBPVEhFUik7CiAJCW5vZGUtPm5vZF9hcmdbZV9hZ2dfbWFwXSA9
Ci0JCQlwYXJfbWFwKHRkYmIsIGNzYiwgKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tlX2FnZ19zdHJl
YW1dKTsKKwkJCXBhcl9tYXAodGRiYiwgY3NiLCAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJn
W2VfYWdnX3N0cmVhbV0pOwogCQlicmVhazsKIAogCWNhc2UgYmxyX2dyb3VwX2J5OgotLS0gZmly
ZWJpcmQtMS41LjMuNDg3MC9zcmMvanJkL3JzZS5jcHAub3JpZwkyMDA2LTAyLTI2IDEyOjE2OjM5
LjAwMDAwMDAwMCArMDEwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvanJkL3JzZS5jcHAJ
MjAwNi0wMi0yNiAxMjoxNzo1NS4wMDAwMDAwMDAgKzAxMDAKQEAgLTczMCw4ICs3MzAsOCBAQAog
CQkJCS8qIEluaXRpYWxpemUgdGhlIHJlY29yZCBudW1iZXIgb2YgZWFjaCBzdHJlYW0gaW4gdGhl
IHVuaW9uICovCiAKIAkJCQlwdHIgPSAmcnNiLT5yc2JfYXJnW3JzYi0+cnNiX2NvdW50XTsKLQkJ
CQlmb3IgKGVuZCA9IHB0ciArIChVU0hPUlQpICogcHRyOyArK3B0ciA8PSBlbmQ7KQotCQkJCQly
ZXF1ZXN0LT5yZXFfcnBiWyhVU0hPUlQpICogcHRyXS5ycGJfbnVtYmVyID0gLTE7CisJCQkJZm9y
IChlbmQgPSBwdHIgKyAoVVNIT1JUKShJUFRSKSAqIHB0cjsgKytwdHIgPD0gZW5kOykKKwkJCQkJ
cmVxdWVzdC0+cmVxX3JwYlsoVVNIT1JUKShJUFRSKSAqIHB0cl0ucnBiX251bWJlciA9IC0xOwog
CiAJCQkJcnNiID0gcnNiLT5yc2JfYXJnWzBdOwogCQkJfQpAQCAtMjkxNCw3ICsyOTE0LDcgQEAK
IAlyZXF1ZXN0ID0gdGRiYi0+dGRiYl9yZXF1ZXN0OwogCXN0YWNrID0gKExMUykgcnNiLT5yc2Jf
YXJnW3N0cmVhbXNdOwogCWZvciAoOyBzdGFjazsgc3RhY2sgPSBzdGFjay0+bGxzX25leHQpIHsK
LQkJcnBiID0gJnJlcXVlc3QtPnJlcV9ycGJbKFVTSE9SVCkgc3RhY2stPmxsc19vYmplY3RdOwor
CQlycGIgPSAmcmVxdWVzdC0+cmVxX3JwYlsoVVNIT1JUKShJUFRSKSBzdGFjay0+bGxzX29iamVj
dF07CiAKIAkJLyogTWFrZSBzdXJlIGEgcmVjb3JkIGJsb2NrIGhhcyBiZWVuIGFsbG9jYXRlZC4g
IElmIHRoZXJlIGlzbid0CiAJCSAgIG9uZSwgZmlyc3QgZmluZCB0aGUgZm9ybWF0LCB0aGVuIGFs
bG9jYXRlIHRoZSByZWNvcmQgYmxvY2sgKi8KQEAgLTI5NzIsNyArMjk3Miw3IEBACiAJCSAgIGxp
c3QgdGhhdCBjb250YWlucyB0aGUgZGF0YSB0byBzZW5kIGJhY2sKIAkJICovCiAJCWlmIChJU19J
TlRMX0RBVEEoJml0ZW0tPnNtYl9kZXNjKSAmJgotCQkJKFVTSE9SVCkgaXRlbS0+c21iX2Rlc2Mu
ZHNjX2FkZHJlc3MgPAorCQkJKFVTSE9SVCkoSVBUUikgaXRlbS0+c21iX2Rlc2MuZHNjX2FkZHJl
c3MgPAogCQkJbWFwLT5zbWJfa2V5X2xlbmd0aCAqIHNpemVvZihVTE9ORykpIGNvbnRpbnVlOwog
CiAJCXJwYiA9ICZyZXF1ZXN0LT5yZXFfcnBiW2l0ZW0tPnNtYl9zdHJlYW1dOwpAQCAtMzIzOCw3
ICszMjM4LDcgQEAKIAkJCQkgICB0aGUgc29ydCByZWNvcmQsIHRoZW4gd2FudCB0byBzb3J0IGJ5
IGxhbmd1YWdlIGRlcGVuZGVudCBvcmRlciAqLwogCiAJCQkJaWYgKElTX0lOVExfREFUQSgmaXRl
bS0+c21iX2Rlc2MpICYmCi0JCQkJCShVU0hPUlQpIGl0ZW0tPnNtYl9kZXNjLmRzY19hZGRyZXNz
IDwKKwkJCQkJKFVTSE9SVCkoSVBUUikgaXRlbS0+c21iX2Rlc2MuZHNjX2FkZHJlc3MgPAogCQkJ
CQltYXAtPnNtYl9rZXlfbGVuZ3RoICogc2l6ZW9mKFVMT05HKSkgewogCQkJCQlJTlRMX3N0cmlu
Z190b19rZXkodGRiYiwgSU5UTF9JTkRFWF9UWVBFKCZpdGVtLT5zbWJfZGVzYyksCiAJCQkJCQkJ
CQkgICBmcm9tLCAmdG8sIEZBTFNFKTsKLS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9v
cHQuY3BwLm9yaWcJMjAwNi0wMi0yNiAxMjowOTozMC4wMDAwMDAwMDAgKzAxMDAKKysrIGZpcmVi
aXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9vcHQuY3BwCTIwMDYtMDItMjYgMTI6MTU6MTIuMDAwMDAw
MDAwICswMTAwCkBAIC0zODAsNyArMzgwLDcgQEAKIAogCQlpZiAobm9kZS0+bm9kX3R5cGUgIT0g
bm9kX3JzZSkKIAkJewotCQkJc3RyZWFtID0gKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tTVFJFQU1f
SU5ERVgobm9kZSldOworCQkJc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tT
VFJFQU1fSU5ERVgobm9kZSldOwogCQkJYXNzZXJ0KHN0cmVhbSA8PSBNQVhfVUNIQVIpOwogCQkJ
YXNzZXJ0KGJlZHNbMF0gPCBNQVhfU1RSRUFNUyAmJiBiZWRzWzBdIDwgTUFYX1VDSEFSKTsKIAkJ
CWJlZHNbKytiZWRzWzBdXSA9IChVQ0hBUikgc3RyZWFtOwpAQCAtNDAwLDcgKzQwMCw3IEBACiAJ
CQkJCQkgIChVU0hPUlQpIChrZXlfc3RyZWFtc1swXSAtIGkpKTsKIAkJCWFzc2VydChsb2NhbF9z
dHJlYW1zWzBdIDwgTUFYX1NUUkVBTVMgJiYgbG9jYWxfc3RyZWFtc1swXSA8IE1BWF9VQ0hBUik7
CiAJCQlsb2NhbF9zdHJlYW1zWysrbG9jYWxfc3RyZWFtc1swXV0gPQotCQkJCShVQ0hBUikgbm9k
ZS0+bm9kX2FyZ1tlX3VuaV9zdHJlYW1dOworCQkJCShVQ0hBUikoSVBUUikgbm9kZS0+bm9kX2Fy
Z1tlX3VuaV9zdHJlYW1dOwogCQl9CiAJCWVsc2UgaWYgKG5vZGUtPm5vZF90eXBlID09IG5vZF9h
Z2dyZWdhdGUpIHsKIAkJCWFzc2VydCgoaW50KW5vZGUtPm5vZF9hcmdbZV9hZ2dfc3RyZWFtXSA8
PSBNQVhfU1RSRUFNUyk7CkBAIC00MDgsMTMgKzQwOCwxMyBAQAogCQkJcnNiID0gZ2VuX2FnZ3Jl
Z2F0ZSh0ZGJiLCBvcHRfLCBub2RlKTsKIAkJCWFzc2VydChsb2NhbF9zdHJlYW1zWzBdIDwgTUFY
X1NUUkVBTVMgJiYgbG9jYWxfc3RyZWFtc1swXSA8IE1BWF9VQ0hBUik7CiAJCQlsb2NhbF9zdHJl
YW1zWysrbG9jYWxfc3RyZWFtc1swXV0gPQotCQkJCShVQ0hBUikgbm9kZS0+bm9kX2FyZ1tlX2Fn
Z19zdHJlYW1dOworCQkJCShVQ0hBUikoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2FnZ19zdHJlYW1d
OwogCQl9CiAJCWVsc2UgaWYgKG5vZGUtPm5vZF90eXBlID09IG5vZF9wcm9jZWR1cmUpIHsKIAkJ
CXJzYiA9IGdlbl9wcm9jZWR1cmUodGRiYiwgb3B0Xywgbm9kZSk7CiAJCQlhc3NlcnQobG9jYWxf
c3RyZWFtc1swXSA8IE1BWF9TVFJFQU1TICYmIGxvY2FsX3N0cmVhbXNbMF0gPCBNQVhfVUNIQVIp
OwogCQkJbG9jYWxfc3RyZWFtc1srK2xvY2FsX3N0cmVhbXNbMF1dID0KLQkJCQkoVUNIQVIpIG5v
ZGUtPm5vZF9hcmdbZV9wcmNfc3RyZWFtXTsKKwkJCQkoVUNIQVIpKElQVFIpIG5vZGUtPm5vZF9h
cmdbZV9wcmNfc3RyZWFtXTsKIAkJfQogCQllbHNlIGlmIChub2RlLT5ub2RfdHlwZSA9PSBub2Rf
cnNlKSB7CiAJCQljb21wdXRlX3JzZV9zdHJlYW1zKGNzYiwgKFJTRSkgbm9kZSwgYmVkcyk7CkBA
IC04OTUsNyArODk1LDcgQEAKIAogLyogTWFrZSBzdXJlIHdlIGhhdmUgdGhlIGNvcnJlY3Qgc3Ry
ZWFtICovCiAKLQlpZiAoKFVTSE9SVCkgZGJrZXktPm5vZF9hcmdbMF0gIT0gc3RyZWFtKQorCWlm
ICgoVVNIT1JUKShJUFRSKSBkYmtleS0+bm9kX2FyZ1swXSAhPSBzdHJlYW0pCiAJCXJldHVybiBO
VUxMOwogCiAvKiBJZiB0aGlzIGlzIGEgZGJrZXkgZm9yIHRoZSBhcHByb3ByaWF0ZSBzdHJlYW0s
IGl0J3MgaW52ZXJ0YWJsZSAqLwpAQCAtMTY4Nyw3ICsxNjg3LDcgQEAKIAlzd2l0Y2ggKG5vZGUt
Pm5vZF90eXBlKSB7CiAJY2FzZSBub2RfZmllbGQ6CiAKLQkJbiA9IChVU0hPUlQpIG5vZGUtPm5v
ZF9hcmdbZV9mbGRfc3RyZWFtXTsKKwkJbiA9IChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdb
ZV9mbGRfc3RyZWFtXTsKIAogCQlpZiAoYWxsb3dPbmx5Q3VycmVudFN0cmVhbSkgewogCQkJaWYg
KG4gIT0gc3RyZWFtKSB7CkBAIC0xNzEzLDcgKzE3MTMsNyBAQAogCiAJY2FzZSBub2RfZGJrZXk6
CiAKLQkJbiA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbMF07CisJCW4gPSAoVVNIT1JUKShJUFRS
KSBub2RlLT5ub2RfYXJnWzBdOwogCiAJCWlmIChhbGxvd09ubHlDdXJyZW50U3RyZWFtKSB7CiAJ
CQlpZiAobiAhPSBzdHJlYW0pIHsKQEAgLTE3ODQsNyArMTc4NCw3IEBACiAKIAlmb3IgKHB0ciA9
IHJzZS0+cnNlX3JlbGF0aW9uLCBlbmQgPSBwdHIgKyByc2UtPnJzZV9jb3VudDsgcHRyIDwgZW5k
OyBwdHIrKykgewogCQlpZiAoKCpwdHIpLT5ub2RfdHlwZSAhPSBub2RfcnNlKSB7Ci0JCQluID0g
KFVTSE9SVCkgKCpwdHIpLT5ub2RfYXJnW1NUUkVBTV9JTkRFWCgoKnB0cikpXTsKKwkJCW4gPSAo
VVNIT1JUKShJUFRSKSAoKnB0ciktPm5vZF9hcmdbU1RSRUFNX0lOREVYKCgqcHRyKSldOwogCQkJ
Y3NiLT5jc2JfcnB0W25dLmNzYl9mbGFncyB8PSBjc2JfYWN0aXZlOwogCQl9CiAJfQpAQCAtMTgy
MSw3ICsxODIxLDcgQEAKIAl7CiAJCWlmICgoKnB0ciktPm5vZF90eXBlICE9IG5vZF9yc2UpCiAJ
CXsKLQkJCW4gPSAoVVNIT1JUKSAoKnB0ciktPm5vZF9hcmdbU1RSRUFNX0lOREVYKCgqcHRyKSld
OworCQkJbiA9IChVU0hPUlQpKElQVFIpICgqcHRyKS0+bm9kX2FyZ1tTVFJFQU1fSU5ERVgoKCpw
dHIpKV07CiAJCQljc2ItPmNzYl9ycHRbbl0uY3NiX2ZsYWdzICY9IH5jc2JfYWN0aXZlOwogCQl9
CiAJfQpAQCAtMTg2MiwxMiArMTg2MiwxMiBAQAogCiAJc3dpdGNoIChub2RlLT5ub2RfdHlwZSkg
ewogCWNhc2Ugbm9kX2ZpZWxkOgotCQluID0gKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9z
dHJlYW1dOworCQluID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1d
OwogCQlTRVRfREVQX0JJVChkZXBlbmRlbmNpZXMsIG4pOwogCQlyZXR1cm47CiAKIAljYXNlIG5v
ZF9kYmtleToKLQkJbiA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbMF07CisJCW4gPSAoVVNIT1JU
KShJUFRSKSBub2RlLT5ub2RfYXJnWzBdOwogCQlTRVRfREVQX0JJVChkZXBlbmRlbmNpZXMsIG4p
OwogCQlyZXR1cm47CiAKQEAgLTE5MjMsNyArMTkyMyw3IEBACiAKIAlmb3IgKHB0ciA9IHJzZS0+
cnNlX3JlbGF0aW9uLCBlbmQgPSBwdHIgKyByc2UtPnJzZV9jb3VudDsgcHRyIDwgZW5kOyBwdHIr
KykgewogCQlpZiAoKCpwdHIpLT5ub2RfdHlwZSAhPSBub2RfcnNlKSB7Ci0JCQluID0gKFVTSE9S
VCkgKCpwdHIpLT5ub2RfYXJnW1NUUkVBTV9JTkRFWCgoKnB0cikpXTsKKwkJCW4gPSAoVVNIT1JU
KShJUFRSKSAoKnB0ciktPm5vZF9hcmdbU1RSRUFNX0lOREVYKCgqcHRyKSldOwogCQkJQ0xFQVJf
REVQX0JJVChkZXBlbmRlbmNpZXMsIG4pOwogCQl9CiAJfQpAQCAtMTk1MSw3ICsxOTUxLDcgQEAK
IAogCWlmIChub2RlLT5ub2RfdHlwZSA9PSBub2RfcmVsYXRpb24pIHsKIAkJYXNzZXJ0KHN0cmVh
bXNbMF0gPCBNQVhfU1RSRUFNUyAmJiBzdHJlYW1zWzBdIDwgTUFYX1VDSEFSKTsKLQkJc3RyZWFt
c1srK3N0cmVhbXNbMF1dID0gKFVDSEFSKSBub2RlLT5ub2RfYXJnW2VfcmVsX3N0cmVhbV07CisJ
CXN0cmVhbXNbKytzdHJlYW1zWzBdXSA9IChVQ0hBUikoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX3Jl
bF9zdHJlYW1dOwogCX0KIAllbHNlIGlmIChub2RlLT5ub2RfdHlwZSA9PSBub2RfdW5pb24pIHsK
IAkJY2xhdXNlcyA9IG5vZGUtPm5vZF9hcmdbZV91bmlfY2xhdXNlc107CkBAIC0xOTkxLDcgKzE5
OTEsNyBAQAogCQlub2RlID0gKnB0cjsKIAkJaWYgKG5vZGUtPm5vZF90eXBlICE9IG5vZF9yc2Up
IHsKIAkJCWFzc2VydChzdHJlYW1zWzBdIDwgTUFYX1NUUkVBTVMgJiYgc3RyZWFtc1swXSA8IE1B
WF9VQ0hBUik7Ci0JCQlzdHJlYW1zWysrc3RyZWFtc1swXV0gPSAoVUNIQVIpIG5vZGUtPm5vZF9h
cmdbU1RSRUFNX0lOREVYKG5vZGUpXTsKKwkJCXN0cmVhbXNbKytzdHJlYW1zWzBdXSA9IChVQ0hB
UikoSVBUUikgbm9kZS0+bm9kX2FyZ1tTVFJFQU1fSU5ERVgobm9kZSldOwogCQl9CiAJCWVsc2Ug
ewogCQkJY29tcHV0ZV9yc2Vfc3RyZWFtcyhjc2IsIChSU0UpIG5vZGUsIHN0cmVhbXMpOwpAQCAt
MzI4OSw3ICszMjg5LDcgQEAKIAlKUkRfTk9EIGRia2V5X3RlbXAsICpwdHIsICplbmQ7CiAJREVW
X0JMS0NISyhkYmtleSwgdHlwZV9ub2QpOwogCWlmIChkYmtleS0+bm9kX3R5cGUgPT0gbm9kX2Ri
a2V5KSB7Ci0JCWlmICgoVVNIT1JUKSBkYmtleS0+bm9kX2FyZ1swXSA9PSBzdHJlYW0pCisJCWlm
ICgoVVNIT1JUKShJUFRSKSBkYmtleS0+bm9kX2FyZ1swXSA9PSBzdHJlYW0pCiAJCQlyZXR1cm4g
ZGJrZXk7CiAJCWVsc2UgewogCQkJKnBvc2l0aW9uID0gKnBvc2l0aW9uICsgMTsKQEAgLTM1NTAs
NyArMzU1MCw3IEBACiAKIAkJdGVtcFswXSsrOwogCQlyZWxhdGlvbl9ub2RlID0gcGxhbl9ub2Rl
LT5ub2RfYXJnW2VfcmV0cmlldmVfcmVsYXRpb25dOwotCQl0ZW1wW3RlbXBbMF1dID0gKFVDSEFS
KSByZWxhdGlvbl9ub2RlLT5ub2RfYXJnW2VfcmVsX3N0cmVhbV07CisJCXRlbXBbdGVtcFswXV0g
PSAoVUNIQVIpKElQVFIpIHJlbGF0aW9uX25vZGUtPm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKIAl9
CiAKIAkvLyBqdXN0IGJlY2F1c2UgdGhlIHVzZXIgc3BlY2lmaWVkIGEgam9pbiBkb2VzIG5vdCBt
ZWFuIHRoYXQgCkBAIC0zNzI0LDcgKzM3MjQsNyBAQAogCXJzYi0+cnNiX3R5cGUgPSByc2JfYWdn
cmVnYXRlOwogCWFzc2VydCgoaW50KW5vZGUtPm5vZF9hcmdbZV9hZ2dfc3RyZWFtXSA8PSBNQVhf
U1RSRUFNUyk7CiAJYXNzZXJ0KChpbnQpbm9kZS0+bm9kX2FyZ1tlX2FnZ19zdHJlYW1dIDw9IE1B
WF9VQ0hBUik7Ci0JcnNiLT5yc2Jfc3RyZWFtID0gKFVDSEFSKSBub2RlLT5ub2RfYXJnW2VfYWdn
X3N0cmVhbV07CisJcnNiLT5yc2Jfc3RyZWFtID0gKFVDSEFSKShJUFRSKSBub2RlLT5ub2RfYXJn
W2VfYWdnX3N0cmVhbV07CiAJcnNiLT5yc2JfZm9ybWF0ID0gY3NiLT5jc2JfcnB0W3JzYi0+cnNi
X3N0cmVhbV0uY3NiX2Zvcm1hdDsKIAlyc2ItPnJzYl9uZXh0ID0gT1BUX2NvbXBpbGUodGRiYiwg
Y3NiLCByc2UsIE5VTEwpOwogCXJzYi0+cnNiX2FyZ1swXSA9IChSU0IpIG5vZGU7CkBAIC00MDg4
LDggKzQwODgsOCBAQAogCQkgaWR4LT5pZHhfcnB0OyBwdHIgPCBlbmQ7IHB0cisrLCBpZHhfdGFp
bCsrKSB7CiAJCW5vZGUgPSAqcHRyOwogCQlpZiAobm9kZS0+bm9kX3R5cGUgIT0gbm9kX2ZpZWxk
Ci0JCQl8fCAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV0gIT0gc3RyZWFtCi0J
CQl8fCAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfZmxkX2lkXSAhPSBpZHhfdGFpbC0+aWR4X2Zp
ZWxkCisJCQl8fCAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV0gIT0g
c3RyZWFtCisJCQl8fCAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfZmxkX2lkXSAhPSBp
ZHhfdGFpbC0+aWR4X2ZpZWxkCiAJCQl8fCBwdHJbMipzb3J0LT5ub2RfY291bnRdIC8qIGRvIG5v
dCB1c2UgaW5kZXggaWYgTlVMTFMgRklSU1QgaXMgdXNlZCAqLwogI2lmZGVmIFNDUk9MTEFCTEVf
Q1VSU09SUwogCQkJKQpAQCAtNDI0OSw3ICs0MjQ5LDcgQEAKIAkJewogCQkJc3RyZWFtX3B0cltp
XS0+c3RyZWFtX3JzYiA9IE5VTEw7CiAJCQlzdHJlYW1fcHRyW2ldLT5zdHJlYW1fbnVtID0KLQkJ
CQkoVVNIT1JUKSBub2RlLT5ub2RfYXJnW1NUUkVBTV9JTkRFWChub2RlKV07CisJCQkJKFVTSE9S
VCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tTVFJFQU1fSU5ERVgobm9kZSldOwogCQl9CiAJfQogCkBA
IC00MzI3LDEwICs0MzI3LDEwIEBACiAJU0VUX1REQkIodGRiYik7CiAJY3NiID0gb3B0LT5vcHRf
Y3NiOwkKIAlwcm9jZWR1cmUgPSBNRVRfbG9va3VwX3Byb2NlZHVyZV9pZCh0ZGJiLAotCSAgIChT
U0hPUlQpbm9kZS0+bm9kX2FyZ1tlX3ByY19wcm9jZWR1cmVdLCBGQUxTRSwgRkFMU0UsIDApOwor
CSAgIChTU0hPUlQpKElQVFIpbm9kZS0+bm9kX2FyZ1tlX3ByY19wcm9jZWR1cmVdLCBGQUxTRSwg
RkFMU0UsIDApOwogCXJzYiA9IEZCX05FV19SUFQoKnRkYmItPnRkYmJfZGVmYXVsdCwgUlNCX1BS
Q19jb3VudCkgUnNiKCk7CiAJcnNiLT5yc2JfdHlwZSA9IHJzYl9wcm9jZWR1cmU7Ci0JcnNiLT5y
c2Jfc3RyZWFtID0gKFVDSEFSKSBub2RlLT5ub2RfYXJnW2VfcHJjX3N0cmVhbV07CisJcnNiLT5y
c2Jfc3RyZWFtID0gKFVDSEFSKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfcHJjX3N0cmVhbV07CiAJ
cnNiLT5yc2JfcHJvY2VkdXJlID0gcHJvY2VkdXJlOwogCXJzYi0+cnNiX2Zvcm1hdCA9IHByb2Nl
ZHVyZS0+cHJjX2Zvcm1hdDsKIAlyc2ItPnJzYl9pbXB1cmUgPSBDTVBfaW1wdXJlKGNzYiwgc2l6
ZW9mKHN0cnVjdCBpcnNiX3Byb2NlZHVyZSkpOwpAQCAtNDk0Myw4ICs0OTQzLDggQEAKIAkJCWZv
ciAobm9kZV9wdHIgPSBzb3J0LT5ub2RfYXJnOyBub2RlX3B0ciA8IGVuZF9ub2RlOyBub2RlX3B0
cisrKSB7CiAJCQkJbm9kZSA9ICpub2RlX3B0cjsKIAkJCQlpZiAobm9kZS0+bm9kX3R5cGUgPT0g
bm9kX2ZpZWxkCi0JCQkJCSYmIChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9mbGRfc3RyZWFtXSA9
PSAqcHRyCi0JCQkJCSYmIChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9mbGRfaWRdID09IGlkKSB7
CisJCQkJCSYmIChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9mbGRfc3RyZWFtXSA9PSAq
cHRyCisJCQkJCSYmIChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9mbGRfaWRdID09IGlk
KSB7CiAJCQkJCWRlc2MgPSAmZGVzY3JpcHRvcjsKIAkJCQkJQ01QX2dldF9kZXNjKHRkYmIsIGNz
Yiwgbm9kZSwgZGVzYyk7CiAJCQkJCS8qIEludGVybmF0aW9uYWwgdHlwZSB0ZXh0IGhhcyBhIGNv
bXB1dGVkIGtleSAqLwpAQCAtNTA0MSw4ICs1MDQxLDggQEAKIAkJbWFwX2l0ZW0tPnNtYl9kZXNj
LmRzY19hZGRyZXNzID0gKFVDSEFSICopIG1hcF9sZW5ndGg7CiAJCW1hcF9sZW5ndGggKz0gZGVz
Yy0+ZHNjX2xlbmd0aDsKIAkJaWYgKG5vZGUtPm5vZF90eXBlID09IG5vZF9maWVsZCkgewotCQkJ
bWFwX2l0ZW0tPnNtYl9zdHJlYW0gPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfZmxkX3N0cmVh
bV07Ci0JCQltYXBfaXRlbS0+c21iX2ZpZWxkX2lkID0gKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tl
X2ZsZF9pZF07CisJCQltYXBfaXRlbS0+c21iX3N0cmVhbSA9IChVU0hPUlQpKElQVFIpIG5vZGUt
Pm5vZF9hcmdbZV9mbGRfc3RyZWFtXTsKKwkJCW1hcF9pdGVtLT5zbWJfZmllbGRfaWQgPSAoVVNI
T1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfZmxkX2lkXTsKIAkJfQogCX0KIApAQCAtNTA1NCw4
ICs1MDU0LDggQEAKICAgIGZpZWxkIGhhcyBhbHJlYWR5IGJlZW4gbWVudGlvbmVkIGFzIGEgc29y
dCBrZXksIGRvbid0IGJvdGhlciB0byByZXBlYXQKICAgIGl0LiAqLwogCXdoaWxlIChzdHJlYW1f
c3RhY2spIHsKLQkJaWQgPSAoVVNIT1JUKSBMTFNfUE9QKCZpZF9zdGFjayk7Ci0JCXN0cmVhbSA9
IChVU0hPUlQpIExMU19QT1AoJnN0cmVhbV9zdGFjayk7CisJCWlkID0gKFVTSE9SVCkoSVBUUikg
TExTX1BPUCgmaWRfc3RhY2spOworCQlzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBMTFNfUE9QKCZz
dHJlYW1fc3RhY2spOwogCQlmb3JtYXQgPSBDTVBfZm9ybWF0KHRkYmIsIGNzYiwgc3RyZWFtKTsK
IAkJZGVzYyA9ICZmb3JtYXQtPmZtdF9kZXNjW2lkXTsKIAkJaWYgKGlkID49IGZvcm1hdC0+Zm10
X2NvdW50IHx8IGRlc2MtPmRzY19sZW5ndGggPT0gMCkKQEAgLTUzODQsNyArNTM4NCw3IEBACiAJ
cnNiID0gRkJfTkVXX1JQVCgqdGRiYi0+dGRiYl9kZWZhdWx0LCBjb3VudCArIG5zdHJlYW1zICsg
MSkgUnNiKCk7CiAJcnNiLT5yc2JfdHlwZSA9IHJzYl91bmlvbjsKIAlyc2ItPnJzYl9jb3VudCA9
IGNvdW50OwotCXJzYi0+cnNiX3N0cmVhbSA9IChVQ0hBUikgdW5pb25fbm9kZS0+bm9kX2FyZ1tl
X3VuaV9zdHJlYW1dOworCXJzYi0+cnNiX3N0cmVhbSA9IChVQ0hBUikoSVBUUikgdW5pb25fbm9k
ZS0+bm9kX2FyZ1tlX3VuaV9zdHJlYW1dOwogCXJzYi0+cnNiX2Zvcm1hdCA9IGNzYi0+Y3NiX3Jw
dFtyc2ItPnJzYl9zdHJlYW1dLmNzYl9mb3JtYXQ7CiAJcnNiLT5yc2JfaW1wdXJlID0gQ01QX2lt
cHVyZShjc2IsIHNpemVvZihzdHJ1Y3QgaXJzYikpOwogCXJzYl9wdHIgPSByc2ItPnJzYl9hcmc7
CkBAIC01OTI2LDggKzU5MjYsOCBAQAogCWZpZWxkID0gYm9vbGVhbi0+bm9kX2FyZ1swXTsKIAlp
ZiAoZmllbGQtPm5vZF90eXBlICE9IG5vZF9maWVsZCkKIAkJcmV0dXJuIE5VTEw7Ci0JaWYgKChV
U0hPUlQpIGZpZWxkLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV0gIT0gc3RyZWFtIHx8Ci0JCShVU0hP
UlQpIGZpZWxkLT5ub2RfYXJnW2VfZmxkX2lkXSAhPSBpZHgtPmlkeF9ycHRbMF0uaWR4X2ZpZWxk
KQorCWlmICgoVVNIT1JUKShJUFRSKSBmaWVsZC0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dICE9IHN0
cmVhbSB8fAorCQkoVVNIT1JUKShJUFRSKSBmaWVsZC0+bm9kX2FyZ1tlX2ZsZF9pZF0gIT0gaWR4
LT5pZHhfcnB0WzBdLmlkeF9maWVsZCkKIAkJcmV0dXJuIE5VTEw7CiAJbm9kZSA9IG1ha2VfaW5k
ZXhfbm9kZSh0ZGJiLCByZWxhdGlvbiwgb3B0LT5vcHRfY3NiLCBpZHgpOwogCXJldHJpZXZhbCA9
IChJUkIpIG5vZGUtPm5vZF9hcmdbZV9pZHhfcmV0cmlldmFsXTsKQEAgLTU5OTUsOCArNTk5NSw4
IEBACiAJCQlyZXR1cm4gTlVMTDsKIAl9CiAKLQlpZiAoKFVTSE9SVCkgZmllbGQtPm5vZF9hcmdb
ZV9mbGRfc3RyZWFtXSAhPSBzdHJlYW0gfHwKLQkJKFVTSE9SVCkgZmllbGQtPm5vZF9hcmdbZV9m
bGRfaWRdICE9IGlkeC0+aWR4X3JwdFswXS5pZHhfZmllbGQKKwlpZiAoKFVTSE9SVCkoSVBUUikg
ZmllbGQtPm5vZF9hcmdbZV9mbGRfc3RyZWFtXSAhPSBzdHJlYW0gfHwKKwkJKFVTSE9SVCkoSVBU
UikgZmllbGQtPm5vZF9hcmdbZV9mbGRfaWRdICE9IGlkeC0+aWR4X3JwdFswXS5pZHhfZmllbGQK
IAkJfHwgIShpZHgtPmlkeF9ycHRbMF0uaWR4X2l0eXBlID09IGlkeF9zdHJpbmcKIAkJCSB8fCBp
ZHgtPmlkeF9ycHRbMF0uaWR4X2l0eXBlID09IGlkeF9ieXRlX2FycmF5CiAJCQkgfHwgaWR4LT5p
ZHhfcnB0WzBdLmlkeF9pdHlwZSA9PSBpZHhfbWV0YWRhdGEKQEAgLTYwOTQsMTAgKzYwOTQsMTAg
QEAKIAkJaWYgKGFjY2Vzc190eXBlKSB7CiAJCQlmb3IgKGFyZyA9IGFjY2Vzc190eXBlLT5ub2Rf
YXJnLCBlbmQgPSBhcmcgKyBwbGFuX2NvdW50OwogCQkJCSBhcmcgPCBlbmQ7IGFyZyArPSAzKSB7
Ci0JCQkJaWYgKHJlbGF0aW9uX2lkICE9IChTU0hPUlQpICogYXJnKQorCQkJCWlmIChyZWxhdGlv
bl9pZCAhPSAoU1NIT1JUKShJUFRSKSAqIGFyZykKIAkJCQkJLyogaW5kZXggJXMgY2Fubm90IGJl
IHVzZWQgaW4gdGhlIHNwZWNpZmllZCBwbGFuICovCiAJCQkJCUVSUl9wb3N0KGdkc19pbmRleF91
bnVzZWQsIGdkc19hcmdfc3RyaW5nLCAqKGFyZyArIDIpLCAwKTsKLQkJCQlpZiAoaWR4LT5pZHhf
aWQgPT0gKFVTSE9SVCkgKiAoYXJnICsgMSkpCisJCQkJaWYgKGlkeC0+aWR4X2lkID09IChVU0hP
UlQpKElQVFIpICogKGFyZyArIDEpKQogCQkJCQlpZiAoYWNjZXNzX3R5cGUtPm5vZF90eXBlID09
IG5vZF9uYXZpZ2F0aW9uYWwpCiAJCQkJCQlpZHgtPmlkeF9ydW50aW1lX2ZsYWdzIHw9IGlkeF9w
bGFuX25hdmlnYXRlOwogCQkJCQllbHNlCQkvKiBub2RfaW5kaWNlcyAqLwpAQCAtNjE2OSwxMyAr
NjE2OSwxMyBAQAogCQkgICBJZiBsZWZ0IHNpZGUgaXMgc3RpbGwgbm90IGEgZmllbGQsIGdpdmUg
dXAgKi8KIAogCQlpZiAobWF0Y2gtPm5vZF90eXBlICE9IG5vZF9maWVsZCB8fAotCQkJKFVTSE9S
VCkgbWF0Y2gtPm5vZF9hcmdbZV9mbGRfc3RyZWFtXSAhPSBzdHJlYW0gfHwKKwkJCShVU0hPUlQp
KElQVFIpIG1hdGNoLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV0gIT0gc3RyZWFtIHx8CiAJCQkhY29t
cHV0YWJsZShvcHQtPm9wdF9jc2IsIHZhbHVlLCBzdHJlYW0sIHRydWUsIGZhbHNlKSkKIAkJewog
CQkJbWF0Y2ggPSB2YWx1ZTsKIAkJCXZhbHVlID0gYm9vbGVhbi0+bm9kX2FyZ1swXTsKIAkJCWlm
IChtYXRjaC0+bm9kX3R5cGUgIT0gbm9kX2ZpZWxkIHx8Ci0JCQkJKFVTSE9SVCkgbWF0Y2gtPm5v
ZF9hcmdbZV9mbGRfc3RyZWFtXSAhPSBzdHJlYW0gfHwKKwkJCQkoVVNIT1JUKShJUFRSKSBtYXRj
aC0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dICE9IHN0cmVhbSB8fAogCQkJCSFjb21wdXRhYmxlKG9w
dC0+b3B0X2NzYiwgdmFsdWUsIHN0cmVhbSwgdHJ1ZSwgZmFsc2UpKQogCQkJewogCQkJCXJldHVy
biAwOwpAQCAtNjE5NCw3ICs2MTk0LDcgQEAKICNpZmRlZiBFWFBSRVNTSU9OX0lORElDRVMKIAkJ
CShpZHgtPmlkeF9leHByZXNzaW9uIHx8CiAjZW5kaWYKLQkJCSAoKFVTSE9SVCkgbWF0Y2gtPm5v
ZF9hcmdbZV9mbGRfaWRdID09IGlkeC0+aWR4X3JwdFtpXS5pZHhfZmllbGQpCisJCQkgKChVU0hP
UlQpKElQVFIpIG1hdGNoLT5ub2RfYXJnW2VfZmxkX2lkXSA9PSBpZHgtPmlkeF9ycHRbaV0uaWR4
X2ZpZWxkKQogI2lmZGVmIEVYUFJFU1NJT05fSU5ESUNFUwogCQkJKQogI2VuZGlmCkBAIC02NTgy
LDcgKzY1ODIsNyBAQAogCQlyZXR1cm4gRkFMU0U7CiAJZm9yIChzdHJlYW1zID0gcml2ZXItPnJp
dl9zdHJlYW1zLCBlbmQgPQogCQkgc3RyZWFtcyArIHJpdmVyLT5yaXZfY291bnQ7IHN0cmVhbXMg
PCBlbmQ7IHN0cmVhbXMrKykKLQkJaWYgKChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9mbGRfc3Ry
ZWFtXSA9PSAqc3RyZWFtcykKKwkJaWYgKChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9m
bGRfc3RyZWFtXSA9PSAqc3RyZWFtcykKIAkJCXJldHVybiBUUlVFOwogCXJldHVybiBGQUxTRTsK
IH0KQEAgLTY3NzksNyArNjc3OSw3IEBACiAJCSBwdHIgPCBlbmQ7IHB0cisrKSB7CiAJCW5vZGUg
PSAqcHRyOwogCQlpZiAobm9kZS0+bm9kX3R5cGUgIT0gbm9kX3JzZSkgewotCQkJc3RyZWFtID0g
KFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tTVFJFQU1fSU5ERVgobm9kZSldOworCQkJc3RyZWFtID0g
KFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tTVFJFQU1fSU5ERVgobm9kZSldOwogCQkJY3Ni
LT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdzICY9IH5jc2JfYWN0aXZlOwogCQl9CiAJCWVsc2UK
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82338</attachid>
            <date>2006-03-16 23:07 0000</date>
            <desc>gcc-4.0 patch</desc>
            <filename>firebird-gcc4.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtdXIgZmlyZWJpcmQtMS41LjMuNDg3MC1vcmlnL3NyYy9idXJwL2J1cnAuY3BwIGZpcmVi
aXJkLTEuNS4zLjQ4NzAvc3JjL2J1cnAvYnVycC5jcHAKLS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAt
b3JpZy9zcmMvYnVycC9idXJwLmNwcAkyMDA2LTAzLTE3IDAxOjM5OjA0LjAwMDAwMDAwMCAtMDUw
MAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvYnVycC9idXJwLmNwcAkyMDA2LTAzLTE3IDAx
OjMyOjE2LjAwMDAwMDAwMCAtMDUwMApAQCAtMTYwNiw3ICsxNjA2LDcgQEAKICNpZm5kZWYgV0lO
X05UCiAJCQkJc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOwogI2VuZGlmCi0JCQkJZmlsLT5maWxf
ZmQgPSByZWludGVycHJldF9jYXN0PERFU0M+KEdCQUtfU1RET1VUX0RFU0MpOworCQkJCWZpbC0+
ZmlsX2ZkID0gR0JBS19TVERPVVRfREVTQygpOwogCQkJCWJyZWFrOwogCQkJfQogCQkJZWxzZQpA
QCAtMTcyNCw3ICsxNzI0LDcgQEAKIAogCXRkZ2JsLT5hY3Rpb24tPmFjdF9hY3Rpb24gPSBBQ1Rf
cmVzdG9yZTsKIAlpZiAoIXN0cmNtcChmaWwtPmZpbF9uYW1lLCAic3RkaW4iKSkgewotCQlmaWwt
PmZpbF9mZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8REVTQz4oR0JBS19TVERJTl9ERVNDKTsKKwkJZmls
LT5maWxfZmQgPSBHQkFLX1NURElOX0RFU0MoKTsKIAkJdGRnYmwtPmZpbGVfZGVzYyA9IGZpbC0+
ZmlsX2ZkOwogCQl0ZGdibC0+Z2JsX3N3X2ZpbGVzID0gZmlsLT5maWxfbmV4dDsKIAl9CmRpZmYg
LXVyIGZpcmViaXJkLTEuNS4zLjQ4NzAtb3JpZy9zcmMvYnVycC9zdGRfZGVzYy5oIGZpcmViaXJk
LTEuNS4zLjQ4NzAvc3JjL2J1cnAvc3RkX2Rlc2MuaAotLS0gZmlyZWJpcmQtMS41LjMuNDg3MC1v
cmlnL3NyYy9idXJwL3N0ZF9kZXNjLmgJMjAwNi0wMy0xNyAwMTozOTowNC4wMDAwMDAwMDAgLTA1
MDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2J1cnAvc3RkX2Rlc2MuaAkyMDA2LTAzLTE3
IDAxOjQxOjM4LjAwMDAwMDAwMCAtMDUwMApAQCAtMzUsMTIgKzM1LDMzIEBACiAjaW5jbHVkZSAi
ZmlyZWJpcmQuaCIKIAogI2lmZGVmIFdJTl9OVAorCiAjaW5jbHVkZSA8d2luZG93cy5oPgotI2Rl
ZmluZQlHQkFLX1NURElOX0RFU0MJCQlHZXRTdGRIYW5kbGUoU1REX0lOUFVUX0hBTkRMRSkJLyog
c3RhbmRhcnQgaW5wdXQgIGZpbGUgZGVzY3JpcHRvciAqLwotI2RlZmluZQlHQkFLX1NURE9VVF9E
RVNDCQlHZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpCS8qIHN0YW5kYXJ0IG91dHB1dCBm
aWxlIGRlc2NyaXB0b3IgKi8KKwordHlwZWRlZiBIQU5ETEUgREVTQzsKKworc3RhdGljIGlubGlu
ZSBERVNDIEdCQUtfU1RESU5fREVTQyh2b2lkKQoreworCXJldHVybiBHZXRTdGRIYW5kbGUoU1RE
X0lOUFVUX0hBTkRMRSk7IC8vIHN0YW5kYXJkIGlucHV0IGZpbGUgZGVzY3JpcHRvciAKK30KK3N0
YXRpYyBpbmxpbmUgREVTQyBHQkFLX1NURE9VVF9ERVNDKHZvaWQpCit7CisJcmV0dXJuIEdldFN0
ZEhhbmRsZShTVERfT1VUUFVUX0hBTkRMRSk7CS8vIHN0YW5kYXJkIG91dHB1dCBmaWxlIGRlc2Ny
aXB0b3IKK30KKwogI2Vsc2UgLy9XSU5fTlQKLSNkZWZpbmUJR0JBS19TVERJTl9ERVNDCQkJKGlu
dCkwCS8qIHN0YW5kYXJ0IGlucHV0ICBmaWxlIGRlc2NyaXB0b3IgKi8KLSNkZWZpbmUJR0JBS19T
VERPVVRfREVTQwkJKGludCkxCS8qIHN0YW5kYXJ0IG91dHB1dCBmaWxlIGRlc2NyaXB0b3IgKi8K
KwordHlwZWRlZiBpbnQgREVTQzsKKworc3RhdGljIGlubGluZSBERVNDIEdCQUtfU1RESU5fREVT
Qyh2b2lkKQoreworCXJldHVybiAwOwkvLyBzdGFuZGFyZCBpbnB1dCBmaWxlIGRlc2NyaXB0b3Ig
Cit9CitzdGF0aWMgaW5saW5lIERFU0MgR0JBS19TVERPVVRfREVTQyh2b2lkKQoreworCXJldHVy
biAxOwkvLyBzdGFuZGFyZCBvdXRwdXQgZmlsZSBkZXNjcmlwdG9yCit9CisKICNlbmRpZiAvL1dJ
Tl9OVAogCiAjZW5kaWYgIC8vR0JBS19TVERfREVTQ19ICmRpZmYgLXVyIGZpcmViaXJkLTEuNS4z
LjQ4NzAtb3JpZy9zcmMvY29tbW9uL2NsYXNzZXMvYWxsb2MuaCBmaXJlYmlyZC0xLjUuMy40ODcw
L3NyYy9jb21tb24vY2xhc3Nlcy9hbGxvYy5oCi0tLSBmaXJlYmlyZC0xLjUuMy40ODcwLW9yaWcv
c3JjL2NvbW1vbi9jbGFzc2VzL2FsbG9jLmgJMjAwNi0wMy0xNyAwMTozOTowNC4wMDAwMDAwMDAg
LTA1MDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2NvbW1vbi9jbGFzc2VzL2FsbG9jLmgJ
MjAwNi0wMy0xNyAwMTozMjoxNi4wMDAwMDAwMDAgLTA1MDAKQEAgLTI0MSwyMyArMjQxLDI5IEBA
CiAKIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogbWVtKSB0aHJvdygpOwogCisjaWYgIF9f
R05VQ19fIDwgNAorI2RlZmluZSBTVEFUSUNfTkVXIHN0YXRpYworI2Vsc2UKKyNkZWZpbmUgU1RB
VElDX05FVworI2VuZGlmCisKICNpZmRlZiBERUJVR19HRFNfQUxMT0MKLXN0YXRpYyBpbmxpbmUg
dm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzLCBGaXJlYmlyZDo6TWVtb3J5UG9vbCYgcG9vbCwg
Y2hhciogZmlsZSwgaW50IGxpbmUpIHsKK1NUQVRJQ19ORVcgaW5saW5lIHZvaWQqIG9wZXJhdG9y
IG5ldyhzaXplX3QgcywgRmlyZWJpcmQ6Ok1lbW9yeVBvb2wmIHBvb2wsIGNoYXIqIGZpbGUsIGlu
dCBsaW5lKSB7CiAJcmV0dXJuIHBvb2wuYWxsb2NhdGUocywgMCwgZmlsZSwgbGluZSk7CiAvLwly
ZXR1cm4gcG9vbC5jYWxsb2MocywgMCwgZmlsZSwgbGluZSk7CiB9Ci1zdGF0aWMgaW5saW5lIHZv
aWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzLCBGaXJlYmlyZDo6TWVtb3J5UG9vbCYgcG9vbCwg
Y2hhciogZmlsZSwgaW50IGxpbmUpIHsKK1NUQVRJQ19ORVcgaW5saW5lIHZvaWQqIG9wZXJhdG9y
IG5ld1tdKHNpemVfdCBzLCBGaXJlYmlyZDo6TWVtb3J5UG9vbCYgcG9vbCwgY2hhciogZmlsZSwg
aW50IGxpbmUpIHsKIAlyZXR1cm4gcG9vbC5hbGxvY2F0ZShzLCAwLCBmaWxlLCBsaW5lKTsKIC8v
CXJldHVybiBwb29sLmNhbGxvYyhzLCAwLCBmaWxlLCBsaW5lKTsKIH0KICNkZWZpbmUgRkJfTkVX
KHBvb2wpIG5ldyhwb29sLF9fRklMRV9fLF9fTElORV9fKQogI2RlZmluZSBGQl9ORVdfUlBUKHBv
b2wsY291bnQpIG5ldyhwb29sLGNvdW50LF9fRklMRV9fLF9fTElORV9fKQogI2Vsc2UKLXN0YXRp
YyBpbmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzLCBGaXJlYmlyZDo6TWVtb3J5UG9v
bCYgcG9vbCkgeworU1RBVElDX05FVyBpbmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCBz
LCBGaXJlYmlyZDo6TWVtb3J5UG9vbCYgcG9vbCkgewogCXJldHVybiBwb29sLmFsbG9jYXRlKHMp
OwogLy8JcmV0dXJuIHBvb2wuY2FsbG9jKHMpOwogfQotc3RhdGljIGlubGluZSB2b2lkKiBvcGVy
YXRvciBuZXdbXShzaXplX3QgcywgRmlyZWJpcmQ6Ok1lbW9yeVBvb2wmIHBvb2wpIHsKK1NUQVRJ
Q19ORVcgaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHNpemVfdCBzLCBGaXJlYmlyZDo6TWVt
b3J5UG9vbCYgcG9vbCkgewogCXJldHVybiBwb29sLmFsbG9jYXRlKHMpOwogLy8JcmV0dXJuIHBv
b2wuY2FsbG9jKHMpOwogfQpkaWZmIC11ciBmaXJlYmlyZC0xLjUuMy40ODcwLW9yaWcvc3JjL2Nv
bW1vbi9jb25maWcvY29uZmlnLmNwcCBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9jb21tb24vY29u
ZmlnL2NvbmZpZy5jcHAKLS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAtb3JpZy9zcmMvY29tbW9uL2Nv
bmZpZy9jb25maWcuY3BwCTIwMDYtMDMtMTcgMDE6Mzk6MDQuMDAwMDAwMDAwIC0wNTAwCisrKyBm
aXJlYmlyZC0xLjUuMy40ODcwL3NyYy9jb21tb24vY29uZmlnL2NvbmZpZy5jcHAJMjAwNi0wMy0x
NyAwMTozMjoxNi4wMDAwMDAwMDAgLTA1MDAKQEAgLTI2MSwxMiArMjYxLDEyIEBACiAKIGludCBD
b25maWc6OmdldFNvcnRNZW1CbG9ja1NpemUoKQogewotCXJldHVybiAoaW50KSBzeXNDb25maWcu
dmFsdWVzW0tFWV9TT1JUX01FTV9CTE9DS19TSVpFXTsKKwlyZXR1cm4gKGludCkoSVBUUikgc3lz
Q29uZmlnLnZhbHVlc1tLRVlfU09SVF9NRU1fQkxPQ0tfU0laRV07CiB9CiAKIGludCBDb25maWc6
OmdldFNvcnRNZW1VcHBlckxpbWl0KCkKIHsKLQlyZXR1cm4gKGludCkgc3lzQ29uZmlnLnZhbHVl
c1tLRVlfU09SVF9NRU1fVVBQRVJfTElNSVRdOworCXJldHVybiAoaW50KShJUFRSKSBzeXNDb25m
aWcudmFsdWVzW0tFWV9TT1JUX01FTV9VUFBFUl9MSU1JVF07CiB9CiAKIGJvb2wgQ29uZmlnOjpn
ZXRSZW1vdGVGaWxlT3BlbkFiaWxpdHkoKQpAQCAtMjc2LDEyICsyNzYsMTIgQEAKIAogaW50IENv
bmZpZzo6Z2V0R3VhcmRpYW5PcHRpb24oKQogewotCXJldHVybiAoaW50KSBzeXNDb25maWcudmFs
dWVzW0tFWV9HVUFSRElBTl9PUFRJT05dOworCXJldHVybiAoaW50KShJUFRSKSBzeXNDb25maWcu
dmFsdWVzW0tFWV9HVUFSRElBTl9PUFRJT05dOwogfQogCiBpbnQgQ29uZmlnOjpnZXRDcHVBZmZp
bml0eU1hc2soKQogewotCXJldHVybiAoaW50KSBzeXNDb25maWcudmFsdWVzW0tFWV9DUFVfQUZG
SU5JVFlfTUFTS107CisJcmV0dXJuIChpbnQpKElQVFIpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX0NQ
VV9BRkZJTklUWV9NQVNLXTsKIH0KIAogYm9vbCBDb25maWc6OmdldE9sZFBhcmFtZXRlck9yZGVy
aW5nKCkKQEAgLTI5MSw3ICsyOTEsNyBAQAogCiBpbnQgQ29uZmlnOjpnZXRUY3BSZW1vdGVCdWZm
ZXJTaXplKCkKIHsKLQlyZXR1cm4gKGludCkgc3lzQ29uZmlnLnZhbHVlc1tLRVlfVENQX1JFTU9U
RV9CVUZGRVJfU0laRV07CisJcmV0dXJuIChpbnQpKElQVFIpIHN5c0NvbmZpZy52YWx1ZXNbS0VZ
X1RDUF9SRU1PVEVfQlVGRkVSX1NJWkVdOwogfQogCiBib29sIENvbmZpZzo6Z2V0VGNwTm9OYWds
ZSgpCkBAIC0zMDEsMzcgKzMwMSwzNyBAQAogCiBpbnQgQ29uZmlnOjpnZXRJcGNNYXBTaXplKCkK
IHsKLQlyZXR1cm4gKGludCkgc3lzQ29uZmlnLnZhbHVlc1tLRVlfSVBDX01BUF9TSVpFXTsKKwly
ZXR1cm4gKGludCkoSVBUUikgc3lzQ29uZmlnLnZhbHVlc1tLRVlfSVBDX01BUF9TSVpFXTsKIH0K
IAogaW50IENvbmZpZzo6Z2V0RGVmYXVsdERiQ2FjaGVQYWdlcygpCiB7Ci0JcmV0dXJuIChpbnQp
IHN5c0NvbmZpZy52YWx1ZXNbS0VZX0RFRkFVTFRfREJfQ0FDSEVfUEFHRVNdOworCXJldHVybiAo
aW50KShJUFRSKSBzeXNDb25maWcudmFsdWVzW0tFWV9ERUZBVUxUX0RCX0NBQ0hFX1BBR0VTXTsK
IH0KIAogaW50IENvbmZpZzo6Z2V0Q29ubmVjdGlvblRpbWVvdXQoKQogewotCXJldHVybiAoaW50
KSBzeXNDb25maWcudmFsdWVzW0tFWV9DT05ORUNUSU9OX1RJTUVPVVRdOworCXJldHVybiAoaW50
KShJUFRSKSBzeXNDb25maWcudmFsdWVzW0tFWV9DT05ORUNUSU9OX1RJTUVPVVRdOwogfQogCiBp
bnQgQ29uZmlnOjpnZXREdW1teVBhY2tldEludGVydmFsKCkKIHsKLQlyZXR1cm4gKGludCkgc3lz
Q29uZmlnLnZhbHVlc1tLRVlfRFVNTVlfUEFDS0VUX0lOVEVSVkFMXTsKKwlyZXR1cm4gKGludCko
SVBUUikgc3lzQ29uZmlnLnZhbHVlc1tLRVlfRFVNTVlfUEFDS0VUX0lOVEVSVkFMXTsKIH0KIAog
aW50IENvbmZpZzo6Z2V0TG9ja01lbVNpemUoKQogewotCXJldHVybiAoaW50KSBzeXNDb25maWcu
dmFsdWVzW0tFWV9MT0NLX01FTV9TSVpFXTsKKwlyZXR1cm4gKGludCkoSVBUUikgc3lzQ29uZmln
LnZhbHVlc1tLRVlfTE9DS19NRU1fU0laRV07CiB9CiAKIGludCBDb25maWc6OmdldExvY2tTZW1D
b3VudCgpCiB7Ci0JcmV0dXJuIChpbnQpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX0xPQ0tfU0VNX0NP
VU5UXTsKKwlyZXR1cm4gKGludCkoSVBUUikgc3lzQ29uZmlnLnZhbHVlc1tLRVlfTE9DS19TRU1f
Q09VTlRdOwogfQogCiBpbnQgQ29uZmlnOjpnZXRMb2NrU2lnbmFsKCkKIHsKLQlyZXR1cm4gKGlu
dCkgc3lzQ29uZmlnLnZhbHVlc1tLRVlfTE9DS19TSUdOQUxdOworCXJldHVybiAoaW50KShJUFRS
KSBzeXNDb25maWcudmFsdWVzW0tFWV9MT0NLX1NJR05BTF07CiB9CiAKIGJvb2wgQ29uZmlnOjpn
ZXRMb2NrR3JhbnRPcmRlcigpCkBAIC0zNDEsMjcgKzM0MSwyNyBAQAogCiBpbnQgQ29uZmlnOjpn
ZXRMb2NrSGFzaFNsb3RzKCkKIHsKLQlyZXR1cm4gKGludCkgc3lzQ29uZmlnLnZhbHVlc1tLRVlf
TE9DS19IQVNIX1NMT1RTXTsKKwlyZXR1cm4gKGludCkoSVBUUikgc3lzQ29uZmlnLnZhbHVlc1tL
RVlfTE9DS19IQVNIX1NMT1RTXTsKIH0KIAogaW50IENvbmZpZzo6Z2V0TG9ja0FjcXVpcmVTcGlu
cygpCiB7Ci0JcmV0dXJuIChpbnQpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX0xPQ0tfQUNRVUlSRV9T
UElOU107CisJcmV0dXJuIChpbnQpKElQVFIpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX0xPQ0tfQUNR
VUlSRV9TUElOU107CiB9CiAKIGludCBDb25maWc6OmdldEV2ZW50TWVtU2l6ZSgpCiB7Ci0JcmV0
dXJuIChpbnQpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX0VWRU5UX01FTV9TSVpFXTsKKwlyZXR1cm4g
KGludCkoSVBUUikgc3lzQ29uZmlnLnZhbHVlc1tLRVlfRVZFTlRfTUVNX1NJWkVdOwogfQogCiBp
bnQgQ29uZmlnOjpnZXREZWFkbG9ja1RpbWVvdXQoKQogewotCXJldHVybiAoaW50KSBzeXNDb25m
aWcudmFsdWVzW0tFWV9ERUFETE9DS19USU1FT1VUXTsKKwlyZXR1cm4gKGludCkoSVBUUikgc3lz
Q29uZmlnLnZhbHVlc1tLRVlfREVBRExPQ0tfVElNRU9VVF07CiB9CiAKIGludCBDb25maWc6Omdl
dFNvbGFyaXNTdGFsbFZhbHVlKCkKIHsKLQlyZXR1cm4gKGludCkgc3lzQ29uZmlnLnZhbHVlc1tL
RVlfU09MQVJJU19TVEFMTF9WQUxVRV07CisJcmV0dXJuIChpbnQpKElQVFIpIHN5c0NvbmZpZy52
YWx1ZXNbS0VZX1NPTEFSSVNfU1RBTExfVkFMVUVdOwogfQogCiBib29sIENvbmZpZzo6Z2V0VHJh
Y2VNZW1vcnlQb29scygpCkBAIC0zNzEsNyArMzcxLDcgQEAKIAogaW50IENvbmZpZzo6Z2V0UHJp
b3JpdHlTd2l0Y2hEZWxheSgpCiB7Ci0JaW50IHJjID0gKGludCkgc3lzQ29uZmlnLnZhbHVlc1tL
RVlfUFJJT1JJVFlfU1dJVENIX0RFTEFZXTsKKwlpbnQgcmMgPSAoaW50KShJUFRSKSBzeXNDb25m
aWcudmFsdWVzW0tFWV9QUklPUklUWV9TV0lUQ0hfREVMQVldOwogCWlmIChyYyA8IDEpCiAJCXJj
ID0gMTsKIAlyZXR1cm4gcmM7CkBAIC0zNzksNyArMzc5LDcgQEAKIAogaW50IENvbmZpZzo6Z2V0
RGVhZFRocmVhZHNDb2xsZWN0aW9uKCkKIHsKLQlpbnQgcmMgPSAoaW50KSBzeXNDb25maWcudmFs
dWVzW0tFWV9ERUFEX1RIUkVBRFNfQ09MTEVDVElPTl07CisJaW50IHJjID0gKGludCkoSVBUUikg
c3lzQ29uZmlnLnZhbHVlc1tLRVlfREVBRF9USFJFQURTX0NPTExFQ1RJT05dOwogCWlmIChyYyA8
IDEpCiAJCXJjID0gMTsKIAlyZXR1cm4gcmM7CkBAIC0zODcsNyArMzg3LDcgQEAKIAogaW50IENv
bmZpZzo6Z2V0UHJpb3JpdHlCb29zdCgpCiB7Ci0JaW50IHJjID0gKGludCkgc3lzQ29uZmlnLnZh
bHVlc1tLRVlfUFJJT1JJVFlfQk9PU1RdOworCWludCByYyA9IChpbnQpKElQVFIpIHN5c0NvbmZp
Zy52YWx1ZXNbS0VZX1BSSU9SSVRZX0JPT1NUXTsKIAlpZiAocmMgPCAxKQogCQlyYyA9IDE7CiAJ
aWYgKHJjID4gMTAwMCkKQEAgLTQwMiw3ICs0MDIsNyBAQAogCiBpbnQgQ29uZmlnOjpnZXRSZW1v
dGVTZXJ2aWNlUG9ydCgpCiB7Ci0JcmV0dXJuIChpbnQpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX1JF
TU9URV9TRVJWSUNFX1BPUlRdOworCXJldHVybiAoaW50KShJUFRSKSBzeXNDb25maWcudmFsdWVz
W0tFWV9SRU1PVEVfU0VSVklDRV9QT1JUXTsKIH0KIAogY29uc3QgY2hhciAqQ29uZmlnOjpnZXRS
ZW1vdGVQaXBlTmFtZSgpCkBAIC00MTcsMTcgKzQxNywxNyBAQAogCiBpbnQgQ29uZmlnOjpnZXRN
YXhVbmZsdXNoZWRXcml0ZXMoKQogewotCXJldHVybiAoaW50KSBzeXNDb25maWcudmFsdWVzW0tF
WV9NQVhfVU5GTFVTSEVEX1dSSVRFU107CisJcmV0dXJuIChpbnQpKElQVFIpIHN5c0NvbmZpZy52
YWx1ZXNbS0VZX01BWF9VTkZMVVNIRURfV1JJVEVTXTsKIH0KIAogaW50IENvbmZpZzo6Z2V0TWF4
VW5mbHVzaGVkV3JpdGVUaW1lKCkKIHsKLQlyZXR1cm4gKGludCkgc3lzQ29uZmlnLnZhbHVlc1tL
RVlfTUFYX1VORkxVU0hFRF9XUklURV9USU1FXTsKKwlyZXR1cm4gKGludCkoSVBUUikgc3lzQ29u
ZmlnLnZhbHVlc1tLRVlfTUFYX1VORkxVU0hFRF9XUklURV9USU1FXTsKIH0KIAogaW50IENvbmZp
Zzo6Z2V0UHJvY2Vzc1ByaW9yaXR5TGV2ZWwoKQogewotCXJldHVybiAoaW50KSBzeXNDb25maWcu
dmFsdWVzW0tFWV9QUk9DRVNTX1BSSU9SSVRZX0xFVkVMXTsKKwlyZXR1cm4gKGludCkoSVBUUikg
c3lzQ29uZmlnLnZhbHVlc1tLRVlfUFJPQ0VTU19QUklPUklUWV9MRVZFTF07CiB9CiAKIGJvb2wg
Q29uZmlnOjpnZXRDcmVhdGVJbnRlcm5hbFdpbmRvdygpCkBAIC00NDMsNyArNDQzLDcgQEAKIGlu
dCBDb25maWc6OmdldFJlbW90ZUF1eFBvcnQoKQogewogI2lmZGVmIFNVUEVSU0VSVkVSCi0JcmV0
dXJuIChpbnQpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX1JFTU9URV9BVVhfUE9SVF07CisJcmV0dXJu
IChpbnQpKElQVFIpIHN5c0NvbmZpZy52YWx1ZXNbS0VZX1JFTU9URV9BVVhfUE9SVF07CiAjZWxz
ZQogCXJldHVybiAwOwogI2VuZGlmCmRpZmYgLXVyIGZpcmViaXJkLTEuNS4zLjQ4NzAtb3JpZy9z
cmMvZHNxbC9wYXJzZS5jcHAgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvZHNxbC9wYXJzZS5jcHAK
LS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAtb3JpZy9zcmMvZHNxbC9wYXJzZS5jcHAJMjAwNi0wMy0x
NyAwMTozOTowNC4wMDAwMDAwMDAgLTA1MDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2Rz
cWwvcGFyc2UuY3BwCTIwMDYtMDMtMTcgMDE6MzI6MTcuMDAwMDAwMDAwIC0wNTAwCkBAIC02NDIx
LDcgKzY0MjEsNyBAQAogY2FzZSA3OToKIHsgCiAJCQlsZXguZ19maWVsZC0+ZmxkX2R0eXBlID0g
ZHR5cGVfY3N0cmluZzsgCi0JCQlsZXguZ19maWVsZC0+ZmxkX2NoYXJhY3Rlcl9sZW5ndGggPSAo
VVNIT1JUKSB5eXZzcFstMl07IH0KKwkJCWxleC5nX2ZpZWxkLT5mbGRfY2hhcmFjdGVyX2xlbmd0
aCA9IChVU0hPUlQpKElQVFIpIHl5dnNwWy0yXTsgfQogYnJlYWs7CiBjYXNlIDgwOgogeyB5eXZh
bCA9IChEU1FMX05PRCkgTlVMTDsgfQpAQCAtNzU0MSwyNyArNzU0MSwyNyBAQAogY2FzZSA1MDc6
CiB7IAogCQkJbGV4LmdfZmllbGQtPmZsZF9kdHlwZSA9IGR0eXBlX2Jsb2I7IAotCQkJbGV4Lmdf
ZmllbGQtPmZsZF9zZWdfbGVuZ3RoID0gKFVTSE9SVCkgeXl2c3BbLTFdOworCQkJbGV4LmdfZmll
bGQtPmZsZF9zZWdfbGVuZ3RoID0gKFVTSE9SVCkoSVBUUikgeXl2c3BbLTFdOwogCQkJbGV4Lmdf
ZmllbGQtPmZsZF9zdWJfdHlwZSA9IDA7CiAJCQl9CiBicmVhazsKIGNhc2UgNTA4OgogeyAKIAkJ
CWxleC5nX2ZpZWxkLT5mbGRfZHR5cGUgPSBkdHlwZV9ibG9iOyAKLQkJCWxleC5nX2ZpZWxkLT5m
bGRfc2VnX2xlbmd0aCA9IChVU0hPUlQpIHl5dnNwWy0zXTsKLQkJCWxleC5nX2ZpZWxkLT5mbGRf
c3ViX3R5cGUgPSAoVVNIT1JUKSB5eXZzcFstMV07CisJCQlsZXguZ19maWVsZC0+ZmxkX3NlZ19s
ZW5ndGggPSAoVVNIT1JUKShJUFRSKSB5eXZzcFstM107CisJCQlsZXguZ19maWVsZC0+ZmxkX3N1
Yl90eXBlID0gKFVTSE9SVCkoSVBUUikgeXl2c3BbLTFdOwogCQkJfQogYnJlYWs7CiBjYXNlIDUw
OToKIHsgCiAJCQlsZXguZ19maWVsZC0+ZmxkX2R0eXBlID0gZHR5cGVfYmxvYjsgCiAJCQlsZXgu
Z19maWVsZC0+ZmxkX3NlZ19sZW5ndGggPSA4MDsKLQkJCWxleC5nX2ZpZWxkLT5mbGRfc3ViX3R5
cGUgPSAoVVNIT1JUKSB5eXZzcFstMV07CisJCQlsZXguZ19maWVsZC0+ZmxkX3N1Yl90eXBlID0g
KFVTSE9SVCkoSVBUUikgeXl2c3BbLTFdOwogCQkJfQogYnJlYWs7CiBjYXNlIDUxMDoKIHsKLQkJ
CWxleC5nX2ZpZWxkLT5mbGRfc2VnX2xlbmd0aCA9IChVU0hPUlQpIHl5dnNwWzBdOworCQkJbGV4
LmdfZmllbGQtPmZsZF9zZWdfbGVuZ3RoID0gKFVTSE9SVCkoSVBUUikgeXl2c3BbMF07CiAJCSAg
CX0KIGJyZWFrOwogY2FzZSA1MTE6CkBAIC03NTcxLDcgKzc1NzEsNyBAQAogYnJlYWs7CiBjYXNl
IDUxMjoKIHsKLQkJCWxleC5nX2ZpZWxkLT5mbGRfc3ViX3R5cGUgPSAoVVNIT1JUKSB5eXZzcFsw
XTsKKwkJCWxleC5nX2ZpZWxkLT5mbGRfc3ViX3R5cGUgPSAoVVNIT1JUKShJUFRSKSB5eXZzcFsw
XTsKIAkJCX0KIGJyZWFrOwogY2FzZSA1MTM6CkBAIC03NTkyLDcgKzc1OTIsNyBAQAogY2FzZSA1
MTc6CiB7IAogCQkJbGV4LmdfZmllbGQtPmZsZF9kdHlwZSA9IGR0eXBlX3RleHQ7IAotCQkJbGV4
LmdfZmllbGQtPmZsZF9jaGFyYWN0ZXJfbGVuZ3RoID0gKFVTSE9SVCkgeXl2c3BbLTFdOyAKKwkJ
CWxleC5nX2ZpZWxkLT5mbGRfY2hhcmFjdGVyX2xlbmd0aCA9IChVU0hPUlQpKElQVFIpIHl5dnNw
Wy0xXTsgCiAJCQlsZXguZ19maWVsZC0+ZmxkX2ZsYWdzIHw9IEZMRF9uYXRpb25hbDsKIAkJCX0K
IGJyZWFrOwpAQCAtNzYwNiwxNCArNzYwNiwxNCBAQAogY2FzZSA1MTk6CiB7IAogCQkJbGV4Lmdf
ZmllbGQtPmZsZF9kdHlwZSA9IGR0eXBlX3Zhcnlpbmc7IAotCQkJbGV4LmdfZmllbGQtPmZsZF9j
aGFyYWN0ZXJfbGVuZ3RoID0gKFVTSE9SVCkgeXl2c3BbLTFdOyAKKwkJCWxleC5nX2ZpZWxkLT5m
bGRfY2hhcmFjdGVyX2xlbmd0aCA9IChVU0hPUlQpKElQVFIpIHl5dnNwWy0xXTsgCiAJCQlsZXgu
Z19maWVsZC0+ZmxkX2ZsYWdzIHw9IEZMRF9uYXRpb25hbDsKIAkJCX0KIGJyZWFrOwogY2FzZSA1
MjA6CiB7IAogCQkJbGV4LmdfZmllbGQtPmZsZF9kdHlwZSA9IGR0eXBlX3RleHQ7IAotCQkJbGV4
LmdfZmllbGQtPmZsZF9jaGFyYWN0ZXJfbGVuZ3RoID0gKFVTSE9SVCkgeXl2c3BbLTFdOyAKKwkJ
CWxleC5nX2ZpZWxkLT5mbGRfY2hhcmFjdGVyX2xlbmd0aCA9IChVU0hPUlQpKElQVFIpIHl5dnNw
Wy0xXTsgCiAJCQl9CiBicmVhazsKIGNhc2UgNTIxOgpAQCAtNzYyNSw3ICs3NjI1LDcgQEAKIGNh
c2UgNTIyOgogeyAKIAkJCWxleC5nX2ZpZWxkLT5mbGRfZHR5cGUgPSBkdHlwZV92YXJ5aW5nOyAK
LQkJCWxleC5nX2ZpZWxkLT5mbGRfY2hhcmFjdGVyX2xlbmd0aCA9IChVU0hPUlQpIHl5dnNwWy0x
XTsgCisJCQlsZXguZ19maWVsZC0+ZmxkX2NoYXJhY3Rlcl9sZW5ndGggPSAoVVNIT1JUKShJUFRS
KSB5eXZzcFstMV07IAogCQkJfQogYnJlYWs7CiBjYXNlIDUzMToKQEAgLTc3MDUsNyArNzcwNSw3
IEBACiAJCQkgICAgCWxleC5nX2ZpZWxkLT5mbGRfZHR5cGUgPSBkdHlwZV9sb25nOyAKIAkJCSAg
ICAJbGV4LmdfZmllbGQtPmZsZF9sZW5ndGggPSBzaXplb2YgKFNMT05HKTsgCiAJCQkgICAgCX0K
LQkJCWxleC5nX2ZpZWxkLT5mbGRfcHJlY2lzaW9uID0gKFVTSE9SVCkgeXl2c3BbLTFdOworCQkJ
bGV4LmdfZmllbGQtPmZsZF9wcmVjaXNpb24gPSAoVVNIT1JUKShJUFRSKSB5eXZzcFstMV07CiAJ
CQl9CiBicmVhazsKIGNhc2UgNTM2OgpAQCAtNzc2NSw4ICs3NzY1LDggQEAKIAkJCSAgICAJbGV4
LmdfZmllbGQtPmZsZF9sZW5ndGggPSBzaXplb2YgKFNMT05HKTsgCiAJCQkgICAgCX0KIAkJCSAg
ICB9Ci0JCQlsZXguZ19maWVsZC0+ZmxkX3ByZWNpc2lvbiA9IChVU0hPUlQpIHl5dnNwWy0zXTsK
LQkJCWxleC5nX2ZpZWxkLT5mbGRfc2NhbGUgPSAtIChTU0hPUlQpIHl5dnNwWy0xXTsKKwkJCWxl
eC5nX2ZpZWxkLT5mbGRfcHJlY2lzaW9uID0gKFVTSE9SVCkoSVBUUikgeXl2c3BbLTNdOworCQkJ
bGV4LmdfZmllbGQtPmZsZF9zY2FsZSA9IC0gKFNTSE9SVCkoSVBUUikgeXl2c3BbLTFdOwogCQkJ
fQogYnJlYWs7CiBjYXNlIDUzOToKQEAgLTc5MzIsNyArNzkzMiw3IEBACiB7IHl5dmFsID0gbWFr
ZV9ub2RlIChub2RfdGFibGVfbG9jaywgKGludCkgMiwgbWFrZV9saXN0ICh5eXZzcFstMV0pLCB5
eXZzcFswXSk7IH0KIGJyZWFrOwogY2FzZSA2MDI6Ci17IHl5dmFsID0gbWFrZV9mbGFnX25vZGUg
KG5vZF9sb2NrX21vZGUsIChTU0hPUlQpICgoU1NIT1JUKSB5eXZzcFstMV0gfCAoU1NIT1JUKSB5
eXZzcFswXSksIChTU0hPUlQpIDAsIE5VTEwpOyB9Cit7IHl5dmFsID0gbWFrZV9mbGFnX25vZGUg
KG5vZF9sb2NrX21vZGUsIChTU0hPUlQpICgoU1NIT1JUKShJUFRSKSB5eXZzcFstMV0gfCAoU1NI
T1JUKShJUFRSKSB5eXZzcFswXSksIChTU0hPUlQpIDAsIE5VTEwpOyB9CiBicmVhazsKIGNhc2Ug
NjAzOgogeyB5eXZhbCA9IDA7IH0KZGlmZiAtdXIgZmlyZWJpcmQtMS41LjMuNDg3MC1vcmlnL3Ny
Yy9ncHJlL2NfY3h4LmNwcCBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9ncHJlL2NfY3h4LmNwcAot
LS0gZmlyZWJpcmQtMS41LjMuNDg3MC1vcmlnL3NyYy9ncHJlL2NfY3h4LmNwcAkyMDA2LTAzLTE3
IDAxOjM5OjA0LjAwMDAwMDAwMCAtMDUwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvZ3By
ZS9jX2N4eC5jcHAJMjAwNi0wMy0xNyAwMTozMjoxOC4wMDAwMDAwMDAgLTA1MDAKQEAgLTIxODQs
NyArMjE4NCw3IEBACiAKIAlhcmdzLnBhdF9kYXRhYmFzZSA9IChEQkIpIGluaXQtPm5vZF9hcmdb
M107CiAJYXJncy5wYXRfdmVjdG9yMSA9IHN0YXR1c192ZWN0b3IoYWN0aW9uKTsKLQlhcmdzLnBh
dF9sb25nMSA9IChpbnQpIGluaXQtPm5vZF9hcmdbMl07CisJYXJncy5wYXRfbG9uZzEgPSAoaW50
KShJUFRSKSBpbml0LT5ub2RfYXJnWzJdOwogCWFyZ3MucGF0X3ZhbHVlMiA9IChpbnQpIGV2ZW50
X2xpc3QtPm5vZF9jb3VudDsKIAogLy8gIGdlbmVyYXRlIGNhbGwgdG8gZHluYW1pY2FsbHkgZ2Vu
ZXJhdGUgZXZlbnQgYmxvY2tzIApAQCAtMjI1NSw3ICsyMjU1LDcgQEAKIAkJZXZlbnRfaW5pdCA9
IChHUFJFX05PRCkgZXZlbnRfYWN0aW9uLT5hY3Rfb2JqZWN0OwogCQlzdGFja19uYW1lID0gKFNZ
TSkgZXZlbnRfaW5pdC0+bm9kX2FyZ1swXTsKIAkJaWYgKCFzdHJjbXAoZXZlbnRfbmFtZS0+c3lt
X3N0cmluZywgc3RhY2tfbmFtZS0+c3ltX3N0cmluZykpIHsKLQkJCWlkZW50ID0gKGludCkgZXZl
bnRfaW5pdC0+bm9kX2FyZ1syXTsKKwkJCWlkZW50ID0gKGludCkoSVBUUikgZXZlbnRfaW5pdC0+
bm9kX2FyZ1syXTsKIAkJCWRhdGFiYXNlID0gKERCQikgZXZlbnRfaW5pdC0+bm9kX2FyZ1szXTsK
IAkJfQogCX0KZGlmZiAtdXIgZmlyZWJpcmQtMS41LjMuNDg3MC1vcmlnL3NyYy9ncHJlL2NtZC5j
cHAgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvZ3ByZS9jbWQuY3BwCi0tLSBmaXJlYmlyZC0xLjUu
My40ODcwLW9yaWcvc3JjL2dwcmUvY21kLmNwcAkyMDA2LTAzLTE3IDAxOjM5OjA0LjAwMDAwMDAw
MCAtMDUwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvZ3ByZS9jbWQuY3BwCTIwMDYtMDMt
MTcgMDE6MzI6MTguMDAwMDAwMDAwIC0wNTAwCkBAIC0yMDQsNyArMjA0LDcgQEAKIAogCWNhc2Ug
QUNUX2Ryb3Bfc2hhZG93OgogCQlwdXRfbnVtZXJpYyhyZXF1ZXN0LCBnZHNfZHluX2RlbGV0ZV9z
aGFkb3csCi0JCQkJCShTU0hPUlQpIGFjdGlvbi0+YWN0X29iamVjdCk7CisJCQkJCShTU0hPUlQp
KElQVFIpIGFjdGlvbi0+YWN0X29iamVjdCk7CiAJCVNUVUZGX0VORDsKIAkJYnJlYWs7CiAKZGlm
ZiAtdXIgZmlyZWJpcmQtMS41LjMuNDg3MC1vcmlnL3NyYy9ncHJlL2NtZS5jcHAgZmlyZWJpcmQt
MS41LjMuNDg3MC9zcmMvZ3ByZS9jbWUuY3BwCi0tLSBmaXJlYmlyZC0xLjUuMy40ODcwLW9yaWcv
c3JjL2dwcmUvY21lLmNwcAkyMDA2LTAzLTE3IDAxOjM5OjA0LjAwMDAwMDAwMCAtMDUwMAorKysg
ZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvZ3ByZS9jbWUuY3BwCTIwMDYtMDMtMTcgMDE6MzI6MTgu
MDAwMDAwMDAwIC0wNTAwCkBAIC0yNTEsNyArMjUxLDcgQEAKIC8vICoqIEJlZ2luIGRhdGUvdGlt
ZS90aW1lc3RhbXAgc3VwcG9ydCAqCiAJY2FzZSBub2RfZXh0cmFjdDoKIAkJU1RVRkYoYmxyX2V4
dHJhY3QpOwotCQlzd2l0Y2ggKChLV1dPUkRTKSAoaW50KSBub2RlLT5ub2RfYXJnWzBdKQorCQlz
d2l0Y2ggKChLV1dPUkRTKSAoaW50KShJUFRSKSBub2RlLT5ub2RfYXJnWzFdKQogCQl7CiAJCWNh
c2UgS1dfWUVBUjoKIAkJCVNUVUZGKGJscl9leHRyYWN0X3llYXIpOwpAQCAtNDc4LDcgKzQ3OCw3
IEBACiAvLyAqKiBCZWdpbiBkYXRlL3RpbWUvdGltZXN0YW1wIHN1cHBvcnQgKgogCWNhc2Ugbm9k
X2V4dHJhY3Q6CiAJCXsKLQkJCUtXV09SRFMga3dfd29yZCA9IChLV1dPUkRTKSAoaW50KSBub2Rl
LT5ub2RfYXJnWzBdOworCQkJS1dXT1JEUyBrd193b3JkID0gKEtXV09SRFMpIChpbnQpKElQVFIp
IG5vZGUtPm5vZF9hcmdbMF07CiAJCQlDTUVfZ2V0X2R0eXBlKG5vZGUtPm5vZF9hcmdbMV0sIGYp
OwogCQkJc3dpdGNoIChmLT5mbGRfZHR5cGUpCiAJCQl7CmRpZmYgLXVyIGZpcmViaXJkLTEuNS4z
LjQ4NzAtb3JpZy9zcmMvZ3ByZS9jb2IuY3BwIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2dwcmUv
Y29iLmNwcAotLS0gZmlyZWJpcmQtMS41LjMuNDg3MC1vcmlnL3NyYy9ncHJlL2NvYi5jcHAJMjAw
Ni0wMy0xNyAwMTozOTowNC4wMDAwMDAwMDAgLTA1MDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAv
c3JjL2dwcmUvY29iLmNwcAkyMDA2LTAzLTE3IDAxOjMyOjE4LjAwMDAwMDAwMCAtMDUwMApAQCAt
MzgyLDcgKzM4Miw3IEBACiBzdGF0aWMgdm9pZAlnZW5fb25fZXJyb3IgKEFDVCk7CiBzdGF0aWMg
dm9pZAlnZW5fcHJvY2VkdXJlIChBQ1QpOwogc3RhdGljIHZvaWQJZ2VuX3B1dF9zZWdtZW50IChB
Q1QpOwotc3RhdGljIHZvaWQJZ2VuX3JhdyAoVUNIQVIgKiwgZW51bSByZXFfdCwgaW50LCBpbnQp
Oworc3RhdGljIHZvaWQJZ2VuX3JhdyAoVUNIQVIgKiwgZW51bSByZXFfdCwgaW50LCBJUFRSKTsK
IHN0YXRpYyB2b2lkCWdlbl9yZWFkeSAoQUNUKTsKIHN0YXRpYyB2b2lkCWdlbl9yZWNlaXZlIChB
Q1QsIFBPUik7CiBzdGF0aWMgdm9pZAlnZW5fcmVsZWFzZSAoQUNUKTsKQEAgLTI2NTYsNyArMjY1
Niw3IEBACiAKIAlhcmdzLnBhdF9kYXRhYmFzZSA9IChEQkIpIGluaXQtPm5vZF9hcmdbM107CiAJ
YXJncy5wYXRfdmVjdG9yMSA9IHN0YXR1c192ZWN0b3IoYWN0aW9uKTsKLQlhcmdzLnBhdF92YWx1
ZTEgPSAoaW50KSBpbml0LT5ub2RfYXJnWzJdOworCWFyZ3MucGF0X3ZhbHVlMSA9IChJUFRSKSBp
bml0LT5ub2RfYXJnWzJdOwogCWFyZ3MucGF0X3ZhbHVlMiA9IChpbnQpIGV2ZW50X2xpc3QtPm5v
ZF9jb3VudDsKIAlhcmdzLnBhdF9zdHJpbmcxID0gSVNDX0VWRU5UX0JMT0NLOwogCWFyZ3MucGF0
X3N0cmluZzIgPSBJU0NfRVZFTlRfV0FJVDsKQEAgLTI3MTIsNyArMjcxMiw3IEBACiAJTExTIHN0
YWNrX3B0cjsKIAlBQ1QgZXZlbnRfYWN0aW9uOwogCVNTSE9SVCBjb2x1bW47Ci0JaW50IGlkZW50
OworCUlQVFIgaWRlbnQ7CiAJVEVYVCBzWzY0XTsKIAlURVhUICpwYXR0ZXJuMSA9CiAJCSJDQUxM
IFwiJVMyXCIgVVNJTkcgJVYxLCAlUkYlREglUkUsICVWRiVTNCVOMUwlVkUsICVWRiVTNCVOMUEl
VkUsICVWRiVTNCVOMUIlVkUiOwpAQCAtMjczMCw3ICsyNzMwLDcgQEAKIAkJZXZlbnRfaW5pdCA9
IChHUFJFX05PRCkgZXZlbnRfYWN0aW9uLT5hY3Rfb2JqZWN0OwogCQlzdGFja19uYW1lID0gKFNZ
TSkgZXZlbnRfaW5pdC0+bm9kX2FyZ1swXTsKIAkJaWYgKCFzdHJjbXAoZXZlbnRfbmFtZS0+c3lt
X3N0cmluZywgc3RhY2tfbmFtZS0+c3ltX3N0cmluZykpIHsKLQkJCWlkZW50ID0gKGludCkgZXZl
bnRfaW5pdC0+bm9kX2FyZ1syXTsKKwkJCWlkZW50ID0gKElQVFIpIGV2ZW50X2luaXQtPm5vZF9h
cmdbMl07CiAJCQlkYXRhYmFzZSA9IChEQkIpIGV2ZW50X2luaXQtPm5vZF9hcmdbM107CiAJCX0K
IAl9CkBAIC0zODQ1LDcgKzM4NDUsNyBAQAogCiBzdGF0aWMgdm9pZCBnZW5fcmF3KAogCQkJICAg
VUNIQVIgKiBibHIsCi0JCQkgICBlbnVtIHJlcV90IHJlcXVlc3RfdHlwZSwgaW50IHJlcXVlc3Rf
bGVuZ3RoLCBpbnQgaWRlbnQpCisJCQkgICBlbnVtIHJlcV90IHJlcXVlc3RfdHlwZSwgaW50IHJl
cXVlc3RfbGVuZ3RoLCBJUFRSIGlkZW50KQogewogCVVDSEFSICpjOwogCVRFWFQgc1syNTZdOwpA
QCAtNDE5Myw3ICs0MTkzLDcgQEAKIAkJCXByaW50YShuYW1lc1tDT0xVTU5fMF0sIEZBTFNFLCAi
MDEgICVzJWQuIiwKIAkJCQkgICBuYW1lc1tJU0NfXSwgYmxvYi0+YmxiX2JwYl9pZGVudCk7CiAJ
CQlnZW5fcmF3KGJsb2ItPmJsYl9icGIsIHJlcXVlc3QtPnJlcV90eXBlLCBibG9iLT5ibGJfYnBi
X2xlbmd0aCwKLQkJCQkJKGludCkgcmVxdWVzdCk7CisJCQkJCShJUFRSKSByZXF1ZXN0KTsKIAkJ
CXByaW50YShuYW1lc1tDT01NRU5UXSwgRkFMU0UsICIgIik7CiAJCX0KICNpZmRlZiBQWVhJUwpA
QCAtNDcwMyw3ICs0NzAzLDcgQEAKIHN0YXRpYyB2b2lkIGdlbl90eXBlKCBBQ1QgYWN0aW9uKQog
ewogCi0JcHJpbnRhKG5hbWVzW0NPTFVNTl0sIFRSVUUsICIlbGQiLCBhY3Rpb24tPmFjdF9vYmpl
Y3QpOworCXByaW50YShuYW1lc1tDT0xVTU5dLCBUUlVFLCAiJWxkIiwgKElQVFIpIGFjdGlvbi0+
YWN0X29iamVjdCk7CiB9CiAKIApkaWZmIC11ciBmaXJlYmlyZC0xLjUuMy40ODcwLW9yaWcvc3Jj
L2dwcmUvcGF0LmggZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvZ3ByZS9wYXQuaAotLS0gZmlyZWJp
cmQtMS41LjMuNDg3MC1vcmlnL3NyYy9ncHJlL3BhdC5oCTIwMDYtMDMtMTcgMDE6Mzk6MDQuMDAw
MDAwMDAwIC0wNTAwCisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9ncHJlL3BhdC5oCTIwMDYt
MDMtMTcgMDE6MzI6MTguMDAwMDAwMDAwIC0wNTAwCkBAIC04NSw3ICs4NSw3IEBACiAJVVNIT1JU
IHBhdF9pZGVudDI7CiAJVEVYVCAqcGF0X3ZlY3RvcjE7CiAJVEVYVCAqcGF0X3ZlY3RvcjI7Ci0J
aW50IHBhdF92YWx1ZTE7CisJSVBUUiBwYXRfdmFsdWUxOwogCWludCBwYXRfdmFsdWUyOwogCWlu
dCBwYXRfdmFsdWUzOwogCWludCBwYXRfdmFsdWU0OwpkaWZmIC11ciBmaXJlYmlyZC0xLjUuMy40
ODcwLW9yaWcvc3JjL2pyZC9ibGIuY3BwIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9ibGIu
Y3BwCi0tLSBmaXJlYmlyZC0xLjUuMy40ODcwLW9yaWcvc3JjL2pyZC9ibGIuY3BwCTIwMDYtMDMt
MTcgMDE6Mzk6MDQuMDAwMDAwMDAwIC0wNTAwCisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9q
cmQvYmxiLmNwcAkyMDA2LTAzLTE3IDAxOjMyOjI4LjAwMDAwMDAwMCAtMDUwMApAQCAtODYwLDgg
Kzg2MCw4IEBACiAJcmVxdWVzdCA9IHRkYmItPnRkYmJfcmVxdWVzdDsKIAlzb3VyY2UgPSAoQklE
KSBmcm9tX2Rlc2MtPmRzY19hZGRyZXNzOwogCWRlc3RpbmF0aW9uID0gKEJJRCkgdG9fZGVzYy0+
ZHNjX2FkZHJlc3M7Ci0JaWQgPSAoVVNIT1JUKSBmaWVsZC0+bm9kX2FyZ1tlX2ZsZF9pZF07Ci0J
cnBiID0gJnJlcXVlc3QtPnJlcV9ycGJbKGludCkgZmllbGQtPm5vZF9hcmdbZV9mbGRfc3RyZWFt
XV07CisJaWQgPSAoVVNIT1JUKShJUFRSKSBmaWVsZC0+bm9kX2FyZ1tlX2ZsZF9pZF07CisJcnBi
ID0gJnJlcXVlc3QtPnJlcV9ycGJbKGludCkoSVBUUikgZmllbGQtPm5vZF9hcmdbZV9mbGRfc3Ry
ZWFtXV07CiAJcmVsYXRpb24gPSBycGItPnJwYl9yZWxhdGlvbjsKIAlyZWNvcmQgPSBycGItPnJw
Yl9yZWNvcmQ7CiAKZGlmZiAtdXIgZmlyZWJpcmQtMS41LjMuNDg3MC1vcmlnL3NyYy9qcmQvY21w
LmNwcCBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9qcmQvY21wLmNwcAotLS0gZmlyZWJpcmQtMS41
LjMuNDg3MC1vcmlnL3NyYy9qcmQvY21wLmNwcAkyMDA2LTAzLTE3IDAxOjM5OjA0LjAwMDAwMDAw
MCAtMDUwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvanJkL2NtcC5jcHAJMjAwNi0wMy0x
NyAwMTozMjoyOS4wMDAwMDAwMDAgLTA1MDAKQEAgLTk1OCw5ICs5NTgsOSBAQAogCQkJRk1UIGZv
cm1hdDsKIAkJCVVTSE9SVCBpZDsKIAotCQkJaWQgPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2Vf
ZmxkX2lkXTsKKwkJCWlkID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9pZF07
CiAJCQlmb3JtYXQgPQotCQkJCUNNUF9mb3JtYXQodGRiYiwgY3NiLCAoVVNIT1JUKSBub2RlLT5u
b2RfYXJnW2VfZmxkX3N0cmVhbV0pOworCQkJCUNNUF9mb3JtYXQodGRiYiwgY3NiLCAoVVNIT1JU
KShJUFRSKSBub2RlLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV0pOwogCQkJaWYgKGlkID49IGZvcm1h
dC0+Zm10X2NvdW50KSB7CiAJCQkJZGVzYy0+ZHNjX2R0eXBlID0gZHR5cGVfbnVsbDsKIAkJCQlk
ZXNjLT5kc2NfbGVuZ3RoID0gMDsKQEAgLTk4Myw5ICs5ODMsOSBAQAogCiAJCQlzdWIgPSBub2Rl
LT5ub2RfYXJnW2Vfc2NsX2ZpZWxkXTsKIAkJCXJlbGF0aW9uID0KLQkJCQljc2ItPmNzYl9ycHRb
KFVTSE9SVCkgc3ViLT4KKwkJCQljc2ItPmNzYl9ycHRbKFVTSE9SVCkoSVBUUikgc3ViLT4KIAkJ
CQkJCQkgbm9kX2FyZ1tlX2ZsZF9zdHJlYW1dXS5jc2JfcmVsYXRpb247Ci0JCQlpZCA9IChVU0hP
UlQpIHN1Yi0+bm9kX2FyZ1tlX2ZsZF9pZF07CisJCQlpZCA9IChVU0hPUlQpKElQVFIpIHN1Yi0+
bm9kX2FyZ1tlX2ZsZF9pZF07CiAJCQlmaWVsZCA9IE1FVF9nZXRfZmllbGQocmVsYXRpb24sIGlk
KTsKIAkJCWlmICghZmllbGQgfHwgIShhcnJheSA9IGZpZWxkLT5mbGRfYXJyYXkpKQogCQkJCUlC
RVJST1IoMjIzKTsJLyogbXNnIDIyMyBhcmd1bWVudCBvZiBzY2FsYXIgb3BlcmF0aW9uIG11c3Qg
YmUgYW4gYXJyYXkgKi8KQEAgLTE2NjEsNyArMTY2MSw3IEBACiAJCXJldHVybjsKIAogCWNhc2Ug
bm9kX2V4dHJhY3Q6Ci0JCWlmICgoVUxPTkcpIG5vZGUtPm5vZF9hcmdbZV9leHRyYWN0X3BhcnRd
ID09IGJscl9leHRyYWN0X3NlY29uZCkgeworCQlpZiAoKFVMT05HKShJUFRSKSBub2RlLT5ub2Rf
YXJnW2VfZXh0cmFjdF9wYXJ0XSA9PSBibHJfZXh0cmFjdF9zZWNvbmQpIHsKIAkJCS8qIFFVQURE
QVRFIC0gU0VDT05EIHJldHVybnMgYSBmbG9hdCwgb3Igc2NhbGVkISAqLwogCQkJZGVzYy0+ZHNj
X2R0eXBlID0gZHR5cGVfbG9uZzsKIAkJCWRlc2MtPmRzY19sZW5ndGggPSBzaXplb2YoVUxPTkcp
OwpAQCAtMTcyMCw3ICsxNzIwLDcgQEAKIAogCQkJbWVzc2FnZSA9IG5vZGUtPm5vZF9hcmdbZV9h
cmdfbWVzc2FnZV07CiAJCQlmb3JtYXQgPSAoRk1UKSBtZXNzYWdlLT5ub2RfYXJnW2VfbXNnX2Zv
cm1hdF07Ci0JCQkqZGVzYyA9IGZvcm1hdC0+Zm10X2Rlc2NbKGludCkgbm9kZS0+bm9kX2FyZ1tl
X2FyZ19udW1iZXJdXTsKKwkJCSpkZXNjID0gZm9ybWF0LT5mbXRfZGVzY1soaW50KShJUFRSKSBu
b2RlLT5ub2RfYXJnW2VfYXJnX251bWJlcl1dOwogCQkJcmV0dXJuOwogCQl9CiAKQEAgLTI2NTMs
OCArMjY1Myw4IEBACiAJCQkJIWlucHV0LT5ub2RfYXJnW2VfZmxkX2lkXSAmJiAhaW5wdXQtPm5v
ZF9hcmdbZV9mbGRfc3RyZWFtXSkKIAkJCQktLWZpZWxkX2lkOwogCQkJZWxzZQotCQkJCWZpZWxk
X2lkID0gKFVTSE9SVCkgaW5wdXQtPm5vZF9hcmdbZV9mbGRfaWRdOwotCQkJc3RyZWFtID0gKFVT
SE9SVCkgaW5wdXQtPm5vZF9hcmdbZV9mbGRfc3RyZWFtXTsKKwkJCQlmaWVsZF9pZCA9IChVU0hP
UlQpKElQVFIpIGlucHV0LT5ub2RfYXJnW2VfZmxkX2lkXTsKKwkJCXN0cmVhbSA9IChVU0hPUlQp
KElQVFIpIGlucHV0LT5ub2RfYXJnW2VfZmxkX3N0cmVhbV07CiAJCQlpZiAocmVtYXBfZmxkKSB7
CiAJCQkJSlJEX1JFTCByZWxhdGlvbjsKIAkJCQlKUkRfRkxEIGZpZWxkOwpAQCAtMjY2Miw3ICsy
NjYyLDcgQEAKIAkJCQlyZWxhdGlvbiA9ICgqY3NiKS0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9yZWxh
dGlvbjsKIAkJCQlmaWVsZCA9IE1FVF9nZXRfZmllbGQocmVsYXRpb24sIGZpZWxkX2lkKTsKIAkJ
CQlpZiAoZmllbGQtPmZsZF9zb3VyY2UpCi0JCQkJCWZpZWxkX2lkID0gKFVTSE9SVCkgZmllbGQt
PmZsZF9zb3VyY2UtPm5vZF9hcmdbZV9mbGRfaWRdOworCQkJCQlmaWVsZF9pZCA9IChVU0hPUlQp
KElQVFIpIGZpZWxkLT5mbGRfc291cmNlLT5ub2RfYXJnW2VfZmxkX2lkXTsKIAkJCX0KIAkJCWlm
IChyZW1hcCkKIAkJCQlzdHJlYW0gPSByZW1hcFtzdHJlYW1dOwpAQCAtMjc3Myw3ICsyNzczLDcg
QEAKIAkJCW5vZGUtPm5vZF90eXBlID0gaW5wdXQtPm5vZF90eXBlOwogCQkJbm9kZS0+bm9kX2Nv
dW50ID0gMDsKIAotCQkJc3RyZWFtID0gKFVTSE9SVCkgaW5wdXQtPm5vZF9hcmdbZV9yZWxfc3Ry
ZWFtXTsKKwkJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIGlucHV0LT5ub2RfYXJnW2VfcmVsX3N0
cmVhbV07CiAJLyoqIAogCSAgICBMYXN0IGVudHJ5IGluIHRoZSByZW1hcCBjb250YWlucyB0aGUg
dGhlIG9yaWdpbmFsIHN0cmVhbSBudW1iZXIuCiAJICAgIEdldCB0aGF0IHN0cmVhbSBudW1iZXIg
c28gdGhhdCB0aGUgZmxhZ3MgY2FuIGJlIGNvcGllZCAKQEAgLTI4NTMsNyArMjg1Myw3IEBACiAJ
CQlub2RlLT5ub2RfYXJnW2VfcHJjX2lucHV0c10gPQogCQkJCWNvcHkodGRiYiwgY3NiLCBpbnB1
dC0+bm9kX2FyZ1tlX3ByY19pbnB1dHNdLCByZW1hcCwgZmllbGRfaWQsCiAJCQkJCSBub2RlLT5u
b2RfYXJnW2VfcHJjX2luX21zZ10sIHJlbWFwX2ZsZCk7Ci0JCQlzdHJlYW0gPSAoVVNIT1JUKSBp
bnB1dC0+bm9kX2FyZ1tlX3ByY19zdHJlYW1dOworCQkJc3RyZWFtID0gKFVTSE9SVCkoSVBUUikg
aW5wdXQtPm5vZF9hcmdbZV9wcmNfc3RyZWFtXTsKIAkJCW5ld19zdHJlYW0gPSAoKmNzYiktPmNz
Yl9uX3N0cmVhbSsrOwogCQkJbm9kZS0+bm9kX2FyZ1tlX3ByY19zdHJlYW1dID0gKEpSRF9OT0Qp
IChTTE9ORykgbmV3X3N0cmVhbTsKIAkJCS8qIFRNTjogSGVyZSB3ZSBzaG91bGQgcmVhbGx5IGhh
dmUgdGhlIGZvbGxvd2luZyBhc3NlcnQgKi8KQEAgLTI4NjMsNyArMjg2Myw3IEBACiAJCQllbGVt
ZW50ID0gQ01QX2NzYl9lbGVtZW50KGNzYiwgbmV3X3N0cmVhbSk7CiAJCQkvLyBTS0lEREVSOiBN
YXliZSB3ZSBuZWVkIHRvIGNoZWNrIGlmIHdlIHJlYWxseSBmb3VuZCBhIHByb2NlZHVyZSA/CiAJ
CQllbGVtZW50LT5jc2JfcHJvY2VkdXJlID0gTUVUX2xvb2t1cF9wcm9jZWR1cmVfaWQodGRiYiwK
LQkJCSAgKFNTSE9SVClub2RlLT5ub2RfYXJnW2VfcHJjX3Byb2NlZHVyZV0sRkFMU0UsRkFMU0Us
MCk7CisJCQkgIChTU0hPUlQpKElQVFIpbm9kZS0+bm9kX2FyZ1tlX3ByY19wcm9jZWR1cmVdLEZB
TFNFLEZBTFNFLDApOwogCiAJCQkoKmNzYiktPmNzYl9ycHRbbmV3X3N0cmVhbV0uY3NiX2ZsYWdz
IHw9CiAJCQkJKCpjc2IpLT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdzICYgY3NiX25vX2Ria2V5
OwpAQCAtMjg3Niw3ICsyODc2LDcgQEAKIAkJbm9kZSA9IFBBUl9tYWtlX25vZGUodGRiYiwgZV9h
Z2dfbGVuZ3RoKTsKIAkJbm9kZS0+bm9kX3R5cGUgPSBpbnB1dC0+bm9kX3R5cGU7CiAJCW5vZGUt
Pm5vZF9jb3VudCA9IDA7Ci0JCXN0cmVhbSA9IChVU0hPUlQpIGlucHV0LT5ub2RfYXJnW2VfYWdn
X3N0cmVhbV07CisJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIGlucHV0LT5ub2RfYXJnW2VfYWdn
X3N0cmVhbV07CiAJCWFzc2VydChzdHJlYW0gPD0gTUFYX1NUUkVBTVMpOwogCQluZXdfc3RyZWFt
ID0gKCpjc2IpLT5jc2Jfbl9zdHJlYW0rKzsKIAkJYXNzZXJ0KG5ld19zdHJlYW0gPD0gTUFYX1NU
UkVBTVMpOwpAQCAtMjkwNSw3ICsyOTA1LDcgQEAKIAkJbm9kZSA9IFBBUl9tYWtlX25vZGUodGRi
YiwgZV91bmlfbGVuZ3RoKTsKIAkJbm9kZS0+bm9kX3R5cGUgPSBpbnB1dC0+bm9kX3R5cGU7CiAJ
CW5vZGUtPm5vZF9jb3VudCA9IDI7Ci0JCXN0cmVhbSA9IChVU0hPUlQpIGlucHV0LT5ub2RfYXJn
W2VfdW5pX3N0cmVhbV07CisJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIGlucHV0LT5ub2RfYXJn
W2VfdW5pX3N0cmVhbV07CiAJCW5ld19zdHJlYW0gPSAoKmNzYiktPmNzYl9uX3N0cmVhbSsrOwog
CQlub2RlLT5ub2RfYXJnW2VfdW5pX3N0cmVhbV0gPSAoSlJEX05PRCkgKFNMT05HKSBuZXdfc3Ry
ZWFtOwogCQkvKiBUTU46IEhlcmUgd2Ugc2hvdWxkIHJlYWxseSBoYXZlIHRoZSBmb2xsb3dpbmcg
YXNzZXJ0ICovCkBAIC0zMDQzLDcgKzMwNDMsNyBAQAogCQkJY3NiX3JlcGVhdCAqdGFpbDsKIAkJ
CUpSRF9SRUwgcmVsYXRpb247CiAKLQkJCXN0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdb
ZV9yZWxfc3RyZWFtXTsKKwkJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdb
ZV9yZWxfc3RyZWFtXTsKIAkJCWNzYi0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9mbGFncyB8PSBjc2Jf
bm9fZGJrZXk7CiAJCQl0YWlsID0gJmNzYi0+Y3NiX3JwdFtzdHJlYW1dOwogCQkJaWYgKCAocmVs
YXRpb24gPSB0YWlsLT5jc2JfcmVsYXRpb24pICkKQEAgLTMyNzEsNyArMzI3MSw3IEBACiAJCQlK
UkRfRkxEIGZpZWxkOwogCQkJVUNIQVIgKm1hcCwgbG9jYWxfbWFwW01BUF9MRU5HVEhdOwogCi0J
CQlzdHJlYW0gPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV07CisJCQlzdHJl
YW0gPSAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV07CiAKIAkJCS8q
IExvb2sgYXQgYWxsIHJzZSdzIHdoaWNoIGFyZSBsb3dlciBpbiBzY29wZSB0aGFuIHRoZSByc2Ug
d2hpY2ggdGhpcyBmaWVsZCAKIAkJCSAgIGlzIHJlZmVyZW5jaW5nLCBhbmQgbWFyayB0aGVtIGFz
IHZhcnlpbmcgLS0gdGhlIHJ1bGUgaXMgdGhhdCBpZiBhIGZpZWxkIApAQCAtMzI5Miw3ICszMjky
LDcgQEAKIAkJCWlmICghKHJlbGF0aW9uID0gdGFpbC0+Y3NiX3JlbGF0aW9uKSB8fAogCQkJCSEo
ZmllbGQgPQogCQkJCSAgTUVUX2dldF9maWVsZChyZWxhdGlvbiwKLQkJCQkJCQkJKFVTSE9SVCkg
bm9kZS0+bm9kX2FyZ1tlX2ZsZF9pZF0pKSkgYnJlYWs7CisJCQkJCQkJCShVU0hPUlQpKElQVFIp
IG5vZGUtPm5vZF9hcmdbZV9mbGRfaWRdKSkpIGJyZWFrOwogCiAJCQkvKiBpZiB0aGlzIGlzIGEg
bW9kaWZ5IG9yIHN0b3JlLCBjaGVjayBSRUZFUkVOQ0VTIGFjY2VzcyB0byBhbnkgZm9yZWlnbiBr
ZXlzLiAqLwogCkBAIC0zNDA0LDkgKzM0MDQsOSBAQAogCiAJCQlzdWIgPSBub2RlLT5ub2RfYXJn
W2VfYXNnbl9mcm9tXTsKIAkJCWlmIChzdWItPm5vZF90eXBlID09IG5vZF9maWVsZCkgewotCQkJ
CXN0cmVhbSA9IChVU0hPUlQpIHN1Yi0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dOworCQkJCXN0cmVh
bSA9IChVU0hPUlQpKElQVFIpIHN1Yi0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dOwogCQkJCWZpZWxk
ID0gTUVUX2dldF9maWVsZCgoKmNzYiktPmNzYl9ycHRbc3RyZWFtXS5jc2JfcmVsYXRpb24sCi0J
CQkJCQkJCQkgIChVU0hPUlQpIHN1Yi0+bm9kX2FyZ1tlX2ZsZF9pZF0pOworCQkJCQkJCQkJICAo
VVNIT1JUKShJUFRSKSBzdWItPm5vZF9hcmdbZV9mbGRfaWRdKTsKIAkJCQlpZiAoZmllbGQpCiAJ
CQkJCW5vZGUtPm5vZF9hcmdbZV9hc2duX21pc3NpbmcyXSA9IGZpZWxkLT5mbGRfbWlzc2luZ192
YWx1ZTsKIAkJCX0KQEAgLTM0MTQsMTIgKzM0MTQsMTIgQEAKIAkJCXN1YiA9IG5vZGUtPm5vZF9h
cmdbZV9hc2duX3RvXTsKIAkJCWlmIChzdWItPm5vZF90eXBlICE9IG5vZF9maWVsZCkKIAkJCQli
cmVhazsKLQkJCXN0cmVhbSA9IChVU0hPUlQpIHN1Yi0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dOwor
CQkJc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgc3ViLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV07CiAJ
CQl0YWlsID0gJigqY3NiKS0+Y3NiX3JwdFtzdHJlYW1dOwogCQkJaWYgKCEKIAkJCQkoZmllbGQg
PQogCQkJCSBNRVRfZ2V0X2ZpZWxkKHRhaWwtPmNzYl9yZWxhdGlvbiwKLQkJCQkJCQkgICAoVVNI
T1JUKSBzdWItPm5vZF9hcmdbZV9mbGRfaWRdKSkpIGJyZWFrOworCQkJCQkJCSAgIChVU0hPUlQp
KElQVFIpIHN1Yi0+bm9kX2FyZ1tlX2ZsZF9pZF0pKSkgYnJlYWs7CiAJCQlpZiAoZmllbGQtPmZs
ZF9taXNzaW5nX3ZhbHVlKSB7CiAJCQkJbm9kZS0+bm9kX2FyZ1tlX2FzZ25fbWlzc2luZ10gPSBm
aWVsZC0+ZmxkX21pc3NpbmdfdmFsdWU7CiAJCQkJbm9kZS0+bm9kX2NvdW50ID0gMzsKQEAgLTM0
MzMsNyArMzQzMyw3IEBACiAJCWJyZWFrOwogCiAJY2FzZSBub2RfbW9kaWZ5OgotCQlzdHJlYW0g
PSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfbW9kX25ld19zdHJlYW1dOworCQlzdHJlYW0gPSAo
VVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfbW9kX25ld19zdHJlYW1dOwogCQl0YWlsID0g
JigqY3NiKS0+Y3NiX3JwdFtzdHJlYW1dOwogCQl0YWlsLT5jc2JfZmxhZ3MgfD0gY3NiX21vZGlm
eTsKIAkJcGFzczFfbW9kaWZ5KHRkYmIsIGNzYiwgbm9kZSk7CkBAIC0zNDQxLDEzICszNDQxLDEz
IEBACiAJCS8qIGFzc2VydChub2RlLT5ub2RfYXJnIFtlX21vZF9uZXdfc3RyZWFtXSA8PSBNQVhf
VVNIT1JUKTsgKi8KIAkJaWYgKCAobm9kZS0+bm9kX2FyZ1tlX21vZF92YWxpZGF0ZV0gPQogCQkJ
bWFrZV92YWxpZGF0aW9uKHRkYmIsIGNzYiwKLQkJCQkJCQkoVVNIT1JUKSBub2RlLT4KKwkJCQkJ
CQkoVVNIT1JUKShJUFRSKSBub2RlLT4KIAkJCQkJCQlub2RfYXJnW2VfbW9kX25ld19zdHJlYW1d
KSkgKSBub2RlLT5ub2RfY291bnQgPQogCQkJCU1BWChub2RlLT5ub2RfY291bnQsIChVU0hPUlQp
IGVfbW9kX3ZhbGlkYXRlICsgMSk7CiAJCWJyZWFrOwogCiAJY2FzZSBub2RfZXJhc2U6Ci0JCXN0
cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9lcmFzZV9zdHJlYW1dOworCQlzdHJlYW0g
PSAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfZXJhc2Vfc3RyZWFtXTsKIAkJdGFpbCA9
ICYoKmNzYiktPmNzYl9ycHRbc3RyZWFtXTsKIAkJdGFpbC0+Y3NiX2ZsYWdzIHw9IGNzYl9lcmFz
ZTsKIAkJcGFzczFfZXJhc2UodGRiYiwgY3NiLCBub2RlKTsKQEAgLTM0NjMsMTIgKzM0NjMsMTIg
QEAKIAogCWNhc2Ugbm9kX3N0b3JlOgogCQlzdWIgPSBub2RlLT5ub2RfYXJnW2Vfc3RvX3JlbGF0
aW9uXTsKLQkJc3RyZWFtID0gKFVTSE9SVCkgc3ViLT5ub2RfYXJnW2VfcmVsX3N0cmVhbV07CisJ
CXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIHN1Yi0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOwogCQl0
YWlsID0gJigqY3NiKS0+Y3NiX3JwdFtzdHJlYW1dOwogCQl0YWlsLT5jc2JfZmxhZ3MgfD0gY3Ni
X3N0b3JlOwogCQlzdWIgPSBwYXNzMV9zdG9yZSh0ZGJiLCBjc2IsIG5vZGUpOwogCQlpZiAoc3Vi
KSB7Ci0JCQlzdHJlYW0gPSAoVVNIT1JUKSBzdWItPm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKKwkJ
CXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIHN1Yi0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOwogCQkJ
aWYgKCghbm9kZS0+bm9kX2FyZ1tlX3N0b19zdWJfc3RvcmVdKSAmJgogCQkJCShub2RlLT5ub2Rf
YXJnW2Vfc3RvX3ZhbGlkYXRlXSA9CiAJCQkJIG1ha2VfdmFsaWRhdGlvbih0ZGJiLCBjc2IsIHN0
cmVhbSkpKSBub2RlLT5ub2RfY291bnQgPQpAQCAtMzQ5NSw3ICszNDk1LDcgQEAKIAogCWNhc2Ug
bm9kX2FnZ3JlZ2F0ZToKIAkJYXNzZXJ0KChpbnQpbm9kZS0+bm9kX2FyZ1tlX2FnZ19zdHJlYW1d
IDw9IE1BWF9TVFJFQU1TKTsKLQkJKCpjc2IpLT5jc2JfcnB0WyhVU0hPUlQpIG5vZGUtPm5vZF9h
cmdbZV9hZ2dfc3RyZWFtXV0uY3NiX2ZsYWdzIHw9CisJCSgqY3NiKS0+Y3NiX3JwdFsoVVNIT1JU
KShJUFRSKSBub2RlLT5ub2RfYXJnW2VfYWdnX3N0cmVhbV1dLmNzYl9mbGFncyB8PQogCQkJY3Ni
X25vX2Ria2V5OwogCQlpZ25vcmVfZGJrZXkodGRiYiwgKmNzYiwgKFJTRSkgbm9kZS0+bm9kX2Fy
Z1tlX2FnZ19yc2VdLCB2aWV3KTsKIAkJbm9kZS0+bm9kX2FyZ1tlX2FnZ19yc2VdID0KQEAgLTM1
MjMsNyArMzUyMyw3IEBACiAJCQlOT0RfVCB0eXBlOwogCiAJCQl0eXBlID0gbm9kZS0+bm9kX3R5
cGU7Ci0JCQlzdHJlYW0gPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnWzBdOworCQkJc3RyZWFtID0g
KFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1swXTsKIAogCQkJaWYgKCEoKmNzYiktPmNzYl9y
cHRbc3RyZWFtXS5jc2JfbWFwKSAKIAkJCQlyZXR1cm4gbm9kZTsKQEAgLTM1NTgsNyArMzU1OCw3
IEBACiAJCWJyZWFrOwogCiAJY2FzZSBub2RfY2FyZGluYWxpdHk6Ci0JCXN0cmVhbSA9IChVU0hP
UlQpIG5vZGUtPm5vZF9hcmdbZV9jYXJkX3N0cmVhbV07CisJCXN0cmVhbSA9IChVU0hPUlQpKElQ
VFIpIG5vZGUtPm5vZF9hcmdbZV9jYXJkX3N0cmVhbV07CiAJCSgqY3NiKS0+Y3NiX3JwdFtzdHJl
YW1dLmNzYl9mbGFncyB8PSBjc2JfY29tcHV0ZTsKIAkJYnJlYWs7CiAKQEAgLTM2MjUsNyArMzYy
NSw3IEBACiAvKiBUbyBzdXBwb3J0IHZpZXdzIG9mIHZpZXdzLCBsb29wIHVudGlsIHdlIGhpdCBh
IHJlYWwgcmVsYXRpb24gKi8KIAogCWZvciAoOzspIHsKLQkJc3RyZWFtID0gbmV3X3N0cmVhbSA9
IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9lcmFzZV9zdHJlYW1dOworCQlzdHJlYW0gPSBuZXdf
c3RyZWFtID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2VyYXNlX3N0cmVhbV07CiAJ
CXRhaWwgPSAmKCpjc2IpLT5jc2JfcnB0W3N0cmVhbV07CiAJCXRhaWwtPmNzYl9mbGFncyB8PSBj
c2JfZXJhc2U7CiAJCXJlbGF0aW9uID0gKCpjc2IpLT5jc2JfcnB0W3N0cmVhbV0uY3NiX3JlbGF0
aW9uOwpAQCAtMzY5Myw3ICszNjkzLDcgQEAKIAogCQlwYXJlbnQgPSByZWxhdGlvbjsKIAkJcGFy
ZW50X3N0cmVhbSA9IHN0cmVhbTsKLQkJbmV3X3N0cmVhbSA9IChVU0hPUlQpIHNvdXJjZS0+bm9k
X2FyZ1tlX3JlbF9zdHJlYW1dOworCQluZXdfc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgc291cmNl
LT5ub2RfYXJnW2VfcmVsX3N0cmVhbV07CiAJCW5vZGUtPm5vZF9hcmdbZV9lcmFzZV9zdHJlYW1d
ID0gKEpSRF9OT0QpIChTTE9ORykgbWFwW25ld19zdHJlYW1dOwogCX0KIH0KQEAgLTM3NDAsNyAr
Mzc0MCw3IEBACiAJCQkJZmllbGQgPSBNRVRfZ2V0X2ZpZWxkKHJlbGF0aW9uLCBpZCk7CiAJCQkJ
aWYgKGZpZWxkLT5mbGRfc291cmNlKQogCQkJCQluZXdfaWQgPQotCQkJCQkJKFVTSE9SVCkgKEpS
RF9OT0QpIChmaWVsZC0+ZmxkX3NvdXJjZSktPm5vZF9hcmdbZV9mbGRfaWRdOworCQkJCQkJKFVT
SE9SVCkoSVBUUikgKEpSRF9OT0QpIChmaWVsZC0+ZmxkX3NvdXJjZSktPm5vZF9hcmdbZV9mbGRf
aWRdOwogCQkJCWVsc2UKIAkJCQkJbmV3X2lkID0gaWQ7CiAJCQl9CkBAIC0zODAyLDggKzM4MDIs
OCBAQAogLyogVG8gc3VwcG9ydCB2aWV3cyBvZiB2aWV3cywgbG9vcCB1bnRpbCB3ZSBoaXQgYSBy
ZWFsIHJlbGF0aW9uICovCiAKIAlmb3IgKDs7KSB7Ci0JCXN0cmVhbSA9IChVU0hPUlQpIG5vZGUt
Pm5vZF9hcmdbZV9tb2Rfb3JnX3N0cmVhbV07Ci0JCW5ld19zdHJlYW0gPSAoVVNIT1JUKSBub2Rl
LT5ub2RfYXJnW2VfbW9kX25ld19zdHJlYW1dOworCQlzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBu
b2RlLT5ub2RfYXJnW2VfbW9kX29yZ19zdHJlYW1dOworCQluZXdfc3RyZWFtID0gKFVTSE9SVCko
SVBUUikgbm9kZS0+bm9kX2FyZ1tlX21vZF9uZXdfc3RyZWFtXTsKIAkJdGFpbCA9ICYoKmNzYikt
PmNzYl9ycHRbbmV3X3N0cmVhbV07CiAJCXRhaWwtPmNzYl9mbGFncyB8PSBjc2JfbW9kaWZ5Owog
CQlyZWxhdGlvbiA9ICgqY3NiKS0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9yZWxhdGlvbjsKQEAgLTM4
NDIsNyArMzg0Miw3IEBACiAJCQlub2RlLT5ub2RfY291bnQgPQogCQkJCU1BWChub2RlLT5ub2Rf
Y291bnQsIChVU0hPUlQpIGVfbW9kX21hcF92aWV3ICsgMSk7CiAJCQltYXAgPSAoKmNzYiktPmNz
Yl9ycHRbc3RyZWFtXS5jc2JfbWFwOwotCQkJc3RyZWFtID0gKFVTSE9SVCkgc291cmNlLT5ub2Rf
YXJnW2VfcmVsX3N0cmVhbV07CisJCQlzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBzb3VyY2UtPm5v
ZF9hcmdbZV9yZWxfc3RyZWFtXTsKIAkJCXN0cmVhbSA9IG1hcFtzdHJlYW1dOwogCQkJdmlld19z
dHJlYW0gPSBuZXdfc3RyZWFtOwogCkBAIC0zODUwLDE4ICszODUwLDE4IEBACiAKIAkJCW1hcCA9
CiAJCQkJYWxsb2NfbWFwKHRkYmIsIGNzYiwKLQkJCQkJCSAgKFNTSE9SVCkgbm9kZS0+bm9kX2Fy
Z1tlX21vZF9uZXdfc3RyZWFtXSk7CisJCQkJCQkgIChTU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9h
cmdbZV9tb2RfbmV3X3N0cmVhbV0pOwogCQkJc291cmNlID0gY29weSh0ZGJiLCBjc2IsIHNvdXJj
ZSwgbWFwLCAwLCBOVUxMLCBGQUxTRSk7CiAJCQkvKiBUTU46IEhlcmUgd2Ugc2hvdWxkIHJlYWxs
eSBoYXZlIHRoZSBmb2xsb3dpbmcgYXNzZXJ0ICovCiAJCQkvKiBhc3NlcnQoc291cmNlLT5ub2Rf
YXJnIFtlX3JlbF9zdHJlYW1dIDw9IE1BWF9VQ0hBUik7ICovCi0JCQltYXBbbmV3X3N0cmVhbV0g
PSAoVUNIQVIpIHNvdXJjZS0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOworCQkJbWFwW25ld19zdHJl
YW1dID0gKFVDSEFSKShJUFRSKSBzb3VyY2UtPm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKIAkJCXZp
ZXdfbm9kZSA9IGNvcHkodGRiYiwgY3NiLCBub2RlLCBtYXAsIDAsIE5VTEwsIFRSVUUpOwogCQkJ
dmlld19ub2RlLT5ub2RfYXJnW2VfbW9kX29yZ19zdHJlYW1dID0gKEpSRF9OT0QpIChTTE9ORykg
c3RyZWFtOwogCQkJdmlld19ub2RlLT5ub2RfYXJnW2VfbW9kX25ld19zdHJlYW1dID0KIAkJCQlz
b3VyY2UtPm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKIAkJCXZpZXdfbm9kZS0+bm9kX2FyZ1tlX21v
ZF9tYXBfdmlld10gPSBOVUxMOwogCQkJbm9kZS0+bm9kX2FyZ1tlX21vZF9zdWJfbW9kXSA9IHZp
ZXdfbm9kZTsKLQkJCW5ld19zdHJlYW0gPSAoVVNIT1JUKSBzb3VyY2UtPm5vZF9hcmdbZV9yZWxf
c3RyZWFtXTsKKwkJCW5ld19zdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBzb3VyY2UtPm5vZF9hcmdb
ZV9yZWxfc3RyZWFtXTsKIAkJCXZpZXdfbm9kZS0+bm9kX2FyZ1tlX21vZF9zdGF0ZW1lbnRdID0K
IAkJCQlwYXNzMV9leHBhbmRfdmlldyh0ZGJiLCAqY3NiLCB2aWV3X3N0cmVhbSwgbmV3X3N0cmVh
bSwgVFJVRSk7CiAJCQlub2RlLT5ub2RfY291bnQgPQpAQCAtMzg3NCwxNCArMzg3NCwxNCBAQAog
CQkJLyogVmlldyBwYXNzZXMgbXVzdGVyIC0tIGRvIHNvbWUgdHJhbnNsYXRpb24uICBTdGFydCB3
aXRoIHNvdXJjZSBzdHJlYW0gKi8KIAogCQkJbWFwID0gKCpjc2IpLT5jc2JfcnB0W3N0cmVhbV0u
Y3NiX21hcDsKLQkJCXN0cmVhbSA9IChVU0hPUlQpIHNvdXJjZS0+bm9kX2FyZ1tlX3JlbF9zdHJl
YW1dOworCQkJc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgc291cmNlLT5ub2RfYXJnW2VfcmVsX3N0
cmVhbV07CiAJCQlub2RlLT5ub2RfYXJnW2VfbW9kX29yZ19zdHJlYW1dID0gKEpSRF9OT0QpIChT
TE9ORykgbWFwW3N0cmVhbV07CiAKIAkJCS8qIE5leHQsIGRvIHVwZGF0ZSBzdHJlYW0gKi8KIAog
CQkJbWFwID0KIAkJCQlhbGxvY19tYXAodGRiYiwgY3NiLAotCQkJCQkJICAoU1NIT1JUKSBub2Rl
LT5ub2RfYXJnW2VfbW9kX25ld19zdHJlYW1dKTsKKwkJCQkJCSAgKFNTSE9SVCkoSVBUUikgbm9k
ZS0+bm9kX2FyZ1tlX21vZF9uZXdfc3RyZWFtXSk7CiAJCQlzb3VyY2UgPSBjb3B5KHRkYmIsIGNz
Yiwgc291cmNlLCBtYXAsIDAsIE5VTEwsIEZBTFNFKTsKIAkJCW5vZGUtPm5vZF9hcmdbZV9tb2Rf
bmV3X3N0cmVhbV0gPSBzb3VyY2UtPm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKIAkJfQpAQCAtNDEy
OCw3ICs0MTI4LDcgQEAKIAogCQlwYXNzMSh0ZGJiLCBjc2IsIHNvdXJjZSwgcGFyZW50X3ZpZXcs
IHZpZXdfc3RyZWFtLCBGQUxTRSk7CiAJCXByb2NlZHVyZSA9IE1FVF9sb29rdXBfcHJvY2VkdXJl
X2lkKHRkYmIsIAotCQkgIChTU0hPUlQpc291cmNlLT5ub2RfYXJnW2VfcHJjX3Byb2NlZHVyZV0s
IEZBTFNFLCBGQUxTRSwgMCk7CisJCSAgKFNTSE9SVCkoSVBUUilzb3VyY2UtPm5vZF9hcmdbZV9w
cmNfcHJvY2VkdXJlXSwgRkFMU0UsIEZBTFNFLCAwKTsKIAkJcG9zdF9wcm9jZWR1cmVfYWNjZXNz
KHRkYmIsICpjc2IsIHByb2NlZHVyZSk7CiAJCUNNUF9wb3N0X3Jlc291cmNlKCYoKmNzYiktPmNz
Yl9yZXNvdXJjZXMsIChCTEspIHByb2NlZHVyZSwKIAkJCQkJCSAgUmVzb3VyY2U6OnJzY19wcm9j
ZWR1cmUsIHByb2NlZHVyZS0+cHJjX2lkKTsKQEAgLTQxNjAsNyArNDE2MCw3IEBACiAJCQkJCSAg
dmlldy0+cmVsX2lkKTsKIAlzb3VyY2UtPm5vZF9hcmdbZV9yZWxfdmlld10gPSAoSlJEX05PRCkg
cGFyZW50X3ZpZXc7CiAKLQlzdHJlYW0gPSAoVVNIT1JUKSBzb3VyY2UtPm5vZF9hcmdbZV9yZWxf
c3RyZWFtXTsKKwlzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBzb3VyY2UtPm5vZF9hcmdbZV9yZWxf
c3RyZWFtXTsKIAllbGVtZW50ID0gQ01QX2NzYl9lbGVtZW50KGNzYiwgc3RyZWFtKTsKIAllbGVt
ZW50LT5jc2JfdmlldyA9IHBhcmVudF92aWV3OwogLyogVE1OOiBIZXJlIHdlIHNob3VsZCByZWFs
bHkgaGF2ZSB0aGUgZm9sbG93aW5nIGFzc2VydCAqLwpAQCAtNDE3NSw3ICs0MTc1LDcgQEAKIAkJ
Zm9yICh2Y3hfcHRyID0gJnBhcmVudF92aWV3LT5yZWxfdmlld19jb250ZXh0czsgKnZjeF9wdHI7
CiAJCQkgdmN4X3B0ciA9ICYoKnZjeF9wdHIpLT52Y3hfbmV4dCkKIAkJCWlmICgoKnZjeF9wdHIp
LT52Y3hfY29udGV4dCA9PQotCQkJCShVU0hPUlQpIHNvdXJjZS0+bm9kX2FyZ1tlX3JlbF9jb250
ZXh0XSkgeworCQkJCShVU0hPUlQpKElQVFIpIHNvdXJjZS0+bm9kX2FyZ1tlX3JlbF9jb250ZXh0
XSkgewogCQkJCWVsZW1lbnQtPmNzYl9hbGlhcyA9ICgqdmN4X3B0ciktPnZjeF9jb250ZXh0X25h
bWU7CiAJCQkJYnJlYWs7CiAJCQl9CkBAIC00MzE5LDcgKzQzMTksNyBAQAogCiAJZm9yICg7Oykg
ewogCQlvcmlnaW5hbCA9IG5vZGUtPm5vZF9hcmdbZV9zdG9fcmVsYXRpb25dOwotCQlzdHJlYW0g
PSAoVVNIT1JUKSBvcmlnaW5hbC0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOworCQlzdHJlYW0gPSAo
VVNIT1JUKShJUFRSKSBvcmlnaW5hbC0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOwogCQl0YWlsID0g
JigqY3NiKS0+Y3NiX3JwdFtzdHJlYW1dOwogCQl0YWlsLT5jc2JfZmxhZ3MgfD0gY3NiX3N0b3Jl
OwogCQlyZWxhdGlvbiA9ICgqY3NiKS0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9yZWxhdGlvbjsKQEAg
LTQzNzMsNyArNDM3Myw3IEBACiAJCQlub2RlLT5ub2RfYXJnW2Vfc3RvX3JlbGF0aW9uXSA9CiAJ
CQkJY29weSh0ZGJiLCBjc2IsIHNvdXJjZSwgbWFwLCAwLCBOVUxMLCBGQUxTRSk7CiAJCQluZXdf
c3RyZWFtID0KLQkJCQkoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2Vfc3RvX3JlbGF0aW9uXS0+bm9k
X2FyZ1tlX3JlbF9zdHJlYW1dOworCQkJCShVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9z
dG9fcmVsYXRpb25dLT5ub2RfYXJnW2VfcmVsX3N0cmVhbV07CiAJCQlub2RlLT5ub2RfYXJnW2Vf
c3RvX3N0YXRlbWVudF0gPQogCQkJCXBhc3MxX2V4cGFuZF92aWV3KHRkYmIsICpjc2IsIHN0cmVh
bSwgbmV3X3N0cmVhbSwgVFJVRSk7CiAJCQlub2RlLT5ub2RfYXJnW2Vfc3RvX3N0YXRlbWVudF0g
PQpAQCAtNDcyMSw5ICs0NzIxLDkgQEAKIAkJLyogQUI6IE1hcmsgdGhlIHN0cmVhbXMgaW52b2x2
ZWQgd2l0aCBhbiBVUERBVEUgc3RhdGVtZW50CiAJCSAgIGFjdGl2ZS4gU28gdGhhdCB0aGUgb3B0
aW1pemVyIGNhbiB1c2UgaW5kaWNlcyBmb3IgCiAJCSAgIGV2ZW50dWFsbHkgdXNlZCBzdWItc2Vs
ZWN0cy4gKi8KLQkJc3RyZWFtID0gKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tlX21vZF9vcmdfc3Ry
ZWFtXTsKKwkJc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX21vZF9vcmdf
c3RyZWFtXTsKIAkJY3NiLT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdzIHw9IGNzYl9hY3RpdmU7
Ci0JCXN0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9tb2RfbmV3X3N0cmVhbV07CisJ
CXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9tb2RfbmV3X3N0cmVhbV07
CiAJCWNzYi0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9mbGFncyB8PSBjc2JfYWN0aXZlOwogCX0KIApA
QCAtNDczNSw5ICs0NzM1LDkgQEAKIAogCWlmIChub2RlLT5ub2RfdHlwZSA9PSBub2RfbW9kaWZ5
KSB7CiAJCS8qIEFCOiBSZW1vdmUgdGhlIHByZXZpb3VzIGZsYWdzICovCi0JCXN0cmVhbSA9IChV
U0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9tb2Rfb3JnX3N0cmVhbV07CisJCXN0cmVhbSA9IChVU0hP
UlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9tb2Rfb3JnX3N0cmVhbV07CiAJCWNzYi0+Y3NiX3Jw
dFtzdHJlYW1dLmNzYl9mbGFncyAmPSB+Y3NiX2FjdGl2ZTsKLQkJc3RyZWFtID0gKFVTSE9SVCkg
bm9kZS0+bm9kX2FyZ1tlX21vZF9uZXdfc3RyZWFtXTsKKwkJc3RyZWFtID0gKFVTSE9SVCkoSVBU
Uikgbm9kZS0+bm9kX2FyZ1tlX21vZF9uZXdfc3RyZWFtXTsKIAkJY3NiLT5jc2JfcnB0W3N0cmVh
bV0uY3NiX2ZsYWdzICY9IH5jc2JfYWN0aXZlOwogCX0KIApAQCAtNDgzNiw3ICs0ODM2LDcgQEAK
IAkJCUZNVCBmb3JtYXQ7CiAJCQlmbXQ6OmZtdF9kZXNjX2l0ZXJhdG9yIGRlc2M7CiAKLQkJCXN0
cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9tb2Rfb3JnX3N0cmVhbV07CisJCQlzdHJl
YW0gPSAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfbW9kX29yZ19zdHJlYW1dOwogCQkJ
Y3NiLT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdzIHw9IGNzYl91cGRhdGU7CiAJCQlmb3JtYXQg
PSBDTVBfZm9ybWF0KHRkYmIsIGNzYiwgc3RyZWFtKTsKIAkJCWRlc2MgPSBmb3JtYXQtPmZtdF9k
ZXNjLmJlZ2luKCk7CkBAIC00ODYxLDEzICs0ODYxLDEzIEBACiAJCWJyZWFrOwogCiAJY2FzZSBu
b2RfZXJhc2U6Ci0JCXN0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9lcmFzZV9zdHJl
YW1dOworCQlzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfZXJhc2Vfc3Ry
ZWFtXTsKIAkJY3NiLT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdzIHw9IGNzYl91cGRhdGU7CiAJ
CWJyZWFrOwogCiAJY2FzZSBub2RfZmllbGQ6Ci0JCXN0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5v
ZF9hcmdbZV9mbGRfc3RyZWFtXTsKLQkJaWQgPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfZmxk
X2lkXTsKKwkJc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9zdHJl
YW1dOworCQlpZCA9IChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9mbGRfaWRdOwogCQlT
Qk1fc2V0KHRkYmIsICZjc2ItPmNzYl9ycHRbc3RyZWFtXS5jc2JfZmllbGRzLCBpZCk7CiAJCWlm
IChub2RlLT5ub2RfZmxhZ3MgJiBub2RfdmFsdWUpIHsKIAkJCWNzYi0+Y3NiX2ltcHVyZSArPSBz
aXplb2Yoc3RydWN0IHZsdXgpOwpAQCAtNDk0MSw3ICs0OTQxLDcgQEAKIAkJcGFzczJfcnNlKHRk
YmIsIGNzYiwgKFJTRSkgbm9kZS0+bm9kX2FyZ1tlX2FnZ19yc2VdKTsKIAkJcGFzczIodGRiYiwg
Y3NiLCBub2RlLT5ub2RfYXJnW2VfYWdnX21hcF0sIG5vZGUpOwogCQlwYXNzMih0ZGJiLCBjc2Is
IG5vZGUtPm5vZF9hcmdbZV9hZ2dfZ3JvdXBdLCBub2RlKTsKLQkJc3RyZWFtID0gKFVTSE9SVCkg
bm9kZS0+bm9kX2FyZ1tlX2FnZ19zdHJlYW1dOworCQlzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBu
b2RlLT5ub2RfYXJnW2VfYWdnX3N0cmVhbV07CiAJCWFzc2VydChzdHJlYW0gPD0gTUFYX1NUUkVB
TVMpOwogCQlwcm9jZXNzX21hcCh0ZGJiLCBjc2IsIG5vZGUtPm5vZF9hcmdbZV9hZ2dfbWFwXSwK
IAkJCQkJJmNzYi0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9mb3JtYXQpOwpAQCAtNTA1MCw3ICs1MDUw
LDcgQEAKIAogCQlub2RlID0gKnB0cjsKIAkJaWYgKG5vZGUtPm5vZF90eXBlID09IG5vZF9yZWxh
dGlvbikgewotCQkJVVNIT1JUIHN0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9yZWxf
c3RyZWFtXTsKKwkJCVVTSE9SVCBzdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJn
W2VfcmVsX3N0cmVhbV07CiAJCQljc2ItPmNzYl9ycHRbc3RyZWFtXS5jc2JfZmxhZ3MgfD0gY3Ni
X2FjdGl2ZTsKIAkJCXBhc3MyKHRkYmIsIGNzYiwgbm9kZSwgKEpSRF9OT0QpIHJzZSk7CiAJCX0K
QEAgLTUwNTgsMTIgKzUwNTgsMTIgQEAKIAkJCXBhc3MyX3JzZSh0ZGJiLCBjc2IsIChSU0UpIG5v
ZGUpOwogCQl9CiAJCWVsc2UgaWYgKG5vZGUtPm5vZF90eXBlID09IG5vZF9wcm9jZWR1cmUpIHsK
LQkJCVVTSE9SVCBzdHJlYW0gPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfcHJjX3N0cmVhbV07
CisJCQlVU0hPUlQgc3RyZWFtID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX3ByY19z
dHJlYW1dOwogCQkJY3NiLT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdzIHw9IGNzYl9hY3RpdmU7
CiAJCQlwYXNzMih0ZGJiLCBjc2IsIG5vZGUsIChKUkRfTk9EKSByc2UpOwogCQl9CiAJCWVsc2Ug
aWYgKG5vZGUtPm5vZF90eXBlID09IG5vZF9hZ2dyZWdhdGUpIHsKLQkJCVVTSE9SVCBzdHJlYW0g
PSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfYWdnX3N0cmVhbV07CisJCQlVU0hPUlQgc3RyZWFt
ID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2FnZ19zdHJlYW1dOwogCQkJYXNzZXJ0
KHN0cmVhbSA8PSBNQVhfU1RSRUFNUyk7CiAJCQljc2ItPmNzYl9ycHRbc3RyZWFtXS5jc2JfZmxh
Z3MgfD0gY3NiX2FjdGl2ZTsKIAkJCXBhc3MyKHRkYmIsIGNzYiwgbm9kZSwgKEpSRF9OT0QpIHJz
ZSk7CkBAIC01MTE4LDcgKzUxMTgsNyBAQAogLyogTWFrZSB1cCBhIGZvcm1hdCBibG9jayBzdWZm
aWNpZW50bHkgbGFyZ2UgdG8gaG9sZCBpbnN0YW50aWF0ZWQgcmVjb3JkICovCiAKIAljbGF1c2Vz
ID0gbm9kZS0+bm9kX2FyZ1tlX3VuaV9jbGF1c2VzXTsKLQlpZCA9IChVU0hPUlQpIG5vZGUtPm5v
ZF9hcmdbZV91bmlfc3RyZWFtXTsKKwlpZCA9IChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdb
ZV91bmlfc3RyZWFtXTsKIAlmb3JtYXQgPSAmY3NiLT5jc2JfcnB0W2lkXS5jc2JfZm9ybWF0Owog
CiAvKiBQcm9jZXNzIGFsdGVybmF0aW5nIHJzZSBhbmQgbWFwIGJsb2NrcyAqLwpAQCAtNTE2MCw3
ICs1MTYwLDcgQEAKIAogCWZvciAocHRyID0gcnNlLT5yc2VfcmVsYXRpb24sIGVuZCA9IHB0ciAr
IHJzZS0+cnNlX2NvdW50OyBwdHIgPCBlbmQ7CiAJCSBwdHIrKykgaWYgKCgqcHRyKS0+bm9kX3R5
cGUgPT0gbm9kX3JlbGF0aW9uKSB7Ci0JCQlzdHJlYW0gPSAoVVNIT1JUKSAoKnB0ciktPm5vZF9h
cmdbZV9yZWxfc3RyZWFtXTsKKwkJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIpICgqcHRyKS0+bm9k
X2FyZ1tlX3JlbF9zdHJlYW1dOwogCQkJaWYgKCEoY3NiLT5jc2JfcnB0W3N0cmVhbV0uY3NiX3Bs
YW4pKQogCQkJCUVSUl9wb3N0KGdkc19ub19zdHJlYW1fcGxhbiwgZ2RzX2FyZ19zdHJpbmcsCiAJ
CQkJCQkgY3NiLT5jc2JfcnB0W3N0cmVhbV0uY3NiX3JlbGF0aW9uLT5yZWxfbmFtZSwgMCk7CkBA
IC01MjEzLDcgKzUyMTMsNyBAQAogCiAvKiBmaW5kIHRoZSB0YWlsIGZvciB0aGUgcmVsYXRpb24g
c3BlY2lmaWVkIGluIHRoZSByc2UgKi8KIAotCXN0cmVhbSA9IChVU0hPUlQpIHBsYW5fcmVsYXRp
b25fbm9kZS0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOworCXN0cmVhbSA9IChVU0hPUlQpKElQVFIp
IHBsYW5fcmVsYXRpb25fbm9kZS0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOwogCXRhaWwgPSAmY3Ni
LT5jc2JfcnB0W3N0cmVhbV07CiAKIC8qIGlmIHRoZSBwbGFuIHJlZmVyZW5jZXMgYSB2aWV3LCBm
aW5kIHRoZSByZWFsIGJhc2UgcmVsYXRpb24gCkBAIC01NDQ5LDE1ICs1NDQ5LDE1IEBACiAJCSBw
dHIgPCBlbmQ7IHB0cisrKSB7CiAJCW5vZGUgPSAqcHRyOwogCQlpZiAobm9kZS0+bm9kX3R5cGUg
PT0gbm9kX3JlbGF0aW9uKSB7Ci0JCQlVU0hPUlQgc3RyZWFtID0gKFVTSE9SVCkgbm9kZS0+bm9k
X2FyZ1tlX3JlbF9zdHJlYW1dOworCQkJVVNIT1JUIHN0cmVhbSA9IChVU0hPUlQpKElQVFIpIG5v
ZGUtPm5vZF9hcmdbZV9yZWxfc3RyZWFtXTsKIAkJCWNzYi0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9m
bGFncyAmPSB+Y3NiX2FjdGl2ZTsKIAkJfQogCQllbHNlIGlmIChub2RlLT5ub2RfdHlwZSA9PSBu
b2RfcHJvY2VkdXJlKSB7Ci0JCQlVU0hPUlQgc3RyZWFtID0gKFVTSE9SVCkgbm9kZS0+bm9kX2Fy
Z1tlX3ByY19zdHJlYW1dOworCQkJVVNIT1JUIHN0cmVhbSA9IChVU0hPUlQpKElQVFIpIG5vZGUt
Pm5vZF9hcmdbZV9wcmNfc3RyZWFtXTsKIAkJCWNzYi0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9mbGFn
cyAmPSB+Y3NiX2FjdGl2ZTsKIAkJfQogCQllbHNlIGlmIChub2RlLT5ub2RfdHlwZSA9PSBub2Rf
YWdncmVnYXRlKSB7Ci0JCQlVU0hPUlQgc3RyZWFtID0gKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tl
X2FnZ19zdHJlYW1dOworCQkJVVNIT1JUIHN0cmVhbSA9IChVU0hPUlQpKElQVFIpIG5vZGUtPm5v
ZF9hcmdbZV9hZ2dfc3RyZWFtXTsKIAkJCWFzc2VydChzdHJlYW0gPD0gTUFYX1NUUkVBTVMpOwog
CQkJY3NiLT5jc2JfcnB0W3N0cmVhbV0uY3NiX2ZsYWdzICY9IH5jc2JfYWN0aXZlOwogCQl9CkBA
IC01NTUzLDcgKzU1NTMsNyBAQAogCWZvciAoZW5kID0gcHRyICsgbWFwLT5ub2RfY291bnQ7IHB0
ciA8IGVuZDsgcHRyKyspIHsKIAkJYXNzaWdubWVudCA9ICpwdHI7CiAJCWZpZWxkID0gYXNzaWdu
bWVudC0+bm9kX2FyZ1tlX2FzZ25fdG9dOwotCQlpZCA9IChVU0hPUlQpIGZpZWxkLT5ub2RfYXJn
W2VfZmxkX2lkXTsKKwkJaWQgPSAoVVNIT1JUKShJUFRSKSBmaWVsZC0+bm9kX2FyZ1tlX2ZsZF9p
ZF07CiAJCWlmIChpZCA+PSBmb3JtYXQtPmZtdF9jb3VudCkgewogCQkJZm9ybWF0LT5mbXRfZGVz
Yy5yZXNpemUoaWQgKyAxKTsKIAkJfQpAQCAtNTY4OSwxMyArNTY4OSwxMyBAQAogCQkvKiBmb3Ig
YWdncmVnYXRlcywgY2hlY2sgY3VycmVudCByc2UsIGlmIG5vdCBmb3VuZCB0aGVuIGNoZWNrIAog
CQkgICB0aGUgc3ViLXJzZSAqLwogCQlpZiAoc3ViLT5ub2RfdHlwZSA9PSBub2RfYWdncmVnYXRl
KSB7Ci0JCQlpZiAoKHN0cmVhbSA9PSAoVVNIT1JUKSBzdWItPm5vZF9hcmdbZV9yZWxfc3RyZWFt
XSkgfHwKKwkJCWlmICgoc3RyZWFtID09IChVU0hPUlQpKElQVFIpIHN1Yi0+bm9kX2FyZ1tlX3Jl
bF9zdHJlYW1dKSB8fAogCQkJCShzdHJlYW1faW5fcnNlKHN0cmVhbSwgKFJTRSkgc3ViLT5ub2Rf
YXJnW2VfYWdnX3JzZV0pKSkKIAkJCQlyZXR1cm4gVFJVRTsJLyogZG8gbm90IG1hcmsgYXMgdmFy
aWFudCAqLwogCQl9CiAKIAkJaWYgKChzdWItPm5vZF90eXBlID09IG5vZF9yZWxhdGlvbikgJiYK
LQkJCShzdHJlYW0gPT0gKFVTSE9SVCkgc3ViLT5ub2RfYXJnW2VfcmVsX3N0cmVhbV0pKQorCQkJ
KHN0cmVhbSA9PSAoVVNIT1JUKShJUFRSKSBzdWItPm5vZF9hcmdbZV9yZWxfc3RyZWFtXSkpCiAJ
CQlyZXR1cm4gVFJVRTsJCS8qIGRvIG5vdCBtYXJrIGFzIHZhcmlhbnQgKi8KIAl9CiAKZGlmZiAt
dXIgZmlyZWJpcmQtMS41LjMuNDg3MC1vcmlnL3NyYy9qcmQvY29tbW9uLmggZmlyZWJpcmQtMS41
LjMuNDg3MC9zcmMvanJkL2NvbW1vbi5oCi0tLSBmaXJlYmlyZC0xLjUuMy40ODcwLW9yaWcvc3Jj
L2pyZC9jb21tb24uaAkyMDA2LTAzLTE3IDAxOjM5OjA0LjAwMDAwMDAwMCAtMDUwMAorKysgZmly
ZWJpcmQtMS41LjMuNDg3MC9zcmMvanJkL2NvbW1vbi5oCTIwMDYtMDMtMTcgMDE6MzI6MjkuMDAw
MDAwMDAwIC0wNTAwCkBAIC04NTYsOCArODU2LDggQEAKIAogI2RlZmluZSBKUkRfQlVHQ0hLIDE1
CQkJLyogZmFjaWxpdHkgY29kZSBmb3IgYnVnY2hlY2sgbWVzc2FnZXMgKi8KICNpZm5kZWYgT0ZG
U0VUCi0jZGVmaW5lIE9GRlNFVChzdHJ1Y3QsZmxkKSAgICAgICgoaW50KSAmKChzdHJ1Y3QpIDAp
LT5mbGQpCi0jZGVmaW5lIE9GRlNFVEEoc3RydWN0LGZsZCkgICAgICgoaW50KSAoKHN0cnVjdCkg
MCktPmZsZCkKKyNkZWZpbmUgT0ZGU0VUKHN0cnVjdCxmbGQpICAgICAgKChpbnQpKElQVFIpICYo
KHN0cnVjdCkgMCktPmZsZCkKKyNkZWZpbmUgT0ZGU0VUQShzdHJ1Y3QsZmxkKSAgICAgKChpbnQp
KElQVFIpICgoc3RydWN0KSAwKS0+ZmxkKQogI2VuZGlmCiAKICNpZm5kZWYgT0RTX0FMSUdOTUVO
VApkaWZmIC11ciBmaXJlYmlyZC0xLjUuMy40ODcwLW9yaWcvc3JjL2pyZC9kcG0uZXBwIGZpcmVi
aXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9kcG0uZXBwCi0tLSBmaXJlYmlyZC0xLjUuMy40ODcwLW9y
aWcvc3JjL2pyZC9kcG0uZXBwCTIwMDYtMDMtMTcgMDE6Mzk6MDQuMDAwMDAwMDAwIC0wNTAwCisr
KyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9qcmQvZHBtLmVwcAkyMDA2LTAzLTE3IDAxOjMyOjI5
LjAwMDAwMDAwMCAtMDUwMApAQCAtMjExOSw3ICsyMTE5LDcgQEAKIAogCURFQlVHIGlmIChzdGFj
aykKIAkJd2hpbGUgKCpzdGFjaykKLQkJCUNDSF9wcmVjZWRlbmNlKHRkYmIsICZycGItPnJwYl93
aW5kb3csIChTTE9ORykgTExTX1BPUChzdGFjaykpOworCQkJQ0NIX3ByZWNlZGVuY2UodGRiYiwg
JnJwYi0+cnBiX3dpbmRvdywgKFNMT05HKShJUFRSKSBMTFNfUE9QKHN0YWNrKSk7CiAKIAlDQ0hf
cHJlY2VkZW5jZSh0ZGJiLCAmcnBiLT5ycGJfd2luZG93LCAtcnBiLT5ycGJfdHJhbnNhY3Rpb24p
OwogCUNDSF9NQVJLKHRkYmIsICZycGItPnJwYl93aW5kb3cpOwpAQCAtMjczNiw3ICsyNzM2LDcg
QEAKICAgIElmIHRoZSBwYWdlIG5lZWQgdG8gYmUgY29tcHJlc3NlZCwgY29tcHJlc3MgaXQuICov
CiAKIAl3aGlsZSAoKnN0YWNrKQotCQlDQ0hfcHJlY2VkZW5jZSh0ZGJiLCAmcnBiLT5ycGJfd2lu
ZG93LCAoU0xPTkcpIExMU19QT1Aoc3RhY2spKTsKKwkJQ0NIX3ByZWNlZGVuY2UodGRiYiwgJnJw
Yi0+cnBiX3dpbmRvdywgKFNMT05HKShJUFRSKSBMTFNfUE9QKHN0YWNrKSk7CiAJQ0NIX01BUkso
dGRiYiwgJnJwYi0+cnBiX3dpbmRvdyk7CiAJaSA9IHBhZ2UtPmRwZ19jb3VudCArICgoc2xvdCkg
PyAwIDogMSk7CiAKZGlmZiAtdXIgZmlyZWJpcmQtMS41LjMuNDg3MC1vcmlnL3NyYy9qcmQvZXZs
LmNwcCBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9qcmQvZXZsLmNwcAotLS0gZmlyZWJpcmQtMS41
LjMuNDg3MC1vcmlnL3NyYy9qcmQvZXZsLmNwcAkyMDA2LTAzLTE3IDAxOjM5OjA0LjAwMDAwMDAw
MCAtMDUwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvanJkL2V2bC5jcHAJMjAwNi0wMy0x
NyAwMTozMjoyOS4wMDAwMDAwMDAgLTA1MDAKQEAgLTI0OCw3ICsyNDgsNyBAQAogCQlhcmdfbnVt
YmVyID0gKGludCkoSVBUUilub2RlLT5ub2RfYXJnW2VfYXJnX251bWJlcl07CiAJCWRlc2MgPSAm
Zm9ybWF0LT5mbXRfZGVzY1thcmdfbnVtYmVyXTsKIAkJaW1wdXJlLT52bHVfZGVzYy5kc2NfYWRk
cmVzcyA9Ci0JCQkoVUNIQVIgKikgcmVxdWVzdCArIG1lc3NhZ2UtPm5vZF9pbXB1cmUgKyAoaW50
KSBkZXNjLT5kc2NfYWRkcmVzczsKKwkJCShVQ0hBUiAqKSByZXF1ZXN0ICsgbWVzc2FnZS0+bm9k
X2ltcHVyZSArIChpbnQpKElQVFIpIGRlc2MtPmRzY19hZGRyZXNzOwogCQlpbXB1cmUtPnZsdV9k
ZXNjLmRzY19kdHlwZSA9IGRlc2MtPmRzY19kdHlwZTsKIAkJaW1wdXJlLT52bHVfZGVzYy5kc2Nf
bGVuZ3RoID0gZGVzYy0+ZHNjX2xlbmd0aDsKIAkJaW1wdXJlLT52bHVfZGVzYy5kc2Nfc2NhbGUg
PSBkZXNjLT5kc2Nfc2NhbGU7CkBAIC0yODgsOCArMjg4LDggQEAKIAkJLy8gbWF5IGhhcHBlbi4g
SSBjaGVja2VkIHRyaWdnZXJzIGFuZCBpbnNlcnQvdXBkYXRlIHN0YXRlbWVudHMuCiAJCS8vIEFs
bCBzZWVtIHRvIHdvcmsgZmluZS4KIAkJcmVjb3JkID0KLQkJCXJlcXVlc3QtPnJlcV9ycGJbKGlu
dCkgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dXS5ycGJfcmVjb3JkOwotCQlFVkxfZmllbGQo
MCwgcmVjb3JkLCAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfZmxkX2lkXSwKKwkJCXJlcXVlc3Qt
PnJlcV9ycGJbKGludCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dXS5ycGJfcmVj
b3JkOworCQlFVkxfZmllbGQoMCwgcmVjb3JkLCAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJn
W2VfZmxkX2lkXSwKIAkJCQkgICZpbXB1cmUtPnZsdV9kZXNjKTsKIAkJaWYgKCFpbXB1cmUtPnZs
dV9kZXNjLmRzY19hZGRyZXNzKQogCQkJRVJSX3Bvc3QoZ2RzX3JlYWRfb25seV9maWVsZCwgMCk7
CkBAIC0zNTksNyArMzU5LDcgQEAKIAkJCWltcHVyZSA9IChJTlYpICgoU0NIQVIgKikgdGRiYi0+
dGRiYl9yZXF1ZXN0ICsgbm9kZS0+bm9kX2ltcHVyZSk7CiAJCQlTQk1fcmVzZXQoJmltcHVyZS0+
aW52X2JpdG1hcCk7CiAJCQlkZXNjID0gRVZMX2V4cHIodGRiYiwgbm9kZS0+bm9kX2FyZ1swXSk7
Ci0JCQlpZCA9IDEgKyAyICogKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1sxXTsKKwkJCWlkID0gMSAr
IDIgKiAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnWzFdOwogCQkJbnVtYmVycyA9IGRlc2Mt
PmRzY19hZGRyZXNzOwogCQkJbnVtYmVycyArPSBpZCAqIHNpemVvZihTTE9ORyk7CiAJCQlNT1ZF
X0ZBU1QobnVtYmVycywgJnJlbF9kYmtleSwgc2l6ZW9mKFNMT05HKSk7CkBAIC04MjgsMTAgKzgy
OCwxMCBAQAogCQkJfQogCQkJbWVzc2FnZSA9IG5vZGUtPm5vZF9hcmdbZV9hcmdfbWVzc2FnZV07
CiAJCQlmb3JtYXQgPSAoRk1UKSBtZXNzYWdlLT5ub2RfYXJnW2VfbXNnX2Zvcm1hdF07Ci0JCQlk
ZXNjID0gJmZvcm1hdC0+Zm10X2Rlc2NbKGludCkgbm9kZS0+bm9kX2FyZ1tlX2FyZ19udW1iZXJd
XTsKKwkJCWRlc2MgPSAmZm9ybWF0LT5mbXRfZGVzY1soaW50KShJUFRSKSBub2RlLT5ub2RfYXJn
W2VfYXJnX251bWJlcl1dOwogCiAJCQlpbXB1cmUtPnZsdV9kZXNjLmRzY19hZGRyZXNzID0gKFVD
SEFSICopIHJlcXVlc3QgKwotCQkJCW1lc3NhZ2UtPm5vZF9pbXB1cmUgKyAoaW50KSBkZXNjLT5k
c2NfYWRkcmVzczsKKwkJCQltZXNzYWdlLT5ub2RfaW1wdXJlICsgKGludCkoSVBUUikgZGVzYy0+
ZHNjX2FkZHJlc3M7CiAJCQlpbXB1cmUtPnZsdV9kZXNjLmRzY19kdHlwZSA9IGRlc2MtPmRzY19k
dHlwZTsKIAkJCWltcHVyZS0+dmx1X2Rlc2MuZHNjX2xlbmd0aCA9IGRlc2MtPmRzY19sZW5ndGg7
CiAJCQlpbXB1cmUtPnZsdV9kZXNjLmRzY19zY2FsZSA9IGRlc2MtPmRzY19zY2FsZTsKQEAgLTg1
MSwxNCArODUxLDE0IEBACiAJY2FzZSBub2RfZmllbGQ6CiAJCXsKIAkJCVJFQyByZWNvcmQgPQot
CQkJCXJlcXVlc3QtPnJlcV9ycGJbKGludClub2RlLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV1dLnJw
Yl9yZWNvcmQ7CisJCQkJcmVxdWVzdC0+cmVxX3JwYlsoaW50KShJUFRSKW5vZGUtPm5vZF9hcmdb
ZV9mbGRfc3RyZWFtXV0ucnBiX3JlY29yZDsKIAkJCS8qIEluIG9yZGVyIHRvICJtYXAgYSBudWxs
IHRvIGEgZGVmYXVsdCIgdmFsdWUgKGluIEVWTF9maWVsZCgpKSwgCiAJCQkgKiB0aGUgcmVsYXRp
b24gYmxvY2sgaXMgcmVmZXJlbmNlZC4gCiAJCQkgKiBSZWZlcmVuY2U6IEJ1ZyAxMDExNiwgMTA0
MjQgCiAJCQkgKi8KLQkJCWlmICghRVZMX2ZpZWxkKHJlcXVlc3QtPnJlcV9ycGJbKFVTSE9SVCkg
bm9kZS0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dXS5ycGJfcmVsYXRpb24sCisJCQlpZiAoIUVWTF9m
aWVsZChyZXF1ZXN0LT5yZXFfcnBiWyhVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9mbGRf
c3RyZWFtXV0ucnBiX3JlbGF0aW9uLAogCQkJCQkJCXJlY29yZCwKLQkJCQkJCQkoVVNIT1JUKSBu
b2RlLT5ub2RfYXJnW2VfZmxkX2lkXSwKKwkJCQkJCQkoVVNIT1JUKShJUFRSKSBub2RlLT5ub2Rf
YXJnW2VfZmxkX2lkXSwKIAkJCQkJCQkmaW1wdXJlLT52bHVfZGVzYykpCiAJCQl7CiAJCQkJcmVx
dWVzdC0+cmVxX2ZsYWdzIHw9IHJlcV9udWxsOwpAQCAtOTk3LDcgKzk5Nyw3IEBACiAJCQlVTE9O
RyBleHRyYWN0X3BhcnQ7CiAKIAkJCWltcHVyZSA9IChWTFUpICgoU0NIQVIgKikgcmVxdWVzdCAr
IG5vZGUtPm5vZF9pbXB1cmUpOwotCQkJZXh0cmFjdF9wYXJ0ID0gKFVMT05HKSBub2RlLT5ub2Rf
YXJnW2VfZXh0cmFjdF9wYXJ0XTsKKwkJCWV4dHJhY3RfcGFydCA9IChVTE9ORykoSVBUUikgbm9k
ZS0+bm9kX2FyZ1tlX2V4dHJhY3RfcGFydF07CiAJCQl2YWx1ZSA9IEVWTF9leHByKHRkYmIsIG5v
ZGUtPm5vZF9hcmdbZV9leHRyYWN0X3ZhbHVlXSk7CiAKIAkJCWltcHVyZS0+dmx1X2Rlc2MuZHNj
X2R0eXBlID0gZHR5cGVfc2hvcnQ7CkBAIC0xMTczLDggKzExNzMsOCBAQAogCiAJCXN3aXRjaCAo
bm9kZS0+bm9kX3R5cGUpIHsKIAkJY2FzZSBub2RfZ2VuX2lkOgkJLyogcmV0dXJuIGEgMzItYml0
IGdlbmVyYXRvciB2YWx1ZSAqLwotCQkJaW1wdXJlLT52bHVfbWlzYy52bHVfbG9uZyA9IChTTE9O
RykgRFBNX2dlbl9pZCh0ZGJiLAotCQkJCQkJCQkJCQkJCQkgICAoU0xPTkcpCisJCQlpbXB1cmUt
PnZsdV9taXNjLnZsdV9sb25nID0gKFNMT05HKShJUFRSKSBEUE1fZ2VuX2lkKHRkYmIsCisJCQkJ
CQkJCQkJCQkJCSAgIChTTE9ORykoSVBUUikKIAkJCQkJCQkJCQkJCQkJICAgbm9kZS0+bm9kX2Fy
ZwogCQkJCQkJCQkJCQkJCQkgICBbZV9nZW5faWRdLCAwLAogCQkJCQkJCQkJCQkJCQkgICBNT1Zf
Z2V0X2ludDY0CkBAIC0xMTg5LDcgKzExODksNyBAQAogCiAJCWNhc2Ugbm9kX2dlbl9pZDI6CiAJ
CQlpbXB1cmUtPnZsdV9taXNjLnZsdV9pbnQ2NCA9IERQTV9nZW5faWQodGRiYiwKLQkJCQkJCQkJ
CQkJCQkoU0xPTkcpCisJCQkJCQkJCQkJCQkJKFNMT05HKShJUFRSKQogCQkJCQkJCQkJCQkJCW5v
ZGUtPm5vZF9hcmdbZV9nZW5faWRdLAogCQkJCQkJCQkJCQkJCTAsCiAJCQkJCQkJCQkJCQkJTU9W
X2dldF9pbnQ2NCh2YWx1ZXNbMF0sCkBAIC0xMzgzLDcgKzEzODMsNyBAQAogCQlyZXR1cm4gRkFM
U0U7CiAJfQogCi0JZGVzYy0+ZHNjX2FkZHJlc3MgPSByZWNvcmQtPnJlY19kYXRhICsgKGludCkg
ZGVzYy0+ZHNjX2FkZHJlc3M7CisJZGVzYy0+ZHNjX2FkZHJlc3MgPSByZWNvcmQtPnJlY19kYXRh
ICsgKGludCkoSVBUUikgZGVzYy0+ZHNjX2FkZHJlc3M7CiAKIAlpZiAoVEVTVF9OVUxMKHJlY29y
ZCwgaWQpKSB7CiAJCWRlc2MtPmRzY19mbGFncyB8PSBEU0NfbnVsbDsKQEAgLTE3MjUsOSArMTcy
NSw5IEBACiAJewogCQlmcm9tID0gKCpwdHIpLT5ub2RfYXJnW2VfYXNnbl9mcm9tXTsKIAkJZmll
bGQgPSAoKnB0ciktPm5vZF9hcmdbZV9hc2duX3RvXTsKLQkJaWQgPSAoVVNIT1JUKSBmaWVsZC0+
bm9kX2FyZ1tlX2ZsZF9pZF07CisJCWlkID0gKFVTSE9SVCkoSVBUUikgZmllbGQtPm5vZF9hcmdb
ZV9mbGRfaWRdOwogCQlyZWNvcmQgPQotCQkJcmVxdWVzdC0+cmVxX3JwYlsoaW50KSBmaWVsZC0+
bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dXS5ycGJfcmVjb3JkOworCQkJcmVxdWVzdC0+cmVxX3JwYlso
aW50KShJUFRSKSBmaWVsZC0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dXS5ycGJfcmVjb3JkOwogCQlp
bXB1cmUgPSAoVkxVWCkgKChTQ0hBUiAqKSByZXF1ZXN0ICsgZnJvbS0+bm9kX2ltcHVyZSk7CiAJ
CXN3aXRjaCAoZnJvbS0+bm9kX3R5cGUpCiAJCXsKQEAgLTMzOTUsNyArMzM5NSw3IEBACiAKIAly
ZXF1ZXN0ID0gdGRiYi0+dGRiYl9yZXF1ZXN0OwogCWltcHVyZSA9IChWTFUpICgoU0NIQVIgKikg
cmVxdWVzdCArIG5vZGUtPm5vZF9pbXB1cmUpOwotCXJwYiA9ICZyZXF1ZXN0LT5yZXFfcnBiWyhp
bnQpIG5vZGUtPm5vZF9hcmdbMF1dOworCXJwYiA9ICZyZXF1ZXN0LT5yZXFfcnBiWyhpbnQpKElQ
VFIpIG5vZGUtPm5vZF9hcmdbMF1dOwogCXJlbGF0aW9uID0gcnBiLT5ycGJfcmVsYXRpb247CiAK
IC8qIEZvcm1hdCBkYmtleSBhcyB2ZWN0b3Igb2YgcmVsYXRpb24gaWQsIHJlY29yZCBudW1iZXIg
Ki8KQEAgLTQ1MDAsNyArNDUwMCw3IEBACiAKIAlyZXF1ZXN0ID0gdGRiYi0+dGRiYl9yZXF1ZXN0
OwogCWltcHVyZSA9IChWTFUpICgoU0NIQVIgKikgcmVxdWVzdCArIG5vZGUtPm5vZF9pbXB1cmUp
OwotCXJwYiA9ICZyZXF1ZXN0LT5yZXFfcnBiWyhpbnQpIG5vZGUtPm5vZF9hcmdbMF1dOworCXJw
YiA9ICZyZXF1ZXN0LT5yZXFfcnBiWyhpbnQpKElQVFIpIG5vZGUtPm5vZF9hcmdbMF1dOwogCiAv
KiBJZiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBoYXMgdXBkYXRlZCB0aGUgcmVjb3JkLCB0aGUg
cmVjb3JkIHZlcnNpb24KICAqIGNvbWluZyBpbiBmcm9tIERTUUwgd2lsbCBoYXZlIHRoZSBvcmln
aW5hbCB0cmFuc2FjdGlvbiAjIChvciBjdXJyZW50CmRpZmYgLXVyIGZpcmViaXJkLTEuNS4zLjQ4
NzAtb3JpZy9zcmMvanJkL2V4ZS5jcHAgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvanJkL2V4ZS5j
cHAKLS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAtb3JpZy9zcmMvanJkL2V4ZS5jcHAJMjAwNi0wMy0x
NyAwMTozOTowNC4wMDAwMDAwMDAgLTA1MDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2py
ZC9leGUuY3BwCTIwMDYtMDMtMTcgMDE6MzI6MjkuMDAwMDAwMDAwIC0wNTAwCkBAIC0zNzUsOCAr
Mzc1LDggQEAKIAogCWlmICh0by0+bm9kX3R5cGUgPT0gbm9kX2ZpZWxkKQogCXsKLQkJU1NIT1JU
IGlkID0gKFVTSE9SVCkgdG8tPm5vZF9hcmdbZV9mbGRfaWRdOwotCQlSRUMgcmVjb3JkID0gcmVx
dWVzdC0+cmVxX3JwYlsoaW50KSB0by0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dXS5ycGJfcmVjb3Jk
OworCQlTU0hPUlQgaWQgPSAoVVNIT1JUKShJUFRSKSB0by0+bm9kX2FyZ1tlX2ZsZF9pZF07CisJ
CVJFQyByZWNvcmQgPSByZXF1ZXN0LT5yZXFfcnBiWyhpbnQpKElQVFIpIHRvLT5ub2RfYXJnW2Vf
ZmxkX3N0cmVhbV1dLnJwYl9yZWNvcmQ7CiAJCWlmIChudWxsKSB7CiAJCQlTRVRfTlVMTChyZWNv
cmQsIGlkKTsKIAkJfSBlbHNlIHsKQEAgLTYzOSw3ICs2MzksNyBAQAogCW1lc3NhZ2UgPSByZXF1
ZXN0LT5yZXFfbWVzc2FnZTsKIAlmb3JtYXQgPSAoRk1UKSBtZXNzYWdlLT5ub2RfYXJnW2VfbXNn
X2Zvcm1hdF07CiAKLQlpZiAobXNnICE9IChVU0hPUlQpIG1lc3NhZ2UtPm5vZF9hcmdbZV9tc2df
bnVtYmVyXSkKKwlpZiAobXNnICE9IChVU0hPUlQpKElQVFIpIG1lc3NhZ2UtPm5vZF9hcmdbZV9t
c2dfbnVtYmVyXSkKIAkJRVJSX3Bvc3QoZ2RzX3JlcV9zeW5jLCAwKTsKIAogCWlmIChsZW5ndGgg
IT0gZm9ybWF0LT5mbXRfbGVuZ3RoKQpAQCAtNzg4LDcgKzc4OCw3IEBACiAJCWZvciAocHRyID0g
bm9kZS0+bm9kX2FyZywgZW5kID0gcHRyICsgbm9kZS0+bm9kX2NvdW50OyBwdHIgPCBlbmQ7CiAJ
CQkgcHRyKyspIHsKIAkJCW1lc3NhZ2UgPSAoKnB0ciktPm5vZF9hcmdbZV9zZW5kX21lc3NhZ2Vd
OwotCQkJaWYgKChVU0hPUlQpIG1lc3NhZ2UtPm5vZF9hcmdbZV9tc2dfbnVtYmVyXSA9PSBtc2cp
IHsKKwkJCWlmICgoVVNIT1JUKShJUFRSKSBtZXNzYWdlLT5ub2RfYXJnW2VfbXNnX251bWJlcl0g
PT0gbXNnKSB7CiAJCQkJcmVxdWVzdC0+cmVxX25leHQgPSAqcHRyOwogCQkJCWJyZWFrOwogCQkJ
fQpAQCAtNzk4LDcgKzc5OCw3IEBACiAKIAlmb3JtYXQgPSAoRk1UKSBtZXNzYWdlLT5ub2RfYXJn
W2VfbXNnX2Zvcm1hdF07CiAKLQlpZiAobXNnICE9IChVU0hPUlQpIG1lc3NhZ2UtPm5vZF9hcmdb
ZV9tc2dfbnVtYmVyXSkKKwlpZiAobXNnICE9IChVU0hPUlQpKElQVFIpIG1lc3NhZ2UtPm5vZF9h
cmdbZV9tc2dfbnVtYmVyXSkKIAkJRVJSX3Bvc3QoZ2RzX3JlcV9zeW5jLCAwKTsKIAogCWlmIChs
ZW5ndGggIT0gZm9ybWF0LT5mbXRfbGVuZ3RoKQpAQCAtMTA0OSw3ICsxMDQ5LDcgQEAKIAkJZGVz
YyA9ICZmb3JtYXQtPmZtdF9kZXNjW25dOwogCQlpZiAoIWRlc2MtPmRzY19hZGRyZXNzKQogCQkJ
Y29udGludWU7Ci0JCXAgPSByZWNvcmQtPnJlY19kYXRhICsgKFNMT05HKSBkZXNjLT5kc2NfYWRk
cmVzczsKKwkJcCA9IHJlY29yZC0+cmVjX2RhdGEgKyAoU0xPTkcpKElQVFIpIGRlc2MtPmRzY19h
ZGRyZXNzOwogCQlpZiAoVEVTVF9OVUxMKHJlY29yZCwgbikpCiAJCXsKIAkJCWlmIChsZW5ndGgg
PSBkZXNjLT5kc2NfbGVuZ3RoKQpAQCAtMTEzNCw3ICsxMTM0LDcgQEAKIAogCXJlcXVlc3QgPSB0
ZGJiLT50ZGJiX3JlcXVlc3Q7CiAJdHJhbnNhY3Rpb24gPSByZXF1ZXN0LT5yZXFfdHJhbnNhY3Rp
b247Ci0JcnBiID0gJnJlcXVlc3QtPnJlcV9ycGJbKGludCkgbm9kZS0+bm9kX2FyZ1tlX2VyYXNl
X3N0cmVhbV1dOworCXJwYiA9ICZyZXF1ZXN0LT5yZXFfcnBiWyhpbnQpKElQVFIpIG5vZGUtPm5v
ZF9hcmdbZV9lcmFzZV9zdHJlYW1dXTsKIAlyZWxhdGlvbiA9IHJwYi0+cnBiX3JlbGF0aW9uOwog
CiAjaWZkZWYgUENfRU5HSU5FCkBAIC0yMDE1LDcgKzIwMTUsNyBAQAogCQkJY2FzZSBqcmRfcmVx
OjpyZXFfZXZhbHVhdGU6CiAJCQkJaWYgKHRyYW5zYWN0aW9uICE9IGRiYi0+ZGJiX3N5c190cmFu
cykgewogCi0JCQkJCVVDSEFSIG9wZXJhdGlvbiA9IChVQ0hBUikgbm9kZS0+bm9kX2FyZ1tlX3Nh
dl9vcGVyYXRpb25dOworCQkJCQlVQ0hBUiBvcGVyYXRpb24gPSAoVUNIQVIpKElQVFIpIG5vZGUt
Pm5vZF9hcmdbZV9zYXZfb3BlcmF0aW9uXTsKIAkJCQkJVEVYVCAqIG5vZGVfc2F2ZXBvaW50X25h
bWUgPSAoVEVYVCopIG5vZGUtPm5vZF9hcmdbZV9zYXZfbmFtZV07IAogCiAJCQkJCS8vIFNraXAg
dGhlIHNhdmVwb2ludCBjcmVhdGVkIGJ5IEVYRV9zdGFydApAQCAtMjMyOCw3ICsyMzI4LDcgQEAK
IAkJCQlicmVhazsKIAogCQkJY2FzZSBqcmRfcmVxOjpyZXFfdW53aW5kOgotCQkJCWlmICgocmVx
dWVzdC0+cmVxX2xhYmVsID09IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9sYmxfbGFiZWxdKSAm
JgorCQkJCWlmICgocmVxdWVzdC0+cmVxX2xhYmVsID09IChVU0hPUlQpKElQVFIpIG5vZGUtPm5v
ZF9hcmdbZV9sYmxfbGFiZWxdKSAmJgogCQkJCQkJKHJlcXVlc3QtPnJlcV9mbGFncyAmIChyZXFf
bGVhdmUgfCByZXFfZXJyb3JfaGFuZGxlcikpKSB7CiAJCQkJCXJlcXVlc3QtPnJlcV9mbGFncyAm
PSB+cmVxX2xlYXZlOwogCQkJCQlyZXF1ZXN0LT5yZXFfb3BlcmF0aW9uID0ganJkX3JlcTo6cmVx
X3JldHVybjsKQEAgLTIzNDIsNyArMjM0Miw3IEBACiAJCWNhc2Ugbm9kX2xlYXZlOgogCQkJcmVx
dWVzdC0+cmVxX2ZsYWdzIHw9IHJlcV9sZWF2ZTsKIAkJCXJlcXVlc3QtPnJlcV9vcGVyYXRpb24g
PSBqcmRfcmVxOjpyZXFfdW53aW5kOwotCQkJcmVxdWVzdC0+cmVxX2xhYmVsID0gKFVTSE9SVCkg
bm9kZS0+bm9kX2FyZ1swXTsKKwkJCXJlcXVlc3QtPnJlcV9sYWJlbCA9IChVU0hPUlQpKElQVFIp
IG5vZGUtPm5vZF9hcmdbMF07CiAJCQlub2RlID0gbm9kZS0+bm9kX3BhcmVudDsKIAkJCWJyZWFr
OwogCkBAIC0yNjUyLDcgKzI2NTIsNyBAQAogCQkJCURTQyAqZGVzYzsKIAogCQkJCWRlc2MgPSBF
VkxfZXhwcih0ZGJiLCBub2RlLT5ub2RfYXJnW2VfZ2VuX3ZhbHVlXSk7Ci0JCQkJKHZvaWQpIERQ
TV9nZW5faWQodGRiYiwgKFNMT05HKSBub2RlLT5ub2RfYXJnW2VfZ2VuX2lkXSwgMSwKKwkJCQko
dm9pZCkgRFBNX2dlbl9pZCh0ZGJiLCAoU0xPTkcpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9nZW5f
aWRdLCAxLAogCQkJCQkJCQkgIE1PVl9nZXRfaW50NjQoZGVzYywgMCkpOwogCQkJCXJlcXVlc3Qt
PnJlcV9vcGVyYXRpb24gPSBqcmRfcmVxOjpyZXFfcmV0dXJuOwogCQkJfQpAQCAtMjY2NCw3ICsy
NjY0LDcgQEAKIAkJCQlEU0MgKmRlc2M7CiAKIAkJCQlkZXNjID0gRVZMX2V4cHIodGRiYiwgbm9k
ZS0+bm9kX2FyZ1tlX2dlbl92YWx1ZV0pOwotCQkJCSh2b2lkKSBEUE1fZ2VuX2lkKHRkYmIsIChT
TE9ORykgbm9kZS0+bm9kX2FyZ1tlX2dlbl9pZF0sIDEsCisJCQkJKHZvaWQpIERQTV9nZW5faWQo
dGRiYiwgKFNMT05HKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfZ2VuX2lkXSwgMSwKIAkJCQkJCQkJ
ICBNT1ZfZ2V0X2ludDY0KGRlc2MsIDApKTsKIAkJCQlyZXF1ZXN0LT5yZXFfb3BlcmF0aW9uID0g
anJkX3JlcTo6cmVxX3JldHVybjsKIAkJCX0KQEAgLTI3OTQsMTEgKzI3OTQsMTEgQEAKIAl0cmFu
c2FjdGlvbiA9IHJlcXVlc3QtPnJlcV90cmFuc2FjdGlvbjsKIAlpbXB1cmUgPSAoU1RBKSAoKFND
SEFSICopIHJlcXVlc3QgKyBub2RlLT5ub2RfaW1wdXJlKTsKIAotCW9yZ19zdHJlYW0gPSAoVVNI
T1JUKSBub2RlLT5ub2RfYXJnW2VfbW9kX29yZ19zdHJlYW1dOworCW9yZ19zdHJlYW0gPSAoVVNI
T1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfbW9kX29yZ19zdHJlYW1dOwogCW9yZ19ycGIgPSAm
cmVxdWVzdC0+cmVxX3JwYltvcmdfc3RyZWFtXTsKIAlyZWxhdGlvbiA9IG9yZ19ycGItPnJwYl9y
ZWxhdGlvbjsKIAotCW5ld19zdHJlYW0gPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfbW9kX25l
d19zdHJlYW1dOworCW5ld19zdHJlYW0gPSAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2Vf
bW9kX25ld19zdHJlYW1dOwogCW5ld19ycGIgPSAmcmVxdWVzdC0+cmVxX3JwYltuZXdfc3RyZWFt
XTsKIAogI2lmZGVmIFBDX0VOR0lORQpAQCAtMzc5NSw3ICszNzk1LDcgQEAKIAlKUkRfUkVRICAg
IHJlcXVlc3QgICAgID0gdGRiYi0+dGRiYl9yZXF1ZXN0OwogCUpSRF9UUkEgICAgdHJhbnNhY3Rp
b24gPSByZXF1ZXN0LT5yZXFfdHJhbnNhY3Rpb247CiAJU1RBICAgIGltcHVyZSAgICAgID0gKFNU
QSkgKChTQ0hBUiAqKSByZXF1ZXN0ICsgbm9kZS0+bm9kX2ltcHVyZSk7Ci0JU1NIT1JUIHN0cmVh
bSAgICAgID0gKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tlX3N0b19yZWxhdGlvbl0tPm5vZF9hcmdb
ZV9yZWxfc3RyZWFtXTsKKwlTU0hPUlQgc3RyZWFtICAgICAgPSAoVVNIT1JUKShJUFRSKSBub2Rl
LT5ub2RfYXJnW2Vfc3RvX3JlbGF0aW9uXS0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOwogCVJQQiog
ICBycGIgICAgICAgICA9ICZyZXF1ZXN0LT5yZXFfcnBiW3N0cmVhbV07CiAJSlJEX1JFTCAgICBy
ZWxhdGlvbiAgICA9IHJwYi0+cnBiX3JlbGF0aW9uOwogCkBAIC00MjAxLDggKzQyMDEsOCBAQAog
CiAJCQlpZiAobm9kZS0+bm9kX3R5cGUgPT0gbm9kX2ZpZWxkKQogCQkJewotCQkJCXN0cmVhbSA9
IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbZV9mbGRfc3RyZWFtXTsKLQkJCQlpZCA9IChVU0hPUlQp
IG5vZGUtPm5vZF9hcmdbZV9mbGRfaWRdOworCQkJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIG5v
ZGUtPm5vZF9hcmdbZV9mbGRfc3RyZWFtXTsKKwkJCQlpZCA9IChVU0hPUlQpKElQVFIpIG5vZGUt
Pm5vZF9hcmdbZV9mbGRfaWRdOwogCQkJCXJlbGF0aW9uID0gcmVxdWVzdC0+cmVxX3JwYltzdHJl
YW1dLnJwYl9yZWxhdGlvbjsKIAogCQkJCWlmICgodmVjdG9yID0gcmVsYXRpb24tPnJlbF9maWVs
ZHMpICYmCmRpZmYgLXVyIGZpcmViaXJkLTEuNS4zLjQ4NzAtb3JpZy9zcmMvanJkL2V4dC5jcHAg
ZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvanJkL2V4dC5jcHAKLS0tIGZpcmViaXJkLTEuNS4zLjQ4
NzAtb3JpZy9zcmMvanJkL2V4dC5jcHAJMjAwNi0wMy0xNyAwMTozOTowNC4wMDAwMDAwMDAgLTA1
MDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9leHQuY3BwCTIwMDYtMDMtMTcgMDE6
MzI6MjkuMDAwMDAwMDAwIC0wNTAwCkBAIC0yNjYsNyArMjY2LDcgQEAKIAlyZWNvcmQgPSBycGIt
PnJwYl9yZWNvcmQ7CiAJZm9ybWF0ID0gcmVjb3JkLT5yZWNfZm9ybWF0OwogCi0Jb2Zmc2V0ID0g
KFNTSE9SVCkgZm9ybWF0LT5mbXRfZGVzY1swXS5kc2NfYWRkcmVzczsKKwlvZmZzZXQgPSAoU1NI
T1JUKShJUFRSKSBmb3JtYXQtPmZtdF9kZXNjWzBdLmRzY19hZGRyZXNzOwogCXAgPSByZWNvcmQt
PnJlY19kYXRhICsgb2Zmc2V0OwogCWwgPSByZWNvcmQtPnJlY19sZW5ndGggLSBvZmZzZXQ7CiAK
QEAgLTI5OSw3ICsyOTksNyBAQAogCQkJY29udGludWU7CiAJCWlmICggKGxpdGVyYWwgPSAoTElU
KSBmaWVsZC0+ZmxkX21pc3NpbmdfdmFsdWUpICkgewogCQkJZGVzYyA9ICpkZXNjX3B0cjsKLQkJ
CWRlc2MuZHNjX2FkZHJlc3MgPSByZWNvcmQtPnJlY19kYXRhICsgKGludCkgZGVzYy5kc2NfYWRk
cmVzczsKKwkJCWRlc2MuZHNjX2FkZHJlc3MgPSByZWNvcmQtPnJlY19kYXRhICsgKGludCkoSVBU
UikgZGVzYy5kc2NfYWRkcmVzczsKIAkJCWlmICghTU9WX2NvbXBhcmUoJmxpdGVyYWwtPmxpdF9k
ZXNjLCAmZGVzYykpCiAJCQkJY29udGludWU7CiAJCX0KQEAgLTUxMiw3ICs1MTIsNyBAQAogCQkJ
ZGVzY19wdHItPmRzY19sZW5ndGggJiYKIAkJCVRFU1RfTlVMTChyZWNvcmQsIGkpKQogCQl7Ci0J
CQlwID0gcmVjb3JkLT5yZWNfZGF0YSArIChpbnQpIGRlc2NfcHRyLT5kc2NfYWRkcmVzczsKKwkJ
CXAgPSByZWNvcmQtPnJlY19kYXRhICsgKGludCkoSVBUUikgZGVzY19wdHItPmRzY19hZGRyZXNz
OwogCQkJaWYgKCAobGl0ZXJhbCA9IChMSVQpIGZpZWxkLT5mbGRfbWlzc2luZ192YWx1ZSkgKSB7
CiAJCQkJZGVzYyA9ICpkZXNjX3B0cjsKIAkJCQlkZXNjLmRzY19hZGRyZXNzID0gcDsKQEAgLTUy
OCw3ICs1MjgsNyBAQAogCQl9CiAJfQogCi0Jb2Zmc2V0ID0gKFVTSE9SVCkgZm9ybWF0LT5mbXRf
ZGVzY1swXS5kc2NfYWRkcmVzczsKKwlvZmZzZXQgPSAoVVNIT1JUKShJUFRSKSBmb3JtYXQtPmZt
dF9kZXNjWzBdLmRzY19hZGRyZXNzOwogCXAgPSByZWNvcmQtPnJlY19kYXRhICsgb2Zmc2V0Owog
CWwgPSByZWNvcmQtPnJlY19sZW5ndGggLSBvZmZzZXQ7CiAKZGlmZiAtdXIgZmlyZWJpcmQtMS41
LjMuNDg3MC1vcmlnL3NyYy9qcmQvZ2RzLmNwcCBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9qcmQv
Z2RzLmNwcAotLS0gZmlyZWJpcmQtMS41LjMuNDg3MC1vcmlnL3NyYy9qcmQvZ2RzLmNwcAkyMDA2
LTAzLTE3IDAxOjM5OjA0LjAwMDAwMDAwMCAtMDUwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9z
cmMvanJkL2dkcy5jcHAJMjAwNi0wMy0xNyAwMTozMjozMC4wMDAwMDAwMDAgLTA1MDAKQEAgLTIz
MDQsNyArMjMwNCw3IEBACiAJCXJldHVybiByZXN1bHQ7CiAKIAlpZiAoc3RkaW9fZmxhZykKLQkJ
aWYgKCEocmVzdWx0ID0gaWJfZmRvcGVuKChpbnQpIHJlc3VsdCwgIncrIikpKQorCQlpZiAoIShy
ZXN1bHQgPSBpYl9mZG9wZW4oKGludCkoSVBUUikgcmVzdWx0LCAidysiKSkpCiAJCQlyZXR1cm4g
KHZvaWQgKiktMTsKIAogCWlmIChleHBhbmRlZF9zdHJpbmcpCmRpZmYgLXVyIGZpcmViaXJkLTEu
NS4zLjQ4NzAtb3JpZy9zcmMvanJkL2lkeC5jcHAgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvanJk
L2lkeC5jcHAKLS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAtb3JpZy9zcmMvanJkL2lkeC5jcHAJMjAw
Ni0wMy0xNyAwMTozOTowNC4wMDAwMDAwMDAgLTA1MDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAv
c3JjL2pyZC9pZHguY3BwCTIwMDYtMDMtMTcgMDE6MzI6MzAuMDAwMDAwMDAwIC0wNTAwCkBAIC0x
MDU1LDEyICsxMDU1LDEyIEBACiAJCQkgaW5kZXhfbnVtYmVyIDwgaWR4LT5pZHhfZm9yZWlnbl9w
cmltYXJpZXMtPmNvdW50KCk7CiAJCQkgaW5kZXhfbnVtYmVyKyspIHsKIAkJCWlmIChpZHgtPmlk
eF9pZCAhPQotCQkJCShVQ0hBUikgKCppZHgtPmlkeF9mb3JlaWduX3ByaW1hcmllcylbaW5kZXhf
bnVtYmVyXSkgY29udGludWU7CisJCQkJKFVDSEFSKShJUFRSKSAoKmlkeC0+aWR4X2ZvcmVpZ25f
cHJpbWFyaWVzKVtpbmRleF9udW1iZXJdKSBjb250aW51ZTsKIAkJCXBhcnRuZXJfcmVsYXRpb24g
PQogCQkJCU1FVF9yZWxhdGlvbih0ZGJiLAotCQkJCQkJCSAoaW50KSAoKmlkeC0+aWR4X2ZvcmVp
Z25fcmVsYXRpb25zKVtpbmRleF9udW1iZXJdKTsKKwkJCQkJCQkgKGludCkoSVBUUikgKCppZHgt
PmlkeF9mb3JlaWduX3JlbGF0aW9ucylbaW5kZXhfbnVtYmVyXSk7CiAJCQlpbmRleF9pZCA9Ci0J
CQkJKFVTSE9SVCkgKCppZHgtPmlkeF9mb3JlaWduX2luZGV4ZXMpW2luZGV4X251bWJlcl07CisJ
CQkJKFVTSE9SVCkoSVBUUikgKCppZHgtPmlkeF9mb3JlaWduX2luZGV4ZXMpW2luZGV4X251bWJl
cl07CiAJCQlpZiAoIChyZXN1bHQgPQogCQkJCWNoZWNrX3BhcnRuZXJfaW5kZXgodGRiYiwgcmVs
YXRpb24sIHJlY29yZCwgdHJhbnNhY3Rpb24sIGlkeCwKIAkJCQkJCQkJCXBhcnRuZXJfcmVsYXRp
b24sIGluZGV4X2lkKSkgKQpkaWZmIC11ciBmaXJlYmlyZC0xLjUuMy40ODcwLW9yaWcvc3JjL2py
ZC9pbmYuY3BwIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9pbmYuY3BwCi0tLSBmaXJlYmly
ZC0xLjUuMy40ODcwLW9yaWcvc3JjL2pyZC9pbmYuY3BwCTIwMDYtMDMtMTcgMDE6Mzk6MDQuMDAw
MDAwMDAwIC0wNTAwCisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9qcmQvaW5mLmNwcAkyMDA2
LTAzLTE3IDAxOjMyOjMwLjAwMDAwMDAwMCAtMDUwMApAQCAtOTcyLDcgKzk3Miw3IEBACiAJCQlu
b2RlID0gcmVxdWVzdC0+cmVxX21lc3NhZ2U7CiAJCQlpZiAoaXRlbSA9PSBnZHNfaW5mb19tZXNz
YWdlX251bWJlcikKIAkJCQlsZW5ndGggPQotCQkJCQlJTkZfY29udmVydCgoU0xPTkcpIG5vZGUt
Pm5vZF9hcmdbZV9tc2dfbnVtYmVyXSwKKwkJCQkJSU5GX2NvbnZlcnQoKFNMT05HKShJUFRSKSBu
b2RlLT5ub2RfYXJnW2VfbXNnX251bWJlcl0sCiAJCQkJCQkJCWJ1ZmZlcl9wdHIpOwogCQkJZWxz
ZSB7CiAJCQkJZm9ybWF0ID0gKEZNVCkgbm9kZS0+bm9kX2FyZ1tlX21zZ19mb3JtYXRdOwpkaWZm
IC11ciBmaXJlYmlyZC0xLjUuMy40ODcwLW9yaWcvc3JjL2pyZC9tZXQuZXBwIGZpcmViaXJkLTEu
NS4zLjQ4NzAvc3JjL2pyZC9tZXQuZXBwCi0tLSBmaXJlYmlyZC0xLjUuMy40ODcwLW9yaWcvc3Jj
L2pyZC9tZXQuZXBwCTIwMDYtMDMtMTcgMDE6Mzk6MDQuMDAwMDAwMDAwIC0wNTAwCisrKyBmaXJl
YmlyZC0xLjUuMy40ODcwL3NyYy9qcmQvbWV0LmVwcAkyMDA2LTAzLTE3IDAxOjMyOjMxLjAwMDAw
MDAwMCAtMDUwMApAQCAtOTMyLDcgKzkzMiw3IEBACiAJCQlpZiAoZGVzYy0+ZHNjX2FkZHJlc3Mp
CiAJCQl7CiAJCQkJZm9ybWF0LT5mbXRfbGVuZ3RoID0KLQkJCQkJKFVMT05HKSBkZXNjLT5kc2Nf
YWRkcmVzcyArIGRlc2MtPmRzY19sZW5ndGg7CisJCQkJCShVTE9ORykoSVBUUikgZGVzYy0+ZHNj
X2FkZHJlc3MgKyBkZXNjLT5kc2NfbGVuZ3RoOwogCQkJCWJyZWFrOwogCQkJfQogCQl9CkBAIC0y
MTMzLDEzICsyMTMzLDEzIEBACiAJCQkJIGluZGV4X251bWJlciA8IHJlZmVyZW5jZXMtPmZyZ25f
cmVmZXJlbmNlX2lkcy0+Y291bnQoKTsKIAkJCQkgaW5kZXhfbnVtYmVyKyspCiAJCQl7Ci0JCQkJ
aWYgKGlkeC0+aWR4X2lkID09IChVQ0hBUikgKCpyZWZlcmVuY2VzLT5mcmduX3JlZmVyZW5jZV9p
ZHMpCisJCQkJaWYgKGlkeC0+aWR4X2lkID09IChVQ0hBUikoSVBUUikgKCpyZWZlcmVuY2VzLT5m
cmduX3JlZmVyZW5jZV9pZHMpCiAJCQkJCQkJCQkJCVtpbmRleF9udW1iZXJdKQogCQkJCXsKIAkJ
CQkJaWR4LT5pZHhfcHJpbWFyeV9yZWxhdGlvbiA9Ci0JCQkJCQkoVVNIT1JUKSAoKnJlZmVyZW5j
ZXMtPmZyZ25fcmVsYXRpb25zKVtpbmRleF9udW1iZXJdOworCQkJCQkJKFVTSE9SVCkoSVBUUikg
KCpyZWZlcmVuY2VzLT5mcmduX3JlbGF0aW9ucylbaW5kZXhfbnVtYmVyXTsKIAkJCQkJaWR4LT5p
ZHhfcHJpbWFyeV9pbmRleCA9Ci0JCQkJCQkoVUNIQVIpICgqcmVmZXJlbmNlcy0+ZnJnbl9pbmRl
eGVzKVtpbmRleF9udW1iZXJdOworCQkJCQkJKFVDSEFSKShJUFRSKSAoKnJlZmVyZW5jZXMtPmZy
Z25faW5kZXhlcylbaW5kZXhfbnVtYmVyXTsKIAkJCQkJcmV0dXJuIFRSVUU7CiAJCQkJfQogCQkJ
fQpAQCAtMjE1NSw3ICsyMTU1LDcgQEAKIAkJCQkgaW5kZXhfbnVtYmVyIDwgZGVwZW5kZW5jaWVz
LT5wcmltX3JlZmVyZW5jZV9pZHMtPmNvdW50KCk7CiAJCQkJIGluZGV4X251bWJlcisrKQogCQkJ
ewotCQkJCWlmIChpZHgtPmlkeF9pZCA9PSAoVUNIQVIpICgqZGVwZW5kZW5jaWVzLT5wcmltX3Jl
ZmVyZW5jZV9pZHMpCisJCQkJaWYgKGlkeC0+aWR4X2lkID09IChVQ0hBUikoSVBUUikgKCpkZXBl
bmRlbmNpZXMtPnByaW1fcmVmZXJlbmNlX2lkcykKIAkJCQkJCQkJCQkJW2luZGV4X251bWJlcl0p
CiAJCQkJewogCQkJCQlpZHgtPmlkeF9mb3JlaWduX3ByaW1hcmllcyA9CkBAIC0zMDAxLDEwICsz
MDAxLDEwIEBACiAJCXsKIAkJCWlmICggKG5vZGUgPSBjc2JfLT5jc2JfcnB0W2ldLmNzYl9tZXNz
YWdlKSApCiAJCQl7Ci0JCQkJaWYgKChpbnQpIG5vZGUtPm5vZF9hcmdbZV9tc2dfbnVtYmVyXSA9
PSAwKQorCQkJCWlmICgoaW50KShJUFRSKSBub2RlLT5ub2RfYXJnW2VfbXNnX251bWJlcl0gPT0g
MCkKIAkJCQl7CiAJCQkJCXByb2NlZHVyZS0+cHJjX2lucHV0X21zZyA9IG5vZGU7Ci0JCQkJfSBl
bHNlIGlmICgoaW50KSBub2RlLT5ub2RfYXJnW2VfbXNnX251bWJlcl0gPT0gMSkKKwkJCQl9IGVs
c2UgaWYgKChpbnQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9tc2dfbnVtYmVyXSA9PSAxKQogCQkJ
CXsKIAkJCQkJcHJvY2VkdXJlLT5wcmNfb3V0cHV0X21zZyA9IG5vZGU7CiAJCQkJfQpAQCAtNDU4
MCw3ICs0NTgwLDcgQEAKIAkJbm9kZSA9IChKUkRfTk9EKSBMTFNfUE9QKCZjc2ItPmNzYl9kZXBl
bmRlbmNpZXMpOwogCQlpZiAoIW5vZGUtPm5vZF9hcmdbZV9kZXBfb2JqZWN0XSkKIAkJCWNvbnRp
bnVlOwotCQlkcGRvX3R5cGUgPSAoU1NIT1JUKSBub2RlLT5ub2RfYXJnW2VfZGVwX29iamVjdF90
eXBlXTsKKwkJZHBkb190eXBlID0gKFNTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2RlcF9v
YmplY3RfdHlwZV07CiAgICAgICAgIHJlbGF0aW9uID0gTlVMTDsKICAgICAgICAgcHJvY2VkdXJl
ID0gTlVMTDsKICAgICAgICAgc3dpdGNoIChkcGRvX3R5cGUpIHsKQEAgLTQ1OTMsMTMgKzQ1OTMs
MTMgQEAKICAgICAgICAgICAgIGRwZG9fbmFtZSA9IChURVhUKikgcHJvY2VkdXJlLT5wcmNfbmFt
ZS0+c3RyX2RhdGE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBvYmpfZXhjZXB0
aW9uOgotICAgICAgICAgICAgbnVtYmVyID0gKFNMT05HKSBub2RlLT5ub2RfYXJnIFtlX2RlcF9v
YmplY3RdOworICAgICAgICAgICAgbnVtYmVyID0gKFNMT05HKShJUFRSKSBub2RlLT5ub2RfYXJn
IFtlX2RlcF9vYmplY3RdOwogICAgICAgICAgICAgTUVUX2xvb2t1cF9leGNlcHRpb24gKHRkYmIs
IG51bWJlciwgbmFtZSwgTlVMTCk7CiAgICAgICAgICAgICBkcGRvX25hbWUgPSBuYW1lOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAvKiBDVkM6IEhlcmUgSSdtIGdvaW5nIHRvIHRy
YWNrIHRob3NlIHBlc2t5IHRoaW5ncyBuYW1lZCBnZW5lcmF0b3JzIGFuZCBVREZzLiAqLwogICAg
ICAgICBjYXNlIG9ial9nZW5lcmF0b3I6Ci0gICAgICAgICAgICBudW1iZXIgPSAoU0xPTkcpIG5v
ZGUtPm5vZF9hcmcgW2VfZGVwX29iamVjdF07CisgICAgICAgICAgICBudW1iZXIgPSAoU0xPTkcp
KElQVFIpIG5vZGUtPm5vZF9hcmcgW2VfZGVwX29iamVjdF07CiAgICAgICAgICAgICBNRVRfbG9v
a3VwX2dlbmVyYXRvcl9pZCAodGRiYiwgbnVtYmVyLCBuYW1lKTsKICAgICAgICAgICAgIGRwZG9f
bmFtZSA9IG5hbWU7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ2MTcsNyArNDYxNyw3IEBACiAJ
CXsKIAkJCWlmIChmaWVsZF9ub2RlLT5ub2RfdHlwZSA9PSBub2RfZmllbGQpCiAJCQl7Ci0JCQkJ
ZmxkX2lkID0gKFNTSE9SVCkgZmllbGRfbm9kZS0+bm9kX2FyZ1swXTsKKwkJCQlmbGRfaWQgPSAo
U1NIT1JUKShJUFRSKSBmaWVsZF9ub2RlLT5ub2RfYXJnWzBdOwogCQkJCWlmIChyZWxhdGlvbikK
IAkJCQl7CiAJCQkJCWlmICggKGZpZWxkID0gTUVUX2dldF9maWVsZChyZWxhdGlvbiwgZmxkX2lk
KSkgKQpkaWZmIC11ciBmaXJlYmlyZC0xLjUuMy40ODcwLW9yaWcvc3JjL2pyZC9vcHQuY3BwIGZp
cmViaXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9vcHQuY3BwCi0tLSBmaXJlYmlyZC0xLjUuMy40ODcw
LW9yaWcvc3JjL2pyZC9vcHQuY3BwCTIwMDYtMDMtMTcgMDE6Mzk6MDQuMDAwMDAwMDAwIC0wNTAw
CisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9qcmQvb3B0LmNwcAkyMDA2LTAzLTE3IDAxOjMy
OjMxLjAwMDAwMDAwMCAtMDUwMApAQCAtMzgwLDcgKzM4MCw3IEBACiAKIAkJaWYgKG5vZGUtPm5v
ZF90eXBlICE9IG5vZF9yc2UpCiAJCXsKLQkJCXN0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9h
cmdbU1RSRUFNX0lOREVYKG5vZGUpXTsKKwkJCXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIG5vZGUt
Pm5vZF9hcmdbU1RSRUFNX0lOREVYKG5vZGUpXTsKIAkJCWFzc2VydChzdHJlYW0gPD0gTUFYX1VD
SEFSKTsKIAkJCWFzc2VydChiZWRzWzBdIDwgTUFYX1NUUkVBTVMgJiYgYmVkc1swXSA8IE1BWF9V
Q0hBUik7CiAJCQliZWRzWysrYmVkc1swXV0gPSAoVUNIQVIpIHN0cmVhbTsKQEAgLTQwMCw3ICs0
MDAsNyBAQAogCQkJCQkJICAoVVNIT1JUKSAoa2V5X3N0cmVhbXNbMF0gLSBpKSk7CiAJCQlhc3Nl
cnQobG9jYWxfc3RyZWFtc1swXSA8IE1BWF9TVFJFQU1TICYmIGxvY2FsX3N0cmVhbXNbMF0gPCBN
QVhfVUNIQVIpOwogCQkJbG9jYWxfc3RyZWFtc1srK2xvY2FsX3N0cmVhbXNbMF1dID0KLQkJCQko
VUNIQVIpIG5vZGUtPm5vZF9hcmdbZV91bmlfc3RyZWFtXTsKKwkJCQkoVUNIQVIpKElQVFIpIG5v
ZGUtPm5vZF9hcmdbZV91bmlfc3RyZWFtXTsKIAkJfQogCQllbHNlIGlmIChub2RlLT5ub2RfdHlw
ZSA9PSBub2RfYWdncmVnYXRlKSB7CiAJCQlhc3NlcnQoKGludClub2RlLT5ub2RfYXJnW2VfYWdn
X3N0cmVhbV0gPD0gTUFYX1NUUkVBTVMpOwpAQCAtNDA4LDEzICs0MDgsMTMgQEAKIAkJCXJzYiA9
IGdlbl9hZ2dyZWdhdGUodGRiYiwgb3B0Xywgbm9kZSk7CiAJCQlhc3NlcnQobG9jYWxfc3RyZWFt
c1swXSA8IE1BWF9TVFJFQU1TICYmIGxvY2FsX3N0cmVhbXNbMF0gPCBNQVhfVUNIQVIpOwogCQkJ
bG9jYWxfc3RyZWFtc1srK2xvY2FsX3N0cmVhbXNbMF1dID0KLQkJCQkoVUNIQVIpIG5vZGUtPm5v
ZF9hcmdbZV9hZ2dfc3RyZWFtXTsKKwkJCQkoVUNIQVIpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9h
Z2dfc3RyZWFtXTsKIAkJfQogCQllbHNlIGlmIChub2RlLT5ub2RfdHlwZSA9PSBub2RfcHJvY2Vk
dXJlKSB7CiAJCQlyc2IgPSBnZW5fcHJvY2VkdXJlKHRkYmIsIG9wdF8sIG5vZGUpOwogCQkJYXNz
ZXJ0KGxvY2FsX3N0cmVhbXNbMF0gPCBNQVhfU1RSRUFNUyAmJiBsb2NhbF9zdHJlYW1zWzBdIDwg
TUFYX1VDSEFSKTsKIAkJCWxvY2FsX3N0cmVhbXNbKytsb2NhbF9zdHJlYW1zWzBdXSA9Ci0JCQkJ
KFVDSEFSKSBub2RlLT5ub2RfYXJnW2VfcHJjX3N0cmVhbV07CisJCQkJKFVDSEFSKShJUFRSKSBu
b2RlLT5ub2RfYXJnW2VfcHJjX3N0cmVhbV07CiAJCX0KIAkJZWxzZSBpZiAobm9kZS0+bm9kX3R5
cGUgPT0gbm9kX3JzZSkgewogCQkJY29tcHV0ZV9yc2Vfc3RyZWFtcyhjc2IsIChSU0UpIG5vZGUs
IGJlZHMpOwpAQCAtODk1LDcgKzg5NSw3IEBACiAKIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBj
b3JyZWN0IHN0cmVhbSAqLwogCi0JaWYgKChVU0hPUlQpIGRia2V5LT5ub2RfYXJnWzBdICE9IHN0
cmVhbSkKKwlpZiAoKFVTSE9SVCkoSVBUUikgZGJrZXktPm5vZF9hcmdbMF0gIT0gc3RyZWFtKQog
CQlyZXR1cm4gTlVMTDsKIAogLyogSWYgdGhpcyBpcyBhIGRia2V5IGZvciB0aGUgYXBwcm9wcmlh
dGUgc3RyZWFtLCBpdCdzIGludmVydGFibGUgKi8KQEAgLTE2ODcsNyArMTY4Nyw3IEBACiAJc3dp
dGNoIChub2RlLT5ub2RfdHlwZSkgewogCWNhc2Ugbm9kX2ZpZWxkOgogCi0JCW4gPSAoVVNIT1JU
KSBub2RlLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV07CisJCW4gPSAoVVNIT1JUKShJUFRSKSBub2Rl
LT5ub2RfYXJnW2VfZmxkX3N0cmVhbV07CiAKIAkJaWYgKGFsbG93T25seUN1cnJlbnRTdHJlYW0p
IHsKIAkJCWlmIChuICE9IHN0cmVhbSkgewpAQCAtMTcxMyw3ICsxNzEzLDcgQEAKIAogCWNhc2Ug
bm9kX2Ria2V5OgogCi0JCW4gPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnWzBdOworCQluID0gKFVT
SE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1swXTsKIAogCQlpZiAoYWxsb3dPbmx5Q3VycmVudFN0
cmVhbSkgewogCQkJaWYgKG4gIT0gc3RyZWFtKSB7CkBAIC0xNzg0LDcgKzE3ODQsNyBAQAogCiAJ
Zm9yIChwdHIgPSByc2UtPnJzZV9yZWxhdGlvbiwgZW5kID0gcHRyICsgcnNlLT5yc2VfY291bnQ7
IHB0ciA8IGVuZDsgcHRyKyspIHsKIAkJaWYgKCgqcHRyKS0+bm9kX3R5cGUgIT0gbm9kX3JzZSkg
ewotCQkJbiA9IChVU0hPUlQpICgqcHRyKS0+bm9kX2FyZ1tTVFJFQU1fSU5ERVgoKCpwdHIpKV07
CisJCQluID0gKFVTSE9SVCkoSVBUUikgKCpwdHIpLT5ub2RfYXJnW1NUUkVBTV9JTkRFWCgoKnB0
cikpXTsKIAkJCWNzYi0+Y3NiX3JwdFtuXS5jc2JfZmxhZ3MgfD0gY3NiX2FjdGl2ZTsKIAkJfQog
CX0KQEAgLTE4MjEsNyArMTgyMSw3IEBACiAJewogCQlpZiAoKCpwdHIpLT5ub2RfdHlwZSAhPSBu
b2RfcnNlKQogCQl7Ci0JCQluID0gKFVTSE9SVCkgKCpwdHIpLT5ub2RfYXJnW1NUUkVBTV9JTkRF
WCgoKnB0cikpXTsKKwkJCW4gPSAoVVNIT1JUKShJUFRSKSAoKnB0ciktPm5vZF9hcmdbU1RSRUFN
X0lOREVYKCgqcHRyKSldOwogCQkJY3NiLT5jc2JfcnB0W25dLmNzYl9mbGFncyAmPSB+Y3NiX2Fj
dGl2ZTsKIAkJfQogCX0KQEAgLTE4NjIsMTIgKzE4NjIsMTIgQEAKIAogCXN3aXRjaCAobm9kZS0+
bm9kX3R5cGUpIHsKIAljYXNlIG5vZF9maWVsZDoKLQkJbiA9IChVU0hPUlQpIG5vZGUtPm5vZF9h
cmdbZV9mbGRfc3RyZWFtXTsKKwkJbiA9IChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9m
bGRfc3RyZWFtXTsKIAkJU0VUX0RFUF9CSVQoZGVwZW5kZW5jaWVzLCBuKTsKIAkJcmV0dXJuOwog
CiAJY2FzZSBub2RfZGJrZXk6Ci0JCW4gPSAoVVNIT1JUKSBub2RlLT5ub2RfYXJnWzBdOworCQlu
ID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1swXTsKIAkJU0VUX0RFUF9CSVQoZGVwZW5k
ZW5jaWVzLCBuKTsKIAkJcmV0dXJuOwogCkBAIC0xOTIzLDcgKzE5MjMsNyBAQAogCiAJZm9yIChw
dHIgPSByc2UtPnJzZV9yZWxhdGlvbiwgZW5kID0gcHRyICsgcnNlLT5yc2VfY291bnQ7IHB0ciA8
IGVuZDsgcHRyKyspIHsKIAkJaWYgKCgqcHRyKS0+bm9kX3R5cGUgIT0gbm9kX3JzZSkgewotCQkJ
biA9IChVU0hPUlQpICgqcHRyKS0+bm9kX2FyZ1tTVFJFQU1fSU5ERVgoKCpwdHIpKV07CisJCQlu
ID0gKFVTSE9SVCkoSVBUUikgKCpwdHIpLT5ub2RfYXJnW1NUUkVBTV9JTkRFWCgoKnB0cikpXTsK
IAkJCUNMRUFSX0RFUF9CSVQoZGVwZW5kZW5jaWVzLCBuKTsKIAkJfQogCX0KQEAgLTE5NTEsNyAr
MTk1MSw3IEBACiAKIAlpZiAobm9kZS0+bm9kX3R5cGUgPT0gbm9kX3JlbGF0aW9uKSB7CiAJCWFz
c2VydChzdHJlYW1zWzBdIDwgTUFYX1NUUkVBTVMgJiYgc3RyZWFtc1swXSA8IE1BWF9VQ0hBUik7
Ci0JCXN0cmVhbXNbKytzdHJlYW1zWzBdXSA9IChVQ0hBUikgbm9kZS0+bm9kX2FyZ1tlX3JlbF9z
dHJlYW1dOworCQlzdHJlYW1zWysrc3RyZWFtc1swXV0gPSAoVUNIQVIpKElQVFIpIG5vZGUtPm5v
ZF9hcmdbZV9yZWxfc3RyZWFtXTsKIAl9CiAJZWxzZSBpZiAobm9kZS0+bm9kX3R5cGUgPT0gbm9k
X3VuaW9uKSB7CiAJCWNsYXVzZXMgPSBub2RlLT5ub2RfYXJnW2VfdW5pX2NsYXVzZXNdOwpAQCAt
MTk5MSw3ICsxOTkxLDcgQEAKIAkJbm9kZSA9ICpwdHI7CiAJCWlmIChub2RlLT5ub2RfdHlwZSAh
PSBub2RfcnNlKSB7CiAJCQlhc3NlcnQoc3RyZWFtc1swXSA8IE1BWF9TVFJFQU1TICYmIHN0cmVh
bXNbMF0gPCBNQVhfVUNIQVIpOwotCQkJc3RyZWFtc1srK3N0cmVhbXNbMF1dID0gKFVDSEFSKSBu
b2RlLT5ub2RfYXJnW1NUUkVBTV9JTkRFWChub2RlKV07CisJCQlzdHJlYW1zWysrc3RyZWFtc1sw
XV0gPSAoVUNIQVIpKElQVFIpIG5vZGUtPm5vZF9hcmdbU1RSRUFNX0lOREVYKG5vZGUpXTsKIAkJ
fQogCQllbHNlIHsKIAkJCWNvbXB1dGVfcnNlX3N0cmVhbXMoY3NiLCAoUlNFKSBub2RlLCBzdHJl
YW1zKTsKQEAgLTMyODksNyArMzI4OSw3IEBACiAJSlJEX05PRCBkYmtleV90ZW1wLCAqcHRyLCAq
ZW5kOwogCURFVl9CTEtDSEsoZGJrZXksIHR5cGVfbm9kKTsKIAlpZiAoZGJrZXktPm5vZF90eXBl
ID09IG5vZF9kYmtleSkgewotCQlpZiAoKFVTSE9SVCkgZGJrZXktPm5vZF9hcmdbMF0gPT0gc3Ry
ZWFtKQorCQlpZiAoKFVTSE9SVCkoSVBUUikgZGJrZXktPm5vZF9hcmdbMF0gPT0gc3RyZWFtKQog
CQkJcmV0dXJuIGRia2V5OwogCQllbHNlIHsKIAkJCSpwb3NpdGlvbiA9ICpwb3NpdGlvbiArIDE7
CkBAIC0zNTUwLDcgKzM1NTAsNyBAQAogCiAJCXRlbXBbMF0rKzsKIAkJcmVsYXRpb25fbm9kZSA9
IHBsYW5fbm9kZS0+bm9kX2FyZ1tlX3JldHJpZXZlX3JlbGF0aW9uXTsKLQkJdGVtcFt0ZW1wWzBd
XSA9IChVQ0hBUikgcmVsYXRpb25fbm9kZS0+bm9kX2FyZ1tlX3JlbF9zdHJlYW1dOworCQl0ZW1w
W3RlbXBbMF1dID0gKFVDSEFSKShJUFRSKSByZWxhdGlvbl9ub2RlLT5ub2RfYXJnW2VfcmVsX3N0
cmVhbV07CiAJfQogCiAJLy8ganVzdCBiZWNhdXNlIHRoZSB1c2VyIHNwZWNpZmllZCBhIGpvaW4g
ZG9lcyBub3QgbWVhbiB0aGF0IApAQCAtMzcyNCw3ICszNzI0LDcgQEAKIAlyc2ItPnJzYl90eXBl
ID0gcnNiX2FnZ3JlZ2F0ZTsKIAlhc3NlcnQoKGludClub2RlLT5ub2RfYXJnW2VfYWdnX3N0cmVh
bV0gPD0gTUFYX1NUUkVBTVMpOwogCWFzc2VydCgoaW50KW5vZGUtPm5vZF9hcmdbZV9hZ2dfc3Ry
ZWFtXSA8PSBNQVhfVUNIQVIpOwotCXJzYi0+cnNiX3N0cmVhbSA9IChVQ0hBUikgbm9kZS0+bm9k
X2FyZ1tlX2FnZ19zdHJlYW1dOworCXJzYi0+cnNiX3N0cmVhbSA9IChVQ0hBUikoSVBUUikgbm9k
ZS0+bm9kX2FyZ1tlX2FnZ19zdHJlYW1dOwogCXJzYi0+cnNiX2Zvcm1hdCA9IGNzYi0+Y3NiX3Jw
dFtyc2ItPnJzYl9zdHJlYW1dLmNzYl9mb3JtYXQ7CiAJcnNiLT5yc2JfbmV4dCA9IE9QVF9jb21w
aWxlKHRkYmIsIGNzYiwgcnNlLCBOVUxMKTsKIAlyc2ItPnJzYl9hcmdbMF0gPSAoUlNCKSBub2Rl
OwpAQCAtNDA4OCw4ICs0MDg4LDggQEAKIAkJIGlkeC0+aWR4X3JwdDsgcHRyIDwgZW5kOyBwdHIr
KywgaWR4X3RhaWwrKykgewogCQlub2RlID0gKnB0cjsKIAkJaWYgKG5vZGUtPm5vZF90eXBlICE9
IG5vZF9maWVsZAotCQkJfHwgKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dICE9
IHN0cmVhbQotCQkJfHwgKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9pZF0gIT0gaWR4X3Rh
aWwtPmlkeF9maWVsZAorCQkJfHwgKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9z
dHJlYW1dICE9IHN0cmVhbQorCQkJfHwgKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2Zs
ZF9pZF0gIT0gaWR4X3RhaWwtPmlkeF9maWVsZAogCQkJfHwgcHRyWzIqc29ydC0+bm9kX2NvdW50
XSAvKiBkbyBub3QgdXNlIGluZGV4IGlmIE5VTExTIEZJUlNUIGlzIHVzZWQgKi8KICNpZmRlZiBT
Q1JPTExBQkxFX0NVUlNPUlMKIAkJCSkKQEAgLTQyNDksNyArNDI0OSw3IEBACiAJCXsKIAkJCXN0
cmVhbV9wdHJbaV0tPnN0cmVhbV9yc2IgPSBOVUxMOwogCQkJc3RyZWFtX3B0cltpXS0+c3RyZWFt
X251bSA9Ci0JCQkJKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tTVFJFQU1fSU5ERVgobm9kZSldOwor
CQkJCShVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbU1RSRUFNX0lOREVYKG5vZGUpXTsKIAkJ
fQogCX0KIApAQCAtNDMyNywxMCArNDMyNywxMCBAQAogCVNFVF9UREJCKHRkYmIpOwogCWNzYiA9
IG9wdC0+b3B0X2NzYjsJCiAJcHJvY2VkdXJlID0gTUVUX2xvb2t1cF9wcm9jZWR1cmVfaWQodGRi
YiwKLQkgICAoU1NIT1JUKW5vZGUtPm5vZF9hcmdbZV9wcmNfcHJvY2VkdXJlXSwgRkFMU0UsIEZB
TFNFLCAwKTsKKwkgICAoU1NIT1JUKShJUFRSKW5vZGUtPm5vZF9hcmdbZV9wcmNfcHJvY2VkdXJl
XSwgRkFMU0UsIEZBTFNFLCAwKTsKIAlyc2IgPSBGQl9ORVdfUlBUKCp0ZGJiLT50ZGJiX2RlZmF1
bHQsIFJTQl9QUkNfY291bnQpIFJzYigpOwogCXJzYi0+cnNiX3R5cGUgPSByc2JfcHJvY2VkdXJl
OwotCXJzYi0+cnNiX3N0cmVhbSA9IChVQ0hBUikgbm9kZS0+bm9kX2FyZ1tlX3ByY19zdHJlYW1d
OworCXJzYi0+cnNiX3N0cmVhbSA9IChVQ0hBUikoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX3ByY19z
dHJlYW1dOwogCXJzYi0+cnNiX3Byb2NlZHVyZSA9IHByb2NlZHVyZTsKIAlyc2ItPnJzYl9mb3Jt
YXQgPSBwcm9jZWR1cmUtPnByY19mb3JtYXQ7CiAJcnNiLT5yc2JfaW1wdXJlID0gQ01QX2ltcHVy
ZShjc2IsIHNpemVvZihzdHJ1Y3QgaXJzYl9wcm9jZWR1cmUpKTsKQEAgLTQ5NDMsOCArNDk0Myw4
IEBACiAJCQlmb3IgKG5vZGVfcHRyID0gc29ydC0+bm9kX2FyZzsgbm9kZV9wdHIgPCBlbmRfbm9k
ZTsgbm9kZV9wdHIrKykgewogCQkJCW5vZGUgPSAqbm9kZV9wdHI7CiAJCQkJaWYgKG5vZGUtPm5v
ZF90eXBlID09IG5vZF9maWVsZAotCQkJCQkmJiAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfZmxk
X3N0cmVhbV0gPT0gKnB0cgotCQkJCQkmJiAoVVNIT1JUKSBub2RlLT5ub2RfYXJnW2VfZmxkX2lk
XSA9PSBpZCkgeworCQkJCQkmJiAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfZmxkX3N0
cmVhbV0gPT0gKnB0cgorCQkJCQkmJiAoVVNIT1JUKShJUFRSKSBub2RlLT5ub2RfYXJnW2VfZmxk
X2lkXSA9PSBpZCkgewogCQkJCQlkZXNjID0gJmRlc2NyaXB0b3I7CiAJCQkJCUNNUF9nZXRfZGVz
Yyh0ZGJiLCBjc2IsIG5vZGUsIGRlc2MpOwogCQkJCQkvKiBJbnRlcm5hdGlvbmFsIHR5cGUgdGV4
dCBoYXMgYSBjb21wdXRlZCBrZXkgKi8KQEAgLTUwNDEsOCArNTA0MSw4IEBACiAJCW1hcF9pdGVt
LT5zbWJfZGVzYy5kc2NfYWRkcmVzcyA9IChVQ0hBUiAqKSBtYXBfbGVuZ3RoOwogCQltYXBfbGVu
Z3RoICs9IGRlc2MtPmRzY19sZW5ndGg7CiAJCWlmIChub2RlLT5ub2RfdHlwZSA9PSBub2RfZmll
bGQpIHsKLQkJCW1hcF9pdGVtLT5zbWJfc3RyZWFtID0gKFVTSE9SVCkgbm9kZS0+bm9kX2FyZ1tl
X2ZsZF9zdHJlYW1dOwotCQkJbWFwX2l0ZW0tPnNtYl9maWVsZF9pZCA9IChVU0hPUlQpIG5vZGUt
Pm5vZF9hcmdbZV9mbGRfaWRdOworCQkJbWFwX2l0ZW0tPnNtYl9zdHJlYW0gPSAoVVNIT1JUKShJ
UFRSKSBub2RlLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV07CisJCQltYXBfaXRlbS0+c21iX2ZpZWxk
X2lkID0gKFVTSE9SVCkoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX2ZsZF9pZF07CiAJCX0KIAl9CiAK
QEAgLTUwNTQsOCArNTA1NCw4IEBACiAgICBmaWVsZCBoYXMgYWxyZWFkeSBiZWVuIG1lbnRpb25l
ZCBhcyBhIHNvcnQga2V5LCBkb24ndCBib3RoZXIgdG8gcmVwZWF0CiAgICBpdC4gKi8KIAl3aGls
ZSAoc3RyZWFtX3N0YWNrKSB7Ci0JCWlkID0gKFVTSE9SVCkgTExTX1BPUCgmaWRfc3RhY2spOwot
CQlzdHJlYW0gPSAoVVNIT1JUKSBMTFNfUE9QKCZzdHJlYW1fc3RhY2spOworCQlpZCA9IChVU0hP
UlQpKElQVFIpIExMU19QT1AoJmlkX3N0YWNrKTsKKwkJc3RyZWFtID0gKFVTSE9SVCkoSVBUUikg
TExTX1BPUCgmc3RyZWFtX3N0YWNrKTsKIAkJZm9ybWF0ID0gQ01QX2Zvcm1hdCh0ZGJiLCBjc2Is
IHN0cmVhbSk7CiAJCWRlc2MgPSAmZm9ybWF0LT5mbXRfZGVzY1tpZF07CiAJCWlmIChpZCA+PSBm
b3JtYXQtPmZtdF9jb3VudCB8fCBkZXNjLT5kc2NfbGVuZ3RoID09IDApCkBAIC01Mzg0LDcgKzUz
ODQsNyBAQAogCXJzYiA9IEZCX05FV19SUFQoKnRkYmItPnRkYmJfZGVmYXVsdCwgY291bnQgKyBu
c3RyZWFtcyArIDEpIFJzYigpOwogCXJzYi0+cnNiX3R5cGUgPSByc2JfdW5pb247CiAJcnNiLT5y
c2JfY291bnQgPSBjb3VudDsKLQlyc2ItPnJzYl9zdHJlYW0gPSAoVUNIQVIpIHVuaW9uX25vZGUt
Pm5vZF9hcmdbZV91bmlfc3RyZWFtXTsKKwlyc2ItPnJzYl9zdHJlYW0gPSAoVUNIQVIpKElQVFIp
IHVuaW9uX25vZGUtPm5vZF9hcmdbZV91bmlfc3RyZWFtXTsKIAlyc2ItPnJzYl9mb3JtYXQgPSBj
c2ItPmNzYl9ycHRbcnNiLT5yc2Jfc3RyZWFtXS5jc2JfZm9ybWF0OwogCXJzYi0+cnNiX2ltcHVy
ZSA9IENNUF9pbXB1cmUoY3NiLCBzaXplb2Yoc3RydWN0IGlyc2IpKTsKIAlyc2JfcHRyID0gcnNi
LT5yc2JfYXJnOwpAQCAtNTkyNiw4ICs1OTI2LDggQEAKIAlmaWVsZCA9IGJvb2xlYW4tPm5vZF9h
cmdbMF07CiAJaWYgKGZpZWxkLT5ub2RfdHlwZSAhPSBub2RfZmllbGQpCiAJCXJldHVybiBOVUxM
OwotCWlmICgoVVNIT1JUKSBmaWVsZC0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dICE9IHN0cmVhbSB8
fAotCQkoVVNIT1JUKSBmaWVsZC0+bm9kX2FyZ1tlX2ZsZF9pZF0gIT0gaWR4LT5pZHhfcnB0WzBd
LmlkeF9maWVsZCkKKwlpZiAoKFVTSE9SVCkoSVBUUikgZmllbGQtPm5vZF9hcmdbZV9mbGRfc3Ry
ZWFtXSAhPSBzdHJlYW0gfHwKKwkJKFVTSE9SVCkoSVBUUikgZmllbGQtPm5vZF9hcmdbZV9mbGRf
aWRdICE9IGlkeC0+aWR4X3JwdFswXS5pZHhfZmllbGQpCiAJCXJldHVybiBOVUxMOwogCW5vZGUg
PSBtYWtlX2luZGV4X25vZGUodGRiYiwgcmVsYXRpb24sIG9wdC0+b3B0X2NzYiwgaWR4KTsKIAly
ZXRyaWV2YWwgPSAoSVJCKSBub2RlLT5ub2RfYXJnW2VfaWR4X3JldHJpZXZhbF07CkBAIC01OTk1
LDggKzU5OTUsOCBAQAogCQkJcmV0dXJuIE5VTEw7CiAJfQogCi0JaWYgKChVU0hPUlQpIGZpZWxk
LT5ub2RfYXJnW2VfZmxkX3N0cmVhbV0gIT0gc3RyZWFtIHx8Ci0JCShVU0hPUlQpIGZpZWxkLT5u
b2RfYXJnW2VfZmxkX2lkXSAhPSBpZHgtPmlkeF9ycHRbMF0uaWR4X2ZpZWxkCisJaWYgKChVU0hP
UlQpKElQVFIpIGZpZWxkLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV0gIT0gc3RyZWFtIHx8CisJCShV
U0hPUlQpKElQVFIpIGZpZWxkLT5ub2RfYXJnW2VfZmxkX2lkXSAhPSBpZHgtPmlkeF9ycHRbMF0u
aWR4X2ZpZWxkCiAJCXx8ICEoaWR4LT5pZHhfcnB0WzBdLmlkeF9pdHlwZSA9PSBpZHhfc3RyaW5n
CiAJCQkgfHwgaWR4LT5pZHhfcnB0WzBdLmlkeF9pdHlwZSA9PSBpZHhfYnl0ZV9hcnJheQogCQkJ
IHx8IGlkeC0+aWR4X3JwdFswXS5pZHhfaXR5cGUgPT0gaWR4X21ldGFkYXRhCkBAIC02MDk0LDEw
ICs2MDk0LDEwIEBACiAJCWlmIChhY2Nlc3NfdHlwZSkgewogCQkJZm9yIChhcmcgPSBhY2Nlc3Nf
dHlwZS0+bm9kX2FyZywgZW5kID0gYXJnICsgcGxhbl9jb3VudDsKIAkJCQkgYXJnIDwgZW5kOyBh
cmcgKz0gMykgewotCQkJCWlmIChyZWxhdGlvbl9pZCAhPSAoU1NIT1JUKSAqIGFyZykKKwkJCQlp
ZiAocmVsYXRpb25faWQgIT0gKFNTSE9SVCkoSVBUUikgKiBhcmcpCiAJCQkJCS8qIGluZGV4ICVz
IGNhbm5vdCBiZSB1c2VkIGluIHRoZSBzcGVjaWZpZWQgcGxhbiAqLwogCQkJCQlFUlJfcG9zdChn
ZHNfaW5kZXhfdW51c2VkLCBnZHNfYXJnX3N0cmluZywgKihhcmcgKyAyKSwgMCk7Ci0JCQkJaWYg
KGlkeC0+aWR4X2lkID09IChVU0hPUlQpICogKGFyZyArIDEpKQorCQkJCWlmIChpZHgtPmlkeF9p
ZCA9PSAoVVNIT1JUKShJUFRSKSAqIChhcmcgKyAxKSkKIAkJCQkJaWYgKGFjY2Vzc190eXBlLT5u
b2RfdHlwZSA9PSBub2RfbmF2aWdhdGlvbmFsKQogCQkJCQkJaWR4LT5pZHhfcnVudGltZV9mbGFn
cyB8PSBpZHhfcGxhbl9uYXZpZ2F0ZTsKIAkJCQkJZWxzZQkJLyogbm9kX2luZGljZXMgKi8KQEAg
LTYxNjksMTMgKzYxNjksMTMgQEAKIAkJICAgSWYgbGVmdCBzaWRlIGlzIHN0aWxsIG5vdCBhIGZp
ZWxkLCBnaXZlIHVwICovCiAKIAkJaWYgKG1hdGNoLT5ub2RfdHlwZSAhPSBub2RfZmllbGQgfHwK
LQkJCShVU0hPUlQpIG1hdGNoLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV0gIT0gc3RyZWFtIHx8CisJ
CQkoVVNIT1JUKShJUFRSKSBtYXRjaC0+bm9kX2FyZ1tlX2ZsZF9zdHJlYW1dICE9IHN0cmVhbSB8
fAogCQkJIWNvbXB1dGFibGUob3B0LT5vcHRfY3NiLCB2YWx1ZSwgc3RyZWFtLCB0cnVlLCBmYWxz
ZSkpCiAJCXsKIAkJCW1hdGNoID0gdmFsdWU7CiAJCQl2YWx1ZSA9IGJvb2xlYW4tPm5vZF9hcmdb
MF07CiAJCQlpZiAobWF0Y2gtPm5vZF90eXBlICE9IG5vZF9maWVsZCB8fAotCQkJCShVU0hPUlQp
IG1hdGNoLT5ub2RfYXJnW2VfZmxkX3N0cmVhbV0gIT0gc3RyZWFtIHx8CisJCQkJKFVTSE9SVCko
SVBUUikgbWF0Y2gtPm5vZF9hcmdbZV9mbGRfc3RyZWFtXSAhPSBzdHJlYW0gfHwKIAkJCQkhY29t
cHV0YWJsZShvcHQtPm9wdF9jc2IsIHZhbHVlLCBzdHJlYW0sIHRydWUsIGZhbHNlKSkKIAkJCXsK
IAkJCQlyZXR1cm4gMDsKQEAgLTYxOTQsNyArNjE5NCw3IEBACiAjaWZkZWYgRVhQUkVTU0lPTl9J
TkRJQ0VTCiAJCQkoaWR4LT5pZHhfZXhwcmVzc2lvbiB8fAogI2VuZGlmCi0JCQkgKChVU0hPUlQp
IG1hdGNoLT5ub2RfYXJnW2VfZmxkX2lkXSA9PSBpZHgtPmlkeF9ycHRbaV0uaWR4X2ZpZWxkKQor
CQkJICgoVVNIT1JUKShJUFRSKSBtYXRjaC0+bm9kX2FyZ1tlX2ZsZF9pZF0gPT0gaWR4LT5pZHhf
cnB0W2ldLmlkeF9maWVsZCkKICNpZmRlZiBFWFBSRVNTSU9OX0lORElDRVMKIAkJCSkKICNlbmRp
ZgpAQCAtNjU4Miw3ICs2NTgyLDcgQEAKIAkJcmV0dXJuIEZBTFNFOwogCWZvciAoc3RyZWFtcyA9
IHJpdmVyLT5yaXZfc3RyZWFtcywgZW5kID0KIAkJIHN0cmVhbXMgKyByaXZlci0+cml2X2NvdW50
OyBzdHJlYW1zIDwgZW5kOyBzdHJlYW1zKyspCi0JCWlmICgoVVNIT1JUKSBub2RlLT5ub2RfYXJn
W2VfZmxkX3N0cmVhbV0gPT0gKnN0cmVhbXMpCisJCWlmICgoVVNIT1JUKShJUFRSKSBub2RlLT5u
b2RfYXJnW2VfZmxkX3N0cmVhbV0gPT0gKnN0cmVhbXMpCiAJCQlyZXR1cm4gVFJVRTsKIAlyZXR1
cm4gRkFMU0U7CiB9CkBAIC02Nzc5LDcgKzY3NzksNyBAQAogCQkgcHRyIDwgZW5kOyBwdHIrKykg
ewogCQlub2RlID0gKnB0cjsKIAkJaWYgKG5vZGUtPm5vZF90eXBlICE9IG5vZF9yc2UpIHsKLQkJ
CXN0cmVhbSA9IChVU0hPUlQpIG5vZGUtPm5vZF9hcmdbU1RSRUFNX0lOREVYKG5vZGUpXTsKKwkJ
CXN0cmVhbSA9IChVU0hPUlQpKElQVFIpIG5vZGUtPm5vZF9hcmdbU1RSRUFNX0lOREVYKG5vZGUp
XTsKIAkJCWNzYi0+Y3NiX3JwdFtzdHJlYW1dLmNzYl9mbGFncyAmPSB+Y3NiX2FjdGl2ZTsKIAkJ
fQogCQllbHNlCmRpZmYgLXVyIGZpcmViaXJkLTEuNS4zLjQ4NzAtb3JpZy9zcmMvanJkL3Bhci5j
cHAgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvanJkL3Bhci5jcHAKLS0tIGZpcmViaXJkLTEuNS4z
LjQ4NzAtb3JpZy9zcmMvanJkL3Bhci5jcHAJMjAwNi0wMy0xNyAwMTozOTowNC4wMDAwMDAwMDAg
LTA1MDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9wYXIuY3BwCTIwMDYtMDMtMTcg
MDE6MzI6MzEuMDAwMDAwMDAwIC0wNTAwCkBAIC0yNTE4LDcgKzI1MTgsNyBAQAogCQlub2RlLT5u
b2RfYXJnW2VfYWdnX3JzZV0gPSBwYXJzZSh0ZGJiLCBjc2IsIFRZUEVfUlNFKTsKIAkJbm9kZS0+
bm9kX2FyZ1tlX2FnZ19ncm91cF0gPSBwYXJzZSh0ZGJiLCBjc2IsIE9USEVSKTsKIAkJbm9kZS0+
bm9kX2FyZ1tlX2FnZ19tYXBdID0KLQkJCXBhcl9tYXAodGRiYiwgY3NiLCAoVVNIT1JUKSBub2Rl
LT5ub2RfYXJnW2VfYWdnX3N0cmVhbV0pOworCQkJcGFyX21hcCh0ZGJiLCBjc2IsIChVU0hPUlQp
KElQVFIpIG5vZGUtPm5vZF9hcmdbZV9hZ2dfc3RyZWFtXSk7CiAJCWJyZWFrOwogCiAJY2FzZSBi
bHJfZ3JvdXBfYnk6CmRpZmYgLXVyIGZpcmViaXJkLTEuNS4zLjQ4NzAtb3JpZy9zcmMvanJkL3Jz
ZS5jcHAgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvanJkL3JzZS5jcHAKLS0tIGZpcmViaXJkLTEu
NS4zLjQ4NzAtb3JpZy9zcmMvanJkL3JzZS5jcHAJMjAwNi0wMy0xNyAwMTozOTowNC4wMDAwMDAw
MDAgLTA1MDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9yc2UuY3BwCTIwMDYtMDMt
MTcgMDE6MzI6MzEuMDAwMDAwMDAwIC0wNTAwCkBAIC03MzAsOCArNzMwLDggQEAKIAkJCQkvKiBJ
bml0aWFsaXplIHRoZSByZWNvcmQgbnVtYmVyIG9mIGVhY2ggc3RyZWFtIGluIHRoZSB1bmlvbiAq
LwogCiAJCQkJcHRyID0gJnJzYi0+cnNiX2FyZ1tyc2ItPnJzYl9jb3VudF07Ci0JCQkJZm9yIChl
bmQgPSBwdHIgKyAoVVNIT1JUKSAqIHB0cjsgKytwdHIgPD0gZW5kOykKLQkJCQkJcmVxdWVzdC0+
cmVxX3JwYlsoVVNIT1JUKSAqIHB0cl0ucnBiX251bWJlciA9IC0xOworCQkJCWZvciAoZW5kID0g
cHRyICsgKFVTSE9SVCkoSVBUUikgKiBwdHI7ICsrcHRyIDw9IGVuZDspCisJCQkJCXJlcXVlc3Qt
PnJlcV9ycGJbKFVTSE9SVCkoSVBUUikgKiBwdHJdLnJwYl9udW1iZXIgPSAtMTsKIAogCQkJCXJz
YiA9IHJzYi0+cnNiX2FyZ1swXTsKIAkJCX0KQEAgLTI5MTQsNyArMjkxNCw3IEBACiAJcmVxdWVz
dCA9IHRkYmItPnRkYmJfcmVxdWVzdDsKIAlzdGFjayA9IChMTFMpIHJzYi0+cnNiX2FyZ1tzdHJl
YW1zXTsKIAlmb3IgKDsgc3RhY2s7IHN0YWNrID0gc3RhY2stPmxsc19uZXh0KSB7Ci0JCXJwYiA9
ICZyZXF1ZXN0LT5yZXFfcnBiWyhVU0hPUlQpIHN0YWNrLT5sbHNfb2JqZWN0XTsKKwkJcnBiID0g
JnJlcXVlc3QtPnJlcV9ycGJbKFVTSE9SVCkoSVBUUikgc3RhY2stPmxsc19vYmplY3RdOwogCiAJ
CS8qIE1ha2Ugc3VyZSBhIHJlY29yZCBibG9jayBoYXMgYmVlbiBhbGxvY2F0ZWQuICBJZiB0aGVy
ZSBpc24ndAogCQkgICBvbmUsIGZpcnN0IGZpbmQgdGhlIGZvcm1hdCwgdGhlbiBhbGxvY2F0ZSB0
aGUgcmVjb3JkIGJsb2NrICovCkBAIC0yOTcyLDcgKzI5NzIsNyBAQAogCQkgICBsaXN0IHRoYXQg
Y29udGFpbnMgdGhlIGRhdGEgdG8gc2VuZCBiYWNrCiAJCSAqLwogCQlpZiAoSVNfSU5UTF9EQVRB
KCZpdGVtLT5zbWJfZGVzYykgJiYKLQkJCShVU0hPUlQpIGl0ZW0tPnNtYl9kZXNjLmRzY19hZGRy
ZXNzIDwKKwkJCShVU0hPUlQpKElQVFIpIGl0ZW0tPnNtYl9kZXNjLmRzY19hZGRyZXNzIDwKIAkJ
CW1hcC0+c21iX2tleV9sZW5ndGggKiBzaXplb2YoVUxPTkcpKSBjb250aW51ZTsKIAogCQlycGIg
PSAmcmVxdWVzdC0+cmVxX3JwYltpdGVtLT5zbWJfc3RyZWFtXTsKQEAgLTMyMzgsNyArMzIzOCw3
IEBACiAJCQkJICAgdGhlIHNvcnQgcmVjb3JkLCB0aGVuIHdhbnQgdG8gc29ydCBieSBsYW5ndWFn
ZSBkZXBlbmRlbnQgb3JkZXIgKi8KIAogCQkJCWlmIChJU19JTlRMX0RBVEEoJml0ZW0tPnNtYl9k
ZXNjKSAmJgotCQkJCQkoVVNIT1JUKSBpdGVtLT5zbWJfZGVzYy5kc2NfYWRkcmVzcyA8CisJCQkJ
CShVU0hPUlQpKElQVFIpIGl0ZW0tPnNtYl9kZXNjLmRzY19hZGRyZXNzIDwKIAkJCQkJbWFwLT5z
bWJfa2V5X2xlbmd0aCAqIHNpemVvZihVTE9ORykpIHsKIAkJCQkJSU5UTF9zdHJpbmdfdG9fa2V5
KHRkYmIsIElOVExfSU5ERVhfVFlQRSgmaXRlbS0+c21iX2Rlc2MpLAogCQkJCQkJCQkJICAgZnJv
bSwgJnRvLCBGQUxTRSk7CmRpZmYgLXVyIGZpcmViaXJkLTEuNS4zLjQ4NzAtb3JpZy9zcmMvanJk
L3NkbC5jcHAgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvanJkL3NkbC5jcHAKLS0tIGZpcmViaXJk
LTEuNS4zLjQ4NzAtb3JpZy9zcmMvanJkL3NkbC5jcHAJMjAwNi0wMy0xNyAwMTozOTowNC4wMDAw
MDAwMDAgLTA1MDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9zZGwuY3BwCTIwMDYt
MDMtMTcgMDE6MzI6MzEuMDAwMDAwMDAwIC0wNTAwCkBAIC02OTksNyArNjk5LDcgQEAKIAkJCX0K
IAkJCWVsZW1lbnRfZGVzYyA9IGFycmF5X2Rlc2MtPmFkc19ycHRbdmFsdWVdLmFkc19kZXNjOwog
CQkJZWxlbWVudF9kZXNjLmRzY19hZGRyZXNzID0gKEJMT0JfUFRSICopIGFyZy0+c2RsX2FyZ19h
cnJheSArCi0JCQkJKFNMT05HKSBlbGVtZW50X2Rlc2MuZHNjX2FkZHJlc3MgKworCQkJCShTTE9O
RykoSVBUUikgZWxlbWVudF9kZXNjLmRzY19hZGRyZXNzICsKIAkJCQkoYXJyYXlfZGVzYy0+YWRz
X2VsZW1lbnRfbGVuZ3RoICogc3Vic2NyaXB0KTsKIAogCQkJLyogSXMgdGhpcyBlbGVtZW50IHdp
dGhpbiB0aGUgYXJyYXkgYm91bmRzPyAqLwpkaWZmIC11ciBmaXJlYmlyZC0xLjUuMy40ODcwLW9y
aWcvc3JjL3FsaS9jb21tYW5kLmNwcCBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9xbGkvY29tbWFu
ZC5jcHAKLS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAtb3JpZy9zcmMvcWxpL2NvbW1hbmQuY3BwCTIw
MDYtMDMtMTcgMDE6Mzk6MDQuMDAwMDAwMDAwIC0wNTAwCisrKyBmaXJlYmlyZC0xLjUuMy40ODcw
L3NyYy9xbGkvY29tbWFuZC5jcHAJMjAwNi0wMy0xNyAwMTozMjozMy4wMDAwMDAwMDAgLTA1MDAK
QEAgLTMxMSwzMiArMzExLDMyIEBACiAJcHRyID0gbm9kZS0+c3luX2FyZzsKIAogCWZvciAoaSA9
IDA7IGkgPCBub2RlLT5zeW5fY291bnQ7IGkrKykgewotCQlmb28gPSAoVVNIT1JUKSAqIHB0cisr
OworCQlmb28gPSAoVVNIT1JUKShJUFRSKSAqIHB0cisrOwogCQlzdyA9IChFTlVNIHNldF90KSBm
b287CiAJCXZhbHVlID0gKnB0cisrOwogCQlzd2l0Y2ggKHN3KSB7CiAJCWNhc2Ugc2V0X2JscjoK
LQkJCVFMSV9ibHIgPSAoVVNIT1JUKSB2YWx1ZTsKKwkJCVFMSV9ibHIgPSAoVVNIT1JUKShJUFRS
KSB2YWx1ZTsKIAkJCWJyZWFrOwogCiAJCWNhc2Ugc2V0X3N0YXRpc3RpY3M6Ci0JCQlRTElfc3Rh
dGlzdGljcyA9IChVU0hPUlQpIHZhbHVlOworCQkJUUxJX3N0YXRpc3RpY3MgPSAoVVNIT1JUKShJ
UFRSKSB2YWx1ZTsKIAkJCWJyZWFrOwogCiAJCWNhc2Ugc2V0X2NvbHVtbnM6Ci0JCQlRTElfbmFt
ZV9jb2x1bW5zID0gUUxJX2NvbHVtbnMgPSAoVVNIT1JUKSB2YWx1ZTsKKwkJCVFMSV9uYW1lX2Nv
bHVtbnMgPSBRTElfY29sdW1ucyA9IChVU0hPUlQpKElQVFIpIHZhbHVlOwogCQkJYnJlYWs7CiAK
IAkJY2FzZSBzZXRfbGluZXM6Ci0JCQlRTElfbGluZXMgPSAoVVNIT1JUKSB2YWx1ZTsKKwkJCVFM
SV9saW5lcyA9IChVU0hPUlQpKElQVFIpIHZhbHVlOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBzZXRf
c2VtaToKLQkJCVFMSV9zZW1pID0gKFVTSE9SVCkgdmFsdWU7CisJCQlRTElfc2VtaSA9IChVU0hP
UlQpKElQVFIpIHZhbHVlOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBzZXRfZWNobzoKLQkJCVFMSV9l
Y2hvID0gKFVTSE9SVCkgdmFsdWU7CisJCQlRTElfZWNobyA9IChVU0hPUlQpKElQVFIpIHZhbHVl
OwogCQkJYnJlYWs7CiAKIAkJY2FzZSBzZXRfZm9ybToKQEAgLTM5OSw3ICszOTksNyBAQAogCQkJ
YnJlYWs7CiAKIAkJY2FzZSBzZXRfY291bnQ6Ci0JCQlRTElfY291bnQgPSAoVVNIT1JUKSB2YWx1
ZTsKKwkJCVFMSV9jb3VudCA9IChVU0hPUlQpKElQVFIpIHZhbHVlOwogCQkJYnJlYWs7CiAKIAkJ
Y2FzZSBzZXRfY2hhcnNldDoKZGlmZiAtdXIgZmlyZWJpcmQtMS41LjMuNDg3MC1vcmlnL3NyYy9x
bGkvZXhwYW5kLmNwcCBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9xbGkvZXhwYW5kLmNwcAotLS0g
ZmlyZWJpcmQtMS41LjMuNDg3MC1vcmlnL3NyYy9xbGkvZXhwYW5kLmNwcAkyMDA2LTAzLTE3IDAx
OjM5OjA0LjAwMDAwMDAwMCAtMDUwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvcWxpL2V4
cGFuZC5jcHAJMjAwNi0wMy0xNyAwMTozMjozMy4wMDAwMDAwMDAgLTA1MDAKQEAgLTIyMjAsNyAr
MjIyMCw3IEBACiAJZm9yIChpID0gMDsgaSA8IG5vZGUtPm5vZF9jb3VudDsgaSsrKSB7CiAJCWV4
cHIgPSAqc3luX3B0cisrOwogCQlpZiAoZXhwci0+c3luX3R5cGUgPT0gbm9kX3Bvc2l0aW9uKSB7
Ci0JCQlwb3NpdGlvbiA9IChVU0hPUlQpIGV4cHItPnN5bl9hcmdbMF07CisJCQlwb3NpdGlvbiA9
IChVU0hPUlQpKElQVFIpIGV4cHItPnN5bl9hcmdbMF07CiAJCQlpZiAoIWxpc3QgfHwgIXBvc2l0
aW9uIHx8IHBvc2l0aW9uID4gbGlzdC0+bm9kX2NvdW50KQogCQkJCUlCRVJST1IoMTUyKTsJLyog
TXNnMTUyIGludmFsaWQgT1JERVIgQlkgb3JkaW5hbCAqLwogCQkJaXRlbSA9IChJVE0pIGxpc3Qt
Pm5vZF9hcmdbcG9zaXRpb24gLSAxXTsKZGlmZiAtdXIgZmlyZWJpcmQtMS41LjMuNDg3MC1vcmln
L3NyYy9xbGkvbWV0YS5lcHAgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvcWxpL21ldGEuZXBwCi0t
LSBmaXJlYmlyZC0xLjUuMy40ODcwLW9yaWcvc3JjL3FsaS9tZXRhLmVwcAkyMDA2LTAzLTE3IDAx
OjM5OjA0LjAwMDAwMDAwMCAtMDUwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvcWxpL21l
dGEuZXBwCTIwMDYtMDMtMTcgMDE6MzI6MzMuMDAwMDAwMDAwIC0wNTAwCkBAIC0zNzk1LDcgKzM3
OTUsNyBAQAogCVJMQiBybGI7CiAKIAotCXByaXZpbGVnZXMgPSAoVVNIT1JUKSBub2RlLT5zeW5f
YXJnW3NfZ3JhbnRfcHJpdmlsZWdlc107CisJcHJpdmlsZWdlcyA9IChVU0hPUlQpKElQVFIpIG5v
ZGUtPnN5bl9hcmdbc19ncmFudF9wcml2aWxlZ2VzXTsKIAlyZWxhdGlvbiA9IChRTElfUkVMKSBu
b2RlLT5zeW5fYXJnW3NfZ3JhbnRfcmVsYXRpb25dOwogCXJlbGF0aW9uLT5yZWxfZGF0YWJhc2Ug
PSBkYXRhYmFzZSA9IHNldHVwX3VwZGF0ZShyZWxhdGlvbi0+cmVsX2RhdGFiYXNlKTsKIAlyZWxh
dGlvbl9uYW1lID0gcmVsYXRpb24tPnJlbF9zeW1ib2wtPnN5bV9zdHJpbmc7Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93546</attachid>
            <date>2006-08-05 15:44 0000</date>
            <desc>patch to fix compilation problems with gcc-4.1 on amd64</desc>
            <filename>firebird-1.5-gcc4-amd64.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtTmF1ciBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvYWxpY2UvYWxpY2UuY3BwIGZp
cmViaXJkLTEuNS4zLjQ4NzAvc3JjL2FsaWNlL2FsaWNlLmNwcAotLS0gZmlyZWJpcmQtMS41LjMu
NDg3MC5vbGQvc3JjL2FsaWNlL2FsaWNlLmNwcAkyMDA2LTA4LTA2IDA2OjQ3OjI2LjAwMDAwMDAw
MCArMDIwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvYWxpY2UvYWxpY2UuY3BwCTIwMDYt
MDgtMDYgMDc6NTk6MjcuMDAwMDAwMDAwICswMjAwCkBAIC0xMjksNyArMTI5LDcgQEAKIAkJQUxJ
Q0VfZ2ZpeCgJc2VydmljZS0+c3ZjX2FyZ2MsCiAJCQkJCXNlcnZpY2UtPnN2Y19hcmd2LAogCQkJ
CQlvdXRwdXRfdGhyZWFkLAotCQkJCQkoU0xPTkcpIHNlcnZpY2UpOworCQkJCQkoU0xPTkcpKElQ
VFIpIHNlcnZpY2UpOwogCiAvLyAgTWFyayBzZXJ2aWNlIHRocmVhZCBhcyBmaW5pc2hlZC4KIC8v
ICBJZiBzZXJ2aWNlIGlzIGRldGFjaGVkLCBjbGVhbnVwIG1lbW9yeSBiZWluZyB1c2VkIGJ5IHNl
cnZpY2UuCmRpZmYgLU5hdXIgZmlyZWJpcmQtMS41LjMuNDg3MC5vbGQvc3JjL2J1cnAvYnVycC5j
cHAgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvYnVycC9idXJwLmNwcAotLS0gZmlyZWJpcmQtMS41
LjMuNDg3MC5vbGQvc3JjL2J1cnAvYnVycC5jcHAJMjAwNi0wOC0wNiAwNjo0NzoyMC4wMDAwMDAw
MDAgKzAyMDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2J1cnAvYnVycC5jcHAJMjAwNi0w
OC0wNiAwNzo1ODo1NC4wMDAwMDAwMDAgKzAyMDAKQEAgLTE4MSw3ICsxODEsNyBAQAogCWludCBl
eGl0X2NvZGU7CiAKIAlleGl0X2NvZGUgPSBCVVJQX2diYWsoc2VydmljZS0+c3ZjX2FyZ2MsIHNl
cnZpY2UtPnN2Y19hcmd2LAotCQkJCQkJICBvdXRwdXRfbmV0d2FyZSwgKFNMT05HKSBzZXJ2aWNl
KTsKKwkJCQkJCSAgb3V0cHV0X25ldHdhcmUsIChTTE9ORykgKElQVFIpIHNlcnZpY2UpOwogCiAv
KiBNYXJrIHNlcnZpY2UgdGhyZWFkIGFzIGZpbmlzaGVkLiAqLwogLyogSWYgc2VydmljZSBpcyBk
ZXRhY2hlZCwgY2xlYW51cCBtZW1vcnkgYmVpbmcgdXNlZCBieSBzZXJ2aWNlLiAqLwpkaWZmIC1O
YXVyIGZpcmViaXJkLTEuNS4zLjQ4NzAub2xkL3NyYy9idXJwL2Nhbm9uaWNhbC5jcHAgZmlyZWJp
cmQtMS41LjMuNDg3MC9zcmMvYnVycC9jYW5vbmljYWwuY3BwCi0tLSBmaXJlYmlyZC0xLjUuMy40
ODcwLm9sZC9zcmMvYnVycC9jYW5vbmljYWwuY3BwCTIwMDYtMDgtMDYgMDY6NDc6MjAuMDAwMDAw
MDAwICswMjAwCisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9idXJwL2Nhbm9uaWNhbC5jcHAJ
MjAwNi0wOC0wNiAwNzo1NDoyNS4wMDAwMDAwMDAgKzAyMDAKQEAgLTUwMiw3ICs1MDIsNyBAQAog
CVVDSEFSICpwOwogCVNTSE9SVCBuOwogCi0JcCA9IGJ1ZmZlciArIChpbnQpIGRlc2MtPmRzY19h
ZGRyZXNzOworCXAgPSBidWZmZXIgKyAoaW50KSAoSVBUUilkZXNjLT5kc2NfYWRkcmVzczsKIAog
CXN3aXRjaCAoZGVzYy0+ZHNjX2R0eXBlKQogCXsKZGlmZiAtTmF1ciBmaXJlYmlyZC0xLjUuMy40
ODcwLm9sZC9zcmMvZHNxbC9kZGwuY3BwIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2RzcWwvZGRs
LmNwcAotLS0gZmlyZWJpcmQtMS41LjMuNDg3MC5vbGQvc3JjL2RzcWwvZGRsLmNwcAkyMDA2LTA4
LTA2IDA2OjQ3OjIwLjAwMDAwMDAwMCArMDIwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMv
ZHNxbC9kZGwuY3BwCTIwMDYtMDgtMDYgMDc6MzY6NDYuMDAwMDAwMDAwICswMjAwCkBAIC0xMTI2
LDEyICsxMTI2LDEyIEBACiAJaWYgKGNvbnN0YW50KQogCXsKIAkJcmVxdWVzdC0+YXBwZW5kX251
bWJlcihnZHNfZHluX3RyZ19zZXF1ZW5jZSwKLQkJCQkgICAoU1NIT1JUKShTTE9ORykgKGNvbnN0
YW50ID8gY29uc3RhbnQtPm5vZF9hcmdbMF0gOiAwKSk7CisJCQkJICAgKFNTSE9SVCkoU0xPTkcp
KElQVFIpIChjb25zdGFudCA/IGNvbnN0YW50LT5ub2RfYXJnWzBdIDogMCkpOwogCX0KIAogCWlm
ICgoY29uc3RhbnQgPSBub2RlLT5ub2RfYXJnW2VfY25zdHJfdHlwZV0pICE9IE5VTEwpCiAJewot
CQljb25zdCBTU0hPUlQgdHlwZSA9IChTU0hPUlQpKFNMT05HKSBjb25zdGFudC0+bm9kX2FyZ1sw
XTsKKwkJY29uc3QgU1NIT1JUIHR5cGUgPSAoU1NIT1JUKShTTE9ORykoSVBUUikgY29uc3RhbnQt
Pm5vZF9hcmdbMF07CiAJCXJlcXVlc3QtPmFwcGVuZF9udW1iZXIoZ2RzX2R5bl90cmdfdHlwZSwg
dHlwZSk7CiAJfQogCkBAIC0xMjcwLDcgKzEyNzAsNyBAQAogCiAJCQlzd2l0Y2ggKGVsZW1lbnQt
Pm5vZF90eXBlKSB7CiAJCQljYXNlIG5vZF9maWxlX2xlbmd0aDoKLQkJCQlzdGFydCA9IChTTE9O
RykgKGVsZW1lbnQtPm5vZF9hcmdbMF0pICsgMTsKKwkJCQlzdGFydCA9IChTTE9ORykgKElQVFIp
IChlbGVtZW50LT5ub2RfYXJnWzBdKSArIDE7CiAJCQkJYnJlYWs7CiAKIAkJCWRlZmF1bHQ6CkBA
IC0xMzM2LDI1ICsxMzM2LDI1IEBACiAKIAkJCWNhc2Ugbm9kX2dyb3VwX2NvbW1pdF93YWl0Ogog
CQkJCXJlcXVlc3QtPmFwcGVuZF91Y2hhcihnZHNfZHluX2xvZ19ncm91cF9jb21taXRfd2FpdCk7
Ci0JCQkJdGVtcF9sb25nID0gKFNMT05HKSAoZWxlbWVudC0+bm9kX2FyZ1swXSk7CisJCQkJdGVt
cF9sb25nID0gKFNMT05HKSAoSVBUUikgKGVsZW1lbnQtPm5vZF9hcmdbMF0pOwogCQkJCXJlcXVl
c3QtPmFwcGVuZF91bG9uZ193aXRoX2xlbmd0aCh0ZW1wX2xvbmcpOwogCQkJCWJyZWFrOwogCiAJ
CQljYXNlIG5vZF9jaGVja19wb2ludF9sZW46CiAJCQkJcmVxdWVzdC0+YXBwZW5kX3VjaGFyKGdk
c19keW5fbG9nX2NoZWNrX3BvaW50X2xlbmd0aCk7Ci0JCQkJdGVtcF9sb25nID0gKFNMT05HKSAo
ZWxlbWVudC0+bm9kX2FyZ1swXSk7CisJCQkJdGVtcF9sb25nID0gKFNMT05HKSAoSVBUUikgKGVs
ZW1lbnQtPm5vZF9hcmdbMF0pOwogCQkJCXJlcXVlc3QtPmFwcGVuZF91bG9uZ193aXRoX2xlbmd0
aCh0ZW1wX2xvbmcpOwogCQkJCWJyZWFrOwogCiAJCQljYXNlIG5vZF9udW1fbG9nX2J1ZmZlcnM6
CiAJCQkJcmVxdWVzdC0+YXBwZW5kX3VjaGFyKGdkc19keW5fbG9nX251bV9vZl9idWZmZXJzKTsK
LQkJCQl0ZW1wX3Nob3J0ID0gKFNTSE9SVCkoU0xPTkcpIChlbGVtZW50LT5ub2RfYXJnWzBdKTsK
KwkJCQl0ZW1wX3Nob3J0ID0gKFNTSE9SVCkoU0xPTkcpIChJUFRSKSAoZWxlbWVudC0+bm9kX2Fy
Z1swXSk7CiAJCQkJcmVxdWVzdC0+YXBwZW5kX3VzaG9ydF93aXRoX2xlbmd0aCh0ZW1wX3Nob3J0
KTsKIAkJCQlicmVhazsKIAogCQkJY2FzZSBub2RfbG9nX2J1ZmZlcl9zaXplOgogCQkJCXJlcXVl
c3QtPmFwcGVuZF91Y2hhcihnZHNfZHluX2xvZ19idWZmZXJfc2l6ZSk7Ci0JCQkJdGVtcF9zaG9y
dCA9IChTU0hPUlQpKFNMT05HKSAoZWxlbWVudC0+bm9kX2FyZ1swXSk7CisJCQkJdGVtcF9zaG9y
dCA9IChTU0hPUlQpKFNMT05HKSAoSVBUUikgKGVsZW1lbnQtPm5vZF9hcmdbMF0pOwogCQkJCXJl
cXVlc3QtPmFwcGVuZF91c2hvcnRfd2l0aF9sZW5ndGgodGVtcF9zaG9ydCk7CiAJCQkJYnJlYWs7
CiAKQEAgLTE2MzcsMTEgKzE2MzcsMTEgQEAKIAkJcmVxdWVzdC0+YXBwZW5kX251bWJlcihnZHNf
ZHluX2RlZl9kaW1lbnNpb24sIHBvc2l0aW9uKTsKIAkJRFNRTF9OT0QgZWxlbWVudCA9ICpwdHIr
KzsKIAkJcmVxdWVzdC0+YXBwZW5kX3VjaGFyKGdkc19keW5fZGltX2xvd2VyKTsKLQkJU0xPTkcg
bHJhbmdlID0gKFNMT05HKSAoZWxlbWVudC0+bm9kX2FyZ1swXSk7CisJCVNMT05HIGxyYW5nZSA9
IChTTE9ORykgKElQVFIpIChlbGVtZW50LT5ub2RfYXJnWzBdKTsKIAkJcmVxdWVzdC0+YXBwZW5k
X3Vsb25nX3dpdGhfbGVuZ3RoKGxyYW5nZSk7CiAJCWVsZW1lbnQgPSAqcHRyOwogCQlyZXF1ZXN0
LT5hcHBlbmRfdWNoYXIoZ2RzX2R5bl9kaW1fdXBwZXIpOwotCQlTTE9ORyBocmFuZ2UgPSAoU0xP
TkcpIChlbGVtZW50LT5ub2RfYXJnWzBdKTsKKwkJU0xPTkcgaHJhbmdlID0gKFNMT05HKSAoSVBU
UikgKGVsZW1lbnQtPm5vZF9hcmdbMF0pOwogCQlyZXF1ZXN0LT5hcHBlbmRfdWxvbmdfd2l0aF9s
ZW5ndGgoaHJhbmdlKTsKIAkJcmVxdWVzdC0+YXBwZW5kX3VjaGFyKGdkc19keW5fZW5kKTsKIAkJ
aWYgKGxyYW5nZSA+PSBocmFuZ2UpCkBAIC0yMDYyLDkgKzIwNjIsOSBAQAogCXJlcXVlc3QtPmFw
cGVuZF9jc3RyaW5nKGdkc19keW5fZGVmX2ZpbHRlciwKIAkJCQkoKFNUUikgKHB0cltlX2ZpbHRl
cl9uYW1lXSkpLT5zdHJfZGF0YSk7CiAJcmVxdWVzdC0+YXBwZW5kX251bWJlcihnZHNfZHluX2Zp
bHRlcl9pbl9zdWJ0eXBlLAotCQkJICAgKFNTSE9SVCkoU0xPTkcpICgocHRyW2VfZmlsdGVyX2lu
X3R5cGVdKS0+bm9kX2FyZ1swXSkpOworCQkJICAgKFNTSE9SVCkoU0xPTkcpIChJUFRSKSAoKHB0
cltlX2ZpbHRlcl9pbl90eXBlXSktPm5vZF9hcmdbMF0pKTsKIAlyZXF1ZXN0LT5hcHBlbmRfbnVt
YmVyKGdkc19keW5fZmlsdGVyX291dF9zdWJ0eXBlLAotCQkJICAgKFNTSE9SVCkoU0xPTkcpICgo
cHRyW2VfZmlsdGVyX291dF90eXBlXSktPm5vZF9hcmdbMF0pKTsKKwkJCSAgIChTU0hPUlQpKFNM
T05HKSAoSVBUUikgKChwdHJbZV9maWx0ZXJfb3V0X3R5cGVdKS0+bm9kX2FyZ1swXSkpOwogCXJl
cXVlc3QtPmFwcGVuZF9jc3RyaW5nKGdkc19keW5fZnVuY19lbnRyeV9wb2ludCwKIAkJCQkoKFNU
UikgKHB0cltlX2ZpbHRlcl9lbnRyeV9wdF0pKS0+c3RyX2RhdGEpOwogCXJlcXVlc3QtPmFwcGVu
ZF9jc3RyaW5nKGdkc19keW5fZnVuY19tb2R1bGVfbmFtZSwKQEAgLTI2NzAsMTYgKzI2NzAsMTYg
QEAKIAkJCQkgIGdkc19hcmdfZ2RzLCBnZHNfZHNxbF9zaGFkb3dfbnVtYmVyX2VyciwgMCk7CiAJ
fQogCi0JcmVxdWVzdC0+YXBwZW5kX251bWJlcihnZHNfZHluX2RlZl9zaGFkb3csIChTU0hPUlQp
KFNMT05HKSAocHRyW2Vfc2hhZG93X251bWJlcl0pKTsKKwlyZXF1ZXN0LT5hcHBlbmRfbnVtYmVy
KGdkc19keW5fZGVmX3NoYWRvdywgKFNTSE9SVCkoU0xPTkcpIChJUFRSKSAocHRyW2Vfc2hhZG93
X251bWJlcl0pKTsKIAlyZXF1ZXN0LT5hcHBlbmRfY3N0cmluZyhnZHNfZHluX2RlZl9maWxlLCAo
KFNUUikgKHB0cltlX3NoYWRvd19uYW1lXSkpLT5zdHJfZGF0YSk7CiAJcmVxdWVzdC0+YXBwZW5k
X251bWJlcihnZHNfZHluX3NoYWRvd19tYW5fYXV0bywKLQkJCSAgIChTU0hPUlQpKFNMT05HKSAo
KHB0cltlX3NoYWRvd19tYW5fYXV0b10pLT5ub2RfYXJnWzBdKSk7CisJCQkgICAoU1NIT1JUKShT
TE9ORykgKElQVFIpICgocHRyW2Vfc2hhZG93X21hbl9hdXRvXSktPm5vZF9hcmdbMF0pKTsKIAly
ZXF1ZXN0LT5hcHBlbmRfbnVtYmVyKGdkc19keW5fc2hhZG93X2NvbmRpdGlvbmFsLAotCQkJICAg
KFNTSE9SVCkoU0xPTkcpICgocHRyW2Vfc2hhZG93X2NvbmRpdGlvbmFsXSktPm5vZF9hcmdbMF0p
KTsKKwkJCSAgIChTU0hPUlQpKFNMT05HKSAoSVBUUikgKChwdHJbZV9zaGFkb3dfY29uZGl0aW9u
YWxdKS0+bm9kX2FyZ1swXSkpOwogCiAJcmVxdWVzdC0+YXBwZW5kX2ZpbGVfc3RhcnQoMCk7CiAK
LQlTTE9ORyBsZW5ndGggPSAoU0xPTkcpIHB0cltlX3NoYWRvd19sZW5ndGhdOworCVNMT05HIGxl
bmd0aCA9IChTTE9ORykgKElQVFIpIHB0cltlX3NoYWRvd19sZW5ndGhdOwogCXJlcXVlc3QtPmFw
cGVuZF9maWxlX2xlbmd0aChsZW5ndGgpOwogCiAJcmVxdWVzdC0+YXBwZW5kX3VjaGFyKGdkc19k
eW5fZW5kKTsKQEAgLTI4MDYsMTUgKzI4MDYsMTUgQEAKIAogCWlmIChjb25zdGFudCA9IG5vZGUt
Pm5vZF9hcmdbZV90cmdfYWN0aXZlXSkKIAkJcmVxdWVzdC0+YXBwZW5kX251bWJlcihnZHNfZHlu
X3RyZ19pbmFjdGl2ZSwKLQkJCQkgICAoU1NIT1JUKShTTE9ORykgY29uc3RhbnQtPm5vZF9hcmdb
MF0pOworCQkJCSAgIChTU0hPUlQpKFNMT05HKSAoSVBUUikgY29uc3RhbnQtPm5vZF9hcmdbMF0p
OwogCiAJaWYgKGNvbnN0YW50ID0gbm9kZS0+bm9kX2FyZ1tlX3RyZ19wb3NpdGlvbl0pCiAJCXJl
cXVlc3QtPmFwcGVuZF9udW1iZXIoZ2RzX2R5bl90cmdfc2VxdWVuY2UsCi0JCQkJICAgKFNTSE9S
VCkoU0xPTkcpIGNvbnN0YW50LT5ub2RfYXJnWzBdKTsKKwkJCQkgICAoU1NIT1JUKShTTE9ORykg
KElQVFIpIGNvbnN0YW50LT5ub2RfYXJnWzBdKTsKIAogCWlmIChjb25zdGFudCA9IG5vZGUtPm5v
ZF9hcmdbZV90cmdfdHlwZV0pIHsKLQkJcmVxdWVzdC0+YXBwZW5kX251bWJlcihnZHNfZHluX3Ry
Z190eXBlLCAoU1NIT1JUKShTTE9ORykgY29uc3RhbnQtPm5vZF9hcmdbMF0pOwotCQl0cmlnX3R5
cGUgPSAoVVNIT1JUKShVTE9ORykgY29uc3RhbnQtPm5vZF9hcmdbMF07CisJCXJlcXVlc3QtPmFw
cGVuZF9udW1iZXIoZ2RzX2R5bl90cmdfdHlwZSwgKFNTSE9SVCkoU0xPTkcpIChJUFRSKSBjb25z
dGFudC0+bm9kX2FyZ1swXSk7CisJCXRyaWdfdHlwZSA9IChVU0hPUlQpKFVMT05HKSAoSVBUUikg
Y29uc3RhbnQtPm5vZF9hcmdbMF07CiAJfQogCWVsc2UgewogCQlhc3NlcnQobm9kZS0+bm9kX3R5
cGUgPT0gbm9kX21vZF90cmlnZ2VyKTsKQEAgLTI4OTMsNyArMjg5Myw3IEBACiAJCWZvciAoRFNR
TF9OT0QqIHB0ciA9IHRlbXAtPm5vZF9hcmc7IHB0ciA8IGVuZDsgKytwdHIpCiAJCXsKIAkJCURT
UUxfTk9EICAgIG1lc3NhZ2UgPSAqcHRyOwotCQkJU1NIT1JUIG51bWJlciAgPSAoU1NIT1JUKShT
TE9ORykgbWVzc2FnZS0+bm9kX2FyZ1tlX21zZ19udW1iZXJdOworCQkJU1NIT1JUIG51bWJlciAg
PSAoU1NIT1JUKShTTE9ORykgKElQVFIpIG1lc3NhZ2UtPm5vZF9hcmdbZV9tc2dfbnVtYmVyXTsK
IAkJCWlmIChtZXNzYWdlLT5ub2RfdHlwZSA9PSBub2RfZGVsX3RyaWdnZXJfbXNnKQogCQkJewog
CQkJCXJlcXVlc3QtPmFwcGVuZF9udW1iZXIoZ2RzX2R5bl9kZWxldGVfdHJpZ2dlcl9tc2csIG51
bWJlcik7CkBAIC0yOTU0LDcgKzI5NTQsNyBAQAogICAgICAgICAvLyBDVkM6IFRoaXMgaXMgY2Fz
ZSBvZiAicmV0dXJucyA8dHlwZT4gW2J5IHZhbHVlfHJlZmVyZW5jZV0iCiAJCS8qIFNvbWUgZGF0
YSB0eXBlcyBjYW4gbm90IGJlIHJldHVybmVkIGFzIHZhbHVlICovCiAKLQkJaWYgKCgoaW50KShT
TE9ORykgKHJldF92YWxfcHRyWzFdLT5ub2RfYXJnWzBdKSA9PSBGVU5fdmFsdWUpICYmCisJCWlm
ICgoKGludCkoU0xPTkcpIChJUFRSKSAocmV0X3ZhbF9wdHJbMV0tPm5vZF9hcmdbMF0pID09IEZV
Tl92YWx1ZSkgJiYKIAkJCShmaWVsZC0+ZmxkX2R0eXBlID09IGR0eXBlX3RleHQgfHwKIAkJCSBm
aWVsZC0+ZmxkX2R0eXBlID09IGR0eXBlX3ZhcnlpbmcgfHwKIAkJCSBmaWVsZC0+ZmxkX2R0eXBl
ID09IGR0eXBlX2NzdHJpbmcgfHwKQEAgLTI5OTgsNyArMjk5OCw3IEBACiAgICAgICAgIC8vIENW
QzogVGhpcyBpcyBjYXNlIG9mICJyZXR1cm5zIHBhcmFtZXRlciA8Tj4iCiAKIAotCQlwb3NpdGlv
biA9IChTU0hPUlQpKFNMT05HKSAocmV0X3ZhbF9wdHJbMV0tPm5vZF9hcmdbMF0pOworCQlwb3Np
dGlvbiA9IChTU0hPUlQpKFNMT05HKSAoSVBUUikgKHJldF92YWxfcHRyWzFdLT5ub2RfYXJnWzBd
KTsKIAkJLyogRnVuY3Rpb24gbW9kaWZpZXMgYW4gYXJndW1lbnQgd2hvc2UgdmFsdWUgaXMgdGhl
IGZ1bmN0aW9uIHJldHVybiB2YWx1ZSAqLwogCiAJCWlmICghYXJndW1lbnRzIHx8IHBvc2l0aW9u
ID4gYXJndW1lbnRzLT5ub2RfY291bnQgfHwgcG9zaXRpb24gPCAxKSB7CkBAIC0zMDI0LDcgKzMw
MjQsNyBAQAogCQlpZiAoZmllbGQtPmZsZF9kdHlwZSA9PSBkdHlwZV9ibG9iKQogCQl7CiAgICAg
ICAgIC8qIENWQzogSSBuZWVkIHRvIHRlc3QgcmV0dXJuaW5nIGJsb2JzIGJ5IGRlc2NyaXB0b3Ig
YmVmb3JlIGFsbG93aW5nIHRoZSAgICAgICAgY2hhbmdlIHRoZXJlLiBGb3Igbm93LCBJIGlnbm9y
ZSB0aGUgcmV0dXJuIHR5cGUgc3BlY2lmaWNhdGlvbi4gKi8KLQkJCUJPT0xFQU4gZnJlZV9pdCA9
ICgoU1NIT1JUKShTTE9ORykgcmV0X3ZhbF9wdHJbMV0tPm5vZF9hcmdbMF0gPCAwKTsKKwkJCUJP
T0xFQU4gZnJlZV9pdCA9ICgoU1NIT1JUKShTTE9ORykgKElQVFIpIHJldF92YWxfcHRyWzFdLT5u
b2RfYXJnWzBdIDwgMCk7CiAJCQlyZXF1ZXN0LT5hcHBlbmRfbnVtYmVyKGdkc19keW5fZGVmX2Z1
bmN0aW9uX2FyZywgYmxvYl9wb3NpdGlvbik7CiAJCQlyZXF1ZXN0LT5hcHBlbmRfbnVtYmVyKGdk
c19keW5fZnVuY19tZWNoYW5pc20sCiAJCQkJCSAgIChTU0hPUlQpKFNMT05HKSAoKGZyZWVfaXQg
PyAtMSA6IDEpICogRlVOX2Jsb2Jfc3RydWN0KSk7CkBAIC0zMDM1LDcgKzMwMzUsNyBAQAogCQl7
CiAJCQlyZXF1ZXN0LT5hcHBlbmRfbnVtYmVyKGdkc19keW5fZGVmX2Z1bmN0aW9uX2FyZywgKFNT
SE9SVCkgMCk7CiAJCQlyZXF1ZXN0LT5hcHBlbmRfbnVtYmVyKGdkc19keW5fZnVuY19tZWNoYW5p
c20sCi0JCQkJCSAgIChTU0hPUlQpKFNMT05HKSAocmV0X3ZhbF9wdHJbMV0tPm5vZF9hcmdbMF0p
KTsKKwkJCQkJICAgKFNTSE9SVCkoU0xPTkcpIChJUFRSKSAocmV0X3ZhbF9wdHJbMV0tPm5vZF9h
cmdbMF0pKTsKIAkJfQogCiAJCXJlcXVlc3QtPmFwcGVuZF9jc3RyaW5nKGdkc19keW5fZnVuY3Rp
b25fbmFtZSwgdWRmX25hbWUpOwpAQCAtMzA3MCw3ICszMDcwLDcgQEAKIAkJCXJlcXVlc3QtPmFw
cGVuZF9udW1iZXIoZ2RzX2R5bl9kZWZfZnVuY3Rpb25fYXJnLCAoU1NIT1JUKSBwb3NpdGlvbik7
CiAKICAgICAgICAgICAgIGlmIChwYXJhbV9ub2RlIFtlX3VkZl9wYXJhbV90eXBlXSkgewotICAg
ICAgICAgICAgICAgIFNTSE9SVCBhcmdfbWVjaGFuaXNtID0gKFNTSE9SVCkoU0xPTkcpIChwYXJh
bV9ub2RlIFtlX3VkZl9wYXJhbV90eXBlXS0+bm9kX2FyZyBbMF0pOworICAgICAgICAgICAgICAg
IFNTSE9SVCBhcmdfbWVjaGFuaXNtID0gKFNTSE9SVCkoU0xPTkcpIChJUFRSKSAocGFyYW1fbm9k
ZSBbZV91ZGZfcGFyYW1fdHlwZV0tPm5vZF9hcmcgWzBdKTsKIAkJCQlyZXF1ZXN0LT5hcHBlbmRf
bnVtYmVyKGdkc19keW5fZnVuY19tZWNoYW5pc20sIGFyZ19tZWNoYW5pc20pOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoZmllbGQtPmZsZF9kdHlwZSA9PSBkdHlwZV9ibG9i
KSB7CkBAIC0zNjc3LDEzICszNjc3LDEzIEBACiAJaWYgKGNvbnN0YW50KQogCXsKIAkJcmVxdWVz
dC0+YXBwZW5kX251bWJlcihnZHNfZHluX3RyZ19zZXF1ZW5jZSwKLQkJCQkgICAoU1NIT1JUKShT
TE9ORykgKGNvbnN0YW50ID8gY29uc3RhbnQtPm5vZF9hcmdbMF0gOiAwKSk7CisJCQkJICAgKFNT
SE9SVCkoU0xPTkcpIChJUFRSKSAoY29uc3RhbnQgPyBjb25zdGFudC0+bm9kX2FyZ1swXSA6IDAp
KTsKIAl9CiAKIAljb25zdGFudCA9IG5vZGUtPm5vZF9hcmdbZV9jbnN0cl90eXBlXTsKIAlpZiAo
Y29uc3RhbnQpCiAJewotCQl0cmlnX3R5cGUgPSAoVVNIT1JUKShVTE9ORykgY29uc3RhbnQtPm5v
ZF9hcmdbMF07CisJCXRyaWdfdHlwZSA9IChVU0hPUlQpKFVMT05HKShJUFRSKSBjb25zdGFudC0+
bm9kX2FyZ1swXTsKIAkJcmVxdWVzdC0+YXBwZW5kX251bWJlcihnZHNfZHluX3RyZ190eXBlLCB0
cmlnX3R5cGUpOwogCX0KIAllbHNlCkBAIC00MTczLDcgKzQxNzMsNyBAQAogCiAJY2FzZSBub2Rf
ZGVsX3NoYWRvdzoKIAkJcmVxdWVzdC0+YXBwZW5kX251bWJlcihnZHNfZHluX2RlbGV0ZV9zaGFk
b3csCi0JCQkJICAgKFNTSE9SVCkoU0xPTkcpIChub2RlLT5ub2RfYXJnWzBdKSk7CisJCQkJICAg
KFNTSE9SVCkoU0xPTkcpIChJUFRSKSAobm9kZS0+bm9kX2FyZ1swXSkpOwogCQlyZXF1ZXN0LT5h
cHBlbmRfdWNoYXIoZ2RzX2R5bl9lbmQpOwogCQlicmVhazsKIApAQCAtNDYxMSwyNSArNDYxMSwy
NSBAQAogCiAJCWNhc2Ugbm9kX2dyb3VwX2NvbW1pdF93YWl0OgogCQkJcmVxdWVzdC0+YXBwZW5k
X3VjaGFyKGdkc19keW5fbG9nX2dyb3VwX2NvbW1pdF93YWl0KTsKLQkJCXRlbXBfbG9uZyA9IChT
TE9ORykgKGVsZW1lbnQtPm5vZF9hcmdbMF0pOworCQkJdGVtcF9sb25nID0gKFNMT05HKShJUFRS
KSAoZWxlbWVudC0+bm9kX2FyZ1swXSk7CiAJCQlyZXF1ZXN0LT5hcHBlbmRfdWxvbmdfd2l0aF9s
ZW5ndGgodGVtcF9sb25nKTsKIAkJCWJyZWFrOwogCiAJCWNhc2Ugbm9kX2NoZWNrX3BvaW50X2xl
bjoKIAkJCXJlcXVlc3QtPmFwcGVuZF91Y2hhcihnZHNfZHluX2xvZ19jaGVja19wb2ludF9sZW5n
dGgpOwotCQkJdGVtcF9sb25nID0gKFNMT05HKSAoZWxlbWVudC0+bm9kX2FyZ1swXSk7CisJCQl0
ZW1wX2xvbmcgPSAoU0xPTkcpKElQVFIpIChlbGVtZW50LT5ub2RfYXJnWzBdKTsKIAkJCXJlcXVl
c3QtPmFwcGVuZF91bG9uZ193aXRoX2xlbmd0aCh0ZW1wX2xvbmcpOwogCQkJYnJlYWs7CiAKIAkJ
Y2FzZSBub2RfbnVtX2xvZ19idWZmZXJzOgogCQkJcmVxdWVzdC0+YXBwZW5kX3VjaGFyKGdkc19k
eW5fbG9nX251bV9vZl9idWZmZXJzKTsKLQkJCXRlbXBfc2hvcnQgPSAoU1NIT1JUKShTTE9ORykg
KGVsZW1lbnQtPm5vZF9hcmdbMF0pOworCQkJdGVtcF9zaG9ydCA9IChTU0hPUlQpKFNMT05HKShJ
UFRSKSAoZWxlbWVudC0+bm9kX2FyZ1swXSk7CiAJCQlyZXF1ZXN0LT5hcHBlbmRfdXNob3J0X3dp
dGhfbGVuZ3RoKHRlbXBfc2hvcnQpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBub2RfbG9nX2J1ZmZl
cl9zaXplOgogCQkJcmVxdWVzdC0+YXBwZW5kX3VjaGFyKGdkc19keW5fbG9nX2J1ZmZlcl9zaXpl
KTsKLQkJCXRlbXBfc2hvcnQgPSAoU1NIT1JUKShTTE9ORykgKGVsZW1lbnQtPm5vZF9hcmdbMF0p
OworCQkJdGVtcF9zaG9ydCA9IChTU0hPUlQpKFNMT05HKShJUFRSKSAoZWxlbWVudC0+bm9kX2Fy
Z1swXSk7CiAJCQlyZXF1ZXN0LT5hcHBlbmRfdXNob3J0X3dpdGhfbGVuZ3RoKHRlbXBfc2hvcnQp
OwogCQkJYnJlYWs7CiAJCWNhc2Ugbm9kX2Ryb3BfbG9nOgpAQCAtNTA5NSw3ICs1MDk1LDcgQEAK
IAkJCQljb25zdF9ub2RlID0gZWxlbWVudC0+bm9kX2FyZ1tlX21vZF9mbGRfcG9zX25ld19wb3Np
dGlvbl07CiAKICAgICAgICAgICAgICAgICAvKiBDVkM6IFNpbmNlIG5vdyB0aGUgcGFyc2VyIGFj
Y2VwdHMgcG9zPTEuLk4sIGxldCdzIHN1YnRyYWN0IG9uZSBoZXJlLiAqLwotICAgICAgICAgICAg
ICAgIGNvbnN0YW50ID0gKFNTSE9SVCkoU0xPTkcpIGNvbnN0X25vZGUtPm5vZF9hcmcgWzBdIC0g
MTsKKyAgICAgICAgICAgICAgICBjb25zdGFudCA9IChTU0hPUlQpKFNMT05HKSAoSVBUUikgY29u
c3Rfbm9kZS0+bm9kX2FyZyBbMF0gLSAxOwogCiAJCQkJcmVxdWVzdC0+YXBwZW5kX2NzdHJpbmco
Z2RzX2R5bl9yZWxfbmFtZSwKIAkJCQkJCQlyZWxhdGlvbl9uYW1lLT5zdHJfZGF0YSk7CmRpZmYg
LU5hdXIgZmlyZWJpcmQtMS41LjMuNDg3MC5vbGQvc3JjL2RzcWwvZHNxbC5jcHAgZmlyZWJpcmQt
MS41LjMuNDg3MC9zcmMvZHNxbC9kc3FsLmNwcAotLS0gZmlyZWJpcmQtMS41LjMuNDg3MC5vbGQv
c3JjL2RzcWwvZHNxbC5jcHAJMjAwNi0wOC0wNiAwNjo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKKysr
IGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2RzcWwvZHNxbC5jcHAJMjAwNi0wOC0wNiAwNzozODo0
NS4wMDAwMDAwMDAgKzAyMDAKQEAgLTExMzYsOCArMTEzNiw4IEBACiAJCQlwYXJhbWV0ZXIgPSBy
ZXF1ZXN0LT5yZXFfYmxvYi0+YmxiX3NlZ21lbnQ7CiAJCQlQQVIgbnVsbCA9IHBhcmFtZXRlci0+
cGFyX251bGw7CiAJCQlVU0hPUlQqIHJldF9sZW5ndGggPQotCQkJCShVU0hPUlQgKikgKGRzcWxf
bXNnICsgKFNMT05HKSBudWxsLT5wYXJfdXNlcl9kZXNjLmRzY19hZGRyZXNzKTsKLQkJCVVDSEFS
KiBidWZmZXIgPSBkc3FsX21zZyArIChTTE9ORykgcGFyYW1ldGVyLT5wYXJfdXNlcl9kZXNjLmRz
Y19hZGRyZXNzOworCQkJCShVU0hPUlQgKikgKGRzcWxfbXNnICsgKFNMT05HKSAoSVBUUikgbnVs
bC0+cGFyX3VzZXJfZGVzYy5kc2NfYWRkcmVzcyk7CisJCQlVQ0hBUiogYnVmZmVyID0gZHNxbF9t
c2cgKyAoU0xPTkcpIChJUFRSKSBwYXJhbWV0ZXItPnBhcl91c2VyX2Rlc2MuZHNjX2FkZHJlc3M7
CiAJCQlUSFJFQURfRVhJVDsKIAkJCXMgPSBpc2NfZ2V0X3NlZ21lbnQodGRzcWwtPnRzcWxfc3Rh
dHVzLAogCQkJCQkJCUdEU19SRUYocmVxdWVzdC0+cmVxX2hhbmRsZSksCkBAIC0xMzE0LDcgKzEz
MTQsNyBAQAogCQkJcGFyYW1ldGVyID0gcmVxdWVzdC0+cmVxX2Jsb2ItPmJsYl9zZWdtZW50Owog
CQkJYnVmZmVyID0KIAkJCQlyZWludGVycHJldF9jYXN0PFNDSEFSKj4oCi0JCQkJCWRzcWxfbXNn
ICsgKFNMT05HKSBwYXJhbWV0ZXItPnBhcl91c2VyX2Rlc2MuZHNjX2FkZHJlc3MpOworCQkJCQlk
c3FsX21zZyArIChTTE9ORykgKElQVFIpIHBhcmFtZXRlci0+cGFyX3VzZXJfZGVzYy5kc2NfYWRk
cmVzcyk7CiAJCQlUSFJFQURfRVhJVDsKIAkJCXMgPSBpc2NfcHV0X3NlZ21lbnQodGRzcWwtPnRz
cWxfc3RhdHVzLAogCQkJCQkJCUdEU19SRUYocmVxdWVzdC0+cmVxX2hhbmRsZSksCkBAIC0zMjEw
LDcgKzMyMTAsNyBAQAogCVBBUiBwYXJhbWV0ZXIsIG51bGw7CiAKIAlpZiAobm9kZS0+bm9kX3R5
cGUgPT0gbm9kX2NvbnN0YW50KQotCQlyZXR1cm4gKFNTSE9SVCkoU0xPTkcpIG5vZGUtPm5vZF9h
cmdbMF07CisJCXJldHVybiAoU1NIT1JUKShTTE9ORykgKElQVFIpIG5vZGUtPm5vZF9hcmdbMF07
CiAKIAlwYXJhbWV0ZXIgPSAoUEFSKSBub2RlLT5ub2RfYXJnW2VfcGFyX3BhcmFtZXRlcl07CiAJ
aWYgKG51bGwgPSBwYXJhbWV0ZXItPnBhcl9udWxsKQpAQCAtMzk3Niw3ICszOTc2LDcgQEAKIAkJ
CSAvKiBNYWtlIHN1cmUgdGhlIG1lc3NhZ2UgZ2l2ZW4gdG8gdXMgaXMgbG9uZyBlbm91Z2ggKi8K
IAogCQkJRFNDICAgIGRlc2MgICA9IHBhcmFtZXRlci0+cGFyX3VzZXJfZGVzYzsKLQkJCVVTSE9S
VCBsZW5ndGggPSAoU0xPTkcpIGRlc2MuZHNjX2FkZHJlc3MgKyBkZXNjLmRzY19sZW5ndGg7CisJ
CQlVU0hPUlQgbGVuZ3RoID0gKFNMT05HKSAoSVBUUikgZGVzYy5kc2NfYWRkcmVzcyArIGRlc2Mu
ZHNjX2xlbmd0aDsKIAkJCWlmIChsZW5ndGggPiBtc2dfbGVuZ3RoKQogCQkJCWJyZWFrOwogCQkJ
aWYgKCFkZXNjLmRzY19kdHlwZSkKQEAgLTM5ODUsNyArMzk4NSw3IEBACiAJCQlmbGFnID0gTlVM
TDsKIAkJCWlmICgobnVsbCA9IHBhcmFtZXRlci0+cGFyX251bGwpICE9IE5VTEwpCiAJCQl7Ci0J
CQkJVVNIT1JUIG51bGxfb2Zmc2V0ID0gKFVTSE9SVCkoVUxPTkcpIChudWxsLT5wYXJfdXNlcl9k
ZXNjLmRzY19hZGRyZXNzKTsKKwkJCQlVU0hPUlQgbnVsbF9vZmZzZXQgPSAoVVNIT1JUKShVTE9O
RykgKElQVFIpIChudWxsLT5wYXJfdXNlcl9kZXNjLmRzY19hZGRyZXNzKTsKIAkJCQlsZW5ndGgg
PSBudWxsX29mZnNldCArIHNpemVvZihTU0hPUlQpOwogCQkJCWlmIChsZW5ndGggPiBtc2dfbGVu
Z3RoKQogCQkJCQlicmVhazsKQEAgLTQwMDAsNyArNDAwMCw3IEBACiAJCQkJfQogCQkJfQogCi0J
CQlkZXNjLmRzY19hZGRyZXNzID0gZHNxbF9tc2cgKyAoU0xPTkcpIGRlc2MuZHNjX2FkZHJlc3M7
CisJCQlkZXNjLmRzY19hZGRyZXNzID0gZHNxbF9tc2cgKyAoU0xPTkcpIChJUFRSKSBkZXNjLmRz
Y19hZGRyZXNzOwogCQkJaWYgKCFyZXF1ZXN0KQogCQkJCU1PVkRfbW92ZSgmcGFyYW1ldGVyLT5w
YXJfZGVzYywgJmRlc2MpOwogCQkJZWxzZSBpZiAoIWZsYWcgfHwgKmZsYWcgPj0gMCkKZGlmZiAt
TmF1ciBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvZHNxbC9nZW4uY3BwIGZpcmViaXJkLTEu
NS4zLjQ4NzAvc3JjL2RzcWwvZ2VuLmNwcAotLS0gZmlyZWJpcmQtMS41LjMuNDg3MC5vbGQvc3Jj
L2RzcWwvZ2VuLmNwcAkyMDA2LTA4LTA2IDA2OjQ3OjIwLjAwMDAwMDAwMCArMDIwMAorKysgZmly
ZWJpcmQtMS41LjMuNDg3MC9zcmMvZHNxbC9nZW4uY3BwCTIwMDYtMDgtMDYgMDc6NDE6MzEuMDAw
MDAwMDAwICswMjAwCkBAIC02MzYsNyArNjM2LDcgQEAKIAlmb3IgKHBhcmFtZXRlciA9IG1lc3Nh
Z2UtPm1zZ19wYXJhbWV0ZXJzOyBwYXJhbWV0ZXI7CiAJCSBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIt
PnBhcl9uZXh0KQogCQkJcGFyYW1ldGVyLT5wYXJfZGVzYy5kc2NfYWRkcmVzcyA9Ci0JCQltZXNz
YWdlLT5tc2dfYnVmZmVyICsgKFNMT05HKSBwYXJhbWV0ZXItPnBhcl9kZXNjLmRzY19hZGRyZXNz
OworCQkJbWVzc2FnZS0+bXNnX2J1ZmZlciArIChTTE9ORykgKElQVFIpIHBhcmFtZXRlci0+cGFy
X2Rlc2MuZHNjX2FkZHJlc3M7CiB9CiAKIApAQCAtMTAyMSw3ICsxMDIxLDcgQEAKIAljYXNlIG5v
ZF9leGVjX2ludG86CiAJCWlmIChub2RlLT5ub2RfYXJnW2VfZXhlY19pbnRvX2Jsb2NrXSkgewog
CQkJU1RVRkYoYmxyX2xhYmVsKTsKLQkJCVNUVUZGKChpbnQpKFNMT05HKSBub2RlLT5ub2RfYXJn
W2VfZXhlY19pbnRvX251bWJlcl0pOworCQkJU1RVRkYoKGludCkoU0xPTkcpIChJUFRSKSBub2Rl
LT5ub2RfYXJnW2VfZXhlY19pbnRvX251bWJlcl0pOwogCQl9CiAJCVNUVUZGKGJscl9leGVjX2lu
dG8pOwogCQl0ZW1wID0gbm9kZS0+bm9kX2FyZ1tlX2V4ZWNfaW50b19saXN0XTsKQEAgLTEwNDks
MTIgKzEwNDksMTIgQEAKIAogICAgIGNhc2Ugbm9kX2xhYmVsOgogICAgICAgICBTVFVGRihibHJf
bGFiZWwpOwotICAgICAgICBTVFVGRigoaW50KShTTE9ORykgbm9kZS0+bm9kX2FyZ1tlX2xhYmVs
X251bWJlcl0pOworICAgICAgICBTVFVGRigoaW50KShTTE9ORykgKElQVFIpIG5vZGUtPm5vZF9h
cmdbZV9sYWJlbF9udW1iZXJdKTsKICAgICAgICAgcmV0dXJuOwogCQogICAgIGNhc2Ugbm9kX2Jy
ZWFrbGVhdmU6CiAgICAgICAgIFNUVUZGKGJscl9sZWF2ZSk7Ci0gICAgICAgIFNUVUZGKChpbnQp
KFNMT05HKSBub2RlLT5ub2RfYXJnW2VfYnJlYWtsZWF2ZV9udW1iZXJdKTsKKyAgICAgICAgU1RV
RkYoKGludCkoU0xPTkcpKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9icmVha2xlYXZlX251bWJlcl0p
OwogICAgICAgICByZXR1cm47CiAKIAljYXNlIG5vZF9zdG9yZToKQEAgLTEwNjksNyArMTA2OSw3
IEBACiAKIAljYXNlIG5vZF9hYm9ydDoKIAkJU1RVRkYoYmxyX2xlYXZlKTsKLQkJU1RVRkYoKGlu
dCkoU0xPTkcpIG5vZGUtPm5vZF9hcmdbZV9hYnJ0X251bWJlcl0pOworCQlTVFVGRigoaW50KShT
TE9ORykgKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9hYnJ0X251bWJlcl0pOwogCQlyZXR1cm47CiAK
IAljYXNlIG5vZF9zdGFydF9zYXZlcG9pbnQ6CkBAIC0xMTQ5LDE0ICsxMTQ5LDE0IEBACiAKIAlj
YXNlIG5vZF93aGlsZToKIAkJU1RVRkYoYmxyX2xhYmVsKTsKLQkJU1RVRkYoKGludCkoU0xPTkcp
IG5vZGUtPm5vZF9hcmdbZV93aGlsZV9udW1iZXJdKTsKKwkJU1RVRkYoKGludCkoU0xPTkcpIChJ
UFRSKSBub2RlLT5ub2RfYXJnW2Vfd2hpbGVfbnVtYmVyXSk7CiAJCVNUVUZGKGJscl9sb29wKTsK
IAkJU1RVRkYoYmxyX2JlZ2luKTsKIAkJU1RVRkYoYmxyX2lmKTsKIAkJR0VOX2V4cHIocmVxdWVz
dCwgbm9kZS0+bm9kX2FyZ1tlX3doaWxlX2NvbmRdKTsKIAkJR0VOX3N0YXRlbWVudChyZXF1ZXN0
LCBub2RlLT5ub2RfYXJnW2Vfd2hpbGVfYWN0aW9uXSk7CiAJCVNUVUZGKGJscl9sZWF2ZSk7Ci0J
CVNUVUZGKChpbnQpKFNMT05HKSBub2RlLT5ub2RfYXJnW2Vfd2hpbGVfbnVtYmVyXSk7CisJCVNU
VUZGKChpbnQpKFNMT05HKSAoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX3doaWxlX251bWJlcl0pOwog
CQlTVFVGRihibHJfZW5kKTsKIAkJcmV0dXJuOwogCkBAIC0xNTU2LDcgKzE1NTYsNyBAQAogCXN3
aXRjaCAobm9kZS0+bm9kX3R5cGUpIHsKIAljYXNlIG5vZF9zcWxjb2RlOgogCQlTVFVGRihibHJf
c3FsX2NvZGUpOwotCQlTVFVGRl9XT1JEKChVU0hPUlQpKFVMT05HKSBub2RlLT5ub2RfYXJnWzBd
KTsKKwkJU1RVRkZfV09SRCgoVVNIT1JUKShVTE9ORykgKElQVFIpIG5vZGUtPm5vZF9hcmdbMF0p
OwogCQlyZXR1cm47CiAKIAljYXNlIG5vZF9nZHNjb2RlOgpAQCAtMTY2Nyw3ICsxNjY3LDcgQEAK
ICAgICAgICB3aGF0IGxvb3AgaXMgdGhlIHVzZXIgdHJ5aW5nIHRvIGFiYW5kb24/ICovCiAgICAg
aWYgKGZvcl9zZWxlY3QtPm5vZF9hcmcgW2VfZmxwX2FjdGlvbl0pIHsKICAgICAgICAgU1RVRkYg
KGJscl9sYWJlbCk7Ci0gICAgICAgIFNUVUZGICgoaW50KSBmb3Jfc2VsZWN0LT5ub2RfYXJnIFtl
X2ZscF9udW1iZXJdKTsKKyAgICAgICAgU1RVRkYgKChpbnQpIChJUFRSKSBmb3Jfc2VsZWN0LT5u
b2RfYXJnIFtlX2ZscF9udW1iZXJdKTsKICAgICB9CiAKIC8qIEdlbmVyYXRlIEZPUiBsb29wICov
CkBAIC0yNTQ2LDcgKzI1NDYsNyBAQAogCWZvciAocHRyID0gbGlzdC0+bm9kX2FyZywgZW5kID0g
cHRyICsgbGlzdC0+bm9kX2NvdW50OyBwdHIgPCBlbmQ7IHB0cisrKSB7CiAgCQlkc3FsX25vZCog
bnVsbHNfcGxhY2VtZW50ID0gKCpwdHIpLT5ub2RfYXJnW2Vfb3JkZXJfbnVsbHNdOwogIAkJaWYg
KG51bGxzX3BsYWNlbWVudCkgewotIAkJCXN3aXRjaCAoKFNMT05HKW51bGxzX3BsYWNlbWVudC0+
bm9kX2FyZ1swXSkgeworIAkJCXN3aXRjaCAoKFNMT05HKSAoSVBUUikgbnVsbHNfcGxhY2VtZW50
LT5ub2RfYXJnWzBdKSB7CiAgCQkJCWNhc2UgTk9EX05VTExTX0ZJUlNUOgogIAkJCQkJU1RVRkYo
YmxyX251bGxzZmlyc3QpOwogIAkJCQkJYnJlYWs7CmRpZmYgLU5hdXIgZmlyZWJpcmQtMS41LjMu
NDg3MC5vbGQvc3JjL2RzcWwvcGFyc2UueSBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9kc3FsL3Bh
cnNlLnkKLS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAub2xkL3NyYy9kc3FsL3BhcnNlLnkJMjAwNi0w
OC0wNiAwNjo0NzoyMS4wMDAwMDAwMDAgKzAyMDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3Jj
L2RzcWwvcGFyc2UueQkyMDA2LTA4LTA2IDA3OjQ5OjQ3LjAwMDAwMDAwMCArMDIwMApAQCAtNTUx
LDcgKzU1MSw3IEBACiAJCXwgc2V0CiAJCXwgdXBkYXRlCiAJCXwgS1dfREVCVUcgc2lnbmVkX3No
b3J0X2ludGVnZXIKLQkJCXsgcHJlcGFyZV9jb25zb2xlX2RlYnVnICgoaW50KSAkMiwgJnl5ZGVi
dWcpOworCQkJeyBwcmVwYXJlX2NvbnNvbGVfZGVidWcgKChpbnQpKElQVFIpICQyLCAmeXlkZWJ1
Zyk7CiAJCQkgICQkID0gbWFrZV9ub2RlIChub2RfbnVsbCwgKGludCkgMCwgTlVMTCk7IH0KIAkJ
OwogCkBAIC03NTMsNyArNzUzLDcgQEAKIAkJfCBDU1RSSU5HICcoJyBwb3Nfc2hvcnRfaW50ZWdl
ciAnKScgY2hhcnNldF9jbGF1c2UKIAkJCXsgCiAJCQlsZXguZ19maWVsZC0+ZmxkX2R0eXBlID0g
ZHR5cGVfY3N0cmluZzsgCi0JCQlsZXguZ19maWVsZC0+ZmxkX2NoYXJhY3Rlcl9sZW5ndGggPSAo
VVNIT1JUKSAkMzsgfQorCQkJbGV4LmdfZmllbGQtPmZsZF9jaGFyYWN0ZXJfbGVuZ3RoID0gKFVT
SE9SVCkoc2l6ZV90KSAkMzsgfQogCQk7CiAKIGFyZ19kZXNjX2xpc3QxCTogCkBAIC0xMTU4LDcg
KzExNTgsNyBAQAogCQk7CiAKIGxvZ2ZpbGVfYXR0cgk6IEtXX1NJWkUgZXF1YWxzIGxvbmdfaW50
ZWdlcgotCQkJeyBsZXguZ19maWxlLT5maWxfbGVuZ3RoID0gKFNMT05HKSAkMzsgfQorCQkJeyBs
ZXguZ19maWxlLT5maWxfbGVuZ3RoID0gKFNMT05HKShJUFRSKSAkMzsgfQogLyoKIAkJfCBSQVdf
UEFSVElUSU9OUyBlcXVhbHMgcG9zX3Nob3J0X2ludGVnZXIKIAkJCXsgbGV4LmdfZmlsZS0+Zmls
X3BhcnRpdGlvbnMgPSAoU1NIT1JUKSAkMzsgCkBAIC0xMTc4LDkgKzExNzgsOSBAQAogCQk7CiAK
IGZpbGVfY2xhdXNlCTogU1RBUlRJTkcgZmlsZV9jbGF1c2Vfbm9pc2UgbG9uZ19pbnRlZ2VyCi0J
CQl7IGxleC5nX2ZpbGUtPmZpbF9zdGFydCA9IChTTE9ORykgJDM7fQorCQkJeyBsZXguZ19maWxl
LT5maWxfc3RhcnQgPSAoU0xPTkcpKElQVFIpICQzO30KIAkJfCBMRU5HVEggZXF1YWxzIGxvbmdf
aW50ZWdlciBwYWdlX25vaXNlCi0JCQl7IGxleC5nX2ZpbGUtPmZpbF9sZW5ndGggPSAoU0xPTkcp
ICQzO30KKwkJCXsgbGV4LmdfZmlsZS0+ZmlsX2xlbmd0aCA9IChTTE9ORykoSVBUUikgJDM7fQog
CQk7CiAKIGZpbGVfY2xhdXNlX25vaXNlIDoKQEAgLTIxODYsNyArMjE4Niw3IEBACiAJCTsKIAog
YXJyYXlfcmFuZ2UJOiBzaWduZWRfbG9uZ19pbnRlZ2VyCi0JICAgIAkJeyBpZiAoKFNMT05HKSAk
MSA8IDEpCisJICAgIAkJeyBpZiAoKFNMT05HKShJUFRSKSAkMSA8IDEpCiAJCSAgICAgCQkkJCA9
IG1ha2Vfbm9kZSAobm9kX2xpc3QsIChpbnQpIDIsIAogCQkJCQlNQUtFX2NvbnN0YW50ICgoU1RS
KSAkMSwgQ09OU1RBTlRfU0xPTkcpLCAKIAkJCQkJTUFLRV9jb25zdGFudCAoKFNUUikgMSwgQ09O
U1RBTlRfU0xPTkcpKTsgCkBAIC0yMjkyLDI2ICsyMjkyLDI2IEBACiAJCXwgQkxPQiAnKCcgdW5z
aWduZWRfc2hvcnRfaW50ZWdlciAnKScKIAkJCXsgCiAJCQlsZXguZ19maWVsZC0+ZmxkX2R0eXBl
ID0gZHR5cGVfYmxvYjsgCi0JCQlsZXguZ19maWVsZC0+ZmxkX3NlZ19sZW5ndGggPSAoVVNIT1JU
KSAkMzsKKwkJCWxleC5nX2ZpZWxkLT5mbGRfc2VnX2xlbmd0aCA9IChVU0hPUlQpKHNpemVfdCkg
JDM7CiAJCQlsZXguZ19maWVsZC0+ZmxkX3N1Yl90eXBlID0gMDsKIAkJCX0KIAkJfCBCTE9CICco
JyB1bnNpZ25lZF9zaG9ydF9pbnRlZ2VyICcsJyBzaWduZWRfc2hvcnRfaW50ZWdlciAnKScKIAkJ
CXsgCiAJCQlsZXguZ19maWVsZC0+ZmxkX2R0eXBlID0gZHR5cGVfYmxvYjsgCi0JCQlsZXguZ19m
aWVsZC0+ZmxkX3NlZ19sZW5ndGggPSAoVVNIT1JUKSAkMzsKLQkJCWxleC5nX2ZpZWxkLT5mbGRf
c3ViX3R5cGUgPSAoVVNIT1JUKSAkNTsKKwkJCWxleC5nX2ZpZWxkLT5mbGRfc2VnX2xlbmd0aCA9
IChVU0hPUlQpKHNpemVfdCkgJDM7CisJCQlsZXguZ19maWVsZC0+ZmxkX3N1Yl90eXBlID0gKFVT
SE9SVCkoc2l6ZV90KSAkNTsKIAkJCX0KIAkJfCBCTE9CICcoJyAnLCcgc2lnbmVkX3Nob3J0X2lu
dGVnZXIgJyknCiAJCQl7IAogCQkJbGV4LmdfZmllbGQtPmZsZF9kdHlwZSA9IGR0eXBlX2Jsb2I7
IAogCQkJbGV4LmdfZmllbGQtPmZsZF9zZWdfbGVuZ3RoID0gODA7Ci0JCQlsZXguZ19maWVsZC0+
ZmxkX3N1Yl90eXBlID0gKFVTSE9SVCkgJDQ7CisJCQlsZXguZ19maWVsZC0+ZmxkX3N1Yl90eXBl
ID0gKFVTSE9SVCkoc2l6ZV90KSAkNDsKIAkJCX0KIAkJOwogCiBibG9iX3NlZ3NpemUJOiBTRUdN
RU5UIEtXX1NJWkUgdW5zaWduZWRfc2hvcnRfaW50ZWdlcgogCQkgIAl7Ci0JCQlsZXguZ19maWVs
ZC0+ZmxkX3NlZ19sZW5ndGggPSAoVVNIT1JUKSAkMzsKKwkJCWxleC5nX2ZpZWxkLT5mbGRfc2Vn
X2xlbmd0aCA9IChVU0hPUlQpKHNpemVfdCkgJDM7CiAJCSAgCX0KIAkJfAogCQkgIAl7CkBAIC0y
MzIxLDcgKzIzMjEsNyBAQAogCiBibG9iX3N1YnR5cGUJOiBTVUJfVFlQRSBzaWduZWRfc2hvcnRf
aW50ZWdlcgogCQkJewotCQkJbGV4LmdfZmllbGQtPmZsZF9zdWJfdHlwZSA9IChVU0hPUlQpICQy
OworCQkJbGV4LmdfZmllbGQtPmZsZF9zdWJfdHlwZSA9IChVU0hPUlQpKHNpemVfdCkgJDI7CiAJ
CQl9CiAJCXwgU1VCX1RZUEUgc3ltYm9sX2Jsb2Jfc3VidHlwZV9uYW1lCiAJCQl7CkBAIC0yMzQ3
LDcgKzIzNDcsNyBAQAogbmF0aW9uYWxfY2hhcmFjdGVyX3R5cGUJOiBuYXRpb25hbF9jaGFyYWN0
ZXJfa2V5d29yZCAnKCcgcG9zX3Nob3J0X2ludGVnZXIgJyknCiAJCQl7IAogCQkJbGV4LmdfZmll
bGQtPmZsZF9kdHlwZSA9IGR0eXBlX3RleHQ7IAotCQkJbGV4LmdfZmllbGQtPmZsZF9jaGFyYWN0
ZXJfbGVuZ3RoID0gKFVTSE9SVCkgJDM7IAorCQkJbGV4LmdfZmllbGQtPmZsZF9jaGFyYWN0ZXJf
bGVuZ3RoID0gKFVTSE9SVCkoc2l6ZV90KSAkMzsgCiAJCQlsZXguZ19maWVsZC0+ZmxkX2ZsYWdz
IHw9IEZMRF9uYXRpb25hbDsKIAkJCX0KIAkJfCBuYXRpb25hbF9jaGFyYWN0ZXJfa2V5d29yZApA
QCAtMjM1OSw3ICsyMzU5LDcgQEAKIAkJfCBuYXRpb25hbF9jaGFyYWN0ZXJfa2V5d29yZCBWQVJZ
SU5HICcoJyBwb3Nfc2hvcnRfaW50ZWdlciAnKScKIAkJCXsgCiAJCQlsZXguZ19maWVsZC0+Zmxk
X2R0eXBlID0gZHR5cGVfdmFyeWluZzsgCi0JCQlsZXguZ19maWVsZC0+ZmxkX2NoYXJhY3Rlcl9s
ZW5ndGggPSAoVVNIT1JUKSAkNDsgCisJCQlsZXguZ19maWVsZC0+ZmxkX2NoYXJhY3Rlcl9sZW5n
dGggPSAoVVNIT1JUKShzaXplX3QpICQ0OyAKIAkJCWxleC5nX2ZpZWxkLT5mbGRfZmxhZ3MgfD0g
RkxEX25hdGlvbmFsOwogCQkJfQogCQk7CkBAIC0yMzY3LDcgKzIzNjcsNyBAQAogY2hhcmFjdGVy
X3R5cGUJOiBjaGFyYWN0ZXJfa2V5d29yZCAnKCcgcG9zX3Nob3J0X2ludGVnZXIgJyknCiAJCQl7
IAogCQkJbGV4LmdfZmllbGQtPmZsZF9kdHlwZSA9IGR0eXBlX3RleHQ7IAotCQkJbGV4LmdfZmll
bGQtPmZsZF9jaGFyYWN0ZXJfbGVuZ3RoID0gKFVTSE9SVCkgJDM7IAorCQkJbGV4LmdfZmllbGQt
PmZsZF9jaGFyYWN0ZXJfbGVuZ3RoID0gKFVTSE9SVCkoc2l6ZV90KSAkMzsgCiAJCQl9CiAJCXwg
Y2hhcmFjdGVyX2tleXdvcmQKIAkJCXsgCkBAIC0yMzc3LDcgKzIzNzcsNyBAQAogCQl8IHZhcnlp
bmdfa2V5d29yZCAnKCcgcG9zX3Nob3J0X2ludGVnZXIgJyknCiAJCQl7IAogCQkJbGV4LmdfZmll
bGQtPmZsZF9kdHlwZSA9IGR0eXBlX3Zhcnlpbmc7IAotCQkJbGV4LmdfZmllbGQtPmZsZF9jaGFy
YWN0ZXJfbGVuZ3RoID0gKFVTSE9SVCkgJDM7IAorCQkJbGV4LmdfZmllbGQtPmZsZF9jaGFyYWN0
ZXJfbGVuZ3RoID0gKFVTSE9SVCkoc2l6ZV90KSAkMzsgCiAJCQl9CiAJCTsKIApAQCAtMjQyOSwx
MCArMjQyOSwxMCBAQAogCQkgICAgCX0KIAkJfCAnKCcgc2lnbmVkX2xvbmdfaW50ZWdlciAnKScK
IAkJCXsgICAgICAgICAKLQkJCWlmICggKChTTE9ORykgJDIgPCAxKSB8fCAoKFNMT05HKSAkMiA+
IDE4KSApCisJCQlpZiAoICgoU0xPTkcpKElQVFIpICQyIDwgMSkgfHwgKChTTE9ORykoSVBUUikg
JDIgPiAxOCkgKQogCQkJICAgIHl5YWJhbmRvbiAoLTg0MiwgaXNjX3ByZWNpc2lvbl9lcnIpOwog
CQkJCS8qIFByZWNpc2lvbiBtb3N0IGJlIGJldHdlZW4gMSBhbmQgMTguICovIAotCQkJaWYgKChT
TE9ORykgJDIgPiA5KQorCQkJaWYgKChTTE9ORykoSVBUUikgJDIgPiA5KQogCQkJICAgIHsKIAkJ
CSAgICBpZiAoICggKGNsaWVudF9kaWFsZWN0IDw9IFNRTF9ESUFMRUNUX1Y1KSAmJgogCQkJCSAg
IChkYl9kaWFsZWN0ICAgICA+ICBTUUxfRElBTEVDVF9WNSkgKSB8fApAQCAtMjQ2OSw3ICsyNDY5
LDcgQEAKIAkJCSAgICAgICAgfQogCQkJICAgIH0KIAkJCWVsc2UgCi0JCQkgICAgaWYgKChTTE9O
RykgJDIgPCA1KQorCQkJICAgIGlmICgoU0xPTkcpKElQVFIpICQyIDwgNSkKIAkJCSAgICAJewog
CQkJICAgIAlsZXguZ19maWVsZC0+ZmxkX2R0eXBlID0gZHR5cGVfc2hvcnQ7IAogCQkJICAgIAls
ZXguZ19maWVsZC0+ZmxkX2xlbmd0aCA9IHNpemVvZiAoU1NIT1JUKTsgCkBAIC0yNDc5LDE3ICsy
NDc5LDE3IEBACiAJCQkgICAgCWxleC5nX2ZpZWxkLT5mbGRfZHR5cGUgPSBkdHlwZV9sb25nOyAK
IAkJCSAgICAJbGV4LmdfZmllbGQtPmZsZF9sZW5ndGggPSBzaXplb2YgKFNMT05HKTsgCiAJCQkg
ICAgCX0KLQkJCWxleC5nX2ZpZWxkLT5mbGRfcHJlY2lzaW9uID0gKFVTSE9SVCkgJDI7CisJCQls
ZXguZ19maWVsZC0+ZmxkX3ByZWNpc2lvbiA9IChVU0hPUlQpKHNpemVfdCkgJDI7CiAJCQl9CiAJ
CXwgJygnIHNpZ25lZF9sb25nX2ludGVnZXIgJywnIHNpZ25lZF9sb25nX2ludGVnZXIgJyknCiAJ
CQl7IAotCQkJaWYgKCAoKFNMT05HKSAkMiA8IDEpIHx8ICgoU0xPTkcpICQyID4gMTgpICkKKwkJ
CWlmICggKChTTE9ORykoSVBUUikgJDIgPCAxKSB8fCAoKFNMT05HKShJUFRSKSAkMiA+IDE4KSAp
CiAJCQkgICAgeXlhYmFuZG9uICgtODQyLCBpc2NfcHJlY2lzaW9uX2Vycik7CiAJCQkJLyogUHJl
Y2lzaW9uIHNob3VsZCBiZSBiZXR3ZWVuIDEgYW5kIDE4ICovIAotCQkJaWYgKCgoU0xPTkcpICQ0
ID4gKFNMT05HKSAkMikgfHwgKChTTE9ORykgJDQgPCAwKSkKKwkJCWlmICgoKFNMT05HKShJUFRS
KSAkNCA+IChTTE9ORykoSVBUUikgJDIpIHx8ICgoU0xPTkcpKElQVFIpICQ0IDwgMCkpCiAJCQkg
ICAgeXlhYmFuZG9uICgtODQyLCBpc2Nfc2NhbGVfbm9ndCk7CiAJCQkJLyogU2NhbGUgbXVzdCBi
ZSBiZXR3ZWVuIDAgYW5kIHByZWNpc2lvbiAqLwotCQkJaWYgKChTTE9ORykgJDIgPiA5KQorCQkJ
aWYgKChTTE9ORykoSVBUUikgJDIgPiA5KQogCQkJICAgIHsKIAkJCSAgICBpZiAoICggKGNsaWVu
dF9kaWFsZWN0IDw9IFNRTF9ESUFMRUNUX1Y1KSAmJgogCQkJCSAgIChkYl9kaWFsZWN0ICAgICA+
ICBTUUxfRElBTEVDVF9WNSkgKSB8fApAQCAtMjUyNyw3ICsyNTI3LDcgQEAKIAkJCSAgICB9CiAJ
CQllbHNlCiAJCQkgICAgewotCQkJICAgIGlmICgoU0xPTkcpICQyIDwgNSkKKwkJCSAgICBpZiAo
KFNMT05HKShJUFRSKSAkMiA8IDUpCiAJCQkgICAgCXsKIAkJCSAgICAJbGV4LmdfZmllbGQtPmZs
ZF9kdHlwZSA9IGR0eXBlX3Nob3J0OyAKIAkJCSAgICAJbGV4LmdfZmllbGQtPmZsZF9sZW5ndGgg
PSBzaXplb2YgKFNTSE9SVCk7IApAQCAtMjUzOCw4ICsyNTM4LDggQEAKIAkJCSAgICAJbGV4Lmdf
ZmllbGQtPmZsZF9sZW5ndGggPSBzaXplb2YgKFNMT05HKTsgCiAJCQkgICAgCX0KIAkJCSAgICB9
Ci0JCQlsZXguZ19maWVsZC0+ZmxkX3ByZWNpc2lvbiA9IChVU0hPUlQpICQyOwotCQkJbGV4Lmdf
ZmllbGQtPmZsZF9zY2FsZSA9IC0gKFNTSE9SVCkgJDQ7CisJCQlsZXguZ19maWVsZC0+ZmxkX3By
ZWNpc2lvbiA9IChVU0hPUlQpKHNpemVfdCkgJDI7CisJCQlsZXguZ19maWVsZC0+ZmxkX3NjYWxl
ID0gLSAoU1NIT1JUKShzaXplX3QpICQ0OwogCQkJfQogCQk7CiAKQEAgLTI1NTMsNyArMjU1Myw3
IEBACiAKIGZsb2F0X3R5cGUJOiBLV19GTE9BVCBwcmVjaXNpb25fb3B0CiAJCQl7IAotCQkJaWYg
KChTTE9ORykgJDIgPiA3KQorCQkJaWYgKChTTE9ORykoSVBUUikgJDIgPiA3KQogCQkJICAgIHsK
IAkJCSAgICBsZXguZ19maWVsZC0+ZmxkX2R0eXBlID0gZHR5cGVfZG91YmxlOwogCQkJICAgIGxl
eC5nX2ZpZWxkLT5mbGRfbGVuZ3RoID0gc2l6ZW9mIChkb3VibGUpOyAKQEAgLTI3NTYsNyArMjc1
Niw3IEBACiAJCTsKIAogdGFibGVfbG9jawk6IEZPUiBsb2NrX3R5cGUgbG9ja19tb2RlCi0JCQl7
ICQkID0gbWFrZV9mbGFnX25vZGUgKG5vZF9sb2NrX21vZGUsIChTU0hPUlQpICgoU1NIT1JUKSAk
MiB8IChTU0hPUlQpICQzKSwgKFNTSE9SVCkgMCwgTlVMTCk7IH0KKwkJCXsgJCQgPSBtYWtlX2Zs
YWdfbm9kZSAobm9kX2xvY2tfbW9kZSwgKFNTSE9SVCkgKChTU0hPUlQpKHNpemVfdCkgJDIgfCAo
U1NIT1JUKShzaXplX3QpICQzKSwgKFNTSE9SVCkgMCwgTlVMTCk7IH0KIAkJfAogCQkJeyAkJCA9
IDA7IH0KIAkJOwpAQCAtMzcwNiwzMiArMzcwNiwzMiBAQAogCiBzaWduZWRfc2hvcnRfaW50ZWdl
cgk6CW5vbm5lZ19zaG9ydF9pbnRlZ2VyCiAJCXwgJy0nIG5lZ19zaG9ydF9pbnRlZ2VyCi0JCQl7
ICQkID0gKERTUUxfTk9EKSAtIChTTE9ORykgJDI7IH0KKwkJCXsgJCQgPSAoRFNRTF9OT0QpIC0g
KFNMT05HKShJUFRSKSAkMjsgfQogCQk7CiAKIG5vbm5lZ19zaG9ydF9pbnRlZ2VyCTogTlVNQkVS
Ci0JCQl7IGlmICgoU0xPTkcpICQxID4gU0hSVF9QT1NfTUFYKQorCQkJeyBpZiAoKFNMT05HKShJ
UFRSKSAkMSA+IFNIUlRfUE9TX01BWCkKIAkJCSAgICB5eWFiYW5kb24gKC04NDIsIGlzY19leHBl
Y19zaG9ydCk7CiAJCQkJLyogU2hvcnQgaW50ZWdlciBleHBlY3RlZCAqLwogCQkJICAkJCA9ICQx
O30KIAkJOwogCiBuZWdfc2hvcnRfaW50ZWdlciA6IE5VTUJFUgotCQkJeyBpZiAoKFNMT05HKSAk
MSA+IFNIUlRfTkVHX01BWCkKKwkJCXsgaWYgKChTTE9ORykoSVBUUikgJDEgPiBTSFJUX05FR19N
QVgpCiAJCQkgICAgeXlhYmFuZG9uICgtODQyLCBpc2NfZXhwZWNfc2hvcnQpOwogCQkJCS8qIFNo
b3J0IGludGVnZXIgZXhwZWN0ZWQgKi8KIAkJCSAgJCQgPSAkMTt9CiAJCTsKIAogcG9zX3Nob3J0
X2ludGVnZXIgOiBub25uZWdfc2hvcnRfaW50ZWdlcgotCQkJeyBpZiAoKFNMT05HKSAkMSA9PSAw
KQorCQkJeyBpZiAoKFNMT05HKShJUFRSKSAkMSA9PSAwKQogCQkJICAgIHl5YWJhbmRvbiAoLTg0
MiwgaXNjX2V4cGVjX3Bvc2l0aXZlKTsKIAkJCQkvKiBQb3NpdGl2ZSBudW1iZXIgZXhwZWN0ZWQg
Ki8KIAkJCSAgJCQgPSAkMTt9CiAJCTsKIAogdW5zaWduZWRfc2hvcnRfaW50ZWdlciA6IE5VTUJF
UgotCQkJeyBpZiAoKFNMT05HKSAkMSA+IFNIUlRfVU5TSUdORURfTUFYKQorCQkJeyBpZiAoKFNM
T05HKShJUFRSKSAkMSA+IFNIUlRfVU5TSUdORURfTUFYKQogCQkJICAgIHl5YWJhbmRvbiAoLTg0
MiwgaXNjX2V4cGVjX3VzaG9ydCk7CiAJCQkJLyogVW5zaWduZWQgc2hvcnQgaW50ZWdlciBleHBl
Y3RlZCAqLwogCQkJICAkJCA9ICQxO30KQEAgLTM3MzksNyArMzczOSw3IEBACiAKIHNpZ25lZF9s
b25nX2ludGVnZXIJOglsb25nX2ludGVnZXIKIAkJfCAnLScgbG9uZ19pbnRlZ2VyCi0JCQl7ICQk
ID0gKERTUUxfTk9EKSAtIChTTE9ORykgJDI7IH0KKwkJCXsgJCQgPSAoRFNRTF9OT0QpIC0gKFNM
T05HKShJUFRSKSAkMjsgfQogCQk7CiAKIGxvbmdfaW50ZWdlcgk6IE5VTUJFUgpAQCAtMzgyMCwx
NCArMzgyMCwxNCBAQAogCiBzdHJpbmdfdmFsdWVfZnVuY3Rpb24JOiAgU1VCU1RSSU5HICcoJyB2
YWx1ZSBGUk9NIHBvc19zaG9ydF9pbnRlZ2VyICcpJwogCQkJCXsgJCQgPSBtYWtlX25vZGUgKG5v
ZF9zdWJzdHIsIGVfc3Vic3RyX2NvdW50LCAkMywKLQkJCQkJTUFLRV9jb25zdGFudCAoKFNUUikg
KChTTE9ORykoJDUpIC0gMSksIENPTlNUQU5UX1NMT05HKSwKKwkJCQkJTUFLRV9jb25zdGFudCAo
KFNUUikgKChTTE9ORykoSVBUUikoJDUpIC0gMSksIENPTlNUQU5UX1NMT05HKSwKIAkJCQkJTUFL
RV9jb25zdGFudCAoKFNUUikgU0hSVF9QT1NfTUFYLCBDT05TVEFOVF9TTE9ORykpOyB9CiAJCQkv
KiBDVkM6IEl0IHdhcyBlYXNpZXIgdG8gcHJvdmlkZSBhIGNvbnN0YW50IHdpdGggbWF4aW11bSB2
YWx1ZSBpZiB0aGUKIAkJCXRoaXJkIHBhcmFtZXRlciAtbGVuZ3RoLSBpcyBvbW1pdHRlZCB0aGFu
IHRvIGNoYXNlIGFuZCBmaXggdGhlIGZ1bmN0aW9ucwogCQkJdGhhdCB0cmVhdCBub2Rfc3Vic3Ry
IGFzIGFuIGFnZ3JlZ2F0ZSBhbmQgZG8gbm90IGV4cGVjdCBOVUxMIGFyZ3VtZW50cy4gKi8KIAkJ
CXwgU1VCU1RSSU5HICcoJyB2YWx1ZSBGUk9NIHBvc19zaG9ydF9pbnRlZ2VyIEZPUiBub25uZWdf
c2hvcnRfaW50ZWdlciAnKScKIAkJCQl7ICQkID0gbWFrZV9ub2RlIChub2Rfc3Vic3RyLCBlX3N1
YnN0cl9jb3VudCwgJDMsCi0JCQkJCU1BS0VfY29uc3RhbnQgKChTVFIpICgoU0xPTkcpKCQ1KSAt
IDEpLCBDT05TVEFOVF9TTE9ORyksCisJCQkJCU1BS0VfY29uc3RhbnQgKChTVFIpICgoU0xPTkcp
KElQVFIpKCQ1KSAtIDEpLCBDT05TVEFOVF9TTE9ORyksCiAJCQkJCU1BS0VfY29uc3RhbnQgKChT
VFIpICgkNyksIENPTlNUQU5UX1NMT05HKSk7IH0KIAkJCXwgS1dfVVBQRVIgJygnIHZhbHVlICcp
JwogCQkJCXsgJCQgPSBtYWtlX25vZGUgKG5vZF91cGNhc2UsIDEsICQzKTsgfQpAQCAtNDk2MCw3
ICs0OTYwLDcgQEAKIAogICAgIENIRUNLX0JPVU5EKHApOwogICAgICpwID0gMDsKLSAgICBzeW0g
PSBIU0hEX2xvb2t1cCAoTlVMTF9QVFIsIChURVhUICopIHN0cmluZywgKFNTSE9SVCkocCAtIHN0
cmluZyksIFNZTV9rZXl3b3JkLCBwYXJzZXJfdmVyc2lvbik7CisgICAgc3ltID0gSFNIRF9sb29r
dXAgKE5VTExfUFRSLCAoVEVYVCAqKSBzdHJpbmcsIChTU0hPUlQpKHNpemVfdCkocCAtIHN0cmlu
ZyksIFNZTV9rZXl3b3JkLCBwYXJzZXJfdmVyc2lvbik7CiAgICAgaWYgKHN5bSkKIAl7CiAJLyog
MTMgSnVuZSAyMDAzLiBOaWNrb2xheSBTYW1vZmF0b3YKZGlmZiAtTmF1ciBmaXJlYmlyZC0xLjUu
My40ODcwLm9sZC9zcmMvZHNxbC9wYXNzMS5jcHAgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvZHNx
bC9wYXNzMS5jcHAKLS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAub2xkL3NyYy9kc3FsL3Bhc3MxLmNw
cAkyMDA2LTA4LTA2IDA2OjQ3OjIwLjAwMDAwMDAwMCArMDIwMAorKysgZmlyZWJpcmQtMS41LjMu
NDg3MC9zcmMvZHNxbC9wYXNzMS5jcHAJMjAwNi0wOC0wNiAwNzo1MjowOS4wMDAwMDAwMDAgKzAy
MDAKQEAgLTY0Miw3ICs2NDIsNyBAQAogCQkJCQkJCQkJICBUUlVFLCBUUlVFLAogCQkJCQkJCQkJ
ICAvKiBQYXNzIDAgaGVyZSB0byByZXN0b3JlIG9sZGVyIHBhcmFtZXRlciAKIAkJCQkJCQkJCQlv
cmRlcmluZyBiZWhhdmlvciAqLwotCQkJCQkJCQkJICAoVVNIT1JUKShVTE9ORykgaW5wdXQtPm5v
ZF9hcmdbMF0pOworCQkJCQkJCQkJICAoVVNIT1JUKShVTE9ORykoSVBUUikgaW5wdXQtPm5vZF9h
cmdbMF0pOwogCQlyZXR1cm4gbm9kZTsKIAogCWNhc2Ugbm9kX3VkZjoKQEAgLTE1NjEsNyArMTU2
MSw3IEBACiAJCQkJfQogCQkJCWVsc2UgewogCQkJCQkvLyB3ZSBoYXZlIENvdW50KCopCi0JCQkJ
CWlmIChyZXF1ZXN0LT5yZXFfc2NvcGVfbGV2ZWwgPT0gKFVMT05HKSBub2RlLT5ub2RfYXJnWzFd
KSB7CisJCQkJCWlmIChyZXF1ZXN0LT5yZXFfc2NvcGVfbGV2ZWwgPT0gKFVMT05HKShJUFRSKSBu
b2RlLT5ub2RfYXJnWzFdKSB7CiAJCQkJCQlhZ2dyZWdhdGUgPSBUUlVFOwogCQkJCQl9CiAJCQkJ
fQpAQCAtNDQyNiw3ICs0NDI2LDcgQEAKIAkJCQkJKHNsaXN0X25vZGUtPm5vZF90eXBlID09IG5v
ZF9saXN0KSkKIAkJCQl7CiAJCQkJCS8qIGFuIHNlbGVjdCBsaXN0IGlzIHRoZXJlICovCi0JCQkJ
CXBvc2l0aW9uID0gKFVMT05HKSBzdWItPm5vZF9hcmdbMF07CisJCQkJCXBvc2l0aW9uID0gKFVM
T05HKShJUFRSKSBzdWItPm5vZF9hcmdbMF07CiAJCQkJCWlmICgocG9zaXRpb24gPCAxKSB8fCAo
cG9zaXRpb24gPiAoVUxPTkcpIHNsaXN0X25vZGUtPm5vZF9jb3VudCkpIAogCQkJCQl7CiAJCQkJ
CQlFUlJEX3Bvc3QoZ2RzX3NxbGVyciwgZ2RzX2FyZ19udW1iZXIsIChTTE9ORykgLSAxMDQsCkBA
IC00ODE5LDcgKzQ4MTksNyBAQAogCQl9CiAKIAkJaWYgKG5vZGUxLT5ub2RfdHlwZSA9PSBub2Rf
Y29uc3RhbnQgJiYgbm9kZTEtPm5vZF9kZXNjLmRzY19kdHlwZSA9PSBkdHlwZV9sb25nKSB7Ci0J
CQlwb3NpdGlvbiA9IChVTE9ORykgKG5vZGUxLT5ub2RfYXJnWzBdKTsKKwkJCXBvc2l0aW9uID0g
KFVMT05HKShJUFRSKSAobm9kZTEtPm5vZF9hcmdbMF0pOwogCQkJaWYgKChwb3NpdGlvbiA8IDEp
IHx8ICFzX2xpc3QgfHwgCiAJCQkJKHBvc2l0aW9uID4gKFVMT05HKSBzX2xpc3QtPm5vZF9jb3Vu
dCkpIHsKIAkJCQlFUlJEX3Bvc3QoZ2RzX3NxbGVyciwgZ2RzX2FyZ19udW1iZXIsIChTTE9ORykg
LSAxMDQsCkBAIC01MDgyLDcgKzUwODIsNyBAQAogCQkJCUVSUkRfcG9zdChnZHNfc3FsZXJyLCBn
ZHNfYXJnX251bWJlciwgKFNMT05HKSAtIDEwNCwKIAkJCQkJCSAgZ2RzX2FyZ19nZHMsIGdkc19k
c3FsX2NvbW1hbmRfZXJyLCBnZHNfYXJnX2dkcywgZ2RzX29yZGVyX2J5X2VyciwJLyogaW52YWxp
ZCBPUkRFUiBCWSBjbGF1c2UgKi8KIAkJCQkJCSAgMCk7Ci0JCQludW1iZXIgPSAoU0xPTkcpIHBv
c2l0aW9uLT5ub2RfYXJnWzBdOworCQkJbnVtYmVyID0gKFNMT05HKShJUFRSKSBwb3NpdGlvbi0+
bm9kX2FyZ1swXTsKIAkJCWlmIChudW1iZXIgPCAxIHx8IG51bWJlciA+IHVuaW9uX2l0ZW1zLT5u
b2RfY291bnQpCiAJCQkJRVJSRF9wb3N0KGdkc19zcWxlcnIsIGdkc19hcmdfbnVtYmVyLCAoU0xP
TkcpIC0gMTA0LAogCQkJCQkJICBnZHNfYXJnX2dkcywgZ2RzX2RzcWxfY29tbWFuZF9lcnIsIGdk
c19hcmdfZ2RzLCBnZHNfb3JkZXJfYnlfZXJyLAkvKiBpbnZhbGlkIE9SREVSIEJZIGNsYXVzZSAq
LwpkaWZmIC1OYXVyIGZpcmViaXJkLTEuNS4zLjQ4NzAub2xkL3NyYy9kdWRsZXkvZ2VuZXJhdGUu
Y3BwIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2R1ZGxleS9nZW5lcmF0ZS5jcHAKLS0tIGZpcmVi
aXJkLTEuNS4zLjQ4NzAub2xkL3NyYy9kdWRsZXkvZ2VuZXJhdGUuY3BwCTIwMDYtMDgtMDYgMDY6
NDc6MjYuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9kdWRsZXkv
Z2VuZXJhdGUuY3BwCTIwMDYtMDgtMDYgMDg6MDY6NDkuMDAwMDAwMDAwICswMjAwCkBAIC00MjYs
NyArNDI2LDcgQEAKIAljYXNlIG5vZF9hYm9ydDoKIAkJQ0hFQ0tfQkxSKDIpOwogCQlTVFVGRihi
bHJfbGVhdmUpOwotCQlTVFVGRigoaW50KSBub2RlLT5ub2RfYXJnWzBdKTsKKwkJU1RVRkYoKGlu
dCkgKElQVFIpIG5vZGUtPm5vZF9hcmdbMF0pOwogCQlyZXR1cm47CiAKIAljYXNlIG5vZF9lcmFz
ZToKZGlmZiAtTmF1ciBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvZHVkbGV5L3Rybi5jcHAg
ZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvZHVkbGV5L3Rybi5jcHAKLS0tIGZpcmViaXJkLTEuNS4z
LjQ4NzAub2xkL3NyYy9kdWRsZXkvdHJuLmNwcAkyMDA2LTA4LTA2IDA2OjQ3OjI2LjAwMDAwMDAw
MCArMDIwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvZHVkbGV5L3Rybi5jcHAJMjAwNi0w
OC0wNiAwODowNzoxMi4wMDAwMDAwMDAgKzAyMDAKQEAgLTI0NCw3ICsyNDQsNyBAQAogCQkJCWJy
ZWFrOwogCiAJCQljYXNlIGFjdF9kX3NoYWRvdzoKLQkJCQlkcm9wX3NoYWRvdyhkeW4sIChTTE9O
RykgKGFjdGlvbi0+YWN0X29iamVjdCkpOworCQkJCWRyb3Bfc2hhZG93KGR5biwgKFNMT05HKShJ
UFRSKSAoYWN0aW9uLT5hY3Rfb2JqZWN0KSk7CiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgYWN0X21f
dHJpZ2dlcl9tc2c6CmRpZmYgLU5hdXIgZmlyZWJpcmQtMS41LjMuNDg3MC5vbGQvc3JjL2pyZC9q
cmQuY3BwIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9qcmQuY3BwCi0tLSBmaXJlYmlyZC0x
LjUuMy40ODcwLm9sZC9zcmMvanJkL2pyZC5jcHAJMjAwNi0wOC0wNiAwNjo1MjozMi4wMDAwMDAw
MDAgKzAyMDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9qcmQuY3BwCTIwMDYtMDgt
MDYgMDY6NTM6MTUuMDAwMDAwMDAwICswMjAwCkBAIC0zODc3LDkgKzM4NzcsOSBAQAogCXsKIAkJ
aWYgKCAobm9kZSA9IGNzYi0+Y3NiX3JwdFtpXS5jc2JfbWVzc2FnZSkgKQogCQl7Ci0JCQlpZiAo
KGludCkgbm9kZS0+bm9kX2FyZ1tlX21zZ19udW1iZXJdID09IDApIHsKKwkJCWlmICgoaW50KSAo
SVBUUikgbm9kZS0+bm9kX2FyZ1tlX21zZ19udW1iZXJdID09IDApIHsKIAkJCQlpbl9tZXNzYWdl
ID0gbm9kZTsKLQkJCX0gZWxzZSBpZiAoKGludCkgbm9kZS0+bm9kX2FyZ1tlX21zZ19udW1iZXJd
ID09IDEpIHsKKwkJCX0gZWxzZSBpZiAoKGludCkgKElQVFIpIG5vZGUtPm5vZF9hcmdbZV9tc2df
bnVtYmVyXSA9PSAxKSB7CiAJCQkJb3V0X21lc3NhZ2UgPSBub2RlOwogCQkJfQogCQl9CmRpZmYg
LU5hdXIgZmlyZWJpcmQtMS41LjMuNDg3MC5vbGQvc3JjL2pyZC9qcm4uY3BwIGZpcmViaXJkLTEu
NS4zLjQ4NzAvc3JjL2pyZC9qcm4uY3BwCi0tLSBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMv
anJkL2pybi5jcHAJMjAwNi0wOC0wNiAwNjo0NzoxNy4wMDAwMDAwMDAgKzAyMDAKKysrIGZpcmVi
aXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9qcm4uY3BwCTIwMDYtMDgtMDYgMDY6NTU6MjYuMDAwMDAw
MDAwICswMjAwCkBAIC04MzYsNyArODM2LDcgQEAKIAlmb3IgKGxvb3AgPSAwOyBsb29wIDwgMjA7
IGxvb3ArKykgewogCQlmb3IgKDs7KSB7CiAJCQlqb3VybmFsLT5qcm5fY2hhbm5lbCA9IChpbnQg
Kikgc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKLQkJCWlmICgoaW50KSBqb3VybmFs
LT5qcm5fY2hhbm5lbCAhPSAtMSkKKwkJCWlmICgoaW50KSAoSVBUUikgam91cm5hbC0+anJuX2No
YW5uZWwgIT0gLTEpCiAJCQkJYnJlYWs7CiAJCQlpZiAoIVNZU0NBTExfSU5URVJSVVBURUQoZXJy
bm8pKSB7CiAJCQkJZXJyb3Ioc3RhdHVzX3ZlY3Rvciwgam91cm5hbCwgZXJybm8sICJzb2NrZXQi
KTsKQEAgLTg1OSwxOCArODU5LDE4IEBACiAJCQlyZXR1cm4gcmV0X3ZhbDsKIAkJfQogCi0JCWlm
ICghY29ubmVjdCgoaW50KSBqb3VybmFsLT5qcm5fY2hhbm5lbCwgKHNvY2thZGRyKikmYWRkcmVz
cywgc2l6ZW9mKGFkZHJlc3MpKSkKKwkJaWYgKCFjb25uZWN0KChpbnQpIChJUFRSKSBqb3VybmFs
LT5qcm5fY2hhbm5lbCwgKHNvY2thZGRyKikmYWRkcmVzcywgc2l6ZW9mKGFkZHJlc3MpKSkKIAkJ
CWJyZWFrOwogCiAJCXNsZWVwKDMpOwogCiAJCWlmIChsb29wIDwgMTYpIHsKLQkJCWNsb3NlKChp
bnQpIGpvdXJuYWwtPmpybl9jaGFubmVsKTsKKwkJCWNsb3NlKChpbnQpIChJUFRSKSBqb3VybmFs
LT5qcm5fY2hhbm5lbCk7CiAJCQljb250aW51ZTsKIAkJfQogCQlpZiAoIVNZU0NBTExfSU5URVJS
VVBURUQoZXJybm8pKSB7CiAJCQlpZiAocmV0cnkpIHsKLQkJCQljbG9zZSgoaW50KSBqb3VybmFs
LT5qcm5fY2hhbm5lbCk7CisJCQkJY2xvc2UoKGludCkgKElQVFIpIGpvdXJuYWwtPmpybl9jaGFu
bmVsKTsKIAkJCQlnZHNfX2ZyZWUoam91cm5hbCk7CiAJCQkJKnJldF9qcm4gPSAoSlJOKSBOVUxM
OwogCQkJCXJldHVybiBGQl9TVUNDRVNTOwpAQCAtODc5LDcgKzg3OSw3IEBACiAJCQlnZHNfX2Zy
ZWUoam91cm5hbCk7CiAJCQlyZXR1cm4gRkJfRkFJTFVSRTsKIAkJfQotCQljbG9zZSgoaW50KSBq
b3VybmFsLT5qcm5fY2hhbm5lbCk7CisJCWNsb3NlKChpbnQpIChJUFRSKSBqb3VybmFsLT5qcm5f
Y2hhbm5lbCk7CiAJfQogI2VuZGlmCiAKQEAgLTkzOSw3ICs5MzksNyBAQAogCQlpZiAocmV0cnkp
CiAJCXsKICNpZmRlZiBCU0RfU09DS0VUUwotCQkJY2xvc2UoKGludCkgam91cm5hbC0+anJuX2No
YW5uZWwpOworCQkJY2xvc2UoKGludCkgKElQVFIpIGpvdXJuYWwtPmpybl9jaGFubmVsKTsKICNl
bmRpZgogCiAjaWZkZWYgV0lOX05UCkBAIC0xMDU2LDcgKzEwNTYsNyBAQAogICAgIHdpdGggdXMs
IHNvIGtlZXAgdHJ5aW5nIHVudGlsIHN1Y2Nlc3NmdWwuICAqLwogCiAJZG8gewotCQlsID0gcmVj
digoaW50KSBqb3VybmFsLT5qcm5fY2hhbm5lbCwgKGNoYXIgKikgcmVwbHksIHNpemVvZihzdHJ1
Y3QganJuciksIDApOworCQlsID0gcmVjdigoaW50KSAoSVBUUikgam91cm5hbC0+anJuX2NoYW5u
ZWwsIChjaGFyICopIHJlcGx5LCBzaXplb2Yoc3RydWN0IGpybnIpLCAwKTsKIAl9IHdoaWxlIChs
IDwgMCAmJiBTWVNDQUxMX0lOVEVSUlVQVEVEKGVycm5vKSk7CiAKIAlpZiAobCA8IDApIHsKQEAg
LTEwOTUsNyArMTA5NSw3IEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovCiAKICNpZmRlZiBCU0RfU09DS0VUUwotCWlmIChjbG9zZSgoaW50KSBqb3VybmFsLT5qcm5f
Y2hhbm5lbCkgPCAwKSB7CisJaWYgKGNsb3NlKChpbnQpIChJUFRSKSBqb3VybmFsLT5qcm5fY2hh
bm5lbCkgPCAwKSB7CiAJCWVycm9yKHN0YXR1c192ZWN0b3IsIGpvdXJuYWwsIGVycm5vLCAiY2xv
c2UiKTsKIAkJcmV0dXJuIEZCX0ZBSUxVUkU7CiAJfQpAQCAtMTE2Niw3ICsxMTY2LDcgQEAKICAg
ICB3aXRoIHVzLCBzbyBrZWVwIHRyeWluZyB1bnRpbCBzdWNjZXNzZnVsLiAgKi8KIAogCWRvIHsK
LQkJbCA9IHNlbmQoKGludCkgam91cm5hbC0+anJuX2NoYW5uZWwsIChjaGFyICopIGJ1ZmZlciwg
KGludCkgbGVuZ3RoLCAwKTsKKwkJbCA9IHNlbmQoKGludCkgKElQVFIpIGpvdXJuYWwtPmpybl9j
aGFubmVsLCAoY2hhciAqKSBidWZmZXIsIChpbnQpIGxlbmd0aCwgMCk7CiAJfSB3aGlsZSAobCA8
IDAgJiYgU1lTQ0FMTF9JTlRFUlJVUFRFRChlcnJubykpOwogCiAJaWYgKGwgPCAwKSB7CmRpZmYg
LU5hdXIgZmlyZWJpcmQtMS41LjMuNDg3MC5vbGQvc3JjL2pyZC9sY2suY3BwIGZpcmViaXJkLTEu
NS4zLjQ4NzAvc3JjL2pyZC9sY2suY3BwCi0tLSBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMv
anJkL2xjay5jcHAJMjAwNi0wOC0wNiAwNjo0NzoxNy4wMDAwMDAwMDAgKzAyMDAKKysrIGZpcmVi
aXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9sY2suY3BwCTIwMDYtMDgtMDYgMDc6NTY6MTcuMDAwMDAw
MDAwICswMjAwCkBAIC04Nyw4ICs4Nyw4IEBACiAjaWZkZWYgU1VQRVJTRVJWRVIKIAogI2RlZmlu
ZSBMQ0tfT1dORVJfSURfUFJPQ0VTUwkJKFNMT05HKSBnZXRwaWQoKQotI2RlZmluZSBMQ0tfT1dO
RVJfSURfREJCCQkoU0xPTkcpIGRiYgotI2RlZmluZSBMQ0tfT1dORVJfSURfQVRUCQkoU0xPTkcp
IGF0dGFjaG1lbnQKKyNkZWZpbmUgTENLX09XTkVSX0lEX0RCQgkJKFNMT05HKShJUFRSKSBkYmIK
KyNkZWZpbmUgTENLX09XTkVSX0lEX0FUVAkJKFNMT05HKShJUFRSKSBhdHRhY2htZW50CiAKICNk
ZWZpbmUgTENLX09XTkVSX1RZUEVfUFJPQ0VTUwkJTENLX09XTkVSX3Byb2Nlc3MKICNkZWZpbmUg
TENLX09XTkVSX1RZUEVfREJCCQlMQ0tfT1dORVJfZGJiCmRpZmYgLU5hdXIgZmlyZWJpcmQtMS41
LjMuNDg3MC5vbGQvc3JjL2pyZC9uYXYuY3BwIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9u
YXYuY3BwCi0tLSBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvanJkL25hdi5jcHAJMjAwNi0w
OC0wNiAwNjo0NzoxOC4wMDAwMDAwMDAgKzAyMDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3Jj
L2pyZC9uYXYuY3BwCTIwMDYtMDgtMDYgMDc6MDA6MDAuMDAwMDAwMDAwICswMjAwCkBAIC00ODcs
NyArNDg3LDcgQEAKIAogCWluaXRfZmV0Y2goaW1wdXJlKTsKIAlpZHggPQotCQkoSURYICopICgo
U0NIQVIgKikgaW1wdXJlICsgKFNMT05HKSByc2ItPnJzYl9hcmdbUlNCX05BVl9pZHhfb2Zmc2V0
XSk7CisJCShJRFggKikgKChTQ0hBUiAqKSBpbXB1cmUgKyAoU0xPTkcpIChJUFRSKSByc2ItPnJz
Yl9hcmdbUlNCX05BVl9pZHhfb2Zmc2V0XSk7CiAKIC8qIFRoZSBiaXRtYXAgaXMgb25seSB2YWxp
ZCB3aGVuIHdlIGFyZSBjb250aW51aW5nIG9uIGluIG9uZSAKICAgIGRpcmVjdGlvbi4gIEl0IGlz
IG9mIG5vIGhlbHAgd2hlbiB3ZSBjaGFuZ2UgZGlyZWN0aW9uLApAQCAtNTIxLDEyICs1MjEsMTIg
QEAKICNpZmRlZiBTQ1JPTExBQkxFX0NVUlNPUlMKIAkJTU9WRV9GQVNUKAogCQkJCSAgKGltcHVy
ZS0+aXJzYl9uYXZfZGF0YSArCi0JCQkJICAgKDIgKiAoU0xPTkcpIHJzYi0+cnNiX2FyZ1tSU0Jf
TkFWX2tleV9sZW5ndGhdKSksCisJCQkJICAgKDIgKiAoU0xPTkcpIChJUFRSKSByc2ItPnJzYl9h
cmdbUlNCX05BVl9rZXlfbGVuZ3RoXSkpLAogCQkJCSAgdXBwZXIua2V5X2RhdGEsIHVwcGVyLmtl
eV9sZW5ndGgpOwogI2Vsc2UKIAkJTU9WRV9GQVNUKAogCQkJCSAgKGltcHVyZS0+aXJzYl9uYXZf
ZGF0YSArCi0JCQkJICAgKFNMT05HKSByc2ItPnJzYl9hcmdbUlNCX05BVl9rZXlfbGVuZ3RoXSks
IHVwcGVyLmtleV9kYXRhLAorCQkJCSAgIChTTE9ORykgKElQVFIpIHJzYi0+cnNiX2FyZ1tSU0Jf
TkFWX2tleV9sZW5ndGhdKSwgdXBwZXIua2V5X2RhdGEsCiAJCQkJICB1cHBlci5rZXlfbGVuZ3Ro
KTsKICNlbmRpZgogCX0KQEAgLTUzNCw3ICs1MzQsNyBAQAogCQlsb3dlci5rZXlfbGVuZ3RoID0g
aW1wdXJlLT5pcnNiX25hdl9sb3dlcl9sZW5ndGg7CiAJCU1PVkVfRkFTVCgKIAkJCQkgIChpbXB1
cmUtPmlyc2JfbmF2X2RhdGEgKwotCQkJCSAgIChTTE9ORykgcnNiLT5yc2JfYXJnW1JTQl9OQVZf
a2V5X2xlbmd0aF0pLCBsb3dlci5rZXlfZGF0YSwKKwkJCQkgICAoU0xPTkcpIChJUFRSKSByc2It
PnJzYl9hcmdbUlNCX05BVl9rZXlfbGVuZ3RoXSksIGxvd2VyLmtleV9kYXRhLAogCQkJCSAgbG93
ZXIua2V5X2xlbmd0aCk7CiAJfQogCkBAIC0xNDA0LDcgKzE0MDQsNyBAQAogCXRkYmIgPSBHRVRf
VEhSRUFEX0RBVEE7CiAKIAlpZHggPQotCQkoSURYICopICgoU0NIQVIgKikgaW1wdXJlICsgKFNM
T05HKSByc2ItPnJzYl9hcmdbUlNCX05BVl9pZHhfb2Zmc2V0XSk7CisJCShJRFggKikgKChTQ0hB
UiAqKSBpbXB1cmUgKyAoU0xPTkcpIChJUFRSKSByc2ItPnJzYl9hcmdbUlNCX05BVl9pZHhfb2Zm
c2V0XSk7CiAJcGFnZSA9IChCVFIpIENDSF9GRVRDSCh0ZGJiLCB3aW5kb3csIExDS19yZWFkLCBw
YWdfaW5kZXgpOwogCiAvKiB0aGUgb3V0ZXIgbG9vcCBnb2VzIHRocm91Z2ggYWxsIHRoZSBzaWJs
aW5nIHBhZ2VzCkBAIC0xNjE5LDcgKzE2MTksNyBAQAogCXRkYmIgPSBHRVRfVEhSRUFEX0RBVEE7
CiAJcmVxdWVzdCA9IHRkYmItPnRkYmJfcmVxdWVzdDsKIAlpZHggPQotCQkoSURYICopICgoU0NI
QVIgKikgaW1wdXJlICsgKFNMT05HKSByc2ItPnJzYl9hcmdbUlNCX05BVl9pZHhfb2Zmc2V0XSk7
CisJCShJRFggKikgKChTQ0hBUiAqKSBpbXB1cmUgKyAoU0xPTkcpIChJUFRSKSByc2ItPnJzYl9h
cmdbUlNCX05BVl9pZHhfb2Zmc2V0XSk7CiAKIAlCT09MRUFOIHJlc3VsdDsKIApAQCAtMTY1Niw3
ICsxNjU2LDcgQEAKIAkJCQlycGItPnJwYl9yZWNvcmQsCiAJCQkJcmVpbnRlcnByZXRfY2FzdCA8
CiAJCQkJc3RydWN0IGlkeCAqPigoU0NIQVIgKikgaW1wdXJlICsKLQkJCQkJCQkgIChTTE9ORykg
cnNiLT5yc2JfYXJnW1JTQl9OQVZfaWR4X29mZnNldF0pLAorCQkJCQkJCSAgKFNMT05HKSAoSVBU
UikgcnNiLT5yc2JfYXJnW1JTQl9OQVZfaWR4X29mZnNldF0pLAogCQkJCSZ2YWx1ZSwKIAkJCQkw
KTsKIAkJaWYgKGNvbXBhcmVfa2V5cyhpZHgsIGtleS0+a2V5X2RhdGEsIGtleS0+a2V5X2xlbmd0
aCwgJnZhbHVlLCBGQUxTRSkpIHsKQEAgLTE3NTcsNyArMTc1Nyw3IEBACiAJcmV0cmlldmFsX25v
ZGUgPSAoSlJEX05PRCkgcnNiLT5yc2JfYXJnW1JTQl9OQVZfaW5kZXhdOwogCXJldHJpZXZhbCA9
IChJUkIpIHJldHJpZXZhbF9ub2RlLT5ub2RfYXJnW2VfaWR4X3JldHJpZXZhbF07CiAJaWR4ID0K
LQkJKElEWCAqKSAoKFNDSEFSICopIGltcHVyZSArIChTTE9ORykgcnNiLT5yc2JfYXJnW1JTQl9O
QVZfaWR4X29mZnNldF0pOworCQkoSURYICopICgoU0NIQVIgKikgaW1wdXJlICsgKFNMT05HKSAo
SVBUUikgcnNiLT5yc2JfYXJnW1JTQl9OQVZfaWR4X29mZnNldF0pOwogCXBhZ2UgPQogCQlCVFJf
ZmluZF9wYWdlKHRkYmIsIHJldHJpZXZhbCwgd2luZG93LCBpZHgsICZsb3dlciwgJnVwcGVyLAog
CQkJCQkgIChkaXJlY3Rpb24gPT0gUlNFX2dldF9iYWNrd2FyZCkpOwpAQCAtMTgwMiw3ICsxODAy
LDcgQEAKIAkJCWltcHVyZS0+aXJzYl9uYXZfdXBwZXJfbGVuZ3RoID0gdXBwZXIua2V5X2xlbmd0
aDsKIAkJCU1PVkVfRkFTVCh1cHBlci5rZXlfZGF0YSwKIAkJCQkJICAoaW1wdXJlLT5pcnNiX25h
dl9kYXRhICsKLQkJCQkJICAgKFNMT05HKSByc2ItPnJzYl9hcmdbUlNCX05BVl9rZXlfbGVuZ3Ro
XSksCisJCQkJCSAgIChTTE9ORykgKElQVFIpIHJzYi0+cnNiX2FyZ1tSU0JfTkFWX2tleV9sZW5n
dGhdKSwKIAkJCQkJICB1cHBlci5rZXlfbGVuZ3RoKTsKIAkJfQogCQlpZiAocmV0cmlldmFsLT5p
cmJfbG93ZXJfY291bnQpCkBAIC0xODEzLDcgKzE4MTMsNyBAQAogCQkJaW1wdXJlLT5pcnNiX25h
dl9sb3dlcl9sZW5ndGggPSBsb3dlci5rZXlfbGVuZ3RoOwogCQkJTU9WRV9GQVNUKGxvd2VyLmtl
eV9kYXRhLAogCQkJCQkgIChpbXB1cmUtPmlyc2JfbmF2X2RhdGEgKwotCQkJCQkgICAoU0xPTkcp
IHJzYi0+cnNiX2FyZ1tSU0JfTkFWX2tleV9sZW5ndGhdKSwKKwkJCQkJICAgKFNMT05HKSAoSVBU
UikgcnNiLT5yc2JfYXJnW1JTQl9OQVZfa2V5X2xlbmd0aF0pLAogCQkJCQkgIGxvd2VyLmtleV9s
ZW5ndGgpOwogCQl9CiAJCWlmIChyZXRyaWV2YWwtPmlyYl91cHBlcl9jb3VudCkKZGlmZiAtTmF1
ciBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvanJkL3JzZS5jcHAgZmlyZWJpcmQtMS41LjMu
NDg3MC9zcmMvanJkL3JzZS5jcHAKLS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAub2xkL3NyYy9qcmQv
cnNlLmNwcAkyMDA2LTA4LTA2IDA2OjQ3OjE3LjAwMDAwMDAwMCArMDIwMAorKysgZmlyZWJpcmQt
MS41LjMuNDg3MC9zcmMvanJkL3JzZS5jcHAJMjAwNi0wOC0wNiAwNzoxNzo1Mi4wMDAwMDAwMDAg
KzAyMDAKQEAgLTIxNTEsNyArMjE1MSw3IEBACiAJfQogCiAJZGVzYyA9IG1zZ19mb3JtYXQtPmZt
dF9kZXNjW21zZ19mb3JtYXQtPmZtdF9jb3VudCAtIDFdOwotCWRlc2MuZHNjX2FkZHJlc3MgPSAo
VUNIQVIgKikgKG9tICsgKGludCkgZGVzYy5kc2NfYWRkcmVzcyk7CisJZGVzYy5kc2NfYWRkcmVz
cyA9IChVQ0hBUiAqKSAob20gKyAoaW50KSAoSVBUUikgZGVzYy5kc2NfYWRkcmVzcyk7CiAJZW9z
X2Rlc2MuZHNjX2R0eXBlID0gZHR5cGVfc2hvcnQ7CiAJZW9zX2Rlc2MuZHNjX3NjYWxlID0gMDsK
IAllb3NfZGVzYy5kc2NfbGVuZ3RoID0gc2l6ZW9mKFNTSE9SVCk7CkBAIC0yOTU5LDcgKzI5NTks
NyBAQAogCWZvciAoaXRlbSA9IG1hcC0+c21iX3JwdDsgaXRlbSA8IGVuZF9pdGVtOyBpdGVtKysp
IHsKIAkJZmxhZyA9ICooZGF0YSArIGl0ZW0tPnNtYl9mbGFnX29mZnNldCk7CiAJCWZyb20gPSBp
dGVtLT5zbWJfZGVzYzsKLQkJZnJvbS5kc2NfYWRkcmVzcyA9IGRhdGEgKyAoVUxPTkcpIGZyb20u
ZHNjX2FkZHJlc3M7CisJCWZyb20uZHNjX2FkZHJlc3MgPSBkYXRhICsgKFVMT05HKSAoSVBUUikg
ZnJvbS5kc2NfYWRkcmVzczsKIAkJaWYgKChub2RlID0gaXRlbS0+c21iX25vZGUpICYmIG5vZGUt
Pm5vZF90eXBlICE9IG5vZF9maWVsZCkKIAkJCWNvbnRpbnVlOwogCkBAIC0zMjExLDcgKzMyMTEs
NyBAQAogCQllbmRfaXRlbSA9IG1hcC0+c21iX3JwdCArIG1hcC0+c21iX2NvdW50OwogCQlmb3Ig
KGl0ZW0gPSBtYXAtPnNtYl9ycHQ7IGl0ZW0gPCBlbmRfaXRlbTsgaXRlbSsrKSB7CiAJCQl0byA9
IGl0ZW0tPnNtYl9kZXNjOwotCQkJdG8uZHNjX2FkZHJlc3MgPSBkYXRhICsgKFVMT05HKSB0by5k
c2NfYWRkcmVzczsKKwkJCXRvLmRzY19hZGRyZXNzID0gZGF0YSArIChVTE9ORykgKElQVFIpIHRv
LmRzY19hZGRyZXNzOwogCQkJZmxhZyA9IEZBTFNFOwogCQkJaWYgKGl0ZW0tPnNtYl9ub2RlKSB7
CiAJCQkJZnJvbSA9IEVWTF9leHByKHRkYmIsIGl0ZW0tPnNtYl9ub2RlKTsKQEAgLTMzMDEsMTIg
KzMzMDEsMTIgQEAKIAlkZXNjMi5kc2NfZmxhZ3MgPSAwOwogCWRlc2MyLmRzY19hZGRyZXNzID0g
KFVDSEFSICopICYgaW5kaWNhdG9yOwogCWRlc2MxID0gKmZsYWdfZGVzYzsKLQlkZXNjMS5kc2Nf
YWRkcmVzcyA9IG1zZyArIChpbnQpIGZsYWdfZGVzYy0+ZHNjX2FkZHJlc3M7CisJZGVzYzEuZHNj
X2FkZHJlc3MgPSBtc2cgKyAoaW50KSAoSVBUUikgZmxhZ19kZXNjLT5kc2NfYWRkcmVzczsKIAlN
T1ZfbW92ZSgmZGVzYzEsICZkZXNjMik7CiAJaWYgKGluZGljYXRvcikgewogCQlTRVRfTlVMTChy
ZWNvcmQsIHRvX2lkKTsKIAkJbCA9IHRvX2Rlc2MtPmRzY19sZW5ndGg7Ci0JCXAgPSByZWNvcmQt
PnJlY19kYXRhICsgKGludCkgdG9fZGVzYy0+ZHNjX2FkZHJlc3M7CisJCXAgPSByZWNvcmQtPnJl
Y19kYXRhICsgKGludCkgKElQVFIpIHRvX2Rlc2MtPmRzY19hZGRyZXNzOwogCQlzd2l0Y2ggKHRv
X2Rlc2MtPmRzY19kdHlwZSkgewogCQljYXNlIGR0eXBlX3RleHQ6CiAJCQkvKiBZWVkgLSBub3Qg
bmVjZXNzYXJpbHkgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvICovCkBAIC0zMzM2LDkgKzMzMzYsOSBA
QAogCWVsc2UgewogCQlDTEVBUl9OVUxMKHJlY29yZCwgdG9faWQpOwogCQlkZXNjMSA9ICpmcm9t
X2Rlc2M7Ci0JCWRlc2MxLmRzY19hZGRyZXNzID0gbXNnICsgKGludCkgZGVzYzEuZHNjX2FkZHJl
c3M7CisJCWRlc2MxLmRzY19hZGRyZXNzID0gbXNnICsgKGludCkgKElQVFIpIGRlc2MxLmRzY19h
ZGRyZXNzOwogCQlkZXNjMiA9ICp0b19kZXNjOwotCQlkZXNjMi5kc2NfYWRkcmVzcyA9IHJlY29y
ZC0+cmVjX2RhdGEgKyAoaW50KSBkZXNjMi5kc2NfYWRkcmVzczsKKwkJZGVzYzIuZHNjX2FkZHJl
c3MgPSByZWNvcmQtPnJlY19kYXRhICsgKGludCkgKElQVFIpIGRlc2MyLmRzY19hZGRyZXNzOwog
CQlpZiAoIURTQ19FUVVJVigoJmRlc2MxKSwgKCZkZXNjMikpKQogCQkJTU9WX21vdmUoJmRlc2Mx
LCAmZGVzYzIpOwogCkBAIC0zODE3LDcgKzM4MTcsNyBAQAogCWlmICghc2ZiXy0+c2ZiX2ZpbGVf
bmFtZSkgewogCQlURVhUIGZpbGVfbmFtZVsxMjhdOwogCi0JCXNmYl8tPnNmYl9maWxlID0gKGlu
dCkgZ2RzX190ZW1wX2ZpbGUoRkFMU0UsIFNDUkFUQ0gsIGZpbGVfbmFtZSk7CisJCXNmYl8tPnNm
Yl9maWxlID0gKGludCkgKElQVFIpIGdkc19fdGVtcF9maWxlKEZBTFNFLCBTQ1JBVENILCBmaWxl
X25hbWUpOwogCQlpZiAoc2ZiXy0+c2ZiX2ZpbGUgPT0gLTEpCiAJCQlTT1JUX2Vycm9yKHRkYmIt
PnRkYmJfc3RhdHVzX3ZlY3Rvciwgc2ZiXywgIm9wZW4iLCBpc2NfaW9fZXJyb3IsCiAJCQkJCSAg
IGVycm5vKTsKZGlmZiAtTmF1ciBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvanJkL3NvcnQu
Y3BwIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL2pyZC9zb3J0LmNwcAotLS0gZmlyZWJpcmQtMS41
LjMuNDg3MC5vbGQvc3JjL2pyZC9zb3J0LmNwcAkyMDA2LTA4LTA2IDA2OjQ3OjE3LjAwMDAwMDAw
MCArMDIwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvanJkL3NvcnQuY3BwCTIwMDYtMDgt
MDYgMDc6MTk6MjcuMDAwMDAwMDAwICswMjAwCkBAIC0xNzg4LDcgKzE3ODgsNyBAQAogCQkJLyog
Q3JlYXRlIGEgc2NyYXRjaCBmaWxlICovCiAKIAkJCXNmYi0+c2ZiX2ZpbGUgPQotCQkJCShpbnQp
IGdkc19fdGVtcF9maWxlKEZBTFNFLCBTQ1JBVENILCBmaWxlX25hbWUsCisJCQkJKGludCkgKElQ
VFIpIGdkc19fdGVtcF9maWxlKEZBTFNFLCBTQ1JBVENILCBmaWxlX25hbWUsCiAJCQkJCQkJCQkg
c2ZiLT5zZmJfZGxzLT5kbHNfZGlyZWN0b3J5LCBUUlVFKTsKIAogCQkJLyogYWxsb2NhdGUgdGhl
IGZpbGUgbmFtZSBldmVuIGlmIHRoZSBmaWxlIGlzIG5vdCBvcGVuLApkaWZmIC1OYXVyIGZpcmVi
aXJkLTEuNS4zLjQ4NzAub2xkL3NyYy9xbGkvZXZhbC5jcHAgZmlyZWJpcmQtMS41LjMuNDg3MC9z
cmMvcWxpL2V2YWwuY3BwCi0tLSBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvcWxpL2V2YWwu
Y3BwCTIwMDYtMDgtMDYgMDY6NDc6MjAuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZC0xLjUu
My40ODcwL3NyYy9xbGkvZXZhbC5jcHAJMjAwNi0wOC0wNiAwODowMjowOS4wMDAwMDAwMDAgKzAy
MDAKQEAgLTIwMCwxMCArMjAwLDEwIEBACiAKIAlpZiAobm9kZS0+bm9kX3R5cGUgPT0gbm9kX3Jw
dF9hdmVyYWdlICYmIG5vZGUtPm5vZF9hcmdbZV9zdHRfZGVmYXVsdF0pCiAJCWlmIChub2RlLT5u
b2RfZGVzYy5kc2NfZHR5cGUgPT0gZHR5cGVfbG9uZykKLQkJCSooU0xPTkcgKikgbm9kZS0+bm9k
X2Rlc2MuZHNjX2FkZHJlc3MgLz0gKFNMT05HKSBub2RlLT4KKwkJCSooU0xPTkcgKikgbm9kZS0+
bm9kX2Rlc2MuZHNjX2FkZHJlc3MgLz0gKFNMT05HKSAoSVBUUikgbm9kZS0+CiAJCQkJbm9kX2Fy
Z1tlX3N0dF9kZWZhdWx0XTsKIAkJZWxzZQotCQkJKihkb3VibGUgKikgbm9kZS0+bm9kX2Rlc2Mu
ZHNjX2FkZHJlc3MgLz0gKFNMT05HKSBub2RlLT4KKwkJCSooZG91YmxlICopIG5vZGUtPm5vZF9k
ZXNjLmRzY19hZGRyZXNzIC89IChTTE9ORykgKElQVFIpIG5vZGUtPgogCQkJCW5vZF9hcmdbZV9z
dHRfZGVmYXVsdF07CiB9CiAKQEAgLTI0MSw3ICsyNDEsNyBAQAogCiAvKiBJZiB0aGlzIGlzIHRo
ZSBmaXJzdCB2YWx1ZSwganVzdCBtb3ZlIGl0IGluLiAqLwogCi0JY291bnQgPSAoU0xPTkcpIG5v
ZGUtPm5vZF9hcmdbZV9zdHRfZGVmYXVsdF0gKyAxOworCWNvdW50ID0gKFNMT05HKSAoSVBUUikg
bm9kZS0+bm9kX2FyZ1tlX3N0dF9kZWZhdWx0XSArIDE7CiAJaWYgKGNvdW50ID09IDEpIHsKIAkJ
aWYgKGRlc2MyLT5kc2NfbWlzc2luZykKIAkJCWRlc2MxLT5kc2NfbWlzc2luZyA9IERTQ19taXNz
aW5nOwpAQCAtMzc0LDcgKzM3NCw3IEBACiAJY2FzZSBub2RfcnB0X21pbjoKIAljYXNlIG5vZF9y
cHRfdG90YWw6CiAJY2FzZSBub2RfcnB0X2F2ZXJhZ2U6Ci0JCWlmICghKFNMT05HKSBub2RlLT5u
b2RfYXJnW2Vfc3R0X2RlZmF1bHRdKQorCQlpZiAoIShTTE9ORykgKElQVFIpIG5vZGUtPm5vZF9h
cmdbZV9zdHRfZGVmYXVsdF0pCiAJCQlkZXNjLT5kc2NfbWlzc2luZyA9IERTQ19taXNzaW5nOwog
CiAJY2FzZSBub2RfcnB0X2NvdW50OgpkaWZmIC1OYXVyIGZpcmViaXJkLTEuNS4zLjQ4NzAub2xk
L3NyYy9xbGkvZXhwYW5kLmNwcCBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9xbGkvZXhwYW5kLmNw
cAotLS0gZmlyZWJpcmQtMS41LjMuNDg3MC5vbGQvc3JjL3FsaS9leHBhbmQuY3BwCTIwMDYtMDgt
MDYgMDY6NDc6MjAuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9x
bGkvZXhwYW5kLmNwcAkyMDA2LTA4LTA2IDA4OjAyOjQ1LjAwMDAwMDAwMCArMDIwMApAQCAtMTgz
MCw3ICsxODMwLDcgQEAKIAogCX0KIAotCWl0ZW0tPml0bV9jb3VudCA9IChpbnQpIHN5bl9pdGVt
LT5zeW5fYXJnWzBdOworCWl0ZW0tPml0bV9jb3VudCA9IChpbnQpKElQVFIpIHN5bl9pdGVtLT5z
eW5fYXJnWzBdOwogCXJldHVybiBpdGVtOwogfQogCkBAIC0yMTMxLDcgKzIxMzEsNyBAQAogLyog
SGFuZGxlIGltcGxpY2l0IGJvb2xlYW4gZnJvbSBTUUwgeHh4IElOICh5eXkgRlJPTSByZWxhdGlv
bikgKi8KIAogCWlmIChpbnB1dC0+c3luX2FyZ1tzX3JzZV9vdXRlcl0pIHsKLQkJZXFsX25vZGUg
PSBNQUtFX05PREUoKGVudW0gbm9kX3QpKGludClpbnB1dC0+c3luX2FyZ1tzX3JzZV9vcF0sIDIp
OworCQllcWxfbm9kZSA9IE1BS0VfTk9ERSgoZW51bSBub2RfdCkoaW50KShJUFRSKWlucHV0LT5z
eW5fYXJnW3NfcnNlX29wXSwgMik7CiAJCWVxbF9ub2RlLT5ub2RfYXJnWzBdID0KIAkJCWV4cGFu
ZF9leHByZXNzaW9uKGlucHV0LT5zeW5fYXJnW3NfcnNlX291dGVyXSwgb2xkX3N0YWNrKTsKIAkJ
ZXFsX25vZGUtPm5vZF9hcmdbMV0gPQpkaWZmIC1OYXVyIGZpcmViaXJkLTEuNS4zLjQ4NzAub2xk
L3NyYy9xbGkvZ2VuZXIuY3BwIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL3FsaS9nZW5lci5jcHAK
LS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAub2xkL3NyYy9xbGkvZ2VuZXIuY3BwCTIwMDYtMDgtMDYg
MDY6NDc6MTkuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9xbGkv
Z2VuZXIuY3BwCTIwMDYtMDgtMDYgMDg6MDM6MTIuMDAwMDAwMDAwICswMjAwCkBAIC0xNTU2LDcg
KzE1NTYsNyBAQAogCiAJcmxiID0gQ0hFQ0tfUkxCKHJlcXVlc3QtPnJlcV9ibHIpOwogCi0JaWYg
KChOT0RfVCkgKGludCkgbm9kZS0+bm9kX2FyZ1tlX3JzZV9qb2luX3R5cGVdID09IChOT0RfVCkg
MCkKKwlpZiAoKE5PRF9UKSAoaW50KSAoSVBUUikgbm9kZS0+bm9kX2FyZ1tlX3JzZV9qb2luX3R5
cGVdID09IChOT0RfVCkgMCkKIAkJU1RVRkYoYmxyX3JzZSk7CiAJZWxzZQogCQlTVFVGRihibHJf
cnNfc3RyZWFtKTsKQEAgLTE2MjUsNyArMTYyNSw3IEBACiAJaWYgKGxpc3QgPSBub2RlLT5ub2Rf
YXJnW2VfcnNlX3JlZHVjZWRdKQogCQlnZW5fc29ydChsaXN0LCByZXF1ZXN0LCBibHJfcHJvamVj
dCk7CiAKLQlqb2luX3R5cGUgPSAoTk9EX1QpIChpbnQpIG5vZGUtPm5vZF9hcmdbZV9yc2Vfam9p
bl90eXBlXTsKKwlqb2luX3R5cGUgPSAoTk9EX1QpIChpbnQpIChJUFRSKSBub2RlLT5ub2RfYXJn
W2VfcnNlX2pvaW5fdHlwZV07CiAJaWYgKGpvaW5fdHlwZSAhPSAoTk9EX1QpIDAgJiYgam9pbl90
eXBlICE9IG5vZF9qb2luX2lubmVyKSB7CiAJCVNUVUZGKGJscl9qb2luX3R5cGUpOwogCQlpZiAo
am9pbl90eXBlID09IG5vZF9qb2luX2xlZnQpCmRpZmYgLU5hdXIgZmlyZWJpcmQtMS41LjMuNDg3
MC5vbGQvc3JjL3FsaS9sZXguY3BwIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL3FsaS9sZXguY3Bw
Ci0tLSBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvcWxpL2xleC5jcHAJMjAwNi0wOC0wNiAw
Njo0NzoxOS4wMDAwMDAwMDAgKzAyMDAKKysrIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3JjL3FsaS9s
ZXguY3BwCTIwMDYtMDgtMDYgMDg6MDM6MjYuMDAwMDAwMDAwICswMjAwCkBAIC01OTcsNyArNTk3
LDcgQEAKIAlmb3IgKHRlbXAgPSBRTElfbGluZTsKIAkJIHRlbXAtPmxpbmVfbmV4dCAmJiBRTElf
c3RhdGVtZW50czsKIAkJIHRlbXAgPSB0ZW1wLT5saW5lX25leHQpCi1pZiAodGVtcC0+bGluZV9u
ZXh0LT5saW5lX3Bvc2l0aW9uID09IChTTE9ORykgUUxJX3N0YXRlbWVudHMtPmxsc19vYmplY3Qp
IHJldHVybjsKK2lmICh0ZW1wLT5saW5lX25leHQtPmxpbmVfcG9zaXRpb24gPT0gKFNMT05HKSAo
SVBUUikgUUxJX3N0YXRlbWVudHMtPmxsc19vYmplY3QpIHJldHVybjsKIAogCXN0YXRlbWVudCA9
IChMTFMpIEFMTE9DUCh0eXBlX2xscyk7CiAJc3RhdGVtZW50LT5sbHNfb2JqZWN0ID0gKEJMSykg
dGVtcC0+bGluZV9wb3NpdGlvbjsKZGlmZiAtTmF1ciBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9z
cmMvcWxpL3BhcnNlLmNwcCBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9xbGkvcGFyc2UuY3BwCi0t
LSBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvcWxpL3BhcnNlLmNwcAkyMDA2LTA4LTA2IDA2
OjQ3OjE5LjAwMDAwMDAwMCArMDIwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvcWxpL3Bh
cnNlLmNwcAkyMDA2LTA4LTA2IDA4OjA0OjI4LjAwMDAwMDAwMCArMDIwMApAQCAtMTUyNCw3ICsx
NTI0LDcgQEAKIAkJCUlCRVJST1IoMTc2KTsJCS8qIE1zZzE3NiBObyBzdGF0ZW1lbnRzIGlzc3Vl
ZCB5ZXQgKi8KIAogCQlpZiAoTUFUQ0goS1dfQVNURVJJU0spKQotCQkJTEVYX2VkaXQoKFNMT05H
KSAwLCAoU0xPTkcpIHN0YXRlbWVudF9saXN0LT5sbHNfb2JqZWN0KTsKKwkJCUxFWF9lZGl0KChT
TE9ORykgMCwgKFNMT05HKSAoSVBUUikgc3RhdGVtZW50X2xpc3QtPmxsc19vYmplY3QpOwogCQll
bHNlIHsKIAkJCWlmIChLRVlXT1JEKEtXX1NFTUkpKQogCQkJCWwgPSAxOwpAQCAtMTUzNCw3ICsx
NTM0LDcgQEAKIAkJCWZvciAoc3RhcnQgPSBzdG9wID0gc3RhdGVtZW50X2xpc3Q7CiAJCQkJIGwg
JiYgc3RhcnQtPmxsc19uZXh0OyBsLS0sIHN0YXJ0ID0gc3RhcnQtPmxsc19uZXh0KTsKIAkJCWNv
bW1hbmRfZW5kKCk7Ci0JCQlMRVhfZWRpdCgoU0xPTkcpIHN0YXJ0LT5sbHNfb2JqZWN0LCAoU0xP
TkcpIHN0b3AtPmxsc19vYmplY3QpOworCQkJTEVYX2VkaXQoKFNMT05HKSAoSVBUUikgc3RhcnQt
Pmxsc19vYmplY3QsIChTTE9ORykgKElQVFIpIHN0b3AtPmxsc19vYmplY3QpOwogCQl9CiAJfQog
I2lmZGVmIFBZWElTCkBAIC0yOTI1LDcgKzI5MjUsNyBAQAogCQkJbm9kZS0+c3luX2FyZ1swXSA9
IElOVF9DQVNUIDE7CiAJCQlpZiAob3AgPT0gbm9kX2NvbHVtbiB8fCBRTElfdG9rZW4tPnRva190
eXBlID09IHRva19udW1iZXIpCiAJCQkJbm9kZS0+c3luX2FyZ1swXSA9IElOVF9DQVNUIHBhcnNl
X29yZGluYWwoKTsKLQkJCWlmICgob3AgPT0gbm9kX3NraXApICYmICgoaW50KSBub2RlLT5zeW5f
YXJnWzBdIDwgMSkpCisJCQlpZiAoKG9wID09IG5vZF9za2lwKSAmJiAoKGludCkgKElQVFIpIG5v
ZGUtPnN5bl9hcmdbMF0gPCAxKSkKIAkJCQlTWU5UQVhfRVJST1IoNDc4KTsJLyogTXNnNDc4IG51
bWJlciA+IDAgKi8KIAkJfQogCQlMTFNfUFVTSChub2RlLCAmc3RhY2spOwpkaWZmIC1OYXVyIGZp
cmViaXJkLTEuNS4zLjQ4NzAub2xkL3NyYy9xbGkvc2hvdy5lcHAgZmlyZWJpcmQtMS41LjMuNDg3
MC9zcmMvcWxpL3Nob3cuZXBwCi0tLSBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvcWxpL3No
b3cuZXBwCTIwMDYtMDgtMDYgMDY6NDc6MTkuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZC0x
LjUuMy40ODcwL3NyYy9xbGkvc2hvdy5lcHAJMjAwNi0wOC0wNiAwODowNToxMi4wMDAwMDAwMDAg
KzAyMDAKQEAgLTE1NCw3ICsxNTQsNyBAQAogCXB0ciA9IG5vZGUtPnN5bl9hcmc7CiAKIAlmb3Ig
KGkgPSAwOyBpIDwgbm9kZS0+c3luX2NvdW50OyBpKyspIHsKLQkJc3cgPSAoRU5VTSBzaG93X3Qp
IChpbnQpICogcHRyKys7CisJCXN3ID0gKEVOVU0gc2hvd190KSAoaW50KShJUFRSKSAqIHB0cisr
OwogCQl2YWx1ZSA9ICpwdHIrKzsKIAkJaWYgKHN3ICE9IHNob3dfbWF0Y2hpbmdfbGFuZ3VhZ2Ug
JiYKIAkJCXN3ICE9IHNob3dfdmVyc2lvbiAmJgpkaWZmIC1OYXVyIGZpcmViaXJkLTEuNS4zLjQ4
NzAub2xkL3NyYy9yZW1vdGUvaW5ldF9zZXJ2ZXIuY3BwIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3Jj
L3JlbW90ZS9pbmV0X3NlcnZlci5jcHAKLS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAub2xkL3NyYy9y
ZW1vdGUvaW5ldF9zZXJ2ZXIuY3BwCTIwMDYtMDgtMDYgMDY6NDc6MjcuMDAwMDAwMDAwICswMjAw
CisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9yZW1vdGUvaW5ldF9zZXJ2ZXIuY3BwCTIwMDYt
MDgtMDYgMDc6NTk6NDkuMDAwMDAwMDAwICswMjAwCkBAIC0zODAsNyArMzgwLDcgQEAKIAkJaWYg
KCFkZWJ1ZykgewogCQkJRkRfWkVSTygmbWFzayk7CiAJCQlGRF9TRVQoMiwgJm1hc2spOwotCQkJ
ZGl2b3JjZV90ZXJtaW5hbCgoaW50KSAmbWFzayk7CisJCQlkaXZvcmNlX3Rlcm1pbmFsKChpbnQp
IChJUFRSKSAmbWFzayk7CiAJCX0KIAkJewogCQkJSVNDX1NUQVRVU19BUlJBWSBzdGF0dXNfdmVj
dG9yOwpkaWZmIC1OYXVyIGZpcmViaXJkLTEuNS4zLjQ4NzAub2xkL3NyYy9yZW1vdGUvaW50ZXJm
YWNlLmNwcCBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9yZW1vdGUvaW50ZXJmYWNlLmNwcAotLS0g
ZmlyZWJpcmQtMS41LjMuNDg3MC5vbGQvc3JjL3JlbW90ZS9pbnRlcmZhY2UuY3BwCTIwMDYtMDgt
MDYgMDY6NDc6MjcuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9y
ZW1vdGUvaW50ZXJmYWNlLmNwcAkyMDA2LTA4LTA2IDA3OjUzOjM0LjAwMDAwMDAwMCArMDIwMApA
QCAtMzIzMSw3ICszMjMxLDcgQEAKICAJCS8vIE5pY2tvbGF5IFNhbW9mYXRvdjogV2UgcGFzcyB0
aGlzIHZhbHVlIHRvIHRoZSBzZXJ2ZXIgKGFzIDMyLWJpdCB2YWx1ZSkKICAJCS8vIHRoZW4gaXQg
cmV0dXJucyBpdCB0byB1cyBhbmQgd2UgZG8gbm90IHVzZSBpdC4gTWF5YmUgcGFzcyB6ZXJvIGhl
cmUKICAJCS8vIHRvIGF2b2lkIGNsaWVudC1zaWRlIHNlY3VyaXR5IHJpc2tzPwotCQlldmVudC0+
cF9ldmVudF9hc3QgPSAoU0xPTkcpIGFzdDsKKwkJZXZlbnQtPnBfZXZlbnRfYXN0ID0gKFNMT05H
KShJUFRSKSBhc3Q7CiAJCWV2ZW50LT5wX2V2ZW50X2FyZyA9IChTTE9ORykoSVBUUikgYXJnOwog
CiAJCWV2ZW50LT5wX2V2ZW50X3JpZCA9IHJlbV9ldmVudC0+cnZudF9pZDsKQEAgLTYyMjYsOCAr
NjIyNiw4IEBACiAJCWZvciAoOyB0b19kZXNjIDwgZW5kX2Rlc2M7IGZyb21fZGVzYysrLCB0b19k
ZXNjKyspIHsKIAkJCWZyb20gPSAqZnJvbV9kZXNjOwogCQkJdG8gPSAqdG9fZGVzYzsKLQkJCWZy
b20uZHNjX2FkZHJlc3MgPSBmcm9tX21zZyArIChTTE9ORykgZnJvbS5kc2NfYWRkcmVzczsKLQkJ
CXRvLmRzY19hZGRyZXNzID0gdG9fbXNnICsgKFNMT05HKSB0by5kc2NfYWRkcmVzczsKKwkJCWZy
b20uZHNjX2FkZHJlc3MgPSBmcm9tX21zZyArIChTTE9ORykoSVBUUikgZnJvbS5kc2NfYWRkcmVz
czsKKwkJCXRvLmRzY19hZGRyZXNzID0gdG9fbXNnICsgKFNMT05HKShJUFRSKSB0by5kc2NfYWRk
cmVzczsKIAkJCUNWVF9tb3ZlKCZmcm9tLCAmdG8sIChGUFRSX1ZPSUQpIG1vdmVfZXJyb3IpOwog
CQl9CiAKZGlmZiAtTmF1ciBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvcmVtb3RlL3Byb3Rv
Y29sLmNwcCBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9yZW1vdGUvcHJvdG9jb2wuY3BwCi0tLSBm
aXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvcmVtb3RlL3Byb3RvY29sLmNwcAkyMDA2LTA4LTA2
IDA2OjQ3OjI3LjAwMDAwMDAwMCArMDIwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvcmVt
b3RlL3Byb3RvY29sLmNwcAkyMDA2LTA4LTA2IDA3OjUzOjUwLjAwMDAwMDAwMCArMDIwMApAQCAt
OTg0LDcgKzk4NCw3IEBACiAJQkxPQl9QVFIgKnA7CiAJU1NIT1JUIG47CiAKLQlwID0gYnVmZmVy
ICsgKFVMT05HKSBkZXNjLT5kc2NfYWRkcmVzczsKKwlwID0gYnVmZmVyICsgKFVMT05HKSAoSVBU
UikgZGVzYy0+ZHNjX2FkZHJlc3M7CiAKIAlzd2l0Y2ggKGRlc2MtPmRzY19kdHlwZSkgewogCWNh
c2UgZHR5cGVfdGV4dDoKZGlmZiAtTmF1ciBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvcmVt
b3RlL3NlcnZlci5jcHAgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvcmVtb3RlL3NlcnZlci5jcHAK
LS0tIGZpcmViaXJkLTEuNS4zLjQ4NzAub2xkL3NyYy9yZW1vdGUvc2VydmVyLmNwcAkyMDA2LTA4
LTA2IDA2OjQ3OjI3LjAwMDAwMDAwMCArMDIwMAorKysgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMv
cmVtb3RlL3NlcnZlci5jcHAJMjAwNi0wOC0wNiAwODowMDoxNy4wMDAwMDAwMDAgKzAyMDAKQEAg
LTQzNjEsNyArNDM2MSw3IEBACiAKIAkvLyBOaWNrb2xheSBTYW1vZmF0b3Y6IFdlIGtlZXAgdGhp
cyB2YWx1ZXMgYW5kIGV2ZW4gcGFzcyB0aGVtIHRvIHRoZSBjbGllbnQKIAkvLyAoYXMgMzItYml0
IHZhbHVlcykgd2hlbiBldmVudCBpcyBmaXJlZCwgYnV0IGNsaWVudCBpZ25vcmVzIHRoZW0uCi0J
cF9ldmVudC0+cF9ldmVudF9hc3QgPSAoU0xPTkcpIGV2ZW50LT5ydm50X2FzdDsKKwlwX2V2ZW50
LT5wX2V2ZW50X2FzdCA9IChTTE9ORykoSVBUUikgZXZlbnQtPnJ2bnRfYXN0OwogCXBfZXZlbnQt
PnBfZXZlbnRfYXJnID0gKFNMT05HKShJUFRSKSBldmVudC0+cnZudF9hcmc7CiAKIAlwX2V2ZW50
LT5wX2V2ZW50X3JpZCA9IGV2ZW50LT5ydm50X3JpZDsKZGlmZiAtTmF1ciBmaXJlYmlyZC0xLjUu
My40ODcwLm9sZC9zcmMvdXRpbGl0aWVzL2dzZWMuY3BwIGZpcmViaXJkLTEuNS4zLjQ4NzAvc3Jj
L3V0aWxpdGllcy9nc2VjLmNwcAotLS0gZmlyZWJpcmQtMS41LjMuNDg3MC5vbGQvc3JjL3V0aWxp
dGllcy9nc2VjLmNwcAkyMDA2LTA4LTA2IDA2OjQ3OjMyLjAwMDAwMDAwMCArMDIwMAorKysgZmly
ZWJpcmQtMS41LjMuNDg3MC9zcmMvdXRpbGl0aWVzL2dzZWMuY3BwCTIwMDYtMDgtMDYgMDc6NTc6
NDIuMDAwMDAwMDAwICswMjAwCkBAIC05Niw3ICs5Niw3IEBACiAJaW50IGV4aXRfY29kZTsKIAog
CWV4aXRfY29kZSA9IFVUSUxfZ3NlYyhzZXJ2aWNlLT5zdmNfYXJnYywgc2VydmljZS0+c3ZjX2Fy
Z3YsCi0JCQkJCQkgIG91dHB1dF9zdmMsIChTTE9ORykgc2VydmljZSk7CisJCQkJCQkgIG91dHB1
dF9zdmMsIChTTE9ORykgKElQVFIpIHNlcnZpY2UpOwogCiAvKiBNYXJrIHNlcnZpY2UgdGhyZWFk
IGFzIGZpbmlzaGVkLiAqLwogLyogSWYgc2VydmljZSBpcyBkZXRhY2hlZCwgY2xlYW51cCBtZW1v
cnkgYmVpbmcgdXNlZCBieSBzZXJ2aWNlLiAqLwpkaWZmIC1OYXVyIGZpcmViaXJkLTEuNS4zLjQ4
NzAub2xkL3NyYy93YWwvd2Fsdy5jcHAgZmlyZWJpcmQtMS41LjMuNDg3MC9zcmMvd2FsL3dhbHcu
Y3BwCi0tLSBmaXJlYmlyZC0xLjUuMy40ODcwLm9sZC9zcmMvd2FsL3dhbHcuY3BwCTIwMDYtMDgt
MDYgMDY6NDc6MjAuMDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy93
YWwvd2Fsdy5jcHAJMjAwNi0wOC0wNiAwNzo1NzoyMS4wMDAwMDAwMDAgKzAyMDAKQEAgLTE5OSw3
ICsxOTksNyBAQAogI2lmZGVmIFNVUEVSU0VSVkVSCiAJaW50IGFyZ2M7CiAKLQlhcmdjID0gKGlu
dCkgYXJndlswXTsKKwlhcmdjID0gKGludCkgKElQVFIpIGFyZ3ZbMF07CiAjZW5kaWYKIAogCWRi
bmFtZSA9ICIiOwpkaWZmIC1OYXVyIGZpcmViaXJkLTEuNS4zLjQ4NzAub2xkL3NyYy9kdWRsZXkv
ZXhlLmVwcCBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9kdWRsZXkvZXhlLmVwcAotLS0gZmlyZWJp
cmQtMS41LjMuNDg3MC5vbGQvc3JjL2R1ZGxleS9leGUuZXBwCTIwMDYtMDgtMDYgMDY6NDc6MjYu
MDAwMDAwMDAwICswMjAwCisrKyBmaXJlYmlyZC0xLjUuMy40ODcwL3NyYy9kdWRsZXkvZXhlLmVw
cAkyMDA2LTA4LTA2IDA4OjA2OjI1LjAwMDAwMDAwMCArMDIwMApAQCAtNjI2LDcgKzYyNiw3IEBA
CiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgYWN0X2Rfc2hhZG93OgotCQkJCWRyb3Bfc2hhZG93KChT
TE9ORykgYWN0aW9uLT5hY3Rfb2JqZWN0KTsKKwkJCQlkcm9wX3NoYWRvdygoU0xPTkcpIChJUFRS
KSBhY3Rpb24tPmFjdF9vYmplY3QpOwogCQkJCWJyZWFrOwogCiAJCQljYXNlIGFjdF9hX2dlbmVy
YXRvcjoK
</data>        

          </attachment>
    </bug>

</bugzilla>