<?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>199591</bug_id>
          
          <creation_ts>2007-11-18 21:16 0000</creation_ts>
          <short_desc>sci-physics/root build failure</short_desc>
          <delta_ts>2008-01-10 00:12:59 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>Ebuilds</component>
          <version>unspecified</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>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>flameeyes@gentoo.org</reporter>
          <assigned_to>sci-physics@gentoo.org</assigned_to>
          

      

      
          <long_desc isprivate="0">
            <who>flameeyes@gentoo.org</who>
            <bug_when>2007-11-18 21:16:18 0000</bug_when>
            <thetext>cint/src/gcc3strm.cxx: In function ‘int G__G__stream_7_7_0(G__value*, const char*, G__param*, int)’:
cint/src/gcc3strm.cxx:311: error: ‘class std::fpos&lt;__mbstate_t&gt;’ has no member named ‘operator==’
cint/src/gcc3strm.cxx: In function ‘int G__G__stream_7_8_0(G__value*, const char*, G__param*, int)’:
cint/src/gcc3strm.cxx:317: error: ‘class std::fpos&lt;__mbstate_t&gt;’ has no member named ‘operator!=’
cint/src/gcc3strm.cxx: In function ‘int G__G__stream__3_17(G__value*, const char*, G__param*, int)’:
cint/src/gcc3strm.cxx:3030: warning: dereferencing type-punned pointer will break strict-aliasing rules
make: *** [cint/src/gcc3strm.o] Error 1</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>bicatali@gentoo.org</who>
            <bug_when>2007-11-20 16:33:51 0000</bug_when>
            <thetext>Hi Diego,

Could you provide the root version and emerge --info?

Sébastien</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>markusle@gentoo.org</who>
            <bug_when>2007-11-26 18:28:27 0000</bug_when>
            <thetext>Created an attachment (id=137064)
patch containing compile fixes for &gt;=gcc-4.2

The issue is caused by &gt;=gcc-4.2. I&apos;ve back-ported 
several fixes from upstream&apos;s svn trunk and merged them
into the above (large) patch which fixes the issue for me.
Please give it a spin.

Thanks,
Markus </thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>markusle@gentoo.org</who>
            <bug_when>2007-12-10 11:33:05 0000</bug_when>
            <thetext>Hi Sébastien,

I just tried the gcc-4.2 patch on my opteron and compilation
succeeds flawlessly. Could you please post the exact issue you are 
having with it on amd64 so I can have a look?

Thanks,
Markus</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>bicatali@gentoo.org</who>
            <bug_when>2007-12-12 14:12:11 0000</bug_when>
            <thetext>
&gt; I just tried the gcc-4.2 patch on my opteron and compilation
&gt; succeeds flawlessly. Could you please post the exact issue you are 
&gt; having with it on amd64 so I can have a look?

* with use flags: afs

g++  -pipe -Wall -m64 -fPIC -Iinclude -DR__HAVE_CONFIG -pthread -I. -o cint/lib/dll_stl/G__cpp_complex.o -c cint/lib/dll_stl/G__cpp_complex.cxx
/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/../../../../x86_64-pc-linux-gnu/bin/ld: /usr/lib64/libafsauthent.a(client.o): relocation R_X86_64_32 against `grmutex&apos; can not be used when making a shared object; recompile with -fPIC
/usr/lib64/libafsauthent.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[5]: *** [../../lib/libXrdSecpwd.so] Error 1
make[4]: *** [Linuxall] Error 2
make[3]: *** [all] Error 2
make[2]: *** [XrdSecpwd] Error 2
make[1]: *** [all] Error 2

trying to link pic with static libs. But probably be it&apos;s not gcc4.2 specific.

Also with even with USE=-truetype, complained for missing Xft.
root still needs a bit of work with deps, opengl was one problem, I am actually testing some of them now.

</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>markusle@gentoo.org</who>
            <bug_when>2007-12-15 22:07:26 0000</bug_when>
            <thetext>Hi Sebastien,

I had a look at the afs stuff and after some time I actually
managed to (almost) build root against the afs shared libs.
Unfortunately, libafsauthent.so and libafsrpc.so are 
missing some symbols which is probably a bug in one
of afs&apos;s makefiles (I found a bug report about this on a
SUN-afs forum). I&apos;ll probably commit the gcc patch later
and will see if I can fix openafs. Once that&apos;s done root
will hopefully build against afs as well.

cheers,
Markus</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>markusle@gentoo.org</who>
            <bug_when>2007-12-16 17:27:10 0000</bug_when>
            <thetext>I just added a patch to root-5.16.00-r1 that fixes the afs problems
from root&apos;s point of view.
Unfortunately, it still doesn&apos;t compile since openafs&apos;s shared objects
seem to miss a few symbols that root needs. I&apos;ve filed a bug with
the openafs maintainer and provided a patch (bug #202489).
After recompiling openafs with this patch root compiles smoothly
with USE=afs on my amd64 box.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who>bicatali@gentoo.org</who>
            <bug_when>2008-01-10 00:12:59 0000</bug_when>
            <thetext>This one was fixed with the gcc4 patch. Thanks for reporting.
</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137064</attachid>
            <date>2007-11-26 18:28 0000</date>
            <desc>patch containing compile fixes for &gt;=gcc-4.2</desc>
            <filename>root-5.16.00-gcc4.2.patch</filename>
            <type>text/plain</type>
            <data encoding="base64">ZGlmZiAtTmF1ciByb290L2NpbnQvTW9kdWxlLm1rIHJvb3QubmV3L2NpbnQvTW9kdWxlLm1rCi0t
LSByb290L2NpbnQvTW9kdWxlLm1rCTIwMDctMDEtMTggMDg6MDA6MzMuMDAwMDAwMDAwIC0wNTAw
CisrKyByb290Lm5ldy9jaW50L01vZHVsZS5tawkyMDA3LTExLTI2IDA5OjEwOjEzLjAwMDAwMDAw
MCAtMDUwMApAQCAtNDIsNiArNDIsNyBAQAogQ0lOVFMyICAgICAgIDo9ICQoZmlsdGVyLW91dCAk
KE1PRERJUlMpL3N1bnN0cm0uJSwkKENJTlRTMikpCiBDSU5UUzIgICAgICAgOj0gJChmaWx0ZXIt
b3V0ICQoTU9ERElSUykvc3VuNXN0cm0uJSwkKENJTlRTMikpCiBDSU5UUzIgICAgICAgOj0gJChm
aWx0ZXItb3V0ICQoTU9ERElSUykvZ2NjM3N0cm0uJSwkKENJTlRTMikpCitDSU5UUzIgICAgICAg
Oj0gJChmaWx0ZXItb3V0ICQoTU9ERElSUykvZ2NjNHN0cm0uJSwkKENJTlRTMikpCiBDSU5UUzIg
ICAgICAgOj0gJChmaWx0ZXItb3V0ICQoTU9ERElSUykvbG9uZ2lmMy4lLCQoQ0lOVFMyKSkKIENJ
TlRTMiAgICAgICA6PSAkKGZpbHRlci1vdXQgJChNT0RESVJTKS9hY2NzdHJtLiUsJChDSU5UUzIp
KQogQ0lOVFMyICAgICAgIDo9ICQoZmlsdGVyLW91dCAkKE1PRERJUlMpL2ljY3N0cm0uJSwkKENJ
TlRTMikpCkBAIC0xNzAsNyArMTcxLDcgQEAKIGlmZXEgKCQoR0NDX01BSk9SKSw0KQogQ0lOVFMy
ICAgICAgIDo9ICQoZmlsdGVyLW91dCAkKE1PRERJUlMpL2xpYnN0cm0uJSwkKENJTlRTMikpCiBD
SU5UUzIgICAgICAgOj0gJChmaWx0ZXItb3V0ICQoTU9ERElSUykvbG9uZ2lmLiUsJChDSU5UUzIp
KQotQ0lOVFMyICAgICAgICs9ICQoTU9ERElSUykvZ2NjM3N0cm0uY3h4CitDSU5UUzIgICAgICAg
Kz0gJChNT0RESVJTKS9nY2M0c3RybS5jeHgKIENJTlRTMiAgICAgICArPSAkKE1PRERJUlMpL2xv
bmdpZjMuY3h4CiBlbmRpZgogaWZlcSAoJChDWFhDTUQpLHhsQykKQEAgLTI2Niw3ICsyNjcsOCBA
QAogZGlzdGNsZWFuLWNpbnQ6IGNsZWFuLWNpbnQKIAkJQHJtIC1mICQoQ0lOVEFMTERFUCkgJChD
SU5UTElCKSAkKElPU0VOVU0pICQoQ0lOVEVYRURFUCkgXAogCQkgICAkKENJTlQpICQoQ0lOVFRN
UCkgJChNQUtFQ0lOVCkgJChDSU5URElSTSkvKi5leHAgXAotCQkgICAkKENJTlRESVJNKS8qLmxp
YiAkKENJTlRESVJTKS92Nl9sb2FkZmlsZV90bXAuY3h4CisJCSAgICQoQ0lOVERJUk0pLyoubGli
ICQoQ0lOVERJUlMpL3Y2X2xvYWRmaWxlX3RtcC5jeHggXAorCQkgICAkKENJTlRESVJETExTKS9z
eXMvdHlwZXMuaCAkKENJTlRESVJETExTKS9zeXN0eXBlcy5oCiAKIGRpc3RjbGVhbjo6ICAgICBk
aXN0Y2xlYW4tY2ludAogCmRpZmYgLU5hdXIgcm9vdC9jaW50L2xpYi9nY2M0c3RybS9NYWtlZmls
ZSByb290Lm5ldy9jaW50L2xpYi9nY2M0c3RybS9NYWtlZmlsZQotLS0gcm9vdC9jaW50L2xpYi9n
Y2M0c3RybS9NYWtlZmlsZQkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAorKysg
cm9vdC5uZXcvY2ludC9saWIvZ2NjNHN0cm0vTWFrZWZpbGUJMjAwNy0xMS0yNiAwOTowNzo0Ny4w
MDAwMDAwMDAgLTA1MDAKQEAgLTAsMCArMSwyOCBAQAorIworIyBsaWIvZ2NjNHN0cm0vTWFrZWZp
bGUKKyMKK0NQICAgICAgICAgPSBjcAorTVYJICAgPSBtdgorCitDSU5UU1lTRElSID0gLi4vLi4K
KworU1JDQ1BQSUZDICAgICA9ICQoQ0lOVFNZU0RJUikvc3JjL2djYzRzdHJtLmN4eAorU1JDQ1BQ
SUZIICAgICA9ICQoQ0lOVFNZU0RJUikvc3JjL2djYzRzdHJtLmgKK0NQUElGQyAgICAgPSBnY2M0
c3RybS5jeHgKK0NQUElGSCAgICAgPSBnY2M0c3RybS5oCisKK0NQUEhFQURFUiAgPSBpb3N0cm0u
aCBmc3RybS5oIHNzdHJtLmggbGlua2RlZi5oCisKKyMJCXN0ZGlvc3RyLmggXAorCisKKyQoU1JD
Q1BQSUZDKSA6ICQoQ1BQSUZDKQorIwljaW50IC4uL3Nuc3RyZWFtL2xlbmd0aC5jeHggMjU1ICQo
Q1BQSUZDKSAkKENQUElGSCkKKwkkKE1WKSAkKENQUElGQykgJChTUkNDUFBJRkMpCQkKKwkkKE1W
KSAkKENQUElGSCkgJChTUkNDUFBJRkgpCQkKKworCiskKENQUElGQykgOiAkKENQUEhFQURFUikK
KwljaW50IC1aMCAtbiQoQ1BQSUZDKSAtTkdfX3N0cmVhbSAkKERMTFNQRUMpIC1EX19NQUtFQ0lO
VF9fIC1ER19fTUFLRUNJTlQgLWMtMSAkKElQQVRIKSAkKE1BQ1JPKSAkKENQUEhFQURFUikgCisK
KyMJY2ludCAtWjAgLW4kKENQUElGQykgLU5HX19zdHJlYW0gJChETExTUEVDKSAtRF9fTUFLRUNJ
TlRfXyAtREdfX01BS0VDSU5UIC1NMHgxMCAtYy0xICQoSVBBVEgpICQoTUFDUk8pICQoQ1BQSEVB
REVSKSAKZGlmZiAtTmF1ciByb290L2NpbnQvbGliL2djYzRzdHJtL1JFQURNRS50eHQgcm9vdC5u
ZXcvY2ludC9saWIvZ2NjNHN0cm0vUkVBRE1FLnR4dAotLS0gcm9vdC9jaW50L2xpYi9nY2M0c3Ry
bS9SRUFETUUudHh0CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCisrKyByb290
Lm5ldy9jaW50L2xpYi9nY2M0c3RybS9SRUFETUUudHh0CTIwMDctMTEtMjYgMDk6MDc6NDcuMDAw
MDAwMDAwIC0wNTAwCkBAIC0wLDAgKzEsMTUgQEAKK2xpYi9nY2M0c3RybS9SRUFETUUKKworIGxp
Yi9nY2M0c3RybSBkaXJlY3RvcnkgZXhpc3RzIGZvciBjcmVhdGluZyBpb3N0cmVhbSBsaWJyYXJ5
IGxpbmthZ2UgZmlsZQorc3JjL2djYzRzdHJtLmN4eCBhbmQgc3JjL2djYzRzdHJtLmggZm9yIGcr
KyAzLjAwIGNvbXBpbGVyLiBUaGVzZSBmaWxlcyAKK2NvbnRhaW4gaW50ZXJmYWNlIG1ldGhvZHMg
Zm9yIGlvc3RyZWFtIGxpYnJhcnkuIFlvdSBjYW4gY3JlYXRlIHRob3NlIGJ5IAorZG9pbmcgJ21h
a2UnIHVuZGVyIHRoaXMgZGlyZWN0b3J5LiBVc3VhbGx5IG5vYm9keSBidXQgb25seSBhdXRob3Ig
c2hvdWxkIAorZG8gdGhpcy4gVXNlciBkb2Vzbid0IG5lZWQgdG8gcmVjb2duaXplIHRoaXMuCisg
RmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgYXJlIG9yaWdpbmFsbHkgY29waWVkIGZyb20gbGliL3Nu
c3RyZWFtLyogYW5kIAorbW9kaWZpZWQgZm9yIGdjYzRzdHJtLgorCisgY2JzdHJlYW0uY3BwIGlz
IGJhc2VkIG9uIHRlbXBsYXRlIGJhc2VkIHN0cmVhbSBsaWJyYXJ5LgorCisgQ3JlYXRpbmcgc3Jj
L2djYzRzdHJtLmN4eAorCisgMSkgSnVzdCBkbyAnbWFrZScgaW4gdGhpcyBkaXJlY3RvcnkuIApk
aWZmIC1OYXVyIHJvb3QvY2ludC9saWIvZ2NjNHN0cm0vZnN0cm0uaCByb290Lm5ldy9jaW50L2xp
Yi9nY2M0c3RybS9mc3RybS5oCi0tLSByb290L2NpbnQvbGliL2djYzRzdHJtL2ZzdHJtLmgJMTk2
OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKKysrIHJvb3QubmV3L2NpbnQvbGliL2dj
YzRzdHJtL2ZzdHJtLmgJMjAwNy0xMS0yNiAwOTowNzo0Ny4wMDAwMDAwMDAgLTA1MDAKQEAgLTAs
MCArMSwxNjEgQEAKKy8qIC8lIEMrKyAlLyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBjaW50IChD
L0MrKyBpbnRlcnByZXRlcikKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGhlYWRlciBmaWxlIGZzdHJt
LmgKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKKyAqIERlc2NyaXB0aW9uOgorICogIFN0dWIgZmlsZSBmb3Ig
bWFraW5nIGlvc3RyZWFtIGxpYnJhcnkKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodChj
KSAyMDA3ICBNYXNhaGFydSBHb3RvIChjaW50QHBjcm9vdC5jZXJuLmNoKQorICoKKyAqIEZvciB0
aGUgbGljZW5zaW5nIHRlcm1zIHNlZSB0aGUgZmlsZSBDT1BZSU5HCisgKgorICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKi8KKworI2lmbmRlZiBHX19GU1RSRUFNX0gKKyNkZWZpbmUgR19fRlNUUkVBTV9ICisKKyNp
Zm5kZWYgX19DSU5UX18KKworI2luY2x1ZGUgPGZzdHJlYW0+Cit1c2luZyBuYW1lc3BhY2Ugc3Rk
OworCisjZWxzZSAvLyBfX0NJTlRfXworCisjaW5jbHVkZSAiaW9zdHJtLmgiCisKK3RlbXBsYXRl
PGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+CitjbGFzcyBiYXNpY19maWxlYnVmIDogcHVibGlj
IGJhc2ljX3N0cmVhbWJ1ZjxjaGFyVCwgdHJhaXRzPiB7CisgIHByaXZhdGU6CisgICAgdHlwZWRl
ZiBiYXNpY19pb3M8Y2hhclQsIHRyYWl0cz4gICAgICAgICAgICAgIGlvc190eXBlOworI2lmbmRl
ZiBfX0NJTlRfXworICAgIHR5cGVkZWYgdHJhaXRzOjpzdGF0ZV90eXBlICAgICAgICAgICBzdGF0
ZV90OyAKKyNlbmRpZgorICBwdWJsaWM6CisgICAgdHlwZWRlZiB0cmFpdHMgICAgICAgICAgICAg
IHRyYWl0c190eXBlOworICAgIHR5cGVkZWYgY2hhclQJCWNoYXJfdHlwZTsKKyAgICB0eXBlZGVm
IHRyYWl0czo6aW50X3R5cGUgICAgaW50X3R5cGU7CisgICAgdHlwZWRlZiB0cmFpdHM6OnBvc190
eXBlICAgIHBvc190eXBlOworICAgIHR5cGVkZWYgdHJhaXRzOjpvZmZfdHlwZSAgICBvZmZfdHlw
ZTsKKyAgICBiYXNpY19maWxlYnVmKCk7CisjaWYgIShHX19HTlVDPj0zKQorICAgIGJhc2ljX2Zp
bGVidWYoaW50IGZkKTsKKyNlbmRpZgorICAgIHZpcnR1YWwgfmJhc2ljX2ZpbGVidWYoKTsKKyAg
ICBib29sIGlzX29wZW4oKSBjb25zdDsKKyNpZiAhKEdfX0dOVUM+PTMpCisgICAgYmFzaWNfZmls
ZWJ1ZjxjaGFyVCwgdHJhaXRzPiAqCisgICAgICBvcGVuKGNvbnN0IGNoYXIgKnMsIGlvc19iYXNl
OjpvcGVubW9kZSwgbG9uZyBwcm90ZWN0aW9uID0gMDY2NiApOworI2Vsc2UKKyAgICBiYXNpY19m
aWxlYnVmPGNoYXJULCB0cmFpdHM+ICogb3Blbihjb25zdCBjaGFyICpzLCBpb3NfYmFzZTo6b3Bl
bm1vZGUpOworI2VuZGlmCisjaWYgIShHX19HTlVDPj0zKQorICAgIGJhc2ljX2ZpbGVidWY8Y2hh
clQsIHRyYWl0cz4gKm9wZW4oaW50IGZkKTsKKyNlbmRpZgorICAgIGJhc2ljX2ZpbGVidWY8Y2hh
clQsIHRyYWl0cz4gKmNsb3NlKCk7CisgIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIGludCAgICAg
IHNob3dtYW55YygpOworICAgIHZpcnR1YWwgaW50X3R5cGUgb3ZlcmZsb3coaW50X3R5cGUgYyA9
IHRyYWl0czo6ZW9mKCkpOworICAgIHZpcnR1YWwgaW50X3R5cGUgcGJhY2tmYWlsKGludF90eXBl
IGMgPSB0cmFpdHM6OmVvZigpKTsKKyAgICB2aXJ0dWFsIGludF90eXBlIHVuZGVyZmxvdygpOwor
ICAgIHZpcnR1YWwgYmFzaWNfc3RyZWFtYnVmPGNoYXJULHRyYWl0cz4qIHNldGJ1ZihjaGFyX3R5
cGUgKnMsc3RyZWFtc2l6ZSBuKTsKKyAgICB2aXJ0dWFsIHBvc190eXBlIHNlZWtvZmYob2ZmX3R5
cGUgb2ZmLGlvc19iYXNlOjpzZWVrZGlyIHdheQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAsaW9zX2Jhc2U6Om9wZW5tb2RlIHdoaWNoID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlvc19iYXNlOjppbiB8IGlvc19iYXNlOjpvdXQpOworICAgIHZpcnR1YWwg
cG9zX3R5cGUgc2Vla3Bvcyhwb3NfdHlwZSBzcAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAsaW9zX2Jhc2U6Om9wZW5tb2RlIHdoaWNoID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlvc19iYXNlOjppbiB8IGlvc19iYXNlOjpvdXQpOworICAgIHZpcnR1YWwg
aW50IHN5bmMoKTsKKyAgICB2aXJ0dWFsIHN0cmVhbXNpemUgeHNwdXRuKGNvbnN0IGNoYXJfdHlw
ZSAqcywgc3RyZWFtc2l6ZSBuKTsKKyNpZiAoR19fR05VQz49MykKKyBwcml2YXRlOgorICAgIGJh
c2ljX2ZpbGVidWYmIG9wZXJhdG9yPShjb25zdCBiYXNpY19maWxlYnVmJiB4KTsKKyNlbmRpZgor
fTsKKwordGVtcGxhdGU8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KK2NsYXNzIGJhc2ljX2lm
c3RyZWFtIDogcHVibGljIGJhc2ljX2lzdHJlYW08Y2hhclQsIHRyYWl0cz4geworICBwdWJsaWM6
CisgICAgdHlwZWRlZiBiYXNpY19pb3M8Y2hhclQsIHRyYWl0cz4gICAgICAgICAgaW9zX3R5cGU7
CisgICAgdHlwZWRlZiB0cmFpdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5
cGU7CisgICAgdHlwZWRlZiBjaGFyVAkJICAgICAgIAkgICAgICBjaGFyX3R5cGU7CisgICAgdHlw
ZWRlZiB0cmFpdHM6OmludF90eXBlICAgICAgICAgICAgICAgICAgaW50X3R5cGU7CisgICAgdHlw
ZWRlZiB0cmFpdHM6OnBvc190eXBlICAgICAgICAgICAgICAgICAgcG9zX3R5cGU7CisgICAgdHlw
ZWRlZiB0cmFpdHM6Om9mZl90eXBlICAgICAgICAgICAgICAgICAgb2ZmX3R5cGU7CisgIHB1Ymxp
YzoKKyAgICBiYXNpY19pZnN0cmVhbSgpOworI2lmICEoR19fR05VQz49MykKKyAgICBiYXNpY19p
ZnN0cmVhbShjb25zdCBjaGFyICpzLGlvc19iYXNlOjpvcGVubW9kZSBtb2RlID0gaW9zX2Jhc2U6
OmluCisJCSAgICxsb25nIHByb3RlY3Rpb24gPSAwNjY2ICk7CisgICAgYmFzaWNfaWZzdHJlYW0o
aW50IGZkKTsKKyAgICBiYXNpY19pZnN0cmVhbShpbnQgZmQsIGNoYXJfdHlwZSAqYnVmLCBpbnQg
bGVuKTsKKyNlbHNlCisgICAgYmFzaWNfaWZzdHJlYW0oY29uc3QgY2hhciAqcyxpb3NfYmFzZTo6
b3Blbm1vZGUgbW9kZSA9IGlvc19iYXNlOjppbik7CisjZW5kaWYKKyAgICB2aXJ0dWFsIH5iYXNp
Y19pZnN0cmVhbSgpOworICAgIGJhc2ljX2ZpbGVidWY8Y2hhclQsIHRyYWl0cz4gKnJkYnVmKCkg
Y29uc3Q7CisgICAgYm9vbCBpc19vcGVuKCk7CisjaWYgIShHX19HTlVDPj0zKQorICAgIHZvaWQg
b3Blbihjb25zdCBjaGFyICpzLCBpb3NfYmFzZTo6b3Blbm1vZGUgbW9kZSA9IGlvc19iYXNlOjpp
bgorICAgICAgICAgICAgICAsbG9uZyBwcm90ZWN0aW9uID0gMDY2NiApOworI2Vsc2UKKyAgICB2
b2lkIG9wZW4oY29uc3QgY2hhciAqcywgaW9zX2Jhc2U6Om9wZW5tb2RlIG1vZGUgPSBpb3NfYmFz
ZTo6aW4pOworI2VuZGlmCisgICAgdm9pZCBjbG9zZSgpOworfTsKKwordGVtcGxhdGU8Y2xhc3Mg
Y2hhclQsIGNsYXNzIHRyYWl0cz4KK2NsYXNzIGJhc2ljX29mc3RyZWFtIDogcHVibGljIGJhc2lj
X29zdHJlYW08Y2hhclQsIHRyYWl0cz4geworICBwdWJsaWM6CisgICAgdHlwZWRlZiBiYXNpY19p
b3M8Y2hhclQsIHRyYWl0cz4gICAgICAgICAgaW9zX3R5cGU7CisgICAgdHlwZWRlZiB0cmFpdHMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7CisgICAgdHlwZWRlZiBjaGFy
VAkJICAgICAgICAgICAgICBjaGFyX3R5cGU7CisgICAgdHlwZWRlZiB0cmFpdHM6OmludF90eXBl
ICAgICAgICAgICAgICAgICAgaW50X3R5cGU7CisgICAgdHlwZWRlZiB0cmFpdHM6OnBvc190eXBl
ICAgICAgICAgICAgICAgICAgcG9zX3R5cGU7CisgICAgdHlwZWRlZiB0cmFpdHM6Om9mZl90eXBl
ICAgICAgICAgICAgICAgICAgb2ZmX3R5cGU7CisgIHB1YmxpYzoKKyAgICBiYXNpY19vZnN0cmVh
bSgpOworI2lmICEoR19fR05VQz49MykKKyAgICBiYXNpY19vZnN0cmVhbShjb25zdCBjaGFyICpz
LCBpb3NfYmFzZTo6b3Blbm1vZGUgbW9kZT1pb3NfYmFzZTo6b3V0CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLGxvbmcgcHJvdGVjdGlvbiA9IDA2NjYgKTsKKyAgICBiYXNpY19vZnN0cmVh
bShpbnQgZmQpOworICAgIGJhc2ljX29mc3RyZWFtKGludCBmZCwgY2hhcl90eXBlICpidWYsIGlu
dCBsZW4pOworI2Vsc2UKKyAgICBiYXNpY19vZnN0cmVhbShjb25zdCBjaGFyICpzLCBpb3NfYmFz
ZTo6b3Blbm1vZGUgbW9kZT1pb3NfYmFzZTo6b3V0KTsKKyNlbmRpZgorICAgIHZpcnR1YWwgfmJh
c2ljX29mc3RyZWFtKCk7CisgICAgYmFzaWNfZmlsZWJ1ZjxjaGFyVCwgdHJhaXRzPiAqcmRidWYo
KSBjb25zdDsKKyAgICBib29sIGlzX29wZW4oKTsKKyNpZiAhKEdfX0dOVUM+PTMpCisgICAgdm9p
ZCBvcGVuKGNvbnN0IGNoYXIgKnMsaW9zX2Jhc2U6Om9wZW5tb2RlIG1vZGU9aW9zX2Jhc2U6Om91
dAorICAgICAgICAgICAgICAsbG9uZyBwcm90ZWN0aW9uID0gMDY2NiApOworI2Vsc2UKKyAgICB2
b2lkIG9wZW4oY29uc3QgY2hhciAqcyxpb3NfYmFzZTo6b3Blbm1vZGUgbW9kZT1pb3NfYmFzZTo6
b3V0KTsKKyNlbmRpZgorICAgIHZvaWQgY2xvc2UoKTsKKyB9OworCit0ZW1wbGF0ZTxjbGFzcyBj
aGFyVCwgY2xhc3MgdHJhaXRzPgorY2xhc3MgYmFzaWNfZnN0cmVhbSA6IHB1YmxpYyBiYXNpY19p
b3N0cmVhbTxjaGFyVCwgdHJhaXRzPiB7CisgcHVibGljOgorICAgIGJhc2ljX2ZzdHJlYW0oKTsK
KyAgICBiYXNpY19mc3RyZWFtKGNvbnN0IGNoYXIgKnMsaW9zX2Jhc2U6Om9wZW5tb2RlIG1vZGUp
OworICAgIGJhc2ljX2ZpbGVidWY8Y2hhclQsIHRyYWl0cz4gKnJkYnVmKCkgY29uc3Q7CisgICAg
Ym9vbCBpc19vcGVuKCk7CisgICAgdm9pZCBvcGVuKGNvbnN0IGNoYXIgKnMsaW9zX2Jhc2U6Om9w
ZW5tb2RlIG1vZGUpOworICAgIHZvaWQgY2xvc2UoKTsKK307CisKK3R5cGVkZWYgYmFzaWNfZmls
ZWJ1ZjxjaGFyLCBjaGFyX3RyYWl0czxjaGFyPiA+ICAgICAgICAgZmlsZWJ1ZjsKKy8vdHlwZWRl
ZiBiYXNpY19maWxlYnVmPHdjaGFyX3QsIGNoYXJfdHJhaXRzPHdjaGFyX3Q+ID4gICB3ZmlsZWJ1
ZjsKK3R5cGVkZWYgYmFzaWNfaWZzdHJlYW08Y2hhciwgY2hhcl90cmFpdHM8Y2hhcj4gPiAgICAg
ICAgaWZzdHJlYW07CisvL3R5cGVkZWYgYmFzaWNfaWZzdHJlYW08d2NoYXJfdCwgY2hhcl90cmFp
dHM8d2NoYXJfdD4gPiAgd2lmc3RyZWFtOwordHlwZWRlZiBiYXNpY19vZnN0cmVhbTxjaGFyLCBj
aGFyX3RyYWl0czxjaGFyPiA+ICAgICAgICBvZnN0cmVhbTsKKy8vdHlwZWRlZiBiYXNpY19vZnN0
cmVhbTx3Y2hhcl90LCBjaGFyX3RyYWl0czx3Y2hhcl90PiA+ICB3b2ZzdHJlYW07Cit0eXBlZGVm
IGJhc2ljX2ZzdHJlYW08Y2hhciwgY2hhcl90cmFpdHM8Y2hhcj4gPiAgICAgICAgZnN0cmVhbTsK
Ky8vdHlwZWRlZiBiYXNpY19mc3RyZWFtPHdjaGFyX3QsIGNoYXJfdHJhaXRzPHdjaGFyX3Q+ID4g
IHdmc3RyZWFtOworCisKKyNlbmRpZiAvLyBfX0NJTlRfXworI2VuZGlmIC8vIEdfX0ZTVFJFQU1f
SApkaWZmIC1OYXVyIHJvb3QvY2ludC9saWIvZ2NjNHN0cm0vaW9zdHJtLmggcm9vdC5uZXcvY2lu
dC9saWIvZ2NjNHN0cm0vaW9zdHJtLmgKLS0tIHJvb3QvY2ludC9saWIvZ2NjNHN0cm0vaW9zdHJt
LmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKKysrIHJvb3QubmV3L2NpbnQv
bGliL2djYzRzdHJtL2lvc3RybS5oCTIwMDctMTEtMjYgMDk6MDc6NDcuMDAwMDAwMDAwIC0wNTAw
CkBAIC0wLDAgKzEsNjg0IEBACisvKiAvJSBDKysgJS8gKi8KKy8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICog
Y2ludCAoQy9DKysgaW50ZXJwcmV0ZXIpCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBoZWFkZXIgZmls
ZSBpb3N0cm0uaAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogRGVzY3JpcHRpb246CisgKiAgU3R1YiBm
aWxlIGZvciBtYWtpbmcgaW9zdHJlYW0gbGlicmFyeSBmb3IgZysrIDQuMDAKKyAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKKyAqIENvcHlyaWdodChjKSAyMDA3ICAgTWFzYWhhcnUgR290bworICoKKyAqIEZvciB0
aGUgbGljZW5zaW5nIHRlcm1zIHNlZSB0aGUgZmlsZSBDT1BZSU5HCisgKgorICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKi8KKworI2lmbmRlZiBHX19JT1NUUkVBTV9ICisjZGVmaW5lIEdfX0lPU1RSRUFNX0gKKwor
I2RlZmluZSBHX19UTVBMVElPUworCisjZGVmaW5lIEdfX09TVFJFQU1CT0RZCisvLyNkZWZpbmUg
R19fT1NUUkVBTU1FTUJFUlNUVUIKKyNkZWZpbmUgR19fT1NUUkVBTUdMT0JBTFNUVUIKKworI2lm
bmRlZiBfX0NJTlRfXworCisjaW5jbHVkZSA8aW9zdHJlYW0+Cit1c2luZyBuYW1lc3BhY2Ugc3Rk
OworCisvL2lubGluZSBvc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtJiBvc3QsdW5zaWduZWQg
Y2hhciBjKSAKKy8vICB7cmV0dXJuKG9zdC5vcGVyYXRvcjw8KGMpKTt9CitpbmxpbmUgb3N0cmVh
bSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgb3N0LHNob3J0IGMpIAorICB7cmV0dXJuKG9zdC5vcGVy
YXRvcjw8KGMpKTt9CitpbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgb3N0LHVu
c2lnbmVkIHNob3J0IGMpIAorICB7cmV0dXJuKG9zdC5vcGVyYXRvcjw8KGMpKTt9CitpbmxpbmUg
b3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgb3N0LGludCBjKSAKKyAge3JldHVybihvc3Qu
b3BlcmF0b3I8PChjKSk7fQoraW5saW5lIG9zdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJlYW0mIG9z
dCx1bnNpZ25lZCBpbnQgYykgCisgIHtyZXR1cm4ob3N0Lm9wZXJhdG9yPDwoYykpO30KK2lubGlu
ZSBvc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtJiBvc3QsbG9uZyBjKSAKKyAge3JldHVybihv
c3Qub3BlcmF0b3I8PChjKSk7fQoraW5saW5lIG9zdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJlYW0m
IG9zdCx1bnNpZ25lZCBsb25nIGMpIAorICB7cmV0dXJuKG9zdC5vcGVyYXRvcjw8KGMpKTt9Citp
bmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgb3N0LGZsb2F0IGMpIAorICB7cmV0
dXJuKG9zdC5vcGVyYXRvcjw8KGMpKTt9CitpbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0
cmVhbSYgb3N0LGRvdWJsZSBjKSAKKyAge3JldHVybihvc3Qub3BlcmF0b3I8PChjKSk7fQoraW5s
aW5lIG9zdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJlYW0mIG9zdCxsb25nIGRvdWJsZSBjKSAKKyAg
e3JldHVybihvc3Qub3BlcmF0b3I8PChjKSk7fQoraW5saW5lIG9zdHJlYW0mIG9wZXJhdG9yPDwg
KG9zdHJlYW0mIG9zdCxib29sIGMpIAorICB7cmV0dXJuKG9zdC5vcGVyYXRvcjw8KGMpKTt9Citp
bmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PCAoIG9zdHJlYW0mIG9zdCwgdm9pZCogcCkgCisgIHty
ZXR1cm4ob3N0Lm9wZXJhdG9yPDwocCkpO30KKworLy9pbmxpbmUgaXN0cmVhbSYgb3BlcmF0b3I+
PiAoIGlzdHJlYW0mIGlzdCwgdW5zaWduZWQgY2hhciYgcCkgCisvLyAge3JldHVybihpc3Qub3Bl
cmF0b3I+PihwKSk7fQoraW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4gKCBpc3RyZWFtJiBpc3Qs
IHNob3J0JiBwKSAKKyAge3JldHVybihpc3Qub3BlcmF0b3I+PihwKSk7fQoraW5saW5lIGlzdHJl
YW0mIG9wZXJhdG9yPj4gKCBpc3RyZWFtJiBpc3QsIHVuc2lnbmVkIHNob3J0JiBwKSAKKyAge3Jl
dHVybihpc3Qub3BlcmF0b3I+PihwKSk7fQoraW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4gKCBp
c3RyZWFtJiBpc3QsIGludCAmIHApIAorICB7cmV0dXJuKGlzdC5vcGVyYXRvcj4+KHApKTt9Citp
bmxpbmUgaXN0cmVhbSYgb3BlcmF0b3I+PiAoIGlzdHJlYW0mIGlzdCwgdW5zaWduZWQgaW50JiBw
KSAKKyAge3JldHVybihpc3Qub3BlcmF0b3I+PihwKSk7fQoraW5saW5lIGlzdHJlYW0mIG9wZXJh
dG9yPj4gKCBpc3RyZWFtJiBpc3QsIGxvbmcgJiBwKSAKKyAge3JldHVybihpc3Qub3BlcmF0b3I+
PihwKSk7fQoraW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4gKCBpc3RyZWFtJiBpc3QsIHVuc2ln
bmVkIGxvbmcmIHApIAorICB7cmV0dXJuKGlzdC5vcGVyYXRvcj4+KHApKTt9CitpbmxpbmUgaXN0
cmVhbSYgb3BlcmF0b3I+PiAoIGlzdHJlYW0mIGlzdCwgZmxvYXQgJiBwKSAKKyAge3JldHVybihp
c3Qub3BlcmF0b3I+PihwKSk7fQoraW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4gKCBpc3RyZWFt
JiBpc3QsIGRvdWJsZSAmIHApIAorICB7cmV0dXJuKGlzdC5vcGVyYXRvcj4+KHApKTt9Citpbmxp
bmUgaXN0cmVhbSYgb3BlcmF0b3I+PiAoIGlzdHJlYW0mIGlzdCwgYm9vbCYgcCkgCisgIHtyZXR1
cm4oaXN0Lm9wZXJhdG9yPj4ocCkpO30KK2lubGluZSBpc3RyZWFtJiBvcGVyYXRvcj4+ICggaXN0
cmVhbSYgaXN0LCBsb25nIGRvdWJsZSAmIHApIAorICB7cmV0dXJuKGlzdC5vcGVyYXRvcj4+KHAp
KTt9CitpbmxpbmUgaXN0cmVhbSYgb3BlcmF0b3I+PiAoIGlzdHJlYW0mIGlzdCwgdm9pZComIHAp
IAorICB7cmV0dXJuKGlzdC5vcGVyYXRvcj4+KHApKTt9CisKKyNpZm5kZWYgR19fT0xESU1QTEVN
RU5UQVRJT04xNjM1CisjaW5jbHVkZSA8ZnN0cmVhbT4KKy8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogc3RhdGlj
IHZhcmlhYmxlcyBmb3IgaW9zdHJlYW0gcmVkaXJlY3Rpb24KKyAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRp
YyBvc3RyZWFtOjpfX3N0cmVhbWJ1Zl90eXBlICpHX19zdG9yZV9jb3V0Oworc3RhdGljIG9zdHJl
YW06Ol9fc3RyZWFtYnVmX3R5cGUgKkdfX3N0b3JlX2NlcnI7CitzdGF0aWMgaXN0cmVhbTo6X19z
dHJlYW1idWZfdHlwZSAqR19fc3RvcmVfY2luOworc3RhdGljIG9mc3RyZWFtICAqR19fcmVkaXJl
Y3RlZF9jb3V0Oworc3RhdGljIG9mc3RyZWFtICAqR19fcmVkaXJlY3RlZF9jZXJyOworc3RhdGlj
IGlmc3RyZWFtICAqR19fcmVkaXJlY3RlZF9jaW47CisvKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEdfX3JlZGly
ZWN0Y291dAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqLworZXh0ZXJuICJDIiB2b2lkIEdfX3VucmVkaXJlY3Rjb3V0
KCkgeworICBpZihHX19zdG9yZV9jb3V0KSB7CisgICAgY291dC5yZGJ1ZihHX19zdG9yZV9jb3V0
KTsKKyAgICBHX19zdG9yZV9jb3V0ID0gMDsKKyAgfQorICBpZihHX19yZWRpcmVjdGVkX2NvdXQp
IHsKKyAgICBkZWxldGUgR19fcmVkaXJlY3RlZF9jb3V0OworICAgIEdfX3JlZGlyZWN0ZWRfY291
dCA9IDA7CisgIH0KK30KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogR19fcmVkaXJlY3Rjb3V0CisgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiovCitleHRlcm4gIkMiIHZvaWQgR19fcmVkaXJlY3Rjb3V0KGNvbnN0IGNoYXIqIGZpbGVu
YW1lKSB7CisgIEdfX3VucmVkaXJlY3Rjb3V0KCk7CisgIEdfX3JlZGlyZWN0ZWRfY291dCA9IG5l
dyBvZnN0cmVhbShmaWxlbmFtZSxpb3NfYmFzZTo6YXBwKTsKKyAgR19fc3RvcmVfY291dCA9IGNv
dXQucmRidWYoR19fcmVkaXJlY3RlZF9jb3V0LT5yZGJ1ZigpKSA7Cit9CisvKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
KyAqIEdfX3JlZGlyZWN0Y2VycgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworZXh0ZXJuICJDIiB2b2lkIEdfX3Vu
cmVkaXJlY3RjZXJyKCkgeworICBpZihHX19zdG9yZV9jZXJyKSB7CisgICAgY2Vyci5yZGJ1ZihH
X19zdG9yZV9jZXJyKTsKKyAgICBHX19zdG9yZV9jZXJyID0gMDsKKyAgfQorICBpZihHX19yZWRp
cmVjdGVkX2NlcnIpIHsKKyAgICBkZWxldGUgR19fcmVkaXJlY3RlZF9jZXJyOworICAgIEdfX3Jl
ZGlyZWN0ZWRfY2VyciA9IDA7CisgIH0KK30KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogR19fcmVkaXJlY3Rj
ZXJyCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiovCitleHRlcm4gIkMiIHZvaWQgR19fcmVkaXJlY3RjZXJyKGNvbnN0
IGNoYXIqIGZpbGVuYW1lKSB7CisgIEdfX3VucmVkaXJlY3RjZXJyKCk7CisgIEdfX3JlZGlyZWN0
ZWRfY2VyciA9IG5ldyBvZnN0cmVhbShmaWxlbmFtZSxpb3NfYmFzZTo6YXBwKTsKKyAgR19fc3Rv
cmVfY2VyciA9IGNlcnIucmRidWYoR19fcmVkaXJlY3RlZF9jZXJyLT5yZGJ1ZigpKSA7Cit9Cisv
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKKyAqIEdfX3JlZGlyZWN0Y2luCisgKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitleHRlcm4gIkMi
IHZvaWQgR19fdW5yZWRpcmVjdGNpbigpIHsKKyAgaWYoR19fc3RvcmVfY2luKSB7CisgICAgY2lu
LnJkYnVmKEdfX3N0b3JlX2Npbik7CisgICAgR19fc3RvcmVfY2luID0gMDsKKyAgfQorICBpZihH
X19yZWRpcmVjdGVkX2NpbikgeworICAgIGRlbGV0ZSBHX19yZWRpcmVjdGVkX2NpbjsKKyAgICBH
X19yZWRpcmVjdGVkX2NpbiA9IDA7CisgIH0KK30KKy8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogR19fcmVkaXJl
Y3RjaW4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKi8KK2V4dGVybiAiQyIgdm9pZCBHX19yZWRpcmVjdGNpbihjb25z
dCBjaGFyKiBmaWxlbmFtZSkgeworICBHX191bnJlZGlyZWN0Y2luKCk7CisgIEdfX3JlZGlyZWN0
ZWRfY2luID0gbmV3IGlmc3RyZWFtKGZpbGVuYW1lLGlvc19iYXNlOjppbik7CisgIEdfX3N0b3Jl
X2NpbiA9IGNpbi5yZGJ1ZihHX19yZWRpcmVjdGVkX2Npbi0+cmRidWYoKSkgOworfQorI2VuZGlm
IC8qIDE2MzUgKi8KKworI2Vsc2UgLy8gX19DSU5UX18KKworI2luY2x1ZGUgPGNzdGRpbz4KKwor
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisqIHN0cmVhbXBvcworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworZXh0ZXJuICJDIiB7Cisg
IHR5cGVkZWYgc3RydWN0IHsKKyAgICBwcml2YXRlOgorICAgICBpbnQgX19maWxsWzZdOworICB9
IG1ic3RhdGVfdDsKK30KKworI2lmZGVmIEdfX1RISVNfRE9FU19OT1RfV09SS19XSVRIX0NZR1dJ
Tl9HQ0MzCitjbGFzcyB3c3RyZWFtcG9zIHsgfTsKKyNlbmRpZgorY2xhc3Mgc3RyZWFtb2ZmIHsg
fTsKKworCit0eXBlZGVmIGxvbmcgbG9uZyBzdHJlYW1wb3MgOwordHlwZWRlZiBsb25nIGxvbmcg
c3RyZWFtb2ZmIDsKKwordHlwZWRlZiBsb25nIGxvbmcgICAgU1pfVDsgICAgICAgCit0eXBlZGVm
IFNaX1QgICAgICAgICBzdHJlYW1zaXplOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBfU3RhdGVUPgor
Y2xhc3MgZnBvcyB7CisgcHVibGljOgorICBmcG9zKCk7CisgIGZwb3MoY29uc3QgZnBvcyYpOwor
ICBmcG9zKGxvbmcgbG9uZyk7CisgIG9wZXJhdG9yIHN0cmVhbW9mZigpIGNvbnN0OworICBmcG9z
IG9wZXJhdG9yKyhzdHJlYW1vZmYgYSkgY29uc3Q7CisgIGZwb3Mgb3BlcmF0b3ItKHN0cmVhbW9m
ZiBhKSBjb25zdDsKKyAgc3RyZWFtb2ZmIG9wZXJhdG9yLShjb25zdCBmcG9zJiBhKSBjb25zdDsK
KyAgZnBvcyYgb3BlcmF0b3IrPShzdHJlYW1vZmYgYSk7CisgIGZwb3MmIG9wZXJhdG9yLT0oc3Ry
ZWFtb2ZmIGEpOworICBfU3RhdGVUIHN0YXRlKCkgY29uc3Q7CisgIHZvaWQgc3RhdGUoX1N0YXRl
VCBhKTsKKyAgLy9ib29sIG9wZXJhdG9yPT0oY29uc3QgZnBvcyYgYSk7CisgIC8vYm9vbCBvcGVy
YXRvciE9KGNvbnN0IGZwb3MmIGEpOworICAvL0ZJWE1FOiBvcGVyYXRvcis9IGFuZCBvcGVyYXRv
ci09IGFyZSBtaXNzaW5nCisgIC8vYm9vbCBvcGVyYXRvcj4oY29uc3QgZnBvcyYgYSk7CisgIC8v
ZnJpZW5kIGJvb2wgb3BlcmF0b3I8KGNvbnN0IGZwb3MmIGEsY29uc3QgZnBvcyYgYik7CisgIC8v
ZnJpZW5kIGJvb2wgb3BlcmF0b3I+KGNvbnN0IGZwb3MmIGEsY29uc3QgZnBvcyYgYik7CisgIC8v
ZnJpZW5kIGJvb2wgb3BlcmF0b3I8PShjb25zdCBmcG9zJiBhLGNvbnN0IGZwb3MmIGIpOworICAv
L2ZyaWVuZCBib29sIG9wZXJhdG9yPD0oY29uc3QgZnBvcyYgYSxjb25zdCBmcG9zJiBiKTsKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIF9TdGF0ZVQ+CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IGZwb3M8X1N0YXRlVD4mIGwsIGNvbnN0IGZwb3M8X1N0YXRlVD4mIHIpOworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBfU3RhdGVUPgoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBmcG9zPF9T
dGF0ZVQ+JiBsLCBjb25zdCBmcG9zPF9TdGF0ZVQ+JiByKTsKKwordHlwZWRlZiBmcG9zPG1ic3Rh
dGVfdD4gCQlzdHJlYW1wb3M7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBtYWNybyBHX19NQU5JUF9TVVBQ
T1JUIG11c3QgYmUgZGVmaW5lZCB0byBlbmFibGUgdHJ1ZSBtYW5pcHVsYXRvcgorKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqLworI2RlZmluZSBHX19NQU5JUF9TVVBQT1JUCisKK2NsYXNzIGlvc19iYXNlIHsKKyAgcHVi
bGljOgorICAgIHR5cGVkZWYgaW50ICAgICAgaW9zdGF0ZTsKKyAgICBlbnVtIGlvX3N0YXRlIHsK
Kwlnb29kYml0ICAgICA9IDB4MDAsICAgCisJYmFkYml0ICAgICAgPSAweDAxLCAgIAorCWVvZmJp
dCAgICAgID0gMHgwMiwgIAorCWZhaWxiaXQgICAgID0gMHgwNCAgCisgICAgfTsKKyAgICB0eXBl
ZGVmIGludCAgICAgIG9wZW5tb2RlOworICAgIGVudW0gb3Blbl9tb2RlIHsKKwlhcHAgICAgICAg
ICA9IDB4MDEsICAgCisJYmluYXJ5ICAgICAgPSAweDAyLCAgCisJaW4gICAgICAgICAgPSAweDA0
LCAKKwlvdXQgICAgICAgICA9IDB4MDgsICAgCisJdHJ1bmMgICAgICAgPSAweDEwLCAgICAgICAg
ICAgICAgICAgIAorCWF0ZSAgICAgICAgID0gMHgyMCAKKyAgICB9OworICAgIHR5cGVkZWYgaW50
ICAgICAgc2Vla2RpcjsKKyAgICBlbnVtIHNlZWtfZGlyIHsKKwliZWcgICAgICAgICA9IDB4MCwg
ICAgCisJY3VyICAgICAgICAgPSAweDEsICAgIAorCWVuZCAgICAgICAgID0gMHgyICAgCisgICAg
fTsgICAgICAgIAorICAgIHR5cGVkZWYgaW50ICAgICAgZm10ZmxhZ3M7CisgICAgZW51bSBmbXRf
ZmxhZ3MgeworCWJvb2xhbHBoYSAgID0gMHgwMDAxLAorCWRlYyAgICAgICAgID0gMHgwMDAyLAor
CWZpeGVkICAgICAgID0gMHgwMDA0LAorCWhleCAgICAgICAgID0gMHgwMDA4LAorCWludGVybmFs
ICAgID0gMHgwMDEwLAorCWxlZnQgICAgICAgID0gMHgwMDIwLAorCW9jdCAgICAgICAgID0gMHgw
MDQwLAorCXJpZ2h0ICAgICAgID0gMHgwMDgwLAorCXNjaWVudGlmaWMgID0gMHgwMTAwLAorCXNo
b3diYXNlICAgID0gMHgwMjAwLCAKKwlzaG93cG9pbnQgICA9IDB4MDQwMCwgCisJc2hvd3BvcyAg
ICAgPSAweDA4MDAsIAorCXNraXB3cyAgICAgID0gMHgxMDAwLCAKKwl1bml0YnVmICAgICA9IDB4
MjAwMCwgCisJdXBwZXJjYXNlICAgPSAweDQwMDAsIAorCWFkanVzdGZpZWxkID0gbGVmdCB8IHJp
Z2h0IHwgaW50ZXJuYWwsCisJYmFzZWZpZWxkICAgPSBkZWMgfCBvY3QgfCBoZXgsCisJZmxvYXRm
aWVsZCAgPSBzY2llbnRpZmljIHwgZml4ZWQKKyAgICB9OworICAgIGVudW0gZXZlbnQgeyAKKwll
cmFzZV9ldmVudCAgID0gMHgwMDAxLAorCWltYnVlX2V2ZW50ICAgPSAweDAwMDIsCisJY29weWZt
dF9ldmVudCA9IDB4MDAwNAorICAgIH07CisgICAgdHlwZWRlZiB2b2lkICgqZXZlbnRfY2FsbGJh
Y2spIChldmVudCwgaW9zX2Jhc2UmLCBpbnQgaW5kZXgpOworICAgIHZvaWQgcmVnaXN0ZXJfY2Fs
bGJhY2soIGV2ZW50X2NhbGxiYWNrIGZuLCBpbnQgaW5kZXgpOworI2lmZGVmIEdfX1NVTkNDNQor
ICAgIGVudW0gRW1wdHlDdG9yIHtlbXB0eWN0b3J9OyAKKyNlbmRpZgorICAgIGNsYXNzIEluaXQg
eworICAgIHB1YmxpYzoKKyNpZiAhKEdfX0dOVUM+PTMpCisJc3RhdGljIGludCBnZXRpbml0X2Nu
dF8oKTsKKyNlbmRpZgorCUluaXQoKTsKKyNpZmRlZiBfX01BS0VDSU5UX18KKyAgICAgICBwcml2
YXRlOgorI2VuZGlmCisJfkluaXQoKTsKKyAgICB9OworICAgIGlubGluZSBmbXRmbGFncyBmbGFn
cygpIGNvbnN0OworICAgIGlubGluZSBmbXRmbGFncyBmbGFncyhmbXRmbGFncyBmbXRmbCk7Cisg
ICAgaW5saW5lIGZtdGZsYWdzIHNldGYoZm10ZmxhZ3MgZm10ZmwpOworICAgIGlubGluZSBmbXRm
bGFncyBzZXRmKGZtdGZsYWdzIGZtdGZsLCBmbXRmbGFncyBtYXNrKTsKKyAgICBpbmxpbmUgdm9p
ZCB1bnNldGYoZm10ZmxhZ3MgbWFzayk7CisjaWYgIShHX19HTlVDPj0zKQorICAgIGlvc19iYXNl
JiBjb3B5Zm10KGNvbnN0IGlvc19iYXNlJiByaHMpOworI2VuZGlmCisgICAgaW5saW5lIHN0cmVh
bXNpemUgcHJlY2lzaW9uKCkgY29uc3Q7CisgICAgaW5saW5lIHN0cmVhbXNpemUgcHJlY2lzaW9u
KHN0cmVhbXNpemUgcHJlYyk7CisgICAgaW5saW5lIHN0cmVhbXNpemUgd2lkdGgoKSBjb25zdDsK
KyAgICBpbmxpbmUgc3RyZWFtc2l6ZSB3aWR0aChzdHJlYW1zaXplIHdpZGUpOworICAgIHN0YXRp
YyBpbnQgeGFsbG9jKCk7CisgICAgbG9uZyYgIGl3b3JkKGludCBpbmRleCk7CisgICAgdm9pZCom
IHB3b3JkKGludCBpbmRleCk7CisgICAgLy9sb2NhbGUgaW1idWUoY29uc3QgbG9jYWxlJiBsb2Mp
OworICAgIC8vbG9jYWxlIGdldGxvYygpIGNvbnN0IDsKKyNpZiAhKEdfX0dOVUM+PTMpCisgICAg
Ym9vbCBpc19zeW5jaCgpIDsKKyNlbmRpZgorI2lmZGVmIEdfX1NVTkNDNQorICAgIHN0YXRpYyBi
b29sIHN5bmNfd2l0aF9zdGRpbyhib29sIHN5bmMgPSB0cnVlKTsKKyNlbHNlCisgICAgYm9vbCBz
eW5jX3dpdGhfc3RkaW8oYm9vbCBzeW5jID0gdHJ1ZSk7CisjZW5kaWYKKyNpZmRlZiBHX19TVU5D
QzUKKyAgICB2aXJ0dWFsIH5pb3NfYmFzZSgpOyAgICAKKyNlbmRpZgorICBwcm90ZWN0ZWQ6Cisg
ICAgaW9zX2Jhc2UoKTsKKyNpZm5kZWYgR19fU1VOQ0M1CisgICAgfmlvc19iYXNlKCk7ICAgIAor
I2VuZGlmCisjaWYgKEdfX0dOVUM+PTMpCisgIHByaXZhdGU6CisgICAgaW9zX2Jhc2UoY29uc3Qg
aW9zX2Jhc2UmIHgpOyAKKyAgICBpb3NfYmFzZSYgb3BlcmF0b3I9KGNvbnN0IGlvc19iYXNlJiB4
KTsKKyNlbmRpZgorfTsKKwordGVtcGxhdGU8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KK2Ns
YXNzIGJhc2ljX2lvcyA6IHB1YmxpYyBpb3NfYmFzZSB7IAorICBwdWJsaWM6CisjaWYgIShHX19H
TlVDPj0zKQorICAgIHR5cGVkZWYgYmFzaWNfaW9zPGNoYXJULHRyYWl0cyA+ICAgICAgICAgICBp
b3NfdHlwZTsKKyAgICB0eXBlZGVmIGJhc2ljX3N0cmVhbWJ1ZjxjaGFyVCx0cmFpdHMgPiAgICAg
c3RyZWFtYnVmX3R5cGU7IAorICAgIHR5cGVkZWYgYmFzaWNfb3N0cmVhbTxjaGFyVCx0cmFpdHMg
PiAgICAgICBvc3RyZWFtX3R5cGU7CisjZW5kaWYKKyAgICB0eXBlZGVmIHRyYWl0czo6Y2hhcl90
eXBlICAgICAgY2hhcl90eXBlOworICAgIHR5cGVkZWYgdHJhaXRzICAgICAgICAgICAgICAgICB0
cmFpdHNfdHlwZTsKKyAgICB0eXBlZGVmIHRyYWl0czo6aW50X3R5cGUgICAgICAgaW50X3R5cGU7
CisgICAgdHlwZWRlZiB0cmFpdHM6Om9mZl90eXBlICAgICAgIG9mZl90eXBlOworICAgIHR5cGVk
ZWYgdHJhaXRzOjpwb3NfdHlwZSAgICAgICBwb3NfdHlwZTsKKyAgICBleHBsaWNpdCBiYXNpY19p
b3MoYmFzaWNfc3RyZWFtYnVmPGNoYXJULCB0cmFpdHM+ICpzYl9hcmcpOworICAgIHZpcnR1YWwg
fmJhc2ljX2lvcygpOworICAgIGNoYXJfdHlwZSBmaWxsKCkgY29uc3Q7ICAgICAgICAKKyAgICBj
aGFyX3R5cGUgZmlsbChjaGFyX3R5cGUgY2gpOworICAgIGlubGluZSB2b2lkIGV4Y2VwdGlvbnMo
aW9zdGF0ZSBleGNwdCk7CisgICAgaW5saW5lIGlvc3RhdGUgZXhjZXB0aW9ucygpIGNvbnN0Owor
ICAgIGlubGluZSB2b2lkIGNsZWFyKGlvc3RhdGUgc3RhdGUgPSBnb29kYml0KTsKKyAgICBpbmxp
bmUgdm9pZCBzZXRzdGF0ZShpb3N0YXRlIHN0YXRlKTsKKyAgICBpbmxpbmUgaW9zdGF0ZSByZHN0
YXRlKCkgY29uc3Q7CisgICAgaW5saW5lIG9wZXJhdG9yIHZvaWQqKCkgY29uc3Q7CisgICAgaW5s
aW5lIGJvb2wgb3BlcmF0b3IhICgpIGNvbnN0OworICAgIGlubGluZSBib29sIGdvb2QoKSBjb25z
dDsKKyAgICBpbmxpbmUgYm9vbCBlb2YoKSAgY29uc3Q7CisgICAgaW5saW5lIGJvb2wgZmFpbCgp
IGNvbnN0OworICAgIGlubGluZSBib29sIGJhZCgpICBjb25zdDsKKyNpZiAhKEdfX0dOVUM+PTMp
CisgICAgaW9zX3R5cGUmIGNvcHlmbXQoY29uc3QgaW9zX3R5cGUmIHJocyk7CisjZWxzZQorICAg
IGJhc2ljX2lvcyYgY29weWZtdChjb25zdCBiYXNpY19pb3MmIHJocyk7CisjZW5kaWYKKyAgICBp
bmxpbmUgYmFzaWNfb3N0cmVhbTxjaGFyVCx0cmFpdHM+ICp0aWUoKSBjb25zdDsKKyAgICBiYXNp
Y19vc3RyZWFtPGNoYXJULHRyYWl0cz4gKnRpZShiYXNpY19vc3RyZWFtPGNoYXJULHRyYWl0cz4g
KnRpZV9hcmcpOworICAgIGlubGluZSBiYXNpY19zdHJlYW1idWY8Y2hhclQsdHJhaXRzPiAqcmRi
dWYoKSBjb25zdDsKKyAgICBiYXNpY19zdHJlYW1idWY8Y2hhclQsdHJhaXRzPiAqcmRidWYoIGJh
c2ljX3N0cmVhbWJ1ZjxjaGFyVCx0cmFpdHM+ICpzYik7CisgICAgLy9sb2NhbGUgaW1idWUoY29u
c3QgbG9jYWxlJiBsb2MpOworICAgIGlubGluZSBjaGFyICBuYXJyb3coY2hhclQsIGNoYXIpIGNv
bnN0OworICAgIGlubGluZSBjaGFyVCB3aWRlbihjaGFyKSBjb25zdDsKKyAgcHJvdGVjdGVkOgor
ICAgIGJhc2ljX2lvcygpOworICAgIHZvaWQgaW5pdChiYXNpY19zdHJlYW1idWY8Y2hhclQsIHRy
YWl0cz4gKnNiKTsKKyAgcHJpdmF0ZToKKy8vICNpZmRlZiBHX19TVU5DQzUKKyAgICBiYXNpY19p
b3MoY29uc3QgYmFzaWNfaW9zJiApOyAgICAgICAvLyAgbm90IGRlZmluZWQKKyAgICBiYXNpY19p
b3MmIG9wZXJhdG9yPShjb25zdCBiYXNpY19pb3MmKTsgICAgIC8vICBub3QgZGVmaW5lZAorLy8g
I2VuZGlmCit9OworCit0ZW1wbGF0ZTxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgorY2xhc3Mg
YmFzaWNfc3RyZWFtYnVmIHsKKyAgcHVibGljOgorICAgIHR5cGVkZWYgY2hhclQJCSAgICAgICAJ
ICBjaGFyX3R5cGU7CisgICAgdHlwZWRlZiB0cmFpdHMgICAgICAgICAgICAgICAgICAgICAgICB0
cmFpdHNfdHlwZTsKKyAgICB0eXBlZGVmIHRyYWl0czo6aW50X3R5cGUJICAgICAgICAgIGludF90
eXBlOworICAgIHR5cGVkZWYgdHJhaXRzOjpwb3NfdHlwZQkgICAgICAgICAgcG9zX3R5cGU7Cisg
ICAgdHlwZWRlZiB0cmFpdHM6Om9mZl90eXBlCSAgICAgICAgICBvZmZfdHlwZTsKKyAgICB2aXJ0
dWFsIH5iYXNpY19zdHJlYW1idWYoKTsKKyAgICAvL2xvY2FsZSBwdWJpbWJ1ZSggY29uc3QgbG9j
YWxlJiBsb2MpOworICAgIC8vbG9jYWxlIGdldGxvYygpIGNvbnN0OyAKKyAgICBpbmxpbmUgIGJh
c2ljX3N0cmVhbWJ1ZjxjaGFyX3R5cGUsIHRyYWl0cz4gKgorCXB1YnNldGJ1ZihjaGFyX3R5cGUg
KnMsIHN0cmVhbXNpemUgbik7CisgICAgaW5saW5lIHBvc190eXBlIHB1YnNlZWtvZmYob2ZmX3R5
cGUgb2ZmLCBpb3NfYmFzZTo6c2Vla2RpciB3YXksCisJCQkgICAgICAgaW9zX2Jhc2U6Om9wZW5t
b2RlIHdoaWNoID0KKwkJCSAgICAgICBpb3NfYmFzZTo6aW4gfCBpb3NfYmFzZTo6b3V0KTsKKyAg
ICBpbmxpbmUgcG9zX3R5cGUgcHVic2Vla3Bvcyhwb3NfdHlwZSBzcCwgaW9zX2Jhc2U6Om9wZW5t
b2RlIHdoaWNoID0KKwkJCSAgICAgICBpb3NfYmFzZTo6aW4gfCBpb3NfYmFzZTo6b3V0KTsKKyAg
ICBpbmxpbmUgaW50IHB1YnN5bmMoICk7CisjaWYgIShHX19HTlVDPj0zKQorICAgIGlubGluZSBp
b3NfYmFzZTo6b3Blbm1vZGUgd2hpY2hfb3Blbl9tb2RlKCk7CisjZW5kaWYKKyAgICBpbmxpbmUg
c3RyZWFtc2l6ZSAgIGluX2F2YWlsKCk7CisgICAgaW5saW5lIGludF90eXBlIHNuZXh0YygpOwor
ICAgIGlubGluZSBpbnRfdHlwZSBzYnVtcGMoKTsKKyAgICBpbmxpbmUgaW50X3R5cGUgc2dldGMo
KTsKKyAgICBpbmxpbmUgc3RyZWFtc2l6ZSBzZ2V0bihjaGFyX3R5cGUgKnMsIHN0cmVhbXNpemUg
bik7CisgICAgaW5saW5lIGludF90eXBlIHNwdXRiYWNrYyhjaGFyX3R5cGUgYyk7CisgICAgaW5s
aW5lIGludF90eXBlIHN1bmdldGMoKTsKKyAgICBpbmxpbmUgaW50X3R5cGUgc3B1dGMoY2hhcl90
eXBlIGMpOworICAgIGlubGluZSBzdHJlYW1zaXplIHNwdXRuKGNvbnN0IGNoYXJfdHlwZSAqcywg
c3RyZWFtc2l6ZSBuKTsKKyAgcHJvdGVjdGVkOgorICAgIGJhc2ljX3N0cmVhbWJ1ZigpOworI2lm
IChHX19HTlVDPj0zKQorICBwcml2YXRlOgorICAgIGJhc2ljX3N0cmVhbWJ1Zihjb25zdCBiYXNp
Y19zdHJlYW1idWYmIHgpOworICAgIGJhc2ljX3N0cmVhbWJ1ZiYgb3BlcmF0b3I9KGNvbnN0IGJh
c2ljX3N0cmVhbWJ1ZiYgeCk7CisjZW5kaWYKK307CisKK3RlbXBsYXRlPGNsYXNzIGNoYXJULCBj
bGFzcyB0cmFpdHM+CitjbGFzcyBiYXNpY19pc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgYmFzaWNf
aW9zPGNoYXJULCB0cmFpdHM+IHsKKyAgcHVibGljOgorICAgIHR5cGVkZWYgYmFzaWNfaXN0cmVh
bTxjaGFyVCwgdHJhaXRzPiAgICAgICAgICAgICBfX2lzdHJlYW1fdHlwZTsKKyAgICB0eXBlZGVm
IGJhc2ljX2lvczxjaGFyVCwgdHJhaXRzPiAgICAgICAgICAgICAgICAgX19pb3NfdHlwZTsKKyAg
ICB0eXBlZGVmIGJhc2ljX3N0cmVhbWJ1ZjxjaGFyVCwgdHJhaXRzPiAgICAgICAgICAgX19zdHJl
YW1idWZfdHlwZTsKKyAgICB0eXBlZGVmIHRyYWl0cyAgICAgICAgICAgICAgICAgICAgICB0cmFp
dHNfdHlwZTsKKyAgICB0eXBlZGVmIGNoYXJUCQkgICAgICAJY2hhcl90eXBlOworICAgIHR5cGVk
ZWYgdHJhaXRzOjppbnRfdHlwZSAgIGludF90eXBlOworICAgIHR5cGVkZWYgdHJhaXRzOjpwb3Nf
dHlwZSAgIHBvc190eXBlOworICAgIHR5cGVkZWYgdHJhaXRzOjpvZmZfdHlwZSAgIG9mZl90eXBl
OworICAgIGV4cGxpY2l0IGJhc2ljX2lzdHJlYW0oYmFzaWNfc3RyZWFtYnVmPGNoYXJULCB0cmFp
dHM+ICpzYik7CisgICAgdmlydHVhbCB+YmFzaWNfaXN0cmVhbSgpOworICAgIGNsYXNzIHNlbnRy
eSB7CisgICAgcHVibGljOgorCWlubGluZSBzZW50cnkoYmFzaWNfaXN0cmVhbTxjaGFyVCx0cmFp
dHM+JiBzdHJlYW0sYm9vbCBub3NraXB3cyA9IDApOworI2lmZGVmIF9fTUFLRUNJTlRfXworICAg
ICAgIHByaXZhdGU6CisJfnNlbnRyeSgpIHt9CisgICAgICAgcHVibGljOgorI2Vsc2UKKwl+c2Vu
dHJ5KCkge30KKyNlbmRpZgorCW9wZXJhdG9yIGJvb2wgKCkgeyByZXR1cm4gb2tfOyB9CisgICAg
fTsKKyAgICAvL19faXN0cmVhbV90eXBlJiBvcGVyYXRvcj4+KF9faXN0cmVhbV90eXBlJiAoKnBm
KShfX2lzdHJlYW1fdHlwZSYpKTsKKyAgICAvL19faXN0cmVhbV90eXBlJiBvcGVyYXRvcj4+KGlv
c19iYXNlJiAoKnBmKShpb3NfYmFzZSYpKTsKKyAgICAvL19faXN0cmVhbV90eXBlJiBvcGVyYXRv
cj4+KF9faW9zX3R5cGUmICgqcGYpKF9faW9zX3R5cGUmKSk7CisjaWZuZGVmIF9fQ0lOVF9fCisg
ICAgX19pc3RyZWFtX3R5cGUmIG9wZXJhdG9yPj4oYm9vbCYgbik7CisgICAgX19pc3RyZWFtX3R5
cGUmIG9wZXJhdG9yPj4oc2hvcnQmIG4pOworICAgIF9faXN0cmVhbV90eXBlJiBvcGVyYXRvcj4+
KHVuc2lnbmVkIHNob3J0JiBuKTsKKyAgICBfX2lzdHJlYW1fdHlwZSYgb3BlcmF0b3I+PihpbnQm
IG4pOworICAgIF9faXN0cmVhbV90eXBlJiBvcGVyYXRvcj4+KHVuc2lnbmVkIGludCYgbik7Cisg
ICAgX19pc3RyZWFtX3R5cGUmIG9wZXJhdG9yPj4obG9uZyYgbik7CisgICAgX19pc3RyZWFtX3R5
cGUmIG9wZXJhdG9yPj4odW5zaWduZWQgbG9uZyYgbik7CisgICAgX19pc3RyZWFtX3R5cGUmIG9w
ZXJhdG9yPj4oZmxvYXQmIGYpOworICAgIF9faXN0cmVhbV90eXBlJiBvcGVyYXRvcj4+KGRvdWJs
ZSYgZik7CisgICAgX19pc3RyZWFtX3R5cGUmIG9wZXJhdG9yPj4obG9uZyBkb3VibGUmIGYpOwor
I2lmICEoR19fR05VQz49MykKKyAgICBfX2lzdHJlYW1fdHlwZSYgb3BlcmF0b3I+PihfX3N0cmVh
bWJ1Zl90eXBlICpzYik7CisjZW5kaWYKKyAgICBfX2lzdHJlYW1fdHlwZSYgb3BlcmF0b3I+Pih2
b2lkKiYgcCk7CisjZW5kaWYKKyNpZiAhKEdfX0dOVUM+PTMpCisgICAgX19pc3RyZWFtX3R5cGUm
IG9wZXJhdG9yPj4oX19zdHJlYW1idWZfdHlwZSYgc2IpOworI2VuZGlmCisgICAgaW50X3R5cGUg
Z2V0KCk7CisgICAgX19pc3RyZWFtX3R5cGUmIGdldChjaGFyX3R5cGUgKnMsIHN0cmVhbXNpemUg
biwgY2hhcl90eXBlIGRlbGltKTsKKyAgICBfX2lzdHJlYW1fdHlwZSYgZ2V0KGNoYXJfdHlwZSAq
cywgc3RyZWFtc2l6ZSBuKTsKKyAgICBfX2lzdHJlYW1fdHlwZSYgZ2V0KGNoYXJfdHlwZSYgYyk7
CisgICAgX19pc3RyZWFtX3R5cGUmIGdldChfX3N0cmVhbWJ1Zl90eXBlJiBzYiwgY2hhcl90eXBl
IGRlbGltKTsKKyAgICBfX2lzdHJlYW1fdHlwZSYgZ2V0KF9fc3RyZWFtYnVmX3R5cGUmIHNiKTsK
KyAgICBfX2lzdHJlYW1fdHlwZSYgZ2V0bGluZShjaGFyX3R5cGUgKnMsIHN0cmVhbXNpemUgbiwg
Y2hhcl90eXBlIGRlbGltKTsKKyAgICBfX2lzdHJlYW1fdHlwZSYgZ2V0bGluZShjaGFyX3R5cGUg
KnMsIHN0cmVhbXNpemUgbik7CisgICAgX19pc3RyZWFtX3R5cGUmIGlnbm9yZShzdHJlYW1zaXpl
IG4gLCBpbnRfdHlwZSBkZWxpbSApOworICAgIF9faXN0cmVhbV90eXBlJiBpZ25vcmUoc3RyZWFt
c2l6ZSBuID0xICk7CisgICAgLy9fX2lzdHJlYW1fdHlwZSYgaWdub3JlKHN0cmVhbXNpemUgbiA9
IDEsIGludF90eXBlIGRlbGltID0gdHJhaXRzOjplb2YoKSk7CisgICAgX19pc3RyZWFtX3R5cGUm
IHJlYWQoY2hhcl90eXBlICpzLCBzdHJlYW1zaXplIG4pOworICAgIHN0cmVhbXNpemUgcmVhZHNv
bWUoY2hhcl90eXBlICpzLCBzdHJlYW1zaXplIG4pOworICAgIGludCBwZWVrKCk7CisgICAgcG9z
X3R5cGUgdGVsbGcoKTsKKyAgICBfX2lzdHJlYW1fdHlwZSYgc2Vla2cocG9zX3R5cGUgcG9zKTsK
KyAgICBpbnQgc3luYygpOworLy8jaWZuZGVmIF9fQ0lOVF9fCisgICAgX19pc3RyZWFtX3R5cGUm
IHNlZWtnKG9mZl90eXBlLCBpb3NfYmFzZTo6c2Vla2Rpcik7CisvLyNlbmRpZgorICAgIF9faXN0
cmVhbV90eXBlJiBwdXRiYWNrKGNoYXJfdHlwZSBjKTsKKyAgICBfX2lzdHJlYW1fdHlwZSYgdW5n
ZXQoKTsKKyAgICBzdHJlYW1zaXplIGdjb3VudCgpIGNvbnN0OworICBwcm90ZWN0ZWQ6CisgICAg
YmFzaWNfaXN0cmVhbSggKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFp
dHM+CitjbGFzcyBiYXNpY19vc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgYmFzaWNfaW9zPGNoYXJU
LCB0cmFpdHM+IHsKKyAgcHVibGljOgorICAgIHR5cGVkZWYgYmFzaWNfb3N0cmVhbTxjaGFyVCwg
dHJhaXRzPiAgICAgICAgICAgX19vc3RyZWFtX3R5cGU7CisgICAgdHlwZWRlZiBiYXNpY19pb3M8
Y2hhclQsIHRyYWl0cz4gICAgICAgICAgICAgICBfX2lvc190eXBlOworICAgIHR5cGVkZWYgdHJh
aXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7CisgICAgdHlw
ZWRlZiBjaGFyVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Cisg
ICAgdHlwZWRlZiB0cmFpdHM6OmludF90eXBlICAgICAgICAgICAgICBpbnRfdHlwZTsKKyAgICB0
eXBlZGVmIHRyYWl0czo6cG9zX3R5cGUgICAgICAgICAgICAgIHBvc190eXBlOworICAgIHR5cGVk
ZWYgdHJhaXRzOjpvZmZfdHlwZSAgICAgICAgICAgICAgb2ZmX3R5cGU7CisgICAgZXhwbGljaXQg
YmFzaWNfb3N0cmVhbShiYXNpY19zdHJlYW1idWY8Y2hhclQsIHRyYWl0cz4gKnNiKTsKKyAgICB2
aXJ0dWFsIH5iYXNpY19vc3RyZWFtKCk7CisgICAgY2xhc3Mgc2VudHJ5IHsKKyAgICBwdWJsaWM6
CisgICAgICBpbmxpbmUgZXhwbGljaXQgc2VudHJ5KGJhc2ljX29zdHJlYW08Y2hhclQsdHJhaXRz
PiYgc3RyZWFtKTsKKyNpZmRlZiBfX01BS0VDSU5UX18KKyAgICAgICBwcml2YXRlOgorCX5zZW50
cnkoKSB7fQorICAgICAgIHB1YmxpYzoKKyNlbHNlCisgICAgICAgfnNlbnRyeSgpIDsKKyNlbmRp
ZgorICAgICAgb3BlcmF0b3IgYm9vbCAoKSA7CisgICAgcHJpdmF0ZToKKy8vI2lmZGVmIEdfX1NV
TkNDNQorICAgICAgc2VudHJ5KGNvbnN0IHNlbnRyeSYpOyAvLyAgIG5vdCBkZWZpbmVkCisgICAg
ICBzZW50cnkmIG9wZXJhdG9yPShjb25zdCBzZW50cnkmKTsgLy8gICBub3QgZGVmaW5lZAorLy8j
ZW5kaWYKKyAgICB9OworICAgIC8vX19vc3RyZWFtX3R5cGUmIG9wZXJhdG9yPDwoX19vc3RyZWFt
X3R5cGUmICgqcGYpKF9fb3N0cmVhbV90eXBlJikpOworICAgIC8vX19vc3RyZWFtX3R5cGUmIG9w
ZXJhdG9yPDwoaW9zX2Jhc2UmICgqcGYpKGlvc19iYXNlJikpOworICAgIC8vX19vc3RyZWFtX3R5
cGUmIG9wZXJhdG9yPDwoX19pb3NfdHlwZSYgKCpwZikoX19pb3NfdHlwZSYpKTsKKyNpZm5kZWYg
X19DSU5UX18KKyAgICBfX29zdHJlYW1fdHlwZSYgb3BlcmF0b3I8PChzaG9ydCBuKTsKKyAgICBf
X29zdHJlYW1fdHlwZSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBzaG9ydCBuKTsKKyAgICBfX29zdHJl
YW1fdHlwZSYgb3BlcmF0b3I8PChpbnQgbik7CisgICAgX19vc3RyZWFtX3R5cGUmIG9wZXJhdG9y
PDwodW5zaWduZWQgaW50IG4pOworICAgIF9fb3N0cmVhbV90eXBlJiBvcGVyYXRvcjw8KGxvbmcg
bik7CisgICAgX19vc3RyZWFtX3R5cGUmIG9wZXJhdG9yPDwodW5zaWduZWQgbG9uZyBuKTsKKyAg
ICBfX29zdHJlYW1fdHlwZSYgb3BlcmF0b3I8PChmbG9hdCBmKTsKKyAgICBfX29zdHJlYW1fdHlw
ZSYgb3BlcmF0b3I8PChkb3VibGUgZik7CisgICAgX19vc3RyZWFtX3R5cGUmIG9wZXJhdG9yPDwo
bG9uZyBkb3VibGUgZik7IAorICAgIF9fb3N0cmVhbV90eXBlJiBvcGVyYXRvcjw8KGJvb2wgbik7
CisgICAgX19vc3RyZWFtX3R5cGUmIG9wZXJhdG9yPDwoYmFzaWNfc3RyZWFtYnVmPGNoYXJfdHlw
ZSwgdHJhaXRzPiAqc2IpOworICAgIF9fb3N0cmVhbV90eXBlJiBvcGVyYXRvcjw8KHZvaWQgKnAp
OworI2VuZGlmCisgICAgLy9fX29zdHJlYW1fdHlwZSYgb3BlcmF0b3I8PChiYXNpY19zdHJlYW1i
dWY8Y2hhcl90eXBlLCB0cmFpdHM+JiBzYik7CisgICAgX19vc3RyZWFtX3R5cGUmIHB1dChjaGFy
X3R5cGUgYyk7CisgICAgX19vc3RyZWFtX3R5cGUmIHdyaXRlKGNvbnN0IGNoYXJfdHlwZSAqcywg
c3RyZWFtc2l6ZSBuKTsKKyAgICBfX29zdHJlYW1fdHlwZSYgZmx1c2goKTsKKyAgICBfX29zdHJl
YW1fdHlwZSYgc2Vla3AocG9zX3R5cGUgcG9zKTsKKyAgICBfX29zdHJlYW1fdHlwZSYgc2Vla3Ao
b2ZmX3R5cGUgLCBpb3NfYmFzZTo6c2Vla2RpciApOworICAgIHBvc190eXBlIHRlbGxwKCk7Cisg
IHByb3RlY3RlZDoKKyAgICBiYXNpY19vc3RyZWFtKCk7Cit9OworCisKK3RlbXBsYXRlPGNsYXNz
IGNoYXJULCBjbGFzcyB0cmFpdHM+CitjbGFzcyBiYXNpY19pb3N0cmVhbSAKKyA6IHB1YmxpYyBi
YXNpY19pc3RyZWFtPGNoYXJULHRyYWl0cz4scHVibGljIGJhc2ljX29zdHJlYW08Y2hhclQsdHJh
aXRzPiAKK3sKK3B1YmxpYzoKKyAgZXhwbGljaXQgYmFzaWNfaW9zdHJlYW0oYmFzaWNfc3RyZWFt
YnVmPGNoYXJULCB0cmFpdHM+ICpzYik7CisgIHZpcnR1YWwgfmJhc2ljX2lvc3RyZWFtKCk7Cisg
ICAgICAKK3Byb3RlY3RlZDoKKyAgZXhwbGljaXQgYmFzaWNfaW9zdHJlYW0oKTsKK307CisKKwor
dHlwZWRlZiBpbnQgSU5UX1Q7CisKK3RlbXBsYXRlPGNsYXNzIGNoYXJUPgorc3RydWN0IGNoYXJf
dHJhaXRzIHsKKyAgICB0eXBlZGVmIGNoYXJUICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBl
OworICAgIHR5cGVkZWYgSU5UX1QgICAgICAgICAgICAgICAgICAgICBpbnRfdHlwZTsKKyAgICB0
eXBlZGVmIG1ic3RhdGVfdCAgICAgICAgICAgICAgICAgc3RhdGVfdHlwZTsKKyAgICB0eXBlZGVm
IGZwb3M8c3RhdGVfdHlwZT4gICAgICAgICBwb3NfdHlwZTsKKyAgICB0eXBlZGVmIHdzdHJlYW1v
ZmYgICAgICAgICAgICAgICBvZmZfdHlwZTsKKyAgICBzdGF0aWMgdm9pZCBhc3NpZ24gKGNoYXJf
dHlwZSYgYzEsIGNvbnN0IGNoYXJfdHlwZSYgYzIpICAgOworICAgIHN0YXRpYyBjaGFyX3R5cGUg
dG9fY2hhcl90eXBlKGNvbnN0IGludF90eXBlJiBjKTsKKyAgICBzdGF0aWMgaW50X3R5cGUgdG9f
aW50X3R5cGUoY29uc3QgY2hhcl90eXBlJiBjKTsKKyAgICBzdGF0aWMgYm9vbCAgICAgZXEoY29u
c3QgY2hhcl90eXBlJiBjMSxjb25zdCBjaGFyX3R5cGUmIGMyKTsKKyAgICBzdGF0aWMgYm9vbCBs
dCAoY29uc3QgY2hhcl90eXBlJiBjMSwgY29uc3QgY2hhcl90eXBlJiBjMikgOworICAgIHN0YXRp
YyBpbnQgY29tcGFyZSAoY29uc3QgY2hhcl90eXBlKiBzMSwgY29uc3QgY2hhcl90eXBlKiBzMiwg
c2l6ZV90IG4pOworICAgIHN0YXRpYyBib29sICAgICBlcV9pbnRfdHlwZShjb25zdCBpbnRfdHlw
ZSYgYzEsY29uc3QgaW50X3R5cGUmIGMyKTsKKyAgICBzdGF0aWMgaW50X3R5cGUgICAgICAgICAg
ICAgZW9mKCk7CisgICAgc3RhdGljIGludF90eXBlICAgICAgICAgICAgIG5vdF9lb2YoY29uc3Qg
aW50X3R5cGUmIGMpOworICAgIHN0YXRpYyBzaXplX3QgICAgICAgICAgICAgICBsZW5ndGgoY29u
c3QgY2hhcl90eXBlICpzKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhcl90eXBlKiBmaW5kIChjb25z
dCBjaGFyX3R5cGUqIHMsaW50IG4sY29uc3QgY2hhcl90eXBlJiBhKTsKKyAgICBzdGF0aWMgY2hh
cl90eXBlICAqY29weShjaGFyX3R5cGUgKmRzdCxjb25zdCBjaGFyX3R5cGUgKnNyYywgc2l6ZV90
IG4pOworICAgIHN0YXRpYyBjaGFyX3R5cGUqIG1vdmUgKGNoYXJfdHlwZSogczEsIGNvbnN0IGNo
YXJfdHlwZSogczIsIHNpemVfdCBuKTsKKyAgICBzdGF0aWMgY2hhcl90eXBlKiBhc3NpZ24gKGNo
YXJfdHlwZSogcywgc2l6ZV90IG4sIGNvbnN0IGNoYXJfdHlwZSBhKTsKK307CisKK3N0cnVjdCBj
aGFyX3RyYWl0czxjaGFyPiB7CisgICAgdHlwZWRlZiBjaGFyICAgICAgICAgICAgICAgICAgICAg
IGNoYXJfdHlwZTsKKyAgICB0eXBlZGVmIGludCAgICAgICAgICAgICAgICAgICAgICAgaW50X3R5
cGU7CisgICAgCisjaWZkZWYgX19DSU5UX18KKyAgICB0eXBlZGVmIHN0cmVhbW9mZiAgICAgICAg
ICAgICAgICAgb2ZmX3R5cGU7IAorICAgIHR5cGVkZWYgc3RyZWFtcG9zICAgICAgICAgICAgICAg
ICBwb3NfdHlwZTsKKyAgICB0eXBlZGVmIG1ic3RhdGVfdCAgICAgICAgICAgICAgICAgc3RhdGVf
dHlwZTsKKyNlbmRpZiAKKyAgICBzdGF0aWMgdm9pZCBhc3NpZ24gKGNoYXJfdHlwZSYgYzEsIGNv
bnN0IGNoYXJfdHlwZSYgYzIpICAgOworICAgIHN0YXRpYyBjaGFyX3R5cGUgICAgICAgICB0b19j
aGFyX3R5cGUoY29uc3QgaW50X3R5cGUmIGMpOworICAgIHN0YXRpYyBpbnRfdHlwZSAgICAgICAg
ICB0b19pbnRfdHlwZShjb25zdCBjaGFyX3R5cGUmIGMpOworICAgIHN0YXRpYyBib29sICAgICAg
ICAgICAgICBlcShjb25zdCBjaGFyX3R5cGUmIGMxLGNvbnN0IGNoYXJfdHlwZSYgYzIpOworICAg
IHN0YXRpYyBib29sIGx0IChjb25zdCBjaGFyX3R5cGUmIGMxLCBjb25zdCBjaGFyX3R5cGUmIGMy
KSA7CisgICAgc3RhdGljIGludCBjb21wYXJlIChjb25zdCBjaGFyX3R5cGUqIHMxLCBjb25zdCBj
aGFyX3R5cGUqIHMyLCBzaXplX3Qgbik7CisgICAgc3RhdGljIGNvbnN0IGNoYXJfdHlwZSogZmlu
ZCAoY29uc3QgY2hhcl90eXBlKiBzLGludCBuLGNvbnN0IGNoYXJfdHlwZSYgYSk7CisgICAgc3Rh
dGljIGJvb2wgICAgICAgICBlcV9pbnRfdHlwZShjb25zdCBpbnRfdHlwZSYgYzEsY29uc3QgaW50
X3R5cGUmIGMyKTsKKyAgICBzdGF0aWMgaW50X3R5cGUgICAgICAgICAgZW9mKCk7CisgICAgc3Rh
dGljIGludF90eXBlICAgICAgICAgIG5vdF9lb2YoY29uc3QgaW50X3R5cGUmIGMpOworICAgIHN0
YXRpYyBzaXplX3QgICAgICAgICAgICBsZW5ndGgoY29uc3QgY2hhcl90eXBlICpzKTsKKyAgICBz
dGF0aWMgY2hhcl90eXBlICAqY29weShjaGFyX3R5cGUgKmRzdCxjb25zdCBjaGFyX3R5cGUgKnNy
Yywgc2l6ZV90IG4pOworICAgIHN0YXRpYyBjaGFyX3R5cGUgKiBtb3ZlIChjaGFyX3R5cGUqIHMx
LCBjb25zdCBjaGFyX3R5cGUqIHMyLCBzaXplX3Qgbik7CisgICAgc3RhdGljIGNoYXJfdHlwZSog
YXNzaWduIChjaGFyX3R5cGUqIHMsIHNpemVfdCBuLCBjb25zdCBjaGFyX3R5cGUgYSk7Cit9Owor
CisvL3R5cGVkZWYgYmFzaWNfaXN0cmVhbTxjaGFyPiA+ICAgICAgICAgICAgICAgICAgIGlzdHJl
YW07Cit0eXBlZGVmIGJhc2ljX2lzdHJlYW08Y2hhciwgY2hhcl90cmFpdHM8Y2hhcj4gPiAgIGlz
dHJlYW07CisvL3R5cGVkZWYgYmFzaWNfb3N0cmVhbTxjaGFyPiAgICAgICAgICAgICAgICAgICAg
IG9zdHJlYW07Cit0eXBlZGVmIGJhc2ljX29zdHJlYW08Y2hhciwgY2hhcl90cmFpdHM8Y2hhcj4g
PiAgIG9zdHJlYW07CisKK3R5cGVkZWYgYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4gPiBzdHJlYW1idWY7CisKK2V4dGVybiBpc3RyZWFtIGNpbiA7CitleHRlcm4gb3N0cmVh
bSBjb3V0IDsKK2V4dGVybiBvc3RyZWFtIGNlcnIgOworZXh0ZXJuIG9zdHJlYW0gY2xvZyA7CisK
KyNpZm5kZWYgR19fT0xESU1QTEVNRU5UQVRJT04xOTM4Citpb3NfYmFzZSYJZGVjKGlvc19iYXNl
JikgOyAKK2lvc19iYXNlJgloZXgoaW9zX2Jhc2UmKSA7Citpb3NfYmFzZSYJb2N0KGlvc19iYXNl
JikgOyAKK2lvc19iYXNlJiAgICAgICBmaXhlZChpb3NfYmFzZSYpOworaW9zX2Jhc2UmICAgICAg
IHNjaWVudGlmaWMoaW9zX2Jhc2UmKTsKK2lvc19iYXNlJiAgICAgICByaWdodChpb3NfYmFzZSYp
OworaW9zX2Jhc2UmICAgICAgIGxlZnQoaW9zX2Jhc2UmKTsKK2lvc19iYXNlJiAgICAgICBpbnRl
cm5hbChpb3NfYmFzZSYpOworaW9zX2Jhc2UmICAgICAgIG5vdXBwZXJjYXNlKGlvc19iYXNlJik7
Citpb3NfYmFzZSYgICAgICAgdXBwZXJjYXNlKGlvc19iYXNlJik7Citpb3NfYmFzZSYgICAgICAg
bm9za2lwd3MoaW9zX2Jhc2UmKTsKK2lvc19iYXNlJiAgICAgICBza2lwd3MoaW9zX2Jhc2UmKTsK
K2lvc19iYXNlJiAgICAgICBub3Nob3dwb3MoaW9zX2Jhc2UmKTsKK2lvc19iYXNlJiAgICAgICBz
aG93cG9zKGlvc19iYXNlJik7Citpb3NfYmFzZSYgICAgICAgbm9zaG93cG9pbnQoaW9zX2Jhc2Um
KTsKK2lvc19iYXNlJiAgICAgICBzaG93cG9pbnQoaW9zX2Jhc2UmKTsKK2lvc19iYXNlJiAgICAg
ICBub3Nob3diYXNlKGlvc19iYXNlJik7Citpb3NfYmFzZSYgICAgICAgc2hvd2Jhc2UoaW9zX2Jh
c2UmKTsKK2lvc19iYXNlJiAgICAgICBub2Jvb2xhbHBoYShpb3NfYmFzZSYpOworaW9zX2Jhc2Um
ICAgICAgIGJvb2xhbHBoYShpb3NfYmFzZSYpOworI2VuZGlmCisKK2lzdHJlYW0mCXdzKGlzdHJl
YW0mKSA7CisKK29zdHJlYW0mCWVuZGwob3N0cmVhbSYgaSkgOworb3N0cmVhbSYJZW5kcyhvc3Ry
ZWFtJiBpKSA7Citvc3RyZWFtJglmbHVzaChvc3RyZWFtJikgOworCitvc3RyZWFtJiBvcGVyYXRv
cjw8ICggb3N0cmVhbSYsIGNoYXIgKTsKK29zdHJlYW0mIG9wZXJhdG9yPDwgKCBvc3RyZWFtJiwg
Y2hhciogKTsKK29zdHJlYW0mIG9wZXJhdG9yPDwgKCBvc3RyZWFtJiwgdm9pZCogKTsKK29zdHJl
YW0mIG9wZXJhdG9yPDwgKCBvc3RyZWFtJiwgdW5zaWduZWQgY2hhciApOworb3N0cmVhbSYgb3Bl
cmF0b3I8PCAoIG9zdHJlYW0mLCBzaG9ydCApOworb3N0cmVhbSYgb3BlcmF0b3I8PCAoIG9zdHJl
YW0mLCB1bnNpZ25lZCBzaG9ydCApOworb3N0cmVhbSYgb3BlcmF0b3I8PCAoIG9zdHJlYW0mLCBp
bnQgKTsKK29zdHJlYW0mIG9wZXJhdG9yPDwgKCBvc3RyZWFtJiwgdW5zaWduZWQgaW50ICk7Citv
c3RyZWFtJiBvcGVyYXRvcjw8ICggb3N0cmVhbSYsIGxvbmcgKTsKK29zdHJlYW0mIG9wZXJhdG9y
PDwgKCBvc3RyZWFtJiwgdW5zaWduZWQgbG9uZyk7Citvc3RyZWFtJiBvcGVyYXRvcjw8ICggb3N0
cmVhbSYsIGZsb2F0ICk7Citvc3RyZWFtJiBvcGVyYXRvcjw8ICggb3N0cmVhbSYsIGRvdWJsZSAp
OworLy9vc3RyZWFtJiBvcGVyYXRvcjw8ICggb3N0cmVhbSYsIGxvbmcgZG91YmxlICk7Citvc3Ry
ZWFtJiBvcGVyYXRvcjw8ICggb3N0cmVhbSYsIGJvb2wgKTsKKy8vb3N0cmVhbSYgb3BlcmF0b3I8
PCAob3N0cmVhbSYsY29uc3Qgc3RyZWFtcG9zJik7CisKK2lzdHJlYW0mIG9wZXJhdG9yPj4gKCBp
c3RyZWFtJiwgY2hhciYgKTsKK2lzdHJlYW0mIG9wZXJhdG9yPj4gKCBpc3RyZWFtJiwgdW5zaWdu
ZWQgY2hhciYgKTsKK2lzdHJlYW0mIG9wZXJhdG9yPj4gKCBpc3RyZWFtJiwgc2hvcnQmICk7Citp
c3RyZWFtJiBvcGVyYXRvcj4+ICggaXN0cmVhbSYsIHVuc2lnbmVkIHNob3J0JiApOworaXN0cmVh
bSYgb3BlcmF0b3I+PiAoIGlzdHJlYW0mLCBpbnQmICk7Citpc3RyZWFtJiBvcGVyYXRvcj4+ICgg
aXN0cmVhbSYsIHVuc2lnbmVkIGludCYgKTsKK2lzdHJlYW0mIG9wZXJhdG9yPj4gKCBpc3RyZWFt
JiwgbG9uZyYgKTsKK2lzdHJlYW0mIG9wZXJhdG9yPj4gKCBpc3RyZWFtJiwgdW5zaWduZWQgbG9u
ZyYgKTsKK2lzdHJlYW0mIG9wZXJhdG9yPj4gKCBpc3RyZWFtJiwgZmxvYXQmICk7Citpc3RyZWFt
JiBvcGVyYXRvcj4+ICggaXN0cmVhbSYsIGRvdWJsZSYgKTsKKy8vaXN0cmVhbSYgb3BlcmF0b3I+
PiAoIGlzdHJlYW0mLCBsb25nIGRvdWJsZSYgKTsKK2lzdHJlYW0mIG9wZXJhdG9yPj4gKCBpc3Ry
ZWFtJiwgYm9vbCYgKTsKK2lzdHJlYW0mIG9wZXJhdG9yPj4gKCBpc3RyZWFtJiwgY2hhciogKTsK
K2lzdHJlYW0mIG9wZXJhdG9yPj4gKCBpc3RyZWFtJiwgdm9pZComICk7CisKKyNlbmRpZiAvLyBf
X0NJTlRfXworCisjZW5kaWYgLy8gR19fSU9TVFJFQU1fSApkaWZmIC1OYXVyIHJvb3QvY2ludC9s
aWIvZ2NjNHN0cm0vbGlua2RlZi5oIHJvb3QubmV3L2NpbnQvbGliL2djYzRzdHJtL2xpbmtkZWYu
aAotLS0gcm9vdC9jaW50L2xpYi9nY2M0c3RybS9saW5rZGVmLmgJMTk2OS0xMi0zMSAxOTowMDow
MC4wMDAwMDAwMDAgLTA1MDAKKysrIHJvb3QubmV3L2NpbnQvbGliL2djYzRzdHJtL2xpbmtkZWYu
aAkyMDA3LTExLTI2IDA5OjA3OjQ3LjAwMDAwMDAwMCAtMDUwMApAQCAtMCwwICsxLDE1IEBACisv
KiAtKi0gQysrIC0qLSAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodChjKSAyMDA3
ICBNYXNhaGFydSBHb3RvIChjaW50QHBjcm9vdC5jZXJuLmNoKQorICoKKyAqIEZvciB0aGUgbGlj
ZW5zaW5nIHRlcm1zIHNlZSB0aGUgZmlsZSBDT1BZSU5HCisgKgorICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K
KworI2lmZGVmIF9fTUFLRUNJTlRfXworCisjcHJhZ21hIGxpbmsgb2ZmIGNsYXNzIGFsbG9jYXRv
cjxjaGFyPjsKKyNwcmFnbWEgbGluayBvZmYgY2xhc3MgYWxsb2NhdG9yPHdjaGFyX3Q+OworI3By
YWdtYSBsaW5rIE1BQ1JPIGZ1bmN0aW9uIGNoYXJfdHJhaXRzPGNoYXI+Ojphc3NpZ24oY2hhcl90
eXBlKixzaXplX3QsY29uc3QgY2hhcl90eXBlKTsKKworI2VuZGlmCmRpZmYgLU5hdXIgcm9vdC9j
aW50L2xpYi9nY2M0c3RybS9zc3RybS5oIHJvb3QubmV3L2NpbnQvbGliL2djYzRzdHJtL3NzdHJt
LmgKLS0tIHJvb3QvY2ludC9saWIvZ2NjNHN0cm0vc3N0cm0uaAkxOTY5LTEyLTMxIDE5OjAwOjAw
LjAwMDAwMDAwMCAtMDUwMAorKysgcm9vdC5uZXcvY2ludC9saWIvZ2NjNHN0cm0vc3N0cm0uaAky
MDA3LTExLTI2IDA5OjA3OjQ3LjAwMDAwMDAwMCAtMDUwMApAQCAtMCwwICsxLDIxOSBAQAorLyog
LyUgQysrICUvICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGNpbnQgKEMvQysrIGludGVycHJldGVy
KQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgorICogaGVhZGVyIGZpbGUgc3N0cm0uaAorICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgorICogRGVzY3JpcHRpb246CisgKiAgU3R1YiBmaWxlIGZvciBtYWtpbmcgaW9zdHJlYW0g
bGlicmFyeQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0KGMpIDIwMDcgTWFzYWhhcnUg
R290bworICoKKyAqIEZvciB0aGUgbGljZW5zaW5nIHRlcm1zIHNlZSB0aGUgZmlsZSBDT1BZSU5H
CisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBHX19TU1RSRUFNX0gKKyNkZWZpbmUg
R19fU1NUUkVBTV9ICisKKyNpZm5kZWYgX19DSU5UX18KKworI2luY2x1ZGUgPHNzdHJlYW0+Cit1
c2luZyBuYW1lc3BhY2Ugc3RkOworCisjZWxzZSAvLyBfX0NJTlRfXworCisjaWYgIShHX19HTlVD
Pj0zKQorI2Vycm9yIFRoaXMgaGVhZGVyIG11c3QgYmUgcHJvY2Vzc2VkIHdpdGggYSBDaW50IGNv
bXBpbGVkIHdpdGggZ2NjMy54CisjZW5kaWYKKworI2luY2x1ZGUgPHN0cmluZz4KKy8vI2luY2x1
ZGUgPG1lbW9yeT4KK2NsYXNzIGFsbG9jYXRvcjxjaGFyPjsKK2NsYXNzIGFsbG9jYXRvcjx3Y2hh
cl90PjsKKyNpbmNsdWRlICJpb3N0cm0uaCIKKwordGVtcGxhdGU8Y2xhc3MgY2hhclQsIGNsYXNz
IHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgorY2xhc3MgYmFzaWNfc3RyaW5nYnVmIDogcHVibGlj
IGJhc2ljX3N0cmVhbWJ1ZjxjaGFyVCwgdHJhaXRzPgoreworIHB1YmxpYzoKKyAgdHlwZWRlZiBj
aGFyVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKKyAgdHlw
ZWRlZiB0cmFpdHM6OmludF90eXBlICAgICAgICAgICAgICAgaW50X3R5cGU7CisgIHR5cGVkZWYg
dHJhaXRzOjpwb3NfdHlwZSAgICAgICAgICAgICAgIHBvc190eXBlOworICB0eXBlZGVmIHRyYWl0
czo6b2ZmX3R5cGUgICAgICAgICAgICAgICBvZmZfdHlwZTsKKyAgdHlwZWRlZiB0cmFpdHMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOworICAKKyAgdHlwZWRl
ZiBiYXNpY19pb3M8Y2hhclQsIHRyYWl0cz4gICAgICAgICAgICAgICAgIGlvc190eXBlOworI2lm
ZGVmIF9fQ0lOVF9fCisjaWYgMCAmJiAhKEdfX0dOVUM+PTMpCisgIHR5cGVkZWYgc3RyaW5nICBz
dHJpbmdfdHlwZTsKKyNlbHNlCisgIHR5cGVkZWYgc3RyaW5nICBfX3N0cmluZ190eXBlOworICAv
L3R5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvciA+ICBfX3N0cmlu
Z190eXBlOworI2VuZGlmCisjZWxzZQorICB0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyVCwgdHJh
aXRzLCBBbGxvY2F0b3IgPiAgc3RyaW5nX3R5cGU7CisjZW5kaWYKKyAgCisgIGV4cGxpY2l0IGJh
c2ljX3N0cmluZ2J1Zihpb3NfYmFzZTo6b3Blbm1vZGUgd2hpY2ggPSAKKwkJCSAgIGlvc19iYXNl
OjppbiB8IGlvc19iYXNlOjpvdXQgKTsKKyAgCisgIGV4cGxpY2l0IGJhc2ljX3N0cmluZ2J1Zihj
b25zdCBfX3N0cmluZ190eXBlJiBzdHIsCisJCQkgICBpb3NfYmFzZTo6b3Blbm1vZGUgd2hpY2gg
PSAKKwkJCSAgIGlvc19iYXNlOjppbiB8IGlvc19iYXNlOjpvdXQgKTsKKyAgCisgIHZpcnR1YWwg
fmJhc2ljX3N0cmluZ2J1ZigpOworICAKKyAgX19zdHJpbmdfdHlwZSBzdHIoKSBjb25zdDsKKyAg
dm9pZCBzdHIoY29uc3QgX19zdHJpbmdfdHlwZSYgc3RyX2FyZyk7CisgIAorIHByb3RlY3RlZDoK
KworICB2aXJ0dWFsIGludF90eXBlIG92ZXJmbG93KGludF90eXBlIGMgPSB0cmFpdHM6OmVvZigp
KTsKKyAgdmlydHVhbCBpbnRfdHlwZSBwYmFja2ZhaWwoaW50X3R5cGUgYyA9IHRyYWl0czo6ZW9m
KCkpOworICB2aXJ0dWFsIGludF90eXBlIHVuZGVyZmxvdygpOworICB2aXJ0dWFsIHBvc190eXBl
IHNlZWtvZmYob2ZmX3R5cGUgb2ZmLCBpb3NfYmFzZTo6c2Vla2RpciB3YXksCisJCQkgICBpb3Nf
YmFzZTo6b3Blbm1vZGUgd2hpY2ggPQorCQkJICAgaW9zX2Jhc2U6OmluIHwgaW9zX2Jhc2U6Om91
dCk7CisKKyAgdmlydHVhbCBwb3NfdHlwZSBzZWVrcG9zKHBvc190eXBlIHNwLAorCQkJICAgaW9z
X2Jhc2U6Om9wZW5tb2RlIHdoaWNoID0KKwkJCSAgIGlvc19iYXNlOjppbiB8IGlvc19iYXNlOjpv
dXQpOworCisgIHZpcnR1YWwgYmFzaWNfc3RyZWFtYnVmPGNoYXJULHRyYWl0cz4qIHNldGJ1Zihj
aGFyX3R5cGUqIHMsIHN0cmVhbXNpemUgbik7CisgIHZpcnR1YWwgc3RyZWFtc2l6ZSB4c3B1dG4o
Y29uc3QgY2hhcl90eXBlICpzLCBzdHJlYW1zaXplIG4pOworI2lmIChHX19HTlVDPj0zKQorIHBy
aXZhdGU6CisgIGJhc2ljX3N0cmluZ2J1ZiYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX3N0cmluZ2J1
ZiYgeCk7CisjZW5kaWYKK307CisKKwordGVtcGxhdGU8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0
cywgY2xhc3MgQWxsb2NhdG9yPgorY2xhc3MgYmFzaWNfaXN0cmluZ3N0cmVhbSA6IHB1YmxpYyBi
YXNpY19pc3RyZWFtPGNoYXJULCB0cmFpdHM+Cit7CisgcHVibGljOgorICB0eXBlZGVmIGNoYXJU
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKKyAg
dHlwZWRlZiB0cmFpdHM6OmludF90eXBlICAgICAgICAgICAgICAgICAgICAgIGludF90eXBlOwor
ICB0eXBlZGVmIHRyYWl0czo6cG9zX3R5cGUgICAgICAgICAgICAgICAgICAgICAgcG9zX3R5cGU7
CisgIHR5cGVkZWYgdHJhaXRzOjpvZmZfdHlwZSAgICAgICAgICAgICAgICAgICAgICBvZmZfdHlw
ZTsKKyAgdHlwZWRlZiB0cmFpdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cmFpdHNfdHlwZTsKKyAgCisgIHR5cGVkZWYgYmFzaWNfc3RyaW5nYnVmPGNoYXJULCB0
cmFpdHMsIEFsbG9jYXRvcj4gICAgICAgc2JfdHlwZTsKKyAgdHlwZWRlZiBiYXNpY19pb3M8Y2hh
clQsIHRyYWl0cz4gICAgICAgICAgICAgICAgICAgICAgICBpb3NfdHlwZTsKKyNpZmRlZiBfX0NJ
TlRfXworI2lmIDAgJiYgIShHX19HTlVDPj0zKQorICB0eXBlZGVmIHN0cmluZyAgICAgICAgIHN0
cmluZ190eXBlOworI2Vsc2UKKyAgdHlwZWRlZiBzdHJpbmcgICAgICAgICBfX3N0cmluZ190eXBl
OworI2VuZGlmCisjZWxzZQorICB0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyVCwgdHJhaXRzLCBB
bGxvY2F0b3IgPiAgICAgICAgIHN0cmluZ190eXBlOworI2VuZGlmCisgIAorICBleHBsaWNpdCBi
YXNpY19pc3RyaW5nc3RyZWFtKGlvc19iYXNlOjpvcGVubW9kZSB3aGljaCA9IGlvc19iYXNlOjpp
bik7CisgIGV4cGxpY2l0IGJhc2ljX2lzdHJpbmdzdHJlYW0oY29uc3QgX19zdHJpbmdfdHlwZSYg
c3RyLAorCQkJICAgICAgIGlvc19iYXNlOjpvcGVubW9kZSB3aGljaCA9IGlvc19iYXNlOjppbik7
CisjaWZkZWYgX19DSU5UX18KKyAgZXhwbGljaXQgYmFzaWNfaXN0cmluZ3N0cmVhbShjb25zdCBj
aGFyICpzdHIsCisJCQkgICAgICAgaW9zX2Jhc2U6Om9wZW5tb2RlIHdoaWNoID0gaW9zX2Jhc2U6
OmluKTsKKyNlbmRpZgorCisgIHZpcnR1YWwgfmJhc2ljX2lzdHJpbmdzdHJlYW0oKTsKKyAgCisg
IGJhc2ljX3N0cmluZ2J1ZjxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+ICpyZGJ1ZigpIGNvbnN0
OworICBfX3N0cmluZ190eXBlIHN0cigpIGNvbnN0OworCisgIHZvaWQgc3RyKGNvbnN0IF9fc3Ry
aW5nX3R5cGUmIHN0cik7Cit9OworCisKK3RlbXBsYXRlPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFp
dHMsIGNsYXNzIEFsbG9jYXRvcj4KK2NsYXNzIGJhc2ljX29zdHJpbmdzdHJlYW0gOiBwdWJsaWMg
YmFzaWNfb3N0cmVhbTxjaGFyVCwgdHJhaXRzPgoreworIHB1YmxpYzoKKyAgdHlwZWRlZiBjaGFy
VCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsK
KyAgdHlwZWRlZiB0cmFpdHM6OmludF90eXBlICAgICAgICAgICAgICAgICAgICAgICAgaW50X3R5
cGU7CisgIHR5cGVkZWYgdHJhaXRzOjpwb3NfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgIHBv
c190eXBlOworICB0eXBlZGVmIHRyYWl0czo6b2ZmX3R5cGUgICAgICAgICAgICAgICAgICAgICAg
ICBvZmZfdHlwZTsKKyAgdHlwZWRlZiB0cmFpdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRyYWl0c190eXBlOworICAgICAgCisgIHR5cGVkZWYgYmFzaWNfc3Ry
aW5nYnVmPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4gICAgICAgICBzYl90eXBlOworICB0eXBl
ZGVmIGJhc2ljX2lvczxjaGFyVCwgdHJhaXRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgaW9z
X3R5cGU7CisjaWZkZWYgX19DSU5UX18KKyAgdHlwZWRlZiBzdHJpbmcgICAgICAgICAgX19zdHJp
bmdfdHlwZTsKKyNlbHNlCisgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj4gICAgICAgICAgICBzdHJpbmdfdHlwZTsKKyNlbmRpZgorCisgIGV4cGxpY2l0IGJh
c2ljX29zdHJpbmdzdHJlYW0oaW9zX2Jhc2U6Om9wZW5tb2RlIHdoaWNoID0gaW9zX2Jhc2U6Om91
dCk7CisgIGV4cGxpY2l0IGJhc2ljX29zdHJpbmdzdHJlYW0oY29uc3QgX19zdHJpbmdfdHlwZSYg
c3RyLAorCQkJICAgICAgIGlvc19iYXNlOjpvcGVubW9kZSB3aGljaCA9IGlvc19iYXNlOjpvdXQp
OworCisgIHZpcnR1YWwgfmJhc2ljX29zdHJpbmdzdHJlYW0oKTsKKyAgYmFzaWNfc3RyaW5nYnVm
PGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4gKnJkYnVmKCkgY29uc3Q7CisKKyAgX19zdHJpbmdf
dHlwZSBzdHIoKSBjb25zdDsKKyAgdm9pZCBzdHIoY29uc3QgX19zdHJpbmdfdHlwZSYgc3RyKTsK
K307CisKKwordGVtcGxhdGU8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2Nh
dG9yPgorY2xhc3MgYmFzaWNfc3RyaW5nc3RyZWFtIDogcHVibGljIGJhc2ljX2lvc3RyZWFtPGNo
YXJULCB0cmFpdHM+Cit7CisgcHVibGljOgorICB0eXBlZGVmIGNoYXJUICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOworICB0eXBlZGVmIHRyYWl0
czo6aW50X3R5cGUgICAgICAgICAgICAgICAgICAgICAgICBpbnRfdHlwZTsKKyAgdHlwZWRlZiB0
cmFpdHM6OnBvc190eXBlICAgICAgICAgICAgICAgICAgICAgICAgcG9zX3R5cGU7CisgIHR5cGVk
ZWYgdHJhaXRzOjpvZmZfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgIG9mZl90eXBlOworICB0
eXBlZGVmIHRyYWl0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJhaXRzX3R5cGU7CisgICAgICAKKyAgdHlwZWRlZiBiYXNpY19zdHJpbmdidWY8Y2hhclQsIHRy
YWl0cywgQWxsb2NhdG9yPiAgICAgICAgIHNiX3R5cGU7CisgIHR5cGVkZWYgYmFzaWNfaW9zPGNo
YXJULCB0cmFpdHM+ICAgICAgICAgICAgICAgICAgICAgICAgICBpb3NfdHlwZTsKKyNpZmRlZiBf
X0NJTlRfXworICB0eXBlZGVmIHN0cmluZyAgICAgICAgICAgIF9fc3RyaW5nX3R5cGU7CisjZWxz
ZQorICB0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+ICAgICAg
ICAgICAgc3RyaW5nX3R5cGU7CisjZW5kaWYKKworICBleHBsaWNpdCBiYXNpY19zdHJpbmdzdHJl
YW0oaW9zX2Jhc2U6Om9wZW5tb2RlIHdoaWNoID0gaW9zX2Jhc2U6Om91dCB8IAorCQkJICAgICAg
aW9zX2Jhc2U6OmluKTsKKyAgCisgIGV4cGxpY2l0IGJhc2ljX3N0cmluZ3N0cmVhbShjb25zdCBf
X3N0cmluZ190eXBlJiBzdHIsCisJCQkgICAgICBpb3NfYmFzZTo6b3Blbm1vZGUgd2hpY2ggPSAK
KwkJCSAgICAgIGlvc19iYXNlOjpvdXQgfCBpb3NfYmFzZTo6aW4pOworICAKKyAgdmlydHVhbCB+
YmFzaWNfc3RyaW5nc3RyZWFtKCk7CisgIGJhc2ljX3N0cmluZ2J1ZjxjaGFyVCwgdHJhaXRzLCBB
bGxvY2F0b3I+ICpyZGJ1ZigpIGNvbnN0OworICBfX3N0cmluZ190eXBlIHN0cigpIGNvbnN0Owor
ICB2b2lkIHN0cihjb25zdCBfX3N0cmluZ190eXBlJiBzdHIpOworfTsKKworCisvL3R5cGVkZWYg
YmFzaWNfc3RyaW5nYnVmPGNoYXI+ICAgIHN0cmluZ2J1ZjsKK3R5cGVkZWYgYmFzaWNfc3RyaW5n
YnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4gc3RyaW5nYnVmOwor
ICAKKy8vdHlwZWRlZiBiYXNpY19zdHJpbmdidWY8d2NoYXJfdD4gICAgICAgICAgIHdzdHJpbmdi
dWY7CisvL3R5cGVkZWYgYmFzaWNfc3RyaW5nYnVmPHdjaGFyX3QsY2hhcl90cmFpdHM8d2NoYXJf
dD4sYWxsb2NhdG9yPHdjaGFyX3Q+ID4gd3N0cmluZ2J1ZjsKKworLy90eXBlZGVmIGJhc2ljX2lz
dHJpbmdzdHJlYW08Y2hhcj4gICAgICBpc3RyaW5nc3RyZWFtOwordHlwZWRlZiBiYXNpY19pc3Ry
aW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4gaXN0cmlu
Z3N0cmVhbTsKKyAgCisvL3R5cGVkZWYgYmFzaWNfaXN0cmluZ3N0cmVhbTx3Y2hhcl90PiAgICAg
ICB3aXN0cmluZ3N0cmVhbTsKKy8vdHlwZWRlZiBiYXNpY19pc3RyaW5nc3RyZWFtPHdjaGFyX3Qs
Y2hhcl90cmFpdHM8d2NoYXJfdD4sYWxsb2NhdG9yPHdjaGFyX3Q+ID4gd2lzdHJpbmdzdHJlYW07
CisKKy8vdHlwZWRlZiBiYXNpY19vc3RyaW5nc3RyZWFtPGNoYXI+ICAgIG9zdHJpbmdzdHJlYW07
Cit0eXBlZGVmIGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxv
Y2F0b3I8Y2hhcj4gPiBvc3RyaW5nc3RyZWFtOworICAKKy8vdHlwZWRlZiBiYXNpY19vc3RyaW5n
c3RyZWFtPHdjaGFyX3Q+ICAgIHdvc3RyaW5nc3RyZWFtOworLy90eXBlZGVmIGJhc2ljX29zdHJp
bmdzdHJlYW08d2NoYXJfdCxjaGFyX3RyYWl0czx3Y2hhcl90PixhbGxvY2F0b3I8d2NoYXJfdD4g
PiB3b3N0cmluZ3N0cmVhbTsKKworLy90eXBlZGVmIGJhc2ljX3N0cmluZ3N0cmVhbTxjaGFyPiAg
IHN0cmluZ3N0cmVhbTsKK3R5cGVkZWYgYmFzaWNfc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4gc3RyaW5nc3RyZWFtOworCisvL3R5cGVkZWYgYmFz
aWNfc3RyaW5nc3RyZWFtPHdjaGFyX3Q+ICB3c3RyaW5nc3RyZWFtOworLy90eXBlZGVmIGJhc2lj
X3N0cmluZ3N0cmVhbTx3Y2hhcl90LCBjaGFyX3RyYWl0czx3Y2hhcl90PiwgYWxsb2NhdG9yPHdj
aGFyX3Q+ID4gd3N0cmluZ3N0cmVhbTsKKworI2VuZGlmIC8vIF9fQ0lOVF9fCisKKyNlbmRpZiAv
LyBHX19TU1RSRUFNX0gKZGlmZiAtTmF1ciByb290L2NpbnQvc3JjL2djYzRzdHJtLmN4eCByb290
Lm5ldy9jaW50L3NyYy9nY2M0c3RybS5jeHgKLS0tIHJvb3QvY2ludC9zcmMvZ2NjNHN0cm0uY3h4
CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCisrKyByb290Lm5ldy9jaW50L3Ny
Yy9nY2M0c3RybS5jeHgJMjAwNy0xMS0yNiAwOTowOToyOS4wMDAwMDAwMDAgLTA1MDAKQEAgLTAs
MCArMSw0NzA2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyogZ2NjNHN0cm0uY3h4CisqIENBVVRJT046IERPTidUIENIQU5HRSBU
SElTIEZJTEUuIFRISVMgRklMRSBJUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRAorKiAgICAgICAg
ICBGUk9NIEhFQURFUiBGSUxFUyBMSVNURUQgSU4gR19fc2V0dXBfY3BwX2Vudmlyb25tZW50WFhY
KCkuCisqICAgICAgICAgIENIQU5HRSBUSE9TRSBIRUFERVIgRklMRVMgQU5EIFJFR0VORVJBVEUg
VEhJUyBGSUxFLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovCisjaW5jbHVkZSAiZ2NjNHN0cm0uaCIKKworI2lmZGVmIEdfX01FTVRFU1QK
KyN1bmRlZiBtYWxsb2MKKyN1bmRlZiBmcmVlCisjZW5kaWYKKworZXh0ZXJuICJDIiB2b2lkIEdf
X2NwcF9yZXNldF90YWd0YWJsZUdfX3N0cmVhbSgpOworCitleHRlcm4gIkMiIHZvaWQgR19fc2V0
X2NwcF9lbnZpcm9ubWVudEdfX3N0cmVhbSgpIHsKKyAgR19fYWRkX2NvbXBpbGVkaGVhZGVyKCJp
b3N0cm0uaCIpOworICBHX19hZGRfY29tcGlsZWRoZWFkZXIoImZzdHJtLmgiKTsKKyAgR19fYWRk
X2NvbXBpbGVkaGVhZGVyKCJzc3RybS5oIik7CisgIEdfX2FkZF9jb21waWxlZGhlYWRlcigibGlu
a2RlZi5oIik7CisgIEdfX2NwcF9yZXNldF90YWd0YWJsZUdfX3N0cmVhbSgpOworfQorI2luY2x1
ZGUgPG5ldz4KK2V4dGVybiAiQyIgaW50IEdfX2NwcF9kbGxyZXZHX19zdHJlYW0oKSB7IHJldHVy
bigzMDA1MTUxNSk7IH0KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgorKiBNZW1iZXIgZnVuY3Rpb24gSW50ZXJmYWNlIE1ldGhvZAor
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
LworCisvKiBtYnN0YXRlX3QgKi8KKy8vIGF1dG9tYXRpYyBkZWZhdWx0IGNvbnN0cnVjdG9yCitz
dGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xXzBfMShHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1Qg
Y2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICBt
YnN0YXRlX3QgKnA7CisgICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOworICAgaW50IG4gPSBHX19n
ZXRhcnljb25zdHJ1Y3QoKTsKKyAgIGlmIChuKSB7CisgICAgIGlmICgoZ3ZwID09IEdfX1BWT0lE
KSB8fCAoZ3ZwID09IDApKSB7CisgICAgICAgcCA9IG5ldyBtYnN0YXRlX3Rbbl07CisgICAgIH0g
ZWxzZSB7CisgICAgICAgcCA9IG5ldygodm9pZCopIGd2cCkgbWJzdGF0ZV90W25dOworICAgICB9
CisgICB9IGVsc2UgeworICAgICBpZiAoKGd2cCA9PSBHX19QVk9JRCkgfHwgKGd2cCA9PSAwKSkg
eworICAgICAgIHAgPSBuZXcgbWJzdGF0ZV90OworICAgICB9IGVsc2UgeworICAgICAgIHAgPSBu
ZXcoKHZvaWQqKSBndnApIG1ic3RhdGVfdDsKKyAgICAgfQorICAgfQorICAgcmVzdWx0Ny0+b2Jq
LmkgPSAobG9uZykgcDsKKyAgIHJlc3VsdDctPnJlZiA9IChsb25nKSBwOworICAgcmVzdWx0Ny0+
dHlwZSA9ICd1JzsKKyAgIHJlc3VsdDctPnRhZ251bSA9IEdfX2dldF9saW5rZWRfdGFnbnVtKCZH
X19HX19zdHJlYW1MTl9tYnN0YXRlX3QpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFz
aCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworLy8gYXV0b21hdGljIGNvcHkgY29uc3RydWN0
b3IKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzFfMF8yKEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19D
T05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKKwor
eworICAgbWJzdGF0ZV90KiBwOworICAgdm9pZCogdG1wID0gKHZvaWQqKSBHX19pbnQobGlicC0+
cGFyYVswXSk7CisgICBwID0gbmV3IG1ic3RhdGVfdCgqKG1ic3RhdGVfdCopIHRtcCk7CisgICBy
ZXN1bHQ3LT5vYmouaSA9IChsb25nKSBwOworICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpIHA7Cisg
ICByZXN1bHQ3LT50eXBlID0gJ3UnOworICAgcmVzdWx0Ny0+dGFnbnVtID0gR19fZ2V0X2xpbmtl
ZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX21ic3RhdGVfdCk7CisgICByZXR1cm4oMSB8fCBmdW5j
bmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCisvLyBhdXRvbWF0aWMgZGVz
dHJ1Y3RvcgordHlwZWRlZiBtYnN0YXRlX3QgR19fVG1ic3RhdGVfdDsKK3N0YXRpYyBpbnQgR19f
R19fc3RyZWFtXzFfMF8zKEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFt
ZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgIGxvbmcgZ3ZwID0gR19f
Z2V0Z3ZwKCk7CisgICBsb25nIHNvZmYgPSBHX19nZXRzdHJ1Y3RvZmZzZXQoKTsKKyAgIGludCBu
ID0gR19fZ2V0YXJ5Y29uc3RydWN0KCk7CisgICAvLworICAgLy9oYXNfYV9kZWxldGU6IDAKKyAg
IC8vaGFzX293bl9kZWxldGUxYXJnOiAwCisgICAvL2hhc19vd25fZGVsZXRlMmFyZzogMAorICAg
Ly8KKyAgIGlmICghc29mZikgeworICAgICByZXR1cm4oMSk7CisgICB9CisgICBpZiAobikgewor
ICAgICBpZiAoZ3ZwID09IEdfX1BWT0lEKSB7CisgICAgICAgZGVsZXRlW10gKG1ic3RhdGVfdCop
IHNvZmY7CisgICAgIH0gZWxzZSB7CisgICAgICAgR19fc2V0Z3ZwKEdfX1BWT0lEKTsKKyAgICAg
ICBmb3IgKGludCBpID0gbiAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAoKG1ic3RhdGVf
dCopIChzb2ZmKyhzaXplb2YobWJzdGF0ZV90KSppKSkpLT5+R19fVG1ic3RhdGVfdCgpOworICAg
ICAgIH0KKyAgICAgICBHX19zZXRndnAoZ3ZwKTsKKyAgICAgfQorICAgfSBlbHNlIHsKKyAgICAg
aWYgKGd2cCA9PSBHX19QVk9JRCkgeworICAgICAgIGRlbGV0ZSAobWJzdGF0ZV90Kikgc29mZjsK
KyAgICAgfSBlbHNlIHsKKyAgICAgICBHX19zZXRndnAoR19fUFZPSUQpOworICAgICAgICgobWJz
dGF0ZV90KikgKHNvZmYpKS0+fkdfX1RtYnN0YXRlX3QoKTsKKyAgICAgICBHX19zZXRndnAoZ3Zw
KTsKKyAgICAgfQorICAgfQorICAgR19fc2V0bnVsbChyZXN1bHQ3KTsKKyAgIHJldHVybigxIHx8
IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKKy8vIGF1dG9tYXRp
YyBhc3NpZ25tZW50IG9wZXJhdG9yCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xXzBfNChHX192
YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSog
bGlicCwgaW50IGhhc2gpCit7CisgICBtYnN0YXRlX3QqIGRlc3QgPSAobWJzdGF0ZV90KikgR19f
Z2V0c3RydWN0b2Zmc2V0KCk7CisgICAqZGVzdCA9ICoobWJzdGF0ZV90KikgbGlicC0+cGFyYVsw
XS5yZWY7CisgICBjb25zdCBtYnN0YXRlX3QmIG9iaiA9ICpkZXN0OworICAgcmVzdWx0Ny0+cmVm
ID0gKGxvbmcpICgmb2JqKTsKKyAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAg
IHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisK
KworLyogc3RyZWFtb2ZmICovCisvLyBhdXRvbWF0aWMgZGVmYXVsdCBjb25zdHJ1Y3Rvcgorc3Rh
dGljIGludCBHX19HX19zdHJlYW1fMl8wXzEoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNo
YXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgc3Ry
ZWFtb2ZmICpwOworICAgbG9uZyBndnAgPSBHX19nZXRndnAoKTsKKyAgIGludCBuID0gR19fZ2V0
YXJ5Y29uc3RydWN0KCk7CisgICBpZiAobikgeworICAgICBpZiAoKGd2cCA9PSBHX19QVk9JRCkg
fHwgKGd2cCA9PSAwKSkgeworICAgICAgIHAgPSBuZXcgc3RyZWFtb2ZmW25dOworICAgICB9IGVs
c2UgeworICAgICAgIHAgPSBuZXcoKHZvaWQqKSBndnApIHN0cmVhbW9mZltuXTsKKyAgICAgfQor
ICAgfSBlbHNlIHsKKyAgICAgaWYgKChndnAgPT0gR19fUFZPSUQpIHx8IChndnAgPT0gMCkpIHsK
KyAgICAgICBwID0gbmV3IHN0cmVhbW9mZjsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBwID0gbmV3
KCh2b2lkKikgZ3ZwKSBzdHJlYW1vZmY7CisgICAgIH0KKyAgIH0KKyAgIHJlc3VsdDctPm9iai5p
ID0gKGxvbmcpIHA7CisgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgcDsKKyAgIHJlc3VsdDctPnR5
cGUgPSAndSc7CisgICByZXN1bHQ3LT50YWdudW0gPSBHX19nZXRfbGlua2VkX3RhZ251bSgmR19f
R19fc3RyZWFtTE5fc3RyZWFtb2ZmKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2gg
fHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKKy8vIGF1dG9tYXRpYyBjb3B5IGNvbnN0cnVjdG9y
CitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8yXzBfMihHX192YWx1ZSogcmVzdWx0NywgR19fQ09O
U1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCisKK3sK
KyAgIHN0cmVhbW9mZiogcDsKKyAgIHZvaWQqIHRtcCA9ICh2b2lkKikgR19faW50KGxpYnAtPnBh
cmFbMF0pOworICAgcCA9IG5ldyBzdHJlYW1vZmYoKihzdHJlYW1vZmYqKSB0bXApOworICAgcmVz
dWx0Ny0+b2JqLmkgPSAobG9uZykgcDsKKyAgIHJlc3VsdDctPnJlZiA9IChsb25nKSBwOworICAg
cmVzdWx0Ny0+dHlwZSA9ICd1JzsKKyAgIHJlc3VsdDctPnRhZ251bSA9IEdfX2dldF9saW5rZWRf
dGFnbnVtKCZHX19HX19zdHJlYW1MTl9zdHJlYW1vZmYpOworICAgcmV0dXJuKDEgfHwgZnVuY25h
bWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworLy8gYXV0b21hdGljIGRlc3Ry
dWN0b3IKK3R5cGVkZWYgc3RyZWFtb2ZmIEdfX1RzdHJlYW1vZmY7CitzdGF0aWMgaW50IEdfX0df
X3N0cmVhbV8yXzBfMyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUs
IHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICBsb25nIGd2cCA9IEdfX2dl
dGd2cCgpOworICAgbG9uZyBzb2ZmID0gR19fZ2V0c3RydWN0b2Zmc2V0KCk7CisgICBpbnQgbiA9
IEdfX2dldGFyeWNvbnN0cnVjdCgpOworICAgLy8KKyAgIC8vaGFzX2FfZGVsZXRlOiAwCisgICAv
L2hhc19vd25fZGVsZXRlMWFyZzogMAorICAgLy9oYXNfb3duX2RlbGV0ZTJhcmc6IDAKKyAgIC8v
CisgICBpZiAoIXNvZmYpIHsKKyAgICAgcmV0dXJuKDEpOworICAgfQorICAgaWYgKG4pIHsKKyAg
ICAgaWYgKGd2cCA9PSBHX19QVk9JRCkgeworICAgICAgIGRlbGV0ZVtdIChzdHJlYW1vZmYqKSBz
b2ZmOworICAgICB9IGVsc2UgeworICAgICAgIEdfX3NldGd2cChHX19QVk9JRCk7CisgICAgICAg
Zm9yIChpbnQgaSA9IG4gLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgKChzdHJlYW1vZmYq
KSAoc29mZisoc2l6ZW9mKHN0cmVhbW9mZikqaSkpKS0+fkdfX1RzdHJlYW1vZmYoKTsKKyAgICAg
ICB9CisgICAgICAgR19fc2V0Z3ZwKGd2cCk7CisgICAgIH0KKyAgIH0gZWxzZSB7CisgICAgIGlm
IChndnAgPT0gR19fUFZPSUQpIHsKKyAgICAgICBkZWxldGUgKHN0cmVhbW9mZiopIHNvZmY7Cisg
ICAgIH0gZWxzZSB7CisgICAgICAgR19fc2V0Z3ZwKEdfX1BWT0lEKTsKKyAgICAgICAoKHN0cmVh
bW9mZiopIChzb2ZmKSktPn5HX19Uc3RyZWFtb2ZmKCk7CisgICAgICAgR19fc2V0Z3ZwKGd2cCk7
CisgICAgIH0KKyAgIH0KKyAgIEdfX3NldG51bGwocmVzdWx0Nyk7CisgICByZXR1cm4oMSB8fCBm
dW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCisvLyBhdXRvbWF0aWMg
YXNzaWdubWVudCBvcGVyYXRvcgorc3RhdGljIGludCBHX19HX19zdHJlYW1fMl8wXzQoR19fdmFs
dWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxp
YnAsIGludCBoYXNoKQoreworICAgc3RyZWFtb2ZmKiBkZXN0ID0gKHN0cmVhbW9mZiopIEdfX2dl
dHN0cnVjdG9mZnNldCgpOworICAgY29uc3Qgc3RyZWFtb2ZmJiBvYmogPSAqZGVzdDsKKyAgIHJl
c3VsdDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAo
Jm9iaik7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGli
cCkgOworfQorCisKKy8qIGZwb3M8bWJzdGF0ZV90PiAqLworc3RhdGljIGludCBHX19HX19zdHJl
YW1fM18wXzEoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1
Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgZnBvczxtYnN0YXRlX3Q+KiBwID0g
TlVMTDsKKyAgIGxvbmcgZ3ZwID0gR19fZ2V0Z3ZwKCk7CisgICBpbnQgbiA9IEdfX2dldGFyeWNv
bnN0cnVjdCgpOworICAgaWYgKG4pIHsKKyAgICAgaWYgKChndnAgPT0gR19fUFZPSUQpIHx8IChn
dnAgPT0gMCkpIHsKKyAgICAgICBwID0gbmV3IGZwb3M8bWJzdGF0ZV90PltuXTsKKyAgICAgfSBl
bHNlIHsKKyAgICAgICBwID0gbmV3KCh2b2lkKikgZ3ZwKSBmcG9zPG1ic3RhdGVfdD5bbl07Cisg
ICAgIH0KKyAgIH0gZWxzZSB7CisgICAgIGlmICgoZ3ZwID09IEdfX1BWT0lEKSB8fCAoZ3ZwID09
IDApKSB7CisgICAgICAgcCA9IG5ldyBmcG9zPG1ic3RhdGVfdD47CisgICAgIH0gZWxzZSB7Cisg
ICAgICAgcCA9IG5ldygodm9pZCopIGd2cCkgZnBvczxtYnN0YXRlX3Q+OworICAgICB9CisgICB9
CisgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSBwOworICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcp
IHA7CisgICByZXN1bHQ3LT50eXBlID0gJ3UnOworICAgcmVzdWx0Ny0+dGFnbnVtID0gR19fZ2V0
X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Zwb3NsRW1ic3RhdGVfdGdSKTsKKyAgIHJl
dHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0
YXRpYyBpbnQgR19fR19fc3RyZWFtXzNfMF8yKEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBj
aGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgIGZw
b3M8bWJzdGF0ZV90PiogcCA9IE5VTEw7CisgICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOworICAg
Ly9tOiAxCisgICBpZiAoKGd2cCA9PSBHX19QVk9JRCkgfHwgKGd2cCA9PSAwKSkgeworICAgICBw
ID0gbmV3IGZwb3M8bWJzdGF0ZV90PigqKGZwb3M8bWJzdGF0ZV90PiopIGxpYnAtPnBhcmFbMF0u
cmVmKTsKKyAgIH0gZWxzZSB7CisgICAgIHAgPSBuZXcoKHZvaWQqKSBndnApIGZwb3M8bWJzdGF0
ZV90PigqKGZwb3M8bWJzdGF0ZV90PiopIGxpYnAtPnBhcmFbMF0ucmVmKTsKKyAgIH0KKyAgIHJl
c3VsdDctPm9iai5pID0gKGxvbmcpIHA7CisgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgcDsKKyAg
IHJlc3VsdDctPnR5cGUgPSAndSc7CisgICByZXN1bHQ3LT50YWdudW0gPSBHX19nZXRfbGlua2Vk
X3RhZ251bSgmR19fR19fc3RyZWFtTE5fZnBvc2xFbWJzdGF0ZV90Z1IpOworICAgcmV0dXJuKDEg
fHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGlu
dCBHX19HX19zdHJlYW1fM18wXzMoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1
bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgZnBvczxtYnN0
YXRlX3Q+KiBwID0gTlVMTDsKKyAgIGxvbmcgZ3ZwID0gR19fZ2V0Z3ZwKCk7CisgICAvL206IDEK
KyAgIGlmICgoZ3ZwID09IEdfX1BWT0lEKSB8fCAoZ3ZwID09IDApKSB7CisgICAgIHAgPSBuZXcg
ZnBvczxtYnN0YXRlX3Q+KChsb25nIGxvbmcpIEdfX0xvbmdsb25nKGxpYnAtPnBhcmFbMF0pKTsK
KyAgIH0gZWxzZSB7CisgICAgIHAgPSBuZXcoKHZvaWQqKSBndnApIGZwb3M8bWJzdGF0ZV90Pigo
bG9uZyBsb25nKSBHX19Mb25nbG9uZyhsaWJwLT5wYXJhWzBdKSk7CisgICB9CisgICByZXN1bHQ3
LT5vYmouaSA9IChsb25nKSBwOworICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpIHA7CisgICByZXN1
bHQ3LT50eXBlID0gJ3UnOworICAgcmVzdWx0Ny0+dGFnbnVtID0gR19fZ2V0X2xpbmtlZF90YWdu
dW0oJkdfX0dfX3N0cmVhbUxOX2Zwb3NsRW1ic3RhdGVfdGdSKTsKKyAgIHJldHVybigxIHx8IGZ1
bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19f
R19fc3RyZWFtXzNfMF80KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFt
ZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIEdfX2xldExvbmds
b25nKHJlc3VsdDcsIDExMCwgKEdfX2ludDY0KSAoKGNvbnN0IGZwb3M8bWJzdGF0ZV90PiopIEdf
X2dldHN0cnVjdG9mZnNldCgpKS0+b3BlcmF0b3Igc3RyZWFtb2ZmKCkpOworICAgcmV0dXJuKDEg
fHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGlu
dCBHX19HX19zdHJlYW1fM18wXzUoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1
bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAg
ICAgICAgY29uc3QgZnBvczxtYnN0YXRlX3Q+KiBwb2JqOworICAgICAgICAgY29uc3QgZnBvczxt
YnN0YXRlX3Q+IHhvYmogPSAoKGNvbnN0IGZwb3M8bWJzdGF0ZV90PiopIEdfX2dldHN0cnVjdG9m
ZnNldCgpKS0+b3BlcmF0b3IrKChzdHJlYW1vZmYpIEdfX0xvbmdsb25nKGxpYnAtPnBhcmFbMF0p
KTsKKyAgICAgICAgIHBvYmogPSBuZXcgZnBvczxtYnN0YXRlX3Q+KHhvYmopOworICAgICAgICAg
cmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCh2b2lkKikgcG9iaik7CisgICAgICAgICByZXN1bHQ3
LT5yZWYgPSByZXN1bHQ3LT5vYmouaTsKKyAgICAgICAgIEdfX3N0b3JlX3RlbXBvYmplY3QoKnJl
c3VsdDcpOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1
bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fM18wXzYoR19fdmFs
dWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxp
YnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgZnBvczxtYnN0YXRlX3Q+
KiBwb2JqOworICAgICAgICAgY29uc3QgZnBvczxtYnN0YXRlX3Q+IHhvYmogPSAoKGNvbnN0IGZw
b3M8bWJzdGF0ZV90PiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+b3BlcmF0b3ItKChzdHJlYW1v
ZmYpIEdfX0xvbmdsb25nKGxpYnAtPnBhcmFbMF0pKTsKKyAgICAgICAgIHBvYmogPSBuZXcgZnBv
czxtYnN0YXRlX3Q+KHhvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCh2
b2lkKikgcG9iaik7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSByZXN1bHQ3LT5vYmouaTsKKyAg
ICAgICAgIEdfX3N0b3JlX3RlbXBvYmplY3QoKnJlc3VsdDcpOworICAgICAgfQorICAgcmV0dXJu
KDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGlj
IGludCBHX19HX19zdHJlYW1fM18wXzcoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIq
IGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19f
bGV0TG9uZ2xvbmcocmVzdWx0NywgMTEwLCAoR19faW50NjQpICgoY29uc3QgZnBvczxtYnN0YXRl
X3Q+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5vcGVyYXRvci0oKihmcG9zPG1ic3RhdGVfdD4q
KSBsaWJwLT5wYXJhWzBdLnJlZikpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8
fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fM18wXzgo
R19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFy
YW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgZnBvczxtYnN0
YXRlX3Q+JiBvYmogPSAoKGZwb3M8bWJzdGF0ZV90PiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+
b3BlcmF0b3IrPSgoc3RyZWFtb2ZmKSBHX19Mb25nbG9uZyhsaWJwLT5wYXJhWzBdKSk7CisgICAg
ICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2Jq
LmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwg
aGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1f
M18wXzkoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3Qg
R19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgZnBv
czxtYnN0YXRlX3Q+JiBvYmogPSAoKGZwb3M8bWJzdGF0ZV90PiopIEdfX2dldHN0cnVjdG9mZnNl
dCgpKS0+b3BlcmF0b3ItPSgoc3RyZWFtb2ZmKSBHX19Mb25nbG9uZyhsaWJwLT5wYXJhWzBdKSk7
CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0
Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25h
bWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19z
dHJlYW1fM18wXzEwKEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwg
c3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAgICAgIGNv
bnN0IG1ic3RhdGVfdCogcG9iajsKKyAgICAgICAgIGNvbnN0IG1ic3RhdGVfdCB4b2JqID0gKChj
b25zdCBmcG9zPG1ic3RhdGVfdD4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPnN0YXRlKCk7Cisg
ICAgICAgICBwb2JqID0gbmV3IG1ic3RhdGVfdCh4b2JqKTsKKyAgICAgICAgIHJlc3VsdDctPm9i
ai5pID0gKGxvbmcpICgodm9pZCopIHBvYmopOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gcmVz
dWx0Ny0+b2JqLmk7CisgICAgICAgICBHX19zdG9yZV90ZW1wb2JqZWN0KCpyZXN1bHQ3KTsKKyAg
ICAgIH0KKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJw
KSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzNfMF8xMShHX192YWx1ZSogcmVzdWx0
NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhh
c2gpCit7CisgICAgICAoKGZwb3M8bWJzdGF0ZV90PiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+
c3RhdGUoKigobWJzdGF0ZV90KikgR19faW50KGxpYnAtPnBhcmFbMF0pKSk7CisgICAgICBHX19z
ZXRudWxsKHJlc3VsdDcpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1
bHQ3IHx8IGxpYnApIDsKK30KKworLy8gYXV0b21hdGljIGRlc3RydWN0b3IKK3R5cGVkZWYgZnBv
czxtYnN0YXRlX3Q+IEdfX1RmcG9zbEVtYnN0YXRlX3RnUjsKK3N0YXRpYyBpbnQgR19fR19fc3Ry
ZWFtXzNfMF8xMihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0
cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICBsb25nIGd2cCA9IEdfX2dldGd2
cCgpOworICAgbG9uZyBzb2ZmID0gR19fZ2V0c3RydWN0b2Zmc2V0KCk7CisgICBpbnQgbiA9IEdf
X2dldGFyeWNvbnN0cnVjdCgpOworICAgLy8KKyAgIC8vaGFzX2FfZGVsZXRlOiAwCisgICAvL2hh
c19vd25fZGVsZXRlMWFyZzogMAorICAgLy9oYXNfb3duX2RlbGV0ZTJhcmc6IDAKKyAgIC8vCisg
ICBpZiAoIXNvZmYpIHsKKyAgICAgcmV0dXJuKDEpOworICAgfQorICAgaWYgKG4pIHsKKyAgICAg
aWYgKGd2cCA9PSBHX19QVk9JRCkgeworICAgICAgIGRlbGV0ZVtdIChmcG9zPG1ic3RhdGVfdD4q
KSBzb2ZmOworICAgICB9IGVsc2UgeworICAgICAgIEdfX3NldGd2cChHX19QVk9JRCk7CisgICAg
ICAgZm9yIChpbnQgaSA9IG4gLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgKChmcG9zPG1i
c3RhdGVfdD4qKSAoc29mZisoc2l6ZW9mKGZwb3M8bWJzdGF0ZV90PikqaSkpKS0+fkdfX1RmcG9z
bEVtYnN0YXRlX3RnUigpOworICAgICAgIH0KKyAgICAgICBHX19zZXRndnAoZ3ZwKTsKKyAgICAg
fQorICAgfSBlbHNlIHsKKyAgICAgaWYgKGd2cCA9PSBHX19QVk9JRCkgeworICAgICAgIGRlbGV0
ZSAoZnBvczxtYnN0YXRlX3Q+Kikgc29mZjsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBHX19zZXRn
dnAoR19fUFZPSUQpOworICAgICAgICgoZnBvczxtYnN0YXRlX3Q+KikgKHNvZmYpKS0+fkdfX1Rm
cG9zbEVtYnN0YXRlX3RnUigpOworICAgICAgIEdfX3NldGd2cChndnApOworICAgICB9CisgICB9
CisgICBHX19zZXRudWxsKHJlc3VsdDcpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFz
aCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworLy8gYXV0b21hdGljIGFzc2lnbm1lbnQgb3Bl
cmF0b3IKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzNfMF8xMyhHX192YWx1ZSogcmVzdWx0Nywg
R19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gp
Cit7CisgICBmcG9zPG1ic3RhdGVfdD4qIGRlc3QgPSAoZnBvczxtYnN0YXRlX3Q+KikgR19fZ2V0
c3RydWN0b2Zmc2V0KCk7CisgICBjb25zdCBmcG9zPG1ic3RhdGVfdD4mIG9iaiA9ICpkZXN0Owor
ICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2JqKTsKKyAgIHJlc3VsdDctPm9iai5pID0gKGxv
bmcpICgmb2JqKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8
fCBsaWJwKSA7Cit9CisKKworLyogaW9zX2Jhc2UgKi8KK3N0YXRpYyBpbnQgR19fR19fc3RyZWFt
XzRfMF8xKEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0
IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgICgoaW9zX2Jhc2UqKSBHX19nZXRz
dHJ1Y3RvZmZzZXQoKSktPnJlZ2lzdGVyX2NhbGxiYWNrKChpb3NfYmFzZTo6ZXZlbnRfY2FsbGJh
Y2spIEdfX2ludChsaWJwLT5wYXJhWzBdKSwgKGludCkgR19faW50KGxpYnAtPnBhcmFbMV0pKTsK
KyAgICAgIEdfX3NldG51bGwocmVzdWx0Nyk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBo
YXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV80
XzBfMihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBH
X19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTA1
LCAobG9uZykgKChjb25zdCBpb3NfYmFzZSopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+ZmxhZ3Mo
KSk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkg
OworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV80XzBfMyhHX192YWx1ZSogcmVzdWx0Nywg
R19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gp
Cit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTA1LCAobG9uZykgKChpb3NfYmFzZSopIEdf
X2dldHN0cnVjdG9mZnNldCgpKS0+ZmxhZ3MoKGlvc19iYXNlOjpmbXRmbGFncykgR19faW50KGxp
YnAtPnBhcmFbMF0pKSk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3Vs
dDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV80XzBfNChHX192YWx1
ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGli
cCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTA1LCAobG9uZykgKChp
b3NfYmFzZSopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+c2V0ZigoaW9zX2Jhc2U6OmZtdGZsYWdz
KSBHX19pbnQobGlicC0+cGFyYVswXSkpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhh
c2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzRf
MF81KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdf
X3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIEdfX2xldGludChyZXN1bHQ3LCAxMDUs
IChsb25nKSAoKGlvc19iYXNlKikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5zZXRmKChpb3NfYmFz
ZTo6Zm10ZmxhZ3MpIEdfX2ludChsaWJwLT5wYXJhWzBdKSwgKGlvc19iYXNlOjpmbXRmbGFncykg
R19faW50KGxpYnAtPnBhcmFbMV0pKSk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNo
IHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV80XzBf
NihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19w
YXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICAoKGlvc19iYXNlKikgR19fZ2V0c3RydWN0
b2Zmc2V0KCkpLT51bnNldGYoKGlvc19iYXNlOjpmbXRmbGFncykgR19faW50KGxpYnAtPnBhcmFb
MF0pKTsKKyAgICAgIEdfX3NldG51bGwocmVzdWx0Nyk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFt
ZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0
cmVhbV80XzBfNyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0
cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRMb25nbG9uZyhy
ZXN1bHQ3LCAxMTAsIChHX19pbnQ2NCkgKChjb25zdCBpb3NfYmFzZSopIEdfX2dldHN0cnVjdG9m
ZnNldCgpKS0+cHJlY2lzaW9uKCkpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8
fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fNF8wXzgo
R19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFy
YW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19fbGV0TG9uZ2xvbmcocmVzdWx0NywgMTEw
LCAoR19faW50NjQpICgoaW9zX2Jhc2UqKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPnByZWNpc2lv
bigoc3RyZWFtc2l6ZSkgR19fTG9uZ2xvbmcobGlicC0+cGFyYVswXSkpKTsKKyAgIHJldHVybigx
IHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBp
bnQgR19fR19fc3RyZWFtXzRfMF85KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBm
dW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIEdfX2xl
dExvbmdsb25nKHJlc3VsdDcsIDExMCwgKEdfX2ludDY0KSAoKGNvbnN0IGlvc19iYXNlKikgR19f
Z2V0c3RydWN0b2Zmc2V0KCkpLT53aWR0aCgpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8
IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFt
XzRfMF8xMChHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVj
dCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRMb25nbG9uZyhyZXN1
bHQ3LCAxMTAsIChHX19pbnQ2NCkgKChpb3NfYmFzZSopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+
d2lkdGgoKHN0cmVhbXNpemUpIEdfX0xvbmdsb25nKGxpYnAtPnBhcmFbMF0pKSk7CisgICByZXR1
cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0
aWMgaW50IEdfX0dfX3N0cmVhbV80XzBfMTEoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNo
YXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAg
R19fbGV0aW50KHJlc3VsdDcsIDEwNSwgKGxvbmcpIGlvc19iYXNlOjp4YWxsb2MoKSk7CisgICBy
ZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitz
dGF0aWMgaW50IEdfX0dfX3N0cmVhbV80XzBfMTIoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNU
IGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAg
ICAgeworICAgICAgICAgY29uc3QgbG9uZyYgb2JqID0gKChpb3NfYmFzZSopIEdfX2dldHN0cnVj
dG9mZnNldCgpKS0+aXdvcmQoKGludCkgR19faW50KGxpYnAtPnBhcmFbMF0pKTsKKyAgICAgICAg
IHJlc3VsdDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAgICAgICBHX19sZXRpbnQocmVzdWx0
NywgcmVzdWx0Ny0+dHlwZSwgKGxvbmcpb2JqKTsKKyAgICAgIH0KKyAgIHJldHVybigxIHx8IGZ1
bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19f
R19fc3RyZWFtXzRfMF8xMyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25h
bWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAgICAg
ICB2b2lkKiYgb2JqID0gKChpb3NfYmFzZSopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+cHdvcmQo
KGludCkgR19faW50KGxpYnAtPnBhcmFbMF0pKTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChs
b25nKSAoJm9iaik7CisgICAgICAgICBHX19sZXRpbnQocmVzdWx0NywgcmVzdWx0Ny0+dHlwZSwg
KGxvbmcpb2JqKTsKKyAgICAgIH0KKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwg
cmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzRfMF8xNChH
X192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJh
bSogbGlicCwgaW50IGhhc2gpCit7CisgICBzd2l0Y2ggKGxpYnAtPnBhcmFuKSB7CisgICBjYXNl
IDE6CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTAzLCAobG9uZykgKChpb3NfYmFzZSopIEdf
X2dldHN0cnVjdG9mZnNldCgpKS0+c3luY193aXRoX3N0ZGlvKChib29sKSBHX19pbnQobGlicC0+
cGFyYVswXSkpKTsKKyAgICAgIGJyZWFrOworICAgY2FzZSAwOgorICAgICAgR19fbGV0aW50KHJl
c3VsdDcsIDEwMywgKGxvbmcpICgoaW9zX2Jhc2UqKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPnN5
bmNfd2l0aF9zdGRpbygpKTsKKyAgICAgIGJyZWFrOworICAgfQorICAgcmV0dXJuKDEgfHwgZnVu
Y25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworCisvKiBpb3NfYmFzZTo6
SW5pdCAqLworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTBfMF8xKEdfX3ZhbHVlKiByZXN1bHQ3
LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFz
aCkKK3sKKyAgIGlvc19iYXNlOjpJbml0KiBwID0gTlVMTDsKKyAgIGxvbmcgZ3ZwID0gR19fZ2V0
Z3ZwKCk7CisgICBpbnQgbiA9IEdfX2dldGFyeWNvbnN0cnVjdCgpOworICAgaWYgKG4pIHsKKyAg
ICAgcCA9IDA7CisgICAgIEdfX2dlbmVyaWNlcnJvcigiRXJyb3I6IEFycmF5IGNvbnN0cnVjdGlv
biB3aXRoIHByaXZhdGUvcHJvdGVjdGVkIGRlc3RydWN0b3IgaXMgaWxsZWdhbCIpOworICAgfSBl
bHNlIHsKKyAgICAgaWYgKChndnAgPT0gR19fUFZPSUQpIHx8IChndnAgPT0gMCkpIHsKKyAgICAg
ICBwID0gbmV3IGlvc19iYXNlOjpJbml0OworICAgICB9IGVsc2UgeworICAgICAgIHAgPSBuZXco
KHZvaWQqKSBndnApIGlvc19iYXNlOjpJbml0OworICAgICB9CisgICB9CisgICByZXN1bHQ3LT5v
YmouaSA9IChsb25nKSBwOworICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpIHA7CisgICByZXN1bHQ3
LT50eXBlID0gJ3UnOworICAgcmVzdWx0Ny0+dGFnbnVtID0gR19fZ2V0X2xpbmtlZF90YWdudW0o
JkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlY0xjTEluaXQpOworICAgcmV0dXJuKDEgfHwgZnVuY25h
bWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworLy8gYXV0b21hdGljIGNvcHkg
Y29uc3RydWN0b3IKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEwXzBfMihHX192YWx1ZSogcmVz
dWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50
IGhhc2gpCisKK3sKKyAgIGlvc19iYXNlOjpJbml0KiBwOworICAgdm9pZCogdG1wID0gKHZvaWQq
KSBHX19pbnQobGlicC0+cGFyYVswXSk7CisgICBwID0gbmV3IGlvc19iYXNlOjpJbml0KCooaW9z
X2Jhc2U6OkluaXQqKSB0bXApOworICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgcDsKKyAgIHJl
c3VsdDctPnJlZiA9IChsb25nKSBwOworICAgcmVzdWx0Ny0+dHlwZSA9ICd1JzsKKyAgIHJlc3Vs
dDctPnRhZ251bSA9IEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9pb3NfYmFz
ZWNMY0xJbml0KTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8
fCBsaWJwKSA7Cit9CisKKy8vIGF1dG9tYXRpYyBhc3NpZ25tZW50IG9wZXJhdG9yCitzdGF0aWMg
aW50IEdfX0dfX3N0cmVhbV8xMF8wXzMoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIq
IGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgaW9zX2Jh
c2U6OkluaXQqIGRlc3QgPSAoaW9zX2Jhc2U6OkluaXQqKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKTsK
KyAgIGNvbnN0IGlvc19iYXNlOjpJbml0JiBvYmogPSAqZGVzdDsKKyAgIHJlc3VsdDctPnJlZiA9
IChsb25nKSAoJm9iaik7CisgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICBy
ZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCisK
Ky8qIGNoYXJfdHJhaXRzPGNoYXI+ICovCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xMV8wXzEo
R19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFy
YW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgY2hhcl90cmFpdHM8Y2hhcj46OmFzc2lnbigq
KGNoYXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5cGUqKSBHX19DaGFycmVmKCZsaWJwLT5wYXJhWzBd
KSwgKihjaGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBlKikgR19fQ2hhcnJlZigmbGlicC0+cGFy
YVsxXSkpOworICAgICAgR19fc2V0bnVsbChyZXN1bHQ3KTsKKyAgIHJldHVybigxIHx8IGZ1bmNu
YW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19f
c3RyZWFtXzExXzBfMihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUs
IHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVz
dWx0NywgOTksIChsb25nKSBjaGFyX3RyYWl0czxjaGFyPjo6dG9fY2hhcl90eXBlKCooY2hhcl90
cmFpdHM8Y2hhcj46OmludF90eXBlKikgR19fSW50cmVmKCZsaWJwLT5wYXJhWzBdKSkpOworICAg
cmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKwor
c3RhdGljIGludCBHX19HX19zdHJlYW1fMTFfMF8zKEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05T
VCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAg
ICAgIEdfX2xldGludChyZXN1bHQ3LCAxMDUsIChsb25nKSBjaGFyX3RyYWl0czxjaGFyPjo6dG9f
aW50X3R5cGUoKihjaGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBlKikgR19fQ2hhcnJlZigmbGli
cC0+cGFyYVswXSkpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0
NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzExXzBfNChHX192YWx1
ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGli
cCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTAzLCAobG9uZykgY2hh
cl90cmFpdHM8Y2hhcj46OmVxKCooY2hhcl90cmFpdHM8Y2hhcj46OmNoYXJfdHlwZSopIEdfX0No
YXJyZWYoJmxpYnAtPnBhcmFbMF0pLCAqKGNoYXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5cGUqKSBH
X19DaGFycmVmKCZsaWJwLT5wYXJhWzFdKSkpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwg
aGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1f
MTFfMF81KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0
IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIEdfX2xldGludChyZXN1bHQ3LCAx
MDMsIChsb25nKSBjaGFyX3RyYWl0czxjaGFyPjo6bHQoKihjaGFyX3RyYWl0czxjaGFyPjo6Y2hh
cl90eXBlKikgR19fQ2hhcnJlZigmbGlicC0+cGFyYVswXSksICooY2hhcl90cmFpdHM8Y2hhcj46
OmNoYXJfdHlwZSopIEdfX0NoYXJyZWYoJmxpYnAtPnBhcmFbMV0pKSk7CisgICByZXR1cm4oMSB8
fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50
IEdfX0dfX3N0cmVhbV8xMV8wXzYoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1
bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19fbGV0
aW50KHJlc3VsdDcsIDEwNSwgKGxvbmcpIGNoYXJfdHJhaXRzPGNoYXI+Ojpjb21wYXJlKChjb25z
dCBjaGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBlKikgR19faW50KGxpYnAtPnBhcmFbMF0pLCAo
Y29uc3QgY2hhcl90cmFpdHM8Y2hhcj46OmNoYXJfdHlwZSopIEdfX2ludChsaWJwLT5wYXJhWzFd
KQorLCAoc2l6ZV90KSBHX19pbnQobGlicC0+cGFyYVsyXSkpKTsKKyAgIHJldHVybigxIHx8IGZ1
bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19f
R19fc3RyZWFtXzExXzBfNyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25h
bWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQo
cmVzdWx0NywgNjcsIChsb25nKSBjaGFyX3RyYWl0czxjaGFyPjo6ZmluZCgoY29uc3QgY2hhcl90
cmFpdHM8Y2hhcj46OmNoYXJfdHlwZSopIEdfX2ludChsaWJwLT5wYXJhWzBdKSwgKGludCkgR19f
aW50KGxpYnAtPnBhcmFbMV0pCissICooY2hhcl90cmFpdHM8Y2hhcj46OmNoYXJfdHlwZSopIEdf
X0NoYXJyZWYoJmxpYnAtPnBhcmFbMl0pKSk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBo
YXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8x
MV8wXzgoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3Qg
R19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19fbGV0aW50KHJlc3VsdDcsIDEw
MywgKGxvbmcpIGNoYXJfdHJhaXRzPGNoYXI+OjplcV9pbnRfdHlwZSgqKGNoYXJfdHJhaXRzPGNo
YXI+OjppbnRfdHlwZSopIEdfX0ludHJlZigmbGlicC0+cGFyYVswXSksICooY2hhcl90cmFpdHM8
Y2hhcj46OmludF90eXBlKikgR19fSW50cmVmKCZsaWJwLT5wYXJhWzFdKSkpOworICAgcmV0dXJu
KDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGlj
IGludCBHX19HX19zdHJlYW1fMTFfMF85KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFy
KiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIEdf
X2xldGludChyZXN1bHQ3LCAxMDUsIChsb25nKSBjaGFyX3RyYWl0czxjaGFyPjo6ZW9mKCkpOwor
ICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30K
Kworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTFfMF8xMChHX192YWx1ZSogcmVzdWx0NywgR19f
Q09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7
CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTA1LCAobG9uZykgY2hhcl90cmFpdHM8Y2hhcj46
Om5vdF9lb2YoKihjaGFyX3RyYWl0czxjaGFyPjo6aW50X3R5cGUqKSBHX19JbnRyZWYoJmxpYnAt
PnBhcmFbMF0pKSk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcg
fHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xMV8wXzExKEdfX3ZhbHVl
KiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJw
LCBpbnQgaGFzaCkKK3sKKyAgICAgIEdfX2xldGludChyZXN1bHQ3LCAxMDcsIChsb25nKSBjaGFy
X3RyYWl0czxjaGFyPjo6bGVuZ3RoKChjb25zdCBjaGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBl
KikgR19faW50KGxpYnAtPnBhcmFbMF0pKSk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBo
YXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8x
MV8wXzEyKEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0
IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIEdfX2xldGludChyZXN1bHQ3LCA2
NywgKGxvbmcpIGNoYXJfdHJhaXRzPGNoYXI+Ojpjb3B5KChjaGFyX3RyYWl0czxjaGFyPjo6Y2hh
cl90eXBlKikgR19faW50KGxpYnAtPnBhcmFbMF0pLCAoY29uc3QgY2hhcl90cmFpdHM8Y2hhcj46
OmNoYXJfdHlwZSopIEdfX2ludChsaWJwLT5wYXJhWzFdKQorLCAoc2l6ZV90KSBHX19pbnQobGli
cC0+cGFyYVsyXSkpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0
NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzExXzBfMTMoR19fdmFs
dWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxp
YnAsIGludCBoYXNoKQoreworICAgICAgR19fbGV0aW50KHJlc3VsdDcsIDY3LCAobG9uZykgY2hh
cl90cmFpdHM8Y2hhcj46Om1vdmUoKGNoYXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5cGUqKSBHX19p
bnQobGlicC0+cGFyYVswXSksIChjb25zdCBjaGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBlKikg
R19faW50KGxpYnAtPnBhcmFbMV0pCissIChzaXplX3QpIEdfX2ludChsaWJwLT5wYXJhWzJdKSkp
OworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsK
K30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTFfMF8xNChHX192YWx1ZSogcmVzdWx0Nywg
R19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gp
Cit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgNjcsIChsb25nKSBjaGFyX3RyYWl0czxjaGFy
Pjo6YXNzaWduKChjaGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBlKikgR19faW50KGxpYnAtPnBh
cmFbMF0pLCAoc2l6ZV90KSBHX19pbnQobGlicC0+cGFyYVsxXSkKKywgKGNvbnN0IGNoYXJfdHJh
aXRzPGNoYXI+OjpjaGFyX3R5cGUpIEdfX2ludChsaWJwLT5wYXJhWzJdKSkpOworICAgcmV0dXJu
KDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworLy8gYXV0
b21hdGljIGRlZmF1bHQgY29uc3RydWN0b3IKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzExXzBf
MTUoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19f
cGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgY2hhcl90cmFpdHM8Y2hhcj4gKnA7CisgICBs
b25nIGd2cCA9IEdfX2dldGd2cCgpOworICAgaW50IG4gPSBHX19nZXRhcnljb25zdHJ1Y3QoKTsK
KyAgIGlmIChuKSB7CisgICAgIGlmICgoZ3ZwID09IEdfX1BWT0lEKSB8fCAoZ3ZwID09IDApKSB7
CisgICAgICAgcCA9IG5ldyBjaGFyX3RyYWl0czxjaGFyPltuXTsKKyAgICAgfSBlbHNlIHsKKyAg
ICAgICBwID0gbmV3KCh2b2lkKikgZ3ZwKSBjaGFyX3RyYWl0czxjaGFyPltuXTsKKyAgICAgfQor
ICAgfSBlbHNlIHsKKyAgICAgaWYgKChndnAgPT0gR19fUFZPSUQpIHx8IChndnAgPT0gMCkpIHsK
KyAgICAgICBwID0gbmV3IGNoYXJfdHJhaXRzPGNoYXI+OworICAgICB9IGVsc2UgeworICAgICAg
IHAgPSBuZXcoKHZvaWQqKSBndnApIGNoYXJfdHJhaXRzPGNoYXI+OworICAgICB9CisgICB9Cisg
ICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSBwOworICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpIHA7
CisgICByZXN1bHQ3LT50eXBlID0gJ3UnOworICAgcmVzdWx0Ny0+dGFnbnVtID0gR19fZ2V0X2xp
bmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2NoYXJfdHJhaXRzbEVjaGFyZ1IpOworICAgcmV0
dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworLy8g
YXV0b21hdGljIGNvcHkgY29uc3RydWN0b3IKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzExXzBf
MTYoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19f
cGFyYW0qIGxpYnAsIGludCBoYXNoKQorCit7CisgICBjaGFyX3RyYWl0czxjaGFyPiogcDsKKyAg
IHZvaWQqIHRtcCA9ICh2b2lkKikgR19faW50KGxpYnAtPnBhcmFbMF0pOworICAgcCA9IG5ldyBj
aGFyX3RyYWl0czxjaGFyPigqKGNoYXJfdHJhaXRzPGNoYXI+KikgdG1wKTsKKyAgIHJlc3VsdDct
Pm9iai5pID0gKGxvbmcpIHA7CisgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgcDsKKyAgIHJlc3Vs
dDctPnR5cGUgPSAndSc7CisgICByZXN1bHQ3LT50YWdudW0gPSBHX19nZXRfbGlua2VkX3RhZ251
bSgmR19fR19fc3RyZWFtTE5fY2hhcl90cmFpdHNsRWNoYXJnUik7CisgICByZXR1cm4oMSB8fCBm
dW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCisvLyBhdXRvbWF0aWMg
ZGVzdHJ1Y3RvcgordHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyPiBHX19UY2hhcl90cmFpdHNsRWNo
YXJnUjsKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzExXzBfMTcoR19fdmFsdWUqIHJlc3VsdDcs
IEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNo
KQoreworICAgbG9uZyBndnAgPSBHX19nZXRndnAoKTsKKyAgIGxvbmcgc29mZiA9IEdfX2dldHN0
cnVjdG9mZnNldCgpOworICAgaW50IG4gPSBHX19nZXRhcnljb25zdHJ1Y3QoKTsKKyAgIC8vCisg
ICAvL2hhc19hX2RlbGV0ZTogMAorICAgLy9oYXNfb3duX2RlbGV0ZTFhcmc6IDAKKyAgIC8vaGFz
X293bl9kZWxldGUyYXJnOiAwCisgICAvLworICAgaWYgKCFzb2ZmKSB7CisgICAgIHJldHVybigx
KTsKKyAgIH0KKyAgIGlmIChuKSB7CisgICAgIGlmIChndnAgPT0gR19fUFZPSUQpIHsKKyAgICAg
ICBkZWxldGVbXSAoY2hhcl90cmFpdHM8Y2hhcj4qKSBzb2ZmOworICAgICB9IGVsc2UgeworICAg
ICAgIEdfX3NldGd2cChHX19QVk9JRCk7CisgICAgICAgZm9yIChpbnQgaSA9IG4gLSAxOyBpID49
IDA7IC0taSkgeworICAgICAgICAgKChjaGFyX3RyYWl0czxjaGFyPiopIChzb2ZmKyhzaXplb2Yo
Y2hhcl90cmFpdHM8Y2hhcj4pKmkpKSktPn5HX19UY2hhcl90cmFpdHNsRWNoYXJnUigpOworICAg
ICAgIH0KKyAgICAgICBHX19zZXRndnAoZ3ZwKTsKKyAgICAgfQorICAgfSBlbHNlIHsKKyAgICAg
aWYgKGd2cCA9PSBHX19QVk9JRCkgeworICAgICAgIGRlbGV0ZSAoY2hhcl90cmFpdHM8Y2hhcj4q
KSBzb2ZmOworICAgICB9IGVsc2UgeworICAgICAgIEdfX3NldGd2cChHX19QVk9JRCk7CisgICAg
ICAgKChjaGFyX3RyYWl0czxjaGFyPiopIChzb2ZmKSktPn5HX19UY2hhcl90cmFpdHNsRWNoYXJn
UigpOworICAgICAgIEdfX3NldGd2cChndnApOworICAgICB9CisgICB9CisgICBHX19zZXRudWxs
KHJlc3VsdDcpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8
IGxpYnApIDsKK30KKworLy8gYXV0b21hdGljIGFzc2lnbm1lbnQgb3BlcmF0b3IKK3N0YXRpYyBp
bnQgR19fR19fc3RyZWFtXzExXzBfMTgoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIq
IGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgY2hhcl90
cmFpdHM8Y2hhcj4qIGRlc3QgPSAoY2hhcl90cmFpdHM8Y2hhcj4qKSBHX19nZXRzdHJ1Y3RvZmZz
ZXQoKTsKKyAgIGNvbnN0IGNoYXJfdHJhaXRzPGNoYXI+JiBvYmogPSAqZGVzdDsKKyAgIHJlc3Vs
dDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9i
aik7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkg
OworfQorCisKKy8qIGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+ICovCitz
dGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xMl8wXzEoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNU
IGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAg
YmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qIHAgPSBOVUxMOworICAgbG9u
ZyBndnAgPSBHX19nZXRndnAoKTsKKyAgIC8vbTogMQorICAgaWYgKChndnAgPT0gR19fUFZPSUQp
IHx8IChndnAgPT0gMCkpIHsKKyAgICAgcCA9IG5ldyBiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4gPigoYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiop
IEdfX2ludChsaWJwLT5wYXJhWzBdKSk7CisgICB9IGVsc2UgeworICAgICBwID0gbmV3KCh2b2lk
KikgZ3ZwKSBiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPigoYmFzaWNfc3Ry
ZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2ludChsaWJwLT5wYXJhWzBdKSk7
CisgICB9CisgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSBwOworICAgcmVzdWx0Ny0+cmVmID0g
KGxvbmcpIHA7CisgICByZXN1bHQ3LT50eXBlID0gJ3UnOworICAgcmVzdWx0Ny0+dGFnbnVtID0g
R19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJj
T2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhh
c2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEy
XzBfMihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBH
X19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTA1
LCAobG9uZykgKChiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dl
dHN0cnVjdG9mZnNldCgpKS0+Z2V0KCkpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFz
aCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTJf
MF8zKEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdf
X3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAgICAgIGNvbnN0IGJhc2lj
X2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpfX2lzdHJlYW1fdHlwZSYgb2JqID0g
KChiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9m
ZnNldCgpKS0+Z2V0KChiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6Y2hh
cl90eXBlKikgR19faW50KGxpYnAtPnBhcmFbMF0pLCAoc3RyZWFtc2l6ZSkgR19fTG9uZ2xvbmco
bGlicC0+cGFyYVsxXSkKKywgKGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+
OjpjaGFyX3R5cGUpIEdfX2ludChsaWJwLT5wYXJhWzJdKSk7CisgICAgICAgICByZXN1bHQ3LT5y
ZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZv
YmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3
IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTJfMF80KEdfX3ZhbHVl
KiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJw
LCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAgICAgIGNvbnN0IGJhc2ljX2lzdHJlYW08Y2hh
cixjaGFyX3RyYWl0czxjaGFyPiA+OjpfX2lzdHJlYW1fdHlwZSYgb2JqID0gKChiYXNpY19pc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+Z2V0
KChiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6Y2hhcl90eXBlKikgR19f
aW50KGxpYnAtPnBhcmFbMF0pLCAoc3RyZWFtc2l6ZSkgR19fTG9uZ2xvbmcobGlicC0+cGFyYVsx
XSkpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2JqKTsKKyAgICAgICAgIHJl
c3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0KKyAgIHJldHVybigxIHx8IGZ1
bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19f
R19fc3RyZWFtXzEyXzBfNShHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25h
bWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAgICAg
ICBjb25zdCBiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6X19pc3RyZWFt
X3R5cGUmIG9iaiA9ICgoYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBH
X19nZXRzdHJ1Y3RvZmZzZXQoKSktPmdldCgqKGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+OjpjaGFyX3R5cGUqKSBHX19DaGFycmVmKCZsaWJwLT5wYXJhWzBdKSk7CisgICAg
ICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2Jq
LmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwg
aGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1f
MTJfMF82KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0
IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAgICAgIGNvbnN0IGJh
c2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpfX2lzdHJlYW1fdHlwZSYgb2Jq
ID0gKChiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVj
dG9mZnNldCgpKS0+Z2V0KCooYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46
Ol9fc3RyZWFtYnVmX3R5cGUqKSBsaWJwLT5wYXJhWzBdLnJlZiwgKGJhc2ljX2lzdHJlYW08Y2hh
cixjaGFyX3RyYWl0czxjaGFyPiA+OjpjaGFyX3R5cGUpIEdfX2ludChsaWJwLT5wYXJhWzFdKSk7
CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0
Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25h
bWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19z
dHJlYW1fMTJfMF83KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwg
c3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAgICAgIGNv
bnN0IGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpfX2lzdHJlYW1fdHlw
ZSYgb2JqID0gKChiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dl
dHN0cnVjdG9mZnNldCgpKS0+Z2V0KCooYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+ID46Ol9fc3RyZWFtYnVmX3R5cGUqKSBsaWJwLT5wYXJhWzBdLnJlZik7CisgICAgICAgICBy
ZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAo
bG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8
fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTJfMF84
KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3Bh
cmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAgICAgIGNvbnN0IGJhc2ljX2lz
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpfX2lzdHJlYW1fdHlwZSYgb2JqID0gKChi
YXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNl
dCgpKS0+Z2V0bGluZSgoYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OmNo
YXJfdHlwZSopIEdfX2ludChsaWJwLT5wYXJhWzBdKSwgKHN0cmVhbXNpemUpIEdfX0xvbmdsb25n
KGxpYnAtPnBhcmFbMV0pCissIChiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
Pjo6Y2hhcl90eXBlKSBHX19pbnQobGlicC0+cGFyYVsyXSkpOworICAgICAgICAgcmVzdWx0Ny0+
cmVmID0gKGxvbmcpICgmb2JqKTsKKyAgICAgICAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgm
b2JqKTsKKyAgICAgIH0KKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0
NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEyXzBfOShHX192YWx1
ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGli
cCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAgICAgICBjb25zdCBiYXNpY19pc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6X19pc3RyZWFtX3R5cGUmIG9iaiA9ICgoYmFzaWNfaXN0
cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPmdl
dGxpbmUoKGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpjaGFyX3R5cGUq
KSBHX19pbnQobGlicC0+cGFyYVswXSksIChzdHJlYW1zaXplKSBHX19Mb25nbG9uZyhsaWJwLT5w
YXJhWzFdKSk7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAg
ICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEg
fHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGlu
dCBHX19HX19zdHJlYW1fMTJfMF8xMChHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciog
ZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICB7Cisg
ICAgICAgICBjb25zdCBiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6X19p
c3RyZWFtX3R5cGUmIG9iaiA9ICgoYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+
ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPmlnbm9yZSgoc3RyZWFtc2l6ZSkgR19fTG9uZ2xv
bmcobGlicC0+cGFyYVswXSksIChiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
Pjo6aW50X3R5cGUpIEdfX2ludChsaWJwLT5wYXJhWzFdKSk7CisgICAgICAgICByZXN1bHQ3LT5y
ZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZv
YmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3
IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTJfMF8xMShHX192YWx1
ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGli
cCwgaW50IGhhc2gpCit7CisgICBzd2l0Y2ggKGxpYnAtPnBhcmFuKSB7CisgICBjYXNlIDE6Cisg
ICAgICB7CisgICAgICAgICBjb25zdCBiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPjo6X19pc3RyZWFtX3R5cGUmIG9iaiA9ICgoYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJh
aXRzPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPmlnbm9yZSgoc3RyZWFtc2l6ZSkg
R19fTG9uZ2xvbmcobGlicC0+cGFyYVswXSkpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxv
bmcpICgmb2JqKTsKKyAgICAgICAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAg
ICAgIH0KKyAgICAgIGJyZWFrOworICAgY2FzZSAwOgorICAgICAgeworICAgICAgICAgY29uc3Qg
YmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46Ol9faXN0cmVhbV90eXBlJiBv
YmogPSAoKGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3Ry
dWN0b2Zmc2V0KCkpLT5pZ25vcmUoKTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25nKSAo
Jm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICAgICB9
CisgICAgICBicmVhazsKKyAgIH0KKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwg
cmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEyXzBfMTIo
R19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFy
YW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgYmFzaWNfaXN0
cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46Ol9faXN0cmVhbV90eXBlJiBvYmogPSAoKGJh
c2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0
KCkpLT5yZWFkKChiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6Y2hhcl90
eXBlKikgR19faW50KGxpYnAtPnBhcmFbMF0pLCAoc3RyZWFtc2l6ZSkgR19fTG9uZ2xvbmcobGli
cC0+cGFyYVsxXSkpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2JqKTsKKyAg
ICAgICAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0KKyAgIHJldHVy
bigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRp
YyBpbnQgR19fR19fc3RyZWFtXzEyXzBfMTMoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNo
YXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAg
R19fbGV0TG9uZ2xvbmcocmVzdWx0NywgMTEwLCAoR19faW50NjQpICgoYmFzaWNfaXN0cmVhbTxj
aGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPnJlYWRzb21l
KChiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6Y2hhcl90eXBlKikgR19f
aW50KGxpYnAtPnBhcmFbMF0pLCAoc3RyZWFtc2l6ZSkgR19fTG9uZ2xvbmcobGlicC0+cGFyYVsx
XSkpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJw
KSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEyXzBfMTQoR19fdmFsdWUqIHJlc3Vs
dDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBo
YXNoKQoreworICAgICAgR19fbGV0aW50KHJlc3VsdDcsIDEwNSwgKGxvbmcpICgoYmFzaWNfaXN0
cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPnBl
ZWsoKSk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGli
cCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xMl8wXzE1KEdfX3ZhbHVlKiByZXN1
bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQg
aGFzaCkKK3sKKyAgICAgIEdfX2xldExvbmdsb25nKHJlc3VsdDcsIDExMCwgKEdfX2ludDY0KSAo
KGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zm
c2V0KCkpLT50ZWxsZygpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVz
dWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEyXzBfMTYoR19f
dmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0q
IGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgYmFzaWNfaXN0cmVh
bTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46Ol9faXN0cmVhbV90eXBlJiBvYmogPSAoKGJhc2lj
X2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkp
LT5zZWVrZygoYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OnBvc190eXBl
KSBHX19Mb25nbG9uZyhsaWJwLT5wYXJhWzBdKSk7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAo
bG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOwor
ICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxp
YnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTJfMF8xNyhHX192YWx1ZSogcmVz
dWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50
IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTA1LCAobG9uZykgKChiYXNpY19p
c3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+
c3luYygpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBs
aWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEyXzBfMTgoR19fdmFsdWUqIHJl
c3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGlu
dCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgYmFzaWNfaXN0cmVhbTxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID46Ol9faXN0cmVhbV90eXBlJiBvYmogPSAoKGJhc2ljX2lzdHJlYW08
Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5zZWVrZygo
YmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46Om9mZl90eXBlKSBHX19Mb25n
bG9uZyhsaWJwLT5wYXJhWzBdKSwgKGlvc19iYXNlOjpzZWVrZGlyKSBHX19pbnQobGlicC0+cGFy
YVsxXSkpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2JqKTsKKyAgICAgICAg
IHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0KKyAgIHJldHVybigxIHx8
IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQg
R19fR19fc3RyZWFtXzEyXzBfMTkoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1
bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAg
ICAgICAgY29uc3QgYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46Ol9faXN0
cmVhbV90eXBlJiBvYmogPSAoKGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+
KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5wdXRiYWNrKChiYXNpY19pc3RyZWFtPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4gPjo6Y2hhcl90eXBlKSBHX19pbnQobGlicC0+cGFyYVswXSkpOworICAg
ICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2JqKTsKKyAgICAgICAgIHJlc3VsdDctPm9i
ai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0KKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8
IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFt
XzEyXzBfMjAoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1
Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3Qg
YmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46Ol9faXN0cmVhbV90eXBlJiBv
YmogPSAoKGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3Ry
dWN0b2Zmc2V0KCkpLT51bmdldCgpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgm
b2JqKTsKKyAgICAgICAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0K
KyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9
CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEyXzBfMjEoR19fdmFsdWUqIHJlc3VsdDcsIEdf
X0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQor
eworICAgICAgR19fbGV0TG9uZ2xvbmcocmVzdWx0NywgMTEwLCAoR19faW50NjQpICgoY29uc3Qg
YmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZz
ZXQoKSktPmdjb3VudCgpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVz
dWx0NyB8fCBsaWJwKSA7Cit9CisKKy8vIGF1dG9tYXRpYyBkZXN0cnVjdG9yCit0eXBlZGVmIGJh
c2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+IEdfX1RiYXNpY19pc3RyZWFtbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUjsKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEy
XzBfMjMoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3Qg
R19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgbG9uZyBndnAgPSBHX19nZXRndnAoKTsK
KyAgIGxvbmcgc29mZiA9IEdfX2dldHN0cnVjdG9mZnNldCgpOworICAgaW50IG4gPSBHX19nZXRh
cnljb25zdHJ1Y3QoKTsKKyAgIC8vCisgICAvL2hhc19hX2RlbGV0ZTogMAorICAgLy9oYXNfb3du
X2RlbGV0ZTFhcmc6IDAKKyAgIC8vaGFzX293bl9kZWxldGUyYXJnOiAwCisgICAvLworICAgaWYg
KCFzb2ZmKSB7CisgICAgIHJldHVybigxKTsKKyAgIH0KKyAgIGlmIChuKSB7CisgICAgIGlmIChn
dnAgPT0gR19fUFZPSUQpIHsKKyAgICAgICBkZWxldGVbXSAoYmFzaWNfaXN0cmVhbTxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID4qKSBzb2ZmOworICAgICB9IGVsc2UgeworICAgICAgIEdfX3NldGd2
cChHX19QVk9JRCk7CisgICAgICAgZm9yIChpbnQgaSA9IG4gLSAxOyBpID49IDA7IC0taSkgewor
ICAgICAgICAgKChiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIChzb2Zm
KyhzaXplb2YoYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4pKmkpKSktPn5H
X19UYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IoKTsKKyAgICAg
ICB9CisgICAgICAgR19fc2V0Z3ZwKGd2cCk7CisgICAgIH0KKyAgIH0gZWxzZSB7CisgICAgIGlm
IChndnAgPT0gR19fUFZPSUQpIHsKKyAgICAgICBkZWxldGUgKGJhc2ljX2lzdHJlYW08Y2hhcixj
aGFyX3RyYWl0czxjaGFyPiA+Kikgc29mZjsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBHX19zZXRn
dnAoR19fUFZPSUQpOworICAgICAgICgoYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+ID4qKSAoc29mZikpLT5+R19fVGJhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSKCk7CisgICAgICAgR19fc2V0Z3ZwKGd2cCk7CisgICAgIH0KKyAgIH0KKyAgIEdf
X3NldG51bGwocmVzdWx0Nyk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJl
c3VsdDcgfHwgbGlicCkgOworfQorCisKKy8qIGJhc2ljX2lvczxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+ID4gKi8KK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEzXzBfMShHX192YWx1ZSogcmVzdWx0
NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhh
c2gpCit7CisgICBiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KiBwID0gTlVMTDsK
KyAgIGxvbmcgZ3ZwID0gR19fZ2V0Z3ZwKCk7CisgICAvL206IDEKKyAgIGlmICgoZ3ZwID09IEdf
X1BWT0lEKSB8fCAoZ3ZwID09IDApKSB7CisgICAgIHAgPSBuZXcgYmFzaWNfaW9zPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4gPigoYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PiopIEdfX2ludChsaWJwLT5wYXJhWzBdKSk7CisgICB9IGVsc2UgeworICAgICBwID0gbmV3KCh2
b2lkKikgZ3ZwKSBiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KChiYXNpY19zdHJl
YW1idWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19faW50KGxpYnAtPnBhcmFbMF0pKTsK
KyAgIH0KKyAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpIHA7CisgICByZXN1bHQ3LT5yZWYgPSAo
bG9uZykgcDsKKyAgIHJlc3VsdDctPnR5cGUgPSAndSc7CisgICByZXN1bHQ3LT50YWdudW0gPSBH
X19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaW9zbEVjaGFyY09jaGFy
X3RyYWl0c2xFY2hhcmdSc1BnUik7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8
IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xM18wXzIo
R19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFy
YW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19fbGV0aW50KHJlc3VsdDcsIDk5LCAobG9u
ZykgKChjb25zdCBiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3Ry
dWN0b2Zmc2V0KCkpLT5maWxsKCkpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8
fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTNfMF8z
KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3Bh
cmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIEdfX2xldGludChyZXN1bHQ3LCA5OSwgKGxv
bmcpICgoYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9m
ZnNldCgpKS0+ZmlsbCgoYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6Y2hhcl90
eXBlKSBHX19pbnQobGlicC0+cGFyYVswXSkpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8
IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFt
XzEzXzBfNChHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVj
dCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICAoKGJhc2ljX2lvczxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPmV4Y2VwdGlvbnMoKGlv
c19iYXNlOjppb3N0YXRlKSBHX19pbnQobGlicC0+cGFyYVswXSkpOworICAgICAgR19fc2V0bnVs
bChyZXN1bHQ3KTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8
fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEzXzBfNShHX192YWx1ZSog
cmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwg
aW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTA1LCAobG9uZykgKChjb25z
dCBiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0
KCkpLT5leGNlcHRpb25zKCkpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCBy
ZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTNfMF82KEdf
X3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFt
KiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgIHN3aXRjaCAobGlicC0+cGFyYW4pIHsKKyAgIGNhc2Ug
MToKKyAgICAgICgoYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0
cnVjdG9mZnNldCgpKS0+Y2xlYXIoKGlvc19iYXNlOjppb3N0YXRlKSBHX19pbnQobGlicC0+cGFy
YVswXSkpOworICAgICAgR19fc2V0bnVsbChyZXN1bHQ3KTsKKyAgICAgIGJyZWFrOworICAgY2Fz
ZSAwOgorICAgICAgKChiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0
c3RydWN0b2Zmc2V0KCkpLT5jbGVhcigpOworICAgICAgR19fc2V0bnVsbChyZXN1bHQ3KTsKKyAg
ICAgIGJyZWFrOworICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1
bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTNfMF83KEdfX3Zh
bHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBs
aWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgICgoYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+c2V0c3RhdGUoKGlvc19iYXNlOjppb3N0YXRl
KSBHX19pbnQobGlicC0+cGFyYVswXSkpOworICAgICAgR19fc2V0bnVsbChyZXN1bHQ3KTsKKyAg
IHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisK
K3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEzXzBfOChHX192YWx1ZSogcmVzdWx0NywgR19fQ09O
U1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7Cisg
ICAgICBHX19sZXRpbnQocmVzdWx0NywgMTA1LCAobG9uZykgKChjb25zdCBiYXNpY19pb3M8Y2hh
cixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5yZHN0YXRlKCkp
OworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsK
K30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTNfMF85KEdfX3ZhbHVlKiByZXN1bHQ3LCBH
X19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkK
K3sKKyAgICAgIEdfX2xldGludChyZXN1bHQ3LCA4OSwgKGxvbmcpICgoY29uc3QgYmFzaWNfaW9z
PGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+b3BlcmF0
b3Igdm9pZCooKSk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcg
fHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xM18wXzEwKEdfX3ZhbHVl
KiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJw
LCBpbnQgaGFzaCkKK3sKKyAgICAgIEdfX2xldGludChyZXN1bHQ3LCAxMDMsIChsb25nKSAoKGNv
bnN0IGJhc2ljX2lvczxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZz
ZXQoKSktPm9wZXJhdG9yISgpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwg
cmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEzXzBfMTEo
R19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFy
YW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19fbGV0aW50KHJlc3VsdDcsIDEwMywgKGxv
bmcpICgoY29uc3QgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0
cnVjdG9mZnNldCgpKS0+Z29vZCgpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2gg
fHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzEzXzBf
MTIoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19f
cGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19fbGV0aW50KHJlc3VsdDcsIDEwMywg
KGxvbmcpICgoY29uc3QgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dl
dHN0cnVjdG9mZnNldCgpKS0+ZW9mKCkpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFz
aCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTNf
MF8xMyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBH
X19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTAz
LCAobG9uZykgKChjb25zdCBiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19f
Z2V0c3RydWN0b2Zmc2V0KCkpLT5mYWlsKCkpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwg
aGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1f
MTNfMF8xNChHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVj
dCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVzdWx0Nywg
MTAzLCAobG9uZykgKChjb25zdCBiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+Kikg
R19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5iYWQoKSk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8
fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVh
bV8xM18wXzE1KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3Ry
dWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAgICAgIGNvbnN0
IGJhc2ljX2lvczxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4mIG9iaiA9ICgoYmFzaWNfaW9zPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+Y29weWZtdCgq
KGJhc2ljX2lvczxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBsaWJwLT5wYXJhWzBdLnJlZik7
CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0
Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25h
bWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19z
dHJlYW1fMTNfMF8xNihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUs
IHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVz
dWx0NywgODUsIChsb25nKSAoKGNvbnN0IGJhc2ljX2lvczxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+
ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPnRpZSgpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNu
YW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19f
c3RyZWFtXzEzXzBfMTcoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1l
LCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19fbGV0aW50KHJl
c3VsdDcsIDg1LCAobG9uZykgKChiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+Kikg
R19fZ2V0c3RydWN0b2Zmc2V0KCkpLT50aWUoKGJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+KikgR19faW50KGxpYnAtPnBhcmFbMF0pKSk7CisgICByZXR1cm4oMSB8fCBmdW5j
bmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0df
X3N0cmVhbV8xM18wXzE4KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFt
ZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIEdfX2xldGludChy
ZXN1bHQ3LCA4NSwgKGxvbmcpICgoY29uc3QgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+cmRidWYoKSk7CisgICByZXR1cm4oMSB8fCBm
dW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdf
X0dfX3N0cmVhbV8xM18wXzE5KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5j
bmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIEdfX2xldGlu
dChyZXN1bHQ3LCA4NSwgKGxvbmcpICgoYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+cmRidWYoKGJhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID4qKSBHX19pbnQobGlicC0+cGFyYVswXSkpKTsKKyAgIHJldHVybigx
IHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBp
bnQgR19fR19fc3RyZWFtXzEzXzBfMjAoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIq
IGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19f
bGV0aW50KHJlc3VsdDcsIDk5LCAobG9uZykgKChjb25zdCBiYXNpY19pb3M8Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5uYXJyb3coKGNoYXIpIEdfX2lu
dChsaWJwLT5wYXJhWzBdKSwgKGNoYXIpIEdfX2ludChsaWJwLT5wYXJhWzFdKSkpOworICAgcmV0
dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3Rh
dGljIGludCBHX19HX19zdHJlYW1fMTNfMF8yMShHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1Qg
Y2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAg
ICBHX19sZXRpbnQocmVzdWx0NywgOTksIChsb25nKSAoKGNvbnN0IGJhc2ljX2lvczxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPndpZGVuKChjaGFyKSBH
X19pbnQobGlicC0+cGFyYVswXSkpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2gg
fHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKKy8vIGF1dG9tYXRpYyBkZXN0cnVjdG9yCit0eXBl
ZGVmIGJhc2ljX2lvczxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gR19fVGJhc2ljX2lvc2xFY2hh
cmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1I7CitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xM18w
XzI2KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdf
X3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgIGxvbmcgZ3ZwID0gR19fZ2V0Z3ZwKCk7Cisg
ICBsb25nIHNvZmYgPSBHX19nZXRzdHJ1Y3RvZmZzZXQoKTsKKyAgIGludCBuID0gR19fZ2V0YXJ5
Y29uc3RydWN0KCk7CisgICAvLworICAgLy9oYXNfYV9kZWxldGU6IDAKKyAgIC8vaGFzX293bl9k
ZWxldGUxYXJnOiAwCisgICAvL2hhc19vd25fZGVsZXRlMmFyZzogMAorICAgLy8KKyAgIGlmICgh
c29mZikgeworICAgICByZXR1cm4oMSk7CisgICB9CisgICBpZiAobikgeworICAgICBpZiAoZ3Zw
ID09IEdfX1BWT0lEKSB7CisgICAgICAgZGVsZXRlW10gKGJhc2ljX2lvczxjaGFyLGNoYXJfdHJh
aXRzPGNoYXI+ID4qKSBzb2ZmOworICAgICB9IGVsc2UgeworICAgICAgIEdfX3NldGd2cChHX19Q
Vk9JRCk7CisgICAgICAgZm9yIChpbnQgaSA9IG4gLSAxOyBpID49IDA7IC0taSkgeworICAgICAg
ICAgKChiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgKHNvZmYrKHNpemVvZihi
YXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KSppKSkpLT5+R19fVGJhc2ljX2lvc2xF
Y2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IoKTsKKyAgICAgICB9CisgICAgICAgR19fc2V0
Z3ZwKGd2cCk7CisgICAgIH0KKyAgIH0gZWxzZSB7CisgICAgIGlmIChndnAgPT0gR19fUFZPSUQp
IHsKKyAgICAgICBkZWxldGUgKGJhc2ljX2lvczxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBz
b2ZmOworICAgICB9IGVsc2UgeworICAgICAgIEdfX3NldGd2cChHX19QVk9JRCk7CisgICAgICAg
KChiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgKHNvZmYpKS0+fkdfX1RiYXNp
Y19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKCk7CisgICAgICAgR19fc2V0Z3Zw
KGd2cCk7CisgICAgIH0KKyAgIH0KKyAgIEdfX3NldG51bGwocmVzdWx0Nyk7CisgICByZXR1cm4o
MSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCisKKy8qIGJh
c2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKi8KK3N0YXRpYyBpbnQgR19f
R19fc3RyZWFtXzE0XzBfMShHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25h
bWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQo
cmVzdWx0NywgODUsIChsb25nKSAoKGJhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPnB1YnNldGJ1ZigoYmFzaWNfc3RyZWFtYnVm
PGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6Y2hhcl90eXBlKikgR19faW50KGxpYnAtPnBhcmFb
MF0pLCAoc3RyZWFtc2l6ZSkgR19fTG9uZ2xvbmcobGlicC0+cGFyYVsxXSkpKTsKKyAgIHJldHVy
bigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRp
YyBpbnQgR19fR19fc3RyZWFtXzE0XzBfMihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hh
ciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICBzd2l0
Y2ggKGxpYnAtPnBhcmFuKSB7CisgICBjYXNlIDM6CisgICAgICBHX19sZXRMb25nbG9uZyhyZXN1
bHQ3LCAxMTAsIChHX19pbnQ2NCkgKChiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3RyYWl0czxj
aGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5wdWJzZWVrb2ZmKChiYXNpY19zdHJlYW1i
dWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpvZmZfdHlwZSkgR19fTG9uZ2xvbmcobGlicC0+
cGFyYVswXSksIChpb3NfYmFzZTo6c2Vla2RpcikgR19faW50KGxpYnAtPnBhcmFbMV0pCissIChp
b3NfYmFzZTo6b3Blbm1vZGUpIEdfX2ludChsaWJwLT5wYXJhWzJdKSkpOworICAgICAgYnJlYWs7
CisgICBjYXNlIDI6CisgICAgICBHX19sZXRMb25nbG9uZyhyZXN1bHQ3LCAxMTAsIChHX19pbnQ2
NCkgKChiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3Ry
dWN0b2Zmc2V0KCkpLT5wdWJzZWVrb2ZmKChiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+OjpvZmZfdHlwZSkgR19fTG9uZ2xvbmcobGlicC0+cGFyYVswXSksIChpb3NfYmFz
ZTo6c2Vla2RpcikgR19faW50KGxpYnAtPnBhcmFbMV0pKSk7CisgICAgICBicmVhazsKKyAgIH0K
KyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9
CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzE0XzBfMyhHX192YWx1ZSogcmVzdWx0NywgR19f
Q09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7
CisgICBzd2l0Y2ggKGxpYnAtPnBhcmFuKSB7CisgICBjYXNlIDI6CisgICAgICBHX19sZXRMb25n
bG9uZyhyZXN1bHQ3LCAxMTAsIChHX19pbnQ2NCkgKChiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFy
X3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5wdWJzZWVrcG9zKChiYXNp
Y19zdHJlYW1idWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+Ojpwb3NfdHlwZSkgR19fTG9uZ2xv
bmcobGlicC0+cGFyYVswXSksIChpb3NfYmFzZTo6b3Blbm1vZGUpIEdfX2ludChsaWJwLT5wYXJh
WzFdKSkpOworICAgICAgYnJlYWs7CisgICBjYXNlIDE6CisgICAgICBHX19sZXRMb25nbG9uZyhy
ZXN1bHQ3LCAxMTAsIChHX19pbnQ2NCkgKChiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5wdWJzZWVrcG9zKChiYXNpY19zdHJl
YW1idWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+Ojpwb3NfdHlwZSkgR19fTG9uZ2xvbmcobGli
cC0+cGFyYVswXSkpKTsKKyAgICAgIGJyZWFrOworICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25h
bWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19z
dHJlYW1fMTRfMF80KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwg
c3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIEdfX2xldGludChyZXN1
bHQ3LCAxMDUsIChsb25nKSAoKGJhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+
ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPnB1YnN5bmMoKSk7CisgICByZXR1cm4oMSB8fCBm
dW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdf
X0dfX3N0cmVhbV8xNF8wXzUoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNu
YW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19fbGV0TG9u
Z2xvbmcocmVzdWx0NywgMTEwLCAoR19faW50NjQpICgoYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+aW5fYXZhaWwoKSk7Cisg
ICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQor
CitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xNF8wXzYoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NP
TlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQorewor
ICAgICAgR19fbGV0aW50KHJlc3VsdDcsIDEwNSwgKGxvbmcpICgoYmFzaWNfc3RyZWFtYnVmPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+c25leHRjKCkp
OworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsK
K30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTRfMF83KEdfX3ZhbHVlKiByZXN1bHQ3LCBH
X19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkK
K3sKKyAgICAgIEdfX2xldGludChyZXN1bHQ3LCAxMDUsIChsb25nKSAoKGJhc2ljX3N0cmVhbWJ1
ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPnNidW1w
YygpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJw
KSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzE0XzBfOChHX192YWx1ZSogcmVzdWx0
NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhh
c2gpCit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTA1LCAobG9uZykgKChiYXNpY19zdHJl
YW1idWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5z
Z2V0YygpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBs
aWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzE0XzBfOShHX192YWx1ZSogcmVz
dWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50
IGhhc2gpCit7CisgICAgICBHX19sZXRMb25nbG9uZyhyZXN1bHQ3LCAxMTAsIChHX19pbnQ2NCkg
KChiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0
b2Zmc2V0KCkpLT5zZ2V0bigoYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
Pjo6Y2hhcl90eXBlKikgR19faW50KGxpYnAtPnBhcmFbMF0pLCAoc3RyZWFtc2l6ZSkgR19fTG9u
Z2xvbmcobGlicC0+cGFyYVsxXSkpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2gg
fHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzE0XzBf
MTAoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19f
cGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19fbGV0aW50KHJlc3VsdDcsIDEwNSwg
KGxvbmcpICgoYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dl
dHN0cnVjdG9mZnNldCgpKS0+c3B1dGJhY2tjKChiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPiA+OjpjaGFyX3R5cGUpIEdfX2ludChsaWJwLT5wYXJhWzBdKSkpOworICAgcmV0
dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3Rh
dGljIGludCBHX19HX19zdHJlYW1fMTRfMF8xMShHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1Qg
Y2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAg
ICBHX19sZXRpbnQocmVzdWx0NywgMTA1LCAobG9uZykgKChiYXNpY19zdHJlYW1idWY8Y2hhcixj
aGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5zdW5nZXRjKCkpOwor
ICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30K
Kworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTRfMF8xMihHX192YWx1ZSogcmVzdWx0NywgR19f
Q09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7
CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTA1LCAobG9uZykgKChiYXNpY19zdHJlYW1idWY8
Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5zcHV0Yygo
YmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6Y2hhcl90eXBlKSBHX19p
bnQobGlicC0+cGFyYVswXSkpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwg
cmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzE0XzBfMTMo
R19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFy
YW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19fbGV0TG9uZ2xvbmcocmVzdWx0NywgMTEw
LCAoR19faW50NjQpICgoYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiop
IEdfX2dldHN0cnVjdG9mZnNldCgpKS0+c3B1dG4oKGNvbnN0IGJhc2ljX3N0cmVhbWJ1ZjxjaGFy
LGNoYXJfdHJhaXRzPGNoYXI+ID46OmNoYXJfdHlwZSopIEdfX2ludChsaWJwLT5wYXJhWzBdKSwg
KHN0cmVhbXNpemUpIEdfX0xvbmdsb25nKGxpYnAtPnBhcmFbMV0pKSk7CisgICByZXR1cm4oMSB8
fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCisvLyBhdXRvbWF0
aWMgZGVzdHJ1Y3RvcgordHlwZWRlZiBiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3RyYWl0czxj
aGFyPiA+IEdfX1RiYXNpY19zdHJlYW1idWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdS
Oworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTRfMF8xNyhHX192YWx1ZSogcmVzdWx0NywgR19f
Q09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7
CisgICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOworICAgbG9uZyBzb2ZmID0gR19fZ2V0c3RydWN0
b2Zmc2V0KCk7CisgICBpbnQgbiA9IEdfX2dldGFyeWNvbnN0cnVjdCgpOworICAgLy8KKyAgIC8v
aGFzX2FfZGVsZXRlOiAwCisgICAvL2hhc19vd25fZGVsZXRlMWFyZzogMAorICAgLy9oYXNfb3du
X2RlbGV0ZTJhcmc6IDAKKyAgIC8vCisgICBpZiAoIXNvZmYpIHsKKyAgICAgcmV0dXJuKDEpOwor
ICAgfQorICAgaWYgKG4pIHsKKyAgICAgaWYgKGd2cCA9PSBHX19QVk9JRCkgeworICAgICAgIGRl
bGV0ZVtdIChiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+Kikgc29mZjsK
KyAgICAgfSBlbHNlIHsKKyAgICAgICBHX19zZXRndnAoR19fUFZPSUQpOworICAgICAgIGZvciAo
aW50IGkgPSBuIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICgoYmFzaWNfc3RyZWFtYnVm
PGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIChzb2ZmKyhzaXplb2YoYmFzaWNfc3RyZWFtYnVm
PGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPikqaSkpKS0+fkdfX1RiYXNpY19zdHJlYW1idWZsRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKCk7CisgICAgICAgfQorICAgICAgIEdfX3NldGd2
cChndnApOworICAgICB9CisgICB9IGVsc2UgeworICAgICBpZiAoZ3ZwID09IEdfX1BWT0lEKSB7
CisgICAgICAgZGVsZXRlIChiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+
Kikgc29mZjsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBHX19zZXRndnAoR19fUFZPSUQpOworICAg
ICAgICgoYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIChzb2ZmKSkt
Pn5HX19UYmFzaWNfc3RyZWFtYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUigpOwor
ICAgICAgIEdfX3NldGd2cChndnApOworICAgICB9CisgICB9CisgICBHX19zZXRudWxsKHJlc3Vs
dDcpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnAp
IDsKK30KKworCisvKiBiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqLwor
c3RhdGljIGludCBHX19HX19zdHJlYW1fMTVfMF8xKEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05T
VCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAg
IGJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KiBwID0gTlVMTDsKKyAgIGxv
bmcgZ3ZwID0gR19fZ2V0Z3ZwKCk7CisgICAvL206IDEKKyAgIGlmICgoZ3ZwID09IEdfX1BWT0lE
KSB8fCAoZ3ZwID09IDApKSB7CisgICAgIHAgPSBuZXcgYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+ID4oKGJhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4q
KSBHX19pbnQobGlicC0+cGFyYVswXSkpOworICAgfSBlbHNlIHsKKyAgICAgcCA9IG5ldygodm9p
ZCopIGd2cCkgYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4oKGJhc2ljX3N0
cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBHX19pbnQobGlicC0+cGFyYVswXSkp
OworICAgfQorICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgcDsKKyAgIHJlc3VsdDctPnJlZiA9
IChsb25nKSBwOworICAgcmVzdWx0Ny0+dHlwZSA9ICd1JzsKKyAgIHJlc3VsdDctPnRhZ251bSA9
IEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vc3RyZWFtbEVjaGFy
Y09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUik7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBo
YXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8x
NV8wXzIoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3Qg
R19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgYmFz
aWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46Ol9fb3N0cmVhbV90eXBlJiBvYmog
PSAoKGJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0
b2Zmc2V0KCkpLT5wdXQoKGJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+Ojpj
aGFyX3R5cGUpIEdfX2ludChsaWJwLT5wYXJhWzBdKSk7CisgICAgICAgICByZXN1bHQ3LT5yZWYg
PSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmop
OworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8
IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTVfMF8zKEdfX3ZhbHVlKiBy
ZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBp
bnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAgICAgIGNvbnN0IGJhc2ljX29zdHJlYW08Y2hhcixj
aGFyX3RyYWl0czxjaGFyPiA+OjpfX29zdHJlYW1fdHlwZSYgb2JqID0gKChiYXNpY19vc3RyZWFt
PGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+d3JpdGUo
KGNvbnN0IGJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpjaGFyX3R5cGUq
KSBHX19pbnQobGlicC0+cGFyYVswXSksIChzdHJlYW1zaXplKSBHX19Mb25nbG9uZyhsaWJwLT5w
YXJhWzFdKSk7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAg
ICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEg
fHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGlu
dCBHX19HX19zdHJlYW1fMTVfMF80KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBm
dW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAg
ICAgICAgIGNvbnN0IGJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpfX29z
dHJlYW1fdHlwZSYgb2JqID0gKChiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+Zmx1c2goKTsKKyAgICAgICAgIHJlc3VsdDctPnJl
ZiA9IChsb25nKSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9i
aik7CisgICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcg
fHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xNV8wXzUoR19fdmFsdWUq
IHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAs
IGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgYmFzaWNfb3N0cmVhbTxjaGFy
LGNoYXJfdHJhaXRzPGNoYXI+ID46Ol9fb3N0cmVhbV90eXBlJiBvYmogPSAoKGJhc2ljX29zdHJl
YW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5zZWVr
cCgoYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OnBvc190eXBlKSBHX19M
b25nbG9uZyhsaWJwLT5wYXJhWzBdKSk7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykg
KCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAg
fQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsK
K30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTVfMF82KEdfX3ZhbHVlKiByZXN1bHQ3LCBH
X19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkK
K3sKKyAgICAgIHsKKyAgICAgICAgIGNvbnN0IGJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+OjpfX29zdHJlYW1fdHlwZSYgb2JqID0gKChiYXNpY19vc3RyZWFtPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+c2Vla3AoKGJhc2ljX29z
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpvZmZfdHlwZSkgR19fTG9uZ2xvbmcobGli
cC0+cGFyYVswXSksIChpb3NfYmFzZTo6c2Vla2RpcikgR19faW50KGxpYnAtPnBhcmFbMV0pKTsK
KyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3
LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFt
ZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0
cmVhbV8xNV8wXzcoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBz
dHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19fbGV0TG9uZ2xvbmco
cmVzdWx0NywgMTEwLCAoR19faW50NjQpICgoYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRz
PGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPnRlbGxwKCkpOworICAgcmV0dXJuKDEg
fHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworLy8gYXV0b21h
dGljIGRlc3RydWN0b3IKK3R5cGVkZWYgYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+ID4gR19fVGJhc2ljX29zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSOwor
c3RhdGljIGludCBHX19HX19zdHJlYW1fMTVfMF85KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05T
VCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAg
IGxvbmcgZ3ZwID0gR19fZ2V0Z3ZwKCk7CisgICBsb25nIHNvZmYgPSBHX19nZXRzdHJ1Y3RvZmZz
ZXQoKTsKKyAgIGludCBuID0gR19fZ2V0YXJ5Y29uc3RydWN0KCk7CisgICAvLworICAgLy9oYXNf
YV9kZWxldGU6IDAKKyAgIC8vaGFzX293bl9kZWxldGUxYXJnOiAwCisgICAvL2hhc19vd25fZGVs
ZXRlMmFyZzogMAorICAgLy8KKyAgIGlmICghc29mZikgeworICAgICByZXR1cm4oMSk7CisgICB9
CisgICBpZiAobikgeworICAgICBpZiAoZ3ZwID09IEdfX1BWT0lEKSB7CisgICAgICAgZGVsZXRl
W10gKGJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+Kikgc29mZjsKKyAgICAg
fSBlbHNlIHsKKyAgICAgICBHX19zZXRndnAoR19fUFZPSUQpOworICAgICAgIGZvciAoaW50IGkg
PSBuIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICgoYmFzaWNfb3N0cmVhbTxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID4qKSAoc29mZisoc2l6ZW9mKGJhc2ljX29zdHJlYW08Y2hhcixjaGFy
X3RyYWl0czxjaGFyPiA+KSppKSkpLT5+R19fVGJhc2ljX29zdHJlYW1sRWNoYXJjT2NoYXJfdHJh
aXRzbEVjaGFyZ1JzUGdSKCk7CisgICAgICAgfQorICAgICAgIEdfX3NldGd2cChndnApOworICAg
ICB9CisgICB9IGVsc2UgeworICAgICBpZiAoZ3ZwID09IEdfX1BWT0lEKSB7CisgICAgICAgZGVs
ZXRlIChiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIHNvZmY7CisgICAg
IH0gZWxzZSB7CisgICAgICAgR19fc2V0Z3ZwKEdfX1BWT0lEKTsKKyAgICAgICAoKGJhc2ljX29z
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgKHNvZmYpKS0+fkdfX1RiYXNpY19vc3Ry
ZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUigpOworICAgICAgIEdfX3NldGd2cChn
dnApOworICAgICB9CisgICB9CisgICBHX19zZXRudWxsKHJlc3VsdDcpOworICAgcmV0dXJuKDEg
fHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworCisvKiBiYXNp
Y19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6c2VudHJ5ICovCitzdGF0aWMgaW50
IEdfX0dfX3N0cmVhbV8xNl8wXzEoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1
bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgYmFzaWNfb3N0
cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OnNlbnRyeSogcCA9IE5VTEw7CisgICBsb25n
IGd2cCA9IEdfX2dldGd2cCgpOworICAgLy9tOiAxCisgICBpZiAoKGd2cCA9PSBHX19QVk9JRCkg
fHwgKGd2cCA9PSAwKSkgeworICAgICBwID0gbmV3IGJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPiA+OjpzZW50cnkoKihiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPiopIGxpYnAtPnBhcmFbMF0ucmVmKTsKKyAgIH0gZWxzZSB7CisgICAgIHAgPSBuZXcoKHZv
aWQqKSBndnApIGJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpzZW50cnko
KihiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIGxpYnAtPnBhcmFbMF0u
cmVmKTsKKyAgIH0KKyAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpIHA7CisgICByZXN1bHQ3LT5y
ZWYgPSAobG9uZykgcDsKKyAgIHJlc3VsdDctPnR5cGUgPSAndSc7CisgICByZXN1bHQ3LT50YWdu
dW0gPSBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxF
Y2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JjTGNMc2VudHJ5KTsKKyAgIHJldHVybigxIHx8
IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQg
R19fR19fc3RyZWFtXzE2XzBfMihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVu
Y25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRp
bnQocmVzdWx0NywgMTAzLCAobG9uZykgKChiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4gPjo6c2VudHJ5KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5vcGVyYXRvciBib29sKCkp
OworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsK
K30KKworCisvKiBiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6c2VudHJ5
ICovCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xN18wXzEoR19fdmFsdWUqIHJlc3VsdDcsIEdf
X0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQor
eworICAgYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OnNlbnRyeSogcCA9
IE5VTEw7CisgICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOworICAgc3dpdGNoIChsaWJwLT5wYXJh
bikgeworICAgY2FzZSAyOgorICAgICAvL206IDIKKyAgICAgaWYgKChndnAgPT0gR19fUFZPSUQp
IHx8IChndnAgPT0gMCkpIHsKKyAgICAgICBwID0gbmV3IGJhc2ljX2lzdHJlYW08Y2hhcixjaGFy
X3RyYWl0czxjaGFyPiA+OjpzZW50cnkoKihiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4gPiopIGxpYnAtPnBhcmFbMF0ucmVmLCAoYm9vbCkgR19faW50KGxpYnAtPnBhcmFbMV0p
KTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBwID0gbmV3KCh2b2lkKikgZ3ZwKSBiYXNpY19pc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6c2VudHJ5KCooYmFzaWNfaXN0cmVhbTxjaGFy
LGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBsaWJwLT5wYXJhWzBdLnJlZiwgKGJvb2wpIEdfX2ludChs
aWJwLT5wYXJhWzFdKSk7CisgICAgIH0KKyAgICAgYnJlYWs7CisgICBjYXNlIDE6CisgICAgIC8v
bTogMQorICAgICBpZiAoKGd2cCA9PSBHX19QVk9JRCkgfHwgKGd2cCA9PSAwKSkgeworICAgICAg
IHAgPSBuZXcgYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OnNlbnRyeSgq
KGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgbGlicC0+cGFyYVswXS5y
ZWYpOworICAgICB9IGVsc2UgeworICAgICAgIHAgPSBuZXcoKHZvaWQqKSBndnApIGJhc2ljX2lz
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpzZW50cnkoKihiYXNpY19pc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIGxpYnAtPnBhcmFbMF0ucmVmKTsKKyAgICAgfQorICAg
ICBicmVhazsKKyAgIH0KKyAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpIHA7CisgICByZXN1bHQ3
LT5yZWYgPSAobG9uZykgcDsKKyAgIHJlc3VsdDctPnR5cGUgPSAndSc7CisgICByZXN1bHQ3LT50
YWdudW0gPSBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmVh
bWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JjTGNMc2VudHJ5KTsKKyAgIHJldHVybigx
IHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBp
bnQgR19fR19fc3RyZWFtXzE3XzBfMihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciog
ZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19s
ZXRpbnQocmVzdWx0NywgMTAzLCAobG9uZykgKChiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4gPjo6c2VudHJ5KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5vcGVyYXRvciBib29s
KCkpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnAp
IDsKK30KKworLy8gYXV0b21hdGljIGNvcHkgY29uc3RydWN0b3IKK3N0YXRpYyBpbnQgR19fR19f
c3RyZWFtXzE3XzBfMyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUs
IHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCisKK3sKKyAgIGJhc2ljX2lzdHJlYW08
Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpzZW50cnkqIHA7CisgICB2b2lkKiB0bXAgPSAodm9p
ZCopIEdfX2ludChsaWJwLT5wYXJhWzBdKTsKKyAgIHAgPSBuZXcgYmFzaWNfaXN0cmVhbTxjaGFy
LGNoYXJfdHJhaXRzPGNoYXI+ID46OnNlbnRyeSgqKGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPiA+OjpzZW50cnkqKSB0bXApOworICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykg
cDsKKyAgIHJlc3VsdDctPnJlZiA9IChsb25nKSBwOworICAgcmVzdWx0Ny0+dHlwZSA9ICd1JzsK
KyAgIHJlc3VsdDctPnRhZ251bSA9IEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1M
Tl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUmNMY0xzZW50cnkp
OworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsK
K30KKworLy8gYXV0b21hdGljIGFzc2lnbm1lbnQgb3BlcmF0b3IKK3N0YXRpYyBpbnQgR19fR19f
c3RyZWFtXzE3XzBfNChHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUs
IHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICBiYXNpY19pc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6c2VudHJ5KiBkZXN0ID0gKGJhc2ljX2lzdHJlYW08Y2hh
cixjaGFyX3RyYWl0czxjaGFyPiA+OjpzZW50cnkqKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKTsKKyAg
IGNvbnN0IGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpzZW50cnkmIG9i
aiA9ICpkZXN0OworICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2JqKTsKKyAgIHJlc3VsdDct
Pm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2gg
fHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKKworLyogYmFzaWNfZmlsZWJ1ZjxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+ID4gKi8KK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzE4XzBfMShHX192YWx1
ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGli
cCwgaW50IGhhc2gpCit7CisgICBiYXNpY19maWxlYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PiogcCA9IE5VTEw7CisgICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOworICAgaW50IG4gPSBHX19n
ZXRhcnljb25zdHJ1Y3QoKTsKKyAgIGlmIChuKSB7CisgICAgIGlmICgoZ3ZwID09IEdfX1BWT0lE
KSB8fCAoZ3ZwID09IDApKSB7CisgICAgICAgcCA9IG5ldyBiYXNpY19maWxlYnVmPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4gPltuXTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBwID0gbmV3KCh2b2lk
KikgZ3ZwKSBiYXNpY19maWxlYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPltuXTsKKyAgICAg
fQorICAgfSBlbHNlIHsKKyAgICAgaWYgKChndnAgPT0gR19fUFZPSUQpIHx8IChndnAgPT0gMCkp
IHsKKyAgICAgICBwID0gbmV3IGJhc2ljX2ZpbGVidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+
OworICAgICB9IGVsc2UgeworICAgICAgIHAgPSBuZXcoKHZvaWQqKSBndnApIGJhc2ljX2ZpbGVi
dWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OworICAgICB9CisgICB9CisgICByZXN1bHQ3LT5v
YmouaSA9IChsb25nKSBwOworICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpIHA7CisgICByZXN1bHQ3
LT50eXBlID0gJ3UnOworICAgcmVzdWx0Ny0+dGFnbnVtID0gR19fZ2V0X2xpbmtlZF90YWdudW0o
JkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2ZpbGVidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1Jz
UGdSKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJw
KSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzE4XzBfMihHX192YWx1ZSogcmVzdWx0
NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhh
c2gpCit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTAzLCAobG9uZykgKChjb25zdCBiYXNp
Y19maWxlYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgp
KS0+aXNfb3BlbigpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0
NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzE4XzBfMyhHX192YWx1
ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGli
cCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgODUsIChsb25nKSAoKGJh
c2ljX2ZpbGVidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0
KCkpLT5vcGVuKChjb25zdCBjaGFyKikgR19faW50KGxpYnAtPnBhcmFbMF0pLCAoaW9zX2Jhc2U6
Om9wZW5tb2RlKSBHX19pbnQobGlicC0+cGFyYVsxXSkpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNu
YW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19f
c3RyZWFtXzE4XzBfNChHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUs
IHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVz
dWx0NywgODUsIChsb25nKSAoKGJhc2ljX2ZpbGVidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+
KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5jbG9zZSgpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNu
YW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKKy8vIGF1dG9tYXRpYyBkZXN0
cnVjdG9yCit0eXBlZGVmIGJhc2ljX2ZpbGVidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+IEdf
X1RiYXNpY19maWxlYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUjsKK3N0YXRpYyBp
bnQgR19fR19fc3RyZWFtXzE4XzBfMTUoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIq
IGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgbG9uZyBn
dnAgPSBHX19nZXRndnAoKTsKKyAgIGxvbmcgc29mZiA9IEdfX2dldHN0cnVjdG9mZnNldCgpOwor
ICAgaW50IG4gPSBHX19nZXRhcnljb25zdHJ1Y3QoKTsKKyAgIC8vCisgICAvL2hhc19hX2RlbGV0
ZTogMAorICAgLy9oYXNfb3duX2RlbGV0ZTFhcmc6IDAKKyAgIC8vaGFzX293bl9kZWxldGUyYXJn
OiAwCisgICAvLworICAgaWYgKCFzb2ZmKSB7CisgICAgIHJldHVybigxKTsKKyAgIH0KKyAgIGlm
IChuKSB7CisgICAgIGlmIChndnAgPT0gR19fUFZPSUQpIHsKKyAgICAgICBkZWxldGVbXSAoYmFz
aWNfZmlsZWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBzb2ZmOworICAgICB9IGVsc2Ug
eworICAgICAgIEdfX3NldGd2cChHX19QVk9JRCk7CisgICAgICAgZm9yIChpbnQgaSA9IG4gLSAx
OyBpID49IDA7IC0taSkgeworICAgICAgICAgKChiYXNpY19maWxlYnVmPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4gPiopIChzb2ZmKyhzaXplb2YoYmFzaWNfZmlsZWJ1ZjxjaGFyLGNoYXJfdHJhaXRz
PGNoYXI+ID4pKmkpKSktPn5HX19UYmFzaWNfZmlsZWJ1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNo
YXJnUnNQZ1IoKTsKKyAgICAgICB9CisgICAgICAgR19fc2V0Z3ZwKGd2cCk7CisgICAgIH0KKyAg
IH0gZWxzZSB7CisgICAgIGlmIChndnAgPT0gR19fUFZPSUQpIHsKKyAgICAgICBkZWxldGUgKGJh
c2ljX2ZpbGVidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+Kikgc29mZjsKKyAgICAgfSBlbHNl
IHsKKyAgICAgICBHX19zZXRndnAoR19fUFZPSUQpOworICAgICAgICgoYmFzaWNfZmlsZWJ1Zjxj
aGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSAoc29mZikpLT5+R19fVGJhc2ljX2ZpbGVidWZsRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKCk7CisgICAgICAgR19fc2V0Z3ZwKGd2cCk7Cisg
ICAgIH0KKyAgIH0KKyAgIEdfX3NldG51bGwocmVzdWx0Nyk7CisgICByZXR1cm4oMSB8fCBmdW5j
bmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCisKKy8qIGJhc2ljX2lmc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqLworc3RhdGljIGludCBHX19HX19zdHJlYW1f
MTlfMF8xKEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0
IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgIGJhc2ljX2lmc3RyZWFtPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4gPiogcCA9IE5VTEw7CisgICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOwor
ICAgaW50IG4gPSBHX19nZXRhcnljb25zdHJ1Y3QoKTsKKyAgIGlmIChuKSB7CisgICAgIGlmICgo
Z3ZwID09IEdfX1BWT0lEKSB8fCAoZ3ZwID09IDApKSB7CisgICAgICAgcCA9IG5ldyBiYXNpY19p
ZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID5bbl07CisgICAgIH0gZWxzZSB7CisgICAg
ICAgcCA9IG5ldygodm9pZCopIGd2cCkgYmFzaWNfaWZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxj
aGFyPiA+W25dOworICAgICB9CisgICB9IGVsc2UgeworICAgICBpZiAoKGd2cCA9PSBHX19QVk9J
RCkgfHwgKGd2cCA9PSAwKSkgeworICAgICAgIHAgPSBuZXcgYmFzaWNfaWZzdHJlYW08Y2hhcixj
aGFyX3RyYWl0czxjaGFyPiA+OworICAgICB9IGVsc2UgeworICAgICAgIHAgPSBuZXcoKHZvaWQq
KSBndnApIGJhc2ljX2lmc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjsKKyAgICAgfQor
ICAgfQorICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgcDsKKyAgIHJlc3VsdDctPnJlZiA9IChs
b25nKSBwOworICAgcmVzdWx0Ny0+dHlwZSA9ICd1JzsKKyAgIHJlc3VsdDctPnRhZ251bSA9IEdf
X2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pZnN0cmVhbWxFY2hhcmNP
Y2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFz
aCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTlf
MF8yKEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdf
X3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgIGJhc2ljX2lmc3RyZWFtPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4gPiogcCA9IE5VTEw7CisgICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOworICAg
c3dpdGNoIChsaWJwLT5wYXJhbikgeworICAgY2FzZSAyOgorICAgICAvL206IDIKKyAgICAgaWYg
KChndnAgPT0gR19fUFZPSUQpIHx8IChndnAgPT0gMCkpIHsKKyAgICAgICBwID0gbmV3IGJhc2lj
X2lmc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPigoY29uc3QgY2hhciopIEdfX2ludChs
aWJwLT5wYXJhWzBdKSwgKGlvc19iYXNlOjpvcGVubW9kZSkgR19faW50KGxpYnAtPnBhcmFbMV0p
KTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBwID0gbmV3KCh2b2lkKikgZ3ZwKSBiYXNpY19pZnN0
cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4oKGNvbnN0IGNoYXIqKSBHX19pbnQobGlicC0+
cGFyYVswXSksIChpb3NfYmFzZTo6b3Blbm1vZGUpIEdfX2ludChsaWJwLT5wYXJhWzFdKSk7Cisg
ICAgIH0KKyAgICAgYnJlYWs7CisgICBjYXNlIDE6CisgICAgIC8vbTogMQorICAgICBpZiAoKGd2
cCA9PSBHX19QVk9JRCkgfHwgKGd2cCA9PSAwKSkgeworICAgICAgIHAgPSBuZXcgYmFzaWNfaWZz
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KChjb25zdCBjaGFyKikgR19faW50KGxpYnAt
PnBhcmFbMF0pKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBwID0gbmV3KCh2b2lkKikgZ3ZwKSBi
YXNpY19pZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4oKGNvbnN0IGNoYXIqKSBHX19p
bnQobGlicC0+cGFyYVswXSkpOworICAgICB9CisgICAgIGJyZWFrOworICAgfQorICAgcmVzdWx0
Ny0+b2JqLmkgPSAobG9uZykgcDsKKyAgIHJlc3VsdDctPnJlZiA9IChsb25nKSBwOworICAgcmVz
dWx0Ny0+dHlwZSA9ICd1JzsKKyAgIHJlc3VsdDctPnRhZ251bSA9IEdfX2dldF9saW5rZWRfdGFn
bnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNo
YXJnUnNQZ1IpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8
IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMTlfMF8zKEdfX3ZhbHVlKiBy
ZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBp
bnQgaGFzaCkKK3sKKyAgICAgIEdfX2xldGludChyZXN1bHQ3LCA4NSwgKGxvbmcpICgoY29uc3Qg
YmFzaWNfaWZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zm
c2V0KCkpLT5yZGJ1ZigpKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVz
dWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzE5XzBfNChHX192
YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSog
bGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgMTAzLCAobG9uZykg
KChiYXNpY19pZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3Rv
ZmZzZXQoKSktPmlzX29wZW4oKSk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8
IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xOV8wXzUo
R19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFy
YW0qIGxpYnAsIGludCBoYXNoKQoreworICAgc3dpdGNoIChsaWJwLT5wYXJhbikgeworICAgY2Fz
ZSAyOgorICAgICAgKChiYXNpY19pZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBH
X19nZXRzdHJ1Y3RvZmZzZXQoKSktPm9wZW4oKGNvbnN0IGNoYXIqKSBHX19pbnQobGlicC0+cGFy
YVswXSksIChpb3NfYmFzZTo6b3Blbm1vZGUpIEdfX2ludChsaWJwLT5wYXJhWzFdKSk7CisgICAg
ICBHX19zZXRudWxsKHJlc3VsdDcpOworICAgICAgYnJlYWs7CisgICBjYXNlIDE6CisgICAgICAo
KGJhc2ljX2lmc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9m
ZnNldCgpKS0+b3BlbigoY29uc3QgY2hhciopIEdfX2ludChsaWJwLT5wYXJhWzBdKSk7CisgICAg
ICBHX19zZXRudWxsKHJlc3VsdDcpOworICAgICAgYnJlYWs7CisgICB9CisgICByZXR1cm4oMSB8
fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50
IEdfX0dfX3N0cmVhbV8xOV8wXzYoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1
bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgKChiYXNp
Y19pZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQo
KSktPmNsb3NlKCk7CisgICAgICBHX19zZXRudWxsKHJlc3VsdDcpOworICAgcmV0dXJuKDEgfHwg
ZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworLy8gYXV0b21hdGlj
IGRlc3RydWN0b3IKK3R5cGVkZWYgYmFzaWNfaWZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFy
PiA+IEdfX1RiYXNpY19pZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1I7Citz
dGF0aWMgaW50IEdfX0dfX3N0cmVhbV8xOV8wXzcoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNU
IGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAg
bG9uZyBndnAgPSBHX19nZXRndnAoKTsKKyAgIGxvbmcgc29mZiA9IEdfX2dldHN0cnVjdG9mZnNl
dCgpOworICAgaW50IG4gPSBHX19nZXRhcnljb25zdHJ1Y3QoKTsKKyAgIC8vCisgICAvL2hhc19h
X2RlbGV0ZTogMAorICAgLy9oYXNfb3duX2RlbGV0ZTFhcmc6IDAKKyAgIC8vaGFzX293bl9kZWxl
dGUyYXJnOiAwCisgICAvLworICAgaWYgKCFzb2ZmKSB7CisgICAgIHJldHVybigxKTsKKyAgIH0K
KyAgIGlmIChuKSB7CisgICAgIGlmIChndnAgPT0gR19fUFZPSUQpIHsKKyAgICAgICBkZWxldGVb
XSAoYmFzaWNfaWZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+Kikgc29mZjsKKyAgICAg
fSBlbHNlIHsKKyAgICAgICBHX19zZXRndnAoR19fUFZPSUQpOworICAgICAgIGZvciAoaW50IGkg
PSBuIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICgoYmFzaWNfaWZzdHJlYW08Y2hhcixj
aGFyX3RyYWl0czxjaGFyPiA+KikgKHNvZmYrKHNpemVvZihiYXNpY19pZnN0cmVhbTxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID4pKmkpKSktPn5HX19UYmFzaWNfaWZzdHJlYW1sRWNoYXJjT2NoYXJf
dHJhaXRzbEVjaGFyZ1JzUGdSKCk7CisgICAgICAgfQorICAgICAgIEdfX3NldGd2cChndnApOwor
ICAgICB9CisgICB9IGVsc2UgeworICAgICBpZiAoZ3ZwID09IEdfX1BWT0lEKSB7CisgICAgICAg
ZGVsZXRlIChiYXNpY19pZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBzb2ZmOwor
ICAgICB9IGVsc2UgeworICAgICAgIEdfX3NldGd2cChHX19QVk9JRCk7CisgICAgICAgKChiYXNp
Y19pZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSAoc29mZikpLT5+R19fVGJhc2lj
X2lmc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUigpOworICAgICAgIEdfX3Nl
dGd2cChndnApOworICAgICB9CisgICB9CisgICBHX19zZXRudWxsKHJlc3VsdDcpOworICAgcmV0
dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworCisv
KiBiYXNpY19vZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKi8KK3N0YXRpYyBpbnQg
R19fR19fc3RyZWFtXzIwXzBfMShHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVu
Y25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICBiYXNpY19vZnN0
cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qIHAgPSBOVUxMOworICAgbG9uZyBndnAgPSBH
X19nZXRndnAoKTsKKyAgIGludCBuID0gR19fZ2V0YXJ5Y29uc3RydWN0KCk7CisgICBpZiAobikg
eworICAgICBpZiAoKGd2cCA9PSBHX19QVk9JRCkgfHwgKGd2cCA9PSAwKSkgeworICAgICAgIHAg
PSBuZXcgYmFzaWNfb2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+W25dOworICAgICB9
IGVsc2UgeworICAgICAgIHAgPSBuZXcoKHZvaWQqKSBndnApIGJhc2ljX29mc3RyZWFtPGNoYXIs
Y2hhcl90cmFpdHM8Y2hhcj4gPltuXTsKKyAgICAgfQorICAgfSBlbHNlIHsKKyAgICAgaWYgKChn
dnAgPT0gR19fUFZPSUQpIHx8IChndnAgPT0gMCkpIHsKKyAgICAgICBwID0gbmV3IGJhc2ljX29m
c3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBw
ID0gbmV3KCh2b2lkKikgZ3ZwKSBiYXNpY19vZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+
ID47CisgICAgIH0KKyAgIH0KKyAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpIHA7CisgICByZXN1
bHQ3LT5yZWYgPSAobG9uZykgcDsKKyAgIHJlc3VsdDctPnR5cGUgPSAndSc7CisgICByZXN1bHQ3
LT50YWdudW0gPSBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb2Zz
dHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKTsKKyAgIHJldHVybigxIHx8IGZ1
bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19f
R19fc3RyZWFtXzIwXzBfMihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25h
bWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICBiYXNpY19vZnN0cmVh
bTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qIHAgPSBOVUxMOworICAgbG9uZyBndnAgPSBHX19n
ZXRndnAoKTsKKyAgIHN3aXRjaCAobGlicC0+cGFyYW4pIHsKKyAgIGNhc2UgMjoKKyAgICAgLy9t
OiAyCisgICAgIGlmICgoZ3ZwID09IEdfX1BWT0lEKSB8fCAoZ3ZwID09IDApKSB7CisgICAgICAg
cCA9IG5ldyBiYXNpY19vZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4oKGNvbnN0IGNo
YXIqKSBHX19pbnQobGlicC0+cGFyYVswXSksIChpb3NfYmFzZTo6b3Blbm1vZGUpIEdfX2ludChs
aWJwLT5wYXJhWzFdKSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgcCA9IG5ldygodm9pZCopIGd2
cCkgYmFzaWNfb2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KChjb25zdCBjaGFyKikg
R19faW50KGxpYnAtPnBhcmFbMF0pLCAoaW9zX2Jhc2U6Om9wZW5tb2RlKSBHX19pbnQobGlicC0+
cGFyYVsxXSkpOworICAgICB9CisgICAgIGJyZWFrOworICAgY2FzZSAxOgorICAgICAvL206IDEK
KyAgICAgaWYgKChndnAgPT0gR19fUFZPSUQpIHx8IChndnAgPT0gMCkpIHsKKyAgICAgICBwID0g
bmV3IGJhc2ljX29mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPigoY29uc3QgY2hhciop
IEdfX2ludChsaWJwLT5wYXJhWzBdKSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgcCA9IG5ldygo
dm9pZCopIGd2cCkgYmFzaWNfb2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KChjb25z
dCBjaGFyKikgR19faW50KGxpYnAtPnBhcmFbMF0pKTsKKyAgICAgfQorICAgICBicmVhazsKKyAg
IH0KKyAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpIHA7CisgICByZXN1bHQ3LT5yZWYgPSAobG9u
ZykgcDsKKyAgIHJlc3VsdDctPnR5cGUgPSAndSc7CisgICByZXN1bHQ3LT50YWdudW0gPSBHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb2ZzdHJlYW1sRWNoYXJjT2No
YXJfdHJhaXRzbEVjaGFyZ1JzUGdSKTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2gg
fHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzIwXzBf
MyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19w
YXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRpbnQocmVzdWx0NywgODUsIChs
b25nKSAoKGNvbnN0IGJhc2ljX29mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdf
X2dldHN0cnVjdG9mZnNldCgpKS0+cmRidWYoKSk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8
fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVh
bV8yMF8wXzQoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1
Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgR19fbGV0aW50KHJlc3VsdDcs
IDEwMywgKGxvbmcpICgoYmFzaWNfb2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+Kikg
R19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5pc19vcGVuKCkpOworICAgcmV0dXJuKDEgfHwgZnVuY25h
bWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19z
dHJlYW1fMjBfMF81KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwg
c3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgIHN3aXRjaCAobGlicC0+cGFy
YW4pIHsKKyAgIGNhc2UgMjoKKyAgICAgICgoYmFzaWNfb2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5vcGVuKChjb25zdCBjaGFyKikgR19f
aW50KGxpYnAtPnBhcmFbMF0pLCAoaW9zX2Jhc2U6Om9wZW5tb2RlKSBHX19pbnQobGlicC0+cGFy
YVsxXSkpOworICAgICAgR19fc2V0bnVsbChyZXN1bHQ3KTsKKyAgICAgIGJyZWFrOworICAgY2Fz
ZSAxOgorICAgICAgKChiYXNpY19vZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBH
X19nZXRzdHJ1Y3RvZmZzZXQoKSktPm9wZW4oKGNvbnN0IGNoYXIqKSBHX19pbnQobGlicC0+cGFy
YVswXSkpOworICAgICAgR19fc2V0bnVsbChyZXN1bHQ3KTsKKyAgICAgIGJyZWFrOworICAgfQor
ICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30K
Kworc3RhdGljIGludCBHX19HX19zdHJlYW1fMjBfMF82KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19D
T05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sK
KyAgICAgICgoYmFzaWNfb2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0
c3RydWN0b2Zmc2V0KCkpLT5jbG9zZSgpOworICAgICAgR19fc2V0bnVsbChyZXN1bHQ3KTsKKyAg
IHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisK
Ky8vIGF1dG9tYXRpYyBkZXN0cnVjdG9yCit0eXBlZGVmIGJhc2ljX29mc3RyZWFtPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4gPiBHX19UYmFzaWNfb2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSOworc3RhdGljIGludCBHX19HX19zdHJlYW1fMjBfMF83KEdfX3ZhbHVlKiByZXN1
bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQg
aGFzaCkKK3sKKyAgIGxvbmcgZ3ZwID0gR19fZ2V0Z3ZwKCk7CisgICBsb25nIHNvZmYgPSBHX19n
ZXRzdHJ1Y3RvZmZzZXQoKTsKKyAgIGludCBuID0gR19fZ2V0YXJ5Y29uc3RydWN0KCk7CisgICAv
LworICAgLy9oYXNfYV9kZWxldGU6IDAKKyAgIC8vaGFzX293bl9kZWxldGUxYXJnOiAwCisgICAv
L2hhc19vd25fZGVsZXRlMmFyZzogMAorICAgLy8KKyAgIGlmICghc29mZikgeworICAgICByZXR1
cm4oMSk7CisgICB9CisgICBpZiAobikgeworICAgICBpZiAoZ3ZwID09IEdfX1BWT0lEKSB7Cisg
ICAgICAgZGVsZXRlW10gKGJhc2ljX29mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiop
IHNvZmY7CisgICAgIH0gZWxzZSB7CisgICAgICAgR19fc2V0Z3ZwKEdfX1BWT0lEKTsKKyAgICAg
ICBmb3IgKGludCBpID0gbiAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAoKGJhc2ljX29m
c3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIChzb2ZmKyhzaXplb2YoYmFzaWNfb2Zz
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KSppKSkpLT5+R19fVGJhc2ljX29mc3RyZWFt
bEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUigpOworICAgICAgIH0KKyAgICAgICBHX19z
ZXRndnAoZ3ZwKTsKKyAgICAgfQorICAgfSBlbHNlIHsKKyAgICAgaWYgKGd2cCA9PSBHX19QVk9J
RCkgeworICAgICAgIGRlbGV0ZSAoYmFzaWNfb2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFy
PiA+Kikgc29mZjsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBHX19zZXRndnAoR19fUFZPSUQpOwor
ICAgICAgICgoYmFzaWNfb2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgKHNvZmYp
KS0+fkdfX1RiYXNpY19vZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IoKTsK
KyAgICAgICBHX19zZXRndnAoZ3ZwKTsKKyAgICAgfQorICAgfQorICAgR19fc2V0bnVsbChyZXN1
bHQ3KTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJw
KSA7Cit9CisKKworLyogYmFzaWNfZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKi8K
K3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzIxXzBfMShHX192YWx1ZSogcmVzdWx0NywgR19fQ09O
U1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7Cisg
ICBiYXNpY19mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiogcCA9IE5VTEw7CisgICBs
b25nIGd2cCA9IEdfX2dldGd2cCgpOworICAgaW50IG4gPSBHX19nZXRhcnljb25zdHJ1Y3QoKTsK
KyAgIGlmIChuKSB7CisgICAgIGlmICgoZ3ZwID09IEdfX1BWT0lEKSB8fCAoZ3ZwID09IDApKSB7
CisgICAgICAgcCA9IG5ldyBiYXNpY19mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPltu
XTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBwID0gbmV3KCh2b2lkKikgZ3ZwKSBiYXNpY19mc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPltuXTsKKyAgICAgfQorICAgfSBlbHNlIHsKKyAg
ICAgaWYgKChndnAgPT0gR19fUFZPSUQpIHx8IChndnAgPT0gMCkpIHsKKyAgICAgICBwID0gbmV3
IGJhc2ljX2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OworICAgICB9IGVsc2Ugewor
ICAgICAgIHAgPSBuZXcoKHZvaWQqKSBndnApIGJhc2ljX2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+OworICAgICB9CisgICB9CisgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSBwOwor
ICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpIHA7CisgICByZXN1bHQ3LT50eXBlID0gJ3UnOworICAg
cmVzdWx0Ny0+dGFnbnVtID0gR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jh
c2ljX2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKTsKKyAgIHJldHVybigx
IHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBp
bnQgR19fR19fc3RyZWFtXzIxXzBfMihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciog
ZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICBiYXNpY19m
c3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiogcCA9IE5VTEw7CisgICBsb25nIGd2cCA9
IEdfX2dldGd2cCgpOworICAgLy9tOiAyCisgICBpZiAoKGd2cCA9PSBHX19QVk9JRCkgfHwgKGd2
cCA9PSAwKSkgeworICAgICBwID0gbmV3IGJhc2ljX2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxj
aGFyPiA+KChjb25zdCBjaGFyKikgR19faW50KGxpYnAtPnBhcmFbMF0pLCAoaW9zX2Jhc2U6Om9w
ZW5tb2RlKSBHX19pbnQobGlicC0+cGFyYVsxXSkpOworICAgfSBlbHNlIHsKKyAgICAgcCA9IG5l
dygodm9pZCopIGd2cCkgYmFzaWNfZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4oKGNv
bnN0IGNoYXIqKSBHX19pbnQobGlicC0+cGFyYVswXSksIChpb3NfYmFzZTo6b3Blbm1vZGUpIEdf
X2ludChsaWJwLT5wYXJhWzFdKSk7CisgICB9CisgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSBw
OworICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpIHA7CisgICByZXN1bHQ3LT50eXBlID0gJ3UnOwor
ICAgcmVzdWx0Ny0+dGFnbnVtID0gR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxO
X2Jhc2ljX2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKTsKKyAgIHJldHVy
bigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRp
YyBpbnQgR19fR19fc3RyZWFtXzIxXzBfMyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hh
ciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBH
X19sZXRpbnQocmVzdWx0NywgODUsIChsb25nKSAoKGNvbnN0IGJhc2ljX2ZzdHJlYW08Y2hhcixj
aGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5yZGJ1ZigpKTsKKyAg
IHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisK
K3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzIxXzBfNChHX192YWx1ZSogcmVzdWx0NywgR19fQ09O
U1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7Cisg
ICAgICBHX19sZXRpbnQocmVzdWx0NywgMTAzLCAobG9uZykgKChiYXNpY19mc3RyZWFtPGNoYXIs
Y2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+aXNfb3BlbigpKTsK
KyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9
CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzIxXzBfNShHX192YWx1ZSogcmVzdWx0NywgR19f
Q09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7
CisgICAgICAoKGJhc2ljX2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgR19fZ2V0
c3RydWN0b2Zmc2V0KCkpLT5vcGVuKChjb25zdCBjaGFyKikgR19faW50KGxpYnAtPnBhcmFbMF0p
LCAoaW9zX2Jhc2U6Om9wZW5tb2RlKSBHX19pbnQobGlicC0+cGFyYVsxXSkpOworICAgICAgR19f
c2V0bnVsbChyZXN1bHQ3KTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVz
dWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzIxXzBfNihHX192
YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSog
bGlicCwgaW50IGhhc2gpCit7CisgICAgICAoKGJhc2ljX2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+KikgR19fZ2V0c3RydWN0b2Zmc2V0KCkpLT5jbG9zZSgpOworICAgICAgR19fc2V0
bnVsbChyZXN1bHQ3KTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0
NyB8fCBsaWJwKSA7Cit9CisKKy8vIGF1dG9tYXRpYyBkZXN0cnVjdG9yCit0eXBlZGVmIGJhc2lj
X2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+IEdfX1RiYXNpY19mc3RyZWFtbEVjaGFy
Y09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUjsKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzIxXzBf
NyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19w
YXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOworICAg
bG9uZyBzb2ZmID0gR19fZ2V0c3RydWN0b2Zmc2V0KCk7CisgICBpbnQgbiA9IEdfX2dldGFyeWNv
bnN0cnVjdCgpOworICAgLy8KKyAgIC8vaGFzX2FfZGVsZXRlOiAwCisgICAvL2hhc19vd25fZGVs
ZXRlMWFyZzogMAorICAgLy9oYXNfb3duX2RlbGV0ZTJhcmc6IDAKKyAgIC8vCisgICBpZiAoIXNv
ZmYpIHsKKyAgICAgcmV0dXJuKDEpOworICAgfQorICAgaWYgKG4pIHsKKyAgICAgaWYgKGd2cCA9
PSBHX19QVk9JRCkgeworICAgICAgIGRlbGV0ZVtdIChiYXNpY19mc3RyZWFtPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4gPiopIHNvZmY7CisgICAgIH0gZWxzZSB7CisgICAgICAgR19fc2V0Z3ZwKEdf
X1BWT0lEKTsKKyAgICAgICBmb3IgKGludCBpID0gbiAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAg
ICAgICAoKGJhc2ljX2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KikgKHNvZmYrKHNp
emVvZihiYXNpY19mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPikqaSkpKS0+fkdfX1Ri
YXNpY19mc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUigpOworICAgICAgIH0K
KyAgICAgICBHX19zZXRndnAoZ3ZwKTsKKyAgICAgfQorICAgfSBlbHNlIHsKKyAgICAgaWYgKGd2
cCA9PSBHX19QVk9JRCkgeworICAgICAgIGRlbGV0ZSAoYmFzaWNfZnN0cmVhbTxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+ID4qKSBzb2ZmOworICAgICB9IGVsc2UgeworICAgICAgIEdfX3NldGd2cChH
X19QVk9JRCk7CisgICAgICAgKChiYXNpY19mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PiopIChzb2ZmKSktPn5HX19UYmFzaWNfZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJn
UnNQZ1IoKTsKKyAgICAgICBHX19zZXRndnAoZ3ZwKTsKKyAgICAgfQorICAgfQorICAgR19fc2V0
bnVsbChyZXN1bHQ3KTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0
NyB8fCBsaWJwKSA7Cit9CisKKworLyogYmFzaWNfaW9zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxj
aGFyPiA+ICovCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8yMl8wXzEoR19fdmFsdWUqIHJlc3Vs
dDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBo
YXNoKQoreworICAgYmFzaWNfaW9zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KiBwID0g
TlVMTDsKKyAgIGxvbmcgZ3ZwID0gR19fZ2V0Z3ZwKCk7CisgICAvL206IDEKKyAgIGlmICgoZ3Zw
ID09IEdfX1BWT0lEKSB8fCAoZ3ZwID09IDApKSB7CisgICAgIHAgPSBuZXcgYmFzaWNfaW9zdHJl
YW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KChiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPiA+KikgR19faW50KGxpYnAtPnBhcmFbMF0pKTsKKyAgIH0gZWxzZSB7CisgICAg
IHAgPSBuZXcoKHZvaWQqKSBndnApIGJhc2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPigoYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIEdfX2ludChs
aWJwLT5wYXJhWzBdKSk7CisgICB9CisgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSBwOworICAg
cmVzdWx0Ny0+cmVmID0gKGxvbmcpIHA7CisgICByZXN1bHQ3LT50eXBlID0gJ3UnOworICAgcmVz
dWx0Ny0+dGFnbnVtID0gR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2lj
X2lvc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUik7CisgICByZXR1cm4oMSB8
fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCisvLyBhdXRvbWF0
aWMgZGVzdHJ1Y3RvcgordHlwZWRlZiBiYXNpY19pb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+ID4gR19fVGJhc2ljX2lvc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUjsK
K3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzIyXzBfMyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09O
U1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7Cisg
ICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOworICAgbG9uZyBzb2ZmID0gR19fZ2V0c3RydWN0b2Zm
c2V0KCk7CisgICBpbnQgbiA9IEdfX2dldGFyeWNvbnN0cnVjdCgpOworICAgLy8KKyAgIC8vaGFz
X2FfZGVsZXRlOiAwCisgICAvL2hhc19vd25fZGVsZXRlMWFyZzogMAorICAgLy9oYXNfb3duX2Rl
bGV0ZTJhcmc6IDAKKyAgIC8vCisgICBpZiAoIXNvZmYpIHsKKyAgICAgcmV0dXJuKDEpOworICAg
fQorICAgaWYgKG4pIHsKKyAgICAgaWYgKGd2cCA9PSBHX19QVk9JRCkgeworICAgICAgIGRlbGV0
ZVtdIChiYXNpY19pb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKSBzb2ZmOworICAg
ICB9IGVsc2UgeworICAgICAgIEdfX3NldGd2cChHX19QVk9JRCk7CisgICAgICAgZm9yIChpbnQg
aSA9IG4gLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgKChiYXNpY19pb3N0cmVhbTxjaGFy
LGNoYXJfdHJhaXRzPGNoYXI+ID4qKSAoc29mZisoc2l6ZW9mKGJhc2ljX2lvc3RyZWFtPGNoYXIs
Y2hhcl90cmFpdHM8Y2hhcj4gPikqaSkpKS0+fkdfX1RiYXNpY19pb3N0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1IoKTsKKyAgICAgICB9CisgICAgICAgR19fc2V0Z3ZwKGd2cCk7
CisgICAgIH0KKyAgIH0gZWxzZSB7CisgICAgIGlmIChndnAgPT0gR19fUFZPSUQpIHsKKyAgICAg
ICBkZWxldGUgKGJhc2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIHNvZmY7
CisgICAgIH0gZWxzZSB7CisgICAgICAgR19fc2V0Z3ZwKEdfX1BWT0lEKTsKKyAgICAgICAoKGJh
c2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopIChzb2ZmKSktPn5HX19UYmFz
aWNfaW9zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKCk7CisgICAgICAgR19f
c2V0Z3ZwKGd2cCk7CisgICAgIH0KKyAgIH0KKyAgIEdfX3NldG51bGwocmVzdWx0Nyk7CisgICBy
ZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCisK
Ky8qIGJhc2ljX3N0cmluZ2J1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFy
PiA+ICovCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8yN18wXzEoR19fdmFsdWUqIHJlc3VsdDcs
IEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNo
KQoreworICAgYmFzaWNfc3RyaW5nYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9y
PGNoYXI+ID4qIHAgPSBOVUxMOworICAgbG9uZyBndnAgPSBHX19nZXRndnAoKTsKKyAgIHN3aXRj
aCAobGlicC0+cGFyYW4pIHsKKyAgIGNhc2UgMToKKyAgICAgLy9tOiAxCisgICAgIGlmICgoZ3Zw
ID09IEdfX1BWT0lEKSB8fCAoZ3ZwID09IDApKSB7CisgICAgICAgcCA9IG5ldyBiYXNpY19zdHJp
bmdidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPigoaW9zX2Jhc2U6
Om9wZW5tb2RlKSBHX19pbnQobGlicC0+cGFyYVswXSkpOworICAgICB9IGVsc2UgeworICAgICAg
IHAgPSBuZXcoKHZvaWQqKSBndnApIGJhc2ljX3N0cmluZ2J1ZjxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+LGFsbG9jYXRvcjxjaGFyPiA+KChpb3NfYmFzZTo6b3Blbm1vZGUpIEdfX2ludChsaWJwLT5w
YXJhWzBdKSk7CisgICAgIH0KKyAgICAgYnJlYWs7CisgICBjYXNlIDA6CisgICAgIGludCBuID0g
R19fZ2V0YXJ5Y29uc3RydWN0KCk7CisgICAgIGlmIChuKSB7CisgICAgICAgaWYgKChndnAgPT0g
R19fUFZPSUQpIHx8IChndnAgPT0gMCkpIHsKKyAgICAgICAgIHAgPSBuZXcgYmFzaWNfc3RyaW5n
YnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID5bbl07CisgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgIHAgPSBuZXcoKHZvaWQqKSBndnApIGJhc2ljX3N0cmluZ2J1Zjxj
aGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+W25dOworICAgICAgIH0KKyAg
ICAgfSBlbHNlIHsKKyAgICAgICBpZiAoKGd2cCA9PSBHX19QVk9JRCkgfHwgKGd2cCA9PSAwKSkg
eworICAgICAgICAgcCA9IG5ldyBiYXNpY19zdHJpbmdidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFy
PixhbGxvY2F0b3I8Y2hhcj4gPjsKKyAgICAgICB9IGVsc2UgeworICAgICAgICAgcCA9IG5ldygo
dm9pZCopIGd2cCkgYmFzaWNfc3RyaW5nYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2Nh
dG9yPGNoYXI+ID47CisgICAgICAgfQorICAgICB9CisgICAgIGJyZWFrOworICAgfQorICAgcmVz
dWx0Ny0+b2JqLmkgPSAobG9uZykgcDsKKyAgIHJlc3VsdDctPnJlZiA9IChsb25nKSBwOworICAg
cmVzdWx0Ny0+dHlwZSA9ICd1JzsKKyAgIHJlc3VsdDctPnRhZ251bSA9IEdfX2dldF9saW5rZWRf
dGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19zdHJpbmdidWZsRWNoYXJjT2NoYXJfdHJhaXRz
bEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUik7CisgICByZXR1cm4oMSB8fCBmdW5jbmFt
ZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0
cmVhbV8yN18wXzIoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBz
dHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgYmFzaWNfc3RyaW5nYnVmPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4qIHAgPSBOVUxMOworICAgbG9u
ZyBndnAgPSBHX19nZXRndnAoKTsKKyAgIHN3aXRjaCAobGlicC0+cGFyYW4pIHsKKyAgIGNhc2Ug
MjoKKyAgICAgLy9tOiAyCisgICAgIGlmICgoZ3ZwID09IEdfX1BWT0lEKSB8fCAoZ3ZwID09IDAp
KSB7CisgICAgICAgcCA9IG5ldyBiYXNpY19zdHJpbmdidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFy
PixhbGxvY2F0b3I8Y2hhcj4gPigqKGJhc2ljX3N0cmluZ2J1ZjxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+LGFsbG9jYXRvcjxjaGFyPiA+OjpfX3N0cmluZ190eXBlKikgbGlicC0+cGFyYVswXS5yZWYs
IChpb3NfYmFzZTo6b3Blbm1vZGUpIEdfX2ludChsaWJwLT5wYXJhWzFdKSk7CisgICAgIH0gZWxz
ZSB7CisgICAgICAgcCA9IG5ldygodm9pZCopIGd2cCkgYmFzaWNfc3RyaW5nYnVmPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4oKihiYXNpY19zdHJpbmdidWY8Y2hhcixj
aGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlwZSopIGxpYnAt
PnBhcmFbMF0ucmVmLCAoaW9zX2Jhc2U6Om9wZW5tb2RlKSBHX19pbnQobGlicC0+cGFyYVsxXSkp
OworICAgICB9CisgICAgIGJyZWFrOworICAgY2FzZSAxOgorICAgICAvL206IDEKKyAgICAgaWYg
KChndnAgPT0gR19fUFZPSUQpIHx8IChndnAgPT0gMCkpIHsKKyAgICAgICBwID0gbmV3IGJhc2lj
X3N0cmluZ2J1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+KCooYmFz
aWNfc3RyaW5nYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID46Ol9f
c3RyaW5nX3R5cGUqKSBsaWJwLT5wYXJhWzBdLnJlZik7CisgICAgIH0gZWxzZSB7CisgICAgICAg
cCA9IG5ldygodm9pZCopIGd2cCkgYmFzaWNfc3RyaW5nYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4sYWxsb2NhdG9yPGNoYXI+ID4oKihiYXNpY19zdHJpbmdidWY8Y2hhcixjaGFyX3RyYWl0czxj
aGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlwZSopIGxpYnAtPnBhcmFbMF0ucmVm
KTsKKyAgICAgfQorICAgICBicmVhazsKKyAgIH0KKyAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcp
IHA7CisgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgcDsKKyAgIHJlc3VsdDctPnR5cGUgPSAndSc7
CisgICByZXN1bHQ3LT50YWdudW0gPSBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFt
TE5fYmFzaWNfc3RyaW5nYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3Js
RWNoYXJnUnNQZ1IpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3
IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMjdfMF8zKEdfX3ZhbHVl
KiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJw
LCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZ2J1Zjxj
aGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+OjpfX3N0cmluZ190eXBlKiBw
b2JqOworICAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4sYWxsb2NhdG9yPGNoYXI+ID46Ol9fc3RyaW5nX3R5cGUgeG9iaiA9ICgoY29uc3QgYmFzaWNf
c3RyaW5nYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4qKSBHX19n
ZXRzdHJ1Y3RvZmZzZXQoKSktPnN0cigpOworICAgICAgICAgcG9iaiA9IG5ldyBiYXNpY19zdHJp
bmdidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdf
dHlwZSh4b2JqKTsKKyAgICAgICAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgodm9pZCopIHBv
YmopOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gcmVzdWx0Ny0+b2JqLmk7CisgICAgICAgICBH
X19zdG9yZV90ZW1wb2JqZWN0KCpyZXN1bHQ3KTsKKyAgICAgIH0KKyAgIHJldHVybigxIHx8IGZ1
bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19f
R19fc3RyZWFtXzI3XzBfNChHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25h
bWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICAoKGJhc2ljX3N0
cmluZ2J1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+KikgR19fZ2V0
c3RydWN0b2Zmc2V0KCkpLT5zdHIoKihiYXNpY19zdHJpbmdidWY8Y2hhcixjaGFyX3RyYWl0czxj
aGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlwZSopIGxpYnAtPnBhcmFbMF0ucmVm
KTsKKyAgICAgIEdfX3NldG51bGwocmVzdWx0Nyk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8
fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCisvLyBhdXRvbWF0aWMgZGVzdHJ1Y3Rv
cgordHlwZWRlZiBiYXNpY19zdHJpbmdidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0
b3I8Y2hhcj4gPiBHX19UYmFzaWNfc3RyaW5nYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdS
Y09hbGxvY2F0b3JsRWNoYXJnUnNQZ1I7CitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8yN18wXzEz
KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3Bh
cmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgIGxvbmcgZ3ZwID0gR19fZ2V0Z3ZwKCk7CisgICBs
b25nIHNvZmYgPSBHX19nZXRzdHJ1Y3RvZmZzZXQoKTsKKyAgIGludCBuID0gR19fZ2V0YXJ5Y29u
c3RydWN0KCk7CisgICAvLworICAgLy9oYXNfYV9kZWxldGU6IDAKKyAgIC8vaGFzX293bl9kZWxl
dGUxYXJnOiAwCisgICAvL2hhc19vd25fZGVsZXRlMmFyZzogMAorICAgLy8KKyAgIGlmICghc29m
ZikgeworICAgICByZXR1cm4oMSk7CisgICB9CisgICBpZiAobikgeworICAgICBpZiAoZ3ZwID09
IEdfX1BWT0lEKSB7CisgICAgICAgZGVsZXRlW10gKGJhc2ljX3N0cmluZ2J1ZjxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+Kikgc29mZjsKKyAgICAgfSBlbHNlIHsKKyAg
ICAgICBHX19zZXRndnAoR19fUFZPSUQpOworICAgICAgIGZvciAoaW50IGkgPSBuIC0gMTsgaSA+
PSAwOyAtLWkpIHsKKyAgICAgICAgICgoYmFzaWNfc3RyaW5nYnVmPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4qKSAoc29mZisoc2l6ZW9mKGJhc2ljX3N0cmluZ2J1Zjxj
aGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+KSppKSkpLT5+R19fVGJhc2lj
X3N0cmluZ2J1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1Jz
UGdSKCk7CisgICAgICAgfQorICAgICAgIEdfX3NldGd2cChndnApOworICAgICB9CisgICB9IGVs
c2UgeworICAgICBpZiAoZ3ZwID09IEdfX1BWT0lEKSB7CisgICAgICAgZGVsZXRlIChiYXNpY19z
dHJpbmdidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiopIHNvZmY7
CisgICAgIH0gZWxzZSB7CisgICAgICAgR19fc2V0Z3ZwKEdfX1BWT0lEKTsKKyAgICAgICAoKGJh
c2ljX3N0cmluZ2J1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+Kikg
KHNvZmYpKS0+fkdfX1RiYXNpY19zdHJpbmdidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1Jj
T2FsbG9jYXRvcmxFY2hhcmdSc1BnUigpOworICAgICAgIEdfX3NldGd2cChndnApOworICAgICB9
CisgICB9CisgICBHX19zZXRudWxsKHJlc3VsdDcpOworICAgcmV0dXJuKDEgfHwgZnVuY25hbWUg
fHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworCisvKiBiYXNpY19pc3RyaW5nc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4gKi8KK3N0YXRpYyBp
bnQgR19fR19fc3RyZWFtXzI4XzBfMShHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciog
ZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICBiYXNpY19p
c3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4qIHAg
PSBOVUxMOworICAgbG9uZyBndnAgPSBHX19nZXRndnAoKTsKKyAgIHN3aXRjaCAobGlicC0+cGFy
YW4pIHsKKyAgIGNhc2UgMToKKyAgICAgLy9tOiAxCisgICAgIGlmICgoZ3ZwID09IEdfX1BWT0lE
KSB8fCAoZ3ZwID09IDApKSB7CisgICAgICAgcCA9IG5ldyBiYXNpY19pc3RyaW5nc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4oKGlvc19iYXNlOjpvcGVubW9k
ZSkgR19faW50KGxpYnAtPnBhcmFbMF0pKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBwID0gbmV3
KCh2b2lkKikgZ3ZwKSBiYXNpY19pc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4s
YWxsb2NhdG9yPGNoYXI+ID4oKGlvc19iYXNlOjpvcGVubW9kZSkgR19faW50KGxpYnAtPnBhcmFb
MF0pKTsKKyAgICAgfQorICAgICBicmVhazsKKyAgIGNhc2UgMDoKKyAgICAgaW50IG4gPSBHX19n
ZXRhcnljb25zdHJ1Y3QoKTsKKyAgICAgaWYgKG4pIHsKKyAgICAgICBpZiAoKGd2cCA9PSBHX19Q
Vk9JRCkgfHwgKGd2cCA9PSAwKSkgeworICAgICAgICAgcCA9IG5ldyBiYXNpY19pc3RyaW5nc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID5bbl07CisgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgIHAgPSBuZXcoKHZvaWQqKSBndnApIGJhc2ljX2lzdHJpbmdzdHJl
YW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPltuXTsKKyAgICAgICB9
CisgICAgIH0gZWxzZSB7CisgICAgICAgaWYgKChndnAgPT0gR19fUFZPSUQpIHx8IChndnAgPT0g
MCkpIHsKKyAgICAgICAgIHAgPSBuZXcgYmFzaWNfaXN0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJh
aXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+OworICAgICAgIH0gZWxzZSB7CisgICAgICAgICBw
ID0gbmV3KCh2b2lkKikgZ3ZwKSBiYXNpY19pc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID47CisgICAgICAgfQorICAgICB9CisgICAgIGJyZWFrOwor
ICAgfQorICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgcDsKKyAgIHJlc3VsdDctPnJlZiA9IChs
b25nKSBwOworICAgcmVzdWx0Ny0+dHlwZSA9ICd1JzsKKyAgIHJlc3VsdDctPnRhZ251bSA9IEdf
X2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyaW5nc3RyZWFtbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpOworICAgcmV0
dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3Rh
dGljIGludCBHX19HX19zdHJlYW1fMjhfMF8yKEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBj
aGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgIGJh
c2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4g
PiogcCA9IE5VTEw7CisgICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOworICAgc3dpdGNoIChsaWJw
LT5wYXJhbikgeworICAgY2FzZSAyOgorICAgICAvL206IDIKKyAgICAgaWYgKChndnAgPT0gR19f
UFZPSUQpIHx8IChndnAgPT0gMCkpIHsKKyAgICAgICBwID0gbmV3IGJhc2ljX2lzdHJpbmdzdHJl
YW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPigqKGJhc2ljX2lzdHJp
bmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJp
bmdfdHlwZSopIGxpYnAtPnBhcmFbMF0ucmVmLCAoaW9zX2Jhc2U6Om9wZW5tb2RlKSBHX19pbnQo
bGlicC0+cGFyYVsxXSkpOworICAgICB9IGVsc2UgeworICAgICAgIHAgPSBuZXcoKHZvaWQqKSBn
dnApIGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8
Y2hhcj4gPigqKGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxv
Y2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlwZSopIGxpYnAtPnBhcmFbMF0ucmVmLCAoaW9zX2Jh
c2U6Om9wZW5tb2RlKSBHX19pbnQobGlicC0+cGFyYVsxXSkpOworICAgICB9CisgICAgIGJyZWFr
OworICAgY2FzZSAxOgorICAgICAvL206IDEKKyAgICAgaWYgKChndnAgPT0gR19fUFZPSUQpIHx8
IChndnAgPT0gMCkpIHsKKyAgICAgICBwID0gbmV3IGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixj
aGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPigqKGJhc2ljX2lzdHJpbmdzdHJlYW08
Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlwZSop
IGxpYnAtPnBhcmFbMF0ucmVmKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBwID0gbmV3KCh2b2lk
KikgZ3ZwKSBiYXNpY19pc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2Nh
dG9yPGNoYXI+ID4oKihiYXNpY19pc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4s
YWxsb2NhdG9yPGNoYXI+ID46Ol9fc3RyaW5nX3R5cGUqKSBsaWJwLT5wYXJhWzBdLnJlZik7Cisg
ICAgIH0KKyAgICAgYnJlYWs7CisgICB9CisgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSBwOwor
ICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpIHA7CisgICByZXN1bHQ3LT50eXBlID0gJ3UnOworICAg
cmVzdWx0Ny0+dGFnbnVtID0gR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jh
c2ljX2lzdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxF
Y2hhcmdSc1BnUik7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcg
fHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8yOF8wXzMoR19fdmFsdWUq
IHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAs
IGludCBoYXNoKQoreworICAgYmFzaWNfaXN0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+LGFsbG9jYXRvcjxjaGFyPiA+KiBwID0gTlVMTDsKKyAgIGxvbmcgZ3ZwID0gR19fZ2V0Z3Zw
KCk7CisgICBzd2l0Y2ggKGxpYnAtPnBhcmFuKSB7CisgICBjYXNlIDI6CisgICAgIC8vbTogMgor
ICAgICBpZiAoKGd2cCA9PSBHX19QVk9JRCkgfHwgKGd2cCA9PSAwKSkgeworICAgICAgIHAgPSBu
ZXcgYmFzaWNfaXN0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxj
aGFyPiA+KChjb25zdCBjaGFyKikgR19faW50KGxpYnAtPnBhcmFbMF0pLCAoaW9zX2Jhc2U6Om9w
ZW5tb2RlKSBHX19pbnQobGlicC0+cGFyYVsxXSkpOworICAgICB9IGVsc2UgeworICAgICAgIHAg
PSBuZXcoKHZvaWQqKSBndnApIGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxj
aGFyPixhbGxvY2F0b3I8Y2hhcj4gPigoY29uc3QgY2hhciopIEdfX2ludChsaWJwLT5wYXJhWzBd
KSwgKGlvc19iYXNlOjpvcGVubW9kZSkgR19faW50KGxpYnAtPnBhcmFbMV0pKTsKKyAgICAgfQor
ICAgICBicmVhazsKKyAgIGNhc2UgMToKKyAgICAgLy9tOiAxCisgICAgIGlmICgoZ3ZwID09IEdf
X1BWT0lEKSB8fCAoZ3ZwID09IDApKSB7CisgICAgICAgcCA9IG5ldyBiYXNpY19pc3RyaW5nc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4oKGNvbnN0IGNoYXIq
KSBHX19pbnQobGlicC0+cGFyYVswXSkpOworICAgICB9IGVsc2UgeworICAgICAgIHAgPSBuZXco
KHZvaWQqKSBndnApIGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixh
bGxvY2F0b3I8Y2hhcj4gPigoY29uc3QgY2hhciopIEdfX2ludChsaWJwLT5wYXJhWzBdKSk7Cisg
ICAgIH0KKyAgICAgYnJlYWs7CisgICB9CisgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSBwOwor
ICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpIHA7CisgICByZXN1bHQ3LT50eXBlID0gJ3UnOworICAg
cmVzdWx0Ny0+dGFnbnVtID0gR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jh
c2ljX2lzdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxF
Y2hhcmdSc1BnUik7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcg
fHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8yOF8wXzQoR19fdmFsdWUq
IHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAs
IGludCBoYXNoKQoreworICAgICAgR19fbGV0aW50KHJlc3VsdDcsIDg1LCAobG9uZykgKChjb25z
dCBiYXNpY19pc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNo
YXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPnJkYnVmKCkpOworICAgcmV0dXJuKDEgfHwg
ZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBH
X19HX19zdHJlYW1fMjhfMF81KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5j
bmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAg
ICAgIGNvbnN0IGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxv
Y2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlwZSogcG9iajsKKyAgICAgICAgIGNvbnN0IGJhc2lj
X2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6
X19zdHJpbmdfdHlwZSB4b2JqID0gKChjb25zdCBiYXNpY19pc3RyaW5nc3RyZWFtPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSkt
PnN0cigpOworICAgICAgICAgcG9iaiA9IG5ldyBiYXNpY19pc3RyaW5nc3RyZWFtPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID46Ol9fc3RyaW5nX3R5cGUoeG9iaik7Cisg
ICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoKHZvaWQqKSBwb2JqKTsKKyAgICAgICAg
IHJlc3VsdDctPnJlZiA9IHJlc3VsdDctPm9iai5pOworICAgICAgICAgR19fc3RvcmVfdGVtcG9i
amVjdCgqcmVzdWx0Nyk7CisgICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNo
IHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8yOF8w
XzYoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19f
cGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgKChiYXNpY19pc3RyaW5nc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZz
ZXQoKSktPnN0cigqKGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixh
bGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlwZSopIGxpYnAtPnBhcmFbMF0ucmVmKTsKKyAg
ICAgIEdfX3NldG51bGwocmVzdWx0Nyk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNo
IHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCisvLyBhdXRvbWF0aWMgZGVzdHJ1Y3RvcgordHlw
ZWRlZiBiYXNpY19pc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9y
PGNoYXI+ID4gR19fVGJhc2ljX2lzdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFy
Z1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUjsKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzI4XzBf
NyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19w
YXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOworICAg
bG9uZyBzb2ZmID0gR19fZ2V0c3RydWN0b2Zmc2V0KCk7CisgICBpbnQgbiA9IEdfX2dldGFyeWNv
bnN0cnVjdCgpOworICAgLy8KKyAgIC8vaGFzX2FfZGVsZXRlOiAwCisgICAvL2hhc19vd25fZGVs
ZXRlMWFyZzogMAorICAgLy9oYXNfb3duX2RlbGV0ZTJhcmc6IDAKKyAgIC8vCisgICBpZiAoIXNv
ZmYpIHsKKyAgICAgcmV0dXJuKDEpOworICAgfQorICAgaWYgKG4pIHsKKyAgICAgaWYgKGd2cCA9
PSBHX19QVk9JRCkgeworICAgICAgIGRlbGV0ZVtdIChiYXNpY19pc3RyaW5nc3RyZWFtPGNoYXIs
Y2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4qKSBzb2ZmOworICAgICB9IGVsc2Ug
eworICAgICAgIEdfX3NldGd2cChHX19QVk9JRCk7CisgICAgICAgZm9yIChpbnQgaSA9IG4gLSAx
OyBpID49IDA7IC0taSkgeworICAgICAgICAgKChiYXNpY19pc3RyaW5nc3RyZWFtPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4qKSAoc29mZisoc2l6ZW9mKGJhc2ljX2lz
dHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPikqaSkp
KS0+fkdfX1RiYXNpY19pc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09h
bGxvY2F0b3JsRWNoYXJnUnNQZ1IoKTsKKyAgICAgICB9CisgICAgICAgR19fc2V0Z3ZwKGd2cCk7
CisgICAgIH0KKyAgIH0gZWxzZSB7CisgICAgIGlmIChndnAgPT0gR19fUFZPSUQpIHsKKyAgICAg
ICBkZWxldGUgKGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxv
Y2F0b3I8Y2hhcj4gPiopIHNvZmY7CisgICAgIH0gZWxzZSB7CisgICAgICAgR19fc2V0Z3ZwKEdf
X1BWT0lEKTsKKyAgICAgICAoKGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxj
aGFyPixhbGxvY2F0b3I8Y2hhcj4gPiopIChzb2ZmKSktPn5HX19UYmFzaWNfaXN0cmluZ3N0cmVh
bWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKCk7Cisg
ICAgICAgR19fc2V0Z3ZwKGd2cCk7CisgICAgIH0KKyAgIH0KKyAgIEdfX3NldG51bGwocmVzdWx0
Nyk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkg
OworfQorCisKKy8qIGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixh
bGxvY2F0b3I8Y2hhcj4gPiAqLworc3RhdGljIGludCBHX19HX19zdHJlYW1fMjlfMF8xKEdfX3Zh
bHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBs
aWJwLCBpbnQgaGFzaCkKK3sKKyAgIGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiogcCA9IE5VTEw7CisgICBsb25nIGd2cCA9IEdfX2dl
dGd2cCgpOworICAgc3dpdGNoIChsaWJwLT5wYXJhbikgeworICAgY2FzZSAxOgorICAgICAvL206
IDEKKyAgICAgaWYgKChndnAgPT0gR19fUFZPSUQpIHx8IChndnAgPT0gMCkpIHsKKyAgICAgICBw
ID0gbmV3IGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0
b3I8Y2hhcj4gPigoaW9zX2Jhc2U6Om9wZW5tb2RlKSBHX19pbnQobGlicC0+cGFyYVswXSkpOwor
ICAgICB9IGVsc2UgeworICAgICAgIHAgPSBuZXcoKHZvaWQqKSBndnApIGJhc2ljX29zdHJpbmdz
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPigoaW9zX2Jhc2U6
Om9wZW5tb2RlKSBHX19pbnQobGlicC0+cGFyYVswXSkpOworICAgICB9CisgICAgIGJyZWFrOwor
ICAgY2FzZSAwOgorICAgICBpbnQgbiA9IEdfX2dldGFyeWNvbnN0cnVjdCgpOworICAgICBpZiAo
bikgeworICAgICAgIGlmICgoZ3ZwID09IEdfX1BWT0lEKSB8fCAoZ3ZwID09IDApKSB7CisgICAg
ICAgICBwID0gbmV3IGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixh
bGxvY2F0b3I8Y2hhcj4gPltuXTsKKyAgICAgICB9IGVsc2UgeworICAgICAgICAgcCA9IG5ldygo
dm9pZCopIGd2cCkgYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFs
bG9jYXRvcjxjaGFyPiA+W25dOworICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICBpZiAo
KGd2cCA9PSBHX19QVk9JRCkgfHwgKGd2cCA9PSAwKSkgeworICAgICAgICAgcCA9IG5ldyBiYXNp
Y19vc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID47
CisgICAgICAgfSBlbHNlIHsKKyAgICAgICAgIHAgPSBuZXcoKHZvaWQqKSBndnApIGJhc2ljX29z
dHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPjsKKyAg
ICAgICB9CisgICAgIH0KKyAgICAgYnJlYWs7CisgICB9CisgICByZXN1bHQ3LT5vYmouaSA9IChs
b25nKSBwOworICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpIHA7CisgICByZXN1bHQ3LT50eXBlID0g
J3UnOworICAgcmVzdWx0Ny0+dGFnbnVtID0gR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0
cmVhbUxOX2Jhc2ljX29zdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2Fs
bG9jYXRvcmxFY2hhcmdSc1BnUik7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8
IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8yOV8wXzIo
R19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFy
YW0qIGxpYnAsIGludCBoYXNoKQoreworICAgYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+KiBwID0gTlVMTDsKKyAgIGxvbmcgZ3ZwID0g
R19fZ2V0Z3ZwKCk7CisgICBzd2l0Y2ggKGxpYnAtPnBhcmFuKSB7CisgICBjYXNlIDI6CisgICAg
IC8vbTogMgorICAgICBpZiAoKGd2cCA9PSBHX19QVk9JRCkgfHwgKGd2cCA9PSAwKSkgeworICAg
ICAgIHAgPSBuZXcgYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFs
bG9jYXRvcjxjaGFyPiA+KCooYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+LGFsbG9jYXRvcjxjaGFyPiA+OjpfX3N0cmluZ190eXBlKikgbGlicC0+cGFyYVswXS5yZWYs
IChpb3NfYmFzZTo6b3Blbm1vZGUpIEdfX2ludChsaWJwLT5wYXJhWzFdKSk7CisgICAgIH0gZWxz
ZSB7CisgICAgICAgcCA9IG5ldygodm9pZCopIGd2cCkgYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFy
LGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+KCooYmFzaWNfb3N0cmluZ3N0cmVh
bTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+OjpfX3N0cmluZ190eXBl
KikgbGlicC0+cGFyYVswXS5yZWYsIChpb3NfYmFzZTo6b3Blbm1vZGUpIEdfX2ludChsaWJwLT5w
YXJhWzFdKSk7CisgICAgIH0KKyAgICAgYnJlYWs7CisgICBjYXNlIDE6CisgICAgIC8vbTogMQor
ICAgICBpZiAoKGd2cCA9PSBHX19QVk9JRCkgfHwgKGd2cCA9PSAwKSkgeworICAgICAgIHAgPSBu
ZXcgYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxj
aGFyPiA+KCooYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9j
YXRvcjxjaGFyPiA+OjpfX3N0cmluZ190eXBlKikgbGlicC0+cGFyYVswXS5yZWYpOworICAgICB9
IGVsc2UgeworICAgICAgIHAgPSBuZXcoKHZvaWQqKSBndnApIGJhc2ljX29zdHJpbmdzdHJlYW08
Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPigqKGJhc2ljX29zdHJpbmdz
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdf
dHlwZSopIGxpYnAtPnBhcmFbMF0ucmVmKTsKKyAgICAgfQorICAgICBicmVhazsKKyAgIH0KKyAg
IHJlc3VsdDctPm9iai5pID0gKGxvbmcpIHA7CisgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgcDsK
KyAgIHJlc3VsdDctPnR5cGUgPSAndSc7CisgICByZXN1bHQ3LT50YWdudW0gPSBHX19nZXRfbGlu
a2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKTsKKyAgIHJldHVybigxIHx8
IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQg
R19fR19fc3RyZWFtXzI5XzBfMyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVu
Y25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICBHX19sZXRp
bnQocmVzdWx0NywgODUsIChsb25nKSAoKGNvbnN0IGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixj
aGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgp
KS0+cmRidWYoKSk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcg
fHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8yOV8wXzQoR19fdmFsdWUq
IHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAs
IGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgYmFzaWNfb3N0cmluZ3N0cmVh
bTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+OjpfX3N0cmluZ190eXBl
KiBwb2JqOworICAgICAgICAgY29uc3QgYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJh
aXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+OjpfX3N0cmluZ190eXBlIHhvYmogPSAoKGNvbnN0
IGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hh
cj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+c3RyKCk7CisgICAgICAgICBwb2JqID0gbmV3
IGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hh
cj4gPjo6X19zdHJpbmdfdHlwZSh4b2JqKTsKKyAgICAgICAgIHJlc3VsdDctPm9iai5pID0gKGxv
bmcpICgodm9pZCopIHBvYmopOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gcmVzdWx0Ny0+b2Jq
Lmk7CisgICAgICAgICBHX19zdG9yZV90ZW1wb2JqZWN0KCpyZXN1bHQ3KTsKKyAgICAgIH0KKyAg
IHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisK
K3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzI5XzBfNShHX192YWx1ZSogcmVzdWx0NywgR19fQ09O
U1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7Cisg
ICAgICAoKGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0
b3I8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+c3RyKCooYmFzaWNfb3N0cmluZ3N0
cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+OjpfX3N0cmluZ190
eXBlKikgbGlicC0+cGFyYVswXS5yZWYpOworICAgICAgR19fc2V0bnVsbChyZXN1bHQ3KTsKKyAg
IHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisK
Ky8vIGF1dG9tYXRpYyBkZXN0cnVjdG9yCit0eXBlZGVmIGJhc2ljX29zdHJpbmdzdHJlYW08Y2hh
cixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiBHX19UYmFzaWNfb3N0cmluZ3N0
cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSOwor
c3RhdGljIGludCBHX19HX19zdHJlYW1fMjlfMF82KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05T
VCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAg
IGxvbmcgZ3ZwID0gR19fZ2V0Z3ZwKCk7CisgICBsb25nIHNvZmYgPSBHX19nZXRzdHJ1Y3RvZmZz
ZXQoKTsKKyAgIGludCBuID0gR19fZ2V0YXJ5Y29uc3RydWN0KCk7CisgICAvLworICAgLy9oYXNf
YV9kZWxldGU6IDAKKyAgIC8vaGFzX293bl9kZWxldGUxYXJnOiAwCisgICAvL2hhc19vd25fZGVs
ZXRlMmFyZzogMAorICAgLy8KKyAgIGlmICghc29mZikgeworICAgICByZXR1cm4oMSk7CisgICB9
CisgICBpZiAobikgeworICAgICBpZiAoZ3ZwID09IEdfX1BWT0lEKSB7CisgICAgICAgZGVsZXRl
W10gKGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8
Y2hhcj4gPiopIHNvZmY7CisgICAgIH0gZWxzZSB7CisgICAgICAgR19fc2V0Z3ZwKEdfX1BWT0lE
KTsKKyAgICAgICBmb3IgKGludCBpID0gbiAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAo
KGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hh
cj4gPiopIChzb2ZmKyhzaXplb2YoYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRz
PGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+KSppKSkpLT5+R19fVGJhc2ljX29zdHJpbmdzdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUigpOworICAg
ICAgIH0KKyAgICAgICBHX19zZXRndnAoZ3ZwKTsKKyAgICAgfQorICAgfSBlbHNlIHsKKyAgICAg
aWYgKGd2cCA9PSBHX19QVk9JRCkgeworICAgICAgIGRlbGV0ZSAoYmFzaWNfb3N0cmluZ3N0cmVh
bTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+Kikgc29mZjsKKyAgICAg
fSBlbHNlIHsKKyAgICAgICBHX19zZXRndnAoR19fUFZPSUQpOworICAgICAgICgoYmFzaWNfb3N0
cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+KikgKHNv
ZmYpKS0+fkdfX1RiYXNpY19vc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdS
Y09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IoKTsKKyAgICAgICBHX19zZXRndnAoZ3ZwKTsKKyAgICAg
fQorICAgfQorICAgR19fc2V0bnVsbChyZXN1bHQ3KTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1l
IHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKKworLyogYmFzaWNfc3RyaW5nc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4gKi8KK3N0YXRpYyBp
bnQgR19fR19fc3RyZWFtXzMwXzBfMShHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciog
ZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICBiYXNpY19z
dHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiogcCA9
IE5VTEw7CisgICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOworICAgc3dpdGNoIChsaWJwLT5wYXJh
bikgeworICAgY2FzZSAxOgorICAgICAvL206IDEKKyAgICAgaWYgKChndnAgPT0gR19fUFZPSUQp
IHx8IChndnAgPT0gMCkpIHsKKyAgICAgICBwID0gbmV3IGJhc2ljX3N0cmluZ3N0cmVhbTxjaGFy
LGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+KChpb3NfYmFzZTo6b3Blbm1vZGUp
IEdfX2ludChsaWJwLT5wYXJhWzBdKSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgcCA9IG5ldygo
dm9pZCopIGd2cCkgYmFzaWNfc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxs
b2NhdG9yPGNoYXI+ID4oKGlvc19iYXNlOjpvcGVubW9kZSkgR19faW50KGxpYnAtPnBhcmFbMF0p
KTsKKyAgICAgfQorICAgICBicmVhazsKKyAgIGNhc2UgMDoKKyAgICAgaW50IG4gPSBHX19nZXRh
cnljb25zdHJ1Y3QoKTsKKyAgICAgaWYgKG4pIHsKKyAgICAgICBpZiAoKGd2cCA9PSBHX19QVk9J
RCkgfHwgKGd2cCA9PSAwKSkgeworICAgICAgICAgcCA9IG5ldyBiYXNpY19zdHJpbmdzdHJlYW08
Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPltuXTsKKyAgICAgICB9IGVs
c2UgeworICAgICAgICAgcCA9IG5ldygodm9pZCopIGd2cCkgYmFzaWNfc3RyaW5nc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID5bbl07CisgICAgICAgfQorICAg
ICB9IGVsc2UgeworICAgICAgIGlmICgoZ3ZwID09IEdfX1BWT0lEKSB8fCAoZ3ZwID09IDApKSB7
CisgICAgICAgICBwID0gbmV3IGJhc2ljX3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+LGFsbG9jYXRvcjxjaGFyPiA+OworICAgICAgIH0gZWxzZSB7CisgICAgICAgICBwID0gbmV3
KCh2b2lkKikgZ3ZwKSBiYXNpY19zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixh
bGxvY2F0b3I8Y2hhcj4gPjsKKyAgICAgICB9CisgICAgIH0KKyAgICAgYnJlYWs7CisgICB9Cisg
ICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSBwOworICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpIHA7
CisgICByZXN1bHQ3LT50eXBlID0gJ3UnOworICAgcmVzdWx0Ny0+dGFnbnVtID0gR19fZ2V0X2xp
bmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKTsKKyAgIHJldHVybigxIHx8
IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQg
R19fR19fc3RyZWFtXzMwXzBfMihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVu
Y25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICBiYXNpY19zdHJp
bmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiogcCA9IE5V
TEw7CisgICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOworICAgc3dpdGNoIChsaWJwLT5wYXJhbikg
eworICAgY2FzZSAyOgorICAgICAvL206IDIKKyAgICAgaWYgKChndnAgPT0gR19fUFZPSUQpIHx8
IChndnAgPT0gMCkpIHsKKyAgICAgICBwID0gbmV3IGJhc2ljX3N0cmluZ3N0cmVhbTxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+KCooYmFzaWNfc3RyaW5nc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID46Ol9fc3RyaW5nX3R5cGUqKSBs
aWJwLT5wYXJhWzBdLnJlZiwgKGlvc19iYXNlOjpvcGVubW9kZSkgR19faW50KGxpYnAtPnBhcmFb
MV0pKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBwID0gbmV3KCh2b2lkKikgZ3ZwKSBiYXNpY19z
dHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPigqKGJh
c2ljX3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+
OjpfX3N0cmluZ190eXBlKikgbGlicC0+cGFyYVswXS5yZWYsIChpb3NfYmFzZTo6b3Blbm1vZGUp
IEdfX2ludChsaWJwLT5wYXJhWzFdKSk7CisgICAgIH0KKyAgICAgYnJlYWs7CisgICBjYXNlIDE6
CisgICAgIC8vbTogMQorICAgICBpZiAoKGd2cCA9PSBHX19QVk9JRCkgfHwgKGd2cCA9PSAwKSkg
eworICAgICAgIHAgPSBuZXcgYmFzaWNfc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4sYWxsb2NhdG9yPGNoYXI+ID4oKihiYXNpY19zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlwZSopIGxpYnAtPnBhcmFbMF0u
cmVmKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBwID0gbmV3KCh2b2lkKikgZ3ZwKSBiYXNpY19z
dHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPigqKGJh
c2ljX3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+
OjpfX3N0cmluZ190eXBlKikgbGlicC0+cGFyYVswXS5yZWYpOworICAgICB9CisgICAgIGJyZWFr
OworICAgfQorICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgcDsKKyAgIHJlc3VsdDctPnJlZiA9
IChsb25nKSBwOworICAgcmVzdWx0Ny0+dHlwZSA9ICd1JzsKKyAgIHJlc3VsdDctPnRhZ251bSA9
IEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19zdHJpbmdzdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUik7CisgICBy
ZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitz
dGF0aWMgaW50IEdfX0dfX3N0cmVhbV8zMF8wXzMoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNU
IGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAg
ICAgR19fbGV0aW50KHJlc3VsdDcsIDg1LCAobG9uZykgKChjb25zdCBiYXNpY19zdHJpbmdzdHJl
YW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiopIEdfX2dldHN0cnVj
dG9mZnNldCgpKS0+cmRidWYoKSk7CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8
IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV8zMF8wXzQo
R19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFy
YW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgYmFzaWNfc3Ry
aW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID46Ol9fc3Ry
aW5nX3R5cGUqIHBvYmo7CisgICAgICAgICBjb25zdCBiYXNpY19zdHJpbmdzdHJlYW08Y2hhcixj
aGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlwZSB4b2JqID0g
KChjb25zdCBiYXNpY19zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0
b3I8Y2hhcj4gPiopIEdfX2dldHN0cnVjdG9mZnNldCgpKS0+c3RyKCk7CisgICAgICAgICBwb2Jq
ID0gbmV3IGJhc2ljX3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRv
cjxjaGFyPiA+OjpfX3N0cmluZ190eXBlKHhvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkg
PSAobG9uZykgKCh2b2lkKikgcG9iaik7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSByZXN1bHQ3
LT5vYmouaTsKKyAgICAgICAgIEdfX3N0b3JlX3RlbXBvYmplY3QoKnJlc3VsdDcpOworICAgICAg
fQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsK
K30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fMzBfMF81KEdfX3ZhbHVlKiByZXN1bHQ3LCBH
X19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkK
K3sKKyAgICAgICgoYmFzaWNfc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxs
b2NhdG9yPGNoYXI+ID4qKSBHX19nZXRzdHJ1Y3RvZmZzZXQoKSktPnN0cigqKGJhc2ljX3N0cmlu
Z3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+OjpfX3N0cmlu
Z190eXBlKikgbGlicC0+cGFyYVswXS5yZWYpOworICAgICAgR19fc2V0bnVsbChyZXN1bHQ3KTsK
KyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9
CisKKy8vIGF1dG9tYXRpYyBkZXN0cnVjdG9yCit0eXBlZGVmIGJhc2ljX3N0cmluZ3N0cmVhbTxj
aGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+IEdfX1RiYXNpY19zdHJpbmdz
dHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUjsK
K3N0YXRpYyBpbnQgR19fR19fc3RyZWFtXzMwXzBfNihHX192YWx1ZSogcmVzdWx0NywgR19fQ09O
U1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7Cisg
ICBsb25nIGd2cCA9IEdfX2dldGd2cCgpOworICAgbG9uZyBzb2ZmID0gR19fZ2V0c3RydWN0b2Zm
c2V0KCk7CisgICBpbnQgbiA9IEdfX2dldGFyeWNvbnN0cnVjdCgpOworICAgLy8KKyAgIC8vaGFz
X2FfZGVsZXRlOiAwCisgICAvL2hhc19vd25fZGVsZXRlMWFyZzogMAorICAgLy9oYXNfb3duX2Rl
bGV0ZTJhcmc6IDAKKyAgIC8vCisgICBpZiAoIXNvZmYpIHsKKyAgICAgcmV0dXJuKDEpOworICAg
fQorICAgaWYgKG4pIHsKKyAgICAgaWYgKGd2cCA9PSBHX19QVk9JRCkgeworICAgICAgIGRlbGV0
ZVtdIChiYXNpY19zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8
Y2hhcj4gPiopIHNvZmY7CisgICAgIH0gZWxzZSB7CisgICAgICAgR19fc2V0Z3ZwKEdfX1BWT0lE
KTsKKyAgICAgICBmb3IgKGludCBpID0gbiAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAo
KGJhc2ljX3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFy
PiA+KikgKHNvZmYrKHNpemVvZihiYXNpY19zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxj
aGFyPixhbGxvY2F0b3I8Y2hhcj4gPikqaSkpKS0+fkdfX1RiYXNpY19zdHJpbmdzdHJlYW1sRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUigpOworICAgICAg
IH0KKyAgICAgICBHX19zZXRndnAoZ3ZwKTsKKyAgICAgfQorICAgfSBlbHNlIHsKKyAgICAgaWYg
KGd2cCA9PSBHX19QVk9JRCkgeworICAgICAgIGRlbGV0ZSAoYmFzaWNfc3RyaW5nc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4qKSBzb2ZmOworICAgICB9IGVs
c2UgeworICAgICAgIEdfX3NldGd2cChHX19QVk9JRCk7CisgICAgICAgKChiYXNpY19zdHJpbmdz
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiopIChzb2ZmKSkt
Pn5HX19UYmFzaWNfc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxv
Y2F0b3JsRWNoYXJnUnNQZ1IoKTsKKyAgICAgICBHX19zZXRndnAoZ3ZwKTsKKyAgICAgfQorICAg
fQorICAgR19fc2V0bnVsbChyZXN1bHQ3KTsKKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhh
c2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKKworLyogU2V0dGluZyB1cCBnbG9iYWwgZnVu
Y3Rpb24gKi8KK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtX18wXzAoR19fdmFsdWUqIHJlc3VsdDcs
IEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNo
KQoreworICAgICAgeworICAgICAgICAgY29uc3QgaW9zX2Jhc2UmIG9iaiA9IGRlYygqKGlvc19i
YXNlKikgbGlicC0+cGFyYVswXS5yZWYpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcp
ICgmb2JqKTsKKyAgICAgICAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAg
IH0KKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7
Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtX18wXzEoR19fdmFsdWUqIHJlc3VsdDcsIEdf
X0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQor
eworICAgICAgeworICAgICAgICAgY29uc3QgaW9zX2Jhc2UmIG9iaiA9IGhleCgqKGlvc19iYXNl
KikgbGlicC0+cGFyYVswXS5yZWYpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgm
b2JqKTsKKyAgICAgICAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0K
KyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9
CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtX18wXzIoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NP
TlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQorewor
ICAgICAgeworICAgICAgICAgY29uc3QgaW9zX2Jhc2UmIG9iaiA9IG9jdCgqKGlvc19iYXNlKikg
bGlicC0+cGFyYVswXS5yZWYpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2Jq
KTsKKyAgICAgICAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0KKyAg
IHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisK
K3N0YXRpYyBpbnQgR19fR19fc3RyZWFtX18wXzMoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNU
IGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAg
ICAgeworICAgICAgICAgY29uc3QgaW9zX2Jhc2UmIG9iaiA9IGZpeGVkKCooaW9zX2Jhc2UqKSBs
aWJwLT5wYXJhWzBdLnJlZik7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmop
OworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAg
cmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKwor
c3RhdGljIGludCBHX19HX19zdHJlYW1fXzBfNChHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1Qg
Y2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAg
ICB7CisgICAgICAgICBjb25zdCBpb3NfYmFzZSYgb2JqID0gc2NpZW50aWZpYygqKGlvc19iYXNl
KikgbGlicC0+cGFyYVswXS5yZWYpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgm
b2JqKTsKKyAgICAgICAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0K
KyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9
CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtX18wXzUoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NP
TlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQorewor
ICAgICAgeworICAgICAgICAgY29uc3QgaW9zX2Jhc2UmIG9iaiA9IHJpZ2h0KCooaW9zX2Jhc2Uq
KSBsaWJwLT5wYXJhWzBdLnJlZik7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZv
YmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQor
ICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30K
Kworc3RhdGljIGludCBHX19HX19zdHJlYW1fXzBfNihHX192YWx1ZSogcmVzdWx0NywgR19fQ09O
U1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7Cisg
ICAgICB7CisgICAgICAgICBjb25zdCBpb3NfYmFzZSYgb2JqID0gbGVmdCgqKGlvc19iYXNlKikg
bGlicC0+cGFyYVswXS5yZWYpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2Jq
KTsKKyAgICAgICAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0KKyAg
IHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisK
K3N0YXRpYyBpbnQgR19fR19fc3RyZWFtX18wXzcoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNU
IGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAg
ICAgeworICAgICAgICAgY29uc3QgaW9zX2Jhc2UmIG9iaiA9IGludGVybmFsKCooaW9zX2Jhc2Uq
KSBsaWJwLT5wYXJhWzBdLnJlZik7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZv
YmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQor
ICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30K
Kworc3RhdGljIGludCBHX19HX19zdHJlYW1fXzBfOChHX192YWx1ZSogcmVzdWx0NywgR19fQ09O
U1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7Cisg
ICAgICB7CisgICAgICAgICBjb25zdCBpb3NfYmFzZSYgb2JqID0gbm91cHBlcmNhc2UoKihpb3Nf
YmFzZSopIGxpYnAtPnBhcmFbMF0ucmVmKTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25n
KSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICAg
ICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkg
OworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV9fMF85KEdfX3ZhbHVlKiByZXN1bHQ3LCBH
X19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkK
K3sKKyAgICAgIHsKKyAgICAgICAgIGNvbnN0IGlvc19iYXNlJiBvYmogPSB1cHBlcmNhc2UoKihp
b3NfYmFzZSopIGxpYnAtPnBhcmFbMF0ucmVmKTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChs
b25nKSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7Cisg
ICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGli
cCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV9fMF8xMChHX192YWx1ZSogcmVzdWx0
NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhh
c2gpCit7CisgICAgICB7CisgICAgICAgICBjb25zdCBpb3NfYmFzZSYgb2JqID0gbm9za2lwd3Mo
Kihpb3NfYmFzZSopIGxpYnAtPnBhcmFbMF0ucmVmKTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9
IChsb25nKSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7
CisgICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwg
bGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV9fMF8xMShHX192YWx1ZSogcmVz
dWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50
IGhhc2gpCit7CisgICAgICB7CisgICAgICAgICBjb25zdCBpb3NfYmFzZSYgb2JqID0gc2tpcHdz
KCooaW9zX2Jhc2UqKSBsaWJwLT5wYXJhWzBdLnJlZik7CisgICAgICAgICByZXN1bHQ3LT5yZWYg
PSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmop
OworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8
IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fXzBfMTIoR19fdmFsdWUqIHJl
c3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGlu
dCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgaW9zX2Jhc2UmIG9iaiA9IG5vc2hv
d3BvcygqKGlvc19iYXNlKikgbGlicC0+cGFyYVswXS5yZWYpOworICAgICAgICAgcmVzdWx0Ny0+
cmVmID0gKGxvbmcpICgmb2JqKTsKKyAgICAgICAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgm
b2JqKTsKKyAgICAgIH0KKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0
NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtX18wXzEzKEdfX3ZhbHVl
KiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJw
LCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAgICAgIGNvbnN0IGlvc19iYXNlJiBvYmogPSBz
aG93cG9zKCooaW9zX2Jhc2UqKSBsaWJwLT5wYXJhWzBdLnJlZik7CisgICAgICAgICByZXN1bHQ3
LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykg
KCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1
bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fXzBfMTQoR19fdmFs
dWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxp
YnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgaW9zX2Jhc2UmIG9iaiA9
IG5vc2hvd3BvaW50KCooaW9zX2Jhc2UqKSBsaWJwLT5wYXJhWzBdLnJlZik7CisgICAgICAgICBy
ZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAo
bG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8
fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fXzBfMTUo
R19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFy
YW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgaW9zX2Jhc2Um
IG9iaiA9IHNob3dwb2ludCgqKGlvc19iYXNlKikgbGlicC0+cGFyYVswXS5yZWYpOworICAgICAg
ICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2JqKTsKKyAgICAgICAgIHJlc3VsdDctPm9iai5p
ID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0KKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhh
c2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtX18w
XzE2KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdf
X3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAgICAgIGNvbnN0IGlvc19i
YXNlJiBvYmogPSBub3Nob3diYXNlKCooaW9zX2Jhc2UqKSBsaWJwLT5wYXJhWzBdLnJlZik7Cisg
ICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+
b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUg
fHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJl
YW1fXzBfMTcoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1
Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3Qg
aW9zX2Jhc2UmIG9iaiA9IHNob3diYXNlKCooaW9zX2Jhc2UqKSBsaWJwLT5wYXJhWzBdLnJlZik7
CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0
Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25h
bWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19z
dHJlYW1fXzBfMTgoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBz
dHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29u
c3QgaW9zX2Jhc2UmIG9iaiA9IG5vYm9vbGFscGhhKCooaW9zX2Jhc2UqKSBsaWJwLT5wYXJhWzBd
LnJlZik7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAg
cmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwg
ZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBH
X19HX19zdHJlYW1fXzBfMTkoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNu
YW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAg
ICAgY29uc3QgaW9zX2Jhc2UmIG9iaiA9IGJvb2xhbHBoYSgqKGlvc19iYXNlKikgbGlicC0+cGFy
YVswXS5yZWYpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2JqKTsKKyAgICAg
ICAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0KKyAgIHJldHVybigx
IHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBp
bnQgR19fR19fc3RyZWFtX18wXzIwKEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBm
dW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAg
ICAgICAgIGNvbnN0IGlzdHJlYW0mIG9iaiA9IHdzKCooaXN0cmVhbSopIGxpYnAtPnBhcmFbMF0u
cmVmKTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAgICAgICBy
ZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICAgICB9CisgICByZXR1cm4oMSB8fCBm
dW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdf
X0dfX3N0cmVhbV9fMF8yMShHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25h
bWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAgICAg
ICBjb25zdCBvc3RyZWFtJiBvYmogPSBlbmRsKCoob3N0cmVhbSopIGxpYnAtPnBhcmFbMF0ucmVm
KTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAgICAgICByZXN1
bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5j
bmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0df
X3N0cmVhbV9fMF8yMihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUs
IHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAgICAgICBj
b25zdCBvc3RyZWFtJiBvYmogPSBlbmRzKCoob3N0cmVhbSopIGxpYnAtPnBhcmFbMF0ucmVmKTsK
KyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3
LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFt
ZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0
cmVhbV9fMF8yMyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0
cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAgICAgICBjb25z
dCBvc3RyZWFtJiBvYmogPSBmbHVzaCgqKG9zdHJlYW0qKSBsaWJwLT5wYXJhWzBdLnJlZik7Cisg
ICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+
b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUg
fHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJl
YW1fXzBfMjQoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1
Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3Qg
b3N0cmVhbSYgb2JqID0gb3BlcmF0b3I8PCgqKG9zdHJlYW0qKSBsaWJwLT5wYXJhWzBdLnJlZiwg
KGNoYXIpIEdfX2ludChsaWJwLT5wYXJhWzFdKSk7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAo
bG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOwor
ICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxp
YnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fXzBfMjUoR19fdmFsdWUqIHJlc3Vs
dDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBo
YXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3Qgb3N0cmVhbSYgb2JqID0gb3BlcmF0b3I8
PCgqKG9zdHJlYW0qKSBsaWJwLT5wYXJhWzBdLnJlZiwgKGNoYXIqKSBHX19pbnQobGlicC0+cGFy
YVsxXSkpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2JqKTsKKyAgICAgICAg
IHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0KKyAgIHJldHVybigxIHx8
IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQg
R19fR19fc3RyZWFtX18wXzI2KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5j
bmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAg
ICAgIGNvbnN0IG9zdHJlYW0mIG9iaiA9IG9wZXJhdG9yPDwoKihvc3RyZWFtKikgbGlicC0+cGFy
YVswXS5yZWYsICh2b2lkKikgR19faW50KGxpYnAtPnBhcmFbMV0pKTsKKyAgICAgICAgIHJlc3Vs
dDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25n
KSAoJm9iaik7CisgICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJl
c3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV9fMF8yNyhHX192
YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSog
bGlicCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAgICAgICBjb25zdCBvc3RyZWFtJiBvYmog
PSBvcGVyYXRvcjw8KCoob3N0cmVhbSopIGxpYnAtPnBhcmFbMF0ucmVmLCAodW5zaWduZWQgY2hh
cikgR19faW50KGxpYnAtPnBhcmFbMV0pKTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25n
KSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICAg
ICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkg
OworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV9fMF8yOChHX192YWx1ZSogcmVzdWx0Nywg
R19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gp
Cit7CisgICAgICB7CisgICAgICAgICBjb25zdCBvc3RyZWFtJiBvYmogPSBvcGVyYXRvcjw8KCoo
b3N0cmVhbSopIGxpYnAtPnBhcmFbMF0ucmVmLCAoc2hvcnQpIEdfX2ludChsaWJwLT5wYXJhWzFd
KSk7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVz
dWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVu
Y25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19H
X19zdHJlYW1fXzBfMjkoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1l
LCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAg
Y29uc3Qgb3N0cmVhbSYgb2JqID0gb3BlcmF0b3I8PCgqKG9zdHJlYW0qKSBsaWJwLT5wYXJhWzBd
LnJlZiwgKHVuc2lnbmVkIHNob3J0KSBHX19pbnQobGlicC0+cGFyYVsxXSkpOworICAgICAgICAg
cmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2JqKTsKKyAgICAgICAgIHJlc3VsdDctPm9iai5pID0g
KGxvbmcpICgmb2JqKTsKKyAgICAgIH0KKyAgIHJldHVybigxIHx8IGZ1bmNuYW1lIHx8IGhhc2gg
fHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRpYyBpbnQgR19fR19fc3RyZWFtX18wXzMw
KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFyKiBmdW5jbmFtZSwgc3RydWN0IEdfX3Bh
cmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIHsKKyAgICAgICAgIGNvbnN0IG9zdHJlYW0m
IG9iaiA9IG9wZXJhdG9yPDwoKihvc3RyZWFtKikgbGlicC0+cGFyYVswXS5yZWYsICooaW50Kikg
R19fSW50cmVmKCZsaWJwLT5wYXJhWzFdKSk7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9u
ZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAg
ICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnAp
IDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fXzBfMzEoR19fdmFsdWUqIHJlc3VsdDcs
IEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNo
KQoreworICAgICAgeworICAgICAgICAgY29uc3Qgb3N0cmVhbSYgb2JqID0gb3BlcmF0b3I8PCgq
KG9zdHJlYW0qKSBsaWJwLT5wYXJhWzBdLnJlZiwgKHVuc2lnbmVkIGludCkgR19faW50KGxpYnAt
PnBhcmFbMV0pKTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAg
ICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICAgICB9CisgICByZXR1cm4o
MSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMg
aW50IEdfX0dfX3N0cmVhbV9fMF8zMihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciog
ZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICB7Cisg
ICAgICAgICBjb25zdCBvc3RyZWFtJiBvYmogPSBvcGVyYXRvcjw8KCoob3N0cmVhbSopIGxpYnAt
PnBhcmFbMF0ucmVmLCAobG9uZykgR19faW50KGxpYnAtPnBhcmFbMV0pKTsKKyAgICAgICAgIHJl
c3VsdDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChs
b25nKSAoJm9iaik7CisgICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8
IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV9fMF8zMyhH
X192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJh
bSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAgICAgICBjb25zdCBvc3RyZWFtJiBv
YmogPSBvcGVyYXRvcjw8KCoob3N0cmVhbSopIGxpYnAtPnBhcmFbMF0ucmVmLCAodW5zaWduZWQg
bG9uZykgR19faW50KGxpYnAtPnBhcmFbMV0pKTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChs
b25nKSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7Cisg
ICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGli
cCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV9fMF8zNChHX192YWx1ZSogcmVzdWx0
NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhh
c2gpCit7CisgICAgICB7CisgICAgICAgICBjb25zdCBvc3RyZWFtJiBvYmogPSBvcGVyYXRvcjw8
KCoob3N0cmVhbSopIGxpYnAtPnBhcmFbMF0ucmVmLCAoZmxvYXQpIEdfX2RvdWJsZShsaWJwLT5w
YXJhWzFdKSk7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAg
ICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEg
fHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGlu
dCBHX19HX19zdHJlYW1fXzBfMzUoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1
bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAg
ICAgICAgY29uc3Qgb3N0cmVhbSYgb2JqID0gb3BlcmF0b3I8PCgqKG9zdHJlYW0qKSBsaWJwLT5w
YXJhWzBdLnJlZiwgKGRvdWJsZSkgR19fZG91YmxlKGxpYnAtPnBhcmFbMV0pKTsKKyAgICAgICAg
IHJlc3VsdDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9
IChsb25nKSAoJm9iaik7CisgICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNo
IHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV9fMF8z
NihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19w
YXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAgICAgICBjb25zdCBvc3RyZWFt
JiBvYmogPSBvcGVyYXRvcjw8KCoob3N0cmVhbSopIGxpYnAtPnBhcmFbMF0ucmVmLCAoYm9vbCkg
R19faW50KGxpYnAtPnBhcmFbMV0pKTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25nKSAo
Jm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICAgICB9
CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOwor
fQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV9fMF8zNyhHX192YWx1ZSogcmVzdWx0NywgR19f
Q09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7
CisgICAgICB7CisgICAgICAgICBjb25zdCBpc3RyZWFtJiBvYmogPSBvcGVyYXRvcj4+KCooaXN0
cmVhbSopIGxpYnAtPnBhcmFbMF0ucmVmLCAqKGNoYXIqKSBHX19DaGFycmVmKCZsaWJwLT5wYXJh
WzFdKSk7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAg
cmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwg
ZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBH
X19HX19zdHJlYW1fXzBfMzgoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNu
YW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAg
ICAgY29uc3QgaXN0cmVhbSYgb2JqID0gb3BlcmF0b3I+PigqKGlzdHJlYW0qKSBsaWJwLT5wYXJh
WzBdLnJlZiwgKih1bnNpZ25lZCBjaGFyKikgR19fVUNoYXJyZWYoJmxpYnAtPnBhcmFbMV0pKTsK
KyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3
LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFt
ZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0
cmVhbV9fMF8zOShHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0
cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAgICAgICBjb25z
dCBpc3RyZWFtJiBvYmogPSBvcGVyYXRvcj4+KCooaXN0cmVhbSopIGxpYnAtPnBhcmFbMF0ucmVm
LCAqKHNob3J0KikgR19fU2hvcnRyZWYoJmxpYnAtPnBhcmFbMV0pKTsKKyAgICAgICAgIHJlc3Vs
dDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25n
KSAoJm9iaik7CisgICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJl
c3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV9fMF80MChHX192
YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSog
bGlicCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAgICAgICBjb25zdCBpc3RyZWFtJiBvYmog
PSBvcGVyYXRvcj4+KCooaXN0cmVhbSopIGxpYnAtPnBhcmFbMF0ucmVmLCAqKHVuc2lnbmVkIHNo
b3J0KikgR19fVVNob3J0cmVmKCZsaWJwLT5wYXJhWzFdKSk7CisgICAgICAgICByZXN1bHQ3LT5y
ZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZv
YmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3
IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fXzBfNDEoR19fdmFsdWUq
IHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAs
IGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgaXN0cmVhbSYgb2JqID0gb3Bl
cmF0b3I+PigqKGlzdHJlYW0qKSBsaWJwLT5wYXJhWzBdLnJlZiwgKihpbnQqKSBHX19JbnRyZWYo
JmxpYnAtPnBhcmFbMV0pKTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25nKSAoJm9iaik7
CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICAgICB9CisgICBy
ZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitz
dGF0aWMgaW50IEdfX0dfX3N0cmVhbV9fMF80MihHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1Qg
Y2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAg
ICB7CisgICAgICAgICBjb25zdCBpc3RyZWFtJiBvYmogPSBvcGVyYXRvcj4+KCooaXN0cmVhbSop
IGxpYnAtPnBhcmFbMF0ucmVmLCAqKHVuc2lnbmVkIGludCopIEdfX1VJbnRyZWYoJmxpYnAtPnBh
cmFbMV0pKTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAgICAg
ICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICAgICB9CisgICByZXR1cm4oMSB8
fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50
IEdfX0dfX3N0cmVhbV9fMF80MyhHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVu
Y25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAg
ICAgICBjb25zdCBpc3RyZWFtJiBvYmogPSBvcGVyYXRvcj4+KCooaXN0cmVhbSopIGxpYnAtPnBh
cmFbMF0ucmVmLCAqKGxvbmcqKSBHX19Mb25ncmVmKCZsaWJwLT5wYXJhWzFdKSk7CisgICAgICAg
ICByZXN1bHQ3LT5yZWYgPSAobG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkg
PSAobG9uZykgKCZvYmopOworICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFz
aCB8fCByZXN1bHQ3IHx8IGxpYnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fXzBf
NDQoR19fdmFsdWUqIHJlc3VsdDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19f
cGFyYW0qIGxpYnAsIGludCBoYXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgaXN0cmVh
bSYgb2JqID0gb3BlcmF0b3I+PigqKGlzdHJlYW0qKSBsaWJwLT5wYXJhWzBdLnJlZiwgKih1bnNp
Z25lZCBsb25nKikgR19fVUxvbmdyZWYoJmxpYnAtPnBhcmFbMV0pKTsKKyAgICAgICAgIHJlc3Vs
dDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25n
KSAoJm9iaik7CisgICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJl
c3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV9fMF80NShHX192
YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSog
bGlicCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAgICAgICBjb25zdCBpc3RyZWFtJiBvYmog
PSBvcGVyYXRvcj4+KCooaXN0cmVhbSopIGxpYnAtPnBhcmFbMF0ucmVmLCAqKGZsb2F0KikgR19f
RmxvYXRyZWYoJmxpYnAtPnBhcmFbMV0pKTsKKyAgICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25n
KSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3LT5vYmouaSA9IChsb25nKSAoJm9iaik7CisgICAg
ICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkg
OworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVhbV9fMF80NihHX192YWx1ZSogcmVzdWx0Nywg
R19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVjdCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gp
Cit7CisgICAgICB7CisgICAgICAgICBjb25zdCBpc3RyZWFtJiBvYmogPSBvcGVyYXRvcj4+KCoo
aXN0cmVhbSopIGxpYnAtPnBhcmFbMF0ucmVmLCAqKGRvdWJsZSopIEdfX0RvdWJsZXJlZigmbGli
cC0+cGFyYVsxXSkpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2JqKTsKKyAg
ICAgICAgIHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0KKyAgIHJldHVy
bigxIHx8IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKK3N0YXRp
YyBpbnQgR19fR19fc3RyZWFtX18wXzQ3KEdfX3ZhbHVlKiByZXN1bHQ3LCBHX19DT05TVCBjaGFy
KiBmdW5jbmFtZSwgc3RydWN0IEdfX3BhcmFtKiBsaWJwLCBpbnQgaGFzaCkKK3sKKyAgICAgIHsK
KyAgICAgICAgIGNvbnN0IGlzdHJlYW0mIG9iaiA9IG9wZXJhdG9yPj4oKihpc3RyZWFtKikgbGli
cC0+cGFyYVswXS5yZWYsICooYm9vbCopIEdfX0Jvb2xyZWYoJmxpYnAtPnBhcmFbMV0pKTsKKyAg
ICAgICAgIHJlc3VsdDctPnJlZiA9IChsb25nKSAoJm9iaik7CisgICAgICAgICByZXN1bHQ3LT5v
YmouaSA9IChsb25nKSAoJm9iaik7CisgICAgICB9CisgICByZXR1cm4oMSB8fCBmdW5jbmFtZSB8
fCBoYXNoIHx8IHJlc3VsdDcgfHwgbGlicCkgOworfQorCitzdGF0aWMgaW50IEdfX0dfX3N0cmVh
bV9fMF80OChHX192YWx1ZSogcmVzdWx0NywgR19fQ09OU1QgY2hhciogZnVuY25hbWUsIHN0cnVj
dCBHX19wYXJhbSogbGlicCwgaW50IGhhc2gpCit7CisgICAgICB7CisgICAgICAgICBjb25zdCBp
c3RyZWFtJiBvYmogPSBvcGVyYXRvcj4+KCooaXN0cmVhbSopIGxpYnAtPnBhcmFbMF0ucmVmLCAo
Y2hhciopIEdfX2ludChsaWJwLT5wYXJhWzFdKSk7CisgICAgICAgICByZXN1bHQ3LT5yZWYgPSAo
bG9uZykgKCZvYmopOworICAgICAgICAgcmVzdWx0Ny0+b2JqLmkgPSAobG9uZykgKCZvYmopOwor
ICAgICAgfQorICAgcmV0dXJuKDEgfHwgZnVuY25hbWUgfHwgaGFzaCB8fCByZXN1bHQ3IHx8IGxp
YnApIDsKK30KKworc3RhdGljIGludCBHX19HX19zdHJlYW1fXzBfNDkoR19fdmFsdWUqIHJlc3Vs
dDcsIEdfX0NPTlNUIGNoYXIqIGZ1bmNuYW1lLCBzdHJ1Y3QgR19fcGFyYW0qIGxpYnAsIGludCBo
YXNoKQoreworICAgICAgeworICAgICAgICAgY29uc3QgaXN0cmVhbSYgb2JqID0gb3BlcmF0b3I+
PigqKGlzdHJlYW0qKSBsaWJwLT5wYXJhWzBdLnJlZiwgbGlicC0+cGFyYVsxXS5yZWYgPyAqKHZv
aWQqKikgbGlicC0+cGFyYVsxXS5yZWYgOiAqKHZvaWQqKikgKCZHX19NbG9uZyhsaWJwLT5wYXJh
WzFdKSkpOworICAgICAgICAgcmVzdWx0Ny0+cmVmID0gKGxvbmcpICgmb2JqKTsKKyAgICAgICAg
IHJlc3VsdDctPm9iai5pID0gKGxvbmcpICgmb2JqKTsKKyAgICAgIH0KKyAgIHJldHVybigxIHx8
IGZ1bmNuYW1lIHx8IGhhc2ggfHwgcmVzdWx0NyB8fCBsaWJwKSA7Cit9CisKKworLyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBNZW1i
ZXIgZnVuY3Rpb24gU3R1YgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqLworCisvKiBtYnN0YXRlX3QgKi8KKworLyogc3RyZWFtb2ZmICov
CisKKy8qIGZwb3M8bWJzdGF0ZV90PiAqLworCisvKiBpb3NfYmFzZSAqLworCisvKiBpb3NfYmFz
ZTo6SW5pdCAqLworCisvKiBjaGFyX3RyYWl0czxjaGFyPiAqLworCisvKiBiYXNpY19pc3RyZWFt
PGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqLworCisvKiBiYXNpY19pb3M8Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPiA+ICovCisKKy8qIGJhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+ID4gKi8KKworLyogYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKi8K
KworLyogYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OnNlbnRyeSAqLwor
CisvKiBiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6c2VudHJ5ICovCisK
Ky8qIGJhc2ljX2ZpbGVidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+ICovCisKKy8qIGJhc2lj
X2lmc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqLworCisvKiBiYXNpY19vZnN0cmVh
bTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKi8KKworLyogYmFzaWNfZnN0cmVhbTxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID4gKi8KKworLyogYmFzaWNfaW9zdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+ICovCisKKy8qIGJhc2ljX3N0cmluZ2J1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+
LGFsbG9jYXRvcjxjaGFyPiA+ICovCisKKy8qIGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFy
X3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiAqLworCisvKiBiYXNpY19vc3RyaW5nc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4gKi8KKworLyogYmFz
aWNfc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4g
Ki8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgorKiBHbG9iYWwgZnVuY3Rpb24gU3R1YgorKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIEdldCBzaXplIG9mIHBv
aW50ZXIgdG8gbWVtYmVyIGZ1bmN0aW9uCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKiovCitjbGFzcyBHX19TaXplcDJtZW1mdW5jR19fc3Ry
ZWFtIHsKKyBwdWJsaWM6CisgIEdfX1NpemVwMm1lbWZ1bmNHX19zdHJlYW0oKTogcCgmR19fU2l6
ZXAybWVtZnVuY0dfX3N0cmVhbTo6c2l6ZXAybWVtZnVuYykge30KKyAgICBzaXplX3Qgc2l6ZXAy
bWVtZnVuYygpIHsgcmV0dXJuKHNpemVvZihwKSk7IH0KKyAgcHJpdmF0ZToKKyAgICBzaXplX3Qg
KEdfX1NpemVwMm1lbWZ1bmNHX19zdHJlYW06OipwKSgpOworfTsKKworc2l6ZV90IEdfX2dldF9z
aXplcDJtZW1mdW5jR19fc3RyZWFtKCkKK3sKKyAgR19fU2l6ZXAybWVtZnVuY0dfX3N0cmVhbSBh
OworICBHX19zZXRzaXplcDJtZW1mdW5jKChpbnQpYS5zaXplcDJtZW1mdW5jKCkpOworICByZXR1
cm4oKHNpemVfdClhLnNpemVwMm1lbWZ1bmMoKSk7Cit9CisKKworLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiB2aXJ0dWFsIGJhc2Ug
Y2xhc3Mgb2Zmc2V0IGNhbGN1bGF0aW9uIGludGVyZmFjZQorKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisgICAvKiBTZXR0aW5nIHVw
IGNsYXNzIGluaGVyaXRhbmNlICovCitzdGF0aWMgbG9uZyBHX18ydmJvX2Jhc2ljX2lzdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSX2Jhc2ljX2lvc2xFY2hhcmNPY2hhcl90cmFp
dHNsRWNoYXJnUnNQZ1JfMChsb25nIHBvYmplY3QpIHsKKyAgYmFzaWNfaXN0cmVhbTxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID4gKkdfX0xkZXJpdmVkPShiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPiAqR19fTGJhc2U9R19fTGRlcml2ZWQ7CisgIHJldHVybigobG9uZylHX19MYmFzZS0obG9u
ZylHX19MZGVyaXZlZCk7Cit9CisKK3N0YXRpYyBsb25nIEdfXzJ2Ym9fYmFzaWNfaXN0cmVhbWxF
Y2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JfaW9zX2Jhc2VfMShsb25nIHBvYmplY3QpIHsK
KyAgYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKkdfX0xkZXJpdmVkPShi
YXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgaW9zX2Jh
c2UgKkdfX0xiYXNlPUdfX0xkZXJpdmVkOworICByZXR1cm4oKGxvbmcpR19fTGJhc2UtKGxvbmcp
R19fTGRlcml2ZWQpOworfQorCitzdGF0aWMgbG9uZyBHX18ydmJvX2Jhc2ljX29zdHJlYW1sRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSX2Jhc2ljX2lvc2xFY2hhcmNPY2hhcl90cmFpdHNs
RWNoYXJnUnNQZ1JfMChsb25nIHBvYmplY3QpIHsKKyAgYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+ID4gKkdfX0xkZXJpdmVkPShiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PiAqR19fTGJhc2U9R19fTGRlcml2ZWQ7CisgIHJldHVybigobG9uZylHX19MYmFzZS0obG9uZylH
X19MZGVyaXZlZCk7Cit9CisKK3N0YXRpYyBsb25nIEdfXzJ2Ym9fYmFzaWNfb3N0cmVhbWxFY2hh
cmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JfaW9zX2Jhc2VfMShsb25nIHBvYmplY3QpIHsKKyAg
YmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKkdfX0xkZXJpdmVkPShiYXNp
Y19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgaW9zX2Jhc2Ug
KkdfX0xiYXNlPUdfX0xkZXJpdmVkOworICByZXR1cm4oKGxvbmcpR19fTGJhc2UtKGxvbmcpR19f
TGRlcml2ZWQpOworfQorCitzdGF0aWMgbG9uZyBHX18ydmJvX2Jhc2ljX2lmc3RyZWFtbEVjaGFy
Y09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSXzEobG9uZyBwb2JqZWN0KSB7CisgIGJhc2ljX2lmc3RyZWFtPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4gPiAqR19fTGRlcml2ZWQ9KGJhc2ljX2lmc3RyZWFtPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PiAqR19fTGJhc2U9R19fTGRlcml2ZWQ7CisgIHJldHVybigobG9uZylHX19MYmFzZS0obG9uZylH
X19MZGVyaXZlZCk7Cit9CisKK3N0YXRpYyBsb25nIEdfXzJ2Ym9fYmFzaWNfaWZzdHJlYW1sRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSX2lvc19iYXNlXzIobG9uZyBwb2JqZWN0KSB7Cisg
IGJhc2ljX2lmc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqR19fTGRlcml2ZWQ9KGJh
c2ljX2lmc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgaW9zX2Jh
c2UgKkdfX0xiYXNlPUdfX0xkZXJpdmVkOworICByZXR1cm4oKGxvbmcpR19fTGJhc2UtKGxvbmcp
R19fTGRlcml2ZWQpOworfQorCitzdGF0aWMgbG9uZyBHX18ydmJvX2Jhc2ljX29mc3RyZWFtbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRz
bEVjaGFyZ1JzUGdSXzEobG9uZyBwb2JqZWN0KSB7CisgIGJhc2ljX29mc3RyZWFtPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4gPiAqR19fTGRlcml2ZWQ9KGJhc2ljX29mc3RyZWFtPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPiAqR19fTGJhc2U9R19fTGRlcml2ZWQ7CisgIHJldHVybigobG9uZylHX19MYmFzZS0obG9u
ZylHX19MZGVyaXZlZCk7Cit9CisKK3N0YXRpYyBsb25nIEdfXzJ2Ym9fYmFzaWNfb2ZzdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSX2lvc19iYXNlXzIobG9uZyBwb2JqZWN0KSB7
CisgIGJhc2ljX29mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqR19fTGRlcml2ZWQ9
KGJhc2ljX29mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgaW9z
X2Jhc2UgKkdfX0xiYXNlPUdfX0xkZXJpdmVkOworICByZXR1cm4oKGxvbmcpR19fTGJhc2UtKGxv
bmcpR19fTGRlcml2ZWQpOworfQorCitzdGF0aWMgbG9uZyBHX18ydmJvX2Jhc2ljX2ZzdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSX2Jhc2ljX2lvc2xFY2hhcmNPY2hhcl90cmFp
dHNsRWNoYXJnUnNQZ1JfMihsb25nIHBvYmplY3QpIHsKKyAgYmFzaWNfZnN0cmVhbTxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID4gKkdfX0xkZXJpdmVkPShiYXNpY19mc3RyZWFtPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPiAqR19fTGJhc2U9R19fTGRlcml2ZWQ7CisgIHJldHVybigobG9uZylHX19MYmFzZS0obG9u
ZylHX19MZGVyaXZlZCk7Cit9CisKK3N0YXRpYyBsb25nIEdfXzJ2Ym9fYmFzaWNfZnN0cmVhbWxF
Y2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JfaW9zX2Jhc2VfMyhsb25nIHBvYmplY3QpIHsK
KyAgYmFzaWNfZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKkdfX0xkZXJpdmVkPShi
YXNpY19mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgaW9zX2Jh
c2UgKkdfX0xiYXNlPUdfX0xkZXJpdmVkOworICByZXR1cm4oKGxvbmcpR19fTGJhc2UtKGxvbmcp
R19fTGRlcml2ZWQpOworfQorCitzdGF0aWMgbG9uZyBHX18ydmJvX2Jhc2ljX2ZzdHJlYW1sRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSX2Jhc2ljX2lvc2xFY2hhcmNPY2hhcl90cmFpdHNs
RWNoYXJnUnNQZ1JfNShsb25nIHBvYmplY3QpIHsKKyAgYmFzaWNfZnN0cmVhbTxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+ID4gKkdfX0xkZXJpdmVkPShiYXNpY19mc3RyZWFtPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PiAqR19fTGJhc2U9R19fTGRlcml2ZWQ7CisgIHJldHVybigobG9uZylHX19MYmFzZS0obG9uZylH
X19MZGVyaXZlZCk7Cit9CisKK3N0YXRpYyBsb25nIEdfXzJ2Ym9fYmFzaWNfZnN0cmVhbWxFY2hh
cmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JfaW9zX2Jhc2VfNihsb25nIHBvYmplY3QpIHsKKyAg
YmFzaWNfZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKkdfX0xkZXJpdmVkPShiYXNp
Y19mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgaW9zX2Jhc2Ug
KkdfX0xiYXNlPUdfX0xkZXJpdmVkOworICByZXR1cm4oKGxvbmcpR19fTGJhc2UtKGxvbmcpR19f
TGRlcml2ZWQpOworfQorCitzdGF0aWMgbG9uZyBHX18ydmJvX2Jhc2ljX2lvc3RyZWFtbEVjaGFy
Y09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSXzEobG9uZyBwb2JqZWN0KSB7CisgIGJhc2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4gPiAqR19fTGRlcml2ZWQ9KGJhc2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PiAqR19fTGJhc2U9R19fTGRlcml2ZWQ7CisgIHJldHVybigobG9uZylHX19MYmFzZS0obG9uZylH
X19MZGVyaXZlZCk7Cit9CisKK3N0YXRpYyBsb25nIEdfXzJ2Ym9fYmFzaWNfaW9zdHJlYW1sRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSX2lvc19iYXNlXzIobG9uZyBwb2JqZWN0KSB7Cisg
IGJhc2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqR19fTGRlcml2ZWQ9KGJh
c2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgaW9zX2Jh
c2UgKkdfX0xiYXNlPUdfX0xkZXJpdmVkOworICByZXR1cm4oKGxvbmcpR19fTGJhc2UtKGxvbmcp
R19fTGRlcml2ZWQpOworfQorCitzdGF0aWMgbG9uZyBHX18ydmJvX2Jhc2ljX2lvc3RyZWFtbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRz
bEVjaGFyZ1JzUGdSXzQobG9uZyBwb2JqZWN0KSB7CisgIGJhc2ljX2lvc3RyZWFtPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4gPiAqR19fTGRlcml2ZWQ9KGJhc2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPiAqR19fTGJhc2U9R19fTGRlcml2ZWQ7CisgIHJldHVybigobG9uZylHX19MYmFzZS0obG9u
ZylHX19MZGVyaXZlZCk7Cit9CisKK3N0YXRpYyBsb25nIEdfXzJ2Ym9fYmFzaWNfaW9zdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSX2lvc19iYXNlXzUobG9uZyBwb2JqZWN0KSB7
CisgIGJhc2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqR19fTGRlcml2ZWQ9
KGJhc2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopcG9iamVjdDsKKyAgaW9z
X2Jhc2UgKkdfX0xiYXNlPUdfX0xkZXJpdmVkOworICByZXR1cm4oKGxvbmcpR19fTGJhc2UtKGxv
bmcpR19fTGRlcml2ZWQpOworfQorCitzdGF0aWMgbG9uZyBHX18ydmJvX2Jhc2ljX2lzdHJpbmdz
dHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUl9i
YXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSXzEobG9uZyBwb2JqZWN0KSB7
CisgIGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8
Y2hhcj4gPiAqR19fTGRlcml2ZWQ9KGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiopcG9iamVjdDsKKyAgYmFzaWNfaW9zPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4gPiAqR19fTGJhc2U9R19fTGRlcml2ZWQ7CisgIHJldHVybigobG9uZylH
X19MYmFzZS0obG9uZylHX19MZGVyaXZlZCk7Cit9CisKK3N0YXRpYyBsb25nIEdfXzJ2Ym9fYmFz
aWNfaXN0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVj
aGFyZ1JzUGdSX2lvc19iYXNlXzIobG9uZyBwb2JqZWN0KSB7CisgIGJhc2ljX2lzdHJpbmdzdHJl
YW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiAqR19fTGRlcml2ZWQ9
KGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hh
cj4gPiopcG9iamVjdDsKKyAgaW9zX2Jhc2UgKkdfX0xiYXNlPUdfX0xkZXJpdmVkOworICByZXR1
cm4oKGxvbmcpR19fTGJhc2UtKGxvbmcpR19fTGRlcml2ZWQpOworfQorCitzdGF0aWMgbG9uZyBH
X18ydmJvX2Jhc2ljX29zdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2Fs
bG9jYXRvcmxFY2hhcmdSc1BnUl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1Jz
UGdSXzEobG9uZyBwb2JqZWN0KSB7CisgIGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiAqR19fTGRlcml2ZWQ9KGJhc2ljX29zdHJpbmdz
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiopcG9iamVjdDsK
KyAgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqR19fTGJhc2U9R19fTGRlcml2
ZWQ7CisgIHJldHVybigobG9uZylHX19MYmFzZS0obG9uZylHX19MZGVyaXZlZCk7Cit9CisKK3N0
YXRpYyBsb25nIEdfXzJ2Ym9fYmFzaWNfb3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNs
RWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSX2lvc19iYXNlXzIobG9uZyBwb2JqZWN0KSB7
CisgIGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8
Y2hhcj4gPiAqR19fTGRlcml2ZWQ9KGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiopcG9iamVjdDsKKyAgaW9zX2Jhc2UgKkdfX0xiYXNl
PUdfX0xkZXJpdmVkOworICByZXR1cm4oKGxvbmcpR19fTGJhc2UtKGxvbmcpR19fTGRlcml2ZWQp
OworfQorCitzdGF0aWMgbG9uZyBHX18ydmJvX2Jhc2ljX3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSX2Jhc2ljX2lvc2xFY2hhcmNP
Y2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JfMihsb25nIHBvYmplY3QpIHsKKyAgYmFzaWNfc3RyaW5n
c3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4gKkdfX0xkZXJp
dmVkPShiYXNpY19zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8
Y2hhcj4gPiopcG9iamVjdDsKKyAgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAq
R19fTGJhc2U9R19fTGRlcml2ZWQ7CisgIHJldHVybigobG9uZylHX19MYmFzZS0obG9uZylHX19M
ZGVyaXZlZCk7Cit9CisKK3N0YXRpYyBsb25nIEdfXzJ2Ym9fYmFzaWNfc3RyaW5nc3RyZWFtbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1JfaW9zX2Jhc2Vf
Myhsb25nIHBvYmplY3QpIHsKKyAgYmFzaWNfc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4gKkdfX0xkZXJpdmVkPShiYXNpY19zdHJpbmdzdHJlYW08
Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiopcG9iamVjdDsKKyAgaW9z
X2Jhc2UgKkdfX0xiYXNlPUdfX0xkZXJpdmVkOworICByZXR1cm4oKGxvbmcpR19fTGJhc2UtKGxv
bmcpR19fTGRlcml2ZWQpOworfQorCitzdGF0aWMgbG9uZyBHX18ydmJvX2Jhc2ljX3N0cmluZ3N0
cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSX2Jh
c2ljX2lvc2xFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JfNShsb25nIHBvYmplY3QpIHsK
KyAgYmFzaWNfc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNo
YXI+ID4gKkdfX0xkZXJpdmVkPShiYXNpY19zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxj
aGFyPixhbGxvY2F0b3I8Y2hhcj4gPiopcG9iamVjdDsKKyAgYmFzaWNfaW9zPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4gPiAqR19fTGJhc2U9R19fTGRlcml2ZWQ7CisgIHJldHVybigobG9uZylHX19M
YmFzZS0obG9uZylHX19MZGVyaXZlZCk7Cit9CisKK3N0YXRpYyBsb25nIEdfXzJ2Ym9fYmFzaWNf
c3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJn
UnNQZ1JfaW9zX2Jhc2VfNihsb25nIHBvYmplY3QpIHsKKyAgYmFzaWNfc3RyaW5nc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4gKkdfX0xkZXJpdmVkPShiYXNp
Y19zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiop
cG9iamVjdDsKKyAgaW9zX2Jhc2UgKkdfX0xiYXNlPUdfX0xkZXJpdmVkOworICByZXR1cm4oKGxv
bmcpR19fTGJhc2UtKGxvbmcpR19fTGRlcml2ZWQpOworfQorCisKKy8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogSW5oZXJpdGFuY2Ug
aW5mb3JtYXRpb24gc2V0dXAvCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKiovCitleHRlcm4gIkMiIHZvaWQgR19fY3BwX3NldHVwX2luaGVy
aXRhbmNlR19fc3RyZWFtKCkgeworCisgICAvKiBTZXR0aW5nIHVwIGNsYXNzIGluaGVyaXRhbmNl
ICovCisgICBpZigwPT1HX19nZXRudW1iYXNlY2xhc3MoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdf
X0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdS
KSkpIHsKKyAgICAgeworICAgICAgIEdfX2luaGVyaXRhbmNlX3NldHVwKEdfX2dldF9saW5rZWRf
dGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUiksR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lv
c2xFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLChsb25nKUdfXzJ2Ym9fYmFzaWNfaXN0
cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JfYmFzaWNfaW9zbEVjaGFyY09jaGFy
X3RyYWl0c2xFY2hhcmdSc1BnUl8wLDEsMyk7CisgICAgIH0KKyAgICAgeworICAgICAgIEdfX2lu
aGVyaXRhbmNlX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNp
Y19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksR19fZ2V0X2xpbmtlZF90
YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlKSwobG9uZylHX18ydmJvX2Jhc2ljX2lzdHJl
YW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSX2lvc19iYXNlXzEsMSw2KTsKKyAgICAg
fQorICAgfQorICAgaWYoMD09R19fZ2V0bnVtYmFzZWNsYXNzKEdfX2dldF9saW5rZWRfdGFnbnVt
KCZHX19HX19zdHJlYW1MTl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdS
KSkpIHsKKyAgICAgYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqR19fTGRlcml2
ZWQ7CisgICAgIEdfX0xkZXJpdmVkPShiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+
KikweDEwMDA7CisgICAgIHsKKyAgICAgICBpb3NfYmFzZSAqR19fTHBiYXNlPShpb3NfYmFzZSop
R19fTGRlcml2ZWQ7CisgICAgICAgR19faW5oZXJpdGFuY2Vfc2V0dXAoR19fZ2V0X2xpbmtlZF90
YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lvc2xFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJn
UnNQZ1IpLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9pb3NfYmFzZSksKGxv
bmcpR19fTHBiYXNlLShsb25nKUdfX0xkZXJpdmVkLDEsMSk7CisgICAgIH0KKyAgIH0KKyAgIGlm
KDA9PUdfX2dldG51bWJhc2VjbGFzcyhHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFt
TE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpKSkgeworICAg
ICB7CisgICAgICAgR19faW5oZXJpdGFuY2Vfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdf
X0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdS
KSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaW9zbEVjaGFyY09j
aGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksKGxvbmcpR19fMnZib19iYXNpY19vc3RyZWFtbEVjaGFy
Y09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSXzAsMSwzKTsKKyAgICAgfQorICAgICB7CisgICAgICAgR19faW5oZXJpdGFuY2Vf
c2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19f
R19fc3RyZWFtTE5faW9zX2Jhc2UpLChsb25nKUdfXzJ2Ym9fYmFzaWNfb3N0cmVhbWxFY2hhcmNP
Y2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JfaW9zX2Jhc2VfMSwxLDYpOworICAgICB9CisgICB9Cisg
ICBpZigwPT1HX19nZXRudW1iYXNlY2xhc3MoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0
cmVhbUxOX2Jhc2ljX2ZpbGVidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSkpIHsK
KyAgICAgYmFzaWNfZmlsZWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKkdfX0xkZXJpdmVk
OworICAgICBHX19MZGVyaXZlZD0oYmFzaWNfZmlsZWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+
ID4qKTB4MTAwMDsKKyAgICAgeworICAgICAgIGJhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJh
aXRzPGNoYXI+ID4gKkdfX0xwYmFzZT0oYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4gPiopR19fTGRlcml2ZWQ7CisgICAgICAgR19faW5oZXJpdGFuY2Vfc2V0dXAoR19fZ2V0
X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2ZpbGVidWZsRWNoYXJjT2NoYXJf
dHJhaXRzbEVjaGFyZ1JzUGdSKSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5f
YmFzaWNfc3RyZWFtYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksKGxvbmcpR19f
THBiYXNlLShsb25nKUdfX0xkZXJpdmVkLDEsMSk7CisgICAgIH0KKyAgIH0KKyAgIGlmKDA9PUdf
X2dldG51bWJhc2VjbGFzcyhHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFz
aWNfaWZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSkpIHsKKyAgICAgYmFz
aWNfaWZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+ICpHX19MZGVyaXZlZDsKKyAgICAg
R19fTGRlcml2ZWQ9KGJhc2ljX2lmc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopMHgx
MDAwOworICAgICB7CisgICAgICAgYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+
ID4gKkdfX0xwYmFzZT0oYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKUdf
X0xkZXJpdmVkOworICAgICAgIEdfX2luaGVyaXRhbmNlX3NldHVwKEdfX2dldF9saW5rZWRfdGFn
bnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNo
YXJnUnNQZ1IpLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3Ry
ZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksKGxvbmcpR19fTHBiYXNlLShsb25n
KUdfX0xkZXJpdmVkLDEsMSk7CisgICAgIH0KKyAgICAgeworICAgICAgIEdfX2luaGVyaXRhbmNl
X3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pZnN0cmVh
bWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLEdfX2dldF9saW5rZWRfdGFnbnVtKCZH
X19HX19zdHJlYW1MTl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwo
bG9uZylHX18ydmJvX2Jhc2ljX2lmc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1Bn
Ul9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSXzEsMSwyKTsKKyAgICAg
fQorICAgICB7CisgICAgICAgR19faW5oZXJpdGFuY2Vfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdu
dW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lmc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hh
cmdSc1BnUiksR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlKSwo
bG9uZylHX18ydmJvX2Jhc2ljX2lmc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1Bn
Ul9pb3NfYmFzZV8yLDEsNik7CisgICAgIH0KKyAgIH0KKyAgIGlmKDA9PUdfX2dldG51bWJhc2Vj
bGFzcyhHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb2ZzdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSkpIHsKKyAgICAgYmFzaWNfb2ZzdHJlYW08
Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+ICpHX19MZGVyaXZlZDsKKyAgICAgR19fTGRlcml2ZWQ9
KGJhc2ljX29mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopMHgxMDAwOworICAgICB7
CisgICAgICAgYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKkdfX0xwYmFz
ZT0oYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKUdfX0xkZXJpdmVkOwor
ICAgICAgIEdfX2luaGVyaXRhbmNlX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19z
dHJlYW1MTl9iYXNpY19vZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLEdf
X2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vc3RyZWFtbEVjaGFyY09j
aGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksKGxvbmcpR19fTHBiYXNlLShsb25nKUdfX0xkZXJpdmVk
LDEsMSk7CisgICAgIH0KKyAgICAgeworICAgICAgIEdfX2luaGVyaXRhbmNlX3NldHVwKEdfX2dl
dF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vZnN0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1IpLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1M
Tl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwobG9uZylHX18ydmJv
X2Jhc2ljX29mc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUl9iYXNpY19pb3Ns
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSXzEsMSwyKTsKKyAgICAgfQorICAgICB7Cisg
ICAgICAgR19faW5oZXJpdGFuY2Vfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0
cmVhbUxOX2Jhc2ljX29mc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksR19f
Z2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlKSwobG9uZylHX18ydmJv
X2Jhc2ljX29mc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUl9pb3NfYmFzZV8y
LDEsNik7CisgICAgIH0KKyAgIH0KKyAgIGlmKDA9PUdfX2dldG51bWJhc2VjbGFzcyhHX19nZXRf
bGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfZnN0cmVhbWxFY2hhcmNPY2hhcl90
cmFpdHNsRWNoYXJnUnNQZ1IpKSkgeworICAgICBiYXNpY19mc3RyZWFtPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4gPiAqR19fTGRlcml2ZWQ7CisgICAgIEdfX0xkZXJpdmVkPShiYXNpY19mc3RyZWFt
PGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopMHgxMDAwOworICAgICB7CisgICAgICAgYmFzaWNf
aW9zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+ICpHX19McGJhc2U9KGJhc2ljX2lvc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopR19fTGRlcml2ZWQ7CisgICAgICAgR19faW5o
ZXJpdGFuY2Vfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2lj
X2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSxHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaW9zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSKSwobG9uZylHX19McGJhc2UtKGxvbmcpR19fTGRlcml2ZWQsMSwxKTsKKyAgICAg
fQorICAgICB7CisgICAgICAgYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4g
KkdfX0xwYmFzZT0oYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKUdfX0xk
ZXJpdmVkOworICAgICAgIEdfX2luaGVyaXRhbmNlX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVt
KCZHX19HX19zdHJlYW1MTl9iYXNpY19mc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdS
c1BnUiksR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwobG9uZylHX19McGJhc2UtKGxvbmcpR19f
TGRlcml2ZWQsMSwwKTsKKyAgICAgfQorICAgICB7CisgICAgICAgR19faW5oZXJpdGFuY2Vfc2V0
dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2ZzdHJlYW1sRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19f
c3RyZWFtTE5fYmFzaWNfaW9zbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksKGxvbmcp
R19fMnZib19iYXNpY19mc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUl9iYXNp
Y19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSXzIsMSwyKTsKKyAgICAgfQorICAg
ICB7CisgICAgICAgR19faW5oZXJpdGFuY2Vfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdf
X0dfX3N0cmVhbUxOX2Jhc2ljX2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdS
KSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2UpLChsb25nKUdf
XzJ2Ym9fYmFzaWNfZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JfaW9zX2Jh
c2VfMywxLDYpOworICAgICB9CisgICAgIHsKKyAgICAgICBiYXNpY19vc3RyZWFtPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4gPiAqR19fTHBiYXNlPShiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4gPiopR19fTGRlcml2ZWQ7CisgICAgICAgR19faW5oZXJpdGFuY2Vfc2V0dXAoR19f
Z2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2ZzdHJlYW1sRWNoYXJjT2No
YXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFt
TE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLChsb25nKUdf
X0xwYmFzZS0obG9uZylHX19MZGVyaXZlZCwxLDApOworICAgICB9CisgICAgIHsKKyAgICAgICBH
X19pbmhlcml0YW5jZV9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5f
YmFzaWNfZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLEdfX2dldF9saW5r
ZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSKSwobG9uZylHX18ydmJvX2Jhc2ljX2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRz
bEVjaGFyZ1JzUGdSX2Jhc2ljX2lvc2xFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JfNSwx
LDIpOworICAgICB9CisgICAgIHsKKyAgICAgICBHX19pbmhlcml0YW5jZV9zZXR1cChHX19nZXRf
bGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfZnN0cmVhbWxFY2hhcmNPY2hhcl90
cmFpdHNsRWNoYXJnUnNQZ1IpLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9p
b3NfYmFzZSksKGxvbmcpR19fMnZib19iYXNpY19mc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUl9pb3NfYmFzZV82LDEsNik7CisgICAgIH0KKyAgIH0KKyAgIGlmKDA9PUdfX2dl
dG51bWJhc2VjbGFzcyhHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNf
aW9zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSkpIHsKKyAgICAgYmFzaWNf
aW9zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+ICpHX19MZGVyaXZlZDsKKyAgICAgR19f
TGRlcml2ZWQ9KGJhc2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopMHgxMDAw
OworICAgICB7CisgICAgICAgYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4g
KkdfX0xwYmFzZT0oYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKUdfX0xk
ZXJpdmVkOworICAgICAgIEdfX2luaGVyaXRhbmNlX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVt
KCZHX19HX19zdHJlYW1MTl9iYXNpY19pb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJn
UnNQZ1IpLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyZWFt
bEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksKGxvbmcpR19fTHBiYXNlLShsb25nKUdf
X0xkZXJpdmVkLDEsMSk7CisgICAgIH0KKyAgICAgeworICAgICAgIEdfX2luaGVyaXRhbmNlX3Nl
dHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pb3N0cmVhbWxF
Y2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19H
X19zdHJlYW1MTl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwobG9u
ZylHX18ydmJvX2Jhc2ljX2lvc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUl9i
YXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSXzEsMSwyKTsKKyAgICAgfQor
ICAgICB7CisgICAgICAgR19faW5oZXJpdGFuY2Vfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0o
JkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lvc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdS
c1BnUiksR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlKSwobG9u
ZylHX18ydmJvX2Jhc2ljX2lvc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUl9p
b3NfYmFzZV8yLDEsNik7CisgICAgIH0KKyAgICAgeworICAgICAgIGJhc2ljX29zdHJlYW08Y2hh
cixjaGFyX3RyYWl0czxjaGFyPiA+ICpHX19McGJhc2U9KGJhc2ljX29zdHJlYW08Y2hhcixjaGFy
X3RyYWl0czxjaGFyPiA+KilHX19MZGVyaXZlZDsKKyAgICAgICBHX19pbmhlcml0YW5jZV9zZXR1
cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaW9zdHJlYW1sRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19f
c3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLChs
b25nKUdfX0xwYmFzZS0obG9uZylHX19MZGVyaXZlZCwxLDEpOworICAgICB9CisgICAgIHsKKyAg
ICAgICBHX19pbmhlcml0YW5jZV9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3Ry
ZWFtTE5fYmFzaWNfaW9zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSxHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaW9zbEVjaGFyY09jaGFyX3Ry
YWl0c2xFY2hhcmdSc1BnUiksKGxvbmcpR19fMnZib19iYXNpY19pb3N0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1JfYmFzaWNfaW9zbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdS
c1BnUl80LDEsMik7CisgICAgIH0KKyAgICAgeworICAgICAgIEdfX2luaGVyaXRhbmNlX3NldHVw
KEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pb3N0cmVhbWxFY2hh
cmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19z
dHJlYW1MTl9pb3NfYmFzZSksKGxvbmcpR19fMnZib19iYXNpY19pb3N0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1JfaW9zX2Jhc2VfNSwxLDYpOworICAgICB9CisgICB9CisgICBp
ZigwPT1HX19nZXRudW1iYXNlY2xhc3MoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVh
bUxOX2Jhc2ljX3N0cmluZ2J1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9y
bEVjaGFyZ1JzUGdSKSkpIHsKKyAgICAgYmFzaWNfc3RyaW5nYnVmPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4gKkdfX0xkZXJpdmVkOworICAgICBHX19MZGVyaXZlZD0o
YmFzaWNfc3RyaW5nYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4q
KTB4MTAwMDsKKyAgICAgeworICAgICAgIGJhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRz
PGNoYXI+ID4gKkdfX0xwYmFzZT0oYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPiopR19fTGRlcml2ZWQ7CisgICAgICAgR19faW5oZXJpdGFuY2Vfc2V0dXAoR19fZ2V0X2xp
bmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmluZ2J1ZmxFY2hhcmNPY2hhcl90
cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSxHX19nZXRfbGlua2VkX3RhZ251
bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyZWFtYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hh
cmdSc1BnUiksKGxvbmcpR19fTHBiYXNlLShsb25nKUdfX0xkZXJpdmVkLDEsMSk7CisgICAgIH0K
KyAgIH0KKyAgIGlmKDA9PUdfX2dldG51bWJhc2VjbGFzcyhHX19nZXRfbGlua2VkX3RhZ251bSgm
R19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNo
YXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSkpIHsKKyAgICAgYmFzaWNfaXN0cmluZ3N0cmVh
bTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+ICpHX19MZGVyaXZlZDsK
KyAgICAgR19fTGRlcml2ZWQ9KGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxj
aGFyPixhbGxvY2F0b3I8Y2hhcj4gPiopMHgxMDAwOworICAgICB7CisgICAgICAgYmFzaWNfaXN0
cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKkdfX0xwYmFzZT0oYmFzaWNfaXN0cmVhbTxj
aGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKUdfX0xkZXJpdmVkOworICAgICAgIEdfX2luaGVyaXRh
bmNlX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3Ry
aW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQ
Z1IpLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyZWFtbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksKGxvbmcpR19fTHBiYXNlLShsb25nKUdfX0xk
ZXJpdmVkLDEsMSk7CisgICAgIH0KKyAgICAgeworICAgICAgIEdfX2luaGVyaXRhbmNlX3NldHVw
KEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyaW5nc3RyZWFt
bEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpLEdfX2dl
dF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJh
aXRzbEVjaGFyZ1JzUGdSKSwobG9uZylHX18ydmJvX2Jhc2ljX2lzdHJpbmdzdHJlYW1sRWNoYXJj
T2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUl9iYXNpY19pb3NsRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSXzEsMSwyKTsKKyAgICAgfQorICAgICB7CisgICAg
ICAgR19faW5oZXJpdGFuY2Vfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVh
bUxOX2Jhc2ljX2lzdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9j
YXRvcmxFY2hhcmdSc1BnUiksR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lv
c19iYXNlKSwobG9uZylHX18ydmJvX2Jhc2ljX2lzdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJh
aXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUl9pb3NfYmFzZV8yLDEsNik7CisgICAg
IH0KKyAgIH0KKyAgIGlmKDA9PUdfX2dldG51bWJhc2VjbGFzcyhHX19nZXRfbGlua2VkX3RhZ251
bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNs
RWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSkpIHsKKyAgICAgYmFzaWNfb3N0cmluZ3N0
cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+ICpHX19MZGVyaXZl
ZDsKKyAgICAgR19fTGRlcml2ZWQ9KGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiopMHgxMDAwOworICAgICB7CisgICAgICAgYmFzaWNf
b3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKkdfX0xwYmFzZT0oYmFzaWNfb3N0cmVh
bTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKUdfX0xkZXJpdmVkOworICAgICAgIEdfX2luaGVy
aXRhbmNlX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19v
c3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJn
UnNQZ1IpLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vc3RyZWFt
bEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksKGxvbmcpR19fTHBiYXNlLShsb25nKUdf
X0xkZXJpdmVkLDEsMSk7CisgICAgIH0KKyAgICAgeworICAgICAgIEdfX2luaGVyaXRhbmNlX3Nl
dHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vc3RyaW5nc3Ry
ZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpLEdf
X2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pb3NsRWNoYXJjT2NoYXJf
dHJhaXRzbEVjaGFyZ1JzUGdSKSwobG9uZylHX18ydmJvX2Jhc2ljX29zdHJpbmdzdHJlYW1sRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUl9iYXNpY19pb3Ns
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSXzEsMSwyKTsKKyAgICAgfQorICAgICB7Cisg
ICAgICAgR19faW5oZXJpdGFuY2Vfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0
cmVhbUxOX2Jhc2ljX29zdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2Fs
bG9jYXRvcmxFY2hhcmdSc1BnUiksR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxO
X2lvc19iYXNlKSwobG9uZylHX18ydmJvX2Jhc2ljX29zdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJf
dHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUl9pb3NfYmFzZV8yLDEsNik7Cisg
ICAgIH0KKyAgIH0KKyAgIGlmKDA9PUdfX2dldG51bWJhc2VjbGFzcyhHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0
c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpKSkgeworICAgICBiYXNpY19zdHJpbmdz
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiAqR19fTGRlcml2
ZWQ7CisgICAgIEdfX0xkZXJpdmVkPShiYXNpY19zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiopMHgxMDAwOworICAgICB7CisgICAgICAgYmFzaWNf
aW9zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+ICpHX19McGJhc2U9KGJhc2ljX2lvc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopR19fTGRlcml2ZWQ7CisgICAgICAgR19faW5o
ZXJpdGFuY2Vfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2lj
X3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFy
Z1JzUGdSKSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaW9zdHJl
YW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwobG9uZylHX19McGJhc2UtKGxvbmcp
R19fTGRlcml2ZWQsMSwxKTsKKyAgICAgfQorICAgICB7CisgICAgICAgYmFzaWNfaXN0cmVhbTxj
aGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKkdfX0xwYmFzZT0oYmFzaWNfaXN0cmVhbTxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID4qKUdfX0xkZXJpdmVkOworICAgICAgIEdfX2luaGVyaXRhbmNlX3Nl
dHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19zdHJpbmdzdHJl
YW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUiksR19f
Z2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2No
YXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwobG9uZylHX19McGJhc2UtKGxvbmcpR19fTGRlcml2ZWQs
MSwwKTsKKyAgICAgfQorICAgICB7CisgICAgICAgR19faW5oZXJpdGFuY2Vfc2V0dXAoR19fZ2V0
X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmluZ3N0cmVhbWxFY2hhcmNP
Y2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSxHX19nZXRfbGlua2Vk
X3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaW9zbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hh
cmdSc1BnUiksKGxvbmcpR19fMnZib19iYXNpY19zdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJh
aXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUl9iYXNpY19pb3NsRWNoYXJjT2NoYXJf
dHJhaXRzbEVjaGFyZ1JzUGdSXzIsMSwyKTsKKyAgICAgfQorICAgICB7CisgICAgICAgR19faW5o
ZXJpdGFuY2Vfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2lj
X3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFy
Z1JzUGdSKSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2UpLChs
b25nKUdfXzJ2Ym9fYmFzaWNfc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdS
Y09hbGxvY2F0b3JsRWNoYXJnUnNQZ1JfaW9zX2Jhc2VfMywxLDYpOworICAgICB9CisgICAgIHsK
KyAgICAgICBiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqR19fTHBiYXNl
PShiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiopR19fTGRlcml2ZWQ7Cisg
ICAgICAgR19faW5oZXJpdGFuY2Vfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0
cmVhbUxOX2Jhc2ljX3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxs
b2NhdG9ybEVjaGFyZ1JzUGdSKSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5f
YmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLChsb25nKUdfX0xw
YmFzZS0obG9uZylHX19MZGVyaXZlZCwxLDApOworICAgICB9CisgICAgIHsKKyAgICAgICBHX19p
bmhlcml0YW5jZV9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFz
aWNfc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNo
YXJnUnNQZ1IpLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pb3Ns
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwobG9uZylHX18ydmJvX2Jhc2ljX3N0cmlu
Z3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdS
X2Jhc2ljX2lvc2xFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JfNSwxLDIpOworICAgICB9
CisgICAgIHsKKyAgICAgICBHX19pbmhlcml0YW5jZV9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251
bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19H
X19zdHJlYW1MTl9pb3NfYmFzZSksKGxvbmcpR19fMnZib19iYXNpY19zdHJpbmdzdHJlYW1sRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUl9pb3NfYmFzZV82
LDEsNik7CisgICAgIH0KKyAgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiB0eXBlZGVmIGluZm9ybWF0aW9uIHNldHVw
LworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqLworZXh0ZXJuICJDIiB2b2lkIEdfX2NwcF9zZXR1cF90eXBldGFibGVHX19zdHJlYW0oKSB7
CisKKyAgIC8qIFNldHRpbmcgdXAgdHlwZWRlZiBlbnRyeSAqLworICAgR19fc2VhcmNoX3R5cGVu
YW1lMigibWJzdGF0ZV90IiwxMTcsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxO
X21ic3RhdGVfdCksMCwtMSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19z
ZWFyY2hfdHlwZW5hbWUyKCJzdHJlYW1wb3MiLDExMCwtMSwwLC0xKTsKKyAgIEdfX3NldG5ld3R5
cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoInN0cmVhbW9mZiIsMTEwLC0x
LDAsLTEpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVu
YW1lMigiU1pfVCIsMTEwLC0xLDAsLTEpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOwor
ICAgR19fc2VhcmNoX3R5cGVuYW1lMigic3RyZWFtc2l6ZSIsMTEwLC0xLDAsLTEpOworICAgR19f
c2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigiaW9zdGF0ZSIs
MTA1LC0xLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlKSk7
CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJv
cGVubW9kZSIsMTA1LC0xLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lv
c19iYXNlKSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlw
ZW5hbWUyKCJzZWVrZGlyIiwxMDUsLTEsMCxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3Ry
ZWFtTE5faW9zX2Jhc2UpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3Nl
YXJjaF90eXBlbmFtZTIoImZtdGZsYWdzIiwxMDUsLTEsMCxHX19nZXRfbGlua2VkX3RhZ251bSgm
R19fR19fc3RyZWFtTE5faW9zX2Jhc2UpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsK
KyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoImV2ZW50X2NhbGxiYWNrIiw4OSwtMSwwLEdfX2dldF9s
aW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9pb3NfYmFzZSkpOworICAgR19fc2V0bmV3dHlw
ZSgtMSwidm9pZCAoKmV2ZW50X2NhbGxiYWNrKSAoZXZlbnQsIGlvc19iYXNlJiwgaW50IGluZGV4
KTsiLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigiSU5UX1QiLDEwNSwtMSwwLC0xKTsKKyAg
IEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoImNoYXJf
dHlwZSIsOTksLTEsMCxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fY2hhcl90
cmFpdHNsRWNoYXJnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2Vh
cmNoX3R5cGVuYW1lMigiaW50X3R5cGUiLDEwNSwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZH
X19HX19zdHJlYW1MTl9jaGFyX3RyYWl0c2xFY2hhcmdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0x
LE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJvZmZfdHlwZSIsMTEwLC0xLDAsR19f
Z2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2NoYXJfdHJhaXRzbEVjaGFyZ1IpKTsK
KyAgIEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoInBv
c190eXBlIiwxMTAsLTEsMCxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fY2hh
cl90cmFpdHNsRWNoYXJnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19f
c2VhcmNoX3R5cGVuYW1lMigic3RhdGVfdHlwZSIsMTE3LEdfX2dldF9saW5rZWRfdGFnbnVtKCZH
X19HX19zdHJlYW1MTl9tYnN0YXRlX3QpLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0
cmVhbUxOX2NoYXJfdHJhaXRzbEVjaGFyZ1IpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEsTlVMTCww
KTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoImNoYXJfdHlwZSIsOTksLTEsMCxHX19nZXRfbGlu
a2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaW9zbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNo
X3R5cGVuYW1lMigidHJhaXRzX3R5cGUiLDExNyxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19f
c3RyZWFtTE5fY2hhcl90cmFpdHNsRWNoYXJnUiksMCxHX19nZXRfbGlua2VkX3RhZ251bSgmR19f
R19fc3RyZWFtTE5fYmFzaWNfaW9zbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOwor
ICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigiaW50
X3R5cGUiLDEwNSwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNp
Y19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBl
KC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJvZmZfdHlwZSIsMTEwLC0xLDAs
R19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lvc2xFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAg
IEdfX3NlYXJjaF90eXBlbmFtZTIoInBvc190eXBlIiwxMTAsLTEsMCxHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaW9zbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdS
c1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVu
YW1lMigiY2hhcl90eXBlIiw5OSwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJl
YW1MTl9iYXNpY19zdHJlYW1idWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSk7Cisg
ICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJ0cmFp
dHNfdHlwZSIsMTE3LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9jaGFyX3Ry
YWl0c2xFY2hhcmdSKSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNp
Y19zdHJlYW1idWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSk7CisgICBHX19zZXRu
ZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJpbnRfdHlwZSIsMTA1
LC0xLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmVhbWJ1
ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEs
TlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoInBvc190eXBlIiwxMTAsLTEsMCxHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyZWFtYnVmbEVjaGFyY09j
aGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOwor
ICAgR19fc2VhcmNoX3R5cGVuYW1lMigib2ZmX3R5cGUiLDExMCwtMSwwLEdfX2dldF9saW5rZWRf
dGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19zdHJlYW1idWZsRWNoYXJjT2NoYXJfdHJhaXRz
bEVjaGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFy
Y2hfdHlwZW5hbWUyKCJiYXNpY19zdHJlYW1idWY8Y2hhcl90eXBlLGNoYXJfdHJhaXRzPGNoYXI+
ID4iLDExNyxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyZWFt
YnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksMCxHX19nZXRfbGlua2VkX3RhZ251
bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyZWFtYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hh
cmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5
cGVuYW1lMigiX19vc3RyZWFtX3R5cGUiLDExNyxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19f
c3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLDAs
R19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJlYW1sRWNoYXJj
T2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7
CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJfX2lvc190eXBlIiwxMTcsR19fZ2V0X2xpbmtlZF90
YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lvc2xFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJn
UnNQZ1IpLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJl
YW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0x
LE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJ0cmFpdHNfdHlwZSIsMTE3LEdfX2dl
dF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9jaGFyX3RyYWl0c2xFY2hhcmdSKSwwLEdf
X2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vc3RyZWFtbEVjaGFyY09j
aGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOwor
ICAgR19fc2VhcmNoX3R5cGVuYW1lMigiY2hhcl90eXBlIiw5OSwtMSwwLEdfX2dldF9saW5rZWRf
dGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNo
X3R5cGVuYW1lMigiaW50X3R5cGUiLDEwNSwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19H
X19zdHJlYW1MTl9iYXNpY19vc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikp
OworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigi
cG9zX3R5cGUiLDExMCwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9i
YXNpY19vc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgR19fc2V0
bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigib2ZmX3R5cGUiLDEx
MCwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vc3RyZWFt
bEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxO
VUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigiX19pc3RyZWFtX3R5cGUiLDExNyxHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1IpLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVh
bUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSk7CisgICBH
X19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJfX2lvc190
eXBlIiwxMTcsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lvc2xF
Y2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdf
X0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdS
KSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUy
KCJfX3N0cmVhbWJ1Zl90eXBlIiwxMTcsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVh
bUxOX2Jhc2ljX3N0cmVhbWJ1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLDAsR19f
Z2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2No
YXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7Cisg
ICBHX19zZWFyY2hfdHlwZW5hbWUyKCJ0cmFpdHNfdHlwZSIsMTE3LEdfX2dldF9saW5rZWRfdGFn
bnVtKCZHX19HX19zdHJlYW1MTl9jaGFyX3RyYWl0c2xFY2hhcmdSKSwwLEdfX2dldF9saW5rZWRf
dGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNo
X3R5cGVuYW1lMigiY2hhcl90eXBlIiw5OSwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19H
X19zdHJlYW1MTl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikp
OworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigi
aW50X3R5cGUiLDEwNSwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9i
YXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgR19fc2V0
bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigicG9zX3R5cGUiLDEx
MCwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyZWFt
bEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxO
VUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigib2ZmX3R5cGUiLDExMCwtMSwwLEdfX2dl
dF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFy
X3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAg
R19fc2VhcmNoX3R5cGVuYW1lMigiaXN0cmVhbSIsMTE3LEdfX2dldF9saW5rZWRfdGFnbnVtKCZH
X19HX19zdHJlYW1MTl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1Bn
UiksMCwtMSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlw
ZW5hbWUyKCJvc3RyZWFtIiwxMTcsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxO
X2Jhc2ljX29zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwwLC0xKTsKKyAg
IEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoInN0cmVh
bWJ1ZiIsMTE3LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19zdHJl
YW1idWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwwLC0xKTsKKyAgIEdfX3NldG5l
d3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoImlvc190eXBlIiwxMTcs
R19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lvc2xFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1IpLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVh
bUxOX2Jhc2ljX2ZpbGVidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSk7CisgICBH
X19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJ0cmFpdHNf
dHlwZSIsMTE3LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9jaGFyX3RyYWl0
c2xFY2hhcmdSKSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19m
aWxlYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlw
ZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigiY2hhcl90eXBlIiw5OSwtMSww
LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19maWxlYnVmbEVjaGFy
Y09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDAp
OworICAgR19fc2VhcmNoX3R5cGVuYW1lMigiaW50X3R5cGUiLDEwNSwtMSwwLEdfX2dldF9saW5r
ZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19maWxlYnVmbEVjaGFyY09jaGFyX3RyYWl0
c2xFY2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2Vh
cmNoX3R5cGVuYW1lMigicG9zX3R5cGUiLDExMCwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZH
X19HX19zdHJlYW1MTl9iYXNpY19maWxlYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1Bn
UikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1l
Migib2ZmX3R5cGUiLDExMCwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1M
Tl9iYXNpY19maWxlYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgR19f
c2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigiZmlsZWJ1ZiIs
MTE3LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19maWxlYnVmbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksMCwtMSk7CisgICBHX19zZXRuZXd0eXBlKC0x
LE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJpb3NfdHlwZSIsMTE3LEdfX2dldF9s
aW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRz
bEVjaGFyZ1JzUGdSKSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNp
Y19pZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3NldG5l
d3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoInRyYWl0c190eXBlIiwx
MTcsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2NoYXJfdHJhaXRzbEVjaGFy
Z1IpLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lmc3RyZWFt
bEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxO
VUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigiY2hhcl90eXBlIiw5OSwtMSwwLEdfX2dl
dF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pZnN0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAg
IEdfX3NlYXJjaF90eXBlbmFtZTIoImludF90eXBlIiwxMDUsLTEsMCxHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaWZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hf
dHlwZW5hbWUyKCJwb3NfdHlwZSIsMTEwLC0xLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0df
X3N0cmVhbUxOX2Jhc2ljX2lmc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikp
OworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigi
b2ZmX3R5cGUiLDExMCwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9i
YXNpY19pZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3Nl
dG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoImlmc3RyZWFtIiwx
MTcsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lmc3RyZWFtbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksMCwtMSk7CisgICBHX19zZXRuZXd0eXBlKC0x
LE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJpb3NfdHlwZSIsMTE3LEdfX2dldF9s
aW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRz
bEVjaGFyZ1JzUGdSKSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNp
Y19vZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3NldG5l
d3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoInRyYWl0c190eXBlIiwx
MTcsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2NoYXJfdHJhaXRzbEVjaGFy
Z1IpLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX29mc3RyZWFt
bEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxO
VUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigiY2hhcl90eXBlIiw5OSwtMSwwLEdfX2dl
dF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vZnN0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAg
IEdfX3NlYXJjaF90eXBlbmFtZTIoImludF90eXBlIiwxMDUsLTEsMCxHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hf
dHlwZW5hbWUyKCJwb3NfdHlwZSIsMTEwLC0xLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0df
X3N0cmVhbUxOX2Jhc2ljX29mc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikp
OworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigi
b2ZmX3R5cGUiLDExMCwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9i
YXNpY19vZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3Nl
dG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoIm9mc3RyZWFtIiwx
MTcsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX29mc3RyZWFtbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksMCwtMSk7CisgICBHX19zZXRuZXd0eXBlKC0x
LE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJmc3RyZWFtIiwxMTcsR19fZ2V0X2xp
bmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJh
aXRzbEVjaGFyZ1JzUGdSKSwwLC0xKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAg
IEdfX3NlYXJjaF90eXBlbmFtZTIoImNoYXJfdHlwZSIsOTksLTEsMCxHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyaW5nYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEsTlVM
TCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoImludF90eXBlIiwxMDUsLTEsMCxHX19nZXRf
bGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyaW5nYnVmbEVjaGFyY09jaGFy
X3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3NldG5ld3R5
cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoInBvc190eXBlIiwxMTAsLTEs
MCxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyaW5nYnVmbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpKTsKKyAgIEdf
X3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoIm9mZl90eXBl
IiwxMTAsLTEsMCxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3Ry
aW5nYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1Ip
KTsKKyAgIEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIo
InRyYWl0c190eXBlIiwxMTcsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2No
YXJfdHJhaXRzbEVjaGFyZ1IpLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxO
X2Jhc2ljX3N0cmluZ2J1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVj
aGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hf
dHlwZW5hbWUyKCJpb3NfdHlwZSIsMTE3LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJl
YW1MTl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwwLEdfX2dldF9s
aW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19zdHJpbmdidWZsRWNoYXJjT2NoYXJf
dHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlw
ZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigiX19zdHJpbmdfdHlwZSIsMTE3
LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9zdHJpbmcpLDAsR19fZ2V0X2xp
bmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmluZ2J1ZmxFY2hhcmNPY2hhcl90
cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBl
KC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJzdHJpbmdidWYiLDExNyxHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyaW5nYnVmbEVjaGFyY09j
aGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpLDAsLTEpOworICAgR19f
c2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigiY2hhcl90eXBl
Iiw5OSwtMSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3Ry
aW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQ
Z1IpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFt
ZTIoImludF90eXBlIiwxMDUsLTEsMCxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFt
TE5fYmFzaWNfaXN0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2Nh
dG9ybEVjaGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19z
ZWFyY2hfdHlwZW5hbWUyKCJwb3NfdHlwZSIsMTEwLC0xLDAsR19fZ2V0X2xpbmtlZF90YWdudW0o
JkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxM
LDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigib2ZmX3R5cGUiLDExMCwtMSwwLEdfX2dldF9s
aW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyaW5nc3RyZWFtbEVjaGFyY09j
aGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3NldG5l
d3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoInRyYWl0c190eXBlIiwx
MTcsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2NoYXJfdHJhaXRzbEVjaGFy
Z1IpLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJpbmdz
dHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUikp
OworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1lMigi
c2JfdHlwZSIsMTE3LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19z
dHJpbmdidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1Bn
UiksMCxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmluZ3N0
cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSk7
CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJp
b3NfdHlwZSIsMTE3LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19p
b3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwwLEdfX2dldF9saW5rZWRfdGFnbnVt
KCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEsTlVM
TCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoIl9fc3RyaW5nX3R5cGUiLDExNyxHX19nZXRf
bGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fc3RyaW5nKSwwLEdfX2dldF9saW5rZWRfdGFn
bnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0
c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEs
TlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoImlzdHJpbmdzdHJlYW0iLDExNyxHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmluZ3N0cmVhbWxFY2hh
cmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSwwLC0xKTsKKyAg
IEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoImNoYXJf
dHlwZSIsOTksLTEsMCxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNf
b3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFy
Z1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlw
ZW5hbWUyKCJpbnRfdHlwZSIsMTA1LC0xLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0
cmVhbUxOX2Jhc2ljX29zdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2Fs
bG9jYXRvcmxFY2hhcmdSc1BnUikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAg
R19fc2VhcmNoX3R5cGVuYW1lMigicG9zX3R5cGUiLDExMCwtMSwwLEdfX2dldF9saW5rZWRfdGFn
bnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0
c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEs
TlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoIm9mZl90eXBlIiwxMTAsLTEsMCxHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmluZ3N0cmVhbWxFY2hh
cmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSk7CisgICBHX19z
ZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJ0cmFpdHNfdHlw
ZSIsMTE3LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9jaGFyX3RyYWl0c2xF
Y2hhcmdSKSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vc3Ry
aW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQ
Z1IpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFt
ZTIoInNiX3R5cGUiLDExNyxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFz
aWNfc3RyaW5nYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJn
UnNQZ1IpLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJp
bmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1Bn
UikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1l
MigiaW9zX3R5cGUiLDExNyxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFz
aWNfaW9zbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksMCxHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFp
dHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0x
LE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJfX3N0cmluZ190eXBlIiwxMTcsR19f
Z2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX3N0cmluZyksMCxHX19nZXRfbGlua2Vk
X3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90
cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBl
KC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJvc3RyaW5nc3RyZWFtIiwxMTcs
R19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJpbmdzdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUiksMCwtMSk7
CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJj
aGFyX3R5cGUiLDk5LC0xLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jh
c2ljX3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVj
aGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hf
dHlwZW5hbWUyKCJpbnRfdHlwZSIsMTA1LC0xLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0df
X3N0cmVhbUxOX2Jhc2ljX3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNP
YWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7Cisg
ICBHX19zZWFyY2hfdHlwZW5hbWUyKCJwb3NfdHlwZSIsMTEwLC0xLDAsR19fZ2V0X2xpbmtlZF90
YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFp
dHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0x
LE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJvZmZfdHlwZSIsMTEwLC0xLDAsR19f
Z2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmluZ3N0cmVhbWxFY2hh
cmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSk7CisgICBHX19z
ZXRuZXd0eXBlKC0xLE5VTEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJ0cmFpdHNfdHlw
ZSIsMTE3LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9jaGFyX3RyYWl0c2xF
Y2hhcmdSKSwwLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19zdHJp
bmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1Bn
UikpOworICAgR19fc2V0bmV3dHlwZSgtMSxOVUxMLDApOworICAgR19fc2VhcmNoX3R5cGVuYW1l
Migic2JfdHlwZSIsMTE3LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNp
Y19zdHJpbmdidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdS
c1BnUiksMCxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyaW5n
c3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1Ip
KTsKKyAgIEdfX3NldG5ld3R5cGUoLTEsTlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIo
Imlvc190eXBlIiwxMTcsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2lj
X2lvc2xFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLDAsR19fZ2V0X2xpbmtlZF90YWdu
dW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNs
RWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSk7CisgICBHX19zZXRuZXd0eXBlKC0xLE5V
TEwsMCk7CisgICBHX19zZWFyY2hfdHlwZW5hbWUyKCJfX3N0cmluZ190eXBlIiwxMTcsR19fZ2V0
X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX3N0cmluZyksMCxHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0
c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpKTsKKyAgIEdfX3NldG5ld3R5cGUoLTEs
TlVMTCwwKTsKKyAgIEdfX3NlYXJjaF90eXBlbmFtZTIoInN0cmluZ3N0cmVhbSIsMTE3LEdfX2dl
dF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19zdHJpbmdzdHJlYW1sRWNoYXJj
T2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUiksMCwtMSk7CisgICBH
X19zZXRuZXd0eXBlKC0xLE5VTEwsMCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogRGF0YSBNZW1iZXIgaW5mb3JtYXRp
b24gc2V0dXAvCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovCisKKyAgIC8qIFNldHRpbmcgdXAgY2xhc3Msc3RydWN0LHVuaW9uIHRhZyBt
ZW1iZXIgdmFyaWFibGUgKi8KKworICAgLyogbWJzdGF0ZV90ICovCitzdGF0aWMgdm9pZCBHX19z
ZXR1cF9tZW12YXJtYnN0YXRlX3Qodm9pZCkgeworICAgR19fdGFnX21lbXZhcl9zZXR1cChHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fbWJzdGF0ZV90KSk7CisgICB7IG1ic3Rh
dGVfdCAqcDsgcD0obWJzdGF0ZV90KikweDEwMDA7IGlmIChwKSB7IH0KKyAgIH0KKyAgIEdfX3Rh
Z19tZW12YXJfcmVzZXQoKTsKK30KKworCisgICAvKiBzdHJlYW1vZmYgKi8KK3N0YXRpYyB2b2lk
IEdfX3NldHVwX21lbXZhcnN0cmVhbW9mZih2b2lkKSB7CisgICBHX190YWdfbWVtdmFyX3NldHVw
KEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9zdHJlYW1vZmYpKTsKKyAgIHsg
c3RyZWFtb2ZmICpwOyBwPShzdHJlYW1vZmYqKTB4MTAwMDsgaWYgKHApIHsgfQorICAgfQorICAg
R19fdGFnX21lbXZhcl9yZXNldCgpOworfQorCisKKyAgIC8qIGZwb3M8bWJzdGF0ZV90PiAqLwor
c3RhdGljIHZvaWQgR19fc2V0dXBfbWVtdmFyZnBvc2xFbWJzdGF0ZV90Z1Iodm9pZCkgeworICAg
R19fdGFnX21lbXZhcl9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5f
ZnBvc2xFbWJzdGF0ZV90Z1IpKTsKKyAgIHsgZnBvczxtYnN0YXRlX3Q+ICpwOyBwPShmcG9zPG1i
c3RhdGVfdD4qKTB4MTAwMDsgaWYgKHApIHsgfQorICAgfQorICAgR19fdGFnX21lbXZhcl9yZXNl
dCgpOworfQorCisKKyAgIC8qIGlvc19iYXNlICovCitzdGF0aWMgdm9pZCBHX19zZXR1cF9tZW12
YXJpb3NfYmFzZSh2b2lkKSB7CisgICBHX190YWdfbWVtdmFyX3NldHVwKEdfX2dldF9saW5rZWRf
dGFnbnVtKCZHX19HX19zdHJlYW1MTl9pb3NfYmFzZSkpOworICAgeyBpb3NfYmFzZSAqcDsgcD0o
aW9zX2Jhc2UqKTB4MTAwMDsgaWYgKHApIHsgfQorICAgR19fbWVtdmFyX3NldHVwKCh2b2lkKilH
X19QVk9JRCwxMDUsMCwxLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9pb3Nf
YmFzZWNMY0xpb19zdGF0ZSksLTEsLTIsMSwiZ29vZGJpdD0wIiwwLChjaGFyKilOVUxMKTsKKyAg
IEdfX21lbXZhcl9zZXR1cCgodm9pZCopR19fUFZPSUQsMTA1LDAsMSxHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMaW9fc3RhdGUpLC0xLC0yLDEsImJhZGJp
dD0xIiwwLChjaGFyKilOVUxMKTsKKyAgIEdfX21lbXZhcl9zZXR1cCgodm9pZCopR19fUFZPSUQs
MTA1LDAsMSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNM
aW9fc3RhdGUpLC0xLC0yLDEsImVvZmJpdD0yIiwwLChjaGFyKilOVUxMKTsKKyAgIEdfX21lbXZh
cl9zZXR1cCgodm9pZCopR19fUFZPSUQsMTA1LDAsMSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19f
R19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMaW9fc3RhdGUpLC0xLC0yLDEsImZhaWxiaXQ9NCIsMCwo
Y2hhciopTlVMTCk7CisgICBHX19tZW12YXJfc2V0dXAoKHZvaWQqKUdfX1BWT0lELDEwNSwwLDEs
R19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlY0xjTG9wZW5fbW9k
ZSksLTEsLTIsMSwiYXBwPTEiLDAsKGNoYXIqKU5VTEwpOworICAgR19fbWVtdmFyX3NldHVwKCh2
b2lkKilHX19QVk9JRCwxMDUsMCwxLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1M
Tl9pb3NfYmFzZWNMY0xvcGVuX21vZGUpLC0xLC0yLDEsImJpbmFyeT0yIiwwLChjaGFyKilOVUxM
KTsKKyAgIEdfX21lbXZhcl9zZXR1cCgodm9pZCopR19fUFZPSUQsMTA1LDAsMSxHX19nZXRfbGlu
a2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMb3Blbl9tb2RlKSwtMSwtMiwx
LCJpbj00IiwwLChjaGFyKilOVUxMKTsKKyAgIEdfX21lbXZhcl9zZXR1cCgodm9pZCopR19fUFZP
SUQsMTA1LDAsMSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2Vj
TGNMb3Blbl9tb2RlKSwtMSwtMiwxLCJvdXQ9OCIsMCwoY2hhciopTlVMTCk7CisgICBHX19tZW12
YXJfc2V0dXAoKHZvaWQqKUdfX1BWT0lELDEwNSwwLDEsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdf
X0dfX3N0cmVhbUxOX2lvc19iYXNlY0xjTG9wZW5fbW9kZSksLTEsLTIsMSwidHJ1bmM9MTYiLDAs
KGNoYXIqKU5VTEwpOworICAgR19fbWVtdmFyX3NldHVwKCh2b2lkKilHX19QVk9JRCwxMDUsMCwx
LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9pb3NfYmFzZWNMY0xvcGVuX21v
ZGUpLC0xLC0yLDEsImF0ZT0zMiIsMCwoY2hhciopTlVMTCk7CisgICBHX19tZW12YXJfc2V0dXAo
KHZvaWQqKUdfX1BWT0lELDEwNSwwLDEsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVh
bUxOX2lvc19iYXNlY0xjTHNlZWtfZGlyKSwtMSwtMiwxLCJiZWc9MCIsMCwoY2hhciopTlVMTCk7
CisgICBHX19tZW12YXJfc2V0dXAoKHZvaWQqKUdfX1BWT0lELDEwNSwwLDEsR19fZ2V0X2xpbmtl
ZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlY0xjTHNlZWtfZGlyKSwtMSwtMiwxLCJj
dXI9MSIsMCwoY2hhciopTlVMTCk7CisgICBHX19tZW12YXJfc2V0dXAoKHZvaWQqKUdfX1BWT0lE
LDEwNSwwLDEsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlY0xj
THNlZWtfZGlyKSwtMSwtMiwxLCJlbmQ9MiIsMCwoY2hhciopTlVMTCk7CisgICBHX19tZW12YXJf
c2V0dXAoKHZvaWQqKUdfX1BWT0lELDEwNSwwLDEsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0df
X3N0cmVhbUxOX2lvc19iYXNlY0xjTGZtdF9mbGFncyksLTEsLTIsMSwiYm9vbGFscGhhPTEiLDAs
KGNoYXIqKU5VTEwpOworICAgR19fbWVtdmFyX3NldHVwKCh2b2lkKilHX19QVk9JRCwxMDUsMCwx
LEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9pb3NfYmFzZWNMY0xmbXRfZmxh
Z3MpLC0xLC0yLDEsImRlYz0yIiwwLChjaGFyKilOVUxMKTsKKyAgIEdfX21lbXZhcl9zZXR1cCgo
dm9pZCopR19fUFZPSUQsMTA1LDAsMSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFt
TE5faW9zX2Jhc2VjTGNMZm10X2ZsYWdzKSwtMSwtMiwxLCJmaXhlZD00IiwwLChjaGFyKilOVUxM
KTsKKyAgIEdfX21lbXZhcl9zZXR1cCgodm9pZCopR19fUFZPSUQsMTA1LDAsMSxHX19nZXRfbGlu
a2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMZm10X2ZsYWdzKSwtMSwtMiwx
LCJoZXg9OCIsMCwoY2hhciopTlVMTCk7CisgICBHX19tZW12YXJfc2V0dXAoKHZvaWQqKUdfX1BW
T0lELDEwNSwwLDEsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNl
Y0xjTGZtdF9mbGFncyksLTEsLTIsMSwiaW50ZXJuYWw9MTYiLDAsKGNoYXIqKU5VTEwpOworICAg
R19fbWVtdmFyX3NldHVwKCh2b2lkKilHX19QVk9JRCwxMDUsMCwxLEdfX2dldF9saW5rZWRfdGFn
bnVtKCZHX19HX19zdHJlYW1MTl9pb3NfYmFzZWNMY0xmbXRfZmxhZ3MpLC0xLC0yLDEsImxlZnQ9
MzIiLDAsKGNoYXIqKU5VTEwpOworICAgR19fbWVtdmFyX3NldHVwKCh2b2lkKilHX19QVk9JRCwx
MDUsMCwxLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9pb3NfYmFzZWNMY0xm
bXRfZmxhZ3MpLC0xLC0yLDEsIm9jdD02NCIsMCwoY2hhciopTlVMTCk7CisgICBHX19tZW12YXJf
c2V0dXAoKHZvaWQqKUdfX1BWT0lELDEwNSwwLDEsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0df
X3N0cmVhbUxOX2lvc19iYXNlY0xjTGZtdF9mbGFncyksLTEsLTIsMSwicmlnaHQ9MTI4IiwwLChj
aGFyKilOVUxMKTsKKyAgIEdfX21lbXZhcl9zZXR1cCgodm9pZCopR19fUFZPSUQsMTA1LDAsMSxH
X19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMZm10X2ZsYWdz
KSwtMSwtMiwxLCJzY2llbnRpZmljPTI1NiIsMCwoY2hhciopTlVMTCk7CisgICBHX19tZW12YXJf
c2V0dXAoKHZvaWQqKUdfX1BWT0lELDEwNSwwLDEsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0df
X3N0cmVhbUxOX2lvc19iYXNlY0xjTGZtdF9mbGFncyksLTEsLTIsMSwic2hvd2Jhc2U9NTEyIiww
LChjaGFyKilOVUxMKTsKKyAgIEdfX21lbXZhcl9zZXR1cCgodm9pZCopR19fUFZPSUQsMTA1LDAs
MSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMZm10X2Zs
YWdzKSwtMSwtMiwxLCJzaG93cG9pbnQ9MTAyNCIsMCwoY2hhciopTlVMTCk7CisgICBHX19tZW12
YXJfc2V0dXAoKHZvaWQqKUdfX1BWT0lELDEwNSwwLDEsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdf
X0dfX3N0cmVhbUxOX2lvc19iYXNlY0xjTGZtdF9mbGFncyksLTEsLTIsMSwic2hvd3Bvcz0yMDQ4
IiwwLChjaGFyKilOVUxMKTsKKyAgIEdfX21lbXZhcl9zZXR1cCgodm9pZCopR19fUFZPSUQsMTA1
LDAsMSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMZm10
X2ZsYWdzKSwtMSwtMiwxLCJza2lwd3M9NDA5NiIsMCwoY2hhciopTlVMTCk7CisgICBHX19tZW12
YXJfc2V0dXAoKHZvaWQqKUdfX1BWT0lELDEwNSwwLDEsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdf
X0dfX3N0cmVhbUxOX2lvc19iYXNlY0xjTGZtdF9mbGFncyksLTEsLTIsMSwidW5pdGJ1Zj04MTky
IiwwLChjaGFyKilOVUxMKTsKKyAgIEdfX21lbXZhcl9zZXR1cCgodm9pZCopR19fUFZPSUQsMTA1
LDAsMSxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMZm10
X2ZsYWdzKSwtMSwtMiwxLCJ1cHBlcmNhc2U9MTYzODQiLDAsKGNoYXIqKU5VTEwpOworICAgR19f
bWVtdmFyX3NldHVwKCh2b2lkKilHX19QVk9JRCwxMDUsMCwxLEdfX2dldF9saW5rZWRfdGFnbnVt
KCZHX19HX19zdHJlYW1MTl9pb3NfYmFzZWNMY0xmbXRfZmxhZ3MpLC0xLC0yLDEsImFkanVzdGZp
ZWxkPTE3NiIsMCwoY2hhciopTlVMTCk7CisgICBHX19tZW12YXJfc2V0dXAoKHZvaWQqKUdfX1BW
T0lELDEwNSwwLDEsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNl
Y0xjTGZtdF9mbGFncyksLTEsLTIsMSwiYmFzZWZpZWxkPTc0IiwwLChjaGFyKilOVUxMKTsKKyAg
IEdfX21lbXZhcl9zZXR1cCgodm9pZCopR19fUFZPSUQsMTA1LDAsMSxHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMZm10X2ZsYWdzKSwtMSwtMiwxLCJmbG9h
dGZpZWxkPTI2MCIsMCwoY2hhciopTlVMTCk7CisgICBHX19tZW12YXJfc2V0dXAoKHZvaWQqKUdf
X1BWT0lELDEwNSwwLDEsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19i
YXNlY0xjTGV2ZW50KSwtMSwtMiwxLCJlcmFzZV9ldmVudD0xIiwwLChjaGFyKilOVUxMKTsKKyAg
IEdfX21lbXZhcl9zZXR1cCgodm9pZCopR19fUFZPSUQsMTA1LDAsMSxHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMZXZlbnQpLC0xLC0yLDEsImltYnVlX2V2
ZW50PTIiLDAsKGNoYXIqKU5VTEwpOworICAgR19fbWVtdmFyX3NldHVwKCh2b2lkKilHX19QVk9J
RCwxMDUsMCwxLEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9pb3NfYmFzZWNM
Y0xldmVudCksLTEsLTIsMSwiY29weWZtdF9ldmVudD00IiwwLChjaGFyKilOVUxMKTsKKyAgIH0K
KyAgIEdfX3RhZ19tZW12YXJfcmVzZXQoKTsKK30KKworCisgICAvKiBpb3NfYmFzZTo6SW5pdCAq
Lworc3RhdGljIHZvaWQgR19fc2V0dXBfbWVtdmFyaW9zX2Jhc2VjTGNMSW5pdCh2b2lkKSB7Cisg
ICBHX190YWdfbWVtdmFyX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1M
Tl9pb3NfYmFzZWNMY0xJbml0KSk7CisgICB7IGlvc19iYXNlOjpJbml0ICpwOyBwPShpb3NfYmFz
ZTo6SW5pdCopMHgxMDAwOyBpZiAocCkgeyB9CisgICB9CisgICBHX190YWdfbWVtdmFyX3Jlc2V0
KCk7Cit9CisKKworICAgLyogY2hhcl90cmFpdHM8Y2hhcj4gKi8KK3N0YXRpYyB2b2lkIEdfX3Nl
dHVwX21lbXZhcmNoYXJfdHJhaXRzbEVjaGFyZ1Iodm9pZCkgeworICAgR19fdGFnX21lbXZhcl9z
ZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fY2hhcl90cmFpdHNsRWNo
YXJnUikpOworICAgeyBjaGFyX3RyYWl0czxjaGFyPiAqcDsgcD0oY2hhcl90cmFpdHM8Y2hhcj4q
KTB4MTAwMDsgaWYgKHApIHsgfQorICAgfQorICAgR19fdGFnX21lbXZhcl9yZXNldCgpOworfQor
CisKKyAgIC8qIGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+ICovCitzdGF0
aWMgdm9pZCBHX19zZXR1cF9tZW12YXJiYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUih2b2lkKSB7CisgICBHX190YWdfbWVtdmFyX3NldHVwKEdfX2dldF9saW5rZWRf
dGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUikpOworICAgeyBiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PiAqcDsgcD0oYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKTB4MTAwMDsg
aWYgKHApIHsgfQorICAgfQorICAgR19fdGFnX21lbXZhcl9yZXNldCgpOworfQorCisKKyAgIC8q
IGJhc2ljX2lvczxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKi8KK3N0YXRpYyB2b2lkIEdfX3Nl
dHVwX21lbXZhcmJhc2ljX2lvc2xFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1Iodm9pZCkg
eworICAgR19fdGFnX21lbXZhcl9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3Ry
ZWFtTE5fYmFzaWNfaW9zbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgeyBi
YXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+ICpwOyBwPShiYXNpY19pb3M8Y2hhcixj
aGFyX3RyYWl0czxjaGFyPiA+KikweDEwMDA7IGlmIChwKSB7IH0KKyAgIH0KKyAgIEdfX3RhZ19t
ZW12YXJfcmVzZXQoKTsKK30KKworCisgICAvKiBiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPiA+ICovCitzdGF0aWMgdm9pZCBHX19zZXR1cF9tZW12YXJiYXNpY19zdHJlYW1i
dWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKHZvaWQpIHsKKyAgIEdfX3RhZ19tZW12
YXJfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmVh
bWJ1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpKTsKKyAgIHsgYmFzaWNfc3RyZWFt
YnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqcDsgcD0oYmFzaWNfc3RyZWFtYnVmPGNoYXIs
Y2hhcl90cmFpdHM8Y2hhcj4gPiopMHgxMDAwOyBpZiAocCkgeyB9CisgICB9CisgICBHX190YWdf
bWVtdmFyX3Jlc2V0KCk7Cit9CisKKworICAgLyogYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJh
aXRzPGNoYXI+ID4gKi8KK3N0YXRpYyB2b2lkIEdfX3NldHVwX21lbXZhcmJhc2ljX29zdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKHZvaWQpIHsKKyAgIEdfX3RhZ19tZW12YXJf
c2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSk7CisgICB7IGJhc2ljX29zdHJlYW08Y2hh
cixjaGFyX3RyYWl0czxjaGFyPiA+ICpwOyBwPShiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4gPiopMHgxMDAwOyBpZiAocCkgeyB9CisgICB9CisgICBHX190YWdfbWVtdmFyX3Jl
c2V0KCk7Cit9CisKKworICAgLyogYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+
ID46OnNlbnRyeSAqLworc3RhdGljIHZvaWQgR19fc2V0dXBfbWVtdmFyYmFzaWNfb3N0cmVhbWxF
Y2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JjTGNMc2VudHJ5KHZvaWQpIHsKKyAgIEdfX3Rh
Z19tZW12YXJfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2lj
X29zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSY0xjTHNlbnRyeSkpOworICAg
eyBiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6c2VudHJ5ICpwOyBwPShi
YXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6c2VudHJ5KikweDEwMDA7IGlm
IChwKSB7IH0KKyAgIH0KKyAgIEdfX3RhZ19tZW12YXJfcmVzZXQoKTsKK30KKworCisgICAvKiBi
YXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6c2VudHJ5ICovCitzdGF0aWMg
dm9pZCBHX19zZXR1cF9tZW12YXJiYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hh
cmdSc1BnUmNMY0xzZW50cnkodm9pZCkgeworICAgR19fdGFnX21lbXZhcl9zZXR1cChHX19nZXRf
bGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90
cmFpdHNsRWNoYXJnUnNQZ1JjTGNMc2VudHJ5KSk7CisgICB7IGJhc2ljX2lzdHJlYW08Y2hhcixj
aGFyX3RyYWl0czxjaGFyPiA+OjpzZW50cnkgKnA7IHA9KGJhc2ljX2lzdHJlYW08Y2hhcixjaGFy
X3RyYWl0czxjaGFyPiA+OjpzZW50cnkqKTB4MTAwMDsgaWYgKHApIHsgfQorICAgfQorICAgR19f
dGFnX21lbXZhcl9yZXNldCgpOworfQorCisKKyAgIC8qIGJhc2ljX2ZpbGVidWY8Y2hhcixjaGFy
X3RyYWl0czxjaGFyPiA+ICovCitzdGF0aWMgdm9pZCBHX19zZXR1cF9tZW12YXJiYXNpY19maWxl
YnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUih2b2lkKSB7CisgICBHX190YWdfbWVt
dmFyX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19maWxl
YnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgeyBiYXNpY19maWxlYnVm
PGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqcDsgcD0oYmFzaWNfZmlsZWJ1ZjxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+ID4qKTB4MTAwMDsgaWYgKHApIHsgfQorICAgfQorICAgR19fdGFnX21lbXZh
cl9yZXNldCgpOworfQorCisKKyAgIC8qIGJhc2ljX2lmc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4gPiAqLworc3RhdGljIHZvaWQgR19fc2V0dXBfbWVtdmFyYmFzaWNfaWZzdHJlYW1sRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKHZvaWQpIHsKKyAgIEdfX3RhZ19tZW12YXJfc2V0
dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lmc3RyZWFtbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgeyBiYXNpY19pZnN0cmVhbTxjaGFy
LGNoYXJfdHJhaXRzPGNoYXI+ID4gKnA7IHA9KGJhc2ljX2lmc3RyZWFtPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4gPiopMHgxMDAwOyBpZiAocCkgeyB9CisgICB9CisgICBHX190YWdfbWVtdmFyX3Jl
c2V0KCk7Cit9CisKKworICAgLyogYmFzaWNfb2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFy
PiA+ICovCitzdGF0aWMgdm9pZCBHX19zZXR1cF9tZW12YXJiYXNpY19vZnN0cmVhbWxFY2hhcmNP
Y2hhcl90cmFpdHNsRWNoYXJnUnNQZ1Iodm9pZCkgeworICAgR19fdGFnX21lbXZhcl9zZXR1cChH
X19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb2ZzdHJlYW1sRWNoYXJj
T2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSk7CisgICB7IGJhc2ljX29mc3RyZWFtPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4gPiAqcDsgcD0oYmFzaWNfb2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxj
aGFyPiA+KikweDEwMDA7IGlmIChwKSB7IH0KKyAgIH0KKyAgIEdfX3RhZ19tZW12YXJfcmVzZXQo
KTsKK30KKworCisgICAvKiBiYXNpY19mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAq
Lworc3RhdGljIHZvaWQgR19fc2V0dXBfbWVtdmFyYmFzaWNfZnN0cmVhbWxFY2hhcmNPY2hhcl90
cmFpdHNsRWNoYXJnUnNQZ1Iodm9pZCkgeworICAgR19fdGFnX21lbXZhcl9zZXR1cChHX19nZXRf
bGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfZnN0cmVhbWxFY2hhcmNPY2hhcl90
cmFpdHNsRWNoYXJnUnNQZ1IpKTsKKyAgIHsgYmFzaWNfZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRz
PGNoYXI+ID4gKnA7IHA9KGJhc2ljX2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+Kikw
eDEwMDA7IGlmIChwKSB7IH0KKyAgIH0KKyAgIEdfX3RhZ19tZW12YXJfcmVzZXQoKTsKK30KKwor
CisgICAvKiBiYXNpY19pb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4gKi8KK3N0YXRp
YyB2b2lkIEdfX3NldHVwX21lbXZhcmJhc2ljX2lvc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUih2b2lkKSB7CisgICBHX190YWdfbWVtdmFyX3NldHVwKEdfX2dldF9saW5rZWRf
dGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNs
RWNoYXJnUnNQZ1IpKTsKKyAgIHsgYmFzaWNfaW9zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFy
PiA+ICpwOyBwPShiYXNpY19pb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4qKTB4MTAw
MDsgaWYgKHApIHsgfQorICAgfQorICAgR19fdGFnX21lbXZhcl9yZXNldCgpOworfQorCisKKyAg
IC8qIGJhc2ljX3N0cmluZ2J1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFy
PiA+ICovCitzdGF0aWMgdm9pZCBHX19zZXR1cF9tZW12YXJiYXNpY19zdHJpbmdidWZsRWNoYXJj
T2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUih2b2lkKSB7CisgICBH
X190YWdfbWVtdmFyX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9i
YXNpY19zdHJpbmdidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hh
cmdSc1BnUikpOworICAgeyBiYXNpY19zdHJpbmdidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPixh
bGxvY2F0b3I8Y2hhcj4gPiAqcDsgcD0oYmFzaWNfc3RyaW5nYnVmPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4qKTB4MTAwMDsgaWYgKHApIHsgfQorICAgfQorICAgR19f
dGFnX21lbXZhcl9yZXNldCgpOworfQorCisKKyAgIC8qIGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hh
cixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiAqLworc3RhdGljIHZvaWQgR19f
c2V0dXBfbWVtdmFyYmFzaWNfaXN0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJn
UmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKHZvaWQpIHsKKyAgIEdfX3RhZ19tZW12YXJfc2V0dXAo
R19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJpbmdzdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUikpOworICAg
eyBiYXNpY19pc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNo
YXI+ID4gKnA7IHA9KGJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixh
bGxvY2F0b3I8Y2hhcj4gPiopMHgxMDAwOyBpZiAocCkgeyB9CisgICB9CisgICBHX190YWdfbWVt
dmFyX3Jlc2V0KCk7Cit9CisKKworICAgLyogYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+ICovCitzdGF0aWMgdm9pZCBHX19zZXR1cF9t
ZW12YXJiYXNpY19vc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxv
Y2F0b3JsRWNoYXJnUnNQZ1Iodm9pZCkgeworICAgR19fdGFnX21lbXZhcl9zZXR1cChHX19nZXRf
bGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmluZ3N0cmVhbWxFY2hhcmNP
Y2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSk7CisgICB7IGJhc2lj
X29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiAq
cDsgcD0oYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRv
cjxjaGFyPiA+KikweDEwMDA7IGlmIChwKSB7IH0KKyAgIH0KKyAgIEdfX3RhZ19tZW12YXJfcmVz
ZXQoKTsKK30KKworCisgICAvKiBiYXNpY19zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxj
aGFyPixhbGxvY2F0b3I8Y2hhcj4gPiAqLworc3RhdGljIHZvaWQgR19fc2V0dXBfbWVtdmFyYmFz
aWNfc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNo
YXJnUnNQZ1Iodm9pZCkgeworICAgR19fdGFnX21lbXZhcl9zZXR1cChHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0
c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpKTsKKyAgIHsgYmFzaWNfc3RyaW5nc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4gKnA7IHA9KGJhc2lj
X3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+Kikw
eDEwMDA7IGlmIChwKSB7IH0KKyAgIH0KKyAgIEdfX3RhZ19tZW12YXJfcmVzZXQoKTsKK30KKwor
ZXh0ZXJuICJDIiB2b2lkIEdfX2NwcF9zZXR1cF9tZW12YXJHX19zdHJlYW0oKSB7Cit9CisvKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
KyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIE1lbWJlciBmdW5jdGlv
biBpbmZvcm1hdGlvbiBzZXR1cCBmb3IgZWFjaCBjbGFzcworKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgR19fc2V0
dXBfbWVtZnVuY21ic3RhdGVfdCh2b2lkKSB7CisgICAvKiBtYnN0YXRlX3QgKi8KKyAgIEdfX3Rh
Z19tZW1mdW5jX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9tYnN0
YXRlX3QpKTsKKyAgIC8vIGF1dG9tYXRpYyBkZWZhdWx0IGNvbnN0cnVjdG9yCisgICBHX19tZW1m
dW5jX3NldHVwKCJtYnN0YXRlX3QiLCA5NjMsIEdfX0dfX3N0cmVhbV8xXzBfMSwgKGludCkgKCdp
JyksIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9tYnN0YXRlX3QpLCAtMSwg
MCwgMCwgMSwgMSwgMCwgIiIsIChjaGFyKikgTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIC8v
IGF1dG9tYXRpYyBjb3B5IGNvbnN0cnVjdG9yCisgICBHX19tZW1mdW5jX3NldHVwKCJtYnN0YXRl
X3QiLCA5NjMsIEdfX0dfX3N0cmVhbV8xXzBfMiwgKGludCkgKCdpJyksIEdfX2dldF9saW5rZWRf
dGFnbnVtKCZHX19HX19zdHJlYW1MTl9tYnN0YXRlX3QpLCAtMSwgMCwgMSwgMSwgMSwgMCwgInUg
J21ic3RhdGVfdCcgLSAxMSAtIC0iLCAoY2hhciopIE5VTEwsICh2b2lkKikgTlVMTCwgMCk7Cisg
ICAvLyBhdXRvbWF0aWMgZGVzdHJ1Y3RvcgorICAgR19fbWVtZnVuY19zZXR1cCgifm1ic3RhdGVf
dCIsIDEwODksIEdfX0dfX3N0cmVhbV8xXzBfMywgKGludCkgKCd5JyksIC0xLCAtMSwgMCwgMCwg
MSwgMSwgMCwgIiIsIChjaGFyKikgTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIC8vIGF1dG9t
YXRpYyBhc3NpZ25tZW50IG9wZXJhdG9yCisgICBHX19tZW1mdW5jX3NldHVwKCJvcGVyYXRvcj0i
LCA5MzcsIEdfX0dfX3N0cmVhbV8xXzBfNCwgKGludCkgKCd1JyksIEdfX2dldF9saW5rZWRfdGFn
bnVtKCZHX19HX19zdHJlYW1MTl9tYnN0YXRlX3QpLCAtMSwgMSwgMSwgMSwgMSwgMCwgInUgJ21i
c3RhdGVfdCcgLSAxMSAtIC0iLCAoY2hhciopIE5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBH
X190YWdfbWVtZnVuY19yZXNldCgpOworfQorCitzdGF0aWMgdm9pZCBHX19zZXR1cF9tZW1mdW5j
c3RyZWFtb2ZmKHZvaWQpIHsKKyAgIC8qIHN0cmVhbW9mZiAqLworICAgR19fdGFnX21lbWZ1bmNf
c2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX3N0cmVhbW9mZikpOwor
ICAgLy8gYXV0b21hdGljIGRlZmF1bHQgY29uc3RydWN0b3IKKyAgIEdfX21lbWZ1bmNfc2V0dXAo
InN0cmVhbW9mZiIsIDk2NywgR19fR19fc3RyZWFtXzJfMF8xLCAoaW50KSAoJ2knKSwgR19fZ2V0
X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX3N0cmVhbW9mZiksIC0xLCAwLCAwLCAxLCAx
LCAwLCAiIiwgKGNoYXIqKSBOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgLy8gYXV0b21hdGlj
IGNvcHkgY29uc3RydWN0b3IKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInN0cmVhbW9mZiIsIDk2Nywg
R19fR19fc3RyZWFtXzJfMF8yLCAoaW50KSAoJ2knKSwgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdf
X0dfX3N0cmVhbUxOX3N0cmVhbW9mZiksIC0xLCAwLCAxLCAxLCAxLCAwLCAidSAnc3RyZWFtb2Zm
JyAtIDExIC0gLSIsIChjaGFyKikgTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIC8vIGF1dG9t
YXRpYyBkZXN0cnVjdG9yCisgICBHX19tZW1mdW5jX3NldHVwKCJ+c3RyZWFtb2ZmIiwgMTA5Mywg
R19fR19fc3RyZWFtXzJfMF8zLCAoaW50KSAoJ3knKSwgLTEsIC0xLCAwLCAwLCAxLCAxLCAwLCAi
IiwgKGNoYXIqKSBOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgLy8gYXV0b21hdGljIGFzc2ln
bm1lbnQgb3BlcmF0b3IKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPSIsIDkzNywgR19f
R19fc3RyZWFtXzJfMF80LCAoaW50KSAoJ3UnKSwgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0df
X3N0cmVhbUxOX3N0cmVhbW9mZiksIC0xLCAxLCAxLCAxLCAxLCAwLCAidSAnc3RyZWFtb2ZmJyAt
IDExIC0gLSIsIChjaGFyKikgTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX3RhZ19tZW1m
dW5jX3Jlc2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIEdfX3NldHVwX21lbWZ1bmNmcG9zbEVtYnN0
YXRlX3RnUih2b2lkKSB7CisgICAvKiBmcG9zPG1ic3RhdGVfdD4gKi8KKyAgIEdfX3RhZ19tZW1m
dW5jX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9mcG9zbEVtYnN0
YXRlX3RnUikpOworICAgR19fbWVtZnVuY19zZXR1cCgiZnBvczxtYnN0YXRlX3Q+IiwxNTI1LEdf
X0dfX3N0cmVhbV8zXzBfMSwgMTA1LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFt
TE5fZnBvc2xFbWJzdGF0ZV90Z1IpLCAtMSwgMCwgMCwgMSwgMSwgMCwgIiIsIChjaGFyKilOVUxM
LCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgiZnBvczxtYnN0YXRlX3Q+
IiwxNTI1LEdfX0dfX3N0cmVhbV8zXzBfMiwgMTA1LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19f
R19fc3RyZWFtTE5fZnBvc2xFbWJzdGF0ZV90Z1IpLCAtMSwgMCwgMSwgMSwgMSwgMCwgInUgJ2Zw
b3M8bWJzdGF0ZV90PicgLSAxMSAtIC0iLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsK
KyAgIEdfX21lbWZ1bmNfc2V0dXAoImZwb3M8bWJzdGF0ZV90PiIsMTUyNSxHX19HX19zdHJlYW1f
M18wXzMsIDEwNSwgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Zwb3NsRW1i
c3RhdGVfdGdSKSwgLTEsIDAsIDEsIDEsIDEsIDAsICJuIC0gLSAwIC0gLSIsIChjaGFyKilOVUxM
LCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgib3BlcmF0b3Igc3RyZWFt
b2ZmIiwxODc1LEdfX0dfX3N0cmVhbV8zXzBfNCwgMTEwLCAtMSwgR19fZGVmaW5lZF90eXBlbmFt
ZSgic3RyZWFtb2ZmIiksIDAsIDAsIDEsIDEsIDgsICIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBO
VUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yKyIsOTE5LEdfX0dfX3N0cmVh
bV8zXzBfNSwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fZnBvc2xF
bWJzdGF0ZV90Z1IpLCAtMSwgMCwgMSwgMSwgMSwgOCwgIm4gLSAnc3RyZWFtb2ZmJyAwIC0gYSIs
IChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgib3Bl
cmF0b3ItIiw5MjEsR19fR19fc3RyZWFtXzNfMF82LCAxMTcsIEdfX2dldF9saW5rZWRfdGFnbnVt
KCZHX19HX19zdHJlYW1MTl9mcG9zbEVtYnN0YXRlX3RnUiksIC0xLCAwLCAxLCAxLCAxLCA4LCAi
biAtICdzdHJlYW1vZmYnIDAgLSBhIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7Cisg
ICBHX19tZW1mdW5jX3NldHVwKCJvcGVyYXRvci0iLDkyMSxHX19HX19zdHJlYW1fM18wXzcsIDEx
MCwgLTEsIEdfX2RlZmluZWRfdHlwZW5hbWUoInN0cmVhbW9mZiIpLCAwLCAxLCAxLCAxLCA4LCAi
dSAnZnBvczxtYnN0YXRlX3Q+JyAtIDExIC0gYSIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEws
IDApOworICAgR19fbWVtZnVuY19zZXR1cCgib3BlcmF0b3IrPSIsOTgwLEdfX0dfX3N0cmVhbV8z
XzBfOCwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fZnBvc2xFbWJz
dGF0ZV90Z1IpLCAtMSwgMSwgMSwgMSwgMSwgMCwgIm4gLSAnc3RyZWFtb2ZmJyAwIC0gYSIsIChj
aGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgib3BlcmF0
b3ItPSIsOTgyLEdfX0dfX3N0cmVhbV8zXzBfOSwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgm
R19fR19fc3RyZWFtTE5fZnBvc2xFbWJzdGF0ZV90Z1IpLCAtMSwgMSwgMSwgMSwgMSwgMCwgIm4g
LSAnc3RyZWFtb2ZmJyAwIC0gYSIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAg
R19fbWVtZnVuY19zZXR1cCgic3RhdGUiLDU0NSxHX19HX19zdHJlYW1fM18wXzEwLCAxMTcsIEdf
X2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9tYnN0YXRlX3QpLCBHX19kZWZpbmVk
X3R5cGVuYW1lKCJtYnN0YXRlX3QiKSwgMCwgMCwgMSwgMSwgOCwgIiIsIChjaGFyKilOVUxMLCAo
dm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgic3RhdGUiLDU0NSxHX19HX19z
dHJlYW1fM18wXzExLCAxMjEsIC0xLCAtMSwgMCwgMSwgMSwgMSwgMCwgInUgJ21ic3RhdGVfdCcg
J21ic3RhdGVfdCcgMCAtIGEiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIC8v
IGF1dG9tYXRpYyBkZXN0cnVjdG9yCisgICBHX19tZW1mdW5jX3NldHVwKCJ+ZnBvczxtYnN0YXRl
X3Q+IiwgMTY1MSwgR19fR19fc3RyZWFtXzNfMF8xMiwgKGludCkgKCd5JyksIC0xLCAtMSwgMCwg
MCwgMSwgMSwgMCwgIiIsIChjaGFyKikgTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIC8vIGF1
dG9tYXRpYyBhc3NpZ25tZW50IG9wZXJhdG9yCisgICBHX19tZW1mdW5jX3NldHVwKCJvcGVyYXRv
cj0iLCA5MzcsIEdfX0dfX3N0cmVhbV8zXzBfMTMsIChpbnQpICgndScpLCBHX19nZXRfbGlua2Vk
X3RhZ251bSgmR19fR19fc3RyZWFtTE5fZnBvc2xFbWJzdGF0ZV90Z1IpLCAtMSwgMSwgMSwgMSwg
MSwgMCwgInUgJ2Zwb3M8bWJzdGF0ZV90PicgLSAxMSAtIC0iLCAoY2hhciopIE5VTEwsICh2b2lk
KikgTlVMTCwgMCk7CisgICBHX190YWdfbWVtZnVuY19yZXNldCgpOworfQorCitzdGF0aWMgdm9p
ZCBHX19zZXR1cF9tZW1mdW5jaW9zX2Jhc2Uodm9pZCkgeworICAgLyogaW9zX2Jhc2UgKi8KKyAg
IEdfX3RhZ19tZW1mdW5jX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1M
Tl9pb3NfYmFzZSkpOworICAgR19fbWVtZnVuY19zZXR1cCgicmVnaXN0ZXJfY2FsbGJhY2siLDE3
NzcsR19fR19fc3RyZWFtXzRfMF8xLCAxMjEsIC0xLCAtMSwgMCwgMiwgMSwgMSwgMCwgCisiWSAt
ICdpb3NfYmFzZTo6ZXZlbnRfY2FsbGJhY2snIDAgLSBmbiBpIC0gLSAwIC0gaW5kZXgiLCAoY2hh
ciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImZsYWdzIiw1
MjUsR19fR19fc3RyZWFtXzRfMF8yLCAxMDUsIC0xLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJpb3Nf
YmFzZTo6Zm10ZmxhZ3MiKSwgMCwgMCwgMSwgMSwgOCwgIiIsIChjaGFyKilOVUxMLCAodm9pZCop
IE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgiZmxhZ3MiLDUyNSxHX19HX19zdHJlYW1f
NF8wXzMsIDEwNSwgLTEsIEdfX2RlZmluZWRfdHlwZW5hbWUoImlvc19iYXNlOjpmbXRmbGFncyIp
LCAwLCAxLCAxLCAxLCAwLCAiaSAtICdpb3NfYmFzZTo6Zm10ZmxhZ3MnIDAgLSBmbXRmbCIsIChj
aGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgic2V0ZiIs
NDM0LEdfX0dfX3N0cmVhbV80XzBfNCwgMTA1LCAtMSwgR19fZGVmaW5lZF90eXBlbmFtZSgiaW9z
X2Jhc2U6OmZtdGZsYWdzIiksIDAsIDEsIDEsIDEsIDAsICJpIC0gJ2lvc19iYXNlOjpmbXRmbGFn
cycgMCAtIGZtdGZsIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1m
dW5jX3NldHVwKCJzZXRmIiw0MzQsR19fR19fc3RyZWFtXzRfMF81LCAxMDUsIC0xLCBHX19kZWZp
bmVkX3R5cGVuYW1lKCJpb3NfYmFzZTo6Zm10ZmxhZ3MiKSwgMCwgMiwgMSwgMSwgMCwgCisiaSAt
ICdpb3NfYmFzZTo6Zm10ZmxhZ3MnIDAgLSBmbXRmbCBpIC0gJ2lvc19iYXNlOjpmbXRmbGFncycg
MCAtIG1hc2siLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNf
c2V0dXAoInVuc2V0ZiIsNjYxLEdfX0dfX3N0cmVhbV80XzBfNiwgMTIxLCAtMSwgLTEsIDAsIDEs
IDEsIDEsIDAsICJpIC0gJ2lvc19iYXNlOjpmbXRmbGFncycgMCAtIG1hc2siLCAoY2hhciopTlVM
TCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInByZWNpc2lvbiIsOTcy
LEdfX0dfX3N0cmVhbV80XzBfNywgMTEwLCAtMSwgR19fZGVmaW5lZF90eXBlbmFtZSgic3RyZWFt
c2l6ZSIpLCAwLCAwLCAxLCAxLCA4LCAiIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7
CisgICBHX19tZW1mdW5jX3NldHVwKCJwcmVjaXNpb24iLDk3MixHX19HX19zdHJlYW1fNF8wXzgs
IDExMCwgLTEsIEdfX2RlZmluZWRfdHlwZW5hbWUoInN0cmVhbXNpemUiKSwgMCwgMSwgMSwgMSwg
MCwgIm4gLSAnc3RyZWFtc2l6ZScgMCAtIHByZWMiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxM
LCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIndpZHRoIiw1NDQsR19fR19fc3RyZWFtXzRfMF85
LCAxMTAsIC0xLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJzdHJlYW1zaXplIiksIDAsIDAsIDEsIDEs
IDgsICIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0
dXAoIndpZHRoIiw1NDQsR19fR19fc3RyZWFtXzRfMF8xMCwgMTEwLCAtMSwgR19fZGVmaW5lZF90
eXBlbmFtZSgic3RyZWFtc2l6ZSIpLCAwLCAxLCAxLCAxLCAwLCAibiAtICdzdHJlYW1zaXplJyAw
IC0gd2lkZSIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19z
ZXR1cCgieGFsbG9jIiw2NDMsR19fR19fc3RyZWFtXzRfMF8xMSwgMTA1LCAtMSwgLTEsIDAsIDAs
IDMsIDEsIDAsICIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSAoaW50ICgqKSgpKSgmaW9zX2Jhc2U6
OnhhbGxvYyksIDApOworICAgR19fbWVtZnVuY19zZXR1cCgiaXdvcmQiLDU0OSxHX19HX19zdHJl
YW1fNF8wXzEyLCAxMDgsIC0xLCAtMSwgMSwgMSwgMSwgMSwgMCwgImkgLSAtIDAgLSBpbmRleCIs
IChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgicHdv
cmQiLDU1NixHX19HX19zdHJlYW1fNF8wXzEzLCA4OSwgLTEsIC0xLCAxLCAxLCAxLCAxLCAwLCAi
aSAtIC0gMCAtIGluZGV4IiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19t
ZW1mdW5jX3NldHVwKCJzeW5jX3dpdGhfc3RkaW8iLDE2MjYsR19fR19fc3RyZWFtXzRfMF8xNCwg
MTAzLCAtMSwgLTEsIDAsIDEsIDEsIDEsIDAsICJnIC0gLSAwICd0cnVlJyBzeW5jIiwgKGNoYXIq
KU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJpb3NfYmFzZSIs
ODM3LChHX19JbnRlcmZhY2VNZXRob2QpIE5VTEwsIDEwNSwgR19fZ2V0X2xpbmtlZF90YWdudW0o
JkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlKSwgLTEsIDAsIDAsIDEsIDIsIDAsICIiLCAoY2hhciop
TlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImlvc19iYXNlIiw4
MzcsKEdfX0ludGVyZmFjZU1ldGhvZCkgTlVMTCwgMTA1LCBHX19nZXRfbGlua2VkX3RhZ251bSgm
R19fR19fc3RyZWFtTE5faW9zX2Jhc2UpLCAtMSwgMCwgMSwgMSwgNCwgMCwgInUgJ2lvc19iYXNl
JyAtIDExIC0geCIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVu
Y19zZXR1cCgib3BlcmF0b3I9Iiw5MzcsKEdfX0ludGVyZmFjZU1ldGhvZCkgTlVMTCwgMTE3LCBH
X19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2UpLCAtMSwgMSwgMSwg
MSwgNCwgMCwgInUgJ2lvc19iYXNlJyAtIDExIC0geCIsIChjaGFyKilOVUxMLCAodm9pZCopIE5V
TEwsIDApOworICAgLy8gYXV0b21hdGljIGRlc3RydWN0b3IKKyAgIEdfX21lbWZ1bmNfc2V0dXAo
In5pb3NfYmFzZSIsIDk2MywgKEdfX0ludGVyZmFjZU1ldGhvZCkgTlVMTCwgKGludCkgKCd5Jyks
IC0xLCAtMSwgMCwgMCwgMSwgMiwgMCwgIiIsIChjaGFyKikgTlVMTCwgKHZvaWQqKSBOVUxMLCAw
KTsKKyAgIEdfX3RhZ19tZW1mdW5jX3Jlc2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIEdfX3NldHVw
X21lbWZ1bmNpb3NfYmFzZWNMY0xJbml0KHZvaWQpIHsKKyAgIC8qIGlvc19iYXNlOjpJbml0ICov
CisgICBHX190YWdfbWVtZnVuY19zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3Ry
ZWFtTE5faW9zX2Jhc2VjTGNMSW5pdCkpOworICAgR19fbWVtZnVuY19zZXR1cCgiSW5pdCIsNDA0
LEdfX0dfX3N0cmVhbV8xMF8wXzEsIDEwNSwgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0
cmVhbUxOX2lvc19iYXNlY0xjTEluaXQpLCAtMSwgMCwgMCwgMSwgMSwgMCwgIiIsIChjaGFyKilO
VUxMLCAodm9pZCopIE5VTEwsIDApOworICAgLy8gYXV0b21hdGljIGNvcHkgY29uc3RydWN0b3IK
KyAgIEdfX21lbWZ1bmNfc2V0dXAoIkluaXQiLCA0MDQsIEdfX0dfX3N0cmVhbV8xMF8wXzIsIChp
bnQpICgnaScpLCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2Vj
TGNMSW5pdCksIC0xLCAwLCAxLCAxLCAxLCAwLCAidSAnaW9zX2Jhc2U6OkluaXQnIC0gMTEgLSAt
IiwgKGNoYXIqKSBOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgLy8gYXV0b21hdGljIGRlc3Ry
dWN0b3IKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIn5Jbml0IiwgNTMwLCAoR19fSW50ZXJmYWNlTWV0
aG9kKSBOVUxMLCAoaW50KSAoJ3knKSwgLTEsIC0xLCAwLCAwLCAxLCA0LCAwLCAiIiwgKGNoYXIq
KSBOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgLy8gYXV0b21hdGljIGFzc2lnbm1lbnQgb3Bl
cmF0b3IKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPSIsIDkzNywgR19fR19fc3RyZWFt
XzEwXzBfMywgKGludCkgKCd1JyksIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1M
Tl9pb3NfYmFzZWNMY0xJbml0KSwgLTEsIDEsIDEsIDEsIDEsIDAsICJ1ICdpb3NfYmFzZTo6SW5p
dCcgLSAxMSAtIC0iLCAoY2hhciopIE5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX190YWdf
bWVtZnVuY19yZXNldCgpOworfQorCitzdGF0aWMgdm9pZCBHX19zZXR1cF9tZW1mdW5jY2hhcl90
cmFpdHNsRWNoYXJnUih2b2lkKSB7CisgICAvKiBjaGFyX3RyYWl0czxjaGFyPiAqLworICAgR19f
dGFnX21lbWZ1bmNfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2No
YXJfdHJhaXRzbEVjaGFyZ1IpKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImFzc2lnbiIsNjQ1LEdf
X0dfX3N0cmVhbV8xMV8wXzEsIDEyMSwgLTEsIC0xLCAwLCAyLCAzLCAxLCAwLCAKKyJjIC0gJ2No
YXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5cGUnIDEgLSBjMSBjIC0gJ2NoYXJfdHJhaXRzPGNoYXI+
OjpjaGFyX3R5cGUnIDExIC0gYzIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSAodm9pZCAoKikoY2hh
cl90cmFpdHM8Y2hhcj46OmNoYXJfdHlwZSYsIGNvbnN0IGNoYXJfdHJhaXRzPGNoYXI+OjpjaGFy
X3R5cGUmKSkoJmNoYXJfdHJhaXRzPGNoYXI+Ojphc3NpZ24pLCAwKTsKKyAgIEdfX21lbWZ1bmNf
c2V0dXAoInRvX2NoYXJfdHlwZSIsMTI4MSxHX19HX19zdHJlYW1fMTFfMF8yLCA5OSwgLTEsIEdf
X2RlZmluZWRfdHlwZW5hbWUoImNoYXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5cGUiKSwgMCwgMSwg
MywgMSwgMCwgImkgLSAnY2hhcl90cmFpdHM8Y2hhcj46OmludF90eXBlJyAxMSAtIGMiLCAoY2hh
ciopTlVMTCwgKHZvaWQqKSAoY2hhcl90cmFpdHM8Y2hhcj46OmNoYXJfdHlwZSAoKikoY29uc3Qg
Y2hhcl90cmFpdHM8Y2hhcj46OmludF90eXBlJikpKCZjaGFyX3RyYWl0czxjaGFyPjo6dG9fY2hh
cl90eXBlKSwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJ0b19pbnRfdHlwZSIsMTE5OCxHX19H
X19zdHJlYW1fMTFfMF8zLCAxMDUsIC0xLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJjaGFyX3RyYWl0
czxjaGFyPjo6aW50X3R5cGUiKSwgMCwgMSwgMywgMSwgMCwgImMgLSAnY2hhcl90cmFpdHM8Y2hh
cj46OmNoYXJfdHlwZScgMTEgLSBjIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgKGNoYXJfdHJhaXRz
PGNoYXI+OjppbnRfdHlwZSAoKikoY29uc3QgY2hhcl90cmFpdHM8Y2hhcj46OmNoYXJfdHlwZSYp
KSgmY2hhcl90cmFpdHM8Y2hhcj46OnRvX2ludF90eXBlKSwgMCk7CisgICBHX19tZW1mdW5jX3Nl
dHVwKCJlcSIsMjE0LEdfX0dfX3N0cmVhbV8xMV8wXzQsIDEwMywgLTEsIC0xLCAwLCAyLCAzLCAx
LCAwLCAKKyJjIC0gJ2NoYXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5cGUnIDExIC0gYzEgYyAtICdj
aGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBlJyAxMSAtIGMyIiwgKGNoYXIqKU5VTEwsICh2b2lk
KikgKGJvb2wgKCopKGNvbnN0IGNoYXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5cGUmLCBjb25zdCBj
aGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBlJikpKCZjaGFyX3RyYWl0czxjaGFyPjo6ZXEpLCAw
KTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImx0IiwyMjQsR19fR19fc3RyZWFtXzExXzBfNSwgMTAz
LCAtMSwgLTEsIDAsIDIsIDMsIDEsIDAsIAorImMgLSAnY2hhcl90cmFpdHM8Y2hhcj46OmNoYXJf
dHlwZScgMTEgLSBjMSBjIC0gJ2NoYXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5cGUnIDExIC0gYzIi
LCAoY2hhciopTlVMTCwgKHZvaWQqKSAoYm9vbCAoKikoY29uc3QgY2hhcl90cmFpdHM8Y2hhcj46
OmNoYXJfdHlwZSYsIGNvbnN0IGNoYXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5cGUmKSkoJmNoYXJf
dHJhaXRzPGNoYXI+OjpsdCksIDApOworICAgR19fbWVtZnVuY19zZXR1cCgiY29tcGFyZSIsNzQz
LEdfX0dfX3N0cmVhbV8xMV8wXzYsIDEwNSwgLTEsIC0xLCAwLCAzLCAzLCAxLCAwLCAKKyJDIC0g
J2NoYXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5cGUnIDEwIC0gczEgQyAtICdjaGFyX3RyYWl0czxj
aGFyPjo6Y2hhcl90eXBlJyAxMCAtIHMyICIKKyJrIC0gJ3NpemVfdCcgMCAtIG4iLCAoY2hhciop
TlVMTCwgKHZvaWQqKSAoaW50ICgqKShjb25zdCBjaGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBl
KiwgY29uc3QgY2hhcl90cmFpdHM8Y2hhcj46OmNoYXJfdHlwZSosIHNpemVfdCkpKCZjaGFyX3Ry
YWl0czxjaGFyPjo6Y29tcGFyZSksIDApOworICAgR19fbWVtZnVuY19zZXR1cCgiZmluZCIsNDE3
LEdfX0dfX3N0cmVhbV8xMV8wXzcsIDY3LCAtMSwgR19fZGVmaW5lZF90eXBlbmFtZSgiY2hhcl90
cmFpdHM8Y2hhcj46OmNoYXJfdHlwZSIpLCAwLCAzLCAzLCAxLCAxLCAKKyJDIC0gJ2NoYXJfdHJh
aXRzPGNoYXI+OjpjaGFyX3R5cGUnIDEwIC0gcyBpIC0gLSAwIC0gbiAiCisiYyAtICdjaGFyX3Ry
YWl0czxjaGFyPjo6Y2hhcl90eXBlJyAxMSAtIGEiLCAoY2hhciopTlVMTCwgKHZvaWQqKSAoY29u
c3QgY2hhcl90cmFpdHM8Y2hhcj46OmNoYXJfdHlwZSogKCopKGNvbnN0IGNoYXJfdHJhaXRzPGNo
YXI+OjpjaGFyX3R5cGUqLCBpbnQsIGNvbnN0IGNoYXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5cGUm
KSkoJmNoYXJfdHJhaXRzPGNoYXI+OjpmaW5kKSwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJl
cV9pbnRfdHlwZSIsMTE4NSxHX19HX19zdHJlYW1fMTFfMF84LCAxMDMsIC0xLCAtMSwgMCwgMiwg
MywgMSwgMCwgCisiaSAtICdjaGFyX3RyYWl0czxjaGFyPjo6aW50X3R5cGUnIDExIC0gYzEgaSAt
ICdjaGFyX3RyYWl0czxjaGFyPjo6aW50X3R5cGUnIDExIC0gYzIiLCAoY2hhciopTlVMTCwgKHZv
aWQqKSAoYm9vbCAoKikoY29uc3QgY2hhcl90cmFpdHM8Y2hhcj46OmludF90eXBlJiwgY29uc3Qg
Y2hhcl90cmFpdHM8Y2hhcj46OmludF90eXBlJikpKCZjaGFyX3RyYWl0czxjaGFyPjo6ZXFfaW50
X3R5cGUpLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImVvZiIsMzE0LEdfX0dfX3N0cmVhbV8x
MV8wXzksIDEwNSwgLTEsIEdfX2RlZmluZWRfdHlwZW5hbWUoImNoYXJfdHJhaXRzPGNoYXI+Ojpp
bnRfdHlwZSIpLCAwLCAwLCAzLCAxLCAwLCAiIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgKGNoYXJf
dHJhaXRzPGNoYXI+OjppbnRfdHlwZSAoKikoKSkoJmNoYXJfdHJhaXRzPGNoYXI+Ojplb2YpLCAw
KTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm5vdF9lb2YiLDc0NixHX19HX19zdHJlYW1fMTFfMF8x
MCwgMTA1LCAtMSwgR19fZGVmaW5lZF90eXBlbmFtZSgiY2hhcl90cmFpdHM8Y2hhcj46OmludF90
eXBlIiksIDAsIDEsIDMsIDEsIDAsICJpIC0gJ2NoYXJfdHJhaXRzPGNoYXI+OjppbnRfdHlwZScg
MTEgLSBjIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgKGNoYXJfdHJhaXRzPGNoYXI+OjppbnRfdHlw
ZSAoKikoY29uc3QgY2hhcl90cmFpdHM8Y2hhcj46OmludF90eXBlJikpKCZjaGFyX3RyYWl0czxj
aGFyPjo6bm90X2VvZiksIDApOworICAgR19fbWVtZnVuY19zZXR1cCgibGVuZ3RoIiw2NDIsR19f
R19fc3RyZWFtXzExXzBfMTEsIDEwNywgLTEsIEdfX2RlZmluZWRfdHlwZW5hbWUoInNpemVfdCIp
LCAwLCAxLCAzLCAxLCAwLCAiQyAtICdjaGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBlJyAxMCAt
IHMiLCAoY2hhciopTlVMTCwgKHZvaWQqKSAoc2l6ZV90ICgqKShjb25zdCBjaGFyX3RyYWl0czxj
aGFyPjo6Y2hhcl90eXBlKikpKCZjaGFyX3RyYWl0czxjaGFyPjo6bGVuZ3RoKSwgMCk7CisgICBH
X19tZW1mdW5jX3NldHVwKCJjb3B5Iiw0NDMsR19fR19fc3RyZWFtXzExXzBfMTIsIDY3LCAtMSwg
R19fZGVmaW5lZF90eXBlbmFtZSgiY2hhcl90cmFpdHM8Y2hhcj46OmNoYXJfdHlwZSIpLCAwLCAz
LCAzLCAxLCAwLCAKKyJDIC0gJ2NoYXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5cGUnIDAgLSBkc3Qg
QyAtICdjaGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBlJyAxMCAtIHNyYyAiCisiayAtICdzaXpl
X3QnIDAgLSBuIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgKGNoYXJfdHJhaXRzPGNoYXI+OjpjaGFy
X3R5cGUqICgqKShjaGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBlKiwgY29uc3QgY2hhcl90cmFp
dHM8Y2hhcj46OmNoYXJfdHlwZSosIHNpemVfdCkpKCZjaGFyX3RyYWl0czxjaGFyPjo6Y29weSks
IDApOworICAgR19fbWVtZnVuY19zZXR1cCgibW92ZSIsNDM5LEdfX0dfX3N0cmVhbV8xMV8wXzEz
LCA2NywgLTEsIEdfX2RlZmluZWRfdHlwZW5hbWUoImNoYXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5
cGUiKSwgMCwgMywgMywgMSwgMCwgCisiQyAtICdjaGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBl
JyAwIC0gczEgQyAtICdjaGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBlJyAxMCAtIHMyICIKKyJr
IC0gJ3NpemVfdCcgMCAtIG4iLCAoY2hhciopTlVMTCwgKHZvaWQqKSAoY2hhcl90cmFpdHM8Y2hh
cj46OmNoYXJfdHlwZSogKCopKGNoYXJfdHJhaXRzPGNoYXI+OjpjaGFyX3R5cGUqLCBjb25zdCBj
aGFyX3RyYWl0czxjaGFyPjo6Y2hhcl90eXBlKiwgc2l6ZV90KSkoJmNoYXJfdHJhaXRzPGNoYXI+
Ojptb3ZlKSwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJhc3NpZ24iLDY0NSxHX19HX19zdHJl
YW1fMTFfMF8xNCwgNjcsIC0xLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJjaGFyX3RyYWl0czxjaGFy
Pjo6Y2hhcl90eXBlIiksIDAsIDMsIDMsIDEsIDAsIAorIkMgLSAnY2hhcl90cmFpdHM8Y2hhcj46
OmNoYXJfdHlwZScgMCAtIHMgayAtICdzaXplX3QnIDAgLSBuICIKKyJjIC0gJ2NoYXJfdHJhaXRz
PGNoYXI+OjpjaGFyX3R5cGUnIDEwIC0gYSIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDAp
OworICAgLy8gYXV0b21hdGljIGRlZmF1bHQgY29uc3RydWN0b3IKKyAgIEdfX21lbWZ1bmNfc2V0
dXAoImNoYXJfdHJhaXRzPGNoYXI+IiwgMTcwOCwgR19fR19fc3RyZWFtXzExXzBfMTUsIChpbnQp
ICgnaScpLCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fY2hhcl90cmFpdHNs
RWNoYXJnUiksIC0xLCAwLCAwLCAxLCAxLCAwLCAiIiwgKGNoYXIqKSBOVUxMLCAodm9pZCopIE5V
TEwsIDApOworICAgLy8gYXV0b21hdGljIGNvcHkgY29uc3RydWN0b3IKKyAgIEdfX21lbWZ1bmNf
c2V0dXAoImNoYXJfdHJhaXRzPGNoYXI+IiwgMTcwOCwgR19fR19fc3RyZWFtXzExXzBfMTYsIChp
bnQpICgnaScpLCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fY2hhcl90cmFp
dHNsRWNoYXJnUiksIC0xLCAwLCAxLCAxLCAxLCAwLCAidSAnY2hhcl90cmFpdHM8Y2hhcj4nIC0g
MTEgLSAtIiwgKGNoYXIqKSBOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgLy8gYXV0b21hdGlj
IGRlc3RydWN0b3IKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIn5jaGFyX3RyYWl0czxjaGFyPiIsIDE4
MzQsIEdfX0dfX3N0cmVhbV8xMV8wXzE3LCAoaW50KSAoJ3knKSwgLTEsIC0xLCAwLCAwLCAxLCAx
LCAwLCAiIiwgKGNoYXIqKSBOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgLy8gYXV0b21hdGlj
IGFzc2lnbm1lbnQgb3BlcmF0b3IKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPSIsIDkz
NywgR19fR19fc3RyZWFtXzExXzBfMTgsIChpbnQpICgndScpLCBHX19nZXRfbGlua2VkX3RhZ251
bSgmR19fR19fc3RyZWFtTE5fY2hhcl90cmFpdHNsRWNoYXJnUiksIC0xLCAxLCAxLCAxLCAxLCAw
LCAidSAnY2hhcl90cmFpdHM8Y2hhcj4nIC0gMTEgLSAtIiwgKGNoYXIqKSBOVUxMLCAodm9pZCop
IE5VTEwsIDApOworICAgR19fdGFnX21lbWZ1bmNfcmVzZXQoKTsKK30KKworc3RhdGljIHZvaWQg
R19fc2V0dXBfbWVtZnVuY2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1Jz
UGdSKHZvaWQpIHsKKyAgIC8qIGJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+
ICovCisgICBHX190YWdfbWVtZnVuY19zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19f
c3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpKTsK
KyAgIEdfX21lbWZ1bmNfc2V0dXAoImJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFy
PiA+IiwzNjg2LEdfX0dfX3N0cmVhbV8xMl8wXzEsIDEwNSwgR19fZ2V0X2xpbmtlZF90YWdudW0o
JkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1Jz
UGdSKSwgLTEsIDAsIDEsIDUsIDEsIDAsICJVICdiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPiA+JyAtIDAgLSBzYiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOwor
ICAgR19fbWVtZnVuY19zZXR1cCgiZ2V0IiwzMjAsR19fR19fc3RyZWFtXzEyXzBfMiwgMTA1LCAt
MSwgR19fZGVmaW5lZF90eXBlbmFtZSgiYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+ID46OmludF90eXBlIiksIDAsIDAsIDEsIDEsIDAsICIiLCAoY2hhciopTlVMTCwgKHZvaWQq
KSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImdldCIsMzIwLEdfX0dfX3N0cmVhbV8x
Ml8wXzMsIDExNywgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lz
dHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwgR19fZGVmaW5lZF90eXBlbmFt
ZSgiYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46Ol9faXN0cmVhbV90eXBl
IiksIDEsIDMsIDEsIDEsIDAsIAorIkMgLSAnYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRz
PGNoYXI+ID46OmNoYXJfdHlwZScgMCAtIHMgbiAtICdzdHJlYW1zaXplJyAwIC0gbiAiCisiYyAt
ICdiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6Y2hhcl90eXBlJyAwIC0g
ZGVsaW0iLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0
dXAoImdldCIsMzIwLEdfX0dfX3N0cmVhbV8xMl8wXzQsIDExNywgR19fZ2V0X2xpbmtlZF90YWdu
dW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFy
Z1JzUGdSKSwgR19fZGVmaW5lZF90eXBlbmFtZSgiYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJh
aXRzPGNoYXI+ID46Ol9faXN0cmVhbV90eXBlIiksIDEsIDIsIDEsIDEsIDAsIAorIkMgLSAnYmFz
aWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OmNoYXJfdHlwZScgMCAtIHMgbiAt
ICdzdHJlYW1zaXplJyAwIC0gbiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAg
R19fbWVtZnVuY19zZXR1cCgiZ2V0IiwzMjAsR19fR19fc3RyZWFtXzEyXzBfNSwgMTE3LCBHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJiYXNpY19pc3RyZWFt
PGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6X19pc3RyZWFtX3R5cGUiKSwgMSwgMSwgMSwgMSwg
MCwgImMgLSAnYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OmNoYXJfdHlw
ZScgMSAtIGMiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNf
c2V0dXAoImdldCIsMzIwLEdfX0dfX3N0cmVhbV8xMl8wXzYsIDExNywgR19fZ2V0X2xpbmtlZF90
YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSKSwgR19fZGVmaW5lZF90eXBlbmFtZSgiYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+ID46Ol9faXN0cmVhbV90eXBlIiksIDEsIDIsIDEsIDEsIDAsIAorInUgJ2Jh
c2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4nICdiYXNpY19pc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6X19zdHJlYW1idWZfdHlwZScgMSAtIHNiIGMgLSAnYmFz
aWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OmNoYXJfdHlwZScgMCAtIGRlbGlt
IiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJn
ZXQiLDMyMCxHX19HX19zdHJlYW1fMTJfMF83LCAxMTcsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZH
X19HX19zdHJlYW1MTl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1Bn
UiksIEdfX2RlZmluZWRfdHlwZW5hbWUoImJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxj
aGFyPiA+OjpfX2lzdHJlYW1fdHlwZSIpLCAxLCAxLCAxLCAxLCAwLCAidSAnYmFzaWNfc3RyZWFt
YnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPicgJ2Jhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPiA+OjpfX3N0cmVhbWJ1Zl90eXBlJyAxIC0gc2IiLCAoY2hhciopTlVMTCwgKHZv
aWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImdldGxpbmUiLDc0NCxHX19HX19z
dHJlYW1fMTJfMF84LCAxMTcsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9i
YXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksIEdfX2RlZmluZWRf
dHlwZW5hbWUoImJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpfX2lzdHJl
YW1fdHlwZSIpLCAxLCAzLCAxLCAxLCAwLCAKKyJDIC0gJ2Jhc2ljX2lzdHJlYW08Y2hhcixjaGFy
X3RyYWl0czxjaGFyPiA+OjpjaGFyX3R5cGUnIDAgLSBzIG4gLSAnc3RyZWFtc2l6ZScgMCAtIG4g
IgorImMgLSAnYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OmNoYXJfdHlw
ZScgMCAtIGRlbGltIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1m
dW5jX3NldHVwKCJnZXRsaW5lIiw3NDQsR19fR19fc3RyZWFtXzEyXzBfOSwgMTE3LCBHX19nZXRf
bGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90
cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJiYXNpY19pc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6X19pc3RyZWFtX3R5cGUiKSwgMSwgMiwgMSwgMSwgMCwg
CisiQyAtICdiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6Y2hhcl90eXBl
JyAwIC0gcyBuIC0gJ3N0cmVhbXNpemUnIDAgLSBuIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVM
TCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJpZ25vcmUiLDY0NCxHX19HX19zdHJlYW1fMTJf
MF8xMCwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0
cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1l
KCJiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6X19pc3RyZWFtX3R5cGUi
KSwgMSwgMiwgMSwgMSwgMCwgCisibiAtICdzdHJlYW1zaXplJyAwIC0gbiBpIC0gJ2Jhc2ljX2lz
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjppbnRfdHlwZScgMCAtIGRlbGltIiwgKGNo
YXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJpZ25vcmUi
LDY0NCxHX19HX19zdHJlYW1fMTJfMF8xMSwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19f
R19fc3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1Ip
LCBHX19kZWZpbmVkX3R5cGVuYW1lKCJiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPjo6X19pc3RyZWFtX3R5cGUiKSwgMSwgMSwgMSwgMSwgMCwgIm4gLSAnc3RyZWFtc2l6ZScg
MCAnMScgbiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19z
ZXR1cCgicmVhZCIsNDEyLEdfX0dfX3N0cmVhbV8xMl8wXzEyLCAxMTcsIEdfX2dldF9saW5rZWRf
dGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUiksIEdfX2RlZmluZWRfdHlwZW5hbWUoImJhc2ljX2lzdHJlYW08Y2hhcixjaGFy
X3RyYWl0czxjaGFyPiA+OjpfX2lzdHJlYW1fdHlwZSIpLCAxLCAyLCAxLCAxLCAwLCAKKyJDIC0g
J2Jhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpjaGFyX3R5cGUnIDAgLSBz
IG4gLSAnc3RyZWFtc2l6ZScgMCAtIG4iLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsK
KyAgIEdfX21lbWZ1bmNfc2V0dXAoInJlYWRzb21lIiw4NDgsR19fR19fc3RyZWFtXzEyXzBfMTMs
IDExMCwgLTEsIEdfX2RlZmluZWRfdHlwZW5hbWUoInN0cmVhbXNpemUiKSwgMCwgMiwgMSwgMSwg
MCwgCisiQyAtICdiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6Y2hhcl90
eXBlJyAwIC0gcyBuIC0gJ3N0cmVhbXNpemUnIDAgLSBuIiwgKGNoYXIqKU5VTEwsICh2b2lkKikg
TlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJwZWVrIiw0MjEsR19fR19fc3RyZWFtXzEy
XzBfMTQsIDEwNSwgLTEsIC0xLCAwLCAwLCAxLCAxLCAwLCAiIiwgKGNoYXIqKU5VTEwsICh2b2lk
KikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJ0ZWxsZyIsNTM2LEdfX0dfX3N0cmVh
bV8xMl8wXzE1LCAxMTAsIC0xLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJiYXNpY19pc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6cG9zX3R5cGUiKSwgMCwgMCwgMSwgMSwgMCwgIiIsIChj
aGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgic2Vla2ci
LDUyNyxHX19HX19zdHJlYW1fMTJfMF8xNiwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19f
R19fc3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1Ip
LCBHX19kZWZpbmVkX3R5cGVuYW1lKCJiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPjo6X19pc3RyZWFtX3R5cGUiKSwgMSwgMSwgMSwgMSwgMCwgIm4gLSAnYmFzaWNfaXN0cmVh
bTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OnBvc190eXBlJyAwIC0gcG9zIiwgKGNoYXIqKU5V
TEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJzeW5jIiw0NDUsR19f
R19fc3RyZWFtXzEyXzBfMTcsIDEwNSwgLTEsIC0xLCAwLCAwLCAxLCAxLCAwLCAiIiwgKGNoYXIq
KU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJzZWVrZyIsNTI3
LEdfX0dfX3N0cmVhbV8xMl8wXzE4LCAxMTcsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19z
dHJlYW1MTl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksIEdf
X2RlZmluZWRfdHlwZW5hbWUoImJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+
OjpfX2lzdHJlYW1fdHlwZSIpLCAxLCAyLCAxLCAxLCAwLCAKKyJuIC0gJ2Jhc2ljX2lzdHJlYW08
Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpvZmZfdHlwZScgMCAtIC0gaSAtICdpb3NfYmFzZTo6
c2Vla2RpcicgMCAtIC0iLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21l
bWZ1bmNfc2V0dXAoInB1dGJhY2siLDc0NixHX19HX19zdHJlYW1fMTJfMF8xOSwgMTE3LCBHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJiYXNpY19pc3RyZWFt
PGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6X19pc3RyZWFtX3R5cGUiKSwgMSwgMSwgMSwgMSwg
MCwgImMgLSAnYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OmNoYXJfdHlw
ZScgMCAtIGMiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNf
c2V0dXAoInVuZ2V0Iiw1NDcsR19fR19fc3RyZWFtXzEyXzBfMjAsIDExNywgR19fZ2V0X2xpbmtl
ZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRz
bEVjaGFyZ1JzUGdSKSwgR19fZGVmaW5lZF90eXBlbmFtZSgiYmFzaWNfaXN0cmVhbTxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID46Ol9faXN0cmVhbV90eXBlIiksIDEsIDAsIDEsIDEsIDAsICIiLCAo
Y2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImdjb3Vu
dCIsNjU2LEdfX0dfX3N0cmVhbV8xMl8wXzIxLCAxMTAsIC0xLCBHX19kZWZpbmVkX3R5cGVuYW1l
KCJzdHJlYW1zaXplIiksIDAsIDAsIDEsIDEsIDgsICIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBO
VUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImJhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPiA+IiwzNjg2LChHX19JbnRlcmZhY2VNZXRob2QpIE5VTEwsIDEwNSwgR19fZ2V0
X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJf
dHJhaXRzbEVjaGFyZ1JzUGdSKSwgLTEsIDAsIDAsIDEsIDIsIDAsICIiLCAoY2hhciopTlVMTCwg
KHZvaWQqKSBOVUxMLCAwKTsKKyAgIC8vIGF1dG9tYXRpYyBkZXN0cnVjdG9yCisgICBHX19tZW1m
dW5jX3NldHVwKCJ+YmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4iLCAzODEy
LCBHX19HX19zdHJlYW1fMTJfMF8yMywgKGludCkgKCd5JyksIC0xLCAtMSwgMCwgMCwgMSwgMSwg
MCwgIiIsIChjaGFyKikgTlVMTCwgKHZvaWQqKSBOVUxMLCAxKTsKKyAgIEdfX3RhZ19tZW1mdW5j
X3Jlc2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIEdfX3NldHVwX21lbWZ1bmNiYXNpY19pb3NsRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKHZvaWQpIHsKKyAgIC8qIGJhc2ljX2lvczxjaGFy
LGNoYXJfdHJhaXRzPGNoYXI+ID4gKi8KKyAgIEdfX3RhZ19tZW1mdW5jX3NldHVwKEdfX2dldF9s
aW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRz
bEVjaGFyZ1JzUGdSKSk7CisgICBHX19tZW1mdW5jX3NldHVwKCJiYXNpY19pb3M8Y2hhcixjaGFy
X3RyYWl0czxjaGFyPiA+IiwzMjYwLEdfX0dfX3N0cmVhbV8xM18wXzEsIDEwNSwgR19fZ2V0X2xp
bmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lvc2xFY2hhcmNPY2hhcl90cmFpdHNs
RWNoYXJnUnNQZ1IpLCAtMSwgMCwgMSwgNSwgMSwgMCwgIlUgJ2Jhc2ljX3N0cmVhbWJ1ZjxjaGFy
LGNoYXJfdHJhaXRzPGNoYXI+ID4nIC0gMCAtIHNiX2FyZyIsIChjaGFyKilOVUxMLCAodm9pZCop
IE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgiZmlsbCIsNDIzLEdfX0dfX3N0cmVhbV8x
M18wXzIsIDk5LCAtMSwgR19fZGVmaW5lZF90eXBlbmFtZSgiYmFzaWNfaW9zPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4gPjo6Y2hhcl90eXBlIiksIDAsIDAsIDEsIDEsIDgsICIiLCAoY2hhciopTlVM
TCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImZpbGwiLDQyMyxHX19H
X19zdHJlYW1fMTNfMF8zLCA5OSwgLTEsIEdfX2RlZmluZWRfdHlwZW5hbWUoImJhc2ljX2lvczxj
aGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OmNoYXJfdHlwZSIpLCAwLCAxLCAxLCAxLCAwLCAiYyAt
ICdiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpjaGFyX3R5cGUnIDAgLSBjaCIs
IChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgiZXhj
ZXB0aW9ucyIsMTA5MCxHX19HX19zdHJlYW1fMTNfMF80LCAxMjEsIC0xLCAtMSwgMCwgMSwgMSwg
MSwgMCwgImkgLSAnaW9zX2Jhc2U6Omlvc3RhdGUnIDAgLSBleGNwdCIsIChjaGFyKilOVUxMLCAo
dm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgiZXhjZXB0aW9ucyIsMTA5MCxH
X19HX19zdHJlYW1fMTNfMF81LCAxMDUsIC0xLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJpb3NfYmFz
ZTo6aW9zdGF0ZSIpLCAwLCAwLCAxLCAxLCA4LCAiIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVM
TCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJjbGVhciIsNTE5LEdfX0dfX3N0cmVhbV8xM18w
XzYsIDEyMSwgLTEsIC0xLCAwLCAxLCAxLCAxLCAwLCAiaSAtICdpb3NfYmFzZTo6aW9zdGF0ZScg
MCAnZ29vZGJpdCcgc3RhdGUiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdf
X21lbWZ1bmNfc2V0dXAoInNldHN0YXRlIiw4NzcsR19fR19fc3RyZWFtXzEzXzBfNywgMTIxLCAt
MSwgLTEsIDAsIDEsIDEsIDEsIDAsICJpIC0gJ2lvc19iYXNlOjppb3N0YXRlJyAwIC0gc3RhdGUi
LCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInJk
c3RhdGUiLDc1OSxHX19HX19zdHJlYW1fMTNfMF84LCAxMDUsIC0xLCBHX19kZWZpbmVkX3R5cGVu
YW1lKCJpb3NfYmFzZTo6aW9zdGF0ZSIpLCAwLCAwLCAxLCAxLCA4LCAiIiwgKGNoYXIqKU5VTEws
ICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJvcGVyYXRvciB2b2lkKiIs
MTM4NCxHX19HX19zdHJlYW1fMTNfMF85LCA4OSwgLTEsIC0xLCAwLCAwLCAxLCAxLCA4LCAiIiwg
KGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJvcGVy
YXRvciEiLDkwOSxHX19HX19zdHJlYW1fMTNfMF8xMCwgMTAzLCAtMSwgLTEsIDAsIDAsIDEsIDEs
IDgsICIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0
dXAoImdvb2QiLDQyNSxHX19HX19zdHJlYW1fMTNfMF8xMSwgMTAzLCAtMSwgLTEsIDAsIDAsIDEs
IDEsIDgsICIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNf
c2V0dXAoImVvZiIsMzE0LEdfX0dfX3N0cmVhbV8xM18wXzEyLCAxMDMsIC0xLCAtMSwgMCwgMCwg
MSwgMSwgOCwgIiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVu
Y19zZXR1cCgiZmFpbCIsNDEyLEdfX0dfX3N0cmVhbV8xM18wXzEzLCAxMDMsIC0xLCAtMSwgMCwg
MCwgMSwgMSwgOCwgIiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVt
ZnVuY19zZXR1cCgiYmFkIiwyOTUsR19fR19fc3RyZWFtXzEzXzBfMTQsIDEwMywgLTEsIC0xLCAw
LCAwLCAxLCAxLCA4LCAiIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19t
ZW1mdW5jX3NldHVwKCJjb3B5Zm10Iiw3NzAsR19fR19fc3RyZWFtXzEzXzBfMTUsIDExNywgR19f
Z2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lvc2xFY2hhcmNPY2hhcl90
cmFpdHNsRWNoYXJnUnNQZ1IpLCAtMSwgMSwgMSwgMSwgMSwgMCwgInUgJ2Jhc2ljX2lvczxjaGFy
LGNoYXJfdHJhaXRzPGNoYXI+ID4nIC0gMTEgLSByaHMiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBO
VUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInRpZSIsMzIyLEdfX0dfX3N0cmVhbV8xM18w
XzE2LCA4NSwgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJl
YW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwgLTEsIDAsIDAsIDEsIDEsIDgsICIi
LCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInRp
ZSIsMzIyLEdfX0dfX3N0cmVhbV8xM18wXzE3LCA4NSwgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdf
X0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdS
KSwgLTEsIDAsIDEsIDEsIDEsIDAsICJVICdiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4gPicgLSAwIC0gdGllX2FyZyIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOwor
ICAgR19fbWVtZnVuY19zZXR1cCgicmRidWYiLDUzMSxHX19HX19zdHJlYW1fMTNfMF8xOCwgODUs
IEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19zdHJlYW1idWZsRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwgLTEsIDAsIDAsIDEsIDEsIDgsICIiLCAoY2hh
ciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInJkYnVmIiw1
MzEsR19fR19fc3RyZWFtXzEzXzBfMTksIDg1LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19f
c3RyZWFtTE5fYmFzaWNfc3RyZWFtYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiks
IC0xLCAwLCAxLCAxLCAxLCAwLCAiVSAnYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4gPicgLSAwIC0gc2IiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdf
X21lbWZ1bmNfc2V0dXAoIm5hcnJvdyIsNjY1LEdfX0dfX3N0cmVhbV8xM18wXzIwLCA5OSwgLTEs
IC0xLCAwLCAyLCAxLCAxLCA4LCAKKyJjIC0gLSAwIC0gLSBjIC0gLSAwIC0gLSIsIChjaGFyKilO
VUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgid2lkZW4iLDUzNSxH
X19HX19zdHJlYW1fMTNfMF8yMSwgOTksIC0xLCAtMSwgMCwgMSwgMSwgMSwgOCwgImMgLSAtIDAg
LSAtIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVw
KCJiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+IiwzMjYwLChHX19JbnRlcmZhY2VN
ZXRob2QpIE5VTEwsIDEwNSwgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jh
c2ljX2lvc2xFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCAtMSwgMCwgMCwgMSwgMiwg
MCwgIiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1
cCgiYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiIsMzI2MCwoR19fSW50ZXJmYWNl
TWV0aG9kKSBOVUxMLCAxMDUsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9i
YXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwgLTEsIDAsIDEsIDEsIDQs
IDAsICJ1ICdiYXNpY19pb3M8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+JyAtIDExIC0gLSIsIChj
aGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgib3BlcmF0
b3I9Iiw5MzcsKEdfX0ludGVyZmFjZU1ldGhvZCkgTlVMTCwgMTE3LCBHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaW9zbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdS
c1BnUiksIC0xLCAxLCAxLCAxLCA0LCAwLCAidSAnYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4gPicgLSAxMSAtIC0iLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIC8v
IGF1dG9tYXRpYyBkZXN0cnVjdG9yCisgICBHX19tZW1mdW5jX3NldHVwKCJ+YmFzaWNfaW9zPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4gPiIsIDMzODYsIEdfX0dfX3N0cmVhbV8xM18wXzI2LCAoaW50
KSAoJ3knKSwgLTEsIC0xLCAwLCAwLCAxLCAxLCAwLCAiIiwgKGNoYXIqKSBOVUxMLCAodm9pZCop
IE5VTEwsIDEpOworICAgR19fdGFnX21lbWZ1bmNfcmVzZXQoKTsKK30KKworc3RhdGljIHZvaWQg
R19fc2V0dXBfbWVtZnVuY2Jhc2ljX3N0cmVhbWJ1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJn
UnNQZ1Iodm9pZCkgeworICAgLyogYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPiAqLworICAgR19fdGFnX21lbWZ1bmNfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdf
X0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmVhbWJ1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQ
Z1IpKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInB1YnNldGJ1ZiIsOTc2LEdfX0dfX3N0cmVhbV8x
NF8wXzEsIDg1LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3Ry
ZWFtYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksIEdfX2RlZmluZWRfdHlwZW5h
bWUoImJhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OmJhc2ljX3N0cmVh
bWJ1ZjxjaGFyX3R5cGUsY2hhcl90cmFpdHM8Y2hhcj4gPiIpLCAwLCAyLCAxLCAxLCAwLCAKKyJD
IC0gJ2Jhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OmNoYXJfdHlwZScg
MCAtIHMgbiAtICdzdHJlYW1zaXplJyAwIC0gbiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEws
IDApOworICAgR19fbWVtZnVuY19zZXR1cCgicHVic2Vla29mZiIsMTA2NixHX19HX19zdHJlYW1f
MTRfMF8yLCAxMTAsIC0xLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJiYXNpY19zdHJlYW1idWY8Y2hh
cixjaGFyX3RyYWl0czxjaGFyPiA+Ojpwb3NfdHlwZSIpLCAwLCAzLCAxLCAxLCAwLCAKKyJuIC0g
J2Jhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46Om9mZl90eXBlJyAwIC0g
b2ZmIGkgLSAnaW9zX2Jhc2U6OnNlZWtkaXInIDAgLSB3YXkgIgorImkgLSAnaW9zX2Jhc2U6Om9w
ZW5tb2RlJyAwICdpb3NfYmFzZTo6aW58aW9zX2Jhc2U6Om91dCcgd2hpY2giLCAoY2hhciopTlVM
TCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInB1YnNlZWtwb3MiLDEw
ODksR19fR19fc3RyZWFtXzE0XzBfMywgMTEwLCAtMSwgR19fZGVmaW5lZF90eXBlbmFtZSgiYmFz
aWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6cG9zX3R5cGUiKSwgMCwgMiwg
MSwgMSwgMCwgCisibiAtICdiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+
Ojpwb3NfdHlwZScgMCAtIHNwIGkgLSAnaW9zX2Jhc2U6Om9wZW5tb2RlJyAwICdpb3NfYmFzZTo6
aW58aW9zX2Jhc2U6Om91dCcgd2hpY2giLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsK
KyAgIEdfX21lbWZ1bmNfc2V0dXAoInB1YnN5bmMiLDc3MixHX19HX19zdHJlYW1fMTRfMF80LCAx
MDUsIC0xLCAtMSwgMCwgMCwgMSwgMSwgMCwgIiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEws
IDApOworICAgR19fbWVtZnVuY19zZXR1cCgiaW5fYXZhaWwiLDgzNSxHX19HX19zdHJlYW1fMTRf
MF81LCAxMTAsIC0xLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJzdHJlYW1zaXplIiksIDAsIDAsIDEs
IDEsIDAsICIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNf
c2V0dXAoInNuZXh0YyIsNjYxLEdfX0dfX3N0cmVhbV8xNF8wXzYsIDEwNSwgLTEsIEdfX2RlZmlu
ZWRfdHlwZW5hbWUoImJhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46Omlu
dF90eXBlIiksIDAsIDAsIDEsIDEsIDAsICIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAw
KTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInNidW1wYyIsNjUwLEdfX0dfX3N0cmVhbV8xNF8wXzcs
IDEwNSwgLTEsIEdfX2RlZmluZWRfdHlwZW5hbWUoImJhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+ID46OmludF90eXBlIiksIDAsIDAsIDEsIDEsIDAsICIiLCAoY2hhciopTlVM
TCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInNnZXRjIiw1MzQsR19f
R19fc3RyZWFtXzE0XzBfOCwgMTA1LCAtMSwgR19fZGVmaW5lZF90eXBlbmFtZSgiYmFzaWNfc3Ry
ZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6aW50X3R5cGUiKSwgMCwgMCwgMSwgMSwg
MCwgIiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1
cCgic2dldG4iLDU0NSxHX19HX19zdHJlYW1fMTRfMF85LCAxMTAsIC0xLCBHX19kZWZpbmVkX3R5
cGVuYW1lKCJzdHJlYW1zaXplIiksIDAsIDIsIDEsIDEsIDAsIAorIkMgLSAnYmFzaWNfc3RyZWFt
YnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6Y2hhcl90eXBlJyAwIC0gcyBuIC0gJ3N0cmVh
bXNpemUnIDAgLSBuIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1m
dW5jX3NldHVwKCJzcHV0YmFja2MiLDk2MCxHX19HX19zdHJlYW1fMTRfMF8xMCwgMTA1LCAtMSwg
R19fZGVmaW5lZF90eXBlbmFtZSgiYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPjo6aW50X3R5cGUiKSwgMCwgMSwgMSwgMSwgMCwgImMgLSAnYmFzaWNfc3RyZWFtYnVmPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6Y2hhcl90eXBlJyAwIC0gYyIsIChjaGFyKilOVUxMLCAo
dm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgic3VuZ2V0YyIsNzYxLEdfX0df
X3N0cmVhbV8xNF8wXzExLCAxMDUsIC0xLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJiYXNpY19zdHJl
YW1idWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjppbnRfdHlwZSIpLCAwLCAwLCAxLCAxLCAw
LCAiIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVw
KCJzcHV0YyIsNTU5LEdfX0dfX3N0cmVhbV8xNF8wXzEyLCAxMDUsIC0xLCBHX19kZWZpbmVkX3R5
cGVuYW1lKCJiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjppbnRfdHlw
ZSIpLCAwLCAxLCAxLCAxLCAwLCAiYyAtICdiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+OjpjaGFyX3R5cGUnIDAgLSBjIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwg
MCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJzcHV0biIsNTcwLEdfX0dfX3N0cmVhbV8xNF8wXzEz
LCAxMTAsIC0xLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJzdHJlYW1zaXplIiksIDAsIDIsIDEsIDEs
IDAsIAorIkMgLSAnYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6Y2hh
cl90eXBlJyAxMCAtIHMgbiAtICdzdHJlYW1zaXplJyAwIC0gbiIsIChjaGFyKilOVUxMLCAodm9p
ZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgiYmFzaWNfc3RyZWFtYnVmPGNoYXIs
Y2hhcl90cmFpdHM8Y2hhcj4gPiIsMzg5OCwoR19fSW50ZXJmYWNlTWV0aG9kKSBOVUxMLCAxMDUs
IEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19zdHJlYW1idWZsRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwgLTEsIDAsIDAsIDEsIDIsIDAsICIiLCAoY2hh
ciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImJhc2ljX3N0
cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4iLDM4OTgsKEdfX0ludGVyZmFjZU1ldGhv
ZCkgTlVMTCwgMTA1LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNf
c3RyZWFtYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksIC0xLCAwLCAxLCAxLCA0
LCAwLCAidSAnYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPicgLSAxMSAt
IHgiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAo
Im9wZXJhdG9yPSIsOTM3LChHX19JbnRlcmZhY2VNZXRob2QpIE5VTEwsIDExNywgR19fZ2V0X2xp
bmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmVhbWJ1ZmxFY2hhcmNPY2hhcl90
cmFpdHNsRWNoYXJnUnNQZ1IpLCAtMSwgMSwgMSwgMSwgNCwgMCwgInUgJ2Jhc2ljX3N0cmVhbWJ1
ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4nIC0gMTEgLSB4IiwgKGNoYXIqKU5VTEwsICh2b2lk
KikgTlVMTCwgMCk7CisgICAvLyBhdXRvbWF0aWMgZGVzdHJ1Y3RvcgorICAgR19fbWVtZnVuY19z
ZXR1cCgifmJhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4iLCA0MDI0LCBH
X19HX19zdHJlYW1fMTRfMF8xNywgKGludCkgKCd5JyksIC0xLCAtMSwgMCwgMCwgMSwgMSwgMCwg
IiIsIChjaGFyKikgTlVMTCwgKHZvaWQqKSBOVUxMLCAxKTsKKyAgIEdfX3RhZ19tZW1mdW5jX3Jl
c2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIEdfX3NldHVwX21lbWZ1bmNiYXNpY19vc3RyZWFtbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUih2b2lkKSB7CisgICAvKiBiYXNpY19vc3RyZWFt
PGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqLworICAgR19fdGFnX21lbWZ1bmNfc2V0dXAoR19f
Z2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJlYW1sRWNoYXJjT2No
YXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSk7CisgICBHX19tZW1mdW5jX3NldHVwKCJiYXNpY19vc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiIsMzY5MixHX19HX19zdHJlYW1fMTVfMF8xLCAx
MDUsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vc3RyZWFtbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksIC0xLCAwLCAxLCA1LCAxLCAwLCAiVSAnYmFz
aWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPicgLSAwIC0gc2IiLCAoY2hhciop
TlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInB1dCIsMzQ1LEdf
X0dfX3N0cmVhbV8xNV8wXzIsIDExNywgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVh
bUxOX2Jhc2ljX29zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwgR19fZGVm
aW5lZF90eXBlbmFtZSgiYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46Ol9f
b3N0cmVhbV90eXBlIiksIDEsIDEsIDEsIDEsIDAsICJjIC0gJ2Jhc2ljX29zdHJlYW08Y2hhcixj
aGFyX3RyYWl0czxjaGFyPiA+OjpjaGFyX3R5cGUnIDAgLSBjIiwgKGNoYXIqKU5VTEwsICh2b2lk
KikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJ3cml0ZSIsNTU1LEdfX0dfX3N0cmVh
bV8xNV8wXzMsIDExNywgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2lj
X29zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwgR19fZGVmaW5lZF90eXBl
bmFtZSgiYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46Ol9fb3N0cmVhbV90
eXBlIiksIDEsIDIsIDEsIDEsIDAsIAorIkMgLSAnYmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJh
aXRzPGNoYXI+ID46OmNoYXJfdHlwZScgMTAgLSBzIG4gLSAnc3RyZWFtc2l6ZScgMCAtIG4iLCAo
Y2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImZsdXNo
Iiw1NDYsR19fR19fc3RyZWFtXzE1XzBfNCwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19f
R19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1Ip
LCBHX19kZWZpbmVkX3R5cGVuYW1lKCJiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPjo6X19vc3RyZWFtX3R5cGUiKSwgMSwgMCwgMSwgMSwgMCwgIiIsIChjaGFyKilOVUxMLCAo
dm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgic2Vla3AiLDUzNixHX19HX19z
dHJlYW1fMTVfMF81LCAxMTcsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9i
YXNpY19vc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksIEdfX2RlZmluZWRf
dHlwZW5hbWUoImJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpfX29zdHJl
YW1fdHlwZSIpLCAxLCAxLCAxLCAxLCAwLCAibiAtICdiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4gPjo6cG9zX3R5cGUnIDAgLSBwb3MiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBO
VUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInNlZWtwIiw1MzYsR19fR19fc3RyZWFtXzE1
XzBfNiwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0
cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1l
KCJiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6X19vc3RyZWFtX3R5cGUi
KSwgMSwgMiwgMSwgMSwgMCwgCisibiAtICdiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8
Y2hhcj4gPjo6b2ZmX3R5cGUnIDAgLSAtIGkgLSAnaW9zX2Jhc2U6OnNlZWtkaXInIDAgLSAtIiwg
KGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJ0ZWxs
cCIsNTQ1LEdfX0dfX3N0cmVhbV8xNV8wXzcsIDExMCwgLTEsIEdfX2RlZmluZWRfdHlwZW5hbWUo
ImJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+Ojpwb3NfdHlwZSIpLCAwLCAw
LCAxLCAxLCAwLCAiIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1m
dW5jX3NldHVwKCJiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiIsMzY5Miwo
R19fSW50ZXJmYWNlTWV0aG9kKSBOVUxMLCAxMDUsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19H
X19zdHJlYW1MTl9iYXNpY19vc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiks
IC0xLCAwLCAwLCAxLCAyLCAwLCAiIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7Cisg
ICAvLyBhdXRvbWF0aWMgZGVzdHJ1Y3RvcgorICAgR19fbWVtZnVuY19zZXR1cCgifmJhc2ljX29z
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+IiwgMzgxOCwgR19fR19fc3RyZWFtXzE1XzBf
OSwgKGludCkgKCd5JyksIC0xLCAtMSwgMCwgMCwgMSwgMSwgMCwgIiIsIChjaGFyKikgTlVMTCwg
KHZvaWQqKSBOVUxMLCAxKTsKKyAgIEdfX3RhZ19tZW1mdW5jX3Jlc2V0KCk7Cit9CisKK3N0YXRp
YyB2b2lkIEdfX3NldHVwX21lbWZ1bmNiYXNpY19vc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUmNMY0xzZW50cnkodm9pZCkgeworICAgLyogYmFzaWNfb3N0cmVhbTxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID46OnNlbnRyeSAqLworICAgR19fdGFnX21lbWZ1bmNfc2V0dXAoR19f
Z2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJlYW1sRWNoYXJjT2No
YXJfdHJhaXRzbEVjaGFyZ1JzUGdSY0xjTHNlbnRyeSkpOworICAgR19fbWVtZnVuY19zZXR1cCgi
c2VudHJ5Iiw2NzcsR19fR19fc3RyZWFtXzE2XzBfMSwgMTA1LCBHX19nZXRfbGlua2VkX3RhZ251
bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJn
UnNQZ1JjTGNMc2VudHJ5KSwgLTEsIDAsIDEsIDUsIDEsIDAsICJ1ICdiYXNpY19vc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4gPicgLSAxIC0gc3RyZWFtIiwgKGNoYXIqKU5VTEwsICh2b2lk
KikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJvcGVyYXRvciBib29sIiwxMzM2LEdf
X0dfX3N0cmVhbV8xNl8wXzIsIDEwMywgLTEsIC0xLCAwLCAwLCAxLCAxLCAwLCAiIiwgKGNoYXIq
KU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJzZW50cnkiLDY3
NywoR19fSW50ZXJmYWNlTWV0aG9kKSBOVUxMLCAxMDUsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZH
X19HX19zdHJlYW1MTl9iYXNpY19vc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1Bn
UmNMY0xzZW50cnkpLCAtMSwgMCwgMSwgMSwgNCwgMCwgInUgJ2Jhc2ljX29zdHJlYW08Y2hhcixj
aGFyX3RyYWl0czxjaGFyPiA+OjpzZW50cnknIC0gMTEgLSAtIiwgKGNoYXIqKU5VTEwsICh2b2lk
KikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJvcGVyYXRvcj0iLDkzNywoR19fSW50
ZXJmYWNlTWV0aG9kKSBOVUxMLCAxMTcsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJl
YW1MTl9iYXNpY19vc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUmNMY0xzZW50
cnkpLCAtMSwgMSwgMSwgMSwgNCwgMCwgInUgJ2Jhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+OjpzZW50cnknIC0gMTEgLSAtIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwg
MCk7CisgICAvLyBhdXRvbWF0aWMgZGVzdHJ1Y3RvcgorICAgR19fbWVtZnVuY19zZXR1cCgifnNl
bnRyeSIsIDgwMywgKEdfX0ludGVyZmFjZU1ldGhvZCkgTlVMTCwgKGludCkgKCd5JyksIC0xLCAt
MSwgMCwgMCwgMSwgNCwgMCwgIiIsIChjaGFyKikgTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAg
IEdfX3RhZ19tZW1mdW5jX3Jlc2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIEdfX3NldHVwX21lbWZ1
bmNiYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUmNMY0xzZW50cnko
dm9pZCkgeworICAgLyogYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OnNl
bnRyeSAqLworICAgR19fdGFnX21lbWZ1bmNfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdf
X0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdS
Y0xjTHNlbnRyeSkpOworICAgR19fbWVtZnVuY19zZXR1cCgic2VudHJ5Iiw2NzcsR19fR19fc3Ry
ZWFtXzE3XzBfMSwgMTA1LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFz
aWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JjTGNMc2VudHJ5KSwgLTEs
IDAsIDIsIDEsIDEsIDAsIAorInUgJ2Jhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFy
PiA+JyAtIDEgLSBzdHJlYW0gZyAtIC0gMCAnMCcgbm9za2lwd3MiLCAoY2hhciopTlVMTCwgKHZv
aWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yIGJvb2wiLDEzMzYs
R19fR19fc3RyZWFtXzE3XzBfMiwgMTAzLCAtMSwgLTEsIDAsIDAsIDEsIDEsIDAsICIiLCAoY2hh
ciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIC8vIGF1dG9tYXRpYyBjb3B5IGNvbnN0cnVj
dG9yCisgICBHX19tZW1mdW5jX3NldHVwKCJzZW50cnkiLCA2NzcsIEdfX0dfX3N0cmVhbV8xN18w
XzMsIChpbnQpICgnaScpLCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFz
aWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JjTGNMc2VudHJ5KSwgLTEs
IDAsIDEsIDEsIDEsIDAsICJ1ICdiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
Pjo6c2VudHJ5JyAtIDExIC0gLSIsIChjaGFyKikgTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAg
IC8vIGF1dG9tYXRpYyBkZXN0cnVjdG9yCisgICBHX19tZW1mdW5jX3NldHVwKCJ+c2VudHJ5Iiwg
ODAzLCAoR19fSW50ZXJmYWNlTWV0aG9kKSBOVUxMLCAoaW50KSAoJ3knKSwgLTEsIC0xLCAwLCAw
LCAxLCA0LCAwLCAiIiwgKGNoYXIqKSBOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgLy8gYXV0
b21hdGljIGFzc2lnbm1lbnQgb3BlcmF0b3IKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9y
PSIsIDkzNywgR19fR19fc3RyZWFtXzE3XzBfNCwgKGludCkgKCd1JyksIEdfX2dldF9saW5rZWRf
dGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUmNMY0xzZW50cnkpLCAtMSwgMSwgMSwgMSwgMSwgMCwgInUgJ2Jhc2ljX2lzdHJl
YW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+OjpzZW50cnknIC0gMTEgLSAtIiwgKGNoYXIqKSBO
VUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fdGFnX21lbWZ1bmNfcmVzZXQoKTsKK30KKwor
c3RhdGljIHZvaWQgR19fc2V0dXBfbWVtZnVuY2Jhc2ljX2ZpbGVidWZsRWNoYXJjT2NoYXJfdHJh
aXRzbEVjaGFyZ1JzUGdSKHZvaWQpIHsKKyAgIC8qIGJhc2ljX2ZpbGVidWY8Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPiA+ICovCisgICBHX190YWdfbWVtZnVuY19zZXR1cChHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfZmlsZWJ1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNo
YXJnUnNQZ1IpKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImJhc2ljX2ZpbGVidWY8Y2hhcixjaGFy
X3RyYWl0czxjaGFyPiA+IiwzNjYyLEdfX0dfX3N0cmVhbV8xOF8wXzEsIDEwNSwgR19fZ2V0X2xp
bmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2ZpbGVidWZsRWNoYXJjT2NoYXJfdHJh
aXRzbEVjaGFyZ1JzUGdSKSwgLTEsIDAsIDAsIDEsIDEsIDAsICIiLCAoY2hhciopTlVMTCwgKHZv
aWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImlzX29wZW4iLDc0OSxHX19HX19z
dHJlYW1fMThfMF8yLCAxMDMsIC0xLCAtMSwgMCwgMCwgMSwgMSwgOCwgIiIsIChjaGFyKilOVUxM
LCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgib3BlbiIsNDM0LEdfX0df
X3N0cmVhbV8xOF8wXzMsIDg1LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5f
YmFzaWNfZmlsZWJ1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCAtMSwgMCwgMiwg
MSwgMSwgMCwgCisiQyAtIC0gMTAgLSBzIGkgLSAnaW9zX2Jhc2U6Om9wZW5tb2RlJyAwIC0gLSIs
IChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgiY2xv
c2UiLDUzNCxHX19HX19zdHJlYW1fMThfMF80LCA4NSwgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdf
X0dfX3N0cmVhbUxOX2Jhc2ljX2ZpbGVidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdS
KSwgLTEsIDAsIDAsIDEsIDEsIDAsICIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsK
KyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPSIsOTM3LChHX19JbnRlcmZhY2VNZXRob2Qp
IE5VTEwsIDExNywgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2Zp
bGVidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwgLTEsIDEsIDEsIDEsIDQsIDAs
ICJ1ICdiYXNpY19maWxlYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPicgLSAxMSAtIHgiLCAo
Y2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIC8vIGF1dG9tYXRpYyBkZXN0cnVjdG9y
CisgICBHX19tZW1mdW5jX3NldHVwKCJ+YmFzaWNfZmlsZWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+ID4iLCAzNzg4LCBHX19HX19zdHJlYW1fMThfMF8xNSwgKGludCkgKCd5JyksIC0xLCAtMSwg
MCwgMCwgMSwgMSwgMCwgIiIsIChjaGFyKikgTlVMTCwgKHZvaWQqKSBOVUxMLCAxKTsKKyAgIEdf
X3RhZ19tZW1mdW5jX3Jlc2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIEdfX3NldHVwX21lbWZ1bmNi
YXNpY19pZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1Iodm9pZCkgeworICAg
LyogYmFzaWNfaWZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+ICovCisgICBHX190YWdf
bWVtZnVuY19zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNf
aWZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSk7CisgICBHX19tZW1mdW5j
X3NldHVwKCJiYXNpY19pZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4iLDM3ODgsR19f
R19fc3RyZWFtXzE5XzBfMSwgMTA1LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFt
TE5fYmFzaWNfaWZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwgLTEsIDAs
IDAsIDEsIDEsIDAsICIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21l
bWZ1bmNfc2V0dXAoImJhc2ljX2lmc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiIsMzc4
OCxHX19HX19zdHJlYW1fMTlfMF8yLCAxMDUsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19z
dHJlYW1MTl9iYXNpY19pZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCAt
MSwgMCwgMiwgMSwgMSwgMCwgCisiQyAtIC0gMTAgLSBzIGkgLSAnaW9zX2Jhc2U6Om9wZW5tb2Rl
JyAwICdpb3NfYmFzZTo6aW4nIG1vZGUiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsK
KyAgIEdfX21lbWZ1bmNfc2V0dXAoInJkYnVmIiw1MzEsR19fR19fc3RyZWFtXzE5XzBfMywgODUs
IEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19maWxlYnVmbEVjaGFy
Y09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksIC0xLCAwLCAwLCAxLCAxLCA4LCAiIiwgKGNoYXIq
KU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJpc19vcGVuIiw3
NDksR19fR19fc3RyZWFtXzE5XzBfNCwgMTAzLCAtMSwgLTEsIDAsIDAsIDEsIDEsIDAsICIiLCAo
Y2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZW4i
LDQzNCxHX19HX19zdHJlYW1fMTlfMF81LCAxMjEsIC0xLCAtMSwgMCwgMiwgMSwgMSwgMCwgCisi
QyAtIC0gMTAgLSBzIGkgLSAnaW9zX2Jhc2U6Om9wZW5tb2RlJyAwICdpb3NfYmFzZTo6aW4nIG1v
ZGUiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAo
ImNsb3NlIiw1MzQsR19fR19fc3RyZWFtXzE5XzBfNiwgMTIxLCAtMSwgLTEsIDAsIDAsIDEsIDEs
IDAsICIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIC8vIGF1dG9tYXRpYyBk
ZXN0cnVjdG9yCisgICBHX19tZW1mdW5jX3NldHVwKCJ+YmFzaWNfaWZzdHJlYW08Y2hhcixjaGFy
X3RyYWl0czxjaGFyPiA+IiwgMzkxNCwgR19fR19fc3RyZWFtXzE5XzBfNywgKGludCkgKCd5Jyks
IC0xLCAtMSwgMCwgMCwgMSwgMSwgMCwgIiIsIChjaGFyKikgTlVMTCwgKHZvaWQqKSBOVUxMLCAx
KTsKKyAgIEdfX3RhZ19tZW1mdW5jX3Jlc2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIEdfX3NldHVw
X21lbWZ1bmNiYXNpY19vZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1Iodm9p
ZCkgeworICAgLyogYmFzaWNfb2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+ICovCisg
ICBHX190YWdfbWVtZnVuY19zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFt
TE5fYmFzaWNfb2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSk7CisgICBH
X19tZW1mdW5jX3NldHVwKCJiYXNpY19vZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4i
LDM3OTQsR19fR19fc3RyZWFtXzIwXzBfMSwgMTA1LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19f
R19fc3RyZWFtTE5fYmFzaWNfb2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdS
KSwgLTEsIDAsIDAsIDEsIDEsIDAsICIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsK
KyAgIEdfX21lbWZ1bmNfc2V0dXAoImJhc2ljX29mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hh
cj4gPiIsMzc5NCxHX19HX19zdHJlYW1fMjBfMF8yLCAxMDUsIEdfX2dldF9saW5rZWRfdGFnbnVt
KCZHX19HX19zdHJlYW1MTl9iYXNpY19vZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJn
UnNQZ1IpLCAtMSwgMCwgMiwgMSwgMSwgMCwgCisiQyAtIC0gMTAgLSBzIGkgLSAnaW9zX2Jhc2U6
Om9wZW5tb2RlJyAwICdpb3NfYmFzZTo6b3V0JyBtb2RlIiwgKGNoYXIqKU5VTEwsICh2b2lkKikg
TlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJyZGJ1ZiIsNTMxLEdfX0dfX3N0cmVhbV8y
MF8wXzMsIDg1LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfZmls
ZWJ1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCAtMSwgMCwgMCwgMSwgMSwgOCwg
IiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgi
aXNfb3BlbiIsNzQ5LEdfX0dfX3N0cmVhbV8yMF8wXzQsIDEwMywgLTEsIC0xLCAwLCAwLCAxLCAx
LCAwLCAiIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3Nl
dHVwKCJvcGVuIiw0MzQsR19fR19fc3RyZWFtXzIwXzBfNSwgMTIxLCAtMSwgLTEsIDAsIDIsIDEs
IDEsIDAsIAorIkMgLSAtIDEwIC0gcyBpIC0gJ2lvc19iYXNlOjpvcGVubW9kZScgMCAnaW9zX2Jh
c2U6Om91dCcgbW9kZSIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVt
ZnVuY19zZXR1cCgiY2xvc2UiLDUzNCxHX19HX19zdHJlYW1fMjBfMF82LCAxMjEsIC0xLCAtMSwg
MCwgMCwgMSwgMSwgMCwgIiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgLy8g
YXV0b21hdGljIGRlc3RydWN0b3IKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIn5iYXNpY19vZnN0cmVh
bTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4iLCAzOTIwLCBHX19HX19zdHJlYW1fMjBfMF83LCAo
aW50KSAoJ3knKSwgLTEsIC0xLCAwLCAwLCAxLCAxLCAwLCAiIiwgKGNoYXIqKSBOVUxMLCAodm9p
ZCopIE5VTEwsIDEpOworICAgR19fdGFnX21lbWZ1bmNfcmVzZXQoKTsKK30KKworc3RhdGljIHZv
aWQgR19fc2V0dXBfbWVtZnVuY2Jhc2ljX2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFy
Z1JzUGdSKHZvaWQpIHsKKyAgIC8qIGJhc2ljX2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFy
PiA+ICovCisgICBHX190YWdfbWVtZnVuY19zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19f
R19fc3RyZWFtTE5fYmFzaWNfZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1Ip
KTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImJhc2ljX2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxj
aGFyPiA+IiwzNjgzLEdfX0dfX3N0cmVhbV8yMV8wXzEsIDEwNSwgR19fZ2V0X2xpbmtlZF90YWdu
dW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFy
Z1JzUGdSKSwgLTEsIDAsIDAsIDEsIDEsIDAsICIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxM
LCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImJhc2ljX2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+IiwzNjgzLEdfX0dfX3N0cmVhbV8yMV8wXzIsIDEwNSwgR19fZ2V0X2xpbmtlZF90
YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSKSwgLTEsIDAsIDIsIDEsIDEsIDAsIAorIkMgLSAtIDEwIC0gcyBpIC0gJ2lvc19i
YXNlOjpvcGVubW9kZScgMCAtIG1vZGUiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsK
KyAgIEdfX21lbWZ1bmNfc2V0dXAoInJkYnVmIiw1MzEsR19fR19fc3RyZWFtXzIxXzBfMywgODUs
IEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19maWxlYnVmbEVjaGFy
Y09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksIC0xLCAwLCAwLCAxLCAxLCA4LCAiIiwgKGNoYXIq
KU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJpc19vcGVuIiw3
NDksR19fR19fc3RyZWFtXzIxXzBfNCwgMTAzLCAtMSwgLTEsIDAsIDAsIDEsIDEsIDAsICIiLCAo
Y2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZW4i
LDQzNCxHX19HX19zdHJlYW1fMjFfMF81LCAxMjEsIC0xLCAtMSwgMCwgMiwgMSwgMSwgMCwgCisi
QyAtIC0gMTAgLSBzIGkgLSAnaW9zX2Jhc2U6Om9wZW5tb2RlJyAwIC0gbW9kZSIsIChjaGFyKilO
VUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgiY2xvc2UiLDUzNCxH
X19HX19zdHJlYW1fMjFfMF82LCAxMjEsIC0xLCAtMSwgMCwgMCwgMSwgMSwgMCwgIiIsIChjaGFy
KilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgLy8gYXV0b21hdGljIGRlc3RydWN0b3IKKyAg
IEdfX21lbWZ1bmNfc2V0dXAoIn5iYXNpY19mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PiIsIDM4MDksIEdfX0dfX3N0cmVhbV8yMV8wXzcsIChpbnQpICgneScpLCAtMSwgLTEsIDAsIDAs
IDEsIDEsIDAsICIiLCAoY2hhciopIE5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX190YWdf
bWVtZnVuY19yZXNldCgpOworfQorCitzdGF0aWMgdm9pZCBHX19zZXR1cF9tZW1mdW5jYmFzaWNf
aW9zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKHZvaWQpIHsKKyAgIC8qIGJh
c2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiAqLworICAgR19fdGFnX21lbWZ1
bmNfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lvc3Ry
ZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUikpOworICAgR19fbWVtZnVuY19zZXR1
cCgiYmFzaWNfaW9zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+IiwzNzk3LEdfX0dfX3N0
cmVhbV8yMl8wXzEsIDEwNSwgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jh
c2ljX2lvc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksIC0xLCAwLCAxLCA1
LCAxLCAwLCAiVSAnYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPicgLSAw
IC0gc2IiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0
dXAoImJhc2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiIsMzc5NywoR19fSW50
ZXJmYWNlTWV0aG9kKSBOVUxMLCAxMDUsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJl
YW1MTl9iYXNpY19pb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCAtMSwg
MCwgMCwgNSwgMiwgMCwgIiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgLy8g
YXV0b21hdGljIGRlc3RydWN0b3IKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIn5iYXNpY19pb3N0cmVh
bTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4iLCAzOTIzLCBHX19HX19zdHJlYW1fMjJfMF8zLCAo
aW50KSAoJ3knKSwgLTEsIC0xLCAwLCAwLCAxLCAxLCAwLCAiIiwgKGNoYXIqKSBOVUxMLCAodm9p
ZCopIE5VTEwsIDEpOworICAgR19fdGFnX21lbWZ1bmNfcmVzZXQoKTsKK30KKworc3RhdGljIHZv
aWQgR19fc2V0dXBfbWVtZnVuY2Jhc2ljX3N0cmluZ2J1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNo
YXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKHZvaWQpIHsKKyAgIC8qIGJhc2ljX3N0cmluZ2J1
ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+ICovCisgICBHX190YWdf
bWVtZnVuY19zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNf
c3RyaW5nYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQ
Z1IpKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImJhc2ljX3N0cmluZ2J1ZjxjaGFyLGNoYXJfdHJh
aXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+Iiw1NDUwLEdfX0dfX3N0cmVhbV8yN18wXzEsIDEw
NSwgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmluZ2J1ZmxF
Y2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSwgLTEsIDAs
IDEsIDUsIDEsIDAsICJpIC0gJ2lvc19iYXNlOjpvcGVubW9kZScgMCAnaW9zX2Jhc2U6OmlufGlv
c19iYXNlOjpvdXQnIHdoaWNoIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBH
X19tZW1mdW5jX3NldHVwKCJiYXNpY19zdHJpbmdidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPixh
bGxvY2F0b3I8Y2hhcj4gPiIsNTQ1MCxHX19HX19zdHJlYW1fMjdfMF8yLCAxMDUsIEdfX2dldF9s
aW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19zdHJpbmdidWZsRWNoYXJjT2NoYXJf
dHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUiksIC0xLCAwLCAyLCA1LCAxLCAw
LCAKKyJ1ICdzdHJpbmcnICdiYXNpY19zdHJpbmdidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPixh
bGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlwZScgMTEgLSBzdHIgaSAtICdpb3NfYmFzZTo6
b3Blbm1vZGUnIDAgJ2lvc19iYXNlOjppbnxpb3NfYmFzZTo6b3V0JyB3aGljaCIsIChjaGFyKilO
VUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgic3RyIiwzNDUsR19f
R19fc3RyZWFtXzI3XzBfMywgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFt
TE5fc3RyaW5nKSwgR19fZGVmaW5lZF90eXBlbmFtZSgiYmFzaWNfc3RyaW5nYnVmPGNoYXIsY2hh
cl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID46Ol9fc3RyaW5nX3R5cGUiKSwgMCwgMCwg
MSwgMSwgOCwgIiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVu
Y19zZXR1cCgic3RyIiwzNDUsR19fR19fc3RyZWFtXzI3XzBfNCwgMTIxLCAtMSwgLTEsIDAsIDEs
IDEsIDEsIDAsICJ1ICdzdHJpbmcnICdiYXNpY19zdHJpbmdidWY8Y2hhcixjaGFyX3RyYWl0czxj
aGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlwZScgMTEgLSBzdHJfYXJnIiwgKGNo
YXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJvcGVyYXRv
cj0iLDkzNywoR19fSW50ZXJmYWNlTWV0aG9kKSBOVUxMLCAxMTcsIEdfX2dldF9saW5rZWRfdGFn
bnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19zdHJpbmdidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUiksIC0xLCAxLCAxLCAxLCA0LCAwLCAidSAnYmFz
aWNfc3RyaW5nYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4nIC0g
MTEgLSB4IiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICAvLyBhdXRvbWF0aWMg
ZGVzdHJ1Y3RvcgorICAgR19fbWVtZnVuY19zZXR1cCgifmJhc2ljX3N0cmluZ2J1ZjxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+IiwgNTU3NiwgR19fR19fc3RyZWFtXzI3
XzBfMTMsIChpbnQpICgneScpLCAtMSwgLTEsIDAsIDAsIDEsIDEsIDAsICIiLCAoY2hhciopIE5V
TEwsICh2b2lkKikgTlVMTCwgMSk7CisgICBHX190YWdfbWVtZnVuY19yZXNldCgpOworfQorCitz
dGF0aWMgdm9pZCBHX19zZXR1cF9tZW1mdW5jYmFzaWNfaXN0cmluZ3N0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKHZvaWQpIHsKKyAgIC8qIGJh
c2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4g
PiAqLworICAgR19fdGFnX21lbWZ1bmNfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0df
X3N0cmVhbUxOX2Jhc2ljX2lzdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1Jj
T2FsbG9jYXRvcmxFY2hhcmdSc1BnUikpOworICAgR19fbWVtZnVuY19zZXR1cCgiYmFzaWNfaXN0
cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+Iiw1ODkw
LEdfX0dfX3N0cmVhbV8yOF8wXzEsIDEwNSwgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0
cmVhbUxOX2Jhc2ljX2lzdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2Fs
bG9jYXRvcmxFY2hhcmdSc1BnUiksIC0xLCAwLCAxLCA1LCAxLCAwLCAiaSAtICdpb3NfYmFzZTo6
b3Blbm1vZGUnIDAgJ2lvc19iYXNlOjppbicgd2hpY2giLCAoY2hhciopTlVMTCwgKHZvaWQqKSBO
VUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImJhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixj
aGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiIsNTg5MCxHX19HX19zdHJlYW1fMjhf
MF8yLCAxMDUsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3Ry
aW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQ
Z1IpLCAtMSwgMCwgMiwgNSwgMSwgMCwgCisidSAnc3RyaW5nJyAnYmFzaWNfaXN0cmluZ3N0cmVh
bTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+OjpfX3N0cmluZ190eXBl
JyAxMSAtIHN0ciBpIC0gJ2lvc19iYXNlOjpvcGVubW9kZScgMCAnaW9zX2Jhc2U6OmluJyB3aGlj
aCIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgi
YmFzaWNfaXN0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFy
PiA+Iiw1ODkwLEdfX0dfX3N0cmVhbV8yOF8wXzMsIDEwNSwgR19fZ2V0X2xpbmtlZF90YWdudW0o
JkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUiksIC0xLCAwLCAyLCA1LCAxLCAwLCAKKyJDIC0g
LSAxMCAtIHN0ciBpIC0gJ2lvc19iYXNlOjpvcGVubW9kZScgMCAnaW9zX2Jhc2U6OmluJyB3aGlj
aCIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgi
cmRidWYiLDUzMSxHX19HX19zdHJlYW1fMjhfMF80LCA4NSwgR19fZ2V0X2xpbmtlZF90YWdudW0o
JkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmluZ2J1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJn
UmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSwgLTEsIDAsIDAsIDEsIDEsIDgsICIiLCAoY2hhciop
TlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInN0ciIsMzQ1LEdf
X0dfX3N0cmVhbV8yOF8wXzUsIDExNywgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVh
bUxOX3N0cmluZyksIEdfX2RlZmluZWRfdHlwZW5hbWUoImJhc2ljX2lzdHJpbmdzdHJlYW08Y2hh
cixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlwZSIpLCAw
LCAwLCAxLCAxLCA4LCAiIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19t
ZW1mdW5jX3NldHVwKCJzdHIiLDM0NSxHX19HX19zdHJlYW1fMjhfMF82LCAxMjEsIC0xLCAtMSwg
MCwgMSwgMSwgMSwgMCwgInUgJ3N0cmluZycgJ2Jhc2ljX2lzdHJpbmdzdHJlYW08Y2hhcixjaGFy
X3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlwZScgMTEgLSBzdHIi
LCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIC8vIGF1dG9tYXRpYyBkZXN0cnVj
dG9yCisgICBHX19tZW1mdW5jX3NldHVwKCJ+YmFzaWNfaXN0cmluZ3N0cmVhbTxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+IiwgNjAxNiwgR19fR19fc3RyZWFtXzI4XzBf
NywgKGludCkgKCd5JyksIC0xLCAtMSwgMCwgMCwgMSwgMSwgMCwgIiIsIChjaGFyKikgTlVMTCwg
KHZvaWQqKSBOVUxMLCAxKTsKKyAgIEdfX3RhZ19tZW1mdW5jX3Jlc2V0KCk7Cit9CisKK3N0YXRp
YyB2b2lkIEdfX3NldHVwX21lbWZ1bmNiYXNpY19vc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3Ry
YWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1Iodm9pZCkgeworICAgLyogYmFzaWNf
b3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+ICov
CisgICBHX190YWdfbWVtZnVuY19zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3Ry
ZWFtTE5fYmFzaWNfb3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxs
b2NhdG9ybEVjaGFyZ1JzUGdSKSk7CisgICBHX19tZW1mdW5jX3NldHVwKCJiYXNpY19vc3RyaW5n
c3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4iLDU4OTYsR19f
R19fc3RyZWFtXzI5XzBfMSwgMTA1LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFt
TE5fYmFzaWNfb3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2Nh
dG9ybEVjaGFyZ1JzUGdSKSwgLTEsIDAsIDEsIDUsIDEsIDAsICJpIC0gJ2lvc19iYXNlOjpvcGVu
bW9kZScgMCAnaW9zX2Jhc2U6Om91dCcgd2hpY2giLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxM
LCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFy
X3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiIsNTg5NixHX19HX19zdHJlYW1fMjlfMF8y
LCAxMDUsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vc3RyaW5n
c3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1Ip
LCAtMSwgMCwgMiwgNSwgMSwgMCwgCisidSAnc3RyaW5nJyAnYmFzaWNfb3N0cmluZ3N0cmVhbTxj
aGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+OjpfX3N0cmluZ190eXBlJyAx
MSAtIHN0ciBpIC0gJ2lvc19iYXNlOjpvcGVubW9kZScgMCAnaW9zX2Jhc2U6Om91dCcgd2hpY2gi
LCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoInJk
YnVmIiw1MzEsR19fR19fc3RyZWFtXzI5XzBfMywgODUsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZH
X19HX19zdHJlYW1MTl9iYXNpY19zdHJpbmdidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1Jj
T2FsbG9jYXRvcmxFY2hhcmdSc1BnUiksIC0xLCAwLCAwLCAxLCAxLCA4LCAiIiwgKGNoYXIqKU5V
TEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJzdHIiLDM0NSxHX19H
X19zdHJlYW1fMjlfMF80LCAxMTcsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1M
Tl9zdHJpbmcpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJiYXNpY19vc3RyaW5nc3RyZWFtPGNoYXIs
Y2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID46Ol9fc3RyaW5nX3R5cGUiKSwgMCwg
MCwgMSwgMSwgOCwgIiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVt
ZnVuY19zZXR1cCgic3RyIiwzNDUsR19fR19fc3RyZWFtXzI5XzBfNSwgMTIxLCAtMSwgLTEsIDAs
IDEsIDEsIDEsIDAsICJ1ICdzdHJpbmcnICdiYXNpY19vc3RyaW5nc3RyZWFtPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID46Ol9fc3RyaW5nX3R5cGUnIDExIC0gc3RyIiwg
KGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICAvLyBhdXRvbWF0aWMgZGVzdHJ1Y3Rv
cgorICAgR19fbWVtZnVuY19zZXR1cCgifmJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiIsIDYwMjIsIEdfX0dfX3N0cmVhbV8yOV8wXzYs
IChpbnQpICgneScpLCAtMSwgLTEsIDAsIDAsIDEsIDEsIDAsICIiLCAoY2hhciopIE5VTEwsICh2
b2lkKikgTlVMTCwgMSk7CisgICBHX190YWdfbWVtZnVuY19yZXNldCgpOworfQorCitzdGF0aWMg
dm9pZCBHX19zZXR1cF9tZW1mdW5jYmFzaWNfc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0
c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1Iodm9pZCkgeworICAgLyogYmFzaWNfc3Ry
aW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4gKi8KKyAg
IEdfX3RhZ19tZW1mdW5jX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1M
Tl9iYXNpY19zdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRv
cmxFY2hhcmdSc1BnUikpOworICAgR19fbWVtZnVuY19zZXR1cCgiYmFzaWNfc3RyaW5nc3RyZWFt
PGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4iLDU3ODUsR19fR19fc3Ry
ZWFtXzMwXzBfMSwgMTA1LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFz
aWNfc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNo
YXJnUnNQZ1IpLCAtMSwgMCwgMSwgNSwgMSwgMCwgImkgLSAnaW9zX2Jhc2U6Om9wZW5tb2RlJyAw
ICdpb3NfYmFzZTo6b3V0fGlvc19iYXNlOjppbicgd2hpY2giLCAoY2hhciopTlVMTCwgKHZvaWQq
KSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImJhc2ljX3N0cmluZ3N0cmVhbTxjaGFy
LGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+Iiw1Nzg1LEdfX0dfX3N0cmVhbV8z
MF8wXzIsIDEwNSwgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0
cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1Jz
UGdSKSwgLTEsIDAsIDIsIDUsIDEsIDAsIAorInUgJ3N0cmluZycgJ2Jhc2ljX3N0cmluZ3N0cmVh
bTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+OjpfX3N0cmluZ190eXBl
JyAxMSAtIHN0ciBpIC0gJ2lvc19iYXNlOjpvcGVubW9kZScgMCAnaW9zX2Jhc2U6Om91dHxpb3Nf
YmFzZTo6aW4nIHdoaWNoIiwgKGNoYXIqKU5VTEwsICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19t
ZW1mdW5jX3NldHVwKCJyZGJ1ZiIsNTMxLEdfX0dfX3N0cmVhbV8zMF8wXzMsIDg1LCBHX19nZXRf
bGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfc3RyaW5nYnVmbEVjaGFyY09jaGFy
X3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IpLCAtMSwgMCwgMCwgMSwgMSwg
OCwgIiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1
cCgic3RyIiwzNDUsR19fR19fc3RyZWFtXzMwXzBfNCwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251
bSgmR19fR19fc3RyZWFtTE5fc3RyaW5nKSwgR19fZGVmaW5lZF90eXBlbmFtZSgiYmFzaWNfc3Ry
aW5nc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID46Ol9fc3Ry
aW5nX3R5cGUiKSwgMCwgMCwgMSwgMSwgOCwgIiIsIChjaGFyKilOVUxMLCAodm9pZCopIE5VTEws
IDApOworICAgR19fbWVtZnVuY19zZXR1cCgic3RyIiwzNDUsR19fR19fc3RyZWFtXzMwXzBfNSwg
MTIxLCAtMSwgLTEsIDAsIDEsIDEsIDEsIDAsICJ1ICdzdHJpbmcnICdiYXNpY19zdHJpbmdzdHJl
YW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPjo6X19zdHJpbmdfdHlw
ZScgMTEgLSBzdHIiLCAoY2hhciopTlVMTCwgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIC8vIGF1dG9t
YXRpYyBkZXN0cnVjdG9yCisgICBHX19tZW1mdW5jX3NldHVwKCJ+YmFzaWNfc3RyaW5nc3RyZWFt
PGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4iLCA1OTExLCBHX19HX19z
dHJlYW1fMzBfMF82LCAoaW50KSAoJ3knKSwgLTEsIC0xLCAwLCAwLCAxLCAxLCAwLCAiIiwgKGNo
YXIqKSBOVUxMLCAodm9pZCopIE5VTEwsIDEpOworICAgR19fdGFnX21lbWZ1bmNfcmVzZXQoKTsK
K30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCisqIE1lbWJlciBmdW5jdGlvbiBpbmZvcm1hdGlvbiBzZXR1cAorKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworZXh0ZXJu
ICJDIiB2b2lkIEdfX2NwcF9zZXR1cF9tZW1mdW5jR19fc3RyZWFtKCkgeworfQorCisvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIEds
b2JhbCB2YXJpYWJsZSBpbmZvcm1hdGlvbiBzZXR1cCBmb3IgZWFjaCBjbGFzcworKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGlj
IHZvaWQgR19fY3BwX3NldHVwX2dsb2JhbDAoKSB7CisKKyAgIC8qIFNldHRpbmcgdXAgZ2xvYmFs
IHZhcmlhYmxlcyAqLworICAgR19fcmVzZXRwbG9jYWwoKTsKKworICAgR19fbWVtdmFyX3NldHVw
KCh2b2lkKilHX19QVk9JRCwxMTIsMCwwLC0xLC0xLC0xLDEsIl9fR05VQ19fPTMiLDEsKGNoYXIq
KU5VTEwpOworICAgR19fbWVtdmFyX3NldHVwKCh2b2lkKilHX19QVk9JRCwxMTIsMCwwLC0xLC0x
LC0xLDEsIl9fR05VQ19NSU5PUl9fPTQiLDEsKGNoYXIqKU5VTEwpOworICAgR19fbWVtdmFyX3Nl
dHVwKCh2b2lkKilHX19QVk9JRCwxMTIsMCwwLC0xLC0xLC0xLDEsIkdfX0lPU1RSRUFNX0g9MCIs
MSwoY2hhciopTlVMTCk7CisgICBHX19tZW12YXJfc2V0dXAoKHZvaWQqKUdfX1BWT0lELDExMiww
LDAsLTEsLTEsLTEsMSwiR19fVE1QTFRJT1M9MCIsMSwoY2hhciopTlVMTCk7CisgICBHX19tZW12
YXJfc2V0dXAoKHZvaWQqKUdfX1BWT0lELDExMiwwLDAsLTEsLTEsLTEsMSwiR19fT1NUUkVBTUJP
RFk9MCIsMSwoY2hhciopTlVMTCk7CisgICBHX19tZW12YXJfc2V0dXAoKHZvaWQqKUdfX1BWT0lE
LDExMiwwLDAsLTEsLTEsLTEsMSwiR19fT1NUUkVBTUdMT0JBTFNUVUI9MCIsMSwoY2hhciopTlVM
TCk7CisgICBHX19tZW12YXJfc2V0dXAoKHZvaWQqKUdfX1BWT0lELDExMiwwLDAsLTEsLTEsLTEs
MSwiR19fTUFOSVBfU1VQUE9SVD0wIiwxLChjaGFyKilOVUxMKTsKKyAgIEdfX21lbXZhcl9zZXR1
cCgodm9pZCopKCZjaW4pLDExNywwLDAsR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVh
bUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSxHX19kZWZp
bmVkX3R5cGVuYW1lKCJpc3RyZWFtIiksLTEsMSwiY2luPSIsMCwoY2hhciopTlVMTCk7CisgICBH
X19tZW12YXJfc2V0dXAoKHZvaWQqKSgmY291dCksMTE3LDAsMCxHX19nZXRfbGlua2VkX3RhZ251
bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJn
UnNQZ1IpLEdfX2RlZmluZWRfdHlwZW5hbWUoIm9zdHJlYW0iKSwtMSwxLCJjb3V0PSIsMCwoY2hh
ciopTlVMTCk7CisgICBHX19tZW12YXJfc2V0dXAoKHZvaWQqKSgmY2VyciksMTE3LDAsMCxHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1IpLEdfX2RlZmluZWRfdHlwZW5hbWUoIm9zdHJlYW0iKSwtMSwx
LCJjZXJyPSIsMCwoY2hhciopTlVMTCk7CisgICBHX19tZW12YXJfc2V0dXAoKHZvaWQqKSgmY2xv
ZyksMTE3LDAsMCxHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0
cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLEdfX2RlZmluZWRfdHlwZW5hbWUo
Im9zdHJlYW0iKSwtMSwxLCJjbG9nPSIsMCwoY2hhciopTlVMTCk7CisgICBHX19tZW12YXJfc2V0
dXAoKHZvaWQqKUdfX1BWT0lELDExMiwwLDAsLTEsLTEsLTEsMSwiR19fRlNUUkVBTV9IPTAiLDEs
KGNoYXIqKU5VTEwpOworICAgR19fbWVtdmFyX3NldHVwKCh2b2lkKilHX19QVk9JRCwxMTIsMCww
LC0xLC0xLC0xLDEsIkdfX1NTVFJFQU1fSD0wIiwxLChjaGFyKilOVUxMKTsKKworICAgR19fcmVz
ZXRnbG9iYWxlbnYoKTsKK30KK2V4dGVybiAiQyIgdm9pZCBHX19jcHBfc2V0dXBfZ2xvYmFsR19f
c3RyZWFtKCkgeworICBHX19jcHBfc2V0dXBfZ2xvYmFsMCgpOworfQorCisvKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIEdsb2JhbCBm
dW5jdGlvbiBpbmZvcm1hdGlvbiBzZXR1cCBmb3IgZWFjaCBjbGFzcworKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQg
R19fY3BwX3NldHVwX2Z1bmMwKCkgeworICAgR19fbGFzdGlmdW5jcG9zaXRpb24oKTsKKworICAg
R19fbWVtZnVuY19zZXR1cCgiZGVjIiwgMzAwLCBHX19HX19zdHJlYW1fXzBfMCwgMTE3LCBHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2UpLCAtMSwgMSwgMSwgMSwg
MSwgMCwgInUgJ2lvc19iYXNlJyAtIDEgLSAtIiwgKGNoYXIqKSBOVUxMCisjaWZuZGVmIGRlYwor
LCAodm9pZCopIChpb3NfYmFzZSYgKCopKGlvc19iYXNlJikpZGVjLCAwKTsKKyNlbHNlCissICh2
b2lkKikgTlVMTCwgMCk7CisjZW5kaWYKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImhleCIsIDMyNSwg
R19fR19fc3RyZWFtX18wXzEsIDExNywgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVh
bUxOX2lvc19iYXNlKSwgLTEsIDEsIDEsIDEsIDEsIDAsICJ1ICdpb3NfYmFzZScgLSAxIC0gLSIs
IChjaGFyKikgTlVMTAorI2lmbmRlZiBoZXgKKywgKHZvaWQqKSAoaW9zX2Jhc2UmICgqKShpb3Nf
YmFzZSYpKWhleCwgMCk7CisjZWxzZQorLCAodm9pZCopIE5VTEwsIDApOworI2VuZGlmCisgICBH
X19tZW1mdW5jX3NldHVwKCJvY3QiLCAzMjYsIEdfX0dfX3N0cmVhbV9fMF8yLCAxMTcsIEdfX2dl
dF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9pb3NfYmFzZSksIC0xLCAxLCAxLCAxLCAx
LCAwLCAidSAnaW9zX2Jhc2UnIC0gMSAtIC0iLCAoY2hhciopIE5VTEwKKyNpZm5kZWYgb2N0Ciss
ICh2b2lkKikgKGlvc19iYXNlJiAoKikoaW9zX2Jhc2UmKSlvY3QsIDApOworI2Vsc2UKKywgKHZv
aWQqKSBOVUxMLCAwKTsKKyNlbmRpZgorICAgR19fbWVtZnVuY19zZXR1cCgiZml4ZWQiLCA1Mjgs
IEdfX0dfX3N0cmVhbV9fMF8zLCAxMTcsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJl
YW1MTl9pb3NfYmFzZSksIC0xLCAxLCAxLCAxLCAxLCAwLCAidSAnaW9zX2Jhc2UnIC0gMSAtIC0i
LCAoY2hhciopIE5VTEwKKyNpZm5kZWYgZml4ZWQKKywgKHZvaWQqKSAoaW9zX2Jhc2UmICgqKShp
b3NfYmFzZSYpKWZpeGVkLCAwKTsKKyNlbHNlCissICh2b2lkKikgTlVMTCwgMCk7CisjZW5kaWYK
KyAgIEdfX21lbWZ1bmNfc2V0dXAoInNjaWVudGlmaWMiLCAxMDU3LCBHX19HX19zdHJlYW1fXzBf
NCwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2UpLCAt
MSwgMSwgMSwgMSwgMSwgMCwgInUgJ2lvc19iYXNlJyAtIDEgLSAtIiwgKGNoYXIqKSBOVUxMCisj
aWZuZGVmIHNjaWVudGlmaWMKKywgKHZvaWQqKSAoaW9zX2Jhc2UmICgqKShpb3NfYmFzZSYpKXNj
aWVudGlmaWMsIDApOworI2Vsc2UKKywgKHZvaWQqKSBOVUxMLCAwKTsKKyNlbmRpZgorICAgR19f
bWVtZnVuY19zZXR1cCgicmlnaHQiLCA1NDIsIEdfX0dfX3N0cmVhbV9fMF81LCAxMTcsIEdfX2dl
dF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9pb3NfYmFzZSksIC0xLCAxLCAxLCAxLCAx
LCAwLCAidSAnaW9zX2Jhc2UnIC0gMSAtIC0iLCAoY2hhciopIE5VTEwKKyNpZm5kZWYgcmlnaHQK
KywgKHZvaWQqKSAoaW9zX2Jhc2UmICgqKShpb3NfYmFzZSYpKXJpZ2h0LCAwKTsKKyNlbHNlCiss
ICh2b2lkKikgTlVMTCwgMCk7CisjZW5kaWYKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImxlZnQiLCA0
MjcsIEdfX0dfX3N0cmVhbV9fMF82LCAxMTcsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19z
dHJlYW1MTl9pb3NfYmFzZSksIC0xLCAxLCAxLCAxLCAxLCAwLCAidSAnaW9zX2Jhc2UnIC0gMSAt
IC0iLCAoY2hhciopIE5VTEwKKyNpZm5kZWYgbGVmdAorLCAodm9pZCopIChpb3NfYmFzZSYgKCop
KGlvc19iYXNlJikpbGVmdCwgMCk7CisjZWxzZQorLCAodm9pZCopIE5VTEwsIDApOworI2VuZGlm
CisgICBHX19tZW1mdW5jX3NldHVwKCJpbnRlcm5hbCIsIDg2MSwgR19fR19fc3RyZWFtX18wXzcs
IDExNywgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlKSwgLTEs
IDEsIDEsIDEsIDEsIDAsICJ1ICdpb3NfYmFzZScgLSAxIC0gLSIsIChjaGFyKikgTlVMTAorI2lm
bmRlZiBpbnRlcm5hbAorLCAodm9pZCopIChpb3NfYmFzZSYgKCopKGlvc19iYXNlJikpaW50ZXJu
YWwsIDApOworI2Vsc2UKKywgKHZvaWQqKSBOVUxMLCAwKTsKKyNlbmRpZgorICAgR19fbWVtZnVu
Y19zZXR1cCgibm91cHBlcmNhc2UiLCAxMTg5LCBHX19HX19zdHJlYW1fXzBfOCwgMTE3LCBHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2UpLCAtMSwgMSwgMSwgMSwg
MSwgMCwgInUgJ2lvc19iYXNlJyAtIDEgLSAtIiwgKGNoYXIqKSBOVUxMCisjaWZuZGVmIG5vdXBw
ZXJjYXNlCissICh2b2lkKikgKGlvc19iYXNlJiAoKikoaW9zX2Jhc2UmKSlub3VwcGVyY2FzZSwg
MCk7CisjZWxzZQorLCAodm9pZCopIE5VTEwsIDApOworI2VuZGlmCisgICBHX19tZW1mdW5jX3Nl
dHVwKCJ1cHBlcmNhc2UiLCA5NjgsIEdfX0dfX3N0cmVhbV9fMF85LCAxMTcsIEdfX2dldF9saW5r
ZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9pb3NfYmFzZSksIC0xLCAxLCAxLCAxLCAxLCAwLCAi
dSAnaW9zX2Jhc2UnIC0gMSAtIC0iLCAoY2hhciopIE5VTEwKKyNpZm5kZWYgdXBwZXJjYXNlCiss
ICh2b2lkKikgKGlvc19iYXNlJiAoKikoaW9zX2Jhc2UmKSl1cHBlcmNhc2UsIDApOworI2Vsc2UK
KywgKHZvaWQqKSBOVUxMLCAwKTsKKyNlbmRpZgorICAgR19fbWVtZnVuY19zZXR1cCgibm9za2lw
d3MiLCA4OTQsIEdfX0dfX3N0cmVhbV9fMF8xMCwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgm
R19fR19fc3RyZWFtTE5faW9zX2Jhc2UpLCAtMSwgMSwgMSwgMSwgMSwgMCwgInUgJ2lvc19iYXNl
JyAtIDEgLSAtIiwgKGNoYXIqKSBOVUxMCisjaWZuZGVmIG5vc2tpcHdzCissICh2b2lkKikgKGlv
c19iYXNlJiAoKikoaW9zX2Jhc2UmKSlub3NraXB3cywgMCk7CisjZWxzZQorLCAodm9pZCopIE5V
TEwsIDApOworI2VuZGlmCisgICBHX19tZW1mdW5jX3NldHVwKCJza2lwd3MiLCA2NzMsIEdfX0df
X3N0cmVhbV9fMF8xMSwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5f
aW9zX2Jhc2UpLCAtMSwgMSwgMSwgMSwgMSwgMCwgInUgJ2lvc19iYXNlJyAtIDEgLSAtIiwgKGNo
YXIqKSBOVUxMCisjaWZuZGVmIHNraXB3cworLCAodm9pZCopIChpb3NfYmFzZSYgKCopKGlvc19i
YXNlJikpc2tpcHdzLCAwKTsKKyNlbHNlCissICh2b2lkKikgTlVMTCwgMCk7CisjZW5kaWYKKyAg
IEdfX21lbWZ1bmNfc2V0dXAoIm5vc2hvd3BvcyIsIDEwMDgsIEdfX0dfX3N0cmVhbV9fMF8xMiwg
MTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2UpLCAtMSwg
MSwgMSwgMSwgMSwgMCwgInUgJ2lvc19iYXNlJyAtIDEgLSAtIiwgKGNoYXIqKSBOVUxMCisjaWZu
ZGVmIG5vc2hvd3BvcworLCAodm9pZCopIChpb3NfYmFzZSYgKCopKGlvc19iYXNlJikpbm9zaG93
cG9zLCAwKTsKKyNlbHNlCissICh2b2lkKikgTlVMTCwgMCk7CisjZW5kaWYKKyAgIEdfX21lbWZ1
bmNfc2V0dXAoInNob3dwb3MiLCA3ODcsIEdfX0dfX3N0cmVhbV9fMF8xMywgMTE3LCBHX19nZXRf
bGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2UpLCAtMSwgMSwgMSwgMSwgMSwg
MCwgInUgJ2lvc19iYXNlJyAtIDEgLSAtIiwgKGNoYXIqKSBOVUxMCisjaWZuZGVmIHNob3dwb3MK
KywgKHZvaWQqKSAoaW9zX2Jhc2UmICgqKShpb3NfYmFzZSYpKXNob3dwb3MsIDApOworI2Vsc2UK
KywgKHZvaWQqKSBOVUxMLCAwKTsKKyNlbmRpZgorICAgR19fbWVtZnVuY19zZXR1cCgibm9zaG93
cG9pbnQiLCAxMjI0LCBHX19HX19zdHJlYW1fXzBfMTQsIDExNywgR19fZ2V0X2xpbmtlZF90YWdu
dW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlKSwgLTEsIDEsIDEsIDEsIDEsIDAsICJ1ICdpb3Nf
YmFzZScgLSAxIC0gLSIsIChjaGFyKikgTlVMTAorI2lmbmRlZiBub3Nob3dwb2ludAorLCAodm9p
ZCopIChpb3NfYmFzZSYgKCopKGlvc19iYXNlJikpbm9zaG93cG9pbnQsIDApOworI2Vsc2UKKywg
KHZvaWQqKSBOVUxMLCAwKTsKKyNlbmRpZgorICAgR19fbWVtZnVuY19zZXR1cCgic2hvd3BvaW50
IiwgMTAwMywgR19fR19fc3RyZWFtX18wXzE1LCAxMTcsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZH
X19HX19zdHJlYW1MTl9pb3NfYmFzZSksIC0xLCAxLCAxLCAxLCAxLCAwLCAidSAnaW9zX2Jhc2Un
IC0gMSAtIC0iLCAoY2hhciopIE5VTEwKKyNpZm5kZWYgc2hvd3BvaW50CissICh2b2lkKikgKGlv
c19iYXNlJiAoKikoaW9zX2Jhc2UmKSlzaG93cG9pbnQsIDApOworI2Vsc2UKKywgKHZvaWQqKSBO
VUxMLCAwKTsKKyNlbmRpZgorICAgR19fbWVtZnVuY19zZXR1cCgibm9zaG93YmFzZSIsIDEwODEs
IEdfX0dfX3N0cmVhbV9fMF8xNiwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3Ry
ZWFtTE5faW9zX2Jhc2UpLCAtMSwgMSwgMSwgMSwgMSwgMCwgInUgJ2lvc19iYXNlJyAtIDEgLSAt
IiwgKGNoYXIqKSBOVUxMCisjaWZuZGVmIG5vc2hvd2Jhc2UKKywgKHZvaWQqKSAoaW9zX2Jhc2Um
ICgqKShpb3NfYmFzZSYpKW5vc2hvd2Jhc2UsIDApOworI2Vsc2UKKywgKHZvaWQqKSBOVUxMLCAw
KTsKKyNlbmRpZgorICAgR19fbWVtZnVuY19zZXR1cCgic2hvd2Jhc2UiLCA4NjAsIEdfX0dfX3N0
cmVhbV9fMF8xNywgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9z
X2Jhc2UpLCAtMSwgMSwgMSwgMSwgMSwgMCwgInUgJ2lvc19iYXNlJyAtIDEgLSAtIiwgKGNoYXIq
KSBOVUxMCisjaWZuZGVmIHNob3diYXNlCissICh2b2lkKikgKGlvc19iYXNlJiAoKikoaW9zX2Jh
c2UmKSlzaG93YmFzZSwgMCk7CisjZWxzZQorLCAodm9pZCopIE5VTEwsIDApOworI2VuZGlmCisg
ICBHX19tZW1mdW5jX3NldHVwKCJub2Jvb2xhbHBoYSIsIDExNjcsIEdfX0dfX3N0cmVhbV9fMF8x
OCwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2UpLCAt
MSwgMSwgMSwgMSwgMSwgMCwgInUgJ2lvc19iYXNlJyAtIDEgLSAtIiwgKGNoYXIqKSBOVUxMCisj
aWZuZGVmIG5vYm9vbGFscGhhCissICh2b2lkKikgKGlvc19iYXNlJiAoKikoaW9zX2Jhc2UmKSlu
b2Jvb2xhbHBoYSwgMCk7CisjZWxzZQorLCAodm9pZCopIE5VTEwsIDApOworI2VuZGlmCisgICBH
X19tZW1mdW5jX3NldHVwKCJib29sYWxwaGEiLCA5NDYsIEdfX0dfX3N0cmVhbV9fMF8xOSwgMTE3
LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jhc2UpLCAtMSwgMSwg
MSwgMSwgMSwgMCwgInUgJ2lvc19iYXNlJyAtIDEgLSAtIiwgKGNoYXIqKSBOVUxMCisjaWZuZGVm
IGJvb2xhbHBoYQorLCAodm9pZCopIChpb3NfYmFzZSYgKCopKGlvc19iYXNlJikpYm9vbGFscGhh
LCAwKTsKKyNlbHNlCissICh2b2lkKikgTlVMTCwgMCk7CisjZW5kaWYKKyAgIEdfX21lbWZ1bmNf
c2V0dXAoIndzIiwgMjM0LCBHX19HX19zdHJlYW1fXzBfMjAsIDExNywgR19fZ2V0X2xpbmtlZF90
YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSKSwgR19fZGVmaW5lZF90eXBlbmFtZSgiaXN0cmVhbSIpLCAxLCAxLCAxLCAxLCAw
LCAidSAnYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4nICdpc3RyZWFtJyAx
IC0gLSIsIChjaGFyKikgTlVMTAorI2lmbmRlZiB3cworLCAodm9pZCopIChpc3RyZWFtJiAoKiko
aXN0cmVhbSYpKXdzLCAwKTsKKyNlbHNlCissICh2b2lkKikgTlVMTCwgMCk7CisjZW5kaWYKKyAg
IEdfX21lbWZ1bmNfc2V0dXAoImVuZGwiLCA0MTksIEdfX0dfX3N0cmVhbV9fMF8yMSwgMTE3LCBH
X19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNP
Y2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJvc3RyZWFtIiks
IDEsIDEsIDEsIDEsIDAsICJ1ICdiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PicgJ29zdHJlYW0nIDEgLSBpIiwgKGNoYXIqKSBOVUxMCisjaWZuZGVmIGVuZGwKKywgKHZvaWQq
KSAob3N0cmVhbSYgKCopKG9zdHJlYW0mKSllbmRsLCAwKTsKKyNlbHNlCissICh2b2lkKikgTlVM
TCwgMCk7CisjZW5kaWYKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImVuZHMiLCA0MjYsIEdfX0dfX3N0
cmVhbV9fMF8yMiwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFz
aWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5
cGVuYW1lKCJvc3RyZWFtIiksIDEsIDEsIDEsIDEsIDAsICJ1ICdiYXNpY19vc3RyZWFtPGNoYXIs
Y2hhcl90cmFpdHM8Y2hhcj4gPicgJ29zdHJlYW0nIDEgLSBpIiwgKGNoYXIqKSBOVUxMCisjaWZu
ZGVmIGVuZHMKKywgKHZvaWQqKSAob3N0cmVhbSYgKCopKG9zdHJlYW0mKSllbmRzLCAwKTsKKyNl
bHNlCissICh2b2lkKikgTlVMTCwgMCk7CisjZW5kaWYKKyAgIEdfX21lbWZ1bmNfc2V0dXAoImZs
dXNoIiwgNTQ2LCBHX19HX19zdHJlYW1fXzBfMjMsIDExNywgR19fZ2V0X2xpbmtlZF90YWdudW0o
JkdfX0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1Jz
UGdSKSwgR19fZGVmaW5lZF90eXBlbmFtZSgib3N0cmVhbSIpLCAxLCAxLCAxLCAxLCAwLCAidSAn
YmFzaWNfb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4nICdvc3RyZWFtJyAxIC0gLSIs
IChjaGFyKikgTlVMTAorI2lmbmRlZiBmbHVzaAorLCAodm9pZCopIChvc3RyZWFtJiAoKikob3N0
cmVhbSYpKWZsdXNoLCAwKTsKKyNlbHNlCissICh2b2lkKikgTlVMTCwgMCk7CisjZW5kaWYKKyAg
IEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPDwiLCA5OTYsIEdfX0dfX3N0cmVhbV9fMF8yNCwg
MTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxF
Y2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJvc3Ry
ZWFtIiksIDEsIDIsIDEsIDEsIDAsIAorInUgJ2Jhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+JyAnb3N0cmVhbScgMSAtIC0gYyAtIC0gMCAtIC0iLCAoY2hhciopIE5VTEwKKywg
KHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPDwiLCA5OTYs
IEdfX0dfX3N0cmVhbV9fMF8yNSwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3Ry
ZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19k
ZWZpbmVkX3R5cGVuYW1lKCJvc3RyZWFtIiksIDEsIDIsIDEsIDEsIDAsIAorInUgJ2Jhc2ljX29z
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+JyAnb3N0cmVhbScgMSAtIC0gQyAtIC0gMCAt
IC0iLCAoY2hhciopIE5VTEwKKywgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0
dXAoIm9wZXJhdG9yPDwiLCA5OTYsIEdfX0dfX3N0cmVhbV9fMF8yNiwgMTE3LCBHX19nZXRfbGlu
a2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFp
dHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJvc3RyZWFtIiksIDEsIDIsIDEs
IDEsIDAsIAorInUgJ2Jhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+JyAnb3N0
cmVhbScgMSAtIC0gWSAtIC0gMCAtIC0iLCAoY2hhciopIE5VTEwKKywgKHZvaWQqKSBOVUxMLCAw
KTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPDwiLCA5OTYsIEdfX0dfX3N0cmVhbV9f
MF8yNywgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0
cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1l
KCJvc3RyZWFtIiksIDEsIDIsIDEsIDEsIDAsIAorInUgJ2Jhc2ljX29zdHJlYW08Y2hhcixjaGFy
X3RyYWl0czxjaGFyPiA+JyAnb3N0cmVhbScgMSAtIC0gYiAtIC0gMCAtIC0iLCAoY2hhciopIE5V
TEwKKywgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPDwi
LCA5OTYsIEdfX0dfX3N0cmVhbV9fMF8yOCwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19f
R19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1Ip
LCBHX19kZWZpbmVkX3R5cGVuYW1lKCJvc3RyZWFtIiksIDEsIDIsIDEsIDEsIDAsIAorInUgJ2Jh
c2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+JyAnb3N0cmVhbScgMSAtIC0gcyAt
IC0gMCAtIC0iLCAoY2hhciopIE5VTEwKKywgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1
bmNfc2V0dXAoIm9wZXJhdG9yPDwiLCA5OTYsIEdfX0dfX3N0cmVhbV9fMF8yOSwgMTE3LCBHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJvc3RyZWFtIiksIDEs
IDIsIDEsIDEsIDAsIAorInUgJ2Jhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+
JyAnb3N0cmVhbScgMSAtIC0gciAtIC0gMCAtIC0iLCAoY2hhciopIE5VTEwKKywgKHZvaWQqKSBO
VUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPDwiLCA5OTYsIEdfX0dfX3N0
cmVhbV9fMF8zMCwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFz
aWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5
cGVuYW1lKCJvc3RyZWFtIiksIDEsIDIsIDEsIDEsIDAsIAorInUgJ2Jhc2ljX29zdHJlYW08Y2hh
cixjaGFyX3RyYWl0czxjaGFyPiA+JyAnb3N0cmVhbScgMSAtIG9zdHIgaSAtIC0gMSAtIGkiLCAo
Y2hhciopIE5VTEwKKywgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9w
ZXJhdG9yPDwiLCA5OTYsIEdfX0dfX3N0cmVhbV9fMF8zMSwgMTE3LCBHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNo
YXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJvc3RyZWFtIiksIDEsIDIsIDEsIDEsIDAs
IAorInUgJ2Jhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+JyAnb3N0cmVhbScg
MSAtIC0gaCAtIC0gMCAtIC0iLCAoY2hhciopIE5VTEwKKywgKHZvaWQqKSBOVUxMLCAwKTsKKyAg
IEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPDwiLCA5OTYsIEdfX0dfX3N0cmVhbV9fMF8zMiwg
MTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxF
Y2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJvc3Ry
ZWFtIiksIDEsIDIsIDEsIDEsIDAsIAorInUgJ2Jhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+JyAnb3N0cmVhbScgMSAtIC0gbCAtIC0gMCAtIC0iLCAoY2hhciopIE5VTEwKKywg
KHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPDwiLCA5OTYs
IEdfX0dfX3N0cmVhbV9fMF8zMywgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3Ry
ZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19k
ZWZpbmVkX3R5cGVuYW1lKCJvc3RyZWFtIiksIDEsIDIsIDEsIDEsIDAsIAorInUgJ2Jhc2ljX29z
dHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+JyAnb3N0cmVhbScgMSAtIC0gayAtIC0gMCAt
IC0iLCAoY2hhciopIE5VTEwKKywgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0
dXAoIm9wZXJhdG9yPDwiLCA5OTYsIEdfX0dfX3N0cmVhbV9fMF8zNCwgMTE3LCBHX19nZXRfbGlu
a2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFp
dHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJvc3RyZWFtIiksIDEsIDIsIDEs
IDEsIDAsIAorInUgJ2Jhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+JyAnb3N0
cmVhbScgMSAtIC0gZiAtIC0gMCAtIC0iLCAoY2hhciopIE5VTEwKKywgKHZvaWQqKSBOVUxMLCAw
KTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPDwiLCA5OTYsIEdfX0dfX3N0cmVhbV9f
MF8zNSwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0
cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1l
KCJvc3RyZWFtIiksIDEsIDIsIDEsIDEsIDAsIAorInUgJ2Jhc2ljX29zdHJlYW08Y2hhcixjaGFy
X3RyYWl0czxjaGFyPiA+JyAnb3N0cmVhbScgMSAtIC0gZCAtIC0gMCAtIC0iLCAoY2hhciopIE5V
TEwKKywgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPDwi
LCA5OTYsIEdfX0dfX3N0cmVhbV9fMF8zNiwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19f
R19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1Ip
LCBHX19kZWZpbmVkX3R5cGVuYW1lKCJvc3RyZWFtIiksIDEsIDIsIDEsIDEsIDAsIAorInUgJ2Jh
c2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+JyAnb3N0cmVhbScgMSAtIC0gZyAt
IC0gMCAtIC0iLCAoY2hhciopIE5VTEwKKywgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1
bmNfc2V0dXAoIm9wZXJhdG9yPj4iLCAxMDAwLCBHX19HX19zdHJlYW1fXzBfMzcsIDExNywgR19f
Z2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2No
YXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwgR19fZGVmaW5lZF90eXBlbmFtZSgiaXN0cmVhbSIpLCAx
LCAyLCAxLCAxLCAwLCAKKyJ1ICdiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PicgJ2lzdHJlYW0nIDEgLSAtIGMgLSAtIDEgLSAtIiwgKGNoYXIqKSBOVUxMCissICh2b2lkKikg
TlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJvcGVyYXRvcj4+IiwgMTAwMCwgR19fR19f
c3RyZWFtX18wXzM4LCAxMTcsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9i
YXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksIEdfX2RlZmluZWRf
dHlwZW5hbWUoImlzdHJlYW0iKSwgMSwgMiwgMSwgMSwgMCwgCisidSAnYmFzaWNfaXN0cmVhbTxj
aGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4nICdpc3RyZWFtJyAxIC0gLSBiIC0gLSAxIC0gLSIsIChj
aGFyKikgTlVMTAorLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVuY19zZXR1cCgib3Bl
cmF0b3I+PiIsIDEwMDAsIEdfX0dfX3N0cmVhbV9fMF8zOSwgMTE3LCBHX19nZXRfbGlua2VkX3Rh
Z251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNo
YXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJpc3RyZWFtIiksIDEsIDIsIDEsIDEsIDAs
IAorInUgJ2Jhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+JyAnaXN0cmVhbScg
MSAtIC0gcyAtIC0gMSAtIC0iLCAoY2hhciopIE5VTEwKKywgKHZvaWQqKSBOVUxMLCAwKTsKKyAg
IEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPj4iLCAxMDAwLCBHX19HX19zdHJlYW1fXzBfNDAs
IDExNywgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1s
RWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwgR19fZGVmaW5lZF90eXBlbmFtZSgiaXN0
cmVhbSIpLCAxLCAyLCAxLCAxLCAwLCAKKyJ1ICdiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4gPicgJ2lzdHJlYW0nIDEgLSAtIHIgLSAtIDEgLSAtIiwgKGNoYXIqKSBOVUxMCiss
ICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJvcGVyYXRvcj4+IiwgMTAw
MCwgR19fR19fc3RyZWFtX18wXzQxLCAxMTcsIEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19z
dHJlYW1MTl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiksIEdf
X2RlZmluZWRfdHlwZW5hbWUoImlzdHJlYW0iKSwgMSwgMiwgMSwgMSwgMCwgCisidSAnYmFzaWNf
aXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4nICdpc3RyZWFtJyAxIC0gaXN0ciBpIC0g
LSAxIC0gaSIsIChjaGFyKikgTlVMTAorLCAodm9pZCopIE5VTEwsIDApOworICAgR19fbWVtZnVu
Y19zZXR1cCgib3BlcmF0b3I+PiIsIDEwMDAsIEdfX0dfX3N0cmVhbV9fMF80MiwgMTE3LCBHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJpc3RyZWFtIiksIDEs
IDIsIDEsIDEsIDAsIAorInUgJ2Jhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+
JyAnaXN0cmVhbScgMSAtIC0gaCAtIC0gMSAtIC0iLCAoY2hhciopIE5VTEwKKywgKHZvaWQqKSBO
VUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPj4iLCAxMDAwLCBHX19HX19z
dHJlYW1fXzBfNDMsIDExNywgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jh
c2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwgR19fZGVmaW5lZF90
eXBlbmFtZSgiaXN0cmVhbSIpLCAxLCAyLCAxLCAxLCAwLCAKKyJ1ICdiYXNpY19pc3RyZWFtPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4gPicgJ2lzdHJlYW0nIDEgLSAtIGwgLSAtIDEgLSAtIiwgKGNo
YXIqKSBOVUxMCissICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3NldHVwKCJvcGVy
YXRvcj4+IiwgMTAwMCwgR19fR19fc3RyZWFtX18wXzQ0LCAxMTcsIEdfX2dldF9saW5rZWRfdGFn
bnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hh
cmdSc1BnUiksIEdfX2RlZmluZWRfdHlwZW5hbWUoImlzdHJlYW0iKSwgMSwgMiwgMSwgMSwgMCwg
CisidSAnYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4nICdpc3RyZWFtJyAx
IC0gLSBrIC0gLSAxIC0gLSIsIChjaGFyKikgTlVMTAorLCAodm9pZCopIE5VTEwsIDApOworICAg
R19fbWVtZnVuY19zZXR1cCgib3BlcmF0b3I+PiIsIDEwMDAsIEdfX0dfX3N0cmVhbV9fMF80NSwg
MTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxF
Y2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVuYW1lKCJpc3Ry
ZWFtIiksIDEsIDIsIDEsIDEsIDAsIAorInUgJ2Jhc2ljX2lzdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPiA+JyAnaXN0cmVhbScgMSAtIC0gZiAtIC0gMSAtIC0iLCAoY2hhciopIE5VTEwKKywg
KHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9yPj4iLCAxMDAw
LCBHX19HX19zdHJlYW1fXzBfNDYsIDExNywgR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0
cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKSwgR19f
ZGVmaW5lZF90eXBlbmFtZSgiaXN0cmVhbSIpLCAxLCAyLCAxLCAxLCAwLCAKKyJ1ICdiYXNpY19p
c3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPicgJ2lzdHJlYW0nIDEgLSAtIGQgLSAtIDEg
LSAtIiwgKGNoYXIqKSBOVUxMCissICh2b2lkKikgTlVMTCwgMCk7CisgICBHX19tZW1mdW5jX3Nl
dHVwKCJvcGVyYXRvcj4+IiwgMTAwMCwgR19fR19fc3RyZWFtX18wXzQ3LCAxMTcsIEdfX2dldF9s
aW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3Ry
YWl0c2xFY2hhcmdSc1BnUiksIEdfX2RlZmluZWRfdHlwZW5hbWUoImlzdHJlYW0iKSwgMSwgMiwg
MSwgMSwgMCwgCisidSAnYmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4nICdp
c3RyZWFtJyAxIC0gLSBnIC0gLSAxIC0gLSIsIChjaGFyKikgTlVMTAorLCAodm9pZCopIE5VTEws
IDApOworICAgR19fbWVtZnVuY19zZXR1cCgib3BlcmF0b3I+PiIsIDEwMDAsIEdfX0dfX3N0cmVh
bV9fMF80OCwgMTE3LCBHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNf
aXN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLCBHX19kZWZpbmVkX3R5cGVu
YW1lKCJpc3RyZWFtIiksIDEsIDIsIDEsIDEsIDAsIAorInUgJ2Jhc2ljX2lzdHJlYW08Y2hhcixj
aGFyX3RyYWl0czxjaGFyPiA+JyAnaXN0cmVhbScgMSAtIC0gQyAtIC0gMCAtIC0iLCAoY2hhciop
IE5VTEwKKywgKHZvaWQqKSBOVUxMLCAwKTsKKyAgIEdfX21lbWZ1bmNfc2V0dXAoIm9wZXJhdG9y
Pj4iLCAxMDAwLCBHX19HX19zdHJlYW1fXzBfNDksIDExNywgR19fZ2V0X2xpbmtlZF90YWdudW0o
JkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1Jz
UGdSKSwgR19fZGVmaW5lZF90eXBlbmFtZSgiaXN0cmVhbSIpLCAxLCAyLCAxLCAxLCAwLCAKKyJ1
ICdiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPicgJ2lzdHJlYW0nIDEgLSAt
IFkgLSAtIDEgLSAtIiwgKGNoYXIqKSBOVUxMCissICh2b2lkKikgTlVMTCwgMCk7CisKKyAgIEdf
X3Jlc2V0aWZ1bmNwb3NpdGlvbigpOworfQorCitleHRlcm4gIkMiIHZvaWQgR19fY3BwX3NldHVw
X2Z1bmNHX19zdHJlYW0oKSB7CisgIEdfX2NwcF9zZXR1cF9mdW5jMCgpOworfQorCisvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENs
YXNzLHN0cnVjdCx1bmlvbixlbnVtIHRhZyBpbmZvcm1hdGlvbiBzZXR1cAorKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogU2V0dXAg
Y2xhc3Mvc3RydWN0IHRhZ2luZm8gKi8KK0dfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVhbUxO
X21ic3RhdGVfdCA9IHsgIm1ic3RhdGVfdCIgLCAxMTUgLCAtMSB9OworR19fbGlua2VkX3RhZ2lu
Zm8gR19fR19fc3RyZWFtTE5fc3RyZWFtb2ZmID0geyAic3RyZWFtb2ZmIiAsIDk5ICwgLTEgfTsK
K0dfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVhbUxOX2Zwb3NsRW1ic3RhdGVfdGdSID0geyAi
ZnBvczxtYnN0YXRlX3Q+IiAsIDk5ICwgLTEgfTsKK0dfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0
cmVhbUxOX2lvc19iYXNlID0geyAiaW9zX2Jhc2UiICwgOTkgLCAtMSB9OworR19fbGlua2VkX3Rh
Z2luZm8gR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMaW9fc3RhdGUgPSB7ICJpb3NfYmFzZTo6
aW9fc3RhdGUiICwgMTAxICwgLTEgfTsKK0dfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVhbUxO
X2lvc19iYXNlY0xjTG9wZW5fbW9kZSA9IHsgImlvc19iYXNlOjpvcGVuX21vZGUiICwgMTAxICwg
LTEgfTsKK0dfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVhbUxOX2lvc19iYXNlY0xjTHNlZWtf
ZGlyID0geyAiaW9zX2Jhc2U6OnNlZWtfZGlyIiAsIDEwMSAsIC0xIH07CitHX19saW5rZWRfdGFn
aW5mbyBHX19HX19zdHJlYW1MTl9pb3NfYmFzZWNMY0xmbXRfZmxhZ3MgPSB7ICJpb3NfYmFzZTo6
Zm10X2ZsYWdzIiAsIDEwMSAsIC0xIH07CitHX19saW5rZWRfdGFnaW5mbyBHX19HX19zdHJlYW1M
Tl9pb3NfYmFzZWNMY0xldmVudCA9IHsgImlvc19iYXNlOjpldmVudCIgLCAxMDEgLCAtMSB9Owor
R19fbGlua2VkX3RhZ2luZm8gR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMSW5pdCA9IHsgImlv
c19iYXNlOjpJbml0IiAsIDk5ICwgLTEgfTsKK0dfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVh
bUxOX2NoYXJfdHJhaXRzbEVjaGFyZ1IgPSB7ICJjaGFyX3RyYWl0czxjaGFyPiIgLCAxMTUgLCAt
MSB9OworR19fbGlua2VkX3RhZ2luZm8gR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hh
cmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IgPSB7ICJiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90
cmFpdHM8Y2hhcj4gPiIgLCA5OSAsIC0xIH07CitHX19saW5rZWRfdGFnaW5mbyBHX19HX19zdHJl
YW1MTl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSID0geyAiYmFzaWNf
aW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiIgLCA5OSAsIC0xIH07CitHX19saW5rZWRfdGFn
aW5mbyBHX19HX19zdHJlYW1MTl9iYXNpY19zdHJlYW1idWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSID0geyAiYmFzaWNfc3RyZWFtYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiIg
LCA5OSAsIC0xIH07CitHX19saW5rZWRfdGFnaW5mbyBHX19HX19zdHJlYW1MTl9iYXNpY19vc3Ry
ZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiA9IHsgImJhc2ljX29zdHJlYW08Y2hh
cixjaGFyX3RyYWl0czxjaGFyPiA+IiAsIDk5ICwgLTEgfTsKK0dfX2xpbmtlZF90YWdpbmZvIEdf
X0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdS
Y0xjTHNlbnRyeSA9IHsgImJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+Ojpz
ZW50cnkiICwgOTkgLCAtMSB9OworR19fbGlua2VkX3RhZ2luZm8gR19fR19fc3RyZWFtTE5fYmFz
aWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JjTGNMc2VudHJ5ID0geyAi
YmFzaWNfaXN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OnNlbnRyeSIgLCA5OSAsIC0x
IH07CitHX19saW5rZWRfdGFnaW5mbyBHX19HX19zdHJlYW1MTl9iYXNpY19maWxlYnVmbEVjaGFy
Y09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiA9IHsgImJhc2ljX2ZpbGVidWY8Y2hhcixjaGFyX3Ry
YWl0czxjaGFyPiA+IiAsIDk5ICwgLTEgfTsKK0dfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVh
bUxOX2Jhc2ljX2lmc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiA9IHsgImJh
c2ljX2lmc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiIgLCA5OSAsIC0xIH07CitHX19s
aW5rZWRfdGFnaW5mbyBHX19HX19zdHJlYW1MTl9iYXNpY19vZnN0cmVhbWxFY2hhcmNPY2hhcl90
cmFpdHNsRWNoYXJnUnNQZ1IgPSB7ICJiYXNpY19vZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+ID4iICwgOTkgLCAtMSB9OworR19fbGlua2VkX3RhZ2luZm8gR19fR19fc3RyZWFtTE5fYmFz
aWNfZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IgPSB7ICJiYXNpY19mc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiIgLCA5OSAsIC0xIH07CitHX19saW5rZWRfdGFn
aW5mbyBHX19HX19zdHJlYW1MTl9iYXNpY19pb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNo
YXJnUnNQZ1IgPSB7ICJiYXNpY19pb3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4iICwg
OTkgLCAtMSB9OworR19fbGlua2VkX3RhZ2luZm8gR19fR19fc3RyZWFtTE5fc3RyaW5nID0geyAi
c3RyaW5nIiAsIDk5ICwgLTEgfTsKK0dfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVhbUxOX2Jh
c2ljX3N0cmluZ2J1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFy
Z1JzUGdSID0geyAiYmFzaWNfc3RyaW5nYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2Nh
dG9yPGNoYXI+ID4iICwgOTkgLCAtMSB9OworR19fbGlua2VkX3RhZ2luZm8gR19fR19fc3RyZWFt
TE5fYmFzaWNfaXN0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2Nh
dG9ybEVjaGFyZ1JzUGdSID0geyAiYmFzaWNfaXN0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRz
PGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+IiAsIDk5ICwgLTEgfTsKK0dfX2xpbmtlZF90YWdpbmZv
IEdfX0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUiA9IHsgImJhc2ljX29zdHJpbmdzdHJlYW08Y2hh
cixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiIgLCA5OSAsIC0xIH07CitHX19s
aW5rZWRfdGFnaW5mbyBHX19HX19zdHJlYW1MTl9iYXNpY19zdHJpbmdzdHJlYW1sRWNoYXJjT2No
YXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUiA9IHsgImJhc2ljX3N0cmlu
Z3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+IiAsIDk5ICwg
LTEgfTsKKworLyogUmVzZXQgY2xhc3Mvc3RydWN0IHRhZ2luZm8gKi8KK2V4dGVybiAiQyIgdm9p
ZCBHX19jcHBfcmVzZXRfdGFndGFibGVHX19zdHJlYW0oKSB7CisgIEdfX0dfX3N0cmVhbUxOX21i
c3RhdGVfdC50YWdudW0gPSAtMSA7CisgIEdfX0dfX3N0cmVhbUxOX3N0cmVhbW9mZi50YWdudW0g
PSAtMSA7CisgIEdfX0dfX3N0cmVhbUxOX2Zwb3NsRW1ic3RhdGVfdGdSLnRhZ251bSA9IC0xIDsK
KyAgR19fR19fc3RyZWFtTE5faW9zX2Jhc2UudGFnbnVtID0gLTEgOworICBHX19HX19zdHJlYW1M
Tl9pb3NfYmFzZWNMY0xpb19zdGF0ZS50YWdudW0gPSAtMSA7CisgIEdfX0dfX3N0cmVhbUxOX2lv
c19iYXNlY0xjTG9wZW5fbW9kZS50YWdudW0gPSAtMSA7CisgIEdfX0dfX3N0cmVhbUxOX2lvc19i
YXNlY0xjTHNlZWtfZGlyLnRhZ251bSA9IC0xIDsKKyAgR19fR19fc3RyZWFtTE5faW9zX2Jhc2Vj
TGNMZm10X2ZsYWdzLnRhZ251bSA9IC0xIDsKKyAgR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNM
ZXZlbnQudGFnbnVtID0gLTEgOworICBHX19HX19zdHJlYW1MTl9pb3NfYmFzZWNMY0xJbml0LnRh
Z251bSA9IC0xIDsKKyAgR19fR19fc3RyZWFtTE5fY2hhcl90cmFpdHNsRWNoYXJnUi50YWdudW0g
PSAtMSA7CisgIEdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRz
bEVjaGFyZ1JzUGdSLnRhZ251bSA9IC0xIDsKKyAgR19fR19fc3RyZWFtTE5fYmFzaWNfaW9zbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUi50YWdudW0gPSAtMSA7CisgIEdfX0dfX3N0cmVh
bUxOX2Jhc2ljX3N0cmVhbWJ1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IudGFnbnVt
ID0gLTEgOworICBHX19HX19zdHJlYW1MTl9iYXNpY19vc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0
c2xFY2hhcmdSc1BnUi50YWdudW0gPSAtMSA7CisgIEdfX0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJl
YW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSY0xjTHNlbnRyeS50YWdudW0gPSAtMSA7
CisgIEdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFy
Z1JzUGdSY0xjTHNlbnRyeS50YWdudW0gPSAtMSA7CisgIEdfX0dfX3N0cmVhbUxOX2Jhc2ljX2Zp
bGVidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSLnRhZ251bSA9IC0xIDsKKyAgR19f
R19fc3RyZWFtTE5fYmFzaWNfaWZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdS
LnRhZ251bSA9IC0xIDsKKyAgR19fR19fc3RyZWFtTE5fYmFzaWNfb2ZzdHJlYW1sRWNoYXJjT2No
YXJfdHJhaXRzbEVjaGFyZ1JzUGdSLnRhZ251bSA9IC0xIDsKKyAgR19fR19fc3RyZWFtTE5fYmFz
aWNfZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IudGFnbnVtID0gLTEgOwor
ICBHX19HX19zdHJlYW1MTl9iYXNpY19pb3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJn
UnNQZ1IudGFnbnVtID0gLTEgOworICBHX19HX19zdHJlYW1MTl9zdHJpbmcudGFnbnVtID0gLTEg
OworICBHX19HX19zdHJlYW1MTl9iYXNpY19zdHJpbmdidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUi50YWdudW0gPSAtMSA7CisgIEdfX0dfX3N0cmVh
bUxOX2Jhc2ljX2lzdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9j
YXRvcmxFY2hhcmdSc1BnUi50YWdudW0gPSAtMSA7CisgIEdfX0dfX3N0cmVhbUxOX2Jhc2ljX29z
dHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdS
c1BnUi50YWdudW0gPSAtMSA7CisgIEdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmluZ3N0cmVhbWxF
Y2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSLnRhZ251bSA9
IC0xIDsKK30KKworCitleHRlcm4gIkMiIHZvaWQgR19fY3BwX3NldHVwX3RhZ3RhYmxlR19fc3Ry
ZWFtKCkgeworCisgICAvKiBTZXR0aW5nIHVwIGNsYXNzLHN0cnVjdCx1bmlvbiB0YWcgZW50cnkg
Ki8KKyAgIEdfX3RhZ3RhYmxlX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJl
YW1MTl9tYnN0YXRlX3QpLHNpemVvZihtYnN0YXRlX3QpLC0xLDAsKGNoYXIqKU5VTEwsR19fc2V0
dXBfbWVtdmFybWJzdGF0ZV90LEdfX3NldHVwX21lbWZ1bmNtYnN0YXRlX3QpOworICAgR19fdGFn
dGFibGVfc2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX3N0cmVhbW9m
Ziksc2l6ZW9mKHN0cmVhbW9mZiksLTEsMCwoY2hhciopTlVMTCxHX19zZXR1cF9tZW12YXJzdHJl
YW1vZmYsR19fc2V0dXBfbWVtZnVuY3N0cmVhbW9mZik7CisgICBHX190YWd0YWJsZV9zZXR1cChH
X19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fZnBvc2xFbWJzdGF0ZV90Z1IpLHNp
emVvZihmcG9zPG1ic3RhdGVfdD4pLC0xLDMzNTM2LChjaGFyKilOVUxMLEdfX3NldHVwX21lbXZh
cmZwb3NsRW1ic3RhdGVfdGdSLEdfX3NldHVwX21lbWZ1bmNmcG9zbEVtYnN0YXRlX3RnUik7Cisg
ICBHX190YWd0YWJsZV9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5f
aW9zX2Jhc2UpLHNpemVvZihpb3NfYmFzZSksLTEsMzg0MCwoY2hhciopTlVMTCxHX19zZXR1cF9t
ZW12YXJpb3NfYmFzZSxHX19zZXR1cF9tZW1mdW5jaW9zX2Jhc2UpOworICAgR19fdGFndGFibGVf
c2V0dXAoR19fZ2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlY0xjTGlv
X3N0YXRlKSxzaXplb2YoaW50KSwtMSwwLChjaGFyKilOVUxMLE5VTEwsTlVMTCk7CisgICBHX190
YWd0YWJsZV9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5faW9zX2Jh
c2VjTGNMb3Blbl9tb2RlKSxzaXplb2YoaW50KSwtMSwwLChjaGFyKilOVUxMLE5VTEwsTlVMTCk7
CisgICBHX190YWd0YWJsZV9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFt
TE5faW9zX2Jhc2VjTGNMc2Vla19kaXIpLHNpemVvZihpbnQpLC0xLDAsKGNoYXIqKU5VTEwsTlVM
TCxOVUxMKTsKKyAgIEdfX3RhZ3RhYmxlX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19H
X19zdHJlYW1MTl9pb3NfYmFzZWNMY0xmbXRfZmxhZ3MpLHNpemVvZihpbnQpLC0xLDAsKGNoYXIq
KU5VTEwsTlVMTCxOVUxMKTsKKyAgIEdfX3RhZ3RhYmxlX3NldHVwKEdfX2dldF9saW5rZWRfdGFn
bnVtKCZHX19HX19zdHJlYW1MTl9pb3NfYmFzZWNMY0xldmVudCksc2l6ZW9mKGludCksLTEsMCwo
Y2hhciopTlVMTCxOVUxMLE5VTEwpOworICAgR19fdGFndGFibGVfc2V0dXAoR19fZ2V0X2xpbmtl
ZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2lvc19iYXNlY0xjTEluaXQpLHNpemVvZihpb3NfYmFz
ZTo6SW5pdCksLTEsMTI4MCwoY2hhciopTlVMTCxHX19zZXR1cF9tZW12YXJpb3NfYmFzZWNMY0xJ
bml0LEdfX3NldHVwX21lbWZ1bmNpb3NfYmFzZWNMY0xJbml0KTsKKyAgIEdfX3RhZ3RhYmxlX3Nl
dHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9jaGFyX3RyYWl0c2xFY2hh
cmdSKSxzaXplb2YoY2hhcl90cmFpdHM8Y2hhcj4pLC0xLDAsKGNoYXIqKU5VTEwsR19fc2V0dXBf
bWVtdmFyY2hhcl90cmFpdHNsRWNoYXJnUixHX19zZXR1cF9tZW1mdW5jY2hhcl90cmFpdHNsRWNo
YXJnUik7CisgICBHX190YWd0YWJsZV9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19f
c3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLHNp
emVvZihiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiksLTEsMzQwNDgsKGNo
YXIqKU5VTEwsR19fc2V0dXBfbWVtdmFyYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNs
RWNoYXJnUnNQZ1IsR19fc2V0dXBfbWVtZnVuY2Jhc2ljX2lzdHJlYW1sRWNoYXJjT2NoYXJfdHJh
aXRzbEVjaGFyZ1JzUGdSKTsKKyAgIEdfX3RhZ3RhYmxlX3NldHVwKEdfX2dldF9saW5rZWRfdGFn
bnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1Jz
UGdSKSxzaXplb2YoYmFzaWNfaW9zPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiksLTEsMzY2MDgs
KGNoYXIqKU5VTEwsR19fc2V0dXBfbWVtdmFyYmFzaWNfaW9zbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUixHX19zZXR1cF9tZW1mdW5jYmFzaWNfaW9zbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUik7CisgICBHX190YWd0YWJsZV9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgm
R19fR19fc3RyZWFtTE5fYmFzaWNfc3RyZWFtYnVmbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdS
c1BnUiksc2l6ZW9mKGJhc2ljX3N0cmVhbWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4pLC0x
LDM4NDAsKGNoYXIqKU5VTEwsR19fc2V0dXBfbWVtdmFyYmFzaWNfc3RyZWFtYnVmbEVjaGFyY09j
aGFyX3RyYWl0c2xFY2hhcmdSc1BnUixHX19zZXR1cF9tZW1mdW5jYmFzaWNfc3RyZWFtYnVmbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUik7CisgICBHX190YWd0YWJsZV9zZXR1cChHX19n
ZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfb3N0cmVhbWxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUnNQZ1IpLHNpemVvZihiYXNpY19vc3RyZWFtPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4gPiksLTEsMzQwNDgsKGNoYXIqKU5VTEwsR19fc2V0dXBfbWVtdmFyYmFzaWNfb3N0
cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IsR19fc2V0dXBfbWVtZnVuY2Jhc2lj
X29zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKTsKKyAgIEdfX3RhZ3RhYmxl
X3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19vc3RyZWFt
bEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUmNMY0xzZW50cnkpLHNpemVvZihiYXNpY19v
c3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6c2VudHJ5KSwtMSwzNjM1MiwoY2hhciop
TlVMTCxHX19zZXR1cF9tZW12YXJiYXNpY19vc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hh
cmdSc1BnUmNMY0xzZW50cnksR19fc2V0dXBfbWVtZnVuY2Jhc2ljX29zdHJlYW1sRWNoYXJjT2No
YXJfdHJhaXRzbEVjaGFyZ1JzUGdSY0xjTHNlbnRyeSk7CisgICBHX190YWd0YWJsZV9zZXR1cChH
X19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hhcmNP
Y2hhcl90cmFpdHNsRWNoYXJnUnNQZ1JjTGNMc2VudHJ5KSxzaXplb2YoYmFzaWNfaXN0cmVhbTxj
aGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OnNlbnRyeSksLTEsMzM3OTIsKGNoYXIqKU5VTEwsR19f
c2V0dXBfbWVtdmFyYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1Jj
TGNMc2VudHJ5LEdfX3NldHVwX21lbWZ1bmNiYXNpY19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0
c2xFY2hhcmdSc1BnUmNMY0xzZW50cnkpOworICAgR19fdGFndGFibGVfc2V0dXAoR19fZ2V0X2xp
bmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2ZpbGVidWZsRWNoYXJjT2NoYXJfdHJh
aXRzbEVjaGFyZ1JzUGdSKSxzaXplb2YoYmFzaWNfZmlsZWJ1ZjxjaGFyLGNoYXJfdHJhaXRzPGNo
YXI+ID4pLC0xLDMzMjgsKGNoYXIqKU5VTEwsR19fc2V0dXBfbWVtdmFyYmFzaWNfZmlsZWJ1ZmxF
Y2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IsR19fc2V0dXBfbWVtZnVuY2Jhc2ljX2ZpbGVi
dWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKTsKKyAgIEdfX3RhZ3RhYmxlX3NldHVw
KEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNpY19pZnN0cmVhbWxFY2hh
cmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLHNpemVvZihiYXNpY19pZnN0cmVhbTxjaGFyLGNo
YXJfdHJhaXRzPGNoYXI+ID4pLC0xLDM0MDQ4LChjaGFyKilOVUxMLEdfX3NldHVwX21lbXZhcmJh
c2ljX2lmc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUixHX19zZXR1cF9tZW1m
dW5jYmFzaWNfaWZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSKTsKKyAgIEdf
X3RhZ3RhYmxlX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19HX19zdHJlYW1MTl9iYXNp
Y19vZnN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpLHNpemVvZihiYXNpY19v
ZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4pLC0xLDM0MDQ4LChjaGFyKilOVUxMLEdf
X3NldHVwX21lbXZhcmJhc2ljX29mc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1Bn
UixHX19zZXR1cF9tZW1mdW5jYmFzaWNfb2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFy
Z1JzUGdSKTsKKyAgIEdfX3RhZ3RhYmxlX3NldHVwKEdfX2dldF9saW5rZWRfdGFnbnVtKCZHX19H
X19zdHJlYW1MTl9iYXNpY19mc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUiks
c2l6ZW9mKGJhc2ljX2ZzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+KSwtMSwzMzAyNCwo
Y2hhciopTlVMTCxHX19zZXR1cF9tZW12YXJiYXNpY19mc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0
c2xFY2hhcmdSc1BnUixHX19zZXR1cF9tZW1mdW5jYmFzaWNfZnN0cmVhbWxFY2hhcmNPY2hhcl90
cmFpdHNsRWNoYXJnUnNQZ1IpOworICAgR19fdGFndGFibGVfc2V0dXAoR19fZ2V0X2xpbmtlZF90
YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX2lvc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSc1BnUiksc2l6ZW9mKGJhc2ljX2lvc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4g
PiksLTEsMzQwNDgsKGNoYXIqKU5VTEwsR19fc2V0dXBfbWVtdmFyYmFzaWNfaW9zdHJlYW1sRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSLEdfX3NldHVwX21lbWZ1bmNiYXNpY19pb3N0cmVh
bWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1IpOworICAgR19fZ2V0X2xpbmtlZF90YWdu
dW1fZndkKCZHX19HX19zdHJlYW1MTl9zdHJpbmcpOworICAgR19fdGFndGFibGVfc2V0dXAoR19f
Z2V0X2xpbmtlZF90YWdudW0oJkdfX0dfX3N0cmVhbUxOX2Jhc2ljX3N0cmluZ2J1ZmxFY2hhcmNP
Y2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSxzaXplb2YoYmFzaWNf
c3RyaW5nYnVmPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4pLC0xLDM2
MDk2LChjaGFyKilOVUxMLEdfX3NldHVwX21lbXZhcmJhc2ljX3N0cmluZ2J1ZmxFY2hhcmNPY2hh
cl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSLEdfX3NldHVwX21lbWZ1bmNi
YXNpY19zdHJpbmdidWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hh
cmdSc1BnUik7CisgICBHX190YWd0YWJsZV9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19f
R19fc3RyZWFtTE5fYmFzaWNfaXN0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJn
UmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKSxzaXplb2YoYmFzaWNfaXN0cmluZ3N0cmVhbTxjaGFy
LGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+KSwtMSwzNDA0OCwoY2hhciopTlVM
TCxHX19zZXR1cF9tZW12YXJiYXNpY19pc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xF
Y2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IsR19fc2V0dXBfbWVtZnVuY2Jhc2ljX2lzdHJp
bmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1Bn
Uik7CisgICBHX190YWd0YWJsZV9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3Ry
ZWFtTE5fYmFzaWNfb3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxs
b2NhdG9ybEVjaGFyZ1JzUGdSKSxzaXplb2YoYmFzaWNfb3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+KSwtMSwzNDA0OCwoY2hhciopTlVMTCxHX19z
ZXR1cF9tZW12YXJiYXNpY19vc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdS
Y09hbGxvY2F0b3JsRWNoYXJnUnNQZ1IsR19fc2V0dXBfbWVtZnVuY2Jhc2ljX29zdHJpbmdzdHJl
YW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9jYXRvcmxFY2hhcmdSc1BnUik7Cisg
ICBHX190YWd0YWJsZV9zZXR1cChHX19nZXRfbGlua2VkX3RhZ251bSgmR19fR19fc3RyZWFtTE5f
YmFzaWNfc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3Js
RWNoYXJnUnNQZ1IpLHNpemVvZihiYXNpY19zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxj
aGFyPixhbGxvY2F0b3I8Y2hhcj4gPiksLTEsMzQwNDgsKGNoYXIqKU5VTEwsR19fc2V0dXBfbWVt
dmFyYmFzaWNfc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0
b3JsRWNoYXJnUnNQZ1IsR19fc2V0dXBfbWVtZnVuY2Jhc2ljX3N0cmluZ3N0cmVhbWxFY2hhcmNP
Y2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9ybEVjaGFyZ1JzUGdSKTsKK30KK2V4dGVybiAi
QyIgdm9pZCBHX19jcHBfc2V0dXBHX19zdHJlYW0odm9pZCkgeworICBHX19jaGVja19zZXR1cF92
ZXJzaW9uKDMwMDUxNTE1LCJHX19jcHBfc2V0dXBHX19zdHJlYW0oKSIpOworICBHX19zZXRfY3Bw
X2Vudmlyb25tZW50R19fc3RyZWFtKCk7CisgIEdfX2NwcF9zZXR1cF90YWd0YWJsZUdfX3N0cmVh
bSgpOworCisgIEdfX2NwcF9zZXR1cF9pbmhlcml0YW5jZUdfX3N0cmVhbSgpOworCisgIEdfX2Nw
cF9zZXR1cF90eXBldGFibGVHX19zdHJlYW0oKTsKKworICBHX19jcHBfc2V0dXBfbWVtdmFyR19f
c3RyZWFtKCk7CisKKyAgR19fY3BwX3NldHVwX21lbWZ1bmNHX19zdHJlYW0oKTsKKyAgR19fY3Bw
X3NldHVwX2dsb2JhbEdfX3N0cmVhbSgpOworICBHX19jcHBfc2V0dXBfZnVuY0dfX3N0cmVhbSgp
OworCisgICBpZigwPT1HX19nZXRzaXplcDJtZW1mdW5jKCkpIEdfX2dldF9zaXplcDJtZW1mdW5j
R19fc3RyZWFtKCk7CisgIHJldHVybjsKK30KZGlmZiAtTmF1ciByb290L2NpbnQvc3JjL2djYzRz
dHJtLmggcm9vdC5uZXcvY2ludC9zcmMvZ2NjNHN0cm0uaAotLS0gcm9vdC9jaW50L3NyYy9nY2M0
c3RybS5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCisrKyByb290Lm5ldy9j
aW50L3NyYy9nY2M0c3RybS5oCTIwMDctMTEtMjYgMDk6MDk6MjkuMDAwMDAwMDAwIC0wNTAwCkBA
IC0wLDAgKzEsODMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBnY2M0c3RybS5oCisqIENBVVRJT046IERP
TidUIENIQU5HRSBUSElTIEZJTEUuIFRISVMgRklMRSBJUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRF
RAorKiAgICAgICAgICBGUk9NIEhFQURFUiBGSUxFUyBMSVNURUQgSU4gR19fc2V0dXBfY3BwX2Vu
dmlyb25tZW50WFhYKCkuCisqICAgICAgICAgIENIQU5HRSBUSE9TRSBIRUFERVIgRklMRVMgQU5E
IFJFR0VORVJBVEUgVEhJUyBGSUxFLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWZkZWYgX19DSU5UX18KKyNl
cnJvciBnY2M0c3RybS5oL0MgaXMgb25seSBmb3IgY29tcGlsYXRpb24uIEFib3J0IGNpbnQuCisj
ZW5kaWYKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUg
PHN0ZGxpYi5oPgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNkZWZp
bmUgR19fQU5TSUhFQURFUgorI2RlZmluZSBHX19ESUNUSU9OQVJZCisjaW5jbHVkZSAiR19fY2ku
aCIKK2V4dGVybiAiQyIgeworZXh0ZXJuIHZvaWQgR19fY3BwX3NldHVwX3RhZ3RhYmxlR19fc3Ry
ZWFtKCk7CitleHRlcm4gdm9pZCBHX19jcHBfc2V0dXBfaW5oZXJpdGFuY2VHX19zdHJlYW0oKTsK
K2V4dGVybiB2b2lkIEdfX2NwcF9zZXR1cF90eXBldGFibGVHX19zdHJlYW0oKTsKK2V4dGVybiB2
b2lkIEdfX2NwcF9zZXR1cF9tZW12YXJHX19zdHJlYW0oKTsKK2V4dGVybiB2b2lkIEdfX2NwcF9z
ZXR1cF9nbG9iYWxHX19zdHJlYW0oKTsKK2V4dGVybiB2b2lkIEdfX2NwcF9zZXR1cF9tZW1mdW5j
R19fc3RyZWFtKCk7CitleHRlcm4gdm9pZCBHX19jcHBfc2V0dXBfZnVuY0dfX3N0cmVhbSgpOwor
ZXh0ZXJuIHZvaWQgR19fc2V0X2NwcF9lbnZpcm9ubWVudEdfX3N0cmVhbSgpOworfQorCisKKyNp
bmNsdWRlICJpb3N0cm0uaCIKKyNpbmNsdWRlICJmc3RybS5oIgorI2luY2x1ZGUgInNzdHJtLmgi
CisjaW5jbHVkZSAibGlua2RlZi5oIgorCisjaWZuZGVmIEdfX01FTUZVTkNCT0RZCisjZW5kaWYK
KworZXh0ZXJuIEdfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVhbUxOX21ic3RhdGVfdDsKK2V4
dGVybiBHX19saW5rZWRfdGFnaW5mbyBHX19HX19zdHJlYW1MTl9zdHJlYW1vZmY7CitleHRlcm4g
R19fbGlua2VkX3RhZ2luZm8gR19fR19fc3RyZWFtTE5fZnBvc2xFbWJzdGF0ZV90Z1I7CitleHRl
cm4gR19fbGlua2VkX3RhZ2luZm8gR19fR19fc3RyZWFtTE5faW9zX2Jhc2U7CitleHRlcm4gR19f
bGlua2VkX3RhZ2luZm8gR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMaW9fc3RhdGU7CitleHRl
cm4gR19fbGlua2VkX3RhZ2luZm8gR19fR19fc3RyZWFtTE5faW9zX2Jhc2VjTGNMb3Blbl9tb2Rl
OworZXh0ZXJuIEdfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVhbUxOX2lvc19iYXNlY0xjTHNl
ZWtfZGlyOworZXh0ZXJuIEdfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVhbUxOX2lvc19iYXNl
Y0xjTGZtdF9mbGFnczsKK2V4dGVybiBHX19saW5rZWRfdGFnaW5mbyBHX19HX19zdHJlYW1MTl9p
b3NfYmFzZWNMY0xldmVudDsKK2V4dGVybiBHX19saW5rZWRfdGFnaW5mbyBHX19HX19zdHJlYW1M
Tl9pb3NfYmFzZWNMY0xJbml0OworZXh0ZXJuIEdfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVh
bUxOX2NoYXJfdHJhaXRzbEVjaGFyZ1I7CitleHRlcm4gR19fbGlua2VkX3RhZ2luZm8gR19fR19f
c3RyZWFtTE5fYmFzaWNfaXN0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1I7Citl
eHRlcm4gR19fbGlua2VkX3RhZ2luZm8gR19fR19fc3RyZWFtTE5fYmFzaWNfaW9zbEVjaGFyY09j
aGFyX3RyYWl0c2xFY2hhcmdSc1BnUjsKK2V4dGVybiBHX19saW5rZWRfdGFnaW5mbyBHX19HX19z
dHJlYW1MTl9iYXNpY19zdHJlYW1idWZsRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSOwor
ZXh0ZXJuIEdfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJlYW1sRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSOworZXh0ZXJuIEdfX2xpbmtlZF90YWdpbmZvIEdf
X0dfX3N0cmVhbUxOX2Jhc2ljX29zdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdS
Y0xjTHNlbnRyeTsKK2V4dGVybiBHX19saW5rZWRfdGFnaW5mbyBHX19HX19zdHJlYW1MTl9iYXNp
Y19pc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUmNMY0xzZW50cnk7CitleHRl
cm4gR19fbGlua2VkX3RhZ2luZm8gR19fR19fc3RyZWFtTE5fYmFzaWNfZmlsZWJ1ZmxFY2hhcmNP
Y2hhcl90cmFpdHNsRWNoYXJnUnNQZ1I7CitleHRlcm4gR19fbGlua2VkX3RhZ2luZm8gR19fR19f
c3RyZWFtTE5fYmFzaWNfaWZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSOwor
ZXh0ZXJuIEdfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVhbUxOX2Jhc2ljX29mc3RyZWFtbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUjsKK2V4dGVybiBHX19saW5rZWRfdGFnaW5mbyBH
X19HX19zdHJlYW1MTl9iYXNpY19mc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1Bn
UjsKK2V4dGVybiBHX19saW5rZWRfdGFnaW5mbyBHX19HX19zdHJlYW1MTl9iYXNpY19pb3N0cmVh
bWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1I7CitleHRlcm4gR19fbGlua2VkX3RhZ2lu
Zm8gR19fR19fc3RyZWFtTE5fc3RyaW5nOworZXh0ZXJuIEdfX2xpbmtlZF90YWdpbmZvIEdfX0df
X3N0cmVhbUxOX2Jhc2ljX3N0cmluZ2J1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxs
b2NhdG9ybEVjaGFyZ1JzUGdSOworZXh0ZXJuIEdfX2xpbmtlZF90YWdpbmZvIEdfX0dfX3N0cmVh
bUxOX2Jhc2ljX2lzdHJpbmdzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JjT2FsbG9j
YXRvcmxFY2hhcmdSc1BnUjsKK2V4dGVybiBHX19saW5rZWRfdGFnaW5mbyBHX19HX19zdHJlYW1M
Tl9iYXNpY19vc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0
b3JsRWNoYXJnUnNQZ1I7CitleHRlcm4gR19fbGlua2VkX3RhZ2luZm8gR19fR19fc3RyZWFtTE5f
YmFzaWNfc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3Js
RWNoYXJnUnNQZ1I7CisKKy8qIFNUVUIgZGVyaXZlZCBjbGFzcyBmb3IgcHJvdGVjdGVkIG1lbWJl
ciBhY2Nlc3MgKi8KK3R5cGVkZWYgZnBvczxtYnN0YXRlX3Q+IEdfX2Zwb3NsRW1ic3RhdGVfdGdS
OwordHlwZWRlZiBjaGFyX3RyYWl0czxjaGFyPiBHX19jaGFyX3RyYWl0c2xFY2hhcmdSOwordHlw
ZWRlZiBiYXNpY19pc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiBHX19iYXNpY19pc3Ry
ZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUjsKK3R5cGVkZWYgYmFzaWNfaW9zPGNo
YXIsY2hhcl90cmFpdHM8Y2hhcj4gPiBHX19iYXNpY19pb3NsRWNoYXJjT2NoYXJfdHJhaXRzbEVj
aGFyZ1JzUGdSOwordHlwZWRlZiBiYXNpY19zdHJlYW1idWY8Y2hhcixjaGFyX3RyYWl0czxjaGFy
PiA+IEdfX2Jhc2ljX3N0cmVhbWJ1ZmxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUnNQZ1I7Cit0
eXBlZGVmIGJhc2ljX29zdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+IEdfX2Jhc2ljX29z
dHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSOwordHlwZWRlZiBiYXNpY19vc3Ry
ZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPjo6c2VudHJ5IEdfX2Jhc2ljX29zdHJlYW1sRWNo
YXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSY0xjTHNlbnRyeTsKK3R5cGVkZWYgYmFzaWNfaXN0
cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID46OnNlbnRyeSBHX19iYXNpY19pc3RyZWFtbEVj
aGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUmNMY0xzZW50cnk7Cit0eXBlZGVmIGJhc2ljX2Zp
bGVidWY8Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+IEdfX2Jhc2ljX2ZpbGVidWZsRWNoYXJjT2No
YXJfdHJhaXRzbEVjaGFyZ1JzUGdSOwordHlwZWRlZiBiYXNpY19pZnN0cmVhbTxjaGFyLGNoYXJf
dHJhaXRzPGNoYXI+ID4gR19fYmFzaWNfaWZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFy
Z1JzUGdSOwordHlwZWRlZiBiYXNpY19vZnN0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+ID4g
R19fYmFzaWNfb2ZzdHJlYW1sRWNoYXJjT2NoYXJfdHJhaXRzbEVjaGFyZ1JzUGdSOwordHlwZWRl
ZiBiYXNpY19mc3RyZWFtPGNoYXIsY2hhcl90cmFpdHM8Y2hhcj4gPiBHX19iYXNpY19mc3RyZWFt
bEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSc1BnUjsKK3R5cGVkZWYgYmFzaWNfaW9zdHJlYW08
Y2hhcixjaGFyX3RyYWl0czxjaGFyPiA+IEdfX2Jhc2ljX2lvc3RyZWFtbEVjaGFyY09jaGFyX3Ry
YWl0c2xFY2hhcmdSc1BnUjsKK3R5cGVkZWYgYmFzaWNfc3RyaW5nYnVmPGNoYXIsY2hhcl90cmFp
dHM8Y2hhcj4sYWxsb2NhdG9yPGNoYXI+ID4gR19fYmFzaWNfc3RyaW5nYnVmbEVjaGFyY09jaGFy
X3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1I7Cit0eXBlZGVmIGJhc2ljX2lz
dHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiBHX19i
YXNpY19pc3RyaW5nc3RyZWFtbEVjaGFyY09jaGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3Js
RWNoYXJnUnNQZ1I7Cit0eXBlZGVmIGJhc2ljX29zdHJpbmdzdHJlYW08Y2hhcixjaGFyX3RyYWl0
czxjaGFyPixhbGxvY2F0b3I8Y2hhcj4gPiBHX19iYXNpY19vc3RyaW5nc3RyZWFtbEVjaGFyY09j
aGFyX3RyYWl0c2xFY2hhcmdSY09hbGxvY2F0b3JsRWNoYXJnUnNQZ1I7Cit0eXBlZGVmIGJhc2lj
X3N0cmluZ3N0cmVhbTxjaGFyLGNoYXJfdHJhaXRzPGNoYXI+LGFsbG9jYXRvcjxjaGFyPiA+IEdf
X2Jhc2ljX3N0cmluZ3N0cmVhbWxFY2hhcmNPY2hhcl90cmFpdHNsRWNoYXJnUmNPYWxsb2NhdG9y
bEVjaGFyZ1JzUGdSOwpkaWZmIC1OYXVyIHJvb3QvdGhyZWFkL2luYy9UQXRvbWljQ291bnRHY2Mu
aCByb290Lm5ldy90aHJlYWQvaW5jL1RBdG9taWNDb3VudEdjYy5oCi0tLSByb290L3RocmVhZC9p
bmMvVEF0b21pY0NvdW50R2NjLmgJMjAwNi0xMS0xNiAxMzowNzozMy4wMDAwMDAwMDAgLTA1MDAK
KysrIHJvb3QubmV3L3RocmVhZC9pbmMvVEF0b21pY0NvdW50R2NjLmgJMjAwNy0xMS0yNiAxMTo1
OToxMS4wMDAwMDAwMDAgLTA1MDAKQEAgLTI4LDcgKzI4LDExIEBACiAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KIAorI2lmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0g
NCAmJiBfX0dOVUNfTUlOT1JfXyA8IDIpCiAjaW5jbHVkZSA8Yml0cy9hdG9taWNpdHkuaD4KKyNl
bHNlCisjaW5jbHVkZSA8ZXh0L2F0b21pY2l0eS5oPgorI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9f
R0xJQkNYWF9fKSAvLyBnKysgMy40KwogCg==
</data>        

          </attachment>
    </bug>

</bugzilla>