public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/7262: gcc-3.1 on x86 linux gets ice in extract_constrain_insn_cached
@ 2002-07-10  9:32 jakub
  0 siblings, 0 replies; 2+ messages in thread
From: jakub @ 2002-07-10  9:32 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, twisti

Synopsis: gcc-3.1 on x86 linux gets ice in extract_constrain_insn_cached

State-Changed-From-To: open->closed
State-Changed-By: jakub
State-Changed-When: Wed Jul 10 09:32:56 2002
State-Changed-Why:
    This looks like duplicate of middle-end/7245,
    see http://gcc.gnu.org/ml/gcc-patches/2002-07/msg00445.html
    for a fix.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7262


^ permalink raw reply	[flat|nested] 2+ messages in thread

* c/7262: gcc-3.1 on x86 linux gets ice in extract_constrain_insn_cached
@ 2002-07-10  8:06 twisti
  0 siblings, 0 replies; 2+ messages in thread
From: twisti @ 2002-07-10  8:06 UTC (permalink / raw)
  To: gcc-gnats


>Number:         7262
>Category:       c
>Synopsis:       gcc-3.1 on x86 linux gets ice in extract_constrain_insn_cached
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Wed Jul 10 08:06:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     TWISTI
>Release:        gcc version 3.1 and gcc version 3.1.1 20020710 (prerelease)
>Organization:
>Environment:
i686-pc-linux-gnu, with gnu as/ld
>Description:
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I../i386    -O2 -g3 -c heap.old.c
heap.old.c: In function `lowest':
heap.old.c:137: warning: left shift count >= width of type
heap.old.c:142: warning: right shift count >= width of type
heap.old.c:143: warning: right shift count >= width of type
heap.old.c:147: warning: right shift count >= width of type
heap.old.c:148: warning: right shift count >= width of type
heap.old.c:155: warning: right shift count >= width of type
heap.old.c:156: warning: right shift count >= width of type
heap.old.c:160: warning: right shift count >= width of type
heap.old.c:161: warning: right shift count >= width of type
heap.old.c:177: insn does not satisfy its constraints:
(insn:QI 13 12 14 (parallel[ 
            (set (reg:CCZ 17 flags)
                (compare:CCZ (ashift:SI (reg/v:SI 59)
                        (const_int 32 [0x20]))
                    (const_int 0 [0x0])))
            (set (reg/v:SI 60)
                (ashift:SI (reg/v:SI 59)
                    (const_int 32 [0x20])))
        ] ) 410 {*ashlsi3_cmp} (insn_list 4 (nil))
    (nil))
heap.old.c:177: Internal compiler error in extract_constrain_insn_cached, at recog.c:2047
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
>How-To-Repeat:

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="heap.old.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="heap.old.i"

IyAxICJoZWFwLm9sZC5jIgojIDEgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19WRVJTSU9OX18gIjMu
MSIKI2RlZmluZSBfX1VTRVJfTEFCRUxfUFJFRklYX18gCiNkZWZpbmUgX19SRUdJU1RFUl9QUkVG
SVhfXyAKI2RlZmluZSBfX0hBVkVfQlVJTFRJTl9TRVRKTVBfXyAxCiNkZWZpbmUgX19TSVpFX1RZ
UEVfXyB1bnNpZ25lZCBpbnQKI2RlZmluZSBfX1BUUkRJRkZfVFlQRV9fIGludAojZGVmaW5lIF9f
V0NIQVJfVFlQRV9fIGxvbmcgaW50CiNkZWZpbmUgX19XSU5UX1RZUEVfXyB1bnNpZ25lZCBpbnQK
I2RlZmluZSBfX1NURENfXyAxCiMgMSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgX19HTlVDX18g
MwojIDEgIjxjb21tYW5kIGxpbmU+IgojZGVmaW5lIF9fR05VQ19NSU5PUl9fIDEKIyAxICI8Y29t
bWFuZCBsaW5lPiIKI2RlZmluZSBfX0dOVUNfUEFUQ0hMRVZFTF9fIDAKIyAxICI8Y29tbWFuZCBs
aW5lPiIKI2RlZmluZSBfX0VMRl9fIDEKIyAxICI8Y29tbWFuZCBsaW5lPiIKI2RlZmluZSB1bml4
IDEKIyAxICI8Y29tbWFuZCBsaW5lPiIKI2RlZmluZSBfX2dudV9saW51eF9fIDEKIyAxICI8Y29t
bWFuZCBsaW5lPiIKI2RlZmluZSBsaW51eCAxCiMgMSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUg
X19FTEZfXyAxCiMgMSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgX191bml4X18gMQojIDEgIjxj
b21tYW5kIGxpbmU+IgojZGVmaW5lIF9fZ251X2xpbnV4X18gMQojIDEgIjxjb21tYW5kIGxpbmU+
IgojZGVmaW5lIF9fbGludXhfXyAxCiMgMSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgX191bml4
IDEKIyAxICI8Y29tbWFuZCBsaW5lPiIKI2RlZmluZSBfX2xpbnV4IDEKIyAxICI8Y29tbWFuZCBs
aW5lPiIKI2RlZmluZSBfX09QVElNSVpFX18gMQojIDEgIjxjb21tYW5kIGxpbmU+IgojZGVmaW5l
IF9fU1REQ19IT1NURURfXyAxCiMgMSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgaTM4NiAxCiMg
MSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgX19pMzg2IDEKIyAxICI8Y29tbWFuZCBsaW5lPiIK
I2RlZmluZSBfX2kzODZfXyAxCiMgMSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgX190dW5lX2kz
ODZfXyAxCiMgMSAiPGNvbW1hbmQgbGluZT4iCiNkZWZpbmUgSEFWRV9DT05GSUdfSCAxCiMgMSAi
aGVhcC5vbGQuYyIKIyAyMiAiaGVhcC5vbGQuYyIKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0Lmgi
IDEgMwojIDM1ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMKI2RlZmluZSBfQVNTRVJUX0ggMQoj
IDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyMCAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDMKI2RlZmluZSBfRkVBVFVSRVNfSCAxCiMgMTA5ICIvdXNyL2luY2x1ZGUvZmVhdHVy
ZXMuaCIgMwojZGVmaW5lIF9fS0VSTkVMX1NUUklDVF9OQU1FUyAKCgoKI2RlZmluZSBfX1VTRV9B
TlNJIDEKIyAxNTAgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiNkZWZpbmUgX0JTRF9TT1VS
Q0UgMQojZGVmaW5lIF9TVklEX1NPVVJDRSAxCiMgMTY3ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMwojZGVmaW5lIF9QT1NJWF9TT1VSQ0UgMQoKCgojZGVmaW5lIF9QT1NJWF9DX1NPVVJDRSAx
OTk1MDZMCgoKCgojZGVmaW5lIF9fVVNFX1BPU0lYIDEKCgoKI2RlZmluZSBfX1VTRV9QT1NJWDIg
MQoKCgojZGVmaW5lIF9fVVNFX1BPU0lYMTk5MzA5IDEKCgoKI2RlZmluZSBfX1VTRV9QT1NJWDE5
OTUwNiAxCiMgMjIzICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojZGVmaW5lIF9fVVNFX01J
U0MgMQoKCgojZGVmaW5lIF9fVVNFX0JTRCAxCgoKCiNkZWZpbmUgX19VU0VfU1ZJRCAxCiMgMjQz
ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojZGVmaW5lIF9fU1REQ19JRUNfNTU5X18gMQoj
ZGVmaW5lIF9fU1REQ19JRUNfNTU5X0NPTVBMRVhfXyAxCgoKI2RlZmluZSBfX1NURENfSVNPXzEw
NjQ2X18gMjAwMDA5TAojIDI1NiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKI2RlZmluZSBf
X0dOVV9MSUJSQVJZX18gNgoKCgojZGVmaW5lIF9fR0xJQkNfXyAyCiNkZWZpbmUgX19HTElCQ19N
SU5PUl9fIDIKIyAyNzEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiNkZWZpbmUgX19HTlVD
X1BSRVJFUShtYWosbWluKSAoKF9fR05VQ19fIDw8IDE2KSArIF9fR05VQ19NSU5PUl9fID49ICgo
bWFqKSA8PCAxNikgKyAobWluKSkKCgoKCgojZGVmaW5lIF9fR0xJQkNfUFJFUkVRKG1haixtaW4p
ICgoX19HTElCQ19fIDw8IDE2KSArIF9fR0xJQkNfTUlOT1JfXyA+PSAoKG1haikgPDwgMTYpICsg
KG1pbikpCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwojIDIwICIvdXNy
L2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMKI2RlZmluZSBfU1lTX0NERUZTX0ggMQojIDQ2ICIvdXNy
L2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMKI2RlZmluZSBfX1RIUk9XIAoKI2RlZmluZSBfX1AoYXJn
cykgYXJncyBfX1RIUk9XCgoKI2RlZmluZSBfX1BNVChhcmdzKSBhcmdzCiMgNzAgIi91c3IvaW5j
bHVkZS9zeXMvY2RlZnMuaCIgMwojZGVmaW5lIF9fQ09OQ0FUKHgseSkgeCAjIyB5CiNkZWZpbmUg
X19TVFJJTkcoeCkgI3gKCgojZGVmaW5lIF9fcHRyX3Qgdm9pZCAqCiNkZWZpbmUgX19sb25nX2Rv
dWJsZV90IGxvbmcgZG91YmxlCgoKCgoKCgojZGVmaW5lIF9fQkVHSU5fREVDTFMgCiNkZWZpbmUg
X19FTkRfREVDTFMgCgoKCgoKI2RlZmluZSBfX2JvdW5kZWQgCiNkZWZpbmUgX191bmJvdW5kZWQg
CiNkZWZpbmUgX19wdHJ2YWx1ZSAKCgoKCgoKI2RlZmluZSBfX2ZsZXhhcnIgW10KIyAxMjYgIi91
c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwojZGVmaW5lIF9fUkVESVJFQ1QobmFtZSxwcm90byxh
bGlhcykgbmFtZSBwcm90byBfX2FzbV9fIChfX0FTTU5BTUUgKCNhbGlhcykpCiNkZWZpbmUgX19B
U01OQU1FKGNuYW1lKSBfX0FTTU5BTUUyIChfX1VTRVJfTEFCRUxfUFJFRklYX18sIGNuYW1lKQoj
ZGVmaW5lIF9fQVNNTkFNRTIocHJlZml4LGNuYW1lKSBfX1NUUklORyAocHJlZml4KSBjbmFtZQoj
IDE0OSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzCiNkZWZpbmUgX19hdHRyaWJ1dGVfbWFs
bG9jX18gX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKQojIDE1OCAiL3Vzci9pbmNsdWRlL3N5
cy9jZGVmcy5oIiAzCiNkZWZpbmUgX19hdHRyaWJ1dGVfcHVyZV9fIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpCiMgMTY3ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMKI2RlZmluZSBfX2F0
dHJpYnV0ZV91c2VkX18gX19hdHRyaWJ1dGVfXyAoKF9fdXNlZF9fKSkKIyAxNzkgIi91c3IvaW5j
bHVkZS9zeXMvY2RlZnMuaCIgMwojZGVmaW5lIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KSBf
X2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfYXJnX18gKHgpKSkKIyAxODkgIi91c3IvaW5jbHVkZS9z
eXMvY2RlZnMuaCIgMwojZGVmaW5lIF9fYXR0cmlidXRlX2Zvcm1hdF9zdHJmbW9uX18oYSxiKSBf
X2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zdHJmbW9uX18sIGEsIGIpKSkKIyAyMTIgIi91
c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwojZGVmaW5lIF9fcmVzdHJpY3RfYXJyIF9fcmVzdHJp
Y3QKIyAyODQgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKIyAyOTggIi91c3IvaW5jbHVk
ZS9mZWF0dXJlcy5oIiAzCiNkZWZpbmUgX19VU0VfRVhURVJOX0lOTElORVMgMQojIDMxMiAiL3Vz
ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZ251L3N0dWJzLmgiIDEg
MwoKCgoKI2RlZmluZSBfX3N0dWJfX19rZXJuZWxfY29zbCAKI2RlZmluZSBfX3N0dWJfX19rZXJu
ZWxfc2lubCAKI2RlZmluZSBfX3N0dWJfX19rZXJuZWxfdGFubCAKI2RlZmluZSBfX3N0dWJfY2hm
bGFncyAKI2RlZmluZSBfX3N0dWJfZmF0dGFjaCAKI2RlZmluZSBfX3N0dWJfZmNoZmxhZ3MgCiNk
ZWZpbmUgX19zdHViX2ZkZXRhY2ggCiNkZWZpbmUgX19zdHViX2ZleGVjdmUgCiNkZWZpbmUgX19z
dHViX2d0dHkgCiNkZWZpbmUgX19zdHViX3Bvc2l4X2ZhZHZpc2UgCiNkZWZpbmUgX19zdHViX3Bv
c2l4X2ZhZHZpc2U2NCAKI2RlZmluZSBfX3N0dWJfcmV2b2tlIAojZGVmaW5lIF9fc3R1Yl9zZXRs
b2dpbiAKI2RlZmluZSBfX3N0dWJfc2lncmV0dXJuIAojZGVmaW5lIF9fc3R1Yl9zc3RrIAojZGVm
aW5lIF9fc3R1Yl9zdHR5IAojIDMxMyAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwojIDM3
ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDIgMwoKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NB
U1QgKHZvaWQpCiMgNjUgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwoKCgpleHRlcm4gdm9pZCBf
X2Fzc2VydF9mYWlsIChfX2NvbnN0IGNoYXIgKl9fYXNzZXJ0aW9uLCBfX2NvbnN0IGNoYXIgKl9f
ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fbGluZSwgX19j
b25zdCBjaGFyICpfX2Z1bmN0aW9uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18p
KTsKCgpleHRlcm4gdm9pZCBfX2Fzc2VydF9wZXJyb3JfZmFpbCAoaW50IF9fZXJybnVtLCBfX2Nv
bnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBfX2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0
IGNoYXIgKl9fZnVuY3Rpb24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoK
CgoKZXh0ZXJuIHZvaWQgX19hc3NlcnQgKGNvbnN0IGNoYXIgKl9fYXNzZXJ0aW9uLCBjb25zdCBj
aGFyICpfX2ZpbGUsIGludCBfX2xpbmUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5f
XykpOwoKCgoKI2RlZmluZSBhc3NlcnQoZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoKGV4cHIp
ID8gMCA6IChfX2Fzc2VydF9mYWlsIChfX1NUUklORyhleHByKSwgX19GSUxFX18sIF9fTElORV9f
LCBfX0FTU0VSVF9GVU5DVElPTiksIDApKSkKIyAxMDUgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIg
MwojZGVmaW5lIF9fQVNTRVJUX0ZVTkNUSU9OIF9fUFJFVFRZX0ZVTkNUSU9OX18KIyAyMyAiaGVh
cC5vbGQuYyIgMgojIDEgIi91c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAxIDMKIyAyMSAiL3Vzci9p
bmNsdWRlL3N5cy9tbWFuLmgiIDMKI2RlZmluZSBfU1lTX01NQU5fSCAxCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIg
MwojZGVmaW5lIF9CSVRTX1RZUEVTX0ggMQoKCgojZGVmaW5lIF9fbmVlZF9zaXplX3QgCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAx
ODIgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoj
ZGVmaW5lIF9fc2l6ZV90X18gCiNkZWZpbmUgX19TSVpFX1RfXyAKI2RlZmluZSBfU0laRV9UIAoj
ZGVmaW5lIF9TWVNfU0laRV9UX0ggCiNkZWZpbmUgX1RfU0laRV8gCiNkZWZpbmUgX1RfU0laRSAK
I2RlZmluZSBfX1NJWkVfVCAKI2RlZmluZSBfU0laRV9UXyAKI2RlZmluZSBfQlNEX1NJWkVfVF8g
CiNkZWZpbmUgX1NJWkVfVF9ERUZJTkVEXyAKI2RlZmluZSBfU0laRV9UX0RFRklORUQgCiNkZWZp
bmUgX19faW50X3NpemVfdF9oIAojZGVmaW5lIF9HQ0NfU0laRV9UIAojZGVmaW5lIF9TSVpFVF8g
CiNkZWZpbmUgX19zaXplX3QgCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CiMgMjIx
ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKI3Vu
ZGVmIF9fbmVlZF9zaXplX3QKIyAzMCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoK
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9f
dV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBs
b25nIF9fdV9sb25nOwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBp
bnQgX191X3F1YWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFk
X3Q7CiMgNDkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMKdHlwZWRlZiBzaWduZWQgY2hh
ciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWdu
ZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50
MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
X191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBf
X2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9f
dWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90ICpfX3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFk
X3QgX19kZXZfdDsKdHlwZWRlZiBfX3VfaW50IF9fdWlkX3Q7CnR5cGVkZWYgX191X2ludCBfX2dp
ZF90Owp0eXBlZGVmIF9fdV9sb25nIF9faW5vX3Q7CnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsK
dHlwZWRlZiBfX3VfaW50IF9fbmxpbmtfdDsKdHlwZWRlZiBsb25nIGludCBfX29mZl90Owp0eXBl
ZGVmIF9fcXVhZF90IF9fbG9mZl90Owp0eXBlZGVmIGludCBfX3BpZF90Owp0eXBlZGVmIGludCBf
X3NzaXplX3Q7CnR5cGVkZWYgX191X2xvbmcgX19ybGltX3Q7CnR5cGVkZWYgX191X3F1YWRfdCBf
X3JsaW02NF90Owp0eXBlZGVmIF9fdV9pbnQgX19pZF90OwoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAg
ICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsKCgp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CnR5
cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxvbmcgaW50IF9fdGltZV90Owp0eXBlZGVm
IHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zdXNlY29uZHNf
dDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7Cgp0eXBlZGVmIGxvbmcgaW50IF9fY2xvY2tf
dDsKCgp0eXBlZGVmIGludCBfX2Nsb2NraWRfdDsKCgp0eXBlZGVmIGludCBfX3RpbWVyX3Q7CgoK
CiNkZWZpbmUgX19GRF9TRVRTSVpFIDEwMjQKCgp0eXBlZGVmIGludCBfX2tleV90OwoKCnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90OwoKCgp0eXBlZGVmIGxvbmcgaW50IF9f
Ymxrc2l6ZV90OwoKCgoKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0eXBlZGVmIF9fcXVh
ZF90IF9fYmxrY250NjRfdDsKCgp0eXBlZGVmIF9fdV9sb25nIF9fZnNibGtjbnRfdDsKdHlwZWRl
ZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2ZpbGNu
dF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7CgoKdHlwZWRlZiBfX3VfcXVh
ZF90IF9faW5vNjRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRfdDsKCgp0eXBlZGVmIGxv
bmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3RfdXNjYWxh
cl90OwoKCnR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19z
b2NrbGVuX3Q7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAxIDMK
IyAyMCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKI2RlZmluZSBfQklUU19Q
VEhSRUFEVFlQRVNfSCAxCgojZGVmaW5lIF9fbmVlZF9zY2hlZHBhcmFtIAojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3NjaGVkLmgiIDEgMwojIDY2ICIvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAz
CiNkZWZpbmUgX19kZWZpbmVkX3NjaGVkcGFyYW0gMQoKc3RydWN0IF9fc2NoZWRfcGFyYW0KICB7
CiAgICBpbnQgX19zY2hlZF9wcmlvcml0eTsKICB9OwojdW5kZWYgX19uZWVkX3NjaGVkcGFyYW0K
IyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKdHlwZWRlZiBpbnQg
X19hdG9taWNfbG9ja190OwoKCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9jawp7CiAgbG9uZyBpbnQg
X19zdGF0dXM7CiAgX19hdG9taWNfbG9ja190IF9fc3BpbmxvY2s7Cgp9OwoKCgp0eXBlZGVmIHN0
cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rlc2NyOwojZGVmaW5lIF9QVEhS
RUFEX0RFU0NSX0RFRklORUQgCgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsK
ICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hl
ZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3Bl
OwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9f
c3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgoKdHlw
ZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9jazsKICBfcHRo
cmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKdHlwZWRlZiBzdHJ1
Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0eXBlZGVmIHVuc2ln
bmVkIGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jl
c2VydmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293bmVyOwogIGlu
dCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7Cn0gcHRocmVh
ZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJl
YWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwojIDE0MiAiL3Vz
ci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu
dCBwdGhyZWFkX3Q7CiMgMTQ0ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKIyAyNSAi
L3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDIgMwojZGVmaW5lIF9fbmVlZF9zaXplX3QgCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAy
MjEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoj
dW5kZWYgX19uZWVkX3NpemVfdAojIDI3ICIvdXNyL2luY2x1ZGUvc3lzL21tYW4uaCIgMiAzCgoK
CnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKCgoKI2RlZmluZSBfX29mZl90X2RlZmluZWQgCgoKCnR5
cGVkZWYgX19tb2RlX3QgbW9kZV90OwojZGVmaW5lIF9fbW9kZV90X2RlZmluZWQgCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9tbWFuLmgiIDEgMwojIDMzICIvdXNyL2luY2x1ZGUvYml0cy9tbWFu
LmgiIDMKI2RlZmluZSBQUk9UX1JFQUQgMHgxCiNkZWZpbmUgUFJPVF9XUklURSAweDIKI2RlZmlu
ZSBQUk9UX0VYRUMgMHg0CiNkZWZpbmUgUFJPVF9OT05FIDB4MAoKCiNkZWZpbmUgTUFQX1NIQVJF
RCAweDAxCiNkZWZpbmUgTUFQX1BSSVZBVEUgMHgwMgoKI2RlZmluZSBNQVBfVFlQRSAweDBmCgoK
CiNkZWZpbmUgTUFQX0ZJWEVEIDB4MTAKCiNkZWZpbmUgTUFQX0ZJTEUgMAojZGVmaW5lIE1BUF9B
Tk9OWU1PVVMgMHgyMAojZGVmaW5lIE1BUF9BTk9OIE1BUF9BTk9OWU1PVVMKCgoKCiNkZWZpbmUg
TUFQX0dST1dTRE9XTiAweDAxMDAKI2RlZmluZSBNQVBfREVOWVdSSVRFIDB4MDgwMAojZGVmaW5l
IE1BUF9FWEVDVVRBQkxFIDB4MTAwMAojZGVmaW5lIE1BUF9MT0NLRUQgMHgyMDAwCiNkZWZpbmUg
TUFQX05PUkVTRVJWRSAweDQwMDAKCgoKI2RlZmluZSBNU19BU1lOQyAxCiNkZWZpbmUgTVNfU1lO
QyA0CiNkZWZpbmUgTVNfSU5WQUxJREFURSAyCgoKI2RlZmluZSBNQ0xfQ1VSUkVOVCAxCiNkZWZp
bmUgTUNMX0ZVVFVSRSAyCiMgNzkgIi91c3IvaW5jbHVkZS9iaXRzL21tYW4uaCIgMwojZGVmaW5l
IE1BRFZfTk9STUFMIDAKI2RlZmluZSBNQURWX1JBTkRPTSAxCiNkZWZpbmUgTUFEVl9TRVFVRU5U
SUFMIDIKI2RlZmluZSBNQURWX1dJTExORUVEIDMKI2RlZmluZSBNQURWX0RPTlRORUVEIDQKIyA0
MyAiL3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDIgMwoKCiNkZWZpbmUgTUFQX0ZBSUxFRCAoKHZv
aWQgKikgLTEpCgoKIyA1OCAiL3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDMKZXh0ZXJuIHZvaWQg
Km1tYXAgKHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuLCBpbnQgX19wcm90LAogICAgICAgICAg
ICAgICAgICAgaW50IF9fZmxhZ3MsIGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0KSA7CiMgNzcg
Ii91c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAzCmV4dGVybiBpbnQgbXVubWFwICh2b2lkICpfX2Fk
ZHIsIHNpemVfdCBfX2xlbikgOwoKCgoKZXh0ZXJuIGludCBtcHJvdGVjdCAodm9pZCAqX19hZGRy
LCBzaXplX3QgX19sZW4sIGludCBfX3Byb3QpIDsKCgoKCmV4dGVybiBpbnQgbXN5bmMgKHZvaWQg
Kl9fYWRkciwgc2l6ZV90IF9fbGVuLCBpbnQgX19mbGFncykgOwoKCgoKZXh0ZXJuIGludCBtYWR2
aXNlICh2b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fYWR2aWNlKSA7CiMgMTAxICIv
dXNyL2luY2x1ZGUvc3lzL21tYW4uaCIgMwpleHRlcm4gaW50IG1sb2NrIChfX2NvbnN0IHZvaWQg
Kl9fYWRkciwgc2l6ZV90IF9fbGVuKSA7CgoKZXh0ZXJuIGludCBtdW5sb2NrIChfX2NvbnN0IHZv
aWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuKSA7CgoKCgpleHRlcm4gaW50IG1sb2NrYWxsIChpbnQg
X19mbGFncykgOwoKCgpleHRlcm4gaW50IG11bmxvY2thbGwgKHZvaWQpIDsKCgoKCgpleHRlcm4g
dm9pZCAqbXJlbWFwICh2b2lkICpfX2FkZHIsIHNpemVfdCBfX29sZF9sZW4sIHNpemVfdCBfX25l
d19sZW4sCiAgICAgICAgICAgICAgICAgICAgIGludCBfX21heV9tb3ZlKSA7CgoKCgoKCmV4dGVy
biBpbnQgbWluY29yZSAodm9pZCAqX19zdGFydCwgc2l6ZV90IF9fbGVuLCB1bnNpZ25lZCBjaGFy
ICpfX3ZlYyk7CgoKCgpleHRlcm4gaW50IHNobV9vcGVuIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwg
aW50IF9fb2ZsYWcsIG1vZGVfdCBfX21vZGUpOwoKCmV4dGVybiBpbnQgc2htX3VubGluayAoX19j
b25zdCBjaGFyICpfX25hbWUpOwoKCiMgMjQgImhlYXAub2xkLmMiIDIKIyAxICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDEgMwojIDI0ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKI2RlZmluZSBf
VU5JU1REX0ggMQoKCgoKCgoKCgoKI2RlZmluZSBfUE9TSVhfVkVSU0lPTiAxOTk1MDZMCgoKCgoK
I2RlZmluZSBfUE9TSVgyX0NfVkVSU0lPTiAxOTkyMDlMCgoKI2RlZmluZSBfUE9TSVgyX1ZFUlNJ
T04gMTk5MjA5TAoKCgojZGVmaW5lIF9QT1NJWDJfQ19CSU5EIDEKCgoKI2RlZmluZSBfUE9TSVgy
X0NfREVWIDEKCgoKI2RlZmluZSBfUE9TSVgyX1NXX0RFViAxCgoKCiNkZWZpbmUgX1BPU0lYMl9M
T0NBTEVERUYgMQoKCgoKCiNkZWZpbmUgX1hPUEVOX1ZFUlNJT04gNAoKCgojZGVmaW5lIF9YT1BF
Tl9YQ1VfVkVSU0lPTiA0CgoKI2RlZmluZSBfWE9QRU5fWFBHMiAxCiNkZWZpbmUgX1hPUEVOX1hQ
RzMgMQojZGVmaW5lIF9YT1BFTl9YUEc0IDEKCgojZGVmaW5lIF9YT1BFTl9VTklYIDEKCgojZGVm
aW5lIF9YT1BFTl9DUllQVCAxCgoKCiNkZWZpbmUgX1hPUEVOX0VOSF9JMThOIDEKCgojZGVmaW5l
IF9YT1BFTl9MRUdBQ1kgMQojIDE3NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvcG9zaXhfb3B0LmgiIDEgMwojIDIxICIvdXNyL2luY2x1ZGUvYml0cy9w
b3NpeF9vcHQuaCIgMwojZGVmaW5lIF9QT1NJWF9PUFRfSCAxCgoKI2RlZmluZSBfUE9TSVhfSk9C
X0NPTlRST0wgMQoKCiNkZWZpbmUgX1BPU0lYX1NBVkVEX0lEUyAxCgoKI2RlZmluZSBfUE9TSVhf
UFJJT1JJVFlfU0NIRURVTElORyAxCgoKI2RlZmluZSBfUE9TSVhfU1lOQ0hST05JWkVEX0lPIDEK
CgojZGVmaW5lIF9QT1NJWF9GU1lOQyAxCgoKI2RlZmluZSBfUE9TSVhfTUFQUEVEX0ZJTEVTIDEK
CgojZGVmaW5lIF9QT1NJWF9NRU1MT0NLIDEKCgojZGVmaW5lIF9QT1NJWF9NRU1MT0NLX1JBTkdF
IDEKCgojZGVmaW5lIF9QT1NJWF9NRU1PUllfUFJPVEVDVElPTiAxCgoKI2RlZmluZSBfUE9TSVhf
UE9MTCAxCgoKI2RlZmluZSBfUE9TSVhfU0VMRUNUIDEKCgojZGVmaW5lIF9QT1NJWF9DSE9XTl9S
RVNUUklDVEVEIDEKCgoKI2RlZmluZSBfUE9TSVhfVkRJU0FCTEUgJ1wwJwoKCiNkZWZpbmUgX1BP
U0lYX05PX1RSVU5DIDEKCgojZGVmaW5lIF9YT1BFTl9SRUFMVElNRSAxCgoKI2RlZmluZSBfWE9Q
RU5fUkVBTFRJTUVfVEhSRUFEUyAxCgoKI2RlZmluZSBfWE9QRU5fU0hNIDEKCgojZGVmaW5lIF9Q
T1NJWF9USFJFQURTIDEKCgojZGVmaW5lIF9QT1NJWF9SRUVOVFJBTlRfRlVOQ1RJT05TIDEKI2Rl
ZmluZSBfUE9TSVhfVEhSRUFEX1NBRkVfRlVOQ1RJT05TIDEKCgojZGVmaW5lIF9QT1NJWF9USFJF
QURfUFJJT1JJVFlfU0NIRURVTElORyAxCgoKI2RlZmluZSBfUE9TSVhfVEhSRUFEX0FUVFJfU1RB
Q0tTSVpFIDEKCgojZGVmaW5lIF9QT1NJWF9USFJFQURfQVRUUl9TVEFDS0FERFIgMQoKCiNkZWZp
bmUgX1BPU0lYX1NFTUFQSE9SRVMgMQoKCiNkZWZpbmUgX1BPU0lYX1JFQUxUSU1FX1NJR05BTFMg
MQoKCiNkZWZpbmUgX1BPU0lYX0FTWU5DSFJPTk9VU19JTyAxCiNkZWZpbmUgX1BPU0lYX0FTWU5D
X0lPIDEKCiNkZWZpbmUgX0xGU19BU1lOQ0hST05PVVNfSU8gMQoKCiNkZWZpbmUgX0xGUzY0X0FT
WU5DSFJPTk9VU19JTyAxCgoKI2RlZmluZSBfTEZTX0xBUkdFRklMRSAxCiNkZWZpbmUgX0xGUzY0
X0xBUkdFRklMRSAxCiNkZWZpbmUgX0xGUzY0X1NURElPIDEKCgojZGVmaW5lIF9QT1NJWF9TSEFS
RURfTUVNT1JZX09CSkVDVFMgMQoKCiNkZWZpbmUgX1BPU0lYX0NQVVRJTUUgMjAwOTEyTAoKCiNk
ZWZpbmUgX1BPU0lYX1RIUkVBRF9DUFVUSU1FIDIwMDkxMkwKCgojZGVmaW5lIF9QT1NJWF9SRUdF
WFAgMQoKCiNkZWZpbmUgX1BPU0lYX1JFQURFUl9XUklURVJfTE9DS1MgMjAwOTEyTAoKCiNkZWZp
bmUgX1BPU0lYX1NIRUxMIDEKCgojZGVmaW5lIF9QT1NJWF9USU1FT1VUUyAyMDA5MTJMCgoKI2Rl
ZmluZSBfUE9TSVhfU1BJTl9MT0NLUyAyMDA5MTJMCgoKI2RlZmluZSBfUE9TSVhfU1BBV04gMjAw
OTEyTAoKCiNkZWZpbmUgX1BPU0lYX1RJTUVSUyAxCgoKI2RlZmluZSBfUE9TSVhfQkFSUklFUlMg
MjAwOTEyTAojIDE3NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgoKCgoKCiNkZWZpbmUg
U1RESU5fRklMRU5PIDAKI2RlZmluZSBTVERPVVRfRklMRU5PIDEKI2RlZmluZSBTVERFUlJfRklM
RU5PIDIKCgoKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CiNkZWZpbmUgX19zc2l6ZV90
X2RlZmluZWQgCgoKI2RlZmluZSBfX25lZWRfc2l6ZV90IAojZGVmaW5lIF9fbmVlZF9OVUxMIAoj
IDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAz
CiMgMjIxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkZGVmLmgi
IDMKI3VuZGVmIF9fbmVlZF9zaXplX3QKIyAzNjkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51
eC8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwojZGVmaW5lIE5VTEwgKCh2b2lkICopMCkKCgoKCgoj
dW5kZWYgX19uZWVkX05VTEwKIyAyMDAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCiMgMjQw
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKdHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90Owoj
ZGVmaW5lIF9faW50cHRyX3RfZGVmaW5lZCAKCgoKCgp0eXBlZGVmIF9fc29ja2xlbl90IHNvY2ts
ZW5fdDsKI2RlZmluZSBfX3NvY2tsZW5fdF9kZWZpbmVkIAoKCgoKCiNkZWZpbmUgUl9PSyA0CiNk
ZWZpbmUgV19PSyAyCiNkZWZpbmUgWF9PSyAxCiNkZWZpbmUgRl9PSyAwCgoKZXh0ZXJuIGludCBh
Y2Nlc3MgKF9fY29uc3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBlKSA7CiMgMjcxICIvdXNyL2lu
Y2x1ZGUvdW5pc3RkLmgiIDMKI2RlZmluZSBTRUVLX1NFVCAwCiNkZWZpbmUgU0VFS19DVVIgMQoj
ZGVmaW5lIFNFRUtfRU5EIDIKCgoKCiNkZWZpbmUgTF9TRVQgU0VFS19TRVQKI2RlZmluZSBMX0lO
Q1IgU0VFS19DVVIKI2RlZmluZSBMX1hUTkQgU0VFS19FTkQKIyAyOTAgIi91c3IvaW5jbHVkZS91
bmlzdGQuaCIgMwpleHRlcm4gX19vZmZfdCBsc2VlayAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZz
ZXQsIGludCBfX3doZW5jZSkgOwojIDMwNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVy
biBpbnQgY2xvc2UgKGludCBfX2ZkKSA7CgoKCmV4dGVybiBzc2l6ZV90IHJlYWQgKGludCBfX2Zk
LCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKSA7CgoKZXh0ZXJuIHNzaXplX3Qgd3JpdGUg
KGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uKSA7CiMgMzUzICIvdXNy
L2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBwaXBlIChpbnQgX19waXBlZGVzWzJdKSA7
CiMgMzYyICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFy
bSAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgOwojIDM3MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5o
IiAzCmV4dGVybiB1bnNpZ25lZCBpbnQgc2xlZXAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpIDsK
CgoKCgoKZXh0ZXJuIF9fdXNlY29uZHNfdCB1YWxhcm0gKF9fdXNlY29uZHNfdCBfX3ZhbHVlLCBf
X3VzZWNvbmRzX3QgX19pbnRlcnZhbCkKICAgICA7CgoKCmV4dGVybiBpbnQgdXNsZWVwIChfX3Vz
ZWNvbmRzX3QgX191c2Vjb25kcykgOwoKCgoKCmV4dGVybiBpbnQgcGF1c2UgKHZvaWQpIDsKCgoK
ZXh0ZXJuIGludCBjaG93biAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwg
X19naWRfdCBfX2dyb3VwKQogICAgIDsKCgoKZXh0ZXJuIGludCBmY2hvd24gKGludCBfX2ZkLCBf
X3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkgOwoKCgoKZXh0ZXJuIGludCBsY2hvd24g
KF9fY29uc3QgY2hhciAqX19maWxlLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkK
ICAgICA7CgoKCgpleHRlcm4gaW50IGNoZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpl
eHRlcm4gaW50IGZjaGRpciAoaW50IF9fZmQpIDsKIyA0MjMgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMwpleHRlcm4gY2hhciAqZ2V0Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgOwoj
IDQzNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBjaGFyICpnZXR3ZCAoY2hhciAq
X19idWYpIDsKCgoKCmV4dGVybiBpbnQgZHVwIChpbnQgX19mZCkgOwoKCmV4dGVybiBpbnQgZHVw
MiAoaW50IF9fZmQsIGludCBfX2ZkMikgOwoKCmV4dGVybiBjaGFyICoqX19lbnZpcm9uOwoKCgoK
CgoKZXh0ZXJuIGludCBleGVjdmUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0
IF9fYXJndltdLAogICAgICAgICAgICAgICAgICAgY2hhciAqX19jb25zdCBfX2VudnBbXSkgOwoj
IDQ2NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZXhlY3YgKF9fY29uc3Qg
Y2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJndltdKSA7CgoKCmV4dGVybiBpbnQgZXhl
Y2xlIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSA7CgoK
CmV4dGVybiBpbnQgZXhlY2wgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9f
YXJnLCAuLi4pIDsKCgoKZXh0ZXJuIGludCBleGVjdnAgKF9fY29uc3QgY2hhciAqX19maWxlLCBj
aGFyICpfX2NvbnN0IF9fYXJndltdKSA7CgoKCgpleHRlcm4gaW50IGV4ZWNscCAoX19jb25zdCBj
aGFyICpfX2ZpbGUsIF9fY29uc3QgY2hhciAqX19hcmcsIC4uLikgOwoKCgoKZXh0ZXJuIGludCBu
aWNlIChpbnQgX19pbmMpIDsKCgoKCmV4dGVybiB2b2lkIF9leGl0IChpbnQgX19zdGF0dXMpIF9f
YXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L2NvbmZuYW1lLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCmVu
dW0KICB7CiAgICBfUENfTElOS19NQVgsCiNkZWZpbmUgX1BDX0xJTktfTUFYIF9QQ19MSU5LX01B
WAogICAgX1BDX01BWF9DQU5PTiwKI2RlZmluZSBfUENfTUFYX0NBTk9OIF9QQ19NQVhfQ0FOT04K
ICAgIF9QQ19NQVhfSU5QVVQsCiNkZWZpbmUgX1BDX01BWF9JTlBVVCBfUENfTUFYX0lOUFVUCiAg
ICBfUENfTkFNRV9NQVgsCiNkZWZpbmUgX1BDX05BTUVfTUFYIF9QQ19OQU1FX01BWAogICAgX1BD
X1BBVEhfTUFYLAojZGVmaW5lIF9QQ19QQVRIX01BWCBfUENfUEFUSF9NQVgKICAgIF9QQ19QSVBF
X0JVRiwKI2RlZmluZSBfUENfUElQRV9CVUYgX1BDX1BJUEVfQlVGCiAgICBfUENfQ0hPV05fUkVT
VFJJQ1RFRCwKI2RlZmluZSBfUENfQ0hPV05fUkVTVFJJQ1RFRCBfUENfQ0hPV05fUkVTVFJJQ1RF
RAogICAgX1BDX05PX1RSVU5DLAojZGVmaW5lIF9QQ19OT19UUlVOQyBfUENfTk9fVFJVTkMKICAg
IF9QQ19WRElTQUJMRSwKI2RlZmluZSBfUENfVkRJU0FCTEUgX1BDX1ZESVNBQkxFCiAgICBfUENf
U1lOQ19JTywKI2RlZmluZSBfUENfU1lOQ19JTyBfUENfU1lOQ19JTwogICAgX1BDX0FTWU5DX0lP
LAojZGVmaW5lIF9QQ19BU1lOQ19JTyBfUENfQVNZTkNfSU8KICAgIF9QQ19QUklPX0lPLAojZGVm
aW5lIF9QQ19QUklPX0lPIF9QQ19QUklPX0lPCiAgICBfUENfU09DS19NQVhCVUYsCiNkZWZpbmUg
X1BDX1NPQ0tfTUFYQlVGIF9QQ19TT0NLX01BWEJVRgogICAgX1BDX0ZJTEVTSVpFQklUUywKI2Rl
ZmluZSBfUENfRklMRVNJWkVCSVRTIF9QQ19GSUxFU0laRUJJVFMKICAgIF9QQ19SRUNfSU5DUl9Y
RkVSX1NJWkUsCiNkZWZpbmUgX1BDX1JFQ19JTkNSX1hGRVJfU0laRSBfUENfUkVDX0lOQ1JfWEZF
Ul9TSVpFCiAgICBfUENfUkVDX01BWF9YRkVSX1NJWkUsCiNkZWZpbmUgX1BDX1JFQ19NQVhfWEZF
Ul9TSVpFIF9QQ19SRUNfTUFYX1hGRVJfU0laRQogICAgX1BDX1JFQ19NSU5fWEZFUl9TSVpFLAoj
ZGVmaW5lIF9QQ19SRUNfTUlOX1hGRVJfU0laRSBfUENfUkVDX01JTl9YRkVSX1NJWkUKICAgIF9Q
Q19SRUNfWEZFUl9BTElHTiwKI2RlZmluZSBfUENfUkVDX1hGRVJfQUxJR04gX1BDX1JFQ19YRkVS
X0FMSUdOCiAgICBfUENfQUxMT0NfU0laRV9NSU4sCiNkZWZpbmUgX1BDX0FMTE9DX1NJWkVfTUlO
IF9QQ19BTExPQ19TSVpFX01JTgogICAgX1BDX1NZTUxJTktfTUFYCiNkZWZpbmUgX1BDX1NZTUxJ
TktfTUFYIF9QQ19TWU1MSU5LX01BWAogIH07CgoKZW51bQogIHsKICAgIF9TQ19BUkdfTUFYLAoj
ZGVmaW5lIF9TQ19BUkdfTUFYIF9TQ19BUkdfTUFYCiAgICBfU0NfQ0hJTERfTUFYLAojZGVmaW5l
IF9TQ19DSElMRF9NQVggX1NDX0NISUxEX01BWAogICAgX1NDX0NMS19UQ0ssCiNkZWZpbmUgX1ND
X0NMS19UQ0sgX1NDX0NMS19UQ0sKICAgIF9TQ19OR1JPVVBTX01BWCwKI2RlZmluZSBfU0NfTkdS
T1VQU19NQVggX1NDX05HUk9VUFNfTUFYCiAgICBfU0NfT1BFTl9NQVgsCiNkZWZpbmUgX1NDX09Q
RU5fTUFYIF9TQ19PUEVOX01BWAogICAgX1NDX1NUUkVBTV9NQVgsCiNkZWZpbmUgX1NDX1NUUkVB
TV9NQVggX1NDX1NUUkVBTV9NQVgKICAgIF9TQ19UWk5BTUVfTUFYLAojZGVmaW5lIF9TQ19UWk5B
TUVfTUFYIF9TQ19UWk5BTUVfTUFYCiAgICBfU0NfSk9CX0NPTlRST0wsCiNkZWZpbmUgX1NDX0pP
Ql9DT05UUk9MIF9TQ19KT0JfQ09OVFJPTAogICAgX1NDX1NBVkVEX0lEUywKI2RlZmluZSBfU0Nf
U0FWRURfSURTIF9TQ19TQVZFRF9JRFMKICAgIF9TQ19SRUFMVElNRV9TSUdOQUxTLAojZGVmaW5l
IF9TQ19SRUFMVElNRV9TSUdOQUxTIF9TQ19SRUFMVElNRV9TSUdOQUxTCiAgICBfU0NfUFJJT1JJ
VFlfU0NIRURVTElORywKI2RlZmluZSBfU0NfUFJJT1JJVFlfU0NIRURVTElORyBfU0NfUFJJT1JJ
VFlfU0NIRURVTElORwogICAgX1NDX1RJTUVSUywKI2RlZmluZSBfU0NfVElNRVJTIF9TQ19USU1F
UlMKICAgIF9TQ19BU1lOQ0hST05PVVNfSU8sCiNkZWZpbmUgX1NDX0FTWU5DSFJPTk9VU19JTyBf
U0NfQVNZTkNIUk9OT1VTX0lPCiAgICBfU0NfUFJJT1JJVElaRURfSU8sCiNkZWZpbmUgX1NDX1BS
SU9SSVRJWkVEX0lPIF9TQ19QUklPUklUSVpFRF9JTwogICAgX1NDX1NZTkNIUk9OSVpFRF9JTywK
I2RlZmluZSBfU0NfU1lOQ0hST05JWkVEX0lPIF9TQ19TWU5DSFJPTklaRURfSU8KICAgIF9TQ19G
U1lOQywKI2RlZmluZSBfU0NfRlNZTkMgX1NDX0ZTWU5DCiAgICBfU0NfTUFQUEVEX0ZJTEVTLAoj
ZGVmaW5lIF9TQ19NQVBQRURfRklMRVMgX1NDX01BUFBFRF9GSUxFUwogICAgX1NDX01FTUxPQ0ss
CiNkZWZpbmUgX1NDX01FTUxPQ0sgX1NDX01FTUxPQ0sKICAgIF9TQ19NRU1MT0NLX1JBTkdFLAoj
ZGVmaW5lIF9TQ19NRU1MT0NLX1JBTkdFIF9TQ19NRU1MT0NLX1JBTkdFCiAgICBfU0NfTUVNT1JZ
X1BST1RFQ1RJT04sCiNkZWZpbmUgX1NDX01FTU9SWV9QUk9URUNUSU9OIF9TQ19NRU1PUllfUFJP
VEVDVElPTgogICAgX1NDX01FU1NBR0VfUEFTU0lORywKI2RlZmluZSBfU0NfTUVTU0FHRV9QQVNT
SU5HIF9TQ19NRVNTQUdFX1BBU1NJTkcKICAgIF9TQ19TRU1BUEhPUkVTLAojZGVmaW5lIF9TQ19T
RU1BUEhPUkVTIF9TQ19TRU1BUEhPUkVTCiAgICBfU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTLAoj
ZGVmaW5lIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMgX1NDX1NIQVJFRF9NRU1PUllfT0JKRUNU
UwogICAgX1NDX0FJT19MSVNUSU9fTUFYLAojZGVmaW5lIF9TQ19BSU9fTElTVElPX01BWCBfU0Nf
QUlPX0xJU1RJT19NQVgKICAgIF9TQ19BSU9fTUFYLAojZGVmaW5lIF9TQ19BSU9fTUFYIF9TQ19B
SU9fTUFYCiAgICBfU0NfQUlPX1BSSU9fREVMVEFfTUFYLAojZGVmaW5lIF9TQ19BSU9fUFJJT19E
RUxUQV9NQVggX1NDX0FJT19QUklPX0RFTFRBX01BWAogICAgX1NDX0RFTEFZVElNRVJfTUFYLAoj
ZGVmaW5lIF9TQ19ERUxBWVRJTUVSX01BWCBfU0NfREVMQVlUSU1FUl9NQVgKICAgIF9TQ19NUV9P
UEVOX01BWCwKI2RlZmluZSBfU0NfTVFfT1BFTl9NQVggX1NDX01RX09QRU5fTUFYCiAgICBfU0Nf
TVFfUFJJT19NQVgsCiNkZWZpbmUgX1NDX01RX1BSSU9fTUFYIF9TQ19NUV9QUklPX01BWAogICAg
X1NDX1ZFUlNJT04sCiNkZWZpbmUgX1NDX1ZFUlNJT04gX1NDX1ZFUlNJT04KICAgIF9TQ19QQUdF
U0laRSwKI2RlZmluZSBfU0NfUEFHRVNJWkUgX1NDX1BBR0VTSVpFCiNkZWZpbmUgX1NDX1BBR0Vf
U0laRSBfU0NfUEFHRVNJWkUKICAgIF9TQ19SVFNJR19NQVgsCiNkZWZpbmUgX1NDX1JUU0lHX01B
WCBfU0NfUlRTSUdfTUFYCiAgICBfU0NfU0VNX05TRU1TX01BWCwKI2RlZmluZSBfU0NfU0VNX05T
RU1TX01BWCBfU0NfU0VNX05TRU1TX01BWAogICAgX1NDX1NFTV9WQUxVRV9NQVgsCiNkZWZpbmUg
X1NDX1NFTV9WQUxVRV9NQVggX1NDX1NFTV9WQUxVRV9NQVgKICAgIF9TQ19TSUdRVUVVRV9NQVgs
CiNkZWZpbmUgX1NDX1NJR1FVRVVFX01BWCBfU0NfU0lHUVVFVUVfTUFYCiAgICBfU0NfVElNRVJf
TUFYLAojZGVmaW5lIF9TQ19USU1FUl9NQVggX1NDX1RJTUVSX01BWAoKCgogICAgX1NDX0JDX0JB
U0VfTUFYLAojZGVmaW5lIF9TQ19CQ19CQVNFX01BWCBfU0NfQkNfQkFTRV9NQVgKICAgIF9TQ19C
Q19ESU1fTUFYLAojZGVmaW5lIF9TQ19CQ19ESU1fTUFYIF9TQ19CQ19ESU1fTUFYCiAgICBfU0Nf
QkNfU0NBTEVfTUFYLAojZGVmaW5lIF9TQ19CQ19TQ0FMRV9NQVggX1NDX0JDX1NDQUxFX01BWAog
ICAgX1NDX0JDX1NUUklOR19NQVgsCiNkZWZpbmUgX1NDX0JDX1NUUklOR19NQVggX1NDX0JDX1NU
UklOR19NQVgKICAgIF9TQ19DT0xMX1dFSUdIVFNfTUFYLAojZGVmaW5lIF9TQ19DT0xMX1dFSUdI
VFNfTUFYIF9TQ19DT0xMX1dFSUdIVFNfTUFYCiAgICBfU0NfRVFVSVZfQ0xBU1NfTUFYLAojZGVm
aW5lIF9TQ19FUVVJVl9DTEFTU19NQVggX1NDX0VRVUlWX0NMQVNTX01BWAogICAgX1NDX0VYUFJf
TkVTVF9NQVgsCiNkZWZpbmUgX1NDX0VYUFJfTkVTVF9NQVggX1NDX0VYUFJfTkVTVF9NQVgKICAg
IF9TQ19MSU5FX01BWCwKI2RlZmluZSBfU0NfTElORV9NQVggX1NDX0xJTkVfTUFYCiAgICBfU0Nf
UkVfRFVQX01BWCwKI2RlZmluZSBfU0NfUkVfRFVQX01BWCBfU0NfUkVfRFVQX01BWAogICAgX1ND
X0NIQVJDTEFTU19OQU1FX01BWCwKI2RlZmluZSBfU0NfQ0hBUkNMQVNTX05BTUVfTUFYIF9TQ19D
SEFSQ0xBU1NfTkFNRV9NQVgKCiAgICBfU0NfMl9WRVJTSU9OLAojZGVmaW5lIF9TQ18yX1ZFUlNJ
T04gX1NDXzJfVkVSU0lPTgogICAgX1NDXzJfQ19CSU5ELAojZGVmaW5lIF9TQ18yX0NfQklORCBf
U0NfMl9DX0JJTkQKICAgIF9TQ18yX0NfREVWLAojZGVmaW5lIF9TQ18yX0NfREVWIF9TQ18yX0Nf
REVWCiAgICBfU0NfMl9GT1JUX0RFViwKI2RlZmluZSBfU0NfMl9GT1JUX0RFViBfU0NfMl9GT1JU
X0RFVgogICAgX1NDXzJfRk9SVF9SVU4sCiNkZWZpbmUgX1NDXzJfRk9SVF9SVU4gX1NDXzJfRk9S
VF9SVU4KICAgIF9TQ18yX1NXX0RFViwKI2RlZmluZSBfU0NfMl9TV19ERVYgX1NDXzJfU1dfREVW
CiAgICBfU0NfMl9MT0NBTEVERUYsCiNkZWZpbmUgX1NDXzJfTE9DQUxFREVGIF9TQ18yX0xPQ0FM
RURFRgoKICAgIF9TQ19QSUksCiNkZWZpbmUgX1NDX1BJSSBfU0NfUElJCiAgICBfU0NfUElJX1hU
SSwKI2RlZmluZSBfU0NfUElJX1hUSSBfU0NfUElJX1hUSQogICAgX1NDX1BJSV9TT0NLRVQsCiNk
ZWZpbmUgX1NDX1BJSV9TT0NLRVQgX1NDX1BJSV9TT0NLRVQKICAgIF9TQ19QSUlfSU5URVJORVQs
CiNkZWZpbmUgX1NDX1BJSV9JTlRFUk5FVCBfU0NfUElJX0lOVEVSTkVUCiAgICBfU0NfUElJX09T
SSwKI2RlZmluZSBfU0NfUElJX09TSSBfU0NfUElJX09TSQogICAgX1NDX1BPTEwsCiNkZWZpbmUg
X1NDX1BPTEwgX1NDX1BPTEwKICAgIF9TQ19TRUxFQ1QsCiNkZWZpbmUgX1NDX1NFTEVDVCBfU0Nf
U0VMRUNUCiAgICBfU0NfVUlPX01BWElPViwKI2RlZmluZSBfU0NfVUlPX01BWElPViBfU0NfVUlP
X01BWElPVgogICAgX1NDX0lPVl9NQVggPSBfU0NfVUlPX01BWElPViwKI2RlZmluZSBfU0NfSU9W
X01BWCBfU0NfSU9WX01BWAogICAgX1NDX1BJSV9JTlRFUk5FVF9TVFJFQU0sCiNkZWZpbmUgX1ND
X1BJSV9JTlRFUk5FVF9TVFJFQU0gX1NDX1BJSV9JTlRFUk5FVF9TVFJFQU0KICAgIF9TQ19QSUlf
SU5URVJORVRfREdSQU0sCiNkZWZpbmUgX1NDX1BJSV9JTlRFUk5FVF9ER1JBTSBfU0NfUElJX0lO
VEVSTkVUX0RHUkFNCiAgICBfU0NfUElJX09TSV9DT1RTLAojZGVmaW5lIF9TQ19QSUlfT1NJX0NP
VFMgX1NDX1BJSV9PU0lfQ09UUwogICAgX1NDX1BJSV9PU0lfQ0xUUywKI2RlZmluZSBfU0NfUElJ
X09TSV9DTFRTIF9TQ19QSUlfT1NJX0NMVFMKICAgIF9TQ19QSUlfT1NJX00sCiNkZWZpbmUgX1ND
X1BJSV9PU0lfTSBfU0NfUElJX09TSV9NCiAgICBfU0NfVF9JT1ZfTUFYLAojZGVmaW5lIF9TQ19U
X0lPVl9NQVggX1NDX1RfSU9WX01BWAoKCiAgICBfU0NfVEhSRUFEUywKI2RlZmluZSBfU0NfVEhS
RUFEUyBfU0NfVEhSRUFEUwogICAgX1NDX1RIUkVBRF9TQUZFX0ZVTkNUSU9OUywKI2RlZmluZSBf
U0NfVEhSRUFEX1NBRkVfRlVOQ1RJT05TIF9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMKICAgIF9T
Q19HRVRHUl9SX1NJWkVfTUFYLAojZGVmaW5lIF9TQ19HRVRHUl9SX1NJWkVfTUFYIF9TQ19HRVRH
Ul9SX1NJWkVfTUFYCiAgICBfU0NfR0VUUFdfUl9TSVpFX01BWCwKI2RlZmluZSBfU0NfR0VUUFdf
Ul9TSVpFX01BWCBfU0NfR0VUUFdfUl9TSVpFX01BWAogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoj
ZGVmaW5lIF9TQ19MT0dJTl9OQU1FX01BWCBfU0NfTE9HSU5fTkFNRV9NQVgKICAgIF9TQ19UVFlf
TkFNRV9NQVgsCiNkZWZpbmUgX1NDX1RUWV9OQU1FX01BWCBfU0NfVFRZX05BTUVfTUFYCiAgICBf
U0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUywKI2RlZmluZSBfU0NfVEhSRUFEX0RFU1RS
VUNUT1JfSVRFUkFUSU9OUyBfU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUwogICAgX1ND
X1RIUkVBRF9LRVlTX01BWCwKI2RlZmluZSBfU0NfVEhSRUFEX0tFWVNfTUFYIF9TQ19USFJFQURf
S0VZU19NQVgKICAgIF9TQ19USFJFQURfU1RBQ0tfTUlOLAojZGVmaW5lIF9TQ19USFJFQURfU1RB
Q0tfTUlOIF9TQ19USFJFQURfU1RBQ0tfTUlOCiAgICBfU0NfVEhSRUFEX1RIUkVBRFNfTUFYLAoj
ZGVmaW5lIF9TQ19USFJFQURfVEhSRUFEU19NQVggX1NDX1RIUkVBRF9USFJFQURTX01BWAogICAg
X1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiwKI2RlZmluZSBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tB
RERSIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS1NJ
WkUsCiNkZWZpbmUgX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSBfU0NfVEhSRUFEX0FUVFJfU1RB
Q0tTSVpFCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcsCiNkZWZpbmUgX1NDX1RI
UkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HIF9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElORwog
ICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCiNkZWZpbmUgX1NDX1RIUkVBRF9QUklPX0lOSEVS
SVQgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQKICAgIF9TQ19USFJFQURfUFJJT19QUk9URUNULAoj
ZGVmaW5lIF9TQ19USFJFQURfUFJJT19QUk9URUNUIF9TQ19USFJFQURfUFJJT19QUk9URUNUCiAg
ICBfU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVELAojZGVmaW5lIF9TQ19USFJFQURfUFJPQ0VTU19T
SEFSRUQgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRAoKICAgIF9TQ19OUFJPQ0VTU09SU19DT05G
LAojZGVmaW5lIF9TQ19OUFJPQ0VTU09SU19DT05GIF9TQ19OUFJPQ0VTU09SU19DT05GCiAgICBf
U0NfTlBST0NFU1NPUlNfT05MTiwKI2RlZmluZSBfU0NfTlBST0NFU1NPUlNfT05MTiBfU0NfTlBS
T0NFU1NPUlNfT05MTgogICAgX1NDX1BIWVNfUEFHRVMsCiNkZWZpbmUgX1NDX1BIWVNfUEFHRVMg
X1NDX1BIWVNfUEFHRVMKICAgIF9TQ19BVlBIWVNfUEFHRVMsCiNkZWZpbmUgX1NDX0FWUEhZU19Q
QUdFUyBfU0NfQVZQSFlTX1BBR0VTCiAgICBfU0NfQVRFWElUX01BWCwKI2RlZmluZSBfU0NfQVRF
WElUX01BWCBfU0NfQVRFWElUX01BWAogICAgX1NDX1BBU1NfTUFYLAojZGVmaW5lIF9TQ19QQVNT
X01BWCBfU0NfUEFTU19NQVgKCiAgICBfU0NfWE9QRU5fVkVSU0lPTiwKI2RlZmluZSBfU0NfWE9Q
RU5fVkVSU0lPTiBfU0NfWE9QRU5fVkVSU0lPTgogICAgX1NDX1hPUEVOX1hDVV9WRVJTSU9OLAoj
ZGVmaW5lIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTiBfU0NfWE9QRU5fWENVX1ZFUlNJT04KICAgIF9T
Q19YT1BFTl9VTklYLAojZGVmaW5lIF9TQ19YT1BFTl9VTklYIF9TQ19YT1BFTl9VTklYCiAgICBf
U0NfWE9QRU5fQ1JZUFQsCiNkZWZpbmUgX1NDX1hPUEVOX0NSWVBUIF9TQ19YT1BFTl9DUllQVAog
ICAgX1NDX1hPUEVOX0VOSF9JMThOLAojZGVmaW5lIF9TQ19YT1BFTl9FTkhfSTE4TiBfU0NfWE9Q
RU5fRU5IX0kxOE4KICAgIF9TQ19YT1BFTl9TSE0sCiNkZWZpbmUgX1NDX1hPUEVOX1NITSBfU0Nf
WE9QRU5fU0hNCgogICAgX1NDXzJfQ0hBUl9URVJNLAojZGVmaW5lIF9TQ18yX0NIQVJfVEVSTSBf
U0NfMl9DSEFSX1RFUk0KICAgIF9TQ18yX0NfVkVSU0lPTiwKI2RlZmluZSBfU0NfMl9DX1ZFUlNJ
T04gX1NDXzJfQ19WRVJTSU9OCiAgICBfU0NfMl9VUEUsCiNkZWZpbmUgX1NDXzJfVVBFIF9TQ18y
X1VQRQoKICAgIF9TQ19YT1BFTl9YUEcyLAojZGVmaW5lIF9TQ19YT1BFTl9YUEcyIF9TQ19YT1BF
Tl9YUEcyCiAgICBfU0NfWE9QRU5fWFBHMywKI2RlZmluZSBfU0NfWE9QRU5fWFBHMyBfU0NfWE9Q
RU5fWFBHMwogICAgX1NDX1hPUEVOX1hQRzQsCiNkZWZpbmUgX1NDX1hPUEVOX1hQRzQgX1NDX1hP
UEVOX1hQRzQKCiAgICBfU0NfQ0hBUl9CSVQsCiNkZWZpbmUgX1NDX0NIQVJfQklUIF9TQ19DSEFS
X0JJVAogICAgX1NDX0NIQVJfTUFYLAojZGVmaW5lIF9TQ19DSEFSX01BWCBfU0NfQ0hBUl9NQVgK
ICAgIF9TQ19DSEFSX01JTiwKI2RlZmluZSBfU0NfQ0hBUl9NSU4gX1NDX0NIQVJfTUlOCiAgICBf
U0NfSU5UX01BWCwKI2RlZmluZSBfU0NfSU5UX01BWCBfU0NfSU5UX01BWAogICAgX1NDX0lOVF9N
SU4sCiNkZWZpbmUgX1NDX0lOVF9NSU4gX1NDX0lOVF9NSU4KICAgIF9TQ19MT05HX0JJVCwKI2Rl
ZmluZSBfU0NfTE9OR19CSVQgX1NDX0xPTkdfQklUCiAgICBfU0NfV09SRF9CSVQsCiNkZWZpbmUg
X1NDX1dPUkRfQklUIF9TQ19XT1JEX0JJVAogICAgX1NDX01CX0xFTl9NQVgsCiNkZWZpbmUgX1ND
X01CX0xFTl9NQVggX1NDX01CX0xFTl9NQVgKICAgIF9TQ19OWkVSTywKI2RlZmluZSBfU0NfTlpF
Uk8gX1NDX05aRVJPCiAgICBfU0NfU1NJWkVfTUFYLAojZGVmaW5lIF9TQ19TU0laRV9NQVggX1ND
X1NTSVpFX01BWAogICAgX1NDX1NDSEFSX01BWCwKI2RlZmluZSBfU0NfU0NIQVJfTUFYIF9TQ19T
Q0hBUl9NQVgKICAgIF9TQ19TQ0hBUl9NSU4sCiNkZWZpbmUgX1NDX1NDSEFSX01JTiBfU0NfU0NI
QVJfTUlOCiAgICBfU0NfU0hSVF9NQVgsCiNkZWZpbmUgX1NDX1NIUlRfTUFYIF9TQ19TSFJUX01B
WAogICAgX1NDX1NIUlRfTUlOLAojZGVmaW5lIF9TQ19TSFJUX01JTiBfU0NfU0hSVF9NSU4KICAg
IF9TQ19VQ0hBUl9NQVgsCiNkZWZpbmUgX1NDX1VDSEFSX01BWCBfU0NfVUNIQVJfTUFYCiAgICBf
U0NfVUlOVF9NQVgsCiNkZWZpbmUgX1NDX1VJTlRfTUFYIF9TQ19VSU5UX01BWAogICAgX1NDX1VM
T05HX01BWCwKI2RlZmluZSBfU0NfVUxPTkdfTUFYIF9TQ19VTE9OR19NQVgKICAgIF9TQ19VU0hS
VF9NQVgsCiNkZWZpbmUgX1NDX1VTSFJUX01BWCBfU0NfVVNIUlRfTUFYCgogICAgX1NDX05MX0FS
R01BWCwKI2RlZmluZSBfU0NfTkxfQVJHTUFYIF9TQ19OTF9BUkdNQVgKICAgIF9TQ19OTF9MQU5H
TUFYLAojZGVmaW5lIF9TQ19OTF9MQU5HTUFYIF9TQ19OTF9MQU5HTUFYCiAgICBfU0NfTkxfTVNH
TUFYLAojZGVmaW5lIF9TQ19OTF9NU0dNQVggX1NDX05MX01TR01BWAogICAgX1NDX05MX05NQVgs
CiNkZWZpbmUgX1NDX05MX05NQVggX1NDX05MX05NQVgKICAgIF9TQ19OTF9TRVRNQVgsCiNkZWZp
bmUgX1NDX05MX1NFVE1BWCBfU0NfTkxfU0VUTUFYCiAgICBfU0NfTkxfVEVYVE1BWCwKI2RlZmlu
ZSBfU0NfTkxfVEVYVE1BWCBfU0NfTkxfVEVYVE1BWAoKICAgIF9TQ19YQlM1X0lMUDMyX09GRjMy
LAojZGVmaW5lIF9TQ19YQlM1X0lMUDMyX09GRjMyIF9TQ19YQlM1X0lMUDMyX09GRjMyCiAgICBf
U0NfWEJTNV9JTFAzMl9PRkZCSUcsCiNkZWZpbmUgX1NDX1hCUzVfSUxQMzJfT0ZGQklHIF9TQ19Y
QlM1X0lMUDMyX09GRkJJRwogICAgX1NDX1hCUzVfTFA2NF9PRkY2NCwKI2RlZmluZSBfU0NfWEJT
NV9MUDY0X09GRjY0IF9TQ19YQlM1X0xQNjRfT0ZGNjQKICAgIF9TQ19YQlM1X0xQQklHX09GRkJJ
RywKI2RlZmluZSBfU0NfWEJTNV9MUEJJR19PRkZCSUcgX1NDX1hCUzVfTFBCSUdfT0ZGQklHCgog
ICAgX1NDX1hPUEVOX0xFR0FDWSwKI2RlZmluZSBfU0NfWE9QRU5fTEVHQUNZIF9TQ19YT1BFTl9M
RUdBQ1kKICAgIF9TQ19YT1BFTl9SRUFMVElNRSwKI2RlZmluZSBfU0NfWE9QRU5fUkVBTFRJTUUg
X1NDX1hPUEVOX1JFQUxUSU1FCiAgICBfU0NfWE9QRU5fUkVBTFRJTUVfVEhSRUFEUywKI2RlZmlu
ZSBfU0NfWE9QRU5fUkVBTFRJTUVfVEhSRUFEUyBfU0NfWE9QRU5fUkVBTFRJTUVfVEhSRUFEUwoK
ICAgIF9TQ19BRFZJU09SWV9JTkZPLAojZGVmaW5lIF9TQ19BRFZJU09SWV9JTkZPIF9TQ19BRFZJ
U09SWV9JTkZPCiAgICBfU0NfQkFSUklFUlMsCiNkZWZpbmUgX1NDX0JBUlJJRVJTIF9TQ19CQVJS
SUVSUwogICAgX1NDX0JBU0UsCiNkZWZpbmUgX1NDX0JBU0UgX1NDX0JBU0UKICAgIF9TQ19DX0xB
TkdfU1VQUE9SVCwKI2RlZmluZSBfU0NfQ19MQU5HX1NVUFBPUlQgX1NDX0NfTEFOR19TVVBQT1JU
CiAgICBfU0NfQ19MQU5HX1NVUFBPUlRfUiwKI2RlZmluZSBfU0NfQ19MQU5HX1NVUFBPUlRfUiBf
U0NfQ19MQU5HX1NVUFBPUlRfUgogICAgX1NDX0NMT0NLX1NFTEVDVElPTiwKI2RlZmluZSBfU0Nf
Q0xPQ0tfU0VMRUNUSU9OIF9TQ19DTE9DS19TRUxFQ1RJT04KICAgIF9TQ19DUFVUSU1FLAojZGVm
aW5lIF9TQ19DUFVUSU1FIF9TQ19DUFVUSU1FCiAgICBfU0NfVEhSRUFEX0NQVVRJTUUsCiNkZWZp
bmUgX1NDX1RIUkVBRF9DUFVUSU1FIF9TQ19USFJFQURfQ1BVVElNRQogICAgX1NDX0RFVklDRV9J
TywKI2RlZmluZSBfU0NfREVWSUNFX0lPIF9TQ19ERVZJQ0VfSU8KICAgIF9TQ19ERVZJQ0VfU1BF
Q0lGSUMsCiNkZWZpbmUgX1NDX0RFVklDRV9TUEVDSUZJQyBfU0NfREVWSUNFX1NQRUNJRklDCiAg
ICBfU0NfREVWSUNFX1NQRUNJRklDX1IsCiNkZWZpbmUgX1NDX0RFVklDRV9TUEVDSUZJQ19SIF9T
Q19ERVZJQ0VfU1BFQ0lGSUNfUgogICAgX1NDX0ZEX01HTVQsCiNkZWZpbmUgX1NDX0ZEX01HTVQg
X1NDX0ZEX01HTVQKICAgIF9TQ19GSUZPLAojZGVmaW5lIF9TQ19GSUZPIF9TQ19GSUZPCiAgICBf
U0NfUElQRSwKI2RlZmluZSBfU0NfUElQRSBfU0NfUElQRQogICAgX1NDX0ZJTEVfQVRUUklCVVRF
UywKI2RlZmluZSBfU0NfRklMRV9BVFRSSUJVVEVTIF9TQ19GSUxFX0FUVFJJQlVURVMKICAgIF9T
Q19GSUxFX0xPQ0tJTkcsCiNkZWZpbmUgX1NDX0ZJTEVfTE9DS0lORyBfU0NfRklMRV9MT0NLSU5H
CiAgICBfU0NfRklMRV9TWVNURU0sCiNkZWZpbmUgX1NDX0ZJTEVfU1lTVEVNIF9TQ19GSUxFX1NZ
U1RFTQogICAgX1NDX01PTk9UT05JQ19DTE9DSywKI2RlZmluZSBfU0NfTU9OT1RPTklDX0NMT0NL
IF9TQ19NT05PVE9OSUNfQ0xPQ0sKICAgIF9TQ19NVUxUSV9QUk9DRVNTLAojZGVmaW5lIF9TQ19N
VUxUSV9QUk9DRVNTIF9TQ19NVUxUSV9QUk9DRVNTCiAgICBfU0NfU0lOR0xFX1BST0NFU1MsCiNk
ZWZpbmUgX1NDX1NJTkdMRV9QUk9DRVNTIF9TQ19TSU5HTEVfUFJPQ0VTUwogICAgX1NDX05FVFdP
UktJTkcsCiNkZWZpbmUgX1NDX05FVFdPUktJTkcgX1NDX05FVFdPUktJTkcKICAgIF9TQ19SRUFE
RVJfV1JJVEVSX0xPQ0tTLAojZGVmaW5lIF9TQ19SRUFERVJfV1JJVEVSX0xPQ0tTIF9TQ19SRUFE
RVJfV1JJVEVSX0xPQ0tTCiAgICBfU0NfU1BJTl9MT0NLUywKI2RlZmluZSBfU0NfU1BJTl9MT0NL
UyBfU0NfU1BJTl9MT0NLUwogICAgX1NDX1JFR0VYUCwKI2RlZmluZSBfU0NfUkVHRVhQIF9TQ19S
RUdFWFAKICAgIF9TQ19SRUdFWF9WRVJTSU9OLAojZGVmaW5lIF9TQ19SRUdFWF9WRVJTSU9OIF9T
Q19SRUdFWF9WRVJTSU9OCiAgICBfU0NfU0hFTEwsCiNkZWZpbmUgX1NDX1NIRUxMIF9TQ19TSEVM
TAogICAgX1NDX1NJR05BTFMsCiNkZWZpbmUgX1NDX1NJR05BTFMgX1NDX1NJR05BTFMKICAgIF9T
Q19TUEFXTiwKI2RlZmluZSBfU0NfU1BBV04gX1NDX1NQQVdOCiAgICBfU0NfU1BPUkFESUNfU0VS
VkVSLAojZGVmaW5lIF9TQ19TUE9SQURJQ19TRVJWRVIgX1NDX1NQT1JBRElDX1NFUlZFUgogICAg
X1NDX1RIUkVBRF9TUE9SQURJQ19TRVJWRVIsCiNkZWZpbmUgX1NDX1RIUkVBRF9TUE9SQURJQ19T
RVJWRVIgX1NDX1RIUkVBRF9TUE9SQURJQ19TRVJWRVIKICAgIF9TQ19TWVNURU1fREFUQUJBU0Us
CiNkZWZpbmUgX1NDX1NZU1RFTV9EQVRBQkFTRSBfU0NfU1lTVEVNX0RBVEFCQVNFCiAgICBfU0Nf
U1lTVEVNX0RBVEFCQVNFX1IsCiNkZWZpbmUgX1NDX1NZU1RFTV9EQVRBQkFTRV9SIF9TQ19TWVNU
RU1fREFUQUJBU0VfUgogICAgX1NDX1RJTUVPVVRTLAojZGVmaW5lIF9TQ19USU1FT1VUUyBfU0Nf
VElNRU9VVFMKICAgIF9TQ19UWVBFRF9NRU1PUllfT0JKRUNUUywKI2RlZmluZSBfU0NfVFlQRURf
TUVNT1JZX09CSkVDVFMgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTCiAgICBfU0NfVVNFUl9HUk9V
UFMsCiNkZWZpbmUgX1NDX1VTRVJfR1JPVVBTIF9TQ19VU0VSX0dST1VQUwogICAgX1NDX1VTRVJf
R1JPVVBTX1IsCiNkZWZpbmUgX1NDX1VTRVJfR1JPVVBTX1IgX1NDX1VTRVJfR1JPVVBTX1IKICAg
IF9TQ18yX1BCUywKI2RlZmluZSBfU0NfMl9QQlMgX1NDXzJfUEJTCiAgICBfU0NfMl9QQlNfQUND
T1VOVElORywKI2RlZmluZSBfU0NfMl9QQlNfQUNDT1VOVElORyBfU0NfMl9QQlNfQUNDT1VOVElO
RwogICAgX1NDXzJfUEJTX0xPQ0FURSwKI2RlZmluZSBfU0NfMl9QQlNfTE9DQVRFIF9TQ18yX1BC
U19MT0NBVEUKICAgIF9TQ18yX1BCU19NRVNTQUdFLAojZGVmaW5lIF9TQ18yX1BCU19NRVNTQUdF
IF9TQ18yX1BCU19NRVNTQUdFCiAgICBfU0NfMl9QQlNfVFJBQ0ssCiNkZWZpbmUgX1NDXzJfUEJT
X1RSQUNLIF9TQ18yX1BCU19UUkFDSwogICAgX1NDX1NZTUxPT1BfTUFYLAojZGVmaW5lIF9TQ19T
WU1MT09QX01BWCBfU0NfU1lNTE9PUF9NQVgKICAgIF9TQ19TVFJFQU1TLAojZGVmaW5lIF9TQ19T
VFJFQU1TIF9TQ19TVFJFQU1TCiAgICBfU0NfMl9QQlNfQ0hFQ0tQT0lOVCwKI2RlZmluZSBfU0Nf
Ml9QQlNfQ0hFQ0tQT0lOVCBfU0NfMl9QQlNfQ0hFQ0tQT0lOVAoKICAgIF9TQ19WNl9JTFAzMl9P
RkYzMiwKI2RlZmluZSBfU0NfVjZfSUxQMzJfT0ZGMzIgX1NDX1Y2X0lMUDMyX09GRjMyCiAgICBf
U0NfVjZfSUxQMzJfT0ZGQklHLAojZGVmaW5lIF9TQ19WNl9JTFAzMl9PRkZCSUcgX1NDX1Y2X0lM
UDMyX09GRkJJRwogICAgX1NDX1Y2X0xQNjRfT0ZGNjQsCiNkZWZpbmUgX1NDX1Y2X0xQNjRfT0ZG
NjQgX1NDX1Y2X0xQNjRfT0ZGNjQKICAgIF9TQ19WNl9MUEJJR19PRkZCSUcsCiNkZWZpbmUgX1ND
X1Y2X0xQQklHX09GRkJJRyBfU0NfVjZfTFBCSUdfT0ZGQklHCgogICAgX1NDX0hPU1RfTkFNRV9N
QVgsCiNkZWZpbmUgX1NDX0hPU1RfTkFNRV9NQVggX1NDX0hPU1RfTkFNRV9NQVgKICAgIF9TQ19U
UkFDRSwKI2RlZmluZSBfU0NfVFJBQ0UgX1NDX1RSQUNFCiAgICBfU0NfVFJBQ0VfRVZFTlRfRklM
VEVSLAojZGVmaW5lIF9TQ19UUkFDRV9FVkVOVF9GSUxURVIgX1NDX1RSQUNFX0VWRU5UX0ZJTFRF
UgogICAgX1NDX1RSQUNFX0lOSEVSSVQsCiNkZWZpbmUgX1NDX1RSQUNFX0lOSEVSSVQgX1NDX1RS
QUNFX0lOSEVSSVQKICAgIF9TQ19UUkFDRV9MT0cKI2RlZmluZSBfU0NfVFJBQ0VfTE9HIF9TQ19U
UkFDRV9MT0cKICB9OwoKCgoKCmVudW0KICB7CiAgICBfQ1NfUEFUSCwKI2RlZmluZSBfQ1NfUEFU
SCBfQ1NfUEFUSAojIDU2MyAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMwogICAgX0NT
X1Y2X1dJRFRIX1JFU1RSSUNURURfRU5WUwojZGVmaW5lIF9DU19WNl9XSURUSF9SRVNUUklDVEVE
X0VOVlMgX0NTX1Y2X1dJRFRIX1JFU1RSSUNURURfRU5WUwogIH07CiMgNTAxICIvdXNyL2luY2x1
ZGUvdW5pc3RkLmgiIDIgMwoKCmV4dGVybiBsb25nIGludCBwYXRoY29uZiAoX19jb25zdCBjaGFy
ICpfX3BhdGgsIGludCBfX25hbWUpIDsKCgpleHRlcm4gbG9uZyBpbnQgZnBhdGhjb25mIChpbnQg
X19mZCwgaW50IF9fbmFtZSkgOwoKCmV4dGVybiBsb25nIGludCBzeXNjb25mIChpbnQgX19uYW1l
KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBzaXplX3QgY29uZnN0ciAo
aW50IF9fbmFtZSwgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgOwoKCgoKZXh0ZXJuIF9fcGlk
X3QgZ2V0cGlkICh2b2lkKSA7CgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cHBpZCAodm9pZCkgOwoKCgoK
ZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAodm9pZCkgOwojIDUzNiAiL3Vzci9pbmNsdWRlL3VuaXN0
ZC5oIiAzCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAoX19waWRfdCBfX3BpZCkgOwojIDU0NSAi
L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgc2V0cGdpZCAoX19waWRfdCBfX3Bp
ZCwgX19waWRfdCBfX3BnaWQpIDsKIyA1NjIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRl
cm4gaW50IHNldHBncnAgKHZvaWQpIDsKIyA1ODAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpl
eHRlcm4gX19waWRfdCBzZXRzaWQgKHZvaWQpIDsKCgoKCgoKCmV4dGVybiBfX3VpZF90IGdldHVp
ZCAodm9pZCkgOwoKCmV4dGVybiBfX3VpZF90IGdldGV1aWQgKHZvaWQpIDsKCgpleHRlcm4gX19n
aWRfdCBnZXRnaWQgKHZvaWQpIDsKCgpleHRlcm4gX19naWRfdCBnZXRlZ2lkICh2b2lkKSA7CgoK
CgpleHRlcm4gaW50IGdldGdyb3VwcyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgOwoj
IDYxMyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgc2V0dWlkIChfX3VpZF90
IF9fdWlkKSA7CgoKCgpleHRlcm4gaW50IHNldHJldWlkIChfX3VpZF90IF9fcnVpZCwgX191aWRf
dCBfX2V1aWQpIDsKCgoKCmV4dGVybiBpbnQgc2V0ZXVpZCAoX191aWRfdCBfX3VpZCkgOwoKCgoK
CgpleHRlcm4gaW50IHNldGdpZCAoX19naWRfdCBfX2dpZCkgOwoKCgoKZXh0ZXJuIGludCBzZXRy
ZWdpZCAoX19naWRfdCBfX3JnaWQsIF9fZ2lkX3QgX19lZ2lkKSA7CgoKCgpleHRlcm4gaW50IHNl
dGVnaWQgKF9fZ2lkX3QgX19naWQpIDsKCgoKCgoKZXh0ZXJuIF9fcGlkX3QgZm9yayAodm9pZCkg
OwoKCgoKCgpleHRlcm4gX19waWRfdCB2Zm9yayAodm9pZCkgOwoKCgoKCmV4dGVybiBjaGFyICp0
dHluYW1lIChpbnQgX19mZCkgOwoKCgpleHRlcm4gaW50IHR0eW5hbWVfciAoaW50IF9fZmQsIGNo
YXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIDsKCgoKZXh0ZXJuIGludCBpc2F0dHkgKGludCBf
X2ZkKSA7CgoKCgoKZXh0ZXJuIGludCB0dHlzbG90ICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGxp
bmsgKF9fY29uc3QgY2hhciAqX19mcm9tLCBfX2NvbnN0IGNoYXIgKl9fdG8pIDsKCgoKZXh0ZXJu
IGludCBzeW1saW5rIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSA7
CgoKCgpleHRlcm4gaW50IHJlYWRsaW5rIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19wYXRo
LCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19s
ZW4pIDsKCgoKZXh0ZXJuIGludCB1bmxpbmsgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKZXh0
ZXJuIGludCBybWRpciAoX19jb25zdCBjaGFyICpfX3BhdGgpIDsKCgoKZXh0ZXJuIF9fcGlkX3Qg
dGNnZXRwZ3JwIChpbnQgX19mZCkgOwoKCmV4dGVybiBpbnQgdGNzZXRwZ3JwIChpbnQgX19mZCwg
X19waWRfdCBfX3BncnBfaWQpIDsKCgoKZXh0ZXJuIGNoYXIgKmdldGxvZ2luICh2b2lkKSA7CiMg
NzE3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBzZXRsb2dpbiAoX19jb25z
dCBjaGFyICpfX25hbWUpIDsKCgoKCgoKCiNkZWZpbmUgX19uZWVkX2dldG9wdCAKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvZ2V0b3B0LmgiIDEgMwojIDM2ICIvdXNyL2xvY2FsL2luY2x1ZGUvZ2V0
b3B0LmgiIDMKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKIyA1MCAiL3Vzci9sb2NhbC9pbmNsdWRlL2dl
dG9wdC5oIiAzCmV4dGVybiBpbnQgb3B0aW5kOwoKCgoKZXh0ZXJuIGludCBvcHRlcnI7CgoKCmV4
dGVybiBpbnQgb3B0b3B0OwojIDEzNCAiL3Vzci9sb2NhbC9pbmNsdWRlL2dldG9wdC5oIiAzCmV4
dGVybiBpbnQgZ2V0b3B0IChpbnQgX19hcmdjLCBjaGFyICpjb25zdCAqX19hcmd2LCBjb25zdCBj
aGFyICpfX3Nob3J0b3B0cyk7CiMgMTY3ICIvdXNyL2xvY2FsL2luY2x1ZGUvZ2V0b3B0LmgiIDMK
I3VuZGVmIF9fbmVlZF9nZXRvcHQKIyA3MjcgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoK
CgoKCgpleHRlcm4gaW50IGdldGhvc3RuYW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikg
OwoKCgoKCgpleHRlcm4gaW50IHNldGhvc3RuYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6
ZV90IF9fbGVuKSA7CgoKCmV4dGVybiBpbnQgc2V0aG9zdGlkIChsb25nIGludCBfX2lkKSA7CgoK
CgoKZXh0ZXJuIGludCBnZXRkb21haW5uYW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikg
OwpleHRlcm4gaW50IHNldGRvbWFpbm5hbWUgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3Qg
X19sZW4pIDsKCgoKCgpleHRlcm4gaW50IHZoYW5ndXAgKHZvaWQpIDsKCgpleHRlcm4gaW50IHJl
dm9rZSAoX19jb25zdCBjaGFyICpfX2ZpbGUpIDsKCgoKCgoKCmV4dGVybiBpbnQgcHJvZmlsICh1
bnNpZ25lZCBzaG9ydCBpbnQgKl9fc2FtcGxlX2J1ZmZlciwgc2l6ZV90IF9fc2l6ZSwKICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBfX29mZnNldCwgdW5zaWduZWQgaW50IF9fc2NhbGUpIDsKCgoK
CgpleHRlcm4gaW50IGFjY3QgKF9fY29uc3QgY2hhciAqX19uYW1lKSA7CgoKCmV4dGVybiBjaGFy
ICpnZXR1c2Vyc2hlbGwgKHZvaWQpIDsKZXh0ZXJuIHZvaWQgZW5kdXNlcnNoZWxsICh2b2lkKSA7
CmV4dGVybiB2b2lkIHNldHVzZXJzaGVsbCAodm9pZCkgOwoKCgoKCmV4dGVybiBpbnQgZGFlbW9u
IChpbnQgX19ub2NoZGlyLCBpbnQgX19ub2Nsb3NlKSA7CgoKCgoKCmV4dGVybiBpbnQgY2hyb290
IChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgOwoKCgpleHRlcm4gY2hhciAqZ2V0cGFzcyAoX19jb25z
dCBjaGFyICpfX3Byb21wdCkgOwoKCgoKCmV4dGVybiBpbnQgZnN5bmMgKGludCBfX2ZkKSA7CgoK
CgoKCmV4dGVybiBsb25nIGludCBnZXRob3N0aWQgKHZvaWQpIDsKCgpleHRlcm4gdm9pZCBzeW5j
ICh2b2lkKSA7CgoKCgpleHRlcm4gaW50IGdldHBhZ2VzaXplICh2b2lkKSBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHRydW5jYXRlIChfX2NvbnN0IGNoYXIgKl9f
ZmlsZSwgX19vZmZfdCBfX2xlbmd0aCkgOwojIDg0MSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
CmV4dGVybiBpbnQgZnRydW5jYXRlIChpbnQgX19mZCwgX19vZmZfdCBfX2xlbmd0aCkgOwojIDg1
NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgZ2V0ZHRhYmxlc2l6ZSAodm9p
ZCkgOwojIDg2NiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBpbnQgYnJrICh2b2lk
ICpfX2FkZHIpIDsKCgoKCgpleHRlcm4gdm9pZCAqc2JyayAoaW50cHRyX3QgX19kZWx0YSkgOwoj
IDg4NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBsb25nIGludCBzeXNjYWxsIChs
b25nIGludCBfX3N5c25vLCAuLi4pIDsKIyA5MDEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoj
ZGVmaW5lIEZfVUxPQ0sgMAojZGVmaW5lIEZfTE9DSyAxCiNkZWZpbmUgRl9UTE9DSyAyCiNkZWZp
bmUgRl9URVNUIDMKCgpleHRlcm4gaW50IGxvY2tmIChpbnQgX19mZCwgaW50IF9fY21kLCBfX29m
Zl90IF9fbGVuKSA7CiMgOTM4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBm
ZGF0YXN5bmMgKGludCBfX2ZpbGRlcykgOwojIDk4MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
CmV4dGVybiBpbnQgcHRocmVhZF9hdGZvcmsgKHZvaWQgKCpfX3ByZXBhcmUpICh2b2lkKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKl9fcGFyZW50KSAodm9pZCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfX2NoaWxkKSAodm9pZCkpIDsKCgoKIyAyNSAiaGVh
cC5vbGQuYyIgMgojIDEgIi4uL2dsb2JhbC5oIiAxCiMgMjAgIi4uL2dsb2JhbC5oIgojZGVmaW5l
IF9fZ2xvYmFsX2hfIAoKIyAxICIuLi9jb25maWcuaCIgMQoKCgoKCgoKI2RlZmluZSBIQVZFX01N
QVAgMQojIDE3ICIuLi9jb25maWcuaCIKI2RlZmluZSBSRVRTSUdUWVBFIHZvaWQKCgoKCgojZGVm
aW5lIFNURENfSEVBREVSUyAxCgoKI2RlZmluZSBUSU1FX1dJVEhfU1lTX1RJTUUgMQoKCgoKCiNk
ZWZpbmUgSEFWRV9NQVBfRkFJTEVEIDEKCgojZGVmaW5lIEhBVkVfTUFQX0FOT05ZTU9VUyAxCgoK
I2RlZmluZSBVU0VfVEhSRUFEUyAxCiNkZWZpbmUgRVhURVJOQUxfT1ZFUkZMT1cgMQojZGVmaW5l
IERPTlRfRlJFRV9GSVJTVCAxCgoKI2RlZmluZSBTWVNERVBfRElSICJpMzg2IgoKI2RlZmluZSBP
TERfQ09NUElMRVIgMQoKCiNkZWZpbmUgSEFWRV9HRVRDV0QgMQoKCiNkZWZpbmUgSEFWRV9HRVRQ
QUdFU0laRSAxCgoKI2RlZmluZSBIQVZFX0dFVFRJTUVPRkRBWSAxCgoKI2RlZmluZSBIQVZFX01L
RElSIDEKCgojZGVmaW5lIEhBVkVfTUtUSU1FIDEKCgojZGVmaW5lIEhBVkVfU0VMRUNUIDEKCgoj
ZGVmaW5lIEhBVkVfU09DS0VUIDEKCgojZGVmaW5lIEhBVkVfRElSRU5UX0ggMQoKCiNkZWZpbmUg
SEFWRV9GQ05UTF9IIDEKIyA4NCAiLi4vY29uZmlnLmgiCiNkZWZpbmUgSEFWRV9TWVNfVElNRV9I
IDEKCgojZGVmaW5lIEhBVkVfVU5JU1REX0ggMQoKCiNkZWZpbmUgSEFWRV9MSUJNIDEKCgojZGVm
aW5lIFBBQ0tBR0UgImNhY2FvIgoKCiNkZWZpbmUgVkVSU0lPTiAiMC40MCIKIyAyMyAiLi4vZ2xv
YmFsLmgiIDIKCiNkZWZpbmUgTkVXX0dDIAoKI2RlZmluZSBTVEFUSVNUSUNTIAojIDM2ICIuLi9n
bG9iYWwuaCIKI2RlZmluZSBTSVpFX0ZST01fQ0xBU1NJTkZPIAoKCgojIDEgIi91c3IvbGliL2dj
Yy1saWIvaTM4Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRpby5oIiAxIDMKIyAzNiAiL3Vzci9saWIv
Z2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKI2RlZmluZSBfU1RESU9f
SCAxCgoKCgojZGVmaW5lIF9fbmVlZF9zaXplX3QgCiNkZWZpbmUgX19uZWVkX05VTEwgCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAy
MjEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoj
dW5kZWYgX19uZWVkX3NpemVfdAojIDM2NCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMu
MS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1bmRlZiBOVUxMCgoKCgojZGVmaW5lIE5VTEwgKCh2b2lk
ICopMCkKCgoKCgojdW5kZWYgX19uZWVkX05VTEwKIyA0NCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCiNkZWZpbmUgX19uZWVkX0ZJTEUgCiNk
ZWZpbmUgX19uZWVkX19fRklMRSAKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsK
CiNkZWZpbmUgX19GSUxFX2RlZmluZWQgMQoKI3VuZGVmIF9fbmVlZF9GSUxFCgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX0lPX0ZJTEUgX19GSUxFOwoKI2RlZmluZSBfX19fRklMRV9kZWZpbmVkIDEKCiN1
bmRlZiBfX25lZWRfX19GSUxFCgoKCiNkZWZpbmUgX1NURElPX1VTRVNfSU9TVFJFQU0gCgojIDEg
Ii91c3IvaW5jbHVkZS9saWJpby5oIiAxIDMKIyAzMCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMK
I2RlZmluZSBfSU9fU1RESU9fSCAKCiMgMSAiL3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAxIDMK
CgoKCiNkZWZpbmUgX0dfY29uZmlnX2ggMQoKCgoKI2RlZmluZSBfX25lZWRfc2l6ZV90IAojZGVm
aW5lIF9fbmVlZF93Y2hhcl90IAojZGVmaW5lIF9fbmVlZF93aW50X3QgCiNkZWZpbmUgX19uZWVk
X05VTEwgCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKIyAyMjEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjEvaW5jbHVkZS9z
dGRkZWYuaCIgMwojdW5kZWYgX19uZWVkX3NpemVfdAojIDI0OCAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiNkZWZpbmUgX193Y2hhcl90X18gCiNk
ZWZpbmUgX19XQ0hBUl9UX18gCiNkZWZpbmUgX1dDSEFSX1QgCiNkZWZpbmUgX1RfV0NIQVJfIAoj
ZGVmaW5lIF9UX1dDSEFSIAojZGVmaW5lIF9fV0NIQVJfVCAKI2RlZmluZSBfV0NIQVJfVF8gCiNk
ZWZpbmUgX0JTRF9XQ0hBUl9UXyAKI2RlZmluZSBfV0NIQVJfVF9ERUZJTkVEXyAKI2RlZmluZSBf
V0NIQVJfVF9ERUZJTkVEIAojZGVmaW5lIF9XQ0hBUl9UX0ggCiNkZWZpbmUgX19faW50X3djaGFy
X3RfaCAKI2RlZmluZSBfX0lOVF9XQ0hBUl9UX0ggCiNkZWZpbmUgX0dDQ19XQ0hBUl9UIAojIDI3
NCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1
bmRlZiBfQlNEX1dDSEFSX1RfCiMgMjk0ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4x
L2luY2x1ZGUvc3RkZGVmLmgiIDMKdHlwZWRlZiBsb25nIGludCB3Y2hhcl90OwojIDMxMSAiL3Vz
ci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1bmRlZiBf
X25lZWRfd2NoYXJfdAoKCgoKI2RlZmluZSBfV0lOVF9UIAoKCgoKdHlwZWRlZiB1bnNpZ25lZCBp
bnQgd2ludF90OwoKI3VuZGVmIF9fbmVlZF93aW50X3QKIyAzNjQgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwojdW5kZWYgTlVMTAoKCgoKI2RlZmlu
ZSBOVUxMICgodm9pZCAqKTApCgoKCgoKI3VuZGVmIF9fbmVlZF9OVUxMCiMgMTUgIi91c3IvaW5j
bHVkZS9fR19jb25maWcuaCIgMiAzCiMgMjMgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMwoj
ZGVmaW5lIF9fbmVlZF9tYnN0YXRlX3QgCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwoj
IDQ3ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojZGVmaW5lIF9fbmVlZF93aW50X3QgCiMgMSAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAz
MjMgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoj
dW5kZWYgX19uZWVkX3dpbnRfdAojIDQ5ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL3djaGFyLmgiIDEgMwojIDIxICIvdXNyL2luY2x1ZGUvYml0cy93
Y2hhci5oIiAzCiNkZWZpbmUgX0JJVFNfV0NIQVJfSCAxCgojZGVmaW5lIF9fV0NIQVJfTUlOICgt
MjE0NzQ4MzY0N2wgLSAxbCkKI2RlZmluZSBfX1dDSEFSX01BWCAoMjE0NzQ4MzY0N2wpCiMgNTEg
Ii91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKIyA2NSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMK
I2RlZmluZSBfX21ic3RhdGVfdF9kZWZpbmVkIDEKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19j
b3VudDsKICB1bmlvbgogIHsKICAgIHdpbnRfdCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwog
IH0gX192YWx1ZTsKfSBfX21ic3RhdGVfdDsKCiN1bmRlZiBfX25lZWRfbWJzdGF0ZV90CiMgMjUg
Ii91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCiNkZWZpbmUgX0dfc2l6ZV90IHNpemVfdAp0
eXBlZGVmIHN0cnVjdAp7CiAgX19vZmZfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9
IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3Rh
dGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2NF90OwojZGVmaW5lIF9HX3NzaXplX3QgX19zc2l6ZV90
CiNkZWZpbmUgX0dfb2ZmX3QgX19vZmZfdAojZGVmaW5lIF9HX29mZjY0X3QgX19vZmY2NF90CiNk
ZWZpbmUgX0dfcGlkX3QgX19waWRfdAojZGVmaW5lIF9HX3VpZF90IF9fdWlkX3QKI2RlZmluZSBf
R193Y2hhcl90IHdjaGFyX3QKI2RlZmluZSBfR193aW50X3Qgd2ludF90CiNkZWZpbmUgX0dfc3Rh
dDY0IHN0YXQ2NAojIDEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAxIDMKIyAyNCAiL3Vzci9pbmNs
dWRlL2djb252LmgiIDMKI2RlZmluZSBfR0NPTlZfSCAxCgoKI2RlZmluZSBfX25lZWRfbWJzdGF0
ZV90IAojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0NyAiL3Vzci9pbmNsdWRlL3dj
aGFyLmgiIDMKI2RlZmluZSBfX25lZWRfd2ludF90IAojIDEgIi91c3IvbGliL2djYy1saWIvaTM4
Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzIzICIvdXNyL2xpYi9nY2MtbGli
L2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKI3VuZGVmIF9fbmVlZF93aW50X3QK
IyA0OSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDc3ICIvdXNyL2luY2x1ZGUvd2NoYXIu
aCIgMwojdW5kZWYgX19uZWVkX21ic3RhdGVfdAojIDI5ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIg
MiAzCiNkZWZpbmUgX19uZWVkX3NpemVfdCAKI2RlZmluZSBfX25lZWRfd2NoYXJfdCAKIyAxICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIy
MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1
bmRlZiBfX25lZWRfc2l6ZV90CiMgMzExICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4x
L2luY2x1ZGUvc3RkZGVmLmgiIDMKI3VuZGVmIF9fbmVlZF93Y2hhcl90CiMgMzIgIi91c3IvaW5j
bHVkZS9nY29udi5oIiAyIDMKCgojZGVmaW5lIF9fVU5LTk9XTl8xMDY0Nl9DSEFSICgod2NoYXJf
dCkgMHhmZmZkKQoKCmVudW0KewogIF9fR0NPTlZfT0sgPSAwLAogIF9fR0NPTlZfTk9DT05WLAog
IF9fR0NPTlZfTk9EQiwKICBfX0dDT05WX05PTUVNLAoKICBfX0dDT05WX0VNUFRZX0lOUFVULAog
IF9fR0NPTlZfRlVMTF9PVVRQVVQsCiAgX19HQ09OVl9JTExFR0FMX0lOUFVULAogIF9fR0NPTlZf
SU5DT01QTEVURV9JTlBVVCwKCiAgX19HQ09OVl9JTExFR0FMX0RFU0NSSVBUT1IsCiAgX19HQ09O
Vl9JTlRFUk5BTF9FUlJPUgp9OwoKCgplbnVtCnsKICBfX0dDT05WX0lTX0xBU1QgPSAweDAwMDEs
CiAgX19HQ09OVl9JR05PUkVfRVJST1JTID0gMHgwMDAyCn07CgoKCnN0cnVjdCBfX2djb252X3N0
ZXA7CnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YTsKc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVj
dDsKc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2Zj
dCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiosIF9fY29u
c3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciAqKiwgc2l6ZV90ICosIGludCwgaW50KTsKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZfaW5p
dF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwp0eXBlZGVmIHZvaWQgKCpfX2djb252X2Vu
ZF9mY3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICopOwoKCgp0eXBlZGVmIGludCAoKl9fZ2NvbnZf
dHJhbnNfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IF9fZ2NvbnZfc3RlcF9kYXRhICosIHZvaWQgKiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosIHVu
c2lnbmVkIGNoYXIgKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
Kik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2NvbnRleHRfZmN0KSAodm9pZCAqLCBf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgY2hhciAqKTsKCgp0
eXBlZGVmIGludCAoKl9fZ2NvbnZfdHJhbnNfcXVlcnlfZmN0KSAoX19jb25zdCBjaGFyICosIF9f
Y29uc3QgY2hhciAqKiosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgKik7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX2luaXRfZmN0KSAodm9pZCAq
KiwgY29uc3QgY2hhciAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl90cmFuc19lbmRfZmN0KSAo
dm9pZCAqKTsKCnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEKewoKICBfX2djb252X3RyYW5zX2Zj
dCBfX3RyYW5zX2ZjdDsKICBfX2djb252X3RyYW5zX2NvbnRleHRfZmN0IF9fdHJhbnNfY29udGV4
dF9mY3Q7CiAgX19nY29udl90cmFuc19lbmRfZmN0IF9fdHJhbnNfZW5kX2ZjdDsKICB2b2lkICpf
X2RhdGE7CiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX19uZXh0Owp9OwoKCgpzdHJ1Y3Qg
X19nY29udl9zdGVwCnsKICBzdHJ1Y3QgX19nY29udl9sb2FkZWRfb2JqZWN0ICpfX3NobGliX2hh
bmRsZTsKICBfX2NvbnN0IGNoYXIgKl9fbW9kbmFtZTsKCiAgaW50IF9fY291bnRlcjsKCiAgY2hh
ciAqX19mcm9tX25hbWU7CiAgY2hhciAqX190b19uYW1lOwoKICBfX2djb252X2ZjdCBfX2ZjdDsK
ICBfX2djb252X2luaXRfZmN0IF9faW5pdF9mY3Q7CiAgX19nY29udl9lbmRfZmN0IF9fZW5kX2Zj
dDsKCgoKICBpbnQgX19taW5fbmVlZGVkX2Zyb207CiAgaW50IF9fbWF4X25lZWRlZF9mcm9tOwog
IGludCBfX21pbl9uZWVkZWRfdG87CiAgaW50IF9fbWF4X25lZWRlZF90bzsKCgogIGludCBfX3N0
YXRlZnVsOwoKICB2b2lkICpfX2RhdGE7Cn07CgoKCnN0cnVjdCBfX2djb252X3N0ZXBfZGF0YQp7
CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWY7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWZlbmQ7
CgoKCiAgaW50IF9fZmxhZ3M7CgoKCiAgaW50IF9faW52b2NhdGlvbl9jb3VudGVyOwoKCgogIGlu
dCBfX2ludGVybmFsX3VzZTsKCiAgX19tYnN0YXRlX3QgKl9fc3RhdGVwOwogIF9fbWJzdGF0ZV90
IF9fc3RhdGU7CgoKCiAgc3RydWN0IF9fZ2NvbnZfdHJhbnNfZGF0YSAqX190cmFuczsKfTsKCgoK
dHlwZWRlZiBzdHJ1Y3QgX19nY29udl9pbmZvCnsKICBzaXplX3QgX19uc3RlcHM7CiAgc3RydWN0
IF9fZ2NvbnZfc3RlcCAqX19zdGVwczsKICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBfX2djb252X3N0
ZXBfZGF0YSBfX2RhdGEgW107Cn0gKl9fZ2NvbnZfdDsKIyA0NSAiL3Vzci9pbmNsdWRlL19HX2Nv
bmZpZy5oIiAyIDMKdHlwZWRlZiB1bmlvbgp7CiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwog
IHN0cnVjdAogIHsKICAgIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2dj
b252X3N0ZXBfZGF0YSBfX2RhdGE7CiAgfSBfX2NvbWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBl
ZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0
eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkp
Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2Rl
X18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1
dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CgojZGVmaW5lIF9HX0hBVkVfQk9PTCAxCgoKCiNk
ZWZpbmUgX0dfSEFWRV9BVEVYSVQgMQojZGVmaW5lIF9HX0hBVkVfU1lTX0NERUZTIDEKI2RlZmlu
ZSBfR19IQVZFX1NZU19XQUlUIDEKI2RlZmluZSBfR19ORUVEX1NUREFSR19IIDEKI2RlZmluZSBf
R192YV9saXN0IF9fZ251Y192YV9saXN0CgojZGVmaW5lIF9HX0hBVkVfUFJJTlRGX0ZQIDEKI2Rl
ZmluZSBfR19IQVZFX01NQVAgMQojZGVmaW5lIF9HX0hBVkVfTE9OR19ET1VCTEVfSU8gMQojZGVm
aW5lIF9HX0hBVkVfSU9fRklMRV9PUEVOIDEKI2RlZmluZSBfR19IQVZFX0lPX0dFVExJTkVfSU5G
TyAxCgojZGVmaW5lIF9HX0lPX0lPX0ZJTEVfVkVSU0lPTiAweDIwMDAxCgojZGVmaW5lIF9HX09Q
RU42NCBfX29wZW42NAojZGVmaW5lIF9HX0xTRUVLNjQgX19sc2VlazY0CiNkZWZpbmUgX0dfRlNU
QVQ2NChmZCxidWYpIF9fZnhzdGF0NjQgKF9TVEFUX1ZFUiwgZmQsIGJ1ZikKCgojZGVmaW5lIF9H
X0hBVkVfU1RfQkxLU0laRSBkZWZpbmVkIChfU1RBVEJVRl9TVF9CTEtTSVpFKQoKI2RlZmluZSBf
R19CVUZTSVogODE5MgoKCiNkZWZpbmUgX0dfTkFNRVNfSEFWRV9VTkRFUlNDT1JFIDAKI2RlZmlu
ZSBfR19WVEFCTEVfTEFCRUxfSEFTX0xFTkdUSCAxCiNkZWZpbmUgX0dfVVNJTkdfVEhVTktTIDEK
I2RlZmluZSBfR19WVEFCTEVfTEFCRUxfUFJFRklYICJfX3Z0XyIKI2RlZmluZSBfR19WVEFCTEVf
TEFCRUxfUFJFRklYX0lEIF9fdnRfCgoKCiNkZWZpbmUgX0dfQVJHUyhBUkdMSVNUKSBBUkdMSVNU
CiMgMzMgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKCiNkZWZpbmUgX0lPX3Bvc190IF9HX2Zw
b3NfdAojZGVmaW5lIF9JT19mcG9zX3QgX0dfZnBvc190CiNkZWZpbmUgX0lPX2Zwb3M2NF90IF9H
X2Zwb3M2NF90CiNkZWZpbmUgX0lPX3NpemVfdCBfR19zaXplX3QKI2RlZmluZSBfSU9fc3NpemVf
dCBfR19zc2l6ZV90CiNkZWZpbmUgX0lPX29mZl90IF9HX29mZl90CiNkZWZpbmUgX0lPX29mZjY0
X3QgX0dfb2ZmNjRfdAojZGVmaW5lIF9JT19waWRfdCBfR19waWRfdAojZGVmaW5lIF9JT191aWRf
dCBfR191aWRfdAojZGVmaW5lIF9JT19pY29udl90IF9HX2ljb252X3QKI2RlZmluZSBfSU9fSEFW
RV9TWVNfV0FJVCBfR19IQVZFX1NZU19XQUlUCiNkZWZpbmUgX0lPX0hBVkVfU1RfQkxLU0laRSBf
R19IQVZFX1NUX0JMS1NJWkUKI2RlZmluZSBfSU9fQlVGU0laIF9HX0JVRlNJWgojZGVmaW5lIF9J
T192YV9saXN0IF9HX3ZhX2xpc3QKI2RlZmluZSBfSU9fd2ludF90IF9HX3dpbnRfdAoKCgojZGVm
aW5lIF9fbmVlZF9fX3ZhX2xpc3QgCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMu
MS9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIyAzNyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4
LzMuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzCiN1bmRlZiBfX25lZWRfX192YV9saXN0CgoKCgojZGVm
aW5lIF9fR05VQ19WQV9MSVNUIAp0eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9s
aXN0OwojIDU0ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCgojdW5kZWYgX0lPX3ZhX2xpc3QK
I2RlZmluZSBfSU9fdmFfbGlzdCBfX2dudWNfdmFfbGlzdAojIDc2ICIvdXNyL2luY2x1ZGUvbGli
aW8uaCIgMwojZGVmaW5lIF9QQVJBTVMocHJvdG9zKSBfX1AocHJvdG9zKQoKCgoKCgoKI2RlZmlu
ZSBfSU9fVU5JRklFRF9KVU1QVEFCTEVTIDEKCgoKCgojZGVmaW5lIEVPRiAoLTEpCiMgMTA1ICIv
dXNyL2luY2x1ZGUvbGliaW8uaCIgMwojZGVmaW5lIF9JT1NfSU5QVVQgMQojZGVmaW5lIF9JT1Nf
T1VUUFVUIDIKI2RlZmluZSBfSU9TX0FURU5EIDQKI2RlZmluZSBfSU9TX0FQUEVORCA4CiNkZWZp
bmUgX0lPU19UUlVOQyAxNgojZGVmaW5lIF9JT1NfTk9DUkVBVEUgMzIKI2RlZmluZSBfSU9TX05P
UkVQTEFDRSA2NAojZGVmaW5lIF9JT1NfQklOIDEyOAoKCgoKCgoKI2RlZmluZSBfSU9fTUFHSUMg
MHhGQkFEMDAwMAojZGVmaW5lIF9PTERfU1RESU9fTUFHSUMgMHhGQUJDMDAwMAojZGVmaW5lIF9J
T19NQUdJQ19NQVNLIDB4RkZGRjAwMDAKI2RlZmluZSBfSU9fVVNFUl9CVUYgMQojZGVmaW5lIF9J
T19VTkJVRkZFUkVEIDIKI2RlZmluZSBfSU9fTk9fUkVBRFMgNAojZGVmaW5lIF9JT19OT19XUklU
RVMgOAojZGVmaW5lIF9JT19FT0ZfU0VFTiAweDEwCiNkZWZpbmUgX0lPX0VSUl9TRUVOIDB4MjAK
I2RlZmluZSBfSU9fREVMRVRFX0RPTlRfQ0xPU0UgMHg0MAojZGVmaW5lIF9JT19MSU5LRUQgMHg4
MAojZGVmaW5lIF9JT19JTl9CQUNLVVAgMHgxMDAKI2RlZmluZSBfSU9fTElORV9CVUYgMHgyMDAK
I2RlZmluZSBfSU9fVElFRF9QVVRfR0VUIDB4NDAwCiNkZWZpbmUgX0lPX0NVUlJFTlRMWV9QVVRU
SU5HIDB4ODAwCiNkZWZpbmUgX0lPX0lTX0FQUEVORElORyAweDEwMDAKI2RlZmluZSBfSU9fSVNf
RklMRUJVRiAweDIwMDAKI2RlZmluZSBfSU9fQkFEX1NFRU4gMHg0MDAwCiNkZWZpbmUgX0lPX1VT
RVJfTE9DSyAweDgwMDAKCgojZGVmaW5lIF9JT19TS0lQV1MgMDEKI2RlZmluZSBfSU9fTEVGVCAw
MgojZGVmaW5lIF9JT19SSUdIVCAwNAojZGVmaW5lIF9JT19JTlRFUk5BTCAwMTAKI2RlZmluZSBf
SU9fREVDIDAyMAojZGVmaW5lIF9JT19PQ1QgMDQwCiNkZWZpbmUgX0lPX0hFWCAwMTAwCiNkZWZp
bmUgX0lPX1NIT1dCQVNFIDAyMDAKI2RlZmluZSBfSU9fU0hPV1BPSU5UIDA0MDAKI2RlZmluZSBf
SU9fVVBQRVJDQVNFIDAxMDAwCiNkZWZpbmUgX0lPX1NIT1dQT1MgMDIwMDAKI2RlZmluZSBfSU9f
U0NJRU5USUZJQyAwNDAwMAojZGVmaW5lIF9JT19GSVhFRCAwMTAwMDAKI2RlZmluZSBfSU9fVU5J
VEJVRiAwMjAwMDAKI2RlZmluZSBfSU9fU1RESU8gMDQwMDAwCiNkZWZpbmUgX0lPX0RPTlRfQ0xP
U0UgMDEwMDAwMAojZGVmaW5lIF9JT19CT09MQUxQSEEgMDIwMDAwMAoKCnN0cnVjdCBfSU9fanVt
cF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMgMTcwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp0eXBl
ZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0IF9J
T19tYXJrZXIgKl9uZXh0OwogIHN0cnVjdCBfSU9fRklMRSAqX3NidWY7CgoKCiAgaW50IF9wb3M7
CiMgMTkzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp9OwoKCmVudW0gX19jb2RlY3Z0X3Jlc3Vs
dAp7CiAgX19jb2RlY3Z0X29rLAogIF9fY29kZWN2dF9wYXJ0aWFsLAogIF9fY29kZWN2dF9lcnJv
ciwKICBfX2NvZGVjdnRfbm9jb252Cn07CiMgMjYxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpz
dHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CiNkZWZpbmUgX0lPX2ZpbGVfZmxhZ3MgX2Zs
YWdzCgoKCiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNoYXIqIF9JT19yZWFkX2VuZDsKICBjaGFy
KiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9iYXNlOwogIGNoYXIqIF9JT193cml0
ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CiAgY2hh
ciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAgY2hhciAqX0lPX2JhY2t1
cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJr
ZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9i
bGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZzZXQ7CgojZGVmaW5lIF9fSEFWRV9DT0xVTU4gCgog
IHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0
OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKCgogIF9JT19sb2NrX3QgKl9sb2NrOwojIDMwNSAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDMKICBfX29mZjY0X3QgX29mZnNldDsKCgoKCgogIHZvaWQgKl9f
cGFkMTsKICB2b2lkICpfX3BhZDI7CgogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAq
IHNpemVvZiAoaW50KSAtIDIgKiBzaXplb2YgKHZvaWQgKildOwoKfTsKCgp0eXBlZGVmIHN0cnVj
dCBfSU9fRklMRSBfSU9fRklMRTsKCgpzdHJ1Y3QgX0lPX0ZJTEVfcGx1czsKCmV4dGVybiBzdHJ1
Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9w
bHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFf
c3RkZXJyXzsKCiNkZWZpbmUgX0lPX3N0ZGluICgoX0lPX0ZJTEUqKSgmX0lPXzJfMV9zdGRpbl8p
KQojZGVmaW5lIF9JT19zdGRvdXQgKChfSU9fRklMRSopKCZfSU9fMl8xX3N0ZG91dF8pKQojZGVm
aW5lIF9JT19zdGRlcnIgKChfSU9fRklMRSopKCZfSU9fMl8xX3N0ZGVycl8pKQojIDM0NCAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDMKdHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICh2b2lk
ICpfX2Nvb2tpZSwgY2hhciAqX19idWYsIHNpemVfdCBfX25ieXRlcyk7CgoKCgoKCgp0eXBlZGVm
IF9fc3NpemVfdCBfX2lvX3dyaXRlX2ZuICh2b2lkICpfX2Nvb2tpZSwgX19jb25zdCBjaGFyICpf
X2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbik7CgoKCgoK
Cgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4gKHZvaWQgKl9fY29va2llLCBfX29mZjY0X3QgKl9f
cG9zLCBpbnQgX193KTsKCgp0eXBlZGVmIGludCBfX2lvX2Nsb3NlX2ZuICh2b2lkICpfX2Nvb2tp
ZSk7CiMgMzk2ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwpleHRlcm4gaW50IF9fdW5kZXJmbG93
IChfSU9fRklMRSAqKSA7CmV4dGVybiBpbnQgX191ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4g
aW50IF9fb3ZlcmZsb3cgKF9JT19GSUxFICosIGludCkgOwpleHRlcm4gd2ludF90IF9fd3VuZGVy
ZmxvdyAoX0lPX0ZJTEUgKikgOwpleHRlcm4gd2ludF90IF9fd3VmbG93IChfSU9fRklMRSAqKSA7
CmV4dGVybiB3aW50X3QgX193b3ZlcmZsb3cgKF9JT19GSUxFICosIHdpbnRfdCkgOwoKI2RlZmlu
ZSBfSU9fZ2V0Y191bmxvY2tlZChfZnApICgoX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfZnApLT5f
SU9fcmVhZF9lbmQgPyBfX3VmbG93IChfZnApIDogKih1bnNpZ25lZCBjaGFyICopIChfZnApLT5f
SU9fcmVhZF9wdHIrKykKCgojZGVmaW5lIF9JT19wZWVrY191bmxvY2tlZChfZnApICgoX2ZwKS0+
X0lPX3JlYWRfcHRyID49IChfZnApLT5fSU9fcmVhZF9lbmQgJiYgX191bmRlcmZsb3cgKF9mcCkg
PT0gRU9GID8gRU9GIDogKih1bnNpZ25lZCBjaGFyICopIChfZnApLT5fSU9fcmVhZF9wdHIpCgoK
CiNkZWZpbmUgX0lPX3B1dGNfdW5sb2NrZWQoX2NoLF9mcCkgKCgoX2ZwKS0+X0lPX3dyaXRlX3B0
ciA+PSAoX2ZwKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfZnAsICh1bnNpZ25lZCBj
aGFyKSAoX2NoKSkgOiAodW5zaWduZWQgY2hhcikgKCooX2ZwKS0+X0lPX3dyaXRlX3B0cisrID0g
KF9jaCkpKQoKCgoKI2RlZmluZSBfSU9fZ2V0d2NfdW5sb2NrZWQoX2ZwKSAoKF9mcCktPl93aWRl
X2RhdGEtPl9JT19yZWFkX3B0ciA+PSAoX2ZwKS0+X3dpZGVfZGF0YS0+X0lPX3JlYWRfZW5kID8g
X193dWZsb3cgKF9mcCkgOiAoX0lPX3dpbnRfdCkgKihfZnApLT5fd2lkZV9kYXRhLT5fSU9fcmVh
ZF9wdHIrKykKCgojZGVmaW5lIF9JT19wdXR3Y191bmxvY2tlZChfd2NoLF9mcCkgKChfZnApLT5f
d2lkZV9kYXRhLT5fSU9fd3JpdGVfcHRyID49IChfZnApLT5fd2lkZV9kYXRhLT5fSU9fd3JpdGVf
ZW5kID8gX193b3ZlcmZsb3cgKF9mcCwgX3djaCkgOiAoX0lPX3dpbnRfdCkgKCooX2ZwKS0+X3dp
ZGVfZGF0YS0+X0lPX3dyaXRlX3B0cisrID0gKF93Y2gpKSkKCgoKCiNkZWZpbmUgX0lPX2Zlb2Zf
dW5sb2NrZWQoX19mcCkgKCgoX19mcCktPl9mbGFncyAmIF9JT19FT0ZfU0VFTikgIT0gMCkKI2Rl
ZmluZSBfSU9fZmVycm9yX3VubG9ja2VkKF9fZnApICgoKF9fZnApLT5fZmxhZ3MgJiBfSU9fRVJS
X1NFRU4pICE9IDApCgpleHRlcm4gaW50IF9JT19nZXRjIChfSU9fRklMRSAqX19mcCkgOwpleHRl
cm4gaW50IF9JT19wdXRjIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9J
T19mZW9mIChfSU9fRklMRSAqX19mcCkgOwpleHRlcm4gaW50IF9JT19mZXJyb3IgKF9JT19GSUxF
ICpfX2ZwKSA7CgpleHRlcm4gaW50IF9JT19wZWVrY19sb2NrZWQgKF9JT19GSUxFICpfX2ZwKSA7
CgoKI2RlZmluZSBfSU9fUEVORElOR19PVVRQVVRfQ09VTlQoX2ZwKSAoKF9mcCktPl9JT193cml0
ZV9wdHIgLSAoX2ZwKS0+X0lPX3dyaXRlX2Jhc2UpCgoKZXh0ZXJuIHZvaWQgX0lPX2Zsb2NrZmls
ZSAoX0lPX0ZJTEUgKikgOwpleHRlcm4gdm9pZCBfSU9fZnVubG9ja2ZpbGUgKF9JT19GSUxFICop
IDsKZXh0ZXJuIGludCBfSU9fZnRyeWxvY2tmaWxlIChfSU9fRklMRSAqKSA7CiMgNDQ4ICIvdXNy
L2luY2x1ZGUvbGliaW8uaCIgMwojZGVmaW5lIF9JT19wZWVrYyhfZnApIF9JT19wZWVrY191bmxv
Y2tlZCAoX2ZwKQojZGVmaW5lIF9JT19mbG9ja2ZpbGUoX2ZwKSAKI2RlZmluZSBfSU9fZnVubG9j
a2ZpbGUoX2ZwKSAKI2RlZmluZSBfSU9fZnRyeWxvY2tmaWxlKF9mcCkgCiNkZWZpbmUgX0lPX2Ns
ZWFudXBfcmVnaW9uX3N0YXJ0KF9mY3QsX2ZwKSAKI2RlZmluZSBfSU9fY2xlYW51cF9yZWdpb25f
ZW5kKF9Eb2l0KSAKCgpleHRlcm4gaW50IF9JT192ZnNjYW5mIChfSU9fRklMRSAqIF9fcmVzdHJp
Y3QsIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICBfX2du
dWNfdmFfbGlzdCwgaW50ICpfX3Jlc3RyaWN0KSA7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChf
SU9fRklMRSAqX19yZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fZ251Y192YV9saXN0KSA7CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4g
KF9JT19GSUxFICosIGludCwgX19zc2l6ZV90KSA7CmV4dGVybiBzaXplX3QgX0lPX3NnZXRuIChf
SU9fRklMRSAqLCB2b2lkICosIHNpemVfdCkgOwoKZXh0ZXJuIF9fb2ZmNjRfdCBfSU9fc2Vla29m
ZiAoX0lPX0ZJTEUgKiwgX19vZmY2NF90LCBpbnQsIGludCkgOwpleHRlcm4gX19vZmY2NF90IF9J
T19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCkgOwoKZXh0ZXJuIHZvaWQgX0lP
X2ZyZWVfYmFja3VwX2FyZWEgKF9JT19GSUxFICopIDsKIyA3NSAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDIgMwojIDg5ICIvdXNyL2xpYi9nY2MtbGli
L2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIF9HX2Zwb3NfdCBmcG9z
X3Q7CiMgOTggIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRpby5o
IiAzCiNkZWZpbmUgX0lPRkJGIDAKI2RlZmluZSBfSU9MQkYgMQojZGVmaW5lIF9JT05CRiAyCgoK
CgojZGVmaW5lIEJVRlNJWiBfSU9fQlVGU0laCiMgMTE4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYt
bGludXgvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwojZGVmaW5lIFNFRUtfU0VUIDAKI2RlZmluZSBT
RUVLX0NVUiAxCiNkZWZpbmUgU0VFS19FTkQgMgoKCgoKI2RlZmluZSBQX3RtcGRpciAiL3RtcCIK
IyAxMzggIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRpby5oIiAz
CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMwojIDI0ICIvdXNyL2luY2x1
ZGUvYml0cy9zdGRpb19saW0uaCIgMwojZGVmaW5lIExfdG1wbmFtIDIwCiNkZWZpbmUgVE1QX01B
WCAyMzgzMjgKI2RlZmluZSBGSUxFTkFNRV9NQVggNDA5NgoKCiNkZWZpbmUgTF9jdGVybWlkIDkK
I2RlZmluZSBMX2N1c2VyaWQgOQoKCgoKCiNkZWZpbmUgRk9QRU5fTUFYIDE2CiMgMTM5ICIvdXNy
L2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCmV4dGVy
biBGSUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91dDsKZXh0ZXJuIEZJTEUgKnN0ZGVycjsK
CiNkZWZpbmUgc3RkaW4gc3RkaW4KI2RlZmluZSBzdGRvdXQgc3Rkb3V0CiNkZWZpbmUgc3RkZXJy
IHN0ZGVycgoKCmV4dGVybiBpbnQgcmVtb3ZlIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIDsK
CmV4dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0IGNoYXIgKl9f
bmV3KSA7CgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZSAodm9pZCkgOwojIDE3MCAiL3Vzci9saWIv
Z2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGNoYXIgKnRt
cG5hbSAoY2hhciAqX19zKSA7CgoKCgpleHRlcm4gY2hhciAqdG1wbmFtX3IgKGNoYXIgKl9fcykg
OwojIDE4NyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGlvLmgi
IDMKZXh0ZXJuIGNoYXIgKnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hh
ciAqX19wZngpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBp
bnQgZmNsb3NlIChGSUxFICpfX3N0cmVhbSkgOwoKZXh0ZXJuIGludCBmZmx1c2ggKEZJTEUgKl9f
c3RyZWFtKSA7CgoKCmV4dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkg
OwojIDIxMCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGlvLmgi
IDMKZXh0ZXJuIEZJTEUgKmZvcGVuIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFt
ZSwKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2Rlcykg
OwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVu
YW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9k
ZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CiMg
MjQwICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gRklMRSAqZmRvcGVuIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSA7CiMg
MjYzICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwpl
eHRlcm4gdm9pZCBzZXRidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYpIDsKCgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgIGludCBf
X21vZGVzLCBzaXplX3QgX19uKSA7CgoKCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgKEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IF9fc2l6ZSkgOwoKCmV4dGVybiB2b2lkIHNldGxpbmVidWYgKEZJTEUg
Kl9fc3RyZWFtKSA7CgoKCgpleHRlcm4gaW50IGZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19z
dHJlYW0sCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LCAuLi4pIDsKCmV4dGVybiBpbnQgcHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9f
cywKICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs
IC4uLikgOwoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIF9fZ251
Y192YV9saXN0IF9fYXJnKSA7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgOwoKZXh0ZXJuIGlu
dCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIDsK
CgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21h
eGxlbiwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMs
IDQpKSk7CgpleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVf
dCBfX21heGxlbiwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
Zm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7CiMgMzM0ICIvdXNyL2xpYi9nY2MtbGliL2kz
ODYtbGludXgvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAq
X19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNjYW5mIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwojIDM2MCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxp
bnV4LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJl
YW0pIDsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgZ2V0
Y2hhciAodm9pZCkgOwoKCgojZGVmaW5lIGdldGMoX2ZwKSBfSU9fZ2V0YyAoX2ZwKQoKCgpleHRl
cm4gaW50IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZ2V0Y2hh
cl91bmxvY2tlZCAodm9pZCkgOwoKCgoKZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAoRklMRSAq
X19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFt
KSA7CmV4dGVybiBpbnQgcHV0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIDsKCgpleHRlcm4g
aW50IHB1dGNoYXIgKGludCBfX2MpIDsKCgoKI2RlZmluZSBwdXRjKF9jaCxfZnApIF9JT19wdXRj
IChfY2gsIF9mcCkKCgoKZXh0ZXJuIGludCBmcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAq
X19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAq
X19zdHJlYW0pIDsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSA7CgoKCgoK
ZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiBpbnQgcHV0dyAoaW50
IF9fdywgRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBjaGFyICpmZ2V0cyAoY2hhciAqX19y
ZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgOwoj
IDQyNiAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMK
ZXh0ZXJuIGNoYXIgKmdldHMgKGNoYXIgKl9fcykgOwojIDQ1MCAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIGludCBmcHV0cyAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICA7
CiMgNDYwICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkaW8uaCIg
MwpleHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCmV4dGVybiBpbnQgdW5n
ZXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgOwoKCgpleHRlcm4gc2l6ZV90IGZyZWFkICh2
b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgpleHRlcm4gc2l6ZV90
IGZ3cml0ZSAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAog
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3MpIDsK
CgoKZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwg
c2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwg
RklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tl
ZCAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgOwoKCgoKZXh0ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9f
b2ZmLCBpbnQgX193aGVuY2UpIDsKCmV4dGVybiBsb25nIGludCBmdGVsbCAoRklMRSAqX19zdHJl
YW0pIDsKCmV4dGVybiB2b2lkIHJld2luZCAoRklMRSAqX19zdHJlYW0pIDsKIyA1MDQgIi91c3Iv
bGliL2djYy1saWIvaTM4Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQg
ZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvc190ICpfX3Jlc3RyaWN0IF9f
cG9zKQogICAgIDsKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAqX19zdHJlYW0sIF9fY29uc3Qg
ZnBvc190ICpfX3BvcykgOwojIDU0MCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9p
bmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJTEUgKl9fc3RyZWFtKSA7
CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSA7CgpleHRlcm4gaW50IGZlcnJvciAo
RklMRSAqX19zdHJlYW0pIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQgKEZJTEUg
Kl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIDsK
ZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCgpleHRlcm4g
dm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAqX19zKSA7CgoKCgpleHRlcm4gaW50IHN5c19uZXJy
OwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107CiMgNTcxICIvdXNy
L2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50
IGZpbGVubyAoRklMRSAqX19zdHJlYW0pIDsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2Vk
IChGSUxFICpfX3N0cmVhbSkgOwoKCgoKCgpleHRlcm4gRklMRSAqcG9wZW4gKF9fY29uc3QgY2hh
ciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIDsKCgpleHRlcm4gaW50IHBjbG9z
ZSAoRklMRSAqX19zdHJlYW0pIDsKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19z
KSA7CiMgNjE4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkaW8u
aCIgMwpleHRlcm4gdm9pZCBmbG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSA7CgoKCmV4dGVybiBp
bnQgZnRyeWxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkgOwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tm
aWxlIChGSUxFICpfX3N0cmVhbSkgOwojIDYzOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4
LzMuMS9pbmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAx
IDMKIyAyNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwojZGVmaW5lIF9fU1RESU9fSU5M
SU5FIGV4dGVybiBfX2lubGluZQoKCgoKCmV4dGVybiBfX2lubGluZSBpbnQKdnByaW50ZiAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKewogIHJl
dHVybiB2ZnByaW50ZiAoc3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKZXh0ZXJuIF9faW5saW5l
IGludApnZXRjaGFyICh2b2lkKQp7CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7Cn0KCgoKCmV4
dGVybiBfX2lubGluZSBpbnQKZ2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkKewogIHJldHVybiAo
KF9fZnApLT5fSU9fcmVhZF9wdHIgPj0gKF9fZnApLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChf
X2ZwKSA6ICoodW5zaWduZWQgY2hhciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisrKTsKfQoKCmV4
dGVybiBfX2lubGluZSBpbnQKZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkKewogIHJldHVybiAoKHN0
ZGluKS0+X0lPX3JlYWRfcHRyID49IChzdGRpbiktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKHN0
ZGluKSA6ICoodW5zaWduZWQgY2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgoK
CmV4dGVybiBfX2lubGluZSBpbnQKcHV0Y2hhciAoaW50IF9fYykKewogIHJldHVybiBfSU9fcHV0
YyAoX19jLCBzdGRvdXQpOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgaW50CmZwdXRjX3VubG9ja2Vk
IChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9JT193
cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfX3N0
cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVh
bSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgaW50
CnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuICgoKF9f
c3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSA/IF9f
b3ZlcmZsb3cgKF9fc3RyZWFtLCAodW5zaWduZWQgY2hhcikgKF9fYykpIDogKHVuc2lnbmVkIGNo
YXIpICgqKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0cisrID0gKF9fYykpKTsKfQoKCmV4dGVybiBf
X2lubGluZSBpbnQKcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykKewogIHJldHVybiAoKChzdGRv
dXQpLT5fSU9fd3JpdGVfcHRyID49IChzdGRvdXQpLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZs
b3cgKHN0ZG91dCwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihz
dGRvdXQpLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CiMgMTExICIvdXNyL2luY2x1ZGUv
Yml0cy9zdGRpby5oIiAzCmV4dGVybiBfX2lubGluZSBpbnQKZmVvZl91bmxvY2tlZCAoRklMRSAq
X19zdHJlYW0pCnsKICByZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDEwKSAhPSAwKTsK
fQoKCmV4dGVybiBfX2lubGluZSBpbnQKZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkK
ewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MjApICE9IDApOwp9CgoKCgoKCgoj
ZGVmaW5lIGZyZWFkX3VubG9ja2VkKHB0cixzaXplLG4sc3RyZWFtKSAoX19leHRlbnNpb25fXyAo
KF9fYnVpbHRpbl9jb25zdGFudF9wIChzaXplKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAobikg
JiYgKHNpemVfdCkgKChzaXplKSAqIChuKSkgPD0gOCAmJiAoc2l6ZSkgIT0gMCkgPyAoeyBjaGFy
ICpfX3B0ciA9IChjaGFyICopIChwdHIpOyBGSUxFICpfX3N0cmVhbSA9IChzdHJlYW0pOyBzaXpl
X3QgX19jbnQ7IGZvciAoX19jbnQgPSAoc2l6ZSkgKiAobik7IF9fY250ID4gMDsgLS1fX2NudCkg
eyBpbnQgX19jID0gX0lPX2dldGNfdW5sb2NrZWQgKF9fc3RyZWFtKTsgaWYgKF9fYyA9PSBFT0Yp
IGJyZWFrOyAqX19wdHIrKyA9IF9fYzsgfSAoKHNpemVfdCkgKChzaXplKSAqIChuKSkgLSBfX2Nu
dCkgLyAoc2l6ZSk7IH0pIDogKCgoX19idWlsdGluX2NvbnN0YW50X3AgKHNpemUpICYmIChzaXpl
KSA9PSAwKSB8fCAoX19idWlsdGluX2NvbnN0YW50X3AgKG4pICYmIChuKSA9PSAwKSkgPyAoKHZv
aWQpIChwdHIpLCAodm9pZCkgKHN0cmVhbSksICh2b2lkKSAoc2l6ZSksICh2b2lkKSAobiksIDAp
IDogZnJlYWRfdW5sb2NrZWQgKHB0ciwgc2l6ZSwgbiwgc3RyZWFtKSkpKQojIDE1MSAiL3Vzci9p
bmNsdWRlL2JpdHMvc3RkaW8uaCIgMwojZGVmaW5lIGZ3cml0ZV91bmxvY2tlZChwdHIsc2l6ZSxu
LHN0cmVhbSkgKF9fZXh0ZW5zaW9uX18gKChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc2l6ZSkgJiYg
X19idWlsdGluX2NvbnN0YW50X3AgKG4pICYmIChzaXplX3QpICgoc2l6ZSkgKiAobikpIDw9IDgg
JiYgKHNpemUpICE9IDApID8gKHsgY29uc3QgY2hhciAqX19wdHIgPSAoY29uc3QgY2hhciAqKSAo
cHRyKTsgRklMRSAqX19zdHJlYW0gPSAoc3RyZWFtKTsgc2l6ZV90IF9fY250OyBmb3IgKF9fY250
ID0gKHNpemUpICogKG4pOyBfX2NudCA+IDA7IC0tX19jbnQpIGlmIChfSU9fcHV0Y191bmxvY2tl
ZCAoKl9fcHRyKyssIF9fc3RyZWFtKSA9PSBFT0YpIGJyZWFrOyAoKHNpemVfdCkgKChzaXplKSAq
IChuKSkgLSBfX2NudCkgLyAoc2l6ZSk7IH0pIDogKCgoX19idWlsdGluX2NvbnN0YW50X3AgKHNp
emUpICYmIChzaXplKSA9PSAwKSB8fCAoX19idWlsdGluX2NvbnN0YW50X3AgKG4pICYmIChuKSA9
PSAwKSkgPyAoKHZvaWQpIChwdHIpLCAodm9pZCkgKHN0cmVhbSksICh2b2lkKSAoc2l6ZSksIG4p
IDogZndyaXRlX3VubG9ja2VkIChwdHIsIHNpemUsIG4sIHN0cmVhbSkpKSkKIyAxNjkgIi91c3Iv
aW5jbHVkZS9iaXRzL3N0ZGlvLmgiIDMKI3VuZGVmIF9fU1RESU9fSU5MSU5FCiMgNjQwICIvdXNy
L2xpYi9nY2MtbGliL2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCiMgNDEg
Ii4uL2dsb2JhbC5oIiAyCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIyAyOCAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAzCiNkZWZpbmUgX19uZWVkX3NpemVfdCAKCiNkZWZpbmUgX19u
ZWVkX3djaGFyX3QgCiNkZWZpbmUgX19uZWVkX05VTEwgCgojIDEgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjIxICIvdXNyL2xpYi9nY2Mt
bGliL2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKI3VuZGVmIF9fbmVlZF9zaXpl
X3QKIyAzMTEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRkZWYu
aCIgMwojdW5kZWYgX19uZWVkX3djaGFyX3QKIyAzNjQgIi91c3IvbGliL2djYy1saWIvaTM4Ni1s
aW51eC8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwojdW5kZWYgTlVMTAoKCgoKI2RlZmluZSBOVUxM
ICgodm9pZCAqKTApCgoKCgoKI3VuZGVmIF9fbmVlZF9OVUxMCiMgMzQgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMiAzCgoKCgojZGVmaW5lIF9TVERMSUJfSCAxCiMgOTQgIi91c3IvaW5jbHVkZS9z
dGRsaWIuaCIgMwp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwogICAgaW50IHJlbTsK
ICB9IGRpdl90OwoKCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CiAgICBs
b25nIGludCByZW07CiAgfSBsZGl2X3Q7CiNkZWZpbmUgX19sZGl2X3RfZGVmaW5lZCAxCiMgMTIy
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKI2RlZmluZSBSQU5EX01BWCAyMTQ3NDgzNjQ3CgoK
CgojZGVmaW5lIEVYSVRfRkFJTFVSRSAxCiNkZWZpbmUgRVhJVF9TVUNDRVNTIDAKCgoKI2RlZmlu
ZSBNQl9DVVJfTUFYIChfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICgpKQpleHRlcm4gc2l6ZV90IF9f
Y3R5cGVfZ2V0X21iX2N1cl9tYXggKHZvaWQpIDsKCgoKZXh0ZXJuIGRvdWJsZSBhdG9mIChfX2Nv
bnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50
IGF0b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
CmV4dGVybiBsb25nIGludCBhdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgYXRv
bGwgKF9fY29uc3QgY2hhciAqX19ucHRyKQogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwoKCgpleHRlcm4gZG91YmxlIHN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSA7CiMg
MTYzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCmV4dGVybiB1bnNpZ25lZCBs
b25nIGludCBzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpCiAgICAgOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0
cnRvcSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgOwoKX19l
eHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VxIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CgoK
CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCAoX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIDsKCl9fZXh0ZW5zaW9uX18KZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy
ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICA7CiMgMjUwICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5hbCAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKQogICAgIDsKZXh0ZXJu
IGZsb2F0IF9fc3RydG9mX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLCBpbnQgX19ncm91cCkKICAgICA7CmV4dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50
ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19ncm91cCkgOwoKZXh0ZXJuIGxv
bmcgaW50IF9fc3RydG9sX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGlu
dCBfX2dyb3VwKSA7CiNkZWZpbmUgX19zdHJ0b2xfaW50ZXJuYWxfZGVmaW5lZCAxCgoKZXh0ZXJu
IHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSA7CiNkZWZpbmUgX19z
dHJ0b3VsX2ludGVybmFsX2RlZmluZWQgMQoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxv
bmcgaW50IF9fc3RydG9sbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19iYXNlLCBpbnQgX19ncm91cCkgOwojZGVmaW5lIF9fc3RydG9sbF9pbnRlcm5hbF9kZWZp
bmVkIDEKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3Ry
dG91bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBf
X2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApCiAgICAgOwojZGVmaW5lIF9fc3RydG91bGxfaW50
ZXJuYWxfZGVmaW5lZCAxCgoKCgoKCmV4dGVybiBfX2lubGluZSBkb3VibGUKc3RydG9kIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikK
ewogIHJldHVybiBfX3N0cnRvZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0
ZXJuIF9faW5saW5lIGxvbmcgaW50CnN0cnRvbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgaW50IF9fYmFzZSkKewog
IHJldHVybiBfX3N0cnRvbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsK
fQpleHRlcm4gX19pbmxpbmUgdW5zaWduZWQgbG9uZyBpbnQKc3RydG91bCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAg
IGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5k
cHRyLCBfX2Jhc2UsIDApOwp9CiMgMzI1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKX19leHRl
bnNpb25fXyBleHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b3EgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAg
IGludCBfX2Jhc2UpCnsKICByZXR1cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5k
cHRyLCBfX2Jhc2UsIDApOwp9Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVk
IGxvbmcgbG9uZyBpbnQKc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg
Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGludCBfX2Jhc2UpCnsKICByZXR1
cm4gX19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoK
CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvbGwgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LAogICAgICAgICBpbnQgX19iYXNlKQp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19u
cHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGlu
ZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50CnN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKiBfX3Jlc3Ry
aWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgICBpbnQgX19i
YXNlKQp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIsIF9f
YmFzZSwgMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlCmF0b2YgKF9fY29uc3QgY2hhciAq
X19ucHRyKQp7CiAgcmV0dXJuIHN0cnRvZCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkp
Owp9CmV4dGVybiBfX2lubGluZSBpbnQKYXRvaSAoX19jb25zdCBjaGFyICpfX25wdHIpCnsKICBy
ZXR1cm4gKGludCkgc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9
CmV4dGVybiBfX2lubGluZSBsb25nIGludAphdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKewog
IHJldHVybiBzdHJ0b2wgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0KCgpf
X2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CmF0b2xsIChfX2NvbnN0
IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2xsIChfX25wdHIsIChjaGFyICoqKSAoKHZv
aWQgKikwKSwgMTApOwp9CiMgMzg0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNo
YXIgKmw2NGEgKGxvbmcgaW50IF9fbikgOwoKCmV4dGVybiBsb25nIGludCBhNjRsIChfX2NvbnN0
IGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKI2Rl
ZmluZSBfU1lTX1RZUEVTX0ggMQoKCgoKCgoKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlw
ZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9f
dV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRf
dCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CiNkZWZpbmUgX191X2NoYXJfZGVm
aW5lZCAKCgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9f
dDsKCgoKI2RlZmluZSBfX2lub190X2RlZmluZWQgCgoKCgoKCgp0eXBlZGVmIF9fZGV2X3QgZGV2
X3Q7CiNkZWZpbmUgX19kZXZfdF9kZWZpbmVkIAoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CiNk
ZWZpbmUgX19naWRfdF9kZWZpbmVkIAojIDc2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMK
dHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKI2RlZmluZSBfX25saW5rX3RfZGVmaW5lZCAKCgoK
dHlwZWRlZiBfX3VpZF90IHVpZF90OwojZGVmaW5lIF9fdWlkX3RfZGVmaW5lZCAKIyA5OSAiL3Vz
ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19waWRfdCBwaWRfdDsKI2RlZmluZSBf
X3BpZF90X2RlZmluZWQgCgoKCnR5cGVkZWYgX19pZF90IGlkX3Q7CiNkZWZpbmUgX19pZF90X2Rl
ZmluZWQgCiMgMTE1ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBfX2RhZGRy
X3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKI2RlZmluZSBfX2RhZGRyX3Rf
ZGVmaW5lZCAKCgoKCnR5cGVkZWYgX19rZXlfdCBrZXlfdDsKI2RlZmluZSBfX2tleV90X2RlZmlu
ZWQgCgoKCgoKI2RlZmluZSBfX25lZWRfdGltZV90IAojZGVmaW5lIF9fbmVlZF90aW1lcl90IAoj
ZGVmaW5lIF9fbmVlZF9jbG9ja2lkX3QgCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiMg
NjUgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKI2RlZmluZSBfX3RpbWVfdF9kZWZpbmVkIDEKCgoK
CnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKCiN1bmRlZiBfX25lZWRfdGltZV90CgoKCiNkZWZp
bmUgX19jbG9ja2lkX3RfZGVmaW5lZCAxCgoKCgp0eXBlZGVmIF9fY2xvY2tpZF90IGNsb2NraWRf
dDsKCgoKCgoKI2RlZmluZSBfX3RpbWVyX3RfZGVmaW5lZCAxCgoKCgp0eXBlZGVmIF9fdGltZXJf
dCB0aW1lcl90OwoKCiN1bmRlZiBfX25lZWRfdGltZXJfdAojIDEzMyAiL3Vzci9pbmNsdWRlL3N5
cy90eXBlcy5oIiAyIDMKIyAxNDUgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojZGVmaW5l
IF9fbmVlZF9zaXplX3QgCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMKIyAyMjEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjEv
aW5jbHVkZS9zdGRkZWYuaCIgMwojdW5kZWYgX19uZWVkX3NpemVfdAojIDE0NyAiL3Vzci9pbmNs
dWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1
aW50OwojIDE4MyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiNkZWZpbmUgX19pbnROX3Qo
TixNT0RFKSB0eXBlZGVmIGludCBpbnQgIyNOICMjX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9f
IChNT0RFKSkpCgojZGVmaW5lIF9fdV9pbnROX3QoTixNT0RFKSB0eXBlZGVmIHVuc2lnbmVkIGlu
dCB1X2ludCAjI04gIyNfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKE1PREUpKSkKCgoKI2Rl
ZmluZSBfX2ludDhfdF9kZWZpbmVkIAp0eXBlZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAo
KF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgaW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAo
KF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAo
KF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAo
KF9fbW9kZV9fIChfX0RJX18pKSk7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1FJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVf
aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgdV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0
eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChf
X0RJX18pKSk7Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVf
XyAoX193b3JkX18pKSk7CgoKCgoKI2RlZmluZSBfX0JJVF9UWVBFU19ERUZJTkVEX18gMQoKCgoK
IyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMwojIDIwICIvdXNyL2luY2x1ZGUvZW5kaWFu
LmgiIDMKI2RlZmluZSBfRU5ESUFOX0ggMQojIDMyICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMK
I2RlZmluZSBfX0xJVFRMRV9FTkRJQU4gMTIzNAojZGVmaW5lIF9fQklHX0VORElBTiA0MzIxCiNk
ZWZpbmUgX19QRFBfRU5ESUFOIDM0MTIKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2VuZGlhbi5o
IiAxIDMKCgoKCgoKI2RlZmluZSBfX0JZVEVfT1JERVIgX19MSVRUTEVfRU5ESUFOCiMgMzggIi91
c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCgoKCgojZGVmaW5lIF9fRkxPQVRfV09SRF9PUkRFUiBf
X0JZVEVfT1JERVIKCgoKI2RlZmluZSBMSVRUTEVfRU5ESUFOIF9fTElUVExFX0VORElBTgojZGVm
aW5lIEJJR19FTkRJQU4gX19CSUdfRU5ESUFOCiNkZWZpbmUgUERQX0VORElBTiBfX1BEUF9FTkRJ
QU4KI2RlZmluZSBCWVRFX09SREVSIF9fQllURV9PUkRFUgoKCgojZGVmaW5lIF9fTE9OR19MT05H
X1BBSVIoSEksTE8pIExPLCBISQojIDIxMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK
CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUv
c3lzL3NlbGVjdC5oIiAzCiNkZWZpbmUgX1NZU19TRUxFQ1RfSCAxCgoKCgoKCgojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0
LmgiIDMKI2RlZmluZSBfX0ZEX1pFUk8oZmRzcCkgZG8geyBpbnQgX19kMCwgX19kMTsgX19hc21f
XyBfX3ZvbGF0aWxlX18gKCJjbGQ7IHJlcDsgc3Rvc2wiIDogIj1jIiAoX19kMCksICI9RCIgKF9f
ZDEpIDogImEiICgwKSwgIjAiIChzaXplb2YgKGZkX3NldCkgLyBzaXplb2YgKF9fZmRfbWFzaykp
LCAiMSIgKCZfX0ZEU19CSVRTIChmZHNwKVswXSkgOiAibWVtb3J5Iik7IH0gd2hpbGUgKDApCiMg
MzcgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAzCiNkZWZpbmUgX19GRF9TRVQoZmQsZmRz
cCkgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJidHNsICUxLCUwIiA6ICI9bSIgKF9fRkRTX0JJVFMg
KGZkc3ApW19fRkRFTFQgKGZkKV0pIDogInIiICgoKGludCkgKGZkKSkgJSBfX05GREJJVFMpIDog
ImNjIiwibWVtb3J5IikKCgoKCiNkZWZpbmUgX19GRF9DTFIoZmQsZmRzcCkgX19hc21fXyBfX3Zv
bGF0aWxlX18gKCJidHJsICUxLCUwIiA6ICI9bSIgKF9fRkRTX0JJVFMgKGZkc3ApW19fRkRFTFQg
KGZkKV0pIDogInIiICgoKGludCkgKGZkKSkgJSBfX05GREJJVFMpIDogImNjIiwibWVtb3J5IikK
CgoKCiNkZWZpbmUgX19GRF9JU1NFVChmZCxmZHNwKSAoX19leHRlbnNpb25fXyAoe3JlZ2lzdGVy
IGNoYXIgX19yZXN1bHQ7IF9fYXNtX18gX192b2xhdGlsZV9fICgiYnRsICUxLCUyIDsgc2V0Y2Ig
JWIwIiA6ICI9cSIgKF9fcmVzdWx0KSA6ICJyIiAoKChpbnQpIChmZCkpICUgX19ORkRCSVRTKSwg
Im0iIChfX0ZEU19CSVRTIChmZHNwKVtfX0ZERUxUIChmZCldKSA6ICJjYyIpOyBfX3Jlc3VsdDsg
fSkpCiMgMzIgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNs
dWRlL2JpdHMvc2lnc2V0LmgiIDEgMwojIDIxICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIg
MwojZGVmaW5lIF9TSUdTRVRfSF90eXBlcyAxCgp0eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsK
CgoKI2RlZmluZSBfU0lHU0VUX05XT1JEUyAoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBs
b25nIGludCkpKQp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdmFs
WygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpXTsKICB9IF9fc2lnc2V0
X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiNkZWZpbmUgX19zaWdz
ZXRfdF9kZWZpbmVkIAp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CgoKCiNkZWZpbmUgX19u
ZWVkX3RpbWVfdCAKI2RlZmluZSBfX25lZWRfdGltZXNwZWMgCiMgMSAiL3Vzci9pbmNsdWRlL3Rp
bWUuaCIgMSAzCiMgNzMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKI3VuZGVmIF9fbmVlZF90aW1l
X3QKIyAxMDIgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKI2RlZmluZSBfX3RpbWVzcGVjX2RlZmlu
ZWQgMQoKCgpzdHJ1Y3QgdGltZXNwZWMKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAgICBsb25n
IGludCB0dl9uc2VjOwogIH07CgoKI3VuZGVmIF9fbmVlZF90aW1lc3BlYwojIDQ1ICIvdXNyL2lu
Y2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKI2RlZmluZSBfX25lZWRfdGltZXZhbCAKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy90aW1lLmgiIDEgMwojIDYwICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgi
IDMKI3VuZGVmIF9fbmVlZF90aW1ldmFsCgojZGVmaW5lIF9TVFJVQ1RfVElNRVZBTCAxCgoKCgpz
dHJ1Y3QgdGltZXZhbAogIHsKICAgIF9fdGltZV90IHR2X3NlYzsKICAgIF9fc3VzZWNvbmRzX3Qg
dHZfdXNlYzsKICB9OwojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgp0eXBl
ZGVmIF9fc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CiNkZWZpbmUgX19zdXNlY29uZHNfdF9kZWZp
bmVkIAoKCgoKdHlwZWRlZiBsb25nIGludCBfX2ZkX21hc2s7CgoKI2RlZmluZSBfX05GREJJVFMg
KDggKiBzaXplb2YgKF9fZmRfbWFzaykpCiNkZWZpbmUgX19GREVMVChkKSAoKGQpIC8gX19ORkRC
SVRTKQojZGVmaW5lIF9fRkRNQVNLKGQpICgoX19mZF9tYXNrKSAxIDw8ICgoZCkgJSBfX05GREJJ
VFMpKQoKCnR5cGVkZWYgc3RydWN0CiAgewoKCgoKCgogICAgX19mZF9tYXNrIF9fZmRzX2JpdHNb
MTAyNCAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKV07CiNkZWZpbmUgX19GRFNfQklUUyhzZXQp
ICgoc2V0KS0+X19mZHNfYml0cykKCiAgfSBmZF9zZXQ7CgoKI2RlZmluZSBGRF9TRVRTSVpFIF9f
RkRfU0VUU0laRQoKCgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKCiNkZWZpbmUgTkZEQklU
UyBfX05GREJJVFMKCgoKCiNkZWZpbmUgRkRfU0VUKGZkLGZkc2V0cCkgX19GRF9TRVQgKGZkLCBm
ZHNldHApCiNkZWZpbmUgRkRfQ0xSKGZkLGZkc2V0cCkgX19GRF9DTFIgKGZkLCBmZHNldHApCiNk
ZWZpbmUgRkRfSVNTRVQoZmQsZmRzZXRwKSBfX0ZEX0lTU0VUIChmZCwgZmRzZXRwKQojZGVmaW5l
IEZEX1pFUk8oZmRzZXRwKSBfX0ZEX1pFUk8gKGZkc2V0cCkKCgoKCgoKCgoKZXh0ZXJuIGludCBz
ZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCiAgICAgICAg
ICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgICAgICAgICAg
ICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAgICAgICAgICAgICAgIHN0
cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCkgOwojIDExOCAiL3Vzci9pbmNsdWRl
L3N5cy9zZWxlY3QuaCIgMwoKIyAyMTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoK
IyAxICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIiAxIDMKIyAyMSAiL3Vzci9pbmNsdWRl
L3N5cy9zeXNtYWNyb3MuaCIgMwojZGVmaW5lIF9TWVNfU1lTTUFDUk9TX0ggMQoKCgoKCgojZGVm
aW5lIG1ham9yKGRldikgKChpbnQpKCgoZGV2KSA+PiA4KSAmIDB4ZmYpKQojZGVmaW5lIG1pbm9y
KGRldikgKChpbnQpKChkZXYpICYgMHhmZikpCiNkZWZpbmUgbWFrZWRldihtYWpvcixtaW5vcikg
KCgoKHVuc2lnbmVkIGludCkgKG1ham9yKSkgPDwgOCkgfCAoKHVuc2lnbmVkIGludCkgKG1pbm9y
KSkpCiMgMjE5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDIzMCAiL3Vzci9pbmNs
dWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19ibGtjbnRfdCBibGtjbnRfdDsKI2RlZmluZSBf
X2Jsa2NudF90X2RlZmluZWQgCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKI2Rl
ZmluZSBfX2ZzYmxrY250X3RfZGVmaW5lZCAKCgp0eXBlZGVmIF9fZnNmaWxjbnRfdCBmc2ZpbGNu
dF90OwojZGVmaW5lIF9fZnNmaWxjbnRfdF9kZWZpbmVkIAojIDI2MiAiL3Vzci9pbmNsdWRlL3N5
cy90eXBlcy5oIiAzCgojIDM5MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCgoKZXh0
ZXJuIGxvbmcgaW50IHJhbmRvbSAodm9pZCkgOwoKCmV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2ln
bmVkIGludCBfX3NlZWQpIDsKCgoKCgpleHRlcm4gY2hhciAqaW5pdHN0YXRlICh1bnNpZ25lZCBp
bnQgX19zZWVkLCBjaGFyICpfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgX19zdGF0ZWxlbikgOwoKCgpleHRlcm4gY2hhciAqc2V0c3RhdGUgKGNoYXIgKl9fc3RhdGVi
dWYpIDsKCgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsKICAgIGludDMyX3QgKmZwdHI7CiAg
ICBpbnQzMl90ICpycHRyOwogICAgaW50MzJfdCAqc3RhdGU7CiAgICBpbnQgcmFuZF90eXBlOwog
ICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2VwOwogICAgaW50MzJfdCAqZW5kX3B0cjsK
ICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0
IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0
KSA7CgpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJh
bmRvbV9kYXRhICpfX2J1ZikgOwoKZXh0ZXJuIGludCBpbml0c3RhdGVfciAodW5zaWduZWQgaW50
IF9fc2VlZCwgY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAogICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgX19zdGF0ZWxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJh
bmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSA7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgKGNo
YXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg
cmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpIDsKCgoKCgpleHRlcm4gaW50IHJhbmQgKHZv
aWQpIDsKCmV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25lZCBpbnQgX19zZWVkKSA7CgoKCmV4dGVy
biBpbnQgcmFuZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkgOwoKCgoKCgoKZXh0ZXJuIGRvdWJs
ZSBkcmFuZDQ4ICh2b2lkKSA7CmV4dGVybiBkb3VibGUgZXJhbmQ0OCAodW5zaWduZWQgc2hvcnQg
aW50IF9feHN1YmlbM10pIDsKCgpleHRlcm4gbG9uZyBpbnQgbHJhbmQ0OCAodm9pZCkgOwpleHRl
cm4gbG9uZyBpbnQgbnJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIDsKCgpl
eHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkgOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0OCAo
dW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIDsKCgpleHRlcm4gdm9pZCBzcmFuZDQ4IChs
b25nIGludCBfX3NlZWR2YWwpIDsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCAqc2VlZDQ4ICh1
bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSA7CmV4dGVybiB2b2lkIGxjb25nNDggKHVu
c2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddKSA7CgoKCgoKc3RydWN0IGRyYW5kNDhfZGF0YQog
IHsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3hbM107CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQg
X19vbGRfeFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2M7CiAgICB1bnNpZ25lZCBzaG9y
dCBpbnQgX19pbml0OwogICAgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX2E7CiAgfTsKCgpleHRl
cm4gaW50IGRyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZl
ciwKICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgOwpl
eHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAg
ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVy
LAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSA7CgoK
ZXh0ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19i
dWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3Vs
dCkgOwpleHRlcm4gaW50IG5yYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10s
CiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9f
YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1
bHQpIDsKCgpleHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0
cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0
IF9fcmVzdWx0KSA7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194
c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVz
dHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmlj
dCBfX3Jlc3VsdCkgOwoKCmV4dGVybiBpbnQgc3JhbmQ0OF9yIChsb25nIGludCBfX3NlZWR2YWws
IHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKQogICAgIDsKCmV4dGVybiBpbnQgc2VlZDQ4
X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSA7CgpleHRlcm4gaW50IGxjb25nNDhfciAo
dW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgOwoKCgoKCgojZGVmaW5lIF9fbWFsbG9jX2FuZF9j
YWxsb2NfZGVmaW5lZCAKCmV4dGVybiB2b2lkICptYWxsb2MgKHNpemVfdCBfX3NpemUpIF9fYXR0
cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3QgX19u
bWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoK
CgoKCmV4dGVybiB2b2lkICpyZWFsbG9jICh2b2lkICpfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgX19h
dHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCmV4dGVybiB2b2lkIGZyZWUgKHZvaWQgKl9fcHRy
KSA7CgoKCmV4dGVybiB2b2lkIGNmcmVlICh2b2lkICpfX3B0cikgOwoKCgojIDEgIi91c3IvaW5j
bHVkZS9hbGxvY2EuaCIgMSAzCiMgMjAgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMwojZGVmaW5l
IF9BTExPQ0FfSCAxCgoKCiNkZWZpbmUgX19uZWVkX3NpemVfdCAKIyAxICIvdXNyL2xpYi9nY2Mt
bGliL2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDIyMSAiL3Vzci9saWIv
Z2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1bmRlZiBfX25lZWRf
c2l6ZV90CiMgMjYgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKCgoKCgpleHRlcm4gdm9p
ZCAqYWxsb2NhIChzaXplX3QgX19zaXplKSA7CgoKI2RlZmluZSBhbGxvY2Eoc2l6ZSkgX19idWls
dGluX2FsbG9jYSAoc2l6ZSkKCgoKIyA1NDcgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoK
CgpleHRlcm4gdm9pZCAqdmFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19t
YWxsb2NfXykpOwojIDU2MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkIGFi
b3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCmV4dGVybiBpbnQg
YXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkpIDsKCgoKCmV4dGVybiBpbnQgb25fZXhpdCAo
dm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykK
ICAgICA7CgoKCgoKZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9f
ICgoX19ub3JldHVybl9fKSk7CiMgNTg3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJu
IGNoYXIgKmdldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKZXh0ZXJuIGNoYXIgKl9f
c2VjdXJlX2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKCgpleHRlcm4gaW50IHB1
dGVudiAoY2hhciAqX19zdHJpbmcpIDsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoX19jb25zdCBj
aGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkKICAgICA7
CgoKZXh0ZXJuIGludCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIDsKCgoKCgoKZXh0
ZXJuIGludCBjbGVhcmVudiAodm9pZCkgOwojIDYyMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz
CmV4dGVybiBjaGFyICpta3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIDsKCgoKCgoKCmV4dGVybiBp
bnQgbWtzdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgOwojIDY1MCAiL3Vzci9pbmNsdWRlL3N0ZGxp
Yi5oIiAzCmV4dGVybiBjaGFyICpta2R0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSA7CgoKCgpleHRl
cm4gaW50IHN5c3RlbSAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQpIDsKIyA2NzIgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBf
X3Jlc29sdmVkKSA7CgoKCgoKI2RlZmluZSBfX0NPTVBBUl9GTl9UIAp0eXBlZGVmIGludCAoKl9f
Y29tcGFyX2ZuX3QpIChfX2NvbnN0IHZvaWQgKiwgX19jb25zdCB2b2lkICopOwojIDY4OSAiL3Vz
ci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2NvbnN0IHZvaWQg
Kl9fa2V5LCBfX2NvbnN0IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0
ZXJuIHZvaWQgcXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3Np
emUsCiAgICAgICAgICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsKCgoKZXh0ZXJu
IGludCBhYnMgKGludCBfX3gpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGxv
bmcgaW50IGxhYnMgKGxvbmcgaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoj
IDcxMCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBkaXZfdCBkaXYgKGludCBfX251
bWVyLCBpbnQgX19kZW5vbSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CmV4dGVy
biBsZGl2X3QgbGRpdiAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgNzI4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDMKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAq
X19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f
c2lnbikgOwoKCgoKZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGln
aXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAgaW50ICpfX3Jl
c3RyaWN0IF9fc2lnbikgOwoKCgoKZXh0ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSA7CgoKCgpleHRlcm4gY2hhciAqcWVjdnQgKGxvbmcg
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9f
cmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwpleHRlcm4gY2hhciAq
cWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAg
ICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgOwpl
eHRlcm4gY2hhciAqcWdjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hh
ciAqX19idWYpIDsKCgoKCmV4dGVybiBpbnQgZWN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9f
bmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAq
X19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICAgICAgICAg
ICAgICBzaXplX3QgX19sZW4pIDsKZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAg
aW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX2xlbikgOwoKZXh0ZXJuIGludCBxZWN2dF9yIChsb25nIGRvdWJs
ZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3Ry
aWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgICAgICAgICAgICAgICAg
Y2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSA7CmV4dGVybiBpbnQgcWZjdnRf
ciAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICAgICAgICAgICAgICAg
IGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAogICAgICAg
ICAgICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgOwoKCgoK
CgpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgOwoKCmV4
dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICAgICAg
ICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgOwoKCmV4dGVy
biBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdjaGFyX3QgX193Y2hhcikgOwoKCgpleHRlcm4gc2l6
ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgOwoKZXh0
ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsIHNpemVfdCBfX24p
CiAgICAgOwoKCgoKCgoKZXh0ZXJuIGludCBycG1hdGNoIChfX2NvbnN0IGNoYXIgKl9fcmVzcG9u
c2UpIDsKIyA4NTggIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gaW50IGdldGxvYWRh
dmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pIDsKCgoKCgoKIyA0MiAiLi4vZ2xv
YmFsLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwojIDI0ICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDMKI2RlZmluZSBfU1RSSU5HX0ggMQoKCgoKCgojZGVmaW5lIF9fbmVlZF9z
aXplX3QgCiNkZWZpbmUgX19uZWVkX05VTEwgCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxp
bnV4LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMjEgIi91c3IvbGliL2djYy1saWIvaTM4
Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwojdW5kZWYgX19uZWVkX3NpemVfdAojIDM2
NCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LWxpbnV4LzMuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1
bmRlZiBOVUxMCgoKCgojZGVmaW5lIE5VTEwgKCh2b2lkICopMCkKCgoKCgojdW5kZWYgX19uZWVk
X05VTEwKIyAzNCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKZXh0ZXJuIHZvaWQgKm1l
bWNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fY29u
c3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgOwoKCmV4dGVybiB2b2lkICpt
ZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAg
ICAgOwoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwg
X19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgaW50
IF9fYywgc2l6ZV90IF9fbikKICAgICA7CgoKCgpleHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpf
X3MsIGludCBfX2MsIHNpemVfdCBfX24pIDsKCgpleHRlcm4gaW50IG1lbWNtcCAoX19jb25zdCB2
b2lkICpfX3MxLCBfX2NvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1
dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWNociAoX19jb25zdCB2b2lkICpf
X3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp
OwojIDc3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hh
ciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAg
ICA7CgpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf
X24pIDsKCgpleHRlcm4gY2hhciAqc3RyY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIDsKCmV4dGVybiBjaGFyICpzdHJuY2F0
IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj
LAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgc3RyY21w
IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBjaGFyICpfX3Mx
LCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
cHVyZV9fKSk7CgoKZXh0ZXJuIGludCBzdHJjb2xsIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29u
c3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBz
aXplX3Qgc3RyeGZybSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSA7CiMgMTIw
ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmR1cCAoX19jb25zdCBj
aGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgMTU1ICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGNoYXIgKnN0cnJjaHIg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsK
IyAxNjcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9f
Y29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQogICAgIF9fYXR0cmlidXRl
X18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9f
cywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p
KTsKCmV4dGVybiBjaGFyICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFy
ICpfX2FjY2VwdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFy
ICpzdHJzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25lZWRs
ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKIyAxODcgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMwpleHRlcm4gY2hhciAqc3RydG9rIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgOwoKCgpleHRlcm4gY2hhciAqX19z
dHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAo
Y2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAog
ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIDsKIyAy
MTggIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gc2l6ZV90IHN0cmxlbiAoX19jb25z
dCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwojIDIyOSAiL3Vzci9pbmNs
dWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJlcnJvciAoaW50IF9fZXJybnVtKSA7CgoK
CmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXpl
X3QgX19idWZsZW4pIDsKCgoKCmV4dGVybiB2b2lkIF9fYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90
IF9fbikgOwoKCgpleHRlcm4gdm9pZCBiY29weSAoX19jb25zdCB2b2lkICpfX3NyYywgdm9pZCAq
X19kZXN0LCBzaXplX3QgX19uKSA7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6
ZV90IF9fbikgOwoKCmV4dGVybiBpbnQgYmNtcCAoX19jb25zdCB2b2lkICpfX3MxLCBfX2NvbnN0
IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKZXh0ZXJuIGNoYXIgKmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGNoYXIgKnJpbmRleCAoX19jb25zdCBjaGFy
ICpfX3MsIGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpleHRlcm4gaW50
IGZmcyAoaW50IF9faSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDI3MiAiL3Vzci9p
bmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBpbnQgc3RyY2FzZWNtcCAoX19jb25zdCBjaGFyICpf
X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKZXh0ZXJuIGludCBzdHJuY2FzZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNo
YXIgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMg
Mjk0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hhciAq
Kl9fcmVzdHJpY3QgX19zdHJpbmdwLAogICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19kZWxpbSkgOwojIDM1NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvYml0
cy9zdHJpbmcuaCIgMwojZGVmaW5lIF9TVFJJTkdfQVJDSF91bmFsaWduZWQgMQojIDM1OCAiL3Vz
ci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIu
aCIgMSAzCiMgNDYgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwojZGVmaW5lIF9fU1RS
SU5HX0lOTElORSBleHRlcm4gX19pbmxpbmUKIyA1NiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n
Mi5oIiAzCiNkZWZpbmUgX19TVFJJTkcyX1NNQUxMX0dFVDE2KHNyYyxpZHgpICgoKF9fY29uc3Qg
dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzcmMpKVtpZHggKyAxXSA8PCA4IHwg
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3JjKSlbaWR4XSkK
CgojZGVmaW5lIF9fU1RSSU5HMl9TTUFMTF9HRVQzMihzcmMsaWR4KSAoKCgoKF9fY29uc3QgdW5z
aWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzcmMpKVtpZHggKyAzXSA8PCA4IHwgKChf
X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3JjKSlbaWR4ICsgMl0p
IDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzcmMp
KVtpZHggKyAxXSkgPDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo
YXIgKikgKHNyYykpW2lkeF0pCiMgOTMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoj
ZGVmaW5lIF9fc3RyaW5nMl8xYnB0cl9wKF9feCkgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKF9f
eCkgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoX194KSA9PSAxKQoKCgoKCiNkZWZpbmUg
bWVtc2V0KHMsYyxuKSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKG4pICYm
IChuKSA8PSAxNiA/ICgobikgPT0gMSA/IF9fbWVtc2V0XzEgKHMsIGMpIDogX19tZW1zZXRfZ2Mg
KHMsIGMsIG4pKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoYykgJiYgKGMpID09ICdcMCcgPyAo
eyB2b2lkICpfX3MgPSAocyk7IF9fYnplcm8gKF9fcywgbik7IF9fczsgfSkgOiBtZW1zZXQgKHMs
IGMsIG4pKSkpCiMgMTA4ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKI2RlZmluZSBf
X21lbXNldF8xKHMsYykgKHsgdm9pZCAqX19zID0gKHMpOyAqKChfX3VpbnQ4X3QgKikgX19zKSA9
IChfX3VpbnQ4X3QpIGM7IF9fczsgfSkKCgojZGVmaW5lIF9fbWVtc2V0X2djKHMsYyxuKSAoeyB2
b2lkICpfX3MgPSAocyk7IHVuaW9uIHsgdW5zaWduZWQgaW50IF9fdWk7IHVuc2lnbmVkIHNob3J0
IGludCBfX3VzaTsgdW5zaWduZWQgY2hhciBfX3VjOyB9ICpfX3UgPSBfX3M7IF9fdWludDhfdCBf
X2MgPSAoX191aW50OF90KSAoYyk7IHN3aXRjaCAoKHVuc2lnbmVkIGludCkgKG4pKSB7IGNhc2Ug
MTU6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZv
aWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgMTE6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEw
MTAxMDE7IF9fdSA9IF9fZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNh
c2UgNzogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAo
dm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAzOiBfX3UtPl9fdXNpID0gKHVuc2lnbmVk
IHNob3J0IGludCkgX19jICogMHgwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChj
aGFyICopIF9fdSArIDIpOyBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVhazsg
Y2FzZSAxNDogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25f
XyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAxMDogX191LT5fX3VpID0gX19jICog
MHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0
KTsgY2FzZSA2OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lv
bl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDI6IF9fdS0+X191c2kgPSAodW5z
aWduZWQgc2hvcnQgaW50KSBfX2MgKiAweDAxMDE7IGJyZWFrOyBjYXNlIDEzOiBfX3UtPl9fdWkg
PSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVuc2lvbl9fICh2b2lkICopKChjaGFyICop
IF9fdSArIDQpOyBjYXNlIDk6IF9fdS0+X191aSA9IF9fYyAqIDB4MDEwMTAxMDE7IF9fdSA9IF9f
ZXh0ZW5zaW9uX18gKHZvaWQgKikoKGNoYXIgKikgX191ICsgNCk7IGNhc2UgNTogX191LT5fX3Vp
ID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAq
KSBfX3UgKyA0KTsgY2FzZSAxOiBfX3UtPl9fdWMgPSAodW5zaWduZWQgY2hhcikgX19jOyBicmVh
azsgY2FzZSAxNjogX191LT5fX3VpID0gX19jICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNp
b25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3UgKyA0KTsgY2FzZSAxMjogX191LT5fX3VpID0gX19j
ICogMHgwMTAxMDEwMTsgX191ID0gX19leHRlbnNpb25fXyAodm9pZCAqKSgoY2hhciAqKSBfX3Ug
KyA0KTsgY2FzZSA4OiBfX3UtPl9fdWkgPSBfX2MgKiAweDAxMDEwMTAxOyBfX3UgPSBfX2V4dGVu
c2lvbl9fICh2b2lkICopKChjaGFyICopIF9fdSArIDQpOyBjYXNlIDQ6IF9fdS0+X191aSA9IF9f
YyAqIDB4MDEwMTAxMDE7IGNhc2UgMDogYnJlYWs7IH0gX19zOyB9KQojIDE5MCAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCiNkZWZpbmUgX19iemVybyhzLG4pIF9fYnVpbHRpbl9tZW1z
ZXQgKHMsICdcMCcsIG4pCiMgMzg3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKZXh0
ZXJuIHZvaWQgKl9fcmF3bWVtY2hyIChjb25zdCB2b2lkICpfX3MsIGludCBfX2MpOwojZGVmaW5l
IHN0cmNocihzLGMpIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoYykgJiYg
KGMpID09ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAocywgYykgOiBzdHJjaHIgKHMsIGMp
KSkKIyA3NTQgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwojZGVmaW5lIHN0cm5jcHko
ZGVzdCxzcmMsbikgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzcmMpICYm
IF9fYnVpbHRpbl9jb25zdGFudF9wIChuKSA/IChzdHJsZW4gKHNyYykgKyAxID49ICgoc2l6ZV90
KSAobikpID8gKGNoYXIgKikgbWVtY3B5IChkZXN0LCBzcmMsIG4pIDogc3RybmNweSAoZGVzdCwg
c3JjLCBuKSkgOiBzdHJuY3B5IChkZXN0LCBzcmMsIG4pKSkKIyA3NzYgIi91c3IvaW5jbHVkZS9i
aXRzL3N0cmluZzIuaCIgMwojZGVmaW5lIHN0cm5jYXQoZGVzdCxzcmMsbikgKF9fZXh0ZW5zaW9u
X18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzcmMpICYmIF9fYnVpbHRpbl9jb25zdGFudF9wIChu
KSA/IChzdHJsZW4gKHNyYykgPCAoKHNpemVfdCkgKG4pKSA/IHN0cmNhdCAoZGVzdCwgc3JjKSA6
IHN0cm5jYXQgKGRlc3QsIHNyYywgbikpIDogc3RybmNhdCAoZGVzdCwgc3JjLCBuKSkpCiMgNzg4
ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKI2RlZmluZSBzdHJjbXAoczEsczIpIF9f
ZXh0ZW5zaW9uX18gKHsgc2l6ZV90IF9fczFfbGVuLCBfX3MyX2xlbjsgKF9fYnVpbHRpbl9jb25z
dGFudF9wIChzMSkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKHMyKSAmJiAoX19zMV9sZW4gPSBz
dHJsZW4gKHMxKSwgX19zMl9sZW4gPSBzdHJsZW4gKHMyKSwgKCFfX3N0cmluZzJfMWJwdHJfcCAo
czEpIHx8IF9fczFfbGVuID49IDQpICYmICghX19zdHJpbmcyXzFicHRyX3AgKHMyKSB8fCBfX3My
X2xlbiA+PSA0KSkgPyBtZW1jbXAgKChfX2NvbnN0IGNoYXIgKikgKHMxKSwgKF9fY29uc3QgY2hh
ciAqKSAoczIpLCAoX19zMV9sZW4gPCBfX3MyX2xlbiA/IF9fczFfbGVuIDogX19zMl9sZW4pICsg
MSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKHMxKSAmJiBfX3N0cmluZzJfMWJwdHJfcCAoczEp
ICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoczEpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9j
b25zdGFudF9wIChzMikgJiYgX19zdHJpbmcyXzFicHRyX3AgKHMyKSA/IF9fc3RyY21wX2NjIChz
MSwgczIsIF9fczFfbGVuKSA6IF9fc3RyY21wX2NnIChzMSwgczIsIF9fczFfbGVuKSkgOiAoX19i
dWlsdGluX2NvbnN0YW50X3AgKHMyKSAmJiBfX3N0cmluZzJfMWJwdHJfcCAoczIpICYmIChfX3My
X2xlbiA9IHN0cmxlbiAoczIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9w
IChzMSkgJiYgX19zdHJpbmcyXzFicHRyX3AgKHMxKSA/IF9fc3RyY21wX2NjIChzMSwgczIsIF9f
czJfbGVuKSA6IF9fc3RyY21wX2djIChzMSwgczIsIF9fczJfbGVuKSkgOiBzdHJjbXAgKHMxLCBz
MikpKSk7IH0pCiMgODA5ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKI2RlZmluZSBf
X3N0cmNtcF9jYyhzMSxzMixsKSAoX19leHRlbnNpb25fXyAoeyByZWdpc3RlciBpbnQgX19yZXN1
bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczEpKVsw
XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikoczIpKVswXSk7
IGlmIChsID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMxKSlbMV0gLSAoKF9fY29uc3QgdW5zaWdu
ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzMikpWzFdKTsgaWYgKGwgPiAxICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoczEpKVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0
IGNoYXIgKikgKHMyKSlbMl0pOyBpZiAobCA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQg
PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczEpKVszXSAt
ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMyKSlbM10pOyB9
IH0gX19yZXN1bHQ7IH0pKQojIDgzNiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiNk
ZWZpbmUgX19zdHJjbXBfY2coczEsczIsbDEpIChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5z
aWduZWQgY2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh
ciAqKSAoczIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKikgKF9fY29uc3QgY2hhciAqKSAoczEpKVswXSAtIF9fczJbMF0pOyBpZiAobDEgPiAwICYm
IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg
KF9fY29uc3QgY2hhciAqKSAoczEpKVsxXSAtIF9fczJbMV0pOyBpZiAobDEgPiAxICYmIF9fcmVz
dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u
c3QgY2hhciAqKSAoczEpKVsyXSAtIF9fczJbMl0pOyBpZiAobDEgPiAyICYmIF9fcmVzdWx0ID09
IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIg
KikgKHMxKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkKIyA4NTggIi91c3IvaW5j
bHVkZS9iaXRzL3N0cmluZzIuaCIgMwojZGVmaW5lIF9fc3RyY21wX2djKHMxLHMyLGwyKSAoX19l
eHRlbnNpb25fXyAoeyBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKl9fczEgPSAoX19jb25zdCB1bnNp
Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMxKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0
ID0gX19zMVswXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg
KHMyKSlbMF07IGlmIChsMiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3Mx
WzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczIpKVsx
XSk7IGlmIChsMiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0g
KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczIpKVsyXSk7IGlm
IChsMiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19yZXN1bHQgPSAoX19zMVszXSAtICgoX19jb25z
dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMyKSlbM10pOyB9IH0gX19yZXN1
bHQ7IH0pKQojIDg4NyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiNkZWZpbmUgc3Ry
bmNtcChzMSxzMixuKSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKG4pICYm
ICgoX19idWlsdGluX2NvbnN0YW50X3AgKHMxKSAmJiBzdHJsZW4gKHMxKSA8ICgoc2l6ZV90KSAo
bikpKSB8fCAoX19idWlsdGluX2NvbnN0YW50X3AgKHMyKSAmJiBzdHJsZW4gKHMyKSA8ICgoc2l6
ZV90KSAobikpKSkgPyBzdHJjbXAgKHMxLCBzMikgOiBzdHJuY21wIChzMSwgczIsIG4pKSkKIyA5
MDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwojZGVmaW5lIHN0cmNzcG4ocyxyZWpl
Y3QpIF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX3IwLCBfX3IxLCBfX3IyOyAoX19idWlsdGluX2Nv
bnN0YW50X3AgKHJlamVjdCkgJiYgX19zdHJpbmcyXzFicHRyX3AgKHJlamVjdCkgPyAoKF9fcjAg
PSAoKF9fY29uc3QgY2hhciAqKSAocmVqZWN0KSlbMF0sIF9fcjAgPT0gJ1wwJykgPyBzdHJsZW4g
KHMpIDogKChfX3IxID0gKChfX2NvbnN0IGNoYXIgKikgKHJlamVjdCkpWzFdLCBfX3IxID09ICdc
MCcpID8gX19zdHJjc3BuX2MxIChzLCBfX3IwKSA6ICgoX19yMiA9ICgoX19jb25zdCBjaGFyICop
IChyZWplY3QpKVsyXSwgX19yMiA9PSAnXDAnKSA/IF9fc3RyY3Nwbl9jMiAocywgX19yMCwgX19y
MSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKHJlamVjdCkpWzNdID09ICdcMCcgPyBfX3N0cmNzcG5f
YzMgKHMsIF9fcjAsIF9fcjEsIF9fcjIpIDogc3RyY3NwbiAocywgcmVqZWN0KSkpKSkgOiBzdHJj
c3BuIChzLCByZWplY3QpKTsgfSkKIyA5MTcgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIg
MwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3Ms
IGludCBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MxIChfX2Nv
bnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0
ID0gMDsKICB3aGlsZSAoX19zW19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0g
X19yZWplY3QpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9f
aW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWpl
Y3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fcmVqZWN0Mik7
CmV4dGVybiBfX2lubGluZSBzaXplX3QKX19zdHJjc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywg
aW50IF9fcmVqZWN0MSwgaW50IF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3Vs
dCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9
IF9fcmVqZWN0MQogICAgICAgICAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsr
X19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9f
c3RyY3Nwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdDEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19yZWplY3QyLCBpbnQgX19yZWplY3QzKTsK
ZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBp
bnQgX19yZWplY3QxLCBpbnQgX19yZWplY3QyLAogICAgICAgICAgICAgIGludCBfX3JlamVjdDMp
CnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRd
ICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDEKICAgICAgICAgJiYgX19zW19f
cmVzdWx0XSAhPSBfX3JlamVjdDIgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDMpCiAgICAr
K19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKCgoKCgoKI2RlZmluZSBzdHJzcG4ocyxh
Y2NlcHQpIF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOyAoX19idWlsdGlu
X2NvbnN0YW50X3AgKGFjY2VwdCkgJiYgX19zdHJpbmcyXzFicHRyX3AgKGFjY2VwdCkgPyAoKF9f
YTAgPSAoKF9fY29uc3QgY2hhciAqKSAoYWNjZXB0KSlbMF0sIF9fYTAgPT0gJ1wwJykgPyAoKHZv
aWQpIChzKSwgMCkgOiAoKF9fYTEgPSAoKF9fY29uc3QgY2hhciAqKSAoYWNjZXB0KSlbMV0sIF9f
YTEgPT0gJ1wwJykgPyBfX3N0cnNwbl9jMSAocywgX19hMCkgOiAoKF9fYTIgPSAoKF9fY29uc3Qg
Y2hhciAqKSAoYWNjZXB0KSlbMl0sIF9fYTIgPT0gJ1wwJykgPyBfX3N0cnNwbl9jMiAocywgX19h
MCwgX19hMSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKGFjY2VwdCkpWzNdID09ICdcMCcgPyBfX3N0
cnNwbl9jMyAocywgX19hMCwgX19hMSwgX19hMikgOiBzdHJzcG4gKHMsIGFjY2VwdCkpKSkpIDog
c3Ryc3BuIChzLCBhY2NlcHQpKTsgfSkKIyA5NzQgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIu
aCIgMwpleHRlcm4gX19pbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9f
cywgaW50IF9fYWNjZXB0KTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApfX3N0cnNwbl9jMSAoX19j
b25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3Vs
dCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0KQogICAgKytfX3Jlc3Vs
dDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSBzaXplX3QgX19zdHJzcG5f
YzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lIHNpemVfdApf
X3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsIGludCBfX2FjY2Vw
dDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwoKICB3aGlsZSAoX19zW19fcmVz
dWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19f
cmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lIHNpemVfdCBfX3N0
cnNwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpleHRl
cm4gX19pbmxpbmUgc2l6ZV90Cl9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9f
YWNjZXB0MSwgaW50IF9fYWNjZXB0MiwgaW50IF9fYWNjZXB0MykKewogIHJlZ2lzdGVyIHNpemVf
dCBfX3Jlc3VsdCA9IDA7CgogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBf
X3NbX19yZXN1bHRdID09IF9fYWNjZXB0MgogICAgICAgICB8fCBfX3NbX19yZXN1bHRdID09IF9f
YWNjZXB0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgoKCgoKCiNkZWZp
bmUgc3RycGJyayhzLGFjY2VwdCkgX19leHRlbnNpb25fXyAoeyBjaGFyIF9fYTAsIF9fYTEsIF9f
YTI7IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoYWNjZXB0KSAmJiBfX3N0cmluZzJfMWJwdHJfcCAo
YWNjZXB0KSA/ICgoX19hMCA9ICgoX19jb25zdCBjaGFyICopIChhY2NlcHQpKVswXSwgX19hMCA9
PSAnXDAnKSA/ICgodm9pZCkgKHMpLCBOVUxMKSA6ICgoX19hMSA9ICgoX19jb25zdCBjaGFyICop
IChhY2NlcHQpKVsxXSwgX19hMSA9PSAnXDAnKSA/IHN0cmNociAocywgX19hMCkgOiAoKF9fYTIg
PSAoKF9fY29uc3QgY2hhciAqKSAoYWNjZXB0KSlbMl0sIF9fYTIgPT0gJ1wwJykgPyBfX3N0cnBi
cmtfYzIgKHMsIF9fYTAsIF9fYTEpIDogKCgoX19jb25zdCBjaGFyICopIChhY2NlcHQpKVszXSA9
PSAnXDAnID8gX19zdHJwYnJrX2MzIChzLCBfX2EwLCBfX2ExLCBfX2EyKSA6IHN0cnBicmsgKHMs
IGFjY2VwdCkpKSkpIDogc3RycGJyayAocywgYWNjZXB0KSk7IH0pCiMgMTAzMSAiL3Vzci9pbmNs
dWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnBicmtfYzIg
KF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSBjaGFyICoKX19z
dHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0
MikKewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3Mg
IT0gX19hY2NlcHQyKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAq
KTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9CgpleHRlcm4gX19pbmxpbmUgY2hhciAqX19z
dHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2FjY2VwdDIsIGludCBfX2FjY2VwdDMpOwpl
eHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3RycGJya19jMyAoX19jb25zdCBjaGFyICpfX3MsIGlu
dCBfX2FjY2VwdDEsIGludCBfX2FjY2VwdDIsCiAgICAgICAgICAgICAgaW50IF9fYWNjZXB0MykK
ewoKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19hY2NlcHQxICYmICpfX3MgIT0g
X19hY2NlcHQyCiAgICAgICAgICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0
dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTApIDogKGNoYXIgKikgKHNpemVfdCkgX19zOwp9
CiMgMTA3NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiNkZWZpbmUgX19zdHJ0b2tf
cihzLHNlcCxuZXh0cCkgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzZXAp
ICYmIF9fc3RyaW5nMl8xYnB0cl9wIChzZXApID8gKCgoX19jb25zdCBjaGFyICopIChzZXApKVsw
XSAhPSAnXDAnICYmICgoX19jb25zdCBjaGFyICopIChzZXApKVsxXSA9PSAnXDAnID8gX19zdHJ0
b2tfcl8xYyAocywgKChfX2NvbnN0IGNoYXIgKikgKHNlcCkpWzBdLCBuZXh0cCkgOiBfX3N0cnRv
a19yIChzLCBzZXAsIG5leHRwKSkgOiBfX3N0cnRva19yIChzLCBzZXAsIG5leHRwKSkpCiMgMTA4
MyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCmV4dGVybiBfX2lubGluZSBjaGFyICpf
X3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKTsKZXh0
ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAs
IGNoYXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7CiAgaWYgKF9fcyA9PSAoKHZvaWQg
KikwKSkKICAgIF9fcyA9ICpfX25leHRwOwogIHdoaWxlICgqX19zID09IF9fc2VwKQogICAgKytf
X3M7CiAgX19yZXN1bHQgPSAoKHZvaWQgKikwKTsKICBpZiAoKl9fcyAhPSAnXDAnKQogICAgewog
ICAgICBfX3Jlc3VsdCA9IF9fcysrOwogICAgICB3aGlsZSAoKl9fcyAhPSAnXDAnKQogICAgICAg
IGlmICgqX19zKysgPT0gX19zZXApCiAgICAgICAgICB7CiAgICAgICAgICAgIF9fc1stMV0gPSAn
XDAnOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgKl9fbmV4dHAgPSBfX3M7
CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgojZGVmaW5lIHN0cnRva19yKHMsc2VwLG5leHRw
KSBfX3N0cnRva19yIChzLCBzZXAsIG5leHRwKQoKCgoKCgoKZXh0ZXJuIGNoYXIgKl9fc3Ryc2Vw
X2cgKGNoYXIgKipfX3N0cmluZ3AsIF9fY29uc3QgY2hhciAqX19kZWxpbSk7CiNkZWZpbmUgX19z
dHJzZXAocyxyZWplY3QpIF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX3IwLCBfX3IxLCBfX3IyOyAo
X19idWlsdGluX2NvbnN0YW50X3AgKHJlamVjdCkgJiYgX19zdHJpbmcyXzFicHRyX3AgKHJlamVj
dCkgJiYgKF9fcjAgPSAoKF9fY29uc3QgY2hhciAqKSAocmVqZWN0KSlbMF0sICgoX19jb25zdCBj
aGFyICopIChyZWplY3QpKVswXSAhPSAnXDAnKSA/ICgoX19yMSA9ICgoX19jb25zdCBjaGFyICop
IChyZWplY3QpKVsxXSwgKChfX2NvbnN0IGNoYXIgKikgKHJlamVjdCkpWzFdID09ICdcMCcpID8g
X19zdHJzZXBfMWMgKHMsIF9fcjApIDogKChfX3IyID0gKChfX2NvbnN0IGNoYXIgKikgKHJlamVj
dCkpWzJdLCBfX3IyID09ICdcMCcpID8gX19zdHJzZXBfMmMgKHMsIF9fcjAsIF9fcjEpIDogKCgo
X19jb25zdCBjaGFyICopIChyZWplY3QpKVszXSA9PSAnXDAnID8gX19zdHJzZXBfM2MgKHMsIF9f
cjAsIF9fcjEsIF9fcjIpIDogX19zdHJzZXBfZyAocywgcmVqZWN0KSkpKSA6IF9fc3Ryc2VwX2cg
KHMsIHJlamVjdCkpOyB9KQojIDExMzMgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwpl
eHRlcm4gX19pbmxpbmUgY2hhciAqX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWpl
Y3QpOwpleHRlcm4gX19pbmxpbmUgY2hhciAqCl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFy
IF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3Jl
dHZhbCAhPSAoKHZvaWQgKikwKSAmJiAoKl9fcyA9IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5f
Y29uc3RhbnRfcCAoX19yZWplY3QpICYmIChfX3JlamVjdCkgPT0gJ1wwJyA/IChjaGFyICopIF9f
cmF3bWVtY2hyIChfX3JldHZhbCwgX19yZWplY3QpIDogc3RyY2hyIChfX3JldHZhbCwgX19yZWpl
Y3QpKSkpICE9ICgodm9pZCAqKTApKQogICAgKigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19y
ZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywg
Y2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpf
X3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyKQp7
CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCAhPSAoKHZv
aWQgKikwKSkKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFsOwogICAg
ICB3aGlsZSAoMSkKICAgICAgICB7CiAgICAgICAgICBpZiAoKl9fY3AgPT0gJ1wwJykKICAgICAg
ICAgICAgewogICAgICAgICAgICAgIF9fY3AgPSAoKHZvaWQgKikwKTsKICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICB9CiAgICAgICAgICBpZiAoKl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2Nw
ID09IF9fcmVqZWN0MikKICAgICAgICAgICAgewogICAgICAgICAgICAgICpfX2NwKysgPSAnXDAn
OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICArK19fY3A7CiAg
ICAgICAgfQogICAgICAqX19zID0gX19jcDsKICAgIH0KICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4
dGVybiBfX2lubGluZSBjaGFyICpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVj
dDEsIGNoYXIgX19yZWplY3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lIGNoYXIgKgpfX3N0cnNlcF8zYyAoY2hhciAq
Kl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3QyLCBjaGFyIF9fcmVqZWN0MykKewog
IHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgIT0gKCh2b2lk
ICopMCkpCiAgICB7CiAgICAgIHJlZ2lzdGVyIGNoYXIgKl9fY3AgPSBfX3JldHZhbDsKICAgICAg
d2hpbGUgKDEpCiAgICAgICAgewogICAgICAgICAgaWYgKCpfX2NwID09ICdcMCcpCiAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICBfX2NwID0gKCh2b2lkICopMCk7CiAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgfQogICAgICAgICAgaWYgKCpfX2NwID09IF9fcmVqZWN0MSB8fCAqX19jcCA9
PSBfX3JlamVjdDIgfHwgKl9fY3AgPT0gX19yZWplY3QzKQogICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgKl9fY3ArKyA9ICdcMCc7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0K
ICAgICAgICAgICsrX19jcDsKICAgICAgICB9CiAgICAgICpfX3MgPSBfX2NwOwogICAgfQogIHJl
dHVybiBfX3JldHZhbDsKfQoKI2RlZmluZSBzdHJzZXAocyxyZWplY3QpIF9fc3Ryc2VwIChzLCBy
ZWplY3QpCiMgMTIwOCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiNkZWZpbmUgX19u
ZWVkX21hbGxvY19hbmRfY2FsbG9jIAoKCgoKCmV4dGVybiBjaGFyICpfX3N0cmR1cCAoX19jb25z
dCBjaGFyICpfX3N0cmluZykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKI2RlZmluZSBf
X3N0cmR1cChzKSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKHMpICYmIF9f
c3RyaW5nMl8xYnB0cl9wIChzKSA/ICgoKF9fY29uc3QgY2hhciAqKSAocykpWzBdID09ICdcMCcg
PyAoY2hhciAqKSBjYWxsb2MgKDEsIDEpIDogKHsgc2l6ZV90IF9fbGVuID0gc3RybGVuIChzKSAr
IDE7IGNoYXIgKl9fcmV0dmFsID0gKGNoYXIgKikgbWFsbG9jIChfX2xlbik7IGlmIChfX3JldHZh
bCAhPSBOVUxMKSBfX3JldHZhbCA9IChjaGFyICopIG1lbWNweSAoX19yZXR2YWwsIHMsIF9fbGVu
KTsgX19yZXR2YWw7IH0pKSA6IF9fc3RyZHVwIChzKSkpCiMgMTIyNyAiL3Vzci9pbmNsdWRlL2Jp
dHMvc3RyaW5nMi5oIiAzCiNkZWZpbmUgc3RyZHVwKHMpIF9fc3RyZHVwIChzKQoKCgoKCmV4dGVy
biBjaGFyICpfX3N0cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAg
ICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKI2RlZmluZSBfX3N0cm5kdXAocyxuKSAo
X19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKHMpICYmIF9fc3RyaW5nMl8xYnB0
cl9wIChzKSA/ICgoKF9fY29uc3QgY2hhciAqKSAocykpWzBdID09ICdcMCcgPyAoY2hhciAqKSBj
YWxsb2MgKDEsIDEpIDogKHsgc2l6ZV90IF9fbGVuID0gc3RybGVuIChzKSArIDE7IHNpemVfdCBf
X24gPSAobik7IGNoYXIgKl9fcmV0dmFsOyBpZiAoX19uIDwgX19sZW4pIF9fbGVuID0gX19uICsg
MTsgX19yZXR2YWwgPSAoY2hhciAqKSBtYWxsb2MgKF9fbGVuKTsgaWYgKF9fcmV0dmFsICE9IE5V
TEwpIHsgX19yZXR2YWxbX19sZW4gLSAxXSA9ICdcMCc7IF9fcmV0dmFsID0gKGNoYXIgKikgbWVt
Y3B5IChfX3JldHZhbCwgcywgX19sZW4gLSAxKTsgfSBfX3JldHZhbDsgfSkpIDogX19zdHJuZHVw
IChzLCBuKSkpCiMgMTI2MiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCiN1bmRlZiBf
X1NUUklOR19JTkxJTkUKIyAzNjEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKCgojIDQz
ICIuLi9nbG9iYWwuaCIgMgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDI3ICIvdXNy
L2luY2x1ZGUvdGltZS5oIiAzCiNkZWZpbmUgX1RJTUVfSCAxCgoKCgoKCgoKI2RlZmluZSBfX25l
ZWRfc2l6ZV90IAojZGVmaW5lIF9fbmVlZF9OVUxMIAojIDEgIi91c3IvbGliL2djYy1saWIvaTM4
Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjIxICIvdXNyL2xpYi9nY2MtbGli
L2kzODYtbGludXgvMy4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKI3VuZGVmIF9fbmVlZF9zaXplX3QK
IyAzNjQgIi91c3IvbGliL2djYy1saWIvaTM4Ni1saW51eC8zLjEvaW5jbHVkZS9zdGRkZWYuaCIg
MwojdW5kZWYgTlVMTAoKCgoKI2RlZmluZSBOVUxMICgodm9pZCAqKTApCgoKCgoKI3VuZGVmIF9f
bmVlZF9OVUxMCiMgMzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCgojIDEgIi91c3IvaW5j
bHVkZS9iaXRzL3RpbWUuaCIgMSAzCiMgMjYgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMwoj
ZGVmaW5lIF9CSVRTX1RJTUVfSCAxCgoKCgoKCgojZGVmaW5lIENMT0NLU19QRVJfU0VDIDEwMDAw
MDBsCgoKCgoKZXh0ZXJuIGxvbmcgaW50IF9fc3lzY29uZiAoaW50KTsKI2RlZmluZSBDTEtfVENL
ICgoX19jbG9ja190KSBfX3N5c2NvbmYgKDIpKQoKCgoKI2RlZmluZSBDTE9DS19SRUFMVElNRSAw
CgojZGVmaW5lIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCAyCgojZGVmaW5lIENMT0NLX1RIUkVB
RF9DUFVUSU1FX0lEIDMKCgojZGVmaW5lIFRJTUVSX0FCU1RJTUUgMQojIDQzICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAyIDMKIyA1NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojZGVmaW5lIF9fY2xv
Y2tfdF9kZWZpbmVkIDEKCgoKCnR5cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CiMgMTE4ICIvdXNy
L2luY2x1ZGUvdGltZS5oIiAzCnN0cnVjdCB0bQp7CiAgaW50IHRtX3NlYzsKICBpbnQgdG1fbWlu
OwogIGludCB0bV9ob3VyOwogIGludCB0bV9tZGF5OwogIGludCB0bV9tb247CiAgaW50IHRtX3ll
YXI7CiAgaW50IHRtX3dkYXk7CiAgaW50IHRtX3lkYXk7CiAgaW50IHRtX2lzZHN0OwoKCiAgbG9u
ZyBpbnQgdG1fZ210b2ZmOwogIF9fY29uc3QgY2hhciAqdG1fem9uZTsKCgoKCn07CgoKCgpzdHJ1
Y3QgaXRpbWVyc3BlYwogIHsKICAgIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsKICAgIHN0
cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKICB9OwoKCnN0cnVjdCBzaWdldmVudDsKIyAxNjMgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMKZXh0ZXJuIGNsb2NrX3QgY2xvY2sgKHZvaWQpIDsKCgpleHRl
cm4gdGltZV90IHRpbWUgKHRpbWVfdCAqX190aW1lcikgOwoKCmV4dGVybiBkb3VibGUgZGlmZnRp
bWUgKHRpbWVfdCBfX3RpbWUxLCB0aW1lX3QgX190aW1lMCkKICAgICBfX2F0dHJpYnV0ZV9fICgo
X19jb25zdF9fKSk7CgoKZXh0ZXJuIHRpbWVfdCBta3RpbWUgKHN0cnVjdCB0bSAqX190cCkgOwoK
CgoKCmV4dGVybiBzaXplX3Qgc3RyZnRpbWUgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3Qg
X19tYXhzaXplLAogICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgc3RydWN0IHRtICpf
X3Jlc3RyaWN0IF9fdHApIDsKIyAxOTQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKZXh0ZXJuIHN0
cnVjdCB0bSAqZ210aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgOwoKCgpleHRlcm4gc3Ry
dWN0IHRtICpsb2NhbHRpbWUgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSA7CgoKCgpleHRlcm4g
c3RydWN0IHRtICpnbXRpbWVfciAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSA7
CgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0
cmljdCBfX3RpbWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRtICpf
X3Jlc3RyaWN0IF9fdHApIDsKCgoKCmV4dGVybiBjaGFyICphc2N0aW1lIChfX2NvbnN0IHN0cnVj
dCB0bSAqX190cCkgOwoKCmV4dGVybiBjaGFyICpjdGltZSAoX19jb25zdCB0aW1lX3QgKl9fdGlt
ZXIpIDsKCgoKCgoKZXh0ZXJuIGNoYXIgKmFzY3RpbWVfciAoX19jb25zdCBzdHJ1Y3QgdG0gKl9f
cmVzdHJpY3QgX190cCwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBf
X2J1ZikgOwoKCmV4dGVybiBjaGFyICpjdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmlj
dCBfX3RpbWVyLAogICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Zikg
OwoKCgoKZXh0ZXJuIGNoYXIgKl9fdHpuYW1lWzJdOwpleHRlcm4gaW50IF9fZGF5bGlnaHQ7CmV4
dGVybiBsb25nIGludCBfX3RpbWV6b25lOwoKCgoKZXh0ZXJuIGNoYXIgKnR6bmFtZVsyXTsKCgoK
ZXh0ZXJuIHZvaWQgdHpzZXQgKHZvaWQpIDsKCgoKZXh0ZXJuIGludCBkYXlsaWdodDsKZXh0ZXJu
IGxvbmcgaW50IHRpbWV6b25lOwoKCgoKCmV4dGVybiBpbnQgc3RpbWUgKF9fY29uc3QgdGltZV90
ICpfX3doZW4pIDsKCgoKCgojZGVmaW5lIF9faXNsZWFwKHllYXIpICgoeWVhcikgJSA0ID09IDAg
JiYgKCh5ZWFyKSAlIDEwMCAhPSAwIHx8ICh5ZWFyKSAlIDQwMCA9PSAwKSkKIyAyNzEgIi91c3Iv
aW5jbHVkZS90aW1lLmgiIDMKZXh0ZXJuIHRpbWVfdCB0aW1lZ20gKHN0cnVjdCB0bSAqX190cCkg
OwoKCmV4dGVybiB0aW1lX3QgdGltZWxvY2FsIChzdHJ1Y3QgdG0gKl9fdHApIDsKCgpleHRlcm4g
aW50IGR5c2l6ZSAoaW50IF9feWVhcikgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoK
CmV4dGVybiBpbnQgbmFub3NsZWVwIChfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0
ZWRfdGltZSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyAqX19yZW1haW5p
bmcpIDsKCgoKZXh0ZXJuIGludCBjbG9ja19nZXRyZXMgKGNsb2NraWRfdCBfX2Nsb2NrX2lkLCBz
dHJ1Y3QgdGltZXNwZWMgKl9fcmVzKSA7CgoKZXh0ZXJuIGludCBjbG9ja19nZXR0aW1lIChjbG9j
a2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRpbWVzcGVjICpfX3RwKSA7CgoKZXh0ZXJuIGludCBj
bG9ja19zZXR0aW1lIChjbG9ja2lkX3QgX19jbG9ja19pZCwgX19jb25zdCBzdHJ1Y3QgdGltZXNw
ZWMgKl9fdHApCiAgICAgOwojIDMwOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpleHRlcm4gaW50
IHRpbWVyX2NyZWF0ZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgc2lnZXZlbnQgKl9fcmVzdHJpY3QgX19ldnAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICB0aW1lcl90ICpfX3Jlc3RyaWN0IF9fdGltZXJpZCkgOwoKCmV4dGVybiBpbnQgdGlt
ZXJfZGVsZXRlICh0aW1lcl90IF9fdGltZXJpZCkgOwoKCmV4dGVybiBpbnQgdGltZXJfc2V0dGlt
ZSAodGltZXJfdCBfX3RpbWVyaWQsIGludCBfX2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKl9fcmVzdHJpY3QgX192YWx1ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXRpbWVyc3BlYyAqX19yZXN0cmljdCBfX292YWx1
ZSkgOwoKCmV4dGVybiBpbnQgdGltZXJfZ2V0dGltZSAodGltZXJfdCBfX3RpbWVyaWQsIHN0cnVj
dCBpdGltZXJzcGVjICpfX3ZhbHVlKQogICAgIDsKCgpleHRlcm4gaW50IHRpbWVyX2dldG92ZXJy
dW4gKHRpbWVyX3QgX190aW1lcmlkKSA7CiMgMzYyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoj
IDQ0ICIuLi9nbG9iYWwuaCIgMgoKIyAxICIuLi90b29sYm94L21lbW9yeS5oIiAxCiMgMTUgIi4u
L3Rvb2xib3gvbWVtb3J5LmgiCiNkZWZpbmUgQ09ERU1NQVAgCgojZGVmaW5lIEFMSUdOKHBvcyxz
aXplKSAoICggKChwb3MpKyhzaXplKS0xKSAvIChzaXplKSkqKHNpemUpICkKI2RlZmluZSBQQURE
SU5HKHBvcyxzaXplKSAoIEFMSUdOKChwb3MpLChzaXplKSkgLSAocG9zKSApCiNkZWZpbmUgT0ZG
U0VUKHMsZWwpICggKGludCkgKCAoc2l6ZV90KSAmKCAoKHMqKTApIC0+IGVsICkgKSApCgoKI2Rl
ZmluZSBORVcodHlwZSkgKCh0eXBlKikgbWVtX2FsbG9jICggc2l6ZW9mKHR5cGUpICkpCiNkZWZp
bmUgRlJFRShwdHIsdHlwZSkgbWVtX2ZyZWUgKHB0ciwgc2l6ZW9mKHR5cGUpICkKCiNkZWZpbmUg
TE5FVyh0eXBlKSAoKHR5cGUqKSBsaXRfbWVtX2FsbG9jICggc2l6ZW9mKHR5cGUpICkpCiNkZWZp
bmUgTEZSRUUocHRyLHR5cGUpIGxpdF9tZW1fZnJlZSAocHRyLCBzaXplb2YodHlwZSkgKQoKI2Rl
ZmluZSBNTkVXKHR5cGUsbnVtKSAoKHR5cGUqKSBtZW1fYWxsb2MgKCBzaXplb2YodHlwZSkgKiAo
bnVtKSApKQojZGVmaW5lIE1GUkVFKHB0cix0eXBlLG51bSkgbWVtX2ZyZWUgKHB0ciwgc2l6ZW9m
KHR5cGUpICogKG51bSkgKQojZGVmaW5lIE1SRUFMTE9DKHB0cix0eXBlLG51bTEsbnVtMikgbWVt
X3JlYWxsb2MgKHB0ciwgc2l6ZW9mKHR5cGUpICogKG51bTEpLCBzaXplb2YodHlwZSkgKiAobnVt
MikgKQoKCiNkZWZpbmUgRE5FVyh0eXBlKSAoKHR5cGUqKSBkdW1wX2FsbG9jICggc2l6ZW9mKHR5
cGUpICkpCiNkZWZpbmUgRE1ORVcodHlwZSxudW0pICgodHlwZSopIGR1bXBfYWxsb2MgKCBzaXpl
b2YodHlwZSkgKiAobnVtKSApKQojZGVmaW5lIERNUkVBTExPQyhwdHIsdHlwZSxudW0xLG51bTIp
IGR1bXBfcmVhbGxvYyAocHRyLCBzaXplb2YodHlwZSkqKG51bTEpLCBzaXplb2YodHlwZSkgKiAo
bnVtMikgKQoKCiNkZWZpbmUgTUNPUFkoZGVzdCxzcmMsdHlwZSxudW0pIG1lbWNweSAoZGVzdCxz
cmMsIHNpemVvZih0eXBlKSogKG51bSkgKQoKCiNkZWZpbmUgQ05FVyh0eXBlLG51bSkgKCh0eXBl
KikgbWVtX21tYXAgKCBzaXplb2YodHlwZSkgKiAobnVtKSApKQojZGVmaW5lIENGUkVFKHB0cixu
dW0pIAoKCgoKCnZvaWQgKm1lbV9hbGxvYyhpbnQgbGVuZ3RoKTsKdm9pZCAqbWVtX21tYXAoaW50
IGxlbmd0aCk7CnZvaWQgKmxpdF9tZW1fYWxsb2MoaW50IGxlbmd0aCk7CnZvaWQgbWVtX2ZyZWUo
dm9pZCAqbSwgaW50IGxlbmd0aCk7CnZvaWQgbGl0X21lbV9mcmVlKHZvaWQgKm0sIGludCBsZW5n
dGgpOwp2b2lkICptZW1fcmVhbGxvYyh2b2lkICptLCBpbnQgbGVuMSwgaW50IGxlbjIpOwpsb25n
IGludCBtZW1fdXNhZ2UoKTsKCnZvaWQgKmR1bXBfYWxsb2MoaW50IGxlbmd0aCk7CnZvaWQgKmR1
bXBfcmVhbGxvYyh2b2lkICptLCBpbnQgbGVuMSwgaW50IGxlbjIpOwpsb25nIGludCBkdW1wX3Np
emUoKTsKdm9pZCBkdW1wX3JlbGVhc2UobG9uZyBpbnQgc2l6ZSk7Cgp2b2lkIG1lbV91c2FnZWxv
ZyhpbnQgZ2l2ZXdhcm5pbmdzKTsKIyA0NiAiLi4vZ2xvYmFsLmgiIDIKIyAxICIuLi90b29sYm94
L2NoYWluLmgiIDEKIyAxNSAiLi4vdG9vbGJveC9jaGFpbi5oIgp0eXBlZGVmIHN0cnVjdCBjaGFp
bmxpbmsgewogICAgICAgIHN0cnVjdCBjaGFpbmxpbmsgKm5leHQsKnByZXY7CiAgICAgICAgdm9p
ZCAqZWxlbWVudDsKICAgICAgICB9IGNoYWlubGluazsKCnR5cGVkZWYgc3RydWN0IGNoYWluIHsK
ICAgICAgICBpbnQgdXNlZHVtcDsKCiAgICAgICAgY2hhaW5saW5rICpmaXJzdCwqbGFzdDsKICAg
ICAgICBjaGFpbmxpbmsgKmFjdGl2ZTsKICAgICAgICB9IGNoYWluOwoKCmNoYWluICpjaGFpbl9u
ZXcgKCk7CmNoYWluICpjaGFpbl9kbmV3ICgpOwp2b2lkIGNoYWluX2ZyZWUoY2hhaW4gKmMpOwoK
dm9pZCBjaGFpbl9hZGRhZnRlcihjaGFpbiAqYywgdm9pZCAqZWxlbWVudCk7CnZvaWQgY2hhaW5f
YWRkYmVmb3JlKGNoYWluICpjLCB2b2lkICplbGVtZW50KTsKdm9pZCBjaGFpbl9hZGRsYXN0IChj
aGFpbiAqYywgdm9pZCAqZWxlbWVudCk7CnZvaWQgY2hhaW5fYWRkZmlyc3QgKGNoYWluICpjLCB2
b2lkICplbGVtZW50KTsKCnZvaWQgY2hhaW5fcmVtb3ZlKGNoYWluICpjKTsKdm9pZCAqY2hhaW5f
cmVtb3ZlX2dvX3ByZXYoY2hhaW4gKmMpOwp2b2lkIGNoYWluX3JlbW92ZXNwZWNpZmljKGNoYWlu
ICpjLCB2b2lkICplbGVtZW50KTsKCnZvaWQgKmNoYWluX25leHQoY2hhaW4gKmMpOwp2b2lkICpj
aGFpbl9wcmV2KGNoYWluICpjKTsKdm9pZCAqY2hhaW5fdGhpcyhjaGFpbiAqYyk7Cgp2b2lkICpj
aGFpbl9maXJzdChjaGFpbiAqYyk7CnZvaWQgKmNoYWluX2xhc3QoY2hhaW4gKmMpOwojIDQ3ICIu
Li9nbG9iYWwuaCIgMgojIDEgIi4uL3Rvb2xib3gvbGlzdC5oIiAxCiMgMTUgIi4uL3Rvb2xib3gv
bGlzdC5oIgp0eXBlZGVmIHN0cnVjdCBsaXN0bm9kZSB7CiAgICAgICAgc3RydWN0IGxpc3Rub2Rl
ICpuZXh0LCpwcmV2OwogICAgICAgIH0gbGlzdG5vZGU7Cgp0eXBlZGVmIHN0cnVjdCBsaXN0IHsK
ICAgICAgICBsaXN0bm9kZSAqZmlyc3QsKmxhc3Q7CiAgICAgICAgaW50IG5vZGVvZmZzZXQ7CiAg
ICAgICAgfSBsaXN0OwoKCnZvaWQgbGlzdF9pbml0IChsaXN0ICpsLCBpbnQgbm9kZW9mZnNldCk7
Cgp2b2lkIGxpc3RfYWRkbGFzdCAobGlzdCAqbCwgdm9pZCAqZWxlbWVudCk7CnZvaWQgbGlzdF9h
ZGRmaXJzdCAobGlzdCAqbCwgdm9pZCAqZWxlbWVudCk7Cgp2b2lkIGxpc3RfcmVtb3ZlIChsaXN0
ICpsLCB2b2lkICplbGVtZW50KTsKCnZvaWQgKmxpc3RfZmlyc3QgKGxpc3QgKmwpOwp2b2lkICps
aXN0X2xhc3QgKGxpc3QgKmwpOwoKdm9pZCAqbGlzdF9uZXh0IChsaXN0ICpsLCB2b2lkICplbGVt
ZW50KTsKdm9pZCAqbGlzdF9wcmV2IChsaXN0ICpsLCB2b2lkICplbGVtZW50KTsKIyA0OCAiLi4v
Z2xvYmFsLmgiIDIKIyAxICIuLi90b29sYm94L2xvZ2luZy5oIiAxCiMgMTUgIi4uL3Rvb2xib3gv
bG9naW5nLmgiCiNkZWZpbmUgUEFOSUNJRih3aGVuLHR4dCkgaWYod2hlbilwYW5pYyh0eHQpCgoj
ZGVmaW5lIE1BWExPR1RFWFQgNTAwCmV4dGVybiBjaGFyIGxvZ3RleHRbNTAwXTsKCnZvaWQgbG9n
X2luaXQoY2hhciAqZm5hbWUpOwp2b2lkIGxvZ190ZXh0KGNoYXIgKnR4dCk7Cgp2b2lkIGxvZ19j
cHV0aW1lKCk7Cgp2b2lkIGRvbG9nKCk7CnZvaWQgZXJyb3IoKTsKdm9pZCBwYW5pYyhjaGFyICp0
eHQpOwoKbG9uZyBpbnQgZ2V0Y3B1dGltZSgpOwojIDQ5ICIuLi9nbG9iYWwuaCIgMgoKCgojIDEg
Ii4uL2kzODYvdHlwZXMuaCIgMQojIDE5ICIuLi9pMzg2L3R5cGVzLmgiCiNkZWZpbmUgX0NBQ0FP
X1RZUEVTX0ggCgojZGVmaW5lIFBPSU5URVJTSVpFIDgKI2RlZmluZSBXT1JEU19CSUdFTkRJQU4g
MAoKI2RlZmluZSBTVVBQT1JUX0RJVklTSU9OIDAKI2RlZmluZSBTVVBQT1JUX0xPTkcgMQojZGVm
aW5lIFNVUFBPUlRfRkxPQVQgMQojZGVmaW5lIFNVUFBPUlRfRE9VQkxFIDEKCiNkZWZpbmUgU1VQ
UE9SVF9MT05HX0FERCAxCiNkZWZpbmUgU1VQUE9SVF9MT05HX0NNUCAxCiNkZWZpbmUgU1VQUE9S
VF9MT05HX0xPRyAxCiNkZWZpbmUgU1VQUE9SVF9MT05HX1NISUZUIDEKI2RlZmluZSBTVVBQT1JU
X0xPTkdfTVVMRElWIDEKI2RlZmluZSBTVVBQT1JUX0xPTkdfSUNWVCAxCiNkZWZpbmUgU1VQUE9S
VF9MT05HX0ZDVlQgMQoKI2RlZmluZSBDT05ESVRJT05BTF9MT0FEQ09OU1QgCgojZGVmaW5lIFU4
X0FWQUlMQUJMRSAxCgoKdHlwZWRlZiBzaWduZWQgY2hhciBzMTsKdHlwZWRlZiB1bnNpZ25lZCBj
aGFyIHUxOwoKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IHMyOwp0eXBlZGVmIHVuc2lnbmVkIHNo
b3J0IGludCB1MjsKCnR5cGVkZWYgc2lnbmVkIGludCBzNDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
dTQ7CgoKdHlwZWRlZiBzaWduZWQgbG9uZyBpbnQgczg7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBp
bnQgdTg7CiMgNTMgIi4uL2dsb2JhbC5oIiAyCgoKCgp0eXBlZGVmIHZvaWQgKnZvaWRwdHI7Cgp0
eXBlZGVmIGludCBib29sOwoKI2RlZmluZSB0cnVlIDEKI2RlZmluZSBmYWxzZSAwCgojZGVmaW5l
IFBSSU1JVElWRVRZUEVfQ09VTlQgOQoKdHlwZWRlZiB2b2lkICgqZnVuY3Rpb25wdHIpICgpOwoK
CiNkZWZpbmUgTUFYX0FMSUdOIDgKCgoKCnZvaWQgY2FjYW9fc2h1dGRvd24oczQgc3RhdHVzKTsK
CgoKCiNkZWZpbmUgVFlQRV9JTlQgMAojZGVmaW5lIFRZUEVfTE9ORyAxCiNkZWZpbmUgVFlQRV9G
TE9BVCAyCiNkZWZpbmUgVFlQRV9ET1VCTEUgMwojZGVmaW5lIFRZUEVfQUREUkVTUyA0CgojZGVm
aW5lIFRZUEVfVk9JRCAxMAoKCgoKI2RlZmluZSBNQUdJQyAweGNhZmViYWJlCiNkZWZpbmUgTUlO
T1JfVkVSU0lPTiAzCiNkZWZpbmUgTUFKT1JfVkVSU0lPTiA0NQoKI2RlZmluZSBDT05TVEFOVF9D
bGFzcyA3CiNkZWZpbmUgQ09OU1RBTlRfRmllbGRyZWYgOQojZGVmaW5lIENPTlNUQU5UX01ldGhv
ZHJlZiAxMAojZGVmaW5lIENPTlNUQU5UX0ludGVyZmFjZU1ldGhvZHJlZiAxMQojZGVmaW5lIENP
TlNUQU5UX1N0cmluZyA4CiNkZWZpbmUgQ09OU1RBTlRfSW50ZWdlciAzCiNkZWZpbmUgQ09OU1RB
TlRfRmxvYXQgNAojZGVmaW5lIENPTlNUQU5UX0xvbmcgNQojZGVmaW5lIENPTlNUQU5UX0RvdWJs
ZSA2CiNkZWZpbmUgQ09OU1RBTlRfTmFtZUFuZFR5cGUgMTIKI2RlZmluZSBDT05TVEFOVF9VdGY4
IDEKCiNkZWZpbmUgQ09OU1RBTlRfQXJyYXlkZXNjcmlwdG9yIDEzCiNkZWZpbmUgQ09OU1RBTlRf
VU5VU0VEIDAKCiNkZWZpbmUgQUNDX1BVQkxJQyAweDAwMDEKI2RlZmluZSBBQ0NfUFJJVkFURSAw
eDAwMDIKI2RlZmluZSBBQ0NfUFJPVEVDVEVEIDB4MDAwNAojZGVmaW5lIEFDQ19TVEFUSUMgMHgw
MDA4CiNkZWZpbmUgQUNDX0ZJTkFMIDB4MDAxMAojZGVmaW5lIEFDQ19TWU5DSFJPTklaRUQgMHgw
MDIwCiNkZWZpbmUgQUNDX1ZPTEFUSUxFIDB4MDA0MAojZGVmaW5lIEFDQ19UUkFOU0lFTlQgMHgw
MDgwCiNkZWZpbmUgQUNDX05BVElWRSAweDAxMDAKI2RlZmluZSBBQ0NfSU5URVJGQUNFIDB4MDIw
MAojZGVmaW5lIEFDQ19BQlNUUkFDVCAweDA0MDAKCgoKCnR5cGVkZWYgc3RydWN0IHV0ZiB1dGY7
CnR5cGVkZWYgc3RydWN0IGxpdGVyYWxzdHJpbmcgbGl0ZXJhbHN0cmluZzsKdHlwZWRlZiBzdHJ1
Y3QgamF2YV9vYmplY3RoZWFkZXIgamF2YV9vYmplY3RoZWFkZXI7CnR5cGVkZWYgc3RydWN0IGNs
YXNzaW5mbyBjbGFzc2luZm87CnR5cGVkZWYgc3RydWN0IHZmdGJsIHZmdGJsOwp0eXBlZGVmIHUx
KiBtZXRob2RwdHI7CiMgMjA5ICIuLi9nbG9iYWwuaCIKc3RydWN0IHV0ZiB7CiAgICAgICAgdXRm
ICpoYXNobGluazsKICAgICAgICBpbnQgYmxlbmd0aDsKICAgICAgICBjaGFyICp0ZXh0Owp9OwoK
CgpzdHJ1Y3QgbGl0ZXJhbHN0cmluZyB7CiAgICAgICAgbGl0ZXJhbHN0cmluZyAqaGFzaGxpbms7
CiAgICAgICAgamF2YV9vYmplY3RoZWFkZXIgKnN0cmluZzsKfTsKCgoKdHlwZWRlZiBzdHJ1Y3Qg
ewogIHU0IHNpemU7CiAgdTQgZW50cmllczsKICB2b2lkICoqcHRyOwp9IGhhc2h0YWJsZTsKCgoK
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGNsYXNzaW5mbyAqY2xhc3M7CiAgICAgICAgdXRmICpu
YW1lOwogICAgICAgIHV0ZiAqZGVzY3JpcHRvcjsKfSBjb25zdGFudF9GTUlyZWY7Cgp0eXBlZGVm
IHN0cnVjdCB7CiAgICAgICAgczQgdmFsdWU7Cn0gY29uc3RhbnRfaW50ZWdlcjsKCnR5cGVkZWYg
c3RydWN0IHsKICAgICAgICBmbG9hdCB2YWx1ZTsKfSBjb25zdGFudF9mbG9hdDsKCnR5cGVkZWYg
c3RydWN0IHsKICAgICAgICBzOCB2YWx1ZTsKfSBjb25zdGFudF9sb25nOwoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgICAgIGRvdWJsZSB2YWx1ZTsKfSBjb25zdGFudF9kb3VibGU7Cgp0eXBlZGVmIHN0
cnVjdCB7CiAgICAgICAgdXRmICpuYW1lOwogICAgICAgIHV0ZiAqZGVzY3JpcHRvcjsKfSBjb25z
dGFudF9uYW1lYW5kdHlwZTsKIyAyNjYgIi4uL2dsb2JhbC5oIgp0eXBlZGVmIHN0cnVjdCBjb25z
dGFudF9hcnJheWRlc2NyaXB0b3IgewogICAgICAgIGludCBhcnJheXR5cGU7CiAgICAgICAgY2xh
c3NpbmZvICpvYmplY3RjbGFzczsKICAgICAgICBzdHJ1Y3QgY29uc3RhbnRfYXJyYXlkZXNjcmlw
dG9yICplbGVtZW50ZGVzY3JpcHRvcjsKfSBjb25zdGFudF9hcnJheWRlc2NyaXB0b3I7CiMgMjgx
ICIuLi9nbG9iYWwuaCIKc3RydWN0IGphdmFfb2JqZWN0aGVhZGVyIHsKICAgICAgICB2ZnRibCAq
dmZ0Ymw7Cn07CiMgMjk1ICIuLi9nbG9iYWwuaCIKI2RlZmluZSBBUlJBWVRZUEVfSU5UIDAKI2Rl
ZmluZSBBUlJBWVRZUEVfTE9ORyAxCiNkZWZpbmUgQVJSQVlUWVBFX0ZMT0FUIDIKI2RlZmluZSBB
UlJBWVRZUEVfRE9VQkxFIDMKI2RlZmluZSBBUlJBWVRZUEVfQllURSA0CiNkZWZpbmUgQVJSQVlU
WVBFX0NIQVIgNQojZGVmaW5lIEFSUkFZVFlQRV9TSE9SVCA2CiNkZWZpbmUgQVJSQVlUWVBFX0JP
T0xFQU4gNwojZGVmaW5lIEFSUkFZVFlQRV9PQkpFQ1QgOAojZGVmaW5lIEFSUkFZVFlQRV9BUlJB
WSA5Cgp0eXBlZGVmIHN0cnVjdCBqYXZhX2FycmF5aGVhZGVyIHsKICAgICAgICBqYXZhX29iamVj
dGhlYWRlciBvYmpoZWFkZXI7CiAgICAgICAgczQgc2l6ZTsKCiAgICAgICAgczQgYWxpZ25lZHNp
emU7CgogICAgICAgIHM0IGFycmF5dHlwZTsKfSBqYXZhX2FycmF5aGVhZGVyOwoKCgoKCnR5cGVk
ZWYgc3RydWN0IGphdmFfY2hhcmFycmF5IHsKICAgICAgICBqYXZhX2FycmF5aGVhZGVyIGhlYWRl
cjsKICAgICAgICB1MiBkYXRhWzFdOwp9IGphdmFfY2hhcmFycmF5OwoKdHlwZWRlZiBzdHJ1Y3Qg
amF2YV9mbG9hdGhlYWRlciB7CiAgICAgICAgamF2YV9hcnJheWhlYWRlciBoZWFkZXI7CiAgICAg
ICAgZmxvYXQgZGF0YVsxXTsKfSBqYXZhX2Zsb2F0YXJyYXk7Cgp0eXBlZGVmIHN0cnVjdCBqYXZh
X2RvdWJsZWFycmF5IHsKICAgICAgICBqYXZhX2FycmF5aGVhZGVyIGhlYWRlcjsKICAgICAgICBk
b3VibGUgZGF0YVsxXTsKfSBqYXZhX2RvdWJsZWFycmF5OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgamF2
YV9ib29sZWFuYXJyYXkgewogICAgICAgIGphdmFfYXJyYXloZWFkZXIgaGVhZGVyOwogICAgICAg
IHUxIGRhdGFbMV07Cn0gamF2YV9ib29sZWFuYXJyYXk7Cgp0eXBlZGVmIHN0cnVjdCBqYXZhX2J5
dGVhcnJheSB7CiAgICAgICAgamF2YV9hcnJheWhlYWRlciBoZWFkZXI7CiAgICAgICAgczEgZGF0
YVsxXTsKfSBqYXZhX2J5dGVhcnJheTsKCnR5cGVkZWYgc3RydWN0IGphdmFfc2hvcnRhcnJheSB7
CiAgICAgICAgamF2YV9hcnJheWhlYWRlciBoZWFkZXI7CiAgICAgICAgczIgZGF0YVsxXTsKfSBq
YXZhX3Nob3J0YXJyYXk7Cgp0eXBlZGVmIHN0cnVjdCBqYXZhX2ludGFycmF5IHsKICAgICAgICBq
YXZhX2FycmF5aGVhZGVyIGhlYWRlcjsKICAgICAgICBzNCBkYXRhWzFdOwp9IGphdmFfaW50YXJy
YXk7Cgp0eXBlZGVmIHN0cnVjdCBqYXZhX2xvbmdhcnJheSB7CiAgICAgICAgamF2YV9hcnJheWhl
YWRlciBoZWFkZXI7CiAgICAgICAgczggZGF0YVsxXTsKfSBqYXZhX2xvbmdhcnJheTsKCgoKCnR5
cGVkZWYgc3RydWN0IGphdmFfb2JqZWN0YXJyYXkgewogICAgICAgIGphdmFfYXJyYXloZWFkZXIg
aGVhZGVyOwogICAgICAgIGNsYXNzaW5mbyAqZWxlbWVudHR5cGU7CiAgICAgICAgamF2YV9vYmpl
Y3RoZWFkZXIgKmRhdGFbMV07Cn0gamF2YV9vYmplY3RhcnJheTsKCnR5cGVkZWYgc3RydWN0IGph
dmFfYXJyYXlhcnJheSB7CiAgICAgICAgamF2YV9hcnJheWhlYWRlciBoZWFkZXI7CiAgICAgICAg
Y29uc3RhbnRfYXJyYXlkZXNjcmlwdG9yICplbGVtZW50ZGVzY3JpcHRvcjsKICAgICAgICBqYXZh
X2FycmF5aGVhZGVyICpkYXRhWzFdOwp9IGphdmFfYXJyYXlhcnJheTsKCgoKCnR5cGVkZWYgc3Ry
dWN0IHByaW1pdGl2ZXR5cGVpbmZvIHsKICAgICAgICBjbGFzc2luZm8gKmNsYXNzX3dyYXA7CiAg
ICAgICAgY2xhc3NpbmZvICpjbGFzc19wcmltaXRpdmU7CiAgICAgICAgY2hhciAqd3JhcG5hbWU7
CiAgICAgICAgY2hhciB0eXBlc2lnOwogICAgICAgIGNoYXIgKm5hbWU7Cn0gcHJpbWl0aXZldHlw
ZWluZm87CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgZmllbGRpbmZvIHsKICAgICAgICBzNCBmbGFnczsK
ICAgICAgICBzNCB0eXBlOwogICAgICAgIHV0ZiAqbmFtZTsKICAgICAgICB1dGYgKmRlc2NyaXB0
b3I7CgogICAgICAgIHM0IG9mZnNldDsKCiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAg
czQgaTsKICAgICAgICAgICAgICAgIHM4IGw7CiAgICAgICAgICAgICAgICBmbG9hdCBmOwogICAg
ICAgICAgICAgICAgZG91YmxlIGQ7CiAgICAgICAgICAgICAgICB2b2lkICphOwogICAgICAgIH0g
dmFsdWU7Cgp9IGZpZWxkaW5mbzsKCnN0cnVjdCBiYXNpY2Jsb2NrOwoKCgp0eXBlZGVmIHN0cnVj
dCB4dGFibGUgewogICAgICAgIHM0IHN0YXJ0cGM7CiAgICAgICAgc3RydWN0IGJhc2ljYmxvY2sg
KnN0YXJ0OwoKICAgICAgICBzNCBlbmRwYzsKICAgICAgICBzdHJ1Y3QgYmFzaWNibG9jayAqZW5k
OwoKICAgICAgICBzNCBoYW5kbGVycGM7CiAgICAgICAgc3RydWN0IGJhc2ljYmxvY2sgKmhhbmRs
ZXI7CgogICAgICAgIGNsYXNzaW5mbyAqY2F0Y2h0eXBlOwogICAgICAgIHN0cnVjdCB4dGFibGUg
Km5leHQ7CgogICAgICAgIHN0cnVjdCB4dGFibGUgKmRvd247Cn0geHRhYmxlOwoKCnR5cGVkZWYg
c3RydWN0IGV4Y2VwdGlvbnRhYmxlIHsKICAgICAgICBzNCBzdGFydHBjOwogICAgICAgIHM0IGVu
ZHBjOwogICAgICAgIHM0IGhhbmRsZXJwYzsKICAgICAgICBjbGFzc2luZm8gKmNhdGNodHlwZTsK
fSBleGNlcHRpb250YWJsZTsKCgoKCnR5cGVkZWYgc3RydWN0IG1ldGhvZGluZm8gewogICAgICAg
IHM0IGZsYWdzOwogICAgICAgIHV0ZiAqbmFtZTsKICAgICAgICB1dGYgKmRlc2NyaXB0b3I7CiAg
ICAgICAgczQgcmV0dXJudHlwZTsKICAgICAgICBzNCBwYXJhbWNvdW50OwogICAgICAgIHUxICpw
YXJhbXR5cGVzOwogICAgICAgIGNsYXNzaW5mbyAqY2xhc3M7CiAgICAgICAgczQgdmZ0YmxpbmRl
eDsKCiAgICAgICAgczQgbWF4c3RhY2s7CiAgICAgICAgczQgbWF4bG9jYWxzOwogICAgICAgIHM0
IGpjb2RlbGVuZ3RoOwogICAgICAgIHUxICpqY29kZTsKCiAgICAgICAgczQgZXhjZXB0aW9udGFi
bGVsZW5ndGg7CiAgICAgICAgZXhjZXB0aW9udGFibGUgKmV4Y2VwdGlvbnRhYmxlOwoKCiAgICAg
ICAgdTEgKnN0dWJyb3V0aW5lOwogICAgICAgIHM0IG1jb2RlbGVuZ3RoOwogICAgICAgIHUxICpt
Y29kZTsKICAgICAgICB1MSAqZW50cnlwb2ludDsKCn0gbWV0aG9kaW5mbzsKCgoKCnR5cGVkZWYg
c3RydWN0IGlubmVyY2xhc3NpbmZvIHsKICAgICAgICBjbGFzc2luZm8gKmlubmVyX2NsYXNzOwog
ICAgICAgIGNsYXNzaW5mbyAqb3V0ZXJfY2xhc3M7CiAgICAgICAgdXRmICpuYW1lOwogICAgICAg
IHM0IGZsYWdzOwp9IGlubmVyY2xhc3NpbmZvOwoKCgpzdHJ1Y3QgY2xhc3NpbmZvIHsKICAgICAg
ICBqYXZhX29iamVjdGhlYWRlciBoZWFkZXI7CgogICAgICAgIHM0IGZsYWdzOwogICAgICAgIHV0
ZiAqbmFtZTsKCiAgICAgICAgczQgY3Bjb3VudDsKICAgICAgICB1MSAqY3B0YWdzOwogICAgICAg
IHZvaWRwdHIgKmNwaW5mb3M7CgogICAgICAgIGNsYXNzaW5mbyAqc3VwZXI7CiAgICAgICAgY2xh
c3NpbmZvICpzdWI7CiAgICAgICAgY2xhc3NpbmZvICpuZXh0c3ViOwoKICAgICAgICBzNCBpbnRl
cmZhY2VzY291bnQ7CiAgICAgICAgY2xhc3NpbmZvICoqaW50ZXJmYWNlczsKCiAgICAgICAgczQg
ZmllbGRzY291bnQ7CiAgICAgICAgZmllbGRpbmZvICpmaWVsZHM7CgogICAgICAgIHM0IG1ldGhv
ZHNjb3VudDsKICAgICAgICBtZXRob2RpbmZvICptZXRob2RzOwoKICAgICAgICBsaXN0bm9kZSBs
aXN0bm9kZTsKCiAgICAgICAgYm9vbCBpbml0aWFsaXplZDsKICAgICAgICBib29sIGxpbmtlZDsK
ICAgICAgICBzNCBpbmRleDsKCiAgICAgICAgczQgaW5zdGFuY2VzaXplOwoKICAgICAgICBzNCBh
bGlnbmVkc2l6ZTsKCgoKICAgICAgICB2ZnRibCAqdmZ0Ymw7CgogICAgICAgIG1ldGhvZGluZm8g
KmZpbmFsaXplcjsKCgoKCiAgICB1MiBpbm5lcmNsYXNzY291bnQ7CiAgICBpbm5lcmNsYXNzaW5m
byAqaW5uZXJjbGFzczsKCiAgICBjbGFzc2luZm8gKmhhc2hsaW5rOwp9OwojIDU4NCAiLi4vZ2xv
YmFsLmgiCnN0cnVjdCB2ZnRibCB7CiAgICAgICAgbWV0aG9kcHRyICppbnRlcmZhY2V0YWJsZVsx
XTsKCiAgICAgICAgY2xhc3NpbmZvICpjbGFzczsKCiAgICAgICAgczQgdmZ0YmxsZW5ndGg7CiAg
ICAgICAgczQgaW50ZXJmYWNldGFibGVsZW5ndGg7CgogICAgICAgIHM0IGJhc2V2YWw7CiAgICAg
ICAgczQgZGlmZnZhbDsKCiAgICAgICAgczQgKmludGVyZmFjZXZmdGJsbGVuZ3RoOwoKICAgICAg
ICBtZXRob2RwdHIgdGFibGVbMV07Cn07CgojZGVmaW5lIFZGVEJMSU5URVJGQUNFVEFCTEUodixp
KSAodiktPmludGVyZmFjZXRhYmxlWy1pXQoKCgoKZXh0ZXJuIGNsYXNzaW5mbyAqY2xhc3NfamF2
YV9sYW5nX09iamVjdDsKZXh0ZXJuIGNsYXNzaW5mbyAqY2xhc3NfamF2YV9sYW5nX1N0cmluZzsK
ZXh0ZXJuIGNsYXNzaW5mbyAqY2xhc3NfamF2YV9sYW5nX0NsYXNzQ2FzdEV4Y2VwdGlvbjsKZXh0
ZXJuIGNsYXNzaW5mbyAqY2xhc3NfamF2YV9sYW5nX051bGxQb2ludGVyRXhjZXB0aW9uOwpleHRl
cm4gY2xhc3NpbmZvICpjbGFzc19qYXZhX2xhbmdfQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0
aW9uOwpleHRlcm4gY2xhc3NpbmZvICpjbGFzc19qYXZhX2xhbmdfTmVnYXRpdmVBcnJheVNpemVF
eGNlcHRpb247CmV4dGVybiBjbGFzc2luZm8gKmNsYXNzX2phdmFfbGFuZ19PdXRPZk1lbW9yeUVy
cm9yOwpleHRlcm4gY2xhc3NpbmZvICpjbGFzc19qYXZhX2xhbmdfQXJpdGhtZXRpY0V4Y2VwdGlv
bjsKZXh0ZXJuIGNsYXNzaW5mbyAqY2xhc3NfamF2YV9sYW5nX0FycmF5U3RvcmVFeGNlcHRpb247
CmV4dGVybiBjbGFzc2luZm8gKmNsYXNzX2phdmFfbGFuZ19UaHJlYWREZWF0aDsKZXh0ZXJuIGNs
YXNzaW5mbyAqY2xhc3NfYXJyYXk7CgoKCmV4dGVybiBqYXZhX29iamVjdGhlYWRlciAqcHJvdG9f
amF2YV9sYW5nX0NsYXNzQ2FzdEV4Y2VwdGlvbjsKZXh0ZXJuIGphdmFfb2JqZWN0aGVhZGVyICpw
cm90b19qYXZhX2xhbmdfTnVsbFBvaW50ZXJFeGNlcHRpb247CmV4dGVybiBqYXZhX29iamVjdGhl
YWRlciAqcHJvdG9famF2YV9sYW5nX0FycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbjsKZXh0
ZXJuIGphdmFfb2JqZWN0aGVhZGVyICpwcm90b19qYXZhX2xhbmdfTmVnYXRpdmVBcnJheVNpemVF
eGNlcHRpb247CmV4dGVybiBqYXZhX29iamVjdGhlYWRlciAqcHJvdG9famF2YV9sYW5nX091dE9m
TWVtb3J5RXJyb3I7CmV4dGVybiBqYXZhX29iamVjdGhlYWRlciAqcHJvdG9famF2YV9sYW5nX0Fy
aXRobWV0aWNFeGNlcHRpb247CmV4dGVybiBqYXZhX29iamVjdGhlYWRlciAqcHJvdG9famF2YV9s
YW5nX0FycmF5U3RvcmVFeGNlcHRpb247CmV4dGVybiBqYXZhX29iamVjdGhlYWRlciAqcHJvdG9f
amF2YV9sYW5nX1RocmVhZERlYXRoOwoKCgoKZXh0ZXJuIGJvb2wgY29tcGlsZWFsbDsKZXh0ZXJu
IGJvb2wgcnVudmVyYm9zZTsKZXh0ZXJuIGJvb2wgdmVyYm9zZTsKCgoKCmV4dGVybiBpbnQgY291
bnRfY2xhc3NfaW5mb3M7CmV4dGVybiBpbnQgY291bnRfY29uc3RfcG9vbF9sZW47CmV4dGVybiBp
bnQgY291bnRfdmZ0YmxfbGVuOwpleHRlcm4gaW50IGNvdW50X3V0Zl9sZW47CmV4dGVybiBpbnQg
Y291bnRfYWxsX21ldGhvZHM7CmV4dGVybiBpbnQgY291bnRfdm1jb2RlX2xlbjsKZXh0ZXJuIGlu
dCBjb3VudF9leHRhYmxlX2xlbjsKZXh0ZXJuIGludCBjb3VudF9jbGFzc19sb2FkczsKZXh0ZXJu
IGludCBjb3VudF9jbGFzc19pbml0czsKZXh0ZXJuIGludCBjb3VudF91dGZfbmV3OwpleHRlcm4g
aW50IGNvdW50X3V0Zl9uZXdfZm91bmQ7CgoKCmV4dGVybiBwcmltaXRpdmV0eXBlaW5mbyBwcmlt
aXRpdmV0eXBlX3RhYmxlWzldOwojIDI2ICJoZWFwLm9sZC5jIiAyCiMgMSAiLi4vdGFibGVzLmgi
IDEKIyAxNSAiLi4vdGFibGVzLmgiCiNkZWZpbmUgQ0xBU1MobmFtZSkgKHVuaWNvZGVfZ2V0Y2xh
c3NsaW5rKHVuaWNvZGVfbmV3X2NoYXIobmFtZSkpKQoKCiNkZWZpbmUgdXRmX2VuZCh1dGYpICgo
Y2hhciAqKSB1dGYtPnRleHQrdXRmLT5ibGVuZ3RoKQoKCmV4dGVybiBib29sIGNvbGxlY3R2ZXJi
b3NlOwpleHRlcm4gbGlzdCB1bmxvYWRlZGNsYXNzZXM7CgoKdHlwZWRlZiB2b2lkICgqc3RyaW5n
ZGVsZXRlcikgKCBqYXZhX29iamVjdGhlYWRlciAqc3RyaW5nICk7CgoKdm9pZCB0YWJsZXNfaW5p
dCAoKTsKCgp2b2lkIHRhYmxlc19jbG9zZSAoc3RyaW5nZGVsZXRlciBkZWwpOwoKCnZvaWQgdXRm
X3NwcmludCAoY2hhciAqYnVmZmVyLCB1dGYgKnUpOwp2b2lkIHV0Zl9mcHJpbnQgKEZJTEUgKmZp
bGUsIHV0ZiAqdSk7CnZvaWQgdXRmX2Rpc3BsYXkgKHV0ZiAqdSk7CgoKdXRmICp1dGZfbmV3IChj
aGFyICp0ZXh0LCB1MiBsZW5ndGgpOwp1dGYgKnV0Zl9uZXdfY2hhciAoY2hhciAqdGV4dCk7CgoK
dm9pZCB1dGZfc2hvdyAoKTsKCgp1MiB1dGZfbmV4dHUyKGNoYXIgKip1dGYpOwoKCnU0IHV0Zl9z
dHJsZW4odXRmICp1KTsKCgpjbGFzc2luZm8gKmNsYXNzX25ldyAodXRmICp1KTsKCgp1MiBkZXNj
X3RvX3R5cGUgKHV0ZiAqZGVzY3JpcHRvcik7CgoKdTIgZGVzY190eXBlc2l6ZSAodXRmICpkZXNj
cmlwdG9yKTsKCgp1NCB1bmljb2RlX2hhc2hrZXkgKHUyICp0ZXh0LCB1MiBsZW5ndGgpOwoKCnZv
aWQgaW5pdF9oYXNodGFibGUoaGFzaHRhYmxlICpoYXNoLCB1NCBzaXplKTsKCgpjbGFzc2luZm8g
KmNsYXNzX2dldCAodXRmICp1KTsKCgp2b2lkIGhlYXBfaW5pdCAodTQgc2l6ZSwgdTQgc3RhcnRz
aXplLCB2b2lkICoqc3RhY2tib3R0b20pOwp2b2lkIGhlYXBfY2xvc2UgKCk7CnZvaWQgKmhlYXBf
YWxsb2NhdGUgKHU0IGJ5dGVsZW5ndGgsIGJvb2wgcmVmZXJlbmNlcywgbWV0aG9kaW5mbyAqZmlu
YWxpemVyKTsKdm9pZCBoZWFwX2FkZHJlZmVyZW5jZSAodm9pZCAqKnJlZmxvY2F0aW9uKTsKCnZv
aWQgZ2NfaW5pdCAodm9pZCk7CnZvaWQgZ2NfdGhyZWFkICh2b2lkKTsKdm9pZCBnY19jYWxsICh2
b2lkKTsKIyAyNyAiaGVhcC5vbGQuYyIgMgojIDEgIi4uL2FzbXBhcnQuaCIgMQojIDE5ICIuLi9h
c21wYXJ0LmgiCmludCBoYXNfbm9feF9pbnN0cl9zZXQoKTsKCgoKdm9pZCBzeW5jaHJvbml6ZV9j
YWNoZXMoKTsKCgp2b2lkIGFzbV9jYWxsX2ppdF9jb21waWxlciAoKTsKCgoKCmphdmFfb2JqZWN0
aGVhZGVyICphc21fY2FsbGphdmFtZXRob2QgKG1ldGhvZGluZm8gKm0sIHZvaWQgKmFyZzEsIHZv
aWQqYXJnMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCphcmcz
LCB2b2lkKmFyZzQpOwoKCgoKamF2YV9vYmplY3RoZWFkZXIgKmFzbV9jYWxsamF2YWZ1bmN0aW9u
IChtZXRob2RpbmZvICptLCB2b2lkICphcmcxLCB2b2lkKmFyZzIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCphcmczLCB2b2lkKmFyZzQpOwoKCgoKCm1ldGhv
ZGluZm8gKmFzbV9nZXRjYWxsaW5nbWV0aG9kICgpOwoKCnZvaWQgYXNtX2R1bXByZWdpc3RlcnNh
bmRjYWxsICggZnVuY3Rpb25wdHIgZik7CiMgMjggImhlYXAub2xkLmMiIDIKIyAxICIuLi9jYWxs
YXJncy5oIiAxCiNkZWZpbmUgVFJBQ0VDQUxMQVJHUyAKIyAyOSAiaGVhcC5vbGQuYyIgMgoKIyAx
ICIuLi90aHJlYWRzL3RocmVhZC5oIiAxCiMgMTUgIi4uL3RocmVhZHMvdGhyZWFkLmgiCiNkZWZp
bmUgX190aHJlYWRfaCAKCiMgMSAiLi4vY29uZmlnLmgiIDEKCgoKCgoKCiNkZWZpbmUgSEFWRV9N
TUFQIDEKIyAxNyAiLi4vY29uZmlnLmgiCiNkZWZpbmUgUkVUU0lHVFlQRSB2b2lkCgoKCgoKI2Rl
ZmluZSBTVERDX0hFQURFUlMgMQoKCiNkZWZpbmUgVElNRV9XSVRIX1NZU19USU1FIDEKCgoKCgoj
ZGVmaW5lIEhBVkVfTUFQX0ZBSUxFRCAxCgoKI2RlZmluZSBIQVZFX01BUF9BTk9OWU1PVVMgMQoK
CiNkZWZpbmUgVVNFX1RIUkVBRFMgMQojZGVmaW5lIEVYVEVSTkFMX09WRVJGTE9XIDEKI2RlZmlu
ZSBET05UX0ZSRUVfRklSU1QgMQoKCiNkZWZpbmUgU1lTREVQX0RJUiAiaTM4NiIKCiNkZWZpbmUg
T0xEX0NPTVBJTEVSIDEKCgojZGVmaW5lIEhBVkVfR0VUQ1dEIDEKCgojZGVmaW5lIEhBVkVfR0VU
UEFHRVNJWkUgMQoKCiNkZWZpbmUgSEFWRV9HRVRUSU1FT0ZEQVkgMQoKCiNkZWZpbmUgSEFWRV9N
S0RJUiAxCgoKI2RlZmluZSBIQVZFX01LVElNRSAxCgoKI2RlZmluZSBIQVZFX1NFTEVDVCAxCgoK
I2RlZmluZSBIQVZFX1NPQ0tFVCAxCgoKI2RlZmluZSBIQVZFX0RJUkVOVF9IIDEKCgojZGVmaW5l
IEhBVkVfRkNOVExfSCAxCiMgODQgIi4uL2NvbmZpZy5oIgojZGVmaW5lIEhBVkVfU1lTX1RJTUVf
SCAxCgoKI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKCgojZGVmaW5lIEhBVkVfTElCTSAxCgoKI2Rl
ZmluZSBQQUNLQUdFICJjYWNhbyIKCgojZGVmaW5lIFZFUlNJT04gIjAuNDAiCiMgMTggIi4uL3Ro
cmVhZHMvdGhyZWFkLmgiIDIKCgoKCgojZGVmaW5lIE1BWFRIUkVBRFMgMjU2CgojZGVmaW5lIFRI
UkVBRENMQVNTICJqYXZhL2xhbmcvVGhyZWFkIgojZGVmaW5lIFRIUkVBREdST1VQQ0xBU1MgImph
dmEvbGFuZy9UaHJlYWRHcm91cCIKI2RlZmluZSBUSFJFQURERUFUSENMQVNTICJqYXZhL2xhbmcv
VGhyZWFkRGVhdGgiCgojZGVmaW5lIE1JTl9USFJFQURfUFJJTyAxCiNkZWZpbmUgTk9STV9USFJF
QURfUFJJTyA1CiNkZWZpbmUgTUFYX1RIUkVBRF9QUklPIDEwCgojZGVmaW5lIFRIUkVBRF9TVVNQ
RU5ERUQgMAojZGVmaW5lIFRIUkVBRF9SVU5OSU5HIDEKI2RlZmluZSBUSFJFQURfREVBRCAyCiNk
ZWZpbmUgVEhSRUFEX0tJTEwgMwoKI2RlZmluZSBUSFJFQURfRkxBR1NfR0VORVJBTCAwCiNkZWZp
bmUgVEhSRUFEX0ZMQUdTX05PU1RBQ0tBTExPQyAxCiNkZWZpbmUgVEhSRUFEX0ZMQUdTX1VTRVJf
U1VTUEVORCAyCiNkZWZpbmUgVEhSRUFEX0ZMQUdTX0tJTExFRCA0CgpzdHJ1Y3QgX3RocmVhZDsK
CnR5cGVkZWYgc3RydWN0IF9jdHgKewogICAgc3RydWN0IF90aHJlYWQgKnRocmVhZDsKICAgIGJv
b2wgZnJlZTsKICAgIHUxIHN0YXR1czsKICAgIHUxIHByaW9yaXR5OwogICAgdTEqIHJlc3RvcmVQ
b2ludDsKICAgIHUxKiBzdGFja01lbTsKICAgIHUxKiBzdGFja0Jhc2U7CiAgICB1MSogc3RhY2tF
bmQ7CiAgICB1MSogdXNlZFN0YWNrVG9wOwogICAgczggdGltZTsKICAgIGphdmFfb2JqZWN0aGVh
ZGVyICpleGNlcHRpb25wdHI7CiAgICBzdHJ1Y3QgX3RocmVhZCAqbmV4dGxpdmU7CiAgICB1MSBm
bGFnczsKfSBjdHg7CiMgNjkgIi4uL3RocmVhZHMvdGhyZWFkLmgiCnR5cGVkZWYgc3RydWN0IF90
aHJlYWRHcm91cAp7CiAgICBqYXZhX29iamVjdGhlYWRlciBoZWFkZXI7CiAgICBzdHJ1Y3QgX3Ro
cmVhZEdyb3VwKiBwYXJlbnQ7CiAgICBqYXZhX29iamVjdGhlYWRlciogbmFtZTsKICAgIHM0IG1h
eFByaW87CiAgICBzNCBkZXN0cm95ZWQ7CiAgICBzNCBkYWVtb247CiAgICAgICAgczQgdm1BbGxv
d1N1c3BlbnNpb247CiAgICBzNCBudGhyZWFkczsKICAgIGphdmFfb2JqZWN0aGVhZGVyKiB0aHJl
YWRzOwogICAgczQgbmdyb3VwczsKICAgIGphdmFfb2JqZWN0aGVhZGVyKiBncm91cHM7Cn0gdGhy
ZWFkR3JvdXA7CgoKdHlwZWRlZiBzdHJ1Y3QgX3RocmVhZAp7CiAgICBqYXZhX29iamVjdGhlYWRl
ciBoZWFkZXI7CiAgICBqYXZhX29iamVjdGhlYWRlciogbmFtZTsKICAgIHM0IHByaW9yaXR5Owog
ICAgc3RydWN0IF90aHJlYWQqIG5leHQ7CiAgICBzOCBQcml2YXRlSW5mbzsKICAgIHM0IHNpbmds
ZV9zdGVwOwogICAgczQgZGFlbW9uOwogICAgczQgc3RpbGxib3JuOwogICAgamF2YV9vYmplY3Ro
ZWFkZXIqIHRhcmdldDsKICAgIHRocmVhZEdyb3VwKiBncm91cDsKICAgICAgICBqYXZhX29iamVj
dGhlYWRlciogY29udGV4dENsYXNzTG9hZGVyOwogICAgICAgIGphdmFfb2JqZWN0aGVhZGVyKiBp
bmhlcml0ZWRBY2Nlc3NDb250cm9sQ29udGV4dDsKICAgICAgICBqYXZhX29iamVjdGhlYWRlciog
dmFsdWVzOwp9IHRocmVhZDsKCnZvaWQgaW5pdFRocmVhZHMgKHUxICpzdGFja2JvdHRvbSk7CnZv
aWQgY2xlYXJfdGhyZWFkX2ZsYWdzICh2b2lkKTsKdm9pZCBzdGFydFRocmVhZCAodGhyZWFkKik7
CnZvaWQgcmVzdW1lVGhyZWFkICh0aHJlYWQqKTsKdm9pZCBpcmVzdW1lVGhyZWFkICh0aHJlYWQq
KTsKdm9pZCBzdXNwZW5kVGhyZWFkICh0aHJlYWQqKTsKdm9pZCBzdXNwZW5kT25RVGhyZWFkICh0
aHJlYWQqLCB0aHJlYWQqKik7CnZvaWQgeWllbGRUaHJlYWQgKHZvaWQpOwp2b2lkIGtpbGxUaHJl
YWQgKHRocmVhZCopOwp2b2lkIHNldFByaW9yaXR5VGhyZWFkICh0aHJlYWQqLCBpbnQpOwoKczgg
Y3VycmVudFRpbWUgKHZvaWQpOwp2b2lkIHNsZWVwVGhyZWFkIChzOCk7CmJvb2wgYWxpdmVUaHJl
YWQgKHRocmVhZCopOwpsb25nIGZyYW1lc1RocmVhZCAodGhyZWFkKik7Cgp2b2lkIHJlc2NoZWR1
bGUgKHZvaWQpOwoKdm9pZCBjaGVja0V2ZW50cyAoYm9vbCBibG9jayk7CgpleHRlcm4gaW50IGJs
b2NrSW50czsKZXh0ZXJuIGJvb2wgbmVlZFJlc2NoZWR1bGU7CmV4dGVybiB0aHJlYWQgKmN1cnJl
bnRUaHJlYWQ7CmV4dGVybiB0aHJlYWQgKm1haW5UaHJlYWQ7CmV4dGVybiBjdHggY29udGV4dHNb
XTsKZXh0ZXJuIGludCB0aHJlYWRTdGFja1NpemU7CgpleHRlcm4gdGhyZWFkICpsaXZlVGhyZWFk
czsKZXh0ZXJuIHRocmVhZCAqc2xlZXBUaHJlYWRzOwoKZXh0ZXJuIHRocmVhZCAqdGhyZWFkUWhl
YWRbMTAgKyAxXTsKCiNkZWZpbmUgQ09OVEVYVChfdCkgKGNvbnRleHRzWyhfdCktPlByaXZhdGVJ
bmZvIC0gMV0pCgoKCiNkZWZpbmUgaW50c0Rpc2FibGUoKSBibG9ja0ludHMrKwojZGVmaW5lIGlu
dHNSZXN0b3JlKCkgaWYgKGJsb2NrSW50cyA9PSAxICYmIG5lZWRSZXNjaGVkdWxlKSB7IHJlc2No
ZWR1bGUoKTsgfSBibG9ja0ludHMtLQojIDMxICJoZWFwLm9sZC5jIiAyCiMgMSAiLi4vdGhyZWFk
cy9sb2Nrcy5oIiAxCiMgMTUgIi4uL3RocmVhZHMvbG9ja3MuaCIKI2RlZmluZSBfX2xvY2tzX2gg
CgoKCgojIDEgIi4uL2kzODYvZGVmaW5lcy5oIiAxCiMgMTUgIi4uL2kzODYvZGVmaW5lcy5oIgoj
ZGVmaW5lIFVTRV9JTlRFUk5BTF9USFJFQURTIAoKI2RlZmluZSBIQVZFX0ZDTlRMIAojZGVmaW5l
IEhBVkVfSU9DVEwgCiMgMjEgIi4uL3RocmVhZHMvbG9ja3MuaCIgMgoKI2RlZmluZSBXQUlURk9S
RVZFUiAtMQoKCgpzdHJ1Y3QgX3RocmVhZDsKCnR5cGVkZWYgc3RydWN0IF9pTXV4IHsKICAgIHN0
cnVjdCBfdGhyZWFkICpob2xkZXI7CiAgICBpbnQgY291bnQ7CiAgICBzdHJ1Y3QgX3RocmVhZCAq
bXV4V2FpdGVyczsKfSBpTXV4OwoKdHlwZWRlZiBzdHJ1Y3QgX2lDdiB7CiAgICAgICAgc3RydWN0
IF90aHJlYWQqIGN2V2FpdGVyczsKICAgICAgICBzdHJ1Y3QgX2lNdXgqIG11eDsKfSBpQ3Y7Cgoj
ZGVmaW5lIE1BWF9NVVRFWEVTIDI1NgoKdHlwZWRlZiBzdHJ1Y3QgX211dGV4SGFzaEVudHJ5CnsK
ICAgIGphdmFfb2JqZWN0aGVhZGVyICpvYmplY3Q7CiAgICBpTXV4IG11dGV4OwogICAgc3RydWN0
IF9tdXRleEhhc2hFbnRyeSAqbmV4dDsKICAgIGludCBjb25kaXRpb25Db3VudDsKfSBtdXRleEhh
c2hFbnRyeTsKCiNkZWZpbmUgTVVURVhfSEFTSF9UUkFTSF9CSVRTIDMKI2RlZmluZSBNVVRFWF9I
QVNIX1NJR05fQklUUyAxMAoKI2RlZmluZSBNVVRFWF9IQVNIX1RBQkxFX1NJWkUgMTAyNAojZGVm
aW5lIE1VVEVYX09WRVJGTE9XX1RBQkxFX1NJWkUgMTAyNAojIDYyICIuLi90aHJlYWRzL2xvY2tz
LmgiCmV4dGVybiBsb25nIG11dGV4SGFzaE1hc2s7CmV4dGVybiBpbnQgbXV0ZXhIYXNoVGFibGVT
aXplOwpleHRlcm4gbXV0ZXhIYXNoRW50cnkgKm11dGV4SGFzaFRhYmxlOwoKZXh0ZXJuIG11dGV4
SGFzaEVudHJ5ICptdXRleE92ZXJmbG93VGFibGU7CmV4dGVybiBpbnQgbXV0ZXhPdmVyZmxvd1Rh
YmxlU2l6ZTsKZXh0ZXJuIG11dGV4SGFzaEVudHJ5ICpmaXJzdEZyZWVPdmVyZmxvd0VudHJ5OwoK
I2RlZmluZSBNVVRFWF9IQVNIX01BU0sgKChNVVRFWF9IQVNIX1RBQkxFX1NJWkUgLSAxKSA8PCAz
KQoKCgoKI2RlZmluZSBNVVRFWF9IQVNIX1ZBTFVFKGEpICgoICgoKGxvbmcpKGEpKSBeICgobG9u
ZykoYSkgPj4gTVVURVhfSEFTSF9TSUdOX0JJVFMpKSAmIG11dGV4SGFzaE1hc2spID4+IE1VVEVY
X0hBU0hfVFJBU0hfQklUUykKCiNkZWZpbmUgTVVURVhfSEFTSF9TVUNDRVNTT1IoaCkgKCgoaCkg
KyA3KSAmIChtdXRleEhhc2hUYWJsZVNpemUgLSAxKSkKCnR5cGVkZWYgc3RydWN0IF9jb25kaXRp
b25IYXNoRW50cnkKewogICAgamF2YV9vYmplY3RoZWFkZXIgKm9iamVjdDsKICAgIGlDdiBjb25k
aXRpb247Cn0gY29uZGl0aW9uSGFzaEVudHJ5OwoKI2RlZmluZSBDT05ESVRJT05fSEFTSF9UQUJM
RV9TSVpFIDEwMjQKCiNkZWZpbmUgQ09ORElUSU9OX0hBU0hfVkFMVUUoYSkgKCgoKGxvbmcpKGEp
KSAmIGNvbmRpdGlvbkhhc2hNYXNrKSA+PiAzKQojZGVmaW5lIENPTkRJVElPTl9IQVNIX1NVQ0NF
U1NPUihoKSAoKChoKSArIDcpICYgKGNvbmRpdGlvbkhhc2hUYWJsZVNpemUgLSAxKSkKCnR5cGVk
ZWYgc3RydWN0CnsKICAgIGJvb2wgZnJlZTsKICAgIGphdmFfb2JqZWN0aGVhZGVyICpvYmplY3Q7
CiAgICBpTXV4IG11dGV4OwogICAgaUN2IGNvbmRpdGlvbjsKfSBvYmplY3RfbXV0ZXg7CgpleHRl
cm4gdm9pZCBpbml0TG9ja3MgKHZvaWQpOwoKbXV0ZXhIYXNoRW50cnkqIGNvbmRpdGlvbkxvY2tl
ZE11dGV4Rm9yT2JqZWN0IChqYXZhX29iamVjdGhlYWRlciAqb2JqZWN0KTsKCnZvaWQgcmVvcmRl
ckNvbmRpdGlvbkhhc2hUYWJsZSAoaW50IGJlZ2luKTsKaUN2KiBjb25kaXRpb25Gb3JPYmplY3Qg
KGphdmFfb2JqZWN0aGVhZGVyICpvYmplY3QpOwppQ3YqIGFkZENvbmRpdGlvbkZvck9iamVjdCAo
amF2YV9vYmplY3RoZWFkZXIgKm9iamVjdCk7CnZvaWQgcmVtb3ZlQ29uZGl0aW9uRm9yT2JqZWN0
IChqYXZhX29iamVjdGhlYWRlciAqb2JqZWN0KTsKCgoKCgp2b2lkIHNpZ25hbF9jb25kX2Zvcl9v
YmplY3QgKGphdmFfb2JqZWN0aGVhZGVyICpvYmopOwp2b2lkIGJyb2FkY2FzdF9jb25kX2Zvcl9v
YmplY3QgKGphdmFfb2JqZWN0aGVhZGVyICpvYmopOwp2b2lkIHdhaXRfY29uZF9mb3Jfb2JqZWN0
IChqYXZhX29iamVjdGhlYWRlciAqb2JqLCBzOCB0aW1lKTsKdm9pZCBsb2NrX211dGV4X2Zvcl9v
YmplY3QgKGphdmFfb2JqZWN0aGVhZGVyICpvYmopOwp2b2lkIHVubG9ja19tdXRleF9mb3Jfb2Jq
ZWN0IChqYXZhX29iamVjdGhlYWRlciAqb2JqKTsKCnZvaWQgbG9ja19tdXRleCAoaU11eCopOwp2
b2lkIHVubG9ja19tdXRleCAoaU11eCopOwp2b2lkIHdhaXRfY29uZCAoaU11eCosIGlDdiosIHM4
KTsKdm9pZCBzaWduYWxfY29uZCAoaUN2Kik7CnZvaWQgYnJvYWRjYXN0X2NvbmQgKGlDdiopOwoK
CgoKCnZvaWQgaW50ZXJuYWxfbG9ja19tdXRleCAoaU11eCopOwp2b2lkIGludGVybmFsX3VubG9j
a19tdXRleCAoaU11eCopOwp2b2lkIGludGVybmFsX3dhaXRfY29uZCAoaU11eCosIGlDdiosIHM4
KTsKdm9pZCBpbnRlcm5hbF9zaWduYWxfY29uZCAoaUN2Kik7CnZvaWQgaW50ZXJuYWxfYnJvYWRj
YXN0X2NvbmQgKGlDdiopOwoKdm9pZCBpbnRlcm5hbF9sb2NrX211dGV4X2Zvcl9vYmplY3QgKGph
dmFfb2JqZWN0aGVhZGVyICpvYmopOwp2b2lkIGludGVybmFsX3VubG9ja19tdXRleF9mb3Jfb2Jq
ZWN0IChqYXZhX29iamVjdGhlYWRlciAqb2JqKTsKdm9pZCBpbnRlcm5hbF9icm9hZGNhc3RfY29u
ZF9mb3Jfb2JqZWN0IChqYXZhX29iamVjdGhlYWRlciAqb2JqKTsKIyAzMiAiaGVhcC5vbGQuYyIg
MgojIDEgIi4uL2kzODYvdGhyZWFkcy5oIiAxCiMgMTggIi4uL2kzODYvdGhyZWFkcy5oIgojZGVm
aW5lIF9fc3lzZGVwX3RocmVhZHNfaCAKCiMgMSAiLi4vY29uZmlnLmgiIDEKCgoKCgoKCiNkZWZp
bmUgSEFWRV9NTUFQIDEKIyAxNyAiLi4vY29uZmlnLmgiCiNkZWZpbmUgUkVUU0lHVFlQRSB2b2lk
CgoKCgoKI2RlZmluZSBTVERDX0hFQURFUlMgMQoKCiNkZWZpbmUgVElNRV9XSVRIX1NZU19USU1F
IDEKCgoKCgojZGVmaW5lIEhBVkVfTUFQX0ZBSUxFRCAxCgoKI2RlZmluZSBIQVZFX01BUF9BTk9O
WU1PVVMgMQoKCiNkZWZpbmUgVVNFX1RIUkVBRFMgMQojZGVmaW5lIEVYVEVSTkFMX09WRVJGTE9X
IDEKI2RlZmluZSBET05UX0ZSRUVfRklSU1QgMQoKCiNkZWZpbmUgU1lTREVQX0RJUiAiaTM4NiIK
CiNkZWZpbmUgT0xEX0NPTVBJTEVSIDEKCgojZGVmaW5lIEhBVkVfR0VUQ1dEIDEKCgojZGVmaW5l
IEhBVkVfR0VUUEFHRVNJWkUgMQoKCiNkZWZpbmUgSEFWRV9HRVRUSU1FT0ZEQVkgMQoKCiNkZWZp
bmUgSEFWRV9NS0RJUiAxCgoKI2RlZmluZSBIQVZFX01LVElNRSAxCgoKI2RlZmluZSBIQVZFX1NF
TEVDVCAxCgoKI2RlZmluZSBIQVZFX1NPQ0tFVCAxCgoKI2RlZmluZSBIQVZFX0RJUkVOVF9IIDEK
CgojZGVmaW5lIEhBVkVfRkNOVExfSCAxCiMgODQgIi4uL2NvbmZpZy5oIgojZGVmaW5lIEhBVkVf
U1lTX1RJTUVfSCAxCgoKI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKCgojZGVmaW5lIEhBVkVfTElC
TSAxCgoKI2RlZmluZSBQQUNLQUdFICJjYWNhbyIKCgojZGVmaW5lIFZFUlNJT04gIjAuNDAiCiMg
MjEgIi4uL2kzODYvdGhyZWFkcy5oIiAyCgoKCgoKCnZvaWQgYXNtX3BlcmZvcm1fdGhyZWFkc3dp
dGNoICh1MSAqKmZyb20sIHUxICoqdG8sIHUxICoqc3RhY2tUb3ApOwp1MSogYXNtX2luaXRpYWxp
emVfdGhyZWFkX3N0YWNrICh2b2lkICpmdW5jLCB1MSAqc3RhY2spOwp2b2lkIGFzbV9zd2l0Y2hz
dGFja2FuZGNhbGwgKHZvaWQgKnN0YWNrLCB2b2lkICpmdW5jLCB2b2lkICoqc3RhY2t0b3BzYXZl
KTsKCgoKI2RlZmluZSBUSFJFQURTVEFDS1NJWkUgKDMyICogMTAyNCkKCiNkZWZpbmUgVEhSRUFE
U1dJVENIKHRvLGZyb20pIGFzbV9wZXJmb3JtX3RocmVhZHN3aXRjaCgmKGZyb20pLT5yZXN0b3Jl
UG9pbnQsICYodG8pLT5yZXN0b3JlUG9pbnQsICYoZnJvbSktPnVzZWRTdGFja1RvcCkKCgojZGVm
aW5lIFRIUkVBRElOSVQodG8sZnVuYykgKHRvKS0+cmVzdG9yZVBvaW50ID0gYXNtX2luaXRpYWxp
emVfdGhyZWFkX3N0YWNrKCh1MSopKGZ1bmMpLCAodG8pLT5zdGFja0VuZCkKCgoKI2RlZmluZSBU
SFJFQURJTkZPKGUpIGRvIHsgKGUpLT5yZXN0b3JlUG9pbnQgPSAwOyAoZSktPmZsYWdzID0gVEhS
RUFEX0ZMQUdTX05PU1RBQ0tBTExPQzsgfSB3aGlsZSgwKQojIDMzICJoZWFwLm9sZC5jIiAyCiMg
NDggImhlYXAub2xkLmMiCmJvb2wgY29sbGVjdHZlcmJvc2UgPSAwOwoKCiNkZWZpbmUgQkxPQ0tT
SVpFIDgKdHlwZWRlZiB1OCBoZWFwYmxvY2s7CgoKI2RlZmluZSBiaXRmaWVsZHR5cGUgdTgKI2Rl
ZmluZSBCSVRGSUVMREJJVFMgNjQKCgoKCgp1NCBoZWFwc2l6ZTsKdTQgdG9wb2ZoZWFwOwpoZWFw
YmxvY2sgKmhlYXA7Cgp1OCAqc3RhcnRiaXRzOwp1OCAqbWFya2JpdHM7CnU4ICpyZWZlcmVuY2Vi
aXRzOwoKdTQgaGVhcGZpbGxncmFkZTsKdTQgY29sbGVjdHRocmVhc2hvbGQ7Cgp2b2lkICoqYm90
dG9tX29mX3N0YWNrOwpjaGFpbiAqYWxsZ2xvYmFscmVmZXJlbmNlczsKCnR5cGVkZWYgc3RydWN0
IGZpbmFsaXplcm5vZGUgewogICAgICAgIHN0cnVjdCBmaW5hbGl6ZXJub2RlICpuZXh0OwogICAg
ICAgIHU0IG9ianN0YXJ0OwogICAgICAgIG1ldGhvZGluZm8gKmZpbmFsaXplcjsKICAgICAgICB9
IGZpbmFsaXplcm5vZGU7CgpmaW5hbGl6ZXJub2RlICpsaXZlZmluYWxpemVlczsKZmluYWxpemVy
bm9kZSAqZGVhZGZpbmFsaXplZXM7CgoKdHlwZWRlZiBzdHJ1Y3QgbWVtYXJlYSB7CiAgICAgICAg
c3RydWN0IG1lbWFyZWEgKm5leHQ7CiAgICAgICAgfSBtZW1hcmVhOwoKdHlwZWRlZiBzdHJ1Y3Qg
YmlnbWVtYXJlYSB7CiAgICAgICAgc3RydWN0IGJpZ21lbWFyZWEgKm5leHQ7CiAgICAgICAgdTQg
c2l6ZTsKICAgICAgICB9IGJpZ21lbWFyZWE7CgojZGVmaW5lIERJRkZFUkVOVFNJWkVTIDEyOApt
ZW1hcmVhICptZW1saXN0WzEyOF07CnU4IG1lbWxpc3RiaXRzWzEyOC82NF07CgoKCmJpZ21lbWFy
ZWEgKmJpZ21lbWxpc3Q7CiMgMTE2ICJoZWFwLm9sZC5jIgpzdGF0aWMgdTEgbG93ZXN0dGFibGVb
MjU2XSA9IHsKICAgICAgICAyNTUsIDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLAogICAg
ICAgIDQsIDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLAogICAgICAgIDUsIDAsMSwwLDIs
MCwxLDAsMywwLDEsMCwyLDAsMSwwLAogICAgICAgIDQsIDAsMSwwLDIsMCwxLDAsMywwLDEsMCwy
LDAsMSwwLAogICAgICAgIDYsIDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLAogICAgICAg
IDQsIDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLAogICAgICAgIDUsIDAsMSwwLDIsMCwx
LDAsMywwLDEsMCwyLDAsMSwwLAogICAgICAgIDQsIDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAs
MSwwLAogICAgICAgIDcsIDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLAogICAgICAgIDQs
IDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLAogICAgICAgIDUsIDAsMSwwLDIsMCwxLDAs
MywwLDEsMCwyLDAsMSwwLAogICAgICAgIDQsIDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSww
LAogICAgICAgIDYsIDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLAogICAgICAgIDQsIDAs
MSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLAogICAgICAgIDUsIDAsMSwwLDIsMCwxLDAsMyww
LDEsMCwyLDAsMSwwLAogICAgICAgIDQsIDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwIH07
CgpzdGF0aWMgaW50IGxvd2VzdCh1OCBpKQp7CgogICAgICAgIHU4IGkxID0gaTw8MzI7CiAgICAg
ICAgaWYgKGkxKSB7CiAgICAgICAgICAgICAgICB1OCBpMTEgPSBpMTw8MTY7CiAgICAgICAgICAg
ICAgICBpZiAoaTExKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHU4IGkxMTEgPSBpMTE8PDg7
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpMTExKSByZXR1cm4gbG93ZXN0dGFibGVbaTEx
MT4+NTZdOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiA4K2xvd2VzdHRhYmxl
W2kxMT4+NTZdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgdTggaTExMiA9IGkxPDw4OwogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaTExMikgcmV0dXJuIDE2K2xvd2VzdHRhYmxlW2kxMTI+PjU2XTsKICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gMjQrbG93ZXN0dGFibGVbaTE+PjU2XTsK
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgdTggaTEyID0gaTw8MTY7CiAgICAgICAgICAgICAgICBpZiAoaTEy
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHU4IGkxMjEgPSBpMTI8PDg7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpMTIxKSByZXR1cm4gMzIrbG93ZXN0dGFibGVbaTEyMT4+NTZdOwog
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiA0MCtsb3dlc3R0YWJsZVtpMTI+PjU2
XTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHU4IGkxMjIgPSBpPDw4OwogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaTEyMikgcmV0dXJuIDQ4K2xvd2VzdHRhYmxlW2kxMjI+PjU2XTsKICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZSByZXR1cm4gNTYrbG93ZXN0dGFibGVbaT4+NTZdOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiMgMTc3ICJoZWFwLm9sZC5jIgp9CgoK
CgpzdGF0aWMgdm9pZCBzZXRiaXQodTggKmJpdGZpZWxkLCB1NCBiaXRudW1iZXIpCnsKICAgICAg
ICBiaXRmaWVsZFtiaXRudW1iZXIvNjRdIHw9CiAgICAgICAgICAoKHU4KSAxKSA8PCAoYml0bnVt
YmVyJTY0KTsKfQoKc3RhdGljIHZvaWQgY2xlYXJiaXQodTggKmJpdGZpZWxkLCB1NCBiaXRudW1i
ZXIpCnsKICAgICAgICBiaXRmaWVsZFtiaXRudW1iZXIvNjRdICY9CiAgICAgICAgICAgfigodTgp
IDEpIDw8IChiaXRudW1iZXIlNjQpOwp9CgpzdGF0aWMgYm9vbCBpc2JpdHNldCh1OCAqYml0Zmll
bGQsIHU0IGJpdG51bWJlcikKewogICAgICAgIHJldHVybiAoIGJpdGZpZWxkW2JpdG51bWJlci82
NF0gJgogICAgICAgICAgICggKCh1OCkgMSkgPDwgKGJpdG51bWJlciU2NCkgKSApICE9IDA7Cn0K
CnN0YXRpYyBib29sIGlzYml0Y2xlYXIodTggKmJpdGZpZWxkLCB1NCBiaXRudW1iZXIpCnsKICAg
ICAgICByZXR1cm4gKCBiaXRmaWVsZFtiaXRudW1iZXIvNjRdICYKICAgICAgICAgICAgKCAoKHU4
KSAxKSA8PCAoYml0bnVtYmVyJTY0KSApICkgPT0gMDsKfQojIDIxMyAiaGVhcC5vbGQuYyIKc3Rh
dGljIHZvaWQgY2xlYXJiaXRmaWVsZCh1OCAqYml0ZmllbGQsIHU0IGZpZWxkc2l6ZSkKewogICAg
ICAgIHU0IGksdDsKICAgICAgICB0ID0gKCAoICgoZmllbGRzaXplKSsoNjQpLTEpIC8gKDY0KSkq
KDY0KSApIC8gNjQ7CiAgICAgICAgZm9yIChpPTA7IGk8dDsgaSsrKSBiaXRmaWVsZFtpXSA9IDA7
Cn0KIyAyMjcgImhlYXAub2xkLmMiCnN0YXRpYyB2b2lkIG1hc2tmaWVsZHdpdGhmaWVsZCAodTgq
IGJpdGZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4ICptYXNrZmllbGQs
IHU0IGZpZWxkc2l6ZSkKewogICAgICAgIHU0IGksdDsKICAgICAgICB0ID0gKCAoICgoZmllbGRz
aXplKSsoNjQpLTEpIC8gKDY0KSkqKDY0KSApIC8gNjQ7CiAgICAgICAgZm9yIChpPTA7IGk8dDsg
aSsrKSBiaXRmaWVsZFtpXSAmPSBtYXNrZmllbGRbaV07Cn0KIyAyNDUgImhlYXAub2xkLmMiCnN0
YXRpYyB1NCBmaW5kbmV4dHNldGJpdCh1OCogYml0ZmllbGQsIHU0IGZpZWxkc2l6ZSwgdTQgYml0
bnVtYmVyKQp7CiAgICAgICAgdTggcGF0dGVybjsKCiAgICAgICAgZm9yICg7OykgewogICAgICAg
ICAgICAgICAgaWYgKGJpdG51bWJlciA+PSBmaWVsZHNpemUpIHJldHVybiBmaWVsZHNpemU7Cgog
ICAgICAgICAgICAgICAgcGF0dGVybiA9IGJpdGZpZWxkW2JpdG51bWJlci82NF07CiAgICAgICAg
ICAgICAgICBwYXR0ZXJuID4+PSAoYml0bnVtYmVyJTY0KTsKICAgICAgICAgICAgICAgIGlmIChw
YXR0ZXJuKSByZXR1cm4gYml0bnVtYmVyICsgbG93ZXN0KHBhdHRlcm4pOwoKICAgICAgICAgICAg
ICAgIGJpdG51bWJlciA9ICgoYml0bnVtYmVyICsgNjQpIC8gNjQpICogNjQ7CiAgICAgICAgICAg
ICAgICB9Cn0KIyAyNzAgImhlYXAub2xkLmMiCnN0YXRpYyB1NCBmaW5kbmV4dGNvbWJpbmF0aW9u
X3NldF91bnNldAogICAgICAgICh1OCAqYml0ZmllbGQxLCB1OCogYml0ZmllbGQyLCB1NCBmaWVs
ZHNpemUsIHU0IGJpdG51bWJlcikKewogICAgICAgIHU4IHBhdHRlcm47CgogICAgICAgIGZvciAo
OzspIHsKICAgICAgICAgICAgICAgIGlmIChiaXRudW1iZXIgPj0gZmllbGRzaXplKSByZXR1cm4g
ZmllbGRzaXplOwoKICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBiaXRmaWVsZDFbYml0bnVtYmVy
LzY0XQogICAgICAgICAgICAgICAgICAgICAgICAgICYgKH5iaXRmaWVsZDJbYml0bnVtYmVyLzY0
XSk7CiAgICAgICAgICAgICAgICBwYXR0ZXJuID4+PSAoYml0bnVtYmVyJTY0KTsKICAgICAgICAg
ICAgICAgIGlmIChwYXR0ZXJuKSByZXR1cm4gYml0bnVtYmVyICsgbG93ZXN0KHBhdHRlcm4pOwoK
ICAgICAgICAgICAgICAgIGJpdG51bWJlciA9ICgoYml0bnVtYmVyICsgNjQpIC8gNjQpICogNjQ7
CiAgICAgICAgICAgICAgICB9Cn0KIyAyOTYgImhlYXAub2xkLmMiCnN0YXRpYyB2b2lkIG1lbWxp
c3RfaW5pdCAoKQp7CiAgICAgICAgdTQgaTsKICAgICAgICBmb3IgKGk9MDsgaTwxMjg7IGkrKykg
bWVtbGlzdFtpXSA9ICgodm9pZCAqKTApOwogICAgICAgIGNsZWFyYml0ZmllbGQgKG1lbWxpc3Ri
aXRzLCAxMjgpOwogICAgICAgIGJpZ21lbWxpc3QgPSAoKHZvaWQgKikwKTsKfQojIDMxMyAiaGVh
cC5vbGQuYyIKc3RhdGljIHZvaWQgbWVtbGlzdF9hZGRyYW5nZSAodTQgZnJlZXN0YXJ0LCB1NCBm
cmVlc2l6ZSkKewogICAgICAgIGlmIChmcmVlc2l6ZT49MTI4KSB7CiAgICAgICAgICAgICAgICBi
aWdtZW1hcmVhICptID0gKGJpZ21lbWFyZWEqKSAoaGVhcCtmcmVlc3RhcnQpOwogICAgICAgICAg
ICAgICAgbSAtPiBuZXh0ID0gYmlnbWVtbGlzdDsKICAgICAgICAgICAgICAgIG0gLT4gc2l6ZSA9
IGZyZWVzaXplOwogICAgICAgICAgICAgICAgYmlnbWVtbGlzdCA9IG07CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoZnJlZXNpemUqOD49c2l6ZW9m
KG1lbWFyZWEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lbWFyZWEgKm0gPSAobWVtYXJl
YSopIChoZWFwK2ZyZWVzdGFydCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG0gLT4gbmV4dCA9
IG1lbWxpc3RbZnJlZXNpemVdOwogICAgICAgICAgICAgICAgICAgICAgICBtZW1saXN0W2ZyZWVz
aXplXSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgIHNldGJpdCAobWVtbGlzdGJpdHMsIGZy
ZWVzaXplKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQp9CiMg
MzQ5ICJoZWFwLm9sZC5jIgpzdGF0aWMgdm9pZCBtZW1saXN0X2dldHN1aXRhYmxlICh1NCAqZnJl
ZXN0YXJ0LCB1NCAqZnJlZWxlbmd0aCwgdTQgbGVuZ3RoKQp7CiAgICAgICAgYmlnbWVtYXJlYSAq
bTsKICAgICAgICBiaWdtZW1hcmVhICpwcmV2bSA9ICgodm9pZCAqKTApOwoKICAgICAgICBpZiAo
bGVuZ3RoPDEyOCkgewogICAgICAgICAgICAgICAgdTQgZmlyc3RmcmVlbGVuZ3RoOwoKICAgICAg
ICAgICAgICAgIGlmIChtZW1saXN0W2xlbmd0aF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAg
Zmlyc3RmcmVlbGVuZ3RoID0gbGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RmcmVlbGVuZ3Ro
ID0gZmluZG5leHRzZXRiaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtbGlz
dGJpdHMsIDEyOCwgbGVuZ3RoKzMpOwoKCgogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAg
ICAgICAgICAgICAgaWYgKGZpcnN0ZnJlZWxlbmd0aDwxMjgpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgbWVtYXJlYSAqbSA9IG1lbWxpc3RbZmlyc3RmcmVlbGVuZ3RoXTsKICAgICAgICAgICAg
ICAgICAgICAgICAgbWVtbGlzdFtmaXJzdGZyZWVsZW5ndGhdID0gbS0+bmV4dDsKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtLT5uZXh0KSBjbGVhcmJpdCAobWVtbGlzdGJpdHMsIGZpcnN0
ZnJlZWxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICpmcmVlc3RhcnQgPSAoKGhlYXBi
bG9jayopIG0pIC0gaGVhcDsKICAgICAgICAgICAgICAgICAgICAgICAgKmZyZWVsZW5ndGggPSBm
aXJzdGZyZWVsZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICBtID0gYmlnbWVtbGlz
dDsKICAgICAgICB3aGlsZSAobSkgewogICAgICAgICAgICAgICAgaWYgKG0tPnNpemUgPj0gbGVu
Z3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2bSkgcHJldm0tPm5leHQgPSBt
LT5uZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgYmlnbWVtbGlzdCA9
IG0tPm5leHQ7CgogICAgICAgICAgICAgICAgICAgICAgICAqZnJlZXN0YXJ0ID0gKChoZWFwYmxv
Y2sqKSBtKSAtIGhlYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICpmcmVlbGVuZ3RoID0gbS0+
c2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDsKICAgICAgICAgICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgIHByZXZtID0gbTsKICAgICAgICAgICAgICAgIG0gPSBt
LT5uZXh0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAqZnJlZWxlbmd0aD0wOwp9CiMgNDA4
ICJoZWFwLm9sZC5jIgpzdGF0aWMgdm9pZCBtYXJrcmVmZXJlbmNlcyAodm9pZCAqKnJzdGFydCwg
dm9pZCAqKnJlbmQpOwoKc3RhdGljIHZvaWQgbWFyayAoaGVhcGJsb2NrICpvYmopCnsKICAgICAg
ICB1NCBibG9ja251bSxvYmplY3RlbmQ7CgogICAgICAgIGlmICgobG9uZykgb2JqICYgKDggLTEp
KSByZXR1cm47CgogICAgICAgIGlmIChvYmo8aGVhcCkgcmV0dXJuOwogICAgICAgIGlmIChvYmo+
PShoZWFwK3RvcG9maGVhcCkgKSByZXR1cm47CgogICAgICAgIGJsb2NrbnVtID0gb2JqLWhlYXA7
CiAgICAgICAgaWYgKCBpc2JpdGNsZWFyKHN0YXJ0Yml0cywgYmxvY2tudW0pICkgcmV0dXJuOwog
ICAgICAgIGlmICggaXNiaXRzZXQobWFya2JpdHMsIGJsb2NrbnVtKSApIHJldHVybjsKCgogICAg
ICAgIHNldGJpdCAobWFya2JpdHMsIGJsb2NrbnVtKTsKCiAgICAgICAgaWYgKCBpc2JpdGNsZWFy
KHJlZmVyZW5jZWJpdHMsIGJsb2NrbnVtKSApIHJldHVybjsKCiAgICAgICAgb2JqZWN0ZW5kID0g
ZmluZG5leHRzZXRiaXQgKHN0YXJ0Yml0cywgdG9wb2ZoZWFwLCBibG9ja251bSsxKTsKICAgICAg
ICBtYXJrcmVmZXJlbmNlcyAoKHZvaWQqKilvYmosICh2b2lkKiopIChoZWFwK29iamVjdGVuZCkg
KTsKfQojIDQ0MCAiaGVhcC5vbGQuYyIKc3RhdGljIHZvaWQgbWFya3JlZmVyZW5jZXMgKHZvaWQg
Kipyc3RhcnQsIHZvaWQgKipyZW5kKQp7CiAgICAgICAgdm9pZCAqKnB0cjsKCiAgICAgICAgZm9y
IChwdHI9cnN0YXJ0OyBwdHI8cmVuZDsgcHRyKyspIG1hcmsgKCpwdHIpOwp9CiMgNDU3ICJoZWFw
Lm9sZC5jIgpzdGF0aWMgdm9pZCBtYXJrc3RhY2sgKCkKewogICAgICAgIHZvaWQgKmR1bW15OwoK
CiAgICB0aHJlYWQgKmFUaHJlYWQ7CgogICAgICAgIGlmIChjdXJyZW50VGhyZWFkID09ICgodm9p
ZCAqKTApKSB7CiAgICAgICAgICAgICAgICB2b2lkICoqdG9wX29mX3N0YWNrID0gJmR1bW15OwoK
ICAgICAgICAgICAgICAgIGlmICh0b3Bfb2Zfc3RhY2sgPiBib3R0b21fb2Zfc3RhY2spCiAgICAg
ICAgICAgICAgICAgICAgICAgIG1hcmtyZWZlcmVuY2VzKGJvdHRvbV9vZl9zdGFjaywgdG9wX29m
X3N0YWNrKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgbWFy
a3JlZmVyZW5jZXModG9wX29mX3N0YWNrLCBib3R0b21fb2Zfc3RhY2spOwogICAgICAgIH0KICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGZvciAoYVRocmVhZCA9IGxpdmVUaHJlYWRzOyBh
VGhyZWFkICE9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBhVGhyZWFkID0gKGNvbnRleHRz
WyhhVGhyZWFkKS0+UHJpdmF0ZUluZm8gLSAxXSkubmV4dGxpdmUpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgbWFyaygoaGVhcGJsb2NrKilhVGhyZWFkKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKChjb250ZXh0c1soYVRocmVhZCktPlByaXZhdGVJbmZvIC0gMV0pLnVzZWRTdGFja1Rv
cCA+IChjb250ZXh0c1soYVRocmVhZCktPlByaXZhdGVJbmZvIC0gMV0pLnN0YWNrRW5kKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtyZWZlcmVuY2VzKCh2b2lkKiopKGNvbnRl
eHRzWyhhVGhyZWFkKS0+UHJpdmF0ZUluZm8gLSAxXSkuc3RhY2tFbmQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKikoY29u
dGV4dHNbKGFUaHJlYWQpLT5Qcml2YXRlSW5mbyAtIDFdKS51c2VkU3RhY2tUb3ApOwogICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFy
a3JlZmVyZW5jZXMoKHZvaWQqKikoY29udGV4dHNbKGFUaHJlYWQpLT5Qcml2YXRlSW5mbyAtIDFd
KS51c2VkU3RhY2tUb3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHZvaWQqKikoY29udGV4dHNbKGFUaHJlYWQpLT5Qcml2YXRlSW5m
byAtIDFdKS5zdGFja0VuZCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBtYXJrcmVm
ZXJlbmNlcygodm9pZCoqKSZ0aHJlYWRRaGVhZFswXSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh2b2lkKiopJnRocmVhZFFoZWFkWzEwXSk7CiAgICAgICAgfQoj
IDQ5NyAiaGVhcC5vbGQuYyIKfQojIDUwOSAiaGVhcC5vbGQuYyIKc3RhdGljIHZvaWQgc2VhcmNo
bGl2ZWZpbmFsaXplZXMgKCkKewogICAgICAgIGZpbmFsaXplcm5vZGUgKmZuID0gbGl2ZWZpbmFs
aXplZXM7CiAgICAgICAgZmluYWxpemVybm9kZSAqbGFzdGxpdmUgPSAoKHZvaWQgKikwKTsKCiAg
ICAgICAgd2hpbGUgKGZuKSB7CgoKICAgICAgICAgICAgICAgIGlmIChpc2JpdGNsZWFyIChtYXJr
Yml0cywgZm4tPm9ianN0YXJ0KSkgewogICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZXJu
b2RlICpuZXh0Zm4gPSBmbi0+bmV4dDsKCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmsgKGhl
YXAgKyBmbi0+b2Jqc3RhcnQpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RsaXZl
KSBsYXN0bGl2ZSAtPiBuZXh0ID0gbmV4dGZuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIGxpdmVmaW5hbGl6ZWVzID0gbmV4dGZuOwoKICAgICAgICAgICAgICAg
ICAgICAgICAgZm4gLT4gbmV4dCA9IGRlYWRmaW5hbGl6ZWVzOwogICAgICAgICAgICAgICAgICAg
ICAgICBkZWFkZmluYWxpemVlcyA9IGZuOwoKICAgICAgICAgICAgICAgICAgICAgICAgZm4gPSBu
ZXh0Zm47CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICAgICBsYXN0bGl2ZSA9IGZuOwogICAgICAgICAgICAgICAgICAg
ICAgICBmbiA9IGZuLT5uZXh0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICB9Cn0KIyA1NTAgImhlYXAub2xkLmMiCnN0YXRpYyB2b2lkIGZpbmFsaXplZGVhZCgpCnsK
ICAgICAgICBmaW5hbGl6ZXJub2RlICpmbiA9IGRlYWRmaW5hbGl6ZWVzOwogICAgICAgIGRlYWRm
aW5hbGl6ZWVzID0gKCh2b2lkICopMCk7CgogICAgICAgIHdoaWxlIChmbikgewogICAgICAgICAg
ICAgICAgZmluYWxpemVybm9kZSAqbmV4dGZuID0gZm4tPm5leHQ7CgogICAgICAgICAgICAgICAg
YXNtX2NhbGxqYXZhbWV0aG9kIChmbi0+ZmluYWxpemVyLCBoZWFwK2ZuLT5vYmpzdGFydCwgKCh2
b2lkICopMCksKCh2b2lkICopMCksKCh2b2lkICopMCkpOwogICAgICAgICAgICAgICAgbWVtX2Zy
ZWUgKGZuLCBzaXplb2YoZmluYWxpemVybm9kZSkgKTsKCiAgICAgICAgICAgICAgICBmbiA9IG5l
eHRmbjsKICAgICAgICAgICAgICAgIH0KCn0KIyA1NzQgImhlYXAub2xkLmMiCnN0YXRpYyB2b2lk
IGhlYXBfZG9jb2xsZWN0ICgpCnsKICAgICAgICB1NCBmcmVlc3RhcnQsZnJlZWVuZDsKICAgICAg
ICB2b2lkICoqcDsKICAgICAgICB1OCAqZHVtbXk7CiAgICAgICAgdTQgaGVhcGZyZWVtZW07CiAg
ICAgICAgdTQgb2xkZmlsbGdyYWRlOwoKCiAgICAgICAgaWYgKHJ1bnZlcmJvc2UpIHsKICAgICAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZG9pbmcgZ2FyYmFnZSBjb2xsZWN0aW9uXG4iKTsK
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgY2xlYXJiaXRmaWVsZCAobWFya2JpdHMsIHRvcG9m
aGVhcCk7CgoKICAgICAgICBhc21fZHVtcHJlZ2lzdGVyc2FuZGNhbGwgKG1hcmtzdGFjayk7CgoK
CiAgICAgICAgcCA9IGNoYWluX2ZpcnN0IChhbGxnbG9iYWxyZWZlcmVuY2VzKTsKICAgICAgICB3
aGlsZSAocCkgewogICAgICAgICAgICAgICAgbWFyayAoKnApOwogICAgICAgICAgICAgICAgcCA9
IGNoYWluX25leHQgKGFsbGdsb2JhbHJlZmVyZW5jZXMpOwogICAgICAgICAgICAgICAgfQoKCiAg
ICAgICAgc2VhcmNobGl2ZWZpbmFsaXplZXMoKTsKCgoKICAgICAgICBtYXNrZmllbGR3aXRoZmll
bGQgKHJlZmVyZW5jZWJpdHMsIG1hcmtiaXRzLCB0b3BvZmhlYXApOwoKCgogICAgICAgIG1lbWxp
c3RfaW5pdCAoKTsKCgoKCiAgICAgICAgaGVhcGZyZWVtZW0gPSAwOwogICAgICAgIGZyZWVlbmQ9
MDsKICAgICAgICBmb3IgKDs7KSB7CgogICAgICAgICAgICAgICAgZnJlZXN0YXJ0ID0gZmluZG5l
eHRjb21iaW5hdGlvbl9zZXRfdW5zZXQKICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXJ0Yml0
cywgbWFya2JpdHMsIHRvcG9maGVhcCwgZnJlZWVuZCk7CgoKICAgICAgICAgICAgICAgIGlmIChm
cmVlc3RhcnQ+PXRvcG9maGVhcCkgZ290byBmcmVlbWVtZmluaXNoZWQ7CgoKICAgICAgICAgICAg
ICAgIHNldGJpdCAobWFya2JpdHMsIGZyZWVzdGFydCk7CgoKICAgICAgICAgICAgICAgIGZyZWVl
bmQgPSBmaW5kbmV4dHNldGJpdCAobWFya2JpdHMsIHRvcG9maGVhcCwgZnJlZXN0YXJ0KzEpOwoj
IDY0MCAiaGVhcC5vbGQuYyIKICAgICAgICAgICAgICAgICAgICAgICAgbWVtbGlzdF9hZGRyYW5n
ZSAoZnJlZXN0YXJ0LCBmcmVlZW5kLWZyZWVzdGFydCk7CgoKICAgICAgICAgICAgICAgICAgICAg
ICAgaGVhcGZyZWVtZW0gKz0gKGZyZWVlbmQtZnJlZXN0YXJ0KTsKCgoKICAgICAgICB9CgogICAg
ICAgIGZyZWVtZW1maW5pc2hlZDoKCgogICAgICAgIGR1bW15ID0gbWFya2JpdHM7CiAgICAgICAg
bWFya2JpdHMgPSBzdGFydGJpdHM7CiAgICAgICAgc3RhcnRiaXRzID0gZHVtbXk7CgoKCiAgICAg
ICAgb2xkZmlsbGdyYWRlID0gaGVhcGZpbGxncmFkZTsKICAgICAgICBoZWFwZmlsbGdyYWRlID0g
dG9wb2ZoZWFwIC0gaGVhcGZyZWVtZW07CiAgICAgICAgY29sbGVjdHRocmVhc2hvbGQgPSBoZWFw
ZmlsbGdyYWRlKjM7CgoKICAgICAgICBpZiAoY29sbGVjdHZlcmJvc2UpIHsKICAgICAgICAgICAg
ICAgIHNwcmludGYgKGxvZ3RleHQsICJHYXJiYWdlIENvbGxlY3Rpb246ICBwcmV2aW91cy9ub3cg
PSAlZCAvICVkICIsCiAgICAgICAgICAgICAgICAgIChpbnQpIChvbGRmaWxsZ3JhZGUgKiA4KSwK
ICAgICAgICAgICAgICAgICAgKGludCkgKGhlYXBmaWxsZ3JhZGUgKiA4KSApOwogICAgICAgICAg
ICAgICAgZG9sb2cgKCk7CiAgICAgICAgICAgICAgICB9CgoKCgoKCiAgICAgICAgZmluYWxpemVk
ZWFkICgpOwoKfQojIDY4NiAiaGVhcC5vbGQuYyIKdm9pZApnY19pbml0ICh2b2lkKQp7Cn0KIyA2
OTggImhlYXAub2xkLmMiCnZvaWQKZ2NfY2FsbCAodm9pZCkKewoKICAgICAgICB1MSBkdW1teTsK
CiAgICAgICAgKCh2b2lkKSAoKGJsb2NrSW50cyA9PSAwKSA/IDAgOiAoX19hc3NlcnRfZmFpbCAo
ImJsb2NrSW50cyA9PSAwIiwgImhlYXAub2xkLmMiLCA3MDQsIF9fUFJFVFRZX0ZVTkNUSU9OX18p
LCAwKSkpOwoKICAgICAgICBibG9ja0ludHMrKzsKICAgICAgICBpZiAoY3VycmVudFRocmVhZCA9
PSAoKHZvaWQgKikwKSB8fCBjdXJyZW50VGhyZWFkID09IG1haW5UaHJlYWQpIHsKICAgICAgICAg
ICAgICAgIChjb250ZXh0c1sobWFpblRocmVhZCktPlByaXZhdGVJbmZvIC0gMV0pLnVzZWRTdGFj
a1RvcCA9ICZkdW1teTsKICAgICAgICAgICAgICAgIGhlYXBfZG9jb2xsZWN0KCk7CiAgICAgICAg
fQogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGFzbV9zd2l0Y2hzdGFja2FuZGNhbGwoKGNv
bnRleHRzWyhtYWluVGhyZWFkKS0+UHJpdmF0ZUluZm8gLSAxXSkudXNlZFN0YWNrVG9wLCBoZWFw
X2RvY29sbGVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAodm9pZCoqKSYoKGNvbnRleHRzWyhjdXJyZW50VGhyZWFkKS0+UHJpdmF0
ZUluZm8gLSAxXSkudXNlZFN0YWNrVG9wKSk7CiAgICAgICAgaWYgKGJsb2NrSW50cyA9PSAxICYm
IG5lZWRSZXNjaGVkdWxlKSB7IHJlc2NoZWR1bGUoKTsgfSBibG9ja0ludHMtLTsKCgoKfQojIDcz
MyAiaGVhcC5vbGQuYyIKdm9pZCBoZWFwX2luaXQgKHU0IGhlYXBieXRlc2l6ZSwgdTQgaGVhcGJ5
dGVzdGFydHNpemUsIHZvaWQgKipzdGFja2JvdHRvbSkKewoKCgogICAgICAgIGhlYXBzaXplID0g
KCAoICgoaGVhcGJ5dGVzaXplKSsoZ2V0cGFnZXNpemUoKSktMSkgLyAoZ2V0cGFnZXNpemUoKSkp
KihnZXRwYWdlc2l6ZSgpKSApOwogICAgICAgIGhlYXBzaXplID0gaGVhcHNpemUvODsKICAgICAg
ICBoZWFwID0gKHZvaWQqKSBtbWFwICgodm9pZCopIDB4MTAwMDAwMDAsIChzaXplX3QpIChoZWFw
c2l6ZSAqIDgpLAogICAgICAgICAgICAgICAweDEgfCAweDIsIDB4MDIgfCAweDIwIHwgMHgxMCwg
LTEsIChvZmZfdCkgMCk7CiAgICAgICAgaWYgKGhlYXAgIT0gKHZvaWQgKikgMHgxMDAwMDAwMCkg
ewogICAgICAgICAgICAgICAgcGVycm9yKCJtbWFwIik7CiAgICAgICAgICAgICAgICBwcmludGYo
ImFkZHJlc3MgPSAlcFxuIiwgaGVhcCk7CiAgICAgICAgICAgICAgICBwYW5pYygibW1hcCBmYWls
ZWRcbiIpOwogICAgICAgICAgICAgICAgfQojIDc1NiAiaGVhcC5vbGQuYyIKICAgICAgICB0b3Bv
ZmhlYXAgPSAwOwogICAgICAgIHN0YXJ0Yml0cyA9ICgodTgqKSBtZW1fYWxsb2MgKCBzaXplb2Yo
dTgpICogKGhlYXBzaXplLzY0KSApKTsKICAgICAgICBtYXJrYml0cyA9ICgodTgqKSBtZW1fYWxs
b2MgKCBzaXplb2YodTgpICogKGhlYXBzaXplLzY0KSApKTsKICAgICAgICByZWZlcmVuY2ViaXRz
ID0gKCh1OCopIG1lbV9hbGxvYyAoIHNpemVvZih1OCkgKiAoaGVhcHNpemUvNjQpICkpOwogICAg
ICAgIGNsZWFyYml0ZmllbGQgKHN0YXJ0Yml0cywgaGVhcHNpemUpOwogICAgICAgIGNsZWFyYml0
ZmllbGQgKG1hcmtiaXRzLCBoZWFwc2l6ZSk7CiAgICAgICAgY2xlYXJiaXRmaWVsZCAocmVmZXJl
bmNlYml0cywgaGVhcHNpemUpOwoKICAgICAgICBoZWFwZmlsbGdyYWRlID0gMDsKICAgICAgICBj
b2xsZWN0dGhyZWFzaG9sZCA9IGhlYXBieXRlc3RhcnRzaXplLzg7CiAgICAgICAgYWxsZ2xvYmFs
cmVmZXJlbmNlcyA9IGNoYWluX25ldyAoKTsKICAgICAgICBib3R0b21fb2Zfc3RhY2sgPSBzdGFj
a2JvdHRvbTsKCiAgICAgICAgbGl2ZWZpbmFsaXplZXMgPSAoKHZvaWQgKikwKTsKICAgICAgICBk
ZWFkZmluYWxpemVlcyA9ICgodm9pZCAqKTApOwp9CiMgNzgwICJoZWFwLm9sZC5jIgp2b2lkIGhl
YXBfY2xvc2UgKCkKewogICAgICAgIHdoaWxlIChsaXZlZmluYWxpemVlcykgewogICAgICAgICAg
ICAgICAgZmluYWxpemVybm9kZSAqbiA9IGxpdmVmaW5hbGl6ZWVzLT5uZXh0OwogICAgICAgICAg
ICAgICAgYXNtX2NhbGxqYXZhbWV0aG9kIChsaXZlZmluYWxpemVlcy0+ZmluYWxpemVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAr
bGl2ZWZpbmFsaXplZXMtPm9ianN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApLCgodm9pZCAqKTApLCgodm9pZCAq
KTApKTsKICAgICAgICAgICAgICAgIG1lbV9mcmVlIChsaXZlZmluYWxpemVlcywgc2l6ZW9mKGZp
bmFsaXplcm5vZGUpICk7CiAgICAgICAgICAgICAgICBsaXZlZmluYWxpemVlcyA9IG47CiAgICAg
ICAgfQoKCgoKICAgICAgICBtZW1fZnJlZSAoc3RhcnRiaXRzLCBzaXplb2YodTgpICogKGhlYXBz
aXplLzY0KSApOwogICAgICAgIG1lbV9mcmVlIChtYXJrYml0cywgc2l6ZW9mKHU4KSAqIChoZWFw
c2l6ZS82NCkgKTsKICAgICAgICBtZW1fZnJlZSAocmVmZXJlbmNlYml0cywgc2l6ZW9mKHU4KSAq
IChoZWFwc2l6ZS82NCkgKTsKICAgICAgICBpZiAoYWxsZ2xvYmFscmVmZXJlbmNlcyAhPSAoKHZv
aWQgKikwKSkKICAgICAgICAgICAgICAgIGNoYWluX2ZyZWUgKGFsbGdsb2JhbHJlZmVyZW5jZXMp
Owp9CiMgODA5ICJoZWFwLm9sZC5jIgp2b2lkIGhlYXBfYWRkcmVmZXJlbmNlICh2b2lkICoqcmVm
bG9jYXRpb24pCnsKICAgICAgICBibG9ja0ludHMrKzsKCiAgICAgICAgY2hhaW5fYWRkbGFzdCAo
YWxsZ2xvYmFscmVmZXJlbmNlcywgcmVmbG9jYXRpb24pOwoKICAgICAgICBpZiAoYmxvY2tJbnRz
ID09IDEgJiYgbmVlZFJlc2NoZWR1bGUpIHsgcmVzY2hlZHVsZSgpOyB9IGJsb2NrSW50cy0tOwp9
CiMgODM0ICJoZWFwLm9sZC5jIgp2b2lkICpoZWFwX2FsbG9jYXRlICh1NCBieXRlbGVuZ3RoLCBi
b29sIHJlZmVyZW5jZXMsIG1ldGhvZGluZm8gKmZpbmFsaXplcikKewogICAgICAgIHU0IGZyZWVz
dGFydCxmcmVlbGVuZ3RoOwogICAgICAgIHU0IGxlbmd0aCA9ICggKCAoKGJ5dGVsZW5ndGgpKyg4
KS0xKSAvICg4KSkqKDgpICkgLyA4OwoKCgoKCiAgICAgICAgYmxvY2tJbnRzKys7CgogICAgICAg
IG1lbWxpc3RfZ2V0c3VpdGFibGUgKCZmcmVlc3RhcnQsICZmcmVlbGVuZ3RoLCBsZW5ndGgpOwoK
b25lbW9yZXRyeToKICAgICAgICBpZiAoIWZyZWVsZW5ndGgpIHsKICAgICAgICAgICAgICAgIGlm
ICgodG9wb2ZoZWFwK2xlbmd0aCA+IGNvbGxlY3R0aHJlYXNob2xkKSB8fAogICAgICAgICAgICAg
ICAgICAgICh0b3BvZmhlYXArbGVuZ3RoID4gaGVhcHNpemUpKSB7CgogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoYmxvY2tJbnRzID09IDEgJiYgbmVlZFJlc2NoZWR1bGUpIHsgcmVzY2hlZHVs
ZSgpOyB9IGJsb2NrSW50cy0tOwogICAgICAgICAgICAgICAgICAgICAgICBnY19jYWxsKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGJsb2NrSW50cysrOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgbWVtbGlzdF9nZXRzdWl0YWJsZSAoJmZyZWVzdGFydCwgJmZyZWVsZW5ndGgsIGxlbmd0aCk7
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmcmVlbGVuZ3RoKSBnb3RvIG9uZW1vcmV0cnk7
CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAodG9wb2ZoZWFw
K2xlbmd0aCA+IGhlYXBzaXplKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNwcmludGYgKGxv
Z3RleHQsICJIZWFwLUFsbG9jYXRpb24gZmFpbGVkIGZvciAlZCBieXRlcyIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoaW50KSBieXRlbGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgZG9sb2coKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrSW50cyA9PSAxICYm
IG5lZWRSZXNjaGVkdWxlKSB7IHJlc2NoZWR1bGUoKTsgfSBibG9ja0ludHMtLTsKICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICgodm9pZCAqKTApOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgZnJlZXN0YXJ0ID0gdG9wb2ZoZWFwOwogICAgICAgICAgICAg
ICAgZnJlZWxlbmd0aCA9IGxlbmd0aDsKICAgICAgICAgICAgICAgIHNldGJpdCAoc3RhcnRiaXRz
LCB0b3BvZmhlYXApOwogICAgICAgICAgICAgICAgdG9wb2ZoZWFwICs9IGxlbmd0aDsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChmcmVlbGVuZ3Ro
Pmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBzZXRiaXQgKHN0YXJ0Yml0cywgZnJl
ZXN0YXJ0K2xlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lbWxpc3RfYWRkcmFuZ2Ug
KGZyZWVzdGFydCtsZW5ndGgsIGZyZWVsZW5ndGgtbGVuZ3RoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICBpZiAocmVmZXJlbmNlcykgc2V0Yml0
IChyZWZlcmVuY2ViaXRzLCBmcmVlc3RhcnQpOwoKICAgICAgICBoZWFwZmlsbGdyYWRlICs9IGxl
bmd0aDsKCiAgICAgICAgaWYgKGZpbmFsaXplcikgewogICAgICAgICAgICAgICAgZmluYWxpemVy
bm9kZSAqbiA9ICgoZmluYWxpemVybm9kZSopIG1lbV9hbGxvYyAoIHNpemVvZihmaW5hbGl6ZXJu
b2RlKSApKTsKICAgICAgICAgICAgICAgIG4gLT4gbmV4dCA9IGxpdmVmaW5hbGl6ZWVzOwogICAg
ICAgICAgICAgICAgbiAtPiBvYmpzdGFydCA9IGZyZWVzdGFydDsKICAgICAgICAgICAgICAgIG4g
LT4gZmluYWxpemVyID0gZmluYWxpemVyOwogICAgICAgICAgICAgICAgbGl2ZWZpbmFsaXplZXMg
PSBuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICBpZiAoYmxvY2tJbnRzID09IDEgJiYgbmVl
ZFJlc2NoZWR1bGUpIHsgcmVzY2hlZHVsZSgpOyB9IGJsb2NrSW50cy0tOwoKICAgICAgICBpZiAo
cnVudmVyYm9zZSkgewogICAgICAgICAgICAgICAgc3ByaW50ZiAobG9ndGV4dCwgIm5ldyByZXR1
cm5zOiAlbHgiLCAobG9uZykgKGhlYXAgKyBmcmVlc3RhcnQpKTsKICAgICAgICAgICAgICAgIGRv
bG9nICgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICByZXR1cm4gKHZvaWQqKSAoaGVhcCAr
IGZyZWVzdGFydCk7Cn0K


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2002-07-10 16:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-07-10  9:32 c/7262: gcc-3.1 on x86 linux gets ice in extract_constrain_insn_cached jakub
  -- strict thread matches above, loose matches on Subject: below --
2002-07-10  8:06 twisti

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).