public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c++/7631: gcc 2.95.3 crashes when compiling a file in the Palm OS emulator
@ 2002-09-13 15:44 nathan
  0 siblings, 0 replies; 2+ messages in thread
From: nathan @ 2002-09-13 15:44 UTC (permalink / raw)
  To: at, gcc-bugs, gcc-prs, joele, nobody

Synopsis: gcc 2.95.3 crashes when compiling a file in the Palm OS emulator

State-Changed-From-To: open->closed
State-Changed-By: nathan
State-Changed-When: Fri Sep 13 15:44:47 2002
State-Changed-Why:
    fixed in 3.2

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


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

* c++/7631: gcc 2.95.3 crashes when compiling a file in the Palm OS emulator
@ 2002-08-19  4:02 joele, at, uma, dot, com
  0 siblings, 0 replies; 2+ messages in thread
From: joele, at, uma, dot, com @ 2002-08-19  4:02 UTC (permalink / raw)
  To: gcc-gnats


>Number:         7631
>Category:       c++
>Synopsis:       gcc 2.95.3 crashes when compiling a file in the Palm OS emulator
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Aug 19 03:26:02 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Joel Estes
>Release:        unknown-1.0
>Organization:
>Environment:
UltraSparc II/Solaris 8
>Description:
There is a problem  compiling the ./SrcShared/MetaMemory.cpp
file in the Palm OS Emulator. It gets the following error:

gcc -DHAVE_DIRENT_H=1 -DSTDC_HEADERS=1 -DHAVE_SYS_ISA_DEFS_H=1 -DHAVE_FCNTL_H=1 -DHAVE_LIMITS_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_TYPE_SOCKLEN_T=1 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DHAVE_MKDIR=1 -DHAVE_MKSTEMP=1 -DHAVE_TEMPNAM=1 -DHAVE_GL=1 -DHAVE_GL_GLU_H=1 -DHAVE_LIBFLTK=1  -I. -I.  -I./../SrcShared -I./../SrcShared/Hardware -I./../SrcShared/Hardware/TRG -I./../SrcShared/Palm/Device -I./../SrcShared/Palm/Platform -I./../SrcShared/Palm/Platform/Core/Hardware/IncsPrv -I./../SrcShared/Palm/Platform/Core/System/IncsPrv -I./../SrcShared/Palm/Platform/Incs -I./../SrcShared/Palm/Platform/Incs/Core -I./../SrcShared/Palm/Platform/Incs/Core/Hardware -I./../SrcShared/Palm/Platform/Incs/Core/System -I./../SrcShared/Palm/Platform/Incs/Core/UI -I./../SrcShared/Palm/Platform/Incs/Libraries -I./../SrcShared/Gzip -I./../SrcShared/jpeg -I./../SrcShared/omnithread -I./../SrcShared/Patches -I./../SrcShared/UAE -I./../SrcUnix -I./../SrcUnix/espws-2.0    --save-temps -DPLATFORM_UNIX=1 -D__PALMOS_TRAPS__=0 -DEMULATION_LEVEL=EMULATION_UNIX -O2  -DHAS_PROFILING=0 -DNDEBUG  -fexceptions -Wall -Wno-multichar -Wno-unknown-pragmas -Wno-conversion  -fpermissive   -g -D_REENTRANT -DPthreadDraftVersion=10 -DPthreadSupportThreadPriority -I/usr/openwin/include -c ./../SrcShared/MetaMemory.cpp
./../SrcShared/MetaMemory.cpp: In function `static enum Errors::EAccessType MetaMemory::AllowForBugs(long unsigned int, long int, int, Errors::EAccessType)':
./../SrcShared/MetaMemory.cpp:435: Internal compiler error.
./../SrcShared/MetaMemory.cpp:435: Please submit a full bug report.
./../SrcShared/MetaMemory.cpp:435: See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make[1]: *** [MetaMemory.o] Error 1
make[1]: Leaving directory `/export/home/local1/pkgs_32/POSE/Emulator_Src_3.4/BuildUnix'
make: *** [all-recursive] Error 1


(The compiler was built from source distribution using the
plain ./configure command, with no special options, and I
have used it to successfully build several dozen other
packages under Solaris 8 ) Attached is the file MetaMemory.ii.
>How-To-Repeat:
The POSE 3.4 distribution is available from the following URL:

http://www.palmos.com/dev/tools/emulator/emulator_archive.html

It requires fltk, as well.
>Fix:

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

IyAxICIuLy4uL1NyY1NoYXJlZC9NZXRhTWVtb3J5LmNwcCIKIAogCgoKCgoKCgoKCgoKIyAxICIu
Li9TcmNTaGFyZWQvRW1Db21tb24uaCIgMQogCiAKCgoKCgoKCgoKCgoKCgogCgogCiAKIAoKIAog
CiAKIAoKCgoKCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKCiMgMSAiLi4vU3JjU2hhcmVkL1N3aXRj
aGVzLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKIAogCiAKIAogCgogCiAKCiMgMzQgIi4uL1NyY1No
YXJlZC9Td2l0Y2hlcy5oIgoKCgkgCgkKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAxIDMgNAogCgoK
CgoKCgojcHJhZ21hIGlkZW50CSJAKCMpaXNhX2RlZnMuaAkxLjIwCTk5LzA1LzA0IFNNSSIKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKIAoKCgoKCiMg
MjY3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9p
bmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAzIDQKCgogCgoKCgoKCiAKCgoKCgoKIAoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCiAKCgoK
IyAzNjYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4z
L2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDMgNAoKCiAKCgoKCgoKCgoKCgp9CgoKCiMgMzcgIi4u
L1NyY1NoYXJlZC9Td2l0Y2hlcy5oIiAyCgoKIyA1MyAiLi4vU3JjU2hhcmVkL1N3aXRjaGVzLmgi
CgoKIAoKIyA3MSAiLi4vU3JjU2hhcmVkL1N3aXRjaGVzLmgiCgoKCQoJCgkKCgkKCQkKCQoKCgoK
CgoKCgoKIyAxMjAgIi4uL1NyY1NoYXJlZC9Td2l0Y2hlcy5oIgoKCQoJCgoKCiAKIAogCiAKCgoJ
CgoKCgogCiAKIAoKCgoKCQoKCgogCiAKIAogCgoKCgogCiAKCgoKCiAKIAoKCgoKIAoKCgoKIAog
CiAKIAoKCgoKIAoKCgoKCQoKCgogCiAKCgoJCgoKCgoKIAoKCgogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIyA1MCAiLi4vU3JjU2hhcmVkL0VtQ29tbW9uLmgiIDIKCgoKIAogCiAKCgoK
CgoKCgojIDkzICIuLi9TcmNTaGFyZWQvRW1Db21tb24uaCIKCgogCiAKIAoKIyAxICIuLi9TcmNT
aGFyZWQvRW1UeXBlcy5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCiAKIAogCgogCgoJdHlwZWRlZglz
aWduZWQgY2hhcgkJCWludDg7Cgl0eXBlZGVmCXVuc2lnbmVkIGNoYXIJCXVpbnQ4OwoKCXR5cGVk
ZWYgc2lnbmVkIHNob3J0CQlpbnQxNjsKCXR5cGVkZWYgdW5zaWduZWQgc2hvcnQJCXVpbnQxNjsK
Cgl0eXBlZGVmIHNpZ25lZCBsb25nCQkJaW50MzI7Cgl0eXBlZGVmIHVuc2lnbmVkIGxvbmcJCXVp
bnQzMjsKCgoKCgoJdHlwZWRlZiBzaWduZWQgbG9uZyBsb25nCWludDY0OwoJdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGxvbmcJdWludDY0OwoKCnR5cGVkZWYgdWludDMyCQkJCWVtdXB0cjsKCnR5cGVk
ZWYgaW50IAkJCQlCb29sOwoKdHlwZWRlZiBpbnQzMgkJCQlFcnJDb2RlOwp0eXBlZGVmIGludDMy
CQkJCVN0ckNvZGU7Cgp0eXBlZGVmIHVpbnQ4CQkJCVNjYWxlVHlwZTsKdHlwZWRlZiBpbnQzMgkJ
CQlSQU1TaXplVHlwZTsKdHlwZWRlZiBpbnQzMgkJCQlFbUNvb3JkOwoKCgoKCiAKCmVudW0gQ2xv
c2VBY3Rpb25UeXBlCnsKCWtTYXZlQWx3YXlzLAoJa1NhdmVBc2ssCglrU2F2ZU5ldmVyCn07CgoK
ZW51bSBMb2dnaW5nVHlwZQp7CglrTm9ybWFsTG9nZ2luZwk9IDB4MDEsCglrR3JlbWxpbkxvZ2dp
bmcJPSAweDAyLAoJa0FsbExvZ2dpbmcJCT0ga05vcm1hbExvZ2dpbmcgfCBrR3JlbWxpbkxvZ2dp
bmcKfTsKCgplbnVtIEVtUmVzZXRUeXBlCnsKCWtSZXNldFN5cywJCQkgCglrUmVzZXRTb2Z0LAkJ
CSAKCWtSZXNldEhhcmQsCQkJIAoJa1Jlc2V0RGVidWcsCQkgCgoJa1Jlc2V0VHlwZU1hc2sJCT0g
MHgwNywKCWtSZXNldEV4dE1hc2sJCT0gMHgwOCwKCWtSZXNldE5vRXh0CQkJPSAweDA4LAoKCWtS
ZXNldFN5c05vRXh0CQk9IGtSZXNldE5vRXh0IHwga1Jlc2V0U3lzLAkgCglrUmVzZXRTb2Z0Tm9F
eHQJCT0ga1Jlc2V0Tm9FeHQgfCBrUmVzZXRTb2Z0LAkgCglrUmVzZXRIYXJkTm9FeHQJCT0ga1Jl
c2V0Tm9FeHQgfCBrUmVzZXRIYXJkLAkgCglrUmVzZXREZWJ1Z05vRXh0CT0ga1Jlc2V0Tm9FeHQg
fCBrUmVzZXREZWJ1ZwkgCn07CgoKZW51bSBFbUVycm9ySGFuZGxpbmdPcHRpb24KewoJa1Nob3cs
CglrQ29udGludWUsCglrUXVpdCwKCWtTd2l0Y2gKfTsKCgoKIyA5OSAiLi4vU3JjU2hhcmVkL0Vt
Q29tbW9uLmgiIDIKCiAKCgogCiAKIAoKCgoKCgoJCiMgMSAiLi4vU3JjVW5peC9FbUNvbW1vblVu
aXguaCIgMQogCiAKCgoKCgoKCgoKCgoKCgogCgogCiAKIAogCiAKIAoKCgoKIAoKIyAxICIuLi9T
cmNTaGFyZWQvUGFsbS5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1Bh
bG1QYWNrLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgcGFjaygyKQoKIyAx
NyAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKCiAKCgoKCiAKCgoKCgoKCgoKCgogCgogCiAKCgkK
IyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0J1aWxkRGVmaW5lcy5oIiAxCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCiAKCgoKCgoKCiAKIAogCiAKIAogCgoK
CgogCgoKCgogCiAKCgoKCiAKIAoKCgoKCiAKIAoKCgoKCgoKCgogCiAKIAogCgoKCgoKIAogCiAK
IAogCgoKCgoKIAogCgoKCgogCiAKIAogCgoKCgoKIAogCiAKCgoKCiAKIAoKCgoKIAogCgoKCgog
CiAKCgoKCiAKCgoKCgogCiAKIAogCgoKCgoKCgoKCgojIDQxICIuLi9TcmNTaGFyZWQvUGFsbS5o
IiAyCgoKCSAKCSAKCSAKCSAKCgkKCgoJCQoJCgoKCgoKCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxt
L1BsYXRmb3JtL0luY3MvUGFsbVR5cGVzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CiAKIAogCgogCiAKIAogCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9CdWls
ZERlZmF1bHRzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKIAogCiAKIAog
CiAKCgogCgoKCgoKCgoKCgoKCgoKCQoKCgoKCgkKCgkKIyA3MyAiLi4vU3JjU2hhcmVkL1BhbG0v
UGxhdGZvcm0vSW5jcy9CdWlsZERlZmF1bHRzLmgiCgoKCgoKCgogCgoKCgogCiAKCgoKCiAKCgoK
CiAKCgkKCgogCgoJCgoKIAoKCQoKCgoJCgkgCgkgCgkgCgkKCgogCgoKICAgCgoKCgoKCgkgICAK
ICAgCgojIDE0MCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9CdWlsZERlZmF1bHRz
LmgiCgoKCiAKCiAgIAoKCgkgICAKICAgCgoKCgoJCgoKIAoKCQoKCiAKCgkKCgoKCQoKCgoJCgoK
CgkKCgoKIAogCiAKIAoKCgkKCgogCgoJCgoKIAoKCQoKCiAKIAoKCQoKCgoKCQoJIAoJIAoJIAoJ
CgoKCgogCiAKIAoKCQoKCgoJCgoKCgkKCgoKCQoKCiAKCgkKCgogCgoJCgoKIAoKCQoKCiAKCgkg
CgkKCgogCgoJIAoJCgoKIAoKCSAKCQoKCiAKCgkgCgkKCgogCgoJIAoJCgoKIAoKCQoKCiAKCgkK
CgogCiAKIAoKCgoKCgoJCgoKCiAKIAogCiAKIAoKCiMgMzUgIi4uL1NyY1NoYXJlZC9QYWxtL1Bs
YXRmb3JtL0luY3MvUGFsbVR5cGVzLmgiIDIKCgoKIAoKCgoKCgoKCgoKCgogCgoKIAoKCgoKCgoK
IAp0eXBlZGVmIHNpZ25lZCBjaGFyCQlJbnQ4Owp0eXBlZGVmIHNpZ25lZCBzaG9ydAkJSW50MTY7
CQp0eXBlZGVmIHNpZ25lZCBsb25nCQlJbnQzMjsKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIJVUlu
dDg7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIFVJbnQxNjsKdHlwZWRlZiB1bnNpZ25lZCBsb25n
ICAgVUludDMyOwoKCgogCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIJQm9vbGVhbjsKCgp0eXBlZGVm
IGNoYXIJCQkJQ2hhcjsKdHlwZWRlZiBVSW50MTYJCQkJV0NoYXI7CQkgCgp0eXBlZGVmIFVJbnQx
NgkJCQlFcnI7Cgp0eXBlZGVmIFVJbnQzMgkJCQlMb2NhbElEOwkJIAoKdHlwZWRlZiBJbnQxNiAJ
CQkJQ29vcmQ7CQkgCgoKdHlwZWRlZiB2b2lkICoJCQkJTWVtUHRyOwkJIAp0eXBlZGVmIHN0cnVj
dCBfb3BhcXVlICpNZW1IYW5kbGU7CSAKCgoKdHlwZWRlZiBJbnQzMiAoKlByb2NQdHIpKCk7CgoK
CiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgogCgoJCiMgMTMyICIuLi9TcmNTaGFyZWQvUGFsbS9Q
bGF0Zm9ybS9JbmNzL1BhbG1UeXBlcy5oIgoKICAgICAgCgoKCgoJCgoKCgoKIAoKCgogCiAKCgoK
IAoKCgoKCgoKIAoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCQoKCgkJCgkKCgoKIAoKCgoKCgoK
CgoKCgoKCiAKCgkKCQoJCgoJCgoKCgkKCgoKCgkKCgoKCgogCgoKCgoKCgojIDI0OCAiLi4vU3Jj
U2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9QYWxtVHlwZXMuaCIKCgojIDI2NCAiLi4vU3JjU2hh
cmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9QYWxtVHlwZXMuaCIKCgoKCgoKCgojIDI4MiAiLi4vU3Jj
U2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9QYWxtVHlwZXMuaCIKCgoKIAoKCgoKCgoKIAoKCgoJ
CgoKCgkKCgojIDU4ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgogCiAKCgkgCgogCiAKCQkKIyAx
ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0JpdG1hcC5oIiAx
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0v
SW5jcy9Db3JlL0NvcmVUcmFwcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAogCgogCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZv
cm0vSW5jcy9Db3JlL0hhcmR3YXJlL002OEtId3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgogCgoKCgoKIAoKCnR5cGVkZWYgc3RydWN0IE02OEtFeGNUYWJsZVR5cGUgewoJVUludDMyCWlu
aXRTdGFjazsJCQkJCQkJCSAKCVVJbnQzMglpbml0UEM7CQkJCQkJCQkJIAoJCglVSW50MzIJYnVz
RXJyOwkJCQkJCQkJCSAKCVVJbnQzMglhZGRyZXNzRXJyOwkJCQkJCQkJIAoJVUludDMyCWlsbGVn
YWxJbnN0cjsJCQkJCQkJIAoJVUludDMyCWRpdmlkZUJ5WmVybzsJCQkJCQkJIAoJVUludDMyCWNo
azsJCQkJCQkJCQkJIAoJVUludDMyCXRyYXA7CQkJCQkJCQkJCSAKCVVJbnQzMglwcml2aWxlZ2U7
CQkJCQkJCQkgCglVSW50MzIJdHJhY2U7CQkJCQkJCQkJIAoJVUludDMyCWFUcmFwOwkJCQkJCQkJ
CSAKCVVJbnQzMglmVHJhcDsJCQkJCQkJCQkgCglVSW50MzIJcmVzZXJ2ZWQxMjsJCQkJCQkJCSAK
CVVJbnQzMgljb3Byb2M7CQkJCQkJCQkJIAoJVUludDMyCWZvcm1hdEVycjsJCQkJCQkJCSAKCVVJ
bnQzMgl1bml0aWFsaXplZEludDsJCQkJCQkgCgkKCVVJbnQzMglyZXNlcnZlZFs4XTsJCQkJCQkJ
IAoJCglVSW50MzIJc3B1cmlvdXNJbnQ7CQkJCQkJCSAKCVVJbnQzMglhdXRvVmVjMTsJCQkJCQkJ
CSAKCVVJbnQzMglhdXRvVmVjMjsJCQkJCQkJCSAKCVVJbnQzMglhdXRvVmVjMzsJCQkJCQkJCSAK
CVVJbnQzMglhdXRvVmVjNDsJCQkJCQkJCSAKCVVJbnQzMglhdXRvVmVjNTsJCQkJCQkJCSAKCVVJ
bnQzMglhdXRvVmVjNjsJCQkJCQkJCSAKCVVJbnQzMglhdXRvVmVjNzsJCQkJCQkJCSAKCQoJVUlu
dDMyCXRyYXBOWzE2XTsJCQkJCQkJCSAKCQoJVUludDMyCXVuYXNzaWduZWRbMTZdOwkJCQkJCSAK
CX0gTTY4S0V4Y1RhYmxlVHlwZTsKIAogCgogCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBNNjhLUmVn
c1R5cGUgewoJVUludDMyCWRbOF07CQkJCQkJCSAKCVVJbnQzMglhWzddOwkJCQkJCQkgCglVSW50
MzIJdXNwOwkJCQkJCQkgCglVSW50MzIJc3NwOwkJCQkJCQkgCglVSW50MzIJcGM7CQkJCQkJCSAK
CVVJbnQxNglzcjsJCQkJCQkJIAp9IE02OEtSZWdzVHlwZTsKCgoKIAogCgoKCiAKCgoKIAoKCiAK
CgoKIAoKCgoKCgoKCgojIDU3ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUv
Q29yZVRyYXBzLmgiIDIKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKCiAKCgoKCiAKCgoKCgoKCiAKCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKIAoKCiAKIAoKCgoKIAoKCgoKIAoKCgoKCgogCgoKCgoKCiAKCgoKIAoKCgoK
IAoKCiAKCgoKCgogCgoKCiAKCgoKCiAKCiAKCgogCgoKIAoKCiAKCgoKCgkJCiAKIAogCgogCiAK
IAoJCgoKCgoKCiAKIAogCiAKCiAKCgogCgoKIAoKCiAKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKCiAKIAoKCiAKCgoKIAoKCiAKCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAK
CgoKCiAKCgogCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCiAKCgogCgoKIAogCiAKCgoKCgoKCgoK
CQoKCiMgMjQgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vQml0
bWFwLmgiIDIKCgojIDEgIi4uL1NyY1NoYXJlZC9QYWxtT3B0RXJyb3JDaGVja0xldmVsLmgiIDEK
IAogCgoKCgoKCgoKCgoKCgoKCgoJCgkJCgkJCgkKCgkKCQkKCQoKCiMgMjYgIi4uL1NyY1NoYXJl
ZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vQml0bWFwLmgiIDIKCgoKIAogCiAKCiAK
CgoKCiAKdHlwZWRlZiBlbnVtIHsKCUJpdG1hcENvbXByZXNzaW9uVHlwZVNjYW5MaW5lID0gMCwK
CUJpdG1hcENvbXByZXNzaW9uVHlwZVJMRSwKCQoJQml0bWFwQ29tcHJlc3Npb25UeXBlTm9uZSA9
IDB4RkYKfSBCaXRtYXBDb21wcmVzc2lvblR5cGU7CgoKIAoKdHlwZWRlZiBzdHJ1Y3QgQml0bWFw
RmxhZ3NUeXBlIHsKCVVJbnQxNiBjb21wcmVzc2VkOjE7ICAJCQkgCglVSW50MTYgaGFzQ29sb3JU
YWJsZToxOwkJCSAKCVVJbnQxNiBoYXNUcmFuc3BhcmVuY3k6MTsJCSAKCVVJbnQxNiBpbmRpcmVj
dDoxOwkJCQkgCglVSW50MTYgZm9yU2NyZWVuOjE7CQkJCSAKCVVJbnQxNiByZXNlcnZlZDoxMTsK
fSBCaXRtYXBGbGFnc1R5cGU7CgogCnR5cGVkZWYgc3RydWN0IEJpdG1hcFR5cGUgewoJSW50MTYg
IAkJCQl3aWR0aDsKCUludDE2ICAJCQkJaGVpZ2h0OwoJVUludDE2ICAJCQkJcm93Qnl0ZXM7CglC
aXRtYXBGbGFnc1R5cGUJZmxhZ3M7CglVSW50OAkJCQkJcGl4ZWxTaXplOwkJCSAKCVVJbnQ4CQkJ
CQl2ZXJzaW9uOwkJCQkgCglVSW50MTYJIAkJCW5leHREZXB0aE9mZnNldDsJIAoJCQkJCQkJCQkJ
CQkJIAoJVUludDgJCQkJCXRyYW5zcGFyZW50SW5kZXg7CSAKCQkJCQkJCQkJCQkJCSAKCVVJbnQ4
CQkJCQljb21wcmVzc2lvblR5cGU7CSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkKCVVJ
bnQxNgkgCQkJcmVzZXJ2ZWQ7CQkJIAoJCgkgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkJCQkJCQkJ
CQkJCQkgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCn0gQml0bWFwVHlwZTsKCnR5cGVkZWYgQml0
bWFwVHlwZSAqQml0bWFwUHRyOwoKCiAKIAogCgp0eXBlZGVmIHN0cnVjdCBSR0JDb2xvclR5cGUg
ewoJVUludDgJaW5kZXg7CQkJCQkJCQkJIAoJVUludDgJcjsJCQkJCQkJCQkJCSAKCVVJbnQ4CWc7
CQkJCQkJCQkJCQkgCglVSW50OAliOwkJCQkJCQkJCQkJIAp9IFJHQkNvbG9yVHlwZTsKCgp0eXBl
ZGVmIHN0cnVjdCBDb2xvclRhYmxlVHlwZSB7CgkJCQkJCQkJCQkJCQkJIAoJVUludDE2CQkJCQkJ
bnVtRW50cmllczsJCSAKCSAKCQkJCQkJCQkJCQkJCQkgCn0gQ29sb3JUYWJsZVR5cGU7CgoKIAoK
CiMgMTQ5ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0JpdG1h
cC5oIgoKCgojIDY2ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgoJCQojIDEgIi4uL1NyY1NoYXJl
ZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vQ2hhckF0dHIuaCIgMQogCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKIAogCiAKIAogCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAogCiAK
CiAKCiMgNzQgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vQ2hh
ckF0dHIuaCIKCgoKCgoKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgojIDEyNiAiLi4vU3JjU2hhcmVk
L1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9DaGFyQXR0ci5oIgoKCgoKIyA2NyAiLi4v
U3JjU2hhcmVkL1BhbG0uaCIgMgoKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9J
bmNzL0NvcmUvU3lzdGVtL0NoYXJzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAogCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKIAogCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCiAKCgoKCiAKCgoKCQkJCQkJCQkJCQkJCQkJIAogCgoJCQkJCQkJCQkJCQkJCQkg
CgkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoKCgoK
CiAKIAogCgoKCgoKCgoKCgoJCQkJCQkJCQkJCQkJCQkJIAoKCgoKCgogCiAKIAogCiAKIAoKCgog
CgoKCiAKCgoKIAoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKCgojIDM1MCAiLi4vU3JjU2hhcmVk
L1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9DaGFycy5oIgoKCiMgMzYxICIuLi9TcmNT
aGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0NoYXJzLmgiCgogCmVudW0gc3lt
Ym9sQ2hhcnMgewoJc3ltYm9sTGVmdEFycm93ID0gMywKCXN5bWJvbFJpZ2h0QXJyb3csCglzeW1i
b2xVcEFycm93LAoJc3ltYm9sRG93bkFycm93LAoJc3ltYm9sU21hbGxEb3duQXJyb3csCglzeW1i
b2xTbWFsbFVwQXJyb3csCglzeW1ib2xNZW1vID0gOSwKCXN5bWJvbEhlbHAsCglzeW1ib2xOb3Rl
LAoJc3ltYm9sTm90ZVNlbGVjdGVkLAoJc3ltYm9sQ2Fwc0xvY2ssCglzeW1ib2xOdW1Mb2NrLAoJ
c3ltYm9sU2hpZnRVcHBlciwKCXN5bWJvbFNoaWZ0UHVuYywKCXN5bWJvbFNoaWZ0RXh0LAoJc3lt
Ym9sU2hpZnROb25lLAoJc3ltYm9sTm9UaW1lLAoJc3ltYm9sQWxhcm0sCglzeW1ib2xSZXBlYXQs
CglzeW1ib2xDaGVja01hcmssCgkgCgkgCglzeW1ib2xEaWFtb25kQ2hyLAoJc3ltYm9sQ2x1YkNo
ciwKCXN5bWJvbEhlYXJ0Q2hyLAoJc3ltYm9sU3BhZGVDaHIKCX07CgogCmVudW0gc3ltYm9sN0No
YXJzIHsKCXN5bWJvbDdTY3JvbGxVcCA9IDEsCglzeW1ib2w3U2Nyb2xsRG93biwKCXN5bWJvbDdT
Y3JvbGxVcERpc2FibGVkLAoJc3ltYm9sN1Njcm9sbERvd25EaXNhYmxlZAoJfTsKCiAKZW51bSBz
eW1ib2wxMUNoYXJzIHsKCXN5bWJvbENoZWNrYm94T2ZmID0gMCwKCXN5bWJvbENoZWNrYm94T24s
CglzeW1ib2wxMUxlZnRBcnJvdywKCXN5bWJvbDExUmlnaHRBcnJvdywKCXN5bWJvbDExTGVmdEFy
cm93RGlzYWJsZWQsCQkgCglzeW1ib2wxMVJpZ2h0QXJyb3dEaXNhYmxlZAkJIAoJfTsKCgoKIyA2
OCAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0v
UGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9DcmMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgogCgoKCgoKCmV4dGVybiAiQyIgewoKCgoJCgogCiAKIAoKCiAKIAogCiAKVUludDE2
CQlDcmMxNkNhbGNCbG9jayhjb25zdCB2b2lkICpidWZQLCBVSW50MTYgY291bnQsIFVJbnQxNiBj
cmMpCgkJCQkJCQkgIDsKClVJbnQxNgkJQ3JjMTZDYWxjQmlnQmxvY2sodm9pZCAqYnVmUCwgVUlu
dDMyIGNvdW50LCBVSW50MTYgY3JjKTsKCgoKfQoKCgoKCiMgNzEgIi4uL1NyY1NoYXJlZC9QYWxt
LmgiIDIKCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3Rl
bS9EYXRhTWdyLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKIyAxICIuLi9TcmNTaGFyZWQv
UGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0Vycm9yQmFzZS5oIiAxCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc2V0
am1wLmgiIDEgMyA0CiAKIAoKIAogCiAKCiAKCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc2V0
am1wLmgJMS4zNgk5OS8wOC8xMCBTTUkiCQoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3Nw
YXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL2lzby9zZXRqbXBfaXNvLmgiIDEgMyA0
CiAKIAoKIAogCiAKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc2V0
am1wX2lzby5oCTEuMQk5OS8wOC8wOSBTTUkiCiAKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0
dXJlX3Rlc3RzLmgiIDEgMyA0CiAKCgoKCiAKIAogCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpZmVh
dHVyZV90ZXN0cy5oCTEuMTgJOTkvMDcvMjYgU01JIgoKCgoKZXh0ZXJuICJDIiB7CgoKIAoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgp9CgoKCiMgMzEg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1
ZGUvaXNvL3NldGptcF9pc28uaCIgMiAzIDQKCgoKZXh0ZXJuICJDIiB7CgoKCgogCgoKCgojIDU0
ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNs
dWRlL2lzby9zZXRqbXBfaXNvLmgiIDMgNAoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGludAlqbXBf
YnVmWzEyIF07CgoKCgoKCgoKCmV4dGVybiBpbnQgc2V0am1wKGptcF9idWYpOwojcHJhZ21hIHVu
a25vd25fY29udHJvbF9mbG93KHNldGptcCkKZXh0ZXJuIGludCBfc2V0am1wKGptcF9idWYpOwoj
cHJhZ21hIHVua25vd25fY29udHJvbF9mbG93KF9zZXRqbXApCmV4dGVybiB2b2lkIGxvbmdqbXAo
am1wX2J1ZiwgaW50KTsKZXh0ZXJuIHZvaWQgX2xvbmdqbXAoam1wX2J1ZiwgaW50KTsKCiMgOTUg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1
ZGUvaXNvL3NldGptcF9pc28uaCIgMyA0CgoKCgoKCgoKCgoKCgoKCgoKfQoKCgojIDE5ICIvdXNy
L2luY2x1ZGUvc2V0am1wLmgiIDIgMyA0CgoKIAoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoK
IAoKCgoKdHlwZWRlZiBpbnQgc2lnam1wX2J1ZlsxOSBdOwoKCmV4dGVybiBpbnQgc2lnc2V0am1w
KHNpZ2ptcF9idWYsIGludCk7CiNwcmFnbWEgdW5rbm93bl9jb250cm9sX2Zsb3coc2lnc2V0am1w
KQpleHRlcm4gdm9pZCBzaWdsb25nam1wKHNpZ2ptcF9idWYsIGludCk7CgoKIyA2MyAiL3Vzci9p
bmNsdWRlL3NldGptcC5oIiAzIDQKCgoKfQoKCgojIDEwMyAiLi4vU3JjU2hhcmVkL1BhbG0vUGxh
dGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9FcnJvckJhc2UuaCIgMgoKCgogCgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKCgoKCgkKCgkKCgoKCQogCnR5cGVkZWYgc3RydWN0IEVyckV4Y2VwdGlvblR5cGUgewoJ
c3RydWN0IEVyckV4Y2VwdGlvblR5cGUqCW5leHRQOwkgCglqbXBfYnVmIAkJCQkJCXN0YXRlOwkg
CglJbnQzMgkJCQkJCQkJZXJyOwkJIAoJfSBFcnJFeGNlcHRpb25UeXBlOwp0eXBlZGVmIEVyckV4
Y2VwdGlvblR5cGUgKkVyckV4Y2VwdGlvblB0cjsKCgogCgoKCgoKCgoKCQkKIAogCiAKIAogCiAK
CgoKCgoKCQkJCgkJCQoKCgoKCgogCgoKIyAyODkgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3Jt
L0luY3MvQ29yZS9TeXN0ZW0vRXJyb3JCYXNlLmgiCgoKCgoKCiMgMjMgIi4uL1NyY1NoYXJlZC9Q
YWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vRGF0YU1nci5oIiAyCgoKIAojIDEgIi4uL1Ny
Y1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTWVtb3J5TWdyLmgiIDEKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgp0eXBlZGVmIGVudW0gewltZW1JRFB0ciwgbWVt
SURIYW5kbGUgfSBMb2NhbElES2luZDsKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCiMgMzM1ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNz
L0NvcmUvU3lzdGVtL01lbW9yeU1nci5oIgoKCgoKCgoKIyAyNiAiLi4vU3JjU2hhcmVkL1BhbG0v
UGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9EYXRhTWdyLmgiIDIKCgoKdHlwZWRlZiBVSW50MzIJ
RG1SZXNUeXBlOwp0eXBlZGVmIFVJbnQxNglEbVJlc0lEOwoKIAoKCgoKCgoKCgoKCgoKIAogCiAK
IAogCiAKIAogCiAKIAoKCgoKCgogCgoKCgoKIAoKCgogCgoKCgogCiAKIAogCiAKIAoKCgoJCQkJ
CQkJCQkJCQkJCQkgCgoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJ
CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJ
CSAKCgkJCQkJCQkJCQkJCQkJCSAKCgoKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ
IAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgoKCgogCgojIDEyMyAiLi4vU3JjU2hhcmVk
L1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9EYXRhTWdyLmgiCgkJCQkJCQkJCQkJCQkK
IAoKCgoKIAoKCgoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ
CQkJIAoKCQkJCQkJCQkJCQkJCQkJIAoKCgogCgoKCgoKCgoKCiAKdHlwZWRlZgl2b2lkICoJCQkJ
CQlEbU9wZW5SZWY7CgoKIAoKCgp0eXBlZGVmIHN0cnVjdCB7CglVSW50MzIJCWluZm9bOF07Cgl9
IERtU2VhcmNoU3RhdGVUeXBlOwp0eXBlZGVmIERtU2VhcmNoU3RhdGVUeXBlKglEbVNlYXJjaFN0
YXRlUHRyOwkKCgoKIAoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQ4CQkJYXR0cmlidXRlczsJCQkJ
CQkJIAoJVUludDgJCQl1bmlxdWVJRFszXTsJCQkJCQkgCgl9IFNvcnRSZWNvcmRJbmZvVHlwZTsK
CnR5cGVkZWYgU29ydFJlY29yZEluZm9UeXBlICpTb3J0UmVjb3JkSW5mb1B0cjsKCnR5cGVkZWYg
SW50MTYgRG1Db21wYXJGICh2b2lkICosIHZvaWQgKiwgSW50MTYgb3RoZXIsIFNvcnRSZWNvcmRJ
bmZvUHRyLCAKCQkJCQkJCQlTb3J0UmVjb3JkSW5mb1B0ciwgTWVtSGFuZGxlIGFwcEluZm9IKTsK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCiMgNTM4ICIu
Li9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0RhdGFNZ3IuaCIKCgoK
IyA3MiAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9Q
bGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0RhdGVUaW1lLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgp0eXBlZGVmIGVudW0gCgl7Cgl0ZkNvbG9uLAoJdGZDb2xvbkFNUE0sCQkJIAoJdGZDb2xv
bjI0aCwJCQkJIAoJdGZEb3QsCgl0ZkRvdEFNUE0sCQkJCSAKCXRmRG90MjRoLAkJCQkgCgl0Zkhv
dXJzQU1QTSwJCQkgCgl0ZkhvdXJzMjRoLAkJCQkgCgl0ZkNvbW1hMjRoCQkJCSAKCX0gVGltZUZv
cm1hdFR5cGU7CgoKdHlwZWRlZiBlbnVtIHsKCWRzTm9uZSwJCQkJCSAKCWRzVVNBLAkJCQkJIAoJ
ZHNBdXN0cmFsaWEsCQkJIAoJZHNXZXN0ZXJuRXVyb3BlYW4sCSAKCWRzTWlkZGxlRXVyb3BlYW4s
CQkgCglkc0Vhc3Rlcm5FdXJvcGVhbiwJIAoJZHNHcmVhdEJyaXRhaW4sCQkgCglkc1J1bWFuaWEs
CQkJCSAKCWRzVHVya2V5LAkJCQkgCglkc0F1c3RyYWxpYVNoaWZ0ZWQJIAoJfSBEYXlsaWdodFNh
dmluZ3NUeXBlczsKCgogCgoKCgp0eXBlZGVmIGVudW0gewoJZGZNRFlXaXRoU2xhc2hlcywJCSAK
CWRmRE1ZV2l0aFNsYXNoZXMsCQkgCglkZkRNWVdpdGhEb3RzLAkJCSAKCWRmRE1ZV2l0aERhc2hl
cywJCSAKCWRmWU1EV2l0aFNsYXNoZXMsCQkgCglkZllNRFdpdGhEb3RzLAkJCSAKCWRmWU1EV2l0
aERhc2hlcywJCSAKCglkZk1EWUxvbmdXaXRoQ29tbWEsCSAKCWRmRE1ZTG9uZywJCQkJIAoJZGZE
TVlMb25nV2l0aERvdCwJCSAKCWRmRE1ZTG9uZ05vRGF5LAkJIAoJZGZETVlMb25nV2l0aENvbW1h
LAkgCglkZllNRExvbmdXaXRoRG90LAkJIAoJZGZZTURMb25nV2l0aFNwYWNlLAkgCgoJZGZNWU1l
ZCwJCQkJCSAKCWRmTVlNZWROb1Bvc3QJCQkgCgl9IERhdGVGb3JtYXRUeXBlOwoKdHlwZWRlZiBz
dHJ1Y3QgewoJSW50MTYgc2Vjb25kOwoJSW50MTYgbWludXRlOwoJSW50MTYgaG91cjsKCUludDE2
IGRheTsKCUludDE2IG1vbnRoOwoJSW50MTYgeWVhcjsKCUludDE2IHdlZWtEYXk7CQkgCgl9IERh
dGVUaW1lVHlwZTsKCQp0eXBlZGVmIERhdGVUaW1lVHlwZSAqRGF0ZVRpbWVQdHI7CgoKIAogCiAK
dHlwZWRlZiBzdHJ1Y3QgewoJVUludDggICAgICAgIGhvdXJzOwoJVUludDggICAgICAgIG1pbnV0
ZXM7Cn0gVGltZVR5cGU7Cgp0eXBlZGVmIFRpbWVUeXBlICpUaW1lUHRyOwoKCgoKIAogCiAKdHlw
ZWRlZiBzdHJ1Y3QgewoJVUludDE2IHllYXIgIDo3OyAgICAgICAgICAgICAgICAgICAgCglVSW50
MTYgbW9udGggOjQ7IAoJVUludDE2IGRheSAgIDo1Owp9IERhdGVUeXBlOwoKdHlwZWRlZiBEYXRl
VHlwZSAqRGF0ZVB0cjsKCgogCgoKCiAKIAoKCgoKCgoKCgoKCgoKIAogCgoKCgoKIAoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKdHlwZWRlZiBlbnVtIHsKCWRvbTFzdFN1
biwgZG9tMXN0TW9uLCBkb20xc3RUdWUsIGRvbTFzdFdlbiwgZG9tMXN0VGh1LCBkb20xc3RGcmks
IGRvbTFzdFNhdCwKCWRvbTJuZFN1biwgZG9tMm5kTW9uLCBkb20ybmRUdWUsIGRvbTJuZFdlbiwg
ZG9tMm5kVGh1LCBkb20ybmRGcmksIGRvbTJuZFNhdCwKCWRvbTNyZFN1biwgZG9tM3JkTW9uLCBk
b20zcmRUdWUsIGRvbTNyZFdlbiwgZG9tM3JkVGh1LCBkb20zcmRGcmksIGRvbTNyZFNhdCwKCWRv
bTR0aFN1biwgZG9tNHRoTW9uLCBkb200dGhUdWUsIGRvbTR0aFdlbiwgZG9tNHRoVGh1LCBkb200
dGhGcmksIGRvbTR0aFNhdCwKCWRvbUxhc3RTdW4sIGRvbUxhc3RNb24sIGRvbUxhc3RUdWUsIGRv
bUxhc3RXZW4sIGRvbUxhc3RUaHUsIGRvbUxhc3RGcmksIAoJZG9tTGFzdFNhdAoJfSBEYXlPZldl
ZWtUeXBlOwoKIAoKCmVudW0gewoJZGF0ZVRlbXBsYXRlRGF5TnVtID0gJzAnLAoJZGF0ZVRlbXBs
YXRlRE9XTmFtZSwKCWRhdGVUZW1wbGF0ZU1vbnRoTmFtZSwKCWRhdGVUZW1wbGF0ZU1vbnRoTnVt
LAoJZGF0ZVRlbXBsYXRlWWVhck51bQp9OwoKCgoKCgogCiAKIAoKIAogCiAKIAogCiAKIAogCgog
CiAKIAojIDI4MCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9E
YXRlVGltZS5oIgoKCgoKIyA3MyAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCgkJCiAKIAog
CgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9GZWF0
dXJlTWdyLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKIyA4
NyAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9GZWF0dXJlTWdy
LmgiCgoKCiMgODAgIi4uL1NyY1NoYXJlZC9QYWxtLmgiIDIKCiAKIAoJCQojIDEgIi4uL1NyY1No
YXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vRm9udC5oIiAxCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCiAKCgp0eXBlZGVmIHN0cnVjdCB7CglJbnQ4CQlvZmZzZXQ7CglJ
bnQ4CQl3aWR0aDsKfSBGb250Q2hhckluZm9UeXBlLCAqIEZvbnRDaGFySW5mb1B0cjsKCnR5cGVk
ZWYgc3RydWN0IHsKCUludDE2IGZvbnRUeXBlOyAJCQkgCglJbnQxNiBmaXJzdENoYXI7IAkJCSAK
CUludDE2IGxhc3RDaGFyOyAJCQkgCglJbnQxNiBtYXhXaWR0aDsgCQkJIAoJSW50MTYga2Vybk1h
eDsgCQkJIAoJSW50MTYgbkRlc2NlbnQ7IAkJCSAKCUludDE2IGZSZWN0V2lkdGg7IAkJIAoJSW50
MTYgZlJlY3RIZWlnaHQ7IAkJIAoJSW50MTYgb3dUTG9jOyAJCQkJIAoJSW50MTYgYXNjZW50OyAJ
CQkJIAoJSW50MTYgZGVzY2VudDsgCQkJIAoJSW50MTYgbGVhZGluZzsgCQkJIAoJSW50MTYgcm93
V29yZHM7IAkJCSAKfSBGb250VHlwZTsKCnR5cGVkZWYgRm9udFR5cGUgKkZvbnRQdHI7Cgp0eXBl
ZGVmIEZvbnRQdHIgKkZvbnRUYWJsZVB0cjsKCmVudW0gZm9udElEIHsgCglzdGRGb250ID0gMHgw
MCwJCQkJCSAKCWJvbGRGb250LCAJCQkJCQkJIAoJbGFyZ2VGb250LAkJCQkJCQkgCglzeW1ib2xG
b250LAkJCQkJCQkgCglzeW1ib2wxMUZvbnQsIAkJCQkJCSAKCXN5bWJvbDdGb250LAkJCQkJCSAK
CWxlZEZvbnQsCQkJCQkJCQkgCglsYXJnZUJvbGRGb250LAkJCQkJCSAKCWZudEFwcEZvbnRDdXN0
b21CYXNlID0gMHg4MAkgCn07Cgp0eXBlZGVmIGVudW0gZm9udElEIEZvbnRJRDsKCgoKCgoKCiAK
IAogCiAKIAoKIyAxNDcgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0
ZW0vRm9udC5oIgoKCgoKIyA4MyAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCiAKCQkKIyAx
ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL0ludGxNZ3IuaCIg
MQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAogCiAKCgoJCgoKCQkKCQoKCiAKCgoKIAoK
CgogCgoKCgoKCQoKCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
IyAxMTEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vSW50bE1n
ci5oIgoKCgojIDg3ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgogCgkJCiMgMSAiLi4vU3JjU2hh
cmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9LZXlNZ3IuaCIgMQogCgoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiMgNzMgIi4uL1NyY1No
YXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vS2V5TWdyLmgiCgoKCQoKIyA4OSAi
Li4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9y
bS9JbmNzL0NvcmUvU3lzdGVtL0xvY2FsaXplLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CiAKIAp0eXBlZGVmIGVudW0gewoJbmZDb21tYVBlcmlvZCwKCW5mUGVyaW9kQ29tbWEsCgluZlNw
YWNlQ29tbWEsCgluZkFwb3N0cm9waGVQZXJpb2QsCgluZkFwb3N0cm9waGVDb21tYQoJfSBOdW1i
ZXJGb3JtYXRUeXBlOwoKCQoKIyA1MSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D
b3JlL1N5c3RlbS9Mb2NhbGl6ZS5oIgoKCgoKIyA5MCAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoK
CQkKIAoJCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0v
TmV0Qml0VXRpbHMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1Ny
Y1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTmV0TWdyLmgiIDEKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0lu
Y3MvTGlicmFyaWVzL0xpYlRyYXBzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgogCiAKCiAKCgoKCgoK
IAogCiAKIAoKdHlwZWRlZiBlbnVtIHsKCXN5c0xpYlRyYXBOYW1lID0gMHhBODAwICwKCXN5c0xp
YlRyYXBPcGVuLAoJc3lzTGliVHJhcENsb3NlLAoJc3lzTGliVHJhcFNsZWVwLAoJc3lzTGliVHJh
cFdha2UsCglzeXNMaWJUcmFwQ3VzdG9tCgl9IFN5c0xpYlRyYXBOdW1iZXI7CgoKCgojIDI5ICIu
Li9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL05ldE1nci5oIiAyCgoj
IDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU3lzRXZlbnQu
aCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIuLi9TcmNTaGFyZWQv
UGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1JlY3QuaCIgMQogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgQWJzUmVjdFR5cGUgewogIENvb3JkIGxlZnQ7CiAg
Q29vcmQgdG9wOwogIENvb3JkIHJpZ2h0OwogIENvb3JkIGJvdHRvbTsKfSBBYnNSZWN0VHlwZTsK
Cgp0eXBlZGVmIHN0cnVjdCBQb2ludFR5cGUgewogIENvb3JkIHg7CiAgQ29vcmQgeTsKfSBQb2lu
dFR5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgUmVjdGFuZ2xlVHlwZSB7CiAgUG9pbnRUeXBlICB0b3BM
ZWZ0OwogIFBvaW50VHlwZSAgZXh0ZW50Owp9IFJlY3RhbmdsZVR5cGU7Cgp0eXBlZGVmIFJlY3Rh
bmdsZVR5cGUgKlJlY3RhbmdsZVB0cjsKCgoKIyA4MCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZv
cm0vSW5jcy9Db3JlL1N5c3RlbS9SZWN0LmgiCgoKCgojIDM0ICIuLi9TcmNTaGFyZWQvUGFsbS9Q
bGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1N5c0V2ZW50LmgiIDIKCiMgMSAiLi4vU3JjU2hhcmVk
L1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9XaW5kb3cuaCIgMQogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAp0eXBlZGVmIGVudW0geyB3aW5VcCA9IDAsIHdpbkRv
d24sIHdpbkxlZnQsIHdpblJpZ2h0IH0gV2luRGlyZWN0aW9uVHlwZTsKCgogCnR5cGVkZWYgZW51
bSB7IHNjcmVlbkZvcm1hdCA9IDAsIGdlbmVyaWNGb3JtYXQgfSBXaW5kb3dGb3JtYXRUeXBlOwoK
CiAKdHlwZWRlZiBlbnVtIHt3aW5Mb2NrQ29weSwgd2luTG9ja0VyYXNlLCB3aW5Mb2NrRG9udENh
cmV9IFdpbkxvY2tJbml0VHlwZTsKCgogCnR5cGVkZWYgZW51bSB7Cgl3aW5TY3JlZW5Nb2RlR2V0
RGVmYXVsdHMsCgl3aW5TY3JlZW5Nb2RlR2V0LAoJd2luU2NyZWVuTW9kZVNldFRvRGVmYXVsdHMs
Cgl3aW5TY3JlZW5Nb2RlU2V0LAoJd2luU2NyZWVuTW9kZUdldFN1cHBvcnRlZERlcHRocywKCXdp
blNjcmVlbk1vZGVHZXRTdXBwb3J0c0NvbG9yCn0gV2luU2NyZWVuTW9kZU9wZXJhdGlvbjsKCiAK
CgoKCiAKdHlwZWRlZiBlbnVtIHt3aW5QYWludCwgd2luRXJhc2UsIHdpbk1hc2ssIHdpbkludmVy
dCwgd2luT3ZlcmxheSwgd2luUGFpbnRJbnZlcnNlLCB3aW5Td2FwfSBXaW5EcmF3T3BlcmF0aW9u
OwoKCnR5cGVkZWYgZW51bSB7IGJsYWNrUGF0dGVybiwgd2hpdGVQYXR0ZXJuLCBncmF5UGF0dGVy
biwgY3VzdG9tUGF0dGVybiB9IFBhdHRlcm5UeXBlOwoKCgoKCiAKIAogCnR5cGVkZWYgZW51bSB7
IG5vVW5kZXJsaW5lLCBncmF5VW5kZXJsaW5lLCBzb2xpZFVuZGVybGluZSwgY29sb3JVbmRlcmxp
bmUgfSBVbmRlcmxpbmVNb2RlVHlwZTsKCgoKCnR5cGVkZWYgVUludDggSW5kZXhlZENvbG9yVHlw
ZTsJCQkJIAoKdHlwZWRlZiBVSW50OCBDdXN0b21QYXR0ZXJuVHlwZSBbOF07CQkgCgogCgoKIAog
CiAKCgp0eXBlZGVmIHN0cnVjdCBEcmF3U3RhdGVUeXBlIHsKCVdpbkRyYXdPcGVyYXRpb24JdHJh
bnNmZXJNb2RlOwoJUGF0dGVyblR5cGUJCQlwYXR0ZXJuOwoJVW5kZXJsaW5lTW9kZVR5cGUJdW5k
ZXJsaW5lTW9kZTsKCUZvbnRJRAkJCQlmb250SWQ7CglGb250UHRyCQkJCWZvbnQ7CglDdXN0b21Q
YXR0ZXJuVHlwZQlwYXR0ZXJuRGF0YTsKCUluZGV4ZWRDb2xvclR5cGUJZm9yZUNvbG9yOwoJSW5k
ZXhlZENvbG9yVHlwZQliYWNrQ29sb3I7CglJbmRleGVkQ29sb3JUeXBlCXRleHRDb2xvcjsKCVVJ
bnQ4CQkJCQlyZXNlcnZlZDsJCn0gRHJhd1N0YXRlVHlwZTsKCgoKCgoKCiAKIAogCgoKIAoKdHlw
ZWRlZiB1bmlvbiBGcmFtZUJpdHNUeXBlIHsKCXN0cnVjdCB7CgkJVUludDE2IGNvcm5lckRpYW0J
CTogODsJCQkJIAoJCVVJbnQxNiByZXNlcnZlZF8zCQk6IDM7IAoJCVVJbnQxNiB0aHJlZUQJCQk6
IDE7CQkJCSAKCQlVSW50MTYgc2hhZG93V2lkdGgJOiAyOwkJCQkgCgkJVUludDE2IHdpZHRoCQkJ
OiAyOwkJCQkgCgl9IGJpdHM7CglVSW50MTYgd29yZDsJCQkJCQkJCQkgCn0gRnJhbWVCaXRzVHlw
ZTsKCnR5cGVkZWYgVUludDE2IEZyYW1lVHlwZTsKCiAKCgoKCgoKCgoKCgoKCgogCgp0eXBlZGVm
IHN0cnVjdCBXaW5kb3dGbGFnc1R5cGUgewoJVUludDE2IGZvcm1hdDoxOyAgICAgICAKCVVJbnQx
NiBvZmZzY3JlZW46MTsgICAgCglVSW50MTYgbW9kYWw6MTsgICAgICAgIAoJVUludDE2IGZvY3Vz
YWJsZToxOyAgICAKCVVJbnQxNiBlbmFibGVkOjE7ICAgICAgCglVSW50MTYgdmlzaWJsZToxOyAg
ICAgIAoJVUludDE2IGRpYWxvZzoxOyAgICAgICAKCVVJbnQxNiBmcmVlQml0bWFwOjE7CSAgCglV
SW50MTYgcmVzZXJ2ZWQgOjg7Cn0gV2luZG93RmxhZ3NUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgV2lu
ZG93VHlwZSB7CiAgQ29vcmQJCQkJCQkJZGlzcGxheVdpZHRoVjIwOwkJIAogIENvb3JkCQkJCQkJ
CWRpc3BsYXlIZWlnaHRWMjA7CQkgCiAgdm9pZCAqCQkJCQkJCWRpc3BsYXlBZGRyVjIwOwkJIAog
IFdpbmRvd0ZsYWdzVHlwZQkJCQl3aW5kb3dGbGFnczsKICBSZWN0YW5nbGVUeXBlCQkJCXdpbmRv
d0JvdW5kczsKICBBYnNSZWN0VHlwZQkJCQkJY2xpcHBpbmdCb3VuZHM7CiAgQml0bWFwUHRyCQkJ
CQkJYml0bWFwUDsKICBGcmFtZUJpdHNUeXBlICAgCQkJZnJhbWVUeXBlOwogIERyYXdTdGF0ZVR5
cGUgKgkJCQlkcmF3U3RhdGVQOwkJCQkgCiAgc3RydWN0IFdpbmRvd1R5cGUgKgkJbmV4dFdpbmRv
dzsKfSBXaW5kb3dUeXBlOwoKdHlwZWRlZiBXaW5kb3dUeXBlICpXaW5QdHI7CnR5cGVkZWYgV2lu
ZG93VHlwZSAqV2luSGFuZGxlOwoKCiAKIAogCnR5cGVkZWYgc3RydWN0IFdpbkxpbmVUeXBlIHsK
CUNvb3JkIHgxOwoJQ29vcmQgeTE7CglDb29yZCB4MjsKCUNvb3JkIHkyOwp9IFdpbkxpbmVUeXBl
OwoKIAoKCgogCiAKIAoKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgR3JhcGhpY1N0YXRlVHlwZSB7CglE
cmF3U3RhdGVUeXBlICoJZHJhd1N0YXRlUDsKCURyYXdTdGF0ZVR5cGUgKglkcmF3U3RhdGVTdGFj
a1A7CglJbnQxNgkJCQkJZHJhd1N0YXRlSW5kZXg7CglVSW50MTYJCQkJc2NyZWVuTG9ja0NvdW50
Owp9IEdyYXBoaWNTdGF0ZVR5cGU7CgogCiAKIAoKCgoKIAogCiAKCiAKIAoKCgoKCgoKCgoKCgkK
CQoJCiMgNTU2ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1dp
bmRvdy5oIgoKCgoKIyAzNSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5
c3RlbS9TeXNFdmVudC5oIiAyCgoKCiAKIAoKCnR5cGVkZWYgZW51bSB7CglzeXNFdmVudE5pbEV2
ZW50ID0gMCwKCXN5c0V2ZW50UGVuRG93bkV2ZW50LAoJc3lzRXZlbnRQZW5VcEV2ZW50LAoJc3lz
RXZlbnRQZW5Nb3ZlRXZlbnQsCglzeXNFdmVudEtleURvd25FdmVudCwKCXN5c0V2ZW50V2luRW50
ZXJFdmVudCwKCXN5c0V2ZW50V2luRXhpdEV2ZW50LAoJc3lzRXZlbnRBcHBTdG9wRXZlbnQgPSAy
MiwKCXN5c0V2ZW50VHNtQ29uZmlybUV2ZW50ID0gMzUsCglzeXNFdmVudFRzbUZlcEJ1dHRvbkV2
ZW50LAoJc3lzRXZlbnRUc21GZXBNb2RlRXZlbnQsCgoJIAoJIAoJc3lzRXZlbnROZXh0VUlFdmVu
dCA9IDB4MDgwMCwKCgkgCglzeXNFdmVudEZpcnN0SU5ldExpYkV2ZW50ID0gMHgxMDAwLAoJc3lz
RXZlbnRGaXJzdFdlYkxpYkV2ZW50ID0gMHgxMTAwLAoJCgkgCgkgCglzeXNFdmVudEZpcnN0VXNl
ckV2ZW50ID0gMHg2MDAwCn0gU3lzRXZlbnRzRW51bTsKCgoKIAoKCgoKCgoKCgoKCgogCgoKCiAK
CgoKc3RydWN0IF9HZW5lcmljRXZlbnRUeXBlIHsKCVVJbnQxNiAgICAgICAgIGRhdHVtWzhdOwog
ICB9OwoKc3RydWN0IF9QZW5VcEV2ZW50VHlwZSB7CiAgIFBvaW50VHlwZSAgICAgIHN0YXJ0OyAg
ICAgICAgICAgICAKICAgUG9pbnRUeXBlICAgICAgZW5kOyAgICAgICAgICAgICAgIAogICB9OwoK
c3RydWN0IF9LZXlEb3duRXZlbnRUeXBlIHsKICAgV0NoYXIgICAgICAgICAgY2hyOyAgICAgICAg
ICAgICAgIAogICBVSW50MTYgICAgICAgICBrZXlDb2RlOyAgICAgICAgICAgCiAgIFVJbnQxNiAg
ICAgICAgIG1vZGlmaWVyczsKICAgfTsKCnN0cnVjdCBfV2luRW50ZXJFdmVudFR5cGUgewogICBX
aW5IYW5kbGUgICAgICBlbnRlcldpbmRvdzsKICAgV2luSGFuZGxlICAgICAgZXhpdFdpbmRvdzsK
ICAgfTsKCnN0cnVjdCBfV2luRXhpdEV2ZW50VHlwZSB7CiAgIFdpbkhhbmRsZSAgICAgIGVudGVy
V2luZG93OwogICBXaW5IYW5kbGUgICAgICBleGl0V2luZG93OwogICB9OwoKc3RydWN0IF9UU01D
b25maXJtVHlwZSB7CglDaGFyICoJCQl5b21pVGV4dDsKCVVJbnQxNgkJCWZvcm1JRDsKICAgfTsK
CnN0cnVjdCBfVFNNRmVwQnV0dG9uVHlwZSB7CglVSW50MTYJCQlidXR0b25JRDsKICAgfTsKCnN0
cnVjdCBfVFNNRmVwTW9kZUV2ZW50VHlwZSB7CglVSW50MTYgICAgICAgICBtb2RlOwkJCQkJIAog
ICB9OwoKCiAKdHlwZWRlZiBzdHJ1Y3QgU3lzRXZlbnRUeXBlIHsKICAgU3lzRXZlbnRzRW51bSAg
ZVR5cGU7CiAgIEJvb2xlYW4gICAgICAgIHBlbkRvd247CiAgIFVJbnQ4ICAgICAgICAgIHRhcENv
dW50OwogICBDb29yZCAgICAgICAgICBzY3JlZW5YOwogICBDb29yZCAgICAgICAgICBzY3JlZW5Z
OwogICB1bmlvbiB7CiAgICAgIHN0cnVjdCBfR2VuZXJpY0V2ZW50VHlwZQkJZ2VuZXJpYzsKCiAg
ICAgIHN0cnVjdCBfUGVuVXBFdmVudFR5cGUJCQlwZW5VcDsKICAgICAgc3RydWN0IF9LZXlEb3du
RXZlbnRUeXBlCQlrZXlEb3duOwogICAgICBzdHJ1Y3QgX1dpbkVudGVyRXZlbnRUeXBlCQl3aW5F
bnRlcjsKICAgICAgc3RydWN0IF9XaW5FeGl0RXZlbnRUeXBlCQl3aW5FeGl0OwogICAgICBzdHJ1
Y3QgX1RTTUNvbmZpcm1UeXBlCQkJdHNtQ29uZmlybTsKICAgICAgc3RydWN0IF9UU01GZXBCdXR0
b25UeXBlCQl0c21GZXBCdXR0b247CiAgICAgIHN0cnVjdCBfVFNNRmVwTW9kZUV2ZW50VHlwZQl0
c21GZXBNb2RlOwoKICAgICAgfSBkYXRhOwoKfSBTeXNFdmVudFR5cGU7CgoKIAp0eXBlZGVmICBz
dHJ1Y3QgewogICBTeXNFdmVudFR5cGUgICBldmVudDsKICAgVUludDMyICAgICAgICAgaWQ7ICAg
ICAgICAgICAgICAgICAgIAogICB9IFN5c0V2ZW50U3RvcmVUeXBlOwoKCgogCiAKIAoKIyAxOTUg
Ii4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU3lzRXZlbnQuaCIK
CgoKIAoKCgoKCgojIDMwICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lz
dGVtL05ldE1nci5oIiAyCgoKIAogCgoKCgogCgoKIAogCiAKCgogCiAKCgoJCQkgCgkJCSAKCQkJ
IAoJCQkgCgkJCSAKCQkJIAoKCiAKCgoKCiAKCgogCgoKCiAKCgoKIAogCiAKCgogCiAKIAogCgoK
IAogCiAKCgoKCgoKCgogCiAKIAogCgoKCgoKCgogCiAKIAoKCgogCiAKIAogCiAKIAoKIAp0eXBl
ZGVmIGVudW0gewoJIAoJbmV0U29ja2V0T3B0SVBPcHRpb25zID0gMSwJCQkJCQkgCgkKCSAKCW5l
dFNvY2tldE9wdFRDUE5vRGVsYXkgPSAxLAkJCQkJIAoJbmV0U29ja2V0T3B0VENQTWF4U2VnID0g
MiwJCQkJCQkgCgoJIAoJbmV0U29ja2V0T3B0U29ja0RlYnVnID0gMHgwMDAxLAkJCQkgCgluZXRT
b2NrZXRPcHRTb2NrQWNjZXB0Q29ubiA9IDB4MDAwMiwJCSAKCW5ldFNvY2tldE9wdFNvY2tSZXVz
ZUFkZHIgPSAweDAwMDQsCQkJIAoJbmV0U29ja2V0T3B0U29ja0tlZXBBbGl2ZSA9IDB4MDAwOCwJ
CQkgCgluZXRTb2NrZXRPcHRTb2NrRG9udFJvdXRlID0gMHgwMDEwLAkJCSAKCW5ldFNvY2tldE9w
dFNvY2tCcm9hZGNhc3QgPSAweDAwMjAsCQkJIAoJbmV0U29ja2V0T3B0U29ja1VzZUxvb3BiYWNr
ID0gMHgwMDQwLAkJIAoJbmV0U29ja2V0T3B0U29ja0xpbmdlciA9IDB4MDA4MCwJCQkJIAoJbmV0
U29ja2V0T3B0U29ja09PQkluTGluZSA9IDB4MDEwMCwJCQkgCgkKCW5ldFNvY2tldE9wdFNvY2tT
bmRCdWZTaXplID0gMHgxMDAxLAkJIAoJbmV0U29ja2V0T3B0U29ja1JjdkJ1ZlNpemUgPSAweDEw
MDIsCQkgCgluZXRTb2NrZXRPcHRTb2NrU25kTG93V2F0ZXIgPSAweDEwMDMsCQkgCgluZXRTb2Nr
ZXRPcHRTb2NrUmN2TG93V2F0ZXIgPSAweDEwMDQsCQkgCgluZXRTb2NrZXRPcHRTb2NrU25kVGlt
ZW91dCA9IDB4MTAwNSwJCSAKCW5ldFNvY2tldE9wdFNvY2tSY3ZUaW1lb3V0ID0gMHgxMDA2LAkJ
IAoJbmV0U29ja2V0T3B0U29ja0Vycm9yU3RhdHVzPSAweDEwMDcsCQkgCgluZXRTb2NrZXRPcHRT
b2NrU29ja2V0VHlwZSA9IDB4MTAwOCwJCSAKCQoJIAoJbmV0U29ja2V0T3B0U29ja05vbkJsb2Nr
aW5nID0gMHgyMDAwLAkJIAoJbmV0U29ja2V0T3B0U29ja1JlcXVpcmVFcnJDbGVhciA9IDB4MjAw
MSwJIAoJCQkJCQkJCQkJCQkJCQkgCgluZXRTb2NrZXRPcHRTb2NrTXVsdGlQa3RBZGRyID0gMHgy
MDAyCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJfSBOZXRTb2NrZXRPcHRF
bnVtOwoKCgoKIAp0eXBlZGVmIGVudW0gewoJbmV0U29ja2V0T3B0TGV2ZWxJUCA9IDAsCQkJCQkg
CgluZXRTb2NrZXRPcHRMZXZlbFRDUCA9IDYsCQkJCQkgCgluZXRTb2NrZXRPcHRMZXZlbFNvY2tl
dCA9IDB4RkZGRgkJCSAKCX0gTmV0U29ja2V0T3B0TGV2ZWxFbnVtOwoKCiAKdHlwZWRlZiBzdHJ1
Y3QgewoJSW50MTYJCW9uT2ZmOwkJCQkJCQkJIAoJSW50MTYJCXRpbWU7CQkJCQkJCQkJIAoJfSBO
ZXRTb2NrZXRMaW5nZXJUeXBlOwoKIAogCiAKdHlwZWRlZiBlbnVtIHsKCW5ldFNvY2tldEFkZHJS
YXc9MCwJCQkJCQkJCQkgCgluZXRTb2NrZXRBZGRySU5FVD0yCQkJCQkJCQkJIAoJfSBOZXRTb2Nr
ZXRBZGRyRW51bTsKCnR5cGVkZWYgZW51bSB7CgluZXRTb2NrZXRUeXBlU3RyZWFtPTEsCQkJCQkJ
CQkgCgluZXRTb2NrZXRUeXBlRGF0YWdyYW09MiwJCQkJCQkJIAoJbmV0U29ja2V0VHlwZVJhdz0z
LAkJCQkJCQkJCSAKCW5ldFNvY2tldFR5cGVSZWxpYWJsZU1zZz00LAkJCQkJCSAKCW5ldFNvY2tl
dFR5cGVMaWNlbnNlZT04CQkJCQkJCQkgCgl9IE5ldFNvY2tldFR5cGVFbnVtOwoKIAoKCgoKCgog
CiAKIAp0eXBlZGVmIGVudW0gewoJbmV0U29ja2V0RGlySW5wdXQ9MCwKCW5ldFNvY2tldERpck91
dHB1dD0xLAoJbmV0U29ja2V0RGlyQm90aD0yCgl9IE5ldFNvY2tldERpckVudW07CgoKIAogCiAK
IAp0eXBlZGVmCUludDE2CQkJTmV0U29ja2V0UmVmOwkJCgogCnR5cGVkZWYJVUludDMyCQlOZXRJ
UEFkZHI7CQkgCgoKCiAKIAogCiAKIAp0eXBlZGVmIHN0cnVjdCBOZXRTb2NrZXRBZGRySU5UeXBl
IHsKCUludDE2CQkJZmFtaWx5OwkJCQkJIAoJVUludDE2CQlwb3J0OwkJCQkJCSAKCU5ldElQQWRk
cglhZGRyOwkJCQkJCSAKCX0gTmV0U29ja2V0QWRkcklOVHlwZTsKCQogCgoKCiAKIAogCnR5cGVk
ZWYgc3RydWN0ICBOZXRTb2NrZXRBZGRyVHlwZSB7CglJbnQxNgkJCWZhbWlseTsJCQkJCSAKCVVJ
bnQ4CQkJZGF0YVsxNF07CQkJCSAKCX0gTmV0U29ja2V0QWRkclR5cGU7CgkKCiAKIAogCiAKIAp0
eXBlZGVmIHN0cnVjdCBOZXRTb2NrZXRBZGRyUmF3VHlwZSB7CglJbnQxNgkJCWZhbWlseTsJCQkJ
CSAKCVVJbnQxNgkJaWZJbnN0YW5jZTsJCQkJIAoJVUludDMyCQlpZkNyZWF0b3I7CQkJCSAKCX0g
TmV0U29ja2V0QWRkclJhd1R5cGU7CgkKCQoJCiAKIAogCiAKIAoKIAogCiAKdHlwZWRlZiBzdHJ1
Y3QgTmV0SU9WZWNUeXBlIHsKCVVJbnQ4ICoJCQlidWZQOwkJCQkJCQkgCglVSW50MTYJCQlidWZM
ZW47CQkJCQkJIAoJfSBOZXRJT1ZlY1R5cGUsICpOZXRJT1ZlY1B0cjsKCQoKCiAKdHlwZWRlZiBz
dHJ1Y3QgewoJVUludDggKgkJCWFkZHJQOwkJCQkJCSAKCVVJbnQxNgkJCWFkZHJMZW47CQkJCQkJ
IAoJTmV0SU9WZWNQdHIJCWlvdjsJCQkJCQkJIAoJVUludDE2CQkJaW92TGVuOwkJCQkJCSAKCVVJ
bnQ4ICoJCQlhY2Nlc3NSaWdodHM7CQkJCSAKCVVJbnQxNgkJCWFjY2Vzc1JpZ2h0c0xlbjsJCQkg
Cgl9IE5ldElPUGFyYW1UeXBlLCAqTmV0SU9QYXJhbVB0cjsKCQogCgoKCgoKCQkJCQkJCiAKIAog
CgogCgoKCgoKCgogCiAKdHlwZWRlZiBzdHJ1Y3QgIHsKCUNoYXIgKgkJbmFtZVA7CQkJCQkJCQkg
CglDaGFyICoqCQluYW1lQWxpYXNlc1A7CQkJCQkJIAoJVUludDE2CQlhZGRyVHlwZTsJCQkJCQkJ
IAoJVUludDE2CQlhZGRyTGVuOwkJCQkJCQkJIAoJVUludDggKioJCWFkZHJMaXN0UDsJCQkJCQkJ
IAoJfSBOZXRIb3N0SW5mb1R5cGUsICpOZXRIb3N0SW5mb1B0cjsKCQoKIAp0eXBlZGVmIHN0cnVj
dCB7CglOZXRIb3N0SW5mb1R5cGUJaG9zdEluZm87CQkJCQkgCgoJIAoJIAoJQ2hhcgluYW1lWzI1
NSArMV07CQkJIAoKCUNoYXIgKmFsaWFzTGlzdFsxICsxXTsJCSAKCUNoYXIJYWxpYXNlc1sxIF1b
MjU1ICsxXTsKCglOZXRJUEFkZHIqCWFkZHJlc3NMaXN0WzQgXTsKCU5ldElQQWRkcglhZGRyZXNz
WzQgXTsKCgl9IE5ldEhvc3RJbmZvQnVmVHlwZSwgKk5ldEhvc3RJbmZvQnVmUHRyOwoJCgkKIAog
CiAKCiAKCgoKCgogCiAKdHlwZWRlZiBzdHJ1Y3QgewoJQ2hhciAqCQluYW1lUDsJCQkJCQkJCSAK
CUNoYXIgKioJCW5hbWVBbGlhc2VzUDsJCQkJCQkgCglVSW50MTYJCXBvcnQ7CQkJCQkJCQkJIAoJ
Q2hhciAqCQlwcm90b1A7CQkJCQkJCQkgCgl9IE5ldFNlcnZJbmZvVHlwZSwgKk5ldFNlcnZJbmZv
UHRyOwoJCiAKdHlwZWRlZiBzdHJ1Y3QgewoJTmV0U2VydkluZm9UeXBlCXNlcnZJbmZvOwkJCQkJ
IAoKCSAKCSAKCUNoYXIJCQluYW1lWzE1ICsxXTsJCQkJCSAKCglDaGFyICoJCWFsaWFzTGlzdFsx
ICsxXTsJCSAKCUNoYXIJCQlhbGlhc2VzWzEgXVsxNSBdOwoJQ2hhcgkJCXByb3RvTmFtZVsxNSAr
MV07CgoJVUludDgJCQlyZXNlcnZlZDsKCX0gTmV0U2VydkluZm9CdWZUeXBlLCAqTmV0U2Vydklu
Zm9CdWZQdHI7CgkKCgogCiAKIAogCgp0eXBlZGVmIHN0cnVjdCB7CglDaGFyCQkJbmFtZVszMiBd
OwkJCSAgIAoJfSBOZXRDb25maWdOYW1lVHlwZSwgKk5ldENvbmZpZ05hbWVQdHI7CgoKCiAKCgoK
CgoKCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ
CQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCQkJIAoKCQkJCQkJCQkJCQkJ
CQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ
CQkJCQkgCgoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJ
CQkJCQkJIAoKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ
CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJ
CQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJ
CQkJCQkJCQkJIAoKCiAKCgoKIAoKCgoKCiNwcmFnbWEgbWFyayBNYXN0ZXIKdHlwZWRlZiBlbnVt
IHsKCSAKCW5ldE1hc3RlckludGVyZmFjZUluZm8sCgluZXRNYXN0ZXJJbnRlcmZhY2VTdGF0cywK
CW5ldE1hc3RlcklQU3RhdHMsCgluZXRNYXN0ZXJJQ01QU3RhdHMsCgluZXRNYXN0ZXJVRFBTdGF0
cywKCW5ldE1hc3RlclRDUFN0YXRzLAoJCgkgCgluZXRNYXN0ZXJUcmFjZUV2ZW50R2V0CQkJCQkg
CgoJfSBOZXRNYXN0ZXJFbnVtOwoJCgkKdHlwZWRlZiBzdHJ1Y3QgTmV0TWFzdGVyUEJUeXBlIHsK
CgkgCgl1bmlvbiB7CgkKCQkgCgkJIAoJCSAKCQlzdHJ1Y3QgIHsKCQkJVUludDE2CQlpbmRleDsJ
CQkJCSAKCQkJVUludDMyCQljcmVhdG9yOwkJCQkJIAoJCQlVSW50MTYJCWluc3RhbmNlOwkJCQkg
CgkJCXZvaWQgKgkJbmV0SUZQOwkJCQkJIAoJCQkKCQkJIAoJCQlDaGFyCQkJZHJ2ck5hbWVbOCBd
OwkJIAoJCQlDaGFyCQkJaHdOYW1lWzE2IF07CQkJIAoJCQlVSW50OAkJCWxvY2FsTmV0SGRyTGVu
OwkJIAoJCQlVSW50OAkJCWxvY2FsTmV0VHJhaWxlckxlbjsJIAoJCQlVSW50MTYJCWxvY2FsTmV0
TWF4RnJhbWU7CQkgCgkJCQoJCQkgCgkJCUNoYXIJCQlpZk5hbWVbMTAgXTsgCgkJCUJvb2xlYW4J
CWRyaXZlclVwOwkJCQkgCgkJCUJvb2xlYW4JCWlmVXA7CQkJCQkJIAoJCQlVSW50MTYJCWh3QWRk
ckxlbjsJCQkJIAoJCQlVSW50OAkJCWh3QWRkclsxNCBdOwkJIAoJCQlVSW50MTYJCW10dTsJCQkJ
CQkgCgkJCVVJbnQzMgkJc3BlZWQ7CQkJCQkgCgkJCVVJbnQzMgkJbGFzdFN0YXRlQ2hhbmdlOwkJ
IAoJCQkKCQkJIAoJCQlOZXRJUEFkZHIJaXBBZGRyOwkJCQkJIAoJCQlOZXRJUEFkZHIJc3VibmV0
TWFzazsJCQkJIAoJCQlOZXRJUEFkZHIJYnJvYWRjYXN0OwkJCQkgCgkJCX0gaW50ZXJmYWNlSW5m
bzsKCQkJCgkJIAoJCSAKCQkgCgkJc3RydWN0ICB7CgkJCVVJbnQxNgkJaW5kZXg7CQkJCQkgCgkJ
CVVJbnQzMgkJaW5PY3RldHM7CQkJCSAKCQkJVUludDMyCQlpblVjYXN0UGt0czsKCQkJVUludDMy
CQlpbk5VY2FzdFBrdHM7CgkJCVVJbnQzMgkJaW5EaXNjYXJkczsKCQkJVUludDMyCQlpbkVycm9y
czsKCQkJVUludDMyCQlpblVua25vd25Qcm90b3M7CgkJCVVJbnQzMgkJb3V0T2N0ZXRzOwoJCQlV
SW50MzIJCW91dFVjYXN0UGt0czsKCQkJVUludDMyCQlvdXROVWNhc3RQa3RzOwoJCQlVSW50MzIJ
CW91dERpc2NhcmRzOwoJCQlVSW50MzIJCW91dEVycm9yczsKCQkJfSBpbnRlcmZhY2VTdGF0czsK
CQkJCQkJCgkJIAoJCSAKCQkgCgkJc3RydWN0ICB7CgkJCVVJbnQzMgkJaXBJblJlY2VpdmVzOwkK
CQkJVUludDMyCQlpcEluSGRyRXJyb3JzOwoJCQlVSW50MzIJCWlwSW5BZGRyRXJyb3JzOwoJCQlV
SW50MzIJCWlwRm9yd0RhdGFncmFtczsKCQkJVUludDMyCQlpcEluVW5rbm93blByb3RvczsKCQkJ
VUludDMyCQlpcEluRGlzY2FyZHM7CgkJCVVJbnQzMgkJaXBJbkRlbGl2ZXJzOwoJCQlVSW50MzIJ
CWlwT3V0UmVxdWVzdHM7CgkJCVVJbnQzMgkJaXBPdXREaXNjYXJkczsKCQkJVUludDMyIAkJaXBP
dXROb1JvdXRlczsKCQkJVUludDMyIAkJaXBSZWFzbVJlcWRzOwoJCQlVSW50MzIgCQlpcFJlYXNt
T0tzOwoJCQlVSW50MzIgCQlpcFJlYXNtRmFpbHM7CgkJCVVJbnQzMgkJaXBGcmFnT0tzOwoJCQlV
SW50MzIgCQlpcEZyYWdGYWlsczsKCQkJVUludDMyIAkJaXBGcmFnQ3JlYXRlczsKCQkJVUludDMy
IAkJaXBSb3V0aW5nRGlzY2FyZHM7CgkJCVVJbnQzMiAJCWlwRGVmYXVsdFRUTDsgICAgICAgIAoJ
CQlVSW50MzIgCQlpcFJlYXNtVGltZW91dDsgICAgICAKCQkJfSBpcFN0YXRzOwoJCQkJCQkKCQkg
CgkJIAoJCSAKCQlzdHJ1Y3QgIHsKCQkJVUludDMyCQkJaWNtcEluTXNnczsKCQkJVUludDMyCQkJ
aWNtcEluRXJyb3JzOwoJCQlVSW50MzIJCQlpY21wSW5EZXN0VW5yZWFjaHM7CgkJCVVJbnQzMgkJ
CWljbXBJblRpbWVFeGNkczsKCQkJVUludDMyCQkJaWNtcEluUGFybVByb2JzOwoJCQlVSW50MzIJ
CQlpY21wSW5TcmNRdWVuY2hzOwoJCQlVSW50MzIJCQlpY21wSW5SZWRpcmVjdHM7CgkJCVVJbnQz
MgkJCWljbXBJbkVjaG9zOwoJCQlVSW50MzIJCQlpY21wSW5FY2hvUmVwczsKCQkJVUludDMyCQkJ
aWNtcEluVGltZXN0YW1wczsKCQkJVUludDMyCQkJaWNtcEluVGltZXN0YW1wUmVwczsKCQkJVUlu
dDMyCQkJaWNtcEluQWRkck1hc2tzOwoJCQlVSW50MzIJCQlpY21wSW5BZGRyTWFza1JlcHM7CgkJ
CVVJbnQzMgkJCWljbXBPdXRNc2dzOwoJCQlVSW50MzIJCQlpY21wT3V0RXJyb3JzOwoJCQlVSW50
MzIJCQlpY21wT3V0RGVzdFVucmVhY2hzOwoJCQlVSW50MzIJCQlpY21wT3V0VGltZUV4Y2RzOwoJ
CQlVSW50MzIJCQlpY21wT3V0UGFybVByb2JzOwoJCQlVSW50MzIJCQlpY21wT3V0U3JjUXVlbmNo
czsKCQkJVUludDMyCQkJaWNtcE91dFJlZGlyZWN0czsKCQkJVUludDMyCQkJaWNtcE91dEVjaG9z
OwoJCQlVSW50MzIJCQlpY21wT3V0RWNob1JlcHM7CgkJCVVJbnQzMgkJCWljbXBPdXRUaW1lc3Rh
bXBzOwoJCQlVSW50MzIJCQlpY21wT3V0VGltZXN0YW1wUmVwczsKCQkJVUludDMyCQkJaWNtcE91
dEFkZHJNYXNrczsKCQkJVUludDMyCQkJaWNtcE91dEFkZHJNYXNrUmVwczsKCQkJfSBpY21wU3Rh
dHM7CgkJCQkJCQoJCSAKCQkgCgkJIAoJCXN0cnVjdCAgewoJCQlVSW50MzIJCQl1ZHBJbkRhdGFn
cmFtczsKCQkJVUludDMyCQkJdWRwTm9Qb3J0czsKCQkJVUludDMyCQkJdWRwSW5FcnJvcnM7CgkJ
CVVJbnQzMgkJCXVkcE91dERhdGFncmFtczsKCQkJfSB1ZHBTdGF0czsKCQkJCQkJCgkJIAoJCSAK
CQkgCgkJc3RydWN0ICB7CgkJCVVJbnQzMgkJCXRjcFJ0b0FsZ29yaXRobTsKCQkJVUludDMyCQkJ
dGNwUnRvTWluOwoJCQlVSW50MzIJCQl0Y3BSdG9NYXg7CgkJCVVJbnQzMgkJCXRjcE1heENvbm47
CgkJCVVJbnQzMgkJCXRjcEFjdGl2ZU9wZW5zOwoJCQlVSW50MzIJCQl0Y3BQYXNzaXZlT3BlbnM7
CgkJCVVJbnQzMgkJCXRjcEF0dGVtcHRGYWlsczsKCQkJVUludDMyCQkJdGNwRXN0YWJSZXNldHM7
CgkJCVVJbnQzMgkJCXRjcEN1cnJFc3RhYjsKCQkJVUludDMyCQkJdGNwSW5TZWdzOwoJCQlVSW50
MzIJCQl0Y3BPdXRTZWdzOwoJCQlVSW50MzIJCQl0Y3BSZXRyYW5zU2VnczsKCQkJVUludDMyCQkJ
dGNwSW5FcnJzOwoJCQlVSW50MzIJCQl0Y3BPdXRSc3RzOwoJCQl9IHRjcFN0YXRzOwoJCQkJCQkK
CQkgCgkJIAoJCSAKCQlzdHJ1Y3QgIHsKCQkJVUludDE2CQlpbmRleDsJCQkJIAoJCQlDaGFyICoJ
CXRleHRQOwkJCQkgCgkJCX0gdHJhY2VFdmVudEdldDsKCQkJCgkJfSBwYXJhbTsKCgl9IE5ldE1h
c3RlclBCVHlwZSwgKk5ldE1hc3RlclBCUHRyOwoJCgkKCgkKCQogCiAKIAojcHJhZ21hIG1hcmsg
U2V0dGluZ3MKIAogCiAKIAp0eXBlZGVmIGVudW0gewkKCW5ldFNldHRpbmdSZXNldEFsbCwJCQkJ
CQkgCgkJCQkJCQkJCQkJCQkgCgoJbmV0U2V0dGluZ1ByaW1hcnlETlMsCQkJCQkgCgluZXRTZXR0
aW5nU2Vjb25kYXJ5RE5TLAkJCQkJIAoJbmV0U2V0dGluZ0RlZmF1bHRSb3V0ZXIsCQkJCSAKCW5l
dFNldHRpbmdEZWZhdWx0SUZDcmVhdG9yLAkJCSAKCW5ldFNldHRpbmdEZWZhdWx0SUZJbnN0YW5j
ZSwJCQkgCgluZXRTZXR0aW5nSG9zdE5hbWUsCQkJCQkJIAoJbmV0U2V0dGluZ0RvbWFpbk5hbWUs
CQkJCQkgCgluZXRTZXR0aW5nSG9zdFRibCwJCQkJCQkgCgluZXRTZXR0aW5nQ2xvc2VXYWl0VGlt
ZSwJCQkJIAoJbmV0U2V0dGluZ0luaXRpYWxUQ1BSZXNlbmRUaW1lLAkJIAoJCQkJCQkJCQkJCQkJ
IAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCgkKCSAKCSAK
CW5ldFNldHRpbmdUcmFjZUJpdHMgPSAweDEwMDAsCQkJIAoJbmV0U2V0dGluZ1RyYWNlU2l6ZSwJ
CQkJCQkgCgkJCQkJCQkJCQkJCQkgCgluZXRTZXR0aW5nVHJhY2VTdGFydCwJCQkJCSAKCW5ldFNl
dHRpbmdUcmFjZVJvbGwsCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCgluZXRT
ZXR0aW5nUlRQcmltYXJ5RE5TLAkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJbmV0U2V0dGluZ1JUU2Vj
b25kYXJ5RE5TLAkJCQkgCgkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkKCW5ldFNldHRpbmdD
b25maWdUYWJsZQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoKCX0gTmV0U2V0dGluZ0VudW07CgoKIAog
CiAKdHlwZWRlZiBlbnVtIHsKCSAKCSAKCSAKCW5ldElGU2V0dGluZ1Jlc2V0QWxsLAkJCQkJIAoJ
CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCgkgCgkgCgkgCgluZXRJRlNldHRpbmdVcCwJCQkJ
CQkJIAoJbmV0SUZTZXR0aW5nTmFtZSwJCQkJCQkJIAoKCSAKCSAKCSAKCW5ldElGU2V0dGluZ1Jl
cUlQQWRkciwJCQkJCSAKCW5ldElGU2V0dGluZ1N1Ym5ldE1hc2ssCQkJCQkgCgluZXRJRlNldHRp
bmdCcm9hZGNhc3QsCQkJCQkgCgoJIAoJIAoJIAoJbmV0SUZTZXR0aW5nVXNlcm5hbWUsCQkJCQkg
CgkJCQkJCQkJCQkJCQkgCgluZXRJRlNldHRpbmdQYXNzd29yZCwJCQkJCSAKCQkJCQkJCQkJCQkJ
CSAKCW5ldElGU2V0dGluZ0RpYWxiYWNrVXNlcm5hbWUsCQkJIAoJCQkJCQkJCQkJCQkJIAoJbmV0
SUZTZXR0aW5nRGlhbGJhY2tQYXNzd29yZCwJCQkgCgkJCQkJCQkJCQkJCQkgCgluZXRJRlNldHRp
bmdBdXRoVXNlcm5hbWUsCQkJCSAKCQkJCQkJCQkJCQkJCSAKCW5ldElGU2V0dGluZ0F1dGhQYXNz
d29yZCwJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJIAoJCgkgCgkgCgkgCgluZXRJRlNldHRpbmdTZXJ2aWNlTmFtZSwJCQkJIAoJ
bmV0SUZTZXR0aW5nTG9naW5TY3JpcHQsCQkJCSAKCW5ldElGU2V0dGluZ0Nvbm5lY3RMb2csCQkJ
CQkgCgluZXRJRlNldHRpbmdJbmFjdGl2aXR5VGltZW91dCwJCSAKCQkJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkJCSAKCW5ldElGU2V0dGluZ0VzdGFibGlzaG1lbnRUaW1lb3V0LAkgCgkJCQkJCQkJ
CQkJCQkgCgkKCSAKCW5ldElGU2V0dGluZ0R5bmFtaWNJUCwJCQkJCSAKCQkJCQkJCQkJCQkJCSAK
CW5ldElGU2V0dGluZ1ZKQ29tcEVuYWJsZSwJCQkJIAoJCQkJCQkJCQkJCQkJIAoJbmV0SUZTZXR0
aW5nVkpDb21wU2xvdHMsCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCW5ldElG
U2V0dGluZ01UVSwJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJbmV0SUZTZXR0aW5nQXN5bmNDdGxN
YXAsCQkJCSAKCQkJCQkJCQkJCQkJCSAKCgkgCgluZXRJRlNldHRpbmdQb3J0TnVtLAkJCQkJCSAK
CW5ldElGU2V0dGluZ0JhdWRSYXRlLAkJCQkJIAoJbmV0SUZTZXR0aW5nRmxvd0NvbnRyb2wsCQkJ
CSAKCQkJCQkJCQkJCQkJCSAKCW5ldElGU2V0dGluZ1N0b3BCaXRzLAkJCQkJIAoJbmV0SUZTZXR0
aW5nUGFyaXR5T24sCQkJCQkgCgluZXRJRlNldHRpbmdQYXJpdHlFdmVuLAkJCQkJIAoKCSAKCW5l
dElGU2V0dGluZ1VzZU1vZGVtLAkJCQkJIAoJbmV0SUZTZXR0aW5nUHVsc2VEaWFsLAkJCQkJIAoJ
bmV0SUZTZXR0aW5nTW9kZW1Jbml0LAkJCQkJIAoJbmV0SUZTZXR0aW5nTW9kZW1QaG9uZSwJCQkJ
CSAKCW5ldElGU2V0dGluZ1JlZGlhbENvdW50LAkJCQkgCgkKCgkgCgkgCgkgCgkgCgluZXRJRlNl
dHRpbmdQb3dlclVwLAkJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJ
CQkJCQkJCSAKCQkJCQkJCQkJCQkJCgkgCgkgCgkgCgluZXRJRlNldHRpbmdXaXJlbGVzcywJCQkJ
CSAKCQoKCgkgCgluZXRJRlNldHRpbmdETlNRdWVyeSwJCQkJCSAKCgoJIAoJIAoJIAoJIAoJCQkJ
CQkJCQkJCQkKCW5ldElGU2V0dGluZ1F1aXRPblR4RmFpbCwJCQkJIAoJbmV0SUZTZXR0aW5nUXVl
dWVTaXplLAkJCQkJIAoJbmV0SUZTZXR0aW5nVHhJblF1ZXVlLAkJCQkJIAoJbmV0SUZTZXR0aW5n
VHhTZW50LAkJCQkJCSAKCW5ldElGU2V0dGluZ1R4RGlzY2FyZCwJCQkJCSAKCW5ldElGU2V0dGlu
Z1Jzc2ksCQkJCQkJCSAKCW5ldElGU2V0dGluZ1Jzc2lBc1BlcmNlbnQsCQkJCSAKCW5ldElGU2V0
dGluZ1JhZGlvU3RhdGUsCQkJCQkgCgluZXRJRlNldHRpbmdCYXNlLAkJCQkJCQkgCgluZXRJRlNl
dHRpbmdSYWRpb0lELAkJCQkJCSAKCW5ldElGU2V0dGluZ0JhdHRlcnksCQkJCQkJIAoJbmV0SUZT
ZXR0aW5nTmV0d29ya0xvYWQsCQkJCSAKCgkgCgkgCgkgCgoJbmV0SUZTZXR0aW5nQ29ubmVjdGlv
bk5hbWUsCQkJIAoKCgkgCgkgCgkgCgkgCgluZXRJRlNldHRpbmdUcmFjZUJpdHMgPSAweDEwMDAs
CQkgCgluZXRJRlNldHRpbmdHbG9iYWxzUHRyLAkJCQkJIAoJbmV0SUZTZXR0aW5nQWN0dWFsSVBB
ZGRyLAkJCQkgCgkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkgCglu
ZXRJRlNldHRpbmdTZXJ2ZXJJUEFkZHIsCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQoJCgkgCgkgCglu
ZXRJRlNldHRpbmdCcmluZ0Rvd25PblBvd2VyRG93biwJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJ
CQkJCQkJCgkgCgkgCgkgCgluZXRJRlNldHRpbmdSYXdNb2RlLAkJCQkJCSAKCQkJCQkJCQkJCQkJ
CSAKCgkgCgkgCgkgCgluZXRJRlNldHRpbmdDdXN0b20gPSAweDgwMDAKCQoJfSBOZXRJRlNldHRp
bmdFbnVtOwoKCgogCiAKIAogCiAKIAp0eXBlZGVmIGVudW0JewoJbmV0UmFkaW9TdGF0ZU9mZk5v
dENvbm5lY3RlZD0wLAoJbmV0UmFkaW9TdGF0ZU9uTm90Q29ubmVjdGVkLAkJCSAKCW5ldFJhZGlv
U3RhdGVPbkNvbm5lY3RlZCwJCQkJIAoJbmV0UmFkaW9TdGF0ZU9mZkNvbm5lY3RlZAoJfSBOZXRS
YWRpb1N0YXRlRW51bTsgCgoKCiAKCgogCgoKCiAKdHlwZWRlZiBVSW50MzIJCQkJCU5ldEZEU2V0
VHlwZTsKCgoKCgoKCgoKIAogCiAKI3ByYWdtYSBtYXJrIEVycm9yQ29kZXMKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCiAKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCiAKIAogCiAKIAogCiAKIAojcHJhZ21hIG1h
cmsgVHJhcHMKdHlwZWRlZiBlbnVtIHsKCW5ldExpYlRyYXBBZGRySU5Ub0EgPSBzeXNMaWJUcmFw
Q3VzdG9tLAoJbmV0TGliVHJhcEFkZHJBVG9JTiwKCQoJbmV0TGliVHJhcFNvY2tldE9wZW4sCglu
ZXRMaWJUcmFwU29ja2V0Q2xvc2UsCgluZXRMaWJUcmFwU29ja2V0T3B0aW9uU2V0LAoJbmV0TGli
VHJhcFNvY2tldE9wdGlvbkdldCwKCW5ldExpYlRyYXBTb2NrZXRCaW5kLAoJbmV0TGliVHJhcFNv
Y2tldENvbm5lY3QsCgluZXRMaWJUcmFwU29ja2V0TGlzdGVuLAoJbmV0TGliVHJhcFNvY2tldEFj
Y2VwdCwKCW5ldExpYlRyYXBTb2NrZXRTaHV0ZG93biwKCQoJbmV0TGliVHJhcFNlbmRQQiwKCW5l
dExpYlRyYXBTZW5kLAoJbmV0TGliVHJhcFJlY2VpdmVQQiwKCW5ldExpYlRyYXBSZWNlaXZlLAoJ
bmV0TGliVHJhcERtUmVjZWl2ZSwKCW5ldExpYlRyYXBTZWxlY3QsCgoJbmV0TGliVHJhcFByZWZz
R2V0LAoJbmV0TGliVHJhcFByZWZzU2V0LAoKCSAKCSAKCW5ldExpYlRyYXBEcnZyV2FrZSwKCW5l
dExpYlRyYXBJbnRlcmZhY2VQdHIsCgluZXRMaWJUcmFwTWFzdGVyLAoJCgkgCgluZXRMaWJUcmFw
R2V0SG9zdEJ5TmFtZSwKCW5ldExpYlRyYXBTZXR0aW5nR2V0LAoJbmV0TGliVHJhcFNldHRpbmdT
ZXQsCgluZXRMaWJUcmFwSUZBdHRhY2gsCgluZXRMaWJUcmFwSUZEZXRhY2gsCgluZXRMaWJUcmFw
SUZHZXQsCgluZXRMaWJUcmFwSUZTZXR0aW5nR2V0LAoJbmV0TGliVHJhcElGU2V0dGluZ1NldCwK
CW5ldExpYlRyYXBJRlVwLAoJbmV0TGliVHJhcElGRG93biwKCW5ldExpYlRyYXBJRk1lZGlhVXAs
CgluZXRMaWJUcmFwU2NyaXB0RXhlY3V0ZVYzMiwKCW5ldExpYlRyYXBHZXRIb3N0QnlBZGRyLAoJ
bmV0TGliVHJhcEdldFNlcnZCeU5hbWUsCgluZXRMaWJUcmFwU29ja2V0QWRkciwKCW5ldExpYlRy
YXBGaW5pc2hDbG9zZVdhaXQsCgluZXRMaWJUcmFwR2V0TWFpbEV4Y2hhbmdlQnlOYW1lLAoJbmV0
TGliVHJhcFByZWZzQXBwZW5kLAoJbmV0TGliVHJhcElGTWVkaWFEb3duLAoJbmV0TGliVHJhcE9w
ZW5Db3VudCwKCQoJbmV0TGliVHJhcFRyYWNlUHJpbnRGLAoJbmV0TGliVHJhcFRyYWNlUHV0UywK
CQoJbmV0TGliVHJhcE9wZW5JZkNsb3NlV2FpdCwKCW5ldExpYlRyYXBIYW5kbGVQb3dlck9mZiwK
CQoJbmV0TGliVHJhcENvbm5lY3Rpb25SZWZyZXNoLAoJCgkgCgluZXRMaWJUcmFwQml0TW92ZSwK
CW5ldExpYlRyYXBCaXRQdXRGaXhlZCwKCW5ldExpYlRyYXBCaXRHZXRGaXhlZCwKCW5ldExpYlRy
YXBCaXRQdXRVSW50ViwKCW5ldExpYlRyYXBCaXRHZXRVSW50ViwKCW5ldExpYlRyYXBCaXRQdXRJ
bnRWLAoJbmV0TGliVHJhcEJpdEdldEludFYsCgkKCSAKCW5ldExpYk9wZW5Db25maWcsCgluZXRM
aWJDb25maWdNYWtlQWN0aXZlLAoJbmV0TGliQ29uZmlnTGlzdCwKCW5ldExpYkNvbmZpZ0luZGV4
RnJvbU5hbWUsCgluZXRMaWJDb25maWdEZWxldGUsCgluZXRMaWJDb25maWdTYXZlQXMsCgluZXRM
aWJDb25maWdSZW5hbWUsCgluZXRMaWJDb25maWdBbGlhc1NldCwKCW5ldExpYkNvbmZpZ0FsaWFz
R2V0LAoJCgkgCgluZXRMaWJUcmFwU2NyaXB0RXhlY3V0ZSwKCQoJbmV0TGliVHJhcExhc3QKCX0g
TmV0TGliVHJhcE51bWJlckVudW07CgoKCiAKCiAKI3ByYWdtYSBtYXJrIEZ1bmN0aW9ucwojIDE1
MDkgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTmV0TWdyLmgi
CgoKCiAKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL05l
dEJpdFV0aWxzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxMzUgIi4uL1NyY1NoYXJl
ZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTmV0Qml0VXRpbHMuaCIKCiMgMTUxMyAi
Li4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9OZXRNZ3IuaCIgMgoK
CgojIDMwICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL05ldEJp
dFV0aWxzLmgiIDIKCgogCgoKCiAKIAoKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAoKCQoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCiMgMTMyICIuLi9TcmNTaGFy
ZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL05ldEJpdFV0aWxzLmgiCgoKCgojIDkz
ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgoJCQoJCQogCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1Bh
bG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9PdmVybGF5TWdyLmgiIDEKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgoKCgoKCgoKCgogCgoKCiAKCgogCgoK
IAoKCiAKCgogCiAKCgoKIAogCgoKCiAKCgoKCgogCgoKCgoKCgkKCgoKIAogCnR5cGVkZWYgZW51
bSB7CglvbUluaXQgPSAwLAoJb21PcGVuT3ZlcmxheURhdGFiYXNlLAoJb21Mb2NhbGVUb092ZXJs
YXlEQk5hbWUsCglvbU92ZXJsYXlEQk5hbWVUb0xvY2FsZSwKCW9tR2V0Q3VycmVudExvY2FsZSwK
CW9tR2V0SW5kZXhlZExvY2FsZSwKCW9tR2V0U3lzdGVtTG9jYWxlLAoJb21TZXRTeXN0ZW1Mb2Nh
bGUsCglvbUdldFJvdXRpbmVBZGRyZXNzLAoJCglvbU1heFNlbGVjdG9yID0gb21HZXRSb3V0aW5l
QWRkcmVzcywKCW9tQmlnU2VsZWN0b3IgPSAweDdGRkYJIAp9IE9tU2VsZWN0b3I7CgogCgoKCnR5
cGVkZWYgVUludDE2IE9tT3ZlcmxheUtpbmQ7CgoKIAogCiAKCgp0eXBlZGVmIHN0cnVjdCB7CglP
bU92ZXJsYXlLaW5kCW92ZXJsYXlUeXBlOwkJIAoJVUludDMyCQkJcnNjVHlwZTsJCQkJIAoJVUlu
dDE2CQkJcnNjSUQ7CQkJCSAKCVVJbnQzMgkJCXJzY0xlbmd0aDsJCQkgCglVSW50MzIJCQlyc2ND
aGVja3N1bTsJCSAKfSBPbU92ZXJsYXlSc2NUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2
CQkJbGFuZ3VhZ2U7CQkJIAoJVUludDE2CQkJY291bnRyeTsJCQkJIAp9IE9tTG9jYWxlVHlwZTsK
CiAKdHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2CQkJCXZlcnNpb247CQkJCSAKCVVJbnQzMgkJCQlm
bGFnczsJCQkJIAoJVUludDMyCQkJCWJhc2VDaGVja3N1bTsJCSAKCU9tTG9jYWxlVHlwZQkJdGFy
Z2V0TG9jYWxlOwkJIAoJVUludDMyCQkJCWJhc2VEQlR5cGU7CQkJIAoJVUludDMyCQkJCWJhc2VE
QkNyZWF0b3I7CQkgCglVSW50MzIJCQkJYmFzZURCQ3JlYXRlRGF0ZTsgIAoJVUludDMyCQkJCWJh
c2VEQk1vZERhdGU7CQkgCglVSW50MTYJCQkJbnVtT3ZlcmxheXM7CQkgCglPbU92ZXJsYXlSc2NU
eXBlCW92ZXJsYXlzWzBdOwkJIAp9IE9tT3ZlcmxheVNwZWNUeXBlOwoKCiAKCgoKIyAyMTIgIi4u
L1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vT3ZlcmxheU1nci5oIgoK
CgojIDk3ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgoJCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxt
L1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vUGFsbUxvY2FsZS5oIiAxCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKIAogCgoKCiAKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgkKCgoKCgog
CgoKCiAKCgoKCgoKCgogCiAKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgogCgoKIAogCgogCgog
CgogCgogCgoKIAogCgogCgogCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiAK
CgoKCiAKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKIAoKCgoKCiAK
CgoKCgoKIAoKCgoKIAoKCgoKCiAKCgoKCiAKIAoKIAoKCgojIDEyNTYgIi4uL1NyY1NoYXJlZC9Q
YWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vUGFsbUxvY2FsZS5oIgoKCgojIDk4ICIuLi9T
cmNTaGFyZWQvUGFsbS5oIiAyCgogCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0v
SW5jcy9Db3JlL1N5c3RlbS9QZW5NZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgog
CgoKCgoKCgoKIAoKCiMgODcgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9T
eXN0ZW0vUGVuTWdyLmgiCgoKCQogCgoKCgoKCgoKIyAxMDAgIi4uL1NyY1NoYXJlZC9QYWxtLmgi
IDIKCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9Q
cmVmZXJlbmNlcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D
b3JlL1N5c3RlbS9TeXN0ZW1NZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCiAKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVt
L1N5c3RlbVJlc291cmNlcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CiAKIAoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgkJCQkJCQkJCQkJCSAKCgoKCgoKCgoKCgoKCgoKCgoJCQkJCQkJCQkJCQkJCQkJ
IAoKCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCQkgCgoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKIAogCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKIAogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgogCgoKCgoJCQkJCQkJCQkJCQkJCQkJIAoKIAoK
CgogCgoKCQkJCQkJCQkJCQkJCQkJCSAKCiAKCgoKCgoKCiAKCgoKIAogCiAKIAogCiAKCiAKCiAK
CgoKCgoKCgoKIyAzOCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3Rl
bS9TeXN0ZW1NZ3IuaCIgMgoKCgogCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0v
SW5jcy9Db3JlL1VJL0luc1BvaW50LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIyA1
OCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0luc1BvaW50LmgiCgoK
CiMgNDUgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU3lzdGVt
TWdyLmgiIDIKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0V2
ZW50LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgZW51bSB7Cglu
aWxFdmVudCA9IDAsCQkJCSAKCXBlbkRvd25FdmVudCwJCQkJIAoJcGVuVXBFdmVudCwJCQkJCSAK
CXBlbk1vdmVFdmVudCwJCQkJIAoJa2V5RG93bkV2ZW50LAkJCQkgCgl3aW5FbnRlckV2ZW50LAkJ
CQkgCgl3aW5FeGl0RXZlbnQsCQkJCSAKCWN0bEVudGVyRXZlbnQsCgljdGxFeGl0RXZlbnQsCglj
dGxTZWxlY3RFdmVudCwKCWN0bFJlcGVhdEV2ZW50LAoJbHN0RW50ZXJFdmVudCwKCWxzdFNlbGVj
dEV2ZW50LAoJbHN0RXhpdEV2ZW50LAoJcG9wU2VsZWN0RXZlbnQsCglmbGRFbnRlckV2ZW50LAoJ
ZmxkSGVpZ2h0Q2hhbmdlZEV2ZW50LAoJZmxkQ2hhbmdlZEV2ZW50LAoJdGJsRW50ZXJFdmVudCwK
CXRibFNlbGVjdEV2ZW50LAoJZGF5U2VsZWN0RXZlbnQsCgltZW51RXZlbnQsCglhcHBTdG9wRXZl
bnQgPSAyMiwJCQkgCglmcm1Mb2FkRXZlbnQsCglmcm1PcGVuRXZlbnQsCglmcm1Hb3RvRXZlbnQs
Cglmcm1VcGRhdGVFdmVudCwKCWZybVNhdmVFdmVudCwKCWZybUNsb3NlRXZlbnQsCglmcm1UaXRs
ZUVudGVyRXZlbnQsCglmcm1UaXRsZVNlbGVjdEV2ZW50LAoJdGJsRXhpdEV2ZW50LAoJc2NsRW50
ZXJFdmVudCwKCXNjbEV4aXRFdmVudCwKCXNjbFJlcGVhdEV2ZW50LAoJdHNtQ29uZmlybUV2ZW50
ID0gMzUsCQkgCgl0c21GZXBCdXR0b25FdmVudCwJCQkgCgl0c21GZXBNb2RlRXZlbnQsCQkJCSAK
IAoJYXR0bkluZGljYXRvckVudGVyRXZlbnQsCSAKCWF0dG5JbmRpY2F0b3JTZWxlY3RFdmVudCwJ
IAoJCgkgCgkgCgltZW51Q21kQmFyT3BlbkV2ZW50ID0gMHgwODAwLAoJbWVudU9wZW5FdmVudCwK
CW1lbnVDbG9zZUV2ZW50LAoJZnJtR2FkZ2V0RW50ZXJFdmVudCwKCWZybUdhZGdldE1pc2NFdmVu
dCwKCgkgCglmaXJzdElOZXRMaWJFdmVudCA9IDB4MTAwMCwKCWZpcnN0V2ViTGliRXZlbnQgPSAw
eDExMDAsCgkKCSAKCSAKCWZpcnN0VXNlckV2ZW50ID0gMHg2MDAwCn0gZXZlbnRzRW51bTsKCgog
CnR5cGVkZWYgc3RydWN0IEV2ZW50VHlwZSB7CiAKICAgSW50MTYJCWVUeXBlOwogICBCb29sZWFu
ICAgICAgICBwZW5Eb3duOwogICBVSW50OCAgICAgICAgICB0YXBDb3VudDsKICAgSW50MTYgICAg
ICAgICAgc2NyZWVuWDsKICAgSW50MTYgICAgICAgICAgc2NyZWVuWTsKICAgdW5pb24gewogICAg
ICBzdHJ1Y3QgX0dlbmVyaWNFdmVudFR5cGUJCWdlbmVyaWM7CiAgICAgIHN0cnVjdCBfUGVuVXBF
dmVudFR5cGUgICAgICAgIHBlblVwOwogICAgICBzdHJ1Y3QgX0tleURvd25FdmVudFR5cGUgICAg
ICBrZXlEb3duOwogICAgICBzdHJ1Y3QgX1dpbkVudGVyRXZlbnRUeXBlICAgICB3aW5FbnRlcjsK
ICAgICAgc3RydWN0IF9XaW5FeGl0RXZlbnRUeXBlICAgICAgd2luRXhpdDsKICAgICAgc3RydWN0
IF9UU01Db25maXJtVHlwZQkJCXRzbUNvbmZpcm07CiAgICAgIHN0cnVjdCBfVFNNRmVwQnV0dG9u
VHlwZQkJdHNtRmVwQnV0dG9uOwogICAgICBzdHJ1Y3QgX1RTTUZlcE1vZGVFdmVudFR5cGUJdHNt
RmVwTW9kZTsKCiAgICAgIHN0cnVjdCBjdGxFbnRlciB7CiAgICAgICAgIFVJbnQxNiAgICAgICAg
ICAgIGNvbnRyb2xJRDsKICAgICAgICAgc3RydWN0IENvbnRyb2xUeXBlICpwQ29udHJvbDsKICAg
ICAgICAgfSBjdGxFbnRlcjsKCiAgICAgIHN0cnVjdCBjdGxTZWxlY3QgewogICAgICAgICBVSW50
MTYgICAgICAgICAgICBjb250cm9sSUQ7CiAgICAgICAgIHN0cnVjdCBDb250cm9sVHlwZSAqcENv
bnRyb2w7CiAgICAgICAgIEJvb2xlYW4gICAgICAgICAgIG9uOwogICAgICAgICBVSW50OCAgICAg
ICAgICAgICByZXNlcnZlZDE7CiAgICAgICAgIFVJbnQxNgkJCQl2YWx1ZTsJCSAKICAgICAgICAg
fSBjdGxTZWxlY3Q7CgogICAgICBzdHJ1Y3QgY3RsUmVwZWF0IHsKICAgICAgICAgVUludDE2ICAg
ICAgICAgICAgY29udHJvbElEOwogICAgICAgICBzdHJ1Y3QgQ29udHJvbFR5cGUgKnBDb250cm9s
OwogICAgICAgICBVSW50MzIgICAgICAgICAgICB0aW1lOwogICAgICAgICBVSW50MTYJCQkJdmFs
dWU7CQkgCiAgICAgICAgIH0gY3RsUmVwZWF0OwoKICAgICAgc3RydWN0IGN0bEV4aXQgewogICAg
ICAgICBVSW50MTYgICAgICAgICAgICBjb250cm9sSUQ7CiAgICAgICAgIHN0cnVjdCBDb250cm9s
VHlwZSAqcENvbnRyb2w7CiAgICAgICAgIH0gY3RsRXhpdDsKCiAgICAgIHN0cnVjdCBmbGRFbnRl
ciB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZpZWxkSUQ7CiAgICAgICAgIHN0cnVjdCBG
aWVsZFR5cGUgCSpwRmllbGQ7CiAgICAgICAgIH0gZmxkRW50ZXI7CgogICAgICBzdHJ1Y3QgZmxk
SGVpZ2h0Q2hhbmdlZCB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZpZWxkSUQ7CiAgICAg
ICAgIHN0cnVjdCBGaWVsZFR5cGUgCSpwRmllbGQ7CiAgICAgICAgIEludDE2ICAgICAgICAgICAg
IG5ld0hlaWdodDsKICAgICAgICAgVUludDE2ICAgICAgICAgICAgY3VycmVudFBvczsKICAgICAg
ICAgfSBmbGRIZWlnaHRDaGFuZ2VkOwoKICAgICAgc3RydWN0IGZsZENoYW5nZWQgewogICAgICAg
ICBVSW50MTYgICAgICAgICAgICBmaWVsZElEOwogICAgICAgICBzdHJ1Y3QgRmllbGRUeXBlIAkq
cEZpZWxkOwogICAgICAgICB9IGZsZENoYW5nZWQ7CgogICAgICBzdHJ1Y3QgZmxkRXhpdCB7CiAg
ICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZpZWxkSUQ7CiAgICAgICAgIHN0cnVjdCBGaWVsZFR5
cGUJKnBGaWVsZDsKICAgICAgICAgfSBmbGRFeGl0OwoKICAgICAgc3RydWN0IGxzdEVudGVyIHsK
ICAgICAgICAgVUludDE2ICAgICAgICAgICAgbGlzdElEOwogICAgICAgICBzdHJ1Y3QgTGlzdFR5
cGUgCSpwTGlzdDsKICAgICAgICAgSW50MTYgICAgICAgICAgICAgc2VsZWN0aW9uOwogICAgICAg
ICB9IGxzdEVudGVyOwoKICAgICAgc3RydWN0IGxzdEV4aXQgewogICAgICAgICBVSW50MTYgICAg
ICAgICAgICBsaXN0SUQ7CiAgICAgICAgIHN0cnVjdCBMaXN0VHlwZSAJKnBMaXN0OwogICAgICAg
ICB9IGxzdEV4aXQ7CgogICAgICBzdHJ1Y3QgbHN0U2VsZWN0IHsKICAgICAgICAgVUludDE2ICAg
ICAgICAgICAgbGlzdElEOwogICAgICAgICBzdHJ1Y3QgTGlzdFR5cGUgCSpwTGlzdDsKICAgICAg
ICAgSW50MTYgICAgICAgICAgICAgc2VsZWN0aW9uOwogICAgICAgICB9IGxzdFNlbGVjdDsKCiAg
ICAgIHN0cnVjdCB0YmxFbnRlciB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIHRhYmxlSUQ7
CiAgICAgICAgIHN0cnVjdCBUYWJsZVR5cGUJKnBUYWJsZTsKICAgICAgICAgSW50MTYgICAgICAg
ICAgICAgcm93OwogICAgICAgICBJbnQxNiAgICAgICAgICAgICBjb2x1bW47CiAgICAgICAgIH0g
dGJsRW50ZXI7CgogICAgICBzdHJ1Y3QgdGJsRXhpdCB7CiAgICAgICAgIFVJbnQxNiAgICAgICAg
ICAgIHRhYmxlSUQ7CiAgICAgICAgIHN0cnVjdCBUYWJsZVR5cGUgCSpwVGFibGU7CiAgICAgICAg
IEludDE2ICAgICAgICAgICAgIHJvdzsKICAgICAgICAgSW50MTYgICAgICAgICAgICAgY29sdW1u
OwogICAgICAgICB9IHRibEV4aXQ7CgogICAgICBzdHJ1Y3QgdGJsU2VsZWN0IHsKICAgICAgICAg
VUludDE2ICAgICAgICAgICAgdGFibGVJRDsKICAgICAgICAgc3RydWN0IFRhYmxlVHlwZSAJKnBU
YWJsZTsKICAgICAgICAgSW50MTYgICAgICAgICAgICAgcm93OwogICAgICAgICBJbnQxNiAgICAg
ICAgICAgICBjb2x1bW47CiAgICAgICAgIH0gdGJsU2VsZWN0OwoKICAgICAgc3RydWN0IGZybUxv
YWQgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBmb3JtSUQ7CiAgICAgICAgIH0gZnJtTG9h
ZDsKCiAgICAgIHN0cnVjdCBmcm1PcGVuIHsKICAgICAgICAgVUludDE2ICAgICAgICAgICAgZm9y
bUlEOwogICAgICAgICB9IGZybU9wZW47CgogICAgICBzdHJ1Y3QgZnJtR290byB7CiAgICAgICAg
IFVJbnQxNiAgICAgICAgICAgIGZvcm1JRDsKICAgICAgICAgVUludDE2ICAgICAgICAgICAgcmVj
b3JkTnVtOyAgICAgICAgIAogICAgICAgICBVSW50MTYgICAgICAgICAgICBtYXRjaFBvczsgICAg
ICAgICAgCiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIG1hdGNoTGVuOyAgICAgICAgICAKICAg
ICAgICAgVUludDE2ICAgICAgICAgICAgbWF0Y2hGaWVsZE51bTsgICAgIAogICAgICAgICBVSW50
MzIgICAgICAgICAgICBtYXRjaEN1c3RvbTsgICAgICAgCiAgICAgICAgIH0gZnJtR290bzsKCiAg
ICAgIHN0cnVjdCBmcm1DbG9zZSB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZvcm1JRDsK
ICAgICAgICAgfSBmcm1DbG9zZTsKCiAgICAgIHN0cnVjdCBmcm1VcGRhdGUgewogICAgICAgICBV
SW50MTYgICAgICAgICAgICBmb3JtSUQ7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIHVwZGF0
ZUNvZGU7ICAgICAgICAKICAgICAgICAgfSBmcm1VcGRhdGU7CgogICAgICBzdHJ1Y3QgZnJtVGl0
bGVFbnRlciB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGZvcm1JRDsKICAgICAgICAgfSBm
cm1UaXRsZUVudGVyOwoKICAgICAgc3RydWN0IGZybVRpdGxlU2VsZWN0IHsKICAgICAgICAgVUlu
dDE2ICAgICAgICAgICAgZm9ybUlEOwogICAgICAgICB9IGZybVRpdGxlU2VsZWN0OwoKICAgICAg
IHN0cnVjdCBhdHRuSW5kaWNhdG9yRW50ZXIgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBm
b3JtSUQ7CiAgICAgIAl9IGF0dG5JbmRpY2F0b3JFbnRlcjsKCiAgICAgc3RydWN0IGF0dG5JbmRp
Y2F0b3JTZWxlY3QgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBmb3JtSUQ7CiAgICAgIAl9
IGF0dG5JbmRpY2F0b3JTZWxlY3Q7CgogICAgICBzdHJ1Y3QgZGF5U2VsZWN0IHsKICAgICAgICAg
c3RydWN0IERheVNlbGVjdG9yVHlwZSAqcFNlbGVjdG9yOwogICAgICAgICBJbnQxNiAgICAgICAg
ICAgICBzZWxlY3Rpb247CiAgICAgICAgIEJvb2xlYW4gICAgICAgICAgIHVzZVRoaXNEYXRlOwog
ICAgICAgICBVSW50OCAgICAgICAgICAgICByZXNlcnZlZDE7CiAgICAgICAgIH0gZGF5U2VsZWN0
OwoKICAgICAgc3RydWN0IG1lbnUgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBpdGVtSUQ7
CiAgICAgICAgIH0gbWVudTsKCiAgICAgIHN0cnVjdCBwb3BTZWxlY3QgewogICAgICAgICBVSW50
MTYgICAgICAgICAgICBjb250cm9sSUQ7CiAgICAgICAgIHN0cnVjdCBDb250cm9sVHlwZSAqY29u
dHJvbFA7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIGxpc3RJRDsKICAgICAgICAgc3RydWN0
IExpc3RUeXBlIAkqbGlzdFA7CiAgICAgICAgIEludDE2ICAgICAgICAgICAgIHNlbGVjdGlvbjsK
ICAgICAgICAgSW50MTYgICAgICAgICAgICAgcHJpb3JTZWxlY3Rpb247CiAgICAgICAgIH0gcG9w
U2VsZWN0OwoKICAgICAgc3RydWN0IHNjbEVudGVyIHsKICAgICAgICAgVUludDE2ICAgICAgICAg
ICAgc2Nyb2xsQmFySUQ7CiAgICAgICAgIHN0cnVjdCBTY3JvbGxCYXJUeXBlICpwU2Nyb2xsQmFy
OwogICAgICAgICB9IHNjbEVudGVyOwoKICAgICAgc3RydWN0IHNjbEV4aXQgewogICAgICAgICBV
SW50MTYgICAgICAgICAgICBzY3JvbGxCYXJJRDsKICAgICAgICAgc3RydWN0IFNjcm9sbEJhclR5
cGUgKnBTY3JvbGxCYXI7CiAgICAgICAgIEludDE2ICAgICAgICAgICAgIHZhbHVlOwogICAgICAg
ICBJbnQxNiAgICAgICAgICAgICBuZXdWYWx1ZTsKICAgICAgICAgfSBzY2xFeGl0OwoKICAgICAg
c3RydWN0IHNjbFJlcGVhdCB7CiAgICAgICAgIFVJbnQxNiAgICAgICAgICAgIHNjcm9sbEJhcklE
OwogICAgICAgICBzdHJ1Y3QgU2Nyb2xsQmFyVHlwZSAqcFNjcm9sbEJhcjsKICAgICAgICAgSW50
MTYgICAgICAgICAgICAgdmFsdWU7CiAgICAgICAgIEludDE2ICAgICAgICAgICAgIG5ld1ZhbHVl
OwogICAgICAgICBJbnQzMiAgICAgICAgICAgICB0aW1lOwogICAgICAgICB9IHNjbFJlcGVhdDsK
CgkJc3RydWN0IG1lbnVDbWRCYXJPcGVuIHsKCQkJQm9vbGVhbiBwcmV2ZW50RmllbGRCdXR0b25z
OyAgIAoJCQlVSW50OCAgIHJlc2VydmVkOwkJCQkJIAoJCQl9IG1lbnVDbWRCYXJPcGVuOwoJCQoJ
CXN0cnVjdCBtZW51T3BlbiB7CgkJCVVJbnQxNgkJCQltZW51UnNjSUQ7CgkJCSAKCQkJSW50MTYJ
CQkJCWNhdXNlOwoJCQl9IG1lbnVPcGVuOwoJCQoJCXN0cnVjdCBnYWRnZXRFbnRlciB7CiAgICAg
ICAgIFVJbnQxNiAgICAgICAgICAgIGdhZGdldElEOwkJCSAKICAgICAgICAgc3RydWN0IEZvcm1H
YWRnZXRUeXBlICoJZ2FkZ2V0UDsJCSAKCQkJfSBnYWRnZXRFbnRlcjsKCQkJCgkJc3RydWN0IGdh
ZGdldE1pc2MgewogICAgICAgICBVSW50MTYgICAgICAgICAgICBnYWRnZXRJRDsJCQkgCiAgICAg
ICAgIHN0cnVjdCBGb3JtR2FkZ2V0VHlwZSAqCWdhZGdldFA7CQkgCiAgICAgICAgIFVJbnQxNgkJ
CQlzZWxlY3RvcjsKICAgICAgICAgdm9pZCAqCQkJCWRhdGFQOwoJCQl9IGdhZGdldE1pc2M7CgkJ
CQogICAgICB9IGRhdGE7Cgp9IEV2ZW50VHlwZTsKCnR5cGVkZWYgRXZlbnRUeXBlICpFdmVudFB0
cjsKCiAKIAogCiAKIAoKCiMgMzQ0ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0Nv
cmUvVUkvRXZlbnQuaCIKCgoKCiMgNDYgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3Mv
Q29yZS9TeXN0ZW0vU3lzdGVtTWdyLmgiIDIKCgoKCgogCgoKCiAKIAogCiAKIAoKIAogCiAKCgoK
CgoKCgkKCSAKCgoKCgkKCQogCgoKCgogCiAKIAogCiAKIAogCiAKIAogCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAogCgogCgoKCgoKCgoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJ
CQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAK
CQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJ
CQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ
CQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkgCgoKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJ
CQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ
CQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkg
CgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ
IAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJ
CQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJ
CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJ
CSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ
IAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJ
CQkJCQkJCQkJCQkgCgoKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJ
CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJ
CSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJ
IAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgoKCgkJCQkJCQkJCQkJCQkJCSAK
CgoKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCSAK
CQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJ
CQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ
CQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJ
CQkJCQkJCQkgCgoKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJCQogCiAKIAoK
CgkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkgCgoK
CgoKCgoKCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCSAKCgoJCQkJCQkJCQkJCQkJ
CQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJ
IAoKCgoKIAogCgogCgogCgoKCgoKCgoKCgoKCiAKIAoKIAoKIAoKIAogCgogCiAKCgoKCiAKIAog
CiAKCgoKCgogCiAKIAoKCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCgoJ
CQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkKCgkJCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkJIAoK
CgkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkg
CgkJCQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCQkJIAoKCQkJCQkJCQkJCQkJCQkJ
CQkKIAoKIAogCiAKCgogCiAKIAogCiAKIAogCiAKCgoKIAogCiAKCgoJCQkJCQkJCQkJCQkJCQkg
CgoKCQkJCQkJCQkJCQkJCQkJIAoKCQkJCQkJCQkJCQkJCQkJIAoKCQkJCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJ
CQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ
CQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCiAKCgoKCiAKIAogCiAKIAoK
IAp0eXBlZGVmIHN0cnVjdCB7CglCb29sZWFuCQl1aUNvbWluZzsJCQkJCQkJIAoJCQkJCQkJCQkJ
CQkJCQkgCglVSW50OAkJCXJlc2VydmVkMTsKCX0gU3lzQXBwTGF1bmNoQ21kU2F2ZURhdGFUeXBl
OwoJCiAKdHlwZWRlZiBzdHJ1Y3QgewoJQm9vbGVhbgkJaGFyZFJlc2V0OwkJCQkJCQkgCglCb29s
ZWFuCQljcmVhdGVEZWZhdWx0REI7CQkJCQkgCgl9IFN5c0FwcExhdW5jaENtZFN5c3RlbVJlc2V0
VHlwZTsKCQoKIAp0eXBlZGVmIHN0cnVjdCBTeXNBcHBMYXVuY2hDbWRJbml0RGF0YWJhc2VUeXBl
IHsKCURtT3BlblJlZglkYlA7CQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJ
CQkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJVUludDMyCQljcmVhdG9yOwkJCQkJCQkJIAoJVUludDMy
CQl0eXBlOwkJCQkJCQkJCSAKCVVJbnQxNgkJdmVyc2lvbjsJCQkJCQkJCSAKCX0gU3lzQXBwTGF1
bmNoQ21kSW5pdERhdGFiYXNlVHlwZTsKCgogCiAKIAp0eXBlZGVmIHN0cnVjdCBTeXNBcHBMYXVu
Y2hDbWRTeW5jQ2FsbEFwcGxpY2F0aW9uVHlwZVYxMCB7CglVSW50MTYJCWFjdGlvbjsJCQkJCSAK
CVVJbnQxNgkJcGFyYW1TaXplOwkJCQkgCgl2b2lkICoJCXBhcmFtUDsJCQkJCSAKCVVJbnQ4CQkJ
cmVtb3RlU29ja2V0OwkJCSAKCVVJbnQ4CQkJdGlkOwkJCQkJCSAKCUJvb2xlYW4JCWhhbmRsZWQ7
CQkJCQkgCglVSW50OAkJCXJlc2VydmVkMTsKCX0gU3lzQXBwTGF1bmNoQ21kU3luY0NhbGxBcHBs
aWNhdGlvblR5cGVWMTA7CgoKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgU3lzQXBwTGF1bmNoQ21kSGFu
ZGxlU3luY0NhbGxBcHBUeXBlIHsKCVVJbnQxNgkJcGJTaXplOwkJCQkJIAoJVUludDE2CQlhY3Rp
b247CQkJCQkgCgl2b2lkICoJCXBhcmFtUDsJCQkJCSAKCVVJbnQzMgkJZHdQYXJhbVNpemU7CQkJ
IAoJdm9pZCAqCQlkbFJlZlA7CQkJCQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCglCb29s
ZWFuCQloYW5kbGVkOwkJCQkJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ
CQkgCgkKCVVJbnQ4CQkJcmVzZXJ2ZWQxOwoJCQkJCQkJCQkJCQoJRXJyCQkJcmVwbHlFcnI7CQkJ
CSAKCQoJIAoJVUludDMyCQlkd1Jlc2VydmVkMTsJCQkgCglVSW50MzIJCWR3UmVzZXJ2ZWQyOwkJ
CSAKCgkgCgkgCgkKCQlVSW50MzIJCWNyZWF0b3I7CgkJVUludDMyCQl0eXBlOwoJCgoJfSBTeXNB
cHBMYXVuY2hDbWRIYW5kbGVTeW5jQ2FsbEFwcFR5cGU7CgogCnR5cGVkZWYgc3RydWN0IAoJewoJ
VUludDMyCQljcmVhdG9yOwoJVUludDMyCQl0eXBlOwoJRXJyCQkJcmVzdWx0OwoJfSBTeXNBcHBM
YXVuY2hDbWRGYWlsZWRBcHBOb3RpZnlUeXBlOwoJCgkKIAp0eXBlZGVmIHN0cnVjdCAKCXsKCVVJ
bnQxNgkJY2FyZE5vOwoJTG9jYWxJRAkJZGJJRDsKCX0gU3lzQXBwTGF1bmNoQ21kT3BlbkRCVHlw
ZTsKCQoKIAoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBTeXNBcHBJbmZvVHlwZSB7CglJ
bnQxNgkJCQljbWQ7CQkJCQkJCSAKCU1lbVB0cgkJCWNtZFBCUDsJCQkJCQkgCglVSW50MTYJCQls
YXVuY2hGbGFnczsJCQkJIAoJCglVSW50MzIJCQl0YXNrSUQ7CQkJCQkJIAoJTWVtSGFuZGxlCQlj
b2RlSDsJCQkJCQkgCglEbU9wZW5SZWYJCWRiUDsJCQkJCQkJIAoJVUludDgJCQkJKnN0YWNrUDsJ
CQkJCQkgCglVSW50OAkJCQkqZ2xvYmFsc0NodW5rUDsJCQkgCgoJVUludDE2CQkJbWVtT3duZXJJ
RDsJCQkJCSAKCU1lbVB0cgkJCWRtQWNjZXNzUDsJCQkJCSAKCUVycgkJCQlkbUxhc3RFcnI7CQkJ
CQkgCglNZW1QdHIJCQllcnJFeGNlcHRpb25QOwkJCQkgCgoJIAoJVUludDgJCQkJKmE1UHRyOwkJ
CQkJCSAKCVVJbnQ4CQkJCSpzdGFja0VuZFA7CQkJCQkgCglVSW50OAkJCQkqZ2xvYmFsRW5kUDsJ
CQkJIAoJc3RydWN0IFN5c0FwcEluZm9UeXBlICpyb290UDsJCQkJIAoJCQkJCQkJCQkJCQkJCSAK
CU1lbVB0cgkJCWV4dHJhUDsJCQkJCQkgCgl9IFN5c0FwcEluZm9UeXBlOwp0eXBlZGVmIFN5c0Fw
cEluZm9UeXBlICpTeXNBcHBJbmZvUHRyOwoKCiAKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
dHlwZWRlZiBzdHJ1Y3QgU3lzTGliVGJsRW50cnlUeXBlIHsKCU1lbVB0cgkJKmRpc3BhdGNoVGJs
UDsJCQkJCSAKCXZvaWQJCQkqZ2xvYmFsc1A7CQkJCQkJIAoJCgkgCglMb2NhbElECQlkYklEOwkJ
CQkJCQkJIAoJdm9pZAkJCSpjb2RlUnNjSDsJCQkJCQkgCgl9IFN5c0xpYlRibEVudHJ5VHlwZTsK
dHlwZWRlZiBTeXNMaWJUYmxFbnRyeVR5cGUqCVN5c0xpYlRibEVudHJ5UHRyOwoKIAogCgp0eXBl
ZGVmIHN0cnVjdCBTaW1EaXNwYXRjaFRhYmxlVHlwZSB7CglVSW50MzIJbnVtRW50cmllczsJCQkJ
CQkJIAoJdm9pZAkJKmVudHJpZXNbMV07CQkJCQkJIAoJCQkJCQkJCQkJCQkJCSAKICAgfSBTaW1E
aXNwYXRjaFRhYmxlVHlwZTsKdHlwZWRlZiBTaW1EaXNwYXRjaFRhYmxlVHlwZSoJU2ltRGlzcGF0
Y2hUYWJsZVB0cjsKCgoKIAp0eXBlZGVmIEVyciAoKlN5c0xpYkVudHJ5UHJvY1B0cikoVUludDE2
IHJlZk51bSwgU3lzTGliVGJsRW50cnlQdHIgZW50cnlQKTsKCiAKCgogCgoKIAoKCgogCgoKIAp0
eXBlZGVmIHZvaWQgKCpTeXNUZXJtUHJvY1B0cikoVUludDMyIHRhc2tJRCwgSW50MzIgcmVhc29u
KTsKCiAKdHlwZWRlZiB2b2lkICgqU3lzVGltZXJQcm9jUHRyKShJbnQzMiB0aW1lcklELCBJbnQz
MiBwYXJhbSk7CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCiAKCgoKCgog
CgoKCgogCgoKCgoKCgogCgoKCgoKCQkJIAoJCQkgCgkJCSAKCQkJIAoJCQkgCgkJCSAKCgoJCQkg
CgoKCgoKCgkJCSAKCgoKCgoJCQkgCgkJCSAKCQkJIAoJCQkgCgkJCQoKCQkJIAoJCQkgCgkJCSAK
CQkJIAoJCQkgCgkJCSAKCQkJIAoKCgkJCSAKCQkJIAoJCQkKCgoJCQkKCgkJCSAKCQkJIAoKCgkJ
CSAKCQkJIAoJCQkgCgkJCQoKCQkJIAoKCgkJCSAKCgoJCQkgCgkJCSAKCQkJIAoJCQkgCgoKCQkJ
IAoKCQkJIAoKCgoJCQkgCgkJCQoKCQkJCgoJCQkgCgkJCSAKCgoJCQkgCgkJCSAKCgoKCgoJCQkK
IAoKCiAKCgoKIAoKCgogCgoKCgoKCiAKIAogCiAKCgoKCgoKCgoKCiAKIAogCiAKCgoKCgoKCgoK
IAoKCiAKIAp0eXBlZGVmIGVudW0gewoJc3lzQmF0dGVyeUtpbmRBbGthbGluZT0wLAoJc3lzQmF0
dGVyeUtpbmROaUNhZCwKCXN5c0JhdHRlcnlLaW5kTGlJb24sCglzeXNCYXR0ZXJ5S2luZFJlY2hB
bGssCglzeXNCYXR0ZXJ5S2luZE5pTUgsCglzeXNCYXR0ZXJ5S2luZExpSW9uMTQwMCwKCXN5c0Jh
dHRlcnlLaW5kTGFzdD0weEZGICAgIAoJfSBTeXNCYXR0ZXJ5S2luZDsKCQogCnR5cGVkZWYgZW51
bSB7CglzeXNCYXR0ZXJ5U3RhdGVOb3JtYWw9MCwKCXN5c0JhdHRlcnlTdGF0ZUxvd0JhdHRlcnks
CglzeXNCYXR0ZXJ5U3RhdGVDcml0QmF0dGVyeSwKCXN5c0JhdHRlcnlTdGF0ZVNodXRkb3duCgl9
IFN5c0JhdHRlcnlTdGF0ZTsKCgogCnR5cGVkZWYgc3RydWN0IAoJewoJQ2hhcgkJCW5hbWVbMzIg
XTsKCVVJbnQzMgkJY3JlYXRvcjsKCVVJbnQzMgkJdHlwZTsKCVVJbnQxNgkJdmVyc2lvbjsKCUxv
Y2FsSUQJCWRiSUQ7CglVSW50MTYgCQljYXJkTm87CglCaXRtYXBQdHIJaWNvblA7Cgl9IFN5c0RC
TGlzdEl0ZW1UeXBlOwoJCgogCiAKIAogCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQzMgkJZGF0YVsz
XTsKCX0gU3lzTWFpbGJveE1zZ1R5cGU7CgkKCiAKCgoKIAoKCgoKCiAKCgoKCgoKCiAKCgojIDEx
NzQgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU3lzdGVtTWdy
LmgiCgoKCgogCgoKCgoKCgoKCgoKCgojIDYwICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9J
bmNzL0NvcmUvU3lzdGVtL1ByZWZlcmVuY2VzLmgiIDIKCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0v
UGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9Mb2NhbGVNZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgogCgoKCiAKCgoKIAoKCgogCgoK
CiAKCgoKdHlwZWRlZiBVSW50MTYgTG1Mb2NhbGVTZXR0aW5nQ2hvaWNlOwoKIAoKCgogCgoKCgoJ
CgoKIAoKCgogCgoKCiAKCgoKIAoKCgogCgoKCiAKCgoKIAoKCgogCgoKCiAKCgoKIAoKCgogCgoK
CiAKCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoJCgoKCgoJCgoKCgoKIAoKCiAKdHlwZWRlZiBVSW50
MTYgTG1Sb3V0aW5lU2VsZWN0b3I7CgoKCgoKCgogCgoKCnR5cGVkZWYgVUludDggTGFuZ3VhZ2VU
eXBlOwp0eXBlZGVmIFVJbnQ4IENvdW50cnlUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgX0xtTG9jYWxl
VHlwZSBMbUxvY2FsZVR5cGU7CnN0cnVjdCBfTG1Mb2NhbGVUeXBlCnsKCVVJbnQxNglsYW5ndWFn
ZTsJCSAKCVVJbnQxNgljb3VudHJ5OwkJCSAKfTsKCiAKCgoKIyAyMjggIi4uL1NyY1NoYXJlZC9Q
YWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vTG9jYWxlTWdyLmgiCgoKCiMgNjEgIi4uL1Ny
Y1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vUHJlZmVyZW5jZXMuaCIgMgoK
IyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvQXR0ZW50aW9uTWdy
LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgoKCgoJCgog
CgoKCgoKCgoKCgoKCgoKCQkJCgkJCQogCgoKCnR5cGVkZWYgVUludDMyIEF0dG5GbGFnc1R5cGU7
CgoKCgoKCSAKCgoKCiAKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVm
IFVJbnQxNiBBdHRuTGV2ZWxUeXBlOwoJCgkKCnR5cGVkZWYgVUludDE2IEF0dG5Db21tYW5kVHlw
ZTsKCQoJCgkKCQoJCgkKCQoJCgp0eXBlZGVmIHVuaW9uIEF0dG5Db21tYW5kQXJnc1RhZyB7Cglz
dHJ1Y3QgQXR0bkNvbW1hbmRBcmdzRHJhd0RldGFpbFRhZ3sKCQlSZWN0YW5nbGVUeXBlIGJvdW5k
czsKCQlCb29sZWFuIGZpcnN0VGltZTsKCQlBdHRuRmxhZ3NUeXBlIGZsYWdzOwoJfSBkcmF3RGV0
YWlsOwoJCglzdHJ1Y3QgQXR0bkNvbW1hbmRBcmdzRHJhd0xpc3RUYWcgewoJCVJlY3RhbmdsZVR5
cGUgYm91bmRzOwoJCUJvb2xlYW4gZmlyc3RUaW1lOwoJCUF0dG5GbGFnc1R5cGUgZmxhZ3M7CgkJ
Qm9vbGVhbiBzZWxlY3RlZDsKCX0gZHJhd0xpc3Q7CgkKCXN0cnVjdCBBdHRuQ29tbWFuZEFyZ3NH
b3RJdFRhZyB7CgkJQm9vbGVhbiBkaXNtaXNzZWRCeVVzZXI7Cgl9IGdvdEl0OwoJCglzdHJ1Y3Qg
QXR0bkNvbW1hbmRBcmdzSXRlcmF0ZVRhZyB7CgkJVUludDMyIGl0ZXJhdGlvbkRhdGE7Cgl9IGl0
ZXJhdGU7Cn0gQXR0bkNvbW1hbmRBcmdzVHlwZTsKCnR5cGVkZWYgc3RydWN0IHsKCUF0dG5Db21t
YW5kVHlwZSBjb21tYW5kOwoJVUludDMyIHVzZXJEYXRhOwoJQXR0bkNvbW1hbmRBcmdzVHlwZSAq
Y29tbWFuZEFyZ3NQOwp9IEF0dG5MYXVuY2hDb2RlQXJnc1R5cGU7Cgp0eXBlZGVmIEVyciBBdHRu
Q2FsbGJhY2tQcm9jIChBdHRuQ29tbWFuZFR5cGUgY29tbWFuZCwgVUludDMyIHVzZXJEYXRhLCBB
dHRuQ29tbWFuZEFyZ3NUeXBlICpjb21tYW5kQXJnc1ApOwoKIAp0eXBlZGVmIHN0cnVjdCB7CglB
dHRuRmxhZ3NUeXBlIGZsYWdzOwp9IEF0dG5Ob3RpZnlEZXRhaWxzVHlwZTsKCgogCgoKIyAyMDcg
Ii4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9VSS9BdHRlbnRpb25NZ3IuaCIK
CgoKIyA2MiAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9QcmVm
ZXJlbmNlcy5oIiAyCgoKIAoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCQoJ
CgkKCgoJCgoKCgoKCQoJCgkKCgp0eXBlZGVmIGVudW0KCXsKCXVuaXRzRW5nbGlzaCA9IDAsCQkg
Cgl1bml0c01ldHJpYwkJCQkgCgl9IE1lYXN1cmVtZW50U3lzdGVtVHlwZTsKCgogCiAKIAp0eXBl
ZGVmIGVudW0gewoJc2xPbiA9IDAsCglzbE9mZiA9IDEKCX0gU291bmRMZXZlbFR5cGVWMjA7CgkK
IAp0eXBlZGVmIGVudW0gewogICBuZXZlciA9IDAsCQkJCQkgCiAgIHVwb25Qb3dlck9mZiwJCQkJ
IAogICBhdFByZXNldFRpbWUsCQkJCSAKICAgYWZ0ZXJQcmVzZXREZWxheQkJCQkgCiAgIH0gU2Vj
dXJpdHlBdXRvTG9ja1R5cGU7CgoKIAogCnR5cGVkZWYgZW51bSB7CglhbE9mZiwJCQkJCQkJCQkg
CglhbEV2ZW50c09ubHksCQkJCQkJCSAKCWFsRXZlbnRzQW5kUmFuZG9tLAkJCQkJIAoJYWxFdmVu
dHNBbmRNb3JlUmFuZG9tCQkJCSAKCX0gQW5pbWF0aW9uTGV2ZWxUeXBlOwoKCnR5cGVkZWYgZW51
bSAKCXsKCXByZWZWZXJzaW9uLAoJcHJlZkNvdW50cnksCglwcmVmRGF0ZUZvcm1hdCwKCXByZWZM
b25nRGF0ZUZvcm1hdCwKCXByZWZXZWVrU3RhcnREYXksCglwcmVmVGltZUZvcm1hdCwKCXByZWZO
dW1iZXJGb3JtYXQsCglwcmVmQXV0b09mZkR1cmF0aW9uLAkJCQkJIAoJcHJlZlN5c1NvdW5kTGV2
ZWxWMjAsCQkJCSAKCXByZWZHYW1lU291bmRMZXZlbFYyMCwJCQkJIAoJcHJlZkFsYXJtU291bmRM
ZXZlbFYyMCwJCQkJIAoJcHJlZkhpZGVQcml2YXRlUmVjb3Jkc1YzMywKCXByZWZEZXZpY2VMb2Nr
ZWQsCglwcmVmTG9jYWxTeW5jUmVxdWlyZXNQYXNzd29yZCwKCXByZWZSZW1vdGVTeW5jUmVxdWly
ZXNQYXNzd29yZCwKCXByZWZTeXNCYXR0ZXJ5S2luZCwKCXByZWZBbGxvd0Vhc3RlckVnZ3MsCglw
cmVmTWludXRlc1dlc3RPZkdNVCwJCQkJIAoJcHJlZkRheWxpZ2h0U2F2aW5ncywJCQkJCSAKCXBy
ZWZSb25hbWF0aWNDaGFyLAoJcHJlZkhhcmQxQ2hhckFwcENyZWF0b3IsCQkJIAoJcHJlZkhhcmQy
Q2hhckFwcENyZWF0b3IsCQkJIAoJcHJlZkhhcmQzQ2hhckFwcENyZWF0b3IsCQkJIAoJcHJlZkhh
cmQ0Q2hhckFwcENyZWF0b3IsCQkJIAoJcHJlZkNhbGNDaGFyQXBwQ3JlYXRvciwJCQkJIAoJcHJl
ZkhhcmRDcmFkbGVDaGFyQXBwQ3JlYXRvciwJCSAKCXByZWZMYXVuY2hlckFwcENyZWF0b3IsCQkJ
CSAKCXByZWZTeXNQcmVmRmxhZ3MsCQkKCXByZWZIYXJkQ3JhZGxlMkNoYXJBcHBDcmVhdG9yLAkg
CglwcmVmQW5pbWF0aW9uTGV2ZWwsCgoJIAoJcHJlZlN5c1NvdW5kVm9sdW1lLAkJCQkJIAoJcHJl
ZkdhbWVTb3VuZFZvbHVtZSwJCQkJCSAKCXByZWZBbGFybVNvdW5kVm9sdW1lLAkJCQkgCglwcmVm
QmVhbVJlY2VpdmUsCQkJCQkJIAoJcHJlZkNhbGlicmF0ZURpZ2l0aXplckF0UmVzZXQsCSAKCXBy
ZWZTeXN0ZW1LZXlib2FyZElELAkJCQkgCglwcmVmRGVmU2VyaWFsUGx1Z0luLAkJCQkJIAoKCSAK
CXByZWZTdGF5T25XaGVuUGx1Z2dlZEluLAkJCSAKCXByZWZTdGF5TGl0V2hlblBsdWdnZWRJbiwJ
CQkgCgoJIAoJcHJlZkFudGVubmFDaGFyQXBwQ3JlYXRvciwJCQkgCgoJIAoJcHJlZk1lYXN1cmVt
ZW50U3lzdGVtLAkJCQkgCgkKCSAKCXByZWZTaG93UHJpdmF0ZVJlY29yZHMsCQkJCSAKCXByZWZB
dXRvT2ZmRHVyYXRpb25TZWNzLAkJCSAKCQoJIAoJcHJlZlRpbWVab25lLAkJCQkJCQkgCglwcmVm
RGF5bGlnaHRTYXZpbmdBZGp1c3RtZW50LAkJIAoKCXByZWZBdXRvTG9ja1R5cGUsCQkJCQkJIAoJ
cHJlZkF1dG9Mb2NrVGltZSwJCQkJCQkgCglwcmVmQXV0b0xvY2tUaW1lRmxhZywgICAgCQkJIAoK
CXByZWZMYW5ndWFnZSwJCQkJCQkJIAoJcHJlZkxvY2FsZSwJCQkJCQkJCSAKCQoJcHJlZlRpbWVa
b25lQ291bnRyeSwJCQkJCSAKCQoJcHJlZkF0dGVudGlvbkZsYWdzLAkJCQkJIAoKCXByZWZEZWZh
dWx0QXBwQ3JlYXRvcgkJCQkgCgoJfSBTeXN0ZW1QcmVmZXJlbmNlc0Nob2ljZTsKCQoJCnR5cGVk
ZWYgc3RydWN0IHsKCVVJbnQxNiB2ZXJzaW9uOwkJCQkJCSAKCQoJIAoJQ291bnRyeVR5cGUgY291
bnRyeTsJCQkJCSAKCURhdGVGb3JtYXRUeXBlIGRhdGVGb3JtYXQ7CQkJIAoJRGF0ZUZvcm1hdFR5
cGUgbG9uZ0RhdGVGb3JtYXQ7CSAKCVVJbnQ4IHdlZWtTdGFydERheTsJCQkJCSAKCVRpbWVGb3Jt
YXRUeXBlIHRpbWVGb3JtYXQ7CQkJIAoJTnVtYmVyRm9ybWF0VHlwZSBudW1iZXJGb3JtYXQ7CSAK
CQoJIAoJVUludDggYXV0b09mZkR1cmF0aW9uOwkJCQkgCglTb3VuZExldmVsVHlwZVYyMCBzeXNT
b3VuZExldmVsOwkJIAoJU291bmRMZXZlbFR5cGVWMjAgYWxhcm1Tb3VuZExldmVsOwkgCglCb29s
ZWFuIGhpZGVTZWNyZXRSZWNvcmRzOwkJCSAKCQkJCQkJCQkJCQkJIAoJQm9vbGVhbiBkZXZpY2VM
b2NrZWQ7CQkJCSAKCQkJCQkJCQkJCQkJIAoJVUludDggcmVzZXJ2ZWQxOwoJVUludDE2IHN5c1By
ZWZGbGFnczsJCQkJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkgCglTeXNCYXR0ZXJ5S2lu
ZAlzeXNCYXR0ZXJ5S2luZDsJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4IHJl
c2VydmVkMjsKCQoJfSBTeXN0ZW1QcmVmZXJlbmNlc1R5cGVWMTA7CgoKIAogCiAKIAogCiAKIAog
Cgp0eXBlZGVmIHN0cnVjdCAKCXsKCVVJbnQxNiB2ZXJzaW9uOwkJCQkJCSAKCQoJIAoJQ291bnRy
eVR5cGUgY291bnRyeTsJCQkJCSAKCURhdGVGb3JtYXRUeXBlIGRhdGVGb3JtYXQ7CQkJIAoJRGF0
ZUZvcm1hdFR5cGUgbG9uZ0RhdGVGb3JtYXQ7CSAKCUludDggd2Vla1N0YXJ0RGF5OwkJCQkJIAoJ
VGltZUZvcm1hdFR5cGUgdGltZUZvcm1hdDsJCQkgCglOdW1iZXJGb3JtYXRUeXBlIG51bWJlckZv
cm1hdDsJIAoJCgkgCglVSW50OCBhdXRvT2ZmRHVyYXRpb247CQkJCSAKCVNvdW5kTGV2ZWxUeXBl
VjIwIHN5c1NvdW5kTGV2ZWxWMjA7CQkgCglTb3VuZExldmVsVHlwZVYyMCBnYW1lU291bmRMZXZl
bFYyMDsJIAoJU291bmRMZXZlbFR5cGVWMjAgYWxhcm1Tb3VuZExldmVsVjIwOwkgCglCb29sZWFu
IGhpZGVTZWNyZXRSZWNvcmRzOwkJCSAKCQkJCQkJCQkJCQkJIAoJQm9vbGVhbiBkZXZpY2VMb2Nr
ZWQ7CQkJCSAKCQkJCQkJCQkJCQkJIAoJQm9vbGVhbiBsb2NhbFN5bmNSZXF1aXJlc1Bhc3N3b3Jk
OwkgCglCb29sZWFuIHJlbW90ZVN5bmNSZXF1aXJlc1Bhc3N3b3JkOwkgCglVSW50MTYgc3lzUHJl
ZkZsYWdzOwkJCQkJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJIAoJ
U3lzQmF0dGVyeUtpbmQJc3lzQmF0dGVyeUtpbmQ7CSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ
CQkgCglVSW50OCByZXNlcnZlZDE7CglVSW50MzIgbWludXRlc1dlc3RPZkdNVDsJCQkgCglEYXls
aWdodFNhdmluZ3NUeXBlcwlkYXlsaWdodFNhdmluZ3M7CSAKCVVJbnQ4IHJlc2VydmVkMjsKCVVJ
bnQxNiByb25hbWF0aWNDaGFyOwkJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQzMgloYXJkMUNoYXJB
cHBDcmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkgCglVSW50MzIJaGFyZDJDaGFyQXBwQ3JlYXRvcjsJ
CSAKCQkJCQkJCQkJCQkJIAoJVUludDMyCWhhcmQzQ2hhckFwcENyZWF0b3I7CQkgCgkJCQkJCQkJ
CQkJCSAKCVVJbnQzMgloYXJkNENoYXJBcHBDcmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkgCglVSW50
MzIJY2FsY0NoYXJBcHBDcmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkgCglVSW50MzIJaGFyZENyYWRs
ZUNoYXJBcHBDcmVhdG9yOwkgCgkJCQkJCQkJCQkJCSAKCVVJbnQzMglsYXVuY2hlckNoYXJBcHBD
cmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkgCglVSW50MzIJaGFyZENyYWRsZTJDaGFyQXBwQ3JlYXRv
cjsJIAoJCQkJCQkJCQkJCQkgCglBbmltYXRpb25MZXZlbFR5cGUgYW5pbWF0aW9uTGV2ZWw7CSAK
CQoJQm9vbGVhbgltYXNrUHJpdmF0ZVJlY29yZHM7CQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJ
CQkJCQkJIAoJCQkJCQkJCQkJCQkJCgkKCSAKCVVJbnQxNiBzeXNTb3VuZFZvbHVtZTsJCQkJCSAK
CVVJbnQxNiBnYW1lU291bmRWb2x1bWU7CQkJCQkgCglVSW50MTYgYWxhcm1Tb3VuZFZvbHVtZTsJ
CQkJIAoJQm9vbGVhbiBiZWFtUmVjZWl2ZTsJCQkJCQkgCglCb29sZWFuIGNhbGlicmF0ZURpZ2l0
aXplckF0UmVzZXQ7CSAKCVVJbnQxNiBzeXN0ZW1LZXlib2FyZElEOwkJCQkgCglVSW50MzIgZGVm
U2VyaWFsUGx1Z0luOwkJCQkJIAoKCSAKCUJvb2xlYW4gc3RheU9uV2hlblBsdWdnZWRJbjsJCQkg
CglCb29sZWFuIHN0YXlMaXRXaGVuUGx1Z2dlZEluOwkJCSAKCgkgCglVSW50MzIJYW50ZW5uYUNo
YXJBcHBDcmVhdG9yOwkJIAoJCQkJCQkJCQkJCQkJIAoKCSAKCU1lYXN1cmVtZW50U3lzdGVtVHlw
ZSBtZWFzdXJlbWVudFN5c3RlbTsJIAoJVUludDgJCQkJCQlyZXNlcnZlZDM7CQkJCQoJVUludDE2
IGF1dG9PZmZEdXJhdGlvblNlY3M7CQkJCQkgCgkKCSAKCUludDE2IHRpbWVab25lOwkJCQkJCQkg
CglJbnQxNglkYXlsaWdodFNhdmluZ0FkanVzdG1lbnQ7CQkgCglDb3VudHJ5VHlwZSB0aW1lWm9u
ZUNvdW50cnk7CQkJIAoJU2VjdXJpdHlBdXRvTG9ja1R5cGUgIGF1dG9Mb2NrVHlwZTsJCSAKCVVJ
bnQzMgkJCQlhdXRvTG9ja1RpbWU7CQkgCglCb29sZWFuCQkJCWF1dG9Mb2NrVGltZUZsYWc7CSAK
CUxhbmd1YWdlVHlwZQkJbGFuZ3VhZ2U7CQkJIAoKCUF0dG5GbGFnc1R5cGUJCWF0dGVudGlvbkZs
YWdzOwkJIAoJCglVSW50MzIJCQkJZGVmYXVsdEFwcENyZWF0b3I7CSAKCQkJCQkJCQkJCQkgCgl9
IFN5c3RlbVByZWZlcmVuY2VzVHlwZTsKCgoJCnR5cGVkZWYgU3lzdGVtUHJlZmVyZW5jZXNUeXBl
ICpTeXN0ZW1QcmVmZXJlbmNlc1B0cjsKCgogCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNiBrZXlD
b2RlOwkJCQkJCSAKCVVJbnQzMiBjcmVhdG9yOwkJCQkJCSAKfSBCdXR0b25EZWZhdWx0QXBwVHlw
ZTsKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNiBudW1CdXR0b25zOwkJCQkJIAoJQnV0dG9uRGVm
YXVsdEFwcFR5cGUgYnV0dG9uWzFdOwkgCn0gQnV0dG9uRGVmYXVsdExpc3RUeXBlOwoKCiAKIAog
CgojIDQyNiAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9QcmVm
ZXJlbmNlcy5oIgoKCgojIDEwMSAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKCQkKIAogCgkJCiMg
MSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9TZXJpYWxNZ3Iu
aCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgogCiAK
IAoKCgoKCgoKCgoKIAoKCgoKCgoKCQkKCiAKCgoKIAoKCgkKCgoKCgoKCgoKCgoKCgoJCQkJCQkJ
CQkJCQkJCQkJCQkJCSAKCgogCgoKCgkJCQkJCQkJCQkJCQoKCgogCgoKCgoKCgogCiAKIAoKCgoK
CgoKCnR5cGVkZWYgc3RydWN0IERldmljZUluZm9UeXBlIHsKCVVJbnQzMiBzZXJEZXZDcmVhdG9y
OwkJCQkJCQkJIAoJVUludDMyIHNlckRldkZ0ckluZm87CQkJCQkJCQkgCglVSW50MzIgc2VyRGV2
TWF4QmF1ZFJhdGU7CQkJCQkJCSAKCVVJbnQzMiBzZXJEZXZIYW5kc2hha2VCYXVkOwkJCQkJCSAK
CUNoYXIgKnNlckRldlBvcnRJbmZvU3RyOwkJCQkJCQkgCglVSW50OCByZXNlcnZlZFs4XTsJCQkJ
CQkJCQkgCn0gRGV2aWNlSW5mb1R5cGU7Cgp0eXBlZGVmIERldmljZUluZm9UeXBlICpEZXZpY2VJ
bmZvUHRyOwoKCiAKCgoKdHlwZWRlZiB2b2lkICgqV2FrZXVwSGFuZGxlclByb2NQdHIpKFVJbnQz
MiByZWZDb24pOwoKIAoKCgoKCgoKCgoKCnR5cGVkZWYgQm9vbGVhbiAoKkJsb2NraW5nSG9va1By
b2NQdHIpICAoVUludDMyIHVzZXJSZWYpOwoKCiAKCgoKIAoKCnR5cGVkZWYgc3RydWN0IFNybUNh
bGxiYWNrRW50cnlUeXBlIHsKCUJsb2NraW5nSG9va1Byb2NQdHIJZnVuY1A7CQkJCQkgCglVSW50
MzIJCQkJCXVzZXJSZWY7CQkJCQkgCn0gU3JtQ2FsbGJhY2tFbnRyeVR5cGU7CnR5cGVkZWYgU3Jt
Q2FsbGJhY2tFbnRyeVR5cGUqCVNybUNhbGxiYWNrRW50cnlQdHI7CgoKdHlwZWRlZiBlbnVtIFNy
bUN0bEVudW0gewoJc3JtQ3RsRmlyc3RSZXNlcnZlZCA9IDAsCQkgCgkKCXNybUN0bFNldEJhdWRS
YXRlLAkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQoJc3JtQ3RsR2V0QmF1ZFJhdGUsCQkJ
CSAKCQkJCQkJCQkJCQkKCXNybUN0bFNldEZsYWdzLAkJCQkJIAoJCglzcm1DdGxHZXRGbGFncywJ
CQkJCSAKCQoJc3JtQ3RsU2V0Q3RzVGltZW91dCwJCQkJIAoJCglzcm1DdGxHZXRDdHNUaW1lb3V0
LAkJCQkgCgkKCXNybUN0bFN0YXJ0QnJlYWssCQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ
CSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCglzcm1DdGxTdG9wQnJlYWssCQkJCQkgCgkJCQkJ
CQkJCQkJIAoKCXNybUN0bFN0YXJ0TG9jYWxMb29wYmFjaywJCSAKCQkJCQkJCQkJCQkgCgkJCQkJ
CQkJCQkJCglzcm1DdGxTdG9wTG9jYWxMb29wYmFjaywJCSAKCQkJCQkJCQkJCQkgCgoKCXNybUN0
bElyREFFbmFibGUsCQkJCQkgCgkJCQkJCQkJCQkJIAoKCXNybUN0bElyREFEaXNhYmxlLAkJCQkg
CgkJCQkJCQkJCQkJIAoKCXNybUN0bFJ4RW5hYmxlLAkJCQkJIAoJCglzcm1DdGxSeERpc2FibGUs
CQkJCQkgCgoJc3JtQ3RsRW11U2V0QmxvY2tpbmdIb29rLAkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJ
CQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJ
IAoKCXNybUN0bFVzZXJEZWYsCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkJCQkJ
CQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkKCXNybUN0bEdldE9wdGltYWxUcmFuc21p
dFNpemUsCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQoJc3JtQ3RsU2V0RFRSQXNzZXJ0ZWQsCQkJ
IAoJCglzcm1DdGxHZXREVFJBc3NlcnRlZCwJCQkgCgkKCXNybUN0bExBU1QJCQkJCQkJIAoJCn0g
U3JtQ3RsRW51bTsKCgoKIAoKCgoKCgoJCgoKCgoKIAogCiAKCnR5cGVkZWYgZW51bSB7CQkJCQkg
CglzeXNTZXJpYWxJbnN0YWxsID0gMCwKCXN5c1NlcmlhbE9wZW4sCglzeXNTZXJpYWxPcGVuQmtn
bmQsCQoJc3lzU2VyaWFsQ2xvc2UsCglzeXNTZXJpYWxTbGVlcCwKCXN5c1NlcmlhbFdha2UsCglz
eXNTZXJpYWxHZXREZXZpY2VDb3VudCwKCXN5c1NlcmlhbEdldERldmljZUluZm8sCglzeXNTZXJp
YWxHZXRTdGF0dXMsCglzeXNTZXJpYWxDbGVhckVyciwKCXN5c1NlcmlhbENvbnRyb2wsCglzeXNT
ZXJpYWxTZW5kLAoJc3lzU2VyaWFsU2VuZFdhaXQsCglzeXNTZXJpYWxTZW5kQ2hlY2ssCglzeXNT
ZXJpYWxTZW5kRmx1c2gsCglzeXNTZXJpYWxSZWNlaXZlLAoJc3lzU2VyaWFsUmVjZWl2ZVdhaXQs
CglzeXNTZXJpYWxSZWNlaXZlQ2hlY2ssCglzeXNTZXJpYWxSZWNlaXZlRmx1c2gsCglzeXNTZXJp
YWxTZXRSY3ZCdWZmZXIsCglzeXNTZXJpYWxSY3ZXaW5kb3dPcGVuLAoJc3lzU2VyaWFsUmN2V2lu
ZG93Q2xvc2UsCglzeXNTZXJpYWxTZXRXYWtldXBIYW5kbGVyLAoJc3lzU2VyaWFsUHJpbWVXYWtl
dXBIYW5kbGVyLAoJCgltYXhTZXJpYWxTZWxlY3RvciA9IHN5c1NlcmlhbFByaW1lV2FrZXVwSGFu
ZGxlcgkJIAp9IHN5c1NlcmlhbFNlbGVjdG9yOwoJCgojIDM2OSAiLi4vU3JjU2hhcmVkL1BhbG0v
UGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9TZXJpYWxNZ3IuaCIKCgoKIyAxMDUgIi4uL1NyY1No
YXJlZC9QYWxtLmgiIDIKCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D
b3JlL1N5c3RlbS9TZXJpYWxMaW5rTWdyLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
IAogCiAKCgoKCgoKCiAKIAogCgoKCgoKCgogCiAKIAogCiAKIAogCiAKCiAKIAogCiAKIAoKdHlw
ZWRlZglVSW50OAlTbGtQa3RIZWFkZXJDaGVja3N1bTsKCnR5cGVkZWYgc3RydWN0IFNsa1BrdEhl
YWRlclR5cGUgewoJVUludDE2CQkJCQlzaWduYXR1cmUxOwkJCQkgCglVSW50OAkJCQkJCXNpZ25h
dHVyZTI7CQkJCSAKCVVJbnQ4CQkJCQkJZGVzdDsJCQkJCQkgCglVSW50OAkJCQkJCXNyYzsJCQkJ
CQkgCglVSW50OAkJCQkJCXR5cGU7CQkJCQkJIAoJVUludDE2CQkJCQlib2R5U2l6ZTsJCQkJIAoJ
VUludDgJCQkJCQl0cmFuc0lkOwkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCglTbGtQa3RIZWFkZXJD
aGVja3N1bQljaGVja3N1bTsJCQkJIAoJfSBTbGtQa3RIZWFkZXJUeXBlOwoKdHlwZWRlZiBTbGtQ
a3RIZWFkZXJUeXBlKglTbGtQa3RIZWFkZXJQdHI7CgoKCgoKCgoKIAogCiAKdHlwZWRlZiBzdHJ1
Y3QgU2xrUGt0Rm9vdGVyVHlwZSB7CglVSW50MTYJCWNyYzE2OwkJCQkgCgl9IFNsa1BrdEZvb3Rl
clR5cGU7Cgp0eXBlZGVmIFNsa1BrdEZvb3RlclR5cGUqCVNsa1BrdEZvb3RlclB0cjsKCgogCiAK
IAogCiAKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgU2xrV3JpdGVEYXRhVHlwZSB7CglVSW50MTYJc2l6
ZTsJCQkJCSAKCXZvaWQqCQlkYXRhUDsJCQkJIAoJfSBTbGtXcml0ZURhdGFUeXBlOwp0eXBlZGVm
IFNsa1dyaXRlRGF0YVR5cGUqCVNsa1dyaXRlRGF0YVB0cjsKCgoKCiAKIAogCiAKIAoKIAogCiAK
CgoKCiMgMTMyICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1Nl
cmlhbExpbmtNZ3IuaCIKCgoKCgoKIyAxNDggIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0lu
Y3MvQ29yZS9TeXN0ZW0vU2VyaWFsTGlua01nci5oIgoKCgoKCgoKCgoKCgoKCgoJCgoKCQoKCgkK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCgoKCgoKIyAyMTAgIi4uL1NyY1NoYXJlZC9QYWxtL1Bs
YXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU2VyaWFsTGlua01nci5oIgoKCgoKCgojIDIzMCAiLi4v
U3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9TZXJpYWxMaW5rTWdyLmgi
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCQkJCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCQkgCgoKCgogCgoK
CnR5cGVkZWYJdm9pZCAoKlNsa1NvY2tldExpc3RlbmVyUHJvY1B0cikKCQkJKFNsa1BrdEhlYWRl
clB0ciBoZWFkZXJQLCB2b2lkICpib2R5UCk7CgkJCQp0eXBlZGVmIHN0cnVjdCBTbGtTb2NrZXRM
aXN0ZW5UeXBlIHsKCVNsa1NvY2tldExpc3RlbmVyUHJvY1B0ciAJbGlzdGVuZXJQOwoJU2xrUGt0
SGVhZGVyUHRyCQkJCWhlYWRlckJ1ZmZlclA7CQkgCgl2b2lkKgkJCQkJCQkJYm9keUJ1ZmZlclA7
CQkgCglVSW50MzIJCQkJCQkJYm9keUJ1ZmZlclNpemU7Cgl9IFNsa1NvY2tldExpc3RlblR5cGU7
CnR5cGVkZWYgU2xrU29ja2V0TGlzdGVuVHlwZSoJU2xrU29ja2V0TGlzdGVuUHRyOwoKCgogCgoK
IyA0MzQgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9TeXN0ZW0vU2VyaWFs
TGlua01nci5oIgoKCQoJCgojIDEwNiAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCgkJCiMg
MSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9Tb3VuZE1nci5o
IiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKCgogCgogCgoKCgoKIAoKCgoKIAog
CiAKdHlwZWRlZiBlbnVtIFNuZENtZElEVHlwZSB7CgkJCQkJCQkJCQoJc25kQ21kRnJlcUR1cmF0
aW9uQW1wID0gMSwJCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCXNuZENtZE5vdGVPbiwJCQkJ
CQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCSAKCQoJc25kQ21kRnJxT24sCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkKCXNuZENtZFF1aWV0
CQkJCQkJCSAKCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCSAKCgl9IFNuZENt
ZElEVHlwZTsKCgoJCgogCiAKIAoKdHlwZWRlZiBzdHJ1Y3QgU25kQ29tbWFuZFR5cGUgewogClVJ
bnQ4CWNtZDsJCQkJCQkgClVJbnQ4IAkJCXJlc2VydmVkOwpJbnQzMgkJCQlwYXJhbTE7CQkJCQkg
ClVJbnQxNgkJCXBhcmFtMjsJCQkJCSAKVUludDE2CQkJcGFyYW0zOwkJCQkJIAp9IFNuZENvbW1h
bmRUeXBlOwoKdHlwZWRlZiBTbmRDb21tYW5kVHlwZSoJCVNuZENvbW1hbmRQdHI7CgoKIAogCiAK
CnR5cGVkZWYgZW51bSBTbmRTeXNCZWVwVHlwZSB7CglzbmRJbmZvID0gMSwKCXNuZFdhcm5pbmcs
CglzbmRFcnJvciwKCXNuZFN0YXJ0VXAsCglzbmRBbGFybSwKCXNuZENvbmZpcm1hdGlvbiwKCXNu
ZENsaWNrCgl9IFNuZFN5c0JlZXBUeXBlOwoKCiAKCgoKCiAKIAogCiAKIAogCiAKCnR5cGVkZWYg
c3RydWN0IFNuZE1pZGlSZWNIZHJUeXBlIHsKCVVJbnQzMgkJc2lnbmF0dXJlOwkJCQkgCglVSW50
OAkJCWJEYXRhT2Zmc2V0OwkJCSAKCQkJCQkJCQkJCQkJIAoJVUludDgJCQlyZXNlcnZlZDsJCQkJ
IAoJfSBTbmRNaWRpUmVjSGRyVHlwZTsKCnR5cGVkZWYgc3RydWN0IFNuZE1pZGlSZWNUeXBlIHsK
CVNuZE1pZGlSZWNIZHJUeXBlCQloZHI7CQkJIAoJCQkJCQkJCQkJCQkgCglDaGFyCQkJbmFtZVsy
XTsJCQkJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCX0gU25k
TWlkaVJlY1R5cGU7CgoKIAp0eXBlZGVmIHN0cnVjdCBTbmRNaWRpTGlzdEl0ZW1UeXBlCgl7CglD
aGFyCQkJbmFtZVszMiBdOwkJCSAKCVVJbnQzMgkJdW5pcXVlUmVjSUQ7CglMb2NhbElECQlkYklE
OwoJVUludDE2IAkJY2FyZE5vOwoJfSBTbmRNaWRpTGlzdEl0ZW1UeXBlOwoKCiAKdHlwZWRlZiBl
bnVtIFNuZFNtZkNtZEVudW0gewoJc25kU21mQ21kUGxheSA9IDEsCQkJCQkgCglzbmRTbWZDbWRE
dXJhdGlvbgkJCQkJCSAKCX0gU25kU21mQ21kRW51bTsKCnR5cGVkZWYgdm9pZCBTbmRDb21wbEZ1
bmNUeXBlKHZvaWQgKmNoYW5QLCBVSW50MzIgZHdVc2VyRGF0YSk7CnR5cGVkZWYgU25kQ29tcGxG
dW5jVHlwZSAqU25kQ29tcGxGdW5jUHRyOwoKCiAKdHlwZWRlZiBCb29sZWFuIFNuZEJsb2NraW5n
RnVuY1R5cGUodm9pZCAqY2hhblAsIFVJbnQzMiBkd1VzZXJEYXRhLCBJbnQzMiBzeXNUaWNrc0F2
YWlsYWJsZSk7CnR5cGVkZWYgU25kQmxvY2tpbmdGdW5jVHlwZSAqU25kQmxvY2tpbmdGdW5jUHRy
OwoKdHlwZWRlZiBzdHJ1Y3QgU25kQ2FsbGJhY2tJbmZvVHlwZSB7CglNZW1QdHIJCWZ1bmNQOwkJ
CSAKCVVJbnQzMglkd1VzZXJEYXRhOwkJIAoJfSBTbmRDYWxsYmFja0luZm9UeXBlOwoKCnR5cGVk
ZWYgc3RydWN0IFNuZFNtZkNhbGxiYWNrc1R5cGUgewoJU25kQ2FsbGJhY2tJbmZvVHlwZQljb21w
bGV0aW9uOwkJIAoJU25kQ2FsbGJhY2tJbmZvVHlwZQlibG9ja2luZzsJCSAKCVNuZENhbGxiYWNr
SW5mb1R5cGUJcmVzZXJ2ZWQ7CQkgCgl9IFNuZFNtZkNhbGxiYWNrc1R5cGU7CgoKCgp0eXBlZGVm
IHN0cnVjdCBTbmRTbWZPcHRpb25zVHlwZSB7CgkgCgkgCglVSW50MzIJZHdTdGFydE1pbGxpU2Vj
OwkJCQkgCglVSW50MzIJZHdFbmRNaWxsaVNlYzsJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJ
CQkJCQkJCSAKCQoJIAoJVUludDE2CWFtcGxpdHVkZTsJCQkJCQkgCgkJCQkJCQkJCQkJCQkgCgkJ
CQkJCQkJCQkJCQkgCgkKCUJvb2xlYW4JaW50ZXJydXB0aWJsZTsJCQkJCSAKCQkJCQkJCQkJCQkJ
CSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQoJVUludDgJCXJl
c2VydmVkMTsKCVVJbnQzMglyZXNlcnZlZDsJCQkJCQkgCgl9IFNuZFNtZk9wdGlvbnNUeXBlOwoK
CnR5cGVkZWYgc3RydWN0IFNuZFNtZkNoYW5SYW5nZVR5cGUgewoJVUludDgJYkZpcnN0Q2hhbjsJ
CQkJCQkJIAoJVUludDgJYkxhc3RDaGFuOwkJCQkJCQkgCgl9IFNuZFNtZkNoYW5SYW5nZVR5cGU7
CgoKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgojIDMwOCAiLi4vU3JjU2hhcmVkL1BhbG0vUGxh
dGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9Tb3VuZE1nci5oIgoKCgoKIAoKCgoKCiMgMTA5ICIuLi9T
cmNTaGFyZWQvUGFsbS5oIiAyCgogCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0v
SW5jcy9Db3JlL1N5c3RlbS9TeXNFdnRNZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCiAKCgp0eXBlZGVmIGVudW0KewoJU2V0QXRMZWFzdCwJCSAKCVNldEV4YWN0bHksCQkg
CglTZXRBdE1vc3QsCQkgCglTZXREZWZhdWx0LAkJIAoJUmVzZXRUaW1lcgkJIAoJCn0gRXZ0U2V0
QXV0b09mZkNtZDsKCgogCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgUGVuQnRuSW5mb1R5cGUgewoJUmVj
dGFuZ2xlVHlwZQlib3VuZHNSOwkJCQkJCSAKCVdDaGFyCQkJCWFzY2lpQ29kZTsJCQkJCSAKCVVJ
bnQxNgkJCWtleUNvZGU7CQkJCQkJIAoJVUludDE2CQkJbW9kaWZpZXJzOwkJCQkJIAoJfSBQZW5C
dG5JbmZvVHlwZTsKdHlwZWRlZiBQZW5CdG5JbmZvVHlwZSogUGVuQnRuSW5mb1B0cjsKCQp0eXBl
ZGVmIHN0cnVjdCBQZW5CdG5MaXN0VHlwZSB7CglVSW50MTYJCQludW1CdXR0b25zOwkJCQkJIAoJ
UGVuQnRuSW5mb1R5cGUJYnV0dG9uc1sxXTsJCQkJCSAKCX0gUGVuQnRuTGlzdFR5cGU7CgoKIAoK
CgoKIAogCiAKCgoKIAoKCgogCiAKIAp0eXBlZGVmIHN0cnVjdCBTaWxrc2NyZWVuQXJlYVR5cGUg
ewoJUmVjdGFuZ2xlVHlwZQkJCWJvdW5kczsKCVVJbnQzMgkJCQkJYXJlYVR5cGU7CSAKCVVJbnQx
NgkJCQkJaW5kZXg7Cgl9IFNpbGtzY3JlZW5BcmVhVHlwZTsKCQoKIAoKCiMgMjQxICIuLi9TcmNT
aGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVtL1N5c0V2dE1nci5oIgoKCgogCgoK
CgoKCgoKIyAxMTEgIi4uL1NyY1NoYXJlZC9QYWxtLmgiIDIKCgkJCgkJCgkJCiMgMSAiLi4vU3Jj
U2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9TeXN0ZW1Qa3QuaCIgMQogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCgogCiAKCgogCiAKIAoKCgogCgoKCgogCiAKIAoK
IAoKCgoJCgogCnR5cGVkZWYgc3RydWN0IFN5c1BrdEJvZHlUeXBlIHsKCVVJbnQ4CWNvbW1hbmQ7
CVVJbnQ4CV9maWxsZXIgOwoJVUludDgJCQkJZGF0YVsoMjU2ICsxNikgLTJdOwoJfSBTeXNQa3RC
b2R5VHlwZTsKdHlwZWRlZiBTeXNQa3RCb2R5VHlwZSoJU3lzUGt0Qm9keVB0cjsKCgoKIAogCiAK
IAoKCgoKIAogCiAKCiAKIAogCgoKCiAKIAogCgoKCQkJCQp0eXBlZGVmIHN0cnVjdCBTeXNQa3RS
ZWFkTWVtQ21kVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVyIDsJCQkJCQkJCSAK
CXZvaWQqCQkJCQlhZGRyZXNzOwkJCQkJCSAKCVVJbnQxNgkJCQkJbnVtQnl0ZXM7CQkJCQkgCgl9
IFN5c1BrdFJlYWRNZW1DbWRUeXBlOwp0eXBlZGVmIFN5c1BrdFJlYWRNZW1DbWRUeXBlKglTeXNQ
a3RSZWFkTWVtQ21kUHRyOwoKdHlwZWRlZiBzdHJ1Y3QgU3lzUGt0UmVhZE1lbVJzcFR5cGUgewoJ
VUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgkgCgl9IFN5c1BrdFJlYWRN
ZW1Sc3BUeXBlOwp0eXBlZGVmIFN5c1BrdFJlYWRNZW1Sc3BUeXBlKglTeXNQa3RSZWFkTWVtUnNw
UHRyOwoKCiAKIAogCgoKCnR5cGVkZWYgc3RydWN0IFN5c1BrdFdyaXRlTWVtQ21kVHlwZSB7CglV
SW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVyIDsJCQkJCQkJCSAKCXZvaWQqCQkJCQlhZGRyZXNz
OwkJCQkJCSAKCVVJbnQxNgkJCQludW1CeXRlczsJCQkJCSAKCSAKCX0gU3lzUGt0V3JpdGVNZW1D
bWRUeXBlOwp0eXBlZGVmIFN5c1BrdFdyaXRlTWVtQ21kVHlwZSoJU3lzUGt0V3JpdGVNZW1DbWRQ
dHI7Cgp0eXBlZGVmIHN0cnVjdCBTeXNQa3RXcml0ZU1lbVJzcFR5cGUgewoJVUludDgJY29tbWFu
ZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgl9IFN5c1BrdFdyaXRlTWVtUnNwVHlwZTsKdHlw
ZWRlZiBTeXNQa3RXcml0ZU1lbVJzcFR5cGUqCVN5c1BrdFdyaXRlTWVtUnNwUHRyOwoKCiAKIAog
CgogCgogCiAKIAoKCgogCiAKIAoKCgoKIAogCiAKCgoKIAogCiAKCiAKCgogCiAKIAoKCgp0eXBl
ZGVmIHN0cnVjdCBTeXNQa3RSUENQYXJhbUluZm8gewoJVUludDggYnlSZWY7CQkJCQkJCSAKCVVJ
bnQ4CXNpemU7CQkJCQkJCQkgCglVSW50MTYJZGF0YVsxXTsJCQkJCQkgCgl9IFN5c1BrdFJQQ1Bh
cmFtVHlwZTsKCQp0eXBlZGVmIHN0cnVjdCBTeXNQa3RSUENUeXBlIHsKCVVJbnQ4CWNvbW1hbmQ7
CVVJbnQ4CV9maWxsZXIgOwkJCQkJIAoJVUludDE2CXRyYXBXb3JkOwkJCQkJIAoJVUludDMyCXJl
c3VsdEQwOwkJCQkJIAoJVUludDMyCXJlc3VsdEEwOwkJCQkJIAoJVUludDE2CW51bVBhcmFtczsJ
CQkJCSAKCSAKCVN5c1BrdFJQQ1BhcmFtVHlwZQlwYXJhbVsxXTsKCX0gU3lzUGt0UlBDVHlwZTsK
CgogCiAKIAoKCgoKCgogCiAKIAogCiAKCgp0eXBlZGVmIHN0cnVjdCBTeXNQa3RSZW1vdGVVSVVw
ZENtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgogICAK
ICAJVUludDE2CXJvd0J5dGVzOwkJCQkJCSAKCVVJbnQxNglmcm9tWTsJCQkJCQkJIAoJVUludDE2
CWZyb21YOwkJCQkJCQkgCglVSW50MTYJdG9ZOwkJCQkJCQkJIAoJVUludDE2CXRvWDsJCQkJCQkJ
CSAKCVVJbnQxNgloZWlnaHQ7CQkJCQkJCSAKCVVJbnQxNgl3aWR0aDsJCQkJCQkJIAoJCiAgIAog
IAlVSW50MTYJcGl4ZWxzOwkJCQkJCQkgCgkKCX0gU3lzUGt0UmVtb3RlVUlVcGRDbWRUeXBlOwoK
CgoKdHlwZWRlZiBzdHJ1Y3QgU3lzUGt0UmVtb3RlRXZ0Q21kVHlwZSB7CglVSW50OAljb21tYW5k
OwlVSW50OAlfZmlsbGVyIDsJCQkJCQkgCgogICAKICAgCiAgIEJvb2xlYW4gCXBlbkRvd247CQkJ
CQkJCSAKCVVJbnQ4IAlwYWRkaW5nMTsKICAJSW50MTYJCXBlblg7CQkJCQkJCQkgCiAgCUludDE2
CQlwZW5ZOwkJCQkJCQkJIAogIAkKICAJQm9vbGVhbglrZXlQcmVzczsJCQkJCQkgCglVSW50OCAJ
cGFkZGluZzI7CiAgCVVJbnQxNglrZXlNb2RpZmllcnM7CQkJCQkgCiAgCVdDaGFyCQlrZXlBc2Np
aTsJCQkJCQkgCiAgCVVJbnQxNglrZXlDb2RlOwkJCQkJCQkgCiAgCQoJfSBTeXNQa3RSZW1vdGVF
dnRDbWRUeXBlOwoKCiAKIAogCgoKCgogCiAKIAogCiAKIAoKCgoKIAogCiAKCgoKdHlwZWRlZiBz
dHJ1Y3QgU3lzUGt0Q29tbUNtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxlciA7
CQkJCQkJCQkgCglCb29sZWFuCQkJCQkJc2V0OwkJCQkJIAoJVUludDggCQkJCQkJcGFkZGluZzsK
CVVJbnQzMgkJCQkJCWJhdWRSYXRlOwkJCSAKCVVJbnQzMgkJCQkJCWZsYWdzOwkJCQkgCgl9IFN5
c1BrdENvbW1DbWRUeXBlOwp0eXBlZGVmIFN5c1BrdENvbW1DbWRUeXBlICpTeXNQa3RDb21tQ21k
UHRyOwoKdHlwZWRlZiBzdHJ1Y3QgU3lzUGt0Q29tbVJzcFR5cGUgewoJVUludDgJY29tbWFuZDsJ
VUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCglVSW50MzIJCQkJCQliYXVkUmF0ZTsJCQkgCglVSW50
MzIJCQkJCQlmbGFnczsJCQkJIAoJfSBTeXNQa3RDb21tUnNwVHlwZTsKdHlwZWRlZiBTeXNQa3RD
b21tUnNwVHlwZSAqU3lzUGt0Q29tbVJzcFB0cjsKCgogCiAKIAoKCgoKCgogCiAKIAogCiAKCgp0
eXBlZGVmIHN0cnVjdCBTeXNQa3RHcmVtbGluc0NtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUlu
dDgJX2ZpbGxlciA7CQkJCQkJCQkgCgogICAKICBVSW50MTYJYWN0aW9uOwogIFVJbnQ4CWRhdGFb
MzJdOwoJCgl9IFN5c1BrdEdyZW1saW5zQ21kVHlwZTsKCQogCgoKCgogCiAKIAoKCgp0eXBlZGVm
IHN0cnVjdCBTeXNQa3RGaW5kQ21kVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVy
IDsJCQkJCQkJCSAKCglVSW50MzIJZmlyc3RBZGRyOwkJCQkJCQkJIAoJVUludDMyCWxhc3RBZGRy
OwkJCQkJCQkJIAoJVUludDE2CW51bUJ5dGVzOwkJCQkJCQkJIAoJQm9vbGVhbgljYXNlSW5zZW5z
aXRpdmU7CQkJCQkJIAoJVUludDggCXBhZGRpbmc7Cgl9IFN5c1BrdEZpbmRDbWRUeXBlOwp0eXBl
ZGVmIFN5c1BrdEZpbmRDbWRUeXBlKgkJCVN5c1BrdEZpbmRDbWRQdHI7Cgp0eXBlZGVmIHN0cnVj
dCBTeXNQa3RGaW5kUnNwVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVyIDsJCQkJ
CQkJCSAKCiAgVUludDMyCQlhZGRyOwkJCQkJCQkJCQkgCiAgQm9vbGVhbglmb3VuZDsJCQkJCQkJ
CQkgCiAgVUludDggCQlwYWRkaW5nOwoJCgl9IFN5c1BrdEZpbmRSc3BUeXBlOwp0eXBlZGVmIFN5
c1BrdEZpbmRSc3BUeXBlKgkJCVN5c1BrdEZpbmRSc3BQdHI7CgoKIAogCiAKIAogCiAKCgoKCgoK
IAogCiAKIAoKCgp0eXBlZGVmIHN0cnVjdCBTeXNQa3RDaGVja3N1bVR5cGUgewoJVUludDgJY29t
bWFuZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgoJVUludDMyCWZpcnN0QWRkcjsJCQkJCQkJ
CSAKCVVJbnQxNgludW1CeXRlczsJCQkJCQkJCSAKCVVJbnQxNglzZWVkOwkJCQkJCQkJCQkgCglV
SW50MTYJY2hlY2tzdW07CQkJCQkJCQkgCgl9IFN5c1BrdENoZWNrc3VtVHlwZTsKdHlwZWRlZiBT
eXNQa3RDaGVja3N1bVR5cGUqCVN5c1BrdENoZWNrc3VtUHRyOwoKCiAKIAogCiAKIAoKCgoKIAog
CiAKCgoKIAogCiAKIAp0eXBlZGVmIHN0cnVjdCBTeXNQa3RSZW1vdGVNc2dDbWRUeXBlIHsKCVVJ
bnQ4CWNvbW1hbmQ7CVVJbnQ4CV9maWxsZXIgOwkJCQkJCQkJIAoJIAoJfSBTeXNQa3RSZW1vdGVN
c2dDbWRUeXBlOwp0eXBlZGVmIFN5c1BrdFJlbW90ZU1zZ0NtZFR5cGUgKlN5c1BrdFJlbW90ZU1z
Z0NtZFB0cjsKCgoKCgogCgoKIyA0MjYgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3Mv
Q29yZS9TeXN0ZW0vU3lzdGVtUGt0LmgiCgoKCgoKIyAxMTQgIi4uL1NyY1NoYXJlZC9QYWxtLmgi
IDIKCiAKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvU3lzdGVt
L1RleHRNZ3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgogCiAKdHlwZWRlZiBVSW50OCBDaGFyRW5jb2RpbmdUeXBlOwoK
IAogCiAKdHlwZWRlZiBVSW50MTYgVHJhbnNsaXRPcFR5cGU7CgogCgoKCgoKCgogCiAKCgoKCQkJ
CQkJCQkJCSAKCiAKIAoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQ4CQlpb1NyY1N0YXRlWzMyIF07
CglVSW50OAkJaW9Ec3RTdGF0ZVszMiBdOwp9IFR4dENvbnZlcnRTdGF0ZVR5cGU7CgogCgoKCgoK
IAogCiAKCgoKCgogCiAKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAogCiAKIAogCgoKIAoKCiAKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKIAogCgoKCiAKIAogCiAKCgoKCgoKIAoKCgojIDQwOSAi
Li4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9UZXh0TWdyLmgiCgoK
CiMgMTE2ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgogCiAKCQkKCgkgCgoJCQoKIAogCiAKCQkK
IyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvQ29udHJvbC5oIiAx
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CglVSW50OCB1c2Fi
bGUJCQkJOjE7CSAKCVVJbnQ4IGVuYWJsZWQJCQkJOjE7CSAKCVVJbnQ4IHZpc2libGUJCQkJOjE7
CSAKCVVJbnQ4IG9uCQkJCQkJOjE7CSAKCVVJbnQ4IGxlZnRBbmNob3IJCQk6MTsJIAoJICAgICAg
ICAgICAgICAgICAgICAgICAgCQkgCiAgIFVJbnQ4IGZyYW1lCQkJCQk6MzsKCVVJbnQ4IGRyYXdu
QXNTZWxlY3RlZAk6MTsJIAoJCQkJCQkJCQkJCSAKCVVJbnQ4IGdyYXBoaWNhbAkJCToxOwkgCglV
SW50OCB2ZXJ0aWNhbAkJCQk6MTsJIAoJVUludDggcmVzZXJ2ZWQJCQkJOjU7Cn0gQ29udHJvbEF0
dHJUeXBlOwoKCmVudW0gY29udHJvbFN0eWxlcyB7YnV0dG9uQ3RsLCBwdXNoQnV0dG9uQ3RsLCBj
aGVja2JveEN0bCwgcG9wdXBUcmlnZ2VyQ3RsLAoJCQkJCQkgIHNlbGVjdG9yVHJpZ2dlckN0bCwg
cmVwZWF0aW5nQnV0dG9uQ3RsLCBzbGlkZXJDdGwsCgkJCQkJCSAgZmVlZGJhY2tTbGlkZXJDdGwg
fTsKdHlwZWRlZiBlbnVtIGNvbnRyb2xTdHlsZXMgQ29udHJvbFN0eWxlVHlwZTsKCmVudW0gYnV0
dG9uRnJhbWVzIHtub0J1dHRvbkZyYW1lLCBzdGFuZGFyZEJ1dHRvbkZyYW1lLCBib2xkQnV0dG9u
RnJhbWUsCgkJCQkJCSByZWN0YW5nbGVCdXR0b25GcmFtZX07CnR5cGVkZWYgZW51bSBidXR0b25G
cmFtZXMgQnV0dG9uRnJhbWVUeXBlOwoKCnR5cGVkZWYgc3RydWN0IENvbnRyb2xUeXBlIHsKCVVJ
bnQxNgkJCQkJaWQ7CglSZWN0YW5nbGVUeXBlCQkJYm91bmRzOwoJQ2hhciAqCQkJCSAgIHRleHQ7
CQoJQ29udHJvbEF0dHJUeXBlCQlhdHRyOwoJQ29udHJvbFN0eWxlVHlwZQkJc3R5bGU7CglGb250
SUQJCQkJCWZvbnQ7CglVSW50OAkJCQkJCWdyb3VwOwoJVUludDggCQkJCQlyZXNlcnZlZDsKfSBD
b250cm9sVHlwZTsKCnR5cGVkZWYgQ29udHJvbFR5cGUgKiBQYWxtX0NvbnRyb2xQdHIgOwkJCQkg
CgoKIAogCgp0eXBlZGVmIHN0cnVjdCBHcmFwaGljQ29udHJvbFR5cGUgewoJVUludDE2CQkJCQlp
ZDsKCVJlY3RhbmdsZVR5cGUJCQlib3VuZHM7CglEbVJlc0lECQkJCQliaXRtYXBJRDsJCQkgCglE
bVJlc0lECQkJCQlzZWxlY3RlZEJpdG1hcElEOwkgCglDb250cm9sQXR0clR5cGUJCWF0dHI7CglD
b250cm9sU3R5bGVUeXBlCQlzdHlsZTsKCUZvbnRJRAkJCQkJdW51c2VkOwoJVUludDgJCQkJCQln
cm91cDsKCVVJbnQ4IAkJCQkJcmVzZXJ2ZWQ7Cn0gR3JhcGhpY0NvbnRyb2xUeXBlOwoKCiAKIAoK
dHlwZWRlZiBzdHJ1Y3QgU2xpZGVyQ29udHJvbFR5cGUgewoJVUludDE2CQkJCQlpZDsKCVJlY3Rh
bmdsZVR5cGUJCQlib3VuZHM7CglEbVJlc0lECQkJCQl0aHVtYklEOwkJCSAKCURtUmVzSUQJCQkJ
CWJhY2tncm91bmRJRDsJIAoJQ29udHJvbEF0dHJUeXBlCQlhdHRyOwkJCQkgCglDb250cm9sU3R5
bGVUeXBlCQlzdHlsZTsJCQkgCglVSW50OAkJCQkJCXJlc2VydmVkOwkJCglJbnQxNgkJCQkJCW1p
blZhbHVlOwoJSW50MTYJCQkJCQltYXhWYWx1ZTsKCUludDE2CQkJCQkJcGFnZVNpemU7CglJbnQx
NgkJCQkJCXZhbHVlOwoJTWVtUHRyCQkJCQlhY3RpdmVTbGlkZXJQOwp9IFNsaWRlckNvbnRyb2xU
eXBlOwoKCiAKIAogCgoKZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIHZvaWQgQ3RsRHJhd0NvbnRyb2wg
KENvbnRyb2xUeXBlICpjb250cm9sUCkKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgQ3RsRXJhc2VD
b250cm9sIChDb250cm9sVHlwZSAqY29udHJvbFApCgkJCQkJCQkgIDsKCmV4dGVybiB2b2lkIEN0
bEhpZGVDb250cm9sIChDb250cm9sVHlwZSAqY29udHJvbFApCgkJCQkJCQkgIDsKCmV4dGVybiB2
b2lkIEN0bFNob3dDb250cm9sIChDb250cm9sVHlwZSAqY29udHJvbFApCgkJCQkJCQkgIDsKCmV4
dGVybiBCb29sZWFuIEN0bEVuYWJsZWQgKGNvbnN0IENvbnRyb2xUeXBlICpjb250cm9sUCkKCQkJ
CQkJCSAgOwoKZXh0ZXJuIHZvaWQgQ3RsU2V0RW5hYmxlZCAoQ29udHJvbFR5cGUgKmNvbnRyb2xQ
LCBCb29sZWFuIHVzYWJsZSkKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgQ3RsU2V0VXNhYmxlIChD
b250cm9sVHlwZSAqY29udHJvbFAsIEJvb2xlYW4gdXNhYmxlKQoJCQkJCQkJICA7CgpleHRlcm4g
SW50MTYgQ3RsR2V0VmFsdWUgKGNvbnN0IENvbnRyb2xUeXBlICpjb250cm9sUCkKCQkJCQkJCSAg
OwoKZXh0ZXJuIHZvaWQgQ3RsU2V0VmFsdWUgKENvbnRyb2xUeXBlICpjb250cm9sUCwgSW50MTYg
bmV3VmFsdWUpCgkJCQkJCQkgIDsKCmV4dGVybiBjb25zdCBDaGFyICpDdGxHZXRMYWJlbCAoY29u
c3QgQ29udHJvbFR5cGUgKmNvbnRyb2xQKQoJCQkJCQkJICA7CgpleHRlcm4gdm9pZCBDdGxTZXRM
YWJlbCAoQ29udHJvbFR5cGUgKmNvbnRyb2xQLCBjb25zdCBDaGFyICpuZXdMYWJlbCkKCQkJCQkJ
CSAgOwoKZXh0ZXJuIHZvaWQgQ3RsU2V0R3JhcGhpY3MgKENvbnRyb2xUeXBlICpjdGxQLAoJRG1S
ZXNJRCBuZXdCaXRtYXBJRCwgRG1SZXNJRCBuZXdTZWxlY3RlZEJpdG1hcElEKQoJCQkJCQkJICA7
CgpleHRlcm4gdm9pZCBDdGxTZXRTbGlkZXJWYWx1ZXMoQ29udHJvbFR5cGUgKmN0bFAsIGNvbnN0
IFVJbnQxNiAqbWluVmFsdWVQLCBjb25zdCBVSW50MTYgKm1heFZhbHVlUCwKCQkJCQljb25zdCBV
SW50MTYgKnBhZ2VTaXplUCwgY29uc3QgVUludDE2ICp2YWx1ZVApCgkJCQkJCQkgIDsKCmV4dGVy
biB2b2lkIEN0bEdldFNsaWRlclZhbHVlcyhjb25zdCBDb250cm9sVHlwZSAqY3RsUCwgVUludDE2
ICptaW5WYWx1ZVAsIFVJbnQxNiAqbWF4VmFsdWVQLAoJCQkJCVVJbnQxNiAqcGFnZVNpemVQLCBV
SW50MTYgKnZhbHVlUCkKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgQ3RsSGl0Q29udHJvbCAoY29u
c3QgQ29udHJvbFR5cGUgKmNvbnRyb2xQKQoJCQkJCQkJICA7CgpleHRlcm4gQm9vbGVhbiBDdGxI
YW5kbGVFdmVudCAoQ29udHJvbFR5cGUgKmNvbnRyb2xQLCBFdmVudFR5cGUgKnBFdmVudCkKCQkJ
CQkJCSAgOwoKZXh0ZXJuIEJvb2xlYW4gQ3RsVmFsaWRhdGVQb2ludGVyIChjb25zdCBDb250cm9s
VHlwZSAqY29udHJvbFApCgkJCQkJCQkgIDsKCmV4dGVybiBDb250cm9sVHlwZSAqQ3RsTmV3Q29u
dHJvbCAodm9pZCAqKmZvcm1QUCwgVUludDE2IElELCAKIAlDb250cm9sU3R5bGVUeXBlIHN0eWxl
LCBjb25zdCBDaGFyICp0ZXh0UCwgCglDb29yZCB4LCBDb29yZCB5LCBDb29yZCB3aWR0aCwgQ29v
cmQgaGVpZ2h0LCAKCUZvbnRJRCBmb250LCBVSW50OCBncm91cCwgQm9vbGVhbiBsZWZ0QW5jaG9y
KQoJCQkJCQkJICA7CgpleHRlcm4gR3JhcGhpY0NvbnRyb2xUeXBlICpDdGxOZXdHcmFwaGljQ29u
dHJvbCAodm9pZCAqKmZvcm1QUCwgVUludDE2IElELCAKICAgQ29udHJvbFN0eWxlVHlwZSBzdHls
ZSwgRG1SZXNJRCBiaXRtYXBJRCwgRG1SZXNJRCBzZWxlY3RlZEJpdG1hcElELCAKICAgQ29vcmQg
eCwgQ29vcmQgeSwgQ29vcmQgd2lkdGgsIENvb3JkIGhlaWdodCwgCiAgIFVJbnQ4IGdyb3VwLCBC
b29sZWFuIGxlZnRBbmNob3IpCgkJCQkJCQkgIDsKCmV4dGVybiBTbGlkZXJDb250cm9sVHlwZSAq
Q3RsTmV3U2xpZGVyQ29udHJvbCAodm9pZCAqKmZvcm1QUCwgVUludDE2IElELCAKICAgQ29udHJv
bFN0eWxlVHlwZSBzdHlsZSwgRG1SZXNJRCB0aHVtYklELCBEbVJlc0lEIGJhY2tncm91bmRJRCwg
CiAgIENvb3JkIHgsIENvb3JkIHksIENvb3JkIHdpZHRoLCBDb29yZCBoZWlnaHQsIFVJbnQxNiBt
aW5WYWx1ZSwgVUludDE2IG1heFZhbHVlLAogICBVSW50MTYgcGFnZVNpemUsIFVJbnQxNiB2YWx1
ZSkKCQkJCQkJCSAgOwoKCn0KCgoKCiMgMTI4ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgogCgkJ
CgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0ZhdGFsQWxl
cnQuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIyA0MSAiLi4vU3JjU2hhcmVkL1Bh
bG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0ZhdGFsQWxlcnQuaCIKCgoKIyAxMzEgIi4uL1NyY1No
YXJlZC9QYWxtLmgiIDIKCgkJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D
b3JlL1VJL0ZpZWxkLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCmVudW0g
anVzdGlmaWNhdGlvbnMge2xlZnRBbGlnbiwgY2VudGVyQWxpZ24sIHJpZ2h0QWxpZ259Owp0eXBl
ZGVmIGVudW0ganVzdGlmaWNhdGlvbnMgSnVzdGlmaWNhdGlvblR5cGU7CgoKCgp0eXBlZGVmIGVu
dW0geyB1bmRvTm9uZSwgdW5kb1R5cGluZywgdW5kb0JhY2tzcGFjZSwgdW5kb0RlbGV0ZSwKCQkJ
CQl1bmRvUGFzdGUsIHVuZG9DdXQsIHVuZG9JbnB1dCB9IFVuZG9Nb2RlOwoKdHlwZWRlZiBzdHJ1
Y3QgewoJVW5kb01vZGUJCW1vZGU7CglVSW50OCAJCXJlc2VydmVkOwoJVUludDE2CQlzdGFydDsK
CVVJbnQxNgkJZW5kOwoJVUludDE2CQlidWZmZXJMZW47CglDaGFyIAkJCSpidWZmZXI7Cgl9IEZp
ZWxkVW5kb1R5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2IHVzYWJsZQkJCToxOwkgCglV
SW50MTYgdmlzaWJsZQkJCToxOwkgCglVSW50MTYgZWRpdGFibGUJCToxOwkgCglVSW50MTYgc2lu
Z2xlTGluZQkJOjE7CSAKCVVJbnQxNiBoYXNGb2N1cyAgICAgIDoxOyAgICAKCVVJbnQxNiBkeW5h
bWljU2l6ZQk6MTsgICAgCglVSW50MTYgaW5zUHRWaXNpYmxlCToxOwkgCglVSW50MTYgZGlydHkJ
CQk6MTsJIAoJVUludDE2IHVuZGVybGluZWQJCToyOwkgCglVSW50MTYganVzdGlmaWNhdGlvbgk6
MjsJIAoJVUludDE2IGF1dG9TaGlmdAkJOjE7CSAKCVVJbnQxNiBoYXNTY3JvbGxCYXIJOjE7CSAK
CVVJbnQxNiBudW1lcmljCQkJOjE7CSAKfSBGaWVsZEF0dHJUeXBlOwoKdHlwZWRlZiBGaWVsZEF0
dHJUeXBlICpGaWVsZEF0dHJQdHI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgVUludDE2CXN0YXJ0OwkJ
CSAKICBVSW50MTYJbGVuZ3RoOwkJCSAKfSBMaW5lSW5mb1R5cGU7Cgp0eXBlZGVmIExpbmVJbmZv
VHlwZSAqTGluZUluZm9QdHI7CgoKdHlwZWRlZiBzdHJ1Y3QgRmllbGRUeXBlIHsKCVVJbnQxNgkJ
CQlpZDsKCVJlY3RhbmdsZVR5cGUJCXJlY3Q7CglGaWVsZEF0dHJUeXBlCQlhdHRyOwoJQ2hhciAJ
CQkJCSp0ZXh0OwkJCQkJIAoJTWVtSGFuZGxlCQkJdGV4dEhhbmRsZTsJCQkJIAoJTGluZUluZm9Q
dHIJCQlsaW5lczsKCVVJbnQxNgkJCQl0ZXh0TGVuOwoJVUludDE2CQkJCXRleHRCbG9ja1NpemU7
CglVSW50MTYJCQkJbWF4Q2hhcnM7CglVSW50MTYJCQkJc2VsRmlyc3RQb3M7CglVSW50MTYJCQkJ
c2VsTGFzdFBvczsKCVVJbnQxNgkJCQlpbnNQdFhQb3M7CglVSW50MTYJCQkJaW5zUHRZUG9zOwoJ
Rm9udElECQkJCWZvbnRJRDsKCVVJbnQ4IAkJCQlyZXNlcnZlZDsKfSBGaWVsZFR5cGU7CgoKdHlw
ZWRlZiBGaWVsZFR5cGUgKkZpZWxkUHRyOwkJCQkJIAoKCiAKIAogCgojIDI3MyAiLi4vU3JjU2hh
cmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0ZpZWxkLmgiCgoKCiMgMTMyICIuLi9TcmNT
aGFyZWQvUGFsbS5oIiAyCgoJCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3Mv
Q29yZS9VSS9GaW5kLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgc3Ry
dWN0IHsKCVVJbnQxNgkJCWFwcENhcmRObzsJCQkgCglMb2NhbElECQkJYXBwRGJJRDsJCQkJIAoJ
Qm9vbGVhbgkJCWZvdW5kSW5DYWxsZXI7CQkgCglVSW50OCAJCQlyZXNlcnZlZDsKCglVSW50MTYJ
CQlkYkNhcmRObzsJCQkgCglMb2NhbElECQkJZGJJRDsJCQkJCSAKCVVJbnQxNiAJCQlyZWNvcmRO
dW07CQkJIAoJVUludDE2CQkJbWF0Y2hQb3M7CQkJIAoJVUludDE2CQkJbWF0Y2hGaWVsZE51bTsJ
CSAKCVVJbnQzMgkJCW1hdGNoQ3VzdG9tOwkJIAoJfSBGaW5kTWF0Y2hUeXBlOwoKdHlwZWRlZiBG
aW5kTWF0Y2hUeXBlICpGaW5kTWF0Y2hQdHI7Cgp0eXBlZGVmIHN0cnVjdCB7CgoJIAoJVUludDE2
CQkJZGJBY2Nlc01vZGU7CQkgCglVSW50MTYgCQkJcmVjb3JkTnVtOwkJCSAKCUJvb2xlYW4JCQlt
b3JlOwkJCQkJIAoJQ2hhcgkJCQlzdHJBc1R5cGVkIFsxNiArMV07CSAKCUNoYXIJCQkJc3RyVG9G
aW5kIFsxNiArMV07CSAKCVVJbnQ4IAkJCXJlc2VydmVkMTsKCgoJIAoJIAoJIAoJVUludDE2CQkJ
bnVtTWF0Y2hlczsJCQkgCglVSW50MTYJCQlsaW5lTnVtYmVyOwkJCSAKCUJvb2xlYW4JCQljb250
aW51YXRpb247CQkgCglCb29sZWFuCQkJc2VhcmNoZWRDYWxsZXI7CSAKCglMb2NhbElECQkJY2Fs
bGVyQXBwRGJJRDsJCSAKCVVJbnQxNgkJCWNhbGxlckFwcENhcmRObzsJIAoKCUxvY2FsSUQJCQlh
cHBEYklEOwkJCQkgCglVSW50MTYJCQlhcHBDYXJkTm87CQkJIAoJCglCb29sZWFuCQkJbmV3U2Vh
cmNoOwkJCSAKCVVJbnQ4IAkJCXJlc2VydmVkMjsKCURtU2VhcmNoU3RhdGVUeXBlCXNlYXJjaFN0
YXRlOwkgCglGaW5kTWF0Y2hUeXBlCW1hdGNoIFs5IF07Cn0gRmluZFBhcmFtc1R5cGU7Cgp0eXBl
ZGVmIEZpbmRQYXJhbXNUeXBlICpGaW5kUGFyYW1zUHRyOwoKCiAKdHlwZWRlZiBzdHJ1Y3QgewoJ
SW50MTYJCQkJc2VhcmNoU3RyTGVuOwkJIAoJVUludDE2CQkJZGJDYXJkTm87CQkJIAoJTG9jYWxJ
RAkJCWRiSUQ7CQkJCQkgCglVSW50MTYgCQkJcmVjb3JkTnVtOwkJCSAKCVVJbnQxNgkJCW1hdGNo
UG9zOwkJCSAKCVVJbnQxNgkJCW1hdGNoRmllbGROdW07CQkgCglVSW50MzIJCQltYXRjaEN1c3Rv
bTsJCSAKCX0gR29Ub1BhcmFtc1R5cGU7Cgp0eXBlZGVmIEdvVG9QYXJhbXNUeXBlICpHb1RvUGFy
YW1zUHRyOwoKCiAKIAogCgojIDEyMiAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9D
b3JlL1VJL0ZpbmQuaCIKCgoKIyAxMzMgIi4uL1NyY1NoYXJlZC9QYWxtLmgiIDIKCiAKCQkKIyAx
ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvRm9ybS5oIiAxCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3Mv
Q29yZS9VSS9MaXN0LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAoKdHlw
ZWRlZiBzdHJ1Y3QgewoJVUludDE2IHVzYWJsZQkJCQk6MTsJCSAKCVVJbnQxNiBlbmFibGVkCQkJ
CToxOwkJIAoJVUludDE2IHZpc2libGUJCQkJOjE7CQkgCiAgIFVJbnQxNiBwb3BwZWRVcAkJCTox
OyAgICAgCSAKCVVJbnQxNiBoYXNTY3JvbGxCYXIJCToxOwkJIAoJVUludDE2IHNlYXJjaAkJCQk6
MTsJCSAKICAgVUludDE2IHJlc2VydmVkCQkJOjI7Cn0gTGlzdEF0dHJUeXBlOwoKCiAKdHlwZWRl
ZiB2b2lkIExpc3REcmF3RGF0YUZ1bmNUeXBlIChJbnQxNiBpdGVtTnVtLCBSZWN0YW5nbGVUeXBl
ICpib3VuZHMsIAoJQ2hhciAqKml0ZW1zVGV4dCk7CgkKdHlwZWRlZiBMaXN0RHJhd0RhdGFGdW5j
VHlwZSAqTGlzdERyYXdEYXRhRnVuY1B0cjsKCgp0eXBlZGVmIHN0cnVjdCBMaXN0VHlwZSB7CglV
SW50MTYJCQkJCWlkOwogICBSZWN0YW5nbGVUeXBlCQkJYm91bmRzOwogICBMaXN0QXR0clR5cGUJ
CQlhdHRyOwogICBDaGFyICoJCQkJCSppdGVtc1RleHQ7CiAgIEludDE2CQkJCQkJbnVtSXRlbXM7
ICAgICAgICAJCSAKICAgSW50MTYgCSAgCQkJCWN1cnJlbnRJdGVtOyAgICAgCQkgCiAgIEludDE2
ICAgCQkJCQl0b3BJdGVtOyAgICAgICAgIAkJIAogICBGb250SUQgICAgICAgICAgIAkJZm9udDsJ
CQkJCQkgCglVSW50OCAJCQkJCXJlc2VydmVkOwoJV2luSGFuZGxlICAgCQkJcG9wdXBXaW47CQkJ
CSAKICAgTGlzdERyYXdEYXRhRnVuY1B0cglkcmF3SXRlbXNDYWxsYmFjazsJIAp9IExpc3RUeXBl
OwoKdHlwZWRlZiBMaXN0VHlwZSAqIFBhbG1fTGlzdFB0ciA7CgoKIAogCiAKCmV4dGVybiAiQyIg
ewoKCmV4dGVybiB2b2lkIExzdERyYXdMaXN0IChMaXN0VHlwZSAqbGlzdFApCgkJCQkJCQkgIDsK
CmV4dGVybiB2b2lkIExzdEVyYXNlTGlzdCAoTGlzdFR5cGUgKmxpc3RQKQoJCQkJCQkJICA7Cgpl
eHRlcm4gSW50MTYgTHN0R2V0U2VsZWN0aW9uIChjb25zdCBMaXN0VHlwZSAqbGlzdFApCgkJCQkJ
CQkgIDsKCmV4dGVybiBDaGFyICogTHN0R2V0U2VsZWN0aW9uVGV4dCAoY29uc3QgTGlzdFR5cGUg
Kmxpc3RQLCBJbnQxNiBpdGVtTnVtKQoJCQkJCQkJICA7CgpleHRlcm4gQm9vbGVhbiBMc3RIYW5k
bGVFdmVudCAoTGlzdFR5cGUgKmxpc3RQLCBjb25zdCBFdmVudFR5cGUgKmV2ZW50UCkKCQkJCQkJ
CSAgOwoKZXh0ZXJuIHZvaWQgTHN0U2V0SGVpZ2h0IChMaXN0VHlwZSAqbGlzdFAsIEludDE2IHZp
c2libGVJdGVtcykKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgTHN0U2V0UG9zaXRpb24gKExpc3RU
eXBlICpsaXN0UCwgQ29vcmQgeCwgQ29vcmQgeSkKCQkJCQkJCSAgOwoKZXh0ZXJuIHZvaWQgTHN0
U2V0U2VsZWN0aW9uIChMaXN0VHlwZSAqbGlzdFAsIEludDE2IGl0ZW1OdW0pCgkJCQkJCQkgIDsK
CmV4dGVybiB2b2lkIExzdFNldExpc3RDaG9pY2VzIChMaXN0VHlwZSAqbGlzdFAsIENoYXIgKipp
dGVtc1RleHQsIEludDE2IG51bUl0ZW1zKQoJCQkJCQkJICA7CgpleHRlcm4gdm9pZCBMc3RTZXRE
cmF3RnVuY3Rpb24gKExpc3RUeXBlICpsaXN0UCwgTGlzdERyYXdEYXRhRnVuY1B0ciBmdW5jKQoJ
CQkJCQkJICA7CgpleHRlcm4gdm9pZCBMc3RTZXRUb3BJdGVtIChMaXN0VHlwZSAqbGlzdFAsIElu
dDE2IGl0ZW1OdW0pCgkJCQkJCQkgIDsKCmV4dGVybiB2b2lkIExzdE1ha2VJdGVtVmlzaWJsZSAo
TGlzdFR5cGUgKmxpc3RQLCBJbnQxNiBpdGVtTnVtKQoJCQkJCQkJICA7CgpleHRlcm4gSW50MTYg
THN0R2V0TnVtYmVyT2ZJdGVtcyAoY29uc3QgTGlzdFR5cGUgKmxpc3RQKQoJCQkJCQkJICA7Cgpl
eHRlcm4gSW50MTYgTHN0UG9wdXBMaXN0IChMaXN0VHlwZSAqbGlzdFApCgkJCQkJCQkgIDsKCmV4
dGVybiBCb29sZWFuIExzdFNjcm9sbExpc3QoTGlzdFR5cGUgKmxpc3RQLCBXaW5EaXJlY3Rpb25U
eXBlIGRpcmVjdGlvbiwgSW50MTYgaXRlbUNvdW50KQoJCQkJCQkJICA7CgpleHRlcm4gSW50MTYg
THN0R2V0VmlzaWJsZUl0ZW1zIChjb25zdCBMaXN0VHlwZSAqbGlzdFApCgkJCQkJCQkgIDsKCmV4
dGVybiBFcnIgTHN0TmV3TGlzdCAodm9pZCAqKmZvcm1QUCwgVUludDE2IGlkLCAKCUNvb3JkIHgs
IENvb3JkIHksIENvb3JkIHdpZHRoLCBDb29yZCBoZWlnaHQsIAoJRm9udElEIGZvbnQsIEludDE2
IHZpc2libGVJdGVtcywgSW50MTYgdHJpZ2dlcklkKQoJCQkJCQkJICA7CgoKCgp9CgoKCiMgMjUg
Ii4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0luY3MvQ29yZS9VSS9Gb3JtLmgiIDIKCiMgMSAi
Li4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL1Njcm9sbEJhci5oIiAxCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGVudW0geyBzY2xVcEFycm93LCBzY2xEb3du
QXJyb3csIHNjbFVwUGFnZSwgc2NsRG93blBhZ2UsIHNjbENhciB9IAoJU2Nyb2xsQmFyUmVnaW9u
VHlwZTsKCgp0eXBlZGVmIHN0cnVjdCB7CglVSW50MTYgdXNhYmxlCQkJOjE7CQkgCglVSW50MTYg
dmlzaWJsZQkJCToxOwkJIAoJVUludDE2IGhpbGlnaHRlZAkJOjE7CQkgCglVSW50MTYgc2hvd24J
CQk6MTsJCSAKCVVJbnQxNiBhY3RpdmVSZWdpb24JOjQ7CQkgCn0gU2Nyb2xsQmFyQXR0clR5cGU7
CgoKdHlwZWRlZiBzdHJ1Y3QgU2Nyb2xsQmFyVHlwZSB7CglSZWN0YW5nbGVUeXBlCQlib3VuZHM7
CglVSW50MTYJCQkJaWQ7CglTY3JvbGxCYXJBdHRyVHlwZQlhdHRyOwoJSW50MTYJCQkJCXZhbHVl
OwoJSW50MTYJCQkJCW1pblZhbHVlOwoJSW50MTYJCQkJCW1heFZhbHVlOwoJSW50MTYJCQkJCXBh
Z2VTaXplOwoJSW50MTYJCQkJCXBlblBvc0luQ2FyOwoJSW50MTYJCQkJCXNhdmVQb3M7Cn0gU2Ny
b2xsQmFyVHlwZTsKCnR5cGVkZWYgU2Nyb2xsQmFyVHlwZSAqU2Nyb2xsQmFyUHRyOwoKIyA3NCAi
Li4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL1Njcm9sbEJhci5oIgoKCgoK
IyAyNiAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1VJL0Zvcm0uaCIgMgoK
IyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvVGFibGUuaCIgMQog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCiAKIAplbnVtIHRhYmxlSXRlbVN0
eWxlcyB7IGNoZWNrYm94VGFibGVJdGVtLCAKICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21U
YWJsZUl0ZW0sIAogICAgICAgICAgICAgICAgICAgICAgIGRhdGVUYWJsZUl0ZW0sIAogICAgICAg
ICAgICAgICAgICAgICAgIGxhYmVsVGFibGVJdGVtLAogICAgICAgICAgICAgICAgICAgICAgIG51
bWVyaWNUYWJsZUl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBUcmlnZ2VyVGFibGVJ
dGVtLAogICAgICAgICAgICAgICAgICAgICAgIHRleHRUYWJsZUl0ZW0sCiAgICAgICAgICAgICAg
ICAgICAgICAgdGV4dFdpdGhOb3RlVGFibGVJdGVtLAogICAgICAgICAgICAgICAgICAgICAgIHRp
bWVUYWJsZUl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgbmFycm93VGV4dFRhYmxlSXRlbQog
ICAgICAgICAgICAgICAgICAgICAgIH07CnR5cGVkZWYgZW51bSB0YWJsZUl0ZW1TdHlsZXMgVGFi
bGVJdGVtU3R5bGVUeXBlOwoKCnR5cGVkZWYgc3RydWN0IHsKCVRhYmxlSXRlbVN0eWxlVHlwZQlp
dGVtVHlwZTsJCQogICBGb250SUQJCQkJCWZvbnRJRDsJCSAKCUludDE2CQkJCQkJaW50VmFsdWU7
CglDaGFyICogIAkJCQkJcHRyOwp9IFRhYmxlSXRlbVR5cGU7CnR5cGVkZWYgVGFibGVJdGVtVHlw
ZSAqVGFibGVJdGVtUHRyOwoKCiAKdHlwZWRlZiB2b2lkIFRhYmxlRHJhd0l0ZW1GdW5jVHlwZSAg
CgkJKHZvaWQgKnRhYmxlUCwgSW50MTYgcm93LCBJbnQxNiBjb2x1bW4sIFJlY3RhbmdsZVR5cGUg
KmJvdW5kcyk7Cgp0eXBlZGVmIFRhYmxlRHJhd0l0ZW1GdW5jVHlwZSAqVGFibGVEcmF3SXRlbUZ1
bmNQdHI7CgoKIAp0eXBlZGVmIEVyciBUYWJsZUxvYWREYXRhRnVuY1R5cGUgCgkJKHZvaWQgKnRh
YmxlUCwgSW50MTYgcm93LCBJbnQxNiBjb2x1bW4sIEJvb2xlYW4gZWRpdGFibGUsIAoJCU1lbUhh
bmRsZSAqIGRhdGFILCBJbnQxNiAqZGF0YU9mZnNldCwgSW50MTYgKmRhdGFTaXplLCBGaWVsZFB0
ciBmbGQpOwoKdHlwZWRlZiBUYWJsZUxvYWREYXRhRnVuY1R5cGUgKlRhYmxlTG9hZERhdGFGdW5j
UHRyOwoKCiAKdHlwZWRlZglCb29sZWFuIFRhYmxlU2F2ZURhdGFGdW5jVHlwZQoJCSh2b2lkICp0
YWJsZVAsIEludDE2IHJvdywgSW50MTYgY29sdW1uKTsKCnR5cGVkZWYgVGFibGVTYXZlRGF0YUZ1
bmNUeXBlICpUYWJsZVNhdmVEYXRhRnVuY1B0cjsKCnR5cGVkZWYgc3RydWN0IHsKCUNvb3JkCQkJ
CQkJCXdpZHRoOwkJCQkJIAoJVUludDE2CQkJCQkJcmVzZXJ2ZWQxIAkJOiA1OwoJVUludDE2CQkJ
CQkJbWFza2VkCQkJOiAxOyAgIAoJVUludDE2CQkJCQkJZWRpdEluZGljYXRvcgk6IDE7CglVSW50
MTYJCQkJCQl1c2FibGUgCQkJOiAxOwoJVUludDE2CQkJCQkJcmVzZXJ2ZWQyCQk6IDg7CglDb29y
ZAkJCQkJCQlzcGFjaW5nOwkJCQkJIAoJVGFibGVEcmF3SXRlbUZ1bmNQdHIJCWRyYXdDYWxsYmFj
azsKCVRhYmxlTG9hZERhdGFGdW5jUHRyCQlsb2FkRGF0YUNhbGxiYWNrOwoJVGFibGVTYXZlRGF0
YUZ1bmNQdHIJCXNhdmVEYXRhQ2FsbGJhY2s7Cgp9IFRhYmxlQ29sdW1uQXR0clR5cGU7CgoKdHlw
ZWRlZiBzdHJ1Y3QgewoJVUludDE2CQkJCQkJaWQ7CglDb29yZAkJCQkJCQloZWlnaHQ7CQkJCQkg
CglVSW50MzIJCQkJCQlkYXRhOwoKCVVJbnQxNgkJCQkJCXJlc2VydmVkMQkJOiA3OwoJVUludDE2
CQkJCQkJdXNhYmxlCQkJOiAxOwoJVUludDE2CQkJCQkJcmVzZXJ2ZWQyCQk6IDQ7CglVSW50MTYJ
CQkJCQltYXNrZWQJCQk6IDE7ICAgCglVSW50MTYJCQkJCQlpbnZhbGlkCQkJOiAxOwkgCglVSW50
MTYgCQkJCQkJc3RhdGljSGVpZ2h0CTogMTsgICAKCVVJbnQxNgkJCQkJCXNlbGVjdGFibGUJCTog
MTsKCglVSW50MTYJCQkJCQlyZXNlcnZlZDM7Cgp9IFRhYmxlUm93QXR0clR5cGU7CgoKdHlwZWRl
ZiBzdHJ1Y3QgewoJVUludDE2IAkJCQkJCXZpc2libGU6MTsJCQkgCiAgIFVJbnQxNiAJCQkJCQll
ZGl0YWJsZToxOwkJCSAKCVVJbnQxNiAJCQkJCQllZGl0aW5nOjE7CQkJIAoJVUludDE2IAkJCQkJ
CXNlbGVjdGVkOjE7CQkJIAoJVUludDE2CQkJCQkJaGFzU2Nyb2xsQmFyOjE7CSAKCVVJbnQxNgkJ
CQkJCXJlc2VydmVkOjExOwp9IFRhYmxlQXR0clR5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgVGFibGVU
eXBlIHsKCVVJbnQxNgkJCQkJCWlkOwogICBSZWN0YW5nbGVUeXBlCQkJCWJvdW5kczsKICAgVGFi
bGVBdHRyVHlwZQkJCQlhdHRyOwoJSW50MTYJCQkJCQkJbnVtQ29sdW1uczsKCUludDE2CQkJCQkJ
CW51bVJvd3M7CglJbnQxNgkJCQkJCQljdXJyZW50Um93OwoJSW50MTYJCQkJCQkJY3VycmVudENv
bHVtbjsKCUludDE2CQkJCQkJCXRvcFJvdzsKCVRhYmxlQ29sdW1uQXR0clR5cGUgKgljb2x1bW5B
dHRyczsKICAgVGFibGVSb3dBdHRyVHlwZSAqICAgIAlyb3dBdHRyczsKCVRhYmxlSXRlbVB0cgkJ
CQlpdGVtczsKCUZpZWxkVHlwZQkJCQkJY3VycmVudEZpZWxkOwp9IFRhYmxlVHlwZTsKCnR5cGVk
ZWYgVGFibGVUeXBlICpUYWJsZVB0cjsKCgogCiAKIAojIDMxNyAiLi4vU3JjU2hhcmVkL1BhbG0v
UGxhdGZvcm0vSW5jcy9Db3JlL1VJL1RhYmxlLmgiCgoKCiMgMjcgIi4uL1NyY1NoYXJlZC9QYWxt
L1BsYXRmb3JtL0luY3MvQ29yZS9VSS9Gb3JtLmgiIDIKCgoKCgoKCiAKCgogCgoKCgogCmVudW0g
YWxlcnRUeXBlcyB7CglpbmZvcm1hdGlvbkFsZXJ0LAoJY29uZmlybWF0aW9uQWxlcnQsCgl3YXJu
aW5nQWxlcnQsCgllcnJvckFsZXJ0IH07CnR5cGVkZWYgZW51bSBhbGVydFR5cGVzIFBhbG1fQWxl
cnRUeXBlIDsKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNgkJYWxlcnRUeXBlOwoJVUludDE2CQlo
ZWxwUnNjSUQ7CglVSW50MTYJCW51bUJ1dHRvbnM7CglVSW50MTYJCWRlZmF1bHRCdXR0b247Cn0g
QWxlcnRUZW1wbGF0ZVR5cGU7CgoKIAplbnVtIGZvcm1PYmplY3RzIHsKCWZybUZpZWxkT2JqLAoJ
ZnJtQ29udHJvbE9iaiwKCWZybUxpc3RPYmosCglmcm1UYWJsZU9iaiwKCWZybUJpdG1hcE9iaiwK
CWZybUxpbmVPYmosCglmcm1GcmFtZU9iaiwKCWZybVJlY3RhbmdsZU9iaiwKCWZybUxhYmVsT2Jq
LAoJZnJtVGl0bGVPYmosCglmcm1Qb3B1cE9iaiwKCWZybUdyYWZmaXRpU3RhdGVPYmosCglmcm1H
YWRnZXRPYmosCglmcm1TY3JvbGxCYXJPYmogfTsKdHlwZWRlZiBlbnVtIGZvcm1PYmplY3RzIEZv
cm1PYmplY3RLaW5kOwoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNiB1c2FibGUJCQk6MTsJIAoJ
VUludDE2IHJlc2VydmVkCQk6MTU7CSAKfSBGb3JtT2JqQXR0clR5cGU7CgoKIAoKCgoKCgp0eXBl
ZGVmIHN0cnVjdCB7CglVSW50MTYgdXNhYmxlCQkJOjE7CSAKCVVJbnQxNiBleHRlbmRlZAkJOjE7
CSAKCVVJbnQxNiB2aXNpYmxlCQkJOjE7CSAKCVVJbnQxNiByZXNlcnZlZAkJOjEzOwkgCn0gRm9y
bUdhZGdldEF0dHJUeXBlOwoKc3RydWN0IEZvcm1UeXBlOyAgCnR5cGVkZWYgQm9vbGVhbiAoRm9y
bUdhZGdldEhhbmRsZXJUeXBlKSAoc3RydWN0IEZvcm1HYWRnZXRUeXBlICpnYWRnZXRQLCBVSW50
MTYgY21kLCB2b2lkICpwYXJhbVApOwoKc3RydWN0IEZvcm1HYWRnZXRUeXBlIHsKCVVJbnQxNgkJ
CQkJCWlkOwoJRm9ybUdhZGdldEF0dHJUeXBlCQlhdHRyOwoJUmVjdGFuZ2xlVHlwZQkJCQlyZWN0
OwoJY29uc3Qgdm9pZCAqCQkJICAgZGF0YTsKCUZvcm1HYWRnZXRIYW5kbGVyVHlwZQkqaGFuZGxl
cjsKfTsKdHlwZWRlZiBzdHJ1Y3QgRm9ybUdhZGdldFR5cGUgRm9ybUdhZGdldFR5cGU7CgoKIAoK
dHlwZWRlZiBzdHJ1Y3QgewoJRm9ybU9iakF0dHJUeXBlCQkJYXR0cjsKCVBvaW50VHlwZQkJCQkJ
cG9zOwoJVUludDE2CQkgICAgIAkJCXJzY0lEOwp9IEZvcm1CaXRtYXBUeXBlOwoKCnR5cGVkZWYg
c3RydWN0IHsKCUZvcm1PYmpBdHRyVHlwZQkJCWF0dHI7CglQb2ludFR5cGUJICAgICAgCQlwb2lu
dDE7CSAgIAoJUG9pbnRUeXBlCSAgICAgIAkJcG9pbnQyOwkgICAKfSBGb3JtTGluZVR5cGU7CgoK
dHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2CQkJCQkJaWQ7CglGb3JtT2JqQXR0clR5cGUJCQlhdHRy
OwoJUmVjdGFuZ2xlVHlwZQkJCQlyZWN0OwoJVUludDE2ICAgICAJCQkJCWZyYW1lVHlwZTsKfSBG
b3JtRnJhbWVUeXBlOwoKCnR5cGVkZWYgc3RydWN0IHsKCUZvcm1PYmpBdHRyVHlwZQkJCWF0dHI7
CglSZWN0YW5nbGVUeXBlCQkJCXJlY3Q7Cn0gRm9ybVJlY3RhbmdsZVR5cGU7CgoKdHlwZWRlZiBz
dHJ1Y3QgewoJVUludDE2CQkJCQkJaWQ7CglQb2ludFR5cGUJCQkJCXBvczsKCUZvcm1PYmpBdHRy
VHlwZQkJCWF0dHI7CglGb250SUQJCQkJCQlmb250SUQ7CglVSW50OCAJCQkJCQlyZXNlcnZlZDsK
CUNoYXIgKgkJCQkJCXRleHQ7Cn0gRm9ybUxhYmVsVHlwZTsKCgp0eXBlZGVmIHN0cnVjdCB7CglS
ZWN0YW5nbGVUeXBlCQkJCXJlY3Q7CglDaGFyICoJCQkJCQl0ZXh0Owp9IEZvcm1UaXRsZVR5cGU7
CgoKdHlwZWRlZiBzdHJ1Y3QgewoJVUludDE2CQkJCQkJY29udHJvbElEOwoJVUludDE2CQkJCQkJ
bGlzdElEOwp9IEZvcm1Qb3B1cFR5cGU7CgoKdHlwZWRlZiBzdHJ1Y3QgewoJUG9pbnRUeXBlCQkJ
CQlwb3M7Cn0gRnJtR3JhZmZpdGlTdGF0ZVR5cGU7CgoKdHlwZWRlZiB1bmlvbiB7Cgl2b2lkICog
ICAgICAgICAgICAJCXB0cjsKCUZpZWxkVHlwZSAqCQkJCQlmaWVsZDsKCUNvbnRyb2xUeXBlICoJ
CQkJY29udHJvbDsKCUdyYXBoaWNDb250cm9sVHlwZSAqCQlncmFwaGljQ29udHJvbDsKCVNsaWRl
ckNvbnRyb2xUeXBlICoJCXNsaWRlckNvbnRyb2w7CglMaXN0VHlwZQkqCQkJCQlsaXN0OwoJVGFi
bGVUeXBlICoJCQkJCXRhYmxlOwoJRm9ybUJpdG1hcFR5cGUgKgkJCWJpdG1hcDsKIAogCiAKCUZv
cm1MYWJlbFR5cGUgKgkJCWxhYmVsOwoJRm9ybVRpdGxlVHlwZSAqCQkJdGl0bGU7CQoJRm9ybVBv
cHVwVHlwZSAqCQkJcG9wdXA7CglGcm1HcmFmZml0aVN0YXRlVHlwZSAqCWdyZlN0YXRlOwoJRm9y
bUdhZGdldFR5cGUgKgkJCWdhZGdldDsKCVNjcm9sbEJhclR5cGUgKgkJCXNjcm9sbEJhcjsKfSBG
b3JtT2JqZWN0VHlwZTsKCiAKCgp0eXBlZGVmIHN0cnVjdCB7CglGb3JtT2JqZWN0S2luZAkJCQlv
YmplY3RUeXBlOwoJVUludDggCQkJCQkJcmVzZXJ2ZWQ7CglGb3JtT2JqZWN0VHlwZQkJCQlvYmpl
Y3Q7Cn0gRm9ybU9iakxpc3RUeXBlOwoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNiB1c2FibGUJ
CQk6MTsJIAoJVUludDE2IGVuYWJsZWQJCQk6MTsJIAoJVUludDE2IHZpc2libGUJCQk6MTsJIAoJ
VUludDE2IGRpcnR5CQkJOjE7CSAKCVVJbnQxNiBzYXZlQmVoaW5kCQk6MTsJIAoJVUludDE2IGdy
YWZmaXRpU2hpZnQJOjE7ICAgIAoJVUludDE2IGdsb2JhbHNBdmFpbGFibGU6MTsgIAoJCQkJCQkJ
CQkJIAoJVUludDE2IGRvaW5nRGlhbG9nCToxOwkgCglVSW50MTYgZXhpdERpYWxvZwkJOjE7CSAK
CVVJbnQxNiByZXNlcnZlZAkJOjc7CSAKCVVJbnQxNiByZXNlcnZlZDI7CQkJCSAKfSBGb3JtQXR0
clR5cGU7CgoKdHlwZWRlZiBCb29sZWFuIEZvcm1FdmVudEhhbmRsZXJUeXBlIChFdmVudFR5cGUg
KmV2ZW50UCk7Cgp0eXBlZGVmIEZvcm1FdmVudEhhbmRsZXJUeXBlICpGb3JtRXZlbnRIYW5kbGVy
UHRyOwoKc3RydWN0IEZvcm1UeXBlIHsKCVdpbmRvd1R5cGUJCQkJCXdpbmRvdzsKCVVJbnQxNgkJ
CQkJCWZvcm1JZDsKICAgRm9ybUF0dHJUeXBlCQkJCWF0dHI7CglXaW5IYW5kbGUJICAgICAgIAkJ
Yml0c0JlaGluZEZvcm07CglGb3JtRXZlbnRIYW5kbGVyVHlwZSAqCWhhbmRsZXI7CglVSW50MTYJ
CQkJCQlmb2N1czsKCVVJbnQxNgkJCQkJCWRlZmF1bHRCdXR0b247CglVSW50MTYJCQkJCQloZWxw
UnNjSWQ7CglVSW50MTYJCQkJCQltZW51UnNjSWQ7CglVSW50MTYJCQkJCQludW1PYmplY3RzOwoJ
Rm9ybU9iakxpc3RUeXBlICoJCQlvYmplY3RzOwp9OwoKdHlwZWRlZiBzdHJ1Y3QgRm9ybVR5cGUg
Rm9ybVR5cGU7CnR5cGVkZWYgRm9ybVR5cGUgKkZvcm1QdHI7CgoKIAogCiAKIAogCnR5cGVkZWYg
c3RydWN0IEZvcm1BY3RpdmVTdGF0ZVR5cGUgewoJVUludDE2CWRhdGFbMTFdOwoJfSBGb3JtQWN0
aXZlU3RhdGVUeXBlOwoJCgogCnR5cGVkZWYgQm9vbGVhbiBGb3JtQ2hlY2tSZXNwb25zZUZ1bmNU
eXBlIAoJCShJbnQxNiBidXR0b24sIENoYXIgKiBhdHRlbXB0KTsKCnR5cGVkZWYgRm9ybUNoZWNr
UmVzcG9uc2VGdW5jVHlwZSAqRm9ybUNoZWNrUmVzcG9uc2VGdW5jUHRyOwoKCiAKIAogCgoKCgoK
CgogCiAKIAogCiAKCiMgNTA4ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUv
VUkvRm9ybS5oIgoKCgojIDEzNSAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKIAogCgkJCiAKIAoJ
CQogCiAKIAogCgkJCiAKIAoJCQogCiAKCQkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9y
bS9JbmNzL0NvcmUvVUkvVUlSZXNvdXJjZXMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKIAogCiAKCgoKIAogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAK
IAoKCgoJCQkJCQkJCQkJCQkJCQkgCgoKCgoKIAoKIAoKIAogCiAKCgoKCgogCiAKIAoKCgogCiAK
IAogCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCgoKIAoKCgoKCgoKCgoK
CgoKCiAKCgoKIAoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgogCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgogCgoK
CgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKIAoKCgoKCgoKCgoKCiAKIAogCiMgMzIw
ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvVUkvVUlSZXNvdXJjZXMuaCIK
CgoKIyAxNTIgIi4uL1NyY1NoYXJlZC9QYWxtLmgiIDIKCgogCgoJIAplbnVtIGNsaXBib2FyZEZv
cm1hdHMgeyBjbGlwYm9hcmRUZXh0LCBjbGlwYm9hcmRJbmssIGNsaXBib2FyZEJpdG1hcCB9Owp0
eXBlZGVmIGVudW0gY2xpcGJvYXJkRm9ybWF0cyBDbGlwYm9hcmRGb3JtYXRUeXBlOwoKCgoJCgkJ
CQkJCQkJIAoJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vQ29yZS9TeXN0ZW0vSW5j
c1Bydi9EZWJ1Z1Bydi5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgogCgoKdHlwZWRlZiBzdHJ1Y3QgQnJlYWtwb2ludFR5cGUgewoJTWVtUHRyCQlhZGRyOwkJCQkJ
CQkJCSAKCUJvb2xlYW4JZW5hYmxlZDsJCQkJCQkJCSAKCUJvb2xlYW4JaW5zdGFsbGVkOwkJCQkJ
CQkgCgl9IEJyZWFrcG9pbnRUeXBlOwoKCgoKCiAKCgogCgogCiAKIAogCiAKIAoKCgp0eXBlZGVm
IHN0cnVjdCBTeXNQa3RTdGF0ZUNtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxl
ciA7CQkJCQkJCQkgCgl9IFN5c1BrdFN0YXRlQ21kQ21kVHlwZTsKdHlwZWRlZiBTeXNQa3RTdGF0
ZUNtZENtZFR5cGUqCVN5c1BrdFN0YXRlQ21kQ21kUHRyOwoKCiAKdHlwZWRlZiBzdHJ1Y3QgU3lz
UGt0U3RhdGVSc3BUeXBlIHsKCVVJbnQ4CWNvbW1hbmQ7CVVJbnQ4CV9maWxsZXIgOwkJCQkJCQkJ
IAoJQm9vbGVhbgkJCQkJCXJlc2V0dGVkOwkJCSAKCVVJbnQ4IAkJCQkJCXJlc2VydmVkMTsKCVVJ
bnQxNgkJCQkJCWV4Y2VwdGlvbklkOwkJIAoJCQkJCQkJCQkJCQkJCQkgCglNNjhLUmVnc1R5cGUJ
CQkJcmVnOwkJCQkJIAoJVUludDE2CQkJCQkJaW5zdFsxNSBdOwoJCQkJCQkJCQkJCQkJCQkgCgkJ
CQkJCQkJCQkJCQkJCSAKCUJyZWFrcG9pbnRUeXBlCQkJCWJwWyg1ICArMSkgXTsJIAoKCXZvaWQJ
CQkJCQkJKnN0YXJ0QWRkcjsJCQkgCgl2b2lkCQkJCQkJCSplbmRBZGRyOwkJCSAKCWNoYXIJCQkJ
CQkJbmFtZVszMiBdOwoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CQkJCQkJIAoJVUludDgJCQkJCQkJdHJhcFRhYmxlUmV2OwkJIAoJCQkJCQkJCQkJCQkJCQkgCglV
SW50OCAJCQkJCQlyZXNlcnZlZDI7Cgl9IFN5c1BrdFN0YXRlUnNwVHlwZTsKdHlwZWRlZiBTeXNQ
a3RTdGF0ZVJzcFR5cGUqCVN5c1BrdFN0YXRlUnNwUHRyOwoKIAogCiAKIAogCiAKIAp0eXBlZGVm
IHN0cnVjdCBTeXNQa3RSdG5OYW1lQ21kVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmls
bGVyIDsJCQkJCQkJIAoJdm9pZAkJCQkJCQkqYWRkcmVzczsJCSAKCX0gU3lzUGt0UnRuTmFtZUNt
ZFR5cGU7CnR5cGVkZWYgU3lzUGt0UnRuTmFtZUNtZFR5cGUqCVN5c1BrdFJ0bk5hbWVDbWRQdHI7
Cgp0eXBlZGVmIHN0cnVjdCBTeXNQa3RSdG5OYW1lUnNwVHlwZSB7CglVSW50OAljb21tYW5kOwlV
SW50OAlfZmlsbGVyIDsJCQkJCQkJIAoJdm9pZAkJCQkJCQkqYWRkcmVzczsJCSAKCXZvaWQJCQkJ
CQkJKnN0YXJ0QWRkcjsJCSAKCXZvaWQJCQkJCQkJKmVuZEFkZHI7CQkgCgljaGFyCQkJCQkJCW5h
bWVbMzIgXTsgICAJCSAKCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJIAoJfSBTeXNQa3RS
dG5OYW1lUnNwVHlwZTsKdHlwZWRlZiBTeXNQa3RSdG5OYW1lUnNwVHlwZSoJU3lzUGt0UnRuTmFt
ZVJzcFB0cjsKCgogCiAKIAogCiAKdHlwZWRlZglzdHJ1Y3QgU3lzUGt0UmVhZFJlZ3NDbWRUeXBl
IHsKCVVJbnQ4CWNvbW1hbmQ7CVVJbnQ4CV9maWxsZXIgOwkJCQkJCQkJIAoJfSBTeXNQa3RSZWFk
UmVnc0NtZFR5cGU7CnR5cGVkZWYgU3lzUGt0UmVhZFJlZ3NDbWRUeXBlICoJU3lzUGt0UmVhZFJl
Z3NDbWRQdHI7Cgp0eXBlZGVmCXN0cnVjdCBTeXNQa3RSZWFkUmVnc1JzcFR5cGUgewoJVUludDgJ
Y29tbWFuZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgkgCgl9IFN5c1BrdFJlYWRSZWdzUnNw
VHlwZTsKdHlwZWRlZiBTeXNQa3RSZWFkUmVnc1JzcFR5cGUgKglTeXNQa3RSZWFkUmVnc1JzcFB0
cjsKCgoKIAogCiAKIAogCnR5cGVkZWYJc3RydWN0IFN5c1BrdFdyaXRlUmVnc0NtZFR5cGUgewoJ
VUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCglNNjhLUmVnc1R5cGUJCXJl
ZzsJCQkJCQkJIAoJfSBTeXNQa3RXcml0ZVJlZ3NDbWRUeXBlOwp0eXBlZGVmIFN5c1BrdFdyaXRl
UmVnc0NtZFR5cGUgKglTeXNQa3RXcml0ZVJlZ3NDbWRQdHI7CgoKIAp0eXBlZGVmCXN0cnVjdCBT
eXNQa3RXcml0ZVJlZ3NSc3BUeXBlIHsKCVVJbnQ4CWNvbW1hbmQ7CVVJbnQ4CV9maWxsZXIgOwkJ
CQkJCQkJIAoJfSBTeXNQa3RXcml0ZVJlZ3NSc3BUeXBlOwp0eXBlZGVmIFN5c1BrdFdyaXRlUmVn
c1JzcFR5cGUgKglTeXNQa3RXcml0ZVJlZ3NSc3BQdHI7CgoKIAogCiAKIAogCnR5cGVkZWYgc3Ry
dWN0IFN5c1BrdENvbnRpbnVlQ21kVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVy
IDsJCQkJCQkJCQkgCglNNjhLUmVnc1R5cGUJIAkJcmVnczsJCQkJCQkJIAoJQm9vbGVhbgkJCQkJ
c3RlcFNweTsJCQkJCQkgCglVSW50OCAJCQkJCXJlc2VydmVkOwoJVUludDMyCQkJCQlzc0FkZHI7
CQkJCQkJIAoJVUludDMyCQkJCQlzc0NvdW50OwkJCQkJCSAKCVVJbnQzMgkJCQkJc3NDaGVja1N1
bTsJCQkJCSAKCX0gU3lzUGt0Q29udGludWVDbWRUeXBlOwoKdHlwZWRlZiBTeXNQa3RDb250aW51
ZUNtZFR5cGUgKlN5c1BrdENvbnRpbnVlQ21kUHRyOwoKCiAKIAogCiAKIAp0eXBlZGVmIHN0cnVj
dCBTeXNQa3RHZXRCcmVha3BvaW50c0NtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUludDgJX2Zp
bGxlciA7CQkJCQkJCQkgCgl9IFN5c1BrdEdldEJyZWFrcG9pbnRzQ21kVHlwZTsKdHlwZWRlZiBT
eXNQa3RHZXRCcmVha3BvaW50c0NtZFR5cGUqCVN5c1BrdEdldEJyZWFrcG9pbnRzQ21kUHRyOwoK
dHlwZWRlZiBzdHJ1Y3QgU3lzUGt0R2V0QnJlYWtwb2ludHNSc3BUeXBlIHsKCVVJbnQ4CWNvbW1h
bmQ7CVVJbnQ4CV9maWxsZXIgOwkJCQkJCQkJIAoJIAoJfSBTeXNQa3RHZXRCcmVha3BvaW50c1Jz
cFR5cGU7CnR5cGVkZWYgU3lzUGt0R2V0QnJlYWtwb2ludHNSc3BUeXBlKglTeXNQa3RHZXRCcmVh
a3BvaW50c1JzcFB0cjsKCgogCiAKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgU3lzUGt0U2V0QnJlYWtw
b2ludHNDbWRUeXBlIHsKCVVJbnQ4CWNvbW1hbmQ7CVVJbnQ4CV9maWxsZXIgOwkJCQkJCQkJIAoJ
IAoJfSBTeXNQa3RTZXRCcmVha3BvaW50c0NtZFR5cGU7CnR5cGVkZWYgU3lzUGt0U2V0QnJlYWtw
b2ludHNDbWRUeXBlKglTeXNQa3RTZXRCcmVha3BvaW50c0NtZFB0cjsKCnR5cGVkZWYgc3RydWN0
IFN5c1BrdFNldEJyZWFrcG9pbnRzUnNwVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmls
bGVyIDsJCQkJCQkJCSAKCX0gU3lzUGt0U2V0QnJlYWtwb2ludHNSc3BUeXBlOwp0eXBlZGVmIFN5
c1BrdFNldEJyZWFrcG9pbnRzUnNwVHlwZSoJU3lzUGt0U2V0QnJlYWtwb2ludHNSc3BQdHI7CgoK
CgogCiAKIAogCnR5cGVkZWYgc3RydWN0IFN5c1BrdERiZ0JyZWFrVG9nZ2xlQ21kVHlwZSB7CglV
SW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVyIDsJCQkJCQkJCSAKCX0gU3lzUGt0RGJnQnJlYWtU
b2dnbGVDbWRUeXBlOwp0eXBlZGVmIFN5c1BrdERiZ0JyZWFrVG9nZ2xlQ21kVHlwZSoJU3lzUGt0
RGJnQnJlYWtUb2dnbGVDbWRQdHI7Cgp0eXBlZGVmIHN0cnVjdCBTeXNQa3REYmdCcmVha1RvZ2ds
ZVJzcFR5cGUgewoJVUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCglCb29s
ZWFuCQluZXdTdGF0ZTsKCVVJbnQ4IAkJCXJlc2VydmVkOwoJfSBTeXNQa3REYmdCcmVha1RvZ2ds
ZVJzcFR5cGU7CnR5cGVkZWYgU3lzUGt0RGJnQnJlYWtUb2dnbGVSc3BUeXBlKglTeXNQa3REYmdC
cmVha1RvZ2dsZVJzcFB0cjsKCgogCiAKIAogCiAKIAogCiAKIAp0eXBlZGVmIHN0cnVjdCBTeXNQ
a3RGbGFzaFdyaXRlVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVyIDsJCQkJCQkJ
CSAKCVVJbnQxNgkJbnVtQnl0ZXM7CQkJCQkJCSAKCVVJbnQzMgkJZmxhc2hCYXNlOwkJCQkJCQkg
CglVSW50MzIJCXNyY0FkZHI7CQkJCQkJCQkgCglVSW50MzIJCWRzdEFkZHI7CQkJCQkJCQkgCglV
SW50OAkJCW1hbnVmOwkJCQkJCQkJIAoJVUludDgJCQlkZXZpY2U7CQkJCQkJCQkgCglVSW50OAkJ
CXdpZHRoOwkJCQkJCQkJIAoJVUludDgJCQlmaWxsZXI7CglVSW50MzIJCXJhbVNwYWNlUDsJCQkJ
CQkJIAoJfSBTeXNQa3RGbGFzaFdyaXRlVHlwZTsKdHlwZWRlZiBTeXNQa3RGbGFzaFdyaXRlVHlw
ZSAqU3lzUGt0Rmxhc2hXcml0ZVB0cjsKCgogCiAKIAogCiAKIAp0eXBlZGVmIHN0cnVjdCBzeXNQ
a3RFeGVjRmxhc2hUeXBlIHsKCVVJbnQ4CWNvbW1hbmQ7CVVJbnQ4CV9maWxsZXIgOwkJCQkJCQkJ
IAoJVUludDE2CQludW1CeXRlczsJCQkJCQkJIAoJVUludDMyCQlmbGFzaEJhc2U7CQkJCQkJCSAK
CVVJbnQzMgkJc3JjQWRkcjsJCQkJCQkJCSAKCVVJbnQzMgkJZHN0QWRkcjsJCQkJCQkJCSAKCVVJ
bnQzMgkJY29kZUFkZHI7CQkJCQkJCSAKCVVJbnQxNgkJZmxhc2hSZXNJRDsJCQkJCQkJIAoJVUlu
dDgJCQltYW51ZjsJCQkJCQkJCSAKCVVJbnQ4CQkJZGV2aWNlOwkJCQkJCQkJIAoJVUludDgJCQlk
ZXZJbmZvOwkJCQkJCQkJIAoJVUludDgJCQlyZW1vdGVDbWQ7CQkJCQkJCSAKCVVJbnQ4CQkJcmVz
cG9uc2U7CQkJCQkJCSAKCVVJbnQ4CQkJc3BhcmVCeXRlOwkJCQkJCQkgCglVSW50MzIJCXNwYXJl
RFdvcmQ7CQkJCQkJCSAKCX0gc3lzUGt0RXhlY0ZsYXNoVHlwZTsKdHlwZWRlZiBzeXNQa3RFeGVj
Rmxhc2hUeXBlICpzeXNQa3RFeGVjRmxhc2hQdHI7CgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKIAog
CiAKIAogCnR5cGVkZWYgc3RydWN0IFN5c1BrdEdldFRyYXBCcmVha3NDbWRUeXBlIHsKCVVJbnQ4
CWNvbW1hbmQ7CVVJbnQ4CV9maWxsZXIgOwkJCQkJCQkJIAoJfSBTeXNQa3RHZXRUcmFwQnJlYWtz
Q21kVHlwZTsKdHlwZWRlZiBTeXNQa3RHZXRUcmFwQnJlYWtzQ21kVHlwZSoJU3lzUGt0R2V0VHJh
cEJyZWFrc0NtZFB0cjsKCnR5cGVkZWYgc3RydWN0IFN5c1BrdEdldFRyYXBCcmVha3NSc3BUeXBl
IHsKCVVJbnQ4CWNvbW1hbmQ7CVVJbnQ4CV9maWxsZXIgOwkJCQkJCQkJIAoJIAoJfSBTeXNQa3RH
ZXRUcmFwQnJlYWtzUnNwVHlwZTsKdHlwZWRlZiBTeXNQa3RHZXRUcmFwQnJlYWtzUnNwVHlwZSoJ
U3lzUGt0R2V0VHJhcEJyZWFrc1JzcFB0cjsKCgogCiAKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgU3lz
UGt0U2V0VHJhcEJyZWFrc0NtZFR5cGUgewoJVUludDgJY29tbWFuZDsJVUludDgJX2ZpbGxlciA7
CQkJCQkJCQkgCgkgCgl9IFN5c1BrdFNldFRyYXBCcmVha3NDbWRUeXBlOwp0eXBlZGVmIFN5c1Br
dFNldFRyYXBCcmVha3NDbWRUeXBlKglTeXNQa3RTZXRUcmFwQnJlYWtzQ21kUHRyOwoKdHlwZWRl
ZiBzdHJ1Y3QgU3lzUGt0U2V0VHJhcEJyZWFrc1JzcFR5cGUgewoJVUludDgJY29tbWFuZDsJVUlu
dDgJX2ZpbGxlciA7CQkJCQkJCQkgCgl9IFN5c1BrdFNldFRyYXBCcmVha3NSc3BUeXBlOwp0eXBl
ZGVmIFN5c1BrdFNldFRyYXBCcmVha3NSc3BUeXBlKglTeXNQa3RTZXRUcmFwQnJlYWtzUnNwUHRy
OwoKCgogCiAKIAogCiAKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgU3lzUGt0R2V0VHJhcENvbmRpdGlv
bnNDbWRUeXBlIHsKCVVJbnQ4CWNvbW1hbmQ7CVVJbnQ4CV9maWxsZXIgOwkJCQkJCQkJIAoJfSBT
eXNQa3RHZXRUcmFwQ29uZGl0aW9uc0NtZFR5cGU7CnR5cGVkZWYgU3lzUGt0R2V0VHJhcENvbmRp
dGlvbnNDbWRUeXBlKglTeXNQa3RHZXRUcmFwQ29uZGl0aW9uc0NtZFB0cjsKCnR5cGVkZWYgc3Ry
dWN0IFN5c1BrdEdldFRyYXBDb25kaXRpb25zUnNwVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50
OAlfZmlsbGVyIDsJCQkJCQkJCSAKCSAKCX0gU3lzUGt0R2V0VHJhcENvbmRpdGlvbnNSc3BUeXBl
Owp0eXBlZGVmIFN5c1BrdEdldFRyYXBDb25kaXRpb25zUnNwVHlwZSoJU3lzUGt0R2V0VHJhcENv
bmRpdGlvbnNSc3BQdHI7CgoKIAogCiAKIAogCiAKIAogCnR5cGVkZWYgc3RydWN0IFN5c1BrdFNl
dFRyYXBDb25kaXRpb25zQ21kVHlwZSB7CglVSW50OAljb21tYW5kOwlVSW50OAlfZmlsbGVyIDsJ
CQkJCQkJCSAKCSAKCX0gU3lzUGt0U2V0VHJhcENvbmRpdGlvbnNDbWRUeXBlOwp0eXBlZGVmIFN5
c1BrdFNldFRyYXBDb25kaXRpb25zQ21kVHlwZSoJU3lzUGt0U2V0VHJhcENvbmRpdGlvbnNDbWRQ
dHI7Cgp0eXBlZGVmIHN0cnVjdCBTeXNQa3RTZXRUcmFwQ29uZGl0aW9uc1JzcFR5cGUgewoJVUlu
dDgJY29tbWFuZDsJVUludDgJX2ZpbGxlciA7CQkJCQkJCQkgCgl9IFN5c1BrdFNldFRyYXBDb25k
aXRpb25zUnNwVHlwZTsKdHlwZWRlZiBTeXNQa3RTZXRUcmFwQ29uZGl0aW9uc1JzcFR5cGUqCVN5
c1BrdFNldFRyYXBDb25kaXRpb25zUnNwUHRyOwoKCgoKCiAKIAogCiAKIAogCgoKCgogCgoKc3Ry
dWN0IERiZ0dsb2JhbHNUeXBlIHsKCSAKCU02OEtSZWdzVHlwZQlyZWc7CgkKCSAKCUJvb2xlYW4J
CQlyb21CUDsKCUJvb2xlYW4JCQlzdGVwT3ZlckJQOwkJCQkJCQkgCglCcmVha3BvaW50VHlwZQli
cFsoNSAgKzEpIF07CglVSW50MTYJCQlicE9wY29kZVsoNSAgKzEpIF07CgkKCSAKCVVJbnQxNgkJ
CXRyYXBCcmVha1s1IF07CglVSW50MTYJCQl0cmFwUGFyYW1bNSBdOwoJVUludDMyCQkJb2xkRGlz
cGF0Y2hlcjsJCQkJCQkgCglCb29sZWFuCQkJYnJlYWtpbmdPbkFUcmFwOwkJCQkJIAoJCgkgCglC
b29sZWFuCQkJaWdub3JlRGJnQnJlYWtzOwkJCQkJIAoJQm9vbGVhbgkJCWNvbW1PcGVuZWQ7CQkJ
CQkJCSAKCQkJCQkJCQkJCQkJCQkJCSAKCQoJIAoJQm9vbGVhbgkJCXN0ZXBTcHk7CQkJCQkJCQkg
CglVSW50MzIJCQlzc0FkZHI7CQkJCQkJCQkgCglVSW50MzIJCQlzc1ZhbHVlOwkJCQkJCQkJIAoJ
CgkgCglVSW50MTYJCQlleGNUeXBlOwkJCQkJCQkJIAoJVUludDgJCQkJcmVFbnRlcmVkOwkJCQkJ
CQkgCglVSW50OAkJCQlmaXJzdEVudHJhbmNlOwkJCQkJCSAKCgkgCglVSW50OAkJCQlzZXJHbG9i
YWxzWzY0IF07CSAKCQoJIAoJVUludDMyCQkJYnVzRXJyU3RhY2tbMl07CQkJCQkgCgkKCSAKCVVJ
bnQ4CQkJCXN0YWNrWzB4MDM4MCBdOwkJCQkgCglVSW50MTYJCQlzdGFja0VuZDsJCQkJCQkJIAoJ
Cgl9OwoJCnR5cGVkZWYgc3RydWN0IERiZ0dsb2JhbHNUeXBlIERiZ0dsb2JhbHNUeXBlOwoJCnR5
cGVkZWYgRGJnR2xvYmFsc1R5cGUqCQlEYmdHbG9iYWxzUHRyOwoKCgoKCiMgMTY0ICIuLi9TcmNT
aGFyZWQvUGFsbS5oIiAyCgoJCiMgMSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vQ29yZS9T
eXN0ZW0vSW5jc1Bydi9TeXN0ZW1QcnYuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9Db3JlL1N5c3Rl
bS9JbmNzUHJ2L0dsb2JhbHMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAKIAogCiAKCiAKIAoKCgoKIAoKCnR5cGVkZWYgc3RydWN0IEZpeGVkR2xvYmFsc1R5cGUg
ewoKCSAKCVVJbnQ4CQkJCQkJbWVtQ2FyZFNsb3RzOwkJCQkJCQkgCglVSW50OAkJCQkJCWRiZ1dh
c0VudGVyZWQ7CQkJCQkJCSAKCXZvaWQgKgkJCQkJbWVtQ2FyZEluZm9QOwkJCQkJCQkgCglVSW50
MzIJCQkJCW1lbVNlbWFwaG9yZUlEOwkJCQkJCSAKCVVJbnQxNgkJCQkJbWVtRGVidWdNb2RlOwkJ
CQkJCQkgCgoJIAoJdm9pZCAqCQkJCQlkbU9wZW5MaXN0OwkJCQkJCQkJIAoJCgkgCglVSW50OAkJ
CQkJCWRiZ0luRGVidWdnZXI7CQkJCQkJCSAKCVVJbnQ4CQkJCQkJZGJnVHJhY2luZzsJCQkJCQkJ
CSAKCXZvaWQgKgkJCQkJZGJnR2xvYmFsc1A7CQkJCQkJCSAKCXZvaWQgKgkJCQkJZGJnU2VyR2xv
YmFsc1A7CQkJCQkJIAoJCgkKCSAKCXZvaWQgKgkJCQkJc3lzQXBwSW5mb1A7CQkJCQkJCSAKCXZv
aWQgKgkJCQkJc3lzS2VybmVsRGF0YVA7CQkJCQkJIAoJdm9pZCAqKgkJCQkJc3lzRGlzcGF0Y2hU
YWJsZVA7CQkJCQkgCglVSW50MzIJCQkJCXN5c093bmVySURzSW5Vc2U7CQkJCQkJIAoJdm9pZCAq
CQkJCQlzeXNBTVhBcHBJbmZvUDsJCQkJCQkgCglVSW50MzIJCQkJCXN5c0Nsb2NrRnJlcTsJCQkJ
CQkJIAoJVUludDMyICoJCQkJCXN5c0hhcmRLZXlDcmVhdG9yczsJCQkJCSAKCglJbnQxNgkJCQkJ
CXN5c0JhdHRlcnlDaGVja1RpbWVyOwkJCQkgCglVSW50OAkJCQkJCXN5c0JhdHRlcnlNaW5UaHJl
c2hvbGQ7CQkJCSAKCVVJbnQ4CQkJCQkJaHdyQmF0dGVyeUxldmVsOwkJCQkJCSAKCUludDE2CQkJ
CQkJc3lzTmV4dEJhdHRlcnlBbGVydFRpbWVyOwkJCSAKCVVJbnQ4CQkJCQkJc3lzQmF0dGVyeVdh
cm5UaHJlc2hvbGQ7CQkJIAoKCVVJbnQ4CQkJCQkJc3lzRGlzcGF0Y2hUYWJsZVJldjsJCQkJCSAK
CQkJCQkJCQkJCQkJCQkJCQkJCSAKCVVJbnQxNgkJCQkJc3lzRGlzcGF0Y2hUYWJsZVNpemU7CQkJ
CSAKCXZvaWQgKgkJCQkJc3lzTGliVGFibGVQOwkJCQkJCQkgCglVSW50MTYJCQkJCXN5c0xpYlRh
YmxlRW50cmllczsJCQkJCSAKCXZvaWQgKgkJCQkJc3lzQ29uc29sZVN0YWNrQ2h1bmtQOwkJCQkg
Cgl2b2lkICoJCQkJCXN5c1VJU2hlbGxBcHBJbmZvUDsJCQkJCSAKCQoJVUludDMyCQkJCQlzeXNU
aW1lcklEOwkJCQkJCQkJIAoJVUludDMyCQkJCQlzeXNBdXRvT2ZmRXZ0VGlja3M7CQkJCQkgCglV
SW50MTYJCQkJCXN5c0F1dG9PZmZTZWNvbmRzOwkJCQkJIAoJCglJbnQzMgkJCQkJCXN5c1JhbmRv
bVNlZWQ7CQkJCQkJCSAKCQoJCgkKCSAKCXZvaWQgKgkJCQkJc2xrR2xvYmFsc1A7CQkJCQkJCSAK
CXZvaWQgKgkJCQkJc2VyR2xvYmFsc1A7CQkJCQkJCSAKCXZvaWQgKgkJCQkJc2NyR2xvYmFsc1A7
CQkJCQkJCSAKCXZvaWQgKgkJCQkJZnBsR2xvYmFsc1A7CQkJCQkJCSAKCXZvaWQgKgkJCQkJcGVu
R2xvYmFsc1A7CQkJCQkJCSAKCXZvaWQgKgkJCQkJc3lzRXZ0TWdyR2xvYmFsc1A7CQkJCQkgCgl2
b2lkICoJCQkJCXNuZEdsb2JhbHNQOwkJCQkJCQkgCgl2b2lkICoJCQkJCXRpbUdsb2JhbHNQOwkJ
CQkJCQkgCgl2b2lkICoJCQkJCWFsbUdsb2JhbHNQOwkJCQkJCQkgCgl2b2lkICoJCQkJCWZ0ckds
b2JhbHNQOwkJCQkJCQkgCgl2b2lkICoJCQkJCWdyZkdsb2JhbHNQOwkJCQkJCQkgCgl2b2lkICoJ
CQkJCWtleUdsb2JhbHNQOwkJCQkJCQkgCgkKCSAKCVVJbnQ4CQkJCQkJdWlHbG9iYWxzWzB4QjAg
XTsJIAoJdm9pZCAqCQkJCQl1aUV4dGVuc2lvbnNQOwkJCQkJCQkgCgoKCSAKCgl2b2lkICoJCQkJ
CWN1clVJQXBwSW5mb1A7CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkJCSAKCgoKCglVSW50MzIJ
CQkJCW5leHRVSUFwcERCSUQ7CQkJCQkJCSAKCVVJbnQxNgkJCQkJbmV4dFVJQXBwQ21kOwkJCQkJ
CQkgCgl2b2lkICoJCQkJCW5leHRVSUFwcENtZFBCUDsJCQkJCQkgCglVSW50OAkJCQkJCW5leHRV
SUFwcENhcmRObzsJCQkJCQkgCgkKCQoJIAoJSW50OAkJCQkJCW1lbURhdGFXRUxldmVsOwkJCQkJ
CSAKCVVJbnQxNgkJCQkJaHdyV2FrZVVwOwkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCQkJIAoJ
VUludDgJCQkJCQlod3JDUFVEdXR5Q3ljbGU7CQkJCQkJIAoJVUludDgJCQkJCQlod3JQZW5Eb3du
OwkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCQkJIAoJVUludDMyCQkJCQlod3JDdXJUaWNrczsJ
CQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCQkJIAoJVUludDMyCQkJCQlod3JUb3RhbFJBTVNpemU7
CQkJCQkJIAoJVUludDMyCQkJCQlod3JEb3plU3ViVGlja3M7CQkJCQkJIAoJCQkJCQkJCQkJCQkJ
CQkJCQkJIAoJCgkgCgkgCgkgCglVSW50MzIJCQkJCXNuZE9mZlRpY2tzOwkJCQkJCQkgCgoJIAoJ
VUludDgJCQkJCQlzeXNSZXNldEZsYWdzOwkJCQkJCQkgCglVSW50OAkJCQkJCXN5c0JhdHRlcnlL
aW5kOwkJCQkJCSAKCgkgCglVSW50MzIJCQkJCW1lbU1pbkR5bkhlYXBGcmVlOwkJCQkJIAoJCgkK
CSAKCVVJbnQxNgkJCQkJc3lzUHJlZkZsYWdzOwkJCQkJCQkgCgkKCQoJIAoJdm9pZCAqCQkJCQlz
eXNHbG9iYWxzUDsJCQkJCQkJIAoJCgkgCglVSW50MTYJCQkJCXN5c01pc2NGbGFnczsJCQkJCQkJ
IAoJCgkKCSAKCSAKCSAKCVVJbnQxNgkJCQkJc3lzTGliTmV0OwkJCQkJCQkJIAoJdm9pZCAqCQkJ
CQluZXRQa3RGcmVlUTsJCQkJCQkJIAoJCgoJIAoJIAoJVUludDMyCQkJCQlzeXNFdkdyb3VwSUQ7
CQkJCQkJCSAKCQoJCgl2b2lkICoJCQkJCWlycTNHbG9iYWxzUDsJCQkJCQkJIAoJCgkgCgkgCgkg
CglVSW50MzIJCQkJCXN5c0xhc3RCYXR0ZXJ5V2FybmluZzsJCQkJIAoJCgkgCgkgCglVSW50MzIJ
CQkJCXN5c0xvd01lbUNoZWNrc3VtOwkJCQkJIAoKCSAKCSAKCVVJbnQxNgkJCQkJaHdySGFyZHdh
cmVSZXY7CQkJCQkJIAoJCgkKCSAKCU1lbUhhbmRsZQkJCQlkbVByb3RlY3RMaXN0SDsJCQkJCQkg
CgkJCQkJCQkJCQkJCQkJCQkJCQkgCgkgCglVSW50MTYJCQkJCWh3ck1pc2NGbGFnczsJCQkJCQkJ
IAoJCgkgCglVSW50MzIJCQkJCXN5c1Byb2ZpbGVSZWZjb247CQkJCQkJIAoJdm9pZCAqCQkJCQlz
eXNQcm9maWxlUHJvY1A7CQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkJCQkJIAoKCSAKCSAKCSAKCSAK
CVVJbnQzMgkJCQkJCWZscFNvZnRGUFNDUjsKCgoJIAoJIAoJIAoJdm9pZCAqCQkJCQlpckxpYkds
b2JhbHNQOwkJCQkJCQkgCglVSW50MTYJCQkJCWV4Z0FjdGl2ZUxpYjsJCQkJCQkJIAoKCVVJbnQx
NgkJCQkJdWlCdXN5Q291bnQ7CQkJCQkJCSAKCQoJdm9pZCAqCQkJCQlpcnExR2xvYmFsc1A7CQkJ
CQkJCSAKCXZvaWQgKgkJCQkJaXJxMkdsb2JhbHNQOwkJCQkJCQkgCgl2b2lkICoJCQkJCWlycTZH
bG9iYWxzUDsJCQkJCQkJIAoKCgkgCgkgCgkgCgoJIAoJdm9pZCAqCQkJCQlpbnRsTWdyR2xvYmFs
c1A7CQkJCQkJIAoKCSAKCVVJbnQxNgkJCQkJaW5saW5lU3RhcnQ7CQkJCQkJCSAKCVVJbnQxNgkJ
CQkJaW5saW5lRW5kOwkJCQkJCQkJIAoJQm9vbGVhbgkJCQkJaW5saW5lQWN0aXZlOwkJCQkJCQkg
CglVSW50OAkJCQkJCWlubGluZURlZlRlcm07CQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCQkJCSAK
CXZvaWQgKgkJCQkJdHNtRmVwTGliU3RhdHVzUDsJCQkJCQkgCglVSW50MTYJCQkJCXRzbUZlcExp
YlJlZk51bTsJCQkJCQkgCglVSW50MTYJCQkJCWlubGluZUhpZ2hsaWdodExlbjsJCQkJCSAKCgkg
Cgl2b2lkICoJCQkJCXN5c0JhdHRlcnlEYXRhUDsJCQkJCQkgCgl2b2lkICoJCQkJCXN5c0JhdHRl
cnlWYWxpZEtpbmRzUDsJCQkJIAoKCSAKCUJvb2xlYW4JCQkJCXN5c0luU2h1dGRvd247CQkJCQkJ
CSAKCVVJbnQ4CQkJCQkJc3lzTWluV2FrZXVwVGhyZXNob2xkOwkJCQkgCgoJIAoJVUludDMyCQkJ
CQlod3JNaXNjRmxhZ3NFeHQ7CQkJCQkJIAoJCgkgCglCb29sZWFuCQkJCQlzeXNVc2VDcml0V2Fy
blRpbWVyOwoJQm9vbGVhbgkJCQkJc3lzQ3JpdFdhcm5UaW1lclJ1bm5pbmc7CglJbnQxNgkJCQkJ
CXN5c0NyaXRXYXJuUlRDRGF5U3RhcnRlZDsKCUludDMyCQkJCQkJc3lzQ3JpdFdhcm5UaWNrVGlt
ZXI7CglVSW50MzIJCQkJCXN5c0NyaXRXYXJuTGFzdFRpY2s7CglCb29sZWFuCQkJCQlzeXNDaGFy
Z2luZzsKCUJvb2xlYW4JCQkJCXN5c1VwZGF0ZVZvbHRhZ2VMZXZlbDsKCgkgCglNZW1IYW5kbGUJ
CQkJbm90aWZ5R2xvYmFsc0g7CQkJIAoJCgkgCglVSW50MzIJCQkJCXN5c1Jlc2VydmVkMzFEV29y
ZDE7CglVSW50MzIJCQkJCXN5c1Jlc2VydmVkMzFEV29yZDI7CglVSW50MzIJCQkJCXN5c1Jlc2Vy
dmVkMzFEV29yZDM7CglVSW50MzIJCQkJCXN5c1Jlc2VydmVkMzFEV29yZDQ7CgoKCSAKCSAKCSAK
CgkgCgl2b2lkICoJCQkJCXJhbUdsb2JhbHNQOwkJCQkJCQkgCgkKCSAKCXZvaWQgKgkJCQkJaHdy
QmF0dGVyeUdsb2JhbHNQOwkJCQkJIAoKCSAKCVVJbnQ4CQkJCQkJaHdyQmF0dGVyeVBlcmNlbnQ7
CgoJIAoJIAoJVUludDgJCQkJCQljb21tQWN0aXZpdHlGbGFnczsKCQoJIAoJIAoJdm9pZCAqCQkJ
CQl1YXJ0MzI4R2xvYmFsc1A7CgkKCQoJIAoJVUludDMyCQkJCQlzeXNPRU1HbG9iYWwxOwkJCQkg
CglVSW50MzIJCQkJCXN5c09FTUdsb2JhbDI7CQkJCSAKCQoJIAoJIAoJIAoJVUludDE2CQkJCQlo
d3JCYXR0ZXJ5U3RlcHNQZXJWb2x0OwoJCgkgCgkgCgkgCgkgCgkgCgkgCgl2b2lkICoJCQkJCXN5
c1BlbmRpbmdTdGFja0ZyZWVzOwoKCgkgCgkgCgkgCgoJIAoJVUludDE2CQkJCQlzeXNEYXlDb3Vu
dGVyOwoJCgkgCgkgCglJbnQxNgkJCQkJCXN5c0JhdHRlcnlDaGVja1BlcmlvZDsKCQoJIAoJVUlu
dDE2CQkJCQlod3JKZXJyeVBsZFNoYWRvdzsKCgkgCgl2b2lkICoJCQkJCXJhZGlvR2xvYmFsc1A7
CgoKCSAKCSAKCSAKCgkgCgl2b2lkICoJCQkJCWZhdGFsQWxlcnRUZW1wbGF0ZVA7CglVSW50MTYJ
CQkJCWZhdGFsQWxlcnRCdG5XaWR0aDsKCQoJIAoJdm9pZCAqCQkJCQlzaWxrc2NyZWVuSW5mb1A7
CgoJIAoJVUludDE2CQkJCQlpbmxpbmVEZWZDaGVja3N1bTsKCXZvaWQgKgkJCQkJaW5saW5lRGVm
RmllbGQ7CgkKCSAKCUJvb2xlYW4JCQkJCW5vdGlmeUJyb2FkY2FzdFBlbmRpbmc7CgkKCVVJbnQ4
CQkJCQkJc3lzUmVzZXJ2ZWQzNUJ5dGUxOwoKCSAKCVVJbnQzMgkJCQkJaHdyT0VNQ29tcGFueUlE
OwoJVUludDMyCQkJCQlod3JPRU1EZXZpY2VJRDsKCVVJbnQzMgkJCQkJaHdyT0VNSEFMSUQ7CgoJ
IAoJdm9pZCAqCQkJCQlzeXNVcGRhdGVHbG9iYWxzUDsKCQoJIAoJVUludDE2CQkJCQlzbWFsbFJP
TUNoZWNrc3VtOwoJCgkgCgkgCgkgCgkgCgoJfSBGaXhlZEdsb2JhbHNUeXBlOwoJCgkJCiAKCgoK
CgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgTG93TWVtSGRyVHlwZSB7CgkgCgkgCgkgCglNNjhL
RXhjVGFibGVUeXBlCQl2ZWN0b3JzOwkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCSAKCQoJIAoJIAoJ
IAoJRml4ZWRHbG9iYWxzVHlwZQkJZ2xvYmFsczsJCQkJCQkgCgkKCX0gTG93TWVtSGRyVHlwZTsK
CgoKCgoKCQoJCWV4dGVybiAiQyIJdm9pZCAqUGlsb3RHbG9iYWxzUDsJCQkJCQkgCgkKCgoKCgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDQyICIuLi9TcmNT
aGFyZWQvUGFsbS9QbGF0Zm9ybS9Db3JlL1N5c3RlbS9JbmNzUHJ2L1N5c3RlbVBydi5oIiAyCgoK
CgogCgoKCgoKCiAKIAogCiAKIAogCiAKCgoKCgoKCgoKIAogCiAKIAogCgoKCgogCgoKCgogCiAK
CgoKIAogCiAKCgoKIAogCgoKCiAKCgoKCnR5cGVkZWYgc3RydWN0IFN5c0FwcFByZWZzIHsKCVVJ
bnQxNglwcmlvcml0eTsJCQkJCSAKCVVJbnQzMglzdGFja1NpemU7CQkJCQkgCglVSW50MzIJbWlu
SGVhcFNwYWNlOwkJCQkgCgl9IFN5c0FwcFByZWZzVHlwZTsKdHlwZWRlZiBTeXNBcHBQcmVmc1R5
cGUgKlN5c0FwcFByZWZzUHRyOwoKCiAKIAoKCiAKCgoKCgoKCgogCgoKdHlwZWRlZiBzdHJ1Y3Qg
U3lzRXh0UHJlZnNUeXBlIHsKCVVJbnQxNgl2ZXJzaW9uOwkJCQkJCSAKCVVJbnQzMglmbGFnczsJ
CQkJCQkgCgl9IFN5c0V4dFByZWZzVHlwZTsKCiAKCgoKCgp0eXBlZGVmIHN0cnVjdCBTeXNUQ0JV
c2VySW5mb1R5cGUgewoJU3lzQXBwSW5mb1B0cgl0bXBBcHBJbmZvUDsJCQkJIAoJU3lzQXBwSW5m
b1B0cglyb290QXBwSW5mb1A7CQkJCSAKCVVJbnQzMgkJCWluaXRpYWxBNTsJCQkJCSAKCX0gU3lz
VENCVXNlckluZm9UeXBlOwp0eXBlZGVmIFN5c1RDQlVzZXJJbmZvVHlwZSAqU3lzVENCVXNlcklu
Zm9QdHI7CgoKIAoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgU3lzRXhpdGluZ1Rhc2tJbmZvVHlwZSB7
CglVSW50MzIgKgkJCXN0YWNrSW5Vc2VCeVA7CQkJCSAKCX0gU3lzRXhpdGluZ1Rhc2tJbmZvVHlw
ZTsKdHlwZWRlZiBTeXNFeGl0aW5nVGFza0luZm9UeXBlICpTeXNFeGl0aW5nVGFza0luZm9QdHI7
CgoKIAogCiAKCiAKdHlwZWRlZiBlbnVtCSB7CglzeXNLZXJuZWxJbmZvU2VsQ3VyVGFza0luZm8s
CglzeXNLZXJuZWxJbmZvU2VsVGFza0luZm8sCglzeXNLZXJuZWxJbmZvU2VsU2VtYXBob3JlSW5m
bywKCXN5c0tlcm5lbEluZm9TZWxUaW1lckluZm8KCX0gU3lzS2VybmVsSW5mb1NlbGVjdG9yOwoK
dHlwZWRlZiBzdHJ1Y3QgU3lzS2VybmVsSW5mb1R5cGUgewogCglVSW50OAlzZWxlY3RvcjsJCSAK
CVVJbnQ4IAkJCQkJCXJlc2VydmVkOwoJVUludDMyCQkJCQkJaWQ7CQkJCSAKCQoJdW5pb24gewoJ
CXN0cnVjdCB7CgkJCVVJbnQzMglpZDsJCQkJCQkJIAoJCQlVSW50MzIJbmV4dElEOwkJCQkJCSAK
CQkJCgkJCVVJbnQzMgl0YWc7CQkJCQkJCSAKCQkJVUludDMyCXN0YXR1czsJCQkJCQkgCgkJCVVJ
bnQzMgl0aW1lcjsJCQkJCQkgCgkJCVVJbnQzMgl0aW1lU2xpY2U7CQkJCQkgCgkJCUludDE2CQlw
cmlvcml0eTsJCQkJCSAKCQkJVUludDE2CWF0dHJpYnV0ZXM7CQkJCQkgCgkJCUludDE2CQlwZW5k
aW5nQ2FsbHM7CQkJCSAKCQkJVUludDMyCXNlbmRlclRhc2tJRDsJCQkJIAoJCQlVSW50MzIJbXNn
RXhjaGFuZ2VJRDsJCQkJIAoJCQkKCQkJVUludDMyCXRjYlA7CQkJCQkJCSAKCQkJVUludDMyCXN0
YWNrUDsJCQkJCQkgCgkJCVVJbnQzMglzdGFja1N0YXJ0OwkJCQkJIAoJCQlVSW50MzIJc3RhY2tT
aXplOwkJCQkJIAoJCQl9IHRhc2s7CgoJCXN0cnVjdCB7CgkJCVVJbnQzMglpZDsKCQkJVUludDMy
CW5leHRJRDsJCQkJCQkgCgoJCQlVSW50MzIJdGFnOwkJCQkJCQkgCgkJCUludDE2CQlpbml0VmFs
dWU7CQkJCQkgCgkJCQkJCQkJCQkJCQkJIAoJCQlJbnQxNgkJY3VyVmFsdWU7CQkJCQkgCgkJCQkJ
CQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkgCgkJCUludDE2CQluZXN0
TGV2ZWw7CQkJCQkgCgkJCVVJbnQzMglvd25lcklEOwkJCQkJCSAKCQkJCQkJCQkJCQkJCQkgCgkJ
CX0gc2VtYXBob3JlOwoJCQkKCQlzdHJ1Y3QgewoJCQlVSW50MzIJaWQ7CgkJCVVJbnQzMgluZXh0
SUQ7CQkJCQkJIAoJCQkKCQkJVUludDMyCXRhZzsJCQkJCQkJIAoJCQlVSW50MzIJdGlja3NMZWZ0
OwkJCQkJIAoJCQlVSW50MzIJcGVyaW9kOwkJCQkJCSAKCQkJVUludDMyCXByb2M7CQkJCQkJCSAK
CQkJfSB0aW1lcjsKCQl9IHBhcmFtOwoJCQoJfSBTeXNLZXJuZWxJbmZvVHlwZTsKCQoJCnR5cGVk
ZWYgU3lzS2VybmVsSW5mb1R5cGUqCVN5c0tlcm5lbEluZm9QdHI7CgoKCgogCiAKIAoKCgoKCiAK
CgoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCiAKCgoKCgoKIAp0eXBlZGVmIHN0cnVjdCBTeXNOVlBh
cmFtc1R5cGUgewoJVUludDMyCXJ0Y0hvdXJzOwkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCSAK
CQkJCQkJCQkJCQkJCQkJCSAKCVVJbnQzMglydGNIb3VyTWluU2VjQ29weTsJCQkJCQkgCgkJCQkJ
CQkJCQkJCQkJCQkgCglVSW50OAkJc3dyTENEQ29udHJhc3RWYWx1ZTsJCQkJCQkgCgkJCQkJCQkJ
CQkJCQkJCQkgCglVSW50OCAJc3dyTENEQnJpZ2h0bmVzc1ZhbHVlOwkJCQkJIAoJCgkgCgkgCgl2
b2lkKgkJc3BsYXNoU2NyZWVuUHRyOwkJCQkJCQkgCgl2b2lkKgkJaGFyZFJlc2V0U2NyZWVuUHRy
OwkJCQkJCSAKCVVJbnQxNglsb2NhbGVMYW5ndWFnZTsJCQkJCQkJIAoJVUludDE2CWxvY2FsZUNv
dW50cnk7CQkJCQkJCQkgCgkKCSAKCSAKCVVJbnQzMglzeXNOVk9FTVN0b3JhZ2UxOwkJCQkJCQkg
CglVSW50MzIJc3lzTlZPRU1TdG9yYWdlMjsJCQkJCQkJIAoKCX0gU3lzTlZQYXJhbXNUeXBlOwp0
eXBlZGVmIFN5c05WUGFyYW1zVHlwZSAqU3lzTlZQYXJhbXNQdHI7CgoKCiAKCgoKCgogCgoKCgoK
CgogCgoKCgoKCgkJCQkJCQkJCQkJCQkJCQkgCgoKIAogCiAKIAoKCgoKIAoKCgoKCgoKCgoKCgoK
CiAKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9Db3JlL1N5c3RlbS9JbmNzUHJ2L1Nl
cmlhbExpbmtQcnYuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCgoKCgoKIAoK
CgoKCgoKCgoKIAogCiAKIAp0eXBlZGVmIHN0cnVjdCBTbGtSZWZJbmZvVHlwZSB7CglVSW50MTYJ
cmVmTnVtOwkJCQkJCQkJCSAKCUludDgJCWRlc3RJRDsJCQkJCQkJCQkgCglVSW50OCAJCXBhZGRp
bmc7Cgl9IFNsa1JlZkluZm9UeXBlOwp0eXBlZGVmIFNsa1JlZkluZm9UeXBlICpTbGtSZWZJbmZv
UHRyOwkKCnR5cGVkZWYgc3RydWN0IFNsa0dsb2JhbHNUeXBlIHsKCVVJbnQxNgkJCQkJb3BlbkNv
dW50OwoJCglVSW50MTYJCQkJCXNvY2tldFJlZk51bVs2IF07CglCb29sZWFuCQkJCQlzb2NrZXRP
cGVuWzYgXTsKCVNsa1NvY2tldExpc3RlblB0cglzb2NrZXRMaXN0ZW5QWzYgXTsKCVVJbnQxNgkJ
CQkJc29ja2V0VGltZW91dFs2IF07CQkgCgkKCQoJIAoJIAoJIAoJU2xrUmVmSW5mb1R5cGUJCQly
ZWZJbmZvWzYgIF07CgkKCVVJbnQ4CQkJCQkJdHJhbnNJZDsJCQkJCSAKCVVJbnQ4IAkJCQkJcGFk
ZGluZzsKCVVJbnQzMgkJCQkJeG1pdFNlbWFwaG9yZUlEOwkJIAoJVUludDE2CQkJCQludW1SZWNl
aXZlZDsJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCSAKCSAKCSAKCUJvb2xlYW4JCQkJCXNvY2tldFdh
bnRzQnVmZmVyaW5nWzYgXTsKCglVSW50OAkJCQkJCSpzZW5kQnVmZmVyUDsJCQkJIAoJVUludDE2
CQkJCQlzZW5kQnVmZmVyU2l6ZTsJCQkgCgkKCX0gU2xrR2xvYmFsc1R5cGU7Cgp0eXBlZGVmIFNs
a0dsb2JhbHNUeXBlKglTbGtHbG9iYWxzUHRyOwoKCgkKCgoKIyAzNDkgIi4uL1NyY1NoYXJlZC9Q
YWxtL1BsYXRmb3JtL0NvcmUvU3lzdGVtL0luY3NQcnYvU3lzdGVtUHJ2LmgiIDIKCiMgMSAiLi4v
U3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vQ29yZS9TeXN0ZW0vSW5jc1Bydi9NZW1vcnlQcnYuaCIg
MQogCgoKCgoKCgoKCgoKCgoKCgoKIAogCgoKCgoKCgoKIAoKCgogCgoKCgoKIAoKCgoKCgogCgoK
CgoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNgkJbnVtRW50cmllczsJCQkJIAoJVUludDMyCQlu
ZXh0VGJsT2Zmc2V0OwkJCSAKCSAKCX0gTWVtTXN0clB0clRhYmxlVHlwZTsKdHlwZWRlZiBNZW1N
c3RyUHRyVGFibGVUeXBlKglNZW1Nc3RyUHRyVGFibGVQdHI7CgoKIAoKCgoKdHlwZWRlZiBzdHJ1
Y3QgewoJVUludDE2CQludW1FbnRyaWVzOwkJCQkgCglVSW50MTYJCW5leHRUYmxPZmZzZXQ7CQkJ
IAoJIAoJfSBNZW0xTXN0clB0clRhYmxlVHlwZTsKdHlwZWRlZiBNZW0xTXN0clB0clRhYmxlVHlw
ZSoJTWVtMU1zdHJQdHJUYWJsZVB0cjsKCgoKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoJVUludDMy
CWZyZWUJCQk6MTsJCQkJIAoJVUludDMyCW1vdmVkCQkJOjE7CQkJCSAKCVVJbnQzMgl1bnVzZWQy
CQk6MTsJCQkJIAoJVUludDMyCXVudXNlZDMJCToxOwkJCQkgCglVSW50MzIJc2l6ZUFkagkJOjQ7
CQkJCSAKCVVJbnQzMglzaXplCQkJOjI0OwkJCQkgCgkKCVVJbnQzMglsb2NrQ291bnQJOjQ7CQkJ
CSAKCVVJbnQzMglvd25lcgkJCTo0OwkJCQkgCglJbnQzMgkJaE9mZnNldAkJOjI0OwkJCQkgCgkJ
CQkJCQkJCQkJCQkgCgl9IE1lbUNodW5rSGVhZGVyVHlwZTsKCiMgMTE3ICIuLi9TcmNTaGFyZWQv
UGFsbS9QbGF0Zm9ybS9Db3JlL1N5c3RlbS9JbmNzUHJ2L01lbW9yeVBydi5oIgoKCnR5cGVkZWYg
TWVtQ2h1bmtIZWFkZXJUeXBlICoJCU1lbUNodW5rSGVhZGVyUHRyOyAKCiAKIAp0eXBlZGVmIFVJ
bnQzMglNZW1IZWFwVGVybWluYXRvclR5cGU7CgogCiAKCgogCgoKCQogCgoKIAoKCgoKIAogCgoK
IAoKCiMgMTU3ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9Db3JlL1N5c3RlbS9JbmNzUHJ2
L01lbW9yeVBydi5oIgoKCiAKCgoKCgogCgoKIAoKCgogCiAKIAoKCgogCgoKCgp0eXBlZGVmIHN0
cnVjdCB7CglVSW50MTYJCXNpemU7CQkJCSAKCVVJbnQ4CQkJbG9ja093bmVyOwkJIAoJVUludDgJ
CQlmbGFnczsJCQkgCglJbnQxNgkJCWhPZmZzZXQ7CQkJIAoJfQlNZW0xQ2h1bmtIZWFkZXJUeXBl
Owp0eXBlZGVmIE1lbTFDaHVua0hlYWRlclR5cGUqCU1lbTFDaHVua0hlYWRlclB0cjsKCgoKIAoK
CgoKIAoKCgoKCgoKCiAKCgp0eXBlZGVmIHN0cnVjdCB7CglVSW50MTYJCQkJCWZsYWdzOwkJCQkJ
IAoJVUludDMyCQkJCQlzaXplOwkJCQkJCSAKCVVJbnQzMgkJCQkJZmlyc3RGcmVlQ2h1bmtPZmZz
ZXQ7IAoJTWVtTXN0clB0clRhYmxlVHlwZQltc3RyUHRyVGJsOwkJCQkgCgl9IE1lbUhlYXBIZWFk
ZXJUeXBlOwp0eXBlZGVmIE1lbUhlYXBIZWFkZXJUeXBlICogCU1lbUhlYXBIZWFkZXJQdHI7CgoK
IAoKCgoKCgoKCgoKCiAKCgoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNgkJCQkJZmxhZ3M7CQkJ
IAoJVUludDE2CQkJCQlzaXplOwkJCQkgCglNZW0xTXN0clB0clRhYmxlVHlwZQltc3RyUHRyVGJs
OwkJIAoJfSBNZW0xSGVhcEhlYWRlclR5cGU7CnR5cGVkZWYgTWVtMUhlYXBIZWFkZXJUeXBlICog
CQlNZW0xSGVhcEhlYWRlclB0cjsKCgogCgoKCgp0eXBlZGVmIHN0cnVjdCB7CglVSW50MTYJCQkJ
CWZsYWdzOwkJCQkJIAoJVUludDMyCQkJCQlzaXplOwkJCQkJCSAKCU1lbU1zdHJQdHJUYWJsZVR5
cGUJbXN0clB0clRibDsJCQkJIAoJfSBNZW0ySGVhcEhlYWRlclR5cGU7CnR5cGVkZWYgTWVtMkhl
YXBIZWFkZXJUeXBlICogCU1lbTJIZWFwSGVhZGVyUHRyOwoKCiAKCgoKCgoKCgoKCgoKIAogCnR5
cGVkZWYgc3RydWN0IHsKCXVuaW9uIHsKCQlNZW1Nc3RyUHRyVGFibGVUeXBlCXZlcjI7CgkJTWVt
MU1zdHJQdHJUYWJsZVR5cGUgCXZlcjE7CgkJfSBoZWFkZXI7Cgl9IE1lbU1zdHJQdHJUYWJsZVVu
aW9uVHlwZTsKCgoKIAoKCgoKCgogCiAKIAp0eXBlZGVmIHN0cnVjdCB7Cgl1bmlvbiB7CgkJTWVt
SGVhcEhlYWRlclR5cGUJCXZlcjM7CgkJTWVtMkhlYXBIZWFkZXJUeXBlCXZlcjI7CgkJTWVtMUhl
YXBIZWFkZXJUeXBlIAl2ZXIxOwoJCX0gaGVhZGVyOwoJfSBNZW1IZWFwSGVhZGVyVW5pb25UeXBl
OwoKCgoKCgkKCgogCgoKCQoKCgkKCgoJCgoKCQoJCgkKIAogCnR5cGVkZWYJc3RydWN0IHsKCXVu
aW9uIHsKCQlNZW1DaHVua0hlYWRlclR5cGUJdmVyMjsKCQlNZW0xQ2h1bmtIZWFkZXJUeXBlCXZl
cjE7CgkJfSBoZWFkZXI7Cgl9IE1lbUNodW5rSGVhZGVyVW5pb25UeXBlOwoJCgoKIAoKCgkKCgoJ
CgoKCQoKCgkKCgoKCgoKCgoKCgoKIAoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgQ2FyZEhlYWRlclR5
cGUgewoJVUludDMyCQlpbml0U3RhY2s7CQkJCQkgCglVSW50MzIJCXJlc2V0VmVjdG9yOwkJCQkg
CglVSW50MzIJCXNpZ25hdHVyZTsJCQkJCSAKCVVJbnQxNgkJaGRyVmVyc2lvbjsJCQkJCSAKCVVJ
bnQxNgkJZmxhZ3M7CQkJCQkJIAoJVUludDgJCQluYW1lWzMyIF07CQkgCglVSW50OAkJCW1hbnVm
WzMyIF07CSAKCVVJbnQxNgkJdmVyc2lvbjsJCQkJCQkgCglVSW50MzIJCWNyZWF0aW9uRGF0ZTsJ
CQkJIAoJVUludDE2CQludW1SQU1CbG9ja3M7CQkJCSAKCVVJbnQzMgkJYmxvY2tMaXN0T2Zmc2V0
OwkJCSAKCVVJbnQzMgkJcmVhZFdyaXRlUGFybXNPZmZzZXQ7CSAKCVVJbnQzMgkJcmVhZFdyaXRl
UGFybXNTaXplOwkJIAoJVUludDMyCQlyZWFkT25seVBhcm1zT2Zmc2V0OwkJIAoJVUludDMyCQli
aWdST01PZmZzZXQ7CQkJCSAKCQkJCQkJCQkJCQkJCSAKCVVJbnQzMgkJY2hlY2tzdW1CeXRlczsJ
CQkJIAoJVUludDE2CQljaGVja3N1bVZhbHVlOwkJCQkgCgoJVUludDMyCQlyZWFkV3JpdGVXb3Jr
aW5nT2Zmc2V0OwkgCglVSW50MzIJCXJlYWRXcml0ZVdvcmtpbmdTaXplOwkgCgoJVUludDMyCQlo
YWxDb2RlT2Zmc2V0OwkJCQkgCgkKCVVJbnQ4CQkJcmVzZXJ2ZWRbMTMwXTsJCQkJIAoJfSBDYXJk
SGVhZGVyVHlwZTsKdHlwZWRlZiBDYXJkSGVhZGVyVHlwZSoJCUNhcmRIZWFkZXJQdHI7CgoKCgoK
CgoKIAoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQzMgkJc2lnbmF0dXJlOwkJCQkJIAoJ
VUludDE2CQl2ZXJzaW9uOwkJCQkJCSAKCVVJbnQxNgkJZmxhZ3M7CQkJCQkJIAoJVUludDgJCQlu
YW1lWzMyIF07CQkgCglVSW50MzIJCWNyZWF0aW9uRGF0ZTsJCQkJIAoJVUludDMyCQliYWNrdXBE
YXRlOwkJCQkJIAoJVUludDMyCQloZWFwTGlzdE9mZnNldDsJCQkgCglVSW50MzIJCWluaXRDb2Rl
T2Zmc2V0MTsJCQkgCglVSW50MzIJCWluaXRDb2RlT2Zmc2V0MjsJCQkgCglMb2NhbElECQlkYXRh
YmFzZURpcklEOwkJCQkgCglVSW50MzIJCXJzdlNwYWNlOwkJCQkJIAoJVUludDMyCQlkeW5IZWFw
U3BhY2U7CQkJCSAKCQkJCQkJCQkJCQkJCSAKCVVJbnQzMgkJZmlyc3RSQU1CbG9ja1NpemU7CQkg
CgkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkKCSAKCSAKCSAKCSAK
CSAKCVN5c05WUGFyYW1zVHlwZQludlBhcmFtczsKCQoJIAoJIAoJVUludDgJCQlyZXNlcnZlZFsx
NzYtc2l6ZW9mKFN5c05WUGFyYW1zVHlwZSldOwkJCgoJIAoJVUludDMyCQljcmM7CQkJCQkJCSAK
CX0gU3RvcmFnZUhlYWRlclR5cGU7CnR5cGVkZWYgU3RvcmFnZUhlYWRlclR5cGUqCQlTdG9yYWdl
SGVhZGVyUHRyOwoKCgoKIAogCnR5cGVkZWYgc3RydWN0IHsKCVVJbnQxNgkJCQludW1IZWFwczsJ
CQkgCglVSW50MzIJCQkJaGVhcE9mZnNldFsxXTsJCSAKCX0gSGVhcExpc3RUeXBlOwoJCgkKCiAK
CgoKCgoKCnR5cGVkZWYgc3RydWN0IENhcmRJbmZvVHlwZSB7CgoJIAoJIAoJVUludDgJCQkqYmFz
ZVA7CQkJCQkJIAoJVUludDMyCQlzaXplOwkJCQkJCQkgCglVSW50MzIJCWZpcnN0UkFNQmxvY2tT
aXplOwkJIAoJVUludDMyCQl0YXJnZXRST01TaGlmdDsJCQkgCgkJCQkJCQkJCQkJCQkgCgkJCQkJ
CQkJCQkJCQkgCgoJCglVSW50MzIJCWNhcmRIZWFkZXJPZmZzZXQ7CQkJIAoJCQkJCQkJCQkJCQkJ
IAoJCQkJCQkJCQkJCQkKCVVJbnQzMgkJcnN2U3BhY2U7CQkJCQkgCglVSW50MzIJCWR5bkhlYXBT
cGFjZTsJCQkJIAoJU3RvcmFnZUhlYWRlclB0cgkJcmFtU3RvcmVQOwkJIAoJCQkJCQkJCQkJCQkJ
IAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkKCSAKCSAKCSAKCVVJ
bnQxNgkJbnVtUkFNSGVhcHM7CQkJCSAKCVVJbnQzMiAJCSpyYW1IZWFwT2Zmc2V0c1A7CQkJIAoJ
VUludDE2CQludW1ST01IZWFwczsJCQkJIAoJVUludDMyIAkJKnJvbUhlYXBPZmZzZXRzUDsJCQkg
CgoJIAoJIAoJVUludDMyCQljYXJkT2Zmc2V0TWFzazsJCQkgCgoJfSBDYXJkSW5mb1R5cGU7CnR5
cGVkZWYgQ2FyZEluZm9UeXBlKglDYXJkSW5mb1B0cjsKCiAKIAoKCgoKIAoKCiAKCgogCiAKIAog
CgoKCgogCgoKCgoKCgoKCgoKCgoJCgoJCgoKCgoKCQoKCgkKCQkKCgkKCgoKCQkKIyA1NjIgIi4u
L1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0NvcmUvU3lzdGVtL0luY3NQcnYvTWVtb3J5UHJ2Lmgi
CgoKCgoKIAoKCgoKCiAKCgoKIyA2MDAgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0NvcmUv
U3lzdGVtL0luY3NQcnYvTWVtb3J5UHJ2LmgiCgoKCgojIDM1MCAiLi4vU3JjU2hhcmVkL1BhbG0v
UGxhdGZvcm0vQ29yZS9TeXN0ZW0vSW5jc1Bydi9TeXN0ZW1QcnYuaCIgMgoKCiMgMSAiLi4vU3Jj
U2hhcmVkL1BhbG0vUGxhdGZvcm0vQ29yZS9TeXN0ZW0vSW5jc1Bydi9EZWJ1Z1Bydi5oIiAxCiAK
CgoKCgoKCgoKCgoKCgoKIyA0MzggIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0NvcmUvU3lz
dGVtL0luY3NQcnYvRGVidWdQcnYuaCIKCgojIDM1MiAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZv
cm0vQ29yZS9TeXN0ZW0vSW5jc1Bydi9TeXN0ZW1QcnYuaCIgMgoKIyAxICIuLi9TcmNTaGFyZWQv
UGFsbS9QbGF0Zm9ybS9Db3JlL0hhcmR3YXJlL0luY3NQcnYvSGFyZHdhcmUuaCIgMQogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0
Zm9ybS9JbmNzL0NvcmUvSGFyZHdhcmUvSEFMLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCiAK
CgoKCgoKCiAKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAJCgoKCiAK
dHlwZWRlZiB2b2lkICgqSHdySW5pdFByb2NQdHIpKHZvaWQpOwoKCiAKCgojIDk0ICIuLi9TcmNT
aGFyZWQvUGFsbS9QbGF0Zm9ybS9JbmNzL0NvcmUvSGFyZHdhcmUvSEFMLmgiCgoKCgoKIAojIDM3
ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9Db3JlL0hhcmR3YXJlL0luY3NQcnYvSGFyZHdh
cmUuaCIgMgoKCgogCgoKCgoKCgogCgoKIAogCiAKCgoKCgogCgoKIyAxNDQgIi4uL1NyY1NoYXJl
ZC9QYWxtL1BsYXRmb3JtL0NvcmUvSGFyZHdhcmUvSW5jc1Bydi9IYXJkd2FyZS5oIgoKCgogCgoK
CgoKCgoKCiMgMzUzICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9Db3JlL1N5c3RlbS9JbmNz
UHJ2L1N5c3RlbVBydi5oIiAyCgp0eXBlZGVmIHN0cnVjdCBMb3dNZW1UeXBlIHsKCgoJIAoJTG93
TWVtSGRyVHlwZQkJCWZpeGVkOyAKCQoKCSAKCSAKCSAKCSAKCUNhcmRJbmZvVHlwZQkJCW1lbUNh
cmRJbmZvWzIgXTsJCSAKCQoJU2xrR2xvYmFsc1R5cGUJCQlzbGtHbG9iYWxzOwkJCQkJCQkJIAoJ
CglEYmdHbG9iYWxzVHlwZQkJCWRiZ0dsb2JhbHM7CQkJCQkJCQkgCgkKCVN5c0FwcEluZm9UeXBl
CQkJc3lzQXBwSW5mbzsJCQkJCQkJCSAKCQoJTWVtUHRyCQkJCQlzeXNEaXNwYXRjaFRhYmxlWygw
eEE0NUEgIC0gMHhBMDAwICkgXTsJIAoJCgl9IExvd01lbVR5cGU7CgkKCiAKCgoKCgoKCgogCgoK
CgogCiAKCgoKCiAKCgoKCQkJCQkJCQkJCQkJCQkJCQkJCSAKCgkJCQkJCQkJCQkJCQkJCQkJCQkg
CgkJCQkJCQkJCQkJCQkJCQkJCQkgCgoKIAoKCgkJCQkJCQkJCQkJCQkJCQkJCQkgCgoKCgoKCgoK
IAoKIAogCiAKCgoKIAoKIAoKIAoKCiAKCgojIDQ1OSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZv
cm0vQ29yZS9TeXN0ZW0vSW5jc1Bydi9TeXN0ZW1QcnYuaCIKCgogCgoKCgoKCgoKCgoKCgojIDE2
NSAiLi4vU3JjU2hhcmVkL1BhbG0uaCIgMgoKCgkKIyAxICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0
Zm9ybS9Db3JlL1N5c3RlbS9JbmNzUHJ2L0RhdGFQcnYuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIAogCiAKCgoKIAoKCgoKCgoKIAoKCnR5cGVkZWYgc3RydWN0IHsKCUxvY2FsSUQJCWxvY2Fs
Q2h1bmtJRDsJCQkJIAoJVUludDgJCQlhdHRyaWJ1dGVzOwkJCQkJIAoJVUludDgJCQl1bmlxdWVJ
RFszXTsJCQkJIAoJCQkJCQkJCQkJCQkJIAoJfSBSZWNvcmRFbnRyeVR5cGU7CnR5cGVkZWYgUmVj
b3JkRW50cnlUeXBlKglSZWNvcmRFbnRyeVB0cjsKCgoKIAoKCnR5cGVkZWYgc3RydWN0IHsKCVVJ
bnQzMgkJdHlwZTsJCQkJCQkJIAoJVUludDE2CQlpZDsJCQkJCQkJIAoJTG9jYWxJRAkJbG9jYWxD
aHVua0lEOwkJCQkgCgl9IFJzcmNFbnRyeVR5cGU7CnR5cGVkZWYgUnNyY0VudHJ5VHlwZSoJUnNy
Y0VudHJ5UHRyOwoKIAoKCgoKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoJTG9jYWxJRAkJCQluZXh0
UmVjb3JkTGlzdElEOwkJCSAKCVVJbnQxNgkJCQludW1SZWNvcmRzOwkJCQkJIAoJVUludDE2CQkJ
CWZpcnN0RW50cnk7CQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAKCX0gUmVjb3JkTGlzdFR5cGU7CnR5
cGVkZWYgUmVjb3JkTGlzdFR5cGUqCVJlY29yZExpc3RQdHI7CgoKCgogCgoKdHlwZWRlZiBzdHJ1
Y3QgewoJVUludDgJCQluYW1lWzMyIF07CSAKCVVJbnQxNgkJYXR0cmlidXRlczsJCQkJCSAKCVVJ
bnQxNgkJdmVyc2lvbjsJCQkJCQkgCgoJVUludDMyCQljcmVhdGlvbkRhdGU7CQkJCSAKCVVJbnQz
MgkJbW9kaWZpY2F0aW9uRGF0ZTsJCQkgCglVSW50MzIJCWxhc3RCYWNrdXBEYXRlOwkJCSAKCVVJ
bnQzMgkJbW9kaWZpY2F0aW9uTnVtYmVyOwkJIAoKCUxvY2FsSUQJCWFwcEluZm9JRDsJCQkJCSAK
CUxvY2FsSUQJCXNvcnRJbmZvSUQ7CQkJCQkgCgoJVUludDMyCQl0eXBlOwkJCQkJCQkgCglVSW50
MzIJCWNyZWF0b3I7CQkJCQkJIAoJCglVSW50MzIJCXVuaXF1ZUlEU2VlZDsJCQkJIAoJCQkJCQkJ
CQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJ
CQkJCQkJCQkJIAoKCVJlY29yZExpc3RUeXBlCXJlY29yZExpc3Q7CQkJCSAKCX0gRGF0YWJhc2VI
ZHJUeXBlOwkJCgp0eXBlZGVmIERhdGFiYXNlSGRyVHlwZSoJRGF0YWJhc2VIZHJQdHI7CgoKCgoK
IAoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoJTG9jYWxJRAliYXNlSUQ7Cgl9IERhdGFiYXNlRGly
RW50cnlUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgewoJTG9jYWxJRAkJCQkJCW5leHREYXRhYmFzZUxp
c3RJRDsJCSAKCVVJbnQxNgkJCQkJCW51bURhdGFiYXNlczsJCQkJIAoJRGF0YWJhc2VEaXJFbnRy
eVR5cGUJCWRhdGFiYXNlSURbMV07CQkJCSAKCX0gRGF0YWJhc2VEaXJUeXBlOwoKdHlwZWRlZiBE
YXRhYmFzZURpclR5cGUqCURhdGFiYXNlRGlyUHRyOwoKCgoKIAoKCgoKCnR5cGVkZWYgc3RydWN0
ICB7Cgl2b2lkICoJCQkJbmV4dDsJCQkJCQkJIAoJVUludDE2CQkJCW9wZW5Db3VudDsJCQkJCSAK
CVVJbnQzMgkJCQlvd25lclRhc2tJRDsJCQkJIAoJVUludDE2CQkJCWV4Y2x1c2l2ZSAJOiAxOwkJ
CSAKCVVJbnQxNgkJCQl3cml0ZUFjY2VzcyA6IDE7CQkJIAoJVUludDE2CQkJCXJlc0RCCQkgCTog
MTsJCQkgCglMb2NhbElECQkJCWhkcklEOwkJCQkJCSAKCU1lbUhhbmRsZQkJCWhkckg7CQkJCQkJ
CSAKCURhdGFiYXNlSGRyUHRyCQloZHJQOwkJCQkJCQkgCglVSW50MTYJCQkJY2FyZE5vOwkJCQkJ
CSAKCVVJbnQxNgkJCQludW1SZWNvcmRzOyAJCQkJIAoJTWVtUHRyCQkJCWhkck1hc3RlclA7CQkJ
CQkgCglNZW1QdHIqCQkJCWhhbmRsZVRhYmxlUDsJCQkJIAoJfSBEbU9wZW5JbmZvVHlwZTsKCnR5
cGVkZWYgRG1PcGVuSW5mb1R5cGUqCQlEbU9wZW5JbmZvUHRyOwoKCiAKCgoKCgoKCgp0eXBlZGVm
IHN0cnVjdCBEbUFjY2Vzc1R5cGUgewoJc3RydWN0IERtQWNjZXNzVHlwZSoJbmV4dDsJCQkJCQkg
CglVSW50MTYJCQkJCW1vZGU7CQkJCQkJIAoJRG1PcGVuSW5mb1B0cgkJCW9wZW5QOwkJCQkJIAoJ
CgkgCglVSW50MzIJCQkJCXNhdmVkTW9kTnVtOwkJCSAKCQkJCQkJCQkJCQkJCQkJIAoJCgkgCglV
SW50OAkJCQkJCW9wZW5UeXBlOwkJCQkgCglVSW50OAkJCQkJCXJlc2VydmVkOwkJCQoJfSBEbUFj
Y2Vzc1R5cGU7Cgp0eXBlZGVmIERtQWNjZXNzVHlwZSoJCURtQWNjZXNzUHRyOwoKCgogCgoKCgoK
CgoKCgoKIAp0eXBlZGVmIHN0cnVjdCB7CgkJVUludDE2CWluZGV4ZXNbKDIgICogMiApIF07CgkJ
VUludDE2CWNhcmROb3NbKDIgICogMiApIF07CQkJCQkJIAoJCVVJbnQzMglsYXRlc3RWZXJzaW9u
Q2FuZGlkYXRlVHlwZTsJCQkgCgkJVUludDMyCWxhdGVzdFZlcnNpb25DYW5kaWRhdGVDcmVhdG9y
OwkJIAoJCUludDE2CQlsYXRlc3RWZXJzaW9uQ2FuZGlkYXRlU3RvcmU7CQkJIAoJCX0gRG1QcnZT
ZWFyY2hTdGF0ZVR5cGU7CnR5cGVkZWYgRG1QcnZTZWFyY2hTdGF0ZVR5cGUqCURtUHJ2U2VhcmNo
U3RhdGVQdHI7CQoJCgogCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7CgkJVUludDgJCQlwcm90ZWN0
Q291bnQ7CgkJVUludDgJCQljYXJkTm87CgkJTG9jYWxJRAkJZGJJRDsKCQl9IERtUHJvdGVjdEVu
dHJ5VHlwZSwgKkRtUHJvdGVjdEVudHJ5UHRyOwoJCgogCgoKCgoKCnR5cGVkZWYgc3RydWN0IHsK
CSAKCVVJbnQzMgl0eXBlOwkJCQkJCQkgCglVSW50MzIJY3JlYXRvcjsJCQkJCQkgCglMb2NhbElE
CWRiSUQ7CQkJCQkJIAoJVUludDE2IAljYXJkTm87CQkJCQkJIAoJVUludDE2CWRiQXR0cnM7CQkJ
CQkJIAoJVUludDE2CXZlcnNpb247CQkJCQkJIAoJVUludDgJCWRiTmFtZVszMiBdOwkgCgkKCSAK
CVVJbnQxNglsZ0ljb25PZmZzZXQ7CQkJCSAKCVVJbnQxNglzbUljb25PZmZzZXQ7CQkJCSAKCVVJ
bnQ4CQlpY29uTmFtZVszMiBdOwkJIAoJQ2hhcgkJdmVyc2lvblN0clsxNiBdOwkgCglVSW50OAkJ
ZmxhZ3M7CQkJCQkJCQkgCglVSW50OAkJcmVzZXJ2ZWQ7CgkKCSAKCSAKCQoJfSBEbUxhdW5jaERC
UmVjb3JkVHlwZSwgKkRtTGF1bmNoREJSZWNvcmRQdHI7CgogCgoJCQkJCQkJCQkJCQkJCSAKCgkJ
CQkJCQkJCQkJCQkJIAoKCQkJCQkJCQkJCQkJCQkgCgoJCQkJCQkJCQkJCQkJCSAKCgogCgoKCgoK
IAp0eXBlZGVmIEludDE2ICgqRG1TZWFyY2hGdW5jUHRyKSAodm9pZCBjb25zdCAqIHNlYXJjaERh
dGEsIHZvaWQgY29uc3QgKiBkYkRhdGEsIEludDMyIG90aGVyKTsKCiAKCgoKCgoKCgogCgoKIyAz
MDQgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0NvcmUvU3lzdGVtL0luY3NQcnYvRGF0YVBy
di5oIgoKCgoKCiMgMTY3ICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgoJCQkJCQkJCSAKCQoJCiMg
MSAiLi4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9ETENvbW1vbi5o
IiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKIAogCiAKIAogCiAKIAp0eXBlZGVm
IGVudW0gRGxwRnVuY0lEIHsKCglkbHBSZXNlcnZlZEZ1bmMgPSAweDBGLAkJCSAKCgkgCglkbHBS
ZWFkVXNlckluZm8sCgkKCWRscFdyaXRlVXNlckluZm8sCgkKCWRscFJlYWRTeXNJbmZvLAoJCglk
bHBHZXRTeXNEYXRlVGltZSwKCQoJZGxwU2V0U3lzRGF0ZVRpbWUsCgkKCWRscFJlYWRTdG9yYWdl
SW5mbywKCQoJZGxwUmVhZERCTGlzdCwKCQoJZGxwT3BlbkRCLAoJCglkbHBDcmVhdGVEQiwKCQoJ
ZGxwQ2xvc2VEQiwKCQoJZGxwRGVsZXRlREIsCgkKCWRscFJlYWRBcHBCbG9jaywKCQoJZGxwV3Jp
dGVBcHBCbG9jaywKCglkbHBSZWFkU29ydEJsb2NrLAoKCWRscFdyaXRlU29ydEJsb2NrLAoKCWRs
cFJlYWROZXh0TW9kaWZpZWRSZWMsCgoJZGxwUmVhZFJlY29yZCwKCglkbHBXcml0ZVJlY29yZCwK
CglkbHBEZWxldGVSZWNvcmQsCgoJZGxwUmVhZFJlc291cmNlLAoKCWRscFdyaXRlUmVzb3VyY2Us
CgoJZGxwRGVsZXRlUmVzb3VyY2UsCgoJZGxwQ2xlYW5VcERhdGFiYXNlLAoKCWRscFJlc2V0U3lu
Y0ZsYWdzLAoKCWRscENhbGxBcHBsaWNhdGlvbiwKCglkbHBSZXNldFN5c3RlbSwKCQoJZGxwQWRk
U3luY0xvZ0VudHJ5LAoJCglkbHBSZWFkT3BlbkRCSW5mbywKCQoJZGxwTW92ZUNhdGVnb3J5LAoJ
CglkbHBQcm9jZXNzUlBDLAkJCQkJIAoJCglkbHBPcGVuQ29uZHVpdCwJCQkJIAoJCglkbHBFbmRP
ZlN5bmMsCQkJCQkgCgkKCWRscFJlc2V0UmVjb3JkSW5kZXgsCQkJIAoJCglkbHBSZWFkUmVjb3Jk
SURMaXN0LAkJCSAKCQoJCgkgCglkbHBSZWFkTmV4dFJlY0luQ2F0ZWdvcnksCSAKCQoJZGxwUmVh
ZE5leHRNb2RpZmllZFJlY0luQ2F0ZWdvcnksCSAKCQoJZGxwUmVhZEFwcFByZWZlcmVuY2UsCQkg
CgkKCWRscFdyaXRlQXBwUHJlZmVyZW5jZSwJCSAKCQoJZGxwUmVhZE5ldFN5bmNJbmZvLAkJCSAK
CQoJZGxwV3JpdGVOZXRTeW5jSW5mbywJCQkgCgoJZGxwUmVhZEZlYXR1cmUsCQkJCSAKCQoJCgkg
CglkbHBGaW5kREIsCQkJCQkJIAoJCQkJCQkJCQkJIAoJZGxwU2V0REJJbmZvLAkJCQkJIAoJCQkJ
CQkJCQkJIAoKCQoJCgkKCWRscExhc3RGdW5jCQkJCQkJIAoKCX0gRGxwRnVuY0lEOwoKCgoKIAog
CnR5cGVkZWYgZW51bSBEbHBSZXNwRXJyb3JDb2RlIHsKCWRscFJlc3BFcnJOb25lID0gMCwJCQkJ
CSAKCWRscFJlc3BFcnJTeXN0ZW0sCQkJCQkJIAoJZGxwUmVzcEVycklsbGVnYWxSZXEsCQkJCSAK
CWRscFJlc3BFcnJNZW1vcnksCQkJCQkJIAoJZGxwUmVzcEVyclBhcmFtLAkJCQkJCSAKCWRscFJl
c3BFcnJOb3RGb3VuZCwJCQkJCSAKCWRscFJlc3BFcnJOb25lT3BlbiwJCQkJCSAKCWRscFJlc3BF
cnJEYXRhYmFzZU9wZW4sCQkJCSAKCWRscFJlc3BFcnJUb29NYW55T3BlbkRhdGFiYXNlcywJIAoJ
ZGxwUmVzcEVyckFscmVhZHlFeGlzdHMsCQkJIAoJZGxwUmVzcEVyckNhbnRPcGVuLAkJCQkJIAoJ
ZGxwUmVzcEVyclJlY29yZERlbGV0ZWQsCQkJIAoJZGxwUmVzcEVyclJlY29yZEJ1c3ksCQkJCSAK
CWRscFJlc3BFcnJOb3RTdXBwb3J0ZWQsCQkJCSAKCQkJCQkJCQkJCQkJIAoJZGxwUmVzcEVyclVu
dXNlZDEsCQkJCQkgCglkbHBSZXNwRXJyUmVhZE9ubHksCQkJCQkgCglkbHBSZXNwRXJyTm90RW5v
dWdoU3BhY2UsCQkJIAoJZGxwUmVzcEVyckxpbWl0RXhjZWVkZWQsCQkJIAoJZGxwUmVzcEVyckNh
bmNlbFN5bmMsCQkJCSAKCQoJZGxwUmVzcEVyckJhZFdyYXBwZXIsCQkJCSAKCWRscFJlc3BFcnJB
cmdNaXNzaW5nLAkJCQkgCglkbHBSZXNwRXJyQXJnU2l6ZSwJCQkJCSAKCQoJZGxwUmVzcEVyckxh
c3RSZXNlcnZlZCA9IDEyNwkJIAoJCQkJCQkJCQkJCQkgCgl9IERscFJlc3BFcnJvckNvZGU7CgoK
IAogCiAKCgoKCgoJCQkJCQkJCQkJCQkJCSAKCgoJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ
CQkgCgoKCQkJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCSAK
CQkJCQkJCQkJCQkJCQkJIAoKCgkJCQkJCQkJCQkJCQkJCSAKCgoJCQkJCQkJCQkJCQkJCQkgCgoK
CgoKCiAKCgoKCgoKCiAKIAogCiAKCnR5cGVkZWYgc3RydWN0IERscERhdGVUaW1lVHlwZSB7CSAK
CVVJbnQxNgl5ZWFyOwkJCQkJCSAKCVVJbnQ4CQltb250aDsJCQkJCSAKCVVJbnQ4CQlkYXk7CQkJ
CQkJIAoJVUludDgJCWhvdXI7CQkJCQkJIAoJVUludDgJCW1pbnV0ZTsJCQkJCSAKCVVJbnQ4CQlz
ZWNvbmQ7CQkJCQkgCglVSW50OAkJdW51c2VkOwkJCQkJIAoJfSBEbHBEYXRlVGltZVR5cGU7CQkJ
CSAKCgogCnR5cGVkZWYgc3RydWN0IERscFZlcnNpb25UeXBlIHsKCQkJCQkJCQkJCQkJIAoJVUlu
dDE2CQkJCXdNYWpvcjsJCQkgCglVSW50MTYJCQkJd01pbm9yOwkJCSAKCQkJCQkJCQkJCQkJIAoJ
fSBEbHBWZXJzaW9uVHlwZTsKCiAKIAoKCgoKCgoKIAogCnR5cGVkZWYgc3RydWN0IERscFJlcUhl
YWRlclR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJaWQ7CQkJCSAKCVVJbnQ4CQkJCQlh
cmdjOwkJCQkgCgkJCQkJCQkJCQkJCSAKCX0gRGxwUmVxSGVhZGVyVHlwZTsKCnR5cGVkZWYgRGxw
UmVxSGVhZGVyVHlwZSoJCURscFJlcUhlYWRlclB0cjsKCnR5cGVkZWYgc3RydWN0IERscFJlcVR5
cGUgewoJCQkJCQkJCQkJCQkgCglEbHBSZXFIZWFkZXJUeXBlCWhlYWRlcjsJCQkgCgkJCQkJCQkJ
CQkJCSAKCVVJbnQ4CQkJCQlhcmdzWzJdOwkJCSAKCX0gRGxwUmVxVHlwZTsKCnR5cGVkZWYgRGxw
UmVxVHlwZSoJCURscFJlcVB0cjsKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgRGxwUmVzcEhlYWRlclR5
cGUgewoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJaWQ7CQkJCSAKCVVJbnQ4CQkJCQlhcmdjOwkJ
CQkgCglVSW50MTYJCQkJZXJyb3JDb2RlOwkJIAoJCQkJCQkJCQkJCQkgCgl9IERscFJlc3BIZWFk
ZXJUeXBlOwoKdHlwZWRlZiBEbHBSZXNwSGVhZGVyVHlwZSoJCURscFJlc3BIZWFkZXJQdHI7Cgp0
eXBlZGVmIHN0cnVjdCBEbHBSZXNwVHlwZSB7CgkJCQkJCQkJCQkJCSAKCURscFJlc3BIZWFkZXJU
eXBlCWhlYWRlcjsJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQlhcmdzWzJdOwkJCSAKCX0g
RGxwUmVzcFR5cGU7CgkKdHlwZWRlZiBEbHBSZXNwVHlwZSoJCURscFJlc3BQdHI7CgoKIAogCnR5
cGVkZWYgdW5pb24gRGxwR2VuZXJpY0JvZHlUeXBlIHsKCVVJbnQ4CQkJCQlpZDsJCQkJIAoJRGxw
UmVxVHlwZQkJCXJlcTsJCQkJIAoJRGxwUmVzcFR5cGUJCQlyZXNwOwkJCQkgCgl9IERscEdlbmVy
aWNCb2R5VHlwZTsKCQp0eXBlZGVmIERscEdlbmVyaWNCb2R5VHlwZSoJCURscEdlbmVyaWNCb2R5
UHRyOwoKCiAKIAogCiAKIAoKCiAKCgogCiAKIAoKCgogCgoKCgoKCgoKCiAKIAogCgoKIAogCgoK
CiAKIAogCgoKIAogCgoKCiAKIAogCgogCgoKCgoKCiAKIAp0eXBlZGVmIHN0cnVjdCBEbHBUaW55
QXJnV3JhcHBlclR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJYklEOwkJCQkgCglVSW50
OAkJCQkJYlNpemU7CQkJIAoJCQkJCQkJCQkJCQkgCgl9IERscFRpbnlBcmdXcmFwcGVyVHlwZTsK
CQp0eXBlZGVmIHN0cnVjdCBEbHBUaW55QXJnVHlwZSB7CglEbHBUaW55QXJnV3JhcHBlclR5cGUJ
d3JhcHBlcjsJIAoJVUludDgJCQkJCQkJZGF0YVsyXTsJIAoJfSBEbHBUaW55QXJnVHlwZTsKCQoK
IAogCiAKdHlwZWRlZiBzdHJ1Y3QgRGxwU21hbGxBcmdXcmFwcGVyVHlwZSB7CgkJCQkJCQkJCQkJ
CSAKCVVJbnQ4CQkJCQliSUQ7CQkJCSAKCVVJbnQ4CQkJCQl1bnVzZWQ7CQkJIAoJVUludDE2CQkJ
CQl3U2l6ZTsJCQkgCgkJCQkJCQkJCQkJCSAKCX0gRGxwU21hbGxBcmdXcmFwcGVyVHlwZTsKCnR5
cGVkZWYgc3RydWN0IERscFNtYWxsQXJnVHlwZSB7CglEbHBTbWFsbEFyZ1dyYXBwZXJUeXBlCXdy
YXBwZXI7CSAKCVVJbnQ4CQkJCQkJCWRhdGFbMl07CSAKCX0gRGxwU21hbGxBcmdUeXBlOwoKIAp0
eXBlZGVmIHVuaW9uIERscFNob3J0QXJnV3JhcHBlclR5cGUgewoJVUludDgJCQkJCQkJYklEOwkJ
IAoJRGxwVGlueUFyZ1dyYXBwZXJUeXBlCXRpbnk7CQkgCglEbHBTbWFsbEFyZ1dyYXBwZXJUeXBl
CXNtYWxsOwkgCgl9IERscFNob3J0QXJnV3JhcHBlclR5cGU7CnR5cGVkZWYgRGxwU2hvcnRBcmdX
cmFwcGVyVHlwZSoJRGxwU2hvcnRBcmdXcmFwcGVyUHRyOwoJCnR5cGVkZWYgdW5pb24gRGxwU2hv
cnRBcmdUeXBlIHsKCVVJbnQ4CQkJCQkJCWJJRDsJCSAKCURscFRpbnlBcmdUeXBlCQkJCXRpbnk7
CQkgCglEbHBTbWFsbEFyZ1R5cGUJCQlzbWFsbDsJIAoJfSBEbHBTaG9ydEFyZ1R5cGU7Cgp0eXBl
ZGVmIERscFNob3J0QXJnVHlwZSoJCQlEbHBTaG9ydEFyZ1B0cjsKCgoKIAogCiAKIAogCiAKIAog
CiAKIAoKIAoKCnR5cGVkZWYgc3RydWN0IERscExvbmdBcmdXcmFwcGVyVHlwZSB7CgkJCQkJCQkJ
CQkJCSAKCVVJbnQxNgkJCQl3SUQ7CQkJCSAKCVVJbnQzMgkJCQlkd1NpemU7CQkJIAoJCQkJCQkJ
CQkJCQkgCgl9IERscExvbmdBcmdXcmFwcGVyVHlwZTsKdHlwZWRlZiBEbHBMb25nQXJnV3JhcHBl
clR5cGUqCQlEbHBMb25nQXJnV3JhcHBlclB0cjsKCnR5cGVkZWYgc3RydWN0IERscExvbmdBcmdU
eXBlIHsKCQkJCQkJCQkJCQkJIAoJRGxwTG9uZ0FyZ1dyYXBwZXJUeXBlCXdyYXBwZXI7CSAKCVVJ
bnQ4CQkJCQkJCWRhdGFbMl07CSAKCX0gRGxwTG9uZ0FyZ1R5cGU7CnR5cGVkZWYgRGxwTG9uZ0Fy
Z1R5cGUqCURscExvbmdBcmdQdHI7CgoKIAogCiAKCiAKdHlwZWRlZiB1bmlvbiBEbHBHZW5lcmlj
QXJnV3JhcHBlclR5cGUgewoJRGxwU2hvcnRBcmdXcmFwcGVyVHlwZQlzaG9ydFdyYXA7CSAKCURs
cExvbmdBcmdXcmFwcGVyVHlwZQlsb25nV3JhcDsJIAoJfSBEbHBHZW5lcmljQXJnV3JhcHBlclR5
cGU7CnR5cGVkZWYgRGxwR2VuZXJpY0FyZ1dyYXBwZXJUeXBlKgkJRGxwR2VuZXJpY0FyZ1dyYXBw
ZXJQdHI7CgoKIAp0eXBlZGVmIHVuaW9uIERscEdlbmVyaWNBcmdUeXBlIHsKCURscFNob3J0QXJn
VHlwZQkJCXNob3J0QXJnOwkgCglEbHBMb25nQXJnVHlwZQkJCQlsb25nQXJnOwkJIAoJfSBEbHBH
ZW5lcmljQXJnVHlwZTsKdHlwZWRlZiBEbHBHZW5lcmljQXJnVHlwZSoJCQlEbHBHZW5lcmljQXJn
UHRyOwoKCiAKCgoKIAogCiAKCgoKCiAKCgoKCiAKIAogCiAKIAogCiAKIAogCiAKCiAKIAogCgkK
IAogCgoKdHlwZWRlZiBzdHJ1Y3QgRGxwUmVhZFVzZXJJbmZvUmVzcEhkclR5cGUgewoJCQkJCQkJ
CQkJCQkgCglVSW50MzIJCQkJdXNlcklEOwkJCSAKCVVJbnQzMgkJCQl2aWV3ZXJJRDsJCSAKCVVJ
bnQzMgkJCQlsYXN0U3luY1BDOwkJIAoJRGxwRGF0ZVRpbWVUeXBlCXN1Y2NTeW5jRGF0ZTsJIAoJ
RGxwRGF0ZVRpbWVUeXBlCWxhc3RTeW5jRGF0ZTsJIAoJVUludDgJCQkJCXVzZXJOYW1lTGVuOwkg
CgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQlwYXNzd29yZExlbjsJIAoJCQkJCQkJCQkJCQkgCgkJ
CQkJCQkJCQkJCSAKCX0gRGxwUmVhZFVzZXJJbmZvUmVzcEhkclR5cGU7Cgp0eXBlZGVmIHN0cnVj
dCBEbHBSZWFkVXNlckluZm9SZXNwVHlwZSB7CgkJCQkJCQkJCQkJCSAKCURscFJlYWRVc2VySW5m
b1Jlc3BIZHJUeXBlCQkJIAoJCQkJCQkJaGVhZGVyOwkJCSAKCQkJCQkJCQkJCQkJIAoJVUludDgJ
CQkJCW5hbWVBbmRQYXNzd29yZFsyXTsJIAoJIAoJIAoJIAoJfSBEbHBSZWFkVXNlckluZm9SZXNw
VHlwZTsKCgoJCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAogCgoKCgp0eXBlZGVmIHN0
cnVjdCBEbHBXcml0ZVVzZXJJbmZvUmVxSGRyVHlwZSB7CgkJCQkJCQkJCQkJCSAKCVVJbnQzMgkJ
CQl1c2VySUQ7CQkJIAoJVUludDMyCQkJCXZpZXdlcklEOwkJIAoJVUludDMyCQkJCWxhc3RTeW5j
UEM7CQkgCglEbHBEYXRlVGltZVR5cGUJbGFzdFN5bmNEYXRlOwkgCglVSW50OAkJCQkJbW9kRmxh
Z3M7CQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJIAoJVUludDgJCQkJCXVzZXJOYW1lTGVu
OwkgCgkJCQkJCQkJCQkJCSAKCX0gRGxwV3JpdGVVc2VySW5mb1JlcUhkclR5cGU7CgogCiAKIAog
CgoKCgoKCnR5cGVkZWYgc3RydWN0IERscFdyaXRlVXNlckluZm9SZXFUeXBlIHsKCQkJCQkJCQkJ
CQkJIAoJRGxwV3JpdGVVc2VySW5mb1JlcUhkclR5cGUKCQkJCQkJCWhlYWRlcjsJCQkgCgkJCQkJ
CQkJCQkJCSAKCVVJbnQ4CQkJCQl1c2VyTmFtZVsyXTsJIAoJIAoJfSBEbHBXcml0ZVVzZXJJbmZv
UmVxVHlwZTsKCgkKIAogCiAKCgoJCiAKIAogCiAKIAogCiAKCiAKIAogCgplbnVtIHsKCSAKCWRs
cFJlYWRTeXNJbmZvUmVxQXJnSUQJCT0gMHgyMCAKCX07CgoKIAogCnR5cGVkZWYgc3RydWN0IERs
cFJlYWRTeXNJbmZvUmVxVHlwZSB7CgkJCQkJCQkJCQkJCSAKCURscFZlcnNpb25UeXBlCQlkbHBW
ZXI7CQkJIAoJCQkJCQkJCQkJCQkgCgl9IERscFJlYWRTeXNJbmZvUmVxVHlwZTsKCQoJCiAKIAog
CmVudW0gewoJZGxwUmVhZFN5c0luZm9SZXNwQXJnSUQJCT0gMHgyMCAsCgkKCSAKCWRscFJlYWRT
eXNJbmZvVmVyUmVzcEFyZ0lECgl9OwoKIAogCnR5cGVkZWYgc3RydWN0IERscFJlYWRTeXNJbmZv
UmVzcFR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50MzIJCQkJcm9tU1dWZXJzaW9uOwkgCglVSW50
MzIJCQkJbG9jYWxpemF0aW9uSUQ7IAoJVUludDgJCQkJCXVudXNlZDsJCQkgCglVSW50OAkJCQkJ
cHJvZElEU2l6ZTsJCSAKCVVJbnQzMgkJCQlwcm9kSUQ7CQkJIAoJCQkJCQkJCQkJCQkgCgl9IERs
cFJlYWRTeXNJbmZvUmVzcFR5cGU7CgkKCiAKIAp0eXBlZGVmIHN0cnVjdCBEbHBSZWFkU3lzSW5m
b1ZlclJlc3BUeXBlIHsKCQkJCQkJCQkJCQkJIAoJRGxwVmVyc2lvblR5cGUJCWRscFZlcjsJCQkg
CglEbHBWZXJzaW9uVHlwZQkJY29tcFZlcjsJCQkgCglVSW50MzIJCQkJZHdNYXhSZWNTaXplOwkg
CgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkgCgl9IERscFJlYWRTeXNJ
bmZvVmVyUmVzcFR5cGU7CgoKCiAKIAogCiAKIAoKIAogCiAKCQogCiAKCgp0eXBlZGVmIHN0cnVj
dCBEbHBHZXRTeXNEYXRlVGltZVJlc3BUeXBlIHsKCQkJCQkJCQkJCQkJIAoJRGxwRGF0ZVRpbWVU
eXBlCWRhdGVUaW1lOwkJIAoJCQkJCQkJCQkJCQkgCgl9IERscEdldFN5c0RhdGVUaW1lUmVzcFR5
cGU7CgoKCiAKIAogCiAKIAogCiAKIAogCiAKCiAKIAoKCnR5cGVkZWYgc3RydWN0IERscFNldFN5
c0RhdGVUaW1lUmVxVHlwZSB7CgkJCQkJCQkJCQkJCSAKCURscERhdGVUaW1lVHlwZQlkYXRlVGlt
ZTsJCSAKCQkJCQkJCQkJCQkJIAoJfSBEbHBTZXRTeXNEYXRlVGltZVJlcVR5cGU7Cgp0eXBlZGVm
IERscFNldFN5c0RhdGVUaW1lUmVxVHlwZSoJRGxwU2V0U3lzRGF0ZVRpbWVSZXFQdHI7CgkKIAog
CiAKCgoJCiAKIAogCiAKIAogCiAKIAoKIAogCmVudW0gewoJZGxwUmVhZFN0b3JhZ2VJbmZvUmVx
QXJnSUQJCT0gMHgyMCAKCX07Cgp0eXBlZGVmIHN0cnVjdCBEbHBSZWFkU3RvckluZm9SZXFUeXBl
IHsKCQkJCQkJCQkJCQkJIAoJVUludDgJCQkJCXN0YXJ0Q2FyZE5vOwkgCgkJCQkJCQkJCQkJCSAK
CVVJbnQ4CQkJCQl1bnVzZWQ7CQkJIAoJCQkJCQkJCQkJCQkgCgl9IERscFJlYWRTdG9ySW5mb1Jl
cVR5cGU7CgoKIAogCmVudW0gewoJZGxwUmVhZFN0b3JhZ2VJbmZvUmVzcEFyZ0lECQk9IDB4MjAg
LAoJZGxwUmVhZFN0b3JhZ2VJbmZvRXhSZXNwQXJnSUQJCSAKCX07CgogCiAKIAoKIAp0eXBlZGVm
IHN0cnVjdCBEbHBDYXJkSW5mb0hkclR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJdG90
YWxTaXplOwkJIAoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJY2FyZE5vOwkJCSAKCVVJbnQxNgkJ
CQljYXJkVmVyc2lvbjsJIAoJRGxwRGF0ZVRpbWVUeXBlCWNyRGF0ZTsJCQkgCglVSW50MzIJCQkJ
cm9tU2l6ZTsJCQkgCglVSW50MzIJCQkJcmFtU2l6ZTsJCQkgCglVSW50MzIJCQkJZnJlZVJhbTsJ
CQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQljYXJkTmFtZVNpemU7CSAKCVVJbnQ4CQkJCQlt
YW51Zk5hbWVTaXplOwkgCgkJCQkJCQkJCQkJCSAKCX0gRGxwQ2FyZEluZm9IZHJUeXBlOwoKdHlw
ZWRlZiBzdHJ1Y3QgRGxwQ2FyZEluZm9UeXBlIHsKCQkJCQkJCQkJCQkJIAoJRGxwQ2FyZEluZm9I
ZHJUeXBlCQkJCQkgCgkJCQkJCQloZWFkZXI7CQkJIAoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJ
Y2FyZE5hbWVBbmRNYW51ZlsyXTsKCQkJCQkJCQkJCQkJIAoJIAoJIAoJfSBEbHBDYXJkSW5mb1R5
cGU7CgoJCnR5cGVkZWYgc3RydWN0IERscFJlYWRTdG9ySW5mb1Jlc3BIZHJUeXBlIHsKCQkJCQkJ
CQkJCQkJIAoJVUludDgJCQkJCWxhc3RDYXJkTm87CQkgCglVSW50OAkJCQkJbW9yZTsJCQkJIAoJ
VUludDgJCQkJCXVudXNlZDsJCQkgCglVSW50OAkJCQkJYWN0Q291bnQ7CQkgCgkJCQkJCQkJCQkJ
CSAKCX0gRGxwUmVhZFN0b3JJbmZvUmVzcEhkclR5cGU7Cgp0eXBlZGVmIHN0cnVjdCBEbHBSZWFk
U3RvckluZm9SZXNwVHlwZSB7CgkJCQkJCQkJCQkJCSAKCURscFJlYWRTdG9ySW5mb1Jlc3BIZHJU
eXBlCQkJIAoJCQkJCQkJaGVhZGVyOwkJCSAKCQkJCQkJCQkJCQkJIAoJRGxwQ2FyZEluZm9UeXBl
CWNhcmRJbmZvWzFdOwkgCgl9IERscFJlYWRTdG9ySW5mb1Jlc3BUeXBlOwoKCiAKIAogCnR5cGVk
ZWYgc3RydWN0IERscFJlYWRTdG9ySW5mb0V4UmVzcFR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50
MTYJCQkJcm9tREJDb3VudDsJCSAKCVVJbnQxNgkJCQlyYW1EQkNvdW50OwkJIAoJVUludDMyCQkJ
CWR3UmVzZXJ2ZWQxOwkgCglVSW50MzIJCQkJZHdSZXNlcnZlZDI7CSAKCVVJbnQzMgkJCQlkd1Jl
c2VydmVkMzsJIAoJVUludDMyCQkJCWR3UmVzZXJ2ZWQ0OwkgCgkJCQkJCQkJCQkJCSAKCX0gRGxw
UmVhZFN0b3JJbmZvRXhSZXNwVHlwZTsKCQoJCgkKCQogCiAKIAogCiAKIAogCiAKCiAKIAoKCnR5
cGVkZWYgc3RydWN0IERscFJlYWREQkxpc3RSZXFUeXBlIHsKCQkJCQkJCQkJCQkJIAoJVUludDgJ
CQkJCXNyY2hGbGFnczsJCSAKCVVJbnQ4CQkJCQljYXJkTm87CQkJIAoJVUludDE2CQkJCXN0YXJ0
SW5kZXg7CQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJIAoJfSBEbHBSZWFkREJMaXN0UmVx
VHlwZTsKCgoKCgoKIAogCgoKIAp0eXBlZGVmIHN0cnVjdCBEbHBEQkluZm9IZHJUeXBlIHsKCQkJ
CQkJCQkJCQkJIAoJVUludDgJCQkJCXRvdGFsU2l6ZTsJCSAKCQkJCQkJCQkJCQkJIAoJVUludDgJ
CQkJCW1pc2NGbGFnczsJCSAKCVVJbnQxNgkJCQlkYkZsYWdzOwkJCSAKCQkJCQkJCQkJCQkJIAoJ
CQkJCQkJCQkJCQkgCglVSW50MzIJCQkJdHlwZTsJCQkJIAoJVUludDMyCQkJCWNyZWF0b3I7CQkJ
IAoJVUludDE2CQkJCXZlcnNpb247CQkJIAoJVUludDMyCQkJCW1vZE51bTsJCQkgCglEbHBEYXRl
VGltZVR5cGUJY3JEYXRlOwkJCSAKCURscERhdGVUaW1lVHlwZQltb2REYXRlOwkJCSAKCURscERh
dGVUaW1lVHlwZQliYWNrdXBEYXRlOwkJIAoJVUludDE2CQkJCWRiSW5kZXg7CQkJIAoJCQkJCQkJ
CQkJCQkgCgl9IERscERCSW5mb0hkclR5cGU7CgogCgoKCiAKCgoKdHlwZWRlZiBzdHJ1Y3QgRGxw
REJJbmZvVHlwZSB7CgkJCQkJCQkJCQkJCSAKCURscERCSW5mb0hkclR5cGUJaGVhZGVyOwkJCSAK
CQkJCQkJCQkJCQkJIAoJVUludDgJCQkJCW5hbWVbMl07CQkJIAoJCQkJCQkJCQkJCQkgCgl9IERs
cERCSW5mb1R5cGU7CgoJCnR5cGVkZWYgc3RydWN0IERscFJlYWREQkxpc3RSZXNwSGRyVHlwZSB7
CgkJCQkJCQkJCQkJCSAKCVVJbnQxNgkJCQlsYXN0SW5kZXg7CQkgCglVSW50OAkJCQkJZmxhZ3M7
CQkJIAoJVUludDgJCQkJCWFjdENvdW50OwkJIAoJCQkJCQkJCQkJCQkgCgl9IERscFJlYWREQkxp
c3RSZXNwSGRyVHlwZTsKCiAKIAogCgoJCnR5cGVkZWYgc3RydWN0IERscFJlYWREQkxpc3RSZXNw
VHlwZSB7CgkJCQkJCQkJCQkJCSAKCURscFJlYWREQkxpc3RSZXNwSGRyVHlwZQkJCSAKCQkJCQkJ
CWhlYWRlcjsJCQkgCgkJCQkJCQkJCQkJCSAKCURscERCSW5mb1R5cGUJCWRiSW5mb1sxXTsJCSAK
CX0gRGxwUmVhZERCTGlzdFJlc3BUeXBlOwoJCgogCiAKIAogCiAKIAogCiAKIAogCiAKCiAKIAoK
CnR5cGVkZWYgc3RydWN0IERscE9wZW5EQlJlcUhkclR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50
OAkJCQkJY2FyZE5vOwkJCSAKCVVJbnQ4CQkJCQltb2RlOwkJCQkgCgkJCQkJCQkJCQkJCSAKCX0g
RGxwT3BlbkRCUmVxSGRyVHlwZTsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IERscE9wZW5EQlJlcVR5
cGUgewoJCQkJCQkJCQkJCQkgCglEbHBPcGVuREJSZXFIZHJUeXBlCQkJCQkgCgkJCQkJCQloZWFk
ZXI7CQkJIAoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJbmFtZVsyXTsJCQkgCgkJCQkJCQkJCQkJ
CSAKCX0gRGxwT3BlbkRCUmVxVHlwZTsKCnR5cGVkZWYgRGxwT3BlbkRCUmVxVHlwZSoJCURscE9w
ZW5EQlJlcVB0cjsKCgkKIAogCgogCiAKIAoKCQoJCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgog
CiAKCgp0eXBlZGVmIHN0cnVjdCBEbHBDcmVhdGVEQlJlcUhkclR5cGUgewoJCQkJCQkJCQkJCQkg
CglVSW50MzIJCQkJY3JlYXRvcjsJCQkgCglVSW50MzIJCQkJdHlwZTsJCQkJIAoJVUludDgJCQkJ
CWNhcmRObzsJCQkgCglVSW50OAkJCQkJdW51c2VkOwkJCSAKCVVJbnQxNgkJCQlkYkZsYWdzOwkJ
CSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkgCglVSW50MTYJCQkJdmVyc2lvbjsJCQkgCgkJ
CQkJCQkJCQkJCSAKCX0gRGxwQ3JlYXRlREJSZXFIZHJUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgRGxw
Q3JlYXRlREJSZXFUeXBlIHsKCQkJCQkJCQkJCQkJIAoJRGxwQ3JlYXRlREJSZXFIZHJUeXBlCQkJ
CSAKCQkJCQkJCWhlYWRlcjsJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQluYW1lWzJdOwkJ
CSAKCQkJCQkJCQkJCQkJIAoJfSBEbHBDcmVhdGVEQlJlcVR5cGU7Cgp0eXBlZGVmIERscENyZWF0
ZURCUmVxVHlwZSoJCURscENyZWF0ZURCUmVxUHRyOwoKCQogCiAKCgogCiAKCgoJCiAKIAogCiAK
IAogCiAKIAogCgogCiAKdHlwZWRlZiBlbnVtIHsKCWRscENsb3NlREJSZXFBcmdJRCA9IDB4MjAg
LAkJCQkgCglkbHBDbG9zZURCQWxsUmVxQXJnSUQsCQkJCQkJCQkgCglkbHBDbG9zZURCRXhSZXFB
cmdJRAkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCSAKCX0gRGxwQ2xvc2VEQlJlcUFyZ0lEOwoK
IAogCiAKIAp0eXBlZGVmIFVJbnQ4IERscENsb3NlREJSZXFUeXBlOwoKIAogCiAKCgogCnR5cGVk
ZWYgc3RydWN0IERscENsb3NlREJFeFJlcVR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJ
ZGJJRDsJCQkJIAoJVUludDgJCQkJCWJPcHRGbGFnczsJCSAKCQkJCQkJCQkJCQkJIAoJfSBEbHBD
bG9zZURCRXhSZXFUeXBlOwoKIAoKCgoKCgoKIAogCiAKCgoJCiAKIAogCiAKIAogCiAKIAogCiAK
CiAKIAoKCnR5cGVkZWYgc3RydWN0IERscERlbGV0ZURCUmVxSGRyVHlwZSB7CgkJCQkJCQkJCQkJ
CSAKCVVJbnQ4CQkJCQljYXJkTm87CQkJIAoJVUludDgJCQkJCXVudXNlZDsJCQkgCgkJCQkJCQkJ
CQkJCSAKCX0gRGxwRGVsZXRlREJSZXFIZHJUeXBlOwoKCnR5cGVkZWYgc3RydWN0IERscERlbGV0
ZURCUmVxVHlwZSB7CgkJCQkJCQkJCQkJCSAKCURscERlbGV0ZURCUmVxSGRyVHlwZQkJCQkgCgkJ
CQkJCQloZWFkZXI7CQkJIAoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJbmFtZVsyXTsJCQkgCgkJ
CQkJCQkJCQkJCSAKCX0gRGxwRGVsZXRlREJSZXFUeXBlOwoKdHlwZWRlZiBEbHBEZWxldGVEQlJl
cVR5cGUqCQlEbHBEZWxldGVEQlJlcVB0cjsKCgogCiAKIAoKCiAKIAogCiAKIAogCiAKIAoKIAog
CgoKIAogCgkKCiAKIAoKCgp0eXBlZGVmIHN0cnVjdCBEbHBSZWFkT3BlbkRCSW5mb1Jlc3BUeXBl
IHsKCQkJCQkJCQkJCQkJIAoJVUludDE2CQkJCW51bVJlYzsJCQkgCgkJCQkJCQkJCQkJCSAKCX0g
RGxwUmVhZE9wZW5EQkluZm9SZXNwVHlwZTsKCgkKIAogCiAKIAogCiAKIAogCiAKCiAKIAoKCnR5
cGVkZWYgc3RydWN0IERscE1vdmVDYXRlZ29yeVJlcVR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50
OAkJCQkJZGJJRDsJCQkJIAoJVUludDgJCQkJCWZyb21DYXRlZ29yeTsJIAoJVUludDgJCQkJCXRv
Q2F0ZWdvcnk7CQkgCglVSW50OAkJCQkJdW51c2VkOwkJCSAKCQkJCQkJCQkJCQkJIAoJfSBEbHBN
b3ZlQ2F0ZWdvcnlSZXFUeXBlOwoJCgogCiAKIAoKCQogCiAKIAogCiAKIAogCiAKIAogCgogCiAK
Cgp0eXBlZGVmIHN0cnVjdCBEbHBSZWFkQmxvY2tSZXFUeXBlIHsKCQkJCQkJCQkJCQkJIAoJVUlu
dDgJCQkJCWRiSUQ7CQkJCSAKCVVJbnQ4CQkJCQl1bnVzZWQ7CQkJIAoJVUludDE2CQkJCW9mZnNl
dDsJCQkgCglVSW50MTYJCQkJbnVtQnl0ZXM7CQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJ
IAoJfSBEbHBSZWFkQmxvY2tSZXFUeXBlOwoJCgogCiAKCgp0eXBlZGVmIHN0cnVjdCBEbHBSZWFk
QmxvY2tSZXNwSGRyVHlwZSB7CgkJCQkJCQkJCQkJCSAKCVVJbnQxNgkJCQlibG9ja1NpemU7CQkg
CgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJIAoJfSBEbHBSZWFkQmxvY2tSZXNwSGRyVHlwZTsK
CnR5cGVkZWYgc3RydWN0IERscFJlYWRCbG9ja1Jlc3BUeXBlIHsKCQkJCQkJCQkJCQkJIAoJRGxw
UmVhZEJsb2NrUmVzcEhkclR5cGUJCQkJIAoJCQkJCQkJaGVhZGVyOwkJCSAKCQkJCQkJCQkJCQkJ
IAoJVUludDgJCQkJCWRhdGFbMl07CQkJIAoJfSBEbHBSZWFkQmxvY2tSZXNwVHlwZTsKCgkKIAog
CiAKIAogCiAKIAogCiAKIAoKIAogCgoKdHlwZWRlZiBzdHJ1Y3QgRGxwV3JpdGVCbG9ja1JlcUhk
clR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJZGJJRDsJCQkJIAoJVUludDgJCQkJCXVu
dXNlZDsJCQkgCglVSW50MTYJCQkJYmxvY2tTaXplOwkJIAoJCQkJCQkJCQkJCQkgCgl9IERscFdy
aXRlQmxvY2tSZXFIZHJUeXBlOwoKCnR5cGVkZWYgc3RydWN0IERscFdyaXRlQmxvY2tSZXFUeXBl
IHsKCQkJCQkJCQkJCQkJIAoJRGxwV3JpdGVCbG9ja1JlcUhkclR5cGUJCQkJIAoJCQkJCQkJaGVh
ZGVyOwkJCSAKCQkJCQkJCQkJCQkJIAoJVUludDgJCQkJCWRhdGFbMl07CQkJIAoJfSBEbHBXcml0
ZUJsb2NrUmVxVHlwZTsKCgogCiAKIAoKCgogCiAKIAogCiAKIAogCiAKIAoKIAogCiAKCgogCiAK
IAoKCiAKIAogCiAKIAogCiAKIAogCgogCiAKIAoKCiAKIAogCgoKCiAKIAogCiAKIAogCiAKCiAK
IAoKIAogCgoKIAogCiAKCiAKCgoKIAogCiAKIAogCiAKIAogCgogCiAKCgogCiAKCiAKIAogCgoK
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCgp0eXBlZGVmIGVudW0gewoJZGxwUmVhZFJlY29yZElk
QXJnSUQgPSAweDIwICwKCWRscFJlYWRSZWNvcmRJbmRleEFyZ0lECgl9IERscFJlYWRSZWNvcmRS
ZXFBcmdJRDsKCiAKIAp0eXBlZGVmIHN0cnVjdCBEbHBSZWFkUmVjb3JkQnlJRFJlcVR5cGUgewoJ
CQkJCQkJCQkJCQkgCglVSW50OAkJCQkJZGJJRDsJCQkJIAoJVUludDgJCQkJCXVudXNlZDsJCQkg
CglVSW50MzIJCQkJcmVjb3JkSUQ7CQkgCglVSW50MTYJCQkJb2Zmc2V0OwkJCSAKCVVJbnQxNgkJ
CQludW1CeXRlczsJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkgCgl9IERscFJlYWRSZWNv
cmRCeUlEUmVxVHlwZTsKCiAKIAp0eXBlZGVmIHN0cnVjdCBEbHBSZWFkUmVjb3JkQnlJbmRleFJl
cVR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJZGJJRDsJCQkJIAoJVUludDgJCQkJCXVu
dXNlZDsJCQkgCglVSW50MTYJCQkJaW5kZXg7CQkJIAoJVUludDE2CQkJCW9mZnNldDsJCQkgCglV
SW50MTYJCQkJbnVtQnl0ZXM7CQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJIAoJfSBEbHBS
ZWFkUmVjb3JkQnlJbmRleFJlcVR5cGU7CgoKIAogCgoKdHlwZWRlZiBzdHJ1Y3QgRGxwUmVhZFJl
Y29yZFJlc3BIZHJUeXBlIHsKCQkJCQkJCQkJCQkJIAoJVUludDMyCQkJCXJlY29yZElEOwkJIAoJ
VUludDE2CQkJCWluZGV4OwkJCSAKCVVJbnQxNgkJCQlyZWNTaXplOwkJCSAKCVVJbnQ4CQkJCQlh
dHRyaWJ1dGVzOwkJIAoJVUludDgJCQkJCWNhdGVnb3J5OwkJIAoJCQkJCQkJCQkJCQkgCgl9IERs
cFJlYWRSZWNvcmRSZXNwSGRyVHlwZTsKCnR5cGVkZWYgc3RydWN0IERscFJlYWRSZWNvcmRSZXNw
VHlwZSB7CgkJCQkJCQkJCQkJCSAKCURscFJlYWRSZWNvcmRSZXNwSGRyVHlwZQkJCSAKCQkJCQkJ
CWhlYWRlcjsJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQlkYXRhWzJdOwkJCSAKCX0gRGxw
UmVhZFJlY29yZFJlc3BUeXBlOwoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKCgogCiAKdHlw
ZWRlZiBzdHJ1Y3QgRGxwUmVhZFJlY29yZElETGlzdFJlcVR5cGUgewoJCQkJCQkJCQkJCQkgCglV
SW50OAkJCQkJZGJJRDsJCQkJIAoJVUludDgJCQkJCWZsYWdzOwkJCSAKCVVJbnQxNgkJCQlzdGFy
dDsJCQkgCglVSW50MTYJCQkJbWF4RW50cmllczsJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJ
CQkgCgl9IERscFJlYWRSZWNvcmRJRExpc3RSZXFUeXBlOwoKIAogCgoKCiAKIAoKCnR5cGVkZWYg
c3RydWN0IERscFJlYWRSZWNvcmRJRExpc3RSZXNwSGRyVHlwZSB7CgkJCQkJCQkJCQkJCSAKCVVJ
bnQxNgkJCQludW1FbnRyaWVzOwkJIAoJCQkJCQkJCQkJCQkgCgl9IERscFJlYWRSZWNvcmRJRExp
c3RSZXNwSGRyVHlwZTsKCnR5cGVkZWYgc3RydWN0IERscFJlYWRSZWNvcmRJRExpc3RSZXNwVHlw
ZSB7CgkJCQkJCQkJCQkJCSAKCURscFJlYWRSZWNvcmRJRExpc3RSZXNwSGRyVHlwZQkgCgkJCQkJ
CQloZWFkZXI7CQkJIAoJCQkJCQkJCQkJCQkgCglVSW50MzIJCQkJcmVjSURbMV07CQkgCgl9IERs
cFJlYWRSZWNvcmRJRExpc3RSZXNwVHlwZTsKCgkKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgog
CiAKCgogCnR5cGVkZWYgc3RydWN0IERscFdyaXRlUmVjb3JkUmVxSGRyVHlwZSB7CgkJCQkJCQkJ
CQkJCSAKCVVJbnQ4CQkJCQlkYklEOwkJCQkgCglVSW50OAkJCQkJZmxhZ3M7CQkJIAoJVUludDMy
CQkJCXJlY29yZElEOwkJIAoJVUludDgJCQkJCWF0dHJpYnV0ZXM7CQkgCgkJCQkJCQkJCQkJCSAK
CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQljYXRl
Z29yeTsJCSAKCQkJCQkJCQkJCQkJIAoJfSBEbHBXcml0ZVJlY29yZFJlcUhkclR5cGU7CgoKCQkJ
CQkJCQkJCQkJCQkJCSAKCnR5cGVkZWYgc3RydWN0IERscFdyaXRlUmVjb3JkUmVxVHlwZSB7CgkJ
CQkJCQkJCQkJCSAKCURscFdyaXRlUmVjb3JkUmVxSGRyVHlwZQkJCSAKCQkJCQkJCWhlYWRlcjsJ
CQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQlkYXRhWzJdOwkJCSAKCX0gRGxwV3JpdGVSZWNv
cmRSZXFUeXBlOwoKCiAKIAoKCnR5cGVkZWYgc3RydWN0IERscFdyaXRlUmVjb3JkUmVzcFR5cGUg
ewoJCQkJCQkJCQkJCQkgCglVSW50MzIJCQkJcmVjb3JkSUQ7CQkgCgkJCQkJCQkJCQkJCSAKCX0g
RGxwV3JpdGVSZWNvcmRSZXNwVHlwZTsKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCiAKIAoK
CiAKdHlwZWRlZiBzdHJ1Y3QgRGxwRGVsZXRlUmVjb3JkUmVxVHlwZSB7CgkJCQkJCQkJCQkJCSAK
CVVJbnQ4CQkJCQlkYklEOwkJCQkgCglVSW50OAkJCQkJZmxhZ3M7CQkJIAoJVUludDMyCQkJCXJl
Y29yZElEOwkJIAoJCQkJCQkJCQkJCQkgCgl9IERscERlbGV0ZVJlY29yZFJlcVR5cGU7CgogCiAK
CgogCiAKCgogCiAKIAoKCgogCiAKIAogCiAKIAogCiAKIAoKdHlwZWRlZiBlbnVtIHsKCWRscFJl
YWRSZXNvdXJjZUluZGV4QXJnSUQgPSAweDIwICwKCWRscFJlYWRSZXNvdXJjZVR5cGVBcmdJRAoJ
fSBEbHBSZWFkUmVzb3VyY2VSZXFBcmdJRDsKCiAKIAp0eXBlZGVmIHN0cnVjdCBEbHBSZWFkUmVz
b3VyY2VCeUluZGV4UmVxVHlwZSB7CgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQlkYklEOwkJCQkg
CglVSW50OAkJCQkJdW51c2VkOwkJCSAKCVVJbnQxNgkJCQlpbmRleDsJCQkgCglVSW50MTYJCQkJ
b2Zmc2V0OwkJCSAKCVVJbnQxNgkJCQludW1CeXRlczsJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJ
CQkJCQkgCgl9IERscFJlYWRSZXNvdXJjZUJ5SW5kZXhSZXFUeXBlOwoKIAogCnR5cGVkZWYgc3Ry
dWN0IERscFJlYWRSZXNvdXJjZUJ5VHlwZVJlcVR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50OAkJ
CQkJZGJJRDsJCQkJIAoJVUludDgJCQkJCXVudXNlZDsJCQkgCglVSW50MzIJCQkJdHlwZTsJCQkJ
IAoJVUludDE2CQkJCWlkOwkJCQkgCglVSW50MTYJCQkJb2Zmc2V0OwkJCSAKCVVJbnQxNgkJCQlu
dW1CeXRlczsJCSAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkgCgl9IERscFJlYWRSZXNvdXJj
ZUJ5VHlwZVJlcVR5cGU7CgkKCiAKIAoKCnR5cGVkZWYgc3RydWN0IERscFJlYWRSZXNvdXJjZVJl
c3BIZHJUeXBlIHsKCQkJCQkJCQkJCQkJIAoJVUludDMyCQkJCXR5cGU7CQkJCSAKCVVJbnQxNgkJ
CQlpZDsJCQkJIAoJVUludDE2CQkJCWluZGV4OwkJCSAKCVVJbnQxNgkJCQlyZXNTaXplOwkJCSAK
CQkJCQkJCQkJCQkJIAoJfSBEbHBSZWFkUmVzb3VyY2VSZXNwSGRyVHlwZTsKCnR5cGVkZWYgc3Ry
dWN0IERscFJlYWRSZXNvdXJjZVJlc3BUeXBlIHsKCQkJCQkJCQkJCQkJIAoJRGxwUmVhZFJlc291
cmNlUmVzcEhkclR5cGUJCQkgCgkJCQkJCQloZWFkZXI7CQkJIAoJCQkJCQkJCQkJCQkgCglVSW50
OAkJCQkJcmVzRGF0YVsyXTsJCSAKCX0gRGxwUmVhZFJlc291cmNlUmVzcFR5cGU7CgoKCiAKIAog
CiAKIAogCiAKIAogCgogCiAKCgp0eXBlZGVmIHN0cnVjdCBEbHBXcml0ZVJlc291cmNlUmVxSGRy
VHlwZSB7CgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQlkYklEOwkJCQkgCglVSW50OAkJCQkJdW51
c2VkOwkJCSAKCVVJbnQzMgkJCQl0eXBlOwkJCQkgCglVSW50MTYJCQkJaWQ7CQkJCSAKCVVJbnQx
NgkJCQlyZXNTaXplOwkJCSAKCQkJCQkJCQkJCQkJIAoJfSBEbHBXcml0ZVJlc291cmNlUmVxSGRy
VHlwZTsKCnR5cGVkZWYgc3RydWN0IERscFdyaXRlUmVzb3VyY2VSZXFUeXBlIHsKCQkJCQkJCQkJ
CQkJIAoJRGxwV3JpdGVSZXNvdXJjZVJlcUhkclR5cGUJCQkgCgkJCQkJCQloZWFkZXI7CQkJIAoJ
CQkJCQkJCQkJCQkgCglVSW50OAkJCQkJZGF0YVsyXTsJCQkgCgl9IERscFdyaXRlUmVzb3VyY2VS
ZXFUeXBlOwoKIAogCiAKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCgogCiAKCgp0eXBlZGVmIHN0
cnVjdCBEbHBEZWxldGVSZXNvdXJjZVJlcVR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJ
ZGJJRDsJCQkJIAoJVUludDgJCQkJCWZsYWdzOwkJCSAKCVVJbnQzMgkJCQl0eXBlOwkJCQkgCglV
SW50MTYJCQkJaWQ7CQkJCSAKCQkJCQkJCQkJCQkJIAoJfSBEbHBEZWxldGVSZXNvdXJjZVJlcVR5
cGU7CgogCgoKCiAKIAogCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgogCiAKCgogCiAKCiAK
IAogCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAogCgoKIAogCgoKIAogCiAKCgoKIAogCiAK
IAogCiAKIAogCiAKIAoKIAogCmVudW0JewoJZGxwQ2FsbEFwcGxpY2F0aW9uUmVxQXJnSURWMTAg
PSAweDIwICwJIAoJZGxwQ2FsbEFwcFJlcUFyZ0lECQkJCQkJCQkJCSAKCX07CgogCnR5cGVkZWYg
c3RydWN0IERscENhbGxBcHBsaWNhdGlvblJlcUhkclR5cGVWMTAgewoJCQkJCQkJCQkJCQkgCglV
SW50MzIJCQkJY3JlYXRvcjsJCQkgCglVSW50MTYJCQkJYWN0aW9uOwkJCSAKCVVJbnQxNgkJCQlw
YXJhbVNpemU7CQkgCgkJCQkJCQkJCQkJCSAKCX0gRGxwQ2FsbEFwcGxpY2F0aW9uUmVxSGRyVHlw
ZVYxMDsKCnR5cGVkZWYgc3RydWN0IERscENhbGxBcHBsaWNhdGlvblJlcVR5cGVWMTAgewoJCQkJ
CQkJCQkJCQkgCglEbHBDYWxsQXBwbGljYXRpb25SZXFIZHJUeXBlVjEwCSAKCQkJCQkJCWhlYWRl
cjsJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQlwYXJhbURhdGFbMl07CSAKCX0gRGxwQ2Fs
bEFwcGxpY2F0aW9uUmVxVHlwZVYxMDsKCgogCnR5cGVkZWYgc3RydWN0IERscENhbGxBcHBSZXFI
ZHJUeXBlIHsKCQkJCQkJCQkJCQkJIAoJVUludDMyCQkJCWNyZWF0b3I7CQkJIAoJVUludDMyCQkJ
CXR5cGU7CQkJCSAKCVVJbnQxNgkJCQlhY3Rpb247CQkJIAoJVUludDMyCQkJCWR3UGFyYW1TaXpl
OwkgCglVSW50MzIJCQkJZHdSZXNlcnZlZDE7CSAKCVVJbnQzMgkJCQlkd1Jlc2VydmVkMjsJIAoJ
CQkJCQkJCQkJCQkgCgl9IERscENhbGxBcHBSZXFIZHJUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgRGxw
Q2FsbEFwcFJlcVR5cGUgewoJCQkJCQkJCQkJCQkgCglEbHBDYWxsQXBwUmVxSGRyVHlwZQkJCQkJ
IAoJCQkJCQkJaGRyOwkJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQlwYXJhbURhdGFbMl07
CSAKCX0gRGxwQ2FsbEFwcFJlcVR5cGU7CgoKCiAKIAplbnVtCXsKCWRscENhbGxBcHBsaWNhdGlv
blJlc3BBcmdJRFYxMCA9IDB4MjAgLAkJIAoJZGxwQ2FsbEFwcFJlc3BBcmdJRAkJCQkJCQkJCQkJ
IAoJfTsKCiAKdHlwZWRlZiBzdHJ1Y3QgRGxwQ2FsbEFwcGxpY2F0aW9uUmVzcEhkclR5cGVWMTAg
ewoJCQkJCQkJCQkJCQkgCglVSW50MTYJCQkJYWN0aW9uOwkJCSAKCVVJbnQxNgkJCQlyZXN1bHRD
b2RlOwkJIAoJVUludDE2CQkJCXJlc3VsdFNpemU7CQkgCgkJCQkJCQkJCQkJCSAKCX0gRGxwQ2Fs
bEFwcGxpY2F0aW9uUmVzcEhkclR5cGVWMTA7Cgp0eXBlZGVmIHN0cnVjdCBEbHBDYWxsQXBwbGlj
YXRpb25SZXNwVHlwZVYxMCB7CgkJCQkJCQkJCQkJCSAKCURscENhbGxBcHBsaWNhdGlvblJlc3BI
ZHJUeXBlVjEwCSAKCQkJCQkJCWhlYWRlcjsJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQly
ZXN1bHREYXRhWzJdOwkgCgl9IERscENhbGxBcHBsaWNhdGlvblJlc3BUeXBlVjEwOwoKIAp0eXBl
ZGVmIHN0cnVjdCBEbHBDYWxsQXBwUmVzcEhkclR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50MzIJ
CQkJCWR3UmVzdWx0Q29kZTsJIAoJVUludDMyCQkJCQlkd1Jlc3VsdFNpemU7CSAKCVVJbnQzMgkJ
CQkJZHdSZXNlcnZlZDE7CSAKCVVJbnQzMgkJCQkJZHdSZXNlcnZlZDI7CSAKCQkJCQkJCQkJCQkJ
IAoJfSBEbHBDYWxsQXBwUmVzcEhkclR5cGU7Cgp0eXBlZGVmIHN0cnVjdCBEbHBDYWxsQXBwUmVz
cFR5cGUgewoJCQkJCQkJCQkJCQkgCglEbHBDYWxsQXBwUmVzcEhkclR5cGUJCQkJIAoJCQkJCQkJ
aGRyOwkJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQlyZXN1bHREYXRhWzJdOwkgCgl9IERs
cENhbGxBcHBSZXNwVHlwZTsKCgoKIAogCiAKIAogCiAKCiAKIAogCgogCiAKIAoKCgogCiAKIAog
CiAKIAogCiAKIAoKIAogCgoKdHlwZWRlZiBzdHJ1Y3QgRGxwQWRkU3luY0xvZ0VudHJ5UmVxVHlw
ZSB7CgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQl0ZXh0WzJdOwkJCSAKCQkJCQkJCQkJCQkJIAoJ
fSBEbHBBZGRTeW5jTG9nRW50cnlSZXFUeXBlOwoKIAogCiAKCgoKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAoKIAogCiAKCiAKIAogCgoJCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CgogCiAKIAoKIAogCiAKCgoJCiAKIAogCiAKIAogCiAKIAogCiAKCiAKIAoKCnR5cGVkZWYgZW51
bSBEbHBTeW5jVGVybUNvZGUgewoJZGxwVGVybUNvZGVOb3JtYWwgPSAwLAkJCQkgCglkbHBUZXJt
Q29kZU91dE9mTWVtb3J5LAkJCQkgCglkbHBUZXJtQ29kZVVzZXJDYW4sCQkJCQkgCglkbHBUZXJt
Q29kZU90aGVyLAkJCQkJCSAKCWRscFRlcm1Db2RlSW5jb21wYXRpYmxlUHJvZHVjdHMJIAoJfSBE
bHBTeW5jVGVybUNvZGU7CgkKCQp0eXBlZGVmIHN0cnVjdCBEbHBFbmRPZlN5bmNSZXFUeXBlIHsK
CQkJCQkJCQkJCQkJIAoJVUludDE2CQkJCXRlcm1Db2RlOwkJIAoJCQkJCQkJCQkJCQkgCgl9IERs
cEVuZE9mU3luY1JlcVR5cGU7CgoKIAogCiAKCgoKIAogCiAKIAogCiAKCgoKIAogCnR5cGVkZWYg
c3RydWN0IERscFJlYWROZXh0UmVjSW5DYXRlZ29yeVJlcVR5cGUgewoJCQkJCQkJCQkJCQkgCglV
SW50OAkJCQkJZGJJRDsJCQkJIAoJVUludDgJCQkJCWNhdGVnb3J5OwkJIAoJCQkJCQkJCQkJCQkg
Cgl9IERscFJlYWROZXh0UmVjSW5DYXRlZ29yeVJlcVR5cGU7CgoKIAogCiAKCiAKCgoKIAogCiAK
IAogCiAKCiAKIAogCgogCiAKIAoKCgogCiAKIAogCiAKIAogCiAKIAoKCgogCiAKdHlwZWRlZiBz
dHJ1Y3QgRGxwUmVhZEFwcFByZWZlcmVuY2VSZXFUeXBlIHsKCQkJCQkJCQkJCQkJIAoJVUludDMy
CQkJCWNyZWF0b3I7CQkJIAoJVUludDE2CQkJCWlkOwkJCQkgCglVSW50MTYJCQkJcmVxQnl0ZXM7
CQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQlmbGFnczsJCQkgCglVSW50OAkJCQkJdW51c2Vk
OwkJCSAKCQkJCQkJCQkJCQkJIAoJfSBEbHBSZWFkQXBwUHJlZmVyZW5jZVJlcVR5cGU7CgoKCgog
CiAKCgp0eXBlZGVmIHN0cnVjdCBEbHBSZWFkQXBwUHJlZmVyZW5jZVJlc3BIZHJUeXBlIHsKCQkJ
CQkJCQkJCQkJIAoJVUludDE2CQkJCXZlcnNpb247CQkJIAoJVUludDE2CQkJCWFjdHVhbFNpemU7
CQkgCglVSW50MTYJCQkJcmV0Qnl0ZXM7CQkgCgkJCQkJCQkJCQkJCSAKCX0gRGxwUmVhZEFwcFBy
ZWZlcmVuY2VSZXNwSGRyVHlwZTsKCnR5cGVkZWYgc3RydWN0IERscFJlYWRBcHBQcmVmZXJlbmNl
UmVzcFR5cGUgewoJCQkJCQkJCQkJCQkgCglEbHBSZWFkQXBwUHJlZmVyZW5jZVJlc3BIZHJUeXBl
CSAKCQkJCQkJCWhlYWRlcjsJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQlkYXRhWzJdOwkJ
CSAKCX0gRGxwUmVhZEFwcFByZWZlcmVuY2VSZXNwVHlwZTsKCgkKIAogCiAKIAogCiAKIAogCgog
CiAKCgp0eXBlZGVmIHN0cnVjdCBEbHBXcml0ZUFwcFByZWZlcmVuY2VSZXFIZHJUeXBlIHsKCQkJ
CQkJCQkJCQkJIAoJVUludDMyCQkJCWNyZWF0b3I7CQkJIAoJVUludDE2CQkJCWlkOwkJCQkgCglV
SW50MTYJCQkJdmVyc2lvbjsJCQkgCglVSW50MTYJCQkJcHJlZlNpemU7CQkgCglVSW50OAkJCQkJ
ZmxhZ3M7CQkJIAoJVUludDgJCQkJCXVudXNlZDsJCQkgCgkJCQkJCQkJCQkJCSAKCX0gRGxwV3Jp
dGVBcHBQcmVmZXJlbmNlUmVxSGRyVHlwZTsKCnR5cGVkZWYgc3RydWN0IERscFdyaXRlQXBwUHJl
ZmVyZW5jZVJlcVR5cGUgewoJCQkJCQkJCQkJCQkgCglEbHBXcml0ZUFwcFByZWZlcmVuY2VSZXFI
ZHJUeXBlCSAKCQkJCQkJCWhlYWRlcjsJCQkgCgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQlkYXRh
WzJdOwkJCSAKCX0gRGxwV3JpdGVBcHBQcmVmZXJlbmNlUmVxVHlwZTsKCgogCiAKIAoKCgogCiAK
IAogCiAKIAogCiAKIAogCgogCiAKIAoJCiAKIAoKCnR5cGVkZWYgc3RydWN0IERscFJlYWROZXRT
eW5jSW5mb1Jlc3BIZHJUeXBlIHsKCQkJCQkJCQkJCQkJIAoJVUludDgJCQkJCWxhblN5bmNPbjsJ
CSAKCVVJbnQ4CQkJCQliUmVzZXJ2ZWQxOwkJIAoJVUludDMyCQkJCWR3UmVzZXJ2ZWQxOwkgCglV
SW50MzIJCQkJZHdSZXNlcnZlZDI7CSAKCVVJbnQzMgkJCQlkd1Jlc2VydmVkMzsJIAoJVUludDMy
CQkJCWR3UmVzZXJ2ZWQ0OwkgCglVSW50MTYJCQkJc3luY1BDTmFtZVNpemU7IAoJCQkJCQkJCQkJ
CQkgCglVSW50MTYJCQkJc3luY1BDQWRkclNpemU7IAoJCQkJCQkJCQkJCQkgCglVSW50MTYJCQkJ
c3luY1BDTWFza1NpemU7IAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCX0gRGxwUmVhZE5l
dFN5bmNJbmZvUmVzcEhkclR5cGU7Cgp0eXBlZGVmIHN0cnVjdCBEbHBSZWFkTmV0U3luY0luZm9S
ZXNwVHlwZSB7CgkJCQkJCQkJCQkJCSAKCURscFJlYWROZXRTeW5jSW5mb1Jlc3BIZHJUeXBlCQkg
CgkJCQkJCQloZHI7CQkJCSAKCQkJCQkJCQkJCQkJIAoJVUludDgJCQkJCXN5bmNBZGRyWzJdOwkg
CgkJCQkJCQkJCQkJCSAKCX0gRGxwUmVhZE5ldFN5bmNJbmZvUmVzcFR5cGU7CgoKCQogCiAKIAog
CiAKIAogCiAKIAogCiAKCiAKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgRGxwV3JpdGVOZXRTeW5jSW5m
b1JlcUhkclR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJbW9kRmxhZ3M7CQkgCgkJCQkJ
CQkJCQkJCSAKCQkJCQkJCQkJCQkJIAoJVUludDgJCQkJCWxhblN5bmNPbjsJCSAKCVVJbnQzMgkJ
CQlkd1Jlc2VydmVkMTsJIAoJVUludDMyCQkJCWR3UmVzZXJ2ZWQyOwkgCglVSW50MzIJCQkJZHdS
ZXNlcnZlZDM7CSAKCVVJbnQzMgkJCQlkd1Jlc2VydmVkNDsJIAoJVUludDE2CQkJCXN5bmNQQ05h
bWVTaXplOyAKCQkJCQkJCQkJCQkJIAoJVUludDE2CQkJCXN5bmNQQ0FkZHJTaXplOyAKCQkJCQkJ
CQkJCQkJIAoJVUludDE2CQkJCXN5bmNQQ01hc2tTaXplOyAKCQkJCQkJCQkJCQkJIAoJCQkJCQkJ
CQkJCQkgCgl9IERscFdyaXRlTmV0U3luY0luZm9SZXFIZHJUeXBlOwoKIAogCiAKIAoKCgoKCnR5
cGVkZWYgc3RydWN0IERscFdyaXRlTmV0U3luY0luZm9SZXFUeXBlIHsKCQkJCQkJCQkJCQkJIAoJ
RGxwV3JpdGVOZXRTeW5jSW5mb1JlcUhkclR5cGUKCQkJCQkJCWhkcjsJCQkJIAoJCQkJCQkJCQkJ
CQkgCglVSW50OAkJCQkJc3luY0FkZHJbMl07CSAKCQkJCQkJCQkJCQkJIAoJfSBEbHBXcml0ZU5l
dFN5bmNJbmZvUmVxVHlwZTsKCgkKIAogCiAKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCgogCiAK
Cgp0eXBlZGVmIHN0cnVjdCBEbHBSZWFkRmVhdHVyZVJlcVR5cGUgewoJCQkJCQkJCQkJCQkgCglV
SW50MzIJCQkJZHdGdHJDcmVhdG9yOwkgCglVSW50MTYJCQkJd0Z0ck51bTsJCQkgCgkJCQkJCQkJ
CQkJCSAKCX0gRGxwUmVhZEZlYXR1cmVSZXFUeXBlOwoJCgkKIAogCgoKdHlwZWRlZiBzdHJ1Y3Qg
RGxwUmVhZEZlYXR1cmVSZXNwVHlwZSB7CgkJCQkJCQkJCQkJCSAKCVVJbnQzMgkJCQlkd0ZlYXR1
cmU7CQkgCgkJCQkJCQkJCQkJCSAKCX0gRGxwUmVhZEZlYXR1cmVSZXNwVHlwZTsKCgoKIAogCiAK
IAogCiAKIAogCiAKIAogCgogCiAKCiAKIAplbnVtCXsKCWRscEZpbmREQkJ5TmFtZVJlcUFyZ0lE
ID0gMHgyMCAsCQkgCglkbHBGaW5kREJCeU9wZW5IYW5kbGVSZXFBcmdJRCwJCQkJCSAKCWRscEZp
bmREQkJ5VHlwZUNyZWF0b3JSZXFBcmdJRAkJCQkJIAoJfTsKCiAKCgkJCQkJCQkJCQkJCQkJCQkg
CgkJCQkJCQkJCQkJCQkJCQkgCgoKCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCSAK
CQkJCQkJCQkJCQkJCQkJCQoKCQkJCQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCSAKCQkJ
CQkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJCQkJCSAKCiAKdHlwZWRlZiBzdHJ1Y3QgRGxwRmlu
ZERCQnlOYW1lUmVxSGRyVHlwZSB7CgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQliT3B0RmxhZ3M7
CQkgCglVSW50OAkJCQkJYkNhcmRObzsJCQkgCgkJCQkJCQkJCQkJCSAKCX0gRGxwRmluZERCQnlO
YW1lUmVxSGRyVHlwZTsKCnR5cGVkZWYgc3RydWN0IERscEZpbmREQkJ5TmFtZVJlcVR5cGUgewoJ
CQkJCQkJCQkJCQkgCglEbHBGaW5kREJCeU5hbWVSZXFIZHJUeXBlCQkJIAoJCQkJCQkJaGVhZGVy
OwkJCSAKCQkJCQkJCQkJCQkJIAoJVUludDgJCQkJCW5hbWVbMl07CQkJIAoJfSBEbHBGaW5kREJC
eU5hbWVSZXFUeXBlOwoKCiAKdHlwZWRlZiBzdHJ1Y3QgRGxwRmluZERCQnlPcGVuSGFuZGxlUmVx
VHlwZSB7CgkJCQkJCQkJCQkJCSAKCVVJbnQ4CQkJCQliT3B0RmxhZ3M7CQkgCglVSW50OAkJCQkJ
YkRiSUQ7CQkJIAoJCQkJCQkJCQkJCQkgCgl9IERscEZpbmREQkJ5T3BlbkhhbmRsZVJlcVR5cGU7
CgoKIAp0eXBlZGVmIHN0cnVjdCBEbHBGaW5kREJCeVR5cGVDcmVhdG9yUmVxVHlwZSB7CgkJCQkJ
CQkJCQkJCSAKCVVJbnQ4CQkJCQliT3B0RmxhZ3M7CQkgCglVSW50OAkJCQkJYlNyY2hGbGFnczsJ
CSAKCVVJbnQzMgkJCQlkd1R5cGU7CQkJIAoJVUludDMyCQkJCWR3Q3JlYXRvcjsJCSAKCQkJCQkJ
CQkJCQkJIAoJfSBEbHBGaW5kREJCeVR5cGVDcmVhdG9yUmVxVHlwZTsKCgoKCgkKCQogCiAKIApl
bnVtCXsKCWRscEZpbmREQkJhc2ljUmVzcEFyZ0lEID0gMHgyMCAsCQkgCgkJCQkJCQkJCQkJCQkJ
CQkgCglkbHBGaW5kREJTaXplUmVzcEFyZ0lECQkJCQkJCQkgCgkJCQkJCQkJCQkJCQkJCQkgCgkJ
CQkJCQkJCQkJCQkJCQkgCgl9OwoKCiAKCnR5cGVkZWYgc3RydWN0IERscEZpbmREQkJhc2ljUmVz
cEhkclR5cGUgewoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJYkNhcmRObzsJCQkgCglVSW50OAkJ
CQkJYlJlc2VydmVkOwkJIAoJVUludDMyCQkJCWR3TG9jYWxJRDsJCSAKCVVJbnQzMgkJCQlkd09w
ZW5SZWY7CQkgCgkJCQkJCQkJCQkJCSAKCQkJCQkJCQkJCQkJIAoJRGxwREJJbmZvSGRyVHlwZQlp
bmZvOwkJCQkgCgkJCQkJCQkJCQkJCSAKCX0gRGxwRmluZERCQmFzaWNSZXNwSGRyVHlwZTsKCnR5
cGVkZWYgc3RydWN0IERscEZpbmREQkJhc2ljUmVzcFR5cGUgewoJCQkJCQkJCQkJCQkgCglEbHBG
aW5kREJCYXNpY1Jlc3BIZHJUeXBlCQkJIAoJCQkJCQkJaGVhZGVyOwkJCSAKCQkJCQkJCQkJCQkJ
IAoJVUludDgJCQkJCW5hbWVbMl07CQkJIAoJfSBEbHBGaW5kREJCYXNpY1Jlc3BUeXBlOwoKCgog
Cgp0eXBlZGVmIHN0cnVjdCBEbHBGaW5kREJTaXplUmVzcFR5cGUgewoJCQkJCQkJCQkJCQkgCgkK
CSAKCSAKCVVJbnQzMgkJCQlkd051bVJlY29yZHM7CSAKCVVJbnQzMgkJCQlkd1RvdGFsQnl0ZXM7
CSAKCVVJbnQzMgkJCQlkd0RhdGFCeXRlczsJIAoJCgkgCgkgCglVSW50MzIJCQkJZHdBcHBCbGtT
aXplOwkgCgkJCQkJCQkJCQkJCSAKCVVJbnQzMgkJCQlkd1NvcnRCbGtTaXplOwkgCgkJCQkJCQkJ
CQkJCSAKCQkJCQkJCQkJCQkJIAoJIAoJIAoJVUludDMyCQkJCWR3TWF4UmVjU2l6ZTsJIAoJCQkJ
CQkJCQkJCQkgCgkJCQkJCQkJCQkJCSAKCX0gRGxwRmluZERCU2l6ZVJlc3BUeXBlOwoKCgoKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCiAKIAoKZW51bQl7CglkbHBTZXREQkluZm9SZXFB
cmdJRCA9IDB4MjAgCgl9OwoKCnR5cGVkZWYgc3RydWN0IERscFNldERCSW5mb1JlcUhkclR5cGUg
ewoJCQkJCQkJCQkJCQkgCglVSW50OAkJCQkJZGJJRDsJCQkJIAoJVUludDgJCQkJCWJSZXNlcnZl
ZDsJCSAKCVVJbnQxNgkJCQl3Q2xyRGJGbGFnczsJIAoJCQkJCQkJCQkJCQkgCgkJCQkJCQkJCQkJ
CSAKCQkJCQkJCQkJCQkJIAoJVUludDE2CQkJCXdTZXREYkZsYWdzOwkgCgkJCQkJCQkJCQkJCSAK
CQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkgCglVSW50MTYJCQkJd0RiVmVyc2lvbjsJCSAKCURs
cERhdGVUaW1lVHlwZQljckRhdGU7CQkJIAoJRGxwRGF0ZVRpbWVUeXBlCW1vZERhdGU7CQkJIAoJ
RGxwRGF0ZVRpbWVUeXBlCWJja1VwRGF0ZTsJCSAKCVVJbnQzMgkJCQlkd1R5cGU7CQkJIAoJVUlu
dDMyCQkJCWR3Q3JlYXRvcjsJCSAKCQkJCQkJCQkJCQkJIAoJfSBEbHBTZXREQkluZm9SZXFIZHJU
eXBlOwoKCgp0eXBlZGVmIHN0cnVjdCBEbHBTZXREQkluZm9SZXFUeXBlIHsKCQkJCQkJCQkJCQkJ
IAoJRGxwU2V0REJJbmZvUmVxSGRyVHlwZQkJCQkgCgkJCQkJCQloZWFkZXI7CQkJIAoJCQkJCQkJ
CQkJCQkgCglVSW50OAkJCQkJbmFtZVsyXTsJCQkgCgl9IERscFNldERCSW5mb1JlcVR5cGU7CgoK
IAogCiAKCgoKIAoKCgoKCiMgMTcwICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgoJCiMgMSAiLi4v
U3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9ETFNlcnZlci5oIiAxCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgojcHJhZ21hIG1hcmsgKkVycm9yIENvZGVz
KgoKCgoKCgoKCgoKCgoKIAoKCgojcHJhZ21hIG1hcmsgKlVzZXIgSW5mbyBQcmVmZXJlbmNlKgoK
CgoKCgoKCgoKdHlwZWRlZiBlbnVtIERsa1N5bmNTdGF0ZVR5cGUgewoJZGxrU3luY1N0YXRlTmV2
ZXJTeW5jZWQgPSAwLAkJIAoJZGxrU3luY1N0YXRlSW5Qcm9ncmVzcywJCQkJIAoJZGxrU3luY1N0
YXRlTG9zdENvbm5lY3Rpb24sCQkgCglkbGtTeW5jU3RhdGVMb2NhbENhbiwJCQkJIAoJZGxrU3lu
Y1N0YXRlUmVtb3RlQ2FuLAkJCQkgCglkbGtTeW5jU3RhdGVMb3dNZW1vcnlPblRELAkJCSAKCWRs
a1N5bmNTdGF0ZUFib3J0ZWQsCQkJCQkgCglkbGtTeW5jU3RhdGVDb21wbGV0ZWQsCQkJCSAKCQoJ
IAoJZGxrU3luY1N0YXRlSW5jb21wYXRpYmxlUHJvZHVjdHMJIAoJCQkJCQkJCQkJCQkgCgkJCQkJ
CQkJCQkJCSAKCX0gRGxrU3luY1N0YXRlVHlwZTsKCgoKdHlwZWRlZiBzdHJ1Y3QgRGxrVXNlcklu
Zm9IZHJUeXBlIHsKCVVJbnQxNgkJCQl2ZXJzaW9uOwkJCSAKCVVJbnQzMgkJCQl1c2VySUQ7CQkJ
IAoJVUludDMyCQkJCXZpZXdlcklEOwkJIAoJVUludDMyCQkJCWxhc3RTeW5jUEM7CQkgCglVSW50
MzIJCQkJc3VjY1N5bmNEYXRlOwkgCglVSW50MzIJCQkJbGFzdFN5bmNEYXRlOwkgCglEbGtTeW5j
U3RhdGVUeXBlCWxhc3RTeW5jU3RhdGU7CSAKCVVJbnQ4CQkJCQlyZXNlcnZlZDE7CQkgCglVSW50
MTYJCQkJbGFuU3luY0VuYWJsZWQ7IAoJVUludDMyCQkJCWhzVGNwUG9ydE51bTsJIAoJVUludDMy
CQkJCWR3UmVzZXJ2ZWQxOwkgCglVSW50MzIJCQkJZHdSZXNlcnZlZDI7CSAKCVVJbnQ4CQkJCQl1
c2VyTmFtZUxlbjsJIAoJVUludDgJCQkJCXJlc2VydmVkMjsJCSAKCVVJbnQxNgkJCQlzeW5jTG9n
TGVuOwkJIAoJfSBEbGtVc2VySW5mb0hkclR5cGU7Cgp0eXBlZGVmIHN0cnVjdCBEbGtVc2VySW5m
b1R5cGUgewoJRGxrVXNlckluZm9IZHJUeXBlCWhlYWRlcjsJCQkgCglDaGFyCQkJCQkJbmFtZUFu
ZExvZ1syXTsJIAoJCQkJCQkJCQkJCQkJIAoJfSBEbGtVc2VySW5mb1R5cGU7Cgp0eXBlZGVmIERs
a1VzZXJJbmZvVHlwZSoJCURsa1VzZXJJbmZvUHRyOwkJIAoKCiAKCgoKI3ByYWdtYSBtYXJrICpD
b25kdWl0IEZpbHRlciBQcmVmZXJlbmNlKgoKIAogCiAKCiAKIAoKdHlwZWRlZiBzdHJ1Y3QgRGxr
Q29uZEZpbHRlclRhYmxlSGRyVHlwZSB7CglVSW50MTYJCQllbnRyeUNvdW50OwoJfSBEbGtDb25k
RmlsdGVyVGFibGVIZHJUeXBlOwp0eXBlZGVmIERsa0NvbmRGaWx0ZXJUYWJsZUhkclR5cGUqCURs
a0NvbmRGaWx0ZXJUYWJsZUhkclB0cjsKCQp0eXBlZGVmIHN0cnVjdCBEbGtDb25kRmlsdGVyRW50
cnlUeXBlIHsKCVVJbnQzMgkJCWNyZWF0b3I7CglVSW50MzIJCQl0eXBlOwoJfSBEbGtDb25kRmls
dGVyRW50cnlUeXBlOwp0eXBlZGVmIERsa0NvbmRGaWx0ZXJFbnRyeVR5cGUqCURsa0NvbmRGaWx0
ZXJFbnRyeVB0cjsKCnR5cGVkZWYgc3RydWN0IERsa0NvbmRGaWx0ZXJUYWJsZVR5cGUgewoJRGxr
Q29uZEZpbHRlclRhYmxlSGRyVHlwZQoJCQkJCQkJaGRyOwkJCQkgCglEbGtDb25kRmlsdGVyRW50
cnlUeXBlCgkJCQkJCQllbnRyeVsxXTsJCSAKCX0gRGxrQ29uZEZpbHRlclRhYmxlVHlwZTsKdHlw
ZWRlZiBEbGtDb25kRmlsdGVyVGFibGVUeXBlKglEbGtDb25kRmlsdGVyVGFibGVQdHI7CgoKCiAK
CgojcHJhZ21hIG1hcmsgKlNlc3Npb24gU3RydWN0dXJlcyoKCgogCiAKdHlwZWRlZiBlbnVtIHsK
CWRsa0V2ZW50T3BlbmluZ0NvbmR1aXQgPSAxLAkJCSAKCQkJCQkJCQkJCQkJCSAKCQoJZGxrRXZl
bnREYXRhYmFzZU9wZW5lZCwJCQkJCSAKCQkJCQkJCQkJCQkJCSAKCglkbGtFdmVudENsZWFuaW5n
VXAsCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJCglkbGtFdmVudFN5c3RlbVJlc2V0UmVxdWVzdGVk
CQkJIAoJCQkJCQkJCQkJCQkJIAoJCQkJCQkJCQkJCQkJIAoJfSBEbGtFdmVudFR5cGU7CgogCnR5
cGVkZWYgSW50MTYgKCpEbGtFdmVudFByb2NQdHIpKFVJbnQzMiBldmVudFJlZiwgRGxrRXZlbnRU
eXBlIGRsa0V2ZW50LAoJCXZvaWQgKiBwYXJhbVApOwoKIAogCnR5cGVkZWYgc3RydWN0IERsa0V2
ZW50RGF0YWJhc2VPcGVuZWRUeXBlIHsKCURtT3BlblJlZglkYlI7CQkJCQkgCglDaGFyICoJCWRi
TmFtZVA7CQkJCSAKCVVJbnQzMgkJZGJUeXBlOwkJCQkgCglVSW50MzIJCWRiQ3JlYXRvcjsJCQkg
Cgl9IERsa0V2ZW50RGF0YWJhc2VPcGVuZWRUeXBlOwoJCgogCnR5cGVkZWYgSW50MTYgKCpEbGtV
c2VyQ2FuUHJvY1B0cikoVUludDMyIGNhblJlZik7CgoKIAogCiAKdHlwZWRlZiBzdHJ1Y3QgRGxr
REJDcmVhdG9yTGlzdCB7CglVSW50MTYJCWNvdW50OwkJCQkgCglNZW1IYW5kbGUJCWxpc3RIOwkJ
CQkgCgl9IERsa0RCQ3JlYXRvckxpc3Q7CgoKIAogCiAKCgoKIAogCiAKdHlwZWRlZiBzdHJ1Y3Qg
RGxrU2VydmVyU2Vzc2lvblR5cGUgewogCVVJbnQxNgkJCQlodGFsTGliUmVmTnVtOwkJIAogCVVJ
bnQzMgkJCQltYXhIdGFsWGZlclNpemU7CSAKCiAJIAogCURsa0V2ZW50UHJvY1B0cglldmVudFBy
b2NQOwkJIAogCVVJbnQzMgkJCQlldmVudFJlZjsJCSAKCURsa1VzZXJDYW5Qcm9jUHRyCWNhblBy
b2NQOwkJIAoJVUludDMyCQkJCWNhblJlZjsJCQkgCglNZW1IYW5kbGUJCQkJY29uZEZpbHRlckg7
CSAKCgkgCiAJVUludDgJCQkJCWRsa0RCSUQ7CQkJIAoJVUludDgJCQkJCXJlc2VydmVkMTsKIAlE
bU9wZW5SZWYJCQlkYlI7CQkJCSAKIAlVSW50MTYJCQkJY2FyZE5vOwkJCSAKIAlVSW50MzIJCQkJ
ZGJDcmVhdG9yOwkJIAogIAlDaGFyCQkJCQlkYk5hbWVbMzIgXTsJIAogIAlVSW50MTYJCQkJZGJP
cGVuTW9kZTsJCSAKIAlCb29sZWFuCQkJCWNyZWF0ZWQ7CQkJIAogCUJvb2xlYW4JCQkJaXNSZXNE
QjsJCQkgCiAJQm9vbGVhbgkJCQlyYW1CYXNlZDsJCSAKIAlCb29sZWFuCQkJCXJlYWRPbmx5OwkJ
IAogCUxvY2FsSUQJCQkJZGJMb2NhbElEOwkJIAogCVVJbnQzMgkJCQlpbml0aWFsTW9kTnVtOwkg
CiAgCVVJbnQzMgkJCQljdXJSZWNJbmRleDsJIAogIAkJCQkJCQkJCQkJCSAKICAJCiAgCSAKICAJ
RGxrREJDcmVhdG9yTGlzdAljcmVhdG9yTGlzdDsKIAoJIAogCglVSW50OAlzeW5jU3RhdGU7CQkg
CgkKIAlCb29sZWFuCQkJCWNvbXBsZXRlOwkJIAogCQkJCQkJCQkJCQkJIAogCQogCUJvb2xlYW4J
CQkJY29uZHVpdE9wZW5lZDsJIAogCQkJCQkJCQkJCQkJIAogCQkJCQkJCQkJCQkJCiAJQm9vbGVh
bgkJCQlsb2dDbGVhcmVkOwkJIAogCQkJCQkJCQkJCQkJIAoJCQkgCgkJCSAKCQkJIAoJCQkgCgkJ
CSAKIAkJCQkJCQkJCQkJCQogCUJvb2xlYW4JCQkJcmVzZXRQZW5kaW5nOwkgCiAJCQkJCQkJCQkJ
CQkgCiAJCQkJCQkJCQkJCQkgCiAJCQkJCQkJCQkJCQkKCSAKIAlCb29sZWFuCQkJCWdvdENvbW1h
bmQ7CQkgCiAJVUludDgJCQkJCWNtZFRJRDsJCQkgCglVSW50OAkJCQkJcmVzZXJ2ZWQyOwogCVVJ
bnQxNgkJCQljbWRMZW47CQkJIAogCXZvaWQgKgkJCQljbWRQOwkJCQkgCiAJTWVtSGFuZGxlCQkJ
CWNtZEg7CQkJCSAKIAkKIAkgCiAJVUludDE2CQkJCXdTdGF0ZUZsYWdzOwkgCiAJRG1TZWFyY2hT
dGF0ZVR5cGUJZGJTZWFyY2hTdGF0ZTsJIAogCQkJCQkJCQkJCQkJIAogCX0gRGxrU2VydmVyU2Vz
c2lvblR5cGU7IAoKdHlwZWRlZiBEbGtTZXJ2ZXJTZXNzaW9uVHlwZSoJRGxrU2VydmVyU2Vzc2lv
blB0cjsKCgogCgoKI3ByYWdtYSBtYXJrICpGdW5jdGlvbiBQYXJhbWV0ZXIgU3RydWN0dXJlcyoK
CiAKIAogCnR5cGVkZWYgZW51bSBEbGtDdGxFbnVtIHsKCWRsa0N0bEZpcnN0ID0gMCwJCQkJIAoJ
CgkgCgkgCgkgCglkbGtDdGxHZXRQQ0hvc3ROYW1lLAkJCSAKCQkJCQkJCQkJCSAKCQkJCQkJCQkJ
CSAKCQkJCQkJCQkJCglkbGtDdGxTZXRQQ0hvc3ROYW1lLAkJCSAKCQkJCQkJCQkJCSAKCQoJZGxr
Q3RsR2V0Q29uZEZpbHRlclRhYmxlLAkgCgkJCQkJCQkJCQkgCgkJCQkJCQkJCQkgCgkKCWRsa0N0
bFNldENvbmRGaWx0ZXJUYWJsZSwJIAoJCQkJCQkJCQkJIAoJCglkbGtDdGxHZXRMQU5TeW5jLAkJ
CQkgCgkJCQkJCQkJCQkgCgkKCWRsa0N0bFNldExBTlN5bmMsCQkJCSAKCQkJCQkJCQkJCSAKCQoJ
ZGxrQ3RsR2V0SFNUQ1BQb3J0LAkJCSAKCQkJCQkJCQkJCSAKCQoJZGxrQ3RsU2V0SFNUQ1BQb3J0
LAkJCSAKCQkJCQkJCQkJCSAKCQoJZGxrQ3RsU2VuZENhbGxBcHBSZXBseSwJCSAKCQkJCQkJCQkJ
CSAKCQkJCQkJCQkJCSAKCQkJCQkJCQkJCSAKCQkJCQkJCQkJCSAKCgoJZGxrQ3RsR2V0UENIb3N0
QWRkciwJCQkgCgkJCQkJCQkJCQkgCgkJCQkJCQkJCQkgCgkJCQkJCQkJCQoJZGxrQ3RsU2V0UENI
b3N0QWRkciwJCQkgCgkJCQkJCQkJCQkgCgoKCWRsa0N0bEdldFBDSG9zdE1hc2ssCQkJIAoJCQkJ
CQkJCQkJIAoJCQkJCQkJCQkJIAoJCQkJCQkJCQkKCWRsa0N0bFNldFBDSG9zdE1hc2ssCQkJIAoJ
CQkJCQkJCQkJIAoJCgkKCWRsa0N0bExBU1QJCQkJCQkgCgkKfSBEbGtDdGxFbnVtOwoKCiAKIAog
CnR5cGVkZWYgc3RydWN0IERsa1NlcnZlclBhcmFtVHlwZSB7CiAJVUludDE2CQkJCWh0YWxMaWJS
ZWZOdW07CSAKIAlEbGtFdmVudFByb2NQdHIJZXZlbnRQcm9jUDsJCSAKIAlVSW50MzIJCQkJZXZl
bnRSZWY7CQkgCglVSW50MzIJCQkJcmVzZXJ2ZWQxOwkJIAoJVUludDMyCQkJCXJlc2VydmVkMjsJ
CSAKCU1lbUhhbmRsZQkJCQljb25kRmlsdGVySDsJIAogCX0gRGxrU2VydmVyUGFyYW1UeXBlOwog
CnR5cGVkZWYgRGxrU2VydmVyUGFyYW1UeXBlKgkJRGxrU2VydmVyUGFyYW1QdHI7CgoKCiAKIAog
CnR5cGVkZWYgc3RydWN0IERsa0NhbGxBcHBSZXBseVBhcmFtVHlwZSB7CglVSW50MTYJCQkJcGJT
aXplOwkJCSAKCVVJbnQzMgkJCQlkd1Jlc3VsdENvZGU7CSAKCXZvaWQgKgkJCQlyZXN1bHRQOwkJ
CSAKCVVJbnQzMgkJCQlkd1Jlc3VsdFNpemU7CSAKCXZvaWQgKgkJCQlkbFJlZlA7CQkJIAoJCQkJ
CQkJCQkJCQkgCglVSW50MzIJCQkJZHdSZXNlcnZlZDE7CSAKCX0gRGxrQ2FsbEFwcFJlcGx5UGFy
YW1UeXBlOwoKCiAKCgojcHJhZ21hIG1hcmsgKkZ1bmN0aW9uIFByb3RvdHlwZXMqCgojIDQwOSAi
Li4vU3JjU2hhcmVkL1BhbG0vUGxhdGZvcm0vSW5jcy9Db3JlL1N5c3RlbS9ETFNlcnZlci5oIgoK
CgogCgoKCgoKCiMgMTcxICIuLi9TcmNTaGFyZWQvUGFsbS5oIiAyCgoKCQojIDEgIi4uL1NyY1No
YXJlZC9QYWxtL0RldmljZS9FWkF1c3Rpbi9JbmNzUHJ2L1NFRDEzNzVId3IuaCIgMQogCgoKCgoK
CgoKCgoKCgoKIAogCiAKCnR5cGVkZWYgc3RydWN0IFNFRDEzNzVSZWdzVHlwZSB7CglVSW50OCBw
cm9kdWN0UmV2aXNpb25Db2RlOwkJCQkgCglVSW50OCBtb2RlMDsJCQkJCQkJCSAKCQoJVUludDgg
bW9kZTE7CQkJCQkJCQkgCglVSW50OCBtb2RlMjsJCQkJCQkJCSAKCQoJVUludDggaG9yaXpvbnRh
bFBhbmVsU2l6ZTsJCQkJIAoJVUludDggdmVydGljYWxQYW5lbFNpemVMU0I7CQkJIAoJCglVSW50
OCB2ZXJ0aWNhbFBhbmVsU2l6ZU1TQjsJCQkgCglVSW50OCBGUExpbmVTdGFydFBvc2l0aW9uOwkJ
CQkgCgkKCVVJbnQ4IGhvcml6b250YWxOb25EaXNwbGF5UGVyaW9kOwkgCglVSW50OCBGUEZSQU1F
U3RhcnRQb3NpdGlvbjsJCQkgCgkJCglVSW50OCB2ZXJ0aWNhbE5vbkRpc3BsYXlQZXJpb2Q7CQkg
CglVSW50OCBNT0RSYXRlOwkJCQkJCQkJIAoJCglVSW50OCBzY3JlZW4xU3RhcnRBZGRyZXNzTFNC
OwkJCSAKCVVJbnQ4IHNjcmVlbjFTdGFydEFkZHJlc3NNU0I7CQkJIAoJCglVSW50OCBzY3JlZW4y
U3RhcnRBZGRyZXNzTFNCOwkJCSAKCVVJbnQ4IHNjcmVlbjJTdGFydEFkZHJlc3NNU0I7CQkJIAoK
CVVJbnQ4IHNjcmVlbjFTdGFydEFkZHJlc3NNU0JpdDsJCSAKCVVJbnQ4IG1lbW9yeUFkZHJlc3NP
ZmZzZXQ7CQkJCSAKCQoJVUludDggc2NyZWVuMVZlcnRpY2FsU2l6ZUxTQjsJCQkgCglVSW50OCBz
Y3JlZW4xVmVydGljYWxTaXplTVNCOwkJCSAKCQoJVUludDggdW51c2VkMTsJCQkJCQkJCSAKCVVJ
bnQ4IGxvb2tVcFRhYmxlQWRkcmVzczsJCQkJIAoJCQoJVUludDggdW51c2VkMjsJCQkJCQkJCSAK
CVVJbnQ4IGxvb2tVcFRhYmxlRGF0YTsJCQkJCSAKCQoJVUludDggR1BJT0NvbmZpZ3VyYXRpb25D
b250cm9sOwkJIAoJVUludDggR1BJT1N0YXR1c0NvbnRyb2w7CQkJCSAKCQoJVUludDggc2NyYXRj
aFBhZDsJCQkJCQkJIAoJVUludDggcG9ydHJhaXRNb2RlOwkJCQkJCSAKCQoJVUludDggbGluZUJ5
dGVDb3VudFJlZ2lzdGVyOwkJCSAKCVVJbnQ4IHVudXNlZDM7CQkJCQkJCQkgCgoJVUludDggdW51
c2VkNDsJCQkJCQkJCSAKCVVJbnQ4IHVudXNlZDU7CQkJCQkJCQkgCn0gU0VEMTM3NVJlZ3NUeXBl
OwoKdHlwZWRlZiB2b2xhdGlsZSBTRUQxMzc1UmVnc1R5cGUgKlNFRDEzNzVSZWdzUHRyOwoKCiAK
IAogCgoKCgoKCgoKIAogCgoKCgoKCgogCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCiAKIAoKCgogCiAKIAoKCgoKIAoKCgogCgoKCgogCgoKCiAKCgoKCgogCgoKCiAKIAoKCgog
CiAKCgoKIAoKCiAKIAoKCgogCgoKCgoKCgogCgoKCgoKCiAKCgoKIAoKCgogCgoKCgogCgoKIAoK
CgoKCgoKCiAKCgogCgoKCgoKCgoKCgogCgoKCgoKCiMgMTczICIuLi9TcmNTaGFyZWQvUGFsbS5o
IiAyCgoKCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0NvcmUvSGFyZHdhcmUvSW5j
c1Bydi9NNjgzMjhId3IuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgog
CgoKc3RydWN0IEh3ck02ODMyOFR5cGUgewoKCVVJbnQ4CQlzY3I7CQkJCQkJCQkgCglVSW50OAkJ
CQkJCQkJCQkJX19fZmlsbGVyMFsweDAwNC0weDAwMV07CgoJIAoJVUludDgJCQljaGlwSUQ7CQkJ
CQkJCSAKCVVJbnQ4CQkJbWFza0lEOwkJCQkJCQkgCglVSW50MTYJCXN3SUQ7CQkJCQkJCQkgCglV
SW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMVsweDEwMC0weDAwOF07CQkJCSAKCQoJVUludDE2CQlj
c0FHcm91cEJhc2U7CQkJCQkgCglVSW50MTYJCWNzQkdyb3VwQmFzZTsJCQkJCSAKCVVJbnQxNgkJ
Y3NDR3JvdXBCYXNlOwkJCQkJIAoJVUludDE2CQljc0RHcm91cEJhc2U7CQkJCQkgCgkKCVVJbnQx
NgkJY3NBR3JvdXBNYXNrOwkJCQkJIAoJVUludDE2CQljc0JHcm91cE1hc2s7CQkJCQkgCglVSW50
MTYJCWNzQ0dyb3VwTWFzazsJCQkJCSAKCVVJbnQxNgkJY3NER3JvdXBNYXNrOwkJCQkJIAoJCglV
SW50MzIJCWNzQVNlbGVjdDA7CQkJCQkJIAoJVUludDMyCQljc0FTZWxlY3QxOwkJCQkJCSAKCVVJ
bnQzMgkJY3NBU2VsZWN0MjsJCQkJCQkgCglVSW50MzIJCWNzQVNlbGVjdDM7CQkJCQkJIAoJCglV
SW50MzIJCWNzQlNlbGVjdDA7CQkJCQkJIAoJVUludDMyCQljc0JTZWxlY3QxOwkJCQkJCSAKCVVJ
bnQzMgkJY3NCU2VsZWN0MjsJCQkJCQkgCglVSW50MzIJCWNzQlNlbGVjdDM7CQkJCQkJIAoJCglV
SW50MzIJCWNzQ1NlbGVjdDA7CQkJCQkJIAoJVUludDMyCQljc0NTZWxlY3QxOwkJCQkJCSAKCVVJ
bnQzMgkJY3NDU2VsZWN0MjsJCQkJCQkgCglVSW50MzIJCWNzQ1NlbGVjdDM7CQkJCQkJIAoJCglV
SW50MzIJCWNzRFNlbGVjdDA7CQkJCQkJIAoJVUludDMyCQljc0RTZWxlY3QxOwkJCQkJCSAKCVVJ
bnQzMgkJY3NEU2VsZWN0MjsJCQkJCQkgCglVSW50MzIJCWNzRFNlbGVjdDM7CQkJCQkJIAoJCglV
SW50MTYJCWNzRGVidWc7CQkJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIyWzB4MjAw
LTB4MTUyXTsJCQoJCglVSW50MTYJCXBsbENvbnRyb2w7CQkJCQkJIAoJVUludDE2CQlwbGxGcmVx
U2VsOwkJCQkJCSAKCVVJbnQxNgkJcGxsVGVzdDsJCQkJCQkJIAoJVUludDgJCQkJCQkJCQkJCV9f
ZmlsbGVyNDQ7CglVSW50OAkJCXB3ckNvbnRyb2w7CQkJCQkJIAoJCglVSW50OAkJCQkJCQkJCQkJ
X19fZmlsbGVyM1sweDMwMC0weDIwOF07CgkKCVVJbnQ4CQkJaW50VmVjdG9yOwkJCQkJCSAKCVVJ
bnQ4CQkJCQkJCQkJCQlfX19maWxsZXI0OwoJVUludDE2CQlpbnRDb250cm9sOwkJCQkJCSAKCVVJ
bnQxNgkJaW50TWFza0hpOwkJCQkJCSAKCVVJbnQxNgkJaW50TWFza0xvOwkJCQkJCSAKCVVJbnQx
NgkJaW50V2FrZXVwRW5IaTsJCQkJCSAKCVVJbnQxNgkJaW50V2FrZXVwRW5MbzsJCQkJCSAKCVVJ
bnQxNgkJaW50U3RhdHVzSGk7CQkJCQkgCglVSW50MTYJCWludFN0YXR1c0xvOwkJCQkJIAoJVUlu
dDE2CQlpbnRQZW5kaW5nSGk7CQkJCQkgCglVSW50MTYJCWludFBlbmRpbmdMbzsJCQkJCSAKCQoJ
VUludDggCQkJCQkJCQkJCQlfX19maWxsZXI0YVsweDQwMC0weDMxNF07CgkKCVVJbnQ4CQlwb3J0
QURpcjsJCQkJCQkgCglVSW50OAkJcG9ydEFEYXRhOwkJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlf
X19maWxsZXI1OwoJVUludDgJCXBvcnRBU2VsZWN0OwkJCQkJIAoJCglVSW50OAkJCQkJCQkJCQkJ
X19fZmlsbGVyNls0XTsKCQoJVUludDgJCXBvcnRCRGlyOwkJCQkJCSAKCVVJbnQ4CQlwb3J0QkRh
dGE7CQkJCQkJIAoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjc7CglVSW50OAkJcG9ydEJTZWxl
Y3Q7CQkJCQkgCgkKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXI4WzRdOwoJCglVSW50OAkJcG9y
dENEaXI7CQkJCQkJIAoJVUludDgJCXBvcnRDRGF0YTsJCQkJCQkgCglVSW50OAkJCQkJCQkJCQkJ
X19fZmlsbGVyOTsKCVVJbnQ4CQlwb3J0Q1NlbGVjdDsJCQkJCSAKCQoJVUludDgJCQkJCQkJCQkJ
CV9fX2ZpbGxlcjEwWzRdOwoJCglVSW50OAkJcG9ydEREaXI7CQkJCQkJIAoJVUludDgJCXBvcnRE
RGF0YTsJCQkJCQkgCglVSW50OAkJcG9ydERQdWxsdXBFbjsJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJ
CQlfX19maWxsZXIxMTsKCVVJbnQ4CQlwb3J0RFBvbGFyaXR5OwkJCQkJIAoJVUludDgJCXBvcnRE
SW50UmVxRW47CQkJCQkgCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMTI7CglVSW50OAkJcG9y
dERJbnRFZGdlOwkJCQkJIAoJCglVSW50OAkJcG9ydEVEaXI7CQkJCQkJIAoJVUludDgJCXBvcnRF
RGF0YTsJCQkJCQkgCglVSW50OAkJcG9ydEVQdWxsdXBFbjsJCQkJCSAKCVVJbnQ4CQlwb3J0RVNl
bGVjdDsJCQkJCSAKCQoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjE0WzRdOwoJCglVSW50OAkJ
cG9ydEZEaXI7CQkJCQkJIAoJVUludDgJCXBvcnRGRGF0YTsJCQkJCQkgCglVSW50OAkJcG9ydEZQ
dWxsdXBFbjsJCQkJCSAKCVVJbnQ4CQlwb3J0RlNlbGVjdDsJCQkJCSAKCQoJVUludDgJCQkJCQkJ
CQkJCV9fX2ZpbGxlcjE2WzRdOwoJCglVSW50OAkJcG9ydEdEaXI7CQkJCQkJIAoJVUludDgJCXBv
cnRHRGF0YTsJCQkJCQkgCglVSW50OAkJcG9ydEdQdWxsdXBFbjsJCQkJCSAKCVVJbnQ4CQlwb3J0
R1NlbGVjdDsJCQkJCSAKCQoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjE4WzRdOwoJCglVSW50
OAkJcG9ydEpEaXI7CQkJCQkJIAoJVUludDgJCXBvcnRKRGF0YTsJCQkJCQkgCglVSW50OAkJCQkJ
CQkJCQkJX19fZmlsbGVyMTk7CglVSW50OAkJcG9ydEpTZWxlY3Q7CQkJCQkgCgkKCVVJbnQ4CQkJ
CQkJCQkJCQlfX19maWxsZXIxOWFbNF07CgkKCVVJbnQ4CQlwb3J0S0RpcjsJCQkJCQkgCglVSW50
OAkJcG9ydEtEYXRhOwkJCQkJCSAKCVVJbnQ4CQlwb3J0S1B1bGx1cEVuOwkJCQkJIAoJVUludDgJ
CXBvcnRLU2VsZWN0OwkJCQkJIAoJCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMjFbNF07CgkK
CVVJbnQ4CQlwb3J0TURpcjsJCQkJCQkgCglVSW50OAkJcG9ydE1EYXRhOwkJCQkJCSAKCVVJbnQ4
CQlwb3J0TVB1bGx1cEVuOwkJCQkJIAoJVUludDgJCXBvcnRNU2VsZWN0OwkJCQkJIAoJCglVSW50
OAkJCQkJCQkJCQkJX19fZmlsbGVyMjJbNF07CgkKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIy
M1sweDUwMC0weDQ1MF07CgkKCVVJbnQxNgkJcHdtQ29udHJvbDsJCQkJCQkgCglVSW50MTYJCXB3
bVBlcmlvZDsJCQkJCQkgCglVSW50MTYJCXB3bVdpZHRoOwkJCQkJCSAKCVVJbnQxNgkJcHdtQ291
bnRlcjsJCQkJCQkgCgkKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIyNFsweDYwMC0weDUwOF07
CgkKCVVJbnQxNgkJdG1yMUNvbnRyb2w7CQkJCQkgCglVSW50MTYJCXRtcjFQcmVzY2FsZXI7CQkJ
CQkgCglVSW50MTYJCXRtcjFDb21wYXJlOwkJCQkJIAoJVUludDE2CQl0bXIxQ2FwdHVyZTsJCQkJ
CSAKCVVJbnQxNgkJdG1yMUNvdW50ZXI7CQkJCQkgCglVSW50MTYJCXRtcjFTdGF0dXM7CQkJCQkJ
IAoJCglVSW50MTYJCXRtcjJDb250cm9sOwkJCQkJIAoJVUludDE2CQl0bXIyUHJlc2NhbGVyOwkJ
CQkJIAoJVUludDE2CQl0bXIyQ29tcGFyZTsJCQkJCSAKCVVJbnQxNgkJdG1yMkNhcHR1cmU7CQkJ
CQkgCglVSW50MTYJCXRtcjJDb3VudGVyOwkJCQkJIAoJVUludDE2CQl0bXIyU3RhdHVzOwkJCQkJ
CSAKCQoJVUludDE2CQl3ZENvbnRyb2w7CQkJCQkJIAoJVUludDE2CQl3ZFJlZmVyZW5jZTsJCQkJ
CSAKCVVJbnQxNgkJd2RDb3VudGVyOwkJCQkJCSAKCQoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxl
cjI1WzB4NzAwLTB4NjFFXTsKCQoJVUludDE2CQlzcGlTbGF2ZTsJCQkJCQkgCgkKCVVJbnQ4CQkJ
CQkJCQkJCQlfX19maWxsZXIyNlsweDgwMC0weDcwMl07CgkKCVVJbnQxNgkJc3BpTWFzdGVyRGF0
YTsJCQkJCSAKCVVJbnQxNgkJc3BpTWFzdGVyQ29udHJvbDsJCQkJIAoJCglVSW50OAkJCQkJCQkJ
CQkJX19fZmlsbGVyMjdbMHg5MDAtMHg4MDRdOwoJCglVSW50MTYJCXVDb250cm9sOwkJCQkJCSAK
CVVJbnQxNgkJdUJhdWQ7CQkJCQkJCSAKCVVJbnQxNgkJdVJlY2VpdmU7CQkJCQkJIAoJVUludDE2
CQl1VHJhbnNtaXQ7CQkJCQkJIAoJVUludDE2CQl1TWlzYzsJCQkJCQkJIAoJCglVSW50OAkJCQkJ
CQkJCQkJX19fZmlsbGVyMjhbMHhBMDAtMHg5MEFdOwoJCglVSW50MzIJCWxjZFN0YXJ0QWRkcjsJ
CQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIyOTsKCVVJbnQ4CQkJbGNkUGFnZVdpZHRo
OwkJCQkJIAoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjMwWzJdOwoJVUludDE2CQlsY2RTY3Jl
ZW5XaWR0aDsJCQkJIAoJVUludDE2CQlsY2RTY3JlZW5IZWlnaHQ7CQkJCSAKCVVJbnQ4CQkJCQkJ
CQkJCQlfX19maWxsZXIzMVsweEExOC0weEEwQ107CglVSW50MTYJCWxjZEN1cnNvclhQb3M7CQkJ
CQkgCglVSW50MTYJCWxjZEN1cnNvcllQb3M7CQkJCQkgCglVSW50MTYJCWxjZEN1cnNvcldpZHRo
SGVpZ2h0OwkJIAoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjMyOwoJVUludDgJCWxjZEJsaW5r
Q29udHJvbDsJCQkJIAoJVUludDgJCWxjZFBhbmVsQ29udHJvbDsJCQkJIAoJVUludDgJCWxjZFBv
bGFyaXR5OwkJCQkJIAoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjMzOwkJCQkJCQoJVUludDgJ
CWxjZEFDRFJhdGU7CQkJCQkJIAoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjM0OwoJVUludDgJ
CWxjZFBpeGVsQ2xvY2s7CQkJCQkgCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMzU7CglVSW50
OAkJbGNkQ2xvY2tDb250cm9sOwkJCQkgCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMzY7CglV
SW50OAkJbGNkTGFzdEJ1ZmZlckFkZHI7CQkJIAoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjM3
OwoJVUludDgJCWxjZE9jdGV0VGVybUNvdW50OwkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxs
ZXIzODsKCVVJbnQ4CQlsY2RQYW5uaW5nT2Zmc2V0OwkJCQkgCglVSW50OAkJCQkJCQkJCQkJX19f
ZmlsbGVyMzlbM107CglVSW50OAkJbGNkRnJhbWVSYXRlOwkJCQkJIAoJVUludDE2CWxjZEdyYXlQ
YWxldHRlOwkJCQkgCglVSW50OAkJbGNkUmVzZXJ2ZWQ7CQkJCQkgCgkKCVVJbnQ4CQkJCQkJCQkJ
CQlfX19maWxsZXI0MFsweEIwMC0weEEzNV07CgkKCVVJbnQzMgkJcnRjSG91ck1pblNlYzsJCQkJ
CSAKCVVJbnQzMgkJcnRjQWxhcm07CQkJCQkJIAoJVUludDMyCQlydGNSZXNlcnZlZDsJCQkJCSAK
CVVJbnQxNgkJcnRjQ29udHJvbDsJCQkJCQkgCglVSW50MTYJCXJ0Y0ludFN0YXR1czsJCQkJCSAK
CVVJbnQxNgkJcnRjSW50RW5hYmxlOwkJCQkJIAoJVUludDE2CQlzdG9wV2F0Y2g7CQkJCQkJIAp9
OwoKdHlwZWRlZiB2b2xhdGlsZSBzdHJ1Y3QgSHdyTTY4MzI4VHlwZSoJSHdyTTY4MzI4UHRyOwoK
CgoKIAoKCgoKIAoKCgoJCgkKCQoJCgoKCgkKCQoJCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKIAogCiAKIAogCgoKCgoKCgoKCiAKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCiAKIAoKCgoKCgoKCgoKIAoKCgoKCgkKCQoJCgkKCgoKCQoJCgkKCQoJCgoKCgoK
CgoKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgogCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgogCgoKCgoKIAoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCiAK
CgoKCgoKCgogCgoKCgkKCQoJCgkKCQoJCgkKCQoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoKIyAxNzUgIi4uL1NyY1No
YXJlZC9QYWxtLmgiIDIKCgkKCQoKCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0Nv
cmUvSGFyZHdhcmUvSW5jc1Bydi9NNjhFWjMyOEh3ci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgogCgoKc3RydWN0IEh3ck02OEVaMzI4VHlwZSB7CgoJVUludDgJCXNjcjsJ
CQkJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIwWzB4MDA0LTB4MDAxXTsKCVVJbnQ4
CQljaGlwSUQ7CQkJCQkJCSAKCVVJbnQ4CQltYXNrSUQ7CQkJCQkJCSAKCVVJbnQxNglzd0lEOwkJ
CQkJCQkJIAoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjFbMHgxMDAtMHgwMDhdOwkJCQkgCgkK
CVVJbnQxNgljc0FHcm91cEJhc2U7CQkJCQkgCglVSW50MTYJY3NCR3JvdXBCYXNlOwkJCQkJIAoJ
VUludDE2CWNzQ0dyb3VwQmFzZTsJCQkJCSAKCVVJbnQxNgljc0RHcm91cEJhc2U7CQkJCQkgCgoJ
VUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjZbMHgxMTAtMHgxMDhdOwoKCVVJbnQxNgljc0FTZWxl
Y3Q7CQkJCQkJIAoJVUludDE2CWNzQlNlbGVjdDsJCQkJCQkgCglVSW50MTYJY3NDU2VsZWN0OwkJ
CQkJCSAKCVVJbnQxNgljc0RTZWxlY3Q7CQkJCQkJIAoJCglVSW50MTYJZW11Q1M7CQkJCQkJICAg
IAoJCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMlsweDIwMC0weDExQV07CQkKCQoJVUludDE2
CXBsbENvbnRyb2w7CQkJCQkJIAoJVUludDE2CXBsbEZyZXFTZWw7CQkJCQkJIAoJVUludDE2CXBs
bFRlc3Q7CQkJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXI0NDsKCVVJbnQ4CQlwd3JD
b250cm9sOwkJCQkJCSAKCQoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjNbMHgzMDAtMHgyMDhd
OwoJCglVSW50OAkJaW50VmVjdG9yOwkJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXI0
OwoJVUludDE2CWludENvbnRyb2w7CQkJCQkJIAoJVUludDE2CWludE1hc2tIaTsJCQkJCQkgCglV
SW50MTYJaW50TWFza0xvOwkJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXI3WzB4MzBj
LTB4MzA4XTsKCVVJbnQxNglpbnRTdGF0dXNIaTsJCQkJCSAKCVVJbnQxNglpbnRTdGF0dXNMbzsJ
CQkJCSAKCVVJbnQxNglpbnRQZW5kaW5nSGk7CQkJCQkgCglVSW50MTYJaW50UGVuZGluZ0xvOwkJ
CQkJIAoJCglVSW50OCAJCQkJCQkJCQkJCV9fX2ZpbGxlcjRhWzB4NDAwLTB4MzE0XTsKCQoJVUlu
dDgJCXBvcnRBRGlyOwkJCQkJCSAKCVVJbnQ4CQlwb3J0QURhdGE7CQkJCQkJIAoJVUludDgJCXBv
cnRBUHVsbHVwRW47CQkJCQkgCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyOFs1XTsJCgkKCVVJ
bnQ4CQlwb3J0QkRpcjsJCQkJCQkgCglVSW50OAkJcG9ydEJEYXRhOwkJCQkJCSAKCVVJbnQ4CQlw
b3J0QlB1bGx1cEVuOwkJCQkJIAoJVUludDgJCXBvcnRCU2VsZWN0OwkJCQkJIAoJCglVSW50OAkJ
CQkJCQkJCQkJX19fZmlsbGVyOVs0XTsKCQoJVUludDgJCXBvcnRDRGlyOwkJCQkJCSAKCVVJbnQ4
CQlwb3J0Q0RhdGE7CQkJCQkJIAoJVUludDgJCXBvcnRDUHVsbGRuRW47CQkJCQkgCglVSW50OAkJ
cG9ydENTZWxlY3Q7CQkJCQkgCgkKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIxMFs0XTsKCQoJ
VUludDgJCXBvcnRERGlyOwkJCQkJCSAKCVVJbnQ4CQlwb3J0RERhdGE7CQkJCQkJIAoJVUludDgJ
CXBvcnREUHVsbHVwRW47CQkJCQkgCglVSW50OAkJcG9ydERTZWxlY3Q7CQkJCQkgCglVSW50OAkJ
cG9ydERQb2xhcml0eTsJCQkJCSAKCVVJbnQ4CQlwb3J0REludFJlcUVuOwkJCQkJIAoJVUludDgJ
CXBvcnRES2JkSW50RW47CQkJCQkgCglVSW50OAkJcG9ydERJbnRFZGdlOwkJCQkJIAoJCglVSW50
OAkJcG9ydEVEaXI7CQkJCQkJIAoJVUludDgJCXBvcnRFRGF0YTsJCQkJCQkgCglVSW50OAkJcG9y
dEVQdWxsdXBFbjsJCQkJCSAKCVVJbnQ4CQlwb3J0RVNlbGVjdDsJCQkJCSAKCQoJVUludDgJCQkJ
CQkJCQkJCV9fX2ZpbGxlcjE0WzRdOwoJCglVSW50OAkJcG9ydEZEaXI7CQkJCQkJIAoJVUludDgJ
CXBvcnRGRGF0YTsJCQkJCQkgCglVSW50OAkJcG9ydEZQdWxsdXBkbkVuOwkJCQkgCglVSW50OAkJ
cG9ydEZTZWxlY3Q7CQkJCQkgCgkKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIxNls0XTsKCQkK
CVVJbnQ4CQlwb3J0R0RpcjsJCQkJCQkgCglVSW50OAkJcG9ydEdEYXRhOwkJCQkJCSAKCVVJbnQ4
CQlwb3J0R1B1bGx1cEVuOwkJCQkJIAoJVUludDgJCXBvcnRHU2VsZWN0OwkJCQkJIAoJCglVSW50
OAkJCQkJCQkJCQkJX19fZmlsbGVyMjAwMFsweDUwMC0weDQzNF07CgoJVUludDE2CXB3bUNvbnRy
b2w7CQkJCQkJIAoJVUludDgJCXB3bVNhbXBsZUhpOyAgICAJCQkJIAoJVUludDgJCXB3bVNhbXBs
ZUxvOwkJCQkJIAoJVUludDgJCXB3bVBlcmlvZDsJCQkJCQkgCglVSW50OAkJcHdtQ291bnRlcjsJ
CQkJCQkgCgkKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIyNFsweDYwMC0weDUwNl07CgkKCVVJ
bnQxNgl0bXIxQ29udHJvbDsJCQkJCSAKCVVJbnQxNgl0bXIxUHJlc2NhbGVyOwkJCQkJIAoJVUlu
dDE2CXRtcjFDb21wYXJlOwkJCQkJIAoJVUludDE2CXRtcjFDYXB0dXJlOwkJCQkJIAoJVUludDE2
CXRtcjFDb3VudGVyOwkJCQkJIAoJVUludDE2CXRtcjFTdGF0dXM7CQkJCQkJIAoJCglVSW50OAkJ
CQkJCQkJCQkJX19fZmlsbGVyMjVbMHg4MDAtMHg2MENdOwoJCQoJVUludDE2CXNwaU1hc3RlckRh
dGE7CQkJCQkgCglVSW50MTYJc3BpTWFzdGVyQ29udHJvbDsJCQkJIAoJCglVSW50OAkJCQkJCQkJ
CQkJX19fZmlsbGVyMjdbMHg5MDAtMHg4MDRdOwoJCglVSW50MTYJdUNvbnRyb2w7CQkJCQkJIAoJ
VUludDE2CXVCYXVkOwkJCQkJCQkgCglVSW50MTYJdVJlY2VpdmU7CQkJCQkJIAoJVUludDE2CXVU
cmFuc21pdDsJCQkJCQkgCglVSW50MTYJdU1pc2M7CQkJCQkJCSAKCVVJbnQxNgl1Tm9uSW50UHJl
c2M7CQkJCQkgCgkKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIyOFsweEEwMC0weDkwQ107CgkK
CVVJbnQzMglsY2RTdGFydEFkZHI7CQkJCQkgCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMjk7
CglVSW50OAkJbGNkUGFnZVdpZHRoOwkJCQkJIAoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjMw
WzJdOwoJVUludDE2CWxjZFNjcmVlbldpZHRoOwkJCQkgCglVSW50MTYJbGNkU2NyZWVuSGVpZ2h0
OwkJCQkgCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMzFbMHhBMTgtMHhBMENdOwoJVUludDE2
CWxjZEN1cnNvclhQb3M7CQkJCQkgCglVSW50MTYJbGNkQ3Vyc29yWVBvczsJCQkJCSAKCVVJbnQx
NglsY2RDdXJzb3JXaWR0aEhlaWdodDsJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIzMjsK
CVVJbnQ4CQlsY2RCbGlua0NvbnRyb2w7CQkJCSAKCVVJbnQ4CQlsY2RQYW5lbENvbnRyb2w7CQkJ
CSAKCVVJbnQ4CQlsY2RQb2xhcml0eTsJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIz
MzsJCQkJCQkKCVVJbnQ4CQlsY2RBQ0RSYXRlOwkJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19m
aWxsZXIzNDsKCVVJbnQ4CQlsY2RQaXhlbENsb2NrOwkJCQkJIAoJVUludDgJCQkJCQkJCQkJCV9f
X2ZpbGxlcjM1OwoJVUludDgJCWxjZENsb2NrQ29udHJvbDsJCQkJIAoJVUludDgJCQkJCQkJCQkJ
CV9fX2ZpbGxlcjM2OwoJVUludDgJCWxjZFJlZnJlc2hSYXRlQWRqOwkJCSAKCVVJbnQ4CQkJCQkJ
CQkJCQlfX19maWxsZXIyMDAzWzB4QTJELTB4QTJBXTsKCVVJbnQ4ICAgIGxjZFBhbm5pbmdPZmZz
ZXQ7CQkJCSAKCQoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjM3WzB4QTMxLTB4QTJFXTsKCQoJ
VUludDgJCWxjZEZyYW1lUmF0ZTsJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIyMDA0
OwoJVUludDgJCWxjZEdyYXlQYWxldHRlOwkJCQkgCglVSW50OAkJbGNkUmVzZXJ2ZWQ7CQkJCQkg
CglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMjAwNTsKCVVJbnQxNglsY2RDb250cmFzdENvbnRy
b2xQV007CQkgCgkKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXI0MFsweEIwMC0weEEzOF07CgkK
CVVJbnQzMglydGNIb3VyTWluU2VjOwkJCQkJIAoJVUludDMyCXJ0Y0FsYXJtOwkJCQkJCSAKCVVJ
bnQ4CQkJCQkJCQkJCQlfX19maWxsZXIyMDAxWzB4QjBBLTB4QjA4XTsKCVVJbnQxNiAgIHJ0Y1dh
dGNoRG9nOyAgICAgICAgICAgICAgICAKCVVJbnQxNglydGNDb250cm9sOwkJCQkJCSAKCVVJbnQx
NglydGNJbnRTdGF0dXM7CQkJCQkgCglVSW50MTYJcnRjSW50RW5hYmxlOwkJCQkJIAoJVUludDE2
CXN0b3BXYXRjaDsJCQkJCQkgCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMjAwMlsweEIxQS0w
eEIxNF07CglVSW50MTYJcnRjRGF5OwkJCQkJCQkgCglVSW50MTYgICBydGNEYXlBbGFybTsJCQkJ
CSAKCQogICBVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyNDFbMHhDMDAtMHhCMUVdOwoKICAgVUlu
dDE2CWRyYW1Db25maWc7ICAgICAgICAgICAgICAgICAKICAgVUludDE2ICAgZHJhbUNvbnRyb2w7
ICAgICAgICAgICAgICAgIAoKICAgVUludDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fX2ZpbGxlcjQyWzB4RDAwLTB4QzA0XTsKCQoJVUludDMyCWVtdUFkZHJDb21wYXJlOwkJCQkg
CglVSW50MzIJZW11QWRkck1hc2s7CQkJCQkgCglVSW50MTYJZW11Q29udHJvbENvbXBhcmU7CQkJ
IAoJVUludDE2CWVtdUNvbnRyb2xNYXNrOwkJCQkgCglVSW50MTYJZW11Q29udHJvbDsJCQkJCQkg
CglVSW50MTYJZW11U3RhdHVzOwkJCQkJCSAKfTsKCnR5cGVkZWYgdm9sYXRpbGUgc3RydWN0IEh3
ck02OEVaMzI4VHlwZSoJSHdyTTY4RVozMjhQdHI7CgoKCgoKIAoKCnR5cGVkZWYgc3RydWN0IEh3
ckplcnJ5UExEVHlwZSB7CgoJVUludDggZHNwT247CQkJIAoJVUludDggdW51c2VkMTsKCVVJbnQ4
CWNoYXJnZU9uOwkJIAoJVUludDgJdW51c2VkMjsKCVVJbnQ4IHJlZk9uOwkJCSAKCVVJbnQ4CXVu
dXNlZDM7CglVSW50OAlwaXBhQmlhc0VuYWJsZTsJIAoJVUludDgJdW51c2VkNDsKCVVJbnQ4CWRz
cFJlc2V0OwkJIAoJVUludDgJdW51c2VkNTsKCVVJbnQ4CWV6VG9Ec2w7CQkJIAoJVUludDggdW51
c2VkNjsKCVVJbnQ4CXJzMjMyU2hkbjsJCSAKCVVJbnQ4CXVudXNlZDc7CglVSW50OAlzcGFyZU91
dDsJCSAKCVVJbnQ4CXVudXNlZDg7CglVSW50MTYJZFRvM1NsbjsJCQkgCglVSW50MTYJaVh0cm5s
MjsJCQkgCn0JSHdySmVycnlQTERUeXBlOwoKdHlwZWRlZgl2b2xhdGlsZSBId3JKZXJyeVBMRFR5
cGUqCUh3ckplcnJ5UGxkUHRyOwoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCgog
CgogCgoKCgoKCiAKIAoKCiAKCgkKCQoJCgkKCgoJCgogICAKCgogCgoKCiAKCgkKCQoJCgoKCiAK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiAKIAogCiAKIAoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgogCgoKCgoKCgkK
CQoJCgkKCgoKCQoJCgkKCQoJCgoKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAog
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgogCiAKIAoKIAogCiAKIAogCgoKCgoKCgogCgoKIAoKCgoKIAoK
CgoKCiAKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKCgogCgoK
CiAKCgoKCgoKIAoKCgoJCgkKCQoJCgkKCQoJCgkKCgoKCgoKCgoKCgoKIyAxNzkgIi4uL1NyY1No
YXJlZC9QYWxtLmgiIDIKCgkKCQoKCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3JtL0Nv
cmUvSGFyZHdhcmUvSW5jc1Bydi9NNjhWWjMyOEh3ci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCiAg
CgoKCgoKCgoKCgoKIAoKCgogCgoKc3RydWN0IEh3ck02OFZaMzI4VHlwZSB7CgoJVUludDgJCXNj
cjsJCQkJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIwWzB4MDAzLTB4MDAxXTsKCVVJ
bnQ4CQlwY3I7CQkJCQkJCQkgCglVSW50OAkJY2hpcElEOwkJCQkJCQkgCglVSW50OAkJbWFza0lE
OwkJCQkJCQkgCglVSW50MTYJc3dJRDsJCQkJCQkJCSAKCVVJbnQxNglpb0RyaXZlQ29udHJvbDsJ
CQkJIAoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjFbMHgxMDAtMHgwMEFdOwkJCQkgCgkKCVVJ
bnQxNgljc0FHcm91cEJhc2U7CQkJCQkgCglVSW50MTYJY3NCR3JvdXBCYXNlOwkJCQkJIAoJVUlu
dDE2CWNzQ0dyb3VwQmFzZTsJCQkJCSAKCVVJbnQxNgljc0RHcm91cEJhc2U7CQkJCQkgCgkKCVVJ
bnQxNgljc1VHcm91cEJhc2U7CQkJCQkgCgkKCVVJbnQxNgljc0NvbnRyb2wxOwkJCQkJCSAKCVVJ
bnQxNgljc0NvbnRyb2wyOwkJCQkJCSAKCQoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjJbMHgx
MTAtMHgxMEVdOwoKCVVJbnQxNgljc0FTZWxlY3Q7CQkJCQkJIAoJVUludDE2CWNzQlNlbGVjdDsJ
CQkJCQkgCglVSW50MTYJY3NDU2VsZWN0OwkJCQkJCSAKCVVJbnQxNgljc0RTZWxlY3Q7CQkJCQkJ
IAoJCglVSW50MTYJZW11Q1M7CQkJCQkJICAgIAoJCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVy
M1sweDE1MC0weDExQV07CQkKCQoJVUludDE2CWNzQ29udHJvbDM7CQkJCQkJIAoKCVVJbnQ4CQkJ
CQkJCQkJCQlfX19maWxsZXIzYVsweDIwMC0weDE1Ml07CQkKCQoJVUludDE2CXBsbENvbnRyb2w7
CQkJCQkJIAoJVUludDE2CXBsbEZyZXFTZWw7CQkJCQkJIAoJCglVSW50OAkJCQkJCQkJCQkJX19f
ZmlsbGVyNFsweDIwNy0weDIwNF07CgkKCVVJbnQ4CQlwd3JDb250cm9sOwkJCQkJCSAKCQoJVUlu
dDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjVbMHgzMDAtMHgyMDhdOwoJCglVSW50OAkJaW50VmVjdG9y
OwkJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXI2OwoJVUludDE2CWludENvbnRyb2w7
CQkJCQkJIAoJVUludDE2CWludE1hc2tIaTsJCQkJCQkgCglVSW50MTYJaW50TWFza0xvOwkJCQkJ
CSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXI3WzB4MzBjLTB4MzA4XTsKCVVJbnQxNglpbnRT
dGF0dXNIaTsJCQkJCSAKCVVJbnQxNglpbnRTdGF0dXNMbzsJCQkJCSAKCVVJbnQxNglpbnRQZW5k
aW5nSGk7CQkJCQkgCglVSW50MTYJaW50UGVuZGluZ0xvOwkJCQkJIAoJVUludDE2CWludExldmVs
Q29udHJvbDsJCQkJIAoJCglVSW50OCAJCQkJCQkJCQkJX19fZmlsbGVyNGFbMHg0MDAtMHgzMTZd
OwoJCglVSW50OAkJcG9ydEFEaXI7CQkJCQkJIAoJVUludDgJCXBvcnRBRGF0YTsJCQkJCQkgCglV
SW50OAkJcG9ydEFQdWxsdXBFbjsJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXI4WzVd
OwkKCQoJVUludDgJCXBvcnRCRGlyOwkJCQkJCSAKCVVJbnQ4CQlwb3J0QkRhdGE7CQkJCQkJIAoJ
VUludDgJCXBvcnRCUHVsbHVwRW47CQkJCQkgCglVSW50OAkJcG9ydEJTZWxlY3Q7CQkJCQkgCgkK
CVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXI5WzRdOwoJCglVSW50OAkJcG9ydENEaXI7CQkJCQkJ
IAoJVUludDgJCXBvcnRDRGF0YTsJCQkJCQkgCglVSW50OAkJcG9ydENQdWxsZG5FbjsJCQkJCSAK
CVVJbnQ4CQlwb3J0Q1NlbGVjdDsJCQkJCSAKCQoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjEw
WzRdOwoJCglVSW50OAkJcG9ydEREaXI7CQkJCQkJIAoJVUludDgJCXBvcnRERGF0YTsJCQkJCQkg
CglVSW50OAkJcG9ydERQdWxsdXBFbjsJCQkJCSAKCVVJbnQ4CQlwb3J0RFNlbGVjdDsJCQkJCSAK
CVVJbnQ4CQlwb3J0RFBvbGFyaXR5OwkJCQkJIAoJVUludDgJCXBvcnRESW50UmVxRW47CQkJCQkg
CglVSW50OAkJcG9ydERLYmRJbnRFbjsJCQkJCSAKCVVJbnQ4CQlwb3J0REludEVkZ2U7CQkJCQkg
CgkKCVVJbnQ4CQlwb3J0RURpcjsJCQkJCQkgCglVSW50OAkJcG9ydEVEYXRhOwkJCQkJCSAKCVVJ
bnQ4CQlwb3J0RVB1bGx1cEVuOwkJCQkJIAoJVUludDgJCXBvcnRFU2VsZWN0OwkJCQkJIAoJCglV
SW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMTRbNF07CgkKCVVJbnQ4CQlwb3J0RkRpcjsJCQkJCQkg
CglVSW50OAkJcG9ydEZEYXRhOwkJCQkJCSAKCVVJbnQ4CQlwb3J0RlB1bGx1cGRuRW47CQkJCSAK
CVVJbnQ4CQlwb3J0RlNlbGVjdDsJCQkJCSAKCQoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjE2
WzRdOwoJCQoJVUludDgJCXBvcnRHRGlyOwkJCQkJCSAKCVVJbnQ4CQlwb3J0R0RhdGE7CQkJCQkJ
IAoJVUludDgJCXBvcnRHUHVsbHVwRW47CQkJCQkgCglVSW50OAkJcG9ydEdTZWxlY3Q7CQkJCQkg
CgkKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIxN1sweDQzOC0weDQzNF07CgkJCglVSW50OAkJ
cG9ydEpEaXI7CQkJCQkJIAoJVUludDgJCXBvcnRKRGF0YTsJCQkJCQkgCglVSW50OAkJcG9ydEpQ
dWxsdXBFbjsJCQkJCSAKCVVJbnQ4CQlwb3J0SlNlbGVjdDsJCQkJCSAKCQoJVUludDgJCQkJCQkJ
CQkJCV9fX2ZpbGxlcjE4WzB4NDQwLTB4NDNDXTsKCQkKCVVJbnQ4CQlwb3J0S0RpcjsJCQkJCQkg
CglVSW50OAkJcG9ydEtEYXRhOwkJCQkJCSAKCVVJbnQ4CQlwb3J0S1B1bGx1cGRuRW47CQkJCSAK
CVVJbnQ4CQlwb3J0S1NlbGVjdDsJCQkJCSAKCQoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjE5
WzB4NDQ4LTB4NDQ0XTsKCQkKCVVJbnQ4CQlwb3J0TURpcjsJCQkJCQkgCglVSW50OAkJcG9ydE1E
YXRhOwkJCQkJCSAKCVVJbnQ4CQlwb3J0TVB1bGx1cGRuRW47CQkJCSAKCVVJbnQ4CQlwb3J0TVNl
bGVjdDsJCQkJCSAKCQoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjIwWzB4NTAwLTB4NDRDXTsK
CglVSW50MTYJcHdtQ29udHJvbDsJCQkJCQkgCglVSW50OAkJcHdtU2FtcGxlSGk7ICAgIAkJCQkg
CglVSW50OAkJcHdtU2FtcGxlTG87CQkJCQkgCglVSW50OAkJcHdtUGVyaW9kOwkJCQkJCSAKCVVJ
bnQ4CQlwd21Db3VudGVyOwkJCQkJCSAKCQoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjIyWzB4
NTEwLTB4NTA2XTsKCglVSW50MTYJcHdtMkNvbnRyb2w7CQkJCQkgCglVSW50MTYJcHdtMlBlcmlv
ZDsJCQkJCQkgCglVSW50MTYJcHdtMldpZHRoOwkJCQkJCSAKCVVJbnQxNglwd20yQ291bnRlcjsJ
CQkJCSAKCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMjNbMHg2MDAtMHg1MThdOwoJCglVSW50
MTYJdG1yMUNvbnRyb2w7CQkJCQkgCglVSW50MTYJdG1yMVByZXNjYWxlcjsJCQkJCSAKCVVJbnQx
Ngl0bXIxQ29tcGFyZTsJCQkJCSAKCVVJbnQxNgl0bXIxQ2FwdHVyZTsJCQkJCSAKCVVJbnQxNgl0
bXIxQ291bnRlcjsJCQkJCSAKCVVJbnQxNgl0bXIxU3RhdHVzOwkJCQkJCSAKCQoJVUludDgJCQkJ
CQkJCQkJCV9fX2ZpbGxlcjI0WzB4NjEwLTB4NjBDXTsKCQkKCVVJbnQxNgl0bXIyQ29udHJvbDsJ
CQkJCSAKCVVJbnQxNgl0bXIyUHJlc2NhbGVyOwkJCQkJIAoJVUludDE2CXRtcjJDb21wYXJlOwkJ
CQkJIAoJVUludDE2CXRtcjJDYXB0dXJlOwkJCQkJIAoJVUludDE2CXRtcjJDb3VudGVyOwkJCQkJ
IAoJVUludDE2CXRtcjJTdGF0dXM7CQkJCQkJIAoJCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVy
MjVbMHg3MDAtMHg2MUNdOwoJCglVSW50MTYJc3BpUnhEOwkJCQkJCSAKCVVJbnQxNglzcGlUeEQ7
CQkJCQkJIAoJVUludDE2CXNwaUNvbnQxOwkJCQkJIAoJVUludDE2CXNwaUludENTOwkJCQkJIAoJ
VUludDE2CXNwaVRlc3Q7CQkJCQkgCglVSW50MTYJc3BpU3BjOwkJCQkJCSAKCQkKCVVJbnQ4CQkJ
CQkJCQkJCQlfX19maWxsZXIyNlsweDgwMC0weDcwQ107CgkKCVVJbnQxNglzcGlNYXN0ZXJEYXRh
OwkJCQkJIAoJVUludDE2CXNwaU1hc3RlckNvbnRyb2w7CQkJCSAKCQoJVUludDgJCQkJCQkJCQkJ
CV9fX2ZpbGxlcjI3WzB4OTAwLTB4ODA0XTsKCQoJVUludDE2CXVDb250cm9sOwkJCQkJCSAKCVVJ
bnQxNgl1QmF1ZDsJCQkJCQkJIAoJVUludDE2CXVSZWNlaXZlOwkJCQkJCSAKCVVJbnQxNgl1VHJh
bnNtaXQ7CQkJCQkJIAoJVUludDE2CXVNaXNjOwkJCQkJCQkgCglVSW50MTYJdU5vbkludFByZXNj
OwkJCQkJIAoJCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMjhbMHg5MTAtMHg5MENdOwoJCglV
SW50MTYJdTJDb250cm9sOwkJCQkJCSAKCVVJbnQxNgl1MkJhdWQ7CQkJCQkJCSAKCVVJbnQxNgl1
MlJlY2VpdmU7CQkJCQkJIAoJVUludDE2CXUyVHJhbnNtaXQ7CQkJCQkJIAoJVUludDE2CXUyTWlz
YzsJCQkJCQkJIAoJVUludDE2CXUyTm9uSW50UHJlc2M7CQkJCQkgCglVSW50MTYJdTJGSUZPSE1h
cms7CQkJCQkgCgkKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIyOGFbMHhBMDAtMHg5MUVdOwoJ
CglVSW50MzIJbGNkU3RhcnRBZGRyOwkJCQkJIAoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjI5
OwoJVUludDgJCWxjZFBhZ2VXaWR0aDsJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIz
MFsyXTsKCVVJbnQxNglsY2RTY3JlZW5XaWR0aDsJCQkJIAoJVUludDE2CWxjZFNjcmVlbkhlaWdo
dDsJCQkJIAoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjMxWzB4QTE4LTB4QTBDXTsKCVVJbnQx
NglsY2RDdXJzb3JYUG9zOwkJCQkJIAoJVUludDE2CWxjZEN1cnNvcllQb3M7CQkJCQkgCglVSW50
MTYJbGNkQ3Vyc29yV2lkdGhIZWlnaHQ7CQkgCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMzI7
CglVSW50OAkJbGNkQmxpbmtDb250cm9sOwkJCQkgCglVSW50OAkJbGNkUGFuZWxDb250cm9sOwkJ
CQkgCglVSW50OAkJbGNkUG9sYXJpdHk7CQkJCQkgCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVy
MzM7CQkJCQkJCglVSW50OAkJbGNkQUNEUmF0ZTsJCQkJCQkgCglVSW50OAkJCQkJCQkJCQkJX19f
ZmlsbGVyMzQ7CglVSW50OAkJbGNkUGl4ZWxDbG9jazsJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlf
X19maWxsZXIzNTsKCVVJbnQ4CQlsY2RDbG9ja0NvbnRyb2w7CQkJCSAKIAoJVUludDE2CWxjZFJl
ZnJlc2hSYXRlQWRqOwkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIzNzsKCVVJbnQ4CQls
Y2RSZXNlcnZlZDE7CQkJCQkgCglVSW50OAkJCQkJCQkJCQkJX19fZmlsbGVyMzg7CglVSW50OCAg
ICBsY2RQYW5uaW5nT2Zmc2V0OwkJCQkgCgkKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIzOVsw
eEEzMS0weEEyRV07CgkKCVVJbnQ4CQlsY2RGcmFtZVJhdGU7CQkJCQkgCglVSW50OAkJCQkJCQkJ
CQkJX19fZmlsbGVyMjAwNDsKCVVJbnQ4CQlsY2RHcmF5UGFsZXR0ZTsJCQkJIAoJVUludDgJCWxj
ZFJlc2VydmVkMjsJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXIyMDA1OwoJVUludDE2
CWxjZENvbnRyYXN0Q29udHJvbFBXTTsJCSAKCVVJbnQ4CQlsY2RSZWZyZXNoTW9kZUNvbnRyb2w7
CQkgCglVSW50OAkJbGNkRE1BQ29udHJvbDsJCQkJCSAKCQoJVUludDgJCQkJCQkJCQkJCV9fX2Zp
bGxlcjQwWzB4QjAwLTB4QTNhXTsKCQoJVUludDMyCXJ0Y0hvdXJNaW5TZWM7CQkJCQkgCglVSW50
MzIJcnRjQWxhcm07CQkJCQkJIAoJVUludDgJCQkJCQkJCQkJCV9fX2ZpbGxlcjIwMDFbMHhCMEEt
MHhCMDhdOwoJVUludDE2ICAgcnRjV2F0Y2hEb2c7ICAgICAgICAgICAgICAgIAoJVUludDE2CXJ0
Y0NvbnRyb2w7CQkJCQkJIAoJVUludDE2CXJ0Y0ludFN0YXR1czsJCQkJCSAKCVVJbnQxNglydGNJ
bnRFbmFibGU7CQkJCQkgCglVSW50MTYJc3RvcFdhdGNoOwkJCQkJCSAKCVVJbnQ4CQkJCQkJCQkJ
CQlfX19maWxsZXIyMDAyWzB4QjFBLTB4QjE0XTsKCVVJbnQxNglydGNEYXk7CQkJCQkJCSAKCVVJ
bnQxNiAgIHJ0Y0RheUFsYXJtOwkJCQkJIAoJCiAgIFVJbnQ4CQkJCQkJCQkJCQlfX19maWxsZXI0
MVsweEMwMC0weEIxRV07CgogICBVSW50MTYJZHJhbUNvbmZpZzsgICAgICAgICAgICAgICAgIAog
ICBVSW50MTYgICBkcmFtQ29udHJvbDsgICAgICAgICAgICAgICAgCiAgIFVJbnQxNiAgIHNkcmFt
Q29udHJvbDsgICAgICAgICAgICAgICAKICAgVUludDE2ICAgc2RyYW1Qd0RuOyAgICAgICAgICAg
ICAgCSAKCiAgIFVJbnQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX19maWxsZXI0
MlsweEQwMC0weEMwOF07CgkKCVVJbnQzMgllbXVBZGRyQ29tcGFyZTsJCQkJIAoJVUludDMyCWVt
dUFkZHJNYXNrOwkJCQkJIAoJVUludDE2CWVtdUNvbnRyb2xDb21wYXJlOwkJCSAKCVVJbnQxNgll
bXVDb250cm9sTWFzazsJCQkJIAoJVUludDE2CWVtdUNvbnRyb2w7CQkJCQkJIAoJVUludDE2CWVt
dVN0YXR1czsJCQkJCQkgCn07Cgp0eXBlZGVmIHZvbGF0aWxlIHN0cnVjdCBId3JNNjhWWjMyOFR5
cGUqCUh3ck02OFZaMzI4UHRyOwoKCgoKCiMgMzY0ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9y
bS9Db3JlL0hhcmR3YXJlL0luY3NQcnYvTTY4VlozMjhId3IuaCIKCgogCgoKIAoKIAoKCgoKCgog
CiAKCgogCgoJCgkKCQoJCgoKCQoKICAgCgoKIAoKCgogCgoJCgkKCQoKCgogCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgogCiAKIAogCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoJCQkg
CgoKCgkJCSAKCQkJIAoJCQkgCgoJCQkgCgkJCSAKCgoKIAoKCgkJCSAKCQkJIAoJCQkgCgkJCSAK
CQkJIAoJCQkgCgkJCSAKCQkJIAoJCQkgCgkJCSAKCQkJIAoKCiAKCgoKCgoKCQoJCgkKCQoKCgoJ
CgkKCQoJCgkKCgoKCgoKCgogCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKCgoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCgoKCgoKCiAKIAogCgogCiAKIAogCiAKCgoKCgoKCiAKCgogCgoKCgogCgoKCgoKIAoKCgoK
IAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgogCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKIAoKCgogCgoKCgoK
CiAKCgoKCQoJCgkKCQoJCgkKCQoJCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxODMgIi4uL1Ny
Y1NoYXJlZC9QYWxtLmgiIDIKCgkKCQoKCQojIDEgIi4uL1NyY1NoYXJlZC9QYWxtL1BsYXRmb3Jt
L0NvcmUvSGFyZHdhcmUvSW5jc1Bydi9NNjhTWjMyOEh3ci5oIiAxCiAKCgoKCgoKCgoKCgoKCgog
IAoKCgoKCgoKIyAxMDc0ICIuLi9TcmNTaGFyZWQvUGFsbS9QbGF0Zm9ybS9Db3JlL0hhcmR3YXJl
L0luY3NQcnYvTTY4U1ozMjhId3IuaCIKCgoKCgojIDE4NyAiLi4vU3JjU2hhcmVkL1BhbG0uaCIg
MgoKCQoJCgoKCnN0cnVjdCBId3JCYXRDbWRSZWFkVHlwZQkgCnsKCVVJbnQxNgltVm9sdHM7CSAK
CVVJbnQxNglhYnM7CSAKfTsKCgojIDEgIi4uL1NyY1NoYXJlZC9QYWxtUGFja1BvcC5oIiAxCiAK
IAoKCgoKCgoKCgoKCgojcHJhZ21hIHBhY2soKQoKCgoKCgoKCgojIDIwMCAiLi4vU3JjU2hhcmVk
L1BhbG0uaCIgMgoKCgoKCgogCgoKCgoKCgoKCgoKIAoKCgoKIAogCgoKCiAKIAoKCgoKIyAzMSAi
Li4vU3JjVW5peC9FbUNvbW1vblVuaXguaCIgMgoKCgogCgogCiAKIAogCgogCiAKIAogCiAKIAoK
IAogCiAKIAogCiAKCiAKIAogCiAKIAogCiAKCgoKCgogCiAKIAoKIyAxICIvdXNyL2xvY2FsL2xp
Yi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N5cy90eXBlcy5o
IiAxIDMgNAogCiAKCiAKIAogCgogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpdHlwZXMuaAkx
LjY3CTAxLzA3LzA3IFNNSSIKCgoKCiAKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvbWFjaHR5cGVz
LmgiIDEgMyA0CiAKCgoKCiAKIAoKIAogCiAKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIyltYWNodHlw
ZXMuaAkxLjEzCTk5LzA1LzA0IFNNSSIKCgoKCmV4dGVybiAiQyIgewoKCiAKCgoKCgoKCgp0eXBl
ZGVmCXN0cnVjdAlfbGFiZWxfdCB7IGxvbmcgdmFsWzJdOyB9IGxhYmVsX3Q7CgoKCnR5cGVkZWYJ
dW5zaWduZWQgY2hhcglsb2NrX3Q7CQkgCgoKfQoKCgojIDI0ICIvdXNyL2xvY2FsL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMg
NAoKCiAKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2ludF90eXBlcy5oIiAxIDMgNAog
CgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpaW50X3R5cGVzLmgJMS42CTk3LzA4LzIwIFNNSSIK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKIAoKCgoK
CgoKCgoKCgoKdHlwZWRlZiBjaGFyCQkJaW50OF90OwoKCgoKCnR5cGVkZWYgc2hvcnQJCQlpbnQx
Nl90Owp0eXBlZGVmIGludAkJCWludDMyX3Q7CgoKCgp0eXBlZGVmCWxvbmcgbG9uZwkJaW50NjRf
dDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyCQl1aW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNo
b3J0CQl1aW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQJCXVpbnQzMl90OwoKCgoKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIGxvbmcJdWludDY0X3Q7CgoKCiAKCgoKCnR5cGVkZWYgaW50NjRfdAkJ
CWludG1heF90Owp0eXBlZGVmIHVpbnQ2NF90CQl1aW50bWF4X3Q7CgoKCgoKIAoKCgoKCgoKCnR5
cGVkZWYJaW50CQkJaW50cHRyX3Q7CnR5cGVkZWYJdW5zaWduZWQgaW50CQl1aW50cHRyX3Q7CgoK
IAoKCgoKdHlwZWRlZiBjaGFyCQkJaW50X2xlYXN0OF90OwoKCgoKCnR5cGVkZWYgc2hvcnQJCQlp
bnRfbGVhc3QxNl90Owp0eXBlZGVmIGludAkJCWludF9sZWFzdDMyX3Q7CgoKCgp0eXBlZGVmIGxv
bmcgbG9uZwkJaW50X2xlYXN0NjRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyCQl1aW50X2xl
YXN0OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0CQl1aW50X2xlYXN0MTZfdDsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQJCXVpbnRfbGVhc3QzMl90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxv
bmcJdWludF9sZWFzdDY0X3Q7CgoKCgp9CgoKCiMgMzYgIi91c3IvbG9jYWwvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoK
CgoKCgoKZXh0ZXJuICJDIiB7CgoKIAoKCgoKCnR5cGVkZWYJbG9uZyBsb25nCQlsb25nbG9uZ190
Owp0eXBlZGVmCXVuc2lnbmVkIGxvbmcgbG9uZwl1X2xvbmdsb25nX3Q7CiMgNjUgIi91c3IvbG9j
YWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvc3lzL3R5
cGVzLmgiIDMgNAoKCiAKCgoKCgoKCgp0eXBlZGVmIGxvbmcJCXRfc2NhbGFyX3Q7CSAKdHlwZWRl
ZiB1bnNpZ25lZCBsb25nCXRfdXNjYWxhcl90OwoKCiAKCgp0eXBlZGVmCXVuc2lnbmVkIGNoYXIJ
dWNoYXJfdDsKdHlwZWRlZgl1bnNpZ25lZCBzaG9ydAl1c2hvcnRfdDsKdHlwZWRlZgl1bnNpZ25l
ZCBpbnQJdWludF90Owp0eXBlZGVmCXVuc2lnbmVkIGxvbmcJdWxvbmdfdDsKCnR5cGVkZWYJY2hh
cgkJKmNhZGRyX3Q7CSAKdHlwZWRlZglsb25nCQlkYWRkcl90OwkgCnR5cGVkZWYJc2hvcnQJCWNu
dF90OwkJIAoKCnR5cGVkZWYJdWxvbmdfdAkJcGFkZHJfdDsJIAoKCgoKCgoKCgoKCgoKCgp0eXBl
ZGVmIGludCBwdHJkaWZmX3Q7CQkgCgoKCiAKCgp0eXBlZGVmCXVsb25nX3QJCXBmbl90OwkJIAp0
eXBlZGVmCXVsb25nX3QJCXBnY250X3Q7CSAKdHlwZWRlZglsb25nCQlzcGdjbnRfdDsJIAoKdHlw
ZWRlZgl1Y2hhcl90CQl1c2VfdDsJCSAKdHlwZWRlZglzaG9ydAkJc3lzaWRfdDsKdHlwZWRlZglz
aG9ydAkJaW5kZXhfdDsKdHlwZWRlZiB2b2lkCQkqdGltZW91dF9pZF90OwkgCnR5cGVkZWYgdm9p
ZAkJKmJ1ZmNhbGxfaWRfdDsJIAoKIAoKCgoKCgoKCgoKCnR5cGVkZWYgbG9uZwkJb2ZmX3Q7CQkg
CgoKCgoKCgoKdHlwZWRlZiBsb25nbG9uZ190CW9mZjY0X3Q7CSAKCgoKCgoKdHlwZWRlZiB1bG9u
Z190CQlpbm9fdDsJCSAKdHlwZWRlZiBsb25nCQlibGtjbnRfdDsJIAp0eXBlZGVmIHVsb25nX3QJ
CWZzYmxrY250X3Q7CSAKdHlwZWRlZiB1bG9uZ190CQlmc2ZpbGNudF90OwkgCgoKCgoKCgoKCgoK
CgoKdHlwZWRlZiB1X2xvbmdsb25nX3QJaW5vNjRfdDsJIAp0eXBlZGVmIGxvbmdsb25nX3QJYmxr
Y250NjRfdDsJIAp0eXBlZGVmIHVfbG9uZ2xvbmdfdAlmc2Jsa2NudDY0X3Q7CSAKdHlwZWRlZiB1
X2xvbmdsb25nX3QJZnNmaWxjbnQ2NF90OwkgCgoKCgoKCnR5cGVkZWYJbG9uZwkJYmxrc2l6ZV90
OwkgCgoKCgoKdHlwZWRlZiBlbnVtIHsgQl9GQUxTRSwgQl9UUlVFIH0gYm9vbGVhbl90OwoKCiAK
CgoKCgoKCnR5cGVkZWYgaW50NjRfdAkJcGFkNjRfdDsKdHlwZWRlZgl1aW50NjRfdAl1cGFkNjRf
dDsKIyAyMTAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45
NS4zL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAoKCnR5cGVkZWYJbG9uZ2xvbmdfdAlvZmZzZXRf
dDsKdHlwZWRlZgl1X2xvbmdsb25nX3QJdV9vZmZzZXRfdDsKdHlwZWRlZiB1X2xvbmdsb25nX3QJ
bGVuX3Q7CnR5cGVkZWYJbG9uZ2xvbmdfdAlkaXNrYWRkcl90OwoKIAoKCgoKIyAyMzAgIi91c3Iv
bG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvc3lz
L3R5cGVzLmgiIDMgNAoKCgp0eXBlZGVmIHVuaW9uIHsKCW9mZnNldF90CV9mOwkgCglzdHJ1Y3Qg
ewoJCWludDMyX3QJX3U7CSAKCQlpbnQzMl90CV9sOwkgCgl9IF9wOwp9IGxsb2ZmX3Q7CgoKIyAy
NTAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAoKCgp0eXBlZGVmIHVuaW9uIHsKCWRpc2thZGRyX3QJX2Y7
CSAKCXN0cnVjdCB7CgkJaW50MzJfdAlfdTsJIAoJCWludDMyX3QJX2w7CSAKCX0gX3A7Cn0gbGxk
YWRkcl90OwoKCnR5cGVkZWYgdWludF90IGtfZmx0c2V0X3Q7CSAKCiAKCgoKCgoKCgoKCgp0eXBl
ZGVmCWxvbmcJCWlkX3Q7CQkgCgoKIAoKCgp0eXBlZGVmIHVpbnRfdAkJdXNlY29uZHNfdDsJIAoK
Cgp0eXBlZGVmIGxvbmcJc3VzZWNvbmRzX3Q7CSAKCgogCgoKCgoKCnR5cGVkZWYgdWxvbmdfdAlt
YWpvcl90OwkgCnR5cGVkZWYgdWxvbmdfdAltaW5vcl90OwkgCgoKIAoKCnR5cGVkZWYgc2hvcnQJ
cHJpX3Q7CgogCgoKCgoKCgoKCgp0eXBlZGVmCXVzaG9ydF90IG9fbW9kZV90OwkJIAp0eXBlZGVm
IHNob3J0CW9fZGV2X3Q7CQkgCnR5cGVkZWYJdXNob3J0X3Qgb191aWRfdDsJCSAKdHlwZWRlZglv
X3VpZF90CW9fZ2lkX3Q7CQkgCnR5cGVkZWYJc2hvcnQJb19ubGlua190OwkJIAp0eXBlZGVmIHNo
b3J0CW9fcGlkX3Q7CQkgCnR5cGVkZWYgdXNob3J0X3Qgb19pbm9fdDsJCSAKCgogCgoKdHlwZWRl
ZglpbnQJa2V5X3Q7CQkJIAoKCgp0eXBlZGVmCXVsb25nX3QJbW9kZV90OwkJCSAKCgoKCgoKCnR5
cGVkZWYJbG9uZwl1aWRfdDsJCQkgCgoKCnR5cGVkZWYJdWlkX3QJZ2lkX3Q7CQkJIAoKdHlwZWRl
ZiBpZF90ICAgIHRhc2tpZF90Owp0eXBlZGVmIGlkX3QgICAgcHJvamlkX3Q7CgogCgoKCgp0eXBl
ZGVmCXVpbnRfdAlwdGhyZWFkX3Q7CSAKdHlwZWRlZgl1aW50X3QJcHRocmVhZF9rZXlfdDsJIAoK
dHlwZWRlZglzdHJ1Y3QgX3B0aHJlYWRfbXV0ZXggewkJIAoJc3RydWN0IHsKCQl1aW50MTZfdAlf
X3B0aHJlYWRfbXV0ZXhfZmxhZzE7CgkJdWludDhfdAkJX19wdGhyZWFkX211dGV4X2ZsYWcyOwoJ
CXVpbnQ4X3QJCV9fcHRocmVhZF9tdXRleF9jZWlsaW5nOwoJCXVpbnQxNl90IAlfX3B0aHJlYWRf
bXV0ZXhfdHlwZTsKCQl1aW50MTZfdCAJX19wdGhyZWFkX211dGV4X21hZ2ljOwoJfSBfX3B0aHJl
YWRfbXV0ZXhfZmxhZ3M7Cgl1bmlvbiB7CgkJc3RydWN0IHsKCQkJdWludDhfdAlfX3B0aHJlYWRf
bXV0ZXhfcGFkWzhdOwoJCX0gX19wdGhyZWFkX211dGV4X2xvY2s2NDsKCQlzdHJ1Y3QgewoJCQl1
aW50MzJfdCBfX3B0aHJlYWRfb3duZXJwaWQ7CgkJCXVpbnQzMl90IF9fcHRocmVhZF9sb2Nrd29y
ZDsKCQl9IF9fcHRocmVhZF9tdXRleF9sb2NrMzI7CgkJdXBhZDY0X3QgX19wdGhyZWFkX211dGV4
X293bmVyNjQ7Cgl9IF9fcHRocmVhZF9tdXRleF9sb2NrOwoJdXBhZDY0X3QgX19wdGhyZWFkX211
dGV4X2RhdGE7Cn0gcHRocmVhZF9tdXRleF90OwoKdHlwZWRlZglzdHJ1Y3QgX3B0aHJlYWRfY29u
ZCB7CQkgCglzdHJ1Y3QgewoJCXVpbnQ4X3QJCV9fcHRocmVhZF9jb25kX2ZsYWdbNF07CgkJdWlu
dDE2X3QgCV9fcHRocmVhZF9jb25kX3R5cGU7CgkJdWludDE2X3QgCV9fcHRocmVhZF9jb25kX21h
Z2ljOwoJfSBfX3B0aHJlYWRfY29uZF9mbGFnczsKCXVwYWQ2NF90IF9fcHRocmVhZF9jb25kX2Rh
dGE7Cn0gcHRocmVhZF9jb25kX3Q7CgogCgoKdHlwZWRlZglzdHJ1Y3QgX3B0aHJlYWRfcndsb2Nr
IHsJIAoJaW50MzJfdAkJX19wdGhyZWFkX3J3bG9ja19yZWFkZXJzOwoJdWludDE2X3QJX19wdGhy
ZWFkX3J3bG9ja190eXBlOwoJdWludDE2X3QJX19wdGhyZWFkX3J3bG9ja19tYWdpYzsKCXVwYWQ2
NF90CV9fcHRocmVhZF9yd2xvY2tfcGFkMVszXTsKCXVwYWQ2NF90CV9fcHRocmVhZF9yd2xvY2tf
cGFkMlsyXTsKCXVwYWQ2NF90CV9fcHRocmVhZF9yd2xvY2tfcGFkM1syXTsKfSBwdGhyZWFkX3J3
bG9ja190OwoKIAoKCnR5cGVkZWYgc3RydWN0IHsKCXZvaWQJKl9fcHRocmVhZF9hdHRycDsKfSBw
dGhyZWFkX2F0dHJfdDsKCiAKCgp0eXBlZGVmIHN0cnVjdCB7Cgl2b2lkCSpfX3B0aHJlYWRfbXV0
ZXhhdHRycDsKfSBwdGhyZWFkX211dGV4YXR0cl90OwoKIAoKCnR5cGVkZWYgc3RydWN0IHsKCXZv
aWQJKl9fcHRocmVhZF9jb25kYXR0cnA7Cn0gcHRocmVhZF9jb25kYXR0cl90OwoKIAoKCnR5cGVk
ZWYJc3RydWN0IHsKCXVwYWQ2NF90CV9fcHRocmVhZF9vbmNlX3BhZFs0XTsKfSBwdGhyZWFkX29u
Y2VfdDsKCiAKCgoKdHlwZWRlZiBzdHJ1Y3QgewoJdm9pZAkqX19wdGhyZWFkX3J3bG9ja2F0dHJw
Owp9IHB0aHJlYWRfcndsb2NrYXR0cl90OwoKdHlwZWRlZiB1bG9uZ190CWRldl90OwkJCSAKCgoK
Cgp0eXBlZGVmCXVsb25nX3QJbmxpbmtfdDsJCSAKdHlwZWRlZglsb25nCXBpZF90OwkJCSAKCgoK
CiMgNDU2ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUu
My9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6
ZV90OwkJIAoKCgoKCgoKCgp0eXBlZGVmIGludAlzc2l6ZV90OwkgCgoKCgoKdHlwZWRlZglsb25n
CQl0aW1lX3Q7CSAKCgoKCnR5cGVkZWYJbG9uZwkJY2xvY2tfdDsgIAoKCgoKdHlwZWRlZglpbnQJ
Y2xvY2tpZF90OwkgCgoKCgp0eXBlZGVmCWludAl0aW1lcl90OwkgCgoKCgoKIAp0eXBlZGVmCXVu
c2lnbmVkIGNoYXIJdW5jaGFyOwp0eXBlZGVmCXVuc2lnbmVkIHNob3J0CXVzaG9ydDsKdHlwZWRl
Zgl1bnNpZ25lZCBpbnQJdWludDsKdHlwZWRlZgl1bnNpZ25lZCBsb25nCXVsb25nOwogCgojIDUy
OCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMyA0CgoKCgogCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKdHlwZWRl
ZiB1bnNpZ25lZCBjaGFyCXVfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydAl1X3Nob3J0Owp0
eXBlZGVmIHVuc2lnbmVkIGludAl1X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nCXVfbG9uZzsK
dHlwZWRlZiBzdHJ1Y3QgX3F1YWQgeyBpbnQgdmFsWzJdOyB9IHF1YWRfdDsJIAp0eXBlZGVmIHF1
YWRfdAkJcXVhZDsJCQkgCiAKCiAKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAx
IDMgNAogCiAKIAoKIAogCiAKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIylzZWxlY3QuaAkxLjE2CTk4
LzA0LzI3IFNNSSIJCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAxIDMgNAogCiAK
CiAKIAogCgogCgoKCgoKIAoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXRpbWUuaAkyLjY2CTAx
LzAxLzE3IFNNSSIJCgoKCiAKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoKCgoKCgoKCnN0cnVj
dCB0aW1ldmFsIHsKCXRpbWVfdAkJdHZfc2VjOwkJIAoJc3VzZWNvbmRzX3QJdHZfdXNlYzsJIAp9
OwoKIyA3NCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNAoKCgoKCgoKCnN0cnVjdCB0aW1l
em9uZSB7CglpbnQJdHpfbWludXRlc3dlc3Q7CSAKCWludAl0el9kc3R0aW1lOwkgCn07CgoKCgoK
fQoKCiAKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy
LjgvMi45NS4zL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMyA0CiAKIAoKIAogCiAKCiAKCgoKCiMg
NTg2ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKCiMgMTAwICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIg
MiAzIDQKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCgoJCQkJIAoJCQkJIAoKCQkJCSAKCQkJCSAKCgpzdHJ1Y3QJaXRpbWVydmFsIHsK
CXN0cnVjdAl0aW1ldmFsIGl0X2ludGVydmFsOwkgCglzdHJ1Y3QJdGltZXZhbCBpdF92YWx1ZTsJ
IAp9OwoKIyAxODEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKCgoKCgoKCiAKCgoKCgoK
CgoKCgogCgoKdHlwZWRlZglsb25nbG9uZ190CWhydGltZV90OwoKIyAzMTUgIi91c3IvaW5jbHVk
ZS9zeXMvdGltZS5oIiAzIDQKCgoKCgppbnQgYWRqdGltZShzdHJ1Y3QgdGltZXZhbCAqLCBzdHJ1
Y3QgdGltZXZhbCAqKTsKCgoKCgoKCgoKCmludCBnZXRpdGltZXIoaW50LCBzdHJ1Y3QgaXRpbWVy
dmFsICopOwppbnQgdXRpbWVzKGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHRpbWV2YWwgKik7
CgoKCmludCBzZXRpdGltZXIoaW50LCBzdHJ1Y3QgaXRpbWVydmFsICosIHN0cnVjdCBpdGltZXJ2
YWwgKik7CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCmludCBzZXR0aW1lb2ZkYXko
c3RydWN0IHRpbWV2YWwgKiwgdm9pZCAqKTsKCmhydGltZV90CWdldGhydGltZSh2b2lkKTsKaHJ0
aW1lX3QJZ2V0aHJ2dGltZSh2b2lkKTsKCgoKCgoKCgoKCgoKCgoKCmludCBnZXR0aW1lb2ZkYXko
c3RydWN0IHRpbWV2YWwgKiwgdm9pZCAqKTsKCgoKCgoKCiAKCgoKCgoKCgoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvdGltZS5oIiAxIDMgNAogCiAKCiAKIAogCgogCgoKCgoKCgojcHJhZ21hIGlkZW50
CSJAKCMpdGltZS5oCTEuMzkJOTkvMDgvMTAgU01JIgkKCgojIDEgIi91c3IvbG9jYWwvbGliL2dj
Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEg
MyA0CiAKIAoKIAogCiAKCiAKCgoKCiMgNTg2ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKCiMgMTkgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDIgMyA0CgojIDEgIi91c3IvaW5jbHVkZS9pc28vdGltZV9pc28u
aCIgMSAzIDQKIAogCgogCiAKIAoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgaWRlbnQJ
IkAoIyl0aW1lX2lzby5oCTEuMQk5OS8wOC8wOSBTTUkiIAoKCgoKZXh0ZXJuICJDIiB7CgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKc3RydWN0CXRtIHsJIAoJaW50CXRtX3NlYzsK
CWludAl0bV9taW47CglpbnQJdG1faG91cjsKCWludAl0bV9tZGF5OwoJaW50CXRtX21vbjsKCWlu
dAl0bV95ZWFyOwoJaW50CXRtX3dkYXk7CglpbnQJdG1feWRheTsKCWludAl0bV9pc2RzdDsKfTsK
CgoKCmV4dGVybiBjaGFyICphc2N0aW1lKGNvbnN0IHN0cnVjdCB0bSAqKTsKZXh0ZXJuIGNsb2Nr
X3QgY2xvY2sodm9pZCk7CmV4dGVybiBjaGFyICpjdGltZShjb25zdCB0aW1lX3QgKik7CmV4dGVy
biBkb3VibGUgZGlmZnRpbWUodGltZV90LCB0aW1lX3QpOwpleHRlcm4gc3RydWN0IHRtICpnbXRp
bWUoY29uc3QgdGltZV90ICopOwpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWUoY29uc3QgdGlt
ZV90ICopOwpleHRlcm4gdGltZV90IG1rdGltZShzdHJ1Y3QgdG0gKik7CmV4dGVybiB0aW1lX3Qg
dGltZSh0aW1lX3QgKik7CmV4dGVybiBzaXplX3Qgc3RyZnRpbWUoY2hhciAqLCBzaXplX3QsIGNv
bnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHRtICopOwoKIyAxMDYgIi91c3IvaW5jbHVkZS9pc28v
dGltZV9pc28uaCIgMyA0CgoKCgoKCgp9CgoKCiMgMjAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIg
MyA0CgoKIAoKCgojIDQwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKCgoKZXh0ZXJuICJDIiB7
CgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gc3RydWN0IHRtICpnbXRpbWVfcihjb25zdCB0aW1lX3Qg
Kiwgc3RydWN0IHRtICopOwpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWVfcihjb25zdCB0aW1l
X3QgKiwgc3RydWN0IHRtICopOwoKCgoKCmV4dGVybiBjaGFyICpzdHJwdGltZShjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKiwgc3RydWN0IHRtICopOwoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvdGltZV9pbXBsLmgiIDEgMyA0CiAKCgoKCiAKCgoKCgoKCgojcHJhZ21hIGlk
ZW50CSJAKCMpdGltZV9pbXBsLmgJMS41CTk5LzEwLzA1IFNNSSIKCgoKCmV4dGVybiAiQyIgewoK
CgoKCgoKCgogCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgIHRpbWVzcGVjIHsJCSAKCXRpbWVfdAkJdHZf
c2VjOwkJIAoJbG9uZwkJdHZfbnNlYzsJIAp9IHRpbWVzcGVjX3Q7CgojIDU4ICIvdXNyL2luY2x1
ZGUvc3lzL3RpbWVfaW1wbC5oIiAzIDQKCgp0eXBlZGVmIHN0cnVjdCB0aW1lc3BlYyB0aW1lc3Ry
dWNfdDsJIAoKCgogCgoKCgoKCgoKCiAKCgoKCnR5cGVkZWYgc3RydWN0IGl0aW1lcnNwZWMgewkJ
IAoJc3RydWN0IHRpbWVzcGVjCWl0X2ludGVydmFsOwkgCglzdHJ1Y3QgdGltZXNwZWMJaXRfdmFs
dWU7CSAKfSBpdGltZXJzcGVjX3Q7CgojIDEwMCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwu
aCIgMyA0CgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgp9CgoKCiMgODMgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDIgMyA0CgoKIAoKCgoKCgoKCgoKCgp1bmlvbiBzaWd2YWwgewoJ
aW50CXNpdmFsX2ludDsJIAoJdm9pZAkqc2l2YWxfcHRyOwkgCn07CgoKCgpzdHJ1Y3Qgc2lnZXZl
bnQgewoJaW50CQlzaWdldl9ub3RpZnk7CSAKCWludAkJc2lnZXZfc2lnbm87CSAKCXVuaW9uIHNp
Z3ZhbAlzaWdldl92YWx1ZTsJIAoJdm9pZAkJKCpzaWdldl9ub3RpZnlfZnVuY3Rpb24pKHVuaW9u
IHNpZ3ZhbCk7CglwdGhyZWFkX2F0dHJfdAkqc2lnZXZfbm90aWZ5X2F0dHJpYnV0ZXM7CglpbnQJ
CV9fc2lnZXZfcGFkMjsKfTsKCgpleHRlcm4gaW50IGNsb2NrX2dldHJlcyhjbG9ja2lkX3QsIHN0
cnVjdCB0aW1lc3BlYyAqKTsKZXh0ZXJuIGludCBjbG9ja19nZXR0aW1lKGNsb2NraWRfdCwgc3Ry
dWN0IHRpbWVzcGVjICopOwpleHRlcm4gaW50IGNsb2NrX3NldHRpbWUoY2xvY2tpZF90LCBjb25z
dCBzdHJ1Y3QgdGltZXNwZWMgKik7CmV4dGVybiBpbnQgdGltZXJfY3JlYXRlKGNsb2NraWRfdCwg
c3RydWN0IHNpZ2V2ZW50ICosIHRpbWVyX3QgKik7CmV4dGVybiBpbnQgdGltZXJfZGVsZXRlKHRp
bWVyX3QpOwpleHRlcm4gaW50IHRpbWVyX2dldG92ZXJydW4odGltZXJfdCk7CmV4dGVybiBpbnQg
dGltZXJfZ2V0dGltZSh0aW1lcl90LCBzdHJ1Y3QgaXRpbWVyc3BlYyAqKTsKZXh0ZXJuIGludCB0
aW1lcl9zZXR0aW1lKHRpbWVyX3QsIGludCwgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKiwKCQlz
dHJ1Y3QgaXRpbWVyc3BlYyAqKTsKZXh0ZXJuIGludCBuYW5vc2xlZXAoY29uc3Qgc3RydWN0IHRp
bWVzcGVjICosIHN0cnVjdCB0aW1lc3BlYyAqKTsKCgoKCmV4dGVybiB2b2lkIHR6c2V0KHZvaWQp
OwoKZXh0ZXJuIGNoYXIgKnR6bmFtZVsyXTsKCgpleHRlcm4gbG9uZyBfc3lzY29uZihpbnQpOwkg
CgoJCQkJIAoKCgoKZXh0ZXJuIGxvbmcgdGltZXpvbmU7CmV4dGVybiBpbnQgZGF5bGlnaHQ7CgoK
CgoKZXh0ZXJuIGludCBjZnRpbWUoY2hhciAqLCBjaGFyICosIGNvbnN0IHRpbWVfdCAqKTsKZXh0
ZXJuIGludCBhc2NmdGltZShjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHRtICop
OwpleHRlcm4gbG9uZyBhbHR6b25lOwoKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqZ2V0ZGF0ZShjb25z
dCBjaGFyICopOwoKCgoKZXh0ZXJuIGludCAqX2dldGRhdGVfZXJyX2FkZHIodm9pZCk7CgoKCgoK
IyAyMDYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIyAyNzAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoKCmV4dGVy
biBjaGFyICphc2N0aW1lX3IoY29uc3Qgc3RydWN0IHRtICosIGNoYXIgKiwgaW50KTsKZXh0ZXJu
IGNoYXIgKmN0aW1lX3IoY29uc3QgdGltZV90ICosIGNoYXIgKiwgaW50KTsKCgoKIyAzMTMgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoKCgoKCn0KCgoKIyA0MTAgIi91c3IvaW5jbHVkZS9zeXMv
dGltZS5oIiAyIDMgNAoKCgogCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3Qu
aCIgMSAzIDQKIAogCiAKCiAKIAogCgojIDEwNyAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIg
MyA0CgojIDQyMyAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMyA0CgoKCgoKCn0KCgoKIyAx
NyAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzIDQKCgoKCmV4dGVybiAiQyIgewoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmCWxvbmcJZmRfbWFzazsKCnR5cGVkZWYJbG9uZwlm
ZHNfbWFzazsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmCXN0cnVjdCBmZF9zZXQg
ewoKCgoJbG9uZwlmZHNfYml0c1soKCggMTAyNCAgKSsoKCAgKHNpemVvZiAoZmRzX21hc2spICog
OCApICApLTEpKS8oICAoc2l6ZW9mIChmZHNfbWFzaykgKiA4ICkgICkpIF07Cn0gZmRfc2V0OwoK
CgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gaW50IHNlbGVjdChpbnQsIGZkX3NldCAqLCBmZF9zZXQg
KiwgZmRfc2V0ICosIHN0cnVjdCB0aW1ldmFsICopOwoKCgoKCgp9CgoKCiMgNTY2ICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N5cy90
eXBlcy5oIiAyIDMgNAoKCgoKIAoKCgoKCgoKCiAKCgoKfQoKCgojIDcxICIuLi9TcmNVbml4L0Vt
Q29tbW9uVW5peC5oIiAyCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDEgMyA0CiAK
CgoKCiAKIAoKIAogCiAKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIylzb2NrZXQuaAkxLjU0CTAxLzAz
LzEyIFNNSSIJCgogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdWlv
LmgiIDEgMyA0CiAKIAoKIAogCiAKCiAKCgoKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIyl1aW8uaAkx
LjI5CTk3LzA2LzI5IFNNSSIJCgoKCgpleHRlcm4gIkMiIHsKCgoKCiAKCgoKCgoKCgoKCgoKdHlw
ZWRlZiBzdHJ1Y3QgaW92ZWMgewoJY2FkZHJfdAlpb3ZfYmFzZTsKCgoKCWxvbmcJaW92X2xlbjsK
Cn0gaW92ZWNfdDsKCgojIDU4ICIvdXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAzIDQKCgoKIAoKCnR5
cGVkZWYgZW51bSB1aW9fc2VnIHsgVUlPX1VTRVJTUEFDRSwgVUlPX1NZU1NQQUNFLCBVSU9fVVNF
UklTUEFDRSB9IHVpb19zZWdfdDsKCnR5cGVkZWYgc3RydWN0IHVpbyB7Cglpb3ZlY190CSp1aW9f
aW92OwkgCglpbnQJdWlvX2lvdmNudDsJIAoJbGxvZmZfdAlfdWlvX29mZnNldDsJIAoJdWlvX3Nl
Z190IHVpb19zZWdmbGc7CSAKCXNob3J0CXVpb19mbW9kZTsJIAoJbGxkYWRkcl90IF91aW9fbGlt
aXQ7CSAKCXNzaXplX3QJdWlvX3Jlc2lkOwkgCn0gdWlvX3Q7CgoKCgoKCgoKCgoKCgoKCiAKCgp0
eXBlZGVmIGVudW0gdWlvX3J3IHsgVUlPX1JFQUQsIFVJT19XUklURSB9IHVpb19yd190OwoKCiMg
MTA4ICIvdXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAzIDQKCgoKCmV4dGVybiBzc2l6ZV90IHJlYWR2
KGludCwgY29uc3Qgc3RydWN0IGlvdmVjICosIGludCk7CmV4dGVybiBzc2l6ZV90IHdyaXRldihp
bnQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqLCBpbnQpOwoKCgoKCgoKCgoKCn0KCgoKIyAzOCAiL3Vz
ci9pbmNsdWRlL3N5cy9zb2NrZXQuaCIgMiAzIDQKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9u
ZXRjb25maWcuaCIgMSAzIDQKIAogCgogCiAKIAoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKW5ldGNv
bmZpZy5oCTEuMjAJOTkvMDQvMjcgU01JIgkKCgpleHRlcm4gIkMiIHsKCgoKCgpzdHJ1Y3QgIG5l
dGNvbmZpZyB7CgljaGFyCQkqbmNfbmV0aWQ7CSAKCXVuc2lnbmVkIGludAluY19zZW1hbnRpY3M7
CSAKCXVuc2lnbmVkIGludAluY19mbGFnOwkgCgljaGFyCQkqbmNfcHJvdG9mbWx5OwkgCgljaGFy
CQkqbmNfcHJvdG87CSAKCWNoYXIJCSpuY19kZXZpY2U7CSAKCXVuc2lnbmVkIGludAluY19ubG9v
a3VwczsJIAoJY2hhcgkJKipuY19sb29rdXBzOwkgCgl1bnNpZ25lZCBpbnQJbmNfdW51c2VkWzhd
OwkgCn07Cgp0eXBlZGVmIHN0cnVjdCB7CglzdHJ1Y3QgbmV0Y29uZmlnICoqbmNfaGVhZDsKCXN0
cnVjdCBuZXRjb25maWcgKipuY19jdXJyOwp9IE5DT05GX0hBTkRMRTsKCiAKCgoKCgoKCgogCgoK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgpleHRlcm4gdm9p
ZAkJKnNldG5ldGNvbmZpZyh2b2lkKTsKZXh0ZXJuIGludAkJZW5kbmV0Y29uZmlnKHZvaWQgKik7
CmV4dGVybiBzdHJ1Y3QgbmV0Y29uZmlnCSpnZXRuZXRjb25maWcodm9pZCAqKTsKZXh0ZXJuIHN0
cnVjdCBuZXRjb25maWcJKmdldG5ldGNvbmZpZ2VudChjaGFyICopOwpleHRlcm4gdm9pZAkJZnJl
ZW5ldGNvbmZpZ2VudChzdHJ1Y3QgbmV0Y29uZmlnICopOwpleHRlcm4gdm9pZAkJKnNldG5ldHBh
dGgodm9pZCk7CmV4dGVybiBpbnQJCWVuZG5ldHBhdGgodm9pZCAqKTsKZXh0ZXJuIHN0cnVjdCBu
ZXRjb25maWcgKmdldG5ldHBhdGgodm9pZCAqKTsKZXh0ZXJuIHZvaWQJCW5jX3BlcnJvcihjb25z
dCBjaGFyICopOwpleHRlcm4gY2hhcgkJKm5jX3NwZXJyb3Iodm9pZCk7CgojIDExOCAiL3Vzci9p
bmNsdWRlL3N5cy9uZXRjb25maWcuaCIgMyA0CgoKCn0KCgoKIyA0MiAiL3Vzci9pbmNsdWRlL3N5
cy9zb2NrZXQuaCIgMiAzIDQKCgoKCgpleHRlcm4gIkMiIHsKCgoKCnR5cGVkZWYgdWludDE2X3QJ
c2FfZmFtaWx5X3Q7CgoKCgoKCgoKdHlwZWRlZgl1aW50MzJfdAlzb2NrbGVuX3Q7CgoKCgoKdHlw
ZWRlZgl2b2lkCQkqUHNvY2tsZW5fdDsKCgoKCiAKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKc3RydWN0
CWxpbmdlciB7CglpbnQJbF9vbm9mZjsJCSAKCWludAlsX2xpbmdlcjsJCSAKfTsKCiAKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKc3RydWN0IHNvY2thZGRyIHsK
CXNhX2ZhbWlseV90CXNhX2ZhbWlseTsJIAoJY2hhcgkJc2FfZGF0YVsxNF07CSAKfTsKCgojIDEg
Ii91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDEgMyA0CiAKCgoKIAoKCgoKCgoKCgoKCiAKCgoK
CgoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKWluLmgJMS4zMQkwMC8xMC8yOCBTTUkiCgoKCgoK
CmV4dGVybiAiQyIgewoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3RyZWFtLmgiIDEgMyA0CiAK
IAoKIAogCiAKCiAKCgoKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIylzdHJlYW0uaAkxLjg2CTAwLzEw
LzIzIFNNSSIJCgogCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy92bm9kZS5oIiAxIDMgNAogCiAK
CiAKIAogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXZu
b2RlLmgJMS44NQk5OS8wNy8zMCBTTUkiCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RfbG9jay5o
IiAxIDMgNAogCgoKCgogCgoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXRfbG9jay5oCTEuNDUJ
OTgvMDIvMDEgU01JIgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9tYWNobG9jay5oIiAxIDMgNAog
CgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpbWFjaGxvY2suaAkxLjIxCTAwLzA0LzI3IFNNSSIK
CgpleHRlcm4gIkMiIHsKCgoKCgoKIyAyOSAiL3Vzci9pbmNsdWRlL3N5cy9tYWNobG9jay5oIiAz
IDQKCgoKCgoKCnR5cGVkZWYJbG9ja190CWRpc3BfbG9ja190OwkJIAoKIAoKCgoKCiAKCgoKCgoK
CiAKCgpleHRlcm4JaW50CWhyZXNfbG9jazsKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKfQoKCgojIDE4ICIvdXNyL2luY2x1ZGUvc3lzL3RfbG9jay5oIiAyIDMg
NAoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3BhcmFtLmgiIDEgMyA0CiAKCgoKCiAKIAoKIAogCiAK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpcGFyYW0uaAkxLjc2
CTAwLzAyLzE0IFNNSSIKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoJCQkJIAoJCQkJIAoJCQkJIAoKIAoKCgoKCgogCgoK
CgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgoK
IyAyNzkgIi91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMyA0CgoKCn0KCgogCgoKCgojIDQwMyAi
L3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAzIDQKCgogCgoKCgoKCgojIDEgIi91c3IvaW5jbHVk
ZS9zeXMvdW5pc3RkLmgiIDEgMyA0CiAKCgoKCgoKCgoKIAoKCgoKIAoKCgoKCgoKCiNwcmFnbWEg
aWRlbnQJIkAoIyl1bmlzdGQuaAkxLjM3CTk4LzEwLzI4IFNNSSIJCgoKCgpleHRlcm4gIkMiIHsK
CgogCgoKCiAKCgogCgoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgogCgoKCgoKCgoK
IAoKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKIAoKCgoKCiAKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgogCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKfQoKCgojIDQxMyAiL3Vzci9pbmNsdWRlL3N5cy9w
YXJhbS5oIiAyIDMgNAoKCgpleHRlcm4gIkMiIHsKCgoKZXh0ZXJuIGxvbmcgX3N5c2NvbmYoaW50
KTsJIAoKCgoKCgoKCgoKfQoKCgoKCiMgMTkgIi91c3IvaW5jbHVkZS9zeXMvdF9sb2NrLmgiIDIg
MyA0CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvbXV0ZXguaCIgMSAzIDQKIAoKCgoKCgoKI3ByYWdt
YSBpZGVudAkiQCgjKW11dGV4LmgJMS4yMAk5OC8wMi8wMSBTTUkiCgoKCgoKCmV4dGVybiAiQyIg
ewoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgZW51bSB7CglNVVRFWF9BREFQVElWRSA9
IDAsCSAKCU1VVEVYX1NQSU4gPSAxLAkJIAoJTVVURVhfRFJJVkVSID0gNCwJIAoJTVVURVhfREVG
QVVMVCA9IDYJIAp9IGttdXRleF90eXBlX3Q7Cgp0eXBlZGVmIHN0cnVjdCBtdXRleCB7CgoKCgl2
b2lkCSpfb3BhcXVlWzJdOwoKfSBrbXV0ZXhfdDsKCiMgNjcgIi91c3IvaW5jbHVkZS9zeXMvbXV0
ZXguaCIgMyA0CgoKCgoKfQoKCgojIDIwICIvdXNyL2luY2x1ZGUvc3lzL3RfbG9jay5oIiAyIDMg
NAoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3J3bG9jay5oIiAxIDMgNAogCgoKCgoKCgojcHJhZ21h
IGlkZW50CSJAKCMpcndsb2NrLmgJMS45CTk4LzAyLzE4IFNNSSIKCiAKCgoKCgoKZXh0ZXJuICJD
IiB7CgoKCgp0eXBlZGVmIGVudW0gewoJUldfRFJJVkVSID0gMiwJCSAKCVJXX0RFRkFVTFQgPSA0
CQkgCn0ga3J3X3R5cGVfdDsKCnR5cGVkZWYgZW51bSB7CglSV19XUklURVIsCglSV19SRUFERVIK
fSBrcndfdDsKCnR5cGVkZWYgc3RydWN0IF9rcndsb2NrIHsKCXZvaWQJKl9vcGFxdWVbMV07Cn0g
a3J3bG9ja190OwoKIyA1OCAiL3Vzci9pbmNsdWRlL3N5cy9yd2xvY2suaCIgMyA0CgoKCgoKfQoK
CgojIDIxICIvdXNyL2luY2x1ZGUvc3lzL3RfbG9jay5oIiAyIDMgNAoKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL3NlbWFwaG9yZS5oIiAxIDMgNAogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc2Vt
YXBob3JlLmgJMS41CTk4LzAyLzAxIFNNSSIKCiAKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCnR5
cGVkZWYgZW51bSB7CglTRU1BX0RFRkFVTFQsCglTRU1BX0RSSVZFUgp9IGtzZW1hX3R5cGVfdDsK
CnR5cGVkZWYgc3RydWN0IF9rc2VtYSB7Cgl2b2lkCSogX29wYXF1ZVsyXTsJIAp9IGtzZW1hX3Q7
CgojIDQ2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbWFwaG9yZS5oIiAzIDQKCgoKfQoKCgoKCiMgMjIg
Ii91c3IvaW5jbHVkZS9zeXMvdF9sb2NrLmgiIDIgMyA0CgojIDEgIi91c3IvaW5jbHVkZS9zeXMv
Y29uZHZhci5oIiAxIDMgNAogCgoKCgogCgoKCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpY29u
ZHZhci5oCTEuMTMJMDEvMDMvMTUgU01JIgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKCgogCgoK
CnR5cGVkZWYgc3RydWN0IF9rY29uZHZhciB7Cgl1c2hvcnRfdAlfb3BhcXVlOwp9IGtjb25kdmFy
X3Q7Cgp0eXBlZGVmCWVudW0gewoJQ1ZfREVGQVVMVCwKCUNWX0RSSVZFUgp9IGtjdl90eXBlX3Q7
CgoKIyA2NSAiL3Vzci9pbmNsdWRlL3N5cy9jb25kdmFyLmgiIDMgNAoKCgoKCn0KCgoKIyAyMyAi
L3Vzci9pbmNsdWRlL3N5cy90X2xvY2suaCIgMiAzIDQKCgoKCmV4dGVybiAiQyIgewoKCgoKIAoK
CgoKCgoKCgojIDc2ICIvdXNyL2luY2x1ZGUvc3lzL3RfbG9jay5oIiAzIDQKCgoKCgp9CgoKCiMg
MzggIi91c3IvaW5jbHVkZS9zeXMvdm5vZGUuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9z
eXMvY3JlZC5oIiAxIDMgNAogCiAKCiAKIAogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
cHJhZ21hIGlkZW50CSJAKCMpY3JlZC5oCTEuMjEJOTcvMDEvMDkgU01JIgkKCgoKCgoKZXh0ZXJu
ICJDIiB7CgoKIAoKCgoKCnR5cGVkZWYgc3RydWN0IGNyZWQgewoJdWludF90CWNyX3JlZjsJCQkg
Cgl1aWRfdAljcl91aWQ7CQkJIAoJZ2lkX3QJY3JfZ2lkOwkJCSAKCXVpZF90CWNyX3J1aWQ7CQkg
CglnaWRfdAljcl9yZ2lkOwkJIAoJdWlkX3QJY3Jfc3VpZDsJCSAKCWdpZF90CWNyX3NnaWQ7CQkg
Cgl1aW50X3QJY3Jfbmdyb3VwczsJCSAKCWdpZF90CWNyX2dyb3Vwc1sxXTsJCSAKfSBjcmVkX3Q7
CgojIDg5ICIvdXNyL2luY2x1ZGUvc3lzL2NyZWQuaCIgMyA0CgoKCn0KCgoKIyA0MCAiL3Vzci9p
bmNsdWRlL3N5cy92bm9kZS5oIiAyIDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJj
ZS5oIiAxIDMgNAogCiAKCiAKIAogCgogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpcmVzb3Vy
Y2UuaAkxLjI1CTk4LzA2LzMwIFNNSSIJCgoKCgoKCgpleHRlcm4gIkMiIHsKCgogCgoKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKCiMgNTkgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0CgoK
IAoKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZwlybGltX3Q7CgoKCgoKIyA4MSAiL3Vzci9pbmNs
dWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKCgoKCiMgMTAwICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291
cmNlLmgiIDMgNAoKCnN0cnVjdCBybGltaXQgewoJcmxpbV90CXJsaW1fY3VyOwkJIAoJcmxpbV90
CXJsaW1fbWF4OwkJIAp9OwoKIAoKCnR5cGVkZWYgdV9sb25nbG9uZ190CXJsaW02NF90OwoKCgoK
CnN0cnVjdCBybGltaXQ2NCB7CglybGltNjRfdAlybGltX2N1cjsJIAoJcmxpbTY0X3QJcmxpbV9t
YXg7CSAKfTsKCgoKIyAxMzggIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0CgoKCgoK
c3RydWN0CXJ1c2FnZSB7CglzdHJ1Y3QgdGltZXZhbCBydV91dGltZTsJIAoJc3RydWN0IHRpbWV2
YWwgcnVfc3RpbWU7CSAKCWxvbmcJcnVfbWF4cnNzOwkJIAoJbG9uZwlydV9peHJzczsJCSAKCWxv
bmcJcnVfaWRyc3M7CQkgCglsb25nCXJ1X2lzcnNzOwkJIAoJbG9uZwlydV9taW5mbHQ7CQkgCgls
b25nCXJ1X21hamZsdDsJCSAKCWxvbmcJcnVfbnN3YXA7CQkgCglsb25nCXJ1X2luYmxvY2s7CQkg
Cglsb25nCXJ1X291YmxvY2s7CQkgCglsb25nCXJ1X21zZ3NuZDsJCSAKCWxvbmcJcnVfbXNncmN2
OwkJIAoJbG9uZwlydV9uc2lnbmFsczsJCSAKCWxvbmcJcnVfbnZjc3c7CQkgCglsb25nCXJ1X25p
dmNzdzsJCSAKfTsKCiMgMTc0ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMgNAoKCiMg
MTg5ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMgNAoKCgoKZXh0ZXJuIGludCBzZXRy
bGltaXQoaW50LCBjb25zdCBzdHJ1Y3QgcmxpbWl0ICopOwpleHRlcm4gaW50IGdldHJsaW1pdChp
bnQsIHN0cnVjdCBybGltaXQgKik7CgogCgoKZXh0ZXJuIGludCBzZXRybGltaXQ2NChpbnQsIGNv
bnN0IHN0cnVjdCBybGltaXQ2NCAqKTsKZXh0ZXJuIGludCBnZXRybGltaXQ2NChpbnQsIHN0cnVj
dCBybGltaXQ2NCAqKTsKCgpleHRlcm4gaW50IGdldHByaW9yaXR5KGludCwgaWRfdCk7CmV4dGVy
biBpbnQgc2V0cHJpb3JpdHkoaW50LCBpZF90LCBpbnQpOwpleHRlcm4gaW50IGdldHJ1c2FnZShp
bnQsIHN0cnVjdCBydXNhZ2UgKik7CgojIDIyMyAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5o
IiAzIDQKCgoKCgp9CgoKCiMgNDIgIi91c3IvaW5jbHVkZS9zeXMvdm5vZGUuaCIgMiAzIDQKCiMg
MSAiL3Vzci9pbmNsdWRlL3ZtL3NlZ19lbnVtLmgiIDEgMyA0CiAKIAoKIAogCiAKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIylzZWdfZW51bS5oCTEuMwk5NS8x
Mi8yMiBTTUkiCgoKZXh0ZXJuICJDIiB7CgoKIAoKCgoKIAoKCgoKZW51bSBmYXVsdF90eXBlIHsK
CUZfSU5WQUwsCQkgCglGX1BST1QsCQkJIAoJRl9TT0ZUTE9DSywJCSAKCUZfU09GVFVOTE9DSwkJ
IAp9OwoKIAoKCmVudW0gbG9ja190eXBlIHsKCUxfUEFHRUxPQ0ssCQkgCglMX1BBR0VVTkxPQ0ss
CQkgCglMX1BBR0VSRUNMQUlNCQkgCn07CgogCgoKZW51bSBzZWdfcncgewoJU19PVEhFUiwJCSAK
CVNfUkVBRCwJCQkgCglTX1dSSVRFLAkJIAoJU19FWEVDLAkJCSAKCVNfQ1JFQVRFCQkgCn07CgoK
fQoKCgojIDQzICIvdXNyL2luY2x1ZGUvc3lzL3Zub2RlLmgiIDIgMyA0CgoKCgoKCmV4dGVybiAi
QyIgewoKCgogCgoKCgoKIAoKCgp0eXBlZGVmIGVudW0gdnR5cGUgewoJVk5PTgk9IDAsCglWUkVH
CT0gMSwKCVZESVIJPSAyLAoJVkJMSwk9IDMsCglWQ0hSCT0gNCwKCVZMTksJPSA1LAoJVkZJRk8J
PSA2LAoJVkRPT1IJPSA3LAoJVlBST0MJPSA4LAoJVlNPQ0sJPSA5LAoJVkJBRAk9IDEwCn0gdnR5
cGVfdDsKCiAKCgoKCgoKCgogCnR5cGVkZWYgc3RydWN0IHZub2RlIHsKCWttdXRleF90CXZfbG9j
azsJCQkgCgl1c2hvcnRfdAl2X2ZsYWc7CQkJIAoJdWludF90CQl2X2NvdW50OwkJIAoJc3RydWN0
IHZmcwkqdl92ZnNtb3VudGVkaGVyZTsJIAoJc3RydWN0IHZub2Rlb3BzCSp2X29wOwkJCSAKCXN0
cnVjdCB2ZnMJKnZfdmZzcDsJCSAKCXN0cnVjdCBzdGRhdGEJKnZfc3RyZWFtOwkJIAoJc3RydWN0
IHBhZ2UJKnZfcGFnZXM7CQkgCgllbnVtIHZ0eXBlCXZfdHlwZTsJCQkgCglkZXZfdAkJdl9yZGV2
OwkJCSAKCWNhZGRyX3QJCXZfZGF0YTsJCQkgCglzdHJ1Y3QgZmlsb2NrCSp2X2ZpbG9ja3M7CQkg
CglzdHJ1Y3Qgc2hybG9ja2xpc3QgKnZfc2hybG9ja3M7CQkgCglrY29uZHZhcl90CXZfY3Y7CQkJ
IAoJdm9pZAkJKnZfbG9jYWxpdHk7CQkgCn0gdm5vZGVfdDsKCiAKCgoKCgoKCgoKCgoKCiAKCgoK
CgogCgoKCgogCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgogCgoKCgoKCnR5cGVkZWYgc3RydWN0IHZh
dHRyIHsKCXVpbnRfdAkJdmFfbWFzazsJIAoJdnR5cGVfdAkJdmFfdHlwZTsJIAoJbW9kZV90CQl2
YV9tb2RlOwkgCgl1aWRfdAkJdmFfdWlkOwkJIAoJZ2lkX3QJCXZhX2dpZDsJCSAKCWRldl90CQl2
YV9mc2lkOwkgCgl1X2xvbmdsb25nX3QJdmFfbm9kZWlkOwkgCglubGlua190CQl2YV9ubGluazsJ
IAoJdV9vZmZzZXRfdAl2YV9zaXplOwkgCgl0aW1lc3RydWNfdAl2YV9hdGltZTsJIAoJdGltZXN0
cnVjX3QJdmFfbXRpbWU7CSAKCXRpbWVzdHJ1Y190CXZhX2N0aW1lOwkgCglkZXZfdAkJdmFfcmRl
djsJIAoJdWludF90CQl2YV9ibGtzaXplOwkgCgl1X2xvbmdsb25nX3QJdmFfbmJsb2NrczsJIAoJ
dWludF90CQl2YV92Y29kZTsJIAp9IHZhdHRyX3Q7CgojIDIwMCAiL3Vzci9pbmNsdWRlL3N5cy92
bm9kZS5oIiAzIDQKCgp0eXBlZGVmIHZhdHRyX3QJCXZhdHRyMzJfdDsKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCiAKCgplbnVtIHJt
CQl7IFJNRklMRSwgUk1ESVJFQ1RPUlkgfTsJIAplbnVtIHN5bWZvbGxvdwl7IE5PX0ZPTExPVywg
Rk9MTE9XIH07CQkgCmVudW0gdmNleGNsCXsgTk9ORVhDTCwgRVhDTCB9OwkJIAplbnVtIGNyZWF0
ZQl7IENSQ1JFQVQsIENSTUtOT0QsIENSTUtESVIgfTsJIAoKdHlwZWRlZiBlbnVtIHJtCQlybV90
Owp0eXBlZGVmIGVudW0gc3ltZm9sbG93CXN5bWZvbGxvd190Owp0eXBlZGVmIGVudW0gdmNleGNs
CXZjZXhjbF90Owp0eXBlZGVmIGVudW0gY3JlYXRlCWNyZWF0ZV90OwoKIAoKCgp0eXBlZGVmIHN0
cnVjdCB2c2VjYXR0ciB7Cgl1aW50X3QJCXZzYV9tYXNrOwkgCglpbnQJCXZzYV9hY2xjbnQ7CSAK
CXZvaWQJCSp2c2FfYWNsZW50cDsJIAoJaW50CQl2c2FfZGZhY2xjbnQ7CSAKCXZvaWQJCSp2c2Ff
ZGZhY2xlbnRwOwkgCn0gdnNlY2F0dHJfdDsKCiAKCgoKCgogCgoKc3RydWN0IHBhdGhuYW1lOwpz
dHJ1Y3QgZmlkOwpzdHJ1Y3QgZmxvY2s2NDsKc3RydWN0IHNocmxvY2s7CnN0cnVjdCBwYWdlOwpz
dHJ1Y3Qgc2VnOwpzdHJ1Y3QgYXM7CnN0cnVjdCBwb2xsaGVhZDsKCiAKCgp0eXBlZGVmIHN0cnVj
dCB2bm9kZW9wcyB7CglpbnQJKCp2b3Bfb3Blbikoc3RydWN0IHZub2RlICoqdnBwLCBpbnQgZmxh
Zywgc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9jbG9zZSkoc3RydWN0IHZub2RlICp2cCwg
aW50IGZsYWcsIGludCBjb3VudCwKCQkJCW9mZnNldF90IG9mZnNldCwgc3RydWN0IGNyZWQgKmNy
KTsKCWludAkoKnZvcF9yZWFkKShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW9wLCBp
bnQgaW9mbGFnLAoJCQkgICAgc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF93cml0ZSkoc3Ry
dWN0IHZub2RlICp2cCwgc3RydWN0IHVpbyAqdWlvcCwgaW50IGlvZmxhZywKCQkJCXN0cnVjdCBj
cmVkICpjcik7CglpbnQJKCp2b3BfaW9jdGwpKHN0cnVjdCB2bm9kZSAqdnAsIGludCBjbWQsIGlu
dHB0cl90IGFyZywgaW50IGZsYWcsCgkJCQlzdHJ1Y3QgY3JlZCAqY3IsIGludCAqcnZhbHApOwoJ
aW50CSgqdm9wX3NldGZsKShzdHJ1Y3Qgdm5vZGUgKnZwLCBpbnQgb2ZsYWdzLCBpbnQgbmZsYWdz
LAoJCQkJc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9nZXRhdHRyKShzdHJ1Y3Qgdm5vZGUg
KnZwLCBzdHJ1Y3QgdmF0dHIgKnZhcCwgaW50IGZsYWdzLAoJCQkJc3RydWN0IGNyZWQgKmNyKTsK
CWludAkoKnZvcF9zZXRhdHRyKShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdmF0dHIgKnZhcCwg
aW50IGZsYWdzLAoJCQkJc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9hY2Nlc3MpKHN0cnVj
dCB2bm9kZSAqdnAsIGludCBtb2RlLCBpbnQgZmxhZ3MsCgkJCQlzdHJ1Y3QgY3JlZCAqY3IpOwoJ
aW50CSgqdm9wX2xvb2t1cCkoc3RydWN0IHZub2RlICpkdnAsIGNoYXIgKm5tLCBzdHJ1Y3Qgdm5v
ZGUgKip2cHAsCgkJCQlzdHJ1Y3QgcGF0aG5hbWUgKnBucCwgaW50IGZsYWdzLAoJCQkJc3RydWN0
IHZub2RlICpyZGlyLCBzdHJ1Y3QgY3JlZCAqKTsKCWludAkoKnZvcF9jcmVhdGUpKHN0cnVjdCB2
bm9kZSAqZHZwLCBjaGFyICpuYW1lLCBzdHJ1Y3QgdmF0dHIgKnZhcCwKCQkJCXZjZXhjbF90IGV4
Y2wsIGludCBtb2RlLCBzdHJ1Y3Qgdm5vZGUgKip2cHAsCgkJCQlzdHJ1Y3QgY3JlZCAqY3IsIGlu
dCBmbGFnKTsKCWludAkoKnZvcF9yZW1vdmUpKHN0cnVjdCB2bm9kZSAqdnAsIGNoYXIgKm5tLCBz
dHJ1Y3QgY3JlZCAqY3IpOwoJaW50CSgqdm9wX2xpbmspKHN0cnVjdCB2bm9kZSAqdGR2cCwgc3Ry
dWN0IHZub2RlICpzdnAsIGNoYXIgKnRubSwKCQkJCXN0cnVjdCBjcmVkICpjcik7CglpbnQJKCp2
b3BfcmVuYW1lKShzdHJ1Y3Qgdm5vZGUgKnNkdnAsIGNoYXIgKnNubSwKCQkJCXN0cnVjdCB2bm9k
ZSAqdGR2cCwgY2hhciAqdG5tLCBzdHJ1Y3QgY3JlZCAqY3IpOwoJaW50CSgqdm9wX21rZGlyKShz
dHJ1Y3Qgdm5vZGUgKmR2cCwgY2hhciAqZGlybmFtZSwKCQkJCXN0cnVjdCB2YXR0ciAqdmFwLCBz
dHJ1Y3Qgdm5vZGUgKip2cHAsCgkJCQlzdHJ1Y3QgY3JlZCAqY3IpOwoJaW50CSgqdm9wX3JtZGly
KShzdHJ1Y3Qgdm5vZGUgKnZwLCBjaGFyICpubSwgc3RydWN0IHZub2RlICpjZGlyLAoJCQkJc3Ry
dWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9yZWFkZGlyKShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1
Y3QgdWlvICp1aW9wLAoJCQkJc3RydWN0IGNyZWQgKmNyLCBpbnQgKmVvZnApOwoJaW50CSgqdm9w
X3N5bWxpbmspKHN0cnVjdCB2bm9kZSAqZHZwLCBjaGFyICpsaW5rbmFtZSwKCQkJCXN0cnVjdCB2
YXR0ciAqdmFwLCBjaGFyICp0YXJnZXQsCgkJCQlzdHJ1Y3QgY3JlZCAqY3IpOwoJaW50CSgqdm9w
X3JlYWRsaW5rKShzdHJ1Y3Qgdm5vZGUgKnZwLCBzdHJ1Y3QgdWlvICp1aW9wLAoJCQkJc3RydWN0
IGNyZWQgKmNyKTsKCWludAkoKnZvcF9mc3luYykoc3RydWN0IHZub2RlICp2cCwgaW50IHN5bmNm
bGFnLCBzdHJ1Y3QgY3JlZCAqY3IpOwoJdm9pZAkoKnZvcF9pbmFjdGl2ZSkoc3RydWN0IHZub2Rl
ICp2cCwgc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9maWQpKHN0cnVjdCB2bm9kZSAqdnAs
IHN0cnVjdCBmaWQgKmZpZHApOwoJdm9pZAkoKnZvcF9yd2xvY2spKHN0cnVjdCB2bm9kZSAqdnAs
IGludCB3cml0ZV9sb2NrKTsKCXZvaWQJKCp2b3Bfcnd1bmxvY2spKHN0cnVjdCB2bm9kZSAqdnAs
IGludCB3cml0ZV9sb2NrKTsKCWludAkoKnZvcF9zZWVrKShzdHJ1Y3Qgdm5vZGUgKnZwLCBvZmZz
ZXRfdCBvb2ZmLCBvZmZzZXRfdCAqbm9mZnApOwoJaW50CSgqdm9wX2NtcCkoc3RydWN0IHZub2Rl
ICp2cDEsIHN0cnVjdCB2bm9kZSAqdnAyKTsKCWludAkoKnZvcF9mcmxvY2spKHN0cnVjdCB2bm9k
ZSAqdnAsIGludCBjbWQsIHN0cnVjdCBmbG9jazY0ICpiZnAsCgkJCQlpbnQgZmxhZywgb2Zmc2V0
X3Qgb2Zmc2V0LCBzdHJ1Y3QgY3JlZCAqY3IpOwoJaW50CSgqdm9wX3NwYWNlKShzdHJ1Y3Qgdm5v
ZGUgKnZwLCBpbnQgY21kLCBzdHJ1Y3QgZmxvY2s2NCAqYmZwLAoJCQkJaW50IGZsYWcsIG9mZnNl
dF90IG9mZnNldCwgc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9yZWFsdnApKHN0cnVjdCB2
bm9kZSAqdnAsIHN0cnVjdCB2bm9kZSAqKnZwcCk7CglpbnQJKCp2b3BfZ2V0cGFnZSkoc3RydWN0
IHZub2RlICp2cCwgb2Zmc2V0X3Qgb2ZmLCBzaXplX3QgbGVuLAoJCQkJdWludF90ICpwcm90cCwg
c3RydWN0IHBhZ2UgKipwbGFyciwgc2l6ZV90IHBsc3osCgkJCQlzdHJ1Y3Qgc2VnICpzZWcsIGNh
ZGRyX3QgYWRkciwgZW51bSBzZWdfcncgcncsCgkJCQlzdHJ1Y3QgY3JlZCAqY3IpOwoJaW50CSgq
dm9wX3B1dHBhZ2UpKHN0cnVjdCB2bm9kZSAqdnAsIG9mZnNldF90IG9mZiwgc2l6ZV90IGxlbiwK
CQkJCWludCBmbGFncywgc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9tYXApKHN0cnVjdCB2
bm9kZSAqdnAsIG9mZnNldF90IG9mZiwgc3RydWN0IGFzICphcywKCQkJICAgIGNhZGRyX3QgKmFk
ZHJwLCBzaXplX3QgbGVuLCB1Y2hhcl90IHByb3QsCgkJCSAgICB1Y2hhcl90IG1heHByb3QsIHVp
bnRfdCBmbGFncywgc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9hZGRtYXApKHN0cnVjdCB2
bm9kZSAqdnAsIG9mZnNldF90IG9mZiwgc3RydWN0IGFzICphcywKCQkJCWNhZGRyX3QgYWRkciwg
c2l6ZV90IGxlbiwgdWNoYXJfdCBwcm90LAoJCQkJdWNoYXJfdCBtYXhwcm90LCB1aW50X3QgZmxh
Z3MsIHN0cnVjdCBjcmVkICpjcik7CglpbnQJKCp2b3BfZGVsbWFwKShzdHJ1Y3Qgdm5vZGUgKnZw
LCBvZmZzZXRfdCBvZmYsIHN0cnVjdCBhcyAqYXMsCgkJCQljYWRkcl90IGFkZHIsIHNpemVfdCBs
ZW4sIHVpbnRfdCBwcm90LAoJCQkJdWludF90IG1heHByb3QsIHVpbnRfdCBmbGFncywgc3RydWN0
IGNyZWQgKmNyKTsKCWludAkoKnZvcF9wb2xsKShzdHJ1Y3Qgdm5vZGUgKnZwLCBzaG9ydCBldiwg
aW50IGFueSwgc2hvcnQgKnJldnAsCgkJCXN0cnVjdCBwb2xsaGVhZCAqKnBocHApOwoJaW50CSgq
dm9wX2R1bXApKHN0cnVjdCB2bm9kZSAqdnAsIGNhZGRyX3QgYWRkciwgaW50IGxiZG4sCgkJCQlp
bnQgZGJsa3MpOwoJaW50CSgqdm9wX3BhdGhjb25mKShzdHJ1Y3Qgdm5vZGUgKnZwLCBpbnQgY21k
LCB1bG9uZ190ICp2YWxwLAoJCQkJc3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9wYWdlaW8p
KHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBwYWdlICpwcCwKCQkJCXVfb2Zmc2V0X3QgaW9fb2Zm
LCBzaXplX3QgaW9fbGVuLCBpbnQgZmxhZ3MsCgkJCQlzdHJ1Y3QgY3JlZCAqY3IpOwoJaW50CSgq
dm9wX2R1bXBjdGwpKHN0cnVjdCB2bm9kZSAqdnAsIGludCBhY3Rpb24sIGludCAqYmxrcCk7Cgl2
b2lkCSgqdm9wX2Rpc3Bvc2UpKHN0cnVjdCB2bm9kZSAqdnAsIHN0cnVjdCBwYWdlICpwcCwgaW50
IGZsYWcsCgkJCQlpbnQgZG4sIHN0cnVjdCBjcmVkICpjcik7CglpbnQJKCp2b3Bfc2V0c2VjYXR0
cikoc3RydWN0IHZub2RlICp2cCwgdnNlY2F0dHJfdCAqdnNhcCwgaW50IGZsYWcsCgkJCQkgICAg
c3RydWN0IGNyZWQgKmNyKTsKCWludAkoKnZvcF9nZXRzZWNhdHRyKShzdHJ1Y3Qgdm5vZGUgKnZw
LCB2c2VjYXR0cl90ICp2c2FwLCBpbnQgZmxhZywKCQkJCSAgICBzdHJ1Y3QgY3JlZCAqY3IpOwoJ
aW50CSgqdm9wX3NocmxvY2spKHN0cnVjdCB2bm9kZSAqdnAsIGludCBjbWQsIHN0cnVjdCBzaHJs
b2NrICpzaHIsCgkJCQlpbnQgZmxhZyk7Cn0gdm5vZGVvcHNfdDsKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CiAKCgoKCgoKIAoKCiMgNTAxICIvdXNyL2luY2x1ZGUvc3lzL3Zub2RlLmgiIDMgNAoKCgoKCgoK
CgoKCgoKIyA1MjMgIi91c3IvaW5jbHVkZS9zeXMvdm5vZGUuaCIgMyA0CgogCgoKCgoKCgogCgoK
CgoKCgoKIAoKCgoKCgojIDU3NyAiL3Vzci9pbmNsdWRlL3N5cy92bm9kZS5oIiAzIDQKCgoKfQoK
CgojIDIyICIvdXNyL2luY2x1ZGUvc3lzL3N0cmVhbS5oIiAyIDMgNAoKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL3BvbGwuaCIgMSAzIDQKIAogCgogCiAKIAoKIAoKCgoKCgoKI3ByYWdtYSBpZGVudAki
QCgjKXBvbGwuaAkxLjI4CTk4LzExLzIzIFNNSSIJCgoKZXh0ZXJuICJDIiB7CgoKIAoKCgp0eXBl
ZGVmIHN0cnVjdCBwb2xsZmQgewoJaW50IGZkOwkJCQkgCglzaG9ydCBldmVudHM7CQkJIAoJc2hv
cnQgcmV2ZW50czsJCQkgCn0gcG9sbGZkX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcJbmZkc190
OwoKIAoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiMgNjggIi91c3IvaW5jbHVkZS9zeXMvcG9sbC5o
IiAzIDQKCgojIDEyMCAiL3Vzci9pbmNsdWRlL3N5cy9wb2xsLmgiIDMgNAoKCgoKaW50IHBvbGwo
c3RydWN0IHBvbGxmZCAqLCBuZmRzX3QsIGludCk7CgoKCgoKCn0KCgoKIyAyMyAiL3Vzci9pbmNs
dWRlL3N5cy9zdHJlYW0uaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdHJtZGVwLmgi
IDEgMyA0CiAKCgoKCiAKIAoKIAogCiAKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIylzdHJtZGVwLmgJ
MS4xMAk5OC8wMS8wNiBTTUkiCQoKCmV4dGVybiAiQyIgewoKCiAKCgoKCiAKCgoKCgogCgoKCgoK
IAoKCgoKCgp9CgoKCiMgMjQgIi91c3IvaW5jbHVkZS9zeXMvc3RyZWFtLmgiIDIgMyA0CgoKCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy9tb2RlbC5oIiAxIDMgNAogCgoKCgoKCgojcHJhZ21hIGlkZW50
CSJAKCMpbW9kZWwuaAkxLjIwCTk3LzA5LzIyIFNNSSIKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoj
IDQ1ICIvdXNyL2luY2x1ZGUvc3lzL21vZGVsLmgiIDMgNAoKCgogCgoKCgoKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgbW9kZWxfdDsKCgoKIyAxOTkgIi91c3IvaW5jbHVkZS9zeXMvbW9kZWwuaCIgMyA0
CgoKCn0KCgoKIyAyNyAiL3Vzci9pbmNsdWRlL3N5cy9zdHJlYW0uaCIgMiAzIDQKCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy9zdHJmdC5oIiAxIDMgNAogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMp
c3RyZnQuaAkxLjIJMDAvMTAvMjMgU01JIgoKIAoKCgoKCgoKCmV4dGVybiAiQyIgewoKCiAKCgoK
CgoKCnR5cGVkZWYgaHJ0aW1lX3QgdGRlbHRhX3QgWzEyIF1bMl07Cgp0eXBlZGVmIGhydGltZV90
IHRzX3Q7CgpleHRlcm4gdHNfdCBfdHN0YW1wX2M7CSAKCQkJIAoKCgoKCgoKCgoKCgoKCgoKCgoj
IDg4ICIvdXNyL2luY2x1ZGUvc3lzL3N0cmZ0LmgiIDMgNAoKCiMgMTMzICIvdXNyL2luY2x1ZGUv
c3lzL3N0cmZ0LmgiIDMgNAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKc3RydWN0IGZ0ZXZudCB7
Cgl0c190IHRzOwkgCgljaGFyICptaWQ7CSAKCXVzaG9ydF90IGV2bnQ7CSAKCXVzaG9ydF90IGRh
dGE7CSAKfTsKCiAKCgpzdHJ1Y3QgZnRibGsgewoJc3RydWN0IGZ0YmxrICpueHQ7CSAKCWludCBp
eDsJCQkgCglzdHJ1Y3QgZnRldm50IGV2WzB4OSBdOwp9OwoKIAoKCgoKCgoKCgpzdHJ1Y3QgZnRo
ZHIgewoJc3RydWN0IGZ0YmxrICp0YWlsOwoJdW5zaWduZWQgaGFzaDsJCSAKCXZvaWQgKnRocmVh
ZDsKCWludCBjcHVfc2VxaWQ7CglzdHJ1Y3QgZnRibGsgZmlyc3Q7Cn07CgogCgoKCgpzdHJ1Y3Qg
ZnRmbHdlIHsKCWNoYXIgKm1pZDsKCXVzaG9ydF90IGV2bnQ7Cgl1c2hvcnRfdCBkYXRhOwoJdGRl
bHRhX3QgdGQ7Cn07CgpzdHJ1Y3QgZnRmbHcgewoJc3RydWN0IGZ0Zmx3ICpueHQ7CglpbnQgaGFz
aDsKCWludCBjb3VudDsKCXN0cnVjdCBmdGZsd2UgZXZbMV07CSAKfTsKCnR5cGVkZWYgc3RydWN0
IGZ0ZXZudCBmdGV2bnRfdDsKdHlwZWRlZiBzdHJ1Y3QgZnRibGsgZnRibGtfdDsKdHlwZWRlZiBz
dHJ1Y3QgZnRoZHIgZnRoZHJfdDsKdHlwZWRlZiBzdHJ1Y3QgZnRmbHdlIGZ0Zmx3ZV90Owp0eXBl
ZGVmIHN0cnVjdCBmdGZsdyBmdGZsd190Owp0eXBlZGVmIHN0cnVjdCBmdGV2ZW50cyBmdGV2ZW50
c190OwoKIyAzNTggIi91c3IvaW5jbHVkZS9zeXMvc3RyZnQuaCIgMyA0CgoKCn0KCgoKIyAyOCAi
L3Vzci9pbmNsdWRlL3N5cy9zdHJlYW0uaCIgMiAzIDQKCgoKZXh0ZXJuICJDIiB7CgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgp0eXBlZGVmIHN0cnVjdAlxdWV1ZSB7CglzdHJ1
Y3QJcWluaXQJKnFfcWluZm87CSAKCXN0cnVjdAltc2diCSpxX2ZpcnN0OwkgCglzdHJ1Y3QJbXNn
YgkqcV9sYXN0OwkgCglzdHJ1Y3QJcXVldWUJKnFfbmV4dDsJIAoJc3RydWN0CXF1ZXVlCSpxX2xp
bms7CSAKCXZvaWQJCSpxX3B0cjsJCSAKCXNpemVfdAkJcV9jb3VudDsJIAoJdWludF90CQlxX2Zs
YWc7CQkgCglzc2l6ZV90CQlxX21pbnBzejsJIAoJCQkJCSAKCXNzaXplX3QJCXFfbWF4cHN6Owkg
CgkJCQkJIAoJc2l6ZV90CQlxX2hpd2F0OwkgCglzaXplX3QJCXFfbG93YXQ7CSAKCXN0cnVjdCBx
YmFuZAkqcV9iYW5kcDsJIAoJa211dGV4X3QJcV9sb2NrOwkJIAoJc3RydWN0IHN0ZGF0YSAJKnFf
c3RyZWFtOwkgCglzdHJ1Y3QJc3luY3EJKnFfc3luY3E7CSAKCXVuc2lnbmVkIGNoYXIJcV9uYmFu
ZDsJIAoJa2NvbmR2YXJfdAlxX3dhaXQ7CQkgCglrY29uZHZhcl90CXFfc3luYzsJCSAKCXN0cnVj
dAlxdWV1ZQkqcV9uZnNydjsJIAoJc3RydWN0CXF1ZXVlCSpxX25ic3J2OwkgCgl1c2hvcnRfdAlx
X2RyYWluaW5nOwkgCglzaG9ydAkJcV9zdHJ1aW90OwkgCgl1aW50X3QJCXFfc3luY3Ftc2dzOwkg
CglzaXplX3QJCXFfbWJsa2NudDsJIAoJIAoKCgoKCgoKCXN0cnVjdCBtc2diCSpxX3NxaGVhZDsJ
IAoJc3RydWN0IG1zZ2IJKnFfc3F0YWlsOwkgCgl1aW50X3QJCXFfc3FmbGFnczsJIAoJc2l6ZV90
CQlxX3JlZmNudDsJIAoJCQkJCSAKCSAKCgoKCXN0cnVjdCBxdWV1ZQkqcV9zcW5leHQ7CSAKCXN0
cnVjdCBxdWV1ZQkqcV9zcXByZXY7CSAKCXByaV90CQlxX3Nwcmk7CQkgCn0gcXVldWVfdDsKCiAK
CgoKCgoKCgoKCQkJCQkgCgoKCQkJCQkgCgoKCgoKCgkJCQkJIAoKCgoKCgoKCgoKCiAKCgoJCQkJ
CSAKCQkJCQkgCgkJCQkJIAoKIAoKCgp0eXBlZGVmIHN0cnVjdCBxYmFuZCB7CglzdHJ1Y3QgcWJh
bmQJKnFiX25leHQ7CSAKCXNpemVfdAkJcWJfY291bnQ7CSAKCXN0cnVjdCBtc2diCSpxYl9maXJz
dDsJIAoJc3RydWN0IG1zZ2IJKnFiX2xhc3Q7CSAKCXNpemVfdAkJcWJfaGl3YXQ7CSAKCXNpemVf
dAkJcWJfbG93YXQ7CSAKCXVpbnRfdAkJcWJfZmxhZzsJIAoJc2l6ZV90CQlxYl9tYmxrY250Owkg
Cn0gcWJhbmRfdDsKCiAKCgoKCgoKIAoKCgoKIAoKCnR5cGVkZWYgZW51bSBxZmllbGRzIHsKCVFI
SVdBVAk9IDAsCQkgCglRTE9XQVQJPSAxLAkJIAoJUU1BWFBTWgk9IDIsCQkgCglRTUlOUFNaCT0g
MywJCSAKCVFDT1VOVAk9IDQsCQkgCglRRklSU1QJPSA1LAkJIAoJUUxBU1QJPSA2LAkJIAoJUUZM
QUcJPSA3LAkJIAoJUVNUUlVJT1QgPSA4LAkJIAoJUUJBRAk9IDkKfSBxZmllbGRzX3Q7CgogCgoK
c3RydWN0IG1vZHVsZV9pbmZvIHsKCXVzaG9ydF90IG1pX2lkbnVtOwkJIAoJY2hhciAJKm1pX2lk
bmFtZTsJCSAKCXNzaXplX3QJbWlfbWlucHN6OwkJIAoJc3NpemVfdAltaV9tYXhwc3o7CQkgCglz
aXplX3QJbWlfaGl3YXQ7CQkgCglzaXplX3QgCW1pX2xvd2F0OwkJIAp9OwoKIAoKCnN0cnVjdAlx
aW5pdCB7CglpbnQJKCpxaV9wdXRwKSgpOwkJIAoJaW50CSgqcWlfc3J2cCkoKTsJCSAKCWludAko
KnFpX3FvcGVuKSgpOwkJIAoJaW50CSgqcWlfcWNsb3NlKSgpOwkJIAoJaW50CSgqcWlfcWFkbWlu
KSgpOwkJIAoJc3RydWN0IG1vZHVsZV9pbmZvICpxaV9taW5mbzsJIAoJc3RydWN0IG1vZHVsZV9z
dGF0ICpxaV9tc3RhdDsJIAoJaW50CSgqcWlfcndwKSgpOwkJIAoJaW50CSgqcWlfaW5mb3ApKCk7
CQkgCglpbnQJcWlfc3RydWlvdDsJCSAKfTsKCiAKCgoKCgoKCiAKCgoKc3RydWN0IHN0cmVhbXRh
YiB7CglzdHJ1Y3QgcWluaXQgKnN0X3JkaW5pdDsKCXN0cnVjdCBxaW5pdCAqc3Rfd3Jpbml0OwoJ
c3RydWN0IHFpbml0ICpzdF9tdXhyaW5pdDsKCXN0cnVjdCBxaW5pdCAqc3RfbXV4d2luaXQ7Cn07
CgogCgoKCnN0cnVjdCBsaW5rYmxrIHsKCXF1ZXVlX3QgKmxfcXRvcDsJIAoJCQkJIAoJcXVldWVf
dCAqbF9xYm90OwkgCglpbnQJbF9pbmRleDsJIAp9OwoKIAoKCnR5cGVkZWYgc3RydWN0IGZyZWVf
cnRuIHsKCXZvaWQJKCpmcmVlX2Z1bmMpKCk7CgljYWRkcl90CWZyZWVfYXJnOwp9IGZydG5fdDsK
CiAKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBkYXRhYiB7CglmcnRuX3QJCSpkYl9mcnRucDsKCXVu
c2lnbmVkIGNoYXIJKmRiX2Jhc2U7Cgl1bnNpZ25lZCBjaGFyCSpkYl9saW07Cgl1bnNpZ25lZCBj
aGFyCWRiX3JlZjsKCXVuc2lnbmVkIGNoYXIJZGJfdHlwZTsKCXVuc2lnbmVkIGNoYXIJZGJfZmxh
Z3M7Cgl1bnNpZ25lZCBjaGFyCWRiX3N0cnVpb2ZsYWc7Cgl2b2lkCQkqZGJfY2FjaGU7CSAKCXN0
cnVjdCBtc2diCSpkYl9tYmxrOwoJdm9pZAkJKCpkYl9mcmVlKShzdHJ1Y3QgbXNnYiAqLCBzdHJ1
Y3QgZGF0YWIgKik7Cgl2b2lkCQkoKmRiX2xhc3RmcmVlKShzdHJ1Y3QgbXNnYiAqLCBzdHJ1Y3Qg
ZGF0YWIgKik7CgoJdm9pZAkJKmRiX3BhZDsJIAoKCXVuc2lnbmVkIGNoYXIJKmRiX3N0cnVpb2Jh
c2U7Cgl1bnNpZ25lZCBjaGFyCSpkYl9zdHJ1aW9saW07Cgl1bnNpZ25lZCBjaGFyCSpkYl9zdHJ1
aW9wdHI7Cgl1bmlvbiB7CgkJZG91YmxlIGVuZm9yY2VfYWxpZ25tZW50OwoJCXVuc2lnbmVkIGNo
YXIgZGF0YVs4XTsKCQl1bnNpZ25lZCB1MTY6MTY7CSAKCQkgCgoKCX0gZGJfc3RydWlvdW47Cglm
dGhkcl90CQkqZGJfZnRoZHI7CglmdGZsd190CQkqKipkYl9mdGZsdzsKCXVpZF90CQlkYl91aWQ7
CQkgCgkgCgl1aWRfdAkJZGJfbGlkOwp9IGRibGtfdDsKCiAKCgp0eXBlZGVmIHN0cnVjdAltc2di
IHsKCXN0cnVjdAltc2diCSpiX25leHQ7CglzdHJ1Y3QgIG1zZ2IJKmJfcHJldjsKCXN0cnVjdAlt
c2diCSpiX2NvbnQ7Cgl1bnNpZ25lZCBjaGFyCSpiX3JwdHI7Cgl1bnNpZ25lZCBjaGFyCSpiX3dw
dHI7CglzdHJ1Y3QgZGF0YWIgCSpiX2RhdGFwOwoJdW5zaWduZWQgY2hhcgliX2JhbmQ7Cgl1bnNp
Z25lZCBjaGFyCWJfZnRmbGFnOwkgCgl1bnNpZ25lZCBzaG9ydAliX2ZsYWc7CglxdWV1ZV90CQkq
Yl9xdWV1ZTsJIAp9IG1ibGtfdDsKCiAKCgoKdHlwZWRlZglzdHJ1Y3QJYmNhY2hlIHsKCWttdXRl
eF90CQltdXRleDsKCXN0cnVjdCBrbWVtX2NhY2hlCSpidWZmZXJfY2FjaGU7CglzdHJ1Y3Qga21l
bV9jYWNoZQkqZGJsa19jYWNoZTsKCWludAkJCWFsbG9jOwoJaW50CQkJZGVzdHJveTsKCXNpemVf
dAkJCXNpemU7Cgl1aW50X3QJCQlhbGlnbjsKfSBiY2FjaGVfdDsKCiAKCgoKCiAKCgoKCgoKCgog
CgoKCgoJCQkJCSAKCgoKCgogCgoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCiAKCgojIDQyNiAiL3Vzci9pbmNsdWRlL3N5cy9zdHJlYW0uaCIgMyA0
CgpzdHJ1Y3QgaW9jYmxrIHsKCWludCAJaW9jX2NtZDsJCSAKCWNyZWRfdAkqaW9jX2NyOwkJIAoJ
dWludF90CWlvY19pZDsJCQkgCglzaXplX3QJaW9jX2NvdW50OwkJIAoJaW50CWlvY19lcnJvcjsJ
CSAKCWludAlpb2NfcnZhbDsJCSAKCWludAlpb2NfZmlsbDE7Cgl1aW50X3QJaW9jX2ZsYWc7CQkg
CglpbnQJaW9jX2ZpbGxlclsyXTsJCSAKfTsKCgp0eXBlZGVmCXN0cnVjdCBpb2NibGsJKklPQ1A7
CgoKCgogCgoKCgoKCgogCgoKCgoKIAoKCiMgNDcyICIvdXNyL2luY2x1ZGUvc3lzL3N0cmVhbS5o
IiAzIDQKCnN0cnVjdCBjb3B5cmVxIHsKCWludAljcV9jbWQ7CQkJIAoJY3JlZF90CSpjcV9jcjsJ
CQkgCgl1aW50X3QJY3FfaWQ7CQkJIAoJY2FkZHJfdAljcV9hZGRyOwkJIAoJc2l6ZV90CWNxX3Np
emU7CQkgCgl1aW50X3QJY3FfZmxhZzsJCSAKCW1ibGtfdAkqY3FfcHJpdmF0ZTsJCSAKCWludAlj
cV9maWxsZXJbNF07CQkgCn07CgoKCgoKIAoKCgkJCQkJIAoKCQkJCQkgCgkJCQkJIAoKIAoKCiMg
NTA5ICIvdXNyL2luY2x1ZGUvc3lzL3N0cmVhbS5oIiAzIDQKCnN0cnVjdCBjb3B5cmVzcCB7Cglp
bnQJY3BfY21kOwkJCSAKCWNyZWRfdAkqY3BfY3I7CQkJIAoJdWludF90CWNwX2lkOwkJCSAKCWNh
ZGRyX3QJY3BfcnZhbDsJCSAKCQkJCQkgCglzaXplX3QJY3BfcGFkMTsKCXVpbnRfdAljcF9wYWQy
OwoJbWJsa190ICpjcF9wcml2YXRlOwkJIAoJdWludF90CWNwX2ZsYWc7CQkgCglpbnQJY3BfZmls
bGVyWzNdOwp9OwoKCgoKCiAKCgoKCnVuaW9uIGlvY3R5cGVzIHsKCXN0cnVjdCBpb2NibGsJaW9j
YmxrOwoJc3RydWN0IGNvcHlyZXEJY29weXJlcTsKCXN0cnVjdCBjb3B5cmVzcAljb3B5cmVzcDsK
fTsKCiAKCgoKCnN0cnVjdCBzdHJvcHRpb25zIHsKCXVpbnRfdAlzb19mbGFnczsJCSAKCXNob3J0
CXNvX3JlYWRvcHQ7CQkgCgl1c2hvcnRfdCBzb193cm9mZjsJCSAKCXNzaXplX3QJc29fbWlucHN6
OwkJIAoJc3NpemVfdAlzb19tYXhwc3o7CQkgCglzaXplX3QJc29faGl3YXQ7CQkgCglzaXplX3QJ
c29fbG93YXQ7CQkgCgl1bnNpZ25lZCBjaGFyIHNvX2JhbmQ7CQkgCgl1c2hvcnRfdCBzb19lcnJv
cHQ7CQkgCglzc2l6ZV90CXNvX21heGJsazsJCSAKCXVzaG9ydF90IHNvX2NvcHlvcHQ7CQkgCn07
CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNjE2ICIvdXNyL2luY2x1ZGUvc3lzL3N0cmVh
bS5oIiAzIDQKCgogCgoKCiAKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCQkJCQkgCgogCgoKCgog
CgoKCgoKIAoKCgoKIAoKCgoKCiAKCgoKCiAKCgoKCgogCgoKCiAKCgoKCiAKCgoKCgoKIAoKCgoK
CgoKCgogCgoKCgogCgoKCgogCgoKCgogCgoKCiMgODAzICIvdXNyL2luY2x1ZGUvc3lzL3N0cmVh
bS5oIiAzIDQKCgogCgoKZXh0ZXJuIGludCBuc3RycHVzaDsJCQkgCgoKfQoKCgojIDQxICIvdXNy
L2luY2x1ZGUvbmV0aW5ldC9pbi5oIiAyIDMgNAoKCiAKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5
cy9ieXRlb3JkZXIuaCIgMSAzIDQKIAogCgogCiAKIAoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKWJ5
dGVvcmRlci5oCTEuMTQJOTgvMDQvMTkgU01JIgkKCgoKCmV4dGVybiAiQyIgewoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKIyA3NCAiL3Vzci9pbmNsdWRlL3N5cy9ieXRlb3Jk
ZXIuaCIgMyA0CgoKCn0KCgoKIyA0OCAiL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCIgMiAzIDQK
CgoKCgp0eXBlZGVmCXVpbnQxNl90CWluX3BvcnRfdDsKCgogCgoKCgoKCgoKCgoKCnR5cGVkZWYJ
dWludDMyX3QJaW5fYWRkcl90OwoKCgoKdHlwZWRlZiB1aW50MzJfdCBpcGFkZHJfdDsKCgoKCnN0
cnVjdCBpbjZfYWRkciB7Cgl1bmlvbiB7CgkJIAoKCgoKCgoKCgoKCgoKCgkJdWludDhfdAkJX1M2
X3U4WzE2XTsJIAoJCXVpbnQzMl90CV9TNl91MzJbNF07CSAKCgkJdWludDMyX3QJX19TNl9hbGln
bjsJIAoJfSBfUzZfdW47Cn07CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBpbjZfYWRkciBpbjZfYWRk
cl90OwoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgogCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCiAKCgoK
CgoKCgoKCgoKCgpzdHJ1Y3QgaW5fYWRkciB7Cgl1bmlvbiB7CgkJc3RydWN0IHsgdWludDhfdCBz
X2IxLCBzX2IyLCBzX2IzLCBzX2I0OyB9IFNfdW5fYiA7CgkJc3RydWN0IHsgdWludDE2X3Qgc193
MSwgc193MjsgfSBTX3VuX3cgOwoKCQl1aW50MzJfdCBTX2FkZHIgOwoKCgoJfSBTX3VuIDsKCgoK
CgoKfTsKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKIAoKCnN0cnVjdCBzb2NrYWRkcl9pbiB7CglzYV9mYW1pbHlfdAlzaW5fZmFtaWx5OwoJaW5f
cG9ydF90CXNpbl9wb3J0OwoJc3RydWN0CWluX2FkZHIgc2luX2FkZHI7CgoJY2hhcgkJc2luX3pl
cm9bOF07CgoKCn07CgoKIAoKCnN0cnVjdCBzb2NrYWRkcl9pbjYgewoJc2FfZmFtaWx5X3QJc2lu
Nl9mYW1pbHk7Cglpbl9wb3J0X3QJc2luNl9wb3J0OwoJdWludDMyX3QJc2luNl9mbG93aW5mbzsK
CXN0cnVjdCBpbjZfYWRkcglzaW42X2FkZHI7Cgl1aW50MzJfdAlzaW42X3Njb3BlX2lkOyAgIAoJ
dWludDMyX3QJX19zaW42X3NyY19pZDsJIAp9OwoKIAoKCgoKCgogCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKIyAzNTcgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMgNAoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIyA2MDcgIi91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgiIDMgNAoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAK
CgoKCgp0eXBlZGVmIHN0cnVjdCBpcHNlY19yZXEgewoJdWludF90IAkJaXBzcl9haF9yZXE7CQkg
Cgl1aW50X3QgCQlpcHNyX2VzcF9yZXE7CQkgCgl1aW50X3QJCWlwc3Jfc2VsZl9lbmNhcF9yZXE7
CSAKCXVpbnQ4X3QJCWlwc3JfYXV0aF9hbGc7CQkgCgl1aW50OF90CQlpcHNyX2VzcF9hbGc7CQkg
Cgl1aW50OF90CQlpcHNyX2VzcF9hdXRoX2FsZzsJIAp9IGlwc2VjX3JlcV90OwoKCiAKCgoKCgog
CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKCgoKCgogCgoKc3RydWN0IGlwX21y
ZXEgewoJc3RydWN0IGluX2FkZHIJaW1yX211bHRpYWRkcjsJIAoJc3RydWN0IGluX2FkZHIJaW1y
X2ludGVyZmFjZTsJIAp9OwoKIAoKCgpzdHJ1Y3QgaXB2Nl9tcmVxIHsKCXN0cnVjdCBpbjZfYWRk
cglpcHY2bXJfbXVsdGlhZGRyOwkgCgl1bnNpZ25lZCBpbnQJaXB2Nm1yX2ludGVyZmFjZTsJIAp9
OwoKIAoKCnN0cnVjdCBpbjZfcGt0aW5mbyB7CglzdHJ1Y3QgaW42X2FkZHIJCWlwaTZfYWRkcjsJ
IAoJdW5zaWduZWQgaW50CQlpcGk2X2lmaW5kZXg7CSAKfTsKCiAKCgoKCgoKIAoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgewoJc3RydWN0IGluX2FkZHIJaW5fcHJlZml4X2FkZHI7Cgl1bnNpZ25lZCBpbnQJ
aW5fcHJlZml4X2xlbjsKfSBpbl9wcmVmaXhfdDsKCgoKIAoKCgoJCQkJCSAKCQkJCQkgCgoJCQkJ
CSAKCQkJCQkgCgoJCQkJCSAKCQkJCQkgCgoJCQkJCSAKCQkJCQkgCgoJCQkJCSAKCgkJCQkJIAog
CgoKCgoKCQkJCQkgCgoJCQkJCSAKCgoJCQkJCSAKCgoKCgkJCQkJIAoKCgkJCQkJIAoKCgoKCgoK
CgogCgoKCgoJCQkJCSAKCgkJCQkJIAoKIAoKCgoJCQkJCSAKCgkJCQkJIAoKCgoKIAoKCgoKZXh0
ZXJuIGNvbnN0IHN0cnVjdCBpbjZfYWRkciBpbjZhZGRyX2FueTsKZXh0ZXJuIGNvbnN0IHN0cnVj
dCBpbjZfYWRkciBpbjZhZGRyX2xvb3BiYWNrOwoKCgoKfQoKCgojIDIwMCAiL3Vzci9pbmNsdWRl
L3N5cy9zb2NrZXQuaCIgMiAzIDQKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy91bi5oIiAxIDMgNAog
CiAKCiAKIAogCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMp
dW4uaAkxLjkJOTYvMDcvMTIgU01JIgkKCgpleHRlcm4gIkMiIHsKCgoKCgoKCiAKCgpzdHJ1Y3QJ
c29ja2FkZHJfdW4gewoJc2FfZmFtaWx5X3QJc3VuX2ZhbWlseTsJCSAKCWNoYXIJCXN1bl9wYXRo
WzEwOF07CQkgCn07CgoKCgoKCn0KCgoKIyAyMDEgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0Lmgi
IDIgMyA0CgojIDEgIi91c3IvaW5jbHVkZS9uZXQvaWZfZGwuaCIgMSAzIDQKIAoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKWlmX2RsLmgJ
MS43CTk4LzAxLzA2IFNNSSIKIAoKCmV4dGVybiAiQyIgewoKCiAKCgoKCgoKCgoKCgoKCgoKCgog
CgoKc3RydWN0IHNvY2thZGRyX2RsIHsKCXVzaG9ydF90IHNkbF9mYW1pbHk7CSAKCXVzaG9ydF90
IHNkbF9pbmRleDsJIAoJdWNoYXJfdAlzZGxfdHlwZTsJIAoJdWNoYXJfdAlzZGxfbmxlbjsJIAoJ
dWNoYXJfdAlzZGxfYWxlbjsJIAoJdWNoYXJfdAlzZGxfc2xlbjsJIAoJY2hhcglzZGxfZGF0YVsy
NDRdOwkgCn07CgoKCgp9CgoKCiMgMjAyICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAyIDMg
NAoKCiAKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCnR5cGVkZWYJZG91YmxlCQlzb2NrYWRkcl9t
YXhhbGlnbl90OwoKCgogCgoKCgoKCnN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHsKCXNhX2ZhbWls
eV90CXNzX2ZhbWlseTsJIAoJIAoJY2hhcgkJX3NzX3BhZDFbKChzaXplb2YgKHNvY2thZGRyX21h
eGFsaWduX3QpKSAgLSBzaXplb2YgKHNhX2ZhbWlseV90KSkgXTsKCXNvY2thZGRyX21heGFsaWdu
X3QgX3NzX2FsaWduOwoJY2hhcgkJX3NzX3BhZDJbKDI1NiAgLSAoc2l6ZW9mIChzYV9mYW1pbHlf
dCkrICgoc2l6ZW9mIChzb2NrYWRkcl9tYXhhbGlnbl90KSkgIC0gc2l6ZW9mIChzYV9mYW1pbHlf
dCkpICArIChzaXplb2YgKHNvY2thZGRyX21heGFsaWduX3QpKSApKSBdOwp9OwoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgpzdHJ1Y3QgbXNnaGRyIHsKCXZv
aWQJCSptc2dfbmFtZTsJCSAKCXNvY2tsZW5fdAltc2dfbmFtZWxlbjsJCSAKCXN0cnVjdCBpb3Zl
YwkqbXNnX2lvdjsJCSAKCWludAkJbXNnX2lvdmxlbjsJCSAKCgoKCgoKCWNhZGRyX3QJCW1zZ19h
Y2NyaWdodHM7CSAKCWludAkJbXNnX2FjY3JpZ2h0c2xlbjsKCn07CgojIDM0OSAiL3Vzci9pbmNs
dWRlL3N5cy9zb2NrZXQuaCIgMyA0CgoKCgoKIAoKCgoKIAoKCgoKCiAKCgoKCnN0cnVjdCBjbXNn
aGRyIHsKCXNvY2tsZW5fdAljbXNnX2xlbjsJIAoJaW50CQljbXNnX2xldmVsOwkgCglpbnQJCWNt
c2dfdHlwZTsJIAp9OwoKIyAzODQgIi91c3IvaW5jbHVkZS9zeXMvc29ja2V0LmgiIDMgNAoKCiMg
NDA3ICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzIDQKCgojIDQzMCAiL3Vzci9pbmNsdWRl
L3N5cy9zb2NrZXQuaCIgMyA0CgoKCgoKCgoKCgoKCmV4dGVybiBpbnQgYWNjZXB0KGludCwgc3Ry
dWN0IHNvY2thZGRyICosIFBzb2NrbGVuX3QpOwpleHRlcm4gaW50IGJpbmQoaW50LCBjb25zdCBz
dHJ1Y3Qgc29ja2FkZHIgKiwgc29ja2xlbl90KTsKZXh0ZXJuIGludCBjb25uZWN0KGludCwgY29u
c3Qgc3RydWN0IHNvY2thZGRyICosIHNvY2tsZW5fdCk7CmV4dGVybiBpbnQgZ2V0cGVlcm5hbWUo
aW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwgUHNvY2tsZW5fdCk7CmV4dGVybiBpbnQgZ2V0c29ja25h
bWUoaW50LCBzdHJ1Y3Qgc29ja2FkZHIgKiwgUHNvY2tsZW5fdCk7CmV4dGVybiBpbnQgZ2V0c29j
a29wdChpbnQsIGludCwgaW50LCB2b2lkICosIFBzb2NrbGVuX3QpOwpleHRlcm4gaW50IGxpc3Rl
bihpbnQsIGludCk7CSAKZXh0ZXJuIGludCBzb2NrZXRwYWlyKGludCwgaW50LCBpbnQsIGludCAq
KTsKZXh0ZXJuIHNzaXplX3QgcmVjdihpbnQsIHZvaWQgKiwgc2l6ZV90LCBpbnQpOwpleHRlcm4g
c3NpemVfdCByZWN2ZnJvbShpbnQsIHZvaWQgKiwgc2l6ZV90LCBpbnQsIHN0cnVjdCBzb2NrYWRk
ciAqLAoJUHNvY2tsZW5fdCk7CmV4dGVybiBzc2l6ZV90IHJlY3Ztc2coaW50LCBzdHJ1Y3QgbXNn
aGRyICosIGludCk7CmV4dGVybiBzc2l6ZV90IHNlbmQoaW50LCBjb25zdCB2b2lkICosIHNpemVf
dCwgaW50KTsKZXh0ZXJuIHNzaXplX3Qgc2VuZG1zZyhpbnQsIGNvbnN0IHN0cnVjdCBtc2doZHIg
KiwgaW50KTsKZXh0ZXJuIHNzaXplX3Qgc2VuZHRvKGludCwgY29uc3Qgdm9pZCAqLCBzaXplX3Qs
IGludCwgY29uc3Qgc3RydWN0IHNvY2thZGRyICosCglzb2NrbGVuX3QpOwpleHRlcm4gaW50IHNl
dHNvY2tvcHQoaW50LCBpbnQsIGludCwgY29uc3Qgdm9pZCAqLCBzb2NrbGVuX3QpOwpleHRlcm4g
aW50IHNodXRkb3duKGludCwgaW50KTsKZXh0ZXJuIGludCBzb2NrZXQoaW50LCBpbnQsIGludCk7
CiMgNDc5ICIvdXNyL2luY2x1ZGUvc3lzL3NvY2tldC5oIiAzIDQKCgoKCn0KCgoKIyA3MiAiLi4v
U3JjVW5peC9FbUNvbW1vblVuaXguaCIgMgoKCgoKCgp0eXBlZGVmIGludAkJCQlTT0NLRVQ7CgoK
CgoKCgoKCgoKCiMgMTEyICIuLi9TcmNTaGFyZWQvRW1Db21tb24uaCIgMgoKCgoKCgoKdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKCiAKCiMgMSAiLi4vU3JjU2hhcmVkL0VtQXNzZXJ0LmgiIDEKIAogCgoK
CgoKCgoKCgoKCgoKCmV4dGVybiAiQyIKCnZvaWQgTXlBc3NlcnRGYWlsZWQgKAoJY29uc3QgY2hh
ciogYXNzZXJ0aW9uLAoJY29uc3QgY2hhciogZmlsZSwKCXVuc2lnbmVkIGludCBsaW5lKTsKCiAK
IAogCiAKCgoKCgoKCgoJCgoKCgoKCgoKIyAxMjMgIi4uL1NyY1NoYXJlZC9FbUNvbW1vbi5oIiAy
CgoKCiAKCmV4dGVybiBjaGFyIGNoZWNrMQlbc2l6ZW9mKGludDgpID09IDEgPyAxIDogMF07CmV4
dGVybiBjaGFyIGNoZWNrMglbc2l6ZW9mKGludDE2KSA9PSAyID8gMSA6IDBdOwpleHRlcm4gY2hh
ciBjaGVjazMJW3NpemVvZihpbnQzMikgPT0gNCA/IDEgOiAwXTsKZXh0ZXJuIGNoYXIgY2hlY2s0
CVtzaXplb2YoaW50NjQpID09IDggPyAxIDogMF07CgpleHRlcm4gY2hhciBjaGVjazUJW3NpemVv
Zih1aW50OCkgPT0gMSA/IDEgOiAwXTsKZXh0ZXJuIGNoYXIgY2hlY2s2CVtzaXplb2YodWludDE2
KSA9PSAyID8gMSA6IDBdOwpleHRlcm4gY2hhciBjaGVjazcJW3NpemVvZih1aW50MzIpID09IDQg
PyAxIDogMF07CmV4dGVybiBjaGFyIGNoZWNrOAlbc2l6ZW9mKHVpbnQ2NCkgPT0gOCA/IDEgOiAw
XTsKCmV4dGVybiBjaGFyIGNoZWNrOQlbc2l6ZW9mKGVtdXB0cikgPT0gNCA/IDEgOiAwXTsKCgoK
IyAxNCAiLi8uLi9TcmNTaGFyZWQvTWV0YU1lbW9yeS5jcHAiIDIKCiMgMSAiLi4vU3JjU2hhcmVk
L01ldGFNZW1vcnkuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1NyY1NoYXJlZC9IYXJk
d2FyZS9FbU1lbW9yeS5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCiAKIAogCiAKCgoKCgojIDEgIi4u
L1NyY1NoYXJlZC9VQUUvc3lzY29uZmlnLmgiIDEKCgoKCQkJCQkJIAoKCgoKCgkKCgoKCgoKIyAx
ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMyA0CiAKIAoKIAogCiAKCiAKCgoKCgoKCiNwcmFn
bWEgaWRlbnQJIkAoIylzdHJpbmcuaAkxLjI0CTk5LzA4LzEwIFNNSSIJCgojIDEgIi91c3IvaW5j
bHVkZS9pc28vc3RyaW5nX2lzby5oIiAxIDMgNAogCiAKCiAKIAogCgogCgoKCgogCgoKCgoKCgoK
CgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXN0cmluZ19pc28uaAkxLjIJOTkvMTEvMDkgU01JIgog
CgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiBpbnQgbWVt
Y21wKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCAqbWVt
Y3B5KHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCAqbWVtbW92ZSh2
b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKm1lbXNldCh2b2lkICos
IGludCwgc2l6ZV90KTsKZXh0ZXJuIGNoYXIgKnN0cmNhdChjaGFyICosIGNvbnN0IGNoYXIgKik7
CmV4dGVybiBpbnQgc3RyY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNo
YXIgKnN0cmNweShjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgc3RyY29sbChjb25z
dCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBzaXplX3Qgc3RyY3Nwbihjb25zdCBjaGFy
ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpzdHJlcnJvcihpbnQpOwpleHRlcm4gc2l6
ZV90IHN0cmxlbihjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqc3RybmNhdChjaGFyICosIGNv
bnN0IGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGludCBzdHJuY21wKGNvbnN0IGNoYXIgKiwgY29u
c3QgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gY2hhciAqc3RybmNweShjaGFyICosIGNvbnN0IGNo
YXIgKiwgc2l6ZV90KTsKZXh0ZXJuIHNpemVfdCBzdHJzcG4oY29uc3QgY2hhciAqLCBjb25zdCBj
aGFyICopOwpleHRlcm4gY2hhciAqc3RydG9rKGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJu
IHNpemVfdCBzdHJ4ZnJtKGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwojIDExMSAiL3Vz
ci9pbmNsdWRlL2lzby9zdHJpbmdfaXNvLmgiIDMgNAoKZXh0ZXJuIHZvaWQgKm1lbWNocihjb25z
dCB2b2lkICosIGludCwgc2l6ZV90KTsKZXh0ZXJuIGNoYXIgKnN0cmNocihjb25zdCBjaGFyICos
IGludCk7CmV4dGVybiBjaGFyICpzdHJwYnJrKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsK
ZXh0ZXJuIGNoYXIgKnN0cnJjaHIoY29uc3QgY2hhciAqLCBpbnQpOwpleHRlcm4gY2hhciAqc3Ry
c3RyKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCgojIDE0NCAiL3Vzci9pbmNsdWRlL2lz
by9zdHJpbmdfaXNvLmgiIDMgNAoKCgoKCgoKfQoKCgojIDE4ICIvdXNyL2luY2x1ZGUvc3RyaW5n
LmgiIDIgMyA0CgoKIAoKCgojIDQ4ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAoKCgpleHRl
cm4gIkMiIHsKCgoKCgoKZXh0ZXJuIGNoYXIgKnN0cnRva19yKGNoYXIgKiwgY29uc3QgY2hhciAq
LCBjaGFyICoqKTsKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5KHZvaWQgKiwgY29uc3Qgdm9pZCAq
LCBpbnQsIHNpemVfdCk7CgoKCgpleHRlcm4gY2hhciAqc3Ryc2lnbmFsKGludCk7CmV4dGVybiBp
bnQgZmZzKGludCk7CmV4dGVybiBpbnQgc3RyY2FzZWNtcChjb25zdCBjaGFyICosIGNvbnN0IGNo
YXIgKik7CmV4dGVybiBpbnQgc3RybmNhc2VjbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICos
IHNpemVfdCk7CmV4dGVybiBzaXplX3Qgc3RybGNweShjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6
ZV90KTsKZXh0ZXJuIHNpemVfdCBzdHJsY2F0KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3Qp
OwoKCgoKCmV4dGVybiBjaGFyICpzdHJkdXAoY29uc3QgY2hhciAqKTsKCgojIDExMCAiL3Vzci9p
bmNsdWRlL3N0cmluZy5oIiAzIDQKCgoKfQoKCgojIDE3ICIuLi9TcmNTaGFyZWQvVUFFL3N5c2Nv
bmZpZy5oIiAyCgoKCgoKCgoKCgoKCQoKCgoKCiMgMjYgIi4uL1NyY1NoYXJlZC9IYXJkd2FyZS9F
bU1lbW9yeS5oIiAyCgoKCmV4dGVybiAiQyIgewoKCiAKIAogCgp0eXBlZGVmIHVpbnQzMgkoKkVt
TWVtR2V0RnVuYykJCQkJKGVtdXB0cik7CnR5cGVkZWYgdm9pZAkoKkVtTWVtUHV0RnVuYykJCQkJ
KGVtdXB0ciwgdWludDMyKTsKdHlwZWRlZiB1aW50OCoJKCpFbU1lbVRyYW5zbGF0ZUZ1bmMpCQko
ZW11cHRyKTsKdHlwZWRlZiBpbnQJCSgqRW1NZW1DaGVja0Z1bmMpCQkJKGVtdXB0ciwgdWludDMy
KTsKdHlwZWRlZiB2b2lkCSgqRW1NZW1DeWNsZUZ1bmMpCQkJKHZvaWQpOwp0eXBlZGVmIHVpbnQ4
KgkoKkVtTWVtVHJhbnNsYXRlTWV0YUZ1bmMpCShlbXVwdHIpOwoKdHlwZWRlZiBzdHJ1Y3QgRW1B
ZGRyZXNzQmFuawp7CgkgCglFbU1lbUdldEZ1bmMJCQlsZ2V0LCB3Z2V0LCBiZ2V0OwoJRW1NZW1Q
dXRGdW5jCQkJbHB1dCwgd3B1dCwgYnB1dDsKCgkgCgoKCglFbU1lbVRyYW5zbGF0ZUZ1bmMJCXhs
YXRlYWRkcjsKCgkgCgoKCglFbU1lbUNoZWNrRnVuYwkJCWNoZWNrYWRkcjsKCglFbU1lbVRyYW5z
bGF0ZU1ldGFGdW5jCXhsYXRlbWV0YWFkZHI7CglFbU1lbUN5Y2xlRnVuYwkJCUVtTWVtQWRkT3Bj
b2RlQ3ljbGVzOwp9IEVtQWRkcmVzc0Jhbms7CgoKCgoJZXh0ZXJuIEVtQWRkcmVzc0JhbmsqCWdF
bU1lbUJhbmtzWzY1NTM2XTsKCgoKCgoKCgogCiAKIAoKCgoJCgoJCgkKCgoKCgoKCgoKCgoKCgog
CiAKIAoKc3RhdGljIGlubGluZSAgIHVpbnQzMiBFbU1lbUdldDMyKGVtdXB0ciBhZGRyKQp7CiAg
ICByZXR1cm4gKCgqICgqZ0VtTWVtQmFua3NbKCgoZW11cHRyKSggICAgYWRkciAgICkpID4+IDE2
KSBdKSAuIGxnZXQgKSggIGFkZHIgKSkgOwp9CgogCiAKIAoKc3RhdGljIGlubGluZSAgIHVpbnQz
MiBFbU1lbUdldDE2KGVtdXB0ciBhZGRyKQp7CiAgICByZXR1cm4gKCgqICgqZ0VtTWVtQmFua3Nb
KCgoZW11cHRyKSggICAgYWRkciAgICkpID4+IDE2KSBdKSAuIHdnZXQgKSggIGFkZHIgKSkgOwp9
CgogCiAKIAoKc3RhdGljIGlubGluZSAgIHVpbnQzMiBFbU1lbUdldDgoZW11cHRyIGFkZHIpCnsK
ICAgIHJldHVybiAoKCogKCpnRW1NZW1CYW5rc1soKChlbXVwdHIpKCAgICBhZGRyICAgKSkgPj4g
MTYpIF0pIC4gYmdldCApKCAgYWRkciApKSA7Cn0KCiAKIAogCgpzdGF0aWMgaW5saW5lICAgdm9p
ZCBFbU1lbVB1dDMyKGVtdXB0ciBhZGRyLCB1aW50MzIgbCkKewogICAgKCgqICgqZ0VtTWVtQmFu
a3NbKCgoZW11cHRyKSggICAgYWRkciAgICkpID4+IDE2KSBdKSAuIGxwdXQgKSggIGFkZHIgLCAg
IGwgKSkgOwp9CgogCiAKIAoKc3RhdGljIGlubGluZSAgIHZvaWQgRW1NZW1QdXQxNihlbXVwdHIg
YWRkciwgdWludDMyIHcpCnsKICAgICgoKiAoKmdFbU1lbUJhbmtzWygoKGVtdXB0cikoICAgIGFk
ZHIgICApKSA+PiAxNikgXSkgLiB3cHV0ICkoICBhZGRyICwgICB3ICkpIDsKfQoKIAogCiAKCnN0
YXRpYyBpbmxpbmUgICB2b2lkIEVtTWVtUHV0OChlbXVwdHIgYWRkciwgdWludDMyIGIpCnsKICAg
ICgoKiAoKmdFbU1lbUJhbmtzWygoKGVtdXB0cikoICAgIGFkZHIgICApKSA+PiAxNikgXSkgLiBi
cHV0ICkoICBhZGRyICwgICBiICkpIDsKfQoKIAogCiAKCnN0YXRpYyBpbmxpbmUgICB1aW50OCog
RW1NZW1HZXRSZWFsQWRkcmVzcyhlbXVwdHIgYWRkcikKewogICAgcmV0dXJuICgqZ0VtTWVtQmFu
a3NbKCgoZW11cHRyKSggIGFkZHIgICkpID4+IDE2KSBdKSAueGxhdGVhZGRyKGFkZHIpOwp9Cgog
CiAKIAoKc3RhdGljIGlubGluZSAgIGludCBFbU1lbUNoZWNrQWRkcmVzcyhlbXVwdHIgYWRkciwg
dWludDMyIHNpemUpCnsKICAgIHJldHVybiAoKmdFbU1lbUJhbmtzWygoKGVtdXB0cikoICBhZGRy
ICApKSA+PiAxNikgXSkgLmNoZWNrYWRkcihhZGRyLCBzaXplKTsKfQoKIAogCiAKCnN0YXRpYyBp
bmxpbmUgICB2b2lkIEVtTWVtQWRkT3Bjb2RlQ3ljbGVzKGVtdXB0ciBhZGRyKQp7CgkoKHZvaWQp
IDApIDsKICAgICgqZ0VtTWVtQmFua3NbKCgoZW11cHRyKSggIGFkZHIgICkpID4+IDE2KSBdKSAu
RW1NZW1BZGRPcGNvZGVDeWNsZXMoKTsKfQoKIAogCiAKCnN0YXRpYyBpbmxpbmUgICB1aW50OCog
RW1NZW1HZXRNZXRhQWRkcmVzcyhlbXVwdHIgYWRkcikKewoJKCh2b2lkKSAwKSA7CiAgICByZXR1
cm4gKCpnRW1NZW1CYW5rc1soKChlbXVwdHIpKCAgYWRkciAgKSkgPj4gMTYpIF0pIC54bGF0ZW1l
dGFhZGRyKGFkZHIpOwp9CgogCiAKIAoKc3RhdGljIGlubGluZSAgIHVpbnQzMiBFbU1lbURvR2V0
MzIgKHZvaWQqIGEpCnsKCglyZXR1cm4JKCgodWludDMyKSAqKCgodWludDE2KikgYSkgKyAwKSkg
PDwgMTYpIHwKCQkJKCgodWludDMyKSAqKCgodWludDE2KikgYSkgKyAxKSkpOwoKCgp9CgogCiAK
IAoKc3RhdGljIGlubGluZSAgIHVpbnQxNiBFbU1lbURvR2V0MTYgKHZvaWQqIGEpCnsKCXJldHVy
biAqKHVpbnQxNiopIGE7Cn0KCiAKIAogCgpzdGF0aWMgaW5saW5lICAgdWludDggRW1NZW1Eb0dl
dDggKHZvaWQqIGEpCnsKCgoKCXJldHVybiAqKHVpbnQ4KikgYTsKCn0KCiAKIAogCgpzdGF0aWMg
aW5saW5lICAgdm9pZCBFbU1lbURvUHV0MzIgKHZvaWQqIGEsIHVpbnQzMiB2KQp7CgoJKigoKHVp
bnQxNiopIGEpICsgMCkgPSAodWludDE2KSAodiA+PiAxNik7CgkqKCgodWludDE2KikgYSkgKyAx
KSA9ICh1aW50MTYpICh2KTsKCgoKfQoKIAogCiAKCnN0YXRpYyBpbmxpbmUgICB2b2lkIEVtTWVt
RG9QdXQxNiAodm9pZCogYSwgdWludDE2IHYpCnsKCSoodWludDE2KikgYSA9IHY7Cn0KCiAKIAog
CgpzdGF0aWMgaW5saW5lICAgdm9pZCBFbU1lbURvUHV0OCAodm9pZCogYSwgdWludDggdikKewoK
CgoJKih1aW50OCopIGEgPSB2OwoKfQoKCgp9CgoKCgoKY2xhc3MgRW1TdHJlYW07CgoKIAoKIAog
CiAKIAogCgpzdHJ1Y3QgTWVtQWNjZXNzRmxhZ3MKewoJQm9vbAkJCQlmVmFsaWRhdGVfRHVtbXlH
ZXQ7CglCb29sCQkJCWZWYWxpZGF0ZV9EdW1teVNldDsKCUJvb2wJCQkJZlZhbGlkYXRlX1JlZ2lz
dGVyR2V0OwoJQm9vbAkJCQlmVmFsaWRhdGVfUmVnaXN0ZXJTZXQ7CglCb29sCQkJCWZWYWxpZGF0
ZV9EUkFNR2V0OwoJQm9vbAkJCQlmVmFsaWRhdGVfRFJBTVNldDsKCUJvb2wJCQkJZlZhbGlkYXRl
X1NSQU1HZXQ7CglCb29sCQkJCWZWYWxpZGF0ZV9TUkFNU2V0OwoJQm9vbAkJCQlmVmFsaWRhdGVf
Uk9NR2V0OwoJQm9vbAkJCQlmVmFsaWRhdGVfUk9NU2V0OwoKIAogCiAKIAogCiAKCUJvb2wJCQkJ
ZlByb3RlY3RfU1JBTUdldDsKCUJvb2wJCQkJZlByb3RlY3RfU1JBTVNldDsKCUJvb2wJCQkJZlBy
b3RlY3RfUk9NR2V0OwoJQm9vbAkJCQlmUHJvdGVjdF9ST01TZXQ7CglCb29sCQkJCWZQcm90ZWN0
X1JlZ2lzdGVyR2V0OwoJQm9vbAkJCQlmUHJvdGVjdF9SZWdpc3RlclNldDsKCiAKIAogCiAKCiAK
IAogCiAKIAogCiAKIAoJQm9vbAkJCQlmUHJvdGVjdF9TeXNST01HZXQ7CglCb29sCQkJCWZQcm90
ZWN0X1N5c1JPTVNldDsKIAogCn07CgoKIAoKZXh0ZXJuIE1lbUFjY2Vzc0ZsYWdzCWdNZW1BY2Nl
c3NGbGFnczsKZXh0ZXJuIEJvb2wJCQkJZ1BDSW5SQU07CmV4dGVybiBCb29sCQkJCWdQQ0luUk9N
OwoKIyAzNTQgIi4uL1NyY1NoYXJlZC9IYXJkd2FyZS9FbU1lbW9yeS5oIgoKCnN0cnVjdCBFbUFk
ZHJlc3NCYW5rOwpjbGFzcyBTZXNzaW9uRmlsZTsKCiAKCmNsYXNzIE1lbW9yeQp7CglwdWJsaWM6
CgkJc3RhdGljIHZvaWQJCQkJSW5pdGlhbGl6ZQkJCShFbVN0cmVhbSYgaFJPTSwKCQkJCQkJCQkJ
CQkJCSBSQU1TaXplVHlwZSByYW1TaXplKTsKCQlzdGF0aWMgdm9pZAkJCQlSZXNldAkJCQkoQm9v
bCBoYXJkd2FyZVJlc2V0KTsKCQlzdGF0aWMgdm9pZAkJCQlTYXZlCQkJCShTZXNzaW9uRmlsZSYp
OwoJCXN0YXRpYyB2b2lkCQkJCUxvYWQJCQkJKFNlc3Npb25GaWxlJik7CgkJc3RhdGljIHZvaWQJ
CQkJRGlzcG9zZQkJCQkodm9pZCk7CgoJCXN0YXRpYyB2b2lkCQkJCUluaXRpYWxpemVCYW5rcwkJ
KEVtQWRkcmVzc0JhbmsmIGlCYW5rSW5pdGlhbGl6ZXIsCgkJCQkJCQkJCQkJCQkgaW50MzIgaVN0
YXJ0aW5nQmFua0luZGV4LAoJCQkJCQkJCQkJCQkJIGludDMyIGlOdW1iZXJPZkJhbmtzKTsKCgkJ
c3RhdGljIHZvaWQJCQkJUmVzZXRCYW5rSGFuZGxlcnMJKHZvaWQpOwoKCQlzdGF0aWMgdm9pZAkJ
CQlNYXBQaHlzaWNhbE1lbW9yeQkoY29uc3Qgdm9pZCosIHVpbnQzMik7CgkJc3RhdGljIHZvaWQJ
CQkJVW5tYXBQaHlzaWNhbE1lbW9yeQkoY29uc3Qgdm9pZCopOwoJCXN0YXRpYyB2b2lkCQkJCUdl
dE1hcHBpbmdJbmZvCQkoZW11cHRyLCB2b2lkKiosIHVpbnQzMiopOwoKCQlzdGF0aWMgdm9pZAkJ
CQlDaGVja05ld1BDCQkJKGVtdXB0ciBuZXdQQyk7CgkJc3RhdGljIGludAkJCQlJc1BDSW5SQU0J
CQkodm9pZCkgeyByZXR1cm4gZ1BDSW5SQU07IH0KCQlzdGF0aWMgaW50CQkJCUlzUENJblJPTQkJ
CSh2b2lkKSB7IHJldHVybiBnUENJblJPTTsgfQp9OwoKdHlwZWRlZiBNZW1vcnkgRW1NZW1vcnk7
CgoKIAogCiAKIAogCiAKIAogCiAKIAoKY2xhc3MgQ0VuYWJsZUZ1bGxBY2Nlc3MKewoJcHVibGlj
OgoJCQkJCQkJCUNFbmFibGVGdWxsQWNjZXNzICh2b2lkKTsKCQkJCQkJCQl+Q0VuYWJsZUZ1bGxB
Y2Nlc3MgKHZvaWQpOwoKCQlzdGF0aWMgQm9vbAkJCQlBY2Nlc3NPSyAodm9pZCk7CgoJcHJpdmF0
ZToKCQlNZW1BY2Nlc3NGbGFncwkJCWZPbGRNZW1BY2Nlc3NGbGFnczsKCgoKCgoJCXN0YXRpYyBs
b25nCQkJCWZnQWNjZXNzQ291bnQ7Cn07CgoKIAogCgplbXVwdHIJRW1NZW1fbWVtc2V0KGVtdXB0
ciBkc3QsIGludCB2YWwsIHNpemVfdCBsZW4pOwoKZW11cHRyCUVtTWVtX21lbWNocihlbXVwdHIg
c3JjLCBpbnQgdmFsLCBzaXplX3QgbGVuKTsKCnRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+
CmludAkJRW1NZW1fbWVtY21wKFQxIHNyYzEsIFQyIHNyYzIsIHNpemVfdCBsZW4pOwoKdGVtcGxh
dGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KVDEJCUVtTWVtX21lbWNweSAoVDEgZHN0LCBUMiBzcmMs
IHNpemVfdCBsZW4pOwoKdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KVDEJCUVtTWVtX21l
bW1vdmUgKFQxIGRzdCwgVDIgc3JjLCBzaXplX3QgbGVuKTsKCnNpemVfdAlFbU1lbV9zdHJsZW4o
ZW11cHRyIHN0cik7Cgp0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgpUMQkJRW1NZW1fc3Ry
Y3B5KFQxIGRzdCwgVDIgc3JjKTsKCnRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+ClQxCQlF
bU1lbV9zdHJuY3B5KFQxIGRzdCwgVDIgc3JjLCBzaXplX3QgbGVuKTsKCnRlbXBsYXRlIDxjbGFz
cyBUMSwgY2xhc3MgVDI+ClQxCQlFbU1lbV9zdHJjYXQoVDEgZHN0LCBUMiBzcmMpOwoKdGVtcGxh
dGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KVDEJCUVtTWVtX3N0cm5jYXQoVDEgZHN0LCBUMiBzcmMs
IHNpemVfdCBsZW4pOwoKdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KaW50CQlFbU1lbV9z
dHJjbXAoVDEgZHN0LCBUMiBzcmMpOwoKdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMj4KaW50
CQlFbU1lbV9zdHJuY21wKFQxIGRzdCwgVDIgc3JjLCBzaXplX3QgbGVuKTsKCgoKCiMgMTcgIi4u
L1NyY1NoYXJlZC9NZXRhTWVtb3J5LmgiIDIKCiMgMSAiLi4vU3JjU2hhcmVkL0VtUGFsbUhlYXAu
aCIgMQogCiAKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMt
c3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvdmVjdG9yIiAx
IDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0z
L3N0bF9hbGdvYmFzZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMv
Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKCiAKIAog
CiAKIAogCiAKIAogCiAKIAoKCiAKCiAKIAogCiAKIAogCiAKCgoKCgoKCgojIDE0OCAiL3Vzci9s
b2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDMKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9zcGFyYy1zdW4tc29s
YXJpczIuOC9pbmNsdWRlL19HX2NvbmZpZy5oIiAxIDMgNAogIAoKCgoKCgoKCgp0eXBlZGVmICAg
ICAgICAgIGludCAgIF9HX2ludDhfdCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1FJX18pKSk7
CnR5cGVkZWYgdW5zaWduZWQgaW50ICBfR191aW50OF90IF9fYXR0cmlidXRlX18oKF9fbW9kZV9f
KF9fUUlfXykpKTsKdHlwZWRlZiAgICAgICAgICBpbnQgIF9HX2ludDE2X3QgX19hdHRyaWJ1dGVf
XygoX19tb2RlX18oX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MTZfdCBf
X2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0hJX18pKSk7CnR5cGVkZWYgICAgICAgICAgaW50ICBf
R19pbnQzMl90IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fU0lfXykpKTsKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19TSV9fKSkpOwp0
eXBlZGVmICAgICAgICAgIGludCAgX0dfaW50NjRfdCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhf
X0RJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQ2NF90IF9fYXR0cmlidXRlX18o
KF9fbW9kZV9fKF9fRElfXykpKTsKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBsb25nIGxvbmcgX0df
bGxvbmc7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX0dfdWxsb25n
OwoKCgoKCgoKCnR5cGVkZWYgbG9uZyBfR19jbG9ja190Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
X0dfZGV2X3Q7CnR5cGVkZWYgbG9uZyBfR19mcG9zX3Q7CnR5cGVkZWYgbG9uZyBfR19naWRfdDsK
dHlwZWRlZiB1bnNpZ25lZCBsb25nIF9HX2lub190Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX0df
bW9kZV90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX0dfbmxpbmtfdDsKdHlwZWRlZiBsb25nIF9H
X29mZl90Owp0eXBlZGVmIGxvbmcgX0dfcGlkX3Q7CgoKCnR5cGVkZWYgaW50IF9HX3B0cmRpZmZf
dDsKdHlwZWRlZiBpbnQgICBfR19zaWdzZXRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0df
c2l6ZV90Owp0eXBlZGVmIGxvbmcgX0dfdGltZV90Owp0eXBlZGVmIGxvbmcgX0dfdWlkX3Q7CnR5
cGVkZWYgbG9uZyBpbnQgX0dfd2NoYXJfdDsKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgX0df
c3NpemVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfd2ludF90Owp0eXBlZGVmIHZvaWQgKiBf
R192YV9saXN0OwoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9z
cGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKCgoKCgoK
IAoKCiMgMTkgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45
NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzIDQKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1
ZGUvc3RkZGVmLmgiIDMgNAoKCiAKCiAKCiMgMTkwICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3Nw
YXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKCgoKIAoKCgoK
IAoKIyAyNzEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45
NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAoKCiMgMjgzICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKCgogCgog
CgojIDMxNyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1
LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgODYg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4u
Ly4uLy4uL3NwYXJjLXN1bi1zb2xhcmlzMi44L2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMyA0CgoK
IyAxNTEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4z
Ly4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2NvbmZpZy5oIiAyIDMKCgoKCgoKCgoKCgoK
CgoKCgojIDE3OCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8y
Ljk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDMKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDIzNCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29u
ZmlnLmgiIDMKCgojIDI0OCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJp
czIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDMKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCiMgMjk1ICIvdXNyL2xvY2Fs
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNs
dWRlL2crKy0zL3N0bF9jb25maWcuaCIgMwoKCgoKCgoKCgoKIAogCiMgMzE2ICIvdXNyL2xvY2Fs
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNs
dWRlL2crKy0zL3N0bF9jb25maWcuaCIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKIAogCiMgMzYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy
aXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsZ29iYXNlLmgiIDIg
MwoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45
NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3JlbG9wcy5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgewogIHJldHVy
biAhKF9feCA9PSBfX3kpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUgYm9vbCBvcGVy
YXRvcj4oY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSB7CiAgcmV0dXJuIF9feSA8IF9f
eDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBf
VHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIHsKICByZXR1cm4gIShfX3kgPCBfX3gpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IF9UcCYgX194LCBj
b25zdCBfVHAmIF9feSkgewogIHJldHVybiAhKF9feCA8IF9feSk7Cn0KCiAKCgoKIAogCiAKIyAz
OSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4v
Li4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKCiMgMSAiL3Vzci9s
b2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9zdGxfcGFpci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CnN0cnVjdCBwYWlyIHsK
ICB0eXBlZGVmIF9UMSBmaXJzdF90eXBlOwogIHR5cGVkZWYgX1QyIHNlY29uZF90eXBlOwoKICBf
VDEgZmlyc3Q7CiAgX1QyIHNlY29uZDsKICBwYWlyKCkgOiBmaXJzdChfVDEoKSksIHNlY29uZChf
VDIoKSkge30KICBwYWlyKGNvbnN0IF9UMSYgX19hLCBjb25zdCBfVDImIF9fYikgOiBmaXJzdChf
X2EpLCBzZWNvbmQoX19iKSB7fQoKCiAgdGVtcGxhdGUgPGNsYXNzIF9VMSwgY2xhc3MgX1UyPgog
IHBhaXIoY29uc3QgcGFpcjxfVTEsIF9VMj4mIF9fcCkgOiBmaXJzdChfX3AuZmlyc3QpLCBzZWNv
bmQoX19wLnNlY29uZCkge30KCn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+Cmlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFp
cjxfVDEsIF9UMj4mIF9feSkKeyAKICByZXR1cm4gX194LmZpcnN0ID09IF9feS5maXJzdCAmJiBf
X3guc2Vjb25kID09IF9feS5zZWNvbmQ7IAp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBf
VDI+CmlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25z
dCBwYWlyPF9UMSwgX1QyPiYgX195KQp7IAogIHJldHVybiBfX3guZmlyc3QgPCBfX3kuZmlyc3Qg
fHwgCiAgICAgICAgICghKF9feS5maXJzdCA8IF9feC5maXJzdCkgJiYgX194LnNlY29uZCA8IF9f
eS5zZWNvbmQpOyAKfQoKdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgppbmxpbmUgcGFp
cjxfVDEsIF9UMj4gbWFrZV9wYWlyKGNvbnN0IF9UMSYgX194LCBjb25zdCBfVDImIF9feSkKewog
IHJldHVybiBwYWlyPF9UMSwgX1QyPihfX3gsIF9feSk7Cn0KCiAKCgoKIAogCiAKIyA0MiAiL3Vz
ci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4v
Li4vaW5jbHVkZS9nKystMy9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKCiMgMSAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy90eXBlX3RyYWl0cy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpzdHJ1Y3QgX190cnVlX3R5cGUgewp9OwoKc3RydWN0
IF9fZmFsc2VfdHlwZSB7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgX190eXBlX3Ry
YWl0cyB7IAogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgICB0aGlzX2R1bW15X21lbWJlcl9tdXN0
X2JlX2ZpcnN0OwogICAgICAgICAgICAgICAgICAgIAoKCgoKCiAgICAKCgoKCgoKCgogCgogICB0
eXBlZGVmIF9fZmFsc2VfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwog
ICB0eXBlZGVmIF9fZmFsc2VfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwog
ICB0eXBlZGVmIF9fZmFsc2VfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9y
OwogICB0eXBlZGVmIF9fZmFsc2VfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0
eXBlZGVmIF9fZmFsc2VfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCgoKIAogCiAKCgoKdGVtcGxh
dGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8Ym9vbD4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
ICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAg
aXNfUE9EX3R5cGU7Cn07CgoKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPGNoYXI+
IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVj
dG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0
b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVy
YXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwog
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3Ry
dWN0IF9fdHlwZV90cmFpdHM8c2lnbmVkIGNoYXI+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAg
ICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
ICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
ICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlz
X1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8dW5zaWduZWQg
Y2hhcj4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29u
c3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25z
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50
X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0
b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07CgoKCnRlbXBsYXRl
PD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPHdjaGFyX3Q+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAg
IGlzX1BPRF90eXBlOwp9OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxzaG9y
dD4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3Ry
dWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1
Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29w
ZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBz
dHJ1Y3QgX190eXBlX3RyYWl0czx1bnNpZ25lZCBzaG9ydD4gewogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
ICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxpbnQ+
IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVj
dG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0
b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVy
YXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwog
ICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3Ry
dWN0IF9fdHlwZV90cmFpdHM8dW5zaWduZWQgaW50PiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
ICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
ICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBp
c19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPGxvbmc+IHsK
ICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9y
OwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRv
cjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0
eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0
IF9fdHlwZV90cmFpdHM8dW5zaWduZWQgbG9uZz4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAg
IGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
ICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAg
ICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
ICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNf
UE9EX3R5cGU7Cn07CgoKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPGxvbmcgbG9u
Zz4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3Ry
dWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1
Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29w
ZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBz
dHJ1Y3QgX190eXBlX3RyYWl0czx1bnNpZ25lZCBsb25nIGxvbmc+IHsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0
czxmbG9hdD4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRf
Y29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9j
b25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25t
ZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3Ry
dWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0
ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxkb3VibGU+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAg
IGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8bG9uZyBk
b3VibGU+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2Nv
bnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29u
c3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVu
dF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVj
dG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKCgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgX190eXBlX3RyYWl0czxfVHAqPiB7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCiMgMjk1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3Nw
YXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3R5cGVf
dHJhaXRzLmgiIDMKCgoKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPiBzdHJ1Y3QgX0lzX2ludGVn
ZXIgewogIHR5cGVkZWYgX19mYWxzZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoKdGVtcGxhdGU8PiAg
c3RydWN0IF9Jc19pbnRlZ2VyPGJvb2w+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3Jh
bDsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPGNoYXI+IHsKICB0eXBlZGVm
IF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdl
cjxzaWduZWQgY2hhcj4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKdGVt
cGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPHVuc2lnbmVkIGNoYXI+IHsKICB0eXBlZGVmIF9f
dHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2Vy
PHdjaGFyX3Q+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoKdGVtcGxh
dGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPHNob3J0PiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBf
SW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8dW5zaWduZWQgc2hv
cnQ+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0
cnVjdCBfSXNfaW50ZWdlcjxpbnQ+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsK
fTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjx1bnNpZ25lZCBpbnQ+IHsKICB0eXBl
ZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50
ZWdlcjxsb25nPiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0
ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8dW5zaWduZWQgbG9uZz4gewogIHR5cGVkZWYgX190cnVl
X3R5cGUgX0ludGVncmFsOwp9OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8bG9u
ZyBsb25nPiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+
ICBzdHJ1Y3QgX0lzX2ludGVnZXI8dW5zaWduZWQgbG9uZyBsb25nPiB7CiAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSBfSW50ZWdyYWw7Cn07CgoKCgoKIAogCiAKIyA0NSAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKyst
My9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0CiAKCgogCgoK
CgoKIAojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45
NS4zL2luY2x1ZGUvc3lzbGltaXRzLmgiIDEgMyA0CiAKCgoKCiAKIAoKIAogCiAKCgoKCiNwcmFn
bWEgaWRlbnQJIkAoIylsaW1pdHMuaAkxLjUxCTk5LzEwLzA4IFNNSSIJCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL2lzby9saW1pdHNfaXNvLmgiIDEgMyA0CiAKCgoKCiAKIAoKIAogCiAKCiAKCgoKCgoK
CgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpbGltaXRzX2lzby5oCTEuMQk5OS8wOC8wOSBTTUki
IAoKCmV4dGVybiAiQyIgewoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgkJ
CQkJIAoKCgoKCn0KCgoKIyAyMCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOC8yLjk1LjMvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzIDQKCgogCgoKCgoKCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfbGltaXRzLmgiIDEgMyA0CiAKCgoKCgoKCiNwcmFnbWEg
aWRlbnQJIkAoIylpbnRfbGltaXRzLmgJMS42CTk5LzA4LzA2IFNNSSIKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoK
CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCn0KCgoKIyAzMiAiL3Vzci9s
b2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvaW5jbHVkZS9zeXNs
aW1pdHMuaCIgMiAzIDQKCgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgkJCQkgCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCQkJCQkJIAoKCgoJCQkJCQkgCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyNDAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMt
c3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvc3lzbGltaXRzLmgiIDMgNAoKCgoKCiAKCgoK
CgoKCgogCgoKCiMgMjc3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzIuOTUuMy9pbmNsdWRlL3N5c2xpbWl0cy5oIiAzIDQKCgoKfQoKCgojIDExICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL2xpbWl0
cy5oIiAyIDMgNAoKCgoKCiAKCgoKIAoKCgogCgoKCgogCgoKCgoKIAoKCgogCgoKCgoKCgoKCgoK
CiAKCiAKCgoKCiAKCgoKIAoKCgoKCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoK
CgoKCiAKCgoKCgoKIAoKCgoKCgoKCgojIDQ5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGdv
YmFzZS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMgNAogCgoKCgogCiAK
CiAKIAogCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc3RkbGliLmgJMS40Nwk5OS8xMS8wMyBTTUki
CQoKIyAxICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGxpYl9pc28uaCIgMSAzIDQKIAoKCgoKIAogCgog
CiAKIAoKIAoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIylzdGRsaWJfaXNvLmgJMS4x
CTk5LzA4LzA5IFNNSSIgCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKdHlwZWRlZglzdHJ1Y3QgewoJ
aW50CXF1b3Q7CglpbnQJcmVtOwp9IGRpdl90OwoKdHlwZWRlZiBzdHJ1Y3QgewoJbG9uZwlxdW90
OwoJbG9uZwlyZW07Cn0gbGRpdl90OwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVm
IGxvbmcJd2NoYXJfdDsKCgoKCgpleHRlcm4gdW5zaWduZWQgY2hhcglfX2N0eXBlW107CgoKZXh0
ZXJuIHZvaWQgYWJvcnQodm9pZCk7CmV4dGVybiBpbnQgYWJzKGludCk7CmV4dGVybiBpbnQgYXRl
eGl0KHZvaWQgKCopKHZvaWQpKTsKZXh0ZXJuIGRvdWJsZSBhdG9mKGNvbnN0IGNoYXIgKik7CmV4
dGVybiBpbnQgYXRvaShjb25zdCBjaGFyICopOwpleHRlcm4gbG9uZyBpbnQgYXRvbChjb25zdCBj
aGFyICopOwpleHRlcm4gdm9pZCAqYnNlYXJjaChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwg
c2l6ZV90LCBzaXplX3QsCglpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSk7CmV4
dGVybiB2b2lkICpjYWxsb2Moc2l6ZV90LCBzaXplX3QpOwpleHRlcm4gZGl2X3QgZGl2KGludCwg
aW50KTsKZXh0ZXJuIHZvaWQgZXhpdChpbnQpOwpleHRlcm4gdm9pZCBmcmVlKHZvaWQgKik7CmV4
dGVybiBjaGFyICpnZXRlbnYoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMobG9u
Zyk7CmV4dGVybiBsZGl2X3QgbGRpdihsb25nLCBsb25nKTsKZXh0ZXJuIHZvaWQgKm1hbGxvYyhz
aXplX3QpOwpleHRlcm4gaW50IG1ibGVuKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIHNp
emVfdCBtYnN0b3djcyh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGlu
dCBtYnRvd2Mod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiB2b2lkIHFz
b3J0KHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsCglpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qg
dm9pZCAqKSk7CmV4dGVybiBpbnQgcmFuZCh2b2lkKTsKZXh0ZXJuIHZvaWQgKnJlYWxsb2Modm9p
ZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCBzcmFuZCh1bnNpZ25lZCBpbnQpOwpleHRlcm4gZG91
YmxlIHN0cnRvZChjb25zdCBjaGFyICosIGNoYXIgKiopOwpleHRlcm4gbG9uZyBpbnQgc3RydG9s
KGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0
cnRvdWwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4gaW50IHN5c3RlbShjb25z
dCBjaGFyICopOwpleHRlcm4gaW50IHdjdG9tYihjaGFyICosIHdjaGFyX3QpOwpleHRlcm4gc2l6
ZV90IHdjc3RvbWJzKGNoYXIgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3QpOwoKIyAxNTAgIi91
c3IvaW5jbHVkZS9pc28vc3RkbGliX2lzby5oIiAzIDQKCgoKCgoKCn0KCgoKIyAxOCAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKCgoKCgoKIAoKCgojIDYxICIvdXNyL2luY2x1ZGUvc3Rk
bGliLmgiIDMgNAoKCgpleHRlcm4gIkMiIHsKCgoKdHlwZWRlZiBzdHJ1Y3QgewoJbG9uZyBsb25n
CXF1b3Q7Cglsb25nIGxvbmcJcmVtOwp9IGxsZGl2X3Q7CgoKCgoKCgoKCgoKCgogCiMgOTQgIi91
c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CgoKIAojIDEwNSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzIDQKCgoKCmV4dGVybiBpbnQgcmFuZF9yKHVuc2lnbmVkIGludCAqKTsKCgpleHRlcm4gdm9p
ZCBfZXhpdGhhbmRsZSh2b2lkKTsKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCh2b2lkKTsKZXh0
ZXJuIGRvdWJsZSBlcmFuZDQ4KHVuc2lnbmVkIHNob3J0ICopOwpleHRlcm4gbG9uZyBqcmFuZDQ4
KHVuc2lnbmVkIHNob3J0ICopOwpleHRlcm4gdm9pZCBsY29uZzQ4KHVuc2lnbmVkIHNob3J0ICop
OwpleHRlcm4gbG9uZyBscmFuZDQ4KHZvaWQpOwpleHRlcm4gbG9uZyBtcmFuZDQ4KHZvaWQpOwpl
eHRlcm4gbG9uZyBucmFuZDQ4KHVuc2lnbmVkIHNob3J0ICopOwpleHRlcm4gdW5zaWduZWQgc2hv
cnQgKnNlZWQ0OCh1bnNpZ25lZCBzaG9ydCAqKTsKZXh0ZXJuIHZvaWQgc3JhbmQ0OChsb25nKTsK
ZXh0ZXJuIGludCBwdXRlbnYoY2hhciAqKTsKZXh0ZXJuIHZvaWQgc2V0a2V5KGNvbnN0IGNoYXIg
Kik7CgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gdm9pZCBzd2FiKGNvbnN0IGNoYXIgKiwgY2hhciAq
LCBzc2l6ZV90KTsKCgoKCgpleHRlcm4gaW50CW1rc3RlbXAoY2hhciAqKTsKCgoKCmV4dGVybiBp
bnQJbWtzdGVtcDY0KGNoYXIgKik7CgoKCgoKZXh0ZXJuIGxvbmcgYTY0bChjb25zdCBjaGFyICop
OwpleHRlcm4gY2hhciAqZWN2dChkb3VibGUsIGludCwgaW50ICosIGludCAqKTsKZXh0ZXJuIGNo
YXIgKmZjdnQoZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7CmV4dGVybiBjaGFyICpnY3Z0KGRv
dWJsZSwgaW50LCBjaGFyICopOwpleHRlcm4gaW50IGdldHN1Ym9wdChjaGFyICoqLCBjaGFyICpj
b25zdCAqLCBjaGFyICoqKTsKZXh0ZXJuIGludCAgZ3JhbnRwdChpbnQpOwpleHRlcm4gY2hhciAq
aW5pdHN0YXRlKHVuc2lnbmVkLCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBjaGFyICpsNjRhKGxv
bmcpOwpleHRlcm4gY2hhciAqbWt0ZW1wKGNoYXIgKik7CmV4dGVybiBjaGFyICpwdHNuYW1lKGlu
dCk7CmV4dGVybiBsb25nIHJhbmRvbSh2b2lkKTsKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoKGNvbnN0
IGNoYXIgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnNldHN0YXRlKGNvbnN0IGNoYXIgKik7CmV4
dGVybiB2b2lkIHNyYW5kb20odW5zaWduZWQpOwpleHRlcm4gaW50IHR0eXNsb3Qodm9pZCk7CmV4
dGVybiBpbnQgIHVubG9ja3B0KGludCk7CmV4dGVybiB2b2lkICp2YWxsb2Moc2l6ZV90KTsKCgoK
CmV4dGVybiBpbnQgZHVwMihpbnQsIGludCk7CmV4dGVybiBjaGFyICpxZWN2dChsb25nIGRvdWJs
ZSwgaW50LCBpbnQgKiwgaW50ICopOwpleHRlcm4gY2hhciAqcWZjdnQobG9uZyBkb3VibGUsIGlu
dCwgaW50ICosIGludCAqKTsKZXh0ZXJuIGNoYXIgKnFnY3Z0KGxvbmcgZG91YmxlLCBpbnQsIGNo
YXIgKik7CmV4dGVybiBjaGFyICpnZXRjd2QoY2hhciAqLCBzaXplX3QpOwpleHRlcm4gY29uc3Qg
Y2hhciAqZ2V0ZXhlY25hbWUodm9pZCk7CmV4dGVybiBjaGFyICpnZXRsb2dpbih2b2lkKTsKZXh0
ZXJuIGludCBnZXRvcHQoaW50LCBjaGFyICpjb25zdCAqLCBjb25zdCBjaGFyICopOwpleHRlcm4g
Y2hhciAqb3B0YXJnOwpleHRlcm4gaW50IG9wdGluZCwgb3B0ZXJyLCBvcHRvcHQ7CmV4dGVybiBj
aGFyICpnZXRwYXNzKGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpnZXRwYXNzcGhyYXNlKGNv
bnN0IGNoYXIgKik7CmV4dGVybiBpbnQgZ2V0cHcodWlkX3QsIGNoYXIgKik7CmV4dGVybiBpbnQg
aXNhdHR5KGludCk7CmV4dGVybiB2b2lkICptZW1hbGlnbihzaXplX3QsIHNpemVfdCk7CmV4dGVy
biBjaGFyICp0dHluYW1lKGludCk7CgoKZXh0ZXJuIGxvbmcgbG9uZyBhdG9sbChjb25zdCBjaGFy
ICopOwpleHRlcm4gbG9uZyBsb25nIGxsYWJzKGxvbmcgbG9uZyk7CmV4dGVybiBsbGRpdl90IGxs
ZGl2KGxvbmcgbG9uZywgbG9uZyBsb25nKTsKZXh0ZXJuIGNoYXIgKmxsdG9zdHIobG9uZyBsb25n
LCBjaGFyICopOwpleHRlcm4gbG9uZyBsb25nIHN0cnRvbGwoY29uc3QgY2hhciAqLCBjaGFyICoq
LCBpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIHN0cnRvdWxsKGNvbnN0IGNoYXIgKiwg
Y2hhciAqKiwgaW50KTsKZXh0ZXJuIGNoYXIgKnVsbHRvc3RyKHVuc2lnbmVkIGxvbmcgbG9uZywg
Y2hhciAqKTsKCgoKCiMgMzA1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAoKCgp9CgoKCiMg
NTAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4u
Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsZ29iYXNlLmgiIDIgMwoKIyAxICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMgNAoKCgoKCgogCgoKCgoKCgogCgogCgoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzIDQKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoK
CiMgMTI2ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKCgogCgoKCgogCgogCgoKCiMgMTg3ICIvdXNyL2xvY2Fs
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5o
IiAzIDQKCgoKCgoKIAoKCgoKIAoKCgojIDI2OCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CgoKCgoKCgoKCgoK
CnR5cGVkZWYgdW5zaWduZWQgaW50ICB3aW50X3Q7CgoKCgogCgogCgojIDMxNyAiL3Vzci9sb2Nh
bC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYu
aCIgMyA0CgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCgojIDUxICIvdXNyL2xvY2FsL2xpYi9n
Y2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL3N0bF9hbGdvYmFzZS5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8yLjk1LjMvaW5jbHVkZS9uZXcuaCIgMSAzIDQKIAoKCgoKIyAxICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRl
L25ldyIgMSAzIDQKIAogCgoKCgojcHJhZ21hIGludGVyZmFjZSAibmV3IgojIDEgIi91c3IvbG9j
YWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMyA0CiMgMzQyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKCiMgOCAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvaW5jbHVkZS9uZXciIDIgMyA0CgojIDEg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1
ZGUvZXhjZXB0aW9uIiAxIDMgNAogCiAKCgoKCiNwcmFnbWEgaW50ZXJmYWNlICJleGNlcHRpb24i
CgpleHRlcm4gIkMrKyIgewoKbmFtZXNwYWNlIHN0ZCB7CgpjbGFzcyBleGNlcHRpb24gewpwdWJs
aWM6CiAgZXhjZXB0aW9uICgpIHsgfQogIHZpcnR1YWwgfmV4Y2VwdGlvbiAoKSB7IH0KICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHdoYXQgKCkgY29uc3Q7Cn07CgpjbGFzcyBiYWRfZXhjZXB0aW9uIDog
cHVibGljIGV4Y2VwdGlvbiB7CnB1YmxpYzoKICBiYWRfZXhjZXB0aW9uICgpIHsgfQogIHZpcnR1
YWwgfmJhZF9leGNlcHRpb24gKCkgeyB9Cn07Cgp0eXBlZGVmIHZvaWQgKCp0ZXJtaW5hdGVfaGFu
ZGxlcikgKCk7CnR5cGVkZWYgdm9pZCAoKnVuZXhwZWN0ZWRfaGFuZGxlcikgKCk7Cgp0ZXJtaW5h
dGVfaGFuZGxlciBzZXRfdGVybWluYXRlICh0ZXJtaW5hdGVfaGFuZGxlcik7CnZvaWQgdGVybWlu
YXRlICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKdW5leHBlY3RlZF9oYW5kbGVy
IHNldF91bmV4cGVjdGVkICh1bmV4cGVjdGVkX2hhbmRsZXIpOwp2b2lkIHVuZXhwZWN0ZWQgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwpib29sIHVuY2F1Z2h0X2V4Y2VwdGlvbiAo
KTsKCn0gIAoKfSAgCgoKIyA5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh
cmlzMi44LzIuOTUuMy9pbmNsdWRlL25ldyIgMiAzIDQKCgpleHRlcm4gIkMrKyIgewoKbmFtZXNw
YWNlIHN0ZCB7CgogIGNsYXNzIGJhZF9hbGxvYyA6IHB1YmxpYyBleGNlcHRpb24gewogIHB1Ymxp
YzoKICAgIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCkgeyByZXR1cm4g
ImJhZF9hbGxvYyI7IH0KICB9OwoKICBzdHJ1Y3Qgbm90aHJvd190IHt9OwogIGV4dGVybiBjb25z
dCBub3Rocm93X3Qgbm90aHJvdzsKICB0eXBlZGVmIHZvaWQgKCpuZXdfaGFuZGxlcikoKTsKICBu
ZXdfaGFuZGxlciBzZXRfbmV3X2hhbmRsZXIgKG5ld19oYW5kbGVyKTsKCn0gIAoKIAp2b2lkICpv
cGVyYXRvciBuZXcgKHNpemVfdCkgdGhyb3cgKHN0ZDo6YmFkX2FsbG9jKTsKdm9pZCAqb3BlcmF0
b3IgbmV3W10gKHNpemVfdCkgdGhyb3cgKHN0ZDo6YmFkX2FsbG9jKTsKdm9pZCBvcGVyYXRvciBk
ZWxldGUgKHZvaWQgKikgdGhyb3coKTsKdm9pZCBvcGVyYXRvciBkZWxldGVbXSAodm9pZCAqKSB0
aHJvdygpOwp2b2lkICpvcGVyYXRvciBuZXcgKHNpemVfdCwgY29uc3Qgc3RkOjpub3Rocm93X3Qm
KSB0aHJvdygpOwp2b2lkICpvcGVyYXRvciBuZXdbXSAoc2l6ZV90LCBjb25zdCBzdGQ6Om5vdGhy
b3dfdCYpIHRocm93KCk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlICh2b2lkICosIGNvbnN0IHN0ZDo6
bm90aHJvd190JikgdGhyb3coKTsKdm9pZCBvcGVyYXRvciBkZWxldGVbXSAodm9pZCAqLCBjb25z
dCBzdGQ6Om5vdGhyb3dfdCYpIHRocm93KCk7CgogCmlubGluZSB2b2lkICpvcGVyYXRvciBuZXco
c2l6ZV90LCB2b2lkICpwbGFjZSkgdGhyb3coKSB7IHJldHVybiBwbGFjZTsgfQppbmxpbmUgdm9p
ZCAqb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkICpwbGFjZSkgdGhyb3coKSB7IHJldHVybiBw
bGFjZTsgfQp9ICAKCgojIDYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy
aXMyLjgvMi45NS4zL2luY2x1ZGUvbmV3LmgiIDIgMyA0CgoKdXNpbmcgc3RkOjpuZXdfaGFuZGxl
cjsKdXNpbmcgc3RkOjpzZXRfbmV3X2hhbmRsZXI7CgoKIyA1MiAiL3Vzci9sb2NhbC9saWIvZ2Nj
LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKyst
My9zdGxfYWxnb2Jhc2UuaCIgMiAzCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMt
c3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvaW9zdHJlYW0u
aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNwcmFnbWEgaW50ZXJmYWNlCgoKCiMg
MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4v
Li4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJlYW1idWYuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgojcHJhZ21hIGludGVyZmFjZQoKCiAgIAoKCgpleHRlcm4gIkMiIHsKIyAxICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8u
Li8uLi9pbmNsdWRlL2crKy0zL2xpYmlvLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNTUgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMt
c3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvbGliaW8uaCIg
MwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgojIDEwNCAiL3Vzci9sb2Nh
bC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5j
bHVkZS9nKystMy9saWJpby5oIiAzCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKc3RydWN0IF9JT19qdW1wX3Q7ICBzdHJ1Y3QgX0lPX0ZJ
TEU7CgogCiMgMTc1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44
LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2xpYmlvLmgiIDMKCgoKCgoKCgoKICAg
IHR5cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgoKCiAKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBz
dHJ1Y3QgX0lPX21hcmtlciAqX25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKICAgCgog
ICAKICBpbnQgX3BvczsKIyAyMDggIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvbGliaW8uaCIgMwoKfTsK
CnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsJCSAKCgogICAKICAgCiAgY2hhciogX0lP
X3JlYWRfcHRyOwkgCiAgY2hhciogX0lPX3JlYWRfZW5kOwkgCiAgY2hhciogX0lPX3JlYWRfYmFz
ZTsJIAogIGNoYXIqIF9JT193cml0ZV9iYXNlOwkgCiAgY2hhciogX0lPX3dyaXRlX3B0cjsJIAog
IGNoYXIqIF9JT193cml0ZV9lbmQ7CSAKICBjaGFyKiBfSU9fYnVmX2Jhc2U7CSAKICBjaGFyKiBf
SU9fYnVmX2VuZDsJIAogICAKICBjaGFyICpfSU9fc2F2ZV9iYXNlOyAgCiAgY2hhciAqX0lPX2Jh
Y2t1cF9iYXNlOyAgIAogIGNoYXIgKl9JT19zYXZlX2VuZDsgIAoKICBzdHJ1Y3QgX0lPX21hcmtl
ciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2ZpbGVubzsK
ICBpbnQgX2Jsa3NpemU7CgoKCiAgX0dfb2ZmX3QgIF9vZmZzZXQ7CgoKCiAgIAogIHVuc2lnbmVk
IHNob3J0IF9jdXJfY29sdW1uOwogIGNoYXIgX3VudXNlZDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsK
CiAgIAoKCgoKCgoKCn07CgoKCgoKCgoKCgoKc3RydWN0IF9JT19GSUxFX3BsdXM7CmV4dGVybiBz
dHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fc3RkaW5fLCBfSU9fc3Rkb3V0XywgX0lPX3N0ZGVycl87
CgoKCgoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgX0dfc3NpemVfdCAgKCpyZWFkKSAgKHN0cnVjdCBf
SU9fRklMRSAqLCB2b2lkICosIF9HX3NzaXplX3QgKSAgOwogIF9HX3NzaXplX3QgICgqd3JpdGUp
ICAoc3RydWN0IF9JT19GSUxFICosIGNvbnN0IHZvaWQgKiwgX0dfc3NpemVfdCApICA7CiAgX0df
b2ZmX3QgICgqc2VlaykgIChzdHJ1Y3QgX0lPX0ZJTEUgKiwgX0dfb2ZmX3QgLCBpbnQpICA7CiAg
aW50ICgqY2xvc2UpICAoc3RydWN0IF9JT19GSUxFICopICA7Cn0gX0lPX2Nvb2tpZV9pb19mdW5j
dGlvbnNfdDsKCiAKc3RydWN0IF9JT19jb29raWVfZmlsZQp7CiAgc3RydWN0IF9JT19GSUxFIGZp
bGU7CiAgY29uc3Qgdm9pZCAqdnRhYmxlOwogIHZvaWQgKmNvb2tpZTsKICBfSU9fY29va2llX2lv
X2Z1bmN0aW9uc190IGlvX2Z1bmN0aW9uczsKfTsKCgoKZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIGlu
dCBfX3VuZGVyZmxvdyAgKF9JT19GSUxFICopICA7CmV4dGVybiBpbnQgX191ZmxvdyAgKF9JT19G
SUxFICopICA7CmV4dGVybiBpbnQgX19vdmVyZmxvdyAgKF9JT19GSUxFICosIGludCkgIDsKCgoK
CgoKCgoKCgoKCgoKCgpleHRlcm4gaW50IF9JT19nZXRjICAoX0lPX0ZJTEUgKl9fZnApICA7CmV4
dGVybiBpbnQgX0lPX3B1dGMgIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgIDsKZXh0ZXJuIGlu
dCBfSU9fZmVvZiAgKF9JT19GSUxFICpfX2ZwKSAgOwpleHRlcm4gaW50IF9JT19mZXJyb3IgIChf
SU9fRklMRSAqX19mcCkgIDsKCmV4dGVybiBpbnQgX0lPX3BlZWtjX2xvY2tlZCAgKF9JT19GSUxF
ICpfX2ZwKSAgOwoKIAoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlICAoX0lPX0ZJTEUgKikg
IDsKZXh0ZXJuIHZvaWQgX0lPX2Z1bmxvY2tmaWxlICAoX0lPX0ZJTEUgKikgIDsKZXh0ZXJuIGlu
dCBfSU9fZnRyeWxvY2tmaWxlICAoX0lPX0ZJTEUgKikgIDsKCgoKCgoKCgoKCgoKCmV4dGVybiBp
bnQgX0lPX3Zmc2NhbmYgIChfSU9fRklMRSAqLCBjb25zdCBjaGFyICosIF9HX3ZhX2xpc3QgLCBp
bnQgKikgIDsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgIChfSU9fRklMRSAqLCBjb25zdCBjaGFy
ICosIF9HX3ZhX2xpc3QgKSAgOwpleHRlcm4gX0dfc3NpemVfdCAgX0lPX3BhZG4gIChfSU9fRklM
RSAqLCBpbnQsIF9HX3NzaXplX3QgKSAgOwpleHRlcm4gX0dfc2l6ZV90ICBfSU9fc2dldG4gIChf
SU9fRklMRSAqLCB2b2lkICosIF9HX3NpemVfdCApICA7CgoKCgoKZXh0ZXJuIF9HX29mZl90ICBf
SU9fc2Vla29mZiAgKF9JT19GSUxFICosIF9HX29mZl90ICwgaW50LCBpbnQpICA7CmV4dGVybiBf
R19vZmZfdCAgX0lPX3NlZWtwb3MgIChfSU9fRklMRSAqLCBfR19vZmZfdCAsIGludCkgIDsKCgpl
eHRlcm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAgKF9JT19GSUxFICopICA7CgoKfQoKCgoj
IDM2ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8u
Li8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAyIDMKCn0KIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQysrIiB7CmNsYXNzIGlzdHJlYW07ICAKY2xhc3Mgb3N0
cmVhbTsgY2xhc3Mgc3RyZWFtYnVmOwoKIAoKCgoKCgoKdHlwZWRlZiBfR19vZmZfdCAgc3RyZWFt
b2ZmOwp0eXBlZGVmIF9HX29mZl90ICBzdHJlYW1wb3M7Cgp0eXBlZGVmIF9HX3NzaXplX3QgIHN0
cmVhbXNpemU7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX19mbXRmbGFnczsKdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIF9faW9zdGF0ZTsKCnN0cnVjdCBfaW9zX2ZpZWxkcwp7ICAKICAgIHN0cmVhbWJ1
ZiAqX3N0cmJ1ZjsKICAgIG9zdHJlYW0qIF90aWU7CiAgICBpbnQgX3dpZHRoOwogICAgX19mbXRm
bGFncyBfZmxhZ3M7CiAgICBzaG9ydCAgX2ZpbGw7CiAgICBfX2lvc3RhdGUgX3N0YXRlOwogICAg
X19pb3N0YXRlIF9leGNlcHRpb25zOwogICAgaW50IF9wcmVjaXNpb247CgogICAgdm9pZCAqX2Fy
cmF5czsgIAp9OwoKCgoKCgoKCgoKCgoKCgojIDEyNCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9z
cGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJl
YW1idWYuaCIgMwoKCmNsYXNzIGlvcyA6IHB1YmxpYyBfaW9zX2ZpZWxkcyB7CiAgaW9zJiBvcGVy
YXRvcj0oaW9zJik7ICAgCiAgaW9zIChjb25zdCBpb3MmKTsgIAogIHB1YmxpYzoKICAgIHR5cGVk
ZWYgX19mbXRmbGFncyBmbXRmbGFnczsKICAgIHR5cGVkZWYgaW50IGlvc3RhdGU7CiAgICB0eXBl
ZGVmIGludCBvcGVubW9kZTsKICAgIHR5cGVkZWYgX0dfc3NpemVfdCAgc3RyZWFtc2l6ZTsKICAg
IGVudW0gaW9fc3RhdGUgewoJZ29vZGJpdCA9IDAgLAoJZW9mYml0ID0gMSAsCglmYWlsYml0ID0g
MiAsCgliYWRiaXQgPSA0ICB9OwogICAgZW51bSBvcGVuX21vZGUgewoJaW4gPSAxICwKCW91dCA9
IDIgLAoJYXRlID0gNCAsCglhcHAgPSA4ICwKCXRydW5jID0gMTYgLAoJbm9jcmVhdGUgPSAzMiAs
Cglub3JlcGxhY2UgPSA2NCAsCgliaW4gPSAxMjggLCAgCgliaW5hcnkgPSAxMjggIH07CiAgICBl
bnVtIHNlZWtfZGlyIHsgYmVnLCBjdXIsIGVuZH07CiAgICB0eXBlZGVmIGVudW0gc2Vla19kaXIg
c2Vla2RpcjsKICAgICAKICAgIGVudW0geyBza2lwd3M9IDAxICwKCSAgIGxlZnQ9IDAyICwgcmln
aHQ9IDA0ICwgaW50ZXJuYWw9IDAxMCAsCgkgICBkZWM9IDAyMCAsIG9jdD0gMDQwICwgaGV4PSAw
MTAwICwKCSAgIHNob3diYXNlPSAwMjAwICwgc2hvd3BvaW50PSAwNDAwICwKCSAgIHVwcGVyY2Fz
ZT0gMDEwMDAgLCBzaG93cG9zPSAwMjAwMCAsCgkgICBzY2llbnRpZmljPSAwNDAwMCAsIGZpeGVk
PSAwMTAwMDAgLAoJICAgdW5pdGJ1Zj0gMDIwMDAwICwgc3RkaW89IDA0MDAwMCAKCgoKCSAgIH07
CiAgICBlbnVtIHsgIAoJYmFzZWZpZWxkPWRlYytvY3QraGV4LAoJZmxvYXRmaWVsZCA9IHNjaWVu
dGlmaWMrZml4ZWQsCglhZGp1c3RmaWVsZCA9IGxlZnQrcmlnaHQraW50ZXJuYWwKICAgIH07Cgoj
IDE3NyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMv
Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJlYW1idWYuaCIgMwoKCiAgICBvc3RyZWFtKiB0
aWUoKSBjb25zdCB7IHJldHVybiBfdGllOyB9CiAgICBvc3RyZWFtKiB0aWUob3N0cmVhbSogdmFs
KSB7IG9zdHJlYW0qIHNhdmU9X3RpZTsgX3RpZT12YWw7IHJldHVybiBzYXZlOyB9CgogICAgIAog
ICAgc2hvcnQgIGZpbGwoKSBjb25zdCB7IHJldHVybiBfZmlsbDsgfQogICAgc2hvcnQgIGZpbGwo
c2hvcnQgIG5ld2YpCgl7c2hvcnQgIG9sZGYgPSBfZmlsbDsgX2ZpbGwgPSBuZXdmOyByZXR1cm4g
b2xkZjt9CiAgICBmbXRmbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIF9mbGFnczsgfQogICAg
Zm10ZmxhZ3MgZmxhZ3MoZm10ZmxhZ3MgbmV3X3ZhbCkgewoJZm10ZmxhZ3Mgb2xkX3ZhbCA9IF9m
bGFnczsgX2ZsYWdzID0gbmV3X3ZhbDsgcmV0dXJuIG9sZF92YWw7IH0KICAgIGludCBwcmVjaXNp
b24oKSBjb25zdCB7IHJldHVybiBfcHJlY2lzaW9uOyB9CiAgICBpbnQgcHJlY2lzaW9uKGludCBu
ZXdwKSB7Cgl1bnNpZ25lZCBzaG9ydCBvbGRwID0gX3ByZWNpc2lvbjsgX3ByZWNpc2lvbiA9ICh1
bnNpZ25lZCBzaG9ydCluZXdwOwoJcmV0dXJuIG9sZHA7IH0KICAgIGZtdGZsYWdzIHNldGYoZm10
ZmxhZ3MgdmFsKSB7CglmbXRmbGFncyBvbGRiaXRzID0gX2ZsYWdzOwoJX2ZsYWdzIHw9IHZhbDsg
cmV0dXJuIG9sZGJpdHM7IH0KICAgIGZtdGZsYWdzIHNldGYoZm10ZmxhZ3MgdmFsLCBmbXRmbGFn
cyBtYXNrKSB7CglmbXRmbGFncyBvbGRiaXRzID0gX2ZsYWdzOwoJX2ZsYWdzID0gKF9mbGFncyAm
IH5tYXNrKSB8ICh2YWwgJiBtYXNrKTsgcmV0dXJuIG9sZGJpdHM7IH0KICAgIGZtdGZsYWdzIHVu
c2V0ZihmbXRmbGFncyBtYXNrKSB7CglmbXRmbGFncyBvbGRiaXRzID0gX2ZsYWdzOwoJX2ZsYWdz
ICY9IH5tYXNrOyByZXR1cm4gb2xkYml0czsgfQogICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1
cm4gX3dpZHRoOyB9CiAgICBpbnQgd2lkdGgoaW50IHZhbCkgeyBpbnQgc2F2ZSA9IF93aWR0aDsg
X3dpZHRoID0gdmFsOyByZXR1cm4gc2F2ZTsgfQoKCgoKICAgIHZvaWQgX3Rocm93X2ZhaWx1cmUo
KSBjb25zdCB7IH0KCiAgICB2b2lkIGNsZWFyKGlvc3RhdGUgc3RhdGUgPSAwKSB7Cglfc3RhdGUg
PSBfc3RyYnVmID8gc3RhdGUgOiBzdGF0ZXxiYWRiaXQ7CglpZiAoX3N0YXRlICYgX2V4Y2VwdGlv
bnMpIF90aHJvd19mYWlsdXJlKCk7IH0KICAgIHZvaWQgc2V0KGlvc3RhdGUgZmxhZykgeyBfc3Rh
dGUgfD0gZmxhZzsKCWlmIChfc3RhdGUgJiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsg
fQogICAgdm9pZCBzZXRzdGF0ZShpb3N0YXRlIGZsYWcpIHsgX3N0YXRlIHw9IGZsYWc7ICAKCWlm
IChfc3RhdGUgJiBfZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQogICAgaW50IGdvb2Qo
KSBjb25zdCB7IHJldHVybiBfc3RhdGUgPT0gMDsgfQogICAgaW50IGVvZigpIGNvbnN0IHsgcmV0
dXJuIF9zdGF0ZSAmIGlvczo6ZW9mYml0OyB9CiAgICBpbnQgZmFpbCgpIGNvbnN0IHsgcmV0dXJu
IF9zdGF0ZSAmIChpb3M6OmJhZGJpdHxpb3M6OmZhaWxiaXQpOyB9CiAgICBpbnQgYmFkKCkgY29u
c3QgeyByZXR1cm4gX3N0YXRlICYgaW9zOjpiYWRiaXQ7IH0KICAgIGlvc3RhdGUgcmRzdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIF9zdGF0ZTsgfQogICAgb3BlcmF0b3Igdm9pZCooKSBjb25zdCB7IHJl
dHVybiBmYWlsKCkgPyAodm9pZCopMCA6ICh2b2lkKikoLTEpOyB9CiAgICBpbnQgb3BlcmF0b3Ih
KCkgY29uc3QgeyByZXR1cm4gZmFpbCgpOyB9CiAgICBpb3N0YXRlIGV4Y2VwdGlvbnMoKSBjb25z
dCB7IHJldHVybiBfZXhjZXB0aW9uczsgfQogICAgdm9pZCBleGNlcHRpb25zKGlvc3RhdGUgZW5h
YmxlKSB7CglfZXhjZXB0aW9ucyA9IGVuYWJsZTsKCWlmIChfc3RhdGUgJiBfZXhjZXB0aW9ucykg
X3Rocm93X2ZhaWx1cmUoKTsgfQoKICAgIHN0cmVhbWJ1ZiogcmRidWYoKSBjb25zdCB7IHJldHVy
biBfc3RyYnVmOyB9CiAgICBzdHJlYW1idWYqIHJkYnVmKHN0cmVhbWJ1ZiAqX3MpIHsKICAgICAg
c3RyZWFtYnVmICpfb2xkID0gX3N0cmJ1ZjsgX3N0cmJ1ZiA9IF9zOyBjbGVhciAoKTsgcmV0dXJu
IF9vbGQ7IH0KCiAgICBzdGF0aWMgaW50IHN5bmNfd2l0aF9zdGRpbyhpbnQgb24pOwogICAgc3Rh
dGljIHZvaWQgc3luY193aXRoX3N0ZGlvKCkgeyBzeW5jX3dpdGhfc3RkaW8oMSk7IH0KICAgIHN0
YXRpYyBmbXRmbGFncyBiaXRhbGxvYygpOwogICAgc3RhdGljIGludCB4YWxsb2MoKTsKICAgIHZv
aWQqJiBwd29yZChpbnQpOwogICAgdm9pZCogcHdvcmQoaW50KSBjb25zdDsKICAgIGxvbmcmIGl3
b3JkKGludCk7CiAgICBsb25nIGl3b3JkKGludCkgY29uc3Q7CgoKCgoKCgoKCiAgICAgCiAgICBj
bGFzcyBJbml0IHsKICAgIHB1YmxpYzoKICAgICAgSW5pdCAoKSB7IH0KICAgIH07CgogIHByb3Rl
Y3RlZDoKICAgIGlubGluZSBpb3Moc3RyZWFtYnVmKiBzYiA9IDAsIG9zdHJlYW0qIHRpZV90byA9
IDApOwogICAgaW5saW5lIHZpcnR1YWwgfmlvcygpOwogICAgaW5saW5lIHZvaWQgaW5pdChzdHJl
YW1idWYqIHNiLCBvc3RyZWFtKiB0aWUgPSAwKTsKfTsKCgoKCnR5cGVkZWYgaW9zOjpzZWVrX2Rp
ciBfc2Vla19kaXI7CgoKIAogCiAKIAogCgogCiAKY2xhc3Mgc3RyZWFtbWFya2VyIDogcHJpdmF0
ZSBfSU9fbWFya2VyIHsKICAgIGZyaWVuZCBjbGFzcyBzdHJlYW1idWY7CiAgICB2b2lkIHNldF9v
ZmZzZXQoaW50IG9mZnNldCkgeyBfcG9zID0gb2Zmc2V0OyB9CiAgcHVibGljOgogICAgc3RyZWFt
bWFya2VyKHN0cmVhbWJ1ZiAqc2IpOwogICAgfnN0cmVhbW1hcmtlcigpOwogICAgaW50IHNhdmlu
ZygpIHsgcmV0dXJuICAxOyB9CiAgICBpbnQgZGVsdGEoc3RyZWFtbWFya2VyJik7CiAgICBpbnQg
ZGVsdGEoKTsKfTsKCnN0cnVjdCBzdHJlYW1idWYgOiBwdWJsaWMgX0lPX0ZJTEUgeyAgCiAgICBm
cmllbmQgY2xhc3MgaW9zOwogICAgZnJpZW5kIGNsYXNzIGlzdHJlYW07CiAgICBmcmllbmQgY2xh
c3Mgb3N0cmVhbTsKICAgIGZyaWVuZCBjbGFzcyBzdHJlYW1tYXJrZXI7CiAgICBjb25zdCB2b2lk
IComX3Z0YWJsZSgpIHsgcmV0dXJuICooY29uc3Qgdm9pZCoqKSgoX0lPX0ZJTEUqKXRoaXMgKyAx
KTsgfQogIHByb3RlY3RlZDoKICAgIHN0YXRpYyBzdHJlYW1idWYqIF9saXN0X2FsbDsgIAogICAg
X0lPX0ZJTEUqJiB4Y2hhaW4oKSB7IHJldHVybiBfY2hhaW47IH0KICAgIHZvaWQgX3VuX2xpbmso
KTsKICAgIHZvaWQgX2xpbmtfaW4oKTsKICAgIGNoYXIqIGdwdHIoKSBjb25zdAogICAgICB7IHJl
dHVybiBfZmxhZ3MgICYgMHgxMDAgID8gX0lPX3NhdmVfYmFzZSA6IF9JT19yZWFkX3B0cjsgfQog
ICAgY2hhciogcHB0cigpIGNvbnN0IHsgcmV0dXJuIF9JT193cml0ZV9wdHI7IH0KICAgIGNoYXIq
IGVncHRyKCkgY29uc3QKICAgICAgeyByZXR1cm4gX2ZsYWdzICAmIDB4MTAwICA/IF9JT19zYXZl
X2VuZCA6IF9JT19yZWFkX2VuZDsgfQogICAgY2hhciogZXBwdHIoKSBjb25zdCB7IHJldHVybiBf
SU9fd3JpdGVfZW5kOyB9CiAgICBjaGFyKiBwYmFzZSgpIGNvbnN0IHsgcmV0dXJuIF9JT193cml0
ZV9iYXNlOyB9CiAgICBjaGFyKiBlYmFjaygpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9mbGFncyAg
JiAweDEwMCAgPyBfSU9fc2F2ZV9iYXNlIDogX0lPX3JlYWRfYmFzZTt9CiAgICBjaGFyKiBiYXNl
KCkgY29uc3QgeyByZXR1cm4gX0lPX2J1Zl9iYXNlOyB9CiAgICBjaGFyKiBlYnVmKCkgY29uc3Qg
eyByZXR1cm4gX0lPX2J1Zl9lbmQ7IH0KICAgIGludCBibGVuKCkgY29uc3QgeyByZXR1cm4gX0lP
X2J1Zl9lbmQgLSBfSU9fYnVmX2Jhc2U7IH0KICAgIHZvaWQgeHB1dF9jaGFyKGNoYXIgYykgeyAq
X0lPX3dyaXRlX3B0cisrID0gYzsgfQogICAgaW50IHhmbGFncygpIHsgcmV0dXJuIF9mbGFncyA7
IH0KICAgIGludCB4ZmxhZ3MoaW50IGYpIHtpbnQgZmwgPSBfZmxhZ3MgOyBfZmxhZ3MgID0gZjsg
cmV0dXJuIGZsO30KICAgIHZvaWQgeHNldGZsYWdzKGludCBmKSB7IF9mbGFncyAgfD0gZjsgfQog
ICAgdm9pZCB4c2V0ZmxhZ3MoaW50IGYsIGludCBtYXNrKQogICAgICB7IF9mbGFncyAgPSAoX2Zs
YWdzICAmIH5tYXNrKSB8IChmICYgbWFzayk7IH0KICAgIHZvaWQgZ2J1bXAoaW50IG4pCiAgICAg
IHsgX2ZsYWdzICAmIDB4MTAwICA/IChfSU9fc2F2ZV9iYXNlKz1uKTooX0lPX3JlYWRfcHRyKz1u
KTt9CiAgICB2b2lkIHBidW1wKGludCBuKSB7IF9JT193cml0ZV9wdHIgKz0gbjsgfQogICAgdm9p
ZCBzZXRiKGNoYXIqIGIsIGNoYXIqIGViLCBpbnQgYT0wKTsKICAgIHZvaWQgc2V0cChjaGFyKiBw
LCBjaGFyKiBlcCkKICAgICAgeyBfSU9fd3JpdGVfYmFzZT1fSU9fd3JpdGVfcHRyPXA7IF9JT193
cml0ZV9lbmQ9ZXA7IH0KICAgIHZvaWQgc2V0ZyhjaGFyKiBlYiwgY2hhciogZywgY2hhciAqZWcp
IHsKICAgICAgaWYgKF9mbGFncyAgJiAweDEwMCApIF9JT19mcmVlX2JhY2t1cF9hcmVhKHRoaXMp
OyAKICAgICAgX0lPX3JlYWRfYmFzZSA9IGViOyBfSU9fcmVhZF9wdHIgPSBnOyBfSU9fcmVhZF9l
bmQgPSBlZzsgfQogICAgY2hhciAqc2hvcnRidWYoKSB7IHJldHVybiBfc2hvcnRidWY7IH0KCiAg
ICBpbnQgaW5fYmFja3VwKCkgeyByZXR1cm4gX2ZsYWdzICYgMHgxMDAgOyB9CiAgICAgCiAgICBj
aGFyICpHYmFzZSgpIHsgcmV0dXJuIGluX2JhY2t1cCgpID8gX0lPX3NhdmVfYmFzZSA6IF9JT19y
ZWFkX2Jhc2U7IH0KICAgICAKICAgIGNoYXIgKmVHcHRyKCkgeyByZXR1cm4gaW5fYmFja3VwKCkg
PyBfSU9fc2F2ZV9lbmQgOiBfSU9fcmVhZF9lbmQ7IH0KICAgICAKICAgIGNoYXIgKkJiYXNlKCkg
eyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fcmVhZF9iYXNlIDogX0lPX3NhdmVfYmFzZTsgfQog
ICAgY2hhciAqQnB0cigpIHsgcmV0dXJuIF9JT19iYWNrdXBfYmFzZTsgfQogICAgIAogICAgY2hh
ciAqZUJwdHIoKSB7IHJldHVybiBpbl9iYWNrdXAoKSA/IF9JT19yZWFkX2VuZCA6IF9JT19zYXZl
X2VuZDsgfQogICAgY2hhciAqTmJhc2UoKSB7IHJldHVybiBfSU9fc2F2ZV9iYXNlOyB9CiAgICBj
aGFyICplTnB0cigpIHsgcmV0dXJuIF9JT19zYXZlX2VuZDsgfQogICAgaW50IGhhdmVfYmFja3Vw
KCkgeyByZXR1cm4gX0lPX3NhdmVfYmFzZSAhPSBfX251bGwgOyB9CiAgICBpbnQgaGF2ZV9tYXJr
ZXJzKCkgeyByZXR1cm4gX21hcmtlcnMgIT0gX19udWxsIDsgfQogICAgdm9pZCBmcmVlX2JhY2t1
cF9hcmVhKCk7CiAgICB2b2lkIHVuc2F2ZV9tYXJrZXJzKCk7ICAKICAgIGludCBwdXRfbW9kZSgp
IHsgcmV0dXJuIF9mbGFncyAmIDB4ODAwIDsgfQogICAgaW50IHN3aXRjaF90b19nZXRfbW9kZSgp
OwogICAgCiAgICBzdHJlYW1idWYoaW50IGZsYWdzPTApOwogIHB1YmxpYzoKICAgIHN0YXRpYyBp
bnQgZmx1c2hfYWxsKCk7CiAgICBzdGF0aWMgdm9pZCBmbHVzaF9hbGxfbGluZWJ1ZmZlcmVkKCk7
ICAKICAgIHZpcnR1YWwgfnN0cmVhbWJ1ZigpOwogICAgdmlydHVhbCBpbnQgb3ZlcmZsb3coaW50
IGMgPSAoLTEpICk7ICAKICAgIHZpcnR1YWwgaW50IHVuZGVyZmxvdygpOyAgCiAgICB2aXJ0dWFs
IGludCB1ZmxvdygpOyAgCiAgICB2aXJ0dWFsIGludCBwYmFja2ZhaWwoaW50IGMpOwogCiAgICB2
aXJ0dWFsIHN0cmVhbXNpemUgeHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAg
ICB2aXJ0dWFsIHN0cmVhbXNpemUgeHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAgICB2
aXJ0dWFsIHN0cmVhbXBvcyBzZWVrb2ZmKHN0cmVhbW9mZiwgX3NlZWtfZGlyLCBpbnQgbW9kZT1p
b3M6OmlufGlvczo6b3V0KTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNlZWtwb3Moc3RyZWFtcG9z
IHBvcywgaW50IG1vZGUgPSBpb3M6OmlufGlvczo6b3V0KTsKCiAgICBzdHJlYW1wb3MgcHVic2Vl
a29mZihzdHJlYW1vZmYgbywgX3NlZWtfZGlyIGQsIGludCBtb2RlPWlvczo6aW58aW9zOjpvdXQp
CiAgICAgIHsgcmV0dXJuIF9JT19zZWVrb2ZmICh0aGlzLCBvLCBkLCBtb2RlKTsgfQogICAgc3Ry
ZWFtcG9zIHB1YnNlZWtwb3Moc3RyZWFtcG9zIHBvcywgaW50IG1vZGUgPSBpb3M6OmlufGlvczo6
b3V0KQogICAgICB7IHJldHVybiBfSU9fc2Vla3BvcyAodGhpcywgcG9zLCBtb2RlKTsgfQogICAg
c3RyZWFtcG9zIHNzZWVrb2ZmKHN0cmVhbW9mZiwgX3NlZWtfZGlyLCBpbnQgbW9kZT1pb3M6Omlu
fGlvczo6b3V0KTsKICAgIHN0cmVhbXBvcyBzc2Vla3BvcyhzdHJlYW1wb3MgcG9zLCBpbnQgbW9k
ZSA9IGlvczo6aW58aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1idWYqIHNldGJ1ZihjaGFy
KiBwLCBpbnQgbGVuKTsKICAgIHZpcnR1YWwgaW50IHN5bmMoKTsKICAgIHZpcnR1YWwgaW50IGRv
YWxsb2NhdGUoKTsKCiAgICBpbnQgc2Vla21hcmsoc3RyZWFtbWFya2VyJiBtYXJrLCBpbnQgZGVs
dGEgPSAwKTsKICAgIGludCBzcHV0YmFja2MoY2hhciBjKTsKICAgIGludCBzdW5nZXRjKCk7CiAg
ICBpbnQgdW5idWZmZXJlZCgpIHsgcmV0dXJuIF9mbGFncyAmIDIgID8gMSA6IDA7IH0KICAgIGlu
dCBsaW5lYnVmZmVyZWQoKSB7IHJldHVybiBfZmxhZ3MgJiAweDIwMCAgPyAxIDogMDsgfQogICAg
dm9pZCB1bmJ1ZmZlcmVkKGludCBpKQoJeyBpZiAoaSkgX2ZsYWdzIHw9IDIgOyBlbHNlIF9mbGFn
cyAmPSB+MiA7IH0KICAgIHZvaWQgbGluZWJ1ZmZlcmVkKGludCBpKQoJeyBpZiAoaSkgX2ZsYWdz
IHw9IDB4MjAwIDsgZWxzZSBfZmxhZ3MgJj0gfjB4MjAwIDsgfQogICAgaW50IGFsbG9jYXRlKCkg
eyAgCglpZiAoYmFzZSgpIHx8IHVuYnVmZmVyZWQoKSkgcmV0dXJuIDA7CgllbHNlIHJldHVybiBk
b2FsbG9jYXRlKCk7IH0KICAgICAKICAgIHZvaWQgYWxsb2NidWYoKSB7IGlmIChiYXNlKCkgPT0g
X19udWxsICkgZG9hbGxvY2J1ZigpOyB9CiAgICB2b2lkIGRvYWxsb2NidWYoKTsKICAgIGludCBp
bl9hdmFpbCgpIHsgcmV0dXJuIF9JT19yZWFkX2VuZCAtIF9JT19yZWFkX3B0cjsgfQogICAgaW50
IG91dF93YWl0aW5nKCkgeyByZXR1cm4gX0lPX3dyaXRlX3B0ciAtIF9JT193cml0ZV9iYXNlOyB9
CiAgICBzdHJlYW1zaXplIHNwdXRuKGNvbnN0IGNoYXIqIHMsIHN0cmVhbXNpemUgbikgeyByZXR1
cm4geHNwdXRuKHMsIG4pOyB9CiAgICBzdHJlYW1zaXplIHBhZG4oY2hhciBwYWQsIHN0cmVhbXNp
emUgbikgeyByZXR1cm4gX0lPX3BhZG4odGhpcywgcGFkLCBuKTsgfQogICAgc3RyZWFtc2l6ZSBz
Z2V0bihjaGFyKiBzLCBzdHJlYW1zaXplIG4pIHsgcmV0dXJuIF9JT19zZ2V0bih0aGlzLCBzLCBu
KTsgfQogICAgaW50IGlnbm9yZShpbnQpOwogICAgaW50IGdldF9jb2x1bW4oKTsKICAgIGludCBz
ZXRfY29sdW1uKGludCk7CiAgICBsb25nIHNnZXRsaW5lKGNoYXIqIGJ1ZiwgX0dfc2l6ZV90ICBu
LCBjaGFyIGRlbGltLCBpbnQgcHV0YmFja19kZWxpbSk7CiAgICBpbnQgc3B1dGMoaW50IGMpIHsg
cmV0dXJuIF9JT19wdXRjKGMsIHRoaXMpOyB9CiAgICBpbnQgc2J1bXBjKCkgeyByZXR1cm4gX0lP
X2dldGModGhpcyk7IH0KICAgIGludCBzZ2V0YygpIHsgcmV0dXJuICgoICB0aGlzICApLT5fSU9f
cmVhZF9wdHIgPj0gKCAgdGhpcyAgKS0+X0lPX3JlYWRfZW5kICYmIF9fdW5kZXJmbG93ICggIHRo
aXMgICkgPT0gKC0xKSAgPyAoLTEpICA6ICoodW5zaWduZWQgY2hhciAqKSAoICB0aGlzICApLT5f
SU9fcmVhZF9wdHIpICA7IH0KICAgIGludCBzbmV4dGMoKSB7CglpZiAoX0lPX3JlYWRfcHRyID49
IF9JT19yZWFkX2VuZCAmJiBfX3VuZGVyZmxvdyh0aGlzKSA9PSAoLTEpICkKCSAgcmV0dXJuICgt
MSkgOwoJZWxzZSByZXR1cm4gX0lPX3JlYWRfcHRyKyssIHNnZXRjKCk7IH0KICAgIHZvaWQgc3Rv
c3NjKCkgeyBpZiAoX0lPX3JlYWRfcHRyIDwgX0lPX3JlYWRfZW5kKSBfSU9fcmVhZF9wdHIrKzsg
fQogICAgaW50IHZzY2FuKGNoYXIgY29uc3QgKmZtdDAsIF9HX3ZhX2xpc3QgIGFwLCBpb3MqIHN0
cmVhbSA9IF9fbnVsbCApOwogICAgaW50IHNjYW4oY2hhciBjb25zdCAqZm10MCAuLi4pOwogICAg
aW50IHZmb3JtKGNoYXIgY29uc3QgKmZtdDAsIF9HX3ZhX2xpc3QgIGFwKTsKICAgIGludCBmb3Jt
KGNoYXIgY29uc3QgKmZtdDAgLi4uKTsKCgoKCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgc3lzX3Jl
YWQoY2hhciogYnVmLCBzdHJlYW1zaXplIHNpemUpOwogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5
c193cml0ZShjb25zdCBjaGFyKiwgc3RyZWFtc2l6ZSk7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBz
eXNfc2VlayhzdHJlYW1vZmYsIF9zZWVrX2Rpcik7CiAgICB2aXJ0dWFsIGludCBzeXNfY2xvc2Uo
KTsKICAgIHZpcnR1YWwgaW50IHN5c19zdGF0KHZvaWQqKTsgIAoKCgoKfTsKCiAKIAoKY2xhc3Mg
ZmlsZWJ1ZiA6IHB1YmxpYyBzdHJlYW1idWYgewogIHByb3RlY3RlZDoKICAgIHZvaWQgaW5pdCgp
OwogIHB1YmxpYzoKICAgIHN0YXRpYyBjb25zdCBpbnQgb3BlbnByb3Q7ICAKICAgIGZpbGVidWYo
KTsKICAgIGZpbGVidWYoaW50IGZkKTsKICAgIGZpbGVidWYoaW50IGZkLCBjaGFyKiBwLCBpbnQg
bGVuKTsKCgoKICAgIH5maWxlYnVmKCk7CiAgICBmaWxlYnVmKiBhdHRhY2goaW50IGZkKTsKICAg
IGZpbGVidWYqIG9wZW4oY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm1vZGUpOwog
ICAgZmlsZWJ1Ziogb3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSwgaW9zOjpvcGVubW9kZSBtb2Rl
LCBpbnQgcHJvdCA9IDA2NjQpOwogICAgdmlydHVhbCBpbnQgdW5kZXJmbG93KCk7CiAgICB2aXJ0
dWFsIGludCBvdmVyZmxvdyhpbnQgYyA9ICgtMSkgKTsKICAgIGludCBpc19vcGVuKCkgY29uc3Qg
eyByZXR1cm4gX2ZpbGVubyA+PSAwOyB9CiAgICBpbnQgZmQoKSBjb25zdCB7IHJldHVybiBpc19v
cGVuKCkgPyBfZmlsZW5vIDogKC0xKSA7IH0KICAgIGZpbGVidWYqIGNsb3NlKCk7CiAgICB2aXJ0
dWFsIGludCBkb2FsbG9jYXRlKCk7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzZWVrb2ZmKHN0cmVh
bW9mZiwgX3NlZWtfZGlyLCBpbnQgbW9kZT1pb3M6OmlufGlvczo6b3V0KTsKICAgIHZpcnR1YWwg
c3RyZWFtYnVmKiBzZXRidWYoY2hhciogcCwgaW50IGxlbik7CiAgICBzdHJlYW1zaXplIHhzcHV0
bihjb25zdCBjaGFyKiBzLCBzdHJlYW1zaXplIG4pOwogICAgc3RyZWFtc2l6ZSB4c2dldG4oY2hh
ciogcywgc3RyZWFtc2l6ZSBuKTsKICAgIHZpcnR1YWwgaW50IHN5bmMoKTsKICBwcm90ZWN0ZWQ6
ICAKIAogICAgaW50IGlzX3JlYWRpbmcoKSB7IHJldHVybiBlYmFjaygpICE9IGVncHRyKCk7IH0K
ICAgIGNoYXIqIGN1cl9wdHIoKSB7IHJldHVybiBpc19yZWFkaW5nKCkgPyAgZ3B0cigpIDogcHB0
cigpOyB9CiAgICAgCiAgICBjaGFyKiBmaWxlX3B0cigpIHsgcmV0dXJuIGVHcHRyKCk7IH0KICAg
ICAKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSBzeXNfcmVhZChjaGFyKiBidWYsIHN0cmVhbXNpemUg
c2l6ZSk7CiAgICB2aXJ0dWFsIHN0cmVhbXBvcyBzeXNfc2VlayhzdHJlYW1vZmYsIF9zZWVrX2Rp
cik7CiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgc3lzX3dyaXRlKGNvbnN0IGNoYXIqLCBzdHJlYW1z
aXplKTsKICAgIHZpcnR1YWwgaW50IHN5c19zdGF0KHZvaWQqKTsgIAogICAgdmlydHVhbCBpbnQg
c3lzX2Nsb3NlKCk7CgoKCgp9OwoKaW5saW5lIHZvaWQgaW9zOjppbml0KHN0cmVhbWJ1Ziogc2Is
IG9zdHJlYW0qIHRpZV90bykgewoJCV9zdGF0ZSA9IHNiID8gaW9zOjpnb29kYml0IDogaW9zOjpi
YWRiaXQ7IF9leGNlcHRpb25zPTA7CgkJX3N0cmJ1Zj1zYjsgX3RpZSA9IHRpZV90bzsgX3dpZHRo
PTA7IF9maWxsPScgJzsKCgkJX2ZsYWdzPWlvczo6c2tpcHdzfGlvczo6ZGVjOwoKCgoJCV9wcmVj
aXNpb249NjsgX2FycmF5cyA9IDA7IH0KCmlubGluZSBpb3M6OmlvcyhzdHJlYW1idWYqIHNiLCBv
c3RyZWFtKiB0aWVfdG8pIHsgaW5pdChzYiwgdGllX3RvKTsgfQoKaW5saW5lIGlvczo6fmlvcygp
IHsKCgoKICAgICAKICAgICAKICAgIG9wZXJhdG9yIGRlbGV0ZVtdIChfYXJyYXlzKTsKfQp9ICAK
CiMgMzEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4z
Ly4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvaW9zdHJlYW0uaCIgMiAzCgoKZXh0ZXJuICJDKysi
IHsKY2xhc3MgaXN0cmVhbTsgY2xhc3Mgb3N0cmVhbTsKdHlwZWRlZiBpb3MmICgqX19tYW5pcCko
aW9zJik7CnR5cGVkZWYgaXN0cmVhbSYgKCpfX2ltYW5pcCkoaXN0cmVhbSYpOwp0eXBlZGVmIG9z
dHJlYW0mICgqX19vbWFuaXApKG9zdHJlYW0mKTsKCmV4dGVybiBpc3RyZWFtJiB3cyhpc3RyZWFt
JiBpbnMpOwpleHRlcm4gb3N0cmVhbSYgZmx1c2gob3N0cmVhbSYgb3V0cyk7CmV4dGVybiBvc3Ry
ZWFtJiBlbmRsKG9zdHJlYW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYgZW5kcyhvc3RyZWFtJiBv
dXRzKTsKCmNsYXNzIG9zdHJlYW0gOiB2aXJ0dWFsIHB1YmxpYyBpb3MKewogICAgIAogICAgdm9p
ZCBkb19vc2Z4KCk7CiAgcHVibGljOgogICAgb3N0cmVhbSgpIHsgfQogICAgb3N0cmVhbShzdHJl
YW1idWYqIHNiLCBvc3RyZWFtKiB0aWVkPSBfX251bGwgKTsKICAgIGludCBvcGZ4KCkgewoJaWYg
KCFnb29kKCkpIHJldHVybiAwOwoJZWxzZSB7IGlmIChfdGllKSBfdGllLT5mbHVzaCgpOyAgOyBy
ZXR1cm4gMTt9IH0KICAgIHZvaWQgb3NmeCgpIHsgIDsKCQkgIGlmIChmbGFncygpICYgKGlvczo6
dW5pdGJ1Znxpb3M6OnN0ZGlvKSkKCQkgICAgICBkb19vc2Z4KCk7IH0KICAgIG9zdHJlYW0mIGZs
dXNoKCk7CiAgICBvc3RyZWFtJiBwdXQoY2hhciBjKSB7IF9zdHJidWYtPnNwdXRjKGMpOyByZXR1
cm4gKnRoaXM7IH0KCgoKCgogICAgb3N0cmVhbSYgd3JpdGUoY29uc3QgY2hhciAqcywgc3RyZWFt
c2l6ZSBuKTsKICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIHN0cmVh
bXNpemUgbikKICAgICAgeyByZXR1cm4gd3JpdGUoKGNvbnN0IGNoYXIqKXMsIG4pO30KICAgIG9z
dHJlYW0mIHdyaXRlKGNvbnN0IHNpZ25lZCBjaGFyICpzLCBzdHJlYW1zaXplIG4pCiAgICAgIHsg
cmV0dXJuIHdyaXRlKChjb25zdCBjaGFyKilzLCBuKTt9CiAgICBvc3RyZWFtJiB3cml0ZShjb25z
dCB2b2lkICpzLCBzdHJlYW1zaXplIG4pCiAgICAgIHsgcmV0dXJuIHdyaXRlKChjb25zdCBjaGFy
KilzLCBuKTt9CiAgICBvc3RyZWFtJiBzZWVrcChzdHJlYW1wb3MpOwogICAgb3N0cmVhbSYgc2Vl
a3Aoc3RyZWFtb2ZmLCBfc2Vla19kaXIpOwogICAgc3RyZWFtcG9zIHRlbGxwKCk7CiAgICBvc3Ry
ZWFtJiBmb3JtKGNvbnN0IGNoYXIgKmZvcm1hdCAuLi4pOwogICAgb3N0cmVhbSYgdmZvcm0oY29u
c3QgY2hhciAqZm9ybWF0LCBfR192YV9saXN0ICBhcmdzKTsKCiAgICBvc3RyZWFtJiBvcGVyYXRv
cjw8KGNoYXIgYyk7CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGNoYXIgYykgeyBy
ZXR1cm4gKCp0aGlzKSA8PCAoY2hhciljOyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KHNpZ25l
ZCBjaGFyIGMpIHsgcmV0dXJuICgqdGhpcykgPDwgKGNoYXIpYzsgfQogICAgb3N0cmVhbSYgb3Bl
cmF0b3I8PChjb25zdCBjaGFyICpzKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgdW5z
aWduZWQgY2hhciAqcykKCXsgcmV0dXJuICgqdGhpcykgPDwgKGNvbnN0IGNoYXIqKXM7IH0KICAg
IG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qgc2lnbmVkIGNoYXIgKnMpCgl7IHJldHVybiAoKnRo
aXMpIDw8IChjb25zdCBjaGFyKilzOyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IHZv
aWQgKnApOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChpbnQgbik7CiAgICBvc3RyZWFtJiBvcGVy
YXRvcjw8KHVuc2lnbmVkIGludCBuKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwobG9uZyBuKTsK
ICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgbG9uZyBuKTsKCiAgICBfX2V4dGVuc2lv
bl9fIG9zdHJlYW0mIG9wZXJhdG9yPDwobG9uZyBsb25nIG4pOwogICAgX19leHRlbnNpb25fXyBv
c3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkIGxvbmcgbG9uZyBuKTsKCiAgICBvc3RyZWFtJiBv
cGVyYXRvcjw8KHNob3J0IG4pIHtyZXR1cm4gb3BlcmF0b3I8PCgoaW50KW4pO30KICAgIG9zdHJl
YW0mIG9wZXJhdG9yPDwodW5zaWduZWQgc2hvcnQgbikge3JldHVybiBvcGVyYXRvcjw8KCh1bnNp
Z25lZCBpbnQpbik7fQoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoYm9vbCBiKSB7IHJldHVybiBv
cGVyYXRvcjw8KChpbnQpYik7IH0KCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGRvdWJsZSBuKTsK
ICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoZmxvYXQgbikgeyByZXR1cm4gb3BlcmF0b3I8PCgoZG91
YmxlKW4pOyB9CgoKCiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcgZG91YmxlIG4pIHsgcmV0
dXJuIG9wZXJhdG9yPDwoKGRvdWJsZSluKTsgfQoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoX19v
bWFuaXAgZnVuYykgeyByZXR1cm4gKCpmdW5jKSgqdGhpcyk7IH0KICAgIG9zdHJlYW0mIG9wZXJh
dG9yPDwoX19tYW5pcCBmdW5jKSB7KCpmdW5jKSgqdGhpcyk7IHJldHVybiAqdGhpczt9CiAgICBv
c3RyZWFtJiBvcGVyYXRvcjw8KHN0cmVhbWJ1ZiopOwoKCgp9OwoKY2xhc3MgaXN0cmVhbSA6IHZp
cnR1YWwgcHVibGljIGlvcwp7CiAgICAgCnByb3RlY3RlZDoKICAgIF9HX3NpemVfdCAgX2djb3Vu
dDsKCiAgICBpbnQgX3NraXBfd3MoKTsKICBwdWJsaWM6CiAgICBpc3RyZWFtKCk6IF9nY291bnQg
KDApIHsgfQogICAgaXN0cmVhbShzdHJlYW1idWYqIHNiLCBvc3RyZWFtKnRpZWQ9IF9fbnVsbCAp
OwogICAgaXN0cmVhbSYgZ2V0KGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicp
OwogICAgaXN0cmVhbSYgZ2V0KHVuc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxp
bSA9ICdcbicpCgl7IHJldHVybiBnZXQoKGNoYXIqKXB0ciwgbGVuLCBkZWxpbSk7IH0KICAgIGlz
dHJlYW0mIGdldChjaGFyJiBjKTsKICAgIGlzdHJlYW0mIGdldCh1bnNpZ25lZCBjaGFyJiBjKSB7
IHJldHVybiBnZXQoKGNoYXImKWMpOyB9CiAgICBpc3RyZWFtJiBnZXRsaW5lKGNoYXIqIHB0ciwg
aW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpOwogICAgaXN0cmVhbSYgZ2V0bGluZSh1bnNpZ25l
ZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0bGlu
ZSgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgZ2V0KHNpZ25lZCBjaGFy
JiBjKSAgeyByZXR1cm4gZ2V0KChjaGFyJiljKTsgfQogICAgaXN0cmVhbSYgZ2V0KHNpZ25lZCBj
aGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0KChjaGFy
KilwdHIsIGxlbiwgZGVsaW0pOyB9CiAgICBpc3RyZWFtJiBnZXRsaW5lKHNpZ25lZCBjaGFyKiBw
dHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0bGluZSgoY2hhciop
cHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgcmVhZChjaGFyICpwdHIsIHN0cmVhbXNp
emUgbik7CiAgICBpc3RyZWFtJiByZWFkKHVuc2lnbmVkIGNoYXIgKnB0ciwgc3RyZWFtc2l6ZSBu
KQogICAgICB7IHJldHVybiByZWFkKChjaGFyKilwdHIsIG4pOyB9CiAgICBpc3RyZWFtJiByZWFk
KHNpZ25lZCBjaGFyICpwdHIsIHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1cm4gcmVhZCgoY2hh
ciopcHRyLCBuKTsgfQogICAgaXN0cmVhbSYgcmVhZCh2b2lkICpwdHIsIHN0cmVhbXNpemUgbikK
ICAgICAgeyByZXR1cm4gcmVhZCgoY2hhciopcHRyLCBuKTsgfQogICAgaXN0cmVhbSYgZ2V0KHN0
cmVhbWJ1ZiYgc2IsIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGlzdHJlYW0mIGdldHMoY2hhciAq
KnMsIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGludCBpcGZ4KGludCBuZWVkID0gMCkgewoJaWYg
KCFnb29kKCkpIHsgc2V0KGlvczo6ZmFpbGJpdCk7IHJldHVybiAwOyB9CgllbHNlIHsKCSAgIDsK
CSAgaWYgKF90aWUgJiYgKG5lZWQgPT0gMCB8fCByZGJ1ZigpLT5pbl9hdmFpbCgpIDwgbmVlZCkp
IF90aWUtPmZsdXNoKCk7CgkgIGlmICghbmVlZCAmJiAoZmxhZ3MoKSAmIGlvczo6c2tpcHdzKSkg
cmV0dXJuIF9za2lwX3dzKCk7CgkgIGVsc2UgcmV0dXJuIDE7Cgl9CiAgICB9CiAgICBpbnQgaXBm
eDAoKSB7ICAKCWlmICghZ29vZCgpKSB7IHNldChpb3M6OmZhaWxiaXQpOyByZXR1cm4gMDsgfQoJ
ZWxzZSB7CgkgICA7CgkgIGlmIChfdGllKSBfdGllLT5mbHVzaCgpOwoJICBpZiAoZmxhZ3MoKSAm
IGlvczo6c2tpcHdzKSByZXR1cm4gX3NraXBfd3MoKTsKCSAgZWxzZSByZXR1cm4gMTsKCX0KICAg
IH0KICAgIGludCBpcGZ4MSgpIHsgIAoJaWYgKCFnb29kKCkpIHsgc2V0KGlvczo6ZmFpbGJpdCk7
IHJldHVybiAwOyB9CgllbHNlIHsKCSAgIDsKCSAgaWYgKF90aWUgJiYgcmRidWYoKS0+aW5fYXZh
aWwoKSA9PSAwKSBfdGllLT5mbHVzaCgpOwoJICByZXR1cm4gMTsKCX0KICAgIH0KICAgIHZvaWQg
aXNmeCgpIHsgIDsgfQogICAgaW50IGdldCgpIHsgaWYgKCFpcGZ4MSgpKSByZXR1cm4gKC0xKSA7
CgkJZWxzZSB7IGludCBjaCA9IF9zdHJidWYtPnNidW1wYygpOwoJCSAgICAgICBpZiAoY2ggPT0g
KC0xKSApIHNldChpb3M6OmVvZmJpdCk7CgkJICAgICAgIGlzZngoKTsKCQkgICAgICAgcmV0dXJu
IGNoOwoJCSAgICAgfSB9CiAgICBpbnQgcGVlaygpOwogICAgX0dfc2l6ZV90ICBnY291bnQoKSB7
IHJldHVybiBfZ2NvdW50OyB9CiAgICBpc3RyZWFtJiBpZ25vcmUoaW50IG49MSwgaW50IGRlbGlt
ID0gKC0xKSApOwogICAgaW50IHN5bmMgKCk7CiAgICBpc3RyZWFtJiBzZWVrZyhzdHJlYW1wb3Mp
OwogICAgaXN0cmVhbSYgc2Vla2coc3RyZWFtb2ZmLCBfc2Vla19kaXIpOwogICAgc3RyZWFtcG9z
IHRlbGxnKCk7CiAgICBpc3RyZWFtJiBwdXRiYWNrKGNoYXIgY2gpIHsKCWlmIChnb29kKCkgJiYg
X3N0cmJ1Zi0+c3B1dGJhY2tjKGNoKSA9PSAoLTEpICkgY2xlYXIoaW9zOjpiYWRiaXQpOwoJcmV0
dXJuICp0aGlzO30KICAgIGlzdHJlYW0mIHVuZ2V0KCkgewoJaWYgKGdvb2QoKSAmJiBfc3RyYnVm
LT5zdW5nZXRjKCkgPT0gKC0xKSApIGNsZWFyKGlvczo6YmFkYml0KTsKCXJldHVybiAqdGhpczt9
CiAgICBpc3RyZWFtJiBzY2FuKGNvbnN0IGNoYXIgKmZvcm1hdCAuLi4pOwogICAgaXN0cmVhbSYg
dnNjYW4oY29uc3QgY2hhciAqZm9ybWF0LCBfR192YV9saXN0ICBhcmdzKTsKCgoKCgoKICAgIGlz
dHJlYW0mIG9wZXJhdG9yPj4oY2hhciopOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25l
ZCBjaGFyKiBwKSB7IHJldHVybiBvcGVyYXRvcj4+KChjaGFyKilwKTsgfQogICAgaXN0cmVhbSYg
b3BlcmF0b3I+PihzaWduZWQgY2hhcipwKSB7IHJldHVybiBvcGVyYXRvcj4+KChjaGFyKilwKTsg
fQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihjaGFyJiBjKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9y
Pj4odW5zaWduZWQgY2hhciYgYykge3JldHVybiBvcGVyYXRvcj4+KChjaGFyJiljKTt9CiAgICBp
c3RyZWFtJiBvcGVyYXRvcj4+KHNpZ25lZCBjaGFyJiBjKSB7cmV0dXJuIG9wZXJhdG9yPj4oKGNo
YXImKWMpO30KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oaW50Jik7CiAgICBpc3RyZWFtJiBvcGVy
YXRvcj4+KGxvbmcmKTsKCiAgICBfX2V4dGVuc2lvbl9fIGlzdHJlYW0mIG9wZXJhdG9yPj4obG9u
ZyBsb25nJik7CiAgICBfX2V4dGVuc2lvbl9fIGlzdHJlYW0mIG9wZXJhdG9yPj4odW5zaWduZWQg
bG9uZyBsb25nJik7CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzaG9ydCYpOwogICAgaXN0cmVh
bSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBpbnQmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4odW5z
aWduZWQgbG9uZyYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBzaG9ydCYpOwoK
ICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oYm9vbCYpOwoKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4o
ZmxvYXQmKTsKICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oZG91YmxlJik7CiAgICBpc3RyZWFtJiBv
cGVyYXRvcj4+KGxvbmcgZG91YmxlJik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KCBfX21hbmlw
IGZ1bmMpIHsoKmZ1bmMpKCp0aGlzKTsgcmV0dXJuICp0aGlzO30KICAgIGlzdHJlYW0mIG9wZXJh
dG9yPj4oX19pbWFuaXAgZnVuYykgeyByZXR1cm4gKCpmdW5jKSgqdGhpcyk7IH0KICAgIGlzdHJl
YW0mIG9wZXJhdG9yPj4oc3RyZWFtYnVmKik7Cn07CgpjbGFzcyBpb3N0cmVhbSA6IHB1YmxpYyBp
c3RyZWFtLCBwdWJsaWMgb3N0cmVhbQp7CiAgcHVibGljOgogICAgaW9zdHJlYW0oKSB7IH0KICAg
IGlvc3RyZWFtKHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qdGllZD0gX19udWxsICk7Cn07CgpjbGFz
cyBfSU9faXN0cmVhbV93aXRoYXNzaWduIDogcHVibGljIGlzdHJlYW0gewpwdWJsaWM6CiAgX0lP
X2lzdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KGlzdHJlYW0mKTsKICBfSU9faXN0cmVhbV93
aXRoYXNzaWduJiBvcGVyYXRvcj0oX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiYgcmhzKQogICAgeyBy
ZXR1cm4gb3BlcmF0b3I9IChzdGF0aWNfY2FzdDxpc3RyZWFtJj4gKHJocykpOyB9Cn07CgpjbGFz
cyBfSU9fb3N0cmVhbV93aXRoYXNzaWduIDogcHVibGljIG9zdHJlYW0gewpwdWJsaWM6CiAgX0lP
X29zdHJlYW1fd2l0aGFzc2lnbiYgb3BlcmF0b3I9KG9zdHJlYW0mKTsKICBfSU9fb3N0cmVhbV93
aXRoYXNzaWduJiBvcGVyYXRvcj0oX0lPX29zdHJlYW1fd2l0aGFzc2lnbiYgcmhzKQogICAgeyBy
ZXR1cm4gb3BlcmF0b3I9IChzdGF0aWNfY2FzdDxvc3RyZWFtJj4gKHJocykpOyB9Cn07CgpleHRl
cm4gX0lPX2lzdHJlYW1fd2l0aGFzc2lnbiBjaW47CiAKZXh0ZXJuIF9JT19vc3RyZWFtX3dpdGhh
c3NpZ24gY291dCwgY2VycjsKCmV4dGVybiBfSU9fb3N0cmVhbV93aXRoYXNzaWduIGNsb2cKCgoK
OwoKZXh0ZXJuIGlzdHJlYW0mIGxvY2soaXN0cmVhbSYgaW5zKTsKZXh0ZXJuIGlzdHJlYW0mIHVu
bG9jayhpc3RyZWFtJiBpbnMpOwpleHRlcm4gb3N0cmVhbSYgbG9jayhvc3RyZWFtJiBvdXRzKTsK
ZXh0ZXJuIG9zdHJlYW0mIHVubG9jayhvc3RyZWFtJiBvdXRzKTsKCnN0cnVjdCBJb3N0cmVhbV9p
bml0IHsgfSA7ICAgCgppbmxpbmUgaW9zJiBkZWMoaW9zJiBpKQp7IGkuc2V0Zihpb3M6OmRlYywg
aW9zOjpkZWN8aW9zOjpoZXh8aW9zOjpvY3QpOyByZXR1cm4gaTsgfQppbmxpbmUgaW9zJiBoZXgo
aW9zJiBpKQp7IGkuc2V0Zihpb3M6OmhleCwgaW9zOjpkZWN8aW9zOjpoZXh8aW9zOjpvY3QpOyBy
ZXR1cm4gaTsgfQppbmxpbmUgaW9zJiBvY3QoaW9zJiBpKQp7IGkuc2V0Zihpb3M6Om9jdCwgaW9z
OjpkZWN8aW9zOjpoZXh8aW9zOjpvY3QpOyByZXR1cm4gaTsgfQp9ICAKCgojIDUzICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9p
bmNsdWRlL2crKy0zL3N0bF9hbGdvYmFzZS5oIiAyIDMKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9n
Y2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL3N0bF9pdGVyYXRvci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgogCgpzdHJ1Y3QgaW5wdXRfaXRlcmF0b3JfdGFnIHt9OwpzdHJ1Y3Qgb3V0cHV0X2l0ZXJhdG9y
X3RhZyB7fTsKc3RydWN0IGZvcndhcmRfaXRlcmF0b3JfdGFnIDogcHVibGljIGlucHV0X2l0ZXJh
dG9yX3RhZyB7fTsKc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIDogcHVibGljIGZv
cndhcmRfaXRlcmF0b3JfdGFnIHt9OwpzdHJ1Y3QgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcg
OiBwdWJsaWMgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcge307CgogCiAKIAogCgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IHN0cnVjdCBpbnB1dF9pdGVyYXRvciB7CiAg
dHlwZWRlZiBpbnB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBf
VHAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIF9EaXN0YW5jZSAgICAgICAg
ICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBfVHAqICAgICAgICAgICAgICAgcG9pbnRlcjsK
ICB0eXBlZGVmIF9UcCYgICAgICAgICAgICAgICByZWZlcmVuY2U7Cn07CgpzdHJ1Y3Qgb3V0cHV0
X2l0ZXJhdG9yIHsKICB0eXBlZGVmIG91dHB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdv
cnk7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB2
b2lkICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAg
ICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgcmVmZXJlbmNl
Owp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPiBzdHJ1Y3QgZm9yd2Fy
ZF9pdGVyYXRvciB7CiAgdHlwZWRlZiBmb3J3YXJkX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRl
Z29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRl
ZiBfRGlzdGFuY2UgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBfVHAqICAg
ICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgX1RwJiAgICAgICAgICAgICAgICAgcmVm
ZXJlbmNlOwp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4gc3RydWN0
IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3IgewogIHR5cGVkZWYgYmlkaXJlY3Rpb25hbF9pdGVyYXRv
cl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBfVHAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3RhbmNlICAgICAgICAgICAgICAgICAgZGlm
ZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRl
cjsKICB0eXBlZGVmIF9UcCYgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsKCnRl
bXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4gc3RydWN0IHJhbmRvbV9hY2Nlc3Nf
aXRlcmF0b3IgewogIHR5cGVkZWYgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3Jf
Y2F0ZWdvcnk7CiAgdHlwZWRlZiBfVHAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBl
OwogIHR5cGVkZWYgX0Rpc3RhbmNlICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwog
IHR5cGVkZWYgX1RwKiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIF9U
cCYgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsKCiMgOTggIi91c3IvbG9jYWwv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1
ZGUvZysrLTMvc3RsX2l0ZXJhdG9yLmgiIDMKCgoKCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+
CnN0cnVjdCBpdGVyYXRvcl90cmFpdHMgewogIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjpp
dGVyYXRvcl9jYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHR5cGVuYW1lIF9J
dGVyYXRvcjo6dmFsdWVfdHlwZSAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHR5cGVuYW1l
IF9JdGVyYXRvcjo6ZGlmZmVyZW5jZV90eXBlICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYg
dHlwZW5hbWUgX0l0ZXJhdG9yOjpwb2ludGVyICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYg
dHlwZW5hbWUgX0l0ZXJhdG9yOjpyZWZlcmVuY2UgICAgICAgICByZWZlcmVuY2U7Cn07Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPF9UcCo+IHsKICB0eXBlZGVm
IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYg
X1RwICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBwdHJkaWZm
X3QgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAg
ICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiBfVHAmICAgICAgICAgICAgICAg
ICAgICAgICAgcmVmZXJlbmNlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGl0ZXJh
dG9yX3RyYWl0czxjb25zdCBfVHAqPiB7CiAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9y
X3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgcHRyZGlmZl90ICAgICAgICAgICAgICAgICAgIGRp
ZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIGNvbnN0IF9UcCogICAgICAgICAgICAgICAgICBwb2lu
dGVyOwogIHR5cGVkZWYgY29uc3QgX1RwJiAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsK
CiAKIAogCiAKCiAKCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfSXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5Cl9faXRlcmF0b3JfY2F0ZWdvcnko
Y29uc3QgX0l0ZXImKQp7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+
OjppdGVyYXRvcl9jYXRlZ29yeSBfQ2F0ZWdvcnk7CiAgcmV0dXJuIF9DYXRlZ29yeSgpOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+CmlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0
ZXI+OjpkaWZmZXJlbmNlX3R5cGUqCl9fZGlzdGFuY2VfdHlwZShjb25zdCBfSXRlciYpCnsKICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6ZGlmZmVy
ZW5jZV90eXBlKj4oMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4KaW5saW5lIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OnZhbHVlX3R5cGUqCl9fdmFsdWVfdHlwZShjb25zdCBf
SXRlciYpCnsKICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9J
dGVyPjo6dmFsdWVfdHlwZSo+KDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+CmlubGluZSB0
eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeQppdGVyYXRv
cl9jYXRlZ29yeShjb25zdCBfSXRlciYgX19pKSB7IHJldHVybiBfX2l0ZXJhdG9yX2NhdGVnb3J5
KF9faSk7IH0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+CmlubGluZSB0eXBlbmFtZSBpdGVyYXRv
cl90cmFpdHM8X0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGUqCmRpc3RhbmNlX3R5cGUoY29uc3QgX0l0
ZXImIF9faSkgeyByZXR1cm4gX19kaXN0YW5jZV90eXBlKF9faSk7IH0KCnRlbXBsYXRlIDxjbGFz
cyBfSXRlcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OnZhbHVlX3R5
cGUqCnZhbHVlX3R5cGUoY29uc3QgX0l0ZXImIF9faSkgeyByZXR1cm4gX192YWx1ZV90eXBlKF9f
aSk7IH0KCgoKCgojIDI1OSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJp
czIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfaXRlcmF0b3IuaCIgMwoK
CnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUg
dm9pZCBfX2Rpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UmIF9fbiwgaW5wdXRfaXRlcmF0
b3JfdGFnKQp7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7ICsrX19maXJzdDsgKytfX247
IH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0Rpc3Rh
bmNlPgppbmxpbmUgdm9pZCBfX2Rpc3RhbmNlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0
LCAKICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCAK
ICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UmIF9fbiwgcmFuZG9tX2FjY2Vzc19pdGVy
YXRvcl90YWcpCnsKICBfX24gKz0gX19sYXN0IC0gX19maXJzdDsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9JbnB1dEl0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIGRpc3RhbmNlKF9J
bnB1dEl0ZXJhdG9yIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyYXRv
ciBfX2xhc3QsIF9EaXN0YW5jZSYgX19uKQp7CiAgX19kaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3Qs
IF9fbiwgaXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkpOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBf
SW5wdXRJdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVy
YXRvcj46OmRpZmZlcmVuY2VfdHlwZQpfX2Rpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3Qs
IF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgaW5wdXRfaXRlcmF0b3JfdGFnKQp7CiAgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiA9IDA7
CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICArK19fZmlyc3Q7ICsrX19uOwogIH0K
ICByZXR1cm4gX19uOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgpp
bmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJdGVyYXRvcj46OmRp
ZmZlcmVuY2VfdHlwZQpfX2Rpc3RhbmNlKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRl
cmF0b3JfdGFnKSB7CiAgcmV0dXJuIF9fbGFzdCAtIF9fZmlyc3Q7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfSW5wdXRJdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJ
dGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpkaXN0YW5jZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0
LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3Ry
YWl0czxfSW5wdXRJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IAogICAgX0NhdGVnb3J5Owog
IHJldHVybiBfX2Rpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwgX0NhdGVnb3J5KCkpOwp9CgoKCnRl
bXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIF9f
YWR2YW5jZShfSW5wdXRJdGVyJiBfX2ksIF9EaXN0YW5jZSBfX24sIGlucHV0X2l0ZXJhdG9yX3Rh
ZykgewogIHdoaWxlIChfX24tLSkgKytfX2k7Cn0KCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGly
ZWN0aW9uYWxJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCBfX2FkdmFuY2Uo
X0JpZGlyZWN0aW9uYWxJdGVyYXRvciYgX19pLCBfRGlzdGFuY2UgX19uLCAKICAgICAgICAgICAg
ICAgICAgICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKSB7CiAgaWYgKF9fbiA+PSAwKQog
ICAgd2hpbGUgKF9fbi0tKSArK19faTsKICBlbHNlCiAgICB3aGlsZSAoX19uKyspIC0tX19pOwp9
CgoKCgoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0Rpc3Rh
bmNlPgppbmxpbmUgdm9pZCBfX2FkdmFuY2UoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yJiBfX2ksIF9E
aXN0YW5jZSBfX24sIAogICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRv
cl90YWcpIHsKICBfX2kgKz0gX19uOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3Is
IGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgYWR2YW5jZShfSW5wdXRJdGVyYXRvciYgX19p
LCBfRGlzdGFuY2UgX19uKSB7CiAgX19hZHZhbmNlKF9faSwgX19uLCBpdGVyYXRvcl9jYXRlZ29y
eShfX2kpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CmNsYXNzIGJhY2tfaW5zZXJ0
X2l0ZXJhdG9yIHsKcHJvdGVjdGVkOgogIF9Db250YWluZXIqIGNvbnRhaW5lcjsKcHVibGljOgog
IHR5cGVkZWYgX0NvbnRhaW5lciAgICAgICAgICBjb250YWluZXJfdHlwZTsKICB0eXBlZGVmIG91
dHB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiB2b2lkICAgICAg
ICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIGRpZmZl
cmVuY2VfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBl
ZGVmIHZvaWQgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwoKICBleHBsaWNpdCBiYWNrX2luc2Vy
dF9pdGVyYXRvcihfQ29udGFpbmVyJiBfX3gpIDogY29udGFpbmVyKCZfX3gpIHt9CiAgYmFja19p
bnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mCiAgb3BlcmF0b3I9KGNvbnN0IHR5cGVuYW1lIF9D
b250YWluZXI6OnZhbHVlX3R5cGUmIF9fdmFsdWUpIHsgCiAgICBjb250YWluZXItPnB1c2hfYmFj
ayhfX3ZhbHVlKTsKICAgIHJldHVybiAqdGhpczsKICB9CiAgYmFja19pbnNlcnRfaXRlcmF0b3I8
X0NvbnRhaW5lcj4mIG9wZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CiAgYmFja19pbnNlcnRf
aXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQogIGJh
Y2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4g
KnRoaXM7IH0KfTsKCiMgMzc4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh
cmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAz
CgoKdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CmlubGluZSBiYWNrX2luc2VydF9pdGVyYXRv
cjxfQ29udGFpbmVyPiBiYWNrX2luc2VydGVyKF9Db250YWluZXImIF9feCkgewogIHJldHVybiBi
YWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPihfX3gpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0NvbnRhaW5lcj4KY2xhc3MgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yIHsKcHJvdGVjdGVkOgogIF9D
b250YWluZXIqIGNvbnRhaW5lcjsKcHVibGljOgogIHR5cGVkZWYgX0NvbnRhaW5lciAgICAgICAg
ICBjb250YWluZXJfdHlwZTsKICB0eXBlZGVmIG91dHB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3Jf
Y2F0ZWdvcnk7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlw
ZWRlZiB2b2lkICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHZvaWQg
ICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgcmVm
ZXJlbmNlOwoKICBleHBsaWNpdCBmcm9udF9pbnNlcnRfaXRlcmF0b3IoX0NvbnRhaW5lciYgX194
KSA6IGNvbnRhaW5lcigmX194KSB7fQogIGZyb250X2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVy
PiYKICBvcGVyYXRvcj0oY29uc3QgdHlwZW5hbWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlwZSYgX192
YWx1ZSkgeyAKICAgIGNvbnRhaW5lci0+cHVzaF9mcm9udChfX3ZhbHVlKTsKICAgIHJldHVybiAq
dGhpczsKICB9CiAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVyYXRvcioo
KSB7IHJldHVybiAqdGhpczsgfQogIGZyb250X2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYg
b3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9CiAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9D
b250YWluZXI+JiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KfTsKCiMgNDE3ICIv
dXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8u
Li8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAzCgoKdGVtcGxhdGUgPGNsYXNzIF9D
b250YWluZXI+CmlubGluZSBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4gZnJvbnRf
aW5zZXJ0ZXIoX0NvbnRhaW5lciYgX194KSB7CiAgcmV0dXJuIGZyb250X2luc2VydF9pdGVyYXRv
cjxfQ29udGFpbmVyPihfX3gpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KY2xhc3Mg
aW5zZXJ0X2l0ZXJhdG9yIHsKcHJvdGVjdGVkOgogIF9Db250YWluZXIqIGNvbnRhaW5lcjsKICB0
eXBlbmFtZSBfQ29udGFpbmVyOjppdGVyYXRvciBpdGVyOwpwdWJsaWM6CiAgdHlwZWRlZiBfQ29u
dGFpbmVyICAgICAgICAgIGNvbnRhaW5lcl90eXBlOwogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9y
X3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFs
dWVfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwog
IHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAg
ICAgICAgICAgICByZWZlcmVuY2U7CgogIGluc2VydF9pdGVyYXRvcihfQ29udGFpbmVyJiBfX3gs
IHR5cGVuYW1lIF9Db250YWluZXI6Oml0ZXJhdG9yIF9faSkgCiAgICA6IGNvbnRhaW5lcigmX194
KSwgaXRlcihfX2kpIHt9CiAgaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JgogIG9wZXJhdG9y
PShjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90eXBlJiBfX3ZhbHVlKSB7IAogICAg
aXRlciA9IGNvbnRhaW5lci0+aW5zZXJ0KGl0ZXIsIF9fdmFsdWUpOwogICAgKytpdGVyOwogICAg
cmV0dXJuICp0aGlzOwogIH0KICBpbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9y
KigpIHsgcmV0dXJuICp0aGlzOyB9CiAgaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVy
YXRvcisrKCkgeyByZXR1cm4gKnRoaXM7IH0KICBpbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4m
IG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQp9OwoKIyA0NTkgIi91c3IvbG9jYWwv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1
ZGUvZysrLTMvc3RsX2l0ZXJhdG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lciwg
Y2xhc3MgX0l0ZXJhdG9yPgppbmxpbmUgCmluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiBpbnNl
cnRlcihfQ29udGFpbmVyJiBfX3gsIF9JdGVyYXRvciBfX2kpCnsKICB0eXBlZGVmIHR5cGVuYW1l
IF9Db250YWluZXI6Oml0ZXJhdG9yIF9faXRlcjsKICByZXR1cm4gaW5zZXJ0X2l0ZXJhdG9yPF9D
b250YWluZXI+KF9feCwgX19pdGVyKF9faSkpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVj
dGlvbmFsSXRlcmF0b3IsIGNsYXNzIF9UcCwgY2xhc3MgX1JlZmVyZW5jZSA9IF9UcCYsIAogICAg
ICAgICAgY2xhc3MgX0Rpc3RhbmNlID0gcHRyZGlmZl90PiAKCgoKCmNsYXNzIHJldmVyc2VfYmlk
aXJlY3Rpb25hbF9pdGVyYXRvciB7CiAgdHlwZWRlZiByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRl
cmF0b3I8X0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgX1RwLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfUmVmZXJlbmNlLCBfRGlzdGFuY2U+ICBfU2VsZjsKcHJvdGVj
dGVkOgogIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgY3VycmVudDsKcHVibGljOgogIHR5cGVkZWYg
YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBf
VHAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3RhbmNl
ICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICAg
ICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIF9SZWZlcmVuY2UgICAgICAgICAgICAg
ICAgIHJlZmVyZW5jZTsKCiAgcmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yKCkge30KICBl
eHBsaWNpdCByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3IoX0JpZGlyZWN0aW9uYWxJdGVy
YXRvciBfX3gpCiAgICA6IGN1cnJlbnQoX194KSB7fQogIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3Ig
YmFzZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnQ7IH0KICBfUmVmZXJlbmNlIG9wZXJhdG9yKigp
IGNvbnN0IHsKICAgIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgX190bXAgPSBjdXJyZW50OwogICAg
cmV0dXJuICotLV9fdG1wOwogIH0KCiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gJihvcGVyYXRvciooKSk7IH0KCiAgX1NlbGYmIG9wZXJhdG9yKysoKSB7CiAgICAtLWN1cnJl
bnQ7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIF9TZWxmIG9wZXJhdG9yKysoaW50KSB7CiAgICBf
U2VsZiBfX3RtcCA9ICp0aGlzOwogICAgLS1jdXJyZW50OwogICAgcmV0dXJuIF9fdG1wOwogIH0K
ICBfU2VsZiYgb3BlcmF0b3ItLSgpIHsKICAgICsrY3VycmVudDsKICAgIHJldHVybiAqdGhpczsK
ICB9CiAgX1NlbGYgb3BlcmF0b3ItLShpbnQpIHsKICAgIF9TZWxmIF9fdG1wID0gKnRoaXM7CiAg
ICArK2N1cnJlbnQ7CiAgICByZXR1cm4gX190bXA7CiAgfQp9OwoKIyA1NTAgIi91c3IvbG9jYWwv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1
ZGUvZysrLTMvc3RsX2l0ZXJhdG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpSXRlciwgY2xh
c3MgX1RwLCBjbGFzcyBfUmVmLAogICAgICAgICAgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgYm9v
bCBvcGVyYXRvcj09KAogICAgY29uc3QgcmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yPF9C
aUl0ZXIsIF9UcCwgX1JlZiwgX0Rpc3RhbmNlPiYgX194LCAKICAgIGNvbnN0IHJldmVyc2VfYmlk
aXJlY3Rpb25hbF9pdGVyYXRvcjxfQmlJdGVyLCBfVHAsIF9SZWYsIF9EaXN0YW5jZT4mIF9feSkK
ewogIHJldHVybiBfX3guYmFzZSgpID09IF9feS5iYXNlKCk7Cn0KCgoKIAogCiAKIAogCgp0ZW1w
bGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgpjbGFzcyByZXZlcnNlX2l0ZXJhdG9yIAp7CnByb3RlY3Rl
ZDoKICBfSXRlcmF0b3IgY3VycmVudDsKcHVibGljOgogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9JdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5CiAgICAgICAgICBpdGVyYXRv
cl9jYXRlZ29yeTsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+
Ojp2YWx1ZV90eXBlCiAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgaXRl
cmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICAgICAgICAgZGlmZmVy
ZW5jZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46
OnBvaW50ZXIKICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X0l0ZXJhdG9yPjo6cmVmZXJlbmNlCiAgICAgICAgICByZWZlcmVuY2U7CgogIHR5cGVk
ZWYgX0l0ZXJhdG9yIGl0ZXJhdG9yX3R5cGU7CiAgdHlwZWRlZiByZXZlcnNlX2l0ZXJhdG9yPF9J
dGVyYXRvcj4gX1NlbGY7CgpwdWJsaWM6CiAgcmV2ZXJzZV9pdGVyYXRvcigpIHt9CiAgZXhwbGlj
aXQgcmV2ZXJzZV9pdGVyYXRvcihpdGVyYXRvcl90eXBlIF9feCkgOiBjdXJyZW50KF9feCkge30K
CiAgcmV2ZXJzZV9pdGVyYXRvcihjb25zdCBfU2VsZiYgX194KSA6IGN1cnJlbnQoX194LmN1cnJl
bnQpIHt9CgogIHRlbXBsYXRlIDxjbGFzcyBfSXRlcj4KICByZXZlcnNlX2l0ZXJhdG9yKGNvbnN0
IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXI+JiBfX3gpCiAgICA6IGN1cnJlbnQoX194LmJhc2UoKSkg
e30KCiAgICAKICBpdGVyYXRvcl90eXBlIGJhc2UoKSBjb25zdCB7IHJldHVybiBjdXJyZW50OyB9
CiAgcmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsKICAgIF9JdGVyYXRvciBfX3RtcCA9IGN1
cnJlbnQ7CiAgICByZXR1cm4gKi0tX190bXA7CiAgfQoKICBwb2ludGVyIG9wZXJhdG9yLT4oKSBj
b25zdCB7IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQoKCiAgX1NlbGYmIG9wZXJhdG9yKysoKSB7
CiAgICAtLWN1cnJlbnQ7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIF9TZWxmIG9wZXJhdG9yKyso
aW50KSB7CiAgICBfU2VsZiBfX3RtcCA9ICp0aGlzOwogICAgLS1jdXJyZW50OwogICAgcmV0dXJu
IF9fdG1wOwogIH0KICBfU2VsZiYgb3BlcmF0b3ItLSgpIHsKICAgICsrY3VycmVudDsKICAgIHJl
dHVybiAqdGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3ItLShpbnQpIHsKICAgIF9TZWxmIF9fdG1w
ID0gKnRoaXM7CiAgICArK2N1cnJlbnQ7CiAgICByZXR1cm4gX190bXA7CiAgfQoKICBfU2VsZiBv
cGVyYXRvcisoZGlmZmVyZW5jZV90eXBlIF9fbikgY29uc3QgewogICAgcmV0dXJuIF9TZWxmKGN1
cnJlbnQgLSBfX24pOwogIH0KICBfU2VsZiYgb3BlcmF0b3IrPShkaWZmZXJlbmNlX3R5cGUgX19u
KSB7CiAgICBjdXJyZW50IC09IF9fbjsKICAgIHJldHVybiAqdGhpczsKICB9CiAgX1NlbGYgb3Bl
cmF0b3ItKGRpZmZlcmVuY2VfdHlwZSBfX24pIGNvbnN0IHsKICAgIHJldHVybiBfU2VsZihjdXJy
ZW50ICsgX19uKTsKICB9CiAgX1NlbGYmIG9wZXJhdG9yLT0oZGlmZmVyZW5jZV90eXBlIF9fbikg
ewogICAgY3VycmVudCArPSBfX247CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIHJlZmVyZW5jZSBv
cGVyYXRvcltdKGRpZmZlcmVuY2VfdHlwZSBfX24pIGNvbnN0IHsgcmV0dXJuICooKnRoaXMgKyBf
X24pOyB9ICAKfTsgCiAKdGVtcGxhdGUgPGNsYXNzIF9JdGVyYXRvcj4KaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwgCiAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kpIHsK
ICByZXR1cm4gX194LmJhc2UoKSA9PSBfX3kuYmFzZSgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0
ZXJhdG9yPgppbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRl
cmF0b3I+JiBfX3gsIAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRv
cjxfSXRlcmF0b3I+JiBfX3kpIHsKICByZXR1cm4gX195LmJhc2UoKSA8IF9feC5iYXNlKCk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+CmlubGluZSB0eXBlbmFtZSByZXZlcnNlX2l0ZXJh
dG9yPF9JdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpvcGVyYXRvci0oY29uc3QgcmV2ZXJzZV9p
dGVyYXRvcjxfSXRlcmF0b3I+JiBfX3gsIAogICAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRv
cjxfSXRlcmF0b3I+JiBfX3kpIHsKICByZXR1cm4gX195LmJhc2UoKSAtIF9feC5iYXNlKCk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+CmlubGluZSByZXZlcnNlX2l0ZXJhdG9yPF9JdGVy
YXRvcj4gCm9wZXJhdG9yKyh0eXBlbmFtZSByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj46OmRp
ZmZlcmVuY2VfdHlwZSBfX24sCiAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVy
YXRvcj4mIF9feCkgewogIHJldHVybiByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4oX194LmJh
c2UoKSAtIF9fbik7Cn0KCiMgODA1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5o
IiAzCgoKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdCA9IHB0cmRpZmZfdD4g
CmNsYXNzIGlzdHJlYW1faXRlcmF0b3IgewogIGZyaWVuZCBib29sIG9wZXJhdG9yPT0gPD4gIChj
b25zdCBpc3RyZWFtX2l0ZXJhdG9yJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBpc3RyZWFtX2l0ZXJhdG9yJik7CnByb3RlY3RlZDoKICBpc3Ry
ZWFtKiBfTV9zdHJlYW07CiAgX1RwIF9NX3ZhbHVlOwogIGJvb2wgX01fZW5kX21hcmtlcjsKICB2
b2lkIF9NX3JlYWQoKSB7CiAgICBfTV9lbmRfbWFya2VyID0gKCpfTV9zdHJlYW0pID8gdHJ1ZSA6
IGZhbHNlOwogICAgaWYgKF9NX2VuZF9tYXJrZXIpICpfTV9zdHJlYW0gPj4gX01fdmFsdWU7CiAg
ICBfTV9lbmRfbWFya2VyID0gKCpfTV9zdHJlYW0pID8gdHJ1ZSA6IGZhbHNlOwogIH0KcHVibGlj
OgogIHR5cGVkZWYgaW5wdXRfaXRlcmF0b3JfdGFnICBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBl
ZGVmIF9UcCAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIF9EaXN0ICAgICAg
ICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgY29uc3QgX1RwKiAgICAgICAgICBw
b2ludGVyOwogIHR5cGVkZWYgY29uc3QgX1RwJiAgICAgICAgICByZWZlcmVuY2U7CgogIGlzdHJl
YW1faXRlcmF0b3IoKSA6IF9NX3N0cmVhbSgmY2luKSwgX01fZW5kX21hcmtlcihmYWxzZSkge30K
ICBpc3RyZWFtX2l0ZXJhdG9yKGlzdHJlYW0mIF9fcykgOiBfTV9zdHJlYW0oJl9fcykgeyBfTV9y
ZWFkKCk7IH0KICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gX01fdmFsdWU7
IH0KCiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihvcGVyYXRvciooKSk7
IH0KCiAgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0PiYgb3BlcmF0b3IrKygpIHsgCiAgICBf
TV9yZWFkKCk7IAogICAgcmV0dXJuICp0aGlzOwogIH0KICBpc3RyZWFtX2l0ZXJhdG9yPF9UcCwg
X0Rpc3Q+IG9wZXJhdG9yKysoaW50KSAgewogICAgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0
PiBfX3RtcCA9ICp0aGlzOwogICAgX01fcmVhZCgpOwogICAgcmV0dXJuIF9fdG1wOwogIH0KfTsK
CiMgODY0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUu
My8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAzCgoKdGVtcGxhdGUg
PGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IGlzdHJlYW1faXRlcmF0b3I8X1RwLCBfRGlzdGFuY2U+JiBfX3gsCiAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0YW5jZT4mIF9feSkgewogIHJl
dHVybiAoX194Ll9NX3N0cmVhbSA9PSBfX3kuX01fc3RyZWFtICYmCiAgICAgICAgICBfX3guX01f
ZW5kX21hcmtlciA9PSBfX3kuX01fZW5kX21hcmtlcikgfHwKICAgICAgICAgX194Ll9NX2VuZF9t
YXJrZXIgPT0gZmFsc2UgJiYgX195Ll9NX2VuZF9tYXJrZXIgPT0gZmFsc2U7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfVHA+CmNsYXNzIG9zdHJlYW1faXRlcmF0b3Igewpwcm90ZWN0ZWQ6CiAgb3N0cmVh
bSogX01fc3RyZWFtOwogIGNvbnN0IGNoYXIqIF9NX3N0cmluZzsKcHVibGljOgogIHR5cGVkZWYg
b3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAg
ICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlm
ZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5
cGVkZWYgdm9pZCAgICAgICAgICAgICAgICByZWZlcmVuY2U7CgogIG9zdHJlYW1faXRlcmF0b3Io
b3N0cmVhbSYgX19zKSA6IF9NX3N0cmVhbSgmX19zKSwgX01fc3RyaW5nKDApIHt9CiAgb3N0cmVh
bV9pdGVyYXRvcihvc3RyZWFtJiBfX3MsIGNvbnN0IGNoYXIqIF9fYykgCiAgICA6IF9NX3N0cmVh
bSgmX19zKSwgX01fc3RyaW5nKF9fYykgIHt9CiAgb3N0cmVhbV9pdGVyYXRvcjxfVHA+JiBvcGVy
YXRvcj0oY29uc3QgX1RwJiBfX3ZhbHVlKSB7IAogICAgKl9NX3N0cmVhbSA8PCBfX3ZhbHVlOwog
ICAgaWYgKF9NX3N0cmluZykgKl9NX3N0cmVhbSA8PCBfTV9zdHJpbmc7CiAgICByZXR1cm4gKnRo
aXM7CiAgfQogIG9zdHJlYW1faXRlcmF0b3I8X1RwPiYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRo
aXM7IH0KICBvc3RyZWFtX2l0ZXJhdG9yPF9UcD4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhp
czsgfSAKICBvc3RyZWFtX2l0ZXJhdG9yPF9UcD4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAq
dGhpczsgfSAKfTsKCiMgOTA3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh
cmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAz
CgoKIAoKCgogCiAKIAojIDU2ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh
cmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGdvYmFzZS5oIiAy
IDMKCgoKIAoKIAoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcjEsIGNsYXNzIF9Gb3J3YXJk
SXRlcjIsIGNsYXNzIF9UcD4KaW5saW5lIHZvaWQgX19pdGVyX3N3YXAoX0ZvcndhcmRJdGVyMSBf
X2EsIF9Gb3J3YXJkSXRlcjIgX19iLCBfVHAqKSB7CiAgX1RwIF9fdG1wID0gKl9fYTsKICAqX19h
ID0gKl9fYjsKICAqX19iID0gX190bXA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIx
LCBjbGFzcyBfRm9yd2FyZEl0ZXIyPgppbmxpbmUgdm9pZCBpdGVyX3N3YXAoX0ZvcndhcmRJdGVy
MSBfX2EsIF9Gb3J3YXJkSXRlcjIgX19iKSB7CiAgX19pdGVyX3N3YXAoX19hLCBfX2IsIF9fdmFs
dWVfdHlwZSggX19hICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIHZvaWQgc3dh
cChfVHAmIF9fYSwgX1RwJiBfX2IpIHsKICBfVHAgX190bXAgPSBfX2E7CiAgX19hID0gX19iOwog
IF9fYiA9IF9fdG1wOwp9CgogCiAKCgoKCgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIGNv
bnN0IF9UcCYgbWluKGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYikgewogIHJldHVybiBf
X2IgPCBfX2EgPyBfX2IgOiBfX2E7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSBjb25z
dCBfVHAmIG1heChjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IpIHsKICByZXR1cm4gIF9f
YSA8IF9fYiA/IF9fYiA6IF9fYTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQ29t
cGFyZT4KaW5saW5lIGNvbnN0IF9UcCYgbWluKGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9f
YiwgX0NvbXBhcmUgX19jb21wKSB7CiAgcmV0dXJuIF9fY29tcChfX2IsIF9fYSkgPyBfX2IgOiBf
X2E7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgY29uc3Qg
X1RwJiBtYXgoY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iLCBfQ29tcGFyZSBfX2NvbXAp
IHsKICByZXR1cm4gX19jb21wKF9fYSwgX19iKSA/IF9fYiA6IF9fYTsKfQoKIAogCgogCiAKIAog
CiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1dEl0ZXIsIGNs
YXNzIF9EaXN0YW5jZT4KaW5saW5lIF9PdXRwdXRJdGVyIF9fY29weShfSW5wdXRJdGVyIF9fZmly
c3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJ
dGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3Rh
ZywgX0Rpc3RhbmNlKikKewogIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19yZXN1bHQs
ICsrX19maXJzdCkKICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogIHJldHVybiBfX3Jlc3VsdDsK
fQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwg
Y2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgX091dHB1dEl0ZXIKX19jb3B5KF9SYW5kb21BY2Nlc3NJ
dGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgIF9PdXRwdXRJdGVy
IF9fcmVzdWx0LCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZywgX0Rpc3RhbmNlKikKewogIGZv
ciAoX0Rpc3RhbmNlIF9fbiA9IF9fbGFzdCAtIF9fZmlyc3Q7IF9fbiA+IDA7IC0tX19uKSB7CiAg
ICAqX19yZXN1bHQgPSAqX19maXJzdDsKICAgICsrX19maXJzdDsKICAgICsrX19yZXN1bHQ7CiAg
fQogIHJldHVybiBfX3Jlc3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIF9UcCoK
X19jb3B5X3RyaXZpYWwoY29uc3QgX1RwKiBfX2ZpcnN0LCBjb25zdCBfVHAqIF9fbGFzdCwgX1Rw
KiBfX3Jlc3VsdCkgewogIG1lbW1vdmUoX19yZXN1bHQsIF9fZmlyc3QsIHNpemVvZihfVHApICog
KF9fbGFzdCAtIF9fZmlyc3QpKTsKICByZXR1cm4gX19yZXN1bHQgKyAoX19sYXN0IC0gX19maXJz
dCk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBj
bGFzcyBfQm9vbFR5cGU+CnN0cnVjdCBfX2NvcHlfZGlzcGF0Y2ggewogIHN0YXRpYyBfT3V0cHV0
SXRlciBjb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpIHsKICAgIHR5cGVkZWYgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+OjppdGVyYXRvcl9jYXRlZ29yeSBfQ2F0
ZWdvcnk7CiAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyPjo6
ZGlmZmVyZW5jZV90eXBlIF9EaXN0YW5jZTsKICAgIHJldHVybiBfX2NvcHkoX19maXJzdCwgX19s
YXN0LCBfX3Jlc3VsdCwgX0NhdGVnb3J5KCksIChfRGlzdGFuY2UqKSAwKTsKICB9Cn07Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgX19jb3B5X2Rpc3BhdGNoPF9UcCosIF9UcCosIF9fdHJ1
ZV90eXBlPgp7CiAgc3RhdGljIF9UcCogY29weShjb25zdCBfVHAqIF9fZmlyc3QsIGNvbnN0IF9U
cCogX19sYXN0LCBfVHAqIF9fcmVzdWx0KSB7CiAgICByZXR1cm4gX19jb3B5X3RyaXZpYWwoX19m
aXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3Ry
dWN0IF9fY29weV9kaXNwYXRjaDxjb25zdCBfVHAqLCBfVHAqLCBfX3RydWVfdHlwZT4KewogIHN0
YXRpYyBfVHAqIGNvcHkoY29uc3QgX1RwKiBfX2ZpcnN0LCBjb25zdCBfVHAqIF9fbGFzdCwgX1Rw
KiBfX3Jlc3VsdCkgewogICAgcmV0dXJuIF9fY29weV90cml2aWFsKF9fZmlyc3QsIF9fbGFzdCwg
X19yZXN1bHQpOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0
cHV0SXRlcj4KaW5saW5lIF9PdXRwdXRJdGVyIGNvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5w
dXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1
bHQpIHsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyPjo6dmFs
dWVfdHlwZSBfVHA7CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRzPF9UcD46Omhhc190
cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3IKICAgICAgICAgIF9Ucml2aWFsOwogIHJldHVybiBf
X2NvcHlfZGlzcGF0Y2g8X0lucHV0SXRlciwgX091dHB1dEl0ZXIsIF9Ucml2aWFsPgogICAgOjpj
b3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpOwp9CgojIDIxMyAiL3Vzci9sb2NhbC9saWIv
Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9zdGxfYWxnb2Jhc2UuaCIgMwoKCiAKIAoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlv
bmFsSXRlcjEsIGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjIsIAogICAgICAgICAgY2xhc3MgX0Rp
c3RhbmNlPgppbmxpbmUgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX2NvcHlfYmFja3dhcmQoX0JpZGly
ZWN0aW9uYWxJdGVyMSBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjEgX19sYXN0LCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19yZXN1bHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWRpcmVjdGlvbmFsX2l0
ZXJhdG9yX3RhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9E
aXN0YW5jZSopCnsKICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpCiAgICAqLS1fX3Jlc3VsdCA9
ICotLV9fbGFzdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9t
QWNjZXNzSXRlciwgY2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBfRGlzdGFuY2U+Cmlu
bGluZSBfQmlkaXJlY3Rpb25hbEl0ZXIgX19jb3B5X2JhY2t3YXJkKF9SYW5kb21BY2Nlc3NJdGVy
IF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFu
ZG9tQWNjZXNzSXRlciBfX2xhc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UqKQp7CiAgZm9yIChf
RGlzdGFuY2UgX19uID0gX19sYXN0IC0gX19maXJzdDsgX19uID4gMDsgLS1fX24pCiAgICAqLS1f
X3Jlc3VsdCA9ICotLV9fbGFzdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCgoKIAogCiAKIAoKdGVt
cGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjEsIGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRl
cjIsCiAgICAgICAgICBjbGFzcyBfQm9vbFR5cGU+CnN0cnVjdCBfX2NvcHlfYmFja3dhcmRfZGlz
cGF0Y2gKewogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9CaWRpcmVjdGlvbmFs
SXRlcjE+OjppdGVyYXRvcl9jYXRlZ29yeSAKICAgICAgICAgIF9DYXQ7CiAgdHlwZWRlZiB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X0JpZGlyZWN0aW9uYWxJdGVyMT46OmRpZmZlcmVuY2VfdHlw
ZQogICAgICAgICAgX0Rpc3RhbmNlOwoKICBzdGF0aWMgX0JpZGlyZWN0aW9uYWxJdGVyMiBjb3B5
KF9CaWRpcmVjdGlvbmFsSXRlcjEgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fbGFzdCwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fcmVzdWx0KSB7CiAgICByZXR1cm4g
X19jb3B5X2JhY2t3YXJkKF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsIF9DYXQoKSwgKF9EaXN0
YW5jZSopIDApOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBfX2NvcHlfYmFj
a3dhcmRfZGlzcGF0Y2g8X1RwKiwgX1RwKiwgX190cnVlX3R5cGU+CnsKICBzdGF0aWMgX1RwKiBj
b3B5KGNvbnN0IF9UcCogX19maXJzdCwgY29uc3QgX1RwKiBfX2xhc3QsIF9UcCogX19yZXN1bHQp
IHsKICAgIGNvbnN0IHB0cmRpZmZfdCBfTnVtID0gX19sYXN0IC0gX19maXJzdDsKICAgIG1lbW1v
dmUoX19yZXN1bHQgLSBfTnVtLCBfX2ZpcnN0LCBzaXplb2YoX1RwKSAqIF9OdW0pOwogICAgcmV0
dXJuIF9fcmVzdWx0IC0gX051bTsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3Qg
X19jb3B5X2JhY2t3YXJkX2Rpc3BhdGNoPGNvbnN0IF9UcCosIF9UcCosIF9fdHJ1ZV90eXBlPgp7
CiAgc3RhdGljIF9UcCogY29weShjb25zdCBfVHAqIF9fZmlyc3QsIGNvbnN0IF9UcCogX19sYXN0
LCBfVHAqIF9fcmVzdWx0KSB7CiAgICByZXR1cm4gIF9fY29weV9iYWNrd2FyZF9kaXNwYXRjaDxf
VHAqLCBfVHAqLCBfX3RydWVfdHlwZT4KICAgICAgOjpjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19y
ZXN1bHQpOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfQkkxLCBjbGFzcyBfQkkyPgppbmxpbmUg
X0JJMiBjb3B5X2JhY2t3YXJkKF9CSTEgX19maXJzdCwgX0JJMSBfX2xhc3QsIF9CSTIgX19yZXN1
bHQpIHsKICB0eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8dHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9CSTI+Ojp2YWx1ZV90eXBlPgogICAgICAgICAgICAgICAgICAgICAgICA6Omhhc190
cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3IKICAgICAgICAgIF9Ucml2aWFsOwogIHJldHVybiBf
X2NvcHlfYmFja3dhcmRfZGlzcGF0Y2g8X0JJMSwgX0JJMiwgX1RyaXZpYWw+CiAgICAgICAgICAg
ICAgOjpjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpOwp9CgojIDMwMyAiL3Vzci9sb2Nh
bC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5j
bHVkZS9nKystMy9zdGxfYWxnb2Jhc2UuaCIgMwoKCiAKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1
dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfT3V0cHV0SXRlcj4KcGFpcjxfSW5wdXRJdGVyLCBf
T3V0cHV0SXRlcj4gX19jb3B5X24oX0lucHV0SXRlciBfX2ZpcnN0LCBfU2l6ZSBfX2NvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3Vs
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3Jf
dGFnKSB7CiAgZm9yICggOyBfX2NvdW50ID4gMDsgLS1fX2NvdW50KSB7CiAgICAqX19yZXN1bHQg
PSAqX19maXJzdDsKICAgICsrX19maXJzdDsKICAgICsrX19yZXN1bHQ7CiAgfQogIHJldHVybiBw
YWlyPF9JbnB1dEl0ZXIsIF9PdXRwdXRJdGVyPihfX2ZpcnN0LCBfX3Jlc3VsdCk7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfUkFJdGVyLCBjbGFzcyBfU2l6ZSwgY2xhc3MgX091dHB1dEl0ZXI+CmlubGlu
ZSBwYWlyPF9SQUl0ZXIsIF9PdXRwdXRJdGVyPgpfX2NvcHlfbihfUkFJdGVyIF9fZmlyc3QsIF9T
aXplIF9fY291bnQsCiAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LAogICAgICAgICByYW5k
b21fYWNjZXNzX2l0ZXJhdG9yX3RhZykgewogIF9SQUl0ZXIgX19sYXN0ID0gX19maXJzdCArIF9f
Y291bnQ7CiAgcmV0dXJuIHBhaXI8X1JBSXRlciwgX091dHB1dEl0ZXI+KF9fbGFzdCwgY29weShf
X2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVy
LCBjbGFzcyBfU2l6ZSwgY2xhc3MgX091dHB1dEl0ZXI+CmlubGluZSBwYWlyPF9JbnB1dEl0ZXIs
IF9PdXRwdXRJdGVyPgpfX2NvcHlfbihfSW5wdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQs
IF9PdXRwdXRJdGVyIF9fcmVzdWx0KSB7CiAgcmV0dXJuIF9fY29weV9uKF9fZmlyc3QsIF9fY291
bnQsIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICBfX2l0ZXJhdG9yX2NhdGVnb3J5KCBfX2Zp
cnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFz
cyBfT3V0cHV0SXRlcj4KaW5saW5lIHBhaXI8X0lucHV0SXRlciwgX091dHB1dEl0ZXI+CmNvcHlf
bihfSW5wdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsIF9PdXRwdXRJdGVyIF9fcmVzdWx0
KSB7CiAgcmV0dXJuIF9fY29weV9uKF9fZmlyc3QsIF9fY291bnQsIF9fcmVzdWx0KTsKfQoKIAog
CgoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwPgp2b2lkIGZpbGwoX0Zv
cndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIGNvbnN0IF9UcCYgX192YWx1
ZSkgewogIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgICpfX2ZpcnN0
ID0gX192YWx1ZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfU2l6ZSwg
Y2xhc3MgX1RwPgpfT3V0cHV0SXRlciBmaWxsX24oX091dHB1dEl0ZXIgX19maXJzdCwgX1NpemUg
X19uLCBjb25zdCBfVHAmIF9fdmFsdWUpIHsKICBmb3IgKCA7IF9fbiA+IDA7IC0tX19uLCArK19f
Zmlyc3QpCiAgICAqX19maXJzdCA9IF9fdmFsdWU7CiAgcmV0dXJuIF9fZmlyc3Q7Cn0KCiAKIAoK
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMj4KcGFpcjxfSW5w
dXRJdGVyMSwgX0lucHV0SXRlcjI+IG1pc21hdGNoKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjEgX19sYXN0MSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmly
c3QyKSB7CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgKl9fZmlyc3QxID09ICpfX2Zp
cnN0MikgewogICAgKytfX2ZpcnN0MTsKICAgICsrX19maXJzdDI7CiAgfQogIHJldHVybiBwYWly
PF9JbnB1dEl0ZXIxLCBfSW5wdXRJdGVyMj4oX19maXJzdDEsIF9fZmlyc3QyKTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX0JpbmFyeVBy
ZWRpY2F0ZT4KcGFpcjxfSW5wdXRJdGVyMSwgX0lucHV0SXRlcjI+IG1pc21hdGNoKF9JbnB1dEl0
ZXIxIF9fZmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lu
cHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9JbnB1dEl0ZXIyIF9fZmlyc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKSB7CiAgd2hpbGUgKF9fZmlyc3Qx
ICE9IF9fbGFzdDEgJiYgX19iaW5hcnlfcHJlZCgqX19maXJzdDEsICpfX2ZpcnN0MikpIHsKICAg
ICsrX19maXJzdDE7CiAgICArK19fZmlyc3QyOwogIH0KICByZXR1cm4gcGFpcjxfSW5wdXRJdGVy
MSwgX0lucHV0SXRlcjI+KF9fZmlyc3QxLCBfX2ZpcnN0Mik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
SW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjI+CmlubGluZSBib29sIGVxdWFsKF9JbnB1dEl0
ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICBfSW5w
dXRJdGVyMiBfX2ZpcnN0MikgewogIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2Zp
cnN0MSwgKytfX2ZpcnN0MikKICAgIGlmICgqX19maXJzdDEgIT0gKl9fZmlyc3QyKQogICAgICBy
ZXR1cm4gZmFsc2U7CiAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVy
MSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9CaW5hcnlQcmVkaWNhdGU+CmlubGluZSBib29s
IGVxdWFsKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAg
ICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFy
eV9wcmVkKSB7CiAgZm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxOyArK19fZmlyc3QxLCArK19f
Zmlyc3QyKQogICAgaWYgKCFfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkKICAg
ICAgcmV0dXJuIGZhbHNlOwogIHJldHVybiB0cnVlOwp9CgogCiAKIAoKdGVtcGxhdGUgPGNsYXNz
IF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMj4KYm9vbCBsZXhpY29ncmFwaGljYWxfY29t
cGFyZShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19s
YXN0MikgewogIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xh
c3QyCiAgICAgICAgOyArK19fZmlyc3QxLCArK19fZmlyc3QyKSB7CiAgICBpZiAoKl9fZmlyc3Qx
IDwgKl9fZmlyc3QyKQogICAgICByZXR1cm4gdHJ1ZTsKICAgIGlmICgqX19maXJzdDIgPCAqX19m
aXJzdDEpCiAgICAgIHJldHVybiBmYWxzZTsKICB9CiAgcmV0dXJuIF9fZmlyc3QxID09IF9fbGFz
dDEgJiYgX19maXJzdDIgIT0gX19sYXN0MjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIx
LCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX0NvbXBhcmU+CmJvb2wgbGV4aWNvZ3JhcGhpY2Fs
X2NvbXBhcmUoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIy
IF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKSB7
CiAgZm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIKICAg
ICAgICA7ICsrX19maXJzdDEsICsrX19maXJzdDIpIHsKICAgIGlmIChfX2NvbXAoKl9fZmlyc3Qx
LCAqX19maXJzdDIpKQogICAgICByZXR1cm4gdHJ1ZTsKICAgIGlmIChfX2NvbXAoKl9fZmlyc3Qy
LCAqX19maXJzdDEpKQogICAgICByZXR1cm4gZmFsc2U7CiAgfQogIHJldHVybiBfX2ZpcnN0MSA9
PSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDI7Cn0KCmlubGluZSBib29sIApsZXhpY29n
cmFwaGljYWxfY29tcGFyZShjb25zdCB1bnNpZ25lZCBjaGFyKiBfX2ZpcnN0MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogX19sYXN0MSwKICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogX19maXJzdDIsCiAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fbGFzdDIpCnsKICBjb25zdCBzaXplX3Qg
X19sZW4xID0gX19sYXN0MSAtIF9fZmlyc3QxOwogIGNvbnN0IHNpemVfdCBfX2xlbjIgPSBfX2xh
c3QyIC0gX19maXJzdDI7CiAgY29uc3QgaW50IF9fcmVzdWx0ID0gbWVtY21wKF9fZmlyc3QxLCBf
X2ZpcnN0MiwgbWluKF9fbGVuMSwgX19sZW4yKSk7CiAgcmV0dXJuIF9fcmVzdWx0ICE9IDAgPyBf
X3Jlc3VsdCA8IDAgOiBfX2xlbjEgPCBfX2xlbjI7Cn0KCmlubGluZSBib29sIGxleGljb2dyYXBo
aWNhbF9jb21wYXJlKGNvbnN0IGNoYXIqIF9fZmlyc3QxLCBjb25zdCBjaGFyKiBfX2xhc3QxLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBfX2ZpcnN0Miwg
Y29uc3QgY2hhciogX19sYXN0MikKewoKICByZXR1cm4gbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUo
KGNvbnN0IHNpZ25lZCBjaGFyKikgX19maXJzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fZmlyc3QyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2xhc3QyKTsKCgoKCgoK
fQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMj4KaW50IF9f
bGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfM3dheShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0
SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJ
dGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MikKewogIHdoaWxlIChfX2ZpcnN0MSAh
PSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpIHsKICAgIGlmICgqX19maXJzdDEgPCAq
X19maXJzdDIpCiAgICAgIHJldHVybiAtMTsKICAgIGlmICgqX19maXJzdDIgPCAqX19maXJzdDEp
CiAgICAgIHJldHVybiAxOwogICAgKytfX2ZpcnN0MTsKICAgICsrX19maXJzdDI7CiAgfQogIGlm
IChfX2ZpcnN0MiA9PSBfX2xhc3QyKSB7CiAgICByZXR1cm4gIShfX2ZpcnN0MSA9PSBfX2xhc3Qx
KTsKICB9CiAgZWxzZSB7CiAgICByZXR1cm4gLTE7CiAgfQp9CgppbmxpbmUgaW50Cl9fbGV4aWNv
Z3JhcGhpY2FsX2NvbXBhcmVfM3dheShjb25zdCB1bnNpZ25lZCBjaGFyKiBfX2ZpcnN0MSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fbGFzdDEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBfX2Zp
cnN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IF9fbGFzdDIpCnsKICBjb25zdCBwdHJkaWZmX3QgX19sZW4xID0gX19sYXN0MSAtIF9fZmlyc3Qx
OwogIGNvbnN0IHB0cmRpZmZfdCBfX2xlbjIgPSBfX2xhc3QyIC0gX19maXJzdDI7CiAgY29uc3Qg
aW50IF9fcmVzdWx0ID0gbWVtY21wKF9fZmlyc3QxLCBfX2ZpcnN0MiwgbWluKF9fbGVuMSwgX19s
ZW4yKSk7CiAgcmV0dXJuIF9fcmVzdWx0ICE9IDAgPyBfX3Jlc3VsdCAKICAgICAgICAgICAgICAg
ICAgICAgICA6IChfX2xlbjEgPT0gX19sZW4yID8gMCA6IChfX2xlbjEgPCBfX2xlbjIgPyAtMSA6
IDEpKTsKfQoKaW5saW5lIGludCAKX19sZXhpY29ncmFwaGljYWxfY29tcGFyZV8zd2F5KGNvbnN0
IGNoYXIqIF9fZmlyc3QxLCBjb25zdCBjaGFyKiBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciogX19maXJzdDIsIGNvbnN0IGNoYXIqIF9fbGFzdDIpCnsK
CiAgcmV0dXJuIF9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfM3dheSgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2ZpcnN0MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgc2lnbmVkIGNoYXIqKSBfX2xhc3QxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9fZmlyc3Qy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzaWduZWQgY2hhciopIF9f
bGFzdDIpOwoKCgoKCgp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1
dEl0ZXIyPgppbnQgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfM3dheShfSW5wdXRJdGVyMSBfX2Zp
cnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIpCnsKICByZXR1cm4g
X19sZXhpY29ncmFwaGljYWxfY29tcGFyZV8zd2F5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0
MiwgX19sYXN0Mik7Cn0KCiAKCgoKIAogCiAKIyAzMCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9z
cGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy92ZWN0
b3IiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44
LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGxvYy5oIiAxIDMKIAoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCiAKIAoKCgoKCgoKCgoKCgoKIyAx
ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMgNAojIDM0MiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuOC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CgojIDUzICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9p
bmNsdWRlL2crKy0zL3N0bF9hbGxvYy5oIiAyIDMKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9zcGFyYy1zdW4tc29s
YXJpczIuOC9pbmNsdWRlL2Fzc2VydC5oIiAxIDMgNAogCgoKCgoKCiMgNTQgIi91c3IvbG9jYWwv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL3NwYXJj
LXN1bi1zb2xhcmlzMi44L2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAoKIyA1NiAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zdGxfYWxsb2MuaCIgMiAzCgoKCgoKCgoKCgoKIyA3OCAiL3Vzci9sb2NhbC9saWIv
Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9zdGxfYWxsb2MuaCIgMwoKIyA4NyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2Mu
aCIgMwoKIyA5NyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8y
Ljk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIgMwoKIyAxMTUgIi91
c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4u
Ly4uL2luY2x1ZGUvZysrLTMvc3RsX2FsbG9jLmgiIDMKCgogCgoKCgoKCiAKCgoKCgogCiAKCgoK
CgoKCgoKdGVtcGxhdGUgPGludCBfX2luc3Q+CmNsYXNzIF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRl
IHsKCnByaXZhdGU6CgogIHN0YXRpYyB2b2lkKiBfU19vb21fbWFsbG9jKHNpemVfdCk7CiAgc3Rh
dGljIHZvaWQqIF9TX29vbV9yZWFsbG9jKHZvaWQqLCBzaXplX3QpOwoKCiAgc3RhdGljIHZvaWQg
KCogX19tYWxsb2NfYWxsb2Nfb29tX2hhbmRsZXIpKCk7CgoKcHVibGljOgoKICBzdGF0aWMgdm9p
ZCogYWxsb2NhdGUoc2l6ZV90IF9fbikKICB7CiAgICB2b2lkKiBfX3Jlc3VsdCA9IG1hbGxvYyhf
X24pOwogICAgaWYgKDAgPT0gX19yZXN1bHQpIF9fcmVzdWx0ID0gX1Nfb29tX21hbGxvYyhfX24p
OwogICAgcmV0dXJuIF9fcmVzdWx0OwogIH0KCiAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZSh2b2lk
KiBfX3AsIHNpemVfdCAgKQogIHsKICAgIGZyZWUoX19wKTsKICB9CgogIHN0YXRpYyB2b2lkKiBy
ZWFsbG9jYXRlKHZvaWQqIF9fcCwgc2l6ZV90ICAsIHNpemVfdCBfX25ld19zeikKICB7CiAgICB2
b2lkKiBfX3Jlc3VsdCA9IHJlYWxsb2MoX19wLCBfX25ld19zeik7CiAgICBpZiAoMCA9PSBfX3Jl
c3VsdCkgX19yZXN1bHQgPSBfU19vb21fcmVhbGxvYyhfX3AsIF9fbmV3X3N6KTsKICAgIHJldHVy
biBfX3Jlc3VsdDsKICB9CgogIHN0YXRpYyB2b2lkICgqIF9fc2V0X21hbGxvY19oYW5kbGVyKHZv
aWQgKCpfX2YpKCkpKSgpCiAgewogICAgdm9pZCAoKiBfX29sZCkoKSA9IF9fbWFsbG9jX2FsbG9j
X29vbV9oYW5kbGVyOwogICAgX19tYWxsb2NfYWxsb2Nfb29tX2hhbmRsZXIgPSBfX2Y7CiAgICBy
ZXR1cm4oX19vbGQpOwogIH0KCn07CgogCgoKdGVtcGxhdGUgPGludCBfX2luc3Q+CnZvaWQgKCog
X19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0Pjo6X19tYWxsb2NfYWxsb2Nfb29tX2hhbmRs
ZXIpKCkgPSAwOwoKCnRlbXBsYXRlIDxpbnQgX19pbnN0Pgp2b2lkKgpfX21hbGxvY19hbGxvY190
ZW1wbGF0ZTxfX2luc3Q+OjpfU19vb21fbWFsbG9jKHNpemVfdCBfX24pCnsKICAgIHZvaWQgKCog
X19teV9tYWxsb2NfaGFuZGxlcikoKTsKICAgIHZvaWQqIF9fcmVzdWx0OwoKICAgIGZvciAoOzsp
IHsKICAgICAgICBfX215X21hbGxvY19oYW5kbGVyID0gX19tYWxsb2NfYWxsb2Nfb29tX2hhbmRs
ZXI7CiAgICAgICAgaWYgKDAgPT0gX19teV9tYWxsb2NfaGFuZGxlcikgeyBjZXJyIDw8ICJvdXQg
b2YgbWVtb3J5IiA8PCBlbmRsOyBleGl0KDEpIDsgfQogICAgICAgICgqX19teV9tYWxsb2NfaGFu
ZGxlcikoKTsKICAgICAgICBfX3Jlc3VsdCA9IG1hbGxvYyhfX24pOwogICAgICAgIGlmIChfX3Jl
c3VsdCkgcmV0dXJuKF9fcmVzdWx0KTsKICAgIH0KfQoKdGVtcGxhdGUgPGludCBfX2luc3Q+CnZv
aWQqIF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPF9faW5zdD46Ol9TX29vbV9yZWFsbG9jKHZvaWQq
IF9fcCwgc2l6ZV90IF9fbikKewogICAgdm9pZCAoKiBfX215X21hbGxvY19oYW5kbGVyKSgpOwog
ICAgdm9pZCogX19yZXN1bHQ7CgogICAgZm9yICg7OykgewogICAgICAgIF9fbXlfbWFsbG9jX2hh
bmRsZXIgPSBfX21hbGxvY19hbGxvY19vb21faGFuZGxlcjsKICAgICAgICBpZiAoMCA9PSBfX215
X21hbGxvY19oYW5kbGVyKSB7IGNlcnIgPDwgIm91dCBvZiBtZW1vcnkiIDw8IGVuZGw7IGV4aXQo
MSkgOyB9CiAgICAgICAgKCpfX215X21hbGxvY19oYW5kbGVyKSgpOwogICAgICAgIF9fcmVzdWx0
ID0gcmVhbGxvYyhfX3AsIF9fbik7CiAgICAgICAgaWYgKF9fcmVzdWx0KSByZXR1cm4oX19yZXN1
bHQpOwogICAgfQp9Cgp0eXBlZGVmIF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPDA+IG1hbGxvY19h
bGxvYzsKCnRlbXBsYXRlPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgpjbGFzcyBzaW1wbGVfYWxs
b2MgewoKcHVibGljOgogICAgc3RhdGljIF9UcCogYWxsb2NhdGUoc2l6ZV90IF9fbikKICAgICAg
eyByZXR1cm4gMCA9PSBfX24gPyAwIDogKF9UcCopIF9BbGxvYzo6YWxsb2NhdGUoX19uICogc2l6
ZW9mIChfVHApKTsgfQogICAgc3RhdGljIF9UcCogYWxsb2NhdGUodm9pZCkKICAgICAgeyByZXR1
cm4gKF9UcCopIF9BbGxvYzo6YWxsb2NhdGUoc2l6ZW9mIChfVHApKTsgfQogICAgc3RhdGljIHZv
aWQgZGVhbGxvY2F0ZShfVHAqIF9fcCwgc2l6ZV90IF9fbikKICAgICAgeyBpZiAoMCAhPSBfX24p
IF9BbGxvYzo6ZGVhbGxvY2F0ZShfX3AsIF9fbiAqIHNpemVvZiAoX1RwKSk7IH0KICAgIHN0YXRp
YyB2b2lkIGRlYWxsb2NhdGUoX1RwKiBfX3ApCiAgICAgIHsgX0FsbG9jOjpkZWFsbG9jYXRlKF9f
cCwgc2l6ZW9mIChfVHApKTsgfQp9OwoKIAogCiAKIAogCnRlbXBsYXRlIDxjbGFzcyBfQWxsb2M+
CmNsYXNzIGRlYnVnX2FsbG9jIHsKCnByaXZhdGU6CgogIGVudW0ge19TX2V4dHJhID0gOH07ICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgIAoKcHVi
bGljOgoKICBzdGF0aWMgdm9pZCogYWxsb2NhdGUoc2l6ZV90IF9fbikKICB7CiAgICBjaGFyKiBf
X3Jlc3VsdCA9IChjaGFyKilfQWxsb2M6OmFsbG9jYXRlKF9fbiArIF9TX2V4dHJhKTsKICAgICoo
c2l6ZV90KilfX3Jlc3VsdCA9IF9fbjsKICAgIHJldHVybiBfX3Jlc3VsdCArIF9TX2V4dHJhOwog
IH0KCiAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZSh2b2lkKiBfX3AsIHNpemVfdCBfX24pCiAgewog
ICAgY2hhciogX19yZWFsX3AgPSAoY2hhciopX19wIC0gX1NfZXh0cmE7CiAgICAoKHZvaWQpIDAp
IDsKICAgIF9BbGxvYzo6ZGVhbGxvY2F0ZShfX3JlYWxfcCwgX19uICsgX1NfZXh0cmEpOwogIH0K
CiAgc3RhdGljIHZvaWQqIHJlYWxsb2NhdGUodm9pZCogX19wLCBzaXplX3QgX19vbGRfc3osIHNp
emVfdCBfX25ld19zeikKICB7CiAgICBjaGFyKiBfX3JlYWxfcCA9IChjaGFyKilfX3AgLSBfU19l
eHRyYTsKICAgICgodm9pZCkgMCkgOwogICAgY2hhciogX19yZXN1bHQgPSAoY2hhciopCiAgICAg
IF9BbGxvYzo6cmVhbGxvY2F0ZShfX3JlYWxfcCwgX19vbGRfc3ogKyBfU19leHRyYSwgX19uZXdf
c3ogKyBfU19leHRyYSk7CiAgICAqKHNpemVfdCopX19yZXN1bHQgPSBfX25ld19zejsKICAgIHJl
dHVybiBfX3Jlc3VsdCArIF9TX2V4dHJhOwogIH0KCn07CgoKCgoKCgoKCgogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKCiAKIAogCiAKIAogCiAKIAogCgoKCgoKCgp0ZW1wbGF0ZSA8Ym9vbCB0
aHJlYWRzLCBpbnQgaW5zdD4KY2xhc3MgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlIHsKCnByaXZh
dGU6CiAgIAogICAKCiAgICBlbnVtIHtfQUxJR04gPSA4fTsKICAgIGVudW0ge19NQVhfQllURVMg
PSAxMjh9OwogICAgZW51bSB7X05GUkVFTElTVFMgPSBfTUFYX0JZVEVTL19BTElHTn07CgogIHN0
YXRpYyBzaXplX3QKICBfU19yb3VuZF91cChzaXplX3QgX19ieXRlcykKICAgIHsgcmV0dXJuICgo
KF9fYnl0ZXMpICsgX0FMSUdOLTEpICYgfihfQUxJR04gLSAxKSk7IH0KCnByaXZhdGUgOgogIHVu
aW9uIF9PYmogewogICAgICAgIHVuaW9uIF9PYmoqIF9NX2ZyZWVfbGlzdF9saW5rOwogICAgICAg
IGNoYXIgX01fY2xpZW50X2RhdGFbMV07ICAgICAKICB9Owpwcml2YXRlOgoKCgoKICAgIHN0YXRp
YyBfT2JqKiAgIF9TX2ZyZWVfbGlzdFtfTkZSRUVMSVNUU107CgogIHN0YXRpYyAgc2l6ZV90IF9T
X2ZyZWVsaXN0X2luZGV4KHNpemVfdCBfX2J5dGVzKSB7CiAgICAgICAgcmV0dXJuICgoKF9fYnl0
ZXMpICsgX0FMSUdOLTEpL19BTElHTiAtIDEpOwogIH0KCiAgIAogIHN0YXRpYyB2b2lkKiBfU19y
ZWZpbGwoc2l6ZV90IF9fbik7CiAgIAogICAKICBzdGF0aWMgY2hhciogX1NfY2h1bmtfYWxsb2Mo
c2l6ZV90IF9fc2l6ZSwgaW50JiBfX25vYmpzKTsKCiAgIAogIHN0YXRpYyBjaGFyKiBfU19zdGFy
dF9mcmVlOwogIHN0YXRpYyBjaGFyKiBfU19lbmRfZnJlZTsKICBzdGF0aWMgc2l6ZV90IF9TX2hl
YXBfc2l6ZTsKCgoKCgoKCgoKCgoKCgoKIyAzODkgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2Fs
bG9jLmgiIDMKCgogICAgY2xhc3MgX0xvY2sgewogICAgICAgIHB1YmxpYzoKICAgICAgICAgICAg
X0xvY2soKSB7ICA7IH0KICAgICAgICAgICAgfl9Mb2NrKCkgeyAgOyB9CiAgICB9OwogICAgZnJp
ZW5kIGNsYXNzIF9Mb2NrOwoKcHVibGljOgoKICAgCiAgc3RhdGljIHZvaWQqIGFsbG9jYXRlKHNp
emVfdCBfX24pCiAgewogICAgX09iaiogICogX19teV9mcmVlX2xpc3Q7CiAgICBfT2JqKiAgIF9f
cmVzdWx0OwoKICAgIGlmIChfX24gPiAoc2l6ZV90KSBfTUFYX0JZVEVTKSB7CiAgICAgICAgcmV0
dXJuKG1hbGxvY19hbGxvYzo6YWxsb2NhdGUoX19uKSk7CiAgICB9CiAgICBfX215X2ZyZWVfbGlz
dCA9IF9TX2ZyZWVfbGlzdCArIF9TX2ZyZWVsaXN0X2luZGV4KF9fbik7CiAgICAgCiAgICAgCiAg
ICAgCgoKCgogICAgX19yZXN1bHQgPSAqX19teV9mcmVlX2xpc3Q7CiAgICBpZiAoX19yZXN1bHQg
PT0gMCkgewogICAgICAgIHZvaWQqIF9fciA9IF9TX3JlZmlsbChfU19yb3VuZF91cChfX24pKTsK
ICAgICAgICByZXR1cm4gX19yOwogICAgfQogICAgKl9fbXlfZnJlZV9saXN0ID0gX19yZXN1bHQg
LT4gX01fZnJlZV9saXN0X2xpbms7CiAgICByZXR1cm4gKF9fcmVzdWx0KTsKICB9OwoKICAgCiAg
c3RhdGljIHZvaWQgZGVhbGxvY2F0ZSh2b2lkKiBfX3AsIHNpemVfdCBfX24pCiAgewogICAgX09i
aiogX19xID0gKF9PYmoqKV9fcDsKICAgIF9PYmoqICAqIF9fbXlfZnJlZV9saXN0OwoKICAgIGlm
IChfX24gPiAoc2l6ZV90KSBfTUFYX0JZVEVTKSB7CiAgICAgICAgbWFsbG9jX2FsbG9jOjpkZWFs
bG9jYXRlKF9fcCwgX19uKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBfX215X2ZyZWVfbGlz
dCA9IF9TX2ZyZWVfbGlzdCArIF9TX2ZyZWVsaXN0X2luZGV4KF9fbik7CiAgICAgCgoKCgogICAg
X19xIC0+IF9NX2ZyZWVfbGlzdF9saW5rID0gKl9fbXlfZnJlZV9saXN0OwogICAgKl9fbXlfZnJl
ZV9saXN0ID0gX19xOwogICAgIAogIH0KCiAgc3RhdGljIHZvaWQqIHJlYWxsb2NhdGUodm9pZCog
X19wLCBzaXplX3QgX19vbGRfc3osIHNpemVfdCBfX25ld19zeik7Cgp9IDsKCnR5cGVkZWYgX19k
ZWZhdWx0X2FsbG9jX3RlbXBsYXRlPCBmYWxzZSAsIDA+IGFsbG9jOwp0eXBlZGVmIF9fZGVmYXVs
dF9hbGxvY190ZW1wbGF0ZTxmYWxzZSwgMD4gc2luZ2xlX2NsaWVudF9hbGxvYzsKCgoKIAogCiAK
IAp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CmNoYXIqCl9fZGVmYXVsdF9h
bGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD46Ol9TX2NodW5rX2FsbG9jKHNpemVfdCBf
X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCYgX19ub2JqcykKewogICAgY2hhciogX19yZXN1bHQ7CiAgICBzaXplX3Qg
X190b3RhbF9ieXRlcyA9IF9fc2l6ZSAqIF9fbm9ianM7CiAgICBzaXplX3QgX19ieXRlc19sZWZ0
ID0gX1NfZW5kX2ZyZWUgLSBfU19zdGFydF9mcmVlOwoKICAgIGlmIChfX2J5dGVzX2xlZnQgPj0g
X190b3RhbF9ieXRlcykgewogICAgICAgIF9fcmVzdWx0ID0gX1Nfc3RhcnRfZnJlZTsKICAgICAg
ICBfU19zdGFydF9mcmVlICs9IF9fdG90YWxfYnl0ZXM7CiAgICAgICAgcmV0dXJuKF9fcmVzdWx0
KTsKICAgIH0gZWxzZSBpZiAoX19ieXRlc19sZWZ0ID49IF9fc2l6ZSkgewogICAgICAgIF9fbm9i
anMgPSAoaW50KShfX2J5dGVzX2xlZnQvX19zaXplKTsKICAgICAgICBfX3RvdGFsX2J5dGVzID0g
X19zaXplICogX19ub2JqczsKICAgICAgICBfX3Jlc3VsdCA9IF9TX3N0YXJ0X2ZyZWU7CiAgICAg
ICAgX1Nfc3RhcnRfZnJlZSArPSBfX3RvdGFsX2J5dGVzOwogICAgICAgIHJldHVybihfX3Jlc3Vs
dCk7CiAgICB9IGVsc2UgewogICAgICAgIHNpemVfdCBfX2J5dGVzX3RvX2dldCA9CgkgIDIgKiBf
X3RvdGFsX2J5dGVzICsgX1Nfcm91bmRfdXAoX1NfaGVhcF9zaXplID4+IDQpOwogICAgICAgICAK
ICAgICAgICBpZiAoX19ieXRlc19sZWZ0ID4gMCkgewogICAgICAgICAgICBfT2JqKiAgKiBfX215
X2ZyZWVfbGlzdCA9CiAgICAgICAgICAgICAgICAgICAgICAgIF9TX2ZyZWVfbGlzdCArIF9TX2Zy
ZWVsaXN0X2luZGV4KF9fYnl0ZXNfbGVmdCk7CgogICAgICAgICAgICAoKF9PYmoqKV9TX3N0YXJ0
X2ZyZWUpIC0+IF9NX2ZyZWVfbGlzdF9saW5rID0gKl9fbXlfZnJlZV9saXN0OwogICAgICAgICAg
ICAqX19teV9mcmVlX2xpc3QgPSAoX09iaiopX1Nfc3RhcnRfZnJlZTsKICAgICAgICB9CiAgICAg
ICAgX1Nfc3RhcnRfZnJlZSA9IChjaGFyKiltYWxsb2MoX19ieXRlc190b19nZXQpOwogICAgICAg
IGlmICgwID09IF9TX3N0YXJ0X2ZyZWUpIHsKICAgICAgICAgICAgc2l6ZV90IF9faTsKICAgICAg
ICAgICAgX09iaiogICogX19teV9mcmVlX2xpc3Q7CgkgICAgX09iaiogX19wOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICAKICAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgKF9faSA9IF9f
c2l6ZTsgX19pIDw9IF9NQVhfQllURVM7IF9faSArPSBfQUxJR04pIHsKICAgICAgICAgICAgICAg
IF9fbXlfZnJlZV9saXN0ID0gX1NfZnJlZV9saXN0ICsgX1NfZnJlZWxpc3RfaW5kZXgoX19pKTsK
ICAgICAgICAgICAgICAgIF9fcCA9ICpfX215X2ZyZWVfbGlzdDsKICAgICAgICAgICAgICAgIGlm
ICgwICE9IF9fcCkgewogICAgICAgICAgICAgICAgICAgICpfX215X2ZyZWVfbGlzdCA9IF9fcCAt
PiBfTV9mcmVlX2xpc3RfbGluazsKICAgICAgICAgICAgICAgICAgICBfU19zdGFydF9mcmVlID0g
KGNoYXIqKV9fcDsKICAgICAgICAgICAgICAgICAgICBfU19lbmRfZnJlZSA9IF9TX3N0YXJ0X2Zy
ZWUgKyBfX2k7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuKF9TX2NodW5rX2FsbG9jKF9fc2l6
ZSwgX19ub2JqcykpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCSAgICBfU19lbmRfZnJlZSA9IDA7CSAK
ICAgICAgICAgICAgX1Nfc3RhcnRfZnJlZSA9IChjaGFyKiltYWxsb2NfYWxsb2M6OmFsbG9jYXRl
KF9fYnl0ZXNfdG9fZ2V0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAgICAgICAg
ICAKICAgICAgICB9CiAgICAgICAgX1NfaGVhcF9zaXplICs9IF9fYnl0ZXNfdG9fZ2V0OwogICAg
ICAgIF9TX2VuZF9mcmVlID0gX1Nfc3RhcnRfZnJlZSArIF9fYnl0ZXNfdG9fZ2V0OwogICAgICAg
IHJldHVybihfU19jaHVua19hbGxvYyhfX3NpemUsIF9fbm9ianMpKTsKICAgIH0KfQoKCiAKIAog
CnRlbXBsYXRlIDxib29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4Kdm9pZCoKX19kZWZhdWx0X2Fs
bG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0Pjo6X1NfcmVmaWxsKHNpemVfdCBfX24pCnsK
ICAgIGludCBfX25vYmpzID0gMjA7CiAgICBjaGFyKiBfX2NodW5rID0gX1NfY2h1bmtfYWxsb2Mo
X19uLCBfX25vYmpzKTsKICAgIF9PYmoqICAqIF9fbXlfZnJlZV9saXN0OwogICAgX09iaiogX19y
ZXN1bHQ7CiAgICBfT2JqKiBfX2N1cnJlbnRfb2JqOwogICAgX09iaiogX19uZXh0X29iajsKICAg
IGludCBfX2k7CgogICAgaWYgKDEgPT0gX19ub2JqcykgcmV0dXJuKF9fY2h1bmspOwogICAgX19t
eV9mcmVlX2xpc3QgPSBfU19mcmVlX2xpc3QgKyBfU19mcmVlbGlzdF9pbmRleChfX24pOwoKICAg
ICAKICAgICAgX19yZXN1bHQgPSAoX09iaiopX19jaHVuazsKICAgICAgKl9fbXlfZnJlZV9saXN0
ID0gX19uZXh0X29iaiA9IChfT2JqKikoX19jaHVuayArIF9fbik7CiAgICAgIGZvciAoX19pID0g
MTsgOyBfX2krKykgewogICAgICAgIF9fY3VycmVudF9vYmogPSBfX25leHRfb2JqOwogICAgICAg
IF9fbmV4dF9vYmogPSAoX09iaiopKChjaGFyKilfX25leHRfb2JqICsgX19uKTsKICAgICAgICBp
ZiAoX19ub2JqcyAtIDEgPT0gX19pKSB7CiAgICAgICAgICAgIF9fY3VycmVudF9vYmogLT4gX01f
ZnJlZV9saXN0X2xpbmsgPSAwOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICBfX2N1cnJlbnRfb2JqIC0+IF9NX2ZyZWVfbGlzdF9saW5rID0gX19uZXh0X29i
ajsKICAgICAgICB9CiAgICAgIH0KICAgIHJldHVybihfX3Jlc3VsdCk7Cn0KCnRlbXBsYXRlIDxi
b29sIHRocmVhZHMsIGludCBpbnN0Pgp2b2lkKgpfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8dGhy
ZWFkcywgaW5zdD46OnJlYWxsb2NhdGUodm9pZCogX19wLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fb2xkX3N6LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbmV3X3N6
KQp7CiAgICB2b2lkKiBfX3Jlc3VsdDsKICAgIHNpemVfdCBfX2NvcHlfc3o7CgogICAgaWYgKF9f
b2xkX3N6ID4gKHNpemVfdCkgX01BWF9CWVRFUyAmJiBfX25ld19zeiA+IChzaXplX3QpIF9NQVhf
QllURVMpIHsKICAgICAgICByZXR1cm4ocmVhbGxvYyhfX3AsIF9fbmV3X3N6KSk7CiAgICB9CiAg
ICBpZiAoX1Nfcm91bmRfdXAoX19vbGRfc3opID09IF9TX3JvdW5kX3VwKF9fbmV3X3N6KSkgcmV0
dXJuKF9fcCk7CiAgICBfX3Jlc3VsdCA9IGFsbG9jYXRlKF9fbmV3X3N6KTsKICAgIF9fY29weV9z
eiA9IF9fbmV3X3N6ID4gX19vbGRfc3o/IF9fb2xkX3N6IDogX19uZXdfc3o7CiAgICBtZW1jcHko
X19yZXN1bHQsIF9fcCwgX19jb3B5X3N6KTsKICAgIGRlYWxsb2NhdGUoX19wLCBfX29sZF9zeik7
CiAgICByZXR1cm4oX19yZXN1bHQpOwp9CgoKCgoKCgoKCgoKCgoKCiMgNjAyICIvdXNyL2xvY2Fs
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNs
dWRlL2crKy0zL3N0bF9hbGxvYy5oIiAzCgoKIyA2ODkgIi91c3IvbG9jYWwvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3Rs
X2FsbG9jLmgiIDMKCgp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CmNoYXIq
IF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD46Ol9TX3N0YXJ0X2Zy
ZWUgPSAwOwoKdGVtcGxhdGUgPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0PgpjaGFyKiBfX2Rl
ZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+OjpfU19lbmRfZnJlZSA9IDA7
Cgp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CnNpemVfdCBfX2RlZmF1bHRf
YWxsb2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+OjpfU19oZWFwX3NpemUgPSAwOwoKdGVt
cGxhdGUgPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0PgpfX2RlZmF1bHRfYWxsb2NfdGVtcGxh
dGU8X190aHJlYWRzLCBfX2luc3Q+OjpfT2JqKiAgCl9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxf
X3RocmVhZHMsIF9faW5zdD4gOjpfU19mcmVlX2xpc3RbCiAgICBfTkZSRUVMSVNUUwpdID0gezAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIH07CiAKIAogCgoK
CgoKCgoKCgogCiAKIAogCiAKIAogCgojIDEwNDMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2Fs
bG9jLmgiIDMKCgoKCgoKIAoKCgoKCiAKIAogCiMgMzEgIi91c3IvbG9jYWwvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvdmVj
dG9yIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIu
OC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29uc3RydWN0LmgiIDEgMwog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKIAogCgp0ZW1wbGF0ZSA8Y2xh
c3MgX1RwPgppbmxpbmUgdm9pZCBkZXN0cm95KF9UcCogX19wb2ludGVyKSB7CiAgX19wb2ludGVy
LT5+X1RwKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIHZvaWQg
Y29uc3RydWN0KF9UMSogX19wLCBjb25zdCBfVDImIF9fdmFsdWUpIHsKICBuZXcgKF9fcCkgX1Qx
KF9fdmFsdWUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxPgppbmxpbmUgdm9pZCBjb25zdHJ1Y3Qo
X1QxKiBfX3ApIHsKICBuZXcgKF9fcCkgX1QxKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2Fy
ZEl0ZXJhdG9yPgppbmxpbmUgdm9pZApfX2Rlc3Ryb3lfYXV4KF9Gb3J3YXJkSXRlcmF0b3IgX19m
aXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsIF9fZmFsc2VfdHlwZSkKewogIGZvciAoIDsg
X19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgIGRlc3Ryb3koJipfX2ZpcnN0KTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CmlubGluZSB2b2lkIF9fZGVzdHJveV9h
dXgoX0ZvcndhcmRJdGVyYXRvciwgX0ZvcndhcmRJdGVyYXRvciwgX190cnVlX3R5cGUpIHt9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvciwgY2xhc3MgX1RwPgppbmxpbmUgdm9pZApf
X2Rlc3Ryb3koX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFz
dCwgX1RwKikKewogIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxfVHA+OjpoYXNfdHJp
dmlhbF9kZXN0cnVjdG9yCiAgICAgICAgICBfVHJpdmlhbF9kZXN0cnVjdG9yOwogIF9fZGVzdHJv
eV9hdXgoX19maXJzdCwgX19sYXN0LCBfVHJpdmlhbF9kZXN0cnVjdG9yKCkpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4KaW5saW5lIHZvaWQgZGVzdHJveShfRm9yd2FyZEl0
ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0KSB7CiAgX19kZXN0cm95KF9f
Zmlyc3QsIF9fbGFzdCwgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKaW5saW5lIHZvaWQg
ZGVzdHJveShjaGFyKiwgY2hhciopIHt9CmlubGluZSB2b2lkIGRlc3Ryb3kod2NoYXJfdCosIHdj
aGFyX3QqKSB7fQoKIAoKCgogCiAKIAojIDMyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3ZlY3RvciIg
MiAzCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45
NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3VuaW5pdGlhbGl6ZWQuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKIAoKIAogCnRlbXBsYXRlIDxjbGFz
cyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBfRm9yd2FyZEl0ZXIgCl9f
dW5pbml0aWFsaXplZF9jb3B5X2F1eChfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19s
YXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgX190cnVlX3R5cGUpCnsKICByZXR1cm4gY29weShfX2ZpcnN0
LCBfX2xhc3QsIF9fcmVzdWx0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNz
IF9Gb3J3YXJkSXRlcj4KX0ZvcndhcmRJdGVyIApfX3VuaW5pdGlhbGl6ZWRfY29weV9hdXgoX0lu
cHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fZmFs
c2VfdHlwZSkKewogIF9Gb3J3YXJkSXRlciBfX2N1ciA9IF9fcmVzdWx0OwogIHRyeSAgewogICAg
Zm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0LCArK19fY3VyKQogICAgICBjb25z
dHJ1Y3QoJipfX2N1ciwgKl9fZmlyc3QpOwogICAgcmV0dXJuIF9fY3VyOwogIH0KICBjYXRjaCgu
Li4pIHsgIGRlc3Ryb3koX19yZXN1bHQsIF9fY3VyKSA7IHRocm93OyB9IDsKfQoKCnRlbXBsYXRl
IDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5l
IF9Gb3J3YXJkSXRlcgpfX3VuaW5pdGlhbGl6ZWRfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9J
bnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1
bHQsIF9UcCopCnsKICB0eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1RwPjo6aXNfUE9E
X3R5cGUgX0lzX1BPRDsKICByZXR1cm4gX191bmluaXRpYWxpemVkX2NvcHlfYXV4KF9fZmlyc3Qs
IF9fbGFzdCwgX19yZXN1bHQsIF9Jc19QT0QoKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJ
dGVyLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBfRm9yd2FyZEl0ZXIKICB1bmluaXRpYWxp
emVkX2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAg
ICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0KQp7CiAgcmV0dXJuIF9fdW5pbml0aWFs
aXplZF9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fdmFsdWVfdHlwZSggX19yZXN1bHQgKSApOwp9CgppbmxpbmUgY2hhciogdW5p
bml0aWFsaXplZF9jb3B5KGNvbnN0IGNoYXIqIF9fZmlyc3QsIGNvbnN0IGNoYXIqIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBfX3Jlc3VsdCkgewogIG1lbW1v
dmUoX19yZXN1bHQsIF9fZmlyc3QsIF9fbGFzdCAtIF9fZmlyc3QpOwogIHJldHVybiBfX3Jlc3Vs
dCArIChfX2xhc3QgLSBfX2ZpcnN0KTsKfQoKaW5saW5lIHdjaGFyX3QqIAp1bmluaXRpYWxpemVk
X2NvcHkoY29uc3Qgd2NoYXJfdCogX19maXJzdCwgY29uc3Qgd2NoYXJfdCogX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgd2NoYXJfdCogX19yZXN1bHQpCnsKICBtZW1tb3ZlKF9fcmVzdWx0LCBf
X2ZpcnN0LCBzaXplb2Yod2NoYXJfdCkgKiAoX19sYXN0IC0gX19maXJzdCkpOwogIHJldHVybiBf
X3Jlc3VsdCArIChfX2xhc3QgLSBfX2ZpcnN0KTsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1
dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CnBhaXI8X0lucHV0SXRlciwg
X0ZvcndhcmRJdGVyPgpfX3VuaW5pdGlhbGl6ZWRfY29weV9uKF9JbnB1dEl0ZXIgX19maXJzdCwg
X1NpemUgX19jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1
bHQsCiAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKQp7CiAgX0Zvcndh
cmRJdGVyIF9fY3VyID0gX19yZXN1bHQ7CiAgdHJ5ICB7CiAgICBmb3IgKCA7IF9fY291bnQgPiAw
IDsgLS1fX2NvdW50LCArK19fZmlyc3QsICsrX19jdXIpIAogICAgICBjb25zdHJ1Y3QoJipfX2N1
ciwgKl9fZmlyc3QpOwogICAgcmV0dXJuIHBhaXI8X0lucHV0SXRlciwgX0ZvcndhcmRJdGVyPihf
X2ZpcnN0LCBfX2N1cik7CiAgfQogIGNhdGNoKC4uLikgeyAgZGVzdHJveShfX3Jlc3VsdCwgX19j
dXIpIDsgdGhyb3c7IH0gOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNs
YXNzIF9TaXplLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBwYWlyPF9SYW5kb21BY2Nlc3NJ
dGVyLCBfRm9yd2FyZEl0ZXI+Cl9fdW5pbml0aWFsaXplZF9jb3B5X24oX1JhbmRvbUFjY2Vzc0l0
ZXIgX19maXJzdCwgX1NpemUgX19jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2Fy
ZEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVy
YXRvcl90YWcpIHsKICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QgPSBfX2ZpcnN0ICsgX19jb3Vu
dDsKICByZXR1cm4gcGFpcjxfUmFuZG9tQWNjZXNzSXRlciwgX0ZvcndhcmRJdGVyPigKICAgICAg
ICAgICAgICAgICBfX2xhc3QsCiAgICAgICAgICAgICAgICAgdW5pbml0aWFsaXplZF9jb3B5KF9f
Zmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIs
IGNsYXNzIF9TaXplLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBwYWlyPF9JbnB1dEl0ZXIs
IF9Gb3J3YXJkSXRlcj4KX191bmluaXRpYWxpemVkX2NvcHlfbihfSW5wdXRJdGVyIF9fZmlyc3Qs
IF9TaXplIF9fY291bnQsCiAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3Vs
dCkgewogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRfY29weV9uKF9fZmlyc3QsIF9fY291bnQsIF9f
cmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdv
cnkoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1Np
emUsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5lIHBhaXI8X0lucHV0SXRlciwgX0ZvcndhcmRJ
dGVyPgp1bmluaXRpYWxpemVkX2NvcHlfbihfSW5wdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291
bnQsCiAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCkgewogIHJldHVy
biBfX3VuaW5pdGlhbGl6ZWRfY29weV9uKF9fZmlyc3QsIF9fY291bnQsIF9fcmVzdWx0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3Qg
KSApOwp9CgogCiAKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwPgppbmxp
bmUgdm9pZApfX3VuaW5pdGlhbGl6ZWRfZmlsbF9hdXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9G
b3J3YXJkSXRlciBfX2xhc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBf
X3gsIF9fdHJ1ZV90eXBlKQp7CiAgZmlsbChfX2ZpcnN0LCBfX2xhc3QsIF9feCk7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4Kdm9pZApfX3VuaW5pdGlhbGl6ZWRf
ZmlsbF9hdXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIAogICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3gsIF9fZmFsc2VfdHlwZSkKewogIF9G
b3J3YXJkSXRlciBfX2N1ciA9IF9fZmlyc3Q7CiAgdHJ5ICB7CiAgICBmb3IgKCA7IF9fY3VyICE9
IF9fbGFzdDsgKytfX2N1cikKICAgICAgY29uc3RydWN0KCYqX19jdXIsIF9feCk7CiAgfQogIGNh
dGNoKC4uLikgeyAgZGVzdHJveShfX2ZpcnN0LCBfX2N1cikgOyB0aHJvdzsgfSA7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX1RwMT4KaW5saW5lIHZv
aWQgX191bmluaXRpYWxpemVkX2ZpbGwoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19sYXN0LCBjb25zdCBfVHAmIF9f
eCwgX1RwMSopCnsKICB0eXBlZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1RwMT46OmlzX1BP
RF90eXBlIF9Jc19QT0Q7CiAgX191bmluaXRpYWxpemVkX2ZpbGxfYXV4KF9fZmlyc3QsIF9fbGFz
dCwgX194LCBfSXNfUE9EKCkpOwogICAgICAgICAgICAgICAgICAgCn0KCnRlbXBsYXRlIDxjbGFz
cyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5lIHZvaWQgdW5pbml0aWFsaXplZF9maWxs
KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Zv
cndhcmRJdGVyIF9fbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBf
VHAmIF9feCkKewogIF9fdW5pbml0aWFsaXplZF9maWxsKF9fZmlyc3QsIF9fbGFzdCwgX194LCBf
X3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSApOwp9CgogCiAKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJk
SXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9UcD4KaW5saW5lIF9Gb3J3YXJkSXRlcgpfX3VuaW5p
dGlhbGl6ZWRfZmlsbF9uX2F1eChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX1NpemUgX19uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCwgX190cnVlX3R5cGUpCnsKICBy
ZXR1cm4gZmlsbF9uKF9fZmlyc3QsIF9fbiwgX194KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3
YXJkSXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9UcD4KX0ZvcndhcmRJdGVyCl9fdW5pbml0aWFs
aXplZF9maWxsX25fYXV4KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfU2l6ZSBfX24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX194LCBfX2ZhbHNlX3R5cGUpCnsKICBfRm9y
d2FyZEl0ZXIgX19jdXIgPSBfX2ZpcnN0OwogIHRyeSAgewogICAgZm9yICggOyBfX24gPiAwOyAt
LV9fbiwgKytfX2N1cikKICAgICAgY29uc3RydWN0KCYqX19jdXIsIF9feCk7CiAgICByZXR1cm4g
X19jdXI7CiAgfQogIGNhdGNoKC4uLikgeyAgZGVzdHJveShfX2ZpcnN0LCBfX2N1cikgOyB0aHJv
dzsgfSA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFz
cyBfVHAsIGNsYXNzIF9UcDE+CmlubGluZSBfRm9yd2FyZEl0ZXIgCl9fdW5pbml0aWFsaXplZF9m
aWxsX24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9TaXplIF9fbiwgY29uc3QgX1RwJiBfX3gsIF9U
cDEqKQp7CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRzPF9UcDE+Ojppc19QT0RfdHlw
ZSBfSXNfUE9EOwogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2F1eChfX2ZpcnN0LCBf
X24sIF9feCwgX0lzX1BPRCgpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xh
c3MgX1NpemUsIGNsYXNzIF9UcD4KaW5saW5lIF9Gb3J3YXJkSXRlciAKdW5pbml0aWFsaXplZF9m
aWxsX24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9TaXplIF9fbiwgY29uc3QgX1RwJiBfX3gpCnsK
ICByZXR1cm4gX191bmluaXRpYWxpemVkX2ZpbGxfbihfX2ZpcnN0LCBfX24sIF9feCwgX192YWx1
ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKIAogCgogCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lu
cHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBf
Rm9yd2FyZEl0ZXIKX191bmluaXRpYWxpemVkX2NvcHlfY29weShfSW5wdXRJdGVyMSBfX2ZpcnN0
MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJ
dGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQpCnsKICBfRm9yd2FyZEl0ZXIgX19taWQgPSB1bmlu
aXRpYWxpemVkX2NvcHkoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KTsKICB0cnkgIHsKICAg
IHJldHVybiB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdDIsIF9fbGFzdDIsIF9fbWlkKTsKICB9
CiAgY2F0Y2goLi4uKSB7ICBkZXN0cm95KF9fcmVzdWx0LCBfX21pZCkgOyB0aHJvdzsgfSA7Cn0K
CiAKIAogCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0lu
cHV0SXRlcj4KaW5saW5lIF9Gb3J3YXJkSXRlciAKX191bmluaXRpYWxpemVkX2ZpbGxfY29weShf
Rm9yd2FyZEl0ZXIgX19yZXN1bHQsIF9Gb3J3YXJkSXRlciBfX21pZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBfVHAmIF9feCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5w
dXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0KQp7CiAgdW5pbml0aWFsaXplZF9maWxs
KF9fcmVzdWx0LCBfX21pZCwgX194KTsKICB0cnkgIHsKICAgIHJldHVybiB1bmluaXRpYWxpemVk
X2NvcHkoX19maXJzdCwgX19sYXN0LCBfX21pZCk7CiAgfQogIGNhdGNoKC4uLikgeyAgZGVzdHJv
eShfX3Jlc3VsdCwgX19taWQpIDsgdGhyb3c7IH0gOwp9CgogCiAKIAp0ZW1wbGF0ZSA8Y2xhc3Mg
X0lucHV0SXRlciwgY2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+CmlubGluZSB2b2lkCl9f
dW5pbml0aWFsaXplZF9jb3B5X2ZpbGwoX0lucHV0SXRlciBfX2ZpcnN0MSwgX0lucHV0SXRlciBf
X2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2ZpcnN0Miwg
X0ZvcndhcmRJdGVyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1Rw
JiBfX3gpCnsKICBfRm9yd2FyZEl0ZXIgX19taWQyID0gdW5pbml0aWFsaXplZF9jb3B5KF9fZmly
c3QxLCBfX2xhc3QxLCBfX2ZpcnN0Mik7CiAgdHJ5ICB7CiAgICB1bmluaXRpYWxpemVkX2ZpbGwo
X19taWQyLCBfX2xhc3QyLCBfX3gpOwogIH0KICBjYXRjaCguLi4pIHsgIGRlc3Ryb3koX19maXJz
dDIsIF9fbWlkMikgOyB0aHJvdzsgfSA7Cn0KCiAKCgoKIAogCiAKIyAzMyAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy92ZWN0b3IiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF92ZWN0b3Iu
aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKICAKCgoKCgoKIAogCiAK
IAogCgojIDExOCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8y
Ljk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfdmVjdG9yLmgiIDMKCgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+IApjbGFzcyBfVmVjdG9yX2Jhc2UgewpwdWJsaWM6
CiAgdHlwZWRlZiBfQWxsb2MgYWxsb2NhdG9yX3R5cGU7CiAgYWxsb2NhdG9yX3R5cGUgZ2V0X2Fs
bG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIGFsbG9jYXRvcl90eXBlKCk7IH0KCiAgX1ZlY3Rvcl9i
YXNlKGNvbnN0IF9BbGxvYyYpCiAgICA6IF9NX3N0YXJ0KDApLCBfTV9maW5pc2goMCksIF9NX2Vu
ZF9vZl9zdG9yYWdlKDApIHt9CiAgX1ZlY3Rvcl9iYXNlKHNpemVfdCBfX24sIGNvbnN0IF9BbGxv
YyYpCiAgICA6IF9NX3N0YXJ0KDApLCBfTV9maW5pc2goMCksIF9NX2VuZF9vZl9zdG9yYWdlKDAp
IAogIHsKICAgIF9NX3N0YXJ0ID0gX01fYWxsb2NhdGUoX19uKTsKICAgIF9NX2ZpbmlzaCA9IF9N
X3N0YXJ0OwogICAgX01fZW5kX29mX3N0b3JhZ2UgPSBfTV9zdGFydCArIF9fbjsKICB9CgogIH5f
VmVjdG9yX2Jhc2UoKSB7IF9NX2RlYWxsb2NhdGUoX01fc3RhcnQsIF9NX2VuZF9vZl9zdG9yYWdl
IC0gX01fc3RhcnQpOyB9Cgpwcm90ZWN0ZWQ6CiAgX1RwKiBfTV9zdGFydDsKICBfVHAqIF9NX2Zp
bmlzaDsKICBfVHAqIF9NX2VuZF9vZl9zdG9yYWdlOwoKICB0eXBlZGVmIHNpbXBsZV9hbGxvYzxf
VHAsIF9BbGxvYz4gX01fZGF0YV9hbGxvY2F0b3I7CiAgX1RwKiBfTV9hbGxvY2F0ZShzaXplX3Qg
X19uKQogICAgeyByZXR1cm4gX01fZGF0YV9hbGxvY2F0b3I6OmFsbG9jYXRlKF9fbik7IH0KICB2
b2lkIF9NX2RlYWxsb2NhdGUoX1RwKiBfX3AsIHNpemVfdCBfX24pIAogICAgeyBfTV9kYXRhX2Fs
bG9jYXRvcjo6ZGVhbGxvY2F0ZShfX3AsIF9fbik7IH0KfTsKCgoKdGVtcGxhdGUgPGNsYXNzIF9U
cCwgY2xhc3MgX0FsbG9jID0gYWxsb2MgID4KY2xhc3MgdmVjdG9yIDogcHJvdGVjdGVkIF9WZWN0
b3JfYmFzZTxfVHAsIF9BbGxvYz4gCnsKcHJpdmF0ZToKICB0eXBlZGVmIF9WZWN0b3JfYmFzZTxf
VHAsIF9BbGxvYz4gX0Jhc2U7CnB1YmxpYzoKICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwogIHR5
cGVkZWYgdmFsdWVfdHlwZSogcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqIGNv
bnN0X3BvaW50ZXI7CiAgdHlwZWRlZiB2YWx1ZV90eXBlKiBpdGVyYXRvcjsKICB0eXBlZGVmIGNv
bnN0IHZhbHVlX3R5cGUqIGNvbnN0X2l0ZXJhdG9yOwogIHR5cGVkZWYgdmFsdWVfdHlwZSYgcmVm
ZXJlbmNlOwogIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSYgY29uc3RfcmVmZXJlbmNlOwogIHR5
cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5
cGU7CgogIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6OmFsbG9jYXRvcl90eXBlIGFsbG9jYXRvcl90
eXBlOwogIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBfQmFz
ZTo6Z2V0X2FsbG9jYXRvcigpOyB9CgoKICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8Y29uc3Rf
aXRlcmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgdHlwZWRlZiByZXZlcnNlX2l0ZXJh
dG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwoKCgoKCgoKcHJvdGVjdGVkOgoKICB1c2lu
ZyBfQmFzZTo6X01fYWxsb2NhdGU7CiAgdXNpbmcgX0Jhc2U6Ol9NX2RlYWxsb2NhdGU7CiAgdXNp
bmcgX0Jhc2U6Ol9NX3N0YXJ0OwogIHVzaW5nIF9CYXNlOjpfTV9maW5pc2g7CiAgdXNpbmcgX0Jh
c2U6Ol9NX2VuZF9vZl9zdG9yYWdlOwoKCnByb3RlY3RlZDoKICB2b2lkIF9NX2luc2VydF9hdXgo
aXRlcmF0b3IgX19wb3NpdGlvbiwgY29uc3QgX1RwJiBfX3gpOwogIHZvaWQgX01faW5zZXJ0X2F1
eChpdGVyYXRvciBfX3Bvc2l0aW9uKTsKCnB1YmxpYzoKICBpdGVyYXRvciBiZWdpbigpIHsgcmV0
dXJuIF9NX3N0YXJ0OyB9CiAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBf
TV9zdGFydDsgfQogIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIF9NX2ZpbmlzaDsgfQogIGNvbnN0
X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIF9NX2ZpbmlzaDsgfQoKICByZXZlcnNlX2l0
ZXJhdG9yIHJiZWdpbigpCiAgICB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQog
IGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3QKICAgIHsgcmV0dXJuIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CiAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkKICAg
IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KICBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yIHJlbmQoKSBjb25zdAogICAgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihi
ZWdpbigpKTsgfQoKICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0CiAgICB7IHJldHVybiBzaXplX3R5
cGUoZW5kKCkgLSBiZWdpbigpKTsgfQogIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0CiAgICB7
IHJldHVybiBzaXplX3R5cGUoLTEpIC8gc2l6ZW9mKF9UcCk7IH0KICBzaXplX3R5cGUgY2FwYWNp
dHkoKSBjb25zdAogICAgeyByZXR1cm4gc2l6ZV90eXBlKF9NX2VuZF9vZl9zdG9yYWdlIC0gYmVn
aW4oKSk7IH0KICBib29sIGVtcHR5KCkgY29uc3QKICAgIHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5k
KCk7IH0KCiAgcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIF9fbikgeyByZXR1cm4gKihi
ZWdpbigpICsgX19uKTsgfQogIGNvbnN0X3JlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBf
X24pIGNvbnN0IHsgcmV0dXJuICooYmVnaW4oKSArIF9fbik7IH0KCiAgZXhwbGljaXQgdmVjdG9y
KGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKQogICAgOiBfQmFz
ZShfX2EpIHt9CgogIHZlY3RvcihzaXplX3R5cGUgX19uLCBjb25zdCBfVHAmIF9fdmFsdWUsCiAg
ICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKSAKICAg
IDogX0Jhc2UoX19uLCBfX2EpCiAgICB7IF9NX2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfZmlsbF9u
KF9NX3N0YXJ0LCBfX24sIF9fdmFsdWUpOyB9CgogIGV4cGxpY2l0IHZlY3RvcihzaXplX3R5cGUg
X19uKQogICAgOiBfQmFzZShfX24sIGFsbG9jYXRvcl90eXBlKCkpCiAgICB7IF9NX2ZpbmlzaCA9
IHVuaW5pdGlhbGl6ZWRfZmlsbF9uKF9NX3N0YXJ0LCBfX24sIF9UcCgpKTsgfQoKICB2ZWN0b3Io
Y29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYgX194KSAKICAgIDogX0Jhc2UoX194LnNpemUoKSwg
X194LmdldF9hbGxvY2F0b3IoKSkKICAgIHsgX01fZmluaXNoID0gdW5pbml0aWFsaXplZF9jb3B5
KF9feC5iZWdpbigpLCBfX3guZW5kKCksIF9NX3N0YXJ0KTsgfQoKCiAgIAogIHRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2ZWN0b3IoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lu
cHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0g
YWxsb2NhdG9yX3R5cGUoKSkgOiBfQmFzZShfX2EpIHsKICAgIHR5cGVkZWYgdHlwZW5hbWUgX0lz
X2ludGVnZXI8X0lucHV0SXRlcmF0b3I+OjpfSW50ZWdyYWwgX0ludGVncmFsOwogICAgX01faW5p
dGlhbGl6ZV9hdXgoX19maXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7CiAgfQoKICB0ZW1wbGF0
ZSA8Y2xhc3MgX0ludGVnZXI+CiAgdm9pZCBfTV9pbml0aWFsaXplX2F1eChfSW50ZWdlciBfX24s
IF9JbnRlZ2VyIF9fdmFsdWUsIF9fdHJ1ZV90eXBlKSB7CiAgICBfTV9zdGFydCA9IF9NX2FsbG9j
YXRlKF9fbik7CiAgICBfTV9lbmRfb2Zfc3RvcmFnZSA9IF9NX3N0YXJ0ICsgX19uOyAKICAgIF9N
X2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfZmlsbF9uKF9NX3N0YXJ0LCBfX24sIF9fdmFsdWUpOwog
IH0KCiAgdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogIHZvaWQgX01faW5pdGlhbGl6
ZV9hdXgoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgX19mYWxzZV90eXBlKSB7CiAgICBfTV9yYW5nZV9pbml0aWFs
aXplKF9fZmlyc3QsIF9fbGFzdCwgX19pdGVyYXRvcl9jYXRlZ29yeSggX19maXJzdCApICk7CiAg
fQoKCgoKCgoKCiAgfnZlY3RvcigpIHsgZGVzdHJveShfTV9zdGFydCwgX01fZmluaXNoKTsgfQoK
ICB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBvcGVyYXRvcj0oY29uc3QgdmVjdG9yPF9UcCwgX0FsbG9j
PiYgX194KTsKICB2b2lkIHJlc2VydmUoc2l6ZV90eXBlIF9fbikgewogICAgaWYgKGNhcGFjaXR5
KCkgPCBfX24pIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fb2xkX3NpemUgPSBzaXplKCk7CiAg
ICAgIGl0ZXJhdG9yIF9fdG1wID0gX01fYWxsb2NhdGVfYW5kX2NvcHkoX19uLCBfTV9zdGFydCwg
X01fZmluaXNoKTsKICAgICAgZGVzdHJveShfTV9zdGFydCwgX01fZmluaXNoKTsKICAgICAgX01f
ZGVhbGxvY2F0ZShfTV9zdGFydCwgX01fZW5kX29mX3N0b3JhZ2UgLSBfTV9zdGFydCk7CiAgICAg
IF9NX3N0YXJ0ID0gX190bXA7CiAgICAgIF9NX2ZpbmlzaCA9IF9fdG1wICsgX19vbGRfc2l6ZTsK
ICAgICAgX01fZW5kX29mX3N0b3JhZ2UgPSBfTV9zdGFydCArIF9fbjsKICAgIH0KICB9CgogICAK
ICAgCiAgIAogICAKCiAgdm9pZCBhc3NpZ24oc2l6ZV90eXBlIF9fbiwgY29uc3QgX1RwJiBfX3Zh
bCk7CgoKICAKICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgdm9pZCBhc3NpZ24o
X0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0KSB7CiAgICB0eXBl
ZGVmIHR5cGVuYW1lIF9Jc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X0ludGVncmFsIF9JbnRl
Z3JhbDsKICAgIF9NX2Fzc2lnbl9kaXNwYXRjaChfX2ZpcnN0LCBfX2xhc3QsIF9JbnRlZ3JhbCgp
KTsKICB9CgogIHRlbXBsYXRlIDxjbGFzcyBfSW50ZWdlcj4KICB2b2lkIF9NX2Fzc2lnbl9kaXNw
YXRjaChfSW50ZWdlciBfX24sIF9JbnRlZ2VyIF9fdmFsLCBfX3RydWVfdHlwZSkKICAgIHsgYXNz
aWduKChzaXplX3R5cGUpIF9fbiwgKF9UcCkgX192YWwpOyB9CgogIHRlbXBsYXRlIDxjbGFzcyBf
SW5wdXRJdGVyPgogIHZvaWQgX01fYXNzaWduX2Rpc3BhdGNoKF9JbnB1dEl0ZXIgX19maXJzdCwg
X0lucHV0SXRlciBfX2xhc3QsIF9fZmFsc2VfdHlwZSkKICAgIHsgX01fYXNzaWduX2F1eChfX2Zp
cnN0LCBfX2xhc3QsIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3QgKSApOyB9CgogIHRlbXBs
YXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIF9NX2Fzc2lnbl9hdXgoX0lucHV0SXRl
cmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAg
ICBpbnB1dF9pdGVyYXRvcl90YWcpOwoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRv
cj4KICB2b2lkIF9NX2Fzc2lnbl9hdXgoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2Fy
ZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZF9pdGVyYXRvcl90
YWcpOyAKCgoKICByZWZlcmVuY2UgZnJvbnQoKSB7IHJldHVybiAqYmVnaW4oKTsgfQogIGNvbnN0
X3JlZmVyZW5jZSBmcm9udCgpIGNvbnN0IHsgcmV0dXJuICpiZWdpbigpOyB9CiAgcmVmZXJlbmNl
IGJhY2soKSB7IHJldHVybiAqKGVuZCgpIC0gMSk7IH0KICBjb25zdF9yZWZlcmVuY2UgYmFjaygp
IGNvbnN0IHsgcmV0dXJuICooZW5kKCkgLSAxKTsgfQoKICB2b2lkIHB1c2hfYmFjayhjb25zdCBf
VHAmIF9feCkgewogICAgaWYgKF9NX2ZpbmlzaCAhPSBfTV9lbmRfb2Zfc3RvcmFnZSkgewogICAg
ICBjb25zdHJ1Y3QoX01fZmluaXNoLCBfX3gpOwogICAgICArK19NX2ZpbmlzaDsKICAgIH0KICAg
IGVsc2UKICAgICAgX01faW5zZXJ0X2F1eChlbmQoKSwgX194KTsKICB9CiAgdm9pZCBwdXNoX2Jh
Y2soKSB7CiAgICBpZiAoX01fZmluaXNoICE9IF9NX2VuZF9vZl9zdG9yYWdlKSB7CiAgICAgIGNv
bnN0cnVjdChfTV9maW5pc2gpOwogICAgICArK19NX2ZpbmlzaDsKICAgIH0KICAgIGVsc2UKICAg
ICAgX01faW5zZXJ0X2F1eChlbmQoKSk7CiAgfQogIHZvaWQgc3dhcCh2ZWN0b3I8X1RwLCBfQWxs
b2M+JiBfX3gpIHsKICAgICA6OnN3YXAoX01fc3RhcnQsIF9feC5fTV9zdGFydCk7CiAgICAgOjpz
d2FwKF9NX2ZpbmlzaCwgX194Ll9NX2ZpbmlzaCk7CiAgICAgOjpzd2FwKF9NX2VuZF9vZl9zdG9y
YWdlLCBfX3guX01fZW5kX29mX3N0b3JhZ2UpOwogIH0KCiAgaXRlcmF0b3IgaW5zZXJ0KGl0ZXJh
dG9yIF9fcG9zaXRpb24sIGNvbnN0IF9UcCYgX194KSB7CiAgICBzaXplX3R5cGUgX19uID0gX19w
b3NpdGlvbiAtIGJlZ2luKCk7CiAgICBpZiAoX01fZmluaXNoICE9IF9NX2VuZF9vZl9zdG9yYWdl
ICYmIF9fcG9zaXRpb24gPT0gZW5kKCkpIHsKICAgICAgY29uc3RydWN0KF9NX2ZpbmlzaCwgX194
KTsKICAgICAgKytfTV9maW5pc2g7CiAgICB9CiAgICBlbHNlCiAgICAgIF9NX2luc2VydF9hdXgo
X19wb3NpdGlvbiwgX194KTsKICAgIHJldHVybiBiZWdpbigpICsgX19uOwogIH0KICBpdGVyYXRv
ciBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbikgewogICAgc2l6ZV90eXBlIF9fbiA9IF9fcG9z
aXRpb24gLSBiZWdpbigpOwogICAgaWYgKF9NX2ZpbmlzaCAhPSBfTV9lbmRfb2Zfc3RvcmFnZSAm
JiBfX3Bvc2l0aW9uID09IGVuZCgpKSB7CiAgICAgIGNvbnN0cnVjdChfTV9maW5pc2gpOwogICAg
ICArK19NX2ZpbmlzaDsKICAgIH0KICAgIGVsc2UKICAgICAgX01faW5zZXJ0X2F1eChfX3Bvc2l0
aW9uKTsKICAgIHJldHVybiBiZWdpbigpICsgX19uOwogIH0KCiAgIAogIHRlbXBsYXRlIDxjbGFz
cyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIGluc2VydChpdGVyYXRvciBfX3BvcywgX0lucHV0SXRl
cmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0KSB7CiAgICB0eXBlZGVmIHR5cGVu
YW1lIF9Jc19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X0ludGVncmFsIF9JbnRlZ3JhbDsKICAg
IF9NX2luc2VydF9kaXNwYXRjaChfX3BvcywgX19maXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7
CiAgfQoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0ludGVnZXI+CiAgdm9pZCBfTV9pbnNlcnRfZGlzcGF0
Y2goaXRlcmF0b3IgX19wb3MsIF9JbnRlZ2VyIF9fbiwgX0ludGVnZXIgX192YWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgX190cnVlX3R5cGUpIHsKICAgIGluc2VydChfX3BvcywgKHNpemVf
dHlwZSkgX19uLCAoX1RwKSBfX3ZhbCk7CiAgfQoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRl
cmF0b3I+CiAgdm9pZCBfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0b3IgX19wb3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3Ig
X19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9fZmFsc2VfdHlwZSkgewogICAgX01f
cmFuZ2VfaW5zZXJ0KF9fcG9zLCBfX2ZpcnN0LCBfX2xhc3QsIF9faXRlcmF0b3JfY2F0ZWdvcnko
IF9fZmlyc3QgKSApOwogIH0KCgoKCgogIHZvaWQgaW5zZXJ0IChpdGVyYXRvciBfX3Bvcywgc2l6
ZV90eXBlIF9fbiwgY29uc3QgX1RwJiBfX3gpOwoKICB2b2lkIHBvcF9iYWNrKCkgewogICAgLS1f
TV9maW5pc2g7CiAgICBkZXN0cm95KF9NX2ZpbmlzaCk7CiAgfQogIGl0ZXJhdG9yIGVyYXNlKGl0
ZXJhdG9yIF9fcG9zaXRpb24pIHsKICAgIGlmIChfX3Bvc2l0aW9uICsgMSAhPSBlbmQoKSkKICAg
ICAgY29weShfX3Bvc2l0aW9uICsgMSwgX01fZmluaXNoLCBfX3Bvc2l0aW9uKTsKICAgIC0tX01f
ZmluaXNoOwogICAgZGVzdHJveShfTV9maW5pc2gpOwogICAgcmV0dXJuIF9fcG9zaXRpb247CiAg
fQogIGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCkgewog
ICAgaXRlcmF0b3IgX19pID0gY29weShfX2xhc3QsIF9NX2ZpbmlzaCwgX19maXJzdCk7CiAgICBk
ZXN0cm95KF9faSwgX01fZmluaXNoKTsKICAgIF9NX2ZpbmlzaCA9IF9NX2ZpbmlzaCAtIChfX2xh
c3QgLSBfX2ZpcnN0KTsKICAgIHJldHVybiBfX2ZpcnN0OwogIH0KCiAgdm9pZCByZXNpemUoc2l6
ZV90eXBlIF9fbmV3X3NpemUsIGNvbnN0IF9UcCYgX194KSB7CiAgICBpZiAoX19uZXdfc2l6ZSA8
IHNpemUoKSkgCiAgICAgIGVyYXNlKGJlZ2luKCkgKyBfX25ld19zaXplLCBlbmQoKSk7CiAgICBl
bHNlCiAgICAgIGluc2VydChlbmQoKSwgX19uZXdfc2l6ZSAtIHNpemUoKSwgX194KTsKICB9CiAg
dm9pZCByZXNpemUoc2l6ZV90eXBlIF9fbmV3X3NpemUpIHsgcmVzaXplKF9fbmV3X3NpemUsIF9U
cCgpKTsgfQogIHZvaWQgY2xlYXIoKSB7IGVyYXNlKGJlZ2luKCksIGVuZCgpKTsgfQoKcHJvdGVj
dGVkOgoKCiAgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CiAgaXRlcmF0b3IgX01f
YWxsb2NhdGVfYW5kX2NvcHkoc2l6ZV90eXBlIF9fbiwgX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0
LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2Fy
ZEl0ZXJhdG9yIF9fbGFzdCkKewogICAgaXRlcmF0b3IgX19yZXN1bHQgPSBfTV9hbGxvY2F0ZShf
X24pOwogICAgdHJ5ICB7CiAgICAgIHVuaW5pdGlhbGl6ZWRfY29weShfX2ZpcnN0LCBfX2xhc3Qs
IF9fcmVzdWx0KTsKICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQogICAgY2F0Y2goLi4uKSB7
ICBfTV9kZWFsbG9jYXRlKF9fcmVzdWx0LCBfX24pIDsgdGhyb3c7IH0gOwogIH0KIyA0NDAgIi91
c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4u
Ly4uL2luY2x1ZGUvZysrLTMvc3RsX3ZlY3Rvci5oIiAzCgoKCgogIHRlbXBsYXRlIDxjbGFzcyBf
SW5wdXRJdGVyYXRvcj4KICB2b2lkIF9NX3JhbmdlX2luaXRpYWxpemUoX0lucHV0SXRlcmF0b3Ig
X19maXJzdCwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyYXRvciBfX2xh
c3QsIGlucHV0X2l0ZXJhdG9yX3RhZykKICB7CiAgICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0
OyArK19fZmlyc3QpCiAgICAgIHB1c2hfYmFjaygqX19maXJzdCk7CiAgfQoKICAgCiAgdGVtcGxh
dGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CiAgdm9pZCBfTV9yYW5nZV9pbml0aWFsaXplKF9G
b3J3YXJkSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Zvcndh
cmRJdGVyYXRvciBfX2xhc3QsIGZvcndhcmRfaXRlcmF0b3JfdGFnKQogIHsKICAgIHNpemVfdHlw
ZSBfX24gPSAwOwogICAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfX24pOwogICAgX01fc3Rh
cnQgPSBfTV9hbGxvY2F0ZShfX24pOwogICAgX01fZW5kX29mX3N0b3JhZ2UgPSBfTV9zdGFydCAr
IF9fbjsKICAgIF9NX2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfY29weShfX2ZpcnN0LCBfX2xhc3Qs
IF9NX3N0YXJ0KTsKICB9CgogIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lk
IF9NX3JhbmdlX2luc2VydChpdGVyYXRvciBfX3BvcywKICAgICAgICAgICAgICAgICAgICAgICBf
SW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKTsKCiAgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3
YXJkSXRlcmF0b3I+CiAgdm9pZCBfTV9yYW5nZV9pbnNlcnQoaXRlcmF0b3IgX19wb3MsCiAgICAg
ICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJh
dG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkX2l0ZXJhdG9yX3RhZyk7
CgoKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4KaW5saW5lIGJvb2wgCm9w
ZXJhdG9yPT0oY29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYgX194LCBjb25zdCB2ZWN0b3I8X1Rw
LCBfQWxsb2M+JiBfX3kpCnsKICByZXR1cm4gX194LnNpemUoKSA9PSBfX3kuc2l6ZSgpICYmCiAg
ICAgICAgIGVxdWFsKF9feC5iZWdpbigpLCBfX3guZW5kKCksIF9feS5iZWdpbigpKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgppbmxpbmUgYm9vbCAKb3BlcmF0b3I8KGNv
bnN0IHZlY3RvcjxfVHAsIF9BbGxvYz4mIF9feCwgY29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYg
X195KQp7CiAgcmV0dXJuIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKF9feC5iZWdpbigpLCBfX3gu
ZW5kKCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3kuYmVnaW4oKSwgX195
LmVuZCgpKTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CmlubGluZSB2
b2lkIHN3YXAodmVjdG9yPF9UcCwgX0FsbG9jPiYgX194LCB2ZWN0b3I8X1RwLCBfQWxsb2M+JiBf
X3kpCnsKICBfX3guc3dhcChfX3kpOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9B
bGxvYz4KdmVjdG9yPF9UcCxfQWxsb2M+JiAKdmVjdG9yPF9UcCxfQWxsb2M+OjpvcGVyYXRvcj0o
Y29uc3QgdmVjdG9yPF9UcCwgX0FsbG9jPiYgX194KQp7CiAgaWYgKCZfX3ggIT0gdGhpcykgewog
ICAgY29uc3Qgc2l6ZV90eXBlIF9feGxlbiA9IF9feC5zaXplKCk7CiAgICBpZiAoX194bGVuID4g
Y2FwYWNpdHkoKSkgewogICAgICBpdGVyYXRvciBfX3RtcCA9IF9NX2FsbG9jYXRlX2FuZF9jb3B5
KF9feGxlbiwgX194LmJlZ2luKCksIF9feC5lbmQoKSk7CiAgICAgIGRlc3Ryb3koX01fc3RhcnQs
IF9NX2ZpbmlzaCk7CiAgICAgIF9NX2RlYWxsb2NhdGUoX01fc3RhcnQsIF9NX2VuZF9vZl9zdG9y
YWdlIC0gX01fc3RhcnQpOwogICAgICBfTV9zdGFydCA9IF9fdG1wOwogICAgICBfTV9lbmRfb2Zf
c3RvcmFnZSA9IF9NX3N0YXJ0ICsgX194bGVuOwogICAgfQogICAgZWxzZSBpZiAoc2l6ZSgpID49
IF9feGxlbikgewogICAgICBpdGVyYXRvciBfX2kgPSBjb3B5KF9feC5iZWdpbigpLCBfX3guZW5k
KCksIGJlZ2luKCkpOwogICAgICBkZXN0cm95KF9faSwgX01fZmluaXNoKTsKICAgIH0KICAgIGVs
c2UgewogICAgICBjb3B5KF9feC5iZWdpbigpLCBfX3guYmVnaW4oKSArIHNpemUoKSwgX01fc3Rh
cnQpOwogICAgICB1bmluaXRpYWxpemVkX2NvcHkoX194LmJlZ2luKCkgKyBzaXplKCksIF9feC5l
bmQoKSwgX01fZmluaXNoKTsKICAgIH0KICAgIF9NX2ZpbmlzaCA9IF9NX3N0YXJ0ICsgX194bGVu
OwogIH0KICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxv
Yz4Kdm9pZCB2ZWN0b3I8X1RwLCBfQWxsb2M+Ojphc3NpZ24oc2l6ZV90IF9fbiwgY29uc3QgdmFs
dWVfdHlwZSYgX192YWwpIHsKICBpZiAoX19uID4gY2FwYWNpdHkoKSkgewogICAgdmVjdG9yPF9U
cCwgX0FsbG9jPiBfX3RtcChfX24sIF9fdmFsLCBnZXRfYWxsb2NhdG9yKCkpOwogICAgX190bXAu
c3dhcCgqdGhpcyk7CiAgfQogIGVsc2UgaWYgKF9fbiA+IHNpemUoKSkgewogICAgZmlsbChiZWdp
bigpLCBlbmQoKSwgX192YWwpOwogICAgX01fZmluaXNoID0gdW5pbml0aWFsaXplZF9maWxsX24o
X01fZmluaXNoLCBfX24gLSBzaXplKCksIF9fdmFsKTsKICB9CiAgZWxzZQogICAgZXJhc2UoZmls
bF9uKGJlZ2luKCksIF9fbiwgX192YWwpLCBlbmQoKSk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9U
cCwgY2xhc3MgX0FsbG9jPiB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcj4Kdm9pZCB2ZWN0b3I8
X1RwLCBfQWxsb2M+OjpfTV9hc3NpZ25fYXV4KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRl
ciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9p
dGVyYXRvcl90YWcpIHsKICBpdGVyYXRvciBfX2N1ciA9IGJlZ2luKCk7CiAgZm9yICggOyBfX2Zp
cnN0ICE9IF9fbGFzdCAmJiBfX2N1ciAhPSBlbmQoKTsgKytfX2N1ciwgKytfX2ZpcnN0KQogICAg
Kl9fY3VyID0gKl9fZmlyc3Q7CiAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogICAgZXJhc2UoX19j
dXIsIGVuZCgpKTsKICBlbHNlCiAgICBpbnNlcnQoZW5kKCksIF9fZmlyc3QsIF9fbGFzdCk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4gdGVtcGxhdGUgPGNsYXNzIF9Gb3J3
YXJkSXRlcj4Kdm9pZAp2ZWN0b3I8X1RwLCBfQWxsb2M+OjpfTV9hc3NpZ25fYXV4KF9Gb3J3YXJk
SXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvcndhcmRfaXRlcmF0b3JfdGFnKSB7CiAgc2l6ZV90eXBlIF9fbGVuID0g
MDsKICBkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9fbGVuKTsKCiAgaWYgKF9fbGVuID4gY2Fw
YWNpdHkoKSkgewogICAgaXRlcmF0b3IgX190bXAgPSBfTV9hbGxvY2F0ZV9hbmRfY29weShfX2xl
biwgX19maXJzdCwgX19sYXN0KTsKICAgIGRlc3Ryb3koX01fc3RhcnQsIF9NX2ZpbmlzaCk7CiAg
ICBfTV9kZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9lbmRfb2Zfc3RvcmFnZSAtIF9NX3N0YXJ0KTsK
ICAgIF9NX3N0YXJ0ID0gX190bXA7CiAgICBfTV9lbmRfb2Zfc3RvcmFnZSA9IF9NX2ZpbmlzaCA9
IF9NX3N0YXJ0ICsgX19sZW47CiAgfQogIGVsc2UgaWYgKHNpemUoKSA+PSBfX2xlbikgewogICAg
aXRlcmF0b3IgX19uZXdfZmluaXNoID0gY29weShfX2ZpcnN0LCBfX2xhc3QsIF9NX3N0YXJ0KTsK
ICAgIGRlc3Ryb3koX19uZXdfZmluaXNoLCBfTV9maW5pc2gpOwogICAgX01fZmluaXNoID0gX19u
ZXdfZmluaXNoOwogIH0KICBlbHNlIHsKICAgIF9Gb3J3YXJkSXRlciBfX21pZCA9IF9fZmlyc3Q7
CiAgICBhZHZhbmNlKF9fbWlkLCBzaXplKCkpOwogICAgY29weShfX2ZpcnN0LCBfX21pZCwgX01f
c3RhcnQpOwogICAgX01fZmluaXNoID0gdW5pbml0aWFsaXplZF9jb3B5KF9fbWlkLCBfX2xhc3Qs
IF9NX2ZpbmlzaCk7CiAgfQp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4K
dm9pZCAKdmVjdG9yPF9UcCwgX0FsbG9jPjo6X01faW5zZXJ0X2F1eChpdGVyYXRvciBfX3Bvc2l0
aW9uLCBjb25zdCBfVHAmIF9feCkKewogIGlmIChfTV9maW5pc2ggIT0gX01fZW5kX29mX3N0b3Jh
Z2UpIHsKICAgIGNvbnN0cnVjdChfTV9maW5pc2gsICooX01fZmluaXNoIC0gMSkpOwogICAgKytf
TV9maW5pc2g7CiAgICBfVHAgX194X2NvcHkgPSBfX3g7CiAgICBjb3B5X2JhY2t3YXJkKF9fcG9z
aXRpb24sIF9NX2ZpbmlzaCAtIDIsIF9NX2ZpbmlzaCAtIDEpOwogICAgKl9fcG9zaXRpb24gPSBf
X3hfY29weTsKICB9CiAgZWxzZSB7CiAgICBjb25zdCBzaXplX3R5cGUgX19vbGRfc2l6ZSA9IHNp
emUoKTsKICAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IF9fb2xkX3NpemUgIT0gMCA/IDIgKiBf
X29sZF9zaXplIDogMTsKICAgIGl0ZXJhdG9yIF9fbmV3X3N0YXJ0ID0gX01fYWxsb2NhdGUoX19s
ZW4pOwogICAgaXRlcmF0b3IgX19uZXdfZmluaXNoID0gX19uZXdfc3RhcnQ7CiAgICB0cnkgIHsK
ICAgICAgX19uZXdfZmluaXNoID0gdW5pbml0aWFsaXplZF9jb3B5KF9NX3N0YXJ0LCBfX3Bvc2l0
aW9uLCBfX25ld19zdGFydCk7CiAgICAgIGNvbnN0cnVjdChfX25ld19maW5pc2gsIF9feCk7CiAg
ICAgICsrX19uZXdfZmluaXNoOwogICAgICBfX25ld19maW5pc2ggPSB1bmluaXRpYWxpemVkX2Nv
cHkoX19wb3NpdGlvbiwgX01fZmluaXNoLCBfX25ld19maW5pc2gpOwogICAgfQogICAgY2F0Y2go
Li4uKSB7ICAoZGVzdHJveShfX25ld19zdGFydCxfX25ld19maW5pc2gpLCAKICAgICAgICAgICAg
ICAgICAgX01fZGVhbGxvY2F0ZShfX25ld19zdGFydCxfX2xlbikpIDsgdGhyb3c7IH0gOwogICAg
ZGVzdHJveShiZWdpbigpLCBlbmQoKSk7CiAgICBfTV9kZWFsbG9jYXRlKF9NX3N0YXJ0LCBfTV9l
bmRfb2Zfc3RvcmFnZSAtIF9NX3N0YXJ0KTsKICAgIF9NX3N0YXJ0ID0gX19uZXdfc3RhcnQ7CiAg
ICBfTV9maW5pc2ggPSBfX25ld19maW5pc2g7CiAgICBfTV9lbmRfb2Zfc3RvcmFnZSA9IF9fbmV3
X3N0YXJ0ICsgX19sZW47CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+
CnZvaWQgCnZlY3RvcjxfVHAsIF9BbGxvYz46Ol9NX2luc2VydF9hdXgoaXRlcmF0b3IgX19wb3Np
dGlvbikKewogIGlmIChfTV9maW5pc2ggIT0gX01fZW5kX29mX3N0b3JhZ2UpIHsKICAgIGNvbnN0
cnVjdChfTV9maW5pc2gsICooX01fZmluaXNoIC0gMSkpOwogICAgKytfTV9maW5pc2g7CiAgICBj
b3B5X2JhY2t3YXJkKF9fcG9zaXRpb24sIF9NX2ZpbmlzaCAtIDIsIF9NX2ZpbmlzaCAtIDEpOwog
ICAgKl9fcG9zaXRpb24gPSBfVHAoKTsKICB9CiAgZWxzZSB7CiAgICBjb25zdCBzaXplX3R5cGUg
X19vbGRfc2l6ZSA9IHNpemUoKTsKICAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IF9fb2xkX3Np
emUgIT0gMCA/IDIgKiBfX29sZF9zaXplIDogMTsKICAgIGl0ZXJhdG9yIF9fbmV3X3N0YXJ0ID0g
X01fYWxsb2NhdGUoX19sZW4pOwogICAgaXRlcmF0b3IgX19uZXdfZmluaXNoID0gX19uZXdfc3Rh
cnQ7CiAgICB0cnkgIHsKICAgICAgX19uZXdfZmluaXNoID0gdW5pbml0aWFsaXplZF9jb3B5KF9N
X3N0YXJ0LCBfX3Bvc2l0aW9uLCBfX25ld19zdGFydCk7CiAgICAgIGNvbnN0cnVjdChfX25ld19m
aW5pc2gpOwogICAgICArK19fbmV3X2ZpbmlzaDsKICAgICAgX19uZXdfZmluaXNoID0gdW5pbml0
aWFsaXplZF9jb3B5KF9fcG9zaXRpb24sIF9NX2ZpbmlzaCwgX19uZXdfZmluaXNoKTsKICAgIH0K
ICAgIGNhdGNoKC4uLikgeyAgKGRlc3Ryb3koX19uZXdfc3RhcnQsX19uZXdfZmluaXNoKSwgCiAg
ICAgICAgICAgICAgICAgIF9NX2RlYWxsb2NhdGUoX19uZXdfc3RhcnQsX19sZW4pKSA7IHRocm93
OyB9IDsKICAgIGRlc3Ryb3koYmVnaW4oKSwgZW5kKCkpOwogICAgX01fZGVhbGxvY2F0ZShfTV9z
dGFydCwgX01fZW5kX29mX3N0b3JhZ2UgLSBfTV9zdGFydCk7CiAgICBfTV9zdGFydCA9IF9fbmV3
X3N0YXJ0OwogICAgX01fZmluaXNoID0gX19uZXdfZmluaXNoOwogICAgX01fZW5kX29mX3N0b3Jh
Z2UgPSBfX25ld19zdGFydCArIF9fbGVuOwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xh
c3MgX0FsbG9jPgp2b2lkIHZlY3RvcjxfVHAsIF9BbGxvYz46Omluc2VydChpdGVyYXRvciBfX3Bv
c2l0aW9uLCBzaXplX3R5cGUgX19uLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgX1RwJiBfX3gpCnsKICBpZiAoX19uICE9IDApIHsKICAgIGlmIChzaXplX3R5cGUoX01f
ZW5kX29mX3N0b3JhZ2UgLSBfTV9maW5pc2gpID49IF9fbikgewogICAgICBfVHAgX194X2NvcHkg
PSBfX3g7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2VsZW1zX2FmdGVyID0gX01fZmluaXNoIC0g
X19wb3NpdGlvbjsKICAgICAgaXRlcmF0b3IgX19vbGRfZmluaXNoID0gX01fZmluaXNoOwogICAg
ICBpZiAoX19lbGVtc19hZnRlciA+IF9fbikgewogICAgICAgIHVuaW5pdGlhbGl6ZWRfY29weShf
TV9maW5pc2ggLSBfX24sIF9NX2ZpbmlzaCwgX01fZmluaXNoKTsKICAgICAgICBfTV9maW5pc2gg
Kz0gX19uOwogICAgICAgIGNvcHlfYmFja3dhcmQoX19wb3NpdGlvbiwgX19vbGRfZmluaXNoIC0g
X19uLCBfX29sZF9maW5pc2gpOwogICAgICAgIGZpbGwoX19wb3NpdGlvbiwgX19wb3NpdGlvbiAr
IF9fbiwgX194X2NvcHkpOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIHVuaW5pdGlhbGl6
ZWRfZmlsbF9uKF9NX2ZpbmlzaCwgX19uIC0gX19lbGVtc19hZnRlciwgX194X2NvcHkpOwogICAg
ICAgIF9NX2ZpbmlzaCArPSBfX24gLSBfX2VsZW1zX2FmdGVyOwogICAgICAgIHVuaW5pdGlhbGl6
ZWRfY29weShfX3Bvc2l0aW9uLCBfX29sZF9maW5pc2gsIF9NX2ZpbmlzaCk7CiAgICAgICAgX01f
ZmluaXNoICs9IF9fZWxlbXNfYWZ0ZXI7CiAgICAgICAgZmlsbChfX3Bvc2l0aW9uLCBfX29sZF9m
aW5pc2gsIF9feF9jb3B5KTsKICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgIGNvbnN0IHNp
emVfdHlwZSBfX29sZF9zaXplID0gc2l6ZSgpOyAgICAgICAgCiAgICAgIGNvbnN0IHNpemVfdHlw
ZSBfX2xlbiA9IF9fb2xkX3NpemUgKyBtYXgoX19vbGRfc2l6ZSwgX19uKTsKICAgICAgaXRlcmF0
b3IgX19uZXdfc3RhcnQgPSBfTV9hbGxvY2F0ZShfX2xlbik7CiAgICAgIGl0ZXJhdG9yIF9fbmV3
X2ZpbmlzaCA9IF9fbmV3X3N0YXJ0OwogICAgICB0cnkgIHsKICAgICAgICBfX25ld19maW5pc2gg
PSB1bmluaXRpYWxpemVkX2NvcHkoX01fc3RhcnQsIF9fcG9zaXRpb24sIF9fbmV3X3N0YXJ0KTsK
ICAgICAgICBfX25ld19maW5pc2ggPSB1bmluaXRpYWxpemVkX2ZpbGxfbihfX25ld19maW5pc2gs
IF9fbiwgX194KTsKICAgICAgICBfX25ld19maW5pc2gKICAgICAgICAgID0gdW5pbml0aWFsaXpl
ZF9jb3B5KF9fcG9zaXRpb24sIF9NX2ZpbmlzaCwgX19uZXdfZmluaXNoKTsKICAgICAgfQogICAg
ICBjYXRjaCguLi4pIHsgIChkZXN0cm95KF9fbmV3X3N0YXJ0LF9fbmV3X2ZpbmlzaCksIAogICAg
ICAgICAgICAgICAgICAgIF9NX2RlYWxsb2NhdGUoX19uZXdfc3RhcnQsX19sZW4pKSA7IHRocm93
OyB9IDsKICAgICAgZGVzdHJveShfTV9zdGFydCwgX01fZmluaXNoKTsKICAgICAgX01fZGVhbGxv
Y2F0ZShfTV9zdGFydCwgX01fZW5kX29mX3N0b3JhZ2UgLSBfTV9zdGFydCk7CiAgICAgIF9NX3N0
YXJ0ID0gX19uZXdfc3RhcnQ7CiAgICAgIF9NX2ZpbmlzaCA9IF9fbmV3X2ZpbmlzaDsKICAgICAg
X01fZW5kX29mX3N0b3JhZ2UgPSBfX25ld19zdGFydCArIF9fbGVuOwogICAgfQogIH0KfQoKCgp0
ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+IHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJ
dGVyYXRvcj4Kdm9pZCAKdmVjdG9yPF9UcCwgX0FsbG9jPjo6X01fcmFuZ2VfaW5zZXJ0KGl0ZXJh
dG9yIF9fcG9zLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0
ZXJhdG9yIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lu
cHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5wdXRfaXRlcmF0b3JfdGFnKQp7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2Zp
cnN0KSB7CiAgICBfX3BvcyA9IGluc2VydChfX3BvcywgKl9fZmlyc3QpOwogICAgKytfX3BvczsK
ICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4gdGVtcGxhdGUgPGNsYXNz
IF9Gb3J3YXJkSXRlcmF0b3I+CnZvaWQgCnZlY3RvcjxfVHAsIF9BbGxvYz46Ol9NX3JhbmdlX2lu
c2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3J3YXJkX2l0ZXJhdG9yX3RhZykKewogIGlmIChfX2ZpcnN0ICE9
IF9fbGFzdCkgewogICAgc2l6ZV90eXBlIF9fbiA9IDA7CiAgICBkaXN0YW5jZShfX2ZpcnN0LCBf
X2xhc3QsIF9fbik7CiAgICBpZiAoc2l6ZV90eXBlKF9NX2VuZF9vZl9zdG9yYWdlIC0gX01fZmlu
aXNoKSA+PSBfX24pIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fZWxlbXNfYWZ0ZXIgPSBfTV9m
aW5pc2ggLSBfX3Bvc2l0aW9uOwogICAgICBpdGVyYXRvciBfX29sZF9maW5pc2ggPSBfTV9maW5p
c2g7CiAgICAgIGlmIChfX2VsZW1zX2FmdGVyID4gX19uKSB7CiAgICAgICAgdW5pbml0aWFsaXpl
ZF9jb3B5KF9NX2ZpbmlzaCAtIF9fbiwgX01fZmluaXNoLCBfTV9maW5pc2gpOwogICAgICAgIF9N
X2ZpbmlzaCArPSBfX247CiAgICAgICAgY29weV9iYWNrd2FyZChfX3Bvc2l0aW9uLCBfX29sZF9m
aW5pc2ggLSBfX24sIF9fb2xkX2ZpbmlzaCk7CiAgICAgICAgY29weShfX2ZpcnN0LCBfX2xhc3Qs
IF9fcG9zaXRpb24pOwogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIF9Gb3J3YXJkSXRlcmF0
b3IgX19taWQgPSBfX2ZpcnN0OwogICAgICAgIGFkdmFuY2UoX19taWQsIF9fZWxlbXNfYWZ0ZXIp
OwogICAgICAgIHVuaW5pdGlhbGl6ZWRfY29weShfX21pZCwgX19sYXN0LCBfTV9maW5pc2gpOwog
ICAgICAgIF9NX2ZpbmlzaCArPSBfX24gLSBfX2VsZW1zX2FmdGVyOwogICAgICAgIHVuaW5pdGlh
bGl6ZWRfY29weShfX3Bvc2l0aW9uLCBfX29sZF9maW5pc2gsIF9NX2ZpbmlzaCk7CiAgICAgICAg
X01fZmluaXNoICs9IF9fZWxlbXNfYWZ0ZXI7CiAgICAgICAgY29weShfX2ZpcnN0LCBfX21pZCwg
X19wb3NpdGlvbik7CiAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICBjb25zdCBzaXplX3R5
cGUgX19vbGRfc2l6ZSA9IHNpemUoKTsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gX19v
bGRfc2l6ZSArIG1heChfX29sZF9zaXplLCBfX24pOwogICAgICBpdGVyYXRvciBfX25ld19zdGFy
dCA9IF9NX2FsbG9jYXRlKF9fbGVuKTsKICAgICAgaXRlcmF0b3IgX19uZXdfZmluaXNoID0gX19u
ZXdfc3RhcnQ7CiAgICAgIHRyeSAgewogICAgICAgIF9fbmV3X2ZpbmlzaCA9IHVuaW5pdGlhbGl6
ZWRfY29weShfTV9zdGFydCwgX19wb3NpdGlvbiwgX19uZXdfc3RhcnQpOwogICAgICAgIF9fbmV3
X2ZpbmlzaCA9IHVuaW5pdGlhbGl6ZWRfY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fbmV3X2Zpbmlz
aCk7CiAgICAgICAgX19uZXdfZmluaXNoCiAgICAgICAgICA9IHVuaW5pdGlhbGl6ZWRfY29weShf
X3Bvc2l0aW9uLCBfTV9maW5pc2gsIF9fbmV3X2ZpbmlzaCk7CiAgICAgIH0KICAgICAgY2F0Y2go
Li4uKSB7ICAoZGVzdHJveShfX25ld19zdGFydCxfX25ld19maW5pc2gpLCAKICAgICAgICAgICAg
ICAgICAgICBfTV9kZWFsbG9jYXRlKF9fbmV3X3N0YXJ0LF9fbGVuKSkgOyB0aHJvdzsgfSA7CiAg
ICAgIGRlc3Ryb3koX01fc3RhcnQsIF9NX2ZpbmlzaCk7CiAgICAgIF9NX2RlYWxsb2NhdGUoX01f
c3RhcnQsIF9NX2VuZF9vZl9zdG9yYWdlIC0gX01fc3RhcnQpOwogICAgICBfTV9zdGFydCA9IF9f
bmV3X3N0YXJ0OwogICAgICBfTV9maW5pc2ggPSBfX25ld19maW5pc2g7CiAgICAgIF9NX2VuZF9v
Zl9zdG9yYWdlID0gX19uZXdfc3RhcnQgKyBfX2xlbjsKICAgIH0KICB9Cn0KCiMgODEwICIvdXNy
L2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8u
Li9pbmNsdWRlL2crKy0zL3N0bF92ZWN0b3IuaCIgMwoKCgoKCgoKICAKCgoKIAogCiAKIyAzNCAi
L3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4v
Li4vLi4vaW5jbHVkZS9nKystMy92ZWN0b3IiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2Mt
bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0z
L3N0bF9idmVjdG9yLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAg
CgpzdGF0aWMgY29uc3QgaW50IF9fV09SRF9CSVQgPSBpbnQoOCAqc2l6ZW9mKHVuc2lnbmVkIGlu
dCkpOwoKCgoKCgpzdHJ1Y3QgX0JpdF9yZWZlcmVuY2UgewogIHVuc2lnbmVkIGludCogX01fcDsK
ICB1bnNpZ25lZCBpbnQgX01fbWFzazsKICBfQml0X3JlZmVyZW5jZSh1bnNpZ25lZCBpbnQqIF9f
eCwgdW5zaWduZWQgaW50IF9feSkgCiAgICA6IF9NX3AoX194KSwgX01fbWFzayhfX3kpIHt9Cgpw
dWJsaWM6CiAgX0JpdF9yZWZlcmVuY2UoKSA6IF9NX3AoMCksIF9NX21hc2soMCkge30KICBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISghKCpfTV9wICYgX01fbWFzaykpOyB9CiAgX0Jp
dF9yZWZlcmVuY2UmIG9wZXJhdG9yPShib29sIF9feCkKICB7CiAgICBpZiAoX194KSAgKl9NX3Ag
fD0gX01fbWFzazsKICAgIGVsc2UgICAgICAqX01fcCAmPSB+X01fbWFzazsKICAgIHJldHVybiAq
dGhpczsKICB9CiAgX0JpdF9yZWZlcmVuY2UmIG9wZXJhdG9yPShjb25zdCBfQml0X3JlZmVyZW5j
ZSYgX194KSAKICAgIHsgcmV0dXJuICp0aGlzID0gYm9vbChfX3gpOyB9CiAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IF9CaXRfcmVmZXJlbmNlJiBfX3gpIGNvbnN0CiAgICB7IHJldHVybiBib29sKCp0
aGlzKSA9PSBib29sKF9feCk7IH0KICBib29sIG9wZXJhdG9yPChjb25zdCBfQml0X3JlZmVyZW5j
ZSYgX194KSBjb25zdCB7CiAgICByZXR1cm4gIWJvb2woKnRoaXMpICYmIGJvb2woX194KTsKICB9
CiAgdm9pZCBmbGlwKCkgeyAqX01fcCBePSBfTV9tYXNrOyB9Cn07CgppbmxpbmUgdm9pZCBzd2Fw
KF9CaXRfcmVmZXJlbmNlIF9feCwgX0JpdF9yZWZlcmVuY2UgX195KQp7CiAgYm9vbCBfX3RtcCA9
IF9feDsKICBfX3ggPSBfX3k7CiAgX195ID0gX190bXA7Cn0KCnN0cnVjdCBfQml0X2l0ZXJhdG9y
IDogcHVibGljIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8Ym9vbCwgcHRyZGlmZl90PiB7CiAgdHlw
ZWRlZiBfQml0X3JlZmVyZW5jZSAgcmVmZXJlbmNlOwogIHR5cGVkZWYgX0JpdF9yZWZlcmVuY2Uq
IHBvaW50ZXI7CiAgdHlwZWRlZiBfQml0X2l0ZXJhdG9yICAgaXRlcmF0b3I7CgogIHVuc2lnbmVk
IGludCogX01fcDsKICB1bnNpZ25lZCBpbnQgX01fb2Zmc2V0OwogIHZvaWQgYnVtcF91cCgpIHsK
ICAgIGlmIChfTV9vZmZzZXQrKyA9PSBfX1dPUkRfQklUIC0gMSkgewogICAgICBfTV9vZmZzZXQg
PSAwOwogICAgICArK19NX3A7CiAgICB9CiAgfQogIHZvaWQgYnVtcF9kb3duKCkgewogICAgaWYg
KF9NX29mZnNldC0tID09IDApIHsKICAgICAgX01fb2Zmc2V0ID0gX19XT1JEX0JJVCAtIDE7CiAg
ICAgIC0tX01fcDsKICAgIH0KICB9CgogIF9CaXRfaXRlcmF0b3IoKSA6IF9NX3AoMCksIF9NX29m
ZnNldCgwKSB7fQogIF9CaXRfaXRlcmF0b3IodW5zaWduZWQgaW50KiBfX3gsIHVuc2lnbmVkIGlu
dCBfX3kpIAogICAgOiBfTV9wKF9feCksIF9NX29mZnNldChfX3kpIHt9CiAgcmVmZXJlbmNlIG9w
ZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIHJlZmVyZW5jZShfTV9wLCAxVSA8PCBfTV9vZmZzZXQp
OyB9CiAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7CiAgICBidW1wX3VwKCk7CiAgICByZXR1cm4g
KnRoaXM7CiAgfQogIGl0ZXJhdG9yIG9wZXJhdG9yKysoaW50KSB7CiAgICBpdGVyYXRvciBfX3Rt
cCA9ICp0aGlzOwogICAgYnVtcF91cCgpOwogICAgcmV0dXJuIF9fdG1wOwogIH0KICBpdGVyYXRv
ciYgb3BlcmF0b3ItLSgpIHsKICAgIGJ1bXBfZG93bigpOwogICAgcmV0dXJuICp0aGlzOwogIH0K
ICBpdGVyYXRvciBvcGVyYXRvci0tKGludCkgewogICAgaXRlcmF0b3IgX190bXAgPSAqdGhpczsK
ICAgIGJ1bXBfZG93bigpOwogICAgcmV0dXJuIF9fdG1wOwogIH0KICBpdGVyYXRvciYgb3BlcmF0
b3IrPShkaWZmZXJlbmNlX3R5cGUgX19pKSB7CiAgICBkaWZmZXJlbmNlX3R5cGUgX19uID0gX19p
ICsgX01fb2Zmc2V0OwogICAgX01fcCArPSBfX24gLyBfX1dPUkRfQklUOwogICAgX19uID0gX19u
ICUgX19XT1JEX0JJVDsKICAgIGlmIChfX24gPCAwKSB7CiAgICAgIF9NX29mZnNldCA9ICh1bnNp
Z25lZCBpbnQpIF9fbiArIF9fV09SRF9CSVQ7CiAgICAgIC0tX01fcDsKICAgIH0gZWxzZQogICAg
ICBfTV9vZmZzZXQgPSAodW5zaWduZWQgaW50KSBfX247CiAgICByZXR1cm4gKnRoaXM7CiAgfQog
IGl0ZXJhdG9yJiBvcGVyYXRvci09KGRpZmZlcmVuY2VfdHlwZSBfX2kpIHsKICAgICp0aGlzICs9
IC1fX2k7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIGl0ZXJhdG9yIG9wZXJhdG9yKyhkaWZmZXJl
bmNlX3R5cGUgX19pKSBjb25zdCB7CiAgICBpdGVyYXRvciBfX3RtcCA9ICp0aGlzOwogICAgcmV0
dXJuIF9fdG1wICs9IF9faTsKICB9CiAgaXRlcmF0b3Igb3BlcmF0b3ItKGRpZmZlcmVuY2VfdHlw
ZSBfX2kpIGNvbnN0IHsKICAgIGl0ZXJhdG9yIF9fdG1wID0gKnRoaXM7CiAgICByZXR1cm4gX190
bXAgLT0gX19pOwogIH0KICBkaWZmZXJlbmNlX3R5cGUgb3BlcmF0b3ItKGl0ZXJhdG9yIF9feCkg
Y29uc3QgewogICAgcmV0dXJuIF9fV09SRF9CSVQgKiAoX01fcCAtIF9feC5fTV9wKSArIF9NX29m
ZnNldCAtIF9feC5fTV9vZmZzZXQ7CiAgfQogIHJlZmVyZW5jZSBvcGVyYXRvcltdKGRpZmZlcmVu
Y2VfdHlwZSBfX2kpIHsgcmV0dXJuICooKnRoaXMgKyBfX2kpOyB9CiAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IGl0ZXJhdG9yJiBfX3gpIGNvbnN0IHsKICAgIHJldHVybiBfTV9wID09IF9feC5fTV9w
ICYmIF9NX29mZnNldCA9PSBfX3guX01fb2Zmc2V0OwogIH0KICBib29sIG9wZXJhdG9yIT0oY29u
c3QgaXRlcmF0b3ImIF9feCkgY29uc3QgewogICAgcmV0dXJuIF9NX3AgIT0gX194Ll9NX3AgfHwg
X01fb2Zmc2V0ICE9IF9feC5fTV9vZmZzZXQ7CiAgfQogIGJvb2wgb3BlcmF0b3I8KGl0ZXJhdG9y
IF9feCkgY29uc3QgewogICAgcmV0dXJuIF9NX3AgPCBfX3guX01fcCB8fCAoX01fcCA9PSBfX3gu
X01fcCAmJiBfTV9vZmZzZXQgPCBfX3guX01fb2Zmc2V0KTsKICB9Cn07CgpzdHJ1Y3QgX0JpdF9j
b25zdF9pdGVyYXRvcgogIDogcHVibGljIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8Ym9vbCwgcHRy
ZGlmZl90Pgp7CiAgdHlwZWRlZiBib29sICAgICAgICAgICAgICAgICByZWZlcmVuY2U7CiAgdHlw
ZWRlZiBib29sICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2U7CiAgdHlwZWRlZiBjb25z
dCBib29sKiAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgX0JpdF9jb25zdF9pdGVyYXRvciAg
Y29uc3RfaXRlcmF0b3I7CgogIHVuc2lnbmVkIGludCogX01fcDsKICB1bnNpZ25lZCBpbnQgX01f
b2Zmc2V0OwogIHZvaWQgYnVtcF91cCgpIHsKICAgIGlmIChfTV9vZmZzZXQrKyA9PSBfX1dPUkRf
QklUIC0gMSkgewogICAgICBfTV9vZmZzZXQgPSAwOwogICAgICArK19NX3A7CiAgICB9CiAgfQog
IHZvaWQgYnVtcF9kb3duKCkgewogICAgaWYgKF9NX29mZnNldC0tID09IDApIHsKICAgICAgX01f
b2Zmc2V0ID0gX19XT1JEX0JJVCAtIDE7CiAgICAgIC0tX01fcDsKICAgIH0KICB9CgogIF9CaXRf
Y29uc3RfaXRlcmF0b3IoKSA6IF9NX3AoMCksIF9NX29mZnNldCgwKSB7fQogIF9CaXRfY29uc3Rf
aXRlcmF0b3IodW5zaWduZWQgaW50KiBfX3gsIHVuc2lnbmVkIGludCBfX3kpIAogICAgOiBfTV9w
KF9feCksIF9NX29mZnNldChfX3kpIHt9CiAgX0JpdF9jb25zdF9pdGVyYXRvcihjb25zdCBfQml0
X2l0ZXJhdG9yJiBfX3gpIAogICAgOiBfTV9wKF9feC5fTV9wKSwgX01fb2Zmc2V0KF9feC5fTV9v
ZmZzZXQpIHt9CiAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsKICAgIHJldHVy
biBfQml0X3JlZmVyZW5jZShfTV9wLCAxVSA8PCBfTV9vZmZzZXQpOwogIH0KICBjb25zdF9pdGVy
YXRvciYgb3BlcmF0b3IrKygpIHsKICAgIGJ1bXBfdXAoKTsKICAgIHJldHVybiAqdGhpczsKICB9
CiAgY29uc3RfaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpIHsKICAgIGNvbnN0X2l0ZXJhdG9yIF9f
dG1wID0gKnRoaXM7CiAgICBidW1wX3VwKCk7CiAgICByZXR1cm4gX190bXA7CiAgfQogIGNvbnN0
X2l0ZXJhdG9yJiBvcGVyYXRvci0tKCkgewogICAgYnVtcF9kb3duKCk7CiAgICByZXR1cm4gKnRo
aXM7CiAgfQogIGNvbnN0X2l0ZXJhdG9yIG9wZXJhdG9yLS0oaW50KSB7CiAgICBjb25zdF9pdGVy
YXRvciBfX3RtcCA9ICp0aGlzOwogICAgYnVtcF9kb3duKCk7CiAgICByZXR1cm4gX190bXA7CiAg
fQogIGNvbnN0X2l0ZXJhdG9yJiBvcGVyYXRvcis9KGRpZmZlcmVuY2VfdHlwZSBfX2kpIHsKICAg
IGRpZmZlcmVuY2VfdHlwZSBfX24gPSBfX2kgKyBfTV9vZmZzZXQ7CiAgICBfTV9wICs9IF9fbiAv
IF9fV09SRF9CSVQ7CiAgICBfX24gPSBfX24gJSBfX1dPUkRfQklUOwogICAgaWYgKF9fbiA8IDAp
IHsKICAgICAgX01fb2Zmc2V0ID0gKHVuc2lnbmVkIGludCkgX19uICsgX19XT1JEX0JJVDsKICAg
ICAgLS1fTV9wOwogICAgfSBlbHNlCiAgICAgIF9NX29mZnNldCA9ICh1bnNpZ25lZCBpbnQpIF9f
bjsKICAgIHJldHVybiAqdGhpczsKICB9CiAgY29uc3RfaXRlcmF0b3ImIG9wZXJhdG9yLT0oZGlm
ZmVyZW5jZV90eXBlIF9faSkgewogICAgKnRoaXMgKz0gLV9faTsKICAgIHJldHVybiAqdGhpczsK
ICB9CiAgY29uc3RfaXRlcmF0b3Igb3BlcmF0b3IrKGRpZmZlcmVuY2VfdHlwZSBfX2kpIGNvbnN0
IHsKICAgIGNvbnN0X2l0ZXJhdG9yIF9fdG1wID0gKnRoaXM7CiAgICByZXR1cm4gX190bXAgKz0g
X19pOwogIH0KICBjb25zdF9pdGVyYXRvciBvcGVyYXRvci0oZGlmZmVyZW5jZV90eXBlIF9faSkg
Y29uc3QgewogICAgY29uc3RfaXRlcmF0b3IgX190bXAgPSAqdGhpczsKICAgIHJldHVybiBfX3Rt
cCAtPSBfX2k7CiAgfQogIGRpZmZlcmVuY2VfdHlwZSBvcGVyYXRvci0oY29uc3RfaXRlcmF0b3Ig
X194KSBjb25zdCB7CiAgICByZXR1cm4gX19XT1JEX0JJVCAqIChfTV9wIC0gX194Ll9NX3ApICsg
X01fb2Zmc2V0IC0gX194Ll9NX29mZnNldDsKICB9CiAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9y
W10oZGlmZmVyZW5jZV90eXBlIF9faSkgeyAKICAgIHJldHVybiAqKCp0aGlzICsgX19pKTsgCiAg
fQogIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjb25zdF9pdGVyYXRvciYgX194KSBjb25zdCB7CiAg
ICByZXR1cm4gX01fcCA9PSBfX3guX01fcCAmJiBfTV9vZmZzZXQgPT0gX194Ll9NX29mZnNldDsK
ICB9CiAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBfX3gpIGNvbnN0IHsK
ICAgIHJldHVybiBfTV9wICE9IF9feC5fTV9wIHx8IF9NX29mZnNldCAhPSBfX3guX01fb2Zmc2V0
OwogIH0KICBib29sIG9wZXJhdG9yPChjb25zdF9pdGVyYXRvciBfX3gpIGNvbnN0IHsKICAgIHJl
dHVybiBfTV9wIDwgX194Ll9NX3AgfHwgKF9NX3AgPT0gX194Ll9NX3AgJiYgX01fb2Zmc2V0IDwg
X194Ll9NX29mZnNldCk7CiAgfQp9OwoKIAogCgojIDMxOSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp
Yi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9z
dGxfYnZlY3Rvci5oIiAzCgoKdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4KY2xhc3MgX0J2ZWN0b3Jf
YmFzZQp7CnB1YmxpYzoKICB0eXBlZGVmIF9BbGxvYyBhbGxvY2F0b3JfdHlwZTsKICBhbGxvY2F0
b3JfdHlwZSBnZXRfYWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gYWxsb2NhdG9yX3R5cGUoKTsg
fQoKICBfQnZlY3Rvcl9iYXNlKGNvbnN0IGFsbG9jYXRvcl90eXBlJikKICAgIDogX01fc3RhcnQo
KSwgX01fZmluaXNoKCksIF9NX2VuZF9vZl9zdG9yYWdlKDApIHt9CiAgfl9CdmVjdG9yX2Jhc2Uo
KSB7IF9NX2RlYWxsb2NhdGUoKTsgfQoKcHJvdGVjdGVkOgogIHR5cGVkZWYgc2ltcGxlX2FsbG9j
PHVuc2lnbmVkIGludCwgX0FsbG9jPiBfQWxsb2NfdHlwZTsKICAKICB1bnNpZ25lZCBpbnQqIF9N
X2JpdF9hbGxvYyhzaXplX3QgX19uKSAKICAgIHsgcmV0dXJuIF9BbGxvY190eXBlOjphbGxvY2F0
ZSgoX19uICsgX19XT1JEX0JJVCAtIDEpL19fV09SRF9CSVQpOyB9CiAgdm9pZCBfTV9kZWFsbG9j
YXRlKCkgewogICAgaWYgKF9NX3N0YXJ0Ll9NX3ApCiAgICAgIF9BbGxvY190eXBlOjpkZWFsbG9j
YXRlKF9NX3N0YXJ0Ll9NX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NX2VuZF9v
Zl9zdG9yYWdlIC0gX01fc3RhcnQuX01fcCk7CiAgfQoKICBfQml0X2l0ZXJhdG9yIF9NX3N0YXJ0
OwogIF9CaXRfaXRlcmF0b3IgX01fZmluaXNoOwogIHVuc2lnbmVkIGludCogX01fZW5kX29mX3N0
b3JhZ2U7ICAKfTsKCgoKIAogCiAKIAoKCgoKCgoKCgoKICAgICAgICAKCiAgICAgICAgCnRlbXBs
YXRlPGNsYXNzIF9BbGxvYz4gY2xhc3MgdmVjdG9yPGJvb2wsX0FsbG9jPgogIDogcHVibGljIF9C
dmVjdG9yX2Jhc2U8X0FsbG9jPgoKCgoKewoKICB0eXBlZGVmIF9CdmVjdG9yX2Jhc2U8X0FsbG9j
PiBfQmFzZTsKCgoKcHVibGljOgogIHR5cGVkZWYgYm9vbCB2YWx1ZV90eXBlOwogIHR5cGVkZWYg
c2l6ZV90IHNpemVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7IAog
IHR5cGVkZWYgX0JpdF9yZWZlcmVuY2UgcmVmZXJlbmNlOwogIHR5cGVkZWYgYm9vbCBjb25zdF9y
ZWZlcmVuY2U7CiAgdHlwZWRlZiBfQml0X3JlZmVyZW5jZSogcG9pbnRlcjsKICB0eXBlZGVmIGNv
bnN0IGJvb2wqIGNvbnN0X3BvaW50ZXI7CgogIHR5cGVkZWYgX0JpdF9pdGVyYXRvciAgICAgICAg
ICAgICAgICBpdGVyYXRvcjsKICB0eXBlZGVmIF9CaXRfY29uc3RfaXRlcmF0b3IgICAgICAgICAg
Y29uc3RfaXRlcmF0b3I7CgoKICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0
b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgdHlwZWRlZiByZXZlcnNlX2l0ZXJhdG9yPGl0
ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwoKCgoKCgoKICB0eXBlZGVmIHR5cGVuYW1lIF9CYXNl
OjphbGxvY2F0b3JfdHlwZSBhbGxvY2F0b3JfdHlwZTsKICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxs
b2NhdG9yKCkgY29uc3QgeyByZXR1cm4gX0Jhc2U6OmdldF9hbGxvY2F0b3IoKTsgfQoKcHJvdGVj
dGVkOgoKCgoKCgoKCnByb3RlY3RlZDoKICB2b2lkIF9NX2luaXRpYWxpemUoc2l6ZV90eXBlIF9f
bikgewogICAgdW5zaWduZWQgaW50KiBfX3EgPSBfTV9iaXRfYWxsb2MoX19uKTsKICAgIF9NX2Vu
ZF9vZl9zdG9yYWdlID0gX19xICsgKF9fbiArIF9fV09SRF9CSVQgLSAxKS9fX1dPUkRfQklUOwog
ICAgX01fc3RhcnQgPSBpdGVyYXRvcihfX3EsIDApOwogICAgX01fZmluaXNoID0gX01fc3RhcnQg
KyBkaWZmZXJlbmNlX3R5cGUoX19uKTsKICB9CiAgdm9pZCBfTV9pbnNlcnRfYXV4KGl0ZXJhdG9y
IF9fcG9zaXRpb24sIGJvb2wgX194KSB7CiAgICBpZiAoX01fZmluaXNoLl9NX3AgIT0gX01fZW5k
X29mX3N0b3JhZ2UpIHsKICAgICAgY29weV9iYWNrd2FyZChfX3Bvc2l0aW9uLCBfTV9maW5pc2gs
IF9NX2ZpbmlzaCArIDEpOwogICAgICAqX19wb3NpdGlvbiA9IF9feDsKICAgICAgKytfTV9maW5p
c2g7CiAgICB9CiAgICBlbHNlIHsKICAgICAgc2l6ZV90eXBlIF9fbGVuID0gc2l6ZSgpID8gMiAq
IHNpemUoKSA6IF9fV09SRF9CSVQ7CiAgICAgIHVuc2lnbmVkIGludCogX19xID0gX01fYml0X2Fs
bG9jKF9fbGVuKTsKICAgICAgaXRlcmF0b3IgX19pID0gY29weShiZWdpbigpLCBfX3Bvc2l0aW9u
LCBpdGVyYXRvcihfX3EsIDApKTsKICAgICAgKl9faSsrID0gX194OwogICAgICBfTV9maW5pc2gg
PSBjb3B5KF9fcG9zaXRpb24sIGVuZCgpLCBfX2kpOwogICAgICBfTV9kZWFsbG9jYXRlKCk7CiAg
ICAgIF9NX2VuZF9vZl9zdG9yYWdlID0gX19xICsgKF9fbGVuICsgX19XT1JEX0JJVCAtIDEpL19f
V09SRF9CSVQ7CiAgICAgIF9NX3N0YXJ0ID0gaXRlcmF0b3IoX19xLCAwKTsKICAgIH0KICB9CgoK
ICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgdm9pZCBfTV9pbml0aWFsaXplX3Jh
bmdlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKSB7CiAgICBfTV9zdGFydCA9
IGl0ZXJhdG9yKCk7CiAgICBfTV9maW5pc2ggPSBpdGVyYXRvcigpOwogICAgX01fZW5kX29mX3N0
b3JhZ2UgPSAwOwogICAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KSAKICAg
ICAgcHVzaF9iYWNrKCpfX2ZpcnN0KTsKICB9CgogIHRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0
ZXJhdG9yPgogIHZvaWQgX01faW5pdGlhbGl6ZV9yYW5nZShfRm9yd2FyZEl0ZXJhdG9yIF9fZmly
c3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBm
b3J3YXJkX2l0ZXJhdG9yX3RhZykgewogICAgc2l6ZV90eXBlIF9fbiA9IDA7CiAgICBkaXN0YW5j
ZShfX2ZpcnN0LCBfX2xhc3QsIF9fbik7CiAgICBfTV9pbml0aWFsaXplKF9fbik7CiAgICBjb3B5
KF9fZmlyc3QsIF9fbGFzdCwgX01fc3RhcnQpOwogIH0KCiAgdGVtcGxhdGUgPGNsYXNzIF9JbnB1
dEl0ZXJhdG9yPgogIHZvaWQgX01faW5zZXJ0X3JhbmdlKGl0ZXJhdG9yIF9fcG9zLAogICAgICAg
ICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpIHsKICAgIGZv
ciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkgewogICAgICBfX3BvcyA9IGluc2Vy
dChfX3BvcywgKl9fZmlyc3QpOwogICAgICArK19fcG9zOwogICAgfQogIH0KCiAgdGVtcGxhdGUg
PGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CiAgdm9pZCBfTV9pbnNlcnRfcmFuZ2UoaXRlcmF0b3Ig
X19wb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fZmly
c3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgIGZvcndh
cmRfaXRlcmF0b3JfdGFnKSB7CiAgICBpZiAoX19maXJzdCAhPSBfX2xhc3QpIHsKICAgICAgc2l6
ZV90eXBlIF9fbiA9IDA7CiAgICAgIGRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwgX19uKTsKICAg
ICAgaWYgKGNhcGFjaXR5KCkgLSBzaXplKCkgPj0gX19uKSB7CiAgICAgICAgY29weV9iYWNrd2Fy
ZChfX3Bvc2l0aW9uLCBlbmQoKSwgX01fZmluaXNoICsgZGlmZmVyZW5jZV90eXBlKF9fbikpOwog
ICAgICAgIGNvcHkoX19maXJzdCwgX19sYXN0LCBfX3Bvc2l0aW9uKTsKICAgICAgICBfTV9maW5p
c2ggKz0gZGlmZmVyZW5jZV90eXBlKF9fbik7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAg
c2l6ZV90eXBlIF9fbGVuID0gc2l6ZSgpICsgbWF4KHNpemUoKSwgX19uKTsKICAgICAgICB1bnNp
Z25lZCBpbnQqIF9fcSA9IF9NX2JpdF9hbGxvYyhfX2xlbik7CiAgICAgICAgaXRlcmF0b3IgX19p
ID0gY29weShiZWdpbigpLCBfX3Bvc2l0aW9uLCBpdGVyYXRvcihfX3EsIDApKTsKICAgICAgICBf
X2kgPSBjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19pKTsKICAgICAgICBfTV9maW5pc2ggPSBjb3B5
KF9fcG9zaXRpb24sIGVuZCgpLCBfX2kpOwogICAgICAgIF9NX2RlYWxsb2NhdGUoKTsKICAgICAg
ICBfTV9lbmRfb2Zfc3RvcmFnZSA9IF9fcSArIChfX2xlbiArIF9fV09SRF9CSVQgLSAxKS9fX1dP
UkRfQklUOwogICAgICAgIF9NX3N0YXJ0ID0gaXRlcmF0b3IoX19xLCAwKTsKICAgICAgfQogICAg
fQogIH0gICAgICAKCgoKcHVibGljOgogIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gX01fc3Rh
cnQ7IH0KICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIF9NX3N0YXJ0OyB9
CiAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gX01fZmluaXNoOyB9CiAgY29uc3RfaXRlcmF0b3Ig
ZW5kKCkgY29uc3QgeyByZXR1cm4gX01fZmluaXNoOyB9CgogIHJldmVyc2VfaXRlcmF0b3IgcmJl
Z2luKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KICBjb25zdF9yZXZlcnNl
X2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgCiAgICByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVy
YXRvcihlbmQoKSk7IAogIH0KICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiByZXZl
cnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CiAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkg
Y29uc3QgeyAKICAgIHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyAKICB9
CgogIHNpemVfdHlwZSBzaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV90eXBlKGVuZCgpIC0gYmVn
aW4oKSk7IH0KICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7IHJldHVybiBzaXplX3R5cGUo
LTEpOyB9CiAgc2l6ZV90eXBlIGNhcGFjaXR5KCkgY29uc3QgewogICAgcmV0dXJuIHNpemVfdHlw
ZShjb25zdF9pdGVyYXRvcihfTV9lbmRfb2Zfc3RvcmFnZSwgMCkgLSBiZWdpbigpKTsKICB9CiAg
Ym9vbCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5kKCk7IH0KICByZWZlcmVu
Y2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgX19uKSB7CiAgICByZXR1cm4gKihiZWdpbigpICsgZGlm
ZmVyZW5jZV90eXBlKF9fbikpOwogIH0KICBjb25zdF9yZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXpl
X3R5cGUgX19uKSBjb25zdCB7CiAgICByZXR1cm4gKihiZWdpbigpICsgZGlmZmVyZW5jZV90eXBl
KF9fbikpOwogIH0KCiAgZXhwbGljaXQgdmVjdG9yIChjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19h
ID0gYWxsb2NhdG9yX3R5cGUoKSkKICAgIDogX0Jhc2UoX19hKSB7fQoKICB2ZWN0b3IgKHNpemVf
dHlwZSBfX24sIGJvb2wgX192YWx1ZSwKICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUm
IF9fYSA9IGFsbG9jYXRvcl90eXBlKCkpCiAgICA6IF9CYXNlKF9fYSkKICB7CiAgICBfTV9pbml0
aWFsaXplKF9fbik7CiAgICBmaWxsKF9NX3N0YXJ0Ll9NX3AsIF9NX2VuZF9vZl9zdG9yYWdlLCBf
X3ZhbHVlID8gfjAgOiAwKTsKICB9CgogIGV4cGxpY2l0IHZlY3RvciAoc2l6ZV90eXBlIF9fbikK
ICAgIDogX0Jhc2UoYWxsb2NhdG9yX3R5cGUoKSkKICB7CiAgICBfTV9pbml0aWFsaXplKF9fbik7
CiAgICBmaWxsKF9NX3N0YXJ0Ll9NX3AsIF9NX2VuZF9vZl9zdG9yYWdlLCAwKTsKICB9CgogIHZl
Y3RvciAoY29uc3QgdmVjdG9yICYgX194KSA6IF9CYXNlKF9feC5nZXRfYWxsb2NhdG9yKCkpIHsK
ICAgIF9NX2luaXRpYWxpemUoX194LnNpemUoKSk7CiAgICBjb3B5KF9feC5iZWdpbigpLCBfX3gu
ZW5kKCksIF9NX3N0YXJ0KTsKICB9CgoKICAgCiAgdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJh
dG9yPgogIHZlY3RvciAoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19s
YXN0LAogICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5
cGUoKSkKICAgIDogX0Jhc2UoX19hKQogIHsKICAgIHR5cGVkZWYgdHlwZW5hbWUgX0lzX2ludGVn
ZXI8X0lucHV0SXRlcmF0b3I+OjpfSW50ZWdyYWwgX0ludGVncmFsOwogICAgX01faW5pdGlhbGl6
ZV9kaXNwYXRjaChfX2ZpcnN0LCBfX2xhc3QsIF9JbnRlZ3JhbCgpKTsKICB9CiAgICAKICB0ZW1w
bGF0ZSA8Y2xhc3MgX0ludGVnZXI+CiAgdm9pZCBfTV9pbml0aWFsaXplX2Rpc3BhdGNoKF9JbnRl
Z2VyIF9fbiwgX0ludGVnZXIgX194LCBfX3RydWVfdHlwZSkgewogICAgX01faW5pdGlhbGl6ZShf
X24pOwogICAgZmlsbChfTV9zdGFydC5fTV9wLCBfTV9lbmRfb2Zfc3RvcmFnZSwgX194ID8gfjAg
OiAwKTsKICB9CiAgICAKICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgdm9pZCBf
TV9pbml0aWFsaXplX2Rpc3BhdGNoKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJh
dG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mYWxzZV90eXBlKSB7
CiAgICBfTV9pbml0aWFsaXplX3JhbmdlKF9fZmlyc3QsIF9fbGFzdCwgX19pdGVyYXRvcl9jYXRl
Z29yeSggX19maXJzdCApICk7CiAgfQojIDU4NyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYnZl
Y3Rvci5oIiAzCgoKICB+dmVjdG9yICgpIHsgfQoKICB2ZWN0b3IgJiBvcGVyYXRvcj0oY29uc3Qg
dmVjdG9yICYgX194KSB7CiAgICBpZiAoJl9feCA9PSB0aGlzKSByZXR1cm4gKnRoaXM7CiAgICBp
ZiAoX194LnNpemUoKSA+IGNhcGFjaXR5KCkpIHsKICAgICAgX01fZGVhbGxvY2F0ZSgpOwogICAg
ICBfTV9pbml0aWFsaXplKF9feC5zaXplKCkpOwogICAgfQogICAgY29weShfX3guYmVnaW4oKSwg
X194LmVuZCgpLCBiZWdpbigpKTsKICAgIF9NX2ZpbmlzaCA9IGJlZ2luKCkgKyBkaWZmZXJlbmNl
X3R5cGUoX194LnNpemUoKSk7CiAgICByZXR1cm4gKnRoaXM7CiAgfQoKICAgCiAgIAogICAKICAg
CgogIHZvaWQgYXNzaWduKHNpemVfdCBfX24sIGJvb2wgX194KSB7CiAgICBpZiAoX19uID4gc2l6
ZSgpKSB7CiAgICAgIGZpbGwoX01fc3RhcnQuX01fcCwgX01fZW5kX29mX3N0b3JhZ2UsIF9feCA/
IH4wIDogMCk7CiAgICAgIGluc2VydChlbmQoKSwgX19uIC0gc2l6ZSgpLCBfX3gpOwogICAgfQog
ICAgZWxzZSB7CiAgICAgIGVyYXNlKGJlZ2luKCkgKyBfX24sIGVuZCgpKTsKICAgICAgZmlsbChf
TV9zdGFydC5fTV9wLCBfTV9lbmRfb2Zfc3RvcmFnZSwgX194ID8gfjAgOiAwKTsKICAgIH0KICB9
CgoKCiAgdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogIHZvaWQgYXNzaWduKF9JbnB1
dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkgewogICAgdHlwZWRlZiB0
eXBlbmFtZSBfSXNfaW50ZWdlcjxfSW5wdXRJdGVyYXRvcj46Ol9JbnRlZ3JhbCBfSW50ZWdyYWw7
CiAgICBfTV9hc3NpZ25fZGlzcGF0Y2goX19maXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7CiAg
fQoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0ludGVnZXI+CiAgdm9pZCBfTV9hc3NpZ25fZGlzcGF0Y2go
X0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3ZhbCwgX190cnVlX3R5cGUpCiAgICB7IGFzc2lnbigo
c2l6ZV90KSBfX24sIChib29sKSBfX3ZhbCk7IH0KCiAgdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0
ZXI+CiAgdm9pZCBfTV9hc3NpZ25fZGlzcGF0Y2goX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyIF9fbGFzdCwgX19mYWxzZV90eXBlKQogICAgeyBfTV9hc3NpZ25fYXV4KF9fZmlyc3QsIF9f
bGFzdCwgX19pdGVyYXRvcl9jYXRlZ29yeSggX19maXJzdCApICk7IH0KCiAgdGVtcGxhdGUgPGNs
YXNzIF9JbnB1dEl0ZXJhdG9yPgogIHZvaWQgX01fYXNzaWduX2F1eChfSW5wdXRJdGVyYXRvciBf
X2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgIGlucHV0
X2l0ZXJhdG9yX3RhZykgewogICAgaXRlcmF0b3IgX19jdXIgPSBiZWdpbigpOwogICAgZm9yICgg
OyBfX2ZpcnN0ICE9IF9fbGFzdCAmJiBfX2N1ciAhPSBlbmQoKTsgKytfX2N1ciwgKytfX2ZpcnN0
KQogICAgICAqX19jdXIgPSAqX19maXJzdDsKICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAg
ICAgZXJhc2UoX19jdXIsIGVuZCgpKTsKICAgIGVsc2UKICAgICAgaW5zZXJ0KGVuZCgpLCBfX2Zp
cnN0LCBfX2xhc3QpOwogIH0KCiAgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CiAg
dm9pZCBfTV9hc3NpZ25fYXV4KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVy
YXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRfaXRlcmF0b3JfdGFnKSB7
CiAgICBzaXplX3R5cGUgX19sZW4gPSAwOwogICAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBf
X2xlbik7CiAgICBpZiAoX19sZW4gPCBzaXplKCkpCiAgICAgIGVyYXNlKGNvcHkoX19maXJzdCwg
X19sYXN0LCBiZWdpbigpKSwgZW5kKCkpOwogICAgZWxzZSB7CiAgICAgIF9Gb3J3YXJkSXRlcmF0
b3IgX19taWQgPSBfX2ZpcnN0OwogICAgICBhZHZhbmNlKF9fbWlkLCBzaXplKCkpOwogICAgICBj
b3B5KF9fZmlyc3QsIF9fbWlkLCBiZWdpbigpKTsKICAgICAgaW5zZXJ0KGVuZCgpLCBfX21pZCwg
X19sYXN0KTsKICAgIH0KICB9ICAgIAoKCgogIHZvaWQgcmVzZXJ2ZShzaXplX3R5cGUgX19uKSB7
CiAgICBpZiAoY2FwYWNpdHkoKSA8IF9fbikgewogICAgICB1bnNpZ25lZCBpbnQqIF9fcSA9IF9N
X2JpdF9hbGxvYyhfX24pOwogICAgICBfTV9maW5pc2ggPSBjb3B5KGJlZ2luKCksIGVuZCgpLCBp
dGVyYXRvcihfX3EsIDApKTsKICAgICAgX01fZGVhbGxvY2F0ZSgpOwogICAgICBfTV9zdGFydCA9
IGl0ZXJhdG9yKF9fcSwgMCk7CiAgICAgIF9NX2VuZF9vZl9zdG9yYWdlID0gX19xICsgKF9fbiAr
IF9fV09SRF9CSVQgLSAxKS9fX1dPUkRfQklUOwogICAgfQogIH0KCiAgcmVmZXJlbmNlIGZyb250
KCkgeyByZXR1cm4gKmJlZ2luKCk7IH0KICBjb25zdF9yZWZlcmVuY2UgZnJvbnQoKSBjb25zdCB7
IHJldHVybiAqYmVnaW4oKTsgfQogIHJlZmVyZW5jZSBiYWNrKCkgeyByZXR1cm4gKihlbmQoKSAt
IDEpOyB9CiAgY29uc3RfcmVmZXJlbmNlIGJhY2soKSBjb25zdCB7IHJldHVybiAqKGVuZCgpIC0g
MSk7IH0KICB2b2lkIHB1c2hfYmFjayhib29sIF9feCkgewogICAgaWYgKF9NX2ZpbmlzaC5fTV9w
ICE9IF9NX2VuZF9vZl9zdG9yYWdlKQogICAgICAqX01fZmluaXNoKysgPSBfX3g7CiAgICBlbHNl
CiAgICAgIF9NX2luc2VydF9hdXgoZW5kKCksIF9feCk7CiAgfQogIHZvaWQgc3dhcCh2ZWN0b3Ig
JiBfX3gpIHsKICAgICA6OnN3YXAoX01fc3RhcnQsIF9feC5fTV9zdGFydCk7CiAgICAgOjpzd2Fw
KF9NX2ZpbmlzaCwgX194Ll9NX2ZpbmlzaCk7CiAgICAgOjpzd2FwKF9NX2VuZF9vZl9zdG9yYWdl
LCBfX3guX01fZW5kX29mX3N0b3JhZ2UpOwogIH0KICBpdGVyYXRvciBpbnNlcnQoaXRlcmF0b3Ig
X19wb3NpdGlvbiwgYm9vbCBfX3ggPSBib29sKCkpIHsKICAgIGRpZmZlcmVuY2VfdHlwZSBfX24g
PSBfX3Bvc2l0aW9uIC0gYmVnaW4oKTsKICAgIGlmIChfTV9maW5pc2guX01fcCAhPSBfTV9lbmRf
b2Zfc3RvcmFnZSAmJiBfX3Bvc2l0aW9uID09IGVuZCgpKQogICAgICAqX01fZmluaXNoKysgPSBf
X3g7CiAgICBlbHNlCiAgICAgIF9NX2luc2VydF9hdXgoX19wb3NpdGlvbiwgX194KTsKICAgIHJl
dHVybiBiZWdpbigpICsgX19uOwogIH0KCgogICAKICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRl
cmF0b3I+CiAgdm9pZCBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbiwKICAgICAgICAgICAgICBf
SW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX0lzX2ludGVnZXI8X0lucHV0SXRlcmF0b3I+OjpfSW50ZWdyYWwgX0ludGVn
cmFsOwogICAgX01faW5zZXJ0X2Rpc3BhdGNoKF9fcG9zaXRpb24sIF9fZmlyc3QsIF9fbGFzdCwg
X0ludGVncmFsKCkpOwogIH0KCiAgdGVtcGxhdGUgPGNsYXNzIF9JbnRlZ2VyPgogIHZvaWQgX01f
aW5zZXJ0X2Rpc3BhdGNoKGl0ZXJhdG9yIF9fcG9zLCBfSW50ZWdlciBfX24sIF9JbnRlZ2VyIF9f
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX3RydWVfdHlwZSkgewogICAgaW5zZXJ0KF9f
cG9zLCAoc2l6ZV90eXBlKSBfX24sIChib29sKSBfX3gpOwogIH0KCiAgdGVtcGxhdGUgPGNsYXNz
IF9JbnB1dEl0ZXJhdG9yPgogIHZvaWQgX01faW5zZXJ0X2Rpc3BhdGNoKGl0ZXJhdG9yIF9fcG9z
LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1
dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ZhbHNlX3R5cGUp
IHsKICAgIF9NX2luc2VydF9yYW5nZShfX3BvcywgX19maXJzdCwgX19sYXN0LCBfX2l0ZXJhdG9y
X2NhdGVnb3J5KCBfX2ZpcnN0ICkgKTsKICB9CiMgNzYxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0
bF9idmVjdG9yLmgiIDMKCiAgCiAgdm9pZCBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbiwgc2l6
ZV90eXBlIF9fbiwgYm9vbCBfX3gpIHsKICAgIGlmIChfX24gPT0gMCkgcmV0dXJuOwogICAgaWYg
KGNhcGFjaXR5KCkgLSBzaXplKCkgPj0gX19uKSB7CiAgICAgIGNvcHlfYmFja3dhcmQoX19wb3Np
dGlvbiwgZW5kKCksIF9NX2ZpbmlzaCArIGRpZmZlcmVuY2VfdHlwZShfX24pKTsKICAgICAgZmls
bChfX3Bvc2l0aW9uLCBfX3Bvc2l0aW9uICsgZGlmZmVyZW5jZV90eXBlKF9fbiksIF9feCk7CiAg
ICAgIF9NX2ZpbmlzaCArPSBkaWZmZXJlbmNlX3R5cGUoX19uKTsKICAgIH0KICAgIGVsc2Ugewog
ICAgICBzaXplX3R5cGUgX19sZW4gPSBzaXplKCkgKyBtYXgoc2l6ZSgpLCBfX24pOwogICAgICB1
bnNpZ25lZCBpbnQqIF9fcSA9IF9NX2JpdF9hbGxvYyhfX2xlbik7CiAgICAgIGl0ZXJhdG9yIF9f
aSA9IGNvcHkoYmVnaW4oKSwgX19wb3NpdGlvbiwgaXRlcmF0b3IoX19xLCAwKSk7CiAgICAgIGZp
bGxfbihfX2ksIF9fbiwgX194KTsKICAgICAgX01fZmluaXNoID0gY29weShfX3Bvc2l0aW9uLCBl
bmQoKSwgX19pICsgZGlmZmVyZW5jZV90eXBlKF9fbikpOwogICAgICBfTV9kZWFsbG9jYXRlKCk7
CiAgICAgIF9NX2VuZF9vZl9zdG9yYWdlID0gX19xICsgKF9fbGVuICsgX19XT1JEX0JJVCAtIDEp
L19fV09SRF9CSVQ7CiAgICAgIF9NX3N0YXJ0ID0gaXRlcmF0b3IoX19xLCAwKTsKICAgIH0KICB9
CgogIHZvaWQgcG9wX2JhY2soKSB7IC0tX01fZmluaXNoOyB9CiAgaXRlcmF0b3IgZXJhc2UoaXRl
cmF0b3IgX19wb3NpdGlvbikgewogICAgaWYgKF9fcG9zaXRpb24gKyAxICE9IGVuZCgpKQogICAg
ICBjb3B5KF9fcG9zaXRpb24gKyAxLCBlbmQoKSwgX19wb3NpdGlvbik7CiAgICAgIC0tX01fZmlu
aXNoOwogICAgcmV0dXJuIF9fcG9zaXRpb247CiAgfQogIGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9y
IF9fZmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCkgewogICAgX01fZmluaXNoID0gY29weShfX2xhc3Qs
IGVuZCgpLCBfX2ZpcnN0KTsKICAgIHJldHVybiBfX2ZpcnN0OwogIH0KICB2b2lkIHJlc2l6ZShz
aXplX3R5cGUgX19uZXdfc2l6ZSwgYm9vbCBfX3ggPSBib29sKCkpIHsKICAgIGlmIChfX25ld19z
aXplIDwgc2l6ZSgpKSAKICAgICAgZXJhc2UoYmVnaW4oKSArIGRpZmZlcmVuY2VfdHlwZShfX25l
d19zaXplKSwgZW5kKCkpOwogICAgZWxzZQogICAgICBpbnNlcnQoZW5kKCksIF9fbmV3X3NpemUg
LSBzaXplKCksIF9feCk7CiAgfQogIHZvaWQgY2xlYXIoKSB7IGVyYXNlKGJlZ2luKCksIGVuZCgp
KTsgfQp9OwoKCgp0eXBlZGVmIHZlY3Rvcjxib29sLCBhbGxvYz4gYml0X3ZlY3RvcjsKCiMgODIy
ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8u
Li8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9idmVjdG9yLmgiIDMKCgoKCgoKCgoKCiAgCgoKCiAK
IAogCiMgMzUgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45
NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvdmVjdG9yIiAyIDMKCgoKCiAKIAogCiMgMTcg
Ii4uL1NyY1NoYXJlZC9FbVBhbG1IZWFwLmgiIDIKCgpjbGFzcyBTZXNzaW9uRmlsZTsKCmNsYXNz
IEVtUGFsbUNodW5rOwpjbGFzcyBFbVBhbG1NUFQ7CmNsYXNzIEVtUGFsbUhlYXA7Cgp0eXBlZGVm
IHZlY3RvcjxFbVBhbG1DaHVuaz4JCUVtUGFsbUNodW5rTGlzdDsKdHlwZWRlZiB2ZWN0b3I8RW1Q
YWxtTVBUPgkJRW1QYWxtTVBUTGlzdDsKdHlwZWRlZiB2ZWN0b3I8RW1QYWxtSGVhcD4JCUVtUGFs
bUhlYXBMaXN0OwoKY2xhc3MgRW1TdHJlYW07CkVtU3RyZWFtJiBvcGVyYXRvciA8PCAoRW1TdHJl
YW0mLCBjb25zdCBFbVBhbG1DaHVuayYpOwpFbVN0cmVhbSYgb3BlcmF0b3IgPj4gKEVtU3RyZWFt
JiwgRW1QYWxtQ2h1bmsmKTsKCkVtU3RyZWFtJiBvcGVyYXRvciA8PCAoRW1TdHJlYW0mLCBjb25z
dCBFbVBhbG1NUFQmKTsKRW1TdHJlYW0mIG9wZXJhdG9yID4+IChFbVN0cmVhbSYsIEVtUGFsbU1Q
VCYpOwoKRW1TdHJlYW0mIG9wZXJhdG9yIDw8IChFbVN0cmVhbSYsIGNvbnN0IEVtUGFsbUhlYXAm
KTsKRW1TdHJlYW0mIG9wZXJhdG9yID4+IChFbVN0cmVhbSYsIEVtUGFsbUhlYXAmKTsKCgpjbGFz
cyBFbVBhbG1IZWFwCnsKIAoKCXB1YmxpYzoKCgkJc3RhdGljIHZvaWQJCQkJSW5pdGlhbGl6ZQkJ
CQkodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJUmVzZXQJCQkJCSh2b2lkKTsKCQlzdGF0aWMgdm9p
ZAkJCQlTYXZlCQkJCQkoU2Vzc2lvbkZpbGUmKTsKCQlzdGF0aWMgdm9pZAkJCQlMb2FkCQkJCQko
U2Vzc2lvbkZpbGUmKTsKCQlzdGF0aWMgdm9pZAkJCQlEaXNwb3NlCQkJCQkodm9pZCk7CgoJCXN0
YXRpYyBFbVBhbG1IZWFwTGlzdDo6Y29uc3RfaXRlcmF0b3IKCQkJCQkJCQlHZXRIZWFwTGlzdEJl
Z2luCQkodm9pZCk7CgkJc3RhdGljIEVtUGFsbUhlYXBMaXN0Ojpjb25zdF9pdGVyYXRvcgoJCQkJ
CQkJCUdldEhlYXBMaXN0RW5kCQkJKHZvaWQpOwoKCQlzdGF0aWMgY29uc3QgRW1QYWxtSGVhcCoK
CQkJCQkJCQlHZXRIZWFwQnlJRAkJCQkoVUludDE2KTsKCQlzdGF0aWMgY29uc3QgRW1QYWxtSGVh
cCoKCQkJCQkJCQlHZXRIZWFwQnlQdHIJCQkoZW11cHRyKTsKCQlzdGF0aWMgY29uc3QgRW1QYWxt
SGVhcCoKCQkJCQkJCQlHZXRIZWFwQnlQdHIJCQkoTWVtUHRyKTsKCQlzdGF0aWMgY29uc3QgRW1Q
YWxtSGVhcCoKCQkJCQkJCQlHZXRIZWFwQnlIZGwJCQkoTWVtSGFuZGxlKTsKCgkJc3RhdGljIHZv
aWQJCQkJTWVtSW5pdEhlYXBUYWJsZQkJKFVJbnQxNiBjYXJkTm8pOwoJCXN0YXRpYyB2b2lkCQkJ
CU1lbUhlYXBJbml0CQkJCShVSW50MTYgaGVhcElELAoJCQkJCQkJCQkJCQkJCSBJbnQxNiBudW1I
YW5kbGVzLAoJCQkJCQkJCQkJCQkJCSBCb29sZWFuIGluaXRDb250ZW50cyk7CgkJc3RhdGljIHZv
aWQJCQkJTWVtSGVhcENvbXBhY3QJCQkoVUludDE2IGhlYXBJRCwKCQkJCQkJCQkJCQkJCQkgRW1Q
YWxtQ2h1bmtMaXN0KiA9IF9fbnVsbCApOwoJCXN0YXRpYyB2b2lkCQkJCU1lbUhlYXBGcmVlQnlP
d25lcklECShVSW50MTYgaGVhcElELAoJCQkJCQkJCQkJCQkJCSBVSW50MTYgb3duZXJJRCwKCQkJ
CQkJCQkJCQkJCQkgRW1QYWxtQ2h1bmtMaXN0KiA9IF9fbnVsbCApOwoJCXN0YXRpYyB2b2lkCQkJ
CU1lbUhlYXBTY3JhbWJsZQkJCShVSW50MTYgaGVhcElELAoJCQkJCQkJCQkJCQkJCSBFbVBhbG1D
aHVua0xpc3QqID0gX19udWxsICk7CgoJCXN0YXRpYyB2b2lkCQkJCU1lbUNodW5rTmV3CQkJCShV
SW50MTYgaGVhcElELAoJCQkJCQkJCQkJCQkJCSBNZW1QdHIsCgkJCQkJCQkJCQkJCQkJIFVJbnQx
NiBhdHRyaWJ1dGVzLAoJCQkJCQkJCQkJCQkJCSBFbVBhbG1DaHVua0xpc3QqID0gX19udWxsICk7
CgkJc3RhdGljIHZvaWQJCQkJTWVtQ2h1bmtGcmVlCQkJKEVtUGFsbUhlYXAqIGhlYXAsCgkJCQkJ
CQkJCQkJCQkJIEVtUGFsbUNodW5rTGlzdCogPSBfX251bGwgKTsKCgkJc3RhdGljIHZvaWQJCQkJ
TWVtUHRyTmV3CQkJCShNZW1QdHIsCgkJCQkJCQkJCQkJCQkJIEVtUGFsbUNodW5rTGlzdCogPSBf
X251bGwgKTsKCQlzdGF0aWMgdm9pZAkJCQlNZW1QdHJSZXNpemUJCQkoTWVtUHRyLAoJCQkJCQkJ
CQkJCQkJCSBFbVBhbG1DaHVua0xpc3QqID0gX19udWxsICk7CgoJCXN0YXRpYyB2b2lkCQkJCU1l
bUhhbmRsZU5ldwkJCShNZW1IYW5kbGUsCgkJCQkJCQkJCQkJCQkJIEVtUGFsbUNodW5rTGlzdCog
PSBfX251bGwgKTsKCQlzdGF0aWMgdm9pZAkJCQlNZW1IYW5kbGVSZXNpemUJCQkoTWVtSGFuZGxl
LAoJCQkJCQkJCQkJCQkJCSBFbVBhbG1DaHVua0xpc3QqID0gX19udWxsICk7CgkJc3RhdGljIHZv
aWQJCQkJTWVtSGFuZGxlRnJlZQkJCShFbVBhbG1IZWFwKiBoZWFwLAoJCQkJCQkJCQkJCQkJCSBF
bVBhbG1DaHVua0xpc3QqID0gX19udWxsICk7CgoJCXN0YXRpYyB2b2lkCQkJCU1lbUxvY2FsSURU
b0xvY2tlZFB0cgkoTWVtUHRyLAoJCQkJCQkJCQkJCQkJCSBFbVBhbG1DaHVua0xpc3QqID0gX19u
dWxsICk7CgkJc3RhdGljIHZvaWQJCQkJTWVtSGFuZGxlTG9jawkJCShNZW1IYW5kbGUsCgkJCQkJ
CQkJCQkJCQkJIEVtUGFsbUNodW5rTGlzdCogPSBfX251bGwgKTsKCQlzdGF0aWMgdm9pZAkJCQlN
ZW1IYW5kbGVVbmxvY2sJCQkoTWVtSGFuZGxlLAoJCQkJCQkJCQkJCQkJCSBFbVBhbG1DaHVua0xp
c3QqID0gX19udWxsICk7CgkJc3RhdGljIHZvaWQJCQkJTWVtSGFuZGxlUmVzZXRMb2NrCQkoTWVt
SGFuZGxlLAoJCQkJCQkJCQkJCQkJCSBFbVBhbG1DaHVua0xpc3QqID0gX19udWxsICk7CgkJc3Rh
dGljIHZvaWQJCQkJTWVtUHRyUmVzZXRMb2NrCQkJKE1lbVB0ciwKCQkJCQkJCQkJCQkJCQkgRW1Q
YWxtQ2h1bmtMaXN0KiA9IF9fbnVsbCApOwoJCXN0YXRpYyB2b2lkCQkJCU1lbVB0clVubG9jawkJ
CShNZW1QdHIsCgkJCQkJCQkJCQkJCQkJIEVtUGFsbUNodW5rTGlzdCogPSBfX251bGwgKTsKCQlz
dGF0aWMgdm9pZAkJCQlNZW1QdHJTZXRPd25lcgkJCShNZW1QdHIsCgkJCQkJCQkJCQkJCQkJIEVt
UGFsbUNodW5rTGlzdCogPSBfX251bGwgKTsKCgkJc3RhdGljIHZvaWQJCQkJVmFsaWRhdGVBbGxI
ZWFwcwkJKHZvaWQpOwoKCQlzdGF0aWMgTWVtUHRyCQkJRGVyZWZIYW5kbGUJCQkJKE1lbUhhbmRs
ZSBoKTsKCQlzdGF0aWMgTWVtSGFuZGxlCQlSZWNvdmVySGFuZGxlCQkJKE1lbVB0ciBwKTsKCglw
cml2YXRlOgoJCXN0YXRpYyB2b2lkCQkJCUFkZEhlYXAJCQkJCShVSW50MTYgaGVhcElEKTsKCQlz
dGF0aWMgbG9uZwkJCQlHZXRIZWFwVmVyc2lvbgkJCShlbXVwdHIJaGVhcEhkcik7CgoJcHJpdmF0
ZToKCQoJCXN0YXRpYyBFbVBhbG1IZWFwTGlzdAlmZ0hlYXBMaXN0OwoKCiAKCglwdWJsaWM6CgoJ
CQkJCQkJCUVtUGFsbUhlYXAJCQkJKHZvaWQpOwoJCQkJCQkJCUVtUGFsbUhlYXAJCQkJKFVJbnQx
NiBoZWFwSUQpOwoJCQkJCQkJCUVtUGFsbUhlYXAJCQkJKGVtdXB0ciBoZWFwSGRyKTsKCQkJCQkJ
CQlFbVBhbG1IZWFwCQkJCShjb25zdCBFbVBhbG1IZWFwJik7CgkJCQkJCQkJfkVtUGFsbUhlYXAJ
CQkJKHZvaWQpOwoKCQlFbVBhbG1DaHVua0xpc3Q6OmNvbnN0X2l0ZXJhdG9yCgkJCQkJCQkJR2V0
Q2h1bmtMaXN0QmVnaW4JCSh2b2lkKSBjb25zdDsKCQlFbVBhbG1DaHVua0xpc3Q6OmNvbnN0X2l0
ZXJhdG9yCgkJCQkJCQkJR2V0Q2h1bmtMaXN0RW5kCQkJKHZvaWQpIGNvbnN0OwoKCQljb25zdCBF
bVBhbG1DaHVuayoJCUdldENodW5rUmVmZXJlbmNlZEJ5CShNZW1IYW5kbGUpIGNvbnN0OwoJCWNv
bnN0IEVtUGFsbUNodW5rKgkJR2V0Q2h1bmtDb250YWluaW5nCQkoZW11cHRyKSBjb25zdDsKCQlj
b25zdCBFbVBhbG1DaHVuayoJCUdldENodW5rQm9keUNvbnRhaW5pbmcJKGVtdXB0cikgY29uc3Q7
CgoJCUVtUGFsbU1QVExpc3Q6OmNvbnN0X2l0ZXJhdG9yCgkJCQkJCQkJR2V0TVBUTGlzdEJlZ2lu
CQkJKHZvaWQpIGNvbnN0OwoJCUVtUGFsbU1QVExpc3Q6OmNvbnN0X2l0ZXJhdG9yCgkJCQkJCQkJ
R2V0TVBUTGlzdEVuZAkJCSh2b2lkKSBjb25zdDsKCgkJQm9vbAkJCQkJVHJhY2tlZAkJCQkJKHZv
aWQpIGNvbnN0OwoJCUJvb2wJCQkJCVJlYWRPbmx5CQkJCSh2b2lkKSBjb25zdDsKCQlCb29sCQkJ
CQlEeW5hbWljCQkJCQkodm9pZCkgY29uc3Q7CgoJCWVtdXB0cgkJCQkJU3RhcnQJCQkJCSh2b2lk
KSBjb25zdAkJeyByZXR1cm4gZkhlYXBIZHJTdGFydDsgfQoJCWVtdXB0cgkJCQkJRW5kCQkJCQkJ
KHZvaWQpIGNvbnN0CQl7IHJldHVybiBmSGVhcEhkclN0YXJ0ICsgZlNpemU7IH0KCQl1aW50MzIJ
CQkJCVNpemUJCQkJCSh2b2lkKSBjb25zdAkJeyByZXR1cm4gRW5kICgpIC0gU3RhcnQgKCk7IH0K
CQlCb29sCQkJCQlDb250YWlucwkJCQkoZW11cHRyIHApIGNvbnN0CXsgcmV0dXJuICgocCA+PSBT
dGFydCAoKSkgJiYgKHAgPCBFbmQgKCkpKTsgfQoKCQllbXVwdHIJCQkJCUhlYWRlclN0YXJ0CQkJ
CSh2b2lkKSBjb25zdAkJeyByZXR1cm4gZkhlYXBIZHJTdGFydDsgfQoJCWVtdXB0cgkJCQkJSGVh
ZGVyRW5kCQkJCSh2b2lkKSBjb25zdAkJeyByZXR1cm4gZkhlYXBIZHJTdGFydCArIGZIZWFwSGRy
U2l6ZTsgfQoJCXVpbnQzMgkJCQkJSGVhZGVyU2l6ZQkJCQkodm9pZCkgY29uc3QJCXsgcmV0dXJu
IEhlYWRlckVuZCAoKSAtIEhlYWRlclN0YXJ0ICgpOyB9CgkJQm9vbAkJCQkJSGVhZGVyQ29udGFp
bnMJCQkoZW11cHRyIHApIGNvbnN0CXsgcmV0dXJuICgocCA+PSBIZWFkZXJTdGFydCAoKSkgJiYg
KHAgPCBIZWFkZXJFbmQgKCkpKTsgfQoKCQllbXVwdHIJCQkJCU1wdFN0YXJ0CQkJCSh2b2lkKSBj
b25zdAkJeyByZXR1cm4gZkhlYXBIZHJTdGFydCArIGZIZWFwSGRyU2l6ZTsgfQoJCWVtdXB0cgkJ
CQkJTXB0RW5kCQkJCQkodm9pZCkgY29uc3QJCXsgcmV0dXJuIGZGaXJzdENodW5rOyB9CgkJdWlu
dDMyCQkJCQlNcHRTaXplCQkJCQkodm9pZCkgY29uc3QJCXsgcmV0dXJuIE1wdEVuZCAoKSAtIE1w
dFN0YXJ0ICgpOyB9CgkJQm9vbAkJCQkJTXB0Q29udGFpbnMJCQkJKGVtdXB0ciBwKSBjb25zdAl7
IHJldHVybiAoKHAgPj0gTXB0U3RhcnQgKCkpICYmIChwIDwgTXB0RW5kICgpKSk7IH0KCgkJZW11
cHRyCQkJCQlEYXRhU3RhcnQJCQkJKHZvaWQpIGNvbnN0CQl7IHJldHVybiBmRmlyc3RDaHVuazsg
fQoJCWVtdXB0cgkJCQkJRGF0YUVuZAkJCQkJKHZvaWQpIGNvbnN0CQl7IHJldHVybiBmSGVhcEhk
clN0YXJ0ICsgZlNpemU7IH0KCQl1aW50MzIJCQkJCURhdGFTaXplCQkJCSh2b2lkKSBjb25zdAkJ
eyByZXR1cm4gRGF0YUVuZCAoKSAtIERhdGFTdGFydCAoKTsgfQoJCUJvb2wJCQkJCURhdGFDb250
YWlucwkJCShlbXVwdHIgcCkgY29uc3QJeyByZXR1cm4gKChwID49IERhdGFTdGFydCAoKSkgJiYg
KHAgPCBEYXRhRW5kICgpKSk7IH0KCgkJZW51bQoJCXsKCQkJa1ZlcnNpb25Vbmtub3duLAoJCQlr
VmVyc2lvbjEsCSAKCQkJa1ZlcnNpb24yLAkgCgkJCWtWZXJzaW9uMywJIAoJCQlrVmVyc2lvbjQJ
IAoJCX07CgoJCWxvbmcJCQkJCVZlcnNpb24JCQkJCSh2b2lkKSBjb25zdAkJeyByZXR1cm4gZlZl
cnNpb247IH0KCQlsb25nCQkJCQlIZWFwSUQJCQkJCSh2b2lkKSBjb25zdAkJeyByZXR1cm4gZkhl
YXBJRDsgfQoJCWxvbmcJCQkJCUNodW5rSGVhZGVyU2l6ZQkJCSh2b2lkKSBjb25zdAkJeyByZXR1
cm4gZkNodW5rSGRyU2l6ZTsgfQoKCQl2b2lkCQkJCQlWYWxpZGF0ZQkJCQkodm9pZCk7CgoJcHJp
dmF0ZToKCgkJdm9pZAkJCQkJR2V0SGVhcEhlYWRlckluZm8JCShVSW50MTYJaGVhcElEKTsKCQl2
b2lkCQkJCQlHZXRIZWFwSGVhZGVySW5mbwkJKGVtdXB0cgloZWFwSGRyKTsKCgkJdm9pZAkJCQkJ
UmVzeW5jQWxsCQkJCShFbVBhbG1DaHVua0xpc3QqIGRlbHRhKTsKCQl2b2lkCQkJCQlSZXN5bmNN
UFRMaXN0CQkJKHZvaWQpOwoJCXZvaWQJCQkJCVJlc3luY0NodW5rTGlzdAkJCShFbVBhbG1DaHVu
a0xpc3QqIGRlbHRhKTsKCQl2b2lkCQkJCQlSZXN5bmNQdHIJCQkJKE1lbVB0ciwKCQkJCQkJCQkJ
CQkJCQkgRW1QYWxtQ2h1bmtMaXN0KiBkZWx0YSk7CgkJdm9pZAkJCQkJUmVzeW5jSGRsCQkJCShN
ZW1IYW5kbGUsCgkJCQkJCQkJCQkJCQkJIEVtUGFsbUNodW5rTGlzdCogZGVsdGEpOwoKCQl2b2lk
CQkJCQlHZW5lcmF0ZURlbHRhcwkJCShjb25zdCBFbVBhbG1DaHVua0xpc3QmIG9sZExpc3QsCgkJ
CQkJCQkJCQkJCQkJIGNvbnN0IEVtUGFsbUNodW5rTGlzdCYgbmV3TGlzdCwKCQkJCQkJCQkJCQkJ
CQkgRW1QYWxtQ2h1bmtMaXN0JiBkZWx0YSk7CgoKCXByaXZhdGU6CgkJZnJpZW5kIEVtU3RyZWFt
JiBvcGVyYXRvciA8PCAoRW1TdHJlYW0mLCBjb25zdCBFbVBhbG1IZWFwJik7CgkJZnJpZW5kIEVt
U3RyZWFtJiBvcGVyYXRvciA+PiAoRW1TdHJlYW0mLCBFbVBhbG1IZWFwJik7CgoJCWxvbmcJCQkJ
CWZWZXJzaW9uOwoJCWxvbmcJCQkJCWZIZWFwSUQ7CgoJCWVtdXB0cgkJCQkJZkhlYXBIZHJTdGFy
dDsKCQl1aW50MzIJCQkJCWZIZWFwSGRyU2l6ZTsJCSAKCQllbXVwdHIJCQkJCWZGaXJzdENodW5r
OwkJIAoKCQlVSW50MTYJCQkJCWZGbGFnczsKCQlVSW50MzIJCQkJCWZTaXplOwoJCVVJbnQzMgkJ
CQkJZkZpcnN0RnJlZTsKCQlVSW50MTYJCQkJCWZDaHVua0hkclNpemU7CgoJCUVtUGFsbUNodW5r
TGlzdAkJCWZDaHVua0xpc3Q7CgkJRW1QYWxtTVBUTGlzdAkJCWZNUFRMaXN0Owp9OwoKCiAKCgoK
CgoKCgoKCgoKCgoKCgpjbGFzcyBFbVBhbG1NUFQKewoJcHVibGljOgoJCQkJCQkJCUVtUGFsbU1Q
VAkJCQkodm9pZCk7CgkJCQkJCQkJRW1QYWxtTVBUCQkJCShjb25zdCBFbVBhbG1IZWFwJiwKCQkJ
CQkJCQkJCQkJCQkgZW11cHRyIG1wdEhkcik7CgkJCQkJCQkJRW1QYWxtTVBUCQkJCShjb25zdCBF
bVBhbG1NUFQmKTsKCQkJCQkJCQl+RW1QYWxtTVBUCQkJCSh2b2lkKTsKCgkJdm9pZAkJCQkJVmFs
aWRhdGUJCQkJKGNvbnN0IEVtUGFsbUhlYXAmIGhlYXApIGNvbnN0OwoKCQllbXVwdHIJCQkJCVN0
YXJ0CQkJCQkodm9pZCkgY29uc3QJCXsgcmV0dXJuIGZNcHRIZHJTdGFydDsgfQoJCWVtdXB0cgkJ
CQkJRW5kCQkJCQkJKHZvaWQpIGNvbnN0CQl7IHJldHVybiBmTXB0SGRyU3RhcnQgKyBmU2l6ZTsg
fQoJCXVpbnQzMgkJCQkJU2l6ZQkJCQkJKHZvaWQpIGNvbnN0CQl7IHJldHVybiBFbmQgKCkgLSBT
dGFydCAoKTsgfQoJCUJvb2wJCQkJCUNvbnRhaW5zCQkJCShlbXVwdHIgcCkgY29uc3QJeyByZXR1
cm4gKChwID49IFN0YXJ0ICgpKSAmJiAocCA8IEVuZCAoKSkpOyB9CgoJCWVtdXB0cgkJCQkJSGVh
ZGVyU3RhcnQJCQkJKHZvaWQpIGNvbnN0CQl7IHJldHVybiBmTXB0SGRyU3RhcnQ7IH0KCQllbXVw
dHIJCQkJCUhlYWRlckVuZAkJCQkodm9pZCkgY29uc3QJCXsgcmV0dXJuIGZNcHRIZHJTdGFydCAr
IGZNcHRIZHJTaXplOyB9CgkJdWludDMyCQkJCQlIZWFkZXJTaXplCQkJCSh2b2lkKSBjb25zdAkJ
eyByZXR1cm4gSGVhZGVyRW5kICgpIC0gSGVhZGVyU3RhcnQgKCk7IH0KCQlCb29sCQkJCQlIZWFk
ZXJDb250YWlucwkJCShlbXVwdHIgcCkgY29uc3QJeyByZXR1cm4gKChwID49IEhlYWRlclN0YXJ0
ICgpKSAmJiAocCA8IEhlYWRlckVuZCAoKSkpOyB9CgoJCWVtdXB0cgkJCQkJVGFibGVTdGFydAkJ
CQkodm9pZCkgY29uc3QJCXsgcmV0dXJuIGZNcHRIZHJTdGFydCArIGZNcHRIZHJTaXplOyB9CgkJ
ZW11cHRyCQkJCQlUYWJsZUVuZAkJCQkodm9pZCkgY29uc3QJCXsgcmV0dXJuIGZNcHRIZHJTdGFy
dCArIGZTaXplOyB9CgkJdWludDMyCQkJCQlUYWJsZVNpemUJCQkJKHZvaWQpIGNvbnN0CQl7IHJl
dHVybiBUYWJsZUVuZCAoKSAtIFRhYmxlU3RhcnQgKCk7IH0KCQlCb29sCQkJCQlUYWJsZUNvbnRh
aW5zCQkJKGVtdXB0ciBwKSBjb25zdAl7IHJldHVybiAoKHAgPj0gVGFibGVTdGFydCAoKSkgJiYg
KHAgPCBUYWJsZUVuZCAoKSkpOyB9CgoJCWVudW0KCQl7CgkJCWtWZXJzaW9uVW5rbm93biwKCQkJ
a1ZlcnNpb24xLAkgCgkJCWtWZXJzaW9uMgkgCgkJfTsKCgkJbG9uZwkJCQkJVmVyc2lvbgkJCQkJ
KHZvaWQpIGNvbnN0CQl7IHJldHVybiBmVmVyc2lvbjsgfQoJCVVJbnQzMgkJCQkJTmV4dFRhYmxl
T2Zmc2V0CQkJKHZvaWQpIGNvbnN0CQl7IHJldHVybiBmTmV4dFRibE9mZnNldDsgfQoKCXByaXZh
dGU6CgkJdm9pZAkJCQkJR2V0TVBUSW5mbwkJCQkoY29uc3QgRW1QYWxtSGVhcCYsCgkJCQkJCQkJ
CQkJCQkJIGVtdXB0ciBtcHRIZHIpOwoKCXByaXZhdGU6CgkJZnJpZW5kIEVtU3RyZWFtJiBvcGVy
YXRvciA8PCAoRW1TdHJlYW0mLCBjb25zdCBFbVBhbG1NUFQmKTsKCQlmcmllbmQgRW1TdHJlYW0m
IG9wZXJhdG9yID4+IChFbVN0cmVhbSYsIEVtUGFsbU1QVCYpOwoKCQlsb25nCQlmVmVyc2lvbjsK
CgkJZW11cHRyCQlmTXB0SGRyU3RhcnQ7CgkJdWludDMyCQlmTXB0SGRyU2l6ZTsJCQkgCgkJdWlu
dDMyCQlmU2l6ZTsJCQkJCSAKCgkJVUludDE2CQlmTnVtRW50cmllczsKCQlVSW50MzIJCWZOZXh0
VGJsT2Zmc2V0Owp9OwoKCmNsYXNzIEVtUGFsbUNodW5rCnsKCXB1YmxpYzoKCQkJCQkJCQlFbVBh
bG1DaHVuawkJCQkodm9pZCk7CgkJCQkJCQkJRW1QYWxtQ2h1bmsJCQkJKGNvbnN0IEVtUGFsbUhl
YXAmLAoJCQkJCQkJCQkJCQkJCSBlbXVwdHIgY2h1bmtIZHIpOwoJCQkJCQkJCUVtUGFsbUNodW5r
CQkJCShjb25zdCBFbVBhbG1DaHVuayYpOwoJCQkJCQkJCX5FbVBhbG1DaHVuawkJCSh2b2lkKTsK
CgkJdm9pZAkJCQkJVmFsaWRhdGUJCQkJKGNvbnN0IEVtUGFsbUhlYXAmIGhlYXApIGNvbnN0OwoJ
CUJvb2wJCQkJCUNvbXBhcmVGb3JEZWx0YQkJCShjb25zdCBFbVBhbG1DaHVuayYgbGhzKSBjb25z
dDsKCgkJZW11cHRyCQkJCQlTdGFydAkJCQkJKHZvaWQpIGNvbnN0CQl7IHJldHVybiBmQ2h1bmtI
ZHJTdGFydDsgfQoJCWVtdXB0cgkJCQkJRW5kCQkJCQkJKHZvaWQpIGNvbnN0CQl7IHJldHVybiBm
Q2h1bmtIZHJTdGFydCArIGZTaXplOyB9CgkJdWludDMyCQkJCQlTaXplCQkJCQkodm9pZCkgY29u
c3QJCXsgcmV0dXJuIEVuZCAoKSAtIFN0YXJ0ICgpOyB9CgkJQm9vbAkJCQkJQ29udGFpbnMJCQkJ
KGVtdXB0ciBwKSBjb25zdAl7IHJldHVybiAoKHAgPj0gU3RhcnQgKCkpICYmIChwIDwgRW5kICgp
KSk7IH0KCgkJZW11cHRyCQkJCQlIZWFkZXJTdGFydAkJCQkodm9pZCkgY29uc3QJCXsgcmV0dXJu
IGZDaHVua0hkclN0YXJ0OyB9CgkJZW11cHRyCQkJCQlIZWFkZXJFbmQJCQkJKHZvaWQpIGNvbnN0
CQl7IHJldHVybiBmQ2h1bmtIZHJTdGFydCArIGZDaHVua0hkclNpemU7IH0KCQl1aW50MzIJCQkJ
CUhlYWRlclNpemUJCQkJKHZvaWQpIGNvbnN0CQl7IHJldHVybiBIZWFkZXJFbmQgKCkgLSBIZWFk
ZXJTdGFydCAoKTsgfQoJCUJvb2wJCQkJCUhlYWRlckNvbnRhaW5zCQkJKGVtdXB0ciBwKSBjb25z
dAl7IHJldHVybiAoKHAgPj0gSGVhZGVyU3RhcnQgKCkpICYmIChwIDwgSGVhZGVyRW5kICgpKSk7
IH0KCgkJZW11cHRyCQkJCQlCb2R5U3RhcnQJCQkJKHZvaWQpIGNvbnN0CQl7IHJldHVybiBmQ2h1
bmtIZHJTdGFydCArIGZDaHVua0hkclNpemU7IH0KCQllbXVwdHIJCQkJCUJvZHlFbmQJCQkJCSh2
b2lkKSBjb25zdAkJeyByZXR1cm4gZkNodW5rSGRyU3RhcnQgKyBmU2l6ZSAtIGZTaXplQWRqOyB9
CgkJdWludDMyCQkJCQlCb2R5U2l6ZQkJCQkodm9pZCkgY29uc3QJCXsgcmV0dXJuIEJvZHlFbmQg
KCkgLSBCb2R5U3RhcnQgKCk7IH0KCQlCb29sCQkJCQlCb2R5Q29udGFpbnMJCQkoZW11cHRyIHAp
IGNvbnN0CXsgcmV0dXJuICgocCA+PSBCb2R5U3RhcnQgKCkpICYmIChwIDwgQm9keUVuZCAoKSkp
OyB9CgoJCWVtdXB0cgkJCQkJVHJhaWxlclN0YXJ0CQkJKHZvaWQpIGNvbnN0CQl7IHJldHVybiBm
Q2h1bmtIZHJTdGFydCArIGZTaXplIC0gZlNpemVBZGo7IH0KCQllbXVwdHIJCQkJCVRyYWlsZXJF
bmQJCQkJKHZvaWQpIGNvbnN0CQl7IHJldHVybiBmQ2h1bmtIZHJTdGFydCArIGZTaXplOyB9CgkJ
dWludDMyCQkJCQlUcmFpbGVyU2l6ZQkJCQkodm9pZCkgY29uc3QJCXsgcmV0dXJuIFRyYWlsZXJF
bmQgKCkgLSBUcmFpbGVyU3RhcnQgKCk7IH0KCQlCb29sCQkJCQlUcmFpbGVyQ29udGFpbnMJCQko
ZW11cHRyIHApIGNvbnN0CXsgcmV0dXJuICgocCA+PSBUcmFpbGVyU3RhcnQgKCkpICYmIChwIDwg
VHJhaWxlckVuZCAoKSkpOyB9CgoJCWVudW0KCQl7CgkJCWtWZXJzaW9uVW5rbm93biwKCQkJa1Zl
cnNpb24xLAkgCgkJCWtWZXJzaW9uMgkgCgkJfTsKCgkJbG9uZwkJCQkJVmVyc2lvbgkJCQkJKHZv
aWQpIGNvbnN0CQl7IHJldHVybiBmVmVyc2lvbjsgfQoJCUJvb2wJCQkJCUZyZWUJCQkJCSh2b2lk
KSBjb25zdAkJeyByZXR1cm4gZkZyZWU7IH0KCQl1aW50OAkJCQkJTG9ja0NvdW50CQkJCSh2b2lk
KSBjb25zdAkJeyByZXR1cm4gZkxvY2tDb3VudDsgfQoJCXVpbnQ4CQkJCQlPd25lcgkJCQkJKHZv
aWQpIGNvbnN0CQl7IHJldHVybiBmT3duZXI7IH0KCQlpbnQzMgkJCQkJSE9mZnNldAkJCQkJKHZv
aWQpIGNvbnN0CQl7IHJldHVybiBmSE9mZnNldDsgfQoKCXByaXZhdGU6CgkJdm9pZAkJCQkJR2V0
Q2h1bmtJbmZvCQkJKGNvbnN0IEVtUGFsbUhlYXAmLAoJCQkJCQkJCQkJCQkJCSBlbXVwdHIgY2h1
bmtIZHIpOwoKCXByaXZhdGU6CgkJZnJpZW5kIEVtU3RyZWFtJiBvcGVyYXRvciA8PCAoRW1TdHJl
YW0mLCBjb25zdCBFbVBhbG1DaHVuayYpOwoJCWZyaWVuZCBFbVN0cmVhbSYgb3BlcmF0b3IgPj4g
KEVtU3RyZWFtJiwgRW1QYWxtQ2h1bmsmKTsKCgkJbG9uZwkJZlZlcnNpb247CgoJCWVtdXB0cgkJ
ZkNodW5rSGRyU3RhcnQ7CgkJdWludDMyCQlmQ2h1bmtIZHJTaXplOwoKCQlib29sCQlmRnJlZTsJ
CQkJIAoJCWJvb2wJCWZNb3ZlZDsJCQkJIAoJCWJvb2wJCWZVbnVzZWQyOwkJCSAKCQlib29sCQlm
VW51c2VkMzsJCQkgCgkJdWludDgJCWZTaXplQWRqOwkJCSAKCQl1aW50MzIJCWZTaXplOwkJCQkg
CgoJCXVpbnQ4CQlmTG9ja0NvdW50OwkJCSAKCQl1aW50OAkJZk93bmVyOwkJCQkgCgkJaW50MzIJ
CWZIT2Zmc2V0OwkJCSAKCQkJCQkJCQkJCSAKCn07CgoKIyAxOCAiLi4vU3JjU2hhcmVkL01ldGFN
ZW1vcnkuaCIgMgoKIyAxICIuLi9TcmNTaGFyZWQvRXJyb3JIYW5kbGluZy5oIiAxCiAKIAoKCgoK
CgoKCgoKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy
LjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RyaW5nIiAxIDMKIAoKCgoKIyAx
ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8u
Li8uLi8uLi9pbmNsdWRlL2crKy0zL3N0ZC9iYXN0cmluZy5oIiAxIDMKIAogCgogCiAKIAogCiAK
CiAKIAogCiAKCiAKIAogCgogCiAKIAogCiAKCiAKIAoKCgoKCiNwcmFnbWEgaW50ZXJmYWNlCgoK
IyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8u
Li8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2NzdGRkZWYiIDEgMwogCiAKCgoKIyAxICIvdXNyL2xv
Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMgNAojIDM0MiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJp
czIuOC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CgojIDYgIi91c3IvbG9jYWwvbGliL2dj
Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysr
LTMvY3N0ZGRlZiIgMiAzCgoKIyAzNSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t
c29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGQvYmFzdHJpbmcu
aCIgMiAzCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgv
Mi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RkL3N0cmFpdHMuaCIgMSAzCiAKIAoK
IAogCiAKIAogCgogCiAKIAogCgogCiAKIAoKIAogCiAKIAogCgogCiAKCgoKCgogCiNwcmFnbWEg
aW50ZXJmYWNlICJzdGQvc3RyYWl0cy5oIgoKCgoKZXh0ZXJuICJDKysiIHsKdGVtcGxhdGUgPGNs
YXNzIGNoYXJUPgpzdHJ1Y3Qgc3RyaW5nX2NoYXJfdHJhaXRzIHsKICB0eXBlZGVmIGNoYXJUIGNo
YXJfdHlwZTsgIAoKICAgCgogIHN0YXRpYyB2b2lkIGFzc2lnbiAoY2hhcl90eXBlJiBjMSwgY29u
c3QgY2hhcl90eXBlJiBjMikKICAgIHsgYzEgPSBjMjsgfQogIHN0YXRpYyBib29sIGVxIChjb25z
dCBjaGFyX3R5cGUmIGMxLCBjb25zdCBjaGFyX3R5cGUmIGMyKQogICAgeyByZXR1cm4gKGMxID09
IGMyKTsgfQogIHN0YXRpYyBib29sIG5lIChjb25zdCBjaGFyX3R5cGUmIGMxLCBjb25zdCBjaGFy
X3R5cGUmIGMyKQogICAgeyByZXR1cm4gIShjMSA9PSBjMik7IH0KICBzdGF0aWMgYm9vbCBsdCAo
Y29uc3QgY2hhcl90eXBlJiBjMSwgY29uc3QgY2hhcl90eXBlJiBjMikKICAgIHsgcmV0dXJuIChj
MSA8IGMyKTsgfQogIHN0YXRpYyBjaGFyX3R5cGUgZW9zICgpIHsgcmV0dXJuIGNoYXJfdHlwZSgp
OyB9ICAKICBzdGF0aWMgYm9vbCBpc19kZWwoY2hhcl90eXBlIGEpIHsgcmV0dXJuIDA7IH0KICAg
CiAgCiAgIAoKICBzdGF0aWMgaW50IGNvbXBhcmUgKGNvbnN0IGNoYXJfdHlwZSogczEsIGNvbnN0
IGNoYXJfdHlwZSogczIsIHNpemVfdCBuKQogICAgewogICAgICBzaXplX3QgaTsKICAgICAgZm9y
IChpID0gMDsgaSA8IG47ICsraSkKCWlmIChuZSAoczFbaV0sIHMyW2ldKSkKCSAgcmV0dXJuIGx0
IChzMVtpXSwgczJbaV0pID8gLTEgOiAxOwoKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICAKICBz
dGF0aWMgc2l6ZV90IGxlbmd0aCAoY29uc3QgY2hhcl90eXBlKiBzKQogICAgewogICAgICBzaXpl
X3QgbCA9IDA7CiAgICAgIHdoaWxlIChuZSAoKnMrKywgZW9zICgpKSkKCSsrbDsKICAgICAgcmV0
dXJuIGw7CiAgICB9CgogIHN0YXRpYyBjaGFyX3R5cGUqIGNvcHkgKGNoYXJfdHlwZSogczEsIGNv
bnN0IGNoYXJfdHlwZSogczIsIHNpemVfdCBuKQogICAgewogICAgICBmb3IgKDsgbi0tOyApCglh
c3NpZ24gKHMxW25dLCBzMltuXSk7CiAgICAgIHJldHVybiBzMTsKICAgIH0KCiAgc3RhdGljIGNo
YXJfdHlwZSogbW92ZSAoY2hhcl90eXBlKiBzMSwgY29uc3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90
IG4pCiAgICB7CiAgICAgIGNoYXJfdHlwZSBhW25dOwogICAgICBzaXplX3QgaTsKICAgICAgZm9y
IChpID0gMDsgaSA8IG47ICsraSkKCWFzc2lnbiAoYVtpXSwgczJbaV0pOwogICAgICBmb3IgKGkg
PSAwOyBpIDwgbjsgKytpKQoJYXNzaWduIChzMVtpXSwgYVtpXSk7CiAgICAgIHJldHVybiBzMTsK
ICAgIH0KCiAgc3RhdGljIGNoYXJfdHlwZSogc2V0IChjaGFyX3R5cGUqIHMxLCBjb25zdCBjaGFy
X3R5cGUmIGMsIHNpemVfdCBuKQogICAgewogICAgICBmb3IgKDsgbi0tOyApCglhc3NpZ24gKHMx
W25dLCBjKTsKICAgICAgcmV0dXJuIHMxOwogICAgfQp9OwoKY2xhc3MgaXN0cmVhbTsKY2xhc3Mg
b3N0cmVhbTsKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44
LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2NjdHlwZSIgMSAzCiAKIAoKCgojIDEg
Ii91c3IvaW5jbHVkZS9jdHlwZS5oIiAxIDMgNAogCiAKCiAKIAogCgogCgoKCgoKCgojcHJhZ21h
IGlkZW50CSJAKCMpY3R5cGUuaAkxLjMzCTk5LzA4LzEwIFNNSSIJCgojIDEgIi91c3IvaW5jbHVk
ZS9pc28vY3R5cGVfaXNvLmgiIDEgMyA0CiAKIAoKIAogCiAKCiAKCgoKCiAKCgoKCgoKCgoKCgoK
CgojcHJhZ21hIGlkZW50CSJAKCMpY3R5cGVfaXNvLmgJMS4xCTk5LzA4LzA5IFNNSSIgCgoKCgpl
eHRlcm4gIkMiIHsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gaW50IGlzYWxu
dW0oaW50KTsKZXh0ZXJuIGludCBpc2FscGhhKGludCk7CmV4dGVybiBpbnQgaXNjbnRybChpbnQp
OwpleHRlcm4gaW50IGlzZGlnaXQoaW50KTsKZXh0ZXJuIGludCBpc2dyYXBoKGludCk7CmV4dGVy
biBpbnQgaXNsb3dlcihpbnQpOwpleHRlcm4gaW50IGlzcHJpbnQoaW50KTsKZXh0ZXJuIGludCBp
c3B1bmN0KGludCk7CmV4dGVybiBpbnQgaXNzcGFjZShpbnQpOwpleHRlcm4gaW50IGlzdXBwZXIo
aW50KTsKZXh0ZXJuIGludCBpc3hkaWdpdChpbnQpOwoKCgoKCgoKZXh0ZXJuIGludCB0b2xvd2Vy
KGludCk7CmV4dGVybiBpbnQgdG91cHBlcihpbnQpOwoKCgoKCmV4dGVybiB1bnNpZ25lZCBjaGFy
CV9fY3R5cGVbXTsKZXh0ZXJuIHVuc2lnbmVkIGludAkqX19jdHlwZV9tYXNrOwpleHRlcm4gaW50
CQkqX190cmFuc191cHBlcjsKZXh0ZXJuIGludAkJKl9fdHJhbnNfbG93ZXI7CgoKCiMgMTI5ICIv
dXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAzIDQKCgojIDE0NCAiL3Vzci9pbmNsdWRlL2lz
by9jdHlwZV9pc28uaCIgMyA0CgoKCgoKCgoKCgoKCgoKCgoKCgojIDE4MyAiL3Vzci9pbmNsdWRl
L2lzby9jdHlwZV9pc28uaCIgMyA0CgoKCn0KCgoKIyAxOCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgi
IDIgMyA0CgoKIAoKCgojIDM4ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0CgoKCmV4dGVybiAi
QyIgewoKCgoKCgoKZXh0ZXJuIGludCBpc2FzY2lpKGludCk7CmV4dGVybiBpbnQgdG9hc2NpaShp
bnQpOwpleHRlcm4gaW50IF90b2xvd2VyKGludCk7CmV4dGVybiBpbnQgX3RvdXBwZXIoaW50KTsK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDg3ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0CgoK
Cn0KCgoKIyA2ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIu
OTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2NjdHlwZSIgMiAzCgoKIyAxMDUgIi91c3Iv
bG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvc3RkL3N0cmFpdHMuaCIgMiAzCgojIDEgIi91c3IvbG9jYWwvbGliL2dj
Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysr
LTMvY3N0cmluZyIgMSAzCiAKIAoKCgoKCgojIDk0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3Nw
YXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2NzdHJp
bmciIDMKCgoKIyAxMDYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy
LjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RkL3N0cmFpdHMuaCIgMiAzCgoK
c3RydWN0IHN0cmluZ19jaGFyX3RyYWl0cyA8Y2hhcj4gewogIHR5cGVkZWYgY2hhciBjaGFyX3R5
cGU7CgogIHN0YXRpYyB2b2lkIGFzc2lnbiAoY2hhcl90eXBlJiBjMSwgY29uc3QgY2hhcl90eXBl
JiBjMikKICAgIHsgYzEgPSBjMjsgfQogIHN0YXRpYyBib29sIGVxIChjb25zdCBjaGFyX3R5cGUg
JiBjMSwgY29uc3QgY2hhcl90eXBlJiBjMikKICAgIHsgcmV0dXJuIChjMSA9PSBjMik7IH0KICBz
dGF0aWMgYm9vbCBuZSAoY29uc3QgY2hhcl90eXBlJiBjMSwgY29uc3QgY2hhcl90eXBlJiBjMikK
ICAgIHsgcmV0dXJuIChjMSAhPSBjMik7IH0KICBzdGF0aWMgYm9vbCBsdCAoY29uc3QgY2hhcl90
eXBlJiBjMSwgY29uc3QgY2hhcl90eXBlJiBjMikKICAgIHsgcmV0dXJuIChjMSA8IGMyKTsgfQog
IHN0YXRpYyBjaGFyX3R5cGUgZW9zICgpIHsgcmV0dXJuIDA7IH0KICBzdGF0aWMgYm9vbCBpc19k
ZWwoY2hhcl90eXBlIGEpIHsgcmV0dXJuICgoX19jdHlwZSArIDEpWyBhIF0gJiAweDAwMDAwMDA4
ICkgOyB9CgogIHN0YXRpYyBpbnQgY29tcGFyZSAoY29uc3QgY2hhcl90eXBlKiBzMSwgY29uc3Qg
Y2hhcl90eXBlKiBzMiwgc2l6ZV90IG4pCiAgICB7IHJldHVybiBtZW1jbXAgKHMxLCBzMiwgbik7
IH0KICBzdGF0aWMgc2l6ZV90IGxlbmd0aCAoY29uc3QgY2hhcl90eXBlKiBzKQogICAgeyByZXR1
cm4gc3RybGVuIChzKTsgfQogIHN0YXRpYyBjaGFyX3R5cGUqIGNvcHkgKGNoYXJfdHlwZSogczEs
IGNvbnN0IGNoYXJfdHlwZSogczIsIHNpemVfdCBuKQogICAgeyByZXR1cm4gKGNoYXJfdHlwZSop
IG1lbWNweSAoczEsIHMyLCBuKTsgfQogIHN0YXRpYyBjaGFyX3R5cGUqIG1vdmUgKGNoYXJfdHlw
ZSogczEsIGNvbnN0IGNoYXJfdHlwZSogczIsIHNpemVfdCBuKQogICAgeyByZXR1cm4gKGNoYXJf
dHlwZSopIG1lbW1vdmUgKHMxLCBzMiwgbik7IH0KICBzdGF0aWMgY2hhcl90eXBlKiBzZXQgKGNo
YXJfdHlwZSogczEsIGNvbnN0IGNoYXJfdHlwZSYgYywgc2l6ZV90IG4pCiAgICB7IHJldHVybiAo
Y2hhcl90eXBlKikgbWVtc2V0IChzMSwgYywgbik7IH0KfTsKCiMgMTU5ICIvdXNyL2xvY2FsL2xp
Yi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRl
L2crKy0zL3N0ZC9zdHJhaXRzLmgiIDMKCn0gIAoKIyAzNiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp
Yi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9z
dGQvYmFzdHJpbmcuaCIgMiAzCgoKIAojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMt
c3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxsb2MuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNDAgIi91c3IvbG9jYWwvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxs
b2MuaCIgMwoKCgoKIAogCiAKIyAzOSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t
c29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGQvYmFzdHJpbmcu
aCIgMiAzCgoKZXh0ZXJuICJDKysiIHsKY2xhc3MgaXN0cmVhbTsgY2xhc3Mgb3N0cmVhbTsKCiMg
MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4v
Li4vLi4vLi4vaW5jbHVkZS9nKystMy9pdGVyYXRvciIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDM0MiAiL3Vzci9sb2NhbC9saWIv
Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMyA0
CgojIDMyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUu
My8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2l0ZXJhdG9yIiAyIDMKCgoKCgoKCgoKCiAKIAog
CiMgNDQgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4z
Ly4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RkL2Jhc3RyaW5nLmgiIDIgMwoKCgoKZXh0ZXJu
IHZvaWQgX19vdXRfb2ZfcmFuZ2UgKGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIF9fbGVuZ3Ro
X2Vycm9yIChjb25zdCBjaGFyICopOwoKCgoKCgoKCgoKCgoKCnRlbXBsYXRlIDxjbGFzcyBjaGFy
VCwgY2xhc3MgdHJhaXRzID0gc3RyaW5nX2NoYXJfdHJhaXRzPGNoYXJUPiwKCSAgY2xhc3MgQWxs
b2NhdG9yID0gYWxsb2MgPgpjbGFzcyBiYXNpY19zdHJpbmcKewpwcml2YXRlOgogIHN0cnVjdCBS
ZXAgewogICAgc2l6ZV90IGxlbiwgcmVzLCByZWY7CiAgICBib29sIHNlbGZpc2g7CgogICAgY2hh
clQqIGRhdGEgKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyVCAqPih0aGlzICsgMSk7
IH0KICAgIGNoYXJUJiBvcGVyYXRvcltdIChzaXplX3QgcykgeyByZXR1cm4gZGF0YSAoKSBbc107
IH0KICAgIGNoYXJUKiBncmFiICgpIHsgaWYgKHNlbGZpc2gpIHJldHVybiBjbG9uZSAoKTsgKyty
ZWY7IHJldHVybiBkYXRhICgpOyB9CiMgMTA4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0ZC9iYXN0
cmluZy5oIiAzCgogICAgdm9pZCByZWxlYXNlICgpIHsgaWYgKC0tcmVmID09IDApIGRlbGV0ZSB0
aGlzOyB9CgoKICAgIGlubGluZSBzdGF0aWMgdm9pZCAqIG9wZXJhdG9yIG5ldyAoc2l6ZV90LCBz
aXplX3QpOwogICAgaW5saW5lIHN0YXRpYyB2b2lkIG9wZXJhdG9yIGRlbGV0ZSAodm9pZCAqKTsK
ICAgIGlubGluZSBzdGF0aWMgUmVwKiBjcmVhdGUgKHNpemVfdCk7CiAgICBjaGFyVCogY2xvbmUg
KCk7CgogICAgaW5saW5lIHZvaWQgY29weSAoc2l6ZV90LCBjb25zdCBjaGFyVCAqLCBzaXplX3Qp
OwogICAgaW5saW5lIHZvaWQgbW92ZSAoc2l6ZV90LCBjb25zdCBjaGFyVCAqLCBzaXplX3QpOwog
ICAgaW5saW5lIHZvaWQgc2V0ICAoc2l6ZV90LCBjb25zdCBjaGFyVCwgICBzaXplX3QpOwoKICAg
IGlubGluZSBzdGF0aWMgYm9vbCBleGNlc3Nfc2xvcCAoc2l6ZV90LCBzaXplX3QpOwogICAgaW5s
aW5lIHN0YXRpYyBzaXplX3QgZnJvYl9zaXplIChzaXplX3QpOwoKICBwcml2YXRlOgogICAgUmVw
ICZvcGVyYXRvcj0gKGNvbnN0IFJlcCAmKTsKICB9OwoKcHVibGljOgogCiAgdHlwZWRlZgkgICB0
cmFpdHMJCXRyYWl0c190eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX3R5cGUJ
dmFsdWVfdHlwZTsKICB0eXBlZGVmCSAgIEFsbG9jYXRvcgkJYWxsb2NhdG9yX3R5cGU7CgogIHR5
cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5
cGU7CiAgdHlwZWRlZiBjaGFyVCYgcmVmZXJlbmNlOwogIHR5cGVkZWYgY29uc3QgY2hhclQmIGNv
bnN0X3JlZmVyZW5jZTsKICB0eXBlZGVmIGNoYXJUKiBwb2ludGVyOwogIHR5cGVkZWYgY29uc3Qg
Y2hhclQqIGNvbnN0X3BvaW50ZXI7CiAgdHlwZWRlZiBwb2ludGVyIGl0ZXJhdG9yOwogIHR5cGVk
ZWYgY29uc3RfcG9pbnRlciBjb25zdF9pdGVyYXRvcjsKICB0eXBlZGVmIDo6cmV2ZXJzZV9pdGVy
YXRvcjxpdGVyYXRvcj4gcmV2ZXJzZV9pdGVyYXRvcjsKICB0eXBlZGVmIDo6cmV2ZXJzZV9pdGVy
YXRvcjxjb25zdF9pdGVyYXRvcj4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKICBzdGF0aWMgY29u
c3Qgc2l6ZV90eXBlIG5wb3MgPSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KC0xKTsKCnByaXZhdGU6
CiAgUmVwICpyZXAgKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZXAgKj4oZGF0
KSAtIDE7IH0KICB2b2lkIHJlcHVwIChSZXAgKnApIHsgcmVwICgpLT5yZWxlYXNlICgpOyBkYXQg
PSBwLT5kYXRhICgpOyB9CgpwdWJsaWM6CiAgY29uc3QgY2hhclQqIGRhdGEgKCkgY29uc3QKICAg
IHsgcmV0dXJuIHJlcCAoKS0+ZGF0YSgpOyB9CiAgc2l6ZV90eXBlIGxlbmd0aCAoKSBjb25zdAog
ICAgeyByZXR1cm4gcmVwICgpLT5sZW47IH0KICBzaXplX3R5cGUgc2l6ZSAoKSBjb25zdAogICAg
eyByZXR1cm4gcmVwICgpLT5sZW47IH0KICBzaXplX3R5cGUgY2FwYWNpdHkgKCkgY29uc3QKICAg
IHsgcmV0dXJuIHJlcCAoKS0+cmVzOyB9CiAgc2l6ZV90eXBlIG1heF9zaXplICgpIGNvbnN0CiAg
ICB7IHJldHVybiAobnBvcyAtIDEpL3NpemVvZiAoY2hhclQpOyB9CQkgCiAgYm9vbCBlbXB0eSAo
KSBjb25zdAogICAgeyByZXR1cm4gc2l6ZSAoKSA9PSAwOyB9CgogCiAgYmFzaWNfc3RyaW5nJiBv
cGVyYXRvcj0gKGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyKQogICAgewogICAgICBpZiAoJnN0ciAh
PSB0aGlzKSB7IHJlcCAoKS0+cmVsZWFzZSAoKTsgZGF0ID0gc3RyLnJlcCAoKS0+Z3JhYiAoKTsg
fQogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIGV4cGxpY2l0IGJhc2ljX3N0cmluZyAoKTog
ZGF0IChuaWxSZXAuZ3JhYiAoKSkgeyB9CiAgYmFzaWNfc3RyaW5nIChjb25zdCBiYXNpY19zdHJp
bmcmIHN0cik6IGRhdCAoc3RyLnJlcCAoKS0+Z3JhYiAoKSkgeyB9CiAgYmFzaWNfc3RyaW5nIChj
b25zdCBiYXNpY19zdHJpbmcmIHN0ciwgc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIG4gPSBucG9z
KQogICAgOiBkYXQgKG5pbFJlcC5ncmFiICgpKSB7IGFzc2lnbiAoc3RyLCBwb3MsIG4pOyB9CiAg
YmFzaWNfc3RyaW5nIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIG4pCiAgICA6IGRhdCAobmls
UmVwLmdyYWIgKCkpIHsgYXNzaWduIChzLCBuKTsgfQogIGJhc2ljX3N0cmluZyAoY29uc3QgY2hh
clQqIHMpCiAgICA6IGRhdCAobmlsUmVwLmdyYWIgKCkpIHsgYXNzaWduIChzKTsgfQogIGJhc2lj
X3N0cmluZyAoc2l6ZV90eXBlIG4sIGNoYXJUIGMpCiAgICA6IGRhdCAobmlsUmVwLmdyYWIgKCkp
IHsgYXNzaWduIChuLCBjKTsgfQoKICB0ZW1wbGF0ZTxjbGFzcyBJbnB1dEl0ZXJhdG9yPgogICAg
YmFzaWNfc3RyaW5nKElucHV0SXRlcmF0b3IgX19iZWdpbiwgSW5wdXRJdGVyYXRvciBfX2VuZCkK
CgoKICAgIDogZGF0IChuaWxSZXAuZ3JhYiAoKSkgeyBhc3NpZ24gKF9fYmVnaW4sIF9fZW5kKTsg
fQoKICB+YmFzaWNfc3RyaW5nICgpCiAgICB7IHJlcCAoKS0+cmVsZWFzZSAoKTsgfQoKICB2b2lk
IHN3YXAgKGJhc2ljX3N0cmluZyAmcykgeyBjaGFyVCAqZCA9IGRhdDsgZGF0ID0gcy5kYXQ7IHMu
ZGF0ID0gZDsgfQoKICBiYXNpY19zdHJpbmcmIGFwcGVuZCAoY29uc3QgYmFzaWNfc3RyaW5nJiBz
dHIsIHNpemVfdHlwZSBwb3MgPSAwLAoJCQlzaXplX3R5cGUgbiA9IG5wb3MpCiAgICB7IHJldHVy
biByZXBsYWNlIChsZW5ndGggKCksIDAsIHN0ciwgcG9zLCBuKTsgfQogIGJhc2ljX3N0cmluZyYg
YXBwZW5kIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIG4pCiAgICB7IHJldHVybiByZXBsYWNl
IChsZW5ndGggKCksIDAsIHMsIG4pOyB9CiAgYmFzaWNfc3RyaW5nJiBhcHBlbmQgKGNvbnN0IGNo
YXJUKiBzKQogICAgeyByZXR1cm4gYXBwZW5kIChzLCB0cmFpdHM6Omxlbmd0aCAocykpOyB9CiAg
YmFzaWNfc3RyaW5nJiBhcHBlbmQgKHNpemVfdHlwZSBuLCBjaGFyVCBjKQogICAgeyByZXR1cm4g
cmVwbGFjZSAobGVuZ3RoICgpLCAwLCBuLCBjKTsgfQoKICB0ZW1wbGF0ZTxjbGFzcyBJbnB1dEl0
ZXJhdG9yPgogICAgYmFzaWNfc3RyaW5nJiBhcHBlbmQoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5w
dXRJdGVyYXRvciBsYXN0KQoKCgogICAgeyByZXR1cm4gcmVwbGFjZSAoaWVuZCAoKSwgaWVuZCAo
KSwgZmlyc3QsIGxhc3QpOyB9CgogIHZvaWQgcHVzaF9iYWNrKGNoYXJUIF9fYykKICB7IGFwcGVu
ZCgxLCBfX2MpOyB9CiAgCiAgYmFzaWNfc3RyaW5nJiBhc3NpZ24gKGNvbnN0IGJhc2ljX3N0cmlu
ZyYgc3RyLCBzaXplX3R5cGUgcG9zID0gMCwKCQkJc2l6ZV90eXBlIG4gPSBucG9zKQogICAgeyBy
ZXR1cm4gcmVwbGFjZSAoMCwgbnBvcywgc3RyLCBwb3MsIG4pOyB9CiAgYmFzaWNfc3RyaW5nJiBh
c3NpZ24gKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgbikKICAgIHsgcmV0dXJuIHJlcGxhY2Ug
KDAsIG5wb3MsIHMsIG4pOyB9CiAgYmFzaWNfc3RyaW5nJiBhc3NpZ24gKGNvbnN0IGNoYXJUKiBz
KQogICAgeyByZXR1cm4gYXNzaWduIChzLCB0cmFpdHM6Omxlbmd0aCAocykpOyB9CiAgYmFzaWNf
c3RyaW5nJiBhc3NpZ24gKHNpemVfdHlwZSBuLCBjaGFyVCBjKQogICAgeyByZXR1cm4gcmVwbGFj
ZSAoMCwgbnBvcywgbiwgYyk7IH0KCiAgdGVtcGxhdGU8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KICAg
IGJhc2ljX3N0cmluZyYgYXNzaWduKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3Ig
bGFzdCkKCgoKICAgIHsgcmV0dXJuIHJlcGxhY2UgKGliZWdpbiAoKSwgaWVuZCAoKSwgZmlyc3Qs
IGxhc3QpOyB9CgogIGJhc2ljX3N0cmluZyYgb3BlcmF0b3I9IChjb25zdCBjaGFyVCogcykKICAg
IHsgcmV0dXJuIGFzc2lnbiAocyk7IH0KICBiYXNpY19zdHJpbmcmIG9wZXJhdG9yPSAoY2hhclQg
YykKICAgIHsgcmV0dXJuIGFzc2lnbiAoMSwgYyk7IH0KCiAgYmFzaWNfc3RyaW5nJiBvcGVyYXRv
cis9IChjb25zdCBiYXNpY19zdHJpbmcmIHJocykKICAgIHsgcmV0dXJuIGFwcGVuZCAocmhzKTsg
fQogIGJhc2ljX3N0cmluZyYgb3BlcmF0b3IrPSAoY29uc3QgY2hhclQqIHMpCiAgICB7IHJldHVy
biBhcHBlbmQgKHMpOyB9CiAgYmFzaWNfc3RyaW5nJiBvcGVyYXRvcis9IChjaGFyVCBjKQogICAg
eyByZXR1cm4gYXBwZW5kICgxLCBjKTsgfQoKICBiYXNpY19zdHJpbmcmIGluc2VydCAoc2l6ZV90
eXBlIHBvczEsIGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLAoJCQlzaXplX3R5cGUgcG9zMiA9IDAs
IHNpemVfdHlwZSBuID0gbnBvcykKICAgIHsgcmV0dXJuIHJlcGxhY2UgKHBvczEsIDAsIHN0ciwg
cG9zMiwgbik7IH0KICBiYXNpY19zdHJpbmcmIGluc2VydCAoc2l6ZV90eXBlIHBvcywgY29uc3Qg
Y2hhclQqIHMsIHNpemVfdHlwZSBuKQogICAgeyByZXR1cm4gcmVwbGFjZSAocG9zLCAwLCBzLCBu
KTsgfQogIGJhc2ljX3N0cmluZyYgaW5zZXJ0IChzaXplX3R5cGUgcG9zLCBjb25zdCBjaGFyVCog
cykKICAgIHsgcmV0dXJuIGluc2VydCAocG9zLCBzLCB0cmFpdHM6Omxlbmd0aCAocykpOyB9CiAg
YmFzaWNfc3RyaW5nJiBpbnNlcnQgKHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuLCBjaGFyVCBj
KQogICAgeyByZXR1cm4gcmVwbGFjZSAocG9zLCAwLCBuLCBjKTsgfQogIGl0ZXJhdG9yIGluc2Vy
dChpdGVyYXRvciBwLCBjaGFyVCBjKQogICAgeyBzaXplX3R5cGUgX19vID0gcCAtIGliZWdpbiAo
KTsKICAgICAgaW5zZXJ0IChwIC0gaWJlZ2luICgpLCAxLCBjKTsgc2VsZmlzaCAoKTsKICAgICAg
cmV0dXJuIGliZWdpbiAoKSArIF9fbzsgfQogIGl0ZXJhdG9yIGluc2VydChpdGVyYXRvciBwLCBz
aXplX3R5cGUgbiwgY2hhclQgYykKICAgIHsgc2l6ZV90eXBlIF9fbyA9IHAgLSBpYmVnaW4gKCk7
CiAgICAgIGluc2VydCAocCAtIGliZWdpbiAoKSwgbiwgYyk7IHNlbGZpc2ggKCk7CiAgICAgIHJl
dHVybiBpYmVnaW4gKCkgKyBfX287IH0KCiAgdGVtcGxhdGU8Y2xhc3MgSW5wdXRJdGVyYXRvcj4K
ICAgIHZvaWQgaW5zZXJ0KGl0ZXJhdG9yIHAsIElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRl
cmF0b3IgbGFzdCkKCgoKICAgIHsgcmVwbGFjZSAocCwgcCwgZmlyc3QsIGxhc3QpOyB9CgogIGJh
c2ljX3N0cmluZyYgZXJhc2UgKHNpemVfdHlwZSBwb3MgPSAwLCBzaXplX3R5cGUgbiA9IG5wb3Mp
CiAgICB7IHJldHVybiByZXBsYWNlIChwb3MsIG4sIChzaXplX3R5cGUpMCwgKGNoYXJUKTApOyB9
CiAgaXRlcmF0b3IgZXJhc2UoaXRlcmF0b3IgcCkKICAgIHsgc2l6ZV90eXBlIF9fbyA9IHAgLSBi
ZWdpbigpOwogICAgICByZXBsYWNlIChfX28sIDEsIChzaXplX3R5cGUpMCwgKGNoYXJUKTApOyBz
ZWxmaXNoICgpOwogICAgICByZXR1cm4gaWJlZ2luKCkgKyBfX287IH0KICBpdGVyYXRvciBlcmFz
ZShpdGVyYXRvciBmLCBpdGVyYXRvciBsKQogICAgeyBzaXplX3R5cGUgX19vID0gZiAtIGliZWdp
bigpOwogICAgICByZXBsYWNlIChfX28sIGwtZiwgKHNpemVfdHlwZSkwLCAoY2hhclQpMCk7c2Vs
ZmlzaCAoKTsKICAgICAgcmV0dXJuIGliZWdpbigpICsgX19vOyB9CgogIGJhc2ljX3N0cmluZyYg
cmVwbGFjZSAoc2l6ZV90eXBlIHBvczEsIHNpemVfdHlwZSBuMSwgY29uc3QgYmFzaWNfc3RyaW5n
JiBzdHIsCgkJCSBzaXplX3R5cGUgcG9zMiA9IDAsIHNpemVfdHlwZSBuMiA9IG5wb3MpOwogIGJh
c2ljX3N0cmluZyYgcmVwbGFjZSAoc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIG4xLCBjb25zdCBj
aGFyVCogcywKCQkJIHNpemVfdHlwZSBuMik7CiAgYmFzaWNfc3RyaW5nJiByZXBsYWNlIChzaXpl
X3R5cGUgcG9zLCBzaXplX3R5cGUgbjEsIGNvbnN0IGNoYXJUKiBzKQogICAgeyByZXR1cm4gcmVw
bGFjZSAocG9zLCBuMSwgcywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIGJhc2ljX3N0cmluZyYg
cmVwbGFjZSAoc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIG4xLCBzaXplX3R5cGUgbjIsIGNoYXJU
IGMpOwogIGJhc2ljX3N0cmluZyYgcmVwbGFjZSAoc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIG4s
IGNoYXJUIGMpCiAgICB7IHJldHVybiByZXBsYWNlIChwb3MsIG4sIDEsIGMpOyB9CiAgYmFzaWNf
c3RyaW5nJiByZXBsYWNlIChpdGVyYXRvciBpMSwgaXRlcmF0b3IgaTIsIGNvbnN0IGJhc2ljX3N0
cmluZyYgc3RyKQogICAgeyByZXR1cm4gcmVwbGFjZSAoaTEgLSBpYmVnaW4gKCksIGkyIC0gaTEs
IHN0cik7IH0KICBiYXNpY19zdHJpbmcmIHJlcGxhY2UgKGl0ZXJhdG9yIGkxLCBpdGVyYXRvciBp
MiwgY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBuKQogICAgeyByZXR1cm4gcmVwbGFjZSAoaTEg
LSBpYmVnaW4gKCksIGkyIC0gaTEsIHMsIG4pOyB9CiAgYmFzaWNfc3RyaW5nJiByZXBsYWNlIChp
dGVyYXRvciBpMSwgaXRlcmF0b3IgaTIsIGNvbnN0IGNoYXJUKiBzKQogICAgeyByZXR1cm4gcmVw
bGFjZSAoaTEgLSBpYmVnaW4gKCksIGkyIC0gaTEsIHMpOyB9CiAgYmFzaWNfc3RyaW5nJiByZXBs
YWNlIChpdGVyYXRvciBpMSwgaXRlcmF0b3IgaTIsIHNpemVfdHlwZSBuLCBjaGFyVCBjKQogICAg
eyByZXR1cm4gcmVwbGFjZSAoaTEgLSBpYmVnaW4gKCksIGkyIC0gaTEsIG4sIGMpOyB9CgogIHRl
bXBsYXRlPGNsYXNzIElucHV0SXRlcmF0b3I+CiAgICBiYXNpY19zdHJpbmcmIHJlcGxhY2UoaXRl
cmF0b3IgaTEsIGl0ZXJhdG9yIGkyLAoJCQkgIElucHV0SXRlcmF0b3IgajEsIElucHV0SXRlcmF0
b3IgajIpOwoKCgoKCnByaXZhdGU6CiAgc3RhdGljIGNoYXJUIGVvcyAoKSB7IHJldHVybiB0cmFp
dHM6OmVvcyAoKTsgfQogIHZvaWQgdW5pcXVlICgpIHsgaWYgKHJlcCAoKS0+cmVmID4gMSkgYWxs
b2MgKGxlbmd0aCAoKSwgdHJ1ZSk7IH0KICB2b2lkIHNlbGZpc2ggKCkgeyB1bmlxdWUgKCk7IHJl
cCAoKS0+c2VsZmlzaCA9IHRydWU7IH0KCnB1YmxpYzoKICBjaGFyVCBvcGVyYXRvcltdIChzaXpl
X3R5cGUgcG9zKSBjb25zdAogICAgewogICAgICBpZiAocG9zID09IGxlbmd0aCAoKSkKCXJldHVy
biBlb3MgKCk7CiAgICAgIHJldHVybiBkYXRhICgpW3Bvc107CiAgICB9CgogIHJlZmVyZW5jZSBv
cGVyYXRvcltdIChzaXplX3R5cGUgcG9zKQogICAgeyBzZWxmaXNoICgpOyByZXR1cm4gKCpyZXAg
KCkpW3Bvc107IH0KCiAgcmVmZXJlbmNlIGF0IChzaXplX3R5cGUgcG9zKQogICAgewogICAgICBk
byB7IGlmICggcG9zID49IGxlbmd0aCAoKSApIF9fb3V0X29mX3JhbmdlICgicG9zID49IGxlbmd0
aCAoKSIpOyB9IHdoaWxlICgwKSA7CiAgICAgIHJldHVybiAoKnRoaXMpW3Bvc107CiAgICB9CiAg
Y29uc3RfcmVmZXJlbmNlIGF0IChzaXplX3R5cGUgcG9zKSBjb25zdAogICAgewogICAgICBkbyB7
IGlmICggcG9zID49IGxlbmd0aCAoKSApIF9fb3V0X29mX3JhbmdlICgicG9zID49IGxlbmd0aCAo
KSIpOyB9IHdoaWxlICgwKSA7CiAgICAgIHJldHVybiBkYXRhICgpW3Bvc107CiAgICB9Cgpwcml2
YXRlOgogIHZvaWQgdGVybWluYXRlICgpIGNvbnN0CiAgICB7IHRyYWl0czo6YXNzaWduICgoKnJl
cCAoKSlbbGVuZ3RoICgpXSwgZW9zICgpKTsgfQoKcHVibGljOgogIGNvbnN0IGNoYXJUKiBjX3N0
ciAoKSBjb25zdAogICAgeyBpZiAobGVuZ3RoICgpID09IDApIHJldHVybiAiIjsgdGVybWluYXRl
ICgpOyByZXR1cm4gZGF0YSAoKTsgfQogIHZvaWQgcmVzaXplIChzaXplX3R5cGUgbiwgY2hhclQg
Yyk7CiAgdm9pZCByZXNpemUgKHNpemVfdHlwZSBuKQogICAgeyByZXNpemUgKG4sIGVvcyAoKSk7
IH0KICB2b2lkIHJlc2VydmUgKHNpemVfdHlwZSkgeyB9CgogIHNpemVfdHlwZSBjb3B5IChjaGFy
VCogcywgc2l6ZV90eXBlIG4sIHNpemVfdHlwZSBwb3MgPSAwKSBjb25zdDsKCiAgc2l6ZV90eXBl
IGZpbmQgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3QK
ICAgIHsgcmV0dXJuIGZpbmQgKHN0ci5kYXRhKCksIHBvcywgc3RyLmxlbmd0aCgpKTsgfQogIHNp
emVfdHlwZSBmaW5kIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIG4p
IGNvbnN0OwogIHNpemVfdHlwZSBmaW5kIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcyA9
IDApIGNvbnN0CiAgICB7IHJldHVybiBmaW5kIChzLCBwb3MsIHRyYWl0czo6bGVuZ3RoIChzKSk7
IH0KICBzaXplX3R5cGUgZmluZCAoY2hhclQgYywgc2l6ZV90eXBlIHBvcyA9IDApIGNvbnN0OwoK
ICBzaXplX3R5cGUgcmZpbmQgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUgcG9z
ID0gbnBvcykgY29uc3QKICAgIHsgcmV0dXJuIHJmaW5kIChzdHIuZGF0YSgpLCBwb3MsIHN0ci5s
ZW5ndGgoKSk7IH0KICBzaXplX3R5cGUgcmZpbmQgKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUg
cG9zLCBzaXplX3R5cGUgbikgY29uc3Q7CiAgc2l6ZV90eXBlIHJmaW5kIChjb25zdCBjaGFyVCog
cywgc2l6ZV90eXBlIHBvcyA9IG5wb3MpIGNvbnN0CiAgICB7IHJldHVybiByZmluZCAocywgcG9z
LCB0cmFpdHM6Omxlbmd0aCAocykpOyB9CiAgc2l6ZV90eXBlIHJmaW5kIChjaGFyVCBjLCBzaXpl
X3R5cGUgcG9zID0gbnBvcykgY29uc3Q7CgogIHNpemVfdHlwZSBmaW5kX2ZpcnN0X29mIChjb25z
dCBiYXNpY19zdHJpbmcmIHN0ciwgc2l6ZV90eXBlIHBvcyA9IDApIGNvbnN0CiAgICB7IHJldHVy
biBmaW5kX2ZpcnN0X29mIChzdHIuZGF0YSgpLCBwb3MsIHN0ci5sZW5ndGgoKSk7IH0KICBzaXpl
X3R5cGUgZmluZF9maXJzdF9vZiAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3MsIHNpemVf
dHlwZSBuKSBjb25zdDsKICBzaXplX3R5cGUgZmluZF9maXJzdF9vZiAoY29uc3QgY2hhclQqIHMs
IHNpemVfdHlwZSBwb3MgPSAwKSBjb25zdAogICAgeyByZXR1cm4gZmluZF9maXJzdF9vZiAocywg
cG9zLCB0cmFpdHM6Omxlbmd0aCAocykpOyB9CiAgc2l6ZV90eXBlIGZpbmRfZmlyc3Rfb2YgKGNo
YXJUIGMsIHNpemVfdHlwZSBwb3MgPSAwKSBjb25zdAogICAgeyByZXR1cm4gZmluZCAoYywgcG9z
KTsgfQoKICBzaXplX3R5cGUgZmluZF9sYXN0X29mIChjb25zdCBiYXNpY19zdHJpbmcmIHN0ciwg
c2l6ZV90eXBlIHBvcyA9IG5wb3MpIGNvbnN0CiAgICB7IHJldHVybiBmaW5kX2xhc3Rfb2YgKHN0
ci5kYXRhKCksIHBvcywgc3RyLmxlbmd0aCgpKTsgfQogIHNpemVfdHlwZSBmaW5kX2xhc3Rfb2Yg
KGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3Q7CiAgc2l6
ZV90eXBlIGZpbmRfbGFzdF9vZiAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3MgPSBucG9z
KSBjb25zdAogICAgeyByZXR1cm4gZmluZF9sYXN0X29mIChzLCBwb3MsIHRyYWl0czo6bGVuZ3Ro
IChzKSk7IH0KICBzaXplX3R5cGUgZmluZF9sYXN0X29mIChjaGFyVCBjLCBzaXplX3R5cGUgcG9z
ID0gbnBvcykgY29uc3QKICAgIHsgcmV0dXJuIHJmaW5kIChjLCBwb3MpOyB9CgogIHNpemVfdHlw
ZSBmaW5kX2ZpcnN0X25vdF9vZiAoY29uc3QgYmFzaWNfc3RyaW5nJiBzdHIsIHNpemVfdHlwZSBw
b3MgPSAwKSBjb25zdAogICAgeyByZXR1cm4gZmluZF9maXJzdF9ub3Rfb2YgKHN0ci5kYXRhKCks
IHBvcywgc3RyLmxlbmd0aCgpKTsgfQogIHNpemVfdHlwZSBmaW5kX2ZpcnN0X25vdF9vZiAoY29u
c3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKSBjb25zdDsKICBzaXplX3R5
cGUgZmluZF9maXJzdF9ub3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zID0gMCkg
Y29uc3QKICAgIHsgcmV0dXJuIGZpbmRfZmlyc3Rfbm90X29mIChzLCBwb3MsIHRyYWl0czo6bGVu
Z3RoIChzKSk7IH0KICBzaXplX3R5cGUgZmluZF9maXJzdF9ub3Rfb2YgKGNoYXJUIGMsIHNpemVf
dHlwZSBwb3MgPSAwKSBjb25zdDsKCiAgc2l6ZV90eXBlIGZpbmRfbGFzdF9ub3Rfb2YgKGNvbnN0
IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUgcG9zID0gbnBvcykgY29uc3QKICAgIHsgcmV0
dXJuIGZpbmRfbGFzdF9ub3Rfb2YgKHN0ci5kYXRhKCksIHBvcywgc3RyLmxlbmd0aCgpKTsgfQog
IHNpemVfdHlwZSBmaW5kX2xhc3Rfbm90X29mIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBv
cywgc2l6ZV90eXBlIG4pIGNvbnN0OwogIHNpemVfdHlwZSBmaW5kX2xhc3Rfbm90X29mIChjb25z
dCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcyA9IG5wb3MpIGNvbnN0CiAgICB7IHJldHVybiBmaW5k
X2xhc3Rfbm90X29mIChzLCBwb3MsIHRyYWl0czo6bGVuZ3RoIChzKSk7IH0KICBzaXplX3R5cGUg
ZmluZF9sYXN0X25vdF9vZiAoY2hhclQgYywgc2l6ZV90eXBlIHBvcyA9IG5wb3MpIGNvbnN0OwoK
ICBiYXNpY19zdHJpbmcgc3Vic3RyIChzaXplX3R5cGUgcG9zID0gMCwgc2l6ZV90eXBlIG4gPSBu
cG9zKSBjb25zdAogICAgeyByZXR1cm4gYmFzaWNfc3RyaW5nICgqdGhpcywgcG9zLCBuKTsgfQoK
ICBpbnQgY29tcGFyZSAoY29uc3QgYmFzaWNfc3RyaW5nJiBzdHIsIHNpemVfdHlwZSBwb3MgPSAw
LCBzaXplX3R5cGUgbiA9IG5wb3MpIGNvbnN0OwogICAKICBpbnQgY29tcGFyZSAoY29uc3QgY2hh
clQqIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKSBjb25zdDsKICBpbnQgY29tcGFyZSAo
Y29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3MgPSAwKSBjb25zdAogICAgeyByZXR1cm4gY29t
cGFyZSAocywgcG9zLCB0cmFpdHM6Omxlbmd0aCAocykpOyB9CgogIGl0ZXJhdG9yIGJlZ2luICgp
IHsgc2VsZmlzaCAoKTsgcmV0dXJuICYoKnRoaXMpWzBdOyB9CiAgaXRlcmF0b3IgZW5kICgpIHsg
c2VsZmlzaCAoKTsgcmV0dXJuICYoKnRoaXMpW2xlbmd0aCAoKV07IH0KCnByaXZhdGU6CiAgaXRl
cmF0b3IgaWJlZ2luICgpIGNvbnN0IHsgcmV0dXJuICYoKnJlcCAoKSlbMF07IH0KICBpdGVyYXRv
ciBpZW5kICgpIGNvbnN0IHsgcmV0dXJuICYoKnJlcCAoKSlbbGVuZ3RoICgpXTsgfQoKcHVibGlj
OgogIGNvbnN0X2l0ZXJhdG9yIGJlZ2luICgpIGNvbnN0IHsgcmV0dXJuIGliZWdpbiAoKTsgfQog
IGNvbnN0X2l0ZXJhdG9yIGVuZCAoKSBjb25zdCB7IHJldHVybiBpZW5kICgpOyB9CgogIHJldmVy
c2VfaXRlcmF0b3IgICAgICAgcmJlZ2luKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvciAoZW5k
ICgpKTsgfQogIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3QKICAgIHsgcmV0
dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgKGVuZCAoKSk7IH0KICByZXZlcnNlX2l0ZXJhdG9y
ICAgICAgIHJlbmQoKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yIChiZWdpbiAoKSk7IH0KICBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdAogICAgeyByZXR1cm4gY29uc3RfcmV2
ZXJzZV9pdGVyYXRvciAoYmVnaW4gKCkpOyB9Cgpwcml2YXRlOgogIHZvaWQgYWxsb2MgKHNpemVf
dHlwZSBzaXplLCBib29sIHNhdmUpOwogIHN0YXRpYyBzaXplX3R5cGUgX2ZpbmQgKGNvbnN0IGNo
YXJUKiBwdHIsIGNoYXJUIGMsIHNpemVfdHlwZSB4cG9zLCBzaXplX3R5cGUgbGVuKTsKICBpbmxp
bmUgYm9vbCBjaGVja19yZWFsbG9jIChzaXplX3R5cGUgcykgY29uc3Q7CgogIHN0YXRpYyBSZXAg
bmlsUmVwOwogIGNoYXJUICpkYXQ7Cn07CgoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0
cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4gdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+CmJh
c2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgYmFzaWNfc3RyaW5nIDxjaGFy
VCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKcmVwbGFjZSAoaXRlcmF0b3IgaTEsIGl0ZXJhdG9yIGky
LCBJbnB1dEl0ZXJhdG9yIGoxLCBJbnB1dEl0ZXJhdG9yIGoyKQoKCgoKCnsKICBjb25zdCBzaXpl
X3R5cGUgbGVuID0gbGVuZ3RoICgpOwogIHNpemVfdHlwZSBwb3MgPSBpMSAtIGliZWdpbiAoKTsK
ICBzaXplX3R5cGUgbjEgPSBpMiAtIGkxOwogIHNpemVfdHlwZSBuMiA9IGoyIC0gajE7CgogIGRv
IHsgaWYgKCBwb3MgPiBsZW4gKSBfX291dF9vZl9yYW5nZSAoInBvcyA+IGxlbiIpOyB9IHdoaWxl
ICgwKSA7CiAgaWYgKG4xID4gbGVuIC0gcG9zKQogICAgbjEgPSBsZW4gLSBwb3M7CiAgZG8geyBp
ZiAoIGxlbiAtIG4xID4gbWF4X3NpemUgKCkgLSBuMiApIF9fbGVuZ3RoX2Vycm9yICgibGVuIC0g
bjEgPiBtYXhfc2l6ZSAoKSAtIG4yIik7IH0gd2hpbGUgKDApIDsKICBzaXplX3QgbmV3bGVuID0g
bGVuIC0gbjEgKyBuMjsKCiAgaWYgKGNoZWNrX3JlYWxsb2MgKG5ld2xlbikpCiAgICB7CiAgICAg
IFJlcCAqcCA9IFJlcDo6Y3JlYXRlIChuZXdsZW4pOwogICAgICBwLT5jb3B5ICgwLCBkYXRhICgp
LCBwb3MpOwogICAgICBwLT5jb3B5IChwb3MgKyBuMiwgZGF0YSAoKSArIHBvcyArIG4xLCBsZW4g
LSAocG9zICsgbjEpKTsKICAgICAgZm9yICg7IGoxICE9IGoyOyArK2oxLCArK3BvcykKCXRyYWl0
czo6YXNzaWduICgoKnApW3Bvc10sICpqMSk7CiAgICAgIHJlcHVwIChwKTsKICAgIH0KICBlbHNl
CiAgICB7CiAgICAgIHJlcCAoKS0+bW92ZSAocG9zICsgbjIsIGRhdGEgKCkgKyBwb3MgKyBuMSwg
bGVuIC0gKHBvcyArIG4xKSk7CiAgICAgIGZvciAoOyBqMSAhPSBqMjsgKytqMSwgKytwb3MpCgl0
cmFpdHM6OmFzc2lnbiAoKCpyZXAgKCkpW3Bvc10sICpqMSk7CiAgICB9CiAgcmVwICgpLT5sZW4g
PSBuZXdsZW47CgogIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFz
cyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRy
YWl0cywgQWxsb2NhdG9yPgpvcGVyYXRvcisgKGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRy
YWl0cywgQWxsb2NhdG9yPiYgbGhzLAoJICAgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJh
aXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj4gc3RyIChsaHMpOwogIHN0ci5hcHBlbmQgKHJocyk7CiAgcmV0dXJuIHN0cjsKfQoK
dGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5s
aW5lIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPgpvcGVyYXRvcisgKGNv
bnN0IGNoYXJUKiBsaHMsIGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2Nh
dG9yPiYgcmhzKQp7CiAgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+IHN0
ciAobGhzKTsKICBzdHIuYXBwZW5kIChyaHMpOwogIHJldHVybiBzdHI7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBiYXNpY19z
dHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4Kb3BlcmF0b3IrIChjaGFyVCBsaHMsIGNv
bnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgcmhzKQp7CiAgYmFz
aWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+IHN0ciAoMSwgbGhzKTsKICBzdHIu
YXBwZW5kIChyaHMpOwogIHJldHVybiBzdHI7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xh
c3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBiYXNpY19zdHJpbmcgPGNoYXJULCB0
cmFpdHMsIEFsbG9jYXRvcj4Kb3BlcmF0b3IrIChjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0
cmFpdHMsIEFsbG9jYXRvcj4mIGxocywgY29uc3QgY2hhclQqIHJocykKewogIGJhc2ljX3N0cmlu
ZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiBzdHIgKGxocyk7CiAgc3RyLmFwcGVuZCAocmhz
KTsKICByZXR1cm4gc3RyOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywg
Y2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxv
Y2F0b3I+Cm9wZXJhdG9yKyAoY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxv
Y2F0b3I+JiBsaHMsIGNoYXJUIHJocykKewogIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywg
QWxsb2NhdG9yPiBzdHIgKGxocyk7CiAgc3RyLmFwcGVuZCAoMSwgcmhzKTsKICByZXR1cm4gc3Ry
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9y
PgppbmxpbmUgYm9vbApvcGVyYXRvcj09IChjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFp
dHMsIEFsbG9jYXRvcj4mIGxocywKCSAgICBjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFp
dHMsIEFsbG9jYXRvcj4mIHJocykKewogIHJldHVybiAobGhzLmNvbXBhcmUgKHJocykgPT0gMCk7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+
CmlubGluZSBib29sCm9wZXJhdG9yPT0gKGNvbnN0IGNoYXJUKiBsaHMsIGNvbnN0IGJhc2ljX3N0
cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgcmhzKQp7CiAgcmV0dXJuIChyaHMuY29t
cGFyZSAobGhzKSA9PSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMs
IGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3I9PSAoY29uc3QgYmFzaWNfc3Ry
aW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsIGNvbnN0IGNoYXJUKiByaHMpCnsK
ICByZXR1cm4gKGxocy5jb21wYXJlIChyaHMpID09IDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hh
clQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApvcGVyYXRvciE9
IChjb25zdCBjaGFyVCogbGhzLCBjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj4mIHJocykKewogIHJldHVybiAocmhzLmNvbXBhcmUgKGxocykgIT0gMCk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGlu
ZSBib29sCm9wZXJhdG9yIT0gKGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxs
b2NhdG9yPiYgbGhzLCBjb25zdCBjaGFyVCogcmhzKQp7CiAgcmV0dXJuIChsaHMuY29tcGFyZSAo
cmhzKSAhPSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNz
IEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3I8IChjb25zdCBiYXNpY19zdHJpbmcgPGNo
YXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIGxocywKCSAgICBjb25zdCBiYXNpY19zdHJpbmcgPGNo
YXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIHJocykKewogIHJldHVybiAobGhzLmNvbXBhcmUgKHJo
cykgPCAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFs
bG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3I8IChjb25zdCBjaGFyVCogbGhzLCBjb25zdCBi
YXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIHJocykKewogIHJldHVybiAo
cmhzLmNvbXBhcmUgKGxocykgPiAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0
cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3I8IChjb25zdCBiYXNp
Y19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIGxocywgY29uc3QgY2hhclQqIHJo
cykKewogIHJldHVybiAobGhzLmNvbXBhcmUgKHJocykgPCAwKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0
b3I+IChjb25zdCBjaGFyVCogbGhzLCBjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMs
IEFsbG9jYXRvcj4mIHJocykKewogIHJldHVybiAocmhzLmNvbXBhcmUgKGxocykgPCAwKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5s
aW5lIGJvb2wKb3BlcmF0b3I+IChjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj4mIGxocywgY29uc3QgY2hhclQqIHJocykKewogIHJldHVybiAobGhzLmNvbXBhcmUg
KHJocykgPiAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNz
IEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3I8PSAoY29uc3QgY2hhclQqIGxocywgY29u
c3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1
cm4gKHJocy5jb21wYXJlIChsaHMpID49IDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNs
YXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApvcGVyYXRvcjw9IChjb25z
dCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIGxocywgY29uc3QgY2hh
clQqIHJocykKewogIHJldHVybiAobGhzLmNvbXBhcmUgKHJocykgPD0gMCk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBib29s
Cm9wZXJhdG9yPj0gKGNvbnN0IGNoYXJUKiBsaHMsIGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQs
IHRyYWl0cywgQWxsb2NhdG9yPiYgcmhzKQp7CiAgcmV0dXJuIChyaHMuY29tcGFyZSAobGhzKSA8
PSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9j
YXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3I+PSAoY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwg
dHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsIGNvbnN0IGNoYXJUKiByaHMpCnsKICByZXR1cm4gKGxo
cy5jb21wYXJlIChyaHMpID49IDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRy
YWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApvcGVyYXRvciE9IChjb25zdCBiYXNp
Y19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIGxocywKCSAgICBjb25zdCBiYXNp
Y19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIHJocykKewogIHJldHVybiAobGhz
LmNvbXBhcmUgKHJocykgIT0gMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJh
aXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPiAoY29uc3QgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsCgkgICBjb25zdCBiYXNpY19z
dHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIHJocykKewogIHJldHVybiAobGhzLmNv
bXBhcmUgKHJocykgPiAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMs
IGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3I8PSAoY29uc3QgYmFzaWNfc3Ry
aW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsCgkgICAgY29uc3QgYmFzaWNfc3Ry
aW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKGxocy5jb21w
YXJlIChyaHMpIDw9IDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywg
Y2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApvcGVyYXRvcj49IChjb25zdCBiYXNpY19zdHJp
bmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIGxocywKCSAgICBjb25zdCBiYXNpY19zdHJp
bmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIHJocykKewogIHJldHVybiAobGhzLmNvbXBh
cmUgKHJocykgPj0gMCk7Cn0KCmNsYXNzIGlzdHJlYW07IGNsYXNzIG9zdHJlYW07CnRlbXBsYXRl
IDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+IGlzdHJlYW0mCm9w
ZXJhdG9yPj4gKGlzdHJlYW0mLCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRv
cj4mKTsKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRv
cj4gb3N0cmVhbSYKb3BlcmF0b3I8PCAob3N0cmVhbSYsIGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hh
clQsIHRyYWl0cywgQWxsb2NhdG9yPiYpOwp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRy
YWl0cywgY2xhc3MgQWxsb2NhdG9yPiBpc3RyZWFtJgpnZXRsaW5lIChpc3RyZWFtJiwgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiwgY2hhclQgZGVsaW0gPSAnXG4nKTsK
Cn0gIAoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIu
OTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0ZC9iYXN0cmluZy5jYyIgMSAzCiAKIAoK
IAogCiAKIAogCgogCiAKIAogCgogCiAKIAoKIAogCiAKIAogCgogCiAKCmV4dGVybiAiQysrIiB7
CnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Cmlu
bGluZSB2b2lkICogYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpSZXA6
OgpvcGVyYXRvciBuZXcgKHNpemVfdCBzLCBzaXplX3QgZXh0cmEpCnsKICByZXR1cm4gQWxsb2Nh
dG9yOjphbGxvY2F0ZShzICsgZXh0cmEgKiBzaXplb2YgKGNoYXJUKSk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSB2b2lkIGJh
c2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwOjoKb3BlcmF0b3IgZGVs
ZXRlICh2b2lkICogcHRyKQp7CiAgQWxsb2NhdG9yOjpkZWFsbG9jYXRlKHB0ciwgc2l6ZW9mKFJl
cCkgKwoJCQlyZWludGVycHJldF9jYXN0PFJlcCAqPihwdHIpLT5yZXMgKgoJCQlzaXplb2YgKGNo
YXJUKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxv
Y2F0b3I+CmlubGluZSBzaXplX3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0
b3I+OjpSZXA6Ogpmcm9iX3NpemUgKHNpemVfdCBzKQp7CiAgc2l6ZV90IGkgPSAxNjsKICB3aGls
ZSAoaSA8IHMpIGkgKj0gMjsKICByZXR1cm4gaTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBj
bGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJhc2ljX3N0cmluZyA8Y2hhclQs
IHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwICoKYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBB
bGxvY2F0b3I+OjpSZXA6OgpjcmVhdGUgKHNpemVfdCBleHRyYSkKewogIGV4dHJhID0gZnJvYl9z
aXplIChleHRyYSArIDEpOwogIFJlcCAqcCA9IG5ldyAoZXh0cmEpIFJlcDsKICBwLT5yZXMgPSBl
eHRyYTsKICBwLT5yZWYgPSAxOwogIHAtPnNlbGZpc2ggPSBmYWxzZTsKICByZXR1cm4gcDsKfQoK
dGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KY2hh
clQgKiBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OlJlcDo6CmNsb25l
ICgpCnsKICBSZXAgKnAgPSBSZXA6OmNyZWF0ZSAobGVuKTsKICBwLT5jb3B5ICgwLCBkYXRhICgp
LCBsZW4pOwogIHAtPmxlbiA9IGxlbjsKICByZXR1cm4gcC0+ZGF0YSAoKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wg
YmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpSZXA6OgpleGNlc3Nfc2xv
cCAoc2l6ZV90IHMsIHNpemVfdCByKQp7CiAgcmV0dXJuIDIgKiAocyA8PSAxNiA/IDE2IDogcykg
PCByOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2Nh
dG9yPgppbmxpbmUgYm9vbCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46
OgpjaGVja19yZWFsbG9jIChiYXNpY19zdHJpbmc6OnNpemVfdHlwZSBzKSBjb25zdAp7CiAgcyAr
PSBzaXplb2YgKGNoYXJUKTsKICByZXAgKCktPnNlbGZpc2ggPSBmYWxzZTsKICByZXR1cm4gKHJl
cCAoKS0+cmVmID4gMQoJICB8fCBzID4gY2FwYWNpdHkgKCkKCSAgfHwgUmVwOjpleGNlc3Nfc2xv
cCAocywgY2FwYWNpdHkgKCkpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFp
dHMsIGNsYXNzIEFsbG9jYXRvcj4Kdm9pZCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj46OgphbGxvYyAoYmFzaWNfc3RyaW5nOjpzaXplX3R5cGUgX19zaXplLCBib29sIF9f
c2F2ZSkKewogIGlmICghIGNoZWNrX3JlYWxsb2MgKF9fc2l6ZSkpCiAgICByZXR1cm47CgogIFJl
cCAqcCA9IFJlcDo6Y3JlYXRlIChfX3NpemUpOwoKICBpZiAoX19zYXZlKQogICAgewogICAgICBw
LT5jb3B5ICgwLCBkYXRhICgpLCBsZW5ndGggKCkpOwogICAgICBwLT5sZW4gPSBsZW5ndGggKCk7
CiAgICB9CiAgZWxzZQogICAgcC0+bGVuID0gMDsKCiAgcmVwdXAgKHApOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNpY19zdHJpbmcg
PGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mCmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywg
QWxsb2NhdG9yPjo6CnJlcGxhY2UgKHNpemVfdHlwZSBwb3MxLCBzaXplX3R5cGUgbjEsCgkgY29u
c3QgYmFzaWNfc3RyaW5nJiBzdHIsIHNpemVfdHlwZSBwb3MyLCBzaXplX3R5cGUgbjIpCnsKICBj
b25zdCBzaXplX3QgbGVuMiA9IHN0ci5sZW5ndGggKCk7CgogIGlmIChwb3MxID09IDAgJiYgbjEg
Pj0gbGVuZ3RoICgpICYmIHBvczIgPT0gMCAmJiBuMiA+PSBsZW4yKQogICAgcmV0dXJuIG9wZXJh
dG9yPSAoc3RyKTsKCiAgZG8geyBpZiAoIHBvczIgPiBsZW4yICkgX19vdXRfb2ZfcmFuZ2UgKCJw
b3MyID4gbGVuMiIpOyB9IHdoaWxlICgwKSA7CgogIGlmIChuMiA+IGxlbjIgLSBwb3MyKQogICAg
bjIgPSBsZW4yIC0gcG9zMjsKCiAgcmV0dXJuIHJlcGxhY2UgKHBvczEsIG4xLCBzdHIuZGF0YSAo
KSArIHBvczIsIG4yKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNs
YXNzIEFsbG9jYXRvcj4KaW5saW5lIHZvaWQgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBB
bGxvY2F0b3I+OjpSZXA6Ogpjb3B5IChzaXplX3QgcG9zLCBjb25zdCBjaGFyVCAqcywgc2l6ZV90
IG4pCnsKICBpZiAobikKICAgIHRyYWl0czo6Y29weSAoZGF0YSAoKSArIHBvcywgcywgbik7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Cmlu
bGluZSB2b2lkIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwOjoK
bW92ZSAoc2l6ZV90IHBvcywgY29uc3QgY2hhclQgKnMsIHNpemVfdCBuKQp7CiAgaWYgKG4pCiAg
ICB0cmFpdHM6Om1vdmUgKGRhdGEgKCkgKyBwb3MsIHMsIG4pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
Y2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNpY19zdHJpbmcgPGNoYXJU
LCB0cmFpdHMsIEFsbG9jYXRvcj4mCmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2Nh
dG9yPjo6CnJlcGxhY2UgKHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuMSwgY29uc3QgY2hhclQq
IHMsIHNpemVfdHlwZSBuMikKewogIGNvbnN0IHNpemVfdHlwZSBsZW4gPSBsZW5ndGggKCk7CiAg
ZG8geyBpZiAoIHBvcyA+IGxlbiApIF9fb3V0X29mX3JhbmdlICgicG9zID4gbGVuIik7IH0gd2hp
bGUgKDApIDsKICBpZiAobjEgPiBsZW4gLSBwb3MpCiAgICBuMSA9IGxlbiAtIHBvczsKICBkbyB7
IGlmICggbGVuIC0gbjEgPiBtYXhfc2l6ZSAoKSAtIG4yICkgX19sZW5ndGhfZXJyb3IgKCJsZW4g
LSBuMSA+IG1heF9zaXplICgpIC0gbjIiKTsgfSB3aGlsZSAoMCkgOwogIHNpemVfdCBuZXdsZW4g
PSBsZW4gLSBuMSArIG4yOwoKICBpZiAoY2hlY2tfcmVhbGxvYyAobmV3bGVuKSkKICAgIHsKICAg
ICAgUmVwICpwID0gUmVwOjpjcmVhdGUgKG5ld2xlbik7CiAgICAgIHAtPmNvcHkgKDAsIGRhdGEg
KCksIHBvcyk7CiAgICAgIHAtPmNvcHkgKHBvcyArIG4yLCBkYXRhICgpICsgcG9zICsgbjEsIGxl
biAtIChwb3MgKyBuMSkpOwogICAgICBwLT5jb3B5IChwb3MsIHMsIG4yKTsKICAgICAgcmVwdXAg
KHApOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgcmVwICgpLT5tb3ZlIChwb3MgKyBuMiwgZGF0
YSAoKSArIHBvcyArIG4xLCBsZW4gLSAocG9zICsgbjEpKTsKICAgICAgcmVwICgpLT5jb3B5IChw
b3MsIHMsIG4yKTsKICAgIH0KICByZXAgKCktPmxlbiA9IG5ld2xlbjsKCiAgcmV0dXJuICp0aGlz
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9y
PgppbmxpbmUgdm9pZCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OlJl
cDo6CnNldCAoc2l6ZV90IHBvcywgY29uc3QgY2hhclQgYywgc2l6ZV90IG4pCnsKICB0cmFpdHM6
OnNldCAgKGRhdGEgKCkgKyBwb3MsIGMsIG4pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNs
YXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMs
IEFsbG9jYXRvcj4mIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6CnJl
cGxhY2UgKHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuMSwgc2l6ZV90eXBlIG4yLCBjaGFyVCBj
KQp7CiAgY29uc3Qgc2l6ZV90IGxlbiA9IGxlbmd0aCAoKTsKICBkbyB7IGlmICggcG9zID4gbGVu
ICkgX19vdXRfb2ZfcmFuZ2UgKCJwb3MgPiBsZW4iKTsgfSB3aGlsZSAoMCkgOwogIGlmIChuMSA+
IGxlbiAtIHBvcykKICAgIG4xID0gbGVuIC0gcG9zOwogIGRvIHsgaWYgKCBsZW4gLSBuMSA+IG1h
eF9zaXplICgpIC0gbjIgKSBfX2xlbmd0aF9lcnJvciAoImxlbiAtIG4xID4gbWF4X3NpemUgKCkg
LSBuMiIpOyB9IHdoaWxlICgwKSA7CiAgc2l6ZV90IG5ld2xlbiA9IGxlbiAtIG4xICsgbjI7Cgog
IGlmIChjaGVja19yZWFsbG9jIChuZXdsZW4pKQogICAgewogICAgICBSZXAgKnAgPSBSZXA6OmNy
ZWF0ZSAobmV3bGVuKTsKICAgICAgcC0+Y29weSAoMCwgZGF0YSAoKSwgcG9zKTsKICAgICAgcC0+
Y29weSAocG9zICsgbjIsIGRhdGEgKCkgKyBwb3MgKyBuMSwgbGVuIC0gKHBvcyArIG4xKSk7CiAg
ICAgIHAtPnNldCAgKHBvcywgYywgbjIpOwogICAgICByZXB1cCAocCk7CiAgICB9CiAgZWxzZQog
ICAgewogICAgICByZXAgKCktPm1vdmUgKHBvcyArIG4yLCBkYXRhICgpICsgcG9zICsgbjEsIGxl
biAtIChwb3MgKyBuMSkpOwogICAgICByZXAgKCktPnNldCAgKHBvcywgYywgbjIpOwogICAgfQog
IHJlcCAoKS0+bGVuID0gbmV3bGVuOwoKICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CnZvaWQgYmFzaWNfc3RyaW5n
IDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKcmVzaXplIChzaXplX3R5cGUgbiwgY2hhclQg
YykKewogIGRvIHsgaWYgKCBuID4gbWF4X3NpemUgKCkgKSBfX2xlbmd0aF9lcnJvciAoIm4gPiBt
YXhfc2l6ZSAoKSIpOyB9IHdoaWxlICgwKSA7CgogIGlmIChuID4gbGVuZ3RoICgpKQogICAgYXBw
ZW5kIChuIC0gbGVuZ3RoICgpLCBjKTsKICBlbHNlCiAgICBlcmFzZSAobik7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmJhc2ljX3N0cmlu
ZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2ljX3N0cmluZyA8Y2hh
clQsIHRyYWl0cywgQWxsb2NhdG9yPjo6CmNvcHkgKGNoYXJUKiBzLCBzaXplX3R5cGUgbiwgc2l6
ZV90eXBlIHBvcykgY29uc3QKewogIGRvIHsgaWYgKCBwb3MgPiBsZW5ndGggKCkgKSBfX291dF9v
Zl9yYW5nZSAoInBvcyA+IGxlbmd0aCAoKSIpOyB9IHdoaWxlICgwKSA7CgogIGlmIChuID4gbGVu
Z3RoICgpIC0gcG9zKQogICAgbiA9IGxlbmd0aCAoKSAtIHBvczsKCiAgdHJhaXRzOjpjb3B5IChz
LCBkYXRhICgpICsgcG9zLCBuKTsKICByZXR1cm4gbjsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJU
LCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJh
aXRzLCBBbGxvY2F0b3I+OjpzaXplX3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBB
bGxvY2F0b3I+OjoKZmluZCAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlw
ZSBuKSBjb25zdAp7CiAgc2l6ZV90IHhwb3MgPSBwb3M7CiAgZm9yICg7IHhwb3MgKyBuIDw9IGxl
bmd0aCAoKTsgKyt4cG9zKQogICAgaWYgKHRyYWl0czo6ZXEgKGRhdGEgKCkgW3hwb3NdLCAqcykK
CSYmIHRyYWl0czo6Y29tcGFyZSAoZGF0YSAoKSArIHhwb3MsIHMsIG4pID09IDApCiAgICAgIHJl
dHVybiB4cG9zOwogIHJldHVybiBucG9zOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNz
IHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJh
aXRzLCBBbGxvY2F0b3I+OjpzaXplX3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBB
bGxvY2F0b3I+OjoKX2ZpbmQgKGNvbnN0IGNoYXJUKiBwdHIsIGNoYXJUIGMsIHNpemVfdHlwZSB4
cG9zLCBzaXplX3R5cGUgbGVuKQp7CiAgZm9yICg7IHhwb3MgPCBsZW47ICsreHBvcykKICAgIGlm
ICh0cmFpdHM6OmVxIChwdHIgW3hwb3NdLCBjKSkKICAgICAgcmV0dXJuIHhwb3M7CiAgcmV0dXJu
IG5wb3M7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxv
Y2F0b3I+CmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBl
CmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6CmZpbmQgKGNoYXJUIGMs
IHNpemVfdHlwZSBwb3MpIGNvbnN0CnsKICByZXR1cm4gX2ZpbmQgKGRhdGEgKCksIGMsIHBvcywg
bGVuZ3RoICgpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNz
IEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpzaXpl
X3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKcmZpbmQgKGNv
bnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIGlmIChu
ID4gbGVuZ3RoICgpKQogICAgcmV0dXJuIG5wb3M7CgogIHNpemVfdCB4cG9zID0gbGVuZ3RoICgp
IC0gbjsKICBpZiAoeHBvcyA+IHBvcykKICAgIHhwb3MgPSBwb3M7CgogIGZvciAoKyt4cG9zOyB4
cG9zLS0gPiAwOyApCiAgICBpZiAodHJhaXRzOjplcSAoZGF0YSAoKSBbeHBvc10sICpzKQoJJiYg
dHJhaXRzOjpjb21wYXJlIChkYXRhICgpICsgeHBvcywgcywgbikgPT0gMCkKICAgICAgcmV0dXJu
IHhwb3M7CiAgcmV0dXJuIG5wb3M7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJh
aXRzLCBjbGFzcyBBbGxvY2F0b3I+CmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2Nh
dG9yPjo6c2l6ZV90eXBlCmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6
CnJmaW5kIChjaGFyVCBjLCBzaXplX3R5cGUgcG9zKSBjb25zdAp7CiAgaWYgKDEgPiBsZW5ndGgg
KCkpCiAgICByZXR1cm4gbnBvczsKCiAgc2l6ZV90IHhwb3MgPSBsZW5ndGggKCkgLSAxOwogIGlm
ICh4cG9zID4gcG9zKQogICAgeHBvcyA9IHBvczsKCiAgZm9yICgrK3hwb3M7IHhwb3MtLSA+IDA7
ICkKICAgIGlmICh0cmFpdHM6OmVxIChkYXRhICgpIFt4cG9zXSwgYykpCiAgICAgIHJldHVybiB4
cG9zOwogIHJldHVybiBucG9zOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0
cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRv
cj46OnNpemVfdHlwZQpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46Ogpm
aW5kX2ZpcnN0X29mIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIG4p
IGNvbnN0CnsKICBzaXplX3QgeHBvcyA9IHBvczsKICBmb3IgKDsgeHBvcyA8IGxlbmd0aCAoKTsg
Kyt4cG9zKQogICAgaWYgKF9maW5kIChzLCBkYXRhICgpIFt4cG9zXSwgMCwgbikgIT0gbnBvcykK
ICAgICAgcmV0dXJuIHhwb3M7CiAgcmV0dXJuIG5wb3M7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFy
VCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmJhc2ljX3N0cmluZyA8Y2hhclQsIHRy
YWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywg
QWxsb2NhdG9yPjo6CmZpbmRfbGFzdF9vZiAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3Ms
IHNpemVfdHlwZSBuKSBjb25zdAp7CiAgaWYgKGxlbmd0aCgpID09IDApCiAgICByZXR1cm4gbnBv
czsKICBzaXplX3QgeHBvcyA9IGxlbmd0aCAoKSAtIDE7CiAgaWYgKHhwb3MgPiBwb3MpCiAgICB4
cG9zID0gcG9zOwogIGZvciAoKyt4cG9zOyB4cG9zLS0gPiAwOykKICAgIGlmIChfZmluZCAocywg
ZGF0YSAoKSBbeHBvc10sIDAsIG4pICE9IG5wb3MpCiAgICAgIHJldHVybiB4cG9zOwogIHJldHVy
biBucG9zOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxs
b2NhdG9yPgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OnNpemVfdHlw
ZQpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OgpmaW5kX2ZpcnN0X25v
dF9vZiAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKSBjb25zdAp7
CiAgc2l6ZV90IHhwb3MgPSBwb3M7CiAgZm9yICg7IHhwb3MgPCBsZW5ndGggKCk7ICsreHBvcykK
ICAgIGlmIChfZmluZCAocywgZGF0YSAoKSBbeHBvc10sIDAsIG4pID09IG5wb3MpCiAgICAgIHJl
dHVybiB4cG9zOwogIHJldHVybiBucG9zOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNz
IHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj46OnNpemVfdHlwZQpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRv
cj46OgpmaW5kX2ZpcnN0X25vdF9vZiAoY2hhclQgYywgc2l6ZV90eXBlIHBvcykgY29uc3QKewog
IHNpemVfdCB4cG9zID0gcG9zOwogIGZvciAoOyB4cG9zIDwgbGVuZ3RoICgpOyArK3hwb3MpCiAg
ICBpZiAodHJhaXRzOjpuZSAoZGF0YSAoKSBbeHBvc10sIGMpKQogICAgICByZXR1cm4geHBvczsK
ICByZXR1cm4gbnBvczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNs
YXNzIEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+Ojpz
aXplX3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKZmluZF9s
YXN0X25vdF9vZiAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKSBj
b25zdAp7CiAgaWYgKGxlbmd0aCgpID09IDApCiAgICByZXR1cm4gbnBvczsKICBzaXplX3QgeHBv
cyA9IGxlbmd0aCAoKSAtIDE7CiAgaWYgKHhwb3MgPiBwb3MpCiAgICB4cG9zID0gcG9zOwogIGZv
ciAoKyt4cG9zOyB4cG9zLS0gPiAwOykKICAgIGlmIChfZmluZCAocywgZGF0YSAoKSBbeHBvc10s
IDAsIG4pID09IG5wb3MpCiAgICAgIHJldHVybiB4cG9zOwogIHJldHVybiBucG9zOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNpY19z
dHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OnNpemVfdHlwZQpiYXNpY19zdHJpbmcg
PGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OgpmaW5kX2xhc3Rfbm90X29mIChjaGFyVCBjLCBz
aXplX3R5cGUgcG9zKSBjb25zdAp7CiAgaWYgKGxlbmd0aCgpID09IDApCiAgICByZXR1cm4gbnBv
czsKICBzaXplX3QgeHBvcyA9IGxlbmd0aCAoKSAtIDE7CiAgaWYgKHhwb3MgPiBwb3MpCiAgICB4
cG9zID0gcG9zOwogIGZvciAoKyt4cG9zOyB4cG9zLS0gPiAwOykKICAgIGlmICh0cmFpdHM6Om5l
IChkYXRhICgpIFt4cG9zXSwgYykpCiAgICAgIHJldHVybiB4cG9zOwogIHJldHVybiBucG9zOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpp
bnQgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKY29tcGFyZSAoY29u
c3QgYmFzaWNfc3RyaW5nJiBzdHIsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKSBjb25zdAp7
CiAgZG8geyBpZiAoIHBvcyA+IGxlbmd0aCAoKSApIF9fb3V0X29mX3JhbmdlICgicG9zID4gbGVu
Z3RoICgpIik7IH0gd2hpbGUgKDApIDsKCiAgc2l6ZV90IHJsZW4gPSBsZW5ndGggKCkgLSBwb3M7
CiAgaWYgKHJsZW4gPiBuKQogICAgcmxlbiA9IG47CiAgaWYgKHJsZW4gPiBzdHIubGVuZ3RoICgp
KQogICAgcmxlbiA9IHN0ci5sZW5ndGggKCk7CiAgaW50IHIgPSB0cmFpdHM6OmNvbXBhcmUgKGRh
dGEgKCkgKyBwb3MsIHN0ci5kYXRhICgpLCBybGVuKTsKICBpZiAociAhPSAwKQogICAgcmV0dXJu
IHI7CiAgaWYgKHJsZW4gPT0gbikKICAgIHJldHVybiAwOwogIHJldHVybiAobGVuZ3RoICgpIC0g
cG9zKSAtIHN0ci5sZW5ndGggKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJh
aXRzLCBjbGFzcyBBbGxvY2F0b3I+CmludCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj46Ogpjb21wYXJlIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcywgc2l6ZV90
eXBlIG4pIGNvbnN0CnsKICBkbyB7IGlmICggcG9zID4gbGVuZ3RoICgpICkgX19vdXRfb2ZfcmFu
Z2UgKCJwb3MgPiBsZW5ndGggKCkiKTsgfSB3aGlsZSAoMCkgOwoKICBzaXplX3QgcmxlbiA9IGxl
bmd0aCAoKSAtIHBvczsKICBpZiAocmxlbiA+IG4pCiAgICBybGVuID0gbjsKICBpbnQgciA9IHRy
YWl0czo6Y29tcGFyZSAoZGF0YSAoKSArIHBvcywgcywgcmxlbik7CiAgaWYgKHIgIT0gMCkKICAg
IHJldHVybiByOwogIHJldHVybiAobGVuZ3RoICgpIC0gcG9zKSAtIG47Cn0KCgoKdGVtcGxhdGUg
PGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaXN0cmVhbSAmCm9w
ZXJhdG9yPj4gKGlzdHJlYW0gJmlzLCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9j
YXRvcj4gJnMpCnsKICBpbnQgdyA9IGlzLndpZHRoICgwKTsKICBpZiAoaXMuaXBmeDAgKCkpCiAg
ICB7CiAgICAgIHJlZ2lzdGVyIHN0cmVhbWJ1ZiAqc2IgPSBpcy5yZGJ1ZiAoKTsKICAgICAgcy5y
ZXNpemUgKDApOwogICAgICB3aGlsZSAoMSkKCXsKCSAgaW50IGNoID0gc2ItPnNidW1wYyAoKTsK
CSAgaWYgKGNoID09ICgtMSkgKQoJICAgIHsKCSAgICAgIGlzLnNldHN0YXRlIChpb3M6OmVvZmJp
dCk7CgkgICAgICBicmVhazsKCSAgICB9CgkgIGVsc2UgaWYgKHRyYWl0czo6aXNfZGVsIChjaCkp
CgkgICAgewoJICAgICAgc2ItPnN1bmdldGMgKCk7CgkgICAgICBicmVhazsKCSAgICB9CgkgIHMg
Kz0gc3RhdGljX2Nhc3Q8Y2hhclQ+IChjaCk7CgkgIGlmICgtLXcgPT0gMSkKCSAgICBicmVhazsK
CX0KICAgIH0KCiAgaXMuaXNmeCAoKTsKICBpZiAocy5sZW5ndGggKCkgPT0gMCkKICAgIGlzLnNl
dHN0YXRlIChpb3M6OmZhaWxiaXQpOwoKICByZXR1cm4gaXM7Cn0KCnRlbXBsYXRlIDxjbGFzcyBj
aGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Cm9zdHJlYW0gJgpvcGVyYXRvcjw8
IChvc3RyZWFtICZvLCBjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRv
cj4mIHMpCnsKICByZXR1cm4gby53cml0ZSAocy5kYXRhICgpLCBzLmxlbmd0aCAoKSk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlzdHJl
YW0mCmdldGxpbmUgKGlzdHJlYW0gJmlzLCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj4mIHMsIGNoYXJUIGRlbGltKQp7CiAgaWYgKGlzLmlwZngxICgpKQogICAgewogICAg
ICBfR19zaXplX3QgIGNvdW50ID0gMDsKICAgICAgc3RyZWFtYnVmICpzYiA9IGlzLnJkYnVmICgp
OwogICAgICBzLnJlc2l6ZSAoMCk7CgogICAgICB3aGlsZSAoMSkKCXsKCSAgaW50IGNoID0gc2It
PnNidW1wYyAoKTsKCSAgaWYgKGNoID09ICgtMSkgKQoJICAgIHsKCSAgICAgIGlzLnNldHN0YXRl
IChjb3VudCA9PSAwCgkJCSAgID8gKGlvczo6ZmFpbGJpdHxpb3M6OmVvZmJpdCkKCQkJICAgOiBp
b3M6OmVvZmJpdCk7CgkgICAgICBicmVhazsKCSAgICB9CgoJICArK2NvdW50OwoKCSAgaWYgKGNo
ID09IGRlbGltKQoJICAgIGJyZWFrOwoKCSAgcyArPSBzdGF0aWNfY2FzdDxjaGFyVD4gKGNoKTsK
CgkgIGlmIChzLmxlbmd0aCAoKSA9PSBzLm5wb3MgLSAxKQoJICAgIHsKCSAgICAgIGlzLnNldHN0
YXRlIChpb3M6OmZhaWxiaXQpOwoJICAgICAgYnJlYWs7CgkgICAgfQoJfQogICAgfQoKICAgCiAg
IAogIGlzLmlzZnggKCk7CgogIHJldHVybiBpczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBj
bGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRz
LCBBbGxvY2F0b3I+OjpSZXAKYmFzaWNfc3RyaW5nPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46
Om5pbFJlcCA9IHsgMCwgMCwgMSwgZmFsc2UgfTsKCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xh
c3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRy
YWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywg
QWxsb2NhdG9yPjo6bnBvczsKCn0gIAojIDY1NSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGQvYmFz
dHJpbmcuaCIgMiAzCgoKCiMgNiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJpbmciIDIgMwoKCmV4
dGVybiAiQysrIiB7CnR5cGVkZWYgYmFzaWNfc3RyaW5nIDxjaGFyPiBzdHJpbmc7CiAKfSAgCgoK
IyAxOCAiLi4vU3JjU2hhcmVkL0Vycm9ySGFuZGxpbmcuaCIgMgoKCiMgMSAiLi4vU3JjU2hhcmVk
L0hhcmR3YXJlL0VtQ1BVNjhLLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKIyAxICIuLi9TcmNTaGFy
ZWQvSGFyZHdhcmUvRW1DUFUuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgpjbGFzcyBFbVNlc3Npb247
CmNsYXNzIFNlc3Npb25GaWxlOwoKY2xhc3MgRW1DUFU7CmV4dGVybiBFbUNQVSoJZ0NQVTsKCmNs
YXNzIEVtQ1BVCnsKCXB1YmxpYzoKCQkgCgkJIAoJCSAKCgkJCQkJCQkJRW1DUFUgCQkJCShFbVNl
c3Npb24qKTsKCQl2aXJ0dWFsIAkJCQl+RW1DUFUJCQkJKHZvaWQpOwoKCQkgCgkJIAoJCSAKCgkJ
IAoJCSAKCQkgCgkJIAoJCSAKCQkgCgoJCXZpcnR1YWwgdm9pZCAJCQlSZXNldAkJCQkoQm9vbCBo
YXJkd2FyZVJlc2V0KTsKCQl2aXJ0dWFsIHZvaWQgCQkJU2F2ZQkJCQkoU2Vzc2lvbkZpbGUmKTsK
CQl2aXJ0dWFsIHZvaWQgCQkJTG9hZAkJCQkoU2Vzc2lvbkZpbGUmKTsKCgkJIAoKCQl2aXJ0dWFs
IHZvaWQgCQkJRXhlY3V0ZSAJCQkodm9pZCkgPSAwOwoJCXZpcnR1YWwgdm9pZCAJCQlDaGVja0Fm
dGVyQ3ljbGUJCSh2b2lkKSA9IDA7CgoJCSAKCgkJdmlydHVhbCBlbXVwdHIJCQlHZXRQQwkJCQko
dm9pZCkgPSAwOwoJCXZpcnR1YWwgZW11cHRyCQkJR2V0U1AJCQkJKHZvaWQpID0gMDsKCQl2aXJ0
dWFsIHVpbnQzMgkJCUdldFJlZ2lzdGVyCQkJKGludCkgPSAwOwoKCQl2aXJ0dWFsIHZvaWQJCQlT
ZXRQQwkJCQkoZW11cHRyKSA9IDA7CgkJdmlydHVhbCB2b2lkCQkJU2V0U1AJCQkJKGVtdXB0cikg
PSAwOwoJCXZpcnR1YWwgdm9pZAkJCVNldFJlZ2lzdGVyCQkJKGludCwgdWludDMyKSA9IDA7CgoJ
CXZpcnR1YWwgQm9vbAkJCVN0b3BwZWQJCQkJKHZvaWQpID0gMDsKCglwcm90ZWN0ZWQ6CgkJRW1T
ZXNzaW9uKgkJCQlmU2Vzc2lvbjsKfTsKCgojIDE3ICIuLi9TcmNTaGFyZWQvSGFyZHdhcmUvRW1D
UFU2OEsuaCIgMgoKCgoKCgoKc3RydWN0IHJlZ3N0cnVjdDsKCgpjb25zdCB1aW50MTYJa0FUcmFw
UmV0dXJuVHJhcE51bQk9IDB4MEM7CgogCgoKCmVudW0gRW1DUFU2OEtSZWdJRAp7CgllNjhLUmVn
SURfSW52YWxpZAkJPSAwLAkgCgllNjhLUmVnSURfRDAgCQkJPSAxLAoJZTY4S1JlZ0lEX0QxCQkJ
PSAyLAoJZTY4S1JlZ0lEX0QyCQkJPSAzLAoJZTY4S1JlZ0lEX0QzCQkJPSA0LAoJZTY4S1JlZ0lE
X0Q0IAkJCT0gNSwKCWU2OEtSZWdJRF9ENQkJCT0gNiwKCWU2OEtSZWdJRF9ENgkJCT0gNywKCWU2
OEtSZWdJRF9ENwkJCT0gOCwKCWU2OEtSZWdJRF9BMCAJCQk9IDksCgllNjhLUmVnSURfQTEJCQk9
IDEwLAoJZTY4S1JlZ0lEX0EyCQkJPSAxMSwKCWU2OEtSZWdJRF9BMwkJCT0gMTIsCgllNjhLUmVn
SURfQTQgCQkJPSAxMywKCWU2OEtSZWdJRF9BNQkJCT0gMTQsCgllNjhLUmVnSURfQTYJCQk9IDE1
LAoJZTY4S1JlZ0lEX1VTUAkJCT0gMTYsCgllNjhLUmVnSURfU1NQCQkJPSAxNywKCWU2OEtSZWdJ
RF9QQwkJCT0gMTgsCgllNjhLUmVnSURfU1IJCQk9IDE5Cn07CgoKZW51bSBFeGNlcHRpb25OdW1i
ZXIKewoJa0V4Y2VwdGlvbl9CdXNFcnIJPSAyLAkJIAoJa0V4Y2VwdGlvbl9BZGRyZXNzRXJyLAkJ
CSAKCWtFeGNlcHRpb25fSWxsZWdhbEluc3RyLAkJIAoJa0V4Y2VwdGlvbl9EaXZpZGVCeVplcm8s
CQkgCglrRXhjZXB0aW9uX0NoaywgCQkJCSAKCWtFeGNlcHRpb25fVHJhcCwJCQkJIAoJa0V4Y2Vw
dGlvbl9Qcml2aWxlZ2UsCQkJIAoJa0V4Y2VwdGlvbl9UcmFjZSwJCQkJIAoJa0V4Y2VwdGlvbl9B
VHJhcCwJCQkJIAoJa0V4Y2VwdGlvbl9GVHJhcCwJCQkJIAoJa0V4Y2VwdGlvbl9SZXNldmVkMTIs
CQkJIAoJa0V4Y2VwdGlvbl9Db3Byb2MsCQkJCSAKCWtFeGNlcHRpb25fRm9ybWF0RXJyLAkJCSAK
CWtFeGNlcHRpb25fVW5pbml0aWFsaXplZEludCwJIAoKCWtFeGNlcHRpb25fUmVzZXJ2ZWQwLAkJ
CSAKCWtFeGNlcHRpb25fUmVzZXJ2ZWQxLAoJa0V4Y2VwdGlvbl9SZXNlcnZlZDIsCglrRXhjZXB0
aW9uX1Jlc2VydmVkMywKCWtFeGNlcHRpb25fUmVzZXJ2ZWQ0LAoJa0V4Y2VwdGlvbl9SZXNlcnZl
ZDUsCglrRXhjZXB0aW9uX1Jlc2VydmVkNiwKCWtFeGNlcHRpb25fUmVzZXJ2ZWQ3LAoKCWtFeGNl
cHRpb25fU3B1cmlvdXNJbnQsIAkJIAoJa0V4Y2VwdGlvbl9BdXRvVmVjMSwJCQkgCglrRXhjZXB0
aW9uX0F1dG9WZWMyLAkJCSAKCWtFeGNlcHRpb25fQXV0b1ZlYzMsCQkJIAoJa0V4Y2VwdGlvbl9B
dXRvVmVjNCwJCQkgCglrRXhjZXB0aW9uX0F1dG9WZWM1LAkJCSAKCWtFeGNlcHRpb25fQXV0b1Zl
YzYsCQkJIAoJa0V4Y2VwdGlvbl9BdXRvVmVjNywJCQkgCgoJa0V4Y2VwdGlvbl9UcmFwMCwJCQkJ
IAoJa0V4Y2VwdGlvbl9UcmFwMSwKCWtFeGNlcHRpb25fVHJhcDIsCglrRXhjZXB0aW9uX1RyYXAz
LAoJa0V4Y2VwdGlvbl9UcmFwNCwKCWtFeGNlcHRpb25fVHJhcDUsCglrRXhjZXB0aW9uX1RyYXA2
LAoJa0V4Y2VwdGlvbl9UcmFwNywKCWtFeGNlcHRpb25fVHJhcDgsCQkJCSAKCWtFeGNlcHRpb25f
VHJhcDksCglrRXhjZXB0aW9uX1RyYXAxMCwKCWtFeGNlcHRpb25fVHJhcDExLAoJa0V4Y2VwdGlv
bl9UcmFwMTIsCglrRXhjZXB0aW9uX1RyYXAxMywJCQkJIAoJa0V4Y2VwdGlvbl9UcmFwMTQsCglr
RXhjZXB0aW9uX1RyYXAxNSwJCQkJIAoKCWtFeGNlcHRpb25fVW5hc3NpZ25lZDAsIAkJIAoJa0V4
Y2VwdGlvbl9VbmFzc2lnbmVkMSwKCWtFeGNlcHRpb25fVW5hc3NpZ25lZDIsCglrRXhjZXB0aW9u
X1VuYXNzaWduZWQzLAoJa0V4Y2VwdGlvbl9VbmFzc2lnbmVkNCwKCWtFeGNlcHRpb25fVW5hc3Np
Z25lZDUsCglrRXhjZXB0aW9uX1VuYXNzaWduZWQ2LAoJa0V4Y2VwdGlvbl9VbmFzc2lnbmVkNywK
CWtFeGNlcHRpb25fVW5hc3NpZ25lZDgsCglrRXhjZXB0aW9uX1VuYXNzaWduZWQ5LAoJa0V4Y2Vw
dGlvbl9VbmFzc2lnbmVkMTAsCglrRXhjZXB0aW9uX1VuYXNzaWduZWQxMSwKCWtFeGNlcHRpb25f
VW5hc3NpZ25lZDEyLAoJa0V4Y2VwdGlvbl9VbmFzc2lnbmVkMTMsCglrRXhjZXB0aW9uX1VuYXNz
aWduZWQxNCwKCWtFeGNlcHRpb25fVW5hc3NpZ25lZDE1LAoKCWtFeGNlcHRpb25fTGFzdEV4Y2Vw
dGlvbiwKCglrRXhjZXB0aW9uX1NvZnRCcmVhawk9IGtFeGNlcHRpb25fVHJhcDAgKyAwICwKCWtF
eGNlcHRpb25fSGFyZEJyZWFrCT0ga0V4Y2VwdGlvbl9UcmFwMCArIDggLAoJa0V4Y2VwdGlvbl9T
eXNDYWxsCQk9IGtFeGNlcHRpb25fVHJhcDAgKyAxNSAsCglrRXhjZXB0aW9uX0FUcmFwUmV0dXJu
CT0ga0V4Y2VwdGlvbl9UcmFwMCArIGtBVHJhcFJldHVyblRyYXBOdW0KfTsKCiAKCgoKCgoKCgoK
CgoKIyAxNTcgIi4uL1NyY1NoYXJlZC9IYXJkd2FyZS9FbUNQVTY4Sy5oIgoKCQogCnR5cGVkZWYg
dWludDMyCUVtT3Bjb2RlNjhLOwoKZW51bSBFbVN0YWNrQ2hhbmdlVHlwZQp7CglrU3RhY2tQb2lu
dGVyQ2hhbmdlZCwKCWtTdGFja1BvaW50ZXJJbmNyZW1lbnRlZCwKCWtTdGFja1BvaW50ZXJEZWNy
ZW1lbnRlZCwKCWtTdGFja1BvaW50ZXJLZXJuZWxTdGFja0hhY2sKfTsKCmNsYXNzIEVtQ1BVNjhL
Owp0eXBlZGVmIEJvb2wgKCpIb29rNjhLRXhjZXB0aW9uKQkoRXhjZXB0aW9uTnVtYmVyKTsKdHlw
ZWRlZiBCb29sICgqSG9vazY4S0pTUikJCQkoZW11cHRyIG9sZFBDLCBlbXVwdHIgZGVzdCk7CnR5
cGVkZWYgQm9vbCAoKkhvb2s2OEtKU1JfSW5kKQkJKGVtdXB0ciBvbGRQQywgZW11cHRyIGRlc3Qp
Owp0eXBlZGVmIHZvaWQgKCpIb29rNjhLTElOSykJCQkoaW50IGxpbmtTaXplKTsKdHlwZWRlZiBC
b29sICgqSG9vazY4S1JURSkJCQkoZW11cHRyIGRlc3QpOwp0eXBlZGVmIEJvb2wgKCpIb29rNjhL
UlRTKQkJCShlbXVwdHIgZGVzdCk7CnR5cGVkZWYgdm9pZCAoKkhvb2s2OEtOZXdQQykJCShlbXVw
dHIgZGVzdCk7CnR5cGVkZWYgdm9pZCAoKkhvb2s2OEtOZXdTUCkJCShFbVN0YWNrQ2hhbmdlVHlw
ZSk7Cgp0eXBlZGVmIHZlY3RvcjxIb29rNjhLRXhjZXB0aW9uPglIb29rNjhLRXhjZXB0aW9uTGlz
dDsKdHlwZWRlZiB2ZWN0b3I8SG9vazY4S0pTUj4JCQlIb29rNjhLSlNSTGlzdDsKdHlwZWRlZiB2
ZWN0b3I8SG9vazY4S0pTUl9JbmQ+CQlIb29rNjhLSlNSX0luZExpc3Q7CnR5cGVkZWYgdmVjdG9y
PEhvb2s2OEtMSU5LPgkJCUhvb2s2OEtMSU5LTGlzdDsKdHlwZWRlZiB2ZWN0b3I8SG9vazY4S1JU
RT4JCQlIb29rNjhLUlRFTGlzdDsKdHlwZWRlZiB2ZWN0b3I8SG9vazY4S1JUUz4JCQlIb29rNjhL
UlRTTGlzdDsKdHlwZWRlZiB2ZWN0b3I8SG9vazY4S05ld1BDPgkJSG9vazY4S05ld1BDTGlzdDsK
dHlwZWRlZiB2ZWN0b3I8SG9vazY4S05ld1NQPgkJSG9vazY4S05ld1NQTGlzdDsKCmNsYXNzIEVt
Q1BVNjhLOwpleHRlcm4gRW1DUFU2OEsqCWdDUFU2OEs7CgogCiAKIAogCiAKIAoKZXh0ZXJuICJD
IiB1aW50MzIJZ1N0YWNrSGlnaDsKZXh0ZXJuICJDIiB1aW50MzIJZ1N0YWNrTG93V2FybjsKZXh0
ZXJuICJDIiB1aW50MzIJZ1N0YWNrTG93OwpleHRlcm4gIkMiIHVpbnQzMglnS2VybmVsU3RhY2tP
dmVyZmxvd2VkOwoKCmNsYXNzIEVtQ1BVNjhLIDogcHVibGljIEVtQ1BVCnsKCXB1YmxpYzoKCQkg
CgkJIAoJCSAKCgkJCQkJCQkJRW1DUFU2OEsgCQkJKEVtU2Vzc2lvbiopOwoJCXZpcnR1YWwgCQkJ
CX5FbUNQVTY4SwkJCSh2b2lkKTsKCgkJIAoJCSAKCQkgCgoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJ
IAoKCQl2aXJ0dWFsIHZvaWQgCQkJUmVzZXQJCQkJKEJvb2wgaGFyZHdhcmVSZXNldCk7CgkJdmly
dHVhbCB2b2lkIAkJCVNhdmUJCQkJKFNlc3Npb25GaWxlJik7CgkJdmlydHVhbCB2b2lkIAkJCUxv
YWQJCQkJKFNlc3Npb25GaWxlJik7CgoJCSAKCgkJdmlydHVhbCB2b2lkIAkJCUV4ZWN1dGUgCQkJ
KHZvaWQpOwoJCXZpcnR1YWwgdm9pZCAJCQlDaGVja0FmdGVyQ3ljbGUJCSh2b2lkKTsKCgkJIAoK
CQl2aXJ0dWFsIGVtdXB0cgkJCUdldFBDCQkJCSh2b2lkKTsKCQl2aXJ0dWFsIGVtdXB0cgkJCUdl
dFNQCQkJCSh2b2lkKTsKCQl2aXJ0dWFsIHVpbnQzMgkJCUdldFJlZ2lzdGVyCQkJKGludCk7CgoJ
CXZpcnR1YWwgdm9pZAkJCVNldFBDCQkJCShlbXVwdHIpOwoJCXZpcnR1YWwgdm9pZAkJCVNldFNQ
CQkJCShlbXVwdHIpOwoJCXZpcnR1YWwgdm9pZAkJCVNldFJlZ2lzdGVyCQkJKGludCwgdWludDMy
KTsKCgkJdmlydHVhbCBCb29sCQkJU3RvcHBlZAkJCQkodm9pZCk7CgoJCSAKCgkJdm9pZAkJCQkJ
UHJvY2Vzc0V4Y2VwdGlvbgkJCShFeGNlcHRpb25OdW1iZXIpOwoJCXZvaWQJCQkJCVByb2Nlc3NJ
bGxlZ2FsSW5zdHJ1Y3Rpb24JKEVtT3Bjb2RlNjhLIG9wY29kZSk7CgkJaW50CQkJCQkJUHJvY2Vz
c0pTUgkJCQkJKGVtdXB0ciBvbGRQQywgZW11cHRyIGRlc3QpOwoJCWludAkJCQkJCVByb2Nlc3NK
U1JfSW5kCQkJCShlbXVwdHIgb2xkUEMsIGVtdXB0ciBkZXN0KTsKCQl2b2lkCQkJCQlQcm9jZXNz
TElOSwkJCQkJKGludCBsaW5rU2l6ZSk7CgkJaW50CQkJCQkJUHJvY2Vzc1JURQkJCQkJKGVtdXB0
ciBkZXN0KTsKCQlpbnQJCQkJCQlQcm9jZXNzUlRTCQkJCQkoZW11cHRyIGRlc3QpOwoJCXZvaWQJ
CQkJCUNoZWNrTmV3UEMJCQkJCShlbXVwdHIgZGVzdCk7CgkJdm9pZAkJCQkJQ2hlY2tOZXdTUAkJ
CQkJKEVtU3RhY2tDaGFuZ2VUeXBlKTsKCgkJIAoJCSAKCgkJdm9pZAkJCQkJSW5zdGFsbEhvb2tF
eGNlcHRpb24JKEV4Y2VwdGlvbk51bWJlciwKCQkJCQkJCQkJCQkJCQkgSG9vazY4S0V4Y2VwdGlv
bik7CgoJCXZvaWQJCQkJCUluc3RhbGxIb29rSlNSCQkJKEhvb2s2OEtKU1IpOwoJCXZvaWQJCQkJ
CUluc3RhbGxIb29rSlNSX0luZAkJKEhvb2s2OEtKU1JfSW5kKTsKCQl2b2lkCQkJCQlJbnN0YWxs
SG9va0xJTksJCQkoSG9vazY4S0xJTkspOwoJCXZvaWQJCQkJCUluc3RhbGxIb29rUlRTCQkJKEhv
b2s2OEtSVEUpOwoJCXZvaWQJCQkJCUluc3RhbGxIb29rUlRFCQkJKEhvb2s2OEtSVFMpOwoJCXZv
aWQJCQkJCUluc3RhbGxIb29rTmV3UEMJCShIb29rNjhLTmV3UEMpOwoJCXZvaWQJCQkJCUluc3Rh
bGxIb29rTmV3U1AJCShIb29rNjhLTmV3U1ApOwoKCQl2b2lkCQkJCQlSZW1vdmVIb29rRXhjZXB0
aW9uCQkoRXhjZXB0aW9uTnVtYmVyLAoJCQkJCQkJCQkJCQkJCSBIb29rNjhLRXhjZXB0aW9uKTsK
CgkJdm9pZAkJCQkJUmVtb3ZlSG9va0pTUgkJCShIb29rNjhLSlNSKTsKCQl2b2lkCQkJCQlSZW1v
dmVIb29rSlNSX0luZAkJKEhvb2s2OEtKU1JfSW5kKTsKCQl2b2lkCQkJCQlSZW1vdmVIb29rTElO
SwkJCShIb29rNjhLTElOSyk7CgkJdm9pZAkJCQkJUmVtb3ZlSG9va1JUUwkJCShIb29rNjhLUlRF
KTsKCQl2b2lkCQkJCQlSZW1vdmVIb29rUlRFCQkJKEhvb2s2OEtSVFMpOwoJCXZvaWQJCQkJCVJl
bW92ZUhvb2tOZXdQQwkJCShIb29rNjhLTmV3UEMpOwoJCXZvaWQJCQkJCVJlbW92ZUhvb2tOZXdT
UAkJCShIb29rNjhLTmV3U1ApOwoKCQkgCgkJIAoJCSAKCgkJdm9pZAkJCQkJR2V0UmVnaXN0ZXJz
CQkJKHJlZ3N0cnVjdCYgcmVnaXN0ZXJzKTsKCQl2b2lkCQkJCQlTZXRSZWdpc3RlcnMJCQkocmVn
c3RydWN0JiByZWdpc3RlcnMpOwoJCXZvaWQJCQkJCVVwZGF0ZVNSRnJvbVJlZ2lzdGVycwkodm9p
ZCk7CgkJdm9pZAkJCQkJVXBkYXRlUmVnaXN0ZXJzRnJvbVNSCSh2b2lkKTsKCgkJdWludDMyCQkJ
CQlHZXRDeWNsZUNvdW50CQkJKHZvaWQpOwoKCQl2b2lkCQkJCQlCdXNFcnJvcgkJCQkoZW11cHRy
IGFkZHJlc3MsIGxvbmcgc2l6ZSwgQm9vbCBmb3JSZWFkKTsKCQl2b2lkCQkJCQlBZGRyZXNzRXJy
b3IJCQkoZW11cHRyIGFkZHJlc3MsIGxvbmcgc2l6ZSwgQm9vbCBmb3JSZWFkKTsKCglwcml2YXRl
OgoJCUJvb2wgCQkJCQlFeGVjdXRlU3BlY2lhbAkJCSh2b2lkKTsKCQlCb29sCSAJCQkJRXhlY3V0
ZVN0b3BwZWRMb29wCQkodm9pZCk7CgoJCXZvaWQJCQkJCUN5Y2xlU2xvd2x5CQkJCShCb29sIHNs
ZWVwaW5nKTsKCQlCb29sCQkJCQlDaGVja0ZvckJyZWFrCQkJKHZvaWQpOwoKCQl2b2lkCQkJCQlQ
cm9jZXNzSW50ZXJydXB0CQkoaW50MzIgaW50ZXJydXB0KTsKCgkJdm9pZAkJCQkJSW5pdGlhbGl6
ZVVBRVRhYmxlcwkJKHZvaWQpOwoKCXByaXZhdGU6CgkJZW11cHRyCQkJCQlmTGFzdFRyYWNlQWRk
cmVzczsKCQl1aW50MzIJCQkJCWZDeWNsZUNvdW50OwoJCUhvb2s2OEtFeGNlcHRpb25MaXN0CWZF
eGNlcHRpb25IYW5kbGVyc1trRXhjZXB0aW9uX0xhc3RFeGNlcHRpb25dOwoJCUhvb2s2OEtKU1JM
aXN0CQkJZkhvb2tKU1I7CgkJSG9vazY4S0pTUl9JbmRMaXN0CQlmSG9va0pTUl9JbmQ7CgkJSG9v
azY4S0xJTktMaXN0CQkJZkhvb2tMSU5LOwoJCUhvb2s2OEtSVEVMaXN0CQkJZkhvb2tSVEU7CgkJ
SG9vazY4S1JUU0xpc3QJCQlmSG9va1JUUzsKCQlIb29rNjhLTmV3UENMaXN0CQlmSG9va05ld1BD
OwoJCUhvb2s2OEtOZXdTUExpc3QJCWZIb29rTmV3U1A7CgoKCgoKCgoKCgoKCn07CgoKIyAyMCAi
Li4vU3JjU2hhcmVkL0Vycm9ySGFuZGxpbmcuaCIgMgoKIyAxICIuLi9TcmNTaGFyZWQvRW1EbGcu
aCIgMQogCiAKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1NyY1NoYXJlZC9FbUZpbGVJbXBvcnQuaCIg
MQogCiAKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1NyY1NoYXJlZC9FbURpclJlZi5oIiAxCiAKIAoK
CgoKCgoKCgoKCgoKCgoKCmNsYXNzIEVtRmlsZVJlZjsKY2xhc3MgRW1EaXJSZWY7Cgp0eXBlZGVm
IHZlY3RvcjxFbUZpbGVSZWY+CUVtRmlsZVJlZkxpc3Q7CnR5cGVkZWYgdmVjdG9yPEVtRGlyUmVm
PglFbURpclJlZkxpc3Q7CgpjbGFzcyBFbURpclJlZgp7CglwdWJsaWM6CgkJCQkJCQkJRW1EaXJS
ZWYJCSh2b2lkKTsKCQkJCQkJCQlFbURpclJlZgkJKGNvbnN0IEVtRGlyUmVmJik7CgkJCQkJCQkJ
RW1EaXJSZWYJCShjb25zdCBjaGFyKik7CgkJCQkJCQkJRW1EaXJSZWYJCShjb25zdCBzdHJpbmcm
KTsKCQkJCQkJCQlFbURpclJlZgkJKGNvbnN0IEVtRGlyUmVmJiwgY29uc3QgY2hhciopOwoJCQkJ
CQkJCUVtRGlyUmVmCQkoY29uc3QgRW1EaXJSZWYmLCBjb25zdCBzdHJpbmcmKTsKCgoKCgoJCQkJ
CQkJCX5FbURpclJlZgkJKHZvaWQpOwoKCQlFbURpclJlZiYJCQkJb3BlcmF0b3I9CQkoY29uc3Qg
RW1EaXJSZWYmKTsKCgkJQm9vbAkJCQkJSXNTcGVjaWZpZWQJCSh2b2lkKSBjb25zdDsKCQlCb29s
CQkJCQlFeGlzdHMJCQkodm9pZCkgY29uc3Q7CgkJdm9pZAkJCQkJQ3JlYXRlCQkJKHZvaWQpIGNv
bnN0OwoKCQlzdHJpbmcJCQkJCUdldE5hbWUJCQkodm9pZCkgY29uc3Q7CgkJRW1EaXJSZWYJCQkJ
R2V0UGFyZW50CQkodm9pZCkgY29uc3Q7CgkJc3RyaW5nCQkJCQlHZXRGdWxsUGF0aAkJKHZvaWQp
IGNvbnN0OwoKCQl2b2lkCQkJCQlHZXRDaGlsZHJlbgkJKEVtRmlsZVJlZkxpc3QqLCBFbURpclJl
Zkxpc3QqKSBjb25zdDsKCgkJYm9vbAkJCQkJb3BlcmF0b3I9PQkJKGNvbnN0IEVtRGlyUmVmJikg
Y29uc3Q7CgkJYm9vbAkJCQkJb3BlcmF0b3IhPQkJKGNvbnN0IEVtRGlyUmVmJikgY29uc3Q7CgkJ
Ym9vbAkJCQkJb3BlcmF0b3I8CQkoY29uc3QgRW1EaXJSZWYmKSBjb25zdDsKCQlib29sCQkJCQlv
cGVyYXRvcj4JCShjb25zdCBFbURpclJlZiYpIGNvbnN0OwoKCQlib29sCQkJCQlGcm9tUHJlZlN0
cmluZwkoY29uc3Qgc3RyaW5nJik7CgkJc3RyaW5nCQkJCQlUb1ByZWZTdHJpbmcJKHZvaWQpIGNv
bnN0OwoKCQlzdGF0aWMgRW1EaXJSZWYJCQlHZXRFbXVsYXRvckRpcmVjdG9yeQkodm9pZCk7CgkJ
c3RhdGljIEVtRGlyUmVmCQkJR2V0UHJlZnNEaXJlY3RvcnkJCSh2b2lkKTsKCiMgNzkgIi4uL1Ny
Y1NoYXJlZC9FbURpclJlZi5oIgoKCgoJcHJpdmF0ZToKCQl2b2lkCQkJCQlNYXliZUFwcGVuZFNs
YXNoCSh2b2lkKTsKCQl2b2lkCQkJCQlNYXliZVJlc29sdmVMaW5rCSh2b2lkKTsKCglwcml2YXRl
OgoJCXN0cmluZwkJCQkJZkRpclBhdGg7Cgp9OwoKCiMgMTcgIi4uL1NyY1NoYXJlZC9FbUZpbGVJ
bXBvcnQuaCIgMgoKCgpjbGFzcyBFbUV4Z01ncjsKY2xhc3MgRW1FeGdNZ3JJbXBvcnRXcmFwcGVy
OwpjbGFzcyBFbVN0cmVhbTsKCmVudW0gRW1GaWxlSW1wb3J0TWV0aG9kCnsKCWtNZXRob2RCZXN0
LAoJa01ldGhvZEhvbWVicmV3LAoJa01ldGhvZEV4Z01ncgp9OwoKCmNsYXNzIEVtRmlsZUltcG9y
dAp7CglwdWJsaWM6CgkJCQkJCQkJRW1GaWxlSW1wb3J0CQkJKEVtU3RyZWFtJiBzdHJlYW0sCgkJ
CQkJCQkJCQkJCQkJIEVtRmlsZUltcG9ydE1ldGhvZCBtZXRob2QpOwoJCQkJCQkJCX5FbUZpbGVJ
bXBvcnQJCQkodm9pZCk7CgoJCXN0YXRpYyBFcnJDb2RlCQkJTG9hZFBhbG1GaWxlCQkJKGNvbnN0
IHZvaWQqLCB1aW50MzIsIEVtRmlsZUltcG9ydE1ldGhvZCwgTG9jYWxJRCYpOwoJCXN0YXRpYyBF
cnJDb2RlCQkJTG9hZFBhbG1GaWxlTGlzdAkJKGNvbnN0IEVtRmlsZVJlZkxpc3QmLCBFbUZpbGVJ
bXBvcnRNZXRob2QsIHZlY3RvcjxMb2NhbElEPiYpOwoKCQlzdGF0aWMgRXJyQ29kZQkJCUluc3Rh
bGxFeGdNZ3JMaWIJCSh2b2lkKTsKCQlzdGF0aWMgQm9vbAkJCQlDYW5Vc2VFeGdNZ3IJCQkodm9p
ZCk7CgoJCSAKCgkJRXJyQ29kZQkJCQkJQ29udGludWUJCQkJKHZvaWQpOwoJCUVyckNvZGUJCQkJ
CUNhbmNlbAkJCQkJKHZvaWQpOwoJCUJvb2wJCQkJCURvbmUJCQkJCSh2b2lkKTsKCQlsb25nCQkJ
CQlHZXRQcm9ncmVzcwkJCQkodm9pZCk7CgkJTG9jYWxJRAkJCQkJR2V0TG9jYWxJRAkJCQkodm9p
ZCk7CgoJCXZvaWQJCQkJCVNldFJlc3VsdAkJCQkoRXJyKTsKCQl2b2lkCQkJCQlTZXRSZXN1bHQJ
CQkJKEVyckNvZGUpOwoJCXZvaWQJCQkJCVNldERvbmUJCQkJCSh2b2lkKTsKCgkJc3RhdGljIGxv
bmcJCQkJQ2FsY3VsYXRlUHJvZ3Jlc3NNYXgJKGNvbnN0IEVtRmlsZVJlZkxpc3QmLCBFbUZpbGVJ
bXBvcnRNZXRob2QgbWV0aG9kKTsKCglwcml2YXRlOgoJCXZvaWQJCQkJCUluY3JlbWVudGFsSW5z
dGFsbAkJKHZvaWQpOwoKCQl2b2lkCQkJCQlFeGdNZ3JJbnN0YWxsU3RhcnQJCSh2b2lkKTsKCQl2
b2lkCQkJCQlFeGdNZ3JJbnN0YWxsTWlkZGxlCQkodm9pZCk7CgkJdm9pZAkJCQkJRXhnTWdySW5z
dGFsbEVuZAkJKHZvaWQpOwoJCXZvaWQJCQkJCUV4Z01nckluc3RhbGxDYW5jZWwJCSh2b2lkKTsK
CgkJdm9pZAkJCQkJSG9tZUJyZXdJbnN0YWxsU3RhcnQJKHZvaWQpOwoJCXZvaWQJCQkJCUhvbWVC
cmV3SW5zdGFsbE1pZGRsZQkodm9pZCk7CgkJdm9pZAkJCQkJSG9tZUJyZXdJbnN0YWxsRW5kCQko
dm9pZCk7CgkJdm9pZAkJCQkJSG9tZUJyZXdJbnN0YWxsQ2FuY2VsCSh2b2lkKTsKCgkJdm9pZAkJ
CQkJVmFsaWRhdGVTdHJlYW0JCQkodm9pZCk7CgkJdm9pZAkJCQkJRGVsZXRlQ3VycmVudERhdGFi
YXNlCSh2b2lkKTsKCglwcml2YXRlOgoJCUJvb2wJCQkJCWZVc2luZ0V4Z01ncjsKCQlCb29sCQkJ
CQlmR290b1doZW5Eb25lOwoJCWxvbmcJCQkJCWZTdGF0ZTsKCQlFcnJDb2RlCQkJCQlmRXJyb3I7
CgkJRW1TdHJlYW0mCQkJCWZTdHJlYW07CgoJCSAKCQlFbUV4Z01ncioJCQkJZkV4Z01nclN0cmVh
bTsKCQlFbUV4Z01nckltcG9ydFdyYXBwZXIqCWZFeGdNZ3JJbXBvcnQ7CgkJQm9vbAkJCQkJZk9s
ZEFjY2VwdEJlYW1TdGF0ZTsKCgkJIAoJCXZvaWQqCQkJCQlmRmlsZUJ1ZmZlcjsKCQlsb25nCQkJ
CQlmRmlsZUJ1ZmZlclNpemU7CgkJTG9jYWxJRAkJCQkJZkRCSUQ7CgkJVUludDE2CQkJCQlmQ2Fy
ZE5vOwoJCURtT3BlblJlZgkJCQlmT3BlbklEOwoJCWxvbmcJCQkJCWZDdXJyZW50RW50cnk7Cn07
CgoKIyAxNyAiLi4vU3JjU2hhcmVkL0VtRGxnLmgiIDIKCiMgMSAiLi4vU3JjU2hhcmVkL0VtRmls
ZVJlZi5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCmVudW0gRW1GaWxlQ3JlYXRvcgp7CglrRmls
ZUNyZWF0b3JOb25lLAoJa0ZpbGVDcmVhdG9yRW11bGF0b3IsCglrRmlsZUNyZWF0b3JJbnN0YWxs
ZXIsCglrRmlsZUNyZWF0b3JUZWFjaFRleHQsCglrRmlsZUNyZWF0b3JDb2RlV2FycmlvciwKCWtG
aWxlQ3JlYXRvckNvZGVXYXJyaW9yUHJvZmlsZXIsCgkKCWtGaWxlQ3JlYXRvckxhc3QKfTsKdHlw
ZWRlZiB2ZWN0b3I8RW1GaWxlQ3JlYXRvcj4JRW1GaWxlQ3JlYXRvckxpc3Q7CgplbnVtIEVtRmls
ZVR5cGUKewoJa0ZpbGVUeXBlTm9uZSwKCWtGaWxlVHlwZUFwcGxpY2F0aW9uLAoJa0ZpbGVUeXBl
Uk9NLAoJa0ZpbGVUeXBlU2Vzc2lvbiwKCWtGaWxlVHlwZUV2ZW50cywKCWtGaWxlVHlwZVByZWZl
cmVuY2UsCglrRmlsZVR5cGVQYWxtQXBwLAoJa0ZpbGVUeXBlUGFsbURCLAoJa0ZpbGVUeXBlUGFs
bVFBLAoJa0ZpbGVUeXBlVGV4dCwKCWtGaWxlVHlwZVBpY3R1cmUsCglrRmlsZVR5cGVTa2luLAoJ
a0ZpbGVUeXBlUHJvZmlsZSwKCWtGaWxlVHlwZVBhbG1BbGwsCglrRmlsZVR5cGVBbGwsCgkKCWtG
aWxlVHlwZUxhc3QKfTsKCmVudW0gRW1GaWxlQXR0cgp7CglrRmlsZUF0dHJSZWFkT25seT0xLAoJ
a0ZpbGVBdHRySGlkZGVuPTIsCglrRmlsZUF0dHJTeXN0ZW09NCwKCQoJa0ZpbGVBdHRyTGFzdAp9
OwoKdHlwZWRlZiB2ZWN0b3I8RW1GaWxlVHlwZT4JCUVtRmlsZVR5cGVMaXN0OwoKY2xhc3MgRW1G
aWxlUmVmCnsKCXB1YmxpYzoKCQkJCQkJCQlFbUZpbGVSZWYJCSh2b2lkKTsKCQkJCQkJCQlFbUZp
bGVSZWYJCShjb25zdCBFbUZpbGVSZWYmKTsKCQkJCQkJCQlFbUZpbGVSZWYJCShjb25zdCBjaGFy
Kik7CgkJCQkJCQkJRW1GaWxlUmVmCQkoY29uc3Qgc3RyaW5nJik7CgkJCQkJCQkJRW1GaWxlUmVm
CQkoY29uc3QgRW1EaXJSZWYmLCBjb25zdCBjaGFyKik7CgkJCQkJCQkJRW1GaWxlUmVmCQkoY29u
c3QgRW1EaXJSZWYmLCBjb25zdCBzdHJpbmcmKTsKCgoKCgoJCQkJCQkJCX5FbUZpbGVSZWYJCSh2
b2lkKTsKCgkJRW1GaWxlUmVmJgkJCQlvcGVyYXRvcj0JCShjb25zdCBFbUZpbGVSZWYmKTsKCgkJ
Qm9vbAkJCQkJSXNTcGVjaWZpZWQJCSh2b2lkKSBjb25zdDsKCQlCb29sCQkJCQlFeGlzdHMJCQko
dm9pZCkgY29uc3Q7CgkJdm9pZAkJCQkJRGVsZXRlCQkJKHZvaWQpIGNvbnN0OwoKCQlCb29sCQkJ
CQlJc1R5cGUJCQkoRW1GaWxlVHlwZSkgY29uc3Q7CgkJdm9pZAkJCQkJU2V0Q3JlYXRvckFuZFR5
cGUoRW1GaWxlQ3JlYXRvciBjcmVhdG9yLAoJCQkJCQkJCQkJCQkgRW1GaWxlVHlwZSBmaWxlVHlw
ZSkgY29uc3Q7CgkJaW50CQkJCQkJR2V0QXR0cgkJCShpbnQgKiBhdHRyKSBjb25zdDsKCQlpbnQJ
CQkJCQlTZXRBdHRyCQkJKGludCBhdHRyKSBjb25zdDsKCgkJc3RyaW5nCQkJCQlHZXROYW1lCQkJ
KHZvaWQpIGNvbnN0OwoJCUVtRGlyUmVmCQkJCUdldFBhcmVudAkJKHZvaWQpIGNvbnN0OwoJCXN0
cmluZwkJCQkJR2V0RnVsbFBhdGgJCSh2b2lkKSBjb25zdDsKCgkJYm9vbAkJCQkJb3BlcmF0b3I9
PQkJKGNvbnN0IEVtRmlsZVJlZiYpIGNvbnN0OwoJCWJvb2wJCQkJCW9wZXJhdG9yIT0JCShjb25z
dCBFbUZpbGVSZWYmKSBjb25zdDsKCQlib29sCQkJCQlvcGVyYXRvcjwJCShjb25zdCBFbUZpbGVS
ZWYmKSBjb25zdDsKCQlib29sCQkJCQlvcGVyYXRvcj4JCShjb25zdCBFbUZpbGVSZWYmKSBjb25z
dDsKCgkJYm9vbAkJCQkJRnJvbVByZWZTdHJpbmcJKGNvbnN0IHN0cmluZyYpOwoJCXN0cmluZwkJ
CQkJVG9QcmVmU3RyaW5nCSh2b2lkKSBjb25zdDsKCgkJc3RhdGljIHZvaWQJCQkJU2V0RW11bGF0
b3JSZWYJKGNvbnN0IEVtRmlsZVJlZiYpOwoJCXN0YXRpYyBFbUZpbGVSZWYJCUdldEVtdWxhdG9y
UmVmCSh2b2lkKTsKCiMgMTI0ICIuLi9TcmNTaGFyZWQvRW1GaWxlUmVmLmgiCgoKCglwcml2YXRl
OgoJCXZvaWQJCQkJCU1heWJlUHJlcGVuZEN1cnJlbnREaXJlY3RvcnkgKHZvaWQpOwoJCXZvaWQJ
CQkJCU1heWJlUmVzb2x2ZUxpbmsJKHZvaWQpOwoJCXZvaWQJCQkJCU1heWJlTm9ybWFsaXplCQko
dm9pZCk7CgoJcHJpdmF0ZToKCQlzdHJpbmcJCQkJCWZGaWxlUGF0aDsKCn07CgoKIyAxOCAiLi4v
U3JjU2hhcmVkL0VtRGxnLmgiIDIKCiMgMSAiLi4vU3JjU2hhcmVkL0VtVHJhbnNwb3J0LmgiIDEK
IAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKZW51bSBFbVRyYW5zcG9ydFR5cGUKewoJa1RyYW5zcG9y
dE51bGwsCQkgCglrVHJhbnNwb3J0U2VyaWFsLAkgCglrVHJhbnNwb3J0U29ja2V0LAkgCglrVHJh
bnNwb3J0VVNCLAkJIAoKCWtUcmFuc3BvcnRVbmtub3duCn07CgpjbGFzcyBFbVRyYW5zcG9ydDsK
CgogCiAKCmNsYXNzIEVtVHJhbnNwb3J0RGVzY3JpcHRvcgp7CglwdWJsaWM6CgkJCQkJCQkJRW1U
cmFuc3BvcnREZXNjcmlwdG9yCSh2b2lkKTsKCQkJCQkJCQlFbVRyYW5zcG9ydERlc2NyaXB0b3IJ
KEVtVHJhbnNwb3J0VHlwZSk7CgkJCQkJCQkJRW1UcmFuc3BvcnREZXNjcmlwdG9yCShFbVRyYW5z
cG9ydFR5cGUsIGNvbnN0IHN0cmluZyYpOwoJCQkJCQkJCUVtVHJhbnNwb3J0RGVzY3JpcHRvcgko
Y29uc3Qgc3RyaW5nJik7CgkJCQkJCQkJRW1UcmFuc3BvcnREZXNjcmlwdG9yCShjb25zdCBFbVRy
YW5zcG9ydERlc2NyaXB0b3ImKTsKCQkJCQkJCQl+RW1UcmFuc3BvcnREZXNjcmlwdG9yCSh2b2lk
KTsKCQlFbVRyYW5zcG9ydERlc2NyaXB0b3ImCW9wZXJhdG9yPQkJCQkoY29uc3QgRW1UcmFuc3Bv
cnREZXNjcmlwdG9yJik7CgoJCUVtVHJhbnNwb3J0KgkJCUNyZWF0ZVRyYW5zcG9ydAkJCSh2b2lk
KSBjb25zdDsKCgkJc3RyaW5nCQkJCQlHZXRNZW51TmFtZQkJCQkodm9pZCkgY29uc3Q7CSAKCQlz
dHJpbmcJCQkJCUdldERlc2NyaXB0b3IJCQkodm9pZCkgY29uc3Q7CSAKCQlzdHJpbmcJCQkJCUdl
dFNjaGVtZQkJCQkodm9pZCkgY29uc3Q7CSAKCQlzdHJpbmcJCQkJCUdldFNjaGVtZVNwZWNpZmlj
CQkodm9pZCkgY29uc3Q7CSAKCQlFbVRyYW5zcG9ydFR5cGUJCQlHZXRUeXBlCQkJCQkodm9pZCkg
Y29uc3Q7CSAKCgkJc3RhdGljIHN0cmluZwkJCUdldFNjaGVtZVByZWZpeAkJCShFbVRyYW5zcG9y
dFR5cGUpOwkgCgoJCWJvb2wJCQkJCW9wZXJhdG9yPT0JCQkJKGNvbnN0IEVtVHJhbnNwb3J0RGVz
Y3JpcHRvciYpIGNvbnN0OwoKCXByaXZhdGU6CgkJQm9vbAkJCQkJUHJ2VGVzdFR5cGUJCQkJKEVt
VHJhbnNwb3J0VHlwZSB0eXBlKSBjb25zdDsKCglwcml2YXRlOgoJCXN0cmluZwkJCQkJZkRlc2Ny
aXB0b3I7Cn07Cgp0eXBlZGVmIHZlY3RvcjxFbVRyYW5zcG9ydERlc2NyaXB0b3I+CUVtVHJhbnNw
b3J0RGVzY3JpcHRvckxpc3Q7CgoKY2xhc3MgRW1UcmFuc3BvcnQKewoJcHVibGljOgoJCXN0cnVj
dCBDb25maWcKCQl7CgkJCQkJCQkJCUNvbmZpZwkJCSh2b2lkKSB7fTsKCQkJdmlydHVhbAkJCQkJ
fkNvbmZpZwkJCSh2b2lkKSB7fTsKCgkJCXZpcnR1YWwgRW1UcmFuc3BvcnQqCU5ld1RyYW5zcG9y
dAkodm9pZCkgPSAwOwoJCQl2aXJ0dWFsIEVtVHJhbnNwb3J0KglHZXRUcmFuc3BvcnQJKHZvaWQp
ID0gMDsKCQl9OwoKCXB1YmxpYzoKCQkJCQkJCQlFbVRyYW5zcG9ydAkJCSh2b2lkKTsKCQl2aXJ0
dWFsCQkJCQl+RW1UcmFuc3BvcnQJCSh2b2lkKTsKCgkJdmlydHVhbCBFcnJDb2RlCQkJT3BlbgkJ
CQkodm9pZCk7CgkJdmlydHVhbCBFcnJDb2RlCQkJQ2xvc2UJCQkJKHZvaWQpOwoKCQl2aXJ0dWFs
IEVyckNvZGUJCQlSZWFkCQkJCShsb25nJiwgdm9pZCopOwoJCXZpcnR1YWwgRXJyQ29kZQkJCVdy
aXRlCQkJCShsb25nJiwgY29uc3Qgdm9pZCopOwoKCQl2aXJ0dWFsIEJvb2wJCQlDYW5SZWFkCQkJ
CSh2b2lkKTsKCQl2aXJ0dWFsIEJvb2wJCQlDYW5Xcml0ZQkJCSh2b2lkKTsKCgkJdmlydHVhbCBs
b25nCQkJQnl0ZXNJbkJ1ZmZlcgkJKGxvbmcgbWluQnl0ZXMpOwoKCQl2aXJ0dWFsIHN0cmluZwkJ
CUdldFNwZWNpZmljTmFtZQkJKHZvaWQpID0gMDsKCgkJc3RhdGljIHZvaWQJCQkJQ2xvc2VBbGxU
cmFuc3BvcnRzCSh2b2lkKTsKfTsKCgpjbGFzcyBFbVRyYW5zcG9ydE51bGwgOiBwdWJsaWMgRW1U
cmFuc3BvcnQKewoJcHVibGljOgoKCQkgCgkJIAoJCXN0cnVjdCBDb25maWdOdWxsIDogcHVibGlj
IEVtVHJhbnNwb3J0OjpDb25maWcKCQl7CgkJCQkJCQkJCUNvbmZpZ051bGwJCSh2b2lkKSB7fTsK
CQkJdmlydHVhbAkJCQkJfkNvbmZpZ051bGwJCSh2b2lkKSB7fTsKCgkJCXZpcnR1YWwgRW1UcmFu
c3BvcnQqCU5ld1RyYW5zcG9ydAkodm9pZCkgeyByZXR1cm4gbmV3IEVtVHJhbnNwb3J0TnVsbDsg
fTsKCQkJdmlydHVhbCBFbVRyYW5zcG9ydCoJR2V0VHJhbnNwb3J0CSh2b2lkKTsKCQl9OwoKCXB1
YmxpYzoKCQkJCQkJCQlFbVRyYW5zcG9ydE51bGwJCQkodm9pZCk7CgkJCQkJCQkJRW1UcmFuc3Bv
cnROdWxsCQkJKGNvbnN0IEVtVHJhbnNwb3J0RGVzY3JpcHRvciYpOwoJCQkJCQkJCUVtVHJhbnNw
b3J0TnVsbAkJCShjb25zdCBDb25maWdOdWxsJik7CgkJdmlydHVhbAkJCQkJfkVtVHJhbnNwb3J0
TnVsbAkJKHZvaWQpOwoKCQl2aXJ0dWFsIEVyckNvZGUJCQlPcGVuCQkJCQkodm9pZCk7CgkJdmly
dHVhbCBFcnJDb2RlCQkJQ2xvc2UJCQkJCSh2b2lkKTsKCgkJdmlydHVhbCBFcnJDb2RlCQkJUmVh
ZAkJCQkJKGxvbmcmLCB2b2lkKik7CgkJdmlydHVhbCBFcnJDb2RlCQkJV3JpdGUJCQkJCShsb25n
JiwgY29uc3Qgdm9pZCopOwoKCQl2aXJ0dWFsIEJvb2wJCQlDYW5SZWFkCQkJCQkodm9pZCk7CgkJ
dmlydHVhbCBCb29sCQkJQ2FuV3JpdGUJCQkJKHZvaWQpOwoKCQl2aXJ0dWFsIGxvbmcJCQlCeXRl
c0luQnVmZmVyCQkJKGxvbmcgbWluQnl0ZXMpOwoKCQl2aXJ0dWFsIHN0cmluZwkJCUdldFNwZWNp
ZmljTmFtZQkJCSh2b2lkKTsKCgkJc3RhdGljIHZvaWQJCQkJR2V0RGVzY3JpcHRvckxpc3QJCShF
bVRyYW5zcG9ydERlc2NyaXB0b3JMaXN0Jik7Cn07CgoKCiMgMTkgIi4uL1NyY1NoYXJlZC9FbURs
Zy5oIiAyCgojIDEgIi4uL1NyY1NoYXJlZC9FbVRyYW5zcG9ydFNlcmlhbC5oIiAxCiAKIAoKCgoK
CgoKCgoKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL21hcCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3Vu
LXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3RyZWUuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgv
Mi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2Z1bmN0aW9uLmgiIDEgMwogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCnRlbXBsYXRlIDxjbGFzcyBfQXJnLCBj
bGFzcyBfUmVzdWx0PgpzdHJ1Y3QgdW5hcnlfZnVuY3Rpb24gewogIHR5cGVkZWYgX0FyZyBhcmd1
bWVudF90eXBlOwogIHR5cGVkZWYgX1Jlc3VsdCByZXN1bHRfdHlwZTsKfTsKCnRlbXBsYXRlIDxj
bGFzcyBfQXJnMSwgY2xhc3MgX0FyZzIsIGNsYXNzIF9SZXN1bHQ+CnN0cnVjdCBiaW5hcnlfZnVu
Y3Rpb24gewogIHR5cGVkZWYgX0FyZzEgZmlyc3RfYXJndW1lbnRfdHlwZTsKICB0eXBlZGVmIF9B
cmcyIHNlY29uZF9hcmd1bWVudF90eXBlOwogIHR5cGVkZWYgX1Jlc3VsdCByZXN1bHRfdHlwZTsK
fTsgICAgICAKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBwbHVzIDogcHVibGljIGJpbmFy
eV9mdW5jdGlvbjxfVHAsX1RwLF9UcD4gewogIF9UcCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194
LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ICsgX195OyB9Cn07Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgbWludXMgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxf
VHAsX1RwPiB7CiAgX1RwIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195
KSBjb25zdCB7IHJldHVybiBfX3ggLSBfX3k7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0
cnVjdCBtdWx0aXBsaWVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLF9UcD4gewog
IF9UcCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyBy
ZXR1cm4gX194ICogX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgZGl2aWRl
cyA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxfVHA+IHsKICBfVHAgb3BlcmF0b3Io
KShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCAvIF9f
eTsgfQp9OwoKIAoKdGVtcGxhdGUgPGNsYXNzIF9UcD4gaW5saW5lIF9UcCBpZGVudGl0eV9lbGVt
ZW50KHBsdXM8X1RwPikgewogIHJldHVybiBfVHAoMCk7Cn0KdGVtcGxhdGUgPGNsYXNzIF9UcD4g
aW5saW5lIF9UcCBpZGVudGl0eV9lbGVtZW50KG11bHRpcGxpZXM8X1RwPikgewogIHJldHVybiBf
VHAoMSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBtb2R1bHVzIDogcHVibGljIGJp
bmFyeV9mdW5jdGlvbjxfVHAsX1RwLF9UcD4gCnsKICBfVHAgb3BlcmF0b3IoKShjb25zdCBfVHAm
IF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCAlIF9feTsgfQp9OwoKdGVt
cGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IG5lZ2F0ZSA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxf
VHAsX1RwPiAKewogIF9UcCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194KSBjb25zdCB7IHJldHVy
biAtX194OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgZXF1YWxfdG8gOiBwdWJs
aWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4gCnsKICBib29sIG9wZXJhdG9yKCkoY29u
c3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggPT0gX195OyB9
Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3Qgbm90X2VxdWFsX3RvIDogcHVibGljIGJp
bmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+IAp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9U
cCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ICE9IF9feTsgfQp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGdyZWF0ZXIgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0
aW9uPF9UcCxfVHAsYm9vbD4gCnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNv
bnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggPiBfX3k7IH0KfTsKCnRlbXBsYXRlIDxj
bGFzcyBfVHA+CnN0cnVjdCBsZXNzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJv
b2w+IAp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkg
Y29uc3QgeyByZXR1cm4gX194IDwgX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1
Y3QgZ3JlYXRlcl9lcXVhbCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxib29sPgp7
CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3Qg
eyByZXR1cm4gX194ID49IF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGxl
c3NfZXF1YWwgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4gCnsKICBib29s
IG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVy
biBfX3ggPD0gX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgbG9naWNhbF9h
bmQgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4KewogIGJvb2wgb3BlcmF0
b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCAm
JiBfX3k7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBsb2dpY2FsX29yIDogcHVi
bGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+CnsKICBib29sIG9wZXJhdG9yKCkoY29u
c3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggfHwgX195OyB9
Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgbG9naWNhbF9ub3QgOiBwdWJsaWMgdW5h
cnlfZnVuY3Rpb248X1RwLGJvb2w+CnsKICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gp
IGNvbnN0IHsgcmV0dXJuICFfX3g7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfUHJlZGljYXRlPgpj
bGFzcyB1bmFyeV9uZWdhdGUKICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfUHJl
ZGljYXRlOjphcmd1bWVudF90eXBlLCBib29sPiB7CnByb3RlY3RlZDoKICBfUHJlZGljYXRlIF9N
X3ByZWQ7CnB1YmxpYzoKICBleHBsaWNpdCB1bmFyeV9uZWdhdGUoY29uc3QgX1ByZWRpY2F0ZSYg
X194KSA6IF9NX3ByZWQoX194KSB7fQogIGJvb2wgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFtZSBf
UHJlZGljYXRlOjphcmd1bWVudF90eXBlJiBfX3gpIGNvbnN0IHsKICAgIHJldHVybiAhX01fcHJl
ZChfX3gpOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfUHJlZGljYXRlPgppbmxpbmUgdW5hcnlf
bmVnYXRlPF9QcmVkaWNhdGU+IApub3QxKGNvbnN0IF9QcmVkaWNhdGUmIF9fcHJlZCkKewogIHJl
dHVybiB1bmFyeV9uZWdhdGU8X1ByZWRpY2F0ZT4oX19wcmVkKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9QcmVkaWNhdGU+IApjbGFzcyBiaW5hcnlfbmVnYXRlIAogIDogcHVibGljIGJpbmFyeV9mdW5j
dGlvbjx0eXBlbmFtZSBfUHJlZGljYXRlOjpmaXJzdF9hcmd1bWVudF90eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eXBlbmFtZSBfUHJlZGljYXRlOjpzZWNvbmRfYXJndW1lbnRfdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbD4gewpwcm90ZWN0ZWQ6CiAgX1ByZWRp
Y2F0ZSBfTV9wcmVkOwpwdWJsaWM6CiAgZXhwbGljaXQgYmluYXJ5X25lZ2F0ZShjb25zdCBfUHJl
ZGljYXRlJiBfX3gpIDogX01fcHJlZChfX3gpIHt9CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IHR5
cGVuYW1lIF9QcmVkaWNhdGU6OmZpcnN0X2FyZ3VtZW50X3R5cGUmIF9feCwgCiAgICAgICAgICAg
ICAgICAgIGNvbnN0IHR5cGVuYW1lIF9QcmVkaWNhdGU6OnNlY29uZF9hcmd1bWVudF90eXBlJiBf
X3kpIGNvbnN0CiAgewogICAgcmV0dXJuICFfTV9wcmVkKF9feCwgX195KTsgCiAgfQp9OwoKdGVt
cGxhdGUgPGNsYXNzIF9QcmVkaWNhdGU+CmlubGluZSBiaW5hcnlfbmVnYXRlPF9QcmVkaWNhdGU+
IApub3QyKGNvbnN0IF9QcmVkaWNhdGUmIF9fcHJlZCkKewogIHJldHVybiBiaW5hcnlfbmVnYXRl
PF9QcmVkaWNhdGU+KF9fcHJlZCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfT3BlcmF0aW9uPiAKY2xh
c3MgYmluZGVyMXN0CiAgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgX09wZXJhdGlv
bjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5h
bWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGU+IHsKcHJvdGVjdGVkOgogIF9PcGVyYXRpb24gb3A7
CiAgdHlwZW5hbWUgX09wZXJhdGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZSB2YWx1ZTsKcHVibGlj
OgogIGJpbmRlcjFzdChjb25zdCBfT3BlcmF0aW9uJiBfX3gsCiAgICAgICAgICAgIGNvbnN0IHR5
cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUmIF9feSkKICAgICAgOiBvcChf
X3gpLCB2YWx1ZShfX3kpIHt9CiAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGUKICBv
cGVyYXRvcigpKGNvbnN0IHR5cGVuYW1lIF9PcGVyYXRpb246OnNlY29uZF9hcmd1bWVudF90eXBl
JiBfX3gpIGNvbnN0IHsKICAgIHJldHVybiBvcCh2YWx1ZSwgX194KTsgCiAgfQp9OwoKdGVtcGxh
dGUgPGNsYXNzIF9PcGVyYXRpb24sIGNsYXNzIF9UcD4KaW5saW5lIGJpbmRlcjFzdDxfT3BlcmF0
aW9uPiAKYmluZDFzdChjb25zdCBfT3BlcmF0aW9uJiBfX29wZXIsIGNvbnN0IF9UcCYgX194KSAK
ewogIHR5cGVkZWYgdHlwZW5hbWUgX09wZXJhdGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZSBfQXJn
MV90eXBlOwogIHJldHVybiBiaW5kZXIxc3Q8X09wZXJhdGlvbj4oX19vcGVyLCBfQXJnMV90eXBl
KF9feCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX09wZXJhdGlvbj4gCmNsYXNzIGJpbmRlcjJuZAog
IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3Vt
ZW50X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6
cmVzdWx0X3R5cGU+IHsKcHJvdGVjdGVkOgogIF9PcGVyYXRpb24gb3A7CiAgdHlwZW5hbWUgX09w
ZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUgdmFsdWU7CnB1YmxpYzoKICBiaW5kZXIybmQo
Y29uc3QgX09wZXJhdGlvbiYgX194LAogICAgICAgICAgICBjb25zdCB0eXBlbmFtZSBfT3BlcmF0
aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSYgX195KSAKICAgICAgOiBvcChfX3gpLCB2YWx1ZShf
X3kpIHt9CiAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGUKICBvcGVyYXRvcigpKGNv
bnN0IHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUmIF9feCkgY29uc3Qg
ewogICAgcmV0dXJuIG9wKF9feCwgdmFsdWUpOyAKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX09w
ZXJhdGlvbiwgY2xhc3MgX1RwPgppbmxpbmUgYmluZGVyMm5kPF9PcGVyYXRpb24+IApiaW5kMm5k
KGNvbnN0IF9PcGVyYXRpb24mIF9fb3BlciwgY29uc3QgX1RwJiBfX3gpIAp7CiAgdHlwZWRlZiB0
eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSBfQXJnMl90eXBlOwogIHJl
dHVybiBiaW5kZXIybmQ8X09wZXJhdGlvbj4oX19vcGVyLCBfQXJnMl90eXBlKF9feCkpOwp9Cgog
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX09wZXJhdGlvbjEsIGNsYXNzIF9PcGVyYXRpb24yPgpjbGFzcyB1
bmFyeV9jb21wb3NlCiAgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgX09wZXJhdGlv
bjI6OmFyZ3VtZW50X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX09w
ZXJhdGlvbjE6OnJlc3VsdF90eXBlPiAKewpwcm90ZWN0ZWQ6CiAgX09wZXJhdGlvbjEgX19vcDE7
CiAgX09wZXJhdGlvbjIgX19vcDI7CnB1YmxpYzoKICB1bmFyeV9jb21wb3NlKGNvbnN0IF9PcGVy
YXRpb24xJiBfX3gsIGNvbnN0IF9PcGVyYXRpb24yJiBfX3kpIAogICAgOiBfX29wMShfX3gpLCBf
X29wMihfX3kpIHt9CiAgdHlwZW5hbWUgX09wZXJhdGlvbjE6OnJlc3VsdF90eXBlCiAgb3BlcmF0
b3IoKShjb25zdCB0eXBlbmFtZSBfT3BlcmF0aW9uMjo6YXJndW1lbnRfdHlwZSYgX194KSBjb25z
dCB7CiAgICByZXR1cm4gX19vcDEoX19vcDIoX194KSk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNz
IF9PcGVyYXRpb24xLCBjbGFzcyBfT3BlcmF0aW9uMj4KaW5saW5lIHVuYXJ5X2NvbXBvc2U8X09w
ZXJhdGlvbjEsX09wZXJhdGlvbjI+IApjb21wb3NlMShjb25zdCBfT3BlcmF0aW9uMSYgX19vcDEs
IGNvbnN0IF9PcGVyYXRpb24yJiBfX29wMikKewogIHJldHVybiB1bmFyeV9jb21wb3NlPF9PcGVy
YXRpb24xLF9PcGVyYXRpb24yPihfX29wMSwgX19vcDIpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX09w
ZXJhdGlvbjEsIGNsYXNzIF9PcGVyYXRpb24yLCBjbGFzcyBfT3BlcmF0aW9uMz4KY2xhc3MgYmlu
YXJ5X2NvbXBvc2UKICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfT3BlcmF0aW9u
Mjo6YXJndW1lbnRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBfT3Bl
cmF0aW9uMTo6cmVzdWx0X3R5cGU+IHsKcHJvdGVjdGVkOgogIF9PcGVyYXRpb24xIF9NX29wMTsK
ICBfT3BlcmF0aW9uMiBfTV9vcDI7CiAgX09wZXJhdGlvbjMgX01fb3AzOwpwdWJsaWM6CiAgYmlu
YXJ5X2NvbXBvc2UoY29uc3QgX09wZXJhdGlvbjEmIF9feCwgY29uc3QgX09wZXJhdGlvbjImIF9f
eSwgCiAgICAgICAgICAgICAgICAgY29uc3QgX09wZXJhdGlvbjMmIF9feikgCiAgICA6IF9NX29w
MShfX3gpLCBfTV9vcDIoX195KSwgX01fb3AzKF9feikgeyB9CiAgdHlwZW5hbWUgX09wZXJhdGlv
bjE6OnJlc3VsdF90eXBlCiAgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFtZSBfT3BlcmF0aW9uMjo6
YXJndW1lbnRfdHlwZSYgX194KSBjb25zdCB7CiAgICByZXR1cm4gX01fb3AxKF9NX29wMihfX3gp
LCBfTV9vcDMoX194KSk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRpb24xLCBjbGFz
cyBfT3BlcmF0aW9uMiwgY2xhc3MgX09wZXJhdGlvbjM+CmlubGluZSBiaW5hcnlfY29tcG9zZTxf
T3BlcmF0aW9uMSwgX09wZXJhdGlvbjIsIF9PcGVyYXRpb24zPiAKY29tcG9zZTIoY29uc3QgX09w
ZXJhdGlvbjEmIF9fb3AxLCBjb25zdCBfT3BlcmF0aW9uMiYgX19vcDIsIAogICAgICAgICBjb25z
dCBfT3BlcmF0aW9uMyYgX19vcDMpCnsKICByZXR1cm4gYmluYXJ5X2NvbXBvc2U8X09wZXJhdGlv
bjEsX09wZXJhdGlvbjIsX09wZXJhdGlvbjM+CiAgICAoX19vcDEsIF9fb3AyLCBfX29wMyk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfQXJnLCBjbGFzcyBfUmVzdWx0PgpjbGFzcyBwb2ludGVyX3RvX3Vu
YXJ5X2Z1bmN0aW9uIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9BcmcsIF9SZXN1bHQ+IHsKcHJv
dGVjdGVkOgogIF9SZXN1bHQgKCpfTV9wdHIpKF9BcmcpOwpwdWJsaWM6CiAgcG9pbnRlcl90b191
bmFyeV9mdW5jdGlvbigpIHt9CiAgZXhwbGljaXQgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbihf
UmVzdWx0ICgqX194KShfQXJnKSkgOiBfTV9wdHIoX194KSB7fQogIF9SZXN1bHQgb3BlcmF0b3Io
KShfQXJnIF9feCkgY29uc3QgeyByZXR1cm4gX01fcHRyKF9feCk7IH0KfTsKCnRlbXBsYXRlIDxj
bGFzcyBfQXJnLCBjbGFzcyBfUmVzdWx0PgppbmxpbmUgcG9pbnRlcl90b191bmFyeV9mdW5jdGlv
bjxfQXJnLCBfUmVzdWx0PiBwdHJfZnVuKF9SZXN1bHQgKCpfX3gpKF9BcmcpKQp7CiAgcmV0dXJu
IHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb248X0FyZywgX1Jlc3VsdD4oX194KTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMiwgY2xhc3MgX1Jlc3VsdD4KY2xhc3MgcG9pbnRl
cl90b19iaW5hcnlfZnVuY3Rpb24gOiAKICBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9BcmcxLF9B
cmcyLF9SZXN1bHQ+IHsKcHJvdGVjdGVkOgogICAgX1Jlc3VsdCAoKl9NX3B0cikoX0FyZzEsIF9B
cmcyKTsKcHVibGljOgogICAgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24oKSB7fQogICAgZXhw
bGljaXQgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24oX1Jlc3VsdCAoKl9feCkoX0FyZzEsIF9B
cmcyKSkgCiAgICAgIDogX01fcHRyKF9feCkge30KICAgIF9SZXN1bHQgb3BlcmF0b3IoKShfQXJn
MSBfX3gsIF9BcmcyIF9feSkgY29uc3QgewogICAgICByZXR1cm4gX01fcHRyKF9feCwgX195KTsK
ICAgIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfQXJnMSwgY2xhc3MgX0FyZzIsIGNsYXNzIF9SZXN1
bHQ+CmlubGluZSBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbjxfQXJnMSxfQXJnMixfUmVzdWx0
PiAKcHRyX2Z1bihfUmVzdWx0ICgqX194KShfQXJnMSwgX0FyZzIpKSB7CiAgcmV0dXJuIHBvaW50
ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uPF9BcmcxLF9BcmcyLF9SZXN1bHQ+KF9feCk7Cn0KCiAKdGVt
cGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IF9JZGVudGl0eSA6IHB1YmxpYyB1bmFyeV9mdW5jdGlv
bjxfVHAsX1RwPiB7CiAgY29uc3QgX1RwJiBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194KSBjb25z
dCB7IHJldHVybiBfX3g7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+IHN0cnVjdCBpZGVudGl0
eSA6IHB1YmxpYyBfSWRlbnRpdHk8X1RwPiB7fTsKCiAKdGVtcGxhdGUgPGNsYXNzIF9QYWlyPgpz
dHJ1Y3QgX1NlbGVjdDFzdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfUGFpciwgdHlwZW5hbWUg
X1BhaXI6OmZpcnN0X3R5cGU+IHsKICBjb25zdCB0eXBlbmFtZSBfUGFpcjo6Zmlyc3RfdHlwZSYg
b3BlcmF0b3IoKShjb25zdCBfUGFpciYgX194KSBjb25zdCB7CiAgICByZXR1cm4gX194LmZpcnN0
OwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfUGFpcj4Kc3RydWN0IF9TZWxlY3QybmQgOiBwdWJs
aWMgdW5hcnlfZnVuY3Rpb248X1BhaXIsIHR5cGVuYW1lIF9QYWlyOjpzZWNvbmRfdHlwZT4Kewog
IGNvbnN0IHR5cGVuYW1lIF9QYWlyOjpzZWNvbmRfdHlwZSYgb3BlcmF0b3IoKShjb25zdCBfUGFp
ciYgX194KSBjb25zdCB7CiAgICByZXR1cm4gX194LnNlY29uZDsKICB9Cn07Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1BhaXI+IHN0cnVjdCBzZWxlY3Qxc3QgOiBwdWJsaWMgX1NlbGVjdDFzdDxfUGFpcj4g
e307CnRlbXBsYXRlIDxjbGFzcyBfUGFpcj4gc3RydWN0IHNlbGVjdDJuZCA6IHB1YmxpYyBfU2Vs
ZWN0Mm5kPF9QYWlyPiB7fTsKCiAKdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMj4K
c3RydWN0IF9Qcm9qZWN0MXN0IDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfQXJnMSwgX0FyZzIs
IF9BcmcxPiB7CiAgX0FyZzEgb3BlcmF0b3IoKShjb25zdCBfQXJnMSYgX194LCBjb25zdCBfQXJn
MiYpIGNvbnN0IHsgcmV0dXJuIF9feDsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFz
cyBfQXJnMj4Kc3RydWN0IF9Qcm9qZWN0Mm5kIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfQXJn
MSwgX0FyZzIsIF9BcmcyPiB7CiAgX0FyZzIgb3BlcmF0b3IoKShjb25zdCBfQXJnMSYsIGNvbnN0
IF9BcmcyJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9B
cmcxLCBjbGFzcyBfQXJnMj4gCnN0cnVjdCBwcm9qZWN0MXN0IDogcHVibGljIF9Qcm9qZWN0MXN0
PF9BcmcxLCBfQXJnMj4ge307Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0FyZzEsIGNsYXNzIF9BcmcyPgpz
dHJ1Y3QgcHJvamVjdDJuZCA6IHB1YmxpYyBfUHJvamVjdDJuZDxfQXJnMSwgX0FyZzI+IHt9OwoK
IAogCiAKdGVtcGxhdGUgPGNsYXNzIF9SZXN1bHQ+CnN0cnVjdCBjb25zdGFudF92b2lkX2Z1bgp7
CiAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90eXBlOwogIHJlc3VsdF90eXBlIF9fdmFsOwogIGNv
bnN0YW50X3ZvaWRfZnVuKGNvbnN0IHJlc3VsdF90eXBlJiBfX3YpIDogX192YWwoX192KSB7fQog
IGNvbnN0IHJlc3VsdF90eXBlJiBvcGVyYXRvcigpKCkgY29uc3QgeyByZXR1cm4gX192YWw7IH0K
fTsgIAoKCnRlbXBsYXRlIDxjbGFzcyBfUmVzdWx0LCBjbGFzcyBfQXJndW1lbnQgPSBfUmVzdWx0
PgoKCgpzdHJ1Y3QgY29uc3RhbnRfdW5hcnlfZnVuIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9B
cmd1bWVudCwgX1Jlc3VsdD4gewogIF9SZXN1bHQgX01fdmFsOwogIGNvbnN0YW50X3VuYXJ5X2Z1
bihjb25zdCBfUmVzdWx0JiBfX3YpIDogX01fdmFsKF9fdikge30KICBjb25zdCBfUmVzdWx0JiBv
cGVyYXRvcigpKGNvbnN0IF9Bcmd1bWVudCYpIGNvbnN0IHsgcmV0dXJuIF9NX3ZhbDsgfQp9OwoK
CnRlbXBsYXRlIDxjbGFzcyBfUmVzdWx0LCBjbGFzcyBfQXJnMSA9IF9SZXN1bHQsIGNsYXNzIF9B
cmcyID0gX0FyZzE+CgoKCnN0cnVjdCBjb25zdGFudF9iaW5hcnlfZnVuIDogcHVibGljIGJpbmFy
eV9mdW5jdGlvbjxfQXJnMSwgX0FyZzIsIF9SZXN1bHQ+IHsKICBfUmVzdWx0IF9NX3ZhbDsKICBj
b25zdGFudF9iaW5hcnlfZnVuKGNvbnN0IF9SZXN1bHQmIF9fdikgOiBfTV92YWwoX192KSB7fQog
IGNvbnN0IF9SZXN1bHQmIG9wZXJhdG9yKCkoY29uc3QgX0FyZzEmLCBjb25zdCBfQXJnMiYpIGNv
bnN0IHsKICAgIHJldHVybiBfTV92YWw7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9SZXN1bHQ+
CmlubGluZSBjb25zdGFudF92b2lkX2Z1bjxfUmVzdWx0PiBjb25zdGFudDAoY29uc3QgX1Jlc3Vs
dCYgX192YWwpCnsKICByZXR1cm4gY29uc3RhbnRfdm9pZF9mdW48X1Jlc3VsdD4oX192YWwpOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jlc3VsdD4KaW5saW5lIGNvbnN0YW50X3VuYXJ5X2Z1bjxfUmVz
dWx0LF9SZXN1bHQ+IGNvbnN0YW50MShjb25zdCBfUmVzdWx0JiBfX3ZhbCkKewogIHJldHVybiBj
b25zdGFudF91bmFyeV9mdW48X1Jlc3VsdCxfUmVzdWx0PihfX3ZhbCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfUmVzdWx0PgppbmxpbmUgY29uc3RhbnRfYmluYXJ5X2Z1bjxfUmVzdWx0LF9SZXN1bHQs
X1Jlc3VsdD4gCmNvbnN0YW50Mihjb25zdCBfUmVzdWx0JiBfX3ZhbCkKewogIHJldHVybiBjb25z
dGFudF9iaW5hcnlfZnVuPF9SZXN1bHQsX1Jlc3VsdCxfUmVzdWx0PihfX3ZhbCk7Cn0KCiAKIApj
bGFzcyBzdWJ0cmFjdGl2ZV9ybmcgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dW5zaWduZWQgaW50
LCB1bnNpZ25lZCBpbnQ+IHsKcHJpdmF0ZToKICB1bnNpZ25lZCBpbnQgX01fdGFibGVbNTVdOwog
IHNpemVfdCBfTV9pbmRleDE7CiAgc2l6ZV90IF9NX2luZGV4MjsKcHVibGljOgogIHVuc2lnbmVk
IGludCBvcGVyYXRvcigpKHVuc2lnbmVkIGludCBfX2xpbWl0KSB7CiAgICBfTV9pbmRleDEgPSAo
X01faW5kZXgxICsgMSkgJSA1NTsKICAgIF9NX2luZGV4MiA9IChfTV9pbmRleDIgKyAxKSAlIDU1
OwogICAgX01fdGFibGVbX01faW5kZXgxXSA9IF9NX3RhYmxlW19NX2luZGV4MV0gLSBfTV90YWJs
ZVtfTV9pbmRleDJdOwogICAgcmV0dXJuIF9NX3RhYmxlW19NX2luZGV4MV0gJSBfX2xpbWl0Owog
IH0KCiAgdm9pZCBfTV9pbml0aWFsaXplKHVuc2lnbmVkIGludCBfX3NlZWQpCiAgewogICAgdW5z
aWduZWQgaW50IF9fayA9IDE7CiAgICBfTV90YWJsZVs1NF0gPSBfX3NlZWQ7CiAgICBzaXplX3Qg
X19pOwogICAgZm9yIChfX2kgPSAwOyBfX2kgPCA1NDsgX19pKyspIHsKICAgICAgICBzaXplX3Qg
X19paSA9ICgyMSAqIChfX2kgKyAxKSAlIDU1KSAtIDE7CiAgICAgICAgX01fdGFibGVbX19paV0g
PSBfX2s7CiAgICAgICAgX19rID0gX19zZWVkIC0gX19rOwogICAgICAgIF9fc2VlZCA9IF9NX3Rh
YmxlW19faWldOwogICAgfQogICAgZm9yIChpbnQgX19sb29wID0gMDsgX19sb29wIDwgNDsgX19s
b29wKyspIHsKICAgICAgICBmb3IgKF9faSA9IDA7IF9faSA8IDU1OyBfX2krKykKICAgICAgICAg
ICAgX01fdGFibGVbX19pXSA9IF9NX3RhYmxlW19faV0gLSBfTV90YWJsZVsoMSArIF9faSArIDMw
KSAlIDU1XTsKICAgIH0KICAgIF9NX2luZGV4MSA9IDA7CiAgICBfTV9pbmRleDIgPSAzMTsKICB9
CgogIHN1YnRyYWN0aXZlX3JuZyh1bnNpZ25lZCBpbnQgX19zZWVkKSB7IF9NX2luaXRpYWxpemUo
X19zZWVkKTsgfQogIHN1YnRyYWN0aXZlX3JuZygpIHsgX01faW5pdGlhbGl6ZSgxNjE4MDMzOTh1
KTsgfQp9OwoKCiAKCiAKIAogCiAKIAogCiAKCiAKIAogCiAKIAoKIAogCiAKIAogCgoKdGVtcGxh
dGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4KY2xhc3MgbWVtX2Z1bl90IDogcHVibGljIHVuYXJ5
X2Z1bmN0aW9uPF9UcCosX1JldD4gewpwdWJsaWM6CiAgZXhwbGljaXQgbWVtX2Z1bl90KF9SZXQg
KF9UcDo6Kl9fcGYpKCkpIDogX01fZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0b3IoKShfVHAqIF9f
cCkgY29uc3QgeyByZXR1cm4gKF9fcC0+Kl9NX2YpKCk7IH0KcHJpdmF0ZToKICBfUmV0IChfVHA6
OipfTV9mKSgpOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4KY2xhc3MgY29u
c3RfbWVtX2Z1bl90IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPGNvbnN0IF9UcCosX1JldD4gewpw
dWJsaWM6CiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bl90KF9SZXQgKF9UcDo6Kl9fcGYpKCkgY29u
c3QpIDogX01fZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0b3IoKShjb25zdCBfVHAqIF9fcCkgY29u
c3QgeyByZXR1cm4gKF9fcC0+Kl9NX2YpKCk7IH0KcHJpdmF0ZToKICBfUmV0IChfVHA6OipfTV9m
KSgpIGNvbnN0Owp9OwoKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CmNsYXNzIG1l
bV9mdW5fcmVmX3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLF9SZXQ+IHsKcHVibGljOgog
IGV4cGxpY2l0IG1lbV9mdW5fcmVmX3QoX1JldCAoX1RwOjoqX19wZikoKSkgOiBfTV9mKF9fcGYp
IHt9CiAgX1JldCBvcGVyYXRvcigpKF9UcCYgX19yKSBjb25zdCB7IHJldHVybiAoX19yLipfTV9m
KSgpOyB9CnByaXZhdGU6CiAgX1JldCAoX1RwOjoqX01fZikoKTsKfTsKCnRlbXBsYXRlIDxjbGFz
cyBfUmV0LCBjbGFzcyBfVHA+CmNsYXNzIGNvbnN0X21lbV9mdW5fcmVmX3QgOiBwdWJsaWMgdW5h
cnlfZnVuY3Rpb248X1RwLF9SZXQ+IHsKcHVibGljOgogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW5f
cmVmX3QoX1JldCAoX1RwOjoqX19wZikoKSBjb25zdCkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBv
cGVyYXRvcigpKGNvbnN0IF9UcCYgX19yKSBjb25zdCB7IHJldHVybiAoX19yLipfTV9mKSgpOyB9
CnByaXZhdGU6CiAgX1JldCAoX1RwOjoqX01fZikoKSBjb25zdDsKfTsKCnRlbXBsYXRlIDxjbGFz
cyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIG1lbV9mdW4xX3QgOiBwdWJsaWMg
YmluYXJ5X2Z1bmN0aW9uPF9UcCosX0FyZyxfUmV0PiB7CnB1YmxpYzoKICBleHBsaWNpdCBtZW1f
ZnVuMV90KF9SZXQgKF9UcDo6Kl9fcGYpKF9BcmcpKSA6IF9NX2YoX19wZikge30KICBfUmV0IG9w
ZXJhdG9yKCkoX1RwKiBfX3AsIF9BcmcgX194KSBjb25zdCB7IHJldHVybiAoX19wLT4qX01fZiko
X194KTsgfQpwcml2YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpOwp9OwoKdGVtcGxhdGUg
PGNsYXNzIF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KY2xhc3MgY29uc3RfbWVtX2Z1bjFf
dCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248Y29uc3QgX1RwKixfQXJnLF9SZXQ+IHsKcHVibGlj
OgogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW4xX3QoX1JldCAoX1RwOjoqX19wZikoX0FyZykgY29u
c3QpIDogX01fZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0b3IoKShjb25zdCBfVHAqIF9fcCwgX0Fy
ZyBfX3gpIGNvbnN0CiAgICB7IHJldHVybiAoX19wLT4qX01fZikoX194KTsgfQpwcml2YXRlOgog
IF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpIGNvbnN0Owp9OwoKdGVtcGxhdGUgPGNsYXNzIF9SZXQs
IGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KY2xhc3MgbWVtX2Z1bjFfcmVmX3QgOiBwdWJsaWMgYmlu
YXJ5X2Z1bmN0aW9uPF9UcCxfQXJnLF9SZXQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9mdW4x
X3JlZl90KF9SZXQgKF9UcDo6Kl9fcGYpKF9BcmcpKSA6IF9NX2YoX19wZikge30KICBfUmV0IG9w
ZXJhdG9yKCkoX1RwJiBfX3IsIF9BcmcgX194KSBjb25zdCB7IHJldHVybiAoX19yLipfTV9mKShf
X3gpOyB9CnByaXZhdGU6CiAgX1JldCAoX1RwOjoqX01fZikoX0FyZyk7Cn07Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgpjbGFzcyBjb25zdF9tZW1fZnVuMV9y
ZWZfdCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9BcmcsX1JldD4gewpwdWJsaWM6CiAg
ZXhwbGljaXQgY29uc3RfbWVtX2Z1bjFfcmVmX3QoX1JldCAoX1RwOjoqX19wZikoX0FyZykgY29u
c3QpIDogX01fZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9fciwgX0Fy
ZyBfX3gpIGNvbnN0IHsgcmV0dXJuIChfX3IuKl9NX2YpKF9feCk7IH0KcHJpdmF0ZToKICBfUmV0
IChfVHA6OipfTV9mKShfQXJnKSBjb25zdDsKfTsKCgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KY2xh
c3MgbWVtX2Z1bl90PHZvaWQsIF9UcD4gOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwKix2b2lk
PiB7CnB1YmxpYzoKICBleHBsaWNpdCBtZW1fZnVuX3Qodm9pZCAoX1RwOjoqX19wZikoKSkgOiBf
TV9mKF9fcGYpIHt9CiAgdm9pZCBvcGVyYXRvcigpKF9UcCogX19wKSBjb25zdCB7IChfX3AtPipf
TV9mKSgpOyB9CnByaXZhdGU6CiAgdm9pZCAoX1RwOjoqX01fZikoKTsKfTsKCnRlbXBsYXRlIDxj
bGFzcyBfVHA+CmNsYXNzIGNvbnN0X21lbV9mdW5fdDx2b2lkLCBfVHA+IDogcHVibGljIHVuYXJ5
X2Z1bmN0aW9uPGNvbnN0IF9UcCosdm9pZD4gewpwdWJsaWM6CiAgZXhwbGljaXQgY29uc3RfbWVt
X2Z1bl90KHZvaWQgKF9UcDo6Kl9fcGYpKCkgY29uc3QpIDogX01fZihfX3BmKSB7fQogIHZvaWQg
b3BlcmF0b3IoKShjb25zdCBfVHAqIF9fcCkgY29uc3QgeyAoX19wLT4qX01fZikoKTsgfQpwcml2
YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKCkgY29uc3Q7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
PgpjbGFzcyBtZW1fZnVuX3JlZl90PHZvaWQsIF9UcD4gOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248
X1RwLHZvaWQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9mdW5fcmVmX3Qodm9pZCAoX1RwOjoq
X19wZikoKSkgOiBfTV9mKF9fcGYpIHt9CiAgdm9pZCBvcGVyYXRvcigpKF9UcCYgX19yKSBjb25z
dCB7IChfX3IuKl9NX2YpKCk7IH0KcHJpdmF0ZToKICB2b2lkIChfVHA6OipfTV9mKSgpOwp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9UcD4KY2xhc3MgY29uc3RfbWVtX2Z1bl9yZWZfdDx2b2lkLCBfVHA+
IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCx2b2lkPiB7CnB1YmxpYzoKICBleHBsaWNpdCBj
b25zdF9tZW1fZnVuX3JlZl90KHZvaWQgKF9UcDo6Kl9fcGYpKCkgY29uc3QpIDogX01fZihfX3Bm
KSB7fQogIHZvaWQgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9fcikgY29uc3QgeyAoX19yLipfTV9m
KSgpOyB9CnByaXZhdGU6CiAgdm9pZCAoX1RwOjoqX01fZikoKSBjb25zdDsKfTsKCnRlbXBsYXRl
IDxjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIG1lbV9mdW4xX3Q8dm9pZCwgX1RwLCBfQXJn
PiA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwKixfQXJnLHZvaWQ+IHsKcHVibGljOgogIGV4
cGxpY2l0IG1lbV9mdW4xX3Qodm9pZCAoX1RwOjoqX19wZikoX0FyZykpIDogX01fZihfX3BmKSB7
fQogIHZvaWQgb3BlcmF0b3IoKShfVHAqIF9fcCwgX0FyZyBfX3gpIGNvbnN0IHsgKF9fcC0+Kl9N
X2YpKF9feCk7IH0KcHJpdmF0ZToKICB2b2lkIChfVHA6OipfTV9mKShfQXJnKTsKfTsKCnRlbXBs
YXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIGNvbnN0X21lbV9mdW4xX3Q8dm9pZCwg
X1RwLCBfQXJnPiAKICA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248Y29uc3QgX1RwKixfQXJnLHZv
aWQ+IHsKcHVibGljOgogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW4xX3Qodm9pZCAoX1RwOjoqX19w
ZikoX0FyZykgY29uc3QpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShjb25zdCBf
VHAqIF9fcCwgX0FyZyBfX3gpIGNvbnN0IHsgKF9fcC0+Kl9NX2YpKF9feCk7IH0KcHJpdmF0ZToK
ICB2b2lkIChfVHA6OipfTV9mKShfQXJnKSBjb25zdDsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHAs
IGNsYXNzIF9Bcmc+CmNsYXNzIG1lbV9mdW4xX3JlZl90PHZvaWQsIF9UcCwgX0FyZz4KICA6IHB1
YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9Bcmcsdm9pZD4gewpwdWJsaWM6CiAgZXhwbGljaXQg
bWVtX2Z1bjFfcmVmX3Qodm9pZCAoX1RwOjoqX19wZikoX0FyZykpIDogX01fZihfX3BmKSB7fQog
IHZvaWQgb3BlcmF0b3IoKShfVHAmIF9fciwgX0FyZyBfX3gpIGNvbnN0IHsgKF9fci4qX01fZiko
X194KTsgfQpwcml2YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKF9BcmcpOwp9OwoKdGVtcGxhdGUg
PGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KY2xhc3MgY29uc3RfbWVtX2Z1bjFfcmVmX3Q8dm9pZCwg
X1RwLCBfQXJnPgogIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX0FyZyx2b2lkPiB7CnB1
YmxpYzoKICBleHBsaWNpdCBjb25zdF9tZW1fZnVuMV9yZWZfdCh2b2lkIChfVHA6OipfX3BmKShf
QXJnKSBjb25zdCkgOiBfTV9mKF9fcGYpIHt9CiAgdm9pZCBvcGVyYXRvcigpKGNvbnN0IF9UcCYg
X19yLCBfQXJnIF9feCkgY29uc3QgeyAoX19yLipfTV9mKShfX3gpOyB9CnByaXZhdGU6CiAgdm9p
ZCAoX1RwOjoqX01fZikoX0FyZykgY29uc3Q7Cn07CgoKCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFz
cyBfUmV0LCBjbGFzcyBfVHA+CmlubGluZSBtZW1fZnVuX3Q8X1JldCxfVHA+IG1lbV9mdW4oX1Jl
dCAoX1RwOjoqX19mKSgpKQogIHsgcmV0dXJuIG1lbV9mdW5fdDxfUmV0LF9UcD4oX19mKTsgfQoK
dGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4KaW5saW5lIGNvbnN0X21lbV9mdW5fdDxf
UmV0LF9UcD4gbWVtX2Z1bihfUmV0IChfVHA6OipfX2YpKCkgY29uc3QpCiAgeyByZXR1cm4gY29u
c3RfbWVtX2Z1bl90PF9SZXQsX1RwPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xh
c3MgX1RwPgppbmxpbmUgbWVtX2Z1bl9yZWZfdDxfUmV0LF9UcD4gbWVtX2Z1bl9yZWYoX1JldCAo
X1RwOjoqX19mKSgpKSAKICB7IHJldHVybiBtZW1fZnVuX3JlZl90PF9SZXQsX1RwPihfX2YpOyB9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwPgppbmxpbmUgY29uc3RfbWVtX2Z1bl9y
ZWZfdDxfUmV0LF9UcD4gbWVtX2Z1bl9yZWYoX1JldCAoX1RwOjoqX19mKSgpIGNvbnN0KQogIHsg
cmV0dXJuIGNvbnN0X21lbV9mdW5fcmVmX3Q8X1JldCxfVHA+KF9fZik7IH0KCnRlbXBsYXRlIDxj
bGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBtZW1fZnVuMV90PF9SZXQs
X1RwLF9Bcmc+IG1lbV9mdW4oX1JldCAoX1RwOjoqX19mKShfQXJnKSkKICB7IHJldHVybiBtZW1f
ZnVuMV90PF9SZXQsX1RwLF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFz
cyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBjb25zdF9tZW1fZnVuMV90PF9SZXQsX1RwLF9Bcmc+
IG1lbV9mdW4oX1JldCAoX1RwOjoqX19mKShfQXJnKSBjb25zdCkKICB7IHJldHVybiBjb25zdF9t
ZW1fZnVuMV90PF9SZXQsX1RwLF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBj
bGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBtZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJn
PiBtZW1fZnVuX3JlZihfUmV0IChfVHA6OipfX2YpKF9BcmcpKQogIHsgcmV0dXJuIG1lbV9mdW4x
X3JlZl90PF9SZXQsX1RwLF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFz
cyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBjb25zdF9tZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxf
QXJnPgptZW1fZnVuX3JlZihfUmV0IChfVHA6OipfX2YpKF9BcmcpIGNvbnN0KQogIHsgcmV0dXJu
IGNvbnN0X21lbV9mdW4xX3JlZl90PF9SZXQsX1RwLF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxj
bGFzcyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBtZW1fZnVuMV90PF9SZXQs
X1RwLF9Bcmc+IG1lbV9mdW4xKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykpCiAgeyByZXR1cm4gbWVt
X2Z1bjFfdDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xh
c3MgX1RwLCBjbGFzcyBfQXJnPgppbmxpbmUgY29uc3RfbWVtX2Z1bjFfdDxfUmV0LF9UcCxfQXJn
PiBtZW1fZnVuMShfUmV0IChfVHA6OipfX2YpKF9BcmcpIGNvbnN0KQogIHsgcmV0dXJuIGNvbnN0
X21lbV9mdW4xX3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9SZXQs
IGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KaW5saW5lIG1lbV9mdW4xX3JlZl90PF9SZXQsX1RwLF9B
cmc+IG1lbV9mdW4xX3JlZihfUmV0IChfVHA6OipfX2YpKF9BcmcpKQogIHsgcmV0dXJuIG1lbV9m
dW4xX3JlZl90PF9SZXQsX1RwLF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBj
bGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBjb25zdF9tZW1fZnVuMV9yZWZfdDxfUmV0LF9U
cCxfQXJnPgptZW1fZnVuMV9yZWYoX1JldCAoX1RwOjoqX19mKShfQXJnKSBjb25zdCkKICB7IHJl
dHVybiBjb25zdF9tZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9CgogCgoKCiAK
IAogCiMgNTkgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45
NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3RyZWUuaCIgMiAzCgoKICAKCgoKCgp0
eXBlZGVmIGJvb2wgX1JiX3RyZWVfQ29sb3JfdHlwZTsKY29uc3QgX1JiX3RyZWVfQ29sb3JfdHlw
ZSBfU19yYl90cmVlX3JlZCA9IGZhbHNlOwpjb25zdCBfUmJfdHJlZV9Db2xvcl90eXBlIF9TX3Ji
X3RyZWVfYmxhY2sgPSB0cnVlOwoKc3RydWN0IF9SYl90cmVlX25vZGVfYmFzZQp7CiAgdHlwZWRl
ZiBfUmJfdHJlZV9Db2xvcl90eXBlIF9Db2xvcl90eXBlOwogIHR5cGVkZWYgX1JiX3RyZWVfbm9k
ZV9iYXNlKiBfQmFzZV9wdHI7CgogIF9Db2xvcl90eXBlIF9NX2NvbG9yOyAKICBfQmFzZV9wdHIg
X01fcGFyZW50OwogIF9CYXNlX3B0ciBfTV9sZWZ0OwogIF9CYXNlX3B0ciBfTV9yaWdodDsKCiAg
c3RhdGljIF9CYXNlX3B0ciBfU19taW5pbXVtKF9CYXNlX3B0ciBfX3gpCiAgewogICAgd2hpbGUg
KF9feC0+X01fbGVmdCAhPSAwKSBfX3ggPSBfX3gtPl9NX2xlZnQ7CiAgICByZXR1cm4gX194Owog
IH0KCiAgc3RhdGljIF9CYXNlX3B0ciBfU19tYXhpbXVtKF9CYXNlX3B0ciBfX3gpCiAgewogICAg
d2hpbGUgKF9feC0+X01fcmlnaHQgIT0gMCkgX194ID0gX194LT5fTV9yaWdodDsKICAgIHJldHVy
biBfX3g7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9WYWx1ZT4Kc3RydWN0IF9SYl90cmVlX25v
ZGUgOiBwdWJsaWMgX1JiX3RyZWVfbm9kZV9iYXNlCnsKICB0eXBlZGVmIF9SYl90cmVlX25vZGU8
X1ZhbHVlPiogX0xpbmtfdHlwZTsKICBfVmFsdWUgX01fdmFsdWVfZmllbGQ7Cn07CgoKc3RydWN0
IF9SYl90cmVlX2Jhc2VfaXRlcmF0b3IKewogIHR5cGVkZWYgX1JiX3RyZWVfbm9kZV9iYXNlOjpf
QmFzZV9wdHIgX0Jhc2VfcHRyOwogIHR5cGVkZWYgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcg
aXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwog
IF9CYXNlX3B0ciBfTV9ub2RlOwoKICB2b2lkIF9NX2luY3JlbWVudCgpCiAgewogICAgaWYgKF9N
X25vZGUtPl9NX3JpZ2h0ICE9IDApIHsKICAgICAgX01fbm9kZSA9IF9NX25vZGUtPl9NX3JpZ2h0
OwogICAgICB3aGlsZSAoX01fbm9kZS0+X01fbGVmdCAhPSAwKQogICAgICAgIF9NX25vZGUgPSBf
TV9ub2RlLT5fTV9sZWZ0OwogICAgfQogICAgZWxzZSB7CiAgICAgIF9CYXNlX3B0ciBfX3kgPSBf
TV9ub2RlLT5fTV9wYXJlbnQ7CiAgICAgIHdoaWxlIChfTV9ub2RlID09IF9feS0+X01fcmlnaHQp
IHsKICAgICAgICBfTV9ub2RlID0gX195OwogICAgICAgIF9feSA9IF9feS0+X01fcGFyZW50Owog
ICAgICB9CiAgICAgIGlmIChfTV9ub2RlLT5fTV9yaWdodCAhPSBfX3kpCiAgICAgICAgX01fbm9k
ZSA9IF9feTsKICAgIH0KICB9CgogIHZvaWQgX01fZGVjcmVtZW50KCkKICB7CiAgICBpZiAoX01f
bm9kZS0+X01fY29sb3IgPT0gX1NfcmJfdHJlZV9yZWQgJiYKICAgICAgICBfTV9ub2RlLT5fTV9w
YXJlbnQtPl9NX3BhcmVudCA9PSBfTV9ub2RlKQogICAgICBfTV9ub2RlID0gX01fbm9kZS0+X01f
cmlnaHQ7CiAgICBlbHNlIGlmIChfTV9ub2RlLT5fTV9sZWZ0ICE9IDApIHsKICAgICAgX0Jhc2Vf
cHRyIF9feSA9IF9NX25vZGUtPl9NX2xlZnQ7CiAgICAgIHdoaWxlIChfX3ktPl9NX3JpZ2h0ICE9
IDApCiAgICAgICAgX195ID0gX195LT5fTV9yaWdodDsKICAgICAgX01fbm9kZSA9IF9feTsKICAg
IH0KICAgIGVsc2UgewogICAgICBfQmFzZV9wdHIgX195ID0gX01fbm9kZS0+X01fcGFyZW50Owog
ICAgICB3aGlsZSAoX01fbm9kZSA9PSBfX3ktPl9NX2xlZnQpIHsKICAgICAgICBfTV9ub2RlID0g
X195OwogICAgICAgIF9feSA9IF9feS0+X01fcGFyZW50OwogICAgICB9CiAgICAgIF9NX25vZGUg
PSBfX3k7CiAgICB9CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9WYWx1ZSwgY2xhc3MgX1JlZiwg
Y2xhc3MgX1B0cj4Kc3RydWN0IF9SYl90cmVlX2l0ZXJhdG9yIDogcHVibGljIF9SYl90cmVlX2Jh
c2VfaXRlcmF0b3IKewogIHR5cGVkZWYgX1ZhbHVlIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfUmVm
IHJlZmVyZW5jZTsKICB0eXBlZGVmIF9QdHIgcG9pbnRlcjsKICB0eXBlZGVmIF9SYl90cmVlX2l0
ZXJhdG9yPF9WYWx1ZSwgX1ZhbHVlJiwgX1ZhbHVlKj4gICAgICAgICAgICAgCiAgICBpdGVyYXRv
cjsKICB0eXBlZGVmIF9SYl90cmVlX2l0ZXJhdG9yPF9WYWx1ZSwgY29uc3QgX1ZhbHVlJiwgY29u
c3QgX1ZhbHVlKj4gCiAgICBjb25zdF9pdGVyYXRvcjsKICB0eXBlZGVmIF9SYl90cmVlX2l0ZXJh
dG9yPF9WYWx1ZSwgX1JlZiwgX1B0cj4gICAgICAgICAgICAgICAgICAgCiAgICBfU2VsZjsKICB0
eXBlZGVmIF9SYl90cmVlX25vZGU8X1ZhbHVlPiogX0xpbmtfdHlwZTsKCiAgX1JiX3RyZWVfaXRl
cmF0b3IoKSB7fQogIF9SYl90cmVlX2l0ZXJhdG9yKF9MaW5rX3R5cGUgX194KSB7IF9NX25vZGUg
PSBfX3g7IH0KICBfUmJfdHJlZV9pdGVyYXRvcihjb25zdCBpdGVyYXRvciYgX19pdCkgeyBfTV9u
b2RlID0gX19pdC5fTV9ub2RlOyB9CgogIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7IHJl
dHVybiBfTGlua190eXBlKF9NX25vZGUpLT5fTV92YWx1ZV9maWVsZDsgfQoKICBwb2ludGVyIG9w
ZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQoKCiAgX1NlbGYmIG9w
ZXJhdG9yKysoKSB7IF9NX2luY3JlbWVudCgpOyByZXR1cm4gKnRoaXM7IH0KICBfU2VsZiBvcGVy
YXRvcisrKGludCkgewogICAgX1NlbGYgX190bXAgPSAqdGhpczsKICAgIF9NX2luY3JlbWVudCgp
OwogICAgcmV0dXJuIF9fdG1wOwogIH0KICAgIAogIF9TZWxmJiBvcGVyYXRvci0tKCkgeyBfTV9k
ZWNyZW1lbnQoKTsgcmV0dXJuICp0aGlzOyB9CiAgX1NlbGYgb3BlcmF0b3ItLShpbnQpIHsKICAg
IF9TZWxmIF9fdG1wID0gKnRoaXM7CiAgICBfTV9kZWNyZW1lbnQoKTsKICAgIHJldHVybiBfX3Rt
cDsKICB9Cn07CgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IF9SYl90cmVlX2Jhc2VfaXRl
cmF0b3ImIF9feCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUmJfdHJlZV9iYXNlX2l0
ZXJhdG9yJiBfX3kpIHsKICByZXR1cm4gX194Ll9NX25vZGUgPT0gX195Ll9NX25vZGU7Cn0KCmlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgX1JiX3RyZWVfYmFzZV9pdGVyYXRvciYgX194LAog
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9SYl90cmVlX2Jhc2VfaXRlcmF0b3ImIF9feSkg
ewogIHJldHVybiBfX3guX01fbm9kZSAhPSBfX3kuX01fbm9kZTsKfQoKIyAyMTQgIi91c3IvbG9j
YWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2lu
Y2x1ZGUvZysrLTMvc3RsX3RyZWUuaCIgMwoKCmlubGluZSB2b2lkIApfUmJfdHJlZV9yb3RhdGVf
bGVmdChfUmJfdHJlZV9ub2RlX2Jhc2UqIF9feCwgX1JiX3RyZWVfbm9kZV9iYXNlKiYgX19yb290
KQp7CiAgX1JiX3RyZWVfbm9kZV9iYXNlKiBfX3kgPSBfX3gtPl9NX3JpZ2h0OwogIF9feC0+X01f
cmlnaHQgPSBfX3ktPl9NX2xlZnQ7CiAgaWYgKF9feS0+X01fbGVmdCAhPTApCiAgICBfX3ktPl9N
X2xlZnQtPl9NX3BhcmVudCA9IF9feDsKICBfX3ktPl9NX3BhcmVudCA9IF9feC0+X01fcGFyZW50
OwoKICBpZiAoX194ID09IF9fcm9vdCkKICAgIF9fcm9vdCA9IF9feTsKICBlbHNlIGlmIChfX3gg
PT0gX194LT5fTV9wYXJlbnQtPl9NX2xlZnQpCiAgICBfX3gtPl9NX3BhcmVudC0+X01fbGVmdCA9
IF9feTsKICBlbHNlCiAgICBfX3gtPl9NX3BhcmVudC0+X01fcmlnaHQgPSBfX3k7CiAgX195LT5f
TV9sZWZ0ID0gX194OwogIF9feC0+X01fcGFyZW50ID0gX195Owp9CgppbmxpbmUgdm9pZCAKX1Ji
X3RyZWVfcm90YXRlX3JpZ2h0KF9SYl90cmVlX25vZGVfYmFzZSogX194LCBfUmJfdHJlZV9ub2Rl
X2Jhc2UqJiBfX3Jvb3QpCnsKICBfUmJfdHJlZV9ub2RlX2Jhc2UqIF9feSA9IF9feC0+X01fbGVm
dDsKICBfX3gtPl9NX2xlZnQgPSBfX3ktPl9NX3JpZ2h0OwogIGlmIChfX3ktPl9NX3JpZ2h0ICE9
IDApCiAgICBfX3ktPl9NX3JpZ2h0LT5fTV9wYXJlbnQgPSBfX3g7CiAgX195LT5fTV9wYXJlbnQg
PSBfX3gtPl9NX3BhcmVudDsKCiAgaWYgKF9feCA9PSBfX3Jvb3QpCiAgICBfX3Jvb3QgPSBfX3k7
CiAgZWxzZSBpZiAoX194ID09IF9feC0+X01fcGFyZW50LT5fTV9yaWdodCkKICAgIF9feC0+X01f
cGFyZW50LT5fTV9yaWdodCA9IF9feTsKICBlbHNlCiAgICBfX3gtPl9NX3BhcmVudC0+X01fbGVm
dCA9IF9feTsKICBfX3ktPl9NX3JpZ2h0ID0gX194OwogIF9feC0+X01fcGFyZW50ID0gX195Owp9
CgppbmxpbmUgdm9pZCAKX1JiX3RyZWVfcmViYWxhbmNlKF9SYl90cmVlX25vZGVfYmFzZSogX194
LCBfUmJfdHJlZV9ub2RlX2Jhc2UqJiBfX3Jvb3QpCnsKICBfX3gtPl9NX2NvbG9yID0gX1NfcmJf
dHJlZV9yZWQ7CiAgd2hpbGUgKF9feCAhPSBfX3Jvb3QgJiYgX194LT5fTV9wYXJlbnQtPl9NX2Nv
bG9yID09IF9TX3JiX3RyZWVfcmVkKSB7CiAgICBpZiAoX194LT5fTV9wYXJlbnQgPT0gX194LT5f
TV9wYXJlbnQtPl9NX3BhcmVudC0+X01fbGVmdCkgewogICAgICBfUmJfdHJlZV9ub2RlX2Jhc2Uq
IF9feSA9IF9feC0+X01fcGFyZW50LT5fTV9wYXJlbnQtPl9NX3JpZ2h0OwogICAgICBpZiAoX195
ICYmIF9feS0+X01fY29sb3IgPT0gX1NfcmJfdHJlZV9yZWQpIHsKICAgICAgICBfX3gtPl9NX3Bh
cmVudC0+X01fY29sb3IgPSBfU19yYl90cmVlX2JsYWNrOwogICAgICAgIF9feS0+X01fY29sb3Ig
PSBfU19yYl90cmVlX2JsYWNrOwogICAgICAgIF9feC0+X01fcGFyZW50LT5fTV9wYXJlbnQtPl9N
X2NvbG9yID0gX1NfcmJfdHJlZV9yZWQ7CiAgICAgICAgX194ID0gX194LT5fTV9wYXJlbnQtPl9N
X3BhcmVudDsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBpZiAoX194ID09IF9feC0+X01f
cGFyZW50LT5fTV9yaWdodCkgewogICAgICAgICAgX194ID0gX194LT5fTV9wYXJlbnQ7CiAgICAg
ICAgICBfUmJfdHJlZV9yb3RhdGVfbGVmdChfX3gsIF9fcm9vdCk7CiAgICAgICAgfQogICAgICAg
IF9feC0+X01fcGFyZW50LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7CiAgICAgICAgX194
LT5fTV9wYXJlbnQtPl9NX3BhcmVudC0+X01fY29sb3IgPSBfU19yYl90cmVlX3JlZDsKICAgICAg
ICBfUmJfdHJlZV9yb3RhdGVfcmlnaHQoX194LT5fTV9wYXJlbnQtPl9NX3BhcmVudCwgX19yb290
KTsKICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgIF9SYl90cmVlX25vZGVfYmFzZSogX195
ID0gX194LT5fTV9wYXJlbnQtPl9NX3BhcmVudC0+X01fbGVmdDsKICAgICAgaWYgKF9feSAmJiBf
X3ktPl9NX2NvbG9yID09IF9TX3JiX3RyZWVfcmVkKSB7CiAgICAgICAgX194LT5fTV9wYXJlbnQt
Pl9NX2NvbG9yID0gX1NfcmJfdHJlZV9ibGFjazsKICAgICAgICBfX3ktPl9NX2NvbG9yID0gX1Nf
cmJfdHJlZV9ibGFjazsKICAgICAgICBfX3gtPl9NX3BhcmVudC0+X01fcGFyZW50LT5fTV9jb2xv
ciA9IF9TX3JiX3RyZWVfcmVkOwogICAgICAgIF9feCA9IF9feC0+X01fcGFyZW50LT5fTV9wYXJl
bnQ7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgaWYgKF9feCA9PSBfX3gtPl9NX3BhcmVu
dC0+X01fbGVmdCkgewogICAgICAgICAgX194ID0gX194LT5fTV9wYXJlbnQ7CiAgICAgICAgICBf
UmJfdHJlZV9yb3RhdGVfcmlnaHQoX194LCBfX3Jvb3QpOwogICAgICAgIH0KICAgICAgICBfX3gt
Pl9NX3BhcmVudC0+X01fY29sb3IgPSBfU19yYl90cmVlX2JsYWNrOwogICAgICAgIF9feC0+X01f
cGFyZW50LT5fTV9wYXJlbnQtPl9NX2NvbG9yID0gX1NfcmJfdHJlZV9yZWQ7CiAgICAgICAgX1Ji
X3RyZWVfcm90YXRlX2xlZnQoX194LT5fTV9wYXJlbnQtPl9NX3BhcmVudCwgX19yb290KTsKICAg
ICAgfQogICAgfQogIH0KICBfX3Jvb3QtPl9NX2NvbG9yID0gX1NfcmJfdHJlZV9ibGFjazsKfQoK
aW5saW5lIF9SYl90cmVlX25vZGVfYmFzZSoKX1JiX3RyZWVfcmViYWxhbmNlX2Zvcl9lcmFzZShf
UmJfdHJlZV9ub2RlX2Jhc2UqIF9feiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmJf
dHJlZV9ub2RlX2Jhc2UqJiBfX3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1Ji
X3RyZWVfbm9kZV9iYXNlKiYgX19sZWZ0bW9zdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfUmJfdHJlZV9ub2RlX2Jhc2UqJiBfX3JpZ2h0bW9zdCkKewogIF9SYl90cmVlX25vZGVfYmFz
ZSogX195ID0gX196OwogIF9SYl90cmVlX25vZGVfYmFzZSogX194ID0gMDsKICBfUmJfdHJlZV9u
b2RlX2Jhc2UqIF9feF9wYXJlbnQgPSAwOwogIGlmIChfX3ktPl9NX2xlZnQgPT0gMCkgICAgICAK
ICAgIF9feCA9IF9feS0+X01fcmlnaHQ7ICAgICAgCiAgZWxzZQogICAgaWYgKF9feS0+X01fcmln
aHQgPT0gMCkgICAKICAgICAgX194ID0gX195LT5fTV9sZWZ0OyAgICAgCiAgICBlbHNlIHsgICAg
ICAgICAgICAgICAgICAgIAogICAgICBfX3kgPSBfX3ktPl9NX3JpZ2h0OyAgICAKICAgICAgd2hp
bGUgKF9feS0+X01fbGVmdCAhPSAwKQogICAgICAgIF9feSA9IF9feS0+X01fbGVmdDsKICAgICAg
X194ID0gX195LT5fTV9yaWdodDsKICAgIH0KICBpZiAoX195ICE9IF9feikgeyAgICAgICAgICAg
CiAgICBfX3otPl9NX2xlZnQtPl9NX3BhcmVudCA9IF9feTsgCiAgICBfX3ktPl9NX2xlZnQgPSBf
X3otPl9NX2xlZnQ7CiAgICBpZiAoX195ICE9IF9fei0+X01fcmlnaHQpIHsKICAgICAgX194X3Bh
cmVudCA9IF9feS0+X01fcGFyZW50OwogICAgICBpZiAoX194KSBfX3gtPl9NX3BhcmVudCA9IF9f
eS0+X01fcGFyZW50OwogICAgICBfX3ktPl9NX3BhcmVudC0+X01fbGVmdCA9IF9feDsgICAgICAg
CiAgICAgIF9feS0+X01fcmlnaHQgPSBfX3otPl9NX3JpZ2h0OwogICAgICBfX3otPl9NX3JpZ2h0
LT5fTV9wYXJlbnQgPSBfX3k7CiAgICB9CiAgICBlbHNlCiAgICAgIF9feF9wYXJlbnQgPSBfX3k7
ICAKICAgIGlmIChfX3Jvb3QgPT0gX196KQogICAgICBfX3Jvb3QgPSBfX3k7CiAgICBlbHNlIGlm
IChfX3otPl9NX3BhcmVudC0+X01fbGVmdCA9PSBfX3opCiAgICAgIF9fei0+X01fcGFyZW50LT5f
TV9sZWZ0ID0gX195OwogICAgZWxzZSAKICAgICAgX196LT5fTV9wYXJlbnQtPl9NX3JpZ2h0ID0g
X195OwogICAgX195LT5fTV9wYXJlbnQgPSBfX3otPl9NX3BhcmVudDsKICAgICA6OnN3YXAoX195
LT5fTV9jb2xvciwgX196LT5fTV9jb2xvcik7CiAgICBfX3kgPSBfX3o7CiAgICAgCiAgfQogIGVs
c2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIF9feF9wYXJlbnQgPSBfX3ktPl9NX3Bh
cmVudDsKICAgIGlmIChfX3gpIF9feC0+X01fcGFyZW50ID0gX195LT5fTV9wYXJlbnQ7ICAgCiAg
ICBpZiAoX19yb290ID09IF9feikKICAgICAgX19yb290ID0gX194OwogICAgZWxzZSAKICAgICAg
aWYgKF9fei0+X01fcGFyZW50LT5fTV9sZWZ0ID09IF9feikKICAgICAgICBfX3otPl9NX3BhcmVu
dC0+X01fbGVmdCA9IF9feDsKICAgICAgZWxzZQogICAgICAgIF9fei0+X01fcGFyZW50LT5fTV9y
aWdodCA9IF9feDsKICAgIGlmIChfX2xlZnRtb3N0ID09IF9feikgCiAgICAgIGlmIChfX3otPl9N
X3JpZ2h0ID09IDApICAgICAgICAgCiAgICAgICAgX19sZWZ0bW9zdCA9IF9fei0+X01fcGFyZW50
OwogICAgIAogICAgICBlbHNlCiAgICAgICAgX19sZWZ0bW9zdCA9IF9SYl90cmVlX25vZGVfYmFz
ZTo6X1NfbWluaW11bShfX3gpOwogICAgaWYgKF9fcmlnaHRtb3N0ID09IF9feikgIAogICAgICBp
ZiAoX196LT5fTV9sZWZ0ID09IDApICAgICAgICAgIAogICAgICAgIF9fcmlnaHRtb3N0ID0gX196
LT5fTV9wYXJlbnQ7ICAKICAgICAKICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgX19yaWdodG1vc3QgPSBfUmJfdHJlZV9ub2RlX2Jhc2U6Ol9TX21heGltdW0oX194KTsK
ICB9CiAgaWYgKF9feS0+X01fY29sb3IgIT0gX1NfcmJfdHJlZV9yZWQpIHsgCiAgICB3aGlsZSAo
X194ICE9IF9fcm9vdCAmJiAoX194ID09IDAgfHwgX194LT5fTV9jb2xvciA9PSBfU19yYl90cmVl
X2JsYWNrKSkKICAgICAgaWYgKF9feCA9PSBfX3hfcGFyZW50LT5fTV9sZWZ0KSB7CiAgICAgICAg
X1JiX3RyZWVfbm9kZV9iYXNlKiBfX3cgPSBfX3hfcGFyZW50LT5fTV9yaWdodDsKICAgICAgICBp
ZiAoX193LT5fTV9jb2xvciA9PSBfU19yYl90cmVlX3JlZCkgewogICAgICAgICAgX193LT5fTV9j
b2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7CiAgICAgICAgICBfX3hfcGFyZW50LT5fTV9jb2xvciA9
IF9TX3JiX3RyZWVfcmVkOwogICAgICAgICAgX1JiX3RyZWVfcm90YXRlX2xlZnQoX194X3BhcmVu
dCwgX19yb290KTsKICAgICAgICAgIF9fdyA9IF9feF9wYXJlbnQtPl9NX3JpZ2h0OwogICAgICAg
IH0KICAgICAgICBpZiAoKF9fdy0+X01fbGVmdCA9PSAwIHx8IAogICAgICAgICAgICAgX193LT5f
TV9sZWZ0LT5fTV9jb2xvciA9PSBfU19yYl90cmVlX2JsYWNrKSAmJgogICAgICAgICAgICAoX193
LT5fTV9yaWdodCA9PSAwIHx8IAogICAgICAgICAgICAgX193LT5fTV9yaWdodC0+X01fY29sb3Ig
PT0gX1NfcmJfdHJlZV9ibGFjaykpIHsKICAgICAgICAgIF9fdy0+X01fY29sb3IgPSBfU19yYl90
cmVlX3JlZDsKICAgICAgICAgIF9feCA9IF9feF9wYXJlbnQ7CiAgICAgICAgICBfX3hfcGFyZW50
ID0gX194X3BhcmVudC0+X01fcGFyZW50OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAo
X193LT5fTV9yaWdodCA9PSAwIHx8IAogICAgICAgICAgICAgIF9fdy0+X01fcmlnaHQtPl9NX2Nv
bG9yID09IF9TX3JiX3RyZWVfYmxhY2spIHsKICAgICAgICAgICAgaWYgKF9fdy0+X01fbGVmdCkg
X193LT5fTV9sZWZ0LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7CiAgICAgICAgICAgIF9f
dy0+X01fY29sb3IgPSBfU19yYl90cmVlX3JlZDsKICAgICAgICAgICAgX1JiX3RyZWVfcm90YXRl
X3JpZ2h0KF9fdywgX19yb290KTsKICAgICAgICAgICAgX193ID0gX194X3BhcmVudC0+X01fcmln
aHQ7CiAgICAgICAgICB9CiAgICAgICAgICBfX3ctPl9NX2NvbG9yID0gX194X3BhcmVudC0+X01f
Y29sb3I7CiAgICAgICAgICBfX3hfcGFyZW50LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7
CiAgICAgICAgICBpZiAoX193LT5fTV9yaWdodCkgX193LT5fTV9yaWdodC0+X01fY29sb3IgPSBf
U19yYl90cmVlX2JsYWNrOwogICAgICAgICAgX1JiX3RyZWVfcm90YXRlX2xlZnQoX194X3BhcmVu
dCwgX19yb290KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgX1JiX3RyZWVfbm9kZV9iYXNlKiBfX3cgPSBfX3hfcGFy
ZW50LT5fTV9sZWZ0OwogICAgICAgIGlmIChfX3ctPl9NX2NvbG9yID09IF9TX3JiX3RyZWVfcmVk
KSB7CiAgICAgICAgICBfX3ctPl9NX2NvbG9yID0gX1NfcmJfdHJlZV9ibGFjazsKICAgICAgICAg
IF9feF9wYXJlbnQtPl9NX2NvbG9yID0gX1NfcmJfdHJlZV9yZWQ7CiAgICAgICAgICBfUmJfdHJl
ZV9yb3RhdGVfcmlnaHQoX194X3BhcmVudCwgX19yb290KTsKICAgICAgICAgIF9fdyA9IF9feF9w
YXJlbnQtPl9NX2xlZnQ7CiAgICAgICAgfQogICAgICAgIGlmICgoX193LT5fTV9yaWdodCA9PSAw
IHx8IAogICAgICAgICAgICAgX193LT5fTV9yaWdodC0+X01fY29sb3IgPT0gX1NfcmJfdHJlZV9i
bGFjaykgJiYKICAgICAgICAgICAgKF9fdy0+X01fbGVmdCA9PSAwIHx8IAogICAgICAgICAgICAg
X193LT5fTV9sZWZ0LT5fTV9jb2xvciA9PSBfU19yYl90cmVlX2JsYWNrKSkgewogICAgICAgICAg
X193LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfcmVkOwogICAgICAgICAgX194ID0gX194X3BhcmVu
dDsKICAgICAgICAgIF9feF9wYXJlbnQgPSBfX3hfcGFyZW50LT5fTV9wYXJlbnQ7CiAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgIGlmIChfX3ctPl9NX2xlZnQgPT0gMCB8fCAKICAgICAgICAgICAg
ICBfX3ctPl9NX2xlZnQtPl9NX2NvbG9yID09IF9TX3JiX3RyZWVfYmxhY2spIHsKICAgICAgICAg
ICAgaWYgKF9fdy0+X01fcmlnaHQpIF9fdy0+X01fcmlnaHQtPl9NX2NvbG9yID0gX1NfcmJfdHJl
ZV9ibGFjazsKICAgICAgICAgICAgX193LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfcmVkOwogICAg
ICAgICAgICBfUmJfdHJlZV9yb3RhdGVfbGVmdChfX3csIF9fcm9vdCk7CiAgICAgICAgICAgIF9f
dyA9IF9feF9wYXJlbnQtPl9NX2xlZnQ7CiAgICAgICAgICB9CiAgICAgICAgICBfX3ctPl9NX2Nv
bG9yID0gX194X3BhcmVudC0+X01fY29sb3I7CiAgICAgICAgICBfX3hfcGFyZW50LT5fTV9jb2xv
ciA9IF9TX3JiX3RyZWVfYmxhY2s7CiAgICAgICAgICBpZiAoX193LT5fTV9sZWZ0KSBfX3ctPl9N
X2xlZnQtPl9NX2NvbG9yID0gX1NfcmJfdHJlZV9ibGFjazsKICAgICAgICAgIF9SYl90cmVlX3Jv
dGF0ZV9yaWdodChfX3hfcGFyZW50LCBfX3Jvb3QpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAg
fQogICAgICB9CiAgICBpZiAoX194KSBfX3gtPl9NX2NvbG9yID0gX1NfcmJfdHJlZV9ibGFjazsK
ICB9CiAgcmV0dXJuIF9feTsKfQoKIAogCiAKIAoKIyA0OTYgIi91c3IvbG9jYWwvbGliL2djYy1s
aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMv
c3RsX3RyZWUuaCIgMwoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4Kc3RydWN0
IF9SYl90cmVlX2Jhc2UKewogIHR5cGVkZWYgX0FsbG9jIGFsbG9jYXRvcl90eXBlOwogIGFsbG9j
YXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBhbGxvY2F0b3JfdHlwZSgp
OyB9CgogIF9SYl90cmVlX2Jhc2UoY29uc3QgYWxsb2NhdG9yX3R5cGUmKSAKICAgIDogX01faGVh
ZGVyKDApIHsgX01faGVhZGVyID0gX01fZ2V0X25vZGUoKTsgfQogIH5fUmJfdHJlZV9iYXNlKCkg
eyBfTV9wdXRfbm9kZShfTV9oZWFkZXIpOyB9Cgpwcm90ZWN0ZWQ6CiAgX1JiX3RyZWVfbm9kZTxf
VHA+KiBfTV9oZWFkZXI7CgogIHR5cGVkZWYgc2ltcGxlX2FsbG9jPF9SYl90cmVlX25vZGU8X1Rw
PiwgX0FsbG9jPiBfQWxsb2NfdHlwZTsKCiAgX1JiX3RyZWVfbm9kZTxfVHA+KiBfTV9nZXRfbm9k
ZSgpCiAgICB7IHJldHVybiBfQWxsb2NfdHlwZTo6YWxsb2NhdGUoMSk7IH0KICB2b2lkIF9NX3B1
dF9ub2RlKF9SYl90cmVlX25vZGU8X1RwPiogX19wKQogICAgeyBfQWxsb2NfdHlwZTo6ZGVhbGxv
Y2F0ZShfX3AsIDEpOyB9Cn07CgoKCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUs
IGNsYXNzIF9LZXlPZlZhbHVlLCBjbGFzcyBfQ29tcGFyZSwKICAgICAgICAgIGNsYXNzIF9BbGxv
YyA9IGFsbG9jICA+CmNsYXNzIF9SYl90cmVlIDogcHJvdGVjdGVkIF9SYl90cmVlX2Jhc2U8X1Zh
bHVlLCBfQWxsb2M+IHsKICB0eXBlZGVmIF9SYl90cmVlX2Jhc2U8X1ZhbHVlLCBfQWxsb2M+IF9C
YXNlOwpwcm90ZWN0ZWQ6CiAgdHlwZWRlZiBfUmJfdHJlZV9ub2RlX2Jhc2UqIF9CYXNlX3B0cjsK
ICB0eXBlZGVmIF9SYl90cmVlX25vZGU8X1ZhbHVlPiBfUmJfdHJlZV9ub2RlOwogIHR5cGVkZWYg
X1JiX3RyZWVfQ29sb3JfdHlwZSBfQ29sb3JfdHlwZTsKcHVibGljOgogIHR5cGVkZWYgX0tleSBr
ZXlfdHlwZTsKICB0eXBlZGVmIF9WYWx1ZSB2YWx1ZV90eXBlOwogIHR5cGVkZWYgdmFsdWVfdHlw
ZSogcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqIGNvbnN0X3BvaW50ZXI7CiAg
dHlwZWRlZiB2YWx1ZV90eXBlJiByZWZlcmVuY2U7CiAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBl
JiBjb25zdF9yZWZlcmVuY2U7CiAgdHlwZWRlZiBfUmJfdHJlZV9ub2RlKiBfTGlua190eXBlOwog
IHR5cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNl
X3R5cGU7CgogIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6OmFsbG9jYXRvcl90eXBlIGFsbG9jYXRv
cl90eXBlOwogIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBf
QmFzZTo6Z2V0X2FsbG9jYXRvcigpOyB9Cgpwcm90ZWN0ZWQ6CgoKCgoKCnByb3RlY3RlZDoKCiAg
X0xpbmtfdHlwZSBfTV9jcmVhdGVfbm9kZShjb25zdCB2YWx1ZV90eXBlJiBfX3gpCiAgewogICAg
X0xpbmtfdHlwZSBfX3RtcCA9IF9NX2dldF9ub2RlKCk7CiAgICB0cnkgIHsKICAgICAgY29uc3Ry
dWN0KCZfX3RtcC0+X01fdmFsdWVfZmllbGQsIF9feCk7CiAgICB9CiAgICBjYXRjaCguLi4pIHsg
IF9NX3B1dF9ub2RlKF9fdG1wKSA7IHRocm93OyB9IDsKICAgIHJldHVybiBfX3RtcDsKICB9Cgog
IF9MaW5rX3R5cGUgX01fY2xvbmVfbm9kZShfTGlua190eXBlIF9feCkKICB7CiAgICBfTGlua190
eXBlIF9fdG1wID0gX01fY3JlYXRlX25vZGUoX194LT5fTV92YWx1ZV9maWVsZCk7CiAgICBfX3Rt
cC0+X01fY29sb3IgPSBfX3gtPl9NX2NvbG9yOwogICAgX190bXAtPl9NX2xlZnQgPSAwOwogICAg
X190bXAtPl9NX3JpZ2h0ID0gMDsKICAgIHJldHVybiBfX3RtcDsKICB9CgogIHZvaWQgZGVzdHJv
eV9ub2RlKF9MaW5rX3R5cGUgX19wKQogIHsKICAgIGRlc3Ryb3koJl9fcC0+X01fdmFsdWVfZmll
bGQpOwogICAgX01fcHV0X25vZGUoX19wKTsKICB9Cgpwcm90ZWN0ZWQ6CiAgc2l6ZV90eXBlIF9N
X25vZGVfY291bnQ7ICAKICBfQ29tcGFyZSBfTV9rZXlfY29tcGFyZTsKCiAgX0xpbmtfdHlwZSYg
X01fcm9vdCgpIGNvbnN0IAogICAgeyByZXR1cm4gKF9MaW5rX3R5cGUmKSBfTV9oZWFkZXItPl9N
X3BhcmVudDsgfQogIF9MaW5rX3R5cGUmIF9NX2xlZnRtb3N0KCkgY29uc3QgCiAgICB7IHJldHVy
biAoX0xpbmtfdHlwZSYpIF9NX2hlYWRlci0+X01fbGVmdDsgfQogIF9MaW5rX3R5cGUmIF9NX3Jp
Z2h0bW9zdCgpIGNvbnN0IAogICAgeyByZXR1cm4gKF9MaW5rX3R5cGUmKSBfTV9oZWFkZXItPl9N
X3JpZ2h0OyB9CgogIHN0YXRpYyBfTGlua190eXBlJiBfU19sZWZ0KF9MaW5rX3R5cGUgX194KQog
ICAgeyByZXR1cm4gKF9MaW5rX3R5cGUmKShfX3gtPl9NX2xlZnQpOyB9CiAgc3RhdGljIF9MaW5r
X3R5cGUmIF9TX3JpZ2h0KF9MaW5rX3R5cGUgX194KQogICAgeyByZXR1cm4gKF9MaW5rX3R5cGUm
KShfX3gtPl9NX3JpZ2h0KTsgfQogIHN0YXRpYyBfTGlua190eXBlJiBfU19wYXJlbnQoX0xpbmtf
dHlwZSBfX3gpCiAgICB7IHJldHVybiAoX0xpbmtfdHlwZSYpKF9feC0+X01fcGFyZW50KTsgfQog
IHN0YXRpYyByZWZlcmVuY2UgX1NfdmFsdWUoX0xpbmtfdHlwZSBfX3gpCiAgICB7IHJldHVybiBf
X3gtPl9NX3ZhbHVlX2ZpZWxkOyB9CiAgc3RhdGljIGNvbnN0IF9LZXkmIF9TX2tleShfTGlua190
eXBlIF9feCkKICAgIHsgcmV0dXJuIF9LZXlPZlZhbHVlKCkoX1NfdmFsdWUoX194KSk7IH0KICBz
dGF0aWMgX0NvbG9yX3R5cGUmIF9TX2NvbG9yKF9MaW5rX3R5cGUgX194KQogICAgeyByZXR1cm4g
KF9Db2xvcl90eXBlJikoX194LT5fTV9jb2xvcik7IH0KCiAgc3RhdGljIF9MaW5rX3R5cGUmIF9T
X2xlZnQoX0Jhc2VfcHRyIF9feCkKICAgIHsgcmV0dXJuIChfTGlua190eXBlJikoX194LT5fTV9s
ZWZ0KTsgfQogIHN0YXRpYyBfTGlua190eXBlJiBfU19yaWdodChfQmFzZV9wdHIgX194KQogICAg
eyByZXR1cm4gKF9MaW5rX3R5cGUmKShfX3gtPl9NX3JpZ2h0KTsgfQogIHN0YXRpYyBfTGlua190
eXBlJiBfU19wYXJlbnQoX0Jhc2VfcHRyIF9feCkKICAgIHsgcmV0dXJuIChfTGlua190eXBlJiko
X194LT5fTV9wYXJlbnQpOyB9CiAgc3RhdGljIHJlZmVyZW5jZSBfU192YWx1ZShfQmFzZV9wdHIg
X194KQogICAgeyByZXR1cm4gKChfTGlua190eXBlKV9feCktPl9NX3ZhbHVlX2ZpZWxkOyB9CiAg
c3RhdGljIGNvbnN0IF9LZXkmIF9TX2tleShfQmFzZV9wdHIgX194KQogICAgeyByZXR1cm4gX0tl
eU9mVmFsdWUoKShfU192YWx1ZShfTGlua190eXBlKF9feCkpKTt9IAogIHN0YXRpYyBfQ29sb3Jf
dHlwZSYgX1NfY29sb3IoX0Jhc2VfcHRyIF9feCkKICAgIHsgcmV0dXJuIChfQ29sb3JfdHlwZSYp
KF9MaW5rX3R5cGUoX194KS0+X01fY29sb3IpOyB9CgogIHN0YXRpYyBfTGlua190eXBlIF9TX21p
bmltdW0oX0xpbmtfdHlwZSBfX3gpIAogICAgeyByZXR1cm4gKF9MaW5rX3R5cGUpICBfUmJfdHJl
ZV9ub2RlX2Jhc2U6Ol9TX21pbmltdW0oX194KTsgfQoKICBzdGF0aWMgX0xpbmtfdHlwZSBfU19t
YXhpbXVtKF9MaW5rX3R5cGUgX194KQogICAgeyByZXR1cm4gKF9MaW5rX3R5cGUpIF9SYl90cmVl
X25vZGVfYmFzZTo6X1NfbWF4aW11bShfX3gpOyB9CgpwdWJsaWM6CiAgdHlwZWRlZiBfUmJfdHJl
ZV9pdGVyYXRvcjx2YWx1ZV90eXBlLCByZWZlcmVuY2UsIHBvaW50ZXI+IGl0ZXJhdG9yOwogIHR5
cGVkZWYgX1JiX3RyZWVfaXRlcmF0b3I8dmFsdWVfdHlwZSwgY29uc3RfcmVmZXJlbmNlLCBjb25z
dF9wb2ludGVyPiAKICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yOwoKCiAgdHlwZWRlZiByZXZlcnNl
X2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwogIHR5cGVk
ZWYgcmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4gcmV2ZXJzZV9pdGVyYXRvcjsKCgoKCgoKCiAK
CnByaXZhdGU6CiAgaXRlcmF0b3IgX01faW5zZXJ0KF9CYXNlX3B0ciBfX3gsIF9CYXNlX3B0ciBf
X3ksIGNvbnN0IHZhbHVlX3R5cGUmIF9fdik7CiAgX0xpbmtfdHlwZSBfTV9jb3B5KF9MaW5rX3R5
cGUgX194LCBfTGlua190eXBlIF9fcCk7CiAgdm9pZCBfTV9lcmFzZShfTGlua190eXBlIF9feCk7
CgpwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogIF9SYl90cmVlKCkK
ICAgIDogX0Jhc2UoYWxsb2NhdG9yX3R5cGUoKSksIF9NX25vZGVfY291bnQoMCksIF9NX2tleV9j
b21wYXJlKCkKICAgIHsgX01fZW1wdHlfaW5pdGlhbGl6ZSgpOyB9CgogIF9SYl90cmVlKGNvbnN0
IF9Db21wYXJlJiBfX2NvbXApCiAgICA6IF9CYXNlKGFsbG9jYXRvcl90eXBlKCkpLCBfTV9ub2Rl
X2NvdW50KDApLCBfTV9rZXlfY29tcGFyZShfX2NvbXApIAogICAgeyBfTV9lbXB0eV9pbml0aWFs
aXplKCk7IH0KCiAgX1JiX3RyZWUoY29uc3QgX0NvbXBhcmUmIF9fY29tcCwgY29uc3QgYWxsb2Nh
dG9yX3R5cGUmIF9fYSkKICAgIDogX0Jhc2UoX19hKSwgX01fbm9kZV9jb3VudCgwKSwgX01fa2V5
X2NvbXBhcmUoX19jb21wKSAKICAgIHsgX01fZW1wdHlfaW5pdGlhbGl6ZSgpOyB9CgogIF9SYl90
cmVlKGNvbnN0IF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxv
Yz4mIF9feCkgCiAgICA6IF9CYXNlKF9feC5nZXRfYWxsb2NhdG9yKCkpLAogICAgICBfTV9ub2Rl
X2NvdW50KDApLCBfTV9rZXlfY29tcGFyZShfX3guX01fa2V5X2NvbXBhcmUpCiAgeyAKICAgIGlm
IChfX3guX01fcm9vdCgpID09IDApCiAgICAgIF9NX2VtcHR5X2luaXRpYWxpemUoKTsKICAgIGVs
c2UgewogICAgICBfU19jb2xvcihfTV9oZWFkZXIpID0gX1NfcmJfdHJlZV9yZWQ7CiAgICAgIF9N
X3Jvb3QoKSA9IF9NX2NvcHkoX194Ll9NX3Jvb3QoKSwgX01faGVhZGVyKTsKICAgICAgX01fbGVm
dG1vc3QoKSA9IF9TX21pbmltdW0oX01fcm9vdCgpKTsKICAgICAgX01fcmlnaHRtb3N0KCkgPSBf
U19tYXhpbXVtKF9NX3Jvb3QoKSk7CiAgICB9CiAgICBfTV9ub2RlX2NvdW50ID0gX194Ll9NX25v
ZGVfY291bnQ7CiAgfQogIH5fUmJfdHJlZSgpIHsgY2xlYXIoKTsgfQogIF9SYl90cmVlPF9LZXks
X1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4mIAogIG9wZXJhdG9yPShjb25zdCBf
UmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+JiBfX3gpOwoK
cHJpdmF0ZToKICB2b2lkIF9NX2VtcHR5X2luaXRpYWxpemUoKSB7CiAgICBfU19jb2xvcihfTV9o
ZWFkZXIpID0gX1NfcmJfdHJlZV9yZWQ7ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgX01fcm9vdCgpID0gMDsKICAgIF9NX2xlZnRtb3N0KCkgPSBfTV9o
ZWFkZXI7CiAgICBfTV9yaWdodG1vc3QoKSA9IF9NX2hlYWRlcjsKICB9CgpwdWJsaWM6ICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICBfQ29tcGFyZSBrZXlfY29tcCgpIGNv
bnN0IHsgcmV0dXJuIF9NX2tleV9jb21wYXJlOyB9CiAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVy
biBfTV9sZWZ0bW9zdCgpOyB9CiAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBfTV9sZWZ0bW9zdCgpOyB9CiAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gX01faGVhZGVyOyB9
CiAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gX01faGVhZGVyOyB9CiAgcmV2
ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsg
fQogIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3QgeyAKICAgIHJldHVybiBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgCiAgfQogIHJldmVyc2VfaXRlcmF0b3IgcmVu
ZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KICBjb25zdF9yZXZlcnNl
X2l0ZXJhdG9yIHJlbmQoKSBjb25zdCB7IAogICAgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0
b3IoYmVnaW4oKSk7CiAgfSAKICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gX01fbm9kZV9j
b3VudCA9PSAwOyB9CiAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCB7IHJldHVybiBfTV9ub2RlX2Nv
dW50OyB9CiAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZV90eXBlKC0x
KTsgfQoKICB2b2lkIHN3YXAoX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBh
cmUsX0FsbG9jPiYgX190KSB7CiAgICAgOjpzd2FwKF9NX2hlYWRlciwgX190Ll9NX2hlYWRlcik7
CiAgICAgOjpzd2FwKF9NX25vZGVfY291bnQsIF9fdC5fTV9ub2RlX2NvdW50KTsKICAgICA6OnN3
YXAoX01fa2V5X2NvbXBhcmUsIF9fdC5fTV9rZXlfY29tcGFyZSk7CiAgfQogICAgCnB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgcGFpcjxpdGVyYXRvcixib29sPiBp
bnNlcnRfdW5pcXVlKGNvbnN0IHZhbHVlX3R5cGUmIF9feCk7CiAgaXRlcmF0b3IgaW5zZXJ0X2Vx
dWFsKGNvbnN0IHZhbHVlX3R5cGUmIF9feCk7CgogIGl0ZXJhdG9yIGluc2VydF91bmlxdWUoaXRl
cmF0b3IgX19wb3NpdGlvbiwgY29uc3QgdmFsdWVfdHlwZSYgX194KTsKICBpdGVyYXRvciBpbnNl
cnRfZXF1YWwoaXRlcmF0b3IgX19wb3NpdGlvbiwgY29uc3QgdmFsdWVfdHlwZSYgX194KTsKCgog
IHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIGluc2VydF91bmlxdWUoX0lu
cHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0KTsKICB0ZW1wbGF0ZSA8
Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgdm9pZCBpbnNlcnRfZXF1YWwoX0lucHV0SXRlcmF0b3Ig
X19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0KTsKCgoKCgoKCiAgdm9pZCBlcmFzZShpdGVy
YXRvciBfX3Bvc2l0aW9uKTsKICBzaXplX3R5cGUgZXJhc2UoY29uc3Qga2V5X3R5cGUmIF9feCk7
CiAgdm9pZCBlcmFzZShpdGVyYXRvciBfX2ZpcnN0LCBpdGVyYXRvciBfX2xhc3QpOwogIHZvaWQg
ZXJhc2UoY29uc3Qga2V5X3R5cGUqIF9fZmlyc3QsIGNvbnN0IGtleV90eXBlKiBfX2xhc3QpOwog
IHZvaWQgY2xlYXIoKSB7CiAgICBpZiAoX01fbm9kZV9jb3VudCAhPSAwKSB7CiAgICAgIF9NX2Vy
YXNlKF9NX3Jvb3QoKSk7CiAgICAgIF9NX2xlZnRtb3N0KCkgPSBfTV9oZWFkZXI7CiAgICAgIF9N
X3Jvb3QoKSA9IDA7CiAgICAgIF9NX3JpZ2h0bW9zdCgpID0gX01faGVhZGVyOwogICAgICBfTV9u
b2RlX2NvdW50ID0gMDsKICAgIH0KICB9ICAgICAgCgpwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogIGl0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X3R5cGUmIF9feCk7CiAg
Y29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBrZXlfdHlwZSYgX194KSBjb25zdDsKICBzaXplX3R5
cGUgY291bnQoY29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3Q7CiAgaXRlcmF0b3IgbG93ZXJfYm91
bmQoY29uc3Qga2V5X3R5cGUmIF9feCk7CiAgY29uc3RfaXRlcmF0b3IgbG93ZXJfYm91bmQoY29u
c3Qga2V5X3R5cGUmIF9feCkgY29uc3Q7CiAgaXRlcmF0b3IgdXBwZXJfYm91bmQoY29uc3Qga2V5
X3R5cGUmIF9feCk7CiAgY29uc3RfaXRlcmF0b3IgdXBwZXJfYm91bmQoY29uc3Qga2V5X3R5cGUm
IF9feCkgY29uc3Q7CiAgcGFpcjxpdGVyYXRvcixpdGVyYXRvcj4gZXF1YWxfcmFuZ2UoY29uc3Qg
a2V5X3R5cGUmIF9feCk7CiAgcGFpcjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3I+IGVx
dWFsX3JhbmdlKGNvbnN0IGtleV90eXBlJiBfX3gpIGNvbnN0OwoKcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICBib29sIF9fcmJfdmVyaWZ5KCkgY29uc3Q7Cn07Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbHVlLCBjbGFzcyBfS2V5T2ZWYWx1ZSwgCiAg
ICAgICAgICBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgppbmxpbmUgYm9vbCAKb3BlcmF0
b3I9PShjb25zdCBfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxs
b2M+JiBfX3gsIAogICAgICAgICAgIGNvbnN0IF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZh
bHVlLF9Db21wYXJlLF9BbGxvYz4mIF9feSkKewogIHJldHVybiBfX3guc2l6ZSgpID09IF9feS5z
aXplKCkgJiYKICAgICAgICAgZXF1YWwoX194LmJlZ2luKCksIF9feC5lbmQoKSwgX195LmJlZ2lu
KCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbHVlLCBjbGFzcyBfS2V5T2ZW
YWx1ZSwgCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgppbmxpbmUgYm9v
bCAKb3BlcmF0b3I8KGNvbnN0IF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21w
YXJlLF9BbGxvYz4mIF9feCwgCiAgICAgICAgICBjb25zdCBfUmJfdHJlZTxfS2V5LF9WYWx1ZSxf
S2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+JiBfX3kpCnsKICByZXR1cm4gbGV4aWNvZ3JhcGhp
Y2FsX2NvbXBhcmUoX194LmJlZ2luKCksIF9feC5lbmQoKSwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9feS5iZWdpbigpLCBfX3kuZW5kKCkpOwp9CgoKCnRlbXBsYXRlIDxjbGFz
cyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNz
IF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CmlubGluZSB2b2lkIApzd2FwKF9SYl90cmVlPF9LZXks
X1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4mIF9feCwgCiAgICAgX1JiX3RyZWU8
X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPiYgX195KQp7CiAgX194LnN3
YXAoX195KTsKfQoKCgoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3Mg
X0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KX1Ji
X3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPiYgCl9SYl90cmVl
PF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4KICA6Om9wZXJhdG9yPShj
b25zdCBfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+JiBf
X3gpCnsKICBpZiAodGhpcyAhPSAmX194KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgY2xlYXIoKTsKICAgIF9NX25vZGVfY291bnQgPSAwOwogICAgX01fa2V5X2NvbXBh
cmUgPSBfX3guX01fa2V5X2NvbXBhcmU7ICAgICAgICAKICAgIGlmIChfX3guX01fcm9vdCgpID09
IDApIHsKICAgICAgX01fcm9vdCgpID0gMDsKICAgICAgX01fbGVmdG1vc3QoKSA9IF9NX2hlYWRl
cjsKICAgICAgX01fcmlnaHRtb3N0KCkgPSBfTV9oZWFkZXI7CiAgICB9CiAgICBlbHNlIHsKICAg
ICAgX01fcm9vdCgpID0gX01fY29weShfX3guX01fcm9vdCgpLCBfTV9oZWFkZXIpOwogICAgICBf
TV9sZWZ0bW9zdCgpID0gX1NfbWluaW11bShfTV9yb290KCkpOwogICAgICBfTV9yaWdodG1vc3Qo
KSA9IF9TX21heGltdW0oX01fcm9vdCgpKTsKICAgICAgX01fbm9kZV9jb3VudCA9IF9feC5fTV9u
b2RlX2NvdW50OwogICAgfQogIH0KICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
S2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9D
b21wYXJlLCBjbGFzcyBfQWxsb2M+CnR5cGVuYW1lIF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlP
ZlZhbHVlLF9Db21wYXJlLF9BbGxvYz46Oml0ZXJhdG9yCl9SYl90cmVlPF9LZXksX1ZhbHVlLF9L
ZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4KICA6Ol9NX2luc2VydChfQmFzZV9wdHIgX194Xywg
X0Jhc2VfcHRyIF9feV8sIGNvbnN0IF9WYWx1ZSYgX192KQp7CiAgX0xpbmtfdHlwZSBfX3ggPSAo
X0xpbmtfdHlwZSkgX194XzsKICBfTGlua190eXBlIF9feSA9IChfTGlua190eXBlKSBfX3lfOwog
IF9MaW5rX3R5cGUgX196OwoKICBpZiAoX195ID09IF9NX2hlYWRlciB8fCBfX3ggIT0gMCB8fCAK
ICAgICAgX01fa2V5X2NvbXBhcmUoX0tleU9mVmFsdWUoKShfX3YpLCBfU19rZXkoX195KSkpIHsK
ICAgIF9feiA9IF9NX2NyZWF0ZV9ub2RlKF9fdik7CiAgICBfU19sZWZ0KF9feSkgPSBfX3o7ICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
IGlmIChfX3kgPT0gX01faGVhZGVyKSB7CiAgICAgIF9NX3Jvb3QoKSA9IF9fejsKICAgICAgX01f
cmlnaHRtb3N0KCkgPSBfX3o7CiAgICB9CiAgICBlbHNlIGlmIChfX3kgPT0gX01fbGVmdG1vc3Qo
KSkKICAgICAgX01fbGVmdG1vc3QoKSA9IF9fejsgICAgCiAgfQogIGVsc2UgewogICAgX196ID0g
X01fY3JlYXRlX25vZGUoX192KTsKICAgIF9TX3JpZ2h0KF9feSkgPSBfX3o7CiAgICBpZiAoX195
ID09IF9NX3JpZ2h0bW9zdCgpKQogICAgICBfTV9yaWdodG1vc3QoKSA9IF9fejsgICAKICB9CiAg
X1NfcGFyZW50KF9feikgPSBfX3k7CiAgX1NfbGVmdChfX3opID0gMDsKICBfU19yaWdodChfX3op
ID0gMDsKICBfUmJfdHJlZV9yZWJhbGFuY2UoX196LCBfTV9oZWFkZXItPl9NX3BhcmVudCk7CiAg
KytfTV9ub2RlX2NvdW50OwogIHJldHVybiBpdGVyYXRvcihfX3opOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX0tleSwgY2xhc3MgX1ZhbHVlLCBjbGFzcyBfS2V5T2ZWYWx1ZSwgCiAgICAgICAgICBjbGFz
cyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgp0eXBlbmFtZSBfUmJfdHJlZTxfS2V5LF9WYWx1ZSxf
S2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+OjppdGVyYXRvcgpfUmJfdHJlZTxfS2V5LF9WYWx1
ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+CiAgOjppbnNlcnRfZXF1YWwoY29uc3QgX1Zh
bHVlJiBfX3YpCnsKICBfTGlua190eXBlIF9feSA9IF9NX2hlYWRlcjsKICBfTGlua190eXBlIF9f
eCA9IF9NX3Jvb3QoKTsKICB3aGlsZSAoX194ICE9IDApIHsKICAgIF9feSA9IF9feDsKICAgIF9f
eCA9IF9NX2tleV9jb21wYXJlKF9LZXlPZlZhbHVlKCkoX192KSwgX1Nfa2V5KF9feCkpID8gCiAg
ICAgICAgICAgIF9TX2xlZnQoX194KSA6IF9TX3JpZ2h0KF9feCk7CiAgfQogIHJldHVybiBfTV9p
bnNlcnQoX194LCBfX3ksIF9fdik7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1Zh
bHVlLCBjbGFzcyBfS2V5T2ZWYWx1ZSwgCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZSwgY2xhc3Mg
X0FsbG9jPgpwYWlyPHR5cGVuYW1lIF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9D
b21wYXJlLF9BbGxvYz46Oml0ZXJhdG9yLCAKICAgICBib29sPgpfUmJfdHJlZTxfS2V5LF9WYWx1
ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+CiAgOjppbnNlcnRfdW5pcXVlKGNvbnN0IF9W
YWx1ZSYgX192KQp7CiAgX0xpbmtfdHlwZSBfX3kgPSBfTV9oZWFkZXI7CiAgX0xpbmtfdHlwZSBf
X3ggPSBfTV9yb290KCk7CiAgYm9vbCBfX2NvbXAgPSB0cnVlOwogIHdoaWxlIChfX3ggIT0gMCkg
ewogICAgX195ID0gX194OwogICAgX19jb21wID0gX01fa2V5X2NvbXBhcmUoX0tleU9mVmFsdWUo
KShfX3YpLCBfU19rZXkoX194KSk7CiAgICBfX3ggPSBfX2NvbXAgPyBfU19sZWZ0KF9feCkgOiBf
U19yaWdodChfX3gpOwogIH0KICBpdGVyYXRvciBfX2ogPSBpdGVyYXRvcihfX3kpOyAgIAogIGlm
IChfX2NvbXApCiAgICBpZiAoX19qID09IGJlZ2luKCkpICAgICAKICAgICAgcmV0dXJuIHBhaXI8
aXRlcmF0b3IsYm9vbD4oX01faW5zZXJ0KF9feCwgX195LCBfX3YpLCB0cnVlKTsKICAgIGVsc2UK
ICAgICAgLS1fX2o7CiAgaWYgKF9NX2tleV9jb21wYXJlKF9TX2tleShfX2ouX01fbm9kZSksIF9L
ZXlPZlZhbHVlKCkoX192KSkpCiAgICByZXR1cm4gcGFpcjxpdGVyYXRvcixib29sPihfTV9pbnNl
cnQoX194LCBfX3ksIF9fdiksIHRydWUpOwogIHJldHVybiBwYWlyPGl0ZXJhdG9yLGJvb2w+KF9f
aiwgZmFsc2UpOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWwsIGNsYXNzIF9L
ZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CnR5cGVu
YW1lIF9SYl90cmVlPF9LZXksIF9WYWwsIF9LZXlPZlZhbHVlLCBfQ29tcGFyZSwgX0FsbG9jPjo6
aXRlcmF0b3IgCl9SYl90cmVlPF9LZXksIF9WYWwsIF9LZXlPZlZhbHVlLCBfQ29tcGFyZSwgX0Fs
bG9jPgogIDo6aW5zZXJ0X3VuaXF1ZShpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCBfVmFsJiBf
X3YpCnsKICBpZiAoX19wb3NpdGlvbi5fTV9ub2RlID09IF9NX2hlYWRlci0+X01fbGVmdCkgeyAg
CiAgICBpZiAoc2l6ZSgpID4gMCAmJiAKICAgICAgICBfTV9rZXlfY29tcGFyZShfS2V5T2ZWYWx1
ZSgpKF9fdiksIF9TX2tleShfX3Bvc2l0aW9uLl9NX25vZGUpKSkKICAgICAgcmV0dXJuIF9NX2lu
c2VydChfX3Bvc2l0aW9uLl9NX25vZGUsIF9fcG9zaXRpb24uX01fbm9kZSwgX192KTsKICAgICAK
ICAgIGVsc2UKICAgICAgcmV0dXJuIGluc2VydF91bmlxdWUoX192KS5maXJzdDsKICB9IGVsc2Ug
aWYgKF9fcG9zaXRpb24uX01fbm9kZSA9PSBfTV9oZWFkZXIpIHsgIAogICAgaWYgKF9NX2tleV9j
b21wYXJlKF9TX2tleShfTV9yaWdodG1vc3QoKSksIF9LZXlPZlZhbHVlKCkoX192KSkpCiAgICAg
IHJldHVybiBfTV9pbnNlcnQoMCwgX01fcmlnaHRtb3N0KCksIF9fdik7CiAgICBlbHNlCiAgICAg
IHJldHVybiBpbnNlcnRfdW5pcXVlKF9fdikuZmlyc3Q7CiAgfSBlbHNlIHsKICAgIGl0ZXJhdG9y
IF9fYmVmb3JlID0gX19wb3NpdGlvbjsKICAgIC0tX19iZWZvcmU7CiAgICBpZiAoX01fa2V5X2Nv
bXBhcmUoX1Nfa2V5KF9fYmVmb3JlLl9NX25vZGUpLCBfS2V5T2ZWYWx1ZSgpKF9fdikpIAogICAg
ICAgICYmIF9NX2tleV9jb21wYXJlKF9LZXlPZlZhbHVlKCkoX192KSwgX1Nfa2V5KF9fcG9zaXRp
b24uX01fbm9kZSkpKSB7CiAgICAgIGlmIChfU19yaWdodChfX2JlZm9yZS5fTV9ub2RlKSA9PSAw
KQogICAgICAgIHJldHVybiBfTV9pbnNlcnQoMCwgX19iZWZvcmUuX01fbm9kZSwgX192KTsgCiAg
ICAgIGVsc2UKICAgICAgICByZXR1cm4gX01faW5zZXJ0KF9fcG9zaXRpb24uX01fbm9kZSwgX19w
b3NpdGlvbi5fTV9ub2RlLCBfX3YpOwogICAgIAogICAgfSBlbHNlCiAgICAgIHJldHVybiBpbnNl
cnRfdW5pcXVlKF9fdikuZmlyc3Q7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3Mg
X1ZhbCwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNz
IF9BbGxvYz4KdHlwZW5hbWUgX1JiX3RyZWU8X0tleSxfVmFsLF9LZXlPZlZhbHVlLF9Db21wYXJl
LF9BbGxvYz46Oml0ZXJhdG9yIApfUmJfdHJlZTxfS2V5LF9WYWwsX0tleU9mVmFsdWUsX0NvbXBh
cmUsX0FsbG9jPgogIDo6aW5zZXJ0X2VxdWFsKGl0ZXJhdG9yIF9fcG9zaXRpb24sIGNvbnN0IF9W
YWwmIF9fdikKewogIGlmIChfX3Bvc2l0aW9uLl9NX25vZGUgPT0gX01faGVhZGVyLT5fTV9sZWZ0
KSB7ICAKICAgIGlmIChzaXplKCkgPiAwICYmIAogICAgICAgIF9NX2tleV9jb21wYXJlKF9LZXlP
ZlZhbHVlKCkoX192KSwgX1Nfa2V5KF9fcG9zaXRpb24uX01fbm9kZSkpKQogICAgICByZXR1cm4g
X01faW5zZXJ0KF9fcG9zaXRpb24uX01fbm9kZSwgX19wb3NpdGlvbi5fTV9ub2RlLCBfX3YpOwog
ICAgIAogICAgZWxzZQogICAgICByZXR1cm4gaW5zZXJ0X2VxdWFsKF9fdik7CiAgfSBlbHNlIGlm
IChfX3Bvc2l0aW9uLl9NX25vZGUgPT0gX01faGVhZGVyKSB7IAogICAgaWYgKCFfTV9rZXlfY29t
cGFyZShfS2V5T2ZWYWx1ZSgpKF9fdiksIF9TX2tleShfTV9yaWdodG1vc3QoKSkpKQogICAgICBy
ZXR1cm4gX01faW5zZXJ0KDAsIF9NX3JpZ2h0bW9zdCgpLCBfX3YpOwogICAgZWxzZQogICAgICBy
ZXR1cm4gaW5zZXJ0X2VxdWFsKF9fdik7CiAgfSBlbHNlIHsKICAgIGl0ZXJhdG9yIF9fYmVmb3Jl
ID0gX19wb3NpdGlvbjsKICAgIC0tX19iZWZvcmU7CiAgICBpZiAoIV9NX2tleV9jb21wYXJlKF9L
ZXlPZlZhbHVlKCkoX192KSwgX1Nfa2V5KF9fYmVmb3JlLl9NX25vZGUpKQogICAgICAgICYmICFf
TV9rZXlfY29tcGFyZShfU19rZXkoX19wb3NpdGlvbi5fTV9ub2RlKSwgX0tleU9mVmFsdWUoKShf
X3YpKSkgewogICAgICBpZiAoX1NfcmlnaHQoX19iZWZvcmUuX01fbm9kZSkgPT0gMCkKICAgICAg
ICByZXR1cm4gX01faW5zZXJ0KDAsIF9fYmVmb3JlLl9NX25vZGUsIF9fdik7IAogICAgICBlbHNl
CiAgICAgICAgcmV0dXJuIF9NX2luc2VydChfX3Bvc2l0aW9uLl9NX25vZGUsIF9fcG9zaXRpb24u
X01fbm9kZSwgX192KTsKICAgICAKICAgIH0gZWxzZQogICAgICByZXR1cm4gaW5zZXJ0X2VxdWFs
KF9fdik7CiAgfQp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsLCBjbGFzcyBf
S29WLCBjbGFzcyBfQ21wLCBjbGFzcyBfQWxsb2M+CiAgdGVtcGxhdGU8Y2xhc3MgX0lJPgp2b2lk
IF9SYl90cmVlPF9LZXksX1ZhbCxfS29WLF9DbXAsX0FsbG9jPgogIDo6aW5zZXJ0X2VxdWFsKF9J
SSBfX2ZpcnN0LCBfSUkgX19sYXN0KQp7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytf
X2ZpcnN0KQogICAgaW5zZXJ0X2VxdWFsKCpfX2ZpcnN0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9L
ZXksIGNsYXNzIF9WYWwsIGNsYXNzIF9Lb1YsIGNsYXNzIF9DbXAsIGNsYXNzIF9BbGxvYz4gCiAg
dGVtcGxhdGU8Y2xhc3MgX0lJPgp2b2lkIF9SYl90cmVlPF9LZXksX1ZhbCxfS29WLF9DbXAsX0Fs
bG9jPgogIDo6aW5zZXJ0X3VuaXF1ZShfSUkgX19maXJzdCwgX0lJIF9fbGFzdCkgewogIGZvciAo
IDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgIGluc2VydF91bmlxdWUoKl9fZmly
c3QpOwp9CgojIDEwMjEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy
LjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3RyZWUuaCIgMwoKICAgICAg
ICAgCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVl
LCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CmlubGluZSB2b2lkIF9S
Yl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4KICA6OmVyYXNl
KGl0ZXJhdG9yIF9fcG9zaXRpb24pCnsKICBfTGlua190eXBlIF9feSA9IAogICAgKF9MaW5rX3R5
cGUpIF9SYl90cmVlX3JlYmFsYW5jZV9mb3JfZXJhc2UoX19wb3NpdGlvbi5fTV9ub2RlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01faGVhZGVyLT5fTV9w
YXJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTV9o
ZWFkZXItPl9NX2xlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfTV9oZWFkZXItPl9NX3JpZ2h0KTsKICBkZXN0cm95X25vZGUoX195KTsKICAtLV9NX25v
ZGVfY291bnQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9L
ZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CnR5cGVu
YW1lIF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz46OnNp
emVfdHlwZSAKX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9j
Pjo6ZXJhc2UoY29uc3QgX0tleSYgX194KQp7CiAgcGFpcjxpdGVyYXRvcixpdGVyYXRvcj4gX19w
ID0gZXF1YWxfcmFuZ2UoX194KTsKICBzaXplX3R5cGUgX19uID0gMDsKICBkaXN0YW5jZShfX3Au
Zmlyc3QsIF9fcC5zZWNvbmQsIF9fbik7CiAgZXJhc2UoX19wLmZpcnN0LCBfX3Auc2Vjb25kKTsK
ICByZXR1cm4gX19uOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbCwgY2xhc3Mg
X0tvViwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1JiX3RyZWU8X0tl
eSwgX1ZhbCwgX0tvViwgX0NvbXBhcmUsIF9BbGxvYz46Ol9MaW5rX3R5cGUgCl9SYl90cmVlPF9L
ZXksX1ZhbCxfS29WLF9Db21wYXJlLF9BbGxvYz4KICA6Ol9NX2NvcHkoX0xpbmtfdHlwZSBfX3gs
IF9MaW5rX3R5cGUgX19wKQp7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICBfTGlua190eXBl
IF9fdG9wID0gX01fY2xvbmVfbm9kZShfX3gpOwogIF9fdG9wLT5fTV9wYXJlbnQgPSBfX3A7CiAK
ICB0cnkgIHsKICAgIGlmIChfX3gtPl9NX3JpZ2h0KQogICAgICBfX3RvcC0+X01fcmlnaHQgPSBf
TV9jb3B5KF9TX3JpZ2h0KF9feCksIF9fdG9wKTsKICAgIF9fcCA9IF9fdG9wOwogICAgX194ID0g
X1NfbGVmdChfX3gpOwoKICAgIHdoaWxlIChfX3ggIT0gMCkgewogICAgICBfTGlua190eXBlIF9f
eSA9IF9NX2Nsb25lX25vZGUoX194KTsKICAgICAgX19wLT5fTV9sZWZ0ID0gX195OwogICAgICBf
X3ktPl9NX3BhcmVudCA9IF9fcDsKICAgICAgaWYgKF9feC0+X01fcmlnaHQpCiAgICAgICAgX195
LT5fTV9yaWdodCA9IF9NX2NvcHkoX1NfcmlnaHQoX194KSwgX195KTsKICAgICAgX19wID0gX195
OwogICAgICBfX3ggPSBfU19sZWZ0KF9feCk7CiAgICB9CiAgfQogIGNhdGNoKC4uLikgeyAgX01f
ZXJhc2UoX190b3ApIDsgdGhyb3c7IH0gOwoKICByZXR1cm4gX190b3A7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNs
YXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CnZvaWQgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tl
eU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPgogIDo6X01fZXJhc2UoX0xpbmtfdHlwZSBfX3gpCnsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgd2hpbGUgKF9feCAhPSAwKSB7CiAg
ICBfTV9lcmFzZShfU19yaWdodChfX3gpKTsKICAgIF9MaW5rX3R5cGUgX195ID0gX1NfbGVmdChf
X3gpOwogICAgZGVzdHJveV9ub2RlKF9feCk7CiAgICBfX3ggPSBfX3k7CiAgfQp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbHVlLCBjbGFzcyBfS2V5T2ZWYWx1ZSwgCiAgICAgICAg
ICBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgp2b2lkIF9SYl90cmVlPF9LZXksX1ZhbHVl
LF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4KICA6OmVyYXNlKGl0ZXJhdG9yIF9fZmlyc3Qs
IGl0ZXJhdG9yIF9fbGFzdCkKewogIGlmIChfX2ZpcnN0ID09IGJlZ2luKCkgJiYgX19sYXN0ID09
IGVuZCgpKQogICAgY2xlYXIoKTsKICBlbHNlCiAgICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3Qp
IGVyYXNlKF9fZmlyc3QrKyk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUs
IGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxs
b2M+CnZvaWQgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9j
PgogIDo6ZXJhc2UoY29uc3QgX0tleSogX19maXJzdCwgY29uc3QgX0tleSogX19sYXN0KSAKewog
IHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkgZXJhc2UoKl9fZmlyc3QrKyk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAg
IGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CnR5cGVuYW1lIF9SYl90cmVlPF9LZXksX1Zh
bHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz46Oml0ZXJhdG9yIApfUmJfdHJlZTxfS2V5
LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+OjpmaW5kKGNvbnN0IF9LZXkmIF9f
aykKewogIF9MaW5rX3R5cGUgX195ID0gX01faGVhZGVyOyAgICAgICAKICBfTGlua190eXBlIF9f
eCA9IF9NX3Jvb3QoKTsgICAgICAgCgogIHdoaWxlIChfX3ggIT0gMCkgCiAgICBpZiAoIV9NX2tl
eV9jb21wYXJlKF9TX2tleShfX3gpLCBfX2spKQogICAgICBfX3kgPSBfX3gsIF9feCA9IF9TX2xl
ZnQoX194KTsKICAgIGVsc2UKICAgICAgX194ID0gX1NfcmlnaHQoX194KTsKCiAgaXRlcmF0b3Ig
X19qID0gaXRlcmF0b3IoX195KTsgICAKICByZXR1cm4gKF9faiA9PSBlbmQoKSB8fCBfTV9rZXlf
Y29tcGFyZShfX2ssIF9TX2tleShfX2ouX01fbm9kZSkpKSA/IAogICAgIGVuZCgpIDogX19qOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbHVlLCBjbGFzcyBfS2V5T2ZWYWx1ZSwg
CiAgICAgICAgICBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgp0eXBlbmFtZSBfUmJfdHJl
ZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+Ojpjb25zdF9pdGVyYXRv
ciAKX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPjo6Zmlu
ZChjb25zdCBfS2V5JiBfX2spIGNvbnN0CnsKICBfTGlua190eXBlIF9feSA9IF9NX2hlYWRlcjsg
IAogIF9MaW5rX3R5cGUgX194ID0gX01fcm9vdCgpOyAgCgogIHdoaWxlIChfX3ggIT0gMCkgewog
ICAgaWYgKCFfTV9rZXlfY29tcGFyZShfU19rZXkoX194KSwgX19rKSkKICAgICAgX195ID0gX194
LCBfX3ggPSBfU19sZWZ0KF9feCk7CiAgICBlbHNlCiAgICAgIF9feCA9IF9TX3JpZ2h0KF9feCk7
CiAgfQogIGNvbnN0X2l0ZXJhdG9yIF9faiA9IGNvbnN0X2l0ZXJhdG9yKF9feSk7ICAgCiAgcmV0
dXJuIChfX2ogPT0gZW5kKCkgfHwgX01fa2V5X2NvbXBhcmUoX19rLCBfU19rZXkoX19qLl9NX25v
ZGUpKSkgPwogICAgZW5kKCkgOiBfX2o7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBf
VmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFz
cyBfQWxsb2M+CnR5cGVuYW1lIF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21w
YXJlLF9BbGxvYz46OnNpemVfdHlwZSAKX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUs
X0NvbXBhcmUsX0FsbG9jPgogIDo6Y291bnQoY29uc3QgX0tleSYgX19rKSBjb25zdAp7CiAgcGFp
cjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3I+IF9fcCA9IGVxdWFsX3JhbmdlKF9fayk7
CiAgc2l6ZV90eXBlIF9fbiA9IDA7CiAgZGlzdGFuY2UoX19wLmZpcnN0LCBfX3Auc2Vjb25kLCBf
X24pOwogIHJldHVybiBfX247Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUs
IGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxs
b2M+CnR5cGVuYW1lIF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9B
bGxvYz46Oml0ZXJhdG9yIApfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFy
ZSxfQWxsb2M+CiAgOjpsb3dlcl9ib3VuZChjb25zdCBfS2V5JiBfX2spCnsKICBfTGlua190eXBl
IF9feSA9IF9NX2hlYWRlcjsgIAogIF9MaW5rX3R5cGUgX194ID0gX01fcm9vdCgpOyAgCgogIHdo
aWxlIChfX3ggIT0gMCkgCiAgICBpZiAoIV9NX2tleV9jb21wYXJlKF9TX2tleShfX3gpLCBfX2sp
KQogICAgICBfX3kgPSBfX3gsIF9feCA9IF9TX2xlZnQoX194KTsKICAgIGVsc2UKICAgICAgX194
ID0gX1NfcmlnaHQoX194KTsKCiAgcmV0dXJuIGl0ZXJhdG9yKF9feSk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNs
YXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CnR5cGVuYW1lIF9SYl90cmVlPF9LZXksX1ZhbHVl
LF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz46OmNvbnN0X2l0ZXJhdG9yIApfUmJfdHJlZTxf
S2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+CiAgOjpsb3dlcl9ib3VuZChj
b25zdCBfS2V5JiBfX2spIGNvbnN0CnsKICBfTGlua190eXBlIF9feSA9IF9NX2hlYWRlcjsgIAog
IF9MaW5rX3R5cGUgX194ID0gX01fcm9vdCgpOyAgCgogIHdoaWxlIChfX3ggIT0gMCkgCiAgICBp
ZiAoIV9NX2tleV9jb21wYXJlKF9TX2tleShfX3gpLCBfX2spKQogICAgICBfX3kgPSBfX3gsIF9f
eCA9IF9TX2xlZnQoX194KTsKICAgIGVsc2UKICAgICAgX194ID0gX1NfcmlnaHQoX194KTsKCiAg
cmV0dXJuIGNvbnN0X2l0ZXJhdG9yKF9feSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFz
cyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBj
bGFzcyBfQWxsb2M+CnR5cGVuYW1lIF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9D
b21wYXJlLF9BbGxvYz46Oml0ZXJhdG9yIApfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1
ZSxfQ29tcGFyZSxfQWxsb2M+CiAgOjp1cHBlcl9ib3VuZChjb25zdCBfS2V5JiBfX2spCnsKICBf
TGlua190eXBlIF9feSA9IF9NX2hlYWRlcjsgIAogIF9MaW5rX3R5cGUgX194ID0gX01fcm9vdCgp
OyAgCgogICB3aGlsZSAoX194ICE9IDApIAogICAgIGlmIChfTV9rZXlfY29tcGFyZShfX2ssIF9T
X2tleShfX3gpKSkKICAgICAgIF9feSA9IF9feCwgX194ID0gX1NfbGVmdChfX3gpOwogICAgIGVs
c2UKICAgICAgIF9feCA9IF9TX3JpZ2h0KF9feCk7CgogICByZXR1cm4gaXRlcmF0b3IoX195KTsK
fQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUs
IAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1JiX3Ry
ZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPjo6Y29uc3RfaXRlcmF0
b3IgCl9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4KICA6
OnVwcGVyX2JvdW5kKGNvbnN0IF9LZXkmIF9faykgY29uc3QKewogIF9MaW5rX3R5cGUgX195ID0g
X01faGVhZGVyOyAgCiAgX0xpbmtfdHlwZSBfX3ggPSBfTV9yb290KCk7ICAKCiAgIHdoaWxlIChf
X3ggIT0gMCkgCiAgICAgaWYgKF9NX2tleV9jb21wYXJlKF9faywgX1Nfa2V5KF9feCkpKQogICAg
ICAgX195ID0gX194LCBfX3ggPSBfU19sZWZ0KF9feCk7CiAgICAgZWxzZQogICAgICAgX194ID0g
X1NfcmlnaHQoX194KTsKCiAgIHJldHVybiBjb25zdF9pdGVyYXRvcihfX3kpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbHVlLCBjbGFzcyBfS2V5T2ZWYWx1ZSwgCiAgICAgICAg
ICBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgppbmxpbmUgCnBhaXI8dHlwZW5hbWUgX1Ji
X3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPjo6aXRlcmF0b3Is
CiAgICAgdHlwZW5hbWUgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUs
X0FsbG9jPjo6aXRlcmF0b3I+Cl9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21w
YXJlLF9BbGxvYz4KICA6OmVxdWFsX3JhbmdlKGNvbnN0IF9LZXkmIF9faykKewogIHJldHVybiBw
YWlyPGl0ZXJhdG9yLCBpdGVyYXRvcj4obG93ZXJfYm91bmQoX19rKSwgdXBwZXJfYm91bmQoX19r
KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9Lb1YsIGNs
YXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CmlubGluZSAKcGFpcjx0eXBlbmFtZSBfUmJfdHJl
ZTxfS2V5LCBfVmFsdWUsIF9Lb1YsIF9Db21wYXJlLCBfQWxsb2M+Ojpjb25zdF9pdGVyYXRvciwK
ICAgICB0eXBlbmFtZSBfUmJfdHJlZTxfS2V5LCBfVmFsdWUsIF9Lb1YsIF9Db21wYXJlLCBfQWxs
b2M+Ojpjb25zdF9pdGVyYXRvcj4KX1JiX3RyZWU8X0tleSwgX1ZhbHVlLCBfS29WLCBfQ29tcGFy
ZSwgX0FsbG9jPgogIDo6ZXF1YWxfcmFuZ2UoY29uc3QgX0tleSYgX19rKSBjb25zdAp7CiAgcmV0
dXJuIHBhaXI8Y29uc3RfaXRlcmF0b3IsY29uc3RfaXRlcmF0b3I+KGxvd2VyX2JvdW5kKF9fayks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyX2JvdW5k
KF9faykpOwp9CgppbmxpbmUgaW50IApfX2JsYWNrX2NvdW50KF9SYl90cmVlX25vZGVfYmFzZSog
X19ub2RlLCBfUmJfdHJlZV9ub2RlX2Jhc2UqIF9fcm9vdCkKewogIGlmIChfX25vZGUgPT0gMCkK
ICAgIHJldHVybiAwOwogIGVsc2UgewogICAgaW50IF9fYmMgPSBfX25vZGUtPl9NX2NvbG9yID09
IF9TX3JiX3RyZWVfYmxhY2sgPyAxIDogMDsKICAgIGlmIChfX25vZGUgPT0gX19yb290KQogICAg
ICByZXR1cm4gX19iYzsKICAgIGVsc2UKICAgICAgcmV0dXJuIF9fYmMgKyBfX2JsYWNrX2NvdW50
KF9fbm9kZS0+X01fcGFyZW50LCBfX3Jvb3QpOwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXks
IGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBh
cmUsIGNsYXNzIF9BbGxvYz4KYm9vbCBfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxf
Q29tcGFyZSxfQWxsb2M+OjpfX3JiX3ZlcmlmeSgpIGNvbnN0CnsKICBpZiAoX01fbm9kZV9jb3Vu
dCA9PSAwIHx8IGJlZ2luKCkgPT0gZW5kKCkpCiAgICByZXR1cm4gX01fbm9kZV9jb3VudCA9PSAw
ICYmIGJlZ2luKCkgPT0gZW5kKCkgJiYKICAgICAgX01faGVhZGVyLT5fTV9sZWZ0ID09IF9NX2hl
YWRlciAmJiBfTV9oZWFkZXItPl9NX3JpZ2h0ID09IF9NX2hlYWRlcjsKICAKICBpbnQgX19sZW4g
PSBfX2JsYWNrX2NvdW50KF9NX2xlZnRtb3N0KCksIF9NX3Jvb3QoKSk7CiAgZm9yIChjb25zdF9p
dGVyYXRvciBfX2l0ID0gYmVnaW4oKTsgX19pdCAhPSBlbmQoKTsgKytfX2l0KSB7CiAgICBfTGlu
a190eXBlIF9feCA9IChfTGlua190eXBlKSBfX2l0Ll9NX25vZGU7CiAgICBfTGlua190eXBlIF9f
TCA9IF9TX2xlZnQoX194KTsKICAgIF9MaW5rX3R5cGUgX19SID0gX1NfcmlnaHQoX194KTsKCiAg
ICBpZiAoX194LT5fTV9jb2xvciA9PSBfU19yYl90cmVlX3JlZCkKICAgICAgaWYgKChfX0wgJiYg
X19MLT5fTV9jb2xvciA9PSBfU19yYl90cmVlX3JlZCkgfHwKICAgICAgICAgIChfX1IgJiYgX19S
LT5fTV9jb2xvciA9PSBfU19yYl90cmVlX3JlZCkpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAg
IGlmIChfX0wgJiYgX01fa2V5X2NvbXBhcmUoX1Nfa2V5KF9feCksIF9TX2tleShfX0wpKSkKICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgaWYgKF9fUiAmJiBfTV9rZXlfY29tcGFyZShfU19rZXkoX19S
KSwgX1Nfa2V5KF9feCkpKQogICAgICByZXR1cm4gZmFsc2U7CgogICAgaWYgKCFfX0wgJiYgIV9f
UiAmJiBfX2JsYWNrX2NvdW50KF9feCwgX01fcm9vdCgpKSAhPSBfX2xlbikKICAgICAgcmV0dXJu
IGZhbHNlOwogIH0KCiAgaWYgKF9NX2xlZnRtb3N0KCkgIT0gX1JiX3RyZWVfbm9kZV9iYXNlOjpf
U19taW5pbXVtKF9NX3Jvb3QoKSkpCiAgICByZXR1cm4gZmFsc2U7CiAgaWYgKF9NX3JpZ2h0bW9z
dCgpICE9IF9SYl90cmVlX25vZGVfYmFzZTo6X1NfbWF4aW11bShfTV9yb290KCkpKQogICAgcmV0
dXJuIGZhbHNlOwoKICByZXR1cm4gdHJ1ZTsKfQoKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwg
Y2xhc3MgX1ZhbHVlLCBjbGFzcyBfS2V5T2ZWYWx1ZSwgY2xhc3MgX0NvbXBhcmUsCiAgICAgICAg
ICBjbGFzcyBfQWxsb2MgPSBhbGxvYyAgPgpzdHJ1Y3QgcmJfdHJlZSA6IHB1YmxpYyBfUmJfdHJl
ZTxfS2V5LCBfVmFsdWUsIF9LZXlPZlZhbHVlLCBfQ29tcGFyZSwgX0FsbG9jPgp7CiAgdHlwZWRl
ZiBfUmJfdHJlZTxfS2V5LCBfVmFsdWUsIF9LZXlPZlZhbHVlLCBfQ29tcGFyZSwgX0FsbG9jPiBf
QmFzZTsKICB0eXBlZGVmIHR5cGVuYW1lIF9CYXNlOjphbGxvY2F0b3JfdHlwZSBhbGxvY2F0b3Jf
dHlwZTsKCiAgcmJfdHJlZShjb25zdCBfQ29tcGFyZSYgX19jb21wID0gX0NvbXBhcmUoKSwKICAg
ICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKQogICAg
OiBfQmFzZShfX2NvbXAsIF9fYSkge30KICAKICB+cmJfdHJlZSgpIHt9Cn07CgoKCgoKICAKCgoK
IAogCiAKIyAzMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8y
Ljk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9tYXAiIDIgMwoKCiMgMSAiL3Vzci9sb2Nh
bC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5j
bHVkZS9nKystMy9zdGxfbWFwLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCiAKCgoKCgoKCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVHAsIGNsYXNzIF9Db21w
YXJlID0gbGVzczxfS2V5PiwKICAgICAgICAgIGNsYXNzIF9BbGxvYyA9IGFsbG9jICA+CgoKCgpj
bGFzcyBtYXAgewpwdWJsaWM6CgogCgogIHR5cGVkZWYgX0tleSAgICAgICAgICAgICAgICAgIGtl
eV90eXBlOwogIHR5cGVkZWYgX1RwICAgICAgICAgICAgICAgICAgIGRhdGFfdHlwZTsKICB0eXBl
ZGVmIF9UcCAgICAgICAgICAgICAgICAgICBtYXBwZWRfdHlwZTsKICB0eXBlZGVmIHBhaXI8Y29u
c3QgX0tleSwgX1RwPiB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0NvbXBhcmUgICAgICAgICAgICAg
IGtleV9jb21wYXJlOwogICAgCiAgY2xhc3MgdmFsdWVfY29tcGFyZQogICAgOiBwdWJsaWMgYmlu
YXJ5X2Z1bmN0aW9uPHZhbHVlX3R5cGUsIHZhbHVlX3R5cGUsIGJvb2w+IHsKICBmcmllbmQgY2xh
c3MgbWFwPF9LZXksX1RwLF9Db21wYXJlLF9BbGxvYz47CiAgcHJvdGVjdGVkIDoKICAgIF9Db21w
YXJlIF9NX2NvbXA7CiAgICB2YWx1ZV9jb21wYXJlKF9Db21wYXJlIF9fYykgOiBfTV9jb21wKF9f
Yykge30KICBwdWJsaWM6CiAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgdmFsdWVfdHlwZSYgX194
LCBjb25zdCB2YWx1ZV90eXBlJiBfX3kpIGNvbnN0IHsKICAgICAgcmV0dXJuIF9NX2NvbXAoX194
LmZpcnN0LCBfX3kuZmlyc3QpOwogICAgfQogIH07Cgpwcml2YXRlOgogIHR5cGVkZWYgX1JiX3Ry
ZWU8a2V5X3R5cGUsIHZhbHVlX3R5cGUsIAogICAgICAgICAgICAgICAgICAgX1NlbGVjdDFzdDx2
YWx1ZV90eXBlPiwga2V5X2NvbXBhcmUsIF9BbGxvYz4gX1JlcF90eXBlOwogIF9SZXBfdHlwZSBf
TV90OyAgIApwdWJsaWM6CiAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6OnBvaW50ZXIgcG9p
bnRlcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlwZTo6Y29uc3RfcG9pbnRlciBjb25zdF9w
b2ludGVyOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpyZWZlcmVuY2UgcmVmZXJlbmNl
OwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpjb25zdF9yZWZlcmVuY2UgY29uc3RfcmVm
ZXJlbmNlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjppdGVyYXRvciBpdGVyYXRvcjsK
ICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlwZTo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0
b3I7CiAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6OnJldmVyc2VfaXRlcmF0b3IgcmV2ZXJz
ZV9pdGVyYXRvcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlwZTo6Y29uc3RfcmV2ZXJzZV9p
dGVyYXRvciBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90
eXBlOjpzaXplX3R5cGUgc2l6ZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpk
aWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90
eXBlOjphbGxvY2F0b3JfdHlwZSBhbGxvY2F0b3JfdHlwZTsKCiAgIAoKICBtYXAoKSA6IF9NX3Qo
X0NvbXBhcmUoKSwgYWxsb2NhdG9yX3R5cGUoKSkge30KICBleHBsaWNpdCBtYXAoY29uc3QgX0Nv
bXBhcmUmIF9fY29tcCwKICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9
IGFsbG9jYXRvcl90eXBlKCkpCiAgICA6IF9NX3QoX19jb21wLCBfX2EpIHt9CgoKICB0ZW1wbGF0
ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgbWFwKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9J
bnB1dEl0ZXJhdG9yIF9fbGFzdCkKICAgIDogX01fdChfQ29tcGFyZSgpLCBhbGxvY2F0b3JfdHlw
ZSgpKQogICAgeyBfTV90Lmluc2VydF91bmlxdWUoX19maXJzdCwgX19sYXN0KTsgfQoKICB0ZW1w
bGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgbWFwKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3Qs
IF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgY29uc3QgX0NvbXBhcmUmIF9fY29tcCwKICAgICAgY29u
c3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90eXBlKCkpCiAgICA6IF9NX3QoX19j
b21wLCBfX2EpIHsgX01fdC5pbnNlcnRfdW5pcXVlKF9fZmlyc3QsIF9fbGFzdCk7IH0KIyAxMjMg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4u
Ly4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX21hcC5oIiAzCgoKICBtYXAoY29uc3QgbWFwPF9LZXks
X1RwLF9Db21wYXJlLF9BbGxvYz4mIF9feCkgOiBfTV90KF9feC5fTV90KSB7fQogIG1hcDxfS2V5
LF9UcCxfQ29tcGFyZSxfQWxsb2M+JgogIG9wZXJhdG9yPShjb25zdCBtYXA8X0tleSwgX1RwLCBf
Q29tcGFyZSwgX0FsbG9jPiYgX194KQogIHsKICAgIF9NX3QgPSBfX3guX01fdDsKICAgIHJldHVy
biAqdGhpczsgCiAgfQoKICAgCgogIGtleV9jb21wYXJlIGtleV9jb21wKCkgY29uc3QgeyByZXR1
cm4gX01fdC5rZXlfY29tcCgpOyB9CiAgdmFsdWVfY29tcGFyZSB2YWx1ZV9jb21wKCkgY29uc3Qg
eyByZXR1cm4gdmFsdWVfY29tcGFyZShfTV90LmtleV9jb21wKCkpOyB9CiAgYWxsb2NhdG9yX3R5
cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIF9NX3QuZ2V0X2FsbG9jYXRvcigpOyB9
CgogIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gX01fdC5iZWdpbigpOyB9CiAgY29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBfTV90LmJlZ2luKCk7IH0KICBpdGVyYXRvciBl
bmQoKSB7IHJldHVybiBfTV90LmVuZCgpOyB9CiAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Qg
eyByZXR1cm4gX01fdC5lbmQoKTsgfQogIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgeyByZXR1
cm4gX01fdC5yYmVnaW4oKTsgfQogIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29u
c3QgeyByZXR1cm4gX01fdC5yYmVnaW4oKTsgfQogIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsg
cmV0dXJuIF9NX3QucmVuZCgpOyB9CiAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29u
c3QgeyByZXR1cm4gX01fdC5yZW5kKCk7IH0KICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4g
X01fdC5lbXB0eSgpOyB9CiAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCB7IHJldHVybiBfTV90LnNp
emUoKTsgfQogIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIF9NX3QubWF4X3Np
emUoKTsgfQogIF9UcCYgb3BlcmF0b3JbXShjb25zdCBrZXlfdHlwZSYgX19rKSB7CiAgICBpdGVy
YXRvciBfX2kgPSBsb3dlcl9ib3VuZChfX2spOwogICAgIAogICAgaWYgKF9faSA9PSBlbmQoKSB8
fCBrZXlfY29tcCgpKF9faywgKCpfX2kpLmZpcnN0KSkKICAgICAgX19pID0gaW5zZXJ0KF9faSwg
dmFsdWVfdHlwZShfX2ssIF9UcCgpKSk7CiAgICByZXR1cm4gKCpfX2kpLnNlY29uZDsKICB9CiAg
dm9pZCBzd2FwKG1hcDxfS2V5LF9UcCxfQ29tcGFyZSxfQWxsb2M+JiBfX3gpIHsgX01fdC5zd2Fw
KF9feC5fTV90KTsgfQoKICAgCgogIHBhaXI8aXRlcmF0b3IsYm9vbD4gaW5zZXJ0KGNvbnN0IHZh
bHVlX3R5cGUmIF9feCkgCiAgICB7IHJldHVybiBfTV90Lmluc2VydF91bmlxdWUoX194KTsgfQog
IGl0ZXJhdG9yIGluc2VydChpdGVyYXRvciBwb3NpdGlvbiwgY29uc3QgdmFsdWVfdHlwZSYgX194
KQogICAgeyByZXR1cm4gX01fdC5pbnNlcnRfdW5pcXVlKHBvc2l0aW9uLCBfX3gpOyB9CgogIHRl
bXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIGluc2VydChfSW5wdXRJdGVyYXRv
ciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKICAgIF9NX3QuaW5zZXJ0X3VuaXF1
ZShfX2ZpcnN0LCBfX2xhc3QpOwogIH0KCgoKCgoKCgoKICB2b2lkIGVyYXNlKGl0ZXJhdG9yIF9f
cG9zaXRpb24pIHsgX01fdC5lcmFzZShfX3Bvc2l0aW9uKTsgfQogIHNpemVfdHlwZSBlcmFzZShj
b25zdCBrZXlfdHlwZSYgX194KSB7IHJldHVybiBfTV90LmVyYXNlKF9feCk7IH0KICB2b2lkIGVy
YXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCkKICAgIHsgX01fdC5lcmFzZShf
X2ZpcnN0LCBfX2xhc3QpOyB9CiAgdm9pZCBjbGVhcigpIHsgX01fdC5jbGVhcigpOyB9CgogICAK
CiAgaXRlcmF0b3IgZmluZChjb25zdCBrZXlfdHlwZSYgX194KSB7IHJldHVybiBfTV90LmZpbmQo
X194KTsgfQogIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3Qg
eyByZXR1cm4gX01fdC5maW5kKF9feCk7IH0KICBzaXplX3R5cGUgY291bnQoY29uc3Qga2V5X3R5
cGUmIF9feCkgY29uc3QgeyByZXR1cm4gX01fdC5jb3VudChfX3gpOyB9CiAgaXRlcmF0b3IgbG93
ZXJfYm91bmQoY29uc3Qga2V5X3R5cGUmIF9feCkge3JldHVybiBfTV90Lmxvd2VyX2JvdW5kKF9f
eCk7IH0KICBjb25zdF9pdGVyYXRvciBsb3dlcl9ib3VuZChjb25zdCBrZXlfdHlwZSYgX194KSBj
b25zdCB7CiAgICByZXR1cm4gX01fdC5sb3dlcl9ib3VuZChfX3gpOyAKICB9CiAgaXRlcmF0b3Ig
dXBwZXJfYm91bmQoY29uc3Qga2V5X3R5cGUmIF9feCkge3JldHVybiBfTV90LnVwcGVyX2JvdW5k
KF9feCk7IH0KICBjb25zdF9pdGVyYXRvciB1cHBlcl9ib3VuZChjb25zdCBrZXlfdHlwZSYgX194
KSBjb25zdCB7CiAgICByZXR1cm4gX01fdC51cHBlcl9ib3VuZChfX3gpOyAKICB9CiAgCiAgcGFp
cjxpdGVyYXRvcixpdGVyYXRvcj4gZXF1YWxfcmFuZ2UoY29uc3Qga2V5X3R5cGUmIF9feCkgewog
ICAgcmV0dXJuIF9NX3QuZXF1YWxfcmFuZ2UoX194KTsKICB9CiAgcGFpcjxjb25zdF9pdGVyYXRv
cixjb25zdF9pdGVyYXRvcj4gZXF1YWxfcmFuZ2UoY29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3Qg
ewogICAgcmV0dXJuIF9NX3QuZXF1YWxfcmFuZ2UoX194KTsKICB9CiAgZnJpZW5kIGJvb2wgb3Bl
cmF0b3I9PSA8PiAgKGNvbnN0IG1hcCYsIGNvbnN0IG1hcCYpOwogIGZyaWVuZCBib29sIG9wZXJh
dG9yPCA8PiAgKGNvbnN0IG1hcCYsIGNvbnN0IG1hcCYpOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9L
ZXksIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBtYXA8X0tleSxfVHAsX0NvbXBhcmUsX0FsbG9jPiYgX194LCAKICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXA8X0tleSxfVHAsX0NvbXBhcmUsX0FsbG9jPiYg
X195KSB7CiAgcmV0dXJuIF9feC5fTV90ID09IF9feS5fTV90Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0tleSwgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgppbmxpbmUgYm9v
bCBvcGVyYXRvcjwoY29uc3QgbWFwPF9LZXksX1RwLF9Db21wYXJlLF9BbGxvYz4mIF9feCwgCiAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXA8X0tleSxfVHAsX0NvbXBhcmUsX0FsbG9jPiYg
X195KSB7CiAgcmV0dXJuIF9feC5fTV90IDwgX195Ll9NX3Q7Cn0KCgoKdGVtcGxhdGUgPGNsYXNz
IF9LZXksIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KaW5saW5lIHZv
aWQgc3dhcChtYXA8X0tleSxfVHAsX0NvbXBhcmUsX0FsbG9jPiYgX194LCAKICAgICAgICAgICAg
ICAgICBtYXA8X0tleSxfVHAsX0NvbXBhcmUsX0FsbG9jPiYgX195KSB7CiAgX194LnN3YXAoX195
KTsKfQoKCgoKCgoKCiAKCgoKIAogCiAKIyAzMyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFy
Yy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9tYXAiIDIg
MwoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUu
My8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9tdWx0aW1hcC5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwg
Y2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZSA9IGxlc3M8X0tleT4sCiAgICAgICAgICBjbGFzcyBf
QWxsb2MgPSBhbGxvYyAgPgoKCgoKY2xhc3MgbXVsdGltYXAgewpwdWJsaWM6CgogCgogIHR5cGVk
ZWYgX0tleSAgICAgICAgICAgICAgICAgIGtleV90eXBlOwogIHR5cGVkZWYgX1RwICAgICAgICAg
ICAgICAgICAgIGRhdGFfdHlwZTsKICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICBtYXBw
ZWRfdHlwZTsKICB0eXBlZGVmIHBhaXI8Y29uc3QgX0tleSwgX1RwPiB2YWx1ZV90eXBlOwogIHR5
cGVkZWYgX0NvbXBhcmUgICAgICAgICAgICAgIGtleV9jb21wYXJlOwoKICBjbGFzcyB2YWx1ZV9j
b21wYXJlIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjx2YWx1ZV90eXBlLCB2YWx1ZV90eXBlLCBi
b29sPiB7CiAgZnJpZW5kIGNsYXNzIG11bHRpbWFwPF9LZXksX1RwLF9Db21wYXJlLF9BbGxvYz47
CiAgcHJvdGVjdGVkOgogICAgX0NvbXBhcmUgX01fY29tcDsKICAgIHZhbHVlX2NvbXBhcmUoX0Nv
bXBhcmUgX19jKSA6IF9NX2NvbXAoX19jKSB7fQogIHB1YmxpYzoKICAgIGJvb2wgb3BlcmF0b3Io
KShjb25zdCB2YWx1ZV90eXBlJiBfX3gsIGNvbnN0IHZhbHVlX3R5cGUmIF9feSkgY29uc3Qgewog
ICAgICByZXR1cm4gX01fY29tcChfX3guZmlyc3QsIF9feS5maXJzdCk7CiAgICB9CiAgfTsKCnBy
aXZhdGU6CiAgdHlwZWRlZiBfUmJfdHJlZTxrZXlfdHlwZSwgdmFsdWVfdHlwZSwgCiAgICAgICAg
ICAgICAgICAgIF9TZWxlY3Qxc3Q8dmFsdWVfdHlwZT4sIGtleV9jb21wYXJlLCBfQWxsb2M+IF9S
ZXBfdHlwZTsKICBfUmVwX3R5cGUgX01fdDsgICAKcHVibGljOgogIHR5cGVkZWYgdHlwZW5hbWUg
X1JlcF90eXBlOjpwb2ludGVyIHBvaW50ZXI7CiAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6
OmNvbnN0X3BvaW50ZXIgY29uc3RfcG9pbnRlcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlw
ZTo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlwZTo6Y29u
c3RfcmVmZXJlbmNlIGNvbnN0X3JlZmVyZW5jZTsKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlw
ZTo6aXRlcmF0b3IgaXRlcmF0b3I7CiAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6OmNvbnN0
X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOyAKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlwZTo6
cmV2ZXJzZV9pdGVyYXRvciByZXZlcnNlX2l0ZXJhdG9yOwogIHR5cGVkZWYgdHlwZW5hbWUgX1Jl
cF90eXBlOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAg
dHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6OnNpemVfdHlwZSBzaXplX3R5cGU7CiAgdHlwZWRl
ZiB0eXBlbmFtZSBfUmVwX3R5cGU6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7CiAg
dHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6OmFsbG9jYXRvcl90eXBlIGFsbG9jYXRvcl90eXBl
OwoKIAoKICBtdWx0aW1hcCgpIDogX01fdChfQ29tcGFyZSgpLCBhbGxvY2F0b3JfdHlwZSgpKSB7
IH0KICBleHBsaWNpdCBtdWx0aW1hcChjb25zdCBfQ29tcGFyZSYgX19jb21wLAogICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKQog
ICAgOiBfTV90KF9fY29tcCwgX19hKSB7IH0KCgogIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVy
YXRvcj4KICBtdWx0aW1hcChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBf
X2xhc3QpCiAgICA6IF9NX3QoX0NvbXBhcmUoKSwgYWxsb2NhdG9yX3R5cGUoKSkKICAgIHsgX01f
dC5pbnNlcnRfZXF1YWwoX19maXJzdCwgX19sYXN0KTsgfQoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0lu
cHV0SXRlcmF0b3I+CiAgbXVsdGltYXAoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRl
cmF0b3IgX19sYXN0LAogICAgICAgICAgIGNvbnN0IF9Db21wYXJlJiBfX2NvbXAsCiAgICAgICAg
ICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90eXBlKCkpCiAgICA6IF9N
X3QoX19jb21wLCBfX2EpIHsgX01fdC5pbnNlcnRfZXF1YWwoX19maXJzdCwgX19sYXN0KTsgfQoj
IDEyMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMv
Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfbXVsdGltYXAuaCIgMwoKCiAgbXVsdGltYXAo
Y29uc3QgbXVsdGltYXA8X0tleSxfVHAsX0NvbXBhcmUsX0FsbG9jPiYgX194KSA6IF9NX3QoX194
Ll9NX3QpIHsgfQogIG11bHRpbWFwPF9LZXksX1RwLF9Db21wYXJlLF9BbGxvYz4mCiAgb3BlcmF0
b3I9KGNvbnN0IG11bHRpbWFwPF9LZXksX1RwLF9Db21wYXJlLF9BbGxvYz4mIF9feCkgewogICAg
X01fdCA9IF9feC5fTV90OwogICAgcmV0dXJuICp0aGlzOyAKICB9CgogICAKCiAga2V5X2NvbXBh
cmUga2V5X2NvbXAoKSBjb25zdCB7IHJldHVybiBfTV90LmtleV9jb21wKCk7IH0KICB2YWx1ZV9j
b21wYXJlIHZhbHVlX2NvbXAoKSBjb25zdCB7IHJldHVybiB2YWx1ZV9jb21wYXJlKF9NX3Qua2V5
X2NvbXAoKSk7IH0KICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxsb2NhdG9yKCkgY29uc3QgeyByZXR1
cm4gX01fdC5nZXRfYWxsb2NhdG9yKCk7IH0KCiAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBf
TV90LmJlZ2luKCk7IH0KICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIF9N
X3QuYmVnaW4oKTsgfQogIGl0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIF9NX3QuZW5kKCk7IH0KICBj
b25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBfTV90LmVuZCgpOyB9CiAgcmV2ZXJz
ZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiBfTV90LnJiZWdpbigpOyB9CiAgY29uc3RfcmV2
ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBfTV90LnJiZWdpbigpOyB9CiAg
cmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgeyByZXR1cm4gX01fdC5yZW5kKCk7IH0KICBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCB7IHJldHVybiBfTV90LnJlbmQoKTsgfQogIGJv
b2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiBfTV90LmVtcHR5KCk7IH0KICBzaXplX3R5cGUgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIF9NX3Quc2l6ZSgpOyB9CiAgc2l6ZV90eXBlIG1heF9zaXplKCkg
Y29uc3QgeyByZXR1cm4gX01fdC5tYXhfc2l6ZSgpOyB9CiAgdm9pZCBzd2FwKG11bHRpbWFwPF9L
ZXksX1RwLF9Db21wYXJlLF9BbGxvYz4mIF9feCkgeyBfTV90LnN3YXAoX194Ll9NX3QpOyB9Cgog
ICAKCiAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0IHZhbHVlX3R5cGUmIF9feCkgeyByZXR1cm4gX01f
dC5pbnNlcnRfZXF1YWwoX194KTsgfQogIGl0ZXJhdG9yIGluc2VydChpdGVyYXRvciBfX3Bvc2l0
aW9uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpIHsKICAgIHJldHVybiBfTV90Lmluc2VydF9lcXVh
bChfX3Bvc2l0aW9uLCBfX3gpOwogIH0KCiAgdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9y
PgogIHZvaWQgaW5zZXJ0KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9f
bGFzdCkgewogICAgX01fdC5pbnNlcnRfZXF1YWwoX19maXJzdCwgX19sYXN0KTsKICB9CgoKCgoK
CgoKICB2b2lkIGVyYXNlKGl0ZXJhdG9yIF9fcG9zaXRpb24pIHsgX01fdC5lcmFzZShfX3Bvc2l0
aW9uKTsgfQogIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYgX194KSB7IHJldHVybiBf
TV90LmVyYXNlKF9feCk7IH0KICB2b2lkIGVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9y
IF9fbGFzdCkKICAgIHsgX01fdC5lcmFzZShfX2ZpcnN0LCBfX2xhc3QpOyB9CiAgdm9pZCBjbGVh
cigpIHsgX01fdC5jbGVhcigpOyB9CgogICAKCiAgaXRlcmF0b3IgZmluZChjb25zdCBrZXlfdHlw
ZSYgX194KSB7IHJldHVybiBfTV90LmZpbmQoX194KTsgfQogIGNvbnN0X2l0ZXJhdG9yIGZpbmQo
Y29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3QgeyByZXR1cm4gX01fdC5maW5kKF9feCk7IH0KICBz
aXplX3R5cGUgY291bnQoY29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3QgeyByZXR1cm4gX01fdC5j
b3VudChfX3gpOyB9CiAgaXRlcmF0b3IgbG93ZXJfYm91bmQoY29uc3Qga2V5X3R5cGUmIF9feCkg
e3JldHVybiBfTV90Lmxvd2VyX2JvdW5kKF9feCk7IH0KICBjb25zdF9pdGVyYXRvciBsb3dlcl9i
b3VuZChjb25zdCBrZXlfdHlwZSYgX194KSBjb25zdCB7CiAgICByZXR1cm4gX01fdC5sb3dlcl9i
b3VuZChfX3gpOyAKICB9CiAgaXRlcmF0b3IgdXBwZXJfYm91bmQoY29uc3Qga2V5X3R5cGUmIF9f
eCkge3JldHVybiBfTV90LnVwcGVyX2JvdW5kKF9feCk7IH0KICBjb25zdF9pdGVyYXRvciB1cHBl
cl9ib3VuZChjb25zdCBrZXlfdHlwZSYgX194KSBjb25zdCB7CiAgICByZXR1cm4gX01fdC51cHBl
cl9ib3VuZChfX3gpOyAKICB9CiAgIHBhaXI8aXRlcmF0b3IsaXRlcmF0b3I+IGVxdWFsX3Jhbmdl
KGNvbnN0IGtleV90eXBlJiBfX3gpIHsKICAgIHJldHVybiBfTV90LmVxdWFsX3JhbmdlKF9feCk7
CiAgfQogIHBhaXI8Y29uc3RfaXRlcmF0b3IsY29uc3RfaXRlcmF0b3I+IGVxdWFsX3JhbmdlKGNv
bnN0IGtleV90eXBlJiBfX3gpIGNvbnN0IHsKICAgIHJldHVybiBfTV90LmVxdWFsX3JhbmdlKF9f
eCk7CiAgfQogIGZyaWVuZCBib29sIG9wZXJhdG9yPT0gPD4gIChjb25zdCBtdWx0aW1hcCYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXVsdGlt
YXAmKTsKICBmcmllbmQgYm9vbCBvcGVyYXRvcjwgPD4gIChjb25zdCBtdWx0aW1hcCYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aW1hcCYp
Owp9OwoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmUsIGNs
YXNzIF9BbGxvYz4KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBtdWx0aW1hcDxfS2V5LF9U
cCxfQ29tcGFyZSxfQWxsb2M+JiBfX3gsIAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11
bHRpbWFwPF9LZXksX1RwLF9Db21wYXJlLF9BbGxvYz4mIF9feSkgewogIHJldHVybiBfX3guX01f
dCA9PSBfX3kuX01fdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9UcCwgY2xhc3Mg
X0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IG11bHRp
bWFwPF9LZXksX1RwLF9Db21wYXJlLF9BbGxvYz4mIF9feCwgCiAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBtdWx0aW1hcDxfS2V5LF9UcCxfQ29tcGFyZSxfQWxsb2M+JiBfX3kpIHsKICByZXR1
cm4gX194Ll9NX3QgPCBfX3kuX01fdDsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3Mg
X1RwLCBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgppbmxpbmUgdm9pZCBzd2FwKG11bHRp
bWFwPF9LZXksX1RwLF9Db21wYXJlLF9BbGxvYz4mIF9feCwgCiAgICAgICAgICAgICAgICAgbXVs
dGltYXA8X0tleSxfVHAsX0NvbXBhcmUsX0FsbG9jPiYgX195KSB7CiAgX194LnN3YXAoX195KTsK
fQoKCgoKCgoKCiAKCgoKIAogCiAKIyAzNCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9tYXAiIDIgMwoK
CgoKIAogCiAKIyAxOSAiLi4vU3JjU2hhcmVkL0VtVHJhbnNwb3J0U2VyaWFsLmgiIDIKCgoKCmNs
YXNzIEVtSG9zdFRyYW5zcG9ydFNlcmlhbDsKCmNsYXNzIEVtVHJhbnNwb3J0U2VyaWFsIDogcHVi
bGljIEVtVHJhbnNwb3J0CnsKCXB1YmxpYzoKCQl0eXBlZGVmIHN0cmluZwlQb3J0TmFtZTsKCQl0
eXBlZGVmIGxvbmcJQmF1ZDsKCQl0eXBlZGVmIGxvbmcJU3RvcEJpdHM7CgkJdHlwZWRlZiBsb25n
CURhdGFCaXRzOwoJCXR5cGVkZWYgbG9uZwlId3JIYW5kc2hha2U7CgoJCXR5cGVkZWYgdmVjdG9y
PFBvcnROYW1lPglQb3J0TmFtZUxpc3Q7CgkJdHlwZWRlZiB2ZWN0b3I8QmF1ZD4JCUJhdWRMaXN0
OwoKCQllbnVtIFBhcml0eQoJCXsKCQkJa05vUGFyaXR5LAoJCQlrT2RkUGFyaXR5LAoJCQlrRXZl
blBhcml0eQoJCX07CgoJCWVudW0gUlRTQ29udHJvbAoJCXsKCQkJa1JUU09mZiwKCQkJa1JUU09u
LAoJCQlrUlRTQXV0bwoJCX07CgoJCSAKCQkgCgkJc3RydWN0IENvbmZpZ1NlcmlhbCA6IHB1Ymxp
YyBFbVRyYW5zcG9ydDo6Q29uZmlnCgkJewoJCQkJCQkJCQlDb25maWdTZXJpYWwJKHZvaWQpOwoJ
CQl2aXJ0dWFsCQkJCQl+Q29uZmlnU2VyaWFsCSh2b2lkKTsKCgkJCXZpcnR1YWwgRW1UcmFuc3Bv
cnQqCU5ld1RyYW5zcG9ydAkodm9pZCk7CgkJCXZpcnR1YWwgRW1UcmFuc3BvcnQqCUdldFRyYW5z
cG9ydAkodm9pZCk7CgoJCQlib29sIG9wZXJhdG9yPT0oY29uc3QgQ29uZmlnU2VyaWFsJiBvdGhl
cikgY29uc3Q7CgoJCQlQb3J0TmFtZQkJZlBvcnQ7CgkJCUJhdWQJCQlmQmF1ZDsKCQkJUGFyaXR5
CQkJZlBhcml0eTsKCQkJU3RvcEJpdHMJCWZTdG9wQml0czsKCQkJRGF0YUJpdHMJCWZEYXRhQml0
czsKCQkJSHdySGFuZHNoYWtlCWZId3JIYW5kc2hha2U7CgkJfTsKCgkJdHlwZWRlZiBtYXA8UG9y
dE5hbWUsIEVtVHJhbnNwb3J0U2VyaWFsKj4JT3BlblBvcnRMaXN0OwoKCXB1YmxpYzoKCQkJCQkJ
CQlFbVRyYW5zcG9ydFNlcmlhbAkJKHZvaWQpOwoJCQkJCQkJCUVtVHJhbnNwb3J0U2VyaWFsCQko
Y29uc3QgRW1UcmFuc3BvcnREZXNjcmlwdG9yJik7CgkJCQkJCQkJRW1UcmFuc3BvcnRTZXJpYWwJ
CShjb25zdCBDb25maWdTZXJpYWwmKTsKCQl2aXJ0dWFsCQkJCQl+RW1UcmFuc3BvcnRTZXJpYWwJ
CSh2b2lkKTsKCgkJdmlydHVhbCBFcnJDb2RlCQkJT3BlbgkJCQkJKHZvaWQpOwoJCXZpcnR1YWwg
RXJyQ29kZQkJCUNsb3NlCQkJCQkodm9pZCk7CgoJCXZpcnR1YWwgRXJyQ29kZQkJCVJlYWQJCQkJ
CShsb25nJiwgdm9pZCopOwoJCXZpcnR1YWwgRXJyQ29kZQkJCVdyaXRlCQkJCQkobG9uZyYsIGNv
bnN0IHZvaWQqKTsKCgkJdmlydHVhbCBCb29sCQkJQ2FuUmVhZAkJCQkJKHZvaWQpOwoJCXZpcnR1
YWwgQm9vbAkJCUNhbldyaXRlCQkJCSh2b2lkKTsKCQl2aXJ0dWFsIGxvbmcJCQlCeXRlc0luQnVm
ZmVyCQkJKGxvbmcgbWluQnl0ZXMpOwoJCXZpcnR1YWwgc3RyaW5nCQkJR2V0U3BlY2lmaWNOYW1l
CQkJKHZvaWQpOwoKCQlFcnJDb2RlCQkJCQlTZXRDb25maWcJCQkJKGNvbnN0IENvbmZpZ1Nlcmlh
bCYpOwoJCXZvaWQJCQkJCUdldENvbmZpZwkJCQkoQ29uZmlnU2VyaWFsJik7CgoJCXZvaWQJCQkJ
CVNldFJUUwkJCQkJKFJUU0NvbnRyb2wgc3RhdGUpOwoJCXZvaWQJCQkJCVNldERUUgkJCQkJKEJv
b2wgc3RhdGUpOwoJCXZvaWQJCQkJCVNldEJyZWFrCQkJCShCb29sIHN0YXRlKTsKCgkJQm9vbAkJ
CQkJR2V0Q1RTCQkJCQkodm9pZCk7CgkJQm9vbAkJCQkJR2V0RFNSCQkJCQkodm9pZCk7CgoJCXN0
YXRpYyBFbVRyYW5zcG9ydFNlcmlhbCoJR2V0VHJhbnNwb3J0CQkoY29uc3QgQ29uZmlnU2VyaWFs
Jik7CgkJc3RhdGljIHZvaWQJCQkJR2V0RGVzY3JpcHRvckxpc3QJCShFbVRyYW5zcG9ydERlc2Ny
aXB0b3JMaXN0Jik7CgkJc3RhdGljIHZvaWQJCQkJR2V0U2VyaWFsQmF1ZExpc3QJCShCYXVkTGlz
dCYpOwoKCXByaXZhdGU6CgkJdm9pZAkJCQkJSG9zdENvbnN0cnVjdAkJCSh2b2lkKTsKCQl2b2lk
CQkJCQlIb3N0RGVzdHJ1Y3QJCQkodm9pZCk7CgoJCUVyckNvZGUJCQkJCUhvc3RPcGVuCQkJCSh2
b2lkKTsKCQlFcnJDb2RlCQkJCQlIb3N0Q2xvc2UJCQkJKHZvaWQpOwoKCQlFcnJDb2RlCQkJCQlI
b3N0UmVhZAkJCQkobG9uZyYsIHZvaWQqKTsKCQlFcnJDb2RlCQkJCQlIb3N0V3JpdGUJCQkJKGxv
bmcmLCBjb25zdCB2b2lkKik7CgkJbG9uZwkJCQkJSG9zdEJ5dGVzSW5CdWZmZXIJCShsb25nIG1p
bkJ5dGVzKTsKCgkJRXJyQ29kZQkJCQkJSG9zdFNldENvbmZpZwkJCShjb25zdCBDb25maWdTZXJp
YWwmKTsKCgkJdm9pZAkJCQkJSG9zdFNldFJUUwkJCQkoUlRTQ29udHJvbCBzdGF0ZSk7CgkJdm9p
ZAkJCQkJSG9zdFNldERUUgkJCQkoQm9vbCBzdGF0ZSk7CgkJdm9pZAkJCQkJSG9zdFNldEJyZWFr
CQkJKEJvb2wgc3RhdGUpOwoKCQlCb29sCQkJCQlIb3N0R2V0Q1RTCQkJCSh2b2lkKTsKCQlCb29s
CQkJCQlIb3N0R2V0RFNSCQkJCSh2b2lkKTsKCgkJc3RhdGljIHZvaWQJCQkJSG9zdEdldFBvcnRO
YW1lTGlzdAkJKFBvcnROYW1lTGlzdCYpOwoJCXN0YXRpYyB2b2lkCQkJCUhvc3RHZXRTZXJpYWxC
YXVkTGlzdAkoQmF1ZExpc3QmKTsKCgkJRW1Ib3N0VHJhbnNwb3J0U2VyaWFsKglmSG9zdDsKCQlD
b25maWdTZXJpYWwJCQlmQ29uZmlnOwoJCUJvb2wJCQkJCWZDb21tRXN0YWJsaXNoZWQ7CgoJCXN0
YXRpYyBPcGVuUG9ydExpc3QJCWZnT3BlblBvcnRzOwp9OwoKCiMgMjAgIi4uL1NyY1NoYXJlZC9F
bURsZy5oIiAyCgoKIyAxICIuLi9TcmNTaGFyZWQvRW1TdHJ1Y3RzLmgiIDEKIAogCgoKCgoKCgoK
CgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL0VtRGV2aWNlLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoK
CiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMv
Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy91dGlsaXR5IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAogCiAKIyAxOCAiLi4vU3JjU2hhcmVkL0VtRGV2aWNlLmgiIDIK
CgoKY2xhc3MgRW1DUFU7CmNsYXNzIEVtRmlsZVJlZjsKY2xhc3MgRW1SZWdzOwpjbGFzcyBFbVNl
c3Npb247CnN0cnVjdCBEZXZpY2VJbmZvOwoKY2xhc3MgRW1ST01SZWFkZXI7CgpjbGFzcyBFbURl
dmljZTsKdHlwZWRlZiB2ZWN0b3I8RW1EZXZpY2U+CUVtRGV2aWNlTGlzdDsKCgpjbGFzcyBFbURl
dmljZQp7CglwdWJsaWM6CgkJCQkJCQkJRW1EZXZpY2UJCQkodm9pZCk7CgkJCQkJCQkJRW1EZXZp
Y2UJCQkoY29uc3QgY2hhciopOwoJCQkJCQkJCUVtRGV2aWNlCQkJKGNvbnN0IHN0cmluZyYpOwoJ
CQkJCQkJCUVtRGV2aWNlCQkJKGNvbnN0IEVtRGV2aWNlJik7CgkJCQkJCQkJfkVtRGV2aWNlCQkJ
KHZvaWQpOwoKCQlib29sCQkJCQlvcGVyYXRvcj09CQkJKGNvbnN0IEVtRGV2aWNlJikgY29uc3Q7
CgkJYm9vbAkJCQkJb3BlcmF0b3IhPQkJCShjb25zdCBFbURldmljZSYpIGNvbnN0OwoKCQlCb29s
CQkJCQlTdXBwb3J0ZWQJCQkodm9pZCkgY29uc3Q7CgoJCUJvb2wJCQkJCVN1cHBvcnRzNjgzMjgJ
CSh2b2lkKSBjb25zdDsKCQlCb29sCQkJCQlTdXBwb3J0czY4RVozMjgJCSh2b2lkKSBjb25zdDsK
CQlCb29sCQkJCQlTdXBwb3J0czY4VlozMjgJCSh2b2lkKSBjb25zdDsKCQlCb29sCQkJCQlTdXBw
b3J0czY4U1ozMjgJCSh2b2lkKSBjb25zdDsKCQlCb29sCQkJCQlTdXBwb3J0c0FSTQkJCSh2b2lk
KSBjb25zdDsKCgkJQm9vbAkJCQkJUHJpc21QbGF0aW51bUVkZ2VIYWNrCSh2b2lkKSBjb25zdDsK
CQlCb29sCQkJCQlFZGdlSGFjawkJCQkodm9pZCkgY29uc3Q7CgoJCUJvb2wJCQkJCVN1cHBvcnRz
Uk9NCQkJKGNvbnN0IEVtRmlsZVJlZiYpIGNvbnN0OwoJCUJvb2wJCQkJCVN1cHBvcnRzUk9NCQkJ
KGNvbnN0IEVtUk9NUmVhZGVyJikgY29uc3Q7CgoJCUVtQ1BVKgkJCQkJQ3JlYXRlQ1BVCQkJKEVt
U2Vzc2lvbiopIGNvbnN0OwoJCXZvaWQJCQkJCUNyZWF0ZVJlZ3MJCQkodm9pZCkgY29uc3Q7CgoJ
CUJvb2wJCQkJCUhhc0ZsYXNoCQkJKHZvaWQpIGNvbnN0OwoKCQlSQU1TaXplVHlwZQkJCQlNaW5S
QU1TaXplCQkJKHZvaWQpIGNvbnN0OwoKCQlsb25nCQkJCQlIYXJkd2FyZUlECQkJKHZvaWQpIGNv
bnN0OwoJCWxvbmcJCQkJCUhhcmR3YXJlU3ViSUQJCSh2b2lkKSBjb25zdDsKCgkJc3RyaW5nCQkJ
CQlHZXRNZW51U3RyaW5nCQkodm9pZCkgY29uc3Q7CgkJc3RyaW5nCQkJCQlHZXRJRFN0cmluZwkJ
CSh2b2lkKSBjb25zdDsKCQl2ZWN0b3I8c3RyaW5nPgkJCUdldElEU3RyaW5ncwkJKHZvaWQpIGNv
bnN0OwoKCXB1YmxpYzoKCQlzdGF0aWMgRW1EZXZpY2VMaXN0CQlHZXREZXZpY2VMaXN0CQkodm9p
ZCk7CgoJcHJpdmF0ZToKCQkJCQkJCQlFbURldmljZQkJCShpbnQpOwoJCWNvbnN0IERldmljZUlu
Zm8qCQlHZXREZXZpY2VJbmZvCQkodm9pZCkgY29uc3Q7CgkJaW50CQkJCQkJR2V0RGV2aWNlSUQJ
CQkoY29uc3QgY2hhciopIGNvbnN0OwoKCQlpbnQJCQkJCQlmRGV2aWNlSUQ7Cn07CgoKIyAxOCAi
Li4vU3JjU2hhcmVkL0VtU3RydWN0cy5oIiAyCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp
Yi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9k
ZXF1ZSIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvbG9j
YWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2lu
Y2x1ZGUvZysrLTMvc3RsX2RlcXVlLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
ICAKCgoKCgoKIAogCmlubGluZSBzaXplX3QKX19kZXF1ZV9idWZfc2l6ZShzaXplX3QgX19uLCBz
aXplX3QgX19zaXplKQp7CiAgcmV0dXJuIF9fbiAhPSAwID8gX19uIDogKF9fc2l6ZSA8IDUxMiA/
IHNpemVfdCg1MTIgLyBfX3NpemUpIDogc2l6ZV90KDEpKTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBf
VHAsIGNsYXNzIF9SZWYsIGNsYXNzIF9QdHIsIHNpemVfdCBfX2J1ZnNpej4Kc3RydWN0IF9EZXF1
ZV9pdGVyYXRvciB7CiAgdHlwZWRlZiBfRGVxdWVfaXRlcmF0b3I8X1RwLF9UcCYsX1RwKixfX2J1
ZnNpej4gICAgICAgICAgICAgaXRlcmF0b3I7CiAgdHlwZWRlZiBfRGVxdWVfaXRlcmF0b3I8X1Rw
LGNvbnN0IF9UcCYsY29uc3QgX1RwKixfX2J1ZnNpej4gY29uc3RfaXRlcmF0b3I7CiAgc3RhdGlj
IHNpemVfdCAKICAgIF9TX2J1ZmZlcl9zaXplKCkgeyByZXR1cm4gX19kZXF1ZV9idWZfc2l6ZShf
X2J1ZnNpeiwgc2l6ZW9mKF9UcCkpOyB9CgoKCgoKCgoKCiAgdHlwZWRlZiByYW5kb21fYWNjZXNz
X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBl
OwogIHR5cGVkZWYgX1B0ciBwb2ludGVyOwogIHR5cGVkZWYgX1JlZiByZWZlcmVuY2U7CiAgdHlw
ZWRlZiBzaXplX3Qgc2l6ZV90eXBlOwogIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlw
ZTsKICB0eXBlZGVmIF9UcCoqIF9NYXBfcG9pbnRlcjsKCiAgdHlwZWRlZiBfRGVxdWVfaXRlcmF0
b3IgX1NlbGY7CgogIF9UcCogX01fY3VyOwogIF9UcCogX01fZmlyc3Q7CiAgX1RwKiBfTV9sYXN0
OwogIF9NYXBfcG9pbnRlciBfTV9ub2RlOwoKICBfRGVxdWVfaXRlcmF0b3IoX1RwKiBfX3gsIF9N
YXBfcG9pbnRlciBfX3kpIAogICAgOiBfTV9jdXIoX194KSwgX01fZmlyc3QoKl9feSksCiAgICAg
IF9NX2xhc3QoKl9feSArIF9TX2J1ZmZlcl9zaXplKCkpLCBfTV9ub2RlKF9feSkge30KICBfRGVx
dWVfaXRlcmF0b3IoKSA6IF9NX2N1cigwKSwgX01fZmlyc3QoMCksIF9NX2xhc3QoMCksIF9NX25v
ZGUoMCkge30KICBfRGVxdWVfaXRlcmF0b3IoY29uc3QgaXRlcmF0b3ImIF9feCkKICAgIDogX01f
Y3VyKF9feC5fTV9jdXIpLCBfTV9maXJzdChfX3guX01fZmlyc3QpLCAKICAgICAgX01fbGFzdChf
X3guX01fbGFzdCksIF9NX25vZGUoX194Ll9NX25vZGUpIHt9CgogIHJlZmVyZW5jZSBvcGVyYXRv
ciooKSBjb25zdCB7IHJldHVybiAqX01fY3VyOyB9CgogIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNv
bnN0IHsgcmV0dXJuIF9NX2N1cjsgfQoKCiAgZGlmZmVyZW5jZV90eXBlIG9wZXJhdG9yLShjb25z
dCBfU2VsZiYgX194KSBjb25zdCB7CiAgICByZXR1cm4gZGlmZmVyZW5jZV90eXBlKF9TX2J1ZmZl
cl9zaXplKCkpICogKF9NX25vZGUgLSBfX3guX01fbm9kZSAtIDEpICsKICAgICAgKF9NX2N1ciAt
IF9NX2ZpcnN0KSArIChfX3guX01fbGFzdCAtIF9feC5fTV9jdXIpOwogIH0KCiAgX1NlbGYmIG9w
ZXJhdG9yKysoKSB7CiAgICArK19NX2N1cjsKICAgIGlmIChfTV9jdXIgPT0gX01fbGFzdCkgewog
ICAgICBfTV9zZXRfbm9kZShfTV9ub2RlICsgMSk7CiAgICAgIF9NX2N1ciA9IF9NX2ZpcnN0Owog
ICAgfQogICAgcmV0dXJuICp0aGlzOyAKICB9CiAgX1NlbGYgb3BlcmF0b3IrKyhpbnQpICB7CiAg
ICBfU2VsZiBfX3RtcCA9ICp0aGlzOwogICAgKysqdGhpczsKICAgIHJldHVybiBfX3RtcDsKICB9
CgogIF9TZWxmJiBvcGVyYXRvci0tKCkgewogICAgaWYgKF9NX2N1ciA9PSBfTV9maXJzdCkgewog
ICAgICBfTV9zZXRfbm9kZShfTV9ub2RlIC0gMSk7CiAgICAgIF9NX2N1ciA9IF9NX2xhc3Q7CiAg
ICB9CiAgICAtLV9NX2N1cjsKICAgIHJldHVybiAqdGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3It
LShpbnQpIHsKICAgIF9TZWxmIF9fdG1wID0gKnRoaXM7CiAgICAtLSp0aGlzOwogICAgcmV0dXJu
IF9fdG1wOwogIH0KCiAgX1NlbGYmIG9wZXJhdG9yKz0oZGlmZmVyZW5jZV90eXBlIF9fbikKICB7
CiAgICBkaWZmZXJlbmNlX3R5cGUgX19vZmZzZXQgPSBfX24gKyAoX01fY3VyIC0gX01fZmlyc3Qp
OwogICAgaWYgKF9fb2Zmc2V0ID49IDAgJiYgX19vZmZzZXQgPCBkaWZmZXJlbmNlX3R5cGUoX1Nf
YnVmZmVyX3NpemUoKSkpCiAgICAgIF9NX2N1ciArPSBfX247CiAgICBlbHNlIHsKICAgICAgZGlm
ZmVyZW5jZV90eXBlIF9fbm9kZV9vZmZzZXQgPQogICAgICAgIF9fb2Zmc2V0ID4gMCA/IF9fb2Zm
c2V0IC8gZGlmZmVyZW5jZV90eXBlKF9TX2J1ZmZlcl9zaXplKCkpCiAgICAgICAgICAgICAgICAg
ICA6IC1kaWZmZXJlbmNlX3R5cGUoKC1fX29mZnNldCAtIDEpIC8gX1NfYnVmZmVyX3NpemUoKSkg
LSAxOwogICAgICBfTV9zZXRfbm9kZShfTV9ub2RlICsgX19ub2RlX29mZnNldCk7CiAgICAgIF9N
X2N1ciA9IF9NX2ZpcnN0ICsgCiAgICAgICAgKF9fb2Zmc2V0IC0gX19ub2RlX29mZnNldCAqIGRp
ZmZlcmVuY2VfdHlwZShfU19idWZmZXJfc2l6ZSgpKSk7CiAgICB9CiAgICByZXR1cm4gKnRoaXM7
CiAgfQoKICBfU2VsZiBvcGVyYXRvcisoZGlmZmVyZW5jZV90eXBlIF9fbikgY29uc3QKICB7CiAg
ICBfU2VsZiBfX3RtcCA9ICp0aGlzOwogICAgcmV0dXJuIF9fdG1wICs9IF9fbjsKICB9CgogIF9T
ZWxmJiBvcGVyYXRvci09KGRpZmZlcmVuY2VfdHlwZSBfX24pIHsgcmV0dXJuICp0aGlzICs9IC1f
X247IH0KIAogIF9TZWxmIG9wZXJhdG9yLShkaWZmZXJlbmNlX3R5cGUgX19uKSBjb25zdCB7CiAg
ICBfU2VsZiBfX3RtcCA9ICp0aGlzOwogICAgcmV0dXJuIF9fdG1wIC09IF9fbjsKICB9CgogIHJl
ZmVyZW5jZSBvcGVyYXRvcltdKGRpZmZlcmVuY2VfdHlwZSBfX24pIGNvbnN0IHsgcmV0dXJuICoo
KnRoaXMgKyBfX24pOyB9CgogIGJvb2wgb3BlcmF0b3I9PShjb25zdCBfU2VsZiYgX194KSBjb25z
dCB7IHJldHVybiBfTV9jdXIgPT0gX194Ll9NX2N1cjsgfQogIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBfU2VsZiYgX194KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IF9feCk7IH0KICBib29sIG9w
ZXJhdG9yPChjb25zdCBfU2VsZiYgX194KSBjb25zdCB7CiAgICByZXR1cm4gKF9NX25vZGUgPT0g
X194Ll9NX25vZGUpID8gCiAgICAgIChfTV9jdXIgPCBfX3guX01fY3VyKSA6IChfTV9ub2RlIDwg
X194Ll9NX25vZGUpOwogIH0KCiAgdm9pZCBfTV9zZXRfbm9kZShfTWFwX3BvaW50ZXIgX19uZXdf
bm9kZSkgewogICAgX01fbm9kZSA9IF9fbmV3X25vZGU7CiAgICBfTV9maXJzdCA9ICpfX25ld19u
b2RlOwogICAgX01fbGFzdCA9IF9NX2ZpcnN0ICsgZGlmZmVyZW5jZV90eXBlKF9TX2J1ZmZlcl9z
aXplKCkpOwogIH0KfTsKCiMgMjYyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9kZXF1ZS5oIiAz
CgoKIAogCiAKIAogCgojIDM2NSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfZGVxdWUuaCIgMwoK
CnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYywgc2l6ZV90IF9fYnVmc2l6PgpjbGFz
cyBfRGVxdWVfYmFzZSB7CnB1YmxpYzoKCiAgdHlwZWRlZiBfRGVxdWVfaXRlcmF0b3I8X1RwLF9U
cCYsX1RwKixfX2J1ZnNpej4gICAgICAgICAgICAgIGl0ZXJhdG9yOwogIHR5cGVkZWYgX0RlcXVl
X2l0ZXJhdG9yPF9UcCxjb25zdCBfVHAmLGNvbnN0IF9UcCosIF9fYnVmc2l6PiBjb25zdF9pdGVy
YXRvcjsKCgoKCgogIHR5cGVkZWYgX0FsbG9jIGFsbG9jYXRvcl90eXBlOwogIGFsbG9jYXRvcl90
eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBhbGxvY2F0b3JfdHlwZSgpOyB9Cgog
IF9EZXF1ZV9iYXNlKGNvbnN0IGFsbG9jYXRvcl90eXBlJiwgc2l6ZV90IF9fbnVtX2VsZW1lbnRz
KQogICAgOiBfTV9tYXAoMCksIF9NX21hcF9zaXplKDApLCAgX01fc3RhcnQoKSwgX01fZmluaXNo
KCkgewogICAgX01faW5pdGlhbGl6ZV9tYXAoX19udW1fZWxlbWVudHMpOwogIH0KICBfRGVxdWVf
YmFzZShjb25zdCBhbGxvY2F0b3JfdHlwZSYpCiAgICA6IF9NX21hcCgwKSwgX01fbWFwX3NpemUo
MCksICBfTV9zdGFydCgpLCBfTV9maW5pc2goKSB7fQogIH5fRGVxdWVfYmFzZSgpOyAgICAKCnBy
b3RlY3RlZDoKICB2b2lkIF9NX2luaXRpYWxpemVfbWFwKHNpemVfdCk7CiAgdm9pZCBfTV9jcmVh
dGVfbm9kZXMoX1RwKiogX19uc3RhcnQsIF9UcCoqIF9fbmZpbmlzaCk7CiAgdm9pZCBfTV9kZXN0
cm95X25vZGVzKF9UcCoqIF9fbnN0YXJ0LCBfVHAqKiBfX25maW5pc2gpOwogIGVudW0geyBfU19p
bml0aWFsX21hcF9zaXplID0gOCB9OwoKcHJvdGVjdGVkOgogIF9UcCoqIF9NX21hcDsKICBzaXpl
X3QgX01fbWFwX3NpemU7ICAKICBpdGVyYXRvciBfTV9zdGFydDsKICBpdGVyYXRvciBfTV9maW5p
c2g7CgogIHR5cGVkZWYgc2ltcGxlX2FsbG9jPF9UcCwgX0FsbG9jPiAgX05vZGVfYWxsb2NfdHlw
ZTsKICB0eXBlZGVmIHNpbXBsZV9hbGxvYzxfVHAqLCBfQWxsb2M+IF9NYXBfYWxsb2NfdHlwZTsK
CiAgX1RwKiBfTV9hbGxvY2F0ZV9ub2RlKCkKICAgIHsgcmV0dXJuIF9Ob2RlX2FsbG9jX3R5cGU6
OmFsbG9jYXRlKF9fZGVxdWVfYnVmX3NpemUoX19idWZzaXosIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoX1RwKSkpOyB9CiAg
dm9pZCBfTV9kZWFsbG9jYXRlX25vZGUoX1RwKiBfX3ApCiAgICB7IF9Ob2RlX2FsbG9jX3R5cGU6
OmRlYWxsb2NhdGUoX19wLCBfX2RlcXVlX2J1Zl9zaXplKF9fYnVmc2l6LCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9UcCkp
KTsgfQogIF9UcCoqIF9NX2FsbG9jYXRlX21hcChzaXplX3QgX19uKSAKICAgIHsgcmV0dXJuIF9N
YXBfYWxsb2NfdHlwZTo6YWxsb2NhdGUoX19uKTsgfQogIHZvaWQgX01fZGVhbGxvY2F0ZV9tYXAo
X1RwKiogX19wLCBzaXplX3QgX19uKSAKICAgIHsgX01hcF9hbGxvY190eXBlOjpkZWFsbG9jYXRl
KF9fcCwgX19uKTsgfQp9OwoKCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2Ms
IHNpemVfdCBfX2J1ZnNpej4KX0RlcXVlX2Jhc2U8X1RwLF9BbGxvYyxfX2J1ZnNpej46On5fRGVx
dWVfYmFzZSgpIHsKICBpZiAoX01fbWFwKSB7CiAgICBfTV9kZXN0cm95X25vZGVzKF9NX3N0YXJ0
Ll9NX25vZGUsIF9NX2ZpbmlzaC5fTV9ub2RlICsgMSk7CiAgICBfTV9kZWFsbG9jYXRlX21hcChf
TV9tYXAsIF9NX21hcF9zaXplKTsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9B
bGxvYywgc2l6ZV90IF9fYnVmc2l6Pgp2b2lkCl9EZXF1ZV9iYXNlPF9UcCxfQWxsb2MsX19idWZz
aXo+OjpfTV9pbml0aWFsaXplX21hcChzaXplX3QgX19udW1fZWxlbWVudHMpCnsKICBzaXplX3Qg
X19udW1fbm9kZXMgPSAKICAgIF9fbnVtX2VsZW1lbnRzIC8gX19kZXF1ZV9idWZfc2l6ZShfX2J1
ZnNpeiwgc2l6ZW9mKF9UcCkpICsgMTsKCiAgX01fbWFwX3NpemUgPSBtYXgoKHNpemVfdCkgX1Nf
aW5pdGlhbF9tYXBfc2l6ZSwgX19udW1fbm9kZXMgKyAyKTsKICBfTV9tYXAgPSBfTV9hbGxvY2F0
ZV9tYXAoX01fbWFwX3NpemUpOwoKICBfVHAqKiBfX25zdGFydCA9IF9NX21hcCArIChfTV9tYXBf
c2l6ZSAtIF9fbnVtX25vZGVzKSAvIDI7CiAgX1RwKiogX19uZmluaXNoID0gX19uc3RhcnQgKyBf
X251bV9ub2RlczsKICAgIAogIHRyeSAgewogICAgX01fY3JlYXRlX25vZGVzKF9fbnN0YXJ0LCBf
X25maW5pc2gpOwogIH0KICBjYXRjaCguLi4pIHsgIChfTV9kZWFsbG9jYXRlX21hcChfTV9tYXAs
IF9NX21hcF9zaXplKSwgCiAgICAgICAgICAgICAgICBfTV9tYXAgPSAwLCBfTV9tYXBfc2l6ZSA9
IDApIDsgdGhyb3c7IH0gOwogIF9NX3N0YXJ0Ll9NX3NldF9ub2RlKF9fbnN0YXJ0KTsKICBfTV9m
aW5pc2guX01fc2V0X25vZGUoX19uZmluaXNoIC0gMSk7CiAgX01fc3RhcnQuX01fY3VyID0gX01f
c3RhcnQuX01fZmlyc3Q7CiAgX01fZmluaXNoLl9NX2N1ciA9IF9NX2ZpbmlzaC5fTV9maXJzdCAr
CiAgICAgICAgICAgICAgIF9fbnVtX2VsZW1lbnRzICUgX19kZXF1ZV9idWZfc2l6ZShfX2J1ZnNp
eiwgc2l6ZW9mKF9UcCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2MsIHNp
emVfdCBfX2J1ZnNpej4Kdm9pZApfRGVxdWVfYmFzZTxfVHAsX0FsbG9jLF9fYnVmc2l6Pjo6X01f
Y3JlYXRlX25vZGVzKF9UcCoqIF9fbnN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9UcCoqIF9fbmZpbmlzaCkKewogIF9UcCoqIF9fY3VyOwog
IHRyeSAgewogICAgZm9yIChfX2N1ciA9IF9fbnN0YXJ0OyBfX2N1ciA8IF9fbmZpbmlzaDsgKytf
X2N1cikKICAgICAgKl9fY3VyID0gX01fYWxsb2NhdGVfbm9kZSgpOwogIH0KICBjYXRjaCguLi4p
IHsgIF9NX2Rlc3Ryb3lfbm9kZXMoX19uc3RhcnQsIF9fY3VyKSA7IHRocm93OyB9IDsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jLCBzaXplX3QgX19idWZzaXo+CnZvaWQgCl9E
ZXF1ZV9iYXNlPF9UcCxfQWxsb2MsX19idWZzaXo+OjpfTV9kZXN0cm95X25vZGVzKF9UcCoqIF9f
bnN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfVHAqKiBfX25maW5pc2gpCnsKICBmb3IgKF9UcCoqIF9fbiA9IF9fbnN0YXJ0OyBfX24gPCBf
X25maW5pc2g7ICsrX19uKQogICAgX01fZGVhbGxvY2F0ZV9ub2RlKCpfX24pOwp9CgogCiAKIAp0
ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2MgPSBhbGxvYyAsIAogICAgICAgICAgc2l6
ZV90IF9fYnVmc2l6ID0gMD4gCmNsYXNzIGRlcXVlIDogcHJvdGVjdGVkIF9EZXF1ZV9iYXNlPF9U
cCwgX0FsbG9jLCBfX2J1ZnNpej4gewogIHR5cGVkZWYgX0RlcXVlX2Jhc2U8X1RwLCBfQWxsb2Ms
IF9fYnVmc2l6PiBfQmFzZTsKcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgdHlw
ZWRlZiBfVHAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHZhbHVlX3R5cGUqIHBvaW50ZXI7CiAgdHlw
ZWRlZiBjb25zdCB2YWx1ZV90eXBlKiBjb25zdF9wb2ludGVyOwogIHR5cGVkZWYgdmFsdWVfdHlw
ZSYgcmVmZXJlbmNlOwogIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSYgY29uc3RfcmVmZXJlbmNl
OwogIHR5cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJl
bmNlX3R5cGU7CgogIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6OmFsbG9jYXRvcl90eXBlIGFsbG9j
YXRvcl90eXBlOwogIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7IHJldHVy
biBfQmFzZTo6Z2V0X2FsbG9jYXRvcigpOyB9CgpwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICB0eXBlZGVmIHR5cGVuYW1lIF9CYXNlOjppdGVyYXRvciAgICAgICBpdGVyYXRvcjsK
ICB0eXBlZGVmIHR5cGVuYW1lIF9CYXNlOjpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsK
CgogIHR5cGVkZWYgcmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj4gY29uc3RfcmV2ZXJz
ZV9pdGVyYXRvcjsKICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+IHJldmVyc2Vf
aXRlcmF0b3I7CgoKCgoKCgoKcHJvdGVjdGVkOiAgICAgICAgICAgICAgICAgICAgICAgCiAgdHlw
ZWRlZiBwb2ludGVyKiBfTWFwX3BvaW50ZXI7CiAgc3RhdGljIHNpemVfdCBfU19idWZmZXJfc2l6
ZSgpCiAgICB7IHJldHVybiBfX2RlcXVlX2J1Zl9zaXplKF9fYnVmc2l6LCBzaXplb2YoX1RwKSk7
IH0KCnByb3RlY3RlZDoKIyA1MjggIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv
bGFyaXMyLjgvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2RlcXVlLmgiIDMK
CgpwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAKICBpdGVyYXRvciBiZWdpbigpIHsg
cmV0dXJuIF9NX3N0YXJ0OyB9CiAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gX01fZmluaXNoOyB9
CiAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBfTV9zdGFydDsgfQogIGNv
bnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIF9NX2ZpbmlzaDsgfQoKICByZXZlcnNl
X2l0ZXJhdG9yIHJiZWdpbigpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoX01fZmluaXNoKTsg
fQogIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoX01f
c3RhcnQpOyB9CiAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCAKICAgIHsg
cmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoX01fZmluaXNoKTsgfQogIGNvbnN0X3JldmVy
c2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IAogICAgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVy
YXRvcihfTV9zdGFydCk7IH0KCiAgcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIF9fbikK
ICAgIHsgcmV0dXJuIF9NX3N0YXJ0W2RpZmZlcmVuY2VfdHlwZShfX24pXTsgfQogIGNvbnN0X3Jl
ZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBfX24pIGNvbnN0IAogICAgeyByZXR1cm4gX01f
c3RhcnRbZGlmZmVyZW5jZV90eXBlKF9fbildOyB9CgogIHJlZmVyZW5jZSBmcm9udCgpIHsgcmV0
dXJuICpfTV9zdGFydDsgfQogIHJlZmVyZW5jZSBiYWNrKCkgewogICAgaXRlcmF0b3IgX190bXAg
PSBfTV9maW5pc2g7CiAgICAtLV9fdG1wOwogICAgcmV0dXJuICpfX3RtcDsKICB9CiAgY29uc3Rf
cmVmZXJlbmNlIGZyb250KCkgY29uc3QgeyByZXR1cm4gKl9NX3N0YXJ0OyB9CiAgY29uc3RfcmVm
ZXJlbmNlIGJhY2soKSBjb25zdCB7CiAgICBjb25zdF9pdGVyYXRvciBfX3RtcCA9IF9NX2Zpbmlz
aDsKICAgIC0tX190bXA7CiAgICByZXR1cm4gKl9fdG1wOwogIH0KCiAgc2l6ZV90eXBlIHNpemUo
KSBjb25zdCB7IHJldHVybiBfTV9maW5pc2ggLSBfTV9zdGFydDs7IH0KICBzaXplX3R5cGUgbWF4
X3NpemUoKSBjb25zdCB7IHJldHVybiBzaXplX3R5cGUoLTEpOyB9CiAgYm9vbCBlbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIF9NX2ZpbmlzaCA9PSBfTV9zdGFydDsgfQoKcHVibGljOiAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgZXhwbGljaXQgZGVxdWUoY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9f
YSA9IGFsbG9jYXRvcl90eXBlKCkpIAogICAgOiBfQmFzZShfX2EsIDApIHt9CiAgZGVxdWUoY29u
c3QgZGVxdWUmIF9feCkgOiBfQmFzZShfX3guZ2V0X2FsbG9jYXRvcigpLCBfX3guc2l6ZSgpKSAK
ICAgIHsgdW5pbml0aWFsaXplZF9jb3B5KF9feC5iZWdpbigpLCBfX3guZW5kKCksIF9NX3N0YXJ0
KTsgfQogIGRlcXVlKHNpemVfdHlwZSBfX24sIGNvbnN0IHZhbHVlX3R5cGUmIF9fdmFsdWUsCiAg
ICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90eXBlKCkpIDogX0Jh
c2UoX19hLCBfX24pCiAgICB7IF9NX2ZpbGxfaW5pdGlhbGl6ZShfX3ZhbHVlKTsgfQogIGV4cGxp
Y2l0IGRlcXVlKHNpemVfdHlwZSBfX24pIDogX0Jhc2UoYWxsb2NhdG9yX3R5cGUoKSwgX19uKQog
ICAgeyBfTV9maWxsX2luaXRpYWxpemUodmFsdWVfdHlwZSgpKTsgfQoKCgogICAKICB0ZW1wbGF0
ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgZGVxdWUoX0lucHV0SXRlcmF0b3IgX19maXJzdCwg
X0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2Eg
PSBhbGxvY2F0b3JfdHlwZSgpKSA6IF9CYXNlKF9fYSkgewogICAgdHlwZWRlZiB0eXBlbmFtZSBf
SXNfaW50ZWdlcjxfSW5wdXRJdGVyYXRvcj46Ol9JbnRlZ3JhbCBfSW50ZWdyYWw7CiAgICBfTV9p
bml0aWFsaXplX2Rpc3BhdGNoKF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFsKCkpOwogIH0KCiAg
dGVtcGxhdGUgPGNsYXNzIF9JbnRlZ2VyPgogIHZvaWQgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChf
SW50ZWdlciBfX24sIF9JbnRlZ2VyIF9feCwgX190cnVlX3R5cGUpIHsKICAgIF9NX2luaXRpYWxp
emVfbWFwKF9fbik7CiAgICBfTV9maWxsX2luaXRpYWxpemUoX194KTsKICB9CgogIHRlbXBsYXRl
IDxjbGFzcyBfSW5wdXRJdGVyPgogIHZvaWQgX01faW5pdGlhbGl6ZV9kaXNwYXRjaChfSW5wdXRJ
dGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2ZhbHNlX3R5cGUpIHsKICAgIF9NX3JhbmdlX2luaXRpYWxpemUoX19maXJzdCwgX19s
YXN0LCBfX2l0ZXJhdG9yX2NhdGVnb3J5KCBfX2ZpcnN0ICkgKTsKICB9CgojIDYwOSAiL3Vzci9s
b2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9zdGxfZGVxdWUuaCIgMwoKCiAgfmRlcXVlKCkgeyBkZXN0cm95KF9NX3N0
YXJ0LCBfTV9maW5pc2gpOyB9CgogIGRlcXVlJiBvcGVyYXRvcj0gKGNvbnN0IGRlcXVlJiBfX3gp
IHsKICAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbiA9IHNpemUoKTsKICAgIGlmICgmX194ICE9IHRo
aXMpIHsKICAgICAgaWYgKF9fbGVuID49IF9feC5zaXplKCkpCiAgICAgICAgZXJhc2UoY29weShf
X3guYmVnaW4oKSwgX194LmVuZCgpLCBfTV9zdGFydCksIF9NX2ZpbmlzaCk7CiAgICAgIGVsc2Ug
ewogICAgICAgIGNvbnN0X2l0ZXJhdG9yIF9fbWlkID0gX194LmJlZ2luKCkgKyBkaWZmZXJlbmNl
X3R5cGUoX19sZW4pOwogICAgICAgIGNvcHkoX194LmJlZ2luKCksIF9fbWlkLCBfTV9zdGFydCk7
CiAgICAgICAgaW5zZXJ0KF9NX2ZpbmlzaCwgX19taWQsIF9feC5lbmQoKSk7CiAgICAgIH0KICAg
IH0KICAgIHJldHVybiAqdGhpczsKICB9ICAgICAgICAKCiAgdm9pZCBzd2FwKGRlcXVlJiBfX3gp
IHsKICAgICA6OnN3YXAoX01fc3RhcnQsIF9feC5fTV9zdGFydCk7CiAgICAgOjpzd2FwKF9NX2Zp
bmlzaCwgX194Ll9NX2ZpbmlzaCk7CiAgICAgOjpzd2FwKF9NX21hcCwgX194Ll9NX21hcCk7CiAg
ICAgOjpzd2FwKF9NX21hcF9zaXplLCBfX3guX01fbWFwX3NpemUpOwogIH0KCnB1YmxpYzogCiAg
IAogICAKICAgCiAgIAoKICB2b2lkIGFzc2lnbihzaXplX3R5cGUgX19uLCBjb25zdCBfVHAmIF9f
dmFsKSB7CiAgICBpZiAoX19uID4gc2l6ZSgpKSB7CiAgICAgIGZpbGwoYmVnaW4oKSwgZW5kKCks
IF9fdmFsKTsKICAgICAgaW5zZXJ0KGVuZCgpLCBfX24gLSBzaXplKCksIF9fdmFsKTsKICAgIH0K
ICAgIGVsc2UgewogICAgICBlcmFzZShiZWdpbigpICsgX19uLCBlbmQoKSk7CiAgICAgIGZpbGwo
YmVnaW4oKSwgZW5kKCksIF9fdmFsKTsKICAgIH0KICB9CgoKCiAgdGVtcGxhdGUgPGNsYXNzIF9J
bnB1dEl0ZXJhdG9yPgogIHZvaWQgYXNzaWduKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1
dEl0ZXJhdG9yIF9fbGFzdCkgewogICAgdHlwZWRlZiB0eXBlbmFtZSBfSXNfaW50ZWdlcjxfSW5w
dXRJdGVyYXRvcj46Ol9JbnRlZ3JhbCBfSW50ZWdyYWw7CiAgICBfTV9hc3NpZ25fZGlzcGF0Y2go
X19maXJzdCwgX19sYXN0LCBfSW50ZWdyYWwoKSk7CiAgfQoKcHJpdmF0ZTogICAgICAgICAgICAg
ICAgICAgICAgICAgCgogIHRlbXBsYXRlIDxjbGFzcyBfSW50ZWdlcj4KICB2b2lkIF9NX2Fzc2ln
bl9kaXNwYXRjaChfSW50ZWdlciBfX24sIF9JbnRlZ2VyIF9fdmFsLCBfX3RydWVfdHlwZSkKICAg
IHsgYXNzaWduKChzaXplX3R5cGUpIF9fbiwgKF9UcCkgX192YWwpOyB9CgogIHRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIF9NX2Fzc2lnbl9kaXNwYXRjaChfSW5wdXRJdGVy
YXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19mYWxzZV90eXBlKSB7CiAgICBfTV9hc3NpZ25fYXV4KF9fZmlyc3QsIF9fbGFzdCwg
X19pdGVyYXRvcl9jYXRlZ29yeSggX19maXJzdCApICk7CiAgfQoKICB0ZW1wbGF0ZSA8Y2xhc3Mg
X0lucHV0SXRlcmF0b3I+CiAgdm9pZCBfTV9hc3NpZ25fYXV4KF9JbnB1dEl0ZXJhdG9yIF9fZmly
c3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRl
cmF0b3JfdGFnKTsKCiAgdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CiAgdm9pZCBf
TV9hc3NpZ25fYXV4KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBf
X2xhc3QsCiAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRfaXRlcmF0b3JfdGFnKSB7CiAgICBz
aXplX3R5cGUgX19sZW4gPSAwOwogICAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfX2xlbik7
CiAgICBpZiAoX19sZW4gPiBzaXplKCkpIHsKICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX21pZCA9
IF9fZmlyc3Q7CiAgICAgIGFkdmFuY2UoX19taWQsIHNpemUoKSk7CiAgICAgIGNvcHkoX19maXJz
dCwgX19taWQsIGJlZ2luKCkpOwogICAgICBpbnNlcnQoZW5kKCksIF9fbWlkLCBfX2xhc3QpOwog
ICAgfQogICAgZWxzZQogICAgICBlcmFzZShjb3B5KF9fZmlyc3QsIF9fbGFzdCwgYmVnaW4oKSks
IGVuZCgpKTsKICB9CgoKCnB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgIAogIAogIHZv
aWQgcHVzaF9iYWNrKGNvbnN0IHZhbHVlX3R5cGUmIF9fdCkgewogICAgaWYgKF9NX2ZpbmlzaC5f
TV9jdXIgIT0gX01fZmluaXNoLl9NX2xhc3QgLSAxKSB7CiAgICAgIGNvbnN0cnVjdChfTV9maW5p
c2guX01fY3VyLCBfX3QpOwogICAgICArK19NX2ZpbmlzaC5fTV9jdXI7CiAgICB9CiAgICBlbHNl
CiAgICAgIF9NX3B1c2hfYmFja19hdXgoX190KTsKICB9CgogIHZvaWQgcHVzaF9iYWNrKCkgewog
ICAgaWYgKF9NX2ZpbmlzaC5fTV9jdXIgIT0gX01fZmluaXNoLl9NX2xhc3QgLSAxKSB7CiAgICAg
IGNvbnN0cnVjdChfTV9maW5pc2guX01fY3VyKTsKICAgICAgKytfTV9maW5pc2guX01fY3VyOwog
ICAgfQogICAgZWxzZQogICAgICBfTV9wdXNoX2JhY2tfYXV4KCk7CiAgfQoKICB2b2lkIHB1c2hf
ZnJvbnQoY29uc3QgdmFsdWVfdHlwZSYgX190KSB7CiAgICBpZiAoX01fc3RhcnQuX01fY3VyICE9
IF9NX3N0YXJ0Ll9NX2ZpcnN0KSB7CiAgICAgIGNvbnN0cnVjdChfTV9zdGFydC5fTV9jdXIgLSAx
LCBfX3QpOwogICAgICAtLV9NX3N0YXJ0Ll9NX2N1cjsKICAgIH0KICAgIGVsc2UKICAgICAgX01f
cHVzaF9mcm9udF9hdXgoX190KTsKICB9CgogIHZvaWQgcHVzaF9mcm9udCgpIHsKICAgIGlmIChf
TV9zdGFydC5fTV9jdXIgIT0gX01fc3RhcnQuX01fZmlyc3QpIHsKICAgICAgY29uc3RydWN0KF9N
X3N0YXJ0Ll9NX2N1ciAtIDEpOwogICAgICAtLV9NX3N0YXJ0Ll9NX2N1cjsKICAgIH0KICAgIGVs
c2UKICAgICAgX01fcHVzaF9mcm9udF9hdXgoKTsKICB9CgoKICB2b2lkIHBvcF9iYWNrKCkgewog
ICAgaWYgKF9NX2ZpbmlzaC5fTV9jdXIgIT0gX01fZmluaXNoLl9NX2ZpcnN0KSB7CiAgICAgIC0t
X01fZmluaXNoLl9NX2N1cjsKICAgICAgZGVzdHJveShfTV9maW5pc2guX01fY3VyKTsKICAgIH0K
ICAgIGVsc2UKICAgICAgX01fcG9wX2JhY2tfYXV4KCk7CiAgfQoKICB2b2lkIHBvcF9mcm9udCgp
IHsKICAgIGlmIChfTV9zdGFydC5fTV9jdXIgIT0gX01fc3RhcnQuX01fbGFzdCAtIDEpIHsKICAg
ICAgZGVzdHJveShfTV9zdGFydC5fTV9jdXIpOwogICAgICArK19NX3N0YXJ0Ll9NX2N1cjsKICAg
IH0KICAgIGVsc2UgCiAgICAgIF9NX3BvcF9mcm9udF9hdXgoKTsKICB9CgpwdWJsaWM6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAKCiAgaXRlcmF0b3IgaW5zZXJ0KGl0ZXJhdG9yIHBvc2l0aW9u
LCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpIHsKICAgIGlmIChwb3NpdGlvbi5fTV9jdXIgPT0gX01f
c3RhcnQuX01fY3VyKSB7CiAgICAgIHB1c2hfZnJvbnQoX194KTsKICAgICAgcmV0dXJuIF9NX3N0
YXJ0OwogICAgfQogICAgZWxzZSBpZiAocG9zaXRpb24uX01fY3VyID09IF9NX2ZpbmlzaC5fTV9j
dXIpIHsKICAgICAgcHVzaF9iYWNrKF9feCk7CiAgICAgIGl0ZXJhdG9yIF9fdG1wID0gX01fZmlu
aXNoOwogICAgICAtLV9fdG1wOwogICAgICByZXR1cm4gX190bXA7CiAgICB9CiAgICBlbHNlIHsK
ICAgICAgcmV0dXJuIF9NX2luc2VydF9hdXgocG9zaXRpb24sIF9feCk7CiAgICB9CiAgfQoKICBp
dGVyYXRvciBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbikKICAgIHsgcmV0dXJuIGluc2VydChf
X3Bvc2l0aW9uLCB2YWx1ZV90eXBlKCkpOyB9CgogIHZvaWQgaW5zZXJ0KGl0ZXJhdG9yIF9fcG9z
LCBzaXplX3R5cGUgX19uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpOyAKCgoKICAgCiAgdGVtcGxh
dGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogIHZvaWQgaW5zZXJ0KGl0ZXJhdG9yIF9fcG9zLCBf
SW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX0lzX2ludGVnZXI8X0lucHV0SXRlcmF0b3I+OjpfSW50ZWdyYWwgX0ludGVn
cmFsOwogICAgX01faW5zZXJ0X2Rpc3BhdGNoKF9fcG9zLCBfX2ZpcnN0LCBfX2xhc3QsIF9JbnRl
Z3JhbCgpKTsKICB9CgogIHRlbXBsYXRlIDxjbGFzcyBfSW50ZWdlcj4KICB2b2lkIF9NX2luc2Vy
dF9kaXNwYXRjaChpdGVyYXRvciBfX3BvcywgX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3gsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgX190cnVlX3R5cGUpIHsKICAgIGluc2VydChfX3Bvcywg
KHNpemVfdHlwZSkgX19uLCAodmFsdWVfdHlwZSkgX194KTsKICB9CgogIHRlbXBsYXRlIDxjbGFz
cyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIF9NX2luc2VydF9kaXNwYXRjaChpdGVyYXRvciBfX3Bv
cywKICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5w
dXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19mYWxzZV90eXBl
KSB7CiAgICBpbnNlcnQoX19wb3MsIF9fZmlyc3QsIF9fbGFzdCwgX19pdGVyYXRvcl9jYXRlZ29y
eSggX19maXJzdCApICk7CiAgfQoKCgoKCgoKCgoKICB2b2lkIHJlc2l6ZShzaXplX3R5cGUgX19u
ZXdfc2l6ZSwgY29uc3QgdmFsdWVfdHlwZSYgX194KSB7CiAgICBjb25zdCBzaXplX3R5cGUgX19s
ZW4gPSBzaXplKCk7CiAgICBpZiAoX19uZXdfc2l6ZSA8IF9fbGVuKSAKICAgICAgZXJhc2UoX01f
c3RhcnQgKyBfX25ld19zaXplLCBfTV9maW5pc2gpOwogICAgZWxzZQogICAgICBpbnNlcnQoX01f
ZmluaXNoLCBfX25ld19zaXplIC0gX19sZW4sIF9feCk7CiAgfQoKICB2b2lkIHJlc2l6ZShzaXpl
X3R5cGUgbmV3X3NpemUpIHsgcmVzaXplKG5ld19zaXplLCB2YWx1ZV90eXBlKCkpOyB9CgpwdWJs
aWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAKICBpdGVyYXRvciBlcmFzZShpdGVyYXRvciBf
X3BvcykgewogICAgaXRlcmF0b3IgX19uZXh0ID0gX19wb3M7CiAgICArK19fbmV4dDsKICAgIGRp
ZmZlcmVuY2VfdHlwZSBfX2luZGV4ID0gX19wb3MgLSBfTV9zdGFydDsKICAgIGlmIChzdGF0aWNf
Y2FzdDxzaXplX3R5cGU+KF9faW5kZXgpIDwgKHNpemUoKSA+PiAxKSkgewogICAgICBjb3B5X2Jh
Y2t3YXJkKF9NX3N0YXJ0LCBfX3BvcywgX19uZXh0KTsKICAgICAgcG9wX2Zyb250KCk7CiAgICB9
CiAgICBlbHNlIHsKICAgICAgY29weShfX25leHQsIF9NX2ZpbmlzaCwgX19wb3MpOwogICAgICBw
b3BfYmFjaygpOwogICAgfQogICAgcmV0dXJuIF9NX3N0YXJ0ICsgX19pbmRleDsKICB9CgogIGl0
ZXJhdG9yIGVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCk7CiAgdm9pZCBj
bGVhcigpOyAKCnByb3RlY3RlZDogICAgICAgICAgICAgICAgICAgICAgICAgCgogIHZvaWQgX01f
ZmlsbF9pbml0aWFsaXplKGNvbnN0IHZhbHVlX3R5cGUmIF9fdmFsdWUpOwoKCgogIHRlbXBsYXRl
IDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIF9NX3JhbmdlX2luaXRpYWxpemUoX0lucHV0
SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAg
ICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpOwoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJ
dGVyYXRvcj4KICB2b2lkIF9NX3JhbmdlX2luaXRpYWxpemUoX0ZvcndhcmRJdGVyYXRvciBfX2Zp
cnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgZm9y
d2FyZF9pdGVyYXRvcl90YWcpOwoKCgpwcm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAg
IAoKICB2b2lkIF9NX3B1c2hfYmFja19hdXgoY29uc3QgdmFsdWVfdHlwZSYpOwogIHZvaWQgX01f
cHVzaF9iYWNrX2F1eCgpOwogIHZvaWQgX01fcHVzaF9mcm9udF9hdXgoY29uc3QgdmFsdWVfdHlw
ZSYpOwogIHZvaWQgX01fcHVzaF9mcm9udF9hdXgoKTsKICB2b2lkIF9NX3BvcF9iYWNrX2F1eCgp
OwogIHZvaWQgX01fcG9wX2Zyb250X2F1eCgpOwoKcHJvdGVjdGVkOiAgICAgICAgICAgICAgICAg
ICAgICAgICAKCgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiAgdm9pZCBpbnNl
cnQoaXRlcmF0b3IgX19wb3MsIF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9y
IF9fbGFzdCwKICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpOwoKICB0ZW1wbGF0ZSA8
Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4KICB2b2lkIGluc2VydChpdGVyYXRvciBfX3BvcywKICAg
ICAgICAgICAgICBfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19s
YXN0LAogICAgICAgICAgICAgIGZvcndhcmRfaXRlcmF0b3JfdGFnKTsKCgoKICBpdGVyYXRvciBf
TV9pbnNlcnRfYXV4KGl0ZXJhdG9yIF9fcG9zLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpOwogIGl0
ZXJhdG9yIF9NX2luc2VydF9hdXgoaXRlcmF0b3IgX19wb3MpOwogIHZvaWQgX01faW5zZXJ0X2F1
eChpdGVyYXRvciBfX3Bvcywgc2l6ZV90eXBlIF9fbiwgY29uc3QgdmFsdWVfdHlwZSYgX194KTsK
CgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4KICB2b2lkIF9NX2luc2VydF9h
dXgoaXRlcmF0b3IgX19wb3MsIAogICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXJhdG9y
IF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICBz
aXplX3R5cGUgX19uKTsKCiMgODkzICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9kZXF1ZS5oIiAz
CgoKICBpdGVyYXRvciBfTV9yZXNlcnZlX2VsZW1lbnRzX2F0X2Zyb250KHNpemVfdHlwZSBfX24p
IHsKICAgIHNpemVfdHlwZSBfX3ZhY2FuY2llcyA9IF9NX3N0YXJ0Ll9NX2N1ciAtIF9NX3N0YXJ0
Ll9NX2ZpcnN0OwogICAgaWYgKF9fbiA+IF9fdmFjYW5jaWVzKSAKICAgICAgX01fbmV3X2VsZW1l
bnRzX2F0X2Zyb250KF9fbiAtIF9fdmFjYW5jaWVzKTsKICAgIHJldHVybiBfTV9zdGFydCAtIGRp
ZmZlcmVuY2VfdHlwZShfX24pOwogIH0KCiAgaXRlcmF0b3IgX01fcmVzZXJ2ZV9lbGVtZW50c19h
dF9iYWNrKHNpemVfdHlwZSBfX24pIHsKICAgIHNpemVfdHlwZSBfX3ZhY2FuY2llcyA9IChfTV9m
aW5pc2guX01fbGFzdCAtIF9NX2ZpbmlzaC5fTV9jdXIpIC0gMTsKICAgIGlmIChfX24gPiBfX3Zh
Y2FuY2llcykKICAgICAgX01fbmV3X2VsZW1lbnRzX2F0X2JhY2soX19uIC0gX192YWNhbmNpZXMp
OwogICAgcmV0dXJuIF9NX2ZpbmlzaCArIGRpZmZlcmVuY2VfdHlwZShfX24pOwogIH0KCiAgdm9p
ZCBfTV9uZXdfZWxlbWVudHNfYXRfZnJvbnQoc2l6ZV90eXBlIF9fbmV3X2VsZW1lbnRzKTsKICB2
b2lkIF9NX25ld19lbGVtZW50c19hdF9iYWNrKHNpemVfdHlwZSBfX25ld19lbGVtZW50cyk7Cgpw
cm90ZWN0ZWQ6ICAgICAgICAgICAgICAgICAgICAgICAKCiAgIAogICAKICAgCgogIHZvaWQgX01f
cmVzZXJ2ZV9tYXBfYXRfYmFjayAoc2l6ZV90eXBlIF9fbm9kZXNfdG9fYWRkID0gMSkgewogICAg
aWYgKF9fbm9kZXNfdG9fYWRkICsgMSA+IF9NX21hcF9zaXplIC0gKF9NX2ZpbmlzaC5fTV9ub2Rl
IC0gX01fbWFwKSkKICAgICAgX01fcmVhbGxvY2F0ZV9tYXAoX19ub2Rlc190b19hZGQsIGZhbHNl
KTsKICB9CgogIHZvaWQgX01fcmVzZXJ2ZV9tYXBfYXRfZnJvbnQgKHNpemVfdHlwZSBfX25vZGVz
X3RvX2FkZCA9IDEpIHsKICAgIGlmIChfX25vZGVzX3RvX2FkZCA+IHNpemVfdHlwZShfTV9zdGFy
dC5fTV9ub2RlIC0gX01fbWFwKSkKICAgICAgX01fcmVhbGxvY2F0ZV9tYXAoX19ub2Rlc190b19h
ZGQsIHRydWUpOwogIH0KCiAgdm9pZCBfTV9yZWFsbG9jYXRlX21hcChzaXplX3R5cGUgX19ub2Rl
c190b19hZGQsIGJvb2wgX19hZGRfYXRfZnJvbnQpOwogCiMgOTQxICIvdXNyL2xvY2FsL2xpYi9n
Y2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL3N0bF9kZXF1ZS5oIiAzCgp9OwoKIAoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBf
QWxsb2MsIHNpemVfdCBfX2J1ZnNpemU+CnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyPgp2b2lk
IGRlcXVlPF9UcCwgX0FsbG9jLCBfX2J1ZnNpemU+CiAgOjpfTV9hc3NpZ25fYXV4KF9JbnB1dEl0
ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsIGlucHV0X2l0ZXJhdG9yX3RhZykKewogIGl0
ZXJhdG9yIF9fY3VyID0gYmVnaW4oKTsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0ICYmIF9f
Y3VyICE9IGVuZCgpOyArK19fY3VyLCArK19fZmlyc3QpCiAgICAqX19jdXIgPSAqX19maXJzdDsK
ICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgICBlcmFzZShfX2N1ciwgZW5kKCkpOwogIGVsc2UK
ICAgIGluc2VydChlbmQoKSwgX19maXJzdCwgX19sYXN0KTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwLCBjbGFzcyBfQWxsb2MsIHNpemVfdCBfX2J1ZnNpemU+CnZvaWQgCmRlcXVlPF9UcCwgX0Fs
bG9jLCBfX2J1ZnNpemU+OjppbnNlcnQoaXRlcmF0b3IgX19wb3MsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIF9fbiwgY29uc3QgdmFsdWVfdHlwZSYgX194
KQp7CiAgaWYgKF9fcG9zLl9NX2N1ciA9PSBfTV9zdGFydC5fTV9jdXIpIHsKICAgIGl0ZXJhdG9y
IF9fbmV3X3N0YXJ0ID0gX01fcmVzZXJ2ZV9lbGVtZW50c19hdF9mcm9udChfX24pOwogICAgdW5p
bml0aWFsaXplZF9maWxsKF9fbmV3X3N0YXJ0LCBfTV9zdGFydCwgX194KTsKICAgIF9NX3N0YXJ0
ID0gX19uZXdfc3RhcnQ7CiAgfQogIGVsc2UgaWYgKF9fcG9zLl9NX2N1ciA9PSBfTV9maW5pc2gu
X01fY3VyKSB7CiAgICBpdGVyYXRvciBfX25ld19maW5pc2ggPSBfTV9yZXNlcnZlX2VsZW1lbnRz
X2F0X2JhY2soX19uKTsKICAgIHVuaW5pdGlhbGl6ZWRfZmlsbChfTV9maW5pc2gsIF9fbmV3X2Zp
bmlzaCwgX194KTsKICAgIF9NX2ZpbmlzaCA9IF9fbmV3X2ZpbmlzaDsKICB9CiAgZWxzZSAKICAg
IF9NX2luc2VydF9hdXgoX19wb3MsIF9fbiwgX194KTsKfQoKIyAxMDM4ICIvdXNyL2xvY2FsL2xp
Yi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRl
L2crKy0zL3N0bF9kZXF1ZS5oIiAzCgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9j
LCBzaXplX3QgX19idWZzaXplPgpkZXF1ZTxfVHAsX0FsbG9jLF9fYnVmc2l6ZT46Oml0ZXJhdG9y
IApkZXF1ZTxfVHAsX0FsbG9jLF9fYnVmc2l6ZT46OmVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0
ZXJhdG9yIF9fbGFzdCkKewogIGlmIChfX2ZpcnN0ID09IF9NX3N0YXJ0ICYmIF9fbGFzdCA9PSBf
TV9maW5pc2gpIHsKICAgIGNsZWFyKCk7CiAgICByZXR1cm4gX01fZmluaXNoOwogIH0KICBlbHNl
IHsKICAgIGRpZmZlcmVuY2VfdHlwZSBfX24gPSBfX2xhc3QgLSBfX2ZpcnN0OwogICAgZGlmZmVy
ZW5jZV90eXBlIF9fZWxlbXNfYmVmb3JlID0gX19maXJzdCAtIF9NX3N0YXJ0OwogICAgaWYgKHN0
YXRpY19jYXN0PHNpemVfdHlwZT4oX19lbGVtc19iZWZvcmUpIDwgKHNpemUoKSAtIF9fbikgLyAy
KSB7CiAgICAgIGNvcHlfYmFja3dhcmQoX01fc3RhcnQsIF9fZmlyc3QsIF9fbGFzdCk7CiAgICAg
IGl0ZXJhdG9yIF9fbmV3X3N0YXJ0ID0gX01fc3RhcnQgKyBfX247CiAgICAgIGRlc3Ryb3koX01f
c3RhcnQsIF9fbmV3X3N0YXJ0KTsKICAgICAgX01fZGVzdHJveV9ub2RlcyhfX25ld19zdGFydC5f
TV9ub2RlLCBfTV9zdGFydC5fTV9ub2RlKTsKICAgICAgX01fc3RhcnQgPSBfX25ld19zdGFydDsK
ICAgIH0KICAgIGVsc2UgewogICAgICBjb3B5KF9fbGFzdCwgX01fZmluaXNoLCBfX2ZpcnN0KTsK
ICAgICAgaXRlcmF0b3IgX19uZXdfZmluaXNoID0gX01fZmluaXNoIC0gX19uOwogICAgICBkZXN0
cm95KF9fbmV3X2ZpbmlzaCwgX01fZmluaXNoKTsKICAgICAgX01fZGVzdHJveV9ub2RlcyhfX25l
d19maW5pc2guX01fbm9kZSArIDEsIF9NX2ZpbmlzaC5fTV9ub2RlICsgMSk7CiAgICAgIF9NX2Zp
bmlzaCA9IF9fbmV3X2ZpbmlzaDsKICAgIH0KICAgIHJldHVybiBfTV9zdGFydCArIF9fZWxlbXNf
YmVmb3JlOwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jLCBzaXplX3Qg
X19idWZzaXplPgp2b2lkIGRlcXVlPF9UcCxfQWxsb2MsX19idWZzaXplPjo6Y2xlYXIoKQp7CiAg
Zm9yIChfTWFwX3BvaW50ZXIgX19ub2RlID0gX01fc3RhcnQuX01fbm9kZSArIDE7CiAgICAgICBf
X25vZGUgPCBfTV9maW5pc2guX01fbm9kZTsKICAgICAgICsrX19ub2RlKSB7CiAgICBkZXN0cm95
KCpfX25vZGUsICpfX25vZGUgKyBfU19idWZmZXJfc2l6ZSgpKTsKICAgIF9NX2RlYWxsb2NhdGVf
bm9kZSgqX19ub2RlKTsKICB9CgogIGlmIChfTV9zdGFydC5fTV9ub2RlICE9IF9NX2ZpbmlzaC5f
TV9ub2RlKSB7CiAgICBkZXN0cm95KF9NX3N0YXJ0Ll9NX2N1ciwgX01fc3RhcnQuX01fbGFzdCk7
CiAgICBkZXN0cm95KF9NX2ZpbmlzaC5fTV9maXJzdCwgX01fZmluaXNoLl9NX2N1cik7CiAgICBf
TV9kZWFsbG9jYXRlX25vZGUoX01fZmluaXNoLl9NX2ZpcnN0KTsKICB9CiAgZWxzZQogICAgZGVz
dHJveShfTV9zdGFydC5fTV9jdXIsIF9NX2ZpbmlzaC5fTV9jdXIpOwoKICBfTV9maW5pc2ggPSBf
TV9zdGFydDsKfQoKIAogCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYywgc2l6ZV90
IF9fYnVmc2l6ZT4Kdm9pZCAKZGVxdWU8X1RwLF9BbGxvYyxfX2J1ZnNpemU+OjpfTV9maWxsX2lu
aXRpYWxpemUoY29uc3QgdmFsdWVfdHlwZSYgX192YWx1ZSkgewogIF9NYXBfcG9pbnRlciBfX2N1
cjsKICB0cnkgIHsKICAgIGZvciAoX19jdXIgPSBfTV9zdGFydC5fTV9ub2RlOyBfX2N1ciA8IF9N
X2ZpbmlzaC5fTV9ub2RlOyArK19fY3VyKQogICAgICB1bmluaXRpYWxpemVkX2ZpbGwoKl9fY3Vy
LCAqX19jdXIgKyBfU19idWZmZXJfc2l6ZSgpLCBfX3ZhbHVlKTsKICAgIHVuaW5pdGlhbGl6ZWRf
ZmlsbChfTV9maW5pc2guX01fZmlyc3QsIF9NX2ZpbmlzaC5fTV9jdXIsIF9fdmFsdWUpOwogIH0K
ICBjYXRjaCguLi4pIHsgIGRlc3Ryb3koX01fc3RhcnQsIGl0ZXJhdG9yKCpfX2N1ciwgX19jdXIp
KSA7IHRocm93OyB9IDsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2MsIHNp
emVfdCBfX2J1ZnNpemU+CnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4Kdm9pZApkZXF1
ZTxfVHAsX0FsbG9jLF9fYnVmc2l6ZT46Ol9NX3JhbmdlX2luaXRpYWxpemUoX0lucHV0SXRlcmF0
b3IgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3RhZykKewogIF9NX2luaXRpYWxpemVf
bWFwKDApOwogIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgIHB1c2hf
YmFjaygqX19maXJzdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYywgc2l6
ZV90IF9fYnVmc2l6ZT4KdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CnZvaWQKZGVx
dWU8X1RwLF9BbGxvYyxfX2J1ZnNpemU+OjpfTV9yYW5nZV9pbml0aWFsaXplKF9Gb3J3YXJkSXRl
cmF0b3IgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZF9pdGVyYXRvcl90YWcpCnsKICBzaXplX3R5
cGUgX19uID0gMDsKICBkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9fbik7CiAgX01faW5pdGlh
bGl6ZV9tYXAoX19uKTsKCiAgX01hcF9wb2ludGVyIF9fY3VyX25vZGU7CiAgdHJ5ICB7CiAgICBm
b3IgKF9fY3VyX25vZGUgPSBfTV9zdGFydC5fTV9ub2RlOyAKICAgICAgICAgX19jdXJfbm9kZSA8
IF9NX2ZpbmlzaC5fTV9ub2RlOyAKCSArK19fY3VyX25vZGUpIHsKICAgICAgX0ZvcndhcmRJdGVy
YXRvciBfX21pZCA9IF9fZmlyc3Q7CiAgICAgIGFkdmFuY2UoX19taWQsIF9TX2J1ZmZlcl9zaXpl
KCkpOwogICAgICB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdCwgX19taWQsICpfX2N1cl9ub2Rl
KTsKICAgICAgX19maXJzdCA9IF9fbWlkOwogICAgfQogICAgdW5pbml0aWFsaXplZF9jb3B5KF9f
Zmlyc3QsIF9fbGFzdCwgX01fZmluaXNoLl9NX2ZpcnN0KTsKICB9CiAgY2F0Y2goLi4uKSB7ICBk
ZXN0cm95KF9NX3N0YXJ0LCBpdGVyYXRvcigqX19jdXJfbm9kZSwgX19jdXJfbm9kZSkpIDsgdGhy
b3c7IH0gOwp9CgoKCiAKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jLCBzaXplX3Qg
X19idWZzaXplPgp2b2lkCmRlcXVlPF9UcCxfQWxsb2MsX19idWZzaXplPjo6X01fcHVzaF9iYWNr
X2F1eChjb25zdCB2YWx1ZV90eXBlJiBfX3QpCnsKICB2YWx1ZV90eXBlIF9fdF9jb3B5ID0gX190
OwogIF9NX3Jlc2VydmVfbWFwX2F0X2JhY2soKTsKICAqKF9NX2ZpbmlzaC5fTV9ub2RlICsgMSkg
PSBfTV9hbGxvY2F0ZV9ub2RlKCk7CiAgdHJ5ICB7CiAgICBjb25zdHJ1Y3QoX01fZmluaXNoLl9N
X2N1ciwgX190X2NvcHkpOwogICAgX01fZmluaXNoLl9NX3NldF9ub2RlKF9NX2ZpbmlzaC5fTV9u
b2RlICsgMSk7CiAgICBfTV9maW5pc2guX01fY3VyID0gX01fZmluaXNoLl9NX2ZpcnN0OwogIH0K
ICBjYXRjaCguLi4pIHsgIF9NX2RlYWxsb2NhdGVfbm9kZSgqKF9NX2ZpbmlzaC5fTV9ub2RlICsg
MSkpIDsgdGhyb3c7IH0gOwp9CgogCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYywg
c2l6ZV90IF9fYnVmc2l6ZT4Kdm9pZApkZXF1ZTxfVHAsX0FsbG9jLF9fYnVmc2l6ZT46Ol9NX3B1
c2hfYmFja19hdXgoKQp7CiAgX01fcmVzZXJ2ZV9tYXBfYXRfYmFjaygpOwogICooX01fZmluaXNo
Ll9NX25vZGUgKyAxKSA9IF9NX2FsbG9jYXRlX25vZGUoKTsKICB0cnkgIHsKICAgIGNvbnN0cnVj
dChfTV9maW5pc2guX01fY3VyKTsKICAgIF9NX2ZpbmlzaC5fTV9zZXRfbm9kZShfTV9maW5pc2gu
X01fbm9kZSArIDEpOwogICAgX01fZmluaXNoLl9NX2N1ciA9IF9NX2ZpbmlzaC5fTV9maXJzdDsK
ICB9CiAgY2F0Y2goLi4uKSB7ICBfTV9kZWFsbG9jYXRlX25vZGUoKihfTV9maW5pc2guX01fbm9k
ZSArIDEpKSA7IHRocm93OyB9IDsKfQoKIAp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxs
b2MsIHNpemVfdCBfX2J1ZnNpemU+CnZvaWQgCmRlcXVlPF9UcCxfQWxsb2MsX19idWZzaXplPjo6
X01fcHVzaF9mcm9udF9hdXgoY29uc3QgdmFsdWVfdHlwZSYgX190KQp7CiAgdmFsdWVfdHlwZSBf
X3RfY29weSA9IF9fdDsKICBfTV9yZXNlcnZlX21hcF9hdF9mcm9udCgpOwogICooX01fc3RhcnQu
X01fbm9kZSAtIDEpID0gX01fYWxsb2NhdGVfbm9kZSgpOwogIHRyeSAgewogICAgX01fc3RhcnQu
X01fc2V0X25vZGUoX01fc3RhcnQuX01fbm9kZSAtIDEpOwogICAgX01fc3RhcnQuX01fY3VyID0g
X01fc3RhcnQuX01fbGFzdCAtIDE7CiAgICBjb25zdHJ1Y3QoX01fc3RhcnQuX01fY3VyLCBfX3Rf
Y29weSk7CiAgfQogIGNhdGNoKC4uLikgeyAgKCsrX01fc3RhcnQsIF9NX2RlYWxsb2NhdGVfbm9k
ZSgqKF9NX3N0YXJ0Ll9NX25vZGUgLSAxKSkpIDsgdGhyb3c7IH0gOwp9IAoKIAp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2MsIHNpemVfdCBfX2J1ZnNpemU+CnZvaWQgCmRlcXVlPF9U
cCxfQWxsb2MsX19idWZzaXplPjo6X01fcHVzaF9mcm9udF9hdXgoKQp7CiAgX01fcmVzZXJ2ZV9t
YXBfYXRfZnJvbnQoKTsKICAqKF9NX3N0YXJ0Ll9NX25vZGUgLSAxKSA9IF9NX2FsbG9jYXRlX25v
ZGUoKTsKICB0cnkgIHsKICAgIF9NX3N0YXJ0Ll9NX3NldF9ub2RlKF9NX3N0YXJ0Ll9NX25vZGUg
LSAxKTsKICAgIF9NX3N0YXJ0Ll9NX2N1ciA9IF9NX3N0YXJ0Ll9NX2xhc3QgLSAxOwogICAgY29u
c3RydWN0KF9NX3N0YXJ0Ll9NX2N1cik7CiAgfQogIGNhdGNoKC4uLikgeyAgKCsrX01fc3RhcnQs
IF9NX2RlYWxsb2NhdGVfbm9kZSgqKF9NX3N0YXJ0Ll9NX25vZGUgLSAxKSkpIDsgdGhyb3c7IH0g
Owp9IAoKIAp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2MsIHNpemVfdCBfX2J1ZnNp
emU+CnZvaWQgCmRlcXVlPF9UcCxfQWxsb2MsX19idWZzaXplPjo6X01fcG9wX2JhY2tfYXV4KCkK
ewogIF9NX2RlYWxsb2NhdGVfbm9kZShfTV9maW5pc2guX01fZmlyc3QpOwogIF9NX2ZpbmlzaC5f
TV9zZXRfbm9kZShfTV9maW5pc2guX01fbm9kZSAtIDEpOwogIF9NX2ZpbmlzaC5fTV9jdXIgPSBf
TV9maW5pc2guX01fbGFzdCAtIDE7CiAgZGVzdHJveShfTV9maW5pc2guX01fY3VyKTsKfQoKIAog
CiAKIAp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2MsIHNpemVfdCBfX2J1ZnNpemU+
CnZvaWQgCmRlcXVlPF9UcCxfQWxsb2MsX19idWZzaXplPjo6X01fcG9wX2Zyb250X2F1eCgpCnsK
ICBkZXN0cm95KF9NX3N0YXJ0Ll9NX2N1cik7CiAgX01fZGVhbGxvY2F0ZV9ub2RlKF9NX3N0YXJ0
Ll9NX2ZpcnN0KTsKICBfTV9zdGFydC5fTV9zZXRfbm9kZShfTV9zdGFydC5fTV9ub2RlICsgMSk7
CiAgX01fc3RhcnQuX01fY3VyID0gX01fc3RhcnQuX01fZmlyc3Q7Cn0gICAgICAKCgoKdGVtcGxh
dGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jLCBzaXplX3QgX19idWZzaXplPgp0ZW1wbGF0ZSA8
Y2xhc3MgX0lucHV0SXRlcmF0b3I+CnZvaWQgCmRlcXVlPF9UcCxfQWxsb2MsX19idWZzaXplPjo6
aW5zZXJ0KGl0ZXJhdG9yIF9fcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlucHV0X2l0ZXJhdG9yX3RhZykKewogIGNvcHkoX19maXJzdCwgX19sYXN0LCBpbnNl
cnRlcigqdGhpcywgX19wb3MpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9j
LCBzaXplX3QgX19idWZzaXplPgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4Kdm9p
ZCAKZGVxdWU8X1RwLF9BbGxvYyxfX2J1ZnNpemU+OjppbnNlcnQoaXRlcmF0b3IgX19wb3MsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19maXJz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBf
X2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRfaXRlcmF0
b3JfdGFnKSB7CiAgc2l6ZV90eXBlIF9fbiA9IDA7CiAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0
LCBfX24pOwogIGlmIChfX3Bvcy5fTV9jdXIgPT0gX01fc3RhcnQuX01fY3VyKSB7CiAgICBpdGVy
YXRvciBfX25ld19zdGFydCA9IF9NX3Jlc2VydmVfZWxlbWVudHNfYXRfZnJvbnQoX19uKTsKICAg
IHRyeSAgewogICAgICB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX25ld19z
dGFydCk7CiAgICAgIF9NX3N0YXJ0ID0gX19uZXdfc3RhcnQ7CiAgICB9CiAgICBjYXRjaCguLi4p
IHsgIF9NX2Rlc3Ryb3lfbm9kZXMoX19uZXdfc3RhcnQuX01fbm9kZSwgX01fc3RhcnQuX01fbm9k
ZSkgOyB0aHJvdzsgfSA7CiAgfQogIGVsc2UgaWYgKF9fcG9zLl9NX2N1ciA9PSBfTV9maW5pc2gu
X01fY3VyKSB7CiAgICBpdGVyYXRvciBfX25ld19maW5pc2ggPSBfTV9yZXNlcnZlX2VsZW1lbnRz
X2F0X2JhY2soX19uKTsKICAgIHRyeSAgewogICAgICB1bmluaXRpYWxpemVkX2NvcHkoX19maXJz
dCwgX19sYXN0LCBfTV9maW5pc2gpOwogICAgICBfTV9maW5pc2ggPSBfX25ld19maW5pc2g7CiAg
ICB9CiAgICBjYXRjaCguLi4pIHsgIF9NX2Rlc3Ryb3lfbm9kZXMoX01fZmluaXNoLl9NX25vZGUg
KyAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbmV3X2ZpbmlzaC5fTV9u
b2RlICsgMSkgOyB0aHJvdzsgfSA7CiAgfQogIGVsc2UKICAgIF9NX2luc2VydF9hdXgoX19wb3Ms
IF9fZmlyc3QsIF9fbGFzdCwgX19uKTsKfQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBf
QWxsb2MsIHNpemVfdCBfX2J1ZnNpemU+CnR5cGVuYW1lIGRlcXVlPF9UcCwgX0FsbG9jLCBfX2J1
ZnNpemU+OjppdGVyYXRvcgpkZXF1ZTxfVHAsX0FsbG9jLF9fYnVmc2l6ZT46Ol9NX2luc2VydF9h
dXgoaXRlcmF0b3IgX19wb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2YWx1ZV90eXBlJiBfX3gpCnsKICBkaWZmZXJlbmNlX3R5cGUgX19pbmRleCA9
IF9fcG9zIC0gX01fc3RhcnQ7CiAgdmFsdWVfdHlwZSBfX3hfY29weSA9IF9feDsKICBpZiAoc3Rh
dGljX2Nhc3Q8c2l6ZV90eXBlPihfX2luZGV4KSA8IHNpemUoKSAvIDIpIHsKICAgIHB1c2hfZnJv
bnQoZnJvbnQoKSk7CiAgICBpdGVyYXRvciBfX2Zyb250MSA9IF9NX3N0YXJ0OwogICAgKytfX2Zy
b250MTsKICAgIGl0ZXJhdG9yIF9fZnJvbnQyID0gX19mcm9udDE7CiAgICArK19fZnJvbnQyOwog
ICAgX19wb3MgPSBfTV9zdGFydCArIF9faW5kZXg7CiAgICBpdGVyYXRvciBfX3BvczEgPSBfX3Bv
czsKICAgICsrX19wb3MxOwogICAgY29weShfX2Zyb250MiwgX19wb3MxLCBfX2Zyb250MSk7CiAg
fQogIGVsc2UgewogICAgcHVzaF9iYWNrKGJhY2soKSk7CiAgICBpdGVyYXRvciBfX2JhY2sxID0g
X01fZmluaXNoOwogICAgLS1fX2JhY2sxOwogICAgaXRlcmF0b3IgX19iYWNrMiA9IF9fYmFjazE7
CiAgICAtLV9fYmFjazI7CiAgICBfX3BvcyA9IF9NX3N0YXJ0ICsgX19pbmRleDsKICAgIGNvcHlf
YmFja3dhcmQoX19wb3MsIF9fYmFjazIsIF9fYmFjazEpOwogIH0KICAqX19wb3MgPSBfX3hfY29w
eTsKICByZXR1cm4gX19wb3M7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYywg
c2l6ZV90IF9fYnVmc2l6ZT4KdHlwZW5hbWUgZGVxdWU8X1RwLF9BbGxvYyxfX2J1ZnNpemU+Ojpp
dGVyYXRvcgpkZXF1ZTxfVHAsX0FsbG9jLF9fYnVmc2l6ZT46Ol9NX2luc2VydF9hdXgoaXRlcmF0
b3IgX19wb3MpCnsKICBkaWZmZXJlbmNlX3R5cGUgX19pbmRleCA9IF9fcG9zIC0gX01fc3RhcnQ7
CiAgaWYgKHN0YXRpY19jYXN0PHNpemVfdHlwZT4oX19pbmRleCkgPCBzaXplKCkgLyAyKSB7CiAg
ICBwdXNoX2Zyb250KGZyb250KCkpOwogICAgaXRlcmF0b3IgX19mcm9udDEgPSBfTV9zdGFydDsK
ICAgICsrX19mcm9udDE7CiAgICBpdGVyYXRvciBfX2Zyb250MiA9IF9fZnJvbnQxOwogICAgKytf
X2Zyb250MjsKICAgIF9fcG9zID0gX01fc3RhcnQgKyBfX2luZGV4OwogICAgaXRlcmF0b3IgX19w
b3MxID0gX19wb3M7CiAgICArK19fcG9zMTsKICAgIGNvcHkoX19mcm9udDIsIF9fcG9zMSwgX19m
cm9udDEpOwogIH0KICBlbHNlIHsKICAgIHB1c2hfYmFjayhiYWNrKCkpOwogICAgaXRlcmF0b3Ig
X19iYWNrMSA9IF9NX2ZpbmlzaDsKICAgIC0tX19iYWNrMTsKICAgIGl0ZXJhdG9yIF9fYmFjazIg
PSBfX2JhY2sxOwogICAgLS1fX2JhY2syOwogICAgX19wb3MgPSBfTV9zdGFydCArIF9faW5kZXg7
CiAgICBjb3B5X2JhY2t3YXJkKF9fcG9zLCBfX2JhY2syLCBfX2JhY2sxKTsKICB9CiAgKl9fcG9z
ID0gdmFsdWVfdHlwZSgpOwogIHJldHVybiBfX3BvczsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwg
Y2xhc3MgX0FsbG9jLCBzaXplX3QgX19idWZzaXplPgp2b2lkCmRlcXVlPF9UcCxfQWxsb2MsX19i
dWZzaXplPjo6X01faW5zZXJ0X2F1eChpdGVyYXRvciBfX3BvcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBfX24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlJiBfX3gpCnsKICBjb25z
dCBkaWZmZXJlbmNlX3R5cGUgX19lbGVtc19iZWZvcmUgPSBfX3BvcyAtIF9NX3N0YXJ0OwogIHNp
emVfdHlwZSBfX2xlbmd0aCA9IHNpemUoKTsKICB2YWx1ZV90eXBlIF9feF9jb3B5ID0gX194Owog
IGlmIChzdGF0aWNfY2FzdDxzaXplX3R5cGU+KF9fZWxlbXNfYmVmb3JlKSA8IF9fbGVuZ3RoIC8g
MikgewogICAgaXRlcmF0b3IgX19uZXdfc3RhcnQgPSBfTV9yZXNlcnZlX2VsZW1lbnRzX2F0X2Zy
b250KF9fbik7CiAgICBpdGVyYXRvciBfX29sZF9zdGFydCA9IF9NX3N0YXJ0OwogICAgX19wb3Mg
PSBfTV9zdGFydCArIF9fZWxlbXNfYmVmb3JlOwogICAgdHJ5ICB7CiAgICAgIGlmIChfX2VsZW1z
X2JlZm9yZSA+PSBkaWZmZXJlbmNlX3R5cGUoX19uKSkgewogICAgICAgIGl0ZXJhdG9yIF9fc3Rh
cnRfbiA9IF9NX3N0YXJ0ICsgZGlmZmVyZW5jZV90eXBlKF9fbik7CiAgICAgICAgdW5pbml0aWFs
aXplZF9jb3B5KF9NX3N0YXJ0LCBfX3N0YXJ0X24sIF9fbmV3X3N0YXJ0KTsKICAgICAgICBfTV9z
dGFydCA9IF9fbmV3X3N0YXJ0OwogICAgICAgIGNvcHkoX19zdGFydF9uLCBfX3BvcywgX19vbGRf
c3RhcnQpOwogICAgICAgIGZpbGwoX19wb3MgLSBkaWZmZXJlbmNlX3R5cGUoX19uKSwgX19wb3Ms
IF9feF9jb3B5KTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBfX3VuaW5pdGlhbGl6ZWRf
Y29weV9maWxsKF9NX3N0YXJ0LCBfX3BvcywgX19uZXdfc3RhcnQsIAoJICAgICAgICAgICAgICAg
ICAgICAgICAgICBfTV9zdGFydCwgX194X2NvcHkpOwogICAgICAgIF9NX3N0YXJ0ID0gX19uZXdf
c3RhcnQ7CiAgICAgICAgZmlsbChfX29sZF9zdGFydCwgX19wb3MsIF9feF9jb3B5KTsKICAgICAg
fQogICAgfQogICAgY2F0Y2goLi4uKSB7ICBfTV9kZXN0cm95X25vZGVzKF9fbmV3X3N0YXJ0Ll9N
X25vZGUsIF9NX3N0YXJ0Ll9NX25vZGUpIDsgdGhyb3c7IH0gOwogIH0KICBlbHNlIHsKICAgIGl0
ZXJhdG9yIF9fbmV3X2ZpbmlzaCA9IF9NX3Jlc2VydmVfZWxlbWVudHNfYXRfYmFjayhfX24pOwog
ICAgaXRlcmF0b3IgX19vbGRfZmluaXNoID0gX01fZmluaXNoOwogICAgY29uc3QgZGlmZmVyZW5j
ZV90eXBlIF9fZWxlbXNfYWZ0ZXIgPSAKICAgICAgZGlmZmVyZW5jZV90eXBlKF9fbGVuZ3RoKSAt
IF9fZWxlbXNfYmVmb3JlOwogICAgX19wb3MgPSBfTV9maW5pc2ggLSBfX2VsZW1zX2FmdGVyOwog
ICAgdHJ5ICB7CiAgICAgIGlmIChfX2VsZW1zX2FmdGVyID4gZGlmZmVyZW5jZV90eXBlKF9fbikp
IHsKICAgICAgICBpdGVyYXRvciBfX2ZpbmlzaF9uID0gX01fZmluaXNoIC0gZGlmZmVyZW5jZV90
eXBlKF9fbik7CiAgICAgICAgdW5pbml0aWFsaXplZF9jb3B5KF9fZmluaXNoX24sIF9NX2Zpbmlz
aCwgX01fZmluaXNoKTsKICAgICAgICBfTV9maW5pc2ggPSBfX25ld19maW5pc2g7CiAgICAgICAg
Y29weV9iYWNrd2FyZChfX3BvcywgX19maW5pc2hfbiwgX19vbGRfZmluaXNoKTsKICAgICAgICBm
aWxsKF9fcG9zLCBfX3BvcyArIGRpZmZlcmVuY2VfdHlwZShfX24pLCBfX3hfY29weSk7CiAgICAg
IH0KICAgICAgZWxzZSB7CiAgICAgICAgX191bmluaXRpYWxpemVkX2ZpbGxfY29weShfTV9maW5p
c2gsIF9fcG9zICsgZGlmZmVyZW5jZV90eXBlKF9fbiksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX3hfY29weSwgX19wb3MsIF9NX2ZpbmlzaCk7CiAgICAgICAgX01fZmluaXNo
ID0gX19uZXdfZmluaXNoOwogICAgICAgIGZpbGwoX19wb3MsIF9fb2xkX2ZpbmlzaCwgX194X2Nv
cHkpOwogICAgICB9CiAgICB9CiAgICBjYXRjaCguLi4pIHsgIF9NX2Rlc3Ryb3lfbm9kZXMoX01f
ZmluaXNoLl9NX25vZGUgKyAxLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
bmV3X2ZpbmlzaC5fTV9ub2RlICsgMSkgOyB0aHJvdzsgfSA7CiAgfQp9CgoKCnRlbXBsYXRlIDxj
bGFzcyBfVHAsIGNsYXNzIF9BbGxvYywgc2l6ZV90IF9fYnVmc2l6ZT4KdGVtcGxhdGUgPGNsYXNz
IF9Gb3J3YXJkSXRlcmF0b3I+CnZvaWQKZGVxdWU8X1RwLF9BbGxvYyxfX2J1ZnNpemU+OjpfTV9p
bnNlcnRfYXV4KGl0ZXJhdG9yIF9fcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgX19uKQp7CiAgY29u
c3QgZGlmZmVyZW5jZV90eXBlIF9fZWxlbXNiZWZvcmUgPSBfX3BvcyAtIF9NX3N0YXJ0OwogIHNp
emVfdHlwZSBfX2xlbmd0aCA9IHNpemUoKTsKICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihf
X2VsZW1zYmVmb3JlKSA8IF9fbGVuZ3RoIC8gMikgewogICAgaXRlcmF0b3IgX19uZXdfc3RhcnQg
PSBfTV9yZXNlcnZlX2VsZW1lbnRzX2F0X2Zyb250KF9fbik7CiAgICBpdGVyYXRvciBfX29sZF9z
dGFydCA9IF9NX3N0YXJ0OwogICAgX19wb3MgPSBfTV9zdGFydCArIF9fZWxlbXNiZWZvcmU7CiAg
ICB0cnkgIHsKICAgICAgaWYgKF9fZWxlbXNiZWZvcmUgPj0gZGlmZmVyZW5jZV90eXBlKF9fbikp
IHsKICAgICAgICBpdGVyYXRvciBfX3N0YXJ0X24gPSBfTV9zdGFydCArIGRpZmZlcmVuY2VfdHlw
ZShfX24pOyAKICAgICAgICB1bmluaXRpYWxpemVkX2NvcHkoX01fc3RhcnQsIF9fc3RhcnRfbiwg
X19uZXdfc3RhcnQpOwogICAgICAgIF9NX3N0YXJ0ID0gX19uZXdfc3RhcnQ7CiAgICAgICAgY29w
eShfX3N0YXJ0X24sIF9fcG9zLCBfX29sZF9zdGFydCk7CiAgICAgICAgY29weShfX2ZpcnN0LCBf
X2xhc3QsIF9fcG9zIC0gZGlmZmVyZW5jZV90eXBlKF9fbikpOwogICAgICB9CiAgICAgIGVsc2Ug
ewogICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWQgPSBfX2ZpcnN0OwogICAgICAgIGFkdmFu
Y2UoX19taWQsIGRpZmZlcmVuY2VfdHlwZShfX24pIC0gX19lbGVtc2JlZm9yZSk7CiAgICAgICAg
X191bmluaXRpYWxpemVkX2NvcHlfY29weShfTV9zdGFydCwgX19wb3MsIF9fZmlyc3QsIF9fbWlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19uZXdfc3RhcnQpOwogICAgICAg
IF9NX3N0YXJ0ID0gX19uZXdfc3RhcnQ7CiAgICAgICAgY29weShfX21pZCwgX19sYXN0LCBfX29s
ZF9zdGFydCk7CiAgICAgIH0KICAgIH0KICAgIGNhdGNoKC4uLikgeyAgX01fZGVzdHJveV9ub2Rl
cyhfX25ld19zdGFydC5fTV9ub2RlLCBfTV9zdGFydC5fTV9ub2RlKSA7IHRocm93OyB9IDsKICB9
CiAgZWxzZSB7CiAgICBpdGVyYXRvciBfX25ld19maW5pc2ggPSBfTV9yZXNlcnZlX2VsZW1lbnRz
X2F0X2JhY2soX19uKTsKICAgIGl0ZXJhdG9yIF9fb2xkX2ZpbmlzaCA9IF9NX2ZpbmlzaDsKICAg
IGNvbnN0IGRpZmZlcmVuY2VfdHlwZSBfX2VsZW1zYWZ0ZXIgPSAKICAgICAgZGlmZmVyZW5jZV90
eXBlKF9fbGVuZ3RoKSAtIF9fZWxlbXNiZWZvcmU7CiAgICBfX3BvcyA9IF9NX2ZpbmlzaCAtIF9f
ZWxlbXNhZnRlcjsKICAgIHRyeSAgewogICAgICBpZiAoX19lbGVtc2FmdGVyID4gZGlmZmVyZW5j
ZV90eXBlKF9fbikpIHsKICAgICAgICBpdGVyYXRvciBfX2ZpbmlzaF9uID0gX01fZmluaXNoIC0g
ZGlmZmVyZW5jZV90eXBlKF9fbik7CiAgICAgICAgdW5pbml0aWFsaXplZF9jb3B5KF9fZmluaXNo
X24sIF9NX2ZpbmlzaCwgX01fZmluaXNoKTsKICAgICAgICBfTV9maW5pc2ggPSBfX25ld19maW5p
c2g7CiAgICAgICAgY29weV9iYWNrd2FyZChfX3BvcywgX19maW5pc2hfbiwgX19vbGRfZmluaXNo
KTsKICAgICAgICBjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19wb3MpOwogICAgICB9CiAgICAgIGVs
c2UgewogICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWQgPSBfX2ZpcnN0OwogICAgICAgIGFk
dmFuY2UoX19taWQsIF9fZWxlbXNhZnRlcik7CiAgICAgICAgX191bmluaXRpYWxpemVkX2NvcHlf
Y29weShfX21pZCwgX19sYXN0LCBfX3BvcywgX01fZmluaXNoLCBfTV9maW5pc2gpOwogICAgICAg
IF9NX2ZpbmlzaCA9IF9fbmV3X2ZpbmlzaDsKICAgICAgICBjb3B5KF9fZmlyc3QsIF9fbWlkLCBf
X3Bvcyk7CiAgICAgIH0KICAgIH0KICAgIGNhdGNoKC4uLikgeyAgX01fZGVzdHJveV9ub2Rlcyhf
TV9maW5pc2guX01fbm9kZSArIDEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19uZXdfZmluaXNoLl9NX25vZGUgKyAxKSA7IHRocm93OyB9IDsKICB9Cn0KCiMgMTU3MiAiL3Vz
ci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4v
Li4vaW5jbHVkZS9nKystMy9zdGxfZGVxdWUuaCIgMwoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNs
YXNzIF9BbGxvYywgc2l6ZV90IF9fYnVmc2l6ZT4Kdm9pZCAKZGVxdWU8X1RwLF9BbGxvYyxfX2J1
ZnNpemU+OjpfTV9uZXdfZWxlbWVudHNfYXRfZnJvbnQoc2l6ZV90eXBlIF9fbmV3X2VsZW1zKQp7
CiAgc2l6ZV90eXBlIF9fbmV3X25vZGVzCiAgICAgID0gKF9fbmV3X2VsZW1zICsgX1NfYnVmZmVy
X3NpemUoKSAtIDEpIC8gX1NfYnVmZmVyX3NpemUoKTsKICBfTV9yZXNlcnZlX21hcF9hdF9mcm9u
dChfX25ld19ub2Rlcyk7CiAgc2l6ZV90eXBlIF9faTsKICB0cnkgIHsKICAgIGZvciAoX19pID0g
MTsgX19pIDw9IF9fbmV3X25vZGVzOyArK19faSkKICAgICAgKihfTV9zdGFydC5fTV9ub2RlIC0g
X19pKSA9IF9NX2FsbG9jYXRlX25vZGUoKTsKICB9CgogIGNhdGNoKC4uLikgewogICAgZm9yIChz
aXplX3R5cGUgX19qID0gMTsgX19qIDwgX19pOyArK19faikKICAgICAgX01fZGVhbGxvY2F0ZV9u
b2RlKCooX01fc3RhcnQuX01fbm9kZSAtIF9faikpOyAgICAgIAogICAgdGhyb3c7CiAgfQoKfQoK
dGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jLCBzaXplX3QgX19idWZzaXplPgp2b2lk
IApkZXF1ZTxfVHAsX0FsbG9jLF9fYnVmc2l6ZT46Ol9NX25ld19lbGVtZW50c19hdF9iYWNrKHNp
emVfdHlwZSBfX25ld19lbGVtcykKewogIHNpemVfdHlwZSBfX25ld19ub2RlcwogICAgICA9IChf
X25ld19lbGVtcyArIF9TX2J1ZmZlcl9zaXplKCkgLSAxKSAvIF9TX2J1ZmZlcl9zaXplKCk7CiAg
X01fcmVzZXJ2ZV9tYXBfYXRfYmFjayhfX25ld19ub2Rlcyk7CiAgc2l6ZV90eXBlIF9faTsKICB0
cnkgIHsKICAgIGZvciAoX19pID0gMTsgX19pIDw9IF9fbmV3X25vZGVzOyArK19faSkKICAgICAg
KihfTV9maW5pc2guX01fbm9kZSArIF9faSkgPSBfTV9hbGxvY2F0ZV9ub2RlKCk7CiAgfQoKICBj
YXRjaCguLi4pIHsKICAgIGZvciAoc2l6ZV90eXBlIF9faiA9IDE7IF9faiA8IF9faTsgKytfX2op
CiAgICAgIF9NX2RlYWxsb2NhdGVfbm9kZSgqKF9NX2ZpbmlzaC5fTV9ub2RlICsgX19qKSk7ICAg
ICAgCiAgICB0aHJvdzsKICB9Cgp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2Ms
IHNpemVfdCBfX2J1ZnNpemU+CnZvaWQgCmRlcXVlPF9UcCxfQWxsb2MsX19idWZzaXplPjo6X01f
cmVhbGxvY2F0ZV9tYXAoc2l6ZV90eXBlIF9fbm9kZXNfdG9fYWRkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBfX2FkZF9hdF9mcm9udCkKewogIHNp
emVfdHlwZSBfX29sZF9udW1fbm9kZXMgPSBfTV9maW5pc2guX01fbm9kZSAtIF9NX3N0YXJ0Ll9N
X25vZGUgKyAxOwogIHNpemVfdHlwZSBfX25ld19udW1fbm9kZXMgPSBfX29sZF9udW1fbm9kZXMg
KyBfX25vZGVzX3RvX2FkZDsKCiAgX01hcF9wb2ludGVyIF9fbmV3X25zdGFydDsKICBpZiAoX01f
bWFwX3NpemUgPiAyICogX19uZXdfbnVtX25vZGVzKSB7CiAgICBfX25ld19uc3RhcnQgPSBfTV9t
YXAgKyAoX01fbWFwX3NpemUgLSBfX25ld19udW1fbm9kZXMpIC8gMiAKICAgICAgICAgICAgICAg
ICAgICAgKyAoX19hZGRfYXRfZnJvbnQgPyBfX25vZGVzX3RvX2FkZCA6IDApOwogICAgaWYgKF9f
bmV3X25zdGFydCA8IF9NX3N0YXJ0Ll9NX25vZGUpCiAgICAgIGNvcHkoX01fc3RhcnQuX01fbm9k
ZSwgX01fZmluaXNoLl9NX25vZGUgKyAxLCBfX25ld19uc3RhcnQpOwogICAgZWxzZQogICAgICBj
b3B5X2JhY2t3YXJkKF9NX3N0YXJ0Ll9NX25vZGUsIF9NX2ZpbmlzaC5fTV9ub2RlICsgMSwgCiAg
ICAgICAgICAgICAgICAgICAgX19uZXdfbnN0YXJ0ICsgX19vbGRfbnVtX25vZGVzKTsKICB9CiAg
ZWxzZSB7CiAgICBzaXplX3R5cGUgX19uZXdfbWFwX3NpemUgPSAKICAgICAgX01fbWFwX3NpemUg
KyBtYXgoX01fbWFwX3NpemUsIF9fbm9kZXNfdG9fYWRkKSArIDI7CgogICAgX01hcF9wb2ludGVy
IF9fbmV3X21hcCA9IF9NX2FsbG9jYXRlX21hcChfX25ld19tYXBfc2l6ZSk7CiAgICBfX25ld19u
c3RhcnQgPSBfX25ld19tYXAgKyAoX19uZXdfbWFwX3NpemUgLSBfX25ld19udW1fbm9kZXMpIC8g
MgogICAgICAgICAgICAgICAgICAgICAgICAgKyAoX19hZGRfYXRfZnJvbnQgPyBfX25vZGVzX3Rv
X2FkZCA6IDApOwogICAgY29weShfTV9zdGFydC5fTV9ub2RlLCBfTV9maW5pc2guX01fbm9kZSAr
IDEsIF9fbmV3X25zdGFydCk7CiAgICBfTV9kZWFsbG9jYXRlX21hcChfTV9tYXAsIF9NX21hcF9z
aXplKTsKCiAgICBfTV9tYXAgPSBfX25ld19tYXA7CiAgICBfTV9tYXBfc2l6ZSA9IF9fbmV3X21h
cF9zaXplOwogIH0KCiAgX01fc3RhcnQuX01fc2V0X25vZGUoX19uZXdfbnN0YXJ0KTsKICBfTV9m
aW5pc2guX01fc2V0X25vZGUoX19uZXdfbnN0YXJ0ICsgX19vbGRfbnVtX25vZGVzIC0gMSk7Cn0K
CgogCgoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYywgc2l6ZV90IF9fYnVmc2l6
Pgpib29sIG9wZXJhdG9yPT0oY29uc3QgZGVxdWU8X1RwLCBfQWxsb2MsIF9fYnVmc2l6PiYgX194
LAogICAgICAgICAgICAgICAgY29uc3QgZGVxdWU8X1RwLCBfQWxsb2MsIF9fYnVmc2l6PiYgX195
KQp7CiAgcmV0dXJuIF9feC5zaXplKCkgPT0gX195LnNpemUoKSAmJgogICAgICAgICBlcXVhbChf
X3guYmVnaW4oKSwgX194LmVuZCgpLCBfX3kuYmVnaW4oKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
VHAsIGNsYXNzIF9BbGxvYywgc2l6ZV90IF9fYnVmc2l6Pgpib29sIG9wZXJhdG9yPChjb25zdCBk
ZXF1ZTxfVHAsIF9BbGxvYywgX19idWZzaXo+JiBfX3gsCiAgICAgICAgICAgICAgIGNvbnN0IGRl
cXVlPF9UcCwgX0FsbG9jLCBfX2J1ZnNpej4mIF9feSkKewogIHJldHVybiBsZXhpY29ncmFwaGlj
YWxfY29tcGFyZShfX3guYmVnaW4oKSwgX194LmVuZCgpLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX195LmJlZ2luKCksIF9feS5lbmQoKSk7Cn0KCgoKCgoKdGVtcGxhdGUgPGNs
YXNzIF9UcCwgY2xhc3MgX0FsbG9jLCBzaXplX3QgX19idWZzaXo+CmlubGluZSB2b2lkIApzd2Fw
KGRlcXVlPF9UcCxfQWxsb2MsX19idWZzaXo+JiBfX3gsIGRlcXVlPF9UcCxfQWxsb2MsX19idWZz
aXo+JiBfX3kpCnsKICBfX3guc3dhcChfX3kpOwp9CgoKCgoKCgogICAgICAgICAgCiAgCiAgCgoK
IAogCiAKIyAzNCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8y
Ljk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9kZXF1ZSIgMiAzCgoKCgogCiAKIAojIDIx
ICIuLi9TcmNTaGFyZWQvRW1TdHJ1Y3RzLmgiIDIKCgoKCgogCgp0eXBlZGVmIHZlY3RvcjxTY2Fs
ZVR5cGU+CQlTY2FsZUxpc3Q7CnR5cGVkZWYgdmVjdG9yPFJBTVNpemVUeXBlPgkJUkFNU2l6ZUxp
c3Q7Cgp0eXBlZGVmIHZlY3Rvcjx1aW50OD4JCQlCeXRlTGlzdDsKdHlwZWRlZiB2ZWN0b3I8c3Ry
aW5nPgkJCVN0cmluZ0xpc3Q7Cgp0eXBlZGVmIG1hcDxzdHJpbmcsIHN0cmluZz4JCVN0cmluZ1N0
cmluZ01hcDsKdHlwZWRlZiB2ZWN0b3I8Q2xvc2VBY3Rpb25UeXBlPglDbG9zZUFjdGlvbkxpc3Q7
CnR5cGVkZWYgdmVjdG9yPExvZ2dpbmdUeXBlPgkJTG9nZ2luZ0xpc3Q7CgoKIAoKc3RydWN0IFJH
QlR5cGUKewoJUkdCVHlwZSAodm9pZCkge30KCVJHQlR5cGUgKHVpbnQ4IHJlZCwgdWludDggZ3Jl
ZW4sIHVpbnQ4IGJsdWUpIDoKCQlmUmVkIChyZWQpLAoJCWZHcmVlbiAoZ3JlZW4pLAoJCWZCbHVl
IChibHVlKQoJe30KCglib29sIG9wZXJhdG9yPT0gKGNvbnN0IFJHQlR5cGUmIHJocykgY29uc3QK
CXsKCQlyZXR1cm4gZlJlZCA9PSByaHMuZlJlZCAmJiBmR3JlZW4gPT0gcmhzLmZHcmVlbiAmJiBm
Qmx1ZSA9PSByaHMuZkJsdWU7Cgl9CgoJYm9vbCBvcGVyYXRvciE9IChjb25zdCBSR0JUeXBlJiBy
aHMpIGNvbnN0Cgl7CgkJcmV0dXJuICEoKnRoaXMgPT0gcmhzKTsKCX0KCgl1aW50OAkJZlJlZDsK
CXVpbnQ4CQlmR3JlZW47Cgl1aW50OAkJZkJsdWU7Cgl1aW50OAkJZkZpbGxlcjsJIAp9Owp0eXBl
ZGVmIHZlY3RvcjxSR0JUeXBlPglSR0JMaXN0OwoKCiAKCnN0cnVjdCBTeXN0ZW1DYWxsQ29udGV4
dAp7CgllbXVwdHIJCWZQQzsJCQkgCgllbXVwdHIJCWZOZXh0UEM7CQkgCgllbXVwdHIJCWZEZXN0
UEMxOwkJIAoJZW11cHRyCQlmRGVzdFBDMjsJCSAKCXVpbnQxNgkJZlRyYXBXb3JkOwkJIAoJdWlu
dDE2CQlmVHJhcEluZGV4OwkJIAoJZW11cHRyCQlmRXh0cmE7CQkJIAoJQm9vbAkJZlZpYVRyYXA7
CQkgCglCb29sCQlmVmlhSnNyQTE7CQkgCgoJbG9uZwkJZkVycm9yOwkJCSAKCWxvbmcJCWZMaWJJ
bmRleDsJCSAKCWxvbmcJCWZNYXhSZWZOdW07CQkgCn07CnR5cGVkZWYgdmVjdG9yPFN5c3RlbUNh
bGxDb250ZXh0PglTeXN0ZW1DYWxsQ29udGV4dExpc3Q7CgoKIAoKc3RydWN0IERhdGFiYXNlSW5m
bwp7CglVSW50MzIJCWNyZWF0b3I7CglVSW50MzIJCXR5cGU7CglVSW50MTYJCXZlcnNpb247CglM
b2NhbElECQlkYklEOwoJVUludDE2IAkJY2FyZE5vOwoJVUludDMyCQltb2REYXRlOwoJVUludDE2
CQlkYkF0dHJzOwoKCWNoYXIJCW5hbWVbMzIgXTsKCWNoYXIJCWRiTmFtZVszMiBdOwoKCUJvb2wg
b3BlcmF0b3IgPCAoY29uc3QgRGF0YWJhc2VJbmZvJiBvdGhlcikgY29uc3QKCQl7IGlmIChjcmVh
dG9yIDwgb3RoZXIuY3JlYXRvcikgcmV0dXJuIHRydWU7CgkJICBpZiAoY3JlYXRvciA+IG90aGVy
LmNyZWF0b3IpIHJldHVybiBmYWxzZTsKCQkgIGlmICh0eXBlIDwgb3RoZXIudHlwZSkgcmV0dXJu
IHRydWU7CgkJICByZXR1cm4gZmFsc2U7IH0KCglCb29sIG9wZXJhdG9yID09IChjb25zdCBEYXRh
YmFzZUluZm8mIG90aGVyKSBjb25zdAoJCXsgcmV0dXJuIChjcmVhdG9yID09IG90aGVyLmNyZWF0
b3IpICYmCgkJCQkgKHR5cGUgPT0gb3RoZXIudHlwZSk7IH0KfTsKdHlwZWRlZiB2ZWN0b3I8RGF0
YWJhc2VJbmZvPglEYXRhYmFzZUluZm9MaXN0OwoKCiAKCnN0cnVjdCBTbG90SW5mb1R5cGUKewoJ
bG9uZwkJZlNsb3ROdW1iZXI7CglCb29sCQlmU2xvdE9jY3VwaWVkOwoJRW1EaXJSZWYJZlNsb3RS
b290Owp9Owp0eXBlZGVmIHZlY3RvcjxTbG90SW5mb1R5cGU+CVNsb3RJbmZvTGlzdDsKCgogCgpz
dHJ1Y3QgQ29uZmlndXJhdGlvbgp7CglDb25maWd1cmF0aW9uICgpIDoKCQlmRGV2aWNlICgpLAoJ
CWZSQU1TaXplICgxMDI0KSwKCQlmUk9NRmlsZSAoKQoJewoJfQoKCUNvbmZpZ3VyYXRpb24gKGNv
bnN0IENvbmZpZ3VyYXRpb24mIGNmZykgOgoJCWZEZXZpY2UgKGNmZy5mRGV2aWNlKSwKCQlmUkFN
U2l6ZSAoY2ZnLmZSQU1TaXplKSwKCQlmUk9NRmlsZSAoY2ZnLmZST01GaWxlKQoJewoJfQoKCUNv
bmZpZ3VyYXRpb24gKGNvbnN0IEVtRGV2aWNlJiBkdCwgbG9uZyBzaXplLCBjb25zdCBFbUZpbGVS
ZWYmIHJvbSkgOgoJCWZEZXZpY2UgKGR0KSwKCQlmUkFNU2l6ZSAoc2l6ZSksCgkJZlJPTUZpbGUg
KHJvbSkKCXsKCX0KCglCb29sIElzVmFsaWQgKHZvaWQpIGNvbnN0Cgl7CgkJIAoJCSAKCgkJaWYg
KCFmRGV2aWNlLlN1cHBvcnRlZCAoKSkKCQkJcmV0dXJuIGZhbHNlOwoKCQlpZiAoZlJBTVNpemUg
PD0gMCkKCQkJcmV0dXJuIGZhbHNlOwoKCQlpZiAoIWZST01GaWxlLklzU3BlY2lmaWVkICgpKQoJ
CQlyZXR1cm4gZmFsc2U7CgoJCWlmICghZlJPTUZpbGUuRXhpc3RzICgpKQoJCQlyZXR1cm4gZmFs
c2U7CgoJCWlmICghZkRldmljZS5TdXBwb3J0c1JPTSAoZlJPTUZpbGUpKQoJCQlyZXR1cm4gZmFs
c2U7CgoJCXJldHVybiB0cnVlOwoJfQoKCUVtRGV2aWNlCQkJCWZEZXZpY2U7CglSQU1TaXplVHlw
ZQkJCQlmUkFNU2l6ZTsKCUVtRmlsZVJlZgkJCQlmUk9NRmlsZTsKfTsKdHlwZWRlZiB2ZWN0b3I8
Q29uZmlndXJhdGlvbj4JQ29uZmlndXJhdGlvbkxpc3Q7CgoKIAoKc3RydWN0IEdyZW1saW5JbmZv
CnsKCUdyZW1saW5JbmZvICgpIDoKCQlmTnVtYmVyICgwKSwKCQlmU3RlcHMgKC0xKSwKCQlmRmlu
YWwgKC0xKSwKCQlmU2F2ZUZyZXF1ZW5jeSAoMTAwMDApLAoJCWZBcHBMaXN0ICgpCgl7Cgl9CgoJ
bG9uZwkJCQlmTnVtYmVyOwoJbG9uZwkJCQlmU3RlcHM7Cglsb25nCQkJCWZGaW5hbDsKCWxvbmcJ
CQkJZlNhdmVGcmVxdWVuY3k7CglEYXRhYmFzZUluZm9MaXN0CWZBcHBMaXN0Owp9Owp0eXBlZGVm
IHZlY3RvcjxHcmVtbGluSW5mbz4JR3JlbWxpbkluZm9MaXN0OwoKCiAKCnN0cnVjdCBIb3JkZUlu
Zm8KewoJSG9yZGVJbmZvICgpIDoKCQlmU3RhcnROdW1iZXIgKDApLAoJCWZTdG9wTnVtYmVyICgw
KSwKCQlmRGVwdGhTd2l0Y2ggKDMwMDAwKSwKCQlmRGVwdGhTYXZlICgxMDAwMCksCgkJZkRlcHRo
U3RvcCAoMTAwMDAwMCksCgkJZkNhblN3aXRjaCAoZmFsc2UpLAoJCWZDYW5TYXZlIChmYWxzZSks
CgkJZkNhblN0b3AgKGZhbHNlKSwKCQlmQXBwTGlzdCAoKSwKCQlmU2F2ZUZyZXF1ZW5jeSAoMCks
CSAKCQlmU3dpdGNoRGVwdGggKDApLAkgCgkJZk1heERlcHRoICgwKSwJCSAKCQlmRmlyc3RMYXVu
Y2hlZEFwcE5hbWUgKCIiKQoJewoJCU5ld1RvT2xkICgpOwoJfQoKCWxvbmcJCQkJZlN0YXJ0TnVt
YmVyOwoJbG9uZwkJCQlmU3RvcE51bWJlcjsKCglsb25nCQkJCWZEZXB0aFN3aXRjaDsKCWxvbmcJ
CQkJZkRlcHRoU2F2ZTsKCWxvbmcJCQkJZkRlcHRoU3RvcDsKCglCb29sCQkJCWZDYW5Td2l0Y2g7
CglCb29sCQkJCWZDYW5TYXZlOwoJQm9vbAkJCQlmQ2FuU3RvcDsKCglEYXRhYmFzZUluZm9MaXN0
CWZBcHBMaXN0OwoKCSAKCSAKCglsb25nCQkJCWZTYXZlRnJlcXVlbmN5OwoJbG9uZwkJCQlmU3dp
dGNoRGVwdGg7Cglsb25nCQkJCWZNYXhEZXB0aDsKCgkgCgkgCgoJc3RyaW5nCQkJCWZGaXJzdExh
dW5jaGVkQXBwTmFtZTsKCgl2b2lkIE5ld1RvT2xkICh2b2lkKQoJewoJCWZTd2l0Y2hEZXB0aAk9
IGZDYW5Td2l0Y2ggPyBmRGVwdGhTd2l0Y2ggOiAtMTsKCQlmU2F2ZUZyZXF1ZW5jeQk9IGZDYW5T
YXZlID8gZkRlcHRoU2F2ZSA6IDA7CgkJZk1heERlcHRoCQk9IGZDYW5TdG9wID8gZkRlcHRoU3Rv
cCA6IC0xOwoJfQoKCXZvaWQgT2xkVG9OZXcgKHZvaWQpCgl7CgkJZkNhblN3aXRjaCA9IGZTd2l0
Y2hEZXB0aCA+IDA7CgkJZkRlcHRoU3dpdGNoID0gZkNhblN3aXRjaCA/IGZTd2l0Y2hEZXB0aCA6
IDMwMDAwOwoKCQlmQ2FuU2F2ZSA9IGZTYXZlRnJlcXVlbmN5ID4gMDsKCQlmRGVwdGhTYXZlID0g
ZkNhblNhdmUgPyBmU2F2ZUZyZXF1ZW5jeSA6IDEwMDAwOwoKCQlmQ2FuU3RvcCA9IGZNYXhEZXB0
aCA+IDA7CgkJZkRlcHRoU3RvcCA9IGZDYW5TdG9wID8gZk1heERlcHRoIDogMTAwMDAwMDsKCX0K
fTsKdHlwZWRlZiB2ZWN0b3I8SG9yZGVJbmZvPglIb3JkZUluZm9MaXN0OwoKCiAKCnN0cnVjdCBF
bUdyZW1saW5UaHJlYWRJbmZvCnsKCUJvb2wJZkhhbHRlZDsKCUludDMyCWZFcnJvckV2ZW50OwoJ
U3RyQ29kZQlmTWVzc2FnZUlEOwp9OwoKCiAKCnN0cnVjdCBFbUdyZW1saW5FcnJvckZyZXF1ZW5j
eUluZm8KewoJSW50MzIJZkNvdW50OwoJSW50MzIJZkVycm9yRnJlcXVlbmN5OwoJSW50MzIJZkZp
cnN0RXJyYW50R3JlbWxpbkluZGV4Owp9OwoKCiAKCnR5cGVkZWYgc3RydWN0IFN5c0xpYlRibEVu
dHJ5VHlwZVYxMCB7CglNZW1QdHIqCQkJZGlzcGF0Y2hUYmxQOwkJCQkJIAoJdm9pZCoJCQlnbG9i
YWxzUDsJCQkJCQkgCgl9IFN5c0xpYlRibEVudHJ5VHlwZVYxMDsKdHlwZWRlZiBTeXNMaWJUYmxF
bnRyeVR5cGVWMTAqCVN5c0xpYlRibEVudHJ5VjEwUHRyOwoKCiAKCnN0cnVjdCBFbVN0YWNrRnJh
bWUKewoJZW11cHRyCWZBZGRyZXNzSW5GdW5jdGlvbjsKCWVtdXB0cglmQTY7Cn07Cgp0eXBlZGVm
IHZlY3RvcjxFbVN0YWNrRnJhbWU+CUVtU3RhY2tGcmFtZUxpc3Q7CgoKCgojIDIyICIuLi9TcmNT
aGFyZWQvRW1EbGcuaCIgMgoKIyAxICIuLi9TcmNTaGFyZWQvTG9nZ2luZy5oIiAxCiAKIAoKCgoK
CgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL0hvcmRlcy5oIiAxCiAKIAoKCgoKCgoKCgoKCgoK
CgoKIyAxICIuLi9TcmNTaGFyZWQvQ0dyZW1saW5zLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKIyAx
ICIuLi9TcmNTaGFyZWQvRW1TdHJlYW0uaCIgMQogCiAKIAogCiAKIAoKCgoKCgoKIyAxICIvdXNy
L2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8u
Li9pbmNsdWRlL2crKy0zL2xpc3QiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUu
My8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9saXN0LmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0
IF9MaXN0X25vZGUgewogIHR5cGVkZWYgdm9pZCogX1ZvaWRfcG9pbnRlcjsKICBfVm9pZF9wb2lu
dGVyIF9NX25leHQ7CiAgX1ZvaWRfcG9pbnRlciBfTV9wcmV2OwogIF9UcCBfTV9kYXRhOwp9OwoK
dGVtcGxhdGU8Y2xhc3MgX1RwLCBjbGFzcyBfUmVmLCBjbGFzcyBfUHRyPgpzdHJ1Y3QgX0xpc3Rf
aXRlcmF0b3IgewogIHR5cGVkZWYgX0xpc3RfaXRlcmF0b3I8X1RwLF9UcCYsX1RwKj4gICAgICAg
ICAgICAgaXRlcmF0b3I7CiAgdHlwZWRlZiBfTGlzdF9pdGVyYXRvcjxfVHAsY29uc3QgX1RwJixj
b25zdCBfVHAqPiBjb25zdF9pdGVyYXRvcjsKICB0eXBlZGVmIF9MaXN0X2l0ZXJhdG9yPF9UcCxf
UmVmLF9QdHI+ICAgICAgICAgICAgIF9TZWxmOwoKICB0eXBlZGVmIGJpZGlyZWN0aW9uYWxfaXRl
cmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgX1RwIHZhbHVlX3R5cGU7CiAg
dHlwZWRlZiBfUHRyIHBvaW50ZXI7CiAgdHlwZWRlZiBfUmVmIHJlZmVyZW5jZTsKICB0eXBlZGVm
IF9MaXN0X25vZGU8X1RwPiBfTm9kZTsKICB0eXBlZGVmIHNpemVfdCBzaXplX3R5cGU7CiAgdHlw
ZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwoKICBfTm9kZSogX01fbm9kZTsKCiAgX0xp
c3RfaXRlcmF0b3IoX05vZGUqIF9feCkgOiBfTV9ub2RlKF9feCkge30KICBfTGlzdF9pdGVyYXRv
cigpIHt9CiAgX0xpc3RfaXRlcmF0b3IoY29uc3QgaXRlcmF0b3ImIF9feCkgOiBfTV9ub2RlKF9f
eC5fTV9ub2RlKSB7fQoKICBib29sIG9wZXJhdG9yPT0oY29uc3QgX1NlbGYmIF9feCkgY29uc3Qg
eyByZXR1cm4gX01fbm9kZSA9PSBfX3guX01fbm9kZTsgfQogIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBfU2VsZiYgX194KSBjb25zdCB7IHJldHVybiBfTV9ub2RlICE9IF9feC5fTV9ub2RlOyB9CiAg
cmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICgqX01fbm9kZSkuX01fZGF0YTsg
fQoKCiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihvcGVyYXRvciooKSk7
IH0KCgogIF9TZWxmJiBvcGVyYXRvcisrKCkgeyAKICAgIF9NX25vZGUgPSAoX05vZGUqKShfTV9u
b2RlLT5fTV9uZXh0KTsKICAgIHJldHVybiAqdGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3IrKyhp
bnQpIHsgCiAgICBfU2VsZiBfX3RtcCA9ICp0aGlzOwogICAgKysqdGhpczsKICAgIHJldHVybiBf
X3RtcDsKICB9CiAgX1NlbGYmIG9wZXJhdG9yLS0oKSB7IAogICAgX01fbm9kZSA9IChfTm9kZSop
KF9NX25vZGUtPl9NX3ByZXYpOwogICAgcmV0dXJuICp0aGlzOwogIH0KICBfU2VsZiBvcGVyYXRv
ci0tKGludCkgeyAKICAgIF9TZWxmIF9fdG1wID0gKnRoaXM7CiAgICAtLSp0aGlzOwogICAgcmV0
dXJuIF9fdG1wOwogIH0KfTsKCiMgMTIwICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9saXN0Lmgi
IDMKCgoKIAogCiAKIAogCiAKCiMgMTk5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9saXN0Lmgi
IDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CmNsYXNzIF9MaXN0X2Jhc2Ug
CnsKcHVibGljOgogIHR5cGVkZWYgX0FsbG9jIGFsbG9jYXRvcl90eXBlOwogIGFsbG9jYXRvcl90
eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBhbGxvY2F0b3JfdHlwZSgpOyB9Cgog
IF9MaXN0X2Jhc2UoY29uc3QgYWxsb2NhdG9yX3R5cGUmKSB7CiAgICBfTV9ub2RlID0gX01fZ2V0
X25vZGUoKTsKICAgIF9NX25vZGUtPl9NX25leHQgPSBfTV9ub2RlOwogICAgX01fbm9kZS0+X01f
cHJldiA9IF9NX25vZGU7CiAgfQogIH5fTGlzdF9iYXNlKCkgewogICAgY2xlYXIoKTsKICAgIF9N
X3B1dF9ub2RlKF9NX25vZGUpOwogIH0KCiAgdm9pZCBjbGVhcigpOwoKcHJvdGVjdGVkOgogIHR5
cGVkZWYgc2ltcGxlX2FsbG9jPF9MaXN0X25vZGU8X1RwPiwgX0FsbG9jPiBfQWxsb2NfdHlwZTsK
ICBfTGlzdF9ub2RlPF9UcD4qIF9NX2dldF9ub2RlKCkgeyByZXR1cm4gX0FsbG9jX3R5cGU6OmFs
bG9jYXRlKDEpOyB9CiAgdm9pZCBfTV9wdXRfbm9kZShfTGlzdF9ub2RlPF9UcD4qIF9fcCkgeyBf
QWxsb2NfdHlwZTo6ZGVhbGxvY2F0ZShfX3AsIDEpOyB9IAoKcHJvdGVjdGVkOgogIF9MaXN0X25v
ZGU8X1RwPiogX01fbm9kZTsKfTsKCgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9j
Pgp2b2lkIApfTGlzdF9iYXNlPF9UcCxfQWxsb2M+OjpjbGVhcigpIAp7CiAgX0xpc3Rfbm9kZTxf
VHA+KiBfX2N1ciA9IChfTGlzdF9ub2RlPF9UcD4qKSBfTV9ub2RlLT5fTV9uZXh0OwogIHdoaWxl
IChfX2N1ciAhPSBfTV9ub2RlKSB7CiAgICBfTGlzdF9ub2RlPF9UcD4qIF9fdG1wID0gX19jdXI7
CiAgICBfX2N1ciA9IChfTGlzdF9ub2RlPF9UcD4qKSBfX2N1ci0+X01fbmV4dDsKICAgIGRlc3Ry
b3koJl9fdG1wLT5fTV9kYXRhKTsKICAgIF9NX3B1dF9ub2RlKF9fdG1wKTsKICB9CiAgX01fbm9k
ZS0+X01fbmV4dCA9IF9NX25vZGU7CiAgX01fbm9kZS0+X01fcHJldiA9IF9NX25vZGU7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYyA9IGFsbG9jICA+CmNsYXNzIGxpc3QgOiBw
cm90ZWN0ZWQgX0xpc3RfYmFzZTxfVHAsIF9BbGxvYz4gewogIHR5cGVkZWYgX0xpc3RfYmFzZTxf
VHAsIF9BbGxvYz4gX0Jhc2U7CnByb3RlY3RlZDoKICB0eXBlZGVmIHZvaWQqIF9Wb2lkX3BvaW50
ZXI7CgpwdWJsaWM6ICAgICAgCiAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHZh
bHVlX3R5cGUqIHBvaW50ZXI7CiAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlKiBjb25zdF9wb2lu
dGVyOwogIHR5cGVkZWYgdmFsdWVfdHlwZSYgcmVmZXJlbmNlOwogIHR5cGVkZWYgY29uc3QgdmFs
dWVfdHlwZSYgY29uc3RfcmVmZXJlbmNlOwogIHR5cGVkZWYgX0xpc3Rfbm9kZTxfVHA+IF9Ob2Rl
OwogIHR5cGVkZWYgc2l6ZV90IHNpemVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJl
bmNlX3R5cGU7CgogIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6OmFsbG9jYXRvcl90eXBlIGFsbG9j
YXRvcl90eXBlOwogIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7IHJldHVy
biBfQmFzZTo6Z2V0X2FsbG9jYXRvcigpOyB9CgpwdWJsaWM6CiAgdHlwZWRlZiBfTGlzdF9pdGVy
YXRvcjxfVHAsX1RwJixfVHAqPiAgICAgICAgICAgICBpdGVyYXRvcjsKICB0eXBlZGVmIF9MaXN0
X2l0ZXJhdG9yPF9UcCxjb25zdCBfVHAmLGNvbnN0IF9UcCo+IGNvbnN0X2l0ZXJhdG9yOwoKCiAg
dHlwZWRlZiByZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPiBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yOwogIHR5cGVkZWYgcmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4gICAgICAgcmV2ZXJz
ZV9pdGVyYXRvcjsKCgoKCgoKCgoKcHJvdGVjdGVkOgoKICB1c2luZyBfQmFzZTo6X01fbm9kZTsK
ICB1c2luZyBfQmFzZTo6X01fcHV0X25vZGU7CiAgdXNpbmcgX0Jhc2U6Ol9NX2dldF9ub2RlOwoK
CnByb3RlY3RlZDoKICBfTm9kZSogX01fY3JlYXRlX25vZGUoY29uc3QgX1RwJiBfX3gpCiAgewog
ICAgX05vZGUqIF9fcCA9IF9NX2dldF9ub2RlKCk7CiAgICB0cnkgIHsKICAgICAgY29uc3RydWN0
KCZfX3AtPl9NX2RhdGEsIF9feCk7CiAgICB9CiAgICBjYXRjaCguLi4pIHsgIF9NX3B1dF9ub2Rl
KF9fcCkgOyB0aHJvdzsgfSA7CiAgICByZXR1cm4gX19wOwogIH0KCiAgX05vZGUqIF9NX2NyZWF0
ZV9ub2RlKCkKICB7CiAgICBfTm9kZSogX19wID0gX01fZ2V0X25vZGUoKTsKICAgIHRyeSAgewog
ICAgICBjb25zdHJ1Y3QoJl9fcC0+X01fZGF0YSk7CiAgICB9CiAgICBjYXRjaCguLi4pIHsgIF9N
X3B1dF9ub2RlKF9fcCkgOyB0aHJvdzsgfSA7CiAgICByZXR1cm4gX19wOwogIH0KCnB1YmxpYzoK
ICBleHBsaWNpdCBsaXN0KGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlw
ZSgpKSA6IF9CYXNlKF9fYSkge30KCiAgaXRlcmF0b3IgYmVnaW4oKSAgICAgICAgICAgICB7IHJl
dHVybiAoX05vZGUqKShfTV9ub2RlLT5fTV9uZXh0KTsgfQogIGNvbnN0X2l0ZXJhdG9yIGJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gKF9Ob2RlKikoX01fbm9kZS0+X01fbmV4dCk7IH0KCiAgaXRlcmF0
b3IgZW5kKCkgICAgICAgICAgICAgeyByZXR1cm4gX01fbm9kZTsgfQogIGNvbnN0X2l0ZXJhdG9y
IGVuZCgpIGNvbnN0IHsgcmV0dXJuIF9NX25vZGU7IH0KCiAgcmV2ZXJzZV9pdGVyYXRvciByYmVn
aW4oKSAKICAgIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CiAgY29uc3RfcmV2
ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCAKICAgIHsgcmV0dXJuIGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IoZW5kKCkpOyB9CgogIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpCiAgICB7IHJldHVy
biByZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CiAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBy
ZW5kKCkgY29uc3QKICAgIHsgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7
IH0KCiAgYm9vbCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuIF9NX25vZGUtPl9NX25leHQgPT0gX01f
bm9kZTsgfQogIHNpemVfdHlwZSBzaXplKCkgY29uc3QgewogICAgc2l6ZV90eXBlIF9fcmVzdWx0
ID0gMDsKICAgIGRpc3RhbmNlKGJlZ2luKCksIGVuZCgpLCBfX3Jlc3VsdCk7CiAgICByZXR1cm4g
X19yZXN1bHQ7CiAgfQogIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVf
dHlwZSgtMSk7IH0KCiAgcmVmZXJlbmNlIGZyb250KCkgeyByZXR1cm4gKmJlZ2luKCk7IH0KICBj
b25zdF9yZWZlcmVuY2UgZnJvbnQoKSBjb25zdCB7IHJldHVybiAqYmVnaW4oKTsgfQogIHJlZmVy
ZW5jZSBiYWNrKCkgeyByZXR1cm4gKigtLWVuZCgpKTsgfQogIGNvbnN0X3JlZmVyZW5jZSBiYWNr
KCkgY29uc3QgeyByZXR1cm4gKigtLWVuZCgpKTsgfQoKICB2b2lkIHN3YXAobGlzdDxfVHAsIF9B
bGxvYz4mIF9feCkgeyAgOjpzd2FwKF9NX25vZGUsIF9feC5fTV9ub2RlKTsgfQoKICBpdGVyYXRv
ciBpbnNlcnQoaXRlcmF0b3IgX19wb3NpdGlvbiwgY29uc3QgX1RwJiBfX3gpIHsKICAgIF9Ob2Rl
KiBfX3RtcCA9IF9NX2NyZWF0ZV9ub2RlKF9feCk7CiAgICBfX3RtcC0+X01fbmV4dCA9IF9fcG9z
aXRpb24uX01fbm9kZTsKICAgIF9fdG1wLT5fTV9wcmV2ID0gX19wb3NpdGlvbi5fTV9ub2RlLT5f
TV9wcmV2OwogICAgKChfTm9kZSopIChfX3Bvc2l0aW9uLl9NX25vZGUtPl9NX3ByZXYpKS0+X01f
bmV4dCA9IF9fdG1wOwogICAgX19wb3NpdGlvbi5fTV9ub2RlLT5fTV9wcmV2ID0gX190bXA7CiAg
ICByZXR1cm4gX190bXA7CiAgfQogIGl0ZXJhdG9yIGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9u
KSB7IHJldHVybiBpbnNlcnQoX19wb3NpdGlvbiwgX1RwKCkpOyB9CgogICAKCiAgdGVtcGxhdGU8
Y2xhc3MgX0ludGVnZXI+CiAgdm9pZCBfTV9pbnNlcnRfZGlzcGF0Y2goaXRlcmF0b3IgX19wb3Ms
IF9JbnRlZ2VyIF9fbiwgX0ludGVnZXIgX194LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9f
dHJ1ZV90eXBlKSB7CiAgICBpbnNlcnQoX19wb3MsIChzaXplX3R5cGUpIF9fbiwgKF9UcCkgX194
KTsKICB9CgogIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIF9NX2luc2Vy
dF9kaXNwYXRjaChpdGVyYXRvciBfX3BvcywKICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5w
dXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19mYWxzZV90eXBlKTsKCiAgdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJh
dG9yPgogIHZvaWQgaW5zZXJ0KGl0ZXJhdG9yIF9fcG9zLCBfSW5wdXRJdGVyYXRvciBfX2ZpcnN0
LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKICAgIHR5cGVkZWYgdHlwZW5hbWUgX0lzX2ludGVn
ZXI8X0lucHV0SXRlcmF0b3I+OjpfSW50ZWdyYWwgX0ludGVncmFsOwogICAgX01faW5zZXJ0X2Rp
c3BhdGNoKF9fcG9zLCBfX2ZpcnN0LCBfX2xhc3QsIF9JbnRlZ3JhbCgpKTsKICB9CgoKCgoKCiAg
dm9pZCBpbnNlcnQoaXRlcmF0b3IgX19wb3MsIHNpemVfdHlwZSBfX24sIGNvbnN0IF9UcCYgX194
KTsKIAogIHZvaWQgcHVzaF9mcm9udChjb25zdCBfVHAmIF9feCkgeyBpbnNlcnQoYmVnaW4oKSwg
X194KTsgfQogIHZvaWQgcHVzaF9mcm9udCgpIHtpbnNlcnQoYmVnaW4oKSk7fQogIHZvaWQgcHVz
aF9iYWNrKGNvbnN0IF9UcCYgX194KSB7IGluc2VydChlbmQoKSwgX194KTsgfQogIHZvaWQgcHVz
aF9iYWNrKCkge2luc2VydChlbmQoKSk7fQoKICBpdGVyYXRvciBlcmFzZShpdGVyYXRvciBfX3Bv
c2l0aW9uKSB7CiAgICBfTm9kZSogX19uZXh0X25vZGUgPSAoX05vZGUqKSAoX19wb3NpdGlvbi5f
TV9ub2RlLT5fTV9uZXh0KTsKICAgIF9Ob2RlKiBfX3ByZXZfbm9kZSA9IChfTm9kZSopIChfX3Bv
c2l0aW9uLl9NX25vZGUtPl9NX3ByZXYpOwogICAgX19wcmV2X25vZGUtPl9NX25leHQgPSBfX25l
eHRfbm9kZTsKICAgIF9fbmV4dF9ub2RlLT5fTV9wcmV2ID0gX19wcmV2X25vZGU7CiAgICBkZXN0
cm95KCZfX3Bvc2l0aW9uLl9NX25vZGUtPl9NX2RhdGEpOwogICAgX01fcHV0X25vZGUoX19wb3Np
dGlvbi5fTV9ub2RlKTsKICAgIHJldHVybiBpdGVyYXRvcihfX25leHRfbm9kZSk7CiAgfQogIGl0
ZXJhdG9yIGVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCk7CiAgdm9pZCBj
bGVhcigpIHsgX0Jhc2U6OmNsZWFyKCk7IH0KCiAgdm9pZCByZXNpemUoc2l6ZV90eXBlIF9fbmV3
X3NpemUsIGNvbnN0IF9UcCYgX194KTsKICB2b2lkIHJlc2l6ZShzaXplX3R5cGUgX19uZXdfc2l6
ZSkgeyByZXNpemUoX19uZXdfc2l6ZSwgX1RwKCkpOyB9CgogIHZvaWQgcG9wX2Zyb250KCkgeyBl
cmFzZShiZWdpbigpKTsgfQogIHZvaWQgcG9wX2JhY2soKSB7IAogICAgaXRlcmF0b3IgX190bXAg
PSBlbmQoKTsKICAgIGVyYXNlKC0tX190bXApOwogIH0KICBsaXN0KHNpemVfdHlwZSBfX24sIGNv
bnN0IF9UcCYgX192YWx1ZSwKICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EgPSBhbGxv
Y2F0b3JfdHlwZSgpKQogICAgOiBfQmFzZShfX2EpCiAgICB7IGluc2VydChiZWdpbigpLCBfX24s
IF9fdmFsdWUpOyB9CiAgZXhwbGljaXQgbGlzdChzaXplX3R5cGUgX19uKQogICAgOiBfQmFzZShh
bGxvY2F0b3JfdHlwZSgpKQogICAgeyBpbnNlcnQoYmVnaW4oKSwgX19uLCBfVHAoKSk7IH0KCgoK
ICAgCiAgIAogIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICBsaXN0KF9JbnB1dEl0
ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgIGNvbnN0IGFsbG9j
YXRvcl90eXBlJiBfX2EgPSBhbGxvY2F0b3JfdHlwZSgpKQogICAgOiBfQmFzZShfX2EpCiAgICB7
IGluc2VydChiZWdpbigpLCBfX2ZpcnN0LCBfX2xhc3QpOyB9CgojIDQzMyAiL3Vzci9sb2NhbC9s
aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zdGxfbGlzdC5oIiAzCgogIGxpc3QoY29uc3QgbGlzdDxfVHAsIF9BbGxvYz4mIF9f
eCkgOiBfQmFzZShfX3guZ2V0X2FsbG9jYXRvcigpKQogICAgeyBpbnNlcnQoYmVnaW4oKSwgX194
LmJlZ2luKCksIF9feC5lbmQoKSk7IH0KCiAgfmxpc3QoKSB7IH0KCiAgbGlzdDxfVHAsIF9BbGxv
Yz4mIG9wZXJhdG9yPShjb25zdCBsaXN0PF9UcCwgX0FsbG9jPiYgX194KTsKCnB1YmxpYzoKICAg
CiAgIAogICAKICAgCgogIHZvaWQgYXNzaWduKHNpemVfdHlwZSBfX24sIGNvbnN0IF9UcCYgX192
YWwpOwoKCgogIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIGFzc2lnbihf
SW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKICAgIHR5cGVk
ZWYgdHlwZW5hbWUgX0lzX2ludGVnZXI8X0lucHV0SXRlcmF0b3I+OjpfSW50ZWdyYWwgX0ludGVn
cmFsOwogICAgX01fYXNzaWduX2Rpc3BhdGNoKF9fZmlyc3QsIF9fbGFzdCwgX0ludGVncmFsKCkp
OwogIH0KCiAgdGVtcGxhdGUgPGNsYXNzIF9JbnRlZ2VyPgogIHZvaWQgX01fYXNzaWduX2Rpc3Bh
dGNoKF9JbnRlZ2VyIF9fbiwgX0ludGVnZXIgX192YWwsIF9fdHJ1ZV90eXBlKQogICAgeyBhc3Np
Z24oKHNpemVfdHlwZSkgX19uLCAoX1RwKSBfX3ZhbCk7IH0KCiAgdGVtcGxhdGUgPGNsYXNzIF9J
bnB1dEl0ZXJhdG9yPgogIHZvaWQgX01fYXNzaWduX2Rpc3BhdGNoKF9JbnB1dEl0ZXJhdG9yIF9f
Zmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2ZhbHNlX3R5cGUpOwoKCgpwcm90ZWN0ZWQ6CiAgdm9pZCB0cmFuc2ZlcihpdGVyYXRvciBfX3Bv
c2l0aW9uLCBpdGVyYXRvciBfX2ZpcnN0LCBpdGVyYXRvciBfX2xhc3QpIHsKICAgIGlmIChfX3Bv
c2l0aW9uICE9IF9fbGFzdCkgewogICAgICAgCiAgICAgICgoX05vZGUqKSAoX19sYXN0Ll9NX25v
ZGUtPl9NX3ByZXYpKS0+X01fbmV4dCAgICAgPSBfX3Bvc2l0aW9uLl9NX25vZGU7CiAgICAgICgo
X05vZGUqKSAoX19maXJzdC5fTV9ub2RlLT5fTV9wcmV2KSktPl9NX25leHQgICAgPSBfX2xhc3Qu
X01fbm9kZTsKICAgICAgKChfTm9kZSopIChfX3Bvc2l0aW9uLl9NX25vZGUtPl9NX3ByZXYpKS0+
X01fbmV4dCA9IF9fZmlyc3QuX01fbm9kZTsgCgogICAgICAgCiAgICAgIF9Ob2RlKiBfX3RtcCA9
IChfTm9kZSopIChfX3Bvc2l0aW9uLl9NX25vZGUtPl9NX3ByZXYpOwogICAgICBfX3Bvc2l0aW9u
Ll9NX25vZGUtPl9NX3ByZXYgPSBfX2xhc3QuX01fbm9kZS0+X01fcHJldjsKICAgICAgX19sYXN0
Ll9NX25vZGUtPl9NX3ByZXYgICAgICA9IF9fZmlyc3QuX01fbm9kZS0+X01fcHJldjsgCiAgICAg
IF9fZmlyc3QuX01fbm9kZS0+X01fcHJldiAgICA9IF9fdG1wOwogICAgfQogIH0KCnB1YmxpYzoK
ICB2b2lkIHNwbGljZShpdGVyYXRvciBfX3Bvc2l0aW9uLCBsaXN0JiBfX3gpIHsKICAgIGlmICgh
X194LmVtcHR5KCkpIAogICAgICB0cmFuc2ZlcihfX3Bvc2l0aW9uLCBfX3guYmVnaW4oKSwgX194
LmVuZCgpKTsKICB9CiAgdm9pZCBzcGxpY2UoaXRlcmF0b3IgX19wb3NpdGlvbiwgbGlzdCYsIGl0
ZXJhdG9yIF9faSkgewogICAgaXRlcmF0b3IgX19qID0gX19pOwogICAgKytfX2o7CiAgICBpZiAo
X19wb3NpdGlvbiA9PSBfX2kgfHwgX19wb3NpdGlvbiA9PSBfX2opIHJldHVybjsKICAgIHRyYW5z
ZmVyKF9fcG9zaXRpb24sIF9faSwgX19qKTsKICB9CiAgdm9pZCBzcGxpY2UoaXRlcmF0b3IgX19w
b3NpdGlvbiwgbGlzdCYsIGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCkgewogICAg
aWYgKF9fZmlyc3QgIT0gX19sYXN0KSAKICAgICAgdHJhbnNmZXIoX19wb3NpdGlvbiwgX19maXJz
dCwgX19sYXN0KTsKICB9CiAgdm9pZCByZW1vdmUoY29uc3QgX1RwJiBfX3ZhbHVlKTsKICB2b2lk
IHVuaXF1ZSgpOwogIHZvaWQgbWVyZ2UobGlzdCYgX194KTsKICB2b2lkIHJldmVyc2UoKTsKICB2
b2lkIHNvcnQoKTsKCgogIHRlbXBsYXRlIDxjbGFzcyBfUHJlZGljYXRlPiB2b2lkIHJlbW92ZV9p
ZihfUHJlZGljYXRlKTsKICB0ZW1wbGF0ZSA8Y2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4gdm9pZCB1
bmlxdWUoX0JpbmFyeVByZWRpY2F0ZSk7CiAgdGVtcGxhdGUgPGNsYXNzIF9TdHJpY3RXZWFrT3Jk
ZXJpbmc+IHZvaWQgbWVyZ2UobGlzdCYsIF9TdHJpY3RXZWFrT3JkZXJpbmcpOwogIHRlbXBsYXRl
IDxjbGFzcyBfU3RyaWN0V2Vha09yZGVyaW5nPiB2b2lkIHNvcnQoX1N0cmljdFdlYWtPcmRlcmlu
Zyk7CgoKICBmcmllbmQgYm9vbCBvcGVyYXRvcj09IDw+ICAoCiAgICBjb25zdCBsaXN0JiBfX3gs
IGNvbnN0IGxpc3QmIF9feSk7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+
CmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgbGlzdDxfVHAsX0FsbG9jPiYgX194LAogICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3Q8X1RwLF9BbGxvYz4mIF9feSkKewogIHR5cGVk
ZWYgdHlwZW5hbWUgbGlzdDxfVHAsX0FsbG9jPjo6X05vZGUgX05vZGU7CiAgX05vZGUqIF9fZTEg
PSBfX3guX01fbm9kZTsKICBfTm9kZSogX19lMiA9IF9feS5fTV9ub2RlOwogIF9Ob2RlKiBfX24x
ID0gKF9Ob2RlKikgX19lMS0+X01fbmV4dDsKICBfTm9kZSogX19uMiA9IChfTm9kZSopIF9fZTIt
Pl9NX25leHQ7CiAgZm9yICggOyBfX24xICE9IF9fZTEgJiYgX19uMiAhPSBfX2UyIDsKICAgICAg
ICAgIF9fbjEgPSAoX05vZGUqKSBfX24xLT5fTV9uZXh0LCBfX24yID0gKF9Ob2RlKikgX19uMi0+
X01fbmV4dCkKICAgIGlmIChfX24xLT5fTV9kYXRhICE9IF9fbjItPl9NX2RhdGEpCiAgICAgIHJl
dHVybiBmYWxzZTsKICByZXR1cm4gX19uMSA9PSBfX2UxICYmIF9fbjIgPT0gX19lMjsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgppbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29u
c3QgbGlzdDxfVHAsX0FsbG9jPiYgX194LAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlz
dDxfVHAsX0FsbG9jPiYgX195KQp7CiAgcmV0dXJuIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKF9f
eC5iZWdpbigpLCBfX3guZW5kKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
eS5iZWdpbigpLCBfX3kuZW5kKCkpOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9B
bGxvYz4KaW5saW5lIHZvaWQgCnN3YXAobGlzdDxfVHAsIF9BbGxvYz4mIF9feCwgbGlzdDxfVHAs
IF9BbGxvYz4mIF9feSkKewogIF9feC5zd2FwKF9feSk7Cn0KCgoKCgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwLCBjbGFzcyBfQWxsb2M+IHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyPgp2b2lkIApsaXN0
PF9UcCwgX0FsbG9jPjo6X01faW5zZXJ0X2Rpc3BhdGNoKGl0ZXJhdG9yIF9fcG9zaXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlciBfX2ZpcnN0LCBf
SW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2ZhbHNlX3R5cGUpCnsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAg
ICBpbnNlcnQoX19wb3NpdGlvbiwgKl9fZmlyc3QpOwp9CgojIDU4MiAiL3Vzci9sb2NhbC9saWIv
Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9zdGxfbGlzdC5oIiAzCgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgp2
b2lkIApsaXN0PF9UcCwgX0FsbG9jPjo6aW5zZXJ0KGl0ZXJhdG9yIF9fcG9zaXRpb24sIHNpemVf
dHlwZSBfX24sIGNvbnN0IF9UcCYgX194KQp7CiAgZm9yICggOyBfX24gPiAwOyAtLV9fbikKICAg
IGluc2VydChfX3Bvc2l0aW9uLCBfX3gpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBf
QWxsb2M+Cmxpc3Q8X1RwLF9BbGxvYz46Oml0ZXJhdG9yIGxpc3Q8X1RwLCBfQWxsb2M+OjplcmFz
ZShpdGVyYXRvciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGl0ZXJhdG9yIF9fbGFzdCkKewogIHdoaWxlIChfX2ZpcnN0ICE9IF9f
bGFzdCkKICAgIGVyYXNlKF9fZmlyc3QrKyk7CiAgcmV0dXJuIF9fbGFzdDsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgp2b2lkIGxpc3Q8X1RwLCBfQWxsb2M+OjpyZXNpemUo
c2l6ZV90eXBlIF9fbmV3X3NpemUsIGNvbnN0IF9UcCYgX194KQp7CiAgaXRlcmF0b3IgX19pID0g
YmVnaW4oKTsKICBzaXplX3R5cGUgX19sZW4gPSAwOwogIGZvciAoIDsgX19pICE9IGVuZCgpICYm
IF9fbGVuIDwgX19uZXdfc2l6ZTsgKytfX2ksICsrX19sZW4pCiAgICA7CiAgaWYgKF9fbGVuID09
IF9fbmV3X3NpemUpCiAgICBlcmFzZShfX2ksIGVuZCgpKTsKICBlbHNlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICBpbnNlcnQoZW5kKCksIF9fbmV3X3NpemUgLSBfX2xlbiwgX194KTsK
fQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgpsaXN0PF9UcCwgX0FsbG9jPiYg
bGlzdDxfVHAsIF9BbGxvYz46Om9wZXJhdG9yPShjb25zdCBsaXN0PF9UcCwgX0FsbG9jPiYgX194
KQp7CiAgaWYgKHRoaXMgIT0gJl9feCkgewogICAgaXRlcmF0b3IgX19maXJzdDEgPSBiZWdpbigp
OwogICAgaXRlcmF0b3IgX19sYXN0MSA9IGVuZCgpOwogICAgY29uc3RfaXRlcmF0b3IgX19maXJz
dDIgPSBfX3guYmVnaW4oKTsKICAgIGNvbnN0X2l0ZXJhdG9yIF9fbGFzdDIgPSBfX3guZW5kKCk7
CiAgICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKSAK
ICAgICAgKl9fZmlyc3QxKysgPSAqX19maXJzdDIrKzsKICAgIGlmIChfX2ZpcnN0MiA9PSBfX2xh
c3QyKQogICAgICBlcmFzZShfX2ZpcnN0MSwgX19sYXN0MSk7CiAgICBlbHNlCiAgICAgIGluc2Vy
dChfX2xhc3QxLCBfX2ZpcnN0MiwgX19sYXN0Mik7CiAgfQogIHJldHVybiAqdGhpczsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgp2b2lkIGxpc3Q8X1RwLCBfQWxsb2M+Ojph
c3NpZ24oc2l6ZV90eXBlIF9fbiwgY29uc3QgX1RwJiBfX3ZhbCkgewogIGl0ZXJhdG9yIF9faSA9
IGJlZ2luKCk7CiAgZm9yICggOyBfX2kgIT0gZW5kKCkgJiYgX19uID4gMDsgKytfX2ksIC0tX19u
KQogICAgKl9faSA9IF9fdmFsOwogIGlmIChfX24gPiAwKQogICAgaW5zZXJ0KGVuZCgpLCBfX24s
IF9fdmFsKTsKICBlbHNlCiAgICBlcmFzZShfX2ksIGVuZCgpKTsKfQoKCgp0ZW1wbGF0ZSA8Y2xh
c3MgX1RwLCBjbGFzcyBfQWxsb2M+IHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyPgp2b2lkCmxp
c3Q8X1RwLCBfQWxsb2M+OjpfTV9hc3NpZ25fZGlzcGF0Y2goX0lucHV0SXRlciBfX2ZpcnN0Miwg
X0lucHV0SXRlciBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fZmFsc2VfdHlwZSkKewogIGl0ZXJhdG9yIF9fZmlyc3QxID0gYmVnaW4oKTsKICBpdGVyYXRv
ciBfX2xhc3QxID0gZW5kKCk7CiAgZm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmly
c3QyICE9IF9fbGFzdDI7ICsrX19maXJzdDEsICsrX19maXJzdDIpCiAgICAqX19maXJzdDEgPSAq
X19maXJzdDI7CiAgaWYgKF9fZmlyc3QyID09IF9fbGFzdDIpCiAgICBlcmFzZShfX2ZpcnN0MSwg
X19sYXN0MSk7CiAgZWxzZQogICAgaW5zZXJ0KF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyKTsK
fQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CnZvaWQgbGlzdDxfVHAsIF9B
bGxvYz46OnJlbW92ZShjb25zdCBfVHAmIF9fdmFsdWUpCnsKICBpdGVyYXRvciBfX2ZpcnN0ID0g
YmVnaW4oKTsKICBpdGVyYXRvciBfX2xhc3QgPSBlbmQoKTsKICB3aGlsZSAoX19maXJzdCAhPSBf
X2xhc3QpIHsKICAgIGl0ZXJhdG9yIF9fbmV4dCA9IF9fZmlyc3Q7CiAgICArK19fbmV4dDsKICAg
IGlmICgqX19maXJzdCA9PSBfX3ZhbHVlKSBlcmFzZShfX2ZpcnN0KTsKICAgIF9fZmlyc3QgPSBf
X25leHQ7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CnZvaWQgbGlz
dDxfVHAsIF9BbGxvYz46OnVuaXF1ZSgpCnsKICBpdGVyYXRvciBfX2ZpcnN0ID0gYmVnaW4oKTsK
ICBpdGVyYXRvciBfX2xhc3QgPSBlbmQoKTsKICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVy
bjsKICBpdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwogIHdoaWxlICgrK19fbmV4dCAhPSBfX2xh
c3QpIHsKICAgIGlmICgqX19maXJzdCA9PSAqX19uZXh0KQogICAgICBlcmFzZShfX25leHQpOwog
ICAgZWxzZQogICAgICBfX2ZpcnN0ID0gX19uZXh0OwogICAgX19uZXh0ID0gX19maXJzdDsKICB9
Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4Kdm9pZCBsaXN0PF9UcCwgX0Fs
bG9jPjo6bWVyZ2UobGlzdDxfVHAsIF9BbGxvYz4mIF9feCkKewogIGl0ZXJhdG9yIF9fZmlyc3Qx
ID0gYmVnaW4oKTsKICBpdGVyYXRvciBfX2xhc3QxID0gZW5kKCk7CiAgaXRlcmF0b3IgX19maXJz
dDIgPSBfX3guYmVnaW4oKTsKICBpdGVyYXRvciBfX2xhc3QyID0gX194LmVuZCgpOwogIHdoaWxl
IChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiAgICBpZiAoKl9f
Zmlyc3QyIDwgKl9fZmlyc3QxKSB7CiAgICAgIGl0ZXJhdG9yIF9fbmV4dCA9IF9fZmlyc3QyOwog
ICAgICB0cmFuc2ZlcihfX2ZpcnN0MSwgX19maXJzdDIsICsrX19uZXh0KTsKICAgICAgX19maXJz
dDIgPSBfX25leHQ7CiAgICB9CiAgICBlbHNlCiAgICAgICsrX19maXJzdDE7CiAgaWYgKF9fZmly
c3QyICE9IF9fbGFzdDIpIHRyYW5zZmVyKF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgp2b2lkIGxpc3Q8X1RwLCBfQWxsb2M+
OjpyZXZlcnNlKCkgCnsKICAgCiAgaWYgKF9NX25vZGUtPl9NX25leHQgIT0gX01fbm9kZSAmJgog
ICAgICAoKF9Ob2RlKikgKF9NX25vZGUtPl9NX25leHQpKS0+X01fbmV4dCAhPSBfTV9ub2RlKSB7
CiAgICBpdGVyYXRvciBfX2ZpcnN0ID0gYmVnaW4oKTsKICAgICsrX19maXJzdDsKICAgIHdoaWxl
IChfX2ZpcnN0ICE9IGVuZCgpKSB7CiAgICAgIGl0ZXJhdG9yIF9fb2xkID0gX19maXJzdDsKICAg
ICAgKytfX2ZpcnN0OwogICAgICB0cmFuc2ZlcihiZWdpbigpLCBfX29sZCwgX19maXJzdCk7CiAg
ICB9CiAgfQp9ICAgIAoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgp2b2lkIGxp
c3Q8X1RwLCBfQWxsb2M+Ojpzb3J0KCkKewogICAKICBpZiAoX01fbm9kZS0+X01fbmV4dCAhPSBf
TV9ub2RlICYmCiAgICAgICgoX05vZGUqKSAoX01fbm9kZS0+X01fbmV4dCkpLT5fTV9uZXh0ICE9
IF9NX25vZGUpIHsKICAgIGxpc3Q8X1RwLCBfQWxsb2M+IF9fY2Fycnk7CiAgICBsaXN0PF9UcCwg
X0FsbG9jPiBfX2NvdW50ZXJbNjRdOwogICAgaW50IF9fZmlsbCA9IDA7CiAgICB3aGlsZSAoIWVt
cHR5KCkpIHsKICAgICAgX19jYXJyeS5zcGxpY2UoX19jYXJyeS5iZWdpbigpLCAqdGhpcywgYmVn
aW4oKSk7CiAgICAgIGludCBfX2kgPSAwOwogICAgICB3aGlsZShfX2kgPCBfX2ZpbGwgJiYgIV9f
Y291bnRlcltfX2ldLmVtcHR5KCkpIHsKICAgICAgICBfX2NvdW50ZXJbX19pXS5tZXJnZShfX2Nh
cnJ5KTsKICAgICAgICBfX2NhcnJ5LnN3YXAoX19jb3VudGVyW19faSsrXSk7CiAgICAgIH0KICAg
ICAgX19jYXJyeS5zd2FwKF9fY291bnRlcltfX2ldKTsgICAgICAgICAKICAgICAgaWYgKF9faSA9
PSBfX2ZpbGwpICsrX19maWxsOwogICAgfSAKCiAgICBmb3IgKGludCBfX2kgPSAxOyBfX2kgPCBf
X2ZpbGw7ICsrX19pKQogICAgICBfX2NvdW50ZXJbX19pXS5tZXJnZShfX2NvdW50ZXJbX19pLTFd
KTsKICAgIHN3YXAoX19jb3VudGVyW19fZmlsbC0xXSk7CiAgfQp9CgoKCnRlbXBsYXRlIDxjbGFz
cyBfVHAsIGNsYXNzIF9BbGxvYz4gdGVtcGxhdGUgPGNsYXNzIF9QcmVkaWNhdGU+CnZvaWQgbGlz
dDxfVHAsIF9BbGxvYz46OnJlbW92ZV9pZihfUHJlZGljYXRlIF9fcHJlZCkKewogIGl0ZXJhdG9y
IF9fZmlyc3QgPSBiZWdpbigpOwogIGl0ZXJhdG9yIF9fbGFzdCA9IGVuZCgpOwogIHdoaWxlIChf
X2ZpcnN0ICE9IF9fbGFzdCkgewogICAgaXRlcmF0b3IgX19uZXh0ID0gX19maXJzdDsKICAgICsr
X19uZXh0OwogICAgaWYgKF9fcHJlZCgqX19maXJzdCkpIGVyYXNlKF9fZmlyc3QpOwogICAgX19m
aXJzdCA9IF9fbmV4dDsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4g
dGVtcGxhdGUgPGNsYXNzIF9CaW5hcnlQcmVkaWNhdGU+CnZvaWQgbGlzdDxfVHAsIF9BbGxvYz46
OnVuaXF1ZShfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5X3ByZWQpCnsKICBpdGVyYXRvciBfX2Zp
cnN0ID0gYmVnaW4oKTsKICBpdGVyYXRvciBfX2xhc3QgPSBlbmQoKTsKICBpZiAoX19maXJzdCA9
PSBfX2xhc3QpIHJldHVybjsKICBpdGVyYXRvciBfX25leHQgPSBfX2ZpcnN0OwogIHdoaWxlICgr
K19fbmV4dCAhPSBfX2xhc3QpIHsKICAgIGlmIChfX2JpbmFyeV9wcmVkKCpfX2ZpcnN0LCAqX19u
ZXh0KSkKICAgICAgZXJhc2UoX19uZXh0KTsKICAgIGVsc2UKICAgICAgX19maXJzdCA9IF9fbmV4
dDsKICAgIF9fbmV4dCA9IF9fZmlyc3Q7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFz
cyBfQWxsb2M+IHRlbXBsYXRlIDxjbGFzcyBfU3RyaWN0V2Vha09yZGVyaW5nPgp2b2lkIGxpc3Q8
X1RwLCBfQWxsb2M+OjptZXJnZShsaXN0PF9UcCwgX0FsbG9jPiYgX194LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfU3RyaWN0V2Vha09yZGVyaW5nIF9fY29tcCkKewogIGl0ZXJhdG9y
IF9fZmlyc3QxID0gYmVnaW4oKTsKICBpdGVyYXRvciBfX2xhc3QxID0gZW5kKCk7CiAgaXRlcmF0
b3IgX19maXJzdDIgPSBfX3guYmVnaW4oKTsKICBpdGVyYXRvciBfX2xhc3QyID0gX194LmVuZCgp
OwogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiAg
ICBpZiAoX19jb21wKCpfX2ZpcnN0MiwgKl9fZmlyc3QxKSkgewogICAgICBpdGVyYXRvciBfX25l
eHQgPSBfX2ZpcnN0MjsKICAgICAgdHJhbnNmZXIoX19maXJzdDEsIF9fZmlyc3QyLCArK19fbmV4
dCk7CiAgICAgIF9fZmlyc3QyID0gX19uZXh0OwogICAgfQogICAgZWxzZQogICAgICArK19fZmly
c3QxOwogIGlmIChfX2ZpcnN0MiAhPSBfX2xhc3QyKSB0cmFuc2ZlcihfX2xhc3QxLCBfX2ZpcnN0
MiwgX19sYXN0Mik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4gdGVtcGxh
dGUgPGNsYXNzIF9TdHJpY3RXZWFrT3JkZXJpbmc+CnZvaWQgbGlzdDxfVHAsIF9BbGxvYz46OnNv
cnQoX1N0cmljdFdlYWtPcmRlcmluZyBfX2NvbXApCnsKICAgCiAgaWYgKF9NX25vZGUtPl9NX25l
eHQgIT0gX01fbm9kZSAmJgogICAgICAoKF9Ob2RlKikgKF9NX25vZGUtPl9NX25leHQpKS0+X01f
bmV4dCAhPSBfTV9ub2RlKSB7CiAgICBsaXN0PF9UcCwgX0FsbG9jPiBfX2NhcnJ5OwogICAgbGlz
dDxfVHAsIF9BbGxvYz4gX19jb3VudGVyWzY0XTsKICAgIGludCBfX2ZpbGwgPSAwOwogICAgd2hp
bGUgKCFlbXB0eSgpKSB7CiAgICAgIF9fY2Fycnkuc3BsaWNlKF9fY2FycnkuYmVnaW4oKSwgKnRo
aXMsIGJlZ2luKCkpOwogICAgICBpbnQgX19pID0gMDsKICAgICAgd2hpbGUoX19pIDwgX19maWxs
ICYmICFfX2NvdW50ZXJbX19pXS5lbXB0eSgpKSB7CiAgICAgICAgX19jb3VudGVyW19faV0ubWVy
Z2UoX19jYXJyeSwgX19jb21wKTsKICAgICAgICBfX2NhcnJ5LnN3YXAoX19jb3VudGVyW19faSsr
XSk7CiAgICAgIH0KICAgICAgX19jYXJyeS5zd2FwKF9fY291bnRlcltfX2ldKTsgICAgICAgICAK
ICAgICAgaWYgKF9faSA9PSBfX2ZpbGwpICsrX19maWxsOwogICAgfSAKCiAgICBmb3IgKGludCBf
X2kgPSAxOyBfX2kgPCBfX2ZpbGw7ICsrX19pKSAKICAgICAgX19jb3VudGVyW19faV0ubWVyZ2Uo
X19jb3VudGVyW19faS0xXSwgX19jb21wKTsKICAgIHN3YXAoX19jb3VudGVyW19fZmlsbC0xXSk7
CiAgfQp9CgoKCgoKCgoKICAKCgoKIAogCiAKIyAzNCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9z
cGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9saXN0
IiAyIDMKCgoKCiAKIAogCiMgMTQgIi4uL1NyY1NoYXJlZC9FbVN0cmVhbS5oIiAyCgoKCgogCgpl
bnVtIFN0cmVhbUZyb21UeXBlCnsKCWtTdHJlYW1Gcm9tU3RhcnQgPSAxLAoJa1N0cmVhbUZyb21F
bmQsCglrU3RyZWFtRnJvbU1hcmtlcgp9OwoKIAoKY2xhc3MgRW1TdHJlYW0KewoJcHVibGljOgoJ
CQkJCQkJCUVtU3RyZWFtCQkodm9pZCk7CgkJdmlydHVhbAkJCQkJfkVtU3RyZWFtCQkodm9pZCk7
CgoJCXZpcnR1YWwgdm9pZAkJCVNldE1hcmtlcgkJKGludDMyCQkJaW5PZmZzZXQsCgkJCQkJCQkJ
CQkJCSBTdHJlYW1Gcm9tVHlwZQlpbkZyb21XaGVyZSk7CgkJdmlydHVhbCBpbnQzMgkJCUdldE1h
cmtlcgkJKHZvaWQpIGNvbnN0OwoKCQl2aXJ0dWFsIHZvaWQJCQlTZXRMZW5ndGgJCShpbnQzMgkJ
CWluTGVuZ3RoKTsKCQl2aXJ0dWFsIGludDMyCQkJR2V0TGVuZ3RoCQkodm9pZCkgY29uc3Q7CgoJ
CUJvb2wJCQkJCUF0RW5kCQkJKHZvaWQpIGNvbnN0CgkJCQkJCQkJewoJCQkJCQkJCQlyZXR1cm4g
R2V0TWFya2VyICgpID49IEdldExlbmd0aCAoKTsKCQkJCQkJCQl9CgoJCQkJCQkgCgoJCXZpcnR1
YWwgRXJyQ29kZQkJCVB1dEJ5dGVzCQkoY29uc3Qgdm9pZCoJaW5CdWZmZXIsCgkJCQkJCQkJCQkJ
CSBpbnQzMgkJCWlvQnl0ZUNvdW50KTsKCgkJRW1TdHJlYW0mCQkJCW9wZXJhdG9yIDw8CQkoY29u
c3QgY2hhciogaW5TdHJpbmcpOwoJCUVtU3RyZWFtJgkJCQlvcGVyYXRvciA8PAkJKGNvbnN0IHN0
cmluZyYgaW5TdHJpbmcpOwoJCUVtU3RyZWFtJgkJCQlvcGVyYXRvciA8PAkJKGludDggaW5OdW0p
OwoJCUVtU3RyZWFtJgkJCQlvcGVyYXRvciA8PAkJKHVpbnQ4IGluTnVtKTsKCQlFbVN0cmVhbSYJ
CQkJb3BlcmF0b3IgPDwJCShjaGFyIGluQ2hhcik7CgkJRW1TdHJlYW0mCQkJCW9wZXJhdG9yIDw8
CQkoaW50MTYgaW5OdW0pOwoJCUVtU3RyZWFtJgkJCQlvcGVyYXRvciA8PAkJKHVpbnQxNiBpbk51
bSk7CgkJRW1TdHJlYW0mCQkJCW9wZXJhdG9yIDw8CQkoaW50MzIgaW5OdW0pOwoJCUVtU3RyZWFt
JgkJCQlvcGVyYXRvciA8PAkJKHVpbnQzMiBpbk51bSk7CgkJRW1TdHJlYW0mCQkJCW9wZXJhdG9y
IDw8CQkoaW50NjQgaW5OdW0pOwoJCUVtU3RyZWFtJgkJCQlvcGVyYXRvciA8PAkJKHVpbnQ2NCBp
bk51bSk7CgkJRW1TdHJlYW0mCQkJCW9wZXJhdG9yIDw8CQkoYm9vbCBpbkJvb2wpOwoKCQkJCQkJ
IAoKCQl2aXJ0dWFsIEVyckNvZGUJCQlHZXRCeXRlcwkJKHZvaWQqCW91dEJ1ZmZlciwKCQkJCQkJ
CQkJCQkJIGludDMyCWlvQnl0ZUNvdW50KTsKCQlpbnQzMgkJCQkJUGVla0RhdGEJCSh2b2lkKglv
dXRCdXR0ZXIsCgkJCQkJCQkJCQkJCSBpbnQzMglpbkJ5dGVDb3VudCk7CgoJCUVtU3RyZWFtJgkJ
CQlvcGVyYXRvciA+PgkJKGNoYXIqIG91dFN0cmluZyk7CgkJRW1TdHJlYW0mCQkJCW9wZXJhdG9y
ID4+CQkoc3RyaW5nJiBvdXRTdHJpbmcpOwoJCUVtU3RyZWFtJgkJCQlvcGVyYXRvciA+PgkJKGlu
dDggJm91dE51bSk7CgkJRW1TdHJlYW0mCQkJCW9wZXJhdG9yID4+CQkodWludDggJm91dE51bSk7
CgkJRW1TdHJlYW0mCQkJCW9wZXJhdG9yID4+CQkoY2hhciAmb3V0Q2hhcik7CgkJRW1TdHJlYW0m
CQkJCW9wZXJhdG9yID4+CQkoaW50MTYgJm91dE51bSk7CgkJRW1TdHJlYW0mCQkJCW9wZXJhdG9y
ID4+CQkodWludDE2ICZvdXROdW0pOwoJCUVtU3RyZWFtJgkJCQlvcGVyYXRvciA+PgkJKGludDMy
ICZvdXROdW0pOwoJCUVtU3RyZWFtJgkJCQlvcGVyYXRvciA+PgkJKHVpbnQzMiAmb3V0TnVtKTsK
CQlFbVN0cmVhbSYJCQkJb3BlcmF0b3IgPj4JCShpbnQ2NCAmb3V0TnVtKTsKCQlFbVN0cmVhbSYJ
CQkJb3BlcmF0b3IgPj4JCSh1aW50NjQgJm91dE51bSk7CgkJRW1TdHJlYW0mCQkJCW9wZXJhdG9y
ID4+CQkoYm9vbCAmb3V0Qm9vbCk7CgoJCXRlbXBsYXRlIDxjbGFzcyBUPgoJCUVtU3RyZWFtJgkJ
CQlvcGVyYXRvciA+PgkJKGRlcXVlPFQ+JiBjb250YWluZXIpCgkJCQkJCQkJewoJCQkJCQkJCQlJ
bnQzMgludW1FbGVtZW50czsKCQkJCQkJCQkJKnRoaXMgPj4gbnVtRWxlbWVudHM7CgoJCQkJCQkJ
CQljb250YWluZXIucmVzaXplIChudW1FbGVtZW50cyk7CgoJCQkJCQkJCQlkZXF1ZTxUPjo6aXRl
cmF0b3IJaXRlciA9IGNvbnRhaW5lci5iZWdpbiAoKTsKCQkJCQkJCQkJd2hpbGUgKGl0ZXIgIT0g
Y29udGFpbmVyLmVuZCAoKSkKCQkJCQkJCQkJewoJCQkJCQkJCQkJKnRoaXMgPj4gKml0ZXI7CgkJ
CQkJCQkJCQkrK2l0ZXI7CgkJCQkJCQkJCX0KCgkJCQkJCQkJCXJldHVybiAqdGhpczsKCQkJCQkJ
CQl9CgoJCXRlbXBsYXRlIDxjbGFzcyBUPgoJCUVtU3RyZWFtJgkJCQlvcGVyYXRvciA+PgkJKGxp
c3Q8VD4mIGNvbnRhaW5lcikKCQkJCQkJCQl7CgkJCQkJCQkJCUludDMyCW51bUVsZW1lbnRzOwoJ
CQkJCQkJCQkqdGhpcyA+PiBudW1FbGVtZW50czsKCgkJCQkJCQkJCWNvbnRhaW5lci5yZXNpemUg
KG51bUVsZW1lbnRzKTsKCgkJCQkJCQkJCWxpc3Q8VD46Oml0ZXJhdG9yCWl0ZXIgPSBjb250YWlu
ZXIuYmVnaW4gKCk7CgkJCQkJCQkJCXdoaWxlIChpdGVyICE9IGNvbnRhaW5lci5lbmQgKCkpCgkJ
CQkJCQkJCXsKCQkJCQkJCQkJCSp0aGlzID4+ICppdGVyOwoJCQkJCQkJCQkJKytpdGVyOwoJCQkJ
CQkJCQl9CgoJCQkJCQkJCQlyZXR1cm4gKnRoaXM7CgkJCQkJCQkJfQoKCQl0ZW1wbGF0ZSA8Y2xh
c3MgVD4KCQlFbVN0cmVhbSYJCQkJb3BlcmF0b3IgPj4JCSh2ZWN0b3I8VD4mIGNvbnRhaW5lcikK
CQkJCQkJCQl7CgkJCQkJCQkJCUludDMyCW51bUVsZW1lbnRzOwoJCQkJCQkJCQkqdGhpcyA+PiBu
dW1FbGVtZW50czsKCgkJCQkJCQkJCWNvbnRhaW5lci5yZXNpemUgKG51bUVsZW1lbnRzKTsKCgkJ
CQkJCQkJCXZlY3RvcjxUPjo6aXRlcmF0b3IJaXRlciA9IGNvbnRhaW5lci5iZWdpbiAoKTsKCQkJ
CQkJCQkJd2hpbGUgKGl0ZXIgIT0gY29udGFpbmVyLmVuZCAoKSkKCQkJCQkJCQkJewoJCQkJCQkJ
CQkJKnRoaXMgPj4gKml0ZXI7CgkJCQkJCQkJCQkrK2l0ZXI7CgkJCQkJCQkJCX0KCgkJCQkJCQkJ
CXJldHVybiAqdGhpczsKCQkJCQkJCQl9CgoJCXRlbXBsYXRlIDxjbGFzcyBUPgoJCUVtU3RyZWFt
JgkJCQlvcGVyYXRvciA8PAkJKGNvbnN0IGRlcXVlPFQ+JiBjb250YWluZXIpCgkJCQkJCQkJewoJ
CQkJCQkJCQlJbnQzMgludW1FbGVtZW50cyA9IGNvbnRhaW5lci5zaXplICgpOwoKCQkJCQkJCQkJ
KnRoaXMgPDwgbnVtRWxlbWVudHM7CgoJCQkJCQkJCQlkZXF1ZTxUPjo6Y29uc3RfaXRlcmF0b3IJ
aXRlciA9IGNvbnRhaW5lci5iZWdpbiAoKTsKCQkJCQkJCQkJd2hpbGUgKGl0ZXIgIT0gY29udGFp
bmVyLmVuZCAoKSkKCQkJCQkJCQkJewoJCQkJCQkJCQkJKnRoaXMgPDwgKml0ZXI7CgkJCQkJCQkJ
CQkrK2l0ZXI7CgkJCQkJCQkJCX0KCgkJCQkJCQkJCXJldHVybiAqdGhpczsKCQkJCQkJCQl9CgoJ
CXRlbXBsYXRlIDxjbGFzcyBUPgoJCUVtU3RyZWFtJgkJCQlvcGVyYXRvciA8PAkJKGNvbnN0IGxp
c3Q8VD4mIGNvbnRhaW5lcikKCQkJCQkJCQl7CgkJCQkJCQkJCUludDMyCW51bUVsZW1lbnRzID0g
Y29udGFpbmVyLnNpemUgKCk7CgoJCQkJCQkJCQkqdGhpcyA8PCBudW1FbGVtZW50czsKCgkJCQkJ
CQkJCWxpc3Q8VD46OmNvbnN0X2l0ZXJhdG9yCWl0ZXIgPSBjb250YWluZXIuYmVnaW4gKCk7CgkJ
CQkJCQkJCXdoaWxlIChpdGVyICE9IGNvbnRhaW5lci5lbmQgKCkpCgkJCQkJCQkJCXsKCQkJCQkJ
CQkJCSp0aGlzIDw8ICppdGVyOwoJCQkJCQkJCQkJKytpdGVyOwoJCQkJCQkJCQl9CgoJCQkJCQkJ
CQlyZXR1cm4gKnRoaXM7CgkJCQkJCQkJfQoKCQl0ZW1wbGF0ZSA8Y2xhc3MgVD4KCQlFbVN0cmVh
bSYJCQkJb3BlcmF0b3IgPDwJCShjb25zdCB2ZWN0b3I8VD4mIGNvbnRhaW5lcikKCQkJCQkJCQl7
CgkJCQkJCQkJCUludDMyCW51bUVsZW1lbnRzID0gY29udGFpbmVyLnNpemUgKCk7CgoJCQkJCQkJ
CQkqdGhpcyA8PCBudW1FbGVtZW50czsKCgkJCQkJCQkJCXZlY3RvcjxUPjo6Y29uc3RfaXRlcmF0
b3IJaXRlciA9IGNvbnRhaW5lci5iZWdpbiAoKTsKCQkJCQkJCQkJd2hpbGUgKGl0ZXIgIT0gY29u
dGFpbmVyLmVuZCAoKSkKCQkJCQkJCQkJewoJCQkJCQkJCQkJKnRoaXMgPDwgKml0ZXI7CgkJCQkJ
CQkJCQkrK2l0ZXI7CgkJCQkJCQkJCX0KCgkJCQkJCQkJCXJldHVybiAqdGhpczsKCQkJCQkJCQl9
CgoKCQkgCgkJIAoJCSAKCQkgCgoJCWludDMyCQkJCQlXcml0ZUNTdHJpbmcJKGNvbnN0IGNoYXIq
CWluU3RyaW5nKTsKCQlpbnQzMgkJCQkJUmVhZENTdHJpbmcJCShjaGFyKgkJCW91dFN0cmluZyk7
CgoJCWludDMyCQkJCQlXcml0ZVN0cmluZwkJKGNvbnN0IHN0cmluZyYJaW5TdHJpbmcpOwoJCWlu
dDMyCQkJCQlSZWFkU3RyaW5nCQkoc3RyaW5nJgkJb3V0U3RyaW5nKTsKCgkJaW50CQkJCQkJUHJp
bnRGCQkJKGNvbnN0IGNoYXIqIGZtdCwgLi4uKTsKCQlpbnQJCQkJCQlTY2FuRgkJCShjb25zdCBj
aGFyKiBmbXQsIC4uLik7CgoJCWludAkJCQkJCVB1dEMJCQkoaW50KTsKCQlpbnQJCQkJCQlHZXRD
CQkJKHZvaWQpOwoKCQlpbnQJCQkJCQlQdXRTCQkJKGNvbnN0IGNoYXIqKTsKCQljaGFyKgkJCQkJ
R2V0UwkJCShjaGFyKiwgaW50IG4pOwoKCXByb3RlY3RlZDoKCQlpbnQzMgkJCQkJbU1hcmtlcjsK
CQlpbnQzMgkJCQkJbUxlbmd0aDsKfTsKCgoKCmlubGluZSBFbVN0cmVhbSYgb3BlcmF0b3IgPDwg
KEVtU3RyZWFtJiBzLCBjb25zdCBNZW1QdHImIHApCnsKCXMgPDwgKGVtdXB0cikgcDsKCglyZXR1
cm4gczsKfQoKaW5saW5lIEVtU3RyZWFtJiBvcGVyYXRvciA+PiAoRW1TdHJlYW0mIHMsIE1lbVB0
ciYgcCkKewoJZW11cHRyCXQ7CglzID4+IHQ7CgoJcCA9IChNZW1QdHIpIHQ7CgoJcmV0dXJuIHM7
Cn0KCmlubGluZSBFbVN0cmVhbSYgb3BlcmF0b3IgPDwgKEVtU3RyZWFtJiBzLCBjb25zdCBNZW1I
YW5kbGUmIGgpCnsKCXMgPDwgKGVtdXB0cikgaDsKCglyZXR1cm4gczsKfQoKaW5saW5lIEVtU3Ry
ZWFtJiBvcGVyYXRvciA+PiAoRW1TdHJlYW0mIHMsIE1lbUhhbmRsZSYgaCkKewoJZW11cHRyCXQ7
CglzID4+IHQ7CgoJaCA9IChNZW1IYW5kbGUpIHQ7CgoJcmV0dXJuIHM7Cn0KCgojIDM2NiAiLi4v
U3JjU2hhcmVkL0VtU3RyZWFtLmgiCgoKY2xhc3MgRW1TdHJlYW1CbG9jayA6IHB1YmxpYyBFbVN0
cmVhbQp7CglwdWJsaWM6CgkJCQkJCQkJRW1TdHJlYW1CbG9jawkodm9pZCosIGludDMyKTsKCQl2
aXJ0dWFsCQkJCQl+RW1TdHJlYW1CbG9jawkodm9pZCk7CgoJCXZpcnR1YWwgdm9pZAkJCVNldExl
bmd0aAkJKGludDMyCQkJaW5MZW5ndGgpOwoKCQl2aXJ0dWFsIEVyckNvZGUJCQlQdXRCeXRlcwkJ
KGNvbnN0IHZvaWQqCWluQnVmZmVyLAoJCQkJCQkJCQkJCQkgaW50MzIJCQlpb0J5dGVDb3VudCk7
CgkJdmlydHVhbCBFcnJDb2RlCQkJR2V0Qnl0ZXMJCSh2b2lkKgkJCW91dEJ1ZmZlciwKCQkJCQkJ
CQkJCQkJIGludDMyCQkJaW9CeXRlQ291bnQpOwoKCXByaXZhdGU6CgkJdm9pZCoJCQkJCWZEYXRh
Owp9OwoKCgoKIyAxNyAiLi4vU3JjU2hhcmVkL0NHcmVtbGlucy5oIiAyCgoKCmNsYXNzIFNlc3Np
b25GaWxlOwoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBnR3JlbWxpbk5leHQ7CgpjbGFzcyBH
cmVtbGlucwp7CnB1YmxpYzoKCQkJCUdyZW1saW5zKCk7CgkJCQl+R3JlbWxpbnMoKTsKCgl2b2lk
CQlOZXcoY29uc3QgR3JlbWxpbkluZm8mIGluZm8pOwoKCUJvb2xlYW4JCUlzSW5pdGlhbGl6ZWQo
KSBjb25zdDsKCXZvaWQJCUluaXRpYWxpemUoVUludDE2IG5ld051bWJlciA9IC0xLCBVSW50MzIg
dW50aWxTdGVwID0gLTEsIFVJbnQzMiBmaW5hbFZhbCA9IC0xKTsKCXZvaWQJCVJlc2V0ICh2b2lk
KTsKCgl2b2lkCQlTYXZlKFNlc3Npb25GaWxlICZmKTsKCUJvb2xlYW4JCUxvYWQoU2Vzc2lvbkZp
bGUgJmYpOwoKCXZvaWQJCVN0YXR1cyhVSW50MTYgKmN1cnJlbnROdW1iZXIsIFVJbnQzMiAqY3Vy
cmVudFN0ZXAsCgkJCQkJVUludDMyICpjdXJyZW50VW50aWwpOwoJQm9vbGVhbgkJU2V0U2VlZChV
SW50MzIgbmV3U2VlZCk7Cgl2b2lkCQlTZXRVbnRpbChVSW50MzIgbmV3VW50aWwpOwoJdm9pZAkJ
UmVzdG9yZUZpbmFsVW50aWwodm9pZCk7CgoJdm9pZCAJCVN0ZXAoKTsKCXZvaWQJCVJlc3VtZSgp
OwoJdm9pZAkJU3RvcCgpOwoKCUJvb2xlYW4JCUdldEZha2VFdmVudCgpOwoJdm9pZAkJR2V0UGVu
TW92ZW1lbnQoKTsKCUJvb2xlYW4gCVNlbmRDaGFyc1RvVHlwZSgpOwoKCXZvaWQJCUJ1bXBDb3Vu
dGVyKCk7CgoJVUludDMyCUdldFN0YXJ0VGltZSgpCQl7IHJldHVybiBncmVtbGluU3RhcnRUaW1l
OyB9CglVSW50MzIJR2V0U3RvcFRpbWUoKQkJeyByZXR1cm4gZ3JlbWxpblN0b3BUaW1lOyAgfQoK
CnByaXZhdGU6CgoJVUludDE2CQlrZXlQcm9iYWJpbGl0aWVzU3VtOwkgCiAKCUludDE2CQlsYXN0
UG9pbnRYLCBsYXN0UG9pbnRZOwoJQm9vbGVhbgkJbGFzdFBlbkRvd247CQkJIAoJVUludDE2CQlu
dW1iZXI7CQkJCQkgCglVSW50MzIJCWNvdW50ZXI7CQkJCSAKCVVJbnQzMgkJdW50aWw7CQkJCQkg
CglVSW50MzIJCWZpbmFsVW50aWw7CQkJCSAKCVVJbnQzMgkJc2F2ZVVudGlsOwoJQm9vbGVhbgkJ
aW5pdGVkOwkJCQkJIAoJQm9vbGVhbgkJY2F0Y2hVcDsJCQkJIAoJQm9vbGVhbgkJbmVlZFBlblVw
OwkJCQkgCgljaGFyCQljaGFyc1RvVHlwZVsyMDQ4XTsJCSAKCglVSW50MzIJCWdyZW1saW5TdGFy
dFRpbWU7CglVSW50MzIJCWdyZW1saW5TdG9wVGltZTsKfTsKCgoKZXh0ZXJuICJDIiB7CgoKZXh0
ZXJuIHZvaWQgR3JlbWxpbnNTZW5kRXZlbnQgKHZvaWQpOwoKZXh0ZXJuIHZvaWQgR3JlbWxpbnNQ
cm9jZXNzUGFja2V0ICh2b2lkKiBwa3RCb2R5UCk7CgoKfQoKCgoKIyAxOSAiLi4vU3JjU2hhcmVk
L0hvcmRlcy5oIiAyCgoKCmVudW0gSG9yZGVGaWxlVHlwZQp7CglrSG9yZGVQcm9ncmVzc0ZpbGUJ
CT0gMHgwMCwKCWtIb3JkZVJvb3RGaWxlCQkJPSAweDAxLAoJa0hvcmRlU3VzcGVuZEZpbGUJCT0g
MHgwMiwKCWtIb3JkZUV2ZW50RmlsZQkJCT0gMHgwMywKCWtIb3JkZU1pbmltYWxFdmVudEZpbGUJ
PSAweDA0LAoJa0hvcmRlQXV0b0N1cnJlbnRGaWxlCT0gMHgwNQp9OwoKCgogCiAKCmNsYXNzIFNl
c3Npb25GaWxlOwoKIApleHRlcm4JbG9uZwkJCQlnR3JlbWxpblNhdmVGcmVxdWVuY3k7CmV4dGVy
bglEYXRhYmFzZUluZm9MaXN0CWdHcmVtbGluQXBwTGlzdDsKCmV4dGVybglCb29sCQkJCWdXYXJu
aW5nSGFwcGVuZWQ7CmV4dGVybglCb29sCQkJCWdFcnJvckhhcHBlbmVkOwoKY2xhc3MgSG9yZGVz
CnsKCXB1YmxpYzoKCQlzdGF0aWMgdm9pZAkJCQlJbml0aWFsaXplCSh2b2lkKTsKCQlzdGF0aWMg
dm9pZAkJCQlSZXNldAkJKHZvaWQpOwoJCXN0YXRpYyB2b2lkCQkJCVNhdmUJCShTZXNzaW9uRmls
ZSYpOwoJCXN0YXRpYyB2b2lkCQkJCUxvYWQJCShTZXNzaW9uRmlsZSYpOwoJCXN0YXRpYyB2b2lk
CQkJCURpc3Bvc2UJCSh2b2lkKTsKCgkJc3RhdGljIHZvaWQJCQkJTmV3CQkJCQkJKGNvbnN0IEhv
cmRlSW5mbyYgaW5mbyk7CgoJCSAKCQkgCgoJCXN0YXRpYyB2b2lkCQkJCU5ld0dyZW1saW4JCQkJ
KGNvbnN0IEdyZW1saW5JbmZvJiBpbmZvKTsKCgkJc3RhdGljIHZvaWQJCQkJU2F2ZVNlYXJjaFBy
b2dyZXNzCQkodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJUmVzdW1lU2VhcmNoUHJvZ3Jlc3MJKGNv
bnN0IEVtRmlsZVJlZiYgZik7CgkJCgkJc3RhdGljIEJvb2wJCQkJSXNPbgkJCQkJKHZvaWQpOwoJ
CXN0YXRpYyBCb29sCQkJCUluU2luZ2xlR3JlbWxpbk1vZGUJCSh2b2lkKTsKCQlzdGF0aWMgQm9v
bAkJCQlRdWl0V2hlbkRvbmUJCQkodm9pZCk7CgoJCXN0YXRpYyBCb29sCQkJCUNhbk5ldwkJCQkJ
KHZvaWQpOwoJCXN0YXRpYyBCb29sCQkJCUNhblN1c3BlbmQJCQkJKHZvaWQpOwoJCXN0YXRpYyBC
b29sCQkJCUNhblN0ZXAJCQkJCSh2b2lkKTsKCQlzdGF0aWMgQm9vbAkJCQlDYW5SZXN1bWUJCQkJ
KHZvaWQpOwoJCXN0YXRpYyBCb29sCQkJCUNhblN0b3AJCQkJCSh2b2lkKTsKCgkJc3RhdGljIHZv
aWQJCQkJU3RhdHVzCQkJCQkodW5zaWduZWQgc2hvcnQqIGN1cnJlbnROdW1iZXIsCgkJCQkJCQkJ
CQkJCQkJIHVuc2lnbmVkIGxvbmcqIGN1cnJlbnRTdGVwLAoJCQkJCQkJCQkJCQkJCSB1bnNpZ25l
ZCBsb25nKiBjdXJyZW50VW50aWwpOwoKCQlzdGF0aWMgdm9pZAkJCQlUdXJuT24JCQkJCShCb29s
IGhvcmRlc09uKTsKCgkJc3RhdGljIGludDMyCQkJR3JlbWxpbk51bWJlcgkJCSh2b2lkKTsKCQlz
dGF0aWMgaW50MzIJCQlFdmVudENvdW50ZXIJCQkodm9pZCk7CgkJc3RhdGljIGludDMyCQkJRXZl
bnRMaW1pdAkJCQkodm9pZCk7CgoJCXN0YXRpYyB2b2lkCQkJCVN0b3BFdmVudFJlYWNoZWQJCSh2
b2lkKTsKCQlzdGF0aWMgdm9pZAkJCQlFcnJvckVuY291bnRlcmVkCQkodm9pZCk7CgkJc3RhdGlj
IHZvaWQJCQkJUmVjb3JkRXJyb3JTdGF0cwkJKFN0ckNvZGUgbWVzc2FnZUlEID0gLTEpOwoKCQlz
dGF0aWMgdm9pZCAJCQlTdXNwZW5kCQkJCQkodm9pZCk7CgkJc3RhdGljIHZvaWQgCQkJU3RlcAkJ
CQkJKHZvaWQpOwoJCXN0YXRpYyB2b2lkCQkJCVJlc3VtZQkJCQkJKHZvaWQpOwoJCXN0YXRpYyB2
b2lkCQkJCVN0b3AJCQkJCSh2b2lkKTsKCgkJc3RhdGljIHN0cmluZwkJCVN1Z2dlc3RGaWxlTmFt
ZQkJCShIb3JkZUZpbGVUeXBlIGNhdGVnb3J5LCB1aW50MzIgbnVtID0gMCk7CgkJc3RhdGljIEVt
RmlsZVJlZgkJU3VnZ2VzdEZpbGVSZWYJCQkoSG9yZGVGaWxlVHlwZSBjYXRlZ29yeSwgdWludDMy
IG51bSA9IDApOwoKCQlzdGF0aWMgdm9pZAkJCQlQb3N0TG9hZAkJCQkodm9pZCk7CgoJCXN0YXRp
YyBCb29sCQkJCVBvc3RGYWtlRXZlbnQJCQkodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJUG9zdEZh
a2VQZW5FdmVudAkJKHZvaWQpOwoJCXN0YXRpYyBCb29sCSAJCQlTZW5kQ2hhcnNUb1R5cGUJCQko
dm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJQnVtcENvdW50ZXIJCQkJKHZvaWQpOwoKCQlzdGF0aWMg
dWludDMyCQkJRWxhcHNlZE1pbGxpc2Vjb25kcwkJKHZvaWQpOwoKCQlzdGF0aWMgQm9vbAkJCQlD
YW5Td2l0Y2hUb0FwcAkJCShVSW50MTYgY2FyZE5vLCBMb2NhbElEIGRiSUQpOwoKCQlzdGF0aWMg
dm9pZAkJCQlTZXRHcmVtbGluc0hvbWUJCQkoY29uc3QgRW1EaXJSZWYmIGdyZW1saW5zSG9tZSk7
CgkJc3RhdGljIHZvaWQJCQkJU2V0R3JlbWxpbnNIb21lVG9EZWZhdWx0KHZvaWQpOwoJCXN0YXRp
YyBCb29sCQkJCUdldEdyZW1saW5zSG9tZQkJCShFbURpclJlZiYgb3V0UGF0aCk7CgoJCXN0YXRp
YyB2b2lkCQkJCUF1dG9TYXZlU3RhdGUJCQkodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJU2F2ZVN1
c3BlbmRlZFN0YXRlCQkodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJU2F2ZVJvb3RTdGF0ZQkJCSh2
b2lkKTsKCQlzdGF0aWMgRXJyQ29kZQkJCUxvYWRSb290U3RhdGUJCQkodm9pZCk7CgkJc3RhdGlj
IEVyckNvZGUJCQlMb2FkU3VzcGVuZGVkU3RhdGUJCSh2b2lkKTsKCgkJc3RhdGljIHZvaWQJCQkJ
TG9hZEV2ZW50cwkJCQkodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJU2F2ZUV2ZW50cwkJCQkodm9p
ZCk7CgoJCXN0YXRpYyB2b2lkCQkJCVN0YXJ0R3JlbWxpbkZyb21Mb2FkZWRSb290U3RhdGUJCSh2
b2lkKTsKCQlzdGF0aWMgdm9pZAkJCQlTdGFydEdyZW1saW5Gcm9tTG9hZGVkU3VzcGVuZGVkU3Rh
dGUodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJU2V0R3JlbWxpblN0YXRlUGF0aEZyb21Db250cm9s
RmlsZQkoRW1GaWxlUmVmJiBjb250cm9sRmlsZSk7CgoJCXN0YXRpYyBFbURpclJlZgkJCUdldEdy
ZW1saW5EaXJlY3RvcnkJCSh2b2lkKTsKCQlzdGF0aWMgdm9pZCAJCQlVc2VOZXdBdXRvU2F2ZURp
cmVjdG9yeSAodm9pZCk7CgkJc3RhdGljIERhdGFiYXNlSW5mb0xpc3QJR2V0QXBwTGlzdAkJCQko
dm9pZCk7CgoJCXN0YXRpYyBzdHJpbmcJCQlUcmFuc2xhdGVFcnJvckNvZGUJCShVSW50MzIgZXJy
Q29kZSk7CgoJcHJpdmF0ZToKCQlzdGF0aWMgdm9pZAkJCQlOZXh0R3JlbWxpbigpOwoJCXN0YXRp
YyB2b2lkCQkJCVByb3Bvc2VOZXh0R3JlbWxpbgkJKGxvbmcmIG91dE5leHRHcmVtbGluLAoJCQkJ
CQkJCQkJCQkJCSBsb25nJiBvdXROZXh0RGVwdGgsCgkJCQkJCQkJCQkJCQkJIGxvbmcgaW5Gcm9t
R3JlbWxpbiwKCQkJCQkJCQkJCQkJCQkgbG9uZyBpbkZyb21EZXB0aCk7CgkJc3RhdGljIHZvaWQJ
CQkJRW5kSG9yZGVzCQkJCSh2b2lkKTsKCgkJc3RhdGljIEVyckNvZGUJCQlMb2FkU3RhdGUJCQkJ
KGNvbnN0IEVtRmlsZVJlZiYgcmVmKTsKCgkJc3RhdGljIHZvaWQJCQkJU3RhcnRMb2cJCQkJKHZv
aWQpOwoJCXN0YXRpYyBzdHJpbmcJCQlHcmVtbGluc0ZsYWdzVG9TdHJpbmcJKHZvaWQpOwoJCXN0
YXRpYyB2b2lkCQkJCUdyZW1saW5zRmxhZ3NGcm9tU3RyaW5nCShzdHJpbmcmIGluRmxhZ3MpOwoJ
CXN0YXRpYyB2b2lkCQkJCUNvbXB1dGVTdGF0aXN0aWNzCQkoaW50MzIgJm1pbiwKCQkJCQkJCQkJ
CQkJCQkgaW50MzIgJm1heCwKCQkJCQkJCQkJCQkJCQkgaW50MzIgJmF2ZywKCQkJCQkJCQkJCQkJ
CQkgaW50MzIgJnN0ZERldiwKCQkJCQkJCQkJCQkJCQkgaW50MzIgJnNtYWxsRXJyb3JJbmRleCk7
CgkJc3RhdGljIHZvaWQJCQkJR3JlbWxpblJlcG9ydAkJCSh2b2lkKTsKfTsKCgoKIyAxNyAiLi4v
U3JjU2hhcmVkL0xvZ2dpbmcuaCIgMgoKIyAxICIuLi9TcmNTaGFyZWQvTWlzY2VsbGFuZW91cy5o
IiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKY2xhc3MgQ2h1bms7CmNsYXNzIEVtUmVjdDsKCmNsYXNz
IFN0TWVtb3J5CnsKCXB1YmxpYzoKCQlTdE1lbW9yeQkJKAljaGFyKglpblB0ciA9IF9fbnVsbCAp
OwoKCQlTdE1lbW9yeQkJKAlsb25nCWluU2l6ZSwKCQkJCQkJCUJvb2wJaW5DbGVhckJ5dGVzID0g
ZmFsc2UpOwoKCQl+U3RNZW1vcnkJCSgpOwoKCQlvcGVyYXRvciBjaGFyKgkoKQkJCXsgcmV0dXJu
IG1QdHI7IH0KCgkJY2hhcioJR2V0CQkoKSBjb25zdAl7IHJldHVybiBtUHRyOyB9CgkJQm9vbAlJ
c093bmVyCSgpIGNvbnN0CXsgcmV0dXJuIG1Jc093bmVyOyB9CgkJQm9vbAlJc1ZhbGlkCSgpIGNv
bnN0CXsgcmV0dXJuIChtUHRyICE9IF9fbnVsbCApOyB9CgoJCXZvaWQJQWRvcHQJKAljaGFyKglp
blB0cik7CgkJY2hhcioJUmVsZWFzZQkoKSBjb25zdDsKCQl2b2lkCURpc3Bvc2UJKCk7CgoJcHJv
dGVjdGVkOgoJCWNoYXIqCQkJbVB0cjsKCQltdXRhYmxlIEJvb2wJbUlzT3duZXI7CgoJcHJpdmF0
ZToKCQlTdE1lbW9yeQkoIGNvbnN0IFN0TWVtb3J5ICZpblBvaW50ZXJCbG9jayk7CgkJU3RNZW1v
cnkmCW9wZXJhdG9yID0gKGNvbnN0IFN0TWVtb3J5ICZpblBvaW50ZXJCbG9jayk7Cn07CgoKY2xh
c3MgU3RNZW1vcnlNYXBwZXIKewoJcHVibGljOgoJCVN0TWVtb3J5TWFwcGVyCShjb25zdCB2b2lk
KiBtZW1vcnksIGxvbmcgc2l6ZSk7CgkJflN0TWVtb3J5TWFwcGVyCSh2b2lkKTsKCglwcml2YXRl
OgoJCWNvbnN0IHZvaWQqCWZNZW1vcnk7Cn07CgpjbGFzcyBTdFdvcmRTd2FwcGVyCnsKCXB1Ymxp
YzoKCQlTdFdvcmRTd2FwcGVyICh2b2lkKiBtZW1vcnksIGxvbmcgbGVuZ3RoKTsKCQl+U3RXb3Jk
U3dhcHBlciAodm9pZCk7CgoJcHJpdmF0ZToKCQl2b2lkKglmTWVtb3J5OwoJCWxvbmcJZkxlbmd0
aDsKfTsKCgogCiAKIAogCiAKIAogCiAKIAoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIEVtVmFs
dWVDaGFuZ2VyCnsKCXB1YmxpYzoKCQkJCQkJCQlFbVZhbHVlQ2hhbmdlcihUJiB2YXJpYWJsZSwg
VCBuZXdWYWx1ZSkgOgoJCQkJCQkJCQlmVmFyaWFibGUodmFyaWFibGUpLAoJCSAgCQkJCQkJCWZP
cmlnVmFsdWUodmFyaWFibGUpCgkJCQkJCQkJewoJCQkJCQkJCQlmVmFyaWFibGUgPSBuZXdWYWx1
ZTsKCQkJCQkJCQl9CgoJCQkJCQkJCX5FbVZhbHVlQ2hhbmdlcigpCgkJCQkJCQkJewoJCQkJCQkJ
CQlmVmFyaWFibGUgPSBmT3JpZ1ZhbHVlOwoJCQkJCQkJCX0KCQoJcHJpdmF0ZToKCQlUJgkJCQkJ
CWZWYXJpYWJsZTsKCQlUCQkJCQkJZk9yaWdWYWx1ZTsKfTsKCnZvaWQJCVZhbGlkYXRlRm9ybU9i
amVjdHMJCShGb3JtUHRyIGZybSk7CnZvaWQJCUNvbGxlY3RPS09iamVjdHMJCShGb3JtUHRyIGZy
bSwgdmVjdG9yPFVJbnQxNj4mIG9rT2JqZWN0cyk7CgpCb29sCQlQaW5SZWN0SW5SZWN0CQkJKEVt
UmVjdCYgaW5uZXIsIGNvbnN0IEVtUmVjdCYgb3V0ZXIpOwoKY29uc3QgQm9vbAlrQWxsRGF0YWJh
c2VzCQk9IGZhbHNlOwpjb25zdCBCb29sCWtBcHBsaWNhdGlvbnNPbmx5CT0gdHJ1ZTsKCnZvaWQJ
CUdldERhdGFiYXNlcwkJCShEYXRhYmFzZUluZm9MaXN0JiBhcHBMaXN0LCBCb29sIGFwcGxpY2F0
aW9uc09ubHkpOwoKQm9vbAkJSXNFeGVjdXRhYmxlCQkJKFVJbnQzMiBkYlR5cGUsIFVJbnQzMiBk
YkNyZWF0b3IsIFVJbnQxNiBkYkF0dHJzKTsKQm9vbAkJSXNWaXNpYmxlCQkJCShVSW50MzIgZGJU
eXBlLCBVSW50MzIgZGJDcmVhdG9yLCBVSW50MTYgZGJBdHRycyk7CnZvaWQgCQlHZXRMb2FkYWJs
ZUZpbGVMaXN0IAkoc3RyaW5nIGRpcmVjdG9yeU5hbWUsIEVtRmlsZVJlZkxpc3QmIGZpbGVMaXN0
KTsKdm9pZAkJR2V0RmlsZUNvbnRlbnRzCQkJKGNvbnN0IEVtRmlsZVJlZiYgZmlsZSwgQ2h1bmsm
IGNvbnRlbnRzKTsKCnZvaWQJCUluc3RhbGxDYWxpYnJhdGlvbkluZm8JKHZvaWQpOwp2b2lkCQlS
ZXNldENhbGlicmF0aW9uSW5mbwkodm9pZCk7CnZvaWQJCVJlc2V0Q2xvY2tzCQkJCSh2b2lkKTsK
dm9pZAkJU2V0SG90U3luY1VzZXJOYW1lCQkoY29uc3QgY2hhciopOwoKdm9pZAkJU2VwYXJhdGVM
aXN0CQkJKFN0cmluZ0xpc3QmIHN0cmluZ0xpc3QsIHN0cmluZyBzdHIsIGNoYXIgZGVsaW1pdGVy
KTsKCnZvaWQJCVJ1bkxlbmd0aEVuY29kZQkJCSh2b2lkKiogc3JjUFAsIHZvaWQqKiBkc3RQUCwg
bG9uZyBzcmNCeXRlcywgbG9uZyBkc3RCeXRlcyk7CnZvaWQJCVJ1bkxlbmd0aERlY29kZQkJCSh2
b2lkKiogc3JjUFAsIHZvaWQqKiBkc3RQUCwgbG9uZyBzcmNCeXRlcywgbG9uZyBkc3RCeXRlcyk7
CmxvbmcJCVJ1bkxlbmd0aFdvcnN0U2l6ZQkJKGxvbmcpOwoKdm9pZAkJR3ppcEVuY29kZQkJCQko
dm9pZCoqIHNyY1BQLCB2b2lkKiogZHN0UFAsIGxvbmcgc3JjQnl0ZXMsIGxvbmcgZHN0Qnl0ZXMp
Owp2b2lkCQlHemlwRGVjb2RlCQkJCSh2b2lkKiogc3JjUFAsIHZvaWQqKiBkc3RQUCwgbG9uZyBz
cmNCeXRlcywgbG9uZyBkc3RCeXRlcyk7CmxvbmcJCUd6aXBXb3JzdFNpemUJCQkobG9uZyk7Cgpp
bnQJCQlDb3VudEJpdHMJCQkJKHVpbnQzMiB2KTsKaW5saW5lIGludAlDb3VudEJpdHMJCQkJKHVp
bnQxNiB2KSB7IHJldHVybiBDb3VudEJpdHMgKCh1aW50MzIpICh1aW50MTYpIHYpOyB9CmlubGlu
ZSBpbnQJQ291bnRCaXRzCQkJCSh1aW50OCB2KSB7IHJldHVybiBDb3VudEJpdHMgKCh1aW50MzIp
ICh1aW50OCkgdik7IH0KCmlubGluZSBpbnQJQ291bnRCaXRzCQkJCShpbnQzMiB2KSB7IHJldHVy
biBDb3VudEJpdHMgKCh1aW50MzIpICh1aW50MzIpIHYpOyB9CmlubGluZSBpbnQJQ291bnRCaXRz
CQkJCShpbnQxNiB2KSB7IHJldHVybiBDb3VudEJpdHMgKCh1aW50MzIpICh1aW50MTYpIHYpOyB9
CmlubGluZSBpbnQJQ291bnRCaXRzCQkJCShpbnQ4IHYpIHsgcmV0dXJuIENvdW50Qml0cyAoKHVp
bnQzMikgKHVpbnQ4KSB2KTsgfQoKaW5saW5lIEJvb2wJSXNFdmVuCQkJCQkodWludDMyIHYpIHsg
cmV0dXJuICh2ICYgMSkgPT0gMDsgfQppbmxpbmUgQm9vbAlJc09kZAkJCQkJKHVpbnQzMiB2KSB7
IHJldHVybiAodiAmIDEpICE9IDA7IH0KCnVpbnQzMgkJTmV4dFBvd2VyT2YyCQkJKHVpbnQzMiB4
KTsKdWludDMyCQlEYXRlVG9EYXlzCQkJCSh1aW50MzIgeWVhciwgdWludDMyIG1vbnRoLCB1aW50
MzIgZGF5KTsKCnN0cmluZwkJR2V0TGlicmFyeU5hbWUJCQkodWludDE2IHJlZk51bSk7CgpCb29s
CQlHZXRTeXN0ZW1DYWxsQ29udGV4dAkoZW11cHRyLCBTeXN0ZW1DYWxsQ29udGV4dCYpOwoKdm9p
ZAkJR2V0SG9zdFRpbWUJCQkJKGxvbmcqIGhvdXIsIGxvbmcqIG1pbiwgbG9uZyogc2VjKTsKdm9p
ZAkJR2V0SG9zdERhdGUJCQkJKGxvbmcqIHllYXIsIGxvbmcqIG1vbnRoLCBsb25nKiBkYXkpOwoK
Qm9vbAkJU3RhcnRzV2l0aAkJCQkoY29uc3QgY2hhciogcywgY29uc3QgY2hhciogcGF0dGVybik7
CkJvb2wJCUVuZHNXaXRoCQkJCShjb25zdCBjaGFyKiBzLCBjb25zdCBjaGFyKiBwYXR0ZXJuKTsK
c3RyaW5nCQlTdHJpcAkJCQkJKGNvbnN0IGNoYXIqIHMsIGNvbnN0IGNoYXIqLCBCb29sIGxlYWRp
bmcsIEJvb2wgdHJhaWxpbmcpOwpzdHJpbmcJCVN0cmlwCQkJCQkoY29uc3Qgc3RyaW5nJiBzLCBj
b25zdCBjaGFyKiwgQm9vbCBsZWFkaW5nLCBCb29sIHRyYWlsaW5nKTsKc3RyaW5nCQlSZXBsYWNl
U3RyaW5nCQkJKGNvbnN0IHN0cmluZyYgc291cmNlLAoJCQkJCQkJCQkgY29uc3Qgc3RyaW5nJiBw
YXR0ZXJuLAoJCQkJCQkJCQkgY29uc3Qgc3RyaW5nJiByZXBsYWNlbWVudCk7CnZvaWQJCUZvcm1h
dEludGVnZXIJCQkoY2hhciogZGVzdCwgdWludDMyIGludGVnZXIpOwpzdHJpbmcJCUZvcm1hdElu
dGVnZXIJCQkodWludDMyIGludGVnZXIpOwpzdHJpbmcJCUZvcm1hdEVsYXBzZWRUaW1lCQkodWlu
dDMyIG1TZWNzKTsKY29uc3QgY2hhcioJTGF1bmNoQ21kVG9TdHJpbmcJCShVSW50MTYgY21kKTsK
dm9pZAkJU3RhY2tDcmF3bFN0cmluZ3MJCShjb25zdCBFbVN0YWNrRnJhbWVMaXN0JiBzdGFja0Ny
YXdsLAoJCQkJCQkJCQkgU3RyaW5nTGlzdCYgc3RhY2tDcmF3bFN0cmluZ3MpOwpzdHJpbmcJCVN0
YWNrQ3Jhd2xTdHJpbmcgCQkoY29uc3QgRW1TdGFja0ZyYW1lTGlzdCYgc3RhY2tDcmF3bCwKCQkJ
CQkJCQkJIGxvbmcgbWF4TGVuLCBCb29sIGluY2x1ZGVGcmFtZVNpemUsCgkJCQkJCQkJCSBlbXVw
dHIgb2xkU3RhY2tMb3cpOwoKdHlwZWRlZiBwYWlyIDxSQU1TaXplVHlwZSwgc3RyaW5nPglNZW1v
cnlUZXh0Owp0eXBlZGVmIHZlY3RvciA8TWVtb3J5VGV4dD4JCQlNZW1vcnlUZXh0TGlzdDsKCnZv
aWQJCUdldE1lbW9yeVRleHRMaXN0CQkoTWVtb3J5VGV4dExpc3QmIG1lbW9yeUxpc3QpOwoKCiMg
MTggIi4uL1NyY1NoYXJlZC9Mb2dnaW5nLmgiIDIKCiMgMSAiLi4vU3JjU2hhcmVkL1ByZWZlcmVu
Y2VNZ3IuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL0hhcmR3YXJl
L0VtSEFMLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKIyAxICIuLi9TcmNTaGFyZWQvU2tpbnMuaCIg
MQogCiAKCgoKCgoKCgoKCgoKCgoKIyAxICIuLi9TcmNTaGFyZWQvRW1SZWN0LmgiIDEKIAogCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1NyY1No
YXJlZC9FbVBvaW50LmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoJCgoKdGVtcGxhdGUgPGNsYXNzIGNvb3JkPgpjbGFzcyBFbVBvaW50
VGVtcGwKewoJcHVibGljOgoJCQkJCQkJCUVtUG9pbnRUZW1wbAkodm9pZCkKCQkJCQkJCQl7fQoJ
CQkJCQkJCUVtUG9pbnRUZW1wbAkoY29vcmQgeCwgY29vcmQgeSkgOgoKCgoKCQkJCQkJCQkgICAg
ZlkgKHkpLAoJCQkJCQkJCQlmWCAoeCkKCgkJCQkJCQkJe30KCQkJCQkJCQlFbVBvaW50VGVtcGwJ
KGNvbnN0IEVtUG9pbnRUZW1wbDxjb29yZD4mIHB0KSA6CgoKCgoJCQkJCQkJCSAgICBmWSAocHQu
ZlkpLAoJCQkJCQkJCQlmWCAocHQuZlgpCgoJCQkJCQkJCXt9CiAKCQkJIAoJCQkgCgkJCSAKCQkJ
CgkJdm9pZAkJCQkJT2Zmc2V0CQkJKGNvb3JkIHgsIGNvb3JkIHkpOwoJCQkgCgkJCSAKCgkJRW1Q
b2ludFRlbXBsPGNvb3JkPgkJb3BlcmF0b3IrCQkoY29uc3QgRW1Qb2ludFRlbXBsPGNvb3JkPiYg
cHQpIGNvbnN0OwoJCUVtUG9pbnRUZW1wbDxjb29yZD4JCW9wZXJhdG9yLQkJKGNvbnN0IEVtUG9p
bnRUZW1wbDxjb29yZD4mIHB0KSBjb25zdDsKCQkJIAoJCQkgCgoJCUVtUG9pbnRUZW1wbDxjb29y
ZD4JCW9wZXJhdG9yLQkJKHZvaWQpIGNvbnN0OwoJCQkgCgoJCUVtUG9pbnRUZW1wbDxjb29yZD4m
CW9wZXJhdG9yKz0JCShjb25zdCBFbVBvaW50VGVtcGw8Y29vcmQ+JiBwdCk7CgkJRW1Qb2ludFRl
bXBsPGNvb3JkPiYJb3BlcmF0b3ItPQkJKGNvbnN0IEVtUG9pbnRUZW1wbDxjb29yZD4mIHB0KTsK
CQkJIAoJCQkgCgoJCUVtUG9pbnRUZW1wbDxjb29yZD4JCW9wZXJhdG9yKgkJKGNvbnN0IEVtUG9p
bnRUZW1wbDxjb29yZD4mIHB0KSBjb25zdDsKCQlFbVBvaW50VGVtcGw8Y29vcmQ+CQlvcGVyYXRv
ci8JCShjb25zdCBFbVBvaW50VGVtcGw8Y29vcmQ+JiBwdCkgY29uc3Q7CgkJRW1Qb2ludFRlbXBs
PGNvb3JkPiYJb3BlcmF0b3IqPQkJKGNvbnN0IEVtUG9pbnRUZW1wbDxjb29yZD4mIHB0KTsKCQlF
bVBvaW50VGVtcGw8Y29vcmQ+JglvcGVyYXRvci89CQkoY29uc3QgRW1Qb2ludFRlbXBsPGNvb3Jk
PiYgcHQpOwoJCQkgCgoJCUJvb2xlYW4JCQkJCW9wZXJhdG9yIT0JCShjb25zdCBFbVBvaW50VGVt
cGw8Y29vcmQ+JiBwdCkgY29uc3Q7CgkJQm9vbGVhbgkJCQkJb3BlcmF0b3I9PQkJKGNvbnN0IEVt
UG9pbnRUZW1wbDxjb29yZD4mIHB0KSBjb25zdDsKCQkJIAoJCQkgCgoJCQkgCgoKCgoJCWNvb3Jk
CWZZOwoJCWNvb3JkCWZYOwoKfTsKCgogCiAKIAoKc3RydWN0CXRhZ1NJWkU7CnR5cGVkZWYJc3Ry
dWN0IHRhZ1NJWkUgU0laRTsKY2xhc3MJQ1NpemU7CgpzdHJ1Y3QJdGFnUE9JTlQ7CnR5cGVkZWYg
c3RydWN0IHRhZ1BPSU5UIFBPSU5UOwpjbGFzcwlDUG9pbnQ7CgpzdHJ1Y3QJU0RpbWVuc2lvbjE2
OwpzdHJ1Y3QJU0RpbWVuc2lvbjMyOwoKc3RydWN0CVBvaW50Owp0eXBlZGVmIFBvaW50CVNQb2lu
dDE2OwoKc3RydWN0CVNQb2ludDMyOwpzdHJ1Y3QJVlBvaW50OwoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoJCgkKCgogCiAKIAoKY2xh
c3MgRW1Qb2ludCA6IHB1YmxpYyBFbVBvaW50VGVtcGw8RW1Db29yZD4KewoJcHVibGljOgoJCUVt
UG9pbnQoKSB7fTsKCQlFbVBvaW50KEVtQ29vcmQgeCwgRW1Db29yZCB5KSA6IEVtUG9pbnRUZW1w
bDxFbUNvb3JkPih4LCB5KSB7fTsKCQlFbVBvaW50KGNvbnN0IEVtUG9pbnRUZW1wbDxFbUNvb3Jk
PiYgcHQpIDogRW1Qb2ludFRlbXBsPEVtQ29vcmQ+KHB0KSB7fTsKIAoKCSAKCSAKCSAKCSAKCSAK
CQkKCQkKCgoKCQlFbVBvaW50KGNvbnN0ICBTRGltZW5zaW9uMTYgJik7CWNvbnN0IEVtUG9pbnQm
IG9wZXJhdG9yPShjb25zdCAgU0RpbWVuc2lvbjE2ICYpOyAJRW1Qb2ludChjb25zdCAgUG9pbnRU
eXBlICYpOwljb25zdCBFbVBvaW50JiBvcGVyYXRvcj0oY29uc3QgIFBvaW50VHlwZSAmKTsgIAoJ
CUVtUG9pbnQoY29uc3QgIFNJWkUgJik7CWNvbnN0IEVtUG9pbnQmIG9wZXJhdG9yPShjb25zdCAg
U0laRSAmKTsgCUVtUG9pbnQoY29uc3QgIENTaXplICYpOwljb25zdCBFbVBvaW50JiBvcGVyYXRv
cj0oY29uc3QgIENTaXplICYpOyAJRW1Qb2ludChjb25zdCAgU0RpbWVuc2lvbjMyICYpOwljb25z
dCBFbVBvaW50JiBvcGVyYXRvcj0oY29uc3QgIFNEaW1lbnNpb24zMiAmKTsgCUVtUG9pbnQoY29u
c3QgIFBPSU5UICYpOwljb25zdCBFbVBvaW50JiBvcGVyYXRvcj0oY29uc3QgIFBPSU5UICYpOyAJ
RW1Qb2ludChjb25zdCAgQ1BvaW50ICYpOwljb25zdCBFbVBvaW50JiBvcGVyYXRvcj0oY29uc3Qg
IENQb2ludCAmKTsgCUVtUG9pbnQoY29uc3QgIFNQb2ludDMyICYpOwljb25zdCBFbVBvaW50JiBv
cGVyYXRvcj0oY29uc3QgIFNQb2ludDMyICYpOyAgCgkJRW1Qb2ludChjb25zdCAgUG9pbnQgJik7
CWNvbnN0IEVtUG9pbnQmIG9wZXJhdG9yPShjb25zdCAgUG9pbnQgJik7ICAKCQlFbVBvaW50KGNv
bnN0ICBWUG9pbnQgJik7CWNvbnN0IEVtUG9pbnQmIG9wZXJhdG9yPShjb25zdCAgVlBvaW50ICYp
OyAgCgoJIAoJIAoJIAoJIAoJCQoJCQoKCgkJb3BlcmF0b3IgIFNJWkUgKCkgY29uc3Q7IAlvcGVy
YXRvciAgQ1NpemUgKCkgY29uc3Q7IAlvcGVyYXRvciAgU0RpbWVuc2lvbjMyICgpIGNvbnN0OyAJ
b3BlcmF0b3IgIFBPSU5UICgpIGNvbnN0OyAJb3BlcmF0b3IgIENQb2ludCAoKSBjb25zdDsgCW9w
ZXJhdG9yICBTUG9pbnQzMiAoKSBjb25zdDsgIAoJCW9wZXJhdG9yICBWUG9pbnQgKCkgY29uc3Q7
ICAKCQlvcGVyYXRvciAgU0RpbWVuc2lvbjE2ICgpIGNvbnN0OyAJb3BlcmF0b3IgIFBvaW50VHlw
ZSAoKSBjb25zdDsgIAoJCW9wZXJhdG9yICBQb2ludCAoKSBjb25zdDsgIAoKCSAKCSAKCSAKCSAK
CQkKCQkKCgoKCgoJCW9wZXJhdG9yIGNvbnN0ICBWUG9pbnQgKigpIGNvbnN0OwlvcGVyYXRvciAg
VlBvaW50ICooKTsJb3BlcmF0b3IgY29uc3QgIFZQb2ludCAmKCkgY29uc3Q7CW9wZXJhdG9yICBW
UG9pbnQgJigpOyAgIAp9OwoKCiMgNDggIi4uL1NyY1NoYXJlZC9FbVJlY3QuaCIgMgoKCgoKCgkK
CgoKCnRlbXBsYXRlIDxjbGFzcyBjb29yZD4KY2xhc3MgRW1SZWN0VGVtcGwKewoJcHVibGljOgoJ
CQkJCQkJCUVtUmVjdFRlbXBsCSgpCgkJCQkJCQkJe30KCQkJCQkJCQlFbVJlY3RUZW1wbAkoY29v
cmQgbGVmdCwgY29vcmQgdG9wLCBjb29yZCByaWdodCwgY29vcmQgYm90dG9tKSA6CgoKCgoKCgkJ
CQkJCQkJCWZUb3AgKHRvcCksCgkJCQkJCQkJCWZMZWZ0IChsZWZ0KSwKCQkJCQkJCQkJZkJvdHRv
bSAoYm90dG9tKSwKCQkJCQkJCQkJZlJpZ2h0IChyaWdodCkKCgkJCQkJCQkJe30KCQkJCQkJCQlF
bVJlY3RUZW1wbAkoY29uc3QgRW1Qb2ludFRlbXBsPGNvb3JkPiYgdG9wTGVmdCwgY29uc3QgRW1Q
b2ludFRlbXBsPGNvb3JkPiYgYm90dG9tUmlnaHQpIDoKCgoKCgoKCQkJCQkJCQkJZlRvcCAodG9w
TGVmdC5mWSksCgkJCQkJCQkJCWZMZWZ0ICh0b3BMZWZ0LmZYKSwKCQkJCQkJCQkJZkJvdHRvbSAo
Ym90dG9tUmlnaHQuZlkpLAoJCQkJCQkJCQlmUmlnaHQgKGJvdHRvbVJpZ2h0LmZYKQoKCQkJCQkJ
CQl7fQoJCQkJCQkJCUVtUmVjdFRlbXBsCShjb25zdCBFbVJlY3RUZW1wbDxjb29yZD4mIG90aGVy
KSA6CgoKCgoKCgkJCQkJCQkJCWZUb3AgKG90aGVyLmZUb3ApLAoJCQkJCQkJCQlmTGVmdCAob3Ro
ZXIuZkxlZnQpLAoJCQkJCQkJCQlmQm90dG9tIChvdGhlci5mQm90dG9tKSwKCQkJCQkJCQkJZlJp
Z2h0IChvdGhlci5mUmlnaHQpCgoJCQkJCQkJCXt9CgogCgkJCSAKCQkJIAoJCQkgCgoJCWNvb3Jk
CQkJCQlXaWR0aAkJKHZvaWQpIGNvbnN0OwoJCWNvb3JkCQkJCQlIZWlnaHQJCSh2b2lkKSBjb25z
dDsKCQkJIAoJCQkgCgoJCUVtUG9pbnRUZW1wbDxjb29yZD4JCVNpemUJCSh2b2lkKSBjb25zdDsK
CQkJIAoJCQkgCgoJCUVtUG9pbnRUZW1wbDxjb29yZD4JCVRvcExlZnQJCSh2b2lkKSBjb25zdDsK
CQlFbVBvaW50VGVtcGw8Y29vcmQ+CQlUb3BSaWdodAkodm9pZCkgY29uc3Q7CgkJRW1Qb2ludFRl
bXBsPGNvb3JkPgkJQm90dG9tTGVmdAkodm9pZCkgY29uc3Q7CgkJRW1Qb2ludFRlbXBsPGNvb3Jk
PgkJQm90dG9tUmlnaHQJKHZvaWQpIGNvbnN0OwoJCUVtUG9pbnRUZW1wbDxjb29yZD4JCU5vcnRo
CQkodm9pZCkgY29uc3Q7CgkJRW1Qb2ludFRlbXBsPGNvb3JkPgkJU291dGgJCSh2b2lkKSBjb25z
dDsKCQlFbVBvaW50VGVtcGw8Y29vcmQ+CQlFYXN0CQkodm9pZCkgY29uc3Q7CgkJRW1Qb2ludFRl
bXBsPGNvb3JkPgkJV2VzdAkJKHZvaWQpIGNvbnN0OwoJCUVtUG9pbnRUZW1wbDxjb29yZD4JCUNl
bnRlcgkJKHZvaWQpIGNvbnN0OwoJCQkgCgkJCSAKCQkJIAoJCQkgCgkJCSAKCQkJIAoJCQkgCgkJ
CSAKCQkJIAoJCQkgCgkJCSAKCQkJIAoKCQlCb29sCQkJCQlJc0VtcHR5CQkodm9pZCkgY29uc3Q7
CgkJCSAKCQkJIAoKCQlCb29sCQkJCQlJc051bGwJCSh2b2lkKSBjb25zdDsKCQkJIAoKCQlCb29s
CQkJCQlJc0VxdWFsCQkoY29uc3QgRW1SZWN0VGVtcGw8Y29vcmQ+JiBvdGhlcikgY29uc3Q7CgkJ
CSAKCQkJIAoKCQlCb29sCQkJCQlDb250YWlucwkoY29uc3QgRW1Qb2ludFRlbXBsPGNvb3JkPiYp
IGNvbnN0OwoJCUJvb2wJCQkJCUNvbnRhaW5zCShjb25zdCBFbVJlY3RUZW1wbDxjb29yZD4mKSBj
b25zdDsKCQkJIAoJCQkgCgoJCUJvb2wJCQkJCUludGVyc2VjdHMJKGNvbnN0IEVtUmVjdFRlbXBs
PGNvb3JkPiYpIGNvbnN0OwoJCQkgCgoJCXZvaWQJCQkJCVNldAkJCShjb29yZCBsZWZ0LCBjb29y
ZCB0b3AsIGNvb3JkIHJpZ2h0LCBjb29yZCBib3R0b20pOwoJCXZvaWQJCQkJCVNldAkJCShjb25z
dCBFbVBvaW50VGVtcGw8Y29vcmQ+JiB0b3BMZWZ0LCBjb25zdCBFbVBvaW50VGVtcGw8Y29vcmQ+
JiBib3R0b21SaWdodCk7CgkJCSAKCQkJIAoKCQl2b2lkCQkJCQlCZUVtcHR5CQkodm9pZCk7CgkJ
CSAKCQkJIAoJCQkgCgoJCXZvaWQJCQkJCUluc2V0CQkoY29vcmQgeCwgY29vcmQgeSk7CgkJCSAK
CgkJdm9pZAkJCQkJT2Zmc2V0CQkoY29vcmQgeCwgY29vcmQgeSk7CgkJCSAKCQkJIAoKCQl2b2lk
CQkJCQlTY2FsZVVwCQkoY29vcmQgeCwgY29vcmQgeSk7CgkJCSAKCQkJIAoKCQl2b2lkCQkJCQlT
Y2FsZURvd24JKGNvb3JkIHgsIGNvb3JkIHkpOwoJCQkgCgkJCSAKCgkJdm9pZAkJCQkJSW50ZXJz
ZWN0V2l0aChjb25zdCBFbVJlY3RUZW1wbDxjb29yZD4mIG90aGVyKTsKCQkJIAoJCQkgCgkJCSAK
CQkJIAoKCQl2b2lkCQkJCQlVbmlvbldpdGgJKGNvbnN0IEVtUmVjdFRlbXBsPGNvb3JkPiYgb3Ro
ZXIpOwoJCQkgCgkJCSAKCQkJIAoJCQkgCgoJCXZvaWQJCQkJCUV4dGVuZFRvCShjb25zdCBFbVBv
aW50VGVtcGw8Y29vcmQ+JiBwdCk7CgkJdm9pZAkJCQkJRXh0ZW5kVG8JKGNvbnN0IEVtUmVjdFRl
bXBsPGNvb3JkPiYgb3RoZXIpOwoJCQkgCgkJCSAKCQkJIAoJCQkgCgoJCXZvaWQJCQkJCU5vcm1h
bGl6ZQkodm9pZCk7CgkJCSAKCQkJIAoKCQlFbVJlY3RUZW1wbDxjb29yZD4JCW9wZXJhdG9yKwko
Y29uc3QgRW1Qb2ludFRlbXBsPGNvb3JkPiYgcHQpIGNvbnN0OwoJCUVtUmVjdFRlbXBsPGNvb3Jk
PgkJb3BlcmF0b3ItCShjb25zdCBFbVBvaW50VGVtcGw8Y29vcmQ+JiBwdCkgY29uc3Q7CgkJRW1S
ZWN0VGVtcGw8Y29vcmQ+JgkJb3BlcmF0b3IrPQkoY29uc3QgRW1Qb2ludFRlbXBsPGNvb3JkPiYg
cHQpOwoJCUVtUmVjdFRlbXBsPGNvb3JkPiYJCW9wZXJhdG9yLT0JKGNvbnN0IEVtUG9pbnRUZW1w
bDxjb29yZD4mIHB0KTsKCQkJIAoJCQkgCgkJCSAKCQkJIAoKCQlFbVJlY3RUZW1wbDxjb29yZD4J
CW9wZXJhdG9yKgkoY29uc3QgRW1Qb2ludFRlbXBsPGNvb3JkPiYgcHQpIGNvbnN0OwoJCUVtUmVj
dFRlbXBsPGNvb3JkPgkJb3BlcmF0b3IvCShjb25zdCBFbVBvaW50VGVtcGw8Y29vcmQ+JiBwdCkg
Y29uc3Q7CgkJRW1SZWN0VGVtcGw8Y29vcmQ+JgkJb3BlcmF0b3IqPQkoY29uc3QgRW1Qb2ludFRl
bXBsPGNvb3JkPiYgcHQpOwoJCUVtUmVjdFRlbXBsPGNvb3JkPiYJCW9wZXJhdG9yLz0JKGNvbnN0
IEVtUG9pbnRUZW1wbDxjb29yZD4mIHB0KTsKCQkJIAoJCQkgCgkJCSAKCQkJIAoKCQlCb29sCQkJ
CQlvcGVyYXRvcj09CShjb25zdCBFbVJlY3RUZW1wbDxjb29yZD4mIHJ0KSBjb25zdDsKCQlCb29s
CQkJCQlvcGVyYXRvciE9CShjb25zdCBFbVJlY3RUZW1wbDxjb29yZD4mIHJ0KSBjb25zdDsKCQkJ
IAoJCQkgCgoJCUVtUmVjdFRlbXBsPGNvb3JkPgkJb3BlcmF0b3ImCShjb25zdCBFbVJlY3RUZW1w
bDxjb29yZD4mIHJ0KSBjb25zdDsJIAoJCUVtUmVjdFRlbXBsPGNvb3JkPgkJb3BlcmF0b3J8CShj
b25zdCBFbVJlY3RUZW1wbDxjb29yZD4mIHJ0KSBjb25zdDsJIAoJCUVtUmVjdFRlbXBsPGNvb3Jk
PiYJCW9wZXJhdG9yJj0JKGNvbnN0IEVtUmVjdFRlbXBsPGNvb3JkPiYgcnQpOwoJCUVtUmVjdFRl
bXBsPGNvb3JkPiYJCW9wZXJhdG9yfD0JKGNvbnN0IEVtUmVjdFRlbXBsPGNvb3JkPiYgcnQpOwoJ
CQkgCgkJCSAKCQkJIAoKCQkJIAoKCgoKCgoJCWNvb3JkCWZUb3A7CgkJY29vcmQJZkxlZnQ7CgkJ
Y29vcmQJZkJvdHRvbTsKCQljb29yZAlmUmlnaHQ7Cgp9OwoKCiAKIAogCgpzdHJ1Y3QJdGFnUkVD
VDsKdHlwZWRlZiBzdHJ1Y3QgdGFnUkVDVCBSRUNUOwpjbGFzcwlDUmVjdDsKCnN0cnVjdAlSZWN0
OwpzdHJ1Y3QJVlJlY3Q7CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoJCgkKCgogCiAKIAoKY2xhc3MgRW1SZWN0IDogcHVibGljIEVtUmVjdFRl
bXBsPEVtQ29vcmQ+CnsKCXB1YmxpYzoKCQkJCQkJCQlFbVJlY3QJKCkKCQkJCQkJCQl7fQoJCQkJ
CQkJCUVtUmVjdAkoRW1Db29yZCBsZWZ0LCBFbUNvb3JkIHRvcCwgRW1Db29yZCByaWdodCwgRW1D
b29yZCBib3R0b20pIDoKCQkJCQkJCQkJRW1SZWN0VGVtcGw8RW1Db29yZD4gKGxlZnQsIHRvcCwg
cmlnaHQsIGJvdHRvbSkKCQkJCQkJCQl7fQoJCQkJCQkJCUVtUmVjdAkoY29uc3QgUmVjdGFuZ2xl
VHlwZSYgcikgOgoJCQkJCQkJCQlFbVJlY3RUZW1wbDxFbUNvb3JkPiAoCXIudG9wTGVmdC54LCBy
LnRvcExlZnQueSwKCQkJCQkJCQkJCQkJCQkJci50b3BMZWZ0LnggKyByLmV4dGVudC54LAoJCQkJ
CQkJCQkJCQkJCQlyLnRvcExlZnQueSArIHIuZXh0ZW50LnkpCgkJCQkJCQkJe30KCQkJCQkJCQlF
bVJlY3QJKGNvbnN0IEVtUG9pbnRUZW1wbDxFbUNvb3JkPiYgdG9wTGVmdCwgY29uc3QgRW1Qb2lu
dFRlbXBsPEVtQ29vcmQ+JiBib3R0b21SaWdodCkgOgoJCQkJCQkJCQlFbVJlY3RUZW1wbDxFbUNv
b3JkPih0b3BMZWZ0LCBib3R0b21SaWdodCkKCQkJCQkJCQl7fQoJCQkJCQkJCUVtUmVjdAkoY29u
c3QgRW1SZWN0VGVtcGw8RW1Db29yZD4mIHIpIDoKCQkJCQkJCQkJRW1SZWN0VGVtcGw8RW1Db29y
ZD4ocikKCQkJCQkJCQl7fQoKIAoKCSAKCSAKCSAKCSAKCSAKCQkKCQkKCgoKCQlFbVJlY3QgKGNv
bnN0ICBBYnNSZWN0VHlwZSAmKTsgY29uc3QgRW1SZWN0JiBvcGVyYXRvcj0gKGNvbnN0ICBBYnNS
ZWN0VHlwZSAmKTsgIAoJCUVtUmVjdCAoY29uc3QgIFJFQ1QgJik7IGNvbnN0IEVtUmVjdCYgb3Bl
cmF0b3I9IChjb25zdCAgUkVDVCAmKTsgCUVtUmVjdCAoY29uc3QgIENSZWN0ICYpOyBjb25zdCBF
bVJlY3QmIG9wZXJhdG9yPSAoY29uc3QgIENSZWN0ICYpOyAgCgkJRW1SZWN0IChjb25zdCAgUmVj
dCAmKTsgY29uc3QgRW1SZWN0JiBvcGVyYXRvcj0gKGNvbnN0ICBSZWN0ICYpOyAgCgkJRW1SZWN0
IChjb25zdCAgVlJlY3QgJik7IGNvbnN0IEVtUmVjdCYgb3BlcmF0b3I9IChjb25zdCAgVlJlY3Qg
Jik7ICAKCgkgCgkgCgkgCgkgCgkJCgkJCgoKCQlvcGVyYXRvciAgUkVDVCAgKCkgY29uc3Q7IAlv
cGVyYXRvciAgQ1JlY3QgICgpIGNvbnN0OyAgCgkJb3BlcmF0b3IgIFZSZWN0ICAoKSBjb25zdDsg
IAoJCW9wZXJhdG9yICBBYnNSZWN0VHlwZSAgKCkgY29uc3Q7ICAKCQlvcGVyYXRvciAgUmVjdCAg
KCkgY29uc3Q7ICAKCgkgCgkgCgkgCgkgCgkJCgkJCgoKCgoKCQlvcGVyYXRvciBjb25zdCAgVlJl
Y3QgKiAoKSBjb25zdDsgb3BlcmF0b3IgIFZSZWN0ICogKCk7IG9wZXJhdG9yIGNvbnN0ICBWUmVj
dCAmICgpIGNvbnN0OyBvcGVyYXRvciAgVlJlY3QgJiAoKTsgICAKfTsKCgojIDE4ICIuLi9TcmNT
aGFyZWQvU2tpbnMuaCIgMgoKCgpjbGFzcyBFbVN0cmVhbTsKCmVudW0gU2tpbkVsZW1lbnRUeXBl
CnsKCWtFbGVtZW50X0ZpcnN0LAoKCWtFbGVtZW50X1Bvd2VyQnV0dG9uID0ga0VsZW1lbnRfRmly
c3QsCglrRWxlbWVudF9VcEJ1dHRvbiwKCWtFbGVtZW50X0Rvd25CdXR0b24sCglrRWxlbWVudF9B
cHAxQnV0dG9uLAoJa0VsZW1lbnRfQXBwMkJ1dHRvbiwKCWtFbGVtZW50X0FwcDNCdXR0b24sCglr
RWxlbWVudF9BcHA0QnV0dG9uLAoJa0VsZW1lbnRfQ3JhZGxlQnV0dG9uLAoJa0VsZW1lbnRfQW50
ZW5uYSwKCWtFbGVtZW50X0NvbnRyYXN0QnV0dG9uLAoKCQkgCglrRWxlbWVudF9UcmlnZ2VyTGVm
dCwKCWtFbGVtZW50X1RyaWdnZXJDZW50ZXIsCglrRWxlbWVudF9UcmlnZ2VyUmlnaHQsCglrRWxl
bWVudF9VcEJ1dHRvbkxlZnQsCglrRWxlbWVudF9VcEJ1dHRvblJpZ2h0LAoJa0VsZW1lbnRfRG93
bkJ1dHRvbkxlZnQsCglrRWxlbWVudF9Eb3duQnV0dG9uUmlnaHQsCgoJa0VsZW1lbnRfVG91Y2hz
Y3JlZW4sCglrRWxlbWVudF9MQ0QsCglrRWxlbWVudF9MRUQsCgoJa0VsZW1lbnRfTnVtRWxlbWVu
dHMsCgoJa0VsZW1lbnRfRnJhbWUJPSAtMSwKCWtFbGVtZW50X05vbmUJPSAtMgp9OwoKaW5saW5l
ICBTa2luRWxlbWVudFR5cGUgCW9wZXJhdG9yKysoIFNraW5FbGVtZW50VHlwZSAmIHgpCXsJeCA9
ICBTa2luRWxlbWVudFR5cGUgICh4ICsgMSk7CXJldHVybiB4Owl9CWlubGluZSAgU2tpbkVsZW1l
bnRUeXBlIAlvcGVyYXRvcisrKCBTa2luRWxlbWVudFR5cGUgJiB4LCBpbnQpCXsJIFNraW5FbGVt
ZW50VHlwZSAgcmVzdWx0ID0geDsJeCA9ICBTa2luRWxlbWVudFR5cGUgICh4ICsgMSk7CXJldHVy
biByZXN1bHQ7CX0JaW5saW5lICBTa2luRWxlbWVudFR5cGUgCW9wZXJhdG9yLS0oIFNraW5FbGVt
ZW50VHlwZSAmIHgpCXsJeCA9ICBTa2luRWxlbWVudFR5cGUgICh4IC0gMSk7CXJldHVybiB4Owl9
CWlubGluZSAgU2tpbkVsZW1lbnRUeXBlIAlvcGVyYXRvci0tKCBTa2luRWxlbWVudFR5cGUgJiB4
LCBpbnQpCXsJIFNraW5FbGVtZW50VHlwZSAgcmVzdWx0ID0geDsJeCA9ICBTa2luRWxlbWVudFR5
cGUgICh4IC0gMSk7CXJldHVybiByZXN1bHQ7CX0gCgoKdHlwZWRlZiBzdHJpbmcJCQkJU2tpbk5h
bWU7CnR5cGVkZWYgdmVjdG9yPFNraW5OYW1lPglTa2luTmFtZUxpc3Q7CgoKU2tpbk5hbWUJCVNr
aW5HZXRTa2luTmFtZQkJCShjb25zdCBFbURldmljZSYpOwpTa2luTmFtZQkJU2tpbkdldERlZmF1
bHRTa2luTmFtZQkoY29uc3QgRW1EZXZpY2UmKTsKdm9pZAkJCVNraW5HZXRTa2luTmFtZXMJCShj
b25zdCBFbURldmljZSYsIFNraW5OYW1lTGlzdCYpOwoKdm9pZAkJCVNraW5TZXRTa2luCQkJCSh2
b2lkKTsKdm9pZAkJCVNraW5TZXRTa2luCQkJCShjb25zdCBFbURldmljZSYsIFNjYWxlVHlwZSBz
Y2FsZSwgY29uc3QgU2tpbk5hbWUmKTsKdm9pZAkJCVNraW5TZXRTa2luTmFtZQkJCShjb25zdCBF
bURldmljZSYsIGNvbnN0IFNraW5OYW1lJik7CgpFbUZpbGVSZWYJCVNraW5HZXRTa2luZm9GaWxl
CQkodm9pZCk7CkVtRmlsZVJlZgkJU2tpbkdldFNraW5GaWxlCQkJKHZvaWQpOwpFbUZpbGVSZWYJ
CVNraW5HZXRTa2luRmlsZQkJCShTY2FsZVR5cGUgc2NhbGUpOwoKRW1TdHJlYW0qCQlTa2luR2V0
U2tpblN0cmVhbQkJKHZvaWQpOwpFbVN0cmVhbSoJCVNraW5HZXRTa2luU3RyZWFtCQkoU2NhbGVU
eXBlIHNjYWxlKTsKCkJvb2wJCQlTa2luVmFsaWRTa2luCQkJKGNvbnN0IEVtRGV2aWNlJiwgY29u
c3QgU2tpbk5hbWUmKTsKClJHQlR5cGUJCQlTa2luR2V0QmFja2dyb3VuZENvbG9yCSh2b2lkKTsK
UkdCVHlwZQkJCVNraW5HZXRIaWdobGlnaHRDb2xvcgkodm9pZCk7CgpTa2luRWxlbWVudFR5cGUJ
U2tpblRlc3RQb2ludAkJCShjb25zdCBFbVBvaW50JiB3aW5kb3dQdCk7CkVtUG9pbnQJCQlTa2lu
V2luZG93VG9Ub3VjaHNjcmVlbgkoY29uc3QgRW1Qb2ludCYgd2luZG93UHQpOwpFbVBvaW50CQkJ
U2tpblRvdWNoc2NyZWVuVG9XaW5kb3cJKGNvbnN0IEVtUG9pbnQmIGxjZFB0KTsKQm9vbAkJCVNr
aW5HZXRFbGVtZW50SW5mbwkJKGludCBpbmRleCwgU2tpbkVsZW1lbnRUeXBlJiwgRW1SZWN0Jik7
CgpFbVBvaW50CQkJU2tpblNjYWxlRG93bgkJCShjb25zdCBFbVBvaW50Jik7CkVtUmVjdAkJCVNr
aW5TY2FsZURvd24JCQkoY29uc3QgRW1SZWN0Jik7CgpFbVBvaW50CQkJU2tpblNjYWxlVXAJCQkJ
KGNvbnN0IEVtUG9pbnQmKTsKRW1SZWN0CQkJU2tpblNjYWxlVXAJCQkJKGNvbnN0IEVtUmVjdCYp
OwoKCiMgMTcgIi4uL1NyY1NoYXJlZC9IYXJkd2FyZS9FbUhBTC5oIiAyCgoKY2xhc3MgRW1IQUw7
CmNsYXNzIEVtUGl4TWFwOwpjbGFzcyBFbVNjcmVlblVwZGF0ZUluZm87CgplbnVtCnsKCWtMRURP
ZmYJCT0gMHgwMCwKCWtMRURHcmVlbgk9IDB4MDEsCglrTEVEUmVkCQk9IDB4MDIKfTsKCmVudW0g
RW1VQVJURGV2aWNlVHlwZQp7CglrVUFSVEJlZ2luCQk9IDAsCgoJa1VBUlRTZXJpYWwJCT0ga1VB
UlRCZWdpbiwKCWtVQVJUSVIsCglrVUFSVEJsdWV0b290aCwKCWtVQVJUTXlzdGVyeSwKCWtVQVJU
Tm9uZSwKCglrVUFSVEVuZAp9OwoKaW5saW5lICBFbVVBUlREZXZpY2VUeXBlIAlvcGVyYXRvcisr
KCBFbVVBUlREZXZpY2VUeXBlICYgeCkJewl4ID0gIEVtVUFSVERldmljZVR5cGUgICh4ICsgMSk7
CXJldHVybiB4Owl9CWlubGluZSAgRW1VQVJURGV2aWNlVHlwZSAJb3BlcmF0b3IrKyggRW1VQVJU
RGV2aWNlVHlwZSAmIHgsIGludCkJewkgRW1VQVJURGV2aWNlVHlwZSAgcmVzdWx0ID0geDsJeCA9
ICBFbVVBUlREZXZpY2VUeXBlICAoeCArIDEpOwlyZXR1cm4gcmVzdWx0Owl9CWlubGluZSAgRW1V
QVJURGV2aWNlVHlwZSAJb3BlcmF0b3ItLSggRW1VQVJURGV2aWNlVHlwZSAmIHgpCXsJeCA9ICBF
bVVBUlREZXZpY2VUeXBlICAoeCAtIDEpOwlyZXR1cm4geDsJfQlpbmxpbmUgIEVtVUFSVERldmlj
ZVR5cGUgCW9wZXJhdG9yLS0oIEVtVUFSVERldmljZVR5cGUgJiB4LCBpbnQpCXsJIEVtVUFSVERl
dmljZVR5cGUgIHJlc3VsdCA9IHg7CXggPSAgRW1VQVJURGV2aWNlVHlwZSAgKHggLSAxKTsJcmV0
dXJuIHJlc3VsdDsJfSAKCmNsYXNzIEVtSEFMSGFuZGxlcgp7CglwdWJsaWM6CgkJCQkJCQkJRW1I
QUxIYW5kbGVyCQkJKHZvaWQpOwoJCXZpcnR1YWwJCQkJCX5FbUhBTEhhbmRsZXIJCQkodm9pZCk7
CgoJCXZpcnR1YWwgdm9pZAkJCUN5Y2xlCQkJCQkoQm9vbCBzbGVlcGluZyk7CgkJdmlydHVhbCB2
b2lkCQkJQ3ljbGVTbG93bHkJCQkJKEJvb2wgc2xlZXBpbmcpOwoKCQl2aXJ0dWFsIHZvaWQJCQlC
dXR0b25FdmVudAkJCQkoU2tpbkVsZW1lbnRUeXBlLCBCb29sIGJ1dHRvbklzRG93bik7CgkJdmly
dHVhbCB2b2lkCQkJVHVyblNvdW5kT2ZmCQkJKHZvaWQpOwoJCXZpcnR1YWwgdm9pZAkJCVJlc2V0
VGltZXIJCQkJKHZvaWQpOwoJCXZpcnR1YWwgdm9pZAkJCVJlc2V0UlRDCQkJCSh2b2lkKTsKCgkJ
dmlydHVhbCBpbnQzMgkJCUdldEludGVycnVwdExldmVsCQkodm9pZCk7CgkJdmlydHVhbCBpbnQz
MgkJCUdldEludGVycnVwdEJhc2UJCSh2b2lkKTsKCgkJdmlydHVhbCBCb29sCQkJR2V0TENEU2Ny
ZWVuT24JCQkodm9pZCk7CgkJdmlydHVhbCBCb29sCQkJR2V0TENEQmFja2xpZ2h0T24JCSh2b2lk
KTsKCQl2aXJ0dWFsIEJvb2wJCQlHZXRMQ0RIYXNGcmFtZQkJCSh2b2lkKTsKCQl2aXJ0dWFsIHZv
aWQJCQlHZXRMQ0RCZWdpbkVuZAkJCShlbXVwdHImLCBlbXVwdHImKTsKCQl2aXJ0dWFsIHZvaWQJ
CQlHZXRMQ0RTY2FubGluZXMJCQkoRW1TY3JlZW5VcGRhdGVJbmZvJiBpbmZvKTsKCgkJdmlydHVh
bCBpbnQzMgkJCUdldER5bmFtaWNIZWFwU2l6ZQkJKHZvaWQpOwoJCXZpcnR1YWwgaW50MzIJCQlH
ZXRST01TaXplCQkJCSh2b2lkKTsKCQl2aXJ0dWFsIGVtdXB0cgkJCUdldFJPTUJhc2VBZGRyZXNz
CQkodm9pZCk7CgkJdmlydHVhbCBCb29sCQkJQ2hpcFNlbGVjdHNDb25maWd1cmVkCSh2b2lkKTsK
CQl2aXJ0dWFsIGludDMyCQkJR2V0U3lzdGVtQ2xvY2tGcmVxdWVuY3kJKHZvaWQpOwoJCXZpcnR1
YWwgQm9vbAkJCUdldENhblN0b3AJCQkJKHZvaWQpOwoJCXZpcnR1YWwgQm9vbAkJCUdldEFzbGVl
cAkJCQkodm9pZCk7CgoJCXZpcnR1YWwgdWludDgJCQlHZXRQb3J0SW5wdXRWYWx1ZQkJKGludCk7
CgkJdmlydHVhbCB1aW50OAkJCUdldFBvcnRJbnRlcm5hbFZhbHVlCShpbnQpOwoJCXZpcnR1YWwg
dm9pZAkJCVBvcnREYXRhQ2hhbmdlZAkJCShpbnQsIHVpbnQ4LCB1aW50OCk7CgkJdmlydHVhbCB2
b2lkCQkJR2V0S2V5SW5mbwkJCQkoaW50KiBudW1Sb3dzLCBpbnQqIG51bUNvbHMsCgkJCQkJCQkJ
CQkJCQkJIHVpbnQxNioga2V5TWFwLCBCb29sKiByb3dzKTsKCgkJdmlydHVhbCBCb29sCQkJR2V0
TGluZURyaXZlclN0YXRlCQkoRW1VQVJURGV2aWNlVHlwZSk7CgkJdmlydHVhbCBFbVVBUlREZXZp
Y2VUeXBlCUdldFVBUlREZXZpY2UJCShpbnQgdWFydE51bSk7CgoJCXZpcnR1YWwgQm9vbAkJCUdl
dERUUgkJCQkJKGludCB1YXJ0TnVtKTsKCgkJdmlydHVhbCBCb29sCQkJR2V0VmlicmF0ZU9uCQkJ
KHZvaWQpOwoJCXZpcnR1YWwgdWludDE2CQkJR2V0TEVEU3RhdGUJCQkJKHZvaWQpOwoKCXByb3Rl
Y3RlZDoKCQlFbUhBTEhhbmRsZXIqCQkJR2V0TmV4dEhhbmRsZXIJCQkodm9pZCkgeyByZXR1cm4g
Zk5leHRIYW5kbGVyOyB9CgoJcHJpdmF0ZToKCQlFbUhBTEhhbmRsZXIqCQkJZk5leHRIYW5kbGVy
OwoJCUVtSEFMSGFuZGxlcioJCQlmUHJldkhhbmRsZXI7CgoJCWZyaWVuZCBjbGFzcyBFbUhBTDsK
fTsKCgpjbGFzcyBFbUhBTAp7CglwdWJsaWM6CgkJc3RhdGljIHZvaWQJCQkJQWRkSGFuZGxlcgkJ
CQkoRW1IQUxIYW5kbGVyKik7CgkJc3RhdGljIHZvaWQJCQkJUmVtb3ZlSGFuZGxlcgkJCShFbUhB
TEhhbmRsZXIqKTsKCQlzdGF0aWMgdm9pZAkJCQlFbnN1cmVDb3ZlcmFnZQkJCSh2b2lkKTsKCgkJ
c3RhdGljIHZvaWQJCQkJQ3ljbGUJCQkJCShCb29sIHNsZWVwaW5nKTsKCQlzdGF0aWMgdm9pZAkJ
CQlDeWNsZVNsb3dseQkJCQkoQm9vbCBzbGVlcGluZyk7CgoJCXN0YXRpYyB2b2lkCQkJCUJ1dHRv
bkV2ZW50CQkJCShTa2luRWxlbWVudFR5cGUsIEJvb2wgYnV0dG9uSXNEb3duKTsKCQlzdGF0aWMg
dm9pZAkJCQlUdXJuU291bmRPZmYJCQkodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJUmVzZXRUaW1l
cgkJCQkodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJUmVzZXRSVEMJCQkJKHZvaWQpOwoKCQlzdGF0
aWMgaW50MzIJCQlHZXRJbnRlcnJ1cHRMZXZlbAkJKHZvaWQpOwoJCXN0YXRpYyBpbnQzMgkJCUdl
dEludGVycnVwdEJhc2UJCSh2b2lkKTsKCgkJc3RhdGljIEJvb2wJCQkJR2V0TENEU2NyZWVuT24J
CQkodm9pZCk7CgkJc3RhdGljIEJvb2wJCQkJR2V0TENEQmFja2xpZ2h0T24JCSh2b2lkKTsKCQlz
dGF0aWMgQm9vbAkJCQlHZXRMQ0RIYXNGcmFtZQkJCSh2b2lkKTsKCQlzdGF0aWMgdm9pZAkJCQlH
ZXRMQ0RCZWdpbkVuZAkJCShlbXVwdHImLCBlbXVwdHImKTsKCQlzdGF0aWMgdm9pZAkJCQlHZXRM
Q0RTY2FubGluZXMJCQkoRW1TY3JlZW5VcGRhdGVJbmZvJiBpbmZvKTsKCgkJc3RhdGljIGludDMy
CQkJR2V0RHluYW1pY0hlYXBTaXplCQkodm9pZCk7CgkJc3RhdGljIGludDMyCQkJR2V0Uk9NU2l6
ZQkJCQkodm9pZCk7CgkJc3RhdGljIGVtdXB0cgkJCUdldFJPTUJhc2VBZGRyZXNzCQkodm9pZCk7
CgkJc3RhdGljIEJvb2wJCQkJQ2hpcFNlbGVjdHNDb25maWd1cmVkCSh2b2lkKTsKCQlzdGF0aWMg
aW50MzIJCQlHZXRTeXN0ZW1DbG9ja0ZyZXF1ZW5jeQkodm9pZCk7CgkJc3RhdGljIEJvb2wJCQkJ
R2V0Q2FuU3RvcAkJCQkodm9pZCk7CgkJc3RhdGljIEJvb2wJCQkJR2V0QXNsZWVwCQkJCSh2b2lk
KTsKCgkJc3RhdGljIHVpbnQ4CQkJR2V0UG9ydElucHV0VmFsdWUJCShpbnQpOwoJCXN0YXRpYyB1
aW50OAkJCUdldFBvcnRJbnRlcm5hbFZhbHVlCShpbnQpOwoJCXN0YXRpYyB2b2lkCQkJCVBvcnRE
YXRhQ2hhbmdlZAkJCShpbnQsIHVpbnQ4LCB1aW50OCk7CgkJc3RhdGljIHZvaWQJCQkJR2V0S2V5
SW5mbwkJCQkoaW50KiBudW1Sb3dzLCBpbnQqIG51bUNvbHMsCgkJCQkJCQkJCQkJCQkJIHVpbnQx
Nioga2V5TWFwLCBCb29sKiByb3dzKTsKCgkJc3RhdGljIHZvaWQJCQkJTGluZURyaXZlckNoYW5n
ZWQJCShFbVVBUlREZXZpY2VUeXBlKTsKCQlzdGF0aWMgQm9vbAkJCQlHZXRMaW5lRHJpdmVyU3Rh
dGUJCShFbVVBUlREZXZpY2VUeXBlKTsKCQlzdGF0aWMgRW1VQVJURGV2aWNlVHlwZQlHZXRVQVJU
RGV2aWNlCQkJKGludCB1YXJ0TnVtKTsKCgkJc3RhdGljIHZvaWQJCQkJR2V0TGluZURyaXZlclN0
YXRlcwkJKEJvb2wqIHN0YXRlcyk7CgkJc3RhdGljIHZvaWQJCQkJQ29tcGFyZUxpbmVEcml2ZXJT
dGF0ZXMJKGNvbnN0IEJvb2wqIG9sZFN0YXRlcyk7CgoJCXN0YXRpYyBCb29sCQkJCUdldERUUgkJ
CQkJKGludCB1YXJ0TnVtKTsKCQlzdGF0aWMgdm9pZAkJCQlEVFJDaGFuZ2VkCQkJCShpbnQgdWFy
dE51bSk7CgoJCXN0YXRpYyBCb29sCQkJCUdldFZpYnJhdGVPbgkJCSh2b2lkKTsKCQlzdGF0aWMg
dWludDE2CQkJR2V0TEVEU3RhdGUJCQkJKHZvaWQpOwoKCXByaXZhdGU6CgkJc3RhdGljIEVtSEFM
SGFuZGxlcioJR2V0Um9vdEhhbmRsZXIJCQkodm9pZCkgeyByZXR1cm4gZmdSb290SGFuZGxlcjsg
fQoJCXN0YXRpYyBFbUhBTEhhbmRsZXIqCWZnUm9vdEhhbmRsZXI7Cn07CgppbmxpbmUgdm9pZCBF
bUhBTDo6Q3ljbGUgKEJvb2wgc2xlZXBpbmcpCnsKCSgodm9pZCkgMCkgOwoJRW1IQUw6OkdldFJv
b3RIYW5kbGVyKCktPkN5Y2xlIChzbGVlcGluZyk7Cn0KCgoKIyAxOSAiLi4vU3JjU2hhcmVkL1By
ZWZlcmVuY2VNZ3IuaCIgMgoKCgojIDEgIi4uL1NyY1NoYXJlZC9vbW5pdGhyZWFkL29tbml0aHJl
YWQuaCIgMQogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgogCiAK
IAogCiAKIAogCiAKIAogCgoKCgoKCgoKY2xhc3Mgb21uaV9tdXRleDsKY2xhc3Mgb21uaV9jb25k
aXRpb247CmNsYXNzIG9tbmlfc2VtYXBob3JlOwpjbGFzcyBvbW5pX3RocmVhZDsKCiAKIAogCiAK
IAogCgoKCgoKIAogCiAKIAogCiAKIAoKCiMgMTEwICIuLi9TcmNTaGFyZWQvb21uaXRocmVhZC9v
bW5pdGhyZWFkLmgiCgojIDEgIi4uL1NyY1NoYXJlZC9vbW5pdGhyZWFkL3NvbGFyaXMuaCIgMQog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvdGhyZWFkLmgiIDEgMyA0CiAKCgoKCiAKIAogCgoKCgojcHJhZ21hIGlkZW50
CSJAKCMpdGhyZWFkLmgJMS40Nwk5OC8wOC8xNCBTTUkiCgogCgoKCgoKCiMgMSAiL3Vzci9pbmNs
dWRlL3N5cy9zaWduYWwuaCIgMSAzIDQKIAoKCgoKIAogCgogCiAKIAoKCgoKI3ByYWdtYSBpZGVu
dAkiQCgjKXNpZ25hbC5oCTEuNTQJOTkvMDcvMjYgU01JIgkKCgojIDEgIi91c3IvaW5jbHVkZS9z
eXMvaXNvL3NpZ25hbF9pc28uaCIgMSAzIDQKIAoKCgoKIAogCgogCiAKIAoKIAoKCgoKCgoKCgoK
CgoKCiNwcmFnbWEgaWRlbnQJIkAoIylzaWduYWxfaXNvLmgJMS4xCTk5LzA4LzA5IFNNSSIgCgoK
CgpleHRlcm4gIkMiIHsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgpleHRlcm4gbG9uZyBfc3lzY29uZihpbnQpOwkgCgoKCgoKdHlwZWRlZgl2b2lkIFNJR19G
VU5DX1RZUChpbnQpOwp0eXBlZGVmCVNJR19GVU5DX1RZUCAqU0lHX1RZUDsKCgoKCgoKCiMgMTA5
ICIvdXNyL2luY2x1ZGUvc3lzL2lzby9zaWduYWxfaXNvLmgiIDMgNAoKCgoKCgoKCgoKCgoKCn0K
CgoKIyAxOSAiL3Vzci9pbmNsdWRlL3N5cy9zaWduYWwuaCIgMiAzIDQKCgoKZXh0ZXJuICJDIiB7
CgoKCgoKCgoKCiAKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2lnaW5mby5oIiAxIDMgNAogCiAK
CiAKCgoKCiAKIAogCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc2lnaW5mby5oCTEuNTQJOTgvMDMv
MjcgU01JIgkKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgogCgoKCgoKCgoKCgoKIyA0OSAiL3Vzci9p
bmNsdWRlL3N5cy9zaWdpbmZvLmgiIDMgNAoKCgoKCgoKCgoKCgoKCiAKCgoKIyA3NyAiL3Vzci9p
bmNsdWRlL3N5cy9zaWdpbmZvLmgiIDMgNAoKCiAKCgoKCiMgOTcgIi91c3IvaW5jbHVkZS9zeXMv
c2lnaW5mby5oIiAzIDQKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy9tYWNoc2lnLmgiIDEgMyA0CiAKIAoKIAogCiAKCiAKCgoKCgoKCiNwcmFnbWEg
aWRlbnQJIkAoIyltYWNoc2lnLmgJMS4xNQk5OS8wOC8xNSBTTUkiCgoKCgpleHRlcm4gIkMiIHsK
CgogCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgp9CgoKCiMgMTI2ICIvdXNyL2luY2x1
ZGUvc3lzL3NpZ2luZm8uaCIgMiAzIDQKCgogCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBzaWdpbmZvIHsgCQkgCgoKCglpbnQJc2lfc2lnbm87
CQkJIAoJaW50IAlzaV9jb2RlOwkJCSAKCWludAlzaV9lcnJubzsJCQkgCgoKCgl1bmlvbiB7CgoJ
CWludAlfX3BhZFsoKDEyOCAgLyBzaXplb2YgKGludCkpIC0gMykgXTsJCSAKCgkJc3RydWN0IHsJ
CQkgCgkJCXBpZF90CV9fcGlkOwkJIAoJCQl1bmlvbiB7CgkJCQlzdHJ1Y3QgewoJCQkJCXVpZF90
CV9fdWlkOwoKCgkJCQkJdW5pb24gc2lndmFsCV9fdmFsdWU7CgoKCgkJCQl9IF9fa2lsbDsKCQkJ
CXN0cnVjdCB7CgkJCQkJY2xvY2tfdCBfX3V0aW1lOwoJCQkJCWludAlfX3N0YXR1czsKCQkJCQlj
bG9ja190IF9fc3RpbWU7CgkJCQl9IF9fY2xkOwoJCQl9IF9fcGRhdGE7CgkJfSBfX3Byb2M7CgoJ
CXN0cnVjdCB7CSAKCQkJdm9pZCAJKl9fYWRkcjsJIAoJCQlpbnQJX190cmFwbm87CSAKCQkJY2Fk
ZHJfdAlfX3BjOwkJIAoJCX0gX19mYXVsdDsKCgkJc3RydWN0IHsJCQkgCgkJIAoJCQlpbnQJX19m
ZDsJCSAKCQkJbG9uZwlfX2JhbmQ7CgkJfSBfX2ZpbGU7CgoJCXN0cnVjdCB7CQkJIAoJCQljYWRk
cl90CV9fZmFkZHI7CSAKCgoJCQl0aW1lc3RydWNfdCBfX3RzdGFtcDsJIAoKCgoJCQlzaG9ydAlf
X3N5c2NhbGw7CSAKCQkJY2hhcglfX25zeXNhcmc7CSAKCQkJY2hhcglfX2ZhdWx0OwkgCgkJCWxv
bmcJX19zeXNhcmdbOF07CSAKCQkJaW50CV9fbXN0YXRlWzEwXTsJIAoJCX0gX19wcm9mOwoKCX0g
X19kYXRhOwoKfSBzaWdpbmZvX3Q7CgojIDM0NCAiL3Vzci9pbmNsdWRlL3N5cy9zaWdpbmZvLmgi
IDMgNAoKCiAKCgoKCgoKCnR5cGVkZWYgc3RydWN0IGtfc2lnaW5mbyB7CglpbnQJc2lfc2lnbm87
CQkJIAoJaW50IAlzaV9jb2RlOwkJCSAKCWludAlzaV9lcnJubzsJCQkgCgoKCgl1bmlvbiB7CgkJ
c3RydWN0IHsJCQkgCgkJCXBpZF90CV9fcGlkOwkJIAoJCQl1bmlvbiB7CgkJCQlzdHJ1Y3QgewoJ
CQkJCXVpZF90CV9fdWlkOwoJCQkJCXVuaW9uIHNpZ3ZhbAlfX3ZhbHVlOwoJCQkJfSBfX2tpbGw7
CgkJCQlzdHJ1Y3QgewoJCQkJCWNsb2NrX3QgX191dGltZTsKCQkJCQlpbnQJX19zdGF0dXM7CgkJ
CQkJY2xvY2tfdCBfX3N0aW1lOwoJCQkJfSBfX2NsZDsKCQkJfSBfX3BkYXRhOwoJCX0gX19wcm9j
OwoKCQlzdHJ1Y3QgewkgCgkJCXZvaWQgCSpfX2FkZHI7CSAKCQkJaW50CV9fdHJhcG5vOwkgCgkJ
CWNhZGRyX3QJX19wYzsJCSAKCQl9IF9fZmF1bHQ7CgoJCXN0cnVjdCB7CQkJIAoJCSAKCQkJaW50
CV9fZmQ7CQkgCgkJCWxvbmcJX19iYW5kOwoJCX0gX19maWxlOwoKCQlzdHJ1Y3QgewkJCSAKCQkJ
Y2FkZHJfdAlfX2ZhZGRyOwkgCgoKCgkJCXRpbWVzdHJ1Y190IF9fdHN0YW1wOwkgCgoKCgkJCXNo
b3J0CV9fc3lzY2FsbDsJIAoJCQljaGFyCV9fbnN5c2FyZzsJIAoJCQljaGFyCV9fZmF1bHQ7CSAK
CQkJIAoJCQkgCgkJCSAKCQl9IF9fcHJvZjsKCgl9IF9fZGF0YTsKCn0ga19zaWdpbmZvX3Q7Cgp0
eXBlZGVmIHN0cnVjdCBzaWdxdWV1ZSB7CglzdHJ1Y3Qgc2lncXVldWUJKnNxX25leHQ7CglrX3Np
Z2luZm9fdAlzcV9pbmZvOwoJdm9pZAkJKCpzcV9mdW5jKShzdHJ1Y3Qgc2lncXVldWUgKik7ICAK
CXZvaWQJCSpzcV9iYWNrcHRyOwkgCgkJCQkJIAp9IHNpZ3F1ZXVlX3Q7CgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKfQoKCgojIDM1ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25h
bC5oIiAyIDMgNAoKCgoKIAoKCnR5cGVkZWYgc3RydWN0IHsJCSAKCXVuc2lnbmVkIGludAlfX3Np
Z2JpdHNbNF07Cn0gc2lnc2V0X3Q7CgojIDU0ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAz
IDQKCgoKCnR5cGVkZWYJc3RydWN0IHsKCXVuc2lnbmVkIGludAlfX3NpZ2JpdHNbMl07Cn0ga19z
aWdzZXRfdDsKCiAKCgoKCgoKCgoKCiAKCgpzdHJ1Y3Qgc2lnYWN0aW9uIHsKCWludCBzYV9mbGFn
czsKCXVuaW9uIHsKCgkJdm9pZCAoKl9oYW5kbGVyKShpbnQpOwoKCgoKCgoJCXZvaWQgKCpfc2ln
YWN0aW9uKShpbnQsIHNpZ2luZm9fdCAqLCB2b2lkICopOwoKCX0JX2Z1bmNwdHI7CglzaWdzZXRf
dCBzYV9tYXNrOwoKCWludCBzYV9yZXN2WzJdOwoKfTsKCgoKIyAxMTIgIi91c3IvaW5jbHVkZS9z
eXMvc2lnbmFsLmgiIDMgNAoKCiAKCgoKCgoKCgkJCSAKCiAKCgoKCgoKCgoKCgoKCgoKIAoKCiAK
CgoKIAoKCgoKCgkJCSAKCQkJIAoJCQkgCgoKCgoKCgoKCgoKCgogCgoKCnR5cGVkZWYgc3RydWN0
IHNpZ2FsdHN0YWNrIHsKCgoKCXZvaWQJKnNzX3NwOwoJc2l6ZV90CXNzX3NpemU7CglpbnQJc3Nf
ZmxhZ3M7Cn0gc3RhY2tfdDsKCiMgMTkyICIvdXNyL2luY2x1ZGUvc3lzL3NpZ25hbC5oIiAzIDQK
CgoKCgoKCgoKIAp0eXBlZGVmIHN0cnVjdCBzaWdub3RpZnlfaWQgewkJIAoJcGlkX3QJc25fcGlk
OwkJCSAKCWludAlzbl9pbmRleDsJCSAKCWludAlzbl9wYWQ7CQkJIAp9IHNpZ25vdGlmeV9pZF90
OwoKIyAyMTggIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAoKCiAKCgoKCgoKCiAKCgoK
c3RydWN0IHNpZ3N0YWNrIHsKCXZvaWQJKnNzX3NwOwoJaW50CXNzX29uc3RhY2s7Cn07CgoKIAoK
CgoKCgoKIyAzMDkgIi91c3IvaW5jbHVkZS9zeXMvc2lnbmFsLmgiIDMgNAoKCgp9CgoKCiMgMjIg
Ii91c3IvaW5jbHVkZS90aHJlYWQuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9zeW5jaC5o
IiAxIDMgNAogCgoKCgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc3luY2guaAkxLjQ3CTAxLzA3LzA3
IFNNSSIKCiAKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeW5jaC5oIiAxIDMgNAogCgoK
CgoKCgojcHJhZ21hIGlkZW50CSJAKCMpc3luY2guaAkxLjM4CTAxLzA3LzA3IFNNSSIKCgoKCgoK
CmV4dGVybiAiQyIgewoKCgogCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX2x3cF9tdXRl
eCB7CglzdHJ1Y3QgewoJCXVpbnQxNl90CWZsYWcxOwoJCXVpbnQ4X3QJCWZsYWcyOwoJCXVpbnQ4
X3QJCWNlaWxpbmc7CgkJdW5pb24gewoJCQl1aW50MTZfdCBiY3B0eXBlOwoJCQlzdHJ1Y3QgewoJ
CQkJdWludDhfdAljb3VudF90eXBlMTsKCQkJCXVpbnQ4X3QJY291bnRfdHlwZTI7CgkJCX0gbXR5
cGVfcmNvdW50OwoJCX0gbWJjcF90eXBlX3VuOwoJCXVpbnQxNl90CW1hZ2ljOwoJfSBmbGFnczsK
CXVuaW9uIHsKCQlzdHJ1Y3QgewoJCQl1aW50OF90CXBhZFs4XTsKCQl9IGxvY2s2NDsKCQlzdHJ1
Y3QgewoJCQl1aW50MzJfdCBvd25lcnBpZDsKCQkJdWludDMyX3QgbG9ja3dvcmQ7CgkJfSBsb2Nr
MzI7CgkJdXBhZDY0X3Qgb3duZXI2NDsKCX0gbG9jazsKCXVwYWQ2NF90IGRhdGE7Cn0gbHdwX211
dGV4X3Q7CgogCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9sd3BfY29uZCB7CglzdHJ1Y3QgewoJCXVp
bnQ4X3QJCWZsYWdbNF07CgkJdWludDE2X3QgCXR5cGU7CgkJdWludDE2X3QgCW1hZ2ljOwoJfSBm
bGFnczsKCXVwYWQ2NF90IGRhdGE7Cn0gbHdwX2NvbmRfdDsKCiAKCgp0eXBlZGVmIHN0cnVjdCBf
bHdwX3NlbWEgewoJdWludDMyX3QJY291bnQ7CQkgCgl1aW50MTZfdCAJdHlwZTsKCXVpbnQxNl90
IAltYWdpYzsKCXVpbnQ4X3QJCWZsYWdzWzhdOwkgCgl1cGFkNjRfdAlkYXRhOwkJIAp9IGx3cF9z
ZW1hX3Q7CgoKIAoKCgoKCiAKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCn0KCgoKIyAxOSAiL3Vz
ci9pbmNsdWRlL3N5bmNoLmgiIDIgMyA0CgoKCgpleHRlcm4gIkMiIHsKCgoKCiAKCgp0eXBlZGVm
IHN0cnVjdCBfc2VtYSB7CgkgCgl1aW50MzJfdAljb3VudDsJCSAKCXVpbnQxNl90CXR5cGU7Cgl1
aW50MTZfdAltYWdpYzsKCXVwYWQ2NF90CXBhZDFbM107CSAKCXVwYWQ2NF90IAlwYWQyWzJdOwkg
Cn0gc2VtYV90OwoKIAoKCgoKCgoKCgoKdHlwZWRlZiBsd3BfbXV0ZXhfdCBtdXRleF90Owp0eXBl
ZGVmIGx3cF9jb25kX3QgY29uZF90OwoKIAoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfcndsb2NrIHsK
CWludDMyX3QJCXJlYWRlcnM7CSAKCXVpbnQxNl90CXR5cGU7Cgl1aW50MTZfdAltYWdpYzsKCXVp
bnQxNl90CXBhZDFbNF07CSAKCXVwYWQ2NF90CXBhZDEwWzJdOwkgCgl1aW50MTZfdAlwYWQyWzRd
OwkgCgl1cGFkNjRfdAlwYWQyMDsJCSAKCXVpbnQxNl90CXBhZDNbNF07CSAKCXVwYWQ2NF90CXBh
ZDMwOwkJIAp9IHJ3bG9ja190OwoKCmludAlfbHdwX211dGV4X2xvY2sobHdwX211dGV4X3QgKik7
CmludAlfbHdwX211dGV4X3VubG9jayhsd3BfbXV0ZXhfdCAqKTsKaW50CV9sd3BfbXV0ZXhfdHJ5
bG9jayhsd3BfbXV0ZXhfdCAqKTsKaW50CV9sd3BfY29uZF93YWl0KGx3cF9jb25kX3QgKiwgbHdw
X211dGV4X3QgKik7CmludAlfbHdwX2NvbmRfdGltZWR3YWl0KGx3cF9jb25kX3QgKiwgbHdwX211
dGV4X3QgKiwgdGltZXN0cnVjX3QgKik7CmludAlfbHdwX2NvbmRfcmVsdGltZWR3YWl0KGx3cF9j
b25kX3QgKiwgbHdwX211dGV4X3QgKiwgdGltZXN0cnVjX3QgKik7CmludAlfbHdwX2NvbmRfc2ln
bmFsKGx3cF9jb25kX3QgKik7CmludAlfbHdwX2NvbmRfYnJvYWRjYXN0KGx3cF9jb25kX3QgKik7
CmludAlfbHdwX3NlbWFfaW5pdChsd3Bfc2VtYV90ICosIGludCk7CmludAlfbHdwX3NlbWFfd2Fp
dChsd3Bfc2VtYV90ICopOwppbnQJX2x3cF9zZW1hX3RyeXdhaXQobHdwX3NlbWFfdCAqKTsKaW50
CV9sd3Bfc2VtYV9wb3N0KGx3cF9zZW1hX3QgKik7CmludAljb25kX2luaXQoY29uZF90ICosIGlu
dCwgdm9pZCAqKTsKaW50CWNvbmRfZGVzdHJveShjb25kX3QgKik7CmludAljb25kX3dhaXQoY29u
ZF90ICosIG11dGV4X3QgKik7CmludAljb25kX3RpbWVkd2FpdChjb25kX3QgKiwgbXV0ZXhfdCAq
LCB0aW1lc3RydWNfdCAqKTsKaW50CWNvbmRfcmVsdGltZWR3YWl0KGNvbmRfdCAqLCBtdXRleF90
ICosIHRpbWVzdHJ1Y190ICopOwppbnQJY29uZF9zaWduYWwoY29uZF90ICopOwppbnQJY29uZF9i
cm9hZGNhc3QoY29uZF90ICopOwppbnQJbXV0ZXhfaW5pdChtdXRleF90ICosIGludCwgdm9pZCAq
KTsKaW50CW11dGV4X2Rlc3Ryb3kobXV0ZXhfdCAqKTsKaW50CW11dGV4X2xvY2sobXV0ZXhfdCAq
KTsKaW50CW11dGV4X3RyeWxvY2sobXV0ZXhfdCAqKTsKaW50CW11dGV4X3VubG9jayhtdXRleF90
ICopOwppbnQJcndsb2NrX2luaXQocndsb2NrX3QgKiwgaW50LCB2b2lkICopOwppbnQJcndsb2Nr
X2Rlc3Ryb3kocndsb2NrX3QgKik7CmludAlyd19yZGxvY2socndsb2NrX3QgKik7CmludAlyd193
cmxvY2socndsb2NrX3QgKik7CmludAlyd191bmxvY2socndsb2NrX3QgKik7CmludAlyd190cnly
ZGxvY2socndsb2NrX3QgKik7CmludAlyd190cnl3cmxvY2socndsb2NrX3QgKik7CmludAlzZW1h
X2luaXQoc2VtYV90ICosIHVuc2lnbmVkIGludCwgaW50LCB2b2lkICopOwppbnQJc2VtYV9kZXN0
cm95KHNlbWFfdCAqKTsKaW50CXNlbWFfd2FpdChzZW1hX3QgKik7CmludAlzZW1hX3Bvc3Qoc2Vt
YV90ICopOwppbnQJc2VtYV90cnl3YWl0KHNlbWFfdCAqKTsKCiMgMTUwICIvdXNyL2luY2x1ZGUv
c3luY2guaCIgMyA0CgoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCmludCBfc2VtYV9oZWxkKHNlbWFfdCAqKTsKaW50IF9yd19yZWFk
X2hlbGQocndsb2NrX3QgKik7CmludCBfcndfd3JpdGVfaGVsZChyd2xvY2tfdCAqKTsKaW50IF9t
dXRleF9oZWxkKG11dGV4X3QgKik7CgoKCgoKCgoKCgoKCgp9CgoKCiMgMjQgIi91c3IvaW5jbHVk
ZS90aHJlYWQuaCIgMiAzIDQKCgoKCmV4dGVybiAiQyIgewoKCgp0eXBlZGVmIHVuc2lnbmVkIGlu
dCB0aHJlYWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdGhyZWFkX2tleV90OwoKCgoKCmV4dGVy
biBpbnQgdGhyX2NyZWF0ZSh2b2lkICosIHNpemVfdCwgdm9pZCAqKCopKHZvaWQgKiksIHZvaWQg
KiwgbG9uZywKCQkJdGhyZWFkX3QgKik7CmV4dGVybiBpbnQgdGhyX2pvaW4odGhyZWFkX3QsIHRo
cmVhZF90ICosIHZvaWQgKiopOwpleHRlcm4gaW50IHRocl9zZXRjb25jdXJyZW5jeShpbnQpOwpl
eHRlcm4gaW50IHRocl9nZXRjb25jdXJyZW5jeSh2b2lkKTsKZXh0ZXJuIHZvaWQgdGhyX2V4aXQo
dm9pZCAqKTsKZXh0ZXJuIHRocmVhZF90IHRocl9zZWxmKHZvaWQpOwoKIAoKCgoKCmV4dGVybiBp
bnQgdGhyX3NpZ3NldG1hc2soaW50LCBjb25zdCBzaWdzZXRfdCAqLCBzaWdzZXRfdCAqKTsKCgog
CgoKCgoKZXh0ZXJuIGludCB0aHJfc3Rrc2VnbWVudChzdGFja190ICopOwoKCmV4dGVybiBpbnQg
dGhyX21haW4odm9pZCk7CmV4dGVybiBpbnQgdGhyX2tpbGwodGhyZWFkX3QsIGludCk7CmV4dGVy
biBpbnQgdGhyX3N1c3BlbmQodGhyZWFkX3QpOwpleHRlcm4gaW50IHRocl9jb250aW51ZSh0aHJl
YWRfdCk7CmV4dGVybiB2b2lkIHRocl95aWVsZCh2b2lkKTsKZXh0ZXJuIGludCB0aHJfc2V0cHJp
byh0aHJlYWRfdCwgaW50KTsKZXh0ZXJuIGludCB0aHJfZ2V0cHJpbyh0aHJlYWRfdCwgaW50ICop
OwpleHRlcm4gaW50IHRocl9rZXljcmVhdGUodGhyZWFkX2tleV90ICosIHZvaWQoKikodm9pZCAq
KSk7CmV4dGVybiBpbnQgdGhyX3NldHNwZWNpZmljKHRocmVhZF9rZXlfdCwgdm9pZCAqKTsKZXh0
ZXJuIGludCB0aHJfZ2V0c3BlY2lmaWModGhyZWFkX2tleV90LCB2b2lkICoqKTsKZXh0ZXJuIHNp
emVfdCB0aHJfbWluX3N0YWNrKHZvaWQpOwoKIyA5OSAiL3Vzci9pbmNsdWRlL3RocmVhZC5oIiAz
IDQKCgoKCiAKCgogCgoKCgoKCgoKCgoKIAoKCgoKCgoKCn0KCgoKIyAyOSAiLi4vU3JjU2hhcmVk
L29tbml0aHJlYWQvc29sYXJpcy5oIiAyCgoKZXh0ZXJuICJDIiB2b2lkKiBvbW5pX3RocmVhZF93
cmFwcGVyKHZvaWQqIHB0cik7CgoKCgoKCgoKCgoKCgoKCgojIDExMSAiLi4vU3JjU2hhcmVkL29t
bml0aHJlYWQvb21uaXRocmVhZC5oIiAyCgogCiMgMTYyICIuLi9TcmNTaGFyZWQvb21uaXRocmVh
ZC9vbW5pdGhyZWFkLmgiCgoKCgoKCgoKCgoKCgoKIAogCiAKCmNsYXNzICAgb21uaV90aHJlYWRf
ZmF0YWwgewpwdWJsaWM6CiAgICBpbnQgZXJyb3I7CiAgICBvbW5pX3RocmVhZF9mYXRhbChpbnQg
ZSA9IDApIDogZXJyb3IoZSkge30KfTsKCgogCiAKIAogCgpjbGFzcyAgIG9tbmlfdGhyZWFkX2lu
dmFsaWQge307CgoKIAogCiAKIAogCgpjbGFzcyAgIG9tbmlfbXV0ZXggewoKcHVibGljOgogICAg
b21uaV9tdXRleCh2b2lkKTsKICAgIH5vbW5pX211dGV4KHZvaWQpOwoKICAgIHZvaWQgbG9jayh2
b2lkKTsKICAgIHZvaWQgdW5sb2NrKHZvaWQpOwogICAgdm9pZCBhY3F1aXJlKHZvaWQpIHsgbG9j
aygpOyB9CiAgICB2b2lkIHJlbGVhc2Uodm9pZCkgeyB1bmxvY2soKTsgfQoJIAoJIAoKICAgIGZy
aWVuZCBjbGFzcyBvbW5pX2NvbmRpdGlvbjsKCnByaXZhdGU6CiAgICAgCiAgICBvbW5pX211dGV4
KGNvbnN0IG9tbmlfbXV0ZXgmKTsKICAgIG9tbmlfbXV0ZXgmIG9wZXJhdG9yPShjb25zdCBvbW5p
X211dGV4Jik7Cgpwcml2YXRlIDoKICAgIG11dGV4X3Qgc29sX211dGV4OyAKfTsKCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgpjbGFzcyAgIG9tbmlfbXV0ZXhfbG9jayB7CiAg
ICBvbW5pX211dGV4JiBtdXRleDsKcHVibGljOgogICAgb21uaV9tdXRleF9sb2NrKG9tbmlfbXV0
ZXgmIG0pIDogbXV0ZXgobSkgeyBtdXRleC5sb2NrKCk7IH0KICAgIH5vbW5pX211dGV4X2xvY2so
dm9pZCkgeyBtdXRleC51bmxvY2soKTsgfQpwcml2YXRlOgogICAgIAogICAgb21uaV9tdXRleF9s
b2NrKGNvbnN0IG9tbmlfbXV0ZXhfbG9jayYpOwogICAgb21uaV9tdXRleF9sb2NrJiBvcGVyYXRv
cj0oY29uc3Qgb21uaV9tdXRleF9sb2NrJik7Cn07CgoKIAogCgpjbGFzcyAgIG9tbmlfbXV0ZXhf
dW5sb2NrIHsKICAgIG9tbmlfbXV0ZXgmIG11dGV4OwpwdWJsaWM6CiAgICBvbW5pX211dGV4X3Vu
bG9jayhvbW5pX211dGV4JiBtKSA6IG11dGV4KG0pIHsgbXV0ZXgudW5sb2NrKCk7IH0KICAgIH5v
bW5pX211dGV4X3VubG9jayh2b2lkKSB7IG11dGV4LmxvY2soKTsgfQpwcml2YXRlOgogICAgIAog
ICAgb21uaV9tdXRleF91bmxvY2soY29uc3Qgb21uaV9tdXRleF91bmxvY2smKTsKICAgIG9tbmlf
bXV0ZXhfdW5sb2NrJiBvcGVyYXRvcj0oY29uc3Qgb21uaV9tdXRleF91bmxvY2smKTsKfTsKCiAK
IAogCiAKIAoKY2xhc3MgICBvbW5pX2NvbmRpdGlvbiB7CgogICAgb21uaV9tdXRleCogbXV0ZXg7
CgpwdWJsaWM6CiAgICBvbW5pX2NvbmRpdGlvbihvbW5pX211dGV4KiBtKTsKCSAKCSAKCSAKCiAg
ICB+b21uaV9jb25kaXRpb24odm9pZCk7CgogICAgdm9pZCB3YWl0KHZvaWQpOwoJIAoJIAoJIAoJ
IAoKICAgIGludCB0aW1lZHdhaXQodW5zaWduZWQgbG9uZyBzZWNzLCB1bnNpZ25lZCBsb25nIG5h
bm9zZWNzID0gMCk7CgkgCgkgCgkgCgkgCgkgCgogICAgdm9pZCBzaWduYWwodm9pZCk7CgkgCgkg
CgkgCgogICAgdm9pZCBicm9hZGNhc3Qodm9pZCk7CgkgCgkgCgpwcml2YXRlOgogICAgIAogICAg
b21uaV9jb25kaXRpb24oY29uc3Qgb21uaV9jb25kaXRpb24mKTsKICAgIG9tbmlfY29uZGl0aW9u
JiBvcGVyYXRvcj0oY29uc3Qgb21uaV9jb25kaXRpb24mKTsKCnByaXZhdGUgOgogICAgY29uZF90
IHNvbF9jb25kOyAKfTsKCgogCiAKIAogCiAKCmNsYXNzICAgb21uaV9zZW1hcGhvcmUgewoKcHVi
bGljOgogICAgb21uaV9zZW1hcGhvcmUodW5zaWduZWQgaW50IGluaXRpYWwgPSAxKTsKICAgIH5v
bW5pX3NlbWFwaG9yZSh2b2lkKTsKCiAgICB2b2lkIHdhaXQodm9pZCk7CgkgCgkgCgogICAgaW50
IHRyeXdhaXQodm9pZCk7CgkgCgkgCgogICAgdm9pZCBwb3N0KHZvaWQpOwoJIAoJIAoKcHJpdmF0
ZToKICAgICAKICAgIG9tbmlfc2VtYXBob3JlKGNvbnN0IG9tbmlfc2VtYXBob3JlJik7CiAgICBv
bW5pX3NlbWFwaG9yZSYgb3BlcmF0b3I9KGNvbnN0IG9tbmlfc2VtYXBob3JlJik7Cgpwcml2YXRl
IDoKICAgIHNlbWFfdCBzb2xfc2VtOyAKfTsKCiAKIAogCgpjbGFzcyAgIG9tbmlfc2VtYXBob3Jl
X2xvY2sgewogICAgb21uaV9zZW1hcGhvcmUmIHNlbTsKcHVibGljOgogICAgb21uaV9zZW1hcGhv
cmVfbG9jayhvbW5pX3NlbWFwaG9yZSYgcykgOiBzZW0ocykgeyBzZW0ud2FpdCgpOyB9CiAgICB+
b21uaV9zZW1hcGhvcmVfbG9jayh2b2lkKSB7IHNlbS5wb3N0KCk7IH0KcHJpdmF0ZToKICAgICAK
ICAgIG9tbmlfc2VtYXBob3JlX2xvY2soY29uc3Qgb21uaV9zZW1hcGhvcmVfbG9jayYpOwogICAg
b21uaV9zZW1hcGhvcmVfbG9jayYgb3BlcmF0b3I9KGNvbnN0IG9tbmlfc2VtYXBob3JlX2xvY2sm
KTsKfTsKCgogCiAKIAogCiAKCmNsYXNzICAgb21uaV90aHJlYWQgewoKcHVibGljOgoKICAgIGVu
dW0gcHJpb3JpdHlfdCB7CglQUklPUklUWV9MT1csCglQUklPUklUWV9OT1JNQUwsCglQUklPUklU
WV9ISUdICiAgICB9OwoKICAgIGVudW0gc3RhdGVfdCB7CglTVEFURV9ORVcsCQkgCgkJCQkgCglT
VEFURV9SVU5OSU5HLAkJIAoJU1RBVEVfVEVSTUlOQVRFRAkgCgkJCQkgCiAgICB9OwoKICAgICAK
ICAgICAKICAgICAKICAgICAKICAgICAKCiAgICBvbW5pX3RocmVhZCh2b2lkICgqZm4pKHZvaWQq
KSwgdm9pZCogYXJnID0gX19udWxsICwKCQlwcmlvcml0eV90IHByaSA9IFBSSU9SSVRZX05PUk1B
TCk7CiAgICBvbW5pX3RocmVhZCh2b2lkKiAoKmZuKSh2b2lkKiksIHZvaWQqIGFyZyA9IF9fbnVs
bCAsCgkJcHJpb3JpdHlfdCBwcmkgPSBQUklPUklUWV9OT1JNQUwpOwoJIAoJIAoJIAoJIAoJIAoJ
IAoKICAgIHZvaWQgc3RhcnQodm9pZCk7CgkgCgkgCgpwcm90ZWN0ZWQ6CgogICAgb21uaV90aHJl
YWQodm9pZCogYXJnID0gX19udWxsICwgcHJpb3JpdHlfdCBwcmkgPSBQUklPUklUWV9OT1JNQUwp
OwoJIAoJIAoJIAoKICAgIHZvaWQgc3RhcnRfdW5kZXRhY2hlZCh2b2lkKTsKCSAKCSAKCSAKCiAg
ICB2aXJ0dWFsIH5vbW5pX3RocmVhZCh2b2lkKTsKCSAKCSAKCSAKCSAKCSAKCSAKCnB1YmxpYzoK
CiAgICB2b2lkIGpvaW4odm9pZCoqKTsKCSAKCSAKCSAKCSAKCiAgICB2b2lkIHNldF9wcmlvcml0
eShwcmlvcml0eV90KTsKCSAKCiAgICBzdGF0aWMgb21uaV90aHJlYWQqIGNyZWF0ZSh2b2lkICgq
Zm4pKHZvaWQqKSwgdm9pZCogYXJnID0gX19udWxsICwKCQkJICAgICAgIHByaW9yaXR5X3QgcHJp
ID0gUFJJT1JJVFlfTk9STUFMKTsKICAgIHN0YXRpYyBvbW5pX3RocmVhZCogY3JlYXRlKHZvaWQq
ICgqZm4pKHZvaWQqKSwgdm9pZCogYXJnID0gX19udWxsICwKCQkJICAgICAgIHByaW9yaXR5X3Qg
cHJpID0gUFJJT1JJVFlfTk9STUFMKTsKCSAKCSAKCSAKCSAKCiAgICBzdGF0aWMgdm9pZCBleGl0
KHZvaWQqIHJldHVybl92YWx1ZSA9IF9fbnVsbCApOwoJIAoKICAgIHN0YXRpYyBvbW5pX3RocmVh
ZCogc2VsZih2b2lkKTsKCSAKCSAKCSAKCiAgICBzdGF0aWMgdm9pZCB5aWVsZCh2b2lkKTsKCSAK
CiAgICBzdGF0aWMgdm9pZCBzbGVlcCh1bnNpZ25lZCBsb25nIHNlY3MsIHVuc2lnbmVkIGxvbmcg
bmFub3NlY3MgPSAwKTsKCSAKCiAgICBzdGF0aWMgdm9pZCBnZXRfdGltZSh1bnNpZ25lZCBsb25n
KiBhYnNfc2VjLCB1bnNpZ25lZCBsb25nKiBhYnNfbnNlYywKCQkJIHVuc2lnbmVkIGxvbmcgcmVs
X3NlYyA9IDAsIHVuc2lnbmVkIGxvbmcgcmVsX25zZWM9MCk7CgkgCgkgCgkgCgpwcml2YXRlOgoK
ICAgIHZpcnR1YWwgdm9pZCBydW4odm9pZCogICkge30KICAgIHZpcnR1YWwgdm9pZCogcnVuX3Vu
ZGV0YWNoZWQodm9pZCogICkgeyByZXR1cm4gX19udWxsIDsgfQoJIAoJIAoJIAoKICAgIHZvaWQg
Y29tbW9uX2NvbnN0cnVjdG9yKHZvaWQqIGFyZywgcHJpb3JpdHlfdCBwcmksIGludCBkZXQpOwoJ
IAoKICAgIG9tbmlfbXV0ZXggbXV0ZXg7CgkgCgkgCgogICAgc3RhdGVfdCBfc3RhdGU7CiAgICBw
cmlvcml0eV90IF9wcmlvcml0eTsKCglzdGF0aWMgb21uaV90aHJlYWQqIHJvb3RfdGhyZWFkOwog
ICAgc3RhdGljIG9tbmlfbXV0ZXgqIG5leHRfaWRfbXV0ZXg7CiAgICBzdGF0aWMgaW50IG5leHRf
aWQ7CiAgICBpbnQgX2lkOwoKICAgIHZvaWQgKCpmbl92b2lkKSh2b2lkKik7CiAgICB2b2lkKiAo
KmZuX3JldCkodm9pZCopOwogICAgdm9pZCogdGhyZWFkX2FyZzsKICAgIGludCBkZXRhY2hlZDsK
CnB1YmxpYzoKCiAgICBwcmlvcml0eV90IHByaW9yaXR5KHZvaWQpIHsKCgkgCgoJb21uaV9tdXRl
eF9sb2NrIGwobXV0ZXgpOwoJcmV0dXJuIF9wcmlvcml0eTsKICAgIH0KCiAgICBzdGF0ZV90IHN0
YXRlKHZvaWQpIHsKCgkgCgoJb21uaV9tdXRleF9sb2NrIGwobXV0ZXgpOwoJcmV0dXJuIF9zdGF0
ZTsKICAgIH0KCiAgICBpbnQgaWQodm9pZCkgeyByZXR1cm4gX2lkOyB9CgkgCgoKICAgICAKICAg
ICAKCiAgICBjbGFzcyAgIGluaXRfdCB7CglzdGF0aWMgaW50IGNvdW50OwogICAgcHVibGljOgoJ
aW5pdF90KHZvaWQpOwoJfmluaXRfdCAodm9pZCk7CiAgICB9OwoKICAgIGZyaWVuZCBjbGFzcyBp
bml0X3Q7Cgpwcml2YXRlIDoKICAgIHRocmVhZF90IHNvbF90aHJlYWQ7CXN0YXRpYyBpbnQgc29s
X3ByaW9yaXR5KHByaW9yaXR5X3QpOwlmcmllbmQgdm9pZCogb21uaV90aHJlYWRfd3JhcHBlcih2
b2lkKiBwdHIpOyAKfTsKCnN0YXRpYyBvbW5pX3RocmVhZDo6aW5pdF90IG9tbmlfdGhyZWFkX2lu
aXQ7CgoKIyAyMiAiLi4vU3JjU2hhcmVkL1ByZWZlcmVuY2VNZ3IuaCIgMgoKCiMgMSAiL3Vzci9s
b2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvaW5jbHVkZS9zdGRp
by5oIiAxIDMgNAoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMgNAogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgv
Mi45NS4zL2luY2x1ZGUvdmEtc3BhcmMuaCIgMSAzIDQKIAoKCiAKCgoKCgoKCgogCgp0eXBlZGVm
IHZvaWQgKiBfX2dudWNfdmFfbGlzdDsKCgoKIAoKIyAxNjUgIi91c3IvbG9jYWwvbGliL2djYy1s
aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvdmEtc3BhcmMuaCIgMyA0Cgoj
IDMwICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9p
bmNsdWRlL3N0ZGFyZy5oIiAyIDMgNAoKIyAxMzUgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvc3RkYXJnLmgiIDMgNAoKCgoKCgoKIyAy
MDkgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2lu
Y2x1ZGUvc3RkYXJnLmgiIDMgNAoKCgoKIyAyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgogCiAKCiAKIAog
CgogCgoKCgogCgoKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIylzdGRpby5oCTEuNzgJOTkvMTIvMDgg
U01JIgkKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8y
Ljk1LjMvaW5jbHVkZS9pc28vc3RkaW9faXNvLmgiIDEgMyA0CiAKIAoKIAogCiAKCiAKCgoKCiAK
CgoKCgoKCgoKCgogCgoKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIylzdGRpb19pc28uaAkxLjIJOTkv
MTAvMjUgU01JIgogCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3ZhX2xpc3QuaCIgMSAzIDQKIAoK
CgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXZhX2xpc3QuaAkxLjEyCTk5LzA1LzA0IFNNSSIKCiAK
CgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCgp0eXBlZGVmIHZvaWQgKl9fdmFfbGlzdDsKCgoKCgp9
CgoKCiMgMzYgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45
NS4zL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAyIDMgNAoKIyAxICIvdXNyL2luY2x1ZGUvc3Rk
aW9fdGFnLmgiIDEgMyA0CiAKCgoKCgoKCiNwcmFnbWEgaWRlbnQJIkAoIylzdGRpb190YWcuaAkx
LjMJOTgvMDQvMjAgU01JIgoKCmV4dGVybiAiQyIgewoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IEZJ
TEUgIF9fRklMRTsKCgoKfQoKCgojIDM3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL2lzby9zdGRpb19pc28uaCIgMiAzIDQKCiMgMSAi
L3Vzci9pbmNsdWRlL3N0ZGlvX2ltcGwuaCIgMSAzIDQKIAoKCgoKCgoKI3ByYWdtYSBpZGVudAki
QCgjKXN0ZGlvX2ltcGwuaAkxLjgJOTkvMDYvMTAgU01JIgoKCgoKZXh0ZXJuICJDIiB7CgoKCgoK
CgoKCgoKIyAzNiAiL3Vzci9pbmNsdWRlL3N0ZGlvX2ltcGwuaCIgMyA0CgoKc3RydWN0IEZJTEUg
CSAKewoKCgoKCXNzaXplX3QJCV9jbnQ7CSAKCXVuc2lnbmVkIGNoYXIJKl9wdHI7CSAKCgl1bnNp
Z25lZCBjaGFyCSpfYmFzZTsJIAoJdW5zaWduZWQgY2hhcglfZmxhZzsJIAoJdW5zaWduZWQgY2hh
cglfZmlsZTsJIAoJdW5zaWduZWQJX19vcmllbnRhdGlvbjoyOyAgCgl1bnNpZ25lZAlfX2lvbm9s
b2NrOjE7CSAKCXVuc2lnbmVkCV9fZmlsbGVyOjU7Cn07CgoKCgp9CgoKCiMgMzggIi91c3IvbG9j
YWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvaXNvL3N0
ZGlvX2lzby5oIiAyIDMgNAoKCiAKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKIAoKCgoKCnR5cGVk
ZWYJbG9uZyBsb25nCV9fbG9uZ2xvbmdfdDsKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZglfX0ZJTEUg
RklMRTsKCgoKCgoKCgoKCgoKdHlwZWRlZiBsb25nCQlmcG9zX3Q7CgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIF9fRklMRQlf
X2lvYlsyMCBdOwoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludAlyZW1vdmUoY29uc3QgY2hhciAq
KTsKZXh0ZXJuIGludAlyZW5hbWUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4g
RklMRQkqdG1wZmlsZSh2b2lkKTsKZXh0ZXJuIGNoYXIJKnRtcG5hbShjaGFyICopOwpleHRlcm4g
aW50CWZjbG9zZShGSUxFICopOwpleHRlcm4gaW50CWZmbHVzaChGSUxFICopOwpleHRlcm4gRklM
RQkqZm9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gRklMRQkqZnJlb3Bl
bihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgRklMRSAqKTsKZXh0ZXJuIHZvaWQJc2V0YnVm
KEZJTEUgKiwgY2hhciAqKTsKZXh0ZXJuIGludAlzZXR2YnVmKEZJTEUgKiwgY2hhciAqLCBpbnQs
IHNpemVfdCk7CiAKZXh0ZXJuIGludAlmcHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4p
OwogCmV4dGVybiBpbnQJZnNjYW5mKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwogCmV4dGVy
biBpbnQJcHJpbnRmKGNvbnN0IGNoYXIgKiwgLi4uKTsKIApleHRlcm4gaW50CXNjYW5mKGNvbnN0
IGNoYXIgKiwgLi4uKTsKIApleHRlcm4gaW50CXNwcmludGYoY2hhciAqLCBjb25zdCBjaGFyICos
IC4uLik7CiAKZXh0ZXJuIGludAlzc2NhbmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4u
Lik7CmV4dGVybiBpbnQJdmZwcmludGYoRklMRSAqLCBjb25zdCBjaGFyICosIF9fdmFfbGlzdCk7
CmV4dGVybiBpbnQJdnByaW50Zihjb25zdCBjaGFyICosIF9fdmFfbGlzdCk7CmV4dGVybiBpbnQJ
dnNwcmludGYoY2hhciAqLCBjb25zdCBjaGFyICosIF9fdmFfbGlzdCk7CmV4dGVybiBpbnQJZmdl
dGMoRklMRSAqKTsKZXh0ZXJuIGNoYXIJKmZnZXRzKGNoYXIgKiwgaW50LCBGSUxFICopOwpleHRl
cm4gaW50CWZwdXRjKGludCwgRklMRSAqKTsKZXh0ZXJuIGludAlmcHV0cyhjb25zdCBjaGFyICos
IEZJTEUgKik7CgoKZXh0ZXJuIGludAlnZXRjKEZJTEUgKik7CmV4dGVybiBpbnQJcHV0YyhpbnQs
IEZJTEUgKik7CgoKCmV4dGVybiBpbnQJZ2V0Y2hhcih2b2lkKTsKZXh0ZXJuIGludAlwdXRjaGFy
KGludCk7CgpleHRlcm4gY2hhcgkqZ2V0cyhjaGFyICopOwpleHRlcm4gaW50CXB1dHMoY29uc3Qg
Y2hhciAqKTsKZXh0ZXJuIGludAl1bmdldGMoaW50LCBGSUxFICopOwpleHRlcm4gc2l6ZV90CWZy
ZWFkKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7CmV4dGVybiBzaXplX3QJZndyaXRl
KGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7CmV4dGVybiBpbnQJZmdldHBv
cyhGSUxFICosIGZwb3NfdCAqKTsKZXh0ZXJuIGludAlmc2VlayhGSUxFICosIGxvbmcsIGludCk7
CmV4dGVybiBpbnQJZnNldHBvcyhGSUxFICosIGNvbnN0IGZwb3NfdCAqKTsKZXh0ZXJuIGxvbmcJ
ZnRlbGwoRklMRSAqKTsKZXh0ZXJuIHZvaWQJcmV3aW5kKEZJTEUgKik7CgoKZXh0ZXJuIHZvaWQJ
Y2xlYXJlcnIoRklMRSAqKTsKZXh0ZXJuIGludAlmZW9mKEZJTEUgKik7CmV4dGVybiBpbnQJZmVy
cm9yKEZJTEUgKik7CgpleHRlcm4gdm9pZAlwZXJyb3IoY29uc3QgY2hhciAqKTsKCgpleHRlcm4g
aW50CV9fZmlsYnVmKEZJTEUgKik7CmV4dGVybiBpbnQJX19mbHNidWYoaW50LCBGSUxFICopOwoK
CiMgMjc1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUu
My9pbmNsdWRlL2lzby9zdGRpb19pc28uaCIgMyA0CgoKCgoKCgoKIyAzMzEgIi91c3IvbG9jYWwv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvaXNvL3N0ZGlv
X2lzby5oIiAzIDQKCgoKCgp9CgoKCiMgMjQgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMt
c3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgogCgoKCgoKCgog
CgoKCiMgODMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45
NS4zL2luY2x1ZGUvc3RkaW8uaCIgMyA0CgoKCmV4dGVybiAiQyIgewoKCgojIDEwNCAiL3Vzci9s
b2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvaW5jbHVkZS9zdGRp
by5oIiAzIDQKCgoKCgoKCnR5cGVkZWYgX19sb25nbG9uZ190CWZwb3M2NF90OwoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGNoYXIJIF9zaWJ1ZltdLCBfc29idWZb
XTsKCgogCiMgMTc4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44
LzIuOTUuMy9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKCgpleHRlcm4gdW5zaWduZWQgY2hhcgkqX2J1
ZmVuZHRhYltdOwpleHRlcm4gRklMRQkJKl9sYXN0YnVmOwoKCiAKIyAyMDggIi91c3IvbG9jYWwv
bGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvc3RkaW8uaCIg
MyA0CgoKCgoKZXh0ZXJuIGNoYXIJKnRtcG5hbV9yKGNoYXIgKik7CgoKCmV4dGVybiB2b2lkIHNl
dGJ1ZmZlcihGSUxFICosIGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGludCBzZXRsaW5lYnVmKEZJ
TEUgKik7CgoKCgogCmV4dGVybiBpbnQJc25wcmludGYoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNo
YXIgKiwgLi4uKTsKCgoKCmV4dGVybiBpbnQJdnNucHJpbnRmKGNoYXIgKiwgc2l6ZV90LCBjb25z
dCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKCgogCgoKCgoKZXh0ZXJuIEZJTEUJKmZkb3Blbihp
bnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyCSpjdGVybWlkKGNoYXIgKik7CmV4dGVybiBp
bnQJZmlsZW5vKEZJTEUgKik7CgoKCiAKCgoKCmV4dGVybiB2b2lkCWZsb2NrZmlsZShGSUxFICop
OwpleHRlcm4gaW50CWZ0cnlsb2NrZmlsZShGSUxFICopOwpleHRlcm4gdm9pZAlmdW5sb2NrZmls
ZShGSUxFICopOwpleHRlcm4gaW50CWdldGNfdW5sb2NrZWQoRklMRSAqKTsKZXh0ZXJuIGludAln
ZXRjaGFyX3VubG9ja2VkKHZvaWQpOwpleHRlcm4gaW50CXB1dGNfdW5sb2NrZWQoaW50LCBGSUxF
ICopOwpleHRlcm4gaW50CXB1dGNoYXJfdW5sb2NrZWQoaW50KTsKCgoKIAoKCgoKZXh0ZXJuIEZJ
TEUJKnBvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIJKmN1c2Vy
aWQoY2hhciAqKTsKZXh0ZXJuIGNoYXIJKnRlbXBuYW0oY29uc3QgY2hhciAqLCBjb25zdCBjaGFy
ICopOwpleHRlcm4gaW50CWdldG9wdChpbnQsIGNoYXIgKmNvbnN0ICosIGNvbnN0IGNoYXIgKik7
CgpleHRlcm4gaW50CWdldHN1Ym9wdChjaGFyICoqLCBjaGFyICpjb25zdCAqLCBjaGFyICoqKTsK
CmV4dGVybiBjaGFyCSpvcHRhcmc7CmV4dGVybiBpbnQJb3B0aW5kLCBvcHRlcnIsIG9wdG9wdDsK
ZXh0ZXJuIGludAlnZXR3KEZJTEUgKik7CmV4dGVybiBpbnQJcHV0dyhpbnQsIEZJTEUgKik7CmV4
dGVybiBpbnQJcGNsb3NlKEZJTEUgKik7CgoKCiAKCgoKZXh0ZXJuIGludAlmc2Vla28oRklMRSAq
LCBvZmZfdCwgaW50KTsKZXh0ZXJuIG9mZl90CWZ0ZWxsbyhGSUxFICopOwoKCiAKCgoKCgpleHRl
cm4gRklMRQkqZm9wZW42NChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBGSUxF
CSpmcmVvcGVuNjQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIEZJTEUgKik7CmV4dGVybiBG
SUxFCSp0bXBmaWxlNjQodm9pZCk7CmV4dGVybiBpbnQJZmdldHBvczY0KEZJTEUgKiwgZnBvczY0
X3QgKik7CmV4dGVybiBpbnQJZnNldHBvczY0KEZJTEUgKiwgY29uc3QgZnBvczY0X3QgKik7CmV4
dGVybiBpbnQJZnNlZWtvNjQoRklMRSAqLCBvZmY2NF90LCBpbnQpOwpleHRlcm4gb2ZmNjRfdAlm
dGVsbG82NChGSUxFICopOwoKCiMgMzY4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoKCgoKCgoKCgoKCgoKCgoj
IDM5MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMv
aW5jbHVkZS9zdGRpby5oIiAzIDQKCgoKCgoKCgoKfQoKCgojIDI0ICIuLi9TcmNTaGFyZWQvUHJl
ZmVyZW5jZU1nci5oIiAyCgoKCgpjbGFzcyBFbVRyYW5zcG9ydDsKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGNvbnN0IGNoYXIq
IFByZWZLZXlUeXBlOwoKYm9vbCBQcmVmS2V5c0VxdWFsIChQcmVmS2V5VHlwZSwgUHJlZktleVR5
cGUpOwoKY2xhc3MgQmFzZVByZWZlcmVuY2UKewoJcHVibGljOgoJCQkJCQkJCUJhc2VQcmVmZXJl
bmNlCQkoUHJlZktleVR5cGUgbmFtZSwgYm9vbCA9IHRydWUpOwoJCQkJCQkJCUJhc2VQcmVmZXJl
bmNlCQkobG9uZyBpbmRleCwgYm9vbCA9IHRydWUpOwoJCXZpcnR1YWwgCQkJCX5CYXNlUHJlZmVy
ZW5jZSAJKHZvaWQpOwoKCQlib29sCQkJCQlMb2FkZWQJCQkJKHZvaWQpCXsgcmV0dXJuIGZMb2Fk
ZWQ7IH0KCgkJdm9pZAkJCQkJRmx1c2gJCQkJKHZvaWQpCXsgdGhpcy0+U2F2ZSAoKTsgfQoKCXBy
b3RlY3RlZDoKCQl2b2lkCQkJCQlMb2FkCQkJCSh2b2lkKTsKCQl2b2lkCQkJCQlTYXZlCQkJCSh2
b2lkKTsKCglwcm90ZWN0ZWQ6CgkJdmlydHVhbCBib29sCQkJRG9Mb2FkCQkJCSh2b2lkKSA9IDA7
CgkJdmlydHVhbCB2b2lkCQkJRG9TYXZlCQkJCSh2b2lkKSA9IDA7CgoJcHJvdGVjdGVkOgoJCXN0
cmluZwkJCQkJZk5hbWU7CgkJYm9vbAkJCQkJZkxvYWRlZDsKCQlib29sCQkJCQlmQ2hhbmdlZDsK
CQlib29sCQkJCQlmQWNxdWlyZUxvY2s7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KY2xhc3MgUHJl
ZmVyZW5jZSA6IHB1YmxpYyBCYXNlUHJlZmVyZW5jZQp7CglwdWJsaWM6CgkJCQkJCQkJUHJlZmVy
ZW5jZQkJCShQcmVmS2V5VHlwZSBuYW1lLCBib29sID0gdHJ1ZSk7CgkJCQkJCQkJUHJlZmVyZW5j
ZQkJCShsb25nIGluZGV4LCBib29sID0gdHJ1ZSk7CgkJdmlydHVhbCAJCQkJflByZWZlcmVuY2Ug
CQkodm9pZCk7CgoJIAoJIAoJIAoJIAogCiAKCQljb25zdCBUJgkJCQlvcGVyYXRvciooKSBjb25z
dAkJCXsgcmV0dXJuICpHZXRWYWx1ZSAoKTsgfQoJCWNvbnN0IFQqCQkJCW9wZXJhdG9yLT4oKSBj
b25zdAkJCXsgcmV0dXJuIEdldFZhbHVlICgpOyB9CgoJCWNvbnN0IFQqCQkJCUdldFZhbHVlICgp
IGNvbnN0CQkJeyAoKHZvaWQpIDApIDsgcmV0dXJuICZmVmFsdWU7IH0KCgkJY29uc3QgVCYJCQkJ
b3BlcmF0b3I9KGNvbnN0IFQmIHJocykgCXsgZlZhbHVlID0gcmhzOwoJCQkJCQkJCQkJCQkJCQkg
IGZMb2FkZWQgPSB0cnVlOwoJCQkJCQkJCQkJCQkJCQkgIGZDaGFuZ2VkID0gdHJ1ZTsKCQkJCQkJ
CQkJCQkJCQkJICB0aGlzLT5GbHVzaCAoKTsKCQkJCQkJCQkJCQkJCQkJICByZXR1cm4gZlZhbHVl
OyB9CgoJcHJvdGVjdGVkOgoJCXZpcnR1YWwgYm9vbAkJCURvTG9hZAkJCQkodm9pZCk7CgkJdmly
dHVhbCB2b2lkCQkJRG9TYXZlCQkJCSh2b2lkKTsKCglwcml2YXRlOgoJCVQJCQkJCQlmVmFsdWU7
Cn07Cgp0eXBlZGVmIHZvaWQqCQlQcmVmUmVmQ29uOwp0eXBlZGVmIHZvaWQJCSgqUHJlZk5vdGlm
eUZ1bmMpKFByZWZLZXlUeXBlLCBQcmVmUmVmQ29uKTsKdHlwZWRlZiBTdHJpbmdMaXN0CVByZWZL
ZXlMaXN0OwoKZW51bQp7CglNUlVfQ09VTlQgPSA5Cn07CgpjbGFzcyBQcmVmZXJlbmNlcwp7Cglw
dWJsaWM6CgkJCQkJCQkJUHJlZmVyZW5jZXMgCQkodm9pZCk7CgkJdmlydHVhbCAJCQkJflByZWZl
cmVuY2VzCQkodm9pZCk7CgoJCXZpcnR1YWwgdm9pZAkJCUxvYWQJCQkJKHZvaWQpOwoJCXZpcnR1
YWwgdm9pZAkJCVNhdmUJCQkJKHZvaWQpOwoKIAogCiAKCXB1YmxpYzoKCQlib29sCQkJCQlHZXRQ
cmVmIAkJCShjb25zdCBzdHJpbmcmIGtleSwgc3RyaW5nJiB2YWx1ZSk7CgkJdm9pZAkJCQkJU2V0
UHJlZiAJCQkoY29uc3Qgc3RyaW5nJiBrZXksIGNvbnN0IHN0cmluZyYgdmFsdWUpOwoJCXZvaWQJ
CQkJCURlbGV0ZVByZWYJCQkoY29uc3Qgc3RyaW5nJiBrZXkpOwoKCXB1YmxpYzoKCQl2b2lkCQkJ
CQlQdXNoUHJlZml4CQkJKGNvbnN0IHN0cmluZyYgcHJlZml4KTsKCQl2b2lkCQkJCQlQdXNoUHJl
Zml4CQkJKGxvbmcgaW5kZXgpOwoJCXZvaWQJCQkJCVBvcFByZWZpeAkJCSh2b2lkKTsKCgkJc3Ry
aW5nCQkJCQlFeHBhbmRLZXkJCQkoY29uc3Qgc3RyaW5nJiBuYW1lKTsKCQlzdHJpbmcJCQkJCUFw
cGVuZE5hbWUJCQkoc3RyaW5nIGtleSwgY29uc3Qgc3RyaW5nJiBuYW1lKTsKCglwdWJsaWM6CgkJ
dm9pZAkJCQkJQWRkTm90aWZpY2F0aW9uCQkoUHJlZk5vdGlmeUZ1bmMsIFByZWZLZXlUeXBlLCBQ
cmVmUmVmQ29uID0gX19udWxsICk7CgkJdm9pZAkJCQkJQWRkTm90aWZpY2F0aW9uCQkoUHJlZk5v
dGlmeUZ1bmMsIGNvbnN0IFByZWZLZXlMaXN0JiwgUHJlZlJlZkNvbiA9IF9fbnVsbCApOwoJCXZv
aWQJCQkJCVJlbW92ZU5vdGlmaWNhdGlvbgkoUHJlZk5vdGlmeUZ1bmMpOwoJCXZvaWQJCQkJCVJl
bW92ZU5vdGlmaWNhdGlvbgkoUHJlZk5vdGlmeUZ1bmMsIFByZWZLZXlUeXBlKTsKCQl2b2lkCQkJ
CQlSZW1vdmVOb3RpZmljYXRpb24JKFByZWZOb3RpZnlGdW5jLCBjb25zdCBQcmVmS2V5TGlzdCYp
OwoJCXZvaWQJCQkJCURvTm90aWZ5CQkJKGNvbnN0IHN0cmluZyYga2V5KTsKCglwcm90ZWN0ZWQ6
CgkJdmlydHVhbCBCb29sCQkJUmVhZFByZWZlcmVuY2VzCQkoU3RyaW5nU3RyaW5nTWFwJik7CgkJ
dmlydHVhbCB2b2lkCQkJV3JpdGVQcmVmZXJlbmNlcwkoY29uc3QgU3RyaW5nU3RyaW5nTWFwJik7
CgkJdmlydHVhbCBFbUZpbGVSZWYJCUdldFByZWZSZWYJCQkodm9pZCk7CgkJdmlydHVhbCB2b2lk
CQkJV3JpdGVCYW5uZXIgCQkoRklMRSopOwoJCXZpcnR1YWwgQm9vbAkJCVJlYWRCYW5uZXIJCQko
RklMRSopOwoJCXZpcnR1YWwgdm9pZAkJCVN0cmlwVW51c2VkIAkJKHZvaWQpOwoKCXByb3RlY3Rl
ZDoKCQl0eXBlZGVmIFN0cmluZ1N0cmluZ01hcAkJCVByZWZMaXN0OwoJCXR5cGVkZWYgUHJlZkxp
c3Q6OnZhbHVlX3R5cGUJUHJlZlBhaXJUeXBlOwoJCXR5cGVkZWYgUHJlZkxpc3Q6Oml0ZXJhdG9y
CQlpdGVyYXRvcjsKCgkJUHJlZkxpc3QJCQkJZlByZWZlcmVuY2VzOwoKCQl0eXBlZGVmIFN0cmlu
Z0xpc3QJCVByZWZpeFR5cGU7CgkJUHJlZml4VHlwZQkJCQlmUHJlZml4ZXM7CgoJCXN0cnVjdCBQ
cmVmTm90aWZ5VHlwZQoJCXsKCQkJUHJlZk5vdGlmeUZ1bmMJCWZGdW5jOwoJCQlQcmVmS2V5TGlz
dAkJCWZLZXlMaXN0OwoJCQlQcmVmUmVmQ29uCQkJZlJlZkNvbjsKCQl9OwoJCXR5cGVkZWYgdmVj
dG9yPFByZWZOb3RpZnlUeXBlPglQcmVmTm90aWZ5TGlzdDsKCgkJUHJlZk5vdGlmeUxpc3QJCQlm
Tm90aWZpY2F0aW9uczsKCglwdWJsaWM6CgkJc3RhdGljIG9tbmlfbXV0ZXgJCWZnUHJlZnNNdXRl
eDsKfTsKCmV4dGVybiBQcmVmZXJlbmNlcyogZ1ByZWZzOwoKCmNsYXNzIEVtdWxhdG9yUHJlZmVy
ZW5jZXMgOiBwdWJsaWMgUHJlZmVyZW5jZXMKewoJcHVibGljOgoJCQkJCQkJCUVtdWxhdG9yUHJl
ZmVyZW5jZXMgKHZvaWQpOwoJCXZpcnR1YWwgCQkJCX5FbXVsYXRvclByZWZlcmVuY2VzKHZvaWQp
OwoKCQl2aXJ0dWFsIHZvaWQJCQlMb2FkCQkJCSh2b2lkKTsKCgkJdm9pZAkJCQkJR2V0RGF0YWJh
c2VNUlUJCShFbUZpbGVSZWZMaXN0Jik7CgkJdm9pZAkJCQkJR2V0U2Vzc2lvbk1SVQkJKEVtRmls
ZVJlZkxpc3QmKTsKCQl2b2lkCQkJCQlHZXRST01NUlUJCQkoRW1GaWxlUmVmTGlzdCYpOwoKCQlF
bUZpbGVSZWYJCQkJR2V0SW5kUFJDTVJVCQkoaW50KTsKCQlFbUZpbGVSZWYJCQkJR2V0SW5kUkFN
TVJVCQkoaW50KTsKCQlFbUZpbGVSZWYJCQkJR2V0SW5kUk9NTVJVCQkoaW50KTsKCQlFbUZpbGVS
ZWYJCQkJR2V0SW5kTVJVCQkJKGNvbnN0IEVtRmlsZVJlZkxpc3QmLCBpbnQpOwoKCQl2b2lkCQkJ
CQlVcGRhdGVQUkNNUlUJCShjb25zdCBFbUZpbGVSZWYmKTsKCQl2b2lkCQkJCQlVcGRhdGVSQU1N
UlUJCShjb25zdCBFbUZpbGVSZWYmKTsKCQl2b2lkCQkJCQlVcGRhdGVST01NUlUJCShjb25zdCBF
bUZpbGVSZWYmKTsKCQl2b2lkCQkJCQlVcGRhdGVNUlUJCQkoRW1GaWxlUmVmTGlzdCYsIGNvbnN0
IEVtRmlsZVJlZiYpOwoKCQl2b2lkCQkJCQlSZW1vdmVQUkNNUlUJCShjb25zdCBFbUZpbGVSZWYm
KTsKCQl2b2lkCQkJCQlSZW1vdmVSQU1NUlUJCShjb25zdCBFbUZpbGVSZWYmKTsKCQl2b2lkCQkJ
CQlSZW1vdmVST01NUlUJCShjb25zdCBFbUZpbGVSZWYmKTsKCQl2b2lkCQkJCQlSZW1vdmVNUlUJ
CQkoRW1GaWxlUmVmTGlzdCYsIGNvbnN0IEVtRmlsZVJlZiYpOwoKCQl2b2lkCQkJCQlTZXRUcmFu
c3BvcnRzCQkodm9pZCk7CgoJCXZvaWQJCQkJCVNldFRyYW5zcG9ydEZvckRldmljZQkoRW1VQVJU
RGV2aWNlVHlwZSwgRW1UcmFuc3BvcnQqKTsKCQlFbVRyYW5zcG9ydCoJCQlHZXRUcmFuc3BvcnRG
b3JEZXZpY2UJKEVtVUFSVERldmljZVR5cGUpOwoKCQkgCgoJCUJvb2wJCQkJCUxvZ01lc3NhZ2UJ
CQkoQm9vbCBpc0ZhdGFsKTsKCQlCb29sCQkJCQlTaG91bGRRdWl0CQkJKEJvb2wgaXNGYXRhbCk7
CgkJQm9vbAkJCQkJU2hvdWxkQ29udGludWUJCShCb29sIGlzRmF0YWwpOwoJCUJvb2wJCQkJCVNo
b3VsZE5leHRHcmVtbGluCShCb29sIGlzRmF0YWwpOwoKCXByb3RlY3RlZDoKCQl2aXJ0dWFsIHZv
aWQJCQlXcml0ZUJhbm5lciAJCShGSUxFKik7CgkJdmlydHVhbCBCb29sCQkJUmVhZEJhbm5lcgkJ
CShGSUxFKik7CgkJdmlydHVhbCB2b2lkCQkJU3RyaXBVbnVzZWQgCQkodm9pZCk7CgkJdm9pZAkJ
CQkJTWlncmF0ZU9sZFByZWZzCQkodm9pZCk7CgoJCUVtVHJhbnNwb3J0KgkJCWZUcmFuc3BvcnRz
W2tVQVJURW5kXTsKfTsKCmV4dGVybiBFbXVsYXRvclByZWZlcmVuY2VzKiBnRW11UHJlZnM7CgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNDA0ICIuLi9TcmNTaGFyZWQvUHJlZmVyZW5jZU1n
ci5oIgoKIAoKICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlXaW5kb3dMb2NhdGlvbiA7IAkg
IGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleUdDV0xvY2F0aW9uIDsgCSAgZXh0ZXJuIFByZWZL
ZXlUeXBlIGtQcmVmS2V5TVBXTG9jYXRpb24gOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZL
ZXlCYWNrZ3JvdW5kQ29sb3IgOyAgICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlIaWdobGln
aHRDb2xvciA7ICAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlSZWRpcmVjdE5ldExpYiA7
IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleUVuYWJsZVNvdW5kcyA7IAkgIGV4dGVybiBQ
cmVmS2V5VHlwZSBrUHJlZktleUNsb3NlQWN0aW9uIDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQ
cmVmS2V5VXNlck5hbWUgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlQb3J0U2VyaWFs
IDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5UG9ydElSIDsgCSAgZXh0ZXJuIFByZWZL
ZXlUeXBlIGtQcmVmS2V5UG9ydE15c3RlcnkgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZL
ZXlQb3J0RG93bmxvYWQgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlQb3J0U2VyaWFs
U29ja2V0IDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5UG9ydElSU29ja2V0IDsgCSAg
ZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5UmVwb3J0RnJlZUNodW5rQWNjZXNzIDsgCSAgZXh0
ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5UmVwb3J0SGFyZHdhcmVSZWdpc3RlckFjY2VzcyA7IAkg
IGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleVJlcG9ydExvd01lbW9yeUFjY2VzcyA7IAkgIGV4
dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleVJlcG9ydExvd1N0YWNrQWNjZXNzIDsgCSAgZXh0ZXJu
IFByZWZLZXlUeXBlIGtQcmVmS2V5UmVwb3J0TWVtTWdyRGF0YUFjY2VzcyA7IAkgIGV4dGVybiBQ
cmVmS2V5VHlwZSBrUHJlZktleVJlcG9ydE1lbU1nckxlYWtzIDsgCSAgZXh0ZXJuIFByZWZLZXlU
eXBlIGtQcmVmS2V5UmVwb3J0TWVtTWdyU2VtYXBob3JlIDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBl
IGtQcmVmS2V5UmVwb3J0T2Zmc2NyZWVuT2JqZWN0IDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQ
cmVmS2V5UmVwb3J0T3ZlcmxheUVycm9ycyA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktl
eVJlcG9ydFByb3NjcmliZWRGdW5jdGlvbiA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktl
eVJlcG9ydFJPTUFjY2VzcyA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleVJlcG9ydFNj
cmVlbkFjY2VzcyA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleVJlcG9ydFNpemVsZXNz
T2JqZWN0IDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5UmVwb3J0U3RhY2tBbG1vc3RP
dmVyZmxvdyA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleVJlcG9ydFN0cmljdEludGxD
aGVja3MgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlSZXBvcnRTeXN0ZW1HbG9iYWxB
Y2Nlc3MgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlSZXBvcnRVSU1nckRhdGFBY2Nl
c3MgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlSZXBvcnRVbmxvY2tlZENodW5rQWNj
ZXNzIDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5UmVwb3J0TG9ja2VkUmVjb3JkcyA7
IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleVJlcG9ydFN5c0ZhdGFsQWxlcnQgOyAJICBl
eHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlJbnRlcmNlcHRTeXNGYXRhbEFsZXJ0IDsgCSAgZXh0
ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5RGlhbG9nQmVlcCA7IAkgIGV4dGVybiBQcmVmS2V5VHlw
ZSBrUHJlZktleUxvZ0Vycm9yTWVzc2FnZXMgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZL
ZXlMb2dXYXJuaW5nTWVzc2FnZXMgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlMb2dH
cmVtbGlucyA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleUxvZ0NQVU9wY29kZXMgOyAJ
ICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlMb2dFbnF1ZXVlZEV2ZW50cyA7IAkgIGV4dGVy
biBQcmVmS2V5VHlwZSBrUHJlZktleUxvZ0RlcXVldWVkRXZlbnRzIDsgCSAgZXh0ZXJuIFByZWZL
ZXlUeXBlIGtQcmVmS2V5TG9nU3lzdGVtQ2FsbHMgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1By
ZWZLZXlMb2dBcHBsaWNhdGlvbkNhbGxzIDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5
TG9nU2VyaWFsIDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5TG9nU2VyaWFsRGF0YSA7
IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleUxvZ05ldExpYiA7IAkgIGV4dGVybiBQcmVm
S2V5VHlwZSBrUHJlZktleUxvZ05ldExpYkRhdGEgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1By
ZWZLZXlMb2dFeGdNZ3IgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlMb2dFeGdNZ3JE
YXRhIDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5TG9nSExEZWJ1Z2dlciA7IAkgIGV4
dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleUxvZ0hMRGVidWdnZXJEYXRhIDsgCSAgZXh0ZXJuIFBy
ZWZLZXlUeXBlIGtQcmVmS2V5TG9nTExEZWJ1Z2dlciA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBr
UHJlZktleUxvZ0xMRGVidWdnZXJEYXRhIDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5
TG9nUlBDIDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5TG9nUlBDRGF0YSA7IAkgIGV4
dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleUxvZ0ZpbGVTaXplIDsgCSAgZXh0ZXJuIFByZWZLZXlU
eXBlIGtQcmVmS2V5TG9nRGVmYXVsdERpciA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktl
eURlYnVnZ2VyU29ja2V0UG9ydCA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleVJQQ1Nv
Y2tldFBvcnQgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlXYXJuQWJvdXRTa2luc0Rp
ciA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleUFza0Fib3V0U3RhcnRNZW51IDsgCSAg
ZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5U3RhcnRNZW51SXRlbSA7IAkgIGV4dGVybiBQcmVm
S2V5VHlwZSBrUHJlZktleUZpbGxOZXdCbG9ja3MgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1By
ZWZLZXlGaWxsUmVzaXplZEJsb2NrcyA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleUZp
bGxEaXNwb3NlZEJsb2NrcyA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleUZpbGxTdGFj
ayA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleUxhc3RDb25maWd1cmF0aW9uIDsgCSAg
ZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5R3JlbWxpbkluZm8gOyAJICBleHRlcm4gUHJlZktl
eVR5cGUga1ByZWZLZXlIb3JkZUluZm8gOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlM
YXN0UFNGIDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5Uk9NX01SVSA7IAkgIGV4dGVy
biBQcmVmS2V5VHlwZSBrUHJlZktleVBSQ19NUlUgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1By
ZWZLZXlQU0ZfTVJVIDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQcmVmS2V5U2tpbnMgOyAJICBl
eHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlTY2FsZSA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBr
UHJlZktleURpbVdoZW5JbmFjdGl2ZSA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleVNo
b3dEZWJ1Z01vZGUgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlTaG93R3JlbWxpbk1v
ZGUgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlTdGF5T25Ub3AgOyAJICBleHRlcm4g
UHJlZktleVR5cGUga1ByZWZLZXlXYXJuaW5nT2ZmIDsgCSAgZXh0ZXJuIFByZWZLZXlUeXBlIGtQ
cmVmS2V5RXJyb3JPZmYgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlXYXJuaW5nT24g
OyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlFcnJvck9uIDsgCSAgZXh0ZXJuIFByZWZL
ZXlUeXBlIGtQcmVmS2V5TGFzdFRyYWNlclR5cGUgOyAJICBleHRlcm4gUHJlZktleVR5cGUga1By
ZWZLZXlUcmFjZXJUeXBlcyA7IAkgIGV4dGVybiBQcmVmS2V5VHlwZSBrUHJlZktleUZmc0hvbWUg
OyAJICBleHRlcm4gUHJlZktleVR5cGUga1ByZWZLZXlTbG90TGlzdCA7ICAgCgoKIyAxOSAiLi4v
U3JjU2hhcmVkL0xvZ2dpbmcuaCIgMgoKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh
cmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvc3RkYXJnLmgiIDEgMyA0CiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuOC8yLjk1LjMvaW5jbHVkZS92YS1zcGFyYy5oIiAxIDMgNAogCgoKIAoKIyAx
NyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvaW5j
bHVkZS92YS1zcGFyYy5oIiAzIDQKCgogCgoKCgoKIAoKCgoKCgoKCgojIDQ3ICIvdXNyL2xvY2Fs
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3ZhLXNwYXJj
LmgiIDMgNAoKCgp2b2lkIHZhX2VuZCAoX19nbnVjX3ZhX2xpc3QpOwkJIAoKIAoKZW51bSBfX3Zh
X3R5cGVfY2xhc3NlcyB7CiAgX19ub190eXBlX2NsYXNzID0gLTEsCiAgX192b2lkX3R5cGVfY2xh
c3MsCiAgX19pbnRlZ2VyX3R5cGVfY2xhc3MsCiAgX19jaGFyX3R5cGVfY2xhc3MsCiAgX19lbnVt
ZXJhbF90eXBlX2NsYXNzLAogIF9fYm9vbGVhbl90eXBlX2NsYXNzLAogIF9fcG9pbnRlcl90eXBl
X2NsYXNzLAogIF9fcmVmZXJlbmNlX3R5cGVfY2xhc3MsCiAgX19vZmZzZXRfdHlwZV9jbGFzcywK
ICBfX3JlYWxfdHlwZV9jbGFzcywKICBfX2NvbXBsZXhfdHlwZV9jbGFzcywKICBfX2Z1bmN0aW9u
X3R5cGVfY2xhc3MsCiAgX19tZXRob2RfdHlwZV9jbGFzcywKICBfX3JlY29yZF90eXBlX2NsYXNz
LAogIF9fdW5pb25fdHlwZV9jbGFzcywKICBfX2FycmF5X3R5cGVfY2xhc3MsCiAgX19zdHJpbmdf
dHlwZV9jbGFzcywKICBfX3NldF90eXBlX2NsYXNzLAogIF9fZmlsZV90eXBlX2NsYXNzLAogIF9f
bGFuZ190eXBlX2NsYXNzCn07CgoKCgogCgoKCgogCgoKCgojIDEzNCAiL3Vzci9sb2NhbC9saWIv
Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvaW5jbHVkZS92YS1zcGFyYy5oIiAz
IDQKCgoKCgogCgogCgoKCiMgMTU5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi44LzIuOTUuMy9pbmNsdWRlL3ZhLXNwYXJjLmgiIDMgNAoKCgogCgoKCiMgMzAgIi91
c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUv
c3RkYXJnLmgiIDIgMyA0CgojIDEzNSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t
c29sYXJpczIuOC8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CgoKCgoKCgoKIAogCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwoKCgoK
IyAyMDcgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4z
L2luY2x1ZGUvc3RkYXJnLmgiIDMgNAoKCgoKCgojIDIyICIuLi9TcmNTaGFyZWQvTG9nZ2luZy5o
IiAyCgoKCnR5cGVkZWYgZGVxdWU8dWludDg+CUJ5dGVEZXF1ZTsKCmNsYXNzIEVtU3RyZWFtRmls
ZTsKCgpjbGFzcyBMb2dTdHJlYW1Jbm5lcgp7CgkgCgkgCgoJcHVibGljOgoJCQkJCQkJCUxvZ1N0
cmVhbUlubmVyCShjb25zdCBjaGFyKiBiYXNlTmFtZSk7CgkJCQkJCQkJfkxvZ1N0cmVhbUlubmVy
CSh2b2lkKTsKCgkJaW50CQkJCQkJRHVtcEhleAkJCShjb25zdCB2b2lkKiwgbG9uZyBkYXRhTGVu
KTsKCQlpbnQJCQkJCQlWUHJpbnRmCQkJKGNvbnN0IGNoYXIqIGZtdCwgdmFfbGlzdCBhcmdzLCBC
b29sIHRpbWVzdGFtcCA9IHRydWUpOwoJCWludAkJCQkJCVdyaXRlCQkJKGNvbnN0IHZvaWQqIGJ1
ZmZlciwgbG9uZyBzaXplLCBCb29sIHRpbWVzdGFtcCA9IHRydWUpOwoKCQl2b2lkCQkJCQlDbGVh
cgkJCSh2b2lkKTsKCgkJbG9uZwkJCQkJR2V0TG9nU2l6ZQkJKHZvaWQpOwoJCXZvaWQJCQkJCVNl
dExvZ1NpemUJCShsb25nKTsKCgkJdm9pZAkJCQkJRW5zdXJlTmV3RmlsZQkodm9pZCk7CgkJdm9p
ZAkJCQkJRHVtcFRvRmlsZQkJKHZvaWQpOwoKCXByaXZhdGU6CgkJdm9pZAkJCQkJRHVtcFRvRmls
ZQkJCShFbVN0cmVhbUZpbGUmLCBjb25zdCBjaGFyKiwgbG9uZyBzaXplKTsKCQlFbUZpbGVSZWYJ
CQkJQ3JlYXRlRmlsZVJlZmVyZW5jZQkodm9pZCk7CgkJdm9pZAkJCQkJVGltZXN0YW1wCQkJKHZv
aWQpOwoJCXZvaWQJCQkJCU5ld0xpbmUJCQkJKHZvaWQpOwoJCXZvaWQJCQkJCUFwcGVuZAkJCQko
Y29uc3QgY2hhciogYnVmZmVyLCBsb25nIHNpemUpOwoJCXZvaWQJCQkJCVRyaW1MZWFkaW5nCQkJ
KHZvaWQpOwoKCQljb25zdCBjaGFyKgkJCQlmQmFzZU5hbWU7CgkJbG9uZwkJCQkJZkZpbGVJbmRl
eDsKCgkJQnl0ZURlcXVlCQkJCWZCdWZmZXI7CgkJbG9uZwkJCQkJZkJ1ZmZlclNpemU7CgkJQm9v
bAkJCQkJZkRpc2NhcmRlZDsKCgkJaW50MzIJCQkJCWZMYXN0R3JlbWxpbkV2ZW50Q291bnRlcjsK
CQl1aW50MzIJCQkJCWZMYXN0VGltZXN0YW1wVGltZTsKCQl1aW50MzIJCQkJCWZCYXNlVGltZXN0
YW1wVGltZSA7CgkJY2hhcgkJCQkJZkxhc3RUaW1lc3RhbXBTdHJpbmdbMzBdOwp9OwoKY2xhc3Mg
TG9nU3RyZWFtCnsKCXB1YmxpYzoKCQkJCQkJCQlMb2dTdHJlYW0JCShjb25zdCBjaGFyKiBiYXNl
TmFtZSk7CgkJCQkJCQkJfkxvZ1N0cmVhbQkJKHZvaWQpOwoKCSAKCgkJaW50CQkJCQkJUHJpbnRm
CQkJKGNvbnN0IGNoYXIqIG1zZywgLi4uKTsKCQlpbnQJCQkJCQlQcmludGZOb1RpbWUJKGNvbnN0
IGNoYXIqIG1zZywgLi4uKTsKCQlpbnQJCQkJCQlEYXRhUHJpbnRmCQkoY29uc3Qgdm9pZCosIGxv
bmcgZGF0YUxlbiwgY29uc3QgY2hhciogbXNnLCAuLi4pOwoJCWludAkJCQkJCVZQcmludGYJCQko
Y29uc3QgY2hhciogZm10LCB2YV9saXN0IGFyZ3MpOwoJCWludAkJCQkJCVdyaXRlCQkJKGNvbnN0
IHZvaWQqIGJ1ZmZlciwgbG9uZyBzaXplKTsKCgkJdm9pZAkJCQkJQ2xlYXIJCQkodm9pZCk7CgoJ
CWxvbmcJCQkJCUdldExvZ1NpemUJCSh2b2lkKTsKCQl2b2lkCQkJCQlTZXRMb2dTaXplCQkobG9u
Zyk7CgoJCXZvaWQJCQkJCUVuc3VyZU5ld0ZpbGUJKHZvaWQpOwoJCXZvaWQJCQkJCUR1bXBUb0Zp
bGUJCSh2b2lkKTsKCglwcml2YXRlOgoJCXN0YXRpYyB2b2lkCQkJCVByZWZDaGFuZ2VkCQkJKFBy
ZWZLZXlUeXBlLCBQcmVmUmVmQ29uKTsJCgoJcHJpdmF0ZToKCQlvbW5pX211dGV4CQkJCWZNdXRl
eDsKCQlMb2dTdHJlYW1Jbm5lcgkJCWZJbm5lcjsKfTsKCnZvaWQJCUxvZ0V2dEFkZEV2ZW50VG9R
dWV1ZQkJKGNvbnN0IEV2ZW50VHlwZSYgZXZlbnQpOwp2b2lkCQlMb2dFdnRBZGRVbmlxdWVFdmVu
dFRvUXVldWUJKGNvbnN0IEV2ZW50VHlwZSYgZXZlbnQsIFVJbnQzMiwgQm9vbGVhbik7CnZvaWQJ
CUxvZ0V2dEVucXVldWVLZXkJCQkoVUludDE2IGFzY2lpLCBVSW50MTYga2V5Y29kZSwgVUludDE2
IG1vZGlmaWVycyk7CnZvaWQJCUxvZ0V2dEVucXVldWVQZW5Qb2ludAkJKGNvbnN0IFBvaW50VHlw
ZSYpOwoKdm9pZAkJTG9nRXZ0R2V0RXZlbnQJCQkJKGNvbnN0IEV2ZW50VHlwZSYgZXZlbnQsIElu
dDMyIHRpbWVvdXQpOwp2b2lkCQlMb2dFdnRHZXRQZW4JCQkJKEludDE2LCBJbnQxNiwgQm9vbGVh
bik7CnZvaWQJCUxvZ0V2dEdldFN5c0V2ZW50CQkJKGNvbnN0IEV2ZW50VHlwZSYgZXZlbnQsIElu
dDMyIHRpbWVvdXQpOwoKTG9nU3RyZWFtKglMb2dHZXRTdGRMb2cJCQkJKHZvaWQpOwp2b2lkCQlM
b2dTdGFydHVwCQkJCQkodm9pZCk7CnZvaWQJCUxvZ1NodXRkb3duCQkJCQkodm9pZCk7CgoKCgoK
CgoKCgogCiAKIAogCiAKCgplbnVtCnsKCSAga0NhY2hlZFByZWZLZXlXaW5kb3dMb2NhdGlvbiAs
IAkgIGtDYWNoZWRQcmVmS2V5R0NXTG9jYXRpb24gLCAJICBrQ2FjaGVkUHJlZktleU1QV0xvY2F0
aW9uICwgCSAga0NhY2hlZFByZWZLZXlCYWNrZ3JvdW5kQ29sb3IgLCAgICBrQ2FjaGVkUHJlZktl
eUhpZ2hsaWdodENvbG9yICwgIAkgIGtDYWNoZWRQcmVmS2V5UmVkaXJlY3ROZXRMaWIgLCAJICBr
Q2FjaGVkUHJlZktleUVuYWJsZVNvdW5kcyAsIAkgIGtDYWNoZWRQcmVmS2V5Q2xvc2VBY3Rpb24g
LCAJICBrQ2FjaGVkUHJlZktleVVzZXJOYW1lICwgCSAga0NhY2hlZFByZWZLZXlQb3J0U2VyaWFs
ICwgCSAga0NhY2hlZFByZWZLZXlQb3J0SVIgLCAJICBrQ2FjaGVkUHJlZktleVBvcnRNeXN0ZXJ5
ICwgCSAga0NhY2hlZFByZWZLZXlQb3J0RG93bmxvYWQgLCAJICBrQ2FjaGVkUHJlZktleVBvcnRT
ZXJpYWxTb2NrZXQgLCAJICBrQ2FjaGVkUHJlZktleVBvcnRJUlNvY2tldCAsIAkgIGtDYWNoZWRQ
cmVmS2V5UmVwb3J0RnJlZUNodW5rQWNjZXNzICwgCSAga0NhY2hlZFByZWZLZXlSZXBvcnRIYXJk
d2FyZVJlZ2lzdGVyQWNjZXNzICwgCSAga0NhY2hlZFByZWZLZXlSZXBvcnRMb3dNZW1vcnlBY2Nl
c3MgLCAJICBrQ2FjaGVkUHJlZktleVJlcG9ydExvd1N0YWNrQWNjZXNzICwgCSAga0NhY2hlZFBy
ZWZLZXlSZXBvcnRNZW1NZ3JEYXRhQWNjZXNzICwgCSAga0NhY2hlZFByZWZLZXlSZXBvcnRNZW1N
Z3JMZWFrcyAsIAkgIGtDYWNoZWRQcmVmS2V5UmVwb3J0TWVtTWdyU2VtYXBob3JlICwgCSAga0Nh
Y2hlZFByZWZLZXlSZXBvcnRPZmZzY3JlZW5PYmplY3QgLCAJICBrQ2FjaGVkUHJlZktleVJlcG9y
dE92ZXJsYXlFcnJvcnMgLCAJICBrQ2FjaGVkUHJlZktleVJlcG9ydFByb3NjcmliZWRGdW5jdGlv
biAsIAkgIGtDYWNoZWRQcmVmS2V5UmVwb3J0Uk9NQWNjZXNzICwgCSAga0NhY2hlZFByZWZLZXlS
ZXBvcnRTY3JlZW5BY2Nlc3MgLCAJICBrQ2FjaGVkUHJlZktleVJlcG9ydFNpemVsZXNzT2JqZWN0
ICwgCSAga0NhY2hlZFByZWZLZXlSZXBvcnRTdGFja0FsbW9zdE92ZXJmbG93ICwgCSAga0NhY2hl
ZFByZWZLZXlSZXBvcnRTdHJpY3RJbnRsQ2hlY2tzICwgCSAga0NhY2hlZFByZWZLZXlSZXBvcnRT
eXN0ZW1HbG9iYWxBY2Nlc3MgLCAJICBrQ2FjaGVkUHJlZktleVJlcG9ydFVJTWdyRGF0YUFjY2Vz
cyAsIAkgIGtDYWNoZWRQcmVmS2V5UmVwb3J0VW5sb2NrZWRDaHVua0FjY2VzcyAsIAkgIGtDYWNo
ZWRQcmVmS2V5UmVwb3J0TG9ja2VkUmVjb3JkcyAsIAkgIGtDYWNoZWRQcmVmS2V5UmVwb3J0U3lz
RmF0YWxBbGVydCAsIAkgIGtDYWNoZWRQcmVmS2V5SW50ZXJjZXB0U3lzRmF0YWxBbGVydCAsIAkg
IGtDYWNoZWRQcmVmS2V5RGlhbG9nQmVlcCAsIAkgIGtDYWNoZWRQcmVmS2V5TG9nRXJyb3JNZXNz
YWdlcyAsIAkgIGtDYWNoZWRQcmVmS2V5TG9nV2FybmluZ01lc3NhZ2VzICwgCSAga0NhY2hlZFBy
ZWZLZXlMb2dHcmVtbGlucyAsIAkgIGtDYWNoZWRQcmVmS2V5TG9nQ1BVT3Bjb2RlcyAsIAkgIGtD
YWNoZWRQcmVmS2V5TG9nRW5xdWV1ZWRFdmVudHMgLCAJICBrQ2FjaGVkUHJlZktleUxvZ0RlcXVl
dWVkRXZlbnRzICwgCSAga0NhY2hlZFByZWZLZXlMb2dTeXN0ZW1DYWxscyAsIAkgIGtDYWNoZWRQ
cmVmS2V5TG9nQXBwbGljYXRpb25DYWxscyAsIAkgIGtDYWNoZWRQcmVmS2V5TG9nU2VyaWFsICwg
CSAga0NhY2hlZFByZWZLZXlMb2dTZXJpYWxEYXRhICwgCSAga0NhY2hlZFByZWZLZXlMb2dOZXRM
aWIgLCAJICBrQ2FjaGVkUHJlZktleUxvZ05ldExpYkRhdGEgLCAJICBrQ2FjaGVkUHJlZktleUxv
Z0V4Z01nciAsIAkgIGtDYWNoZWRQcmVmS2V5TG9nRXhnTWdyRGF0YSAsIAkgIGtDYWNoZWRQcmVm
S2V5TG9nSExEZWJ1Z2dlciAsIAkgIGtDYWNoZWRQcmVmS2V5TG9nSExEZWJ1Z2dlckRhdGEgLCAJ
ICBrQ2FjaGVkUHJlZktleUxvZ0xMRGVidWdnZXIgLCAJICBrQ2FjaGVkUHJlZktleUxvZ0xMRGVi
dWdnZXJEYXRhICwgCSAga0NhY2hlZFByZWZLZXlMb2dSUEMgLCAJICBrQ2FjaGVkUHJlZktleUxv
Z1JQQ0RhdGEgLCAJICBrQ2FjaGVkUHJlZktleUxvZ0ZpbGVTaXplICwgCSAga0NhY2hlZFByZWZL
ZXlMb2dEZWZhdWx0RGlyICwgCSAga0NhY2hlZFByZWZLZXlEZWJ1Z2dlclNvY2tldFBvcnQgLCAJ
ICBrQ2FjaGVkUHJlZktleVJQQ1NvY2tldFBvcnQgLCAJICBrQ2FjaGVkUHJlZktleVdhcm5BYm91
dFNraW5zRGlyICwgCSAga0NhY2hlZFByZWZLZXlBc2tBYm91dFN0YXJ0TWVudSAsIAkgIGtDYWNo
ZWRQcmVmS2V5U3RhcnRNZW51SXRlbSAsIAkgIGtDYWNoZWRQcmVmS2V5RmlsbE5ld0Jsb2NrcyAs
IAkgIGtDYWNoZWRQcmVmS2V5RmlsbFJlc2l6ZWRCbG9ja3MgLCAJICBrQ2FjaGVkUHJlZktleUZp
bGxEaXNwb3NlZEJsb2NrcyAsIAkgIGtDYWNoZWRQcmVmS2V5RmlsbFN0YWNrICwgCSAga0NhY2hl
ZFByZWZLZXlMYXN0Q29uZmlndXJhdGlvbiAsIAkgIGtDYWNoZWRQcmVmS2V5R3JlbWxpbkluZm8g
LCAJICBrQ2FjaGVkUHJlZktleUhvcmRlSW5mbyAsIAkgIGtDYWNoZWRQcmVmS2V5TGFzdFBTRiAs
IAkgIGtDYWNoZWRQcmVmS2V5Uk9NX01SVSAsIAkgIGtDYWNoZWRQcmVmS2V5UFJDX01SVSAsIAkg
IGtDYWNoZWRQcmVmS2V5UFNGX01SVSAsIAkgIGtDYWNoZWRQcmVmS2V5U2tpbnMgLCAJICBrQ2Fj
aGVkUHJlZktleVNjYWxlICwgCSAga0NhY2hlZFByZWZLZXlEaW1XaGVuSW5hY3RpdmUgLCAJICBr
Q2FjaGVkUHJlZktleVNob3dEZWJ1Z01vZGUgLCAJICBrQ2FjaGVkUHJlZktleVNob3dHcmVtbGlu
TW9kZSAsIAkgIGtDYWNoZWRQcmVmS2V5U3RheU9uVG9wICwgCSAga0NhY2hlZFByZWZLZXlXYXJu
aW5nT2ZmICwgCSAga0NhY2hlZFByZWZLZXlFcnJvck9mZiAsIAkgIGtDYWNoZWRQcmVmS2V5V2Fy
bmluZ09uICwgCSAga0NhY2hlZFByZWZLZXlFcnJvck9uICwgCSAga0NhY2hlZFByZWZLZXlMYXN0
VHJhY2VyVHlwZSAsIAkgIGtDYWNoZWRQcmVmS2V5VHJhY2VyVHlwZXMgLCAJICBrQ2FjaGVkUHJl
ZktleUZmc0hvbWUgLCAJICBrQ2FjaGVkUHJlZktleVNsb3RMaXN0ICwgICAKCWtDYWNoZWRQcmVm
S2V5RHVtbXkKfTsKCmV4dGVybiB1aW50OCBnTG9nQ2FjaGVbXTsKaW5saW5lIEJvb2wgTG9nQ29t
bW9uKGludCBrZXkpCnsKCWlmIChrZXkgPj0ga0NhY2hlZFByZWZLZXlMb2dFcnJvck1lc3NhZ2Vz
ICYmCgkJa2V5IDw9IGtDYWNoZWRQcmVmS2V5TG9nUlBDRGF0YSkKCXsKCQlpZiAoSG9yZGVzOjpJ
c09uICgpKQoJCQlyZXR1cm4gKGdMb2dDYWNoZVtrZXldICYga0dyZW1saW5Mb2dnaW5nKSAhPSAw
OwoKCQlyZXR1cm4gKGdMb2dDYWNoZVtrZXldICYga05vcm1hbExvZ2dpbmcpICE9IDA7Cgl9CgoJ
KCh2b2lkKSAwKSA7CgoJcmV0dXJuIDA7Cn0KCmlubGluZSBCb29sIFJlcG9ydENvbW1vbihpbnQg
a2V5KQp7CglpZiAoa2V5ID49IGtDYWNoZWRQcmVmS2V5UmVwb3J0RnJlZUNodW5rQWNjZXNzICYm
CgkJa2V5IDw9IGtDYWNoZWRQcmVmS2V5UmVwb3J0VW5sb2NrZWRDaHVua0FjY2VzcykKCXsKCQly
ZXR1cm4gZ0xvZ0NhY2hlW2tleV0gIT0gMDsKCX0KCgkoKHZvaWQpIDApIDsKCglyZXR1cm4gMDsK
fQoKCiMgMTg4ICIuLi9TcmNTaGFyZWQvTG9nZ2luZy5oIgoKCiMgMjA4ICIuLi9TcmNTaGFyZWQv
TG9nZ2luZy5oIgoKCgoKCgoKCgoKCiBpbmxpbmUgQm9vbCAgTG9nRXJyb3JNZXNzYWdlcyAgKHZv
aWQpIHsgcmV0dXJuIExvZ0NvbW1vbihrQ2FjaGVkUHJlZktleUxvZ0Vycm9yTWVzc2FnZXMgKTsg
fSAJIGlubGluZSBCb29sICBMb2dXYXJuaW5nTWVzc2FnZXMgICh2b2lkKSB7IHJldHVybiBMb2dD
b21tb24oa0NhY2hlZFByZWZLZXlMb2dXYXJuaW5nTWVzc2FnZXMgKTsgfSAJIGlubGluZSBCb29s
ICBMb2dHcmVtbGlucyAgKHZvaWQpIHsgcmV0dXJuIExvZ0NvbW1vbihrQ2FjaGVkUHJlZktleUxv
Z0dyZW1saW5zICk7IH0gCSBpbmxpbmUgQm9vbCAgTG9nQ1BVT3Bjb2RlcyAgKHZvaWQpIHsgcmV0
dXJuIExvZ0NvbW1vbihrQ2FjaGVkUHJlZktleUxvZ0NQVU9wY29kZXMgKTsgfSAJIGlubGluZSBC
b29sICBMb2dFbnF1ZXVlZEV2ZW50cyAgKHZvaWQpIHsgcmV0dXJuIExvZ0NvbW1vbihrQ2FjaGVk
UHJlZktleUxvZ0VucXVldWVkRXZlbnRzICk7IH0gCSBpbmxpbmUgQm9vbCAgTG9nRGVxdWV1ZWRF
dmVudHMgICh2b2lkKSB7IHJldHVybiBMb2dDb21tb24oa0NhY2hlZFByZWZLZXlMb2dEZXF1ZXVl
ZEV2ZW50cyApOyB9IAkgaW5saW5lIEJvb2wgIExvZ1N5c3RlbUNhbGxzICAodm9pZCkgeyByZXR1
cm4gTG9nQ29tbW9uKGtDYWNoZWRQcmVmS2V5TG9nU3lzdGVtQ2FsbHMgKTsgfSAJIGlubGluZSBC
b29sICBMb2dBcHBsaWNhdGlvbkNhbGxzICAodm9pZCkgeyByZXR1cm4gTG9nQ29tbW9uKGtDYWNo
ZWRQcmVmS2V5TG9nQXBwbGljYXRpb25DYWxscyApOyB9IAkgaW5saW5lIEJvb2wgIExvZ1Nlcmlh
bCAgKHZvaWQpIHsgcmV0dXJuIExvZ0NvbW1vbihrQ2FjaGVkUHJlZktleUxvZ1NlcmlhbCApOyB9
IAkgaW5saW5lIEJvb2wgIExvZ1NlcmlhbERhdGEgICh2b2lkKSB7IHJldHVybiBMb2dDb21tb24o
a0NhY2hlZFByZWZLZXlMb2dTZXJpYWxEYXRhICk7IH0gCSBpbmxpbmUgQm9vbCAgTG9nTmV0TGli
ICAodm9pZCkgeyByZXR1cm4gTG9nQ29tbW9uKGtDYWNoZWRQcmVmS2V5TG9nTmV0TGliICk7IH0g
CSBpbmxpbmUgQm9vbCAgTG9nTmV0TGliRGF0YSAgKHZvaWQpIHsgcmV0dXJuIExvZ0NvbW1vbihr
Q2FjaGVkUHJlZktleUxvZ05ldExpYkRhdGEgKTsgfSAJIGlubGluZSBCb29sICBMb2dFeGdNZ3Ig
ICh2b2lkKSB7IHJldHVybiBMb2dDb21tb24oa0NhY2hlZFByZWZLZXlMb2dFeGdNZ3IgKTsgfSAJ
IGlubGluZSBCb29sICBMb2dFeGdNZ3JEYXRhICAodm9pZCkgeyByZXR1cm4gTG9nQ29tbW9uKGtD
YWNoZWRQcmVmS2V5TG9nRXhnTWdyRGF0YSApOyB9IAkgaW5saW5lIEJvb2wgIExvZ0hMRGVidWdn
ZXIgICh2b2lkKSB7IHJldHVybiBMb2dDb21tb24oa0NhY2hlZFByZWZLZXlMb2dITERlYnVnZ2Vy
ICk7IH0gCSBpbmxpbmUgQm9vbCAgTG9nSExEZWJ1Z2dlckRhdGEgICh2b2lkKSB7IHJldHVybiBM
b2dDb21tb24oa0NhY2hlZFByZWZLZXlMb2dITERlYnVnZ2VyRGF0YSApOyB9IAkgaW5saW5lIEJv
b2wgIExvZ0xMRGVidWdnZXIgICh2b2lkKSB7IHJldHVybiBMb2dDb21tb24oa0NhY2hlZFByZWZL
ZXlMb2dMTERlYnVnZ2VyICk7IH0gCSBpbmxpbmUgQm9vbCAgTG9nTExEZWJ1Z2dlckRhdGEgICh2
b2lkKSB7IHJldHVybiBMb2dDb21tb24oa0NhY2hlZFByZWZLZXlMb2dMTERlYnVnZ2VyRGF0YSAp
OyB9IAkgaW5saW5lIEJvb2wgIExvZ1JQQyAgKHZvaWQpIHsgcmV0dXJuIExvZ0NvbW1vbihrQ2Fj
aGVkUHJlZktleUxvZ1JQQyApOyB9IAkgaW5saW5lIEJvb2wgIExvZ1JQQ0RhdGEgICh2b2lkKSB7
IHJldHVybiBMb2dDb21tb24oa0NhY2hlZFByZWZLZXlMb2dSUENEYXRhICk7IH0gIAogaW5saW5l
IEJvb2wgIFJlcG9ydEZyZWVDaHVua0FjY2VzcyAgKHZvaWQpIHsgcmV0dXJuIFJlcG9ydENvbW1v
bihrQ2FjaGVkUHJlZktleVJlcG9ydEZyZWVDaHVua0FjY2VzcyApOyB9ICAgaW5saW5lIEJvb2wg
IFJlcG9ydEhhcmR3YXJlUmVnaXN0ZXJBY2Nlc3MgICh2b2lkKSB7IHJldHVybiBSZXBvcnRDb21t
b24oa0NhY2hlZFByZWZLZXlSZXBvcnRIYXJkd2FyZVJlZ2lzdGVyQWNjZXNzICk7IH0gCSBpbmxp
bmUgQm9vbCAgUmVwb3J0TG93TWVtb3J5QWNjZXNzICAodm9pZCkgeyByZXR1cm4gUmVwb3J0Q29t
bW9uKGtDYWNoZWRQcmVmS2V5UmVwb3J0TG93TWVtb3J5QWNjZXNzICk7IH0gICBpbmxpbmUgQm9v
bCAgUmVwb3J0TG93U3RhY2tBY2Nlc3MgICh2b2lkKSB7IHJldHVybiBSZXBvcnRDb21tb24oa0Nh
Y2hlZFByZWZLZXlSZXBvcnRMb3dTdGFja0FjY2VzcyApOyB9IAkgaW5saW5lIEJvb2wgIFJlcG9y
dE1lbU1nckRhdGFBY2Nlc3MgICh2b2lkKSB7IHJldHVybiBSZXBvcnRDb21tb24oa0NhY2hlZFBy
ZWZLZXlSZXBvcnRNZW1NZ3JEYXRhQWNjZXNzICk7IH0gCSBpbmxpbmUgQm9vbCAgUmVwb3J0TWVt
TWdyTGVha3MgICh2b2lkKSB7IHJldHVybiBSZXBvcnRDb21tb24oa0NhY2hlZFByZWZLZXlSZXBv
cnRNZW1NZ3JMZWFrcyApOyB9ICAgaW5saW5lIEJvb2wgIFJlcG9ydE1lbU1nclNlbWFwaG9yZSAg
KHZvaWQpIHsgcmV0dXJuIFJlcG9ydENvbW1vbihrQ2FjaGVkUHJlZktleVJlcG9ydE1lbU1nclNl
bWFwaG9yZSApOyB9ICAgaW5saW5lIEJvb2wgIFJlcG9ydE9mZnNjcmVlbk9iamVjdCAgKHZvaWQp
IHsgcmV0dXJuIFJlcG9ydENvbW1vbihrQ2FjaGVkUHJlZktleVJlcG9ydE9mZnNjcmVlbk9iamVj
dCApOyB9IAkgaW5saW5lIEJvb2wgIFJlcG9ydE92ZXJsYXlFcnJvcnMgICh2b2lkKSB7IHJldHVy
biBSZXBvcnRDb21tb24oa0NhY2hlZFByZWZLZXlSZXBvcnRPdmVybGF5RXJyb3JzICk7IH0gCSBp
bmxpbmUgQm9vbCAgUmVwb3J0UHJvc2NyaWJlZEZ1bmN0aW9uICAodm9pZCkgeyByZXR1cm4gUmVw
b3J0Q29tbW9uKGtDYWNoZWRQcmVmS2V5UmVwb3J0UHJvc2NyaWJlZEZ1bmN0aW9uICk7IH0gCSBp
bmxpbmUgQm9vbCAgUmVwb3J0Uk9NQWNjZXNzICAodm9pZCkgeyByZXR1cm4gUmVwb3J0Q29tbW9u
KGtDYWNoZWRQcmVmS2V5UmVwb3J0Uk9NQWNjZXNzICk7IH0gCSBpbmxpbmUgQm9vbCAgUmVwb3J0
U2NyZWVuQWNjZXNzICAodm9pZCkgeyByZXR1cm4gUmVwb3J0Q29tbW9uKGtDYWNoZWRQcmVmS2V5
UmVwb3J0U2NyZWVuQWNjZXNzICk7IH0gCSBpbmxpbmUgQm9vbCAgUmVwb3J0U2l6ZWxlc3NPYmpl
Y3QgICh2b2lkKSB7IHJldHVybiBSZXBvcnRDb21tb24oa0NhY2hlZFByZWZLZXlSZXBvcnRTaXpl
bGVzc09iamVjdCApOyB9IAkgaW5saW5lIEJvb2wgIFJlcG9ydFN0YWNrQWxtb3N0T3ZlcmZsb3cg
ICh2b2lkKSB7IHJldHVybiBSZXBvcnRDb21tb24oa0NhY2hlZFByZWZLZXlSZXBvcnRTdGFja0Fs
bW9zdE92ZXJmbG93ICk7IH0gICBpbmxpbmUgQm9vbCAgUmVwb3J0U3RyaWN0SW50bENoZWNrcyAg
KHZvaWQpIHsgcmV0dXJuIFJlcG9ydENvbW1vbihrQ2FjaGVkUHJlZktleVJlcG9ydFN0cmljdElu
dGxDaGVja3MgKTsgfSAJIGlubGluZSBCb29sICBSZXBvcnRTeXN0ZW1HbG9iYWxBY2Nlc3MgICh2
b2lkKSB7IHJldHVybiBSZXBvcnRDb21tb24oa0NhY2hlZFByZWZLZXlSZXBvcnRTeXN0ZW1HbG9i
YWxBY2Nlc3MgKTsgfSAJIGlubGluZSBCb29sICBSZXBvcnRVSU1nckRhdGFBY2Nlc3MgICh2b2lk
KSB7IHJldHVybiBSZXBvcnRDb21tb24oa0NhY2hlZFByZWZLZXlSZXBvcnRVSU1nckRhdGFBY2Nl
c3MgKTsgfSAJIGlubGluZSBCb29sICBSZXBvcnRVbmxvY2tlZENodW5rQWNjZXNzICAodm9pZCkg
eyByZXR1cm4gUmVwb3J0Q29tbW9uKGtDYWNoZWRQcmVmS2V5UmVwb3J0VW5sb2NrZWRDaHVua0Fj
Y2VzcyApOyB9ICAKCgojIDIzICIuLi9TcmNTaGFyZWQvRW1EbGcuaCIgMgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCmNsYXNzIEVtUk9NVHJhbnNmZXI7CgoKZW51bSBFbURsZ0NtZElECnsKCWtEbGdDbWROb25l
CQkJCQk9IDAsCgoJa0RsZ0NtZEluaXQJCQkJCT0gMSwKCWtEbGdDbWRJZGxlCQkJCQk9IDIsCglr
RGxnQ21kSXRlbVNlbGVjdGVkCQkJPSAzLAoJa0RsZ0NtZERlc3Ryb3kJCQkJPSA0LAoJa0RsZ0Nt
ZFBhbmVsRW50ZXIJCQk9IDUsCglrRGxnQ21kUGFuZWxFeGl0CQkJPSA2Cn07CgplbnVtIEVtRGxn
Rm5SZXN1bHQKewoJa0RsZ1Jlc3VsdE5vbmUJCQkJPSAwLAoKCWtEbGdSZXN1bHRDb250aW51ZQkJ
CT0gMSwKCWtEbGdSZXN1bHRDbG9zZQkJCQk9IDIKfTsKCmVudW0gRW1EbGdJRAp7CglrRGxnTm9u
ZQkJCQkJPSAwLAoKCWtEbGdBYm91dEJveAkJCQk9IDEsCglrRGxnU2Vzc2lvbk5ldwkJCQk9IDIs
CglrRGxnU2Vzc2lvblNhdmUJCQkJPSAzLAoJa0RsZ0hvcmRlTmV3CQkJCT0gNCwKCWtEbGdEYXRh
YmFzZUltcG9ydAkJCT0gNSwKCWtEbGdEYXRhYmFzZUV4cG9ydAkJCT0gNiwKCWtEbGdST01UcmFu
c2ZlclF1ZXJ5CQk9IDcsCglrRGxnUk9NVHJhbnNmZXJQcm9ncmVzcwkJPSA4LAoJa0RsZ0dyZW1s
aW5Db250cm9sCQkJPSA5LAoJa0RsZ0VkaXRQcmVmZXJlbmNlcwkJCT0gMTAsCglrRGxnRWRpdExv
Z2dpbmcJCQkJPSAxMSwKCWtEbGdFZGl0RGVidWdnaW5nCQkJPSAxMiwKCWtEbGdFZGl0U2tpbnMJ
CQkJPSAxMywKCWtEbGdDb21tb25EaWFsb2cJCQk9IDE0LAoJa0RsZ1NhdmVCb3VuZAkJCQk9IDE1
LAoJa0RsZ0VkaXRIb3N0RlMJCQkJPSAxNiwKCWtEbGdFZGl0QnJlYWtwb2ludHMJCQk9IDE3LAoJ
a0RsZ0VkaXRDb2RlQnJlYWtwb2ludAkJPSAxOCwKCWtEbGdFZGl0VHJhY2luZ09wdGlvbnMJCT0g
MTksCglrRGxnRWRpdFByZWZlcmVuY2VzRnVsbHlCb3VuZAk9IDIwLAoJa0RsZ1Jlc2V0CQkJCQk9
IDIxLAoJa0RsZ1Nlc3Npb25JbmZvCQkJCT0gMjIsCglrRGxnR2V0U29ja2V0QWRkcmVzcwkJPSAy
MywKCWtEbGdFZGl0RXJyb3JIYW5kbGluZwkJPSAyNCwKCWtEbGdNaW5pbWl6ZVByb2dyZXNzCQk9
IDI1Cn07CgplbnVtIEVtRGxnUGFuZWxJRAp7CglrRGxnUGFuZWxOb25lCQkJCT0gMCwKCglrRGxn
UGFuZWxBYnRNYWluCQkJPSAxLAoJa0RsZ1BhbmVsQWJ0V2luZG93cwkJCT0gMiwKCWtEbGdQYW5l
bEFidE1hYwkJCQk9IDMsCglrRGxnUGFuZWxBYnRVQUUJCQkJPSA0LAoJa0RsZ1BhbmVsQWJ0UU5Y
CQkJCT0gNQp9OwoKCmVudW0gRW1EbGdJdGVtSUQKewoJa0RsZ0l0ZW1Ob25lCQkJCT0gMCwKCglr
RGxnSXRlbU9LCQkJCQk9IDB4MDEsCglrRGxnSXRlbUNhbmNlbAkJCQk9IDB4MDIsCglrRGxnSXRl
bVllcwkJCQkJPSAweDAzLAoJa0RsZ0l0ZW1ObwkJCQkJPSAweDA0LAoJa0RsZ0l0ZW1Db250aW51
ZQkJCT0gMHgwNSwKCWtEbGdJdGVtRGVidWcJCQkJPSAweDA2LAoJa0RsZ0l0ZW1SZXNldAkJCQk9
IDB4MDcsCglrRGxnSXRlbU5leHRHcmVtbGluCQkJPSAweDA4LAoKCWtEbGdJdGVtQWJ0QXBwTmFt
ZQkJCT0gKCgga0RsZ0Fib3V0Qm94ICkgKiAxMDApICArIDAsCglrRGxnSXRlbUFidFVSTFBhbG1X
ZWIJCT0gKCgga0RsZ0Fib3V0Qm94ICkgKiAxMDApICArIDEsCglrRGxnSXRlbUFidFVSTFBhbG1N
YWlsCQk9ICgoIGtEbGdBYm91dEJveCApICogMTAwKSAgKyAyLAoJa0RsZ0l0ZW1BYnRVUkxXaW5k
b3dzV2ViCT0gKCgga0RsZ0Fib3V0Qm94ICkgKiAxMDApICArIDMsCglrRGxnSXRlbUFidFVSTFdp
bmRvd3NNYWlsCT0gKCgga0RsZ0Fib3V0Qm94ICkgKiAxMDApICArIDQsCglrRGxnSXRlbUFidFVS
TE1hY1dlYgkJPSAoKCBrRGxnQWJvdXRCb3ggKSAqIDEwMCkgICsgNSwKCWtEbGdJdGVtQWJ0VVJM
TWFjTWFpbAkJPSAoKCBrRGxnQWJvdXRCb3ggKSAqIDEwMCkgICsgNiwKCWtEbGdJdGVtQWJ0VVJM
VUFFV2ViCQk9ICgoIGtEbGdBYm91dEJveCApICogMTAwKSAgKyA3LAoJa0RsZ0l0ZW1BYnRVUkxV
QUVNYWlsCQk9ICgoIGtEbGdBYm91dEJveCApICogMTAwKSAgKyA4LAoJa0RsZ0l0ZW1BYnRVUkxR
TlhXZWIJCT0gKCgga0RsZ0Fib3V0Qm94ICkgKiAxMDApICArIDksCglrRGxnSXRlbUFidFVSTFFO
WE1haWwJCT0gKCgga0RsZ0Fib3V0Qm94ICkgKiAxMDApICArIDEwLAoKCWtEbGdJdGVtTmV3RGV2
aWNlCQkJPSAoKCBrRGxnU2Vzc2lvbk5ldyApICogMTAwKSAgKyAwLAoJa0RsZ0l0ZW1OZXdTa2lu
CQkJCT0gKCgga0RsZ1Nlc3Npb25OZXcgKSAqIDEwMCkgICsgMSwKCWtEbGdJdGVtTmV3TWVtb3J5
U2l6ZQkJPSAoKCBrRGxnU2Vzc2lvbk5ldyApICogMTAwKSAgKyAyLAoJa0RsZ0l0ZW1OZXdST00J
CQkJPSAoKCBrRGxnU2Vzc2lvbk5ldyApICogMTAwKSAgKyAzLAoJa0RsZ0l0ZW1OZXdST01Ccm93
c2UJCT0gKCgga0RsZ1Nlc3Npb25OZXcgKSAqIDEwMCkgICsgNCwKCglrRGxnSXRlbUhyZEFwcExp
c3QJCQk9ICgoIGtEbGdIb3JkZU5ldyApICogMTAwKSAgKyAwLAoJa0RsZ0l0ZW1IcmRTdGFydAkJ
CT0gKCgga0RsZ0hvcmRlTmV3ICkgKiAxMDApICArIDEsCglrRGxnSXRlbUhyZFN0b3AJCQkJPSAo
KCBrRGxnSG9yZGVOZXcgKSAqIDEwMCkgICsgMiwKCWtEbGdJdGVtSHJkQ2hlY2tTd2l0Y2gJCT0g
KCgga0RsZ0hvcmRlTmV3ICkgKiAxMDApICArIDMsCglrRGxnSXRlbUhyZENoZWNrU2F2ZQkJPSAo
KCBrRGxnSG9yZGVOZXcgKSAqIDEwMCkgICsgNCwKCWtEbGdJdGVtSHJkQ2hlY2tTdG9wCQk9ICgo
IGtEbGdIb3JkZU5ldyApICogMTAwKSAgKyA1LAoJa0RsZ0l0ZW1IcmREZXB0aFN3aXRjaAkJPSAo
KCBrRGxnSG9yZGVOZXcgKSAqIDEwMCkgICsgNiwKCWtEbGdJdGVtSHJkRGVwdGhTYXZlCQk9ICgo
IGtEbGdIb3JkZU5ldyApICogMTAwKSAgKyA3LAoJa0RsZ0l0ZW1IcmREZXB0aFN0b3AJCT0gKCgg
a0RsZ0hvcmRlTmV3ICkgKiAxMDApICArIDgsCglrRGxnSXRlbUhyZExvZ2dpbmcJCQk9ICgoIGtE
bGdIb3JkZU5ldyApICogMTAwKSAgKyA5LAoJa0RsZ0l0ZW1IcmRGaXJzdExhdW5jaGVkQXBwCT0g
KCgga0RsZ0hvcmRlTmV3ICkgKiAxMDApICArIDEwLAoJa0RsZ0l0ZW1IcmRTZWxlY3RBbGwJCT0g
KCgga0RsZ0hvcmRlTmV3ICkgKiAxMDApICArIDExLAoJa0RsZ0l0ZW1IcmRTZWxlY3ROb25lCQk9
ICgoIGtEbGdIb3JkZU5ldyApICogMTAwKSAgKyAxMiwKCglrRGxnSXRlbUltcE51bUZpbGVzCQkJ
PSAoKCBrRGxnRGF0YWJhc2VJbXBvcnQgKSAqIDEwMCkgICsgMCwKCWtEbGdJdGVtSW1wUHJvZ3Jl
c3MJCQk9ICgoIGtEbGdEYXRhYmFzZUltcG9ydCApICogMTAwKSAgKyAxLAoKCWtEbGdJdGVtRXhw
RGJMaXN0CQkJPSAoKCBrRGxnRGF0YWJhc2VFeHBvcnQgKSAqIDEwMCkgICsgMCwKCglrRGxnSXRl
bURscUluc3RydWN0aW9ucwkJPSAoKCBrRGxnUk9NVHJhbnNmZXJRdWVyeSApICogMTAwKSAgKyAw
LAoJa0RsZ0l0ZW1EbHFQb3J0TGlzdAkJCT0gKCgga0RsZ1JPTVRyYW5zZmVyUXVlcnkgKSAqIDEw
MCkgICsgMSwKCWtEbGdJdGVtRGxxQmF1ZExpc3QJCQk9ICgoIGtEbGdST01UcmFuc2ZlclF1ZXJ5
ICkgKiAxMDApICArIDIsCgoJa0RsZ0l0ZW1EbHBNZXNzYWdlCQkJPSAoKCBrRGxnUk9NVHJhbnNm
ZXJQcm9ncmVzcyApICogMTAwKSAgKyAwLAoJa0RsZ0l0ZW1EbHBQcm9ncmVzcwkJCT0gKCgga0Rs
Z1JPTVRyYW5zZmVyUHJvZ3Jlc3MgKSAqIDEwMCkgICsgMSwKCglrRGxnSXRlbUdybU51bWJlcgkJ
CT0gKCgga0RsZ0dyZW1saW5Db250cm9sICkgKiAxMDApICArIDAsCglrRGxnSXRlbUdybUV2ZW50
TnVtYmVyCQk9ICgoIGtEbGdHcmVtbGluQ29udHJvbCApICogMTAwKSAgKyAxLAoJa0RsZ0l0ZW1H
cm1FbGFwc2VkVGltZQkJPSAoKCBrRGxnR3JlbWxpbkNvbnRyb2wgKSAqIDEwMCkgICsgMiwKCWtE
bGdJdGVtR3JtU3RvcAkJCQk9ICgoIGtEbGdHcmVtbGluQ29udHJvbCApICogMTAwKSAgKyAzLAoJ
a0RsZ0l0ZW1Hcm1SZXN1bWUJCQk9ICgoIGtEbGdHcmVtbGluQ29udHJvbCApICogMTAwKSAgKyA0
LAoJa0RsZ0l0ZW1Hcm1TdGVwCQkJCT0gKCgga0RsZ0dyZW1saW5Db250cm9sICkgKiAxMDApICAr
IDUsCgoJa0RsZ0l0ZW1QcmZSZWRpcmVjdFNlcmlhbAk9ICgoIGtEbGdFZGl0UHJlZmVyZW5jZXMg
KSAqIDEwMCkgICsgMCwKCWtEbGdJdGVtUHJmUmVkaXJlY3RJUgkJPSAoKCBrRGxnRWRpdFByZWZl
cmVuY2VzICkgKiAxMDApICArIDEsCglrRGxnSXRlbVByZlJlZGlyZWN0TXlzdGVyeQk9ICgoIGtE
bGdFZGl0UHJlZmVyZW5jZXMgKSAqIDEwMCkgICsgMiwKCWtEbGdJdGVtUHJmUmVkaXJlY3ROZXRM
aWIJPSAoKCBrRGxnRWRpdFByZWZlcmVuY2VzICkgKiAxMDApICArIDksCglrRGxnSXRlbVByZkVu
YWJsZVNvdW5kCQk9ICgoIGtEbGdFZGl0UHJlZmVyZW5jZXMgKSAqIDEwMCkgICsgMTAsCglrRGxn
SXRlbVByZlNhdmVBbHdheXMJCT0gKCgga0RsZ0VkaXRQcmVmZXJlbmNlcyApICogMTAwKSAgKyAx
MSwKCWtEbGdJdGVtUHJmU2F2ZUFzawkJCT0gKCgga0RsZ0VkaXRQcmVmZXJlbmNlcyApICogMTAw
KSAgKyAxMiwKCWtEbGdJdGVtUHJmU2F2ZU5ldmVyCQk9ICgoIGtEbGdFZGl0UHJlZmVyZW5jZXMg
KSAqIDEwMCkgICsgMTMsCglrRGxnSXRlbVByZlVzZXJOYW1lCQkJPSAoKCBrRGxnRWRpdFByZWZl
cmVuY2VzICkgKiAxMDApICArIDE0LAoKCWtEbGdJdGVtTG9nTm9ybWFsCQkJPSAoKCBrRGxnRWRp
dExvZ2dpbmcgKSAqIDEwMCkgICsgMCwKCWtEbGdJdGVtTG9nR3JlbWxpbnMJCQk9ICgoIGtEbGdF
ZGl0TG9nZ2luZyApICogMTAwKSAgKyAxLAoJa0RsZ0l0ZW1Mb2dDaGVja0Jhc2UJCT0gKCgga0Rs
Z0VkaXRMb2dnaW5nICkgKiAxMDApICArIDEwLAoKCgkga0RsZ0l0ZW1Mb2dMb2dFcnJvck1lc3Nh
Z2VzICwgCSBrRGxnSXRlbUxvZ0xvZ1dhcm5pbmdNZXNzYWdlcyAsIAkga0RsZ0l0ZW1Mb2dMb2dH
cmVtbGlucyAsIAkga0RsZ0l0ZW1Mb2dMb2dDUFVPcGNvZGVzICwgCSBrRGxnSXRlbUxvZ0xvZ0Vu
cXVldWVkRXZlbnRzICwgCSBrRGxnSXRlbUxvZ0xvZ0RlcXVldWVkRXZlbnRzICwgCSBrRGxnSXRl
bUxvZ0xvZ1N5c3RlbUNhbGxzICwgCSBrRGxnSXRlbUxvZ0xvZ0FwcGxpY2F0aW9uQ2FsbHMgLCAJ
IGtEbGdJdGVtTG9nTG9nU2VyaWFsICwgCSBrRGxnSXRlbUxvZ0xvZ1NlcmlhbERhdGEgLCAJIGtE
bGdJdGVtTG9nTG9nTmV0TGliICwgCSBrRGxnSXRlbUxvZ0xvZ05ldExpYkRhdGEgLCAJIGtEbGdJ
dGVtTG9nTG9nRXhnTWdyICwgCSBrRGxnSXRlbUxvZ0xvZ0V4Z01nckRhdGEgLCAJIGtEbGdJdGVt
TG9nTG9nSExEZWJ1Z2dlciAsIAkga0RsZ0l0ZW1Mb2dMb2dITERlYnVnZ2VyRGF0YSAsIAkga0Rs
Z0l0ZW1Mb2dMb2dMTERlYnVnZ2VyICwgCSBrRGxnSXRlbUxvZ0xvZ0xMRGVidWdnZXJEYXRhICwg
CSBrRGxnSXRlbUxvZ0xvZ1JQQyAsIAkga0RsZ0l0ZW1Mb2dMb2dSUENEYXRhICwgIAoKCWtEbGdJ
dGVtRGJnRGlhbG9nQmVlcAkJPSAoKCBrRGxnRWRpdERlYnVnZ2luZyApICogMTAwKSAgKyAwLAoJ
a0RsZ0l0ZW1EYmdDaGVja0Jhc2UJCT0gKCgga0RsZ0VkaXREZWJ1Z2dpbmcgKSAqIDEwMCkgICsg
MTAsCgoKCSBrRGxnSXRlbURiZ1JlcG9ydEZyZWVDaHVua0FjY2VzcyAsICAga0RsZ0l0ZW1EYmdS
ZXBvcnRIYXJkd2FyZVJlZ2lzdGVyQWNjZXNzICwgCSBrRGxnSXRlbURiZ1JlcG9ydExvd01lbW9y
eUFjY2VzcyAsICAga0RsZ0l0ZW1EYmdSZXBvcnRMb3dTdGFja0FjY2VzcyAsIAkga0RsZ0l0ZW1E
YmdSZXBvcnRNZW1NZ3JEYXRhQWNjZXNzICwgCSBrRGxnSXRlbURiZ1JlcG9ydE1lbU1nckxlYWtz
ICwgICBrRGxnSXRlbURiZ1JlcG9ydE1lbU1nclNlbWFwaG9yZSAsICAga0RsZ0l0ZW1EYmdSZXBv
cnRPZmZzY3JlZW5PYmplY3QgLCAJIGtEbGdJdGVtRGJnUmVwb3J0T3ZlcmxheUVycm9ycyAsIAkg
a0RsZ0l0ZW1EYmdSZXBvcnRQcm9zY3JpYmVkRnVuY3Rpb24gLCAJIGtEbGdJdGVtRGJnUmVwb3J0
Uk9NQWNjZXNzICwgCSBrRGxnSXRlbURiZ1JlcG9ydFNjcmVlbkFjY2VzcyAsIAkga0RsZ0l0ZW1E
YmdSZXBvcnRTaXplbGVzc09iamVjdCAsIAkga0RsZ0l0ZW1EYmdSZXBvcnRTdGFja0FsbW9zdE92
ZXJmbG93ICwgICBrRGxnSXRlbURiZ1JlcG9ydFN0cmljdEludGxDaGVja3MgLCAJIGtEbGdJdGVt
RGJnUmVwb3J0U3lzdGVtR2xvYmFsQWNjZXNzICwgCSBrRGxnSXRlbURiZ1JlcG9ydFVJTWdyRGF0
YUFjY2VzcyAsIAkga0RsZ0l0ZW1EYmdSZXBvcnRVbmxvY2tlZENodW5rQWNjZXNzICwgIAoKCWtE
bGdJdGVtU2tuU2tpbkxpc3QJCQk9ICgoIGtEbGdFZGl0U2tpbnMgKSAqIDEwMCkgICsgMCwKCWtE
bGdJdGVtU2tuRG91YmxlU2NhbGUJCT0gKCgga0RsZ0VkaXRTa2lucyApICogMTAwKSAgKyAxLAoJ
a0RsZ0l0ZW1Ta25XaGl0ZUJhY2tncm91bmQJPSAoKCBrRGxnRWRpdFNraW5zICkgKiAxMDApICAr
IDIsCglrRGxnSXRlbVNrbkRpbQkJCQk9ICgoIGtEbGdFZGl0U2tpbnMgKSAqIDEwMCkgICsgMywK
CWtEbGdJdGVtU2tuUmVkCQkJCT0gKCgga0RsZ0VkaXRTa2lucyApICogMTAwKSAgKyA0LAoJa0Rs
Z0l0ZW1Ta25HcmVlbgkJCT0gKCgga0RsZ0VkaXRTa2lucyApICogMTAwKSAgKyA1LAoJa0RsZ0l0
ZW1Ta25TdGF5T25Ub3AJCT0gKCgga0RsZ0VkaXRTa2lucyApICogMTAwKSAgKyA2LAoKCWtEbGdJ
dGVtQ21uVGV4dAkJCQk9ICgoIGtEbGdDb21tb25EaWFsb2cgKSAqIDEwMCkgICsgMCwKCWtEbGdJ
dGVtQ21uSWNvblN0b3AJCQk9ICgoIGtEbGdDb21tb25EaWFsb2cgKSAqIDEwMCkgICsgMSwKCWtE
bGdJdGVtQ21uSWNvbkNhdXRpb24JCT0gKCgga0RsZ0NvbW1vbkRpYWxvZyApICogMTAwKSAgKyAy
LAoJa0RsZ0l0ZW1DbW5JY29uTm90ZQkJCT0gKCgga0RsZ0NvbW1vbkRpYWxvZyApICogMTAwKSAg
KyAzLAoJa0RsZ0l0ZW1DbW5CdXR0b24xCQkJPSAoKCBrRGxnQ29tbW9uRGlhbG9nICkgKiAxMDAp
ICArIDQsCglrRGxnSXRlbUNtbkJ1dHRvbjIJCQk9ICgoIGtEbGdDb21tb25EaWFsb2cgKSAqIDEw
MCkgICsgNSwKCWtEbGdJdGVtQ21uQnV0dG9uMwkJCT0gKCgga0RsZ0NvbW1vbkRpYWxvZyApICog
MTAwKSAgKyA2LAoJa0RsZ0l0ZW1DbW5CdXR0b25Db3B5CQk9ICgoIGtEbGdDb21tb25EaWFsb2cg
KSAqIDEwMCkgICsgNywKCglrRGxnSXRlbUJuZFNhdmVST00JCQk9ICgoIGtEbGdTYXZlQm91bmQg
KSAqIDEwMCkgICsgMCwKCWtEbGdJdGVtQm5kU2F2ZVJBTQkJCT0gKCgga0RsZ1NhdmVCb3VuZCAp
ICogMTAwKSAgKyAxLAoKCWtEbGdJdGVtSGZzTGlzdAkJCQk9ICgoIGtEbGdFZGl0SG9zdEZTICkg
KiAxMDApICArIDAsCglrRGxnSXRlbUhmc1BhdGgJCQkJPSAoKCBrRGxnRWRpdEhvc3RGUyApICog
MTAwKSAgKyAxLAoJa0RsZ0l0ZW1IZnNNb3VudGVkCQkJPSAoKCBrRGxnRWRpdEhvc3RGUyApICog
MTAwKSAgKyAyLAoJa0RsZ0l0ZW1IZnNCcm93c2UJCQk9ICgoIGtEbGdFZGl0SG9zdEZTICkgKiAx
MDApICArIDMsCgoJa0RsZ0l0ZW1CcmtMaXN0CQkJCT0gKCgga0RsZ0VkaXRCcmVha3BvaW50cyAp
ICogMTAwKSAgKyAwLAoJa0RsZ0l0ZW1CcmtCdXR0b25FZGl0CQk9ICgoIGtEbGdFZGl0QnJlYWtw
b2ludHMgKSAqIDEwMCkgICsgMSwKCWtEbGdJdGVtQnJrQnV0dG9uQ2xlYXIJCT0gKCgga0RsZ0Vk
aXRCcmVha3BvaW50cyApICogMTAwKSAgKyAyLAoJa0RsZ0l0ZW1CcmtDaGVja0VuYWJsZWQJCT0g
KCgga0RsZ0VkaXRCcmVha3BvaW50cyApICogMTAwKSAgKyAzLAoJa0RsZ0l0ZW1CcmtTdGFydEFk
ZHJlc3MJCT0gKCgga0RsZ0VkaXRCcmVha3BvaW50cyApICogMTAwKSAgKyA0LAoJa0RsZ0l0ZW1C
cmtOdW1iZXJPZkJ5dGVzCT0gKCgga0RsZ0VkaXRCcmVha3BvaW50cyApICogMTAwKSAgKyA1LAoK
CWtEbGdJdGVtQnJrQWRkcmVzcwkJCT0gKCgga0RsZ0VkaXRDb2RlQnJlYWtwb2ludCApICogMTAw
KSAgKyAwLAoJa0RsZ0l0ZW1CcmtDb25kaXRpb24JCT0gKCgga0RsZ0VkaXRDb2RlQnJlYWtwb2lu
dCApICogMTAwKSAgKyAxLAoKCWtEbGdJdGVtVHJjT3V0cHV0CQkJPSAoKCBrRGxnRWRpdFRyYWNp
bmdPcHRpb25zICkgKiAxMDApICArIDAsCglrRGxnSXRlbVRyY1RhcmdldFRleHQJCT0gKCgga0Rs
Z0VkaXRUcmFjaW5nT3B0aW9ucyApICogMTAwKSAgKyAxLAoJa0RsZ0l0ZW1UcmNUYXJnZXRWYWx1
ZQkJPSAoKCBrRGxnRWRpdFRyYWNpbmdPcHRpb25zICkgKiAxMDApICArIDIsCglrRGxnSXRlbVRy
Y0luZm8JCQkJPSAoKCBrRGxnRWRpdFRyYWNpbmdPcHRpb25zICkgKiAxMDApICArIDMsCglrRGxn
SXRlbVRyY0F1dG9Db25uZWN0CQk9ICgoIGtEbGdFZGl0VHJhY2luZ09wdGlvbnMgKSAqIDEwMCkg
ICsgNCwKCglrRGxnSXRlbVJzdFNvZnQJCQkJPSAoKCBrRGxnUmVzZXQgKSAqIDEwMCkgICsgMCwK
CWtEbGdJdGVtUnN0SGFyZAkJCQk9ICgoIGtEbGdSZXNldCApICogMTAwKSAgKyAxLAoJa0RsZ0l0
ZW1Sc3REZWJ1ZwkJCT0gKCgga0RsZ1Jlc2V0ICkgKiAxMDApICArIDIsCglrRGxnSXRlbVJzdE5v
RXh0CQkJPSAoKCBrRGxnUmVzZXQgKSAqIDEwMCkgICsgMywKCglrRGxnSXRlbUluZkRldmljZUZs
ZAkJPSAoKCBrRGxnU2Vzc2lvbkluZm8gKSAqIDEwMCkgICsgMCwKCWtEbGdJdGVtSW5mUkFNRmxk
CQkJPSAoKCBrRGxnU2Vzc2lvbkluZm8gKSAqIDEwMCkgICsgMSwKCWtEbGdJdGVtSW5mUk9NRmxk
CQkJPSAoKCBrRGxnU2Vzc2lvbkluZm8gKSAqIDEwMCkgICsgMiwKCWtEbGdJdGVtSW5mU2Vzc2lv
bkZsZAkJPSAoKCBrRGxnU2Vzc2lvbkluZm8gKSAqIDEwMCkgICsgMywKCglrRGxnSXRlbVNvY2tl
dEFkZHJlc3MJCT0gKCgga0RsZ0dldFNvY2tldEFkZHJlc3MgKSAqIDEwMCkgICsgMCwKCglrRGxn
SXRlbUVycldhcm5pbmdPZmYJCT0gKCgga0RsZ0VkaXRFcnJvckhhbmRsaW5nICkgKiAxMDApICAr
IDAsCglrRGxnSXRlbUVyckVycm9yT2ZmCQkJPSAoKCBrRGxnRWRpdEVycm9ySGFuZGxpbmcgKSAq
IDEwMCkgICsgMSwKCWtEbGdJdGVtRXJyV2FybmluZ09uCQk9ICgoIGtEbGdFZGl0RXJyb3JIYW5k
bGluZyApICogMTAwKSAgKyAyLAoJa0RsZ0l0ZW1FcnJFcnJvck9uCQkJPSAoKCBrRGxnRWRpdEVy
cm9ySGFuZGxpbmcgKSAqIDEwMCkgICsgMywKCglrRGxnSXRlbU1pblBhc3NOdW1iZXIJCT0gKCgg
a0RsZ01pbmltaXplUHJvZ3Jlc3MgKSAqIDEwMCkgICsgMCwKCWtEbGdJdGVtTWluRXZlbnROdW1i
ZXIJCT0gKCgga0RsZ01pbmltaXplUHJvZ3Jlc3MgKSAqIDEwMCkgICsgMSwKCWtEbGdJdGVtTWlu
RWxhcHNlZAkJCT0gKCgga0RsZ01pbmltaXplUHJvZ3Jlc3MgKSAqIDEwMCkgICsgMiwKCWtEbGdJ
dGVtTWluUmFuZ2UJCQk9ICgoIGtEbGdNaW5pbWl6ZVByb2dyZXNzICkgKiAxMDApICArIDMsCglr
RGxnSXRlbU1pbkRpc2NhcmRlZAkJPSAoKCBrRGxnTWluaW1pemVQcm9ncmVzcyApICogMTAwKSAg
KyA0LAoJa0RsZ0l0ZW1NaW5Qcm9ncmVzcwkJCT0gKCgga0RsZ01pbmltaXplUHJvZ3Jlc3MgKSAq
IDEwMCkgICsgNSwKCglrRGxnSXRlbUxhc3QKfTsKCgplbnVtIEVtQ29tbW9uRGlhbG9nRmxhZ3MK
ewoJIAoJIAoJIAoJIAoJIAoJIAoKCSAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoJa0J1dHRv
bk1hc2sJCQk9IDB4MEYsCgoJa0J1dHRvbkRlZmF1bHQJCT0gMHgxMCwKCWtCdXR0b25Fc2NhcGUJ
CT0gMHgyMCwKCWtCdXR0b25WaXNpYmxlCQk9IDB4NDAsCglrQnV0dG9uRW5hYmxlZAkJPSAweDgw
LAoKCWtCdXR0b25GaWVsZFNoaWZ0CT0gOCwKCWtCdXR0b25GaWVsZE1hc2sJPSAweDAwMDAwMEZG
LAoKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCgoKCgoKCgoKCWtEbGdGbGFnc19Ob25l
CQkJCQk9IDAsCgoJa0RsZ0ZsYWdzX09LCQkJCQk9ICgoKGxvbmcpKCAgKCAga0RsZ0l0ZW1PSyAp
IHwga0J1dHRvblZpc2libGUgfCBrQnV0dG9uRW5hYmxlZCB8IGtCdXR0b25EZWZhdWx0ICkgJiBr
QnV0dG9uRmllbGRNYXNrKSA8PCAoa0J1dHRvbkZpZWxkU2hpZnQgKiAoICAwICApKSkgICwKCglr
RGxnRmxhZ3NfQ0FOQ0VMCQkJCT0gKCgobG9uZykoICAoICBrRGxnSXRlbUNhbmNlbCApIHwga0J1
dHRvblZpc2libGUgfCBrQnV0dG9uRW5hYmxlZCB8IGtCdXR0b25EZWZhdWx0ICkgJiBrQnV0dG9u
RmllbGRNYXNrKSA8PCAoa0J1dHRvbkZpZWxkU2hpZnQgKiAoICAwICApKSkgICwKCglrRGxnRmxh
Z3NfT0tfQ2FuY2VsCQkJCT0gKCgobG9uZykoICAoICBrRGxnSXRlbU9LICkgfCBrQnV0dG9uVmlz
aWJsZSB8IGtCdXR0b25FbmFibGVkIHwga0J1dHRvbkRlZmF1bHQgKSAmIGtCdXR0b25GaWVsZE1h
c2spIDw8IChrQnV0dG9uRmllbGRTaGlmdCAqICggIDAgICkpKSAgCgkJCQkJCQkJCXwgKCgobG9u
ZykoICAoICBrRGxnSXRlbUNhbmNlbCApIHwga0J1dHRvblZpc2libGUgfCBrQnV0dG9uRW5hYmxl
ZCB8IGtCdXR0b25Fc2NhcGUgKSAmIGtCdXR0b25GaWVsZE1hc2spIDw8IChrQnV0dG9uRmllbGRT
aGlmdCAqICggIDEgICkpKSAgLAoKCWtEbGdGbGFnc19Pa19DQU5DRUwJCQkJPSAoKChsb25nKSgg
ICggIGtEbGdJdGVtT0sgKSB8IGtCdXR0b25WaXNpYmxlIHwga0J1dHRvbkVuYWJsZWQgKSAmIGtC
dXR0b25GaWVsZE1hc2spIDw8IChrQnV0dG9uRmllbGRTaGlmdCAqICggIDAgICkpKSAgCgkJCQkJ
CQkJCXwgKCgobG9uZykoICAoICBrRGxnSXRlbUNhbmNlbCApIHwga0J1dHRvblZpc2libGUgfCBr
QnV0dG9uRW5hYmxlZCB8IGtCdXR0b25EZWZhdWx0ICkgJiBrQnV0dG9uRmllbGRNYXNrKSA8PCAo
a0J1dHRvbkZpZWxkU2hpZnQgKiAoICAxICApKSkgICwKCglrRGxnRmxhZ3NfWUVTX05vCQkJCT0g
KCgobG9uZykoICAoICBrRGxnSXRlbVllcyApIHwga0J1dHRvblZpc2libGUgfCBrQnV0dG9uRW5h
YmxlZCB8IGtCdXR0b25EZWZhdWx0ICkgJiBrQnV0dG9uRmllbGRNYXNrKSA8PCAoa0J1dHRvbkZp
ZWxkU2hpZnQgKiAoICAwICApKSkgIAoJCQkJCQkJCQl8ICgoKGxvbmcpKCAgKCAga0RsZ0l0ZW1O
byApIHwga0J1dHRvblZpc2libGUgfCBrQnV0dG9uRW5hYmxlZCB8IGtCdXR0b25Fc2NhcGUgKSAm
IGtCdXR0b25GaWVsZE1hc2spIDw8IChrQnV0dG9uRmllbGRTaGlmdCAqICggIDEgICkpKSAgLAoK
CWtEbGdGbGFnc19ZZXNfTk8JCQkJPSAoKChsb25nKSggICggIGtEbGdJdGVtWWVzICkgfCBrQnV0
dG9uVmlzaWJsZSB8IGtCdXR0b25FbmFibGVkICkgJiBrQnV0dG9uRmllbGRNYXNrKSA8PCAoa0J1
dHRvbkZpZWxkU2hpZnQgKiAoICAwICApKSkgIAoJCQkJCQkJCQl8ICgoKGxvbmcpKCAgKCAga0Rs
Z0l0ZW1ObyApIHwga0J1dHRvblZpc2libGUgfCBrQnV0dG9uRW5hYmxlZCB8IGtCdXR0b25EZWZh
dWx0ICkgJiBrQnV0dG9uRmllbGRNYXNrKSA8PCAoa0J1dHRvbkZpZWxkU2hpZnQgKiAoICAxICAp
KSkgICwKCglrRGxnRmxhZ3NfQ29udGludWVfREVCVUdfUmVzZXQJPSAoKChsb25nKSggICggIGtE
bGdJdGVtQ29udGludWUgKSB8IGtCdXR0b25WaXNpYmxlIHwga0J1dHRvbkVuYWJsZWQgKSAmIGtC
dXR0b25GaWVsZE1hc2spIDw8IChrQnV0dG9uRmllbGRTaGlmdCAqICggIDAgICkpKSAgCgkJCQkJ
CQkJCXwgKCgobG9uZykoICAoICBrRGxnSXRlbURlYnVnICkgfCBrQnV0dG9uVmlzaWJsZSB8IGtC
dXR0b25FbmFibGVkIHwga0J1dHRvbkRlZmF1bHQgKSAmIGtCdXR0b25GaWVsZE1hc2spIDw8IChr
QnV0dG9uRmllbGRTaGlmdCAqICggIDEgICkpKSAgCgkJCQkJCQkJCXwgKCgobG9uZykoICAoICBr
RGxnSXRlbVJlc2V0ICkgfCBrQnV0dG9uVmlzaWJsZSB8IGtCdXR0b25FbmFibGVkICkgJiBrQnV0
dG9uRmllbGRNYXNrKSA8PCAoa0J1dHRvbkZpZWxkU2hpZnQgKiAoICAyICApKSkgICwKCglrRGxn
RmxhZ3NfY29udGludWVfREVCVUdfUmVzZXQJPSAoKChsb25nKSggICggIGtEbGdJdGVtQ29udGlu
dWUgKSB8IGtCdXR0b25WaXNpYmxlICkgJiBrQnV0dG9uRmllbGRNYXNrKSA8PCAoa0J1dHRvbkZp
ZWxkU2hpZnQgKiAoICAwICApKSkgIAoJCQkJCQkJCQl8ICgoKGxvbmcpKCAgKCAga0RsZ0l0ZW1E
ZWJ1ZyApIHwga0J1dHRvblZpc2libGUgfCBrQnV0dG9uRW5hYmxlZCB8IGtCdXR0b25EZWZhdWx0
ICkgJiBrQnV0dG9uRmllbGRNYXNrKSA8PCAoa0J1dHRvbkZpZWxkU2hpZnQgKiAoICAxICApKSkg
IAoJCQkJCQkJCQl8ICgoKGxvbmcpKCAgKCAga0RsZ0l0ZW1SZXNldCApIHwga0J1dHRvblZpc2li
bGUgfCBrQnV0dG9uRW5hYmxlZCApICYga0J1dHRvbkZpZWxkTWFzaykgPDwgKGtCdXR0b25GaWVs
ZFNoaWZ0ICogKCAgMiAgKSkpICAsCgoJa0RsZ0ZsYWdzX2NvbnRpbnVlX2RlYnVnX1JFU0VUCT0g
KCgobG9uZykoICAoICBrRGxnSXRlbUNvbnRpbnVlICkgfCBrQnV0dG9uVmlzaWJsZSApICYga0J1
dHRvbkZpZWxkTWFzaykgPDwgKGtCdXR0b25GaWVsZFNoaWZ0ICogKCAgMCAgKSkpICAKCQkJCQkJ
CQkJfCAoKChsb25nKSggICggIGtEbGdJdGVtRGVidWcgKSB8IGtCdXR0b25WaXNpYmxlICkgJiBr
QnV0dG9uRmllbGRNYXNrKSA8PCAoa0J1dHRvbkZpZWxkU2hpZnQgKiAoICAxICApKSkgIAoJCQkJ
CQkJCQl8ICgoKGxvbmcpKCAgKCAga0RsZ0l0ZW1SZXNldCApIHwga0J1dHRvblZpc2libGUgfCBr
QnV0dG9uRW5hYmxlZCB8IGtCdXR0b25EZWZhdWx0ICkgJiBrQnV0dG9uRmllbGRNYXNrKSA8PCAo
a0J1dHRvbkZpZWxkU2hpZnQgKiAoICAyICApKSkgIAp9OwoKdHlwZWRlZiB2ZWN0b3I8RW1EbGdJ
dGVtSUQ+CQlFbURsZ0l0ZW1JRExpc3Q7Cgp0eXBlZGVmIGxvbmcJCQkJCUVtRGxnSXRlbUluZGV4
Owp0eXBlZGVmIHZlY3RvcjxFbURsZ0l0ZW1JbmRleD4JRW1EbGdJdGVtSW5kZXhMaXN0OwoKdHlw
ZWRlZiBsb25nCQkJCQlFbURsZ0xpc3RJbmRleDsJIAp0eXBlZGVmIHZlY3RvcjxFbURsZ0xpc3RJ
bmRleD4JRW1EbGdMaXN0SW5kZXhMaXN0Owpjb25zdCBFbURsZ0xpc3RJbmRleAkJCWtEbGdJdGVt
TGlzdE5vbmUgPSAtMTsKCnN0cnVjdCBFbURsZ0NvbnRleHQ7Cgp0eXBlZGVmIEVtRGxnSXRlbUlE
CQkJCSgqRW1EbGdUaHJlYWRGbikoY29uc3Qgdm9pZCopOwp0eXBlZGVmIEVtRGxnRm5SZXN1bHQJ
CQkoKkVtRGxnRm4pKEVtRGxnQ29udGV4dCYpOwp0eXBlZGVmIHZvaWQqCQkJCQlFbURsZ1JlZjsK
CmVudW0gRW1ST01GaWxlU3RhdHVzCnsKCWtST01GaWxlT0ssCglrUk9NRmlsZUR1YmlvdXMsCglr
Uk9NRmlsZVVua25vd24KfTsKCnN0cnVjdCBFbURsZ0NvbnRleHQKewoJCQkJCQlFbURsZ0NvbnRl
eHQgKHZvaWQpOwoJCQkJCQlFbURsZ0NvbnRleHQgKGNvbnN0IEVtRGxnQ29udGV4dCYpOwoKCUVt
RGxnRm5SZXN1bHQJCUluaXQgKCk7CglFbURsZ0ZuUmVzdWx0CQlFdmVudCAoRW1EbGdJdGVtSUQp
OwoJRW1EbGdGblJlc3VsdAkJSWRsZSAoKTsKCXZvaWQJCQkJRGVzdHJveSAoKTsKCUVtRGxnRm5S
ZXN1bHQJCVBhbmVsRW50ZXIgKCk7CglFbURsZ0ZuUmVzdWx0CQlQYW5lbEV4aXQgKCk7CgoJRW1E
bGdGbgkJCQlmRm47CglFbURsZ0ZuUmVzdWx0CQlmRm5SZXN1bHQ7CglFbURsZ1JlZgkJCWZEbGc7
CglFbURsZ0lECQkJCWZEbGdJRDsKCUVtRGxnUGFuZWxJRAkJZlBhbmVsSUQ7CglFbURsZ0l0ZW1J
RAkJCWZJdGVtSUQ7CglFbURsZ0NtZElECQkJZkNvbW1hbmRJRDsKCWJvb2wJCQkJZk5lZWRzSWRs
ZTsKCXZvaWQqCQkJCWZVc2VyRGF0YTsKCglFbURsZ0l0ZW1JRAkJCWZEZWZhdWx0SXRlbTsKCUVt
RGxnSXRlbUlECQkJZkNhbmNlbEl0ZW07Cn07CgpzdHJ1Y3QgRG9HZXRGaWxlUGFyYW1ldGVycwp7
CglEb0dldEZpbGVQYXJhbWV0ZXJzIChFbUZpbGVSZWYmIHJlc3VsdCwKCQkJCQkJIGNvbnN0IHN0
cmluZyYgcHJvbXB0LAoJCQkJCQkgY29uc3QgRW1EaXJSZWYmIGRlZmF1bHRQYXRoLAoJCQkJCQkg
Y29uc3QgRW1GaWxlVHlwZUxpc3QmIGZpbHRlckxpc3QpIDoKCQlmUmVzdWx0IChyZXN1bHQpLAoJ
CWZQcm9tcHQgKHByb21wdCksCgkJZkRlZmF1bHRQYXRoIChkZWZhdWx0UGF0aCksCgkJZkZpbHRl
ckxpc3QgKGZpbHRlckxpc3QpCgl7Cgl9CgoJRW1GaWxlUmVmJgkJCQlmUmVzdWx0OwoJY29uc3Qg
c3RyaW5nJgkJCWZQcm9tcHQ7Cgljb25zdCBFbURpclJlZiYJCQlmRGVmYXVsdFBhdGg7Cgljb25z
dCBFbUZpbGVUeXBlTGlzdCYJZkZpbHRlckxpc3Q7Cn07CgpzdHJ1Y3QgRG9HZXRGaWxlTGlzdFBh
cmFtZXRlcnMKewoJRG9HZXRGaWxlTGlzdFBhcmFtZXRlcnMgKEVtRmlsZVJlZkxpc3QmIHJlc3Vs
dHMsCgkJCQkJCQkgY29uc3Qgc3RyaW5nJiBwcm9tcHQsCgkJCQkJCQkgY29uc3QgRW1EaXJSZWYm
IGRlZmF1bHRQYXRoLAoJCQkJCQkJIGNvbnN0IEVtRmlsZVR5cGVMaXN0JiBmaWx0ZXJMaXN0KSA6
CgkJZlJlc3VsdHMgKHJlc3VsdHMpLAoJCWZQcm9tcHQgKHByb21wdCksCgkJZkRlZmF1bHRQYXRo
IChkZWZhdWx0UGF0aCksCgkJZkZpbHRlckxpc3QgKGZpbHRlckxpc3QpCgl7Cgl9CgoJRW1GaWxl
UmVmTGlzdCYJCQlmUmVzdWx0czsKCWNvbnN0IHN0cmluZyYJCQlmUHJvbXB0OwoJY29uc3QgRW1E
aXJSZWYmCQkJZkRlZmF1bHRQYXRoOwoJY29uc3QgRW1GaWxlVHlwZUxpc3QmCWZGaWx0ZXJMaXN0
Owp9OwoKc3RydWN0IERvUHV0RmlsZVBhcmFtZXRlcnMKewoJRG9QdXRGaWxlUGFyYW1ldGVycyAo
RW1GaWxlUmVmJiByZXN1bHQsCgkJCQkJCSBjb25zdCBzdHJpbmcmIHByb21wdCwKCQkJCQkJIGNv
bnN0IEVtRGlyUmVmJiBkZWZhdWx0UGF0aCwKCQkJCQkJIGNvbnN0IEVtRmlsZVR5cGVMaXN0JiBm
aWx0ZXJMaXN0LAoJCQkJCQkgY29uc3Qgc3RyaW5nJiBkZWZhdWx0TmFtZSkgOgoJCWZSZXN1bHQg
KHJlc3VsdCksCgkJZlByb21wdCAocHJvbXB0KSwKCQlmRGVmYXVsdFBhdGggKGRlZmF1bHRQYXRo
KSwKCQlmRmlsdGVyTGlzdCAoZmlsdGVyTGlzdCksCgkJZkRlZmF1bHROYW1lIChkZWZhdWx0TmFt
ZSkKCXsKCX0KCglFbUZpbGVSZWYmCQkJCWZSZXN1bHQ7Cgljb25zdCBzdHJpbmcmCQkJZlByb21w
dDsKCWNvbnN0IEVtRGlyUmVmJgkJCWZEZWZhdWx0UGF0aDsKCWNvbnN0IEVtRmlsZVR5cGVMaXN0
JglmRmlsdGVyTGlzdDsKCWNvbnN0IHN0cmluZyYJCQlmRGVmYXVsdE5hbWU7Cn07CgpzdHJ1Y3Qg
RG9HZXREaXJlY3RvcnlQYXJhbWV0ZXJzCnsKCURvR2V0RGlyZWN0b3J5UGFyYW1ldGVycyAoRW1E
aXJSZWYmIHJlc3VsdCwKCQkJCQkJCSAgY29uc3Qgc3RyaW5nJiBwcm9tcHQsCgkJCQkJCQkgIGNv
bnN0IEVtRGlyUmVmJiBkZWZhdWx0UGF0aCkgOgoJCWZSZXN1bHQgKHJlc3VsdCksCgkJZlByb21w
dCAocHJvbXB0KSwKCQlmRGVmYXVsdFBhdGggKGRlZmF1bHRQYXRoKQoJewoJfQoKCUVtRGlyUmVm
JgkJCQlmUmVzdWx0OwoJY29uc3Qgc3RyaW5nJgkJCWZQcm9tcHQ7Cgljb25zdCBFbURpclJlZiYJ
CQlmRGVmYXVsdFBhdGg7Cn07CgpzdHJ1Y3QgRG9TZXNzaW9uU2F2ZVBhcmFtZXRlcnMKewoJRG9T
ZXNzaW9uU2F2ZVBhcmFtZXRlcnMgKGNvbnN0IHN0cmluZyYgYXBwTmFtZSwKCQkJCQkJCSBjb25z
dCBzdHJpbmcmIGRvY05hbWUsCgkJCQkJCQkgQm9vbCBxdWl0dGluZykgOgoJCWZBcHBOYW1lIChh
cHBOYW1lKSwKCQlmRG9jTmFtZSAoZG9jTmFtZSksCgkJZlF1aXR0aW5nIChxdWl0dGluZykKCXsK
CX0KCgljb25zdCBzdHJpbmcmCQkJZkFwcE5hbWU7Cgljb25zdCBzdHJpbmcmCQkJZkRvY05hbWU7
CglCb29sCQkJCQlmUXVpdHRpbmc7Cn07CgpzdHJ1Y3QgUnVuRGlhbG9nUGFyYW1ldGVycwp7CglS
dW5EaWFsb2dQYXJhbWV0ZXJzIChFbURsZ0ZuIGZuLCB2b2lkKiB1c2VyRGF0YSwgRW1EbGdJRCBk
bGdJRCkgOgoJCWZGbiAoZm4pLAoJCWZVc2VyRGF0YSAodXNlckRhdGEpLAoJCWZEbGdJRCAoZGxn
SUQpCgl7Cgl9CgoJRW1EbGdGbgkJCQkJZkZuOwoJdm9pZCoJCQkJCWZVc2VyRGF0YTsKCUVtRGxn
SUQJCQkJCWZEbGdJRDsKfTsKCiAKdHlwZWRlZiBEYXRhYmFzZUluZm9MaXN0CUVtRGF0YWJhc2VM
aXN0OwpzdHJ1Y3QgRWRpdENvZGVCcmVha3BvaW50RGF0YTsKc3RydWN0IEVtRXJyb3JIYW5kbGlu
Z01lbnVCdW5kbGU7CgpjbGFzcyBFbURsZwp7CglwdWJsaWM6CgkJc3RhdGljIEVtRGxnSXRlbUlE
CQlEb0dldEZpbGUJCQkJCShFbUZpbGVSZWYmIHJlc3VsdCwKCQkJCQkJCQkJCQkJCQkJIGNvbnN0
IHN0cmluZyYgcHJvbXB0LAoJCQkJCQkJCQkJCQkJCQkgY29uc3QgRW1EaXJSZWYmIGRlZmF1bHRQ
YXRoLAoJCQkJCQkJCQkJCQkJCQkgY29uc3QgRW1GaWxlVHlwZUxpc3QmIGZpbHRlckxpc3QpOwoJ
CXN0YXRpYyBFbURsZ0l0ZW1JRAkJRG9HZXRGaWxlTGlzdAkJCQkoRW1GaWxlUmVmTGlzdCYgcmVz
dWx0cywKCQkJCQkJCQkJCQkJCQkJIGNvbnN0IHN0cmluZyYgcHJvbXB0LAoJCQkJCQkJCQkJCQkJ
CQkgY29uc3QgRW1EaXJSZWYmIGRlZmF1bHRQYXRoLAoJCQkJCQkJCQkJCQkJCQkgY29uc3QgRW1G
aWxlVHlwZUxpc3QmIGZpbHRlckxpc3QpOwoJCXN0YXRpYyBFbURsZ0l0ZW1JRAkJRG9QdXRGaWxl
CQkJCQkoRW1GaWxlUmVmJiByZXN1bHQsCgkJCQkJCQkJCQkJCQkJCSBjb25zdCBzdHJpbmcmIHBy
b21wdCwKCQkJCQkJCQkJCQkJCQkJIGNvbnN0IEVtRGlyUmVmJiBkZWZhdWx0UGF0aCwKCQkJCQkJ
CQkJCQkJCQkJIGNvbnN0IEVtRmlsZVR5cGVMaXN0JiBmaWx0ZXJMaXN0LAoJCQkJCQkJCQkJCQkJ
CQkgY29uc3Qgc3RyaW5nJiBkZWZhdWx0TmFtZSk7CgkJc3RhdGljIEVtRGxnSXRlbUlECQlEb0dl
dERpcmVjdG9yeQkJCQkoRW1EaXJSZWYmIHJlc3VsdCwKCQkJCQkJCQkJCQkJCQkJIGNvbnN0IHN0
cmluZyYgcHJvbXB0LAoJCQkJCQkJCQkJCQkJCQkgY29uc3QgRW1EaXJSZWYmIGRlZmF1bHRQYXRo
KTsKCgkJc3RhdGljIEVtRGxnSXRlbUlECQlEb0Fib3V0Qm94CQkJCQkodm9pZCk7CgoJCXN0YXRp
YyBFbURsZ0l0ZW1JRAkJRG9TZXNzaW9uTmV3CQkJCShDb25maWd1cmF0aW9uJik7CgkJc3RhdGlj
IEVtRGxnSXRlbUlECQlEb1Nlc3Npb25TYXZlCQkJCShjb25zdCBzdHJpbmcmIGRvY05hbWUsCgkJ
CQkJCQkJCQkJCQkJCSBCb29sIHF1aXR0aW5nKTsKCgkJc3RhdGljIEVtRGxnSXRlbUlECQlEb0hv
cmRlTmV3CQkJCQkodm9pZCk7CgoJCXN0YXRpYyBFbURsZ0l0ZW1JRAkJRG9EYXRhYmFzZUltcG9y
dAkJCShjb25zdCBFbUZpbGVSZWZMaXN0JiwKCQkJCQkJCQkJCQkJCQkJIEVtRmlsZUltcG9ydE1l
dGhvZCBtZXRob2QpOwoJCXN0YXRpYyBFbURsZ0l0ZW1JRAkJRG9EYXRhYmFzZUV4cG9ydAkJCSh2
b2lkKTsKCQlzdGF0aWMgRW1EbGdJdGVtSUQJCURvUmVzZXQJCQkJCQkoRW1SZXNldFR5cGUmKTsK
CQlzdGF0aWMgRW1EbGdJdGVtSUQJCURvUk9NVHJhbnNmZXJRdWVyeQkJCShFbVRyYW5zcG9ydDo6
Q29uZmlnKiYpOwoJCXN0YXRpYyBFbURsZ0l0ZW1JRAkJRG9ST01UcmFuc2ZlclByb2dyZXNzCQko
RW1ST01UcmFuc2ZlciYpOwoKCQlzdGF0aWMgRW1EbGdJdGVtSUQJCURvRWRpdFByZWZlcmVuY2Vz
CQkJKHZvaWQpOwoJCXN0YXRpYyBFbURsZ0l0ZW1JRAkJRG9FZGl0TG9nZ2luZ09wdGlvbnMJCShM
b2dnaW5nVHlwZSk7CgkJc3RhdGljIEVtRGxnSXRlbUlECQlEb0VkaXREZWJ1Z2dpbmdPcHRpb25z
CQkodm9pZCk7CgkJc3RhdGljIEVtRGxnSXRlbUlECQlEb0VkaXRFcnJvckhhbmRsaW5nCQkJKHZv
aWQpOwoJCXN0YXRpYyBFbURsZ0l0ZW1JRAkJRG9FZGl0U2tpbnMJCQkJCSh2b2lkKTsKCQlzdGF0
aWMgRW1EbGdJdGVtSUQJCURvRWRpdEhvc3RGU09wdGlvbnMJCQkodm9pZCk7CgkJc3RhdGljIEVt
RGxnSXRlbUlECQlEb0VkaXRCcmVha3BvaW50cwkJCSh2b2lkKTsKCQlzdGF0aWMgRW1EbGdJdGVt
SUQJCURvRWRpdENvZGVCcmVha3BvaW50CQkoRWRpdENvZGVCcmVha3BvaW50RGF0YSYpOwoKCgoK
CQlzdGF0aWMgRW1EbGdJdGVtSUQJCURvQ29tbW9uRGlhbG9nCQkJCShTdHJDb2RlIG1zZywKCQkJ
CQkJCQkJCQkJCQkJIEVtQ29tbW9uRGlhbG9nRmxhZ3MpOwoJCXN0YXRpYyBFbURsZ0l0ZW1JRAkJ
RG9Db21tb25EaWFsb2cJCQkJKGNvbnN0IGNoYXIqIG1zZywKCQkJCQkJCQkJCQkJCQkJIEVtQ29t
bW9uRGlhbG9nRmxhZ3MpOwoJCXN0YXRpYyBFbURsZ0l0ZW1JRAkJRG9Db21tb25EaWFsb2cJCQkJ
KGNvbnN0IHN0cmluZyYgbXNnLAoJCQkJCQkJCQkJCQkJCQkgRW1Db21tb25EaWFsb2dGbGFncyk7
CgoJCXN0YXRpYyBFbURsZ0l0ZW1JRAkJRG9TYXZlQm91bmQJCQkJCSh2b2lkKTsKCQlzdGF0aWMg
RW1EbGdJdGVtSUQJCURvU2Vzc2lvbkluZm8JCQkJKHZvaWQpOwoJCXN0YXRpYyBFbURsZ0l0ZW1J
RAkJRG9HZXRTb2NrZXRBZGRyZXNzCQkJKHN0cmluZyYpOwoKCQlzdGF0aWMgdm9pZAkJCQlHcmVt
bGluQ29udHJvbE9wZW4JCQkodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJR3JlbWxpbkNvbnRyb2xD
bG9zZQkJCSh2b2lkKTsKCgkJc3RhdGljIHZvaWQJCQkJTWluaW1pemVQcm9ncmVzc09wZW4JCSh2
b2lkKTsKCQlzdGF0aWMgdm9pZAkJCQlNaW5pbWl6ZVByb2dyZXNzQ2xvc2UJCSh2b2lkKTsKCgkJ
c3RhdGljIEVtRGxnSXRlbUlECQlSdW5EaWFsb2cJCQkJCShFbURsZ0ZuLCB2b2lkKiwgRW1EbGdJ
RCk7CgkJc3RhdGljIEVtRGxnSXRlbUlECQlSdW5EaWFsb2cJCQkJCShFbURsZ1RocmVhZEZuLCBj
b25zdCB2b2lkKiBwYXJhbWV0ZXJzKTsKCgkJc3RhdGljIEVtRGxnUmVmCQkJRGlhbG9nT3BlbgkJ
CQkJKEVtRGxnRm4sIHZvaWQqLCBFbURsZ0lEKTsKCQlzdGF0aWMgdm9pZAkJCQlEaWFsb2dDbG9z
ZQkJCQkJKEVtRGxnUmVmKTsKCglwcml2YXRlOgoJCXN0YXRpYyBFbURsZ0l0ZW1JRAkJSG9zdFJ1
bkdldEZpbGUJCQkJKGNvbnN0IHZvaWQqIHBhcmFtZXRlcnMpOwoJCXN0YXRpYyBFbURsZ0l0ZW1J
RAkJSG9zdFJ1bkdldEZpbGVMaXN0CQkJKGNvbnN0IHZvaWQqIHBhcmFtZXRlcnMpOwoJCXN0YXRp
YyBFbURsZ0l0ZW1JRAkJSG9zdFJ1blB1dEZpbGUJCQkJKGNvbnN0IHZvaWQqIHBhcmFtZXRlcnMp
OwoJCXN0YXRpYyBFbURsZ0l0ZW1JRAkJSG9zdFJ1bkdldERpcmVjdG9yeQkJCShjb25zdCB2b2lk
KiBwYXJhbWV0ZXJzKTsKCQlzdGF0aWMgRW1EbGdJdGVtSUQJCUhvc3RSdW5BYm91dEJveAkJCQko
Y29uc3Qgdm9pZCogcGFyYW1ldGVycyk7CgkJc3RhdGljIEVtRGxnSXRlbUlECQlIb3N0UnVuU2Vz
c2lvblNhdmUJCQkoY29uc3Qgdm9pZCogcGFyYW1ldGVycyk7CgkJc3RhdGljIEVtRGxnSXRlbUlE
CQlIb3N0UnVuRGlhbG9nCQkJCShjb25zdCB2b2lkKiBwYXJhbWV0ZXJzKTsKCgkJc3RhdGljIEVt
RGxnUmVmCQkJSG9zdERpYWxvZ09wZW4JCQkJKEVtRGxnRm4sIHZvaWQqLCBFbURsZ0lEKTsKCQlz
dGF0aWMgdm9pZAkJCQlIb3N0RGlhbG9nQ2xvc2UJCQkJKEVtRGxnUmVmKTsKCglwdWJsaWM6CSAK
CQlzdGF0aWMgdm9pZAkJCQlIb3N0RGlhbG9nSW5pdAkJCQkoRW1EbGdDb250ZXh0Jik7CgkJc3Rh
dGljIHZvaWQJCQkJSG9zdFN0YXJ0SWRsaW5nCQkJCShFbURsZ0NvbnRleHQmKTsKCQlzdGF0aWMg
dm9pZAkJCQlIb3N0U3RvcElkbGluZwkJCQkoRW1EbGdDb250ZXh0Jik7CgojIDcyNiAiLi4vU3Jj
U2hhcmVkL0VtRGxnLmgiCgoKCXByaXZhdGU6CgkJZnJpZW5kIHN0cnVjdCBFbURsZ0NvbnRleHQ7
CSAKCglwcml2YXRlOgoJCXN0YXRpYyBFbURsZ0ZuUmVzdWx0CVBydlNlc3Npb25OZXcJCQkJKEVt
RGxnQ29udGV4dCYpOwoJCXN0YXRpYyBFbURsZ0ZuUmVzdWx0CVBydkhvcmRlTmV3CQkJCQkoRW1E
bGdDb250ZXh0Jik7CgkJc3RhdGljIEVtRGxnRm5SZXN1bHQJUHJ2RGF0YWJhc2VJbXBvcnQJCQko
RW1EbGdDb250ZXh0Jik7CgkJc3RhdGljIEVtRGxnRm5SZXN1bHQJUHJ2RGF0YWJhc2VFeHBvcnQJ
CQkoRW1EbGdDb250ZXh0Jik7CgkJc3RhdGljIEVtRGxnRm5SZXN1bHQJUHJ2UmVzZXQJCQkJCShF
bURsZ0NvbnRleHQmKTsKCQlzdGF0aWMgRW1EbGdGblJlc3VsdAlQcnZST01UcmFuc2ZlclF1ZXJ5
CQkJKEVtRGxnQ29udGV4dCYpOwoJCXN0YXRpYyBFbURsZ0ZuUmVzdWx0CVBydlJPTVRyYW5zZmVy
UHJvZ3Jlc3MJCShFbURsZ0NvbnRleHQmKTsKCQlzdGF0aWMgRW1EbGdGblJlc3VsdAlQcnZFZGl0
UHJlZmVyZW5jZXMJCQkoRW1EbGdDb250ZXh0Jik7CgkJc3RhdGljIEVtRGxnRm5SZXN1bHQJUHJ2
RWRpdExvZ2dpbmdPcHRpb25zCQkoRW1EbGdDb250ZXh0Jik7CgkJc3RhdGljIEVtRGxnRm5SZXN1
bHQJUHJ2RWRpdERlYnVnZ2luZ09wdGlvbnMJCShFbURsZ0NvbnRleHQmKTsKCQlzdGF0aWMgRW1E
bGdGblJlc3VsdAlQcnZFcnJvckhhbmRsaW5nCQkJKEVtRGxnQ29udGV4dCYpOwoJCXN0YXRpYyBF
bURsZ0ZuUmVzdWx0CVBydkVkaXRTa2lucwkJCQkoRW1EbGdDb250ZXh0Jik7CgkJc3RhdGljIEVt
RGxnRm5SZXN1bHQJUHJ2RWRpdEhvc3RGU09wdGlvbnMJCShFbURsZ0NvbnRleHQmKTsKCQlzdGF0
aWMgRW1EbGdGblJlc3VsdAlQcnZFZGl0QnJlYWtwb2ludHMJCQkoRW1EbGdDb250ZXh0Jik7CgkJ
c3RhdGljIEVtRGxnRm5SZXN1bHQJUHJ2RWRpdENvZGVCcmVha3BvaW50CQkoRW1EbGdDb250ZXh0
Jik7CgoKCgkJc3RhdGljIEVtRGxnRm5SZXN1bHQJUHJ2Q29tbW9uRGlhbG9nCQkJCShFbURsZ0Nv
bnRleHQmKTsKCQlzdGF0aWMgRW1EbGdGblJlc3VsdAlQcnZTYXZlQm91bmQJCQkJKEVtRGxnQ29u
dGV4dCYpOwoJCXN0YXRpYyBFbURsZ0ZuUmVzdWx0CVBydlNlc3Npb25JbmZvCQkJCShFbURsZ0Nv
bnRleHQmKTsKCQlzdGF0aWMgRW1EbGdGblJlc3VsdAlQcnZHZXRTb2NrZXRBZGRyZXNzCQkJKEVt
RGxnQ29udGV4dCYpOwoJCXN0YXRpYyBFbURsZ0ZuUmVzdWx0CVBydkdyZW1saW5Db250cm9sCQkJ
KEVtRGxnQ29udGV4dCYpOwoJCXN0YXRpYyBFbURsZ0ZuUmVzdWx0CVBydk1pbmltaXplUHJvZ3Jl
c3MJCQkoRW1EbGdDb250ZXh0Jik7CgoJCSAKCgkJc3RhdGljIHZvaWQJCQkJUHJ2QnVpbGRST01N
ZW51CQkJCShjb25zdCBFbURsZ0NvbnRleHQmKTsKCQlzdGF0aWMgdm9pZAkJCQlQcnZCdWlsZERl
dmljZU1lbnUJCQkoY29uc3QgRW1EbGdDb250ZXh0Jik7CgkJc3RhdGljIHZvaWQJCQkJUHJ2QnVp
bGRTa2luTWVudQkJCShjb25zdCBFbURsZ0NvbnRleHQmKTsKCQlzdGF0aWMgdm9pZAkJCQlQcnZC
dWlsZE1lbW9yeVNpemVNZW51CQkoY29uc3QgRW1EbGdDb250ZXh0Jik7CgkJc3RhdGljIHZvaWQJ
CQkJUHJ2TmV3U2Vzc2lvblNldE9LQnV0dG9uCShjb25zdCBFbURsZ0NvbnRleHQmKTsKCQlzdGF0
aWMgdm9pZAkJCQlQcnZGaWx0ZXJEZXZpY2VMaXN0CQkJKGNvbnN0IEVtRmlsZVJlZiYgcm9tRmls
ZSwKCQkJCQkJCQkJCQkJCQkJIEVtRGV2aWNlTGlzdCYgZGV2aWNlcywKCQkJCQkJCQkJCQkJCQkJ
IEVtRGV2aWNlTGlzdDo6aXRlcmF0b3ImIGRldmljZXNfZW5kLAoJCQkJCQkJCQkJCQkJCQkgdW5z
aWduZWQgaW50JiB2ZXJzaW9uKTsKCQlzdGF0aWMgdm9pZAkJCQlQcnZGaWx0ZXJNZW1vcnlTaXpl
cwkJKE1lbW9yeVRleHRMaXN0JiBzaXplcywKCQkJCQkJCQkJCQkJCQkJIGNvbnN0IENvbmZpZ3Vy
YXRpb24mIGNmZyk7CgkJc3RhdGljIEVtUk9NRmlsZVN0YXR1cwlQcnZDYW5Vc2VST01GaWxlCQkJ
KEVtRmlsZVJlZiYgdGVzdFJlZik7CgoJCSAKCgkJc3RhdGljIFVJbnQzMgkJCVBydlNlbGVjdGVk
QXBwTmFtZVRvSW5kZXgJKEVtRGF0YWJhc2VMaXN0IGxpc3QsIGNvbnN0IHN0cmluZyYgYXBwTmFt
ZSk7CgkJc3RhdGljIERhdGFiYXNlSW5mbwkJUHJ2U2VsZWN0ZWRJbmRleFRvQXBwCQkoRW1EYXRh
YmFzZUxpc3QgbGlzdCwgdWludDMyIGluZGV4KTsKCQlzdGF0aWMgdm9pZAkJCQlQcnZTZWxlY3Rl
ZExpc3QJCQkJKEVtRGF0YWJhc2VMaXN0IHNlbGVjdGVkQXBwcywKCQkJCQkJCQkJCQkJCQkJCVN0
cmluZ0xpc3QgJnNlbGVjdGVkQXBwU3RyaW5ncyk7CgoJCSAKCgkJc3RhdGljIEJvb2wJCQkJUHJ2
RXhwb3J0RmlsZQkJCQkoY29uc3QgRGF0YWJhc2VJbmZvJiBkYik7CgoJCSAKCgkJc3RhdGljIHZv
aWQJCQkJUHJ2R2V0RGxxUG9ydEl0ZW1MaXN0CQkoRW1UcmFuc3BvcnREZXNjcmlwdG9yTGlzdCYg
bWVudUl0ZW1zKTsKCQlzdGF0aWMgdm9pZAkJCQlQcnZDb252ZXJ0QmF1ZExpc3RUb1N0cmluZ3MJ
KGNvbnN0IEVtVHJhbnNwb3J0U2VyaWFsOjpCYXVkTGlzdCYgYmF1ZExpc3QsCgkJCQkJCQkJCQkJ
CQkJCSBTdHJpbmdMaXN0JiBiYXVkU3RyTGlzdCk7CgoJCSAKCgkJc3RhdGljIHZvaWQJCQkJUHJ2
RWRpdFByZWZUb0RpYWxvZwkJCShFbURsZ0NvbnRleHQmIGNvbnRleHQpOwoJCXN0YXRpYyB2b2lk
CQkJCVBydkVkaXRQcmVmRnJvbURpYWxvZwkJKEVtRGxnQ29udGV4dCYgY29udGV4dCk7CgkJc3Rh
dGljIHZvaWQJCQkJUHJ2QnVpbGREZXNjcmlwdG9yTGlzdHMJCShFbURsZ0NvbnRleHQmIGNvbnRl
eHQpOwoJCXN0YXRpYyB2b2lkCQkJCVBydkdldEVkaXRQcmVmZXJlbmNlcwkJKEVtRGxnQ29udGV4
dCYgY29udGV4dCk7CgkJc3RhdGljIHZvaWQJCQkJUHJ2UHV0RWRpdFByZWZlcmVuY2VzCQkoRW1E
bGdDb250ZXh0JiBjb250ZXh0KTsKCQlzdGF0aWMgQm9vbAkJCQlQcnZFZGl0UHJlZmVyZW5jZXNW
YWxpZGF0ZQkoRW1EbGdDb250ZXh0JiBjb250ZXh0KTsKCQlzdGF0aWMgdm9pZAkJCQlQcnZHZXRQ
cmVmU29ja2V0QWRkcmVzcwkJKEVtRGxnQ29udGV4dCYgY29udGV4dCk7CgoJCSAKCgkJc3RhdGlj
IHZvaWQJCQkJUHJ2RmV0Y2hMb2dnaW5nUHJlZnMJCShFbURsZ0NvbnRleHQmIGNvbnRleHQpOwoJ
CXN0YXRpYyB2b2lkCQkJCVBydkluc3RhbGxMb2dnaW5nUHJlZnMJCShFbURsZ0NvbnRleHQmIGNv
bnRleHQpOwoJCXN0YXRpYyB2b2lkCQkJCVBydkxvZ2dpbmdQcmVmc1RvQnV0dG9ucwkoRW1EbGdD
b250ZXh0JiBjb250ZXh0KTsKCQlzdGF0aWMgdm9pZAkJCQlQcnZMb2dnaW5nUHJlZnNGcm9tQnV0
dG9ucwkoRW1EbGdDb250ZXh0JiBjb250ZXh0KTsKCgkJIAoKCQlzdGF0aWMgdm9pZAkJCQlQcnZG
ZXRjaERlYnVnZ2luZ1ByZWZzCQkoRW1EbGdDb250ZXh0JiBjb250ZXh0KTsKCQlzdGF0aWMgdm9p
ZAkJCQlQcnZJbnN0YWxsRGVidWdnaW5nUHJlZnMJKEVtRGxnQ29udGV4dCYgY29udGV4dCk7CgkJ
c3RhdGljIHZvaWQJCQkJUHJ2RGVidWdnaW5nUHJlZnNUb0J1dHRvbnMJKEVtRGxnQ29udGV4dCYg
Y29udGV4dCk7CgkJc3RhdGljIHZvaWQJCQkJUHJ2RGVidWdnaW5nUHJlZnNGcm9tQnV0dG9ucyAo
RW1EbGdDb250ZXh0JiBjb250ZXh0KTsKCgkJIAoKCQlzdGF0aWMgc3RyaW5nCQkJUHJ2TWVudUl0
ZW1UZXh0CQkJCShFbUVycm9ySGFuZGxpbmdPcHRpb24gaXRlbSk7CgkJc3RhdGljIHZvaWQJCQkJ
UHJ2QnVpbGRNZW51CQkJCShFbUVycm9ySGFuZGxpbmdNZW51QnVuZGxlJgltZW51LAoJCQkJCQkJ
CQkJCQkJCQkgU3RyaW5nTGlzdCYJCQkJaXRlbXMpOwoJCXN0YXRpYyBsb25nCQkJCVBydkZpbmRJ
bmRleAkJCQkoRW1FcnJvckhhbmRsaW5nTWVudUJ1bmRsZSYJbWVudSwKCQkJCQkJCQkJCQkJCQkJ
IEVtRXJyb3JIYW5kbGluZ09wdGlvbgkJdG9GaW5kKTsKCQlzdGF0aWMgdm9pZAkJCQlQcnZFcnJv
ckhhbmRsaW5nVG9EaWFsb2cJKEVtRGxnQ29udGV4dCYJCQkJY29udGV4dCwKCQkJCQkJCQkJCQkJ
CQkJIEVtRXJyb3JIYW5kbGluZ01lbnVCdW5kbGUmCW1lbnUpOwoJCXN0YXRpYyB2b2lkCQkJCVBy
dkVycm9ySGFuZGxpbmdGcm9tRGlhbG9nCShFbURsZ0NvbnRleHQmCQkJCWNvbnRleHQsCgkJCQkJ
CQkJCQkJCQkJCSBFbUVycm9ySGFuZGxpbmdNZW51QnVuZGxlJgltZW51KTsKCQlzdGF0aWMgRW1E
bGdJdGVtSUQJCVBydkFza0NoYW5nZUxvZ2dpbmcJCQkodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJ
UHJ2Q2hlY2tTZXR0aW5nCQkJCShFbURsZ0NvbnRleHQmCQkJCWNvbnRleHQsCgkJCQkJCQkJCQkJ
CQkJCSBFbUVycm9ySGFuZGxpbmdNZW51QnVuZGxlJgltZW51KTsKCQlzdGF0aWMgQm9vbAkJCQlQ
cnZDaGVja1NldHRpbmdzCQkJKEVtRGxnQ29udGV4dCYgY29udGV4dCk7CgkJc3RhdGljIHZvaWQJ
CQkJUHJ2RW5hYmxlTG9nZ2luZ09wdGlvbgkJKEVtRXJyb3JIYW5kbGluZ01lbnVCdW5kbGUmIG1l
bnUpOwoJCXN0YXRpYyB2b2lkCQkJCVBydkVuYWJsZUxvZ2dpbmdPcHRpb25zCQkodm9pZCk7CgoJ
CSAKCgkJc3RhdGljIHZvaWQJCQkJUHJ2RWRpdEhvc3RGU09wdGlvbnNPSwkJKEVtRGxnQ29udGV4
dCYgY29udGV4dCk7CgoJCSAKCgkJc3RhdGljIHZvaWQJCQkJUHJ2RW5hYmxlQ29kZUJyZWFrcG9p
bnRDb250cm9scwkoRW1EbGdDb250ZXh0JiBjb250ZXh0LCBib29sIGVuYWJsZSk7CgkJc3RhdGlj
IHZvaWQJCQkJUHJ2RW5hYmxlRGF0YUJyZWFrcG9pbnRDb250cm9scwkoRW1EbGdDb250ZXh0JiBj
b250ZXh0LCBib29sIGVuYWJsZSk7CgkJc3RhdGljIHZvaWQJCQkJUHJ2UmVmcmVzaENvZGVCcmVh
a3BvaW50TGlzdAkoRW1EbGdDb250ZXh0JiBjb250ZXh0KTsKCQlzdGF0aWMgdm9pZAkJCQlQcnZH
ZXRDb2RlQnJlYWtwb2ludHMJCShFbURsZ0NvbnRleHQmIGNvbnRleHQpOwoJCXN0YXRpYyB2b2lk
CQkJCVBydlNldENvZGVCcmVha3BvaW50cwkJKEVtRGxnQ29udGV4dCYgY29udGV4dCk7CgoJCSAK
CgoKCgoKCQkgCgoJCXN0YXRpYyB2b2lkCQkJCVBydkdybVVwZGF0ZUdyZW1saW5OdW1iZXIJKEVt
RGxnQ29udGV4dCYgY29udGV4dCk7CgkJc3RhdGljIHZvaWQJCQkJUHJ2R3JtVXBkYXRlRXZlbnRO
dW1iZXIJCShFbURsZ0NvbnRleHQmIGNvbnRleHQpOwoJCXN0YXRpYyB2b2lkCQkJCVBydkdybVVw
ZGF0ZUVsYXBzZWRUaW1lCQkoRW1EbGdDb250ZXh0JiBjb250ZXh0KTsKCQlzdGF0aWMgdm9pZAkJ
CQlQcnZHcm1VcGRhdGVBbGwJCQkJKEVtRGxnQ29udGV4dCYgY29udGV4dCk7CgoJCSAKCgkJc3Rh
dGljIHZvaWQJCQkJUHJ2TWluVXBkYXRlUGFzc051bWJlcgkJKEVtRGxnQ29udGV4dCYgY29udGV4
dCk7CgkJc3RhdGljIHZvaWQJCQkJUHJ2TWluVXBkYXRlRXZlbnROdW1iZXIJCShFbURsZ0NvbnRl
eHQmIGNvbnRleHQpOwoJCXN0YXRpYyB2b2lkCQkJCVBydk1pblVwZGF0ZUVsYXBzZWQJCQkoRW1E
bGdDb250ZXh0JiBjb250ZXh0KTsKCQlzdGF0aWMgdm9pZAkJCQlQcnZNaW5VcGRhdGVSYW5nZQkJ
CShFbURsZ0NvbnRleHQmIGNvbnRleHQpOwoJCXN0YXRpYyB2b2lkCQkJCVBydk1pblVwZGF0ZURp
c2NhcmRlZAkJKEVtRGxnQ29udGV4dCYgY29udGV4dCk7CgkJc3RhdGljIHZvaWQJCQkJUHJ2TWlu
VXBkYXRlUHJvZ3Jlc3MJCShFbURsZ0NvbnRleHQmIGNvbnRleHQpOwoJCXN0YXRpYyB2b2lkCQkJ
CVBydk1pblVwZGF0ZUFsbAkJCQkoRW1EbGdDb250ZXh0JiBjb250ZXh0KTsKCglwdWJsaWM6CSAK
CQlzdGF0aWMgdm9pZAkJCQlTZXREbGdCb3VuZHMJCQkJKEVtRGxnUmVmLCBjb25zdCBFbVJlY3Qm
KTsKCQlzdGF0aWMgRW1SZWN0CQkJR2V0RGxnQm91bmRzCQkJCShFbURsZ1JlZik7CgkJc3RhdGlj
IHZvaWQJCQkJTW92ZURsZ1RvCQkJCQkoRW1EbGdSZWYsIEVtQ29vcmQgeCwgRW1Db29yZCB5KTsK
CQlzdGF0aWMgdm9pZAkJCQlNb3ZlRGxnVG8JCQkJCShFbURsZ1JlZiwgY29uc3QgRW1Qb2ludCYp
OwoJCXN0YXRpYyB2b2lkCQkJCUNlbnRlckRsZwkJCQkJKEVtRGxnUmVmKTsKCQlzdGF0aWMgdm9p
ZAkJCQlFbnN1cmVEbGdPbnNjcmVlbgkJCShFbURsZ1JlZik7CgoJCXN0YXRpYyB2b2lkCQkJCVNl
dERsZ0RlZmF1bHRCdXR0b24JCQkoRW1EbGdDb250ZXh0JiwgRW1EbGdJdGVtSUQpOwoJCXN0YXRp
YyB2b2lkCQkJCVNldERsZ0NhbmNlbEJ1dHRvbgkJCShFbURsZ0NvbnRleHQmLCBFbURsZ0l0ZW1J
RCk7CgoJCXN0YXRpYyB2b2lkCQkJCVNldEl0ZW1NaW4JCQkJCShFbURsZ1JlZiwgRW1EbGdJdGVt
SUQsIGxvbmcgbWF4KTsKCQlzdGF0aWMgdm9pZAkJCQlTZXRJdGVtVmFsdWUJCQkJKEVtRGxnUmVm
LCBFbURsZ0l0ZW1JRCwgbG9uZyB2YWx1ZSk7CgkJc3RhdGljIHZvaWQJCQkJU2V0SXRlbU1heAkJ
CQkJKEVtRGxnUmVmLCBFbURsZ0l0ZW1JRCwgbG9uZyBtYXgpOwoJCXN0YXRpYyB2b2lkCQkJCVNl
dEl0ZW1Cb3VuZHMJCQkJKEVtRGxnUmVmLCBFbURsZ0l0ZW1JRCwgY29uc3QgRW1SZWN0Jik7CgoJ
CXN0YXRpYyB2b2lkCQkJCVNldEl0ZW1UZXh0CQkJCQkoRW1EbGdSZWYsIEVtRGxnSXRlbUlELCBT
dHJDb2RlKTsKCQlzdGF0aWMgdm9pZAkJCQlTZXRJdGVtVGV4dAkJCQkJKEVtRGxnUmVmLCBFbURs
Z0l0ZW1JRCwgY29uc3QgY2hhciopOwoJCXN0YXRpYyB2b2lkCQkJCVNldEl0ZW1UZXh0CQkJCQko
RW1EbGdSZWYsIEVtRGxnSXRlbUlELCBzdHJpbmcpOwoKCQlzdGF0aWMgbG9uZwkJCQlHZXRJdGVt
TWluCQkJCQkoRW1EbGdSZWYsIEVtRGxnSXRlbUlEKTsKCQlzdGF0aWMgbG9uZwkJCQlHZXRJdGVt
VmFsdWUJCQkJKEVtRGxnUmVmLCBFbURsZ0l0ZW1JRCk7CgkJc3RhdGljIGxvbmcJCQkJR2V0SXRl
bU1heAkJCQkJKEVtRGxnUmVmLCBFbURsZ0l0ZW1JRCk7CgkJc3RhdGljIEVtUmVjdAkJCUdldEl0
ZW1Cb3VuZHMJCQkJKEVtRGxnUmVmLCBFbURsZ0l0ZW1JRCk7CgkJc3RhdGljIHN0cmluZwkJCUdl
dEl0ZW1UZXh0CQkJCQkoRW1EbGdSZWYsIEVtRGxnSXRlbUlEKTsKCgkJc3RhdGljIHZvaWQJCQkJ
RW5hYmxlSXRlbQkJCQkJKEVtRGxnUmVmLCBFbURsZ0l0ZW1JRCk7CgkJc3RhdGljIHZvaWQJCQkJ
RGlzYWJsZUl0ZW0JCQkJCShFbURsZ1JlZiwgRW1EbGdJdGVtSUQpOwoJCXN0YXRpYyB2b2lkCQkJ
CUVuYWJsZURpc2FibGVJdGVtCQkJKEVtRGxnUmVmLCBFbURsZ0l0ZW1JRCwgQm9vbCk7CgoJCXN0
YXRpYyB2b2lkCQkJCVNob3dJdGVtCQkJCQkoRW1EbGdSZWYsIEVtRGxnSXRlbUlEKTsKCQlzdGF0
aWMgdm9pZAkJCQlIaWRlSXRlbQkJCQkJKEVtRGxnUmVmLCBFbURsZ0l0ZW1JRCk7CgkJc3RhdGlj
IHZvaWQJCQkJU2hvd0hpZGVJdGVtCQkJCShFbURsZ1JlZiwgRW1EbGdJdGVtSUQsIEJvb2wpOwoK
CQlzdGF0aWMgdm9pZAkJCQlDbGVhck1lbnUJCQkJCShFbURsZ1JlZiwgRW1EbGdJdGVtSUQpOwoJ
CXN0YXRpYyB2b2lkCQkJCUFwcGVuZFRvTWVudQkJCQkoRW1EbGdSZWYsIEVtRGxnSXRlbUlELCBj
b25zdCBzdHJpbmcmKTsKCQlzdGF0aWMgdm9pZAkJCQlBcHBlbmRUb01lbnUJCQkJKEVtRGxnUmVm
LCBFbURsZ0l0ZW1JRCwgY29uc3QgU3RyaW5nTGlzdCYpOwoJCXN0YXRpYyB2b2lkCQkJCUVuYWJs
ZU1lbnVJdGVtCQkJCShFbURsZ1JlZiwgRW1EbGdJdGVtSUQsIGxvbmcpOwoJCXN0YXRpYyB2b2lk
CQkJCURpc2FibGVNZW51SXRlbQkJCQkoRW1EbGdSZWYsIEVtRGxnSXRlbUlELCBsb25nKTsKCgkJ
c3RhdGljIHZvaWQJCQkJQ2xlYXJMaXN0CQkJCQkoRW1EbGdSZWYsIEVtRGxnSXRlbUlEKTsKCQlz
dGF0aWMgdm9pZAkJCQlBcHBlbmRUb0xpc3QJCQkJKEVtRGxnUmVmLCBFbURsZ0l0ZW1JRCwgY29u
c3Qgc3RyaW5nJik7CgkJc3RhdGljIHZvaWQJCQkJQXBwZW5kVG9MaXN0CQkJCShFbURsZ1JlZiwg
RW1EbGdJdGVtSUQsIGNvbnN0IFN0cmluZ0xpc3QmKTsKCQlzdGF0aWMgdm9pZAkJCQlTZWxlY3RM
aXN0SXRlbQkJCQkoRW1EbGdSZWYsIEVtRGxnSXRlbUlELCBFbURsZ0xpc3RJbmRleCk7CgkJc3Rh
dGljIHZvaWQJCQkJU2VsZWN0TGlzdEl0ZW1zCQkJCShFbURsZ1JlZiwgRW1EbGdJdGVtSUQsIGNv
bnN0IEVtRGxnTGlzdEluZGV4TGlzdCYpOwoJCXN0YXRpYyB2b2lkCQkJCVVuc2VsZWN0TGlzdEl0
ZW0JCQkoRW1EbGdSZWYsIEVtRGxnSXRlbUlELCBFbURsZ0xpc3RJbmRleCk7CgkJc3RhdGljIHZv
aWQJCQkJVW5zZWxlY3RMaXN0SXRlbXMJCQkoRW1EbGdSZWYsIEVtRGxnSXRlbUlELCBjb25zdCBF
bURsZ0xpc3RJbmRleExpc3QmKTsKCQlzdGF0aWMgRW1EbGdMaXN0SW5kZXgJR2V0U2VsZWN0ZWRJ
dGVtCQkJCShFbURsZ1JlZiwgRW1EbGdJdGVtSUQpOwoJCXN0YXRpYyB2b2lkCQkJCUdldFNlbGVj
dGVkSXRlbXMJCQkoRW1EbGdSZWYsIEVtRGxnSXRlbUlELCBFbURsZ0xpc3RJbmRleExpc3QmKTsK
CgkJc3RhdGljIGludAkJCQlHZXRUZXh0SGVpZ2h0CQkJCShFbURsZ1JlZiwgRW1EbGdJdGVtSUQs
IGNvbnN0IHN0cmluZyYpOwoKCQlzdGF0aWMgQm9vbAkJCQlTdHJpbmdUb0xvbmcJCQkJKGNvbnN0
IGNoYXIqLCBsb25nKik7Cn07CgoKIyAyMSAiLi4vU3JjU2hhcmVkL0Vycm9ySGFuZGxpbmcuaCIg
MgoKCgoKY2xhc3MgU2Vzc2lvbkZpbGU7CnN0cnVjdCBTeXN0ZW1DYWxsQ29udGV4dDsKCgogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCnR5cGVkZWYgdmVjdG9yPHN0cmluZz4JUGFy
YW1MaXN0OwoKCiAKCmVudW0KewoJa1VubWFwcGVkQWRkcmVzcywKCWtOb3RJbkNvZGVTZWdtZW50
LAoJa09kZEFkZHJlc3MKfTsKCmNsYXNzIEVycm9ycwp7CglwdWJsaWM6CgkJc3RhdGljIHZvaWQJ
CQkJSW5pdGlhbGl6ZQkJCSh2b2lkKTsKCQlzdGF0aWMgdm9pZAkJCQlSZXNldAkJCQkodm9pZCk7
CgkJc3RhdGljIHZvaWQJCQkJU2F2ZQkJCQkoU2Vzc2lvbkZpbGUmKTsKCQlzdGF0aWMgdm9pZAkJ
CQlMb2FkCQkJCShTZXNzaW9uRmlsZSYpOwoJCXN0YXRpYyB2b2lkCQkJCURpc3Bvc2UJCQkJKHZv
aWQpOwoKCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJ
IAoKCQlzdGF0aWMgdm9pZAkJCQlSZXBvcnRJZkVycm9yCQkoU3RyQ29kZSBvcGVyYXRpb24sIEVy
ckNvZGUgZXJyb3IsIFN0ckNvZGUgcmVjb3ZlcnkgPSAwLCBCb29sIHRocm93QWZ0ZXIgPSB0cnVl
KTsKCQlzdGF0aWMgdm9pZAkJCQlSZXBvcnRJZlBhbG1FcnJvcgkoU3RyQ29kZSBvcGVyYXRpb24s
IEVyciBlcnIsIFN0ckNvZGUgcmVjb3ZlcnkgPSAwLCBCb29sIHRocm93QWZ0ZXIgPSB0cnVlKTsK
CQlzdGF0aWMgdm9pZAkJCQlSZXBvcnRJZk5VTEwJCShTdHJDb2RlIG9wZXJhdGlvbiwgdm9pZCog
cCwgU3RyQ29kZSByZWNvdmVyeSA9IDAsIEJvb2wgdGhyb3dBZnRlciA9IHRydWUpOwoKCgkJIAoJ
CSAKCQkgCgoJCQkgCgoJCXN0YXRpYyB2b2lkCQkJCVJlcG9ydEVyckJ1c0Vycm9yCQkJKGVtdXB0
ciBhZGRyZXNzLCBsb25nIHNpemUsIEJvb2wgZm9yUmVhZCk7CgkJc3RhdGljIHZvaWQJCQkJUmVw
b3J0RXJyQWRkcmVzc0Vycm9yCQkoZW11cHRyIGFkZHJlc3MsIGxvbmcgc2l6ZSwgQm9vbCBmb3JS
ZWFkKTsKCQlzdGF0aWMgdm9pZAkJCQlSZXBvcnRFcnJJbGxlZ2FsSW5zdHJ1Y3Rpb24JKHVpbnQx
NiBvcGNvZGUpOwoJCXN0YXRpYyB2b2lkCQkJCVJlcG9ydEVyckRpdmlkZUJ5WmVybwkJKHZvaWQp
OwoJCXN0YXRpYyB2b2lkCQkJCVJlcG9ydEVyckNIS0luc3RydWN0aW9uCQkodm9pZCk7CgkJc3Rh
dGljIHZvaWQJCQkJUmVwb3J0RXJyVFJBUFZJbnN0cnVjdGlvbgkodm9pZCk7CgkJc3RhdGljIHZv
aWQJCQkJUmVwb3J0RXJyUHJpdmlsZWdlVmlvbGF0aW9uCSh1aW50MTYgb3Bjb2RlKTsKCQlzdGF0
aWMgdm9pZAkJCQlSZXBvcnRFcnJUcmFjZQkJCQkodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJUmVw
b3J0RXJyQVRyYXAJCQkJKHVpbnQxNiBvcGNvZGUpOwoJCXN0YXRpYyB2b2lkCQkJCVJlcG9ydEVy
ckZUcmFwCQkJCSh1aW50MTYgb3Bjb2RlKTsKCQlzdGF0aWMgdm9pZAkJCQlSZXBvcnRFcnJUUkFQ
eAkJCQkoaW50IGV4Y2VwdGlvbk51bWJlcik7CgoJCQkgCgoJCXN0YXRpYyB2b2lkCQkJCVJlcG9y
dEVyclN0b3JhZ2VIZWFwCQkoZW11cHRyIGFkZHJlc3MsIGxvbmcgc2l6ZSwgQm9vbCBmb3JSZWFk
KTsKCQlzdGF0aWMgdm9pZAkJCQlSZXBvcnRFcnJOb0RyYXdXaW5kb3cJCShlbXVwdHIgYWRkcmVz
cywgbG9uZyBzaXplLCBCb29sIGZvclJlYWQpOwoJCXN0YXRpYyB2b2lkCQkJCVJlcG9ydEVyck5v
R2xvYmFscwkJCShlbXVwdHIgYWRkcmVzcywgbG9uZyBzaXplLCBCb29sIGZvclJlYWQpOwoJCXN0
YXRpYyB2b2lkCQkJCVJlcG9ydEVyclNBTkUJCQkJKHZvaWQpOwoJCXN0YXRpYyB2b2lkCQkJCVJl
cG9ydEVyclRSQVAwCQkJCSh2b2lkKTsKCQlzdGF0aWMgdm9pZAkJCQlSZXBvcnRFcnJUUkFQOAkJ
CQkodm9pZCk7CgoJCQkgCgoJCXN0YXRpYyB2b2lkCQkJCVJlcG9ydEVyclN0YWNrT3ZlcmZsb3cJ
CSh2b2lkKTsKCQlzdGF0aWMgdm9pZAkJCQlSZXBvcnRFcnJVbmltcGxlbWVudGVkVHJhcAkoY29u
c3QgU3lzdGVtQ2FsbENvbnRleHQmKTsKCQlzdGF0aWMgdm9pZAkJCQlSZXBvcnRFcnJJbnZhbGlk
UmVmTnVtCQkoY29uc3QgU3lzdGVtQ2FsbENvbnRleHQmKTsKCQlzdGF0aWMgdm9pZAkJCQlSZXBv
cnRFcnJDb3JydXB0ZWRIZWFwCQkoRXJyQ29kZSwgZW11cHRyKTsKCQlzdGF0aWMgdm9pZAkJCQlS
ZXBvcnRFcnJJbnZhbGlkUEMJCQkoZW11cHRyIGFkZHJlc3MsIGludCByZWFzb24pOwoKCQkJIAoK
CQlzdGF0aWMgdm9pZAkJCQlSZXBvcnRFcnJMb3dNZW1vcnkJCQkoZW11cHRyIGFkZHJlc3MsIGxv
bmcgc2l6ZSwgQm9vbCBmb3JSZWFkKTsKCQlzdGF0aWMgdm9pZAkJCQlSZXBvcnRFcnJTeXN0ZW1H
bG9iYWxzCQkoZW11cHRyIGFkZHJlc3MsIGxvbmcgc2l6ZSwgQm9vbCBmb3JSZWFkKTsKCQlzdGF0
aWMgdm9pZAkJCQlSZXBvcnRFcnJTY3JlZW4JCQkJKGVtdXB0ciBhZGRyZXNzLCBsb25nIHNpemUs
IEJvb2wgZm9yUmVhZCk7CgkJc3RhdGljIHZvaWQJCQkJUmVwb3J0RXJySGFyZHdhcmVSZWdpc3Rl
cnMJKGVtdXB0ciBhZGRyZXNzLCBsb25nIHNpemUsIEJvb2wgZm9yUmVhZCk7CgkJc3RhdGljIHZv
aWQJCQkJUmVwb3J0RXJyUk9NCQkJCShlbXVwdHIgYWRkcmVzcywgbG9uZyBzaXplLCBCb29sIGZv
clJlYWQpOwoJCXN0YXRpYyB2b2lkCQkJCVJlcG9ydEVyck1lbU1nclN0cnVjdHVyZXMJKGVtdXB0
ciBhZGRyZXNzLCBsb25nIHNpemUsIEJvb2wgZm9yUmVhZCk7CgkJc3RhdGljIHZvaWQJCQkJUmVw
b3J0RXJyTWVtTWdyTGVha3MJCShpbnQgbGVha3MpOwoJCXN0YXRpYyB2b2lkCQkJCVJlcG9ydEVy
ck1lbU1nclNlbWFwaG9yZQkodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJUmVwb3J0RXJyRnJlZUNo
dW5rCQkJKGVtdXB0ciBhZGRyZXNzLCBsb25nIHNpemUsIEJvb2wgZm9yUmVhZCk7CgkJc3RhdGlj
IHZvaWQJCQkJUmVwb3J0RXJyVW5sb2NrZWRDaHVuawkJKGVtdXB0ciBhZGRyZXNzLCBsb25nIHNp
emUsIEJvb2wgZm9yUmVhZCk7CgkJc3RhdGljIHZvaWQJCQkJUmVwb3J0RXJyTG93U3RhY2sJCQko
ZW11cHRyIHN0YWNrTG93LCBlbXVwdHIgc3RhY2tQb2ludGVyLCBlbXVwdHIgc3RhY2tIaWdoLCBl
bXVwdHIgYWRkcmVzcywgbG9uZyBzaXplLCBCb29sIGZvclJlYWQpOwoJCXN0YXRpYyB2b2lkCQkJ
CVJlcG9ydEVyclN0YWNrRnVsbAkJCSh2b2lkKTsKCQlzdGF0aWMgdm9pZAkJCQlSZXBvcnRFcnJT
aXplbGVzc09iamVjdAkJKHVpbnQxNiBpZCwgY29uc3QgRW1SZWN0Jik7CgkJc3RhdGljIHZvaWQJ
CQkJUmVwb3J0RXJyT2Zmc2NyZWVuT2JqZWN0CSh1aW50MTYgaWQsIGNvbnN0IEVtUmVjdCYpOwoJ
CXN0YXRpYyB2b2lkCQkJCVJlcG9ydEVyckZvcm1BY2Nlc3MJCQkoZW11cHRyIGZvcm1BZGRyZXNz
LCBlbXVwdHIgYWRkcmVzcywgbG9uZyBzaXplLCBCb29sIGZvclJlYWQpOwoJCXN0YXRpYyB2b2lk
CQkJCVJlcG9ydEVyckZvcm1PYmplY3RBY2Nlc3MJKGVtdXB0ciBvYmplY3RBZGRyZXNzLCBlbXVw
dHIgZm9ybUFkZHJlc3MsIGVtdXB0ciBhZGRyZXNzLCBsb25nIHNpemUsIEJvb2wgZm9yUmVhZCk7
CgkJc3RhdGljIHZvaWQJCQkJUmVwb3J0RXJyV2luZG93QWNjZXNzCQkoZW11cHRyIHdpbmRvd0Fk
ZHJlc3MsIGVtdXB0ciBhZGRyZXNzLCBsb25nIHNpemUsIEJvb2wgZm9yUmVhZCk7CgkJc3RhdGlj
IHZvaWQJCQkJUmVwb3J0RXJyQml0bWFwQWNjZXNzCQkoZW11cHRyIGJpdG1hcEFkZHJlc3MsIGVt
dXB0ciBhZGRyZXNzLCBsb25nIHNpemUsIEJvb2wgZm9yUmVhZCk7CgkJc3RhdGljIHZvaWQJCQkJ
UmVwb3J0RXJyUHJvc2NyaWJlZEZ1bmN0aW9uCShjb25zdCBTeXN0ZW1DYWxsQ29udGV4dCYpOwoJ
CXN0YXRpYyB2b2lkCQkJCVJlcG9ydEVyclN0ZXBTcHkJCQkoZW11cHRyIHdyaXRlQWRkcmVzcywg
aW50IHdyaXRlQnl0ZXMsIGVtdXB0ciBzc0FkZHJlc3MsIHVpbnQzMiBzc1ZhbHVlLCB1aW50MzIg
bmV3VmFsdWUpOwoJCXN0YXRpYyB2b2lkCQkJCVJlcG9ydEVycldhdGNocG9pbnQJCQkoZW11cHRy
IHdyaXRlQWRkcmVzcywgaW50IHdyaXRlQnl0ZXMsIGVtdXB0ciB3YXRjaEFkZHJlc3MsIHVpbnQz
MiB3YXRjaEJ5dGVzKTsKCgkJCSAKCgkJc3RhdGljIHZvaWQJCQkJUmVwb3J0RXJyU3lzRmF0YWxB
bGVydAkJKGNvbnN0IGNoYXIqIGFwcE1zZyk7CgkJc3RhdGljIHZvaWQJCQkJUmVwb3J0RXJyRGJn
TWVzc2FnZQkJCShjb25zdCBjaGFyKiBhcHBNc2cpOwoKCQkJIAoKCQlzdGF0aWMgdm9pZAkJCQlS
ZXBvcnRFcnJBY2Nlc3NDb21tb24JCShTdHJDb2RlLCBFeGNlcHRpb25OdW1iZXIsIGludCBmbGFn
cywgZW11cHRyIGFkZHJlc3MsIGxvbmcgc2l6ZSwgQm9vbCBmb3JSZWFkKTsKCQlzdGF0aWMgdm9p
ZAkJCQlSZXBvcnRFcnJPYmplY3RDb21tb24JCShTdHJDb2RlLCBFeGNlcHRpb25OdW1iZXIsIGlu
dCBmbGFncywgdWludDE2IGlkLCBjb25zdCBFbVJlY3QmKTsKCQlzdGF0aWMgdm9pZAkJCQlSZXBv
cnRFcnJPcGNvZGVDb21tb24JCShTdHJDb2RlLCBFeGNlcHRpb25OdW1iZXIsIGludCBmbGFncywg
dWludDE2IG9wY29kZSk7CgkJc3RhdGljIHZvaWQJCQkJUmVwb3J0RXJyU3RhY2tDb21tb24JCShT
dHJDb2RlLCBFeGNlcHRpb25OdW1iZXIsIGludCBmbGFncyk7CgkJc3RhdGljIHZvaWQJCQkJUmVw
b3J0RXJyQ29tbW9uCQkJCShTdHJDb2RlLCBFeGNlcHRpb25OdW1iZXIsIGludCBmbGFncyk7CgkJ
c3RhdGljIEVtRGxnSXRlbUlECQlSZXBvcnRFcnJDb21tUG9ydAkJCShzdHJpbmcpOwoJCXN0YXRp
YyBFbURsZ0l0ZW1JRAkJUmVwb3J0RXJyU29ja2V0cwkJCShzdHJpbmcpOwoKCQllbnVtCgkJewoJ
CQlrRmF0YWwgPSAweDAxLAoJCQlrRW50ZXJEZWJ1Z2dlckZpcnN0ID0gMHgwMgoJCX07CgoJCWVu
dW0gRUFjY2Vzc1R5cGUKCQl7CgkJCWtPS0FjY2VzcywKCgkJCWtMb3dNZW1BY2Nlc3MsCgkJCWtH
bG9iYWxWYXJBY2Nlc3MsCgkJCWtTY3JlZW5BY2Nlc3MsCgkJCWtNZW1NZ3JBY2Nlc3MsCgkJCWtM
b3dTdGFja0FjY2VzcywKCQkJa0ZyZWVDaHVua0FjY2VzcywKCQkJa1VubG9ja2VkQ2h1bmtBY2Nl
c3MsCgoJCQlrVW5rbm93bkFjY2VzcwoJCX07CgoKCQkgCgkJIAoJCSAKCgkJc3RhdGljIHZvaWQJ
CQkJU2V0UGFyYW1ldGVyCQkoY29uc3Qgc3RyaW5nJiBrZXksIGNvbnN0IHN0cmluZyYgdmFsdWUp
OwoJCXN0YXRpYyB2b2lkCQkJCVNldFBhcmFtZXRlcgkJKGNvbnN0IHN0cmluZyYga2V5LCBjb25z
dCBjaGFyKiB2YWx1ZSk7CgkJc3RhdGljIHZvaWQJCQkJU2V0UGFyYW1ldGVyCQkoY29uc3Qgc3Ry
aW5nJiBrZXksIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHZhbHVlKTsKCQlzdGF0aWMgdm9pZAkJCQlT
ZXRQYXJhbWV0ZXIJCShjb25zdCBzdHJpbmcmIGtleSwgbG9uZyk7CgkJc3RhdGljIHZvaWQJCQkJ
Q2xlYXJQYXJhbWV0ZXIJCShjb25zdCBzdHJpbmcmIGtleSk7CgkJc3RhdGljIHZvaWQJCQkJQ2xl
YXJBbGxQYXJhbWV0ZXJzCSh2b2lkKTsKCQlzdGF0aWMgQm9vbAkJCQlTZXRFcnJvclBhcmFtZXRl
cnMJKFN0ckNvZGUgb3BlcmF0aW9uLCBFcnJDb2RlIGVycm9yLCBTdHJDb2RlIHJlY292ZXJ5KTsK
CQlzdGF0aWMgdm9pZAkJCQlTZXRTdGFuZGFyZFBhcmFtZXRlcnMJKHZvaWQpOwoKCQkgCgkJIAoK
CQlzdGF0aWMgdm9pZAkJCQlIYW5kbGVEaWFsb2cJCShTdHJDb2RlIG1lc3NhZ2VJRCwKCQkJCQkJ
CQkJCQkJCSBFeGNlcHRpb25OdW1iZXIgZXhjTnVtLAoJCQkJCQkJCQkJCQkJIEVtQ29tbW9uRGlh
bG9nRmxhZ3MgZmxhZ3MsCgkJCQkJCQkJCQkJCQkgQm9vbCBlbnRlckRlYnVnZ2VyRmlyc3QpOwoK
CQkgCgkJIAoKCQlzdGF0aWMgRW1EbGdJdGVtSUQJCURvRGlhbG9nCQkJKFN0ckNvZGUgbWVzc2Fn
ZUlELCBFbUNvbW1vbkRpYWxvZ0ZsYWdzKTsKCQlzdGF0aWMgRW1EbGdJdGVtSUQJCURvRGlhbG9n
CQkJKGNvbnN0IGNoYXIqIG1zZywgRW1Db21tb25EaWFsb2dGbGFncywgU3RyQ29kZSBtZXNzYWdl
SUQgPSAtMSk7CgoKCQkgCgkJIAoKCQlzdGF0aWMgc3RyaW5nCQkJUmVwbGFjZVBhcmFtZXRlcnMJ
KFN0ckNvZGUgdGVtcGxhdGVJRCk7CgkJc3RhdGljIHN0cmluZwkJCVJlcGxhY2VQYXJhbWV0ZXJz
CShTdHJDb2RlIHRlbXBsYXRlSUQsIFBhcmFtTGlzdCYgcGFyYW1zKTsKCQlzdGF0aWMgc3RyaW5n
CQkJUmVwbGFjZVBhcmFtZXRlcnMJKGNvbnN0IHN0cmluZyYsIFBhcmFtTGlzdCYgcGFyYW1zKTsK
CgoJCSAKCgkJc3RhdGljIGludAkJCQlHZXRJREZvckVycm9yCQkoRXJyQ29kZSBlcnJvcik7CgkJ
c3RhdGljIGludAkJCQlHZXRJREZvclJlY292ZXJ5CShFcnJDb2RlIGVycm9yKTsKCgoJCSAKCgkJ
c3RhdGljIHZvaWQJCQkJR2V0QXBwTmFtZQkJCShzdHJpbmcmIGFwcE5hbWVVQywKCQkJCQkJCQkJ
CQkJCSBzdHJpbmcmIGFwcE5hbWVMQyk7CgkJc3RhdGljIHZvaWQJCQkJR2V0QXBwVmVyc2lvbgkJ
KHN0cmluZyYgYXBwVmVyc2lvbik7CgoJCXN0YXRpYyBCb29sCQkJCUxvb2tzTGlrZUE1QWNjZXNz
CShlbXVwdHIgYWRkcmVzcywgbG9uZyBzaXplLCBCb29sIGZvclJlYWQpOwoKCgkJIAoJCSAKCgkJ
c3RhdGljIHZvaWQJCQkJVGhyb3cJCQkJKEVyckNvZGUgZXJyb3IpOwoJCXN0YXRpYyB2b2lkCQkJ
CVRocm93SWZFcnJvcgkJKEVyckNvZGUgZXJyb3IpOwoJCXN0YXRpYyB2b2lkCQkJCVRocm93SWZQ
YWxtRXJyb3IJKEVyciBlcnJvcik7CgkJc3RhdGljIHZvaWQJCQkJVGhyb3dJZlN0ZENFcnJvcgko
aW50IGVycm9yKTsKCQlzdGF0aWMgdm9pZAkJCQlUaHJvd0lmTlVMTAkJCSh2b2lkKik7CgoJCSAK
CQkgCgkJIAoKCQlzdGF0aWMgdm9pZAkJCQlTY3JhbQkJCQkodm9pZCk7Cn07CgpjbGFzcyBFbURl
ZmVycmVkRXJyCnsKCXB1YmxpYzoKCQkJCQkJCQlFbURlZmVycmVkRXJyCQkJCQkodm9pZCk7CgkJ
dmlydHVhbAkJCQkJfkVtRGVmZXJyZWRFcnIJCQkJCSh2b2lkKTsKCgkJdmlydHVhbCB2b2lkCQkJ
RG8JCQkJCQkJCSh2b2lkKSA9IDA7Cn07CgpjbGFzcyBFbURlZmVycmVkRXJyQWNjZXNzQ29tbW9u
IDogcHVibGljIEVtRGVmZXJyZWRFcnIKewoJcHVibGljOgoJCQkJCQkJCUVtRGVmZXJyZWRFcnJB
Y2Nlc3NDb21tb24JCShlbXVwdHIgYWRkcmVzcywgbG9uZyBzaXplLCBCb29sIGZvclJlYWQpOwoJ
CXZpcnR1YWwJCQkJCX5FbURlZmVycmVkRXJyQWNjZXNzQ29tbW9uCQkodm9pZCk7CgoJcHJvdGVj
dGVkOgoJCWVtdXB0cgkJCQkJZkFkZHJlc3M7CgkJbG9uZwkJCQkJZlNpemU7CgkJQm9vbAkJCQkJ
ZkZvclJlYWQ7Cn07CgpjbGFzcyBFbURlZmVycmVkRXJyTG93TWVtb3J5IDogcHVibGljIEVtRGVm
ZXJyZWRFcnJBY2Nlc3NDb21tb24KewoJcHVibGljOgoJCQkJCQkJCUVtRGVmZXJyZWRFcnJMb3dN
ZW1vcnkJCQkoZW11cHRyIGFkZHJlc3MsIGxvbmcgc2l6ZSwgQm9vbCBmb3JSZWFkKTsKCQl2aXJ0
dWFsCQkJCQl+RW1EZWZlcnJlZEVyckxvd01lbW9yeQkJCSh2b2lkKTsKCgkJdmlydHVhbCB2b2lk
CQkJRG8JCQkJCQkJCSh2b2lkKTsKfTsKCmNsYXNzIEVtRGVmZXJyZWRFcnJTeXN0ZW1HbG9iYWxz
IDogcHVibGljIEVtRGVmZXJyZWRFcnJBY2Nlc3NDb21tb24KewoJcHVibGljOgoJCQkJCQkJCUVt
RGVmZXJyZWRFcnJTeXN0ZW1HbG9iYWxzCQkoZW11cHRyIGFkZHJlc3MsIGxvbmcgc2l6ZSwgQm9v
bCBmb3JSZWFkKTsKCQl2aXJ0dWFsCQkJCQl+RW1EZWZlcnJlZEVyclN5c3RlbUdsb2JhbHMJCSh2
b2lkKTsKCgkJdmlydHVhbCB2b2lkCQkJRG8JCQkJCQkJCSh2b2lkKTsKfTsKCmNsYXNzIEVtRGVm
ZXJyZWRFcnJTY3JlZW4gOiBwdWJsaWMgRW1EZWZlcnJlZEVyckFjY2Vzc0NvbW1vbgp7CglwdWJs
aWM6CgkJCQkJCQkJRW1EZWZlcnJlZEVyclNjcmVlbgkJCQkoZW11cHRyIGFkZHJlc3MsIGxvbmcg
c2l6ZSwgQm9vbCBmb3JSZWFkKTsKCQl2aXJ0dWFsCQkJCQl+RW1EZWZlcnJlZEVyclNjcmVlbgkJ
CSh2b2lkKTsKCgkJdmlydHVhbCB2b2lkCQkJRG8JCQkJCQkJCSh2b2lkKTsKfTsKCmNsYXNzIEVt
RGVmZXJyZWRFcnJIYXJkd2FyZVJlZ2lzdGVycyA6IHB1YmxpYyBFbURlZmVycmVkRXJyQWNjZXNz
Q29tbW9uCnsKCXB1YmxpYzoKCQkJCQkJCQlFbURlZmVycmVkRXJySGFyZHdhcmVSZWdpc3RlcnMJ
KGVtdXB0ciBhZGRyZXNzLCBsb25nIHNpemUsIEJvb2wgZm9yUmVhZCk7CgkJdmlydHVhbAkJCQkJ
fkVtRGVmZXJyZWRFcnJIYXJkd2FyZVJlZ2lzdGVycwkodm9pZCk7CgoJCXZpcnR1YWwgdm9pZAkJ
CURvCQkJCQkJCQkodm9pZCk7Cn07CgpjbGFzcyBFbURlZmVycmVkRXJyUk9NIDogcHVibGljIEVt
RGVmZXJyZWRFcnJBY2Nlc3NDb21tb24KewoJcHVibGljOgoJCQkJCQkJCUVtRGVmZXJyZWRFcnJS
T00JCQkJKGVtdXB0ciBhZGRyZXNzLCBsb25nIHNpemUsIEJvb2wgZm9yUmVhZCk7CgkJdmlydHVh
bAkJCQkJfkVtRGVmZXJyZWRFcnJST00JCQkJKHZvaWQpOwoKCQl2aXJ0dWFsIHZvaWQJCQlEbwkJ
CQkJCQkJKHZvaWQpOwp9OwoKY2xhc3MgRW1EZWZlcnJlZEVyck1lbU1nclN0cnVjdHVyZXMgOiBw
dWJsaWMgRW1EZWZlcnJlZEVyckFjY2Vzc0NvbW1vbgp7CglwdWJsaWM6CgkJCQkJCQkJRW1EZWZl
cnJlZEVyck1lbU1nclN0cnVjdHVyZXMJKGVtdXB0ciBhZGRyZXNzLCBsb25nIHNpemUsIEJvb2wg
Zm9yUmVhZCk7CgkJdmlydHVhbAkJCQkJfkVtRGVmZXJyZWRFcnJNZW1NZ3JTdHJ1Y3R1cmVzCSh2
b2lkKTsKCgkJdmlydHVhbCB2b2lkCQkJRG8JCQkJCQkJCSh2b2lkKTsKfTsKCmNsYXNzIEVtRGVm
ZXJyZWRFcnJNZW1NZ3JTZW1hcGhvcmUgOiBwdWJsaWMgRW1EZWZlcnJlZEVycgp7CglwdWJsaWM6
CgkJCQkJCQkJRW1EZWZlcnJlZEVyck1lbU1nclNlbWFwaG9yZQkodm9pZCk7CgkJdmlydHVhbAkJ
CQkJfkVtRGVmZXJyZWRFcnJNZW1NZ3JTZW1hcGhvcmUJKHZvaWQpOwoKCQl2aXJ0dWFsIHZvaWQJ
CQlEbwkJCQkJCQkJKHZvaWQpOwp9OwoKY2xhc3MgRW1EZWZlcnJlZEVyckZyZWVDaHVuayA6IHB1
YmxpYyBFbURlZmVycmVkRXJyQWNjZXNzQ29tbW9uCnsKCXB1YmxpYzoKCQkJCQkJCQlFbURlZmVy
cmVkRXJyRnJlZUNodW5rCQkJKGVtdXB0ciBhZGRyZXNzLCBsb25nIHNpemUsIEJvb2wgZm9yUmVh
ZCk7CgkJdmlydHVhbAkJCQkJfkVtRGVmZXJyZWRFcnJGcmVlQ2h1bmsJCQkodm9pZCk7CgoJCXZp
cnR1YWwgdm9pZAkJCURvCQkJCQkJCQkodm9pZCk7Cn07CgpjbGFzcyBFbURlZmVycmVkRXJyVW5s
b2NrZWRDaHVuayA6IHB1YmxpYyBFbURlZmVycmVkRXJyQWNjZXNzQ29tbW9uCnsKCXB1YmxpYzoK
CQkJCQkJCQlFbURlZmVycmVkRXJyVW5sb2NrZWRDaHVuawkJKGVtdXB0ciBhZGRyZXNzLCBsb25n
IHNpemUsIEJvb2wgZm9yUmVhZCk7CgkJdmlydHVhbAkJCQkJfkVtRGVmZXJyZWRFcnJVbmxvY2tl
ZENodW5rCQkodm9pZCk7CgoJCXZpcnR1YWwgdm9pZAkJCURvCQkJCQkJCQkodm9pZCk7Cn07Cgpj
bGFzcyBFbURlZmVycmVkRXJyTG93U3RhY2sgOiBwdWJsaWMgRW1EZWZlcnJlZEVyckFjY2Vzc0Nv
bW1vbgp7CglwdWJsaWM6CgkJCQkJCQkJRW1EZWZlcnJlZEVyckxvd1N0YWNrCQkJKGVtdXB0ciBz
dGFja0xvdywgZW11cHRyIHN0YWNrUG9pbnRlciwgZW11cHRyIHN0YWNrSGlnaCwgZW11cHRyIGFk
ZHJlc3MsIGxvbmcgc2l6ZSwgQm9vbCBmb3JSZWFkKTsKCQl2aXJ0dWFsCQkJCQl+RW1EZWZlcnJl
ZEVyckxvd1N0YWNrCQkJKHZvaWQpOwoKCQl2aXJ0dWFsIHZvaWQJCQlEbwkJCQkJCQkJKHZvaWQp
OwoKCXByaXZhdGU6CgkJZW11cHRyCQkJCQlmU3RhY2tMb3c7CgkJZW11cHRyCQkJCQlmU3RhY2tQ
b2ludGVyOwoJCWVtdXB0cgkJCQkJZlN0YWNrSGlnaDsKfTsKCmNsYXNzIEVtRGVmZXJyZWRFcnJT
dGFja0Z1bGwgOiBwdWJsaWMgRW1EZWZlcnJlZEVycgp7CglwdWJsaWM6CgkJCQkJCQkJRW1EZWZl
cnJlZEVyclN0YWNrRnVsbAkJCSh2b2lkKTsKCQl2aXJ0dWFsCQkJCQl+RW1EZWZlcnJlZEVyclN0
YWNrRnVsbAkJCSh2b2lkKTsKCgkJdmlydHVhbCB2b2lkCQkJRG8JCQkJCQkJCSh2b2lkKTsKfTsK
CmNsYXNzIEVtRGVmZXJyZWRFcnJPYmplY3RDb21tb24gOiBwdWJsaWMgRW1EZWZlcnJlZEVycgp7
CglwdWJsaWM6CgkJCQkJCQkJRW1EZWZlcnJlZEVyck9iamVjdENvbW1vbgkJKHVpbnQxNiBpZCwg
Y29uc3QgRW1SZWN0Jik7CgkJdmlydHVhbAkJCQkJfkVtRGVmZXJyZWRFcnJPYmplY3RDb21tb24J
CSh2b2lkKTsKCglwcm90ZWN0ZWQ6CgkJdWludDE2CQkJCQlmSUQ7CgkJRW1SZWN0CQkJCQlmUmVj
dDsKfTsKCmNsYXNzIEVtRGVmZXJyZWRFcnJTaXplbGVzc09iamVjdCA6IHB1YmxpYyBFbURlZmVy
cmVkRXJyT2JqZWN0Q29tbW9uCnsKCXB1YmxpYzoKCQkJCQkJCQlFbURlZmVycmVkRXJyU2l6ZWxl
c3NPYmplY3QJCSh1aW50MTYgaWQsIGNvbnN0IEVtUmVjdCYpOwoJCXZpcnR1YWwJCQkJCX5FbURl
ZmVycmVkRXJyU2l6ZWxlc3NPYmplY3QJKHZvaWQpOwoKCQl2aXJ0dWFsIHZvaWQJCQlEbwkJCQkJ
CQkJKHZvaWQpOwp9OwoKY2xhc3MgRW1EZWZlcnJlZEVyck9mZnNjcmVlbk9iamVjdCA6IHB1Ymxp
YyBFbURlZmVycmVkRXJyT2JqZWN0Q29tbW9uCnsKCXB1YmxpYzoKCQkJCQkJCQlFbURlZmVycmVk
RXJyT2Zmc2NyZWVuT2JqZWN0CSh1aW50MTYgaWQsIGNvbnN0IEVtUmVjdCYpOwoJCXZpcnR1YWwJ
CQkJCX5FbURlZmVycmVkRXJyT2Zmc2NyZWVuT2JqZWN0CSh2b2lkKTsKCgkJdmlydHVhbCB2b2lk
CQkJRG8JCQkJCQkJCSh2b2lkKTsKfTsKCmNsYXNzIEVtRGVmZXJyZWRFcnJGb3JtQWNjZXNzIDog
cHVibGljIEVtRGVmZXJyZWRFcnJBY2Nlc3NDb21tb24KewoJcHVibGljOgoJCQkJCQkJCUVtRGVm
ZXJyZWRFcnJGb3JtQWNjZXNzCQkJKGVtdXB0ciBmb3JtQWRkcmVzcywKCQkJCQkJCQkJCQkJCQkJ
CSBlbXVwdHIgYWRkcmVzcywKCQkJCQkJCQkJCQkJCQkJCSBsb25nIHNpemUsCgkJCQkJCQkJCQkJ
CQkJCQkgQm9vbCBmb3JSZWFkKTsKCQl2aXJ0dWFsCQkJCQl+RW1EZWZlcnJlZEVyckZvcm1BY2Nl
c3MJCSh2b2lkKTsKCgkJdmlydHVhbCB2b2lkCQkJRG8JCQkJCQkJCSh2b2lkKTsKCglwcm90ZWN0
ZWQ6CgkJZW11cHRyCQkJCQlmRm9ybUFkZHJlc3M7Cn07CgpjbGFzcyBFbURlZmVycmVkRXJyRm9y
bU9iamVjdEFjY2VzcyA6IHB1YmxpYyBFbURlZmVycmVkRXJyQWNjZXNzQ29tbW9uCnsKCXB1Ymxp
YzoKCQkJCQkJCQlFbURlZmVycmVkRXJyRm9ybU9iamVjdEFjY2VzcwkoZW11cHRyIG9iamVjdEFk
ZHJlc3MsCgkJCQkJCQkJCQkJCQkJCQkgZW11cHRyIGZvcm1BZGRyZXNzLAoJCQkJCQkJCQkJCQkJ
CQkJIGVtdXB0ciBhZGRyZXNzLAoJCQkJCQkJCQkJCQkJCQkJIGxvbmcgc2l6ZSwKCQkJCQkJCQkJ
CQkJCQkJCSBCb29sIGZvclJlYWQpOwoJCXZpcnR1YWwJCQkJCX5FbURlZmVycmVkRXJyRm9ybU9i
amVjdEFjY2Vzcwkodm9pZCk7CgoJCXZpcnR1YWwgdm9pZAkJCURvCQkJCQkJCQkodm9pZCk7CgoJ
cHJvdGVjdGVkOgoJCWVtdXB0cgkJCQkJZk9iamVjdEFkZHJlc3M7CgkJZW11cHRyCQkJCQlmRm9y
bUFkZHJlc3M7Cn07CgpjbGFzcyBFbURlZmVycmVkRXJyV2luZG93QWNjZXNzIDogcHVibGljIEVt
RGVmZXJyZWRFcnJBY2Nlc3NDb21tb24KewoJcHVibGljOgoJCQkJCQkJCUVtRGVmZXJyZWRFcnJX
aW5kb3dBY2Nlc3MJCShlbXVwdHIgd2luZG93QWRkcmVzcywKCQkJCQkJCQkJCQkJCQkJCSBlbXVw
dHIgYWRkcmVzcywKCQkJCQkJCQkJCQkJCQkJCSBsb25nIHNpemUsCgkJCQkJCQkJCQkJCQkJCQkg
Qm9vbCBmb3JSZWFkKTsKCQl2aXJ0dWFsCQkJCQl+RW1EZWZlcnJlZEVycldpbmRvd0FjY2VzcwkJ
KHZvaWQpOwoKCQl2aXJ0dWFsIHZvaWQJCQlEbwkJCQkJCQkJKHZvaWQpOwoKCQllbXVwdHIJCQkJ
CWZXaW5kb3dBZGRyZXNzOwp9OwoKY2xhc3MgRW1EZWZlcnJlZEVyckJpdG1hcEFjY2VzcyA6IHB1
YmxpYyBFbURlZmVycmVkRXJyQWNjZXNzQ29tbW9uCnsKCXB1YmxpYzoKCQkJCQkJCQlFbURlZmVy
cmVkRXJyQml0bWFwQWNjZXNzCQkoZW11cHRyIGJpdG1hcEFkZHJlc3MsCgkJCQkJCQkJCQkJCQkJ
CQkgZW11cHRyIGFkZHJlc3MsCgkJCQkJCQkJCQkJCQkJCQkgbG9uZyBzaXplLAoJCQkJCQkJCQkJ
CQkJCQkJIEJvb2wgZm9yUmVhZCk7CgkJdmlydHVhbAkJCQkJfkVtRGVmZXJyZWRFcnJCaXRtYXBB
Y2Nlc3MJCSh2b2lkKTsKCgkJdmlydHVhbCB2b2lkCQkJRG8JCQkJCQkJCSh2b2lkKTsKCgkJZW11
cHRyCQkJCQlmQml0bWFwQWRkcmVzczsKfTsKCmNsYXNzIEVtRGVmZXJyZWRFcnJQcm9zY3JpYmVk
RnVuY3Rpb24gOiBwdWJsaWMgRW1EZWZlcnJlZEVycgp7CglwdWJsaWM6CgkJCQkJCQkJRW1EZWZl
cnJlZEVyclByb3NjcmliZWRGdW5jdGlvbgkoY29uc3QgU3lzdGVtQ2FsbENvbnRleHQmKTsKCQl2
aXJ0dWFsCQkJCQl+RW1EZWZlcnJlZEVyclByb3NjcmliZWRGdW5jdGlvbih2b2lkKTsKCgkJdmly
dHVhbCB2b2lkCQkJRG8JCQkJCQkJCSh2b2lkKTsKCgkJU3lzdGVtQ2FsbENvbnRleHQJCWZDb250
ZXh0Owp9OwoKY2xhc3MgRW1EZWZlcnJlZEVyclN0ZXBTcHkgOiBwdWJsaWMgRW1EZWZlcnJlZEVy
cgp7CglwdWJsaWM6CgkJCQkJCQkJRW1EZWZlcnJlZEVyclN0ZXBTcHkJCQkoZW11cHRyIHdyaXRl
QWRkcmVzcywKCQkJCQkJCQkJCQkJCQkJCSBpbnQgd3JpdGVCeXRlcywKCQkJCQkJCQkJCQkJCQkJ
CSBlbXVwdHIgc3NBZGRyZXNzLAoJCQkJCQkJCQkJCQkJCQkJIHVpbnQzMiBzc1ZhbHVlLAoJCQkJ
CQkJCQkJCQkJCQkJIHVpbnQzMiBuZXdWYWx1ZSk7CgkJdmlydHVhbAkJCQkJfkVtRGVmZXJyZWRF
cnJTdGVwU3B5CQkJKHZvaWQpOwoKCQl2aXJ0dWFsIHZvaWQJCQlEbwkJCQkJCQkJKHZvaWQpOwoK
CXByb3RlY3RlZDoKCQllbXVwdHIJCQkJCWZXcml0ZUFkZHJlc3M7CgkJaW50CQkJCQkJZldyaXRl
Qnl0ZXM7CgkJZW11cHRyCQkJCQlmU1NBZGRyZXNzOwoJCXVpbnQzMgkJCQkJZlNTVmFsdWU7CgkJ
dWludDMyCQkJCQlmTmV3VmFsdWU7Cn07CgpjbGFzcyBFbURlZmVycmVkRXJyV2F0Y2hwb2ludCA6
IHB1YmxpYyBFbURlZmVycmVkRXJyCnsKCXB1YmxpYzoKCQkJCQkJCQlFbURlZmVycmVkRXJyV2F0
Y2hwb2ludAkJCShlbXVwdHIgd3JpdGVBZGRyZXNzLAoJCQkJCQkJCQkJCQkJCQkJIGludCB3cml0
ZUJ5dGVzLAoJCQkJCQkJCQkJCQkJCQkJIGVtdXB0ciB3YXRjaEFkZHJlc3MsCgkJCQkJCQkJCQkJ
CQkJCQkgdWludDMyIHdhdGNoQnl0ZXMpOwoJCXZpcnR1YWwJCQkJCX5FbURlZmVycmVkRXJyV2F0
Y2hwb2ludAkJKHZvaWQpOwoKCQl2aXJ0dWFsIHZvaWQJCQlEbwkJCQkJCQkJKHZvaWQpOwoKCXBy
b3RlY3RlZDoKCQllbXVwdHIJCQkJCWZXcml0ZUFkZHJlc3M7CgkJaW50CQkJCQkJZldyaXRlQnl0
ZXM7CgkJZW11cHRyCQkJCQlmV2F0Y2hBZGRyZXNzOwoJCXVpbnQzMgkJCQkJZldhdGNoQnl0ZXM7
Cn07CgoKCiMgMTkgIi4uL1NyY1NoYXJlZC9NZXRhTWVtb3J5LmgiIDIKCgoKY2xhc3MgTWV0YU1l
bW9yeQp7CglwdWJsaWM6CgkJc3RhdGljIHZvaWQJCQkJSW5pdGlhbGl6ZQkJCQkodm9pZCk7CgkJ
c3RhdGljIHZvaWQJCQkJUmVzZXQJCQkJCSh2b2lkKTsKCQlzdGF0aWMgdm9pZAkJCQlTYXZlCQkJ
CQkoU2Vzc2lvbkZpbGUmKTsKCQlzdGF0aWMgdm9pZAkJCQlMb2FkCQkJCQkoU2Vzc2lvbkZpbGUm
KTsKCQlzdGF0aWMgdm9pZAkJCQlEaXNwb3NlCQkJCQkodm9pZCk7CgoJCSAKCgkJc3RhdGljIHZv
aWQJCQkJTWFya1RvdGFsQWNjZXNzCQkJKGVtdXB0ciBiZWdpbiwgZW11cHRyIGVuZCk7CgoJCXN0
YXRpYyB2b2lkCQkJCVNldEFjY2VzcwkJCQkoZW11cHRyIGJlZ2luLCBlbXVwdHIgZW5kLCB1aW50
OCBiaXRzKTsKCgkJc3RhdGljIHZvaWQJCQkJTWFya0xvd01lbW9yeQkJCShlbXVwdHIgYmVnaW4s
IGVtdXB0ciBlbmQpOwoJCXN0YXRpYyB2b2lkCQkJCU1hcmtTeXN0ZW1HbG9iYWxzCQkoZW11cHRy
IGJlZ2luLCBlbXVwdHIgZW5kKTsKCQlzdGF0aWMgdm9pZAkJCQlNYXJrSGVhcEhlYWRlcgkJCShl
bXVwdHIgYmVnaW4sIGVtdXB0ciBlbmQpOwoJCXN0YXRpYyB2b2lkCQkJCU1hcmtNUFQJCQkJCShl
bXVwdHIgYmVnaW4sIGVtdXB0ciBlbmQpOwoJCXN0YXRpYyB2b2lkCQkJCU1hcmtDaHVua0hlYWRl
cgkJCShlbXVwdHIgYmVnaW4sIGVtdXB0ciBlbmQpOwoJCXN0YXRpYyB2b2lkCQkJCU1hcmtDaHVu
a1RyYWlsZXIJCShlbXVwdHIgYmVnaW4sIGVtdXB0ciBlbmQpOwoJCXN0YXRpYyB2b2lkCQkJCU1h
cmtMb3dTdGFjawkJCShlbXVwdHIgYmVnaW4sIGVtdXB0ciBlbmQpOwoJCXN0YXRpYyB2b2lkCQkJ
CU1hcmtVbmxvY2tlZENodW5rCQkoZW11cHRyIGJlZ2luLCBlbXVwdHIgZW5kKTsKCQlzdGF0aWMg
dm9pZAkJCQlNYXJrRnJlZUNodW5rCQkJKGVtdXB0ciBiZWdpbiwgZW11cHRyIGVuZCk7CgoJCXN0
YXRpYyB2b2lkCQkJCU1hcmtTY3JlZW4JCQkJKGVtdXB0ciBiZWdpbiwgZW11cHRyIGVuZCk7CgkJ
c3RhdGljIHZvaWQJCQkJVW5tYXJrU2NyZWVuCQkJKGVtdXB0ciBiZWdpbiwgZW11cHRyIGVuZCk7
CgoJCXN0YXRpYyB2b2lkCQkJCU1hcmtVSU9iamVjdAkJCShlbXVwdHIgYmVnaW4sIGVtdXB0ciBl
bmQpOwoJCXN0YXRpYyB2b2lkCQkJCVVubWFya1VJT2JqZWN0CQkJKGVtdXB0ciBiZWdpbiwgZW11
cHRyIGVuZCk7CgoJCXN0YXRpYyB2b2lkCQkJCU1hcmtVSU9iamVjdHMJCQkodm9pZCk7CgkJc3Rh
dGljIHZvaWQJCQkJVW5tYXJrVUlPYmplY3RzCQkJKHZvaWQpOwoKCQlzdGF0aWMgdm9pZAkJCQlN
YXJrSW5zdHJ1Y3Rpb25CcmVhawkoZW11cHRyIG9wY29kZUxvY2F0aW9uKTsKCQlzdGF0aWMgdm9p
ZAkJCQlVbm1hcmtJbnN0cnVjdGlvbkJyZWFrCShlbXVwdHIgb3Bjb2RlTG9jYXRpb24pOwoKCQlz
dGF0aWMgdm9pZAkJCQlNYXJrRGF0YUJyZWFrCQkJKGVtdXB0ciBiZWdpbiwgZW11cHRyIGVuZCk7
CgkJc3RhdGljIHZvaWQJCQkJVW5tYXJrRGF0YUJyZWFrCQkJKGVtdXB0ciBiZWdpbiwgZW11cHRy
IGVuZCk7CgoJCSAKCgoKCgoKCgoKCgkJIAoKCQlzdGF0aWMgdm9pZAkJCQlSZXN5bmMJCQkJCShj
b25zdCBFbVBhbG1DaHVua0xpc3QmKTsKCgkJIAoJCSAKCQkgCgkJIAoKCQlzdGF0aWMgQm9vbAkJ
CQlDYW5BcHBHZXRMb25nCQkJKHVpbnQ4Kik7CSAKCQlzdGF0aWMgQm9vbAkJCQlDYW5BcHBHZXRX
b3JkCQkJKHVpbnQ4Kik7CSAKCQlzdGF0aWMgQm9vbAkJCQlDYW5BcHBHZXRCeXRlCQkJKHVpbnQ4
Kik7CSAKCgkJc3RhdGljIEJvb2wJCQkJQ2FuQXBwU2V0TG9uZwkJCSh1aW50OCopOwkgCgkJc3Rh
dGljIEJvb2wJCQkJQ2FuQXBwU2V0V29yZAkJCSh1aW50OCopOwkgCgkJc3RhdGljIEJvb2wJCQkJ
Q2FuQXBwU2V0Qnl0ZQkJCSh1aW50OCopOwkgCgoJCSAKCQkgCgkJIAoKCQlzdGF0aWMgQm9vbAkJ
CQlDYW5TeXN0ZW1HZXRMb25nCQkodWludDgqKTsJIAoJCXN0YXRpYyBCb29sCQkJCUNhblN5c3Rl
bUdldFdvcmQJCSh1aW50OCopOwkgCgkJc3RhdGljIEJvb2wJCQkJQ2FuU3lzdGVtR2V0Qnl0ZQkJ
KHVpbnQ4Kik7CSAKCgkJc3RhdGljIEJvb2wJCQkJQ2FuU3lzdGVtU2V0TG9uZwkJKHVpbnQ4Kik7
CSAKCQlzdGF0aWMgQm9vbAkJCQlDYW5TeXN0ZW1TZXRXb3JkCQkodWludDgqKTsJIAoJCXN0YXRp
YyBCb29sCQkJCUNhblN5c3RlbVNldEJ5dGUJCSh1aW50OCopOwkgCgoJCSAKCQkgCgoJCXN0YXRp
YyBCb29sCQkJCUNhbk1lbU1nckdldExvbmcJCSh1aW50OCopOwkgCgkJc3RhdGljIEJvb2wJCQkJ
Q2FuTWVtTWdyR2V0V29yZAkJKHVpbnQ4Kik7CSAKCQlzdGF0aWMgQm9vbAkJCQlDYW5NZW1NZ3JH
ZXRCeXRlCQkodWludDgqKTsJIAoKCQlzdGF0aWMgQm9vbAkJCQlDYW5NZW1NZ3JTZXRMb25nCQko
dWludDgqKTsJIAoJCXN0YXRpYyBCb29sCQkJCUNhbk1lbU1nclNldFdvcmQJCSh1aW50OCopOwkg
CgkJc3RhdGljIEJvb2wJCQkJQ2FuTWVtTWdyU2V0Qnl0ZQkJKHVpbnQ4Kik7CSAKCgkJc3RhdGlj
IEVycm9yczo6RUFjY2Vzc1R5cGUKCQkJCQkJCQlHZXRXaGF0SGFwcGVuZWQJCQkoZW11cHRyIGFk
ZHJlc3MsIGxvbmcgc2l6ZSwgQm9vbCBmb3JSZWFkKTsKCQlzdGF0aWMgRXJyb3JzOjpFQWNjZXNz
VHlwZQoJCQkJCQkJCUFsbG93Rm9yQnVncwkJCShlbXVwdHIgYWRkcmVzcywgbG9uZyBzaXplLCBC
b29sIGZvclJlYWQsIEVycm9yczo6RUFjY2Vzc1R5cGUpOwoJCXN0YXRpYyB2b2lkCQkJCUNoZWNr
VUlPYmplY3RBY2Nlc3MJCShlbXVwdHIgYWRkcmVzcywgc2l6ZV90IHNpemUsIEJvb2wgZm9yUmVh
ZCwKCQkJCQkJCQkJCQkJCQkgQm9vbCYgaXNJblVJT2JqZWN0LCBCb29sJiBidXRJdHNPSyk7CgkJ
c3RhdGljIEJvb2wJCQkJSW5SQU1PU0NvbXBvbmVudAkJKGVtdXB0ciBwYyk7CgkJc3RhdGljIHZv
aWQJCQkJQ2h1bmtVbmxvY2tlZAkJCShlbXVwdHIgYWRkcik7CgoJCXN0YXRpYyB2b2lkCQkJCVJl
Z2lzdGVyQml0bWFwSGFuZGxlCShNZW1IYW5kbGUpOwoJCXN0YXRpYyB2b2lkCQkJCVJlZ2lzdGVy
Qml0bWFwUG9pbnRlcgkoTWVtUHRyKTsKCQlzdGF0aWMgQm9vbAkJCQlJc0JpdG1hcEhhbmRsZQkJ
CShNZW1IYW5kbGUpOwoJCXN0YXRpYyBCb29sCQkJCUlzQml0bWFwUG9pbnRlcgkJCShNZW1QdHIp
OwoJCXN0YXRpYyB2b2lkCQkJCVVucmVnaXN0ZXJCaXRtYXBIYW5kbGUJKE1lbUhhbmRsZSk7CgkJ
c3RhdGljIHZvaWQJCQkJVW5yZWdpc3RlckJpdG1hcFBvaW50ZXIJKE1lbVB0cik7CgoJCSAKCgkJ
c3RhdGljIGVtdXB0cgkJCUdldExvd01lbW9yeUJlZ2luCQkodm9pZCk7CgkJc3RhdGljIGVtdXB0
cgkJCUdldExvd01lbW9yeUVuZAkJCSh2b2lkKTsKCQlzdGF0aWMgZW11cHRyCQkJR2V0U3lzR2xv
YmFsc0JlZ2luCQkodm9pZCk7CgkJc3RhdGljIGVtdXB0cgkJCUdldFN5c0dsb2JhbHNFbmQJCSh2
b2lkKTsKCQlzdGF0aWMgZW11cHRyCQkJR2V0SGVhcEhkckJlZ2luCQkJKFVJbnQxNiBoZWFwSUQp
OwoJCXN0YXRpYyBlbXVwdHIJCQlHZXRIZWFwSGRyRW5kCQkJKFVJbnQxNiBoZWFwSUQpOwoKCQkg
CgkJIAoKCQlzdGF0aWMgQm9vbAkJCQlJc0xvd01lbW9yeQkJCQkoZW11cHRyIHRlc3RBZGRyZXNz
LCB1aW50MzIgc2l6ZSk7CgkJc3RhdGljIEJvb2wJCQkJSXNTeXN0ZW1HbG9iYWwJCQkoZW11cHRy
IHRlc3RBZGRyZXNzLCB1aW50MzIgc2l6ZSk7CgkJc3RhdGljIEJvb2wJCQkJSXNTY3JlZW5CdWZm
ZXIJCQkoZW11cHRyIHRlc3RBZGRyZXNzLCB1aW50MzIgc2l6ZSk7CgkJc3RhdGljIEJvb2wJCQkJ
SXNNZW1NZ3JEYXRhCQkJKGVtdXB0ciB0ZXN0QWRkcmVzcywgdWludDMyIHNpemUpOwoJCXN0YXRp
YyBCb29sCQkJCUlzVW5sb2NrZWRDaHVuawkJCShlbXVwdHIgdGVzdEFkZHJlc3MsIHVpbnQzMiBz
aXplKTsKCQlzdGF0aWMgQm9vbAkJCQlJc0ZyZWVDaHVuawkJCQkoZW11cHRyIHRlc3RBZGRyZXNz
LCB1aW50MzIgc2l6ZSk7CgkJc3RhdGljIEJvb2wJCQkJSXNVbmluaXRpYWxpemVkCQkJKGVtdXB0
ciB0ZXN0QWRkcmVzcywgdWludDMyIHNpemUpOwoJCXN0YXRpYyBCb29sCQkJCUlzU3RhY2sJCQkJ
CShlbXVwdHIgdGVzdEFkZHJlc3MsIHVpbnQzMiBzaXplKTsKCQlzdGF0aWMgQm9vbAkJCQlJc0xv
d1N0YWNrCQkJCShlbXVwdHIgdGVzdEFkZHJlc3MsIHVpbnQzMiBzaXplKTsKCQlzdGF0aWMgQm9v
bAkJCQlJc0FsbG9jYXRlZENodW5rCQkoZW11cHRyIHRlc3RBZGRyZXNzLCB1aW50MzIgc2l6ZSk7
CgoJCXN0YXRpYyBCb29sCQkJCUlzU2NyZWVuQnVmZmVyOAkJCSh1aW50OCogbWV0YUFkZHJlc3Mp
OwkgCgkJc3RhdGljIEJvb2wJCQkJSXNTY3JlZW5CdWZmZXIxNgkJKHVpbnQ4KiBtZXRhQWRkcmVz
cyk7CSAKCQlzdGF0aWMgQm9vbAkJCQlJc1NjcmVlbkJ1ZmZlcjMyCQkodWludDgqIG1ldGFBZGRy
ZXNzKTsJIAoJCXN0YXRpYyBCb29sCQkJCUlzU2NyZWVuQnVmZmVyCQkJKHVpbnQ4KiBtZXRhQWRk
cmVzcywgdWludDMyIHNpemUpOwoKCQlzdGF0aWMgQm9vbAkJCQlJc0NQVUJyZWFrCQkJCShlbXVw
dHIgb3Bjb2RlTG9jYXRpb24pOwoJCXN0YXRpYyBCb29sCQkJCUlzQ1BVQnJlYWsJCQkJKHVpbnQ4
KiBtZXRhTG9jYXRpb24pOwoKCXByaXZhdGU6CgkJc3RydWN0IENodW5rQ2hlY2sKCQl7CgkJCWVt
dXB0cgl0ZXN0QWRkcmVzczsKCQkJdWludDMyCXNpemU7CgkJCUJvb2wJcmVzdWx0OwoJCX07CgoJ
CXN0cnVjdCBXaGF0SGFwcGVuZWREYXRhCgkJewoJCQlFcnJvcnM6OkVBY2Nlc3NUeXBlCXJlc3Vs
dDsKCQkJZW11cHRyCQkJCWFkZHJlc3M7CgkJCXVpbnQzMgkJCQlzaXplOwoJCQlCb29sCQkJCWZv
clJlYWQ7CgkJfTsKCgkJc3RhdGljIHZvaWQJCQkJTWFya1JhbmdlCQkJCShlbXVwdHIgc3RhcnQs
IGVtdXB0ciBlbmQsIHVpbnQ4IHYpOwoJCXN0YXRpYyB2b2lkCQkJCVVubWFya1JhbmdlCQkJCShl
bXVwdHIgc3RhcnQsIGVtdXB0ciBlbmQsIHVpbnQ4IHYpOwoJCXN0YXRpYyB2b2lkCQkJCU1hcmtV
bm1hcmtSYW5nZQkJCShlbXVwdHIgc3RhcnQsIGVtdXB0ciBlbmQsCgkJCQkJCQkJCQkJCQkJIHVp
bnQ4IGFuZFZhbHVlLCB1aW50OCBvclZhbHVlKTsKCgkJc3RhdGljIHZvaWQJCQkJU3luY09uZUNo
dW5rCQkJKGNvbnN0IEVtUGFsbUNodW5rJiBjaHVuayk7CgoJCXN0YXRpYyB2b2lkCQkJCUdXSF9F
eGFtaW5lSGVhcAkJCShjb25zdCBFbVBhbG1IZWFwJiBoZWFwLAoJCQkJCQkJCQkJCQkJCSBXaGF0
SGFwcGVuZWREYXRhJiBpbmZvKTsKCQlzdGF0aWMgdm9pZAkJCQlHV0hfRXhhbWluZUNodW5rCQko
Y29uc3QgRW1QYWxtQ2h1bmsmIGNodW5rLAoJCQkJCQkJCQkJCQkJCSBXaGF0SGFwcGVuZWREYXRh
JiBpbmZvKTsKCQkgCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCQllbnVtCgkJ
ewoJCQlrTm9BcHBBY2Nlc3MJCT0gMHgwMDAxLAoJCQlrTm9TeXN0ZW1BY2Nlc3MJCT0gMHgwMDAy
LAoJCQlrTm9NZW1NZ3JBY2Nlc3MJCT0gMHgwMDA0LAoJCQlrVW51c2VkTWV0YTEJCT0gMHgwMDA4
LAoJCQlrU3RhY2tCdWZmZXIJCT0gMHgwMDEwLAkgCgkJCWtTY3JlZW5CdWZmZXIJCT0gMHgwMDIw
LAkgCgkJCWtJbnN0cnVjdGlvbkJyZWFrCT0gMHgwMDQwLAkgCgkJCWtEYXRhQnJlYWsJCQk9IDB4
MDA4MCwJIAoKCQkJa0xvd01lbW9yeUJpdHMJCT0ga05vQXBwQWNjZXNzIHwga05vU3lzdGVtQWNj
ZXNzIHwga05vTWVtTWdyQWNjZXNzLAoJCQlrR2xvYmFsc0JpdHMJCT0ga05vQXBwQWNjZXNzLAoJ
CQlrTVBUQml0cwkJCT0ga05vQXBwQWNjZXNzLAoJCQlrTWVtU3RydWN0Qml0cwkJPSBrTm9BcHBB
Y2Nlc3MgfCBrTm9TeXN0ZW1BY2Nlc3MsCgkJCWtMb3dTdGFja0JpdHMJCT0ga05vQXBwQWNjZXNz
IHwga05vU3lzdGVtQWNjZXNzIHwga05vTWVtTWdyQWNjZXNzLAoJCQlrRnJlZUNodW5rQml0cwkJ
PSBrTm9BcHBBY2Nlc3MgfCBrTm9TeXN0ZW1BY2Nlc3MsCgkJCWtVbmxvY2tlZENodW5rQml0cwk9
IGtOb0FwcEFjY2VzcyB8IGtOb1N5c3RlbUFjY2VzcywKCQkJa1NjcmVlbkJpdHMJCQk9IGtOb0Fw
cEFjY2VzcyB8IGtTY3JlZW5CdWZmZXIsCgkJCWtVSU9iamVjdEJpdHMJCT0ga05vQXBwQWNjZXNz
LAoJCQlrQWNjZXNzQml0TWFzawkJPSBrTm9BcHBBY2Nlc3MgfCBrTm9TeXN0ZW1BY2Nlc3MgfCBr
Tm9NZW1NZ3JBY2Nlc3MsCgkJCWtGcmVlQWNjZXNzQml0cwkJPSAwCgkJfTsKfTsKCgogCiAKCgoK
CgoKCgoKCgoKCgogCiAKIAogCiAKIAogCgoKCgoKCgoKCgoKCgoKIAogCgoKIyAzMTEgIi4uL1Ny
Y1NoYXJlZC9NZXRhTWVtb3J5LmgiCgoKIyAzMjIgIi4uL1NyY1NoYXJlZC9NZXRhTWVtb3J5Lmgi
CgppbmxpbmUgQm9vbCBNZXRhTWVtb3J5OjpDYW5BcHBHZXRMb25nICh1aW50OCogbWV0YUFkZHJl
c3MpCXsJY29uc3QgdWludDMyCWtNYXNrID0gKCgodWludDMyKSAoICAga05vQXBwQWNjZXNzICAp
KSA8PCAyNCkgfAkoKCh1aW50MzIpICggICBrTm9BcHBBY2Nlc3MgICkpIDw8IDE2KSB8CSgoKHVp
bnQzMikgKCAgIGtOb0FwcEFjY2VzcyAgKSkgPDwgIDgpIHwJKCgodWludDMyKSAoICAga05vQXBw
QWNjZXNzICApKSkgOwlyZXR1cm4gKCgoKCh1aW50MzIpKCh1aW50OCopICBtZXRhQWRkcmVzcyAp
WzBdKSA8PCAyNCkgfAkoKCh1aW50MzIpKCh1aW50OCopICBtZXRhQWRkcmVzcyApWzFdKSA8PCAx
NikgfAkoKCh1aW50MzIpKCh1aW50OCopICBtZXRhQWRkcmVzcyApWzJdKSA8PCAgOCkgfAkoKCh1
aW50MzIpKCh1aW50OCopICBtZXRhQWRkcmVzcyApWzNdKSkpICAmIGtNYXNrKSA9PSAwOwl9CWlu
bGluZSBCb29sIE1ldGFNZW1vcnk6OkNhbkFwcEdldFdvcmQgKHVpbnQ4KiBtZXRhQWRkcmVzcykJ
ewljb25zdCB1aW50MTYJa01hc2sgPSAoKCh1aW50MTYpICggICBrTm9BcHBBY2Nlc3MgICkpIDw8
ICA4KSB8CSgoKHVpbnQxNikgKCAgIGtOb0FwcEFjY2VzcyAgKSkpIDsJcmV0dXJuICgoKCgodWlu
dDE2KSgodWludDgqKSAgbWV0YUFkZHJlc3MgKVswXSkgPDwgOCkgfAkoKCh1aW50MTYpKCh1aW50
OCopICBtZXRhQWRkcmVzcyApWzFdKSkpICAmIGtNYXNrKSA9PSAwOwl9CWlubGluZSBCb29sIE1l
dGFNZW1vcnk6OkNhbkFwcEdldEJ5dGUgKHVpbnQ4KiBtZXRhQWRkcmVzcykJewljb25zdCB1aW50
OAkJa01hc2sgPSAoKCh1aW50OCkgKCAgIGtOb0FwcEFjY2VzcyAgKSkpIDsJcmV0dXJuICgoKih1
aW50OCopICBtZXRhQWRkcmVzcyApICAmIGtNYXNrKSA9PSAwOwl9IAppbmxpbmUgQm9vbCBNZXRh
TWVtb3J5OjpDYW5BcHBTZXRMb25nICh1aW50OCogbWV0YUFkZHJlc3MpCXsJY29uc3QgdWludDMy
CWtNYXNrID0gKCgodWludDMyKSAoICAga05vQXBwQWNjZXNzICApKSA8PCAyNCkgfAkoKCh1aW50
MzIpICggICBrTm9BcHBBY2Nlc3MgICkpIDw8IDE2KSB8CSgoKHVpbnQzMikgKCAgIGtOb0FwcEFj
Y2VzcyAgKSkgPDwgIDgpIHwJKCgodWludDMyKSAoICAga05vQXBwQWNjZXNzICApKSkgOwlyZXR1
cm4gKCgoKCh1aW50MzIpKCh1aW50OCopICBtZXRhQWRkcmVzcyApWzBdKSA8PCAyNCkgfAkoKCh1
aW50MzIpKCh1aW50OCopICBtZXRhQWRkcmVzcyApWzFdKSA8PCAxNikgfAkoKCh1aW50MzIpKCh1
aW50OCopICBtZXRhQWRkcmVzcyApWzJdKSA8PCAgOCkgfAkoKCh1aW50MzIpKCh1aW50OCopICBt
ZXRhQWRkcmVzcyApWzNdKSkpICAmIGtNYXNrKSA9PSAwOwl9CWlubGluZSBCb29sIE1ldGFNZW1v
cnk6OkNhbkFwcFNldFdvcmQgKHVpbnQ4KiBtZXRhQWRkcmVzcykJewljb25zdCB1aW50MTYJa01h
c2sgPSAoKCh1aW50MTYpICggICBrTm9BcHBBY2Nlc3MgICkpIDw8ICA4KSB8CSgoKHVpbnQxNikg
KCAgIGtOb0FwcEFjY2VzcyAgKSkpIDsJcmV0dXJuICgoKCgodWludDE2KSgodWludDgqKSAgbWV0
YUFkZHJlc3MgKVswXSkgPDwgOCkgfAkoKCh1aW50MTYpKCh1aW50OCopICBtZXRhQWRkcmVzcyAp
WzFdKSkpICAmIGtNYXNrKSA9PSAwOwl9CWlubGluZSBCb29sIE1ldGFNZW1vcnk6OkNhbkFwcFNl
dEJ5dGUgKHVpbnQ4KiBtZXRhQWRkcmVzcykJewljb25zdCB1aW50OAkJa01hc2sgPSAoKCh1aW50
OCkgKCAgIGtOb0FwcEFjY2VzcyAgKSkpIDsJcmV0dXJuICgoKih1aW50OCopICBtZXRhQWRkcmVz
cyApICAmIGtNYXNrKSA9PSAwOwl9IAoKaW5saW5lIEJvb2wgTWV0YU1lbW9yeTo6Q2FuU3lzdGVt
R2V0TG9uZyAodWludDgqIG1ldGFBZGRyZXNzKQl7CWNvbnN0IHVpbnQzMglrTWFzayA9ICgoKHVp
bnQzMikgKCAgIGtOb1N5c3RlbUFjY2VzcyAgKSkgPDwgMjQpIHwJKCgodWludDMyKSAoICAga05v
U3lzdGVtQWNjZXNzICApKSA8PCAxNikgfAkoKCh1aW50MzIpICggICBrTm9TeXN0ZW1BY2Nlc3Mg
ICkpIDw8ICA4KSB8CSgoKHVpbnQzMikgKCAgIGtOb1N5c3RlbUFjY2VzcyAgKSkpIDsJcmV0dXJu
ICgoKCgodWludDMyKSgodWludDgqKSAgbWV0YUFkZHJlc3MgKVswXSkgPDwgMjQpIHwJKCgodWlu
dDMyKSgodWludDgqKSAgbWV0YUFkZHJlc3MgKVsxXSkgPDwgMTYpIHwJKCgodWludDMyKSgodWlu
dDgqKSAgbWV0YUFkZHJlc3MgKVsyXSkgPDwgIDgpIHwJKCgodWludDMyKSgodWludDgqKSAgbWV0
YUFkZHJlc3MgKVszXSkpKSAgJiBrTWFzaykgPT0gMDsJfQlpbmxpbmUgQm9vbCBNZXRhTWVtb3J5
OjpDYW5TeXN0ZW1HZXRXb3JkICh1aW50OCogbWV0YUFkZHJlc3MpCXsJY29uc3QgdWludDE2CWtN
YXNrID0gKCgodWludDE2KSAoICAga05vU3lzdGVtQWNjZXNzICApKSA8PCAgOCkgfAkoKCh1aW50
MTYpICggICBrTm9TeXN0ZW1BY2Nlc3MgICkpKSA7CXJldHVybiAoKCgoKHVpbnQxNikoKHVpbnQ4
KikgIG1ldGFBZGRyZXNzIClbMF0pIDw8IDgpIHwJKCgodWludDE2KSgodWludDgqKSAgbWV0YUFk
ZHJlc3MgKVsxXSkpKSAgJiBrTWFzaykgPT0gMDsJfQlpbmxpbmUgQm9vbCBNZXRhTWVtb3J5OjpD
YW5TeXN0ZW1HZXRCeXRlICh1aW50OCogbWV0YUFkZHJlc3MpCXsJY29uc3QgdWludDgJCWtNYXNr
ID0gKCgodWludDgpICggICBrTm9TeXN0ZW1BY2Nlc3MgICkpKSA7CXJldHVybiAoKCoodWludDgq
KSAgbWV0YUFkZHJlc3MgKSAgJiBrTWFzaykgPT0gMDsJfSAKaW5saW5lIEJvb2wgTWV0YU1lbW9y
eTo6Q2FuU3lzdGVtU2V0TG9uZyAodWludDgqIG1ldGFBZGRyZXNzKQl7CWNvbnN0IHVpbnQzMglr
TWFzayA9ICgoKHVpbnQzMikgKCAgIGtOb1N5c3RlbUFjY2VzcyAgKSkgPDwgMjQpIHwJKCgodWlu
dDMyKSAoICAga05vU3lzdGVtQWNjZXNzICApKSA8PCAxNikgfAkoKCh1aW50MzIpICggICBrTm9T
eXN0ZW1BY2Nlc3MgICkpIDw8ICA4KSB8CSgoKHVpbnQzMikgKCAgIGtOb1N5c3RlbUFjY2VzcyAg
KSkpIDsJcmV0dXJuICgoKCgodWludDMyKSgodWludDgqKSAgbWV0YUFkZHJlc3MgKVswXSkgPDwg
MjQpIHwJKCgodWludDMyKSgodWludDgqKSAgbWV0YUFkZHJlc3MgKVsxXSkgPDwgMTYpIHwJKCgo
dWludDMyKSgodWludDgqKSAgbWV0YUFkZHJlc3MgKVsyXSkgPDwgIDgpIHwJKCgodWludDMyKSgo
dWludDgqKSAgbWV0YUFkZHJlc3MgKVszXSkpKSAgJiBrTWFzaykgPT0gMDsJfQlpbmxpbmUgQm9v
bCBNZXRhTWVtb3J5OjpDYW5TeXN0ZW1TZXRXb3JkICh1aW50OCogbWV0YUFkZHJlc3MpCXsJY29u
c3QgdWludDE2CWtNYXNrID0gKCgodWludDE2KSAoICAga05vU3lzdGVtQWNjZXNzICApKSA8PCAg
OCkgfAkoKCh1aW50MTYpICggICBrTm9TeXN0ZW1BY2Nlc3MgICkpKSA7CXJldHVybiAoKCgoKHVp
bnQxNikoKHVpbnQ4KikgIG1ldGFBZGRyZXNzIClbMF0pIDw8IDgpIHwJKCgodWludDE2KSgodWlu
dDgqKSAgbWV0YUFkZHJlc3MgKVsxXSkpKSAgJiBrTWFzaykgPT0gMDsJfQlpbmxpbmUgQm9vbCBN
ZXRhTWVtb3J5OjpDYW5TeXN0ZW1TZXRCeXRlICh1aW50OCogbWV0YUFkZHJlc3MpCXsJY29uc3Qg
dWludDgJCWtNYXNrID0gKCgodWludDgpICggICBrTm9TeXN0ZW1BY2Nlc3MgICkpKSA7CXJldHVy
biAoKCoodWludDgqKSAgbWV0YUFkZHJlc3MgKSAgJiBrTWFzaykgPT0gMDsJfSAKCmlubGluZSBC
b29sIE1ldGFNZW1vcnk6OkNhbk1lbU1nckdldExvbmcgKHVpbnQ4KiBtZXRhQWRkcmVzcykJewlj
b25zdCB1aW50MzIJa01hc2sgPSAoKCh1aW50MzIpICggICBrTm9NZW1NZ3JBY2Nlc3MgICkpIDw8
IDI0KSB8CSgoKHVpbnQzMikgKCAgIGtOb01lbU1nckFjY2VzcyAgKSkgPDwgMTYpIHwJKCgodWlu
dDMyKSAoICAga05vTWVtTWdyQWNjZXNzICApKSA8PCAgOCkgfAkoKCh1aW50MzIpICggICBrTm9N
ZW1NZ3JBY2Nlc3MgICkpKSA7CXJldHVybiAoKCgoKHVpbnQzMikoKHVpbnQ4KikgIG1ldGFBZGRy
ZXNzIClbMF0pIDw8IDI0KSB8CSgoKHVpbnQzMikoKHVpbnQ4KikgIG1ldGFBZGRyZXNzIClbMV0p
IDw8IDE2KSB8CSgoKHVpbnQzMikoKHVpbnQ4KikgIG1ldGFBZGRyZXNzIClbMl0pIDw8ICA4KSB8
CSgoKHVpbnQzMikoKHVpbnQ4KikgIG1ldGFBZGRyZXNzIClbM10pKSkgICYga01hc2spID09IDA7
CX0JaW5saW5lIEJvb2wgTWV0YU1lbW9yeTo6Q2FuTWVtTWdyR2V0V29yZCAodWludDgqIG1ldGFB
ZGRyZXNzKQl7CWNvbnN0IHVpbnQxNglrTWFzayA9ICgoKHVpbnQxNikgKCAgIGtOb01lbU1nckFj
Y2VzcyAgKSkgPDwgIDgpIHwJKCgodWludDE2KSAoICAga05vTWVtTWdyQWNjZXNzICApKSkgOwly
ZXR1cm4gKCgoKCh1aW50MTYpKCh1aW50OCopICBtZXRhQWRkcmVzcyApWzBdKSA8PCA4KSB8CSgo
KHVpbnQxNikoKHVpbnQ4KikgIG1ldGFBZGRyZXNzIClbMV0pKSkgICYga01hc2spID09IDA7CX0J
aW5saW5lIEJvb2wgTWV0YU1lbW9yeTo6Q2FuTWVtTWdyR2V0Qnl0ZSAodWludDgqIG1ldGFBZGRy
ZXNzKQl7CWNvbnN0IHVpbnQ4CQlrTWFzayA9ICgoKHVpbnQ4KSAoICAga05vTWVtTWdyQWNjZXNz
ICApKSkgOwlyZXR1cm4gKCgqKHVpbnQ4KikgIG1ldGFBZGRyZXNzICkgICYga01hc2spID09IDA7
CX0gCmlubGluZSBCb29sIE1ldGFNZW1vcnk6OkNhbk1lbU1nclNldExvbmcgKHVpbnQ4KiBtZXRh
QWRkcmVzcykJewljb25zdCB1aW50MzIJa01hc2sgPSAoKCh1aW50MzIpICggICBrTm9NZW1NZ3JB
Y2Nlc3MgICkpIDw8IDI0KSB8CSgoKHVpbnQzMikgKCAgIGtOb01lbU1nckFjY2VzcyAgKSkgPDwg
MTYpIHwJKCgodWludDMyKSAoICAga05vTWVtTWdyQWNjZXNzICApKSA8PCAgOCkgfAkoKCh1aW50
MzIpICggICBrTm9NZW1NZ3JBY2Nlc3MgICkpKSA7CXJldHVybiAoKCgoKHVpbnQzMikoKHVpbnQ4
KikgIG1ldGFBZGRyZXNzIClbMF0pIDw8IDI0KSB8CSgoKHVpbnQzMikoKHVpbnQ4KikgIG1ldGFB
ZGRyZXNzIClbMV0pIDw8IDE2KSB8CSgoKHVpbnQzMikoKHVpbnQ4KikgIG1ldGFBZGRyZXNzIClb
Ml0pIDw8ICA4KSB8CSgoKHVpbnQzMikoKHVpbnQ4KikgIG1ldGFBZGRyZXNzIClbM10pKSkgICYg
a01hc2spID09IDA7CX0JaW5saW5lIEJvb2wgTWV0YU1lbW9yeTo6Q2FuTWVtTWdyU2V0V29yZCAo
dWludDgqIG1ldGFBZGRyZXNzKQl7CWNvbnN0IHVpbnQxNglrTWFzayA9ICgoKHVpbnQxNikgKCAg
IGtOb01lbU1nckFjY2VzcyAgKSkgPDwgIDgpIHwJKCgodWludDE2KSAoICAga05vTWVtTWdyQWNj
ZXNzICApKSkgOwlyZXR1cm4gKCgoKCh1aW50MTYpKCh1aW50OCopICBtZXRhQWRkcmVzcyApWzBd
KSA8PCA4KSB8CSgoKHVpbnQxNikoKHVpbnQ4KikgIG1ldGFBZGRyZXNzIClbMV0pKSkgICYga01h
c2spID09IDA7CX0JaW5saW5lIEJvb2wgTWV0YU1lbW9yeTo6Q2FuTWVtTWdyU2V0Qnl0ZSAodWlu
dDgqIG1ldGFBZGRyZXNzKQl7CWNvbnN0IHVpbnQ4CQlrTWFzayA9ICgoKHVpbnQ4KSAoICAga05v
TWVtTWdyQWNjZXNzICApKSkgOwlyZXR1cm4gKCgqKHVpbnQ4KikgIG1ldGFBZGRyZXNzICkgICYg
a01hc2spID09IDA7CX0gCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgppbmxpbmUgQm9v
bCBNZXRhTWVtb3J5OjpJc1NjcmVlbkJ1ZmZlciAodWludDgqIG1ldGFBZGRyZXNzLCB1aW50MzIg
c2l6ZSkKewoJaWYgKHNpemUgPT0gMSkKCXsKCQljb25zdCB1aW50OCBrTWFzayA9ICgoKHVpbnQ4
KSAoIGtTY3JlZW5CdWZmZXIgKSkpIDsKCgkJcmV0dXJuICgoKih1aW50OCopICBtZXRhQWRkcmVz
cyApICAmIGtNYXNrKSAhPSAwOwoJfQoJZWxzZSBpZiAoc2l6ZSA9PSAyKQoJewoJCWNvbnN0IHVp
bnQxNiBrTWFzayA9ICgoKHVpbnQxNikgKCBrU2NyZWVuQnVmZmVyICkpIDw8ICA4KSB8CSgoKHVp
bnQxNikgKCBrU2NyZWVuQnVmZmVyICkpKSA7CgoJCXJldHVybiAoKCgoKHVpbnQxNikoKHVpbnQ4
KikgIG1ldGFBZGRyZXNzIClbMF0pIDw8IDgpIHwJKCgodWludDE2KSgodWludDgqKSAgbWV0YUFk
ZHJlc3MgKVsxXSkpKSAgJiBrTWFzaykgIT0gMDsKCX0KCWVsc2UgaWYgKHNpemUgPT0gNCkKCXsK
CQljb25zdCB1aW50MzIga01hc2sgPSAoKCh1aW50MzIpICgga1NjcmVlbkJ1ZmZlciApKSA8PCAy
NCkgfAkoKCh1aW50MzIpICgga1NjcmVlbkJ1ZmZlciApKSA8PCAxNikgfAkoKCh1aW50MzIpICgg
a1NjcmVlbkJ1ZmZlciApKSA8PCAgOCkgfAkoKCh1aW50MzIpICgga1NjcmVlbkJ1ZmZlciApKSkg
OwoKCQlyZXR1cm4gKCgoKCh1aW50MzIpKCh1aW50OCopICBtZXRhQWRkcmVzcyApWzBdKSA8PCAy
NCkgfAkoKCh1aW50MzIpKCh1aW50OCopICBtZXRhQWRkcmVzcyApWzFdKSA8PCAxNikgfAkoKCh1
aW50MzIpKCh1aW50OCopICBtZXRhQWRkcmVzcyApWzJdKSA8PCAgOCkgfAkoKCh1aW50MzIpKCh1
aW50OCopICBtZXRhQWRkcmVzcyApWzNdKSkpICAmIGtNYXNrKSAhPSAwOwoJfQoKCWNvbnN0IHVp
bnQ4IGtNYXNrID0gKCgodWludDgpICgga1NjcmVlbkJ1ZmZlciApKSkgOwoKCWZvciAodWludDMy
IGlpID0gMDsgaWkgPCBzaXplOyArK2lpKQoJewoJCWlmICgoKCoodWludDgqKSAobWV0YUFkZHJl
c3MgKyBpaSkpICYga01hc2spICE9IDApCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9Cgl9CgoJcmV0
dXJuIGZhbHNlOwp9CgppbmxpbmUgQm9vbCBNZXRhTWVtb3J5OjpJc1NjcmVlbkJ1ZmZlcjggKHVp
bnQ4KiBtZXRhQWRkcmVzcykKewoJY29uc3QgdWludDgga01hc2sgPSAoKCh1aW50OCkgKCBrU2Ny
ZWVuQnVmZmVyICkpKSA7CgoJcmV0dXJuICgoKih1aW50OCopICBtZXRhQWRkcmVzcyApICAmIGtN
YXNrKSAhPSAwOwp9CgppbmxpbmUgQm9vbCBNZXRhTWVtb3J5OjpJc1NjcmVlbkJ1ZmZlcjE2ICh1
aW50OCogbWV0YUFkZHJlc3MpCnsKCWNvbnN0IHVpbnQxNiBrTWFzayA9ICgoKHVpbnQxNikgKCBr
U2NyZWVuQnVmZmVyICkpIDw8ICA4KSB8CSgoKHVpbnQxNikgKCBrU2NyZWVuQnVmZmVyICkpKSA7
CgoJcmV0dXJuICgoKCgodWludDE2KSgodWludDgqKSAgbWV0YUFkZHJlc3MgKVswXSkgPDwgOCkg
fAkoKCh1aW50MTYpKCh1aW50OCopICBtZXRhQWRkcmVzcyApWzFdKSkpICAmIGtNYXNrKSAhPSAw
Owp9CgppbmxpbmUgQm9vbCBNZXRhTWVtb3J5OjpJc1NjcmVlbkJ1ZmZlcjMyICh1aW50OCogbWV0
YUFkZHJlc3MpCnsKCWNvbnN0IHVpbnQzMiBrTWFzayA9ICgoKHVpbnQzMikgKCBrU2NyZWVuQnVm
ZmVyICkpIDw8IDI0KSB8CSgoKHVpbnQzMikgKCBrU2NyZWVuQnVmZmVyICkpIDw8IDE2KSB8CSgo
KHVpbnQzMikgKCBrU2NyZWVuQnVmZmVyICkpIDw8ICA4KSB8CSgoKHVpbnQzMikgKCBrU2NyZWVu
QnVmZmVyICkpKSA7CgoJcmV0dXJuICgoKCgodWludDMyKSgodWludDgqKSAgbWV0YUFkZHJlc3Mg
KVswXSkgPDwgMjQpIHwJKCgodWludDMyKSgodWludDgqKSAgbWV0YUFkZHJlc3MgKVsxXSkgPDwg
MTYpIHwJKCgodWludDMyKSgodWludDgqKSAgbWV0YUFkZHJlc3MgKVsyXSkgPDwgIDgpIHwJKCgo
dWludDMyKSgodWludDgqKSAgbWV0YUFkZHJlc3MgKVszXSkpKSAgJiBrTWFzaykgIT0gMDsKfQoK
CmlubGluZSBCb29sIE1ldGFNZW1vcnk6OklzQ1BVQnJlYWsgKGVtdXB0ciBvcGNvZGVMb2NhdGlv
bikKewoJKCh2b2lkKSAwKSA7CglyZXR1cm4gSXNDUFVCcmVhayAoRW1NZW1HZXRNZXRhQWRkcmVz
cyAob3Bjb2RlTG9jYXRpb24pKTsKfQoKCmlubGluZSBCb29sIE1ldGFNZW1vcnk6OklzQ1BVQnJl
YWsgKHVpbnQ4KiBtZXRhTG9jYXRpb24pCnsKCXJldHVybiAoKCptZXRhTG9jYXRpb24pICYga0lu
c3RydWN0aW9uQnJlYWspICE9IDA7Cn0KCgoKIyA0NjIgIi4uL1NyY1NoYXJlZC9NZXRhTWVtb3J5
LmgiCgoKIAogCiAKCmlubGluZSB2b2lkIE1ldGFNZW1vcnk6Ok1hcmtUb3RhbEFjY2VzcyAoZW11
cHRyIGJlZ2luLCBlbXVwdHIgZW5kKQp7CglVbm1hcmtSYW5nZSAoYmVnaW4sIGVuZCwga0FjY2Vz
c0JpdE1hc2spOwp9CgoKIAogCiAKCmlubGluZSB2b2lkIE1ldGFNZW1vcnk6OlNldEFjY2VzcyAo
ZW11cHRyIGJlZ2luLCBlbXVwdHIgZW5kLCB1aW50OCBiaXRzKQp7CglNYXJrVW5tYXJrUmFuZ2Ug
KGJlZ2luLCBlbmQsIH5rQWNjZXNzQml0TWFzaywgYml0cyk7Cn0KCgogCiAKIAogCiAKCmlubGlu
ZSB2b2lkIE1ldGFNZW1vcnk6Ok1hcmtMb3dNZW1vcnkgKGVtdXB0ciBiZWdpbiwgZW11cHRyIGVu
ZCkKewoJU2V0QWNjZXNzIChiZWdpbiwgZW5kLCBrTG93TWVtb3J5Qml0cyk7Cn0KCgogCiAKIAog
CiAKCmlubGluZSB2b2lkIE1ldGFNZW1vcnk6Ok1hcmtTeXN0ZW1HbG9iYWxzIChlbXVwdHIgYmVn
aW4sIGVtdXB0ciBlbmQpCnsKCVNldEFjY2VzcyAoYmVnaW4sIGVuZCwga0dsb2JhbHNCaXRzKTsK
fQoKCiAKIAogCgppbmxpbmUgdm9pZCBNZXRhTWVtb3J5OjpNYXJrSGVhcEhlYWRlciAoZW11cHRy
IGJlZ2luLCBlbXVwdHIgZW5kKQp7CglTZXRBY2Nlc3MgKGJlZ2luLCBlbmQsIGtNZW1TdHJ1Y3RC
aXRzKTsKfQoKCiAKIAogCgppbmxpbmUgdm9pZCBNZXRhTWVtb3J5OjpNYXJrTVBUIChlbXVwdHIg
YmVnaW4sIGVtdXB0ciBlbmQpCnsKCVNldEFjY2VzcyAoYmVnaW4sIGVuZCwga01QVEJpdHMpOwp9
CgoKIAogCiAKCmlubGluZSB2b2lkIE1ldGFNZW1vcnk6Ok1hcmtDaHVua0hlYWRlciAoZW11cHRy
IGJlZ2luLCBlbXVwdHIgZW5kKQp7CglTZXRBY2Nlc3MgKGJlZ2luLCBlbmQsIGtNZW1TdHJ1Y3RC
aXRzKTsKfQoKCiAKIAogCgppbmxpbmUgdm9pZCBNZXRhTWVtb3J5OjpNYXJrQ2h1bmtUcmFpbGVy
IChlbXVwdHIgYmVnaW4sIGVtdXB0ciBlbmQpCnsKCVNldEFjY2VzcyAoYmVnaW4sIGVuZCwga01l
bVN0cnVjdEJpdHMpOwp9CgoKIAogCiAKCmlubGluZSB2b2lkIE1ldGFNZW1vcnk6Ok1hcmtMb3dT
dGFjayAoZW11cHRyIGJlZ2luLCBlbXVwdHIgZW5kKQp7CglTZXRBY2Nlc3MgKGJlZ2luLCBlbmQs
IGtMb3dTdGFja0JpdHMpOwp9CgoKIAogCiAKCmlubGluZSB2b2lkIE1ldGFNZW1vcnk6Ok1hcmtV
bmxvY2tlZENodW5rIChlbXVwdHIgYmVnaW4sIGVtdXB0ciBlbmQpCnsKCVNldEFjY2VzcyAoYmVn
aW4sIGVuZCwga1VubG9ja2VkQ2h1bmtCaXRzKTsKfQoKCiAKIAogCgppbmxpbmUgdm9pZCBNZXRh
TWVtb3J5OjpNYXJrRnJlZUNodW5rIChlbXVwdHIgYmVnaW4sIGVtdXB0ciBlbmQpCnsKCVNldEFj
Y2VzcyAoYmVnaW4sIGVuZCwga0ZyZWVDaHVua0JpdHMpOwp9CgoKIAogCiAKCmlubGluZSB2b2lk
IE1ldGFNZW1vcnk6Ok1hcmtTY3JlZW4gKGVtdXB0ciBiZWdpbiwgZW11cHRyIGVuZCkKewoJU2V0
QWNjZXNzIChiZWdpbiwgZW5kLCBrU2NyZWVuQml0cyk7Cn0KCgogCiAKIAoKaW5saW5lIHZvaWQg
TWV0YU1lbW9yeTo6VW5tYXJrU2NyZWVuIChlbXVwdHIgYmVnaW4sIGVtdXB0ciBlbmQpCnsKCU1h
cmtUb3RhbEFjY2VzcyAoYmVnaW4sIGVuZCk7CglVbm1hcmtSYW5nZSAoYmVnaW4sIGVuZCwga1Nj
cmVlbkJ1ZmZlcik7Cn0KCgogCiAKIAoKaW5saW5lIHZvaWQgTWV0YU1lbW9yeTo6TWFya1VJT2Jq
ZWN0IChlbXVwdHIgYmVnaW4sIGVtdXB0ciBlbmQpCnsKCVNldEFjY2VzcyAoYmVnaW4sIGVuZCwg
a1VJT2JqZWN0Qml0cyk7Cn0KCgogCiAKIAoKaW5saW5lIHZvaWQgTWV0YU1lbW9yeTo6VW5tYXJr
VUlPYmplY3QgKGVtdXB0ciBiZWdpbiwgZW11cHRyIGVuZCkKewoJTWFya1RvdGFsQWNjZXNzIChi
ZWdpbiwgZW5kKTsKIAp9CgoKIAogCiAKCmlubGluZSB2b2lkIE1ldGFNZW1vcnk6Ok1hcmtJbnN0
cnVjdGlvbkJyZWFrIChlbXVwdHIgb3Bjb2RlTG9jYXRpb24pCnsKCSgodm9pZCkgMCkgOwoKCXVp
bnQ4KglwdHIgPSBFbU1lbUdldE1ldGFBZGRyZXNzIChvcGNvZGVMb2NhdGlvbik7CgoJKnB0ciB8
PSBrSW5zdHJ1Y3Rpb25CcmVhazsKfQoKCiAKIAogCgppbmxpbmUgdm9pZCBNZXRhTWVtb3J5OjpV
bm1hcmtJbnN0cnVjdGlvbkJyZWFrIChlbXVwdHIgb3Bjb2RlTG9jYXRpb24pCnsKCSgodm9pZCkg
MCkgOwoKCXVpbnQ4KglwdHIgPSBFbU1lbUdldE1ldGFBZGRyZXNzIChvcGNvZGVMb2NhdGlvbik7
CgoJKnB0ciAmPSB+a0luc3RydWN0aW9uQnJlYWs7Cn0KCgogCiAKIAoKaW5saW5lIHZvaWQgTWV0
YU1lbW9yeTo6TWFya0RhdGFCcmVhayAoZW11cHRyIGJlZ2luLCBlbXVwdHIgZW5kKQp7CglNYXJr
UmFuZ2UgKGJlZ2luLCBlbmQsIGtEYXRhQnJlYWspOwp9CgoKIAogCiAKCmlubGluZSB2b2lkIE1l
dGFNZW1vcnk6OlVubWFya0RhdGFCcmVhayAoZW11cHRyIGJlZ2luLCBlbXVwdHIgZW5kKQp7CglV
bm1hcmtSYW5nZSAoYmVnaW4sIGVuZCwga0RhdGFCcmVhayk7Cn0KCgoKIyAxNSAiLi8uLi9TcmNT
aGFyZWQvTWV0YU1lbW9yeS5jcHAiIDIKCgojIDEgIi4uL1NyY1NoYXJlZC9EZWJ1Z01nci5oIiAx
CiAKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgojcHJhZ21hIG1hcmsgVHlwZXMKCmNsYXNzIFNMUDsK
Y2xhc3MgQ1NvY2tldDsKY2xhc3MgQ1RDUFNvY2tldDsKCnN0cnVjdCBTeXN0ZW1DYWxsQ29udGV4
dDsKCnR5cGVkZWYgdWludDMyCSgqcmVnaXN0ZXJGdW4pKGludCBudW0pOwp0eXBlZGVmIEJvb2wJ
KCpjb21wYXJlRnVuKShVSW50MzIgYSwgVUludDMyIGIpOwoKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAoKc3RydWN0IEJyZWFrcG9pbnRDb25kaXRpb24K
ewoJcmVnaXN0ZXJGdW4JCQkJcmVnVHlwZTsKCWludAkJCQkgCQlyZWdOdW07CglCb29sCQkJCQlp
bmRpcmVjdDsKCXVpbnQzMgkJCSAJCWluZGlyZWN0T2Zmc2V0OwoJaW50CQkJCQkJc2l6ZTsJCQkJ
IAoKCWNvbXBhcmVGdW4JCQkJY29uZGl0aW9uOwoJdWludDMyCQkJCQl2YWx1ZTsKCgkgCgkgCgkg
CgoJY2hhcioJCQkJCXNvdXJjZTsKCglCb29sCQkJCQlFdmFsdWF0ZSAodm9pZCk7Cn07CgpzdHJ1
Y3QgRW1CcmVha3BvaW50VHlwZQp7CglNZW1QdHIJCQkJCWFkZHI7CQkJCSAKCUJvb2xlYW4JCQkJ
CWVuYWJsZWQ7CQkJIAoJQm9vbGVhbgkJCQkJaW5zdGFsbGVkOwkJCSAKfTsKCnN0cnVjdCBEZWJ1
Z0dsb2JhbHNUeXBlCnsKCSAKCglib29sCQkJCQlpZ25vcmVEYmdCcmVha3M7CSAKCWJvb2wJCQkJ
CWZpcnN0RW50cmFuY2U7CQkgCglib29sCQkJCQlzdGVwU3B5OwkJCSAKCWJvb2wJCQkJCWJyZWFr
aW5nT25BVHJhcDsJIAoJYm9vbAkJCQkJY29udGludWVPdmVyQVRyYXA7CSAKCWJvb2wJCQkJCWNv
bnRpbnVlT3ZlckJQOyAJIAoKCWJvb2wJCQkJCWNoZWNrVHJhcFdvcmRPbkV4aXQ7Cgl1aW50MTYg
CQkJCQl0cmFwV29yZDsKCXVpbnQxNgkJCSAJCXJlZk51bTsKCgkgCgoJRW1CcmVha3BvaW50VHlw
ZQkJYnBbKDUgICsxKSBdOwoJQnJlYWtwb2ludENvbmRpdGlvbioJYnBDb25kaXRpb25bKDUgICsx
KSBdOwkgCgoJIAoKCVVJbnQxNgkJCQkJdHJhcEJyZWFrWzUgXTsKCVVJbnQxNgkJCQkJdHJhcFBh
cmFtWzUgXTsKCgkgCgoJZW11cHRyCQkJIAkJc3NBZGRyOyAJCQkgCglVSW50MzIJCQkJCXNzVmFs
dWU7CQkJIAoKCSAKCglpbnQzMgkJCSAJCWV4Y1R5cGU7CQkJIAoKCSAKCSAKCglib29sCQkJCQl3
YXRjaEVuYWJsZWQ7CgllbXVwdHIJCQkgCQl3YXRjaEFkZHI7CQkJIAoJVUludDMyCQkJCQl3YXRj
aEJ5dGVzOyAJCSAKfTsKCiAKCiNwcmFnbWEgbWFyayBjbGFzcyBEZWJ1ZwoKCSAKZXh0ZXJuIERl
YnVnR2xvYmFsc1R5cGUgCWdEZWJ1Z2dlckdsb2JhbHM7CgpleHRlcm4gZW11cHRyCWdFeGNlcHRp
b25BZGRyZXNzOwpleHRlcm4gaW50CQlnRXhjZXB0aW9uU2l6ZTsKZXh0ZXJuIEJvb2wJCWdFeGNl
cHRpb25Gb3JSZWFkOwoKCmNsYXNzIERlYnVnCnsKCXB1YmxpYzoKCQlzdGF0aWMgdm9pZCAJCQlJ
bml0aWFsaXplCQkJCSh2b2lkKTsKCQlzdGF0aWMgdm9pZCAJCQlSZXNldAkJCQkJKHZvaWQpOwoJ
CXN0YXRpYyB2b2lkIAkJCVNhdmUJCQkJCShTZXNzaW9uRmlsZSYpOwoJCXN0YXRpYyB2b2lkIAkJ
CUxvYWQJCQkJCShTZXNzaW9uRmlsZSYpOwoJCXN0YXRpYyB2b2lkIAkJCURpc3Bvc2UgCQkJCSh2
b2lkKTsKCgkJc3RhdGljIHZvaWQgCQkJU3RhcnR1cCAJCQkJKHZvaWQpOwoJCXN0YXRpYyB2b2lk
IAkJCVNodXRkb3duCQkJCSh2b2lkKTsKCQlzdGF0aWMgQm9vbCAJCQlDb25uZWN0ZWRUb1RDUERl
YnVnZ2VyCSh2b2lkKTsKCQlzdGF0aWMgQ1RDUFNvY2tldCoJCUdldFRDUERlYnVnZ2VyU29ja2V0
CSh2b2lkKTsKCQlzdGF0aWMgQ1NvY2tldCoJCQlHZXREZWJ1Z2dlclNvY2tldAkJKHZvaWQpOwoK
CQlzdGF0aWMgRXJyQ29kZQkJCUhhbmRsZU5ld1BhY2tldCAJCShTTFAmKTsKCgkJc3RhdGljIEJv
b2wgCQkJQnJlYWtJZkNvbm5lY3RlZAkJKEV4Y2VwdGlvbk51bWJlcik7CgkJc3RhdGljIEJvb2wg
CQkJSGFuZGxlVHJhcDggCQkJKEV4Y2VwdGlvbk51bWJlcik7CgkJc3RhdGljIEJvb2wgCQkJSGFu
ZGxlU3lzdGVtQ2FsbAkJKGNvbnN0IFN5c3RlbUNhbGxDb250ZXh0JiBjb250ZXh0KTsKCQlzdGF0
aWMgRXJyQ29kZQkJCUVudGVyRGVidWdnZXIJCQkoRXhjZXB0aW9uTnVtYmVyLCBTTFAqKTsKCQlz
dGF0aWMgRXJyQ29kZQkJCUV4aXREZWJ1Z2dlcgkJCSh2b2lkKTsKCQlzdGF0aWMgdm9pZCAJCQlD
aGVja1N0ZXBTcHkJCQkoZW11cHRyIHdyaXRlQWRkcmVzcywgaW50IHdyaXRlQnl0ZXMpOwoKCQlz
dGF0aWMgdm9pZCAJCQlIYW5kbGVJbnN0cnVjdGlvbkJyZWFrCSh2b2lkKTsKCQlzdGF0aWMgdm9p
ZCAJCQlJbnN0YWxsSW5zdHJ1Y3Rpb25CcmVha3Modm9pZCk7CgkJc3RhdGljIHZvaWQgCQkJUmVt
b3ZlSW5zdHJ1Y3Rpb25CcmVha3MJKHZvaWQpOwoKCQlzdGF0aWMgQnJlYWtwb2ludENvbmRpdGlv
bioKCQkJCQkJCQlOZXdCcmVha3BvaW50Q29uZGl0aW9uCShjb25zdCBjaGFyKiBzb3VyY2VTdHJp
bmcpOwoJCXN0YXRpYyB2b2lkIAkJCVNldEJyZWFrcG9pbnQJCQkoaW50IGluZGV4LCBlbXVwdHIg
YWRkciwgQnJlYWtwb2ludENvbmRpdGlvbiogYyk7CgkJc3RhdGljIHZvaWQgCQkJQ2xlYXJCcmVh
a3BvaW50IAkJKGludCBpbmRleCk7CgkJc3RhdGljIHZvaWQgCQkJRGVsZXRlQnJlYWtwb2ludENv
bmRpdGlvbgkoaW50IGluZGV4KTsKCgkJc3RhdGljIEJvb2wJCQkJQnJlYWtwb2ludEluc3RhbGxl
ZAkJKHZvaWQpOwoKCXByaXZhdGU6CgkJc3RhdGljIHZvaWQgCQkJQ29uZGl0aW9uYWxCcmVhawkJ
KHZvaWQpOwoJCXN0YXRpYyBCb29sIAkJCU11c3RCcmVha09uVHJhcFN5c3RlbUNhbGwJKHVpbnQx
NiB0cmFwV29yZCwgdWludDE2IHJlZk51bSk7CgoJCXN0YXRpYyB2b2lkIAkJCURvQ2hlY2tTdGVw
U3B5CQkJKGVtdXB0ciB3cml0ZUFkZHJlc3MsIGludCB3cml0ZUJ5dGVzKTsKCQlzdGF0aWMgdm9p
ZCAJCQlEb0NoZWNrV2F0Y2hwb2ludAkJKGVtdXB0ciB3cml0ZUFkZHJlc3MsIGludCB3cml0ZUJ5
dGVzKTsKCgkJc3RhdGljIHZvaWQgCQkJRXZlbnRDYWxsYmFjawkJCShDU29ja2V0KiBzLCBpbnQg
ZXZlbnQpOwoJCXN0YXRpYyB2b2lkIAkJCUNyZWF0ZUxpc3RlbmluZ1NvY2tldHMJKHZvaWQpOwoJ
CXN0YXRpYyB2b2lkIAkJCURlbGV0ZUxpc3RlbmluZ1NvY2tldHMJKHZvaWQpOwp9OwoKCiAKIAog
CgppbmxpbmUgdm9pZCBEZWJ1Zzo6Q2hlY2tTdGVwU3B5IChlbXVwdHIgd3JpdGVBZGRyZXNzLCBp
bnQgd3JpdGVCeXRlcykKewoJaWYgKGdEZWJ1Z2dlckdsb2JhbHMuc3RlcFNweSkKCXsKCQlEZWJ1
Zzo6RG9DaGVja1N0ZXBTcHkgKHdyaXRlQWRkcmVzcywgd3JpdGVCeXRlcyk7Cgl9CgoJaWYgKGdE
ZWJ1Z2dlckdsb2JhbHMud2F0Y2hFbmFibGVkKQoJewoJCURlYnVnOjpEb0NoZWNrV2F0Y2hwb2lu
dCAod3JpdGVBZGRyZXNzLCB3cml0ZUJ5dGVzKTsKCX0KfQoKCgoKIyAxNyAiLi8uLi9TcmNTaGFy
ZWQvTWV0YU1lbW9yeS5jcHAiIDIKCiMgMSAiLi4vU3JjU2hhcmVkL0hhcmR3YXJlL0VtQmFua1NS
QU0uaCIgMQogCiAKCgoKCgoKCgoKCgoKCgpjbGFzcyBTZXNzaW9uRmlsZTsKCmV4dGVybiBlbXVw
dHIJZ01lbW9yeVN0YXJ0OwoKCSAKZXh0ZXJuIHVpbnQzMglnUkFNQmFua19TaXplOwpleHRlcm4g
dWludDMyCWdSQU1CYW5rX01hc2s7CmV4dGVybiB1aW50OCoJZ1JBTV9NZW1vcnk7CmV4dGVybiB1
aW50OCoJZ1JBTV9NZXRhTWVtb3J5OwoKCmNsYXNzIEVtQmFua1NSQU0KewoJcHVibGljOgoJCXN0
YXRpYyB2b2lkCQkJCUluaXRpYWxpemUJCQkoUkFNU2l6ZVR5cGUgcmFtU2l6ZSk7CgkJc3RhdGlj
IHZvaWQJCQkJUmVzZXQJCQkJKEJvb2wgaGFyZHdhcmVSZXNldCk7CgkJc3RhdGljIHZvaWQJCQkJ
U2F2ZQkJCQkoU2Vzc2lvbkZpbGUmKTsKCQlzdGF0aWMgdm9pZAkJCQlMb2FkCQkJCShTZXNzaW9u
RmlsZSYpOwoJCXN0YXRpYyB2b2lkCQkJCURpc3Bvc2UJCQkJKHZvaWQpOwoKCQlzdGF0aWMgdm9p
ZAkJCQlTZXRCYW5rSGFuZGxlcnMJCSh2b2lkKTsKCgkJc3RhdGljIHVpbnQzMgkJCUdldExvbmcJ
CQkJKGVtdXB0ciBhZGRyZXNzKTsKCQlzdGF0aWMgdWludDMyCQkJR2V0V29yZAkJCQkoZW11cHRy
IGFkZHJlc3MpOwoJCXN0YXRpYyB1aW50MzIJCQlHZXRCeXRlCQkJCShlbXVwdHIgYWRkcmVzcyk7
CgkJc3RhdGljIHZvaWQJCQkJU2V0TG9uZwkJCQkoZW11cHRyIGFkZHJlc3MsIHVpbnQzMiB2YWx1
ZSk7CgkJc3RhdGljIHZvaWQJCQkJU2V0V29yZAkJCQkoZW11cHRyIGFkZHJlc3MsIHVpbnQzMiB2
YWx1ZSk7CgkJc3RhdGljIHZvaWQJCQkJU2V0Qnl0ZQkJCQkoZW11cHRyIGFkZHJlc3MsIHVpbnQz
MiB2YWx1ZSk7CgkJc3RhdGljIGludAkJCQlWYWxpZEFkZHJlc3MJCShlbXVwdHIgYWRkcmVzcywg
dWludDMyIHNpemUpOwoJCXN0YXRpYyB1aW50OCoJCQlHZXRSZWFsQWRkcmVzcwkJKGVtdXB0ciBh
ZGRyZXNzKTsKCQlzdGF0aWMgdWludDgqCQkJR2V0TWV0YUFkZHJlc3MJCShlbXVwdHIgYWRkcmVz
cyk7CgkJc3RhdGljIHZvaWQJCQkJQWRkT3Bjb2RlQ3ljbGVzCQkodm9pZCk7CgoJCXN0YXRpYyBl
bXVwdHIJCQlHZXRNZW1vcnlTdGFydAkJKHZvaWQpIHsgcmV0dXJuIGdNZW1vcnlTdGFydDsgfQoK
CXByaXZhdGU6CgkJc3RhdGljIHZvaWQJCQkJQWRkcmVzc0Vycm9yCQkoZW11cHRyIGFkZHJlc3Ms
IGxvbmcgc2l6ZSwgQm9vbCBmb3JSZWFkKTsKCQlzdGF0aWMgdm9pZAkJCQlJbnZhbGlkQWNjZXNz
CQkoZW11cHRyIGFkZHJlc3MsIGxvbmcgc2l6ZSwgQm9vbCBmb3JSZWFkKTsKCQlzdGF0aWMgdm9p
ZAkJCQlQcm90ZWN0ZWRBY2Nlc3MJCShlbXVwdHIgYWRkcmVzcywgbG9uZyBzaXplLCBCb29sIGZv
clJlYWQpOwp9OwoKCiMgMTggIi4vLi4vU3JjU2hhcmVkL01ldGFNZW1vcnkuY3BwIiAyCgoKCiMg
MSAiLi4vU3JjU2hhcmVkL0VtTG93TWVtLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKIyAxICIuLi9T
cmNTaGFyZWQvRW1QYWxtU3RydWN0cy5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgojIDEgIi4uL1Ny
Y1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmkiIDEKIAogCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKCgogCiAKIAogCiAKIAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgoK
IAogCiAKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKIAogCiAKCgoKCgoK
CgogCiAKIAoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCgoKCiAKIAogCgoK
CgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKCgog
CiAKIAoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgoKIAogCiAKCgoKCgoK
CgoKIAogCiAKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAK
IAoKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKIAogCiAKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgoK
CgoKIAogCiAKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCiAKIAogCgoKCgoK
CgoKIAogCiAKCgoKCgoKCgogCiAKIAoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKCgoK
CgoKCgogCiAKIAoKCgoKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKCgog
CiAKIAoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgogCiAKIAoKCgoK
CgoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKCgoKCgojIDYyNiAi
Li4vU3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMuaSIKCiAKIAogCgoKCgoKIyA2NDkgIi4uL1NyY1No
YXJlZC9FbVBhbG1TdHJ1Y3RzLmkiCgogCiAKIAoKCgoKCgoKCgoKIAogCiAKCgoKCgojIDY5MiAi
Li4vU3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMuaSIKCiAKIAogCgoKCgoKIyA3MTUgIi4uL1NyY1No
YXJlZC9FbVBhbG1TdHJ1Y3RzLmkiCgogCiAKIAoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCiAKIAog
CgoKCgoKIyA3NTYgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmkiCgogCiAKIAoKCgoKCgoK
CiAKIAogCgoKCgoKCgoKCgogCiAKIAoKCgoKCiMgODAzICIuLi9TcmNTaGFyZWQvRW1QYWxtU3Ry
dWN0cy5pIgoKIAogCiAKCgoKCgoKCgoKIAogCiAKCgoKCgojIDg2MCAiLi4vU3JjU2hhcmVkL0Vt
UGFsbVN0cnVjdHMuaSIKCiAKIAogCgoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCiMgODk3ICIuLi9T
cmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAKCgoKCgoKCgogCiAKIAoKCgoKCiMgOTU5
ICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAKCgoKCgoKCgoKCgoKCiAKIAog
CgoKCgoKCgoKCgoKCiAKIAogCgoKCgoKIyAxMDEzICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0
cy5pIgoKIAogCiAKCgoKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgojIDEyMDUgIi4uL1NyY1NoYXJl
ZC9FbVBhbG1TdHJ1Y3RzLmkiCgogCiAKIAoKCgoKCgoKCiAKIAogCgoKCgoKIyAxMjQxICIuLi9T
cmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoK
CgoKIAogCiAKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgoKCgoKIAog
CiAKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoK
CiAKIAogCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCiAKIAogCgoKCgoKIyAxNDA0ICIuLi9TcmNT
aGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAKCgoKCgoKCgogCiAKIAoKCgoKCgoKCiAKIAog
CgoKCgoKIyAxNDQ1ICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAKIAoKCgoK
CiMgMTQ2MyAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMuaSIKCiAKIAogCiAKCgoKCgojIDE0
ODMgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmkiCgogCiAKIAogCgoKCgoKCgoKCgoKIAog
CiAKCgoKCgoKCgogCiAKIAoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCiMg
MTU2MCAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMuaSIKCiAKIAogCgoKCgoKIyAxNTc5ICIu
Li9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAKCgoKCgoKCgoKCiAKIAogCgoKCgoK
CgoKCiAKIAogCgoKCgoKIyAxNjMyICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAog
CiAKCgoKCgoKCgoKCgoKIAogCiAKCgoKCgojIDE2NzEgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1
Y3RzLmkiCgogCiAKIAoKCgoKCiMgMTcwMiAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMuaSIK
CiAKIAogCgoKCgoKIyAxNzE5ICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAK
CgoKCgoKCgogCiAKIAoKCgoKCiMgMTc1MSAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMuaSIK
CiAKIAogCgoKCgoKCgoKCiAKIAogCgoKCgoKIyAxNzk3ICIuLi9TcmNTaGFyZWQvRW1QYWxtU3Ry
dWN0cy5pIgoKIAogCiAKCgoKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCgoKCgogCiAKIAoKCgoK
CgoKCgoKCgogCiAKIAoKCgoKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoK
CgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCgogCiAK
IAoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoK
CgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKCgogCiAK
IAoKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgogCiAKIAoKCgoKCiMgMjA2NCAiLi4vU3JjU2hhcmVk
L0VtUGFsbVN0cnVjdHMuaSIKCiAKIAogCgoKCgoKIyAyMTA2ICIuLi9TcmNTaGFyZWQvRW1QYWxt
U3RydWN0cy5pIgoKIAogCiAKCgoKCgojIDIxODIgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3Rz
LmkiCgogCiAKIAoKCgoKCiMgMjIwNCAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMuaSIKCiAK
IAogCgoKCgoKCgoKIAogCiAKCgoKCgojIDIyMzMgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3Rz
LmkiCgogCiAKIAoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCiMgMjI3MSAiLi4vU3JjU2hhcmVkL0Vt
UGFsbVN0cnVjdHMuaSIKCiAKIAogCgoKCgoKIyAyMjk4ICIuLi9TcmNTaGFyZWQvRW1QYWxtU3Ry
dWN0cy5pIgoKIAogCiAKCgoKCgojIDIzMjMgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmki
CgogCiAKIAoKCgoKCiMgMjM1MCAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMuaSIKCiAKIAog
CgoKCgoKIyAyMzcxICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAKCgoKCgoK
CgoKCgogCiAKIAoKCgoKCgoKCgoKCgoKIAogCiAKCgoKCgojIDI0MjYgIi4uL1NyY1NoYXJlZC9F
bVBhbG1TdHJ1Y3RzLmkiCgogCiAKIAoKCgoKCiMgMjQ0MyAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0
cnVjdHMuaSIKCiAKIAogCgoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCiMgMjQ3OSAiLi4vU3JjU2hh
cmVkL0VtUGFsbVN0cnVjdHMuaSIKCiAKIAogCgoKCgoKCgoKCgogCiAKIAoKCgoKCiMgMjUxMCAi
Li4vU3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMuaSIKCiAKIAogCgoKCgoKCgoKCiAKIAogCgoKCgoK
CgoKCgoKIAogCiAKCgoKCgojIDI1NTQgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmkiCgog
CiAKIAoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgogCiAKIAoKCgoK
CgoKCgoKIAogCiAKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCiAKIAog
CgoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCgogCiAKIAoKCgoKCgoK
CgogCiAKIAoKCgoKCgoKCgoKIAogCiAKCgoKCgojIDI3MjkgIi4uL1NyY1NoYXJlZC9FbVBhbG1T
dHJ1Y3RzLmkiCgogCiAKIAoKCgoKCgoKCgoKCgogCiAKIAoKCgoKCiMgMjc2MSAiLi4vU3JjU2hh
cmVkL0VtUGFsbVN0cnVjdHMuaSIKCiAKIAogCgoKCgoKCgoKCgogCiAKIAoKCgoKCgoKCgoKCgoK
IAogCiAKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCgogCiAKIAoKCgoK
CgoKCgoKIAogCiAKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKIAogCiAKCgoKCgojIDI4ODggIi4u
L1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmkiCgogCiAKIAoKCgoKCgoKCgoKCgogCiAKIAoKCgoK
CgoKCgogCiAKIAoKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKIAoKCgoKCiAKIAogCgoKCgoKIyAy
OTgxICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAKCgoKCgojIDMwMDQgIi4u
L1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmkiCgogCiAKIAoKCgoKCgoKCgoKCgogCiAKIAoKCgoK
CgoKCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCiAK
IAogCgoKCgoKCgoKCgogCiAKIAoKCgoKCiMgMzExMSAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0cnVj
dHMuaSIKCiAKIAogCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCgoKIAogCiAKCgoKCgoKCgoKIAog
CiAKCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKCiAKIAogCgoKCgoKCgoKIAogCiAKCgoKCgojIDMy
MDcgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmkiCgogCiAKIAoKCgoKCiMgMzIyNiAiLi4v
U3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMuaSIKCiAKIAogCgoKCgoKCgoKCgoKCiAKIAogCiAKIAoK
CgoKCiMgMzI2MyAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMuaSIKCiAKIAogCiAKIAogCiAK
CgoKCgojIDMzMDYgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmkiCgogCiAKIAogCgoKCgoK
IyAzMzUyICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAKIAogCgoKCgoKIyAz
NDAxICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAKIAogCgoKCgoKIyAzNDU0
ICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAKIAogCgoKCgoKIyAzNTA3ICIu
Li9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAKIAogCgoKCgoKIyAzNTYwICIuLi9T
cmNTaGFyZWQvRW1QYWxtU3RydWN0cy5pIgoKIAogCiAKIAogCiAKIAoKCgoKCiMgMzYxOSAiLi4v
U3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMuaSIKCiAKIAogCgoKCgoKCgoKCgoKCiAKIAogCgoKCgoK
CgoKIAogCiAKCgoKCgojIDM2NjUgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmkiCgogCiAK
IAoKCgoKCgoKCgogCiAKIAoKCgoKCiMgMzY5NCAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMu
aSIKCiAKIAogCgoKCgoKCgoKCgoKCiMgMTggIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmgi
IDIKCiMgMSAiLi4vU3JjU2hhcmVkL0hvc3RDb250cm9sLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKZXh0ZXJuICJDIiB7CgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCSAKCgoK
CgoKCgoKCSAKCgoKCgoKCgoKCgkgCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCSAK
CgoKIAoKCgoKCgoJIAoKCiAKCiAKIAogCgoJIAogCiAKIAoKCSAKIAogCiAKIAogCiAKIAogCiAK
IAoKIAogCiAKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgoKCSAKIAogCgoKIAoKCSAK
IAoKCgkgCgoKCgkgCgoKCgoKCgoKCSAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgkgCgoKCgoKCSAK
CgoKCgoJIAoKCgoKCgoKCgoKCgkgCgoKCgoKCgoKCgoJIAoKCgoKCgkgCgoKCgoKCgkgCgoKCgoK
CgoKCSAKCnR5cGVkZWYgVUludDE2CUhvc3RDb250cm9sU2VsZWN0b3JUeXBlOwp0eXBlZGVmIElu
dDMyCUhvc3RCb29sVHlwZTsKdHlwZWRlZiBJbnQzMglIb3N0Q2xvY2tUeXBlOwp0eXBlZGVmIElu
dDMyCUhvc3RFcnJUeXBlOwp0eXBlZGVmIEludDMyCUhvc3RJRFR5cGU7CnR5cGVkZWYgSW50MzIJ
SG9zdFBsYXRmb3JtVHlwZTsKdHlwZWRlZiBJbnQzMglIb3N0U2lnbmFsVHlwZTsKdHlwZWRlZiBJ
bnQzMglIb3N0U2l6ZVR5cGU7CnR5cGVkZWYgSW50MzIJSG9zdFRpbWVUeXBlOwoKCgkgCgpzdHJ1
Y3QgSG9zdERJUlR5cGUKewoJbG9uZwlfZmllbGQ7Cn07Cgp0eXBlZGVmIHN0cnVjdCBIb3N0RElS
VHlwZSBIb3N0RElSVHlwZTsKCgoJIAoKCgpzdHJ1Y3QgSG9zdERpckVudFR5cGUKewoJY2hhcglk
X25hbWVbMjU1ICArIDFdOwp9OwoKdHlwZWRlZiBzdHJ1Y3QgSG9zdERpckVudFR5cGUgSG9zdERp
ckVudFR5cGU7CgoKCSAKCnN0cnVjdCBIb3N0RklMRVR5cGUKewoJbG9uZwlfZmllbGQ7Cn07Cgp0
eXBlZGVmIHN0cnVjdCBIb3N0RklMRVR5cGUgSG9zdEZJTEVUeXBlOwoKCgkgCgpzdHJ1Y3QgSG9z
dEdyZW1saW5JbmZvVHlwZQp7Cglsb25nCQlmRmlyc3RHcmVtbGluOwoJbG9uZwkJZkxhc3RHcmVt
bGluOwoJbG9uZwkJZlNhdmVGcmVxdWVuY3k7Cglsb25nCQlmU3dpdGNoRGVwdGg7Cglsb25nCQlm
TWF4RGVwdGg7CgljaGFyCQlmQXBwTmFtZXNbMjAwXTsJIAoJCQkJCQkJCSAKCQkJCQkJCQkgCgkJ
CQkJCQkJIAoJCQkJCQkJCSAKCQkJCQkJCQkgCn07Cgp0eXBlZGVmIHN0cnVjdCBIb3N0R3JlbWxp
bkluZm9UeXBlIEhvc3RHcmVtbGluSW5mb1R5cGU7CgoKCSAKCSAKCSAKCSAKCnN0cnVjdCBIb3N0
U3RhdFR5cGUKewoJdW5zaWduZWQgbG9uZwlzdF9kZXZfOwoJdW5zaWduZWQgbG9uZwlzdF9pbm9f
OwoJdW5zaWduZWQgbG9uZwlzdF9tb2RlXzsKCXVuc2lnbmVkIGxvbmcJc3RfbmxpbmtfOwoJdW5z
aWduZWQgbG9uZwlzdF91aWRfOwoJdW5zaWduZWQgbG9uZwlzdF9naWRfOwoJdW5zaWduZWQgbG9u
ZwlzdF9yZGV2XzsKCUhvc3RUaW1lVHlwZQlzdF9hdGltZV87CglIb3N0VGltZVR5cGUJc3RfbXRp
bWVfOwoJSG9zdFRpbWVUeXBlCXN0X2N0aW1lXzsKCXVuc2lnbmVkIGxvbmcJc3Rfc2l6ZV87Cgl1
bnNpZ25lZCBsb25nCXN0X2Jsa3NpemVfOwoJdW5zaWduZWQgbG9uZwlzdF9ibG9ja3NfOwoJdW5z
aWduZWQgbG9uZwlzdF9mbGFnc187Cn07Cgp0eXBlZGVmIHN0cnVjdCBIb3N0U3RhdFR5cGUgSG9z
dFN0YXRUeXBlOwoKCgkgCgkgCgkgCgpzdHJ1Y3QgSG9zdFRtVHlwZQp7Cglsb25nCXRtX3NlY187
CSAKCWxvbmcJdG1fbWluXzsJIAoJbG9uZwl0bV9ob3VyXzsJIAoJbG9uZwl0bV9tZGF5XzsJIAoJ
bG9uZwl0bV9tb25fOwkgCglsb25nCXRtX3llYXJfOwkgCglsb25nCXRtX3dkYXlfOwkgCglsb25n
CXRtX3lkYXlfOwkgCglsb25nCXRtX2lzZHN0XzsJIAp9OwoKdHlwZWRlZiBzdHJ1Y3QgSG9zdFRt
VHlwZSBIb3N0VG1UeXBlOwoKCgkgCgkgCgkgCgpzdHJ1Y3QgSG9zdFVUaW1lVHlwZQp7CglIb3N0
VGltZVR5cGUJY3J0aW1lXzsJIAoJSG9zdFRpbWVUeXBlCWFjdGltZV87CSAKCUhvc3RUaW1lVHlw
ZQltb2R0aW1lXzsJIAp9OwoKdHlwZWRlZiBzdHJ1Y3QgSG9zdFVUaW1lVHlwZSBIb3N0VVRpbWVU
eXBlOwoKCgkgCgp0eXBlZGVmIEhvc3RDb250cm9sU2VsZWN0b3JUeXBlCUhvc3RDb250cm9sVHJh
cE51bWJlcjsKdHlwZWRlZiBIb3N0Qm9vbFR5cGUJCQlIb3N0Qm9vbDsKdHlwZWRlZiBIb3N0RXJy
VHlwZQkJCQlIb3N0RXJyOwp0eXBlZGVmIEhvc3RJRFR5cGUJCQkJSG9zdElEOwp0eXBlZGVmIEhv
c3RQbGF0Zm9ybVR5cGUJCUhvc3RQbGF0Zm9ybTsKdHlwZWRlZiBIb3N0U2lnbmFsVHlwZQkJCUhv
c3RTaWduYWw7CnR5cGVkZWYgSG9zdEZJTEVUeXBlCQkJSG9zdEZJTEU7CgoKCgoJCgoKCgoKCmVu
dW0JIAp7Cglob3N0RXJyTm9uZSA9IDAsCgoJaG9zdEVyckJhc2UgPSAweDFDMDAgLAoKCWhvc3RF
cnJVbmtub3duR2VzdGFsdFNlbGVjdG9yLAoJaG9zdEVyckRpc2tFcnJvciwKCWhvc3RFcnJPdXRP
Zk1lbW9yeSwKCWhvc3RFcnJNZW1SZWFkT3V0T2ZSYW5nZSwKCWhvc3RFcnJNZW1Xcml0ZU91dE9m
UmFuZ2UsCglob3N0RXJyTWVtSW52YWxpZFB0ciwKCWhvc3RFcnJJbnZhbGlkUGFyYW1ldGVyLAoJ
aG9zdEVyclRpbWVvdXQsCglob3N0RXJySW52YWxpZERldmljZVR5cGUsCglob3N0RXJySW52YWxp
ZFJBTVNpemUsCglob3N0RXJyRmlsZU5vdEZvdW5kLAoJaG9zdEVyclJQQ0NhbGwsCQkJCSAKCQkJ
CQkJCQkgCgkJCQkJCQkJIAoJCQkJCQkJCSAKCQkJCQkJCQkgCgkJCQkJCQkJIAoJCQkJCQkJCSAK
CWhvc3RFcnJTZXNzaW9uUnVubmluZywJCSAKCQkJCQkJCQkgCglob3N0RXJyU2Vzc2lvbk5vdFJ1
bm5pbmcsCSAKCWhvc3RFcnJOb1NpZ25hbFdhaXRlcnMsCQkgCglob3N0RXJyU2Vzc2lvbk5vdFBh
dXNlZCwJIAoJCQkJCQkJCSAKCQoJaG9zdEVyclBlcm1pc3Npb25zLAoJaG9zdEVyckZpbGVOYW1l
VG9vTG9uZywKCWhvc3RFcnJOb3RBRGlyZWN0b3J5LAoJaG9zdEVyclRvb01hbnlGaWxlcywKCWhv
c3RFcnJGaWxlVG9vQmlnLAoJaG9zdEVyclJlYWRPbmx5RlMsCglob3N0RXJySXNEaXJlY3Rvcnks
Cglob3N0RXJyRXhpc3RzLAoJaG9zdEVyck9wTm90QXZhaWxhYmxlLAoJaG9zdEVyckRpck5vdEVt
cHR5LAoJaG9zdEVyckRpc2tGdWxsLAoJaG9zdEVyclByb2ZpbGluZ05vdFJlYWR5LAoJaG9zdEVy
clVua25vd25FcnJvcgp9OwoKCmVudW0JIAp7Cglob3N0SURQYWxtT1MsCQkJIAoJaG9zdElEUGFs
bU9TRW11bGF0b3IsCSAKCWhvc3RJRFBhbG1PU1NpbXVsYXRvcgkgCn07CgoKZW51bQkgCnsKCWhv
c3RQbGF0Zm9ybVBhbG1PUywKCWhvc3RQbGF0Zm9ybVdpbmRvd3MsCglob3N0UGxhdGZvcm1NYWNp
bnRvc2gsCglob3N0UGxhdGZvcm1Vbml4Cn07CgplbnVtCSAKewoJaG9zdFNpZ25hbFJlc2VydmVk
LAoJaG9zdFNpZ25hbElkbGUsCglob3N0U2lnbmFsUXVpdCwKIyA0OTQgIi4uL1NyY1NoYXJlZC9I
b3N0Q29udHJvbC5oIgoKCWhvc3RTaWduYWxVc2VyCT0gMHg0MDAwCSAKfTsKCmVudW0JIAp7Cglo
b3N0RmlsZUF0dHJSZWFkT25seSA9IDEsCglob3N0RmlsZUF0dHJIaWRkZW4gPSAyLAoJaG9zdEZp
bGVBdHRyU3lzdGVtID0gNAp9OwoKIAogCgoKCgoKIAoKCgoKCgogCgoKCgoKCiMgNTM0ICIuLi9T
cmNTaGFyZWQvSG9zdENvbnRyb2wuaCIKCgoKIAogCiAKCkludDMyCQkJCUhvc3RHZXRIb3N0VmVy
c2lvbih2b2lkKQoJCQkJCQkgIDsKCkhvc3RJRFR5cGUJCQlIb3N0R2V0SG9zdElEKHZvaWQpCgkJ
CQkJCSAgOwoKSG9zdFBsYXRmb3JtVHlwZQlIb3N0R2V0SG9zdFBsYXRmb3JtKHZvaWQpCgkJCQkJ
CSAgOwoKSG9zdEJvb2xUeXBlCQlIb3N0SXNTZWxlY3RvckltcGxlbWVudGVkKGxvbmcgc2VsZWN0
b3IpCgkJCQkJCSAgOwoKSG9zdEVyclR5cGUJCQlIb3N0R2VzdGFsdChsb25nIGdlc3RTZWwsIGxv
bmcqIHJlc3BvbnNlKQoJCQkJCQkgIDsKCkhvc3RCb29sVHlwZQkJSG9zdElzQ2FsbGluZ1RyYXAo
dm9pZCkKCQkJCQkJICA7CgoKIAogCiAKCkhvc3RFcnJUeXBlCQkJSG9zdFByb2ZpbGVJbml0KGxv
bmcgbWF4Q2FsbHMsIGxvbmcgbWF4RGVwdGgpCgkJCQkJCSAgOwoKSG9zdEVyclR5cGUJCQlIb3N0
UHJvZmlsZURldGFpbEZuKHZvaWQqIGFkZHIsIEhvc3RCb29sVHlwZSBsb2dEZXRhaWxzKQoJCQkJ
CQkgIDsKCkhvc3RFcnJUeXBlCQkJSG9zdFByb2ZpbGVTdGFydCh2b2lkKQoJCQkJCQkgIDsKCkhv
c3RFcnJUeXBlCQkJSG9zdFByb2ZpbGVTdG9wKHZvaWQpCgkJCQkJCSAgOwoKSG9zdEVyclR5cGUJ
CQlIb3N0UHJvZmlsZUR1bXAoY29uc3QgY2hhciogZmlsZW5hbWVQKQoJCQkJCQkgIDsKCkhvc3RF
cnJUeXBlCQkJSG9zdFByb2ZpbGVDbGVhbnVwKHZvaWQpCgkJCQkJCSAgOwoKbG9uZwkJCQlIb3N0
UHJvZmlsZUdldEN5Y2xlcyh2b2lkKQoJCQkJCQkgIDsKCgogCiAKIAoKbG9uZwkJCQlIb3N0RXJy
Tm8odm9pZCkKCQkJCQkJICA7CgoKbG9uZwkJCQlIb3N0RkNsb3NlKEhvc3RGSUxFVHlwZSogZmls
ZVApCgkJCQkJCSAgOwoKbG9uZwkJCQlIb3N0RkVPRihIb3N0RklMRVR5cGUqIGZpbGVQKQoJCQkJ
CQkgIDsKCmxvbmcJCQkJSG9zdEZFcnJvcihIb3N0RklMRVR5cGUqIGZpbGVQKQoJCQkJCQkgIDsK
CmxvbmcJCQkJSG9zdEZGbHVzaChIb3N0RklMRVR5cGUqIGZpbGVQKQoJCQkJCQkgIDsKCmxvbmcJ
CQkJSG9zdEZHZXRDKEhvc3RGSUxFVHlwZSogZmlsZVApCgkJCQkJCSAgOwoKbG9uZwkJCQlIb3N0
RkdldFBvcyhIb3N0RklMRVR5cGUqIGZpbGVQLCBsb25nKiBwb3NQKQoJCQkJCQkgIDsKCmNoYXIq
CQkJCUhvc3RGR2V0UyhjaGFyKiBzLCBsb25nIG4sIEhvc3RGSUxFVHlwZSogZmlsZVApCgkJCQkJ
CSAgOwoKSG9zdEZJTEVUeXBlKgkJSG9zdEZPcGVuKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNo
YXIqIG1vZGUpCgkJCQkJCSAgOwoKbG9uZwkJCQlIb3N0RlByaW50RihIb3N0RklMRVR5cGUqIGZp
bGVQLCBjb25zdCBjaGFyKiBmbXQsIC4uLikKCQkJCQkJICA7Cgpsb25nCQkJCUhvc3RGUHV0Qyhs
b25nIGMsIEhvc3RGSUxFVHlwZSogZmlsZVApCgkJCQkJCSAgOwoKbG9uZwkJCQlIb3N0RlB1dFMo
Y29uc3QgY2hhciogcywgSG9zdEZJTEVUeXBlKiBmaWxlUCkKCQkJCQkJICA7Cgpsb25nCQkJCUhv
c3RGUmVhZCh2b2lkKiBidWZmZXIsIGxvbmcgc2l6ZSwgbG9uZyBjb3VudCwgSG9zdEZJTEVUeXBl
KiBmaWxlUCkKCQkJCQkJICA7CgpIb3N0RklMRVR5cGUqCQlIb3N0RlJlb3Blbihjb25zdCBjaGFy
KiBuYW1lLCBjb25zdCBjaGFyKiBtb2RlLCBIb3N0RklMRVR5cGUqIGZpbGVQKQoJCQkJCQkgIDsK
CmxvbmcJCQkJSG9zdEZTY2FuRihIb3N0RklMRVR5cGUqIGZpbGVQLCBjb25zdCBjaGFyKiBmbXQs
IC4uLikKCQkJCQkJICA7Cgpsb25nCQkJCUhvc3RGU2VlayhIb3N0RklMRVR5cGUqIGZpbGVQLCBs
b25nIG9mZnNldCwgbG9uZyBvcmlnaW4pCgkJCQkJCSAgOwoKbG9uZwkJCQlIb3N0RlNldFBvcyhI
b3N0RklMRVR5cGUqIGZpbGVQLCBsb25nKiBwb3MpCgkJCQkJCSAgOwoKbG9uZwkJCQlIb3N0RlRl
bGwoSG9zdEZJTEVUeXBlKiBmaWxlUCkKCQkJCQkJICA7Cgpsb25nCQkJCUhvc3RGV3JpdGUoY29u
c3Qgdm9pZCogYnVmZmVyLCBsb25nIHNpemUsIGxvbmcgY291bnQsIEhvc3RGSUxFVHlwZSogZmls
ZVApCgkJCQkJCSAgOwoKbG9uZwkJCQlIb3N0UmVtb3ZlKGNvbnN0IGNoYXIqIG5hbWVQKQoJCQkJ
CQkgIDsKCmxvbmcJCQkJSG9zdFJlbmFtZShjb25zdCBjaGFyKiBvbGROYW1lUCwgY29uc3QgY2hh
ciogbmV3TmFtZVApCgkJCQkJCSAgOwoKSG9zdEZJTEVUeXBlKgkJSG9zdFRtcEZpbGUodm9pZCkK
CQkJCQkJICA7CgpjaGFyKgkJCQlIb3N0VG1wTmFtKGNoYXIqIG5hbWVQKQoJCQkJCQkgIDsKCmNo
YXIqCQkJCUhvc3RHZXRFbnYoY29uc3QgY2hhciogbmFtZVApCgkJCQkJCSAgOwoKCnZvaWQqCQkJ
CUhvc3RNYWxsb2MobG9uZyBzaXplKQoJCQkJCQkgIDsKCnZvaWQqCQkJCUhvc3RSZWFsbG9jKHZv
aWQqIHAsIGxvbmcgc2l6ZSkKCQkJCQkJICA7Cgp2b2lkCQkJCUhvc3RGcmVlKHZvaWQqIHApCgkJ
CQkJCSAgOwoKCmNoYXIqCQkJCUhvc3RBc2NUaW1lKGNvbnN0IEhvc3RUbVR5cGUqKQoJCQkJCQkg
IDsKCkhvc3RDbG9ja1R5cGUJCUhvc3RDbG9jayh2b2lkKQoJCQkJCQkgIDsKCmNoYXIqCQkJCUhv
c3RDVGltZShjb25zdCBIb3N0VGltZVR5cGUqKQoJCQkJCQkgIDsKCiAKIAoKSG9zdFRtVHlwZSoJ
CQlIb3N0R01UaW1lKGNvbnN0IEhvc3RUaW1lVHlwZSopCgkJCQkJCSAgOwoKSG9zdFRtVHlwZSoJ
CQlIb3N0TG9jYWxUaW1lKGNvbnN0IEhvc3RUaW1lVHlwZSopCgkJCQkJCSAgOwoKSG9zdFRpbWVU
eXBlCQlIb3N0TWtUaW1lKEhvc3RUbVR5cGUqKQoJCQkJCQkgIDsKCkhvc3RTaXplVHlwZQkJSG9z
dFN0ckZUaW1lKGNoYXIqLCBIb3N0U2l6ZVR5cGUsIGNvbnN0IGNoYXIqLCBjb25zdCBIb3N0VG1U
eXBlKikKCQkJCQkJICA7CgpIb3N0VGltZVR5cGUJCUhvc3RUaW1lKEhvc3RUaW1lVHlwZSopCgkJ
CQkJCSAgOwoKCmxvbmcJCQkJSG9zdE1rRGlyKGNvbnN0IGNoYXIqKQoJCQkJCQkgIDsKCmxvbmcJ
CQkJSG9zdFJtRGlyKGNvbnN0IGNoYXIqKQoJCQkJCQkgIDsKCkhvc3RESVJUeXBlKgkJSG9zdE9w
ZW5EaXIoY29uc3QgY2hhciopCgkJCQkJCSAgOwoKSG9zdERpckVudFR5cGUqCQlIb3N0UmVhZERp
cihIb3N0RElSVHlwZSopCgkJCQkJCSAgOwoKbG9uZwkJCQlIb3N0Q2xvc2VEaXIoSG9zdERJUlR5
cGUqKQoJCQkJCQkgIDsKCgpsb25nCQkJCUhvc3RTdGF0KGNvbnN0IGNoYXIqLCBIb3N0U3RhdFR5
cGUqKQoJCQkJCQkgIDsKCmxvbmcJCQkJSG9zdFRydW5jYXRlKGNvbnN0IGNoYXIqLCBsb25nKQoJ
CQkJCQkgIDsKCgpsb25nCQkJCUhvc3RVVGltZSAoY29uc3QgY2hhciosIEhvc3RVVGltZVR5cGUq
KQoJCQkJCQkgIDsKCmxvbmcJCQkJSG9zdEdldEZpbGVBdHRyKGNvbnN0IGNoYXIqLCBsb25nKikK
CQkJCQkJICA7Cgpsb25nCQkJCUhvc3RTZXRGaWxlQXR0cihjb25zdCBjaGFyKiwgbG9uZykKCQkJ
CQkJICA7CgoKIAogCiAKCkhvc3RCb29sVHlwZQkJSG9zdEdyZW1saW5Jc1J1bm5pbmcodm9pZCkK
CQkJCQkJICA7Cgpsb25nCQkJCUhvc3RHcmVtbGluTnVtYmVyKHZvaWQpCgkJCQkJCSAgOwoKbG9u
ZwkJCQlIb3N0R3JlbWxpbkNvdW50ZXIodm9pZCkKCQkJCQkJICA7Cgpsb25nCQkJCUhvc3RHcmVt
bGluTGltaXQodm9pZCkKCQkJCQkJICA7CgpIb3N0RXJyVHlwZQkJCUhvc3RHcmVtbGluTmV3KGNv
bnN0IEhvc3RHcmVtbGluSW5mb1R5cGUqKQoJCQkJCQkgIDsKCgogCiAKIAoKSG9zdEVyclR5cGUJ
CQlIb3N0SW1wb3J0RmlsZShjb25zdCBjaGFyKiBmaWxlTmFtZSwgbG9uZyBjYXJkTnVtKQoJCQkJ
CQkgIDsKCkhvc3RFcnJUeXBlCQkJSG9zdEltcG9ydEZpbGVXaXRoSUQoY29uc3QgY2hhciogZmls
ZU5hbWUsIGxvbmcgY2FyZE51bSwgTG9jYWxJRCogbmV3SURQKQoJCQkJCQkgIDsKCkhvc3RFcnJU
eXBlCQkJSG9zdEV4cG9ydEZpbGUoY29uc3QgY2hhciogZmlsZU5hbWUsIGxvbmcgY2FyZE51bSwg
Y29uc3QgY2hhciogZGJOYW1lKQoJCQkJCQkgIDsKCkhvc3RFcnJUeXBlCQkJSG9zdFNhdmVTY3Jl
ZW4oY29uc3QgY2hhciogZmlsZU5hbWUpCgkJCQkJCSAgOwoKCSAKCSAKCkVycgkJCQkJSG9zdEV4
Z0xpYk9wZW4JCQkoVUludDE2IGxpYlJlZk51bSkKCQkJCQkJICA7CgpFcnIJCQkJCUhvc3RFeGdM
aWJDbG9zZQkJCShVSW50MTYgbGliUmVmTnVtKQoJCQkJCQkgIDsKCkVycgkJCQkJSG9zdEV4Z0xp
YlNsZWVwCQkJKFVJbnQxNiBsaWJSZWZOdW0pCgkJCQkJCSAgOwoKRXJyCQkJCQlIb3N0RXhnTGli
V2FrZQkJCShVSW50MTYgbGliUmVmTnVtKQoJCQkJCQkgIDsKCkJvb2xlYW4JCQkJSG9zdEV4Z0xp
YkhhbmRsZUV2ZW50CShVSW50MTYgbGliUmVmTnVtLCB2b2lkKiBldmVudFApCgkJCQkJCSAgOwoK
RXJyCSAJCQkJSG9zdEV4Z0xpYkNvbm5lY3QJCShVSW50MTYgbGliUmVmTnVtLCB2b2lkKiBleGdT
b2NrZXRQKQoJCQkJCQkgIDsKCkVycgkJCQkJSG9zdEV4Z0xpYkFjY2VwdAkJKFVJbnQxNiBsaWJS
ZWZOdW0sIHZvaWQqIGV4Z1NvY2tldFApCgkJCQkJCSAgOwoKRXJyCQkJCQlIb3N0RXhnTGliRGlz
Y29ubmVjdAkoVUludDE2IGxpYlJlZk51bSwgdm9pZCogZXhnU29ja2V0UCxFcnIgZXJyb3IpCgkJ
CQkJCSAgOwoKRXJyCQkJCQlIb3N0RXhnTGliUHV0CQkJKFVJbnQxNiBsaWJSZWZOdW0sIHZvaWQq
IGV4Z1NvY2tldFApCgkJCQkJCSAgOwoKRXJyCQkJCQlIb3N0RXhnTGliR2V0CQkJKFVJbnQxNiBs
aWJSZWZOdW0sIHZvaWQqIGV4Z1NvY2tldFApCgkJCQkJCSAgOwoKVUludDMyIAkJCQlIb3N0RXhn
TGliU2VuZAkJCShVSW50MTYgbGliUmVmTnVtLCB2b2lkKiBleGdTb2NrZXRQLCBjb25zdCB2b2lk
KiBjb25zdCBidWZQLCBjb25zdCBVSW50MzIgYnVmTGVuLCBFcnIqIGVyclApCgkJCQkJCSAgOwoK
VUludDMyIAkJCQlIb3N0RXhnTGliUmVjZWl2ZQkJKFVJbnQxNiBsaWJSZWZOdW0sIHZvaWQqIGV4
Z1NvY2tldFAsIHZvaWQqIGJ1ZlAsIGNvbnN0IFVJbnQzMiBidWZTaXplLCBFcnIqIGVyclApCgkJ
CQkJCSAgOwoKRXJyIAkJCQlIb3N0RXhnTGliQ29udHJvbAkJKFVJbnQxNiBsaWJSZWZOdW0sIFVJ
bnQxNiBvcCwgdm9pZCogdmFsdWVQLCBVSW50MTYqIHZhbHVlTGVuUCkKCQkJCQkJICA7CgpFcnIg
CQkJCUhvc3RFeGdMaWJSZXF1ZXN0CQkoVUludDE2IGxpYlJlZk51bSwgdm9pZCogZXhnU29ja2V0
UCkKCQkJCQkJICA7CgoKIAogCiAKCkhvc3RCb29sVHlwZQkJSG9zdEdldFByZWZlcmVuY2UoY29u
c3QgY2hhciosIGNoYXIqKQoJCQkJCQkgIDsKCnZvaWQJCQkJSG9zdFNldFByZWZlcmVuY2UoY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqKQoJCQkJCQkgIDsKCgogCiAKIAoKSG9zdEZJTEVUeXBlKgkJ
SG9zdExvZ0ZpbGUodm9pZCkKCQkJCQkJICA7Cgp2b2lkCQkJCUhvc3RTZXRMb2dGaWxlU2l6ZShs
b25nKQoJCQkJCQkgIDsKCgogCiAKIAoKSG9zdEVyclR5cGUJCQlIb3N0U2Vzc2lvbkNyZWF0ZShj
b25zdCBjaGFyKiBkZXZpY2UsIGxvbmcgcmFtU2l6ZSwgY29uc3QgY2hhciogcm9tUGF0aCkKCQkJ
CQkJICA7CgpIb3N0RXJyVHlwZQkJCUhvc3RTZXNzaW9uT3Blbihjb25zdCBjaGFyKiBwc2ZGaWxl
TmFtZSkKCQkJCQkJICA7CgpIb3N0Qm9vbFR5cGUJCUhvc3RTZXNzaW9uU2F2ZShjb25zdCBjaGFy
KiBzYXZlRmlsZU5hbWUpCgkJCQkJCSAgOwoKSG9zdEVyclR5cGUJCQlIb3N0U2Vzc2lvbkNsb3Nl
KGNvbnN0IGNoYXIqIHNhdmVGaWxlTmFtZSkKCQkJCQkJICA7CgpIb3N0RXJyVHlwZQkJCUhvc3RT
ZXNzaW9uUXVpdCh2b2lkKQoJCQkJCQkgIDsKCkhvc3RFcnJUeXBlCQkJSG9zdFNpZ25hbFNlbmQo
SG9zdFNpZ25hbFR5cGUgc2lnbmFsTnVtYmVyKQoJCQkJCQkgIDsKCkhvc3RFcnJUeXBlCQkJSG9z
dFNpZ25hbFdhaXQobG9uZyB0aW1lb3V0LCBIb3N0U2lnbmFsVHlwZSogc2lnbmFsTnVtYmVyKQoJ
CQkJCQkgIDsKCkhvc3RFcnJUeXBlCQkJSG9zdFNpZ25hbFJlc3VtZSh2b2lkKQoJCQkJCQkgIDsK
CgogCiAKIAoKdm9pZAkJCQlIb3N0VHJhY2VJbml0KHZvaWQpCgkJCQkJCSAgOwoKdm9pZAkJCQlI
b3N0VHJhY2VDbG9zZSh2b2lkKQoJCQkJCQkgIDsKCnZvaWQJCQkJSG9zdFRyYWNlT3V0cHV0VCh1
bnNpZ25lZCBzaG9ydCwgY29uc3QgY2hhciosIC4uLikKCQkJCQkJICA7Cgp2b2lkCQkJCUhvc3RU
cmFjZU91dHB1dFRMKHVuc2lnbmVkIHNob3J0LCBjb25zdCBjaGFyKiwgLi4uKQoJCQkJCQkgIDsK
CnZvaWQJCQkJSG9zdFRyYWNlT3V0cHV0VlQodW5zaWduZWQgc2hvcnQsIGNvbnN0IGNoYXIqLCBj
aGFyKiAgKQoJCQkJCQkgIDsKCnZvaWQJCQkJSG9zdFRyYWNlT3V0cHV0VlRMKHVuc2lnbmVkIHNo
b3J0LCBjb25zdCBjaGFyKiwgY2hhciogICkKCQkJCQkJICA7Cgp2b2lkCQkJCUhvc3RUcmFjZU91
dHB1dEIodW5zaWduZWQgc2hvcnQsIGNvbnN0IHZvaWQqLCBIb3N0U2l6ZVR5cGUpCgkJCQkJCSAg
OwoKCiAKIAogCgpIb3N0RXJyCQkJCUhvc3REYmdTZXREYXRhQnJlYWsgKFVJbnQzMiBhZGRyLCBV
SW50MzIgc2l6ZSkKCQkJCQkJICA7CgpIb3N0RXJyCQkJCUhvc3REYmdDbGVhckRhdGFCcmVhayAo
dm9pZCkKCQkJCQkJICA7CgoKIAogCiAKCmxvbmcJCQkJSG9zdFNsb3RNYXgodm9pZCkKCQkJCQkJ
ICA7Cgpjb25zdCBjaGFyKgkJCUhvc3RTbG90Um9vdChsb25nIHNsb3RObykKCQkJCQkJICA7CgpI
b3N0Qm9vbFR5cGUJCUhvc3RTbG90SGFzQ2FyZChsb25nIHNsb3RObykKCQkJCQkJICA7CgoKIAog
CiAKCmNvbnN0IGNoYXIqCQkJSG9zdEdldEZpbGUoY29uc3QgY2hhciogcHJvbXB0LCBjb25zdCBj
aGFyKiBkZWZhdWx0RGlyKQoJCQkJCQkgIDsKCmNvbnN0IGNoYXIqCQkJSG9zdFB1dEZpbGUoY29u
c3QgY2hhciogcHJvbXB0LCBjb25zdCBjaGFyKiBkZWZhdWx0RGlyLCBjb25zdCBjaGFyKiBkZWZh
dWx0TmFtZSkKCQkJCQkJICA7Cgpjb25zdCBjaGFyKgkJCUhvc3RHZXREaXJlY3RvcnkoY29uc3Qg
Y2hhciogcHJvbXB0LCBjb25zdCBjaGFyKiBkZWZhdWx0RGlyKQoJCQkJCQkgIDsKCgp9CgoKCiMg
MTkgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmgiIDIKCgojIDEgIi91c3IvbG9jYWwvbGli
L2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEg
MyA0CiMgMzQyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKCiMgMjEgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1
Y3RzLmgiIDIKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgppbnQJCUJhZEdldHRlciAodm9pZCk7
CnZvaWQJQmFkU2V0dGVyICh2b2lkKTsKCiMgMjg3ICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0
cy5oIgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKY2xhc3MgTEFTCnsK
CXB1YmxpYzoKCQl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwoKCQlpbmxpbmUgc3RhdGljIHVpbnQ4
CQlHZXRCeXRlIChwdHJfdHlwZSBwKQkJCQkJeyByZXR1cm4gKHVpbnQ4KSAodW5zaWduZWQgY2hh
cikoCSgoKHVuc2lnbmVkIGNoYXIpKCh1bnNpZ25lZCBjaGFyKikoIHAgKSlbMF0pIDw8ICAwKQkp
IDsgfQoJCWlubGluZSBzdGF0aWMgdWludDE2CUdldFdvcmQgKHB0cl90eXBlIHApCQkJCQl7IHJl
dHVybiAodWludDE2KSAodW5zaWduZWQgc2hvcnQpKAkoKCh1bnNpZ25lZCBzaG9ydCkoKHVuc2ln
bmVkIGNoYXIqKSggcCApKVswXSkgPDwgIDgpIHwJKCgodW5zaWduZWQgc2hvcnQpKCh1bnNpZ25l
ZCBjaGFyKikoIHAgKSlbMV0pIDw8ICAwKQkpIDsgfQoJCWlubGluZSBzdGF0aWMgdWludDMyCUdl
dExvbmcgKHB0cl90eXBlIHApCQkJCQl7IHJldHVybiAodWludDMyKSAodW5zaWduZWQgbG9uZyko
CSgoKHVuc2lnbmVkIGxvbmcpKCh1bnNpZ25lZCBjaGFyKikoIHAgKSlbMF0pIDw8IDI0KSB8CSgo
KHVuc2lnbmVkIGxvbmcpKCh1bnNpZ25lZCBjaGFyKikoIHAgKSlbMV0pIDw8IDE2KSB8CSgoKHVu
c2lnbmVkIGxvbmcpKCh1bnNpZ25lZCBjaGFyKikoIHAgKSlbMl0pIDw8ICA4KSB8CSgoKHVuc2ln
bmVkIGxvbmcpKCh1bnNpZ25lZCBjaGFyKikoIHAgKSlbM10pIDw8ICAwKQkpIDsgfQoJCWlubGlu
ZSBzdGF0aWMgdm9pZAkJUHV0Qnl0ZSAocHRyX3R5cGUgcCwgY29uc3QgdWludDggdikJCXsgZG8g
eyAoKHVuc2lnbmVkIGNoYXIqKSggcCApKVswXSA9ICh1bnNpZ25lZCBjaGFyKSggIHYgKTsJfSB3
aGlsZSgwKSA7IH0KCQlpbmxpbmUgc3RhdGljIHZvaWQJCVB1dFdvcmQgKHB0cl90eXBlIHAsIGNv
bnN0IHVpbnQxNiB2KQl7IGRvIHsgKCh1bnNpZ25lZCBjaGFyKikoIHAgKSlbMF0gPSAodW5zaWdu
ZWQgY2hhcikoKCh1bnNpZ25lZCBzaG9ydCkoICB2ICkpID4+IDgpOwkoKHVuc2lnbmVkIGNoYXIq
KSggcCApKVsxXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHVuc2lnbmVkIHNob3J0KSggIHYgKSkgPj4g
MCk7CX0gd2hpbGUoMCkgOyB9CgkJaW5saW5lIHN0YXRpYyB2b2lkCQlQdXRMb25nIChwdHJfdHlw
ZSBwLCBjb25zdCB1aW50MzIgdikJeyBkbyB7ICgodW5zaWduZWQgY2hhciopKCBwICkpWzBdID0g
KHVuc2lnbmVkIGNoYXIpKCgodW5zaWduZWQgbG9uZykoICB2ICkpID4+IDI0KTsJKCh1bnNpZ25l
ZCBjaGFyKikoIHAgKSlbMV0gPSAodW5zaWduZWQgY2hhcikoKCh1bnNpZ25lZCBsb25nKSggIHYg
KSkgPj4gMTYpOwkoKHVuc2lnbmVkIGNoYXIqKSggcCApKVsyXSA9ICh1bnNpZ25lZCBjaGFyKSgo
KHVuc2lnbmVkIGxvbmcpKCAgdiApKSA+PiAgOCk7CSgodW5zaWduZWQgY2hhciopKCBwICkpWzNd
ID0gKHVuc2lnbmVkIGNoYXIpKCgodW5zaWduZWQgbG9uZykoICB2ICkpID4+ICAwKTsJfSB3aGls
ZSgwKSA7IH0KCgkJaW5saW5lIHN0YXRpYyB2b2lkCQlCbG9ja0NvcHkgKHB0cl90eXBlIGQsIHB0
cl90eXBlIHMsIHNpemVfdCBsZW4pCgkJCQkJCQkJCQkJCQkJCQkJCXsgbWVtY3B5IChkLCBzLCBs
ZW4pOyB9CgoJCWlubGluZSBzdGF0aWMgcHRyX3R5cGUJYWRkIChwdHJfdHlwZSBwLCBwdHJkaWZm
X3QgZGlmZikKCQkJCQkJCQkJCQkJCQkJCQkJeyByZXR1cm4gKHB0cl90eXBlKSgoKHNpemVfdClw
KSArIGRpZmYpOyB9CgkJaW5saW5lIHN0YXRpYyBwdHJkaWZmX3QJZGlmZiAocHRyX3R5cGUgYSwg
cHRyX3R5cGUgYikKCQkJCQkJCQkJCQkJCQkJCQkJeyByZXR1cm4gKHB0cmRpZmZfdCkoKChwdHJk
aWZmX3QpYSkgLSAocHRyZGlmZl90KWIpOyB9Cn07CgoKIAoKY2xhc3MgUEFTCnsKCXB1YmxpYzoK
CQl0eXBlZGVmIGVtdXB0ciBwdHJfdHlwZTsKCgkJaW5saW5lIHN0YXRpYyB1aW50OAkJR2V0Qnl0
ZSAocHRyX3R5cGUgcCkJCQkJCXsgcmV0dXJuICh1aW50OCkgRW1NZW1HZXQ4IChwKTsgfQoJCWlu
bGluZSBzdGF0aWMgdWludDE2CUdldFdvcmQgKHB0cl90eXBlIHApCQkJCQl7IHJldHVybiAodWlu
dDE2KSBFbU1lbUdldDE2IChwKTsgfQoJCWlubGluZSBzdGF0aWMgdWludDMyCUdldExvbmcgKHB0
cl90eXBlIHApCQkJCQl7IHJldHVybiAodWludDMyKSBFbU1lbUdldDMyIChwKTsgfQoJCWlubGlu
ZSBzdGF0aWMgdm9pZAkJUHV0Qnl0ZSAocHRyX3R5cGUgcCwgY29uc3QgdWludDggdikJCXsgRW1N
ZW1QdXQ4IChwLCB2KTsgfQoJCWlubGluZSBzdGF0aWMgdm9pZAkJUHV0V29yZCAocHRyX3R5cGUg
cCwgY29uc3QgdWludDE2IHYpCXsgRW1NZW1QdXQxNiAocCwgdik7IH0KCQlpbmxpbmUgc3RhdGlj
IHZvaWQJCVB1dExvbmcgKHB0cl90eXBlIHAsIGNvbnN0IHVpbnQzMiB2KQl7IEVtTWVtUHV0MzIg
KHAsIHYpOyB9CgoJCWlubGluZSBzdGF0aWMgdm9pZAkJQmxvY2tDb3B5IChwdHJfdHlwZSBkLCBw
dHJfdHlwZSBzLCBzaXplX3QgbGVuKQoJCQkJCQkJCQkJCQkJCQkJCQl7IEVtTWVtX21lbWNweSAo
ZCwgcywgbGVuKTsgfQoKCQlpbmxpbmUgc3RhdGljIHB0cl90eXBlCWFkZCAocHRyX3R5cGUgcCwg
cHRyZGlmZl90IGRpZmYpCgkJCQkJCQkJCQkJCQkJCQkJCXsgcmV0dXJuIChwdHJfdHlwZSkoKChz
aXplX3QpcCkgKyBkaWZmKTsgfQoJCWlubGluZSBzdGF0aWMgcHRyZGlmZl90IGRpZmYgKHB0cl90
eXBlIGEsIHB0cl90eXBlIGIpCgkJCQkJCQkJCQkJCQkJCQkJCXsgcmV0dXJuIChwdHJkaWZmX3Qp
KCgocHRyZGlmZl90KWEpIC0gKHB0cmRpZmZfdCliKTsgfQp9OwoKCiAKIAogCgoKIyA0MTYgIi4u
L1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmgiCgoKIyA0NTYgIi4uL1NyY1NoYXJlZC9FbVBhbG1T
dHJ1Y3RzLmgiCgoKCgoKCiMgNTIwICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5oIgoKCiMg
NTY4ICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5oIgoKCgoKCiAKCgojIDU4NyAiLi4vU3Jj
U2hhcmVkL0VtUGFsbVN0cnVjdHMuaCIKCgojIDU5OSAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0cnVj
dHMuaCIKCgogCiAKIAoKCiMgNjMzICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5oIgoKCiMg
NjYxICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5oIgoKCgoKCgojIDcxMSAiLi4vU3JjU2hh
cmVkL0VtUGFsbVN0cnVjdHMuaCIKCgojIDc0NiAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMu
aCIKCgoKCgogCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdWludDgJ
VUlPcHRpb25zVHlwZTsKdHlwZWRlZiB1aW50OAlTY3JPcGVyYXRpb247CgoKIyA3OTUgIi4uL1Ny
Y1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmgiCgoKIyA4MDggIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1
Y3RzLmgiCgoKIyA4MTkgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmgiCgoKIyA4MzEgIi4u
L1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmgiCgoKCgoKCgoKCiMgODU5ICIuLi9TcmNTaGFyZWQv
RW1QYWxtU3RydWN0cy5oIgoKCgoKCgoKCgogIAoKIyA4NzkgIi4uL1NyY1NoYXJlZC9FbVBhbG1T
dHJ1Y3RzLmgiCgoKIyA4OTQgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmgiCgoKIyA5MTEg
Ii4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmgiCgoKIyA5MjUgIi4uL1NyY1NoYXJlZC9FbVBh
bG1TdHJ1Y3RzLmgiCgoKIyA5NDAgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmgiCgoKIyA5
NjIgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmgiCgoKIyAxMDA5ICIuLi9TcmNTaGFyZWQv
RW1QYWxtU3RydWN0cy5oIgoKCiMgMTAyNiAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0cnVjdHMuaCIK
CgojIDEwNDUgIi4uL1NyY1NoYXJlZC9FbVBhbG1TdHJ1Y3RzLmgiCgoKIyAxMDc2ICIuLi9TcmNT
aGFyZWQvRW1QYWxtU3RydWN0cy5oIgoKCiMgMTA5NCAiLi4vU3JjU2hhcmVkL0VtUGFsbVN0cnVj
dHMuaCIKCgoKCgkKCgogdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNjaGFyICAJewlw
dWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNjaGFy
ICAgKHB0cl90eXBlKTsJRW1BbGlhc2NoYXIgICAoY29uc3QgRW1BbGlhc2NoYXIgIDxBPiYpOwlw
dHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6
ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNpemVvZiAoICAgIGNoYXIgICk7IH0JRW1B
bGlhc2NoYXIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBib29sKTsJRW1BbGlhc2NoYXIgIDxBPiYJ
b3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1BbGlhc2NoYXIgIDxBPiYJb3BlcmF0b3I9IChjb25z
dCB1bnNpZ25lZCBjaGFyKTsJRW1BbGlhc2NoYXIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNp
Z25lZCBzaG9ydCk7CUVtQWxpYXNjaGFyICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQg
aW50KTsJRW1BbGlhc2NoYXIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBsb25nKTsJ
RW1BbGlhc2NoYXIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVtQWxpYXNj
aGFyICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIHNob3J0KTsJRW1BbGlhc2NoYXIgIDxB
PiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgaW50KTsJRW1BbGlhc2NoYXIgIDxBPiYJb3BlcmF0
b3I9IChjb25zdCBzaWduZWQgbG9uZyk7CUVtQWxpYXNjaGFyICA8QT4mCW9wZXJhdG9yPSAoY29u
c3Qgdm9pZCopOwlFbUFsaWFzY2hhciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNjaGFy
ICA8QT4mKTsJb3BlcmF0b3IgICBjaGFyICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzY2hhciAgPEE+
CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNjaGFyICA8QT4Jb3BlcmF0b3JbXSAoaW50
KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc2NoYXIgICAodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJ
fTsgCWNsYXNzIEVtUHJveHljaGFyICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7
CUVtUHJveHljaGFyICAgKHZvaWQpOwlFbVByb3h5Y2hhciAgIChjb25zdCBFbVByb3h5Y2hhciAg
Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZm
TG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4gc2l6
ZW9mICggICAgY2hhciAgKTsgfQlFbVByb3h5Y2hhciAgJgkJb3BlcmF0b3I9IChjb25zdCBib29s
KTsJRW1Qcm94eWNoYXIgICYJCW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtUHJveHljaGFyICAm
CQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbVByb3h5Y2hhciAgJgkJb3BlcmF0
b3I9IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtUHJveHljaGFyICAmCQlvcGVyYXRvcj0gKGNv
bnN0IHVuc2lnbmVkIGludCk7CUVtUHJveHljaGFyICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2ln
bmVkIGxvbmcpOwlFbVByb3h5Y2hhciAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgY2hhcik7
CUVtUHJveHljaGFyICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVtUHJveHlj
aGFyICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbVByb3h5Y2hhciAgJgkJb3Bl
cmF0b3I9IChjb25zdCBzaWduZWQgbG9uZyk7CUVtUHJveHljaGFyICAmCQlvcGVyYXRvcj0gKGNv
bnN0IHZvaWQqKTsJRW1Qcm94eWNoYXIgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eWNoYXIg
ICYpOwlvcGVyYXRvciAgIGNoYXIgICAodm9pZCkgY29uc3Q7CUVtQWxpYXNjaGFyICA8TEFTPglv
cGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzY2hhciAgPExBUz4Jb3BlcmF0b3JbXSAoaW50
KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1tzaXplb2YgKCAgICBjaGFy
ICApXTsJfSBmTG9jYWxEYXRhOwl9OyAgCSB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlh
c0ludDggIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJ
RW1BbGlhc0ludDggICAocHRyX3R5cGUpOwlFbUFsaWFzSW50OCAgIChjb25zdCBFbUFsaWFzSW50
OCAgPEE+Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9
CXN0YXRpYyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4gc2l6ZW9mICggICAgSW50
OCAgKTsgfQlFbUFsaWFzSW50OCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGJvb2wpOwlFbUFsaWFz
SW50OCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbUFsaWFzSW50OCAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbUFsaWFzSW50OCAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1BbGlhc0ludDggIDxBPiYJb3BlcmF0b3I9IChjb25z
dCB1bnNpZ25lZCBpbnQpOwlFbUFsaWFzSW50OCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2ln
bmVkIGxvbmcpOwlFbUFsaWFzSW50OCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFy
KTsJRW1BbGlhc0ludDggIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbUFs
aWFzSW50OCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbUFsaWFzSW50OCAg
PEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJRW1BbGlhc0ludDggIDxBPiYJb3Bl
cmF0b3I9IChjb25zdCB2b2lkKik7CUVtQWxpYXNJbnQ4ICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
RW1BbGlhc0ludDggIDxBPiYpOwlvcGVyYXRvciAgIEludDggICAodm9pZCkgY29uc3Q7CUVtQWxp
YXNJbnQ4ICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0ludDggIDxBPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzSW50OCAgICh2b2lkKTsJcHRyX3R5
cGUJCQlmUHRyOwl9OyAJY2xhc3MgRW1Qcm94eUludDggIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lk
KiBwdHJfdHlwZTsJRW1Qcm94eUludDggICAodm9pZCk7CUVtUHJveHlJbnQ4ICAgKGNvbnN0IEVt
UHJveHlJbnQ4ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChw
dHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7
IHJldHVybiBzaXplb2YgKCAgICBJbnQ4ICApOyB9CUVtUHJveHlJbnQ4ICAmCQlvcGVyYXRvcj0g
KGNvbnN0IGJvb2wpOwlFbVByb3h5SW50OCAgJgkJb3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1Q
cm94eUludDggICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVtUHJveHlJbnQ4
ICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1Qcm94eUludDggICYJCW9w
ZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJRW1Qcm94eUludDggICYJCW9wZXJhdG9yPSAo
Y29uc3QgdW5zaWduZWQgbG9uZyk7CUVtUHJveHlJbnQ4ICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNp
Z25lZCBjaGFyKTsJRW1Qcm94eUludDggICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIHNob3J0
KTsJRW1Qcm94eUludDggICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGludCk7CUVtUHJveHlJ
bnQ4ICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJRW1Qcm94eUludDggICYJCW9w
ZXJhdG9yPSAoY29uc3Qgdm9pZCopOwlFbVByb3h5SW50OCAgJgkJb3BlcmF0b3I9IChjb25zdCBF
bVByb3h5SW50OCAgJik7CW9wZXJhdG9yICAgSW50OCAgICh2b2lkKSBjb25zdDsJRW1BbGlhc0lu
dDggIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNJbnQ4ICA8TEFTPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzW3NpemVv
ZiAoICAgIEludDggICldOwl9IGZMb2NhbERhdGE7CX07ICAJIHRlbXBsYXRlIDxjbGFzcyBBPglj
bGFzcyBFbUFsaWFzVUludDggIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlw
ZSBwdHJfdHlwZTsJRW1BbGlhc1VJbnQ4ICAgKHB0cl90eXBlKTsJRW1BbGlhc1VJbnQ4ICAgKGNv
bnN0IEVtQWxpYXNVSW50OCAgPEE+Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4g
c2l6ZW9mICggICAgVUludDggICk7IH0JRW1BbGlhc1VJbnQ4ICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgYm9vbCk7CUVtQWxpYXNVSW50OCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbUFs
aWFzVUludDggIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBjaGFyKTsJRW1BbGlhc1VJ
bnQ4ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgc2hvcnQpOwlFbUFsaWFzVUludDgg
IDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbUFsaWFzVUludDggIDxBPiYJ
b3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBsb25nKTsJRW1BbGlhc1VJbnQ4ICA8QT4mCW9wZXJh
dG9yPSAoY29uc3Qgc2lnbmVkIGNoYXIpOwlFbUFsaWFzVUludDggIDxBPiYJb3BlcmF0b3I9IChj
b25zdCBzaWduZWQgc2hvcnQpOwlFbUFsaWFzVUludDggIDxBPiYJb3BlcmF0b3I9IChjb25zdCBz
aWduZWQgaW50KTsJRW1BbGlhc1VJbnQ4ICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGxv
bmcpOwlFbUFsaWFzVUludDggIDxBPiYJb3BlcmF0b3I9IChjb25zdCB2b2lkKik7CUVtQWxpYXNV
SW50OCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNVSW50OCAgPEE+Jik7CW9wZXJhdG9y
ICAgVUludDggICAodm9pZCkgY29uc3Q7CUVtQWxpYXNVSW50OCAgPEE+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNVSW50OCAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZh
dGU6CUVtQWxpYXNVSW50OCAgICh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwl9OyAJY2xhc3MgRW1Q
cm94eVVJbnQ4ICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlVSW50
OCAgICh2b2lkKTsJRW1Qcm94eVVJbnQ4ICAgKGNvbnN0IEVtUHJveHlVSW50OCAgJik7CXB0cl90
eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRh
OyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4gc2l6ZW9mICggICAg
VUludDggICk7IH0JRW1Qcm94eVVJbnQ4ICAmCQlvcGVyYXRvcj0gKGNvbnN0IGJvb2wpOwlFbVBy
b3h5VUludDggICYJCW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtUHJveHlVSW50OCAgJgkJb3Bl
cmF0b3I9IChjb25zdCB1bnNpZ25lZCBjaGFyKTsJRW1Qcm94eVVJbnQ4ICAmCQlvcGVyYXRvcj0g
KGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1Qcm94eVVJbnQ4ICAmCQlvcGVyYXRvcj0gKGNvbnN0
IHVuc2lnbmVkIGludCk7CUVtUHJveHlVSW50OCAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25l
ZCBsb25nKTsJRW1Qcm94eVVJbnQ4ICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJ
RW1Qcm94eVVJbnQ4ICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVtUHJveHlV
SW50OCAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgaW50KTsJRW1Qcm94eVVJbnQ4ICAmCQlv
cGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJRW1Qcm94eVVJbnQ4ICAmCQlvcGVyYXRvcj0g
KGNvbnN0IHZvaWQqKTsJRW1Qcm94eVVJbnQ4ICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlV
SW50OCAgJik7CW9wZXJhdG9yICAgVUludDggICAodm9pZCkgY29uc3Q7CUVtQWxpYXNVSW50OCAg
PExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1VJbnQ4ICA8TEFTPglvcGVyYXRv
cltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzW3NpemVvZiAo
ICAgIFVJbnQ4ICApXTsJfSBmTG9jYWxEYXRhOwl9OyAgCSB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xh
c3MgRW1BbGlhc0ludDE2ICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUg
cHRyX3R5cGU7CUVtQWxpYXNJbnQxNiAgIChwdHJfdHlwZSk7CUVtQWxpYXNJbnQxNiAgIChjb25z
dCBFbUFsaWFzSW50MTYgIDxBPiYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNp
emVvZiAoICAgIEludDE2ICApOyB9CUVtQWxpYXNJbnQxNiAgPEE+JglvcGVyYXRvcj0gKGNvbnN0
IGJvb2wpOwlFbUFsaWFzSW50MTYgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1BbGlh
c0ludDE2ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVtQWxpYXNJbnQx
NiAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1BbGlhc0ludDE2ICA8
QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJRW1BbGlhc0ludDE2ICA8QT4mCW9w
ZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgbG9uZyk7CUVtQWxpYXNJbnQxNiAgPEE+JglvcGVyYXRv
cj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1BbGlhc0ludDE2ICA8QT4mCW9wZXJhdG9yPSAoY29u
c3Qgc2lnbmVkIHNob3J0KTsJRW1BbGlhc0ludDE2ICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2ln
bmVkIGludCk7CUVtQWxpYXNJbnQxNiAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBsb25n
KTsJRW1BbGlhc0ludDE2ICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgdm9pZCopOwlFbUFsaWFzSW50
MTYgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzSW50MTYgIDxBPiYpOwlvcGVyYXRvciAg
IEludDE2ICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzSW50MTYgIDxBPglvcGVyYXRvcltdIChpbnQp
Owljb25zdCBFbUFsaWFzSW50MTYgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRl
OglFbUFsaWFzSW50MTYgICAodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJfTsgCWNsYXNzIEVtUHJv
eHlJbnQxNiAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5SW50MTYg
ICAodm9pZCk7CUVtUHJveHlJbnQxNiAgIChjb25zdCBFbVByb3h5SW50MTYgICYpOwlwdHJfdHlw
ZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsg
fQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNpemVvZiAoICAgIElu
dDE2ICApOyB9CUVtUHJveHlJbnQxNiAgJgkJb3BlcmF0b3I9IChjb25zdCBib29sKTsJRW1Qcm94
eUludDE2ICAmCQlvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbVByb3h5SW50MTYgICYJCW9wZXJh
dG9yPSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVtUHJveHlJbnQxNiAgJgkJb3BlcmF0b3I9IChj
b25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtUHJveHlJbnQxNiAgJgkJb3BlcmF0b3I9IChjb25zdCB1
bnNpZ25lZCBpbnQpOwlFbVByb3h5SW50MTYgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQg
bG9uZyk7CUVtUHJveHlJbnQxNiAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVt
UHJveHlJbnQxNiAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbVByb3h5SW50
MTYgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGludCk7CUVtUHJveHlJbnQxNiAgJgkJb3Bl
cmF0b3I9IChjb25zdCBzaWduZWQgbG9uZyk7CUVtUHJveHlJbnQxNiAgJgkJb3BlcmF0b3I9IChj
b25zdCB2b2lkKik7CUVtUHJveHlJbnQxNiAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5SW50
MTYgICYpOwlvcGVyYXRvciAgIEludDE2ICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzSW50MTYgIDxM
QVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNJbnQxNiAgPExBUz4Jb3BlcmF0b3Jb
XSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1tzaXplb2YgKCAg
ICBJbnQxNiAgKV07CX0gZkxvY2FsRGF0YTsJfTsgIAkgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNz
IEVtQWxpYXNVSW50MTYgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBw
dHJfdHlwZTsJRW1BbGlhc1VJbnQxNiAgIChwdHJfdHlwZSk7CUVtQWxpYXNVSW50MTYgICAoY29u
c3QgRW1BbGlhc1VJbnQxNiAgPEE+Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4g
c2l6ZW9mICggICAgVUludDE2ICApOyB9CUVtQWxpYXNVSW50MTYgIDxBPiYJb3BlcmF0b3I9IChj
b25zdCBib29sKTsJRW1BbGlhc1VJbnQxNiAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlF
bUFsaWFzVUludDE2ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVtQWxp
YXNVSW50MTYgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtQWxpYXNV
SW50MTYgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbUFsaWFzVUludDE2
ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgbG9uZyk7CUVtQWxpYXNVSW50MTYgIDxB
PiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVtQWxpYXNVSW50MTYgIDxBPiYJb3Bl
cmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbUFsaWFzVUludDE2ICA8QT4mCW9wZXJhdG9y
PSAoY29uc3Qgc2lnbmVkIGludCk7CUVtQWxpYXNVSW50MTYgIDxBPiYJb3BlcmF0b3I9IChjb25z
dCBzaWduZWQgbG9uZyk7CUVtQWxpYXNVSW50MTYgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB2b2lk
Kik7CUVtQWxpYXNVSW50MTYgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzVUludDE2ICA8
QT4mKTsJb3BlcmF0b3IgICBVSW50MTYgICAodm9pZCkgY29uc3Q7CUVtQWxpYXNVSW50MTYgIDxB
PglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzVUludDE2ICA8QT4Jb3BlcmF0b3JbXSAo
aW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1VJbnQxNiAgICh2b2lkKTsJcHRyX3R5cGUJCQlm
UHRyOwl9OyAJY2xhc3MgRW1Qcm94eVVJbnQxNiAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0
cl90eXBlOwlFbVByb3h5VUludDE2ICAgKHZvaWQpOwlFbVByb3h5VUludDE2ICAgKGNvbnN0IEVt
UHJveHlVSW50MTYgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4g
KHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJ
CXsgcmV0dXJuIHNpemVvZiAoICAgIFVJbnQxNiAgKTsgfQlFbVByb3h5VUludDE2ICAmCQlvcGVy
YXRvcj0gKGNvbnN0IGJvb2wpOwlFbVByb3h5VUludDE2ICAmCQlvcGVyYXRvcj0gKGNvbnN0IGNo
YXIpOwlFbVByb3h5VUludDE2ICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlF
bVByb3h5VUludDE2ICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1Qcm94
eVVJbnQxNiAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbVByb3h5VUludDE2
ICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbVByb3h5VUludDE2ICAmCQlv
cGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1Qcm94eVVJbnQxNiAgJgkJb3BlcmF0b3I9
IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbVByb3h5VUludDE2ICAmCQlvcGVyYXRvcj0gKGNvbnN0
IHNpZ25lZCBpbnQpOwlFbVByb3h5VUludDE2ICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBs
b25nKTsJRW1Qcm94eVVJbnQxNiAgJgkJb3BlcmF0b3I9IChjb25zdCB2b2lkKik7CUVtUHJveHlV
SW50MTYgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVVJbnQxNiAgJik7CW9wZXJhdG9yICAg
VUludDE2ICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzVUludDE2ICA8TEFTPglvcGVyYXRvcltdIChp
bnQpOwljb25zdCBFbUFsaWFzVUludDE2ICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzW3NpemVvZiAoICAgIFVJbnQxNiAgKV07CX0g
ZkxvY2FsRGF0YTsJfTsgIAkgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNJbnQzMiAg
CXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFz
SW50MzIgICAocHRyX3R5cGUpOwlFbUFsaWFzSW50MzIgICAoY29uc3QgRW1BbGlhc0ludDMyICA8
QT4mKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3Rh
dGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICBJbnQzMiAg
KTsgfQlFbUFsaWFzSW50MzIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBib29sKTsJRW1BbGlhc0lu
dDMyICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtQWxpYXNJbnQzMiAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbUFsaWFzSW50MzIgIDxBPiYJb3BlcmF0b3I9
IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtQWxpYXNJbnQzMiAgPEE+JglvcGVyYXRvcj0gKGNv
bnN0IHVuc2lnbmVkIGludCk7CUVtQWxpYXNJbnQzMiAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVu
c2lnbmVkIGxvbmcpOwlFbUFsaWFzSW50MzIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQg
Y2hhcik7CUVtQWxpYXNJbnQzMiAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7
CUVtQWxpYXNJbnQzMiAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbUFsaWFz
SW50MzIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgbG9uZyk7CUVtQWxpYXNJbnQzMiAg
PEE+JglvcGVyYXRvcj0gKGNvbnN0IHZvaWQqKTsJRW1BbGlhc0ludDMyICA8QT4mCW9wZXJhdG9y
PSAoY29uc3QgRW1BbGlhc0ludDMyICA8QT4mKTsJb3BlcmF0b3IgICBJbnQzMiAgICh2b2lkKSBj
b25zdDsJRW1BbGlhc0ludDMyICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0lu
dDMyICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc0ludDMyICAg
KHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CX07IAljbGFzcyBFbVByb3h5SW50MzIgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUludDMyICAgKHZvaWQpOwlFbVByb3h5
SW50MzIgICAoY29uc3QgRW1Qcm94eUludDMyICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQp
IGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJ
R2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICBJbnQzMiAgKTsgfQlFbVByb3h5
SW50MzIgICYJCW9wZXJhdG9yPSAoY29uc3QgYm9vbCk7CUVtUHJveHlJbnQzMiAgJgkJb3BlcmF0
b3I9IChjb25zdCBjaGFyKTsJRW1Qcm94eUludDMyICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2ln
bmVkIGNoYXIpOwlFbVByb3h5SW50MzIgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgc2hv
cnQpOwlFbVByb3h5SW50MzIgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJRW1Q
cm94eUludDMyICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbVByb3h5SW50
MzIgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGNoYXIpOwlFbVByb3h5SW50MzIgICYJCW9w
ZXJhdG9yPSAoY29uc3Qgc2lnbmVkIHNob3J0KTsJRW1Qcm94eUludDMyICAmCQlvcGVyYXRvcj0g
KGNvbnN0IHNpZ25lZCBpbnQpOwlFbVByb3h5SW50MzIgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2ln
bmVkIGxvbmcpOwlFbVByb3h5SW50MzIgICYJCW9wZXJhdG9yPSAoY29uc3Qgdm9pZCopOwlFbVBy
b3h5SW50MzIgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eUludDMyICAmKTsJb3BlcmF0b3Ig
ICBJbnQzMiAgICh2b2lkKSBjb25zdDsJRW1BbGlhc0ludDMyICA8TEFTPglvcGVyYXRvcltdIChp
bnQpOwljb25zdCBFbUFsaWFzSW50MzIgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXBy
aXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbc2l6ZW9mICggICAgSW50MzIgICldOwl9IGZM
b2NhbERhdGE7CX07ICAJIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzVUludDMyICAJ
ewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNV
SW50MzIgICAocHRyX3R5cGUpOwlFbUFsaWFzVUludDMyICAgKGNvbnN0IEVtQWxpYXNVSW50MzIg
IDxBPiYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlz
dGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNpemVvZiAoICAgIFVJbnQz
MiAgKTsgfQlFbUFsaWFzVUludDMyICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgYm9vbCk7CUVtQWxp
YXNVSW50MzIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1BbGlhc1VJbnQzMiAgPEE+
JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbUFsaWFzVUludDMyICA8QT4mCW9w
ZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgc2hvcnQpOwlFbUFsaWFzVUludDMyICA8QT4mCW9wZXJh
dG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJRW1BbGlhc1VJbnQzMiAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbUFsaWFzVUludDMyICA8QT4mCW9wZXJhdG9yPSAoY29u
c3Qgc2lnbmVkIGNoYXIpOwlFbUFsaWFzVUludDMyICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2ln
bmVkIHNob3J0KTsJRW1BbGlhc1VJbnQzMiAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBp
bnQpOwlFbUFsaWFzVUludDMyICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGxvbmcpOwlF
bUFsaWFzVUludDMyICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgdm9pZCopOwlFbUFsaWFzVUludDMy
ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1VJbnQzMiAgPEE+Jik7CW9wZXJhdG9yICAg
VUludDMyICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzVUludDMyICA8QT4Jb3BlcmF0b3JbXSAoaW50
KTsJY29uc3QgRW1BbGlhc1VJbnQzMiAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZh
dGU6CUVtQWxpYXNVSW50MzIgICAodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJfTsgCWNsYXNzIEVt
UHJveHlVSW50MzIgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVVJ
bnQzMiAgICh2b2lkKTsJRW1Qcm94eVVJbnQzMiAgIChjb25zdCBFbVByb3h5VUludDMyICAmKTsJ
cHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2Nh
bERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2Yg
KCAgICBVSW50MzIgICk7IH0JRW1Qcm94eVVJbnQzMiAgJgkJb3BlcmF0b3I9IChjb25zdCBib29s
KTsJRW1Qcm94eVVJbnQzMiAgJgkJb3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1Qcm94eVVJbnQz
MiAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBjaGFyKTsJRW1Qcm94eVVJbnQzMiAgJgkJ
b3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtUHJveHlVSW50MzIgICYJCW9wZXJh
dG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJRW1Qcm94eVVJbnQzMiAgJgkJb3BlcmF0b3I9IChj
b25zdCB1bnNpZ25lZCBsb25nKTsJRW1Qcm94eVVJbnQzMiAgJgkJb3BlcmF0b3I9IChjb25zdCBz
aWduZWQgY2hhcik7CUVtUHJveHlVSW50MzIgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIHNo
b3J0KTsJRW1Qcm94eVVJbnQzMiAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgaW50KTsJRW1Q
cm94eVVJbnQzMiAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgbG9uZyk7CUVtUHJveHlVSW50
MzIgICYJCW9wZXJhdG9yPSAoY29uc3Qgdm9pZCopOwlFbVByb3h5VUludDMyICAmCQlvcGVyYXRv
cj0gKGNvbnN0IEVtUHJveHlVSW50MzIgICYpOwlvcGVyYXRvciAgIFVJbnQzMiAgICh2b2lkKSBj
b25zdDsJRW1BbGlhc1VJbnQzMiAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlh
c1VJbnQzMiAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJ
Y2hhcgkJCV9ieXRlc1tzaXplb2YgKCAgICBVSW50MzIgICldOwl9IGZMb2NhbERhdGE7CX07ICAg
CiB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0Jvb2xlYW4gIAl7CXB1YmxpYzoJdHlw
ZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0Jvb2xlYW4gICAocHRy
X3R5cGUpOwlFbUFsaWFzQm9vbGVhbiAgIChjb25zdCBFbUFsaWFzQm9vbGVhbiAgPEE+Jik7CXB0
cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXpl
X3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4gc2l6ZW9mICggICAgdWludDggICk7IH0JRW1B
bGlhc0Jvb2xlYW4gIDxBPiYJb3BlcmF0b3I9IChjb25zdCBib29sKTsJRW1BbGlhc0Jvb2xlYW4g
IDxBPiYJb3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1BbGlhc0Jvb2xlYW4gIDxBPiYJb3BlcmF0
b3I9IChjb25zdCB1bnNpZ25lZCBjaGFyKTsJRW1BbGlhc0Jvb2xlYW4gIDxBPiYJb3BlcmF0b3I9
IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtQWxpYXNCb29sZWFuICA8QT4mCW9wZXJhdG9yPSAo
Y29uc3QgdW5zaWduZWQgaW50KTsJRW1BbGlhc0Jvb2xlYW4gIDxBPiYJb3BlcmF0b3I9IChjb25z
dCB1bnNpZ25lZCBsb25nKTsJRW1BbGlhc0Jvb2xlYW4gIDxBPiYJb3BlcmF0b3I9IChjb25zdCBz
aWduZWQgY2hhcik7CUVtQWxpYXNCb29sZWFuICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVk
IHNob3J0KTsJRW1BbGlhc0Jvb2xlYW4gIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgaW50
KTsJRW1BbGlhc0Jvb2xlYW4gIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgbG9uZyk7CUVt
QWxpYXNCb29sZWFuICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgdm9pZCopOwlFbUFsaWFzQm9vbGVh
biAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNCb29sZWFuICA8QT4mKTsJb3BlcmF0b3Ig
ICBCb29sZWFuICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzQm9vbGVhbiAgPEE+CW9wZXJhdG9yW10g
KGludCk7CWNvbnN0IEVtQWxpYXNCb29sZWFuICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJ
cHJpdmF0ZToJRW1BbGlhc0Jvb2xlYW4gICAodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJfTsgCWNs
YXNzIEVtUHJveHlCb29sZWFuICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVt
UHJveHlCb29sZWFuICAgKHZvaWQpOwlFbVByb3h5Qm9vbGVhbiAgIChjb25zdCBFbVByb3h5Qm9v
bGVhbiAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5
cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1
cm4gc2l6ZW9mICggICAgdWludDggICk7IH0JRW1Qcm94eUJvb2xlYW4gICYJCW9wZXJhdG9yPSAo
Y29uc3QgYm9vbCk7CUVtUHJveHlCb29sZWFuICAmCQlvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlF
bVByb3h5Qm9vbGVhbiAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBjaGFyKTsJRW1Qcm94
eUJvb2xlYW4gICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgc2hvcnQpOwlFbVByb3h5Qm9v
bGVhbiAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbVByb3h5Qm9vbGVhbiAg
JgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBsb25nKTsJRW1Qcm94eUJvb2xlYW4gICYJCW9w
ZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGNoYXIpOwlFbVByb3h5Qm9vbGVhbiAgJgkJb3BlcmF0b3I9
IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbVByb3h5Qm9vbGVhbiAgJgkJb3BlcmF0b3I9IChjb25z
dCBzaWduZWQgaW50KTsJRW1Qcm94eUJvb2xlYW4gICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVk
IGxvbmcpOwlFbVByb3h5Qm9vbGVhbiAgJgkJb3BlcmF0b3I9IChjb25zdCB2b2lkKik7CUVtUHJv
eHlCb29sZWFuICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlCb29sZWFuICAmKTsJb3BlcmF0
b3IgICBCb29sZWFuICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzQm9vbGVhbiAgPExBUz4Jb3BlcmF0
b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0Jvb2xlYW4gIDxMQVM+CW9wZXJhdG9yW10gKGludCkg
Y29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbc2l6ZW9mICggICAgdWludDgg
ICldOwl9IGZMb2NhbERhdGE7CX07ICAJIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFz
Q2hhciAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlF
bUFsaWFzQ2hhciAgIChwdHJfdHlwZSk7CUVtQWxpYXNDaGFyICAgKGNvbnN0IEVtQWxpYXNDaGFy
ICA8QT4mKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0J
c3RhdGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICB1aW50
OCAgKTsgfQlFbUFsaWFzQ2hhciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGJvb2wpOwlFbUFsaWFz
Q2hhciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbUFsaWFzQ2hhciAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbUFsaWFzQ2hhciAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1BbGlhc0NoYXIgIDxBPiYJb3BlcmF0b3I9IChjb25z
dCB1bnNpZ25lZCBpbnQpOwlFbUFsaWFzQ2hhciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2ln
bmVkIGxvbmcpOwlFbUFsaWFzQ2hhciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFy
KTsJRW1BbGlhc0NoYXIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbUFs
aWFzQ2hhciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbUFsaWFzQ2hhciAg
PEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJRW1BbGlhc0NoYXIgIDxBPiYJb3Bl
cmF0b3I9IChjb25zdCB2b2lkKik7CUVtQWxpYXNDaGFyICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
RW1BbGlhc0NoYXIgIDxBPiYpOwlvcGVyYXRvciAgIENoYXIgICAodm9pZCkgY29uc3Q7CUVtQWxp
YXNDaGFyICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0NoYXIgIDxBPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzQ2hhciAgICh2b2lkKTsJcHRyX3R5
cGUJCQlmUHRyOwl9OyAJY2xhc3MgRW1Qcm94eUNoYXIgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lk
KiBwdHJfdHlwZTsJRW1Qcm94eUNoYXIgICAodm9pZCk7CUVtUHJveHlDaGFyICAgKGNvbnN0IEVt
UHJveHlDaGFyICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChw
dHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7
IHJldHVybiBzaXplb2YgKCAgICB1aW50OCAgKTsgfQlFbVByb3h5Q2hhciAgJgkJb3BlcmF0b3I9
IChjb25zdCBib29sKTsJRW1Qcm94eUNoYXIgICYJCW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVt
UHJveHlDaGFyICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbVByb3h5Q2hh
ciAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtUHJveHlDaGFyICAmCQlv
cGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGludCk7CUVtUHJveHlDaGFyICAmCQlvcGVyYXRvcj0g
KGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbVByb3h5Q2hhciAgJgkJb3BlcmF0b3I9IChjb25zdCBz
aWduZWQgY2hhcik7CUVtUHJveHlDaGFyICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9y
dCk7CUVtUHJveHlDaGFyICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbVByb3h5
Q2hhciAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgbG9uZyk7CUVtUHJveHlDaGFyICAmCQlv
cGVyYXRvcj0gKGNvbnN0IHZvaWQqKTsJRW1Qcm94eUNoYXIgICYJCW9wZXJhdG9yPSAoY29uc3Qg
RW1Qcm94eUNoYXIgICYpOwlvcGVyYXRvciAgIENoYXIgICAodm9pZCkgY29uc3Q7CUVtQWxpYXND
aGFyICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzQ2hhciAgPExBUz4Jb3Bl
cmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1tzaXpl
b2YgKCAgICB1aW50OCAgKV07CX0gZkxvY2FsRGF0YTsJfTsgIAkgdGVtcGxhdGUgPGNsYXNzIEE+
CWNsYXNzIEVtQWxpYXNDb250cm9sU3R5bGVUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5h
bWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNDb250cm9sU3R5bGVUeXBlICAgKHB0cl90
eXBlKTsJRW1BbGlhc0NvbnRyb2xTdHlsZVR5cGUgICAoY29uc3QgRW1BbGlhc0NvbnRyb2xTdHls
ZVR5cGUgIDxBPiYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0
cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNpemVvZiAoICAg
IHVpbnQ4ICApOyB9CUVtQWxpYXNDb250cm9sU3R5bGVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgYm9vbCk7CUVtQWxpYXNDb250cm9sU3R5bGVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
Y2hhcik7CUVtQWxpYXNDb250cm9sU3R5bGVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5z
aWduZWQgY2hhcik7CUVtQWxpYXNDb250cm9sU3R5bGVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgdW5zaWduZWQgc2hvcnQpOwlFbUFsaWFzQ29udHJvbFN0eWxlVHlwZSAgPEE+JglvcGVyYXRv
cj0gKGNvbnN0IHVuc2lnbmVkIGludCk7CUVtQWxpYXNDb250cm9sU3R5bGVUeXBlICA8QT4mCW9w
ZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgbG9uZyk7CUVtQWxpYXNDb250cm9sU3R5bGVUeXBlICA8
QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGNoYXIpOwlFbUFsaWFzQ29udHJvbFN0eWxlVHlw
ZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVtQWxpYXNDb250cm9sU3R5
bGVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGludCk7CUVtQWxpYXNDb250cm9s
U3R5bGVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGxvbmcpOwlFbUFsaWFzQ29u
dHJvbFN0eWxlVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHZvaWQqKTsJRW1BbGlhc0NvbnRy
b2xTdHlsZVR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzQ29udHJvbFN0eWxlVHlw
ZSAgPEE+Jik7CW9wZXJhdG9yICAgQ29udHJvbFN0eWxlVHlwZSAgICh2b2lkKSBjb25zdDsJRW1B
bGlhc0NvbnRyb2xTdHlsZVR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFz
Q29udHJvbFN0eWxlVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVt
QWxpYXNDb250cm9sU3R5bGVUeXBlICAgKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CX07IAljbGFz
cyBFbVByb3h5Q29udHJvbFN0eWxlVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90
eXBlOwlFbVByb3h5Q29udHJvbFN0eWxlVHlwZSAgICh2b2lkKTsJRW1Qcm94eUNvbnRyb2xTdHls
ZVR5cGUgICAoY29uc3QgRW1Qcm94eUNvbnRyb2xTdHlsZVR5cGUgICYpOwlwdHJfdHlwZQkJCUdl
dFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0
aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNpemVvZiAoICAgIHVpbnQ4ICAp
OyB9CUVtUHJveHlDb250cm9sU3R5bGVUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IGJvb2wpOwlF
bVByb3h5Q29udHJvbFN0eWxlVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1Qcm94
eUNvbnRyb2xTdHlsZVR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVt
UHJveHlDb250cm9sU3R5bGVUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0
KTsJRW1Qcm94eUNvbnRyb2xTdHlsZVR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQg
aW50KTsJRW1Qcm94eUNvbnRyb2xTdHlsZVR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWdu
ZWQgbG9uZyk7CUVtUHJveHlDb250cm9sU3R5bGVUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNp
Z25lZCBjaGFyKTsJRW1Qcm94eUNvbnRyb2xTdHlsZVR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3Qg
c2lnbmVkIHNob3J0KTsJRW1Qcm94eUNvbnRyb2xTdHlsZVR5cGUgICYJCW9wZXJhdG9yPSAoY29u
c3Qgc2lnbmVkIGludCk7CUVtUHJveHlDb250cm9sU3R5bGVUeXBlICAmCQlvcGVyYXRvcj0gKGNv
bnN0IHNpZ25lZCBsb25nKTsJRW1Qcm94eUNvbnRyb2xTdHlsZVR5cGUgICYJCW9wZXJhdG9yPSAo
Y29uc3Qgdm9pZCopOwlFbVByb3h5Q29udHJvbFN0eWxlVHlwZSAgJgkJb3BlcmF0b3I9IChjb25z
dCBFbVByb3h5Q29udHJvbFN0eWxlVHlwZSAgJik7CW9wZXJhdG9yICAgQ29udHJvbFN0eWxlVHlw
ZSAgICh2b2lkKSBjb25zdDsJRW1BbGlhc0NvbnRyb2xTdHlsZVR5cGUgIDxMQVM+CW9wZXJhdG9y
W10gKGludCk7CWNvbnN0IEVtQWxpYXNDb250cm9sU3R5bGVUeXBlICA8TEFTPglvcGVyYXRvcltd
IChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzW3NpemVvZiAoICAg
IHVpbnQ4ICApXTsJfSBmTG9jYWxEYXRhOwl9OyAgCSB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3Mg
RW1BbGlhc0Nvb3JkICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRy
X3R5cGU7CUVtQWxpYXNDb29yZCAgIChwdHJfdHlwZSk7CUVtQWxpYXNDb29yZCAgIChjb25zdCBF
bUFsaWFzQ29vcmQgIDxBPiYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1
cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNpemVv
ZiAoICAgIHVpbnQxNiAgKTsgfQlFbUFsaWFzQ29vcmQgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBi
b29sKTsJRW1BbGlhc0Nvb3JkICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtQWxpYXND
b29yZCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbUFsaWFzQ29vcmQg
IDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtQWxpYXNDb29yZCAgPEE+
JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGludCk7CUVtQWxpYXNDb29yZCAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbUFsaWFzQ29vcmQgIDxBPiYJb3BlcmF0b3I9
IChjb25zdCBzaWduZWQgY2hhcik7CUVtQWxpYXNDb29yZCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0
IHNpZ25lZCBzaG9ydCk7CUVtQWxpYXNDb29yZCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25l
ZCBpbnQpOwlFbUFsaWFzQ29vcmQgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgbG9uZyk7
CUVtQWxpYXNDb29yZCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHZvaWQqKTsJRW1BbGlhc0Nvb3Jk
ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0Nvb3JkICA8QT4mKTsJb3BlcmF0b3IgICBD
b29yZCAgICh2b2lkKSBjb25zdDsJRW1BbGlhc0Nvb3JkICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJ
Y29uc3QgRW1BbGlhc0Nvb3JkICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJ
RW1BbGlhc0Nvb3JkICAgKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CX07IAljbGFzcyBFbVByb3h5
Q29vcmQgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUNvb3JkICAg
KHZvaWQpOwlFbVByb3h5Q29vcmQgICAoY29uc3QgRW1Qcm94eUNvb3JkICAmKTsJcHRyX3R5cGUJ
CQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0J
c3RhdGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICB1aW50
MTYgICk7IH0JRW1Qcm94eUNvb3JkICAmCQlvcGVyYXRvcj0gKGNvbnN0IGJvb2wpOwlFbVByb3h5
Q29vcmQgICYJCW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtUHJveHlDb29yZCAgJgkJb3BlcmF0
b3I9IChjb25zdCB1bnNpZ25lZCBjaGFyKTsJRW1Qcm94eUNvb3JkICAmCQlvcGVyYXRvcj0gKGNv
bnN0IHVuc2lnbmVkIHNob3J0KTsJRW1Qcm94eUNvb3JkICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVu
c2lnbmVkIGludCk7CUVtUHJveHlDb29yZCAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBs
b25nKTsJRW1Qcm94eUNvb3JkICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1Q
cm94eUNvb3JkICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVtUHJveHlDb29y
ZCAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgaW50KTsJRW1Qcm94eUNvb3JkICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJRW1Qcm94eUNvb3JkICAmCQlvcGVyYXRvcj0gKGNv
bnN0IHZvaWQqKTsJRW1Qcm94eUNvb3JkICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlDb29y
ZCAgJik7CW9wZXJhdG9yICAgQ29vcmQgICAodm9pZCkgY29uc3Q7CUVtQWxpYXNDb29yZCAgPExB
Uz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0Nvb3JkICA8TEFTPglvcGVyYXRvcltd
IChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzW3NpemVvZiAoICAg
IHVpbnQxNiAgKV07CX0gZkxvY2FsRGF0YTsJfTsgIAkgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNz
IEVtQWxpYXNEbVJlc0lEICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUg
cHRyX3R5cGU7CUVtQWxpYXNEbVJlc0lEICAgKHB0cl90eXBlKTsJRW1BbGlhc0RtUmVzSUQgICAo
Y29uc3QgRW1BbGlhc0RtUmVzSUQgIDxBPiYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29u
c3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0
dXJuIHNpemVvZiAoICAgIHVpbnQxNiAgKTsgfQlFbUFsaWFzRG1SZXNJRCAgPEE+JglvcGVyYXRv
cj0gKGNvbnN0IGJvb2wpOwlFbUFsaWFzRG1SZXNJRCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGNo
YXIpOwlFbUFsaWFzRG1SZXNJRCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIp
OwlFbUFsaWFzRG1SZXNJRCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJ
RW1BbGlhc0RtUmVzSUQgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbUFs
aWFzRG1SZXNJRCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbUFsaWFz
RG1SZXNJRCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1BbGlhc0RtUmVz
SUQgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbUFsaWFzRG1SZXNJRCAg
PEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbUFsaWFzRG1SZXNJRCAgPEE+Jglv
cGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJRW1BbGlhc0RtUmVzSUQgIDxBPiYJb3BlcmF0
b3I9IChjb25zdCB2b2lkKik7CUVtQWxpYXNEbVJlc0lEICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
RW1BbGlhc0RtUmVzSUQgIDxBPiYpOwlvcGVyYXRvciAgIERtUmVzSUQgICAodm9pZCkgY29uc3Q7
CUVtQWxpYXNEbVJlc0lEICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0RtUmVz
SUQgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzRG1SZXNJRCAg
ICh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwl9OyAJY2xhc3MgRW1Qcm94eURtUmVzSUQgIAl7CXB1
YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eURtUmVzSUQgICAodm9pZCk7CUVt
UHJveHlEbVJlc0lEICAgKGNvbnN0IEVtUHJveHlEbVJlc0lEICAmKTsJcHRyX3R5cGUJCQlHZXRQ
dHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICB1aW50MTYgICk7
IH0JRW1Qcm94eURtUmVzSUQgICYJCW9wZXJhdG9yPSAoY29uc3QgYm9vbCk7CUVtUHJveHlEbVJl
c0lEICAmCQlvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbVByb3h5RG1SZXNJRCAgJgkJb3BlcmF0
b3I9IChjb25zdCB1bnNpZ25lZCBjaGFyKTsJRW1Qcm94eURtUmVzSUQgICYJCW9wZXJhdG9yPSAo
Y29uc3QgdW5zaWduZWQgc2hvcnQpOwlFbVByb3h5RG1SZXNJRCAgJgkJb3BlcmF0b3I9IChjb25z
dCB1bnNpZ25lZCBpbnQpOwlFbVByb3h5RG1SZXNJRCAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNp
Z25lZCBsb25nKTsJRW1Qcm94eURtUmVzSUQgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGNo
YXIpOwlFbVByb3h5RG1SZXNJRCAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlF
bVByb3h5RG1SZXNJRCAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgaW50KTsJRW1Qcm94eURt
UmVzSUQgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGxvbmcpOwlFbVByb3h5RG1SZXNJRCAg
JgkJb3BlcmF0b3I9IChjb25zdCB2b2lkKik7CUVtUHJveHlEbVJlc0lEICAmCQlvcGVyYXRvcj0g
KGNvbnN0IEVtUHJveHlEbVJlc0lEICAmKTsJb3BlcmF0b3IgICBEbVJlc0lEICAgKHZvaWQpIGNv
bnN0OwlFbUFsaWFzRG1SZXNJRCAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlh
c0RtUmVzSUQgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7
CWNoYXIJCQlfYnl0ZXNbc2l6ZW9mICggICAgdWludDE2ICApXTsJfSBmTG9jYWxEYXRhOwl9OyAg
CSB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc2VtdXB0ciAgCXsJcHVibGljOgl0eXBl
ZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzZW11cHRyICAgKHB0cl90
eXBlKTsJRW1BbGlhc2VtdXB0ciAgIChjb25zdCBFbUFsaWFzZW11cHRyICA8QT4mKTsJcHRyX3R5
cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJ
R2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICBlbXVwdHIgICk7IH0JRW1BbGlh
c2VtdXB0ciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGJvb2wpOwlFbUFsaWFzZW11cHRyICA8QT4m
CW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtQWxpYXNlbXVwdHIgIDxBPiYJb3BlcmF0b3I9IChj
b25zdCB1bnNpZ25lZCBjaGFyKTsJRW1BbGlhc2VtdXB0ciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0
IHVuc2lnbmVkIHNob3J0KTsJRW1BbGlhc2VtdXB0ciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVu
c2lnbmVkIGludCk7CUVtQWxpYXNlbXVwdHIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25l
ZCBsb25nKTsJRW1BbGlhc2VtdXB0ciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFy
KTsJRW1BbGlhc2VtdXB0ciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVt
QWxpYXNlbXVwdHIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgaW50KTsJRW1BbGlhc2Vt
dXB0ciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJRW1BbGlhc2VtdXB0ciAg
PEE+JglvcGVyYXRvcj0gKGNvbnN0IHZvaWQqKTsJRW1BbGlhc2VtdXB0ciAgPEE+JglvcGVyYXRv
cj0gKGNvbnN0IEVtQWxpYXNlbXVwdHIgIDxBPiYpOwlvcGVyYXRvciAgIGVtdXB0ciAgICh2b2lk
KSBjb25zdDsJRW1BbGlhc2VtdXB0ciAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxp
YXNlbXVwdHIgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzZW11
cHRyICAgKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CX07IAljbGFzcyBFbVByb3h5ZW11cHRyICAJ
ewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHllbXVwdHIgICAodm9pZCk7
CUVtUHJveHllbXVwdHIgICAoY29uc3QgRW1Qcm94eWVtdXB0ciAgJik7CXB0cl90eXBlCQkJR2V0
UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRp
YyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4gc2l6ZW9mICggICAgZW11cHRyICAp
OyB9CUVtUHJveHllbXVwdHIgICYJCW9wZXJhdG9yPSAoY29uc3QgYm9vbCk7CUVtUHJveHllbXVw
dHIgICYJCW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtUHJveHllbXVwdHIgICYJCW9wZXJhdG9y
PSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVtUHJveHllbXVwdHIgICYJCW9wZXJhdG9yPSAoY29u
c3QgdW5zaWduZWQgc2hvcnQpOwlFbVByb3h5ZW11cHRyICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVu
c2lnbmVkIGludCk7CUVtUHJveHllbXVwdHIgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQg
bG9uZyk7CUVtUHJveHllbXVwdHIgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGNoYXIpOwlF
bVByb3h5ZW11cHRyICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVtUHJveHll
bXVwdHIgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGludCk7CUVtUHJveHllbXVwdHIgICYJ
CW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGxvbmcpOwlFbVByb3h5ZW11cHRyICAmCQlvcGVyYXRv
cj0gKGNvbnN0IHZvaWQqKTsJRW1Qcm94eWVtdXB0ciAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVBy
b3h5ZW11cHRyICAmKTsJb3BlcmF0b3IgICBlbXVwdHIgICAodm9pZCkgY29uc3Q7CUVtQWxpYXNl
bXVwdHIgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNlbXVwdHIgIDxMQVM+
CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNb
c2l6ZW9mICggICAgZW11cHRyICApXTsJfSBmTG9jYWxEYXRhOwl9OyAgCSB0ZW1wbGF0ZSA8Y2xh
c3MgQT4JY2xhc3MgRW1BbGlhc0VyciAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0
cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzRXJyICAgKHB0cl90eXBlKTsJRW1BbGlhc0VyciAgIChj
b25zdCBFbUFsaWFzRXJyICA8QT4mKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsg
cmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBz
aXplb2YgKCAgICB1aW50MTYgICk7IH0JRW1BbGlhc0VyciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0
IGJvb2wpOwlFbUFsaWFzRXJyICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtQWxpYXNF
cnIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBjaGFyKTsJRW1BbGlhc0VyciAgPEE+
JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1BbGlhc0VyciAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IHVuc2lnbmVkIGludCk7CUVtQWxpYXNFcnIgIDxBPiYJb3BlcmF0b3I9IChj
b25zdCB1bnNpZ25lZCBsb25nKTsJRW1BbGlhc0VyciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNp
Z25lZCBjaGFyKTsJRW1BbGlhc0VyciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9y
dCk7CUVtQWxpYXNFcnIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgaW50KTsJRW1BbGlh
c0VyciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJRW1BbGlhc0VyciAgPEE+
JglvcGVyYXRvcj0gKGNvbnN0IHZvaWQqKTsJRW1BbGlhc0VyciAgPEE+JglvcGVyYXRvcj0gKGNv
bnN0IEVtQWxpYXNFcnIgIDxBPiYpOwlvcGVyYXRvciAgIEVyciAgICh2b2lkKSBjb25zdDsJRW1B
bGlhc0VyciAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNFcnIgIDxBPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzRXJyICAgKHZvaWQpOwlwdHJfdHlw
ZQkJCWZQdHI7CX07IAljbGFzcyBFbVByb3h5RXJyICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCog
cHRyX3R5cGU7CUVtUHJveHlFcnIgICAodm9pZCk7CUVtUHJveHlFcnIgICAoY29uc3QgRW1Qcm94
eUVyciAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5
cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1
cm4gc2l6ZW9mICggICAgdWludDE2ICApOyB9CUVtUHJveHlFcnIgICYJCW9wZXJhdG9yPSAoY29u
c3QgYm9vbCk7CUVtUHJveHlFcnIgICYJCW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtUHJveHlF
cnIgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVtUHJveHlFcnIgICYJCW9w
ZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgc2hvcnQpOwlFbVByb3h5RXJyICAmCQlvcGVyYXRvcj0g
KGNvbnN0IHVuc2lnbmVkIGludCk7CUVtUHJveHlFcnIgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5z
aWduZWQgbG9uZyk7CUVtUHJveHlFcnIgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGNoYXIp
OwlFbVByb3h5RXJyICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVtUHJveHlF
cnIgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGludCk7CUVtUHJveHlFcnIgICYJCW9wZXJh
dG9yPSAoY29uc3Qgc2lnbmVkIGxvbmcpOwlFbVByb3h5RXJyICAmCQlvcGVyYXRvcj0gKGNvbnN0
IHZvaWQqKTsJRW1Qcm94eUVyciAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5RXJyICAmKTsJ
b3BlcmF0b3IgICBFcnIgICAodm9pZCkgY29uc3Q7CUVtQWxpYXNFcnIgIDxMQVM+CW9wZXJhdG9y
W10gKGludCk7CWNvbnN0IEVtQWxpYXNFcnIgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7
CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbc2l6ZW9mICggICAgdWludDE2ICApXTsJ
fSBmTG9jYWxEYXRhOwl9OyAgCSB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0ZvbnRJ
RCAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFs
aWFzRm9udElEICAgKHB0cl90eXBlKTsJRW1BbGlhc0ZvbnRJRCAgIChjb25zdCBFbUFsaWFzRm9u
dElEICA8QT4mKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7
IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICB1
aW50OCAgKTsgfQlFbUFsaWFzRm9udElEICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgYm9vbCk7CUVt
QWxpYXNGb250SUQgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1BbGlhc0ZvbnRJRCAg
PEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbUFsaWFzRm9udElEICA8QT4m
CW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgc2hvcnQpOwlFbUFsaWFzRm9udElEICA8QT4mCW9w
ZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJRW1BbGlhc0ZvbnRJRCAgPEE+JglvcGVyYXRv
cj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbUFsaWFzRm9udElEICA8QT4mCW9wZXJhdG9yPSAo
Y29uc3Qgc2lnbmVkIGNoYXIpOwlFbUFsaWFzRm9udElEICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
c2lnbmVkIHNob3J0KTsJRW1BbGlhc0ZvbnRJRCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25l
ZCBpbnQpOwlFbUFsaWFzRm9udElEICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGxvbmcp
OwlFbUFsaWFzRm9udElEICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgdm9pZCopOwlFbUFsaWFzRm9u
dElEICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0ZvbnRJRCAgPEE+Jik7CW9wZXJhdG9y
ICAgRm9udElEICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzRm9udElEICA8QT4Jb3BlcmF0b3JbXSAo
aW50KTsJY29uc3QgRW1BbGlhc0ZvbnRJRCAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXBy
aXZhdGU6CUVtQWxpYXNGb250SUQgICAodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJfTsgCWNsYXNz
IEVtUHJveHlGb250SUQgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94
eUZvbnRJRCAgICh2b2lkKTsJRW1Qcm94eUZvbnRJRCAgIChjb25zdCBFbVByb3h5Rm9udElEICAm
KTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZM
b2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXpl
b2YgKCAgICB1aW50OCAgKTsgfQlFbVByb3h5Rm9udElEICAmCQlvcGVyYXRvcj0gKGNvbnN0IGJv
b2wpOwlFbVByb3h5Rm9udElEICAmCQlvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbVByb3h5Rm9u
dElEICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbVByb3h5Rm9udElEICAm
CQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1Qcm94eUZvbnRJRCAgJgkJb3Bl
cmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbVByb3h5Rm9udElEICAmCQlvcGVyYXRvcj0g
KGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbVByb3h5Rm9udElEICAmCQlvcGVyYXRvcj0gKGNvbnN0
IHNpZ25lZCBjaGFyKTsJRW1Qcm94eUZvbnRJRCAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQg
c2hvcnQpOwlFbVByb3h5Rm9udElEICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlF
bVByb3h5Rm9udElEICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJRW1Qcm94eUZv
bnRJRCAgJgkJb3BlcmF0b3I9IChjb25zdCB2b2lkKik7CUVtUHJveHlGb250SUQgICYJCW9wZXJh
dG9yPSAoY29uc3QgRW1Qcm94eUZvbnRJRCAgJik7CW9wZXJhdG9yICAgRm9udElEICAgKHZvaWQp
IGNvbnN0OwlFbUFsaWFzRm9udElEICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFs
aWFzRm9udElEICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3Qg
ewljaGFyCQkJX2J5dGVzW3NpemVvZiAoICAgIHVpbnQ4ICApXTsJfSBmTG9jYWxEYXRhOwl9OyAg
CSB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0Zvcm1PYmplY3RLaW5kICAJewlwdWJs
aWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNGb3JtT2Jq
ZWN0S2luZCAgIChwdHJfdHlwZSk7CUVtQWxpYXNGb3JtT2JqZWN0S2luZCAgIChjb25zdCBFbUFs
aWFzRm9ybU9iamVjdEtpbmQgIDxBPiYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJ
eyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJu
IHNpemVvZiAoICAgIHVpbnQ4ICApOyB9CUVtQWxpYXNGb3JtT2JqZWN0S2luZCAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IGJvb2wpOwlFbUFsaWFzRm9ybU9iamVjdEtpbmQgIDxBPiYJb3BlcmF0b3I9
IChjb25zdCBjaGFyKTsJRW1BbGlhc0Zvcm1PYmplY3RLaW5kICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgdW5zaWduZWQgY2hhcik7CUVtQWxpYXNGb3JtT2JqZWN0S2luZCAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1BbGlhc0Zvcm1PYmplY3RLaW5kICA8QT4mCW9wZXJh
dG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJRW1BbGlhc0Zvcm1PYmplY3RLaW5kICA8QT4mCW9w
ZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgbG9uZyk7CUVtQWxpYXNGb3JtT2JqZWN0S2luZCAgPEE+
JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1BbGlhc0Zvcm1PYmplY3RLaW5kICA8
QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIHNob3J0KTsJRW1BbGlhc0Zvcm1PYmplY3RLaW5k
ICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGludCk7CUVtQWxpYXNGb3JtT2JqZWN0S2lu
ZCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJRW1BbGlhc0Zvcm1PYmplY3RL
aW5kICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgdm9pZCopOwlFbUFsaWFzRm9ybU9iamVjdEtpbmQg
IDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzRm9ybU9iamVjdEtpbmQgIDxBPiYpOwlvcGVy
YXRvciAgIEZvcm1PYmplY3RLaW5kICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzRm9ybU9iamVjdEtp
bmQgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzRm9ybU9iamVjdEtpbmQgIDxB
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzRm9ybU9iamVjdEtpbmQg
ICAodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJfTsgCWNsYXNzIEVtUHJveHlGb3JtT2JqZWN0S2lu
ZCAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5Rm9ybU9iamVjdEtp
bmQgICAodm9pZCk7CUVtUHJveHlGb3JtT2JqZWN0S2luZCAgIChjb25zdCBFbVByb3h5Rm9ybU9i
amVjdEtpbmQgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0
cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsg
cmV0dXJuIHNpemVvZiAoICAgIHVpbnQ4ICApOyB9CUVtUHJveHlGb3JtT2JqZWN0S2luZCAgJgkJ
b3BlcmF0b3I9IChjb25zdCBib29sKTsJRW1Qcm94eUZvcm1PYmplY3RLaW5kICAmCQlvcGVyYXRv
cj0gKGNvbnN0IGNoYXIpOwlFbVByb3h5Rm9ybU9iamVjdEtpbmQgICYJCW9wZXJhdG9yPSAoY29u
c3QgdW5zaWduZWQgY2hhcik7CUVtUHJveHlGb3JtT2JqZWN0S2luZCAgJgkJb3BlcmF0b3I9IChj
b25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtUHJveHlGb3JtT2JqZWN0S2luZCAgJgkJb3BlcmF0b3I9
IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbVByb3h5Rm9ybU9iamVjdEtpbmQgICYJCW9wZXJhdG9y
PSAoY29uc3QgdW5zaWduZWQgbG9uZyk7CUVtUHJveHlGb3JtT2JqZWN0S2luZCAgJgkJb3BlcmF0
b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVtUHJveHlGb3JtT2JqZWN0S2luZCAgJgkJb3BlcmF0
b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbVByb3h5Rm9ybU9iamVjdEtpbmQgICYJCW9wZXJh
dG9yPSAoY29uc3Qgc2lnbmVkIGludCk7CUVtUHJveHlGb3JtT2JqZWN0S2luZCAgJgkJb3BlcmF0
b3I9IChjb25zdCBzaWduZWQgbG9uZyk7CUVtUHJveHlGb3JtT2JqZWN0S2luZCAgJgkJb3BlcmF0
b3I9IChjb25zdCB2b2lkKik7CUVtUHJveHlGb3JtT2JqZWN0S2luZCAgJgkJb3BlcmF0b3I9IChj
b25zdCBFbVByb3h5Rm9ybU9iamVjdEtpbmQgICYpOwlvcGVyYXRvciAgIEZvcm1PYmplY3RLaW5k
ICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzRm9ybU9iamVjdEtpbmQgIDxMQVM+CW9wZXJhdG9yW10g
KGludCk7CWNvbnN0IEVtQWxpYXNGb3JtT2JqZWN0S2luZCAgPExBUz4Jb3BlcmF0b3JbXSAoaW50
KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1tzaXplb2YgKCAgICB1aW50
OCAgKV07CX0gZkxvY2FsRGF0YTsJfTsgIAkgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxp
YXNMb2NhbElEICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5
cGU7CUVtQWxpYXNMb2NhbElEICAgKHB0cl90eXBlKTsJRW1BbGlhc0xvY2FsSUQgICAoY29uc3Qg
RW1BbGlhc0xvY2FsSUQgIDxBPiYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNp
emVvZiAoICAgIHVpbnQzMiAgKTsgfQlFbUFsaWFzTG9jYWxJRCAgPEE+JglvcGVyYXRvcj0gKGNv
bnN0IGJvb2wpOwlFbUFsaWFzTG9jYWxJRCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlF
bUFsaWFzTG9jYWxJRCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbUFs
aWFzTG9jYWxJRCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1BbGlh
c0xvY2FsSUQgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbUFsaWFzTG9j
YWxJRCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbUFsaWFzTG9jYWxJ
RCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1BbGlhc0xvY2FsSUQgIDxB
PiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbUFsaWFzTG9jYWxJRCAgPEE+Jglv
cGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbUFsaWFzTG9jYWxJRCAgPEE+JglvcGVyYXRv
cj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJRW1BbGlhc0xvY2FsSUQgIDxBPiYJb3BlcmF0b3I9IChj
b25zdCB2b2lkKik7CUVtQWxpYXNMb2NhbElEICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlh
c0xvY2FsSUQgIDxBPiYpOwlvcGVyYXRvciAgIExvY2FsSUQgICAodm9pZCkgY29uc3Q7CUVtQWxp
YXNMb2NhbElEICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0xvY2FsSUQgIDxB
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzTG9jYWxJRCAgICh2b2lk
KTsJcHRyX3R5cGUJCQlmUHRyOwl9OyAJY2xhc3MgRW1Qcm94eUxvY2FsSUQgIAl7CXB1YmxpYzoJ
dHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUxvY2FsSUQgICAodm9pZCk7CUVtUHJveHlM
b2NhbElEICAgKGNvbnN0IEVtUHJveHlMb2NhbElEICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZv
aWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVf
dAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICB1aW50MzIgICk7IH0JRW1Q
cm94eUxvY2FsSUQgICYJCW9wZXJhdG9yPSAoY29uc3QgYm9vbCk7CUVtUHJveHlMb2NhbElEICAm
CQlvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbVByb3h5TG9jYWxJRCAgJgkJb3BlcmF0b3I9IChj
b25zdCB1bnNpZ25lZCBjaGFyKTsJRW1Qcm94eUxvY2FsSUQgICYJCW9wZXJhdG9yPSAoY29uc3Qg
dW5zaWduZWQgc2hvcnQpOwlFbVByb3h5TG9jYWxJRCAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNp
Z25lZCBpbnQpOwlFbVByb3h5TG9jYWxJRCAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBs
b25nKTsJRW1Qcm94eUxvY2FsSUQgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGNoYXIpOwlF
bVByb3h5TG9jYWxJRCAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbVByb3h5
TG9jYWxJRCAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgaW50KTsJRW1Qcm94eUxvY2FsSUQg
ICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGxvbmcpOwlFbVByb3h5TG9jYWxJRCAgJgkJb3Bl
cmF0b3I9IChjb25zdCB2b2lkKik7CUVtUHJveHlMb2NhbElEICAmCQlvcGVyYXRvcj0gKGNvbnN0
IEVtUHJveHlMb2NhbElEICAmKTsJb3BlcmF0b3IgICBMb2NhbElEICAgKHZvaWQpIGNvbnN0OwlF
bUFsaWFzTG9jYWxJRCAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0xvY2Fs
SUQgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJ
CQlfYnl0ZXNbc2l6ZW9mICggICAgdWludDMyICApXTsJfSBmTG9jYWxEYXRhOwl9OyAgIAogdGVt
cGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNOZXRJUEFkZHIgIAl7CXB1YmxpYzoJdHlwZWRl
ZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc05ldElQQWRkciAgIChwdHJf
dHlwZSk7CUVtQWxpYXNOZXRJUEFkZHIgICAoY29uc3QgRW1BbGlhc05ldElQQWRkciAgPEE+Jik7
CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBz
aXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4gc2l6ZW9mICggICAgdWludDMyICApOyB9
CUVtQWxpYXNOZXRJUEFkZHIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBib29sKTsJRW1BbGlhc05l
dElQQWRkciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbUFsaWFzTmV0SVBBZGRyICA8
QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVtQWxpYXNOZXRJUEFkZHIgIDxB
PiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtQWxpYXNOZXRJUEFkZHIgIDxB
PiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbUFsaWFzTmV0SVBBZGRyICA8QT4m
CW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgbG9uZyk7CUVtQWxpYXNOZXRJUEFkZHIgIDxBPiYJ
b3BlcmF0b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVtQWxpYXNOZXRJUEFkZHIgIDxBPiYJb3Bl
cmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbUFsaWFzTmV0SVBBZGRyICA8QT4mCW9wZXJh
dG9yPSAoY29uc3Qgc2lnbmVkIGludCk7CUVtQWxpYXNOZXRJUEFkZHIgIDxBPiYJb3BlcmF0b3I9
IChjb25zdCBzaWduZWQgbG9uZyk7CUVtQWxpYXNOZXRJUEFkZHIgIDxBPiYJb3BlcmF0b3I9IChj
b25zdCB2b2lkKik7CUVtQWxpYXNOZXRJUEFkZHIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFs
aWFzTmV0SVBBZGRyICA8QT4mKTsJb3BlcmF0b3IgICBOZXRJUEFkZHIgICAodm9pZCkgY29uc3Q7
CUVtQWxpYXNOZXRJUEFkZHIgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzTmV0
SVBBZGRyICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc05ldElQ
QWRkciAgICh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwl9OyAJY2xhc3MgRW1Qcm94eU5ldElQQWRk
ciAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5TmV0SVBBZGRyICAg
KHZvaWQpOwlFbVByb3h5TmV0SVBBZGRyICAgKGNvbnN0IEVtUHJveHlOZXRJUEFkZHIgICYpOwlw
dHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2Fs
RGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNpemVvZiAo
ICAgIHVpbnQzMiAgKTsgfQlFbVByb3h5TmV0SVBBZGRyICAmCQlvcGVyYXRvcj0gKGNvbnN0IGJv
b2wpOwlFbVByb3h5TmV0SVBBZGRyICAmCQlvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbVByb3h5
TmV0SVBBZGRyICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbVByb3h5TmV0
SVBBZGRyICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1Qcm94eU5ldElQ
QWRkciAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbVByb3h5TmV0SVBBZGRy
ICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbVByb3h5TmV0SVBBZGRyICAm
CQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1Qcm94eU5ldElQQWRkciAgJgkJb3Bl
cmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbVByb3h5TmV0SVBBZGRyICAmCQlvcGVyYXRv
cj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbVByb3h5TmV0SVBBZGRyICAmCQlvcGVyYXRvcj0gKGNv
bnN0IHNpZ25lZCBsb25nKTsJRW1Qcm94eU5ldElQQWRkciAgJgkJb3BlcmF0b3I9IChjb25zdCB2
b2lkKik7CUVtUHJveHlOZXRJUEFkZHIgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eU5ldElQ
QWRkciAgJik7CW9wZXJhdG9yICAgTmV0SVBBZGRyICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzTmV0
SVBBZGRyICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzTmV0SVBBZGRyICA8
TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5
dGVzW3NpemVvZiAoICAgIHVpbnQzMiAgKV07CX0gZkxvY2FsRGF0YTsJfTsgIAkgdGVtcGxhdGUg
PGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNQYXR0ZXJuVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5
cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzUGF0dGVyblR5cGUgICAocHRyX3R5
cGUpOwlFbUFsaWFzUGF0dGVyblR5cGUgICAoY29uc3QgRW1BbGlhc1BhdHRlcm5UeXBlICA8QT4m
KTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICB1aW50OCAgKTsg
fQlFbUFsaWFzUGF0dGVyblR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBib29sKTsJRW1BbGlh
c1BhdHRlcm5UeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtQWxpYXNQYXR0ZXJu
VHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbUFsaWFzUGF0dGVy
blR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtQWxpYXNQYXR0
ZXJuVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGludCk7CUVtQWxpYXNQYXR0
ZXJuVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbUFsaWFzUGF0
dGVyblR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVtQWxpYXNQYXR0
ZXJuVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVtQWxpYXNQYXR0
ZXJuVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbUFsaWFzUGF0dGVy
blR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgbG9uZyk7CUVtQWxpYXNQYXR0ZXJu
VHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHZvaWQqKTsJRW1BbGlhc1BhdHRlcm5UeXBlICA8
QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1BhdHRlcm5UeXBlICA8QT4mKTsJb3BlcmF0b3Ig
ICBQYXR0ZXJuVHlwZSAgICh2b2lkKSBjb25zdDsJRW1BbGlhc1BhdHRlcm5UeXBlICA8QT4Jb3Bl
cmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1BhdHRlcm5UeXBlICA8QT4Jb3BlcmF0b3JbXSAo
aW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1BhdHRlcm5UeXBlICAgKHZvaWQpOwlwdHJfdHlw
ZQkJCWZQdHI7CX07IAljbGFzcyBFbVByb3h5UGF0dGVyblR5cGUgIAl7CXB1YmxpYzoJdHlwZWRl
ZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVBhdHRlcm5UeXBlICAgKHZvaWQpOwlFbVByb3h5UGF0
dGVyblR5cGUgICAoY29uc3QgRW1Qcm94eVBhdHRlcm5UeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQ
dHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICB1aW50OCAgKTsg
fQlFbVByb3h5UGF0dGVyblR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgYm9vbCk7CUVtUHJveHlQ
YXR0ZXJuVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1Qcm94eVBhdHRlcm5UeXBl
ICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbVByb3h5UGF0dGVyblR5cGUg
ICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgc2hvcnQpOwlFbVByb3h5UGF0dGVyblR5cGUg
ICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJRW1Qcm94eVBhdHRlcm5UeXBlICAm
CQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbVByb3h5UGF0dGVyblR5cGUgICYJ
CW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGNoYXIpOwlFbVByb3h5UGF0dGVyblR5cGUgICYJCW9w
ZXJhdG9yPSAoY29uc3Qgc2lnbmVkIHNob3J0KTsJRW1Qcm94eVBhdHRlcm5UeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbVByb3h5UGF0dGVyblR5cGUgICYJCW9wZXJhdG9y
PSAoY29uc3Qgc2lnbmVkIGxvbmcpOwlFbVByb3h5UGF0dGVyblR5cGUgICYJCW9wZXJhdG9yPSAo
Y29uc3Qgdm9pZCopOwlFbVByb3h5UGF0dGVyblR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Q
cm94eVBhdHRlcm5UeXBlICAmKTsJb3BlcmF0b3IgICBQYXR0ZXJuVHlwZSAgICh2b2lkKSBjb25z
dDsJRW1BbGlhc1BhdHRlcm5UeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFs
aWFzUGF0dGVyblR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0
cnVjdCB7CWNoYXIJCQlfYnl0ZXNbc2l6ZW9mICggICAgdWludDggICldOwl9IGZMb2NhbERhdGE7
CX07ICAJIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzU2NyT3BlcmF0aW9uICAJewlw
dWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNTY3JP
cGVyYXRpb24gICAocHRyX3R5cGUpOwlFbUFsaWFzU2NyT3BlcmF0aW9uICAgKGNvbnN0IEVtQWxp
YXNTY3JPcGVyYXRpb24gIDxBPiYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNp
emVvZiAoICAgIHVpbnQ4ICApOyB9CUVtQWxpYXNTY3JPcGVyYXRpb24gIDxBPiYJb3BlcmF0b3I9
IChjb25zdCBib29sKTsJRW1BbGlhc1Njck9wZXJhdGlvbiAgPEE+JglvcGVyYXRvcj0gKGNvbnN0
IGNoYXIpOwlFbUFsaWFzU2NyT3BlcmF0aW9uICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWdu
ZWQgY2hhcik7CUVtQWxpYXNTY3JPcGVyYXRpb24gIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNp
Z25lZCBzaG9ydCk7CUVtQWxpYXNTY3JPcGVyYXRpb24gIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1
bnNpZ25lZCBpbnQpOwlFbUFsaWFzU2NyT3BlcmF0aW9uICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
dW5zaWduZWQgbG9uZyk7CUVtQWxpYXNTY3JPcGVyYXRpb24gIDxBPiYJb3BlcmF0b3I9IChjb25z
dCBzaWduZWQgY2hhcik7CUVtQWxpYXNTY3JPcGVyYXRpb24gIDxBPiYJb3BlcmF0b3I9IChjb25z
dCBzaWduZWQgc2hvcnQpOwlFbUFsaWFzU2NyT3BlcmF0aW9uICA8QT4mCW9wZXJhdG9yPSAoY29u
c3Qgc2lnbmVkIGludCk7CUVtQWxpYXNTY3JPcGVyYXRpb24gIDxBPiYJb3BlcmF0b3I9IChjb25z
dCBzaWduZWQgbG9uZyk7CUVtQWxpYXNTY3JPcGVyYXRpb24gIDxBPiYJb3BlcmF0b3I9IChjb25z
dCB2b2lkKik7CUVtQWxpYXNTY3JPcGVyYXRpb24gIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFs
aWFzU2NyT3BlcmF0aW9uICA8QT4mKTsJb3BlcmF0b3IgICBTY3JPcGVyYXRpb24gICAodm9pZCkg
Y29uc3Q7CUVtQWxpYXNTY3JPcGVyYXRpb24gIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBF
bUFsaWFzU2NyT3BlcmF0aW9uICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJ
RW1BbGlhc1Njck9wZXJhdGlvbiAgICh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwl9OyAJY2xhc3Mg
RW1Qcm94eVNjck9wZXJhdGlvbiAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlF
bVByb3h5U2NyT3BlcmF0aW9uICAgKHZvaWQpOwlFbVByb3h5U2NyT3BlcmF0aW9uICAgKGNvbnN0
IEVtUHJveHlTY3JPcGVyYXRpb24gICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJ
eyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXpl
ICh2b2lkKQkJCXsgcmV0dXJuIHNpemVvZiAoICAgIHVpbnQ4ICApOyB9CUVtUHJveHlTY3JPcGVy
YXRpb24gICYJCW9wZXJhdG9yPSAoY29uc3QgYm9vbCk7CUVtUHJveHlTY3JPcGVyYXRpb24gICYJ
CW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtUHJveHlTY3JPcGVyYXRpb24gICYJCW9wZXJhdG9y
PSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVtUHJveHlTY3JPcGVyYXRpb24gICYJCW9wZXJhdG9y
PSAoY29uc3QgdW5zaWduZWQgc2hvcnQpOwlFbVByb3h5U2NyT3BlcmF0aW9uICAmCQlvcGVyYXRv
cj0gKGNvbnN0IHVuc2lnbmVkIGludCk7CUVtUHJveHlTY3JPcGVyYXRpb24gICYJCW9wZXJhdG9y
PSAoY29uc3QgdW5zaWduZWQgbG9uZyk7CUVtUHJveHlTY3JPcGVyYXRpb24gICYJCW9wZXJhdG9y
PSAoY29uc3Qgc2lnbmVkIGNoYXIpOwlFbVByb3h5U2NyT3BlcmF0aW9uICAmCQlvcGVyYXRvcj0g
KGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVtUHJveHlTY3JPcGVyYXRpb24gICYJCW9wZXJhdG9yPSAo
Y29uc3Qgc2lnbmVkIGludCk7CUVtUHJveHlTY3JPcGVyYXRpb24gICYJCW9wZXJhdG9yPSAoY29u
c3Qgc2lnbmVkIGxvbmcpOwlFbVByb3h5U2NyT3BlcmF0aW9uICAmCQlvcGVyYXRvcj0gKGNvbnN0
IHZvaWQqKTsJRW1Qcm94eVNjck9wZXJhdGlvbiAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5
U2NyT3BlcmF0aW9uICAmKTsJb3BlcmF0b3IgICBTY3JPcGVyYXRpb24gICAodm9pZCkgY29uc3Q7
CUVtQWxpYXNTY3JPcGVyYXRpb24gIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxp
YXNTY3JPcGVyYXRpb24gIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0
cnVjdCB7CWNoYXIJCQlfYnl0ZXNbc2l6ZW9mICggICAgdWludDggICldOwl9IGZMb2NhbERhdGE7
CX07ICAJIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzU2xrUGt0SGVhZGVyQ2hlY2tz
dW0gIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1B
bGlhc1Nsa1BrdEhlYWRlckNoZWNrc3VtICAgKHB0cl90eXBlKTsJRW1BbGlhc1Nsa1BrdEhlYWRl
ckNoZWNrc3VtICAgKGNvbnN0IEVtQWxpYXNTbGtQa3RIZWFkZXJDaGVja3N1bSAgPEE+Jik7CXB0
cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXpl
X3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4gc2l6ZW9mICggICAgdWludDggICk7IH0JRW1B
bGlhc1Nsa1BrdEhlYWRlckNoZWNrc3VtICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgYm9vbCk7CUVt
QWxpYXNTbGtQa3RIZWFkZXJDaGVja3N1bSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlF
bUFsaWFzU2xrUGt0SGVhZGVyQ2hlY2tzdW0gIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25l
ZCBjaGFyKTsJRW1BbGlhc1Nsa1BrdEhlYWRlckNoZWNrc3VtICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgdW5zaWduZWQgc2hvcnQpOwlFbUFsaWFzU2xrUGt0SGVhZGVyQ2hlY2tzdW0gIDxBPiYJb3Bl
cmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbUFsaWFzU2xrUGt0SGVhZGVyQ2hlY2tzdW0g
IDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBsb25nKTsJRW1BbGlhc1Nsa1BrdEhlYWRl
ckNoZWNrc3VtICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGNoYXIpOwlFbUFsaWFzU2xr
UGt0SGVhZGVyQ2hlY2tzdW0gIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlF
bUFsaWFzU2xrUGt0SGVhZGVyQ2hlY2tzdW0gIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQg
aW50KTsJRW1BbGlhc1Nsa1BrdEhlYWRlckNoZWNrc3VtICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
c2lnbmVkIGxvbmcpOwlFbUFsaWFzU2xrUGt0SGVhZGVyQ2hlY2tzdW0gIDxBPiYJb3BlcmF0b3I9
IChjb25zdCB2b2lkKik7CUVtQWxpYXNTbGtQa3RIZWFkZXJDaGVja3N1bSAgPEE+JglvcGVyYXRv
cj0gKGNvbnN0IEVtQWxpYXNTbGtQa3RIZWFkZXJDaGVja3N1bSAgPEE+Jik7CW9wZXJhdG9yICAg
U2xrUGt0SGVhZGVyQ2hlY2tzdW0gICAodm9pZCkgY29uc3Q7CUVtQWxpYXNTbGtQa3RIZWFkZXJD
aGVja3N1bSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTbGtQa3RIZWFkZXJD
aGVja3N1bSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNTbGtQ
a3RIZWFkZXJDaGVja3N1bSAgICh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwl9OyAJY2xhc3MgRW1Q
cm94eVNsa1BrdEhlYWRlckNoZWNrc3VtICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5
cGU7CUVtUHJveHlTbGtQa3RIZWFkZXJDaGVja3N1bSAgICh2b2lkKTsJRW1Qcm94eVNsa1BrdEhl
YWRlckNoZWNrc3VtICAgKGNvbnN0IEVtUHJveHlTbGtQa3RIZWFkZXJDaGVja3N1bSAgJik7CXB0
cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxE
YXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4gc2l6ZW9mICgg
ICAgdWludDggICk7IH0JRW1Qcm94eVNsa1BrdEhlYWRlckNoZWNrc3VtICAmCQlvcGVyYXRvcj0g
KGNvbnN0IGJvb2wpOwlFbVByb3h5U2xrUGt0SGVhZGVyQ2hlY2tzdW0gICYJCW9wZXJhdG9yPSAo
Y29uc3QgY2hhcik7CUVtUHJveHlTbGtQa3RIZWFkZXJDaGVja3N1bSAgJgkJb3BlcmF0b3I9IChj
b25zdCB1bnNpZ25lZCBjaGFyKTsJRW1Qcm94eVNsa1BrdEhlYWRlckNoZWNrc3VtICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1Qcm94eVNsa1BrdEhlYWRlckNoZWNrc3Vt
ICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGludCk7CUVtUHJveHlTbGtQa3RIZWFkZXJD
aGVja3N1bSAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBsb25nKTsJRW1Qcm94eVNsa1Br
dEhlYWRlckNoZWNrc3VtICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1Qcm94
eVNsa1BrdEhlYWRlckNoZWNrc3VtICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7
CUVtUHJveHlTbGtQa3RIZWFkZXJDaGVja3N1bSAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQg
aW50KTsJRW1Qcm94eVNsa1BrdEhlYWRlckNoZWNrc3VtICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNp
Z25lZCBsb25nKTsJRW1Qcm94eVNsa1BrdEhlYWRlckNoZWNrc3VtICAmCQlvcGVyYXRvcj0gKGNv
bnN0IHZvaWQqKTsJRW1Qcm94eVNsa1BrdEhlYWRlckNoZWNrc3VtICAmCQlvcGVyYXRvcj0gKGNv
bnN0IEVtUHJveHlTbGtQa3RIZWFkZXJDaGVja3N1bSAgJik7CW9wZXJhdG9yICAgU2xrUGt0SGVh
ZGVyQ2hlY2tzdW0gICAodm9pZCkgY29uc3Q7CUVtQWxpYXNTbGtQa3RIZWFkZXJDaGVja3N1bSAg
PExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1Nsa1BrdEhlYWRlckNoZWNrc3Vt
ICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJ
X2J5dGVzW3NpemVvZiAoICAgIHVpbnQ4ICApXTsJfSBmTG9jYWxEYXRhOwl9OyAgCSB0ZW1wbGF0
ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1VuZGVybGluZU1vZGVUeXBlICAJewlwdWJsaWM6CXR5
cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNVbmRlcmxpbmVNb2Rl
VHlwZSAgIChwdHJfdHlwZSk7CUVtQWxpYXNVbmRlcmxpbmVNb2RlVHlwZSAgIChjb25zdCBFbUFs
aWFzVW5kZXJsaW5lTW9kZVR5cGUgIDxBPiYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29u
c3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0
dXJuIHNpemVvZiAoICAgIHVpbnQ4ICApOyB9CUVtQWxpYXNVbmRlcmxpbmVNb2RlVHlwZSAgPEE+
JglvcGVyYXRvcj0gKGNvbnN0IGJvb2wpOwlFbUFsaWFzVW5kZXJsaW5lTW9kZVR5cGUgIDxBPiYJ
b3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1BbGlhc1VuZGVybGluZU1vZGVUeXBlICA8QT4mCW9w
ZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVtQWxpYXNVbmRlcmxpbmVNb2RlVHlwZSAg
PEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1BbGlhc1VuZGVybGluZU1v
ZGVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJRW1BbGlhc1VuZGVy
bGluZU1vZGVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgbG9uZyk7CUVtQWxp
YXNVbmRlcmxpbmVNb2RlVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJ
RW1BbGlhc1VuZGVybGluZU1vZGVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIHNo
b3J0KTsJRW1BbGlhc1VuZGVybGluZU1vZGVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2ln
bmVkIGludCk7CUVtQWxpYXNVbmRlcmxpbmVNb2RlVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0
IHNpZ25lZCBsb25nKTsJRW1BbGlhc1VuZGVybGluZU1vZGVUeXBlICA8QT4mCW9wZXJhdG9yPSAo
Y29uc3Qgdm9pZCopOwlFbUFsaWFzVW5kZXJsaW5lTW9kZVR5cGUgIDxBPiYJb3BlcmF0b3I9IChj
b25zdCBFbUFsaWFzVW5kZXJsaW5lTW9kZVR5cGUgIDxBPiYpOwlvcGVyYXRvciAgIFVuZGVybGlu
ZU1vZGVUeXBlICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzVW5kZXJsaW5lTW9kZVR5cGUgIDxBPglv
cGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzVW5kZXJsaW5lTW9kZVR5cGUgIDxBPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzVW5kZXJsaW5lTW9kZVR5cGUgICAo
dm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJfTsgCWNsYXNzIEVtUHJveHlVbmRlcmxpbmVNb2RlVHlw
ZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5VW5kZXJsaW5lTW9k
ZVR5cGUgICAodm9pZCk7CUVtUHJveHlVbmRlcmxpbmVNb2RlVHlwZSAgIChjb25zdCBFbVByb3h5
VW5kZXJsaW5lTW9kZVR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2
b2lkKQkJCXsgcmV0dXJuIHNpemVvZiAoICAgIHVpbnQ4ICApOyB9CUVtUHJveHlVbmRlcmxpbmVN
b2RlVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBib29sKTsJRW1Qcm94eVVuZGVybGluZU1vZGVU
eXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbVByb3h5VW5kZXJsaW5lTW9kZVR5cGUg
ICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVtUHJveHlVbmRlcmxpbmVNb2Rl
VHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtUHJveHlVbmRlcmxp
bmVNb2RlVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbVByb3h5VW5k
ZXJsaW5lTW9kZVR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgbG9uZyk7CUVtUHJv
eHlVbmRlcmxpbmVNb2RlVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVt
UHJveHlVbmRlcmxpbmVNb2RlVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQp
OwlFbVByb3h5VW5kZXJsaW5lTW9kZVR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGlu
dCk7CUVtUHJveHlVbmRlcmxpbmVNb2RlVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQg
bG9uZyk7CUVtUHJveHlVbmRlcmxpbmVNb2RlVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCB2b2lk
Kik7CUVtUHJveHlVbmRlcmxpbmVNb2RlVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5
VW5kZXJsaW5lTW9kZVR5cGUgICYpOwlvcGVyYXRvciAgIFVuZGVybGluZU1vZGVUeXBlICAgKHZv
aWQpIGNvbnN0OwlFbUFsaWFzVW5kZXJsaW5lTW9kZVR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNVbmRlcmxpbmVNb2RlVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50
KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1tzaXplb2YgKCAgICB1aW50
OCAgKV07CX0gZkxvY2FsRGF0YTsJfTsgIAkgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxp
YXNVbmRvTW9kZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90
eXBlOwlFbUFsaWFzVW5kb01vZGUgICAocHRyX3R5cGUpOwlFbUFsaWFzVW5kb01vZGUgICAoY29u
c3QgRW1BbGlhc1VuZG9Nb2RlICA8QT4mKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0
CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVy
biBzaXplb2YgKCAgICB1aW50OCAgKTsgfQlFbUFsaWFzVW5kb01vZGUgIDxBPiYJb3BlcmF0b3I9
IChjb25zdCBib29sKTsJRW1BbGlhc1VuZG9Nb2RlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgY2hh
cik7CUVtQWxpYXNVbmRvTW9kZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIp
OwlFbUFsaWFzVW5kb01vZGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7
CUVtQWxpYXNVbmRvTW9kZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGludCk7CUVt
QWxpYXNVbmRvTW9kZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbUFs
aWFzVW5kb01vZGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVtQWxpYXNV
bmRvTW9kZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVtQWxpYXNVbmRv
TW9kZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbUFsaWFzVW5kb01vZGUg
IDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgbG9uZyk7CUVtQWxpYXNVbmRvTW9kZSAgPEE+
JglvcGVyYXRvcj0gKGNvbnN0IHZvaWQqKTsJRW1BbGlhc1VuZG9Nb2RlICA8QT4mCW9wZXJhdG9y
PSAoY29uc3QgRW1BbGlhc1VuZG9Nb2RlICA8QT4mKTsJb3BlcmF0b3IgICBVbmRvTW9kZSAgICh2
b2lkKSBjb25zdDsJRW1BbGlhc1VuZG9Nb2RlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3Qg
RW1BbGlhc1VuZG9Nb2RlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1B
bGlhc1VuZG9Nb2RlICAgKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CX07IAljbGFzcyBFbVByb3h5
VW5kb01vZGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVVuZG9N
b2RlICAgKHZvaWQpOwlFbVByb3h5VW5kb01vZGUgICAoY29uc3QgRW1Qcm94eVVuZG9Nb2RlICAm
KTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZM
b2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXpl
b2YgKCAgICB1aW50OCAgKTsgfQlFbVByb3h5VW5kb01vZGUgICYJCW9wZXJhdG9yPSAoY29uc3Qg
Ym9vbCk7CUVtUHJveHlVbmRvTW9kZSAgJgkJb3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1Qcm94
eVVuZG9Nb2RlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbVByb3h5VW5k
b01vZGUgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgc2hvcnQpOwlFbVByb3h5VW5kb01v
ZGUgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJRW1Qcm94eVVuZG9Nb2RlICAm
CQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbVByb3h5VW5kb01vZGUgICYJCW9w
ZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGNoYXIpOwlFbVByb3h5VW5kb01vZGUgICYJCW9wZXJhdG9y
PSAoY29uc3Qgc2lnbmVkIHNob3J0KTsJRW1Qcm94eVVuZG9Nb2RlICAmCQlvcGVyYXRvcj0gKGNv
bnN0IHNpZ25lZCBpbnQpOwlFbVByb3h5VW5kb01vZGUgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2ln
bmVkIGxvbmcpOwlFbVByb3h5VW5kb01vZGUgICYJCW9wZXJhdG9yPSAoY29uc3Qgdm9pZCopOwlF
bVByb3h5VW5kb01vZGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVVuZG9Nb2RlICAmKTsJ
b3BlcmF0b3IgICBVbmRvTW9kZSAgICh2b2lkKSBjb25zdDsJRW1BbGlhc1VuZG9Nb2RlICA8TEFT
PglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzVW5kb01vZGUgIDxMQVM+CW9wZXJhdG9y
W10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbc2l6ZW9mICgg
ICAgdWludDggICldOwl9IGZMb2NhbERhdGE7CX07ICAJIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFz
cyBFbUFsaWFzVUlPcHRpb25zVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0
cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzVUlPcHRpb25zVHlwZSAgIChwdHJfdHlwZSk7CUVtQWxp
YXNVSU9wdGlvbnNUeXBlICAgKGNvbnN0IEVtQWxpYXNVSU9wdGlvbnNUeXBlICA8QT4mKTsJcHRy
X3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVf
dAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICB1aW50OCAgKTsgfQlFbUFs
aWFzVUlPcHRpb25zVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGJvb2wpOwlFbUFsaWFzVUlP
cHRpb25zVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbUFsaWFzVUlPcHRpb25z
VHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbUFsaWFzVUlPcHRp
b25zVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1BbGlhc1VJ
T3B0aW9uc1R5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbUFsaWFz
VUlPcHRpb25zVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbUFs
aWFzVUlPcHRpb25zVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1B
bGlhc1VJT3B0aW9uc1R5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlF
bUFsaWFzVUlPcHRpb25zVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlF
bUFsaWFzVUlPcHRpb25zVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJ
RW1BbGlhc1VJT3B0aW9uc1R5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB2b2lkKik7CUVtQWxp
YXNVSU9wdGlvbnNUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1VJT3B0aW9uc1R5
cGUgIDxBPiYpOwlvcGVyYXRvciAgIFVJT3B0aW9uc1R5cGUgICAodm9pZCkgY29uc3Q7CUVtQWxp
YXNVSU9wdGlvbnNUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1VJT3B0
aW9uc1R5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzVUlP
cHRpb25zVHlwZSAgICh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwl9OyAJY2xhc3MgRW1Qcm94eVVJ
T3B0aW9uc1R5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVVJ
T3B0aW9uc1R5cGUgICAodm9pZCk7CUVtUHJveHlVSU9wdGlvbnNUeXBlICAgKGNvbnN0IEVtUHJv
eHlVSU9wdGlvbnNUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0
dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZSAodm9p
ZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICB1aW50OCAgKTsgfQlFbVByb3h5VUlPcHRpb25zVHlw
ZSAgJgkJb3BlcmF0b3I9IChjb25zdCBib29sKTsJRW1Qcm94eVVJT3B0aW9uc1R5cGUgICYJCW9w
ZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtUHJveHlVSU9wdGlvbnNUeXBlICAmCQlvcGVyYXRvcj0g
KGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbVByb3h5VUlPcHRpb25zVHlwZSAgJgkJb3BlcmF0b3I9
IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtUHJveHlVSU9wdGlvbnNUeXBlICAmCQlvcGVyYXRv
cj0gKGNvbnN0IHVuc2lnbmVkIGludCk7CUVtUHJveHlVSU9wdGlvbnNUeXBlICAmCQlvcGVyYXRv
cj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbVByb3h5VUlPcHRpb25zVHlwZSAgJgkJb3BlcmF0
b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVtUHJveHlVSU9wdGlvbnNUeXBlICAmCQlvcGVyYXRv
cj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVtUHJveHlVSU9wdGlvbnNUeXBlICAmCQlvcGVyYXRv
cj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbVByb3h5VUlPcHRpb25zVHlwZSAgJgkJb3BlcmF0b3I9
IChjb25zdCBzaWduZWQgbG9uZyk7CUVtUHJveHlVSU9wdGlvbnNUeXBlICAmCQlvcGVyYXRvcj0g
KGNvbnN0IHZvaWQqKTsJRW1Qcm94eVVJT3B0aW9uc1R5cGUgICYJCW9wZXJhdG9yPSAoY29uc3Qg
RW1Qcm94eVVJT3B0aW9uc1R5cGUgICYpOwlvcGVyYXRvciAgIFVJT3B0aW9uc1R5cGUgICAodm9p
ZCkgY29uc3Q7CUVtQWxpYXNVSU9wdGlvbnNUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwlj
b25zdCBFbUFsaWFzVUlPcHRpb25zVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJ
cHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1tzaXplb2YgKCAgICB1aW50OCAgKV07CX0g
ZkxvY2FsRGF0YTsJfTsgIAkgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNXQ2hhciAg
CXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFz
V0NoYXIgICAocHRyX3R5cGUpOwlFbUFsaWFzV0NoYXIgICAoY29uc3QgRW1BbGlhc1dDaGFyICA8
QT4mKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3Rh
dGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICB1aW50MTYg
ICk7IH0JRW1BbGlhc1dDaGFyICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgYm9vbCk7CUVtQWxpYXNX
Q2hhciAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbUFsaWFzV0NoYXIgIDxBPiYJb3Bl
cmF0b3I9IChjb25zdCB1bnNpZ25lZCBjaGFyKTsJRW1BbGlhc1dDaGFyICA8QT4mCW9wZXJhdG9y
PSAoY29uc3QgdW5zaWduZWQgc2hvcnQpOwlFbUFsaWFzV0NoYXIgIDxBPiYJb3BlcmF0b3I9IChj
b25zdCB1bnNpZ25lZCBpbnQpOwlFbUFsaWFzV0NoYXIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1
bnNpZ25lZCBsb25nKTsJRW1BbGlhc1dDaGFyICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVk
IGNoYXIpOwlFbUFsaWFzV0NoYXIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQp
OwlFbUFsaWFzV0NoYXIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgaW50KTsJRW1BbGlh
c1dDaGFyICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGxvbmcpOwlFbUFsaWFzV0NoYXIg
IDxBPiYJb3BlcmF0b3I9IChjb25zdCB2b2lkKik7CUVtQWxpYXNXQ2hhciAgPEE+JglvcGVyYXRv
cj0gKGNvbnN0IEVtQWxpYXNXQ2hhciAgPEE+Jik7CW9wZXJhdG9yICAgV0NoYXIgICAodm9pZCkg
Y29uc3Q7CUVtQWxpYXNXQ2hhciAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNX
Q2hhciAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNXQ2hhciAg
ICh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwl9OyAJY2xhc3MgRW1Qcm94eVdDaGFyICAJewlwdWJs
aWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlXQ2hhciAgICh2b2lkKTsJRW1Qcm94
eVdDaGFyICAgKGNvbnN0IEVtUHJveHlXQ2hhciAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lk
KSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJ
CUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4gc2l6ZW9mICggICAgdWludDE2ICApOyB9CUVtUHJv
eHlXQ2hhciAgJgkJb3BlcmF0b3I9IChjb25zdCBib29sKTsJRW1Qcm94eVdDaGFyICAmCQlvcGVy
YXRvcj0gKGNvbnN0IGNoYXIpOwlFbVByb3h5V0NoYXIgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5z
aWduZWQgY2hhcik7CUVtUHJveHlXQ2hhciAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBz
aG9ydCk7CUVtUHJveHlXQ2hhciAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlF
bVByb3h5V0NoYXIgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgbG9uZyk7CUVtUHJveHlX
Q2hhciAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVtUHJveHlXQ2hhciAgJgkJ
b3BlcmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbVByb3h5V0NoYXIgICYJCW9wZXJhdG9y
PSAoY29uc3Qgc2lnbmVkIGludCk7CUVtUHJveHlXQ2hhciAgJgkJb3BlcmF0b3I9IChjb25zdCBz
aWduZWQgbG9uZyk7CUVtUHJveHlXQ2hhciAgJgkJb3BlcmF0b3I9IChjb25zdCB2b2lkKik7CUVt
UHJveHlXQ2hhciAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5V0NoYXIgICYpOwlvcGVyYXRv
ciAgIFdDaGFyICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzV0NoYXIgIDxMQVM+CW9wZXJhdG9yW10g
KGludCk7CWNvbnN0IEVtQWxpYXNXQ2hhciAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJ
cHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1tzaXplb2YgKCAgICB1aW50MTYgICldOwl9
IGZMb2NhbERhdGE7CX07ICAgCiB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0hvc3RD
b250cm9sU2VsZWN0b3JUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5
cGUgcHRyX3R5cGU7CUVtQWxpYXNIb3N0Q29udHJvbFNlbGVjdG9yVHlwZSAgIChwdHJfdHlwZSk7
CUVtQWxpYXNIb3N0Q29udHJvbFNlbGVjdG9yVHlwZSAgIChjb25zdCBFbUFsaWFzSG9zdENvbnRy
b2xTZWxlY3RvclR5cGUgIDxBPiYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNp
emVvZiAoICAgIHVpbnQxNiAgKTsgfQlFbUFsaWFzSG9zdENvbnRyb2xTZWxlY3RvclR5cGUgIDxB
PiYJb3BlcmF0b3I9IChjb25zdCBib29sKTsJRW1BbGlhc0hvc3RDb250cm9sU2VsZWN0b3JUeXBl
ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtQWxpYXNIb3N0Q29udHJvbFNlbGVjdG9y
VHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbUFsaWFzSG9zdENv
bnRyb2xTZWxlY3RvclR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7
CUVtQWxpYXNIb3N0Q29udHJvbFNlbGVjdG9yVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVu
c2lnbmVkIGludCk7CUVtQWxpYXNIb3N0Q29udHJvbFNlbGVjdG9yVHlwZSAgPEE+JglvcGVyYXRv
cj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbUFsaWFzSG9zdENvbnRyb2xTZWxlY3RvclR5cGUg
IDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVtQWxpYXNIb3N0Q29udHJvbFNl
bGVjdG9yVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVtQWxpYXNI
b3N0Q29udHJvbFNlbGVjdG9yVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBpbnQp
OwlFbUFsaWFzSG9zdENvbnRyb2xTZWxlY3RvclR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBz
aWduZWQgbG9uZyk7CUVtQWxpYXNIb3N0Q29udHJvbFNlbGVjdG9yVHlwZSAgPEE+JglvcGVyYXRv
cj0gKGNvbnN0IHZvaWQqKTsJRW1BbGlhc0hvc3RDb250cm9sU2VsZWN0b3JUeXBlICA8QT4mCW9w
ZXJhdG9yPSAoY29uc3QgRW1BbGlhc0hvc3RDb250cm9sU2VsZWN0b3JUeXBlICA8QT4mKTsJb3Bl
cmF0b3IgICBIb3N0Q29udHJvbFNlbGVjdG9yVHlwZSAgICh2b2lkKSBjb25zdDsJRW1BbGlhc0hv
c3RDb250cm9sU2VsZWN0b3JUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlh
c0hvc3RDb250cm9sU2VsZWN0b3JUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJp
dmF0ZToJRW1BbGlhc0hvc3RDb250cm9sU2VsZWN0b3JUeXBlICAgKHZvaWQpOwlwdHJfdHlwZQkJ
CWZQdHI7CX07IAljbGFzcyBFbVByb3h5SG9zdENvbnRyb2xTZWxlY3RvclR5cGUgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUhvc3RDb250cm9sU2VsZWN0b3JUeXBl
ICAgKHZvaWQpOwlFbVByb3h5SG9zdENvbnRyb2xTZWxlY3RvclR5cGUgICAoY29uc3QgRW1Qcm94
eUhvc3RDb250cm9sU2VsZWN0b3JUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNv
bnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0
U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICB1aW50MTYgICk7IH0JRW1Qcm94eUhv
c3RDb250cm9sU2VsZWN0b3JUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IGJvb2wpOwlFbVByb3h5
SG9zdENvbnRyb2xTZWxlY3RvclR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtUHJv
eHlIb3N0Q29udHJvbFNlbGVjdG9yVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBj
aGFyKTsJRW1Qcm94eUhvc3RDb250cm9sU2VsZWN0b3JUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0
IHVuc2lnbmVkIHNob3J0KTsJRW1Qcm94eUhvc3RDb250cm9sU2VsZWN0b3JUeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHVuc2lnbmVkIGludCk7CUVtUHJveHlIb3N0Q29udHJvbFNlbGVjdG9yVHlw
ZSAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBsb25nKTsJRW1Qcm94eUhvc3RDb250cm9s
U2VsZWN0b3JUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1Qcm94eUhv
c3RDb250cm9sU2VsZWN0b3JUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7
CUVtUHJveHlIb3N0Q29udHJvbFNlbGVjdG9yVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWdu
ZWQgaW50KTsJRW1Qcm94eUhvc3RDb250cm9sU2VsZWN0b3JUeXBlICAmCQlvcGVyYXRvcj0gKGNv
bnN0IHNpZ25lZCBsb25nKTsJRW1Qcm94eUhvc3RDb250cm9sU2VsZWN0b3JUeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHZvaWQqKTsJRW1Qcm94eUhvc3RDb250cm9sU2VsZWN0b3JUeXBlICAmCQlv
cGVyYXRvcj0gKGNvbnN0IEVtUHJveHlIb3N0Q29udHJvbFNlbGVjdG9yVHlwZSAgJik7CW9wZXJh
dG9yICAgSG9zdENvbnRyb2xTZWxlY3RvclR5cGUgICAodm9pZCkgY29uc3Q7CUVtQWxpYXNIb3N0
Q29udHJvbFNlbGVjdG9yVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlh
c0hvc3RDb250cm9sU2VsZWN0b3JUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzW3NpemVvZiAoICAgIHVpbnQxNiAgKV07CX0g
ZkxvY2FsRGF0YTsJfTsgIAkgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNIb3N0Qm9v
bFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJ
RW1BbGlhc0hvc3RCb29sVHlwZSAgIChwdHJfdHlwZSk7CUVtQWxpYXNIb3N0Qm9vbFR5cGUgICAo
Y29uc3QgRW1BbGlhc0hvc3RCb29sVHlwZSAgPEE+Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lk
KSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJ
eyByZXR1cm4gc2l6ZW9mICggICAgaW50MzIgICk7IH0JRW1BbGlhc0hvc3RCb29sVHlwZSAgPEE+
JglvcGVyYXRvcj0gKGNvbnN0IGJvb2wpOwlFbUFsaWFzSG9zdEJvb2xUeXBlICA8QT4mCW9wZXJh
dG9yPSAoY29uc3QgY2hhcik7CUVtQWxpYXNIb3N0Qm9vbFR5cGUgIDxBPiYJb3BlcmF0b3I9IChj
b25zdCB1bnNpZ25lZCBjaGFyKTsJRW1BbGlhc0hvc3RCb29sVHlwZSAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1BbGlhc0hvc3RCb29sVHlwZSAgPEE+JglvcGVyYXRv
cj0gKGNvbnN0IHVuc2lnbmVkIGludCk7CUVtQWxpYXNIb3N0Qm9vbFR5cGUgIDxBPiYJb3BlcmF0
b3I9IChjb25zdCB1bnNpZ25lZCBsb25nKTsJRW1BbGlhc0hvc3RCb29sVHlwZSAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1BbGlhc0hvc3RCb29sVHlwZSAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVtQWxpYXNIb3N0Qm9vbFR5cGUgIDxBPiYJb3Bl
cmF0b3I9IChjb25zdCBzaWduZWQgaW50KTsJRW1BbGlhc0hvc3RCb29sVHlwZSAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJRW1BbGlhc0hvc3RCb29sVHlwZSAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IHZvaWQqKTsJRW1BbGlhc0hvc3RCb29sVHlwZSAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IEVtQWxpYXNIb3N0Qm9vbFR5cGUgIDxBPiYpOwlvcGVyYXRvciAgIEhvc3RCb29sVHlw
ZSAgICh2b2lkKSBjb25zdDsJRW1BbGlhc0hvc3RCb29sVHlwZSAgPEE+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNIb3N0Qm9vbFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0
Owlwcml2YXRlOglFbUFsaWFzSG9zdEJvb2xUeXBlICAgKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7
CX07IAljbGFzcyBFbVByb3h5SG9zdEJvb2xUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCog
cHRyX3R5cGU7CUVtUHJveHlIb3N0Qm9vbFR5cGUgICAodm9pZCk7CUVtUHJveHlIb3N0Qm9vbFR5
cGUgICAoY29uc3QgRW1Qcm94eUhvc3RCb29sVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2
b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXpl
X3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4gc2l6ZW9mICggICAgaW50MzIgICk7IH0JRW1Q
cm94eUhvc3RCb29sVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBib29sKTsJRW1Qcm94eUhvc3RC
b29sVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1Qcm94eUhvc3RCb29sVHlwZSAg
JgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBjaGFyKTsJRW1Qcm94eUhvc3RCb29sVHlwZSAg
JgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtUHJveHlIb3N0Qm9vbFR5cGUg
ICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJRW1Qcm94eUhvc3RCb29sVHlwZSAg
JgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBsb25nKTsJRW1Qcm94eUhvc3RCb29sVHlwZSAg
JgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVtUHJveHlIb3N0Qm9vbFR5cGUgICYJ
CW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIHNob3J0KTsJRW1Qcm94eUhvc3RCb29sVHlwZSAgJgkJ
b3BlcmF0b3I9IChjb25zdCBzaWduZWQgaW50KTsJRW1Qcm94eUhvc3RCb29sVHlwZSAgJgkJb3Bl
cmF0b3I9IChjb25zdCBzaWduZWQgbG9uZyk7CUVtUHJveHlIb3N0Qm9vbFR5cGUgICYJCW9wZXJh
dG9yPSAoY29uc3Qgdm9pZCopOwlFbVByb3h5SG9zdEJvb2xUeXBlICAmCQlvcGVyYXRvcj0gKGNv
bnN0IEVtUHJveHlIb3N0Qm9vbFR5cGUgICYpOwlvcGVyYXRvciAgIEhvc3RCb29sVHlwZSAgICh2
b2lkKSBjb25zdDsJRW1BbGlhc0hvc3RCb29sVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJ
Y29uc3QgRW1BbGlhc0hvc3RCb29sVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJ
cHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1tzaXplb2YgKCAgICBpbnQzMiAgKV07CX0g
ZkxvY2FsRGF0YTsJfTsgIAkgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNIb3N0Q2xv
Y2tUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7
CUVtQWxpYXNIb3N0Q2xvY2tUeXBlICAgKHB0cl90eXBlKTsJRW1BbGlhc0hvc3RDbG9ja1R5cGUg
ICAoY29uc3QgRW1BbGlhc0hvc3RDbG9ja1R5cGUgIDxBPiYpOwlwdHJfdHlwZQkJCUdldFB0cgko
dm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lk
KQkJCXsgcmV0dXJuIHNpemVvZiAoICAgIGludDMyICApOyB9CUVtQWxpYXNIb3N0Q2xvY2tUeXBl
ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgYm9vbCk7CUVtQWxpYXNIb3N0Q2xvY2tUeXBlICA8QT4m
CW9wZXJhdG9yPSAoY29uc3QgY2hhcik7CUVtQWxpYXNIb3N0Q2xvY2tUeXBlICA8QT4mCW9wZXJh
dG9yPSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVtQWxpYXNIb3N0Q2xvY2tUeXBlICA8QT4mCW9w
ZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgc2hvcnQpOwlFbUFsaWFzSG9zdENsb2NrVHlwZSAgPEE+
JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIGludCk7CUVtQWxpYXNIb3N0Q2xvY2tUeXBlICA8
QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgbG9uZyk7CUVtQWxpYXNIb3N0Q2xvY2tUeXBl
ICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGNoYXIpOwlFbUFsaWFzSG9zdENsb2NrVHlw
ZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9ydCk7CUVtQWxpYXNIb3N0Q2xvY2tU
eXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGludCk7CUVtQWxpYXNIb3N0Q2xvY2tU
eXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGxvbmcpOwlFbUFsaWFzSG9zdENsb2Nr
VHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHZvaWQqKTsJRW1BbGlhc0hvc3RDbG9ja1R5cGUg
IDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzSG9zdENsb2NrVHlwZSAgPEE+Jik7CW9wZXJh
dG9yICAgSG9zdENsb2NrVHlwZSAgICh2b2lkKSBjb25zdDsJRW1BbGlhc0hvc3RDbG9ja1R5cGUg
IDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzSG9zdENsb2NrVHlwZSAgPEE+CW9w
ZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNIb3N0Q2xvY2tUeXBlICAgKHZv
aWQpOwlwdHJfdHlwZQkJCWZQdHI7CX07IAljbGFzcyBFbVByb3h5SG9zdENsb2NrVHlwZSAgCXsJ
cHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5SG9zdENsb2NrVHlwZSAgICh2
b2lkKTsJRW1Qcm94eUhvc3RDbG9ja1R5cGUgICAoY29uc3QgRW1Qcm94eUhvc3RDbG9ja1R5cGUg
ICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAm
ZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNp
emVvZiAoICAgIGludDMyICApOyB9CUVtUHJveHlIb3N0Q2xvY2tUeXBlICAmCQlvcGVyYXRvcj0g
KGNvbnN0IGJvb2wpOwlFbVByb3h5SG9zdENsb2NrVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBj
aGFyKTsJRW1Qcm94eUhvc3RDbG9ja1R5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQg
Y2hhcik7CUVtUHJveHlIb3N0Q2xvY2tUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVk
IHNob3J0KTsJRW1Qcm94eUhvc3RDbG9ja1R5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWdu
ZWQgaW50KTsJRW1Qcm94eUhvc3RDbG9ja1R5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWdu
ZWQgbG9uZyk7CUVtUHJveHlIb3N0Q2xvY2tUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25l
ZCBjaGFyKTsJRW1Qcm94eUhvc3RDbG9ja1R5cGUgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVk
IHNob3J0KTsJRW1Qcm94eUhvc3RDbG9ja1R5cGUgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVk
IGludCk7CUVtUHJveHlIb3N0Q2xvY2tUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBs
b25nKTsJRW1Qcm94eUhvc3RDbG9ja1R5cGUgICYJCW9wZXJhdG9yPSAoY29uc3Qgdm9pZCopOwlF
bVByb3h5SG9zdENsb2NrVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5SG9zdENsb2Nr
VHlwZSAgJik7CW9wZXJhdG9yICAgSG9zdENsb2NrVHlwZSAgICh2b2lkKSBjb25zdDsJRW1BbGlh
c0hvc3RDbG9ja1R5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNIb3N0
Q2xvY2tUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3Qg
ewljaGFyCQkJX2J5dGVzW3NpemVvZiAoICAgIGludDMyICApXTsJfSBmTG9jYWxEYXRhOwl9OyAg
CSB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0hvc3RFcnJUeXBlICAJewlwdWJsaWM6
CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNIb3N0RXJyVHlw
ZSAgIChwdHJfdHlwZSk7CUVtQWxpYXNIb3N0RXJyVHlwZSAgIChjb25zdCBFbUFsaWFzSG9zdEVy
clR5cGUgIDxBPiYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0
cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNpemVvZiAoICAg
IGludDMyICApOyB9CUVtQWxpYXNIb3N0RXJyVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGJv
b2wpOwlFbUFsaWFzSG9zdEVyclR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1B
bGlhc0hvc3RFcnJUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVt
QWxpYXNIb3N0RXJyVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJ
RW1BbGlhc0hvc3RFcnJUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJ
RW1BbGlhc0hvc3RFcnJUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgbG9uZyk7
CUVtQWxpYXNIb3N0RXJyVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJ
RW1BbGlhc0hvc3RFcnJUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIHNob3J0KTsJ
RW1BbGlhc0hvc3RFcnJUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGludCk7CUVt
QWxpYXNIb3N0RXJyVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBsb25nKTsJRW1B
bGlhc0hvc3RFcnJUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgdm9pZCopOwlFbUFsaWFzSG9z
dEVyclR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzSG9zdEVyclR5cGUgIDxBPiYp
OwlvcGVyYXRvciAgIEhvc3RFcnJUeXBlICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzSG9zdEVyclR5
cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzSG9zdEVyclR5cGUgIDxBPglv
cGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzSG9zdEVyclR5cGUgICAodm9p
ZCk7CXB0cl90eXBlCQkJZlB0cjsJfTsgCWNsYXNzIEVtUHJveHlIb3N0RXJyVHlwZSAgCXsJcHVi
bGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5SG9zdEVyclR5cGUgICAodm9pZCk7
CUVtUHJveHlIb3N0RXJyVHlwZSAgIChjb25zdCBFbVByb3h5SG9zdEVyclR5cGUgICYpOwlwdHJf
dHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0
YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNpemVvZiAoICAg
IGludDMyICApOyB9CUVtUHJveHlIb3N0RXJyVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBib29s
KTsJRW1Qcm94eUhvc3RFcnJUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbVByb3h5
SG9zdEVyclR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVtUHJveHlI
b3N0RXJyVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtUHJveHlI
b3N0RXJyVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbVByb3h5SG9z
dEVyclR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgbG9uZyk7CUVtUHJveHlIb3N0
RXJyVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVtUHJveHlIb3N0RXJy
VHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbVByb3h5SG9zdEVyclR5
cGUgICYJCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGludCk7CUVtUHJveHlIb3N0RXJyVHlwZSAg
JgkJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgbG9uZyk7CUVtUHJveHlIb3N0RXJyVHlwZSAgJgkJ
b3BlcmF0b3I9IChjb25zdCB2b2lkKik7CUVtUHJveHlIb3N0RXJyVHlwZSAgJgkJb3BlcmF0b3I9
IChjb25zdCBFbVByb3h5SG9zdEVyclR5cGUgICYpOwlvcGVyYXRvciAgIEhvc3RFcnJUeXBlICAg
KHZvaWQpIGNvbnN0OwlFbUFsaWFzSG9zdEVyclR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7
CWNvbnN0IEVtQWxpYXNIb3N0RXJyVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJ
cHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1tzaXplb2YgKCAgICBpbnQzMiAgKV07CX0g
ZkxvY2FsRGF0YTsJfTsgIAkgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNIb3N0SURU
eXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVt
QWxpYXNIb3N0SURUeXBlICAgKHB0cl90eXBlKTsJRW1BbGlhc0hvc3RJRFR5cGUgICAoY29uc3Qg
RW1BbGlhc0hvc3RJRFR5cGUgIDxBPiYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJ
eyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJu
IHNpemVvZiAoICAgIGludDMyICApOyB9CUVtQWxpYXNIb3N0SURUeXBlICA8QT4mCW9wZXJhdG9y
PSAoY29uc3QgYm9vbCk7CUVtQWxpYXNIb3N0SURUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
Y2hhcik7CUVtQWxpYXNIb3N0SURUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQg
Y2hhcik7CUVtQWxpYXNIb3N0SURUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQg
c2hvcnQpOwlFbUFsaWFzSG9zdElEVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVk
IGludCk7CUVtQWxpYXNIb3N0SURUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQg
bG9uZyk7CUVtQWxpYXNIb3N0SURUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGNo
YXIpOwlFbUFsaWFzSG9zdElEVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHNpZ25lZCBzaG9y
dCk7CUVtQWxpYXNIb3N0SURUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGludCk7
CUVtQWxpYXNIb3N0SURUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGxvbmcpOwlF
bUFsaWFzSG9zdElEVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHZvaWQqKTsJRW1BbGlhc0hv
c3RJRFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzSG9zdElEVHlwZSAgPEE+Jik7
CW9wZXJhdG9yICAgSG9zdElEVHlwZSAgICh2b2lkKSBjb25zdDsJRW1BbGlhc0hvc3RJRFR5cGUg
IDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzSG9zdElEVHlwZSAgPEE+CW9wZXJh
dG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNIb3N0SURUeXBlICAgKHZvaWQpOwlw
dHJfdHlwZQkJCWZQdHI7CX07IAljbGFzcyBFbVByb3h5SG9zdElEVHlwZSAgCXsJcHVibGljOgl0
eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5SG9zdElEVHlwZSAgICh2b2lkKTsJRW1Qcm94
eUhvc3RJRFR5cGUgICAoY29uc3QgRW1Qcm94eUhvc3RJRFR5cGUgICYpOwlwdHJfdHlwZQkJCUdl
dFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0
aWMgc2l6ZV90CQlHZXRTaXplICh2b2lkKQkJCXsgcmV0dXJuIHNpemVvZiAoICAgIGludDMyICAp
OyB9CUVtUHJveHlIb3N0SURUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IGJvb2wpOwlFbVByb3h5
SG9zdElEVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBjaGFyKTsJRW1Qcm94eUhvc3RJRFR5cGUg
ICYJCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgY2hhcik7CUVtUHJveHlIb3N0SURUeXBlICAm
CQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1Qcm94eUhvc3RJRFR5cGUgICYJ
CW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJRW1Qcm94eUhvc3RJRFR5cGUgICYJCW9w
ZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgbG9uZyk7CUVtUHJveHlIb3N0SURUeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1Qcm94eUhvc3RJRFR5cGUgICYJCW9wZXJhdG9y
PSAoY29uc3Qgc2lnbmVkIHNob3J0KTsJRW1Qcm94eUhvc3RJRFR5cGUgICYJCW9wZXJhdG9yPSAo
Y29uc3Qgc2lnbmVkIGludCk7CUVtUHJveHlIb3N0SURUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0
IHNpZ25lZCBsb25nKTsJRW1Qcm94eUhvc3RJRFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3Qgdm9p
ZCopOwlFbVByb3h5SG9zdElEVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5SG9zdElE
VHlwZSAgJik7CW9wZXJhdG9yICAgSG9zdElEVHlwZSAgICh2b2lkKSBjb25zdDsJRW1BbGlhc0hv
c3RJRFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNIb3N0SURUeXBl
ICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJ
X2J5dGVzW3NpemVvZiAoICAgIGludDMyICApXTsJfSBmTG9jYWxEYXRhOwl9OyAgCSB0ZW1wbGF0
ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0hvc3RQbGF0Zm9ybVR5cGUgIAl7CXB1YmxpYzoJdHlw
ZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0hvc3RQbGF0Zm9ybVR5
cGUgICAocHRyX3R5cGUpOwlFbUFsaWFzSG9zdFBsYXRmb3JtVHlwZSAgIChjb25zdCBFbUFsaWFz
SG9zdFBsYXRmb3JtVHlwZSAgPEE+Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4g
c2l6ZW9mICggICAgaW50MzIgICk7IH0JRW1BbGlhc0hvc3RQbGF0Zm9ybVR5cGUgIDxBPiYJb3Bl
cmF0b3I9IChjb25zdCBib29sKTsJRW1BbGlhc0hvc3RQbGF0Zm9ybVR5cGUgIDxBPiYJb3BlcmF0
b3I9IChjb25zdCBjaGFyKTsJRW1BbGlhc0hvc3RQbGF0Zm9ybVR5cGUgIDxBPiYJb3BlcmF0b3I9
IChjb25zdCB1bnNpZ25lZCBjaGFyKTsJRW1BbGlhc0hvc3RQbGF0Zm9ybVR5cGUgIDxBPiYJb3Bl
cmF0b3I9IChjb25zdCB1bnNpZ25lZCBzaG9ydCk7CUVtQWxpYXNIb3N0UGxhdGZvcm1UeXBlICA8
QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQgaW50KTsJRW1BbGlhc0hvc3RQbGF0Zm9ybVR5
cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBsb25nKTsJRW1BbGlhc0hvc3RQbGF0
Zm9ybVR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgY2hhcik7CUVtQWxpYXNIb3N0
UGxhdGZvcm1UeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgc2lnbmVkIHNob3J0KTsJRW1BbGlh
c0hvc3RQbGF0Zm9ybVR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgaW50KTsJRW1B
bGlhc0hvc3RQbGF0Zm9ybVR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBzaWduZWQgbG9uZyk7
CUVtQWxpYXNIb3N0UGxhdGZvcm1UeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qgdm9pZCopOwlF
bUFsaWFzSG9zdFBsYXRmb3JtVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNIb3N0
UGxhdGZvcm1UeXBlICA8QT4mKTsJb3BlcmF0b3IgICBIb3N0UGxhdGZvcm1UeXBlICAgKHZvaWQp
IGNvbnN0OwlFbUFsaWFzSG9zdFBsYXRmb3JtVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNv
bnN0IEVtQWxpYXNIb3N0UGxhdGZvcm1UeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJ
cHJpdmF0ZToJRW1BbGlhc0hvc3RQbGF0Zm9ybVR5cGUgICAodm9pZCk7CXB0cl90eXBlCQkJZlB0
cjsJfTsgCWNsYXNzIEVtUHJveHlIb3N0UGxhdGZvcm1UeXBlICAJewlwdWJsaWM6CXR5cGVkZWYg
dm9pZCogcHRyX3R5cGU7CUVtUHJveHlIb3N0UGxhdGZvcm1UeXBlICAgKHZvaWQpOwlFbVByb3h5
SG9zdFBsYXRmb3JtVHlwZSAgIChjb25zdCBFbVByb3h5SG9zdFBsYXRmb3JtVHlwZSAgJik7CXB0
cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxE
YXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4gc2l6ZW9mICgg
ICAgaW50MzIgICk7IH0JRW1Qcm94eUhvc3RQbGF0Zm9ybVR5cGUgICYJCW9wZXJhdG9yPSAoY29u
c3QgYm9vbCk7CUVtUHJveHlIb3N0UGxhdGZvcm1UeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IGNo
YXIpOwlFbVByb3h5SG9zdFBsYXRmb3JtVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25l
ZCBjaGFyKTsJRW1Qcm94eUhvc3RQbGF0Zm9ybVR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgdW5z
aWduZWQgc2hvcnQpOwlFbVByb3h5SG9zdFBsYXRmb3JtVHlwZSAgJgkJb3BlcmF0b3I9IChjb25z
dCB1bnNpZ25lZCBpbnQpOwlFbVByb3h5SG9zdFBsYXRmb3JtVHlwZSAgJgkJb3BlcmF0b3I9IChj
b25zdCB1bnNpZ25lZCBsb25nKTsJRW1Qcm94eUhvc3RQbGF0Zm9ybVR5cGUgICYJCW9wZXJhdG9y
PSAoY29uc3Qgc2lnbmVkIGNoYXIpOwlFbVByb3h5SG9zdFBsYXRmb3JtVHlwZSAgJgkJb3BlcmF0
b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbVByb3h5SG9zdFBsYXRmb3JtVHlwZSAgJgkJb3Bl
cmF0b3I9IChjb25zdCBzaWduZWQgaW50KTsJRW1Qcm94eUhvc3RQbGF0Zm9ybVR5cGUgICYJCW9w
ZXJhdG9yPSAoY29uc3Qgc2lnbmVkIGxvbmcpOwlFbVByb3h5SG9zdFBsYXRmb3JtVHlwZSAgJgkJ
b3BlcmF0b3I9IChjb25zdCB2b2lkKik7CUVtUHJveHlIb3N0UGxhdGZvcm1UeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IEVtUHJveHlIb3N0UGxhdGZvcm1UeXBlICAmKTsJb3BlcmF0b3IgICBIb3N0
UGxhdGZvcm1UeXBlICAgKHZvaWQpIGNvbnN0OwlFbUFsaWFzSG9zdFBsYXRmb3JtVHlwZSAgPExB
Uz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0hvc3RQbGF0Zm9ybVR5cGUgIDxMQVM+
CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNb
c2l6ZW9mICggICAgaW50MzIgICldOwl9IGZMb2NhbERhdGE7CX07ICAJIHRlbXBsYXRlIDxjbGFz
cyBBPgljbGFzcyBFbUFsaWFzSG9zdFNpZ25hbFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBl
bmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0hvc3RTaWduYWxUeXBlICAgKHB0cl90
eXBlKTsJRW1BbGlhc0hvc3RTaWduYWxUeXBlICAgKGNvbnN0IEVtQWxpYXNIb3N0U2lnbmFsVHlw
ZSAgPEE+Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9
CXN0YXRpYyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4gc2l6ZW9mICggICAgaW50
MzIgICk7IH0JRW1BbGlhc0hvc3RTaWduYWxUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgYm9v
bCk7CUVtQWxpYXNIb3N0U2lnbmFsVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlF
bUFsaWFzSG9zdFNpZ25hbFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBjaGFy
KTsJRW1BbGlhc0hvc3RTaWduYWxUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgdW5zaWduZWQg
c2hvcnQpOwlFbUFsaWFzSG9zdFNpZ25hbFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1bnNp
Z25lZCBpbnQpOwlFbUFsaWFzSG9zdFNpZ25hbFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCB1
bnNpZ25lZCBsb25nKTsJRW1BbGlhc0hvc3RTaWduYWxUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29u
c3Qgc2lnbmVkIGNoYXIpOwlFbUFsaWFzSG9zdFNpZ25hbFR5cGUgIDxBPiYJb3BlcmF0b3I9IChj
b25zdCBzaWduZWQgc2hvcnQpOwlFbUFsaWFzSG9zdFNpZ25hbFR5cGUgIDxBPiYJb3BlcmF0b3I9
IChjb25zdCBzaWduZWQgaW50KTsJRW1BbGlhc0hvc3RTaWduYWxUeXBlICA8QT4mCW9wZXJhdG9y
PSAoY29uc3Qgc2lnbmVkIGxvbmcpOwlFbUFsaWFzSG9zdFNpZ25hbFR5cGUgIDxBPiYJb3BlcmF0
b3I9IChjb25zdCB2b2lkKik7CUVtQWxpYXNIb3N0U2lnbmFsVHlwZSAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IEVtQWxpYXNIb3N0U2lnbmFsVHlwZSAgPEE+Jik7CW9wZXJhdG9yICAgSG9zdFNpZ25h
bFR5cGUgICAodm9pZCkgY29uc3Q7CUVtQWxpYXNIb3N0U2lnbmFsVHlwZSAgPEE+CW9wZXJhdG9y
W10gKGludCk7CWNvbnN0IEVtQWxpYXNIb3N0U2lnbmFsVHlwZSAgPEE+CW9wZXJhdG9yW10gKGlu
dCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNIb3N0U2lnbmFsVHlwZSAgICh2b2lkKTsJcHRyX3R5
cGUJCQlmUHRyOwl9OyAJY2xhc3MgRW1Qcm94eUhvc3RTaWduYWxUeXBlICAJewlwdWJsaWM6CXR5
cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlIb3N0U2lnbmFsVHlwZSAgICh2b2lkKTsJRW1Q
cm94eUhvc3RTaWduYWxUeXBlICAgKGNvbnN0IEVtUHJveHlIb3N0U2lnbmFsVHlwZSAgJik7CXB0
cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxE
YXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUgKHZvaWQpCQkJeyByZXR1cm4gc2l6ZW9mICgg
ICAgaW50MzIgICk7IH0JRW1Qcm94eUhvc3RTaWduYWxUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0
IGJvb2wpOwlFbVByb3h5SG9zdFNpZ25hbFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgY2hhcik7
CUVtUHJveHlIb3N0U2lnbmFsVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25lZCBjaGFy
KTsJRW1Qcm94eUhvc3RTaWduYWxUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNo
b3J0KTsJRW1Qcm94eUhvc3RTaWduYWxUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHVuc2lnbmVk
IGludCk7CUVtUHJveHlIb3N0U2lnbmFsVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCB1bnNpZ25l
ZCBsb25nKTsJRW1Qcm94eUhvc3RTaWduYWxUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25l
ZCBjaGFyKTsJRW1Qcm94eUhvc3RTaWduYWxUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25l
ZCBzaG9ydCk7CUVtUHJveHlIb3N0U2lnbmFsVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBzaWdu
ZWQgaW50KTsJRW1Qcm94eUhvc3RTaWduYWxUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHNpZ25l
ZCBsb25nKTsJRW1Qcm94eUhvc3RTaWduYWxUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IHZvaWQq
KTsJRW1Qcm94eUhvc3RTaWduYWxUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlIb3N0
U2lnbmFsVHlwZSAgJik7CW9wZXJhdG9yICAgSG9zdFNpZ25hbFR5cGUgICAodm9pZCkgY29uc3Q7
CUVtQWxpYXNIb3N0U2lnbmFsVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1B
bGlhc0hvc3RTaWduYWxUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRl
OglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzW3NpemVvZiAoICAgIGludDMyICApXTsJfSBmTG9jYWxE
YXRhOwl9OyAgCSB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0hvc3RTaXplVHlwZSAg
CXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFz
SG9zdFNpemVUeXBlICAgKHB0cl90eXBlKTsJRW1BbGlhc0hvc3RTaXplVHlwZSAgIChjb25zdCBF
bUFsaWFzSG9zdFNpemVUeXBlICA8QT4mKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0
CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVy
biBzaXplb2YgKCAgICBpbnQzMiAgKTsgfQlFbUFsaWFzSG9zdFNpemVUeXBlICA8QT4mCW9wZXJh
dG9yPSAoY29uc3QgYm9vbCk7CUVtQWxpYXNIb3N0U2l6ZVR5cGUgIDxBPiYJb3BlcmF0b3I9IChj
b25zdCBjaGFyKTsJRW1BbGlhc0hvc3RTaXplVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVu
c2lnbmVkIGNoYXIpOwlFbUFsaWFzSG9zdFNpemVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
dW5zaWduZWQgc2hvcnQpOwlFbUFsaWFzSG9zdFNpemVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgdW5zaWduZWQgaW50KTsJRW1BbGlhc0hvc3RTaXplVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNv
bnN0IHVuc2lnbmVkIGxvbmcpOwlFbUFsaWFzSG9zdFNpemVUeXBlICA8QT4mCW9wZXJhdG9yPSAo
Y29uc3Qgc2lnbmVkIGNoYXIpOwlFbUFsaWFzSG9zdFNpemVUeXBlICA8QT4mCW9wZXJhdG9yPSAo
Y29uc3Qgc2lnbmVkIHNob3J0KTsJRW1BbGlhc0hvc3RTaXplVHlwZSAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IHNpZ25lZCBpbnQpOwlFbUFsaWFzSG9zdFNpemVUeXBlICA8QT4mCW9wZXJhdG9yPSAo
Y29uc3Qgc2lnbmVkIGxvbmcpOwlFbUFsaWFzSG9zdFNpemVUeXBlICA8QT4mCW9wZXJhdG9yPSAo
Y29uc3Qgdm9pZCopOwlFbUFsaWFzSG9zdFNpemVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
RW1BbGlhc0hvc3RTaXplVHlwZSAgPEE+Jik7CW9wZXJhdG9yICAgSG9zdFNpemVUeXBlICAgKHZv
aWQpIGNvbnN0OwlFbUFsaWFzSG9zdFNpemVUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29u
c3QgRW1BbGlhc0hvc3RTaXplVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZh
dGU6CUVtQWxpYXNIb3N0U2l6ZVR5cGUgICAodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJfTsgCWNs
YXNzIEVtUHJveHlIb3N0U2l6ZVR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlw
ZTsJRW1Qcm94eUhvc3RTaXplVHlwZSAgICh2b2lkKTsJRW1Qcm94eUhvc3RTaXplVHlwZSAgIChj
b25zdCBFbVByb3h5SG9zdFNpemVUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNv
bnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0
U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICBpbnQzMiAgKTsgfQlFbVByb3h5SG9z
dFNpemVUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IGJvb2wpOwlFbVByb3h5SG9zdFNpemVUeXBl
ICAmCQlvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbVByb3h5SG9zdFNpemVUeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbVByb3h5SG9zdFNpemVUeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1Qcm94eUhvc3RTaXplVHlwZSAgJgkJb3Bl
cmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbVByb3h5SG9zdFNpemVUeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbVByb3h5SG9zdFNpemVUeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1Qcm94eUhvc3RTaXplVHlwZSAgJgkJb3BlcmF0
b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbVByb3h5SG9zdFNpemVUeXBlICAmCQlvcGVyYXRv
cj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbVByb3h5SG9zdFNpemVUeXBlICAmCQlvcGVyYXRvcj0g
KGNvbnN0IHNpZ25lZCBsb25nKTsJRW1Qcm94eUhvc3RTaXplVHlwZSAgJgkJb3BlcmF0b3I9IChj
b25zdCB2b2lkKik7CUVtUHJveHlIb3N0U2l6ZVR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Q
cm94eUhvc3RTaXplVHlwZSAgJik7CW9wZXJhdG9yICAgSG9zdFNpemVUeXBlICAgKHZvaWQpIGNv
bnN0OwlFbUFsaWFzSG9zdFNpemVUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBF
bUFsaWFzSG9zdFNpemVUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRl
OglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzW3NpemVvZiAoICAgIGludDMyICApXTsJfSBmTG9jYWxE
YXRhOwl9OyAgCSB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0hvc3RUaW1lVHlwZSAg
CXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFz
SG9zdFRpbWVUeXBlICAgKHB0cl90eXBlKTsJRW1BbGlhc0hvc3RUaW1lVHlwZSAgIChjb25zdCBF
bUFsaWFzSG9zdFRpbWVUeXBlICA8QT4mKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0
CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZSAodm9pZCkJCQl7IHJldHVy
biBzaXplb2YgKCAgICBpbnQzMiAgKTsgfQlFbUFsaWFzSG9zdFRpbWVUeXBlICA8QT4mCW9wZXJh
dG9yPSAoY29uc3QgYm9vbCk7CUVtQWxpYXNIb3N0VGltZVR5cGUgIDxBPiYJb3BlcmF0b3I9IChj
b25zdCBjaGFyKTsJRW1BbGlhc0hvc3RUaW1lVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IHVu
c2lnbmVkIGNoYXIpOwlFbUFsaWFzSG9zdFRpbWVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
dW5zaWduZWQgc2hvcnQpOwlFbUFsaWFzSG9zdFRpbWVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgdW5zaWduZWQgaW50KTsJRW1BbGlhc0hvc3RUaW1lVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNv
bnN0IHVuc2lnbmVkIGxvbmcpOwlFbUFsaWFzSG9zdFRpbWVUeXBlICA8QT4mCW9wZXJhdG9yPSAo
Y29uc3Qgc2lnbmVkIGNoYXIpOwlFbUFsaWFzSG9zdFRpbWVUeXBlICA8QT4mCW9wZXJhdG9yPSAo
Y29uc3Qgc2lnbmVkIHNob3J0KTsJRW1BbGlhc0hvc3RUaW1lVHlwZSAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IHNpZ25lZCBpbnQpOwlFbUFsaWFzSG9zdFRpbWVUeXBlICA8QT4mCW9wZXJhdG9yPSAo
Y29uc3Qgc2lnbmVkIGxvbmcpOwlFbUFsaWFzSG9zdFRpbWVUeXBlICA8QT4mCW9wZXJhdG9yPSAo
Y29uc3Qgdm9pZCopOwlFbUFsaWFzSG9zdFRpbWVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
RW1BbGlhc0hvc3RUaW1lVHlwZSAgPEE+Jik7CW9wZXJhdG9yICAgSG9zdFRpbWVUeXBlICAgKHZv
aWQpIGNvbnN0OwlFbUFsaWFzSG9zdFRpbWVUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29u
c3QgRW1BbGlhc0hvc3RUaW1lVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZh
dGU6CUVtQWxpYXNIb3N0VGltZVR5cGUgICAodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJfTsgCWNs
YXNzIEVtUHJveHlIb3N0VGltZVR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlw
ZTsJRW1Qcm94eUhvc3RUaW1lVHlwZSAgICh2b2lkKTsJRW1Qcm94eUhvc3RUaW1lVHlwZSAgIChj
b25zdCBFbVByb3h5SG9zdFRpbWVUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNv
bnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0
U2l6ZSAodm9pZCkJCQl7IHJldHVybiBzaXplb2YgKCAgICBpbnQzMiAgKTsgfQlFbVByb3h5SG9z
dFRpbWVUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IGJvb2wpOwlFbVByb3h5SG9zdFRpbWVUeXBl
ICAmCQlvcGVyYXRvcj0gKGNvbnN0IGNoYXIpOwlFbVByb3h5SG9zdFRpbWVUeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHVuc2lnbmVkIGNoYXIpOwlFbVByb3h5SG9zdFRpbWVUeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHVuc2lnbmVkIHNob3J0KTsJRW1Qcm94eUhvc3RUaW1lVHlwZSAgJgkJb3Bl
cmF0b3I9IChjb25zdCB1bnNpZ25lZCBpbnQpOwlFbVByb3h5SG9zdFRpbWVUeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHVuc2lnbmVkIGxvbmcpOwlFbVByb3h5SG9zdFRpbWVUeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IHNpZ25lZCBjaGFyKTsJRW1Qcm94eUhvc3RUaW1lVHlwZSAgJgkJb3BlcmF0
b3I9IChjb25zdCBzaWduZWQgc2hvcnQpOwlFbVByb3h5SG9zdFRpbWVUeXBlICAmCQlvcGVyYXRv
cj0gKGNvbnN0IHNpZ25lZCBpbnQpOwlFbVByb3h5SG9zdFRpbWVUeXBlICAmCQlvcGVyYXRvcj0g
KGNvbnN0IHNpZ25lZCBsb25nKTsJRW1Qcm94eUhvc3RUaW1lVHlwZSAgJgkJb3BlcmF0b3I9IChj
b25zdCB2b2lkKik7CUVtUHJveHlIb3N0VGltZVR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Q
cm94eUhvc3RUaW1lVHlwZSAgJik7CW9wZXJhdG9yICAgSG9zdFRpbWVUeXBlICAgKHZvaWQpIGNv
bnN0OwlFbUFsaWFzSG9zdFRpbWVUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBF
bUFsaWFzSG9zdFRpbWVUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRl
OglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzW3NpemVvZiAoICAgIGludDMyICApXTsJfSBmTG9jYWxE
YXRhOwl9OyAgIAoKIyAxMTE5ICIuLi9TcmNTaGFyZWQvRW1QYWxtU3RydWN0cy5oIgoKCiAgdGVt
cGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNBYnNSZWN0VHlwZSAgCXsJcHVibGljOgl0eXBl
ZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzQWJzUmVjdFR5cGUgIAko
cHRyX3R5cGUpOwlFbUFsaWFzQWJzUmVjdFR5cGUgIAkoY29uc3QgRW1BbGlhc0Fic1JlY3RUeXBl
ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3Rh
dGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgOCAgOyB9CUVtQWxpYXNB
YnNSZWN0VHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNBYnNSZWN0VHlwZSAgPEE+
Jik7CUVtQWxpYXNBYnNSZWN0VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxp
YXNBYnNSZWN0VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxp
YXNBYnNSZWN0VHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1B
bGlhc0Nvb3JkIDxBPgkgCQkJCQkJbGVmdCA7IAkgRW1BbGlhc0Nvb3JkIDxBPgkgCQkJCQkJdG9w
IDsgCSBFbUFsaWFzQ29vcmQgPEE+CSAJCQkJCQlyaWdodCA7IAkgRW1BbGlhc0Nvb3JkIDxBPgkg
CQkJCQkJYm90dG9tIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbGVmdCAgKHZvaWQp
IHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdG9wICAodm9pZCkgeyBy
ZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yaWdodCAgKHZvaWQpIHsgcmV0
dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYm90dG9tICAodm9pZCkgeyByZXR1
cm4gIDYgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlBYnNSZWN0VHlwZSAgCXsJcHVibGljOgl0eXBl
ZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5QWJzUmVjdFR5cGUgIAkodm9pZCk7CUVtUHJveHlB
YnNSZWN0VHlwZSAgCShjb25zdCBFbVByb3h5QWJzUmVjdFR5cGUgICYpOwlwdHJfdHlwZQkJCUdl
dFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0
aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA4ICA7IH0JRW1Qcm94eUFi
c1JlY3RUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlBYnNSZWN0VHlwZSAgJik7CUVt
QWxpYXNBYnNSZWN0VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0Fi
c1JlY3RUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3Qg
ewljaGFyCQkJX2J5dGVzWyAgICA4ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFs
aWFzQ29vcmQgPExBUz4JIAkJCQkJCWxlZnQgOyAJIEVtQWxpYXNDb29yZCA8TEFTPgkgCQkJCQkJ
dG9wIDsgCSBFbUFsaWFzQ29vcmQgPExBUz4JIAkJCQkJCXJpZ2h0IDsgCSBFbUFsaWFzQ29vcmQg
PExBUz4JIAkJCQkJCWJvdHRvbSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xlZnQg
ICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RvcCAgKHZv
aWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmlnaHQgICh2b2lk
KSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2JvdHRvbSAgKHZvaWQp
IHsgcmV0dXJuICA2IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxp
YXNQb2ludFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJf
dHlwZTsJRW1BbGlhc1BvaW50VHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNQb2ludFR5cGUgIAko
Y29uc3QgRW1BbGlhc1BvaW50VHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25z
dAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1
cm4gICAgIDQgIDsgfQlFbUFsaWFzUG9pbnRUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1B
bGlhc1BvaW50VHlwZSAgPEE+Jik7CUVtQWxpYXNQb2ludFR5cGUgIDxBPglvcGVyYXRvcltdIChp
bnQpOwljb25zdCBFbUFsaWFzUG9pbnRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJ
cHJpdmF0ZToJRW1BbGlhc1BvaW50VHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJs
aWM6CSAgICAgRW1BbGlhc0Nvb3JkIDxBPgkgCQkJCQkJeCA7IAkgRW1BbGlhc0Nvb3JkIDxBPgkg
CQkJCQkJeSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3ggICh2b2lkKSB7IHJldHVy
biAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3kgICh2b2lkKSB7IHJldHVybiAgMiA7
IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVBvaW50VHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQq
IHB0cl90eXBlOwlFbVByb3h5UG9pbnRUeXBlICAJKHZvaWQpOwlFbVByb3h5UG9pbnRUeXBlICAJ
KGNvbnN0IEVtUHJveHlQb2ludFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29u
c3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRT
aXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA0ICA7IH0JRW1Qcm94eVBvaW50VHlwZSAgJgkJb3Bl
cmF0b3I9IChjb25zdCBFbVByb3h5UG9pbnRUeXBlICAmKTsJRW1BbGlhc1BvaW50VHlwZSAgPExB
Uz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1BvaW50VHlwZSAgPExBUz4Jb3BlcmF0
b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgNCAg
XTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc0Nvb3JkIDxMQVM+CSAJCQkJCQl4
IDsgCSBFbUFsaWFzQ29vcmQgPExBUz4JIAkJCQkJCXkgOyAgCSAgICAgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl94ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl95ICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4J
Y2xhc3MgRW1BbGlhc1JlY3RhbmdsZVR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBB
OjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1JlY3RhbmdsZVR5cGUgIAkocHRyX3R5cGUpOwlF
bUFsaWFzUmVjdGFuZ2xlVHlwZSAgCShjb25zdCBFbUFsaWFzUmVjdGFuZ2xlVHlwZSAgJik7CXB0
cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXpl
X3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDggIDsgfQlFbUFsaWFzUmVjdGFuZ2xl
VHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNSZWN0YW5nbGVUeXBlICA8QT4mKTsJ
RW1BbGlhc1JlY3RhbmdsZVR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFz
UmVjdGFuZ2xlVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxp
YXNSZWN0YW5nbGVUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBF
bUFsaWFzUG9pbnRUeXBlIDxBPgkgCQkJCQl0b3BMZWZ0IDsgCSBFbUFsaWFzUG9pbnRUeXBlIDxB
PgkgCQkJCQlleHRlbnQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90b3BMZWZ0ICAo
dm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9leHRlbnQgICh2
b2lkKSB7IHJldHVybiAgNCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVJlY3RhbmdsZVR5cGUgIAl7
CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVJlY3RhbmdsZVR5cGUgIAko
dm9pZCk7CUVtUHJveHlSZWN0YW5nbGVUeXBlICAJKGNvbnN0IEVtUHJveHlSZWN0YW5nbGVUeXBl
ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkg
JmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAg
ICAgOCAgOyB9CUVtUHJveHlSZWN0YW5nbGVUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJv
eHlSZWN0YW5nbGVUeXBlICAmKTsJRW1BbGlhc1JlY3RhbmdsZVR5cGUgIDxMQVM+CW9wZXJhdG9y
W10gKGludCk7CWNvbnN0IEVtQWxpYXNSZWN0YW5nbGVUeXBlICA8TEFTPglvcGVyYXRvcltdIChp
bnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA4ICBdOwl9IGZM
b2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzUG9pbnRUeXBlIDxMQVM+CSAJCQkJCXRvcExl
ZnQgOyAJIEVtQWxpYXNQb2ludFR5cGUgPExBUz4JIAkJCQkJZXh0ZW50IDsgIAkgICAgIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdG9wTGVmdCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZXh0ZW50ICAodm9pZCkgeyByZXR1cm4gIDQgOyB9ICAJfTsgICAJ
ICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1JHQkNvbG9yVHlwZSAgCXsJcHVibGlj
Ogl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzUkdCQ29sb3JU
eXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1JHQkNvbG9yVHlwZSAgCShjb25zdCBFbUFsaWFzUkdC
Q29sb3JUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQ
dHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNiAgOyB9
CUVtQWxpYXNSR0JDb2xvclR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzUkdCQ29s
b3JUeXBlICA8QT4mKTsJRW1BbGlhc1JHQkNvbG9yVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7
CWNvbnN0IEVtQWxpYXNSR0JDb2xvclR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglFbUFsaWFzUkdCQ29sb3JUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1
YmxpYzoJICAgICBFbUFsaWFzTG9jYWxJRCA8QT4JIAkJCQkJaW5kZXggOyAJIEVtQWxpYXNVSW50
OCA8QT4JIAkJCQkJCXIgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWcgOyAJIEVtQWxpYXNV
SW50OCA8QT4JIAkJCQkJCWIgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbmRleCAg
KHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfciAgKHZvaWQp
IHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZyAgKHZvaWQpIHsgcmV0
dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYiAgKHZvaWQpIHsgcmV0dXJuICA2
IDsgfSAgCX07IAljbGFzcyBFbVByb3h5UkdCQ29sb3JUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYg
dm9pZCogcHRyX3R5cGU7CUVtUHJveHlSR0JDb2xvclR5cGUgIAkodm9pZCk7CUVtUHJveHlSR0JD
b2xvclR5cGUgIAkoY29uc3QgRW1Qcm94eVJHQkNvbG9yVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0
UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRp
YyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDYgIDsgfQlFbVByb3h5UkdC
Q29sb3JUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlSR0JDb2xvclR5cGUgICYpOwlF
bUFsaWFzUkdCQ29sb3JUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFz
UkdCQ29sb3JUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1
Y3QgewljaGFyCQkJX2J5dGVzWyAgICA2ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBF
bUFsaWFzTG9jYWxJRCA8TEFTPgkgCQkJCQlpbmRleCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJ
CQkJCQlyIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWcgOyAJIEVtQWxpYXNVSW50OCA8
TEFTPgkgCQkJCQkJYiA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luZGV4ICAodm9p
ZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yICAodm9pZCkgeyBy
ZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nICAodm9pZCkgeyByZXR1cm4g
IDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9iICAodm9pZCkgeyByZXR1cm4gIDYgOyB9
ICAJfTsgICAgCiAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNCcmVha3BvaW50VHlw
ZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFs
aWFzQnJlYWtwb2ludFR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzQnJlYWtwb2ludFR5cGUgIAko
Y29uc3QgRW1BbGlhc0JyZWFrcG9pbnRUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQp
IGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7
IHJldHVybiAgICAgNiAgOyB9CUVtQWxpYXNCcmVha3BvaW50VHlwZSAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IEVtQWxpYXNCcmVha3BvaW50VHlwZSAgPEE+Jik7CUVtQWxpYXNCcmVha3BvaW50VHlw
ZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNCcmVha3BvaW50VHlwZSAgPEE+
CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNCcmVha3BvaW50VHlwZSAg
CSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc2VtdXB0ciA8QT4J
IAkJCQkJCWFkZHIgOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQllbmFibGVkIDsgCSBFbUFs
aWFzQm9vbGVhbiA8QT4JIAkJCQkJaW5zdGFsbGVkIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfYWRkciAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZW5hYmxlZCAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfaW5zdGFsbGVkICAodm9pZCkgeyByZXR1cm4gIDUgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlC
cmVha3BvaW50VHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5
QnJlYWtwb2ludFR5cGUgIAkodm9pZCk7CUVtUHJveHlCcmVha3BvaW50VHlwZSAgCShjb25zdCBF
bVByb3h5QnJlYWtwb2ludFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJ
eyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXpl
CSh2b2lkKQkJCXsgcmV0dXJuICAgICA2ICA7IH0JRW1Qcm94eUJyZWFrcG9pbnRUeXBlICAmCQlv
cGVyYXRvcj0gKGNvbnN0IEVtUHJveHlCcmVha3BvaW50VHlwZSAgJik7CUVtQWxpYXNCcmVha3Bv
aW50VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0JyZWFrcG9pbnRU
eXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFy
CQkJX2J5dGVzWyAgICA2ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzZW11
cHRyIDxMQVM+CSAJCQkJCQlhZGRyIDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkgCQkJCQllbmFi
bGVkIDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkgCQkJCQlpbnN0YWxsZWQgOyAgCSAgICAgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9hZGRyICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9lbmFibGVkICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9pbnN0YWxsZWQgICh2b2lkKSB7IHJldHVybiAgNSA7IH0gIAl9OyAg
IAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzTTY4S1JlZ3NUeXBlICAJewlwdWJs
aWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNNNjhLUmVn
c1R5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzTTY4S1JlZ3NUeXBlICAJKGNvbnN0IEVtQWxpYXNN
NjhLUmVnc1R5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4g
ZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA3NCAg
OyB9CUVtQWxpYXNNNjhLUmVnc1R5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzTTY4
S1JlZ3NUeXBlICA8QT4mKTsJRW1BbGlhc002OEtSZWdzVHlwZSAgPEE+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNNNjhLUmVnc1R5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0
Owlwcml2YXRlOglFbUFsaWFzTTY4S1JlZ3NUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7
CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJZCA7IAkgRW1BbGlhc1VJbnQz
MiA8QT4JIAkJCQkJCWEgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQl1c3AgOyAJIEVtQWxp
YXNVSW50MzIgPEE+CSAJCQkJCQlzc3AgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlwYyA7
IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXNyIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
YSAgKHZvaWQpIHsgcmV0dXJuICAzMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VzcCAg
KHZvaWQpIHsgcmV0dXJuICA2MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NzcCAgKHZv
aWQpIHsgcmV0dXJuICA2NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BjICAodm9pZCkg
eyByZXR1cm4gIDY4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3IgICh2b2lkKSB7IHJl
dHVybiAgNzIgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlNNjhLUmVnc1R5cGUgIAl7CXB1YmxpYzoJ
dHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eU02OEtSZWdzVHlwZSAgCSh2b2lkKTsJRW1Q
cm94eU02OEtSZWdzVHlwZSAgCShjb25zdCBFbVByb3h5TTY4S1JlZ3NUeXBlICAmKTsJcHRyX3R5
cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7
IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNzQgIDsgfQlF
bVByb3h5TTY4S1JlZ3NUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlNNjhLUmVnc1R5
cGUgICYpOwlFbUFsaWFzTTY4S1JlZ3NUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25z
dCBFbUFsaWFzTTY4S1JlZ3NUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2
YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA3NCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJs
aWM6CSAgICAgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJZCA7IAkgRW1BbGlhc1VJbnQzMiA8
TEFTPgkgCQkJCQkJYSA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJdXNwIDsgCSBFbUFs
aWFzVUludDMyIDxMQVM+CSAJCQkJCQlzc3AgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJ
CXBjIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlzciA7ICAJICAgICBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2QgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2EgICh2b2lkKSB7IHJldHVybiAgMzIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl91c3AgICh2b2lkKSB7IHJldHVybiAgNjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9z
c3AgICh2b2lkKSB7IHJldHVybiAgNjQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wYyAg
KHZvaWQpIHsgcmV0dXJuICA2OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NyICAodm9p
ZCkgeyByZXR1cm4gIDcyIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVt
QWxpYXNVc2JId3JUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUg
cHRyX3R5cGU7CUVtQWxpYXNVc2JId3JUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1VzYkh3clR5
cGUgIAkoY29uc3QgRW1BbGlhc1VzYkh3clR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9p
ZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICA0ICA7IH0JRW1BbGlhc1VzYkh3clR5cGUgIDxBPiYJb3BlcmF0b3I9IChj
b25zdCBFbUFsaWFzVXNiSHdyVHlwZSAgPEE+Jik7CUVtQWxpYXNVc2JId3JUeXBlICA8QT4Jb3Bl
cmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1VzYkh3clR5cGUgIDxBPglvcGVyYXRvcltdIChp
bnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzVXNiSHdyVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJ
CQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJZGF0YSA7IAkgRW1B
bGlhc1VJbnQ4IDxBPgkgCQkJCQkJX19fZmlsbGVyMCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJ
CQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJX19fZmlsbGVyMSA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RhdGEgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX19fX2ZpbGxlcjAgICh2b2lkKSB7IHJldHVybiAgMSA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7IHJldHVybiAgMiA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19fX2ZpbGxlcjEgICh2b2lkKSB7IHJldHVybiAgMyA7
IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVVzYkh3clR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lk
KiBwdHJfdHlwZTsJRW1Qcm94eVVzYkh3clR5cGUgIAkodm9pZCk7CUVtUHJveHlVc2JId3JUeXBl
ICAJKGNvbnN0IEVtUHJveHlVc2JId3JUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQp
IGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJ
R2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNCAgOyB9CUVtUHJveHlVc2JId3JUeXBlICAm
CQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlVc2JId3JUeXBlICAmKTsJRW1BbGlhc1VzYkh3clR5
cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNVc2JId3JUeXBlICA8TEFT
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVz
WyAgICA0ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPExBUz4J
IAkJCQkJCWRhdGEgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJX19fZmlsbGVyMCA7IAkg
RW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQljb21tYW5kIDsgCSBFbUFsaWFzVUludDggPExBUz4J
IAkJCQkJCV9fX2ZpbGxlcjEgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kYXRhICAo
dm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fX19maWxsZXIw
ICAodm9pZCkgeyByZXR1cm4gIDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21tYW5k
ICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fX19maWxs
ZXIxICAodm9pZCkgeyByZXR1cm4gIDMgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4J
Y2xhc3MgRW1BbGlhc0h3ckJhdENtZFJlYWRUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5h
bWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNId3JCYXRDbWRSZWFkVHlwZSAgCShwdHJf
dHlwZSk7CUVtQWxpYXNId3JCYXRDbWRSZWFkVHlwZSAgCShjb25zdCBFbUFsaWFzSHdyQmF0Q21k
UmVhZFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0
cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA0ICA7IH0J
RW1BbGlhc0h3ckJhdENtZFJlYWRUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0h3
ckJhdENtZFJlYWRUeXBlICA8QT4mKTsJRW1BbGlhc0h3ckJhdENtZFJlYWRUeXBlICA8QT4Jb3Bl
cmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0h3ckJhdENtZFJlYWRUeXBlICA8QT4Jb3BlcmF0
b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc0h3ckJhdENtZFJlYWRUeXBlICAJKHZv
aWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxBPgkgCQkJ
CW1Wb2x0cyA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQlhYnMgOyAgCSAgICAgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9tVm9sdHMgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2FicyAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAgCX07IAljbGFzcyBFbVBy
b3h5SHdyQmF0Q21kUmVhZFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJ
RW1Qcm94eUh3ckJhdENtZFJlYWRUeXBlICAJKHZvaWQpOwlFbVByb3h5SHdyQmF0Q21kUmVhZFR5
cGUgIAkoY29uc3QgRW1Qcm94eUh3ckJhdENtZFJlYWRUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQ
dHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNCAgOyB9CUVtUHJveHlId3JC
YXRDbWRSZWFkVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5SHdyQmF0Q21kUmVhZFR5
cGUgICYpOwlFbUFsaWFzSHdyQmF0Q21kUmVhZFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7
CWNvbnN0IEVtQWxpYXNId3JCYXRDbWRSZWFkVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBj
b25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgNCAgXTsJfSBmTG9jYWxE
YXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCW1Wb2x0cyA7IAkgRW1B
bGlhc1VJbnQxNiA8TEFTPgkgCQkJCWFicyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X21Wb2x0cyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
YWJzICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4J
Y2xhc3MgRW1BbGlhc0h3ckplcnJ5UExEVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1l
IEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzSHdySmVycnlQTERUeXBlICAJKHB0cl90eXBl
KTsJRW1BbGlhc0h3ckplcnJ5UExEVHlwZSAgCShjb25zdCBFbUFsaWFzSHdySmVycnlQTERUeXBl
ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3Rh
dGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMjAgIDsgfQlFbUFsaWFz
SHdySmVycnlQTERUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0h3ckplcnJ5UExE
VHlwZSAgPEE+Jik7CUVtQWxpYXNId3JKZXJyeVBMRFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQp
Owljb25zdCBFbUFsaWFzSHdySmVycnlQTERUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25z
dDsJcHJpdmF0ZToJRW1BbGlhc0h3ckplcnJ5UExEVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlm
UHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJZHNwT24gOyAJIEVtQWxp
YXNVSW50OCA8QT4JIAkJCQkJCXVudXNlZDEgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWNo
YXJnZU9uIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQl1bnVzZWQyIDsgCSBFbUFsaWFzVUlu
dDggPEE+CSAJCQkJCQlyZWZPbiA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJdW51c2VkMyA7
IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJcGlwYUJpYXNFbmFibGUgOyAJIEVtQWxpYXNVSW50
OCA8QT4JIAkJCQkJCXVudXNlZDQgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWRzcFJlc2V0
IDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQl1bnVzZWQ1IDsgCSBFbUFsaWFzVUludDggPEE+
CSAJCQkJCQllelRvRHNsIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQl1bnVzZWQ2IDsgCSBF
bUFsaWFzVUludDggPEE+CSAJCQkJCQlyczIzMlNoZG4gOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJ
CQkJCXVudXNlZDcgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXNwYXJlT3V0IDsgCSBFbUFs
aWFzVUludDggPEE+CSAJCQkJCQl1bnVzZWQ4IDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJ
ZFRvM1NsbiA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWlYdHJubDIgOyAgCSAgICAgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9kc3BPbiAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdW51c2VkMSAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfY2hhcmdlT24gICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3VudXNlZDIgICh2b2lkKSB7IHJldHVybiAgMyA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3JlZk9uICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl91bnVzZWQzICAodm9pZCkgeyByZXR1cm4gIDUgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9waXBhQmlhc0VuYWJsZSAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdW51c2VkNCAgKHZvaWQpIHsgcmV0dXJuICA3IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZHNwUmVzZXQgICh2b2lkKSB7IHJldHVybiAgOCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VudXNlZDUgICh2b2lkKSB7IHJldHVybiAgOSA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V6VG9Ec2wgICh2b2lkKSB7IHJldHVybiAgMTAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91bnVzZWQ2ICAodm9pZCkgeyByZXR1cm4gIDExIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcnMyMzJTaGRuICAodm9pZCkgeyByZXR1cm4gIDEy
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdW51c2VkNyAgKHZvaWQpIHsgcmV0dXJuICAx
MyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NwYXJlT3V0ICAodm9pZCkgeyByZXR1cm4g
IDE0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdW51c2VkOCAgKHZvaWQpIHsgcmV0dXJu
ICAxNSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RUbzNTbG4gICh2b2lkKSB7IHJldHVy
biAgMTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pWHRybmwyICAodm9pZCkgeyByZXR1
cm4gIDE3IDsgfSAgCX07IAljbGFzcyBFbVByb3h5SHdySmVycnlQTERUeXBlICAJewlwdWJsaWM6
CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlId3JKZXJyeVBMRFR5cGUgIAkodm9pZCk7
CUVtUHJveHlId3JKZXJyeVBMRFR5cGUgIAkoY29uc3QgRW1Qcm94eUh3ckplcnJ5UExEVHlwZSAg
Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZm
TG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAg
IDIwICA7IH0JRW1Qcm94eUh3ckplcnJ5UExEVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVBy
b3h5SHdySmVycnlQTERUeXBlICAmKTsJRW1BbGlhc0h3ckplcnJ5UExEVHlwZSAgPExBUz4Jb3Bl
cmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0h3ckplcnJ5UExEVHlwZSAgPExBUz4Jb3BlcmF0
b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMjAg
IF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJ
ZHNwT24gOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJdW51c2VkMSA7IAkgRW1BbGlhc1VJ
bnQ4IDxMQVM+CSAJCQkJCQljaGFyZ2VPbiA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQl1
bnVzZWQyIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXJlZk9uIDsgCSBFbUFsaWFzVUlu
dDggPExBUz4JIAkJCQkJCXVudXNlZDMgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJcGlw
YUJpYXNFbmFibGUgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJdW51c2VkNCA7IAkgRW1B
bGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlkc3BSZXNldCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJ
CQkJCQl1bnVzZWQ1IDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWV6VG9Ec2wgOyAJIEVt
QWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJdW51c2VkNiA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJ
CQkJCQlyczIzMlNoZG4gOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJdW51c2VkNyA7IAkg
RW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlzcGFyZU91dCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+
CSAJCQkJCQl1bnVzZWQ4IDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlkVG8zU2xuIDsg
CSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlpWHRybmwyIDsgIAkgICAgIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZHNwT24gICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3VudXNlZDEgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2NoYXJnZU9uICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl91bnVzZWQyICAodm9pZCkgeyByZXR1cm4gIDMgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9yZWZPbiAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfdW51c2VkMyAgKHZvaWQpIHsgcmV0dXJuICA1IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfcGlwYUJpYXNFbmFibGUgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3VudXNlZDQgICh2b2lkKSB7IHJldHVybiAgNyA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2RzcFJlc2V0ICAodm9pZCkgeyByZXR1cm4gIDggOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl91bnVzZWQ1ICAodm9pZCkgeyByZXR1cm4gIDkgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9lelRvRHNsICAodm9pZCkgeyByZXR1cm4gIDEwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdW51c2VkNiAgKHZvaWQpIHsgcmV0dXJuICAxMSA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3JzMjMyU2hkbiAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3VudXNlZDcgICh2b2lkKSB7IHJldHVybiAgMTMgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9zcGFyZU91dCAgKHZvaWQpIHsgcmV0dXJuICAxNCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VudXNlZDggICh2b2lkKSB7IHJldHVybiAgMTUgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kVG8zU2xuICAodm9pZCkgeyByZXR1cm4gIDE2IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaVh0cm5sMiAgKHZvaWQpIHsgcmV0dXJuICAxNyA7
IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzSHdyTEFQVHlwZSAg
CXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFz
SHdyTEFQVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNId3JMQVBUeXBlICAJKGNvbnN0IEVtQWxp
YXNId3JMQVBUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJu
IGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMHg2
NCAgOyB9CUVtQWxpYXNId3JMQVBUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0h3
ckxBUFR5cGUgIDxBPiYpOwlFbUFsaWFzSHdyTEFQVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7
CWNvbnN0IEVtQWxpYXNId3JMQVBUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJp
dmF0ZToJRW1BbGlhc0h3ckxBUFR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGlj
OgkgICAgIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQljb250cm9sIDsgCSBFbUFsaWFzVUludDMy
IDxBPgkgCQkJCQkJc3RhdHVzIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJdGltaW5nMCA7
IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXRpbWluZzEgOyAJIEVtQWxpYXNVSW50MzIgPEE+
CSAJCQkJCQl0aW1pbmcyIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29udHJvbCAg
KHZvaWQpIHsgcmV0dXJuICAweDAwMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N0YXR1
cyAgKHZvaWQpIHsgcmV0dXJuICAweDAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Rp
bWluZzAgICh2b2lkKSB7IHJldHVybiAgMHgwNDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl90aW1pbmcxICAodm9pZCkgeyByZXR1cm4gIDB4MDUwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfdGltaW5nMiAgKHZvaWQpIHsgcmV0dXJuICAweDA2MCA7IH0gIAl9OyAJY2xhc3MgRW1Q
cm94eUh3ckxBUFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94
eUh3ckxBUFR5cGUgIAkodm9pZCk7CUVtUHJveHlId3JMQVBUeXBlICAJKGNvbnN0IEVtUHJveHlI
d3JMQVBUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChw
dHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7
IHJldHVybiAgICAgMHg2NCAgOyB9CUVtUHJveHlId3JMQVBUeXBlICAmCQlvcGVyYXRvcj0gKGNv
bnN0IEVtUHJveHlId3JMQVBUeXBlICAmKTsJRW1BbGlhc0h3ckxBUFR5cGUgIDxMQVM+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNId3JMQVBUeXBlICA8TEFTPglvcGVyYXRvcltdIChp
bnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAweDY0ICBdOwl9
IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQljb250
cm9sIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlzdGF0dXMgOyAJIEVtQWxpYXNVSW50
MzIgPExBUz4JIAkJCQkJCXRpbWluZzAgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXRp
bWluZzEgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXRpbWluZzIgOyAgCSAgICAgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9jb250cm9sICAodm9pZCkgeyByZXR1cm4gIDB4MDAwIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3RhdHVzICAodm9pZCkgeyByZXR1cm4gIDB4MDEwIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGltaW5nMCAgKHZvaWQpIHsgcmV0dXJuICAweDA0
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RpbWluZzEgICh2b2lkKSB7IHJldHVybiAg
MHgwNTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90aW1pbmcyICAodm9pZCkgeyByZXR1
cm4gIDB4MDYwIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNI
d3JNZWRpYVExMXh4VHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBl
IHB0cl90eXBlOwlFbUFsaWFzSHdyTWVkaWFRMTF4eFR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFz
SHdyTWVkaWFRMTF4eFR5cGUgIAkoY29uc3QgRW1BbGlhc0h3ck1lZGlhUTExeHhUeXBlICAmKTsJ
cHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNp
emVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMHgyMDAwICA7IH0JRW1BbGlhc0h3
ck1lZGlhUTExeHhUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0h3ck1lZGlhUTEx
eHhUeXBlICA8QT4mKTsJRW1BbGlhc0h3ck1lZGlhUTExeHhUeXBlICA8QT4Jb3BlcmF0b3JbXSAo
aW50KTsJY29uc3QgRW1BbGlhc0h3ck1lZGlhUTExeHhUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50
KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc0h3ck1lZGlhUTExeHhUeXBlICAJKHZvaWQpOwlwdHJf
dHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJY2NSRUcg
OyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQltbVJFRyA7IAkgRW1BbGlhc1VJbnQzMiA8QT4J
IAkJCQkJCWluUkVHIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJZ2NSRUcgOyAJIEVtQWxp
YXNVSW50MzIgPEE+CSAJCQkJCQlnZVJFRyA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXNz
UkVHIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJc3BSRUcgOyAJIEVtQWxpYXNVSW50MzIg
PEE+CSAJCQkJCQlkY1JFRyA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXBjUkVHIDsgCSBF
bUFsaWFzVUludDMyIDxBPgkgCQkJCQkJdWhSRUcgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJ
CQlmcFJFRyA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCWNwUkVHIDsgCSBFbUFsaWFzVUlu
dDMyIDxBPgkgCQkJCQkJc2ZSRUcgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQl1ZFJFRyA7
ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NjUkVHICAodm9pZCkgeyByZXR1cm4gIDB4
MDAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbW1SRUcgICh2b2lkKSB7IHJldHVybiAg
MHgwODAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pblJFRyAgKHZvaWQpIHsgcmV0dXJu
ICAweDEwMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2djUkVHICAodm9pZCkgeyByZXR1
cm4gIDB4MTgwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ2VSRUcgICh2b2lkKSB7IHJl
dHVybiAgMHgyMDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zc1JFRyAgKHZvaWQpIHsg
cmV0dXJuICAweDI4MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NwUkVHICAodm9pZCkg
eyByZXR1cm4gIDB4MzAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGNSRUcgICh2b2lk
KSB7IHJldHVybiAgMHgzODAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wY1JFRyAgKHZv
aWQpIHsgcmV0dXJuICAweDQwMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VoUkVHICAo
dm9pZCkgeyByZXR1cm4gIDB4NTAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZnBSRUcg
ICh2b2lkKSB7IHJldHVybiAgMHg2MDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jcFJF
RyAgKHZvaWQpIHsgcmV0dXJuICAweDgwMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Nm
UkVHICAodm9pZCkgeyByZXR1cm4gIDB4QzAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
dWRSRUcgICh2b2lkKSB7IHJldHVybiAgMHgxMDAwIDsgfSAgCX07IAljbGFzcyBFbVByb3h5SHdy
TWVkaWFRMTF4eFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94
eUh3ck1lZGlhUTExeHhUeXBlICAJKHZvaWQpOwlFbVByb3h5SHdyTWVkaWFRMTF4eFR5cGUgIAko
Y29uc3QgRW1Qcm94eUh3ck1lZGlhUTExeHhUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZv
aWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVf
dAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMHgyMDAwICA7IH0JRW1Qcm94eUh3ck1l
ZGlhUTExeHhUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlId3JNZWRpYVExMXh4VHlw
ZSAgJik7CUVtQWxpYXNId3JNZWRpYVExMXh4VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJ
Y29uc3QgRW1BbGlhc0h3ck1lZGlhUTExeHhUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNv
bnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAweDIwMDAgIF07CX0gZkxv
Y2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWNjUkVHIDsg
CSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQltbVJFRyA7IAkgRW1BbGlhc1VJbnQzMiA8TEFT
PgkgCQkJCQkJaW5SRUcgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWdjUkVHIDsgCSBF
bUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlnZVJFRyA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkg
CQkJCQkJc3NSRUcgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXNwUkVHIDsgCSBFbUFs
aWFzVUludDMyIDxMQVM+CSAJCQkJCQlkY1JFRyA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJ
CQkJcGNSRUcgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXVoUkVHIDsgCSBFbUFsaWFz
VUludDMyIDxMQVM+CSAJCQkJCQlmcFJFRyA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJ
Y3BSRUcgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXNmUkVHIDsgCSBFbUFsaWFzVUlu
dDMyIDxMQVM+CSAJCQkJCQl1ZFJFRyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Nj
UkVHICAodm9pZCkgeyByZXR1cm4gIDB4MDAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
bW1SRUcgICh2b2lkKSB7IHJldHVybiAgMHgwODAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9pblJFRyAgKHZvaWQpIHsgcmV0dXJuICAweDEwMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2djUkVHICAodm9pZCkgeyByZXR1cm4gIDB4MTgwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfZ2VSRUcgICh2b2lkKSB7IHJldHVybiAgMHgyMDAgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9zc1JFRyAgKHZvaWQpIHsgcmV0dXJuICAweDI4MCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3NwUkVHICAodm9pZCkgeyByZXR1cm4gIDB4MzAwIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZGNSRUcgICh2b2lkKSB7IHJldHVybiAgMHgzODAgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9wY1JFRyAgKHZvaWQpIHsgcmV0dXJuICAweDQwMCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3VoUkVHICAodm9pZCkgeyByZXR1cm4gIDB4NTAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZnBSRUcgICh2b2lkKSB7IHJldHVybiAgMHg2MDAgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9jcFJFRyAgKHZvaWQpIHsgcmV0dXJuICAweDgwMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3NmUkVHICAodm9pZCkgeyByZXR1cm4gIDB4QzAwIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWRSRUcgICh2b2lkKSB7IHJldHVybiAgMHgxMDAwIDsg
fSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNId3JTa3l3YWxrZXJQ
TERUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7
CUVtQWxpYXNId3JTa3l3YWxrZXJQTERUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc0h3clNreXdh
bGtlclBMRFR5cGUgIAkoY29uc3QgRW1BbGlhc0h3clNreXdhbGtlclBMRFR5cGUgICYpOwlwdHJf
dHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90
CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA0MiAgOyB9CUVtQWxpYXNId3JTa3l3YWxr
ZXJQTERUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0h3clNreXdhbGtlclBMRFR5
cGUgIDxBPiYpOwlFbUFsaWFzSHdyU2t5d2Fsa2VyUExEVHlwZSAgPEE+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNId3JTa3l3YWxrZXJQTERUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50
KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc0h3clNreXdhbGtlclBMRFR5cGUgIAkodm9pZCk7CXB0
cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQl0b2Rz
bG4zIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJZ3JlZW5fbGVkIDsgCSBFbUFsaWFzVUlu
dDE2IDxBPgkgCQkJCQkJcGluX25vdGlmeV9lbmFibGUgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJ
CQkJCQlyZWRfbGVkIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJYWNwciA7IAkgRW1BbGlh
c1VJbnQxNiA8QT4JIAkJCQkJCWxvd19iYXR0IDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJ
ZHRvM3N2Y19pcnEgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlkc3BfaXJxX2VuYWJsZSA7
IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWRzcF9pcnFfcG9sYXJpdHkgOyAJIEVtQWxpYXNV
SW50MTYgPEE+CSAJCQkJCQljaGFyZ2luZ19pbl9wcm9ncmVzcyA7IAkgRW1BbGlhc1VJbnQxNiA8
QT4JIAkJCQkJCWNoYXJnaW5nX2luX3Byb2cyIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJ
Y2hhcmdpbmdfaW5fcHJvZ19PRSA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXR3aXN0ZXJf
aXJxX3dha2UgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlsb3dfYmF0dF9tYXNrIDsgCSBF
bUFsaWFzVUludDE2IDxBPgkgCQkJCQkJYWNwcl9tYXNrIDsgCSBFbUFsaWFzVUludDE2IDxBPgkg
CQkJCQkJYWNwcl9wb2xhcml0eSA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXVzYl9pbnQg
OyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQl1c2JfaW50X21hc2sgOyAJIEVtQWxpYXNVSW50
MTYgPEE+CSAJCQkJCQlidWxsZXRfZGV0IDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJYnVs
bGV0X2RldF9tYXNrIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJYnVsbGV0X2RldF9wb2wg
OyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90b2RzbG4zICAodm9pZCkgeyByZXR1cm4g
IDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ncmVlbl9sZWQgICh2b2lkKSB7IHJldHVy
biAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Bpbl9ub3RpZnlfZW5hYmxlICAodm9p
ZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZWRfbGVkICAodm9p
ZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hY3ByICAodm9pZCkg
eyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sb3dfYmF0dCAgKHZvaWQp
IHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2R0bzNzdmNfaXJxICAo
dm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZHNwX2lycV9l
bmFibGUgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9k
c3BfaXJxX3BvbGFyaXR5ICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfY2hhcmdpbmdfaW5fcHJvZ3Jlc3MgICh2b2lkKSB7IHJldHVybiAgMTggOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9jaGFyZ2luZ19pbl9wcm9nMiAgKHZvaWQpIHsgcmV0dXJu
ICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NoYXJnaW5nX2luX3Byb2dfT0UgICh2
b2lkKSB7IHJldHVybiAgMjIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90d2lzdGVyX2ly
cV93YWtlICAodm9pZCkgeyByZXR1cm4gIDI0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
bG93X2JhdHRfbWFzayAgKHZvaWQpIHsgcmV0dXJuICAyNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2FjcHJfbWFzayAgKHZvaWQpIHsgcmV0dXJuICAyOCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2FjcHJfcG9sYXJpdHkgICh2b2lkKSB7IHJldHVybiAgMzAgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl91c2JfaW50ICAodm9pZCkgeyByZXR1cm4gIDMyIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdXNiX2ludF9tYXNrICAodm9pZCkgeyByZXR1cm4gIDM0IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYnVsbGV0X2RldCAgKHZvaWQpIHsgcmV0dXJuICAzNiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2J1bGxldF9kZXRfbWFzayAgKHZvaWQpIHsgcmV0
dXJuICAzOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2J1bGxldF9kZXRfcG9sICAodm9p
ZCkgeyByZXR1cm4gIDQwIDsgfSAgCX07IAljbGFzcyBFbVByb3h5SHdyU2t5d2Fsa2VyUExEVHlw
ZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5SHdyU2t5d2Fsa2Vy
UExEVHlwZSAgCSh2b2lkKTsJRW1Qcm94eUh3clNreXdhbGtlclBMRFR5cGUgIAkoY29uc3QgRW1Q
cm94eUh3clNreXdhbGtlclBMRFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29u
c3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRT
aXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA0MiAgOyB9CUVtUHJveHlId3JTa3l3YWxrZXJQTERU
eXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlId3JTa3l3YWxrZXJQTERUeXBlICAmKTsJ
RW1BbGlhc0h3clNreXdhbGtlclBMRFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0
IEVtQWxpYXNId3JTa3l3YWxrZXJQTERUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0
Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA0MiAgXTsJfSBmTG9jYWxEYXRh
OwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJdG9kc2xuMyA7IAkgRW1B
bGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJZ3JlZW5fbGVkIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+
CSAJCQkJCQlwaW5fbm90aWZ5X2VuYWJsZSA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJ
cmVkX2xlZCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJYWNwciA7IAkgRW1BbGlhc1VJ
bnQxNiA8TEFTPgkgCQkJCQkJbG93X2JhdHQgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJ
CWR0bzNzdmNfaXJxIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlkc3BfaXJxX2VuYWJs
ZSA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJZHNwX2lycV9wb2xhcml0eSA7IAkgRW1B
bGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJY2hhcmdpbmdfaW5fcHJvZ3Jlc3MgOyAJIEVtQWxpYXNV
SW50MTYgPExBUz4JIAkJCQkJCWNoYXJnaW5nX2luX3Byb2cyIDsgCSBFbUFsaWFzVUludDE2IDxM
QVM+CSAJCQkJCQljaGFyZ2luZ19pbl9wcm9nX09FIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJ
CQkJCQl0d2lzdGVyX2lycV93YWtlIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlsb3df
YmF0dF9tYXNrIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlhY3ByX21hc2sgOyAJIEVt
QWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWFjcHJfcG9sYXJpdHkgOyAJIEVtQWxpYXNVSW50MTYg
PExBUz4JIAkJCQkJCXVzYl9pbnQgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXVzYl9p
bnRfbWFzayA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJYnVsbGV0X2RldCA7IAkgRW1B
bGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJYnVsbGV0X2RldF9tYXNrIDsgCSBFbUFsaWFzVUludDE2
IDxMQVM+CSAJCQkJCQlidWxsZXRfZGV0X3BvbCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3RvZHNsbjMgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2dyZWVuX2xlZCAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfcGluX25vdGlmeV9lbmFibGUgICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3JlZF9sZWQgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2FjcHIgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2xvd19iYXR0ICAodm9pZCkgeyByZXR1cm4gIDEwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfZHRvM3N2Y19pcnEgICh2b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9kc3BfaXJxX2VuYWJsZSAgKHZvaWQpIHsgcmV0dXJuICAxNCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RzcF9pcnFfcG9sYXJpdHkgICh2b2lkKSB7IHJl
dHVybiAgMTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jaGFyZ2luZ19pbl9wcm9ncmVz
cyAgKHZvaWQpIHsgcmV0dXJuICAxOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NoYXJn
aW5nX2luX3Byb2cyICAodm9pZCkgeyByZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfY2hhcmdpbmdfaW5fcHJvZ19PRSAgKHZvaWQpIHsgcmV0dXJuICAyMiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3R3aXN0ZXJfaXJxX3dha2UgICh2b2lkKSB7IHJldHVybiAgMjQg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sb3dfYmF0dF9tYXNrICAodm9pZCkgeyByZXR1
cm4gIDI2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWNwcl9tYXNrICAodm9pZCkgeyBy
ZXR1cm4gIDI4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWNwcl9wb2xhcml0eSAgKHZv
aWQpIHsgcmV0dXJuICAzMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VzYl9pbnQgICh2
b2lkKSB7IHJldHVybiAgMzIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91c2JfaW50X21h
c2sgICh2b2lkKSB7IHJldHVybiAgMzQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9idWxs
ZXRfZGV0ICAodm9pZCkgeyByZXR1cm4gIDM2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
YnVsbGV0X2RldF9tYXNrICAodm9pZCkgeyByZXR1cm4gIDM4IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfYnVsbGV0X2RldF9wb2wgICh2b2lkKSB7IHJldHVybiAgNDAgOyB9ICAJfTsgICAJ
ICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0h3clN5bWJvbEFTSUNUeXBlICAJewlw
dWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNId3JT
eW1ib2xBU0lDVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNId3JTeW1ib2xBU0lDVHlwZSAgCShj
b25zdCBFbUFsaWFzSHdyU3ltYm9sQVNJQ1R5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9p
ZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICAyNTYgIDsgfQlFbUFsaWFzSHdyU3ltYm9sQVNJQ1R5cGUgIDxBPiYJb3Bl
cmF0b3I9IChjb25zdCBFbUFsaWFzSHdyU3ltYm9sQVNJQ1R5cGUgIDxBPiYpOwlFbUFsaWFzSHdy
U3ltYm9sQVNJQ1R5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzSHdyU3lt
Ym9sQVNJQ1R5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFz
SHdyU3ltYm9sQVNJQ1R5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAg
IEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCVMyNElPIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJ
CQlTMjRBdHRyaWJ1dGUgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCVVBUlQ4MjUxTWFjcm9T
ZWxlY3QgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCVNjYW5uZXJEZWNvZGVyQ29udHJvbCA7
IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJQ29udHJvbCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkg
CQkJCQkJR1BJT0RhdGEgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCUdQSU9EaXJlY3Rpb24g
OyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9TMjRJTyAgKHZvaWQpIHsgcmV0dXJuICAw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfUzI0QXR0cmlidXRlICAodm9pZCkgeyByZXR1
cm4gIDEyOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX1VBUlQ4MjUxTWFjcm9TZWxlY3Qg
ICh2b2lkKSB7IHJldHVybiAgMTYwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfU2Nhbm5l
ckRlY29kZXJDb250cm9sICAodm9pZCkgeyByZXR1cm4gIDE2NSA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX0NvbnRyb2wgICh2b2lkKSB7IHJldHVybiAgMjQ3IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfR1BJT0RhdGEgICh2b2lkKSB7IHJldHVybiAgMjUzIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfR1BJT0RpcmVjdGlvbiAgKHZvaWQpIHsgcmV0dXJuICAyNTUgOyB9ICAJ
fTsgCWNsYXNzIEVtUHJveHlId3JTeW1ib2xBU0lDVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZv
aWQqIHB0cl90eXBlOwlFbVByb3h5SHdyU3ltYm9sQVNJQ1R5cGUgIAkodm9pZCk7CUVtUHJveHlI
d3JTeW1ib2xBU0lDVHlwZSAgCShjb25zdCBFbVByb3h5SHdyU3ltYm9sQVNJQ1R5cGUgICYpOwlw
dHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2Fs
RGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyNTYg
IDsgfQlFbVByb3h5SHdyU3ltYm9sQVNJQ1R5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94
eUh3clN5bWJvbEFTSUNUeXBlICAmKTsJRW1BbGlhc0h3clN5bWJvbEFTSUNUeXBlICA8TEFTPglv
cGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzSHdyU3ltYm9sQVNJQ1R5cGUgIDxMQVM+CW9w
ZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAg
IDI1NiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJ
CQkJCQlTMjRJTyA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlTMjRBdHRyaWJ1dGUgOyAJ
IEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJVUFSVDgyNTFNYWNyb1NlbGVjdCA7IAkgRW1BbGlh
c1VJbnQ4IDxMQVM+CSAJCQkJCQlTY2FubmVyRGVjb2RlckNvbnRyb2wgOyAJIEVtQWxpYXNVSW50
OCA8TEFTPgkgCQkJCQkJQ29udHJvbCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlHUElP
RGF0YSA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlHUElPRGlyZWN0aW9uIDsgIAkgICAg
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfUzI0SU8gICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX1MyNEF0dHJpYnV0ZSAgKHZvaWQpIHsgcmV0dXJuICAxMjgg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9VQVJUODI1MU1hY3JvU2VsZWN0ICAodm9pZCkg
eyByZXR1cm4gIDE2MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX1NjYW5uZXJEZWNvZGVy
Q29udHJvbCAgKHZvaWQpIHsgcmV0dXJuICAxNjUgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9Db250cm9sICAodm9pZCkgeyByZXR1cm4gIDI0NyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX0dQSU9EYXRhICAodm9pZCkgeyByZXR1cm4gIDI1MyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX0dQSU9EaXJlY3Rpb24gICh2b2lkKSB7IHJldHVybiAgMjU1IDsgfSAgCX07ICAgCSAg
dGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNTRUQxMzc1UmVnc1R5cGUgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1NFRDEzNzVS
ZWdzVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNTRUQxMzc1UmVnc1R5cGUgIAkoY29uc3QgRW1B
bGlhc1NFRDEzNzVSZWdzVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4g
ICAgIDMyICA7IH0JRW1BbGlhc1NFRDEzNzVSZWdzVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0
IEVtQWxpYXNTRUQxMzc1UmVnc1R5cGUgIDxBPiYpOwlFbUFsaWFzU0VEMTM3NVJlZ3NUeXBlICA8
QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1NFRDEzNzVSZWdzVHlwZSAgPEE+CW9w
ZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNTRUQxMzc1UmVnc1R5cGUgIAko
dm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8QT4JIAkJ
CQkJCXByb2R1Y3RSZXZpc2lvbkNvZGUgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCW1vZGUw
IDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQltb2RlMSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkg
CQkJCQkJbW9kZTIgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWhvcml6b250YWxQYW5lbFNp
emUgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXZlcnRpY2FsUGFuZWxTaXplTFNCIDsgCSBF
bUFsaWFzVUludDggPEE+CSAJCQkJCQl2ZXJ0aWNhbFBhbmVsU2l6ZU1TQiA7IAkgRW1BbGlhc1VJ
bnQ4IDxBPgkgCQkJCQkJRlBMaW5lU3RhcnRQb3NpdGlvbiA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkg
CQkJCQkJaG9yaXpvbnRhbE5vbkRpc3BsYXlQZXJpb2QgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJ
CQkJCUZQRlJBTUVTdGFydFBvc2l0aW9uIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQl2ZXJ0
aWNhbE5vbkRpc3BsYXlQZXJpb2QgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCU1PRFJhdGUg
OyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXNjcmVlbjFTdGFydEFkZHJlc3NMU0IgOyAJIEVt
QWxpYXNVSW50OCA8QT4JIAkJCQkJCXNjcmVlbjFTdGFydEFkZHJlc3NNU0IgOyAJIEVtQWxpYXNV
SW50OCA8QT4JIAkJCQkJCXNjcmVlbjJTdGFydEFkZHJlc3NMU0IgOyAJIEVtQWxpYXNVSW50OCA8
QT4JIAkJCQkJCXNjcmVlbjJTdGFydEFkZHJlc3NNU0IgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJ
CQkJCXNjcmVlbjFTdGFydEFkZHJlc3NNU0JpdCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJ
bWVtb3J5QWRkcmVzc09mZnNldCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJc2NyZWVuMVZl
cnRpY2FsU2l6ZUxTQiA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJc2NyZWVuMVZlcnRpY2Fs
U2l6ZU1TQiA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJdW51c2VkMSA7IAkgRW1BbGlhc1VJ
bnQ4IDxBPgkgCQkJCQkJbG9va1VwVGFibGVBZGRyZXNzIDsgCSBFbUFsaWFzVUludDggPEE+CSAJ
CQkJCQl1bnVzZWQyIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlsb29rVXBUYWJsZURhdGEg
OyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCUdQSU9Db25maWd1cmF0aW9uQ29udHJvbCA7IAkg
RW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJR1BJT1N0YXR1c0NvbnRyb2wgOyAJIEVtQWxpYXNVSW50
OCA8QT4JIAkJCQkJCXNjcmF0Y2hQYWQgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXBvcnRy
YWl0TW9kZSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJbGluZUJ5dGVDb3VudFJlZ2lzdGVy
IDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQl1bnVzZWQzIDsgCSBFbUFsaWFzVUludDggPEE+
CSAJCQkJCQl1bnVzZWQ0IDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQl1bnVzZWQ1IDsgIAkg
ICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcHJvZHVjdFJldmlzaW9uQ29kZSAgKHZvaWQpIHsg
cmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbW9kZTAgICh2b2lkKSB7IHJl
dHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21vZGUxICAodm9pZCkgeyByZXR1
cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tb2RlMiAgKHZvaWQpIHsgcmV0dXJu
ICAzIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaG9yaXpvbnRhbFBhbmVsU2l6ZSAgKHZv
aWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdmVydGljYWxQYW5l
bFNpemVMU0IgICh2b2lkKSB7IHJldHVybiAgNSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3ZlcnRpY2FsUGFuZWxTaXplTVNCICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9GUExpbmVTdGFydFBvc2l0aW9uICAodm9pZCkgeyByZXR1cm4gIDcgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ob3Jpem9udGFsTm9uRGlzcGxheVBlcmlvZCAgKHZv
aWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfRlBGUkFNRVN0YXJ0
UG9zaXRpb24gICh2b2lkKSB7IHJldHVybiAgOSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3ZlcnRpY2FsTm9uRGlzcGxheVBlcmlvZCAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX01PRFJhdGUgICh2b2lkKSB7IHJldHVybiAgMTEgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9zY3JlZW4xU3RhcnRBZGRyZXNzTFNCICAodm9pZCkgeyByZXR1
cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2NyZWVuMVN0YXJ0QWRkcmVzc01T
QiAgKHZvaWQpIHsgcmV0dXJuICAxMyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NjcmVl
bjJTdGFydEFkZHJlc3NMU0IgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9zY3JlZW4yU3RhcnRBZGRyZXNzTVNCICAodm9pZCkgeyByZXR1cm4gIDE1IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2NyZWVuMVN0YXJ0QWRkcmVzc01TQml0ICAodm9p
ZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbWVtb3J5QWRkcmVz
c09mZnNldCAgKHZvaWQpIHsgcmV0dXJuICAxNyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3NjcmVlbjFWZXJ0aWNhbFNpemVMU0IgICh2b2lkKSB7IHJldHVybiAgMTggOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9zY3JlZW4xVmVydGljYWxTaXplTVNCICAodm9pZCkgeyByZXR1cm4g
IDE5IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdW51c2VkMSAgKHZvaWQpIHsgcmV0dXJu
ICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xvb2tVcFRhYmxlQWRkcmVzcyAgKHZv
aWQpIHsgcmV0dXJuICAyMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VudXNlZDIgICh2
b2lkKSB7IHJldHVybiAgMjIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sb29rVXBUYWJs
ZURhdGEgICh2b2lkKSB7IHJldHVybiAgMjMgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9H
UElPQ29uZmlndXJhdGlvbkNvbnRyb2wgICh2b2lkKSB7IHJldHVybiAgMjQgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9HUElPU3RhdHVzQ29udHJvbCAgKHZvaWQpIHsgcmV0dXJuICAyNSA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NjcmF0Y2hQYWQgICh2b2lkKSB7IHJldHVybiAg
MjYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wb3J0cmFpdE1vZGUgICh2b2lkKSB7IHJl
dHVybiAgMjcgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9saW5lQnl0ZUNvdW50UmVnaXN0
ZXIgICh2b2lkKSB7IHJldHVybiAgMjggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91bnVz
ZWQzICAodm9pZCkgeyByZXR1cm4gIDI5IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdW51
c2VkNCAgKHZvaWQpIHsgcmV0dXJuICAzMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Vu
dXNlZDUgICh2b2lkKSB7IHJldHVybiAgMzEgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlTRUQxMzc1
UmVnc1R5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVNFRDEz
NzVSZWdzVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVNFRDEzNzVSZWdzVHlwZSAgCShjb25zdCBFbVBy
b3h5U0VEMTM3NVJlZ3NUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsg
cmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQko
dm9pZCkJCQl7IHJldHVybiAgICAgMzIgIDsgfQlFbVByb3h5U0VEMTM3NVJlZ3NUeXBlICAmCQlv
cGVyYXRvcj0gKGNvbnN0IEVtUHJveHlTRUQxMzc1UmVnc1R5cGUgICYpOwlFbUFsaWFzU0VEMTM3
NVJlZ3NUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU0VEMTM3NVJl
Z3NUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3Qgewlj
aGFyCQkJX2J5dGVzWyAgICAzMiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlh
c1VJbnQ4IDxMQVM+CSAJCQkJCQlwcm9kdWN0UmV2aXNpb25Db2RlIDsgCSBFbUFsaWFzVUludDgg
PExBUz4JIAkJCQkJCW1vZGUwIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCW1vZGUxIDsg
CSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCW1vZGUyIDsgCSBFbUFsaWFzVUludDggPExBUz4J
IAkJCQkJCWhvcml6b250YWxQYW5lbFNpemUgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJ
dmVydGljYWxQYW5lbFNpemVMU0IgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJdmVydGlj
YWxQYW5lbFNpemVNU0IgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJRlBMaW5lU3RhcnRQ
b3NpdGlvbiA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlob3Jpem9udGFsTm9uRGlzcGxh
eVBlcmlvZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlGUEZSQU1FU3RhcnRQb3NpdGlv
biA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQl2ZXJ0aWNhbE5vbkRpc3BsYXlQZXJpb2Qg
OyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJTU9EUmF0ZSA7IAkgRW1BbGlhc1VJbnQ4IDxM
QVM+CSAJCQkJCQlzY3JlZW4xU3RhcnRBZGRyZXNzTFNCIDsgCSBFbUFsaWFzVUludDggPExBUz4J
IAkJCQkJCXNjcmVlbjFTdGFydEFkZHJlc3NNU0IgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJ
CQkJc2NyZWVuMlN0YXJ0QWRkcmVzc0xTQiA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlz
Y3JlZW4yU3RhcnRBZGRyZXNzTVNCIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXNjcmVl
bjFTdGFydEFkZHJlc3NNU0JpdCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQltZW1vcnlB
ZGRyZXNzT2Zmc2V0IDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXNjcmVlbjFWZXJ0aWNh
bFNpemVMU0IgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJc2NyZWVuMVZlcnRpY2FsU2l6
ZU1TQiA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQl1bnVzZWQxIDsgCSBFbUFsaWFzVUlu
dDggPExBUz4JIAkJCQkJCWxvb2tVcFRhYmxlQWRkcmVzcyA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+
CSAJCQkJCQl1bnVzZWQyIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWxvb2tVcFRhYmxl
RGF0YSA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlHUElPQ29uZmlndXJhdGlvbkNvbnRy
b2wgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJR1BJT1N0YXR1c0NvbnRyb2wgOyAJIEVt
QWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJc2NyYXRjaFBhZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+
CSAJCQkJCQlwb3J0cmFpdE1vZGUgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJbGluZUJ5
dGVDb3VudFJlZ2lzdGVyIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXVudXNlZDMgOyAJ
IEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJdW51c2VkNCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+
CSAJCQkJCQl1bnVzZWQ1IDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcHJvZHVjdFJl
dmlzaW9uQ29kZSAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfbW9kZTAgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X21vZGUxICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9t
b2RlMiAgKHZvaWQpIHsgcmV0dXJuICAzIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaG9y
aXpvbnRhbFBhbmVsU2l6ZSAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfdmVydGljYWxQYW5lbFNpemVMU0IgICh2b2lkKSB7IHJldHVybiAgNSA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3ZlcnRpY2FsUGFuZWxTaXplTVNCICAodm9pZCkgeyByZXR1
cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9GUExpbmVTdGFydFBvc2l0aW9uICAo
dm9pZCkgeyByZXR1cm4gIDcgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ob3Jpem9udGFs
Tm9uRGlzcGxheVBlcmlvZCAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfRlBGUkFNRVN0YXJ0UG9zaXRpb24gICh2b2lkKSB7IHJldHVybiAgOSA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3ZlcnRpY2FsTm9uRGlzcGxheVBlcmlvZCAgKHZvaWQpIHsg
cmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX01PRFJhdGUgICh2b2lkKSB7
IHJldHVybiAgMTEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zY3JlZW4xU3RhcnRBZGRy
ZXNzTFNCICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
c2NyZWVuMVN0YXJ0QWRkcmVzc01TQiAgKHZvaWQpIHsgcmV0dXJuICAxMyA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3NjcmVlbjJTdGFydEFkZHJlc3NMU0IgICh2b2lkKSB7IHJldHVybiAg
MTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zY3JlZW4yU3RhcnRBZGRyZXNzTVNCICAo
dm9pZCkgeyByZXR1cm4gIDE1IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2NyZWVuMVN0
YXJ0QWRkcmVzc01TQml0ICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfbWVtb3J5QWRkcmVzc09mZnNldCAgKHZvaWQpIHsgcmV0dXJuICAxNyA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3NjcmVlbjFWZXJ0aWNhbFNpemVMU0IgICh2b2lkKSB7IHJl
dHVybiAgMTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zY3JlZW4xVmVydGljYWxTaXpl
TVNCICAodm9pZCkgeyByZXR1cm4gIDE5IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdW51
c2VkMSAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xv
b2tVcFRhYmxlQWRkcmVzcyAgKHZvaWQpIHsgcmV0dXJuICAyMSA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3VudXNlZDIgICh2b2lkKSB7IHJldHVybiAgMjIgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9sb29rVXBUYWJsZURhdGEgICh2b2lkKSB7IHJldHVybiAgMjMgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9HUElPQ29uZmlndXJhdGlvbkNvbnRyb2wgICh2b2lkKSB7IHJl
dHVybiAgMjQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9HUElPU3RhdHVzQ29udHJvbCAg
KHZvaWQpIHsgcmV0dXJuICAyNSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NjcmF0Y2hQ
YWQgICh2b2lkKSB7IHJldHVybiAgMjYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wb3J0
cmFpdE1vZGUgICh2b2lkKSB7IHJldHVybiAgMjcgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9saW5lQnl0ZUNvdW50UmVnaXN0ZXIgICh2b2lkKSB7IHJldHVybiAgMjggOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl91bnVzZWQzICAodm9pZCkgeyByZXR1cm4gIDI5IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdW51c2VkNCAgKHZvaWQpIHsgcmV0dXJuICAzMCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3VudXNlZDUgICh2b2lkKSB7IHJldHVybiAgMzEgOyB9ICAJfTsg
ICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1NFRDEzNzZSZWdzVHlwZSAgCXsJ
cHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzU0VE
MTM3NlJlZ3NUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1NFRDEzNzZSZWdzVHlwZSAgCShjb25z
dCBFbUFsaWFzU0VEMTM3NlJlZ3NUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNv
bnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJl
dHVybiAgICAgMHhCNCAgOyB9CUVtQWxpYXNTRUQxMzc2UmVnc1R5cGUgIDxBPiYJb3BlcmF0b3I9
IChjb25zdCBFbUFsaWFzU0VEMTM3NlJlZ3NUeXBlICA8QT4mKTsJRW1BbGlhc1NFRDEzNzZSZWdz
VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTRUQxMzc2UmVnc1R5cGUg
IDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzU0VEMTM3NlJlZ3NU
eXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDgg
PEE+CSAJCQkJCQlwcm9kdWN0UmV2aXNpb25Db2RlIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJ
CQlkaXNwbGF5QnVmZmVyU2l6ZSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJY29uZmlndXJh
dGlvblJlYWRiYWNrIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQltZW1vcnlDbG9ja0NvbmZp
Z3VyYXRpb24gOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXBpeGVsQ2xvY2tDb25maWd1cmF0
aW9uIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlsdXRXcml0ZUJsdWUgOyAJIEVtQWxpYXNV
SW50OCA8QT4JIAkJCQkJCWx1dFdyaXRlR3JlZW4gOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJ
CWx1dFdyaXRlUmVkIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlsdXRXcml0ZUFkZHJlc3Mg
OyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWx1dFJlYWRCbHVlIDsgCSBFbUFsaWFzVUludDgg
PEE+CSAJCQkJCQlsdXRSZWFkR3JlZW4gOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWx1dFJl
YWRSZWQgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWx1dFJlYWRBZGRyZXNzIDsgCSBFbUFs
aWFzVUludDggPEE+CSAJCQkJCQlwYW5lbFR5cGUgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJ
CU1PRFJhdGUgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWhvcml6b250YWxUb3RhbCA7IAkg
RW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJaG9yaXpvbnRhbFBlcmlvZCA7IAkgRW1BbGlhc1VJbnQ4
IDxBPgkgCQkJCQkJaG9yaXpvbnRhbFBlcmlvZFN0YXJ0MCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkg
CQkJCQkJaG9yaXpvbnRhbFBlcmlvZFN0YXJ0MSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJ
dmVydGljYWxUb3RhbDAgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXZlcnRpY2FsVG90YWwx
IDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQl2ZXJ0aWNhbFBlcmlvZDAgOyAJIEVtQWxpYXNV
SW50OCA8QT4JIAkJCQkJCXZlcnRpY2FsUGVyaW9kMSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJ
CQkJdmVydGljYWxQZXJpb2RTdGFydDAgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXZlcnRp
Y2FsUGVyaW9kU3RhcnQxIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlGUExJTkVQdWxzZVdp
ZHRoIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlGUExJTkVQdWxzZVN0YXJ0MCA7IAkgRW1B
bGlhc1VJbnQ4IDxBPgkgCQkJCQkJRlBMSU5FUHVsc2VTdGFydDEgOyAJIEVtQWxpYXNVSW50OCA8
QT4JIAkJCQkJCUZQRlJBTUVQdWxzZVdpZHRoIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlG
UEZSQU1FUHVsc2VTdGFydDAgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCUZQRlJBTUVQdWxz
ZVN0YXJ0MSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJRFRGRF9HQ1BJbmRleCA7IAkgRW1B
bGlhc1VJbnQ4IDxBPgkgCQkJCQkJRFRGRF9HQ1BEYXRhIDsgCSBFbUFsaWFzVUludDggPEE+CSAJ
CQkJCQlkaXNwbGF5TW9kZSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJc3BlY2lhbEVmZmVj
dHMgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCW1haW5TdGFydEFkZHJlc3MwIDsgCSBFbUFs
aWFzVUludDggPEE+CSAJCQkJCQltYWluU3RhcnRBZGRyZXNzMSA7IAkgRW1BbGlhc1VJbnQ4IDxB
PgkgCQkJCQkJbWFpblN0YXJ0QWRkcmVzczIgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCW1h
aW5MaW5lQWRkcmVzc09mZnNldDAgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCW1haW5MaW5l
QWRkcmVzc09mZnNldDEgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCW92bHlTdGFydEFkZHJl
c3MwIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlvdmx5U3RhcnRBZGRyZXNzMSA7IAkgRW1B
bGlhc1VJbnQ4IDxBPgkgCQkJCQkJb3ZseVN0YXJ0QWRkcmVzczIgOyAJIEVtQWxpYXNVSW50OCA8
QT4JIAkJCQkJCW92bHlMaW5lQWRkcmVzc09mZnNldDAgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJ
CQkJCW92bHlMaW5lQWRkcmVzc09mZnNldDEgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCW92
bHlTdGFydFhQb3NpdGlvbjAgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCW92bHlTdGFydFhQ
b3NpdGlvbjEgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCW92bHlTdGFydFlQb3NpdGlvbjAg
OyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCW92bHlTdGFydFlQb3NpdGlvbjEgOyAJIEVtQWxp
YXNVSW50OCA8QT4JIAkJCQkJCW92bHlFbmRYUG9zaXRpb24wIDsgCSBFbUFsaWFzVUludDggPEE+
CSAJCQkJCQlvdmx5RW5kWFBvc2l0aW9uMSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJb3Zs
eUVuZFlQb3NpdGlvbjAgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCW92bHlFbmRZUG9zaXRp
b24xIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlwb3dlclNhdmVDb25maWd1cmF0aW9uIDsg
CSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlyZXNlcnZlZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkg
CQkJCQkJU29mdHdhcmVSZXNldCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJc2NyYXRjaFBh
ZDAgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXNjcmF0Y2hQYWQxIDsgCSBFbUFsaWFzVUlu
dDggPEE+CSAJCQkJCQlHUElPQ29uZmlndXJhdGlvbjAgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJ
CQkJCUdQSU9Db25maWd1cmF0aW9uMSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJR1BJT1N0
YXR1c0NvbnRyb2wwIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlHUElPU3RhdHVzQ29udHJv
bDEgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCVBXTUNsb2NrQ1ZQdWxzZUNvbnRyb2wgOyAJ
IEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCVBXTUNsb2NrQ1ZQdWxzZUNvbmZpZyA7IAkgRW1BbGlh
c1VJbnQ4IDxBPgkgCQkJCQkJQ1ZQdWxzZUJ1cnN0TGVuZ3RoIDsgCSBFbUFsaWFzVUludDggPEE+
CSAJCQkJCQlQV01PdXREdXR5Q3ljbGUgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9w
cm9kdWN0UmV2aXNpb25Db2RlICAodm9pZCkgeyByZXR1cm4gIDB4MDAgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9kaXNwbGF5QnVmZmVyU2l6ZSAgKHZvaWQpIHsgcmV0dXJuICAweDAxIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29uZmlndXJhdGlvblJlYWRiYWNrICAodm9pZCkg
eyByZXR1cm4gIDB4MDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tZW1vcnlDbG9ja0Nv
bmZpZ3VyYXRpb24gICh2b2lkKSB7IHJldHVybiAgMHgwNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3BpeGVsQ2xvY2tDb25maWd1cmF0aW9uICAodm9pZCkgeyByZXR1cm4gIDB4MDUgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sdXRXcml0ZUJsdWUgICh2b2lkKSB7IHJldHVybiAg
MHgwOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2x1dFdyaXRlR3JlZW4gICh2b2lkKSB7
IHJldHVybiAgMHgwOSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2x1dFdyaXRlUmVkICAo
dm9pZCkgeyByZXR1cm4gIDB4MEEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sdXRXcml0
ZUFkZHJlc3MgICh2b2lkKSB7IHJldHVybiAgMHgwQiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2x1dFJlYWRCbHVlICAodm9pZCkgeyByZXR1cm4gIDB4MEMgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9sdXRSZWFkR3JlZW4gICh2b2lkKSB7IHJldHVybiAgMHgwRCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2x1dFJlYWRSZWQgICh2b2lkKSB7IHJldHVybiAgMHgwRSA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2x1dFJlYWRBZGRyZXNzICAodm9pZCkgeyByZXR1cm4g
IDB4MEYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wYW5lbFR5cGUgICh2b2lkKSB7IHJl
dHVybiAgMHgxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX01PRFJhdGUgICh2b2lkKSB7
IHJldHVybiAgMHgxMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2hvcml6b250YWxUb3Rh
bCAgKHZvaWQpIHsgcmV0dXJuICAweDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaG9y
aXpvbnRhbFBlcmlvZCAgKHZvaWQpIHsgcmV0dXJuICAweDE0IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfaG9yaXpvbnRhbFBlcmlvZFN0YXJ0MCAgKHZvaWQpIHsgcmV0dXJuICAweDE2IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaG9yaXpvbnRhbFBlcmlvZFN0YXJ0MSAgKHZvaWQp
IHsgcmV0dXJuICAweDE3IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdmVydGljYWxUb3Rh
bDAgICh2b2lkKSB7IHJldHVybiAgMHgxOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Zl
cnRpY2FsVG90YWwxICAodm9pZCkgeyByZXR1cm4gIDB4MTkgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl92ZXJ0aWNhbFBlcmlvZDAgICh2b2lkKSB7IHJldHVybiAgMHgxQyA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3ZlcnRpY2FsUGVyaW9kMSAgKHZvaWQpIHsgcmV0dXJuICAweDFE
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdmVydGljYWxQZXJpb2RTdGFydDAgICh2b2lk
KSB7IHJldHVybiAgMHgxRSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3ZlcnRpY2FsUGVy
aW9kU3RhcnQxICAodm9pZCkgeyByZXR1cm4gIDB4MUYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9GUExJTkVQdWxzZVdpZHRoICAodm9pZCkgeyByZXR1cm4gIDB4MjAgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9GUExJTkVQdWxzZVN0YXJ0MCAgKHZvaWQpIHsgcmV0dXJuICAweDIy
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfRlBMSU5FUHVsc2VTdGFydDEgICh2b2lkKSB7
IHJldHVybiAgMHgyMyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX0ZQRlJBTUVQdWxzZVdp
ZHRoICAodm9pZCkgeyByZXR1cm4gIDB4MjQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9G
UEZSQU1FUHVsc2VTdGFydDAgICh2b2lkKSB7IHJldHVybiAgMHgyNiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX0ZQRlJBTUVQdWxzZVN0YXJ0MSAgKHZvaWQpIHsgcmV0dXJuICAweDI3IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfRFRGRF9HQ1BJbmRleCAgKHZvaWQpIHsgcmV0dXJu
ICAweDI4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfRFRGRF9HQ1BEYXRhICAodm9pZCkg
eyByZXR1cm4gIDB4MkMgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kaXNwbGF5TW9kZSAg
KHZvaWQpIHsgcmV0dXJuICAweDcwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3BlY2lh
bEVmZmVjdHMgICh2b2lkKSB7IHJldHVybiAgMHg3MSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX21haW5TdGFydEFkZHJlc3MwICAodm9pZCkgeyByZXR1cm4gIDB4NzQgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9tYWluU3RhcnRBZGRyZXNzMSAgKHZvaWQpIHsgcmV0dXJuICAweDc1
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbWFpblN0YXJ0QWRkcmVzczIgICh2b2lkKSB7
IHJldHVybiAgMHg3NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21haW5MaW5lQWRkcmVz
c09mZnNldDAgICh2b2lkKSB7IHJldHVybiAgMHg3OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX21haW5MaW5lQWRkcmVzc09mZnNldDEgICh2b2lkKSB7IHJldHVybiAgMHg3OSA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX292bHlTdGFydEFkZHJlc3MwICAodm9pZCkgeyByZXR1cm4g
IDB4N0MgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9vdmx5U3RhcnRBZGRyZXNzMSAgKHZv
aWQpIHsgcmV0dXJuICAweDdEIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfb3ZseVN0YXJ0
QWRkcmVzczIgICh2b2lkKSB7IHJldHVybiAgMHg3RSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX292bHlMaW5lQWRkcmVzc09mZnNldDAgICh2b2lkKSB7IHJldHVybiAgMHg4MCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX292bHlMaW5lQWRkcmVzc09mZnNldDEgICh2b2lkKSB7IHJl
dHVybiAgMHg4MSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX292bHlTdGFydFhQb3NpdGlv
bjAgICh2b2lkKSB7IHJldHVybiAgMHg4NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX292
bHlTdGFydFhQb3NpdGlvbjEgICh2b2lkKSB7IHJldHVybiAgMHg4NSA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX292bHlTdGFydFlQb3NpdGlvbjAgICh2b2lkKSB7IHJldHVybiAgMHg4OCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX292bHlTdGFydFlQb3NpdGlvbjEgICh2b2lkKSB7
IHJldHVybiAgMHg4OSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX292bHlFbmRYUG9zaXRp
b24wICAodm9pZCkgeyByZXR1cm4gIDB4OEMgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9v
dmx5RW5kWFBvc2l0aW9uMSAgKHZvaWQpIHsgcmV0dXJuICAweDhEIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2Zfb3ZseUVuZFlQb3NpdGlvbjAgICh2b2lkKSB7IHJldHVybiAgMHg5MCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX292bHlFbmRZUG9zaXRpb24xICAodm9pZCkgeyByZXR1
cm4gIDB4OTEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wb3dlclNhdmVDb25maWd1cmF0
aW9uICAodm9pZCkgeyByZXR1cm4gIDB4QTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9y
ZXNlcnZlZCAgKHZvaWQpIHsgcmV0dXJuICAweEExIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfU29mdHdhcmVSZXNldCAgKHZvaWQpIHsgcmV0dXJuICAweEEyIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2Zfc2NyYXRjaFBhZDAgICh2b2lkKSB7IHJldHVybiAgMHhBNCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3NjcmF0Y2hQYWQxICAodm9pZCkgeyByZXR1cm4gIDB4QTUgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9HUElPQ29uZmlndXJhdGlvbjAgICh2b2lkKSB7IHJl
dHVybiAgMHhBOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX0dQSU9Db25maWd1cmF0aW9u
MSAgKHZvaWQpIHsgcmV0dXJuICAweEE5IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfR1BJ
T1N0YXR1c0NvbnRyb2wwICAodm9pZCkgeyByZXR1cm4gIDB4QUMgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9HUElPU3RhdHVzQ29udHJvbDEgICh2b2lkKSB7IHJldHVybiAgMHhBRCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX1BXTUNsb2NrQ1ZQdWxzZUNvbnRyb2wgICh2b2lkKSB7
IHJldHVybiAgMHhCMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX1BXTUNsb2NrQ1ZQdWxz
ZUNvbmZpZyAgKHZvaWQpIHsgcmV0dXJuICAweEIxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfQ1ZQdWxzZUJ1cnN0TGVuZ3RoICAodm9pZCkgeyByZXR1cm4gIDB4QjIgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9QV01PdXREdXR5Q3ljbGUgICh2b2lkKSB7IHJldHVybiAgMHhCMyA7
IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVNFRDEzNzZSZWdzVHlwZSAgCXsJcHVibGljOgl0eXBlZGVm
IHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U0VEMTM3NlJlZ3NUeXBlICAJKHZvaWQpOwlFbVByb3h5
U0VEMTM3NlJlZ3NUeXBlICAJKGNvbnN0IEVtUHJveHlTRUQxMzc2UmVnc1R5cGUgICYpOwlwdHJf
dHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0
YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAweEI0ICA7
IH0JRW1Qcm94eVNFRDEzNzZSZWdzVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5U0VE
MTM3NlJlZ3NUeXBlICAmKTsJRW1BbGlhc1NFRDEzNzZSZWdzVHlwZSAgPExBUz4Jb3BlcmF0b3Jb
XSAoaW50KTsJY29uc3QgRW1BbGlhc1NFRDEzNzZSZWdzVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAo
aW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMHhCNCAgXTsJ
fSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlwcm9k
dWN0UmV2aXNpb25Db2RlIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWRpc3BsYXlCdWZm
ZXJTaXplIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWNvbmZpZ3VyYXRpb25SZWFkYmFj
ayA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQltZW1vcnlDbG9ja0NvbmZpZ3VyYXRpb24g
OyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJcGl4ZWxDbG9ja0NvbmZpZ3VyYXRpb24gOyAJ
IEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJbHV0V3JpdGVCbHVlIDsgCSBFbUFsaWFzVUludDgg
PExBUz4JIAkJCQkJCWx1dFdyaXRlR3JlZW4gOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJ
bHV0V3JpdGVSZWQgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJbHV0V3JpdGVBZGRyZXNz
IDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWx1dFJlYWRCbHVlIDsgCSBFbUFsaWFzVUlu
dDggPExBUz4JIAkJCQkJCWx1dFJlYWRHcmVlbiA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJ
CQlsdXRSZWFkUmVkIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWx1dFJlYWRBZGRyZXNz
IDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXBhbmVsVHlwZSA7IAkgRW1BbGlhc1VJbnQ4
IDxMQVM+CSAJCQkJCQlNT0RSYXRlIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWhvcml6
b250YWxUb3RhbCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlob3Jpem9udGFsUGVyaW9k
IDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWhvcml6b250YWxQZXJpb2RTdGFydDAgOyAJ
IEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJaG9yaXpvbnRhbFBlcmlvZFN0YXJ0MSA7IAkgRW1B
bGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQl2ZXJ0aWNhbFRvdGFsMCA7IAkgRW1BbGlhc1VJbnQ4IDxM
QVM+CSAJCQkJCQl2ZXJ0aWNhbFRvdGFsMSA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQl2
ZXJ0aWNhbFBlcmlvZDAgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJdmVydGljYWxQZXJp
b2QxIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXZlcnRpY2FsUGVyaW9kU3RhcnQwIDsg
CSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXZlcnRpY2FsUGVyaW9kU3RhcnQxIDsgCSBFbUFs
aWFzVUludDggPExBUz4JIAkJCQkJCUZQTElORVB1bHNlV2lkdGggOyAJIEVtQWxpYXNVSW50OCA8
TEFTPgkgCQkJCQkJRlBMSU5FUHVsc2VTdGFydDAgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJ
CQkJRlBMSU5FUHVsc2VTdGFydDEgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJRlBGUkFN
RVB1bHNlV2lkdGggOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJRlBGUkFNRVB1bHNlU3Rh
cnQwIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCUZQRlJBTUVQdWxzZVN0YXJ0MSA7IAkg
RW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlEVEZEX0dDUEluZGV4IDsgCSBFbUFsaWFzVUludDgg
PExBUz4JIAkJCQkJCURURkRfR0NQRGF0YSA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlk
aXNwbGF5TW9kZSA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlzcGVjaWFsRWZmZWN0cyA7
IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQltYWluU3RhcnRBZGRyZXNzMCA7IAkgRW1BbGlh
c1VJbnQ4IDxMQVM+CSAJCQkJCQltYWluU3RhcnRBZGRyZXNzMSA7IAkgRW1BbGlhc1VJbnQ4IDxM
QVM+CSAJCQkJCQltYWluU3RhcnRBZGRyZXNzMiA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJ
CQltYWluTGluZUFkZHJlc3NPZmZzZXQwIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCW1h
aW5MaW5lQWRkcmVzc09mZnNldDEgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJb3ZseVN0
YXJ0QWRkcmVzczAgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJb3ZseVN0YXJ0QWRkcmVz
czEgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJb3ZseVN0YXJ0QWRkcmVzczIgOyAJIEVt
QWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJb3ZseUxpbmVBZGRyZXNzT2Zmc2V0MCA7IAkgRW1BbGlh
c1VJbnQ4IDxMQVM+CSAJCQkJCQlvdmx5TGluZUFkZHJlc3NPZmZzZXQxIDsgCSBFbUFsaWFzVUlu
dDggPExBUz4JIAkJCQkJCW92bHlTdGFydFhQb3NpdGlvbjAgOyAJIEVtQWxpYXNVSW50OCA8TEFT
PgkgCQkJCQkJb3ZseVN0YXJ0WFBvc2l0aW9uMSA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJ
CQlvdmx5U3RhcnRZUG9zaXRpb24wIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCW92bHlT
dGFydFlQb3NpdGlvbjEgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJb3ZseUVuZFhQb3Np
dGlvbjAgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJb3ZseUVuZFhQb3NpdGlvbjEgOyAJ
IEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJb3ZseUVuZFlQb3NpdGlvbjAgOyAJIEVtQWxpYXNV
SW50OCA8TEFTPgkgCQkJCQkJb3ZseUVuZFlQb3NpdGlvbjEgOyAJIEVtQWxpYXNVSW50OCA8TEFT
PgkgCQkJCQkJcG93ZXJTYXZlQ29uZmlndXJhdGlvbiA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJ
CQkJCQlyZXNlcnZlZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlTb2Z0d2FyZVJlc2V0
IDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXNjcmF0Y2hQYWQwIDsgCSBFbUFsaWFzVUlu
dDggPExBUz4JIAkJCQkJCXNjcmF0Y2hQYWQxIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJ
CUdQSU9Db25maWd1cmF0aW9uMCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlHUElPQ29u
ZmlndXJhdGlvbjEgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJR1BJT1N0YXR1c0NvbnRy
b2wwIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCUdQSU9TdGF0dXNDb250cm9sMSA7IAkg
RW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlQV01DbG9ja0NWUHVsc2VDb250cm9sIDsgCSBFbUFs
aWFzVUludDggPExBUz4JIAkJCQkJCVBXTUNsb2NrQ1ZQdWxzZUNvbmZpZyA7IAkgRW1BbGlhc1VJ
bnQ4IDxMQVM+CSAJCQkJCQlDVlB1bHNlQnVyc3RMZW5ndGggOyAJIEVtQWxpYXNVSW50OCA8TEFT
PgkgCQkJCQkJUFdNT3V0RHV0eUN5Y2xlIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
cHJvZHVjdFJldmlzaW9uQ29kZSAgKHZvaWQpIHsgcmV0dXJuICAweDAwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfZGlzcGxheUJ1ZmZlclNpemUgICh2b2lkKSB7IHJldHVybiAgMHgwMSA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbmZpZ3VyYXRpb25SZWFkYmFjayAgKHZvaWQp
IHsgcmV0dXJuICAweDAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbWVtb3J5Q2xvY2tD
b25maWd1cmF0aW9uICAodm9pZCkgeyByZXR1cm4gIDB4MDQgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9waXhlbENsb2NrQ29uZmlndXJhdGlvbiAgKHZvaWQpIHsgcmV0dXJuICAweDA1IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbHV0V3JpdGVCbHVlICAodm9pZCkgeyByZXR1cm4g
IDB4MDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sdXRXcml0ZUdyZWVuICAodm9pZCkg
eyByZXR1cm4gIDB4MDkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sdXRXcml0ZVJlZCAg
KHZvaWQpIHsgcmV0dXJuICAweDBBIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbHV0V3Jp
dGVBZGRyZXNzICAodm9pZCkgeyByZXR1cm4gIDB4MEIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9sdXRSZWFkQmx1ZSAgKHZvaWQpIHsgcmV0dXJuICAweDBDIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfbHV0UmVhZEdyZWVuICAodm9pZCkgeyByZXR1cm4gIDB4MEQgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9sdXRSZWFkUmVkICAodm9pZCkgeyByZXR1cm4gIDB4MEUgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sdXRSZWFkQWRkcmVzcyAgKHZvaWQpIHsgcmV0dXJu
ICAweDBGIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcGFuZWxUeXBlICAodm9pZCkgeyBy
ZXR1cm4gIDB4MTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9NT0RSYXRlICAodm9pZCkg
eyByZXR1cm4gIDB4MTEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ob3Jpem9udGFsVG90
YWwgICh2b2lkKSB7IHJldHVybiAgMHgxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2hv
cml6b250YWxQZXJpb2QgICh2b2lkKSB7IHJldHVybiAgMHgxNCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2hvcml6b250YWxQZXJpb2RTdGFydDAgICh2b2lkKSB7IHJldHVybiAgMHgxNiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2hvcml6b250YWxQZXJpb2RTdGFydDEgICh2b2lk
KSB7IHJldHVybiAgMHgxNyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3ZlcnRpY2FsVG90
YWwwICAodm9pZCkgeyByZXR1cm4gIDB4MTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl92
ZXJ0aWNhbFRvdGFsMSAgKHZvaWQpIHsgcmV0dXJuICAweDE5IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfdmVydGljYWxQZXJpb2QwICAodm9pZCkgeyByZXR1cm4gIDB4MUMgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl92ZXJ0aWNhbFBlcmlvZDEgICh2b2lkKSB7IHJldHVybiAgMHgx
RCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3ZlcnRpY2FsUGVyaW9kU3RhcnQwICAodm9p
ZCkgeyByZXR1cm4gIDB4MUUgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl92ZXJ0aWNhbFBl
cmlvZFN0YXJ0MSAgKHZvaWQpIHsgcmV0dXJuICAweDFGIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfRlBMSU5FUHVsc2VXaWR0aCAgKHZvaWQpIHsgcmV0dXJuICAweDIwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfRlBMSU5FUHVsc2VTdGFydDAgICh2b2lkKSB7IHJldHVybiAgMHgy
MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX0ZQTElORVB1bHNlU3RhcnQxICAodm9pZCkg
eyByZXR1cm4gIDB4MjMgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9GUEZSQU1FUHVsc2VX
aWR0aCAgKHZvaWQpIHsgcmV0dXJuICAweDI0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
RlBGUkFNRVB1bHNlU3RhcnQwICAodm9pZCkgeyByZXR1cm4gIDB4MjYgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9GUEZSQU1FUHVsc2VTdGFydDEgICh2b2lkKSB7IHJldHVybiAgMHgyNyA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX0RURkRfR0NQSW5kZXggICh2b2lkKSB7IHJldHVy
biAgMHgyOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX0RURkRfR0NQRGF0YSAgKHZvaWQp
IHsgcmV0dXJuICAweDJDIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGlzcGxheU1vZGUg
ICh2b2lkKSB7IHJldHVybiAgMHg3MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NwZWNp
YWxFZmZlY3RzICAodm9pZCkgeyByZXR1cm4gIDB4NzEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9tYWluU3RhcnRBZGRyZXNzMCAgKHZvaWQpIHsgcmV0dXJuICAweDc0IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfbWFpblN0YXJ0QWRkcmVzczEgICh2b2lkKSB7IHJldHVybiAgMHg3
NSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21haW5TdGFydEFkZHJlc3MyICAodm9pZCkg
eyByZXR1cm4gIDB4NzYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tYWluTGluZUFkZHJl
c3NPZmZzZXQwICAodm9pZCkgeyByZXR1cm4gIDB4NzggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9tYWluTGluZUFkZHJlc3NPZmZzZXQxICAodm9pZCkgeyByZXR1cm4gIDB4NzkgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9vdmx5U3RhcnRBZGRyZXNzMCAgKHZvaWQpIHsgcmV0dXJu
ICAweDdDIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfb3ZseVN0YXJ0QWRkcmVzczEgICh2
b2lkKSB7IHJldHVybiAgMHg3RCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX292bHlTdGFy
dEFkZHJlc3MyICAodm9pZCkgeyByZXR1cm4gIDB4N0UgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9vdmx5TGluZUFkZHJlc3NPZmZzZXQwICAodm9pZCkgeyByZXR1cm4gIDB4ODAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9vdmx5TGluZUFkZHJlc3NPZmZzZXQxICAodm9pZCkgeyBy
ZXR1cm4gIDB4ODEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9vdmx5U3RhcnRYUG9zaXRp
b24wICAodm9pZCkgeyByZXR1cm4gIDB4ODQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9v
dmx5U3RhcnRYUG9zaXRpb24xICAodm9pZCkgeyByZXR1cm4gIDB4ODUgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9vdmx5U3RhcnRZUG9zaXRpb24wICAodm9pZCkgeyByZXR1cm4gIDB4ODgg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9vdmx5U3RhcnRZUG9zaXRpb24xICAodm9pZCkg
eyByZXR1cm4gIDB4ODkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9vdmx5RW5kWFBvc2l0
aW9uMCAgKHZvaWQpIHsgcmV0dXJuICAweDhDIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
b3ZseUVuZFhQb3NpdGlvbjEgICh2b2lkKSB7IHJldHVybiAgMHg4RCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX292bHlFbmRZUG9zaXRpb24wICAodm9pZCkgeyByZXR1cm4gIDB4OTAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9vdmx5RW5kWVBvc2l0aW9uMSAgKHZvaWQpIHsgcmV0
dXJuICAweDkxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcG93ZXJTYXZlQ29uZmlndXJh
dGlvbiAgKHZvaWQpIHsgcmV0dXJuICAweEEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
cmVzZXJ2ZWQgICh2b2lkKSB7IHJldHVybiAgMHhBMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX1NvZnR3YXJlUmVzZXQgICh2b2lkKSB7IHJldHVybiAgMHhBMiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3NjcmF0Y2hQYWQwICAodm9pZCkgeyByZXR1cm4gIDB4QTQgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9zY3JhdGNoUGFkMSAgKHZvaWQpIHsgcmV0dXJuICAweEE1IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfR1BJT0NvbmZpZ3VyYXRpb24wICAodm9pZCkgeyBy
ZXR1cm4gIDB4QTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9HUElPQ29uZmlndXJhdGlv
bjEgICh2b2lkKSB7IHJldHVybiAgMHhBOSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX0dQ
SU9TdGF0dXNDb250cm9sMCAgKHZvaWQpIHsgcmV0dXJuICAweEFDIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfR1BJT1N0YXR1c0NvbnRyb2wxICAodm9pZCkgeyByZXR1cm4gIDB4QUQgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9QV01DbG9ja0NWUHVsc2VDb250cm9sICAodm9pZCkg
eyByZXR1cm4gIDB4QjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9QV01DbG9ja0NWUHVs
c2VDb25maWcgICh2b2lkKSB7IHJldHVybiAgMHhCMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX0NWUHVsc2VCdXJzdExlbmd0aCAgKHZvaWQpIHsgcmV0dXJuICAweEIyIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfUFdNT3V0RHV0eUN5Y2xlICAodm9pZCkgeyByZXR1cm4gIDB4QjMg
OyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1N5c0JhdHRlcnlE
YXRhU3RydWN0VjEgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJf
dHlwZTsJRW1BbGlhc1N5c0JhdHRlcnlEYXRhU3RydWN0VjEgIAkocHRyX3R5cGUpOwlFbUFsaWFz
U3lzQmF0dGVyeURhdGFTdHJ1Y3RWMSAgCShjb25zdCBFbUFsaWFzU3lzQmF0dGVyeURhdGFTdHJ1
Y3RWMSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9
CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDUwICA7IH0JRW1B
bGlhc1N5c0JhdHRlcnlEYXRhU3RydWN0VjEgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFz
U3lzQmF0dGVyeURhdGFTdHJ1Y3RWMSAgPEE+Jik7CUVtQWxpYXNTeXNCYXR0ZXJ5RGF0YVN0cnVj
dFYxICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c0JhdHRlcnlEYXRhU3Ry
dWN0VjEgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzU3lzQmF0
dGVyeURhdGFTdHJ1Y3RWMSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAg
RW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXN5c0JhdHREYXRhU3RydWN0VmVyc2lvbiA7IAkgRW1B
bGlhc1VJbnQxNiA8QT4JIAkJCQkJCXN5c0JhdHRNaWxkV3JuZ1ZvbHRhZ2UgOyAJIEVtQWxpYXNV
SW50MTYgPEE+CSAJCQkJCQlzeXNCYXR0U2V2ZXJlV3JuZ1ZvbHRhZ2UgOyAJIEVtQWxpYXNVSW50
MTYgPEE+CSAJCQkJCQlzeXNCYXR0U2h1dGRvd25FblZvbHRhZ2UgOyAJIEVtQWxpYXNVSW50MTYg
PEE+CSAJCQkJCQlzeXNCYXR0U2h1dGRvd25EaXNWb2x0YWdlIDsgCSBFbUFsaWFzVUludDE2IDxB
PgkgCQkJCQkJc3lzQmF0dE1pbklSVm9sdGFnZSA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJ
CXN5c0JhdHRNaWxkV3JuZ1RpbWVvdXQgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlzeXNC
YXR0U2V2ZXJlV3JuZ1RpbWVvdXQgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlzeXNCYXR0
Q3JpdFdhcm5PZmZEYXlzIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJc3lzQmF0dENyaXRX
YXJuT25UaWNrcyA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXN5c0JhdHRTdGVwc1BlclZv
bHQgOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJCXN5c0JhdHRWb2x0YWdlU3RlcE9mZnNldCA7
IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXN5c0JhdHRSZXNlcnZlZDEgOyAJIEVtQWxpYXNV
SW50MzIgPEE+CSAJCQkJCQlzeXNCYXR0UmVzZXJ2ZWQyIDsgCSBFbUFsaWFzVUludDE2IDxBPgkg
CQkJCQkJc3lzQmF0dFZvbHRhZ2VDdXJ2ZSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3N5c0JhdHREYXRhU3RydWN0VmVyc2lvbiAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dE1pbGRXcm5nVm9sdGFnZSAgKHZvaWQpIHsgcmV0dXJu
ICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFNldmVyZVdybmdWb2x0YWdl
ICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0
U2h1dGRvd25FblZvbHRhZ2UgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3N5c0JhdHRTaHV0ZG93bkRpc1ZvbHRhZ2UgICh2b2lkKSB7IHJldHVybiAgOCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRNaW5JUlZvbHRhZ2UgICh2b2lkKSB7
IHJldHVybiAgMTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0TWlsZFdybmdU
aW1lb3V0ICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
c3lzQmF0dFNldmVyZVdybmdUaW1lb3V0ICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dENyaXRXYXJuT2ZmRGF5cyAgKHZvaWQpIHsgcmV0dXJu
ICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRDcml0V2Fybk9uVGlja3Mg
ICh2b2lkKSB7IHJldHVybiAgMjIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0
U3RlcHNQZXJWb2x0ICAodm9pZCkgeyByZXR1cm4gIDI2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2Zfc3lzQmF0dFZvbHRhZ2VTdGVwT2Zmc2V0ICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFJlc2VydmVkMSAgKHZvaWQpIHsgcmV0dXJu
ICAzMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRSZXNlcnZlZDIgICh2b2lk
KSB7IHJldHVybiAgMzQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0Vm9sdGFn
ZUN1cnZlICAodm9pZCkgeyByZXR1cm4gIDM4IDsgfSAgCX07IAljbGFzcyBFbVByb3h5U3lzQmF0
dGVyeURhdGFTdHJ1Y3RWMSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVBy
b3h5U3lzQmF0dGVyeURhdGFTdHJ1Y3RWMSAgCSh2b2lkKTsJRW1Qcm94eVN5c0JhdHRlcnlEYXRh
U3RydWN0VjEgIAkoY29uc3QgRW1Qcm94eVN5c0JhdHRlcnlEYXRhU3RydWN0VjEgICYpOwlwdHJf
dHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0
YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA1MCAgOyB9
CUVtUHJveHlTeXNCYXR0ZXJ5RGF0YVN0cnVjdFYxICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJv
eHlTeXNCYXR0ZXJ5RGF0YVN0cnVjdFYxICAmKTsJRW1BbGlhc1N5c0JhdHRlcnlEYXRhU3RydWN0
VjEgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNCYXR0ZXJ5RGF0YVN0
cnVjdFYxICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3Qgewlj
aGFyCQkJX2J5dGVzWyAgICA1MCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlh
c1VJbnQxNiA8TEFTPgkgCQkJCQkJc3lzQmF0dERhdGFTdHJ1Y3RWZXJzaW9uIDsgCSBFbUFsaWFz
VUludDE2IDxMQVM+CSAJCQkJCQlzeXNCYXR0TWlsZFdybmdWb2x0YWdlIDsgCSBFbUFsaWFzVUlu
dDE2IDxMQVM+CSAJCQkJCQlzeXNCYXR0U2V2ZXJlV3JuZ1ZvbHRhZ2UgOyAJIEVtQWxpYXNVSW50
MTYgPExBUz4JIAkJCQkJCXN5c0JhdHRTaHV0ZG93bkVuVm9sdGFnZSA7IAkgRW1BbGlhc1VJbnQx
NiA8TEFTPgkgCQkJCQkJc3lzQmF0dFNodXRkb3duRGlzVm9sdGFnZSA7IAkgRW1BbGlhc1VJbnQx
NiA8TEFTPgkgCQkJCQkJc3lzQmF0dE1pbklSVm9sdGFnZSA7IAkgRW1BbGlhc1VJbnQzMiA8TEFT
PgkgCQkJCQkJc3lzQmF0dE1pbGRXcm5nVGltZW91dCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkg
CQkJCQkJc3lzQmF0dFNldmVyZVdybmdUaW1lb3V0IDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJ
CQkJCQlzeXNCYXR0Q3JpdFdhcm5PZmZEYXlzIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJ
CQlzeXNCYXR0Q3JpdFdhcm5PblRpY2tzIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlz
eXNCYXR0U3RlcHNQZXJWb2x0IDsgCSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCXN5c0JhdHRW
b2x0YWdlU3RlcE9mZnNldCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJc3lzQmF0dFJl
c2VydmVkMSA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJc3lzQmF0dFJlc2VydmVkMiA7
IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJc3lzQmF0dFZvbHRhZ2VDdXJ2ZSA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHREYXRhU3RydWN0VmVyc2lvbiAgKHZvaWQp
IHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dE1pbGRXcm5n
Vm9sdGFnZSAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
c3lzQmF0dFNldmVyZVdybmdWb2x0YWdlICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0U2h1dGRvd25FblZvbHRhZ2UgICh2b2lkKSB7IHJldHVy
biAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRTaHV0ZG93bkRpc1ZvbHRh
Z2UgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0Jh
dHRNaW5JUlZvbHRhZ2UgICh2b2lkKSB7IHJldHVybiAgMTAgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9zeXNCYXR0TWlsZFdybmdUaW1lb3V0ICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFNldmVyZVdybmdUaW1lb3V0ICAodm9pZCkg
eyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dENyaXRXYXJu
T2ZmRGF5cyAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3N5c0JhdHRDcml0V2Fybk9uVGlja3MgICh2b2lkKSB7IHJldHVybiAgMjIgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0U3RlcHNQZXJWb2x0ICAodm9pZCkgeyByZXR1cm4gIDI2
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFZvbHRhZ2VTdGVwT2Zmc2V0ICAo
dm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFJl
c2VydmVkMSAgKHZvaWQpIHsgcmV0dXJuICAzMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3N5c0JhdHRSZXNlcnZlZDIgICh2b2lkKSB7IHJldHVybiAgMzQgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9zeXNCYXR0Vm9sdGFnZUN1cnZlICAodm9pZCkgeyByZXR1cm4gIDM4IDsgfSAg
CX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNTeXNCYXR0ZXJ5RGF0YVN0
cnVjdFYyICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7
CUVtQWxpYXNTeXNCYXR0ZXJ5RGF0YVN0cnVjdFYyICAJKHB0cl90eXBlKTsJRW1BbGlhc1N5c0Jh
dHRlcnlEYXRhU3RydWN0VjIgIAkoY29uc3QgRW1BbGlhc1N5c0JhdHRlcnlEYXRhU3RydWN0VjIg
ICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0
aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA1NCAgOyB9CUVtQWxpYXNT
eXNCYXR0ZXJ5RGF0YVN0cnVjdFYyICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1N5c0Jh
dHRlcnlEYXRhU3RydWN0VjIgIDxBPiYpOwlFbUFsaWFzU3lzQmF0dGVyeURhdGFTdHJ1Y3RWMiAg
PEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNCYXR0ZXJ5RGF0YVN0cnVjdFYy
ICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1N5c0JhdHRlcnlE
YXRhU3RydWN0VjIgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxp
YXNVSW50MTYgPEE+CSAJCQkJCQlzeXNCYXR0RGF0YVN0cnVjdFZlcnNpb24gOyAJIEVtQWxpYXNV
SW50MTYgPEE+CSAJCQkJCQlzeXNCYXR0TWlsZFdybmdWb2x0YWdlIDsgCSBFbUFsaWFzVUludDE2
IDxBPgkgCQkJCQkJc3lzQmF0dFNldmVyZVdybmdWb2x0YWdlIDsgCSBFbUFsaWFzVUludDE2IDxB
PgkgCQkJCQkJc3lzQmF0dE1pbGRXcm5nUGVyY2VudCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJ
CQkJCXN5c0JhdHRTZXZlcmVXcm5nUGVyY2VudCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJ
CXN5c0JhdHRTaHV0ZG93bkVuVm9sdGFnZSA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXN5
c0JhdHRTaHV0ZG93bkRpc1ZvbHRhZ2UgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlzeXNC
YXR0TWluSVJWb2x0YWdlIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJc3lzQmF0dE1pbGRX
cm5nVGltZW91dCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXN5c0JhdHRTZXZlcmVXcm5n
VGltZW91dCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXN5c0JhdHRDcml0V2Fybk9mZkRh
eXMgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlzeXNCYXR0Q3JpdFdhcm5PblRpY2tzIDsg
CSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJc3lzQmF0dFN0ZXBzUGVyVm9sdCA7IAkgRW1BbGlh
c0ludDE2IDxBPgkgCQkJCQkJc3lzQmF0dFZvbHRhZ2VTdGVwT2Zmc2V0IDsgCSBFbUFsaWFzVUlu
dDMyIDxBPgkgCQkJCQkJc3lzQmF0dFJlc2VydmVkMSA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJ
CQkJCXN5c0JhdHRSZXNlcnZlZDIgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlzeXNCYXR0
Vm9sdGFnZUN1cnZlIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dERhdGFT
dHJ1Y3RWZXJzaW9uICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9zeXNCYXR0TWlsZFdybmdWb2x0YWdlICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0U2V2ZXJlV3JuZ1ZvbHRhZ2UgICh2b2lkKSB7IHJl
dHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRNaWxkV3JuZ1BlcmNl
bnQgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0Jh
dHRTZXZlcmVXcm5nUGVyY2VudCAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2Zfc3lzQmF0dFNodXRkb3duRW5Wb2x0YWdlICAodm9pZCkgeyByZXR1cm4gIDEw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFNodXRkb3duRGlzVm9sdGFnZSAg
KHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRN
aW5JUlZvbHRhZ2UgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9zeXNCYXR0TWlsZFdybmdUaW1lb3V0ICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFNldmVyZVdybmdUaW1lb3V0ICAodm9pZCkgeyBy
ZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dENyaXRXYXJuT2Zm
RGF5cyAgKHZvaWQpIHsgcmV0dXJuICAyNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5
c0JhdHRDcml0V2Fybk9uVGlja3MgICh2b2lkKSB7IHJldHVybiAgMjYgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9zeXNCYXR0U3RlcHNQZXJWb2x0ICAodm9pZCkgeyByZXR1cm4gIDMwIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFZvbHRhZ2VTdGVwT2Zmc2V0ICAodm9p
ZCkgeyByZXR1cm4gIDMyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFJlc2Vy
dmVkMSAgKHZvaWQpIHsgcmV0dXJuICAzNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5
c0JhdHRSZXNlcnZlZDIgICh2b2lkKSB7IHJldHVybiAgMzggOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9zeXNCYXR0Vm9sdGFnZUN1cnZlICAodm9pZCkgeyByZXR1cm4gIDQyIDsgfSAgCX07
IAljbGFzcyBFbVByb3h5U3lzQmF0dGVyeURhdGFTdHJ1Y3RWMiAgCXsJcHVibGljOgl0eXBlZGVm
IHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lzQmF0dGVyeURhdGFTdHJ1Y3RWMiAgCSh2b2lkKTsJ
RW1Qcm94eVN5c0JhdHRlcnlEYXRhU3RydWN0VjIgIAkoY29uc3QgRW1Qcm94eVN5c0JhdHRlcnlE
YXRhU3RydWN0VjIgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4g
KHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICA1NCAgOyB9CUVtUHJveHlTeXNCYXR0ZXJ5RGF0YVN0cnVjdFYyICAmCQlv
cGVyYXRvcj0gKGNvbnN0IEVtUHJveHlTeXNCYXR0ZXJ5RGF0YVN0cnVjdFYyICAmKTsJRW1BbGlh
c1N5c0JhdHRlcnlEYXRhU3RydWN0VjIgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVt
QWxpYXNTeXNCYXR0ZXJ5RGF0YVN0cnVjdFYyICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0
Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA1NCAgXTsJfSBmTG9jYWxEYXRh
OwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJc3lzQmF0dERhdGFTdHJ1
Y3RWZXJzaW9uIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlzeXNCYXR0TWlsZFdybmdW
b2x0YWdlIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlzeXNCYXR0U2V2ZXJlV3JuZ1Zv
bHRhZ2UgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXN5c0JhdHRNaWxkV3JuZ1BlcmNl
bnQgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXN5c0JhdHRTZXZlcmVXcm5nUGVyY2Vu
dCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJc3lzQmF0dFNodXRkb3duRW5Wb2x0YWdl
IDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlzeXNCYXR0U2h1dGRvd25EaXNWb2x0YWdl
IDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlzeXNCYXR0TWluSVJWb2x0YWdlIDsgCSBF
bUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlzeXNCYXR0TWlsZFdybmdUaW1lb3V0IDsgCSBFbUFs
aWFzVUludDMyIDxMQVM+CSAJCQkJCQlzeXNCYXR0U2V2ZXJlV3JuZ1RpbWVvdXQgOyAJIEVtQWxp
YXNVSW50MTYgPExBUz4JIAkJCQkJCXN5c0JhdHRDcml0V2Fybk9mZkRheXMgOyAJIEVtQWxpYXNV
SW50MzIgPExBUz4JIAkJCQkJCXN5c0JhdHRDcml0V2Fybk9uVGlja3MgOyAJIEVtQWxpYXNVSW50
MTYgPExBUz4JIAkJCQkJCXN5c0JhdHRTdGVwc1BlclZvbHQgOyAJIEVtQWxpYXNJbnQxNiA8TEFT
PgkgCQkJCQkJc3lzQmF0dFZvbHRhZ2VTdGVwT2Zmc2V0IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+
CSAJCQkJCQlzeXNCYXR0UmVzZXJ2ZWQxIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlz
eXNCYXR0UmVzZXJ2ZWQyIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlzeXNCYXR0Vm9s
dGFnZUN1cnZlIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dERhdGFTdHJ1
Y3RWZXJzaW9uICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9zeXNCYXR0TWlsZFdybmdWb2x0YWdlICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0U2V2ZXJlV3JuZ1ZvbHRhZ2UgICh2b2lkKSB7IHJldHVy
biAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRNaWxkV3JuZ1BlcmNlbnQg
ICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRT
ZXZlcmVXcm5nUGVyY2VudCAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2Zfc3lzQmF0dFNodXRkb3duRW5Wb2x0YWdlICAodm9pZCkgeyByZXR1cm4gIDEwIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFNodXRkb3duRGlzVm9sdGFnZSAgKHZv
aWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRNaW5J
UlZvbHRhZ2UgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9zeXNCYXR0TWlsZFdybmdUaW1lb3V0ICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFNldmVyZVdybmdUaW1lb3V0ICAodm9pZCkgeyByZXR1
cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dENyaXRXYXJuT2ZmRGF5
cyAgKHZvaWQpIHsgcmV0dXJuICAyNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0Jh
dHRDcml0V2Fybk9uVGlja3MgICh2b2lkKSB7IHJldHVybiAgMjYgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9zeXNCYXR0U3RlcHNQZXJWb2x0ICAodm9pZCkgeyByZXR1cm4gIDMwIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFZvbHRhZ2VTdGVwT2Zmc2V0ICAodm9pZCkg
eyByZXR1cm4gIDMyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFJlc2VydmVk
MSAgKHZvaWQpIHsgcmV0dXJuICAzNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0Jh
dHRSZXNlcnZlZDIgICh2b2lkKSB7IHJldHVybiAgMzggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9zeXNCYXR0Vm9sdGFnZUN1cnZlICAodm9pZCkgeyByZXR1cm4gIDQyIDsgfSAgCX07ICAg
CSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNTeXNCYXR0ZXJ5RGF0YVN0cnVjdFYz
ICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxp
YXNTeXNCYXR0ZXJ5RGF0YVN0cnVjdFYzICAJKHB0cl90eXBlKTsJRW1BbGlhc1N5c0JhdHRlcnlE
YXRhU3RydWN0VjMgIAkoY29uc3QgRW1BbGlhc1N5c0JhdHRlcnlEYXRhU3RydWN0VjMgICYpOwlw
dHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6
ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAzOCAgOyB9CUVtQWxpYXNTeXNCYXR0
ZXJ5RGF0YVN0cnVjdFYzICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1N5c0JhdHRlcnlE
YXRhU3RydWN0VjMgIDxBPiYpOwlFbUFsaWFzU3lzQmF0dGVyeURhdGFTdHJ1Y3RWMyAgPEE+CW9w
ZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNCYXR0ZXJ5RGF0YVN0cnVjdFYzICA8QT4J
b3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1N5c0JhdHRlcnlEYXRhU3Ry
dWN0VjMgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50
MTYgPEE+CSAJCQkJCQlzeXNCYXR0RGF0YVN0cnVjdFZlcnNpb24gOyAJIEVtQWxpYXNVSW50MTYg
PEE+CSAJCQkJCQlzeXNCYXR0U2h1dGRvd25FblZvbHRhZ2UgOyAJIEVtQWxpYXNVSW50MTYgPEE+
CSAJCQkJCQlzeXNCYXR0U2h1dGRvd25EaXNWb2x0YWdlIDsgCSBFbUFsaWFzVUludDE2IDxBPgkg
CQkJCQkJc3lzQmF0dFRhYmxlRmxhZ3MgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlzeXNC
YXR0Q3JpdFdhcm5PZmZEYXlzIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJc3lzQmF0dENy
aXRXYXJuT25UaWNrcyA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXN5c0JhdHRTdGVwc1Bl
clZvbHQgOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJCXN5c0JhdHRWb2x0YWdlU3RlcE9mZnNl
dCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXN5c0JhdHRSZXNlcnZlZDEgOyAJIEVtQWxp
YXNVSW50MzIgPEE+CSAJCQkJCQlzeXNCYXR0UmVzZXJ2ZWQyIDsgCSBFbUFsaWFzVUludDE2IDxB
PgkgCQkJCQkJc3lzQmF0dFZvbHRhZ2VDdXJ2ZSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3N5c0JhdHREYXRhU3RydWN0VmVyc2lvbiAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFNodXRkb3duRW5Wb2x0YWdlICAodm9pZCkgeyBy
ZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0U2h1dGRvd25EaXNW
b2x0YWdlICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9z
eXNCYXR0VGFibGVGbGFncyAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2Zfc3lzQmF0dENyaXRXYXJuT2ZmRGF5cyAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dENyaXRXYXJuT25UaWNrcyAgKHZvaWQpIHsg
cmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRTdGVwc1BlclZv
bHQgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNC
YXR0Vm9sdGFnZVN0ZXBPZmZzZXQgICh2b2lkKSB7IHJldHVybiAgMTYgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9zeXNCYXR0UmVzZXJ2ZWQxICAodm9pZCkgeyByZXR1cm4gIDE4IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dFJlc2VydmVkMiAgKHZvaWQpIHsgcmV0dXJu
ICAyMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRWb2x0YWdlQ3VydmUgICh2
b2lkKSB7IHJldHVybiAgMjYgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlTeXNCYXR0ZXJ5RGF0YVN0
cnVjdFYzICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlTeXNCYXR0
ZXJ5RGF0YVN0cnVjdFYzICAJKHZvaWQpOwlFbVByb3h5U3lzQmF0dGVyeURhdGFTdHJ1Y3RWMyAg
CShjb25zdCBFbVByb3h5U3lzQmF0dGVyeURhdGFTdHJ1Y3RWMyAgJik7CXB0cl90eXBlCQkJR2V0
UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRp
YyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDM4ICA7IH0JRW1Qcm94eVN5
c0JhdHRlcnlEYXRhU3RydWN0VjMgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVN5c0JhdHRl
cnlEYXRhU3RydWN0VjMgICYpOwlFbUFsaWFzU3lzQmF0dGVyeURhdGFTdHJ1Y3RWMyAgPExBUz4J
b3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c0JhdHRlcnlEYXRhU3RydWN0VjMgIDxM
QVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0
ZXNbICAgIDM4ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxM
QVM+CSAJCQkJCQlzeXNCYXR0RGF0YVN0cnVjdFZlcnNpb24gOyAJIEVtQWxpYXNVSW50MTYgPExB
Uz4JIAkJCQkJCXN5c0JhdHRTaHV0ZG93bkVuVm9sdGFnZSA7IAkgRW1BbGlhc1VJbnQxNiA8TEFT
PgkgCQkJCQkJc3lzQmF0dFNodXRkb3duRGlzVm9sdGFnZSA7IAkgRW1BbGlhc1VJbnQxNiA8TEFT
PgkgCQkJCQkJc3lzQmF0dFRhYmxlRmxhZ3MgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJ
CXN5c0JhdHRDcml0V2Fybk9mZkRheXMgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXN5
c0JhdHRDcml0V2Fybk9uVGlja3MgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXN5c0Jh
dHRTdGVwc1BlclZvbHQgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJc3lzQmF0dFZvbHRh
Z2VTdGVwT2Zmc2V0IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlzeXNCYXR0UmVzZXJ2
ZWQxIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlzeXNCYXR0UmVzZXJ2ZWQyIDsgCSBF
bUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlzeXNCYXR0Vm9sdGFnZUN1cnZlIDsgIAkgICAgIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dERhdGFTdHJ1Y3RWZXJzaW9uICAodm9pZCkgeyBy
ZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0U2h1dGRvd25FblZv
bHRhZ2UgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5
c0JhdHRTaHV0ZG93bkRpc1ZvbHRhZ2UgICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3N5c0JhdHRUYWJsZUZsYWdzICAodm9pZCkgeyByZXR1cm4gIDYgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0Q3JpdFdhcm5PZmZEYXlzICAodm9pZCkg
eyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0Q3JpdFdhcm5P
blRpY2tzICAodm9pZCkgeyByZXR1cm4gIDEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
c3lzQmF0dFN0ZXBzUGVyVm9sdCAgKHZvaWQpIHsgcmV0dXJuICAxNCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3N5c0JhdHRWb2x0YWdlU3RlcE9mZnNldCAgKHZvaWQpIHsgcmV0dXJuICAx
NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRSZXNlcnZlZDEgICh2b2lkKSB7
IHJldHVybiAgMTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0UmVzZXJ2ZWQy
ICAodm9pZCkgeyByZXR1cm4gIDIyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0
dFZvbHRhZ2VDdXJ2ZSAgKHZvaWQpIHsgcmV0dXJuICAyNiA7IH0gIAl9OyAgIAkgIHRlbXBsYXRl
IDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzU3lzTlZQYXJhbXNUeXBlICAJewlwdWJsaWM6CXR5cGVk
ZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNTeXNOVlBhcmFtc1R5cGUg
IAkocHRyX3R5cGUpOwlFbUFsaWFzU3lzTlZQYXJhbXNUeXBlICAJKGNvbnN0IEVtQWxpYXNTeXNO
VlBhcmFtc1R5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4g
ZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAzMCAg
OyB9CUVtQWxpYXNTeXNOVlBhcmFtc1R5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFz
U3lzTlZQYXJhbXNUeXBlICA8QT4mKTsJRW1BbGlhc1N5c05WUGFyYW1zVHlwZSAgPEE+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNOVlBhcmFtc1R5cGUgIDxBPglvcGVyYXRvcltd
IChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzU3lzTlZQYXJhbXNUeXBlICAJKHZvaWQpOwlw
dHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJcnRj
SG91cnMgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlydGNIb3VyTWluU2VjQ29weSA7IAkg
RW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJc3dyTENEQ29udHJhc3RWYWx1ZSA7IAkgRW1BbGlhc1VJ
bnQ4IDxBPgkgCQkJCQkJc3dyTENEQnJpZ2h0bmVzc1ZhbHVlIDsgCSBFbUFsaWFzZW11cHRyIDxB
PgkgCQkJCQkJc3BsYXNoU2NyZWVuUHRyIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJaGFy
ZFJlc2V0U2NyZWVuUHRyIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJbG9jYWxlTGFuZ3Vh
Z2UgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlsb2NhbGVDb3VudHJ5IDsgCSBFbUFsaWFz
VUludDMyIDxBPgkgCQkJCQkJc3lzTlZPRU1TdG9yYWdlMSA7IAkgRW1BbGlhc1VJbnQzMiA8QT4J
IAkJCQkJCXN5c05WT0VNU3RvcmFnZTIgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9y
dGNIb3VycyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
cnRjSG91ck1pblNlY0NvcHkgICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3N3ckxDRENvbnRyYXN0VmFsdWUgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3N3ckxDREJyaWdodG5lc3NWYWx1ZSAgKHZvaWQpIHsgcmV0
dXJuICA5IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3BsYXNoU2NyZWVuUHRyICAodm9p
ZCkgeyByZXR1cm4gIDEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaGFyZFJlc2V0U2Ny
ZWVuUHRyICAodm9pZCkgeyByZXR1cm4gIDE0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
bG9jYWxlTGFuZ3VhZ2UgICh2b2lkKSB7IHJldHVybiAgMTggOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9sb2NhbGVDb3VudHJ5ICAodm9pZCkgeyByZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2Zfc3lzTlZPRU1TdG9yYWdlMSAgKHZvaWQpIHsgcmV0dXJuICAyMiA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c05WT0VNU3RvcmFnZTIgICh2b2lkKSB7IHJldHVy
biAgMjYgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlTeXNOVlBhcmFtc1R5cGUgIAl7CXB1YmxpYzoJ
dHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVN5c05WUGFyYW1zVHlwZSAgCSh2b2lkKTsJ
RW1Qcm94eVN5c05WUGFyYW1zVHlwZSAgCShjb25zdCBFbVByb3h5U3lzTlZQYXJhbXNUeXBlICAm
KTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZM
b2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAg
MzAgIDsgfQlFbVByb3h5U3lzTlZQYXJhbXNUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJv
eHlTeXNOVlBhcmFtc1R5cGUgICYpOwlFbUFsaWFzU3lzTlZQYXJhbXNUeXBlICA8TEFTPglvcGVy
YXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3lzTlZQYXJhbXNUeXBlICA8TEFTPglvcGVyYXRv
cltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAzMCAg
XTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJ
cnRjSG91cnMgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXJ0Y0hvdXJNaW5TZWNDb3B5
IDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXN3ckxDRENvbnRyYXN0VmFsdWUgOyAJIEVt
QWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJc3dyTENEQnJpZ2h0bmVzc1ZhbHVlIDsgCSBFbUFsaWFz
ZW11cHRyIDxMQVM+CSAJCQkJCQlzcGxhc2hTY3JlZW5QdHIgOyAJIEVtQWxpYXNlbXVwdHIgPExB
Uz4JIAkJCQkJCWhhcmRSZXNldFNjcmVlblB0ciA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJ
CQkJbG9jYWxlTGFuZ3VhZ2UgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWxvY2FsZUNv
dW50cnkgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXN5c05WT0VNU3RvcmFnZTEgOyAJ
IEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXN5c05WT0VNU3RvcmFnZTIgOyAgCSAgICAgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9ydGNIb3VycyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcnRjSG91ck1pblNlY0NvcHkgICh2b2lkKSB7IHJldHVybiAg
NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N3ckxDRENvbnRyYXN0VmFsdWUgICh2b2lk
KSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N3ckxDREJyaWdodG5l
c3NWYWx1ZSAgKHZvaWQpIHsgcmV0dXJuICA5IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
c3BsYXNoU2NyZWVuUHRyICAodm9pZCkgeyByZXR1cm4gIDEwIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfaGFyZFJlc2V0U2NyZWVuUHRyICAodm9pZCkgeyByZXR1cm4gIDE0IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbG9jYWxlTGFuZ3VhZ2UgICh2b2lkKSB7IHJldHVybiAgMTgg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sb2NhbGVDb3VudHJ5ICAodm9pZCkgeyByZXR1
cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzTlZPRU1TdG9yYWdlMSAgKHZv
aWQpIHsgcmV0dXJuICAyMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c05WT0VNU3Rv
cmFnZTIgICh2b2lkKSB7IHJldHVybiAgMjYgOyB9ICAJfTsgICAgCiAgdGVtcGxhdGUgPGNsYXNz
IEE+CWNsYXNzIEVtQWxpYXNDbGlwYm9hcmRJdGVtICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5h
bWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNDbGlwYm9hcmRJdGVtICAJKHB0cl90eXBl
KTsJRW1BbGlhc0NsaXBib2FyZEl0ZW0gIAkoY29uc3QgRW1BbGlhc0NsaXBib2FyZEl0ZW0gICYp
OwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMg
c2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA2ICA7IH0JRW1BbGlhc0NsaXBi
b2FyZEl0ZW0gIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzQ2xpcGJvYXJkSXRlbSAgPEE+
Jik7CUVtQWxpYXNDbGlwYm9hcmRJdGVtICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1B
bGlhc0NsaXBib2FyZEl0ZW0gIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglF
bUFsaWFzQ2xpcGJvYXJkSXRlbSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAg
ICAgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWl0ZW0gOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJ
CQkJCQlsZW5ndGggOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pdGVtICAodm9pZCkg
eyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sZW5ndGggICh2b2lkKSB7
IHJldHVybiAgNCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eUNsaXBib2FyZEl0ZW0gIAl7CXB1Ymxp
YzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUNsaXBib2FyZEl0ZW0gIAkodm9pZCk7
CUVtUHJveHlDbGlwYm9hcmRJdGVtICAJKGNvbnN0IEVtUHJveHlDbGlwYm9hcmRJdGVtICAmKTsJ
cHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2Nh
bERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNiAg
OyB9CUVtUHJveHlDbGlwYm9hcmRJdGVtICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlDbGlw
Ym9hcmRJdGVtICAmKTsJRW1BbGlhc0NsaXBib2FyZEl0ZW0gIDxMQVM+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNDbGlwYm9hcmRJdGVtICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNv
bnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA2ICBdOwl9IGZMb2NhbERh
dGE7CXB1YmxpYzoJICAgICBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlpdGVtIDsgCSBFbUFs
aWFzVUludDE2IDxMQVM+CSAJCQkJCQlsZW5ndGggOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9pdGVtICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9sZW5ndGggICh2b2lkKSB7IHJldHVybiAgNCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFz
cyBBPgljbGFzcyBFbUFsaWFzRmllbGRVbmRvVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVu
YW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzRmllbGRVbmRvVHlwZSAgCShwdHJfdHlw
ZSk7CUVtQWxpYXNGaWVsZFVuZG9UeXBlICAJKGNvbnN0IEVtQWxpYXNGaWVsZFVuZG9UeXBlICAm
KTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTIgIDsgfQlFbUFsaWFzRmll
bGRVbmRvVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNGaWVsZFVuZG9UeXBlICA8
QT4mKTsJRW1BbGlhc0ZpZWxkVW5kb1R5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBF
bUFsaWFzRmllbGRVbmRvVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6
CUVtQWxpYXNGaWVsZFVuZG9UeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJ
ICAgICBFbUFsaWFzVW5kb01vZGUgPEE+CSAJCQkJCW1vZGUgOyAJIEVtQWxpYXNVSW50OCA8QT4J
IAkJCQkJCXJlc2VydmVkIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJc3RhcnQgOyAJIEVt
QWxpYXNVSW50MTYgPEE+CSAJCQkJCQllbmQgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQli
dWZmZXJMZW4gOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlidWZmZXIgOyAgCSAgICAgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9tb2RlICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9yZXNlcnZlZCAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2Zfc3RhcnQgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2VuZCAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfYnVmZmVyTGVuICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9idWZmZXIgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gIAl9OyAJY2xhc3Mg
RW1Qcm94eUZpZWxkVW5kb1R5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJ
RW1Qcm94eUZpZWxkVW5kb1R5cGUgIAkodm9pZCk7CUVtUHJveHlGaWVsZFVuZG9UeXBlICAJKGNv
bnN0IEVtUHJveHlGaWVsZFVuZG9UeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNv
bnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0
U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTIgIDsgfQlFbVByb3h5RmllbGRVbmRvVHlwZSAg
JgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5RmllbGRVbmRvVHlwZSAgJik7CUVtQWxpYXNGaWVs
ZFVuZG9UeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzRmllbGRVbmRv
VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hh
cgkJCV9ieXRlc1sgICAgMTIgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNV
bmRvTW9kZSA8TEFTPgkgCQkJCQltb2RlIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXJl
c2VydmVkIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlzdGFydCA7IAkgRW1BbGlhc1VJ
bnQxNiA8TEFTPgkgCQkJCQkJZW5kIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlidWZm
ZXJMZW4gOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWJ1ZmZlciA7ICAJICAgICBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX21vZGUgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3Jlc2VydmVkICAodm9pZCkgeyByZXR1cm4gIDEgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9zdGFydCAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfZW5kICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9idWZmZXJMZW4gICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2J1ZmZlciAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAgCX07ICAgCSAgdGVt
cGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjEgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0dyYXBoaWNT
dGF0ZVR5cGVWMSAgCShwdHJfdHlwZSk7CUVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjEgIAkoY29u
c3QgRW1BbGlhc0dyYXBoaWNTdGF0ZVR5cGVWMSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lk
KSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJ
eyByZXR1cm4gICAgIDIwICA7IH0JRW1BbGlhc0dyYXBoaWNTdGF0ZVR5cGVWMSAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjEgIDxBPiYpOwlFbUFsaWFzR3Jh
cGhpY1N0YXRlVHlwZVYxICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0dyYXBo
aWNTdGF0ZVR5cGVWMSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxp
YXNHcmFwaGljU3RhdGVUeXBlVjEgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkg
ICAgIEVtQWxpYXNTY3JPcGVyYXRpb24gPEE+CSAJCQkJZ3JhZk1vZGUgOyAJIEVtQWxpYXNCb29s
ZWFuIDxBPgkgCQkJCQlwYXR0ZXJuTW9kZSA7IAkgRW1BbGlhc1BhdHRlcm5UeXBlIDxBPgkgCQkJ
CXBhdHRlcm4gOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQljdXN0b21QdG4gOyAJIEVtQWxp
YXNGb250SUQgPEE+CSAJCQkJCQlmb250SWQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlm
b250IDsgCSBFbUFsaWFzVW5kZXJsaW5lTW9kZVR5cGUgPEE+CSAJCQl1bmRlcmxpbmVNb2RlIDsg
IAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ3JhZk1vZGUgICh2b2lkKSB7IHJldHVybiAg
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BhdHRlcm5Nb2RlICAodm9pZCkgeyByZXR1
cm4gIDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wYXR0ZXJuICAodm9pZCkgeyByZXR1
cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jdXN0b21QdG4gICh2b2lkKSB7IHJl
dHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZvbnRJZCAgKHZvaWQpIHsgcmV0
dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZvbnQgICh2b2lkKSB7IHJldHVy
biAgMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91bmRlcmxpbmVNb2RlICAodm9pZCkg
eyByZXR1cm4gIDE4IDsgfSAgCX07IAljbGFzcyBFbVByb3h5R3JhcGhpY1N0YXRlVHlwZVYxICAJ
ewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlHcmFwaGljU3RhdGVUeXBl
VjEgIAkodm9pZCk7CUVtUHJveHlHcmFwaGljU3RhdGVUeXBlVjEgIAkoY29uc3QgRW1Qcm94eUdy
YXBoaWNTdGF0ZVR5cGVWMSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJl
dHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZv
aWQpCQkJeyByZXR1cm4gICAgIDIwICA7IH0JRW1Qcm94eUdyYXBoaWNTdGF0ZVR5cGVWMSAgJgkJ
b3BlcmF0b3I9IChjb25zdCBFbVByb3h5R3JhcGhpY1N0YXRlVHlwZVYxICAmKTsJRW1BbGlhc0dy
YXBoaWNTdGF0ZVR5cGVWMSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0dy
YXBoaWNTdGF0ZVR5cGVWMSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJ
c3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMjAgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkg
ICAgIEVtQWxpYXNTY3JPcGVyYXRpb24gPExBUz4JIAkJCQlncmFmTW9kZSA7IAkgRW1BbGlhc0Jv
b2xlYW4gPExBUz4JIAkJCQkJcGF0dGVybk1vZGUgOyAJIEVtQWxpYXNQYXR0ZXJuVHlwZSA8TEFT
PgkgCQkJCXBhdHRlcm4gOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWN1c3RvbVB0biA7
IAkgRW1BbGlhc0ZvbnRJRCA8TEFTPgkgCQkJCQkJZm9udElkIDsgCSBFbUFsaWFzZW11cHRyIDxM
QVM+CSAJCQkJCQlmb250IDsgCSBFbUFsaWFzVW5kZXJsaW5lTW9kZVR5cGUgPExBUz4JIAkJCXVu
ZGVybGluZU1vZGUgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ncmFmTW9kZSAgKHZv
aWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcGF0dGVybk1vZGUg
ICh2b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BhdHRlcm4g
ICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2N1c3RvbVB0
biAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZm9udElk
ICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZm9udCAg
KHZvaWQpIHsgcmV0dXJuICAxNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VuZGVybGlu
ZU1vZGUgICh2b2lkKSB7IHJldHVybiAgMTggOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3Mg
QT4JY2xhc3MgRW1BbGlhc0dyYXBoaWNTdGF0ZVR5cGVWMiAgCXsJcHVibGljOgl0eXBlZGVmIHR5
cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzR3JhcGhpY1N0YXRlVHlwZVYyICAJ
KHB0cl90eXBlKTsJRW1BbGlhc0dyYXBoaWNTdGF0ZVR5cGVWMiAgCShjb25zdCBFbUFsaWFzR3Jh
cGhpY1N0YXRlVHlwZVYyICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0
dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAg
MjggIDsgfQlFbUFsaWFzR3JhcGhpY1N0YXRlVHlwZVYyICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
RW1BbGlhc0dyYXBoaWNTdGF0ZVR5cGVWMiAgPEE+Jik7CUVtQWxpYXNHcmFwaGljU3RhdGVUeXBl
VjIgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzR3JhcGhpY1N0YXRlVHlwZVYy
ICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc0dyYXBoaWNTdGF0
ZVR5cGVWMiAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1Nj
ck9wZXJhdGlvbiA8QT4JIAkJCQlncmFmTW9kZSA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJ
CXBhdHRlcm5Nb2RlIDsgCSBFbUFsaWFzUGF0dGVyblR5cGUgPEE+CSAJCQkJcGF0dGVybiA7IAkg
RW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWN1c3RvbVB0biA7IAkgRW1BbGlhc0ZvbnRJRCA8QT4J
IAkJCQkJCWZvbnRJZCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWZvbnQgOyAJIEVtQWxp
YXNVbmRlcmxpbmVNb2RlVHlwZSA8QT4JIAkJCXVuZGVybGluZU1vZGUgOyAJIEVtQWxpYXNSR0JD
b2xvclR5cGUgPEE+CSAJCQkJZm9yZUNvbG9yIDsgCSBFbUFsaWFzUkdCQ29sb3JUeXBlIDxBPgkg
CQkJCWJhY2tDb2xvciA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dyYWZNb2RlICAo
dm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wYXR0ZXJuTW9k
ZSAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcGF0dGVy
biAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY3VzdG9t
UHRuICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mb250
SWQgICh2b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mb250
ICAodm9pZCkgeyByZXR1cm4gIDE0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdW5kZXJs
aW5lTW9kZSAgKHZvaWQpIHsgcmV0dXJuICAxOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2ZvcmVDb2xvciAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2JhY2tDb2xvciAgKHZvaWQpIHsgcmV0dXJuICAyNCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94
eUdyYXBoaWNTdGF0ZVR5cGVWMiAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlF
bVByb3h5R3JhcGhpY1N0YXRlVHlwZVYyICAJKHZvaWQpOwlFbVByb3h5R3JhcGhpY1N0YXRlVHlw
ZVYyICAJKGNvbnN0IEVtUHJveHlHcmFwaGljU3RhdGVUeXBlVjIgICYpOwlwdHJfdHlwZQkJCUdl
dFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0
aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyOCAgOyB9CUVtUHJveHlH
cmFwaGljU3RhdGVUeXBlVjIgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eUdyYXBoaWNTdGF0
ZVR5cGVWMiAgJik7CUVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjIgIDxMQVM+CW9wZXJhdG9yW10g
KGludCk7CWNvbnN0IEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjIgIDxMQVM+CW9wZXJhdG9yW10g
KGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDI4ICBdOwl9
IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzU2NyT3BlcmF0aW9uIDxMQVM+CSAJCQkJ
Z3JhZk1vZGUgOyAJIEVtQWxpYXNCb29sZWFuIDxMQVM+CSAJCQkJCXBhdHRlcm5Nb2RlIDsgCSBF
bUFsaWFzUGF0dGVyblR5cGUgPExBUz4JIAkJCQlwYXR0ZXJuIDsgCSBFbUFsaWFzVUludDE2IDxM
QVM+CSAJCQkJCQljdXN0b21QdG4gOyAJIEVtQWxpYXNGb250SUQgPExBUz4JIAkJCQkJCWZvbnRJ
ZCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZm9udCA7IAkgRW1BbGlhc1VuZGVybGlu
ZU1vZGVUeXBlIDxMQVM+CSAJCQl1bmRlcmxpbmVNb2RlIDsgCSBFbUFsaWFzUkdCQ29sb3JUeXBl
IDxMQVM+CSAJCQkJZm9yZUNvbG9yIDsgCSBFbUFsaWFzUkdCQ29sb3JUeXBlIDxMQVM+CSAJCQkJ
YmFja0NvbG9yIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ3JhZk1vZGUgICh2b2lk
KSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BhdHRlcm5Nb2RlICAo
dm9pZCkgeyByZXR1cm4gIDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wYXR0ZXJuICAo
dm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jdXN0b21QdG4g
ICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZvbnRJZCAg
KHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZvbnQgICh2
b2lkKSB7IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91bmRlcmxpbmVN
b2RlICAodm9pZCkgeyByZXR1cm4gIDE4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZm9y
ZUNvbG9yICAodm9pZCkgeyByZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
YmFja0NvbG9yICAodm9pZCkgeyByZXR1cm4gIDI0IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNs
YXNzIEE+CWNsYXNzIEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjMgIAl7CXB1YmxpYzoJdHlwZWRl
ZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0dyYXBoaWNTdGF0ZVR5cGVW
MyAgCShwdHJfdHlwZSk7CUVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjMgIAkoY29uc3QgRW1BbGlh
c0dyYXBoaWNTdGF0ZVR5cGVWMyAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4g
ICAgIDEyICA7IH0JRW1BbGlhc0dyYXBoaWNTdGF0ZVR5cGVWMyAgPEE+JglvcGVyYXRvcj0gKGNv
bnN0IEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjMgIDxBPiYpOwlFbUFsaWFzR3JhcGhpY1N0YXRl
VHlwZVYzICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0dyYXBoaWNTdGF0ZVR5
cGVWMyAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNHcmFwaGlj
U3RhdGVUeXBlVjMgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxp
YXNlbXVwdHIgPEE+CSAJCQkJCQlkcmF3U3RhdGVQIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJ
CQkJZHJhd1N0YXRlU3RhY2tQIDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQlkcmF3U3RhdGVJ
bmRleCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXNjcmVlbkxvY2tDb3VudCA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RyYXdTdGF0ZVAgICh2b2lkKSB7IHJldHVybiAgMCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RyYXdTdGF0ZVN0YWNrUCAgKHZvaWQpIHsgcmV0
dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZHJhd1N0YXRlSW5kZXggICh2b2lk
KSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NjcmVlbkxvY2tDb3Vu
dCAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eUdyYXBoaWNTdGF0
ZVR5cGVWMyAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5R3JhcGhp
Y1N0YXRlVHlwZVYzICAJKHZvaWQpOwlFbVByb3h5R3JhcGhpY1N0YXRlVHlwZVYzICAJKGNvbnN0
IEVtUHJveHlHcmFwaGljU3RhdGVUeXBlVjMgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkg
Y29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlH
ZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAxMiAgOyB9CUVtUHJveHlHcmFwaGljU3RhdGVU
eXBlVjMgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eUdyYXBoaWNTdGF0ZVR5cGVWMyAgJik7
CUVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjMgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0
IEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjMgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7
CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDEyICBdOwl9IGZMb2NhbERhdGE7
CXB1YmxpYzoJICAgICBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlkcmF3U3RhdGVQIDsgCSBF
bUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlkcmF3U3RhdGVTdGFja1AgOyAJIEVtQWxpYXNJbnQx
NiA8TEFTPgkgCQkJCQkJZHJhd1N0YXRlSW5kZXggOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJ
CQkJCXNjcmVlbkxvY2tDb3VudCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RyYXdT
dGF0ZVAgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Ry
YXdTdGF0ZVN0YWNrUCAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfZHJhd1N0YXRlSW5kZXggICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3NjcmVlbkxvY2tDb3VudCAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gIAl9
OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzVUlDb2xvclN0YXRlVHlwZSAg
CXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFz
VUlDb2xvclN0YXRlVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNVSUNvbG9yU3RhdGVUeXBlICAJ
KGNvbnN0IEVtQWxpYXNVSUNvbG9yU3RhdGVUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZv
aWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJ
CQl7IHJldHVybiAgICAgMTIgIDsgfQlFbUFsaWFzVUlDb2xvclN0YXRlVHlwZSAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IEVtQWxpYXNVSUNvbG9yU3RhdGVUeXBlICA8QT4mKTsJRW1BbGlhc1VJQ29s
b3JTdGF0ZVR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzVUlDb2xvclN0
YXRlVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNVSUNv
bG9yU3RhdGVUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFs
aWFzZW11cHRyIDxBPgkgCQkJCQkJY29sb3JUYWJsZVAgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJ
CQkJCQljb2xvclRhYmxlU3RhY2tQIDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQljb2xvclRh
YmxlU3RhY2tJbmRleCA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJCXRhYmxlc0RpcnR5IDsg
CSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlyZXNlcnZlZCA7ICAJICAgICBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2NvbG9yVGFibGVQICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9jb2xvclRhYmxlU3RhY2tQICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb2xvclRhYmxlU3RhY2tJbmRleCAgKHZvaWQpIHsgcmV0
dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGFibGVzRGlydHkgICh2b2lkKSB7
IHJldHVybiAgMTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNlcnZlZCAgKHZvaWQp
IHsgcmV0dXJuICAxMSA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVVJQ29sb3JTdGF0ZVR5cGUgIAl7
CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVVJQ29sb3JTdGF0ZVR5cGUg
IAkodm9pZCk7CUVtUHJveHlVSUNvbG9yU3RhdGVUeXBlICAJKGNvbnN0IEVtUHJveHlVSUNvbG9y
U3RhdGVUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChw
dHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7
IHJldHVybiAgICAgMTIgIDsgfQlFbVByb3h5VUlDb2xvclN0YXRlVHlwZSAgJgkJb3BlcmF0b3I9
IChjb25zdCBFbVByb3h5VUlDb2xvclN0YXRlVHlwZSAgJik7CUVtQWxpYXNVSUNvbG9yU3RhdGVU
eXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzVUlDb2xvclN0YXRlVHlw
ZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJ
CV9ieXRlc1sgICAgMTIgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNlbXVw
dHIgPExBUz4JIAkJCQkJCWNvbG9yVGFibGVQIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJ
CQljb2xvclRhYmxlU3RhY2tQIDsgCSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWNvbG9yVGFi
bGVTdGFja0luZGV4IDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkgCQkJCQl0YWJsZXNEaXJ0eSA7
IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlyZXNlcnZlZCA7ICAJICAgICBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2NvbG9yVGFibGVQICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9jb2xvclRhYmxlU3RhY2tQICAodm9pZCkgeyByZXR1cm4gIDQgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb2xvclRhYmxlU3RhY2tJbmRleCAgKHZvaWQpIHsg
cmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGFibGVzRGlydHkgICh2b2lk
KSB7IHJldHVybiAgMTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNlcnZlZCAgKHZv
aWQpIHsgcmV0dXJuICAxMSA7IH0gIAl9OyAgICAKICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3Mg
RW1BbGlhc1VJR2xvYmFsc1R5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJf
dHlwZSBwdHJfdHlwZTsJRW1BbGlhc1VJR2xvYmFsc1R5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFz
VUlHbG9iYWxzVHlwZSAgCShjb25zdCBFbUFsaWFzVUlHbG9iYWxzVHlwZSAgJik7CXB0cl90eXBl
CQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdl
dFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDU2ICA7IH0JRW1BbGlhc1VJR2xvYmFsc1R5cGUg
IDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzVUlHbG9iYWxzVHlwZSAgPEE+Jik7CUVtQWxp
YXNVSUdsb2JhbHNUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1VJR2xv
YmFsc1R5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzVUlH
bG9iYWxzVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlh
c2VtdXB0ciA8QT4JIAkJCQkJCWFjdGl2ZVdpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJ
CQkJCWRpc3BsYXlXaW5kb3cgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlkcmF3V2luZG93
IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZmlyc3RXaW5kb3cgOyAJIEVtQWxpYXNlbXVw
dHIgPEE+CSAJCQkJCQlleGl0V2luZG93SUQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQll
bnRlcldpbmRvd0lEIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZXhpdGVkV2luZG93SUQg
OyAJIEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjEgPEE+CSAJCQlnU3RhdGVWMSA7IAkgRW1BbGlh
c0dyYXBoaWNTdGF0ZVR5cGVWMiA8QT4JIAkJCWdTdGF0ZVYyIDsgCSBFbUFsaWFzR3JhcGhpY1N0
YXRlVHlwZVYzIDxBPgkgCQkJZ1N0YXRlVjMgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9hY3RpdmVXaW5kb3cgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2Rpc3BsYXlXaW5kb3cgICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2RyYXdXaW5kb3cgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2ZpcnN0V2luZG93ICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXhpdFdpbmRvd0lEICAodm9pZCkgeyByZXR1cm4gIDE2IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZW50ZXJXaW5kb3dJRCAgKHZvaWQpIHsgcmV0dXJu
ICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V4aXRlZFdpbmRvd0lEICAodm9pZCkg
eyByZXR1cm4gIDI0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ1N0YXRlVjEgICh2b2lk
KSB7IHJldHVybiAgMjggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nU3RhdGVWMiAgKHZv
aWQpIHsgcmV0dXJuICAyOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dTdGF0ZVYzICAo
dm9pZCkgeyByZXR1cm4gIDI4IDsgfSAgCX07IAljbGFzcyBFbVByb3h5VUlHbG9iYWxzVHlwZSAg
CXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5VUlHbG9iYWxzVHlwZSAg
CSh2b2lkKTsJRW1Qcm94eVVJR2xvYmFsc1R5cGUgIAkoY29uc3QgRW1Qcm94eVVJR2xvYmFsc1R5
cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBl
KSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJu
ICAgICA1NiAgOyB9CUVtUHJveHlVSUdsb2JhbHNUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVt
UHJveHlVSUdsb2JhbHNUeXBlICAmKTsJRW1BbGlhc1VJR2xvYmFsc1R5cGUgIDxMQVM+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNVSUdsb2JhbHNUeXBlICA8TEFTPglvcGVyYXRvcltd
IChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA1NiAgXTsJ
fSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJYWN0
aXZlV2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlkaXNwbGF5V2luZG93IDsg
CSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlkcmF3V2luZG93IDsgCSBFbUFsaWFzZW11cHRy
IDxMQVM+CSAJCQkJCQlmaXJzdFdpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJ
ZXhpdFdpbmRvd0lEIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQllbnRlcldpbmRvd0lE
IDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlleGl0ZWRXaW5kb3dJRCA7IAkgRW1BbGlh
c0dyYXBoaWNTdGF0ZVR5cGVWMSA8TEFTPgkgCQkJZ1N0YXRlVjEgOyAJIEVtQWxpYXNHcmFwaGlj
U3RhdGVUeXBlVjIgPExBUz4JIAkJCWdTdGF0ZVYyIDsgCSBFbUFsaWFzR3JhcGhpY1N0YXRlVHlw
ZVYzIDxMQVM+CSAJCQlnU3RhdGVWMyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Fj
dGl2ZVdpbmRvdyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZGlzcGxheVdpbmRvdyAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfZHJhd1dpbmRvdyAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZmlyc3RXaW5kb3cgICh2b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9leGl0V2luZG93SUQgICh2b2lkKSB7IHJldHVybiAgMTYgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9lbnRlcldpbmRvd0lEICAodm9pZCkgeyByZXR1cm4gIDIw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXhpdGVkV2luZG93SUQgICh2b2lkKSB7IHJl
dHVybiAgMjQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nU3RhdGVWMSAgKHZvaWQpIHsg
cmV0dXJuICAyOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dTdGF0ZVYyICAodm9pZCkg
eyByZXR1cm4gIDI4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ1N0YXRlVjMgICh2b2lk
KSB7IHJldHVybiAgMjggOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1B
bGlhc1VJR2xvYmFsc1R5cGVDb21tb24gIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpw
dHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1VJR2xvYmFsc1R5cGVDb21tb24gIAkocHRyX3R5cGUp
OwlFbUFsaWFzVUlHbG9iYWxzVHlwZUNvbW1vbiAgCShjb25zdCBFbUFsaWFzVUlHbG9iYWxzVHlw
ZUNvbW1vbiAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRy
OyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDE2MyAgOyB9
CUVtQWxpYXNVSUdsb2JhbHNUeXBlQ29tbW9uICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlh
c1VJR2xvYmFsc1R5cGVDb21tb24gIDxBPiYpOwlFbUFsaWFzVUlHbG9iYWxzVHlwZUNvbW1vbiAg
PEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNVSUdsb2JhbHNUeXBlQ29tbW9uICA8
QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1VJR2xvYmFsc1R5cGVD
b21tb24gIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNlbXVw
dHIgPEE+CSAJCQkJCQlhY3RpdmVXaW5kb3cgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlk
aXNwbGF5V2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZHJhd1dpbmRvdyA7IAkg
RW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWZpcnN0V2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxB
PgkgCQkJCQkJZXhpdFdpbmRvd0lEIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZW50ZXJX
aW5kb3dJRCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWV4aXRlZFdpbmRvd0lEIDsgCSBF
bUFsaWFzR3JhcGhpY1N0YXRlVHlwZVYxIDxBPgkgCQkJZ1N0YXRlVjEgOyAJIEVtQWxpYXNHcmFw
aGljU3RhdGVUeXBlVjIgPEE+CSAJCQlnU3RhdGVWMiA7IAkgRW1BbGlhc0dyYXBoaWNTdGF0ZVR5
cGVWMyA8QT4JIAkJCWdTdGF0ZVYzIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQl1aUN1cnJl
bnRGb250SUQgOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJCV91bnVzZWQyIDsgCSBFbUFsaWFz
ZW11cHRyIDxBPgkgCQkJCQkJY3VycmVudEZvcm0gOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJ
CQlpbnNQdElzRW5hYmxlZCA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJCWluc1B0T24gOyAJ
IEVtQWxpYXNQb2ludFR5cGUgPEE+CSAJCQkJCWluc1B0TG9jIDsgCSBFbUFsaWFzSW50MTYgPEE+
CSAJCQkJCQlpbnNQdEhlaWdodCA7IAkgRW1BbGlhc0ludDMyIDxBPgkgCQkJCQkJaW5zUHRMYXN0
VGljayA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWluc1B0Qml0c0JlaGluZCA7IAkgRW1B
bGlhc0NsaXBib2FyZEl0ZW0gPEE+CSAJCQkJY2xpcGJvYXJkIDsgCSBFbUFsaWFzZW11cHRyIDxB
PgkgCQkJCQkJdWlDdXJyZW50TWVudSA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXVpQ3Vy
cmVudE1lbnVSc2NJRCA7IAkgRW1BbGlhc0ZpZWxkVW5kb1R5cGUgPEE+CSAJCQkJdW5kb0dsb2Jh
bHMgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWdzaVN0YXRlIDsgCSBFbUFsaWFzQm9vbGVh
biA8QT4JIAkJCQkJZ3NpSXNFbmFibGVkIDsgCSBFbUFsaWFzUG9pbnRUeXBlIDxBPgkgCQkJCQln
c2lMb2NhdGlvbiA7IAkgRW1BbGlhc0NoYXIgPEE+CSAJCQkJCQl1aURlY2ltYWxTZXBhcmF0b3Ig
OyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hY3RpdmVXaW5kb3cgICh2b2lkKSB7IHJl
dHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Rpc3BsYXlXaW5kb3cgICh2b2lk
KSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RyYXdXaW5kb3cgICh2
b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZpcnN0V2luZG93
ICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXhpdFdp
bmRvd0lEICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
ZW50ZXJXaW5kb3dJRCAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2V4aXRlZFdpbmRvd0lEICAodm9pZCkgeyByZXR1cm4gIDI0IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfZ1N0YXRlVjEgICh2b2lkKSB7IHJldHVybiAgMjggOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9nU3RhdGVWMiAgKHZvaWQpIHsgcmV0dXJuICAyOCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2dTdGF0ZVYzICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJyZW50Rm9udElEICAodm9pZCkgeyByZXR1cm4gIDk4
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX3VudXNlZDIgICh2b2lkKSB7IHJldHVybiAg
OTkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jdXJyZW50Rm9ybSAgKHZvaWQpIHsgcmV0
dXJuICAxMDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnNQdElzRW5hYmxlZCAgKHZv
aWQpIHsgcmV0dXJuICAxMDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnNQdE9uICAo
dm9pZCkgeyByZXR1cm4gIDEwNSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0TG9j
ICAodm9pZCkgeyByZXR1cm4gIDEwNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0
SGVpZ2h0ICAodm9pZCkgeyByZXR1cm4gIDExMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2luc1B0TGFzdFRpY2sgICh2b2lkKSB7IHJldHVybiAgMTEyIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfaW5zUHRCaXRzQmVoaW5kICAodm9pZCkgeyByZXR1cm4gIDExNiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2NsaXBib2FyZCAgKHZvaWQpIHsgcmV0dXJuICAxMjAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUN1cnJlbnRNZW51ICAodm9pZCkgeyByZXR1cm4gIDEz
OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQ3VycmVudE1lbnVSc2NJRCAgKHZvaWQp
IHsgcmV0dXJuICAxNDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91bmRvR2xvYmFscyAg
KHZvaWQpIHsgcmV0dXJuICAxNDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nc2lTdGF0
ZSAgKHZvaWQpIHsgcmV0dXJuICAxNTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nc2lJ
c0VuYWJsZWQgICh2b2lkKSB7IHJldHVybiAgMTU3IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZ3NpTG9jYXRpb24gICh2b2lkKSB7IHJldHVybiAgMTU4IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfdWlEZWNpbWFsU2VwYXJhdG9yICAodm9pZCkgeyByZXR1cm4gIDE2MiA7IH0gIAl9
OyAJY2xhc3MgRW1Qcm94eVVJR2xvYmFsc1R5cGVDb21tb24gIAl7CXB1YmxpYzoJdHlwZWRlZiB2
b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVVJR2xvYmFsc1R5cGVDb21tb24gIAkodm9pZCk7CUVtUHJv
eHlVSUdsb2JhbHNUeXBlQ29tbW9uICAJKGNvbnN0IEVtUHJveHlVSUdsb2JhbHNUeXBlQ29tbW9u
ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkg
JmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAg
ICAgMTYzICA7IH0JRW1Qcm94eVVJR2xvYmFsc1R5cGVDb21tb24gICYJCW9wZXJhdG9yPSAoY29u
c3QgRW1Qcm94eVVJR2xvYmFsc1R5cGVDb21tb24gICYpOwlFbUFsaWFzVUlHbG9iYWxzVHlwZUNv
bW1vbiAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1VJR2xvYmFsc1R5cGVD
b21tb24gIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNo
YXIJCQlfYnl0ZXNbICAgIDE2MyAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlh
c2VtdXB0ciA8TEFTPgkgCQkJCQkJYWN0aXZlV2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+
CSAJCQkJCQlkaXNwbGF5V2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlkcmF3
V2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlmaXJzdFdpbmRvdyA7IAkgRW1B
bGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZXhpdFdpbmRvd0lEIDsgCSBFbUFsaWFzZW11cHRyIDxM
QVM+CSAJCQkJCQllbnRlcldpbmRvd0lEIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQll
eGl0ZWRXaW5kb3dJRCA7IAkgRW1BbGlhc0dyYXBoaWNTdGF0ZVR5cGVWMSA8TEFTPgkgCQkJZ1N0
YXRlVjEgOyAJIEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjIgPExBUz4JIAkJCWdTdGF0ZVYyIDsg
CSBFbUFsaWFzR3JhcGhpY1N0YXRlVHlwZVYzIDxMQVM+CSAJCQlnU3RhdGVWMyA7IAkgRW1BbGlh
c1VJbnQ4IDxMQVM+CSAJCQkJCQl1aUN1cnJlbnRGb250SUQgOyAJIEVtQWxpYXNJbnQxNiA8TEFT
PgkgCQkJCQkJX3VudXNlZDIgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWN1cnJlbnRG
b3JtIDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkgCQkJCQlpbnNQdElzRW5hYmxlZCA7IAkgRW1B
bGlhc0Jvb2xlYW4gPExBUz4JIAkJCQkJaW5zUHRPbiA7IAkgRW1BbGlhc1BvaW50VHlwZSA8TEFT
PgkgCQkJCQlpbnNQdExvYyA7IAkgRW1BbGlhc0ludDE2IDxMQVM+CSAJCQkJCQlpbnNQdEhlaWdo
dCA7IAkgRW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJCQlpbnNQdExhc3RUaWNrIDsgCSBFbUFsaWFz
ZW11cHRyIDxMQVM+CSAJCQkJCQlpbnNQdEJpdHNCZWhpbmQgOyAJIEVtQWxpYXNDbGlwYm9hcmRJ
dGVtIDxMQVM+CSAJCQkJY2xpcGJvYXJkIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQl1
aUN1cnJlbnRNZW51IDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQl1aUN1cnJlbnRNZW51
UnNjSUQgOyAJIEVtQWxpYXNGaWVsZFVuZG9UeXBlIDxMQVM+CSAJCQkJdW5kb0dsb2JhbHMgOyAJ
IEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJZ3NpU3RhdGUgOyAJIEVtQWxpYXNCb29sZWFuIDxM
QVM+CSAJCQkJCWdzaUlzRW5hYmxlZCA7IAkgRW1BbGlhc1BvaW50VHlwZSA8TEFTPgkgCQkJCQln
c2lMb2NhdGlvbiA7IAkgRW1BbGlhc0NoYXIgPExBUz4JIAkJCQkJCXVpRGVjaW1hbFNlcGFyYXRv
ciA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FjdGl2ZVdpbmRvdyAgKHZvaWQpIHsg
cmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGlzcGxheVdpbmRvdyAgKHZv
aWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZHJhd1dpbmRvdyAg
KHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmlyc3RXaW5k
b3cgICh2b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9leGl0
V2luZG93SUQgICh2b2lkKSB7IHJldHVybiAgMTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9lbnRlcldpbmRvd0lEICAodm9pZCkgeyByZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfZXhpdGVkV2luZG93SUQgICh2b2lkKSB7IHJldHVybiAgMjQgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9nU3RhdGVWMSAgKHZvaWQpIHsgcmV0dXJuICAyOCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2dTdGF0ZVYyICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ1N0YXRlVjMgICh2b2lkKSB7IHJldHVybiAgMjggOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUN1cnJlbnRGb250SUQgICh2b2lkKSB7IHJldHVybiAg
OTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fdW51c2VkMiAgKHZvaWQpIHsgcmV0dXJu
ICA5OSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2N1cnJlbnRGb3JtICAodm9pZCkgeyBy
ZXR1cm4gIDEwMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0SXNFbmFibGVkICAo
dm9pZCkgeyByZXR1cm4gIDEwNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0T24g
ICh2b2lkKSB7IHJldHVybiAgMTA1IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRM
b2MgICh2b2lkKSB7IHJldHVybiAgMTA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5z
UHRIZWlnaHQgICh2b2lkKSB7IHJldHVybiAgMTEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfaW5zUHRMYXN0VGljayAgKHZvaWQpIHsgcmV0dXJuICAxMTIgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9pbnNQdEJpdHNCZWhpbmQgICh2b2lkKSB7IHJldHVybiAgMTE2IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2xpcGJvYXJkICAodm9pZCkgeyByZXR1cm4gIDEyMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQ3VycmVudE1lbnUgICh2b2lkKSB7IHJldHVybiAg
MTM4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJyZW50TWVudVJzY0lEICAodm9p
ZCkgeyByZXR1cm4gIDE0MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VuZG9HbG9iYWxz
ICAodm9pZCkgeyByZXR1cm4gIDE0NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dzaVN0
YXRlICAodm9pZCkgeyByZXR1cm4gIDE1NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dz
aUlzRW5hYmxlZCAgKHZvaWQpIHsgcmV0dXJuICAxNTcgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9nc2lMb2NhdGlvbiAgKHZvaWQpIHsgcmV0dXJuICAxNTggOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl91aURlY2ltYWxTZXBhcmF0b3IgICh2b2lkKSB7IHJldHVybiAgMTYyIDsgfSAg
CX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNVSUdsb2JhbHNUeXBlVjEg
IAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlh
c1VJR2xvYmFsc1R5cGVWMSAgCShwdHJfdHlwZSk7CUVtQWxpYXNVSUdsb2JhbHNUeXBlVjEgIAko
Y29uc3QgRW1BbGlhc1VJR2xvYmFsc1R5cGVWMSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lk
KSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJ
eyByZXR1cm4gICAgIDE2MCAgOyB9CUVtQWxpYXNVSUdsb2JhbHNUeXBlVjEgIDxBPiYJb3BlcmF0
b3I9IChjb25zdCBFbUFsaWFzVUlHbG9iYWxzVHlwZVYxICA8QT4mKTsJRW1BbGlhc1VJR2xvYmFs
c1R5cGVWMSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNVSUdsb2JhbHNUeXBl
VjEgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzVUlHbG9iYWxz
VHlwZVYxICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzZW11
cHRyIDxBPgkgCQkJCQkJYWN0aXZlV2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJ
ZGlzcGxheVdpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWRyYXdXaW5kb3cgOyAJ
IEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlmaXJzdFdpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8
QT4JIAkJCQkJCWV4aXRXaW5kb3dJRCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWVudGVy
V2luZG93SUQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlleGl0ZWRXaW5kb3dJRCA7IAkg
RW1BbGlhc0dyYXBoaWNTdGF0ZVR5cGVWMSA8QT4JIAkJCWdTdGF0ZSA7IAkgRW1BbGlhc2VtdXB0
ciA8QT4JIAkJCQkJCWV2ZW50USA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWV2ZW50UUlu
ZGV4IDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJZXZlbnRRTGVuZ3RoIDsgCSBFbUFsaWFz
SW50MTYgPEE+CSAJCQkJCQlsYXN0U2NyZWVuWCA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJ
bGFzdFNjcmVlblkgOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQlsYXN0UGVuRG93biA7IAkg
RW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJX3VudXNlZDEgOyAJIEVtQWxpYXNJbnQzMiA8QT4JIAkJ
CQkJCW5lZWROdWxsVGlja0NvdW50IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJdWlDdXJy
ZW50Rm9udFB0ciA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXVpRm9udFRhYmxlIDsgCSBF
bUFsaWFzVUludDggPEE+CSAJCQkJCQl1aUN1cnJlbnRGb250SUQgOyAJIEVtQWxpYXNJbnQxNiA8
QT4JIAkJCQkJCV91bnVzZWQyIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJY3VycmVudEZv
cm0gOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQlpbnNQdElzRW5hYmxlZCA7IAkgRW1BbGlh
c0Jvb2xlYW4gPEE+CSAJCQkJCWluc1B0T24gOyAJIEVtQWxpYXNQb2ludFR5cGUgPEE+CSAJCQkJ
CWluc1B0TG9jIDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQlpbnNQdEhlaWdodCA7IAkgRW1B
bGlhc0ludDMyIDxBPgkgCQkJCQkJaW5zUHRMYXN0VGljayA7IAkgRW1BbGlhc2VtdXB0ciA8QT4J
IAkJCQkJCWluc1B0Qml0c0JlaGluZCA7IAkgRW1BbGlhc0NsaXBib2FyZEl0ZW0gPEE+CSAJCQkJ
Y2xpcGJvYXJkIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJdWlDdXJyZW50TWVudSA7IAkg
RW1BbGlhc0ZpZWxkVW5kb1R5cGUgPEE+CSAJCQkJdW5kb0dsb2JhbHMgOyAJIEVtQWxpYXNVSW50
OCA8QT4JIAkJCQkJCWdzaVN0YXRlIDsgCSBFbUFsaWFzQm9vbGVhbiA8QT4JIAkJCQkJZ3NpSXNF
bmFibGVkIDsgCSBFbUFsaWFzUG9pbnRUeXBlIDxBPgkgCQkJCQlnc2lMb2NhdGlvbiA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FjdGl2ZVdpbmRvdyAgKHZvaWQpIHsgcmV0dXJuICAw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGlzcGxheVdpbmRvdyAgKHZvaWQpIHsgcmV0
dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZHJhd1dpbmRvdyAgKHZvaWQpIHsg
cmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmlyc3RXaW5kb3cgICh2b2lk
KSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9leGl0V2luZG93SUQg
ICh2b2lkKSB7IHJldHVybiAgMTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9lbnRlcldp
bmRvd0lEICAodm9pZCkgeyByZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
ZXhpdGVkV2luZG93SUQgICh2b2lkKSB7IHJldHVybiAgMjQgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9nU3RhdGUgICh2b2lkKSB7IHJldHVybiAgMjggOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9ldmVudFEgICh2b2lkKSB7IHJldHVybiAgNDggOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9ldmVudFFJbmRleCAgKHZvaWQpIHsgcmV0dXJuICA1MiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2V2ZW50UUxlbmd0aCAgKHZvaWQpIHsgcmV0dXJuICA1NCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2xhc3RTY3JlZW5YICAodm9pZCkgeyByZXR1cm4gIDU2IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbGFzdFNjcmVlblkgICh2b2lkKSB7IHJldHVybiAgNTgg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sYXN0UGVuRG93biAgKHZvaWQpIHsgcmV0dXJu
ICA2MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX191bnVzZWQxICAodm9pZCkgeyByZXR1
cm4gIDYxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmVlZE51bGxUaWNrQ291bnQgICh2
b2lkKSB7IHJldHVybiAgNjIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUN1cnJlbnRG
b250UHRyICAodm9pZCkgeyByZXR1cm4gIDY2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
dWlGb250VGFibGUgICh2b2lkKSB7IHJldHVybiAgNzAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl91aUN1cnJlbnRGb250SUQgICh2b2lkKSB7IHJldHVybiAgOTggOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9fdW51c2VkMiAgKHZvaWQpIHsgcmV0dXJuICA5OSA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2N1cnJlbnRGb3JtICAodm9pZCkgeyByZXR1cm4gIDEwMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0SXNFbmFibGVkICAodm9pZCkgeyByZXR1cm4gIDEw
NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0T24gICh2b2lkKSB7IHJldHVybiAg
MTA1IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRMb2MgICh2b2lkKSB7IHJldHVy
biAgMTA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRIZWlnaHQgICh2b2lkKSB7
IHJldHVybiAgMTEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRMYXN0VGljayAg
KHZvaWQpIHsgcmV0dXJuICAxMTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnNQdEJp
dHNCZWhpbmQgICh2b2lkKSB7IHJldHVybiAgMTE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfY2xpcGJvYXJkICAodm9pZCkgeyByZXR1cm4gIDEyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3VpQ3VycmVudE1lbnUgICh2b2lkKSB7IHJldHVybiAgMTM4IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfdW5kb0dsb2JhbHMgICh2b2lkKSB7IHJldHVybiAgMTQyIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ3NpU3RhdGUgICh2b2lkKSB7IHJldHVybiAgMTU0IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ3NpSXNFbmFibGVkICAodm9pZCkgeyByZXR1cm4gIDE1
NSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dzaUxvY2F0aW9uICAodm9pZCkgeyByZXR1
cm4gIDE1NiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVVJR2xvYmFsc1R5cGVWMSAgCXsJcHVibGlj
Ogl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5VUlHbG9iYWxzVHlwZVYxICAJKHZvaWQp
OwlFbVByb3h5VUlHbG9iYWxzVHlwZVYxICAJKGNvbnN0IEVtUHJveHlVSUdsb2JhbHNUeXBlVjEg
ICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAm
ZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAg
ICAxNjAgIDsgfQlFbVByb3h5VUlHbG9iYWxzVHlwZVYxICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVt
UHJveHlVSUdsb2JhbHNUeXBlVjEgICYpOwlFbUFsaWFzVUlHbG9iYWxzVHlwZVYxICA8TEFTPglv
cGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzVUlHbG9iYWxzVHlwZVYxICA8TEFTPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAx
NjAgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJ
CQkJCWFjdGl2ZVdpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZGlzcGxheVdp
bmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZHJhd1dpbmRvdyA7IAkgRW1BbGlh
c2VtdXB0ciA8TEFTPgkgCQkJCQkJZmlyc3RXaW5kb3cgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4J
IAkJCQkJCWV4aXRXaW5kb3dJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZW50ZXJX
aW5kb3dJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZXhpdGVkV2luZG93SUQgOyAJ
IEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjEgPExBUz4JIAkJCWdTdGF0ZSA7IAkgRW1BbGlhc2Vt
dXB0ciA8TEFTPgkgCQkJCQkJZXZlbnRRIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQll
dmVudFFJbmRleCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJZXZlbnRRTGVuZ3RoIDsg
CSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWxhc3RTY3JlZW5YIDsgCSBFbUFsaWFzSW50MTYg
PExBUz4JIAkJCQkJCWxhc3RTY3JlZW5ZIDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkgCQkJCQls
YXN0UGVuRG93biA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlfdW51c2VkMSA7IAkgRW1B
bGlhc0ludDMyIDxMQVM+CSAJCQkJCQluZWVkTnVsbFRpY2tDb3VudCA7IAkgRW1BbGlhc2VtdXB0
ciA8TEFTPgkgCQkJCQkJdWlDdXJyZW50Rm9udFB0ciA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkg
CQkJCQkJdWlGb250VGFibGUgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJdWlDdXJyZW50
Rm9udElEIDsgCSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCV91bnVzZWQyIDsgCSBFbUFsaWFz
ZW11cHRyIDxMQVM+CSAJCQkJCQljdXJyZW50Rm9ybSA7IAkgRW1BbGlhc0Jvb2xlYW4gPExBUz4J
IAkJCQkJaW5zUHRJc0VuYWJsZWQgOyAJIEVtQWxpYXNCb29sZWFuIDxMQVM+CSAJCQkJCWluc1B0
T24gOyAJIEVtQWxpYXNQb2ludFR5cGUgPExBUz4JIAkJCQkJaW5zUHRMb2MgOyAJIEVtQWxpYXNJ
bnQxNiA8TEFTPgkgCQkJCQkJaW5zUHRIZWlnaHQgOyAJIEVtQWxpYXNJbnQzMiA8TEFTPgkgCQkJ
CQkJaW5zUHRMYXN0VGljayA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJaW5zUHRCaXRz
QmVoaW5kIDsgCSBFbUFsaWFzQ2xpcGJvYXJkSXRlbSA8TEFTPgkgCQkJCWNsaXBib2FyZCA7IAkg
RW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJdWlDdXJyZW50TWVudSA7IAkgRW1BbGlhc0ZpZWxk
VW5kb1R5cGUgPExBUz4JIAkJCQl1bmRvR2xvYmFscyA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJ
CQkJCQlnc2lTdGF0ZSA7IAkgRW1BbGlhc0Jvb2xlYW4gPExBUz4JIAkJCQkJZ3NpSXNFbmFibGVk
IDsgCSBFbUFsaWFzUG9pbnRUeXBlIDxMQVM+CSAJCQkJCWdzaUxvY2F0aW9uIDsgIAkgICAgIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWN0aXZlV2luZG93ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kaXNwbGF5V2luZG93ICAodm9pZCkgeyByZXR1cm4g
IDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kcmF3V2luZG93ICAodm9pZCkgeyByZXR1
cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9maXJzdFdpbmRvdyAgKHZvaWQpIHsg
cmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V4aXRXaW5kb3dJRCAgKHZv
aWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2VudGVyV2luZG93
SUQgICh2b2lkKSB7IHJldHVybiAgMjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9leGl0
ZWRXaW5kb3dJRCAgKHZvaWQpIHsgcmV0dXJuICAyNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2dTdGF0ZSAgKHZvaWQpIHsgcmV0dXJuICAyOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2V2ZW50USAgKHZvaWQpIHsgcmV0dXJuICA0OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2V2ZW50UUluZGV4ICAodm9pZCkgeyByZXR1cm4gIDUyIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfZXZlbnRRTGVuZ3RoICAodm9pZCkgeyByZXR1cm4gIDU0IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfbGFzdFNjcmVlblggICh2b2lkKSB7IHJldHVybiAgNTYgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9sYXN0U2NyZWVuWSAgKHZvaWQpIHsgcmV0dXJuICA1OCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xhc3RQZW5Eb3duICAodm9pZCkgeyByZXR1cm4gIDYw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX3VudXNlZDEgICh2b2lkKSB7IHJldHVybiAg
NjEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uZWVkTnVsbFRpY2tDb3VudCAgKHZvaWQp
IHsgcmV0dXJuICA2MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQ3VycmVudEZvbnRQ
dHIgICh2b2lkKSB7IHJldHVybiAgNjYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUZv
bnRUYWJsZSAgKHZvaWQpIHsgcmV0dXJuICA3MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3VpQ3VycmVudEZvbnRJRCAgKHZvaWQpIHsgcmV0dXJuICA5OCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX191bnVzZWQyICAodm9pZCkgeyByZXR1cm4gIDk5IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfY3VycmVudEZvcm0gICh2b2lkKSB7IHJldHVybiAgMTAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRJc0VuYWJsZWQgICh2b2lkKSB7IHJldHVybiAgMTA0IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRPbiAgKHZvaWQpIHsgcmV0dXJuICAxMDUg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnNQdExvYyAgKHZvaWQpIHsgcmV0dXJuICAx
MDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnNQdEhlaWdodCAgKHZvaWQpIHsgcmV0
dXJuICAxMTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnNQdExhc3RUaWNrICAodm9p
ZCkgeyByZXR1cm4gIDExMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0Qml0c0Jl
aGluZCAgKHZvaWQpIHsgcmV0dXJuICAxMTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9j
bGlwYm9hcmQgICh2b2lkKSB7IHJldHVybiAgMTIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfdWlDdXJyZW50TWVudSAgKHZvaWQpIHsgcmV0dXJuICAxMzggOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl91bmRvR2xvYmFscyAgKHZvaWQpIHsgcmV0dXJuICAxNDIgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9nc2lTdGF0ZSAgKHZvaWQpIHsgcmV0dXJuICAxNTQgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9nc2lJc0VuYWJsZWQgICh2b2lkKSB7IHJldHVybiAgMTU1IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ3NpTG9jYXRpb24gICh2b2lkKSB7IHJldHVybiAg
MTU2IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNVSUdsb2Jh
bHNUeXBlVjIgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlw
ZTsJRW1BbGlhc1VJR2xvYmFsc1R5cGVWMiAgCShwdHJfdHlwZSk7CUVtQWxpYXNVSUdsb2JhbHNU
eXBlVjIgIAkoY29uc3QgRW1BbGlhc1VJR2xvYmFsc1R5cGVWMiAgJik7CXB0cl90eXBlCQkJR2V0
UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJ
KHZvaWQpCQkJeyByZXR1cm4gICAgIDE2MyAgOyB9CUVtQWxpYXNVSUdsb2JhbHNUeXBlVjIgIDxB
PiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzVUlHbG9iYWxzVHlwZVYyICA8QT4mKTsJRW1BbGlh
c1VJR2xvYmFsc1R5cGVWMiAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNVSUds
b2JhbHNUeXBlVjIgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFz
VUlHbG9iYWxzVHlwZVYyICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBF
bUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJYWN0aXZlV2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxB
PgkgCQkJCQkJZGlzcGxheVdpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWRyYXdX
aW5kb3cgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlmaXJzdFdpbmRvdyA7IAkgRW1BbGlh
c2VtdXB0ciA8QT4JIAkJCQkJCWV4aXRXaW5kb3dJRCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJ
CQkJCWVudGVyV2luZG93SUQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlleGl0ZWRXaW5k
b3dJRCA7IAkgRW1BbGlhc0dyYXBoaWNTdGF0ZVR5cGVWMSA8QT4JIAkJCWdTdGF0ZSA7IAkgRW1B
bGlhc2VtdXB0ciA8QT4JIAkJCQkJCWV2ZW50USA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJ
CWV2ZW50UUluZGV4IDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJZXZlbnRRTGVuZ3RoIDsg
CSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQlsYXN0U2NyZWVuWCA7IAkgRW1BbGlhc0ludDE2IDxB
PgkgCQkJCQkJbGFzdFNjcmVlblkgOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQlsYXN0UGVu
RG93biA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJX3VudXNlZDEgOyAJIEVtQWxpYXNJbnQz
MiA8QT4JIAkJCQkJCW5lZWROdWxsVGlja0NvdW50IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJ
CQkJdWlDdXJyZW50Rm9udFB0ciA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXVpRm9udFRh
YmxlIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQl1aUN1cnJlbnRGb250SUQgOyAJIEVtQWxp
YXNJbnQxNiA8QT4JIAkJCQkJCV91bnVzZWQyIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJ
Y3VycmVudEZvcm0gOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQlpbnNQdElzRW5hYmxlZCA7
IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJCWluc1B0T24gOyAJIEVtQWxpYXNQb2ludFR5cGUg
PEE+CSAJCQkJCWluc1B0TG9jIDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQlpbnNQdEhlaWdo
dCA7IAkgRW1BbGlhc0ludDMyIDxBPgkgCQkJCQkJaW5zUHRMYXN0VGljayA7IAkgRW1BbGlhc2Vt
dXB0ciA8QT4JIAkJCQkJCWluc1B0Qml0c0JlaGluZCA7IAkgRW1BbGlhc0NsaXBib2FyZEl0ZW0g
PEE+CSAJCQkJY2xpcGJvYXJkIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJdWlDdXJyZW50
TWVudSA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXVpQ3VycmVudE1lbnVSc2NJRCA7IAkg
RW1BbGlhc0ZpZWxkVW5kb1R5cGUgPEE+CSAJCQkJdW5kb0dsb2JhbHMgOyAJIEVtQWxpYXNVSW50
OCA8QT4JIAkJCQkJCWdzaVN0YXRlIDsgCSBFbUFsaWFzQm9vbGVhbiA8QT4JIAkJCQkJZ3NpSXNF
bmFibGVkIDsgCSBFbUFsaWFzUG9pbnRUeXBlIDxBPgkgCQkJCQlnc2lMb2NhdGlvbiA7IAkgRW1B
bGlhc0NoYXIgPEE+CSAJCQkJCQl1aURlY2ltYWxTZXBhcmF0b3IgOyAgCSAgICAgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9hY3RpdmVXaW5kb3cgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2Rpc3BsYXlXaW5kb3cgICh2b2lkKSB7IHJldHVybiAgNCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RyYXdXaW5kb3cgICh2b2lkKSB7IHJldHVybiAgOCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZpcnN0V2luZG93ICAodm9pZCkgeyByZXR1cm4g
IDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXhpdFdpbmRvd0lEICAodm9pZCkgeyBy
ZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZW50ZXJXaW5kb3dJRCAgKHZv
aWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V4aXRlZFdpbmRv
d0lEICAodm9pZCkgeyByZXR1cm4gIDI0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ1N0
YXRlICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXZl
bnRRICAodm9pZCkgeyByZXR1cm4gIDQ4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXZl
bnRRSW5kZXggICh2b2lkKSB7IHJldHVybiAgNTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9ldmVudFFMZW5ndGggICh2b2lkKSB7IHJldHVybiAgNTQgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9sYXN0U2NyZWVuWCAgKHZvaWQpIHsgcmV0dXJuICA1NiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2xhc3RTY3JlZW5ZICAodm9pZCkgeyByZXR1cm4gIDU4IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfbGFzdFBlbkRvd24gICh2b2lkKSB7IHJldHVybiAgNjAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9fdW51c2VkMSAgKHZvaWQpIHsgcmV0dXJuICA2MSA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25lZWROdWxsVGlja0NvdW50ICAodm9pZCkgeyByZXR1
cm4gIDYyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJyZW50Rm9udFB0ciAgKHZv
aWQpIHsgcmV0dXJuICA2NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpRm9udFRhYmxl
ICAodm9pZCkgeyByZXR1cm4gIDcwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJy
ZW50Rm9udElEICAodm9pZCkgeyByZXR1cm4gIDk4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfX3VudXNlZDIgICh2b2lkKSB7IHJldHVybiAgOTkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9jdXJyZW50Rm9ybSAgKHZvaWQpIHsgcmV0dXJuICAxMDAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9pbnNQdElzRW5hYmxlZCAgKHZvaWQpIHsgcmV0dXJuICAxMDQgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9pbnNQdE9uICAodm9pZCkgeyByZXR1cm4gIDEwNSA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0TG9jICAodm9pZCkgeyByZXR1cm4gIDEwNiA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0SGVpZ2h0ICAodm9pZCkgeyByZXR1cm4gIDEx
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0TGFzdFRpY2sgICh2b2lkKSB7IHJl
dHVybiAgMTEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRCaXRzQmVoaW5kICAo
dm9pZCkgeyByZXR1cm4gIDExNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NsaXBib2Fy
ZCAgKHZvaWQpIHsgcmV0dXJuICAxMjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUN1
cnJlbnRNZW51ICAodm9pZCkgeyByZXR1cm4gIDEzOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3VpQ3VycmVudE1lbnVSc2NJRCAgKHZvaWQpIHsgcmV0dXJuICAxNDIgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl91bmRvR2xvYmFscyAgKHZvaWQpIHsgcmV0dXJuICAxNDQgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9nc2lTdGF0ZSAgKHZvaWQpIHsgcmV0dXJuICAxNTYgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nc2lJc0VuYWJsZWQgICh2b2lkKSB7IHJldHVybiAg
MTU3IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ3NpTG9jYXRpb24gICh2b2lkKSB7IHJl
dHVybiAgMTU4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlEZWNpbWFsU2VwYXJhdG9y
ICAodm9pZCkgeyByZXR1cm4gIDE2MiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVVJR2xvYmFsc1R5
cGVWMiAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5VUlHbG9iYWxz
VHlwZVYyICAJKHZvaWQpOwlFbVByb3h5VUlHbG9iYWxzVHlwZVYyICAJKGNvbnN0IEVtUHJveHlV
SUdsb2JhbHNUeXBlVjIgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1
cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lk
KQkJCXsgcmV0dXJuICAgICAxNjMgIDsgfQlFbVByb3h5VUlHbG9iYWxzVHlwZVYyICAmCQlvcGVy
YXRvcj0gKGNvbnN0IEVtUHJveHlVSUdsb2JhbHNUeXBlVjIgICYpOwlFbUFsaWFzVUlHbG9iYWxz
VHlwZVYyICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzVUlHbG9iYWxzVHlw
ZVYyICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFy
CQkJX2J5dGVzWyAgICAxNjMgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNl
bXVwdHIgPExBUz4JIAkJCQkJCWFjdGl2ZVdpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkg
CQkJCQkJZGlzcGxheVdpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZHJhd1dp
bmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZmlyc3RXaW5kb3cgOyAJIEVtQWxp
YXNlbXVwdHIgPExBUz4JIAkJCQkJCWV4aXRXaW5kb3dJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFT
PgkgCQkJCQkJZW50ZXJXaW5kb3dJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZXhp
dGVkV2luZG93SUQgOyAJIEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjEgPExBUz4JIAkJCWdTdGF0
ZSA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZXZlbnRRIDsgCSBFbUFsaWFzVUludDE2
IDxMQVM+CSAJCQkJCQlldmVudFFJbmRleCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJ
ZXZlbnRRTGVuZ3RoIDsgCSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWxhc3RTY3JlZW5YIDsg
CSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWxhc3RTY3JlZW5ZIDsgCSBFbUFsaWFzQm9vbGVh
biA8TEFTPgkgCQkJCQlsYXN0UGVuRG93biA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlf
dW51c2VkMSA7IAkgRW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJCQluZWVkTnVsbFRpY2tDb3VudCA7
IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJdWlDdXJyZW50Rm9udFB0ciA7IAkgRW1BbGlh
c2VtdXB0ciA8TEFTPgkgCQkJCQkJdWlGb250VGFibGUgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkg
CQkJCQkJdWlDdXJyZW50Rm9udElEIDsgCSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCV91bnVz
ZWQyIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQljdXJyZW50Rm9ybSA7IAkgRW1BbGlh
c0Jvb2xlYW4gPExBUz4JIAkJCQkJaW5zUHRJc0VuYWJsZWQgOyAJIEVtQWxpYXNCb29sZWFuIDxM
QVM+CSAJCQkJCWluc1B0T24gOyAJIEVtQWxpYXNQb2ludFR5cGUgPExBUz4JIAkJCQkJaW5zUHRM
b2MgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJaW5zUHRIZWlnaHQgOyAJIEVtQWxpYXNJ
bnQzMiA8TEFTPgkgCQkJCQkJaW5zUHRMYXN0VGljayA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkg
CQkJCQkJaW5zUHRCaXRzQmVoaW5kIDsgCSBFbUFsaWFzQ2xpcGJvYXJkSXRlbSA8TEFTPgkgCQkJ
CWNsaXBib2FyZCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJdWlDdXJyZW50TWVudSA7
IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJdWlDdXJyZW50TWVudVJzY0lEIDsgCSBFbUFs
aWFzRmllbGRVbmRvVHlwZSA8TEFTPgkgCQkJCXVuZG9HbG9iYWxzIDsgCSBFbUFsaWFzVUludDgg
PExBUz4JIAkJCQkJCWdzaVN0YXRlIDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkgCQkJCQlnc2lJ
c0VuYWJsZWQgOyAJIEVtQWxpYXNQb2ludFR5cGUgPExBUz4JIAkJCQkJZ3NpTG9jYXRpb24gOyAJ
IEVtQWxpYXNDaGFyIDxMQVM+CSAJCQkJCQl1aURlY2ltYWxTZXBhcmF0b3IgOyAgCSAgICAgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9hY3RpdmVXaW5kb3cgICh2b2lkKSB7IHJldHVybiAgMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Rpc3BsYXlXaW5kb3cgICh2b2lkKSB7IHJldHVybiAg
NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RyYXdXaW5kb3cgICh2b2lkKSB7IHJldHVy
biAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZpcnN0V2luZG93ICAodm9pZCkgeyBy
ZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXhpdFdpbmRvd0lEICAodm9p
ZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZW50ZXJXaW5kb3dJ
RCAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V4aXRl
ZFdpbmRvd0lEICAodm9pZCkgeyByZXR1cm4gIDI0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZ1N0YXRlICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZXZlbnRRICAodm9pZCkgeyByZXR1cm4gIDQ4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZXZlbnRRSW5kZXggICh2b2lkKSB7IHJldHVybiAgNTIgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9ldmVudFFMZW5ndGggICh2b2lkKSB7IHJldHVybiAgNTQgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9sYXN0U2NyZWVuWCAgKHZvaWQpIHsgcmV0dXJuICA1NiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2xhc3RTY3JlZW5ZICAodm9pZCkgeyByZXR1cm4gIDU4IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbGFzdFBlbkRvd24gICh2b2lkKSB7IHJldHVybiAgNjAg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fdW51c2VkMSAgKHZvaWQpIHsgcmV0dXJuICA2
MSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25lZWROdWxsVGlja0NvdW50ICAodm9pZCkg
eyByZXR1cm4gIDYyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJyZW50Rm9udFB0
ciAgKHZvaWQpIHsgcmV0dXJuICA2NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpRm9u
dFRhYmxlICAodm9pZCkgeyByZXR1cm4gIDcwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
dWlDdXJyZW50Rm9udElEICAodm9pZCkgeyByZXR1cm4gIDk4IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfX3VudXNlZDIgICh2b2lkKSB7IHJldHVybiAgOTkgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9jdXJyZW50Rm9ybSAgKHZvaWQpIHsgcmV0dXJuICAxMDAgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9pbnNQdElzRW5hYmxlZCAgKHZvaWQpIHsgcmV0dXJuICAxMDQgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnNQdE9uICAodm9pZCkgeyByZXR1cm4gIDEwNSA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0TG9jICAodm9pZCkgeyByZXR1cm4gIDEw
NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0SGVpZ2h0ICAodm9pZCkgeyByZXR1
cm4gIDExMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0TGFzdFRpY2sgICh2b2lk
KSB7IHJldHVybiAgMTEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRCaXRzQmVo
aW5kICAodm9pZCkgeyByZXR1cm4gIDExNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Ns
aXBib2FyZCAgKHZvaWQpIHsgcmV0dXJuICAxMjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl91aUN1cnJlbnRNZW51ICAodm9pZCkgeyByZXR1cm4gIDEzOCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3VpQ3VycmVudE1lbnVSc2NJRCAgKHZvaWQpIHsgcmV0dXJuICAxNDIgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl91bmRvR2xvYmFscyAgKHZvaWQpIHsgcmV0dXJuICAxNDQg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nc2lTdGF0ZSAgKHZvaWQpIHsgcmV0dXJuICAx
NTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nc2lJc0VuYWJsZWQgICh2b2lkKSB7IHJl
dHVybiAgMTU3IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ3NpTG9jYXRpb24gICh2b2lk
KSB7IHJldHVybiAgMTU4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlEZWNpbWFsU2Vw
YXJhdG9yICAodm9pZCkgeyByZXR1cm4gIDE2MiA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFz
cyBBPgljbGFzcyBFbUFsaWFzVUlHbG9iYWxzVHlwZVYzICAJewlwdWJsaWM6CXR5cGVkZWYgdHlw
ZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNVSUdsb2JhbHNUeXBlVjMgIAkocHRy
X3R5cGUpOwlFbUFsaWFzVUlHbG9iYWxzVHlwZVYzICAJKGNvbnN0IEVtQWxpYXNVSUdsb2JhbHNU
eXBlVjMgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsg
fQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAxNjMgIDsgfQlF
bUFsaWFzVUlHbG9iYWxzVHlwZVYzICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1VJR2xv
YmFsc1R5cGVWMyAgPEE+Jik7CUVtQWxpYXNVSUdsb2JhbHNUeXBlVjMgIDxBPglvcGVyYXRvcltd
IChpbnQpOwljb25zdCBFbUFsaWFzVUlHbG9iYWxzVHlwZVYzICA8QT4Jb3BlcmF0b3JbXSAoaW50
KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1VJR2xvYmFsc1R5cGVWMyAgCSh2b2lkKTsJcHRyX3R5
cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWFjdGl2ZVdp
bmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWRpc3BsYXlXaW5kb3cgOyAJIEVtQWxp
YXNlbXVwdHIgPEE+CSAJCQkJCQlkcmF3V2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJ
CQkJZmlyc3RXaW5kb3cgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlleGl0V2luZG93SUQg
OyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQllbnRlcldpbmRvd0lEIDsgCSBFbUFsaWFzZW11
cHRyIDxBPgkgCQkJCQkJZXhpdGVkV2luZG93SUQgOyAJIEVtQWxpYXNHcmFwaGljU3RhdGVUeXBl
VjIgPEE+CSAJCQlnU3RhdGUgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlldmVudFEgOyAJ
IEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlldmVudFFJbmRleCA7IAkgRW1BbGlhc1VJbnQxNiA8
QT4JIAkJCQkJCWV2ZW50UUxlbmd0aCA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJbGFzdFNj
cmVlblggOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJCWxhc3RTY3JlZW5ZIDsgCSBFbUFsaWFz
Qm9vbGVhbiA8QT4JIAkJCQkJbGFzdFBlbkRvd24gOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJ
CV91bnVzZWQxIDsgCSBFbUFsaWFzSW50MzIgPEE+CSAJCQkJCQluZWVkTnVsbFRpY2tDb3VudCA7
IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXVpQ3VycmVudEZvbnRQdHIgOyAJIEVtQWxpYXNl
bXVwdHIgPEE+CSAJCQkJCQl1aVN5c0ZvbnRUYWJsZVB0ciA7IAkgRW1BbGlhc2VtdXB0ciA8QT4J
IAkJCQkJCXVpQXBwRm9udFRhYmxlUHRyIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJdWlO
dW1TeXNGb250cyA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXVpTnVtQXBwRm9udHMgOyAJ
IEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQl1aVVudXNlZDEgOyAJIEVtQWxpYXNVSW50MzIgPEE+
CSAJCQkJCQl1aVVudXNlZDIgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXVpQ3VycmVudEZv
bnRJRCA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJX3VudXNlZDIgOyAJIEVtQWxpYXNlbXVw
dHIgPEE+CSAJCQkJCQljdXJyZW50Rm9ybSA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJCWlu
c1B0SXNFbmFibGVkIDsgCSBFbUFsaWFzQm9vbGVhbiA8QT4JIAkJCQkJaW5zUHRPbiA7IAkgRW1B
bGlhc1BvaW50VHlwZSA8QT4JIAkJCQkJaW5zUHRMb2MgOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJ
CQkJCWluc1B0SGVpZ2h0IDsgCSBFbUFsaWFzSW50MzIgPEE+CSAJCQkJCQlpbnNQdExhc3RUaWNr
IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJaW5zUHRCaXRzQmVoaW5kIDsgCSBFbUFsaWFz
Q2xpcGJvYXJkSXRlbSA8QT4JIAkJCQljbGlwYm9hcmQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJ
CQkJCQl1aUN1cnJlbnRNZW51IDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJdWlDdXJyZW50
TWVudVJzY0lEIDsgCSBFbUFsaWFzRmllbGRVbmRvVHlwZSA8QT4JIAkJCQl1bmRvR2xvYmFscyA7
IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJZ3NpU3RhdGUgOyAJIEVtQWxpYXNCb29sZWFuIDxB
PgkgCQkJCQlnc2lJc0VuYWJsZWQgOyAJIEVtQWxpYXNQb2ludFR5cGUgPEE+CSAJCQkJCWdzaUxv
Y2F0aW9uIDsgCSBFbUFsaWFzQ2hhciA8QT4JIAkJCQkJCXVpRGVjaW1hbFNlcGFyYXRvciA7ICAJ
ICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FjdGl2ZVdpbmRvdyAgKHZvaWQpIHsgcmV0dXJu
ICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGlzcGxheVdpbmRvdyAgKHZvaWQpIHsg
cmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZHJhd1dpbmRvdyAgKHZvaWQp
IHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmlyc3RXaW5kb3cgICh2
b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9leGl0V2luZG93
SUQgICh2b2lkKSB7IHJldHVybiAgMTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9lbnRl
cldpbmRvd0lEICAodm9pZCkgeyByZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZXhpdGVkV2luZG93SUQgICh2b2lkKSB7IHJldHVybiAgMjQgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9nU3RhdGUgICh2b2lkKSB7IHJldHVybiAgMjggOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9ldmVudFEgICh2b2lkKSB7IHJldHVybiAgNTYgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9ldmVudFFJbmRleCAgKHZvaWQpIHsgcmV0dXJuICA2MCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2V2ZW50UUxlbmd0aCAgKHZvaWQpIHsgcmV0dXJuICA2MiA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2xhc3RTY3JlZW5YICAodm9pZCkgeyByZXR1cm4gIDY0IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbGFzdFNjcmVlblkgICh2b2lkKSB7IHJldHVybiAg
NjYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sYXN0UGVuRG93biAgKHZvaWQpIHsgcmV0
dXJuICA2OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX191bnVzZWQxICAodm9pZCkgeyBy
ZXR1cm4gIDY5IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmVlZE51bGxUaWNrQ291bnQg
ICh2b2lkKSB7IHJldHVybiAgNzAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUN1cnJl
bnRGb250UHRyICAodm9pZCkgeyByZXR1cm4gIDc0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfdWlTeXNGb250VGFibGVQdHIgICh2b2lkKSB7IHJldHVybiAgNzggOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl91aUFwcEZvbnRUYWJsZVB0ciAgKHZvaWQpIHsgcmV0dXJuICA4MiA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpTnVtU3lzRm9udHMgICh2b2lkKSB7IHJldHVybiAg
ODYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aU51bUFwcEZvbnRzICAodm9pZCkgeyBy
ZXR1cm4gIDg4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlVbnVzZWQxICAodm9pZCkg
eyByZXR1cm4gIDkwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlVbnVzZWQyICAodm9p
ZCkgeyByZXR1cm4gIDk0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJyZW50Rm9u
dElEICAodm9pZCkgeyByZXR1cm4gIDk4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX3Vu
dXNlZDIgICh2b2lkKSB7IHJldHVybiAgOTkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9j
dXJyZW50Rm9ybSAgKHZvaWQpIHsgcmV0dXJuICAxMDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9pbnNQdElzRW5hYmxlZCAgKHZvaWQpIHsgcmV0dXJuICAxMDQgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9pbnNQdE9uICAodm9pZCkgeyByZXR1cm4gIDEwNSA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2luc1B0TG9jICAodm9pZCkgeyByZXR1cm4gIDEwNiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0SGVpZ2h0ICAodm9pZCkgeyByZXR1cm4gIDExMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0TGFzdFRpY2sgICh2b2lkKSB7IHJldHVybiAg
MTEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRCaXRzQmVoaW5kICAodm9pZCkg
eyByZXR1cm4gIDExNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NsaXBib2FyZCAgKHZv
aWQpIHsgcmV0dXJuICAxMjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUN1cnJlbnRN
ZW51ICAodm9pZCkgeyByZXR1cm4gIDEzOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Vp
Q3VycmVudE1lbnVSc2NJRCAgKHZvaWQpIHsgcmV0dXJuICAxNDIgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl91bmRvR2xvYmFscyAgKHZvaWQpIHsgcmV0dXJuICAxNDQgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9nc2lTdGF0ZSAgKHZvaWQpIHsgcmV0dXJuICAxNTYgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9nc2lJc0VuYWJsZWQgICh2b2lkKSB7IHJldHVybiAgMTU3IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ3NpTG9jYXRpb24gICh2b2lkKSB7IHJldHVybiAg
MTU4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlEZWNpbWFsU2VwYXJhdG9yICAodm9p
ZCkgeyByZXR1cm4gIDE2MiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVVJR2xvYmFsc1R5cGVWMyAg
CXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5VUlHbG9iYWxzVHlwZVYz
ICAJKHZvaWQpOwlFbVByb3h5VUlHbG9iYWxzVHlwZVYzICAJKGNvbnN0IEVtUHJveHlVSUdsb2Jh
bHNUeXBlVjMgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0
cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsg
cmV0dXJuICAgICAxNjMgIDsgfQlFbVByb3h5VUlHbG9iYWxzVHlwZVYzICAmCQlvcGVyYXRvcj0g
KGNvbnN0IEVtUHJveHlVSUdsb2JhbHNUeXBlVjMgICYpOwlFbUFsaWFzVUlHbG9iYWxzVHlwZVYz
ICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzVUlHbG9iYWxzVHlwZVYzICA8
TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5
dGVzWyAgICAxNjMgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNlbXVwdHIg
PExBUz4JIAkJCQkJCWFjdGl2ZVdpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJ
ZGlzcGxheVdpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZHJhd1dpbmRvdyA7
IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZmlyc3RXaW5kb3cgOyAJIEVtQWxpYXNlbXVw
dHIgPExBUz4JIAkJCQkJCWV4aXRXaW5kb3dJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJ
CQkJZW50ZXJXaW5kb3dJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZXhpdGVkV2lu
ZG93SUQgOyAJIEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjIgPExBUz4JIAkJCWdTdGF0ZSA7IAkg
RW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZXZlbnRRIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+
CSAJCQkJCQlldmVudFFJbmRleCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJZXZlbnRR
TGVuZ3RoIDsgCSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWxhc3RTY3JlZW5YIDsgCSBFbUFs
aWFzSW50MTYgPExBUz4JIAkJCQkJCWxhc3RTY3JlZW5ZIDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFT
PgkgCQkJCQlsYXN0UGVuRG93biA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlfdW51c2Vk
MSA7IAkgRW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJCQluZWVkTnVsbFRpY2tDb3VudCA7IAkgRW1B
bGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJdWlDdXJyZW50Rm9udFB0ciA7IAkgRW1BbGlhc2VtdXB0
ciA8TEFTPgkgCQkJCQkJdWlTeXNGb250VGFibGVQdHIgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4J
IAkJCQkJCXVpQXBwRm9udFRhYmxlUHRyIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQl1
aU51bVN5c0ZvbnRzIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQl1aU51bUFwcEZvbnRz
IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQl1aVVudXNlZDEgOyAJIEVtQWxpYXNVSW50
MzIgPExBUz4JIAkJCQkJCXVpVW51c2VkMiA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQl1
aUN1cnJlbnRGb250SUQgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJX3VudXNlZDIgOyAJ
IEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWN1cnJlbnRGb3JtIDsgCSBFbUFsaWFzQm9vbGVh
biA8TEFTPgkgCQkJCQlpbnNQdElzRW5hYmxlZCA7IAkgRW1BbGlhc0Jvb2xlYW4gPExBUz4JIAkJ
CQkJaW5zUHRPbiA7IAkgRW1BbGlhc1BvaW50VHlwZSA8TEFTPgkgCQkJCQlpbnNQdExvYyA7IAkg
RW1BbGlhc0ludDE2IDxMQVM+CSAJCQkJCQlpbnNQdEhlaWdodCA7IAkgRW1BbGlhc0ludDMyIDxM
QVM+CSAJCQkJCQlpbnNQdExhc3RUaWNrIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlp
bnNQdEJpdHNCZWhpbmQgOyAJIEVtQWxpYXNDbGlwYm9hcmRJdGVtIDxMQVM+CSAJCQkJY2xpcGJv
YXJkIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQl1aUN1cnJlbnRNZW51IDsgCSBFbUFs
aWFzVUludDE2IDxMQVM+CSAJCQkJCQl1aUN1cnJlbnRNZW51UnNjSUQgOyAJIEVtQWxpYXNGaWVs
ZFVuZG9UeXBlIDxMQVM+CSAJCQkJdW5kb0dsb2JhbHMgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkg
CQkJCQkJZ3NpU3RhdGUgOyAJIEVtQWxpYXNCb29sZWFuIDxMQVM+CSAJCQkJCWdzaUlzRW5hYmxl
ZCA7IAkgRW1BbGlhc1BvaW50VHlwZSA8TEFTPgkgCQkJCQlnc2lMb2NhdGlvbiA7IAkgRW1BbGlh
c0NoYXIgPExBUz4JIAkJCQkJCXVpRGVjaW1hbFNlcGFyYXRvciA7ICAJICAgICBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2FjdGl2ZVdpbmRvdyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZGlzcGxheVdpbmRvdyAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZHJhd1dpbmRvdyAgKHZvaWQpIHsgcmV0dXJuICA4IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmlyc3RXaW5kb3cgICh2b2lkKSB7IHJldHVybiAg
MTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9leGl0V2luZG93SUQgICh2b2lkKSB7IHJl
dHVybiAgMTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9lbnRlcldpbmRvd0lEICAodm9p
ZCkgeyByZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXhpdGVkV2luZG93
SUQgICh2b2lkKSB7IHJldHVybiAgMjQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nU3Rh
dGUgICh2b2lkKSB7IHJldHVybiAgMjggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ldmVu
dFEgICh2b2lkKSB7IHJldHVybiAgNTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ldmVu
dFFJbmRleCAgKHZvaWQpIHsgcmV0dXJuICA2MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2V2ZW50UUxlbmd0aCAgKHZvaWQpIHsgcmV0dXJuICA2MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2xhc3RTY3JlZW5YICAodm9pZCkgeyByZXR1cm4gIDY0IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfbGFzdFNjcmVlblkgICh2b2lkKSB7IHJldHVybiAgNjYgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9sYXN0UGVuRG93biAgKHZvaWQpIHsgcmV0dXJuICA2OCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX191bnVzZWQxICAodm9pZCkgeyByZXR1cm4gIDY5IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmVlZE51bGxUaWNrQ291bnQgICh2b2lkKSB7IHJldHVy
biAgNzAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUN1cnJlbnRGb250UHRyICAodm9p
ZCkgeyByZXR1cm4gIDc0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlTeXNGb250VGFi
bGVQdHIgICh2b2lkKSB7IHJldHVybiAgNzggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91
aUFwcEZvbnRUYWJsZVB0ciAgKHZvaWQpIHsgcmV0dXJuICA4MiA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3VpTnVtU3lzRm9udHMgICh2b2lkKSB7IHJldHVybiAgODYgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl91aU51bUFwcEZvbnRzICAodm9pZCkgeyByZXR1cm4gIDg4IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlVbnVzZWQxICAodm9pZCkgeyByZXR1cm4gIDkwIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlVbnVzZWQyICAodm9pZCkgeyByZXR1cm4gIDk0
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJyZW50Rm9udElEICAodm9pZCkgeyBy
ZXR1cm4gIDk4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX3VudXNlZDIgICh2b2lkKSB7
IHJldHVybiAgOTkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jdXJyZW50Rm9ybSAgKHZv
aWQpIHsgcmV0dXJuICAxMDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnNQdElzRW5h
YmxlZCAgKHZvaWQpIHsgcmV0dXJuICAxMDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9p
bnNQdE9uICAodm9pZCkgeyByZXR1cm4gIDEwNSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2luc1B0TG9jICAodm9pZCkgeyByZXR1cm4gIDEwNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2luc1B0SGVpZ2h0ICAodm9pZCkgeyByZXR1cm4gIDExMCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2luc1B0TGFzdFRpY2sgICh2b2lkKSB7IHJldHVybiAgMTEyIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRCaXRzQmVoaW5kICAodm9pZCkgeyByZXR1cm4gIDExNiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NsaXBib2FyZCAgKHZvaWQpIHsgcmV0dXJuICAx
MjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUN1cnJlbnRNZW51ICAodm9pZCkgeyBy
ZXR1cm4gIDEzOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQ3VycmVudE1lbnVSc2NJ
RCAgKHZvaWQpIHsgcmV0dXJuICAxNDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91bmRv
R2xvYmFscyAgKHZvaWQpIHsgcmV0dXJuICAxNDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9nc2lTdGF0ZSAgKHZvaWQpIHsgcmV0dXJuICAxNTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9nc2lJc0VuYWJsZWQgICh2b2lkKSB7IHJldHVybiAgMTU3IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZ3NpTG9jYXRpb24gICh2b2lkKSB7IHJldHVybiAgMTU4IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdWlEZWNpbWFsU2VwYXJhdG9yICAodm9pZCkgeyByZXR1cm4gIDE2
MiA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzVUlHbG9iYWxz
VHlwZVYzMSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBl
OwlFbUFsaWFzVUlHbG9iYWxzVHlwZVYzMSAgCShwdHJfdHlwZSk7CUVtQWxpYXNVSUdsb2JhbHNU
eXBlVjMxICAJKGNvbnN0IEVtQWxpYXNVSUdsb2JhbHNUeXBlVjMxICAmKTsJcHRyX3R5cGUJCQlH
ZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6
ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTYzICA7IH0JRW1BbGlhc1VJR2xvYmFsc1R5cGVWMzEg
IDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzVUlHbG9iYWxzVHlwZVYzMSAgPEE+Jik7CUVt
QWxpYXNVSUdsb2JhbHNUeXBlVjMxICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlh
c1VJR2xvYmFsc1R5cGVWMzEgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglF
bUFsaWFzVUlHbG9iYWxzVHlwZVYzMSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6
CSAgICAgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWFjdGl2ZVdpbmRvdyA7IAkgRW1BbGlhc2Vt
dXB0ciA8QT4JIAkJCQkJCWRpc3BsYXlXaW5kb3cgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJ
CQlkcmF3V2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZmlyc3RXaW5kb3cgOyAJ
IEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlleGl0V2luZG93SUQgOyAJIEVtQWxpYXNlbXVwdHIg
PEE+CSAJCQkJCQllbnRlcldpbmRvd0lEIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZXhp
dGVkV2luZG93SUQgOyAJIEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjIgPEE+CSAJCQlnU3RhdGUg
OyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlldmVudFEgOyAJIEVtQWxpYXNVSW50MTYgPEE+
CSAJCQkJCQlldmVudFFJbmRleCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWV2ZW50UUxl
bmd0aCA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJbGFzdFNjcmVlblggOyAJIEVtQWxpYXNJ
bnQxNiA8QT4JIAkJCQkJCWxhc3RTY3JlZW5ZIDsgCSBFbUFsaWFzQm9vbGVhbiA8QT4JIAkJCQkJ
bGFzdFBlbkRvd24gOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCV91bnVzZWQxIDsgCSBFbUFs
aWFzSW50MzIgPEE+CSAJCQkJCQluZWVkTnVsbFRpY2tDb3VudCA7IAkgRW1BbGlhc2VtdXB0ciA8
QT4JIAkJCQkJCXVpQ3VycmVudEZvbnRQdHIgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQl1
aVN5c0ZvbnRUYWJsZVB0ciA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXVpQXBwRm9udFRh
YmxlUHRyIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJdWlOdW1TeXNGb250cyA7IAkgRW1B
bGlhc1VJbnQxNiA8QT4JIAkJCQkJCXVpTnVtQXBwRm9udHMgOyAJIEVtQWxpYXNVSW50MzIgPEE+
CSAJCQkJCQl1aUZvbnRMaXN0UHRyIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJdWlVbnVz
ZWQyIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQl1aUN1cnJlbnRGb250SUQgOyAJIEVtQWxp
YXNJbnQxNiA8QT4JIAkJCQkJCV91bnVzZWQyIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJ
Y3VycmVudEZvcm0gOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQlpbnNQdElzRW5hYmxlZCA7
IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJCWluc1B0T24gOyAJIEVtQWxpYXNQb2ludFR5cGUg
PEE+CSAJCQkJCWluc1B0TG9jIDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQlpbnNQdEhlaWdo
dCA7IAkgRW1BbGlhc0ludDMyIDxBPgkgCQkJCQkJaW5zUHRMYXN0VGljayA7IAkgRW1BbGlhc2Vt
dXB0ciA8QT4JIAkJCQkJCWluc1B0Qml0c0JlaGluZCA7IAkgRW1BbGlhc0NsaXBib2FyZEl0ZW0g
PEE+CSAJCQkJY2xpcGJvYXJkIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJdWlDdXJyZW50
TWVudSA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXVpQ3VycmVudE1lbnVSc2NJRCA7IAkg
RW1BbGlhc0ZpZWxkVW5kb1R5cGUgPEE+CSAJCQkJdW5kb0dsb2JhbHMgOyAJIEVtQWxpYXNVSW50
OCA8QT4JIAkJCQkJCWdzaVN0YXRlIDsgCSBFbUFsaWFzQm9vbGVhbiA8QT4JIAkJCQkJZ3NpSXNF
bmFibGVkIDsgCSBFbUFsaWFzUG9pbnRUeXBlIDxBPgkgCQkJCQlnc2lMb2NhdGlvbiA7IAkgRW1B
bGlhc0NoYXIgPEE+CSAJCQkJCQl1aURlY2ltYWxTZXBhcmF0b3IgOyAgCSAgICAgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9hY3RpdmVXaW5kb3cgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2Rpc3BsYXlXaW5kb3cgICh2b2lkKSB7IHJldHVybiAgNCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RyYXdXaW5kb3cgICh2b2lkKSB7IHJldHVybiAgOCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZpcnN0V2luZG93ICAodm9pZCkgeyByZXR1cm4g
IDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXhpdFdpbmRvd0lEICAodm9pZCkgeyBy
ZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZW50ZXJXaW5kb3dJRCAgKHZv
aWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V4aXRlZFdpbmRv
d0lEICAodm9pZCkgeyByZXR1cm4gIDI0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ1N0
YXRlICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXZl
bnRRICAodm9pZCkgeyByZXR1cm4gIDU2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXZl
bnRRSW5kZXggICh2b2lkKSB7IHJldHVybiAgNjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9ldmVudFFMZW5ndGggICh2b2lkKSB7IHJldHVybiAgNjIgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9sYXN0U2NyZWVuWCAgKHZvaWQpIHsgcmV0dXJuICA2NCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2xhc3RTY3JlZW5ZICAodm9pZCkgeyByZXR1cm4gIDY2IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfbGFzdFBlbkRvd24gICh2b2lkKSB7IHJldHVybiAgNjggOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9fdW51c2VkMSAgKHZvaWQpIHsgcmV0dXJuICA2OSA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25lZWROdWxsVGlja0NvdW50ICAodm9pZCkgeyByZXR1
cm4gIDcwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJyZW50Rm9udFB0ciAgKHZv
aWQpIHsgcmV0dXJuICA3NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpU3lzRm9udFRh
YmxlUHRyICAodm9pZCkgeyByZXR1cm4gIDc4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
dWlBcHBGb250VGFibGVQdHIgICh2b2lkKSB7IHJldHVybiAgODIgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl91aU51bVN5c0ZvbnRzICAodm9pZCkgeyByZXR1cm4gIDg2IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdWlOdW1BcHBGb250cyAgKHZvaWQpIHsgcmV0dXJuICA4OCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpRm9udExpc3RQdHIgICh2b2lkKSB7IHJldHVybiAg
OTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aVVudXNlZDIgICh2b2lkKSB7IHJldHVy
biAgOTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUN1cnJlbnRGb250SUQgICh2b2lk
KSB7IHJldHVybiAgOTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fdW51c2VkMiAgKHZv
aWQpIHsgcmV0dXJuICA5OSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2N1cnJlbnRGb3Jt
ICAodm9pZCkgeyByZXR1cm4gIDEwMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0
SXNFbmFibGVkICAodm9pZCkgeyByZXR1cm4gIDEwNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2luc1B0T24gICh2b2lkKSB7IHJldHVybiAgMTA1IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfaW5zUHRMb2MgICh2b2lkKSB7IHJldHVybiAgMTA2IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfaW5zUHRIZWlnaHQgICh2b2lkKSB7IHJldHVybiAgMTEwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfaW5zUHRMYXN0VGljayAgKHZvaWQpIHsgcmV0dXJuICAxMTIgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnNQdEJpdHNCZWhpbmQgICh2b2lkKSB7IHJldHVybiAg
MTE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2xpcGJvYXJkICAodm9pZCkgeyByZXR1
cm4gIDEyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQ3VycmVudE1lbnUgICh2b2lk
KSB7IHJldHVybiAgMTM4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJyZW50TWVu
dVJzY0lEICAodm9pZCkgeyByZXR1cm4gIDE0MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3VuZG9HbG9iYWxzICAodm9pZCkgeyByZXR1cm4gIDE0NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2dzaVN0YXRlICAodm9pZCkgeyByZXR1cm4gIDE1NiA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2dzaUlzRW5hYmxlZCAgKHZvaWQpIHsgcmV0dXJuICAxNTcgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9nc2lMb2NhdGlvbiAgKHZvaWQpIHsgcmV0dXJuICAxNTggOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl91aURlY2ltYWxTZXBhcmF0b3IgICh2b2lkKSB7IHJldHVy
biAgMTYyIDsgfSAgCX07IAljbGFzcyBFbVByb3h5VUlHbG9iYWxzVHlwZVYzMSAgCXsJcHVibGlj
Ogl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5VUlHbG9iYWxzVHlwZVYzMSAgCSh2b2lk
KTsJRW1Qcm94eVVJR2xvYmFsc1R5cGVWMzEgIAkoY29uc3QgRW1Qcm94eVVJR2xvYmFsc1R5cGVW
MzEgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBl
KSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJu
ICAgICAxNjMgIDsgfQlFbVByb3h5VUlHbG9iYWxzVHlwZVYzMSAgJgkJb3BlcmF0b3I9IChjb25z
dCBFbVByb3h5VUlHbG9iYWxzVHlwZVYzMSAgJik7CUVtQWxpYXNVSUdsb2JhbHNUeXBlVjMxICA8
TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzVUlHbG9iYWxzVHlwZVYzMSAgPExB
Uz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRl
c1sgICAgMTYzICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzZW11cHRyIDxM
QVM+CSAJCQkJCQlhY3RpdmVXaW5kb3cgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWRp
c3BsYXlXaW5kb3cgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWRyYXdXaW5kb3cgOyAJ
IEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWZpcnN0V2luZG93IDsgCSBFbUFsaWFzZW11cHRy
IDxMQVM+CSAJCQkJCQlleGl0V2luZG93SUQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJ
CWVudGVyV2luZG93SUQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWV4aXRlZFdpbmRv
d0lEIDsgCSBFbUFsaWFzR3JhcGhpY1N0YXRlVHlwZVYyIDxMQVM+CSAJCQlnU3RhdGUgOyAJIEVt
QWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWV2ZW50USA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkg
CQkJCQkJZXZlbnRRSW5kZXggOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWV2ZW50UUxl
bmd0aCA7IAkgRW1BbGlhc0ludDE2IDxMQVM+CSAJCQkJCQlsYXN0U2NyZWVuWCA7IAkgRW1BbGlh
c0ludDE2IDxMQVM+CSAJCQkJCQlsYXN0U2NyZWVuWSA7IAkgRW1BbGlhc0Jvb2xlYW4gPExBUz4J
IAkJCQkJbGFzdFBlbkRvd24gOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJX3VudXNlZDEg
OyAJIEVtQWxpYXNJbnQzMiA8TEFTPgkgCQkJCQkJbmVlZE51bGxUaWNrQ291bnQgOyAJIEVtQWxp
YXNlbXVwdHIgPExBUz4JIAkJCQkJCXVpQ3VycmVudEZvbnRQdHIgOyAJIEVtQWxpYXNlbXVwdHIg
PExBUz4JIAkJCQkJCXVpU3lzRm9udFRhYmxlUHRyIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJ
CQkJCQl1aUFwcEZvbnRUYWJsZVB0ciA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJdWlO
dW1TeXNGb250cyA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJdWlOdW1BcHBGb250cyA7
IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJdWlGb250TGlzdFB0ciA7IAkgRW1BbGlhc1VJ
bnQzMiA8TEFTPgkgCQkJCQkJdWlVbnVzZWQyIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJ
CXVpQ3VycmVudEZvbnRJRCA7IAkgRW1BbGlhc0ludDE2IDxMQVM+CSAJCQkJCQlfdW51c2VkMiA7
IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJY3VycmVudEZvcm0gOyAJIEVtQWxpYXNCb29s
ZWFuIDxMQVM+CSAJCQkJCWluc1B0SXNFbmFibGVkIDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkg
CQkJCQlpbnNQdE9uIDsgCSBFbUFsaWFzUG9pbnRUeXBlIDxMQVM+CSAJCQkJCWluc1B0TG9jIDsg
CSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWluc1B0SGVpZ2h0IDsgCSBFbUFsaWFzSW50MzIg
PExBUz4JIAkJCQkJCWluc1B0TGFzdFRpY2sgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJ
CWluc1B0Qml0c0JlaGluZCA7IAkgRW1BbGlhc0NsaXBib2FyZEl0ZW0gPExBUz4JIAkJCQljbGlw
Ym9hcmQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXVpQ3VycmVudE1lbnUgOyAJIEVt
QWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXVpQ3VycmVudE1lbnVSc2NJRCA7IAkgRW1BbGlhc0Zp
ZWxkVW5kb1R5cGUgPExBUz4JIAkJCQl1bmRvR2xvYmFscyA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+
CSAJCQkJCQlnc2lTdGF0ZSA7IAkgRW1BbGlhc0Jvb2xlYW4gPExBUz4JIAkJCQkJZ3NpSXNFbmFi
bGVkIDsgCSBFbUFsaWFzUG9pbnRUeXBlIDxMQVM+CSAJCQkJCWdzaUxvY2F0aW9uIDsgCSBFbUFs
aWFzQ2hhciA8TEFTPgkgCQkJCQkJdWlEZWNpbWFsU2VwYXJhdG9yIDsgIAkgICAgIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfYWN0aXZlV2luZG93ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9kaXNwbGF5V2luZG93ICAodm9pZCkgeyByZXR1cm4gIDQgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kcmF3V2luZG93ICAodm9pZCkgeyByZXR1cm4gIDgg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9maXJzdFdpbmRvdyAgKHZvaWQpIHsgcmV0dXJu
ICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V4aXRXaW5kb3dJRCAgKHZvaWQpIHsg
cmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2VudGVyV2luZG93SUQgICh2
b2lkKSB7IHJldHVybiAgMjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9leGl0ZWRXaW5k
b3dJRCAgKHZvaWQpIHsgcmV0dXJuICAyNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dT
dGF0ZSAgKHZvaWQpIHsgcmV0dXJuICAyOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V2
ZW50USAgKHZvaWQpIHsgcmV0dXJuICA1NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V2
ZW50UUluZGV4ICAodm9pZCkgeyByZXR1cm4gIDYwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZXZlbnRRTGVuZ3RoICAodm9pZCkgeyByZXR1cm4gIDYyIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfbGFzdFNjcmVlblggICh2b2lkKSB7IHJldHVybiAgNjQgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9sYXN0U2NyZWVuWSAgKHZvaWQpIHsgcmV0dXJuICA2NiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2xhc3RQZW5Eb3duICAodm9pZCkgeyByZXR1cm4gIDY4IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX3VudXNlZDEgICh2b2lkKSB7IHJldHVybiAgNjkgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uZWVkTnVsbFRpY2tDb3VudCAgKHZvaWQpIHsgcmV0
dXJuICA3MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQ3VycmVudEZvbnRQdHIgICh2
b2lkKSB7IHJldHVybiAgNzQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aVN5c0ZvbnRU
YWJsZVB0ciAgKHZvaWQpIHsgcmV0dXJuICA3OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3VpQXBwRm9udFRhYmxlUHRyICAodm9pZCkgeyByZXR1cm4gIDgyIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfdWlOdW1TeXNGb250cyAgKHZvaWQpIHsgcmV0dXJuICA4NiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3VpTnVtQXBwRm9udHMgICh2b2lkKSB7IHJldHVybiAgODggOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUZvbnRMaXN0UHRyICAodm9pZCkgeyByZXR1cm4g
IDkwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlVbnVzZWQyICAodm9pZCkgeyByZXR1
cm4gIDk0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJyZW50Rm9udElEICAodm9p
ZCkgeyByZXR1cm4gIDk4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX3VudXNlZDIgICh2
b2lkKSB7IHJldHVybiAgOTkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jdXJyZW50Rm9y
bSAgKHZvaWQpIHsgcmV0dXJuICAxMDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnNQ
dElzRW5hYmxlZCAgKHZvaWQpIHsgcmV0dXJuICAxMDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9pbnNQdE9uICAodm9pZCkgeyByZXR1cm4gIDEwNSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2luc1B0TG9jICAodm9pZCkgeyByZXR1cm4gIDEwNiA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2luc1B0SGVpZ2h0ICAodm9pZCkgeyByZXR1cm4gIDExMCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2luc1B0TGFzdFRpY2sgICh2b2lkKSB7IHJldHVybiAgMTEyIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRCaXRzQmVoaW5kICAodm9pZCkgeyByZXR1cm4g
IDExNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NsaXBib2FyZCAgKHZvaWQpIHsgcmV0
dXJuICAxMjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUN1cnJlbnRNZW51ICAodm9p
ZCkgeyByZXR1cm4gIDEzOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQ3VycmVudE1l
bnVSc2NJRCAgKHZvaWQpIHsgcmV0dXJuICAxNDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl91bmRvR2xvYmFscyAgKHZvaWQpIHsgcmV0dXJuICAxNDQgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9nc2lTdGF0ZSAgKHZvaWQpIHsgcmV0dXJuICAxNTYgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9nc2lJc0VuYWJsZWQgICh2b2lkKSB7IHJldHVybiAgMTU3IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZ3NpTG9jYXRpb24gICh2b2lkKSB7IHJldHVybiAgMTU4IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlEZWNpbWFsU2VwYXJhdG9yICAodm9pZCkgeyByZXR1
cm4gIDE2MiA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzVUlH
bG9iYWxzVHlwZVYzMiAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0
cl90eXBlOwlFbUFsaWFzVUlHbG9iYWxzVHlwZVYzMiAgCShwdHJfdHlwZSk7CUVtQWxpYXNVSUds
b2JhbHNUeXBlVjMyICAJKGNvbnN0IEVtQWxpYXNVSUdsb2JhbHNUeXBlVjMyICAmKTsJcHRyX3R5
cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJ
R2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTYzICA7IH0JRW1BbGlhc1VJR2xvYmFsc1R5
cGVWMzIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzVUlHbG9iYWxzVHlwZVYzMiAgPEE+
Jik7CUVtQWxpYXNVSUdsb2JhbHNUeXBlVjMyICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3Qg
RW1BbGlhc1VJR2xvYmFsc1R5cGVWMzIgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2
YXRlOglFbUFsaWFzVUlHbG9iYWxzVHlwZVYzMiAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlw
dWJsaWM6CSAgICAgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWFjdGl2ZVdpbmRvdyA7IAkgRW1B
bGlhc2VtdXB0ciA8QT4JIAkJCQkJCWRpc3BsYXlXaW5kb3cgOyAJIEVtQWxpYXNlbXVwdHIgPEE+
CSAJCQkJCQlkcmF3V2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZmlyc3RXaW5k
b3cgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlleGl0V2luZG93SUQgOyAJIEVtQWxpYXNl
bXVwdHIgPEE+CSAJCQkJCQllbnRlcldpbmRvd0lEIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJ
CQkJZXhpdGVkV2luZG93SUQgOyAJIEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjIgPEE+CSAJCQln
U3RhdGUgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlldmVudFEgOyAJIEVtQWxpYXNVSW50
MTYgPEE+CSAJCQkJCQlldmVudFFJbmRleCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWV2
ZW50UUxlbmd0aCA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJbGFzdFNjcmVlblggOyAJIEVt
QWxpYXNJbnQxNiA8QT4JIAkJCQkJCWxhc3RTY3JlZW5ZIDsgCSBFbUFsaWFzQm9vbGVhbiA8QT4J
IAkJCQkJbGFzdFBlbkRvd24gOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCV91bnVzZWQxIDsg
CSBFbUFsaWFzSW50MzIgPEE+CSAJCQkJCQluZWVkTnVsbFRpY2tDb3VudCA7IAkgRW1BbGlhc2Vt
dXB0ciA8QT4JIAkJCQkJCXVpQ3VycmVudEZvbnRQdHIgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJ
CQkJCQl1aVN5c0ZvbnRUYWJsZVB0ciA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXVpQXBw
Rm9udFRhYmxlUHRyIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJdWlOdW1TeXNGb250cyA7
IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXVpTnVtQXBwRm9udHMgOyAJIEVtQWxpYXNVSW50
MzIgPEE+CSAJCQkJCQl1aUZvbnRMaXN0UHRyIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJ
cm9vdFdpbmRvdyA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJdWlDdXJyZW50Rm9udElEIDsg
CSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQlfdW51c2VkMiA7IAkgRW1BbGlhc2VtdXB0ciA8QT4J
IAkJCQkJCWN1cnJlbnRGb3JtIDsgCSBFbUFsaWFzQm9vbGVhbiA8QT4JIAkJCQkJaW5zUHRJc0Vu
YWJsZWQgOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQlpbnNQdE9uIDsgCSBFbUFsaWFzUG9p
bnRUeXBlIDxBPgkgCQkJCQlpbnNQdExvYyA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJaW5z
UHRIZWlnaHQgOyAJIEVtQWxpYXNJbnQzMiA8QT4JIAkJCQkJCWluc1B0TGFzdFRpY2sgOyAJIEVt
QWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlpbnNQdEJpdHNCZWhpbmQgOyAJIEVtQWxpYXNDbGlwYm9h
cmRJdGVtIDxBPgkgCQkJCWNsaXBib2FyZCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXVp
Q3VycmVudE1lbnUgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQl1aUN1cnJlbnRNZW51UnNj
SUQgOyAJIEVtQWxpYXNGaWVsZFVuZG9UeXBlIDxBPgkgCQkJCXVuZG9HbG9iYWxzIDsgCSBFbUFs
aWFzVUludDggPEE+CSAJCQkJCQlnc2lTdGF0ZSA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJ
CWdzaUlzRW5hYmxlZCA7IAkgRW1BbGlhc1BvaW50VHlwZSA8QT4JIAkJCQkJZ3NpTG9jYXRpb24g
OyAJIEVtQWxpYXNDaGFyIDxBPgkgCQkJCQkJdWlEZWNpbWFsU2VwYXJhdG9yIDsgIAkgICAgIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWN0aXZlV2luZG93ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kaXNwbGF5V2luZG93ICAodm9pZCkgeyByZXR1cm4g
IDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kcmF3V2luZG93ICAodm9pZCkgeyByZXR1
cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9maXJzdFdpbmRvdyAgKHZvaWQpIHsg
cmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V4aXRXaW5kb3dJRCAgKHZv
aWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2VudGVyV2luZG93
SUQgICh2b2lkKSB7IHJldHVybiAgMjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9leGl0
ZWRXaW5kb3dJRCAgKHZvaWQpIHsgcmV0dXJuICAyNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2dTdGF0ZSAgKHZvaWQpIHsgcmV0dXJuICAyOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2V2ZW50USAgKHZvaWQpIHsgcmV0dXJuICA1NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2V2ZW50UUluZGV4ICAodm9pZCkgeyByZXR1cm4gIDYwIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfZXZlbnRRTGVuZ3RoICAodm9pZCkgeyByZXR1cm4gIDYyIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfbGFzdFNjcmVlblggICh2b2lkKSB7IHJldHVybiAgNjQgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9sYXN0U2NyZWVuWSAgKHZvaWQpIHsgcmV0dXJuICA2NiA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xhc3RQZW5Eb3duICAodm9pZCkgeyByZXR1cm4gIDY4
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX3VudXNlZDEgICh2b2lkKSB7IHJldHVybiAg
NjkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uZWVkTnVsbFRpY2tDb3VudCAgKHZvaWQp
IHsgcmV0dXJuICA3MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQ3VycmVudEZvbnRQ
dHIgICh2b2lkKSB7IHJldHVybiAgNzQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aVN5
c0ZvbnRUYWJsZVB0ciAgKHZvaWQpIHsgcmV0dXJuICA3OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3VpQXBwRm9udFRhYmxlUHRyICAodm9pZCkgeyByZXR1cm4gIDgyIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdWlOdW1TeXNGb250cyAgKHZvaWQpIHsgcmV0dXJuICA4NiA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpTnVtQXBwRm9udHMgICh2b2lkKSB7IHJldHVybiAg
ODggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUZvbnRMaXN0UHRyICAodm9pZCkgeyBy
ZXR1cm4gIDkwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfcm9vdFdpbmRvdyAgKHZvaWQp
IHsgcmV0dXJuICA5NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQ3VycmVudEZvbnRJ
RCAgKHZvaWQpIHsgcmV0dXJuICA5OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX191bnVz
ZWQyICAodm9pZCkgeyByZXR1cm4gIDk5IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY3Vy
cmVudEZvcm0gICh2b2lkKSB7IHJldHVybiAgMTAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfaW5zUHRJc0VuYWJsZWQgICh2b2lkKSB7IHJldHVybiAgMTA0IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfaW5zUHRPbiAgKHZvaWQpIHsgcmV0dXJuICAxMDUgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9pbnNQdExvYyAgKHZvaWQpIHsgcmV0dXJuICAxMDYgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9pbnNQdEhlaWdodCAgKHZvaWQpIHsgcmV0dXJuICAxMTAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnNQdExhc3RUaWNrICAodm9pZCkgeyByZXR1cm4gIDEx
MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0Qml0c0JlaGluZCAgKHZvaWQpIHsg
cmV0dXJuICAxMTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jbGlwYm9hcmQgICh2b2lk
KSB7IHJldHVybiAgMTIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJyZW50TWVu
dSAgKHZvaWQpIHsgcmV0dXJuICAxMzggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUN1
cnJlbnRNZW51UnNjSUQgICh2b2lkKSB7IHJldHVybiAgMTQyIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfdW5kb0dsb2JhbHMgICh2b2lkKSB7IHJldHVybiAgMTQ0IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfZ3NpU3RhdGUgICh2b2lkKSB7IHJldHVybiAgMTU2IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZ3NpSXNFbmFibGVkICAodm9pZCkgeyByZXR1cm4gIDE1NyA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dzaUxvY2F0aW9uICAodm9pZCkgeyByZXR1cm4gIDE1
OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpRGVjaW1hbFNlcGFyYXRvciAgKHZvaWQp
IHsgcmV0dXJuICAxNjIgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlVSUdsb2JhbHNUeXBlVjMyICAJ
ewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlVSUdsb2JhbHNUeXBlVjMy
ICAJKHZvaWQpOwlFbVByb3h5VUlHbG9iYWxzVHlwZVYzMiAgCShjb25zdCBFbVByb3h5VUlHbG9i
YWxzVHlwZVYzMiAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAo
cHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJ
eyByZXR1cm4gICAgIDE2MyAgOyB9CUVtUHJveHlVSUdsb2JhbHNUeXBlVjMyICAmCQlvcGVyYXRv
cj0gKGNvbnN0IEVtUHJveHlVSUdsb2JhbHNUeXBlVjMyICAmKTsJRW1BbGlhc1VJR2xvYmFsc1R5
cGVWMzIgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNVSUdsb2JhbHNUeXBl
VjMyICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFy
CQkJX2J5dGVzWyAgICAxNjMgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNl
bXVwdHIgPExBUz4JIAkJCQkJCWFjdGl2ZVdpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkg
CQkJCQkJZGlzcGxheVdpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZHJhd1dp
bmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZmlyc3RXaW5kb3cgOyAJIEVtQWxp
YXNlbXVwdHIgPExBUz4JIAkJCQkJCWV4aXRXaW5kb3dJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFT
PgkgCQkJCQkJZW50ZXJXaW5kb3dJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZXhp
dGVkV2luZG93SUQgOyAJIEVtQWxpYXNHcmFwaGljU3RhdGVUeXBlVjIgPExBUz4JIAkJCWdTdGF0
ZSA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZXZlbnRRIDsgCSBFbUFsaWFzVUludDE2
IDxMQVM+CSAJCQkJCQlldmVudFFJbmRleCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJ
ZXZlbnRRTGVuZ3RoIDsgCSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWxhc3RTY3JlZW5YIDsg
CSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWxhc3RTY3JlZW5ZIDsgCSBFbUFsaWFzQm9vbGVh
biA8TEFTPgkgCQkJCQlsYXN0UGVuRG93biA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlf
dW51c2VkMSA7IAkgRW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJCQluZWVkTnVsbFRpY2tDb3VudCA7
IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJdWlDdXJyZW50Rm9udFB0ciA7IAkgRW1BbGlh
c2VtdXB0ciA8TEFTPgkgCQkJCQkJdWlTeXNGb250VGFibGVQdHIgOyAJIEVtQWxpYXNlbXVwdHIg
PExBUz4JIAkJCQkJCXVpQXBwRm9udFRhYmxlUHRyIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJ
CQkJCQl1aU51bVN5c0ZvbnRzIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQl1aU51bUFw
cEZvbnRzIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQl1aUZvbnRMaXN0UHRyIDsgCSBF
bUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlyb290V2luZG93IDsgCSBFbUFsaWFzVUludDggPExB
Uz4JIAkJCQkJCXVpQ3VycmVudEZvbnRJRCA7IAkgRW1BbGlhc0ludDE2IDxMQVM+CSAJCQkJCQlf
dW51c2VkMiA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJY3VycmVudEZvcm0gOyAJIEVt
QWxpYXNCb29sZWFuIDxMQVM+CSAJCQkJCWluc1B0SXNFbmFibGVkIDsgCSBFbUFsaWFzQm9vbGVh
biA8TEFTPgkgCQkJCQlpbnNQdE9uIDsgCSBFbUFsaWFzUG9pbnRUeXBlIDxMQVM+CSAJCQkJCWlu
c1B0TG9jIDsgCSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWluc1B0SGVpZ2h0IDsgCSBFbUFs
aWFzSW50MzIgPExBUz4JIAkJCQkJCWluc1B0TGFzdFRpY2sgOyAJIEVtQWxpYXNlbXVwdHIgPExB
Uz4JIAkJCQkJCWluc1B0Qml0c0JlaGluZCA7IAkgRW1BbGlhc0NsaXBib2FyZEl0ZW0gPExBUz4J
IAkJCQljbGlwYm9hcmQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXVpQ3VycmVudE1l
bnUgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXVpQ3VycmVudE1lbnVSc2NJRCA7IAkg
RW1BbGlhc0ZpZWxkVW5kb1R5cGUgPExBUz4JIAkJCQl1bmRvR2xvYmFscyA7IAkgRW1BbGlhc1VJ
bnQ4IDxMQVM+CSAJCQkJCQlnc2lTdGF0ZSA7IAkgRW1BbGlhc0Jvb2xlYW4gPExBUz4JIAkJCQkJ
Z3NpSXNFbmFibGVkIDsgCSBFbUFsaWFzUG9pbnRUeXBlIDxMQVM+CSAJCQkJCWdzaUxvY2F0aW9u
IDsgCSBFbUFsaWFzQ2hhciA8TEFTPgkgCQkJCQkJdWlEZWNpbWFsU2VwYXJhdG9yIDsgIAkgICAg
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWN0aXZlV2luZG93ICAodm9pZCkgeyByZXR1cm4gIDAg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kaXNwbGF5V2luZG93ICAodm9pZCkgeyByZXR1
cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kcmF3V2luZG93ICAodm9pZCkgeyBy
ZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9maXJzdFdpbmRvdyAgKHZvaWQp
IHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V4aXRXaW5kb3dJRCAg
KHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2VudGVyV2lu
ZG93SUQgICh2b2lkKSB7IHJldHVybiAgMjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9l
eGl0ZWRXaW5kb3dJRCAgKHZvaWQpIHsgcmV0dXJuICAyNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2dTdGF0ZSAgKHZvaWQpIHsgcmV0dXJuICAyOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2V2ZW50USAgKHZvaWQpIHsgcmV0dXJuICA1NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2V2ZW50UUluZGV4ICAodm9pZCkgeyByZXR1cm4gIDYwIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZXZlbnRRTGVuZ3RoICAodm9pZCkgeyByZXR1cm4gIDYyIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfbGFzdFNjcmVlblggICh2b2lkKSB7IHJldHVybiAgNjQgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9sYXN0U2NyZWVuWSAgKHZvaWQpIHsgcmV0dXJuICA2NiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xhc3RQZW5Eb3duICAodm9pZCkgeyByZXR1cm4g
IDY4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX3VudXNlZDEgICh2b2lkKSB7IHJldHVy
biAgNjkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uZWVkTnVsbFRpY2tDb3VudCAgKHZv
aWQpIHsgcmV0dXJuICA3MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQ3VycmVudEZv
bnRQdHIgICh2b2lkKSB7IHJldHVybiAgNzQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91
aVN5c0ZvbnRUYWJsZVB0ciAgKHZvaWQpIHsgcmV0dXJuICA3OCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3VpQXBwRm9udFRhYmxlUHRyICAodm9pZCkgeyByZXR1cm4gIDgyIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlOdW1TeXNGb250cyAgKHZvaWQpIHsgcmV0dXJuICA4NiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpTnVtQXBwRm9udHMgICh2b2lkKSB7IHJldHVy
biAgODggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUZvbnRMaXN0UHRyICAodm9pZCkg
eyByZXR1cm4gIDkwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfcm9vdFdpbmRvdyAgKHZv
aWQpIHsgcmV0dXJuICA5NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQ3VycmVudEZv
bnRJRCAgKHZvaWQpIHsgcmV0dXJuICA5OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX191
bnVzZWQyICAodm9pZCkgeyByZXR1cm4gIDk5IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
Y3VycmVudEZvcm0gICh2b2lkKSB7IHJldHVybiAgMTAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfaW5zUHRJc0VuYWJsZWQgICh2b2lkKSB7IHJldHVybiAgMTA0IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfaW5zUHRPbiAgKHZvaWQpIHsgcmV0dXJuICAxMDUgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9pbnNQdExvYyAgKHZvaWQpIHsgcmV0dXJuICAxMDYgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9pbnNQdEhlaWdodCAgKHZvaWQpIHsgcmV0dXJuICAxMTAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnNQdExhc3RUaWNrICAodm9pZCkgeyByZXR1cm4g
IDExMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0Qml0c0JlaGluZCAgKHZvaWQp
IHsgcmV0dXJuICAxMTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jbGlwYm9hcmQgICh2
b2lkKSB7IHJldHVybiAgMTIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJyZW50
TWVudSAgKHZvaWQpIHsgcmV0dXJuICAxMzggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91
aUN1cnJlbnRNZW51UnNjSUQgICh2b2lkKSB7IHJldHVybiAgMTQyIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfdW5kb0dsb2JhbHMgICh2b2lkKSB7IHJldHVybiAgMTQ0IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZ3NpU3RhdGUgICh2b2lkKSB7IHJldHVybiAgMTU2IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ3NpSXNFbmFibGVkICAodm9pZCkgeyByZXR1cm4gIDE1NyA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dzaUxvY2F0aW9uICAodm9pZCkgeyByZXR1cm4g
IDE1OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpRGVjaW1hbFNlcGFyYXRvciAgKHZv
aWQpIHsgcmV0dXJuICAxNjIgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3Mg
RW1BbGlhc1VJR2xvYmFsc1R5cGVWMzUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpw
dHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1VJR2xvYmFsc1R5cGVWMzUgIAkocHRyX3R5cGUpOwlF
bUFsaWFzVUlHbG9iYWxzVHlwZVYzNSAgCShjb25zdCBFbUFsaWFzVUlHbG9iYWxzVHlwZVYzNSAg
Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRp
YyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDE2OCAgOyB9CUVtQWxpYXNV
SUdsb2JhbHNUeXBlVjM1ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1VJR2xvYmFsc1R5
cGVWMzUgIDxBPiYpOwlFbUFsaWFzVUlHbG9iYWxzVHlwZVYzNSAgPEE+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNVSUdsb2JhbHNUeXBlVjM1ICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBj
b25zdDsJcHJpdmF0ZToJRW1BbGlhc1VJR2xvYmFsc1R5cGVWMzUgIAkodm9pZCk7CXB0cl90eXBl
CQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlhY3RpdmVXaW5k
b3cgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlkaXNwbGF5V2luZG93IDsgCSBFbUFsaWFz
ZW11cHRyIDxBPgkgCQkJCQkJZHJhd1dpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJ
CWZpcnN0V2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZXhpdFdpbmRvd0lEIDsg
CSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZW50ZXJXaW5kb3dJRCA7IAkgRW1BbGlhc2VtdXB0
ciA8QT4JIAkJCQkJCWV4aXRlZFdpbmRvd0lEIDsgCSBFbUFsaWFzR3JhcGhpY1N0YXRlVHlwZVYz
IDxBPgkgCQkJZ1N0YXRlIDsgCSBFbUFsaWFzVUlDb2xvclN0YXRlVHlwZSA8QT4JIAkJCXVpY1N0
YXRlIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJbGFzdFRhcFRpbWUgOyAJIEVtQWxpYXNl
bXVwdHIgPEE+CSAJCQkJCQlldmVudFEgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlldmVu
dFFJbmRleCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWV2ZW50UUxlbmd0aCA7IAkgRW1B
bGlhc0ludDE2IDxBPgkgCQkJCQkJbGFzdFNjcmVlblggOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJ
CQkJCWxhc3RTY3JlZW5ZIDsgCSBFbUFsaWFzQm9vbGVhbiA8QT4JIAkJCQkJbGFzdFBlbkRvd24g
OyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXRhcENvdW50IDsgCSBFbUFsaWFzSW50MzIgPEE+
CSAJCQkJCQluZWVkTnVsbFRpY2tDb3VudCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXVp
Q3VycmVudEZvbnRQdHIgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQl1aVN5c0ZvbnRUYWJs
ZVB0ciA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXVpQXBwRm9udFRhYmxlUHRyIDsgCSBF
bUFsaWFzVUludDE2IDxBPgkgCQkJCQkJdWlOdW1TeXNGb250cyA7IAkgRW1BbGlhc1VJbnQxNiA8
QT4JIAkJCQkJCXVpTnVtQXBwRm9udHMgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQl1aUZv
bnRMaXN0UHRyIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJcm9vdFdpbmRvdyA7IAkgRW1B
bGlhc1VJbnQ4IDxBPgkgCQkJCQkJdWlDdXJyZW50Rm9udElEIDsgCSBFbUFsaWFzSW50MTYgPEE+
CSAJCQkJCQlhbGxGb3Jtc0Nsb3NpbmcgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQljdXJy
ZW50Rm9ybSA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJCWluc1B0SXNFbmFibGVkIDsgCSBF
bUFsaWFzQm9vbGVhbiA8QT4JIAkJCQkJaW5zUHRPbiA7IAkgRW1BbGlhc1BvaW50VHlwZSA8QT4J
IAkJCQkJaW5zUHRMb2MgOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJCWluc1B0SGVpZ2h0IDsg
CSBFbUFsaWFzSW50MzIgPEE+CSAJCQkJCQlpbnNQdExhc3RUaWNrIDsgCSBFbUFsaWFzZW11cHRy
IDxBPgkgCQkJCQkJaW5zUHRCaXRzQmVoaW5kIDsgCSBFbUFsaWFzQ2xpcGJvYXJkSXRlbSA8QT4J
IAkJCQljbGlwYm9hcmQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQl1aUN1cnJlbnRNZW51
IDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJdWlDdXJyZW50TWVudVJzY0lEIDsgCSBFbUFs
aWFzRmllbGRVbmRvVHlwZSA8QT4JIAkJCQl1bmRvR2xvYmFscyA7IAkgRW1BbGlhc1VJbnQ4IDxB
PgkgCQkJCQkJZ3NpU3RhdGUgOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQlnc2lJc0VuYWJs
ZWQgOyAJIEVtQWxpYXNQb2ludFR5cGUgPEE+CSAJCQkJCWdzaUxvY2F0aW9uIDsgCSBFbUFsaWFz
Q2hhciA8QT4JIAkJCQkJCXVpRGVjaW1hbFNlcGFyYXRvciA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkg
CQkJCQkJdWlPcHRpb25zIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJbWVudUNtZEJhckN1
cnJlbnQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hY3RpdmVXaW5kb3cgICh2b2lk
KSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Rpc3BsYXlXaW5kb3cg
ICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RyYXdXaW5k
b3cgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZpcnN0
V2luZG93ICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
ZXhpdFdpbmRvd0lEICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfZW50ZXJXaW5kb3dJRCAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2V4aXRlZFdpbmRvd0lEICAodm9pZCkgeyByZXR1cm4gIDI0IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ1N0YXRlICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWljU3RhdGUgICh2b2lkKSB7IHJldHVybiAgNDAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9sYXN0VGFwVGltZSAgKHZvaWQpIHsgcmV0dXJuICA1MiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V2ZW50USAgKHZvaWQpIHsgcmV0dXJuICA1NiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V2ZW50UUluZGV4ICAodm9pZCkgeyByZXR1cm4g
IDYwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXZlbnRRTGVuZ3RoICAodm9pZCkgeyBy
ZXR1cm4gIDYyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbGFzdFNjcmVlblggICh2b2lk
KSB7IHJldHVybiAgNjQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sYXN0U2NyZWVuWSAg
KHZvaWQpIHsgcmV0dXJuICA2NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xhc3RQZW5E
b3duICAodm9pZCkgeyByZXR1cm4gIDY4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGFw
Q291bnQgICh2b2lkKSB7IHJldHVybiAgNjkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9u
ZWVkTnVsbFRpY2tDb3VudCAgKHZvaWQpIHsgcmV0dXJuICA3MCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3VpQ3VycmVudEZvbnRQdHIgICh2b2lkKSB7IHJldHVybiAgNzQgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl91aVN5c0ZvbnRUYWJsZVB0ciAgKHZvaWQpIHsgcmV0dXJuICA3
OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQXBwRm9udFRhYmxlUHRyICAodm9pZCkg
eyByZXR1cm4gIDgyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlOdW1TeXNGb250cyAg
KHZvaWQpIHsgcmV0dXJuICA4NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpTnVtQXBw
Rm9udHMgICh2b2lkKSB7IHJldHVybiAgODggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91
aUZvbnRMaXN0UHRyICAodm9pZCkgeyByZXR1cm4gIDkwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2Zfcm9vdFdpbmRvdyAgKHZvaWQpIHsgcmV0dXJuICA5NCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3VpQ3VycmVudEZvbnRJRCAgKHZvaWQpIHsgcmV0dXJuICA5OCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2FsbEZvcm1zQ2xvc2luZyAgKHZvaWQpIHsgcmV0dXJuICA5OSA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2N1cnJlbnRGb3JtICAodm9pZCkgeyByZXR1cm4g
IDEwMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0SXNFbmFibGVkICAodm9pZCkg
eyByZXR1cm4gIDEwNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0T24gICh2b2lk
KSB7IHJldHVybiAgMTA1IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRMb2MgICh2
b2lkKSB7IHJldHVybiAgMTA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRIZWln
aHQgICh2b2lkKSB7IHJldHVybiAgMTEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5z
UHRMYXN0VGljayAgKHZvaWQpIHsgcmV0dXJuICAxMTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9pbnNQdEJpdHNCZWhpbmQgICh2b2lkKSB7IHJldHVybiAgMTE2IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfY2xpcGJvYXJkICAodm9pZCkgeyByZXR1cm4gIDEyMCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3VpQ3VycmVudE1lbnUgICh2b2lkKSB7IHJldHVybiAgMTM4IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJyZW50TWVudVJzY0lEICAodm9pZCkgeyBy
ZXR1cm4gIDE0MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VuZG9HbG9iYWxzICAodm9p
ZCkgeyByZXR1cm4gIDE0NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dzaVN0YXRlICAo
dm9pZCkgeyByZXR1cm4gIDE1NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dzaUlzRW5h
YmxlZCAgKHZvaWQpIHsgcmV0dXJuICAxNTcgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9n
c2lMb2NhdGlvbiAgKHZvaWQpIHsgcmV0dXJuICAxNTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl91aURlY2ltYWxTZXBhcmF0b3IgICh2b2lkKSB7IHJldHVybiAgMTYyIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdWlPcHRpb25zICAodm9pZCkgeyByZXR1cm4gIDE2MyA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX21lbnVDbWRCYXJDdXJyZW50ICAodm9pZCkgeyByZXR1cm4g
IDE2NCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVVJR2xvYmFsc1R5cGVWMzUgIAl7CXB1YmxpYzoJ
dHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVVJR2xvYmFsc1R5cGVWMzUgIAkodm9pZCk7
CUVtUHJveHlVSUdsb2JhbHNUeXBlVjM1ICAJKGNvbnN0IEVtUHJveHlVSUdsb2JhbHNUeXBlVjM1
ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkg
JmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAg
ICAgMTY4ICA7IH0JRW1Qcm94eVVJR2xvYmFsc1R5cGVWMzUgICYJCW9wZXJhdG9yPSAoY29uc3Qg
RW1Qcm94eVVJR2xvYmFsc1R5cGVWMzUgICYpOwlFbUFsaWFzVUlHbG9iYWxzVHlwZVYzNSAgPExB
Uz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1VJR2xvYmFsc1R5cGVWMzUgIDxMQVM+
CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNb
ICAgIDE2OCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc2VtdXB0ciA8TEFT
PgkgCQkJCQkJYWN0aXZlV2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlkaXNw
bGF5V2luZG93IDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlkcmF3V2luZG93IDsgCSBF
bUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlmaXJzdFdpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8
TEFTPgkgCQkJCQkJZXhpdFdpbmRvd0lEIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQll
bnRlcldpbmRvd0lEIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlleGl0ZWRXaW5kb3dJ
RCA7IAkgRW1BbGlhc0dyYXBoaWNTdGF0ZVR5cGVWMyA8TEFTPgkgCQkJZ1N0YXRlIDsgCSBFbUFs
aWFzVUlDb2xvclN0YXRlVHlwZSA8TEFTPgkgCQkJdWljU3RhdGUgOyAJIEVtQWxpYXNVSW50MzIg
PExBUz4JIAkJCQkJCWxhc3RUYXBUaW1lIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQll
dmVudFEgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWV2ZW50UUluZGV4IDsgCSBFbUFs
aWFzVUludDE2IDxMQVM+CSAJCQkJCQlldmVudFFMZW5ndGggOyAJIEVtQWxpYXNJbnQxNiA8TEFT
PgkgCQkJCQkJbGFzdFNjcmVlblggOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJbGFzdFNj
cmVlblkgOyAJIEVtQWxpYXNCb29sZWFuIDxMQVM+CSAJCQkJCWxhc3RQZW5Eb3duIDsgCSBFbUFs
aWFzVUludDggPExBUz4JIAkJCQkJCXRhcENvdW50IDsgCSBFbUFsaWFzSW50MzIgPExBUz4JIAkJ
CQkJCW5lZWROdWxsVGlja0NvdW50IDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQl1aUN1
cnJlbnRGb250UHRyIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQl1aVN5c0ZvbnRUYWJs
ZVB0ciA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJdWlBcHBGb250VGFibGVQdHIgOyAJ
IEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXVpTnVtU3lzRm9udHMgOyAJIEVtQWxpYXNVSW50
MTYgPExBUz4JIAkJCQkJCXVpTnVtQXBwRm9udHMgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJ
CQkJCXVpRm9udExpc3RQdHIgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXJvb3RXaW5k
b3cgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJdWlDdXJyZW50Rm9udElEIDsgCSBFbUFs
aWFzSW50MTYgPExBUz4JIAkJCQkJCWFsbEZvcm1zQ2xvc2luZyA7IAkgRW1BbGlhc2VtdXB0ciA8
TEFTPgkgCQkJCQkJY3VycmVudEZvcm0gOyAJIEVtQWxpYXNCb29sZWFuIDxMQVM+CSAJCQkJCWlu
c1B0SXNFbmFibGVkIDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkgCQkJCQlpbnNQdE9uIDsgCSBF
bUFsaWFzUG9pbnRUeXBlIDxMQVM+CSAJCQkJCWluc1B0TG9jIDsgCSBFbUFsaWFzSW50MTYgPExB
Uz4JIAkJCQkJCWluc1B0SGVpZ2h0IDsgCSBFbUFsaWFzSW50MzIgPExBUz4JIAkJCQkJCWluc1B0
TGFzdFRpY2sgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWluc1B0Qml0c0JlaGluZCA7
IAkgRW1BbGlhc0NsaXBib2FyZEl0ZW0gPExBUz4JIAkJCQljbGlwYm9hcmQgOyAJIEVtQWxpYXNl
bXVwdHIgPExBUz4JIAkJCQkJCXVpQ3VycmVudE1lbnUgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4J
IAkJCQkJCXVpQ3VycmVudE1lbnVSc2NJRCA7IAkgRW1BbGlhc0ZpZWxkVW5kb1R5cGUgPExBUz4J
IAkJCQl1bmRvR2xvYmFscyA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlnc2lTdGF0ZSA7
IAkgRW1BbGlhc0Jvb2xlYW4gPExBUz4JIAkJCQkJZ3NpSXNFbmFibGVkIDsgCSBFbUFsaWFzUG9p
bnRUeXBlIDxMQVM+CSAJCQkJCWdzaUxvY2F0aW9uIDsgCSBFbUFsaWFzQ2hhciA8TEFTPgkgCQkJ
CQkJdWlEZWNpbWFsU2VwYXJhdG9yIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXVpT3B0
aW9ucyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJbWVudUNtZEJhckN1cnJlbnQgOyAg
CSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hY3RpdmVXaW5kb3cgICh2b2lkKSB7IHJldHVy
biAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Rpc3BsYXlXaW5kb3cgICh2b2lkKSB7
IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RyYXdXaW5kb3cgICh2b2lk
KSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZpcnN0V2luZG93ICAo
dm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXhpdFdpbmRv
d0lEICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZW50
ZXJXaW5kb3dJRCAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2V4aXRlZFdpbmRvd0lEICAodm9pZCkgeyByZXR1cm4gIDI0IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZ1N0YXRlICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfdWljU3RhdGUgICh2b2lkKSB7IHJldHVybiAgNDAgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9sYXN0VGFwVGltZSAgKHZvaWQpIHsgcmV0dXJuICA1MiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2V2ZW50USAgKHZvaWQpIHsgcmV0dXJuICA1NiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2V2ZW50UUluZGV4ICAodm9pZCkgeyByZXR1cm4gIDYwIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXZlbnRRTGVuZ3RoICAodm9pZCkgeyByZXR1cm4gIDYy
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbGFzdFNjcmVlblggICh2b2lkKSB7IHJldHVy
biAgNjQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sYXN0U2NyZWVuWSAgKHZvaWQpIHsg
cmV0dXJuICA2NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xhc3RQZW5Eb3duICAodm9p
ZCkgeyByZXR1cm4gIDY4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGFwQ291bnQgICh2
b2lkKSB7IHJldHVybiAgNjkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uZWVkTnVsbFRp
Y2tDb3VudCAgKHZvaWQpIHsgcmV0dXJuICA3MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3VpQ3VycmVudEZvbnRQdHIgICh2b2lkKSB7IHJldHVybiAgNzQgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl91aVN5c0ZvbnRUYWJsZVB0ciAgKHZvaWQpIHsgcmV0dXJuICA3OCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQXBwRm9udFRhYmxlUHRyICAodm9pZCkgeyByZXR1cm4g
IDgyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlOdW1TeXNGb250cyAgKHZvaWQpIHsg
cmV0dXJuICA4NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpTnVtQXBwRm9udHMgICh2
b2lkKSB7IHJldHVybiAgODggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUZvbnRMaXN0
UHRyICAodm9pZCkgeyByZXR1cm4gIDkwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfcm9v
dFdpbmRvdyAgKHZvaWQpIHsgcmV0dXJuICA5NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3VpQ3VycmVudEZvbnRJRCAgKHZvaWQpIHsgcmV0dXJuICA5OCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2FsbEZvcm1zQ2xvc2luZyAgKHZvaWQpIHsgcmV0dXJuICA5OSA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2N1cnJlbnRGb3JtICAodm9pZCkgeyByZXR1cm4gIDEwMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0SXNFbmFibGVkICAodm9pZCkgeyByZXR1cm4g
IDEwNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0T24gICh2b2lkKSB7IHJldHVy
biAgMTA1IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRMb2MgICh2b2lkKSB7IHJl
dHVybiAgMTA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRIZWlnaHQgICh2b2lk
KSB7IHJldHVybiAgMTEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5zUHRMYXN0VGlj
ayAgKHZvaWQpIHsgcmV0dXJuICAxMTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnNQ
dEJpdHNCZWhpbmQgICh2b2lkKSB7IHJldHVybiAgMTE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfY2xpcGJvYXJkICAodm9pZCkgeyByZXR1cm4gIDEyMCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3VpQ3VycmVudE1lbnUgICh2b2lkKSB7IHJldHVybiAgMTM4IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdWlDdXJyZW50TWVudVJzY0lEICAodm9pZCkgeyByZXR1cm4gIDE0
MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VuZG9HbG9iYWxzICAodm9pZCkgeyByZXR1
cm4gIDE0NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dzaVN0YXRlICAodm9pZCkgeyBy
ZXR1cm4gIDE1NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dzaUlzRW5hYmxlZCAgKHZv
aWQpIHsgcmV0dXJuICAxNTcgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nc2lMb2NhdGlv
biAgKHZvaWQpIHsgcmV0dXJuICAxNTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aURl
Y2ltYWxTZXBhcmF0b3IgICh2b2lkKSB7IHJldHVybiAgMTYyIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfdWlPcHRpb25zICAodm9pZCkgeyByZXR1cm4gIDE2MyA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX21lbnVDbWRCYXJDdXJyZW50ICAodm9pZCkgeyByZXR1cm4gIDE2NCA7IH0g
IAl9OyAgICAKICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc002OEtFeGNUYWJsZVR5
cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1B
bGlhc002OEtFeGNUYWJsZVR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzTTY4S0V4Y1RhYmxlVHlw
ZSAgCShjb25zdCBFbUFsaWFzTTY4S0V4Y1RhYmxlVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRy
CSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZv
aWQpCQkJeyByZXR1cm4gICAgIDI1NiAgOyB9CUVtQWxpYXNNNjhLRXhjVGFibGVUeXBlICA8QT4m
CW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc002OEtFeGNUYWJsZVR5cGUgIDxBPiYpOwlFbUFsaWFz
TTY4S0V4Y1RhYmxlVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNNNjhL
RXhjVGFibGVUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlh
c002OEtFeGNUYWJsZVR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAg
IEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlpbml0U3RhY2sgOyAJIEVtQWxpYXNVSW50MzIgPEE+
CSAJCQkJCQlpbml0UEMgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlidXNFcnIgOyAJIEVt
QWxpYXNVSW50MzIgPEE+CSAJCQkJCQlhZGRyZXNzRXJyIDsgCSBFbUFsaWFzVUludDMyIDxBPgkg
CQkJCQkJaWxsZWdhbEluc3RyIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJZGl2aWRlQnla
ZXJvIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJY2hrIDsgCSBFbUFsaWFzVUludDMyIDxB
PgkgCQkJCQkJdHJhcCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXByaXZpbGVnZSA7IAkg
RW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXRyYWNlIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJ
CQkJYVRyYXAgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlmVHJhcCA7IAkgRW1BbGlhc1VJ
bnQzMiA8QT4JIAkJCQkJCXJlc2VydmVkMTIgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlj
b3Byb2MgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlmb3JtYXRFcnIgOyAJIEVtQWxpYXNV
SW50MzIgPEE+CSAJCQkJCQl1bml0aWFsaXplZEludCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJ
CQkJCXNwdXJpb3VzSW50IDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJYXV0b1ZlYzEgOyAJ
IEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlhdXRvVmVjMiA7IAkgRW1BbGlhc1VJbnQzMiA8QT4J
IAkJCQkJCWF1dG9WZWMzIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJYXV0b1ZlYzQgOyAJ
IEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlhdXRvVmVjNSA7IAkgRW1BbGlhc1VJbnQzMiA8QT4J
IAkJCQkJCWF1dG9WZWM2IDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJYXV0b1ZlYzcgOyAg
CSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbml0U3RhY2sgICh2b2lkKSB7IHJldHVybiAg
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luaXRQQyAgKHZvaWQpIHsgcmV0dXJuICA0
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYnVzRXJyICAodm9pZCkgeyByZXR1cm4gIDgg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hZGRyZXNzRXJyICAodm9pZCkgeyByZXR1cm4g
IDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaWxsZWdhbEluc3RyICAodm9pZCkgeyBy
ZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGl2aWRlQnlaZXJvICAodm9p
ZCkgeyByZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2hrICAodm9pZCkg
eyByZXR1cm4gIDI0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdHJhcCAgKHZvaWQpIHsg
cmV0dXJuICAyOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3ByaXZpbGVnZSAgKHZvaWQp
IHsgcmV0dXJuICAzMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RyYWNlICAodm9pZCkg
eyByZXR1cm4gIDM2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYVRyYXAgICh2b2lkKSB7
IHJldHVybiAgNDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mVHJhcCAgKHZvaWQpIHsg
cmV0dXJuICA0NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jlc2VydmVkMTIgICh2b2lk
KSB7IHJldHVybiAgNDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb3Byb2MgICh2b2lk
KSB7IHJldHVybiAgNTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mb3JtYXRFcnIgICh2
b2lkKSB7IHJldHVybiAgNTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91bml0aWFsaXpl
ZEludCAgKHZvaWQpIHsgcmV0dXJuICA2MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Nw
dXJpb3VzSW50ICAodm9pZCkgeyByZXR1cm4gIDk2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfYXV0b1ZlYzEgICh2b2lkKSB7IHJldHVybiAgMTAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfYXV0b1ZlYzIgICh2b2lkKSB7IHJldHVybiAgMTA0IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfYXV0b1ZlYzMgICh2b2lkKSB7IHJldHVybiAgMTA4IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfYXV0b1ZlYzQgICh2b2lkKSB7IHJldHVybiAgMTEyIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfYXV0b1ZlYzUgICh2b2lkKSB7IHJldHVybiAgMTE2IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfYXV0b1ZlYzYgICh2b2lkKSB7IHJldHVybiAgMTIwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYXV0b1ZlYzcgICh2b2lkKSB7IHJldHVybiAgMTI0IDsgfSAg
CX07IAljbGFzcyBFbVByb3h5TTY4S0V4Y1RhYmxlVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZv
aWQqIHB0cl90eXBlOwlFbVByb3h5TTY4S0V4Y1RhYmxlVHlwZSAgCSh2b2lkKTsJRW1Qcm94eU02
OEtFeGNUYWJsZVR5cGUgIAkoY29uc3QgRW1Qcm94eU02OEtFeGNUYWJsZVR5cGUgICYpOwlwdHJf
dHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0
YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyNTYgIDsg
fQlFbVByb3h5TTY4S0V4Y1RhYmxlVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5TTY4
S0V4Y1RhYmxlVHlwZSAgJik7CUVtQWxpYXNNNjhLRXhjVGFibGVUeXBlICA8TEFTPglvcGVyYXRv
cltdIChpbnQpOwljb25zdCBFbUFsaWFzTTY4S0V4Y1RhYmxlVHlwZSAgPExBUz4Jb3BlcmF0b3Jb
XSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMjU2ICBd
Owl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlp
bml0U3RhY2sgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWluaXRQQyA7IAkgRW1BbGlh
c1VJbnQzMiA8TEFTPgkgCQkJCQkJYnVzRXJyIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJ
CQlhZGRyZXNzRXJyIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlpbGxlZ2FsSW5zdHIg
OyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWRpdmlkZUJ5WmVybyA7IAkgRW1BbGlhc1VJ
bnQzMiA8TEFTPgkgCQkJCQkJY2hrIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQl0cmFw
IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlwcml2aWxlZ2UgOyAJIEVtQWxpYXNVSW50
MzIgPExBUz4JIAkJCQkJCXRyYWNlIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlhVHJh
cCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJZlRyYXAgOyAJIEVtQWxpYXNVSW50MzIg
PExBUz4JIAkJCQkJCXJlc2VydmVkMTIgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWNv
cHJvYyA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJZm9ybWF0RXJyIDsgCSBFbUFsaWFz
VUludDMyIDxMQVM+CSAJCQkJCQl1bml0aWFsaXplZEludCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFT
PgkgCQkJCQkJc3B1cmlvdXNJbnQgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWF1dG9W
ZWMxIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlhdXRvVmVjMiA7IAkgRW1BbGlhc1VJ
bnQzMiA8TEFTPgkgCQkJCQkJYXV0b1ZlYzMgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJ
CWF1dG9WZWM0IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlhdXRvVmVjNSA7IAkgRW1B
bGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJYXV0b1ZlYzYgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4J
IAkJCQkJCWF1dG9WZWM3IDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5pdFN0YWNr
ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbml0UEMg
ICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2J1c0VyciAg
KHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWRkcmVzc0Vy
ciAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2lsbGVn
YWxJbnN0ciAgKHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2RpdmlkZUJ5WmVybyAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2NoayAgKHZvaWQpIHsgcmV0dXJuICAyNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3RyYXAgICh2b2lkKSB7IHJldHVybiAgMjggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9wcml2aWxlZ2UgICh2b2lkKSB7IHJldHVybiAgMzIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl90cmFjZSAgKHZvaWQpIHsgcmV0dXJuICAzNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2FUcmFwICAodm9pZCkgeyByZXR1cm4gIDQwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZlRyYXAgICh2b2lkKSB7IHJldHVybiAgNDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9yZXNlcnZlZDEyICAodm9pZCkgeyByZXR1cm4gIDQ4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfY29wcm9jICAodm9pZCkgeyByZXR1cm4gIDUyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfZm9ybWF0RXJyICAodm9pZCkgeyByZXR1cm4gIDU2IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfdW5pdGlhbGl6ZWRJbnQgICh2b2lkKSB7IHJldHVybiAgNjAgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9zcHVyaW91c0ludCAgKHZvaWQpIHsgcmV0dXJuICA5NiA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2F1dG9WZWMxICAodm9pZCkgeyByZXR1cm4gIDEwMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2F1dG9WZWMyICAodm9pZCkgeyByZXR1cm4gIDEwNCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2F1dG9WZWMzICAodm9pZCkgeyByZXR1cm4gIDEw
OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2F1dG9WZWM0ICAodm9pZCkgeyByZXR1cm4g
IDExMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2F1dG9WZWM1ICAodm9pZCkgeyByZXR1
cm4gIDExNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2F1dG9WZWM2ICAodm9pZCkgeyBy
ZXR1cm4gIDEyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2F1dG9WZWM3ICAodm9pZCkg
eyByZXR1cm4gIDEyNCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFs
aWFzRml4ZWRHbG9iYWxzVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90
eXBlIHB0cl90eXBlOwlFbUFsaWFzRml4ZWRHbG9iYWxzVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxp
YXNGaXhlZEdsb2JhbHNUeXBlICAJKGNvbnN0IEVtQWxpYXNGaXhlZEdsb2JhbHNUeXBlICAmKTsJ
cHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNp
emVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNjUwICA7IH0JRW1BbGlhc0ZpeGVk
R2xvYmFsc1R5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzRml4ZWRHbG9iYWxzVHlw
ZSAgPEE+Jik7CUVtQWxpYXNGaXhlZEdsb2JhbHNUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJ
Y29uc3QgRW1BbGlhc0ZpeGVkR2xvYmFsc1R5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0
Owlwcml2YXRlOglFbUFsaWFzRml4ZWRHbG9iYWxzVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlm
UHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJbWVtQ2FyZFNsb3RzIDsg
CSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlkYmdXYXNFbnRlcmVkIDsgCSBFbUFsaWFzZW11cHRy
IDxBPgkgCQkJCQkJbWVtQ2FyZEluZm9QIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJbWVt
U2VtYXBob3JlSUQgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQltZW1EZWJ1Z01vZGUgOyAJ
IEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlkbU9wZW5MaXN0IDsgCSBFbUFsaWFzVUludDggPEE+
CSAJCQkJCQlkYmdJbkRlYnVnZ2VyIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlkYmdUcmFj
aW5nIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZGJnR2xvYmFsc1AgOyAJIEVtQWxpYXNl
bXVwdHIgPEE+CSAJCQkJCQlkYmdTZXJHbG9iYWxzUCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJ
CQkJCXN5c0FwcEluZm9QIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJc3lzS2VybmVsRGF0
YVAgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlzeXNEaXNwYXRjaFRhYmxlUCA7IAkgRW1B
bGlhc1VJbnQzMiA8QT4JIAkJCQkJCXN5c093bmVySURzSW5Vc2UgOyAJIEVtQWxpYXNlbXVwdHIg
PEE+CSAJCQkJCQlzeXNBTVhBcHBJbmZvUCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXN5
c0Nsb2NrRnJlcSA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXN5c0hhcmRLZXlDcmVhdG9y
cyA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJc3lzQmF0dGVyeUNoZWNrVGltZXIgOyAJIEVt
QWxpYXNVSW50OCA8QT4JIAkJCQkJCXN5c0JhdHRlcnlNaW5UaHJlc2hvbGQgOyAJIEVtQWxpYXNV
SW50OCA8QT4JIAkJCQkJCWh3ckJhdHRlcnlMZXZlbCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJ
CQkJCXN5c05leHRCYXR0ZXJ5QWxlcnRUaW1lciA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJ
c3lzQmF0dGVyeVdhcm5UaHJlc2hvbGQgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXN5c0Rp
c3BhdGNoVGFibGVSZXYgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlzeXNEaXNwYXRjaFRh
YmxlU2l6ZSA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXN5c0xpYlRhYmxlUCA7IAkgRW1B
bGlhc1VJbnQxNiA8QT4JIAkJCQkJCXN5c0xpYlRhYmxlRW50cmllcyA7IAkgRW1BbGlhc2VtdXB0
ciA8QT4JIAkJCQkJCXN5c0NvbnNvbGVTdGFja0NodW5rUCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4J
IAkJCQkJCXN5c1VJU2hlbGxBcHBJbmZvUCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXN5
c1RpbWVySUQgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlzeXNBdXRvT2ZmRXZ0VGlja3Mg
OyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlzeXNBdXRvT2ZmU2Vjb25kcyA7IAkgRW1BbGlh
c0ludDMyIDxBPgkgCQkJCQkJc3lzUmFuZG9tU2VlZCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJ
CQkJCXNsa0dsb2JhbHNQIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJc2VyR2xvYmFsc1Ag
OyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlzY3JHbG9iYWxzUCA7IAkgRW1BbGlhc2VtdXB0
ciA8QT4JIAkJCQkJCWZwbEdsb2JhbHNQIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJcGVu
R2xvYmFsc1AgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlzeXNFdnRNZ3JHbG9iYWxzUCA7
IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXNuZEdsb2JhbHNQIDsgCSBFbUFsaWFzZW11cHRy
IDxBPgkgCQkJCQkJdGltR2xvYmFsc1AgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlhbG1H
bG9iYWxzUCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWZ0ckdsb2JhbHNQIDsgCSBFbUFs
aWFzZW11cHRyIDxBPgkgCQkJCQkJZ3JmR2xvYmFsc1AgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJ
CQkJCQlrZXlHbG9iYWxzUCA7IAkgRW1BbGlhc1VJR2xvYmFsc1R5cGUgPEE+CSAJCQkJdWlHbG9i
YWxzIDsgCSBFbUFsaWFzVUlHbG9iYWxzVHlwZUNvbW1vbiA8QT4JIAkJdWlHbG9iYWxzQ29tbW9u
IDsgCSBFbUFsaWFzVUlHbG9iYWxzVHlwZVYxIDxBPgkgCQkJdWlHbG9iYWxzVjEgOyAJIEVtQWxp
YXNVSUdsb2JhbHNUeXBlVjIgPEE+CSAJCQl1aUdsb2JhbHNWMiA7IAkgRW1BbGlhc1VJR2xvYmFs
c1R5cGVWMyA8QT4JIAkJCXVpR2xvYmFsc1YzIDsgCSBFbUFsaWFzVUlHbG9iYWxzVHlwZVYzMSA8
QT4JIAkJCXVpR2xvYmFsc1YzMSA7IAkgRW1BbGlhc1VJR2xvYmFsc1R5cGVWMzIgPEE+CSAJCQl1
aUdsb2JhbHNWMzIgOyAJIEVtQWxpYXNVSUdsb2JhbHNUeXBlVjM1IDxBPgkgCQkJdWlHbG9iYWxz
VjM1IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJdWlFeHRlbnNpb25zUCA7IAkgRW1BbGlh
c2VtdXB0ciA8QT4JIAkJCQkJCWN1clVJQXBwSW5mb1AgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJ
CQkJCQluZXh0VUlBcHBEQklEIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJbmV4dFVJQXBw
Q21kIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJbmV4dFVJQXBwQ21kUEJQIDsgCSBFbUFs
aWFzVUludDggPEE+CSAJCQkJCQluZXh0VUlBcHBDYXJkTm8gOyAJIEVtQWxpYXNJbnQ4IDxBPgkg
CQkJCQkJbWVtRGF0YVdFTGV2ZWwgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlod3JXYWtl
VXAgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWh3ckNQVUR1dHlDeWNsZSA7IAkgRW1BbGlh
c1VJbnQ4IDxBPgkgCQkJCQkJaHdyUGVuRG93biA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJ
CWh3ckN1clRpY2tzIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJaHdyVG90YWxSQU1TaXpl
IDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJaHdyRG96ZVN1YlRpY2tzIDsgCSBFbUFsaWFz
VUludDMyIDxBPgkgCQkJCQkJc25kT2ZmVGlja3MgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJ
CXN5c1Jlc2V0RmxhZ3MgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXN5c0JhdHRlcnlLaW5k
IDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJbWVtTWluRHluSGVhcEZyZWUgOyAJIEVtQWxp
YXNVSW50MTYgPEE+CSAJCQkJCQlzeXNQcmVmRmxhZ3MgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJ
CQkJCQlzeXNHbG9iYWxzUCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXN5c01pc2NGbGFn
cyA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXN5c0xpYk5ldCA7IAkgRW1BbGlhc2VtdXB0
ciA8QT4JIAkJCQkJCW5ldFBrdEZyZWVRIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJc3lz
RXZHcm91cElEIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJaXJxM0dsb2JhbHNQIDsgCSBF
bUFsaWFzVUludDMyIDxBPgkgCQkJCQkJc3lzTGFzdEJhdHRlcnlXYXJuaW5nIDsgCSBFbUFsaWFz
VUludDMyIDxBPgkgCQkJCQkJc3lzTG93TWVtQ2hlY2tzdW0gOyAJIEVtQWxpYXNVSW50MTYgPEE+
CSAJCQkJCQlod3JIYXJkd2FyZVJldiA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWRtUHJv
dGVjdExpc3RIIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJaHdyTWlzY0ZsYWdzIDsgCSBF
bUFsaWFzVUludDMyIDxBPgkgCQkJCQkJc3lzUHJvZmlsZVJlZmNvbiA7IAkgRW1BbGlhc2VtdXB0
ciA8QT4JIAkJCQkJCXN5c1Byb2ZpbGVQcm9jUCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJ
CWZscFNvZnRGUFNDUiA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWlyTGliR2xvYmFsc1Ag
OyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlleGdBY3RpdmVMaWIgOyAJIEVtQWxpYXNVSW50
MTYgPEE+CSAJCQkJCQl1aUJ1c3lDb3VudCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWly
cTFHbG9iYWxzUCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWlycTJHbG9iYWxzUCA7IAkg
RW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWlycTZHbG9iYWxzUCA7IAkgRW1BbGlhc2VtdXB0ciA8
QT4JIAkJCQkJCWludGxNZ3JHbG9iYWxzUCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWlu
bGluZVN0YXJ0IDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJaW5saW5lRW5kIDsgCSBFbUFs
aWFzQm9vbGVhbiA8QT4JIAkJCQkJaW5saW5lQWN0aXZlIDsgCSBFbUFsaWFzVUludDggPEE+CSAJ
CQkJCQlpbmxpbmVEZWZUZXJtIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJdHNtRmVwTGli
U3RhdHVzUCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXRzbUZlcExpYlJlZk51bSA7IAkg
RW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWlubGluZUhpZ2hsaWdodExlbiA7IAkgRW1BbGlhc2Vt
dXB0ciA8QT4JIAkJCQkJCXN5c0JhdHRlcnlEYXRhUCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJ
CQkJCXN5c0JhdHRlcnlWYWxpZEtpbmRzUCA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJCXN5
c0luU2h1dGRvd24gOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXN5c01pbldha2V1cFRocmVz
aG9sZCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCWh3ck1pc2NGbGFnc0V4dCA7IAkgRW1B
bGlhc0Jvb2xlYW4gPEE+CSAJCQkJCXN5c1VzZUNyaXRXYXJuVGltZXIgOyAJIEVtQWxpYXNCb29s
ZWFuIDxBPgkgCQkJCQlzeXNDcml0V2FyblRpbWVyUnVubmluZyA7IAkgRW1BbGlhc0ludDE2IDxB
PgkgCQkJCQkJc3lzQ3JpdFdhcm5SVENEYXlTdGFydGVkIDsgCSBFbUFsaWFzSW50MzIgPEE+CSAJ
CQkJCQlzeXNDcml0V2FyblRpY2tUaW1lciA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXN5
c0NyaXRXYXJuTGFzdFRpY2sgOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQlzeXNDaGFyZ2lu
ZyA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJCXN5c1VwZGF0ZVZvbHRhZ2VMZXZlbCA7IAkg
RW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCW5vdGlmeUdsb2JhbHNIIDsgCSBFbUFsaWFzVUludDMy
IDxBPgkgCQkJCQkJZXhwR2xvYmFsc1AgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQl2ZnNH
bG9iYWxzUCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXN5c1Jlc2VydmVkMzFEV29yZDMg
OyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlzeXNSZXNlcnZlZDMxRFdvcmQ0IDsgCSBFbUFs
aWFzZW11cHRyIDxBPgkgCQkJCQkJcmFtR2xvYmFsc1AgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJ
CQkJCQlod3JCYXR0ZXJ5R2xvYmFsc1AgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWh3ckJh
dHRlcnlQZXJjZW50IDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQljb21tQWN0aXZpdHlGbGFn
cyA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXVhcnQzMjhHbG9iYWxzUCA7IAkgRW1BbGlh
c1VJbnQzMiA8QT4JIAkJCQkJCXN5c09FTUdsb2JhbDEgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJ
CQkJCQlzeXNPRU1HbG9iYWwyIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJaHdyQmF0dGVy
eVN0ZXBzUGVyVm9sdCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXN5c1BlbmRpbmdTdGFj
a0ZyZWVzIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJc3lzRGF5Q291bnRlciA7IAkgRW1B
bGlhc0ludDE2IDxBPgkgCQkJCQkJc3lzQmF0dGVyeUNoZWNrUGVyaW9kIDsgCSBFbUFsaWFzVUlu
dDE2IDxBPgkgCQkJCQkJaHdySmVycnlQbGRTaGFkb3cgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJ
CQkJCQlyYWRpb0dsb2JhbHNQIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZmF0YWxBbGVy
dFRlbXBsYXRlUCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWZhdGFsQWxlcnRCdG5XaWR0
aCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXNpbGtzY3JlZW5JbmZvUCA7IAkgRW1BbGlh
c1VJbnQxNiA8QT4JIAkJCQkJCWlubGluZURlZkNoZWNrc3VtIDsgCSBFbUFsaWFzZW11cHRyIDxB
PgkgCQkJCQkJaW5saW5lRGVmRmllbGQgOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQlub3Rp
ZnlCcm9hZGNhc3RQZW5kaW5nIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlzeXNSZXNlcnZl
ZDM1Qnl0ZTEgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlod3JPRU1Db21wYW55SUQgOyAJ
IEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlod3JPRU1EZXZpY2VJRCA7IAkgRW1BbGlhc1VJbnQz
MiA8QT4JIAkJCQkJCWh3ck9FTUhBTElEIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJc3lz
VXBkYXRlR2xvYmFsc1AgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlzbWFsbFJPTUNoZWNr
c3VtIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJc3lzTm90aWZ5SW50ZXJydXB0R2xvYmFs
c1AgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlzeXNBcHBTdWJGb250TGlzdFB0ciA7IAkg
RW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXN5c1VTQkNvbmZpZ3VyYXRpb24gOyAJIEVtQWxpYXNl
bXVwdHIgPEE+CSAJCQkJCQlpbnRsRGlzcGF0Y2hUYWJsZVAgOyAJIEVtQWxpYXNCb29sZWFuIDxB
PgkgCQkJCQlzeXNBdXRvTG9ja1Vwb25Qb3dlck9mZiA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJ
CQkJCXN5c0hhcmRQb3dlckV2dFRpY2tzIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJc3lz
QXV0b0xvY2tUaW1lb3V0U2VjcyA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWF0dG5HbG9i
YWxzUCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWV4cFZmc1NoYXJlZEdsb2JhbHNQIDsg
CSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJYnRFeGdMaWJHbG9iYWxzUCA7IAkgRW1BbGlhc2Vt
dXB0ciA8QT4JIAkJCQkJCXRlc3RIYXJuZXNzR2xvYmFsc1AgOyAJIEVtQWxpYXNlbXVwdHIgPEE+
CSAJCQkJCQlwd3JNYW5hZ2VyR2xvYmFsc1AgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlp
bmxpbmVDbGF1c2VPZmZzZXQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlidExpYkdsb2Jh
bHNQIDsgCSBFbUFsaWFzQm9vbGVhbiA8QT4JIAkJCQkJc3lzU2V0UHdkVGltZW91dEFsbG93ZWQg
OyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlzeXNTZXRQd2RUaW1lb3V0U2VjcyA7IAkgRW1B
bGlhc1VJbnQzMiA8QT4JIAkJCQkJCXN5c1NldFB3ZFRpbWVvdXRUaWNrcyA7IAkgRW1BbGlhc1VJ
bnQxNiA8QT4JIAkJCQkJCWRiZ0xvY2tvdXQgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlz
eXNSZXNlcnZlZDQwRFdvcmQxIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJc3lzUmVzZXJ2
ZWQ0MERXb3JkMiA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXN5c1Jlc2VydmVkNDBEV29y
ZDMgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlzeXNSZXNlcnZlZDQwRFdvcmQ0IDsgIAkg
ICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbWVtQ2FyZFNsb3RzICAodm9pZCkgeyByZXR1cm4g
IDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kYmdXYXNFbnRlcmVkICAodm9pZCkgeyBy
ZXR1cm4gIDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tZW1DYXJkSW5mb1AgICh2b2lk
KSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21lbVNlbWFwaG9yZUlE
ICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tZW1EZWJ1
Z01vZGUgICh2b2lkKSB7IHJldHVybiAgMTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9k
bU9wZW5MaXN0ICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZGJnSW5EZWJ1Z2dlciAgKHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2RiZ1RyYWNpbmcgICh2b2lkKSB7IHJldHVybiAgMTcgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9kYmdHbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICAxOCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2RiZ1Nlckdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDIyIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQXBwSW5mb1AgICh2b2lkKSB7IHJldHVybiAg
MjYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNLZXJuZWxEYXRhUCAgKHZvaWQpIHsg
cmV0dXJuICAzMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0Rpc3BhdGNoVGFibGVQ
ICAodm9pZCkgeyByZXR1cm4gIDM0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzT3du
ZXJJRHNJblVzZSAgKHZvaWQpIHsgcmV0dXJuICAzOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3N5c0FNWEFwcEluZm9QICAodm9pZCkgeyByZXR1cm4gIDQyIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2Zfc3lzQ2xvY2tGcmVxICAodm9pZCkgeyByZXR1cm4gIDQ2IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2Zfc3lzSGFyZEtleUNyZWF0b3JzICAodm9pZCkgeyByZXR1cm4gIDUw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dGVyeUNoZWNrVGltZXIgICh2b2lk
KSB7IHJldHVybiAgNTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0ZXJ5TWlu
VGhyZXNob2xkICAodm9pZCkgeyByZXR1cm4gIDU2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfaHdyQmF0dGVyeUxldmVsICAodm9pZCkgeyByZXR1cm4gIDU3IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2Zfc3lzTmV4dEJhdHRlcnlBbGVydFRpbWVyICAodm9pZCkgeyByZXR1cm4gIDU4
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dGVyeVdhcm5UaHJlc2hvbGQgICh2
b2lkKSB7IHJldHVybiAgNjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNEaXNwYXRj
aFRhYmxlUmV2ICAodm9pZCkgeyByZXR1cm4gIDYxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2Zfc3lzRGlzcGF0Y2hUYWJsZVNpemUgICh2b2lkKSB7IHJldHVybiAgNjIgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9zeXNMaWJUYWJsZVAgICh2b2lkKSB7IHJldHVybiAgNjQgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNMaWJUYWJsZUVudHJpZXMgICh2b2lkKSB7IHJldHVy
biAgNjggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNDb25zb2xlU3RhY2tDaHVua1Ag
ICh2b2lkKSB7IHJldHVybiAgNzAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNVSVNo
ZWxsQXBwSW5mb1AgICh2b2lkKSB7IHJldHVybiAgNzQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9zeXNUaW1lcklEICAodm9pZCkgeyByZXR1cm4gIDc4IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2Zfc3lzQXV0b09mZkV2dFRpY2tzICAodm9pZCkgeyByZXR1cm4gIDgyIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQXV0b09mZlNlY29uZHMgICh2b2lkKSB7IHJldHVybiAg
ODYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNSYW5kb21TZWVkICAodm9pZCkgeyBy
ZXR1cm4gIDg4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2xrR2xvYmFsc1AgICh2b2lk
KSB7IHJldHVybiAgOTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zZXJHbG9iYWxzUCAg
KHZvaWQpIHsgcmV0dXJuICA5NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Njckdsb2Jh
bHNQICAodm9pZCkgeyByZXR1cm4gIDEwMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Zw
bEdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDEwNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3Blbkdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDEwOCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3N5c0V2dE1nckdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDExMiA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3NuZEdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDExNiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RpbUdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4g
IDEyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FsbUdsb2JhbHNQICAodm9pZCkgeyBy
ZXR1cm4gIDEyNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Z0ckdsb2JhbHNQICAodm9p
ZCkgeyByZXR1cm4gIDEyOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dyZkdsb2JhbHNQ
ICAodm9pZCkgeyByZXR1cm4gIDEzMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2tleUds
b2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDEzNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3VpR2xvYmFscyAgKHZvaWQpIHsgcmV0dXJuICAxNDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl91aUdsb2JhbHNDb21tb24gICh2b2lkKSB7IHJldHVybiAgMTQwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfdWlHbG9iYWxzVjEgICh2b2lkKSB7IHJldHVybiAgMTQwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlHbG9iYWxzVjIgICh2b2lkKSB7IHJldHVybiAgMTQwIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlHbG9iYWxzVjMgICh2b2lkKSB7IHJldHVybiAg
MTQwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlHbG9iYWxzVjMxICAodm9pZCkgeyBy
ZXR1cm4gIDE0MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpR2xvYmFsc1YzMiAgKHZv
aWQpIHsgcmV0dXJuICAxNDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUdsb2JhbHNW
MzUgICh2b2lkKSB7IHJldHVybiAgMTQwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlF
eHRlbnNpb25zUCAgKHZvaWQpIHsgcmV0dXJuICAzMTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9jdXJVSUFwcEluZm9QICAodm9pZCkgeyByZXR1cm4gIDMyMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX25leHRVSUFwcERCSUQgICh2b2lkKSB7IHJldHVybiAgMzI0IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmV4dFVJQXBwQ21kICAodm9pZCkgeyByZXR1cm4gIDMyOCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25leHRVSUFwcENtZFBCUCAgKHZvaWQpIHsgcmV0
dXJuICAzMzAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uZXh0VUlBcHBDYXJkTm8gICh2
b2lkKSB7IHJldHVybiAgMzM0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbWVtRGF0YVdF
TGV2ZWwgICh2b2lkKSB7IHJldHVybiAgMzM1IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
aHdyV2FrZVVwICAodm9pZCkgeyByZXR1cm4gIDMzNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2h3ckNQVUR1dHlDeWNsZSAgKHZvaWQpIHsgcmV0dXJuICAzMzggOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9od3JQZW5Eb3duICAodm9pZCkgeyByZXR1cm4gIDMzOSA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2h3ckN1clRpY2tzICAodm9pZCkgeyByZXR1cm4gIDM0MCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2h3clRvdGFsUkFNU2l6ZSAgKHZvaWQpIHsgcmV0dXJu
ICAzNDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9od3JEb3plU3ViVGlja3MgICh2b2lk
KSB7IHJldHVybiAgMzQ4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc25kT2ZmVGlja3Mg
ICh2b2lkKSB7IHJldHVybiAgMzUyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzUmVz
ZXRGbGFncyAgKHZvaWQpIHsgcmV0dXJuICAzNTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9zeXNCYXR0ZXJ5S2luZCAgKHZvaWQpIHsgcmV0dXJuICAzNTcgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9tZW1NaW5EeW5IZWFwRnJlZSAgKHZvaWQpIHsgcmV0dXJuICAzNTggOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNQcmVmRmxhZ3MgICh2b2lkKSB7IHJldHVybiAgMzYy
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzR2xvYmFsc1AgICh2b2lkKSB7IHJldHVy
biAgMzY0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzTWlzY0ZsYWdzICAodm9pZCkg
eyByZXR1cm4gIDM2OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0xpYk5ldCAgKHZv
aWQpIHsgcmV0dXJuICAzNzAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uZXRQa3RGcmVl
USAgKHZvaWQpIHsgcmV0dXJuICAzNzIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNF
dkdyb3VwSUQgICh2b2lkKSB7IHJldHVybiAgMzc2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfaXJxM0dsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDM4MCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3N5c0xhc3RCYXR0ZXJ5V2FybmluZyAgKHZvaWQpIHsgcmV0dXJuICAzODQgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNMb3dNZW1DaGVja3N1bSAgKHZvaWQpIHsgcmV0
dXJuICAzODggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9od3JIYXJkd2FyZVJldiAgKHZv
aWQpIHsgcmV0dXJuICAzOTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kbVByb3RlY3RM
aXN0SCAgKHZvaWQpIHsgcmV0dXJuICAzOTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9o
d3JNaXNjRmxhZ3MgICh2b2lkKSB7IHJldHVybiAgMzk4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2Zfc3lzUHJvZmlsZVJlZmNvbiAgKHZvaWQpIHsgcmV0dXJuICA0MDAgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9zeXNQcm9maWxlUHJvY1AgICh2b2lkKSB7IHJldHVybiAgNDA0IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmxwU29mdEZQU0NSICAodm9pZCkgeyByZXR1cm4g
IDQwOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2lyTGliR2xvYmFsc1AgICh2b2lkKSB7
IHJldHVybiAgNDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXhnQWN0aXZlTGliICAo
dm9pZCkgeyByZXR1cm4gIDQxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpQnVzeUNv
dW50ICAodm9pZCkgeyByZXR1cm4gIDQxOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ly
cTFHbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICA0MjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9pcnEyR2xvYmFsc1AgICh2b2lkKSB7IHJldHVybiAgNDI0IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfaXJxNkdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDQyOCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2ludGxNZ3JHbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICA0MzIg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbmxpbmVTdGFydCAgKHZvaWQpIHsgcmV0dXJu
ICA0MzYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbmxpbmVFbmQgICh2b2lkKSB7IHJl
dHVybiAgNDM4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5saW5lQWN0aXZlICAodm9p
ZCkgeyByZXR1cm4gIDQ0MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2lubGluZURlZlRl
cm0gICh2b2lkKSB7IHJldHVybiAgNDQxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdHNt
RmVwTGliU3RhdHVzUCAgKHZvaWQpIHsgcmV0dXJuICA0NDIgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl90c21GZXBMaWJSZWZOdW0gICh2b2lkKSB7IHJldHVybiAgNDQ2IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfaW5saW5lSGlnaGxpZ2h0TGVuICAodm9pZCkgeyByZXR1cm4gIDQ0
OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRlcnlEYXRhUCAgKHZvaWQpIHsg
cmV0dXJuICA0NTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0ZXJ5VmFsaWRL
aW5kc1AgICh2b2lkKSB7IHJldHVybiAgNDU0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
c3lzSW5TaHV0ZG93biAgKHZvaWQpIHsgcmV0dXJuICA0NTggOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9zeXNNaW5XYWtldXBUaHJlc2hvbGQgICh2b2lkKSB7IHJldHVybiAgNDU5IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaHdyTWlzY0ZsYWdzRXh0ICAodm9pZCkgeyByZXR1cm4g
IDQ2MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c1VzZUNyaXRXYXJuVGltZXIgICh2
b2lkKSB7IHJldHVybiAgNDY0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQ3JpdFdh
cm5UaW1lclJ1bm5pbmcgICh2b2lkKSB7IHJldHVybiAgNDY1IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2Zfc3lzQ3JpdFdhcm5SVENEYXlTdGFydGVkICAodm9pZCkgeyByZXR1cm4gIDQ2NiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0NyaXRXYXJuVGlja1RpbWVyICAodm9pZCkg
eyByZXR1cm4gIDQ2OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0NyaXRXYXJuTGFz
dFRpY2sgICh2b2lkKSB7IHJldHVybiAgNDcyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
c3lzQ2hhcmdpbmcgICh2b2lkKSB7IHJldHVybiAgNDc2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2Zfc3lzVXBkYXRlVm9sdGFnZUxldmVsICAodm9pZCkgeyByZXR1cm4gIDQ3NyA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX25vdGlmeUdsb2JhbHNIICAodm9pZCkgeyByZXR1cm4gIDQ3
OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V4cEdsb2JhbHNQICAodm9pZCkgeyByZXR1
cm4gIDQ4MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Zmc0dsb2JhbHNQICAodm9pZCkg
eyByZXR1cm4gIDQ4NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c1Jlc2VydmVkMzFE
V29yZDMgICh2b2lkKSB7IHJldHVybiAgNDkwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
c3lzUmVzZXJ2ZWQzMURXb3JkNCAgKHZvaWQpIHsgcmV0dXJuICA0OTQgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9yYW1HbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICA0OTggOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9od3JCYXR0ZXJ5R2xvYmFsc1AgICh2b2lkKSB7IHJldHVybiAg
NTAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaHdyQmF0dGVyeVBlcmNlbnQgICh2b2lk
KSB7IHJldHVybiAgNTA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tbUFjdGl2aXR5
RmxhZ3MgICh2b2lkKSB7IHJldHVybiAgNTA3IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
dWFydDMyOEdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDUwOCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3N5c09FTUdsb2JhbDEgICh2b2lkKSB7IHJldHVybiAgNTEyIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2Zfc3lzT0VNR2xvYmFsMiAgKHZvaWQpIHsgcmV0dXJuICA1MTYgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9od3JCYXR0ZXJ5U3RlcHNQZXJWb2x0ICAodm9pZCkg
eyByZXR1cm4gIDUyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c1BlbmRpbmdTdGFj
a0ZyZWVzICAodm9pZCkgeyByZXR1cm4gIDUyMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3N5c0RheUNvdW50ZXIgICh2b2lkKSB7IHJldHVybiAgNTI2IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2Zfc3lzQmF0dGVyeUNoZWNrUGVyaW9kICAodm9pZCkgeyByZXR1cm4gIDUyOCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2h3ckplcnJ5UGxkU2hhZG93ICAodm9pZCkgeyByZXR1
cm4gIDUzMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JhZGlvR2xvYmFsc1AgICh2b2lk
KSB7IHJldHVybiAgNTMyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmF0YWxBbGVydFRl
bXBsYXRlUCAgKHZvaWQpIHsgcmV0dXJuICA1MzYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9mYXRhbEFsZXJ0QnRuV2lkdGggICh2b2lkKSB7IHJldHVybiAgNTQwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2Zfc2lsa3NjcmVlbkluZm9QICAodm9pZCkgeyByZXR1cm4gIDU0MiA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2lubGluZURlZkNoZWNrc3VtICAodm9pZCkgeyByZXR1
cm4gIDU0NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2lubGluZURlZkZpZWxkICAodm9p
ZCkgeyByZXR1cm4gIDU0OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25vdGlmeUJyb2Fk
Y2FzdFBlbmRpbmcgICh2b2lkKSB7IHJldHVybiAgNTUyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2Zfc3lzUmVzZXJ2ZWQzNUJ5dGUxICAodm9pZCkgeyByZXR1cm4gIDU1MyA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2h3ck9FTUNvbXBhbnlJRCAgKHZvaWQpIHsgcmV0dXJuICA1NTQg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9od3JPRU1EZXZpY2VJRCAgKHZvaWQpIHsgcmV0
dXJuICA1NTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9od3JPRU1IQUxJRCAgKHZvaWQp
IHsgcmV0dXJuICA1NjIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNVcGRhdGVHbG9i
YWxzUCAgKHZvaWQpIHsgcmV0dXJuICA1NjYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9z
bWFsbFJPTUNoZWNrc3VtICAodm9pZCkgeyByZXR1cm4gIDU3MCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3N5c05vdGlmeUludGVycnVwdEdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDU3
MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0FwcFN1YkZvbnRMaXN0UHRyICAodm9p
ZCkgeyByZXR1cm4gIDU3NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c1VTQkNvbmZp
Z3VyYXRpb24gICh2b2lkKSB7IHJldHVybiAgNTgwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfaW50bERpc3BhdGNoVGFibGVQICAodm9pZCkgeyByZXR1cm4gIDU4MiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3N5c0F1dG9Mb2NrVXBvblBvd2VyT2ZmICAodm9pZCkgeyByZXR1cm4g
IDU4NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0hhcmRQb3dlckV2dFRpY2tzICAo
dm9pZCkgeyByZXR1cm4gIDU4OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0F1dG9M
b2NrVGltZW91dFNlY3MgICh2b2lkKSB7IHJldHVybiAgNTkyIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfYXR0bkdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDU5NiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2V4cFZmc1NoYXJlZEdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDYw
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2J0RXhnTGliR2xvYmFsc1AgICh2b2lkKSB7
IHJldHVybiAgNjA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGVzdEhhcm5lc3NHbG9i
YWxzUCAgKHZvaWQpIHsgcmV0dXJuICA2MDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9w
d3JNYW5hZ2VyR2xvYmFsc1AgICh2b2lkKSB7IHJldHVybiAgNjEyIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfaW5saW5lQ2xhdXNlT2Zmc2V0ICAodm9pZCkgeyByZXR1cm4gIDYxNiA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2J0TGliR2xvYmFsc1AgICh2b2lkKSB7IHJldHVybiAg
NjE4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzU2V0UHdkVGltZW91dEFsbG93ZWQg
ICh2b2lkKSB7IHJldHVybiAgNjIyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzU2V0
UHdkVGltZW91dFNlY3MgICh2b2lkKSB7IHJldHVybiAgNjI0IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2Zfc3lzU2V0UHdkVGltZW91dFRpY2tzICAodm9pZCkgeyByZXR1cm4gIDYyOCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RiZ0xvY2tvdXQgICh2b2lkKSB7IHJldHVybiAgNjMy
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzUmVzZXJ2ZWQ0MERXb3JkMSAgKHZvaWQp
IHsgcmV0dXJuICA2MzQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNSZXNlcnZlZDQw
RFdvcmQyICAodm9pZCkgeyByZXR1cm4gIDYzOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3N5c1Jlc2VydmVkNDBEV29yZDMgICh2b2lkKSB7IHJldHVybiAgNjQyIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2Zfc3lzUmVzZXJ2ZWQ0MERXb3JkNCAgKHZvaWQpIHsgcmV0dXJuICA2NDYg
OyB9ICAJfTsgCWNsYXNzIEVtUHJveHlGaXhlZEdsb2JhbHNUeXBlICAJewlwdWJsaWM6CXR5cGVk
ZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlGaXhlZEdsb2JhbHNUeXBlICAJKHZvaWQpOwlFbVBy
b3h5Rml4ZWRHbG9iYWxzVHlwZSAgCShjb25zdCBFbVByb3h5Rml4ZWRHbG9iYWxzVHlwZSAgJik7
CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9j
YWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDY1
MCAgOyB9CUVtUHJveHlGaXhlZEdsb2JhbHNUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJv
eHlGaXhlZEdsb2JhbHNUeXBlICAmKTsJRW1BbGlhc0ZpeGVkR2xvYmFsc1R5cGUgIDxMQVM+CW9w
ZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNGaXhlZEdsb2JhbHNUeXBlICA8TEFTPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA2
NTAgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJ
CQkJbWVtQ2FyZFNsb3RzIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWRiZ1dhc0VudGVy
ZWQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCW1lbUNhcmRJbmZvUCA7IAkgRW1BbGlh
c1VJbnQzMiA8TEFTPgkgCQkJCQkJbWVtU2VtYXBob3JlSUQgOyAJIEVtQWxpYXNVSW50MTYgPExB
Uz4JIAkJCQkJCW1lbURlYnVnTW9kZSA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZG1P
cGVuTGlzdCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlkYmdJbkRlYnVnZ2VyIDsgCSBF
bUFsaWFzVUludDggPExBUz4JIAkJCQkJCWRiZ1RyYWNpbmcgOyAJIEVtQWxpYXNlbXVwdHIgPExB
Uz4JIAkJCQkJCWRiZ0dsb2JhbHNQIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlkYmdT
ZXJHbG9iYWxzUCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJc3lzQXBwSW5mb1AgOyAJ
IEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXN5c0tlcm5lbERhdGFQIDsgCSBFbUFsaWFzZW11
cHRyIDxMQVM+CSAJCQkJCQlzeXNEaXNwYXRjaFRhYmxlUCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFT
PgkgCQkJCQkJc3lzT3duZXJJRHNJblVzZSA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJ
c3lzQU1YQXBwSW5mb1AgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXN5c0Nsb2NrRnJl
cSA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJc3lzSGFyZEtleUNyZWF0b3JzIDsgCSBF
bUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCXN5c0JhdHRlcnlDaGVja1RpbWVyIDsgCSBFbUFsaWFz
VUludDggPExBUz4JIAkJCQkJCXN5c0JhdHRlcnlNaW5UaHJlc2hvbGQgOyAJIEVtQWxpYXNVSW50
OCA8TEFTPgkgCQkJCQkJaHdyQmF0dGVyeUxldmVsIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJ
CQkJCQlzeXNOZXh0QmF0dGVyeUFsZXJ0VGltZXIgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJ
CQkJc3lzQmF0dGVyeVdhcm5UaHJlc2hvbGQgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJ
c3lzRGlzcGF0Y2hUYWJsZVJldiA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJc3lzRGlz
cGF0Y2hUYWJsZVNpemUgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXN5c0xpYlRhYmxl
UCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJc3lzTGliVGFibGVFbnRyaWVzIDsgCSBF
bUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlzeXNDb25zb2xlU3RhY2tDaHVua1AgOyAJIEVtQWxp
YXNlbXVwdHIgPExBUz4JIAkJCQkJCXN5c1VJU2hlbGxBcHBJbmZvUCA7IAkgRW1BbGlhc1VJbnQz
MiA8TEFTPgkgCQkJCQkJc3lzVGltZXJJRCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJ
c3lzQXV0b09mZkV2dFRpY2tzIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlzeXNBdXRv
T2ZmU2Vjb25kcyA7IAkgRW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJCQlzeXNSYW5kb21TZWVkIDsg
CSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlzbGtHbG9iYWxzUCA7IAkgRW1BbGlhc2VtdXB0
ciA8TEFTPgkgCQkJCQkJc2VyR2xvYmFsc1AgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJ
CXNjckdsb2JhbHNQIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlmcGxHbG9iYWxzUCA7
IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJcGVuR2xvYmFsc1AgOyAJIEVtQWxpYXNlbXVw
dHIgPExBUz4JIAkJCQkJCXN5c0V2dE1nckdsb2JhbHNQIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+
CSAJCQkJCQlzbmRHbG9iYWxzUCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJdGltR2xv
YmFsc1AgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWFsbUdsb2JhbHNQIDsgCSBFbUFs
aWFzZW11cHRyIDxMQVM+CSAJCQkJCQlmdHJHbG9iYWxzUCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFT
PgkgCQkJCQkJZ3JmR2xvYmFsc1AgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWtleUds
b2JhbHNQIDsgCSBFbUFsaWFzVUlHbG9iYWxzVHlwZSA8TEFTPgkgCQkJCXVpR2xvYmFscyA7IAkg
RW1BbGlhc1VJR2xvYmFsc1R5cGVDb21tb24gPExBUz4JIAkJdWlHbG9iYWxzQ29tbW9uIDsgCSBF
bUFsaWFzVUlHbG9iYWxzVHlwZVYxIDxMQVM+CSAJCQl1aUdsb2JhbHNWMSA7IAkgRW1BbGlhc1VJ
R2xvYmFsc1R5cGVWMiA8TEFTPgkgCQkJdWlHbG9iYWxzVjIgOyAJIEVtQWxpYXNVSUdsb2JhbHNU
eXBlVjMgPExBUz4JIAkJCXVpR2xvYmFsc1YzIDsgCSBFbUFsaWFzVUlHbG9iYWxzVHlwZVYzMSA8
TEFTPgkgCQkJdWlHbG9iYWxzVjMxIDsgCSBFbUFsaWFzVUlHbG9iYWxzVHlwZVYzMiA8TEFTPgkg
CQkJdWlHbG9iYWxzVjMyIDsgCSBFbUFsaWFzVUlHbG9iYWxzVHlwZVYzNSA8TEFTPgkgCQkJdWlH
bG9iYWxzVjM1IDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQl1aUV4dGVuc2lvbnNQIDsg
CSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQljdXJVSUFwcEluZm9QIDsgCSBFbUFsaWFzVUlu
dDMyIDxMQVM+CSAJCQkJCQluZXh0VUlBcHBEQklEIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJ
CQkJCQluZXh0VUlBcHBDbWQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCW5leHRVSUFw
cENtZFBCUCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQluZXh0VUlBcHBDYXJkTm8gOyAJ
IEVtQWxpYXNJbnQ4IDxMQVM+CSAJCQkJCQltZW1EYXRhV0VMZXZlbCA7IAkgRW1BbGlhc1VJbnQx
NiA8TEFTPgkgCQkJCQkJaHdyV2FrZVVwIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWh3
ckNQVUR1dHlDeWNsZSA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlod3JQZW5Eb3duIDsg
CSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlod3JDdXJUaWNrcyA7IAkgRW1BbGlhc1VJbnQz
MiA8TEFTPgkgCQkJCQkJaHdyVG90YWxSQU1TaXplIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJ
CQkJCQlod3JEb3plU3ViVGlja3MgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXNuZE9m
ZlRpY2tzIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXN5c1Jlc2V0RmxhZ3MgOyAJIEVt
QWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJc3lzQmF0dGVyeUtpbmQgOyAJIEVtQWxpYXNVSW50MzIg
PExBUz4JIAkJCQkJCW1lbU1pbkR5bkhlYXBGcmVlIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJ
CQkJCQlzeXNQcmVmRmxhZ3MgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXN5c0dsb2Jh
bHNQIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlzeXNNaXNjRmxhZ3MgOyAJIEVtQWxp
YXNVSW50MTYgPExBUz4JIAkJCQkJCXN5c0xpYk5ldCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkg
CQkJCQkJbmV0UGt0RnJlZVEgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXN5c0V2R3Jv
dXBJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJaXJxM0dsb2JhbHNQIDsgCSBFbUFs
aWFzVUludDMyIDxMQVM+CSAJCQkJCQlzeXNMYXN0QmF0dGVyeVdhcm5pbmcgOyAJIEVtQWxpYXNV
SW50MzIgPExBUz4JIAkJCQkJCXN5c0xvd01lbUNoZWNrc3VtIDsgCSBFbUFsaWFzVUludDE2IDxM
QVM+CSAJCQkJCQlod3JIYXJkd2FyZVJldiA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJ
ZG1Qcm90ZWN0TGlzdEggOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWh3ck1pc2NGbGFn
cyA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJc3lzUHJvZmlsZVJlZmNvbiA7IAkgRW1B
bGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJc3lzUHJvZmlsZVByb2NQIDsgCSBFbUFsaWFzVUludDMy
IDxMQVM+CSAJCQkJCQlmbHBTb2Z0RlBTQ1IgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJ
CWlyTGliR2xvYmFsc1AgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWV4Z0FjdGl2ZUxp
YiA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJdWlCdXN5Q291bnQgOyAJIEVtQWxpYXNl
bXVwdHIgPExBUz4JIAkJCQkJCWlycTFHbG9iYWxzUCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkg
CQkJCQkJaXJxMkdsb2JhbHNQIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlpcnE2R2xv
YmFsc1AgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWludGxNZ3JHbG9iYWxzUCA7IAkg
RW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJaW5saW5lU3RhcnQgOyAJIEVtQWxpYXNVSW50MTYg
PExBUz4JIAkJCQkJCWlubGluZUVuZCA7IAkgRW1BbGlhc0Jvb2xlYW4gPExBUz4JIAkJCQkJaW5s
aW5lQWN0aXZlIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWlubGluZURlZlRlcm0gOyAJ
IEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXRzbUZlcExpYlN0YXR1c1AgOyAJIEVtQWxpYXNV
SW50MTYgPExBUz4JIAkJCQkJCXRzbUZlcExpYlJlZk51bSA7IAkgRW1BbGlhc1VJbnQxNiA8TEFT
PgkgCQkJCQkJaW5saW5lSGlnaGxpZ2h0TGVuIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJ
CQlzeXNCYXR0ZXJ5RGF0YVAgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXN5c0JhdHRl
cnlWYWxpZEtpbmRzUCA7IAkgRW1BbGlhc0Jvb2xlYW4gPExBUz4JIAkJCQkJc3lzSW5TaHV0ZG93
biA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlzeXNNaW5XYWtldXBUaHJlc2hvbGQgOyAJ
IEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWh3ck1pc2NGbGFnc0V4dCA7IAkgRW1BbGlhc0Jv
b2xlYW4gPExBUz4JIAkJCQkJc3lzVXNlQ3JpdFdhcm5UaW1lciA7IAkgRW1BbGlhc0Jvb2xlYW4g
PExBUz4JIAkJCQkJc3lzQ3JpdFdhcm5UaW1lclJ1bm5pbmcgOyAJIEVtQWxpYXNJbnQxNiA8TEFT
PgkgCQkJCQkJc3lzQ3JpdFdhcm5SVENEYXlTdGFydGVkIDsgCSBFbUFsaWFzSW50MzIgPExBUz4J
IAkJCQkJCXN5c0NyaXRXYXJuVGlja1RpbWVyIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJ
CQlzeXNDcml0V2Fybkxhc3RUaWNrIDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkgCQkJCQlzeXND
aGFyZ2luZyA7IAkgRW1BbGlhc0Jvb2xlYW4gPExBUz4JIAkJCQkJc3lzVXBkYXRlVm9sdGFnZUxl
dmVsIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlub3RpZnlHbG9iYWxzSCA7IAkgRW1B
bGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJZXhwR2xvYmFsc1AgOyAJIEVtQWxpYXNVSW50MzIgPExB
Uz4JIAkJCQkJCXZmc0dsb2JhbHNQIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlzeXNS
ZXNlcnZlZDMxRFdvcmQzIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlzeXNSZXNlcnZl
ZDMxRFdvcmQ0IDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlyYW1HbG9iYWxzUCA7IAkg
RW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJaHdyQmF0dGVyeUdsb2JhbHNQIDsgCSBFbUFsaWFz
VUludDggPExBUz4JIAkJCQkJCWh3ckJhdHRlcnlQZXJjZW50IDsgCSBFbUFsaWFzVUludDggPExB
Uz4JIAkJCQkJCWNvbW1BY3Rpdml0eUZsYWdzIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJ
CQl1YXJ0MzI4R2xvYmFsc1AgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXN5c09FTUds
b2JhbDEgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXN5c09FTUdsb2JhbDIgOyAJIEVt
QWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWh3ckJhdHRlcnlTdGVwc1BlclZvbHQgOyAJIEVtQWxp
YXNlbXVwdHIgPExBUz4JIAkJCQkJCXN5c1BlbmRpbmdTdGFja0ZyZWVzIDsgCSBFbUFsaWFzVUlu
dDE2IDxMQVM+CSAJCQkJCQlzeXNEYXlDb3VudGVyIDsgCSBFbUFsaWFzSW50MTYgPExBUz4JIAkJ
CQkJCXN5c0JhdHRlcnlDaGVja1BlcmlvZCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJ
aHdySmVycnlQbGRTaGFkb3cgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXJhZGlvR2xv
YmFsc1AgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWZhdGFsQWxlcnRUZW1wbGF0ZVAg
OyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWZhdGFsQWxlcnRCdG5XaWR0aCA7IAkgRW1B
bGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJc2lsa3NjcmVlbkluZm9QIDsgCSBFbUFsaWFzVUludDE2
IDxMQVM+CSAJCQkJCQlpbmxpbmVEZWZDaGVja3N1bSA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkg
CQkJCQkJaW5saW5lRGVmRmllbGQgOyAJIEVtQWxpYXNCb29sZWFuIDxMQVM+CSAJCQkJCW5vdGlm
eUJyb2FkY2FzdFBlbmRpbmcgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJc3lzUmVzZXJ2
ZWQzNUJ5dGUxIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlod3JPRU1Db21wYW55SUQg
OyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWh3ck9FTURldmljZUlEIDsgCSBFbUFsaWFz
VUludDMyIDxMQVM+CSAJCQkJCQlod3JPRU1IQUxJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkg
CQkJCQkJc3lzVXBkYXRlR2xvYmFsc1AgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXNt
YWxsUk9NQ2hlY2tzdW0gOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXN5c05vdGlmeUlu
dGVycnVwdEdsb2JhbHNQIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlzeXNBcHBTdWJG
b250TGlzdFB0ciA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJc3lzVVNCQ29uZmlndXJh
dGlvbiA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJaW50bERpc3BhdGNoVGFibGVQIDsg
CSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkgCQkJCQlzeXNBdXRvTG9ja1Vwb25Qb3dlck9mZiA7IAkg
RW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJc3lzSGFyZFBvd2VyRXZ0VGlja3MgOyAJIEVtQWxp
YXNVSW50MzIgPExBUz4JIAkJCQkJCXN5c0F1dG9Mb2NrVGltZW91dFNlY3MgOyAJIEVtQWxpYXNl
bXVwdHIgPExBUz4JIAkJCQkJCWF0dG5HbG9iYWxzUCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkg
CQkJCQkJZXhwVmZzU2hhcmVkR2xvYmFsc1AgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJ
CWJ0RXhnTGliR2xvYmFsc1AgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXRlc3RIYXJu
ZXNzR2xvYmFsc1AgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXB3ck1hbmFnZXJHbG9i
YWxzUCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJaW5saW5lQ2xhdXNlT2Zmc2V0IDsg
CSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlidExpYkdsb2JhbHNQIDsgCSBFbUFsaWFzQm9v
bGVhbiA8TEFTPgkgCQkJCQlzeXNTZXRQd2RUaW1lb3V0QWxsb3dlZCA7IAkgRW1BbGlhc1VJbnQz
MiA8TEFTPgkgCQkJCQkJc3lzU2V0UHdkVGltZW91dFNlY3MgOyAJIEVtQWxpYXNVSW50MzIgPExB
Uz4JIAkJCQkJCXN5c1NldFB3ZFRpbWVvdXRUaWNrcyA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkg
CQkJCQkJZGJnTG9ja291dCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJc3lzUmVzZXJ2
ZWQ0MERXb3JkMSA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJc3lzUmVzZXJ2ZWQ0MERX
b3JkMiA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJc3lzUmVzZXJ2ZWQ0MERXb3JkMyA7
IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJc3lzUmVzZXJ2ZWQ0MERXb3JkNCA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21lbUNhcmRTbG90cyAgKHZvaWQpIHsgcmV0dXJuICAw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGJnV2FzRW50ZXJlZCAgKHZvaWQpIHsgcmV0
dXJuICAxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbWVtQ2FyZEluZm9QICAodm9pZCkg
eyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tZW1TZW1hcGhvcmVJRCAg
KHZvaWQpIHsgcmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbWVtRGVidWdN
b2RlICAodm9pZCkgeyByZXR1cm4gIDEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZG1P
cGVuTGlzdCAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2RiZ0luRGVidWdnZXIgICh2b2lkKSB7IHJldHVybiAgMTYgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9kYmdUcmFjaW5nICAodm9pZCkgeyByZXR1cm4gIDE3IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZGJnR2xvYmFsc1AgICh2b2lkKSB7IHJldHVybiAgMTggOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9kYmdTZXJHbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICAyMiA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0FwcEluZm9QICAodm9pZCkgeyByZXR1cm4gIDI2
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzS2VybmVsRGF0YVAgICh2b2lkKSB7IHJl
dHVybiAgMzAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNEaXNwYXRjaFRhYmxlUCAg
KHZvaWQpIHsgcmV0dXJuICAzNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c093bmVy
SURzSW5Vc2UgICh2b2lkKSB7IHJldHVybiAgMzggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9zeXNBTVhBcHBJbmZvUCAgKHZvaWQpIHsgcmV0dXJuICA0MiA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3N5c0Nsb2NrRnJlcSAgKHZvaWQpIHsgcmV0dXJuICA0NiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3N5c0hhcmRLZXlDcmVhdG9ycyAgKHZvaWQpIHsgcmV0dXJuICA1MCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRlcnlDaGVja1RpbWVyICAodm9pZCkg
eyByZXR1cm4gIDU0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dGVyeU1pblRo
cmVzaG9sZCAgKHZvaWQpIHsgcmV0dXJuICA1NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2h3ckJhdHRlcnlMZXZlbCAgKHZvaWQpIHsgcmV0dXJuICA1NyA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3N5c05leHRCYXR0ZXJ5QWxlcnRUaW1lciAgKHZvaWQpIHsgcmV0dXJuICA1OCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0JhdHRlcnlXYXJuVGhyZXNob2xkICAodm9p
ZCkgeyByZXR1cm4gIDYwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzRGlzcGF0Y2hU
YWJsZVJldiAgKHZvaWQpIHsgcmV0dXJuICA2MSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3N5c0Rpc3BhdGNoVGFibGVTaXplICAodm9pZCkgeyByZXR1cm4gIDYyIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2Zfc3lzTGliVGFibGVQICAodm9pZCkgeyByZXR1cm4gIDY0IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzTGliVGFibGVFbnRyaWVzICAodm9pZCkgeyByZXR1cm4g
IDY4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQ29uc29sZVN0YWNrQ2h1bmtQICAo
dm9pZCkgeyByZXR1cm4gIDcwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzVUlTaGVs
bEFwcEluZm9QICAodm9pZCkgeyByZXR1cm4gIDc0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2Zfc3lzVGltZXJJRCAgKHZvaWQpIHsgcmV0dXJuICA3OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3N5c0F1dG9PZmZFdnRUaWNrcyAgKHZvaWQpIHsgcmV0dXJuICA4MiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3N5c0F1dG9PZmZTZWNvbmRzICAodm9pZCkgeyByZXR1cm4gIDg2
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzUmFuZG9tU2VlZCAgKHZvaWQpIHsgcmV0
dXJuICA4OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Nsa0dsb2JhbHNQICAodm9pZCkg
eyByZXR1cm4gIDkyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2VyR2xvYmFsc1AgICh2
b2lkKSB7IHJldHVybiAgOTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zY3JHbG9iYWxz
UCAgKHZvaWQpIHsgcmV0dXJuICAxMDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mcGxH
bG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICAxMDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9wZW5HbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICAxMDggOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9zeXNFdnRNZ3JHbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICAxMTIgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9zbmRHbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICAxMTYgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90aW1HbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICAx
MjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hbG1HbG9iYWxzUCAgKHZvaWQpIHsgcmV0
dXJuICAxMjQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mdHJHbG9iYWxzUCAgKHZvaWQp
IHsgcmV0dXJuICAxMjggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ncmZHbG9iYWxzUCAg
KHZvaWQpIHsgcmV0dXJuICAxMzIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9rZXlHbG9i
YWxzUCAgKHZvaWQpIHsgcmV0dXJuICAxMzYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91
aUdsb2JhbHMgICh2b2lkKSB7IHJldHVybiAgMTQwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfdWlHbG9iYWxzQ29tbW9uICAodm9pZCkgeyByZXR1cm4gIDE0MCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3VpR2xvYmFsc1YxICAodm9pZCkgeyByZXR1cm4gIDE0MCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3VpR2xvYmFsc1YyICAodm9pZCkgeyByZXR1cm4gIDE0MCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpR2xvYmFsc1YzICAodm9pZCkgeyByZXR1cm4gIDE0
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpR2xvYmFsc1YzMSAgKHZvaWQpIHsgcmV0
dXJuICAxNDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUdsb2JhbHNWMzIgICh2b2lk
KSB7IHJldHVybiAgMTQwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdWlHbG9iYWxzVjM1
ICAodm9pZCkgeyByZXR1cm4gIDE0MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3VpRXh0
ZW5zaW9uc1AgICh2b2lkKSB7IHJldHVybiAgMzE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfY3VyVUlBcHBJbmZvUCAgKHZvaWQpIHsgcmV0dXJuICAzMjAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9uZXh0VUlBcHBEQklEICAodm9pZCkgeyByZXR1cm4gIDMyNCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX25leHRVSUFwcENtZCAgKHZvaWQpIHsgcmV0dXJuICAzMjggOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uZXh0VUlBcHBDbWRQQlAgICh2b2lkKSB7IHJldHVy
biAgMzMwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmV4dFVJQXBwQ2FyZE5vICAodm9p
ZCkgeyByZXR1cm4gIDMzNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21lbURhdGFXRUxl
dmVsICAodm9pZCkgeyByZXR1cm4gIDMzNSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2h3
cldha2VVcCAgKHZvaWQpIHsgcmV0dXJuICAzMzYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9od3JDUFVEdXR5Q3ljbGUgICh2b2lkKSB7IHJldHVybiAgMzM4IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfaHdyUGVuRG93biAgKHZvaWQpIHsgcmV0dXJuICAzMzkgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9od3JDdXJUaWNrcyAgKHZvaWQpIHsgcmV0dXJuICAzNDAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9od3JUb3RhbFJBTVNpemUgICh2b2lkKSB7IHJldHVybiAg
MzQ0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaHdyRG96ZVN1YlRpY2tzICAodm9pZCkg
eyByZXR1cm4gIDM0OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NuZE9mZlRpY2tzICAo
dm9pZCkgeyByZXR1cm4gIDM1MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c1Jlc2V0
RmxhZ3MgICh2b2lkKSB7IHJldHVybiAgMzU2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
c3lzQmF0dGVyeUtpbmQgICh2b2lkKSB7IHJldHVybiAgMzU3IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfbWVtTWluRHluSGVhcEZyZWUgICh2b2lkKSB7IHJldHVybiAgMzU4IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzUHJlZkZsYWdzICAodm9pZCkgeyByZXR1cm4gIDM2MiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0dsb2JhbHNQICAodm9pZCkgeyByZXR1cm4g
IDM2NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c01pc2NGbGFncyAgKHZvaWQpIHsg
cmV0dXJuICAzNjggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNMaWJOZXQgICh2b2lk
KSB7IHJldHVybiAgMzcwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmV0UGt0RnJlZVEg
ICh2b2lkKSB7IHJldHVybiAgMzcyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzRXZH
cm91cElEICAodm9pZCkgeyByZXR1cm4gIDM3NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2lycTNHbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICAzODAgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9zeXNMYXN0QmF0dGVyeVdhcm5pbmcgICh2b2lkKSB7IHJldHVybiAgMzg0IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzTG93TWVtQ2hlY2tzdW0gICh2b2lkKSB7IHJldHVy
biAgMzg4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaHdySGFyZHdhcmVSZXYgICh2b2lk
KSB7IHJldHVybiAgMzkyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZG1Qcm90ZWN0TGlz
dEggICh2b2lkKSB7IHJldHVybiAgMzk0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaHdy
TWlzY0ZsYWdzICAodm9pZCkgeyByZXR1cm4gIDM5OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3N5c1Byb2ZpbGVSZWZjb24gICh2b2lkKSB7IHJldHVybiAgNDAwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2Zfc3lzUHJvZmlsZVByb2NQICAodm9pZCkgeyByZXR1cm4gIDQwNCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZscFNvZnRGUFNDUiAgKHZvaWQpIHsgcmV0dXJuICA0
MDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pckxpYkdsb2JhbHNQICAodm9pZCkgeyBy
ZXR1cm4gIDQxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V4Z0FjdGl2ZUxpYiAgKHZv
aWQpIHsgcmV0dXJuICA0MTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91aUJ1c3lDb3Vu
dCAgKHZvaWQpIHsgcmV0dXJuICA0MTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pcnEx
R2xvYmFsc1AgICh2b2lkKSB7IHJldHVybiAgNDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfaXJxMkdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDQyNCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2lycTZHbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICA0MjggOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9pbnRsTWdyR2xvYmFsc1AgICh2b2lkKSB7IHJldHVybiAgNDMyIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5saW5lU3RhcnQgICh2b2lkKSB7IHJldHVybiAg
NDM2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5saW5lRW5kICAodm9pZCkgeyByZXR1
cm4gIDQzOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2lubGluZUFjdGl2ZSAgKHZvaWQp
IHsgcmV0dXJuICA0NDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbmxpbmVEZWZUZXJt
ICAodm9pZCkgeyByZXR1cm4gIDQ0MSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RzbUZl
cExpYlN0YXR1c1AgICh2b2lkKSB7IHJldHVybiAgNDQyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfdHNtRmVwTGliUmVmTnVtICAodm9pZCkgeyByZXR1cm4gIDQ0NiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2lubGluZUhpZ2hsaWdodExlbiAgKHZvaWQpIHsgcmV0dXJuICA0NDgg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNCYXR0ZXJ5RGF0YVAgICh2b2lkKSB7IHJl
dHVybiAgNDUwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzQmF0dGVyeVZhbGlkS2lu
ZHNQICAodm9pZCkgeyByZXR1cm4gIDQ1NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5
c0luU2h1dGRvd24gICh2b2lkKSB7IHJldHVybiAgNDU4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2Zfc3lzTWluV2FrZXVwVGhyZXNob2xkICAodm9pZCkgeyByZXR1cm4gIDQ1OSA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2h3ck1pc2NGbGFnc0V4dCAgKHZvaWQpIHsgcmV0dXJuICA0
NjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNVc2VDcml0V2FyblRpbWVyICAodm9p
ZCkgeyByZXR1cm4gIDQ2NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c0NyaXRXYXJu
VGltZXJSdW5uaW5nICAodm9pZCkgeyByZXR1cm4gIDQ2NSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3N5c0NyaXRXYXJuUlRDRGF5U3RhcnRlZCAgKHZvaWQpIHsgcmV0dXJuICA0NjYgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNDcml0V2FyblRpY2tUaW1lciAgKHZvaWQpIHsg
cmV0dXJuICA0NjggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNDcml0V2Fybkxhc3RU
aWNrICAodm9pZCkgeyByZXR1cm4gIDQ3MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5
c0NoYXJnaW5nICAodm9pZCkgeyByZXR1cm4gIDQ3NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3N5c1VwZGF0ZVZvbHRhZ2VMZXZlbCAgKHZvaWQpIHsgcmV0dXJuICA0NzcgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9ub3RpZnlHbG9iYWxzSCAgKHZvaWQpIHsgcmV0dXJuICA0Nzgg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9leHBHbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJu
ICA0ODIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl92ZnNHbG9iYWxzUCAgKHZvaWQpIHsg
cmV0dXJuICA0ODYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNSZXNlcnZlZDMxRFdv
cmQzICAodm9pZCkgeyByZXR1cm4gIDQ5MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5
c1Jlc2VydmVkMzFEV29yZDQgICh2b2lkKSB7IHJldHVybiAgNDk0IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfcmFtR2xvYmFsc1AgICh2b2lkKSB7IHJldHVybiAgNDk4IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfaHdyQmF0dGVyeUdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDUw
MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2h3ckJhdHRlcnlQZXJjZW50ICAodm9pZCkg
eyByZXR1cm4gIDUwNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1BY3Rpdml0eUZs
YWdzICAodm9pZCkgeyByZXR1cm4gIDUwNyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Vh
cnQzMjhHbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICA1MDggOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9zeXNPRU1HbG9iYWwxICAodm9pZCkgeyByZXR1cm4gIDUxMiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3N5c09FTUdsb2JhbDIgICh2b2lkKSB7IHJldHVybiAgNTE2IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaHdyQmF0dGVyeVN0ZXBzUGVyVm9sdCAgKHZvaWQpIHsg
cmV0dXJuICA1MjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNQZW5kaW5nU3RhY2tG
cmVlcyAgKHZvaWQpIHsgcmV0dXJuICA1MjIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9z
eXNEYXlDb3VudGVyICAodm9pZCkgeyByZXR1cm4gIDUyNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3N5c0JhdHRlcnlDaGVja1BlcmlvZCAgKHZvaWQpIHsgcmV0dXJuICA1MjggOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9od3JKZXJyeVBsZFNoYWRvdyAgKHZvaWQpIHsgcmV0dXJu
ICA1MzAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yYWRpb0dsb2JhbHNQICAodm9pZCkg
eyByZXR1cm4gIDUzMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZhdGFsQWxlcnRUZW1w
bGF0ZVAgICh2b2lkKSB7IHJldHVybiAgNTM2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
ZmF0YWxBbGVydEJ0bldpZHRoICAodm9pZCkgeyByZXR1cm4gIDU0MCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3NpbGtzY3JlZW5JbmZvUCAgKHZvaWQpIHsgcmV0dXJuICA1NDIgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbmxpbmVEZWZDaGVja3N1bSAgKHZvaWQpIHsgcmV0dXJu
ICA1NDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbmxpbmVEZWZGaWVsZCAgKHZvaWQp
IHsgcmV0dXJuICA1NDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ub3RpZnlCcm9hZGNh
c3RQZW5kaW5nICAodm9pZCkgeyByZXR1cm4gIDU1MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3N5c1Jlc2VydmVkMzVCeXRlMSAgKHZvaWQpIHsgcmV0dXJuICA1NTMgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9od3JPRU1Db21wYW55SUQgICh2b2lkKSB7IHJldHVybiAgNTU0IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaHdyT0VNRGV2aWNlSUQgICh2b2lkKSB7IHJldHVy
biAgNTU4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaHdyT0VNSEFMSUQgICh2b2lkKSB7
IHJldHVybiAgNTYyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzVXBkYXRlR2xvYmFs
c1AgICh2b2lkKSB7IHJldHVybiAgNTY2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc21h
bGxST01DaGVja3N1bSAgKHZvaWQpIHsgcmV0dXJuICA1NzAgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9zeXNOb3RpZnlJbnRlcnJ1cHRHbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICA1NzIg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNBcHBTdWJGb250TGlzdFB0ciAgKHZvaWQp
IHsgcmV0dXJuICA1NzYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNVU0JDb25maWd1
cmF0aW9uICAodm9pZCkgeyByZXR1cm4gIDU4MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2ludGxEaXNwYXRjaFRhYmxlUCAgKHZvaWQpIHsgcmV0dXJuICA1ODIgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9zeXNBdXRvTG9ja1Vwb25Qb3dlck9mZiAgKHZvaWQpIHsgcmV0dXJuICA1
ODYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNIYXJkUG93ZXJFdnRUaWNrcyAgKHZv
aWQpIHsgcmV0dXJuICA1ODggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zeXNBdXRvTG9j
a1RpbWVvdXRTZWNzICAodm9pZCkgeyByZXR1cm4gIDU5MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2F0dG5HbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICA1OTYgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9leHBWZnNTaGFyZWRHbG9iYWxzUCAgKHZvaWQpIHsgcmV0dXJuICA2MDAg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9idEV4Z0xpYkdsb2JhbHNQICAodm9pZCkgeyBy
ZXR1cm4gIDYwNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Rlc3RIYXJuZXNzR2xvYmFs
c1AgICh2b2lkKSB7IHJldHVybiAgNjA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcHdy
TWFuYWdlckdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDYxMiA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2lubGluZUNsYXVzZU9mZnNldCAgKHZvaWQpIHsgcmV0dXJuICA2MTYgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9idExpYkdsb2JhbHNQICAodm9pZCkgeyByZXR1cm4gIDYx
OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c1NldFB3ZFRpbWVvdXRBbGxvd2VkICAo
dm9pZCkgeyByZXR1cm4gIDYyMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c1NldFB3
ZFRpbWVvdXRTZWNzICAodm9pZCkgeyByZXR1cm4gIDYyNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3N5c1NldFB3ZFRpbWVvdXRUaWNrcyAgKHZvaWQpIHsgcmV0dXJuICA2MjggOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9kYmdMb2Nrb3V0ICAodm9pZCkgeyByZXR1cm4gIDYzMiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N5c1Jlc2VydmVkNDBEV29yZDEgICh2b2lkKSB7
IHJldHVybiAgNjM0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3lzUmVzZXJ2ZWQ0MERX
b3JkMiAgKHZvaWQpIHsgcmV0dXJuICA2MzggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9z
eXNSZXNlcnZlZDQwRFdvcmQzICAodm9pZCkgeyByZXR1cm4gIDY0MiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3N5c1Jlc2VydmVkNDBEV29yZDQgICh2b2lkKSB7IHJldHVybiAgNjQ2IDsg
fSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNMb3dNZW1IZHJUeXBl
ICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxp
YXNMb3dNZW1IZHJUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc0xvd01lbUhkclR5cGUgIAkoY29u
c3QgRW1BbGlhc0xvd01lbUhkclR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29u
c3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0
dXJuICAgICA4MjggIDsgfQlFbUFsaWFzTG93TWVtSGRyVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNv
bnN0IEVtQWxpYXNMb3dNZW1IZHJUeXBlICA8QT4mKTsJRW1BbGlhc0xvd01lbUhkclR5cGUgIDxB
PglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzTG93TWVtSGRyVHlwZSAgPEE+CW9wZXJh
dG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNMb3dNZW1IZHJUeXBlICAJKHZvaWQp
OwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzTTY4S0V4Y1RhYmxlVHlwZSA8
QT4JIAkJCXZlY3RvcnMgOyAJIEVtQWxpYXNGaXhlZEdsb2JhbHNUeXBlIDxBPgkgCQkJZ2xvYmFs
cyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3ZlY3RvcnMgICh2b2lkKSB7IHJldHVy
biAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dsb2JhbHMgICh2b2lkKSB7IHJldHVy
biAgMjU2IDsgfSAgCX07IAljbGFzcyBFbVByb3h5TG93TWVtSGRyVHlwZSAgCXsJcHVibGljOgl0
eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5TG93TWVtSGRyVHlwZSAgCSh2b2lkKTsJRW1Q
cm94eUxvd01lbUhkclR5cGUgIAkoY29uc3QgRW1Qcm94eUxvd01lbUhkclR5cGUgICYpOwlwdHJf
dHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0
YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA4MjggIDsg
fQlFbVByb3h5TG93TWVtSGRyVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5TG93TWVt
SGRyVHlwZSAgJik7CUVtQWxpYXNMb3dNZW1IZHJUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQp
Owljb25zdCBFbUFsaWFzTG93TWVtSGRyVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25z
dDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgODI4ICBdOwl9IGZMb2NhbERh
dGE7CXB1YmxpYzoJICAgICBFbUFsaWFzTTY4S0V4Y1RhYmxlVHlwZSA8TEFTPgkgCQkJdmVjdG9y
cyA7IAkgRW1BbGlhc0ZpeGVkR2xvYmFsc1R5cGUgPExBUz4JIAkJCWdsb2JhbHMgOyAgCSAgICAg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl92ZWN0b3JzICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9nbG9iYWxzICAodm9pZCkgeyByZXR1cm4gIDI1NiA7IH0g
IAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzU3lzQXBwSW5mb1R5cGUg
IAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlh
c1N5c0FwcEluZm9UeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1N5c0FwcEluZm9UeXBlICAJKGNv
bnN0IEVtQWxpYXNTeXNBcHBJbmZvVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBj
b25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyBy
ZXR1cm4gICAgIDYwICA7IH0JRW1BbGlhc1N5c0FwcEluZm9UeXBlICA8QT4mCW9wZXJhdG9yPSAo
Y29uc3QgRW1BbGlhc1N5c0FwcEluZm9UeXBlICA8QT4mKTsJRW1BbGlhc1N5c0FwcEluZm9UeXBl
ICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c0FwcEluZm9UeXBlICA8QT4J
b3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1N5c0FwcEluZm9UeXBlICAJ
KHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzSW50MTYgPEE+CSAJ
CQkJCQljbWQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQljbWRQQlAgOyAJIEVtQWxpYXNV
SW50MTYgPEE+CSAJCQkJCQlsYXVuY2hGbGFncyA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJ
CXRhc2tJRCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWNvZGVIIDsgCSBFbUFsaWFzZW11
cHRyIDxBPgkgCQkJCQkJZGJQIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJc3RhY2tQIDsg
CSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZ2xvYmFsc0NodW5rUCA7IAkgRW1BbGlhc1VJbnQx
NiA8QT4JIAkJCQkJCW1lbU93bmVySUQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlkbUFj
Y2Vzc1AgOyAJIEVtQWxpYXNFcnIgPEE+CSAJCQkJCQlkbUxhc3RFcnIgOyAJIEVtQWxpYXNlbXVw
dHIgPEE+CSAJCQkJCQllcnJFeGNlcHRpb25QIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJ
YTVQdHIgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlzdGFja0VuZFAgOyAJIEVtQWxpYXNl
bXVwdHIgPEE+CSAJCQkJCQlnbG9iYWxFbmRQIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJ
cm9vdFAgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlleHRyYVAgOyAgCSAgICAgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9jbWQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2NtZFBCUCAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfbGF1bmNoRmxhZ3MgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3Rhc2tJRCAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfY29kZUggICh2b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9kYlAgICh2b2lkKSB7IHJldHVybiAgMTYgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9zdGFja1AgICh2b2lkKSB7IHJldHVybiAgMjAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9nbG9iYWxzQ2h1bmtQICAodm9pZCkgeyByZXR1cm4gIDI0IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfbWVtT3duZXJJRCAgKHZvaWQpIHsgcmV0dXJuICAyOCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2RtQWNjZXNzUCAgKHZvaWQpIHsgcmV0dXJuICAzMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RtTGFzdEVyciAgKHZvaWQpIHsgcmV0dXJuICAzNCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2VyckV4Y2VwdGlvblAgICh2b2lkKSB7IHJldHVy
biAgMzYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hNVB0ciAgKHZvaWQpIHsgcmV0dXJu
ICA0MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N0YWNrRW5kUCAgKHZvaWQpIHsgcmV0
dXJuICA0NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dsb2JhbEVuZFAgICh2b2lkKSB7
IHJldHVybiAgNDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yb290UCAgKHZvaWQpIHsg
cmV0dXJuICA1MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V4dHJhUCAgKHZvaWQpIHsg
cmV0dXJuICA1NiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVN5c0FwcEluZm9UeXBlICAJewlwdWJs
aWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlTeXNBcHBJbmZvVHlwZSAgCSh2b2lk
KTsJRW1Qcm94eVN5c0FwcEluZm9UeXBlICAJKGNvbnN0IEVtUHJveHlTeXNBcHBJbmZvVHlwZSAg
Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZm
TG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAg
IDYwICA7IH0JRW1Qcm94eVN5c0FwcEluZm9UeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJv
eHlTeXNBcHBJbmZvVHlwZSAgJik7CUVtQWxpYXNTeXNBcHBJbmZvVHlwZSAgPExBUz4Jb3BlcmF0
b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c0FwcEluZm9UeXBlICA8TEFTPglvcGVyYXRvcltd
IChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA2MCAgXTsJ
fSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc0ludDE2IDxMQVM+CSAJCQkJCQljbWQg
OyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWNtZFBCUCA7IAkgRW1BbGlhc1VJbnQxNiA8
TEFTPgkgCQkJCQkJbGF1bmNoRmxhZ3MgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXRh
c2tJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJY29kZUggOyAJIEVtQWxpYXNlbXVw
dHIgPExBUz4JIAkJCQkJCWRiUCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJc3RhY2tQ
IDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlnbG9iYWxzQ2h1bmtQIDsgCSBFbUFsaWFz
VUludDE2IDxMQVM+CSAJCQkJCQltZW1Pd25lcklEIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJ
CQkJCQlkbUFjY2Vzc1AgOyAJIEVtQWxpYXNFcnIgPExBUz4JIAkJCQkJCWRtTGFzdEVyciA7IAkg
RW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZXJyRXhjZXB0aW9uUCA7IAkgRW1BbGlhc2VtdXB0
ciA8TEFTPgkgCQkJCQkJYTVQdHIgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXN0YWNr
RW5kUCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZ2xvYmFsRW5kUCA7IAkgRW1BbGlh
c2VtdXB0ciA8TEFTPgkgCQkJCQkJcm9vdFAgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJ
CWV4dHJhUCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NtZCAgKHZvaWQpIHsgcmV0
dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY21kUEJQICAodm9pZCkgeyByZXR1
cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sYXVuY2hGbGFncyAgKHZvaWQpIHsg
cmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGFza0lEICAodm9pZCkgeyBy
ZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb2RlSCAgKHZvaWQpIHsgcmV0
dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RiUCAgKHZvaWQpIHsgcmV0dXJu
ICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N0YWNrUCAgKHZvaWQpIHsgcmV0dXJu
ICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dsb2JhbHNDaHVua1AgICh2b2lkKSB7
IHJldHVybiAgMjQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tZW1Pd25lcklEICAodm9p
ZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZG1BY2Nlc3NQICAo
dm9pZCkgeyByZXR1cm4gIDMwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZG1MYXN0RXJy
ICAodm9pZCkgeyByZXR1cm4gIDM0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXJyRXhj
ZXB0aW9uUCAgKHZvaWQpIHsgcmV0dXJuICAzNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2E1UHRyICAodm9pZCkgeyByZXR1cm4gIDQwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
c3RhY2tFbmRQICAodm9pZCkgeyByZXR1cm4gIDQ0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZ2xvYmFsRW5kUCAgKHZvaWQpIHsgcmV0dXJuICA0OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3Jvb3RQICAodm9pZCkgeyByZXR1cm4gIDUyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfZXh0cmFQICAodm9pZCkgeyByZXR1cm4gIDU2IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUg
PGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNTeXNMaWJUYmxFbnRyeVR5cGUgIAl7CXB1YmxpYzoJdHlw
ZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1N5c0xpYlRibEVudHJ5
VHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNTeXNMaWJUYmxFbnRyeVR5cGUgIAkoY29uc3QgRW1B
bGlhc1N5c0xpYlRibEVudHJ5VHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25z
dAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1
cm4gICAgIDEwICA7IH0JRW1BbGlhc1N5c0xpYlRibEVudHJ5VHlwZSAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IEVtQWxpYXNTeXNMaWJUYmxFbnRyeVR5cGUgIDxBPiYpOwlFbUFsaWFzU3lzTGliVGJs
RW50cnlUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c0xpYlRibEVu
dHJ5VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNTeXNM
aWJUYmxFbnRyeVR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVt
QWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlkaXNwYXRjaFRibFAgOyAJIEVtQWxpYXNlbXVwdHIgPEE+
CSAJCQkJCQlnbG9iYWxzUCA7IAkgRW1BbGlhc0xvY2FsSUQgPEE+CSAJCQkJCWRiSUQgOyAJIEVt
QWxpYXNlbXVwdHIgPEE+CSAJCQkJCQljb2RlUnNjSCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2Rpc3BhdGNoVGJsUCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZ2xvYmFsc1AgICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2RiSUQgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2NvZGVSc2NIICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAgCX07IAljbGFzcyBF
bVByb3h5U3lzTGliVGJsRW50cnlUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5
cGU7CUVtUHJveHlTeXNMaWJUYmxFbnRyeVR5cGUgIAkodm9pZCk7CUVtUHJveHlTeXNMaWJUYmxF
bnRyeVR5cGUgIAkoY29uc3QgRW1Qcm94eVN5c0xpYlRibEVudHJ5VHlwZSAgJik7CXB0cl90eXBl
CQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9
CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDEwICA7IH0JRW1Q
cm94eVN5c0xpYlRibEVudHJ5VHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5U3lzTGli
VGJsRW50cnlUeXBlICAmKTsJRW1BbGlhc1N5c0xpYlRibEVudHJ5VHlwZSAgPExBUz4Jb3BlcmF0
b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c0xpYlRibEVudHJ5VHlwZSAgPExBUz4Jb3BlcmF0
b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMTAg
IF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJ
CWRpc3BhdGNoVGJsUCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZ2xvYmFsc1AgOyAJ
IEVtQWxpYXNMb2NhbElEIDxMQVM+CSAJCQkJCWRiSUQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4J
IAkJCQkJCWNvZGVSc2NIIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGlzcGF0Y2hU
YmxQICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nbG9i
YWxzUCAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGJJ
RCAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29kZVJz
Y0ggICh2b2lkKSB7IHJldHVybiAgMTIgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4J
Y2xhc3MgRW1BbGlhc1BlbkJ0bkluZm9UeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUg
QTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNQZW5CdG5JbmZvVHlwZSAgCShwdHJfdHlwZSk7
CUVtQWxpYXNQZW5CdG5JbmZvVHlwZSAgCShjb25zdCBFbUFsaWFzUGVuQnRuSW5mb1R5cGUgICYp
OwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMg
c2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAxNCAgOyB9CUVtQWxpYXNQZW5C
dG5JbmZvVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNQZW5CdG5JbmZvVHlwZSAg
PEE+Jik7CUVtQWxpYXNQZW5CdG5JbmZvVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0
IEVtQWxpYXNQZW5CdG5JbmZvVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZh
dGU6CUVtQWxpYXNQZW5CdG5JbmZvVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJs
aWM6CSAgICAgRW1BbGlhc1JlY3RhbmdsZVR5cGUgPEE+CSAJCQkJYm91bmRzUiA7IAkgRW1BbGlh
c1dDaGFyIDxBPgkgCQkJCQkJYXNjaWlDb2RlIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJ
a2V5Q29kZSA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCW1vZGlmaWVycyA7ICAJICAgICBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2JvdW5kc1IgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2FzY2lpQ29kZSAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfa2V5Q29kZSAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21vZGlmaWVycyAgKHZvaWQpIHsgcmV0dXJuICAxMiA7
IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVBlbkJ0bkluZm9UeXBlICAJewlwdWJsaWM6CXR5cGVkZWYg
dm9pZCogcHRyX3R5cGU7CUVtUHJveHlQZW5CdG5JbmZvVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVBl
bkJ0bkluZm9UeXBlICAJKGNvbnN0IEVtUHJveHlQZW5CdG5JbmZvVHlwZSAgJik7CXB0cl90eXBl
CQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9
CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDE0ICA7IH0JRW1Q
cm94eVBlbkJ0bkluZm9UeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlQZW5CdG5JbmZv
VHlwZSAgJik7CUVtQWxpYXNQZW5CdG5JbmZvVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJ
Y29uc3QgRW1BbGlhc1BlbkJ0bkluZm9UeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0
Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAxNCAgXTsJfSBmTG9jYWxEYXRh
OwlwdWJsaWM6CSAgICAgRW1BbGlhc1JlY3RhbmdsZVR5cGUgPExBUz4JIAkJCQlib3VuZHNSIDsg
CSBFbUFsaWFzV0NoYXIgPExBUz4JIAkJCQkJCWFzY2lpQ29kZSA7IAkgRW1BbGlhc1VJbnQxNiA8
TEFTPgkgCQkJCQkJa2V5Q29kZSA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJbW9kaWZp
ZXJzIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYm91bmRzUiAgKHZvaWQpIHsgcmV0
dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYXNjaWlDb2RlICAodm9pZCkgeyBy
ZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9rZXlDb2RlICAodm9pZCkgeyBy
ZXR1cm4gIDEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbW9kaWZpZXJzICAodm9pZCkg
eyByZXR1cm4gIDEyIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxp
YXNTbmRDb21tYW5kVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBl
IHB0cl90eXBlOwlFbUFsaWFzU25kQ29tbWFuZFR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzU25k
Q29tbWFuZFR5cGUgIAkoY29uc3QgRW1BbGlhc1NuZENvbW1hbmRUeXBlICAmKTsJcHRyX3R5cGUJ
CQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0
U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTAgIDsgfQlFbUFsaWFzU25kQ29tbWFuZFR5cGUg
IDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzU25kQ29tbWFuZFR5cGUgIDxBPiYpOwlFbUFs
aWFzU25kQ29tbWFuZFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU25k
Q29tbWFuZFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFz
U25kQ29tbWFuZFR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVt
QWxpYXNVSW50OCA8QT4JIAkJCQkJCWNtZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJcmVz
ZXJ2ZWQgOyAJIEVtQWxpYXNJbnQzMiA8QT4JIAkJCQkJCXBhcmFtMSA7IAkgRW1BbGlhc1VJbnQx
NiA8QT4JIAkJCQkJCXBhcmFtMiA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXBhcmFtMyA7
ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NtZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVzZXJ2ZWQgICh2b2lkKSB7IHJldHVybiAgMSA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BhcmFtMSAgKHZvaWQpIHsgcmV0dXJuICAyIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcGFyYW0yICAodm9pZCkgeyByZXR1cm4gIDYgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wYXJhbTMgICh2b2lkKSB7IHJldHVybiAgOCA7IH0g
IAl9OyAJY2xhc3MgRW1Qcm94eVNuZENvbW1hbmRUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9p
ZCogcHRyX3R5cGU7CUVtUHJveHlTbmRDb21tYW5kVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVNuZENv
bW1hbmRUeXBlICAJKGNvbnN0IEVtUHJveHlTbmRDb21tYW5kVHlwZSAgJik7CXB0cl90eXBlCQkJ
R2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0
YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDEwICA7IH0JRW1Qcm94
eVNuZENvbW1hbmRUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlTbmRDb21tYW5kVHlw
ZSAgJik7CUVtQWxpYXNTbmRDb21tYW5kVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29u
c3QgRW1BbGlhc1NuZENvbW1hbmRUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAxMCAgXTsJfSBmTG9jYWxEYXRhOwlw
dWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQljbWQgOyAJIEVtQWxpYXNVSW50
OCA8TEFTPgkgCQkJCQkJcmVzZXJ2ZWQgOyAJIEVtQWxpYXNJbnQzMiA8TEFTPgkgCQkJCQkJcGFy
YW0xIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlwYXJhbTIgOyAJIEVtQWxpYXNVSW50
MTYgPExBUz4JIAkJCQkJCXBhcmFtMyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Nt
ZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVzZXJ2
ZWQgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BhcmFt
MSAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcGFyYW0y
ICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wYXJhbTMg
ICh2b2lkKSB7IHJldHVybiAgOCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFz
cyBFbUFsaWFza2VybmVsX2luZm9fdGFzayAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6
OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFza2VybmVsX2luZm9fdGFzayAgCShwdHJfdHlwZSk7
CUVtQWxpYXNrZXJuZWxfaW5mb190YXNrICAJKGNvbnN0IEVtQWxpYXNrZXJuZWxfaW5mb190YXNr
ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3Rh
dGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNTYgIDsgfQlFbUFsaWFz
a2VybmVsX2luZm9fdGFzayAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNrZXJuZWxfaW5m
b190YXNrICA8QT4mKTsJRW1BbGlhc2tlcm5lbF9pbmZvX3Rhc2sgIDxBPglvcGVyYXRvcltdIChp
bnQpOwljb25zdCBFbUFsaWFza2VybmVsX2luZm9fdGFzayAgPEE+CW9wZXJhdG9yW10gKGludCkg
Y29uc3Q7CXByaXZhdGU6CUVtQWxpYXNrZXJuZWxfaW5mb190YXNrICAJKHZvaWQpOwlwdHJfdHlw
ZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJaWQgOyAJIEVt
QWxpYXNVSW50MzIgPEE+CSAJCQkJCQluZXh0SUQgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJ
CQl0YWcgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlzdGF0dXMgOyAJIEVtQWxpYXNVSW50
MzIgPEE+CSAJCQkJCQl0aW1lciA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXRpbWVTbGlj
ZSA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJcHJpb3JpdHkgOyAJIEVtQWxpYXNVSW50MzIg
PEE+CSAJCQkJCQlhdHRyaWJ1dGVzIDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQlwZW5kaW5n
Q2FsbHMgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlzZW5kZXJUYXNrSUQgOyAJIEVtQWxp
YXNVSW50MzIgPEE+CSAJCQkJCQltc2dFeGNoYW5nZUlEIDsgCSBFbUFsaWFzVUludDMyIDxBPgkg
CQkJCQkJdGNiUCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXN0YWNrUCA7IAkgRW1BbGlh
c1VJbnQzMiA8QT4JIAkJCQkJCXN0YWNrU3RhcnQgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJ
CQlzdGFja1NpemUgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pZCAgKHZvaWQpIHsg
cmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmV4dElEICAodm9pZCkgeyBy
ZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90YWcgICh2b2lkKSB7IHJldHVy
biAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N0YXR1cyAgKHZvaWQpIHsgcmV0dXJu
ICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RpbWVyICAodm9pZCkgeyByZXR1cm4g
IDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGltZVNsaWNlICAodm9pZCkgeyByZXR1
cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcHJpb3JpdHkgICh2b2lkKSB7IHJl
dHVybiAgMjQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hdHRyaWJ1dGVzICAodm9pZCkg
eyByZXR1cm4gIDI2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcGVuZGluZ0NhbGxzICAo
dm9pZCkgeyByZXR1cm4gIDMwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2VuZGVyVGFz
a0lEICAodm9pZCkgeyByZXR1cm4gIDMyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbXNn
RXhjaGFuZ2VJRCAgKHZvaWQpIHsgcmV0dXJuICAzNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3RjYlAgICh2b2lkKSB7IHJldHVybiAgNDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9zdGFja1AgICh2b2lkKSB7IHJldHVybiAgNDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9zdGFja1N0YXJ0ICAodm9pZCkgeyByZXR1cm4gIDQ4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2Zfc3RhY2tTaXplICAodm9pZCkgeyByZXR1cm4gIDUyIDsgfSAgCX07IAljbGFzcyBFbVBy
b3h5a2VybmVsX2luZm9fdGFzayAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlF
bVByb3h5a2VybmVsX2luZm9fdGFzayAgCSh2b2lkKTsJRW1Qcm94eWtlcm5lbF9pbmZvX3Rhc2sg
IAkoY29uc3QgRW1Qcm94eWtlcm5lbF9pbmZvX3Rhc2sgICYpOwlwdHJfdHlwZQkJCUdldFB0cgko
dm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6
ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA1NiAgOyB9CUVtUHJveHlrZXJuZWxf
aW5mb190YXNrICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlrZXJuZWxfaW5mb190YXNrICAm
KTsJRW1BbGlhc2tlcm5lbF9pbmZvX3Rhc2sgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0
IEVtQWxpYXNrZXJuZWxfaW5mb190YXNrICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA1NiAgXTsJfSBmTG9jYWxEYXRhOwlw
dWJsaWM6CSAgICAgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJaWQgOyAJIEVtQWxpYXNVSW50
MzIgPExBUz4JIAkJCQkJCW5leHRJRCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJdGFn
IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlzdGF0dXMgOyAJIEVtQWxpYXNVSW50MzIg
PExBUz4JIAkJCQkJCXRpbWVyIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQl0aW1lU2xp
Y2UgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJcHJpb3JpdHkgOyAJIEVtQWxpYXNVSW50
MzIgPExBUz4JIAkJCQkJCWF0dHJpYnV0ZXMgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJ
cGVuZGluZ0NhbGxzIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlzZW5kZXJUYXNrSUQg
OyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCW1zZ0V4Y2hhbmdlSUQgOyAJIEVtQWxpYXNV
SW50MzIgPExBUz4JIAkJCQkJCXRjYlAgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXN0
YWNrUCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJc3RhY2tTdGFydCA7IAkgRW1BbGlh
c1VJbnQzMiA8TEFTPgkgCQkJCQkJc3RhY2tTaXplIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfaWQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X25leHRJRCAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
dGFnICAodm9pZCkgeyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zdGF0
dXMgICh2b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90aW1l
ciAgKHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RpbWVT
bGljZSAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3By
aW9yaXR5ICAodm9pZCkgeyByZXR1cm4gIDI0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
YXR0cmlidXRlcyAgKHZvaWQpIHsgcmV0dXJuICAyNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3BlbmRpbmdDYWxscyAgKHZvaWQpIHsgcmV0dXJuICAzMCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3NlbmRlclRhc2tJRCAgKHZvaWQpIHsgcmV0dXJuICAzMiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX21zZ0V4Y2hhbmdlSUQgICh2b2lkKSB7IHJldHVybiAgMzYgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl90Y2JQICAodm9pZCkgeyByZXR1cm4gIDQwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3RhY2tQICAodm9pZCkgeyByZXR1cm4gIDQ0IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3RhY2tTdGFydCAgKHZvaWQpIHsgcmV0dXJuICA0OCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N0YWNrU2l6ZSAgKHZvaWQpIHsgcmV0dXJuICA1MiA7
IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFza2VybmVsX2luZm9f
c2VtYXBob3JlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5
cGU7CUVtQWxpYXNrZXJuZWxfaW5mb19zZW1hcGhvcmUgIAkocHRyX3R5cGUpOwlFbUFsaWFza2Vy
bmVsX2luZm9fc2VtYXBob3JlICAJKGNvbnN0IEVtQWxpYXNrZXJuZWxfaW5mb19zZW1hcGhvcmUg
ICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0
aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyMiAgOyB9CUVtQWxpYXNr
ZXJuZWxfaW5mb19zZW1hcGhvcmUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFza2VybmVs
X2luZm9fc2VtYXBob3JlICA8QT4mKTsJRW1BbGlhc2tlcm5lbF9pbmZvX3NlbWFwaG9yZSAgPEE+
CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNrZXJuZWxfaW5mb19zZW1hcGhvcmUgIDxB
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFza2VybmVsX2luZm9fc2Vt
YXBob3JlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUlu
dDMyIDxBPgkgCQkJCQkJaWQgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQluZXh0SUQgOyAJ
IEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQl0YWcgOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJ
CWluaXRWYWx1ZSA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJY3VyVmFsdWUgOyAJIEVtQWxp
YXNJbnQxNiA8QT4JIAkJCQkJCW5lc3RMZXZlbCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJ
CW93bmVySUQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pZCAgKHZvaWQpIHsgcmV0
dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmV4dElEICAodm9pZCkgeyByZXR1
cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90YWcgICh2b2lkKSB7IHJldHVybiAg
OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luaXRWYWx1ZSAgKHZvaWQpIHsgcmV0dXJu
ICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2N1clZhbHVlICAodm9pZCkgeyByZXR1
cm4gIDE0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmVzdExldmVsICAodm9pZCkgeyBy
ZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfb3duZXJJRCAgKHZvaWQpIHsg
cmV0dXJuICAxOCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eWtlcm5lbF9pbmZvX3NlbWFwaG9yZSAg
CXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5a2VybmVsX2luZm9fc2Vt
YXBob3JlICAJKHZvaWQpOwlFbVByb3h5a2VybmVsX2luZm9fc2VtYXBob3JlICAJKGNvbnN0IEVt
UHJveHlrZXJuZWxfaW5mb19zZW1hcGhvcmUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkg
Y29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlH
ZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyMiAgOyB9CUVtUHJveHlrZXJuZWxfaW5mb19z
ZW1hcGhvcmUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eWtlcm5lbF9pbmZvX3NlbWFwaG9y
ZSAgJik7CUVtQWxpYXNrZXJuZWxfaW5mb19zZW1hcGhvcmUgIDxMQVM+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNrZXJuZWxfaW5mb19zZW1hcGhvcmUgIDxMQVM+CW9wZXJhdG9yW10g
KGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDIyICBdOwl9
IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlpZCA7
IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJbmV4dElEIDsgCSBFbUFsaWFzVUludDMyIDxM
QVM+CSAJCQkJCQl0YWcgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJaW5pdFZhbHVlIDsg
CSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWN1clZhbHVlIDsgCSBFbUFsaWFzSW50MTYgPExB
Uz4JIAkJCQkJCW5lc3RMZXZlbCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJb3duZXJJ
RCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2lkICAodm9pZCkgeyByZXR1cm4gIDAg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uZXh0SUQgICh2b2lkKSB7IHJldHVybiAgNCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RhZyAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5pdFZhbHVlICAodm9pZCkgeyByZXR1cm4gIDEyIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY3VyVmFsdWUgICh2b2lkKSB7IHJldHVybiAgMTQg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uZXN0TGV2ZWwgICh2b2lkKSB7IHJldHVybiAg
MTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9vd25lcklEICAodm9pZCkgeyByZXR1cm4g
IDE4IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNrZXJuZWxf
aW5mb190aW1lciAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90
eXBlOwlFbUFsaWFza2VybmVsX2luZm9fdGltZXIgIAkocHRyX3R5cGUpOwlFbUFsaWFza2VybmVs
X2luZm9fdGltZXIgIAkoY29uc3QgRW1BbGlhc2tlcm5lbF9pbmZvX3RpbWVyICAmKTsJcHRyX3R5
cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJ
R2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMjQgIDsgfQlFbUFsaWFza2VybmVsX2luZm9f
dGltZXIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFza2VybmVsX2luZm9fdGltZXIgIDxB
PiYpOwlFbUFsaWFza2VybmVsX2luZm9fdGltZXIgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25z
dCBFbUFsaWFza2VybmVsX2luZm9fdGltZXIgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglFbUFsaWFza2VybmVsX2luZm9fdGltZXIgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0
cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlpZCA7IAkgRW1BbGlhc1VJ
bnQzMiA8QT4JIAkJCQkJCW5leHRJRCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXRhZyA7
IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXRpY2tzTGVmdCA7IAkgRW1BbGlhc1VJbnQzMiA8
QT4JIAkJCQkJCXBlcmlvZCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXByb2MgOyAgCSAg
ICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmV4dElEICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl90YWcgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3RpY2tzTGVmdCAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3BlcmlvZCAgKHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3Byb2MgICh2b2lkKSB7IHJldHVybiAgMjAgOyB9ICAJfTsgCWNs
YXNzIEVtUHJveHlrZXJuZWxfaW5mb190aW1lciAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0
cl90eXBlOwlFbVByb3h5a2VybmVsX2luZm9fdGltZXIgIAkodm9pZCk7CUVtUHJveHlrZXJuZWxf
aW5mb190aW1lciAgCShjb25zdCBFbVByb3h5a2VybmVsX2luZm9fdGltZXIgICYpOwlwdHJfdHlw
ZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsg
fQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyNCAgOyB9CUVt
UHJveHlrZXJuZWxfaW5mb190aW1lciAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5a2VybmVs
X2luZm9fdGltZXIgICYpOwlFbUFsaWFza2VybmVsX2luZm9fdGltZXIgIDxMQVM+CW9wZXJhdG9y
W10gKGludCk7CWNvbnN0IEVtQWxpYXNrZXJuZWxfaW5mb190aW1lciAgPExBUz4Jb3BlcmF0b3Jb
XSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMjQgIF07
CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWlk
IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQluZXh0SUQgOyAJIEVtQWxpYXNVSW50MzIg
PExBUz4JIAkJCQkJCXRhZyA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJdGlja3NMZWZ0
IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlwZXJpb2QgOyAJIEVtQWxpYXNVSW50MzIg
PExBUz4JIAkJCQkJCXByb2MgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pZCAgKHZv
aWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmV4dElEICAodm9p
ZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90YWcgICh2b2lkKSB7
IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RpY2tzTGVmdCAgKHZvaWQp
IHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BlcmlvZCAgKHZvaWQp
IHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Byb2MgICh2b2lkKSB7
IHJldHVybiAgMjAgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlh
c1N5c0tlcm5lbEluZm9UeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5
cGUgcHRyX3R5cGU7CUVtQWxpYXNTeXNLZXJuZWxJbmZvVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxp
YXNTeXNLZXJuZWxJbmZvVHlwZSAgCShjb25zdCBFbUFsaWFzU3lzS2VybmVsSW5mb1R5cGUgICYp
OwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMg
c2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA2MiAgOyB9CUVtQWxpYXNTeXNL
ZXJuZWxJbmZvVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNTeXNLZXJuZWxJbmZv
VHlwZSAgPEE+Jik7CUVtQWxpYXNTeXNLZXJuZWxJbmZvVHlwZSAgPEE+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNTeXNLZXJuZWxJbmZvVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkg
Y29uc3Q7CXByaXZhdGU6CUVtQWxpYXNTeXNLZXJuZWxJbmZvVHlwZSAgCSh2b2lkKTsJcHRyX3R5
cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJc2VsZWN0b3Ig
OyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXJlc2VydmVkIDsgCSBFbUFsaWFzVUludDMyIDxB
PgkgCQkJCQkJaWQgOyAJIEVtQWxpYXNrZXJuZWxfaW5mb190YXNrIDxBPgkgCQkJdGFzayA7IAkg
RW1BbGlhc2tlcm5lbF9pbmZvX3NlbWFwaG9yZSA8QT4JIAkJc2VtYXBob3JlIDsgCSBFbUFsaWFz
a2VybmVsX2luZm9fdGltZXIgPEE+CSAJCQl0aW1lciA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3NlbGVjdG9yICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9yZXNlcnZlZCAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfaWQgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3Rhc2sgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3NlbWFwaG9yZSAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfdGltZXIgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVN5c0tl
cm5lbEluZm9UeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlT
eXNLZXJuZWxJbmZvVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVN5c0tlcm5lbEluZm9UeXBlICAJKGNv
bnN0IEVtUHJveHlTeXNLZXJuZWxJbmZvVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lk
KSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJ
CUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDYyICA7IH0JRW1Qcm94eVN5c0tlcm5lbElu
Zm9UeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlTeXNLZXJuZWxJbmZvVHlwZSAgJik7
CUVtQWxpYXNTeXNLZXJuZWxJbmZvVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3Qg
RW1BbGlhc1N5c0tlcm5lbEluZm9UeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA2MiAgXTsJfSBmTG9jYWxEYXRhOwlw
dWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlzZWxlY3RvciA7IAkgRW1BbGlh
c1VJbnQ4IDxMQVM+CSAJCQkJCQlyZXNlcnZlZCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJ
CQkJaWQgOyAJIEVtQWxpYXNrZXJuZWxfaW5mb190YXNrIDxMQVM+CSAJCQl0YXNrIDsgCSBFbUFs
aWFza2VybmVsX2luZm9fc2VtYXBob3JlIDxMQVM+CSAJCXNlbWFwaG9yZSA7IAkgRW1BbGlhc2tl
cm5lbF9pbmZvX3RpbWVyIDxMQVM+CSAJCQl0aW1lciA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3NlbGVjdG9yICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9yZXNlcnZlZCAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfaWQgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3Rhc2sgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3NlbWFwaG9yZSAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfdGltZXIgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gIAl9OyAgICAKICB0ZW1wbGF0ZSA8Y2xh
c3MgQT4JY2xhc3MgRW1BbGlhc1Nsa1BrdEZvb3RlclR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0
eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1Nsa1BrdEZvb3RlclR5cGUgIAko
cHRyX3R5cGUpOwlFbUFsaWFzU2xrUGt0Rm9vdGVyVHlwZSAgCShjb25zdCBFbUFsaWFzU2xrUGt0
Rm9vdGVyVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBm
UHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsg
fQlFbUFsaWFzU2xrUGt0Rm9vdGVyVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNT
bGtQa3RGb290ZXJUeXBlICA8QT4mKTsJRW1BbGlhc1Nsa1BrdEZvb3RlclR5cGUgIDxBPglvcGVy
YXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU2xrUGt0Rm9vdGVyVHlwZSAgPEE+CW9wZXJhdG9y
W10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNTbGtQa3RGb290ZXJUeXBlICAJKHZvaWQp
OwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJ
Y3JjMTYgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jcmMxNiAgKHZvaWQpIHsgcmV0
dXJuICAwIDsgfSAgCX07IAljbGFzcyBFbVByb3h5U2xrUGt0Rm9vdGVyVHlwZSAgCXsJcHVibGlj
Ogl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U2xrUGt0Rm9vdGVyVHlwZSAgCSh2b2lk
KTsJRW1Qcm94eVNsa1BrdEZvb3RlclR5cGUgIAkoY29uc3QgRW1Qcm94eVNsa1BrdEZvb3RlclR5
cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBl
KSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJu
ICAgICAyICA7IH0JRW1Qcm94eVNsa1BrdEZvb3RlclR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3Qg
RW1Qcm94eVNsa1BrdEZvb3RlclR5cGUgICYpOwlFbUFsaWFzU2xrUGt0Rm9vdGVyVHlwZSAgPExB
Uz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1Nsa1BrdEZvb3RlclR5cGUgIDxMQVM+
CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNb
ICAgIDIgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPExBUz4J
IAkJCQkJCWNyYzE2IDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY3JjMTYgICh2b2lk
KSB7IHJldHVybiAgMCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFs
aWFzU2xrUGt0SGVhZGVyVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90
eXBlIHB0cl90eXBlOwlFbUFsaWFzU2xrUGt0SGVhZGVyVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxp
YXNTbGtQa3RIZWFkZXJUeXBlICAJKGNvbnN0IEVtQWxpYXNTbGtQa3RIZWFkZXJUeXBlICAmKTsJ
cHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNp
emVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTAgIDsgfQlFbUFsaWFzU2xrUGt0
SGVhZGVyVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNTbGtQa3RIZWFkZXJUeXBl
ICA8QT4mKTsJRW1BbGlhc1Nsa1BrdEhlYWRlclR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwlj
b25zdCBFbUFsaWFzU2xrUGt0SGVhZGVyVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7
CXByaXZhdGU6CUVtQWxpYXNTbGtQa3RIZWFkZXJUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQ
dHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJc2lnbmF0dXJlMSA7IAkg
RW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJc2lnbmF0dXJlMiA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkg
CQkJCQkJZGVzdCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJc3JjIDsgCSBFbUFsaWFzVUlu
dDggPEE+CSAJCQkJCQl0eXBlIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJYm9keVNpemUg
OyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXRyYW5zSWQgOyAJIEVtQWxpYXNTbGtQa3RIZWFk
ZXJDaGVja3N1bSA8QT4JIAkJY2hlY2tzdW0gOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9zaWduYXR1cmUxICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9zaWduYXR1cmUyICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9kZXN0ICAodm9pZCkgeyByZXR1cm4gIDMgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9zcmMgICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3R5cGUgICh2b2lkKSB7IHJldHVybiAgNSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Jv
ZHlTaXplICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90
cmFuc0lkICAodm9pZCkgeyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9j
aGVja3N1bSAgKHZvaWQpIHsgcmV0dXJuICA5IDsgfSAgCX07IAljbGFzcyBFbVByb3h5U2xrUGt0
SGVhZGVyVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U2xr
UGt0SGVhZGVyVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVNsa1BrdEhlYWRlclR5cGUgIAkoY29uc3Qg
RW1Qcm94eVNsa1BrdEhlYWRlclR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29u
c3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRT
aXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAxMCAgOyB9CUVtUHJveHlTbGtQa3RIZWFkZXJUeXBl
ICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlTbGtQa3RIZWFkZXJUeXBlICAmKTsJRW1BbGlh
c1Nsa1BrdEhlYWRlclR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNT
bGtQa3RIZWFkZXJUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglz
dHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAxMCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAg
ICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJc2lnbmF0dXJlMSA7IAkgRW1BbGlhc1VJbnQ4
IDxMQVM+CSAJCQkJCQlzaWduYXR1cmUyIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWRl
c3QgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJc3JjIDsgCSBFbUFsaWFzVUludDggPExB
Uz4JIAkJCQkJCXR5cGUgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWJvZHlTaXplIDsg
CSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXRyYW5zSWQgOyAJIEVtQWxpYXNTbGtQa3RIZWFk
ZXJDaGVja3N1bSA8TEFTPgkgCQljaGVja3N1bSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3NpZ25hdHVyZTEgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3NpZ25hdHVyZTIgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2Rlc3QgICh2b2lkKSB7IHJldHVybiAgMyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3NyYyAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfdHlwZSAgKHZvaWQpIHsgcmV0dXJuICA1IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
Ym9keVNpemUgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3RyYW5zSWQgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2NoZWNrc3VtICAodm9pZCkgeyByZXR1cm4gIDkgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xh
c3MgQT4JY2xhc3MgRW1BbGlhc1N5c1BrdFJQQ1BhcmFtVHlwZSAgCXsJcHVibGljOgl0eXBlZGVm
IHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzU3lzUGt0UlBDUGFyYW1UeXBl
ICAJKHB0cl90eXBlKTsJRW1BbGlhc1N5c1BrdFJQQ1BhcmFtVHlwZSAgCShjb25zdCBFbUFsaWFz
U3lzUGt0UlBDUGFyYW1UeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsg
cmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAg
ICAgNiAgOyB9CUVtQWxpYXNTeXNQa3RSUENQYXJhbVR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25z
dCBFbUFsaWFzU3lzUGt0UlBDUGFyYW1UeXBlICA8QT4mKTsJRW1BbGlhc1N5c1BrdFJQQ1BhcmFt
VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNQa3RSUENQYXJhbVR5
cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzU3lzUGt0UlBD
UGFyYW1UeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFz
VUludDggPEE+CSAJCQkJCQlieVJlZiA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJc2l6ZSA7
IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJYXNCeXRlIDsgCSBFbUFsaWFzVUludDE2IDxBPgkg
CQkJCQkJYXNTaG9ydCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCWFzTG9uZyA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2J5UmVmICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9zaXplICAodm9pZCkgeyByZXR1cm4gIDEgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9hc0J5dGUgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2FzU2hvcnQgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2FzTG9uZyAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAgCX07IAlj
bGFzcyBFbVByb3h5U3lzUGt0UlBDUGFyYW1UeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCog
cHRyX3R5cGU7CUVtUHJveHlTeXNQa3RSUENQYXJhbVR5cGUgIAkodm9pZCk7CUVtUHJveHlTeXNQ
a3RSUENQYXJhbVR5cGUgIAkoY29uc3QgRW1Qcm94eVN5c1BrdFJQQ1BhcmFtVHlwZSAgJik7CXB0
cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxE
YXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDYgIDsg
fQlFbVByb3h5U3lzUGt0UlBDUGFyYW1UeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlT
eXNQa3RSUENQYXJhbVR5cGUgICYpOwlFbUFsaWFzU3lzUGt0UlBDUGFyYW1UeXBlICA8TEFTPglv
cGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3lzUGt0UlBDUGFyYW1UeXBlICA8TEFTPglv
cGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAg
ICA2ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPExBUz4JIAkJ
CQkJCWJ5UmVmIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXNpemUgOyAJIEVtQWxpYXNV
SW50OCA8TEFTPgkgCQkJCQkJYXNCeXRlIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlh
c1Nob3J0IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlhc0xvbmcgOyAgCSAgICAgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9ieVJlZiAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2Zfc2l6ZSAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfYXNCeXRlICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9hc1Nob3J0ICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9hc0xvbmcgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gIAl9OyAgIAkgIHRl
bXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzU3lzUGt0Qm9keVR5cGUgIAl7CXB1YmxpYzoJ
dHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1N5c1BrdEJvZHlU
eXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1N5c1BrdEJvZHlUeXBlICAJKGNvbnN0IEVtQWxpYXNT
eXNQa3RCb2R5VHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVy
biBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgICgy
NTYgKzE2KSAgIDsgfQlFbUFsaWFzU3lzUGt0Qm9keVR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25z
dCBFbUFsaWFzU3lzUGt0Qm9keVR5cGUgIDxBPiYpOwlFbUFsaWFzU3lzUGt0Qm9keVR5cGUgIDxB
PglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3lzUGt0Qm9keVR5cGUgIDxBPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzU3lzUGt0Qm9keVR5cGUgIAkodm9p
ZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJ
CWNvbW1hbmQgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCV9maWxsZXIgOyAJIEVtQWxpYXNV
SW50OCA8QT4JIAkJCQkJCWRhdGEgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21t
YW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fZmls
bGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kYXRh
ICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlTeXNQa3RCb2R5VHlw
ZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lzUGt0Qm9keVR5
cGUgIAkodm9pZCk7CUVtUHJveHlTeXNQa3RCb2R5VHlwZSAgCShjb25zdCBFbVByb3h5U3lzUGt0
Qm9keVR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0
cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsg
cmV0dXJuICAgICAoMjU2ICsxNikgICA7IH0JRW1Qcm94eVN5c1BrdEJvZHlUeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IEVtUHJveHlTeXNQa3RCb2R5VHlwZSAgJik7CUVtQWxpYXNTeXNQa3RCb2R5
VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdEJvZHlUeXBl
ICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJ
X2J5dGVzWyAgICAoMjU2ICsxNikgICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFs
aWFzVUludDggPExBUz4JIAkJCQkJCWNvbW1hbmQgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJ
CQkJX2ZpbGxlciA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlkYXRhIDsgIAkgICAgIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGF0YSAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAgCX07ICAg
CSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNTeXNQa3RDb250aW51ZUNtZFR5cGUg
IAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlh
c1N5c1BrdENvbnRpbnVlQ21kVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNTeXNQa3RDb250aW51
ZUNtZFR5cGUgIAkoY29uc3QgRW1BbGlhc1N5c1BrdENvbnRpbnVlQ21kVHlwZSAgJik7CXB0cl90
eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJ
CUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDkwICA7IH0JRW1BbGlhc1N5c1BrdENvbnRp
bnVlQ21kVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNTeXNQa3RDb250aW51ZUNt
ZFR5cGUgIDxBPiYpOwlFbUFsaWFzU3lzUGt0Q29udGludWVDbWRUeXBlICA8QT4Jb3BlcmF0b3Jb
XSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdENvbnRpbnVlQ21kVHlwZSAgPEE+CW9wZXJhdG9y
W10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNTeXNQa3RDb250aW51ZUNtZFR5cGUgIAko
dm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8QT4JIAkJ
CQkJCWNvbW1hbmQgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCV9maWxsZXIgOyAJIEVtQWxp
YXNNNjhLUmVnc1R5cGUgPEE+CSAJCQkJcmVncyA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJ
CXN0ZXBTcHkgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXJlc2VydmVkIDsgCSBFbUFsaWFz
VUludDMyIDxBPgkgCQkJCQkJc3NBZGRyIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJc3ND
b3VudCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXNzQ2hlY2tTdW0gOyAgCSAgICAgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9yZWdzICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9zdGVwU3B5ICAodm9pZCkgeyByZXR1cm4gIDc2IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfcmVzZXJ2ZWQgICh2b2lkKSB7IHJldHVybiAgNzcgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9zc0FkZHIgICh2b2lkKSB7IHJldHVybiAgNzggOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9zc0NvdW50ICAodm9pZCkgeyByZXR1cm4gIDgyIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3NDaGVja1N1bSAgKHZvaWQpIHsgcmV0dXJuICA4NiA7IH0g
IAl9OyAJY2xhc3MgRW1Qcm94eVN5c1BrdENvbnRpbnVlQ21kVHlwZSAgCXsJcHVibGljOgl0eXBl
ZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lzUGt0Q29udGludWVDbWRUeXBlICAJKHZvaWQp
OwlFbVByb3h5U3lzUGt0Q29udGludWVDbWRUeXBlICAJKGNvbnN0IEVtUHJveHlTeXNQa3RDb250
aW51ZUNtZFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4g
KHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICA5MCAgOyB9CUVtUHJveHlTeXNQa3RDb250aW51ZUNtZFR5cGUgICYJCW9w
ZXJhdG9yPSAoY29uc3QgRW1Qcm94eVN5c1BrdENvbnRpbnVlQ21kVHlwZSAgJik7CUVtQWxpYXNT
eXNQa3RDb250aW51ZUNtZFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxp
YXNTeXNQa3RDb250aW51ZUNtZFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXBy
aXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDkwICBdOwl9IGZMb2NhbERhdGE7CXB1
YmxpYzoJICAgICBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWNvbW1hbmQgOyAJIEVtQWxpYXNV
SW50OCA8TEFTPgkgCQkJCQkJX2ZpbGxlciA7IAkgRW1BbGlhc002OEtSZWdzVHlwZSA8TEFTPgkg
CQkJCXJlZ3MgOyAJIEVtQWxpYXNCb29sZWFuIDxMQVM+CSAJCQkJCXN0ZXBTcHkgOyAJIEVtQWxp
YXNVSW50OCA8TEFTPgkgCQkJCQkJcmVzZXJ2ZWQgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJ
CQkJCXNzQWRkciA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJc3NDb3VudCA7IAkgRW1B
bGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJc3NDaGVja1N1bSA7ICAJICAgICBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3JlZ3MgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3N0ZXBTcHkgICh2b2lkKSB7IHJldHVybiAgNzYgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9yZXNlcnZlZCAgKHZvaWQpIHsgcmV0dXJuICA3NyA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3NzQWRkciAgKHZvaWQpIHsgcmV0dXJuICA3OCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3NzQ291bnQgICh2b2lkKSB7IHJldHVybiAgODIgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9zc0NoZWNrU3VtICAodm9pZCkgeyByZXR1cm4gIDg2IDsgfSAgCX07ICAgCSAg
dGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNTeXNQa3REYmdCcmVha1RvZ2dsZUNtZFR5
cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1B
bGlhc1N5c1BrdERiZ0JyZWFrVG9nZ2xlQ21kVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNTeXNQ
a3REYmdCcmVha1RvZ2dsZUNtZFR5cGUgIAkoY29uc3QgRW1BbGlhc1N5c1BrdERiZ0JyZWFrVG9n
Z2xlQ21kVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBm
UHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsg
fQlFbUFsaWFzU3lzUGt0RGJnQnJlYWtUb2dnbGVDbWRUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgRW1BbGlhc1N5c1BrdERiZ0JyZWFrVG9nZ2xlQ21kVHlwZSAgPEE+Jik7CUVtQWxpYXNTeXNQ
a3REYmdCcmVha1RvZ2dsZUNtZFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFs
aWFzU3lzUGt0RGJnQnJlYWtUb2dnbGVDbWRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25z
dDsJcHJpdmF0ZToJRW1BbGlhc1N5c1BrdERiZ0JyZWFrVG9nZ2xlQ21kVHlwZSAgCSh2b2lkKTsJ
cHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJY29t
bWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJX2ZpbGxlciA7ICAJICAgICBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gIAl9OyAJY2xh
c3MgRW1Qcm94eVN5c1BrdERiZ0JyZWFrVG9nZ2xlQ21kVHlwZSAgCXsJcHVibGljOgl0eXBlZGVm
IHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lzUGt0RGJnQnJlYWtUb2dnbGVDbWRUeXBlICAJKHZv
aWQpOwlFbVByb3h5U3lzUGt0RGJnQnJlYWtUb2dnbGVDbWRUeXBlICAJKGNvbnN0IEVtUHJveHlT
eXNQa3REYmdCcmVha1RvZ2dsZUNtZFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkg
Y29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlH
ZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyICA7IH0JRW1Qcm94eVN5c1BrdERiZ0JyZWFr
VG9nZ2xlQ21kVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5U3lzUGt0RGJnQnJlYWtU
b2dnbGVDbWRUeXBlICAmKTsJRW1BbGlhc1N5c1BrdERiZ0JyZWFrVG9nZ2xlQ21kVHlwZSAgPExB
Uz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdERiZ0JyZWFrVG9nZ2xlQ21k
VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hh
cgkJCV9ieXRlc1sgICAgMiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJ
bnQ4IDxMQVM+CSAJCQkJCQljb21tYW5kIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCV9m
aWxsZXIgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyBy
ZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyBy
ZXR1cm4gIDEgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1N5
c1BrdERiZ0JyZWFrVG9nZ2xlUnNwVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6
OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzU3lzUGt0RGJnQnJlYWtUb2dnbGVSc3BUeXBlICAJ
KHB0cl90eXBlKTsJRW1BbGlhc1N5c1BrdERiZ0JyZWFrVG9nZ2xlUnNwVHlwZSAgCShjb25zdCBF
bUFsaWFzU3lzUGt0RGJnQnJlYWtUb2dnbGVSc3BUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJ
KHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9p
ZCkJCQl7IHJldHVybiAgICAgNCAgOyB9CUVtQWxpYXNTeXNQa3REYmdCcmVha1RvZ2dsZVJzcFR5
cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzU3lzUGt0RGJnQnJlYWtUb2dnbGVSc3BU
eXBlICA8QT4mKTsJRW1BbGlhc1N5c1BrdERiZ0JyZWFrVG9nZ2xlUnNwVHlwZSAgPEE+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNQa3REYmdCcmVha1RvZ2dsZVJzcFR5cGUgIDxB
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzU3lzUGt0RGJnQnJlYWtU
b2dnbGVSc3BUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFs
aWFzVUludDggPEE+CSAJCQkJCQljb21tYW5kIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlf
ZmlsbGVyIDsgCSBFbUFsaWFzQm9vbGVhbiA8QT4JIAkJCQkJbmV3U3RhdGUgOyAJIEVtQWxpYXNV
SW50OCA8QT4JIAkJCQkJCXJlc2VydmVkIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
Y29tbWFuZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
X2ZpbGxlciAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
bmV3U3RhdGUgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3Jlc2VydmVkICAodm9pZCkgeyByZXR1cm4gIDMgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlTeXNQ
a3REYmdCcmVha1RvZ2dsZVJzcFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlw
ZTsJRW1Qcm94eVN5c1BrdERiZ0JyZWFrVG9nZ2xlUnNwVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVN5
c1BrdERiZ0JyZWFrVG9nZ2xlUnNwVHlwZSAgCShjb25zdCBFbVByb3h5U3lzUGt0RGJnQnJlYWtU
b2dnbGVSc3BUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJu
IChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJ
CQl7IHJldHVybiAgICAgNCAgOyB9CUVtUHJveHlTeXNQa3REYmdCcmVha1RvZ2dsZVJzcFR5cGUg
ICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVN5c1BrdERiZ0JyZWFrVG9nZ2xlUnNwVHlwZSAg
Jik7CUVtQWxpYXNTeXNQa3REYmdCcmVha1RvZ2dsZVJzcFR5cGUgIDxMQVM+CW9wZXJhdG9yW10g
KGludCk7CWNvbnN0IEVtQWxpYXNTeXNQa3REYmdCcmVha1RvZ2dsZVJzcFR5cGUgIDxMQVM+CW9w
ZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAg
IDQgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJ
CQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlfZmlsbGVyIDsgCSBFbUFs
aWFzQm9vbGVhbiA8TEFTPgkgCQkJCQluZXdTdGF0ZSA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJ
CQkJCQlyZXNlcnZlZCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2
b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxsZXIgICh2
b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25ld1N0YXRlICAo
dm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNlcnZlZCAg
KHZvaWQpIHsgcmV0dXJuICAzIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNz
IEVtQWxpYXNTeXNQa3RGaW5kQ21kVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6
OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzU3lzUGt0RmluZENtZFR5cGUgIAkocHRyX3R5cGUp
OwlFbUFsaWFzU3lzUGt0RmluZENtZFR5cGUgIAkoY29uc3QgRW1BbGlhc1N5c1BrdEZpbmRDbWRU
eXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0J
c3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgKDI1NiArMTYpICAg
OyB9CUVtQWxpYXNTeXNQa3RGaW5kQ21kVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxp
YXNTeXNQa3RGaW5kQ21kVHlwZSAgPEE+Jik7CUVtQWxpYXNTeXNQa3RGaW5kQ21kVHlwZSAgPEE+
CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNQa3RGaW5kQ21kVHlwZSAgPEE+CW9w
ZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNTeXNQa3RGaW5kQ21kVHlwZSAg
CSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkg
CQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJX2ZpbGxlciA7IAkgRW1B
bGlhc1VJbnQzMiA8QT4JIAkJCQkJCWZpcnN0QWRkciA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJ
CQkJCWxhc3RBZGRyIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJbnVtQnl0ZXMgOyAJIEVt
QWxpYXNCb29sZWFuIDxBPgkgCQkJCQljYXNlSW5zZW5zaXRpdmUgOyAJIEVtQWxpYXNVSW50OCA8
QT4JIAkJCQkJCXBhZGRpbmcgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWRhdGEgOyAgCSAg
ICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9maXJzdEFkZHIgICh2b2lkKSB7IHJldHVybiAgMiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xhc3RBZGRyICAodm9pZCkgeyByZXR1cm4gIDYg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9udW1CeXRlcyAgKHZvaWQpIHsgcmV0dXJuICAx
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Nhc2VJbnNlbnNpdGl2ZSAgKHZvaWQpIHsg
cmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BhZGRpbmcgICh2b2lkKSB7
IHJldHVybiAgMTMgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kYXRhICAodm9pZCkgeyBy
ZXR1cm4gIDE0IDsgfSAgCX07IAljbGFzcyBFbVByb3h5U3lzUGt0RmluZENtZFR5cGUgIAl7CXB1
YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVN5c1BrdEZpbmRDbWRUeXBlICAJ
KHZvaWQpOwlFbVByb3h5U3lzUGt0RmluZENtZFR5cGUgIAkoY29uc3QgRW1Qcm94eVN5c1BrdEZp
bmRDbWRUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChw
dHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7
IHJldHVybiAgICAgKDI1NiArMTYpICAgOyB9CUVtUHJveHlTeXNQa3RGaW5kQ21kVHlwZSAgJgkJ
b3BlcmF0b3I9IChjb25zdCBFbVByb3h5U3lzUGt0RmluZENtZFR5cGUgICYpOwlFbUFsaWFzU3lz
UGt0RmluZENtZFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNQ
a3RGaW5kQ21kVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3Ry
dWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgKDI1NiArMTYpICAgXTsJfSBmTG9jYWxEYXRhOwlwdWJs
aWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQljb21tYW5kIDsgCSBFbUFsaWFzVUlu
dDggPExBUz4JIAkJCQkJCV9maWxsZXIgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWZp
cnN0QWRkciA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJbGFzdEFkZHIgOyAJIEVtQWxp
YXNVSW50MTYgPExBUz4JIAkJCQkJCW51bUJ5dGVzIDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkg
CQkJCQljYXNlSW5zZW5zaXRpdmUgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJcGFkZGlu
ZyA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlkYXRhIDsgIAkgICAgIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfY29tbWFuZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfX2ZpbGxlciAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZmlyc3RBZGRyICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9sYXN0QWRkciAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfbnVtQnl0ZXMgICh2b2lkKSB7IHJldHVybiAgMTAgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9jYXNlSW5zZW5zaXRpdmUgICh2b2lkKSB7IHJldHVybiAgMTIgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wYWRkaW5nICAodm9pZCkgeyByZXR1cm4gIDEzIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGF0YSAgKHZvaWQpIHsgcmV0dXJuICAxNCA7IH0g
IAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzU3lzUGt0RmluZFJzcFR5
cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1B
bGlhc1N5c1BrdEZpbmRSc3BUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1N5c1BrdEZpbmRSc3BU
eXBlICAJKGNvbnN0IEVtQWxpYXNTeXNQa3RGaW5kUnNwVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0
UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJ
KHZvaWQpCQkJeyByZXR1cm4gICAgIDggIDsgfQlFbUFsaWFzU3lzUGt0RmluZFJzcFR5cGUgIDxB
PiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzU3lzUGt0RmluZFJzcFR5cGUgIDxBPiYpOwlFbUFs
aWFzU3lzUGt0RmluZFJzcFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFz
U3lzUGt0RmluZFJzcFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglF
bUFsaWFzU3lzUGt0RmluZFJzcFR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGlj
OgkgICAgIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWNvbW1hbmQgOyAJIEVtQWxpYXNVSW50OCA8
QT4JIAkJCQkJCV9maWxsZXIgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlhZGRyIDsgCSBF
bUFsaWFzVUludDggPEE+CSAJCQkJCQlmb3VuZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJ
cGFkZGluZyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7
IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7
IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FkZHIgICh2b2lkKSB7IHJl
dHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZvdW5kICAodm9pZCkgeyByZXR1
cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wYWRkaW5nICAodm9pZCkgeyByZXR1
cm4gIDcgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlTeXNQa3RGaW5kUnNwVHlwZSAgCXsJcHVibGlj
Ogl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lzUGt0RmluZFJzcFR5cGUgIAkodm9p
ZCk7CUVtUHJveHlTeXNQa3RGaW5kUnNwVHlwZSAgCShjb25zdCBFbVByb3h5U3lzUGt0RmluZFJz
cFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90
eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0
dXJuICAgICA4ICA7IH0JRW1Qcm94eVN5c1BrdEZpbmRSc3BUeXBlICAmCQlvcGVyYXRvcj0gKGNv
bnN0IEVtUHJveHlTeXNQa3RGaW5kUnNwVHlwZSAgJik7CUVtQWxpYXNTeXNQa3RGaW5kUnNwVHlw
ZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdEZpbmRSc3BUeXBl
ICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJ
X2J5dGVzWyAgICA4ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDgg
PExBUz4JIAkJCQkJCWNvbW1hbmQgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJX2ZpbGxl
ciA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJYWRkciA7IAkgRW1BbGlhc1VJbnQ4IDxM
QVM+CSAJCQkJCQlmb3VuZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlwYWRkaW5nIDsg
IAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAgKHZvaWQpIHsgcmV0dXJuICAw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAgKHZvaWQpIHsgcmV0dXJuICAx
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWRkciAgKHZvaWQpIHsgcmV0dXJuICAyIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZm91bmQgICh2b2lkKSB7IHJldHVybiAgNiA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BhZGRpbmcgICh2b2lkKSB7IHJldHVybiAgNyA7IH0g
IAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzU3lzUGt0R2V0QnJlYWtw
b2ludHNDbWRUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRy
X3R5cGU7CUVtQWxpYXNTeXNQa3RHZXRCcmVha3BvaW50c0NtZFR5cGUgIAkocHRyX3R5cGUpOwlF
bUFsaWFzU3lzUGt0R2V0QnJlYWtwb2ludHNDbWRUeXBlICAJKGNvbnN0IEVtQWxpYXNTeXNQa3RH
ZXRCcmVha3BvaW50c0NtZFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJ
eyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJu
ICAgICAyICA7IH0JRW1BbGlhc1N5c1BrdEdldEJyZWFrcG9pbnRzQ21kVHlwZSAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IEVtQWxpYXNTeXNQa3RHZXRCcmVha3BvaW50c0NtZFR5cGUgIDxBPiYpOwlF
bUFsaWFzU3lzUGt0R2V0QnJlYWtwb2ludHNDbWRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJ
Y29uc3QgRW1BbGlhc1N5c1BrdEdldEJyZWFrcG9pbnRzQ21kVHlwZSAgPEE+CW9wZXJhdG9yW10g
KGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNTeXNQa3RHZXRCcmVha3BvaW50c0NtZFR5cGUg
IAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8QT4J
IAkJCQkJCWNvbW1hbmQgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCV9maWxsZXIgOyAgCSAg
ICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9
ICAJfTsgCWNsYXNzIEVtUHJveHlTeXNQa3RHZXRCcmVha3BvaW50c0NtZFR5cGUgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVN5c1BrdEdldEJyZWFrcG9pbnRzQ21k
VHlwZSAgCSh2b2lkKTsJRW1Qcm94eVN5c1BrdEdldEJyZWFrcG9pbnRzQ21kVHlwZSAgCShjb25z
dCBFbVByb3h5U3lzUGt0R2V0QnJlYWtwb2ludHNDbWRUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQ
dHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMiAgOyB9CUVtUHJveHlTeXNQ
a3RHZXRCcmVha3BvaW50c0NtZFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVN5c1Br
dEdldEJyZWFrcG9pbnRzQ21kVHlwZSAgJik7CUVtQWxpYXNTeXNQa3RHZXRCcmVha3BvaW50c0Nt
ZFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNQa3RHZXRCcmVh
a3BvaW50c0NtZFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0
cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDIgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAg
IEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+
CSAJCQkJCQlfZmlsbGVyIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAg
KHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAg
KHZvaWQpIHsgcmV0dXJuICAxIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNz
IEVtQWxpYXNTeXNQa3RFbXB0eVJzcFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBB
OjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1N5c1BrdEVtcHR5UnNwVHlwZSAgCShwdHJfdHlw
ZSk7CUVtQWxpYXNTeXNQa3RFbXB0eVJzcFR5cGUgIAkoY29uc3QgRW1BbGlhc1N5c1BrdEVtcHR5
UnNwVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRy
OyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlF
bUFsaWFzU3lzUGt0RW1wdHlSc3BUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1N5
c1BrdEVtcHR5UnNwVHlwZSAgPEE+Jik7CUVtQWxpYXNTeXNQa3RFbXB0eVJzcFR5cGUgIDxBPglv
cGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3lzUGt0RW1wdHlSc3BUeXBlICA8QT4Jb3Bl
cmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1N5c1BrdEVtcHR5UnNwVHlwZSAg
CSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkg
CQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJX2ZpbGxlciA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0g
IAl9OyAJY2xhc3MgRW1Qcm94eVN5c1BrdEVtcHR5UnNwVHlwZSAgCXsJcHVibGljOgl0eXBlZGVm
IHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lzUGt0RW1wdHlSc3BUeXBlICAJKHZvaWQpOwlFbVBy
b3h5U3lzUGt0RW1wdHlSc3BUeXBlICAJKGNvbnN0IEVtUHJveHlTeXNQa3RFbXB0eVJzcFR5cGUg
ICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAm
ZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAg
ICAyICA7IH0JRW1Qcm94eVN5c1BrdEVtcHR5UnNwVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBF
bVByb3h5U3lzUGt0RW1wdHlSc3BUeXBlICAmKTsJRW1BbGlhc1N5c1BrdEVtcHR5UnNwVHlwZSAg
PExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdEVtcHR5UnNwVHlwZSAg
PExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9i
eXRlc1sgICAgMiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxM
QVM+CSAJCQkJCQljb21tYW5kIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCV9maWxsZXIg
OyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4g
IDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4g
IDEgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1N5c1BrdEdl
dEJyZWFrcG9pbnRzUnNwVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90
eXBlIHB0cl90eXBlOwlFbUFsaWFzU3lzUGt0R2V0QnJlYWtwb2ludHNSc3BUeXBlICAJKHB0cl90
eXBlKTsJRW1BbGlhc1N5c1BrdEdldEJyZWFrcG9pbnRzUnNwVHlwZSAgCShjb25zdCBFbUFsaWFz
U3lzUGt0R2V0QnJlYWtwb2ludHNSc3BUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQp
IGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7
IHJldHVybiAgICAgMzggIDsgfQlFbUFsaWFzU3lzUGt0R2V0QnJlYWtwb2ludHNSc3BUeXBlICA8
QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1N5c1BrdEdldEJyZWFrcG9pbnRzUnNwVHlwZSAg
PEE+Jik7CUVtQWxpYXNTeXNQa3RHZXRCcmVha3BvaW50c1JzcFR5cGUgIDxBPglvcGVyYXRvcltd
IChpbnQpOwljb25zdCBFbUFsaWFzU3lzUGt0R2V0QnJlYWtwb2ludHNSc3BUeXBlICA8QT4Jb3Bl
cmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1N5c1BrdEdldEJyZWFrcG9pbnRz
UnNwVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJ
bnQ4IDxBPgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJX2ZpbGxl
ciA7IAkgRW1BbGlhc0JyZWFrcG9pbnRUeXBlIDxBPgkgCQkJCWJwIDsgIAkgICAgIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfYnAgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gIAl9OyAJY2xhc3MgRW1Q
cm94eVN5c1BrdEdldEJyZWFrcG9pbnRzUnNwVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQq
IHB0cl90eXBlOwlFbVByb3h5U3lzUGt0R2V0QnJlYWtwb2ludHNSc3BUeXBlICAJKHZvaWQpOwlF
bVByb3h5U3lzUGt0R2V0QnJlYWtwb2ludHNSc3BUeXBlICAJKGNvbnN0IEVtUHJveHlTeXNQa3RH
ZXRCcmVha3BvaW50c1JzcFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJ
eyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXpl
CSh2b2lkKQkJCXsgcmV0dXJuICAgICAzOCAgOyB9CUVtUHJveHlTeXNQa3RHZXRCcmVha3BvaW50
c1JzcFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVN5c1BrdEdldEJyZWFrcG9pbnRz
UnNwVHlwZSAgJik7CUVtQWxpYXNTeXNQa3RHZXRCcmVha3BvaW50c1JzcFR5cGUgIDxMQVM+CW9w
ZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNQa3RHZXRCcmVha3BvaW50c1JzcFR5cGUg
IDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlf
Ynl0ZXNbICAgIDM4ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDgg
PExBUz4JIAkJCQkJCWNvbW1hbmQgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJX2ZpbGxl
ciA7IAkgRW1BbGlhc0JyZWFrcG9pbnRUeXBlIDxMQVM+CSAJCQkJYnAgOyAgCSAgICAgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9icCAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAgCX07ICAgIAogIHRl
bXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzU3lzUGt0R2V0VHJhcEJyZWFrc0NtZFR5cGUg
IAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlh
c1N5c1BrdEdldFRyYXBCcmVha3NDbWRUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1N5c1BrdEdl
dFRyYXBCcmVha3NDbWRUeXBlICAJKGNvbnN0IEVtQWxpYXNTeXNQa3RHZXRUcmFwQnJlYWtzQ21k
VHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9
CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlFbUFs
aWFzU3lzUGt0R2V0VHJhcEJyZWFrc0NtZFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFs
aWFzU3lzUGt0R2V0VHJhcEJyZWFrc0NtZFR5cGUgIDxBPiYpOwlFbUFsaWFzU3lzUGt0R2V0VHJh
cEJyZWFrc0NtZFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3lzUGt0
R2V0VHJhcEJyZWFrc0NtZFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRl
OglFbUFsaWFzU3lzUGt0R2V0VHJhcEJyZWFrc0NtZFR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJ
ZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWNvbW1hbmQgOyAJIEVt
QWxpYXNVSW50OCA8QT4JIAkJCQkJCV9maWxsZXIgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlT
eXNQa3RHZXRUcmFwQnJlYWtzQ21kVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90
eXBlOwlFbVByb3h5U3lzUGt0R2V0VHJhcEJyZWFrc0NtZFR5cGUgIAkodm9pZCk7CUVtUHJveHlT
eXNQa3RHZXRUcmFwQnJlYWtzQ21kVHlwZSAgCShjb25zdCBFbVByb3h5U3lzUGt0R2V0VHJhcEJy
ZWFrc0NtZFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4g
KHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICAyICA7IH0JRW1Qcm94eVN5c1BrdEdldFRyYXBCcmVha3NDbWRUeXBlICAm
CQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlTeXNQa3RHZXRUcmFwQnJlYWtzQ21kVHlwZSAgJik7
CUVtQWxpYXNTeXNQa3RHZXRUcmFwQnJlYWtzQ21kVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50
KTsJY29uc3QgRW1BbGlhc1N5c1BrdEdldFRyYXBCcmVha3NDbWRUeXBlICA8TEFTPglvcGVyYXRv
cltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAyICBd
Owl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWNv
bW1hbmQgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJX2ZpbGxlciA7ICAJICAgICBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gIAl9OyAg
IAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzU3lzUGt0R2V0VHJhcEJyZWFrc1Jz
cFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJ
RW1BbGlhc1N5c1BrdEdldFRyYXBCcmVha3NSc3BUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1N5
c1BrdEdldFRyYXBCcmVha3NSc3BUeXBlICAJKGNvbnN0IEVtQWxpYXNTeXNQa3RHZXRUcmFwQnJl
YWtzUnNwVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBm
UHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDEyICA7
IH0JRW1BbGlhc1N5c1BrdEdldFRyYXBCcmVha3NSc3BUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgRW1BbGlhc1N5c1BrdEdldFRyYXBCcmVha3NSc3BUeXBlICA8QT4mKTsJRW1BbGlhc1N5c1Br
dEdldFRyYXBCcmVha3NSc3BUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlh
c1N5c1BrdEdldFRyYXBCcmVha3NSc3BUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJ
cHJpdmF0ZToJRW1BbGlhc1N5c1BrdEdldFRyYXBCcmVha3NSc3BUeXBlICAJKHZvaWQpOwlwdHJf
dHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPEE+CSAJCQkJCQljb21tYW5k
IDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlfZmlsbGVyIDsgCSBFbUFsaWFzVUludDE2IDxB
PgkgCQkJCQkJdHJhcEJQIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAg
KHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAg
KHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdHJhcEJQICAo
dm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlTeXNQa3RHZXRUcmFwQnJl
YWtzUnNwVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lz
UGt0R2V0VHJhcEJyZWFrc1JzcFR5cGUgIAkodm9pZCk7CUVtUHJveHlTeXNQa3RHZXRUcmFwQnJl
YWtzUnNwVHlwZSAgCShjb25zdCBFbVByb3h5U3lzUGt0R2V0VHJhcEJyZWFrc1JzcFR5cGUgICYp
OwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxv
Y2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAx
MiAgOyB9CUVtUHJveHlTeXNQa3RHZXRUcmFwQnJlYWtzUnNwVHlwZSAgJgkJb3BlcmF0b3I9IChj
b25zdCBFbVByb3h5U3lzUGt0R2V0VHJhcEJyZWFrc1JzcFR5cGUgICYpOwlFbUFsaWFzU3lzUGt0
R2V0VHJhcEJyZWFrc1JzcFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxp
YXNTeXNQa3RHZXRUcmFwQnJlYWtzUnNwVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25z
dDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMTIgIF07CX0gZkxvY2FsRGF0
YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJY29tbWFuZCA7IAkgRW1B
bGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlfZmlsbGVyIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJ
CQkJCQl0cmFwQlAgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9p
ZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9p
ZCkgeyByZXR1cm4gIDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90cmFwQlAgICh2b2lk
KSB7IHJldHVybiAgMiA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFs
aWFzU3lzUGt0R2V0VHJhcENvbmRpdGlvbnNDbWRUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlw
ZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNTeXNQa3RHZXRUcmFwQ29uZGl0aW9u
c0NtZFR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzU3lzUGt0R2V0VHJhcENvbmRpdGlvbnNDbWRU
eXBlICAJKGNvbnN0IEVtQWxpYXNTeXNQa3RHZXRUcmFwQ29uZGl0aW9uc0NtZFR5cGUgICYpOwlw
dHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6
ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyICA7IH0JRW1BbGlhc1N5c1BrdEdl
dFRyYXBDb25kaXRpb25zQ21kVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNTeXNQ
a3RHZXRUcmFwQ29uZGl0aW9uc0NtZFR5cGUgIDxBPiYpOwlFbUFsaWFzU3lzUGt0R2V0VHJhcENv
bmRpdGlvbnNDbWRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1Br
dEdldFRyYXBDb25kaXRpb25zQ21kVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXBy
aXZhdGU6CUVtQWxpYXNTeXNQa3RHZXRUcmFwQ29uZGl0aW9uc0NtZFR5cGUgIAkodm9pZCk7CXB0
cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWNvbW1h
bmQgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCV9maWxsZXIgOyAgCSAgICAgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9ICAJfTsgCWNsYXNz
IEVtUHJveHlTeXNQa3RHZXRUcmFwQ29uZGl0aW9uc0NtZFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRl
ZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVN5c1BrdEdldFRyYXBDb25kaXRpb25zQ21kVHlwZSAg
CSh2b2lkKTsJRW1Qcm94eVN5c1BrdEdldFRyYXBDb25kaXRpb25zQ21kVHlwZSAgCShjb25zdCBF
bVByb3h5U3lzUGt0R2V0VHJhcENvbmRpdGlvbnNDbWRUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQ
dHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMiAgOyB9CUVtUHJveHlTeXNQ
a3RHZXRUcmFwQ29uZGl0aW9uc0NtZFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVN5
c1BrdEdldFRyYXBDb25kaXRpb25zQ21kVHlwZSAgJik7CUVtQWxpYXNTeXNQa3RHZXRUcmFwQ29u
ZGl0aW9uc0NtZFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNQ
a3RHZXRUcmFwQ29uZGl0aW9uc0NtZFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7
CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDIgIF07CX0gZkxvY2FsRGF0YTsJ
cHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlh
c1VJbnQ4IDxMQVM+CSAJCQkJCQlfZmlsbGVyIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfY29tbWFuZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfX2ZpbGxlciAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNs
YXNzIEE+CWNsYXNzIEVtQWxpYXNTeXNQa3RHZXRUcmFwQ29uZGl0aW9uc1JzcFR5cGUgIAl7CXB1
YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1N5c1Br
dEdldFRyYXBDb25kaXRpb25zUnNwVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNTeXNQa3RHZXRU
cmFwQ29uZGl0aW9uc1JzcFR5cGUgIAkoY29uc3QgRW1BbGlhc1N5c1BrdEdldFRyYXBDb25kaXRp
b25zUnNwVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBm
UHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDEyICA7
IH0JRW1BbGlhc1N5c1BrdEdldFRyYXBDb25kaXRpb25zUnNwVHlwZSAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IEVtQWxpYXNTeXNQa3RHZXRUcmFwQ29uZGl0aW9uc1JzcFR5cGUgIDxBPiYpOwlFbUFs
aWFzU3lzUGt0R2V0VHJhcENvbmRpdGlvbnNSc3BUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJ
Y29uc3QgRW1BbGlhc1N5c1BrdEdldFRyYXBDb25kaXRpb25zUnNwVHlwZSAgPEE+CW9wZXJhdG9y
W10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNTeXNQa3RHZXRUcmFwQ29uZGl0aW9uc1Jz
cFR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50
OCA8QT4JIAkJCQkJCWNvbW1hbmQgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCV9maWxsZXIg
OyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQl0cmFwUGFyYW0gOyAgCSAgICAgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl90cmFwUGFyYW0gICh2b2lkKSB7IHJldHVybiAgMiA7IH0gIAl9OyAJY2xh
c3MgRW1Qcm94eVN5c1BrdEdldFRyYXBDb25kaXRpb25zUnNwVHlwZSAgCXsJcHVibGljOgl0eXBl
ZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lzUGt0R2V0VHJhcENvbmRpdGlvbnNSc3BUeXBl
ICAJKHZvaWQpOwlFbVByb3h5U3lzUGt0R2V0VHJhcENvbmRpdGlvbnNSc3BUeXBlICAJKGNvbnN0
IEVtUHJveHlTeXNQa3RHZXRUcmFwQ29uZGl0aW9uc1JzcFR5cGUgICYpOwlwdHJfdHlwZQkJCUdl
dFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0
aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAxMiAgOyB9CUVtUHJveHlT
eXNQa3RHZXRUcmFwQ29uZGl0aW9uc1JzcFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94
eVN5c1BrdEdldFRyYXBDb25kaXRpb25zUnNwVHlwZSAgJik7CUVtQWxpYXNTeXNQa3RHZXRUcmFw
Q29uZGl0aW9uc1JzcFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNT
eXNQa3RHZXRUcmFwQ29uZGl0aW9uc1JzcFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29u
c3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDEyICBdOwl9IGZMb2NhbERh
dGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWNvbW1hbmQgOyAJIEVt
QWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJX2ZpbGxlciA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkg
CQkJCQkJdHJhcFBhcmFtIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAg
KHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAg
KHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdHJhcFBhcmFt
ICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xh
c3MgRW1BbGlhc1N5c1BrdFJlYWRNZW1DbWRUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5h
bWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNTeXNQa3RSZWFkTWVtQ21kVHlwZSAgCShw
dHJfdHlwZSk7CUVtQWxpYXNTeXNQa3RSZWFkTWVtQ21kVHlwZSAgCShjb25zdCBFbUFsaWFzU3lz
UGt0UmVhZE1lbUNtZFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAg
ICA4ICA7IH0JRW1BbGlhc1N5c1BrdFJlYWRNZW1DbWRUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgRW1BbGlhc1N5c1BrdFJlYWRNZW1DbWRUeXBlICA8QT4mKTsJRW1BbGlhc1N5c1BrdFJlYWRN
ZW1DbWRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdFJlYWRN
ZW1DbWRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1N5
c1BrdFJlYWRNZW1DbWRUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAg
ICBFbUFsaWFzVUludDggPEE+CSAJCQkJCQljb21tYW5kIDsgCSBFbUFsaWFzVUludDggPEE+CSAJ
CQkJCQlfZmlsbGVyIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJYWRkcmVzcyA7IAkgRW1B
bGlhc1VJbnQxNiA8QT4JIAkJCQkJCW51bUJ5dGVzIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfY29tbWFuZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfX2ZpbGxlciAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfYWRkcmVzcyAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfbnVtQnl0ZXMgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94
eVN5c1BrdFJlYWRNZW1DbWRUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7
CUVtUHJveHlTeXNQa3RSZWFkTWVtQ21kVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVN5c1BrdFJlYWRN
ZW1DbWRUeXBlICAJKGNvbnN0IEVtUHJveHlTeXNQa3RSZWFkTWVtQ21kVHlwZSAgJik7CXB0cl90
eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRh
OyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDggIDsgfQlF
bVByb3h5U3lzUGt0UmVhZE1lbUNtZFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVN5
c1BrdFJlYWRNZW1DbWRUeXBlICAmKTsJRW1BbGlhc1N5c1BrdFJlYWRNZW1DbWRUeXBlICA8TEFT
PglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3lzUGt0UmVhZE1lbUNtZFR5cGUgIDxM
QVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0
ZXNbICAgIDggIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8TEFT
PgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlfZmlsbGVyIDsg
CSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlhZGRyZXNzIDsgCSBFbUFsaWFzVUludDE2IDxM
QVM+CSAJCQkJCQludW1CeXRlcyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1h
bmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxs
ZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FkZHJl
c3MgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX251bUJ5
dGVzICAodm9pZCkgeyByZXR1cm4gIDYgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4J
Y2xhc3MgRW1BbGlhc1N5c1BrdFJlYWRNZW1Sc3BUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlw
ZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNTeXNQa3RSZWFkTWVtUnNwVHlwZSAg
CShwdHJfdHlwZSk7CUVtQWxpYXNTeXNQa3RSZWFkTWVtUnNwVHlwZSAgCShjb25zdCBFbUFsaWFz
U3lzUGt0UmVhZE1lbVJzcFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJ
eyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJu
ICAgICAoMjU2ICsxNikgICA7IH0JRW1BbGlhc1N5c1BrdFJlYWRNZW1Sc3BUeXBlICA8QT4mCW9w
ZXJhdG9yPSAoY29uc3QgRW1BbGlhc1N5c1BrdFJlYWRNZW1Sc3BUeXBlICA8QT4mKTsJRW1BbGlh
c1N5c1BrdFJlYWRNZW1Sc3BUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlh
c1N5c1BrdFJlYWRNZW1Sc3BUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0
ZToJRW1BbGlhc1N5c1BrdFJlYWRNZW1Sc3BUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7
CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPEE+CSAJCQkJCQljb21tYW5kIDsgCSBFbUFsaWFz
VUludDggPEE+CSAJCQkJCQlfZmlsbGVyIDsgCSBFbUFsaWFzY2hhciA8QT4JIAkJCQkJCWRhdGEg
OyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4g
IDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4g
IDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kYXRhICAodm9pZCkgeyByZXR1cm4gIDIg
OyB9ICAJfTsgCWNsYXNzIEVtUHJveHlTeXNQa3RSZWFkTWVtUnNwVHlwZSAgCXsJcHVibGljOgl0
eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lzUGt0UmVhZE1lbVJzcFR5cGUgIAkodm9p
ZCk7CUVtUHJveHlTeXNQa3RSZWFkTWVtUnNwVHlwZSAgCShjb25zdCBFbVByb3h5U3lzUGt0UmVh
ZE1lbVJzcFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4g
KHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICAoMjU2ICsxNikgICA7IH0JRW1Qcm94eVN5c1BrdFJlYWRNZW1Sc3BUeXBl
ICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlTeXNQa3RSZWFkTWVtUnNwVHlwZSAgJik7CUVt
QWxpYXNTeXNQa3RSZWFkTWVtUnNwVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3Qg
RW1BbGlhc1N5c1BrdFJlYWRNZW1Sc3BUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0
Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAoMjU2ICsxNikgICBdOwl9IGZM
b2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWNvbW1hbmQg
OyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJX2ZpbGxlciA7IAkgRW1BbGlhc2NoYXIgPExB
Uz4JIAkJCQkJCWRhdGEgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAo
dm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAo
dm9pZCkgeyByZXR1cm4gIDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kYXRhICAodm9p
ZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1B
bGlhc1N5c1BrdFJlYWRSZWdzQ21kVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6
OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzU3lzUGt0UmVhZFJlZ3NDbWRUeXBlICAJKHB0cl90
eXBlKTsJRW1BbGlhc1N5c1BrdFJlYWRSZWdzQ21kVHlwZSAgCShjb25zdCBFbUFsaWFzU3lzUGt0
UmVhZFJlZ3NDbWRUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0
dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAg
MiAgOyB9CUVtQWxpYXNTeXNQa3RSZWFkUmVnc0NtZFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25z
dCBFbUFsaWFzU3lzUGt0UmVhZFJlZ3NDbWRUeXBlICA8QT4mKTsJRW1BbGlhc1N5c1BrdFJlYWRS
ZWdzQ21kVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNQa3RSZWFk
UmVnc0NtZFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFz
U3lzUGt0UmVhZFJlZ3NDbWRUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJ
ICAgICBFbUFsaWFzVUludDggPEE+CSAJCQkJCQljb21tYW5kIDsgCSBFbUFsaWFzVUludDggPEE+
CSAJCQkJCQlfZmlsbGVyIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAg
KHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAg
KHZvaWQpIHsgcmV0dXJuICAxIDsgfSAgCX07IAljbGFzcyBFbVByb3h5U3lzUGt0UmVhZFJlZ3ND
bWRUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlTeXNQa3RS
ZWFkUmVnc0NtZFR5cGUgIAkodm9pZCk7CUVtUHJveHlTeXNQa3RSZWFkUmVnc0NtZFR5cGUgIAko
Y29uc3QgRW1Qcm94eVN5c1BrdFJlYWRSZWdzQ21kVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRy
CSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBz
aXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlFbVByb3h5U3lzUGt0
UmVhZFJlZ3NDbWRUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlTeXNQa3RSZWFkUmVn
c0NtZFR5cGUgICYpOwlFbUFsaWFzU3lzUGt0UmVhZFJlZ3NDbWRUeXBlICA8TEFTPglvcGVyYXRv
cltdIChpbnQpOwljb25zdCBFbUFsaWFzU3lzUGt0UmVhZFJlZ3NDbWRUeXBlICA8TEFTPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAy
ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJ
CWNvbW1hbmQgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJX2ZpbGxlciA7ICAJICAgICBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gIAl9
OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzU3lzUGt0UmVhZFJlZ3NSc3BU
eXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVt
QWxpYXNTeXNQa3RSZWFkUmVnc1JzcFR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzU3lzUGt0UmVh
ZFJlZ3NSc3BUeXBlICAJKGNvbnN0IEVtQWxpYXNTeXNQa3RSZWFkUmVnc1JzcFR5cGUgICYpOwlw
dHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6
ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA3NiAgOyB9CUVtQWxpYXNTeXNQa3RS
ZWFkUmVnc1JzcFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzU3lzUGt0UmVhZFJl
Z3NSc3BUeXBlICA8QT4mKTsJRW1BbGlhc1N5c1BrdFJlYWRSZWdzUnNwVHlwZSAgPEE+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNQa3RSZWFkUmVnc1JzcFR5cGUgIDxBPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzU3lzUGt0UmVhZFJlZ3NSc3BUeXBl
ICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPEE+
CSAJCQkJCQljb21tYW5kIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlfZmlsbGVyIDsgCSBF
bUFsaWFzTTY4S1JlZ3NUeXBlIDxBPgkgCQkJCXJlZyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX19maWxsZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3JlZyAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAgCX07IAljbGFzcyBFbVByb3h5U3lz
UGt0UmVhZFJlZ3NSc3BUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVt
UHJveHlTeXNQa3RSZWFkUmVnc1JzcFR5cGUgIAkodm9pZCk7CUVtUHJveHlTeXNQa3RSZWFkUmVn
c1JzcFR5cGUgIAkoY29uc3QgRW1Qcm94eVN5c1BrdFJlYWRSZWdzUnNwVHlwZSAgJik7CXB0cl90
eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRh
OyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDc2ICA7IH0J
RW1Qcm94eVN5c1BrdFJlYWRSZWdzUnNwVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5
U3lzUGt0UmVhZFJlZ3NSc3BUeXBlICAmKTsJRW1BbGlhc1N5c1BrdFJlYWRSZWdzUnNwVHlwZSAg
PExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdFJlYWRSZWdzUnNwVHlw
ZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJ
CV9ieXRlc1sgICAgNzYgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50
OCA8TEFTPgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlfZmls
bGVyIDsgCSBFbUFsaWFzTTY4S1JlZ3NUeXBlIDxMQVM+CSAJCQkJcmVnIDsgIAkgICAgIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfcmVnICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgICAJICB0
ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1N5c1BrdFJQQzJUeXBlICAJewlwdWJsaWM6
CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNTeXNQa3RSUEMy
VHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNTeXNQa3RSUEMyVHlwZSAgCShjb25zdCBFbUFsaWFz
U3lzUGt0UlBDMlR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1
cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAo
MjU2ICsxNikgICA7IH0JRW1BbGlhc1N5c1BrdFJQQzJUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgRW1BbGlhc1N5c1BrdFJQQzJUeXBlICA8QT4mKTsJRW1BbGlhc1N5c1BrdFJQQzJUeXBlICA8
QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdFJQQzJUeXBlICA8QT4Jb3Bl
cmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1N5c1BrdFJQQzJUeXBlICAJKHZv
aWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPEE+CSAJCQkJ
CQljb21tYW5kIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlfZmlsbGVyIDsgCSBFbUFsaWFz
VUludDE2IDxBPgkgCQkJCQkJdHJhcFdvcmQgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQly
ZXN1bHREMCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXJlc3VsdEEwIDsgCSBFbUFsaWFz
VUludDE2IDxBPgkgCQkJCQkJcmVzdWx0RXhjZXB0aW9uIDsgCSBFbUFsaWFzVUludDggPEE+CSAJ
CQkJCQlEUmVnTWFzayA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJQVJlZ01hc2sgOyAJIEVt
QWxpYXNVSW50MzIgPEE+CSAJCQkJCQlSZWdzIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJ
bnVtUGFyYW1zIDsgCSBFbUFsaWFzY2hhciA8QT4JIAkJCQkJCXBhcmFtIDsgIAkgICAgIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdHJhcFdvcmQgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3Jlc3VsdEQwICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9yZXN1bHRBMCAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVzdWx0RXhjZXB0aW9uICAodm9pZCkgeyByZXR1cm4gIDEy
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfRFJlZ01hc2sgICh2b2lkKSB7IHJldHVybiAg
MTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9BUmVnTWFzayAgKHZvaWQpIHsgcmV0dXJu
ICAxNSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX1JlZ3MgICh2b2lkKSB7IHJldHVybiAg
MTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9udW1QYXJhbXMgICh2b2lkKSB7IHJldHVy
biAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BhcmFtICAodm9pZCkgeyByZXR1cm4g
IDEgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlTeXNQa3RSUEMyVHlwZSAgCXsJcHVibGljOgl0eXBl
ZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lzUGt0UlBDMlR5cGUgIAkodm9pZCk7CUVtUHJv
eHlTeXNQa3RSUEMyVHlwZSAgCShjb25zdCBFbVByb3h5U3lzUGt0UlBDMlR5cGUgICYpOwlwdHJf
dHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0
YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAoMjU2ICsx
NikgICA7IH0JRW1Qcm94eVN5c1BrdFJQQzJUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJv
eHlTeXNQa3RSUEMyVHlwZSAgJik7CUVtQWxpYXNTeXNQa3RSUEMyVHlwZSAgPExBUz4Jb3BlcmF0
b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdFJQQzJUeXBlICA8TEFTPglvcGVyYXRvcltd
IChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAoMjU2ICsx
NikgICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPExBUz4JIAkJ
CQkJCWNvbW1hbmQgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJX2ZpbGxlciA7IAkgRW1B
bGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJdHJhcFdvcmQgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4J
IAkJCQkJCXJlc3VsdEQwIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlyZXN1bHRBMCA7
IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJcmVzdWx0RXhjZXB0aW9uIDsgCSBFbUFsaWFz
VUludDggPExBUz4JIAkJCQkJCURSZWdNYXNrIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJ
CUFSZWdNYXNrIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlSZWdzIDsgCSBFbUFsaWFz
VUludDE2IDxMQVM+CSAJCQkJCQludW1QYXJhbXMgOyAJIEVtQWxpYXNjaGFyIDxMQVM+CSAJCQkJ
CQlwYXJhbSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7
IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7
IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RyYXBXb3JkICAodm9pZCkg
eyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXN1bHREMCAgKHZvaWQp
IHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVzdWx0QTAgICh2b2lk
KSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jlc3VsdEV4Y2VwdGlv
biAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX0RSZWdN
YXNrICAodm9pZCkgeyByZXR1cm4gIDE0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfQVJl
Z01hc2sgICh2b2lkKSB7IHJldHVybiAgMTUgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9S
ZWdzICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbnVt
UGFyYW1zICAodm9pZCkgeyByZXR1cm4gIDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9w
YXJhbSAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+
CWNsYXNzIEVtQWxpYXNTeXNQa3RSUENUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUg
QTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNTeXNQa3RSUENUeXBlICAJKHB0cl90eXBlKTsJ
RW1BbGlhc1N5c1BrdFJQQ1R5cGUgIAkoY29uc3QgRW1BbGlhc1N5c1BrdFJQQ1R5cGUgICYpOwlw
dHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6
ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAoMjU2ICsxNikgICA7IH0JRW1BbGlh
c1N5c1BrdFJQQ1R5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzU3lzUGt0UlBDVHlw
ZSAgPEE+Jik7CUVtQWxpYXNTeXNQa3RSUENUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29u
c3QgRW1BbGlhc1N5c1BrdFJQQ1R5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2
YXRlOglFbUFsaWFzU3lzUGt0UlBDVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJs
aWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4
IDxBPgkgCQkJCQkJX2ZpbGxlciA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXRyYXBXb3Jk
IDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJcmVzdWx0RDAgOyAJIEVtQWxpYXNVSW50MzIg
PEE+CSAJCQkJCQlyZXN1bHRBMCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCW51bVBhcmFt
cyA7IAkgRW1BbGlhc2NoYXIgPEE+CSAJCQkJCQlwYXJhbSA7ICAJICAgICBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3RyYXBXb3JkICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9yZXN1bHREMCAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfcmVzdWx0QTAgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX251bVBhcmFtcyAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3BhcmFtICAodm9pZCkgeyByZXR1cm4gIDE0IDsgfSAgCX07IAljbGFz
cyBFbVByb3h5U3lzUGt0UlBDVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBl
OwlFbVByb3h5U3lzUGt0UlBDVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVN5c1BrdFJQQ1R5cGUgIAko
Y29uc3QgRW1Qcm94eVN5c1BrdFJQQ1R5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkg
Y29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlH
ZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAoMjU2ICsxNikgICA7IH0JRW1Qcm94eVN5c1Br
dFJQQ1R5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVN5c1BrdFJQQ1R5cGUgICYpOwlF
bUFsaWFzU3lzUGt0UlBDVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlh
c1N5c1BrdFJQQ1R5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0
cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgICgyNTYgKzE2KSAgIF07CX0gZkxvY2FsRGF0YTsJcHVi
bGljOgkgICAgIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJ
bnQ4IDxMQVM+CSAJCQkJCQlfZmlsbGVyIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQl0
cmFwV29yZCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJcmVzdWx0RDAgOyAJIEVtQWxp
YXNVSW50MzIgPExBUz4JIAkJCQkJCXJlc3VsdEEwIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJ
CQkJCQludW1QYXJhbXMgOyAJIEVtQWxpYXNjaGFyIDxMQVM+CSAJCQkJCQlwYXJhbSA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RyYXBXb3JkICAodm9pZCkgeyByZXR1cm4gIDIgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXN1bHREMCAgKHZvaWQpIHsgcmV0dXJuICA0IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVzdWx0QTAgICh2b2lkKSB7IHJldHVybiAgOCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX251bVBhcmFtcyAgKHZvaWQpIHsgcmV0dXJuICAx
MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BhcmFtICAodm9pZCkgeyByZXR1cm4gIDE0
IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNTeXNQa3RSdG5O
YW1lQ21kVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90
eXBlOwlFbUFsaWFzU3lzUGt0UnRuTmFtZUNtZFR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzU3lz
UGt0UnRuTmFtZUNtZFR5cGUgIAkoY29uc3QgRW1BbGlhc1N5c1BrdFJ0bk5hbWVDbWRUeXBlICAm
KTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNiAgOyB9CUVtQWxpYXNTeXNQ
a3RSdG5OYW1lQ21kVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNTeXNQa3RSdG5O
YW1lQ21kVHlwZSAgPEE+Jik7CUVtQWxpYXNTeXNQa3RSdG5OYW1lQ21kVHlwZSAgPEE+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNQa3RSdG5OYW1lQ21kVHlwZSAgPEE+CW9wZXJh
dG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNTeXNQa3RSdG5OYW1lQ21kVHlwZSAg
CSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkg
CQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJX2ZpbGxlciA7IAkgRW1B
bGlhc2VtdXB0ciA8QT4JIAkJCQkJCWFkZHJlc3MgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9hZGRyZXNzICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlT
eXNQa3RSdG5OYW1lQ21kVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlF
bVByb3h5U3lzUGt0UnRuTmFtZUNtZFR5cGUgIAkodm9pZCk7CUVtUHJveHlTeXNQa3RSdG5OYW1l
Q21kVHlwZSAgCShjb25zdCBFbVByb3h5U3lzUGt0UnRuTmFtZUNtZFR5cGUgICYpOwlwdHJfdHlw
ZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsg
fQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA2ICA7IH0JRW1Q
cm94eVN5c1BrdFJ0bk5hbWVDbWRUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlTeXNQ
a3RSdG5OYW1lQ21kVHlwZSAgJik7CUVtQWxpYXNTeXNQa3RSdG5OYW1lQ21kVHlwZSAgPExBUz4J
b3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdFJ0bk5hbWVDbWRUeXBlICA8TEFT
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVz
WyAgICA2ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPExBUz4J
IAkJCQkJCWNvbW1hbmQgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJX2ZpbGxlciA7IAkg
RW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJYWRkcmVzcyA7ICAJICAgICBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2FkZHJlc3MgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gIAl9OyAgICAKICB0ZW1w
bGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1N5c1BrdFJ0bk5hbWVSc3BUeXBlICAJewlwdWJs
aWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNTeXNQa3RS
dG5OYW1lUnNwVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNTeXNQa3RSdG5OYW1lUnNwVHlwZSAg
CShjb25zdCBFbUFsaWFzU3lzUGt0UnRuTmFtZVJzcFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0
cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2
b2lkKQkJCXsgcmV0dXJuICAgICAoMTQgKyAzMiApICA7IH0JRW1BbGlhc1N5c1BrdFJ0bk5hbWVS
c3BUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1N5c1BrdFJ0bk5hbWVSc3BUeXBl
ICA8QT4mKTsJRW1BbGlhc1N5c1BrdFJ0bk5hbWVSc3BUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50
KTsJY29uc3QgRW1BbGlhc1N5c1BrdFJ0bk5hbWVSc3BUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50
KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1N5c1BrdFJ0bk5hbWVSc3BUeXBlICAJKHZvaWQpOwlw
dHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPEE+CSAJCQkJCQljb21t
YW5kIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlfZmlsbGVyIDsgCSBFbUFsaWFzZW11cHRy
IDxBPgkgCQkJCQkJYWRkcmVzcyA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXN0YXJ0QWRk
ciA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWVuZEFkZHIgOyAJIEVtQWxpYXNjaGFyIDxB
PgkgCQkJCQkJbmFtZSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2
b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxsZXIgICh2
b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FkZHJlc3MgICh2
b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N0YXJ0QWRkciAg
KHZvaWQpIHsgcmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZW5kQWRkciAg
KHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25hbWUgICh2
b2lkKSB7IHJldHVybiAgMTQgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlTeXNQa3RSdG5OYW1lUnNw
VHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lzUGt0UnRu
TmFtZVJzcFR5cGUgIAkodm9pZCk7CUVtUHJveHlTeXNQa3RSdG5OYW1lUnNwVHlwZSAgCShjb25z
dCBFbVByb3h5U3lzUGt0UnRuTmFtZVJzcFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9p
ZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90
CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAoMTQgKyAzMiApICA7IH0JRW1Qcm94eVN5
c1BrdFJ0bk5hbWVSc3BUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlTeXNQa3RSdG5O
YW1lUnNwVHlwZSAgJik7CUVtQWxpYXNTeXNQa3RSdG5OYW1lUnNwVHlwZSAgPExBUz4Jb3BlcmF0
b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdFJ0bk5hbWVSc3BUeXBlICA8TEFTPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAo
MTQgKyAzMiApICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPExB
Uz4JIAkJCQkJCWNvbW1hbmQgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJX2ZpbGxlciA7
IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJYWRkcmVzcyA7IAkgRW1BbGlhc2VtdXB0ciA8
TEFTPgkgCQkJCQkJc3RhcnRBZGRyIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQllbmRB
ZGRyIDsgCSBFbUFsaWFzY2hhciA8TEFTPgkgCQkJCQkJbmFtZSA7ICAJICAgICBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2FkZHJlc3MgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3N0YXJ0QWRkciAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfZW5kQWRkciAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX25hbWUgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9ICAJfTsgICAJICB0
ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1N5c1BrdFNldEJyZWFrcG9pbnRzQ21kVHlw
ZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFs
aWFzU3lzUGt0U2V0QnJlYWtwb2ludHNDbWRUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1N5c1Br
dFNldEJyZWFrcG9pbnRzQ21kVHlwZSAgCShjb25zdCBFbUFsaWFzU3lzUGt0U2V0QnJlYWtwb2lu
dHNDbWRUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQ
dHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMzggIDsg
fQlFbUFsaWFzU3lzUGt0U2V0QnJlYWtwb2ludHNDbWRUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgRW1BbGlhc1N5c1BrdFNldEJyZWFrcG9pbnRzQ21kVHlwZSAgPEE+Jik7CUVtQWxpYXNTeXNQ
a3RTZXRCcmVha3BvaW50c0NtZFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFs
aWFzU3lzUGt0U2V0QnJlYWtwb2ludHNDbWRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25z
dDsJcHJpdmF0ZToJRW1BbGlhc1N5c1BrdFNldEJyZWFrcG9pbnRzQ21kVHlwZSAgCSh2b2lkKTsJ
cHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJY29t
bWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJX2ZpbGxlciA7IAkgRW1BbGlhc0JyZWFr
cG9pbnRUeXBlIDxBPgkgCQkJCWJwIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29t
bWFuZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX2Zp
bGxlciAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYnAg
ICh2b2lkKSB7IHJldHVybiAgMiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVN5c1BrdFNldEJyZWFr
cG9pbnRzQ21kVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5
U3lzUGt0U2V0QnJlYWtwb2ludHNDbWRUeXBlICAJKHZvaWQpOwlFbVByb3h5U3lzUGt0U2V0QnJl
YWtwb2ludHNDbWRUeXBlICAJKGNvbnN0IEVtUHJveHlTeXNQa3RTZXRCcmVha3BvaW50c0NtZFR5
cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBl
KSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJu
ICAgICAzOCAgOyB9CUVtUHJveHlTeXNQa3RTZXRCcmVha3BvaW50c0NtZFR5cGUgICYJCW9wZXJh
dG9yPSAoY29uc3QgRW1Qcm94eVN5c1BrdFNldEJyZWFrcG9pbnRzQ21kVHlwZSAgJik7CUVtQWxp
YXNTeXNQa3RTZXRCcmVha3BvaW50c0NtZFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNv
bnN0IEVtQWxpYXNTeXNQa3RTZXRCcmVha3BvaW50c0NtZFR5cGUgIDxMQVM+CW9wZXJhdG9yW10g
KGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDM4ICBdOwl9
IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWNvbW1h
bmQgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJX2ZpbGxlciA7IAkgRW1BbGlhc0JyZWFr
cG9pbnRUeXBlIDxMQVM+CSAJCQkJYnAgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9j
b21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9f
ZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9i
cCAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNs
YXNzIEVtQWxpYXNTeXNQa3RTZXRCcmVha3BvaW50c1JzcFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRl
ZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1N5c1BrdFNldEJyZWFrcG9p
bnRzUnNwVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNTeXNQa3RTZXRCcmVha3BvaW50c1JzcFR5
cGUgIAkoY29uc3QgRW1BbGlhc1N5c1BrdFNldEJyZWFrcG9pbnRzUnNwVHlwZSAgJik7CXB0cl90
eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJ
CUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlFbUFsaWFzU3lzUGt0U2V0QnJl
YWtwb2ludHNSc3BUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1N5c1BrdFNldEJy
ZWFrcG9pbnRzUnNwVHlwZSAgPEE+Jik7CUVtQWxpYXNTeXNQa3RTZXRCcmVha3BvaW50c1JzcFR5
cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3lzUGt0U2V0QnJlYWtwb2lu
dHNSc3BUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1N5
c1BrdFNldEJyZWFrcG9pbnRzUnNwVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJs
aWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4
IDxBPgkgCQkJCQkJX2ZpbGxlciA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1h
bmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxs
ZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVN5c1BrdFNldEJy
ZWFrcG9pbnRzUnNwVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVBy
b3h5U3lzUGt0U2V0QnJlYWtwb2ludHNSc3BUeXBlICAJKHZvaWQpOwlFbVByb3h5U3lzUGt0U2V0
QnJlYWtwb2ludHNSc3BUeXBlICAJKGNvbnN0IEVtUHJveHlTeXNQa3RTZXRCcmVha3BvaW50c1Jz
cFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90
eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0
dXJuICAgICAyICA7IH0JRW1Qcm94eVN5c1BrdFNldEJyZWFrcG9pbnRzUnNwVHlwZSAgJgkJb3Bl
cmF0b3I9IChjb25zdCBFbVByb3h5U3lzUGt0U2V0QnJlYWtwb2ludHNSc3BUeXBlICAmKTsJRW1B
bGlhc1N5c1BrdFNldEJyZWFrcG9pbnRzUnNwVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJ
Y29uc3QgRW1BbGlhc1N5c1BrdFNldEJyZWFrcG9pbnRzUnNwVHlwZSAgPExBUz4Jb3BlcmF0b3Jb
XSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMiAgXTsJ
fSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQljb21t
YW5kIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCV9maWxsZXIgOyAgCSAgICAgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9ICAJfTsgICAJ
ICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1N5c1BrdFNldFRyYXBCcmVha3NDbWRU
eXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVt
QWxpYXNTeXNQa3RTZXRUcmFwQnJlYWtzQ21kVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNTeXNQ
a3RTZXRUcmFwQnJlYWtzQ21kVHlwZSAgCShjb25zdCBFbUFsaWFzU3lzUGt0U2V0VHJhcEJyZWFr
c0NtZFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0
cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAxMiAgOyB9
CUVtQWxpYXNTeXNQa3RTZXRUcmFwQnJlYWtzQ21kVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0
IEVtQWxpYXNTeXNQa3RTZXRUcmFwQnJlYWtzQ21kVHlwZSAgPEE+Jik7CUVtQWxpYXNTeXNQa3RT
ZXRUcmFwQnJlYWtzQ21kVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNT
eXNQa3RTZXRUcmFwQnJlYWtzQ21kVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXBy
aXZhdGU6CUVtQWxpYXNTeXNQa3RTZXRUcmFwQnJlYWtzQ21kVHlwZSAgCSh2b2lkKTsJcHRyX3R5
cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJY29tbWFuZCA7
IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJX2ZpbGxlciA7IAkgRW1BbGlhc1VJbnQxNiA8QT4J
IAkJCQkJCXRyYXBCUCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2
b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxsZXIgICh2
b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RyYXBCUCAgKHZv
aWQpIHsgcmV0dXJuICAyIDsgfSAgCX07IAljbGFzcyBFbVByb3h5U3lzUGt0U2V0VHJhcEJyZWFr
c0NtZFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVN5c1Br
dFNldFRyYXBCcmVha3NDbWRUeXBlICAJKHZvaWQpOwlFbVByb3h5U3lzUGt0U2V0VHJhcEJyZWFr
c0NtZFR5cGUgIAkoY29uc3QgRW1Qcm94eVN5c1BrdFNldFRyYXBCcmVha3NDbWRUeXBlICAmKTsJ
cHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2Nh
bERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTIg
IDsgfQlFbVByb3h5U3lzUGt0U2V0VHJhcEJyZWFrc0NtZFR5cGUgICYJCW9wZXJhdG9yPSAoY29u
c3QgRW1Qcm94eVN5c1BrdFNldFRyYXBCcmVha3NDbWRUeXBlICAmKTsJRW1BbGlhc1N5c1BrdFNl
dFRyYXBCcmVha3NDbWRUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFz
U3lzUGt0U2V0VHJhcEJyZWFrc0NtZFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7
CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDEyICBdOwl9IGZMb2NhbERhdGE7
CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWNvbW1hbmQgOyAJIEVtQWxp
YXNVSW50OCA8TEFTPgkgCQkJCQkJX2ZpbGxlciA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJ
CQkJdHJhcEJQIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAgKHZvaWQp
IHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAgKHZvaWQp
IHsgcmV0dXJuICAxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdHJhcEJQICAodm9pZCkg
eyByZXR1cm4gIDIgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlh
c1N5c1BrdFNldFRyYXBDb25kaXRpb25zQ21kVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVu
YW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzU3lzUGt0U2V0VHJhcENvbmRpdGlvbnND
bWRUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1N5c1BrdFNldFRyYXBDb25kaXRpb25zQ21kVHlw
ZSAgCShjb25zdCBFbUFsaWFzU3lzUGt0U2V0VHJhcENvbmRpdGlvbnNDbWRUeXBlICAmKTsJcHRy
X3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVf
dAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTIgIDsgfQlFbUFsaWFzU3lzUGt0U2V0
VHJhcENvbmRpdGlvbnNDbWRUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1N5c1Br
dFNldFRyYXBDb25kaXRpb25zQ21kVHlwZSAgPEE+Jik7CUVtQWxpYXNTeXNQa3RTZXRUcmFwQ29u
ZGl0aW9uc0NtZFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3lzUGt0
U2V0VHJhcENvbmRpdGlvbnNDbWRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJp
dmF0ZToJRW1BbGlhc1N5c1BrdFNldFRyYXBDb25kaXRpb25zQ21kVHlwZSAgCSh2b2lkKTsJcHRy
X3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJY29tbWFu
ZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJX2ZpbGxlciA7IAkgRW1BbGlhc1VJbnQxNiA8
QT4JIAkJCQkJCXRyYXBQYXJhbSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1h
bmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxs
ZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RyYXBQ
YXJhbSAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAgCX07IAljbGFzcyBFbVByb3h5U3lzUGt0U2V0
VHJhcENvbmRpdGlvbnNDbWRUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7
CUVtUHJveHlTeXNQa3RTZXRUcmFwQ29uZGl0aW9uc0NtZFR5cGUgIAkodm9pZCk7CUVtUHJveHlT
eXNQa3RTZXRUcmFwQ29uZGl0aW9uc0NtZFR5cGUgIAkoY29uc3QgRW1Qcm94eVN5c1BrdFNldFRy
YXBDb25kaXRpb25zQ21kVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJ
KHZvaWQpCQkJeyByZXR1cm4gICAgIDEyICA7IH0JRW1Qcm94eVN5c1BrdFNldFRyYXBDb25kaXRp
b25zQ21kVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5U3lzUGt0U2V0VHJhcENvbmRp
dGlvbnNDbWRUeXBlICAmKTsJRW1BbGlhc1N5c1BrdFNldFRyYXBDb25kaXRpb25zQ21kVHlwZSAg
PExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdFNldFRyYXBDb25kaXRp
b25zQ21kVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0
IHsJY2hhcgkJCV9ieXRlc1sgICAgMTIgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVt
QWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJ
CQkJCQlfZmlsbGVyIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQl0cmFwUGFyYW0gOyAg
CSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90cmFwUGFyYW0gICh2b2lkKSB7IHJldHVybiAg
MiA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzU3lzUGt0U2V0
VHJhcENvbmRpdGlvbnNSc3BUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRy
X3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNTeXNQa3RTZXRUcmFwQ29uZGl0aW9uc1JzcFR5cGUgIAko
cHRyX3R5cGUpOwlFbUFsaWFzU3lzUGt0U2V0VHJhcENvbmRpdGlvbnNSc3BUeXBlICAJKGNvbnN0
IEVtQWxpYXNTeXNQa3RTZXRUcmFwQ29uZGl0aW9uc1JzcFR5cGUgICYpOwlwdHJfdHlwZQkJCUdl
dFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXpl
CSh2b2lkKQkJCXsgcmV0dXJuICAgICAyICA7IH0JRW1BbGlhc1N5c1BrdFNldFRyYXBDb25kaXRp
b25zUnNwVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNTeXNQa3RTZXRUcmFwQ29u
ZGl0aW9uc1JzcFR5cGUgIDxBPiYpOwlFbUFsaWFzU3lzUGt0U2V0VHJhcENvbmRpdGlvbnNSc3BU
eXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdFNldFRyYXBDb25k
aXRpb25zUnNwVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxp
YXNTeXNQa3RTZXRUcmFwQ29uZGl0aW9uc1JzcFR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0
cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWNvbW1hbmQgOyAJIEVtQWxp
YXNVSW50OCA8QT4JIAkJCQkJCV9maWxsZXIgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlTeXNQ
a3RTZXRUcmFwQ29uZGl0aW9uc1JzcFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJf
dHlwZTsJRW1Qcm94eVN5c1BrdFNldFRyYXBDb25kaXRpb25zUnNwVHlwZSAgCSh2b2lkKTsJRW1Q
cm94eVN5c1BrdFNldFRyYXBDb25kaXRpb25zUnNwVHlwZSAgCShjb25zdCBFbVByb3h5U3lzUGt0
U2V0VHJhcENvbmRpdGlvbnNSc3BUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNv
bnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0
U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMiAgOyB9CUVtUHJveHlTeXNQa3RTZXRUcmFwQ29u
ZGl0aW9uc1JzcFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVN5c1BrdFNldFRyYXBD
b25kaXRpb25zUnNwVHlwZSAgJik7CUVtQWxpYXNTeXNQa3RTZXRUcmFwQ29uZGl0aW9uc1JzcFR5
cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNQa3RTZXRUcmFwQ29u
ZGl0aW9uc1JzcFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0
cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDIgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAg
IEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+
CSAJCQkJCQlfZmlsbGVyIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAg
KHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAg
KHZvaWQpIHsgcmV0dXJuICAxIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNz
IEVtQWxpYXNTeXNQa3RTdGF0ZUNtZFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBB
OjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1N5c1BrdFN0YXRlQ21kVHlwZSAgCShwdHJfdHlw
ZSk7CUVtQWxpYXNTeXNQa3RTdGF0ZUNtZFR5cGUgIAkoY29uc3QgRW1BbGlhc1N5c1BrdFN0YXRl
Q21kVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRy
OyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlF
bUFsaWFzU3lzUGt0U3RhdGVDbWRUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1N5
c1BrdFN0YXRlQ21kVHlwZSAgPEE+Jik7CUVtQWxpYXNTeXNQa3RTdGF0ZUNtZFR5cGUgIDxBPglv
cGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3lzUGt0U3RhdGVDbWRUeXBlICA8QT4Jb3Bl
cmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1N5c1BrdFN0YXRlQ21kVHlwZSAg
CSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxBPgkg
CQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJX2ZpbGxlciA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0g
IAl9OyAJY2xhc3MgRW1Qcm94eVN5c1BrdFN0YXRlQ21kVHlwZSAgCXsJcHVibGljOgl0eXBlZGVm
IHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lzUGt0U3RhdGVDbWRUeXBlICAJKHZvaWQpOwlFbVBy
b3h5U3lzUGt0U3RhdGVDbWRUeXBlICAJKGNvbnN0IEVtUHJveHlTeXNQa3RTdGF0ZUNtZFR5cGUg
ICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAm
ZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAg
ICAyICA7IH0JRW1Qcm94eVN5c1BrdFN0YXRlQ21kVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBF
bVByb3h5U3lzUGt0U3RhdGVDbWRUeXBlICAmKTsJRW1BbGlhc1N5c1BrdFN0YXRlQ21kVHlwZSAg
PExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdFN0YXRlQ21kVHlwZSAg
PExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9i
eXRlc1sgICAgMiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxM
QVM+CSAJCQkJCQljb21tYW5kIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCV9maWxsZXIg
OyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4g
IDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4g
IDEgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1N5c1BrdFN0
YXRlUnNwVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90
eXBlOwlFbUFsaWFzU3lzUGt0U3RhdGVSc3BUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1N5c1Br
dFN0YXRlUnNwVHlwZSAgCShjb25zdCBFbUFsaWFzU3lzUGt0U3RhdGVSc3BUeXBlICAmKTsJcHRy
X3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVf
dAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTg4ICA7IH0JRW1BbGlhc1N5c1BrdFN0
YXRlUnNwVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNTeXNQa3RTdGF0ZVJzcFR5
cGUgIDxBPiYpOwlFbUFsaWFzU3lzUGt0U3RhdGVSc3BUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50
KTsJY29uc3QgRW1BbGlhc1N5c1BrdFN0YXRlUnNwVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkg
Y29uc3Q7CXByaXZhdGU6CUVtQWxpYXNTeXNQa3RTdGF0ZVJzcFR5cGUgIAkodm9pZCk7CXB0cl90
eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWNvbW1hbmQg
OyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCV9maWxsZXIgOyAJIEVtQWxpYXNCb29sZWFuIDxB
PgkgCQkJCQlyZXNldHRlZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJcmVzZXJ2ZWQxIDsg
CSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJZXhjZXB0aW9uSWQgOyAJIEVtQWxpYXNNNjhLUmVn
c1R5cGUgPEE+CSAJCQkJcmVnIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJaW5zdCA7IAkg
RW1BbGlhc0JyZWFrcG9pbnRUeXBlIDxBPgkgCQkJCWJwIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkg
CQkJCQkJc3RhcnRBZGRyIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZW5kQWRkciA7IAkg
RW1BbGlhc2NoYXIgPEE+CSAJCQkJCQluYW1lIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQl0
cmFwVGFibGVSZXYgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXJlc2VydmVkMiA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7IHJldHVybiAgMSA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jlc2V0dGVkICAodm9pZCkgeyByZXR1cm4gIDIgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNlcnZlZDEgICh2b2lkKSB7IHJldHVybiAgMyA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2V4Y2VwdGlvbklkICAodm9pZCkgeyByZXR1cm4g
IDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZWcgICh2b2lkKSB7IHJldHVybiAgNiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc3QgICh2b2lkKSB7IHJldHVybiAgODAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9icCAgKHZvaWQpIHsgcmV0dXJuICAxMTAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9zdGFydEFkZHIgICh2b2lkKSB7IHJldHVybiAgMTQ2IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZW5kQWRkciAgKHZvaWQpIHsgcmV0dXJuICAxNTAg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uYW1lICAodm9pZCkgeyByZXR1cm4gIDE1NCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RyYXBUYWJsZVJldiAgKHZvaWQpIHsgcmV0dXJu
ICAxODYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNlcnZlZDIgICh2b2lkKSB7IHJl
dHVybiAgMTg3IDsgfSAgCX07IAljbGFzcyBFbVByb3h5U3lzUGt0U3RhdGVSc3BUeXBlICAJewlw
dWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlTeXNQa3RTdGF0ZVJzcFR5cGUg
IAkodm9pZCk7CUVtUHJveHlTeXNQa3RTdGF0ZVJzcFR5cGUgIAkoY29uc3QgRW1Qcm94eVN5c1Br
dFN0YXRlUnNwVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVy
biAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQp
CQkJeyByZXR1cm4gICAgIDE4OCAgOyB9CUVtUHJveHlTeXNQa3RTdGF0ZVJzcFR5cGUgICYJCW9w
ZXJhdG9yPSAoY29uc3QgRW1Qcm94eVN5c1BrdFN0YXRlUnNwVHlwZSAgJik7CUVtQWxpYXNTeXNQ
a3RTdGF0ZVJzcFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNQ
a3RTdGF0ZVJzcFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0
cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDE4OCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAg
ICAgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQljb21tYW5kIDsgCSBFbUFsaWFzVUludDggPExB
Uz4JIAkJCQkJCV9maWxsZXIgOyAJIEVtQWxpYXNCb29sZWFuIDxMQVM+CSAJCQkJCXJlc2V0dGVk
IDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXJlc2VydmVkMSA7IAkgRW1BbGlhc1VJbnQx
NiA8TEFTPgkgCQkJCQkJZXhjZXB0aW9uSWQgOyAJIEVtQWxpYXNNNjhLUmVnc1R5cGUgPExBUz4J
IAkJCQlyZWcgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWluc3QgOyAJIEVtQWxpYXNC
cmVha3BvaW50VHlwZSA8TEFTPgkgCQkJCWJwIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJ
CQlzdGFydEFkZHIgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWVuZEFkZHIgOyAJIEVt
QWxpYXNjaGFyIDxMQVM+CSAJCQkJCQluYW1lIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJ
CXRyYXBUYWJsZVJldiA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlyZXNlcnZlZDIgOyAg
CSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNldHRlZCAgKHZvaWQpIHsgcmV0dXJuICAy
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVzZXJ2ZWQxICAodm9pZCkgeyByZXR1cm4g
IDMgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9leGNlcHRpb25JZCAgKHZvaWQpIHsgcmV0
dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVnICAodm9pZCkgeyByZXR1cm4g
IDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbnN0ICAodm9pZCkgeyByZXR1cm4gIDgw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYnAgICh2b2lkKSB7IHJldHVybiAgMTEwIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3RhcnRBZGRyICAodm9pZCkgeyByZXR1cm4gIDE0
NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2VuZEFkZHIgICh2b2lkKSB7IHJldHVybiAg
MTUwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmFtZSAgKHZvaWQpIHsgcmV0dXJuICAx
NTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90cmFwVGFibGVSZXYgICh2b2lkKSB7IHJl
dHVybiAgMTg2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVzZXJ2ZWQyICAodm9pZCkg
eyByZXR1cm4gIDE4NyA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFs
aWFzU3lzUGt0V3JpdGVNZW1DbWRUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6
cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNTeXNQa3RXcml0ZU1lbUNtZFR5cGUgIAkocHRyX3R5
cGUpOwlFbUFsaWFzU3lzUGt0V3JpdGVNZW1DbWRUeXBlICAJKGNvbnN0IEVtQWxpYXNTeXNQa3RX
cml0ZU1lbUNtZFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1
cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAo
MjU2ICsxNikgICA7IH0JRW1BbGlhc1N5c1BrdFdyaXRlTWVtQ21kVHlwZSAgPEE+JglvcGVyYXRv
cj0gKGNvbnN0IEVtQWxpYXNTeXNQa3RXcml0ZU1lbUNtZFR5cGUgIDxBPiYpOwlFbUFsaWFzU3lz
UGt0V3JpdGVNZW1DbWRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5
c1BrdFdyaXRlTWVtQ21kVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6
CUVtQWxpYXNTeXNQa3RXcml0ZU1lbUNtZFR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJ
cHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWNvbW1hbmQgOyAJIEVtQWxpYXNV
SW50OCA8QT4JIAkJCQkJCV9maWxsZXIgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlhZGRy
ZXNzIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJbnVtQnl0ZXMgOyAJIEVtQWxpYXNjaGFy
IDxBPgkgCQkJCQkJZGF0YSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQg
ICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxsZXIg
ICh2b2lkKSB7IHJldHVybiAgMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FkZHJlc3Mg
ICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX251bUJ5dGVz
ICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kYXRhICAo
dm9pZCkgeyByZXR1cm4gIDggOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlTeXNQa3RXcml0ZU1lbUNt
ZFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVN5c1BrdFdy
aXRlTWVtQ21kVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVN5c1BrdFdyaXRlTWVtQ21kVHlwZSAgCShj
b25zdCBFbVByb3h5U3lzUGt0V3JpdGVNZW1DbWRUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJ
KHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNp
emVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgKDI1NiArMTYpICAgOyB9CUVtUHJv
eHlTeXNQa3RXcml0ZU1lbUNtZFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVN5c1Br
dFdyaXRlTWVtQ21kVHlwZSAgJik7CUVtQWxpYXNTeXNQa3RXcml0ZU1lbUNtZFR5cGUgIDxMQVM+
CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTeXNQa3RXcml0ZU1lbUNtZFR5cGUgIDxM
QVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0
ZXNbICAgICgyNTYgKzE2KSAgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNV
SW50OCA8TEFTPgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlf
ZmlsbGVyIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlhZGRyZXNzIDsgCSBFbUFsaWFz
VUludDE2IDxMQVM+CSAJCQkJCQludW1CeXRlcyA7IAkgRW1BbGlhc2NoYXIgPExBUz4JIAkJCQkJ
CWRhdGEgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyBy
ZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyBy
ZXR1cm4gIDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hZGRyZXNzICAodm9pZCkgeyBy
ZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9udW1CeXRlcyAgKHZvaWQpIHsg
cmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGF0YSAgKHZvaWQpIHsgcmV0
dXJuICA4IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNTeXNQ
a3RXcml0ZU1lbVJzcFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlw
ZSBwdHJfdHlwZTsJRW1BbGlhc1N5c1BrdFdyaXRlTWVtUnNwVHlwZSAgCShwdHJfdHlwZSk7CUVt
QWxpYXNTeXNQa3RXcml0ZU1lbVJzcFR5cGUgIAkoY29uc3QgRW1BbGlhc1N5c1BrdFdyaXRlTWVt
UnNwVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRy
OyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlF
bUFsaWFzU3lzUGt0V3JpdGVNZW1Sc3BUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlh
c1N5c1BrdFdyaXRlTWVtUnNwVHlwZSAgPEE+Jik7CUVtQWxpYXNTeXNQa3RXcml0ZU1lbVJzcFR5
cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3lzUGt0V3JpdGVNZW1Sc3BU
eXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1N5c1BrdFdy
aXRlTWVtUnNwVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1B
bGlhc1VJbnQ4IDxBPgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJ
X2ZpbGxlciA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbW1hbmQgICh2b2lkKSB7
IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX19maWxsZXIgICh2b2lkKSB7
IHJldHVybiAgMSA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVN5c1BrdFdyaXRlTWVtUnNwVHlwZSAg
CXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lzUGt0V3JpdGVNZW1S
c3BUeXBlICAJKHZvaWQpOwlFbVByb3h5U3lzUGt0V3JpdGVNZW1Sc3BUeXBlICAJKGNvbnN0IEVt
UHJveHlTeXNQa3RXcml0ZU1lbVJzcFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkg
Y29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlH
ZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyICA7IH0JRW1Qcm94eVN5c1BrdFdyaXRlTWVt
UnNwVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5U3lzUGt0V3JpdGVNZW1Sc3BUeXBl
ICAmKTsJRW1BbGlhc1N5c1BrdFdyaXRlTWVtUnNwVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50
KTsJY29uc3QgRW1BbGlhc1N5c1BrdFdyaXRlTWVtUnNwVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAo
aW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMiAgXTsJfSBm
TG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQljb21tYW5k
IDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCV9maWxsZXIgOyAgCSAgICAgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9ICAJfTsgICAJICB0
ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1N5c1BrdFdyaXRlUmVnc0NtZFR5cGUgIAl7
CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1N5
c1BrdFdyaXRlUmVnc0NtZFR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzU3lzUGt0V3JpdGVSZWdz
Q21kVHlwZSAgCShjb25zdCBFbUFsaWFzU3lzUGt0V3JpdGVSZWdzQ21kVHlwZSAgJik7CXB0cl90
eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJ
CUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDc2ICA7IH0JRW1BbGlhc1N5c1BrdFdyaXRl
UmVnc0NtZFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzU3lzUGt0V3JpdGVSZWdz
Q21kVHlwZSAgPEE+Jik7CUVtQWxpYXNTeXNQa3RXcml0ZVJlZ3NDbWRUeXBlICA8QT4Jb3BlcmF0
b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdFdyaXRlUmVnc0NtZFR5cGUgIDxBPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzU3lzUGt0V3JpdGVSZWdzQ21kVHlw
ZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQ4IDxB
PgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJX2ZpbGxlciA7IAkg
RW1BbGlhc002OEtSZWdzVHlwZSA8QT4JIAkJCQlyZWcgOyAgCSAgICAgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9jb21tYW5kICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9fZmlsbGVyICAodm9pZCkgeyByZXR1cm4gIDEgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9yZWcgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVN5
c1BrdFdyaXRlUmVnc0NtZFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJ
RW1Qcm94eVN5c1BrdFdyaXRlUmVnc0NtZFR5cGUgIAkodm9pZCk7CUVtUHJveHlTeXNQa3RXcml0
ZVJlZ3NDbWRUeXBlICAJKGNvbnN0IEVtUHJveHlTeXNQa3RXcml0ZVJlZ3NDbWRUeXBlICAmKTsJ
cHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2Nh
bERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNzYg
IDsgfQlFbVByb3h5U3lzUGt0V3JpdGVSZWdzQ21kVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBF
bVByb3h5U3lzUGt0V3JpdGVSZWdzQ21kVHlwZSAgJik7CUVtQWxpYXNTeXNQa3RXcml0ZVJlZ3ND
bWRUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3lzUGt0V3JpdGVS
ZWdzQ21kVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0
IHsJY2hhcgkJCV9ieXRlc1sgICAgNzYgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVt
QWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJY29tbWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJ
CQkJCQlfZmlsbGVyIDsgCSBFbUFsaWFzTTY4S1JlZ3NUeXBlIDxMQVM+CSAJCQkJcmVnIDsgIAkg
ICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAgKHZvaWQpIHsgcmV0dXJuICAxIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVnICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJ
fTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1N5c1BrdFdyaXRlUmVnc1Jz
cFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJ
RW1BbGlhc1N5c1BrdFdyaXRlUmVnc1JzcFR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzU3lzUGt0
V3JpdGVSZWdzUnNwVHlwZSAgCShjb25zdCBFbUFsaWFzU3lzUGt0V3JpdGVSZWdzUnNwVHlwZSAg
Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRp
YyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlFbUFsaWFzU3lz
UGt0V3JpdGVSZWdzUnNwVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNTeXNQa3RX
cml0ZVJlZ3NSc3BUeXBlICA8QT4mKTsJRW1BbGlhc1N5c1BrdFdyaXRlUmVnc1JzcFR5cGUgIDxB
PglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3lzUGt0V3JpdGVSZWdzUnNwVHlwZSAg
PEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNTeXNQa3RXcml0ZVJl
Z3NSc3BUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFz
VUludDggPEE+CSAJCQkJCQljb21tYW5kIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlfZmls
bGVyIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAgKHZvaWQpIHsgcmV0
dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAgKHZvaWQpIHsgcmV0
dXJuICAxIDsgfSAgCX07IAljbGFzcyBFbVByb3h5U3lzUGt0V3JpdGVSZWdzUnNwVHlwZSAgCXsJ
cHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U3lzUGt0V3JpdGVSZWdzUnNw
VHlwZSAgCSh2b2lkKTsJRW1Qcm94eVN5c1BrdFdyaXRlUmVnc1JzcFR5cGUgIAkoY29uc3QgRW1Q
cm94eVN5c1BrdFdyaXRlUmVnc1JzcFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkg
Y29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlH
ZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyICA7IH0JRW1Qcm94eVN5c1BrdFdyaXRlUmVn
c1JzcFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVN5c1BrdFdyaXRlUmVnc1JzcFR5
cGUgICYpOwlFbUFsaWFzU3lzUGt0V3JpdGVSZWdzUnNwVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAo
aW50KTsJY29uc3QgRW1BbGlhc1N5c1BrdFdyaXRlUmVnc1JzcFR5cGUgIDxMQVM+CW9wZXJhdG9y
W10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDIgIF07
CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJY29t
bWFuZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlfZmlsbGVyIDsgIAkgICAgIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfY29tbWFuZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfX2ZpbGxlciAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAgCX07ICAg
IAogIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzUmVjb3JkRW50cnlUeXBlICAJewlw
dWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNSZWNv
cmRFbnRyeVR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzUmVjb3JkRW50cnlUeXBlICAJKGNvbnN0
IEVtQWxpYXNSZWNvcmRFbnRyeVR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29u
c3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0
dXJuICAgICA4ICA7IH0JRW1BbGlhc1JlY29yZEVudHJ5VHlwZSAgPEE+JglvcGVyYXRvcj0gKGNv
bnN0IEVtQWxpYXNSZWNvcmRFbnRyeVR5cGUgIDxBPiYpOwlFbUFsaWFzUmVjb3JkRW50cnlUeXBl
ICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1JlY29yZEVudHJ5VHlwZSAgPEE+
CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNSZWNvcmRFbnRyeVR5cGUg
IAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNMb2NhbElEIDxB
PgkgCQkJCQlsb2NhbENodW5rSUQgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWF0dHJpYnV0
ZXMgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXVuaXF1ZUlEIDsgIAkgICAgIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfbG9jYWxDaHVua0lEICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9hdHRyaWJ1dGVzICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl91bmlxdWVJRCAgKHZvaWQpIHsgcmV0dXJuICA1IDsgfSAg
CX07IAljbGFzcyBFbVByb3h5UmVjb3JkRW50cnlUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9p
ZCogcHRyX3R5cGU7CUVtUHJveHlSZWNvcmRFbnRyeVR5cGUgIAkodm9pZCk7CUVtUHJveHlSZWNv
cmRFbnRyeVR5cGUgIAkoY29uc3QgRW1Qcm94eVJlY29yZEVudHJ5VHlwZSAgJik7CXB0cl90eXBl
CQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9
CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDggIDsgfQlFbVBy
b3h5UmVjb3JkRW50cnlUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlSZWNvcmRFbnRy
eVR5cGUgICYpOwlFbUFsaWFzUmVjb3JkRW50cnlUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQp
Owljb25zdCBFbUFsaWFzUmVjb3JkRW50cnlUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNv
bnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA4ICBdOwl9IGZMb2NhbERh
dGE7CXB1YmxpYzoJICAgICBFbUFsaWFzTG9jYWxJRCA8TEFTPgkgCQkJCQlsb2NhbENodW5rSUQg
OyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJYXR0cmlidXRlcyA7IAkgRW1BbGlhc1VJbnQ4
IDxMQVM+CSAJCQkJCQl1bmlxdWVJRCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xv
Y2FsQ2h1bmtJRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfYXR0cmlidXRlcyAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfdW5pcXVlSUQgICh2b2lkKSB7IHJldHVybiAgNSA7IH0gIAl9OyAgIAkgIHRlbXBsYXRl
IDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzUnNyY0VudHJ5VHlwZSAgCXsJcHVibGljOgl0eXBlZGVm
IHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzUnNyY0VudHJ5VHlwZSAgCShw
dHJfdHlwZSk7CUVtQWxpYXNSc3JjRW50cnlUeXBlICAJKGNvbnN0IEVtQWxpYXNSc3JjRW50cnlU
eXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0J
c3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTAgIDsgfQlFbUFs
aWFzUnNyY0VudHJ5VHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNSc3JjRW50cnlU
eXBlICA8QT4mKTsJRW1BbGlhc1JzcmNFbnRyeVR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwlj
b25zdCBFbUFsaWFzUnNyY0VudHJ5VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXBy
aXZhdGU6CUVtQWxpYXNSc3JjRW50cnlUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1
YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJdHlwZSA7IAkgRW1BbGlhc1VJbnQx
NiA8QT4JIAkJCQkJCWlkIDsgCSBFbUFsaWFzTG9jYWxJRCA8QT4JIAkJCQkJbG9jYWxDaHVua0lE
IDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdHlwZSAgKHZvaWQpIHsgcmV0dXJuICAw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaWQgICh2b2lkKSB7IHJldHVybiAgNCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xvY2FsQ2h1bmtJRCAgKHZvaWQpIHsgcmV0dXJuICA2
IDsgfSAgCX07IAljbGFzcyBFbVByb3h5UnNyY0VudHJ5VHlwZSAgCXsJcHVibGljOgl0eXBlZGVm
IHZvaWQqIHB0cl90eXBlOwlFbVByb3h5UnNyY0VudHJ5VHlwZSAgCSh2b2lkKTsJRW1Qcm94eVJz
cmNFbnRyeVR5cGUgIAkoY29uc3QgRW1Qcm94eVJzcmNFbnRyeVR5cGUgICYpOwlwdHJfdHlwZQkJ
CUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlz
dGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAxMCAgOyB9CUVtUHJv
eHlSc3JjRW50cnlUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlSc3JjRW50cnlUeXBl
ICAmKTsJRW1BbGlhc1JzcmNFbnRyeVR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0
IEVtQWxpYXNSc3JjRW50cnlUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2
YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAxMCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJs
aWM6CSAgICAgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJdHlwZSA7IAkgRW1BbGlhc1VJbnQx
NiA8TEFTPgkgCQkJCQkJaWQgOyAJIEVtQWxpYXNMb2NhbElEIDxMQVM+CSAJCQkJCWxvY2FsQ2h1
bmtJRCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3R5cGUgICh2b2lkKSB7IHJldHVy
biAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2lkICAodm9pZCkgeyByZXR1cm4gIDQg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sb2NhbENodW5rSUQgICh2b2lkKSB7IHJldHVy
biAgNiA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzUmVjb3Jk
TGlzdFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlw
ZTsJRW1BbGlhc1JlY29yZExpc3RUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1JlY29yZExpc3RU
eXBlICAJKGNvbnN0IEVtQWxpYXNSZWNvcmRMaXN0VHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRy
CSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZv
aWQpCQkJeyByZXR1cm4gICAgIDYgIDsgfQlFbUFsaWFzUmVjb3JkTGlzdFR5cGUgIDxBPiYJb3Bl
cmF0b3I9IChjb25zdCBFbUFsaWFzUmVjb3JkTGlzdFR5cGUgIDxBPiYpOwlFbUFsaWFzUmVjb3Jk
TGlzdFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzUmVjb3JkTGlzdFR5
cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzUmVjb3JkTGlz
dFR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNMb2Nh
bElEIDxBPgkgCQkJCQluZXh0UmVjb3JkTGlzdElEIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJ
CQkJbnVtUmVjb3JkcyA7IAkgRW1BbGlhc1JlY29yZEVudHJ5VHlwZSA8QT4JIAkJCXJlY29yZHMg
OyAJIEVtQWxpYXNSc3JjRW50cnlUeXBlIDxBPgkgCQkJCXJlc291cmNlcyA7ICAJICAgICBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX25leHRSZWNvcmRMaXN0SUQgICh2b2lkKSB7IHJldHVybiAgMCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX251bVJlY29yZHMgICh2b2lkKSB7IHJldHVybiAg
NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JlY29yZHMgICh2b2lkKSB7IHJldHVybiAg
NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jlc291cmNlcyAgKHZvaWQpIHsgcmV0dXJu
ICA2IDsgfSAgCX07IAljbGFzcyBFbVByb3h5UmVjb3JkTGlzdFR5cGUgIAl7CXB1YmxpYzoJdHlw
ZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVJlY29yZExpc3RUeXBlICAJKHZvaWQpOwlFbVBy
b3h5UmVjb3JkTGlzdFR5cGUgIAkoY29uc3QgRW1Qcm94eVJlY29yZExpc3RUeXBlICAmKTsJcHRy
X3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERh
dGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNiAgOyB9
CUVtUHJveHlSZWNvcmRMaXN0VHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5UmVjb3Jk
TGlzdFR5cGUgICYpOwlFbUFsaWFzUmVjb3JkTGlzdFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNSZWNvcmRMaXN0VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBj
b25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgNiAgXTsJfSBmTG9jYWxE
YXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc0xvY2FsSUQgPExBUz4JIAkJCQkJbmV4dFJlY29yZExp
c3RJRCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJbnVtUmVjb3JkcyA7IAkgRW1BbGlh
c1JlY29yZEVudHJ5VHlwZSA8TEFTPgkgCQkJcmVjb3JkcyA7IAkgRW1BbGlhc1JzcmNFbnRyeVR5
cGUgPExBUz4JIAkJCQlyZXNvdXJjZXMgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9u
ZXh0UmVjb3JkTGlzdElEICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9udW1SZWNvcmRzICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9yZWNvcmRzICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9yZXNvdXJjZXMgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gIAl9OyAgIAkgIHRl
bXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzRGF0YWJhc2VIZHJUeXBlICAJewlwdWJsaWM6
CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNEYXRhYmFzZUhk
clR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzRGF0YWJhc2VIZHJUeXBlICAJKGNvbnN0IEVtQWxp
YXNEYXRhYmFzZUhkclR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAg
ICA3OCAgOyB9CUVtQWxpYXNEYXRhYmFzZUhkclR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBF
bUFsaWFzRGF0YWJhc2VIZHJUeXBlICA8QT4mKTsJRW1BbGlhc0RhdGFiYXNlSGRyVHlwZSAgPEE+
CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNEYXRhYmFzZUhkclR5cGUgIDxBPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzRGF0YWJhc2VIZHJUeXBlICAJKHZv
aWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzSW50MTYgPEE+CSAJCQkJ
CQluYW1lIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJYXR0cmlidXRlcyA7IAkgRW1BbGlh
c1VJbnQxNiA8QT4JIAkJCQkJCXZlcnNpb24gOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlj
cmVhdGlvbkRhdGUgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQltb2RpZmljYXRpb25EYXRl
IDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJbGFzdEJhY2t1cERhdGUgOyAJIEVtQWxpYXNV
SW50MzIgPEE+CSAJCQkJCQltb2RpZmljYXRpb25OdW1iZXIgOyAJIEVtQWxpYXNMb2NhbElEIDxB
PgkgCQkJCQlhcHBJbmZvSUQgOyAJIEVtQWxpYXNMb2NhbElEIDxBPgkgCQkJCQlzb3J0SW5mb0lE
IDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJdHlwZSA7IAkgRW1BbGlhc1VJbnQzMiA8QT4J
IAkJCQkJCWNyZWF0b3IgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQl1bmlxdWVJRFNlZWQg
OyAJIEVtQWxpYXNSZWNvcmRMaXN0VHlwZSA8QT4JIAkJCQlyZWNvcmRMaXN0IDsgIAkgICAgIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmFtZSAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfYXR0cmlidXRlcyAgKHZvaWQpIHsgcmV0dXJuICAzMiA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3ZlcnNpb24gICh2b2lkKSB7IHJldHVybiAgMzQgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9jcmVhdGlvbkRhdGUgICh2b2lkKSB7IHJldHVybiAgMzYg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tb2RpZmljYXRpb25EYXRlICAodm9pZCkgeyBy
ZXR1cm4gIDQwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbGFzdEJhY2t1cERhdGUgICh2
b2lkKSB7IHJldHVybiAgNDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tb2RpZmljYXRp
b25OdW1iZXIgICh2b2lkKSB7IHJldHVybiAgNDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9hcHBJbmZvSUQgICh2b2lkKSB7IHJldHVybiAgNTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9zb3J0SW5mb0lEICAodm9pZCkgeyByZXR1cm4gIDU2IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfdHlwZSAgKHZvaWQpIHsgcmV0dXJuICA2MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2NyZWF0b3IgICh2b2lkKSB7IHJldHVybiAgNjQgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl91bmlxdWVJRFNlZWQgICh2b2lkKSB7IHJldHVybiAgNjggOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9yZWNvcmRMaXN0ICAodm9pZCkgeyByZXR1cm4gIDcyIDsgfSAgCX07IAlj
bGFzcyBFbVByb3h5RGF0YWJhc2VIZHJUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRy
X3R5cGU7CUVtUHJveHlEYXRhYmFzZUhkclR5cGUgIAkodm9pZCk7CUVtUHJveHlEYXRhYmFzZUhk
clR5cGUgIAkoY29uc3QgRW1Qcm94eURhdGFiYXNlSGRyVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0
UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRp
YyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDc4ICA7IH0JRW1Qcm94eURh
dGFiYXNlSGRyVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5RGF0YWJhc2VIZHJUeXBl
ICAmKTsJRW1BbGlhc0RhdGFiYXNlSGRyVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29u
c3QgRW1BbGlhc0RhdGFiYXNlSGRyVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJ
cHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgNzggIF07CX0gZkxvY2FsRGF0YTsJ
cHVibGljOgkgICAgIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJbmFtZSA7IAkgRW1BbGlhc1VJ
bnQxNiA8TEFTPgkgCQkJCQkJYXR0cmlidXRlcyA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJ
CQkJdmVyc2lvbiA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJY3JlYXRpb25EYXRlIDsg
CSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQltb2RpZmljYXRpb25EYXRlIDsgCSBFbUFsaWFz
VUludDMyIDxMQVM+CSAJCQkJCQlsYXN0QmFja3VwRGF0ZSA7IAkgRW1BbGlhc1VJbnQzMiA8TEFT
PgkgCQkJCQkJbW9kaWZpY2F0aW9uTnVtYmVyIDsgCSBFbUFsaWFzTG9jYWxJRCA8TEFTPgkgCQkJ
CQlhcHBJbmZvSUQgOyAJIEVtQWxpYXNMb2NhbElEIDxMQVM+CSAJCQkJCXNvcnRJbmZvSUQgOyAJ
IEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXR5cGUgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4J
IAkJCQkJCWNyZWF0b3IgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXVuaXF1ZUlEU2Vl
ZCA7IAkgRW1BbGlhc1JlY29yZExpc3RUeXBlIDxMQVM+CSAJCQkJcmVjb3JkTGlzdCA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25hbWUgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2F0dHJpYnV0ZXMgICh2b2lkKSB7IHJldHVybiAgMzIgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl92ZXJzaW9uICAodm9pZCkgeyByZXR1cm4gIDM0IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY3JlYXRpb25EYXRlICAodm9pZCkgeyByZXR1cm4g
IDM2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbW9kaWZpY2F0aW9uRGF0ZSAgKHZvaWQp
IHsgcmV0dXJuICA0MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xhc3RCYWNrdXBEYXRl
ICAodm9pZCkgeyByZXR1cm4gIDQ0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbW9kaWZp
Y2F0aW9uTnVtYmVyICAodm9pZCkgeyByZXR1cm4gIDQ4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfYXBwSW5mb0lEICAodm9pZCkgeyByZXR1cm4gIDUyIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2Zfc29ydEluZm9JRCAgKHZvaWQpIHsgcmV0dXJuICA1NiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3R5cGUgICh2b2lkKSB7IHJldHVybiAgNjAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9jcmVhdG9yICAodm9pZCkgeyByZXR1cm4gIDY0IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfdW5pcXVlSURTZWVkICAodm9pZCkgeyByZXR1cm4gIDY4IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfcmVjb3JkTGlzdCAgKHZvaWQpIHsgcmV0dXJuICA3MiA7IH0gIAl9
OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzRGF0YWJhc2VEaXJFbnRyeVR5
cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1B
bGlhc0RhdGFiYXNlRGlyRW50cnlUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc0RhdGFiYXNlRGly
RW50cnlUeXBlICAJKGNvbnN0IEVtQWxpYXNEYXRhYmFzZURpckVudHJ5VHlwZSAgJik7CXB0cl90
eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJ
CUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDQgIDsgfQlFbUFsaWFzRGF0YWJhc2VEaXJF
bnRyeVR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzRGF0YWJhc2VEaXJFbnRyeVR5
cGUgIDxBPiYpOwlFbUFsaWFzRGF0YWJhc2VEaXJFbnRyeVR5cGUgIDxBPglvcGVyYXRvcltdIChp
bnQpOwljb25zdCBFbUFsaWFzRGF0YWJhc2VEaXJFbnRyeVR5cGUgIDxBPglvcGVyYXRvcltdIChp
bnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzRGF0YWJhc2VEaXJFbnRyeVR5cGUgIAkodm9pZCk7
CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNMb2NhbElEIDxBPgkgCQkJCQli
YXNlSUQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9iYXNlSUQgICh2b2lkKSB7IHJl
dHVybiAgMCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eURhdGFiYXNlRGlyRW50cnlUeXBlICAJewlw
dWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlEYXRhYmFzZURpckVudHJ5VHlw
ZSAgCSh2b2lkKTsJRW1Qcm94eURhdGFiYXNlRGlyRW50cnlUeXBlICAJKGNvbnN0IEVtUHJveHlE
YXRhYmFzZURpckVudHJ5VHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJ
KHZvaWQpCQkJeyByZXR1cm4gICAgIDQgIDsgfQlFbVByb3h5RGF0YWJhc2VEaXJFbnRyeVR5cGUg
ICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eURhdGFiYXNlRGlyRW50cnlUeXBlICAmKTsJRW1B
bGlhc0RhdGFiYXNlRGlyRW50cnlUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBF
bUFsaWFzRGF0YWJhc2VEaXJFbnRyeVR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7
CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDQgIF07CX0gZkxvY2FsRGF0YTsJ
cHVibGljOgkgICAgIEVtQWxpYXNMb2NhbElEIDxMQVM+CSAJCQkJCWJhc2VJRCA7ICAJICAgICBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2Jhc2VJRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAgCX07
ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNEYXRhYmFzZURpclR5cGUgIAl7
CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0Rh
dGFiYXNlRGlyVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNEYXRhYmFzZURpclR5cGUgIAkoY29u
c3QgRW1BbGlhc0RhdGFiYXNlRGlyVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBj
b25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyBy
ZXR1cm4gICAgIDEwICA7IH0JRW1BbGlhc0RhdGFiYXNlRGlyVHlwZSAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IEVtQWxpYXNEYXRhYmFzZURpclR5cGUgIDxBPiYpOwlFbUFsaWFzRGF0YWJhc2VEaXJU
eXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0RhdGFiYXNlRGlyVHlwZSAg
PEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNEYXRhYmFzZURpclR5
cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNMb2NhbElE
IDxBPgkgCQkJCQluZXh0RGF0YWJhc2VMaXN0SUQgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJ
CQludW1EYXRhYmFzZXMgOyAJIEVtQWxpYXNEYXRhYmFzZURpckVudHJ5VHlwZSA8QT4JIAkJZGF0
YWJhc2VJRCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25leHREYXRhYmFzZUxpc3RJ
RCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbnVtRGF0
YWJhc2VzICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9k
YXRhYmFzZUlEICAodm9pZCkgeyByZXR1cm4gIDYgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlEYXRh
YmFzZURpclR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eURh
dGFiYXNlRGlyVHlwZSAgCSh2b2lkKTsJRW1Qcm94eURhdGFiYXNlRGlyVHlwZSAgCShjb25zdCBF
bVByb3h5RGF0YWJhc2VEaXJUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0
CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6
ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTAgIDsgfQlFbVByb3h5RGF0YWJhc2VEaXJUeXBlICAm
CQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlEYXRhYmFzZURpclR5cGUgICYpOwlFbUFsaWFzRGF0
YWJhc2VEaXJUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzRGF0YWJh
c2VEaXJUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3Qg
ewljaGFyCQkJX2J5dGVzWyAgICAxMCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1B
bGlhc0xvY2FsSUQgPExBUz4JIAkJCQkJbmV4dERhdGFiYXNlTGlzdElEIDsgCSBFbUFsaWFzVUlu
dDE2IDxMQVM+CSAJCQkJCQludW1EYXRhYmFzZXMgOyAJIEVtQWxpYXNEYXRhYmFzZURpckVudHJ5
VHlwZSA8TEFTPgkgCQlkYXRhYmFzZUlEIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
bmV4dERhdGFiYXNlTGlzdElEICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9udW1EYXRhYmFzZXMgICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2RhdGFiYXNlSUQgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gIAl9OyAg
IAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzRG1PcGVuSW5mb1R5cGUgIAl7CXB1
YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0RtT3Bl
bkluZm9UeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc0RtT3BlbkluZm9UeXBlICAJKGNvbnN0IEVt
QWxpYXNEbU9wZW5JbmZvVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4g
ICAgIDM2ICA7IH0JRW1BbGlhc0RtT3BlbkluZm9UeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
RW1BbGlhc0RtT3BlbkluZm9UeXBlICA8QT4mKTsJRW1BbGlhc0RtT3BlbkluZm9UeXBlICA8QT4J
b3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0RtT3BlbkluZm9UeXBlICA8QT4Jb3BlcmF0
b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc0RtT3BlbkluZm9UeXBlICAJKHZvaWQp
OwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJ
bmV4dCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCW9wZW5Db3VudCA7IAkgRW1BbGlhc1VJ
bnQzMiA8QT4JIAkJCQkJCW93bmVyVGFza0lEIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJ
ZmxhZ3MgOyAJIEVtQWxpYXNMb2NhbElEIDxBPgkgCQkJCQloZHJJRCA7IAkgRW1BbGlhc2VtdXB0
ciA8QT4JIAkJCQkJCWhkckggOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQloZHJQIDsgCSBF
bUFsaWFzVUludDE2IDxBPgkgCQkJCQkJY2FyZE5vIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJ
CQkJbnVtUmVjb3JkcyA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWhkck1hc3RlclAgOyAJ
IEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQloYW5kbGVUYWJsZVAgOyAgCSAgICAgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9uZXh0ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9vcGVuQ291bnQgICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX293bmVyVGFza0lEICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9mbGFncyAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2hkcklEICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfaGRySCAgKHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2hkclAgICh2b2lkKSB7IHJldHVybiAgMjAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9jYXJkTm8gICh2b2lkKSB7IHJldHVybiAgMjQgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9udW1SZWNvcmRzICAodm9pZCkgeyByZXR1cm4gIDI2IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfaGRyTWFzdGVyUCAgKHZvaWQpIHsgcmV0dXJuICAyOCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2hhbmRsZVRhYmxlUCAgKHZvaWQpIHsgcmV0dXJuICAzMiA7IH0g
IAl9OyAJY2xhc3MgRW1Qcm94eURtT3BlbkluZm9UeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9p
ZCogcHRyX3R5cGU7CUVtUHJveHlEbU9wZW5JbmZvVHlwZSAgCSh2b2lkKTsJRW1Qcm94eURtT3Bl
bkluZm9UeXBlICAJKGNvbnN0IEVtUHJveHlEbU9wZW5JbmZvVHlwZSAgJik7CXB0cl90eXBlCQkJ
R2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0
YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDM2ICA7IH0JRW1Qcm94
eURtT3BlbkluZm9UeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlEbU9wZW5JbmZvVHlw
ZSAgJik7CUVtQWxpYXNEbU9wZW5JbmZvVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29u
c3QgRW1BbGlhc0RtT3BlbkluZm9UeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAzNiAgXTsJfSBmTG9jYWxEYXRhOwlw
dWJsaWM6CSAgICAgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJbmV4dCA7IAkgRW1BbGlhc1VJ
bnQxNiA8TEFTPgkgCQkJCQkJb3BlbkNvdW50IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJ
CQlvd25lclRhc2tJRCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJZmxhZ3MgOyAJIEVt
QWxpYXNMb2NhbElEIDxMQVM+CSAJCQkJCWhkcklEIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJ
CQkJCQloZHJIIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQloZHJQIDsgCSBFbUFsaWFz
VUludDE2IDxMQVM+CSAJCQkJCQljYXJkTm8gOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJ
CW51bVJlY29yZHMgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWhkck1hc3RlclAgOyAJ
IEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWhhbmRsZVRhYmxlUCA7ICAJICAgICBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX25leHQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX29wZW5Db3VudCAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2Zfb3duZXJUYXNrSUQgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAodm9pZCkgeyByZXR1cm4gIDEwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfaGRySUQgICh2b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9oZHJIICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfaGRyUCAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2NhcmRObyAgKHZvaWQpIHsgcmV0dXJuICAyNCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX251bVJlY29yZHMgICh2b2lkKSB7IHJldHVybiAgMjYgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9oZHJNYXN0ZXJQICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaGFuZGxlVGFibGVQICAodm9pZCkgeyByZXR1cm4gIDMyIDsg
fSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNEbUFjY2Vzc1R5cGUg
IAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlh
c0RtQWNjZXNzVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNEbUFjY2Vzc1R5cGUgIAkoY29uc3Qg
RW1BbGlhc0RtQWNjZXNzVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4g
ICAgIDE2ICA7IH0JRW1BbGlhc0RtQWNjZXNzVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVt
QWxpYXNEbUFjY2Vzc1R5cGUgIDxBPiYpOwlFbUFsaWFzRG1BY2Nlc3NUeXBlICA8QT4Jb3BlcmF0
b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0RtQWNjZXNzVHlwZSAgPEE+CW9wZXJhdG9yW10gKGlu
dCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNEbUFjY2Vzc1R5cGUgIAkodm9pZCk7CXB0cl90eXBl
CQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQluZXh0IDsgCSBF
bUFsaWFzVUludDE2IDxBPgkgCQkJCQkJbW9kZSA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJ
CW9wZW5QIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJc2F2ZWRNb2ROdW0gOyAJIEVtQWxp
YXNVSW50OCA8QT4JIAkJCQkJCW9wZW5UeXBlIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQly
ZXNlcnZlZCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25leHQgICh2b2lkKSB7IHJl
dHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21vZGUgICh2b2lkKSB7IHJldHVy
biAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX29wZW5QICAodm9pZCkgeyByZXR1cm4g
IDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zYXZlZE1vZE51bSAgKHZvaWQpIHsgcmV0
dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX29wZW5UeXBlICAodm9pZCkgeyBy
ZXR1cm4gIDE0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVzZXJ2ZWQgICh2b2lkKSB7
IHJldHVybiAgMTUgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlEbUFjY2Vzc1R5cGUgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eURtQWNjZXNzVHlwZSAgCSh2b2lkKTsJ
RW1Qcm94eURtQWNjZXNzVHlwZSAgCShjb25zdCBFbVByb3h5RG1BY2Nlc3NUeXBlICAmKTsJcHRy
X3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERh
dGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTYgIDsg
fQlFbVByb3h5RG1BY2Nlc3NUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlEbUFjY2Vz
c1R5cGUgICYpOwlFbUFsaWFzRG1BY2Nlc3NUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwlj
b25zdCBFbUFsaWFzRG1BY2Nlc3NUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAxNiAgXTsJfSBmTG9jYWxEYXRhOwlw
dWJsaWM6CSAgICAgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJbmV4dCA7IAkgRW1BbGlhc1VJ
bnQxNiA8TEFTPgkgCQkJCQkJbW9kZSA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJb3Bl
blAgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXNhdmVkTW9kTnVtIDsgCSBFbUFsaWFz
VUludDggPExBUz4JIAkJCQkJCW9wZW5UeXBlIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJ
CXJlc2VydmVkIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmV4dCAgKHZvaWQpIHsg
cmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbW9kZSAgKHZvaWQpIHsgcmV0
dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfb3BlblAgICh2b2lkKSB7IHJldHVy
biAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NhdmVkTW9kTnVtICAodm9pZCkgeyBy
ZXR1cm4gIDEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfb3BlblR5cGUgICh2b2lkKSB7
IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNlcnZlZCAgKHZvaWQp
IHsgcmV0dXJuICAxNSA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFs
aWFzRG1TZWFyY2hTdGF0ZVR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJf
dHlwZSBwdHJfdHlwZTsJRW1BbGlhc0RtU2VhcmNoU3RhdGVUeXBlICAJKHB0cl90eXBlKTsJRW1B
bGlhc0RtU2VhcmNoU3RhdGVUeXBlICAJKGNvbnN0IEVtQWxpYXNEbVNlYXJjaFN0YXRlVHlwZSAg
Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRp
YyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDMyICA7IH0JRW1BbGlhc0Rt
U2VhcmNoU3RhdGVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0RtU2VhcmNoU3Rh
dGVUeXBlICA8QT4mKTsJRW1BbGlhc0RtU2VhcmNoU3RhdGVUeXBlICA8QT4Jb3BlcmF0b3JbXSAo
aW50KTsJY29uc3QgRW1BbGlhc0RtU2VhcmNoU3RhdGVUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50
KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc0RtU2VhcmNoU3RhdGVUeXBlICAJKHZvaWQpOwlwdHJf
dHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJaW5mbyA7
ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luZm8gICh2b2lkKSB7IHJldHVybiAgMCA7
IH0gIAl9OyAJY2xhc3MgRW1Qcm94eURtU2VhcmNoU3RhdGVUeXBlICAJewlwdWJsaWM6CXR5cGVk
ZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlEbVNlYXJjaFN0YXRlVHlwZSAgCSh2b2lkKTsJRW1Q
cm94eURtU2VhcmNoU3RhdGVUeXBlICAJKGNvbnN0IEVtUHJveHlEbVNlYXJjaFN0YXRlVHlwZSAg
Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZm
TG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAg
IDMyICA7IH0JRW1Qcm94eURtU2VhcmNoU3RhdGVUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVt
UHJveHlEbVNlYXJjaFN0YXRlVHlwZSAgJik7CUVtQWxpYXNEbVNlYXJjaFN0YXRlVHlwZSAgPExB
Uz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0RtU2VhcmNoU3RhdGVUeXBlICA8TEFT
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVz
WyAgICAzMiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQzMiA8TEFT
PgkgCQkJCQkJaW5mbyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luZm8gICh2b2lk
KSB7IHJldHVybiAgMCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFs
aWFzQ2FyZEhlYWRlclR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlw
ZSBwdHJfdHlwZTsJRW1BbGlhc0NhcmRIZWFkZXJUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc0Nh
cmRIZWFkZXJUeXBlICAJKGNvbnN0IEVtQWxpYXNDYXJkSGVhZGVyVHlwZSAgJik7CXB0cl90eXBl
CQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdl
dFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDI1NiAgOyB9CUVtQWxpYXNDYXJkSGVhZGVyVHlw
ZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNDYXJkSGVhZGVyVHlwZSAgPEE+Jik7CUVt
QWxpYXNDYXJkSGVhZGVyVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXND
YXJkSGVhZGVyVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxp
YXNDYXJkSGVhZGVyVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAg
RW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJaW5pdFN0YWNrIDsgCSBFbUFsaWFzVUludDMyIDxBPgkg
CQkJCQlyZXNldFZlY3RvciA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJc2lnbmF0dXJlIDsg
CSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQloZHJWZXJzaW9uIDsgCSBFbUFsaWFzVUludDE2IDxB
PgkgCQkJCQlmbGFncyA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQluYW1lIDsgCSBFbUFsaWFz
VUludDggPEE+CSAJCQkJCW1hbnVmIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQl2ZXJzaW9u
IDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQljcmVhdGlvbkRhdGUgOyAJIEVtQWxpYXNVSW50
MTYgPEE+CSAJCQkJCW51bVJBTUJsb2NrcyA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJYmxv
Y2tMaXN0T2Zmc2V0IDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQlyZWFkV3JpdGVQYXJtc09m
ZnNldCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJcmVhZFdyaXRlUGFybXNTaXplIDsgCSBF
bUFsaWFzVUludDMyIDxBPgkgCQkJCQlyZWFkT25seVBhcm1zT2Zmc2V0IDsgCSBFbUFsaWFzVUlu
dDMyIDxBPgkgCQkJCQliaWdST01PZmZzZXQgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCWNo
ZWNrc3VtQnl0ZXMgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCWNoZWNrc3VtVmFsdWUgOyAJ
IEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCXJlYWRXcml0ZVdvcmtpbmdPZmZzZXQgOyAJIEVtQWxp
YXNVSW50MzIgPEE+CSAJCQkJCXJlYWRXcml0ZVdvcmtpbmdTaXplIDsgCSBFbUFsaWFzVUludDMy
IDxBPgkgCQkJCQloYWxDb2RlT2Zmc2V0IDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
aW5pdFN0YWNrICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9yZXNldFZlY3RvciAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2Zfc2lnbmF0dXJlICAodm9pZCkgeyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9oZHJWZXJzaW9uICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZmxhZ3MgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9uYW1lICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfbWFudWYgICh2b2lkKSB7IHJldHVybiAgNDggOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl92ZXJzaW9uICAodm9pZCkgeyByZXR1cm4gIDgwIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfY3JlYXRpb25EYXRlICAodm9pZCkgeyByZXR1cm4gIDgyIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfbnVtUkFNQmxvY2tzICAodm9pZCkgeyByZXR1cm4gIDg2IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYmxvY2tMaXN0T2Zmc2V0ICAodm9pZCkgeyByZXR1cm4gIDg4
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVhZFdyaXRlUGFybXNPZmZzZXQgICh2b2lk
KSB7IHJldHVybiAgOTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZWFkV3JpdGVQYXJt
c1NpemUgICh2b2lkKSB7IHJldHVybiAgOTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9y
ZWFkT25seVBhcm1zT2Zmc2V0ICAodm9pZCkgeyByZXR1cm4gIDEwMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2JpZ1JPTU9mZnNldCAgKHZvaWQpIHsgcmV0dXJuICAxMDQgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9jaGVja3N1bUJ5dGVzICAodm9pZCkgeyByZXR1cm4gIDEwOCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NoZWNrc3VtVmFsdWUgICh2b2lkKSB7IHJldHVy
biAgMTEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVhZFdyaXRlV29ya2luZ09mZnNl
dCAgKHZvaWQpIHsgcmV0dXJuICAxMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZWFk
V3JpdGVXb3JraW5nU2l6ZSAgKHZvaWQpIHsgcmV0dXJuICAxMTggOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9oYWxDb2RlT2Zmc2V0ICAodm9pZCkgeyByZXR1cm4gIDEyMiA7IH0gIAl9OyAJ
Y2xhc3MgRW1Qcm94eUNhcmRIZWFkZXJUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRy
X3R5cGU7CUVtUHJveHlDYXJkSGVhZGVyVHlwZSAgCSh2b2lkKTsJRW1Qcm94eUNhcmRIZWFkZXJU
eXBlICAJKGNvbnN0IEVtUHJveHlDYXJkSGVhZGVyVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRy
CSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBz
aXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDI1NiAgOyB9CUVtUHJveHlDYXJk
SGVhZGVyVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5Q2FyZEhlYWRlclR5cGUgICYp
OwlFbUFsaWFzQ2FyZEhlYWRlclR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVt
QWxpYXNDYXJkSGVhZGVyVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0
ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMjU2ICBdOwl9IGZMb2NhbERhdGE7CXB1Ymxp
YzoJICAgICBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCWluaXRTdGFjayA7IAkgRW1BbGlhc1VJ
bnQzMiA8TEFTPgkgCQkJCQlyZXNldFZlY3RvciA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJ
CQlzaWduYXR1cmUgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJaGRyVmVyc2lvbiA7IAkg
RW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQlmbGFncyA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJ
CQkJCW5hbWUgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQltYW51ZiA7IAkgRW1BbGlhc1VJ
bnQxNiA8TEFTPgkgCQkJCQl2ZXJzaW9uIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCWNy
ZWF0aW9uRGF0ZSA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQludW1SQU1CbG9ja3MgOyAJ
IEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJYmxvY2tMaXN0T2Zmc2V0IDsgCSBFbUFsaWFzVUlu
dDMyIDxMQVM+CSAJCQkJCXJlYWRXcml0ZVBhcm1zT2Zmc2V0IDsgCSBFbUFsaWFzVUludDMyIDxM
QVM+CSAJCQkJCXJlYWRXcml0ZVBhcm1zU2l6ZSA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJ
CQlyZWFkT25seVBhcm1zT2Zmc2V0IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCWJpZ1JP
TU9mZnNldCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQljaGVja3N1bUJ5dGVzIDsgCSBF
bUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCWNoZWNrc3VtVmFsdWUgOyAJIEVtQWxpYXNVSW50MzIg
PExBUz4JIAkJCQkJcmVhZFdyaXRlV29ya2luZ09mZnNldCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFT
PgkgCQkJCQlyZWFkV3JpdGVXb3JraW5nU2l6ZSA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJ
CQloYWxDb2RlT2Zmc2V0IDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5pdFN0YWNr
ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNldFZl
Y3RvciAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2ln
bmF0dXJlICAodm9pZCkgeyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9o
ZHJWZXJzaW9uICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZmxhZ3MgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9uYW1lICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
bWFudWYgICh2b2lkKSB7IHJldHVybiAgNDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl92
ZXJzaW9uICAodm9pZCkgeyByZXR1cm4gIDgwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
Y3JlYXRpb25EYXRlICAodm9pZCkgeyByZXR1cm4gIDgyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfbnVtUkFNQmxvY2tzICAodm9pZCkgeyByZXR1cm4gIDg2IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfYmxvY2tMaXN0T2Zmc2V0ICAodm9pZCkgeyByZXR1cm4gIDg4IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVhZFdyaXRlUGFybXNPZmZzZXQgICh2b2lkKSB7IHJldHVy
biAgOTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZWFkV3JpdGVQYXJtc1NpemUgICh2
b2lkKSB7IHJldHVybiAgOTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZWFkT25seVBh
cm1zT2Zmc2V0ICAodm9pZCkgeyByZXR1cm4gIDEwMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2JpZ1JPTU9mZnNldCAgKHZvaWQpIHsgcmV0dXJuICAxMDQgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9jaGVja3N1bUJ5dGVzICAodm9pZCkgeyByZXR1cm4gIDEwOCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2NoZWNrc3VtVmFsdWUgICh2b2lkKSB7IHJldHVybiAgMTEyIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVhZFdyaXRlV29ya2luZ09mZnNldCAgKHZvaWQp
IHsgcmV0dXJuICAxMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZWFkV3JpdGVXb3Jr
aW5nU2l6ZSAgKHZvaWQpIHsgcmV0dXJuICAxMTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9oYWxDb2RlT2Zmc2V0ICAodm9pZCkgeyByZXR1cm4gIDEyMiA7IH0gIAl9OyAgIAkgIHRlbXBs
YXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzQ2FyZEluZm9UeXBlICAJewlwdWJsaWM6CXR5cGVk
ZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNDYXJkSW5mb1R5cGUgIAko
cHRyX3R5cGUpOwlFbUFsaWFzQ2FyZEluZm9UeXBlICAJKGNvbnN0IEVtQWxpYXNDYXJkSW5mb1R5
cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlz
dGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA0OCAgOyB9CUVtQWxp
YXNDYXJkSW5mb1R5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzQ2FyZEluZm9UeXBl
ICA8QT4mKTsJRW1BbGlhc0NhcmRJbmZvVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0
IEVtQWxpYXNDYXJkSW5mb1R5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRl
OglFbUFsaWFzQ2FyZEluZm9UeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJ
ICAgICBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQliYXNlUCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4J
IAkJCQkJc2l6ZSA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJZmlyc3RSQU1CbG9ja1NpemUg
OyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCXRhcmdldFJPTVNoaWZ0IDsgCSBFbUFsaWFzVUlu
dDMyIDxBPgkgCQkJCQljYXJkSGVhZGVyT2Zmc2V0IDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJ
CQlyc3ZTcGFjZSA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJZHluSGVhcFNwYWNlIDsgCSBF
bUFsaWFzZW11cHRyIDxBPgkgCQkJCQlyYW1TdG9yZVAgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJ
CQkJCW51bVJBTUhlYXBzIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQlyYW1IZWFwT2Zmc2V0
c1AgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCW51bVJPTUhlYXBzIDsgCSBFbUFsaWFzZW11
cHRyIDxBPgkgCQkJCQlyb21IZWFwT2Zmc2V0c1AgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJ
CWNhcmRPZmZzZXRNYXNrIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYmFzZVAgICh2
b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NpemUgICh2b2lk
KSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZpcnN0UkFNQmxvY2tT
aXplICAodm9pZCkgeyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90YXJn
ZXRST01TaGlmdCAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2NhcmRIZWFkZXJPZmZzZXQgICh2b2lkKSB7IHJldHVybiAgMTYgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9yc3ZTcGFjZSAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2R5bkhlYXBTcGFjZSAgKHZvaWQpIHsgcmV0dXJuICAyNCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3JhbVN0b3JlUCAgKHZvaWQpIHsgcmV0dXJuICAyOCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX251bVJBTUhlYXBzICAodm9pZCkgeyByZXR1cm4gIDMy
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmFtSGVhcE9mZnNldHNQICAodm9pZCkgeyBy
ZXR1cm4gIDM0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbnVtUk9NSGVhcHMgICh2b2lk
KSB7IHJldHVybiAgMzggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yb21IZWFwT2Zmc2V0
c1AgICh2b2lkKSB7IHJldHVybiAgNDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jYXJk
T2Zmc2V0TWFzayAgKHZvaWQpIHsgcmV0dXJuICA0NCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eUNh
cmRJbmZvVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5Q2Fy
ZEluZm9UeXBlICAJKHZvaWQpOwlFbVByb3h5Q2FyZEluZm9UeXBlICAJKGNvbnN0IEVtUHJveHlD
YXJkSW5mb1R5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4g
KHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICA0OCAgOyB9CUVtUHJveHlDYXJkSW5mb1R5cGUgICYJCW9wZXJhdG9yPSAo
Y29uc3QgRW1Qcm94eUNhcmRJbmZvVHlwZSAgJik7CUVtQWxpYXNDYXJkSW5mb1R5cGUgIDxMQVM+
CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNDYXJkSW5mb1R5cGUgIDxMQVM+CW9wZXJh
dG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDQ4
ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJ
CWJhc2VQIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCXNpemUgOyAJIEVtQWxpYXNVSW50
MzIgPExBUz4JIAkJCQkJZmlyc3RSQU1CbG9ja1NpemUgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4J
IAkJCQkJdGFyZ2V0Uk9NU2hpZnQgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJY2FyZEhl
YWRlck9mZnNldCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQlyc3ZTcGFjZSA7IAkgRW1B
bGlhc1VJbnQzMiA8TEFTPgkgCQkJCQlkeW5IZWFwU3BhY2UgOyAJIEVtQWxpYXNlbXVwdHIgPExB
Uz4JIAkJCQkJcmFtU3RvcmVQIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCW51bVJBTUhl
YXBzIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCXJhbUhlYXBPZmZzZXRzUCA7IAkgRW1B
bGlhc1VJbnQxNiA8TEFTPgkgCQkJCQludW1ST01IZWFwcyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFT
PgkgCQkJCQlyb21IZWFwT2Zmc2V0c1AgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJY2Fy
ZE9mZnNldE1hc2sgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9iYXNlUCAgKHZvaWQp
IHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2l6ZSAgKHZvaWQpIHsg
cmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmlyc3RSQU1CbG9ja1NpemUg
ICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RhcmdldFJP
TVNoaWZ0ICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
Y2FyZEhlYWRlck9mZnNldCAgKHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3JzdlNwYWNlICAodm9pZCkgeyByZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZHluSGVhcFNwYWNlICAodm9pZCkgeyByZXR1cm4gIDI0IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfcmFtU3RvcmVQICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbnVtUkFNSGVhcHMgICh2b2lkKSB7IHJldHVybiAgMzIgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yYW1IZWFwT2Zmc2V0c1AgICh2b2lkKSB7IHJldHVy
biAgMzQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9udW1ST01IZWFwcyAgKHZvaWQpIHsg
cmV0dXJuICAzOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JvbUhlYXBPZmZzZXRzUCAg
KHZvaWQpIHsgcmV0dXJuICA0MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NhcmRPZmZz
ZXRNYXNrICAodm9pZCkgeyByZXR1cm4gIDQ0IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNz
IEE+CWNsYXNzIEVtQWxpYXNTdG9yYWdlSGVhZGVyVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5
cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzU3RvcmFnZUhlYWRlclR5cGUgIAko
cHRyX3R5cGUpOwlFbUFsaWFzU3RvcmFnZUhlYWRlclR5cGUgIAkoY29uc3QgRW1BbGlhc1N0b3Jh
Z2VIZWFkZXJUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJu
IGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNzYg
IDsgfQlFbUFsaWFzU3RvcmFnZUhlYWRlclR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFs
aWFzU3RvcmFnZUhlYWRlclR5cGUgIDxBPiYpOwlFbUFsaWFzU3RvcmFnZUhlYWRlclR5cGUgIDxB
PglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3RvcmFnZUhlYWRlclR5cGUgIDxBPglv
cGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzU3RvcmFnZUhlYWRlclR5cGUg
IAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MzIgPEE+
CSAJCQkJCQlzaWduYXR1cmUgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQl2ZXJzaW9uIDsg
CSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJZmxhZ3MgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJ
CQkJCW5hbWUgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQljcmVhdGlvbkRhdGUgOyAJIEVt
QWxpYXNVSW50MzIgPEE+CSAJCQkJCQliYWNrdXBEYXRlIDsgCSBFbUFsaWFzVUludDMyIDxBPgkg
CQkJCQkJaGVhcExpc3RPZmZzZXQgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlpbml0Q29k
ZU9mZnNldDEgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlpbml0Q29kZU9mZnNldDIgOyAJ
IEVtQWxpYXNMb2NhbElEIDxBPgkgCQkJCQlkYXRhYmFzZURpcklEIDsgCSBFbUFsaWFzVUludDMy
IDxBPgkgCQkJCQkJcnN2U3BhY2UgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlkeW5IZWFw
U3BhY2UgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlmaXJzdFJBTUJsb2NrU2l6ZSA7ICAJ
ICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NpZ25hdHVyZSAgKHZvaWQpIHsgcmV0dXJuICAw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdmVyc2lvbiAgKHZvaWQpIHsgcmV0dXJuICA0
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmxhZ3MgICh2b2lkKSB7IHJldHVybiAgNiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25hbWUgICh2b2lkKSB7IHJldHVybiAgOCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NyZWF0aW9uRGF0ZSAgKHZvaWQpIHsgcmV0dXJuICA0
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2JhY2t1cERhdGUgICh2b2lkKSB7IHJldHVy
biAgNDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9oZWFwTGlzdE9mZnNldCAgKHZvaWQp
IHsgcmV0dXJuICA0OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luaXRDb2RlT2Zmc2V0
MSAgKHZvaWQpIHsgcmV0dXJuICA1MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luaXRD
b2RlT2Zmc2V0MiAgKHZvaWQpIHsgcmV0dXJuICA1NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2RhdGFiYXNlRGlySUQgICh2b2lkKSB7IHJldHVybiAgNjAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9yc3ZTcGFjZSAgKHZvaWQpIHsgcmV0dXJuICA2NCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2R5bkhlYXBTcGFjZSAgKHZvaWQpIHsgcmV0dXJuICA2OCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2ZpcnN0UkFNQmxvY2tTaXplICAodm9pZCkgeyByZXR1cm4gIDcy
IDsgfSAgCX07IAljbGFzcyBFbVByb3h5U3RvcmFnZUhlYWRlclR5cGUgIAl7CXB1YmxpYzoJdHlw
ZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVN0b3JhZ2VIZWFkZXJUeXBlICAJKHZvaWQpOwlF
bVByb3h5U3RvcmFnZUhlYWRlclR5cGUgIAkoY29uc3QgRW1Qcm94eVN0b3JhZ2VIZWFkZXJUeXBl
ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkg
JmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAg
ICAgNzYgIDsgfQlFbVByb3h5U3RvcmFnZUhlYWRlclR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3Qg
RW1Qcm94eVN0b3JhZ2VIZWFkZXJUeXBlICAmKTsJRW1BbGlhc1N0b3JhZ2VIZWFkZXJUeXBlICA8
TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU3RvcmFnZUhlYWRlclR5cGUgIDxM
QVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0
ZXNbICAgIDc2ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxM
QVM+CSAJCQkJCQlzaWduYXR1cmUgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXZlcnNp
b24gOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWZsYWdzIDsgCSBFbUFsaWFzVUludDgg
PExBUz4JIAkJCQkJCW5hbWUgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWNyZWF0aW9u
RGF0ZSA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJYmFja3VwRGF0ZSA7IAkgRW1BbGlh
c1VJbnQzMiA8TEFTPgkgCQkJCQkJaGVhcExpc3RPZmZzZXQgOyAJIEVtQWxpYXNVSW50MzIgPExB
Uz4JIAkJCQkJCWluaXRDb2RlT2Zmc2V0MSA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJ
aW5pdENvZGVPZmZzZXQyIDsgCSBFbUFsaWFzTG9jYWxJRCA8TEFTPgkgCQkJCQlkYXRhYmFzZURp
cklEIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlyc3ZTcGFjZSA7IAkgRW1BbGlhc1VJ
bnQzMiA8TEFTPgkgCQkJCQkJZHluSGVhcFNwYWNlIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJ
CQkJCQlmaXJzdFJBTUJsb2NrU2l6ZSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Np
Z25hdHVyZSAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
dmVyc2lvbiAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
ZmxhZ3MgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25h
bWUgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NyZWF0
aW9uRGF0ZSAgKHZvaWQpIHsgcmV0dXJuICA0MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2JhY2t1cERhdGUgICh2b2lkKSB7IHJldHVybiAgNDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9oZWFwTGlzdE9mZnNldCAgKHZvaWQpIHsgcmV0dXJuICA0OCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2luaXRDb2RlT2Zmc2V0MSAgKHZvaWQpIHsgcmV0dXJuICA1MiA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2luaXRDb2RlT2Zmc2V0MiAgKHZvaWQpIHsgcmV0dXJuICA1
NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RhdGFiYXNlRGlySUQgICh2b2lkKSB7IHJl
dHVybiAgNjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yc3ZTcGFjZSAgKHZvaWQpIHsg
cmV0dXJuICA2NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2R5bkhlYXBTcGFjZSAgKHZv
aWQpIHsgcmV0dXJuICA2OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZpcnN0UkFNQmxv
Y2tTaXplICAodm9pZCkgeyByZXR1cm4gIDcyIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNz
IEE+CWNsYXNzIEVtQWxpYXNFeGdHb1RvVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1l
IEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzRXhnR29Ub1R5cGUgIAkocHRyX3R5cGUpOwlF
bUFsaWFzRXhnR29Ub1R5cGUgIAkoY29uc3QgRW1BbGlhc0V4Z0dvVG9UeXBlICAmKTsJcHRyX3R5
cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJ
R2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTYgIDsgfQlFbUFsaWFzRXhnR29Ub1R5cGUg
IDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzRXhnR29Ub1R5cGUgIDxBPiYpOwlFbUFsaWFz
RXhnR29Ub1R5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzRXhnR29Ub1R5
cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzRXhnR29Ub1R5
cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYg
PEE+CSAJCQkJCQlkYkNhcmRObyA7IAkgRW1BbGlhc0xvY2FsSUQgPEE+CSAJCQkJCWRiSUQgOyAJ
IEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlyZWNvcmROdW0gOyAJIEVtQWxpYXNVSW50MzIgPEE+
CSAJCQkJCQl1bmlxdWVJRCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCW1hdGNoQ3VzdG9t
IDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGJDYXJkTm8gICh2b2lkKSB7IHJldHVy
biAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RiSUQgICh2b2lkKSB7IHJldHVybiAg
MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JlY29yZE51bSAgKHZvaWQpIHsgcmV0dXJu
ICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdW5pcXVlSUQgICh2b2lkKSB7IHJldHVy
biAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21hdGNoQ3VzdG9tICAodm9pZCkgeyBy
ZXR1cm4gIDEyIDsgfSAgCX07IAljbGFzcyBFbVByb3h5RXhnR29Ub1R5cGUgIAl7CXB1YmxpYzoJ
dHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUV4Z0dvVG9UeXBlICAJKHZvaWQpOwlFbVBy
b3h5RXhnR29Ub1R5cGUgIAkoY29uc3QgRW1Qcm94eUV4Z0dvVG9UeXBlICAmKTsJcHRyX3R5cGUJ
CQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0J
c3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTYgIDsgfQlFbVBy
b3h5RXhnR29Ub1R5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eUV4Z0dvVG9UeXBlICAm
KTsJRW1BbGlhc0V4Z0dvVG9UeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFs
aWFzRXhnR29Ub1R5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0
cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDE2ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAg
ICBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlkYkNhcmRObyA7IAkgRW1BbGlhc0xvY2FsSUQg
PExBUz4JIAkJCQkJZGJJRCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJcmVjb3JkTnVt
IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQl1bmlxdWVJRCA7IAkgRW1BbGlhc1VJbnQz
MiA8TEFTPgkgCQkJCQkJbWF0Y2hDdXN0b20gOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9kYkNhcmRObyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZGJJRCAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
cmVjb3JkTnVtICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl91bmlxdWVJRCAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfbWF0Y2hDdXN0b20gICh2b2lkKSB7IHJldHVybiAgMTIgOyB9ICAJfTsgICAJICB0ZW1wbGF0
ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0V4Z1NvY2tldFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRl
ZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0V4Z1NvY2tldFR5cGUgIAko
cHRyX3R5cGUpOwlFbUFsaWFzRXhnU29ja2V0VHlwZSAgCShjb25zdCBFbUFsaWFzRXhnU29ja2V0
VHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9
CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDYwICA7IH0JRW1B
bGlhc0V4Z1NvY2tldFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzRXhnU29ja2V0
VHlwZSAgPEE+Jik7CUVtQWxpYXNFeGdTb2NrZXRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJ
Y29uc3QgRW1BbGlhc0V4Z1NvY2tldFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglFbUFsaWFzRXhnU29ja2V0VHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlw
dWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWxpYnJhcnlSZWYgOyAJIEVtQWxp
YXNVSW50MzIgPEE+CSAJCQkJCQlzb2NrZXRSZWYgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJ
CQl0YXJnZXQgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQljb3VudCA7IAkgRW1BbGlhc1VJ
bnQzMiA8QT4JIAkJCQkJCWxlbmd0aCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXRpbWUg
OyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlhcHBEYXRhIDsgCSBFbUFsaWFzVUludDMyIDxB
PgkgCQkJCQkJZ29Ub0NyZWF0b3IgOyAJIEVtQWxpYXNFeGdHb1RvVHlwZSA8QT4JIAkJCQlnb1Rv
UGFyYW1zIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJZmxhZ3MgOyAJIEVtQWxpYXNlbXVw
dHIgPEE+CSAJCQkJCQlkZXNjcmlwdGlvbiA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXR5
cGUgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQluYW1lIDsgIAkgICAgIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfbGlicmFyeVJlZiAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2Zfc29ja2V0UmVmICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl90YXJnZXQgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2NvdW50ICAodm9pZCkgeyByZXR1cm4gIDEwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfbGVuZ3RoICAodm9pZCkgeyByZXR1cm4gIDE0IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfdGltZSAgKHZvaWQpIHsgcmV0dXJuICAxOCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2FwcERhdGEgICh2b2lkKSB7IHJldHVybiAgMjIgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9nb1RvQ3JlYXRvciAgKHZvaWQpIHsgcmV0dXJuICAyNiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2dvVG9QYXJhbXMgICh2b2lkKSB7IHJldHVybiAgMzAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9mbGFncyAgKHZvaWQpIHsgcmV0dXJuICA0NiA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2Rlc2NyaXB0aW9uICAodm9pZCkgeyByZXR1cm4gIDQ4IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdHlwZSAgKHZvaWQpIHsgcmV0dXJuICA1MiA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25hbWUgICh2b2lkKSB7IHJldHVybiAgNTYgOyB9ICAJ
fTsgCWNsYXNzIEVtUHJveHlFeGdTb2NrZXRUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCog
cHRyX3R5cGU7CUVtUHJveHlFeGdTb2NrZXRUeXBlICAJKHZvaWQpOwlFbVByb3h5RXhnU29ja2V0
VHlwZSAgCShjb25zdCBFbVByb3h5RXhnU29ja2V0VHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRy
CSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBz
aXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDYwICA7IH0JRW1Qcm94eUV4Z1Nv
Y2tldFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eUV4Z1NvY2tldFR5cGUgICYpOwlF
bUFsaWFzRXhnU29ja2V0VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlh
c0V4Z1NvY2tldFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0
cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDYwICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAg
ICBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlsaWJyYXJ5UmVmIDsgCSBFbUFsaWFzVUludDMy
IDxMQVM+CSAJCQkJCQlzb2NrZXRSZWYgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXRh
cmdldCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJY291bnQgOyAJIEVtQWxpYXNVSW50
MzIgPExBUz4JIAkJCQkJCWxlbmd0aCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJdGlt
ZSA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJYXBwRGF0YSA7IAkgRW1BbGlhc1VJbnQz
MiA8TEFTPgkgCQkJCQkJZ29Ub0NyZWF0b3IgOyAJIEVtQWxpYXNFeGdHb1RvVHlwZSA8TEFTPgkg
CQkJCWdvVG9QYXJhbXMgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWZsYWdzIDsgCSBF
bUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlkZXNjcmlwdGlvbiA7IAkgRW1BbGlhc2VtdXB0ciA8
TEFTPgkgCQkJCQkJdHlwZSA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJbmFtZSA7ICAJ
ICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xpYnJhcnlSZWYgICh2b2lkKSB7IHJldHVybiAg
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NvY2tldFJlZiAgKHZvaWQpIHsgcmV0dXJu
ICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGFyZ2V0ICAodm9pZCkgeyByZXR1cm4g
IDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb3VudCAgKHZvaWQpIHsgcmV0dXJuICAx
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xlbmd0aCAgKHZvaWQpIHsgcmV0dXJuICAx
NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RpbWUgICh2b2lkKSB7IHJldHVybiAgMTgg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hcHBEYXRhICAodm9pZCkgeyByZXR1cm4gIDIy
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ29Ub0NyZWF0b3IgICh2b2lkKSB7IHJldHVy
biAgMjYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nb1RvUGFyYW1zICAodm9pZCkgeyBy
ZXR1cm4gIDMwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmxhZ3MgICh2b2lkKSB7IHJl
dHVybiAgNDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kZXNjcmlwdGlvbiAgKHZvaWQp
IHsgcmV0dXJuICA0OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3R5cGUgICh2b2lkKSB7
IHJldHVybiAgNTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uYW1lICAodm9pZCkgeyBy
ZXR1cm4gIDU2IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNE
bGtEQkNyZWF0b3JMaXN0ICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUg
cHRyX3R5cGU7CUVtQWxpYXNEbGtEQkNyZWF0b3JMaXN0ICAJKHB0cl90eXBlKTsJRW1BbGlhc0Rs
a0RCQ3JlYXRvckxpc3QgIAkoY29uc3QgRW1BbGlhc0Rsa0RCQ3JlYXRvckxpc3QgICYpOwlwdHJf
dHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90
CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA2ICA7IH0JRW1BbGlhc0Rsa0RCQ3JlYXRv
ckxpc3QgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzRGxrREJDcmVhdG9yTGlzdCAgPEE+
Jik7CUVtQWxpYXNEbGtEQkNyZWF0b3JMaXN0ICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3Qg
RW1BbGlhc0Rsa0RCQ3JlYXRvckxpc3QgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2
YXRlOglFbUFsaWFzRGxrREJDcmVhdG9yTGlzdCAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlw
dWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWNvdW50IDsgCSBFbUFsaWFzZW11
cHRyIDxBPgkgCQkJCQkJbGlzdEggOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb3Vu
dCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbGlzdEgg
ICh2b2lkKSB7IHJldHVybiAgMiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eURsa0RCQ3JlYXRvckxp
c3QgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eURsa0RCQ3JlYXRv
ckxpc3QgIAkodm9pZCk7CUVtUHJveHlEbGtEQkNyZWF0b3JMaXN0ICAJKGNvbnN0IEVtUHJveHlE
bGtEQkNyZWF0b3JMaXN0ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0
dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9p
ZCkJCQl7IHJldHVybiAgICAgNiAgOyB9CUVtUHJveHlEbGtEQkNyZWF0b3JMaXN0ICAmCQlvcGVy
YXRvcj0gKGNvbnN0IEVtUHJveHlEbGtEQkNyZWF0b3JMaXN0ICAmKTsJRW1BbGlhc0Rsa0RCQ3Jl
YXRvckxpc3QgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNEbGtEQkNyZWF0
b3JMaXN0ICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3Qgewlj
aGFyCQkJX2J5dGVzWyAgICA2ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFz
VUludDE2IDxMQVM+CSAJCQkJCQljb3VudCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJ
bGlzdEggOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb3VudCAgKHZvaWQpIHsgcmV0
dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbGlzdEggICh2b2lkKSB7IHJldHVy
biAgMiA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzRGxrU2Vy
dmVyU2Vzc2lvblR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBw
dHJfdHlwZTsJRW1BbGlhc0Rsa1NlcnZlclNlc3Npb25UeXBlICAJKHB0cl90eXBlKTsJRW1BbGlh
c0Rsa1NlcnZlclNlc3Npb25UeXBlICAJKGNvbnN0IEVtQWxpYXNEbGtTZXJ2ZXJTZXNzaW9uVHlw
ZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0
YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDE0NiAgOyB9CUVtQWxp
YXNEbGtTZXJ2ZXJTZXNzaW9uVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNEbGtT
ZXJ2ZXJTZXNzaW9uVHlwZSAgPEE+Jik7CUVtQWxpYXNEbGtTZXJ2ZXJTZXNzaW9uVHlwZSAgPEE+
CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNEbGtTZXJ2ZXJTZXNzaW9uVHlwZSAgPEE+
CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNEbGtTZXJ2ZXJTZXNzaW9u
VHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQx
NiA8QT4JIAkJCQkJCWh0YWxMaWJSZWZOdW0gOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlt
YXhIdGFsWGZlclNpemUgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlldmVudFByb2NQIDsg
CSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJZXZlbnRSZWYgOyAJIEVtQWxpYXNlbXVwdHIgPEE+
CSAJCQkJCQljYW5Qcm9jUCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCWNhblJlZiA7IAkg
RW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWNvbmRGaWx0ZXJIIDsgCSBFbUFsaWFzVUludDggPEE+
CSAJCQkJCQlkbGtEQklEIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlyZXNlcnZlZDEgOyAJ
IEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlkYlIgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJ
CQljYXJkTm8gOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlkYkNyZWF0b3IgOyAJIEVtQWxp
YXNDaGFyIDxBPgkgCQkJCQkJZGJOYW1lIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJZGJP
cGVuTW9kZSA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJCWNyZWF0ZWQgOyAJIEVtQWxpYXNC
b29sZWFuIDxBPgkgCQkJCQlpc1Jlc0RCIDsgCSBFbUFsaWFzQm9vbGVhbiA8QT4JIAkJCQkJcmFt
QmFzZWQgOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQlyZWFkT25seSA7IAkgRW1BbGlhc0xv
Y2FsSUQgPEE+CSAJCQkJCWRiTG9jYWxJRCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCWlu
aXRpYWxNb2ROdW0gOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQljdXJSZWNJbmRleCA7IAkg
RW1BbGlhc0Rsa0RCQ3JlYXRvckxpc3QgPEE+CSAJCQljcmVhdG9yTGlzdCA7IAkgRW1BbGlhc1VJ
bnQ4IDxBPgkgCQkJCQkJc3luY1N0YXRlIDsgCSBFbUFsaWFzQm9vbGVhbiA8QT4JIAkJCQkJY29t
cGxldGUgOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQljb25kdWl0T3BlbmVkIDsgCSBFbUFs
aWFzQm9vbGVhbiA8QT4JIAkJCQkJbG9nQ2xlYXJlZCA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJ
CQkJCXJlc2V0UGVuZGluZyA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJCWdvdENvbW1hbmQg
OyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCWNtZFRJRCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkg
CQkJCQkJcmVzZXJ2ZWQyIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJY21kTGVuIDsgCSBF
bUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJY21kUCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJ
CWNtZEggOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQl3U3RhdGVGbGFncyA7IAkgRW1BbGlh
c0RtU2VhcmNoU3RhdGVUeXBlIDxBPgkgCQkJZGJTZWFyY2hTdGF0ZSA7ICAJICAgICBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2h0YWxMaWJSZWZOdW0gICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX21heEh0YWxYZmVyU2l6ZSAgKHZvaWQpIHsgcmV0dXJuICAy
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXZlbnRQcm9jUCAgKHZvaWQpIHsgcmV0dXJu
ICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXZlbnRSZWYgICh2b2lkKSB7IHJldHVy
biAgMTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jYW5Qcm9jUCAgKHZvaWQpIHsgcmV0
dXJuICAxNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NhblJlZiAgKHZvaWQpIHsgcmV0
dXJuICAxOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbmRGaWx0ZXJIICAodm9pZCkg
eyByZXR1cm4gIDIyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGxrREJJRCAgKHZvaWQp
IHsgcmV0dXJuICAyNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jlc2VydmVkMSAgKHZv
aWQpIHsgcmV0dXJuICAyNyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RiUiAgKHZvaWQp
IHsgcmV0dXJuICAyOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NhcmRObyAgKHZvaWQp
IHsgcmV0dXJuICAzMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RiQ3JlYXRvciAgKHZv
aWQpIHsgcmV0dXJuICAzNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RiTmFtZSAgKHZv
aWQpIHsgcmV0dXJuICAzOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RiT3Blbk1vZGUg
ICh2b2lkKSB7IHJldHVybiAgNzAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jcmVhdGVk
ICAodm9pZCkgeyByZXR1cm4gIDcyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaXNSZXNE
QiAgKHZvaWQpIHsgcmV0dXJuICA3MyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JhbUJh
c2VkICAodm9pZCkgeyByZXR1cm4gIDc0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVh
ZE9ubHkgICh2b2lkKSB7IHJldHVybiAgNzUgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9k
YkxvY2FsSUQgICh2b2lkKSB7IHJldHVybiAgNzYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9pbml0aWFsTW9kTnVtICAodm9pZCkgeyByZXR1cm4gIDgwIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfY3VyUmVjSW5kZXggICh2b2lkKSB7IHJldHVybiAgODQgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9jcmVhdG9yTGlzdCAgKHZvaWQpIHsgcmV0dXJuICA4OCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3N5bmNTdGF0ZSAgKHZvaWQpIHsgcmV0dXJuICA5NCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbXBsZXRlICAodm9pZCkgeyByZXR1cm4gIDk1IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29uZHVpdE9wZW5lZCAgKHZvaWQpIHsgcmV0dXJuICA5
NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xvZ0NsZWFyZWQgICh2b2lkKSB7IHJldHVy
biAgOTcgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNldFBlbmRpbmcgICh2b2lkKSB7
IHJldHVybiAgOTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nb3RDb21tYW5kICAodm9p
ZCkgeyByZXR1cm4gIDk5IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY21kVElEICAodm9p
ZCkgeyByZXR1cm4gIDEwMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jlc2VydmVkMiAg
KHZvaWQpIHsgcmV0dXJuICAxMDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jbWRMZW4g
ICh2b2lkKSB7IHJldHVybiAgMTAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY21kUCAg
KHZvaWQpIHsgcmV0dXJuICAxMDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jbWRIICAo
dm9pZCkgeyByZXR1cm4gIDEwOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3dTdGF0ZUZs
YWdzICAodm9pZCkgeyByZXR1cm4gIDExMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Ri
U2VhcmNoU3RhdGUgICh2b2lkKSB7IHJldHVybiAgMTE0IDsgfSAgCX07IAljbGFzcyBFbVByb3h5
RGxrU2VydmVyU2Vzc2lvblR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJ
RW1Qcm94eURsa1NlcnZlclNlc3Npb25UeXBlICAJKHZvaWQpOwlFbVByb3h5RGxrU2VydmVyU2Vz
c2lvblR5cGUgIAkoY29uc3QgRW1Qcm94eURsa1NlcnZlclNlc3Npb25UeXBlICAmKTsJcHRyX3R5
cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7
IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTQ2ICA7IH0J
RW1Qcm94eURsa1NlcnZlclNlc3Npb25UeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlE
bGtTZXJ2ZXJTZXNzaW9uVHlwZSAgJik7CUVtQWxpYXNEbGtTZXJ2ZXJTZXNzaW9uVHlwZSAgPExB
Uz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0Rsa1NlcnZlclNlc3Npb25UeXBlICA8
TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5
dGVzWyAgICAxNDYgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYg
PExBUz4JIAkJCQkJCWh0YWxMaWJSZWZOdW0gOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJ
CW1heEh0YWxYZmVyU2l6ZSA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJZXZlbnRQcm9j
UCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJZXZlbnRSZWYgOyAJIEVtQWxpYXNlbXVw
dHIgPExBUz4JIAkJCQkJCWNhblByb2NQIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlj
YW5SZWYgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWNvbmRGaWx0ZXJIIDsgCSBFbUFs
aWFzVUludDggPExBUz4JIAkJCQkJCWRsa0RCSUQgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJ
CQkJcmVzZXJ2ZWQxIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlkYlIgOyAJIEVtQWxp
YXNVSW50MTYgPExBUz4JIAkJCQkJCWNhcmRObyA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJ
CQkJZGJDcmVhdG9yIDsgCSBFbUFsaWFzQ2hhciA8TEFTPgkgCQkJCQkJZGJOYW1lIDsgCSBFbUFs
aWFzVUludDE2IDxMQVM+CSAJCQkJCQlkYk9wZW5Nb2RlIDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFT
PgkgCQkJCQljcmVhdGVkIDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkgCQkJCQlpc1Jlc0RCIDsg
CSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkgCQkJCQlyYW1CYXNlZCA7IAkgRW1BbGlhc0Jvb2xlYW4g
PExBUz4JIAkJCQkJcmVhZE9ubHkgOyAJIEVtQWxpYXNMb2NhbElEIDxMQVM+CSAJCQkJCWRiTG9j
YWxJRCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJaW5pdGlhbE1vZE51bSA7IAkgRW1B
bGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJY3VyUmVjSW5kZXggOyAJIEVtQWxpYXNEbGtEQkNyZWF0
b3JMaXN0IDxMQVM+CSAJCQljcmVhdG9yTGlzdCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJ
CQlzeW5jU3RhdGUgOyAJIEVtQWxpYXNCb29sZWFuIDxMQVM+CSAJCQkJCWNvbXBsZXRlIDsgCSBF
bUFsaWFzQm9vbGVhbiA8TEFTPgkgCQkJCQljb25kdWl0T3BlbmVkIDsgCSBFbUFsaWFzQm9vbGVh
biA8TEFTPgkgCQkJCQlsb2dDbGVhcmVkIDsgCSBFbUFsaWFzQm9vbGVhbiA8TEFTPgkgCQkJCQly
ZXNldFBlbmRpbmcgOyAJIEVtQWxpYXNCb29sZWFuIDxMQVM+CSAJCQkJCWdvdENvbW1hbmQgOyAJ
IEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJY21kVElEIDsgCSBFbUFsaWFzVUludDggPExBUz4J
IAkJCQkJCXJlc2VydmVkMiA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJY21kTGVuIDsg
CSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQljbWRQIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+
CSAJCQkJCQljbWRIIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQl3U3RhdGVGbGFncyA7
IAkgRW1BbGlhc0RtU2VhcmNoU3RhdGVUeXBlIDxMQVM+CSAJCQlkYlNlYXJjaFN0YXRlIDsgIAkg
ICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaHRhbExpYlJlZk51bSAgKHZvaWQpIHsgcmV0dXJu
ICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbWF4SHRhbFhmZXJTaXplICAodm9pZCkg
eyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ldmVudFByb2NQICAodm9p
ZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ldmVudFJlZiAgKHZv
aWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NhblByb2NQICAo
dm9pZCkgeyByZXR1cm4gIDE0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2FuUmVmICAo
dm9pZCkgeyByZXR1cm4gIDE4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29uZEZpbHRl
ckggICh2b2lkKSB7IHJldHVybiAgMjIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kbGtE
QklEICAodm9pZCkgeyByZXR1cm4gIDI2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVz
ZXJ2ZWQxICAodm9pZCkgeyByZXR1cm4gIDI3IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
ZGJSICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2Fy
ZE5vICAodm9pZCkgeyByZXR1cm4gIDMyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGJD
cmVhdG9yICAodm9pZCkgeyByZXR1cm4gIDM0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
ZGJOYW1lICAodm9pZCkgeyByZXR1cm4gIDM4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
ZGJPcGVuTW9kZSAgKHZvaWQpIHsgcmV0dXJuICA3MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2NyZWF0ZWQgICh2b2lkKSB7IHJldHVybiAgNzIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9pc1Jlc0RCICAodm9pZCkgeyByZXR1cm4gIDczIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfcmFtQmFzZWQgICh2b2lkKSB7IHJldHVybiAgNzQgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9yZWFkT25seSAgKHZvaWQpIHsgcmV0dXJuICA3NSA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2RiTG9jYWxJRCAgKHZvaWQpIHsgcmV0dXJuICA3NiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2luaXRpYWxNb2ROdW0gICh2b2lkKSB7IHJldHVybiAgODAgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9jdXJSZWNJbmRleCAgKHZvaWQpIHsgcmV0dXJuICA4NCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NyZWF0b3JMaXN0ICAodm9pZCkgeyByZXR1cm4gIDg4
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3luY1N0YXRlICAodm9pZCkgeyByZXR1cm4g
IDk0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tcGxldGUgICh2b2lkKSB7IHJldHVy
biAgOTUgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb25kdWl0T3BlbmVkICAodm9pZCkg
eyByZXR1cm4gIDk2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbG9nQ2xlYXJlZCAgKHZv
aWQpIHsgcmV0dXJuICA5NyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jlc2V0UGVuZGlu
ZyAgKHZvaWQpIHsgcmV0dXJuICA5OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dvdENv
bW1hbmQgICh2b2lkKSB7IHJldHVybiAgOTkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9j
bWRUSUQgICh2b2lkKSB7IHJldHVybiAgMTAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
cmVzZXJ2ZWQyICAodm9pZCkgeyByZXR1cm4gIDEwMSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2NtZExlbiAgKHZvaWQpIHsgcmV0dXJuICAxMDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9jbWRQICAodm9pZCkgeyByZXR1cm4gIDEwNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2NtZEggICh2b2lkKSB7IHJldHVybiAgMTA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2Zfd1N0YXRlRmxhZ3MgICh2b2lkKSB7IHJldHVybiAgMTEyIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfZGJTZWFyY2hTdGF0ZSAgKHZvaWQpIHsgcmV0dXJuICAxMTQgOyB9ICAJfTsgICAg
CiAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNnZW5lcmljICAJewlwdWJsaWM6CXR5
cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNnZW5lcmljICAJKHB0
cl90eXBlKTsJRW1BbGlhc2dlbmVyaWMgIAkoY29uc3QgRW1BbGlhc2dlbmVyaWMgICYpOwlwdHJf
dHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90
CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAxNiAgOyB9CUVtQWxpYXNnZW5lcmljICA8
QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc2dlbmVyaWMgIDxBPiYpOwlFbUFsaWFzZ2VuZXJp
YyAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNnZW5lcmljICA8QT4Jb3BlcmF0
b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc2dlbmVyaWMgIAkodm9pZCk7CXB0cl90
eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlkYXR1bSA7
ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RhdHVtICAodm9pZCkgeyByZXR1cm4gIDAg
OyB9ICAJfTsgCWNsYXNzIEVtUHJveHlnZW5lcmljICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCog
cHRyX3R5cGU7CUVtUHJveHlnZW5lcmljICAJKHZvaWQpOwlFbVByb3h5Z2VuZXJpYyAgCShjb25z
dCBFbVByb3h5Z2VuZXJpYyAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJl
dHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZv
aWQpCQkJeyByZXR1cm4gICAgIDE2ICA7IH0JRW1Qcm94eWdlbmVyaWMgICYJCW9wZXJhdG9yPSAo
Y29uc3QgRW1Qcm94eWdlbmVyaWMgICYpOwlFbUFsaWFzZ2VuZXJpYyAgPExBUz4Jb3BlcmF0b3Jb
XSAoaW50KTsJY29uc3QgRW1BbGlhc2dlbmVyaWMgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29u
c3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDE2ICBdOwl9IGZMb2NhbERh
dGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlkYXR1bSA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RhdHVtICAodm9pZCkgeyByZXR1cm4gIDAgOyB9ICAJ
fTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc3BlblVwICAJewlwdWJsaWM6
CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNwZW5VcCAgCShw
dHJfdHlwZSk7CUVtQWxpYXNwZW5VcCAgCShjb25zdCBFbUFsaWFzcGVuVXAgICYpOwlwdHJfdHlw
ZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlH
ZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA4ICA7IH0JRW1BbGlhc3BlblVwICA8QT4mCW9w
ZXJhdG9yPSAoY29uc3QgRW1BbGlhc3BlblVwICA8QT4mKTsJRW1BbGlhc3BlblVwICA8QT4Jb3Bl
cmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc3BlblVwICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBj
b25zdDsJcHJpdmF0ZToJRW1BbGlhc3BlblVwICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1
YmxpYzoJICAgICBFbUFsaWFzUG9pbnRUeXBlIDxBPgkgCQkJCQlzdGFydCA7IAkgRW1BbGlhc1Bv
aW50VHlwZSA8QT4JIAkJCQkJZW5kIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3Rh
cnQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2VuZCAg
KHZvaWQpIHsgcmV0dXJuICA0IDsgfSAgCX07IAljbGFzcyBFbVByb3h5cGVuVXAgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eXBlblVwICAJKHZvaWQpOwlFbVByb3h5
cGVuVXAgIAkoY29uc3QgRW1Qcm94eXBlblVwICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQp
IGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJ
R2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgOCAgOyB9CUVtUHJveHlwZW5VcCAgJgkJb3Bl
cmF0b3I9IChjb25zdCBFbVByb3h5cGVuVXAgICYpOwlFbUFsaWFzcGVuVXAgIDxMQVM+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNwZW5VcCAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBj
b25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgOCAgXTsJfSBmTG9jYWxE
YXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1BvaW50VHlwZSA8TEFTPgkgCQkJCQlzdGFydCA7IAkg
RW1BbGlhc1BvaW50VHlwZSA8TEFTPgkgCQkJCQllbmQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9zdGFydCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfZW5kICAodm9pZCkgeyByZXR1cm4gIDQgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xh
c3MgQT4JY2xhc3MgRW1BbGlhc2tleURvd24gIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBB
OjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc2tleURvd24gIAkocHRyX3R5cGUpOwlFbUFsaWFz
a2V5RG93biAgCShjb25zdCBFbUFsaWFza2V5RG93biAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2
b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQp
CQkJeyByZXR1cm4gICAgIDYgIDsgfQlFbUFsaWFza2V5RG93biAgPEE+JglvcGVyYXRvcj0gKGNv
bnN0IEVtQWxpYXNrZXlEb3duICA8QT4mKTsJRW1BbGlhc2tleURvd24gIDxBPglvcGVyYXRvcltd
IChpbnQpOwljb25zdCBFbUFsaWFza2V5RG93biAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7
CXByaXZhdGU6CUVtQWxpYXNrZXlEb3duICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1Ymxp
YzoJICAgICBFbUFsaWFzV0NoYXIgPEE+CSAJCQkJCQljaHIgOyAJIEVtQWxpYXNVSW50MTYgPEE+
CSAJCQkJCQlrZXlDb2RlIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJbW9kaWZpZXJzIDsg
IAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2hyICAodm9pZCkgeyByZXR1cm4gIDAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9rZXlDb2RlICAodm9pZCkgeyByZXR1cm4gIDIgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tb2RpZmllcnMgICh2b2lkKSB7IHJldHVybiAgNCA7
IH0gIAl9OyAJY2xhc3MgRW1Qcm94eWtleURvd24gIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBw
dHJfdHlwZTsJRW1Qcm94eWtleURvd24gIAkodm9pZCk7CUVtUHJveHlrZXlEb3duICAJKGNvbnN0
IEVtUHJveHlrZXlEb3duICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0
dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9p
ZCkJCQl7IHJldHVybiAgICAgNiAgOyB9CUVtUHJveHlrZXlEb3duICAmCQlvcGVyYXRvcj0gKGNv
bnN0IEVtUHJveHlrZXlEb3duICAmKTsJRW1BbGlhc2tleURvd24gIDxMQVM+CW9wZXJhdG9yW10g
KGludCk7CWNvbnN0IEVtQWxpYXNrZXlEb3duICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0
Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA2ICBdOwl9IGZMb2NhbERhdGE7
CXB1YmxpYzoJICAgICBFbUFsaWFzV0NoYXIgPExBUz4JIAkJCQkJCWNociA7IAkgRW1BbGlhc1VJ
bnQxNiA8TEFTPgkgCQkJCQkJa2V5Q29kZSA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJ
bW9kaWZpZXJzIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2hyICAodm9pZCkgeyBy
ZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9rZXlDb2RlICAodm9pZCkgeyBy
ZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tb2RpZmllcnMgICh2b2lkKSB7
IHJldHVybiAgNCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFz
d2luRW50ZXIgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlw
ZTsJRW1BbGlhc3dpbkVudGVyICAJKHB0cl90eXBlKTsJRW1BbGlhc3dpbkVudGVyICAJKGNvbnN0
IEVtQWxpYXN3aW5FbnRlciAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJl
dHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAg
IDggIDsgfQlFbUFsaWFzd2luRW50ZXIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzd2lu
RW50ZXIgIDxBPiYpOwlFbUFsaWFzd2luRW50ZXIgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25z
dCBFbUFsaWFzd2luRW50ZXIgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglF
bUFsaWFzd2luRW50ZXIgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVt
QWxpYXNlbXVwdHIgPEE+CSAJCQkJCQllbnRlcldpbmRvdyA7IAkgRW1BbGlhc2VtdXB0ciA8QT4J
IAkJCQkJCWV4aXRXaW5kb3cgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9lbnRlcldp
bmRvdyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXhp
dFdpbmRvdyAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAgCX07IAljbGFzcyBFbVByb3h5d2luRW50
ZXIgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eXdpbkVudGVyICAJ
KHZvaWQpOwlFbVByb3h5d2luRW50ZXIgIAkoY29uc3QgRW1Qcm94eXdpbkVudGVyICAmKTsJcHRy
X3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERh
dGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgOCAgOyB9
CUVtUHJveHl3aW5FbnRlciAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5d2luRW50ZXIgICYp
OwlFbUFsaWFzd2luRW50ZXIgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXN3
aW5FbnRlciAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJ
Y2hhcgkJCV9ieXRlc1sgICAgOCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlh
c2VtdXB0ciA8TEFTPgkgCQkJCQkJZW50ZXJXaW5kb3cgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4J
IAkJCQkJCWV4aXRXaW5kb3cgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9lbnRlcldp
bmRvdyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXhp
dFdpbmRvdyAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNz
IEE+CWNsYXNzIEVtQWxpYXN3aW5FeGl0ICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6
cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXN3aW5FeGl0ICAJKHB0cl90eXBlKTsJRW1BbGlhc3dp
bkV4aXQgIAkoY29uc3QgRW1BbGlhc3dpbkV4aXQgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9p
ZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICA4ICA7IH0JRW1BbGlhc3dpbkV4aXQgIDxBPiYJb3BlcmF0b3I9IChjb25z
dCBFbUFsaWFzd2luRXhpdCAgPEE+Jik7CUVtQWxpYXN3aW5FeGl0ICA8QT4Jb3BlcmF0b3JbXSAo
aW50KTsJY29uc3QgRW1BbGlhc3dpbkV4aXQgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglFbUFsaWFzd2luRXhpdCAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6
CSAgICAgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWVudGVyV2luZG93IDsgCSBFbUFsaWFzZW11
cHRyIDxBPgkgCQkJCQkJZXhpdFdpbmRvdyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2VudGVyV2luZG93ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9leGl0V2luZG93ICAodm9pZCkgeyByZXR1cm4gIDQgOyB9ICAJfTsgCWNsYXNzIEVtUHJv
eHl3aW5FeGl0ICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHl3aW5F
eGl0ICAJKHZvaWQpOwlFbVByb3h5d2luRXhpdCAgCShjb25zdCBFbVByb3h5d2luRXhpdCAgJik7
CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9j
YWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDgg
IDsgfQlFbVByb3h5d2luRXhpdCAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5d2luRXhpdCAg
Jik7CUVtQWxpYXN3aW5FeGl0ICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFz
d2luRXhpdCAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJ
Y2hhcgkJCV9ieXRlc1sgICAgOCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlh
c2VtdXB0ciA8TEFTPgkgCQkJCQkJZW50ZXJXaW5kb3cgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4J
IAkJCQkJCWV4aXRXaW5kb3cgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9lbnRlcldp
bmRvdyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXhp
dFdpbmRvdyAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNz
IEE+CWNsYXNzIEVtQWxpYXN0c21Db25maXJtICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUg
QTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXN0c21Db25maXJtICAJKHB0cl90eXBlKTsJRW1B
bGlhc3RzbUNvbmZpcm0gIAkoY29uc3QgRW1BbGlhc3RzbUNvbmZpcm0gICYpOwlwdHJfdHlwZQkJ
CUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRT
aXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA2ICA7IH0JRW1BbGlhc3RzbUNvbmZpcm0gIDxBPiYJ
b3BlcmF0b3I9IChjb25zdCBFbUFsaWFzdHNtQ29uZmlybSAgPEE+Jik7CUVtQWxpYXN0c21Db25m
aXJtICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc3RzbUNvbmZpcm0gIDxBPglv
cGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzdHNtQ29uZmlybSAgCSh2b2lk
KTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJ
CXlvbWlUZXh0IDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJZm9ybUlEIDsgIAkgICAgIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfeW9taVRleHQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2Zvcm1JRCAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAgCX07
IAljbGFzcyBFbVByb3h5dHNtQ29uZmlybSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90
eXBlOwlFbVByb3h5dHNtQ29uZmlybSAgCSh2b2lkKTsJRW1Qcm94eXRzbUNvbmZpcm0gIAkoY29u
c3QgRW1Qcm94eXRzbUNvbmZpcm0gICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJ
eyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXpl
CSh2b2lkKQkJCXsgcmV0dXJuICAgICA2ICA7IH0JRW1Qcm94eXRzbUNvbmZpcm0gICYJCW9wZXJh
dG9yPSAoY29uc3QgRW1Qcm94eXRzbUNvbmZpcm0gICYpOwlFbUFsaWFzdHNtQ29uZmlybSAgPExB
Uz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc3RzbUNvbmZpcm0gIDxMQVM+CW9wZXJh
dG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDYg
IF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJ
CXlvbWlUZXh0IDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlmb3JtSUQgOyAgCSAgICAg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl95b21pVGV4dCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZm9ybUlEICAodm9pZCkgeyByZXR1cm4gIDQgOyB9ICAJ
fTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc3RzbUZlcEJ1dHRvbiAgCXsJ
cHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzdHNt
RmVwQnV0dG9uICAJKHB0cl90eXBlKTsJRW1BbGlhc3RzbUZlcEJ1dHRvbiAgCShjb25zdCBFbUFs
aWFzdHNtRmVwQnV0dG9uICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0
dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAg
MiAgOyB9CUVtQWxpYXN0c21GZXBCdXR0b24gIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFz
dHNtRmVwQnV0dG9uICA8QT4mKTsJRW1BbGlhc3RzbUZlcEJ1dHRvbiAgPEE+CW9wZXJhdG9yW10g
KGludCk7CWNvbnN0IEVtQWxpYXN0c21GZXBCdXR0b24gIDxBPglvcGVyYXRvcltdIChpbnQpIGNv
bnN0Owlwcml2YXRlOglFbUFsaWFzdHNtRmVwQnV0dG9uICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQ
dHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJYnV0dG9uSUQgOyAgCSAg
ICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9idXR0b25JRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsg
fSAgCX07IAljbGFzcyBFbVByb3h5dHNtRmVwQnV0dG9uICAJewlwdWJsaWM6CXR5cGVkZWYgdm9p
ZCogcHRyX3R5cGU7CUVtUHJveHl0c21GZXBCdXR0b24gIAkodm9pZCk7CUVtUHJveHl0c21GZXBC
dXR0b24gIAkoY29uc3QgRW1Qcm94eXRzbUZlcEJ1dHRvbiAgJik7CXB0cl90eXBlCQkJR2V0UHRy
CSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBz
aXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlFbVByb3h5dHNtRmVw
QnV0dG9uICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHl0c21GZXBCdXR0b24gICYpOwlFbUFs
aWFzdHNtRmVwQnV0dG9uICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzdHNt
RmVwQnV0dG9uICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3Qg
ewljaGFyCQkJX2J5dGVzWyAgICAyICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFs
aWFzVUludDE2IDxMQVM+CSAJCQkJCQlidXR0b25JRCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2J1dHRvbklEICAodm9pZCkgeyByZXR1cm4gIDAgOyB9ICAJfTsgICAJICB0ZW1wbGF0
ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc3RzbUZlcE1vZGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0
eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc3RzbUZlcE1vZGUgIAkocHRyX3R5
cGUpOwlFbUFsaWFzdHNtRmVwTW9kZSAgCShjb25zdCBFbUFsaWFzdHNtRmVwTW9kZSAgJik7CXB0
cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXpl
X3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlFbUFsaWFzdHNtRmVwTW9k
ZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXN0c21GZXBNb2RlICA8QT4mKTsJRW1BbGlh
c3RzbUZlcE1vZGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzdHNtRmVwTW9k
ZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXN0c21GZXBNb2Rl
ICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxB
PgkgCQkJCQkJbW9kZSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21vZGUgICh2b2lk
KSB7IHJldHVybiAgMCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eXRzbUZlcE1vZGUgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eXRzbUZlcE1vZGUgIAkodm9pZCk7CUVt
UHJveHl0c21GZXBNb2RlICAJKGNvbnN0IEVtUHJveHl0c21GZXBNb2RlICAmKTsJcHRyX3R5cGUJ
CQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0J
c3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMiAgOyB9CUVtUHJv
eHl0c21GZXBNb2RlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHl0c21GZXBNb2RlICAmKTsJ
RW1BbGlhc3RzbUZlcE1vZGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXN0
c21GZXBNb2RlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3Qg
ewljaGFyCQkJX2J5dGVzWyAgICAyICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFs
aWFzVUludDE2IDxMQVM+CSAJCQkJCQltb2RlIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfbW9kZSAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNz
IEE+CWNsYXNzIEVtQWxpYXNjdGxFbnRlciAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6
OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzY3RsRW50ZXIgIAkocHRyX3R5cGUpOwlFbUFsaWFz
Y3RsRW50ZXIgIAkoY29uc3QgRW1BbGlhc2N0bEVudGVyICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJ
KHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9p
ZCkJCQl7IHJldHVybiAgICAgNiAgOyB9CUVtQWxpYXNjdGxFbnRlciAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IEVtQWxpYXNjdGxFbnRlciAgPEE+Jik7CUVtQWxpYXNjdGxFbnRlciAgPEE+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNjdGxFbnRlciAgPEE+CW9wZXJhdG9yW10gKGludCkg
Y29uc3Q7CXByaXZhdGU6CUVtQWxpYXNjdGxFbnRlciAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRy
OwlwdWJsaWM6CSAgICAgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJY29udHJvbElEIDsgCSBFbUFs
aWFzZW11cHRyIDxBPgkgCQkJCQkJcENvbnRyb2wgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9jb250cm9sSUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3BDb250cm9sICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgCWNsYXNzIEVtUHJv
eHljdGxFbnRlciAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5Y3Rs
RW50ZXIgIAkodm9pZCk7CUVtUHJveHljdGxFbnRlciAgCShjb25zdCBFbVByb3h5Y3RsRW50ZXIg
ICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAm
ZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAg
ICA2ICA7IH0JRW1Qcm94eWN0bEVudGVyICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHljdGxF
bnRlciAgJik7CUVtQWxpYXNjdGxFbnRlciAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3Qg
RW1BbGlhc2N0bEVudGVyICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglz
dHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA2ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAg
ICBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWNvbnRyb2xJRCA7IAkgRW1BbGlhc2VtdXB0ciA8
TEFTPgkgCQkJCQkJcENvbnRyb2wgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb250
cm9sSUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BD
b250cm9sICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3Mg
QT4JY2xhc3MgRW1BbGlhc2N0bFNlbGVjdCAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6
OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzY3RsU2VsZWN0ICAJKHB0cl90eXBlKTsJRW1BbGlh
c2N0bFNlbGVjdCAgCShjb25zdCBFbUFsaWFzY3RsU2VsZWN0ICAmKTsJcHRyX3R5cGUJCQlHZXRQ
dHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQko
dm9pZCkJCQl7IHJldHVybiAgICAgMTAgIDsgfQlFbUFsaWFzY3RsU2VsZWN0ICA8QT4mCW9wZXJh
dG9yPSAoY29uc3QgRW1BbGlhc2N0bFNlbGVjdCAgPEE+Jik7CUVtQWxpYXNjdGxTZWxlY3QgIDxB
PglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzY3RsU2VsZWN0ICA8QT4Jb3BlcmF0b3Jb
XSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc2N0bFNlbGVjdCAgCSh2b2lkKTsJcHRyX3R5
cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJY29udHJvbElE
IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJcENvbnRyb2wgOyAJIEVtQWxpYXNCb29sZWFu
IDxBPgkgCQkJCQlvbiA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJcmVzZXJ2ZWQxIDsgCSBF
bUFsaWFzVUludDE2IDxBPgkgCQkJCQkJdmFsdWUgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9jb250cm9sSUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3BDb250cm9sICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9vbiAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfcmVzZXJ2ZWQxICAodm9pZCkgeyByZXR1cm4gIDcgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl92YWx1ZSAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAgCX07IAljbGFzcyBFbVByb3h5Y3Rs
U2VsZWN0ICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHljdGxTZWxl
Y3QgIAkodm9pZCk7CUVtUHJveHljdGxTZWxlY3QgIAkoY29uc3QgRW1Qcm94eWN0bFNlbGVjdCAg
Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZm
TG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAg
IDEwICA7IH0JRW1Qcm94eWN0bFNlbGVjdCAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5Y3Rs
U2VsZWN0ICAmKTsJRW1BbGlhc2N0bFNlbGVjdCAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29u
c3QgRW1BbGlhc2N0bFNlbGVjdCAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0
ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMTAgIF07CX0gZkxvY2FsRGF0YTsJcHVibGlj
OgkgICAgIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJY29udHJvbElEIDsgCSBFbUFsaWFzZW11
cHRyIDxMQVM+CSAJCQkJCQlwQ29udHJvbCA7IAkgRW1BbGlhc0Jvb2xlYW4gPExBUz4JIAkJCQkJ
b24gOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJcmVzZXJ2ZWQxIDsgCSBFbUFsaWFzVUlu
dDE2IDxMQVM+CSAJCQkJCQl2YWx1ZSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Nv
bnRyb2xJRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
cENvbnRyb2wgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X29uICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNl
cnZlZDEgICh2b2lkKSB7IHJldHVybiAgNyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Zh
bHVlICAodm9pZCkgeyByZXR1cm4gIDggOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4J
Y2xhc3MgRW1BbGlhc2N0bFJlcGVhdCAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0
cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzY3RsUmVwZWF0ICAJKHB0cl90eXBlKTsJRW1BbGlhc2N0
bFJlcGVhdCAgCShjb25zdCBFbUFsaWFzY3RsUmVwZWF0ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJ
KHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9p
ZCkJCQl7IHJldHVybiAgICAgMTIgIDsgfQlFbUFsaWFzY3RsUmVwZWF0ICA8QT4mCW9wZXJhdG9y
PSAoY29uc3QgRW1BbGlhc2N0bFJlcGVhdCAgPEE+Jik7CUVtQWxpYXNjdGxSZXBlYXQgIDxBPglv
cGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzY3RsUmVwZWF0ICA8QT4Jb3BlcmF0b3JbXSAo
aW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc2N0bFJlcGVhdCAgCSh2b2lkKTsJcHRyX3R5cGUJ
CQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJY29udHJvbElEIDsg
CSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJcENvbnRyb2wgOyAJIEVtQWxpYXNVSW50MzIgPEE+
CSAJCQkJCQl0aW1lIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJdmFsdWUgOyAgCSAgICAg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb250cm9sSUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BDb250cm9sICAodm9pZCkgeyByZXR1cm4gIDIgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90aW1lICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl92YWx1ZSAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gIAl9
OyAJY2xhc3MgRW1Qcm94eWN0bFJlcGVhdCAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90
eXBlOwlFbVByb3h5Y3RsUmVwZWF0ICAJKHZvaWQpOwlFbVByb3h5Y3RsUmVwZWF0ICAJKGNvbnN0
IEVtUHJveHljdGxSZXBlYXQgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2
b2lkKQkJCXsgcmV0dXJuICAgICAxMiAgOyB9CUVtUHJveHljdGxSZXBlYXQgICYJCW9wZXJhdG9y
PSAoY29uc3QgRW1Qcm94eWN0bFJlcGVhdCAgJik7CUVtQWxpYXNjdGxSZXBlYXQgIDxMQVM+CW9w
ZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNjdGxSZXBlYXQgIDxMQVM+CW9wZXJhdG9yW10g
KGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDEyICBdOwl9
IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWNvbnRy
b2xJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJcENvbnRyb2wgOyAJIEVtQWxpYXNV
SW50MzIgPExBUz4JIAkJCQkJCXRpbWUgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXZh
bHVlIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29udHJvbElEICAodm9pZCkgeyBy
ZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wQ29udHJvbCAgKHZvaWQpIHsg
cmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGltZSAgKHZvaWQpIHsgcmV0
dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdmFsdWUgICh2b2lkKSB7IHJldHVy
biAgMTAgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc2N0bEV4
aXQgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1B
bGlhc2N0bEV4aXQgIAkocHRyX3R5cGUpOwlFbUFsaWFzY3RsRXhpdCAgCShjb25zdCBFbUFsaWFz
Y3RsRXhpdCAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRy
OyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDYgIDsgfQlF
bUFsaWFzY3RsRXhpdCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNjdGxFeGl0ICA8QT4m
KTsJRW1BbGlhc2N0bEV4aXQgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzY3Rs
RXhpdCAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNjdGxFeGl0
ICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzSW50MTYgPEE+
CSAJCQkJCQljb250cm9sSUQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlwQ29udHJvbCA7
ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbnRyb2xJRCAgKHZvaWQpIHsgcmV0dXJu
ICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcENvbnRyb2wgICh2b2lkKSB7IHJldHVy
biAgMiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eWN0bEV4aXQgIAl7CXB1YmxpYzoJdHlwZWRlZiB2
b2lkKiBwdHJfdHlwZTsJRW1Qcm94eWN0bEV4aXQgIAkodm9pZCk7CUVtUHJveHljdGxFeGl0ICAJ
KGNvbnN0IEVtUHJveHljdGxFeGl0ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0
CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6
ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNiAgOyB9CUVtUHJveHljdGxFeGl0ICAmCQlvcGVyYXRv
cj0gKGNvbnN0IEVtUHJveHljdGxFeGl0ICAmKTsJRW1BbGlhc2N0bEV4aXQgIDxMQVM+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNjdGxFeGl0ICA8TEFTPglvcGVyYXRvcltdIChpbnQp
IGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA2ICBdOwl9IGZMb2Nh
bERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWNvbnRyb2xJRCA7
IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJcENvbnRyb2wgOyAgCSAgICAgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9jb250cm9sSUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3BDb250cm9sICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgICAJ
ICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc2ZsZEVudGVyICAJewlwdWJsaWM6CXR5
cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNmbGRFbnRlciAgCShw
dHJfdHlwZSk7CUVtQWxpYXNmbGRFbnRlciAgCShjb25zdCBFbUFsaWFzZmxkRW50ZXIgICYpOwlw
dHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6
ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA2ICA7IH0JRW1BbGlhc2ZsZEVudGVy
ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc2ZsZEVudGVyICA8QT4mKTsJRW1BbGlhc2Zs
ZEVudGVyICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc2ZsZEVudGVyICA8QT4J
b3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc2ZsZEVudGVyICAJKHZvaWQp
OwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJ
ZmllbGRJRCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXBGaWVsZCA7ICAJICAgICBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2ZpZWxkSUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3BGaWVsZCAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAgCX07IAlj
bGFzcyBFbVByb3h5ZmxkRW50ZXIgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJ
RW1Qcm94eWZsZEVudGVyICAJKHZvaWQpOwlFbVByb3h5ZmxkRW50ZXIgIAkoY29uc3QgRW1Qcm94
eWZsZEVudGVyICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChw
dHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7
IHJldHVybiAgICAgNiAgOyB9CUVtUHJveHlmbGRFbnRlciAgJgkJb3BlcmF0b3I9IChjb25zdCBF
bVByb3h5ZmxkRW50ZXIgICYpOwlFbUFsaWFzZmxkRW50ZXIgIDxMQVM+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNmbGRFbnRlciAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJ
cHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgNiAgXTsJfSBmTG9jYWxEYXRhOwlw
dWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJZmllbGRJRCA7IAkgRW1BbGlh
c2VtdXB0ciA8TEFTPgkgCQkJCQkJcEZpZWxkIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZmllbGRJRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfcEZpZWxkICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xh
c3MgQT4JY2xhc3MgRW1BbGlhc2ZsZEhlaWdodENoYW5nZWQgIAl7CXB1YmxpYzoJdHlwZWRlZiB0
eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc2ZsZEhlaWdodENoYW5nZWQgIAko
cHRyX3R5cGUpOwlFbUFsaWFzZmxkSGVpZ2h0Q2hhbmdlZCAgCShjb25zdCBFbUFsaWFzZmxkSGVp
Z2h0Q2hhbmdlZCAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBm
UHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDEwICA7
IH0JRW1BbGlhc2ZsZEhlaWdodENoYW5nZWQgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFz
ZmxkSGVpZ2h0Q2hhbmdlZCAgPEE+Jik7CUVtQWxpYXNmbGRIZWlnaHRDaGFuZ2VkICA8QT4Jb3Bl
cmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc2ZsZEhlaWdodENoYW5nZWQgIDxBPglvcGVyYXRv
cltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzZmxkSGVpZ2h0Q2hhbmdlZCAgCSh2b2lk
KTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJ
CWZpZWxkSUQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlwRmllbGQgOyAJIEVtQWxpYXNJ
bnQxNiA8QT4JIAkJCQkJCW5ld0hlaWdodCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWN1
cnJlbnRQb3MgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9maWVsZElEICAodm9pZCkg
eyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wRmllbGQgICh2b2lkKSB7
IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25ld0hlaWdodCAgKHZvaWQp
IHsgcmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY3VycmVudFBvcyAgKHZv
aWQpIHsgcmV0dXJuICA4IDsgfSAgCX07IAljbGFzcyBFbVByb3h5ZmxkSGVpZ2h0Q2hhbmdlZCAg
CXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5ZmxkSGVpZ2h0Q2hhbmdl
ZCAgCSh2b2lkKTsJRW1Qcm94eWZsZEhlaWdodENoYW5nZWQgIAkoY29uc3QgRW1Qcm94eWZsZEhl
aWdodENoYW5nZWQgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4g
KHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICAxMCAgOyB9CUVtUHJveHlmbGRIZWlnaHRDaGFuZ2VkICAmCQlvcGVyYXRv
cj0gKGNvbnN0IEVtUHJveHlmbGRIZWlnaHRDaGFuZ2VkICAmKTsJRW1BbGlhc2ZsZEhlaWdodENo
YW5nZWQgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNmbGRIZWlnaHRDaGFu
Z2VkICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFy
CQkJX2J5dGVzWyAgICAxMCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJ
bnQxNiA8TEFTPgkgCQkJCQkJZmllbGRJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJ
cEZpZWxkIDsgCSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCW5ld0hlaWdodCA7IAkgRW1BbGlh
c1VJbnQxNiA8TEFTPgkgCQkJCQkJY3VycmVudFBvcyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2ZpZWxkSUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3BGaWVsZCAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfbmV3SGVpZ2h0ICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9jdXJyZW50UG9zICAodm9pZCkgeyByZXR1cm4gIDggOyB9ICAJfTsgICAJICB0ZW1w
bGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc2ZsZENoYW5nZWQgIAl7CXB1YmxpYzoJdHlwZWRl
ZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc2ZsZENoYW5nZWQgIAkocHRy
X3R5cGUpOwlFbUFsaWFzZmxkQ2hhbmdlZCAgCShjb25zdCBFbUFsaWFzZmxkQ2hhbmdlZCAgJik7
CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBz
aXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDYgIDsgfQlFbUFsaWFzZmxkQ2hh
bmdlZCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNmbGRDaGFuZ2VkICA8QT4mKTsJRW1B
bGlhc2ZsZENoYW5nZWQgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzZmxkQ2hh
bmdlZCAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNmbGRDaGFu
Z2VkICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2
IDxBPgkgCQkJCQkJZmllbGRJRCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXBGaWVsZCA7
ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZpZWxkSUQgICh2b2lkKSB7IHJldHVybiAg
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BGaWVsZCAgKHZvaWQpIHsgcmV0dXJuICAy
IDsgfSAgCX07IAljbGFzcyBFbVByb3h5ZmxkQ2hhbmdlZCAgCXsJcHVibGljOgl0eXBlZGVmIHZv
aWQqIHB0cl90eXBlOwlFbVByb3h5ZmxkQ2hhbmdlZCAgCSh2b2lkKTsJRW1Qcm94eWZsZENoYW5n
ZWQgIAkoY29uc3QgRW1Qcm94eWZsZENoYW5nZWQgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9p
ZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90
CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA2ICA7IH0JRW1Qcm94eWZsZENoYW5nZWQg
ICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eWZsZENoYW5nZWQgICYpOwlFbUFsaWFzZmxkQ2hh
bmdlZCAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc2ZsZENoYW5nZWQgIDxM
QVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0
ZXNbICAgIDYgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPExB
Uz4JIAkJCQkJCWZpZWxkSUQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXBGaWVsZCA7
ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZpZWxkSUQgICh2b2lkKSB7IHJldHVybiAg
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BGaWVsZCAgKHZvaWQpIHsgcmV0dXJuICAy
IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNmbGRFeGl0ICAJ
ewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNm
bGRFeGl0ICAJKHB0cl90eXBlKTsJRW1BbGlhc2ZsZEV4aXQgIAkoY29uc3QgRW1BbGlhc2ZsZEV4
aXQgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlz
dGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA2ICA7IH0JRW1BbGlh
c2ZsZEV4aXQgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzZmxkRXhpdCAgPEE+Jik7CUVt
QWxpYXNmbGRFeGl0ICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc2ZsZEV4aXQg
IDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzZmxkRXhpdCAgCSh2
b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJ
CQkJCWZpZWxkSUQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlwRmllbGQgOyAgCSAgICAg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9maWVsZElEICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9wRmllbGQgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gIAl9
OyAJY2xhc3MgRW1Qcm94eWZsZEV4aXQgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlw
ZTsJRW1Qcm94eWZsZEV4aXQgIAkodm9pZCk7CUVtUHJveHlmbGRFeGl0ICAJKGNvbnN0IEVtUHJv
eHlmbGRFeGl0ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChw
dHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7
IHJldHVybiAgICAgNiAgOyB9CUVtUHJveHlmbGRFeGl0ICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVt
UHJveHlmbGRFeGl0ICAmKTsJRW1BbGlhc2ZsZEV4aXQgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7
CWNvbnN0IEVtQWxpYXNmbGRFeGl0ICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2
YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA2ICBdOwl9IGZMb2NhbERhdGE7CXB1Ymxp
YzoJICAgICBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlmaWVsZElEIDsgCSBFbUFsaWFzZW11
cHRyIDxMQVM+CSAJCQkJCQlwRmllbGQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9m
aWVsZElEICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9w
RmllbGQgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBB
PgljbGFzcyBFbUFsaWFzbHN0RW50ZXIgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpw
dHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc2xzdEVudGVyICAJKHB0cl90eXBlKTsJRW1BbGlhc2xz
dEVudGVyICAJKGNvbnN0IEVtQWxpYXNsc3RFbnRlciAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2
b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQp
CQkJeyByZXR1cm4gICAgIDggIDsgfQlFbUFsaWFzbHN0RW50ZXIgIDxBPiYJb3BlcmF0b3I9IChj
b25zdCBFbUFsaWFzbHN0RW50ZXIgIDxBPiYpOwlFbUFsaWFzbHN0RW50ZXIgIDxBPglvcGVyYXRv
cltdIChpbnQpOwljb25zdCBFbUFsaWFzbHN0RW50ZXIgIDxBPglvcGVyYXRvcltdIChpbnQpIGNv
bnN0Owlwcml2YXRlOglFbUFsaWFzbHN0RW50ZXIgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJ
cHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlsaXN0SUQgOyAJIEVtQWxpYXNl
bXVwdHIgPEE+CSAJCQkJCQlwTGlzdCA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJc2VsZWN0
aW9uIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbGlzdElEICAodm9pZCkgeyByZXR1
cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wTGlzdCAgKHZvaWQpIHsgcmV0dXJu
ICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2VsZWN0aW9uICAodm9pZCkgeyByZXR1
cm4gIDYgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlsc3RFbnRlciAgCXsJcHVibGljOgl0eXBlZGVm
IHZvaWQqIHB0cl90eXBlOwlFbVByb3h5bHN0RW50ZXIgIAkodm9pZCk7CUVtUHJveHlsc3RFbnRl
ciAgCShjb25zdCBFbVByb3h5bHN0RW50ZXIgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkg
Y29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlH
ZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA4ICA7IH0JRW1Qcm94eWxzdEVudGVyICAmCQlv
cGVyYXRvcj0gKGNvbnN0IEVtUHJveHlsc3RFbnRlciAgJik7CUVtQWxpYXNsc3RFbnRlciAgPExB
Uz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc2xzdEVudGVyICA8TEFTPglvcGVyYXRv
cltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA4ICBd
Owl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQls
aXN0SUQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXBMaXN0IDsgCSBFbUFsaWFzSW50
MTYgPExBUz4JIAkJCQkJCXNlbGVjdGlvbiA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2xpc3RJRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
cExpc3QgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Nl
bGVjdGlvbiAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNz
IEE+CWNsYXNzIEVtQWxpYXNsc3RFeGl0ICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6
cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNsc3RFeGl0ICAJKHB0cl90eXBlKTsJRW1BbGlhc2xz
dEV4aXQgIAkoY29uc3QgRW1BbGlhc2xzdEV4aXQgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9p
ZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICA2ICA7IH0JRW1BbGlhc2xzdEV4aXQgIDxBPiYJb3BlcmF0b3I9IChjb25z
dCBFbUFsaWFzbHN0RXhpdCAgPEE+Jik7CUVtQWxpYXNsc3RFeGl0ICA8QT4Jb3BlcmF0b3JbXSAo
aW50KTsJY29uc3QgRW1BbGlhc2xzdEV4aXQgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglFbUFsaWFzbHN0RXhpdCAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6
CSAgICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWxpc3RJRCA7IAkgRW1BbGlhc2VtdXB0ciA8
QT4JIAkJCQkJCXBMaXN0IDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbGlzdElEICAo
dm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wTGlzdCAgKHZv
aWQpIHsgcmV0dXJuICAyIDsgfSAgCX07IAljbGFzcyBFbVByb3h5bHN0RXhpdCAgCXsJcHVibGlj
Ogl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5bHN0RXhpdCAgCSh2b2lkKTsJRW1Qcm94
eWxzdEV4aXQgIAkoY29uc3QgRW1Qcm94eWxzdEV4aXQgICYpOwlwdHJfdHlwZQkJCUdldFB0cgko
dm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6
ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA2ICA7IH0JRW1Qcm94eWxzdEV4aXQg
ICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eWxzdEV4aXQgICYpOwlFbUFsaWFzbHN0RXhpdCAg
PExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc2xzdEV4aXQgIDxMQVM+CW9wZXJh
dG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDYg
IF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJ
CWxpc3RJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJcExpc3QgOyAgCSAgICAgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9saXN0SUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3BMaXN0ICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgICAJ
ICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc2xzdFNlbGVjdCAgCXsJcHVibGljOgl0
eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzbHN0U2VsZWN0ICAJ
KHB0cl90eXBlKTsJRW1BbGlhc2xzdFNlbGVjdCAgCShjb25zdCBFbUFsaWFzbHN0U2VsZWN0ICAm
KTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgOCAgOyB9CUVtQWxpYXNsc3RT
ZWxlY3QgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzbHN0U2VsZWN0ICA8QT4mKTsJRW1B
bGlhc2xzdFNlbGVjdCAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNsc3RTZWxl
Y3QgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzbHN0U2VsZWN0
ICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxB
PgkgCQkJCQkJbGlzdElEIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJcExpc3QgOyAJIEVt
QWxpYXNJbnQxNiA8QT4JIAkJCQkJCXNlbGVjdGlvbiA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2xpc3RJRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfcExpc3QgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3NlbGVjdGlvbiAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAgCX07IAljbGFzcyBFbVByb3h5
bHN0U2VsZWN0ICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlsc3RT
ZWxlY3QgIAkodm9pZCk7CUVtUHJveHlsc3RTZWxlY3QgIAkoY29uc3QgRW1Qcm94eWxzdFNlbGVj
dCAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUp
ICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4g
ICAgIDggIDsgfQlFbVByb3h5bHN0U2VsZWN0ICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHls
c3RTZWxlY3QgICYpOwlFbUFsaWFzbHN0U2VsZWN0ICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwlj
b25zdCBFbUFsaWFzbHN0U2VsZWN0ICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2
YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA4ICBdOwl9IGZMb2NhbERhdGE7CXB1Ymxp
YzoJICAgICBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlsaXN0SUQgOyAJIEVtQWxpYXNlbXVw
dHIgPExBUz4JIAkJCQkJCXBMaXN0IDsgCSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCXNlbGVj
dGlvbiA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xpc3RJRCAgKHZvaWQpIHsgcmV0
dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcExpc3QgICh2b2lkKSB7IHJldHVy
biAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NlbGVjdGlvbiAgKHZvaWQpIHsgcmV0
dXJuICA2IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXN0YmxF
bnRlciAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlF
bUFsaWFzdGJsRW50ZXIgIAkocHRyX3R5cGUpOwlFbUFsaWFzdGJsRW50ZXIgIAkoY29uc3QgRW1B
bGlhc3RibEVudGVyICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJu
IGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTAg
IDsgfQlFbUFsaWFzdGJsRW50ZXIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzdGJsRW50
ZXIgIDxBPiYpOwlFbUFsaWFzdGJsRW50ZXIgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBF
bUFsaWFzdGJsRW50ZXIgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFs
aWFzdGJsRW50ZXIgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxp
YXNVSW50MTYgPEE+CSAJCQkJCQl0YWJsZUlEIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJ
cFRhYmxlIDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQlyb3cgOyAJIEVtQWxpYXNJbnQxNiA8
QT4JIAkJCQkJCWNvbHVtbiA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RhYmxlSUQg
ICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BUYWJsZSAg
KHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfcm93ICAodm9p
ZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb2x1bW4gICh2b2lk
KSB7IHJldHVybiAgOCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eXRibEVudGVyICAJewlwdWJsaWM6
CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHl0YmxFbnRlciAgCSh2b2lkKTsJRW1Qcm94
eXRibEVudGVyICAJKGNvbnN0IEVtUHJveHl0YmxFbnRlciAgJik7CXB0cl90eXBlCQkJR2V0UHRy
CSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBz
aXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDEwICA7IH0JRW1Qcm94eXRibEVu
dGVyICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHl0YmxFbnRlciAgJik7CUVtQWxpYXN0YmxF
bnRlciAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc3RibEVudGVyICA8TEFT
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVz
WyAgICAxMCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFT
PgkgCQkJCQkJdGFibGVJRCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJcFRhYmxlIDsg
CSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCXJvdyA7IAkgRW1BbGlhc0ludDE2IDxMQVM+CSAJ
CQkJCQljb2x1bW4gOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90YWJsZUlEICAodm9p
ZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wVGFibGUgICh2b2lk
KSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JvdyAgKHZvaWQpIHsg
cmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29sdW1uICAodm9pZCkgeyBy
ZXR1cm4gIDggOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc3Ri
bEV4aXQgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJ
RW1BbGlhc3RibEV4aXQgIAkocHRyX3R5cGUpOwlFbUFsaWFzdGJsRXhpdCAgCShjb25zdCBFbUFs
aWFzdGJsRXhpdCAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBm
UHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDEwICA7
IH0JRW1BbGlhc3RibEV4aXQgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzdGJsRXhpdCAg
PEE+Jik7CUVtQWxpYXN0YmxFeGl0ICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlh
c3RibEV4aXQgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzdGJs
RXhpdCAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQx
NiA8QT4JIAkJCQkJCXRhYmxlSUQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlwVGFibGUg
OyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJCXJvdyA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJ
CQkJY29sdW1uIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGFibGVJRCAgKHZvaWQp
IHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcFRhYmxlICAodm9pZCkg
eyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yb3cgICh2b2lkKSB7IHJl
dHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbHVtbiAgKHZvaWQpIHsgcmV0
dXJuICA4IDsgfSAgCX07IAljbGFzcyBFbVByb3h5dGJsRXhpdCAgCXsJcHVibGljOgl0eXBlZGVm
IHZvaWQqIHB0cl90eXBlOwlFbVByb3h5dGJsRXhpdCAgCSh2b2lkKTsJRW1Qcm94eXRibEV4aXQg
IAkoY29uc3QgRW1Qcm94eXRibEV4aXQgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29u
c3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRT
aXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAxMCAgOyB9CUVtUHJveHl0YmxFeGl0ICAmCQlvcGVy
YXRvcj0gKGNvbnN0IEVtUHJveHl0YmxFeGl0ICAmKTsJRW1BbGlhc3RibEV4aXQgIDxMQVM+CW9w
ZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXN0YmxFeGl0ICA8TEFTPglvcGVyYXRvcltdIChp
bnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAxMCAgXTsJfSBm
TG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJdGFibGVJ
RCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJcFRhYmxlIDsgCSBFbUFsaWFzSW50MTYg
PExBUz4JIAkJCQkJCXJvdyA7IAkgRW1BbGlhc0ludDE2IDxMQVM+CSAJCQkJCQljb2x1bW4gOyAg
CSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90YWJsZUlEICAodm9pZCkgeyByZXR1cm4gIDAg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wVGFibGUgICh2b2lkKSB7IHJldHVybiAgMiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JvdyAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29sdW1uICAodm9pZCkgeyByZXR1cm4gIDggOyB9ICAJ
fTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc3RibFNlbGVjdCAgCXsJcHVi
bGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzdGJsU2Vs
ZWN0ICAJKHB0cl90eXBlKTsJRW1BbGlhc3RibFNlbGVjdCAgCShjb25zdCBFbUFsaWFzdGJsU2Vs
ZWN0ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0J
c3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTAgIDsgfQlFbUFs
aWFzdGJsU2VsZWN0ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc3RibFNlbGVjdCAgPEE+
Jik7CUVtQWxpYXN0YmxTZWxlY3QgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFz
dGJsU2VsZWN0ICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc3Ri
bFNlbGVjdCAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJ
bnQxNiA8QT4JIAkJCQkJCXRhYmxlSUQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlwVGFi
bGUgOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJCXJvdyA7IAkgRW1BbGlhc0ludDE2IDxBPgkg
CQkJCQkJY29sdW1uIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGFibGVJRCAgKHZv
aWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcFRhYmxlICAodm9p
ZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yb3cgICh2b2lkKSB7
IHJldHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbHVtbiAgKHZvaWQpIHsg
cmV0dXJuICA4IDsgfSAgCX07IAljbGFzcyBFbVByb3h5dGJsU2VsZWN0ICAJewlwdWJsaWM6CXR5
cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHl0YmxTZWxlY3QgIAkodm9pZCk7CUVtUHJveHl0
YmxTZWxlY3QgIAkoY29uc3QgRW1Qcm94eXRibFNlbGVjdCAgJik7CXB0cl90eXBlCQkJR2V0UHRy
CSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBz
aXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDEwICA7IH0JRW1Qcm94eXRibFNl
bGVjdCAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5dGJsU2VsZWN0ICAmKTsJRW1BbGlhc3Ri
bFNlbGVjdCAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc3RibFNlbGVjdCAg
PExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9i
eXRlc1sgICAgMTAgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYg
PExBUz4JIAkJCQkJCXRhYmxlSUQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXBUYWJs
ZSA7IAkgRW1BbGlhc0ludDE2IDxMQVM+CSAJCQkJCQlyb3cgOyAJIEVtQWxpYXNJbnQxNiA8TEFT
PgkgCQkJCQkJY29sdW1uIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGFibGVJRCAg
KHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcFRhYmxlICAo
dm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yb3cgICh2b2lk
KSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NvbHVtbiAgKHZvaWQp
IHsgcmV0dXJuICA4IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxp
YXNmcm1Mb2FkICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5
cGU7CUVtQWxpYXNmcm1Mb2FkICAJKHB0cl90eXBlKTsJRW1BbGlhc2ZybUxvYWQgIAkoY29uc3Qg
RW1BbGlhc2ZybUxvYWQgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1
cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAy
ICA7IH0JRW1BbGlhc2ZybUxvYWQgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzZnJtTG9h
ZCAgPEE+Jik7CUVtQWxpYXNmcm1Mb2FkICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1B
bGlhc2ZybUxvYWQgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFz
ZnJtTG9hZCAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJ
bnQxNiA8QT4JIAkJCQkJCWZvcm1JRCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Zv
cm1JRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAgCX07IAljbGFzcyBFbVByb3h5ZnJtTG9hZCAg
CXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5ZnJtTG9hZCAgCSh2b2lk
KTsJRW1Qcm94eWZybUxvYWQgIAkoY29uc3QgRW1Qcm94eWZybUxvYWQgICYpOwlwdHJfdHlwZQkJ
CUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlz
dGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyICA7IH0JRW1Qcm94
eWZybUxvYWQgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eWZybUxvYWQgICYpOwlFbUFsaWFz
ZnJtTG9hZCAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc2ZybUxvYWQgIDxM
QVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0
ZXNbICAgIDIgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPExB
Uz4JIAkJCQkJCWZvcm1JRCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Zvcm1JRCAg
KHZvaWQpIHsgcmV0dXJuICAwIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNz
IEVtQWxpYXNmcm1PcGVuICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUg
cHRyX3R5cGU7CUVtQWxpYXNmcm1PcGVuICAJKHB0cl90eXBlKTsJRW1BbGlhc2ZybU9wZW4gIAko
Y29uc3QgRW1BbGlhc2ZybU9wZW4gICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJ
eyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJu
ICAgICAyICA7IH0JRW1BbGlhc2ZybU9wZW4gIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFz
ZnJtT3BlbiAgPEE+Jik7CUVtQWxpYXNmcm1PcGVuICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29u
c3QgRW1BbGlhc2ZybU9wZW4gIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglF
bUFsaWFzZnJtT3BlbiAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1B
bGlhc1VJbnQxNiA8QT4JIAkJCQkJCWZvcm1JRCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2Zvcm1JRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAgCX07IAljbGFzcyBFbVByb3h5ZnJt
T3BlbiAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5ZnJtT3BlbiAg
CSh2b2lkKTsJRW1Qcm94eWZybU9wZW4gIAkoY29uc3QgRW1Qcm94eWZybU9wZW4gICYpOwlwdHJf
dHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0
YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyICA7IH0J
RW1Qcm94eWZybU9wZW4gICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eWZybU9wZW4gICYpOwlF
bUFsaWFzZnJtT3BlbiAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc2ZybU9w
ZW4gIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJ
CQlfYnl0ZXNbICAgIDIgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50
MTYgPExBUz4JIAkJCQkJCWZvcm1JRCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Zv
cm1JRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+
CWNsYXNzIEVtQWxpYXNmcm1Hb3RvICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRy
X3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNmcm1Hb3RvICAJKHB0cl90eXBlKTsJRW1BbGlhc2ZybUdv
dG8gIAkoY29uc3QgRW1BbGlhc2ZybUdvdG8gICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkg
Y29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsg
cmV0dXJuICAgICAxNCAgOyB9CUVtQWxpYXNmcm1Hb3RvICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
RW1BbGlhc2ZybUdvdG8gIDxBPiYpOwlFbUFsaWFzZnJtR290byAgPEE+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNmcm1Hb3RvICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJp
dmF0ZToJRW1BbGlhc2ZybUdvdG8gIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkg
ICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlmb3JtSUQgOyAJIEVtQWxpYXNVSW50MTYgPEE+
CSAJCQkJCQlyZWNvcmROdW0gOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQltYXRjaFBvcyA7
IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCW1hdGNoTGVuIDsgCSBFbUFsaWFzVUludDE2IDxB
PgkgCQkJCQkJbWF0Y2hGaWVsZE51bSA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCW1hdGNo
Q3VzdG9tIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZm9ybUlEICAodm9pZCkgeyBy
ZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZWNvcmROdW0gICh2b2lkKSB7
IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21hdGNoUG9zICAodm9pZCkg
eyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tYXRjaExlbiAgKHZvaWQp
IHsgcmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbWF0Y2hGaWVsZE51bSAg
KHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbWF0Y2hDdXN0
b20gICh2b2lkKSB7IHJldHVybiAgMTAgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlmcm1Hb3RvICAJ
ewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlmcm1Hb3RvICAJKHZvaWQp
OwlFbVByb3h5ZnJtR290byAgCShjb25zdCBFbVByb3h5ZnJtR290byAgJik7CXB0cl90eXBlCQkJ
R2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0
YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDE0ICA7IH0JRW1Qcm94
eWZybUdvdG8gICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eWZybUdvdG8gICYpOwlFbUFsaWFz
ZnJtR290byAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc2ZybUdvdG8gIDxM
QVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0
ZXNbICAgIDE0ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxM
QVM+CSAJCQkJCQlmb3JtSUQgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXJlY29yZE51
bSA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJbWF0Y2hQb3MgOyAJIEVtQWxpYXNVSW50
MTYgPExBUz4JIAkJCQkJCW1hdGNoTGVuIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlt
YXRjaEZpZWxkTnVtIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQltYXRjaEN1c3RvbSA7
ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Zvcm1JRCAgKHZvaWQpIHsgcmV0dXJuICAw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVjb3JkTnVtICAodm9pZCkgeyByZXR1cm4g
IDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tYXRjaFBvcyAgKHZvaWQpIHsgcmV0dXJu
ICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbWF0Y2hMZW4gICh2b2lkKSB7IHJldHVy
biAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21hdGNoRmllbGROdW0gICh2b2lkKSB7
IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21hdGNoQ3VzdG9tICAodm9p
ZCkgeyByZXR1cm4gIDEwIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVt
QWxpYXNmcm1DbG9zZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0
cl90eXBlOwlFbUFsaWFzZnJtQ2xvc2UgIAkocHRyX3R5cGUpOwlFbUFsaWFzZnJtQ2xvc2UgIAko
Y29uc3QgRW1BbGlhc2ZybUNsb3NlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0
CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVy
biAgICAgMiAgOyB9CUVtQWxpYXNmcm1DbG9zZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxp
YXNmcm1DbG9zZSAgPEE+Jik7CUVtQWxpYXNmcm1DbG9zZSAgPEE+CW9wZXJhdG9yW10gKGludCk7
CWNvbnN0IEVtQWxpYXNmcm1DbG9zZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZh
dGU6CUVtQWxpYXNmcm1DbG9zZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAg
ICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWZvcm1JRCA7ICAJICAgICBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2Zvcm1JRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAgCX07IAljbGFzcyBFbVBy
b3h5ZnJtQ2xvc2UgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eWZy
bUNsb3NlICAJKHZvaWQpOwlFbVByb3h5ZnJtQ2xvc2UgIAkoY29uc3QgRW1Qcm94eWZybUNsb3Nl
ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkg
JmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAg
ICAgMiAgOyB9CUVtUHJveHlmcm1DbG9zZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5ZnJt
Q2xvc2UgICYpOwlFbUFsaWFzZnJtQ2xvc2UgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0
IEVtQWxpYXNmcm1DbG9zZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJ
c3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAg
ICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJZm9ybUlEIDsgIAkgICAgIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZm9ybUlEICAodm9pZCkgeyByZXR1cm4gIDAgOyB9ICAJfTsgICAJICB0ZW1w
bGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc2ZybVVwZGF0ZSAgCXsJcHVibGljOgl0eXBlZGVm
IHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzZnJtVXBkYXRlICAJKHB0cl90
eXBlKTsJRW1BbGlhc2ZybVVwZGF0ZSAgCShjb25zdCBFbUFsaWFzZnJtVXBkYXRlICAmKTsJcHRy
X3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVf
dAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNCAgOyB9CUVtQWxpYXNmcm1VcGRhdGUg
IDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzZnJtVXBkYXRlICA8QT4mKTsJRW1BbGlhc2Zy
bVVwZGF0ZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNmcm1VcGRhdGUgIDxB
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzZnJtVXBkYXRlICAJKHZv
aWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxBPgkgCQkJ
CQkJZm9ybUlEIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJdXBkYXRlQ29kZSA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Zvcm1JRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdXBkYXRlQ29kZSAgKHZvaWQpIHsgcmV0dXJuICAyIDsg
fSAgCX07IAljbGFzcyBFbVByb3h5ZnJtVXBkYXRlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCog
cHRyX3R5cGU7CUVtUHJveHlmcm1VcGRhdGUgIAkodm9pZCk7CUVtUHJveHlmcm1VcGRhdGUgIAko
Y29uc3QgRW1Qcm94eWZybVVwZGF0ZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25z
dAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNp
emUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDQgIDsgfQlFbVByb3h5ZnJtVXBkYXRlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IEVtUHJveHlmcm1VcGRhdGUgICYpOwlFbUFsaWFzZnJtVXBkYXRlICA8TEFT
PglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzZnJtVXBkYXRlICA8TEFTPglvcGVyYXRv
cltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA0ICBd
Owl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlm
b3JtSUQgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXVwZGF0ZUNvZGUgOyAgCSAgICAg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9mb3JtSUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3VwZGF0ZUNvZGUgICh2b2lkKSB7IHJldHVybiAgMiA7IH0g
IAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzZnJtVGl0bGVFbnRlciAg
CXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFz
ZnJtVGl0bGVFbnRlciAgCShwdHJfdHlwZSk7CUVtQWxpYXNmcm1UaXRsZUVudGVyICAJKGNvbnN0
IEVtQWxpYXNmcm1UaXRsZUVudGVyICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0
CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVy
biAgICAgMiAgOyB9CUVtQWxpYXNmcm1UaXRsZUVudGVyICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
RW1BbGlhc2ZybVRpdGxlRW50ZXIgIDxBPiYpOwlFbUFsaWFzZnJtVGl0bGVFbnRlciAgPEE+CW9w
ZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNmcm1UaXRsZUVudGVyICA8QT4Jb3BlcmF0b3Jb
XSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc2ZybVRpdGxlRW50ZXIgIAkodm9pZCk7CXB0
cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlmb3Jt
SUQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mb3JtSUQgICh2b2lkKSB7IHJldHVy
biAgMCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eWZybVRpdGxlRW50ZXIgIAl7CXB1YmxpYzoJdHlw
ZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eWZybVRpdGxlRW50ZXIgIAkodm9pZCk7CUVtUHJv
eHlmcm1UaXRsZUVudGVyICAJKGNvbnN0IEVtUHJveHlmcm1UaXRsZUVudGVyICAmKTsJcHRyX3R5
cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7
IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMiAgOyB9CUVt
UHJveHlmcm1UaXRsZUVudGVyICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlmcm1UaXRsZUVu
dGVyICAmKTsJRW1BbGlhc2ZybVRpdGxlRW50ZXIgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNv
bnN0IEVtQWxpYXNmcm1UaXRsZUVudGVyICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAyICBdOwl9IGZMb2NhbERhdGE7CXB1
YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlmb3JtSUQgOyAgCSAgICAgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9mb3JtSUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gIAl9OyAg
IAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzZnJtVGl0bGVTZWxlY3QgIAl7CXB1
YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc2ZybVRp
dGxlU2VsZWN0ICAJKHB0cl90eXBlKTsJRW1BbGlhc2ZybVRpdGxlU2VsZWN0ICAJKGNvbnN0IEVt
QWxpYXNmcm1UaXRsZVNlbGVjdCAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4g
ICAgIDIgIDsgfQlFbUFsaWFzZnJtVGl0bGVTZWxlY3QgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBF
bUFsaWFzZnJtVGl0bGVTZWxlY3QgIDxBPiYpOwlFbUFsaWFzZnJtVGl0bGVTZWxlY3QgIDxBPglv
cGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzZnJtVGl0bGVTZWxlY3QgIDxBPglvcGVyYXRv
cltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzZnJtVGl0bGVTZWxlY3QgIAkodm9pZCk7
CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlm
b3JtSUQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mb3JtSUQgICh2b2lkKSB7IHJl
dHVybiAgMCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eWZybVRpdGxlU2VsZWN0ICAJewlwdWJsaWM6
CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlmcm1UaXRsZVNlbGVjdCAgCSh2b2lkKTsJ
RW1Qcm94eWZybVRpdGxlU2VsZWN0ICAJKGNvbnN0IEVtUHJveHlmcm1UaXRsZVNlbGVjdCAgJik7
CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9j
YWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIg
IDsgfQlFbVByb3h5ZnJtVGl0bGVTZWxlY3QgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eWZy
bVRpdGxlU2VsZWN0ICAmKTsJRW1BbGlhc2ZybVRpdGxlU2VsZWN0ICA8TEFTPglvcGVyYXRvcltd
IChpbnQpOwljb25zdCBFbUFsaWFzZnJtVGl0bGVTZWxlY3QgIDxMQVM+CW9wZXJhdG9yW10gKGlu
dCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDIgIF07CX0gZkxv
Y2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWZvcm1JRCA7
ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Zvcm1JRCAgKHZvaWQpIHsgcmV0dXJuICAw
IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNhdHRuSW5kaWNh
dG9yRW50ZXIgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlw
ZTsJRW1BbGlhc2F0dG5JbmRpY2F0b3JFbnRlciAgCShwdHJfdHlwZSk7CUVtQWxpYXNhdHRuSW5k
aWNhdG9yRW50ZXIgIAkoY29uc3QgRW1BbGlhc2F0dG5JbmRpY2F0b3JFbnRlciAgJik7CXB0cl90
eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJ
CUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlFbUFsaWFzYXR0bkluZGljYXRv
ckVudGVyICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc2F0dG5JbmRpY2F0b3JFbnRlciAg
PEE+Jik7CUVtQWxpYXNhdHRuSW5kaWNhdG9yRW50ZXIgIDxBPglvcGVyYXRvcltdIChpbnQpOwlj
b25zdCBFbUFsaWFzYXR0bkluZGljYXRvckVudGVyICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25z
dDsJcHJpdmF0ZToJRW1BbGlhc2F0dG5JbmRpY2F0b3JFbnRlciAgCSh2b2lkKTsJcHRyX3R5cGUJ
CQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWZvcm1JRCA7ICAJ
ICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Zvcm1JRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsg
fSAgCX07IAljbGFzcyBFbVByb3h5YXR0bkluZGljYXRvckVudGVyICAJewlwdWJsaWM6CXR5cGVk
ZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlhdHRuSW5kaWNhdG9yRW50ZXIgIAkodm9pZCk7CUVt
UHJveHlhdHRuSW5kaWNhdG9yRW50ZXIgIAkoY29uc3QgRW1Qcm94eWF0dG5JbmRpY2F0b3JFbnRl
ciAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUp
ICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4g
ICAgIDIgIDsgfQlFbVByb3h5YXR0bkluZGljYXRvckVudGVyICAmCQlvcGVyYXRvcj0gKGNvbnN0
IEVtUHJveHlhdHRuSW5kaWNhdG9yRW50ZXIgICYpOwlFbUFsaWFzYXR0bkluZGljYXRvckVudGVy
ICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzYXR0bkluZGljYXRvckVudGVy
ICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJ
X2J5dGVzWyAgICAyICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2
IDxMQVM+CSAJCQkJCQlmb3JtSUQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mb3Jt
SUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPglj
bGFzcyBFbUFsaWFzYXR0bkluZGljYXRvclNlbGVjdCAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVu
YW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzYXR0bkluZGljYXRvclNlbGVjdCAgCShw
dHJfdHlwZSk7CUVtQWxpYXNhdHRuSW5kaWNhdG9yU2VsZWN0ICAJKGNvbnN0IEVtQWxpYXNhdHRu
SW5kaWNhdG9yU2VsZWN0ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0
dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAg
MiAgOyB9CUVtQWxpYXNhdHRuSW5kaWNhdG9yU2VsZWN0ICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
RW1BbGlhc2F0dG5JbmRpY2F0b3JTZWxlY3QgIDxBPiYpOwlFbUFsaWFzYXR0bkluZGljYXRvclNl
bGVjdCAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNhdHRuSW5kaWNhdG9yU2Vs
ZWN0ICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc2F0dG5JbmRp
Y2F0b3JTZWxlY3QgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxp
YXNVSW50MTYgPEE+CSAJCQkJCQlmb3JtSUQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9mb3JtSUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eWF0dG5J
bmRpY2F0b3JTZWxlY3QgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94
eWF0dG5JbmRpY2F0b3JTZWxlY3QgIAkodm9pZCk7CUVtUHJveHlhdHRuSW5kaWNhdG9yU2VsZWN0
ICAJKGNvbnN0IEVtUHJveHlhdHRuSW5kaWNhdG9yU2VsZWN0ICAmKTsJcHRyX3R5cGUJCQlHZXRQ
dHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMiAgOyB9CUVtUHJveHlhdHRu
SW5kaWNhdG9yU2VsZWN0ICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlhdHRuSW5kaWNhdG9y
U2VsZWN0ICAmKTsJRW1BbGlhc2F0dG5JbmRpY2F0b3JTZWxlY3QgIDxMQVM+CW9wZXJhdG9yW10g
KGludCk7CWNvbnN0IEVtQWxpYXNhdHRuSW5kaWNhdG9yU2VsZWN0ICA8TEFTPglvcGVyYXRvcltd
IChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAyICBdOwl9
IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlmb3Jt
SUQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mb3JtSUQgICh2b2lkKSB7IHJldHVy
biAgMCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzZGF5U2Vs
ZWN0ICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVt
QWxpYXNkYXlTZWxlY3QgIAkocHRyX3R5cGUpOwlFbUFsaWFzZGF5U2VsZWN0ICAJKGNvbnN0IEVt
QWxpYXNkYXlTZWxlY3QgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1
cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA4
ICA7IH0JRW1BbGlhc2RheVNlbGVjdCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNkYXlT
ZWxlY3QgIDxBPiYpOwlFbUFsaWFzZGF5U2VsZWN0ICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29u
c3QgRW1BbGlhc2RheVNlbGVjdCAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6
CUVtQWxpYXNkYXlTZWxlY3QgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAg
IEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlwU2VsZWN0b3IgOyAJIEVtQWxpYXNJbnQxNiA8QT4J
IAkJCQkJCXNlbGVjdGlvbiA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJCXVzZVRoaXNEYXRl
IDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlyZXNlcnZlZDEgOyAgCSAgICAgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9wU2VsZWN0b3IgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3NlbGVjdGlvbiAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdXNlVGhpc0RhdGUgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jlc2VydmVkMSAgKHZvaWQpIHsgcmV0dXJuICA3IDsgfSAg
CX07IAljbGFzcyBFbVByb3h5ZGF5U2VsZWN0ICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRy
X3R5cGU7CUVtUHJveHlkYXlTZWxlY3QgIAkodm9pZCk7CUVtUHJveHlkYXlTZWxlY3QgIAkoY29u
c3QgRW1Qcm94eWRheVNlbGVjdCAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJ
KHZvaWQpCQkJeyByZXR1cm4gICAgIDggIDsgfQlFbVByb3h5ZGF5U2VsZWN0ICAmCQlvcGVyYXRv
cj0gKGNvbnN0IEVtUHJveHlkYXlTZWxlY3QgICYpOwlFbUFsaWFzZGF5U2VsZWN0ICA8TEFTPglv
cGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzZGF5U2VsZWN0ICA8TEFTPglvcGVyYXRvcltd
IChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA4ICBdOwl9
IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlwU2Vs
ZWN0b3IgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJc2VsZWN0aW9uIDsgCSBFbUFsaWFz
Qm9vbGVhbiA8TEFTPgkgCQkJCQl1c2VUaGlzRGF0ZSA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJ
CQkJCQlyZXNlcnZlZDEgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wU2VsZWN0b3Ig
ICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NlbGVjdGlv
biAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdXNlVGhp
c0RhdGUgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jl
c2VydmVkMSAgKHZvaWQpIHsgcmV0dXJuICA3IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNz
IEE+CWNsYXNzIEVtQWxpYXNtZW51ICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRy
X3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNtZW51ICAJKHB0cl90eXBlKTsJRW1BbGlhc21lbnUgIAko
Y29uc3QgRW1BbGlhc21lbnUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAg
ICAyICA7IH0JRW1BbGlhc21lbnUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzbWVudSAg
PEE+Jik7CUVtQWxpYXNtZW51ICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc21l
bnUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzbWVudSAgCSh2
b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJ
CQkJCWl0ZW1JRCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2l0ZW1JRCAgKHZvaWQp
IHsgcmV0dXJuICAwIDsgfSAgCX07IAljbGFzcyBFbVByb3h5bWVudSAgCXsJcHVibGljOgl0eXBl
ZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5bWVudSAgCSh2b2lkKTsJRW1Qcm94eW1lbnUgIAko
Y29uc3QgRW1Qcm94eW1lbnUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2
b2lkKQkJCXsgcmV0dXJuICAgICAyICA7IH0JRW1Qcm94eW1lbnUgICYJCW9wZXJhdG9yPSAoY29u
c3QgRW1Qcm94eW1lbnUgICYpOwlFbUFsaWFzbWVudSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJ
Y29uc3QgRW1BbGlhc21lbnUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6
CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDIgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkg
ICAgIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWl0ZW1JRCA7ICAJICAgICBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2l0ZW1JRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAgCX07ICAgCSAgdGVt
cGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNwb3BTZWxlY3QgIAl7CXB1YmxpYzoJdHlwZWRl
ZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc3BvcFNlbGVjdCAgCShwdHJf
dHlwZSk7CUVtQWxpYXNwb3BTZWxlY3QgIAkoY29uc3QgRW1BbGlhc3BvcFNlbGVjdCAgJik7CXB0
cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXpl
X3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDE2ICA7IH0JRW1BbGlhc3BvcFNlbGVj
dCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNwb3BTZWxlY3QgIDxBPiYpOwlFbUFsaWFz
cG9wU2VsZWN0ICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc3BvcFNlbGVjdCAg
PEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNwb3BTZWxlY3QgIAko
dm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJ
CQkJCQljb250cm9sSUQgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQljb250cm9sUCA7IAkg
RW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWxpc3RJRCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJ
CQkJCWxpc3RQIDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQlzZWxlY3Rpb24gOyAJIEVtQWxp
YXNJbnQxNiA8QT4JIAkJCQkJCXByaW9yU2VsZWN0aW9uIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfY29udHJvbElEICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9jb250cm9sUCAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfbGlzdElEICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9saXN0UCAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2Zfc2VsZWN0aW9uICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfcHJpb3JTZWxlY3Rpb24gICh2b2lkKSB7IHJldHVybiAgMTQgOyB9ICAJfTsg
CWNsYXNzIEVtUHJveHlwb3BTZWxlY3QgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlw
ZTsJRW1Qcm94eXBvcFNlbGVjdCAgCSh2b2lkKTsJRW1Qcm94eXBvcFNlbGVjdCAgCShjb25zdCBF
bVByb3h5cG9wU2VsZWN0ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0
dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9p
ZCkJCQl7IHJldHVybiAgICAgMTYgIDsgfQlFbVByb3h5cG9wU2VsZWN0ICAmCQlvcGVyYXRvcj0g
KGNvbnN0IEVtUHJveHlwb3BTZWxlY3QgICYpOwlFbUFsaWFzcG9wU2VsZWN0ICA8TEFTPglvcGVy
YXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzcG9wU2VsZWN0ICA8TEFTPglvcGVyYXRvcltdIChp
bnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAxNiAgXTsJfSBm
TG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJY29udHJv
bElEIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQljb250cm9sUCA7IAkgRW1BbGlhc1VJ
bnQxNiA8TEFTPgkgCQkJCQkJbGlzdElEIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQls
aXN0UCA7IAkgRW1BbGlhc0ludDE2IDxMQVM+CSAJCQkJCQlzZWxlY3Rpb24gOyAJIEVtQWxpYXNJ
bnQxNiA8TEFTPgkgCQkJCQkJcHJpb3JTZWxlY3Rpb24gOyAgCSAgICAgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9jb250cm9sSUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2NvbnRyb2xQICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9saXN0SUQgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2xpc3RQICAodm9pZCkgeyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9zZWxlY3Rpb24gICh2b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9wcmlvclNlbGVjdGlvbiAgKHZvaWQpIHsgcmV0dXJuICAxNCA7IH0gIAl9OyAg
IAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzc2NsRW50ZXIgIAl7CXB1YmxpYzoJ
dHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc3NjbEVudGVyICAJ
KHB0cl90eXBlKTsJRW1BbGlhc3NjbEVudGVyICAJKGNvbnN0IEVtQWxpYXNzY2xFbnRlciAgJik7
CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBz
aXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDYgIDsgfQlFbUFsaWFzc2NsRW50
ZXIgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzc2NsRW50ZXIgIDxBPiYpOwlFbUFsaWFz
c2NsRW50ZXIgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzc2NsRW50ZXIgIDxB
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzc2NsRW50ZXIgIAkodm9p
ZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJ
CQlzY3JvbGxCYXJJRCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXBTY3JvbGxCYXIgOyAg
CSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zY3JvbGxCYXJJRCAgKHZvaWQpIHsgcmV0dXJu
ICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcFNjcm9sbEJhciAgKHZvaWQpIHsgcmV0
dXJuICAyIDsgfSAgCX07IAljbGFzcyBFbVByb3h5c2NsRW50ZXIgIAl7CXB1YmxpYzoJdHlwZWRl
ZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eXNjbEVudGVyICAJKHZvaWQpOwlFbVByb3h5c2NsRW50
ZXIgIAkoY29uc3QgRW1Qcm94eXNjbEVudGVyICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQp
IGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJ
R2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNiAgOyB9CUVtUHJveHlzY2xFbnRlciAgJgkJ
b3BlcmF0b3I9IChjb25zdCBFbVByb3h5c2NsRW50ZXIgICYpOwlFbUFsaWFzc2NsRW50ZXIgIDxM
QVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNzY2xFbnRlciAgPExBUz4Jb3BlcmF0
b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgNiAg
XTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJ
c2Nyb2xsQmFySUQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXBTY3JvbGxCYXIgOyAg
CSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zY3JvbGxCYXJJRCAgKHZvaWQpIHsgcmV0dXJu
ICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcFNjcm9sbEJhciAgKHZvaWQpIHsgcmV0
dXJuICAyIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNzY2xF
eGl0ICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVt
QWxpYXNzY2xFeGl0ICAJKHB0cl90eXBlKTsJRW1BbGlhc3NjbEV4aXQgIAkoY29uc3QgRW1BbGlh
c3NjbEV4aXQgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0
cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAxMCAgOyB9
CUVtQWxpYXNzY2xFeGl0ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc3NjbEV4aXQgIDxB
PiYpOwlFbUFsaWFzc2NsRXhpdCAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNz
Y2xFeGl0ICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc3NjbEV4
aXQgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYg
PEE+CSAJCQkJCQlzY3JvbGxCYXJJRCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXBTY3Jv
bGxCYXIgOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJCXZhbHVlIDsgCSBFbUFsaWFzSW50MTYg
PEE+CSAJCQkJCQluZXdWYWx1ZSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Njcm9s
bEJhcklEICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9w
U2Nyb2xsQmFyICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl92YWx1ZSAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
bmV3VmFsdWUgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eXNjbEV4
aXQgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eXNjbEV4aXQgIAko
dm9pZCk7CUVtUHJveHlzY2xFeGl0ICAJKGNvbnN0IEVtUHJveHlzY2xFeGl0ICAmKTsJcHRyX3R5
cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7
IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTAgIDsgfQlF
bVByb3h5c2NsRXhpdCAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5c2NsRXhpdCAgJik7CUVt
QWxpYXNzY2xFeGl0ICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzc2NsRXhp
dCAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJ
CV9ieXRlc1sgICAgMTAgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50
MTYgPExBUz4JIAkJCQkJCXNjcm9sbEJhcklEIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJ
CQlwU2Nyb2xsQmFyIDsgCSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCXZhbHVlIDsgCSBFbUFs
aWFzSW50MTYgPExBUz4JIAkJCQkJCW5ld1ZhbHVlIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2Zfc2Nyb2xsQmFySUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3BTY3JvbGxCYXIgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3ZhbHVlICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9uZXdWYWx1ZSAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAgCX07ICAgCSAgdGVt
cGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNzY2xSZXBlYXQgIAl7CXB1YmxpYzoJdHlwZWRl
ZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc3NjbFJlcGVhdCAgCShwdHJf
dHlwZSk7CUVtQWxpYXNzY2xSZXBlYXQgIAkoY29uc3QgRW1BbGlhc3NjbFJlcGVhdCAgJik7CXB0
cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXpl
X3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDE0ICA7IH0JRW1BbGlhc3NjbFJlcGVh
dCAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNzY2xSZXBlYXQgIDxBPiYpOwlFbUFsaWFz
c2NsUmVwZWF0ICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc3NjbFJlcGVhdCAg
PEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNzY2xSZXBlYXQgIAko
dm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJ
CQkJCQlzY3JvbGxCYXJJRCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXBTY3JvbGxCYXIg
OyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJCXZhbHVlIDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJ
CQkJCQluZXdWYWx1ZSA7IAkgRW1BbGlhc0ludDMyIDxBPgkgCQkJCQkJdGltZSA7ICAJICAgICBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3Njcm9sbEJhcklEICAodm9pZCkgeyByZXR1cm4gIDAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wU2Nyb2xsQmFyICAodm9pZCkgeyByZXR1cm4gIDIg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl92YWx1ZSAgKHZvaWQpIHsgcmV0dXJuICA2IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmV3VmFsdWUgICh2b2lkKSB7IHJldHVybiAgOCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RpbWUgICh2b2lkKSB7IHJldHVybiAgMTAgOyB9
ICAJfTsgCWNsYXNzIEVtUHJveHlzY2xSZXBlYXQgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBw
dHJfdHlwZTsJRW1Qcm94eXNjbFJlcGVhdCAgCSh2b2lkKTsJRW1Qcm94eXNjbFJlcGVhdCAgCShj
b25zdCBFbVByb3h5c2NsUmVwZWF0ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0
CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6
ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTQgIDsgfQlFbVByb3h5c2NsUmVwZWF0ICAmCQlvcGVy
YXRvcj0gKGNvbnN0IEVtUHJveHlzY2xSZXBlYXQgICYpOwlFbUFsaWFzc2NsUmVwZWF0ICA8TEFT
PglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzc2NsUmVwZWF0ICA8TEFTPglvcGVyYXRv
cltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAxNCAg
XTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJ
c2Nyb2xsQmFySUQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXBTY3JvbGxCYXIgOyAJ
IEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJdmFsdWUgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkg
CQkJCQkJbmV3VmFsdWUgOyAJIEVtQWxpYXNJbnQzMiA8TEFTPgkgCQkJCQkJdGltZSA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Njcm9sbEJhcklEICAodm9pZCkgeyByZXR1cm4gIDAg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wU2Nyb2xsQmFyICAodm9pZCkgeyByZXR1cm4g
IDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl92YWx1ZSAgKHZvaWQpIHsgcmV0dXJuICA2
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmV3VmFsdWUgICh2b2lkKSB7IHJldHVybiAg
OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RpbWUgICh2b2lkKSB7IHJldHVybiAgMTAg
OyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc21lbnVDbWRCYXJP
cGVuICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVt
QWxpYXNtZW51Q21kQmFyT3BlbiAgCShwdHJfdHlwZSk7CUVtQWxpYXNtZW51Q21kQmFyT3BlbiAg
CShjb25zdCBFbUFsaWFzbWVudUNtZEJhck9wZW4gICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9p
ZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICAyICA7IH0JRW1BbGlhc21lbnVDbWRCYXJPcGVuICA8QT4mCW9wZXJhdG9y
PSAoY29uc3QgRW1BbGlhc21lbnVDbWRCYXJPcGVuICA8QT4mKTsJRW1BbGlhc21lbnVDbWRCYXJP
cGVuICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc21lbnVDbWRCYXJPcGVuICA8
QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc21lbnVDbWRCYXJPcGVu
ICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzQm9vbGVhbiA8
QT4JIAkJCQkJcHJldmVudEZpZWxkQnV0dG9ucyA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJ
cmVzZXJ2ZWQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wcmV2ZW50RmllbGRCdXR0
b25zICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNl
cnZlZCAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAgCX07IAljbGFzcyBFbVByb3h5bWVudUNtZEJh
ck9wZW4gIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eW1lbnVDbWRC
YXJPcGVuICAJKHZvaWQpOwlFbVByb3h5bWVudUNtZEJhck9wZW4gIAkoY29uc3QgRW1Qcm94eW1l
bnVDbWRCYXJPcGVuICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJu
IChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJ
CQl7IHJldHVybiAgICAgMiAgOyB9CUVtUHJveHltZW51Q21kQmFyT3BlbiAgJgkJb3BlcmF0b3I9
IChjb25zdCBFbVByb3h5bWVudUNtZEJhck9wZW4gICYpOwlFbUFsaWFzbWVudUNtZEJhck9wZW4g
IDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNtZW51Q21kQmFyT3BlbiAgPExB
Uz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRl
c1sgICAgMiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc0Jvb2xlYW4gPExB
Uz4JIAkJCQkJcHJldmVudEZpZWxkQnV0dG9ucyA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJ
CQlyZXNlcnZlZCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3ByZXZlbnRGaWVsZEJ1
dHRvbnMgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jl
c2VydmVkICAodm9pZCkgeyByZXR1cm4gIDEgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3Mg
QT4JY2xhc3MgRW1BbGlhc21lbnVPcGVuICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6
cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNtZW51T3BlbiAgCShwdHJfdHlwZSk7CUVtQWxpYXNt
ZW51T3BlbiAgCShjb25zdCBFbUFsaWFzbWVudU9wZW4gICYpOwlwdHJfdHlwZQkJCUdldFB0cgko
dm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lk
KQkJCXsgcmV0dXJuICAgICA0ICA7IH0JRW1BbGlhc21lbnVPcGVuICA8QT4mCW9wZXJhdG9yPSAo
Y29uc3QgRW1BbGlhc21lbnVPcGVuICA8QT4mKTsJRW1BbGlhc21lbnVPcGVuICA8QT4Jb3BlcmF0
b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc21lbnVPcGVuICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBj
b25zdDsJcHJpdmF0ZToJRW1BbGlhc21lbnVPcGVuICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7
CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJbWVudVJzY0lEIDsgCSBFbUFs
aWFzSW50MTYgPEE+CSAJCQkJCQljYXVzZSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X21lbnVSc2NJRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfY2F1c2UgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eW1lbnVP
cGVuICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHltZW51T3BlbiAg
CSh2b2lkKTsJRW1Qcm94eW1lbnVPcGVuICAJKGNvbnN0IEVtUHJveHltZW51T3BlbiAgJik7CXB0
cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxE
YXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDQgIDsg
fQlFbVByb3h5bWVudU9wZW4gICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eW1lbnVPcGVuICAm
KTsJRW1BbGlhc21lbnVPcGVuICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFz
bWVudU9wZW4gIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7
CWNoYXIJCQlfYnl0ZXNbICAgIDQgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxp
YXNVSW50MTYgPExBUz4JIAkJCQkJCW1lbnVSc2NJRCA7IAkgRW1BbGlhc0ludDE2IDxMQVM+CSAJ
CQkJCQljYXVzZSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21lbnVSc2NJRCAgKHZv
aWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2F1c2UgICh2b2lk
KSB7IHJldHVybiAgMiA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFs
aWFzZ2FkZ2V0RW50ZXIgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBw
dHJfdHlwZTsJRW1BbGlhc2dhZGdldEVudGVyICAJKHB0cl90eXBlKTsJRW1BbGlhc2dhZGdldEVu
dGVyICAJKGNvbnN0IEVtQWxpYXNnYWRnZXRFbnRlciAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2
b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQp
CQkJeyByZXR1cm4gICAgIDYgIDsgfQlFbUFsaWFzZ2FkZ2V0RW50ZXIgIDxBPiYJb3BlcmF0b3I9
IChjb25zdCBFbUFsaWFzZ2FkZ2V0RW50ZXIgIDxBPiYpOwlFbUFsaWFzZ2FkZ2V0RW50ZXIgIDxB
PglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzZ2FkZ2V0RW50ZXIgIDxBPglvcGVyYXRv
cltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzZ2FkZ2V0RW50ZXIgIAkodm9pZCk7CXB0
cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlnYWRn
ZXRJRCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWdhZGdldFAgOyAgCSAgICAgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9nYWRnZXRJRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZ2FkZ2V0UCAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAgCX07IAlj
bGFzcyBFbVByb3h5Z2FkZ2V0RW50ZXIgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlw
ZTsJRW1Qcm94eWdhZGdldEVudGVyICAJKHZvaWQpOwlFbVByb3h5Z2FkZ2V0RW50ZXIgIAkoY29u
c3QgRW1Qcm94eWdhZGdldEVudGVyICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0
CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6
ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNiAgOyB9CUVtUHJveHlnYWRnZXRFbnRlciAgJgkJb3Bl
cmF0b3I9IChjb25zdCBFbVByb3h5Z2FkZ2V0RW50ZXIgICYpOwlFbUFsaWFzZ2FkZ2V0RW50ZXIg
IDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNnYWRnZXRFbnRlciAgPExBUz4J
b3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sg
ICAgNiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkg
CQkJCQkJZ2FkZ2V0SUQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWdhZGdldFAgOyAg
CSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nYWRnZXRJRCAgKHZvaWQpIHsgcmV0dXJuICAw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ2FkZ2V0UCAgKHZvaWQpIHsgcmV0dXJuICAy
IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNnYWRnZXRNaXNj
ICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxp
YXNnYWRnZXRNaXNjICAJKHB0cl90eXBlKTsJRW1BbGlhc2dhZGdldE1pc2MgIAkoY29uc3QgRW1B
bGlhc2dhZGdldE1pc2MgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1
cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAx
MiAgOyB9CUVtQWxpYXNnYWRnZXRNaXNjICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc2dh
ZGdldE1pc2MgIDxBPiYpOwlFbUFsaWFzZ2FkZ2V0TWlzYyAgPEE+CW9wZXJhdG9yW10gKGludCk7
CWNvbnN0IEVtQWxpYXNnYWRnZXRNaXNjICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJp
dmF0ZToJRW1BbGlhc2dhZGdldE1pc2MgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGlj
OgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlnYWRnZXRJRCA7IAkgRW1BbGlhc2VtdXB0
ciA8QT4JIAkJCQkJCWdhZGdldFAgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlzZWxlY3Rv
ciA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWRhdGFQIDsgIAkgICAgIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZ2FkZ2V0SUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2dhZGdldFAgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3NlbGVjdG9yICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9kYXRhUCAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAgCX07IAljbGFzcyBF
bVByb3h5Z2FkZ2V0TWlzYyAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVBy
b3h5Z2FkZ2V0TWlzYyAgCSh2b2lkKTsJRW1Qcm94eWdhZGdldE1pc2MgIAkoY29uc3QgRW1Qcm94
eWdhZGdldE1pc2MgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4g
KHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICAxMiAgOyB9CUVtUHJveHlnYWRnZXRNaXNjICAmCQlvcGVyYXRvcj0gKGNv
bnN0IEVtUHJveHlnYWRnZXRNaXNjICAmKTsJRW1BbGlhc2dhZGdldE1pc2MgIDxMQVM+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNnYWRnZXRNaXNjICA8TEFTPglvcGVyYXRvcltdIChp
bnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAxMiAgXTsJfSBm
TG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJZ2FkZ2V0
SUQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWdhZGdldFAgOyAJIEVtQWxpYXNVSW50
MTYgPExBUz4JIAkJCQkJCXNlbGVjdG9yIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlk
YXRhUCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dhZGdldElEICAodm9pZCkgeyBy
ZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nYWRnZXRQICAodm9pZCkgeyBy
ZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zZWxlY3RvciAgKHZvaWQpIHsg
cmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGF0YVAgICh2b2lkKSB7IHJl
dHVybiAgOCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzRXZl
bnRUeXBlRGF0YSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90
eXBlOwlFbUFsaWFzRXZlbnRUeXBlRGF0YSAgCShwdHJfdHlwZSk7CUVtQWxpYXNFdmVudFR5cGVE
YXRhICAJKGNvbnN0IEVtQWxpYXNFdmVudFR5cGVEYXRhICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJ
KHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9p
ZCkJCQl7IHJldHVybiAgICAgMTYgIDsgfQlFbUFsaWFzRXZlbnRUeXBlRGF0YSAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IEVtQWxpYXNFdmVudFR5cGVEYXRhICA8QT4mKTsJRW1BbGlhc0V2ZW50VHlw
ZURhdGEgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzRXZlbnRUeXBlRGF0YSAg
PEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNFdmVudFR5cGVEYXRh
ICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzZ2VuZXJpYyA8
QT4JIAkJCQkJZ2VuZXJpYyA7IAkgRW1BbGlhc3BlblVwIDxBPgkgCQkJCQkJcGVuVXAgOyAJIEVt
QWxpYXNrZXlEb3duIDxBPgkgCQkJCQlrZXlEb3duIDsgCSBFbUFsaWFzd2luRW50ZXIgPEE+CSAJ
CQkJCXdpbkVudGVyIDsgCSBFbUFsaWFzd2luRXhpdCA8QT4JIAkJCQkJd2luRXhpdCA7IAkgRW1B
bGlhc3RzbUNvbmZpcm0gPEE+CSAJCQkJCXRzbUNvbmZpcm0gOyAJIEVtQWxpYXN0c21GZXBCdXR0
b24gPEE+CSAJCQkJdHNtRmVwQnV0dG9uIDsgCSBFbUFsaWFzdHNtRmVwTW9kZSA8QT4JIAkJCQkJ
dHNtRmVwTW9kZSA7IAkgRW1BbGlhc2N0bEVudGVyIDxBPgkgCQkJCQljdGxFbnRlciA7IAkgRW1B
bGlhc2N0bFNlbGVjdCA8QT4JIAkJCQkJY3RsU2VsZWN0IDsgCSBFbUFsaWFzY3RsUmVwZWF0IDxB
PgkgCQkJCQljdGxSZXBlYXQgOyAJIEVtQWxpYXNjdGxFeGl0IDxBPgkgCQkJCQljdGxFeGl0IDsg
CSBFbUFsaWFzZmxkRW50ZXIgPEE+CSAJCQkJCWZsZEVudGVyIDsgCSBFbUFsaWFzZmxkSGVpZ2h0
Q2hhbmdlZCA8QT4JIAkJCWZsZEhlaWdodENoYW5nZWQgOyAJIEVtQWxpYXNmbGRDaGFuZ2VkIDxB
PgkgCQkJCQlmbGRDaGFuZ2VkIDsgCSBFbUFsaWFzZmxkRXhpdCA8QT4JIAkJCQkJZmxkRXhpdCA7
IAkgRW1BbGlhc2xzdEVudGVyIDxBPgkgCQkJCQlsc3RFbnRlciA7IAkgRW1BbGlhc2xzdEV4aXQg
PEE+CSAJCQkJCWxzdEV4aXQgOyAJIEVtQWxpYXNsc3RTZWxlY3QgPEE+CSAJCQkJCWxzdFNlbGVj
dCA7IAkgRW1BbGlhc3RibEVudGVyIDxBPgkgCQkJCQl0YmxFbnRlciA7IAkgRW1BbGlhc3RibEV4
aXQgPEE+CSAJCQkJCXRibEV4aXQgOyAJIEVtQWxpYXN0YmxTZWxlY3QgPEE+CSAJCQkJCXRibFNl
bGVjdCA7IAkgRW1BbGlhc2ZybUxvYWQgPEE+CSAJCQkJCWZybUxvYWQgOyAJIEVtQWxpYXNmcm1P
cGVuIDxBPgkgCQkJCQlmcm1PcGVuIDsgCSBFbUFsaWFzZnJtR290byA8QT4JIAkJCQkJZnJtR290
byA7IAkgRW1BbGlhc2ZybUNsb3NlIDxBPgkgCQkJCQlmcm1DbG9zZSA7IAkgRW1BbGlhc2ZybVVw
ZGF0ZSA8QT4JIAkJCQkJZnJtVXBkYXRlIDsgCSBFbUFsaWFzZnJtVGl0bGVFbnRlciA8QT4JIAkJ
CQlmcm1UaXRsZUVudGVyIDsgCSBFbUFsaWFzZnJtVGl0bGVTZWxlY3QgPEE+CSAJCQkJZnJtVGl0
bGVTZWxlY3QgOyAJIEVtQWxpYXNhdHRuSW5kaWNhdG9yRW50ZXIgPEE+CSAJCQlhdHRuSW5kaWNh
dG9yRW50ZXIgOyAJIEVtQWxpYXNhdHRuSW5kaWNhdG9yU2VsZWN0IDxBPgkgCQlhdHRuSW5kaWNh
dG9yU2VsZWN0IDsgCSBFbUFsaWFzZGF5U2VsZWN0IDxBPgkgCQkJCQlkYXlTZWxlY3QgOyAJIEVt
QWxpYXNtZW51IDxBPgkgCQkJCQkJbWVudSA7IAkgRW1BbGlhc3BvcFNlbGVjdCA8QT4JIAkJCQkJ
cG9wU2VsZWN0IDsgCSBFbUFsaWFzc2NsRW50ZXIgPEE+CSAJCQkJCXNjbEVudGVyIDsgCSBFbUFs
aWFzc2NsRXhpdCA8QT4JIAkJCQkJc2NsRXhpdCA7IAkgRW1BbGlhc3NjbFJlcGVhdCA8QT4JIAkJ
CQkJc2NsUmVwZWF0IDsgCSBFbUFsaWFzbWVudUNtZEJhck9wZW4gPEE+CSAJCQkJbWVudUNtZEJh
ck9wZW4gOyAJIEVtQWxpYXNtZW51T3BlbiA8QT4JIAkJCQkJbWVudU9wZW4gOyAJIEVtQWxpYXNn
YWRnZXRFbnRlciA8QT4JIAkJCQlnYWRnZXRFbnRlciA7IAkgRW1BbGlhc2dhZGdldE1pc2MgPEE+
CSAJCQkJCWdhZGdldE1pc2MgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nZW5lcmlj
ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wZW5VcCAg
KHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfa2V5RG93biAg
KHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfd2luRW50ZXIg
ICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3dpbkV4aXQg
ICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RzbUNvbmZp
cm0gICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RzbUZl
cEJ1dHRvbiAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
dHNtRmVwTW9kZSAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfY3RsRW50ZXIgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2N0bFNlbGVjdCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfY3RsUmVwZWF0ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9jdGxFeGl0ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9mbGRFbnRlciAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfZmxkSGVpZ2h0Q2hhbmdlZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZmxkQ2hhbmdlZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmxkRXhpdCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbHN0RW50ZXIgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2xzdEV4aXQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2xzdFNlbGVjdCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGJsRW50ZXIgICh2b2lkKSB7IHJldHVybiAgMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RibEV4aXQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RibFNlbGVjdCAgKHZvaWQpIHsgcmV0dXJuICAwIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZnJtTG9hZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZnJtT3BlbiAgKHZvaWQpIHsgcmV0dXJuICAwIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZnJtR290byAgKHZvaWQpIHsgcmV0dXJuICAwIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZnJtQ2xvc2UgICh2b2lkKSB7IHJldHVybiAgMCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZybVVwZGF0ZSAgKHZvaWQpIHsgcmV0dXJuICAw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZnJtVGl0bGVFbnRlciAgKHZvaWQpIHsgcmV0
dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZnJtVGl0bGVTZWxlY3QgICh2b2lk
KSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2F0dG5JbmRpY2F0b3JF
bnRlciAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYXR0
bkluZGljYXRvclNlbGVjdCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfZGF5U2VsZWN0ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9tZW51ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9wb3BTZWxlY3QgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3NjbEVudGVyICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9zY2xFeGl0ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9zY2xSZXBlYXQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX21lbnVDbWRCYXJPcGVuICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9tZW51T3BlbiAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZ2FkZ2V0RW50ZXIgICh2b2lkKSB7IHJldHVybiAgMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2dhZGdldE1pc2MgICh2b2lkKSB7IHJldHVybiAgMCA7
IH0gIAl9OyAJY2xhc3MgRW1Qcm94eUV2ZW50VHlwZURhdGEgIAl7CXB1YmxpYzoJdHlwZWRlZiB2
b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUV2ZW50VHlwZURhdGEgIAkodm9pZCk7CUVtUHJveHlFdmVu
dFR5cGVEYXRhICAJKGNvbnN0IEVtUHJveHlFdmVudFR5cGVEYXRhICAmKTsJcHRyX3R5cGUJCQlH
ZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3Rh
dGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTYgIDsgfQlFbVByb3h5
RXZlbnRUeXBlRGF0YSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5RXZlbnRUeXBlRGF0YSAg
Jik7CUVtQWxpYXNFdmVudFR5cGVEYXRhICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBF
bUFsaWFzRXZlbnRUeXBlRGF0YSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0
ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMTYgIF07CX0gZkxvY2FsRGF0YTsJcHVibGlj
OgkgICAgIEVtQWxpYXNnZW5lcmljIDxMQVM+CSAJCQkJCWdlbmVyaWMgOyAJIEVtQWxpYXNwZW5V
cCA8TEFTPgkgCQkJCQkJcGVuVXAgOyAJIEVtQWxpYXNrZXlEb3duIDxMQVM+CSAJCQkJCWtleURv
d24gOyAJIEVtQWxpYXN3aW5FbnRlciA8TEFTPgkgCQkJCQl3aW5FbnRlciA7IAkgRW1BbGlhc3dp
bkV4aXQgPExBUz4JIAkJCQkJd2luRXhpdCA7IAkgRW1BbGlhc3RzbUNvbmZpcm0gPExBUz4JIAkJ
CQkJdHNtQ29uZmlybSA7IAkgRW1BbGlhc3RzbUZlcEJ1dHRvbiA8TEFTPgkgCQkJCXRzbUZlcEJ1
dHRvbiA7IAkgRW1BbGlhc3RzbUZlcE1vZGUgPExBUz4JIAkJCQkJdHNtRmVwTW9kZSA7IAkgRW1B
bGlhc2N0bEVudGVyIDxMQVM+CSAJCQkJCWN0bEVudGVyIDsgCSBFbUFsaWFzY3RsU2VsZWN0IDxM
QVM+CSAJCQkJCWN0bFNlbGVjdCA7IAkgRW1BbGlhc2N0bFJlcGVhdCA8TEFTPgkgCQkJCQljdGxS
ZXBlYXQgOyAJIEVtQWxpYXNjdGxFeGl0IDxMQVM+CSAJCQkJCWN0bEV4aXQgOyAJIEVtQWxpYXNm
bGRFbnRlciA8TEFTPgkgCQkJCQlmbGRFbnRlciA7IAkgRW1BbGlhc2ZsZEhlaWdodENoYW5nZWQg
PExBUz4JIAkJCWZsZEhlaWdodENoYW5nZWQgOyAJIEVtQWxpYXNmbGRDaGFuZ2VkIDxMQVM+CSAJ
CQkJCWZsZENoYW5nZWQgOyAJIEVtQWxpYXNmbGRFeGl0IDxMQVM+CSAJCQkJCWZsZEV4aXQgOyAJ
IEVtQWxpYXNsc3RFbnRlciA8TEFTPgkgCQkJCQlsc3RFbnRlciA7IAkgRW1BbGlhc2xzdEV4aXQg
PExBUz4JIAkJCQkJbHN0RXhpdCA7IAkgRW1BbGlhc2xzdFNlbGVjdCA8TEFTPgkgCQkJCQlsc3RT
ZWxlY3QgOyAJIEVtQWxpYXN0YmxFbnRlciA8TEFTPgkgCQkJCQl0YmxFbnRlciA7IAkgRW1BbGlh
c3RibEV4aXQgPExBUz4JIAkJCQkJdGJsRXhpdCA7IAkgRW1BbGlhc3RibFNlbGVjdCA8TEFTPgkg
CQkJCQl0YmxTZWxlY3QgOyAJIEVtQWxpYXNmcm1Mb2FkIDxMQVM+CSAJCQkJCWZybUxvYWQgOyAJ
IEVtQWxpYXNmcm1PcGVuIDxMQVM+CSAJCQkJCWZybU9wZW4gOyAJIEVtQWxpYXNmcm1Hb3RvIDxM
QVM+CSAJCQkJCWZybUdvdG8gOyAJIEVtQWxpYXNmcm1DbG9zZSA8TEFTPgkgCQkJCQlmcm1DbG9z
ZSA7IAkgRW1BbGlhc2ZybVVwZGF0ZSA8TEFTPgkgCQkJCQlmcm1VcGRhdGUgOyAJIEVtQWxpYXNm
cm1UaXRsZUVudGVyIDxMQVM+CSAJCQkJZnJtVGl0bGVFbnRlciA7IAkgRW1BbGlhc2ZybVRpdGxl
U2VsZWN0IDxMQVM+CSAJCQkJZnJtVGl0bGVTZWxlY3QgOyAJIEVtQWxpYXNhdHRuSW5kaWNhdG9y
RW50ZXIgPExBUz4JIAkJCWF0dG5JbmRpY2F0b3JFbnRlciA7IAkgRW1BbGlhc2F0dG5JbmRpY2F0
b3JTZWxlY3QgPExBUz4JIAkJYXR0bkluZGljYXRvclNlbGVjdCA7IAkgRW1BbGlhc2RheVNlbGVj
dCA8TEFTPgkgCQkJCQlkYXlTZWxlY3QgOyAJIEVtQWxpYXNtZW51IDxMQVM+CSAJCQkJCQltZW51
IDsgCSBFbUFsaWFzcG9wU2VsZWN0IDxMQVM+CSAJCQkJCXBvcFNlbGVjdCA7IAkgRW1BbGlhc3Nj
bEVudGVyIDxMQVM+CSAJCQkJCXNjbEVudGVyIDsgCSBFbUFsaWFzc2NsRXhpdCA8TEFTPgkgCQkJ
CQlzY2xFeGl0IDsgCSBFbUFsaWFzc2NsUmVwZWF0IDxMQVM+CSAJCQkJCXNjbFJlcGVhdCA7IAkg
RW1BbGlhc21lbnVDbWRCYXJPcGVuIDxMQVM+CSAJCQkJbWVudUNtZEJhck9wZW4gOyAJIEVtQWxp
YXNtZW51T3BlbiA8TEFTPgkgCQkJCQltZW51T3BlbiA7IAkgRW1BbGlhc2dhZGdldEVudGVyIDxM
QVM+CSAJCQkJZ2FkZ2V0RW50ZXIgOyAJIEVtQWxpYXNnYWRnZXRNaXNjIDxMQVM+CSAJCQkJCWdh
ZGdldE1pc2MgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9nZW5lcmljICAodm9pZCkg
eyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wZW5VcCAgKHZvaWQpIHsg
cmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfa2V5RG93biAgKHZvaWQpIHsg
cmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfd2luRW50ZXIgICh2b2lkKSB7
IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3dpbkV4aXQgICh2b2lkKSB7
IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RzbUNvbmZpcm0gICh2b2lk
KSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RzbUZlcEJ1dHRvbiAg
KHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdHNtRmVwTW9k
ZSAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY3RsRW50
ZXIgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2N0bFNl
bGVjdCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY3Rs
UmVwZWF0ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9j
dGxFeGl0ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9m
bGRFbnRlciAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
ZmxkSGVpZ2h0Q2hhbmdlZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfZmxkQ2hhbmdlZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZmxkRXhpdCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfbHN0RW50ZXIgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2xzdEV4aXQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2xzdFNlbGVjdCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfdGJsRW50ZXIgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3RibEV4aXQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3RibFNlbGVjdCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZnJtTG9hZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZnJtT3BlbiAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZnJtR290byAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZnJtQ2xvc2UgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2ZybVVwZGF0ZSAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZnJtVGl0bGVFbnRlciAgKHZvaWQpIHsgcmV0dXJuICAwIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZnJtVGl0bGVTZWxlY3QgICh2b2lkKSB7IHJldHVy
biAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2F0dG5JbmRpY2F0b3JFbnRlciAgKHZv
aWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYXR0bkluZGljYXRv
clNlbGVjdCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
ZGF5U2VsZWN0ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9tZW51ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9w
b3BTZWxlY3QgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3NjbEVudGVyICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9zY2xFeGl0ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9zY2xSZXBlYXQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX21lbnVDbWRCYXJPcGVuICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9tZW51T3BlbiAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfZ2FkZ2V0RW50ZXIgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2dhZGdldE1pc2MgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gIAl9OyAg
IAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzRXZlbnRUeXBlICAJewlwdWJsaWM6
CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNFdmVudFR5cGUg
IAkocHRyX3R5cGUpOwlFbUFsaWFzRXZlbnRUeXBlICAJKGNvbnN0IEVtQWxpYXNFdmVudFR5cGUg
ICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0
aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyNCAgOyB9CUVtQWxpYXNF
dmVudFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzRXZlbnRUeXBlICA8QT4mKTsJ
RW1BbGlhc0V2ZW50VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNFdmVu
dFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzRXZlbnRU
eXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzSW50MTYg
PEE+CSAJCQkJCQllVHlwZSA7IAkgRW1BbGlhc0Jvb2xlYW4gPEE+CSAJCQkJCXBlbkRvd24gOyAJ
IEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXRhcENvdW50IDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJ
CQkJCQlzY3JlZW5YIDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQlzY3JlZW5ZIDsgCSBFbUFs
aWFzRXZlbnRUeXBlRGF0YSA8QT4JIAkJCQlkYXRhIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfZVR5cGUgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3BlbkRvd24gICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3RhcENvdW50ICAodm9pZCkgeyByZXR1cm4gIDMgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9zY3JlZW5YICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9zY3JlZW5ZICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9kYXRhICAodm9pZCkgeyByZXR1cm4gIDggOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlFdmVu
dFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUV2ZW50VHlw
ZSAgCSh2b2lkKTsJRW1Qcm94eUV2ZW50VHlwZSAgCShjb25zdCBFbVByb3h5RXZlbnRUeXBlICAm
KTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZM
b2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAg
MjQgIDsgfQlFbVByb3h5RXZlbnRUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlFdmVu
dFR5cGUgICYpOwlFbUFsaWFzRXZlbnRUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25z
dCBFbUFsaWFzRXZlbnRUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRl
OglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAyNCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6
CSAgICAgRW1BbGlhc0ludDE2IDxMQVM+CSAJCQkJCQllVHlwZSA7IAkgRW1BbGlhc0Jvb2xlYW4g
PExBUz4JIAkJCQkJcGVuRG93biA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQl0YXBDb3Vu
dCA7IAkgRW1BbGlhc0ludDE2IDxMQVM+CSAJCQkJCQlzY3JlZW5YIDsgCSBFbUFsaWFzSW50MTYg
PExBUz4JIAkJCQkJCXNjcmVlblkgOyAJIEVtQWxpYXNFdmVudFR5cGVEYXRhIDxMQVM+CSAJCQkJ
ZGF0YSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2VUeXBlICAodm9pZCkgeyByZXR1
cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wZW5Eb3duICAodm9pZCkgeyByZXR1
cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90YXBDb3VudCAgKHZvaWQpIHsgcmV0
dXJuICAzIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2NyZWVuWCAgKHZvaWQpIHsgcmV0
dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2NyZWVuWSAgKHZvaWQpIHsgcmV0
dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGF0YSAgKHZvaWQpIHsgcmV0dXJu
ICA4IDsgfSAgCX07ICAgIAogIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzUk9NREJS
ZWNvcmRIZWFkZXIxVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBl
IHB0cl90eXBlOwlFbUFsaWFzUk9NREJSZWNvcmRIZWFkZXIxVHlwZSAgCShwdHJfdHlwZSk7CUVt
QWxpYXNST01EQlJlY29yZEhlYWRlcjFUeXBlICAJKGNvbnN0IEVtQWxpYXNST01EQlJlY29yZEhl
YWRlcjFUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQ
dHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgOCAgOyB9
CUVtQWxpYXNST01EQlJlY29yZEhlYWRlcjFUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1B
bGlhc1JPTURCUmVjb3JkSGVhZGVyMVR5cGUgIDxBPiYpOwlFbUFsaWFzUk9NREJSZWNvcmRIZWFk
ZXIxVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNST01EQlJlY29yZEhl
YWRlcjFUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1JP
TURCUmVjb3JkSGVhZGVyMVR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkg
ICAgIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQljaHVua0xJRCA7IAkgRW1BbGlhc1VJbnQzMiA8
QT4JIAkJCQkJCXJlY29yZElEIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2h1bmtM
SUQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JlY29y
ZElEICAodm9pZCkgeyByZXR1cm4gIDQgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlST01EQlJlY29y
ZEhlYWRlcjFUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlS
T01EQlJlY29yZEhlYWRlcjFUeXBlICAJKHZvaWQpOwlFbVByb3h5Uk9NREJSZWNvcmRIZWFkZXIx
VHlwZSAgCShjb25zdCBFbVByb3h5Uk9NREJSZWNvcmRIZWFkZXIxVHlwZSAgJik7CXB0cl90eXBl
CQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9
CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDggIDsgfQlFbVBy
b3h5Uk9NREJSZWNvcmRIZWFkZXIxVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5Uk9N
REJSZWNvcmRIZWFkZXIxVHlwZSAgJik7CUVtQWxpYXNST01EQlJlY29yZEhlYWRlcjFUeXBlICA8
TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzUk9NREJSZWNvcmRIZWFkZXIxVHlw
ZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJ
CV9ieXRlc1sgICAgOCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQz
MiA8TEFTPgkgCQkJCQkJY2h1bmtMSUQgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXJl
Y29yZElEIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2h1bmtMSUQgICh2b2lkKSB7
IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JlY29yZElEICAodm9pZCkg
eyByZXR1cm4gIDQgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlh
c1JPTURCUmVzb3VyY2VIZWFkZXIxVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6
OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzUk9NREJSZXNvdXJjZUhlYWRlcjFUeXBlICAJKHB0
cl90eXBlKTsJRW1BbGlhc1JPTURCUmVzb3VyY2VIZWFkZXIxVHlwZSAgCShjb25zdCBFbUFsaWFz
Uk9NREJSZXNvdXJjZUhlYWRlcjFUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNv
bnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJl
dHVybiAgICAgMTAgIDsgfQlFbUFsaWFzUk9NREJSZXNvdXJjZUhlYWRlcjFUeXBlICA8QT4mCW9w
ZXJhdG9yPSAoY29uc3QgRW1BbGlhc1JPTURCUmVzb3VyY2VIZWFkZXIxVHlwZSAgPEE+Jik7CUVt
QWxpYXNST01EQlJlc291cmNlSGVhZGVyMVR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25z
dCBFbUFsaWFzUk9NREJSZXNvdXJjZUhlYWRlcjFUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBj
b25zdDsJcHJpdmF0ZToJRW1BbGlhc1JPTURCUmVzb3VyY2VIZWFkZXIxVHlwZSAgCSh2b2lkKTsJ
cHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXR5
cGUgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlpZCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4J
IAkJCQkJCWNodW5rTElEIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdHlwZSAgKHZv
aWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaWQgICh2b2lkKSB7
IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NodW5rTElEICAodm9pZCkg
eyByZXR1cm4gIDYgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlST01EQlJlc291cmNlSGVhZGVyMVR5
cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVJPTURCUmVzb3Vy
Y2VIZWFkZXIxVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVJPTURCUmVzb3VyY2VIZWFkZXIxVHlwZSAg
CShjb25zdCBFbVByb3h5Uk9NREJSZXNvdXJjZUhlYWRlcjFUeXBlICAmKTsJcHRyX3R5cGUJCQlH
ZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3Rh
dGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTAgIDsgfQlFbVByb3h5
Uk9NREJSZXNvdXJjZUhlYWRlcjFUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlST01E
QlJlc291cmNlSGVhZGVyMVR5cGUgICYpOwlFbUFsaWFzUk9NREJSZXNvdXJjZUhlYWRlcjFUeXBl
ICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzUk9NREJSZXNvdXJjZUhlYWRl
cjFUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3Qgewlj
aGFyCQkJX2J5dGVzWyAgICAxMCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlh
c1VJbnQzMiA8TEFTPgkgCQkJCQkJdHlwZSA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJ
aWQgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWNodW5rTElEIDsgIAkgICAgIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdHlwZSAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfaWQgICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2NodW5rTElEICAodm9pZCkgeyByZXR1cm4gIDYgOyB9ICAJfTsgICAJICB0ZW1w
bGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1JPTURCSGVhZGVyMVR5cGUgIAl7CXB1YmxpYzoJ
dHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1JPTURCSGVhZGVy
MVR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzUk9NREJIZWFkZXIxVHlwZSAgCShjb25zdCBFbUFs
aWFzUk9NREJIZWFkZXIxVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4g
ICAgIDc4ICA7IH0JRW1BbGlhc1JPTURCSGVhZGVyMVR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25z
dCBFbUFsaWFzUk9NREJIZWFkZXIxVHlwZSAgPEE+Jik7CUVtQWxpYXNST01EQkhlYWRlcjFUeXBl
ICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1JPTURCSGVhZGVyMVR5cGUgIDxB
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzUk9NREJIZWFkZXIxVHlw
ZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc2NoYXIgPEE+
CSAJCQkJCQluYW1lIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJZmxhZ3MgOyAJIEVtQWxp
YXNVSW50MTYgPEE+CSAJCQkJCQl2ZXJzaW9uIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJ
Y3JlYXRpb25UaW1lIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJbW9kaWZpY2F0aW9uVGlt
ZSA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCWJhY2t1cFRpbWUgOyAJIEVtQWxpYXNVSW50
MzIgPEE+CSAJCQkJCQltb2RpZmljYXRpb25OdW1iZXIgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJ
CQkJCQlhcHBpbmZvTElEIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJc29ydGluZm9MSUQg
OyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQl0eXBlIDsgCSBFbUFsaWFzVUludDMyIDxBPgkg
CQkJCQkJY3JlYXRvciA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXVuaXF1ZUlEU2VlZCA7
IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCWV4dGVuc2lvbkhlYWRlciA7IAkgRW1BbGlhc1VJ
bnQxNiA8QT4JIAkJCQkJCXJlY29yZENvdW50IDsgCSBFbUFsaWFzUk9NREJSZWNvcmRIZWFkZXIx
VHlwZSA8QT4JIAkJcmVjb3JkcyA7IAkgRW1BbGlhc1JPTURCUmVzb3VyY2VIZWFkZXIxVHlwZSA8
QT4JIAlyZXNvdXJjZXMgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uYW1lICAodm9p
ZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mbGFncyAgKHZvaWQp
IHsgcmV0dXJuICAzMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3ZlcnNpb24gICh2b2lk
KSB7IHJldHVybiAgMzQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jcmVhdGlvblRpbWUg
ICh2b2lkKSB7IHJldHVybiAgMzYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tb2RpZmlj
YXRpb25UaW1lICAodm9pZCkgeyByZXR1cm4gIDQwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfYmFja3VwVGltZSAgKHZvaWQpIHsgcmV0dXJuICA0NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX21vZGlmaWNhdGlvbk51bWJlciAgKHZvaWQpIHsgcmV0dXJuICA0OCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2FwcGluZm9MSUQgICh2b2lkKSB7IHJldHVybiAgNTIgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9zb3J0aW5mb0xJRCAgKHZvaWQpIHsgcmV0dXJuICA1NiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3R5cGUgICh2b2lkKSB7IHJldHVybiAgNjAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jcmVhdG9yICAodm9pZCkgeyByZXR1cm4gIDY0IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdW5pcXVlSURTZWVkICAodm9pZCkgeyByZXR1cm4g
IDY4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZXh0ZW5zaW9uSGVhZGVyICAodm9pZCkg
eyByZXR1cm4gIDcyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVjb3JkQ291bnQgICh2
b2lkKSB7IHJldHVybiAgNzYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZWNvcmRzICAo
dm9pZCkgeyByZXR1cm4gIDc4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVzb3VyY2Vz
ICAodm9pZCkgeyByZXR1cm4gIDc4IDsgfSAgCX07IAljbGFzcyBFbVByb3h5Uk9NREJIZWFkZXIx
VHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5Uk9NREJIZWFk
ZXIxVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVJPTURCSGVhZGVyMVR5cGUgIAkoY29uc3QgRW1Qcm94
eVJPTURCSGVhZGVyMVR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2
b2lkKQkJCXsgcmV0dXJuICAgICA3OCAgOyB9CUVtUHJveHlST01EQkhlYWRlcjFUeXBlICAmCQlv
cGVyYXRvcj0gKGNvbnN0IEVtUHJveHlST01EQkhlYWRlcjFUeXBlICAmKTsJRW1BbGlhc1JPTURC
SGVhZGVyMVR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNST01EQkhl
YWRlcjFUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3Qg
ewljaGFyCQkJX2J5dGVzWyAgICA3OCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1B
bGlhc2NoYXIgPExBUz4JIAkJCQkJCW5hbWUgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJ
CWZsYWdzIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQl2ZXJzaW9uIDsgCSBFbUFsaWFz
VUludDMyIDxMQVM+CSAJCQkJCQljcmVhdGlvblRpbWUgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4J
IAkJCQkJCW1vZGlmaWNhdGlvblRpbWUgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWJh
Y2t1cFRpbWUgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCW1vZGlmaWNhdGlvbk51bWJl
ciA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJYXBwaW5mb0xJRCA7IAkgRW1BbGlhc1VJ
bnQzMiA8TEFTPgkgCQkJCQkJc29ydGluZm9MSUQgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJ
CQkJCXR5cGUgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWNyZWF0b3IgOyAJIEVtQWxp
YXNVSW50MzIgPExBUz4JIAkJCQkJCXVuaXF1ZUlEU2VlZCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFT
PgkgCQkJCQkJZXh0ZW5zaW9uSGVhZGVyIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQly
ZWNvcmRDb3VudCA7IAkgRW1BbGlhc1JPTURCUmVjb3JkSGVhZGVyMVR5cGUgPExBUz4JIAkJcmVj
b3JkcyA7IAkgRW1BbGlhc1JPTURCUmVzb3VyY2VIZWFkZXIxVHlwZSA8TEFTPgkgCXJlc291cmNl
cyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25hbWUgICh2b2lkKSB7IHJldHVybiAg
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAodm9pZCkgeyByZXR1cm4gIDMy
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdmVyc2lvbiAgKHZvaWQpIHsgcmV0dXJuICAz
NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NyZWF0aW9uVGltZSAgKHZvaWQpIHsgcmV0
dXJuICAzNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21vZGlmaWNhdGlvblRpbWUgICh2
b2lkKSB7IHJldHVybiAgNDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9iYWNrdXBUaW1l
ICAodm9pZCkgeyByZXR1cm4gIDQ0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbW9kaWZp
Y2F0aW9uTnVtYmVyICAodm9pZCkgeyByZXR1cm4gIDQ4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfYXBwaW5mb0xJRCAgKHZvaWQpIHsgcmV0dXJuICA1MiA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3NvcnRpbmZvTElEICAodm9pZCkgeyByZXR1cm4gIDU2IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfdHlwZSAgKHZvaWQpIHsgcmV0dXJuICA2MCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2NyZWF0b3IgICh2b2lkKSB7IHJldHVybiAgNjQgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl91bmlxdWVJRFNlZWQgICh2b2lkKSB7IHJldHVybiAgNjggOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9leHRlbnNpb25IZWFkZXIgICh2b2lkKSB7IHJldHVybiAgNzIg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZWNvcmRDb3VudCAgKHZvaWQpIHsgcmV0dXJu
ICA3NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JlY29yZHMgICh2b2lkKSB7IHJldHVy
biAgNzggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNvdXJjZXMgICh2b2lkKSB7IHJl
dHVybiAgNzggOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1JP
TUNhcmRIZWFkZXI1VHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBl
IHB0cl90eXBlOwlFbUFsaWFzUk9NQ2FyZEhlYWRlcjVUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlh
c1JPTUNhcmRIZWFkZXI1VHlwZSAgCShjb25zdCBFbUFsaWFzUk9NQ2FyZEhlYWRlcjVUeXBlICAm
KTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMjU2ICA7IH0JRW1BbGlhc1JP
TUNhcmRIZWFkZXI1VHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNST01DYXJkSGVh
ZGVyNVR5cGUgIDxBPiYpOwlFbUFsaWFzUk9NQ2FyZEhlYWRlcjVUeXBlICA8QT4Jb3BlcmF0b3Jb
XSAoaW50KTsJY29uc3QgRW1BbGlhc1JPTUNhcmRIZWFkZXI1VHlwZSAgPEE+CW9wZXJhdG9yW10g
KGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNST01DYXJkSGVhZGVyNVR5cGUgIAkodm9pZCk7
CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlp
bml0U3RhY2sgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlyZXNldFZlY3RvciA7IAkgRW1B
bGlhc1VJbnQzMiA8QT4JIAkJCQkJCXNpZ25hdHVyZSA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJ
CQkJCWhkclZlcnNpb24gOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlmbGFncyA7IAkgRW1B
bGlhc2NoYXIgPEE+CSAJCQkJCQljYXJkTmFtZSA7IAkgRW1BbGlhc2NoYXIgPEE+CSAJCQkJCQlj
YXJkTWFudWYgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQljYXJkVmVyc2lvbiA7IAkgRW1B
bGlhc1VJbnQzMiA8QT4JIAkJCQkJCWNhcmRUaW1lIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJ
CQkJdW5rbm93bjEgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlyYW1saXN0IDsgCSBFbUFs
aWFzVUludDMyIDxBPgkgCQkJCQkJcndvZmZzZXQgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJ
CQlyd2xlbmd0aCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXJvb2Zmc2V0IDsgCSBFbUFs
aWFzVUludDMyIDxBPgkgCQkJCQkJYmlncm9tIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJ
Y2hlY2tzdW1MZW5ndGggOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQljaGVja3N1bVZhbHVl
IDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJcnd3b2Zmc2V0IDsgCSBFbUFsaWFzVUludDMy
IDxBPgkgCQkJCQkJcnd3bGVuZ3RoIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJaGFsRGlz
cGF0Y2ggOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQljb21wYW55SUQgOyAJIEVtQWxpYXNV
SW50MzIgPEE+CSAJCQkJCQloYWxJRCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXJvbVZl
cnNpb25OdW1iZXIgOyAJIEVtQWxpYXNjaGFyIDxBPgkgCQkJCQkJcm9tVmVyc2lvblN0cmluZyA7
IAkgRW1BbGlhc2NoYXIgPEE+CSAJCQkJCQlyZXNlcnZlZCA7ICAJICAgICBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2luaXRTdGFjayAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfcmVzZXRWZWN0b3IgICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3NpZ25hdHVyZSAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfaGRyVmVyc2lvbiAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAodm9pZCkgeyByZXR1cm4gIDE0IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2FyZE5hbWUgICh2b2lkKSB7IHJldHVybiAgMTYgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9jYXJkTWFudWYgICh2b2lkKSB7IHJldHVybiAgNDggOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jYXJkVmVyc2lvbiAgKHZvaWQpIHsgcmV0dXJuICA4
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NhcmRUaW1lICAodm9pZCkgeyByZXR1cm4g
IDgyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdW5rbm93bjEgICh2b2lkKSB7IHJldHVy
biAgODYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yYW1saXN0ICAodm9pZCkgeyByZXR1
cm4gIDg4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcndvZmZzZXQgICh2b2lkKSB7IHJl
dHVybiAgOTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yd2xlbmd0aCAgKHZvaWQpIHsg
cmV0dXJuICA5NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jvb2Zmc2V0ICAodm9pZCkg
eyByZXR1cm4gIDEwMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2JpZ3JvbSAgKHZvaWQp
IHsgcmV0dXJuICAxMDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jaGVja3N1bUxlbmd0
aCAgKHZvaWQpIHsgcmV0dXJuICAxMDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jaGVj
a3N1bVZhbHVlICAodm9pZCkgeyByZXR1cm4gIDExMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3J3d29mZnNldCAgKHZvaWQpIHsgcmV0dXJuICAxMTQgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9yd3dsZW5ndGggICh2b2lkKSB7IHJldHVybiAgMTE4IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfaGFsRGlzcGF0Y2ggICh2b2lkKSB7IHJldHVybiAgMTIyIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfY29tcGFueUlEICAodm9pZCkgeyByZXR1cm4gIDEyNiA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2hhbElEICAodm9pZCkgeyByZXR1cm4gIDEzMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3JvbVZlcnNpb25OdW1iZXIgICh2b2lkKSB7IHJldHVybiAg
MTM0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfcm9tVmVyc2lvblN0cmluZyAgKHZvaWQp
IHsgcmV0dXJuICAxMzggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNlcnZlZCAgKHZv
aWQpIHsgcmV0dXJuICAxNzAgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlST01DYXJkSGVhZGVyNVR5
cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVJPTUNhcmRIZWFk
ZXI1VHlwZSAgCSh2b2lkKTsJRW1Qcm94eVJPTUNhcmRIZWFkZXI1VHlwZSAgCShjb25zdCBFbVBy
b3h5Uk9NQ2FyZEhlYWRlcjVUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0
CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6
ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMjU2ICA7IH0JRW1Qcm94eVJPTUNhcmRIZWFkZXI1VHlw
ZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5Uk9NQ2FyZEhlYWRlcjVUeXBlICAmKTsJRW1B
bGlhc1JPTUNhcmRIZWFkZXI1VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1B
bGlhc1JPTUNhcmRIZWFkZXI1VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJp
dmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMjU2ICBdOwl9IGZMb2NhbERhdGE7CXB1
YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlpbml0U3RhY2sgOyAJIEVtQWxp
YXNVSW50MzIgPExBUz4JIAkJCQkJCXJlc2V0VmVjdG9yIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+
CSAJCQkJCQlzaWduYXR1cmUgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWhkclZlcnNp
b24gOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWZsYWdzIDsgCSBFbUFsaWFzY2hhciA8
TEFTPgkgCQkJCQkJY2FyZE5hbWUgOyAJIEVtQWxpYXNjaGFyIDxMQVM+CSAJCQkJCQljYXJkTWFu
dWYgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWNhcmRWZXJzaW9uIDsgCSBFbUFsaWFz
VUludDMyIDxMQVM+CSAJCQkJCQljYXJkVGltZSA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJ
CQkJdW5rbm93bjEgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXJhbWxpc3QgOyAJIEVt
QWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXJ3b2Zmc2V0IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+
CSAJCQkJCQlyd2xlbmd0aCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJcm9vZmZzZXQg
OyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWJpZ3JvbSA7IAkgRW1BbGlhc1VJbnQzMiA8
TEFTPgkgCQkJCQkJY2hlY2tzdW1MZW5ndGggOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJ
CWNoZWNrc3VtVmFsdWUgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCXJ3d29mZnNldCA7
IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJcnd3bGVuZ3RoIDsgCSBFbUFsaWFzVUludDMy
IDxMQVM+CSAJCQkJCQloYWxEaXNwYXRjaCA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJ
Y29tcGFueUlEIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQloYWxJRCA7IAkgRW1BbGlh
c1VJbnQzMiA8TEFTPgkgCQkJCQkJcm9tVmVyc2lvbk51bWJlciA7IAkgRW1BbGlhc2NoYXIgPExB
Uz4JIAkJCQkJCXJvbVZlcnNpb25TdHJpbmcgOyAJIEVtQWxpYXNjaGFyIDxMQVM+CSAJCQkJCQly
ZXNlcnZlZCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luaXRTdGFjayAgKHZvaWQp
IHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVzZXRWZWN0b3IgICh2
b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NpZ25hdHVyZSAg
KHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaGRyVmVyc2lv
biAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdz
ICAodm9pZCkgeyByZXR1cm4gIDE0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2FyZE5h
bWUgICh2b2lkKSB7IHJldHVybiAgMTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jYXJk
TWFudWYgICh2b2lkKSB7IHJldHVybiAgNDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9j
YXJkVmVyc2lvbiAgKHZvaWQpIHsgcmV0dXJuICA4MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2NhcmRUaW1lICAodm9pZCkgeyByZXR1cm4gIDgyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfdW5rbm93bjEgICh2b2lkKSB7IHJldHVybiAgODYgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9yYW1saXN0ICAodm9pZCkgeyByZXR1cm4gIDg4IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfcndvZmZzZXQgICh2b2lkKSB7IHJldHVybiAgOTIgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9yd2xlbmd0aCAgKHZvaWQpIHsgcmV0dXJuICA5NiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3Jvb2Zmc2V0ICAodm9pZCkgeyByZXR1cm4gIDEwMCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2JpZ3JvbSAgKHZvaWQpIHsgcmV0dXJuICAxMDQgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9jaGVja3N1bUxlbmd0aCAgKHZvaWQpIHsgcmV0dXJuICAxMDggOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jaGVja3N1bVZhbHVlICAodm9pZCkgeyByZXR1cm4g
IDExMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3J3d29mZnNldCAgKHZvaWQpIHsgcmV0
dXJuICAxMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yd3dsZW5ndGggICh2b2lkKSB7
IHJldHVybiAgMTE4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaGFsRGlzcGF0Y2ggICh2
b2lkKSB7IHJldHVybiAgMTIyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tcGFueUlE
ICAodm9pZCkgeyByZXR1cm4gIDEyNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2hhbElE
ICAodm9pZCkgeyByZXR1cm4gIDEzMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JvbVZl
cnNpb25OdW1iZXIgICh2b2lkKSB7IHJldHVybiAgMTM0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2Zfcm9tVmVyc2lvblN0cmluZyAgKHZvaWQpIHsgcmV0dXJuICAxMzggOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9yZXNlcnZlZCAgKHZvaWQpIHsgcmV0dXJuICAxNzAgOyB9ICAJfTsg
ICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc1JPTVN0b3JlSGVhZGVyNFR5cGUg
IAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlh
c1JPTVN0b3JlSGVhZGVyNFR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzUk9NU3RvcmVIZWFkZXI0
VHlwZSAgCShjb25zdCBFbUFsaWFzUk9NU3RvcmVIZWFkZXI0VHlwZSAgJik7CXB0cl90eXBlCQkJ
R2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNp
emUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDI1NiAgOyB9CUVtQWxpYXNST01TdG9yZUhlYWRlcjRU
eXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1JPTVN0b3JlSGVhZGVyNFR5cGUgIDxB
PiYpOwlFbUFsaWFzUk9NU3RvcmVIZWFkZXI0VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNv
bnN0IEVtQWxpYXNST01TdG9yZUhlYWRlcjRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25z
dDsJcHJpdmF0ZToJRW1BbGlhc1JPTVN0b3JlSGVhZGVyNFR5cGUgIAkodm9pZCk7CXB0cl90eXBl
CQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlzaWduYXR1cmUg
OyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQl2ZXJzaW9uIDsgCSBFbUFsaWFzVUludDE2IDxB
PgkgCQkJCQkJZmxhZ3MgOyAJIEVtQWxpYXNjaGFyIDxBPgkgCQkJCQkJbmFtZSA7IAkgRW1BbGlh
c1VJbnQzMiA8QT4JIAkJCQkJCWNyZWF0aW9uRGF0ZSA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJ
CQkJCWJhY2t1cERhdGUgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQloZWFwQWRkciA7IAkg
RW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCWluaXRBZGRyMSA7IAkgRW1BbGlhc1VJbnQzMiA8QT4J
IAkJCQkJCWluaXRBZGRyMiA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCWRiTElEIDsgCSBF
bUFsaWFzVUludDMyIDxBPgkgCQkJCQkJcmVzZXJ2ZWQgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJ
CQkJCQloZWFwU2l6ZSA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXJhbVNpemUgOyAgCSAg
ICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zaWduYXR1cmUgICh2b2lkKSB7IHJldHVybiAgMCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3ZlcnNpb24gICh2b2lkKSB7IHJldHVybiAgNCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAodm9pZCkgeyByZXR1cm4gIDYgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uYW1lICAodm9pZCkgeyByZXR1cm4gIDggOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9jcmVhdGlvbkRhdGUgICh2b2lkKSB7IHJldHVybiAgNDAg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9iYWNrdXBEYXRlICAodm9pZCkgeyByZXR1cm4g
IDQ0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaGVhcEFkZHIgICh2b2lkKSB7IHJldHVy
biAgNDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbml0QWRkcjEgICh2b2lkKSB7IHJl
dHVybiAgNTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pbml0QWRkcjIgICh2b2lkKSB7
IHJldHVybiAgNTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kYkxJRCAgKHZvaWQpIHsg
cmV0dXJuICA2MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jlc2VydmVkICAodm9pZCkg
eyByZXR1cm4gIDY0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaGVhcFNpemUgICh2b2lk
KSB7IHJldHVybiAgNjggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yYW1TaXplICAodm9p
ZCkgeyByZXR1cm4gIDcyIDsgfSAgCX07IAljbGFzcyBFbVByb3h5Uk9NU3RvcmVIZWFkZXI0VHlw
ZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5Uk9NU3RvcmVIZWFk
ZXI0VHlwZSAgCSh2b2lkKTsJRW1Qcm94eVJPTVN0b3JlSGVhZGVyNFR5cGUgIAkoY29uc3QgRW1Q
cm94eVJPTVN0b3JlSGVhZGVyNFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29u
c3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRT
aXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyNTYgIDsgfQlFbVByb3h5Uk9NU3RvcmVIZWFkZXI0
VHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5Uk9NU3RvcmVIZWFkZXI0VHlwZSAgJik7
CUVtQWxpYXNST01TdG9yZUhlYWRlcjRUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25z
dCBFbUFsaWFzUk9NU3RvcmVIZWFkZXI0VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25z
dDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMjU2ICBdOwl9IGZMb2NhbERh
dGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlzaWduYXR1cmUgOyAJ
IEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXZlcnNpb24gOyAJIEVtQWxpYXNVSW50MTYgPExB
Uz4JIAkJCQkJCWZsYWdzIDsgCSBFbUFsaWFzY2hhciA8TEFTPgkgCQkJCQkJbmFtZSA7IAkgRW1B
bGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJY3JlYXRpb25EYXRlIDsgCSBFbUFsaWFzVUludDMyIDxM
QVM+CSAJCQkJCQliYWNrdXBEYXRlIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQloZWFw
QWRkciA7IAkgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJaW5pdEFkZHIxIDsgCSBFbUFsaWFz
VUludDMyIDxMQVM+CSAJCQkJCQlpbml0QWRkcjIgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJ
CQkJCWRiTElEIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlyZXNlcnZlZCA7IAkgRW1B
bGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJaGVhcFNpemUgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4J
IAkJCQkJCXJhbVNpemUgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zaWduYXR1cmUg
ICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3ZlcnNpb24g
ICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAo
dm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uYW1lICAodm9p
ZCkgeyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jcmVhdGlvbkRhdGUg
ICh2b2lkKSB7IHJldHVybiAgNDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9iYWNrdXBE
YXRlICAodm9pZCkgeyByZXR1cm4gIDQ0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaGVh
cEFkZHIgICh2b2lkKSB7IHJldHVybiAgNDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9p
bml0QWRkcjEgICh2b2lkKSB7IHJldHVybiAgNTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9pbml0QWRkcjIgICh2b2lkKSB7IHJldHVybiAgNTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9kYkxJRCAgKHZvaWQpIHsgcmV0dXJuICA2MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3Jlc2VydmVkICAodm9pZCkgeyByZXR1cm4gIDY0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfaGVhcFNpemUgICh2b2lkKSB7IHJldHVybiAgNjggOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9yYW1TaXplICAodm9pZCkgeyByZXR1cm4gIDcyIDsgfSAgCX07ICAgCSAgdGVtcGxh
dGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNST01IZWFwSGVhZGVyMVR5cGUgIAl7CXB1YmxpYzoJ
dHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1JPTUhlYXBIZWFk
ZXIxVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNST01IZWFwSGVhZGVyMVR5cGUgIAkoY29uc3Qg
RW1BbGlhc1JPTUhlYXBIZWFkZXIxVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBj
b25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyBy
ZXR1cm4gICAgIDggIDsgfQlFbUFsaWFzUk9NSGVhcEhlYWRlcjFUeXBlICA8QT4mCW9wZXJhdG9y
PSAoY29uc3QgRW1BbGlhc1JPTUhlYXBIZWFkZXIxVHlwZSAgPEE+Jik7CUVtQWxpYXNST01IZWFw
SGVhZGVyMVR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzUk9NSGVhcEhl
YWRlcjFUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1JP
TUhlYXBIZWFkZXIxVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAg
RW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWZsYWdzIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJ
CQkJc2l6ZSA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCW1hc3RlclBvaW50ZXJzIDsgCSBF
bUFsaWFzVUludDE2IDxBPgkgCQkJCQkJbmV4dE1hc3RlclRhYmxlIDsgIAkgICAgIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfZmxhZ3MgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3NpemUgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX21hc3RlclBvaW50ZXJzICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9uZXh0TWFzdGVyVGFibGUgICh2b2lkKSB7IHJldHVybiAgNiA7IH0g
IAl9OyAJY2xhc3MgRW1Qcm94eVJPTUhlYXBIZWFkZXIxVHlwZSAgCXsJcHVibGljOgl0eXBlZGVm
IHZvaWQqIHB0cl90eXBlOwlFbVByb3h5Uk9NSGVhcEhlYWRlcjFUeXBlICAJKHZvaWQpOwlFbVBy
b3h5Uk9NSGVhcEhlYWRlcjFUeXBlICAJKGNvbnN0IEVtUHJveHlST01IZWFwSGVhZGVyMVR5cGUg
ICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAm
ZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAg
ICA4ICA7IH0JRW1Qcm94eVJPTUhlYXBIZWFkZXIxVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBF
bVByb3h5Uk9NSGVhcEhlYWRlcjFUeXBlICAmKTsJRW1BbGlhc1JPTUhlYXBIZWFkZXIxVHlwZSAg
PExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1JPTUhlYXBIZWFkZXIxVHlwZSAg
PExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9i
eXRlc1sgICAgOCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8
TEFTPgkgCQkJCQkJZmxhZ3MgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXNpemUgOyAJ
IEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCW1hc3RlclBvaW50ZXJzIDsgCSBFbUFsaWFzVUlu
dDE2IDxMQVM+CSAJCQkJCQluZXh0TWFzdGVyVGFibGUgOyAgCSAgICAgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9mbGFncyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2Zfc2l6ZSAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfbWFzdGVyUG9pbnRlcnMgICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX25leHRNYXN0ZXJUYWJsZSAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAgCX07ICAg
CSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNST01IZWFwSGVhZGVyMlR5cGUgIAl7
CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1JP
TUhlYXBIZWFkZXIyVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNST01IZWFwSGVhZGVyMlR5cGUg
IAkoY29uc3QgRW1BbGlhc1JPTUhlYXBIZWFkZXIyVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRy
CSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZv
aWQpCQkJeyByZXR1cm4gICAgIDEyICA7IH0JRW1BbGlhc1JPTUhlYXBIZWFkZXIyVHlwZSAgPEE+
JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNST01IZWFwSGVhZGVyMlR5cGUgIDxBPiYpOwlFbUFs
aWFzUk9NSGVhcEhlYWRlcjJUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlh
c1JPTUhlYXBIZWFkZXIyVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6
CUVtQWxpYXNST01IZWFwSGVhZGVyMlR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVi
bGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlmbGFncyA7IAkgRW1BbGlhc1VJbnQz
MiA8QT4JIAkJCQkJCXNpemUgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQltYXN0ZXJQb2lu
dGVycyA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCW5leHRNYXN0ZXJUYWJsZSA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9zaXplICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9tYXN0ZXJQb2ludGVycyAgKHZvaWQpIHsgcmV0dXJuICA2IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmV4dE1hc3RlclRhYmxlICAodm9pZCkgeyByZXR1
cm4gIDggOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlST01IZWFwSGVhZGVyMlR5cGUgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVJPTUhlYXBIZWFkZXIyVHlwZSAgCSh2
b2lkKTsJRW1Qcm94eVJPTUhlYXBIZWFkZXIyVHlwZSAgCShjb25zdCBFbVByb3h5Uk9NSGVhcEhl
YWRlcjJUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChw
dHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7
IHJldHVybiAgICAgMTIgIDsgfQlFbVByb3h5Uk9NSGVhcEhlYWRlcjJUeXBlICAmCQlvcGVyYXRv
cj0gKGNvbnN0IEVtUHJveHlST01IZWFwSGVhZGVyMlR5cGUgICYpOwlFbUFsaWFzUk9NSGVhcEhl
YWRlcjJUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzUk9NSGVhcEhl
YWRlcjJUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3Qg
ewljaGFyCQkJX2J5dGVzWyAgICAxMiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1B
bGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJZmxhZ3MgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJ
CQkJCXNpemUgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCW1hc3RlclBvaW50ZXJzIDsg
CSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQluZXh0TWFzdGVyVGFibGUgOyAgCSAgICAgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9mbGFncyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2Zfc2l6ZSAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfbWFzdGVyUG9pbnRlcnMgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX25leHRNYXN0ZXJUYWJsZSAgKHZvaWQpIHsgcmV0dXJuICA4
IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNST01IZWFwSGVh
ZGVyM1R5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlw
ZTsJRW1BbGlhc1JPTUhlYXBIZWFkZXIzVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNST01IZWFw
SGVhZGVyM1R5cGUgIAkoY29uc3QgRW1BbGlhc1JPTUhlYXBIZWFkZXIzVHlwZSAgJik7CXB0cl90
eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJ
CUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDE2ICA7IH0JRW1BbGlhc1JPTUhlYXBIZWFk
ZXIzVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNST01IZWFwSGVhZGVyM1R5cGUg
IDxBPiYpOwlFbUFsaWFzUk9NSGVhcEhlYWRlcjNUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJ
Y29uc3QgRW1BbGlhc1JPTUhlYXBIZWFkZXIzVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29u
c3Q7CXByaXZhdGU6CUVtQWxpYXNST01IZWFwSGVhZGVyM1R5cGUgIAkodm9pZCk7CXB0cl90eXBl
CQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlmbGFncyA7IAkg
RW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXNpemUgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJ
CQlmcmVlQ2h1bmsgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQltYXN0ZXJQb2ludGVycyA7
IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCW5leHRNYXN0ZXJUYWJsZSA7ICAJICAgICBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9zaXplICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9mcmVlQ2h1bmsgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX21hc3RlclBvaW50ZXJzICAodm9pZCkgeyByZXR1cm4gIDEwIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmV4dE1hc3RlclRhYmxlICAodm9pZCkgeyByZXR1cm4g
IDEyIDsgfSAgCX07IAljbGFzcyBFbVByb3h5Uk9NSGVhcEhlYWRlcjNUeXBlICAJewlwdWJsaWM6
CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlST01IZWFwSGVhZGVyM1R5cGUgIAkodm9p
ZCk7CUVtUHJveHlST01IZWFwSGVhZGVyM1R5cGUgIAkoY29uc3QgRW1Qcm94eVJPTUhlYXBIZWFk
ZXIzVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRy
X3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyBy
ZXR1cm4gICAgIDE2ICA7IH0JRW1Qcm94eVJPTUhlYXBIZWFkZXIzVHlwZSAgJgkJb3BlcmF0b3I9
IChjb25zdCBFbVByb3h5Uk9NSGVhcEhlYWRlcjNUeXBlICAmKTsJRW1BbGlhc1JPTUhlYXBIZWFk
ZXIzVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1JPTUhlYXBIZWFk
ZXIzVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJ
Y2hhcgkJCV9ieXRlc1sgICAgMTYgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxp
YXNVSW50MTYgPExBUz4JIAkJCQkJCWZsYWdzIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJ
CQlzaXplIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlmcmVlQ2h1bmsgOyAJIEVtQWxp
YXNVSW50MTYgPExBUz4JIAkJCQkJCW1hc3RlclBvaW50ZXJzIDsgCSBFbUFsaWFzVUludDMyIDxM
QVM+CSAJCQkJCQluZXh0TWFzdGVyVGFibGUgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9mbGFncyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
c2l6ZSAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZnJl
ZUNodW5rICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9t
YXN0ZXJQb2ludGVycyAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX25leHRNYXN0ZXJUYWJsZSAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gIAl9OyAgIAkg
IHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzUk9NREJEaXIxVHlwZSAgCXsJcHVibGlj
Ogl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzUk9NREJEaXIx
VHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNST01EQkRpcjFUeXBlICAJKGNvbnN0IEVtQWxpYXNS
T01EQkRpcjFUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJu
IGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNiAg
OyB9CUVtQWxpYXNST01EQkRpcjFUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1JP
TURCRGlyMVR5cGUgIDxBPiYpOwlFbUFsaWFzUk9NREJEaXIxVHlwZSAgPEE+CW9wZXJhdG9yW10g
KGludCk7CWNvbnN0IEVtQWxpYXNST01EQkRpcjFUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBj
b25zdDsJcHJpdmF0ZToJRW1BbGlhc1JPTURCRGlyMVR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJ
ZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQluZXh0VGFibGUgOyAJ
IEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQljb3VudCA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJ
CQkJCWRiTElEIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmV4dFRhYmxlICAodm9p
ZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb3VudCAgKHZvaWQp
IHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGJMSUQgICh2b2lkKSB7
IHJldHVybiAgNiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVJPTURCRGlyMVR5cGUgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVJPTURCRGlyMVR5cGUgIAkodm9pZCk7
CUVtUHJveHlST01EQkRpcjFUeXBlICAJKGNvbnN0IEVtUHJveHlST01EQkRpcjFUeXBlICAmKTsJ
cHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2Nh
bERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNiAg
OyB9CUVtUHJveHlST01EQkRpcjFUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlST01E
QkRpcjFUeXBlICAmKTsJRW1BbGlhc1JPTURCRGlyMVR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNST01EQkRpcjFUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNv
bnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA2ICBdOwl9IGZMb2NhbERh
dGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQluZXh0VGFibGUgOyAJ
IEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWNvdW50IDsgCSBFbUFsaWFzVUludDMyIDxMQVM+
CSAJCQkJCQlkYkxJRCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25leHRUYWJsZSAg
KHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY291bnQgICh2
b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RiTElEICAodm9p
ZCkgeyByZXR1cm4gIDYgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1B
bGlhc1JPTUhlYXBDaHVua0hkcjJUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6
cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNST01IZWFwQ2h1bmtIZHIyVHlwZSAgCShwdHJfdHlw
ZSk7CUVtQWxpYXNST01IZWFwQ2h1bmtIZHIyVHlwZSAgCShjb25zdCBFbUFsaWFzUk9NSGVhcENo
dW5rSGRyMlR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4g
ZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA4ICA7
IH0JRW1BbGlhc1JPTUhlYXBDaHVua0hkcjJUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1B
bGlhc1JPTUhlYXBDaHVua0hkcjJUeXBlICA8QT4mKTsJRW1BbGlhc1JPTUhlYXBDaHVua0hkcjJU
eXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1JPTUhlYXBDaHVua0hkcjJU
eXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1JPTUhlYXBD
aHVua0hkcjJUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFs
aWFzVUludDMyIDxBPgkgCQkJCQkJbG9uZzEgOyAJIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQls
b25nMiA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xvbmcxICAodm9pZCkgeyByZXR1
cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9sb25nMiAgKHZvaWQpIHsgcmV0dXJu
ICA0IDsgfSAgCX07IAljbGFzcyBFbVByb3h5Uk9NSGVhcENodW5rSGRyMlR5cGUgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eVJPTUhlYXBDaHVua0hkcjJUeXBlICAJ
KHZvaWQpOwlFbVByb3h5Uk9NSGVhcENodW5rSGRyMlR5cGUgIAkoY29uc3QgRW1Qcm94eVJPTUhl
YXBDaHVua0hkcjJUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0
dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9p
ZCkJCQl7IHJldHVybiAgICAgOCAgOyB9CUVtUHJveHlST01IZWFwQ2h1bmtIZHIyVHlwZSAgJgkJ
b3BlcmF0b3I9IChjb25zdCBFbVByb3h5Uk9NSGVhcENodW5rSGRyMlR5cGUgICYpOwlFbUFsaWFz
Uk9NSGVhcENodW5rSGRyMlR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxp
YXNST01IZWFwQ2h1bmtIZHIyVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJp
dmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgOCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJs
aWM6CSAgICAgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJbG9uZzEgOyAJIEVtQWxpYXNVSW50
MzIgPExBUz4JIAkJCQkJCWxvbmcyIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbG9u
ZzEgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xvbmcy
ICAodm9pZCkgeyByZXR1cm4gIDQgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xh
c3MgRW1BbGlhc1JPTUhlYXBDaHVua0hkcjFUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5h
bWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNST01IZWFwQ2h1bmtIZHIxVHlwZSAgCShw
dHJfdHlwZSk7CUVtQWxpYXNST01IZWFwQ2h1bmtIZHIxVHlwZSAgCShjb25zdCBFbUFsaWFzUk9N
SGVhcENodW5rSGRyMVR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAg
ICA2ICA7IH0JRW1BbGlhc1JPTUhlYXBDaHVua0hkcjFUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgRW1BbGlhc1JPTUhlYXBDaHVua0hkcjFUeXBlICA8QT4mKTsJRW1BbGlhc1JPTUhlYXBDaHVu
a0hkcjFUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1JPTUhlYXBDaHVu
a0hkcjFUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1JP
TUhlYXBDaHVua0hkcjFUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAg
ICBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJc2l6ZSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJ
CQkJbG9ja093bmVyIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQlmbGFncyA7IAkgRW1BbGlh
c1VJbnQxNiA8QT4JIAkJCQkJCWhPZmZzZXQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9zaXplICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9s
b2NrT3duZXIgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2ZsYWdzICAodm9pZCkgeyByZXR1cm4gIDMgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9o
T2Zmc2V0ICAodm9pZCkgeyByZXR1cm4gIDQgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlST01IZWFw
Q2h1bmtIZHIxVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5
Uk9NSGVhcENodW5rSGRyMVR5cGUgIAkodm9pZCk7CUVtUHJveHlST01IZWFwQ2h1bmtIZHIxVHlw
ZSAgCShjb25zdCBFbVByb3h5Uk9NSGVhcENodW5rSGRyMVR5cGUgICYpOwlwdHJfdHlwZQkJCUdl
dFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0
aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA2ICA7IH0JRW1Qcm94eVJP
TUhlYXBDaHVua0hkcjFUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlST01IZWFwQ2h1
bmtIZHIxVHlwZSAgJik7CUVtQWxpYXNST01IZWFwQ2h1bmtIZHIxVHlwZSAgPExBUz4Jb3BlcmF0
b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1JPTUhlYXBDaHVua0hkcjFUeXBlICA8TEFTPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA2
ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJ
CQlzaXplIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWxvY2tPd25lciA7IAkgRW1BbGlh
c1VJbnQ4IDxMQVM+CSAJCQkJCQlmbGFncyA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJ
aE9mZnNldCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NpemUgICh2b2lkKSB7IHJl
dHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xvY2tPd25lciAgKHZvaWQpIHsg
cmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmxhZ3MgICh2b2lkKSB7IHJl
dHVybiAgMyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2hPZmZzZXQgICh2b2lkKSB7IHJl
dHVybiAgNCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzUk9N
RnRyRmVhdHVyZVR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBw
dHJfdHlwZTsJRW1BbGlhc1JPTUZ0ckZlYXR1cmVUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1JP
TUZ0ckZlYXR1cmVUeXBlICAJKGNvbnN0IEVtQWxpYXNST01GdHJGZWF0dXJlVHlwZSAgJik7CXB0
cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXpl
X3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDYgIDsgfQlFbUFsaWFzUk9NRnRyRmVh
dHVyZVR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzUk9NRnRyRmVhdHVyZVR5cGUg
IDxBPiYpOwlFbUFsaWFzUk9NRnRyRmVhdHVyZVR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwlj
b25zdCBFbUFsaWFzUk9NRnRyRmVhdHVyZVR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0
Owlwcml2YXRlOglFbUFsaWFzUk9NRnRyRmVhdHVyZVR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJ
ZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQludW0gOyAJIEVtQWxp
YXNVSW50MzIgPEE+CSAJCQkJCQl2YWx1ZSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X251bSAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdmFs
dWUgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVJPTUZ0ckZlYXR1
cmVUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlST01GdHJG
ZWF0dXJlVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVJPTUZ0ckZlYXR1cmVUeXBlICAJKGNvbnN0IEVt
UHJveHlST01GdHJGZWF0dXJlVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25z
dAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNp
emUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDYgIDsgfQlFbVByb3h5Uk9NRnRyRmVhdHVyZVR5cGUg
ICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVJPTUZ0ckZlYXR1cmVUeXBlICAmKTsJRW1BbGlh
c1JPTUZ0ckZlYXR1cmVUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFz
Uk9NRnRyRmVhdHVyZVR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6
CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDYgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkg
ICAgIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCW51bSA7IAkgRW1BbGlhc1VJbnQzMiA8TEFT
PgkgCQkJCQkJdmFsdWUgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9udW0gICh2b2lk
KSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3ZhbHVlICAodm9pZCkg
eyByZXR1cm4gIDIgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlh
c1JPTUZ0ckNyZWF0b3JUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5
cGUgcHRyX3R5cGU7CUVtQWxpYXNST01GdHJDcmVhdG9yVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxp
YXNST01GdHJDcmVhdG9yVHlwZSAgCShjb25zdCBFbUFsaWFzUk9NRnRyQ3JlYXRvclR5cGUgICYp
OwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMg
c2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA2ICA7IH0JRW1BbGlhc1JPTUZ0
ckNyZWF0b3JUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1JPTUZ0ckNyZWF0b3JU
eXBlICA8QT4mKTsJRW1BbGlhc1JPTUZ0ckNyZWF0b3JUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50
KTsJY29uc3QgRW1BbGlhc1JPTUZ0ckNyZWF0b3JUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBj
b25zdDsJcHJpdmF0ZToJRW1BbGlhc1JPTUZ0ckNyZWF0b3JUeXBlICAJKHZvaWQpOwlwdHJfdHlw
ZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJY3JlYXRvciA7
IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCW51bUVudHJpZXMgOyAJIEVtQWxpYXNST01GdHJG
ZWF0dXJlVHlwZSA8QT4JIAkJCWZlYXR1cmUgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9jcmVhdG9yICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9udW1FbnRyaWVzICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9mZWF0dXJlICAodm9pZCkgeyByZXR1cm4gIDYgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlS
T01GdHJDcmVhdG9yVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVBy
b3h5Uk9NRnRyQ3JlYXRvclR5cGUgIAkodm9pZCk7CUVtUHJveHlST01GdHJDcmVhdG9yVHlwZSAg
CShjb25zdCBFbVByb3h5Uk9NRnRyQ3JlYXRvclR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgko
dm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6
ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA2ICA7IH0JRW1Qcm94eVJPTUZ0ckNy
ZWF0b3JUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlST01GdHJDcmVhdG9yVHlwZSAg
Jik7CUVtQWxpYXNST01GdHJDcmVhdG9yVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29u
c3QgRW1BbGlhc1JPTUZ0ckNyZWF0b3JUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0
Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA2ICBdOwl9IGZMb2NhbERhdGE7
CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQljcmVhdG9yIDsgCSBFbUFs
aWFzVUludDE2IDxMQVM+CSAJCQkJCQludW1FbnRyaWVzIDsgCSBFbUFsaWFzUk9NRnRyRmVhdHVy
ZVR5cGUgPExBUz4JIAkJCWZlYXR1cmUgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9j
cmVhdG9yICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9u
dW1FbnRyaWVzICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9mZWF0dXJlICAodm9pZCkgeyByZXR1cm4gIDYgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xh
c3MgQT4JY2xhc3MgRW1BbGlhc1JPTUZ0clRhYmxlVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5
cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzUk9NRnRyVGFibGVUeXBlICAJKHB0
cl90eXBlKTsJRW1BbGlhc1JPTUZ0clRhYmxlVHlwZSAgCShjb25zdCBFbUFsaWFzUk9NRnRyVGFi
bGVUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7
IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMiAgOyB9CUVt
QWxpYXNST01GdHJUYWJsZVR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzUk9NRnRy
VGFibGVUeXBlICA8QT4mKTsJRW1BbGlhc1JPTUZ0clRhYmxlVHlwZSAgPEE+CW9wZXJhdG9yW10g
KGludCk7CWNvbnN0IEVtQWxpYXNST01GdHJUYWJsZVR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQp
IGNvbnN0Owlwcml2YXRlOglFbUFsaWFzUk9NRnRyVGFibGVUeXBlICAJKHZvaWQpOwlwdHJfdHlw
ZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJbnVtRW50cmll
cyA7IAkgRW1BbGlhc1JPTUZ0ckNyZWF0b3JUeXBlIDxBPgkgCQkJY3JlYXRvciA7ICAJICAgICBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX251bUVudHJpZXMgICh2b2lkKSB7IHJldHVybiAgMCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2NyZWF0b3IgICh2b2lkKSB7IHJldHVybiAgMiA7IH0g
IAl9OyAJY2xhc3MgRW1Qcm94eVJPTUZ0clRhYmxlVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZv
aWQqIHB0cl90eXBlOwlFbVByb3h5Uk9NRnRyVGFibGVUeXBlICAJKHZvaWQpOwlFbVByb3h5Uk9N
RnRyVGFibGVUeXBlICAJKGNvbnN0IEVtUHJveHlST01GdHJUYWJsZVR5cGUgICYpOwlwdHJfdHlw
ZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsg
fQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyICA7IH0JRW1Q
cm94eVJPTUZ0clRhYmxlVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5Uk9NRnRyVGFi
bGVUeXBlICAmKTsJRW1BbGlhc1JPTUZ0clRhYmxlVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50
KTsJY29uc3QgRW1BbGlhc1JPTUZ0clRhYmxlVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBj
b25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMiAgXTsJfSBmTG9jYWxE
YXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJbnVtRW50cmllcyA7
IAkgRW1BbGlhc1JPTUZ0ckNyZWF0b3JUeXBlIDxMQVM+CSAJCQljcmVhdG9yIDsgIAkgICAgIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbnVtRW50cmllcyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY3JlYXRvciAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAg
CX07ICAgIAogIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzQ29udHJvbEF0dHJUeXBl
ICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxp
YXNDb250cm9sQXR0clR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzQ29udHJvbEF0dHJUeXBlICAJ
KGNvbnN0IEVtQWxpYXNDb250cm9sQXR0clR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9p
ZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICAyICA7IH0JRW1BbGlhc0NvbnRyb2xBdHRyVHlwZSAgPEE+JglvcGVyYXRv
cj0gKGNvbnN0IEVtQWxpYXNDb250cm9sQXR0clR5cGUgIDxBPiYpOwlFbUFsaWFzQ29udHJvbEF0
dHJUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0NvbnRyb2xBdHRyVHlw
ZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNDb250cm9sQXR0
clR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNJbnQx
NiA8QT4JIAkJCQkJCWZsYWdzIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmxhZ3Mg
ICh2b2lkKSB7IHJldHVybiAgMCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eUNvbnRyb2xBdHRyVHlw
ZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5Q29udHJvbEF0dHJU
eXBlICAJKHZvaWQpOwlFbVByb3h5Q29udHJvbEF0dHJUeXBlICAJKGNvbnN0IEVtUHJveHlDb250
cm9sQXR0clR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4g
KHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICAyICA7IH0JRW1Qcm94eUNvbnRyb2xBdHRyVHlwZSAgJgkJb3BlcmF0b3I9
IChjb25zdCBFbVByb3h5Q29udHJvbEF0dHJUeXBlICAmKTsJRW1BbGlhc0NvbnRyb2xBdHRyVHlw
ZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0NvbnRyb2xBdHRyVHlwZSAg
PExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9i
eXRlc1sgICAgMiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc0ludDE2IDxM
QVM+CSAJCQkJCQlmbGFncyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAo
dm9pZCkgeyByZXR1cm4gIDAgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3Mg
RW1BbGlhc0NvbnRyb2xUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5
cGUgcHRyX3R5cGU7CUVtQWxpYXNDb250cm9sVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNDb250
cm9sVHlwZSAgCShjb25zdCBFbUFsaWFzQ29udHJvbFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0
cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2
b2lkKQkJCXsgcmV0dXJuICAgICAyMCAgOyB9CUVtQWxpYXNDb250cm9sVHlwZSAgPEE+JglvcGVy
YXRvcj0gKGNvbnN0IEVtQWxpYXNDb250cm9sVHlwZSAgPEE+Jik7CUVtQWxpYXNDb250cm9sVHlw
ZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNDb250cm9sVHlwZSAgPEE+CW9w
ZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNDb250cm9sVHlwZSAgCSh2b2lk
KTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJ
aWQgOyAJIEVtQWxpYXNSZWN0YW5nbGVUeXBlIDxBPgkgCQkJCWJvdW5kcyA7IAkgRW1BbGlhc2Vt
dXB0ciA8QT4JIAkJCQkJCXRleHQgOyAJIEVtQWxpYXNDb250cm9sQXR0clR5cGUgPEE+CSAJCQlh
dHRyIDsgCSBFbUFsaWFzQ29udHJvbFN0eWxlVHlwZSA8QT4JIAkJCXN0eWxlIDsgCSBFbUFsaWFz
Rm9udElEIDxBPgkgCQkJCQkJZm9udCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJZ3JvdXAg
OyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXJlc2VydmVkIDsgIAkgICAgIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfaWQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2JvdW5kcyAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfdGV4dCAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2F0dHIgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9zdHlsZSAgKHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2ZvbnQgICh2b2lkKSB7IHJldHVybiAgMTcgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9n
cm91cCAgKHZvaWQpIHsgcmV0dXJuICAxOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jl
c2VydmVkICAodm9pZCkgeyByZXR1cm4gIDE5IDsgfSAgCX07IAljbGFzcyBFbVByb3h5Q29udHJv
bFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUNvbnRyb2xU
eXBlICAJKHZvaWQpOwlFbVByb3h5Q29udHJvbFR5cGUgIAkoY29uc3QgRW1Qcm94eUNvbnRyb2xU
eXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlw
ZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVy
biAgICAgMjAgIDsgfQlFbVByb3h5Q29udHJvbFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Q
cm94eUNvbnRyb2xUeXBlICAmKTsJRW1BbGlhc0NvbnRyb2xUeXBlICA8TEFTPglvcGVyYXRvcltd
IChpbnQpOwljb25zdCBFbUFsaWFzQ29udHJvbFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkg
Y29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDIwICBdOwl9IGZMb2Nh
bERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWlkIDsgCSBFbUFs
aWFzUmVjdGFuZ2xlVHlwZSA8TEFTPgkgCQkJCWJvdW5kcyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFT
PgkgCQkJCQkJdGV4dCA7IAkgRW1BbGlhc0NvbnRyb2xBdHRyVHlwZSA8TEFTPgkgCQkJYXR0ciA7
IAkgRW1BbGlhc0NvbnRyb2xTdHlsZVR5cGUgPExBUz4JIAkJCXN0eWxlIDsgCSBFbUFsaWFzRm9u
dElEIDxMQVM+CSAJCQkJCQlmb250IDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCWdyb3Vw
IDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXJlc2VydmVkIDsgIAkgICAgIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfaWQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2JvdW5kcyAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfdGV4dCAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2F0dHIgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9zdHlsZSAgKHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2ZvbnQgICh2b2lkKSB7IHJldHVybiAgMTcgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9ncm91cCAgKHZvaWQpIHsgcmV0dXJuICAxOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X3Jlc2VydmVkICAodm9pZCkgeyByZXR1cm4gIDE5IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNs
YXNzIEE+CWNsYXNzIEVtQWxpYXNHcmFwaGljQ29udHJvbFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRl
ZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0dyYXBoaWNDb250cm9sVHlw
ZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNHcmFwaGljQ29udHJvbFR5cGUgIAkoY29uc3QgRW1BbGlh
c0dyYXBoaWNDb250cm9sVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4g
ICAgIDIwICA7IH0JRW1BbGlhc0dyYXBoaWNDb250cm9sVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNv
bnN0IEVtQWxpYXNHcmFwaGljQ29udHJvbFR5cGUgIDxBPiYpOwlFbUFsaWFzR3JhcGhpY0NvbnRy
b2xUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0dyYXBoaWNDb250cm9s
VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNHcmFwaGlj
Q29udHJvbFR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxp
YXNVSW50MTYgPEE+CSAJCQkJCQlpZCA7IAkgRW1BbGlhc1JlY3RhbmdsZVR5cGUgPEE+CSAJCQkJ
Ym91bmRzIDsgCSBFbUFsaWFzRG1SZXNJRCA8QT4JIAkJCQkJYml0bWFwSUQgOyAJIEVtQWxpYXNE
bVJlc0lEIDxBPgkgCQkJCQlzZWxlY3RlZEJpdG1hcElEIDsgCSBFbUFsaWFzQ29udHJvbEF0dHJU
eXBlIDxBPgkgCQkJYXR0ciA7IAkgRW1BbGlhc0NvbnRyb2xTdHlsZVR5cGUgPEE+CSAJCQlzdHls
ZSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJdW51c2VkIDsgCSBFbUFsaWFzVUludDggPEE+
CSAJCQkJCQlncm91cCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJcmVzZXJ2ZWQgOyAgCSAg
ICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYm91bmRzICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9iaXRtYXBJRCAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3NlbGVjdGVkQml0bWFwSUQgICh2b2lkKSB7IHJldHVybiAg
MTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hdHRyICAodm9pZCkgeyByZXR1cm4gIDE0
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3R5bGUgICh2b2lkKSB7IHJldHVybiAgMTYg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91bnVzZWQgICh2b2lkKSB7IHJldHVybiAgMTcg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ncm91cCAgKHZvaWQpIHsgcmV0dXJuICAxOCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jlc2VydmVkICAodm9pZCkgeyByZXR1cm4gIDE5
IDsgfSAgCX07IAljbGFzcyBFbVByb3h5R3JhcGhpY0NvbnRyb2xUeXBlICAJewlwdWJsaWM6CXR5
cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlHcmFwaGljQ29udHJvbFR5cGUgIAkodm9pZCk7
CUVtUHJveHlHcmFwaGljQ29udHJvbFR5cGUgIAkoY29uc3QgRW1Qcm94eUdyYXBoaWNDb250cm9s
VHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5
cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1
cm4gICAgIDIwICA7IH0JRW1Qcm94eUdyYXBoaWNDb250cm9sVHlwZSAgJgkJb3BlcmF0b3I9IChj
b25zdCBFbVByb3h5R3JhcGhpY0NvbnRyb2xUeXBlICAmKTsJRW1BbGlhc0dyYXBoaWNDb250cm9s
VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0dyYXBoaWNDb250cm9s
VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hh
cgkJCV9ieXRlc1sgICAgMjAgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNV
SW50MTYgPExBUz4JIAkJCQkJCWlkIDsgCSBFbUFsaWFzUmVjdGFuZ2xlVHlwZSA8TEFTPgkgCQkJ
CWJvdW5kcyA7IAkgRW1BbGlhc0RtUmVzSUQgPExBUz4JIAkJCQkJYml0bWFwSUQgOyAJIEVtQWxp
YXNEbVJlc0lEIDxMQVM+CSAJCQkJCXNlbGVjdGVkQml0bWFwSUQgOyAJIEVtQWxpYXNDb250cm9s
QXR0clR5cGUgPExBUz4JIAkJCWF0dHIgOyAJIEVtQWxpYXNDb250cm9sU3R5bGVUeXBlIDxMQVM+
CSAJCQlzdHlsZSA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQl1bnVzZWQgOyAJIEVtQWxp
YXNVSW50OCA8TEFTPgkgCQkJCQkJZ3JvdXAgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJ
cmVzZXJ2ZWQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pZCAgKHZvaWQpIHsgcmV0
dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYm91bmRzICAodm9pZCkgeyByZXR1
cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9iaXRtYXBJRCAgKHZvaWQpIHsgcmV0
dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NlbGVjdGVkQml0bWFwSUQgICh2
b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hdHRyICAodm9p
ZCkgeyByZXR1cm4gIDE0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3R5bGUgICh2b2lk
KSB7IHJldHVybiAgMTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91bnVzZWQgICh2b2lk
KSB7IHJldHVybiAgMTcgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ncm91cCAgKHZvaWQp
IHsgcmV0dXJuICAxOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jlc2VydmVkICAodm9p
ZCkgeyByZXR1cm4gIDE5IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVt
QWxpYXNTbGlkZXJDb250cm9sVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0
cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzU2xpZGVyQ29udHJvbFR5cGUgIAkocHRyX3R5cGUpOwlF
bUFsaWFzU2xpZGVyQ29udHJvbFR5cGUgIAkoY29uc3QgRW1BbGlhc1NsaWRlckNvbnRyb2xUeXBl
ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3Rh
dGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMzAgIDsgfQlFbUFsaWFz
U2xpZGVyQ29udHJvbFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzU2xpZGVyQ29u
dHJvbFR5cGUgIDxBPiYpOwlFbUFsaWFzU2xpZGVyQ29udHJvbFR5cGUgIDxBPglvcGVyYXRvcltd
IChpbnQpOwljb25zdCBFbUFsaWFzU2xpZGVyQ29udHJvbFR5cGUgIDxBPglvcGVyYXRvcltdIChp
bnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzU2xpZGVyQ29udHJvbFR5cGUgIAkodm9pZCk7CXB0
cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlpZCA7
IAkgRW1BbGlhc1JlY3RhbmdsZVR5cGUgPEE+CSAJCQkJYm91bmRzIDsgCSBFbUFsaWFzRG1SZXNJ
RCA8QT4JIAkJCQkJdGh1bWJJRCA7IAkgRW1BbGlhc0RtUmVzSUQgPEE+CSAJCQkJCWJhY2tncm91
bmRJRCA7IAkgRW1BbGlhc0NvbnRyb2xBdHRyVHlwZSA8QT4JIAkJCWF0dHIgOyAJIEVtQWxpYXND
b250cm9sU3R5bGVUeXBlIDxBPgkgCQkJc3R5bGUgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJ
CXJlc2VydmVkIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJbWluVmFsdWUgOyAJIEVtQWxp
YXNVSW50MTYgPEE+CSAJCQkJCQltYXhWYWx1ZSA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJ
CXBhZ2VTaXplIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJdmFsdWUgOyAJIEVtQWxpYXNl
bXVwdHIgPEE+CSAJCQkJCQlhY3RpdmVTbGlkZXJQIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfaWQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2JvdW5kcyAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
dGh1bWJJRCAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2JhY2tncm91bmRJRCAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2F0dHIgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9zdHlsZSAgKHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3Jlc2VydmVkICAodm9pZCkgeyByZXR1cm4gIDE3IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfbWluVmFsdWUgICh2b2lkKSB7IHJldHVybiAgMTggOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9tYXhWYWx1ZSAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX3BhZ2VTaXplICAodm9pZCkgeyByZXR1cm4gIDIyIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfdmFsdWUgICh2b2lkKSB7IHJldHVybiAgMjQgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9hY3RpdmVTbGlkZXJQICAodm9pZCkgeyByZXR1cm4gIDI2IDsgfSAgCX07IAlj
bGFzcyBFbVByb3h5U2xpZGVyQ29udHJvbFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBw
dHJfdHlwZTsJRW1Qcm94eVNsaWRlckNvbnRyb2xUeXBlICAJKHZvaWQpOwlFbVByb3h5U2xpZGVy
Q29udHJvbFR5cGUgIAkoY29uc3QgRW1Qcm94eVNsaWRlckNvbnRyb2xUeXBlICAmKTsJcHRyX3R5
cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7
IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMzAgIDsgfQlF
bVByb3h5U2xpZGVyQ29udHJvbFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVNsaWRl
ckNvbnRyb2xUeXBlICAmKTsJRW1BbGlhc1NsaWRlckNvbnRyb2xUeXBlICA8TEFTPglvcGVyYXRv
cltdIChpbnQpOwljb25zdCBFbUFsaWFzU2xpZGVyQ29udHJvbFR5cGUgIDxMQVM+CW9wZXJhdG9y
W10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDMwICBd
Owl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlp
ZCA7IAkgRW1BbGlhc1JlY3RhbmdsZVR5cGUgPExBUz4JIAkJCQlib3VuZHMgOyAJIEVtQWxpYXNE
bVJlc0lEIDxMQVM+CSAJCQkJCXRodW1iSUQgOyAJIEVtQWxpYXNEbVJlc0lEIDxMQVM+CSAJCQkJ
CWJhY2tncm91bmRJRCA7IAkgRW1BbGlhc0NvbnRyb2xBdHRyVHlwZSA8TEFTPgkgCQkJYXR0ciA7
IAkgRW1BbGlhc0NvbnRyb2xTdHlsZVR5cGUgPExBUz4JIAkJCXN0eWxlIDsgCSBFbUFsaWFzVUlu
dDggPExBUz4JIAkJCQkJCXJlc2VydmVkIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlt
aW5WYWx1ZSA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJbWF4VmFsdWUgOyAJIEVtQWxp
YXNVSW50MTYgPExBUz4JIAkJCQkJCXBhZ2VTaXplIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJ
CQkJCQl2YWx1ZSA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJYWN0aXZlU2xpZGVyUCA7
ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2lkICAodm9pZCkgeyByZXR1cm4gIDAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ib3VuZHMgICh2b2lkKSB7IHJldHVybiAgMiA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RodW1iSUQgICh2b2lkKSB7IHJldHVybiAgMTAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9iYWNrZ3JvdW5kSUQgICh2b2lkKSB7IHJldHVybiAg
MTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hdHRyICAodm9pZCkgeyByZXR1cm4gIDE0
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3R5bGUgICh2b2lkKSB7IHJldHVybiAgMTYg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNlcnZlZCAgKHZvaWQpIHsgcmV0dXJuICAx
NyA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21pblZhbHVlICAodm9pZCkgeyByZXR1cm4g
IDE4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbWF4VmFsdWUgICh2b2lkKSB7IHJldHVy
biAgMjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wYWdlU2l6ZSAgKHZvaWQpIHsgcmV0
dXJuICAyMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3ZhbHVlICAodm9pZCkgeyByZXR1
cm4gIDI0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWN0aXZlU2xpZGVyUCAgKHZvaWQp
IHsgcmV0dXJuICAyNiA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFs
aWFzQml0bWFwVHlwZVYyICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUg
cHRyX3R5cGU7CUVtQWxpYXNCaXRtYXBUeXBlVjIgIAkocHRyX3R5cGUpOwlFbUFsaWFzQml0bWFw
VHlwZVYyICAJKGNvbnN0IEVtQWxpYXNCaXRtYXBUeXBlVjIgICYpOwlwdHJfdHlwZQkJCUdldFB0
cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2
b2lkKQkJCXsgcmV0dXJuICAgICAxNiAgOyB9CUVtQWxpYXNCaXRtYXBUeXBlVjIgIDxBPiYJb3Bl
cmF0b3I9IChjb25zdCBFbUFsaWFzQml0bWFwVHlwZVYyICA8QT4mKTsJRW1BbGlhc0JpdG1hcFR5
cGVWMiAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNCaXRtYXBUeXBlVjIgIDxB
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzQml0bWFwVHlwZVYyICAJ
KHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzSW50MTYgPEE+CSAJ
CQkJCQl3aWR0aCA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJaGVpZ2h0IDsgCSBFbUFsaWFz
VUludDE2IDxBPgkgCQkJCQkJcm93Qnl0ZXMgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlm
bGFncyA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJcGl4ZWxTaXplIDsgCSBFbUFsaWFzVUlu
dDggPEE+CSAJCQkJCQl2ZXJzaW9uIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJbmV4dERl
cHRoT2Zmc2V0IDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQl0cmFuc3BhcmVudEluZGV4IDsg
CSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQljb21wcmVzc2lvblR5cGUgOyAJIEVtQWxpYXNVSW50
MTYgPEE+CSAJCQkJCQlyZXNlcnZlZCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3dp
ZHRoICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9oZWln
aHQgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jvd0J5
dGVzICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mbGFn
cyAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcGl4ZWxT
aXplICAodm9pZCkgeyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl92ZXJz
aW9uICAodm9pZCkgeyByZXR1cm4gIDkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uZXh0
RGVwdGhPZmZzZXQgICh2b2lkKSB7IHJldHVybiAgMTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl90cmFuc3BhcmVudEluZGV4ICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfY29tcHJlc3Npb25UeXBlICAodm9pZCkgeyByZXR1cm4gIDEzIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVzZXJ2ZWQgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9
ICAJfTsgCWNsYXNzIEVtUHJveHlCaXRtYXBUeXBlVjIgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lk
KiBwdHJfdHlwZTsJRW1Qcm94eUJpdG1hcFR5cGVWMiAgCSh2b2lkKTsJRW1Qcm94eUJpdG1hcFR5
cGVWMiAgCShjb25zdCBFbVByb3h5Qml0bWFwVHlwZVYyICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJ
KHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNp
emVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTYgIDsgfQlFbVByb3h5Qml0bWFw
VHlwZVYyICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlCaXRtYXBUeXBlVjIgICYpOwlFbUFs
aWFzQml0bWFwVHlwZVYyICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzQml0
bWFwVHlwZVYyICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3Qg
ewljaGFyCQkJX2J5dGVzWyAgICAxNiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1B
bGlhc0ludDE2IDxMQVM+CSAJCQkJCQl3aWR0aCA7IAkgRW1BbGlhc0ludDE2IDxMQVM+CSAJCQkJ
CQloZWlnaHQgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXJvd0J5dGVzIDsgCSBFbUFs
aWFzVUludDE2IDxMQVM+CSAJCQkJCQlmbGFncyA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJ
CQlwaXhlbFNpemUgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJdmVyc2lvbiA7IAkgRW1B
bGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJbmV4dERlcHRoT2Zmc2V0IDsgCSBFbUFsaWFzVUludDgg
PExBUz4JIAkJCQkJCXRyYW5zcGFyZW50SW5kZXggOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJ
CQkJY29tcHJlc3Npb25UeXBlIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlyZXNlcnZl
ZCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3dpZHRoICAodm9pZCkgeyByZXR1cm4g
IDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9oZWlnaHQgICh2b2lkKSB7IHJldHVybiAg
MiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jvd0J5dGVzICAodm9pZCkgeyByZXR1cm4g
IDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mbGFncyAgKHZvaWQpIHsgcmV0dXJuICA2
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcGl4ZWxTaXplICAodm9pZCkgeyByZXR1cm4g
IDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl92ZXJzaW9uICAodm9pZCkgeyByZXR1cm4g
IDkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uZXh0RGVwdGhPZmZzZXQgICh2b2lkKSB7
IHJldHVybiAgMTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90cmFuc3BhcmVudEluZGV4
ICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29tcHJl
c3Npb25UeXBlICAodm9pZCkgeyByZXR1cm4gIDEzIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfcmVzZXJ2ZWQgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8
Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0JpdG1hcFR5cGVWMyAgCXsJcHVibGljOgl0eXBlZGVmIHR5
cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzQml0bWFwVHlwZVYzICAJKHB0cl90
eXBlKTsJRW1BbGlhc0JpdG1hcFR5cGVWMyAgCShjb25zdCBFbUFsaWFzQml0bWFwVHlwZVYzICAm
KTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMjQgIDsgfQlFbUFsaWFzQml0
bWFwVHlwZVYzICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0JpdG1hcFR5cGVWMyAgPEE+
Jik7CUVtQWxpYXNCaXRtYXBUeXBlVjMgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFs
aWFzQml0bWFwVHlwZVYzICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1B
bGlhc0JpdG1hcFR5cGVWMyAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAg
RW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJd2lkdGggOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJ
CWhlaWdodCA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXJvd0J5dGVzIDsgCSBFbUFsaWFz
VUludDE2IDxBPgkgCQkJCQkJZmxhZ3MgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXBpeGVs
U2l6ZSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJdmVyc2lvbiA7IAkgRW1BbGlhc1VJbnQ4
IDxBPgkgCQkJCQkJc2l6ZSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJcGl4ZWxGb3JtYXQg
OyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCXVudXNlZCA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkg
CQkJCQkJY29tcHJlc3Npb25UeXBlIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJZGVuc2l0
eSA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCXRyYW5zcGFyZW50VmFsdWUgOyAJIEVtQWxp
YXNVSW50MzIgPEE+CSAJCQkJCQluZXh0RGVwdGhPZmZzZXQgOyAgCSAgICAgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl93aWR0aCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfaGVpZ2h0ICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9yb3dCeXRlcyAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfZmxhZ3MgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3BpeGVsU2l6ZSAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfdmVyc2lvbiAgKHZvaWQpIHsgcmV0dXJuICA5IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2Zfc2l6ZSAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3BpeGVsRm9ybWF0ICAodm9pZCkgeyByZXR1cm4gIDExIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfdW51c2VkICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfY29tcHJlc3Npb25UeXBlICAodm9pZCkgeyByZXR1cm4gIDEzIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGVuc2l0eSAgKHZvaWQpIHsgcmV0dXJuICAxNCA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX3RyYW5zcGFyZW50VmFsdWUgICh2b2lkKSB7IHJldHVybiAg
MTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uZXh0RGVwdGhPZmZzZXQgICh2b2lkKSB7
IHJldHVybiAgMjAgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlCaXRtYXBUeXBlVjMgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUJpdG1hcFR5cGVWMyAgCSh2b2lkKTsJ
RW1Qcm94eUJpdG1hcFR5cGVWMyAgCShjb25zdCBFbVByb3h5Qml0bWFwVHlwZVYzICAmKTsJcHRy
X3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERh
dGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMjQgIDsg
fQlFbVByb3h5Qml0bWFwVHlwZVYzICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlCaXRtYXBU
eXBlVjMgICYpOwlFbUFsaWFzQml0bWFwVHlwZVYzICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwlj
b25zdCBFbUFsaWFzQml0bWFwVHlwZVYzICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAyNCAgXTsJfSBmTG9jYWxEYXRhOwlw
dWJsaWM6CSAgICAgRW1BbGlhc0ludDE2IDxMQVM+CSAJCQkJCQl3aWR0aCA7IAkgRW1BbGlhc0lu
dDE2IDxMQVM+CSAJCQkJCQloZWlnaHQgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXJv
d0J5dGVzIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlmbGFncyA7IAkgRW1BbGlhc1VJ
bnQ4IDxMQVM+CSAJCQkJCQlwaXhlbFNpemUgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJ
dmVyc2lvbiA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlzaXplIDsgCSBFbUFsaWFzVUlu
dDggPExBUz4JIAkJCQkJCXBpeGVsRm9ybWF0IDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJ
CXVudXNlZCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQljb21wcmVzc2lvblR5cGUgOyAJ
IEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWRlbnNpdHkgOyAJIEVtQWxpYXNVSW50MzIgPExB
Uz4JIAkJCQkJCXRyYW5zcGFyZW50VmFsdWUgOyAJIEVtQWxpYXNVSW50MzIgPExBUz4JIAkJCQkJ
CW5leHREZXB0aE9mZnNldCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3dpZHRoICAo
dm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9oZWlnaHQgICh2
b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jvd0J5dGVzICAo
dm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mbGFncyAgKHZv
aWQpIHsgcmV0dXJuICA2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcGl4ZWxTaXplICAo
dm9pZCkgeyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl92ZXJzaW9uICAo
dm9pZCkgeyByZXR1cm4gIDkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zaXplICAodm9p
ZCkgeyByZXR1cm4gIDEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcGl4ZWxGb3JtYXQg
ICh2b2lkKSB7IHJldHVybiAgMTEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl91bnVzZWQg
ICh2b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb21wcmVz
c2lvblR5cGUgICh2b2lkKSB7IHJldHVybiAgMTMgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9kZW5zaXR5ICAodm9pZCkgeyByZXR1cm4gIDE0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfdHJhbnNwYXJlbnRWYWx1ZSAgKHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX25leHREZXB0aE9mZnNldCAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gIAl9
OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzRnJhbWVCaXRzVHlwZSAgCXsJ
cHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzRnJh
bWVCaXRzVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNGcmFtZUJpdHNUeXBlICAJKGNvbnN0IEVt
QWxpYXNGcmFtZUJpdHNUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsg
cmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAg
ICAgMiAgOyB9CUVtQWxpYXNGcmFtZUJpdHNUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1B
bGlhc0ZyYW1lQml0c1R5cGUgIDxBPiYpOwlFbUFsaWFzRnJhbWVCaXRzVHlwZSAgPEE+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNGcmFtZUJpdHNUeXBlICA8QT4Jb3BlcmF0b3JbXSAo
aW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc0ZyYW1lQml0c1R5cGUgIAkodm9pZCk7CXB0cl90
eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlmbGFncyA7
ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAodm9pZCkgeyByZXR1cm4gIDAg
OyB9ICAJfTsgCWNsYXNzIEVtUHJveHlGcmFtZUJpdHNUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYg
dm9pZCogcHRyX3R5cGU7CUVtUHJveHlGcmFtZUJpdHNUeXBlICAJKHZvaWQpOwlFbVByb3h5RnJh
bWVCaXRzVHlwZSAgCShjb25zdCBFbVByb3h5RnJhbWVCaXRzVHlwZSAgJik7CXB0cl90eXBlCQkJ
R2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0
YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlFbVByb3h5
RnJhbWVCaXRzVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5RnJhbWVCaXRzVHlwZSAg
Jik7CUVtQWxpYXNGcmFtZUJpdHNUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBF
bUFsaWFzRnJhbWVCaXRzVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0
ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6
CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJZmxhZ3MgOyAgCSAgICAgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9mbGFncyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAgCX07ICAgCSAgdGVt
cGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNXaW5kb3dGbGFnc1R5cGUgIAl7CXB1YmxpYzoJ
dHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1dpbmRvd0ZsYWdz
VHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNXaW5kb3dGbGFnc1R5cGUgIAkoY29uc3QgRW1BbGlh
c1dpbmRvd0ZsYWdzVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJl
dHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAg
IDIgIDsgfQlFbUFsaWFzV2luZG93RmxhZ3NUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1B
bGlhc1dpbmRvd0ZsYWdzVHlwZSAgPEE+Jik7CUVtQWxpYXNXaW5kb3dGbGFnc1R5cGUgIDxBPglv
cGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzV2luZG93RmxhZ3NUeXBlICA8QT4Jb3BlcmF0
b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc1dpbmRvd0ZsYWdzVHlwZSAgCSh2b2lk
KTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJ
CWZsYWdzIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmxhZ3MgICh2b2lkKSB7IHJl
dHVybiAgMCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eVdpbmRvd0ZsYWdzVHlwZSAgCXsJcHVibGlj
Ogl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5V2luZG93RmxhZ3NUeXBlICAJKHZvaWQp
OwlFbVByb3h5V2luZG93RmxhZ3NUeXBlICAJKGNvbnN0IEVtUHJveHlXaW5kb3dGbGFnc1R5cGUg
ICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAm
ZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAg
ICAyICA7IH0JRW1Qcm94eVdpbmRvd0ZsYWdzVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVBy
b3h5V2luZG93RmxhZ3NUeXBlICAmKTsJRW1BbGlhc1dpbmRvd0ZsYWdzVHlwZSAgPExBUz4Jb3Bl
cmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1dpbmRvd0ZsYWdzVHlwZSAgPExBUz4Jb3BlcmF0
b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMiAg
XTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJ
ZmxhZ3MgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mbGFncyAgKHZvaWQpIHsgcmV0
dXJuICAwIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNXaW5k
b3dUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7
CUVtQWxpYXNXaW5kb3dUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc1dpbmRvd1R5cGUgIAkoY29u
c3QgRW1BbGlhc1dpbmRvd1R5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJ
eyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJu
ICAgICA0MCAgOyB9CUVtQWxpYXNXaW5kb3dUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1B
bGlhc1dpbmRvd1R5cGUgIDxBPiYpOwlFbUFsaWFzV2luZG93VHlwZSAgPEE+CW9wZXJhdG9yW10g
KGludCk7CWNvbnN0IEVtQWxpYXNXaW5kb3dUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25z
dDsJcHJpdmF0ZToJRW1BbGlhc1dpbmRvd1R5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJ
cHVibGljOgkgICAgIEVtQWxpYXNDb29yZCA8QT4JIAkJCQkJCWRpc3BsYXlXaWR0aFYyMCA7IAkg
RW1BbGlhc0Nvb3JkIDxBPgkgCQkJCQkJZGlzcGxheUhlaWdodFYyMCA7IAkgRW1BbGlhc2VtdXB0
ciA8QT4JIAkJCQkJCWRpc3BsYXlBZGRyVjIwIDsgCSBFbUFsaWFzV2luZG93RmxhZ3NUeXBlIDxB
PgkgCQkJd2luZG93RmxhZ3MgOyAJIEVtQWxpYXNSZWN0YW5nbGVUeXBlIDxBPgkgCQkJCXdpbmRv
d0JvdW5kcyA7IAkgRW1BbGlhc0Fic1JlY3RUeXBlIDxBPgkgCQkJCWNsaXBwaW5nQm91bmRzIDsg
CSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJYml0bWFwUCA7IAkgRW1BbGlhc0ZyYW1lQml0c1R5
cGUgPEE+CSAJCQkJZnJhbWVUeXBlIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZHJhd1N0
YXRlUCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCW5leHRXaW5kb3cgOyAgCSAgICAgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9kaXNwbGF5V2lkdGhWMjAgICh2b2lkKSB7IHJldHVybiAgMCA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Rpc3BsYXlIZWlnaHRWMjAgICh2b2lkKSB7IHJl
dHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Rpc3BsYXlBZGRyVjIwICAodm9p
ZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl93aW5kb3dGbGFncyAg
KHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfd2luZG93Qm91
bmRzICAodm9pZCkgeyByZXR1cm4gIDEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2xp
cHBpbmdCb3VuZHMgICh2b2lkKSB7IHJldHVybiAgMTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9iaXRtYXBQICAodm9pZCkgeyByZXR1cm4gIDI2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfZnJhbWVUeXBlICAodm9pZCkgeyByZXR1cm4gIDMwIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfZHJhd1N0YXRlUCAgKHZvaWQpIHsgcmV0dXJuICAzMiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX25leHRXaW5kb3cgICh2b2lkKSB7IHJldHVybiAgMzYgOyB9ICAJfTsgCWNs
YXNzIEVtUHJveHlXaW5kb3dUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7
CUVtUHJveHlXaW5kb3dUeXBlICAJKHZvaWQpOwlFbVByb3h5V2luZG93VHlwZSAgCShjb25zdCBF
bVByb3h5V2luZG93VHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJl
dHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZv
aWQpCQkJeyByZXR1cm4gICAgIDQwICA7IH0JRW1Qcm94eVdpbmRvd1R5cGUgICYJCW9wZXJhdG9y
PSAoY29uc3QgRW1Qcm94eVdpbmRvd1R5cGUgICYpOwlFbUFsaWFzV2luZG93VHlwZSAgPExBUz4J
b3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1dpbmRvd1R5cGUgIDxMQVM+CW9wZXJhdG9y
W10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDQwICBd
Owl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzQ29vcmQgPExBUz4JIAkJCQkJCWRp
c3BsYXlXaWR0aFYyMCA7IAkgRW1BbGlhc0Nvb3JkIDxMQVM+CSAJCQkJCQlkaXNwbGF5SGVpZ2h0
VjIwIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlkaXNwbGF5QWRkclYyMCA7IAkgRW1B
bGlhc1dpbmRvd0ZsYWdzVHlwZSA8TEFTPgkgCQkJd2luZG93RmxhZ3MgOyAJIEVtQWxpYXNSZWN0
YW5nbGVUeXBlIDxMQVM+CSAJCQkJd2luZG93Qm91bmRzIDsgCSBFbUFsaWFzQWJzUmVjdFR5cGUg
PExBUz4JIAkJCQljbGlwcGluZ0JvdW5kcyA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJ
Yml0bWFwUCA7IAkgRW1BbGlhc0ZyYW1lQml0c1R5cGUgPExBUz4JIAkJCQlmcmFtZVR5cGUgOyAJ
IEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWRyYXdTdGF0ZVAgOyAJIEVtQWxpYXNlbXVwdHIg
PExBUz4JIAkJCQkJCW5leHRXaW5kb3cgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9k
aXNwbGF5V2lkdGhWMjAgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2Rpc3BsYXlIZWlnaHRWMjAgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2Rpc3BsYXlBZGRyVjIwICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl93aW5kb3dGbGFncyAgKHZvaWQpIHsgcmV0dXJuICA4IDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfd2luZG93Qm91bmRzICAodm9pZCkgeyByZXR1cm4g
IDEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY2xpcHBpbmdCb3VuZHMgICh2b2lkKSB7
IHJldHVybiAgMTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9iaXRtYXBQICAodm9pZCkg
eyByZXR1cm4gIDI2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZnJhbWVUeXBlICAodm9p
ZCkgeyByZXR1cm4gIDMwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZHJhd1N0YXRlUCAg
KHZvaWQpIHsgcmV0dXJuICAzMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25leHRXaW5k
b3cgICh2b2lkKSB7IHJldHVybiAgMzYgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4J
Y2xhc3MgRW1BbGlhc0Zvcm1PYmpMaXN0VHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1l
IEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzRm9ybU9iakxpc3RUeXBlICAJKHB0cl90eXBl
KTsJRW1BbGlhc0Zvcm1PYmpMaXN0VHlwZSAgCShjb25zdCBFbUFsaWFzRm9ybU9iakxpc3RUeXBl
ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3Rh
dGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNiAgOyB9CUVtQWxpYXNG
b3JtT2JqTGlzdFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzRm9ybU9iakxpc3RU
eXBlICA8QT4mKTsJRW1BbGlhc0Zvcm1PYmpMaXN0VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7
CWNvbnN0IEVtQWxpYXNGb3JtT2JqTGlzdFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0
Owlwcml2YXRlOglFbUFsaWFzRm9ybU9iakxpc3RUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQ
dHI7CXB1YmxpYzoJICAgICBFbUFsaWFzRm9ybU9iamVjdEtpbmQgPEE+CSAJCQkJb2JqZWN0VHlw
ZSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJcmVzZXJ2ZWQgOyAJIEVtQWxpYXNlbXVwdHIg
PEE+CSAJCQkJCQlvYmplY3QgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9vYmplY3RU
eXBlICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yZXNl
cnZlZCAgKHZvaWQpIHsgcmV0dXJuICAxIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfb2Jq
ZWN0ICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlGb3JtT2JqTGlz
dFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUZvcm1PYmpM
aXN0VHlwZSAgCSh2b2lkKTsJRW1Qcm94eUZvcm1PYmpMaXN0VHlwZSAgCShjb25zdCBFbVByb3h5
Rm9ybU9iakxpc3RUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0
dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9p
ZCkJCQl7IHJldHVybiAgICAgNiAgOyB9CUVtUHJveHlGb3JtT2JqTGlzdFR5cGUgICYJCW9wZXJh
dG9yPSAoY29uc3QgRW1Qcm94eUZvcm1PYmpMaXN0VHlwZSAgJik7CUVtQWxpYXNGb3JtT2JqTGlz
dFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNGb3JtT2JqTGlzdFR5
cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJ
CQlfYnl0ZXNbICAgIDYgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNGb3Jt
T2JqZWN0S2luZCA8TEFTPgkgCQkJCW9iamVjdFR5cGUgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkg
CQkJCQkJcmVzZXJ2ZWQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCW9iamVjdCA7ICAJ
ICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX29iamVjdFR5cGUgICh2b2lkKSB7IHJldHVybiAg
MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jlc2VydmVkICAodm9pZCkgeyByZXR1cm4g
IDEgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9vYmplY3QgICh2b2lkKSB7IHJldHVybiAg
MiA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzRm9ybUF0dHJU
eXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVt
QWxpYXNGb3JtQXR0clR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzRm9ybUF0dHJUeXBlICAJKGNv
bnN0IEVtQWxpYXNGb3JtQXR0clR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29u
c3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0
dXJuICAgICA0ICA7IH0JRW1BbGlhc0Zvcm1BdHRyVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0
IEVtQWxpYXNGb3JtQXR0clR5cGUgIDxBPiYpOwlFbUFsaWFzRm9ybUF0dHJUeXBlICA8QT4Jb3Bl
cmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0Zvcm1BdHRyVHlwZSAgPEE+CW9wZXJhdG9yW10g
KGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNGb3JtQXR0clR5cGUgIAkodm9pZCk7CXB0cl90
eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlmbGFncyA7
ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAodm9pZCkgeyByZXR1cm4gIDAg
OyB9ICAJfTsgCWNsYXNzIEVtUHJveHlGb3JtQXR0clR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2
b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUZvcm1BdHRyVHlwZSAgCSh2b2lkKTsJRW1Qcm94eUZvcm1B
dHRyVHlwZSAgCShjb25zdCBFbVByb3h5Rm9ybUF0dHJUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQ
dHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNCAgOyB9CUVtUHJveHlGb3Jt
QXR0clR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eUZvcm1BdHRyVHlwZSAgJik7CUVt
QWxpYXNGb3JtQXR0clR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNG
b3JtQXR0clR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVj
dCB7CWNoYXIJCQlfYnl0ZXNbICAgIDQgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVt
QWxpYXNVSW50MzIgPExBUz4JIAkJCQkJCWZsYWdzIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfZmxhZ3MgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxj
bGFzcyBBPgljbGFzcyBFbUFsaWFzRm9ybVR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFt
ZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0Zvcm1UeXBlICAJKHB0cl90eXBlKTsJRW1B
bGlhc0Zvcm1UeXBlICAJKGNvbnN0IEVtQWxpYXNGb3JtVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0
UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJ
KHZvaWQpCQkJeyByZXR1cm4gICAgIDY4ICA7IH0JRW1BbGlhc0Zvcm1UeXBlICA8QT4mCW9wZXJh
dG9yPSAoY29uc3QgRW1BbGlhc0Zvcm1UeXBlICA8QT4mKTsJRW1BbGlhc0Zvcm1UeXBlICA8QT4J
b3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0Zvcm1UeXBlICA8QT4Jb3BlcmF0b3JbXSAo
aW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc0Zvcm1UeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJ
CWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzV2luZG93VHlwZSA8QT4JIAkJCQkJd2luZG93IDsg
CSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJZm9ybUlkIDsgCSBFbUFsaWFzRm9ybUF0dHJUeXBl
IDxBPgkgCQkJCWF0dHIgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQliaXRzQmVoaW5kRm9y
bSA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWhhbmRsZXIgOyAJIEVtQWxpYXNVSW50MTYg
PEE+CSAJCQkJCQlmb2N1cyA7IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWRlZmF1bHRCdXR0
b24gOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQloZWxwUnNjSWQgOyAJIEVtQWxpYXNVSW50
MTYgPEE+CSAJCQkJCQltZW51UnNjSWQgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQludW1P
YmplY3RzIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJb2JqZWN0cyA7ICAJICAgICBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3dpbmRvdyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZm9ybUlkICAodm9pZCkgeyByZXR1cm4gIDQwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfYXR0ciAgKHZvaWQpIHsgcmV0dXJuICA0MiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2JpdHNCZWhpbmRGb3JtICAodm9pZCkgeyByZXR1cm4gIDQ2IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaGFuZGxlciAgKHZvaWQpIHsgcmV0dXJuICA1MCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZvY3VzICAodm9pZCkgeyByZXR1cm4gIDU0IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGVmYXVsdEJ1dHRvbiAgKHZvaWQpIHsgcmV0dXJuICA1
NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2hlbHBSc2NJZCAgKHZvaWQpIHsgcmV0dXJu
ICA1OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21lbnVSc2NJZCAgKHZvaWQpIHsgcmV0
dXJuICA2MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX251bU9iamVjdHMgICh2b2lkKSB7
IHJldHVybiAgNjIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9vYmplY3RzICAodm9pZCkg
eyByZXR1cm4gIDY0IDsgfSAgCX07IAljbGFzcyBFbVByb3h5Rm9ybVR5cGUgIAl7CXB1YmxpYzoJ
dHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUZvcm1UeXBlICAJKHZvaWQpOwlFbVByb3h5
Rm9ybVR5cGUgIAkoY29uc3QgRW1Qcm94eUZvcm1UeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJ
KHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNp
emVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNjggIDsgfQlFbVByb3h5Rm9ybVR5
cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eUZvcm1UeXBlICAmKTsJRW1BbGlhc0Zvcm1U
eXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzRm9ybVR5cGUgIDxMQVM+
CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNb
ICAgIDY4ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzV2luZG93VHlwZSA8
TEFTPgkgCQkJCQl3aW5kb3cgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWZvcm1JZCA7
IAkgRW1BbGlhc0Zvcm1BdHRyVHlwZSA8TEFTPgkgCQkJCWF0dHIgOyAJIEVtQWxpYXNlbXVwdHIg
PExBUz4JIAkJCQkJCWJpdHNCZWhpbmRGb3JtIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJ
CQloYW5kbGVyIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlmb2N1cyA7IAkgRW1BbGlh
c1VJbnQxNiA8TEFTPgkgCQkJCQkJZGVmYXVsdEJ1dHRvbiA7IAkgRW1BbGlhc1VJbnQxNiA8TEFT
PgkgCQkJCQkJaGVscFJzY0lkIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQltZW51UnNj
SWQgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCW51bU9iamVjdHMgOyAJIEVtQWxpYXNl
bXVwdHIgPExBUz4JIAkJCQkJCW9iamVjdHMgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl93aW5kb3cgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2Zvcm1JZCAgKHZvaWQpIHsgcmV0dXJuICA0MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2F0dHIgICh2b2lkKSB7IHJldHVybiAgNDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9i
aXRzQmVoaW5kRm9ybSAgKHZvaWQpIHsgcmV0dXJuICA0NiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2hhbmRsZXIgICh2b2lkKSB7IHJldHVybiAgNTAgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9mb2N1cyAgKHZvaWQpIHsgcmV0dXJuICA1NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2RlZmF1bHRCdXR0b24gICh2b2lkKSB7IHJldHVybiAgNTYgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9oZWxwUnNjSWQgICh2b2lkKSB7IHJldHVybiAgNTggOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9tZW51UnNjSWQgICh2b2lkKSB7IHJldHVybiAgNjAgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9udW1PYmplY3RzICAodm9pZCkgeyByZXR1cm4gIDYyIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfb2JqZWN0cyAgKHZvaWQpIHsgcmV0dXJuICA2NCA7IH0g
IAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzY2p4bG4gIAl7CXB1Ymxp
YzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc2NqeGxuICAJ
KHB0cl90eXBlKTsJRW1BbGlhc2NqeGxuICAJKGNvbnN0IEVtQWxpYXNjanhsbiAgJik7CXB0cl90
eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJ
CUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDggIDsgfQlFbUFsaWFzY2p4bG4gIDxBPiYJ
b3BlcmF0b3I9IChjb25zdCBFbUFsaWFzY2p4bG4gIDxBPiYpOwlFbUFsaWFzY2p4bG4gIDxBPglv
cGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzY2p4bG4gIDxBPglvcGVyYXRvcltdIChpbnQp
IGNvbnN0Owlwcml2YXRlOglFbUFsaWFzY2p4bG4gIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJ
cHVibGljOgkgICAgIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQkJeGxubmV4dCA7IAkgRW1BbGlh
c2VtdXB0ciA8QT4JIAkJCQkJCQl4bG5wcmV2IDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfeGxubmV4dCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfeGxucHJldiAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAgCX07IAljbGFzcyBFbVByb3h5Y2p4
bG4gIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eWNqeGxuICAJKHZv
aWQpOwlFbVByb3h5Y2p4bG4gIAkoY29uc3QgRW1Qcm94eWNqeGxuICAmKTsJcHRyX3R5cGUJCQlH
ZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3Rh
dGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgOCAgOyB9CUVtUHJveHlj
anhsbiAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5Y2p4bG4gICYpOwlFbUFsaWFzY2p4bG4g
IDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNjanhsbiAgPExBUz4Jb3BlcmF0
b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgOCAg
XTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJ
CXhsbm5leHQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCQl4bG5wcmV2IDsgIAkgICAg
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfeGxubmV4dCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfeGxucHJldiAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAg
CX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNjal94Z2JoICAJewlwdWJs
aWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNjal94Z2Jo
ICAJKHB0cl90eXBlKTsJRW1BbGlhc2NqX3hnYmggIAkoY29uc3QgRW1BbGlhc2NqX3hnYmggICYp
OwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMg
c2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyOCAgOyB9CUVtQWxpYXNjal94
Z2JoICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc2NqX3hnYmggIDxBPiYpOwlFbUFsaWFz
Y2pfeGdiaCAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNjal94Z2JoICA8QT4J
b3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc2NqX3hnYmggIAkodm9pZCk7
CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNjanhsbiA8QT4JIAkJCQkJCQl4
Z2JobG4gOyAJIEVtQWxpYXNjanhsbiA8QT4JIAkJCQkJCQl4Z2Jod2FpdCA7IAkgRW1BbGlhc0lu
dDE2IDxBPgkgCQkJCQkJCXhnYmhwcnkgOyAJIEVtQWxpYXNVSW50OCA8QT4JIAkJCQkJCQl4Z2Jo
bW9kIDsgCSBFbUFsaWFzSW50OCA8QT4JIAkJCQkJCQl4Z2JoaWRrZXkgOyAJIEVtQWxpYXNVSW50
MzIgPEE+CSAJCQkJCQkJeGdiaHRhZyA7IAkgRW1BbGlhc1VJbnQzMiA8QT4JIAkJCQkJCQl4Z2Jo
ZGpwIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfeGdiaGxuICAodm9pZCkgeyByZXR1
cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl94Z2Jod2FpdCAgKHZvaWQpIHsgcmV0
dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfeGdiaHByeSAgKHZvaWQpIHsgcmV0
dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3hnYmhtb2QgICh2b2lkKSB7IHJl
dHVybiAgMTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl94Z2JoaWRrZXkgICh2b2lkKSB7
IHJldHVybiAgMTkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl94Z2JodGFnICAodm9pZCkg
eyByZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfeGdiaGRqcCAgKHZvaWQp
IHsgcmV0dXJuICAyNCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eWNqX3hnYmggIAl7CXB1YmxpYzoJ
dHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eWNqX3hnYmggIAkodm9pZCk7CUVtUHJveHlj
al94Z2JoICAJKGNvbnN0IEVtUHJveHljal94Z2JoICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZv
aWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVf
dAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMjggIDsgfQlFbVByb3h5Y2pfeGdiaCAg
JgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5Y2pfeGdiaCAgJik7CUVtQWxpYXNjal94Z2JoICA8
TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzY2pfeGdiaCAgPExBUz4Jb3BlcmF0
b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMjgg
IF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNjanhsbiA8TEFTPgkgCQkJCQkJ
CXhnYmhsbiA7IAkgRW1BbGlhc2NqeGxuIDxMQVM+CSAJCQkJCQkJeGdiaHdhaXQgOyAJIEVtQWxp
YXNJbnQxNiA8TEFTPgkgCQkJCQkJCXhnYmhwcnkgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJ
CQkJCXhnYmhtb2QgOyAJIEVtQWxpYXNJbnQ4IDxMQVM+CSAJCQkJCQkJeGdiaGlka2V5IDsgCSBF
bUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQkJeGdiaHRhZyA7IAkgRW1BbGlhc1VJbnQzMiA8TEFT
PgkgCQkJCQkJCXhnYmhkanAgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl94Z2JobG4g
ICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3hnYmh3YWl0
ICAodm9pZCkgeyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl94Z2JocHJ5
ICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfeGdiaG1v
ZCAgKHZvaWQpIHsgcmV0dXJuICAxOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3hnYmhp
ZGtleSAgKHZvaWQpIHsgcmV0dXJuICAxOSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3hn
Ymh0YWcgICh2b2lkKSB7IHJldHVybiAgMjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl94
Z2JoZGpwICAodm9pZCkgeyByZXR1cm4gIDI0IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNz
IEE+CWNsYXNzIEVtQWxpYXNjal94c21iICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6
cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNjal94c21iICAJKHB0cl90eXBlKTsJRW1BbGlhc2Nq
X3hzbWIgIAkoY29uc3QgRW1BbGlhc2NqX3hzbWIgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9p
ZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJ
CXsgcmV0dXJuICAgICA0OCAgOyB9CUVtQWxpYXNjal94c21iICA8QT4mCW9wZXJhdG9yPSAoY29u
c3QgRW1BbGlhc2NqX3hzbWIgIDxBPiYpOwlFbUFsaWFzY2pfeHNtYiAgPEE+CW9wZXJhdG9yW10g
KGludCk7CWNvbnN0IEVtQWxpYXNjal94c21iICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJ
cHJpdmF0ZToJRW1BbGlhc2NqX3hzbWIgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGlj
OgkgICAgIEVtQWxpYXNjal94Z2JoIDxBPgkgCQkJCQkJeHNtaCA7IAkgRW1BbGlhc2VtdXB0ciA8
QT4JIAkJCQkJCQl4c21vd25lciA7IAkgRW1BbGlhc0ludDMyIDxBPgkgCQkJCQkJCXhzbWl2YWwg
OyAJIEVtQWxpYXNJbnQzMiA8QT4JIAkJCQkJCQl4c212YWwgOyAJIEVtQWxpYXNJbnQzMiA8QT4J
IAkJCQkJCQl4c211c2UgOyAJIEVtQWxpYXNJbnQzMiA8QT4JIAkJCQkJCQl4c21yc3YgOyAgCSAg
ICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl94c21oICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl94c21vd25lciAgKHZvaWQpIHsgcmV0dXJuICAyOCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3hzbWl2YWwgICh2b2lkKSB7IHJldHVybiAgMzIgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl94c212YWwgICh2b2lkKSB7IHJldHVybiAgMzYgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl94c211c2UgICh2b2lkKSB7IHJldHVybiAgNDAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl94c21yc3YgICh2b2lkKSB7IHJldHVybiAgNDQgOyB9
ICAJfTsgCWNsYXNzIEVtUHJveHljal94c21iICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRy
X3R5cGU7CUVtUHJveHljal94c21iICAJKHZvaWQpOwlFbVByb3h5Y2pfeHNtYiAgCShjb25zdCBF
bVByb3h5Y2pfeHNtYiAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVy
biAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQp
CQkJeyByZXR1cm4gICAgIDQ4ICA7IH0JRW1Qcm94eWNqX3hzbWIgICYJCW9wZXJhdG9yPSAoY29u
c3QgRW1Qcm94eWNqX3hzbWIgICYpOwlFbUFsaWFzY2pfeHNtYiAgPExBUz4Jb3BlcmF0b3JbXSAo
aW50KTsJY29uc3QgRW1BbGlhc2NqX3hzbWIgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7
CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDQ4ICBdOwl9IGZMb2NhbERhdGE7
CXB1YmxpYzoJICAgICBFbUFsaWFzY2pfeGdiaCA8TEFTPgkgCQkJCQkJeHNtaCA7IAkgRW1BbGlh
c2VtdXB0ciA8TEFTPgkgCQkJCQkJCXhzbW93bmVyIDsgCSBFbUFsaWFzSW50MzIgPExBUz4JIAkJ
CQkJCQl4c21pdmFsIDsgCSBFbUFsaWFzSW50MzIgPExBUz4JIAkJCQkJCQl4c212YWwgOyAJIEVt
QWxpYXNJbnQzMiA8TEFTPgkgCQkJCQkJCXhzbXVzZSA7IAkgRW1BbGlhc0ludDMyIDxMQVM+CSAJ
CQkJCQkJeHNtcnN2IDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfeHNtaCAgKHZvaWQp
IHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfeHNtb3duZXIgICh2b2lk
KSB7IHJldHVybiAgMjggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl94c21pdmFsICAodm9p
ZCkgeyByZXR1cm4gIDMyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfeHNtdmFsICAodm9p
ZCkgeyByZXR1cm4gIDM2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfeHNtdXNlICAodm9p
ZCkgeyByZXR1cm4gIDQwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfeHNtcnN2ICAodm9p
ZCkgeyByZXR1cm4gIDQ0IDsgfSAgCX07ICAgIAogIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBF
bUFsaWFzVGltR2xvYmFsc1R5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJf
dHlwZSBwdHJfdHlwZTsJRW1BbGlhc1RpbUdsb2JhbHNUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlh
c1RpbUdsb2JhbHNUeXBlICAJKGNvbnN0IEVtQWxpYXNUaW1HbG9iYWxzVHlwZSAgJik7CXB0cl90
eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJ
CUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDI0ICA7IH0JRW1BbGlhc1RpbUdsb2JhbHNU
eXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1RpbUdsb2JhbHNUeXBlICA8QT4mKTsJ
RW1BbGlhc1RpbUdsb2JhbHNUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlh
c1RpbUdsb2JhbHNUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1B
bGlhc1RpbUdsb2JhbHNUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAg
ICBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJcnRjSG91cnMgOyAJIEVtQWxpYXNVSW50MzIgPEE+
CSAJCQkJCQlhbGFybVNlY29uZHMgOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQlydGNCdWdX
b3JrYXJvdW5kIDsgCSBFbUFsaWFzQm9vbGVhbiA8QT4JIAkJCQkJcnRjQnVnQXNsZWVwIDsgCSBF
bUFsaWFzVUludDMyIDxBPgkgCQkJCQkJcnRjQnVnQWxhcm0gOyAJIEVtQWxpYXNVSW50MzIgPEE+
CSAJCQkJCQlydGNCdWdTZWNvbmRzIDsgCSBFbUFsaWFzVUludDMyIDxBPgkgCQkJCQkJcnRjQnVn
TGFzdFNlY29uZHMgOyAJIEVtQWxpYXNCb29sZWFuIDxBPgkgCQkJCQlydGNCdWdGYXN0TWludXRl
Q2FsYyA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJcmVzZXJ2ZWQgOyAgCSAgICAgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9ydGNIb3VycyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfYWxhcm1TZWNvbmRzICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9ydGNCdWdXb3JrYXJvdW5kICAodm9pZCkgeyByZXR1cm4g
IDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ydGNCdWdBc2xlZXAgICh2b2lkKSB7IHJl
dHVybiAgOSA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3J0Y0J1Z0FsYXJtICAodm9pZCkg
eyByZXR1cm4gIDEwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcnRjQnVnU2Vjb25kcyAg
KHZvaWQpIHsgcmV0dXJuICAxNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3J0Y0J1Z0xh
c3RTZWNvbmRzICAodm9pZCkgeyByZXR1cm4gIDE4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfcnRjQnVnRmFzdE1pbnV0ZUNhbGMgICh2b2lkKSB7IHJldHVybiAgMjIgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9yZXNlcnZlZCAgKHZvaWQpIHsgcmV0dXJuICAyMyA7IH0gIAl9OyAJ
Y2xhc3MgRW1Qcm94eVRpbUdsb2JhbHNUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRy
X3R5cGU7CUVtUHJveHlUaW1HbG9iYWxzVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVRpbUdsb2JhbHNU
eXBlICAJKGNvbnN0IEVtUHJveHlUaW1HbG9iYWxzVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRy
CSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBz
aXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDI0ICA7IH0JRW1Qcm94eVRpbUds
b2JhbHNUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlUaW1HbG9iYWxzVHlwZSAgJik7
CUVtQWxpYXNUaW1HbG9iYWxzVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1B
bGlhc1RpbUdsb2JhbHNUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRl
OglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAyNCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6
CSAgICAgRW1BbGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJcnRjSG91cnMgOyAJIEVtQWxpYXNVSW50
MzIgPExBUz4JIAkJCQkJCWFsYXJtU2Vjb25kcyA7IAkgRW1BbGlhc0Jvb2xlYW4gPExBUz4JIAkJ
CQkJcnRjQnVnV29ya2Fyb3VuZCA7IAkgRW1BbGlhc0Jvb2xlYW4gPExBUz4JIAkJCQkJcnRjQnVn
QXNsZWVwIDsgCSBFbUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlydGNCdWdBbGFybSA7IAkgRW1B
bGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJcnRjQnVnU2Vjb25kcyA7IAkgRW1BbGlhc1VJbnQzMiA8
TEFTPgkgCQkJCQkJcnRjQnVnTGFzdFNlY29uZHMgOyAJIEVtQWxpYXNCb29sZWFuIDxMQVM+CSAJ
CQkJCXJ0Y0J1Z0Zhc3RNaW51dGVDYWxjIDsgCSBFbUFsaWFzVUludDggPExBUz4JIAkJCQkJCXJl
c2VydmVkIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcnRjSG91cnMgICh2b2lkKSB7
IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FsYXJtU2Vjb25kcyAgKHZv
aWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcnRjQnVnV29ya2Fy
b3VuZCAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcnRj
QnVnQXNsZWVwICAodm9pZCkgeyByZXR1cm4gIDkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9ydGNCdWdBbGFybSAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3J0Y0J1Z1NlY29uZHMgICh2b2lkKSB7IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9ydGNCdWdMYXN0U2Vjb25kcyAgKHZvaWQpIHsgcmV0dXJuICAxOCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3J0Y0J1Z0Zhc3RNaW51dGVDYWxjICAodm9pZCkgeyBy
ZXR1cm4gIDIyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVzZXJ2ZWQgICh2b2lkKSB7
IHJldHVybiAgMjMgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlh
c0Zvcm1PYmpBdHRyVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBl
IHB0cl90eXBlOwlFbUFsaWFzRm9ybU9iakF0dHJUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc0Zv
cm1PYmpBdHRyVHlwZSAgCShjb25zdCBFbUFsaWFzRm9ybU9iakF0dHJUeXBlICAmKTsJcHRyX3R5
cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJ
R2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMiAgOyB9CUVtQWxpYXNGb3JtT2JqQXR0clR5
cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzRm9ybU9iakF0dHJUeXBlICA8QT4mKTsJ
RW1BbGlhc0Zvcm1PYmpBdHRyVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxp
YXNGb3JtT2JqQXR0clR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglF
bUFsaWFzRm9ybU9iakF0dHJUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJ
ICAgICBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJZmxhZ3MgOyAgCSAgICAgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9mbGFncyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAgCX07IAljbGFzcyBFbVBy
b3h5Rm9ybU9iakF0dHJUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVt
UHJveHlGb3JtT2JqQXR0clR5cGUgIAkodm9pZCk7CUVtUHJveHlGb3JtT2JqQXR0clR5cGUgIAko
Y29uc3QgRW1Qcm94eUZvcm1PYmpBdHRyVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lk
KSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJ
CUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlFbVByb3h5Rm9ybU9iakF0dHJU
eXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlGb3JtT2JqQXR0clR5cGUgICYpOwlFbUFs
aWFzRm9ybU9iakF0dHJUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFz
Rm9ybU9iakF0dHJUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglz
dHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAyICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAg
ICBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlmbGFncyA7ICAJICAgICBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2ZsYWdzICAodm9pZCkgeyByZXR1cm4gIDAgOyB9ICAJfTsgICAJICB0ZW1wbGF0
ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0Zvcm1CaXRtYXBUeXBlICAJewlwdWJsaWM6CXR5cGVk
ZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNGb3JtQml0bWFwVHlwZSAg
CShwdHJfdHlwZSk7CUVtQWxpYXNGb3JtQml0bWFwVHlwZSAgCShjb25zdCBFbUFsaWFzRm9ybUJp
dG1hcFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0
cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA4ICA7IH0J
RW1BbGlhc0Zvcm1CaXRtYXBUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0Zvcm1C
aXRtYXBUeXBlICA8QT4mKTsJRW1BbGlhc0Zvcm1CaXRtYXBUeXBlICA8QT4Jb3BlcmF0b3JbXSAo
aW50KTsJY29uc3QgRW1BbGlhc0Zvcm1CaXRtYXBUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBj
b25zdDsJcHJpdmF0ZToJRW1BbGlhc0Zvcm1CaXRtYXBUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJ
CWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzRm9ybU9iakF0dHJUeXBlIDxBPgkgCQkJYXR0ciA7
IAkgRW1BbGlhc1BvaW50VHlwZSA8QT4JIAkJCQkJcG9zIDsgCSBFbUFsaWFzVUludDE2IDxBPgkg
CQkJCQkJcnNjSUQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hdHRyICAodm9pZCkg
eyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wb3MgICh2b2lkKSB7IHJl
dHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JzY0lEICAodm9pZCkgeyByZXR1
cm4gIDYgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlGb3JtQml0bWFwVHlwZSAgCXsJcHVibGljOgl0
eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5Rm9ybUJpdG1hcFR5cGUgIAkodm9pZCk7CUVt
UHJveHlGb3JtQml0bWFwVHlwZSAgCShjb25zdCBFbVByb3h5Rm9ybUJpdG1hcFR5cGUgICYpOwlw
dHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2Fs
RGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA4ICA7
IH0JRW1Qcm94eUZvcm1CaXRtYXBUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlGb3Jt
Qml0bWFwVHlwZSAgJik7CUVtQWxpYXNGb3JtQml0bWFwVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAo
aW50KTsJY29uc3QgRW1BbGlhc0Zvcm1CaXRtYXBUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQp
IGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA4ICBdOwl9IGZMb2Nh
bERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzRm9ybU9iakF0dHJUeXBlIDxMQVM+CSAJCQlhdHRy
IDsgCSBFbUFsaWFzUG9pbnRUeXBlIDxMQVM+CSAJCQkJCXBvcyA7IAkgRW1BbGlhc1VJbnQxNiA8
TEFTPgkgCQkJCQkJcnNjSUQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hdHRyICAo
dm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wb3MgICh2b2lk
KSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JzY0lEICAodm9pZCkg
eyByZXR1cm4gIDYgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlh
c0Zvcm1MaW5lVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0
cl90eXBlOwlFbUFsaWFzRm9ybUxpbmVUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc0Zvcm1MaW5l
VHlwZSAgCShjb25zdCBFbUFsaWFzRm9ybUxpbmVUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJ
KHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9p
ZCkJCQl7IHJldHVybiAgICAgMTAgIDsgfQlFbUFsaWFzRm9ybUxpbmVUeXBlICA8QT4mCW9wZXJh
dG9yPSAoY29uc3QgRW1BbGlhc0Zvcm1MaW5lVHlwZSAgPEE+Jik7CUVtQWxpYXNGb3JtTGluZVR5
cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzRm9ybUxpbmVUeXBlICA8QT4J
b3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc0Zvcm1MaW5lVHlwZSAgCSh2
b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJ
CQkJCWF0dHIgOyAJIEVtQWxpYXNQb2ludFR5cGUgPEE+CSAJCQkJCXBvaW50MSA7IAkgRW1BbGlh
c1BvaW50VHlwZSA8QT4JIAkJCQkJcG9pbnQyIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfYXR0ciAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
cG9pbnQxICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9w
b2ludDIgICh2b2lkKSB7IHJldHVybiAgNiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eUZvcm1MaW5l
VHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5Rm9ybUxpbmVU
eXBlICAJKHZvaWQpOwlFbVByb3h5Rm9ybUxpbmVUeXBlICAJKGNvbnN0IEVtUHJveHlGb3JtTGlu
ZVR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90
eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0
dXJuICAgICAxMCAgOyB9CUVtUHJveHlGb3JtTGluZVR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3Qg
RW1Qcm94eUZvcm1MaW5lVHlwZSAgJik7CUVtQWxpYXNGb3JtTGluZVR5cGUgIDxMQVM+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNGb3JtTGluZVR5cGUgIDxMQVM+CW9wZXJhdG9yW10g
KGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDEwICBdOwl9
IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlhdHRy
IDsgCSBFbUFsaWFzUG9pbnRUeXBlIDxMQVM+CSAJCQkJCXBvaW50MSA7IAkgRW1BbGlhc1BvaW50
VHlwZSA8TEFTPgkgCQkJCQlwb2ludDIgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9h
dHRyICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wb2lu
dDEgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BvaW50
MiAgKHZvaWQpIHsgcmV0dXJuICA2IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNs
YXNzIEVtQWxpYXNGb3JtRnJhbWVUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6
cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNGb3JtRnJhbWVUeXBlICAJKHB0cl90eXBlKTsJRW1B
bGlhc0Zvcm1GcmFtZVR5cGUgIAkoY29uc3QgRW1BbGlhc0Zvcm1GcmFtZVR5cGUgICYpOwlwdHJf
dHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90
CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAxNCAgOyB9CUVtQWxpYXNGb3JtRnJhbWVU
eXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0Zvcm1GcmFtZVR5cGUgIDxBPiYpOwlF
bUFsaWFzRm9ybUZyYW1lVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNG
b3JtRnJhbWVUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlh
c0Zvcm1GcmFtZVR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVt
QWxpYXNVSW50MTYgPEE+CSAJCQkJCQlpZCA7IAkgRW1BbGlhc0Zvcm1PYmpBdHRyVHlwZSA8QT4J
IAkJCWF0dHIgOyAJIEVtQWxpYXNSZWN0YW5nbGVUeXBlIDxBPgkgCQkJCXJlY3QgOyAJIEVtQWxp
YXNVSW50MTYgPEE+CSAJCQkJCQlmcmFtZVR5cGUgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9pZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
YXR0ciAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVj
dCAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZnJhbWVU
eXBlICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAgCX07IAljbGFzcyBFbVByb3h5Rm9ybUZyYW1l
VHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5Rm9ybUZyYW1l
VHlwZSAgCSh2b2lkKTsJRW1Qcm94eUZvcm1GcmFtZVR5cGUgIAkoY29uc3QgRW1Qcm94eUZvcm1G
cmFtZVR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0
cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsg
cmV0dXJuICAgICAxNCAgOyB9CUVtUHJveHlGb3JtRnJhbWVUeXBlICAmCQlvcGVyYXRvcj0gKGNv
bnN0IEVtUHJveHlGb3JtRnJhbWVUeXBlICAmKTsJRW1BbGlhc0Zvcm1GcmFtZVR5cGUgIDxMQVM+
CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNGb3JtRnJhbWVUeXBlICA8TEFTPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAx
NCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJ
CQkJaWQgOyAJIEVtQWxpYXNGb3JtT2JqQXR0clR5cGUgPExBUz4JIAkJCWF0dHIgOyAJIEVtQWxp
YXNSZWN0YW5nbGVUeXBlIDxMQVM+CSAJCQkJcmVjdCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkg
CQkJCQkJZnJhbWVUeXBlIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaWQgICh2b2lk
KSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2F0dHIgICh2b2lkKSB7
IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3JlY3QgICh2b2lkKSB7IHJl
dHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZyYW1lVHlwZSAgKHZvaWQpIHsg
cmV0dXJuICAxMiA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFz
Rm9ybVJlY3RhbmdsZVR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlw
ZSBwdHJfdHlwZTsJRW1BbGlhc0Zvcm1SZWN0YW5nbGVUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlh
c0Zvcm1SZWN0YW5nbGVUeXBlICAJKGNvbnN0IEVtQWxpYXNGb3JtUmVjdGFuZ2xlVHlwZSAgJik7
CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBz
aXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDEwICA7IH0JRW1BbGlhc0Zvcm1S
ZWN0YW5nbGVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0Zvcm1SZWN0YW5nbGVU
eXBlICA8QT4mKTsJRW1BbGlhc0Zvcm1SZWN0YW5nbGVUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50
KTsJY29uc3QgRW1BbGlhc0Zvcm1SZWN0YW5nbGVUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBj
b25zdDsJcHJpdmF0ZToJRW1BbGlhc0Zvcm1SZWN0YW5nbGVUeXBlICAJKHZvaWQpOwlwdHJfdHlw
ZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzRm9ybU9iakF0dHJUeXBlIDxBPgkgCQkJYXR0
ciA7IAkgRW1BbGlhc1JlY3RhbmdsZVR5cGUgPEE+CSAJCQkJcmVjdCA7ICAJICAgICBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2F0dHIgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3JlY3QgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gIAl9OyAJY2xhc3MgRW1Q
cm94eUZvcm1SZWN0YW5nbGVUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7
CUVtUHJveHlGb3JtUmVjdGFuZ2xlVHlwZSAgCSh2b2lkKTsJRW1Qcm94eUZvcm1SZWN0YW5nbGVU
eXBlICAJKGNvbnN0IEVtUHJveHlGb3JtUmVjdGFuZ2xlVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0
UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRp
YyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDEwICA7IH0JRW1Qcm94eUZv
cm1SZWN0YW5nbGVUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlGb3JtUmVjdGFuZ2xl
VHlwZSAgJik7CUVtQWxpYXNGb3JtUmVjdGFuZ2xlVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50
KTsJY29uc3QgRW1BbGlhc0Zvcm1SZWN0YW5nbGVUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQp
IGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAxMCAgXTsJfSBmTG9j
YWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc0Zvcm1PYmpBdHRyVHlwZSA8TEFTPgkgCQkJYXR0
ciA7IAkgRW1BbGlhc1JlY3RhbmdsZVR5cGUgPExBUz4JIAkJCQlyZWN0IDsgIAkgICAgIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfYXR0ciAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfcmVjdCAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAgCX07ICAgCSAgdGVt
cGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNGb3JtVGl0bGVUeXBlICAJewlwdWJsaWM6CXR5
cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNGb3JtVGl0bGVUeXBl
ICAJKHB0cl90eXBlKTsJRW1BbGlhc0Zvcm1UaXRsZVR5cGUgIAkoY29uc3QgRW1BbGlhc0Zvcm1U
aXRsZVR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0
cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAxMiAgOyB9
CUVtQWxpYXNGb3JtVGl0bGVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0Zvcm1U
aXRsZVR5cGUgIDxBPiYpOwlFbUFsaWFzRm9ybVRpdGxlVHlwZSAgPEE+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNGb3JtVGl0bGVUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25z
dDsJcHJpdmF0ZToJRW1BbGlhc0Zvcm1UaXRsZVR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0
cjsJcHVibGljOgkgICAgIEVtQWxpYXNSZWN0YW5nbGVUeXBlIDxBPgkgCQkJCXJlY3QgOyAJIEVt
QWxpYXNlbXVwdHIgPEE+CSAJCQkJCQl0ZXh0IDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfcmVjdCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
dGV4dCAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAgCX07IAljbGFzcyBFbVByb3h5Rm9ybVRpdGxl
VHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5Rm9ybVRpdGxl
VHlwZSAgCSh2b2lkKTsJRW1Qcm94eUZvcm1UaXRsZVR5cGUgIAkoY29uc3QgRW1Qcm94eUZvcm1U
aXRsZVR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0
cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsg
cmV0dXJuICAgICAxMiAgOyB9CUVtUHJveHlGb3JtVGl0bGVUeXBlICAmCQlvcGVyYXRvcj0gKGNv
bnN0IEVtUHJveHlGb3JtVGl0bGVUeXBlICAmKTsJRW1BbGlhc0Zvcm1UaXRsZVR5cGUgIDxMQVM+
CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNGb3JtVGl0bGVUeXBlICA8TEFTPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAx
MiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1JlY3RhbmdsZVR5cGUgPExB
Uz4JIAkJCQlyZWN0IDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQl0ZXh0IDsgIAkgICAg
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVjdCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGV4dCAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAgCX07ICAg
CSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNGb3JtUG9wdXBUeXBlICAJewlwdWJs
aWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNGb3JtUG9w
dXBUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc0Zvcm1Qb3B1cFR5cGUgIAkoY29uc3QgRW1BbGlh
c0Zvcm1Qb3B1cFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1
cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA0
ICA7IH0JRW1BbGlhc0Zvcm1Qb3B1cFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFz
Rm9ybVBvcHVwVHlwZSAgPEE+Jik7CUVtQWxpYXNGb3JtUG9wdXBUeXBlICA8QT4Jb3BlcmF0b3Jb
XSAoaW50KTsJY29uc3QgRW1BbGlhc0Zvcm1Qb3B1cFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQp
IGNvbnN0Owlwcml2YXRlOglFbUFsaWFzRm9ybVBvcHVwVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJ
CQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWNvbnRyb2xJRCA7
IAkgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWxpc3RJRCA7ICAJICAgICBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2NvbnRyb2xJRCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfbGlzdElEICAodm9pZCkgeyByZXR1cm4gIDIgOyB9ICAJfTsgCWNsYXNzIEVt
UHJveHlGb3JtUG9wdXBUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVt
UHJveHlGb3JtUG9wdXBUeXBlICAJKHZvaWQpOwlFbVByb3h5Rm9ybVBvcHVwVHlwZSAgCShjb25z
dCBFbVByb3h5Rm9ybVBvcHVwVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25z
dAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNp
emUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDQgIDsgfQlFbVByb3h5Rm9ybVBvcHVwVHlwZSAgJgkJ
b3BlcmF0b3I9IChjb25zdCBFbVByb3h5Rm9ybVBvcHVwVHlwZSAgJik7CUVtQWxpYXNGb3JtUG9w
dXBUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzRm9ybVBvcHVwVHlw
ZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJ
CV9ieXRlc1sgICAgNCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQx
NiA8TEFTPgkgCQkJCQkJY29udHJvbElEIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQls
aXN0SUQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jb250cm9sSUQgICh2b2lkKSB7
IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2xpc3RJRCAgKHZvaWQpIHsg
cmV0dXJuICAyIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNG
cm1HcmFmZml0aVN0YXRlVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90
eXBlIHB0cl90eXBlOwlFbUFsaWFzRnJtR3JhZmZpdGlTdGF0ZVR5cGUgIAkocHRyX3R5cGUpOwlF
bUFsaWFzRnJtR3JhZmZpdGlTdGF0ZVR5cGUgIAkoY29uc3QgRW1BbGlhc0ZybUdyYWZmaXRpU3Rh
dGVUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7
IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNCAgOyB9CUVt
QWxpYXNGcm1HcmFmZml0aVN0YXRlVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNG
cm1HcmFmZml0aVN0YXRlVHlwZSAgPEE+Jik7CUVtQWxpYXNGcm1HcmFmZml0aVN0YXRlVHlwZSAg
PEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNGcm1HcmFmZml0aVN0YXRlVHlwZSAg
PEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNGcm1HcmFmZml0aVN0
YXRlVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc1Bv
aW50VHlwZSA8QT4JIAkJCQkJcG9zIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcG9z
ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlGcm1HcmFmZml0aVN0
YXRlVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5RnJtR3Jh
ZmZpdGlTdGF0ZVR5cGUgIAkodm9pZCk7CUVtUHJveHlGcm1HcmFmZml0aVN0YXRlVHlwZSAgCShj
b25zdCBFbVByb3h5RnJtR3JhZmZpdGlTdGF0ZVR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgko
dm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6
ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA0ICA7IH0JRW1Qcm94eUZybUdyYWZm
aXRpU3RhdGVUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlGcm1HcmFmZml0aVN0YXRl
VHlwZSAgJik7CUVtQWxpYXNGcm1HcmFmZml0aVN0YXRlVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAo
aW50KTsJY29uc3QgRW1BbGlhc0ZybUdyYWZmaXRpU3RhdGVUeXBlICA8TEFTPglvcGVyYXRvcltd
IChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA0ICBdOwl9
IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzUG9pbnRUeXBlIDxMQVM+CSAJCQkJCXBv
cyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BvcyAgKHZvaWQpIHsgcmV0dXJuICAw
IDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNTY3JvbGxCYXJB
dHRyVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBl
OwlFbUFsaWFzU2Nyb2xsQmFyQXR0clR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzU2Nyb2xsQmFy
QXR0clR5cGUgIAkoY29uc3QgRW1BbGlhc1Njcm9sbEJhckF0dHJUeXBlICAmKTsJcHRyX3R5cGUJ
CQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0
U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMiAgOyB9CUVtQWxpYXNTY3JvbGxCYXJBdHRyVHlw
ZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNTY3JvbGxCYXJBdHRyVHlwZSAgPEE+Jik7
CUVtQWxpYXNTY3JvbGxCYXJBdHRyVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVt
QWxpYXNTY3JvbGxCYXJBdHRyVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZh
dGU6CUVtQWxpYXNTY3JvbGxCYXJBdHRyVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlw
dWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWZsYWdzIDsgIAkgICAgIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZmxhZ3MgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gIAl9OyAJY2xh
c3MgRW1Qcm94eVNjcm9sbEJhckF0dHJUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRy
X3R5cGU7CUVtUHJveHlTY3JvbGxCYXJBdHRyVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVNjcm9sbEJh
ckF0dHJUeXBlICAJKGNvbnN0IEVtUHJveHlTY3JvbGxCYXJBdHRyVHlwZSAgJik7CXB0cl90eXBl
CQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9
CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlFbVBy
b3h5U2Nyb2xsQmFyQXR0clR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eVNjcm9sbEJh
ckF0dHJUeXBlICAmKTsJRW1BbGlhc1Njcm9sbEJhckF0dHJUeXBlICA8TEFTPglvcGVyYXRvcltd
IChpbnQpOwljb25zdCBFbUFsaWFzU2Nyb2xsQmFyQXR0clR5cGUgIDxMQVM+CW9wZXJhdG9yW10g
KGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDIgIF07CX0g
ZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWZsYWdz
IDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmxhZ3MgICh2b2lkKSB7IHJldHVybiAg
MCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzU2Nyb2xsQmFy
VHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlF
bUFsaWFzU2Nyb2xsQmFyVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNTY3JvbGxCYXJUeXBlICAJ
KGNvbnN0IEVtQWxpYXNTY3JvbGxCYXJUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQp
IGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7
IHJldHVybiAgICAgMjQgIDsgfQlFbUFsaWFzU2Nyb2xsQmFyVHlwZSAgPEE+JglvcGVyYXRvcj0g
KGNvbnN0IEVtQWxpYXNTY3JvbGxCYXJUeXBlICA8QT4mKTsJRW1BbGlhc1Njcm9sbEJhclR5cGUg
IDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzU2Nyb2xsQmFyVHlwZSAgPEE+CW9w
ZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNTY3JvbGxCYXJUeXBlICAJKHZv
aWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzUmVjdGFuZ2xlVHlwZSA8
QT4JIAkJCQlib3VuZHMgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlpZCA7IAkgRW1BbGlh
c1Njcm9sbEJhckF0dHJUeXBlIDxBPgkgCQkJYXR0ciA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJ
CQkJdmFsdWUgOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJCW1pblZhbHVlIDsgCSBFbUFsaWFz
SW50MTYgPEE+CSAJCQkJCQltYXhWYWx1ZSA7IAkgRW1BbGlhc0ludDE2IDxBPgkgCQkJCQkJcGFn
ZVNpemUgOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJCXBlblBvc0luQ2FyIDsgCSBFbUFsaWFz
SW50MTYgPEE+CSAJCQkJCQlzYXZlUG9zIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
Ym91bmRzICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9p
ZCAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYXR0ciAg
KHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3ZhbHVlICAo
dm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbWluVmFsdWUg
ICh2b2lkKSB7IHJldHVybiAgMTQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9tYXhWYWx1
ZSAgKHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BhZ2VT
aXplICAodm9pZCkgeyByZXR1cm4gIDE4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcGVu
UG9zSW5DYXIgICh2b2lkKSB7IHJldHVybiAgMjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9zYXZlUG9zICAodm9pZCkgeyByZXR1cm4gIDIyIDsgfSAgCX07IAljbGFzcyBFbVByb3h5U2Ny
b2xsQmFyVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5U2Ny
b2xsQmFyVHlwZSAgCSh2b2lkKTsJRW1Qcm94eVNjcm9sbEJhclR5cGUgIAkoY29uc3QgRW1Qcm94
eVNjcm9sbEJhclR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1
cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lk
KQkJCXsgcmV0dXJuICAgICAyNCAgOyB9CUVtUHJveHlTY3JvbGxCYXJUeXBlICAmCQlvcGVyYXRv
cj0gKGNvbnN0IEVtUHJveHlTY3JvbGxCYXJUeXBlICAmKTsJRW1BbGlhc1Njcm9sbEJhclR5cGUg
IDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNTY3JvbGxCYXJUeXBlICA8TEFT
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVz
WyAgICAyNCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1JlY3RhbmdsZVR5
cGUgPExBUz4JIAkJCQlib3VuZHMgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWlkIDsg
CSBFbUFsaWFzU2Nyb2xsQmFyQXR0clR5cGUgPExBUz4JIAkJCWF0dHIgOyAJIEVtQWxpYXNJbnQx
NiA8TEFTPgkgCQkJCQkJdmFsdWUgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJbWluVmFs
dWUgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJbWF4VmFsdWUgOyAJIEVtQWxpYXNJbnQx
NiA8TEFTPgkgCQkJCQkJcGFnZVNpemUgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJcGVu
UG9zSW5DYXIgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJc2F2ZVBvcyA7ICAJICAgICBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2JvdW5kcyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaWQgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2F0dHIgICh2b2lkKSB7IHJldHVybiAgMTAgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl92YWx1ZSAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX21pblZhbHVlICAodm9pZCkgeyByZXR1cm4gIDE0IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfbWF4VmFsdWUgICh2b2lkKSB7IHJldHVybiAgMTYgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9wYWdlU2l6ZSAgKHZvaWQpIHsgcmV0dXJuICAxOCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3BlblBvc0luQ2FyICAodm9pZCkgeyByZXR1cm4gIDIwIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2F2ZVBvcyAgKHZvaWQpIHsgcmV0dXJuICAyMiA7IH0g
IAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzRm9ybUdhZGdldEF0dHJU
eXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVt
QWxpYXNGb3JtR2FkZ2V0QXR0clR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzRm9ybUdhZGdldEF0
dHJUeXBlICAJKGNvbnN0IEVtQWxpYXNGb3JtR2FkZ2V0QXR0clR5cGUgICYpOwlwdHJfdHlwZQkJ
CUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRT
aXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyICA7IH0JRW1BbGlhc0Zvcm1HYWRnZXRBdHRyVHlw
ZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNGb3JtR2FkZ2V0QXR0clR5cGUgIDxBPiYp
OwlFbUFsaWFzRm9ybUdhZGdldEF0dHJUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3Qg
RW1BbGlhc0Zvcm1HYWRnZXRBdHRyVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXBy
aXZhdGU6CUVtQWxpYXNGb3JtR2FkZ2V0QXR0clR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0
cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlmbGFncyA7ICAJICAgICBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAodm9pZCkgeyByZXR1cm4gIDAgOyB9ICAJfTsg
CWNsYXNzIEVtUHJveHlGb3JtR2FkZ2V0QXR0clR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lk
KiBwdHJfdHlwZTsJRW1Qcm94eUZvcm1HYWRnZXRBdHRyVHlwZSAgCSh2b2lkKTsJRW1Qcm94eUZv
cm1HYWRnZXRBdHRyVHlwZSAgCShjb25zdCBFbVByb3h5Rm9ybUdhZGdldEF0dHJUeXBlICAmKTsJ
cHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2Nh
bERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMiAg
OyB9CUVtUHJveHlGb3JtR2FkZ2V0QXR0clR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94
eUZvcm1HYWRnZXRBdHRyVHlwZSAgJik7CUVtQWxpYXNGb3JtR2FkZ2V0QXR0clR5cGUgIDxMQVM+
CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNGb3JtR2FkZ2V0QXR0clR5cGUgIDxMQVM+
CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNb
ICAgIDIgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPExBUz4J
IAkJCQkJCWZsYWdzIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmxhZ3MgICh2b2lk
KSB7IHJldHVybiAgMCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFs
aWFzRm9ybUdhZGdldFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlw
ZSBwdHJfdHlwZTsJRW1BbGlhc0Zvcm1HYWRnZXRUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc0Zv
cm1HYWRnZXRUeXBlICAJKGNvbnN0IEVtQWxpYXNGb3JtR2FkZ2V0VHlwZSAgJik7CXB0cl90eXBl
CQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdl
dFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIwICA7IH0JRW1BbGlhc0Zvcm1HYWRnZXRUeXBl
ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0Zvcm1HYWRnZXRUeXBlICA8QT4mKTsJRW1B
bGlhc0Zvcm1HYWRnZXRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0Zv
cm1HYWRnZXRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlh
c0Zvcm1HYWRnZXRUeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBF
bUFsaWFzVUludDE2IDxBPgkgCQkJCQkJaWQgOyAJIEVtQWxpYXNGb3JtR2FkZ2V0QXR0clR5cGUg
PEE+CSAJCQlhdHRyIDsgCSBFbUFsaWFzUmVjdGFuZ2xlVHlwZSA8QT4JIAkJCQlyZWN0IDsgCSBF
bUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZGF0YSA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJ
CWhhbmRsZXIgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pZCAgKHZvaWQpIHsgcmV0
dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYXR0ciAgKHZvaWQpIHsgcmV0dXJu
ICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVjdCAgKHZvaWQpIHsgcmV0dXJuICA0
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGF0YSAgKHZvaWQpIHsgcmV0dXJuICAxMiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2hhbmRsZXIgICh2b2lkKSB7IHJldHVybiAgMTYg
OyB9ICAJfTsgCWNsYXNzIEVtUHJveHlGb3JtR2FkZ2V0VHlwZSAgCXsJcHVibGljOgl0eXBlZGVm
IHZvaWQqIHB0cl90eXBlOwlFbVByb3h5Rm9ybUdhZGdldFR5cGUgIAkodm9pZCk7CUVtUHJveHlG
b3JtR2FkZ2V0VHlwZSAgCShjb25zdCBFbVByb3h5Rm9ybUdhZGdldFR5cGUgICYpOwlwdHJfdHlw
ZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsg
fQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyMCAgOyB9CUVt
UHJveHlGb3JtR2FkZ2V0VHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5Rm9ybUdhZGdl
dFR5cGUgICYpOwlFbUFsaWFzRm9ybUdhZGdldFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7
CWNvbnN0IEVtQWxpYXNGb3JtR2FkZ2V0VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25z
dDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgMjAgIF07CX0gZkxvY2FsRGF0
YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWlkIDsgCSBFbUFsaWFz
Rm9ybUdhZGdldEF0dHJUeXBlIDxMQVM+CSAJCQlhdHRyIDsgCSBFbUFsaWFzUmVjdGFuZ2xlVHlw
ZSA8TEFTPgkgCQkJCXJlY3QgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWRhdGEgOyAJ
IEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWhhbmRsZXIgOyAgCSAgICAgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9pZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfYXR0ciAgKHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfcmVjdCAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
ZGF0YSAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2hh
bmRsZXIgICh2b2lkKSB7IHJldHVybiAgMTYgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3Mg
QT4JY2xhc3MgRW1BbGlhc0Zvcm1MYWJlbFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFt
ZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0Zvcm1MYWJlbFR5cGUgIAkocHRyX3R5cGUp
OwlFbUFsaWFzRm9ybUxhYmVsVHlwZSAgCShjb25zdCBFbUFsaWFzRm9ybUxhYmVsVHlwZSAgJik7
CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBz
aXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDE0ICA7IH0JRW1BbGlhc0Zvcm1M
YWJlbFR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzRm9ybUxhYmVsVHlwZSAgPEE+
Jik7CUVtQWxpYXNGb3JtTGFiZWxUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1B
bGlhc0Zvcm1MYWJlbFR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglF
bUFsaWFzRm9ybUxhYmVsVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAg
ICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWlkIDsgCSBFbUFsaWFzUG9pbnRUeXBlIDxBPgkg
CQkJCQlwb3MgOyAJIEVtQWxpYXNGb3JtT2JqQXR0clR5cGUgPEE+CSAJCQlhdHRyIDsgCSBFbUFs
aWFzRm9udElEIDxBPgkgCQkJCQkJZm9udElEIDsgCSBFbUFsaWFzVUludDggPEE+CSAJCQkJCQly
ZXNlcnZlZCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXRleHQgOyAgCSAgICAgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9pZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfcG9zICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9hdHRyICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9mb250SUQgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX3Jlc2VydmVkICAodm9pZCkgeyByZXR1cm4gIDkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl90ZXh0ICAodm9pZCkgeyByZXR1cm4gIDEwIDsgfSAgCX07IAljbGFzcyBFbVByb3h5Rm9y
bUxhYmVsVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5Rm9y
bUxhYmVsVHlwZSAgCSh2b2lkKTsJRW1Qcm94eUZvcm1MYWJlbFR5cGUgIAkoY29uc3QgRW1Qcm94
eUZvcm1MYWJlbFR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1
cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lk
KQkJCXsgcmV0dXJuICAgICAxNCAgOyB9CUVtUHJveHlGb3JtTGFiZWxUeXBlICAmCQlvcGVyYXRv
cj0gKGNvbnN0IEVtUHJveHlGb3JtTGFiZWxUeXBlICAmKTsJRW1BbGlhc0Zvcm1MYWJlbFR5cGUg
IDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNGb3JtTGFiZWxUeXBlICA8TEFT
PglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVz
WyAgICAxNCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8TEFT
PgkgCQkJCQkJaWQgOyAJIEVtQWxpYXNQb2ludFR5cGUgPExBUz4JIAkJCQkJcG9zIDsgCSBFbUFs
aWFzRm9ybU9iakF0dHJUeXBlIDxMQVM+CSAJCQlhdHRyIDsgCSBFbUFsaWFzRm9udElEIDxMQVM+
CSAJCQkJCQlmb250SUQgOyAJIEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJcmVzZXJ2ZWQgOyAJ
IEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCXRleHQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9pZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfcG9zICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9h
dHRyICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mb250
SUQgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jlc2Vy
dmVkICAodm9pZCkgeyByZXR1cm4gIDkgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90ZXh0
ICAodm9pZCkgeyByZXR1cm4gIDEwIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNs
YXNzIEVtQWxpYXNGaWVsZEF0dHJUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6
cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNGaWVsZEF0dHJUeXBlICAJKHB0cl90eXBlKTsJRW1B
bGlhc0ZpZWxkQXR0clR5cGUgIAkoY29uc3QgRW1BbGlhc0ZpZWxkQXR0clR5cGUgICYpOwlwdHJf
dHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90
CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyICA7IH0JRW1BbGlhc0ZpZWxkQXR0clR5
cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzRmllbGRBdHRyVHlwZSAgPEE+Jik7CUVt
QWxpYXNGaWVsZEF0dHJUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0Zp
ZWxkQXR0clR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFz
RmllbGRBdHRyVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1B
bGlhc1VJbnQxNiA8QT4JIAkJCQkJCWZsYWdzIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZmxhZ3MgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eUZpZWxk
QXR0clR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUZpZWxk
QXR0clR5cGUgIAkodm9pZCk7CUVtUHJveHlGaWVsZEF0dHJUeXBlICAJKGNvbnN0IEVtUHJveHlG
aWVsZEF0dHJUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJu
IChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJ
CQl7IHJldHVybiAgICAgMiAgOyB9CUVtUHJveHlGaWVsZEF0dHJUeXBlICAmCQlvcGVyYXRvcj0g
KGNvbnN0IEVtUHJveHlGaWVsZEF0dHJUeXBlICAmKTsJRW1BbGlhc0ZpZWxkQXR0clR5cGUgIDxM
QVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNGaWVsZEF0dHJUeXBlICA8TEFTPglv
cGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAg
ICAyICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxMQVM+CSAJ
CQkJCQlmbGFncyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAodm9pZCkg
eyByZXR1cm4gIDAgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlh
c0ZpZWxkVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90
eXBlOwlFbUFsaWFzRmllbGRUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc0ZpZWxkVHlwZSAgCShj
b25zdCBFbUFsaWFzRmllbGRUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0
CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVy
biAgICAgNDAgIDsgfQlFbUFsaWFzRmllbGRUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1B
bGlhc0ZpZWxkVHlwZSAgPEE+Jik7CUVtQWxpYXNGaWVsZFR5cGUgIDxBPglvcGVyYXRvcltdIChp
bnQpOwljb25zdCBFbUFsaWFzRmllbGRUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJ
cHJpdmF0ZToJRW1BbGlhc0ZpZWxkVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJs
aWM6CSAgICAgRW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWlkIDsgCSBFbUFsaWFzUmVjdGFuZ2xl
VHlwZSA8QT4JIAkJCQlyZWN0IDsgCSBFbUFsaWFzRmllbGRBdHRyVHlwZSA8QT4JIAkJCQlhdHRy
IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJdGV4dCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4J
IAkJCQkJCXRleHRIYW5kbGUgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlsaW5lcyA7IAkg
RW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCXRleHRMZW4gOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJ
CQkJCQl0ZXh0QmxvY2tTaXplIDsgCSBFbUFsaWFzVUludDE2IDxBPgkgCQkJCQkJbWF4Q2hhcnMg
OyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlzZWxGaXJzdFBvcyA7IAkgRW1BbGlhc1VJbnQx
NiA8QT4JIAkJCQkJCXNlbExhc3RQb3MgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlpbnNQ
dFhQb3MgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlpbnNQdFlQb3MgOyAJIEVtQWxpYXNG
b250SUQgPEE+CSAJCQkJCQlmb250SUQgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQltYXhW
aXNpYmxlTGluZXMgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pZCAgKHZvaWQpIHsg
cmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVjdCAgKHZvaWQpIHsgcmV0
dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYXR0ciAgKHZvaWQpIHsgcmV0dXJu
ICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RleHQgICh2b2lkKSB7IHJldHVybiAg
MTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90ZXh0SGFuZGxlICAodm9pZCkgeyByZXR1
cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbGluZXMgICh2b2lkKSB7IHJldHVy
biAgMjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90ZXh0TGVuICAodm9pZCkgeyByZXR1
cm4gIDI0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdGV4dEJsb2NrU2l6ZSAgKHZvaWQp
IHsgcmV0dXJuICAyNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21heENoYXJzICAodm9p
ZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2VsRmlyc3RQb3Mg
ICh2b2lkKSB7IHJldHVybiAgMzAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zZWxMYXN0
UG9zICAodm9pZCkgeyByZXR1cm4gIDMyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW5z
UHRYUG9zICAodm9pZCkgeyByZXR1cm4gIDM0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
aW5zUHRZUG9zICAodm9pZCkgeyByZXR1cm4gIDM2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZm9udElEICAodm9pZCkgeyByZXR1cm4gIDM4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfbWF4VmlzaWJsZUxpbmVzICAodm9pZCkgeyByZXR1cm4gIDM5IDsgfSAgCX07IAljbGFzcyBF
bVByb3h5RmllbGRUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJv
eHlGaWVsZFR5cGUgIAkodm9pZCk7CUVtUHJveHlGaWVsZFR5cGUgIAkoY29uc3QgRW1Qcm94eUZp
ZWxkVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRy
X3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyBy
ZXR1cm4gICAgIDQwICA7IH0JRW1Qcm94eUZpZWxkVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBF
bVByb3h5RmllbGRUeXBlICAmKTsJRW1BbGlhc0ZpZWxkVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAo
aW50KTsJY29uc3QgRW1BbGlhc0ZpZWxkVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25z
dDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgNDAgIF07CX0gZkxvY2FsRGF0
YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWlkIDsgCSBFbUFsaWFz
UmVjdGFuZ2xlVHlwZSA8TEFTPgkgCQkJCXJlY3QgOyAJIEVtQWxpYXNGaWVsZEF0dHJUeXBlIDxM
QVM+CSAJCQkJYXR0ciA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJdGV4dCA7IAkgRW1B
bGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJdGV4dEhhbmRsZSA7IAkgRW1BbGlhc2VtdXB0ciA8TEFT
PgkgCQkJCQkJbGluZXMgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXRleHRMZW4gOyAJ
IEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXRleHRCbG9ja1NpemUgOyAJIEVtQWxpYXNVSW50
MTYgPExBUz4JIAkJCQkJCW1heENoYXJzIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlz
ZWxGaXJzdFBvcyA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJc2VsTGFzdFBvcyA7IAkg
RW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJaW5zUHRYUG9zIDsgCSBFbUFsaWFzVUludDE2IDxM
QVM+CSAJCQkJCQlpbnNQdFlQb3MgOyAJIEVtQWxpYXNGb250SUQgPExBUz4JIAkJCQkJCWZvbnRJ
RCA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJbWF4VmlzaWJsZUxpbmVzIDsgIAkgICAg
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaWQgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3JlY3QgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2F0dHIgICh2b2lkKSB7IHJldHVybiAgMTAgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl90ZXh0ICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfdGV4dEhhbmRsZSAgKHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2xpbmVzICAodm9pZCkgeyByZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfdGV4dExlbiAgKHZvaWQpIHsgcmV0dXJuICAyNCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3RleHRCbG9ja1NpemUgICh2b2lkKSB7IHJldHVybiAgMjYgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9tYXhDaGFycyAgKHZvaWQpIHsgcmV0dXJuICAyOCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3NlbEZpcnN0UG9zICAodm9pZCkgeyByZXR1cm4gIDMw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc2VsTGFzdFBvcyAgKHZvaWQpIHsgcmV0dXJu
ICAzMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0WFBvcyAgKHZvaWQpIHsgcmV0
dXJuICAzNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2luc1B0WVBvcyAgKHZvaWQpIHsg
cmV0dXJuICAzNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZvbnRJRCAgKHZvaWQpIHsg
cmV0dXJuICAzOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX21heFZpc2libGVMaW5lcyAg
KHZvaWQpIHsgcmV0dXJuICAzOSA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFz
cyBFbUFsaWFzTGlzdEF0dHJUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRy
X3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNMaXN0QXR0clR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFz
TGlzdEF0dHJUeXBlICAJKGNvbnN0IEVtQWxpYXNMaXN0QXR0clR5cGUgICYpOwlwdHJfdHlwZQkJ
CUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRT
aXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICAyICA7IH0JRW1BbGlhc0xpc3RBdHRyVHlwZSAgPEE+
JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNMaXN0QXR0clR5cGUgIDxBPiYpOwlFbUFsaWFzTGlz
dEF0dHJUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0xpc3RBdHRyVHlw
ZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNMaXN0QXR0clR5
cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYg
PEE+CSAJCQkJCQlmbGFncyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAo
dm9pZCkgeyByZXR1cm4gIDAgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlMaXN0QXR0clR5cGUgIAl7
CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUxpc3RBdHRyVHlwZSAgCSh2
b2lkKTsJRW1Qcm94eUxpc3RBdHRyVHlwZSAgCShjb25zdCBFbVByb3h5TGlzdEF0dHJUeXBlICAm
KTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZM
b2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAg
MiAgOyB9CUVtUHJveHlMaXN0QXR0clR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eUxp
c3RBdHRyVHlwZSAgJik7CUVtQWxpYXNMaXN0QXR0clR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNMaXN0QXR0clR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29u
c3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDIgIF07CX0gZkxvY2FsRGF0
YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWZsYWdzIDsgIAkgICAg
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmxhZ3MgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gIAl9
OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzTGlzdFR5cGUgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0xpc3RUeXBl
ICAJKHB0cl90eXBlKTsJRW1BbGlhc0xpc3RUeXBlICAJKGNvbnN0IEVtQWxpYXNMaXN0VHlwZSAg
Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRp
YyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDMyICA7IH0JRW1BbGlhc0xp
c3RUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc0xpc3RUeXBlICA8QT4mKTsJRW1B
bGlhc0xpc3RUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0xpc3RUeXBl
ICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc0xpc3RUeXBlICAJ
KHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxBPgkg
CQkJCQkJaWQgOyAJIEVtQWxpYXNSZWN0YW5nbGVUeXBlIDxBPgkgCQkJCWJvdW5kcyA7IAkgRW1B
bGlhc0xpc3RBdHRyVHlwZSA8QT4JIAkJCQlhdHRyIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJ
CQkJaXRlbXNUZXh0IDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQludW1JdGVtcyA7IAkgRW1B
bGlhc0ludDE2IDxBPgkgCQkJCQkJY3VycmVudEl0ZW0gOyAJIEVtQWxpYXNJbnQxNiA8QT4JIAkJ
CQkJCXRvcEl0ZW0gOyAJIEVtQWxpYXNGb250SUQgPEE+CSAJCQkJCQlmb250IDsgCSBFbUFsaWFz
VUludDggPEE+CSAJCQkJCQlyZXNlcnZlZCA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXBv
cHVwV2luIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJZHJhd0l0ZW1zQ2FsbGJhY2sgOyAg
CSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pZCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYm91bmRzICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9hdHRyICAodm9pZCkgeyByZXR1cm4gIDEwIDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaXRlbXNUZXh0ICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbnVtSXRlbXMgICh2b2lkKSB7IHJldHVybiAgMTYgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jdXJyZW50SXRlbSAgKHZvaWQpIHsgcmV0dXJuICAx
OCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3RvcEl0ZW0gICh2b2lkKSB7IHJldHVybiAg
MjAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mb250ICAodm9pZCkgeyByZXR1cm4gIDIy
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcmVzZXJ2ZWQgICh2b2lkKSB7IHJldHVybiAg
MjMgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9wb3B1cFdpbiAgKHZvaWQpIHsgcmV0dXJu
ICAyNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2RyYXdJdGVtc0NhbGxiYWNrICAodm9p
ZCkgeyByZXR1cm4gIDI4IDsgfSAgCX07IAljbGFzcyBFbVByb3h5TGlzdFR5cGUgIAl7CXB1Ymxp
YzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUxpc3RUeXBlICAJKHZvaWQpOwlFbVBy
b3h5TGlzdFR5cGUgIAkoY29uc3QgRW1Qcm94eUxpc3RUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQ
dHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGlj
IHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMzIgIDsgfQlFbVByb3h5TGlz
dFR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eUxpc3RUeXBlICAmKTsJRW1BbGlhc0xp
c3RUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzTGlzdFR5cGUgIDxM
QVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0
ZXNbICAgIDMyICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzVUludDE2IDxM
QVM+CSAJCQkJCQlpZCA7IAkgRW1BbGlhc1JlY3RhbmdsZVR5cGUgPExBUz4JIAkJCQlib3VuZHMg
OyAJIEVtQWxpYXNMaXN0QXR0clR5cGUgPExBUz4JIAkJCQlhdHRyIDsgCSBFbUFsaWFzZW11cHRy
IDxMQVM+CSAJCQkJCQlpdGVtc1RleHQgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJbnVt
SXRlbXMgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJY3VycmVudEl0ZW0gOyAJIEVtQWxp
YXNJbnQxNiA8TEFTPgkgCQkJCQkJdG9wSXRlbSA7IAkgRW1BbGlhc0ZvbnRJRCA8TEFTPgkgCQkJ
CQkJZm9udCA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlyZXNlcnZlZCA7IAkgRW1BbGlh
c2VtdXB0ciA8TEFTPgkgCQkJCQkJcG9wdXBXaW4gOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJ
CQkJCWRyYXdJdGVtc0NhbGxiYWNrIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaWQg
ICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2JvdW5kcyAg
KHZvaWQpIHsgcmV0dXJuICAyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYXR0ciAgKHZv
aWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2l0ZW1zVGV4dCAg
KHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX251bUl0ZW1z
ICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY3VycmVu
dEl0ZW0gICh2b2lkKSB7IHJldHVybiAgMTggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl90
b3BJdGVtICAodm9pZCkgeyByZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
Zm9udCAgKHZvaWQpIHsgcmV0dXJuICAyMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Jl
c2VydmVkICAodm9pZCkgeyByZXR1cm4gIDIzIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
cG9wdXBXaW4gICh2b2lkKSB7IHJldHVybiAgMjQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9kcmF3SXRlbXNDYWxsYmFjayAgKHZvaWQpIHsgcmV0dXJuICAyOCA7IH0gIAl9OyAgIAkgIHRl
bXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzVGFibGVBdHRyVHlwZSAgCXsJcHVibGljOgl0
eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzVGFibGVBdHRyVHlw
ZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNUYWJsZUF0dHJUeXBlICAJKGNvbnN0IEVtQWxpYXNUYWJs
ZUF0dHJUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQ
dHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMiAgOyB9
CUVtQWxpYXNUYWJsZUF0dHJUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc1RhYmxl
QXR0clR5cGUgIDxBPiYpOwlFbUFsaWFzVGFibGVBdHRyVHlwZSAgPEE+CW9wZXJhdG9yW10gKGlu
dCk7CWNvbnN0IEVtQWxpYXNUYWJsZUF0dHJUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25z
dDsJcHJpdmF0ZToJRW1BbGlhc1RhYmxlQXR0clR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0
cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MzIgPEE+CSAJCQkJCQlmbGFncyA7ICAJICAgICBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZsYWdzICAodm9pZCkgeyByZXR1cm4gIDAgOyB9ICAJfTsg
CWNsYXNzIEVtUHJveHlUYWJsZUF0dHJUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRy
X3R5cGU7CUVtUHJveHlUYWJsZUF0dHJUeXBlICAJKHZvaWQpOwlFbVByb3h5VGFibGVBdHRyVHlw
ZSAgCShjb25zdCBFbVByb3h5VGFibGVBdHRyVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2
b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXpl
X3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDIgIDsgfQlFbVByb3h5VGFibGVBdHRy
VHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5VGFibGVBdHRyVHlwZSAgJik7CUVtQWxp
YXNUYWJsZUF0dHJUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzVGFi
bGVBdHRyVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0
IHsJY2hhcgkJCV9ieXRlc1sgICAgMiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1B
bGlhc1VJbnQzMiA8TEFTPgkgCQkJCQkJZmxhZ3MgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9mbGFncyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNs
YXNzIEE+CWNsYXNzIEVtQWxpYXNUYWJsZVR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFt
ZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc1RhYmxlVHlwZSAgCShwdHJfdHlwZSk7CUVt
QWxpYXNUYWJsZVR5cGUgIAkoY29uc3QgRW1BbGlhc1RhYmxlVHlwZSAgJik7CXB0cl90eXBlCQkJ
R2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNp
emUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDc0ICA7IH0JRW1BbGlhc1RhYmxlVHlwZSAgPEE+Jglv
cGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNUYWJsZVR5cGUgIDxBPiYpOwlFbUFsaWFzVGFibGVUeXBl
ICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1RhYmxlVHlwZSAgPEE+CW9wZXJh
dG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNUYWJsZVR5cGUgIAkodm9pZCk7CXB0
cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlpZCA7
IAkgRW1BbGlhc1JlY3RhbmdsZVR5cGUgPEE+CSAJCQkJYm91bmRzIDsgCSBFbUFsaWFzVGFibGVB
dHRyVHlwZSA8QT4JIAkJCQlhdHRyIDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQludW1Db2x1
bW5zIDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQludW1Sb3dzIDsgCSBFbUFsaWFzSW50MTYg
PEE+CSAJCQkJCQljdXJyZW50Um93IDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQljdXJyZW50
Q29sdW1uIDsgCSBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQl0b3BSb3cgOyAJIEVtQWxpYXNlbXVw
dHIgPEE+CSAJCQkJCQljb2x1bW5BdHRycyA7IAkgRW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCXJv
d0F0dHJzIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJaXRlbXMgOyAJIEVtQWxpYXNGaWVs
ZFR5cGUgPEE+CSAJCQkJCWN1cnJlbnRGaWVsZCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2lkICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9i
b3VuZHMgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2F0
dHIgICh2b2lkKSB7IHJldHVybiAgMTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9udW1D
b2x1bW5zICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
bnVtUm93cyAgKHZvaWQpIHsgcmV0dXJuICAxNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9m
X2N1cnJlbnRSb3cgICh2b2lkKSB7IHJldHVybiAgMTYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9jdXJyZW50Q29sdW1uICAodm9pZCkgeyByZXR1cm4gIDE4IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfdG9wUm93ICAodm9pZCkgeyByZXR1cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfY29sdW1uQXR0cnMgICh2b2lkKSB7IHJldHVybiAgMjIgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9yb3dBdHRycyAgKHZvaWQpIHsgcmV0dXJuICAyNiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2l0ZW1zICAodm9pZCkgeyByZXR1cm4gIDMwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfY3VycmVudEZpZWxkICAodm9pZCkgeyByZXR1cm4gIDM0IDsgfSAg
CX07IAljbGFzcyBFbVByb3h5VGFibGVUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRy
X3R5cGU7CUVtUHJveHlUYWJsZVR5cGUgIAkodm9pZCk7CUVtUHJveHlUYWJsZVR5cGUgIAkoY29u
c3QgRW1Qcm94eVRhYmxlVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7
IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJ
KHZvaWQpCQkJeyByZXR1cm4gICAgIDc0ICA7IH0JRW1Qcm94eVRhYmxlVHlwZSAgJgkJb3BlcmF0
b3I9IChjb25zdCBFbVByb3h5VGFibGVUeXBlICAmKTsJRW1BbGlhc1RhYmxlVHlwZSAgPExBUz4J
b3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc1RhYmxlVHlwZSAgPExBUz4Jb3BlcmF0b3Jb
XSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgNzQgIF07
CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCWlk
IDsgCSBFbUFsaWFzUmVjdGFuZ2xlVHlwZSA8TEFTPgkgCQkJCWJvdW5kcyA7IAkgRW1BbGlhc1Rh
YmxlQXR0clR5cGUgPExBUz4JIAkJCQlhdHRyIDsgCSBFbUFsaWFzSW50MTYgPExBUz4JIAkJCQkJ
CW51bUNvbHVtbnMgOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJbnVtUm93cyA7IAkgRW1B
bGlhc0ludDE2IDxMQVM+CSAJCQkJCQljdXJyZW50Um93IDsgCSBFbUFsaWFzSW50MTYgPExBUz4J
IAkJCQkJCWN1cnJlbnRDb2x1bW4gOyAJIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJCQkJdG9wUm93
IDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQljb2x1bW5BdHRycyA7IAkgRW1BbGlhc2Vt
dXB0ciA8TEFTPgkgCQkJCQkJcm93QXR0cnMgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJ
CWl0ZW1zIDsgCSBFbUFsaWFzRmllbGRUeXBlIDxMQVM+CSAJCQkJCWN1cnJlbnRGaWVsZCA7ICAJ
ICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2lkICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9ib3VuZHMgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBz
dGF0aWMgc2l6ZV90CW9mZnNldG9mX2F0dHIgICh2b2lkKSB7IHJldHVybiAgMTAgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9udW1Db2x1bW5zICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbnVtUm93cyAgKHZvaWQpIHsgcmV0dXJuICAxNCA7IH0g
CSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2N1cnJlbnRSb3cgICh2b2lkKSB7IHJldHVybiAgMTYg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9jdXJyZW50Q29sdW1uICAodm9pZCkgeyByZXR1
cm4gIDE4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdG9wUm93ICAodm9pZCkgeyByZXR1
cm4gIDIwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY29sdW1uQXR0cnMgICh2b2lkKSB7
IHJldHVybiAgMjIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9yb3dBdHRycyAgKHZvaWQp
IHsgcmV0dXJuICAyNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2l0ZW1zICAodm9pZCkg
eyByZXR1cm4gIDMwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY3VycmVudEZpZWxkICAo
dm9pZCkgeyByZXR1cm4gIDM0IDsgfSAgCX07ICAgIAogIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFz
cyBFbUFsaWFzSG9zdERpckVudFR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpw
dHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0hvc3REaXJFbnRUeXBlICAJKHB0cl90eXBlKTsJRW1B
bGlhc0hvc3REaXJFbnRUeXBlICAJKGNvbnN0IEVtQWxpYXNIb3N0RGlyRW50VHlwZSAgJik7CXB0
cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXpl
X3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDI1NiAgOyB9CUVtQWxpYXNIb3N0RGly
RW50VHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNIb3N0RGlyRW50VHlwZSAgPEE+
Jik7CUVtQWxpYXNIb3N0RGlyRW50VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVt
QWxpYXNIb3N0RGlyRW50VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6
CUVtQWxpYXNIb3N0RGlyRW50VHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6
CSAgICAgRW1BbGlhc0ludDggPEE+CSAJCQkJCQlkX25hbWUgOyAgCSAgICAgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9kX25hbWUgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gIAl9OyAJY2xhc3MgRW1Q
cm94eUhvc3REaXJFbnRUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVt
UHJveHlIb3N0RGlyRW50VHlwZSAgCSh2b2lkKTsJRW1Qcm94eUhvc3REaXJFbnRUeXBlICAJKGNv
bnN0IEVtUHJveHlIb3N0RGlyRW50VHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBj
b25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdl
dFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDI1NiAgOyB9CUVtUHJveHlIb3N0RGlyRW50VHlw
ZSAgJgkJb3BlcmF0b3I9IChjb25zdCBFbVByb3h5SG9zdERpckVudFR5cGUgICYpOwlFbUFsaWFz
SG9zdERpckVudFR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNIb3N0
RGlyRW50VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0
IHsJY2hhcgkJCV9ieXRlc1sgICAgMjU2ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBF
bUFsaWFzSW50OCA8TEFTPgkgCQkJCQkJZF9uYW1lIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfZF9uYW1lICAodm9pZCkgeyByZXR1cm4gIDAgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8
Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0hvc3RHcmVtbGluSW5mb1R5cGUgIAl7CXB1YmxpYzoJdHlw
ZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0hvc3RHcmVtbGluSW5m
b1R5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzSG9zdEdyZW1saW5JbmZvVHlwZSAgCShjb25zdCBF
bUFsaWFzSG9zdEdyZW1saW5JbmZvVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBj
b25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyBy
ZXR1cm4gICAgIDIyMCAgOyB9CUVtQWxpYXNIb3N0R3JlbWxpbkluZm9UeXBlICA8QT4mCW9wZXJh
dG9yPSAoY29uc3QgRW1BbGlhc0hvc3RHcmVtbGluSW5mb1R5cGUgIDxBPiYpOwlFbUFsaWFzSG9z
dEdyZW1saW5JbmZvVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNIb3N0
R3JlbWxpbkluZm9UeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1B
bGlhc0hvc3RHcmVtbGluSW5mb1R5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGlj
OgkgICAgIEVtQWxpYXNJbnQzMiA8QT4JIAkJCQkJCWZGaXJzdEdyZW1saW4gOyAJIEVtQWxpYXNJ
bnQzMiA8QT4JIAkJCQkJCWZMYXN0R3JlbWxpbiA7IAkgRW1BbGlhc0ludDMyIDxBPgkgCQkJCQkJ
ZlNhdmVGcmVxdWVuY3kgOyAJIEVtQWxpYXNJbnQzMiA8QT4JIAkJCQkJCWZTd2l0Y2hEZXB0aCA7
IAkgRW1BbGlhc0ludDMyIDxBPgkgCQkJCQkJZk1heERlcHRoIDsgCSBFbUFsaWFzSW50OCA8QT4J
IAkJCQkJCWZBcHBOYW1lcyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZGaXJzdEdy
ZW1saW4gICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZM
YXN0R3JlbWxpbiAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0
b2ZfZlNhdmVGcmVxdWVuY3kgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2ZTd2l0Y2hEZXB0aCAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX2ZNYXhEZXB0aCAgKHZvaWQpIHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX2ZBcHBOYW1lcyAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gIAl9
OyAJY2xhc3MgRW1Qcm94eUhvc3RHcmVtbGluSW5mb1R5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2
b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUhvc3RHcmVtbGluSW5mb1R5cGUgIAkodm9pZCk7CUVtUHJv
eHlIb3N0R3JlbWxpbkluZm9UeXBlICAJKGNvbnN0IEVtUHJveHlIb3N0R3JlbWxpbkluZm9UeXBl
ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkg
JmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAg
ICAgMjIwICA7IH0JRW1Qcm94eUhvc3RHcmVtbGluSW5mb1R5cGUgICYJCW9wZXJhdG9yPSAoY29u
c3QgRW1Qcm94eUhvc3RHcmVtbGluSW5mb1R5cGUgICYpOwlFbUFsaWFzSG9zdEdyZW1saW5JbmZv
VHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0hvc3RHcmVtbGluSW5m
b1R5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNo
YXIJCQlfYnl0ZXNbICAgIDIyMCAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlh
c0ludDMyIDxMQVM+CSAJCQkJCQlmRmlyc3RHcmVtbGluIDsgCSBFbUFsaWFzSW50MzIgPExBUz4J
IAkJCQkJCWZMYXN0R3JlbWxpbiA7IAkgRW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJCQlmU2F2ZUZy
ZXF1ZW5jeSA7IAkgRW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJCQlmU3dpdGNoRGVwdGggOyAJIEVt
QWxpYXNJbnQzMiA8TEFTPgkgCQkJCQkJZk1heERlcHRoIDsgCSBFbUFsaWFzSW50OCA8TEFTPgkg
CQkJCQkJZkFwcE5hbWVzIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZkZpcnN0R3Jl
bWxpbiAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZkxh
c3RHcmVtbGluICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9mU2F2ZUZyZXF1ZW5jeSAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfZlN3aXRjaERlcHRoICAodm9pZCkgeyByZXR1cm4gIDEyIDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfZk1heERlcHRoICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfZkFwcE5hbWVzICAodm9pZCkgeyByZXR1cm4gIDIwIDsgfSAgCX07
ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNIb3N0U3RhdFR5cGUgIAl7CXB1
YmxpYzoJdHlwZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0hvc3RT
dGF0VHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNIb3N0U3RhdFR5cGUgIAkoY29uc3QgRW1BbGlh
c0hvc3RTdGF0VHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVy
biBmUHRyOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDU2
ICA7IH0JRW1BbGlhc0hvc3RTdGF0VHlwZSAgPEE+JglvcGVyYXRvcj0gKGNvbnN0IEVtQWxpYXNI
b3N0U3RhdFR5cGUgIDxBPiYpOwlFbUFsaWFzSG9zdFN0YXRUeXBlICA8QT4Jb3BlcmF0b3JbXSAo
aW50KTsJY29uc3QgRW1BbGlhc0hvc3RTdGF0VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29u
c3Q7CXByaXZhdGU6CUVtQWxpYXNIb3N0U3RhdFR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0
cjsJcHVibGljOgkgICAgIEVtQWxpYXNJbnQzMiA8QT4JIAkJCQkJCXN0X2Rldl8gOyAJIEVtQWxp
YXNJbnQzMiA8QT4JIAkJCQkJCXN0X2lub18gOyAJIEVtQWxpYXNJbnQzMiA8QT4JIAkJCQkJCXN0
X21vZGVfIDsgCSBFbUFsaWFzSW50MzIgPEE+CSAJCQkJCQlzdF9ubGlua18gOyAJIEVtQWxpYXNJ
bnQzMiA8QT4JIAkJCQkJCXN0X3VpZF8gOyAJIEVtQWxpYXNJbnQzMiA8QT4JIAkJCQkJCXN0X2dp
ZF8gOyAJIEVtQWxpYXNJbnQzMiA8QT4JIAkJCQkJCXN0X3JkZXZfIDsgCSBFbUFsaWFzSG9zdFRp
bWVUeXBlIDxBPgkgCQkJCXN0X2F0aW1lXyA7IAkgRW1BbGlhc0hvc3RUaW1lVHlwZSA8QT4JIAkJ
CQlzdF9tdGltZV8gOyAJIEVtQWxpYXNIb3N0VGltZVR5cGUgPEE+CSAJCQkJc3RfY3RpbWVfIDsg
CSBFbUFsaWFzSW50MzIgPEE+CSAJCQkJCQlzdF9zaXplXyA7IAkgRW1BbGlhc0ludDMyIDxBPgkg
CQkJCQkJc3RfYmxrc2l6ZV8gOyAJIEVtQWxpYXNJbnQzMiA8QT4JIAkJCQkJCXN0X2Jsb2Nrc18g
OyAJIEVtQWxpYXNJbnQzMiA8QT4JIAkJCQkJCXN0X2ZsYWdzXyA7ICAJICAgICBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3N0X2Rldl8gICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3N0X2lub18gICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX3N0X21vZGVfICAodm9pZCkgeyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9zdF9ubGlua18gICh2b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9zdF91aWRfICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2Zfc3RfZ2lkXyAgKHZvaWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3N0X3JkZXZfICAodm9pZCkgeyByZXR1cm4gIDI0IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3RfYXRpbWVfICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3RfbXRpbWVfICAodm9pZCkgeyByZXR1cm4gIDMyIDsg
fSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3RfY3RpbWVfICAodm9pZCkgeyByZXR1cm4gIDM2
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3Rfc2l6ZV8gICh2b2lkKSB7IHJldHVybiAg
NDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zdF9ibGtzaXplXyAgKHZvaWQpIHsgcmV0
dXJuICA0NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N0X2Jsb2Nrc18gICh2b2lkKSB7
IHJldHVybiAgNDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zdF9mbGFnc18gICh2b2lk
KSB7IHJldHVybiAgNTIgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlIb3N0U3RhdFR5cGUgIAl7CXB1
YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eUhvc3RTdGF0VHlwZSAgCSh2b2lk
KTsJRW1Qcm94eUhvc3RTdGF0VHlwZSAgCShjb25zdCBFbVByb3h5SG9zdFN0YXRUeXBlICAmKTsJ
cHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2Nh
bERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgNTYg
IDsgfQlFbVByb3h5SG9zdFN0YXRUeXBlICAmCQlvcGVyYXRvcj0gKGNvbnN0IEVtUHJveHlIb3N0
U3RhdFR5cGUgICYpOwlFbUFsaWFzSG9zdFN0YXRUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQp
Owljb25zdCBFbUFsaWFzSG9zdFN0YXRUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0
Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA1NiAgXTsJfSBmTG9jYWxEYXRh
OwlwdWJsaWM6CSAgICAgRW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJCQlzdF9kZXZfIDsgCSBFbUFs
aWFzSW50MzIgPExBUz4JIAkJCQkJCXN0X2lub18gOyAJIEVtQWxpYXNJbnQzMiA8TEFTPgkgCQkJ
CQkJc3RfbW9kZV8gOyAJIEVtQWxpYXNJbnQzMiA8TEFTPgkgCQkJCQkJc3RfbmxpbmtfIDsgCSBF
bUFsaWFzSW50MzIgPExBUz4JIAkJCQkJCXN0X3VpZF8gOyAJIEVtQWxpYXNJbnQzMiA8TEFTPgkg
CQkJCQkJc3RfZ2lkXyA7IAkgRW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJCQlzdF9yZGV2XyA7IAkg
RW1BbGlhc0hvc3RUaW1lVHlwZSA8TEFTPgkgCQkJCXN0X2F0aW1lXyA7IAkgRW1BbGlhc0hvc3RU
aW1lVHlwZSA8TEFTPgkgCQkJCXN0X210aW1lXyA7IAkgRW1BbGlhc0hvc3RUaW1lVHlwZSA8TEFT
PgkgCQkJCXN0X2N0aW1lXyA7IAkgRW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJCQlzdF9zaXplXyA7
IAkgRW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJCQlzdF9ibGtzaXplXyA7IAkgRW1BbGlhc0ludDMy
IDxMQVM+CSAJCQkJCQlzdF9ibG9ja3NfIDsgCSBFbUFsaWFzSW50MzIgPExBUz4JIAkJCQkJCXN0
X2ZsYWdzXyA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N0X2Rldl8gICh2b2lkKSB7
IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N0X2lub18gICh2b2lkKSB7
IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N0X21vZGVfICAodm9pZCkg
eyByZXR1cm4gIDggOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zdF9ubGlua18gICh2b2lk
KSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9zdF91aWRfICAodm9p
ZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3RfZ2lkXyAgKHZv
aWQpIHsgcmV0dXJuICAyMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3N0X3JkZXZfICAo
dm9pZCkgeyByZXR1cm4gIDI0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3RfYXRpbWVf
ICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3RfbXRp
bWVfICAodm9pZCkgeyByZXR1cm4gIDMyIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zfc3Rf
Y3RpbWVfICAodm9pZCkgeyByZXR1cm4gIDM2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2Zf
c3Rfc2l6ZV8gICh2b2lkKSB7IHJldHVybiAgNDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRv
Zl9zdF9ibGtzaXplXyAgKHZvaWQpIHsgcmV0dXJuICA0NCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX3N0X2Jsb2Nrc18gICh2b2lkKSB7IHJldHVybiAgNDggOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9zdF9mbGFnc18gICh2b2lkKSB7IHJldHVybiAgNTIgOyB9ICAJfTsgICAJICB0
ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc0hvc3RUbVR5cGUgIAl7CXB1YmxpYzoJdHlw
ZWRlZiB0eXBlbmFtZSBBOjpwdHJfdHlwZSBwdHJfdHlwZTsJRW1BbGlhc0hvc3RUbVR5cGUgIAko
cHRyX3R5cGUpOwlFbUFsaWFzSG9zdFRtVHlwZSAgCShjb25zdCBFbUFsaWFzSG9zdFRtVHlwZSAg
Jik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiBmUHRyOyB9CXN0YXRp
YyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDM2ICA7IH0JRW1BbGlhc0hv
c3RUbVR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzSG9zdFRtVHlwZSAgPEE+Jik7
CUVtQWxpYXNIb3N0VG1UeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc0hv
c3RUbVR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzSG9z
dFRtVHlwZSAgCSh2b2lkKTsJcHRyX3R5cGUJCQlmUHRyOwlwdWJsaWM6CSAgICAgRW1BbGlhc0lu
dDMyIDxBPgkgCQkJCQkJdG1fc2VjXyA7IAkgRW1BbGlhc0ludDMyIDxBPgkgCQkJCQkJdG1fbWlu
XyA7IAkgRW1BbGlhc0ludDMyIDxBPgkgCQkJCQkJdG1faG91cl8gOyAJIEVtQWxpYXNJbnQzMiA8
QT4JIAkJCQkJCXRtX21kYXlfIDsgCSBFbUFsaWFzSW50MzIgPEE+CSAJCQkJCQl0bV9tb25fIDsg
CSBFbUFsaWFzSW50MzIgPEE+CSAJCQkJCQl0bV95ZWFyXyA7IAkgRW1BbGlhc0ludDMyIDxBPgkg
CQkJCQkJdG1fd2RheV8gOyAJIEVtQWxpYXNJbnQzMiA8QT4JIAkJCQkJCXRtX3lkYXlfIDsgCSBF
bUFsaWFzSW50MzIgPEE+CSAJCQkJCQl0bV9pc2RzdF8gOyAgCSAgICAgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl90bV9zZWNfICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl90bV9taW5fICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl90bV9ob3VyXyAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfdG1fbWRheV8gICh2b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl90bV9tb25fICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfdG1feWVhcl8gICh2b2lkKSB7IHJldHVybiAgMjAgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl90bV93ZGF5XyAgKHZvaWQpIHsgcmV0dXJuICAyNCA7IH0gCSBzdGF0aWMg
c2l6ZV90CW9mZnNldG9mX3RtX3lkYXlfICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfdG1faXNkc3RfICAodm9pZCkgeyByZXR1cm4gIDMyIDsgfSAgCX07
IAljbGFzcyBFbVByb3h5SG9zdFRtVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90
eXBlOwlFbVByb3h5SG9zdFRtVHlwZSAgCSh2b2lkKTsJRW1Qcm94eUhvc3RUbVR5cGUgIAkoY29u
c3QgRW1Qcm94eUhvc3RUbVR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJ
eyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXpl
CSh2b2lkKQkJCXsgcmV0dXJuICAgICAzNiAgOyB9CUVtUHJveHlIb3N0VG1UeXBlICAmCQlvcGVy
YXRvcj0gKGNvbnN0IEVtUHJveHlIb3N0VG1UeXBlICAmKTsJRW1BbGlhc0hvc3RUbVR5cGUgIDxM
QVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNIb3N0VG1UeXBlICA8TEFTPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICAz
NiAgXTsJfSBmTG9jYWxEYXRhOwlwdWJsaWM6CSAgICAgRW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJ
CQl0bV9zZWNfIDsgCSBFbUFsaWFzSW50MzIgPExBUz4JIAkJCQkJCXRtX21pbl8gOyAJIEVtQWxp
YXNJbnQzMiA8TEFTPgkgCQkJCQkJdG1faG91cl8gOyAJIEVtQWxpYXNJbnQzMiA8TEFTPgkgCQkJ
CQkJdG1fbWRheV8gOyAJIEVtQWxpYXNJbnQzMiA8TEFTPgkgCQkJCQkJdG1fbW9uXyA7IAkgRW1B
bGlhc0ludDMyIDxMQVM+CSAJCQkJCQl0bV95ZWFyXyA7IAkgRW1BbGlhc0ludDMyIDxMQVM+CSAJ
CQkJCQl0bV93ZGF5XyA7IAkgRW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJCQl0bV95ZGF5XyA7IAkg
RW1BbGlhc0ludDMyIDxMQVM+CSAJCQkJCQl0bV9pc2RzdF8gOyAgCSAgICAgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl90bV9zZWNfICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl90bV9taW5fICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl90bV9ob3VyXyAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfdG1fbWRheV8gICh2b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl90bV9tb25fICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJIHN0YXRpYyBz
aXplX3QJb2Zmc2V0b2ZfdG1feWVhcl8gICh2b2lkKSB7IHJldHVybiAgMjAgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl90bV93ZGF5XyAgKHZvaWQpIHsgcmV0dXJuICAyNCA7IH0gCSBzdGF0
aWMgc2l6ZV90CW9mZnNldG9mX3RtX3lkYXlfICAodm9pZCkgeyByZXR1cm4gIDI4IDsgfSAJIHN0
YXRpYyBzaXplX3QJb2Zmc2V0b2ZfdG1faXNkc3RfICAodm9pZCkgeyByZXR1cm4gIDMyIDsgfSAg
CX07ICAgCSAgdGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNIb3N0VVRpbWVUeXBlICAJ
ewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNI
b3N0VVRpbWVUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc0hvc3RVVGltZVR5cGUgIAkoY29uc3Qg
RW1BbGlhc0hvc3RVVGltZVR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJ
eyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJu
ICAgICAxMiAgOyB9CUVtQWxpYXNIb3N0VVRpbWVUeXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3Qg
RW1BbGlhc0hvc3RVVGltZVR5cGUgIDxBPiYpOwlFbUFsaWFzSG9zdFVUaW1lVHlwZSAgPEE+CW9w
ZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNIb3N0VVRpbWVUeXBlICA8QT4Jb3BlcmF0b3Jb
XSAoaW50KSBjb25zdDsJcHJpdmF0ZToJRW1BbGlhc0hvc3RVVGltZVR5cGUgIAkodm9pZCk7CXB0
cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNIb3N0VGltZVR5cGUgPEE+CSAJCQkJ
Y3J0aW1lXyA7IAkgRW1BbGlhc0hvc3RUaW1lVHlwZSA8QT4JIAkJCQlhY3RpbWVfIDsgCSBFbUFs
aWFzSG9zdFRpbWVUeXBlIDxBPgkgCQkJCW1vZHRpbWVfIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfY3J0aW1lXyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfYWN0aW1lXyAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJ
b2Zmc2V0b2ZfbW9kdGltZV8gICh2b2lkKSB7IHJldHVybiAgOCA7IH0gIAl9OyAJY2xhc3MgRW1Q
cm94eUhvc3RVVGltZVR5cGUgIAl7CXB1YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Q
cm94eUhvc3RVVGltZVR5cGUgIAkodm9pZCk7CUVtUHJveHlIb3N0VVRpbWVUeXBlICAJKGNvbnN0
IEVtUHJveHlIb3N0VVRpbWVUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0
CXsgcmV0dXJuIChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6
ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTIgIDsgfQlFbVByb3h5SG9zdFVUaW1lVHlwZSAgJgkJ
b3BlcmF0b3I9IChjb25zdCBFbVByb3h5SG9zdFVUaW1lVHlwZSAgJik7CUVtQWxpYXNIb3N0VVRp
bWVUeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzSG9zdFVUaW1lVHlw
ZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJ
CV9ieXRlc1sgICAgMTIgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNIb3N0
VGltZVR5cGUgPExBUz4JIAkJCQljcnRpbWVfIDsgCSBFbUFsaWFzSG9zdFRpbWVUeXBlIDxMQVM+
CSAJCQkJYWN0aW1lXyA7IAkgRW1BbGlhc0hvc3RUaW1lVHlwZSA8TEFTPgkgCQkJCW1vZHRpbWVf
IDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfY3J0aW1lXyAgKHZvaWQpIHsgcmV0dXJu
ICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWN0aW1lXyAgKHZvaWQpIHsgcmV0dXJu
ICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbW9kdGltZV8gICh2b2lkKSB7IHJldHVy
biAgOCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzTmV0SG9z
dEluZm9UeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5
cGU7CUVtQWxpYXNOZXRIb3N0SW5mb1R5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzTmV0SG9zdElu
Zm9UeXBlICAJKGNvbnN0IEVtQWxpYXNOZXRIb3N0SW5mb1R5cGUgICYpOwlwdHJfdHlwZQkJCUdl
dFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXpl
CSh2b2lkKQkJCXsgcmV0dXJuICAgICAxNiAgOyB9CUVtQWxpYXNOZXRIb3N0SW5mb1R5cGUgIDxB
PiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzTmV0SG9zdEluZm9UeXBlICA8QT4mKTsJRW1BbGlh
c05ldEhvc3RJbmZvVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNOZXRI
b3N0SW5mb1R5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFz
TmV0SG9zdEluZm9UeXBlICAJKHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBF
bUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJbmFtZVAgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJ
CQluYW1lQWxpYXNlc1AgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlhZGRyVHlwZSA7IAkg
RW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWFkZHJMZW4gOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJ
CQkJCQlhZGRyTGlzdFAgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uYW1lUCAgKHZv
aWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmFtZUFsaWFzZXNQ
ICAodm9pZCkgeyByZXR1cm4gIDQgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hZGRyVHlw
ZSAgKHZvaWQpIHsgcmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWRkckxl
biAgKHZvaWQpIHsgcmV0dXJuICAxMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FkZHJM
aXN0UCAgKHZvaWQpIHsgcmV0dXJuICAxMiA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eU5ldEhvc3RJ
bmZvVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5TmV0SG9z
dEluZm9UeXBlICAJKHZvaWQpOwlFbVByb3h5TmV0SG9zdEluZm9UeXBlICAJKGNvbnN0IEVtUHJv
eHlOZXRIb3N0SW5mb1R5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2
b2lkKQkJCXsgcmV0dXJuICAgICAxNiAgOyB9CUVtUHJveHlOZXRIb3N0SW5mb1R5cGUgICYJCW9w
ZXJhdG9yPSAoY29uc3QgRW1Qcm94eU5ldEhvc3RJbmZvVHlwZSAgJik7CUVtQWxpYXNOZXRIb3N0
SW5mb1R5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNOZXRIb3N0SW5m
b1R5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNo
YXIJCQlfYnl0ZXNbICAgIDE2ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFz
ZW11cHRyIDxMQVM+CSAJCQkJCQluYW1lUCA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJ
bmFtZUFsaWFzZXNQIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlhZGRyVHlwZSA7IAkg
RW1BbGlhc1VJbnQxNiA8TEFTPgkgCQkJCQkJYWRkckxlbiA7IAkgRW1BbGlhc2VtdXB0ciA8TEFT
PgkgCQkJCQkJYWRkckxpc3RQIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmFtZVAg
ICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25hbWVBbGlh
c2VzUCAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWRk
clR5cGUgICh2b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Fk
ZHJMZW4gICh2b2lkKSB7IHJldHVybiAgMTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9h
ZGRyTGlzdFAgICh2b2lkKSB7IHJldHVybiAgMTIgOyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xh
c3MgQT4JY2xhc3MgRW1BbGlhc05ldEhvc3RJbmZvQnVmVHlwZSAgCXsJcHVibGljOgl0eXBlZGVm
IHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzTmV0SG9zdEluZm9CdWZUeXBl
ICAJKHB0cl90eXBlKTsJRW1BbGlhc05ldEhvc3RJbmZvQnVmVHlwZSAgCShjb25zdCBFbUFsaWFz
TmV0SG9zdEluZm9CdWZUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsg
cmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAg
ICAgNTY4ICA7IH0JRW1BbGlhc05ldEhvc3RJbmZvQnVmVHlwZSAgPEE+JglvcGVyYXRvcj0gKGNv
bnN0IEVtQWxpYXNOZXRIb3N0SW5mb0J1ZlR5cGUgIDxBPiYpOwlFbUFsaWFzTmV0SG9zdEluZm9C
dWZUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc05ldEhvc3RJbmZvQnVm
VHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CUVtQWxpYXNOZXRIb3N0
SW5mb0J1ZlR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVtQWxp
YXNOZXRIb3N0SW5mb1R5cGUgPEE+CSAJCQlob3N0SW5mbyA7IAkgRW1BbGlhc0NoYXIgPEE+CSAJ
CQkJCQluYW1lIDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJYWxpYXNMaXN0IDsgCSBFbUFs
aWFzQ2hhciA8QT4JIAkJCQkJCWFsaWFzZXMgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlh
ZGRyZXNzTGlzdCA7IAkgRW1BbGlhc05ldElQQWRkciA8QT4JIAkJCQkJYWRkcmVzcyA7ICAJICAg
ICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2hvc3RJbmZvICAodm9pZCkgeyByZXR1cm4gIDAgOyB9
IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uYW1lICAodm9pZCkgeyByZXR1cm4gIDE2IDsgfSAJ
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWxpYXNMaXN0ICAodm9pZCkgeyByZXR1cm4gIDI3MiA7
IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FsaWFzZXMgICh2b2lkKSB7IHJldHVybiAgMjgw
IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWRkcmVzc0xpc3QgICh2b2lkKSB7IHJldHVy
biAgNTM2IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWRkcmVzcyAgKHZvaWQpIHsgcmV0
dXJuICA1NTIgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlOZXRIb3N0SW5mb0J1ZlR5cGUgIAl7CXB1
YmxpYzoJdHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eU5ldEhvc3RJbmZvQnVmVHlwZSAg
CSh2b2lkKTsJRW1Qcm94eU5ldEhvc3RJbmZvQnVmVHlwZSAgCShjb25zdCBFbVByb3h5TmV0SG9z
dEluZm9CdWZUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJu
IChwdHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJ
CQl7IHJldHVybiAgICAgNTY4ICA7IH0JRW1Qcm94eU5ldEhvc3RJbmZvQnVmVHlwZSAgJgkJb3Bl
cmF0b3I9IChjb25zdCBFbVByb3h5TmV0SG9zdEluZm9CdWZUeXBlICAmKTsJRW1BbGlhc05ldEhv
c3RJbmZvQnVmVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc05ldEhv
c3RJbmZvQnVmVHlwZSAgPExBUz4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3Ry
dWN0IHsJY2hhcgkJCV9ieXRlc1sgICAgNTY4ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAg
ICBFbUFsaWFzTmV0SG9zdEluZm9UeXBlIDxMQVM+CSAJCQlob3N0SW5mbyA7IAkgRW1BbGlhc0No
YXIgPExBUz4JIAkJCQkJCW5hbWUgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWFsaWFz
TGlzdCA7IAkgRW1BbGlhc0NoYXIgPExBUz4JIAkJCQkJCWFsaWFzZXMgOyAJIEVtQWxpYXNlbXVw
dHIgPExBUz4JIAkJCQkJCWFkZHJlc3NMaXN0IDsgCSBFbUFsaWFzTmV0SVBBZGRyIDxMQVM+CSAJ
CQkJCWFkZHJlc3MgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9ob3N0SW5mbyAgKHZv
aWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmFtZSAgKHZvaWQp
IHsgcmV0dXJuICAxNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FsaWFzTGlzdCAgKHZv
aWQpIHsgcmV0dXJuICAyNzIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hbGlhc2VzICAo
dm9pZCkgeyByZXR1cm4gIDI4MCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FkZHJlc3NM
aXN0ICAodm9pZCkgeyByZXR1cm4gIDUzNiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2Fk
ZHJlc3MgICh2b2lkKSB7IHJldHVybiAgNTUyIDsgfSAgCX07ICAgCSAgdGVtcGxhdGUgPGNsYXNz
IEE+CWNsYXNzIEVtQWxpYXNOZXRJT1BhcmFtVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVu
YW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzTmV0SU9QYXJhbVR5cGUgIAkocHRyX3R5
cGUpOwlFbUFsaWFzTmV0SU9QYXJhbVR5cGUgIAkoY29uc3QgRW1BbGlhc05ldElPUGFyYW1UeXBl
ICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3Rh
dGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVybiAgICAgMTggIDsgfQlFbUFsaWFz
TmV0SU9QYXJhbVR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzTmV0SU9QYXJhbVR5
cGUgIDxBPiYpOwlFbUFsaWFzTmV0SU9QYXJhbVR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwlj
b25zdCBFbUFsaWFzTmV0SU9QYXJhbVR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlw
cml2YXRlOglFbUFsaWFzTmV0SU9QYXJhbVR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJ
cHVibGljOgkgICAgIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlhZGRyUCA7IAkgRW1BbGlhc1VJ
bnQxNiA8QT4JIAkJCQkJCWFkZHJMZW4gOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQlpb3Yg
OyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlpb3ZMZW4gOyAJIEVtQWxpYXNlbXVwdHIgPEE+
CSAJCQkJCQlhY2Nlc3NSaWdodHMgOyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlhY2Nlc3NS
aWdodHNMZW4gOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hZGRyUCAgKHZvaWQpIHsg
cmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfYWRkckxlbiAgKHZvaWQpIHsg
cmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfaW92ICAodm9pZCkgeyByZXR1
cm4gIDYgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pb3ZMZW4gICh2b2lkKSB7IHJldHVy
biAgMTAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hY2Nlc3NSaWdodHMgICh2b2lkKSB7
IHJldHVybiAgMTIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9hY2Nlc3NSaWdodHNMZW4g
ICh2b2lkKSB7IHJldHVybiAgMTYgOyB9ICAJfTsgCWNsYXNzIEVtUHJveHlOZXRJT1BhcmFtVHlw
ZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90eXBlOwlFbVByb3h5TmV0SU9QYXJhbVR5
cGUgIAkodm9pZCk7CUVtUHJveHlOZXRJT1BhcmFtVHlwZSAgCShjb25zdCBFbVByb3h5TmV0SU9Q
YXJhbVR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0
cl90eXBlKSAmZkxvY2FsRGF0YTsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsg
cmV0dXJuICAgICAxOCAgOyB9CUVtUHJveHlOZXRJT1BhcmFtVHlwZSAgJgkJb3BlcmF0b3I9IChj
b25zdCBFbVByb3h5TmV0SU9QYXJhbVR5cGUgICYpOwlFbUFsaWFzTmV0SU9QYXJhbVR5cGUgIDxM
QVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNOZXRJT1BhcmFtVHlwZSAgPExBUz4J
b3BlcmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sg
ICAgMTggIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNlbXVwdHIgPExBUz4J
IAkJCQkJCWFkZHJQIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlhZGRyTGVuIDsgCSBF
bUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQlpb3YgOyAJIEVtQWxpYXNVSW50MTYgPExBUz4JIAkJ
CQkJCWlvdkxlbiA7IAkgRW1BbGlhc2VtdXB0ciA8TEFTPgkgCQkJCQkJYWNjZXNzUmlnaHRzIDsg
CSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlhY2Nlc3NSaWdodHNMZW4gOyAgCSAgICAgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9hZGRyUCAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfYWRkckxlbiAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAJIHN0YXRp
YyBzaXplX3QJb2Zmc2V0b2ZfaW92ICAodm9pZCkgeyByZXR1cm4gIDYgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9pb3ZMZW4gICh2b2lkKSB7IHJldHVybiAgMTAgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9hY2Nlc3NSaWdodHMgICh2b2lkKSB7IHJldHVybiAgMTIgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9hY2Nlc3NSaWdodHNMZW4gICh2b2lkKSB7IHJldHVybiAgMTYg
OyB9ICAJfTsgICAJICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc05ldElPVmVjVHlw
ZSAgCXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFs
aWFzTmV0SU9WZWNUeXBlICAJKHB0cl90eXBlKTsJRW1BbGlhc05ldElPVmVjVHlwZSAgCShjb25z
dCBFbUFsaWFzTmV0SU9WZWNUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0
CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVy
biAgICAgNiAgOyB9CUVtQWxpYXNOZXRJT1ZlY1R5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBF
bUFsaWFzTmV0SU9WZWNUeXBlICA8QT4mKTsJRW1BbGlhc05ldElPVmVjVHlwZSAgPEE+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNOZXRJT1ZlY1R5cGUgIDxBPglvcGVyYXRvcltdIChp
bnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzTmV0SU9WZWNUeXBlICAJKHZvaWQpOwlwdHJfdHlw
ZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJYnVmUCA7IAkg
RW1BbGlhc1VJbnQxNiA8QT4JIAkJCQkJCWJ1ZkxlbiA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2J1ZlAgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2J1ZkxlbiAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAgCX07IAljbGFzcyBFbVByb3h5TmV0
SU9WZWNUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlOZXRJ
T1ZlY1R5cGUgIAkodm9pZCk7CUVtUHJveHlOZXRJT1ZlY1R5cGUgIAkoY29uc3QgRW1Qcm94eU5l
dElPVmVjVHlwZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAo
cHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJ
eyByZXR1cm4gICAgIDYgIDsgfQlFbVByb3h5TmV0SU9WZWNUeXBlICAmCQlvcGVyYXRvcj0gKGNv
bnN0IEVtUHJveHlOZXRJT1ZlY1R5cGUgICYpOwlFbUFsaWFzTmV0SU9WZWNUeXBlICA8TEFTPglv
cGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzTmV0SU9WZWNUeXBlICA8TEFTPglvcGVyYXRv
cltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1Y3QgewljaGFyCQkJX2J5dGVzWyAgICA2ICBd
Owl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQli
dWZQIDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlidWZMZW4gOyAgCSAgICAgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9idWZQICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9idWZMZW4gICh2b2lkKSB7IHJldHVybiAgNCA7IH0gIAl9OyAgIAkgIHRl
bXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzTmV0U2VydkluZm9UeXBlICAJewlwdWJsaWM6
CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNOZXRTZXJ2SW5m
b1R5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzTmV0U2VydkluZm9UeXBlICAJKGNvbnN0IEVtQWxp
YXNOZXRTZXJ2SW5mb1R5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyBy
ZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAg
ICAxNCAgOyB9CUVtQWxpYXNOZXRTZXJ2SW5mb1R5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBF
bUFsaWFzTmV0U2VydkluZm9UeXBlICA8QT4mKTsJRW1BbGlhc05ldFNlcnZJbmZvVHlwZSAgPEE+
CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNOZXRTZXJ2SW5mb1R5cGUgIDxBPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzTmV0U2VydkluZm9UeXBlICAJKHZv
aWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzZW11cHRyIDxBPgkgCQkJ
CQkJbmFtZVAgOyAJIEVtQWxpYXNlbXVwdHIgPEE+CSAJCQkJCQluYW1lQWxpYXNlc1AgOyAJIEVt
QWxpYXNVSW50MTYgPEE+CSAJCQkJCQlwb3J0IDsgCSBFbUFsaWFzZW11cHRyIDxBPgkgCQkJCQkJ
cHJvdG9QIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfbmFtZVAgICh2b2lkKSB7IHJl
dHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25hbWVBbGlhc2VzUCAgKHZvaWQp
IHsgcmV0dXJuICA0IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcG9ydCAgKHZvaWQpIHsg
cmV0dXJuICA4IDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfcHJvdG9QICAodm9pZCkgeyBy
ZXR1cm4gIDEwIDsgfSAgCX07IAljbGFzcyBFbVByb3h5TmV0U2VydkluZm9UeXBlICAJewlwdWJs
aWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJveHlOZXRTZXJ2SW5mb1R5cGUgIAkodm9p
ZCk7CUVtUHJveHlOZXRTZXJ2SW5mb1R5cGUgIAkoY29uc3QgRW1Qcm94eU5ldFNlcnZJbmZvVHlw
ZSAgJik7CXB0cl90eXBlCQkJR2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUp
ICZmTG9jYWxEYXRhOyB9CXN0YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4g
ICAgIDE0ICA7IH0JRW1Qcm94eU5ldFNlcnZJbmZvVHlwZSAgJgkJb3BlcmF0b3I9IChjb25zdCBF
bVByb3h5TmV0U2VydkluZm9UeXBlICAmKTsJRW1BbGlhc05ldFNlcnZJbmZvVHlwZSAgPExBUz4J
b3BlcmF0b3JbXSAoaW50KTsJY29uc3QgRW1BbGlhc05ldFNlcnZJbmZvVHlwZSAgPExBUz4Jb3Bl
cmF0b3JbXSAoaW50KSBjb25zdDsJcHJpdmF0ZToJc3RydWN0IHsJY2hhcgkJCV9ieXRlc1sgICAg
MTQgIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNlbXVwdHIgPExBUz4JIAkJ
CQkJCW5hbWVQIDsgCSBFbUFsaWFzZW11cHRyIDxMQVM+CSAJCQkJCQluYW1lQWxpYXNlc1AgOyAJ
IEVtQWxpYXNVSW50MTYgPExBUz4JIAkJCQkJCXBvcnQgOyAJIEVtQWxpYXNlbXVwdHIgPExBUz4J
IAkJCQkJCXByb3RvUCA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX25hbWVQICAodm9p
ZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9uYW1lQWxpYXNlc1Ag
ICh2b2lkKSB7IHJldHVybiAgNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BvcnQgICh2
b2lkKSB7IHJldHVybiAgOCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3Byb3RvUCAgKHZv
aWQpIHsgcmV0dXJuICAxMCA7IH0gIAl9OyAgIAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBF
bUFsaWFzTmV0U2VydkluZm9CdWZUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6
cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNOZXRTZXJ2SW5mb0J1ZlR5cGUgIAkocHRyX3R5cGUp
OwlFbUFsaWFzTmV0U2VydkluZm9CdWZUeXBlICAJKGNvbnN0IEVtQWxpYXNOZXRTZXJ2SW5mb0J1
ZlR5cGUgICYpOwlwdHJfdHlwZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsg
fQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA3MCAgOyB9CUVt
QWxpYXNOZXRTZXJ2SW5mb0J1ZlR5cGUgIDxBPiYJb3BlcmF0b3I9IChjb25zdCBFbUFsaWFzTmV0
U2VydkluZm9CdWZUeXBlICA8QT4mKTsJRW1BbGlhc05ldFNlcnZJbmZvQnVmVHlwZSAgPEE+CW9w
ZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNOZXRTZXJ2SW5mb0J1ZlR5cGUgIDxBPglvcGVy
YXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzTmV0U2VydkluZm9CdWZUeXBlICAJ
KHZvaWQpOwlwdHJfdHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzTmV0U2VydkluZm9U
eXBlIDxBPgkgCQkJc2VydkluZm8gOyAJIEVtQWxpYXNDaGFyIDxBPgkgCQkJCQkJbmFtZSA7IAkg
RW1BbGlhc2VtdXB0ciA8QT4JIAkJCQkJCWFsaWFzTGlzdCA7IAkgRW1BbGlhc0NoYXIgPEE+CSAJ
CQkJCQlhbGlhc2VzIDsgCSBFbUFsaWFzQ2hhciA8QT4JIAkJCQkJCXByb3RvTmFtZSA7IAkgRW1B
bGlhc1VJbnQ4IDxBPgkgCQkJCQkJcmVzZXJ2ZWQgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZz
ZXRvZl9zZXJ2SW5mbyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zm
c2V0b2ZfbmFtZSAgKHZvaWQpIHsgcmV0dXJuICAxNCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNl
dG9mX2FsaWFzTGlzdCAgKHZvaWQpIHsgcmV0dXJuICAzMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9m
ZnNldG9mX2FsaWFzZXMgICh2b2lkKSB7IHJldHVybiAgMzggOyB9IAkgc3RhdGljIHNpemVfdAlv
ZmZzZXRvZl9wcm90b05hbWUgICh2b2lkKSB7IHJldHVybiAgNTMgOyB9IAkgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9yZXNlcnZlZCAgKHZvaWQpIHsgcmV0dXJuICA2OSA7IH0gIAl9OyAJY2xhc3Mg
RW1Qcm94eU5ldFNlcnZJbmZvQnVmVHlwZSAgCXsJcHVibGljOgl0eXBlZGVmIHZvaWQqIHB0cl90
eXBlOwlFbVByb3h5TmV0U2VydkluZm9CdWZUeXBlICAJKHZvaWQpOwlFbVByb3h5TmV0U2Vydklu
Zm9CdWZUeXBlICAJKGNvbnN0IEVtUHJveHlOZXRTZXJ2SW5mb0J1ZlR5cGUgICYpOwlwdHJfdHlw
ZQkJCUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gKHB0cl90eXBlKSAmZkxvY2FsRGF0YTsg
fQlzdGF0aWMgc2l6ZV90CQlHZXRTaXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA3MCAgOyB9CUVt
UHJveHlOZXRTZXJ2SW5mb0J1ZlR5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eU5ldFNl
cnZJbmZvQnVmVHlwZSAgJik7CUVtQWxpYXNOZXRTZXJ2SW5mb0J1ZlR5cGUgIDxMQVM+CW9wZXJh
dG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNOZXRTZXJ2SW5mb0J1ZlR5cGUgIDxMQVM+CW9wZXJh
dG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAgIDcw
ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzTmV0U2VydkluZm9UeXBlIDxM
QVM+CSAJCQlzZXJ2SW5mbyA7IAkgRW1BbGlhc0NoYXIgPExBUz4JIAkJCQkJCW5hbWUgOyAJIEVt
QWxpYXNlbXVwdHIgPExBUz4JIAkJCQkJCWFsaWFzTGlzdCA7IAkgRW1BbGlhc0NoYXIgPExBUz4J
IAkJCQkJCWFsaWFzZXMgOyAJIEVtQWxpYXNDaGFyIDxMQVM+CSAJCQkJCQlwcm90b05hbWUgOyAJ
IEVtQWxpYXNVSW50OCA8TEFTPgkgCQkJCQkJcmVzZXJ2ZWQgOyAgCSAgICAgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9zZXJ2SW5mbyAgKHZvaWQpIHsgcmV0dXJuICAwIDsgfSAJIHN0YXRpYyBzaXpl
X3QJb2Zmc2V0b2ZfbmFtZSAgKHZvaWQpIHsgcmV0dXJuICAxNCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2FsaWFzTGlzdCAgKHZvaWQpIHsgcmV0dXJuICAzMCA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2FsaWFzZXMgICh2b2lkKSB7IHJldHVybiAgMzggOyB9IAkgc3RhdGljIHNp
emVfdAlvZmZzZXRvZl9wcm90b05hbWUgICh2b2lkKSB7IHJldHVybiAgNTMgOyB9IAkgc3RhdGlj
IHNpemVfdAlvZmZzZXRvZl9yZXNlcnZlZCAgKHZvaWQpIHsgcmV0dXJuICA2OSA7IH0gIAl9OyAg
IAkgIHRlbXBsYXRlIDxjbGFzcyBBPgljbGFzcyBFbUFsaWFzTmV0U29ja2V0QWRkcklOVHlwZSAg
CXsJcHVibGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFz
TmV0U29ja2V0QWRkcklOVHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNOZXRTb2NrZXRBZGRySU5U
eXBlICAJKGNvbnN0IEVtQWxpYXNOZXRTb2NrZXRBZGRySU5UeXBlICAmKTsJcHRyX3R5cGUJCQlH
ZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6
ZQkodm9pZCkJCQl7IHJldHVybiAgICAgOCAgOyB9CUVtQWxpYXNOZXRTb2NrZXRBZGRySU5UeXBl
ICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc05ldFNvY2tldEFkZHJJTlR5cGUgIDxBPiYp
OwlFbUFsaWFzTmV0U29ja2V0QWRkcklOVHlwZSAgPEE+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0
IEVtQWxpYXNOZXRTb2NrZXRBZGRySU5UeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBjb25zdDsJ
cHJpdmF0ZToJRW1BbGlhc05ldFNvY2tldEFkZHJJTlR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJ
ZlB0cjsJcHVibGljOgkgICAgIEVtQWxpYXNJbnQxNiA8QT4JIAkJCQkJCWZhbWlseSA7IAkgRW1B
bGlhc1VJbnQxNiA8QT4JIAkJCQkJCXBvcnQgOyAJIEVtQWxpYXNOZXRJUEFkZHIgPEE+CSAJCQkJ
CWFkZHIgOyAgCSAgICAgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9mYW1pbHkgICh2b2lkKSB7IHJl
dHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX3BvcnQgICh2b2lkKSB7IHJldHVy
biAgMiA7IH0gCSBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2FkZHIgICh2b2lkKSB7IHJldHVybiAg
NCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eU5ldFNvY2tldEFkZHJJTlR5cGUgIAl7CXB1YmxpYzoJ
dHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eU5ldFNvY2tldEFkZHJJTlR5cGUgIAkodm9p
ZCk7CUVtUHJveHlOZXRTb2NrZXRBZGRySU5UeXBlICAJKGNvbnN0IEVtUHJveHlOZXRTb2NrZXRB
ZGRySU5UeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChw
dHJfdHlwZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7
IHJldHVybiAgICAgOCAgOyB9CUVtUHJveHlOZXRTb2NrZXRBZGRySU5UeXBlICAmCQlvcGVyYXRv
cj0gKGNvbnN0IEVtUHJveHlOZXRTb2NrZXRBZGRySU5UeXBlICAmKTsJRW1BbGlhc05ldFNvY2tl
dEFkZHJJTlR5cGUgIDxMQVM+CW9wZXJhdG9yW10gKGludCk7CWNvbnN0IEVtQWxpYXNOZXRTb2Nr
ZXRBZGRySU5UeXBlICA8TEFTPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglzdHJ1
Y3QgewljaGFyCQkJX2J5dGVzWyAgICA4ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBF
bUFsaWFzSW50MTYgPExBUz4JIAkJCQkJCWZhbWlseSA7IAkgRW1BbGlhc1VJbnQxNiA8TEFTPgkg
CQkJCQkJcG9ydCA7IAkgRW1BbGlhc05ldElQQWRkciA8TEFTPgkgCQkJCQlhZGRyIDsgIAkgICAg
IHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmFtaWx5ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkg
c3RhdGljIHNpemVfdAlvZmZzZXRvZl9wb3J0ICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3Rh
dGljIHNpemVfdAlvZmZzZXRvZl9hZGRyICAodm9pZCkgeyByZXR1cm4gIDQgOyB9ICAJfTsgICAJ
ICB0ZW1wbGF0ZSA8Y2xhc3MgQT4JY2xhc3MgRW1BbGlhc05ldFNvY2tldEFkZHJSYXdUeXBlICAJ
ewlwdWJsaWM6CXR5cGVkZWYgdHlwZW5hbWUgQTo6cHRyX3R5cGUgcHRyX3R5cGU7CUVtQWxpYXNO
ZXRTb2NrZXRBZGRyUmF3VHlwZSAgCShwdHJfdHlwZSk7CUVtQWxpYXNOZXRTb2NrZXRBZGRyUmF3
VHlwZSAgCShjb25zdCBFbUFsaWFzTmV0U29ja2V0QWRkclJhd1R5cGUgICYpOwlwdHJfdHlwZQkJ
CUdldFB0cgkodm9pZCkgY29uc3QJeyByZXR1cm4gZlB0cjsgfQlzdGF0aWMgc2l6ZV90CQlHZXRT
aXplCSh2b2lkKQkJCXsgcmV0dXJuICAgICA4ICA7IH0JRW1BbGlhc05ldFNvY2tldEFkZHJSYXdU
eXBlICA8QT4mCW9wZXJhdG9yPSAoY29uc3QgRW1BbGlhc05ldFNvY2tldEFkZHJSYXdUeXBlICA8
QT4mKTsJRW1BbGlhc05ldFNvY2tldEFkZHJSYXdUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KTsJ
Y29uc3QgRW1BbGlhc05ldFNvY2tldEFkZHJSYXdUeXBlICA8QT4Jb3BlcmF0b3JbXSAoaW50KSBj
b25zdDsJcHJpdmF0ZToJRW1BbGlhc05ldFNvY2tldEFkZHJSYXdUeXBlICAJKHZvaWQpOwlwdHJf
dHlwZQkJCWZQdHI7CXB1YmxpYzoJICAgICBFbUFsaWFzSW50MTYgPEE+CSAJCQkJCQlmYW1pbHkg
OyAJIEVtQWxpYXNVSW50MTYgPEE+CSAJCQkJCQlpZkluc3RhbmNlIDsgCSBFbUFsaWFzVUludDMy
IDxBPgkgCQkJCQkJaWZDcmVhdG9yIDsgIAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmFt
aWx5ICAodm9pZCkgeyByZXR1cm4gIDAgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9pZklu
c3RhbmNlICAodm9pZCkgeyByZXR1cm4gIDIgOyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9p
ZkNyZWF0b3IgICh2b2lkKSB7IHJldHVybiAgNCA7IH0gIAl9OyAJY2xhc3MgRW1Qcm94eU5ldFNv
Y2tldEFkZHJSYXdUeXBlICAJewlwdWJsaWM6CXR5cGVkZWYgdm9pZCogcHRyX3R5cGU7CUVtUHJv
eHlOZXRTb2NrZXRBZGRyUmF3VHlwZSAgCSh2b2lkKTsJRW1Qcm94eU5ldFNvY2tldEFkZHJSYXdU
eXBlICAJKGNvbnN0IEVtUHJveHlOZXRTb2NrZXRBZGRyUmF3VHlwZSAgJik7CXB0cl90eXBlCQkJ
R2V0UHRyCSh2b2lkKSBjb25zdAl7IHJldHVybiAocHRyX3R5cGUpICZmTG9jYWxEYXRhOyB9CXN0
YXRpYyBzaXplX3QJCUdldFNpemUJKHZvaWQpCQkJeyByZXR1cm4gICAgIDggIDsgfQlFbVByb3h5
TmV0U29ja2V0QWRkclJhd1R5cGUgICYJCW9wZXJhdG9yPSAoY29uc3QgRW1Qcm94eU5ldFNvY2tl
dEFkZHJSYXdUeXBlICAmKTsJRW1BbGlhc05ldFNvY2tldEFkZHJSYXdUeXBlICA8TEFTPglvcGVy
YXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzTmV0U29ja2V0QWRkclJhd1R5cGUgIDxMQVM+CW9w
ZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlfYnl0ZXNbICAg
IDggIF07CX0gZkxvY2FsRGF0YTsJcHVibGljOgkgICAgIEVtQWxpYXNJbnQxNiA8TEFTPgkgCQkJ
CQkJZmFtaWx5IDsgCSBFbUFsaWFzVUludDE2IDxMQVM+CSAJCQkJCQlpZkluc3RhbmNlIDsgCSBF
bUFsaWFzVUludDMyIDxMQVM+CSAJCQkJCQlpZkNyZWF0b3IgOyAgCSAgICAgc3RhdGljIHNpemVf
dAlvZmZzZXRvZl9mYW1pbHkgICh2b2lkKSB7IHJldHVybiAgMCA7IH0gCSBzdGF0aWMgc2l6ZV90
CW9mZnNldG9mX2lmSW5zdGFuY2UgICh2b2lkKSB7IHJldHVybiAgMiA7IH0gCSBzdGF0aWMgc2l6
ZV90CW9mZnNldG9mX2lmQ3JlYXRvciAgKHZvaWQpIHsgcmV0dXJuICA0IDsgfSAgCX07ICAgCSAg
dGVtcGxhdGUgPGNsYXNzIEE+CWNsYXNzIEVtQWxpYXNOZXRTb2NrZXRBZGRyVHlwZSAgCXsJcHVi
bGljOgl0eXBlZGVmIHR5cGVuYW1lIEE6OnB0cl90eXBlIHB0cl90eXBlOwlFbUFsaWFzTmV0U29j
a2V0QWRkclR5cGUgIAkocHRyX3R5cGUpOwlFbUFsaWFzTmV0U29ja2V0QWRkclR5cGUgIAkoY29u
c3QgRW1BbGlhc05ldFNvY2tldEFkZHJUeXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQp
IGNvbnN0CXsgcmV0dXJuIGZQdHI7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7
IHJldHVybiAgICAgMTYgIDsgfQlFbUFsaWFzTmV0U29ja2V0QWRkclR5cGUgIDxBPiYJb3BlcmF0
b3I9IChjb25zdCBFbUFsaWFzTmV0U29ja2V0QWRkclR5cGUgIDxBPiYpOwlFbUFsaWFzTmV0U29j
a2V0QWRkclR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzTmV0U29ja2V0
QWRkclR5cGUgIDxBPglvcGVyYXRvcltdIChpbnQpIGNvbnN0Owlwcml2YXRlOglFbUFsaWFzTmV0
U29ja2V0QWRkclR5cGUgIAkodm9pZCk7CXB0cl90eXBlCQkJZlB0cjsJcHVibGljOgkgICAgIEVt
QWxpYXNJbnQxNiA8QT4JIAkJCQkJCWZhbWlseSA7IAkgRW1BbGlhc1VJbnQ4IDxBPgkgCQkJCQkJ
ZGF0YSA7ICAJICAgICBzdGF0aWMgc2l6ZV90CW9mZnNldG9mX2ZhbWlseSAgKHZvaWQpIHsgcmV0
dXJuICAwIDsgfSAJIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZGF0YSAgKHZvaWQpIHsgcmV0dXJu
ICAyIDsgfSAgCX07IAljbGFzcyBFbVByb3h5TmV0U29ja2V0QWRkclR5cGUgIAl7CXB1YmxpYzoJ
dHlwZWRlZiB2b2lkKiBwdHJfdHlwZTsJRW1Qcm94eU5ldFNvY2tldEFkZHJUeXBlICAJKHZvaWQp
OwlFbVByb3h5TmV0U29ja2V0QWRkclR5cGUgIAkoY29uc3QgRW1Qcm94eU5ldFNvY2tldEFkZHJU
eXBlICAmKTsJcHRyX3R5cGUJCQlHZXRQdHIJKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwdHJfdHlw
ZSkgJmZMb2NhbERhdGE7IH0Jc3RhdGljIHNpemVfdAkJR2V0U2l6ZQkodm9pZCkJCQl7IHJldHVy
biAgICAgMTYgIDsgfQlFbVByb3h5TmV0U29ja2V0QWRkclR5cGUgICYJCW9wZXJhdG9yPSAoY29u
c3QgRW1Qcm94eU5ldFNvY2tldEFkZHJUeXBlICAmKTsJRW1BbGlhc05ldFNvY2tldEFkZHJUeXBl
ICA8TEFTPglvcGVyYXRvcltdIChpbnQpOwljb25zdCBFbUFsaWFzTmV0U29ja2V0QWRkclR5cGUg
IDxMQVM+CW9wZXJhdG9yW10gKGludCkgY29uc3Q7CXByaXZhdGU6CXN0cnVjdCB7CWNoYXIJCQlf
Ynl0ZXNbICAgIDE2ICBdOwl9IGZMb2NhbERhdGE7CXB1YmxpYzoJICAgICBFbUFsaWFzSW50MTYg
PExBUz4JIAkJCQkJCWZhbWlseSA7IAkgRW1BbGlhc1VJbnQ4IDxMQVM+CSAJCQkJCQlkYXRhIDsg
IAkgICAgIHN0YXRpYyBzaXplX3QJb2Zmc2V0b2ZfZmFtaWx5ICAodm9pZCkgeyByZXR1cm4gIDAg
OyB9IAkgc3RhdGljIHNpemVfdAlvZmZzZXRvZl9kYXRhICAodm9pZCkgeyByZXR1cm4gIDIgOyB9
ICAJfTsgICAgCgoKIyAxNyAiLi4vU3JjU2hhcmVkL0VtTG93TWVtLmgiIDIKCgpjbGFzcyBTZXNz
aW9uRmlsZTsKCmNsYXNzIEVtTG93TWVtCnsKCXB1YmxpYzoKCQlzdGF0aWMgdm9pZCAJCQlJbml0
aWFsaXplCQkJKHZvaWQpOwoJCXN0YXRpYyB2b2lkIAkJCVJlc2V0CQkJCSh2b2lkKTsKCQlzdGF0
aWMgdm9pZCAJCQlTYXZlCQkJCShTZXNzaW9uRmlsZSYpOwoJCXN0YXRpYyB2b2lkIAkJCUxvYWQJ
CQkJKFNlc3Npb25GaWxlJik7CgkJc3RhdGljIHZvaWQgCQkJRGlzcG9zZSAJCQkodm9pZCk7CgoJ
CXN0YXRpYyB1aW50OAkJCUdldEV2dE1ncklkbGUJCSh2b2lkKTsKCQlzdGF0aWMgQm9vbCAJCQlU
cmFwRXhpc3RzCQkJKHVpbnQxNiBpQVRyYXApOwoJCXN0YXRpYyBlbXVwdHIJCQlHZXRUcmFwQWRk
cmVzcwkJKHVpbnQxNiBpQVRyYXApOwoKCQkKCQkKCQkKCgkJc3RhdGljIEVtQWxpYXNMb3dNZW1I
ZHJUeXBlPFBBUz4JZmdMb3dNZW07CQp9OwoKCiMgMjEgIi4vLi4vU3JjU2hhcmVkL01ldGFNZW1v
cnkuY3BwIiAyCgoKIyAxICIuLi9TcmNTaGFyZWQvRW1QYWxtRnVuY3Rpb24uaCIgMQogCiAKCgoK
CgoKCgoKCgoKCgoKCnN0cnVjdCBTeXN0ZW1DYWxsQ29udGV4dDsKCnZvaWQJRW1QYWxtRnVuY3Rp
b25Jbml0CQkJCQkodm9pZCk7CgoKIyA2NCAiLi4vU3JjU2hhcmVkL0VtUGFsbUZ1bmN0aW9uLmgi
CgogCiAKIAogCiAKIAogCiAKIAoKCgoKCgoKCgoKCgoKCgogQm9vbCBJbmNqX2twdGtkZWxldGUg
IChlbXVwdHIgPSBnQ1BVLT5HZXRQQyAoKSk7IAkgQm9vbCBJbmRuc19kZWNvZGVfbmFtZSAgKGVt
dXB0ciA9IGdDUFUtPkdldFBDICgpKTsgCSBCb29sIEluQmFja3NwYWNlQ2hhciAgKGVtdXB0ciA9
IGdDUFUtPkdldFBDICgpKTsgCSBCb29sIEluQ3JjMTZDYWxjQmxvY2sgIChlbXVwdHIgPSBnQ1BV
LT5HZXRQQyAoKSk7IAkgQm9vbCBJbkRtV3JpdGUgIChlbXVwdHIgPSBnQ1BVLT5HZXRQQyAoKSk7
IAkgQm9vbCBJbkVDVmFsaWRhdGVGaWVsZCAgKGVtdXB0ciA9IGdDUFUtPkdldFBDICgpKTsgCSBC
b29sIEluRWdnT2ZJbmZpbml0ZVdpc2RvbSAgKGVtdXB0ciA9IGdDUFUtPkdldFBDICgpKTsgCSBC
b29sIEluRXhwSW5pdCAgKGVtdXB0ciA9IGdDUFUtPkdldFBDICgpKTsgCSBCb29sIEluRmluZFNo
b3dSZXN1bHRzICAoZW11cHRyID0gZ0NQVS0+R2V0UEMgKCkpOyAJIEJvb2wgSW5GaW5kU2F2ZUZp
bmRTdHIgIChlbXVwdHIgPSBnQ1BVLT5HZXRQQyAoKSk7IAkgQm9vbCBJbkZsZERlbGV0ZSAgKGVt
dXB0ciA9IGdDUFUtPkdldFBDICgpKTsgCSBCb29sIEluRm50RGVmaW5lRm9udCAgKGVtdXB0ciA9
IGdDUFUtPkdldFBDICgpKTsgCSBCb29sIEluR3JmUHJvY2Vzc1N0cm9rZSAgKGVtdXB0ciA9IGdD
UFUtPkdldFBDICgpKTsgCSBCb29sIEluSHNQcnZJbml0ICAoZW11cHRyID0gZ0NQVS0+R2V0UEMg
KCkpOyAJIEJvb2wgSW5Ic1BydkluaXRDYXJkICAoZW11cHRyID0gZ0NQVS0+R2V0UEMgKCkpOyAJ
IEJvb2wgSW5NZW1Nb3ZlICAoZW11cHRyID0gZ0NQVS0+R2V0UEMgKCkpOyAJIEJvb2wgSW5NZW51
SGFuZGxlRXZlbnQgIChlbXVwdHIgPSBnQ1BVLT5HZXRQQyAoKSk7IAkgQm9vbCBJbk5ldExpYkJp
dE1vdmUgIChlbXVwdHIgPSBnQ1BVLT5HZXRQQyAoKSk7IAkgQm9vbCBJbk5ldFBydlNldHRpbmdT
ZXQgIChlbXVwdHIgPSBnQ1BVLT5HZXRQQyAoKSk7IAkgQm9vbCBJbk5ldFBydlRhc2tNYWluICAo
ZW11cHRyID0gZ0NQVS0+R2V0UEMgKCkpOyAJIEJvb2wgSW5QcnZDb21wcmVzc2VkSW5uZXJCaXRC
bHQgIChlbXVwdHIgPSBnQ1BVLT5HZXRQQyAoKSk7IAkgQm9vbCBJblBydkNvbnZlcnREZXB0aDFU
bzJCVyAgKGVtdXB0ciA9IGdDUFUtPkdldFBDICgpKTsgCSBCb29sIEluUHJ2RHJhd1NsaWRlckNv
bnRyb2wgIChlbXVwdHIgPSBnQ1BVLT5HZXRQQyAoKSk7IAkgQm9vbCBJblBydkZpbmRNZW1vcnlM
ZWFrcyAgKGVtdXB0ciA9IGdDUFUtPkdldFBDICgpKTsgCSBCb29sIEluUHJ2R2V0RXhwR2xvYmFs
cyAgKGVtdXB0ciA9IGdDUFUtPkdldFBDICgpKTsgCSBCb29sIEluUHJ2R2V0VkZTR2xvYmFscyAg
KGVtdXB0ciA9IGdDUFUtPkdldFBDICgpKTsgCSBCb29sIEluUHJ2R2V0SW50bE1nckdsb2JhbHNQ
ICAoZW11cHRyID0gZ0NQVS0+R2V0UEMgKCkpOyAJIEJvb2wgSW5QcnZTZXRJbnRsTWdyR2xvYmFs
c1AgIChlbXVwdHIgPSBnQ1BVLT5HZXRQQyAoKSk7IAkgQm9vbCBJblBydk1pc0FsaWduZWRGb3J3
YXJkSW5uZXJCaXRCbHQgIChlbXVwdHIgPSBnQ1BVLT5HZXRQQyAoKSk7IAkgQm9vbCBJblBydk1p
c0FsaWduZWRCYWNrd2FyZElubmVyQml0Qmx0ICAoZW11cHRyID0gZ0NQVS0+R2V0UEMgKCkpOyAJ
IEJvb2wgSW5QcnZTeXN0ZW1UaW1lclByb2MgIChlbXVwdHIgPSBnQ1BVLT5HZXRQQyAoKSk7IAkg
Qm9vbCBJblBydlJlbGVhc2VFeHBHbG9iYWxzICAoZW11cHRyID0gZ0NQVS0+R2V0UEMgKCkpOyAJ
IEJvb2wgSW5QcnZSZWxlYXNlVkZTR2xvYmFscyAgKGVtdXB0ciA9IGdDUFUtPkdldFBDICgpKTsg
CSBCb29sIEluU2VjUHJ2UmFuZG9tU2VlZCAgKGVtdXB0ciA9IGdDUFUtPkdldFBDICgpKTsgCSBC
b29sIEluU3lzQXBwRXhpdCAgKGVtdXB0ciA9IGdDUFUtPkdldFBDICgpKTsgCSBCb29sIEluU3lz
TGF1bmNoICAoZW11cHRyID0gZ0NQVS0+R2V0UEMgKCkpOyAJIEJvb2wgSW5Uc21HbHVlR2V0RmVw
R2xvYmFscyAgKGVtdXB0ciA9IGdDUFUtPkdldFBDICgpKTsgCSBCb29sIEluVkZTSW5pdCAgKGVt
dXB0ciA9IGdDUFUtPkdldFBDICgpKTsgCSBCb29sIEluX0NlcnRpY29tTWVtQ3B5ICAoZW11cHRy
ID0gZ0NQVS0+R2V0UEMgKCkpOyAgCgoKCgogCiAKIAoKaW5saW5lIHVpbnQxNiBTeXNUcmFwSW5k
ZXggKHVpbnQxNiB0cmFwV29yZCkKewoJcmV0dXJuICh1aW50MTYpICh0cmFwV29yZCAmIH4weEYw
MDApOwp9CgppbmxpbmUgdWludDE2IExpYlRyYXBJbmRleCAodWludDE2IHRyYXBXb3JkKQp7Cgly
ZXR1cm4gKHVpbnQxNikgKFN5c1RyYXBJbmRleCAodHJhcFdvcmQpIC0gU3lzVHJhcEluZGV4ICgw
eEE4MDAgKSk7Cn0KCmlubGluZSBCb29sIElzU3lzdGVtVHJhcCAodWludDE2IHRyYXBXb3JkKQp7
CglyZXR1cm4gU3lzVHJhcEluZGV4ICh0cmFwV29yZCkgPCBTeXNUcmFwSW5kZXggKDB4QTgwMCAp
Owp9CgppbmxpbmUgQm9vbCBJc0xpYnJhcnlUcmFwICh1aW50MTYgdHJhcFdvcmQpCnsKCXJldHVy
biAhSXNTeXN0ZW1UcmFwICh0cmFwV29yZCk7Cn0KCgoKCgoKCgoKQm9vbAlQcm9zY3JpYmVkRnVu
Y3Rpb24JCShjb25zdCBTeXN0ZW1DYWxsQ29udGV4dCYgY29udGV4dCk7CmludAkJR2V0UHJvc2Ny
aWJlZFJlYXNvbgkJKGNvbnN0IFN5c3RlbUNhbGxDb250ZXh0JiBjb250ZXh0KTsKCmVtdXB0cglH
ZXRGdW5jdGlvbkFkZHJlc3MJCSh1aW50MTYgdHJhcFdvcmQsIHVpbnQzMiBleHRyYSA9IDB4RkZG
RiAsIEJvb2wgZGlnRGVlcCA9IGZhbHNlKTsKZW11cHRyCUdldExpYkZ1bmN0aW9uQWRkcmVzcwko
dWludDE2IHRyYXBXb3JkLCBVSW50MTYgcmVmTnVtLCBCb29sIGRpZ0RlZXApOwplbXVwdHIJR2V0
U3lzRnVuY3Rpb25BZGRyZXNzCSh1aW50MTYgdHJhcFdvcmQsIHVpbnQzMiBleHRyYSwgQm9vbCBk
aWdEZWVwKTsKZW11cHRyCUdldFN0ZERpc3BhdGNoQWRkcmVzcwkoZW11cHRyIGVudHJ5UHQsIHVp
bnQzMiByZWdEMik7CmVtdXB0cglHZXRGbHBFbURpc3BhdGNoQWRkcmVzcwkoZW11cHRyIGVudHJ5
UHQsIHVpbnQzMiByZWdEMik7CmVtdXB0cglHZXRJbnRsRGlzcGF0Y2hBZGRyZXNzCShlbXVwdHIg
ZW50cnlQdCwgdWludDMyIHJlZ0QyKTsKCgpjbGFzcyBFbVVuaW1wbGVtZW50ZWRGdW5jdGlvbkV4
Y2VwdGlvbgp7CglwdWJsaWM6CgkJRW1VbmltcGxlbWVudGVkRnVuY3Rpb25FeGNlcHRpb24gKGxv
bmcgbiA9IDApIDoKCQkJZkxpYkluZGV4IChuKQoJCXsKCQl9CgoJCWxvbmcJZkxpYkluZGV4Owp9
OwoKY2xhc3MgRW1JbnZhbGlkUmVmTnVtRXhjZXB0aW9uCnsKCXB1YmxpYzoKCQlFbUludmFsaWRS
ZWZOdW1FeGNlcHRpb24gKGxvbmcgbiA9IDAsIGxvbmcgbSA9IDB4RkZGRiApIDoKCQkJZkxpYklu
ZGV4IChuKSwKCQkJZk1heFJlZk51bSAobSkKCQl7CgkJfQoKCQlsb25nCWZMaWJJbmRleDsKCQls
b25nCWZNYXhSZWZOdW07Cn07CgpjaGFyKglHZXRUcmFwTmFtZQkJCQkoY29uc3QgU3lzdGVtQ2Fs
bENvbnRleHQmLCBCb29sIGRpZ0RlZXAgPSBmYWxzZSk7CmNoYXIqCUdldFRyYXBOYW1lCQkJCSh1
aW50MTYgdHJhcFdvcmQsIHVpbnQzMiBleHRyYSA9IDB4RkZGRiAsIEJvb2wgZGlnRGVlcCA9IGZh
bHNlKTsKdm9pZAlGaW5kVHJhcE5hbWUJCQkodWludDE2IHRyYXBXb3JkLCBjaGFyKiBuYW1lUCwg
dWludDMyIGV4dHJhID0gMHhGRkZGICwgQm9vbCBkaWdEZWVwID0gZmFsc2UpOwoKIAogCiAKIAoK
dm9pZAlGaW5kRnVuY3Rpb25OYW1lCQkoZW11cHRyIGFkZHIsCgkJCQkJCQkJIGNoYXIqIG5hbWVQ
LAoJCQkJCQkJCSBlbXVwdHIqIHN0YXJ0QWRkclAgPSBfX251bGwgLAoJCQkJCQkJCSBlbXVwdHIq
IGVuZEFkZHJQID0gX19udWxsICwKCQkJCQkJCQkgbG9uZyBuYW1lQ2FwYWNpdHkgPSAzMik7CmVt
dXB0cglGaW5kRnVuY3Rpb25TdGFydAkJKGVtdXB0ciBhZGRyKTsKZW11cHRyCUZpbmRGdW5jdGlv
bkVuZAkJCShlbXVwdHIgYWRkcik7CkJvb2wJRW5kT2ZGdW5jdGlvblNlcXVlbmNlCShlbXVwdHIg
YWRkcik7CgogCiAKIAogCgp2b2lkCUdldE1hY3NidWdJbmZvCQkJKGVtdXB0ciBlb2YsIGNoYXIq
IG5hbWUsIGxvbmcgbmFtZUNhcGFjaXR5LCBlbXVwdHIqIHNvZik7CnZvaWQJTWFjc2J1Z05hbWVM
ZW5ndGgJCShlbXVwdHIgYWRkciwgdWludDgqIGxlbmd0aCwgQm9vbCogaXNGaXhlZCwgZW11cHRy
KiBuYW1lUHRyKTsKQm9vbAlWYWxpZE1hY3NidWdDaGFyCQkodWludDggY2gpOwoKCiMgMjMgIi4v
Li4vU3JjU2hhcmVkL01ldGFNZW1vcnkuY3BwIiAyCgojIDEgIi4uL1NyY1NoYXJlZC9FbVBhbG1P
Uy5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgojcHJhZ21hIG1hcmsgU3RhY2tSYW5nZQoKc3Ry
dWN0IFN0YWNrUmFuZ2UKewoJU3RhY2tSYW5nZSAoKSA6CgkJZlRvcCAoMCksCgkJZkxvd1dhdGVy
TWFyayAoMCksCgkJZkJvdHRvbSAoMCkKCQl7fQoJU3RhY2tSYW5nZSAoY29uc3QgU3RhY2tSYW5n
ZSYgb3RoZXIpIDoKCQlmVG9wIChvdGhlci5mVG9wKSwKCQlmTG93V2F0ZXJNYXJrIChvdGhlci5m
TG93V2F0ZXJNYXJrKSwKCQlmQm90dG9tIChvdGhlci5mQm90dG9tKQoJCXt9CglTdGFja1Jhbmdl
IChlbXVwdHIgYm90dG9tLCBlbXVwdHIgdG9wKSA6CgkJZlRvcCAodG9wKSwKCQlmTG93V2F0ZXJN
YXJrICh0b3ApLAoJCWZCb3R0b20gKGJvdHRvbSkKCQl7fQoKCWJvb2wgb3BlcmF0b3I9PShjb25z
dCBTdGFja1JhbmdlJiBvdGhlcikgY29uc3QKCQl7IHJldHVybiBmQm90dG9tID09IG90aGVyLmZC
b3R0b207IH0KCglib29sIG9wZXJhdG9yIT0oY29uc3QgU3RhY2tSYW5nZSYgb3RoZXIpIGNvbnN0
CgkJeyByZXR1cm4gZkJvdHRvbSAhPSBvdGhlci5mQm90dG9tOyB9CgoJYm9vbCBvcGVyYXRvcjwo
Y29uc3QgU3RhY2tSYW5nZSYgb3RoZXIpIGNvbnN0CgkJeyByZXR1cm4gZkJvdHRvbSA8IG90aGVy
LmZCb3R0b207IH0KCglib29sIG9wZXJhdG9yPihjb25zdCBTdGFja1JhbmdlJiBvdGhlcikgY29u
c3QKCQl7IHJldHVybiBmQm90dG9tID4gb3RoZXIuZkJvdHRvbTsgfQoKCSAKCgllbXVwdHIJZlRv
cDsKCWVtdXB0cglmTG93V2F0ZXJNYXJrOwoJZW11cHRyCWZCb3R0b207Cn07Cgp0eXBlZGVmIHZl
Y3RvcjxTdGFja1JhbmdlPiBTdGFja0xpc3Q7CgpjbGFzcyBFbVN0cmVhbTsKRW1TdHJlYW0mIG9w
ZXJhdG9yIDw8IChFbVN0cmVhbSYsIGNvbnN0IFN0YWNrUmFuZ2UmKTsKRW1TdHJlYW0mIG9wZXJh
dG9yID4+IChFbVN0cmVhbSYsIFN0YWNrUmFuZ2UmKTsKCmNsYXNzIEVtUGFsbUNodW5rOwpjbGFz
cyBTZXNzaW9uRmlsZTsKCmNsYXNzIEVtUGFsbU9TCnsKCXB1YmxpYzoKCQlzdGF0aWMgdm9pZAkJ
CQlJbml0aWFsaXplCQkJCQkodm9pZCk7CgkJc3RhdGljIHZvaWQJCQkJUmVzZXQJCQkJCQkodm9p
ZCk7CgkJc3RhdGljIHZvaWQJCQkJU2F2ZQkJCQkJCShTZXNzaW9uRmlsZSYpOwoJCXN0YXRpYyB2
b2lkCQkJCUxvYWQJCQkJCQkoU2Vzc2lvbkZpbGUmKTsKCQlzdGF0aWMgdm9pZAkJCQlEaXNwb3Nl
CQkJCQkJKHZvaWQpOwoKCXB1YmxpYzoKCQlzdGF0aWMgdm9pZCAJCQlDaGVja1N0YWNrUG9pbnRl
ckFzc2lnbm1lbnQJKHZvaWQpOwoJCXN0YXRpYyB2b2lkIAkJCUNoZWNrU3RhY2tQb2ludGVyRGVj
cmVtZW50CSh2b2lkKTsKCQlzdGF0aWMgdm9pZCAJCQlDaGVja0tlcm5lbFN0YWNrCQkJKHZvaWQp
OwoJCXN0YXRpYyB2b2lkIAkJCVJlbWVtYmVyU3RhY2tDaHVuawkJCShjb25zdCBFbVBhbG1DaHVu
ayYpOwoJCXN0YXRpYyB2b2lkIAkJCVJlbWVtYmVyQm9vdFN0YWNrCQkJKHZvaWQpOwoJCXN0YXRp
YyB2b2lkIAkJCVJlbWVtYmVyS2VybmVsU3RhY2sJCQkodm9pZCk7CgkJc3RhdGljIHZvaWQgCQkJ
UmVtZW1iZXJTdGFja1JhbmdlCQkJKGNvbnN0IFN0YWNrUmFuZ2UmKTsKCQlzdGF0aWMgdm9pZAkJ
CQlTZXRDdXJyZW50U3RhY2sJCQkJKGNvbnN0IFN0YWNrUmFuZ2UmKTsKCQlzdGF0aWMgdm9pZCAJ
CQlGb3JnZXRTdGFjawkJCQkJKGVtdXB0cik7CgkJc3RhdGljIHZvaWQgCQkJRm9yZ2V0U3RhY2tz
SW4JCQkJKGVtdXB0ciwgdWludDMyKTsKCQlzdGF0aWMgU3RhY2tSYW5nZQkJR2V0Qm9vdFN0YWNr
CQkJCSh2b2lkKTsKCQlzdGF0aWMgQm9vbAkJCQlJc0luU3RhY2sJCQkJCShlbXVwdHIpOwoJCXN0
YXRpYyBCb29sCQkJCUlzSW5TdGFja0Jsb2NrCQkJCShlbXVwdHIpOwoJCXN0YXRpYyB2b2lkCQkJ
CUdlbmVyYXRlU3RhY2tDcmF3bAkJCShFbVN0YWNrRnJhbWVMaXN0JiBmcmFtZUxpc3QpOwoJCXN0
YXRpYyB2b2lkCQkJCVByZWZzQ2hhbmdlZAkJCQkoUHJlZktleVR5cGUsIHZvaWQqKTsKCglwcm90
ZWN0ZWQ6CgkJc3RhdGljIEJvb2wJCQkJSGFuZGxlVHJhcDE1CQkJCShFeGNlcHRpb25OdW1iZXIp
OwoJCXN0YXRpYyBCb29sCQkJCUhhbmRsZUpTUgkJCQkJKGVtdXB0ciBvbGRQQywgZW11cHRyIGRl
c3QpOwoJCXN0YXRpYyBCb29sCQkJCUhhbmRsZUpTUl9JbmQJCQkJKGVtdXB0ciBvbGRQQywgZW11
cHRyIGRlc3QpOwoJCXN0YXRpYyB2b2lkCQkJCUhhbmRsZUxJTksJCQkJCShpbnQgbGlua1NpemUp
OwoJCXN0YXRpYyBCb29sCQkJCUhhbmRsZVJURQkJCQkJKGVtdXB0ciBkZXN0KTsKCQlzdGF0aWMg
Qm9vbAkJCQlIYW5kbGVSVFMJCQkJCShlbXVwdHIgZGVzdCk7CgkJc3RhdGljIHZvaWQJCQkJSGFu
ZGxlTmV3UEMJCQkJCShlbXVwdHIgZGVzdCk7CgkJc3RhdGljIHZvaWQJCQkJSGFuZGxlTmV3U1AJ
CQkJCShFbVN0YWNrQ2hhbmdlVHlwZSk7CgoJcHJpdmF0ZToKCQlzdGF0aWMgQm9vbAkJCQlIYW5k
bGVTeXN0ZW1DYWxsCQkJKEJvb2wgZnJvbVRyYXApOwp9OwoKCgojIDI0ICIuLy4uL1NyY1NoYXJl
ZC9NZXRhTWVtb3J5LmNwcCIgMgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhdGNoZXMvRW1QYXRjaFN0
YXRlLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL0NodW5rRmlsZS5o
IiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKY2xhc3MgQ2h1bms7CgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKY2xhc3MgQ2h1bmtGaWxlCnsKCXB1YmxpYzoKCQkJCQkJCQlDaHVua0ZpbGUJCShF
bVN0cmVhbSYgcyk7CgkJCQkJCQkJfkNodW5rRmlsZQkJKHZvaWQpOwoKCQl0eXBlZGVmIHVpbnQz
MglUYWc7CgogCgkJZW51bSB7IGtDaHVua05vdEZvdW5kID0gLTEgfTsKCQlsb25nCQkJCQlGaW5k
Q2h1bmsJCShUYWcgdGFnKTsJIAoKCQlCb29sCQkJCQlSZWFkQ2h1bmsJCShpbnQgaW5kZXgsIFRh
ZyYgdGFnLCBDaHVuayYpOwoJCUJvb2wJCQkJCVJlYWRDaHVuawkJKFRhZyB0YWcsIENodW5rJik7
CgkJdm9pZAkJCQkJUmVhZENodW5rCQkodWludDMyIHNpemUsIHZvaWQqIGRhdGEpOwoJCUJvb2wJ
CQkJCVJlYWRJbnQJCQkoVGFnIHRhZywgdWludDgmKTsKCQlCb29sCQkJCQlSZWFkSW50CQkJKFRh
ZyB0YWcsIGludDgmKTsKCQlCb29sCQkJCQlSZWFkSW50CQkJKFRhZyB0YWcsIHVpbnQxNiYpOwoJ
CUJvb2wJCQkJCVJlYWRJbnQJCQkoVGFnIHRhZywgaW50MTYmKTsKCQlCb29sCQkJCQlSZWFkSW50
CQkJKFRhZyB0YWcsIHVpbnQzMiYpOwoJCUJvb2wJCQkJCVJlYWRJbnQJCQkoVGFnIHRhZywgaW50
MzImKTsKCQlCb29sCQkJCQlSZWFkU3RyaW5nCQkoVGFnIHRhZywgY2hhciopOwoJCUJvb2wJCQkJ
CVJlYWRTdHJpbmcJCShUYWcgdGFnLCBzdHJpbmcmKTsKCgkJdm9pZAkJCQkJV3JpdGVDaHVuawkJ
KFRhZyB0YWcsIGNvbnN0IENodW5rJik7CgkJdm9pZAkJCQkJV3JpdGVDaHVuawkJKFRhZyB0YWcs
IHVpbnQzMiBzaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKCQl2b2lkCQkJCQlXcml0ZUludAkJKFRh
ZyB0YWcsIHVpbnQ4KTsKCQl2b2lkCQkJCQlXcml0ZUludAkJKFRhZyB0YWcsIGludDgpOwoJCXZv
aWQJCQkJCVdyaXRlSW50CQkoVGFnIHRhZywgdWludDE2KTsKCQl2b2lkCQkJCQlXcml0ZUludAkJ
KFRhZyB0YWcsIGludDE2KTsKCQl2b2lkCQkJCQlXcml0ZUludAkJKFRhZyB0YWcsIHVpbnQzMik7
CgkJdm9pZAkJCQkJV3JpdGVJbnQJCShUYWcgdGFnLCBpbnQzMik7CgkJdm9pZAkJCQkJV3JpdGVT
dHJpbmcJCShUYWcgdGFnLCBjb25zdCBjaGFyKik7CgkJdm9pZAkJCQkJV3JpdGVTdHJpbmcJCShU
YWcgdGFnLCBjb25zdCBzdHJpbmcmKTsKCgkJRW1TdHJlYW0mCQkJCUdldFN0cmVhbQkJKHZvaWQp
IGNvbnN0OwoKCXByaXZhdGU6CgkJRW1TdHJlYW0mCQkJCWZTdHJlYW07Cn07CgoKY2xhc3MgQ2h1
bmsKewoJcHVibGljOgoJCQkJCQkJCUNodW5rCQkJKHZvaWQpOwoJCQkJCQkJCUNodW5rCQkJKGxv
bmcgaW5MZW5ndGgpOwoJCQkJCQkJCUNodW5rCQkJKGNvbnN0IENodW5rJik7CgkJCQkJCQkJfkNo
dW5rCQkJKHZvaWQpOwoKCQlDaHVuayYJCQkJCW9wZXJhdG9yPQkJKGNvbnN0IENodW5rJik7CgoJ
CXZvaWQqCQkJCQlHZXRQb2ludGVyCQkodm9pZCkgY29uc3Q7CgkJbG9uZwkJCQkJR2V0TGVuZ3Ro
CQkodm9pZCkgY29uc3Q7CgkJdm9pZAkJCQkJU2V0TGVuZ3RoCQkobG9uZyBpbkxlbmd0aCk7CgoJ
cHJpdmF0ZToKCQl2b2lkKgkJCQkJZlB0cjsKCQlsb25nCQkJCQlmVXNlZFNpemU7CgkJbG9uZwkJ
CQkJZkFsbG9jYXRlZFNpemU7Cn07CgoKY2xhc3MgRW1TdHJlYW1DaHVuayA6IHB1YmxpYyBFbVN0
cmVhbQp7CglwdWJsaWM6CgkJCQkJCQkJRW1TdHJlYW1DaHVuawkoQ2h1bmsqKTsKCQkJCQkJCQlF
bVN0cmVhbUNodW5rCShDaHVuayYpOwoJCXZpcnR1YWwJCQkJCX5FbVN0cmVhbUNodW5rCSh2b2lk
KTsKCgkJdmlydHVhbCB2b2lkCQkJU2V0TGVuZ3RoCQkoaW50MzIJCQlpbkxlbmd0aCk7CgoJCXZp
cnR1YWwgRXJyQ29kZQkJCVB1dEJ5dGVzCQkoY29uc3Qgdm9pZCoJaW5CdWZmZXIsCgkJCQkJCQkJ
CQkJCSBpbnQzMgkJCWlvQnl0ZUNvdW50KTsKCQl2aXJ0dWFsIEVyckNvZGUJCQlHZXRCeXRlcwkJ
KHZvaWQqCQkJb3V0QnVmZmVyLAoJCQkJCQkJCQkJCQkgaW50MzIJCQlpb0J5dGVDb3VudCk7CgoJ
cHJpdmF0ZToKCQlDaHVuayYJCQkJCWZDaHVuazsKCQlDaHVuayoJCQkJCWZPd25lZENodW5rOwp9
OwoKCgojIDE4ICIuLi9TcmNTaGFyZWQvUGF0Y2hlcy9FbVBhdGNoU3RhdGUuaCIgMgoKCiMgMSAi
Li4vU3JjU2hhcmVkL1BhdGNoZXMvRW1QYXRjaE1vZHVsZVR5cGVzLmgiIDEKIAogCgoKCgoKCgoK
CgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1BhdGNoZXMvRW1QYXRjaElmLmgiIDEKIAogCgoKCgoK
CgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVkL0VjbUlmLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKIAogCiAKIAogCiAKIAogCiAKIAoKCmVudW0gRWNtRXJyCnsKCWtFY21FcnJOb25l
LAoJa0VjbUVycllpa2VzLAkJCQkgCgkJCQkJCQkJIAoKCWtFY21FcnJJbnZhbGlkUGFyYW1ldGVy
LAkgCglrRWNtRXJySW52YWxpZEhhbmRsZSwJCSAKCWtFY21FcnJJbnZhbGlkSWZOYW1lLAkJIAoJ
a0VjbUVyckludmFsaWRQdWJOYW1lLAkJIAoJa0VjbUVyckludmFsaWRTcnZOYW1lLAkJIAoJa0Vj
bUVyckludmFsaWRDb21wTmFtZSwJCSAKCWtFY21FcnJCYWRFdmVudFR5cGUsCQkgCglrRWNtRXJy
SW52YWxpZENvbm5lY3Rpb24sCSAKCWtFY21FcnJBbHJlYWR5Q29ubmVjdGVkLAkgCglrRWNtRXJy
Tm90SW5pdGlhbGl6ZWQJCSAKfTsKCgoKCiAKIAogCiAKIAogCgp0eXBlZGVmIHN0cmluZwlFY21J
Zk5hbWU7CnR5cGVkZWYgc3RyaW5nCUVjbUNvbXBOYW1lOwoKCiAKIAogCgp0eXBlZGVmIHZvaWQq
CUVjbUhhbmRsZTsKCgoKIAogCiAKIAoKY29uc3QgRWNtSWZOYW1lIGtFY21Db21wb25lbnRJZm4g
PSAiY29tcG9uZW50LmkuZWNtIjsKCnN0cnVjdCAgSUVjbUNvbXBvbmVudAp7CgkgCgoKCgoKCgoK
CgoKCgoKCXZpcnR1YWwgRWNtRXJyIFJlcXVlc3RJbnRlcmZhY2UoY29uc3QgRWNtSWZOYW1lICZu
YW1lLCB2b2lkICoqaVBQKSA9IDA7CgoKCSAKCgoKCgoKCgoKCgoKCgoKICAgIHZpcnR1YWwgRWNt
RXJyIFJlZmVyKCkgPSAwOwoKCgkgCgoKCgoKCgoKCgoKCgogICAgdmlydHVhbCBFY21FcnIgUmVs
ZWFzZSgpID0gMDsKfTsKCgoKIAogCiAKCmNvbnN0IEVjbUlmTmFtZSBrRWNtQ29udGFpbmVySWZu
ID0gImNvbnRhaW5lci5pLmVjbSI7CgpzdHJ1Y3QgIElFY21Db250YWluZXIgOiB2aXJ0dWFsIHB1
YmxpYyAgSUVjbUNvbXBvbmVudAp7Cn07CgoKCiAKIAogCgpjb25zdCBFY21JZk5hbWUga0VjbVBh
Y2thZ2VJZm4gPSAicGFja2FnZS5pLmVjbSI7CgpzdHJ1Y3QgIElFY21QYWNrYWdlIDogdmlydHVh
bCBwdWJsaWMgIElFY21Db21wb25lbnQKewp9OwoKCgogCiAKIAoKY29uc3QgRWNtSWZOYW1lIGtF
Y21FdmVudEJhc2VJZm4gPSAiZXZlbnRiYXNlLmV2ZW50cy5pLmVjbSI7CgpzdHJ1Y3QgIElFY21F
dmVudEJhc2UgOiB2aXJ0dWFsIHB1YmxpYyAgSUVjbUNvbXBvbmVudAp7CgoKfTsKCgoKIAogCiAK
CmNvbnN0IEVjbUlmTmFtZSBrRWNtRXZlbnRMaXN0ZW5lcklmbiA9ICJsaXN0ZW5lci5ldmVudHMu
aS5lY20iOwoKIAoKCnN0cnVjdCAgSUVjbUV2ZW50TGlzdGVuZXIKewoJIAoKCgoKCgoKCgoKCgoK
ICAgIEVjbUVyciBPbkV2ZW50KGNvbnN0IElFY21FdmVudEJhc2UgKmV2dElQKTsKfTsKCgogCiAK
IAoKY29uc3QgRWNtSWZOYW1lIGtFY21FdmVudHNJZm4gPSAiZXZlbnRzLmkuZWNtIjsKCnN0cnVj
dCAgSUVjbUV2ZW50cwp7CgkgCgoKCgoKCgoKCgoKCgoKCiAgICB2aXJ0dWFsIEVjbUVyciBSZXF1
ZXN0TGlzdGVuZXIoY29uc3QgRWNtSWZOYW1lICZuYW1lLCB2b2lkICoqbGlzdGVuZXJJUFApID0g
MDsKCgoJIAoKCgoKCgoKCgoKCgoKCgoKICAgIHZpcnR1YWwgRWNtRXJyIFN1YnNjcmliZShjb25z
dCBFY21JZk5hbWUgJnB1Ymxpc2hlciwgY29uc3QgSUVjbUV2ZW50TGlzdGVuZXIgKnN1YnNjcmli
ZXJJUCwgRWNtSGFuZGxlICZoYW5kbGUpID0gMDsKCgoJIAoKCgoKCgoKCgoKCgoKICAgIHZpcnR1
YWwgRWNtRXJyIFVuc3Vic2NyaWJlKGNvbnN0IEVjbUhhbmRsZSBoYW5kbGUpID0gMDsKCn07CgoK
CiMgMTggIi4uL1NyY1NoYXJlZC9QYXRjaGVzL0VtUGF0Y2hJZi5oIiAyCgoKCmVudW0KewoJa1Bh
dGNoRXJyTm9uZSwKCWtQYXRjaEVyck5vdEltcGxlbWVudGVkLAoJa1BhdGNoRXJySW52YWxpZElu
ZGV4Cn07CgoKZW51bSBDYWxsUk9NVHlwZQp7CglrRXhlY3V0ZVJPTSwKCWtTa2lwUk9NCn07CgoK
IAoKdHlwZWRlZglDYWxsUk9NVHlwZQkoKkhlYWRwYXRjaFByb2MpKHZvaWQpOwp0eXBlZGVmCXZv
aWQJCSgqVGFpbHBhdGNoUHJvYykodm9pZCk7CgoKIAogCiAKCmNvbnN0IEVjbUlmTmFtZSBrRW1Q
YXRjaExvYWRlcklmbiA9ICJsb2FkZXIucGF0Y2htb2R1bGUuaS5lY20iOwoKc3RydWN0ICBJRW1Q
YXRjaExvYWRlciA6IHZpcnR1YWwgcHVibGljICBJRWNtQ29tcG9uZW50CnsKCXZpcnR1YWwgRXJy
IEluaXRpYWxpemVQTAkodm9pZCkgPSAwOwoJdmlydHVhbCBFcnIgUmVzZXRQTAkJCSh2b2lkKSA9
IDA7Cgl2aXJ0dWFsIEVyciBEaXNwb3NlUEwJCSh2b2lkKSA9IDA7CgkKCXZpcnR1YWwgRXJyIENs
ZWFyUEwJCQkodm9pZCkgPSAwOwoJdmlydHVhbCBFcnIgTG9hZFBMCQkJKHZvaWQpID0gMDsKCgl2
aXJ0dWFsIEVyciBMb2FkQWxsTW9kdWxlcwkodm9pZCkgPSAwOwoJdmlydHVhbCBFcnIgTG9hZE1v
ZHVsZQkJKGNvbnN0IHN0cmluZyYgdXJsKSA9IDA7Cn07CgogCiAKIAoJCgoKIAogCiAKCmNvbnN0
IEVjbUlmTmFtZSBrRW1QYXRjaENvbnRhaW5lcklmbiA9ICJjb250YWluZXIucGF0Y2htb2R1bGUu
aS5lY20iOwoKc3RydWN0ICBJRW1QYXRjaENvbnRhaW5lciA6IHZpcnR1YWwgcHVibGljICBJRWNt
Q29udGFpbmVyCnsKfTsKCgogCiAKIAoKCgogCiAKIAoKY29uc3QgRWNtSWZOYW1lIGtFbVBhdGNo
RGxsVGVtcEhhY2tzSWZuID0gImhhY2tzLmRsbC5wYXRjaG1vZHVsZS5pLmVjbSI7CgpzdHJ1Y3Qg
IElFbVBhdGNoRGxsVGVtcEhhY2tzIDogdmlydHVhbCBwdWJsaWMgIElFY21Db21wb25lbnQKewoJ
dmlydHVhbCBFcnIgR2V0R2xvYmFsTWVtQmFua3Modm9pZCoqIG1lbWJhbmtzUFApPTA7Cgl2aXJ0
dWFsIEVyciBHZXRHbG9iYWxSZWdzKHZvaWQqKiByZWdzUFApPTA7Cn07CgogCiAKIAoKCgoKIAog
CiAKIAoKY29uc3QgRWNtSWZOYW1lIGtFbVBhdGNoTW9kdWxlSWZuID0gInBhdGNobW9kdWxlLmku
ZWNtIjsKCnN0cnVjdCAgSUVtUGF0Y2hNb2R1bGUgOiB2aXJ0dWFsIHB1YmxpYyAgSUVjbUNvbXBv
bmVudAp7Cgl2aXJ0dWFsIEVyciBJbml0aWFsaXplKElFbVBhdGNoQ29udGFpbmVyICZjb250YWlu
ZXJJUCkgPSAwOwoJdmlydHVhbCBFcnIgUmVzZXQoKSA9IDA7Cgl2aXJ0dWFsIEVyciBEaXNwb3Nl
KCkgPSAwOwoJCgl2aXJ0dWFsIEVyciBDbGVhciAoKSA9IDA7Cgl2aXJ0dWFsIEVyciBMb2FkICgp
ID0gMDsKCgl2aXJ0dWFsIGNvbnN0IHN0cmluZyAmR2V0TmFtZSgpID0gMDsKCgl2aXJ0dWFsIEVy
ciBHZXRIZWFkcGF0Y2ggKHVpbnQxNiBpbmRleCwgSGVhZHBhdGNoUHJvYyAmcHJvY1ApID0gMDsK
CXZpcnR1YWwgRXJyIEdldFRhaWxwYXRjaCAodWludDE2IGluZGV4LCBUYWlscGF0Y2hQcm9jICZw
cm9jUCkgPSAwOwp9OwoKCgoKIAogCiAKIAogCgpjb25zdCBFY21JZk5hbWUga0VtUGF0Y2hNb2R1
bGVNYXBJZm4gPSAibWFwLnBhdGNobW9kdWxlLmkuZWNtIjsKCnN0cnVjdCAgSUVtUGF0Y2hNb2R1
bGVNYXAgOiB2aXJ0dWFsIHB1YmxpYyAgSUVjbUNvbXBvbmVudAp7Cgl2aXJ0dWFsIEVyciBJbml0
aWFsaXplQWxsKElFbVBhdGNoQ29udGFpbmVyICZjb250YWluZXJJKSA9IDA7Cgl2aXJ0dWFsIEVy
ciBSZXNldEFsbCgpID0gMDsKCXZpcnR1YWwgRXJyIERpc3Bvc2VBbGwoKSA9IDA7CgkKCXZpcnR1
YWwgRXJyIENsZWFyQWxsICgpID0gMDsKCXZpcnR1YWwgRXJyIExvYWRBbGwgKCkgPSAwOwoKCXZp
cnR1YWwgRXJyIEFkZE1vZHVsZSAoSUVtUGF0Y2hNb2R1bGUgKm1vZHVsZUlQKSA9IDA7CgkKCXZp
cnR1YWwgRXJyIEdldE1vZHVsZUJ5TmFtZSAoY29uc3Qgc3RyaW5nICZuYW1lU3RyLCBJRW1QYXRj
aE1vZHVsZSAqJiBtb2R1bGVJUCkgPSAwOwp9OwoKCiMgMTggIi4uL1NyY1NoYXJlZC9QYXRjaGVz
L0VtUGF0Y2hNb2R1bGVUeXBlcy5oIiAyCgoKCgogCiAKIAogCiAKIAogCgpzdHJ1Y3QgUHJvdG9Q
YXRjaFRhYmxlRW50cnkKewoJdWludDE2CQkJZlRyYXBXb3JkOwoJSGVhZHBhdGNoUHJvYwlmSGVh
ZHBhdGNoOwoJVGFpbHBhdGNoUHJvYwlmVGFpbHBhdGNoOwp9OwoKCiAKIAogCiAKCmNsYXNzIElu
c3RhbGxlZExpYlBhdGNoRW50cnkKewoJcHVibGljOgoJCQkJCQkJCUluc3RhbGxlZExpYlBhdGNo
RW50cnkgKHZvaWQpIDoKCQkJCQkJCQkJZklzRGlydHkgKHRydWUpLAoJCQkJCQkJCQlmVGFibGVQ
IChfX251bGwgKQoJCQkJCQkJCXsKCQkJCQkJCQl9CgoJCWJvb2wJCQkJCUlzRGlydHkgKHZvaWQp
IGNvbnN0CgkJCQkJCQkJewoJCQkJCQkJCQlyZXR1cm4gZklzRGlydHk7CgkJCQkJCQkJfQoKCQl2
b2lkCQkJCQlTZXREaXJ0eSAoYm9vbCBkaXJ0eSA9IHRydWUpCgkJCQkJCQkJewoJCQkJCQkJCQlm
SXNEaXJ0eSA9IGRpcnR5OwoJCQkJCQkJCX0KCgkJSUVtUGF0Y2hNb2R1bGUqCQkJR2V0UGF0Y2hU
YWJsZVAgKHZvaWQpIGNvbnN0CgkJCQkJCQkJewoJCQkJCQkJCQlyZXR1cm4gZlRhYmxlUDsKCQkJ
CQkJCQl9CgoJCXZvaWQJCQkJCVNldFBhdGNoVGFibGVQIChJRW1QYXRjaE1vZHVsZSogdGFibGVQ
KQoJCQkJCQkJCXsKCQkJCQkJCQkJZlRhYmxlUCA9IHRhYmxlUDsKCQkJCQkJCQl9CgoJcHJpdmF0
ZToKCQlib29sCQkJCQlmSXNEaXJ0eTsKCQlJRW1QYXRjaE1vZHVsZSoJCQlmVGFibGVQOwp9OwoK
dHlwZWRlZiB2ZWN0b3I8SW5zdGFsbGVkTGliUGF0Y2hFbnRyeT4gUGF0Y2hlZExpYkluZGV4OwoK
CiAKIAogCiAKCnN0cnVjdCBUYWlscGF0Y2hUeXBlCnsKCVN5c3RlbUNhbGxDb250ZXh0CWZDb250
ZXh0OwoJaW50MzIgCQkJCWZDb3VudDsKCVRhaWxwYXRjaFByb2MJCWZUYWlscGF0Y2g7Cn07Cgp0
eXBlZGVmIHZlY3RvcjxUYWlscGF0Y2hUeXBlPgkJVGFpbFBhdGNoSW5kZXg7CgoKIyAyMCAiLi4v
U3JjU2hhcmVkL1BhdGNoZXMvRW1QYXRjaFN0YXRlLmgiIDIKCgoKCgoKCmNvbnN0IFVJbnQzMglr
T1NVbmRldGVybWluZWRWZXJzaW9uID0gfjA7CgoKdHlwZWRlZiBtYXA8ZW11cHRyLCBFbVBhbG1I
ZWFwKj4JRW1IZWFwTWFwOwoKCgogCiAKIAoKc3RydWN0IEVtdUFwcEluZm8KewoJSW50MTYJCWZD
bWQ7CQkgCglEbU9wZW5SZWYJZkRCOwoJVUludDE2CQlmQ2FyZE5vOwoJTG9jYWxJRAkJZkRCSUQ7
CglVSW50MTYJCWZNZW1Pd25lcklEOwoJZW11cHRyCQlmU3RhY2tQOwoJZW11cHRyCQlmU3RhY2tF
bmRQOwoJbG9uZwkJZlN0YWNrU2l6ZTsKCWNoYXIJCWZOYW1lWzMyIF07CgljaGFyCQlmVmVyc2lv
blsyNTZdOwkgCn07Cgp0eXBlZGVmIHZlY3RvcjxFbXVBcHBJbmZvPglFbXVBcHBJbmZvTGlzdDsK
CgogCiAKCnN0cnVjdCBFbVRyYWNrZWRDaHVuawp7CgllbXVwdHIJCQkJcHRyOwoJYm9vbAkJCQlp
c0hhbmRsZTsKCUVtU3RhY2tGcmFtZUxpc3QJc3RhY2tDcmF3bDsKfTsKCnR5cGVkZWYgbGlzdDxF
bVRyYWNrZWRDaHVuaz4gRW1UcmFja2VkQ2h1bmtMaXN0OwoKCnN0cnVjdCBFbVBhdGNoU3RhdGVE
YXRhCnsKCXB1YmxpYzoKCQlFbVBhdGNoU3RhdGVEYXRhICgpIDogCgkJCWZVSUluaXRpYWxpemVk
IChmYWxzZSksCgkJCWZVSVJlc2V0IChmYWxzZSksCgoJCQlmRXZ0R2V0RXZlbnRDYWxsZWQgKGZh
bHNlKSwKCQkJZkF1dG9BY2NlcHRCZWFtRGlhbG9ncyAoZmFsc2UpLAoJCQlmVGltZVRvUXVpdCAo
ZmFsc2UpLAoKCQkJZkxhc3RFdnRUcmFwICgwKSwKCQkJZk9TVmVyc2lvbiAoMCksCgkJCWZFbmNv
ZGluZyAoMCksCgoJCQlmU3lzQmluYXJ5U2VhcmNoQ291bnQgKDApLAoKCQkJZlF1aXRBcHBDYXJk
Tm8gKDApLAoJCQlmUXVpdEFwcERiSUQgKDApLAoJCQlmTmV4dEFwcENhcmRObyAoMCksCgkJCWZO
ZXh0QXBwRGJJRCAoMCksCgoJCQlmSGVhcEluaXRpYWxpemVkIChmYWxzZSksCgkJCWZNZW1NZ3JD
b3VudCAoMCksCgkJCWZNZW1TZW1hcGhvcmVDb3VudCAoMCksCgkJCWZNZW1TZW1hcGhvcmVSZXNl
cnZlVGltZSAoMCksCgkJCWZSZXNpemVPcmlnU2l6ZSAoMCksCgkJCWZIZWFwSUQgKDApCgkJewoJ
CX0KCgkJYm9vbCAJCQkJCWZVSUluaXRpYWxpemVkOyAKCQlib29sIAkJCQkJZlVJUmVzZXQ7CgkJ
Ym9vbAkJCQkJZkV2dEdldEV2ZW50Q2FsbGVkOwoJCWJvb2wJCQkJCWZBdXRvQWNjZXB0QmVhbURp
YWxvZ3M7CgkJYm9vbAkJCQkJZlRpbWVUb1F1aXQ7CgoJCXVpbnQxNgkJCQkJZkxhc3RFdnRUcmFw
OwoJCXVpbnQzMgkJCQkJZk9TVmVyc2lvbjsKCQl1aW50MzIJCQkJCWZFbmNvZGluZzsKCgkJbG9u
ZyAJCQkJCWZTeXNCaW5hcnlTZWFyY2hDb3VudDsKCgkJdWludDE2IAkJCQkJZlF1aXRBcHBDYXJk
Tm87CgkJTG9jYWxJRAkJCQkJZlF1aXRBcHBEYklEOwoJCXVpbnQxNiAJCQkJCWZOZXh0QXBwQ2Fy
ZE5vOwoJCUxvY2FsSUQJCQkJCWZOZXh0QXBwRGJJRDsKCgkJRW11QXBwSW5mb0xpc3QJCQlmQ3Vy
QXBwSW5mbzsKCgkJYm9vbCAJCQkJCWZIZWFwSW5pdGlhbGl6ZWQ7CgoJCWxvbmcgCQkJCQlmTWVt
TWdyQ291bnQ7CgkJQm9vbAkJCQkJZk1lbU1nckxlYWtzOwoJCWxvbmcgCQkJCQlmTWVtU2VtYXBo
b3JlQ291bnQ7CgkJdW5zaWduZWQgbG9uZwkJCWZNZW1TZW1hcGhvcmVSZXNlcnZlVGltZTsKCgkJ
dWludDMyCQkJCQlmUmVzaXplT3JpZ1NpemU7CgkJdWludDE2IAkJCQkJZkhlYXBJRDsKCgkJRW1I
ZWFwTWFwCQkJCWZSZW1lbWJlcmVkSGVhcHM7CgoJCUVtVHJhY2tlZENodW5rTGlzdAkJZlRyYWNr
ZWRDaHVua3M7Cn07CgoKCmNsYXNzIEVtUGF0Y2hTdGF0ZQp7CglwdWJsaWM6CgkJc3RhdGljIEVy
cgkJCQlJbml0aWFsaXplCSh2b2lkKTsKCQlzdGF0aWMgRXJyCQkJCURpc3Bvc2UJCSh2b2lkKTsK
CQlzdGF0aWMgRXJyCQkJCVJlc2V0CQkodm9pZCk7CgoJCWVudW0gUGVyc2lzdGVuY2VQaGFzZQoJ
CXsKCQkJUFNQZXJzaXN0QWxsLAkJIAoJCQlQU1BlcnNpc3RTdGVwMSwJCSAKCQkJUFNQZXJzaXN0
U3RlcDIJCSAKCQl9OwoKCQlzdGF0aWMgRXJyCQkJCVNhdmUJCQkJCShFbVN0cmVhbUNodW5rICZz
LCBsb25nIHZlcnNpb24gPSAxLCBQZXJzaXN0ZW5jZVBoYXNlIHBhc3MgPSBQU1BlcnNpc3RBbGwp
OwoJCXN0YXRpYyBFcnIJCQkJTG9hZAkJCQkJKEVtU3RyZWFtQ2h1bmsgJnMsIGxvbmcgdmVyc2lv
biA9IDEsIFBlcnNpc3RlbmNlUGhhc2UgcGFzcyA9IFBTUGVyc2lzdEFsbCk7CgoJCXN0YXRpYyBF
cnIJCQkJU2F2ZUN1ckFwcEluZm8JCQkoRW1TdHJlYW1DaHVuayAmcyk7CgkJc3RhdGljIEVycgkJ
CQlMb2FkQ3VyQXBwSW5mbwkJCShFbVN0cmVhbUNodW5rICZzKTsKCgkJc3RhdGljIHVpbnQxNgkJ
CUdldExhc3RFdnRUcmFwCQkJKHZvaWQpOwoJCXN0YXRpYyBFbXVBcHBJbmZvCQlHZXRDdXJyZW50
QXBwSW5mbwkJKHZvaWQpOwoJCXN0YXRpYyBFbXVBcHBJbmZvCQlHZXRSb290QXBwSW5mbwkJCSh2
b2lkKTsKCgoJCXN0YXRpYyBFcnIJCQkJQWRkQXBwSW5mbwkJCQkoRW11QXBwSW5mbyAmbmV3QXBw
SW5mbyk7CgkJc3RhdGljIEVycgkJCQlSZW1vdmVDdXJBcHBJbmZvCQkodm9pZCk7CgoJCXN0YXRp
YyBFcnIJCQkJU2V0TGFzdEV2dFRyYXAJCQkodWludDE2IGxhc3RFdnRUcmFwKTsKCQlzdGF0aWMg
RXJyCQkJCVNldEV2dEdldEV2ZW50Q2FsbGVkCShib29sIHdhc0NhbGxlZCk7CgoJCXN0YXRpYyBF
cnIJCQkJU2V0UXVpdEFwcAkJCQkoVUludDE2IGNhcmRObywgTG9jYWxJRCBkYklEKTsKCQlzdGF0
aWMgdm9pZAkJCQlTZXRUaW1lVG9RdWl0CQkJKHZvaWQpOwoKCQlzdGF0aWMgdm9pZAkJCQlNZW1N
Z3JMZWFrc1ByZWZzQ2hhbmdlZAkoUHJlZktleVR5cGUsIHZvaWQqKTsKCgkJc3RhdGljIEVycgkJ
CQlDb2xsZWN0Q3VycmVudEFwcEluZm8JKGVtdXB0ciBhcHBJbmZvUCwgRW11QXBwSW5mbyAmbmV3
QXBwSW5mbyk7CgoKCQlzdGF0aWMgVUludDMyCQkJT1NWZXJzaW9uCQkJCSh2b2lkKTsKCQlzdGF0
aWMgdm9pZAkJCQlTZXRPU1ZlcnNpb24JCQkoVUludDMyIHZlcnNpb24pOwoJCXN0YXRpYyBVSW50
MzIJCQlPU01ham9yTWlub3JWZXJzaW9uCQkodm9pZCk7CgkJc3RhdGljIFVJbnQzMgkJCU9TTWFq
b3JWZXJzaW9uCQkJKHZvaWQpOwoJCXN0YXRpYyBVSW50MzIJCQlPU01pbm9yVmVyc2lvbgkJCSh2
b2lkKTsKCQlzdGF0aWMgdm9pZAkJCQlTZXRTd2l0Y2hBcHAJCQkoVUludDE2IGNhcmRObywgTG9j
YWxJRCBkYklEKTsKCQlzdGF0aWMgQm9vbAkJCQlEYXRhYmFzZUluZm9IYXNTdGFja0luZm8odm9p
ZCk7CgkJc3RhdGljIEJvb2wJCQkJSGFzV2VsbEJlaGF2ZWRNZW1TZW1hcGhvcmVVc2FnZSAodm9p
ZCk7CgoKCQkgCgkJc3RhdGljIEJvb2wJCQkJSGFzRmluZFNob3dSZXN1bHRzQnVnCSh2b2lkKTsK
CQlzdGF0aWMgQm9vbAkJCQlIYXNTeXNCaW5hcnlTZWFyY2hCdWcJKHZvaWQpOwoKCQkgCgkJc3Rh
dGljIEJvb2wJCQkJSGFzR3JmUHJvY2Vzc1N0cm9rZUJ1Zwkodm9pZCk7CgkJc3RhdGljIEJvb2wJ
CQkJSGFzTWVudUhhbmRsZUV2ZW50QnVnCSh2b2lkKTsKCgkJIAoJCXN0YXRpYyBCb29sCQkJCUhh
c0JhY2tzcGFjZUNoYXJCdWcJCSh2b2lkKTsKCQlzdGF0aWMgQm9vbAkJCQlIYXNEZWxldGVkU3Rh
Y2tCdWcJCSh2b2lkKTsKCQlzdGF0aWMgQm9vbAkJCQlIYXNGaW5kU2F2ZUZpbmRTdHJCdWcJKHZv
aWQpOwoJCXN0YXRpYyBCb29sCQkJCUhhc0ZsZERlbGV0ZUJ1ZwkJCSh2b2lkKTsKCQlzdGF0aWMg
Qm9vbAkJCQlIYXNGbnREZWZpbmVGb250QnVnCQkodm9pZCk7CgkJc3RhdGljIEJvb2wJCQkJSGFz
TmV0UHJ2VGFza01haW5CdWcJKHZvaWQpOwoJCXN0YXRpYyBCb29sCQkJCUhhc05ldFBydlNldHRp
bmdTZXRCdWcJKHZvaWQpOwoKCQkgCgkJc3RhdGljIEJvb2wJCQkJSGFzRUNWYWxpZGF0ZUZpZWxk
QnVnCSh2b2lkKTsKCgkJIAoJCXN0YXRpYyBCb29sCQkJCUhhc0NvbnZlcnREZXB0aDFUbzJCV0J1
Zyh2b2lkKTsKCgkJIAoJCXN0YXRpYyBCb29sCQkJCUhhc1NlbGVjdEl0ZW1CdWcJCSh2b2lkKTsK
CQlzdGF0aWMgQm9vbAkJCQlIYXNTeW5jTm90aWZ5QnVnCQkodm9pZCk7CgoJCSAKCQlzdGF0aWMg
Qm9vbAkJCQlIYXNQcnZEcmF3U2xpZGVyQ29udHJvbEJ1Zwkodm9pZCk7CgoKCQlzdGF0aWMgQm9v
bAkJCQlHZXRBdXRvQWNjZXB0QmVhbURpYWxvZ3MgKHZvaWQpOwoJCXN0YXRpYyBCb29sCQkJCUF1
dG9BY2NlcHRCZWFtRGlhbG9ncwkoQm9vbCBuZXdTdGF0ZSk7CgkJc3RhdGljIFVJbnQxNgkJCUdl
dFJPTUNoYXJFbmNvZGluZwkJKHZvaWQpOwoJCXN0YXRpYyBCb29sCQkJCUV2dEdldEV2ZW50Q2Fs
bGVkCQkodm9pZCk7CgkJc3RhdGljIEJvb2wJCQkJSXNJblN5c0JpbmFyeVNlYXJjaAkJKHZvaWQp
OwoJCXN0YXRpYyB2b2lkCQkJCUVudGVyU3lzQmluYXJ5U2VhcmNoCSh2b2lkKTsKCQlzdGF0aWMg
dm9pZAkJCQlFeGl0U3lzQmluYXJ5U2VhcmNoCQkodm9pZCk7CgkJc3RhdGljIHVpbnQxNgkJCUdl
dFF1aXRBcHBDYXJkTm8JCSh2b2lkKTsKCQlzdGF0aWMgTG9jYWxJRAkJCUdldFF1aXRBcHBEYklE
CQkJKHZvaWQpOwoJCXN0YXRpYyB2b2lkCQkJCVNldEVuY29kaW5nCQkJCSh1aW50MzIgZW5jb2Rp
bmcpOwoKCQlzdGF0aWMgQm9vbAkJCQlJc1BDSW5NZW1NZ3IJCQkodm9pZCk7CgkJc3RhdGljIHZv
aWQJCQkJRW50ZXJNZW1NZ3IJCQkJKGNvbnN0IGNoYXIqIGZuTmFtZSk7CgkJc3RhdGljIHZvaWQJ
CQkJRXhpdE1lbU1ncgkJCQkoY29uc3QgY2hhciogZm5OYW1lKTsKCQlzdGF0aWMgQm9vbAkJCQlV
SUluaXRpYWxpemVkCQkJKHZvaWQpOwoKCQlzdGF0aWMgdm9pZAkJCQlTZXRVSUluaXRpYWxpemVk
CQkoQm9vbCB2YWx1ZSA9IHRydWUpOwoJCXN0YXRpYyB2b2lkCQkJCVNldFVJUmVzZXQJCQkJKEJv
b2wgdmFsdWUgPSB0cnVlKTsKCQlzdGF0aWMgdm9pZAkJCQlTZXRIZWFwSW5pdGlhbGl6ZWQJCShC
b29sIHZhbHVlID0gdHJ1ZSk7CgoJCXN0YXRpYyBCb29sCQkJCVVJUmVzZXQJCQkJCSh2b2lkKTsK
CQlzdGF0aWMgQm9vbAkJCQlIZWFwSW5pdGlhbGl6ZWQJCQkodm9pZCk7CgoJCSAKCgkJc3RhdGlj
IHVpbnQxNiBHZXROZXh0QXBwQ2FyZE5vICh2b2lkKQoJCXsKCQkJcmV0dXJuIGZnRGF0YS5mTmV4
dEFwcENhcmRObzsKCQl9CgoJCXN0YXRpYyBMb2NhbElEIEdldE5leHRBcHBEYklEICh2b2lkKQoJ
CXsKCQkJcmV0dXJuIGZnRGF0YS5mTmV4dEFwcERiSUQ7CgkJfQoKCQlzdGF0aWMgdm9pZCBTZXRO
ZXh0QXBwQ2FyZE5vICh1aW50MTYgY2FyZG5vKQoJCXsKCQkJZmdEYXRhLmZOZXh0QXBwQ2FyZE5v
ID0gY2FyZG5vOwoJCX0KCgkJc3RhdGljIHZvaWQgU2V0TmV4dEFwcERiSUQgKExvY2FsSUQgaWQp
CgkJewoJCQlmZ0RhdGEuZk5leHRBcHBEYklEID0gaWQ7CgkJfQoKCXB1YmxpYzoKCQlzdGF0aWMg
RW1QYXRjaFN0YXRlRGF0YQlmZ0RhdGE7Cn07CgoKIyAyNiAiLi8uLi9TcmNTaGFyZWQvTWV0YU1l
bW9yeS5jcHAiIDIKCiMgMSAiLi4vU3JjU2hhcmVkL0VtU2Vzc2lvbi5oIiAxCiAKIAoKCgoKCgoK
CgoKCgoKCgoKIyAxICIuLi9TcmNTaGFyZWQvRW1UaHJlYWRTYWZlUXVldWUuaCIgMQogCiAKCgoK
CgoKCgoKCgoKCgoKCgoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIEVtVGhyZWFkU2FmZVF1ZXVl
CnsKCXB1YmxpYzoKCQkJCQkJCQlFbVRocmVhZFNhZmVRdWV1ZQkJKGludCBtYXhTaXplID0gMCk7
CgkJCQkJCQkJfkVtVGhyZWFkU2FmZVF1ZXVlCQkodm9pZCk7CgoJCXZvaWQJCQkJCVB1dCAJCQkJ
CShjb25zdCBUJik7CgkJVAkJCQkJCUdldCAJCQkJCSh2b2lkKTsKCQlUCQkJCQkJUGVlayAJCQkJ
CSh2b2lkKTsKCQlpbnQgCQkJCQlHZXRVc2VkCQkJCQkodm9pZCk7CgkJaW50IAkJCQkJR2V0RnJl
ZQkJCQkJKHZvaWQpOwoJCUJvb2wJCQkJCVdhaXRGb3JEYXRhQXZhaWxhYmxlCShsb25nIHRpbWVv
dXRtcyk7CgoJCXZvaWQJCQkJCUNsZWFyCQkJCQkodm9pZCk7CgkJaW50CQkJCQkJR2V0TWF4U2l6
ZQkJCQkodm9pZCk7CgoJcHJpdmF0ZToKCQlvbW5pX211dGV4CQkJCWZNdXRleDsKCgkJb21uaV9j
b25kaXRpb24JCQlmQXZhaWxhYmxlOwoKCQlkZXF1ZTxUPgkJCQlmQ29udGFpbmVyOwoJCWludAkJ
CQkJCWZNYXhTaXplOwp9OwoKdHlwZWRlZiBFbVRocmVhZFNhZmVRdWV1ZTx1aW50OD4JRW1CeXRl
UXVldWU7CgoKIyAxOSAiLi4vU3JjU2hhcmVkL0VtU2Vzc2lvbi5oIiAyCgoKCgoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKCgogCiNwcmFnbWEgbWFyayBFbVN1c3BlbmRDb3VudGVycwogCgogCgoKCgoK
CgoKCgpzdHJ1Y3QgRW1TdXNwZW5kQ291bnRlcnMKewoJIAoJIAoJIAoKCWludAlmU3VzcGVuZEJ5
VUlUaHJlYWQJCQk6IDQ7CgoJIAoJIAoKCWludAlmU3VzcGVuZEJ5RGVidWdnZXIJCQk6IDQ7CgoJ
IAoJIAoKCWludAlmU3VzcGVuZEJ5RXh0ZXJuYWwJCQk6IDQ7CgoJIAoJIAoJIAoJIAoKCWludAlm
U3VzcGVuZEJ5VGltZW91dAkJCTogMTsKCgkgCgkgCgoJaW50CWZTdXNwZW5kQnlTeXNDYWxsCQkJ
OiAxOwoKCSAKCSAKCglpbnQJZlN1c3BlbmRCeVN1YnJvdXRpbmVSZXR1cm4JOiAxOwp9OwoKCiAK
I3ByYWdtYSBtYXJrIEVtU3VzcGVuZFN0YXRlCiAKCiAKCgoKCgp1bmlvbiBFbVN1c3BlbmRTdGF0
ZQp7CglFbVN1c3BlbmRDb3VudGVycwlmQ291bnRlcnM7Cgl1aW50MzIJCQkJZkFsbENvdW50ZXJz
Owp9OwoKCiAKI3ByYWdtYSBtYXJrIEVtU2Vzc2lvblN0YXRlCiAKCiAKCgoKCmVudW0gRW1TZXNz
aW9uU3RhdGUKewoJa1J1bm5pbmcsCQkgCglrU3RvcHBlZCwJCSAKCWtTdXNwZW5kZWQsCQkgCglr
QmxvY2tlZE9uVUkJIAp9OwoKCiAKI3ByYWdtYSBtYXJrIEVtU3RvcE1ldGhvZAogCgogCgoKCgoK
ZW51bSBFbVN0b3BNZXRob2QKewoJa1N0b3BOb25lLAkJIAoKCWtTdG9wTm93LAkJIAoKCWtTdG9w
T25DeWNsZSwJIAoJCQkJCSAKCglrU3RvcE9uU3lzQ2FsbAkgCgkJCQkJIAoJCQkJCSAKCQkJCQkg
Cn07CgoKIAojcHJhZ21hIG1hcmsgRW1CdXR0b25FdmVudAogCgogCgoKCgoKc3RydWN0IEVtQnV0
dG9uRXZlbnQKewoJRW1CdXR0b25FdmVudCAoU2tpbkVsZW1lbnRUeXBlIGJ1dHRvbiwgQm9vbCBp
c0Rvd24pIDoKCQlmQnV0dG9uIChidXR0b24pLAoJCWZCdXR0b25Jc0Rvd24gKGlzRG93bikKCXsK
CX0KCglTa2luRWxlbWVudFR5cGUJZkJ1dHRvbjsKCUJvb2wJCQlmQnV0dG9uSXNEb3duOwp9OwoK
dHlwZWRlZiBFbVRocmVhZFNhZmVRdWV1ZTxFbUJ1dHRvbkV2ZW50PglFbUJ1dHRvblF1ZXVlOwoK
CiAKI3ByYWdtYSBtYXJrIEVtS2V5RXZlbnQKIAoKIAoKCgpzdHJ1Y3QgRW1LZXlFdmVudAp7CglF
bUtleUV2ZW50ICh1aW50MTYgY2gpIDoKCQlmS2V5IChjaCksCgkJZlNoaWZ0RG93biAoMCksCgkJ
ZkNhcHNMb2NrRG93biAoMCksCgkJZk51bUxvY2tEb3duICgwKSwKCQlmQ29tbWFuZERvd24gKDAp
LAoJCWZPcHRpb25Eb3duICgwKSwKCQlmQ29udHJvbERvd24gKDApLAoJCWZBbHREb3duICgwKSwK
CQlmV2luZG93c0Rvd24gKDApCgkJe30KCgl1aW50MTYJZktleTsKCUJvb2wJZlNoaWZ0RG93bjsK
CUJvb2wJZkNhcHNMb2NrRG93bjsKCUJvb2wJZk51bUxvY2tEb3duOwoJQm9vbAlmQ29tbWFuZERv
d247CglCb29sCWZPcHRpb25Eb3duOwoJQm9vbAlmQ29udHJvbERvd247CglCb29sCWZBbHREb3du
OwoJQm9vbAlmV2luZG93c0Rvd247Cn07Cgp0eXBlZGVmIEVtVGhyZWFkU2FmZVF1ZXVlPEVtS2V5
RXZlbnQ+CUVtS2V5UXVldWU7CgoKIAojcHJhZ21hIG1hcmsgRW1QZW5FdmVudAogCgogCgoKCgpz
dHJ1Y3QgRW1QZW5FdmVudAp7CglFbVBlbkV2ZW50IChjb25zdCBFbVBvaW50JiBwb2ludCwgQm9v
bCBpc0Rvd24pIDoKCQlmUGVuUG9pbnQgKHBvaW50KSwKCQlmUGVuSXNEb3duIChpc0Rvd24pCgl7
Cgl9CgoJRW1Qb2ludAlmUGVuUG9pbnQ7CglCb29sCWZQZW5Jc0Rvd247CgoJYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEVtUGVuRXZlbnQmIG90aGVyKSBjb25zdAoJewoJCXJldHVybiBmUGVuUG9pbnQg
PT0gb3RoZXIuZlBlblBvaW50ICYmCgkJCWZQZW5Jc0Rvd24gPT0gb3RoZXIuZlBlbklzRG93bjsK
CX0KfTsKCnR5cGVkZWYgRW1UaHJlYWRTYWZlUXVldWU8RW1QZW5FdmVudD4JRW1QZW5RdWV1ZTsK
CgogCiNwcmFnbWEgbWFyayBJbnN0cnVjdGlvbi9EYXRhQnJlYWsKIAoKIAoKCgoKCgoKCgp0eXBl
ZGVmIHZvaWQJKCpJbnN0cnVjdGlvbkJyZWFrSW5zdGFsbGVyKQkodm9pZCk7CnR5cGVkZWYgdm9p
ZAkoKkluc3RydWN0aW9uQnJlYWtSZW1vdmVyKQkJKHZvaWQpOwp0eXBlZGVmIHZvaWQJKCpJbnN0
cnVjdGlvbkJyZWFrUmVhY2hlcikJCSh2b2lkKTsKCnN0cnVjdCBJbnN0cnVjdGlvbkJyZWFrRnVu
Y3MKewoJSW5zdHJ1Y3Rpb25CcmVha0luc3RhbGxlcglmSW5zdGFsbGVyOwoJSW5zdHJ1Y3Rpb25C
cmVha1JlbW92ZXIJCWZSZW1vdmVyOwoJSW5zdHJ1Y3Rpb25CcmVha1JlYWNoZXIJCWZSZWFjaGVy
Owp9OwoKdHlwZWRlZiB2ZWN0b3I8SW5zdHJ1Y3Rpb25CcmVha0Z1bmNzPglJbnN0cnVjdGlvbkJy
ZWFrRnVuY0xpc3Q7CgoKdHlwZWRlZiB2b2lkCSgqRGF0YUJyZWFrSW5zdGFsbGVyKQkodm9pZCk7
CnR5cGVkZWYgdm9pZAkoKkRhdGFCcmVha1JlbW92ZXIpCQkodm9pZCk7CnR5cGVkZWYgdm9pZAko
KkRhdGFCcmVha1JlYWNoZXIpCQkoZW11cHRyLCBpbnQgc2l6ZSwgQm9vbCBmb3JSZWFkKTsKCnN0
cnVjdCBEYXRhQnJlYWtGdW5jcwp7CglEYXRhQnJlYWtJbnN0YWxsZXIJCQlmSW5zdGFsbGVyOwoJ
RGF0YUJyZWFrUmVtb3ZlcgkJCWZSZW1vdmVyOwoJRGF0YUJyZWFrUmVhY2hlcgkJCWZSZWFjaGVy
Owp9OwoKdHlwZWRlZiB2ZWN0b3I8RGF0YUJyZWFrRnVuY3M+CURhdGFCcmVha0Z1bmNMaXN0OwoK
CiAKI3ByYWdtYSBtYXJrIEVtU2Vzc2lvbgogCgpjbGFzcyBFbUNQVTsKY2xhc3MgRW1EZWZlcnJl
ZEVycjsKY2xhc3MgU2Vzc2lvbkZpbGU7CnN0cnVjdCBDb25maWd1cmF0aW9uOwoKdHlwZWRlZiB2
ZWN0b3I8RW1EZWZlcnJlZEVycio+CUVtRGVmZXJyZWRFcnJMaXN0OwoKY2xhc3MgRW1TZXNzaW9u
OwpleHRlcm4gRW1TZXNzaW9uKglnU2Vzc2lvbjsKCmNsYXNzIEVtU2Vzc2lvbgp7CglwdWJsaWM6
CgkJIAoJCSAKCQkgCgoJCQkJCQkJCUVtU2Vzc2lvbiAJCQkodm9pZCk7CgkJCQkgCQkJCX5FbVNl
c3Npb24JCQkodm9pZCk7CgoJCSAKCQkgCgkJIAoKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkg
CgkJIAoJCSAKCgkJdm9pZAkJCQkJQ3JlYXRlTmV3CQkJKGNvbnN0IENvbmZpZ3VyYXRpb24mKTsK
CQl2b2lkCQkJCQlDcmVhdGVPbGQJCQkoY29uc3QgRW1GaWxlUmVmJik7CgkJdm9pZAkJCQkJQ3Jl
YXRlQm91bmQJCQkodm9pZCk7CgoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoKCQl2b2lkIAkJCQkJ
UmVzZXQJCQkJKEVtUmVzZXRUeXBlKTsKCQl2b2lkIAkJCQkJU2F2ZQkJCQkoU2Vzc2lvbkZpbGUm
KTsKCQl2b2lkIAkJCQkJTG9hZAkJCQkoU2Vzc2lvbkZpbGUmKTsKCgkJIAoJCSAKCQkgCgoJCXZv
aWQgCQkJCQlTYXZlCQkJCShjb25zdCBFbUZpbGVSZWYmLAoJCQkJCQkJCQkJCQkJIEJvb2wgdXBk
YXRlRmlsZVJlZik7CgkJdm9pZCAJCQkJCUxvYWQJCQkJKGNvbnN0IEVtRmlsZVJlZiYpOwoKCQkg
CgkJIAoJCSAKCQkgCgkJIAoJCSAKCgkJdm9pZAkJCQkJQ3JlYXRlVGhyZWFkCQkoQm9vbCBzdXNw
ZW5kZWQpOwoJCXZvaWQJCQkJCURlc3Ryb3lUaHJlYWQJCSh2b2lkKTsKCgkJIAoJCSAKCQkgCgoJ
CUJvb2wJCQkJCVN1c3BlbmRUaHJlYWQJCShFbVN0b3BNZXRob2QgaG93KTsKCQl2b2lkCQkJCQlS
ZXN1bWVUaHJlYWQJCSh2b2lkKTsKCgoJCSAKCgkJdm9pZAkJCQkJU2xlZXAJCQkJKHVuc2lnbmVk
IGxvbmcgbXNlY3MpOwoKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCgkJQm9vbAkJCQkJSW5DUFVU
aHJlYWQJCQkodm9pZCkgY29uc3Q7CgoKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoK
CQlFbVNlc3Npb25TdGF0ZQkJCUdldFNlc3Npb25TdGF0ZQkJKHZvaWQpIGNvbnN0OwoJCUVtU3Vz
cGVuZFN0YXRlCQkJR2V0U3VzcGVuZFN0YXRlCQkodm9pZCkgY29uc3Q7CgkJdm9pZAkJCQkJU2V0
U3VzcGVuZFN0YXRlCQkoY29uc3QgRW1TdXNwZW5kU3RhdGUmKTsKCgkJIAoJCSAKCQkgCgkJIAoJ
CSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgoJCXZvaWQJCQkJCUV4ZWN1dGVJbmNyZW1l
bnRhbAkodm9pZCk7CgoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkg
CgkJIAoKCQl2b2lkCQkJCQlFeGVjdXRlU3Vicm91dGluZQkodm9pZCk7CgoJCSAKCQkgCgkJIAoJ
CSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoKCQlCb29sCQkJCQlFeGVjdXRlU3BlY2lhbAkJKEJvb2wg
Y2hlY2tGb3JSZXNldE9ubHkpOwoKCQlCb29sCQkJCQlDaGVja0ZvckJyZWFrCQkodm9pZCk7CgoJ
CSAKCQkgCgoJCUVtRGxnSXRlbUlECQkJCUJsb2NrT25EaWFsb2cJCShFbURsZ1RocmVhZEZuIGZu
LAoJCQkJCQkJCQkJCQkJIGNvbnN0IHZvaWQqIHBhcmFtZXRlcnMpOwoKCgkJIAoJCSAKCQkgCgkJ
IAoJCSAKCgkJdm9pZAkJCQkJVW5ibG9ja0RpYWxvZwkJKHZvaWQpOwoKCgkJIAoJCSAKCQkgCgkJ
IAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkg
CgkJIAoJCSAKCgkJdm9pZAkJCQkJUG9zdEJ1dHRvbkV2ZW50CQkoY29uc3QgRW1CdXR0b25FdmVu
dCYsIEJvb2wgcG9zdE5vdyA9IGZhbHNlKTsKCQlCb29sCQkJCQlIYXNCdXR0b25FdmVudAkJKHZv
aWQpOwoJCUVtQnV0dG9uRXZlbnQJCQlQZWVrQnV0dG9uRXZlbnQJCSh2b2lkKTsKCQlFbUJ1dHRv
bkV2ZW50CQkJR2V0QnV0dG9uRXZlbnQJCSh2b2lkKTsKCgkJdm9pZAkJCQkJUG9zdEtleUV2ZW50
CQkoY29uc3QgRW1LZXlFdmVudCYpOwoJCUJvb2wJCQkJCUhhc0tleUV2ZW50CQkJKHZvaWQpOwoJ
CUVtS2V5RXZlbnQJCQkJUGVla0tleUV2ZW50CQkodm9pZCk7CgkJRW1LZXlFdmVudAkJCQlHZXRL
ZXlFdmVudAkJCSh2b2lkKTsKCgkJdm9pZAkJCQkJUG9zdFBlbkV2ZW50CQkoY29uc3QgRW1QZW5F
dmVudCYpOwoJCUJvb2wJCQkJCUhhc1BlbkV2ZW50CQkJKHZvaWQpOwoJCUVtUGVuRXZlbnQJCQkJ
UGVla1BlbkV2ZW50CQkodm9pZCk7CgkJRW1QZW5FdmVudAkJCQlHZXRQZW5FdmVudAkJCSh2b2lk
KTsKCgkJdm9pZAkJCQkJUmVsZWFzZUJvb3RLZXlzCQkodm9pZCk7CgoJCSAKCQkgCgoJCUNvbmZp
Z3VyYXRpb24JCQlHZXRDb25maWd1cmF0aW9uCSh2b2lkKTsKCQlFbUZpbGVSZWYJCQkJR2V0Rmls
ZQkJCQkodm9pZCk7CgkJRW1EZXZpY2UJCQkJR2V0RGV2aWNlCQkJKHZvaWQpOwoKCQkgCgkJIAoK
CQlCb29sCQkJCQlHZXRCcmVha09uU3lzQ2FsbAkodm9pZCk7CgoJCSAKCQkgCgkJIAoJCSAKCQkg
CgoJCUJvb2wJCQkJCUlzTmVzdGVkCQkJKHZvaWQpOwoKCQkgCgkJIAoKCQlCb29sCQkJCQlHZXRO
ZWVkUG9zdExvYWQJCSh2b2lkKTsKCQl2b2lkCQkJCQlTZXROZWVkUG9zdExvYWQJCShCb29sKTsK
CgkJIAoKCQl2b2lkCQkJCQlTY2hlZHVsZVN1c3BlbmRFeGNlcHRpb24JCQkodm9pZCk7CgkJdm9p
ZAkJCQkJU2NoZWR1bGVTdXNwZW5kRXJyb3IJCQkJKHZvaWQpOwoJCXZvaWQJCQkJCVNjaGVkdWxl
U3VzcGVuZEV4dGVybmFsCQkJCSh2b2lkKTsKCQl2b2lkCQkJCQlTY2hlZHVsZVN1c3BlbmRUaW1l
b3V0CQkJCSh2b2lkKTsKCQl2b2lkCQkJCQlTY2hlZHVsZVN1c3BlbmRTeXNDYWxsCQkJCSh2b2lk
KTsKCQl2b2lkCQkJCQlTY2hlZHVsZVN1c3BlbmRTdWJyb3V0aW5lUmV0dXJuCQkodm9pZCk7CgoJ
CXZvaWQJCQkJCVNjaGVkdWxlUmVzdW1lRXh0ZXJuYWwJCQkJKHZvaWQpOwoKCQkgCgkJIAoKCQl2
b2lkCQkJCQlTY2hlZHVsZVJlc2V0CQkJCQkJCShFbVJlc2V0VHlwZSk7CgkJdm9pZAkJCQkJU2No
ZWR1bGVSZXNldEJhbmtzCQkJCQkJKHZvaWQpOwoJCXZvaWQJCQkJCVNjaGVkdWxlQXV0b1NhdmVT
dGF0ZQkJCQkJKHZvaWQpOwoJCXZvaWQJCQkJCVNjaGVkdWxlU2F2ZVJvb3RTdGF0ZQkJCQkJKHZv
aWQpOwoJCXZvaWQJCQkJCVNjaGVkdWxlU2F2ZVN1c3BlbmRlZFN0YXRlCQkJCSh2b2lkKTsKCQl2
b2lkCQkJCQlTY2hlZHVsZUxvYWRSb290U3RhdGUJCQkJCSh2b2lkKTsKCQl2b2lkCQkJCQlTY2hl
ZHVsZU5leHRHcmVtbGluRnJvbVJvb3RTdGF0ZQkJKHZvaWQpOwoJCXZvaWQJCQkJCVNjaGVkdWxl
TmV4dEdyZW1saW5Gcm9tU3VzcGVuZGVkU3RhdGUJKHZvaWQpOwoJCXZvaWQJCQkJCVNjaGVkdWxl
TWluaW1pemVMb2FkU3RhdGUJCQkodm9pZCk7CgkJdm9pZAkJCQkJU2NoZWR1bGVEZWZlcnJlZEVy
cm9yCQkJCQkoRW1EZWZlcnJlZEVyciopOwoKCQl2b2lkCQkJCQlDbGVhckRlZmVycmVkRXJyb3Jz
CQkJCQkJKHZvaWQpOwoKCQkgCgkJIAoJCSAKCQkgCgoJCXZvaWQJCQkJCUFkZEluc3RydWN0aW9u
QnJlYWtIYW5kbGVycwkoSW5zdHJ1Y3Rpb25CcmVha0luc3RhbGxlciwKCQkJCQkJCQkJCQkJCQkJ
IEluc3RydWN0aW9uQnJlYWtSZW1vdmVyLAoJCQkJCQkJCQkJCQkJCQkgSW5zdHJ1Y3Rpb25CcmVh
a1JlYWNoZXIpOwoKCQkgCgkJIAoJCSAKCQkgCgoJCXZvaWQJCQkJCUFkZERhdGFCcmVha0hhbmRs
ZXJzCQkoRGF0YUJyZWFrSW5zdGFsbGVyLAoJCQkJCQkJCQkJCQkJCQkgRGF0YUJyZWFrUmVtb3Zl
ciwKCQkJCQkJCQkJCQkJCQkJIERhdGFCcmVha1JlYWNoZXIpOwoKCQkgCgoJCXZvaWQJCQkJCUlu
c3RhbGxJbnN0cnVjdGlvbkJyZWFrcwkodm9pZCk7CgkJdm9pZAkJCQkJUmVtb3ZlSW5zdHJ1Y3Rp
b25CcmVha3MJCSh2b2lkKTsKCQl2b2lkCQkJCQlIYW5kbGVJbnN0cnVjdGlvbkJyZWFrCQkodm9p
ZCk7CgoJCXZvaWQJCQkJCUluc3RhbGxEYXRhQnJlYWtzCQkJKHZvaWQpOwoJCXZvaWQJCQkJCVJl
bW92ZURhdGFCcmVha3MJCQkodm9pZCk7CgkJdm9pZAkJCQkJSGFuZGxlRGF0YUJyZWFrCQkJCShl
bXVwdHIsIGludCBzaXplLCBCb29sIGZvclJlYWQpOwoKCXByaXZhdGU6CgkJIAoJCSAKCQkgCgoJ
CXZvaWQJCQkJCUluaXRpYWxpemUJCQkJCShjb25zdCBDb25maWd1cmF0aW9uJik7CgoJCSAKCQkg
CgoJCXZvaWQJCQkJCURpc3Bvc2UJCQkJCQkodm9pZCk7CgoKCQkgCgkJIAoJCSAKCgkJc3RhdGlj
IHZvaWQJCQkJUnVuU3RhdGljCQkJKHZvaWQqIGFyZyk7CgkJdm9pZAkJCQkJUnVuCQkJCQkodm9p
ZCk7CgoKCQl2b2lkCQkJCQlDYWxsQ1BVCQkJCSh2b2lkKTsKCglwcml2YXRlOgoJCWZyaWVuZCBj
bGFzcyBFbUNQVTsKCQlmcmllbmQgY2xhc3MgRW1DUFU2OEs7CSAKCglwcml2YXRlOgoJCUNvbmZp
Z3VyYXRpb24JCQlmQ29uZmlndXJhdGlvbjsKCQlFbUZpbGVSZWYJCQkJZkZpbGU7CgoJCUVtQ1BV
KgkJCQkJZkNQVTsKCgoJCSAKCgkJb21uaV90aHJlYWQqCQkJZlRocmVhZDsKCgkJIAoKCQltdXRh
YmxlIG9tbmlfbXV0ZXgJCWZTaGFyZWRMb2NrOwoJCW11dGFibGUgb21uaV9jb25kaXRpb24JZlNo
YXJlZENvbmRpdGlvbjsKCgkJb21uaV9tdXRleAkJCQlmU2xlZXBMb2NrOwoJCW9tbmlfY29uZGl0
aW9uCQkJZlNsZWVwQ29uZGl0aW9uOwoKCgkJIAoJCSAKCQkgCgkJIAoKCgkJIAoJCSAKCQkgCgkJ
IAoKCQlCb29sCQkJCQlmU3RvcDsKCgoJCSAKCQkgCgkJIAoJCSAKCgkJRW1TdXNwZW5kU3RhdGUJ
CQlmU3VzcGVuZFN0YXRlOwoKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCgkJ
RW1TZXNzaW9uU3RhdGUJCQlmU3RhdGU7CgoJCSAKCQkgCgkJIAoKCQlCb29sCQkJCQlmQnJlYWtP
blN5c0NhbGw7CgkJaW50CQkJCQkJZk5lc3RMZXZlbDsKCgkJQm9vbAkJCQkJZk5lZWRQb3N0TG9h
ZDsKCgkJIAoJCSAKCgkJQm9vbAkJCQkJZlJlc2V0OwoJCUJvb2wJCQkJCWZSZXNldEJhbmtzOwoJ
CUJvb2wJCQkJCWZIb3JkZUF1dG9TYXZlU3RhdGU7CgkJQm9vbAkJCQkJZkhvcmRlU2F2ZVJvb3RT
dGF0ZTsKCQlCb29sCQkJCQlmSG9yZGVTYXZlU3VzcGVuZFN0YXRlOwoJCUJvb2wJCQkJCWZIb3Jk
ZUxvYWRSb290U3RhdGU7CgkJQm9vbAkJCQkJZkhvcmRlTmV4dEdyZW1saW5Gcm9tUm9vdFN0YXRl
OwoJCUJvb2wJCQkJCWZIb3JkZU5leHRHcmVtbGluRnJvbVN1c3BlbmRTdGF0ZTsKCQlCb29sCQkJ
CQlmTWluaW1pemVMb2FkU3RhdGU7CgoJCUVtRGVmZXJyZWRFcnJMaXN0CQlmRGVmZXJyZWRFcnJz
OwoKCQlFbVJlc2V0VHlwZQkJCQlmUmVzZXRUeXBlOwoKCXByaXZhdGU6CgkJRW1CdXR0b25RdWV1
ZQkJCWZCdXR0b25RdWV1ZTsKCQlFbUtleVF1ZXVlCQkJCWZLZXlRdWV1ZTsKCQlFbVBlblF1ZXVl
CQkJCWZQZW5RdWV1ZTsKCgkJRW1QZW5FdmVudAkJCQlmTGFzdFBlbkV2ZW50OwoJCXVpbnQzMgkJ
CQkJZkJvb3RLZXlzOwoKCXByaXZhdGU6CgkJSW5zdHJ1Y3Rpb25CcmVha0Z1bmNMaXN0CWZJbnN0
cnVjdGlvbkJyZWFrRnVuY3M7CgkJRGF0YUJyZWFrRnVuY0xpc3QJCQlmRGF0YUJyZWFrRnVuY3M7
Cn07CgoKIAojcHJhZ21hIG1hcmsgRW1TZXNzaW9uU3RvcHBlcgogCgogCgoKCmNsYXNzIEVtU2Vz
c2lvblN0b3BwZXIKewoJcHVibGljOgoJCQkJCQkJCUVtU2Vzc2lvblN0b3BwZXIJKEVtU2Vzc2lv
biosIEVtU3RvcE1ldGhvZCBob3cpOwoJCQkJCQkJCX5FbVNlc3Npb25TdG9wcGVyIAkodm9pZCk7
CgoJCUJvb2wJCQkJCVN0b3BwZWQJCQkJKHZvaWQpOwoJCUJvb2wJCQkJCUNhbkNhbGwJCQkJKHZv
aWQpOwoKCXByaXZhdGU6CgkJRW1TZXNzaW9uKgkJCQlmU2Vzc2lvbjsKCQlpbnQJCQkJCQlmSG93
OwoJCUJvb2wJCQkJCWZTdG9wcGVkOwp9OwoKCiAKCmlubGluZSBCb29sIEVtU2Vzc2lvbjo6SXNO
ZXN0ZWQgKHZvaWQpCnsKCXJldHVybiBmTmVzdExldmVsID4gMDsKfQoKCiMgMjcgIi4vLi4vU3Jj
U2hhcmVkL01ldGFNZW1vcnkuY3BwIiAyCgoKCiMgMSAiLi4vU3JjU2hhcmVkL1JPTVN0dWJzLmgi
IDEKIAogCgoKCgoKCgoKCgoKCgoKdm9pZCBDbGlwYm9hcmRBZGRJdGVtIChjb25zdCBDbGlwYm9h
cmRGb3JtYXRUeXBlIGZvcm1hdCwgY29uc3Qgdm9pZCogcHRyLCBVSW50MTYgbGVuZ3RoKTsKTWVt
SGFuZGxlIENsaXBib2FyZEdldEl0ZW0gKGNvbnN0IENsaXBib2FyZEZvcm1hdFR5cGUgZm9ybWF0
LCBVSW50MTYqIGxlbmd0aCk7Cgpjb25zdCBDaGFyKiBDdGxHZXRMYWJlbCAoY29uc3QgQ29udHJv
bFR5cGUgKmNvbnRyb2xQKTsKCkVyciBEbGtEaXNwYXRjaFJlcXVlc3QgKERsa1NlcnZlclNlc3Np
b25QdHIgc2Vzc1ApOwpFcnIgRGxrR2V0U3luY0luZm8gKFVJbnQzMiogc3VjY1N5bmNEYXRlUCwg
VUludDMyKiBsYXN0U3luY0RhdGVQLAoJCQlEbGtTeW5jU3RhdGVUeXBlKiBzeW5jU3RhdGVQLCBD
aGFyKiBuYW1lQnVmUCwKCQkJQ2hhciogbG9nQnVmUCwgSW50MzIqIGxvZ0xlblApOwoKRXJyIERt
Q2xvc2VEYXRhYmFzZSAoRG1PcGVuUmVmIGRiUik7CkVyciBEbUNyZWF0ZURhdGFiYXNlIChVSW50
MTYgY2FyZE5vLCBjb25zdCBDaGFyICogY29uc3QgbmFtZVAsIAoJCQkJCVVJbnQzMiBjcmVhdG9y
LCBVSW50MzIgdHlwZSwgQm9vbGVhbiByZXNEQik7CkVyciBEbURhdGFiYXNlSW5mbyAoVUludDE2
IGNhcmRObywgTG9jYWxJRAlkYklELCBDaGFyKiBuYW1lUCwKCQkJCQlVSW50MTYqIGF0dHJpYnV0
ZXNQLCBVSW50MTYqIHZlcnNpb25QLCBVSW50MzIqIGNyRGF0ZVAsCgkJCQkJVUludDMyKiBtb2RE
YXRlUCwgVUludDMyKiBiY2tVcERhdGVQLAoJCQkJCVVJbnQzMiogbW9kTnVtUCwgTG9jYWxJRCog
YXBwSW5mb0lEUCwKCQkJCQlMb2NhbElEKiBzb3J0SW5mb0lEUCwgVUludDMyKiB0eXBlUCwKCQkJ
CQlVSW50MzIqIGNyZWF0b3JQKTsKRXJyIERtRGVsZXRlRGF0YWJhc2UgKFVJbnQxNiBjYXJkTm8s
IExvY2FsSUQgZGJJRCk7CkxvY2FsSUQgRG1GaW5kRGF0YWJhc2UgKFVJbnQxNiBjYXJkTm8sIGNv
bnN0IENoYXIqIG5hbWVQKTsKTWVtSGFuZGxlIERtR2V0MVJlc291cmNlIChEbVJlc1R5cGUgdHlw
ZSwgRG1SZXNJRCBpZCk7CkxvY2FsSUQgRG1HZXREYXRhYmFzZSAoVUludDE2IGNhcmRObywgVUlu
dDE2IGluZGV4KTsKRXJyIERtR2V0TGFzdEVyciAodm9pZCk7CkVycglEbUdldE5leHREYXRhYmFz
ZUJ5VHlwZUNyZWF0b3IgKEJvb2xlYW4gbmV3U2VhcmNoLCBEbVNlYXJjaFN0YXRlUHRyIHN0YXRl
SW5mb1AsCgkJCSAJCVVJbnQzMiB0eXBlLCBVSW50MzIgY3JlYXRvciwgQm9vbGVhbiBvbmx5TGF0
ZXN0VmVycywgCgkJCSAJCVVJbnQxNiogY2FyZE5vUCwgTG9jYWxJRCogZGJJRFApOwpNZW1IYW5k
bGUgRG1HZXRSZXNvdXJjZSAoRG1SZXNUeXBlIHR5cGUsIERtUmVzSUQgaWQpOwpNZW1IYW5kbGUg
RG1HZXRSZXNvdXJjZUluZGV4IChEbU9wZW5SZWYgZGJQLCBVSW50MTYgaW5kZXgpOwpNZW1IYW5k
bGUgRG1OZXdIYW5kbGUgKERtT3BlblJlZiBkYlIsIFVJbnQzMiBzaXplKTsKTWVtSGFuZGxlIERt
TmV3UmVjb3JkIChEbU9wZW5SZWYgZGJSLCBVSW50MTYqIGF0UCwgVUludDMyIHNpemUpOwpNZW1I
YW5kbGUgRG1OZXdSZXNvdXJjZSAoRG1PcGVuUmVmIGRiUiwgRG1SZXNUeXBlIHJlc1R5cGUsIERt
UmVzSUQgcmVzSUQsIFVJbnQzMiBzaXplKTsKRG1PcGVuUmVmIERtTmV4dE9wZW5EYXRhYmFzZShE
bU9wZW5SZWYgY3VycmVudFApOwpVSW50MTYgRG1OdW1EYXRhYmFzZXMgKFVJbnQxNiBjYXJkTm8p
OwpVSW50MTYgRG1OdW1SZWNvcmRzIChEbU9wZW5SZWYgZGJQKTsKVUludDE2IERtTnVtUmVzb3Vy
Y2VzIChEbU9wZW5SZWYgZGJQKTsKRG1PcGVuUmVmIERtT3BlbkRhdGFiYXNlIChVSW50MTYgY2Fy
ZE5vLCBMb2NhbElEIGRiSUQsIFVJbnQxNiBtb2RlKTsKRXJyIERtT3BlbkRhdGFiYXNlSW5mbyAo
RG1PcGVuUmVmIGRiUCwgTG9jYWxJRCogZGJJRFAsIAoJCQkJCVVJbnQxNiogb3BlbkNvdW50UCwg
VUludDE2KiBtb2RlUCwgVUludDE2KiBjYXJkTm9QLAoJCQkJCUJvb2xlYW4qIHJlc0RCUCk7CkVy
ciBEbVJlY29yZEluZm8gKERtT3BlblJlZiBkYlAsIFVJbnQxNiBpbmRleCwKCQkJCQlVSW50MTYq
IGF0dHJQLCBVSW50MzIqIHVuaXF1ZUlEUCwgTG9jYWxJRCogY2h1bmtJRFApOwpFcnIgRG1SZWxl
YXNlUmVjb3JkIChEbU9wZW5SZWYgZGJSLCBVSW50MTYgaW5kZXgsIEJvb2xlYW4gZGlydHkpOwpF
cnIgRG1SZWxlYXNlUmVzb3VyY2UgKE1lbUhhbmRsZSByZXNvdXJjZUgpOwpFcnIgRG1SZXNvdXJj
ZUluZm8gKERtT3BlblJlZiBkYlAsIFVJbnQxNiBpbmRleCwKCQkJCQlEbVJlc1R5cGUqIHJlc1R5
cGVQLCBEbVJlc0lEKiByZXNJRFAsICAKCQkJCQlMb2NhbElEKiBjaHVua0xvY2FsSURQKTsKTWVt
SGFuZGxlIERtUXVlcnlSZWNvcmQgKERtT3BlblJlZiBkYlAsIFVJbnQxNiBpbmRleCk7CkVyciBE
bVNldERhdGFiYXNlSW5mbyAoVUludDE2IGNhcmRObywgTG9jYWxJRCBkYklELCBjb25zdCBDaGFy
KiBuYW1lUCwKCQkJCQlVSW50MTYqIGF0dHJpYnV0ZXNQLCBVSW50MTYqIHZlcnNpb25QLCBVSW50
MzIqIGNyRGF0ZVAsCgkJCQkJVUludDMyKiBtb2REYXRlUCwgVUludDMyKiBiY2tVcERhdGVQLAoJ
CQkJCVVJbnQzMiogbW9kTnVtUCwgTG9jYWxJRCogYXBwSW5mb0lEUCwKCQkJCQlMb2NhbElEKiBz
b3J0SW5mb0lEUCwgVUludDMyKiB0eXBlUCwKCQkJCQlVSW50MzIqIGNyZWF0b3JQKTsKRXJyIERt
U2V0UmVjb3JkSW5mbyAoRG1PcGVuUmVmIGRiUiwgVUludDE2IGluZGV4LCBVSW50MTYqIGF0dHJQ
LCBVSW50MzIqIHVuaXF1ZUlEUCk7CkVyciBEbVdyaXRlIChNZW1QdHIgcmVjb3JkUCwgVUludDMy
IG9mZnNldCwgY29uc3Qgdm9pZCAqIGNvbnN0IHNyY1AsIFVJbnQzMiBieXRlcyk7Cgp2b2lkIEV2
dEFkZEV2ZW50VG9RdWV1ZSAoRXZlbnRUeXBlKiBldmVudCk7CkVyciBFdnRFbnF1ZXVlS2V5IChV
SW50MTYgYXNjaWksIFVJbnQxNiBrZXljb2RlLCBVSW50MTYgbW9kaWZpZXJzKTsKRXJyIEV2dEVu
cXVldWVQZW5Qb2ludCAoUG9pbnRUeXBlKiBwdFApOwpjb25zdCBQZW5CdG5JbmZvVHlwZSoJRXZ0
R2V0UGVuQnRuTGlzdChVSW50MTYqIG51bUJ1dHRvbnMpOwpFcnIgRXZ0UmVzZXRBdXRvT2ZmVGlt
ZXIgKHZvaWQpOwpFcnIgRXZ0V2FrZXVwICh2b2lkKTsKCkVyciBFeGdMaWJDb250cm9sKFVJbnQx
NiBsaWJSZWZOdW0sIFVJbnQxNiBvcCwgdm9pZCAqdmFsdWVQLCBVSW50MTYgKnZhbHVlTGVuUCk7
Cgp2b2lkIEZsZEdldEF0dHJpYnV0ZXMgKGNvbnN0IEZpZWxkVHlwZSogZmxkLCBjb25zdCBGaWVs
ZEF0dHJQdHIgYXR0clApOwpVSW50MTYgRmxkR2V0SW5zUHRQb3NpdGlvbiAoY29uc3QgRmllbGRU
eXBlKiBmbGQpOwpVSW50MTYgRmxkR2V0TWF4Q2hhcnMgKGNvbnN0IEZpZWxkVHlwZSogZmxkKTsK
VUludDE2IEZsZEdldFRleHRMZW5ndGggKGNvbnN0IEZpZWxkVHlwZSogZmxkKTsKQ2hhciogRmxk
R2V0VGV4dFB0ciAoRmllbGRUeXBlKiBmbGRQKTsKCkludDE2IEZudExpbmVIZWlnaHQgKHZvaWQp
OwpVSW50OCBGbnRTZXRGb250IChVSW50OCBmb250SWQpOwoKRm9ybVR5cGUqIEZybUdldEFjdGl2
ZUZvcm0gKHZvaWQpOwpVSW50MTYgRnJtR2V0Rm9jdXMgKGNvbnN0IEZvcm1UeXBlKiBmcm0pOwpV
SW50MTYgRnJtR2V0Rm9ybUlkIChjb25zdCBGb3JtVHlwZSogZnJtKTsKVUludDE2IEZybUdldE51
bWJlck9mT2JqZWN0cyAoY29uc3QgRm9ybVR5cGUqIGZybSk7CnZvaWQgRnJtR2V0T2JqZWN0Qm91
bmRzIChjb25zdCBGb3JtVHlwZSogZnJtLCBjb25zdCBVSW50MTYgcE9iakluZGV4LCBjb25zdCBS
ZWN0YW5nbGVQdHIgcik7ClVJbnQxNiBGcm1HZXRPYmplY3RJZCAoY29uc3QgRm9ybVR5cGUqIGZy
bSwgY29uc3QgVUludDE2IG9iakluZGV4KTsKVUludDE2IEZybUdldE9iamVjdEluZGV4IChjb25z
dCBGb3JtVHlwZSogZm9ybVAsIFVJbnQxNiBvYmpJRCk7Ck1lbVB0ciBGcm1HZXRPYmplY3RQdHIg
KGNvbnN0IEZvcm1UeXBlKiBmcm0sIGNvbnN0IFVJbnQxNiBvYmpJbmRleCk7CkZvcm1PYmplY3RL
aW5kIEZybUdldE9iamVjdFR5cGUgKGNvbnN0IEZvcm1UeXBlKiBmcm0sIGNvbnN0IFVJbnQxNiBv
YmpJbmRleCk7CmNvbnN0IENoYXIqIEZybUdldFRpdGxlIChjb25zdCBGb3JtVHlwZSogZnJtKTsK
V2luSGFuZGxlIEZybUdldFdpbmRvd0hhbmRsZSAoY29uc3QgRm9ybVR5cGUqIGZybSk7CgpFcnIg
RlNDdXN0b21Db250cm9sKFVJbnQxNiBmc0xpYlJlZk51bSwgVUludDMyIGFwaUNyZWF0b3IsIFVJ
bnQxNiBhcGlTZWxlY3RvciwgCgkJCQkJdm9pZCAqdmFsdWVQLCBVSW50MTYgKnZhbHVlTGVuUCk7
CgpFcnIgRnRyR2V0IChVSW50MzIgY3JlYXRvciwgVUludDE2IGZlYXR1cmVOdW0sIFVJbnQzMiog
dmFsdWVQKTsKRXJyIEZ0clNldCAoVUludDMyIGNyZWF0b3IsIFVJbnQxNiBmZWF0dXJlTnVtLCBV
SW50MzIgbmV3VmFsdWUpOwpFcnIJRnRyVW5yZWdpc3RlciAoVUludDMyIGNyZWF0b3IsIFVJbnQx
NiBmZWF0dXJlTnVtKTsKCkJvb2xlYW4gSW50bFNldFN0cmljdENoZWNrcyAoQm9vbGVhbiBpU3Ry
aWN0Q2hlY2tzKTsKClVJbnQzMiBLZXlIYW5kbGVJbnRlcnJ1cHQoQm9vbGVhbiBwZXJpb2RpYywg
VUludDMyIHN0YXR1cyk7CgpJbnQxNiBMc3RHZXROdW1iZXJPZkl0ZW1zIChjb25zdCBMaXN0VHlw
ZSogbHN0KTsKSW50MTYgTHN0R2V0U2VsZWN0aW9uIChjb25zdCBMaXN0VHlwZSogbHN0KTsKQ2hh
ciAqIExzdEdldFNlbGVjdGlvblRleHQgKGNvbnN0IExpc3RUeXBlICpsaXN0UCwgSW50MTYgaXRl
bU51bSk7CgpFcnIgTWVtQ2h1bmtGcmVlIChNZW1QdHIgY2h1bmtEYXRhUCk7Ck1lbVB0ciBNZW1I
YW5kbGVMb2NrIChNZW1IYW5kbGUgaCk7ClVJbnQzMiBNZW1IYW5kbGVTaXplIChNZW1IYW5kbGUg
aCk7CkxvY2FsSUQgTWVtSGFuZGxlVG9Mb2NhbElEIChNZW1IYW5kbGUgaCk7CkVyciBNZW1IYW5k
bGVVbmxvY2sgKE1lbUhhbmRsZSBoKTsKVUludDE2IE1lbUhlYXBJRCAoVUludDE2IGNhcmRObywg
VUludDE2IGhlYXBJbmRleCk7Ck1lbVB0ciBNZW1IZWFwUHRyIChVSW50MTYgaGVhcElEKTsKTG9j
YWxJREtpbmQgTWVtTG9jYWxJREtpbmQgKExvY2FsSUQgbG9jYWwpOwpNZW1QdHIgTWVtTG9jYWxJ
RFRvR2xvYmFsIChMb2NhbElEIGxvY2FsLCBVSW50MTYgY2FyZE5vKTsKVUludDE2IE1lbU51bUNh
cmRzICh2b2lkKTsKVUludDE2IE1lbU51bUhlYXBzIChVSW50MTYgY2FyZE5vKTsKRXJyIE1lbU5W
UGFyYW1zIChCb29sZWFuIHNldCwgU3lzTlZQYXJhbXNQdHIgcGFyYW1zUCk7Ck1lbVB0ciBNZW1Q
dHJOZXcgKFVJbnQzMiBzaXplKTsKRXJyIE1lbVB0clNldE93bmVyIChNZW1QdHIgcCwgVUludDE2
IG93bmVyKTsKVUludDMyIE1lbVB0clNpemUgKE1lbVB0ciBwKTsKRXJyIE1lbVB0clVubG9jayAo
TWVtUHRyIHApOwoKRXJyIE5ldExpYkNvbmZpZ01ha2VBY3RpdmUgKFVJbnQxNiByZWZOdW0sIFVJ
bnQxNiBjb25maWdJbmRleCk7CgpFcnIgUGVuQ2FsaWJyYXRlIChQb2ludFR5cGUqIGRpZ1RvcExl
ZnRQLCBQb2ludFR5cGUqIGRpZ0JvdFJpZ2h0UCwKCQkJCQlQb2ludFR5cGUqIHNjclRvcExlZnRQ
LCBQb2ludFR5cGUqIHNjckJvdFJpZ2h0UCk7CkVycgkgUGVuUmF3VG9TY3JlZW4oUG9pbnRUeXBl
KiBwZW5QKTsKRXJyIFBlblNjcmVlblRvUmF3IChQb2ludFR5cGUqIHBlblApOwoKRG1PcGVuUmVm
IFByZWZPcGVuUHJlZmVyZW5jZURCVjEwICh2b2lkKTsKRG1PcGVuUmVmIFByZWZPcGVuUHJlZmVy
ZW5jZURCIChCb29sZWFuIHNhdmVkKTsKdm9pZCBQcmVmU2V0UHJlZmVyZW5jZSAoU3lzdGVtUHJl
ZmVyZW5jZXNDaG9pY2UgY2hvaWNlLCBVSW50MzIgdmFsdWUpOwoKRXJyCVN5c0N1ckFwcERhdGFi
YXNlIChVSW50MTYqIGNhcmROb1AsIExvY2FsSUQqIGRiSURQKTsKRXJyIFN5c0tlcm5lbEluZm8g
KE1lbVB0ciBwKTsKRXJyIFN5c0xpYkZpbmQgKGNvbnN0IENoYXIgKm5hbWVQLCBVSW50MTYgKnJl
Zk51bVApOwpFcnIgU3lzTGliTG9hZCAoVUludDMyIGxpYlR5cGUsIFVJbnQzMiBsaWJDcmVhdG9y
LCBVSW50MTYgKnJlZk51bVApOwpTeXNMaWJUYmxFbnRyeVB0ciBTeXNMaWJUYmxFbnRyeSAoVUlu
dDE2IHJlZk51bSk7ClVJbnQxNiBTeXNTZXRBdXRvT2ZmVGltZSAoVUludDE2IHNlY29uZHMpOwpF
cnIgU3lzVUlBcHBTd2l0Y2ggKFVJbnQxNiBjYXJkTm8sIExvY2FsSUQgZGJJRCwgVUludDE2IGNt
ZCwgTWVtUHRyIGNtZFBCUCk7CgpDb29yZCBUYmxHZXRDb2x1bW5TcGFjaW5nIChjb25zdCBUYWJs
ZVR5cGUqIHRhYmxlUCwgSW50MTYgY29sdW1uKTsKQ29vcmQgVGJsR2V0Q29sdW1uV2lkdGggKGNv
bnN0IFRhYmxlVHlwZSogdGFibGVQLCBJbnQxNiBjb2x1bW4pOwpGaWVsZFB0ciBUYmxHZXRDdXJy
ZW50RmllbGQgKGNvbnN0IFRhYmxlVHlwZSogdGFibGUpOwpCb29sZWFuIFRibEdldFNlbGVjdGlv
biAoY29uc3QgVGFibGVUeXBlKiB0YWJsZVAsIEludDE2KiByb3dQLCBJbnQxNiogY29sdW1uUCk7
CkNvb3JkIFRibEdldFJvd0hlaWdodCAoY29uc3QgVGFibGVUeXBlKiB0YWJsZVAsIEludDE2IHJv
dyk7CgpVSW50OCBUeHRCeXRlQXR0cihVSW50OCBpbkJ5dGUpOwpVSW50MTYgVHh0Q2hhckJvdW5k
cyAoY29uc3QgQ2hhciogaW5UZXh0LCBVSW50MzIgaW5PZmZzZXQsIFVJbnQzMiogb3V0U3RhcnQs
IFVJbnQzMiogb3V0RW5kKTsKVUludDE2IFR4dEdldE5leHRDaGFyIChjb25zdCBDaGFyKiBpblRl
eHQsIFVJbnQzMiBpbk9mZnNldCwgV0NoYXIqIG91dENoYXIpOwoKZXh0ZXJuIHZvaWQgV2luRGlz
cGxheVRvV2luZG93UHQgKEludDE2KiBleHRlbnRYLCBJbnQxNiogZXh0ZW50WSk7CldpbkhhbmRs
ZSBXaW5HZXRBY3RpdmVXaW5kb3cgKHZvaWQpOwp2b2lkIFdpbkdldERpc3BsYXlFeHRlbnQgKElu
dDE2KiBleHRlbnRYLCBJbnQxNiogZXh0ZW50WSk7CldpbkhhbmRsZSBXaW5HZXRGaXJzdFdpbmRv
dyAodm9pZCk7CnZvaWQgV2luR2V0V2luZG93Qm91bmRzIChSZWN0YW5nbGVQdHIgcik7CnZvaWQg
V2luUG9wRHJhd1N0YXRlICh2b2lkKTsKV2luSGFuZGxlIFdpblNldERyYXdXaW5kb3cgKFdpbkhh
bmRsZSB3aW5IYW5kbGUpOwp2b2lkIFdpbldpbmRvd1RvRGlzcGxheVB0IChJbnQxNiogZXh0ZW50
WCwgSW50MTYqIGV4dGVudFkpOwoKCgoKIAoKCQkJCQkKIAoKCQkJCQkKIAoKCQkJCQkKIAoKCgoK
CiMgMzAgIi4vLi4vU3JjU2hhcmVkL01ldGFNZW1vcnkuY3BwIiAyCgojIDEgIi4uL1NyY1NoYXJl
ZC9TZXNzaW9uRmlsZS5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiLi4vU3JjU2hhcmVk
L1BsYXRmb3JtLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIkMiCnsKCgoJIAoKdm9p
ZCoJUGxhdGZvcm1fQWxsb2NhdGVNZW1vcnkgKHNpemVfdCBzaXplKTsKdm9pZCoJUGxhdGZvcm1f
UmVhbGxvY01lbW9yeQkodm9pZCogcCwgc2l6ZV90IHNpemUpOwp2b2lkCVBsYXRmb3JtX0Rpc3Bv
c2VNZW1vcnkJKHZvaWQqIHApOwoKCn0JIAoKCSAKCgoKCgpjbGFzcyBDaHVua0ZpbGU7CmNsYXNz
IENTb2NrZXQ7CmNsYXNzIEVtRmlsZVJlZjsKY2xhc3MgRW1SZWN0OwpjbGFzcyBTZXNzaW9uRmls
ZTsKY2xhc3MgU3RNZW1vcnk7CgogCgppbnQgX3N0cmljbXAoY29uc3QgY2hhciAqczEsIGNvbnN0
IGNoYXIgKnMyKTsKaW50IF9zdHJuaWNtcChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIs
IGludCBuKTsKY2hhciogX3N0cmR1cCAoY29uc3QgY2hhciogcyk7CmNoYXIqIF9zdHJsd3IgKGNo
YXIqIHMpOwoKIAoKY2xhc3MgUGxhdGZvcm0KewoJcHVibGljOgoKCQlzdGF0aWMgdm9pZCAJCQlJ
bml0aWFsaXplCQkJCSh2b2lkKTsKCQlzdGF0aWMgdm9pZCAJCQlSZXNldAkJCQkJKHZvaWQpOwoJ
CXN0YXRpYyB2b2lkIAkJCVNhdmUJCQkJCShTZXNzaW9uRmlsZSYpOwoJCXN0YXRpYyB2b2lkIAkJ
CUxvYWQJCQkJCShTZXNzaW9uRmlsZSYpOwoJCXN0YXRpYyB2b2lkIAkJCURpc3Bvc2UgCQkJCSh2
b2lkKTsKCgkgCgoJCXN0YXRpYyBzdHJpbmcJCQlHZXRTdHJpbmcJCQkJKFN0ckNvZGUgaWQpOwoJ
CXN0YXRpYyBpbnQJCQkJR2V0SURGb3JFcnJvcgkJCShFcnJDb2RlIGVycm9yKTsKCQlzdGF0aWMg
aW50CQkJCUdldElERm9yUmVjb3ZlcnkJCShFcnJDb2RlIGVycm9yKTsKCQoJCXN0YXRpYyBzdHJp
bmcJCQlHZXRTaG9ydFZlcnNpb25TdHJpbmcJKHZvaWQpOwoKCSAKCgkJc3RhdGljIHZvaWQJCQkJ
Q29weVRvQ2xpcGJvYXJkCQkJKGNvbnN0IEJ5dGVMaXN0JiBwYWxtQ2hhcnMsCgkJCQkJCQkJCQkJ
CQkJIGNvbnN0IEJ5dGVMaXN0JiBob3N0Q2hhcnMpOwoJCXN0YXRpYyB2b2lkCQkJCUNvcHlGcm9t
Q2xpcGJvYXJkCQkoQnl0ZUxpc3QmIHBhbG1DaGFycywKCQkJCQkJCQkJCQkJCQkgQnl0ZUxpc3Qm
IGhvc3RDaGFycyk7CgoJCXN0YXRpYyB1aW50MTYJCQlSZW1hcEhvc3RDaGFyCQkJKHVpbnQ4IGhv
c3RFbmNvZGluZywgdWludDggZGV2aWNlRW5jb2RpbmcsIHVpbnQxNiBob3N0Q2hhcik7CgoJCXN0
YXRpYyB2b2lkCQkJCVJlbWFwSG9zdFRvUGFsbUNoYXJzCShjb25zdCBCeXRlTGlzdCYgaG9zdENo
YXJzLAoJCQkJCQkJCQkJCQkJCSBCeXRlTGlzdCYgcGFsbUNoYXJzKTsKCQlzdGF0aWMgdm9pZAkJ
CQlSZW1hcFBhbG1Ub0hvc3RDaGFycwkoY29uc3QgQnl0ZUxpc3QmIHBhbG1DaGFycywKCQkJCQkJ
CQkJCQkJCQkgQnl0ZUxpc3QmIGhvc3RDaGFycyk7CgoJIAoKCQlzdGF0aWMgdWludDMyCQkJR2V0
TWlsbGlzZWNvbmRzIAkJKHZvaWQpOwoKCSAKCgkJc3RhdGljIENTb2NrZXQqIAkJQ3JlYXRlRGVi
dWdnZXJTb2NrZXQJKHZvaWQpOwoJCXN0YXRpYyB2b2lkIAkJCUV4aXREZWJ1Z2dlcgkJCSh2b2lk
KTsKCgkgCgoJCXN0YXRpYyB2b2lkIAkJCVZpZXdEcmF3TGluZQkJCShpbnQgeFN0YXJ0LCBpbnQg
eVN0YXJ0LCBpbnQgeEVuZCwgaW50IHlFbmQpOwoJCXN0YXRpYyB2b2lkIAkJCVZpZXdEcmF3UGl4
ZWwJCQkoaW50IHhQb3MsIGludCB5UG9zKTsKCgkgCgoJCXN0YXRpYyBDYWxsUk9NVHlwZQkJU25k
RG9DbWQJCQkJKFNuZENvbW1hbmRUeXBlJik7CgkJc3RhdGljIHZvaWQJCQkJU3RvcFNvdW5kCQkJ
CSh2b2lkKTsKCQlzdGF0aWMgdm9pZAkJCQlCZWVwCQkJCQkodm9pZCk7CgoJIAoJCgkJc3RhdGlj
IEJvb2wJCQkJUGluVG9TY3JlZW4JCQkJKEVtUmVjdCYpOwoKCQlzdGF0aWMgdm9pZCAJCQlUb0hv
c3RFT0wJCQkJKFN0TWVtb3J5JiBkZXN0LCBsb25nJiBkZXN0TGVuLAoJCQkJCQkJCQkJCQkJCSBj
b25zdCBjaGFyKiBzcmMsIGxvbmcgc3JjTGVuKTsKCgoJCXN0YXRpYyBCb29sIAkJCVJlYWRST01G
aWxlUmVmZXJlbmNlCShDaHVua0ZpbGUmIGRvY0ZpbGUsCgkJCQkJCQkJCQkJCQkJIEVtRmlsZVJl
ZiYgZik7CgkJc3RhdGljIHZvaWQgCQkJV3JpdGVST01GaWxlUmVmZXJlbmNlCShDaHVua0ZpbGUm
IGRvY0ZpbGUsCgkJCQkJCQkJCQkJCQkJIGNvbnN0IEVtRmlsZVJlZiYgZik7CgoJCXN0YXRpYyB2
b2lkIAkJCURlbGF5CQkJCQkodm9pZCk7CgkJc3RhdGljIHZvaWQgCQkJQ3ljbGVTbG93bHkJCQkJ
KHZvaWQpOwoKCQlzdGF0aWMgdm9pZCoJCQlSZWFsQWxsb2NhdGVNZW1vcnkJIAkoc2l6ZV90IHNp
emUsIEJvb2wgY2xlYXIsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKTsKCQlzdGF0aWMgdm9p
ZCoJCQlSZWFsUmVhbGxvY01lbW9yeQkJKHZvaWQqIHAsIHNpemVfdCBzaXplLCBjb25zdCBjaGFy
KiBmaWxlLCBpbnQgbGluZSk7CgkJdGVtcGxhdGUgPGNsYXNzIFQ+CgkJc3RhdGljIHZvaWQgCQkJ
RGlzcG9zZU1lbW9yeQkJCShUKiYgcCkKCQkJCQkJCQl7CgkJCQkJCQkJCSAKCQkJCQkJCQkJIAoJ
CQkJCQkJCQkgCgkJCQkJCQkJCSAKCgkJCQkJCQkJCWlmIChwKQoJCQkJCQkJCQl7CgkJCQkJCQkJ
CQlSZWFsRGlzcG9zZU1lbW9yeSAoKHZvaWQqKSBwKTsKCQkJCQkJCQkJCXAgPSBfX251bGwgOwoJ
CQkJCQkJCQl9CgkJCQkJCQkJfQoJCXN0YXRpYyB2b2lkIAkJCVJlYWxEaXNwb3NlTWVtb3J5CQko
dm9pZCogcCk7CgoJCQkgCgkJCSAKCQl0ZW1wbGF0ZSA8Y2xhc3MgVD4KCQlzdGF0aWMgdm9pZCAJ
CQlEZWxldGVNZW1vcnkJCQkoVComIHApIHsgRGlzcG9zZU1lbW9yeShwKTsgfQoKCQl0ZW1wbGF0
ZSA8Y2xhc3MgVD4KCQlzdGF0aWMgdm9pZCAJCQlGcmVlTWVtb3J5CQkJCShUKiYgcCkgeyBEaXNw
b3NlTWVtb3J5KHApOyB9CgoJCXN0YXRpYyBCb29sCQkJCUZvcmNlU3RhcnR1cFNjcmVlbgkJKHZv
aWQpOwoJCXN0YXRpYyBCb29sIAkJCVN0b3BPblJlc2V0S2V5RG93bgkJKHZvaWQpOwoKCSAKCSAK
CSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCSAKCgkJc3RhdGljIEJvb2wJCQkJQ29sbGVjdE9wdGlv
bnMJCQkoaW50IGFyZ2MsIGNoYXIqKiBhcmd2LCBpbnQmIGksIGludCAoKmNiKShpbnQsIGNoYXIq
KiwgaW50JikpOwoJCXN0YXRpYyB2b2lkCQkJCVByaW50SGVscAkJCQkodm9pZCk7CgoJCXN0YXRp
YyB2b2lkIAkJCURlYnVnZ2VyCQkJCShjb25zdCBjaGFyKiA9IF9fbnVsbCApOwp9OwoKCgoKCgoK
CgoKCiMgMTk0ICIuLi9TcmNTaGFyZWQvUGxhdGZvcm0uaCIKCgoKCgoKCgoKCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL3NpZ25hbC5oIiAxIDMgNAogCiAKCiAKIAogCgogCgoKCgoKCgoKI3ByYWdtYSBp
ZGVudAkiQCgjKXNpZ25hbC5oCTEuMzgJOTkvMDgvMTAgU01JIgkKCgoKCgoKCgojIDEgIi91c3Iv
aW5jbHVkZS9pc28vc2lnbmFsX2lzby5oIiAxIDMgNAogCiAKCiAKIAogCgogCgoKCgogCgoKCgoK
CgoKCgoKCgoKI3ByYWdtYSBpZGVudAkiQCgjKXNpZ25hbF9pc28uaAkxLjEJOTkvMDgvMDkgU01J
IgogCgoKCgpleHRlcm4gIkMiIHsKCgoKCgoKdHlwZWRlZiBpbnQJc2lnX2F0b21pY190OwoKCgoK
ZXh0ZXJuICJDIiBTSUdfVFlQICBzaWduYWwoaW50LCBTSUdfVFlQICk7CgoKCmV4dGVybiBpbnQg
cmFpc2UoaW50KTsKCgoKCgoKCgoKCgoKCn0KCgoKIyAyNiAiL3Vzci9pbmNsdWRlL3NpZ25hbC5o
IiAyIDMgNAoKCgogCgoKCgoKCgoKCgpleHRlcm4gIkMiIHsKCgoKCgpleHRlcm4gY29uc3QgY2hh
cgkqKl9zeXNfc2lnbGlzdHA7CSAKZXh0ZXJuIGNvbnN0IGludAlfc3lzX3NpZ2xpc3RuOwkJIAoK
CgoKCgoKCgpleHRlcm4gaW50IGtpbGwocGlkX3QsIGludCk7CmV4dGVybiBpbnQgc2lnYWN0aW9u
KGludCwgY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiAqLCBzdHJ1Y3Qgc2lnYWN0aW9uICopOwoKZXh0
ZXJuIGludCBzaWdhZGRzZXQoc2lnc2V0X3QgKiwgaW50KTsKZXh0ZXJuIGludCBzaWdkZWxzZXQo
c2lnc2V0X3QgKiwgaW50KTsKZXh0ZXJuIGludCBzaWdlbXB0eXNldChzaWdzZXRfdCAqKTsKZXh0
ZXJuIGludCBzaWdmaWxsc2V0KHNpZ3NldF90ICopOwpleHRlcm4gaW50IHNpZ2lzbWVtYmVyKGNv
bnN0IHNpZ3NldF90ICosIGludCk7CgpleHRlcm4gaW50IHNpZ3BlbmRpbmcoc2lnc2V0X3QgKik7
CmV4dGVybiBpbnQgc2lncHJvY21hc2soaW50LCBjb25zdCBzaWdzZXRfdCAqLCBzaWdzZXRfdCAq
KTsKZXh0ZXJuIGludCBzaWdzdXNwZW5kKGNvbnN0IHNpZ3NldF90ICopOwoKCgoKIyAxICIvdXNy
L2luY2x1ZGUvc3lzL3Byb2NzZXQuaCIgMSAzIDQKIAoKCgoKIAogCgogCiAKIAoKCgoKI3ByYWdt
YSBpZGVudAkiQCgjKXByb2NzZXQuaAkxLjIwCTAwLzAyLzE0IFNNSSIJCgoKZXh0ZXJuICJDIiB7
CgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKdHlwZWRlZiBlbnVtCgoJaWR0eXBlCQkgCgoJCXsKCVBf
UElELAkJIAoJUF9QUElELAkJIAoJUF9QR0lELAkJIAoJCQkgCglQX1NJRCwJCSAKCVBfQ0lELAkJ
IAoJUF9VSUQsCQkgCglQX0dJRCwJCSAKCVBfQUxMLAkJIAoJUF9MV1BJRCwJIAoJUF9UQVNLSUQs
CSAKCVBfUFJPSklECSAKfSBpZHR5cGVfdDsKCgogCgoKCgoKdHlwZWRlZiBlbnVtIGlkb3AgewoJ
UE9QX0RJRkYsCSAKCQkJIAoJCQkgCglQT1BfQU5ELAkgCgkJCSAKCQkJIAoJUE9QX09SLAkJIAoJ
CQkgCgkJCSAKCVBPUF9YT1IJCSAKCQkJIAoJCQkgCn0gaWRvcF90OwoKCiAKCgoKCnR5cGVkZWYg
c3RydWN0IHByb2NzZXQgewoJaWRvcF90CQlwX29wOwkgCgkJCQkgCgkJCQkgCgkJCQkgCgoJaWR0
eXBlX3QJcF9saWR0eXBlOwoJCQkJIAoJCQkJIAoJaWRfdAkJcF9saWQ7CSAKCglpZHR5cGVfdAlw
X3JpZHR5cGU7CgkJCQkgCgkJCQkgCglpZF90CQlwX3JpZDsJIAp9IHByb2NzZXRfdDsKCiAKCgoK
CgoKCgoKCgoKIyAxMjkgIi91c3IvaW5jbHVkZS9zeXMvcHJvY3NldC5oIiAzIDQKCgoKfQoKCgoj
IDczICIvdXNyL2luY2x1ZGUvc2lnbmFsLmgiIDIgMyA0CgpleHRlcm4gaW50IGdzaWduYWwoaW50
KTsKZXh0ZXJuIGludCAoKnNzaWduYWwoaW50LCBpbnQgKCopKGludCkpKShpbnQpOwpleHRlcm4g
aW50IHNpZ3NlbmQoaWR0eXBlX3QsIGlkX3QsIGludCk7CmV4dGVybiBpbnQgc2lnc2VuZHNldChj
b25zdCBwcm9jc2V0X3QgKiwgaW50KTsKZXh0ZXJuIGludCBzaWcyc3RyKGludCwgY2hhciAqKTsK
ZXh0ZXJuIGludCBzdHIyc2lnKGNvbnN0IGNoYXIgKiwgaW50ICopOwoKCgoKCgpleHRlcm4gdm9p
ZCAoKmJzZF9zaWduYWwoaW50LCB2b2lkICgqKShpbnQpKSkoaW50KTsKZXh0ZXJuIGludCBraWxs
cGcocGlkX3QsIGludCk7CmV4dGVybiBpbnQgc2lnaW50ZXJydXB0KGludCwgaW50KTsKZXh0ZXJu
IGludCBzaWdhbHRzdGFjayhjb25zdCBzdGFja190ICosIHN0YWNrX3QgKik7CmV4dGVybiBpbnQg
c2lnaG9sZChpbnQpOwpleHRlcm4gaW50IHNpZ2lnbm9yZShpbnQpOwpleHRlcm4gaW50IHNpZ3Bh
dXNlKGludCk7CmV4dGVybiBpbnQgc2lncmVsc2UoaW50KTsKZXh0ZXJuIHZvaWQgKCpzaWdzZXQo
aW50LCB2b2lkICgqKShpbnQpKSkoaW50KTsKZXh0ZXJuIGludCBzaWdzdGFjayhzdHJ1Y3Qgc2ln
c3RhY2sgKiwgc3RydWN0IHNpZ3N0YWNrICopOwoKCgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2tp
bGwocHRocmVhZF90LCBpbnQpOwpleHRlcm4gaW50IHB0aHJlYWRfc2lnbWFzayhpbnQsIGNvbnN0
IHNpZ3NldF90ICosIHNpZ3NldF90ICopOwpleHRlcm4gaW50IHNpZ3dhaXRpbmZvKGNvbnN0IHNp
Z3NldF90ICosIHNpZ2luZm9fdCAqKTsKZXh0ZXJuIGludCBzaWd0aW1lZHdhaXQoY29uc3Qgc2ln
c2V0X3QgKiwgc2lnaW5mb190ICosIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqKTsKZXh0ZXJuIGlu
dCBzaWdxdWV1ZShwaWRfdCwgaW50LCBjb25zdCB1bmlvbiBzaWd2YWwpOwoKCiMgMTc3ICIvdXNy
L2luY2x1ZGUvc2lnbmFsLmgiIDMgNAoKCiAKCgoKCgoKCgoKIyAyMDQgIi91c3IvaW5jbHVkZS9z
aWduYWwuaCIgMyA0CgoKZXh0ZXJuIGludCBzaWd3YWl0KHNpZ3NldF90ICopOwoKCgoKIyAyMzcg
Ii91c3IvaW5jbHVkZS9zaWduYWwuaCIgMyA0CgoKCgoKfQoKCgojIDIwNyAiLi4vU3JjU2hhcmVk
L1BsYXRmb3JtLmgiIDIKCgoJaW5saW5lIHZvaWQgUGxhdGZvcm06OkRlYnVnZ2VyIChjb25zdCBj
aGFyKikKCXsKCQlyYWlzZSAoNSApOwoJfQoJCgoKCgoKIyAyMCAiLi4vU3JjU2hhcmVkL1Nlc3Np
b25GaWxlLmgiIDIKCgpzdHJ1Y3QgSHdySmVycnlQTERUeXBlOwpzdHJ1Y3QgSHdyTTY4MzI4VHlw
ZTsKc3RydWN0IEh3ck02OEVaMzI4VHlwZTsKc3RydWN0IEh3ck02OFZaMzI4VHlwZTsKc3RydWN0
IEh3ck02OFNaMzI4VHlwZTsKc3RydWN0IHJlZ3N0cnVjdDsKc3RydWN0IFNFRDEzNzVSZWdzVHlw
ZTsKc3RydWN0IFNFRDEzNzZSZWdzVHlwZTsKCmNsYXNzIFNlc3Npb25GaWxlCnsKCXB1YmxpYzoK
CQl0eXBlZGVmIHVpbnQzMiBCdWdGaXhlczsKCQllbnVtIEJ1Z0ZpeAoJCXsKCQkJa0J1Z0J5dGVz
d2FwcGVkU3RydWN0cyA9IDEJIAoJCQkJCQkJCQkJIAoJCX07CgoJcHVibGljOgoJCQkJCQkJCVNl
c3Npb25GaWxlCQkJCShDaHVua0ZpbGUmIGYpOwoJCQkJCQkJCX5TZXNzaW9uRmlsZQkJCSh2b2lk
KTsKCgkJIAoKCQlCb29sCQkJCQlSZWFkRGV2aWNlCQkJCShFbURldmljZSYpOwoKCQlCb29sCQkJ
CQlSZWFkUk9NRmlsZVJlZmVyZW5jZQkoRW1GaWxlUmVmJik7CgoJCUJvb2wJCQkJCVJlYWREQmFs
bFJlZ3MJCQkocmVnc3RydWN0Jik7CgkJQm9vbAkJCQkJUmVhZEh3ckRCYWxsVHlwZQkJKEh3ck02
ODMyOFR5cGUmKTsKCQlCb29sCQkJCQlSZWFkSHdyREJhbGxFWlR5cGUJCShId3JNNjhFWjMyOFR5
cGUmKTsKCQlCb29sCQkJCQlSZWFkSHdyREJhbGxWWlR5cGUJCShId3JNNjhWWjMyOFR5cGUmKTsK
CQlCb29sCQkJCQlSZWFkREJhbGxTdGF0ZQkJCShDaHVuayYgY2h1bmspIHsgcmV0dXJuIGZGaWxl
LlJlYWRDaHVuayAoa0RCU3RhdGUsIGNodW5rKTsgfQoJCUJvb2wJCQkJCVJlYWREQmFsbEVaU3Rh
dGUJCShDaHVuayYgY2h1bmspIHsgcmV0dXJuIGZGaWxlLlJlYWRDaHVuayAoa0RCRVpTdGF0ZSwg
Y2h1bmspOyB9CgkJQm9vbAkJCQkJUmVhZERCYWxsVlpTdGF0ZQkJKENodW5rJiBjaHVuaykgeyBy
ZXR1cm4gZkZpbGUuUmVhZENodW5rIChrREJFWlN0YXRlLCBjaHVuayk7IH0KCgkJQm9vbAkJCQkJ
UmVhZFNFRDEzNzVSZWdzVHlwZQkJKFNFRDEzNzVSZWdzVHlwZSYpOwoJCUJvb2wJCQkJCVJlYWRT
RUQxMzc1SW1hZ2UJCSh2b2lkKik7CgkJQm9vbAkJCQkJUmVhZFNFRDEzNzVQYWxldHRlCQkodWlu
dDE2IFsyNTZdKTsKCgkJQm9vbAkJCQkJUmVhZFNFRDEzNzZSZWdzVHlwZQkJKFNFRDEzNzZSZWdz
VHlwZSYpOwoJCUJvb2wJCQkJCVJlYWRTRUQxMzc2UGFsZXR0ZQkJKFJHQlR5cGUgWzI1Nl0pOwoK
CQlCb29sCQkJCQlSZWFkTWVkaWFRUmVnc1R5cGUJCShDaHVuayYgY2h1bmspIHsgcmV0dXJuIGZG
aWxlLlJlYWRDaHVuayAoa01lZGlhUVJlZ3MsIGNodW5rKTsgfQoJCUJvb2wJCQkJCVJlYWRNZWRp
YVFJbWFnZQkJCSh2b2lkKik7CgkJQm9vbAkJCQkJUmVhZE1lZGlhUVBhbGV0dGUJCShSR0JUeXBl
IFsyNTZdKTsKCgkJQm9vbAkJCQkJUmVhZFBMRFJlZ3NUeXBlCQkJKEh3ckplcnJ5UExEVHlwZSYp
OwoKCQlCb29sCQkJCQlSZWFkR3JlbWxpbkluZm8JCQkoQ2h1bmsmIGNodW5rKSB7IHJldHVybiBm
RmlsZS5SZWFkQ2h1bmsgKGtHcmVtbGluSW5mbywgY2h1bmspOyB9CgkJQm9vbAkJCQkJUmVhZEdy
ZW1saW5IaXN0b3J5CQkoQ2h1bmsmIGNodW5rKSB7IHJldHVybiB0aGlzLT5SZWFkQ2h1bmsgKGtH
cmVtbGluSGlzdG9yeSwgY2h1bmssIGtHemlwQ29tcHJlc3Npb24pOyB9CgkJQm9vbAkJCQkJUmVh
ZERlYnVnSW5mbwkJCShDaHVuayYgY2h1bmspIHsgcmV0dXJuIGZGaWxlLlJlYWRDaHVuayAoa0Rl
YnVnSW5mbywgY2h1bmspOyB9CgkJQm9vbAkJCQkJUmVhZE1ldGFJbmZvCQkJKENodW5rJiBjaHVu
aykgeyByZXR1cm4gZkZpbGUuUmVhZENodW5rIChrTWV0YUluZm8sIGNodW5rKTsgfQoJCUJvb2wJ
CQkJCVJlYWRQYXRjaEluZm8JCQkoQ2h1bmsmIGNodW5rKSB7IHJldHVybiBmRmlsZS5SZWFkQ2h1
bmsgKGtQYXRjaEluZm8sIGNodW5rKTsgfQoJCUJvb2wJCQkJCVJlYWRQcm9maWxlSW5mbwkJCShD
aHVuayYgY2h1bmspIHsgcmV0dXJuIGZGaWxlLlJlYWRDaHVuayAoa1Byb2ZpbGVJbmZvLCBjaHVu
ayk7IH0KCQlCb29sCQkJCQlSZWFkTG9nZ2luZ0luZm8JCQkoQ2h1bmsmIGNodW5rKSB7IHJldHVy
biBmRmlsZS5SZWFkQ2h1bmsgKGtMb2dnaW5nSW5mbywgY2h1bmspOyB9CgkJQm9vbAkJCQkJUmVh
ZFN0YWNrSW5mbwkJCShDaHVuayYgY2h1bmspIHsgcmV0dXJuIGZGaWxlLlJlYWRDaHVuayAoa1N0
YWNrSW5mbywgY2h1bmspOyB9CgkJQm9vbAkJCQkJUmVhZEhlYXBJbmZvCQkJKENodW5rJiBjaHVu
aykgeyByZXR1cm4gZkZpbGUuUmVhZENodW5rIChrSGVhcEluZm8sIGNodW5rKTsgfQoKCQlCb29s
CQkJCQlSZWFkUGxhdGZvcm1JbmZvCQkoQ2h1bmsmIGNodW5rKSB7IHJldHVybiBmRmlsZS5SZWFk
Q2h1bmsgKGtQbGF0Zm9ybUluZm8sIGNodW5rKTsgfQoJCUJvb2wJCQkJCVJlYWRQbGF0Zm9ybUlu
Zm9NYWMJCShDaHVuayYgY2h1bmspIHsgcmV0dXJuIGZGaWxlLlJlYWRDaHVuayAoa1BsYXRmb3Jt
TWFjLCBjaHVuayk7IH0KCQlCb29sCQkJCQlSZWFkUGxhdGZvcm1JbmZvV2luCQkoQ2h1bmsmIGNo
dW5rKSB7IHJldHVybiBmRmlsZS5SZWFkQ2h1bmsgKGtQbGF0Zm9ybVdpbmRvd3MsIGNodW5rKTsg
fQoJCUJvb2wJCQkJCVJlYWRQbGF0Zm9ybUluZm9Vbml4CShDaHVuayYgY2h1bmspIHsgcmV0dXJu
IGZGaWxlLlJlYWRDaHVuayAoa1BsYXRmb3JtVW5peCwgY2h1bmspOyB9CgoJCUJvb2wJCQkJCVJl
YWRSQU1JbWFnZQkJCSh2b2lkKik7CgkJQm9vbAkJCQkJUmVhZE1ldGFSQU1JbWFnZQkJKHZvaWQq
KTsKCQlCb29sCQkJCQlSZWFkTWV0YVJPTUltYWdlCQkodm9pZCopOwoKCQlCb29sCQkJCQlSZWFk
QnVnRml4ZXMJCQkoQnVnRml4ZXMmKTsKCgkJIAoKCQl2b2lkCQkJCQlXcml0ZURldmljZQkJCQko
Y29uc3QgRW1EZXZpY2UmKTsKCgkJdm9pZAkJCQkJV3JpdGVST01GaWxlUmVmZXJlbmNlCShjb25z
dCBFbUZpbGVSZWYmKTsKCgkJdm9pZAkJCQkJV3JpdGVEQmFsbFJlZ3MJCQkoY29uc3QgcmVnc3Ry
dWN0Jik7CgkJdm9pZAkJCQkJV3JpdGVId3JEQmFsbFR5cGUJCShjb25zdCBId3JNNjgzMjhUeXBl
Jik7CgkJdm9pZAkJCQkJV3JpdGVId3JEQmFsbEVaVHlwZQkJKGNvbnN0IEh3ck02OEVaMzI4VHlw
ZSYpOwoJCXZvaWQJCQkJCVdyaXRlSHdyREJhbGxWWlR5cGUJCShjb25zdCBId3JNNjhWWjMyOFR5
cGUmKTsKCQl2b2lkCQkJCQlXcml0ZURCYWxsU3RhdGUJCQkoY29uc3QgQ2h1bmsmIGNodW5rKSB7
IGZGaWxlLldyaXRlQ2h1bmsgKGtEQlN0YXRlLCBjaHVuayk7IH0KCQl2b2lkCQkJCQlXcml0ZURC
YWxsRVpTdGF0ZQkJKGNvbnN0IENodW5rJiBjaHVuaykgeyBmRmlsZS5Xcml0ZUNodW5rIChrREJF
WlN0YXRlLCBjaHVuayk7IH0KCQl2b2lkCQkJCQlXcml0ZURCYWxsVlpTdGF0ZQkJKGNvbnN0IENo
dW5rJiBjaHVuaykgeyBmRmlsZS5Xcml0ZUNodW5rIChrREJFWlN0YXRlLCBjaHVuayk7IH0KCgkJ
dm9pZAkJCQkJV3JpdGVTRUQxMzc1UmVnc1R5cGUJKGNvbnN0IFNFRDEzNzVSZWdzVHlwZSYpOwoJ
CXZvaWQJCQkJCVdyaXRlU0VEMTM3NUltYWdlCQkoY29uc3Qgdm9pZCosIHVpbnQzMik7CgkJdm9p
ZAkJCQkJV3JpdGVTRUQxMzc1UGFsZXR0ZQkJKGNvbnN0IHVpbnQxNiBbMjU2XSk7CgoJCXZvaWQJ
CQkJCVdyaXRlU0VEMTM3NlJlZ3NUeXBlCShjb25zdCBTRUQxMzc2UmVnc1R5cGUmKTsKCQl2b2lk
CQkJCQlXcml0ZVNFRDEzNzZQYWxldHRlCQkoY29uc3QgUkdCVHlwZSBbMjU2XSk7CgoJCXZvaWQJ
CQkJCVdyaXRlTWVkaWFRUmVnc1R5cGUJCShjb25zdCBDaHVuayYgY2h1bmspIHsgZkZpbGUuV3Jp
dGVDaHVuayAoa01lZGlhUVJlZ3MsIGNodW5rKTsgfQoJCXZvaWQJCQkJCVdyaXRlTWVkaWFRSW1h
Z2UJCShjb25zdCB2b2lkKiwgdWludDMyKTsKCQl2b2lkCQkJCQlXcml0ZU1lZGlhUVBhbGV0dGUJ
CShjb25zdCBSR0JUeXBlIFsyNTZdKTsKCgkJdm9pZAkJCQkJV3JpdGVQTERSZWdzVHlwZQkJKGNv
bnN0IEh3ckplcnJ5UExEVHlwZSYpOwoKCQl2b2lkCQkJCQlXcml0ZUdyZW1saW5JbmZvCQkoY29u
c3QgQ2h1bmsmIGNodW5rKSB7IGZGaWxlLldyaXRlQ2h1bmsgKGtHcmVtbGluSW5mbywgY2h1bmsp
OyB9CgkJdm9pZAkJCQkJV3JpdGVHcmVtbGluSGlzdG9yeQkJKGNvbnN0IENodW5rJiBjaHVuaykg
eyB0aGlzLT5Xcml0ZUNodW5rIChrR3JlbWxpbkhpc3RvcnksIGNodW5rLCBrR3ppcENvbXByZXNz
aW9uKTsgfQoJCXZvaWQJCQkJCVdyaXRlRGVidWdJbmZvCQkJKGNvbnN0IENodW5rJiBjaHVuaykg
eyBmRmlsZS5Xcml0ZUNodW5rIChrRGVidWdJbmZvLCBjaHVuayk7IH0KCQl2b2lkCQkJCQlXcml0
ZU1ldGFJbmZvCQkJKGNvbnN0IENodW5rJiBjaHVuaykgeyBmRmlsZS5Xcml0ZUNodW5rIChrTWV0
YUluZm8sIGNodW5rKTsgfQoJCXZvaWQJCQkJCVdyaXRlUGF0Y2hJbmZvCQkJKGNvbnN0IENodW5r
JiBjaHVuaykgeyBmRmlsZS5Xcml0ZUNodW5rIChrUGF0Y2hJbmZvLCBjaHVuayk7IH0KCQl2b2lk
CQkJCQlXcml0ZVByb2ZpbGVJbmZvCQkoY29uc3QgQ2h1bmsmIGNodW5rKSB7IGZGaWxlLldyaXRl
Q2h1bmsgKGtQcm9maWxlSW5mbywgY2h1bmspOyB9CgkJdm9pZAkJCQkJV3JpdGVMb2dnaW5nSW5m
bwkJKGNvbnN0IENodW5rJiBjaHVuaykgeyBmRmlsZS5Xcml0ZUNodW5rIChrTG9nZ2luZ0luZm8s
IGNodW5rKTsgfQoJCXZvaWQJCQkJCVdyaXRlU3RhY2tJbmZvCQkJKGNvbnN0IENodW5rJiBjaHVu
aykgeyBmRmlsZS5Xcml0ZUNodW5rIChrU3RhY2tJbmZvLCBjaHVuayk7IH0KCQl2b2lkCQkJCQlX
cml0ZUhlYXBJbmZvCQkJKGNvbnN0IENodW5rJiBjaHVuaykgeyBmRmlsZS5Xcml0ZUNodW5rIChr
SGVhcEluZm8sIGNodW5rKTsgfQoKCQl2b2lkCQkJCQlXcml0ZVBsYXRmb3JtSW5mbwkJKGNvbnN0
IENodW5rJiBjaHVuaykgeyBmRmlsZS5Xcml0ZUNodW5rIChrUGxhdGZvcm1JbmZvLCBjaHVuayk7
IH0KCQl2b2lkCQkJCQlXcml0ZVBsYXRmb3JtSW5mb01hYwkoY29uc3QgQ2h1bmsmIGNodW5rKSB7
IGZGaWxlLldyaXRlQ2h1bmsgKGtQbGF0Zm9ybU1hYywgY2h1bmspOyB9CgkJdm9pZAkJCQkJV3Jp
dGVQbGF0Zm9ybUluZm9XaW4JKGNvbnN0IENodW5rJiBjaHVuaykgeyBmRmlsZS5Xcml0ZUNodW5r
IChrUGxhdGZvcm1XaW5kb3dzLCBjaHVuayk7IH0KCQl2b2lkCQkJCQlXcml0ZVBsYXRmb3JtSW5m
b1VuaXgJKGNvbnN0IENodW5rJiBjaHVuaykgeyBmRmlsZS5Xcml0ZUNodW5rIChrUGxhdGZvcm1V
bml4LCBjaHVuayk7IH0KCgkJdm9pZAkJCQkJV3JpdGVSQU1JbWFnZQkJCShjb25zdCB2b2lkKiwg
dWludDMyKTsKCQl2b2lkCQkJCQlXcml0ZU1ldGFSQU1JbWFnZQkJKGNvbnN0IHZvaWQqLCB1aW50
MzIpOwoJCXZvaWQJCQkJCVdyaXRlTWV0YVJPTUltYWdlCQkoY29uc3Qgdm9pZCosIHVpbnQzMik7
CgoJCXZvaWQJCQkJCVdyaXRlQnVnRml4ZXMJCQkoY29uc3QgQnVnRml4ZXMmKTsKCgkJIAoKCQlC
b29sCQkJCQlSZWFkQ29uZmlndXJhdGlvbgkJKENvbmZpZ3VyYXRpb24mKTsKCQlsb25nCQkJCQlH
ZXRSQU1JbWFnZVNpemUJCQkodm9pZCk7CgoJCSAKCQkgCgkJIAoJCSAKCgkJQ29uZmlndXJhdGlv
bgkJCUdldENvbmZpZ3VyYXRpb24JCSh2b2lkKSB7IHJldHVybiBmQ2ZnOyB9CgoJCXZvaWQJCQkJ
CVNldENhblJlbG9hZAkJCShCb29sKTsKCQlCb29sCQkJCQlHZXRDYW5SZWxvYWQJCQkodm9pZCk7
CgoJCXZvaWQJCQkJCUZpeEJ1ZwkJCQkJKEJ1Z0ZpeCk7CgkJQm9vbAkJCQkJSW5jbHVkZXNCdWdG
aXgJCQkoQnVnRml4KTsKCglwcml2YXRlOgoJCWVudW0gQ29tcHJlc3Npb25UeXBlCgkJewoJCQlr
Tm9Db21wcmVzc2lvbiwKCQkJa1JMRUNvbXByZXNzaW9uLAoJCQlrR3ppcENvbXByZXNzaW9uCgkJ
fTsKCgkJQm9vbAkJCQkJUmVhZENodW5rCQkJCShDaHVua0ZpbGU6OlRhZyB0YWcsCgkJCQkJCQkJ
CQkJCQkJIHZvaWQqLAoJCQkJCQkJCQkJCQkJCSBDb21wcmVzc2lvblR5cGUpOwoKCQlCb29sCQkJ
CQlSZWFkQ2h1bmsJCQkJKENodW5rRmlsZTo6VGFnIHRhZywKCQkJCQkJCQkJCQkJCQkgQ2h1bmsm
IGNodW5rLAoJCQkJCQkJCQkJCQkJCSBDb21wcmVzc2lvblR5cGUpOwoKCQl2b2lkCQkJCQlXcml0
ZUNodW5rCQkJCShDaHVua0ZpbGU6OlRhZyB0YWcsCgkJCQkJCQkJCQkJCQkJIHVpbnQzMiwKCQkJ
CQkJCQkJCQkJCQkgY29uc3Qgdm9pZCosCgkJCQkJCQkJCQkJCQkJIENvbXByZXNzaW9uVHlwZSk7
CgoJCXZvaWQJCQkJCVdyaXRlQ2h1bmsJCQkJKENodW5rRmlsZTo6VGFnIHRhZywKCQkJCQkJCQkJ
CQkJCQkgY29uc3QgQ2h1bmsmIGNodW5rLAoJCQkJCQkJCQkJCQkJCSBDb21wcmVzc2lvblR5cGUp
OwoKCQkgCgkJZnJpZW5kIEJvb2wgUGxhdGZvcm06OlJlYWRST01GaWxlUmVmZXJlbmNlIChDaHVu
a0ZpbGUmLCBFbUZpbGVSZWYmKTsKCQlmcmllbmQgdm9pZCBQbGF0Zm9ybTo6V3JpdGVST01GaWxl
UmVmZXJlbmNlIChDaHVua0ZpbGUmLCBjb25zdCBFbUZpbGVSZWYmKTsKCgkJZW51bQoJCXsKCQkJ
a0RldmljZVR5cGUJCQk9ICdEVHlwJywJIAoJCQlrRGV2aWNlVHlwZVN0cmluZwk9ICdEU3RyJywJ
IAoKCQkJa1JPTUFsaWFzVGFnCQk9ICdST01hJywJIAoJCQlrUk9NTmFtZVRhZwkJCT0gJ1JPTW4n
LAkgCgkJCWtST01XaW5kb3dzUGF0aFRhZwk9ICdST01wJywJIAoJCQlrUk9NVW5peFBhdGhUYWcJ
ICAgCT0gJ1JPTXUnLAkgCgoJCQlrQ1BVUmVncwkJCT0gJ0NyZWcnLAkgCgkJCWtEQlJlZ3MJCQkJ
PSAnREIgICcsCSAKCQkJa0RCRVpSZWdzCQkJPSAnREJFWicsCSAKCQkJa0RCVlpSZWdzCQkJPSAn
REJWWicsCSAKCQkJa0RCU3RhdGUJCQk9ICdEU3Q4JywJIAoJCQlrREJFWlN0YXRlCQkJPSAnRVN0
OCcsCSAKCQkJa0RCVlpTdGF0ZQkJCT0gJ1ZTdDgnLAkgCgoJCQlrU0VEMTM3NVJlZ3MJCT0gJzVy
ZWcnLAkgCgkJCWtTRUQxMzc1SW1hZ2UJCT0gJzVyYW0nLAkgCgkJCWtTRUQxMzc1UGFsZXR0ZQkJ
PSAnNWNsdCcsCSAKCgkJCWtTRUQxMzc2UmVncwkJPSAnNnJlZycsCSAKCQkJa1NFRDEzNzZQYWxl
dHRlCQk9ICc2Y2x0JywJIAoKCQkJa01lZGlhUVJlZ3MJCQk9ICdNUXJnJywJIAoJCQlrTWVkaWFR
SW1hZ2UJCT0gJ01RaW0nLAkgCgkJCWtNZWRpYVFQYWxldHRlCQk9ICdNUWNsJywJIAoKCQkJa1BM
RFJlZ3MJCQk9ICdwbGQgJywJIAoKCQkJa0dyZW1saW5JbmZvCQk9ICdncmVtJywJIAoJCQlrR3Jl
bWxpbkhpc3RvcnkJCT0gJ2hpc3QnLAkgCgkJCWtEZWJ1Z0luZm8JCQk9ICdkYnVnJywJIAoJCQlr
TWV0YUluZm8JCQk9ICdtZXRhJywJIAoJCQlrUGF0Y2hJbmZvCQkJPSAncHRjaCcsCSAKCQkJa1By
b2ZpbGVJbmZvCQk9ICdwcm9mJywJIAoJCQlrTG9nZ2luZ0luZm8JCT0gJ2xvZyAnLAkgCgkJCWtT
dGFja0luZm8JCQk9ICdzdGFrJywJIAoJCQlrSGVhcEluZm8JCQk9ICdoZWFwJywJIAoKCQkJa1Bs
YXRmb3JtSW5mbwkJPSAncGxhdCcsCSAKCQkJa1BsYXRmb3JtTWFjCQk9ICdtYWMgJywJIAoJCQlr
UGxhdGZvcm1XaW5kb3dzCT0gJ3dpbmQnLAkgCgkJCWtQbGF0Zm9ybVVuaXgJCT0gJ3VuaXgnLAkg
CgoJCQlrVGltZURlbHRhCQkJPSAnVGltZScsCSAKCQkJCQkJCQkJCQkgCgoJCQlrUkFNRGF0YVRh
ZwkJCT0gJ3pyYW0nLAkgCgkJCWtNZXRhUkFNRGF0YVRhZwkJPSAnem1ybScsCSAKCQkJa01ldGFS
T01EYXRhVGFnCQk9ICd6bXJvJywJIAoKCQkJa0J1Z3NUYWcJCQk9ICdidWd6JywJIAoJCQkKCQkJ
a1JMRVJBTURhdGFUYWcJCT0gJ2NyYW0nLAkgCgkJCWtSTEVNZXRhUkFNRGF0YVRhZwk9ICdtcmFt
JywJIAoJCQlrVW5jb21wUkFNRGF0YVRhZwk9ICdyYW0gJwkgCgkJfTsKCglwcml2YXRlOgoJCUNo
dW5rRmlsZSYJCQkJZkZpbGU7CgkJQm9vbAkJCQkJZkNhblJlbG9hZDsKCQlDb25maWd1cmF0aW9u
CQkJZkNmZzsKCQlib29sCQkJCQlmUmVhZEJ1Z0ZpeGVzOwoJCWJvb2wJCQkJCWZDaGFuZ2VkQnVn
Rml4ZXM7CgkJQnVnRml4ZXMJCQkJZkJ1Z0ZpeGVzOwp9OwoKCiMgMzEgIi4vLi4vU3JjU2hhcmVk
L01ldGFNZW1vcnkuY3BwIiAyCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2FsZ29yaXRobSIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIv
Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9zdGxfdGVtcGJ1Zi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKIAoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KcGFpcjxfVHAqLCBwdHJkaWZmX3Q+IApfX2dldF90
ZW1wb3JhcnlfYnVmZmVyKHB0cmRpZmZfdCBfX2xlbiwgX1RwKikKewogIGlmIChfX2xlbiA+IHB0
cmRpZmZfdCgyMTQ3NDgzNjQ3ICAgLyBzaXplb2YoX1RwKSkpCiAgICBfX2xlbiA9IDIxNDc0ODM2
NDcgICAvIHNpemVvZihfVHApOwoKICB3aGlsZSAoX19sZW4gPiAwKSB7CiAgICBfVHAqIF9fdG1w
ID0gKF9UcCopIG1hbGxvYygoc2l6ZV90KV9fbGVuICogc2l6ZW9mKF9UcCkpOwogICAgaWYgKF9f
dG1wICE9IDApCiAgICAgIHJldHVybiBwYWlyPF9UcCosIHB0cmRpZmZfdD4oX190bXAsIF9fbGVu
KTsKICAgIF9fbGVuIC89IDI7CiAgfQoKICByZXR1cm4gcGFpcjxfVHAqLCBwdHJkaWZmX3Q+KChf
VHAqKTAsIDApOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSBwYWlyPF9UcCosIHB0
cmRpZmZfdD4gZ2V0X3RlbXBvcmFyeV9idWZmZXIocHRyZGlmZl90IF9fbGVuKSB7CiAgcmV0dXJu
IF9fZ2V0X3RlbXBvcmFyeV9idWZmZXIoX19sZW4sIChfVHAqKSAwKTsKfQoKCgogCiAKIAogCiAK
dGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIHBhaXI8X1RwKiwgcHRyZGlmZl90PiBnZXRfdGVt
cG9yYXJ5X2J1ZmZlcihwdHJkaWZmX3QgX19sZW4sIF9UcCopIHsKICByZXR1cm4gX19nZXRfdGVt
cG9yYXJ5X2J1ZmZlcihfX2xlbiwgKF9UcCopIDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgp2
b2lkIHJldHVybl90ZW1wb3JhcnlfYnVmZmVyKF9UcCogX19wKSB7CiAgZnJlZShfX3ApOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvciwgY2xhc3MgX1RwPgpjbGFzcyBfVGVtcG9y
YXJ5X2J1ZmZlciB7CnByaXZhdGU6CiAgcHRyZGlmZl90ICBfTV9vcmlnaW5hbF9sZW47CiAgcHRy
ZGlmZl90ICBfTV9sZW47CiAgX1RwKiAgICAgICBfTV9idWZmZXI7CgogIHZvaWQgX01fYWxsb2Nh
dGVfYnVmZmVyKCkgewogICAgX01fb3JpZ2luYWxfbGVuID0gX01fbGVuOwogICAgX01fYnVmZmVy
ID0gMDsKCiAgICBpZiAoX01fbGVuID4gKHB0cmRpZmZfdCkoMjE0NzQ4MzY0NyAgIC8gc2l6ZW9m
KF9UcCkpKQogICAgICBfTV9sZW4gPSAyMTQ3NDgzNjQ3ICAgLyBzaXplb2YoX1RwKTsKCiAgICB3
aGlsZSAoX01fbGVuID4gMCkgewogICAgICBfTV9idWZmZXIgPSAoX1RwKikgbWFsbG9jKF9NX2xl
biAqIHNpemVvZihfVHApKTsKICAgICAgaWYgKF9NX2J1ZmZlcikKICAgICAgICBicmVhazsKICAg
ICAgX01fbGVuIC89IDI7CiAgICB9CiAgfQoKICB2b2lkIF9NX2luaXRpYWxpemVfYnVmZmVyKGNv
bnN0IF9UcCYsIF9fdHJ1ZV90eXBlKSB7fQogIHZvaWQgX01faW5pdGlhbGl6ZV9idWZmZXIoY29u
c3QgX1RwJiB2YWwsIF9fZmFsc2VfdHlwZSkgewogICAgdW5pbml0aWFsaXplZF9maWxsX24oX01f
YnVmZmVyLCBfTV9sZW4sIHZhbCk7CiAgfQoKcHVibGljOgogIHB0cmRpZmZfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gX01fbGVuOyB9CiAgcHRyZGlmZl90IHJlcXVlc3RlZF9zaXplKCkgY29uc3Qg
eyByZXR1cm4gX01fb3JpZ2luYWxfbGVuOyB9CiAgX1RwKiBiZWdpbigpIHsgcmV0dXJuIF9NX2J1
ZmZlcjsgfQogIF9UcCogZW5kKCkgeyByZXR1cm4gX01fYnVmZmVyICsgX01fbGVuOyB9CgogIF9U
ZW1wb3JhcnlfYnVmZmVyKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRv
ciBfX2xhc3QpIHsKICAgIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czxfVHA+OjpoYXNf
dHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yCiAgICAgICAgICAgIF9Ucml2aWFsOwogICAgdHJ5
ICB7CiAgICAgIF9NX2xlbiA9IDA7CiAgICAgIGRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwgX01f
bGVuKTsKICAgICAgX01fYWxsb2NhdGVfYnVmZmVyKCk7CiAgICAgIGlmIChfTV9sZW4gPiAwKQog
ICAgICAgIF9NX2luaXRpYWxpemVfYnVmZmVyKCpfX2ZpcnN0LCBfVHJpdmlhbCgpKTsKICAgIH0K
ICAgIGNhdGNoKC4uLikgeyAgZnJlZShfTV9idWZmZXIpOyBfTV9idWZmZXIgPSAwOyBfTV9sZW4g
PSAwIDsgdGhyb3c7IH0gOwogIH0KIAogIH5fVGVtcG9yYXJ5X2J1ZmZlcigpIHsgIAogICAgZGVz
dHJveShfTV9idWZmZXIsIF9NX2J1ZmZlciArIF9NX2xlbik7CiAgICBmcmVlKF9NX2J1ZmZlcik7
CiAgfQoKcHJpdmF0ZToKICAgCiAgX1RlbXBvcmFyeV9idWZmZXIoY29uc3QgX1RlbXBvcmFyeV9i
dWZmZXImKSB7fQogIHZvaWQgb3BlcmF0b3I9KGNvbnN0IF9UZW1wb3JhcnlfYnVmZmVyJikge30K
fTsKCiAKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9yLCAKICAgICAgICAgIGNsYXNz
IF9UcCAKCiAgICAgICAgICAgICAgICAgICAgPSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0Zv
cndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUKCiAgICAgICAgID4Kc3RydWN0IHRlbXBvcmFyeV9i
dWZmZXIgOiBwdWJsaWMgX1RlbXBvcmFyeV9idWZmZXI8X0ZvcndhcmRJdGVyYXRvciwgX1RwPgp7
CiAgdGVtcG9yYXJ5X2J1ZmZlcihfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRl
cmF0b3IgX19sYXN0KQogICAgOiBfVGVtcG9yYXJ5X2J1ZmZlcjxfRm9yd2FyZEl0ZXJhdG9yLCBf
VHA+KF9fZmlyc3QsIF9fbGFzdCkge30KICB+dGVtcG9yYXJ5X2J1ZmZlcigpIHt9Cn07CiAgICAK
IAoKCgogCiAKIAojIDMzICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2FsZ29yaXRobSIgMiAzCgojIDEg
Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMi45NS4zLy4uLy4u
Ly4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsZ28uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh
cmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9oZWFwLmgiIDEgMwog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCgoKCiAKCnRlbXBsYXRlIDxjbGFz
cyBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZSwgY2xhc3MgX1RwPgp2b2lk
IApfX3B1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgICAg
X0Rpc3RhbmNlIF9faG9sZUluZGV4LCBfRGlzdGFuY2UgX190b3BJbmRleCwgX1RwIF9fdmFsdWUp
CnsKICBfRGlzdGFuY2UgX19wYXJlbnQgPSAoX19ob2xlSW5kZXggLSAxKSAvIDI7CiAgd2hpbGUg
KF9faG9sZUluZGV4ID4gX190b3BJbmRleCAmJiAqKF9fZmlyc3QgKyBfX3BhcmVudCkgPCBfX3Zh
bHVlKSB7CiAgICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSAqKF9fZmlyc3QgKyBfX3BhcmVu
dCk7CiAgICBfX2hvbGVJbmRleCA9IF9fcGFyZW50OwogICAgX19wYXJlbnQgPSAoX19ob2xlSW5k
ZXggLSAxKSAvIDI7CiAgfSAgICAKICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSBfX3ZhbHVl
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfRGlzdGFu
Y2UsIGNsYXNzIF9UcD4KaW5saW5lIHZvaWQgCl9fcHVzaF9oZWFwX2F1eChfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBf
X2xhc3QsIF9EaXN0YW5jZSosIF9UcCopCnsKICBfX3B1c2hfaGVhcChfX2ZpcnN0LCBfRGlzdGFu
Y2UoKF9fbGFzdCAtIF9fZmlyc3QpIC0gMSksIF9EaXN0YW5jZSgwKSwgCiAgICAgICAgICAgICAg
X1RwKCooX19sYXN0IC0gMSkpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVy
YXRvcj4KaW5saW5lIHZvaWQgCnB1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJz
dCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKewogIF9fcHVzaF9oZWFwX2F1eChfX2Zp
cnN0LCBfX2xhc3QsCiAgICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZSggX19maXJzdCAp
ICwgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlLCBjbGFzcyBfVHAsIAogICAgICAgICAgY2xh
c3MgX0NvbXBhcmU+CnZvaWQKX19wdXNoX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmly
c3QsIF9EaXN0YW5jZSBfX2hvbGVJbmRleCwKICAgICAgICAgICAgX0Rpc3RhbmNlIF9fdG9wSW5k
ZXgsIF9UcCBfX3ZhbHVlLCBfQ29tcGFyZSBfX2NvbXApCnsKICBfRGlzdGFuY2UgX19wYXJlbnQg
PSAoX19ob2xlSW5kZXggLSAxKSAvIDI7CiAgd2hpbGUgKF9faG9sZUluZGV4ID4gX190b3BJbmRl
eCAmJiBfX2NvbXAoKihfX2ZpcnN0ICsgX19wYXJlbnQpLCBfX3ZhbHVlKSkgewogICAgKihfX2Zp
cnN0ICsgX19ob2xlSW5kZXgpID0gKihfX2ZpcnN0ICsgX19wYXJlbnQpOwogICAgX19ob2xlSW5k
ZXggPSBfX3BhcmVudDsKICAgIF9fcGFyZW50ID0gKF9faG9sZUluZGV4IC0gMSkgLyAyOwogIH0K
ICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSBfX3ZhbHVlOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfQ29tcGFyZSwKICAgICAgICAgIGNsYXNzIF9E
aXN0YW5jZSwgY2xhc3MgX1RwPgppbmxpbmUgdm9pZCAKX19wdXNoX2hlYXBfYXV4KF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wLAogICAgICAgICAgICAgICAgX0Rpc3RhbmNlKiwg
X1RwKikgCnsKICBfX3B1c2hfaGVhcChfX2ZpcnN0LCBfRGlzdGFuY2UoKF9fbGFzdCAtIF9fZmly
c3QpIC0gMSksIF9EaXN0YW5jZSgwKSwgCiAgICAgICAgICAgICAgX1RwKCooX19sYXN0IC0gMSkp
LCBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFz
cyBfQ29tcGFyZT4KaW5saW5lIHZvaWQgCnB1c2hfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3Ig
X19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAgICAgIF9Db21wYXJl
IF9fY29tcCkKewogIF9fcHVzaF9oZWFwX2F1eChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCwKICAg
ICAgICAgICAgICAgICAgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgLCBfX3ZhbHVlX3R5cGUo
IF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBj
bGFzcyBfRGlzdGFuY2UsIGNsYXNzIF9UcD4Kdm9pZCAKX19hZGp1c3RfaGVhcChfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rpc3RhbmNlIF9faG9sZUluZGV4LAogICAgICAgICAgICAg
IF9EaXN0YW5jZSBfX2xlbiwgX1RwIF9fdmFsdWUpCnsKICBfRGlzdGFuY2UgX190b3BJbmRleCA9
IF9faG9sZUluZGV4OwogIF9EaXN0YW5jZSBfX3NlY29uZENoaWxkID0gMiAqIF9faG9sZUluZGV4
ICsgMjsKICB3aGlsZSAoX19zZWNvbmRDaGlsZCA8IF9fbGVuKSB7CiAgICBpZiAoKihfX2ZpcnN0
ICsgX19zZWNvbmRDaGlsZCkgPCAqKF9fZmlyc3QgKyAoX19zZWNvbmRDaGlsZCAtIDEpKSkKICAg
ICAgX19zZWNvbmRDaGlsZC0tOwogICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0gKihfX2Zp
cnN0ICsgX19zZWNvbmRDaGlsZCk7CiAgICBfX2hvbGVJbmRleCA9IF9fc2Vjb25kQ2hpbGQ7CiAg
ICBfX3NlY29uZENoaWxkID0gMiAqIChfX3NlY29uZENoaWxkICsgMSk7CiAgfQogIGlmIChfX3Nl
Y29uZENoaWxkID09IF9fbGVuKSB7CiAgICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSAqKF9f
Zmlyc3QgKyAoX19zZWNvbmRDaGlsZCAtIDEpKTsKICAgIF9faG9sZUluZGV4ID0gX19zZWNvbmRD
aGlsZCAtIDE7CiAgfQogIF9fcHVzaF9oZWFwKF9fZmlyc3QsIF9faG9sZUluZGV4LCBfX3RvcElu
ZGV4LCBfX3ZhbHVlKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIApfX3BvcF9oZWFwKF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAog
ICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX3Jlc3VsdCwgX1RwIF9fdmFsdWUsIF9E
aXN0YW5jZSopCnsKICAqX19yZXN1bHQgPSAqX19maXJzdDsKICBfX2FkanVzdF9oZWFwKF9fZmly
c3QsIF9EaXN0YW5jZSgwKSwgX0Rpc3RhbmNlKF9fbGFzdCAtIF9fZmlyc3QpLCBfX3ZhbHVlKTsK
fQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX1RwPgppbmxp
bmUgdm9pZCAKX19wb3BfaGVhcF9hdXgoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgIF9UcCopCnsKICBfX3Bv
cF9oZWFwKF9fZmlyc3QsIF9fbGFzdCAtIDEsIF9fbGFzdCAtIDEsIAogICAgICAgICAgICAgX1Rw
KCooX19sYXN0IC0gMSkpLCBfX2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgppbmxpbmUgdm9pZCBwb3BfaGVhcChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2xhc3QpCnsKICBfX3BvcF9oZWFwX2F1eChfX2ZpcnN0LCBfX2xhc3Qs
IF9fdmFsdWVfdHlwZSggX19maXJzdCApICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZSwKICAgICAgICAgIGNsYXNzIF9UcCwgY2xhc3Mg
X0NvbXBhcmU+CnZvaWQKX19hZGp1c3RfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJz
dCwgX0Rpc3RhbmNlIF9faG9sZUluZGV4LAogICAgICAgICAgICAgIF9EaXN0YW5jZSBfX2xlbiwg
X1RwIF9fdmFsdWUsIF9Db21wYXJlIF9fY29tcCkKewogIF9EaXN0YW5jZSBfX3RvcEluZGV4ID0g
X19ob2xlSW5kZXg7CiAgX0Rpc3RhbmNlIF9fc2Vjb25kQ2hpbGQgPSAyICogX19ob2xlSW5kZXgg
KyAyOwogIHdoaWxlIChfX3NlY29uZENoaWxkIDwgX19sZW4pIHsKICAgIGlmIChfX2NvbXAoKihf
X2ZpcnN0ICsgX19zZWNvbmRDaGlsZCksICooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkp
KSkKICAgICAgX19zZWNvbmRDaGlsZC0tOwogICAgKihfX2ZpcnN0ICsgX19ob2xlSW5kZXgpID0g
KihfX2ZpcnN0ICsgX19zZWNvbmRDaGlsZCk7CiAgICBfX2hvbGVJbmRleCA9IF9fc2Vjb25kQ2hp
bGQ7CiAgICBfX3NlY29uZENoaWxkID0gMiAqIChfX3NlY29uZENoaWxkICsgMSk7CiAgfQogIGlm
IChfX3NlY29uZENoaWxkID09IF9fbGVuKSB7CiAgICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkg
PSAqKF9fZmlyc3QgKyAoX19zZWNvbmRDaGlsZCAtIDEpKTsKICAgIF9faG9sZUluZGV4ID0gX19z
ZWNvbmRDaGlsZCAtIDE7CiAgfQogIF9fcHVzaF9oZWFwKF9fZmlyc3QsIF9faG9sZUluZGV4LCBf
X3RvcEluZGV4LCBfX3ZhbHVlLCBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yLCBjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlLCAKICAgICAgICAgIGNsYXNz
IF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgCl9fcG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
IF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yIF9fcmVzdWx0LCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19jb21wLAog
ICAgICAgICAgIF9EaXN0YW5jZSopCnsKICAqX19yZXN1bHQgPSAqX19maXJzdDsKICBfX2FkanVz
dF9oZWFwKF9fZmlyc3QsIF9EaXN0YW5jZSgwKSwgX0Rpc3RhbmNlKF9fbGFzdCAtIF9fZmlyc3Qp
LCAKICAgICAgICAgICAgICAgIF9fdmFsdWUsIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSB2
b2lkIApfX3BvcF9oZWFwX2F1eChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAg
ICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwgX1RwKiwgX0NvbXBhcmUgX19j
b21wKQp7CiAgX19wb3BfaGVhcChfX2ZpcnN0LCBfX2xhc3QgLSAxLCBfX2xhc3QgLSAxLCBfVHAo
KihfX2xhc3QgLSAxKSksIF9fY29tcCwKICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZSggX19m
aXJzdCApICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNz
IF9Db21wYXJlPgppbmxpbmUgdm9pZCAKcG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9f
Zmlyc3QsCiAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJlIF9f
Y29tcCkKewogICAgX19wb3BfaGVhcF9hdXgoX19maXJzdCwgX19sYXN0LCBfX3ZhbHVlX3R5cGUo
IF9fZmlyc3QgKSAsIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRl
cmF0b3IsIGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPgp2b2lkIApfX21ha2VfaGVhcChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fbGFzdCwgX1RwKiwgX0Rpc3RhbmNlKikKewogIGlmIChfX2xhc3QgLSBfX2ZpcnN0IDwg
MikgcmV0dXJuOwogIF9EaXN0YW5jZSBfX2xlbiA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgX0Rpc3Rh
bmNlIF9fcGFyZW50ID0gKF9fbGVuIC0gMikvMjsKICAgIAogIHdoaWxlICh0cnVlKSB7CiAgICBf
X2FkanVzdF9oZWFwKF9fZmlyc3QsIF9fcGFyZW50LCBfX2xlbiwgX1RwKCooX19maXJzdCArIF9f
cGFyZW50KSkpOwogICAgaWYgKF9fcGFyZW50ID09IDApIHJldHVybjsKICAgIF9fcGFyZW50LS07
CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgppbmxpbmUgdm9p
ZCAKbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IgX19sYXN0KQp7CiAgX19tYWtlX2hlYXAoX19maXJzdCwgX19sYXN0LAogICAgICAg
ICAgICAgIF9fdmFsdWVfdHlwZSggX19maXJzdCApICwgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0
ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0Nv
bXBhcmUsCiAgICAgICAgICBjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4Kdm9pZApfX21ha2Vf
aGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
IF9fbGFzdCwKICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wLCBfVHAqLCBfRGlzdGFuY2UqKQp7
CiAgaWYgKF9fbGFzdCAtIF9fZmlyc3QgPCAyKSByZXR1cm47CiAgX0Rpc3RhbmNlIF9fbGVuID0g
X19sYXN0IC0gX19maXJzdDsKICBfRGlzdGFuY2UgX19wYXJlbnQgPSAoX19sZW4gLSAyKS8yOwog
ICAgCiAgd2hpbGUgKHRydWUpIHsKICAgIF9fYWRqdXN0X2hlYXAoX19maXJzdCwgX19wYXJlbnQs
IF9fbGVuLCBfVHAoKihfX2ZpcnN0ICsgX19wYXJlbnQpKSwKICAgICAgICAgICAgICAgICAgX19j
b21wKTsKICAgIGlmIChfX3BhcmVudCA9PSAwKSByZXR1cm47CiAgICBfX3BhcmVudC0tOwogIH0K
fQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0NvbXBhcmU+
CmlubGluZSB2b2lkIAptYWtlX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIAog
ICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQp7
CiAgX19tYWtlX2hlYXAoX19maXJzdCwgX19sYXN0LCBfX2NvbXAsCiAgICAgICAgICAgICAgX192
YWx1ZV90eXBlKCBfX2ZpcnN0ICkgLCBfX2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgp2b2lkIHNvcnRfaGVhcChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkK
ewogIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gMSkKICAgIHBvcF9oZWFwKF9fZmlyc3QsIF9f
bGFzdC0tKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3Mg
X0NvbXBhcmU+CnZvaWQgCnNvcnRfaGVhcChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwK
ICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkK
ewogIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID4gMSkKICAgIHBvcF9oZWFwKF9fZmlyc3QsIF9f
bGFzdC0tLCBfX2NvbXApOwp9CgoKCgoKIAoKCgogCiAKIAojIDM0ICIvdXNyL2xvY2FsL2xpYi9n
Y2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL3N0bF9hbGdvLmgiIDIgMwoKCiAKCgoKCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxp
bmUgY29uc3QgX1RwJiBfX21lZGlhbihjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IsIGNv
bnN0IF9UcCYgX19jKSB7CiAgaWYgKF9fYSA8IF9fYikKICAgIGlmIChfX2IgPCBfX2MpCiAgICAg
IHJldHVybiBfX2I7CiAgICBlbHNlIGlmIChfX2EgPCBfX2MpCiAgICAgIHJldHVybiBfX2M7CiAg
ICBlbHNlCiAgICAgIHJldHVybiBfX2E7CiAgZWxzZSBpZiAoX19hIDwgX19jKQogICAgcmV0dXJu
IF9fYTsKICBlbHNlIGlmIChfX2IgPCBfX2MpCiAgICByZXR1cm4gX19jOwogIGVsc2UKICAgIHJl
dHVybiBfX2I7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUg
Y29uc3QgX1RwJgpfX21lZGlhbihjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IsIGNvbnN0
IF9UcCYgX19jLCBfQ29tcGFyZSBfX2NvbXApIHsKICBpZiAoX19jb21wKF9fYSwgX19iKSkKICAg
IGlmIChfX2NvbXAoX19iLCBfX2MpKQogICAgICByZXR1cm4gX19iOwogICAgZWxzZSBpZiAoX19j
b21wKF9fYSwgX19jKSkKICAgICAgcmV0dXJuIF9fYzsKICAgIGVsc2UKICAgICAgcmV0dXJuIF9f
YTsKICBlbHNlIGlmIChfX2NvbXAoX19hLCBfX2MpKQogICAgcmV0dXJuIF9fYTsKICBlbHNlIGlm
IChfX2NvbXAoX19iLCBfX2MpKQogICAgcmV0dXJuIF9fYzsKICBlbHNlCiAgICByZXR1cm4gX19i
Owp9CgogCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRnVuY3Rpb24+Cl9GdW5j
dGlvbiBmb3JfZWFjaChfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LCBfRnVu
Y3Rpb24gX19mKSB7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAg
X19mKCpfX2ZpcnN0KTsKICByZXR1cm4gX19mOwp9CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0
SXRlciwgY2xhc3MgX1RwPgppbmxpbmUgX0lucHV0SXRlciBmaW5kKF9JbnB1dEl0ZXIgX19maXJz
dCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBf
X3ZhbCwKICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpCnsKICB3aGls
ZSAoX19maXJzdCAhPSBfX2xhc3QgJiYgKl9fZmlyc3QgIT0gX192YWwpCiAgICArK19fZmlyc3Q7
CiAgcmV0dXJuIF9fZmlyc3Q7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBf
UHJlZGljYXRlPgppbmxpbmUgX0lucHV0SXRlciBmaW5kX2lmKF9JbnB1dEl0ZXIgX19maXJzdCwg
X0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX1ByZWRpY2F0ZSBf
X3ByZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnKQp7CiAg
d2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0ICYmICFfX3ByZWQoKl9fZmlyc3QpKQogICAgKytfX2Zp
cnN0OwogIHJldHVybiBfX2ZpcnN0Owp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNz
SXRlciwgY2xhc3MgX1RwPgpfUmFuZG9tQWNjZXNzSXRlciBmaW5kKF9SYW5kb21BY2Nlc3NJdGVy
IF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBfVHAmIF9fdmFsLAogICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbV9hY2Nlc3Nf
aXRlcmF0b3JfdGFnKQp7CiAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5kb21BY2Nlc3NJ
dGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9fdHJpcF9jb3VudAogICAgPSAoX19sYXN0IC0gX19maXJz
dCkgPj4gMjsKCiAgZm9yICggOyBfX3RyaXBfY291bnQgPiAwIDsgLS1fX3RyaXBfY291bnQpIHsK
ICAgIGlmICgqX19maXJzdCA9PSBfX3ZhbCkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7
CgogICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJz
dDsKCiAgICBpZiAoKl9fZmlyc3QgPT0gX192YWwpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2Zp
cnN0OwoKICAgIGlmICgqX19maXJzdCA9PSBfX3ZhbCkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19f
Zmlyc3Q7CiAgfQoKICBzd2l0Y2goX19sYXN0IC0gX19maXJzdCkgewogIGNhc2UgMzoKICAgIGlm
ICgqX19maXJzdCA9PSBfX3ZhbCkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CiAgY2Fz
ZSAyOgogICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsKSByZXR1cm4gX19maXJzdDsKICAgICsrX19m
aXJzdDsKICBjYXNlIDE6CiAgICBpZiAoKl9fZmlyc3QgPT0gX192YWwpIHJldHVybiBfX2ZpcnN0
OwogICAgKytfX2ZpcnN0OwogIGNhc2UgMDoKICBkZWZhdWx0OgogICAgcmV0dXJuIF9fbGFzdDsK
ICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1ByZWRpY2F0
ZT4KX1JhbmRvbUFjY2Vzc0l0ZXIgZmluZF9pZihfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBf
UmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX1ByZWRp
Y2F0ZSBfX3ByZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVy
YXRvcl90YWcpCnsKICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+
OjpkaWZmZXJlbmNlX3R5cGUgX190cmlwX2NvdW50CiAgICA9IChfX2xhc3QgLSBfX2ZpcnN0KSA+
PiAyOwoKICBmb3IgKCA7IF9fdHJpcF9jb3VudCA+IDAgOyAtLV9fdHJpcF9jb3VudCkgewogICAg
aWYgKF9fcHJlZCgqX19maXJzdCkpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwoKICAg
IGlmIChfX3ByZWQoKl9fZmlyc3QpKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsKCiAg
ICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7Cgog
ICAgaWYgKF9fcHJlZCgqX19maXJzdCkpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0Owog
IH0KCiAgc3dpdGNoKF9fbGFzdCAtIF9fZmlyc3QpIHsKICBjYXNlIDM6CiAgICBpZiAoX19wcmVk
KCpfX2ZpcnN0KSkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CiAgY2FzZSAyOgogICAg
aWYgKF9fcHJlZCgqX19maXJzdCkpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwogIGNh
c2UgMToKICAgIGlmIChfX3ByZWQoKl9fZmlyc3QpKSByZXR1cm4gX19maXJzdDsKICAgICsrX19m
aXJzdDsKICBjYXNlIDA6CiAgZGVmYXVsdDoKICAgIHJldHVybiBfX2xhc3Q7CiAgfQp9CgoKCnRl
bXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfVHA+CmlubGluZSBfSW5wdXRJdGVyIGZp
bmQoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBfVHAmIF9fdmFsKQp7CiAgcmV0dXJuIGZpbmQoX19maXJzdCwgX19sYXN0
LCBfX3ZhbCwgX19pdGVyYXRvcl9jYXRlZ29yeSggX19maXJzdCApICk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfUHJlZGljYXRlPgppbmxpbmUgX0lucHV0SXRlciBmaW5k
X2lmKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgX1ByZWRpY2F0ZSBfX3ByZWQpIHsKICByZXR1cm4gZmluZF9pZihfX2ZpcnN0
LCBfX2xhc3QsIF9fcHJlZCwgX19pdGVyYXRvcl9jYXRlZ29yeSggX19maXJzdCApICk7Cn0KCiAK
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXI+Cl9Gb3J3YXJkSXRlciBhZGphY2VudF9maW5k
KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0KSB7CiAgaWYgKF9fZmly
c3QgPT0gX19sYXN0KQogICAgcmV0dXJuIF9fbGFzdDsKICBfRm9yd2FyZEl0ZXIgX19uZXh0ID0g
X19maXJzdDsKICB3aGlsZSgrK19fbmV4dCAhPSBfX2xhc3QpIHsKICAgIGlmICgqX19maXJzdCA9
PSAqX19uZXh0KQogICAgICByZXR1cm4gX19maXJzdDsKICAgIF9fZmlyc3QgPSBfX25leHQ7CiAg
fQogIHJldHVybiBfX2xhc3Q7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNz
IF9CaW5hcnlQcmVkaWNhdGU+Cl9Gb3J3YXJkSXRlciBhZGphY2VudF9maW5kKF9Gb3J3YXJkSXRl
ciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5X3ByZWQpIHsKICBpZiAoX19maXJzdCA9PSBfX2xh
c3QpCiAgICByZXR1cm4gX19sYXN0OwogIF9Gb3J3YXJkSXRlciBfX25leHQgPSBfX2ZpcnN0Owog
IHdoaWxlKCsrX19uZXh0ICE9IF9fbGFzdCkgewogICAgaWYgKF9fYmluYXJ5X3ByZWQoKl9fZmly
c3QsICpfX25leHQpKQogICAgICByZXR1cm4gX19maXJzdDsKICAgIF9fZmlyc3QgPSBfX25leHQ7
CiAgfQogIHJldHVybiBfX2xhc3Q7Cn0KCiAKIAogCiAKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1
dEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX1NpemU+CnZvaWQgY291bnQoX0lucHV0SXRlciBfX2Zp
cnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbHVlLAogICAgICAgICAgIF9T
aXplJiBfX24pIHsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAgICBp
ZiAoKl9fZmlyc3QgPT0gX192YWx1ZSkKICAgICAgKytfX247Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
SW5wdXRJdGVyLCBjbGFzcyBfUHJlZGljYXRlLCBjbGFzcyBfU2l6ZT4Kdm9pZCBjb3VudF9pZihf
SW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LCBfUHJlZGljYXRlIF9fcHJlZCwK
ICAgICAgICAgICAgICBfU2l6ZSYgX19uKSB7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsg
KytfX2ZpcnN0KQogICAgaWYgKF9fcHJlZCgqX19maXJzdCkpCiAgICAgICsrX19uOwp9CgoKCnRl
bXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfVHA+CnR5cGVuYW1lIGl0ZXJhdG9yX3Ry
YWl0czxfSW5wdXRJdGVyPjo6ZGlmZmVyZW5jZV90eXBlCmNvdW50KF9JbnB1dEl0ZXIgX19maXJz
dCwgX0lucHV0SXRlciBfX2xhc3QsIGNvbnN0IF9UcCYgX192YWx1ZSkgewogIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiA9IDA7CiAgZm9y
ICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgaWYgKCpfX2ZpcnN0ID09IF9f
dmFsdWUpCiAgICAgICsrX19uOwogIHJldHVybiBfX247Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5w
dXRJdGVyLCBjbGFzcyBfUHJlZGljYXRlPgp0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0
SXRlcj46OmRpZmZlcmVuY2VfdHlwZQpjb3VudF9pZihfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1
dEl0ZXIgX19sYXN0LCBfUHJlZGljYXRlIF9fcHJlZCkgewogIHR5cGVuYW1lIGl0ZXJhdG9yX3Ry
YWl0czxfSW5wdXRJdGVyPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiA9IDA7CiAgZm9yICggOyBfX2Zp
cnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgaWYgKF9fcHJlZCgqX19maXJzdCkpCiAgICAg
ICsrX19uOwogIHJldHVybiBfX247Cn0KCgoKCiAKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0
ZXIxLCBjbGFzcyBfRm9yd2FyZEl0ZXIyPgpfRm9yd2FyZEl0ZXIxIHNlYXJjaChfRm9yd2FyZEl0
ZXIxIF9fZmlyc3QxLCBfRm9yd2FyZEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAg
IF9Gb3J3YXJkSXRlcjIgX19maXJzdDIsIF9Gb3J3YXJkSXRlcjIgX19sYXN0MikgCnsKICAgCiAg
aWYgKF9fZmlyc3QxID09IF9fbGFzdDEgfHwgX19maXJzdDIgPT0gX19sYXN0MikKICAgIHJldHVy
biBfX2ZpcnN0MTsKCiAgIAogIF9Gb3J3YXJkSXRlcjIgX190bXAoX19maXJzdDIpOwogICsrX190
bXA7CiAgaWYgKF9fdG1wID09IF9fbGFzdDIpCiAgICByZXR1cm4gZmluZChfX2ZpcnN0MSwgX19s
YXN0MSwgKl9fZmlyc3QyKTsKCiAgIAoKICBfRm9yd2FyZEl0ZXIyIF9fcDEsIF9fcDsKCiAgX19w
MSA9IF9fZmlyc3QyOyArK19fcDE7CgogIF9Gb3J3YXJkSXRlcjEgX19jdXJyZW50ID0gX19maXJz
dDE7CgogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxKSB7CiAgICBfX2ZpcnN0MSA9IGZpbmQo
X19maXJzdDEsIF9fbGFzdDEsICpfX2ZpcnN0Mik7CiAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0
MSkKICAgICAgcmV0dXJuIF9fbGFzdDE7CgogICAgX19wID0gX19wMTsKICAgIF9fY3VycmVudCA9
IF9fZmlyc3QxOyAKICAgIGlmICgrK19fY3VycmVudCA9PSBfX2xhc3QxKQogICAgICByZXR1cm4g
X19sYXN0MTsKCiAgICB3aGlsZSAoKl9fY3VycmVudCA9PSAqX19wKSB7CiAgICAgIGlmICgrK19f
cCA9PSBfX2xhc3QyKQogICAgICAgIHJldHVybiBfX2ZpcnN0MTsKICAgICAgaWYgKCsrX19jdXJy
ZW50ID09IF9fbGFzdDEpCiAgICAgICAgcmV0dXJuIF9fbGFzdDE7CiAgICB9CgogICAgKytfX2Zp
cnN0MTsKICB9CiAgcmV0dXJuIF9fZmlyc3QxOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJ
dGVyMSwgY2xhc3MgX0ZvcndhcmRJdGVyMiwgY2xhc3MgX0JpbmFyeVByZWQ+Cl9Gb3J3YXJkSXRl
cjEgc2VhcmNoKF9Gb3J3YXJkSXRlcjEgX19maXJzdDEsIF9Gb3J3YXJkSXRlcjEgX19sYXN0MSwK
ICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyMiBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVy
MiBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgICBfQmluYXJ5UHJlZCAgX19wcmVkaWNhdGUp
IAp7CiAgIAogIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxIHx8IF9fZmlyc3QyID09IF9fbGFzdDIp
CiAgICByZXR1cm4gX19maXJzdDE7CgogICAKICBfRm9yd2FyZEl0ZXIyIF9fdG1wKF9fZmlyc3Qy
KTsKICArK19fdG1wOwogIGlmIChfX3RtcCA9PSBfX2xhc3QyKQogICAgcmV0dXJuIGZpbmQoX19m
aXJzdDEsIF9fbGFzdDEsICpfX2ZpcnN0Mik7CgogICAKCiAgX0ZvcndhcmRJdGVyMiBfX3AxLCBf
X3A7CgogIF9fcDEgPSBfX2ZpcnN0MjsgKytfX3AxOwoKICBfRm9yd2FyZEl0ZXIxIF9fY3VycmVu
dCA9IF9fZmlyc3QxOwoKICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSkgewogICAgd2hpbGUg
KF9fZmlyc3QxICE9IF9fbGFzdDEpIHsKICAgICAgaWYgKF9fcHJlZGljYXRlKCpfX2ZpcnN0MSwg
Kl9fZmlyc3QyKSkKICAgICAgICBicmVhazsKICAgICAgKytfX2ZpcnN0MTsKICAgIH0KICAgIHdo
aWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmICFfX3ByZWRpY2F0ZSgqX19maXJzdDEsICpfX2Zp
cnN0MikpCiAgICAgICsrX19maXJzdDE7CiAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkKICAg
ICAgcmV0dXJuIF9fbGFzdDE7CgogICAgX19wID0gX19wMTsKICAgIF9fY3VycmVudCA9IF9fZmly
c3QxOyAKICAgIGlmICgrK19fY3VycmVudCA9PSBfX2xhc3QxKSByZXR1cm4gX19sYXN0MTsKCiAg
ICB3aGlsZSAoX19wcmVkaWNhdGUoKl9fY3VycmVudCwgKl9fcCkpIHsKICAgICAgaWYgKCsrX19w
ID09IF9fbGFzdDIpCiAgICAgICAgcmV0dXJuIF9fZmlyc3QxOwogICAgICBpZiAoKytfX2N1cnJl
bnQgPT0gX19sYXN0MSkKICAgICAgICByZXR1cm4gX19sYXN0MTsKICAgIH0KCiAgICArK19fZmly
c3QxOwogIH0KICByZXR1cm4gX19maXJzdDE7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2Fy
ZEl0ZXIsIGNsYXNzIF9JbnRlZ2VyLCBjbGFzcyBfVHA+Cl9Gb3J3YXJkSXRlciBzZWFyY2hfbihf
Rm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAg
ICAgICAgIF9JbnRlZ2VyIF9fY291bnQsIGNvbnN0IF9UcCYgX192YWwpIHsKICBpZiAoX19jb3Vu
dCA8PSAwKQogICAgcmV0dXJuIF9fZmlyc3Q7CiAgZWxzZSB7CiAgICBfX2ZpcnN0ID0gZmluZChf
X2ZpcnN0LCBfX2xhc3QsIF9fdmFsKTsKICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkgewog
ICAgICBfSW50ZWdlciBfX24gPSBfX2NvdW50IC0gMTsKICAgICAgX0ZvcndhcmRJdGVyIF9faSA9
IF9fZmlyc3Q7CiAgICAgICsrX19pOwogICAgICB3aGlsZSAoX19pICE9IF9fbGFzdCAmJiBfX24g
IT0gMCAmJiAqX19pID09IF9fdmFsKSB7CiAgICAgICAgKytfX2k7CiAgICAgICAgLS1fX247CiAg
ICAgIH0KICAgICAgaWYgKF9fbiA9PSAwKQogICAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgICBl
bHNlCiAgICAgICAgX19maXJzdCA9IGZpbmQoX19pLCBfX2xhc3QsIF9fdmFsKTsKICAgIH0KICAg
IHJldHVybiBfX2xhc3Q7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFz
cyBfSW50ZWdlciwgY2xhc3MgX1RwLCBjbGFzcyBfQmluYXJ5UHJlZD4KX0ZvcndhcmRJdGVyIHNl
YXJjaF9uKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAg
ICAgICAgICAgICAgICAgX0ludGVnZXIgX19jb3VudCwgY29uc3QgX1RwJiBfX3ZhbCwKICAgICAg
ICAgICAgICAgICAgICAgIF9CaW5hcnlQcmVkIF9fYmluYXJ5X3ByZWQpIHsKICBpZiAoX19jb3Vu
dCA8PSAwKQogICAgcmV0dXJuIF9fZmlyc3Q7CiAgZWxzZSB7CiAgICB3aGlsZSAoX19maXJzdCAh
PSBfX2xhc3QpIHsKICAgICAgaWYgKF9fYmluYXJ5X3ByZWQoKl9fZmlyc3QsIF9fdmFsKSkKICAg
ICAgICBicmVhazsKICAgICAgKytfX2ZpcnN0OwogICAgfQogICAgd2hpbGUgKF9fZmlyc3QgIT0g
X19sYXN0KSB7CiAgICAgIF9JbnRlZ2VyIF9fbiA9IF9fY291bnQgLSAxOwogICAgICBfRm9yd2Fy
ZEl0ZXIgX19pID0gX19maXJzdDsKICAgICAgKytfX2k7CiAgICAgIHdoaWxlIChfX2kgIT0gX19s
YXN0ICYmIF9fbiAhPSAwICYmIF9fYmluYXJ5X3ByZWQoKl9faSwgX192YWwpKSB7CiAgICAgICAg
KytfX2k7CiAgICAgICAgLS1fX247CiAgICAgIH0KICAgICAgaWYgKF9fbiA9PSAwKQogICAgICAg
IHJldHVybiBfX2ZpcnN0OwogICAgICBlbHNlIHsKICAgICAgICB3aGlsZSAoX19pICE9IF9fbGFz
dCkgewogICAgICAgICAgaWYgKF9fYmluYXJ5X3ByZWQoKl9faSwgX192YWwpKQogICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICsrX19pOwogICAgICAgIH0KICAgICAgICBfX2ZpcnN0ID0gX19p
OwogICAgICB9CiAgICB9CiAgICByZXR1cm4gX19sYXN0OwogIH0KfSAKCiAKCnRlbXBsYXRlIDxj
bGFzcyBfRm9yd2FyZEl0ZXIxLCBjbGFzcyBfRm9yd2FyZEl0ZXIyPgpfRm9yd2FyZEl0ZXIyIHN3
YXBfcmFuZ2VzKF9Gb3J3YXJkSXRlcjEgX19maXJzdDEsIF9Gb3J3YXJkSXRlcjEgX19sYXN0MSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIyIF9fZmlyc3QyKSB7CiAgZm9y
ICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxOyArK19fZmlyc3QxLCArK19fZmlyc3QyKQogICAgaXRl
cl9zd2FwKF9fZmlyc3QxLCBfX2ZpcnN0Mik7CiAgcmV0dXJuIF9fZmlyc3QyOwp9CgogCgp0ZW1w
bGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1dEl0ZXIsIGNsYXNzIF9VbmFyeU9w
ZXJhdGlvbj4KX091dHB1dEl0ZXIgdHJhbnNmb3JtKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0
SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwg
X1VuYXJ5T3BlcmF0aW9uIF9fb3BlcikgewogIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsr
X19maXJzdCwgKytfX3Jlc3VsdCkKICAgICpfX3Jlc3VsdCA9IF9fb3BlcigqX19maXJzdCk7CiAg
cmV0dXJuIF9fcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9J
bnB1dEl0ZXIyLCBjbGFzcyBfT3V0cHV0SXRlciwKICAgICAgICAgIGNsYXNzIF9CaW5hcnlPcGVy
YXRpb24+Cl9PdXRwdXRJdGVyIHRyYW5zZm9ybShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0
SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3Qy
LCBfT3V0cHV0SXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgIF9CaW5hcnlPcGVy
YXRpb24gX19iaW5hcnlfb3ApIHsKICBmb3IgKCA7IF9fZmlyc3QxICE9IF9fbGFzdDE7ICsrX19m
aXJzdDEsICsrX19maXJzdDIsICsrX19yZXN1bHQpCiAgICAqX19yZXN1bHQgPSBfX2JpbmFyeV9v
cCgqX19maXJzdDEsICpfX2ZpcnN0Mik7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgogCgp0ZW1wbGF0
ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+CnZvaWQgcmVwbGFjZShfRm9yd2FyZEl0
ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgIGNvbnN0IF9UcCYg
X19vbGRfdmFsdWUsIGNvbnN0IF9UcCYgX19uZXdfdmFsdWUpIHsKICBmb3IgKCA7IF9fZmlyc3Qg
IT0gX19sYXN0OyArK19fZmlyc3QpCiAgICBpZiAoKl9fZmlyc3QgPT0gX19vbGRfdmFsdWUpCiAg
ICAgICpfX2ZpcnN0ID0gX19uZXdfdmFsdWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0
ZXIsIGNsYXNzIF9QcmVkaWNhdGUsIGNsYXNzIF9UcD4Kdm9pZCByZXBsYWNlX2lmKF9Gb3J3YXJk
SXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgX1ByZWRp
Y2F0ZSBfX3ByZWQsIGNvbnN0IF9UcCYgX19uZXdfdmFsdWUpIHsKICBmb3IgKCA7IF9fZmlyc3Qg
IT0gX19sYXN0OyArK19fZmlyc3QpCiAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgICAgKl9f
Zmlyc3QgPSBfX25ld192YWx1ZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNz
IF9PdXRwdXRJdGVyLCBjbGFzcyBfVHA+Cl9PdXRwdXRJdGVyIHJlcGxhY2VfY29weShfSW5wdXRJ
dGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
X091dHB1dEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAm
IF9fb2xkX3ZhbHVlLCBjb25zdCBfVHAmIF9fbmV3X3ZhbHVlKSB7CiAgZm9yICggOyBfX2ZpcnN0
ICE9IF9fbGFzdDsgKytfX2ZpcnN0LCArK19fcmVzdWx0KQogICAgKl9fcmVzdWx0ID0gKl9fZmly
c3QgPT0gX19vbGRfdmFsdWUgPyBfX25ld192YWx1ZSA6ICpfX2ZpcnN0OwogIHJldHVybiBfX3Jl
c3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xh
c3MgX1ByZWRpY2F0ZSwgY2xhc3MgX1RwPgpfT3V0cHV0SXRlciByZXBsYWNlX2NvcHlfaWYoSXRl
cmF0b3IgX19maXJzdCwgSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX091dHB1dEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHJl
ZGljYXRlIF9fcHJlZCwgY29uc3QgX1RwJiBfX25ld192YWx1ZSkgewogIGZvciAoIDsgX19maXJz
dCAhPSBfX2xhc3Q7ICsrX19maXJzdCwgKytfX3Jlc3VsdCkKICAgICpfX3Jlc3VsdCA9IF9fcHJl
ZCgqX19maXJzdCkgPyBfX25ld192YWx1ZSA6ICpfX2ZpcnN0OwogIHJldHVybiBfX3Jlc3VsdDsK
fQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX0dlbmVyYXRvcj4Kdm9p
ZCBnZW5lcmF0ZShfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwgX0dl
bmVyYXRvciBfX2dlbikgewogIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkK
ICAgICpfX2ZpcnN0ID0gX19nZW4oKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9PdXRwdXRJdGVyLCBj
bGFzcyBfU2l6ZSwgY2xhc3MgX0dlbmVyYXRvcj4KX091dHB1dEl0ZXIgZ2VuZXJhdGVfbihfT3V0
cHV0SXRlciBfX2ZpcnN0LCBfU2l6ZSBfX24sIF9HZW5lcmF0b3IgX19nZW4pIHsKICBmb3IgKCA7
IF9fbiA+IDA7IC0tX19uLCArK19fZmlyc3QpCiAgICAqX19maXJzdCA9IF9fZ2VuKCk7CiAgcmV0
dXJuIF9fZmlyc3Q7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0
cHV0SXRlciwgY2xhc3MgX1RwPgpfT3V0cHV0SXRlciByZW1vdmVfY29weShfSW5wdXRJdGVyIF9f
Zmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0
SXRlciBfX3Jlc3VsdCwgY29uc3QgX1RwJiBfX3ZhbHVlKSB7CiAgZm9yICggOyBfX2ZpcnN0ICE9
IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgaWYgKCpfX2ZpcnN0ICE9IF9fdmFsdWUpIHsKICAgICAg
Kl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9CiAgcmV0dXJuIF9f
cmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1dEl0ZXIs
IGNsYXNzIF9QcmVkaWNhdGU+Cl9PdXRwdXRJdGVyIHJlbW92ZV9jb3B5X2lmKF9JbnB1dEl0ZXIg
X19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9P
dXRwdXRJdGVyIF9fcmVzdWx0LCBfUHJlZGljYXRlIF9fcHJlZCkgewogIGZvciAoIDsgX19maXJz
dCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgIGlmICghX19wcmVkKCpfX2ZpcnN0KSkgewogICAg
ICAqX19yZXN1bHQgPSAqX19maXJzdDsKICAgICAgKytfX3Jlc3VsdDsKICAgIH0KICByZXR1cm4g
X19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KX0Zv
cndhcmRJdGVyIHJlbW92ZShfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFz
dCwKICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9fdmFsdWUpIHsKICBfX2ZpcnN0ID0g
ZmluZChfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsdWUpOwogIF9Gb3J3YXJkSXRlciBfX2kgPSBfX2Zp
cnN0OwogIHJldHVybiBfX2ZpcnN0ID09IF9fbGFzdCA/IF9fZmlyc3QgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogcmVtb3ZlX2NvcHkoKytfX2ksIF9fbGFzdCwgX19maXJzdCwgX192YWx1
ZSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9QcmVkaWNhdGU+Cl9G
b3J3YXJkSXRlciByZW1vdmVfaWYoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBf
X2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgX1ByZWRpY2F0ZSBfX3ByZWQpIHsKICBfX2Zp
cnN0ID0gZmluZF9pZihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCk7CiAgX0ZvcndhcmRJdGVyIF9f
aSA9IF9fZmlyc3Q7CiAgcmV0dXJuIF9fZmlyc3QgPT0gX19sYXN0ID8gX19maXJzdCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOiByZW1vdmVfY29weV9pZigrK19faSwgX19sYXN0LCBfX2Zp
cnN0LCBfX3ByZWQpOwp9CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091
dHB1dEl0ZXIsIGNsYXNzIF9UcD4KX091dHB1dEl0ZXIgX191bmlxdWVfY29weShfSW5wdXRJdGVy
IF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9P
dXRwdXRJdGVyIF9fcmVzdWx0LCBfVHAqKSB7CiAgX1RwIF9fdmFsdWUgPSAqX19maXJzdDsKICAq
X19yZXN1bHQgPSBfX3ZhbHVlOwogIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQogICAgaWYg
KF9fdmFsdWUgIT0gKl9fZmlyc3QpIHsKICAgICAgX192YWx1ZSA9ICpfX2ZpcnN0OwogICAgICAq
KytfX3Jlc3VsdCA9IF9fdmFsdWU7CiAgICB9CiAgcmV0dXJuICsrX19yZXN1bHQ7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlcj4KaW5saW5lIF9PdXRwdXRJ
dGVyIF9fdW5pcXVlX2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfaXRlcmF0b3JfdGFnKSB7CiAg
cmV0dXJuIF9fdW5pcXVlX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX192YWx1ZV90
eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9G
b3J3YXJkSXRlcj4KX0ZvcndhcmRJdGVyIF9fdW5pcXVlX2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0
LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJ
dGVyIF9fcmVzdWx0LCBmb3J3YXJkX2l0ZXJhdG9yX3RhZykgewogICpfX3Jlc3VsdCA9ICpfX2Zp
cnN0OwogIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQogICAgaWYgKCpfX3Jlc3VsdCAhPSAq
X19maXJzdCkgKisrX19yZXN1bHQgPSAqX19maXJzdDsKICByZXR1cm4gKytfX3Jlc3VsdDsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyPgppbmxpbmUgX091
dHB1dEl0ZXIgdW5pcXVlX2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0KSB7
CiAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm4gX19yZXN1bHQ7CiAgcmV0dXJuIF9fdW5p
cXVlX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAg
ICBfX2l0ZXJhdG9yX2NhdGVnb3J5KCBfX3Jlc3VsdCApICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
SW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZSwKICAg
ICAgICAgIGNsYXNzIF9UcD4KX091dHB1dEl0ZXIgX191bmlxdWVfY29weShfSW5wdXRJdGVyIF9f
Zmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRw
dXRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgIF9CaW5hcnlQcmVkaWNh
dGUgX19iaW5hcnlfcHJlZCwgX1RwKikgewogIF9UcCBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAgKl9f
cmVzdWx0ID0gX192YWx1ZTsKICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkKICAgIGlmICgh
X19iaW5hcnlfcHJlZChfX3ZhbHVlLCAqX19maXJzdCkpIHsKICAgICAgX192YWx1ZSA9ICpfX2Zp
cnN0OwogICAgICAqKytfX3Jlc3VsdCA9IF9fdmFsdWU7CiAgICB9CiAgcmV0dXJuICsrX19yZXN1
bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xh
c3MgX0JpbmFyeVByZWRpY2F0ZT4KaW5saW5lIF9PdXRwdXRJdGVyIF9fdW5pcXVlX2NvcHkoX0lu
cHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0cHV0X2l0ZXJhdG9yX3RhZykgewogIHJldHVybiBfX3VuaXF1
ZV9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsIF9fYmluYXJ5X3ByZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX0JpbmFyeVByZWRpY2F0
ZT4KX0ZvcndhcmRJdGVyIF9fdW5pcXVlX2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fcmVz
dWx0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFy
eV9wcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkX2l0ZXJhdG9yX3RhZykg
ewogICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQog
ICAgaWYgKCFfX2JpbmFyeV9wcmVkKCpfX3Jlc3VsdCwgKl9fZmlyc3QpKSAqKytfX3Jlc3VsdCA9
ICpfX2ZpcnN0OwogIHJldHVybiArK19fcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0
SXRlciwgY2xhc3MgX091dHB1dEl0ZXIsIGNsYXNzIF9CaW5hcnlQcmVkaWNhdGU+CmlubGluZSBf
T3V0cHV0SXRlciB1bmlxdWVfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19s
YXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5
X3ByZWQpIHsKICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX3Jlc3VsdDsKICByZXR1
cm4gX191bmlxdWVfY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LCBfX2JpbmFyeV9wcmVk
LAogICAgICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fcmVzdWx0ICkg
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcj4KX0ZvcndhcmRJdGVyIHVuaXF1ZShf
Rm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCkgewogIF9fZmlyc3QgPSBh
ZGphY2VudF9maW5kKF9fZmlyc3QsIF9fbGFzdCk7CiAgcmV0dXJuIHVuaXF1ZV9jb3B5KF9fZmly
c3QsIF9fbGFzdCwgX19maXJzdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNs
YXNzIF9CaW5hcnlQcmVkaWNhdGU+Cl9Gb3J3YXJkSXRlciB1bmlxdWUoX0ZvcndhcmRJdGVyIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgX0JpbmFyeVBy
ZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKSB7CiAgX19maXJzdCA9IGFkamFjZW50X2ZpbmQoX19maXJz
dCwgX19sYXN0LCBfX2JpbmFyeV9wcmVkKTsKICByZXR1cm4gdW5pcXVlX2NvcHkoX19maXJzdCwg
X19sYXN0LCBfX2ZpcnN0LCBfX2JpbmFyeV9wcmVkKTsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9C
aWRpcmVjdGlvbmFsSXRlcj4Kdm9pZCBfX3JldmVyc2UoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmly
c3QsIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsIAogICAgICAgICAgICAgICBiaWRpcmVjdGlv
bmFsX2l0ZXJhdG9yX3RhZykgewogIHdoaWxlICh0cnVlKQogICAgaWYgKF9fZmlyc3QgPT0gX19s
YXN0IHx8IF9fZmlyc3QgPT0gLS1fX2xhc3QpCiAgICAgIHJldHVybjsKICAgIGVsc2UKICAgICAg
aXRlcl9zd2FwKF9fZmlyc3QrKywgX19sYXN0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21B
Y2Nlc3NJdGVyPgp2b2lkIF9fcmV2ZXJzZShfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFu
ZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0
b3JfdGFnKSB7CiAgd2hpbGUgKF9fZmlyc3QgPCBfX2xhc3QpCiAgICBpdGVyX3N3YXAoX19maXJz
dCsrLCAtLV9fbGFzdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXI+Cmlu
bGluZSB2b2lkIHJldmVyc2UoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsIF9CaWRpcmVjdGlv
bmFsSXRlciBfX2xhc3QpIHsKICBfX3JldmVyc2UoX19maXJzdCwgX19sYXN0LCBfX2l0ZXJhdG9y
X2NhdGVnb3J5KCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFs
SXRlciwgY2xhc3MgX091dHB1dEl0ZXI+Cl9PdXRwdXRJdGVyIHJldmVyc2VfY29weShfQmlkaXJl
Y3Rpb25hbEl0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVj
dGlvbmFsSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRl
ciBfX3Jlc3VsdCkgewogIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgLS1fX2xhc3Q7
CiAgICAqX19yZXN1bHQgPSAqX19sYXN0OwogICAgKytfX3Jlc3VsdDsKICB9CiAgcmV0dXJuIF9f
cmVzdWx0Owp9CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0V1Y2xpZGVhblJpbmdFbGVtZW50PgpfRXVj
bGlkZWFuUmluZ0VsZW1lbnQgX19nY2QoX0V1Y2xpZGVhblJpbmdFbGVtZW50IF9fbSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9FdWNsaWRlYW5SaW5nRWxlbWVudCBfX24pCnsKICB3aGls
ZSAoX19uICE9IDApIHsKICAgIF9FdWNsaWRlYW5SaW5nRWxlbWVudCBfX3QgPSBfX20gJSBfX247
CiAgICBfX20gPSBfX247CiAgICBfX24gPSBfX3Q7CiAgfQogIHJldHVybiBfX207Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9EaXN0YW5jZT4KX0ZvcndhcmRJdGVyIF9f
cm90YXRlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgX0Zvcndh
cmRJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fbGFz
dCwKICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSosCiAgICAgICAgICAgICAgICAgICAg
ICBmb3J3YXJkX2l0ZXJhdG9yX3RhZykgewogIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxlKQogICAg
cmV0dXJuIF9fbGFzdDsKICBpZiAoX19sYXN0ICA9PSBfX21pZGRsZSkKICAgIHJldHVybiBfX2Zp
cnN0OwoKICBfRm9yd2FyZEl0ZXIgX19maXJzdDIgPSBfX21pZGRsZTsKICBkbyB7CiAgICBzd2Fw
KCpfX2ZpcnN0KyssICpfX2ZpcnN0MisrKTsKICAgIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxlKQog
ICAgICBfX21pZGRsZSA9IF9fZmlyc3QyOwogIH0gd2hpbGUgKF9fZmlyc3QyICE9IF9fbGFzdCk7
CgogIF9Gb3J3YXJkSXRlciBfX25ld19taWRkbGUgPSBfX2ZpcnN0OwoKICBfX2ZpcnN0MiA9IF9f
bWlkZGxlOwoKICB3aGlsZSAoX19maXJzdDIgIT0gX19sYXN0KSB7CiAgICBzd2FwICgqX19maXJz
dCsrLCAqX19maXJzdDIrKyk7CiAgICBpZiAoX19maXJzdCA9PSBfX21pZGRsZSkKICAgICAgX19t
aWRkbGUgPSBfX2ZpcnN0MjsKICAgIGVsc2UgaWYgKF9fZmlyc3QyID09IF9fbGFzdCkKICAgICAg
X19maXJzdDIgPSBfX21pZGRsZTsKICB9CgogIHJldHVybiBfX25ld19taWRkbGU7Cn0KCgp0ZW1w
bGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBfRGlzdGFuY2U+Cl9CaWRpcmVj
dGlvbmFsSXRlciBfX3JvdGF0ZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfRGlzdGFuY2UqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcpIHsKICBpZiAoX19maXJzdCA9PSBfX21pZGRsZSkK
ICAgIHJldHVybiBfX2xhc3Q7CiAgaWYgKF9fbGFzdCAgPT0gX19taWRkbGUpCiAgICByZXR1cm4g
X19maXJzdDsKCiAgX19yZXZlcnNlKF9fZmlyc3QsICBfX21pZGRsZSwgYmlkaXJlY3Rpb25hbF9p
dGVyYXRvcl90YWcoKSk7CiAgX19yZXZlcnNlKF9fbWlkZGxlLCBfX2xhc3QsICAgYmlkaXJlY3Rp
b25hbF9pdGVyYXRvcl90YWcoKSk7CgogIHdoaWxlIChfX2ZpcnN0ICE9IF9fbWlkZGxlICYmIF9f
bWlkZGxlICE9IF9fbGFzdCkKICAgIHN3YXAgKCpfX2ZpcnN0KyssICotLV9fbGFzdCk7CgogIGlm
IChfX2ZpcnN0ID09IF9fbWlkZGxlKSB7CiAgICBfX3JldmVyc2UoX19taWRkbGUsIF9fbGFzdCwg
ICBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZygpKTsKICAgIHJldHVybiBfX2xhc3Q7CiAgfQog
IGVsc2UgewogICAgX19yZXZlcnNlKF9fZmlyc3QsICBfX21pZGRsZSwgYmlkaXJlY3Rpb25hbF9p
dGVyYXRvcl90YWcoKSk7CiAgICByZXR1cm4gX19maXJzdDsKICB9Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX0Rpc3RhbmNlLCBjbGFzcyBfVHA+Cl9SYW5kb21B
Y2Nlc3NJdGVyIF9fcm90YXRlKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9EaXN0YW5jZSAqLCBfVHAgKikgewoKICBfRGlzdGFuY2UgX19uID0gX19sYXN0
ICAgLSBfX2ZpcnN0OwogIF9EaXN0YW5jZSBfX2sgPSBfX21pZGRsZSAtIF9fZmlyc3Q7CiAgX0Rp
c3RhbmNlIF9fbCA9IF9fbiAtIF9fazsKICBfUmFuZG9tQWNjZXNzSXRlciBfX3Jlc3VsdCA9IF9f
Zmlyc3QgKyAoX19sYXN0IC0gX19taWRkbGUpOwoKICBpZiAoX19rID09IF9fbCkgewogICAgc3dh
cF9yYW5nZXMoX19maXJzdCwgX19taWRkbGUsIF9fbWlkZGxlKTsKICAgIHJldHVybiBfX3Jlc3Vs
dDsKICB9CgogIF9EaXN0YW5jZSBfX2QgPSBfX2djZChfX24sIF9fayk7CgogIGZvciAoX0Rpc3Rh
bmNlIF9faSA9IDA7IF9faSA8IF9fZDsgX19pKyspIHsKICAgIF9UcCBfX3RtcCA9ICpfX2ZpcnN0
OwogICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19wID0gX19maXJzdDsKCiAgICBpZiAoX19rIDwgX19s
KSB7CiAgICAgIGZvciAoX0Rpc3RhbmNlIF9faiA9IDA7IF9faiA8IF9fbC9fX2Q7IF9faisrKSB7
CiAgICAgICAgaWYgKF9fcCA+IF9fZmlyc3QgKyBfX2wpIHsKICAgICAgICAgICpfX3AgPSAqKF9f
cCAtIF9fbCk7CiAgICAgICAgICBfX3AgLT0gX19sOwogICAgICAgIH0KCiAgICAgICAgKl9fcCA9
ICooX19wICsgX19rKTsKICAgICAgICBfX3AgKz0gX19rOwogICAgICB9CiAgICB9CgogICAgZWxz
ZSB7CiAgICAgIGZvciAoX0Rpc3RhbmNlIF9faiA9IDA7IF9faiA8IF9fay9fX2QgLSAxOyBfX2og
KyspIHsKICAgICAgICBpZiAoX19wIDwgX19sYXN0IC0gX19rKSB7CiAgICAgICAgICAqX19wID0g
KihfX3AgKyBfX2spOwogICAgICAgICAgX19wICs9IF9fazsKICAgICAgICB9CgogICAgICAgICpf
X3AgPSAqIChfX3AgLSBfX2wpOwogICAgICAgIF9fcCAtPSBfX2w7CiAgICAgIH0KICAgIH0KCiAg
ICAqX19wID0gX190bXA7CiAgICArK19fZmlyc3Q7CiAgfQoKICByZXR1cm4gX19yZXN1bHQ7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBfRm9yd2FyZEl0ZXIgcm90YXRl
KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19taWRkbGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2xhc3QpIHsKICByZXR1cm4gX19yb3RhdGUo
X19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgX19kaXN0YW5jZV90
eXBlKCBfX2ZpcnN0ICkgLAogICAgICAgICAgICAgICAgICBfX2l0ZXJhdG9yX2NhdGVnb3J5KCBf
X2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX091dHB1
dEl0ZXI+Cl9PdXRwdXRJdGVyIHJvdGF0ZV9jb3B5KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9y
d2FyZEl0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0
ZXIgX19sYXN0LCBfT3V0cHV0SXRlciBfX3Jlc3VsdCkgewogIHJldHVybiBjb3B5KF9fZmlyc3Qs
IF9fbWlkZGxlLCBjb3B5KF9fbWlkZGxlLCBfX2xhc3QsIF9fcmVzdWx0KSk7Cn0KCiAKIAogCgp0
ZW1wbGF0ZSA8Y2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgX0Rpc3RhbmNlIF9fcmFuZG9tX251bWJl
cihfRGlzdGFuY2UgX19uKSB7CgoKCiAgcmV0dXJuIGxyYW5kNDgoKSAlIF9fbjsKCn0KCiAKCnRl
bXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcj4KaW5saW5lIHZvaWQgcmFuZG9tX3NodWZm
bGUoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KSB7CiAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1
cm47CiAgZm9yIChfUmFuZG9tQWNjZXNzSXRlciBfX2kgPSBfX2ZpcnN0ICsgMTsgX19pICE9IF9f
bGFzdDsgKytfX2kpCiAgICBpdGVyX3N3YXAoX19pLCBfX2ZpcnN0ICsgX19yYW5kb21fbnVtYmVy
KChfX2kgLSBfX2ZpcnN0KSArIDEpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJ
dGVyLCBjbGFzcyBfUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgp2b2lkIHJhbmRvbV9zaHVmZmxlKF9S
YW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAg
ICAgICAgICAgICAgICBfUmFuZG9tTnVtYmVyR2VuZXJhdG9yJiBfX3JhbmQpIHsKICBpZiAoX19m
aXJzdCA9PSBfX2xhc3QpIHJldHVybjsKICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyIF9faSA9IF9f
Zmlyc3QgKyAxOyBfX2kgIT0gX19sYXN0OyArK19faSkKICAgIGl0ZXJfc3dhcChfX2ksIF9fZmly
c3QgKyBfX3JhbmQoKF9faSAtIF9fZmlyc3QpICsgMSkpOwp9CgogCgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0ZvcndhcmRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX0Rpc3RhbmNlPgpfT3V0cHV0
SXRlciByYW5kb21fc2FtcGxlX24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBf
X2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX291dCwgY29u
c3QgX0Rpc3RhbmNlIF9fbikKewogIF9EaXN0YW5jZSBfX3JlbWFpbmluZyA9IDA7CiAgZGlzdGFu
Y2UoX19maXJzdCwgX19sYXN0LCBfX3JlbWFpbmluZyk7CiAgX0Rpc3RhbmNlIF9fbSA9IG1pbihf
X24sIF9fcmVtYWluaW5nKTsKCiAgd2hpbGUgKF9fbSA+IDApIHsKICAgIGlmIChfX3JhbmRvbV9u
dW1iZXIoX19yZW1haW5pbmcpIDwgX19tKSB7CiAgICAgICpfX291dCA9ICpfX2ZpcnN0OwogICAg
ICArK19fb3V0OwogICAgICAtLV9fbTsKICAgIH0KCiAgICAtLV9fcmVtYWluaW5nOwogICAgKytf
X2ZpcnN0OwogIH0KICByZXR1cm4gX19vdXQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0
ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfRGlzdGFuY2UsCiAgICAgICAgICBjbGFzcyBf
UmFuZG9tTnVtYmVyR2VuZXJhdG9yPgpfT3V0cHV0SXRlciByYW5kb21fc2FtcGxlX24oX0Zvcndh
cmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfT3V0cHV0SXRlciBfX291dCwgY29uc3QgX0Rpc3RhbmNlIF9fbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fcmFuZCkKewogIF9E
aXN0YW5jZSBfX3JlbWFpbmluZyA9IDA7CiAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfX3Jl
bWFpbmluZyk7CiAgX0Rpc3RhbmNlIF9fbSA9IG1pbihfX24sIF9fcmVtYWluaW5nKTsKCiAgd2hp
bGUgKF9fbSA+IDApIHsKICAgIGlmIChfX3JhbmQoX19yZW1haW5pbmcpIDwgX19tKSB7CiAgICAg
ICpfX291dCA9ICpfX2ZpcnN0OwogICAgICArK19fb3V0OwogICAgICAtLV9fbTsKICAgIH0KCiAg
ICAtLV9fcmVtYWluaW5nOwogICAgKytfX2ZpcnN0OwogIH0KICByZXR1cm4gX19vdXQ7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3Mg
X0Rpc3RhbmNlPgpfUmFuZG9tQWNjZXNzSXRlciBfX3JhbmRvbV9zYW1wbGUoX0lucHV0SXRlciBf
X2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgX0Rpc3RhbmNlIF9fbikKewogIF9EaXN0YW5jZSBfX20gPSAwOwogIF9EaXN0
YW5jZSBfX3QgPSBfX247CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdCAmJiBfX20gPCBfX247
ICsrX19tLCArK19fZmlyc3QpIAogICAgX19vdXRbX19tXSA9ICpfX2ZpcnN0OwoKICB3aGlsZSAo
X19maXJzdCAhPSBfX2xhc3QpIHsKICAgICsrX190OwogICAgX0Rpc3RhbmNlIF9fTSA9IF9fcmFu
ZG9tX251bWJlcihfX3QpOwogICAgaWYgKF9fTSA8IF9fbikKICAgICAgX19vdXRbX19NXSA9ICpf
X2ZpcnN0OwogICAgKytfX2ZpcnN0OwogIH0KCiAgcmV0dXJuIF9fb3V0ICsgX19tOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsCiAgICAgICAg
ICBjbGFzcyBfUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+Cl9SYW5kb21B
Y2Nlc3NJdGVyIF9fcmFuZG9tX3NhbXBsZShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIg
X19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0
ZXIgX19vdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tTnVtYmVy
R2VuZXJhdG9yJiBfX3JhbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBfRGlzdGFuY2UgX19uKQp7CiAgX0Rpc3RhbmNlIF9fbSA9IDA7CiAgX0Rpc3RhbmNlIF9fdCA9
IF9fbjsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0ICYmIF9fbSA8IF9fbjsgKytfX20sICsr
X19maXJzdCkKICAgIF9fb3V0W19fbV0gPSAqX19maXJzdDsKCiAgd2hpbGUgKF9fZmlyc3QgIT0g
X19sYXN0KSB7CiAgICArK19fdDsKICAgIF9EaXN0YW5jZSBfX00gPSBfX3JhbmQoX190KTsKICAg
IGlmIChfX00gPCBfX24pCiAgICAgIF9fb3V0W19fTV0gPSAqX19maXJzdDsKICAgICsrX19maXJz
dDsKICB9CgogIHJldHVybiBfX291dCArIF9fbTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0
ZXIsIGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyPgppbmxpbmUgX1JhbmRvbUFjY2Vzc0l0ZXIKcmFu
ZG9tX3NhbXBsZShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAg
ICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fb3V0X2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBf
X291dF9sYXN0KSAKewogIHJldHVybiBfX3JhbmRvbV9zYW1wbGUoX19maXJzdCwgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgX19vdXRfZmlyc3QsIF9fb3V0X2xhc3QgLSBfX291dF9m
aXJzdCk7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1JhbmRvbUFjY2Vz
c0l0ZXIsIAogICAgICAgICAgY2xhc3MgX1JhbmRvbU51bWJlckdlbmVyYXRvcj4KaW5saW5lIF9S
YW5kb21BY2Nlc3NJdGVyCnJhbmRvbV9zYW1wbGUoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX291dF9maXJzdCwg
X1JhbmRvbUFjY2Vzc0l0ZXIgX19vdXRfbGFzdCwKICAgICAgICAgICAgICBfUmFuZG9tTnVtYmVy
R2VuZXJhdG9yJiBfX3JhbmQpIAp7CiAgcmV0dXJuIF9fcmFuZG9tX3NhbXBsZShfX2ZpcnN0LCBf
X2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX291dF9maXJzdCwgX19yYW5kLAogICAg
ICAgICAgICAgICAgICAgICAgICAgX19vdXRfbGFzdCAtIF9fb3V0X2ZpcnN0KTsKfQoKIAoKdGVt
cGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1ByZWRpY2F0ZT4KX0ZvcndhcmRJdGVy
IF9fcGFydGl0aW9uKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LAoJCSAgICAgICAgIF9Gb3J3YXJkSXRl
ciBfX2xhc3QsCgkJCSBfUHJlZGljYXRlICAgX19wcmVkLAoJCQkgZm9yd2FyZF9pdGVyYXRvcl90
YWcpIHsKICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX2ZpcnN0OwoKICB3aGlsZSAo
X19wcmVkKCpfX2ZpcnN0KSkKICAgIGlmICgrK19fZmlyc3QgPT0gX19sYXN0KSByZXR1cm4gX19m
aXJzdDsKCiAgX0ZvcndhcmRJdGVyIF9fbmV4dCA9IF9fZmlyc3Q7CgogIHdoaWxlICgrK19fbmV4
dCAhPSBfX2xhc3QpCiAgICBpZiAoX19wcmVkKCpfX25leHQpKSB7CiAgICAgIHN3YXAoKl9fZmly
c3QsICpfX25leHQpOwogICAgICArK19fZmlyc3Q7CiAgICB9CgogIHJldHVybiBfX2ZpcnN0Owp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBfUHJlZGljYXRlPgpf
QmlkaXJlY3Rpb25hbEl0ZXIgX19wYXJ0aXRpb24oX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0
LAoJCQkgICAgICAgX1ByZWRpY2F0ZSBfX3ByZWQsCgkJCSAgICAgICBiaWRpcmVjdGlvbmFsX2l0
ZXJhdG9yX3RhZykgewogIHdoaWxlICh0cnVlKSB7CiAgICB3aGlsZSAodHJ1ZSkKICAgICAgaWYg
KF9fZmlyc3QgPT0gX19sYXN0KQogICAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgICBlbHNlIGlm
IChfX3ByZWQoKl9fZmlyc3QpKQogICAgICAgICsrX19maXJzdDsKICAgICAgZWxzZQogICAgICAg
IGJyZWFrOwogICAgLS1fX2xhc3Q7CiAgICB3aGlsZSAodHJ1ZSkKICAgICAgaWYgKF9fZmlyc3Qg
PT0gX19sYXN0KQogICAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgICBlbHNlIGlmICghX19wcmVk
KCpfX2xhc3QpKQogICAgICAgIC0tX19sYXN0OwogICAgICBlbHNlCiAgICAgICAgYnJlYWs7CiAg
ICBpdGVyX3N3YXAoX19maXJzdCwgX19sYXN0KTsKICAgICsrX19maXJzdDsKICB9Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9QcmVkaWNhdGU+CmlubGluZSBfRm9yd2Fy
ZEl0ZXIgcGFydGl0aW9uKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LAogICAJCQkgICAgICBfRm9yd2Fy
ZEl0ZXIgX19sYXN0LAoJCQkgICAgICBfUHJlZGljYXRlICAgX19wcmVkKSB7CiAgcmV0dXJuIF9f
cGFydGl0aW9uKF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkLCBfX2l0ZXJhdG9yX2NhdGVnb3J5KCBf
X2ZpcnN0ICkgKTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9QcmVk
aWNhdGUsIGNsYXNzIF9EaXN0YW5jZT4KX0ZvcndhcmRJdGVyIF9faW5wbGFjZV9zdGFibGVfcGFy
dGl0aW9uKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9QcmVkaWNhdGUgX19wcmVkLCBfRGlzdGFuY2UgX19sZW4pIHsKICBp
ZiAoX19sZW4gPT0gMSkKICAgIHJldHVybiBfX3ByZWQoKl9fZmlyc3QpID8gX19sYXN0IDogX19m
aXJzdDsKICBfRm9yd2FyZEl0ZXIgX19taWRkbGUgPSBfX2ZpcnN0OwogIGFkdmFuY2UoX19taWRk
bGUsIF9fbGVuIC8gMik7CiAgcmV0dXJuIHJvdGF0ZShfX2lucGxhY2Vfc3RhYmxlX3BhcnRpdGlv
bihfX2ZpcnN0LCBfX21pZGRsZSwgX19wcmVkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9fbGVuIC8gMiksCiAgICAgICAgICAgICAgICBfX21pZGRsZSwKICAg
ICAgICAgICAgICAgIF9faW5wbGFjZV9zdGFibGVfcGFydGl0aW9uKF9fbWlkZGxlLCBfX2xhc3Qs
IF9fcHJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbGVu
IC0gX19sZW4gLyAyKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9Q
b2ludGVyLCBjbGFzcyBfUHJlZGljYXRlLCAKICAgICAgICAgIGNsYXNzIF9EaXN0YW5jZT4KX0Zv
cndhcmRJdGVyIF9fc3RhYmxlX3BhcnRpdGlvbl9hZGFwdGl2ZShfRm9yd2FyZEl0ZXIgX19maXJz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIg
X19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QcmVkaWNh
dGUgX19wcmVkLCBfRGlzdGFuY2UgX19sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX1BvaW50ZXIgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fYnVmZmVyX3NpemUpIAp7CiAgaWYgKF9fbGVuIDw9
IF9fYnVmZmVyX3NpemUpIHsKICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdDEgPSBfX2ZpcnN0Owog
ICAgX1BvaW50ZXIgX19yZXN1bHQyID0gX19idWZmZXI7CiAgICBmb3IgKCA7IF9fZmlyc3QgIT0g
X19sYXN0IDsgKytfX2ZpcnN0KQogICAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkgewogICAgICAg
ICpfX3Jlc3VsdDEgPSAqX19maXJzdDsKICAgICAgICArK19fcmVzdWx0MTsKICAgICAgfQogICAg
ICBlbHNlIHsKICAgICAgICAqX19yZXN1bHQyID0gKl9fZmlyc3Q7CiAgICAgICAgKytfX3Jlc3Vs
dDI7CiAgICAgIH0KICAgIGNvcHkoX19idWZmZXIsIF9fcmVzdWx0MiwgX19yZXN1bHQxKTsKICAg
IHJldHVybiBfX3Jlc3VsdDE7CiAgfQogIGVsc2UgewogICAgX0ZvcndhcmRJdGVyIF9fbWlkZGxl
ID0gX19maXJzdDsKICAgIGFkdmFuY2UoX19taWRkbGUsIF9fbGVuIC8gMik7CiAgICByZXR1cm4g
cm90YXRlKF9fc3RhYmxlX3BhcnRpdGlvbl9hZGFwdGl2ZSgKICAgICAgICAgICAgICAgICAgICAg
ICAgICBfX2ZpcnN0LCBfX21pZGRsZSwgX19wcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAg
IF9fbGVuIC8gMiwgX19idWZmZXIsIF9fYnVmZmVyX3NpemUpLAogICAgICAgICAgICAgICAgICAg
IF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgIF9fc3RhYmxlX3BhcnRpdGlvbl9hZGFwdGl2
ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICBfX21pZGRsZSwgX19sYXN0LCBfX3ByZWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19sZW4gLSBfX2xlbiAvIDIsIF9fYnVmZmVyLCBfX2J1
ZmZlcl9zaXplKSk7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBf
UHJlZGljYXRlLCBjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIF9Gb3J3YXJkSXRl
cgpfX3N0YWJsZV9wYXJ0aXRpb25fYXV4KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0
ZXIgX19sYXN0LCAKICAgICAgICAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwgX1Rw
KiwgX0Rpc3RhbmNlKikKewogIF9UZW1wb3JhcnlfYnVmZmVyPF9Gb3J3YXJkSXRlciwgX1RwPiBf
X2J1ZihfX2ZpcnN0LCBfX2xhc3QpOwogIGlmIChfX2J1Zi5zaXplKCkgPiAwKQogICAgcmV0dXJu
IF9fc3RhYmxlX3BhcnRpdGlvbl9hZGFwdGl2ZShfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlKF9fYnVmLnJlcXVl
c3RlZF9zaXplKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2J1
Zi5iZWdpbigpLCBfX2J1Zi5zaXplKCkpOwogIGVsc2UKICAgIHJldHVybiBfX2lucGxhY2Vfc3Rh
YmxlX3BhcnRpdGlvbihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlKF9fYnVmLnJlcXVlc3RlZF9zaXplKCkpKTsK
fQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1ByZWRpY2F0ZT4KaW5saW5l
IF9Gb3J3YXJkSXRlciBzdGFibGVfcGFydGl0aW9uKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fbGFzdCwgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCkgewog
IGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAgIHJldHVybiBfX2ZpcnN0OwogIGVsc2UKICAgIHJl
dHVybiBfX3N0YWJsZV9wYXJ0aXRpb25fYXV4KF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0
ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHA+Cl9S
YW5kb21BY2Nlc3NJdGVyIF9fdW5ndWFyZGVkX3BhcnRpdGlvbihfUmFuZG9tQWNjZXNzSXRlciBf
X2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21B
Y2Nlc3NJdGVyIF9fbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfVHAgX19waXZvdCkgCnsKICB3aGlsZSAodHJ1ZSkgewogICAgd2hpbGUgKCpfX2ZpcnN0IDwg
X19waXZvdCkKICAgICAgKytfX2ZpcnN0OwogICAgLS1fX2xhc3Q7CiAgICB3aGlsZSAoX19waXZv
dCA8ICpfX2xhc3QpCiAgICAgIC0tX19sYXN0OwogICAgaWYgKCEoX19maXJzdCA8IF9fbGFzdCkp
CiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgaXRlcl9zd2FwKF9fZmlyc3QsIF9fbGFzdCk7CiAg
ICArK19fZmlyc3Q7CiAgfQp9ICAgIAoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVy
LCBjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlPgpfUmFuZG9tQWNjZXNzSXRlciBfX3VuZ3VhcmRl
ZF9wYXJ0aXRpb24oX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RwIF9fcGl2b3QsIF9Db21wYXJlIF9f
Y29tcCkgCnsKICB3aGlsZSAodHJ1ZSkgewogICAgd2hpbGUgKF9fY29tcCgqX19maXJzdCwgX19w
aXZvdCkpCiAgICAgICsrX19maXJzdDsKICAgIC0tX19sYXN0OwogICAgd2hpbGUgKF9fY29tcChf
X3Bpdm90LCAqX19sYXN0KSkKICAgICAgLS1fX2xhc3Q7CiAgICBpZiAoIShfX2ZpcnN0IDwgX19s
YXN0KSkKICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICBpdGVyX3N3YXAoX19maXJzdCwgX19sYXN0
KTsKICAgICsrX19maXJzdDsKICB9Cn0KCmNvbnN0IGludCBfX3N0bF90aHJlc2hvbGQgPSAxNjsK
CiAKCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1RwPgp2b2lkIF9f
dW5ndWFyZGVkX2xpbmVhcl9pbnNlcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfVHAgX192
YWwpIHsKICBfUmFuZG9tQWNjZXNzSXRlciBfX25leHQgPSBfX2xhc3Q7CiAgLS1fX25leHQ7CiAg
d2hpbGUgKF9fdmFsIDwgKl9fbmV4dCkgewogICAgKl9fbGFzdCA9ICpfX25leHQ7CiAgICBfX2xh
c3QgPSBfX25leHQ7CiAgICAtLV9fbmV4dDsKICB9CiAgKl9fbGFzdCA9IF9fdmFsOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+
CnZvaWQgX191bmd1YXJkZWRfbGluZWFyX2luc2VydChfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3Qs
IF9UcCBfX3ZhbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2Nv
bXApIHsKICBfUmFuZG9tQWNjZXNzSXRlciBfX25leHQgPSBfX2xhc3Q7CiAgLS1fX25leHQ7ICAK
ICB3aGlsZSAoX19jb21wKF9fdmFsLCAqX19uZXh0KSkgewogICAgKl9fbGFzdCA9ICpfX25leHQ7
CiAgICBfX2xhc3QgPSBfX25leHQ7CiAgICAtLV9fbmV4dDsKICB9CiAgKl9fbGFzdCA9IF9fdmFs
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcD4KaW5saW5l
IHZvaWQgX19saW5lYXJfaW5zZXJ0KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfVHAqKSB7CiAg
X1RwIF9fdmFsID0gKl9fbGFzdDsKICBpZiAoX192YWwgPCAqX19maXJzdCkgewogICAgY29weV9i
YWNrd2FyZChfX2ZpcnN0LCBfX2xhc3QsIF9fbGFzdCArIDEpOwogICAgKl9fZmlyc3QgPSBfX3Zh
bDsKICB9CiAgZWxzZQogICAgX191bmd1YXJkZWRfbGluZWFyX2luc2VydChfX2xhc3QsIF9fdmFs
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHAsIGNsYXNz
IF9Db21wYXJlPgppbmxpbmUgdm9pZCBfX2xpbmVhcl9pbnNlcnQoX1JhbmRvbUFjY2Vzc0l0ZXIg
X19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBf
X2xhc3QsIF9UcCosIF9Db21wYXJlIF9fY29tcCkgewogIF9UcCBfX3ZhbCA9ICpfX2xhc3Q7CiAg
aWYgKF9fY29tcChfX3ZhbCwgKl9fZmlyc3QpKSB7CiAgICBjb3B5X2JhY2t3YXJkKF9fZmlyc3Qs
IF9fbGFzdCwgX19sYXN0ICsgMSk7CiAgICAqX19maXJzdCA9IF9fdmFsOwogIH0KICBlbHNlCiAg
ICBfX3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9fbGFzdCwgX192YWwsIF9fY29tcCk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcj4Kdm9pZCBfX2luc2VydGlvbl9zb3J0KF9S
YW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCkgewogIGlm
IChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuOyAKICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyIF9f
aSA9IF9fZmlyc3QgKyAxOyBfX2kgIT0gX19sYXN0OyArK19faSkKICAgIF9fbGluZWFyX2luc2Vy
dChfX2ZpcnN0LCBfX2ksIF9fdmFsdWVfdHlwZSggX19maXJzdCApICk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX0NvbXBhcmU+CnZvaWQgX19pbnNlcnRpb25f
c29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApIHsKICBpZiAoX19maXJzdCA9
PSBfX2xhc3QpIHJldHVybjsKICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyIF9faSA9IF9fZmlyc3Qg
KyAxOyBfX2kgIT0gX19sYXN0OyArK19faSkKICAgIF9fbGluZWFyX2luc2VydChfX2ZpcnN0LCBf
X2ksIF9fdmFsdWVfdHlwZSggX19maXJzdCApICwgX19jb21wKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHA+CnZvaWQgX191bmd1YXJkZWRfaW5zZXJ0aW9u
X3NvcnRfYXV4KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCopIHsKICBmb3Ig
KF9SYW5kb21BY2Nlc3NJdGVyIF9faSA9IF9fZmlyc3Q7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQog
ICAgX191bmd1YXJkZWRfbGluZWFyX2luc2VydChfX2ksIF9UcCgqX19pKSk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcj4KaW5saW5lIHZvaWQgX191bmd1YXJkZWRfaW5zZXJ0
aW9uX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KSB7CiAgX191bmd1YXJkZWRfaW5z
ZXJ0aW9uX3NvcnRfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkg
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHAsIGNsYXNz
IF9Db21wYXJlPgp2b2lkIF9fdW5ndWFyZGVkX2luc2VydGlvbl9zb3J0X2F1eChfUmFuZG9tQWNj
ZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfVHAqLCBfQ29tcGFyZSBfX2NvbXApIHsKICBmb3IgKF9SYW5kb21BY2Nlc3NJdGVyIF9faSA9
IF9fZmlyc3Q7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogICAgX191bmd1YXJkZWRfbGluZWFyX2lu
c2VydChfX2ksIF9UcCgqX19pKSwgX19jb21wKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21B
Y2Nlc3NJdGVyLCBjbGFzcyBfQ29tcGFyZT4KaW5saW5lIHZvaWQgX191bmd1YXJkZWRfaW5zZXJ0
aW9uX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKSB7CiAgX191bmd1YXJk
ZWRfaW5zZXJ0aW9uX3NvcnRfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX192YWx1ZV90eXBlKCBfX2Zp
cnN0ICkgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXI+CnZvaWQgX19maW5hbF9pbnNlcnRpb25fc29y
dChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCkgewogIGlmIChfX2xhc3QgLSBfX2ZpcnN0ID4gX19z
dGxfdGhyZXNob2xkKSB7CiAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fZmlyc3QgKyBf
X3N0bF90aHJlc2hvbGQpOwogICAgX191bmd1YXJkZWRfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCAr
IF9fc3RsX3RocmVzaG9sZCwgX19sYXN0KTsKICB9CiAgZWxzZQogICAgX19pbnNlcnRpb25fc29y
dChfX2ZpcnN0LCBfX2xhc3QpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIs
IGNsYXNzIF9Db21wYXJlPgp2b2lkIF9fZmluYWxfaW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFjY2Vz
c0l0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNz
SXRlciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkgewogIGlmIChfX2xhc3QgLSBfX2ZpcnN0ID4g
X19zdGxfdGhyZXNob2xkKSB7CiAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fZmlyc3Qg
KyBfX3N0bF90aHJlc2hvbGQsIF9fY29tcCk7CiAgICBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29y
dChfX2ZpcnN0ICsgX19zdGxfdGhyZXNob2xkLCBfX2xhc3QsIF9fY29tcCk7CiAgfQogIGVsc2UK
ICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2NvbXApOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1NpemU+CmlubGluZSBfU2l6ZSBfX2xnKF9TaXplIF9fbikgewogIF9TaXplIF9f
azsKICBmb3IgKF9fayA9IDA7IF9fbiAhPSAxOyBfX24gPj49IDEpICsrX19rOwogIHJldHVybiBf
X2s7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1RwLCBjbGFz
cyBfU2l6ZT4Kdm9pZCBfX2ludHJvc29ydF9sb29wKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3Qs
CiAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCosCiAg
ICAgICAgICAgICAgICAgICAgICBfU2l6ZSBfX2RlcHRoX2xpbWl0KQp7CiAgd2hpbGUgKF9fbGFz
dCAtIF9fZmlyc3QgPiBfX3N0bF90aHJlc2hvbGQpIHsKICAgIGlmIChfX2RlcHRoX2xpbWl0ID09
IDApIHsKICAgICAgcGFydGlhbF9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19sYXN0KTsKICAgICAg
cmV0dXJuOwogICAgfQogICAgLS1fX2RlcHRoX2xpbWl0OwogICAgX1JhbmRvbUFjY2Vzc0l0ZXIg
X19jdXQgPQogICAgICBfX3VuZ3VhcmRlZF9wYXJ0aXRpb24oX19maXJzdCwgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX1RwKF9fbWVkaWFuKCpfX2ZpcnN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooX19maXJzdCArIChfX2xhc3QgLSBfX2Zp
cnN0KS8yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKF9fbGFz
dCAtIDEpKSkpOwogICAgX19pbnRyb3NvcnRfbG9vcChfX2N1dCwgX19sYXN0LCAoX1RwKikgMCwg
X19kZXB0aF9saW1pdCk7CiAgICBfX2xhc3QgPSBfX2N1dDsKICB9Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfU2l6ZSwgY2xhc3MgX0NvbXBh
cmU+CnZvaWQgX19pbnRyb3NvcnRfbG9vcChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAg
ICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfVHAqLAogICAgICAg
ICAgICAgICAgICAgICAgX1NpemUgX19kZXB0aF9saW1pdCwgX0NvbXBhcmUgX19jb21wKQp7CiAg
d2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiBfX3N0bF90aHJlc2hvbGQpIHsKICAgIGlmIChfX2Rl
cHRoX2xpbWl0ID09IDApIHsKICAgICAgcGFydGlhbF9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19s
YXN0LCBfX2NvbXApOwogICAgICByZXR1cm47CiAgICB9CiAgICAtLV9fZGVwdGhfbGltaXQ7CiAg
ICBfUmFuZG9tQWNjZXNzSXRlciBfX2N1dCA9CiAgICAgIF9fdW5ndWFyZGVkX3BhcnRpdGlvbihf
X2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVHAoX19tZWRpYW4o
Kl9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihfX2Zp
cnN0ICsgKF9fbGFzdCAtIF9fZmlyc3QpLzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICooX19sYXN0IC0gMSksIF9fY29tcCkpLAogICAgICAgX19jb21wKTsKICAg
IF9faW50cm9zb3J0X2xvb3AoX19jdXQsIF9fbGFzdCwgKF9UcCopIDAsIF9fZGVwdGhfbGltaXQs
IF9fY29tcCk7CiAgICBfX2xhc3QgPSBfX2N1dDsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFu
ZG9tQWNjZXNzSXRlcj4KaW5saW5lIHZvaWQgc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0
LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpIHsKICBpZiAoX19maXJzdCAhPSBfX2xhc3QpIHsK
ICAgIF9faW50cm9zb3J0X2xvb3AoX19maXJzdCwgX19sYXN0LAogICAgICAgICAgICAgICAgICAg
ICBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAsCiAgICAgICAgICAgICAgICAgICAgIF9fbGcoX19s
YXN0IC0gX19maXJzdCkgKiAyKTsKICAgIF9fZmluYWxfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCwg
X19sYXN0KTsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3Mg
X0NvbXBhcmU+CmlubGluZSB2b2lkIHNvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkg
ewogIGlmIChfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgX19pbnRyb3NvcnRfbG9vcChfX2ZpcnN0
LCBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fdmFsdWVfdHlwZSggX19maXJzdCApICwK
ICAgICAgICAgICAgICAgICAgICAgX19sZyhfX2xhc3QgLSBfX2ZpcnN0KSAqIDIsCiAgICAgICAg
ICAgICAgICAgICAgIF9fY29tcCk7CiAgICBfX2ZpbmFsX2luc2VydGlvbl9zb3J0KF9fZmlyc3Qs
IF9fbGFzdCwgX19jb21wKTsKICB9Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNz
SXRlcj4Kdm9pZCBfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KSB7
CiAgaWYgKF9fbGFzdCAtIF9fZmlyc3QgPCAxNSkgewogICAgX19pbnNlcnRpb25fc29ydChfX2Zp
cnN0LCBfX2xhc3QpOwogICAgcmV0dXJuOwogIH0KICBfUmFuZG9tQWNjZXNzSXRlciBfX21pZGRs
ZSA9IF9fZmlyc3QgKyAoX19sYXN0IC0gX19maXJzdCkgLyAyOwogIF9faW5wbGFjZV9zdGFibGVf
c29ydChfX2ZpcnN0LCBfX21pZGRsZSk7CiAgX19pbnBsYWNlX3N0YWJsZV9zb3J0KF9fbWlkZGxl
LCBfX2xhc3QpOwogIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19maXJzdCwgX19taWRkbGUsIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fbWlkZGxlIC0gX19maXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fbGFzdCAtIF9fbWlkZGxlKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQ29tcGFyZT4Kdm9pZCBfX2lucGxhY2Vfc3RhYmxl
X3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApIHsKICBpZiAoX19s
YXN0IC0gX19maXJzdCA8IDE1KSB7CiAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFz
dCwgX19jb21wKTsKICAgIHJldHVybjsKICB9CiAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19taWRkbGUg
PSBfX2ZpcnN0ICsgKF9fbGFzdCAtIF9fZmlyc3QpIC8gMjsKICBfX2lucGxhY2Vfc3RhYmxlX3Nv
cnQoX19maXJzdCwgX19taWRkbGUsIF9fY29tcCk7CiAgX19pbnBsYWNlX3N0YWJsZV9zb3J0KF9f
bWlkZGxlLCBfX2xhc3QsIF9fY29tcCk7CiAgX19tZXJnZV93aXRob3V0X2J1ZmZlcihfX2ZpcnN0
LCBfX21pZGRsZSwgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19taWRkbGUgLSBf
X2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX19sYXN0IC0gX19taWRkbGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFj
Y2Vzc0l0ZXIxLCBjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcjIsCiAgICAgICAgICBjbGFzcyBfRGlz
dGFuY2U+CnZvaWQgX19tZXJnZV9zb3J0X2xvb3AoX1JhbmRvbUFjY2Vzc0l0ZXIxIF9fZmlyc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIxIF9fbGFzdCwgCiAgICAg
ICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIyIF9fcmVzdWx0LCBfRGlzdGFuY2Ug
X19zdGVwX3NpemUpIHsKICBfRGlzdGFuY2UgX190d29fc3RlcCA9IDIgKiBfX3N0ZXBfc2l6ZTsK
CiAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPj0gX190d29fc3RlcCkgewogICAgX19yZXN1bHQg
PSBtZXJnZShfX2ZpcnN0LCBfX2ZpcnN0ICsgX19zdGVwX3NpemUsCiAgICAgICAgICAgICAgICAg
ICAgIF9fZmlyc3QgKyBfX3N0ZXBfc2l6ZSwgX19maXJzdCArIF9fdHdvX3N0ZXAsCiAgICAgICAg
ICAgICAgICAgICAgIF9fcmVzdWx0KTsKICAgIF9fZmlyc3QgKz0gX190d29fc3RlcDsKICB9Cgog
IF9fc3RlcF9zaXplID0gbWluKF9EaXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwgX19zdGVwX3Np
emUpOwogIG1lcmdlKF9fZmlyc3QsIF9fZmlyc3QgKyBfX3N0ZXBfc2l6ZSwgX19maXJzdCArIF9f
c3RlcF9zaXplLCBfX2xhc3QsCiAgICAgICAgX19yZXN1bHQpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1JhbmRvbUFjY2Vzc0l0ZXIxLCBjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcjIsCiAgICAgICAgICBj
bGFzcyBfRGlzdGFuY2UsIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9fbWVyZ2Vfc29ydF9sb29wKF9S
YW5kb21BY2Nlc3NJdGVyMSBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21B
Y2Nlc3NJdGVyMSBfX2xhc3QsIAogICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJ
dGVyMiBfX3Jlc3VsdCwgX0Rpc3RhbmNlIF9fc3RlcF9zaXplLAogICAgICAgICAgICAgICAgICAg
ICAgIF9Db21wYXJlIF9fY29tcCkgewogIF9EaXN0YW5jZSBfX3R3b19zdGVwID0gMiAqIF9fc3Rl
cF9zaXplOwoKICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+PSBfX3R3b19zdGVwKSB7CiAgICBf
X3Jlc3VsdCA9IG1lcmdlKF9fZmlyc3QsIF9fZmlyc3QgKyBfX3N0ZXBfc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgX19maXJzdCArIF9fc3RlcF9zaXplLCBfX2ZpcnN0ICsgX190d29fc3RlcCwK
ICAgICAgICAgICAgICAgICAgICAgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgIF9fY29t
cCk7CiAgICBfX2ZpcnN0ICs9IF9fdHdvX3N0ZXA7CiAgfQogIF9fc3RlcF9zaXplID0gbWluKF9E
aXN0YW5jZShfX2xhc3QgLSBfX2ZpcnN0KSwgX19zdGVwX3NpemUpOwoKICBtZXJnZShfX2ZpcnN0
LCBfX2ZpcnN0ICsgX19zdGVwX3NpemUsCiAgICAgICAgX19maXJzdCArIF9fc3RlcF9zaXplLCBf
X2xhc3QsCiAgICAgICAgX19yZXN1bHQsCiAgICAgICAgX19jb21wKTsKfQoKY29uc3QgaW50IF9f
c3RsX2NodW5rX3NpemUgPSA3OwogICAgICAgIAp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vz
c0l0ZXIsIGNsYXNzIF9EaXN0YW5jZT4Kdm9pZCBfX2NodW5rX2luc2VydGlvbl9zb3J0KF9SYW5k
b21BY2Nlc3NJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRv
bUFjY2Vzc0l0ZXIgX19sYXN0LCBfRGlzdGFuY2UgX19jaHVua19zaXplKQp7CiAgd2hpbGUgKF9f
bGFzdCAtIF9fZmlyc3QgPj0gX19jaHVua19zaXplKSB7CiAgICBfX2luc2VydGlvbl9zb3J0KF9f
Zmlyc3QsIF9fZmlyc3QgKyBfX2NodW5rX3NpemUpOwogICAgX19maXJzdCArPSBfX2NodW5rX3Np
emU7CiAgfQogIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0KTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfRGlzdGFuY2UsIGNsYXNzIF9Db21wYXJl
Pgp2b2lkIF9fY2h1bmtfaW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UgX19jaHVua19zaXplLCBfQ29tcGFy
ZSBfX2NvbXApCnsKICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+PSBfX2NodW5rX3NpemUpIHsK
ICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19maXJzdCArIF9fY2h1bmtfc2l6ZSwgX19j
b21wKTsKICAgIF9fZmlyc3QgKz0gX19jaHVua19zaXplOwogIH0KICBfX2luc2VydGlvbl9zb3J0
KF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nl
c3NJdGVyLCBjbGFzcyBfUG9pbnRlciwgY2xhc3MgX0Rpc3RhbmNlPgp2b2lkIF9fbWVyZ2Vfc29y
dF93aXRoX2J1ZmZlcihfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfUG9pbnRlciBfX2J1ZmZlciwgX0Rpc3RhbmNlKikgewogIF9EaXN0YW5j
ZSBfX2xlbiA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgX1BvaW50ZXIgX19idWZmZXJfbGFzdCA9IF9f
YnVmZmVyICsgX19sZW47CgogIF9EaXN0YW5jZSBfX3N0ZXBfc2l6ZSA9IF9fc3RsX2NodW5rX3Np
emU7CiAgX19jaHVua19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fc3RlcF9zaXpl
KTsKCiAgd2hpbGUgKF9fc3RlcF9zaXplIDwgX19sZW4pIHsKICAgIF9fbWVyZ2Vfc29ydF9sb29w
KF9fZmlyc3QsIF9fbGFzdCwgX19idWZmZXIsIF9fc3RlcF9zaXplKTsKICAgIF9fc3RlcF9zaXpl
ICo9IDI7CiAgICBfX21lcmdlX3NvcnRfbG9vcChfX2J1ZmZlciwgX19idWZmZXJfbGFzdCwgX19m
aXJzdCwgX19zdGVwX3NpemUpOwogICAgX19zdGVwX3NpemUgKj0gMjsKICB9Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1BvaW50ZXIsIGNsYXNzIF9EaXN0YW5j
ZSwKICAgICAgICAgIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9fbWVyZ2Vfc29ydF93aXRoX2J1ZmZl
cihfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfUG9pbnRlciBfX2J1ZmZlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlKiwgX0NvbXBhcmUgX19jb21wKSB7CiAgX0Rp
c3RhbmNlIF9fbGVuID0gX19sYXN0IC0gX19maXJzdDsKICBfUG9pbnRlciBfX2J1ZmZlcl9sYXN0
ID0gX19idWZmZXIgKyBfX2xlbjsKCiAgX0Rpc3RhbmNlIF9fc3RlcF9zaXplID0gX19zdGxfY2h1
bmtfc2l6ZTsKICBfX2NodW5rX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19zdGVw
X3NpemUsIF9fY29tcCk7CgogIHdoaWxlIChfX3N0ZXBfc2l6ZSA8IF9fbGVuKSB7CiAgICBfX21l
cmdlX3NvcnRfbG9vcChfX2ZpcnN0LCBfX2xhc3QsIF9fYnVmZmVyLCBfX3N0ZXBfc2l6ZSwgX19j
b21wKTsKICAgIF9fc3RlcF9zaXplICo9IDI7CiAgICBfX21lcmdlX3NvcnRfbG9vcChfX2J1ZmZl
ciwgX19idWZmZXJfbGFzdCwgX19maXJzdCwgX19zdGVwX3NpemUsIF9fY29tcCk7CiAgICBfX3N0
ZXBfc2l6ZSAqPSAyOwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBj
bGFzcyBfUG9pbnRlciwgY2xhc3MgX0Rpc3RhbmNlPgp2b2lkIF9fc3RhYmxlX3NvcnRfYWRhcHRp
dmUoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9Qb2ludGVyIF9fYnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fYnVmZmVyX3NpemUpIHsKICBfRGlzdGFuY2Ug
X19sZW4gPSAoX19sYXN0IC0gX19maXJzdCArIDEpIC8gMjsKICBfUmFuZG9tQWNjZXNzSXRlciBf
X21pZGRsZSA9IF9fZmlyc3QgKyBfX2xlbjsKICBpZiAoX19sZW4gPiBfX2J1ZmZlcl9zaXplKSB7
CiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwg
X19idWZmZXJfc2l6ZSk7CiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fbWlkZGxlLCBfX2xh
c3QsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplKTsKICB9CiAgZWxzZSB7CiAgICBfX21lcmdlX3Nv
cnRfd2l0aF9idWZmZXIoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVyLCAoX0Rpc3RhbmNlKikw
KTsKICAgIF9fbWVyZ2Vfc29ydF93aXRoX2J1ZmZlcihfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZl
ciwgKF9EaXN0YW5jZSopMCk7CiAgfQogIF9fbWVyZ2VfYWRhcHRpdmUoX19maXJzdCwgX19taWRk
bGUsIF9fbGFzdCwgX0Rpc3RhbmNlKF9fbWlkZGxlIC0gX19maXJzdCksIAogICAgICAgICAgICAg
ICAgICAgX0Rpc3RhbmNlKF9fbGFzdCAtIF9fbWlkZGxlKSwgX19idWZmZXIsIF9fYnVmZmVyX3Np
emUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9Qb2ludGVy
LCBjbGFzcyBfRGlzdGFuY2UsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmU+CnZvaWQgX19zdGFi
bGVfc29ydF9hZGFwdGl2ZShfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX1BvaW50ZXIgX19idWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSwg
X0NvbXBhcmUgX19jb21wKSB7CiAgX0Rpc3RhbmNlIF9fbGVuID0gKF9fbGFzdCAtIF9fZmlyc3Qg
KyAxKSAvIDI7CiAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19taWRkbGUgPSBfX2ZpcnN0ICsgX19sZW47
CiAgaWYgKF9fbGVuID4gX19idWZmZXJfc2l6ZSkgewogICAgX19zdGFibGVfc29ydF9hZGFwdGl2
ZShfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIsIF9fYnVmZmVyX3NpemUsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2NvbXApOwogICAgX19zdGFibGVfc29ydF9hZGFwdGl2ZShfX21p
ZGRsZSwgX19sYXN0LCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29tcCk7CiAgfQogIGVsc2UgewogICAgX19tZXJnZV9zb3J0X3dpdGhfYnVm
ZmVyKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwgKF9EaXN0YW5jZSopMCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29tcCk7CiAgICBfX21lcmdlX3NvcnRfd2l0aF9idWZm
ZXIoX19taWRkbGUsIF9fbGFzdCwgX19idWZmZXIsIChfRGlzdGFuY2UqKTAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwogIH0KICBfX21lcmdlX2FkYXB0aXZlKF9fZmly
c3QsIF9fbWlkZGxlLCBfX2xhc3QsIF9EaXN0YW5jZShfX21pZGRsZSAtIF9fZmlyc3QpLCAKICAg
ICAgICAgICAgICAgICAgIF9EaXN0YW5jZShfX2xhc3QgLSBfX21pZGRsZSksIF9fYnVmZmVyLCBf
X2J1ZmZlcl9zaXplLAogICAgICAgICAgICAgICAgICAgX19jb21wKTsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5l
IHZvaWQgX19zdGFibGVfc29ydF9hdXgoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfVHAqLCBf
RGlzdGFuY2UqKSB7CiAgX1RlbXBvcmFyeV9idWZmZXI8X1JhbmRvbUFjY2Vzc0l0ZXIsIF9UcD4g
YnVmKF9fZmlyc3QsIF9fbGFzdCk7CiAgaWYgKGJ1Zi5iZWdpbigpID09IDApCiAgICBfX2lucGxh
Y2Vfc3RhYmxlX3NvcnQoX19maXJzdCwgX19sYXN0KTsKICBlbHNlIAogICAgX19zdGFibGVfc29y
dF9hZGFwdGl2ZShfX2ZpcnN0LCBfX2xhc3QsIGJ1Zi5iZWdpbigpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBfRGlzdGFuY2UoYnVmLnNpemUoKSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jh
bmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlLCBjbGFzcyBfQ29tcGFy
ZT4KaW5saW5lIHZvaWQgX19zdGFibGVfc29ydF9hdXgoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0
LCBfVHAqLCBfRGlzdGFuY2UqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFy
ZSBfX2NvbXApIHsKICBfVGVtcG9yYXJ5X2J1ZmZlcjxfUmFuZG9tQWNjZXNzSXRlciwgX1RwPiBi
dWYoX19maXJzdCwgX19sYXN0KTsKICBpZiAoYnVmLmJlZ2luKCkgPT0gMCkKICAgIF9faW5wbGFj
ZV9zdGFibGVfc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7CiAgZWxzZSAKICAgIF9fc3Rh
YmxlX3NvcnRfYWRhcHRpdmUoX19maXJzdCwgX19sYXN0LCBidWYuYmVnaW4oKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlKGJ1Zi5zaXplKCkpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXI+
CmlubGluZSB2b2lkIHN0YWJsZV9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCkgewogIF9fc3RhYmxl
X3NvcnRfYXV4KF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICBfX3ZhbHVlX3R5
cGUoIF9fZmlyc3QgKSAsCiAgICAgICAgICAgICAgICAgICAgX19kaXN0YW5jZV90eXBlKCBfX2Zp
cnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQ29t
cGFyZT4KaW5saW5lIHZvaWQgc3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfQ29tcGFy
ZSBfX2NvbXApIHsKICBfX3N0YWJsZV9zb3J0X2F1eChfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgLAogICAgICAgICAgICAgICAgICAg
IF9fZGlzdGFuY2VfdHlwZSggX19maXJzdCApICwgCiAgICAgICAgICAgICAgICAgICAgX19jb21w
KTsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHA+CnZv
aWQgX19wYXJ0aWFsX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vz
c0l0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19s
YXN0LCBfVHAqKSB7CiAgbWFrZV9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlKTsKICBmb3IgKF9SYW5k
b21BY2Nlc3NJdGVyIF9faSA9IF9fbWlkZGxlOyBfX2kgPCBfX2xhc3Q7ICsrX19pKQogICAgaWYg
KCpfX2kgPCAqX19maXJzdCkgCiAgICAgIF9fcG9wX2hlYXAoX19maXJzdCwgX19taWRkbGUsIF9f
aSwgX1RwKCpfX2kpLAogICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZSggX19maXJzdCAp
ICk7CiAgc29ydF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9S
YW5kb21BY2Nlc3NJdGVyPgppbmxpbmUgdm9pZCBwYXJ0aWFsX3NvcnQoX1JhbmRvbUFjY2Vzc0l0
ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9f
bWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0
KSB7CiAgX19wYXJ0aWFsX3NvcnQoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX192YWx1ZV90
eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBj
bGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9fcGFydGlhbF9zb3J0KF9SYW5kb21BY2Nl
c3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAg
ICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX1RwKiwgX0NvbXBhcmUgX19jb21wKSB7
CiAgbWFrZV9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2NvbXApOwogIGZvciAoX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19pID0gX19taWRkbGU7IF9faSA8IF9fbGFzdDsgKytfX2kpCiAgICBpZiAoX19j
b21wKCpfX2ksICpfX2ZpcnN0KSkKICAgICAgX19wb3BfaGVhcChfX2ZpcnN0LCBfX21pZGRsZSwg
X19pLCBfVHAoKl9faSksIF9fY29tcCwKICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUo
IF9fZmlyc3QgKSApOwogIHNvcnRfaGVhcChfX2ZpcnN0LCBfX21pZGRsZSwgX19jb21wKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQ29tcGFyZT4KaW5saW5l
IHZvaWQgcGFydGlhbF9zb3J0KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX21pZGRsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKSB7CiAg
X19wYXJ0aWFsX3NvcnQoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX192YWx1ZV90eXBlKCBf
X2ZpcnN0ICkgLCBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3Mg
X1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9EaXN0YW5jZSwKICAgICAgICAgIGNsYXNzIF9UcD4K
X1JhbmRvbUFjY2Vzc0l0ZXIgX19wYXJ0aWFsX3NvcnRfY29weShfSW5wdXRJdGVyIF9fZmlyc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlciBfX2xh
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vz
c0l0ZXIgX19yZXN1bHRfZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19yZXN1bHRfbGFzdCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlKiwgX1RwKikgewogIGlmIChfX3Jlc3Vs
dF9maXJzdCA9PSBfX3Jlc3VsdF9sYXN0KSByZXR1cm4gX19yZXN1bHRfbGFzdDsKICBfUmFuZG9t
QWNjZXNzSXRlciBfX3Jlc3VsdF9yZWFsX2xhc3QgPSBfX3Jlc3VsdF9maXJzdDsKICB3aGlsZShf
X2ZpcnN0ICE9IF9fbGFzdCAmJiBfX3Jlc3VsdF9yZWFsX2xhc3QgIT0gX19yZXN1bHRfbGFzdCkg
ewogICAgKl9fcmVzdWx0X3JlYWxfbGFzdCA9ICpfX2ZpcnN0OwogICAgKytfX3Jlc3VsdF9yZWFs
X2xhc3Q7CiAgICArK19fZmlyc3Q7CiAgfQogIG1ha2VfaGVhcChfX3Jlc3VsdF9maXJzdCwgX19y
ZXN1bHRfcmVhbF9sYXN0KTsKICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpIHsKICAgIGlmICgq
X19maXJzdCA8ICpfX3Jlc3VsdF9maXJzdCkgCiAgICAgIF9fYWRqdXN0X2hlYXAoX19yZXN1bHRf
Zmlyc3QsIF9EaXN0YW5jZSgwKSwKICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UoX19yZXN1
bHRfcmVhbF9sYXN0IC0gX19yZXN1bHRfZmlyc3QpLAogICAgICAgICAgICAgICAgICAgIF9UcCgq
X19maXJzdCkpOwogICAgKytfX2ZpcnN0OwogIH0KICBzb3J0X2hlYXAoX19yZXN1bHRfZmlyc3Qs
IF9fcmVzdWx0X3JlYWxfbGFzdCk7CiAgcmV0dXJuIF9fcmVzdWx0X3JlYWxfbGFzdDsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyPgppbmxpbmUg
X1JhbmRvbUFjY2Vzc0l0ZXIKcGFydGlhbF9zb3J0X2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBf
SW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19y
ZXN1bHRfZmlyc3QsCiAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0
X2xhc3QpIHsKICByZXR1cm4gX19wYXJ0aWFsX3NvcnRfY29weShfX2ZpcnN0LCBfX2xhc3QsIF9f
cmVzdWx0X2ZpcnN0LCBfX3Jlc3VsdF9sYXN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2Rpc3RhbmNlX3R5cGUoIF9fcmVzdWx0X2ZpcnN0ICkgLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fdmFsdWVfdHlwZSggX19maXJzdCApICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
SW5wdXRJdGVyLCBjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX0NvbXBhcmUsCiAgICAg
ICAgICBjbGFzcyBfRGlzdGFuY2UsIGNsYXNzIF9UcD4KX1JhbmRvbUFjY2Vzc0l0ZXIgX19wYXJ0
aWFsX3NvcnRfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19yZXN1bHRfZmlyc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIg
X19yZXN1bHRfbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
Q29tcGFyZSBfX2NvbXAsIF9EaXN0YW5jZSosIF9UcCopIHsKICBpZiAoX19yZXN1bHRfZmlyc3Qg
PT0gX19yZXN1bHRfbGFzdCkgcmV0dXJuIF9fcmVzdWx0X2xhc3Q7CiAgX1JhbmRvbUFjY2Vzc0l0
ZXIgX19yZXN1bHRfcmVhbF9sYXN0ID0gX19yZXN1bHRfZmlyc3Q7CiAgd2hpbGUoX19maXJzdCAh
PSBfX2xhc3QgJiYgX19yZXN1bHRfcmVhbF9sYXN0ICE9IF9fcmVzdWx0X2xhc3QpIHsKICAgICpf
X3Jlc3VsdF9yZWFsX2xhc3QgPSAqX19maXJzdDsKICAgICsrX19yZXN1bHRfcmVhbF9sYXN0Owog
ICAgKytfX2ZpcnN0OwogIH0KICBtYWtlX2hlYXAoX19yZXN1bHRfZmlyc3QsIF9fcmVzdWx0X3Jl
YWxfbGFzdCwgX19jb21wKTsKICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpIHsKICAgIGlmIChf
X2NvbXAoKl9fZmlyc3QsICpfX3Jlc3VsdF9maXJzdCkpCiAgICAgIF9fYWRqdXN0X2hlYXAoX19y
ZXN1bHRfZmlyc3QsIF9EaXN0YW5jZSgwKSwKICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2Uo
X19yZXN1bHRfcmVhbF9sYXN0IC0gX19yZXN1bHRfZmlyc3QpLAogICAgICAgICAgICAgICAgICAg
IF9UcCgqX19maXJzdCksCiAgICAgICAgICAgICAgICAgICAgX19jb21wKTsKICAgICsrX19maXJz
dDsKICB9CiAgc29ydF9oZWFwKF9fcmVzdWx0X2ZpcnN0LCBfX3Jlc3VsdF9yZWFsX2xhc3QsIF9f
Y29tcCk7CiAgcmV0dXJuIF9fcmVzdWx0X3JlYWxfbGFzdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9J
bnB1dEl0ZXIsIGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQ29tcGFyZT4KaW5saW5l
IF9SYW5kb21BY2Nlc3NJdGVyCnBhcnRpYWxfc29ydF9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwg
X0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9f
cmVzdWx0X2ZpcnN0LAogICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX3Jlc3Vs
dF9sYXN0LCBfQ29tcGFyZSBfX2NvbXApIHsKICByZXR1cm4gX19wYXJ0aWFsX3NvcnRfY29weShf
X2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0X2ZpcnN0LCBfX3Jlc3VsdF9sYXN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9fY29tcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
X2Rpc3RhbmNlX3R5cGUoIF9fcmVzdWx0X2ZpcnN0ICkgLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9fdmFsdWVfdHlwZSggX19maXJzdCApICk7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBf
UmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1RwPgp2b2lkIF9fbnRoX2VsZW1lbnQoX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19udGgsCiAgICAgICAgICAgICAg
ICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCopIHsKICB3aGlsZSAoX19sYXN0IC0g
X19maXJzdCA+IDMpIHsKICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fY3V0ID0KICAgICAgX191bmd1
YXJkZWRfcGFydGl0aW9uKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9UcChfX21lZGlhbigqX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqKF9fZmlyc3QgKyAoX19sYXN0IC0gX19maXJzdCkvMiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihfX2xhc3QgLSAxKSkpKTsKICAgIGlmIChf
X2N1dCA8PSBfX250aCkKICAgICAgX19maXJzdCA9IF9fY3V0OwogICAgZWxzZSAKICAgICAgX19s
YXN0ID0gX19jdXQ7CiAgfQogIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0KTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyPgppbmxpbmUgdm9pZCBudGhfZWxlbWVu
dChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX250aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KSB7CiAgX19udGhf
ZWxlbWVudChfX2ZpcnN0LCBfX250aCwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3Mg
X0NvbXBhcmU+CnZvaWQgX19udGhfZWxlbWVudChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBf
UmFuZG9tQWNjZXNzSXRlciBfX250aCwKICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJ
dGVyIF9fbGFzdCwgX1RwKiwgX0NvbXBhcmUgX19jb21wKSB7CiAgd2hpbGUgKF9fbGFzdCAtIF9f
Zmlyc3QgPiAzKSB7CiAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2N1dCA9CiAgICAgIF9fdW5ndWFy
ZGVkX3BhcnRpdGlvbihfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfVHAoX19tZWRpYW4oKl9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKihfX2ZpcnN0ICsgKF9fbGFzdCAtIF9fZmlyc3QpLzIpLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKF9fbGFzdCAtIDEpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29tcCkpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb21wKTsKICAgIGlmIChfX2N1dCA8PSBfX250aCkKICAgICAgX19maXJzdCA9
IF9fY3V0OwogICAgZWxzZSAKICAgICAgX19sYXN0ID0gX19jdXQ7CiAgfQogIF9faW5zZXJ0aW9u
X3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRv
bUFjY2Vzc0l0ZXIsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgdm9pZCBudGhfZWxlbWVudChfUmFu
ZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX250aCwKICAgICAgICAg
ICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkgewogIF9f
bnRoX2VsZW1lbnQoX19maXJzdCwgX19udGgsIF9fbGFzdCwgX192YWx1ZV90eXBlKCBfX2ZpcnN0
ICkgLCBfX2NvbXApOwp9CgoKIAoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3Mg
X1RwLCBjbGFzcyBfRGlzdGFuY2U+Cl9Gb3J3YXJkSXRlciBfX2xvd2VyX2JvdW5kKF9Gb3J3YXJk
SXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBfVHAmIF9fdmFsLCBfRGlzdGFuY2UqKSAKewogIF9EaXN0YW5jZSBfX2xlbiA9
IDA7CiAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfX2xlbik7CiAgX0Rpc3RhbmNlIF9faGFs
ZjsKICBfRm9yd2FyZEl0ZXIgX19taWRkbGU7CgogIHdoaWxlIChfX2xlbiA+IDApIHsKICAgIF9f
aGFsZiA9IF9fbGVuID4+IDE7CiAgICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgICBhZHZhbmNlKF9f
bWlkZGxlLCBfX2hhbGYpOwogICAgaWYgKCpfX21pZGRsZSA8IF9fdmFsKSB7CiAgICAgIF9fZmly
c3QgPSBfX21pZGRsZTsKICAgICAgKytfX2ZpcnN0OwogICAgICBfX2xlbiA9IF9fbGVuIC0gX19o
YWxmIC0gMTsKICAgIH0KICAgIGVsc2UKICAgICAgX19sZW4gPSBfX2hhbGY7CiAgfQogIHJldHVy
biBfX2ZpcnN0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+Cmlu
bGluZSBfRm9yd2FyZEl0ZXIgbG93ZXJfYm91bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3
YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
X1RwJiBfX3ZhbCkgewogIHJldHVybiBfX2xvd2VyX2JvdW5kKF9fZmlyc3QsIF9fbGFzdCwgX192
YWwsCiAgICAgICAgICAgICAgICAgICAgICAgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgKTsK
fQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFy
ZSwgY2xhc3MgX0Rpc3RhbmNlPgpfRm9yd2FyZEl0ZXIgX19sb3dlcl9ib3VuZChfRm9yd2FyZEl0
ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgX1RwJiBfX3ZhbCwgX0NvbXBhcmUgX19jb21wLCBfRGlzdGFuY2UqKQp7CiAg
X0Rpc3RhbmNlIF9fbGVuID0gMDsKICBkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9fbGVuKTsK
ICBfRGlzdGFuY2UgX19oYWxmOwogIF9Gb3J3YXJkSXRlciBfX21pZGRsZTsKCiAgd2hpbGUgKF9f
bGVuID4gMCkgewogICAgX19oYWxmID0gX19sZW4gPj4gMTsKICAgIF9fbWlkZGxlID0gX19maXJz
dDsKICAgIGFkdmFuY2UoX19taWRkbGUsIF9faGFsZik7CiAgICBpZiAoX19jb21wKCpfX21pZGRs
ZSwgX192YWwpKSB7CiAgICAgIF9fZmlyc3QgPSBfX21pZGRsZTsKICAgICAgKytfX2ZpcnN0Owog
ICAgICBfX2xlbiA9IF9fbGVuIC0gX19oYWxmIC0gMTsKICAgIH0KICAgIGVsc2UKICAgICAgX19s
ZW4gPSBfX2hhbGY7CiAgfQogIHJldHVybiBfX2ZpcnN0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0Zv
cndhcmRJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgX0ZvcndhcmRJdGVy
IGxvd2VyX2JvdW5kKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192YWwsIF9Db21wYXJl
IF9fY29tcCkgewogIHJldHVybiBfX2xvd2VyX2JvdW5kKF9fZmlyc3QsIF9fbGFzdCwgX192YWws
IF9fY29tcCwKICAgICAgICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3Qg
KSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9E
aXN0YW5jZT4KX0ZvcndhcmRJdGVyIF9fdXBwZXJfYm91bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3Qs
IF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9U
cCYgX192YWwsIF9EaXN0YW5jZSopCnsKICBfRGlzdGFuY2UgX19sZW4gPSAwOwogIGRpc3RhbmNl
KF9fZmlyc3QsIF9fbGFzdCwgX19sZW4pOwogIF9EaXN0YW5jZSBfX2hhbGY7CiAgX0ZvcndhcmRJ
dGVyIF9fbWlkZGxlOwoKICB3aGlsZSAoX19sZW4gPiAwKSB7CiAgICBfX2hhbGYgPSBfX2xlbiA+
PiAxOwogICAgX19taWRkbGUgPSBfX2ZpcnN0OwogICAgYWR2YW5jZShfX21pZGRsZSwgX19oYWxm
KTsKICAgIGlmIChfX3ZhbCA8ICpfX21pZGRsZSkKICAgICAgX19sZW4gPSBfX2hhbGY7CiAgICBl
bHNlIHsKICAgICAgX19maXJzdCA9IF9fbWlkZGxlOwogICAgICArK19fZmlyc3Q7CiAgICAgIF9f
bGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOwogICAgfQogIH0KICByZXR1cm4gX19maXJzdDsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwPgppbmxpbmUgX0ZvcndhcmRJ
dGVyIHVwcGVyX2JvdW5kKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192YWwpIHsKICBy
ZXR1cm4gX191cHBlcl9ib3VuZChfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsLAogICAgICAgICAgICAg
ICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZSggX19maXJzdCApICk7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9EaXN0YW5j
ZT4KX0ZvcndhcmRJdGVyIF9fdXBwZXJfYm91bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3
YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192
YWwsIF9Db21wYXJlIF9fY29tcCwgX0Rpc3RhbmNlKikKewogIF9EaXN0YW5jZSBfX2xlbiA9IDA7
CiAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfX2xlbik7CiAgX0Rpc3RhbmNlIF9faGFsZjsK
ICBfRm9yd2FyZEl0ZXIgX19taWRkbGU7CgogIHdoaWxlIChfX2xlbiA+IDApIHsKICAgIF9faGFs
ZiA9IF9fbGVuID4+IDE7CiAgICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgICBhZHZhbmNlKF9fbWlk
ZGxlLCBfX2hhbGYpOwogICAgaWYgKF9fY29tcChfX3ZhbCwgKl9fbWlkZGxlKSkKICAgICAgX19s
ZW4gPSBfX2hhbGY7CiAgICBlbHNlIHsKICAgICAgX19maXJzdCA9IF9fbWlkZGxlOwogICAgICAr
K19fZmlyc3Q7CiAgICAgIF9fbGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOwogICAgfQogIH0KICBy
ZXR1cm4gX19maXJzdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1Rw
LCBjbGFzcyBfQ29tcGFyZT4KaW5saW5lIF9Gb3J3YXJkSXRlciB1cHBlcl9ib3VuZChfRm9yd2Fy
ZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBfVHAmIF9fdmFsLCBfQ29tcGFyZSBfX2NvbXApIHsKICByZXR1cm4g
X191cHBlcl9ib3VuZChfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsLCBfX2NvbXAsCiAgICAgICAgICAg
ICAgICAgICAgICAgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+CnBhaXI8X0Zvcndh
cmRJdGVyLCBfRm9yd2FyZEl0ZXI+Cl9fZXF1YWxfcmFuZ2UoX0ZvcndhcmRJdGVyIF9fZmlyc3Qs
IF9Gb3J3YXJkSXRlciBfX2xhc3QsIGNvbnN0IF9UcCYgX192YWwsCiAgICAgICAgICAgICAgX0Rp
c3RhbmNlKikKewogIF9EaXN0YW5jZSBfX2xlbiA9IDA7CiAgZGlzdGFuY2UoX19maXJzdCwgX19s
YXN0LCBfX2xlbik7CiAgX0Rpc3RhbmNlIF9faGFsZjsKICBfRm9yd2FyZEl0ZXIgX19taWRkbGUs
IF9fbGVmdCwgX19yaWdodDsKCiAgd2hpbGUgKF9fbGVuID4gMCkgewogICAgX19oYWxmID0gX19s
ZW4gPj4gMTsKICAgIF9fbWlkZGxlID0gX19maXJzdDsKICAgIGFkdmFuY2UoX19taWRkbGUsIF9f
aGFsZik7CiAgICBpZiAoKl9fbWlkZGxlIDwgX192YWwpIHsKICAgICAgX19maXJzdCA9IF9fbWlk
ZGxlOwogICAgICArK19fZmlyc3Q7CiAgICAgIF9fbGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOwog
ICAgfQogICAgZWxzZSBpZiAoX192YWwgPCAqX19taWRkbGUpCiAgICAgIF9fbGVuID0gX19oYWxm
OwogICAgZWxzZSB7CiAgICAgIF9fbGVmdCA9IGxvd2VyX2JvdW5kKF9fZmlyc3QsIF9fbWlkZGxl
LCBfX3ZhbCk7CiAgICAgIGFkdmFuY2UoX19maXJzdCwgX19sZW4pOwogICAgICBfX3JpZ2h0ID0g
dXBwZXJfYm91bmQoKytfX21pZGRsZSwgX19maXJzdCwgX192YWwpOwogICAgICByZXR1cm4gcGFp
cjxfRm9yd2FyZEl0ZXIsIF9Gb3J3YXJkSXRlcj4oX19sZWZ0LCBfX3JpZ2h0KTsKICAgIH0KICB9
CiAgcmV0dXJuIHBhaXI8X0ZvcndhcmRJdGVyLCBfRm9yd2FyZEl0ZXI+KF9fZmlyc3QsIF9fZmly
c3QpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+CmlubGluZSBw
YWlyPF9Gb3J3YXJkSXRlciwgX0ZvcndhcmRJdGVyPgplcXVhbF9yYW5nZShfRm9yd2FyZEl0ZXIg
X19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbCkgewogIHJldHVy
biBfX2VxdWFsX3JhbmdlKF9fZmlyc3QsIF9fbGFzdCwgX192YWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9G
b3J3YXJkSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0Rpc3RhbmNlPgpw
YWlyPF9Gb3J3YXJkSXRlciwgX0ZvcndhcmRJdGVyPgpfX2VxdWFsX3JhbmdlKF9Gb3J3YXJkSXRl
ciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LCBjb25zdCBfVHAmIF9fdmFsLAogICAgICAg
ICAgICAgIF9Db21wYXJlIF9fY29tcCwgX0Rpc3RhbmNlKikKewogIF9EaXN0YW5jZSBfX2xlbiA9
IDA7CiAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfX2xlbik7CiAgX0Rpc3RhbmNlIF9faGFs
ZjsKICBfRm9yd2FyZEl0ZXIgX19taWRkbGUsIF9fbGVmdCwgX19yaWdodDsKCiAgd2hpbGUgKF9f
bGVuID4gMCkgewogICAgX19oYWxmID0gX19sZW4gPj4gMTsKICAgIF9fbWlkZGxlID0gX19maXJz
dDsKICAgIGFkdmFuY2UoX19taWRkbGUsIF9faGFsZik7CiAgICBpZiAoX19jb21wKCpfX21pZGRs
ZSwgX192YWwpKSB7CiAgICAgIF9fZmlyc3QgPSBfX21pZGRsZTsKICAgICAgKytfX2ZpcnN0Owog
ICAgICBfX2xlbiA9IF9fbGVuIC0gX19oYWxmIC0gMTsKICAgIH0KICAgIGVsc2UgaWYgKF9fY29t
cChfX3ZhbCwgKl9fbWlkZGxlKSkKICAgICAgX19sZW4gPSBfX2hhbGY7CiAgICBlbHNlIHsKICAg
ICAgX19sZWZ0ID0gbG93ZXJfYm91bmQoX19maXJzdCwgX19taWRkbGUsIF9fdmFsLCBfX2NvbXAp
OwogICAgICBhZHZhbmNlKF9fZmlyc3QsIF9fbGVuKTsKICAgICAgX19yaWdodCA9IHVwcGVyX2Jv
dW5kKCsrX19taWRkbGUsIF9fZmlyc3QsIF9fdmFsLCBfX2NvbXApOwogICAgICByZXR1cm4gcGFp
cjxfRm9yd2FyZEl0ZXIsIF9Gb3J3YXJkSXRlcj4oX19sZWZ0LCBfX3JpZ2h0KTsKICAgIH0KICB9
CiAgcmV0dXJuIHBhaXI8X0ZvcndhcmRJdGVyLCBfRm9yd2FyZEl0ZXI+KF9fZmlyc3QsIF9fZmly
c3QpOwp9ICAgICAgICAgICAKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9U
cCwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSBwYWlyPF9Gb3J3YXJkSXRlciwgX0ZvcndhcmRJdGVy
PgplcXVhbF9yYW5nZShfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwg
Y29uc3QgX1RwJiBfX3ZhbCwKICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKSB7CiAgcmV0dXJu
IF9fZXF1YWxfcmFuZ2UoX19maXJzdCwgX19sYXN0LCBfX3ZhbCwgX19jb21wLAogICAgICAgICAg
ICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZSggX19maXJzdCApICk7Cn0gCgp0ZW1wbGF0ZSA8
Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+CmJvb2wgYmluYXJ5X3NlYXJjaChfRm9yd2Fy
ZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgIGNv
bnN0IF9UcCYgX192YWwpIHsKICBfRm9yd2FyZEl0ZXIgX19pID0gbG93ZXJfYm91bmQoX19maXJz
dCwgX19sYXN0LCBfX3ZhbCk7CiAgcmV0dXJuIF9faSAhPSBfX2xhc3QgJiYgIShfX3ZhbCA8ICpf
X2kpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9D
b21wYXJlPgpib29sIGJpbmFyeV9zZWFyY2goX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJk
SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9fdmFsLAogICAgICAg
ICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKSB7CiAgX0ZvcndhcmRJdGVyIF9faSA9IGxvd2Vy
X2JvdW5kKF9fZmlyc3QsIF9fbGFzdCwgX192YWwsIF9fY29tcCk7CiAgcmV0dXJuIF9faSAhPSBf
X2xhc3QgJiYgIV9fY29tcChfX3ZhbCwgKl9faSk7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBfSW5w
dXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9PdXRwdXRJdGVyPgpfT3V0cHV0SXRl
ciBtZXJnZShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAg
ICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIsCiAg
ICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0KSB7CiAgd2hpbGUgKF9fZmlyc3Qx
ICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikgewogICAgaWYgKCpfX2ZpcnN0MiA8
ICpfX2ZpcnN0MSkgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDI7CiAgICAgICsrX19maXJz
dDI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICAr
K19fZmlyc3QxOwogICAgfQogICAgKytfX3Jlc3VsdDsKICB9CiAgcmV0dXJuIGNvcHkoX19maXJz
dDIsIF9fbGFzdDIsIGNvcHkoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KSk7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9PdXRwdXRJ
dGVyLAogICAgICAgICAgY2xhc3MgX0NvbXBhcmU+Cl9PdXRwdXRJdGVyIG1lcmdlKF9JbnB1dEl0
ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICBfSW5w
dXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAg
X091dHB1dEl0ZXIgX19yZXN1bHQsIF9Db21wYXJlIF9fY29tcCkgewogIHdoaWxlIChfX2ZpcnN0
MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpIHsKICAgIGlmIChfX2NvbXAoKl9f
Zmlyc3QyLCAqX19maXJzdDEpKSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MjsKICAgICAg
KytfX2ZpcnN0MjsKICAgIH0KICAgIGVsc2UgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7
CiAgICAgICsrX19maXJzdDE7CiAgICB9CiAgICArK19fcmVzdWx0OwogIH0KICByZXR1cm4gY29w
eShfX2ZpcnN0MiwgX19sYXN0MiwgY29weShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpKTsK
fQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlciwgY2xhc3MgX0Rpc3RhbmNl
Pgp2b2lkIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19taWRkbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9f
bGVuMikgewogIGlmIChfX2xlbjEgPT0gMCB8fCBfX2xlbjIgPT0gMCkKICAgIHJldHVybjsKICBp
ZiAoX19sZW4xICsgX19sZW4yID09IDIpIHsKICAgIGlmICgqX19taWRkbGUgPCAqX19maXJzdCkK
ICAgICAgaXRlcl9zd2FwKF9fZmlyc3QsIF9fbWlkZGxlKTsKICAgIHJldHVybjsKICB9CiAgX0Jp
ZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3RfY3V0ID0gX19maXJzdDsKICBfQmlkaXJlY3Rpb25hbEl0
ZXIgX19zZWNvbmRfY3V0ID0gX19taWRkbGU7CiAgX0Rpc3RhbmNlIF9fbGVuMTEgPSAwOwogIF9E
aXN0YW5jZSBfX2xlbjIyID0gMDsKICBpZiAoX19sZW4xID4gX19sZW4yKSB7CiAgICBfX2xlbjEx
ID0gX19sZW4xIC8gMjsKICAgIGFkdmFuY2UoX19maXJzdF9jdXQsIF9fbGVuMTEpOwogICAgX19z
ZWNvbmRfY3V0ID0gbG93ZXJfYm91bmQoX19taWRkbGUsIF9fbGFzdCwgKl9fZmlyc3RfY3V0KTsK
ICAgIGRpc3RhbmNlKF9fbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGVuMjIpOwogIH0KICBlbHNl
IHsKICAgIF9fbGVuMjIgPSBfX2xlbjIgLyAyOwogICAgYWR2YW5jZShfX3NlY29uZF9jdXQsIF9f
bGVuMjIpOwogICAgX19maXJzdF9jdXQgPSB1cHBlcl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwg
Kl9fc2Vjb25kX2N1dCk7CiAgICBkaXN0YW5jZShfX2ZpcnN0LCBfX2ZpcnN0X2N1dCwgX19sZW4x
MSk7CiAgfQogIF9CaWRpcmVjdGlvbmFsSXRlciBfX25ld19taWRkbGUKICAgID0gcm90YXRlKF9f
Zmlyc3RfY3V0LCBfX21pZGRsZSwgX19zZWNvbmRfY3V0KTsKICBfX21lcmdlX3dpdGhvdXRfYnVm
ZmVyKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX25ld19taWRkbGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBfX2xlbjExLCBfX2xlbjIyKTsKICBfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9fbmV3
X21pZGRsZSwgX19zZWNvbmRfY3V0LCBfX2xhc3QsIF9fbGVuMSAtIF9fbGVuMTEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2xlbjIgLSBfX2xlbjIyKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9C
aWRpcmVjdGlvbmFsSXRlciwgY2xhc3MgX0Rpc3RhbmNlLCBjbGFzcyBfQ29tcGFyZT4Kdm9pZCBf
X21lcmdlX3dpdGhvdXRfYnVmZmVyKF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbWlkZGxlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSBfX2xlbjEsIF9EaXN0YW5jZSBfX2xlbjIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICBpZiAoX19sZW4x
ID09IDAgfHwgX19sZW4yID09IDApCiAgICByZXR1cm47CiAgaWYgKF9fbGVuMSArIF9fbGVuMiA9
PSAyKSB7CiAgICBpZiAoX19jb21wKCpfX21pZGRsZSwgKl9fZmlyc3QpKQogICAgICBpdGVyX3N3
YXAoX19maXJzdCwgX19taWRkbGUpOwogICAgcmV0dXJuOwogIH0KICBfQmlkaXJlY3Rpb25hbEl0
ZXIgX19maXJzdF9jdXQgPSBfX2ZpcnN0OwogIF9CaWRpcmVjdGlvbmFsSXRlciBfX3NlY29uZF9j
dXQgPSBfX21pZGRsZTsKICBfRGlzdGFuY2UgX19sZW4xMSA9IDA7CiAgX0Rpc3RhbmNlIF9fbGVu
MjIgPSAwOwogIGlmIChfX2xlbjEgPiBfX2xlbjIpIHsKICAgIF9fbGVuMTEgPSBfX2xlbjEgLyAy
OwogICAgYWR2YW5jZShfX2ZpcnN0X2N1dCwgX19sZW4xMSk7CiAgICBfX3NlY29uZF9jdXQgPSBs
b3dlcl9ib3VuZChfX21pZGRsZSwgX19sYXN0LCAqX19maXJzdF9jdXQsIF9fY29tcCk7CiAgICBk
aXN0YW5jZShfX21pZGRsZSwgX19zZWNvbmRfY3V0LCBfX2xlbjIyKTsKICB9CiAgZWxzZSB7CiAg
ICBfX2xlbjIyID0gX19sZW4yIC8gMjsKICAgIGFkdmFuY2UoX19zZWNvbmRfY3V0LCBfX2xlbjIy
KTsKICAgIF9fZmlyc3RfY3V0ID0gdXBwZXJfYm91bmQoX19maXJzdCwgX19taWRkbGUsICpfX3Nl
Y29uZF9jdXQsIF9fY29tcCk7CiAgICBkaXN0YW5jZShfX2ZpcnN0LCBfX2ZpcnN0X2N1dCwgX19s
ZW4xMSk7CiAgfQogIF9CaWRpcmVjdGlvbmFsSXRlciBfX25ld19taWRkbGUKICAgID0gcm90YXRl
KF9fZmlyc3RfY3V0LCBfX21pZGRsZSwgX19zZWNvbmRfY3V0KTsKICBfX21lcmdlX3dpdGhvdXRf
YnVmZmVyKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX25ld19taWRkbGUsIF9fbGVuMTEsIF9fbGVu
MjIsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwogIF9fbWVyZ2Vfd2l0aG91dF9i
dWZmZXIoX19uZXdfbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGFzdCwgX19sZW4xIC0gX19sZW4x
MSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9fbGVuMiAtIF9fbGVuMjIsIF9fY29tcCk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIxLCBjbGFzcyBfQmlkaXJlY3Rpb25h
bEl0ZXIyLAogICAgICAgICAgY2xhc3MgX0Rpc3RhbmNlPgpfQmlkaXJlY3Rpb25hbEl0ZXIxIF9f
cm90YXRlX2FkYXB0aXZlKF9CaWRpcmVjdGlvbmFsSXRlcjEgX19maXJzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fbWlkZGxlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjEg
X19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSBf
X2xlbjEsIF9EaXN0YW5jZSBfX2xlbjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSkgewogIF9CaWRpcmVjdGlv
bmFsSXRlcjIgX19idWZmZXJfZW5kOwogIGlmIChfX2xlbjEgPiBfX2xlbjIgJiYgX19sZW4yIDw9
IF9fYnVmZmVyX3NpemUpIHsKICAgIF9fYnVmZmVyX2VuZCA9IGNvcHkoX19taWRkbGUsIF9fbGFz
dCwgX19idWZmZXIpOwogICAgY29weV9iYWNrd2FyZChfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0
KTsKICAgIHJldHVybiBjb3B5KF9fYnVmZmVyLCBfX2J1ZmZlcl9lbmQsIF9fZmlyc3QpOwogIH0K
ICBlbHNlIGlmIChfX2xlbjEgPD0gX19idWZmZXJfc2l6ZSkgewogICAgX19idWZmZXJfZW5kID0g
Y29weShfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIpOwogICAgY29weShfX21pZGRsZSwgX19s
YXN0LCBfX2ZpcnN0KTsKICAgIHJldHVybiBjb3B5X2JhY2t3YXJkKF9fYnVmZmVyLCBfX2J1ZmZl
cl9lbmQsIF9fbGFzdCk7CiAgfQogIGVsc2UKICAgIHJldHVybiByb3RhdGUoX19maXJzdCwgX19t
aWRkbGUsIF9fbGFzdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIxLCBj
bGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIyLAogICAgICAgICAgY2xhc3MgX0JpZGlyZWN0aW9uYWxJ
dGVyMz4KX0JpZGlyZWN0aW9uYWxJdGVyMyBfX21lcmdlX2JhY2t3YXJkKF9CaWRpcmVjdGlvbmFs
SXRlcjEgX19maXJzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlk
aXJlY3Rpb25hbEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fZmlyc3QyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX2xhc3QyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMyBfX3Jlc3VsdCkgewog
IGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxKQogICAgcmV0dXJuIGNvcHlfYmFja3dhcmQoX19maXJz
dDIsIF9fbGFzdDIsIF9fcmVzdWx0KTsKICBpZiAoX19maXJzdDIgPT0gX19sYXN0MikKICAgIHJl
dHVybiBjb3B5X2JhY2t3YXJkKF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3VsdCk7CiAgLS1fX2xh
c3QxOwogIC0tX19sYXN0MjsKICB3aGlsZSAodHJ1ZSkgewogICAgaWYgKCpfX2xhc3QyIDwgKl9f
bGFzdDEpIHsKICAgICAgKi0tX19yZXN1bHQgPSAqX19sYXN0MTsKICAgICAgaWYgKF9fZmlyc3Qx
ID09IF9fbGFzdDEpCiAgICAgICAgcmV0dXJuIGNvcHlfYmFja3dhcmQoX19maXJzdDIsICsrX19s
YXN0MiwgX19yZXN1bHQpOwogICAgICAtLV9fbGFzdDE7CiAgICB9CiAgICBlbHNlIHsKICAgICAg
Ki0tX19yZXN1bHQgPSAqX19sYXN0MjsKICAgICAgaWYgKF9fZmlyc3QyID09IF9fbGFzdDIpCiAg
ICAgICAgcmV0dXJuIGNvcHlfYmFja3dhcmQoX19maXJzdDEsICsrX19sYXN0MSwgX19yZXN1bHQp
OwogICAgICAtLV9fbGFzdDI7CiAgICB9CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0
aW9uYWxJdGVyMSwgY2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyMiwKICAgICAgICAgIGNsYXNzIF9C
aWRpcmVjdGlvbmFsSXRlcjMsIGNsYXNzIF9Db21wYXJlPgpfQmlkaXJlY3Rpb25hbEl0ZXIzIF9f
bWVyZ2VfYmFja3dhcmQoX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2ZpcnN0MSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjEgX19sYXN0MSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19m
aXJzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25h
bEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlk
aXJlY3Rpb25hbEl0ZXIzIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX0NvbXBhcmUgX19jb21wKSB7CiAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEpCiAgICBy
ZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MiwgX19sYXN0MiwgX19yZXN1bHQpOwogIGlmIChf
X2ZpcnN0MiA9PSBfX2xhc3QyKQogICAgcmV0dXJuIGNvcHlfYmFja3dhcmQoX19maXJzdDEsIF9f
bGFzdDEsIF9fcmVzdWx0KTsKICAtLV9fbGFzdDE7CiAgLS1fX2xhc3QyOwogIHdoaWxlICh0cnVl
KSB7CiAgICBpZiAoX19jb21wKCpfX2xhc3QyLCAqX19sYXN0MSkpIHsKICAgICAgKi0tX19yZXN1
bHQgPSAqX19sYXN0MTsKICAgICAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEpCiAgICAgICAgcmV0
dXJuIGNvcHlfYmFja3dhcmQoX19maXJzdDIsICsrX19sYXN0MiwgX19yZXN1bHQpOwogICAgICAt
LV9fbGFzdDE7CiAgICB9CiAgICBlbHNlIHsKICAgICAgKi0tX19yZXN1bHQgPSAqX19sYXN0MjsK
ICAgICAgaWYgKF9fZmlyc3QyID09IF9fbGFzdDIpCiAgICAgICAgcmV0dXJuIGNvcHlfYmFja3dh
cmQoX19maXJzdDEsICsrX19sYXN0MSwgX19yZXN1bHQpOwogICAgICAtLV9fbGFzdDI7CiAgICB9
CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBfRGlzdGFu
Y2UsIGNsYXNzIF9Qb2ludGVyPgp2b2lkIF9fbWVyZ2VfYWRhcHRpdmUoX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19t
aWRkbGUsIAogICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSBfX2xlbjEsIF9EaXN0YW5jZSBfX2xlbjIs
CiAgICAgICAgICAgICAgICAgICAgICBfUG9pbnRlciBfX2J1ZmZlciwgX0Rpc3RhbmNlIF9fYnVm
ZmVyX3NpemUpIHsKICBpZiAoX19sZW4xIDw9IF9fbGVuMiAmJiBfX2xlbjEgPD0gX19idWZmZXJf
c2l6ZSkgewogICAgX1BvaW50ZXIgX19idWZmZXJfZW5kID0gY29weShfX2ZpcnN0LCBfX21pZGRs
ZSwgX19idWZmZXIpOwogICAgbWVyZ2UoX19idWZmZXIsIF9fYnVmZmVyX2VuZCwgX19taWRkbGUs
IF9fbGFzdCwgX19maXJzdCk7CiAgfQogIGVsc2UgaWYgKF9fbGVuMiA8PSBfX2J1ZmZlcl9zaXpl
KSB7CiAgICBfUG9pbnRlciBfX2J1ZmZlcl9lbmQgPSBjb3B5KF9fbWlkZGxlLCBfX2xhc3QsIF9f
YnVmZmVyKTsKICAgIF9fbWVyZ2VfYmFja3dhcmQoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVy
LCBfX2J1ZmZlcl9lbmQsIF9fbGFzdCk7CiAgfQogIGVsc2UgewogICAgX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fZmlyc3RfY3V0ID0gX19maXJzdDsKICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX3NlY29u
ZF9jdXQgPSBfX21pZGRsZTsKICAgIF9EaXN0YW5jZSBfX2xlbjExID0gMDsKICAgIF9EaXN0YW5j
ZSBfX2xlbjIyID0gMDsKICAgIGlmIChfX2xlbjEgPiBfX2xlbjIpIHsKICAgICAgX19sZW4xMSA9
IF9fbGVuMSAvIDI7CiAgICAgIGFkdmFuY2UoX19maXJzdF9jdXQsIF9fbGVuMTEpOwogICAgICBf
X3NlY29uZF9jdXQgPSBsb3dlcl9ib3VuZChfX21pZGRsZSwgX19sYXN0LCAqX19maXJzdF9jdXQp
OwogICAgICBkaXN0YW5jZShfX21pZGRsZSwgX19zZWNvbmRfY3V0LCBfX2xlbjIyKTsgCiAgICB9
CiAgICBlbHNlIHsKICAgICAgX19sZW4yMiA9IF9fbGVuMiAvIDI7CiAgICAgIGFkdmFuY2UoX19z
ZWNvbmRfY3V0LCBfX2xlbjIyKTsKICAgICAgX19maXJzdF9jdXQgPSB1cHBlcl9ib3VuZChfX2Zp
cnN0LCBfX21pZGRsZSwgKl9fc2Vjb25kX2N1dCk7CiAgICAgIGRpc3RhbmNlKF9fZmlyc3QsIF9f
Zmlyc3RfY3V0LCBfX2xlbjExKTsKICAgIH0KICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX25ld19t
aWRkbGUgPQogICAgICBfX3JvdGF0ZV9hZGFwdGl2ZShfX2ZpcnN0X2N1dCwgX19taWRkbGUsIF9f
c2Vjb25kX2N1dCwgX19sZW4xIC0gX19sZW4xMSwKICAgICAgICAgICAgICAgICAgICAgICAgX19s
ZW4yMiwgX19idWZmZXIsIF9fYnVmZmVyX3NpemUpOwogICAgX19tZXJnZV9hZGFwdGl2ZShfX2Zp
cnN0LCBfX2ZpcnN0X2N1dCwgX19uZXdfbWlkZGxlLCBfX2xlbjExLAogICAgICAgICAgICAgICAg
ICAgICBfX2xlbjIyLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7CiAgICBfX21lcmdlX2FkYXB0
aXZlKF9fbmV3X21pZGRsZSwgX19zZWNvbmRfY3V0LCBfX2xhc3QsIF9fbGVuMSAtIF9fbGVuMTEs
CiAgICAgICAgICAgICAgICAgICAgIF9fbGVuMiAtIF9fbGVuMjIsIF9fYnVmZmVyLCBfX2J1ZmZl
cl9zaXplKTsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNz
IF9EaXN0YW5jZSwgY2xhc3MgX1BvaW50ZXIsCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZT4Kdm9p
ZCBfX21lcmdlX2FkYXB0aXZlKF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LCAKICAgICAgICAg
ICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwgCiAgICAgICAgICAgICAg
ICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg
X0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMiwKICAgICAgICAgICAgICAgICAgICAg
IF9Qb2ludGVyIF9fYnVmZmVyLCBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkgewogIGlmIChfX2xlbjEgPD0gX19sZW4yICYmIF9f
bGVuMSA8PSBfX2J1ZmZlcl9zaXplKSB7CiAgICBfUG9pbnRlciBfX2J1ZmZlcl9lbmQgPSBjb3B5
KF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlcik7CiAgICBtZXJnZShfX2J1ZmZlciwgX19idWZm
ZXJfZW5kLCBfX21pZGRsZSwgX19sYXN0LCBfX2ZpcnN0LCBfX2NvbXApOwogIH0KICBlbHNlIGlm
IChfX2xlbjIgPD0gX19idWZmZXJfc2l6ZSkgewogICAgX1BvaW50ZXIgX19idWZmZXJfZW5kID0g
Y29weShfX21pZGRsZSwgX19sYXN0LCBfX2J1ZmZlcik7CiAgICBfX21lcmdlX2JhY2t3YXJkKF9f
Zmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwgX19idWZmZXJfZW5kLCBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgIF9fY29tcCk7CiAgfQogIGVsc2UgewogICAgX0JpZGlyZWN0aW9uYWxJdGVy
IF9fZmlyc3RfY3V0ID0gX19maXJzdDsKICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX3NlY29uZF9j
dXQgPSBfX21pZGRsZTsKICAgIF9EaXN0YW5jZSBfX2xlbjExID0gMDsKICAgIF9EaXN0YW5jZSBf
X2xlbjIyID0gMDsKICAgIGlmIChfX2xlbjEgPiBfX2xlbjIpIHsKICAgICAgX19sZW4xMSA9IF9f
bGVuMSAvIDI7CiAgICAgIGFkdmFuY2UoX19maXJzdF9jdXQsIF9fbGVuMTEpOwogICAgICBfX3Nl
Y29uZF9jdXQgPSBsb3dlcl9ib3VuZChfX21pZGRsZSwgX19sYXN0LCAqX19maXJzdF9jdXQsIF9f
Y29tcCk7CiAgICAgIGRpc3RhbmNlKF9fbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGVuMjIpOyAg
IAogICAgfQogICAgZWxzZSB7CiAgICAgIF9fbGVuMjIgPSBfX2xlbjIgLyAyOwogICAgICBhZHZh
bmNlKF9fc2Vjb25kX2N1dCwgX19sZW4yMik7CiAgICAgIF9fZmlyc3RfY3V0ID0gdXBwZXJfYm91
bmQoX19maXJzdCwgX19taWRkbGUsICpfX3NlY29uZF9jdXQsIF9fY29tcCk7CiAgICAgIGRpc3Rh
bmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX2xlbjExKTsKICAgIH0KICAgIF9CaWRpcmVjdGlv
bmFsSXRlciBfX25ld19taWRkbGUgPQogICAgICBfX3JvdGF0ZV9hZGFwdGl2ZShfX2ZpcnN0X2N1
dCwgX19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19sZW4xIC0gX19sZW4xMSwKICAgICAgICAgICAg
ICAgICAgICAgICAgX19sZW4yMiwgX19idWZmZXIsIF9fYnVmZmVyX3NpemUpOwogICAgX19tZXJn
ZV9hZGFwdGl2ZShfX2ZpcnN0LCBfX2ZpcnN0X2N1dCwgX19uZXdfbWlkZGxlLCBfX2xlbjExLAog
ICAgICAgICAgICAgICAgICAgICBfX2xlbjIyLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSwgX19j
b21wKTsKICAgIF9fbWVyZ2VfYWRhcHRpdmUoX19uZXdfbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9f
bGFzdCwgX19sZW4xIC0gX19sZW4xMSwKICAgICAgICAgICAgICAgICAgICAgX19sZW4yIC0gX19s
ZW4yMiwgX19idWZmZXIsIF9fYnVmZmVyX3NpemUsIF9fY29tcCk7CiAgfQp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4KaW5s
aW5lIHZvaWQgX19pbnBsYWNlX21lcmdlX2F1eChfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19taWRk
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9f
bGFzdCwgX1RwKiwgX0Rpc3RhbmNlKikgewogIF9EaXN0YW5jZSBfX2xlbjEgPSAwOwogIGRpc3Rh
bmNlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xlbjEpOwogIF9EaXN0YW5jZSBfX2xlbjIgPSAwOwog
IGRpc3RhbmNlKF9fbWlkZGxlLCBfX2xhc3QsIF9fbGVuMik7CgogIF9UZW1wb3JhcnlfYnVmZmVy
PF9CaWRpcmVjdGlvbmFsSXRlciwgX1RwPiBfX2J1ZihfX2ZpcnN0LCBfX2xhc3QpOwogIGlmIChf
X2J1Zi5iZWdpbigpID09IDApCiAgICBfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9fZmlyc3QsIF9f
bWlkZGxlLCBfX2xhc3QsIF9fbGVuMSwgX19sZW4yKTsKICBlbHNlCiAgICBfX21lcmdlX2FkYXB0
aXZlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsIF9fbGVuMSwgX19sZW4yLAogICAgICAgICAg
ICAgICAgICAgICBfX2J1Zi5iZWdpbigpLCBfRGlzdGFuY2UoX19idWYuc2l6ZSgpKSk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9UcCwgCiAgICAgICAgICBj
bGFzcyBfRGlzdGFuY2UsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgdm9pZCBfX2lucGxhY2VfbWVy
Z2VfYXV4KF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LCBfVHAqLCBfRGlzdGFuY2Uq
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkgewogIF9E
aXN0YW5jZSBfX2xlbjEgPSAwOwogIGRpc3RhbmNlKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xlbjEp
OwogIF9EaXN0YW5jZSBfX2xlbjIgPSAwOwogIGRpc3RhbmNlKF9fbWlkZGxlLCBfX2xhc3QsIF9f
bGVuMik7CgogIF9UZW1wb3JhcnlfYnVmZmVyPF9CaWRpcmVjdGlvbmFsSXRlciwgX1RwPiBfX2J1
ZihfX2ZpcnN0LCBfX2xhc3QpOwogIGlmIChfX2J1Zi5iZWdpbigpID09IDApCiAgICBfX21lcmdl
X3dpdGhvdXRfYnVmZmVyKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsIF9fbGVuMSwgX19sZW4y
LCBfX2NvbXApOwogIGVsc2UKICAgIF9fbWVyZ2VfYWRhcHRpdmUoX19maXJzdCwgX19taWRkbGUs
IF9fbGFzdCwgX19sZW4xLCBfX2xlbjIsCiAgICAgICAgICAgICAgICAgICAgIF9fYnVmLmJlZ2lu
KCksIF9EaXN0YW5jZShfX2J1Zi5zaXplKCkpLAogICAgICAgICAgICAgICAgICAgICBfX2NvbXAp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyPgppbmxpbmUgdm9pZCBpbnBs
YWNlX21lcmdlKF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0KSB7CiAgaWYgKF9fZmlyc3QgPT0gX19taWRk
bGUgfHwgX19taWRkbGUgPT0gX19sYXN0KQogICAgcmV0dXJuOwogIF9faW5wbGFjZV9tZXJnZV9h
dXgoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fdmFs
dWVfdHlwZSggX19maXJzdCApICwgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlciwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSB2
b2lkIGlucGxhY2VfbWVyZ2UoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkg
ewogIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxlIHx8IF9fbWlkZGxlID09IF9fbGFzdCkKICAgIHJl
dHVybjsKICBfX2lucGxhY2VfbWVyZ2VfYXV4KF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QsCiAg
ICAgICAgICAgICAgICAgICAgICBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAsIF9fZGlzdGFuY2Vf
dHlwZSggX19maXJzdCApICwKICAgICAgICAgICAgICAgICAgICAgIF9fY29tcCk7Cn0KCiAKIAog
CiAKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjI+CmJvb2wg
aW5jbHVkZXMoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAg
ICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9fbGFzdDIpIHsKICB3
aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAgaWYg
KCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgICAgcmV0dXJuIGZhbHNlOwogICAgZWxzZSBpZigq
X19maXJzdDEgPCAqX19maXJzdDIpIAogICAgICArK19fZmlyc3QxOwogICAgZWxzZQogICAgICAr
K19fZmlyc3QxLCArK19fZmlyc3QyOwoKICByZXR1cm4gX19maXJzdDIgPT0gX19sYXN0MjsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX0Nv
bXBhcmU+CmJvb2wgaW5jbHVkZXMoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9f
bGFzdDEsCiAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9f
bGFzdDIsIF9Db21wYXJlIF9fY29tcCkgewogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYm
IF9fZmlyc3QyICE9IF9fbGFzdDIpCiAgICBpZiAoX19jb21wKCpfX2ZpcnN0MiwgKl9fZmlyc3Qx
KSkKICAgICAgcmV0dXJuIGZhbHNlOwogICAgZWxzZSBpZihfX2NvbXAoKl9fZmlyc3QxLCAqX19m
aXJzdDIpKSAKICAgICAgKytfX2ZpcnN0MTsKICAgIGVsc2UKICAgICAgKytfX2ZpcnN0MSwgKytf
X2ZpcnN0MjsKCiAgcmV0dXJuIF9fZmlyc3QyID09IF9fbGFzdDI7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9PdXRwdXRJdGVyPgpfT3V0
cHV0SXRlciBzZXRfdW5pb24oX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFz
dDEsCiAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRl
cjIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0KSB7
CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0Mikgewog
ICAgaWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikgewogICAgICAqX19yZXN1bHQgPSAqX19maXJz
dDE7CiAgICAgICsrX19maXJzdDE7CiAgICB9CiAgICBlbHNlIGlmICgqX19maXJzdDIgPCAqX19m
aXJzdDEpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QyOwogICAgICArK19fZmlyc3QyOwog
ICAgfQogICAgZWxzZSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAgICAgKytfX2Zp
cnN0MTsKICAgICAgKytfX2ZpcnN0MjsKICAgIH0KICAgICsrX19yZXN1bHQ7CiAgfQogIHJldHVy
biBjb3B5KF9fZmlyc3QyLCBfX2xhc3QyLCBjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3Vs
dCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBj
bGFzcyBfT3V0cHV0SXRlciwKICAgICAgICAgIGNsYXNzIF9Db21wYXJlPgpfT3V0cHV0SXRlciBz
ZXRfdW5pb24oX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAg
ICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0
MiwKICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBfQ29tcGFyZSBf
X2NvbXApIHsKICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xh
c3QyKSB7CiAgICBpZiAoX19jb21wKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkgewogICAgICAqX19y
ZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICsrX19maXJzdDE7CiAgICB9CiAgICBlbHNlIGlmIChf
X2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0
MjsKICAgICAgKytfX2ZpcnN0MjsKICAgIH0KICAgIGVsc2UgewogICAgICAqX19yZXN1bHQgPSAq
X19maXJzdDE7CiAgICAgICsrX19maXJzdDE7CiAgICAgICsrX19maXJzdDI7CiAgICB9CiAgICAr
K19fcmVzdWx0OwogIH0KICByZXR1cm4gY29weShfX2ZpcnN0MiwgX19sYXN0MiwgY29weShfX2Zp
cnN0MSwgX19sYXN0MSwgX19yZXN1bHQpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIx
LCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXI+Cl9PdXRwdXRJdGVyIHNldF9p
bnRlcnNlY3Rpb24oX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0
ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19y
ZXN1bHQpIHsKICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xh
c3QyKSAKICAgIGlmICgqX19maXJzdDEgPCAqX19maXJzdDIpIAogICAgICArK19fZmlyc3QxOwog
ICAgZWxzZSBpZiAoKl9fZmlyc3QyIDwgKl9fZmlyc3QxKSAKICAgICAgKytfX2ZpcnN0MjsKICAg
IGVsc2UgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICsrX19maXJzdDE7CiAg
ICAgICsrX19maXJzdDI7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBjbGFz
cyBfT3V0cHV0SXRlciwKICAgICAgICAgIGNsYXNzIF9Db21wYXJlPgpfT3V0cHV0SXRlciBzZXRf
aW50ZXJzZWN0aW9uKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJ
dGVyMiBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9f
cmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApIHsKICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAm
JiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAgaWYgKF9fY29tcCgqX19maXJzdDEsICpfX2ZpcnN0
MikpCiAgICAgICsrX19maXJzdDE7CiAgICBlbHNlIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19m
aXJzdDEpKQogICAgICArK19fZmlyc3QyOwogICAgZWxzZSB7CiAgICAgICpfX3Jlc3VsdCA9ICpf
X2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MjsKICAgICAgKytfX3Jl
c3VsdDsKICAgIH0KICByZXR1cm4gX19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJ
dGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9PdXRwdXRJdGVyPgpfT3V0cHV0SXRlciBz
ZXRfZGlmZmVyZW5jZShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0
ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVz
dWx0KSB7CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0
MikKICAgIGlmICgqX19maXJzdDEgPCAqX19maXJzdDIpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9f
Zmlyc3QxOwogICAgICArK19fZmlyc3QxOwogICAgICArK19fcmVzdWx0OwogICAgfQogICAgZWxz
ZSBpZiAoKl9fZmlyc3QyIDwgKl9fZmlyc3QxKQogICAgICArK19fZmlyc3QyOwogICAgZWxzZSB7
CiAgICAgICsrX19maXJzdDE7CiAgICAgICsrX19maXJzdDI7CiAgICB9CiAgcmV0dXJuIGNvcHko
X19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0
ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXIsIAogICAgICAgICAgY2xh
c3MgX0NvbXBhcmU+Cl9PdXRwdXRJdGVyIHNldF9kaWZmZXJlbmNlKF9JbnB1dEl0ZXIxIF9fZmly
c3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5w
dXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBfQ29tcGFyZSBfX2NvbXApIHsKICB3aGls
ZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAgaWYgKF9f
Y29tcCgqX19maXJzdDEsICpfX2ZpcnN0MikpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Qx
OwogICAgICArK19fZmlyc3QxOwogICAgICArK19fcmVzdWx0OwogICAgfQogICAgZWxzZSBpZiAo
X19jb21wKCpfX2ZpcnN0MiwgKl9fZmlyc3QxKSkKICAgICAgKytfX2ZpcnN0MjsKICAgIGVsc2Ug
ewogICAgICArK19fZmlyc3QxOwogICAgICArK19fZmlyc3QyOwogICAgfQogIHJldHVybiBjb3B5
KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3VsdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJ
dGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9PdXRwdXRJdGVyPgpfT3V0cHV0SXRlciAK
c2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVy
MSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIs
IF9JbnB1dEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRl
ciBfX3Jlc3VsdCkgewogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9
IF9fbGFzdDIpCiAgICBpZiAoKl9fZmlyc3QxIDwgKl9fZmlyc3QyKSB7CiAgICAgICpfX3Jlc3Vs
dCA9ICpfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MTsKICAgICAgKytfX3Jlc3VsdDsKICAgIH0K
ICAgIGVsc2UgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkgewogICAgICAqX19yZXN1bHQgPSAq
X19maXJzdDI7CiAgICAgICsrX19maXJzdDI7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9CiAgICBl
bHNlIHsKICAgICAgKytfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MjsKICAgIH0KICByZXR1cm4g
Y29weShfX2ZpcnN0MiwgX19sYXN0MiwgY29weShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQp
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xh
c3MgX091dHB1dEl0ZXIsCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZT4KX091dHB1dEl0ZXIgCnNl
dF9zeW1tZXRyaWNfZGlmZmVyZW5jZShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEg
X19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBf
SW5wdXRJdGVyMiBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIg
X19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICB3
aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAgaWYg
KF9fY29tcCgqX19maXJzdDEsICpfX2ZpcnN0MikpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmly
c3QxOwogICAgICArK19fZmlyc3QxOwogICAgICArK19fcmVzdWx0OwogICAgfQogICAgZWxzZSBp
ZiAoX19jb21wKCpfX2ZpcnN0MiwgKl9fZmlyc3QxKSkgewogICAgICAqX19yZXN1bHQgPSAqX19m
aXJzdDI7CiAgICAgICsrX19maXJzdDI7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9CiAgICBlbHNl
IHsKICAgICAgKytfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MjsKICAgIH0KICByZXR1cm4gY29w
eShfX2ZpcnN0MiwgX19sYXN0MiwgY29weShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpKTsK
fQoKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyPgpfRm9yd2FyZEl0ZXIgbWF4X2Vs
ZW1lbnQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QpIHsKICBpZiAo
X19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX2ZpcnN0OwogIF9Gb3J3YXJkSXRlciBfX3Jlc3Vs
dCA9IF9fZmlyc3Q7CiAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpIAogICAgaWYgKCpfX3Jl
c3VsdCA8ICpfX2ZpcnN0KQogICAgICBfX3Jlc3VsdCA9IF9fZmlyc3Q7CiAgcmV0dXJuIF9fcmVz
dWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfQ29tcGFyZT4KX0Zv
cndhcmRJdGVyIG1heF9lbGVtZW50KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIg
X19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKSB7CiAg
aWYgKF9fZmlyc3QgPT0gX19sYXN0KSByZXR1cm4gX19maXJzdDsKICBfRm9yd2FyZEl0ZXIgX19y
ZXN1bHQgPSBfX2ZpcnN0OwogIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KSAKICAgIGlmIChf
X2NvbXAoKl9fcmVzdWx0LCAqX19maXJzdCkpIF9fcmVzdWx0ID0gX19maXJzdDsKICByZXR1cm4g
X19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXI+Cl9Gb3J3YXJkSXRlciBt
aW5fZWxlbWVudChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCkgewog
IGlmIChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fZmlyc3Q7CiAgX0ZvcndhcmRJdGVyIF9f
cmVzdWx0ID0gX19maXJzdDsKICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkgCiAgICBpZiAo
Kl9fZmlyc3QgPCAqX19yZXN1bHQpCiAgICAgIF9fcmVzdWx0ID0gX19maXJzdDsKICByZXR1cm4g
X19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9Db21wYXJl
PgpfRm9yd2FyZEl0ZXIgbWluX2VsZW1lbnQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJk
SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXAp
IHsKICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX2ZpcnN0OwogIF9Gb3J3YXJkSXRl
ciBfX3Jlc3VsdCA9IF9fZmlyc3Q7CiAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpIAogICAg
aWYgKF9fY29tcCgqX19maXJzdCwgKl9fcmVzdWx0KSkKICAgICAgX19yZXN1bHQgPSBfX2ZpcnN0
OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9u
YWxJdGVyPgpib29sIG5leHRfcGVybXV0YXRpb24oX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3Qs
IF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QpIHsKICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiAg
ICByZXR1cm4gZmFsc2U7CiAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faSA9IF9fZmlyc3Q7CiAgKytf
X2k7CiAgaWYgKF9faSA9PSBfX2xhc3QpCiAgICByZXR1cm4gZmFsc2U7CiAgX19pID0gX19sYXN0
OwogIC0tX19pOwoKICBmb3IoOzspIHsKICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2lpID0gX19p
OwogICAgLS1fX2k7CiAgICBpZiAoKl9faSA8ICpfX2lpKSB7CiAgICAgIF9CaWRpcmVjdGlvbmFs
SXRlciBfX2ogPSBfX2xhc3Q7CiAgICAgIHdoaWxlICghKCpfX2kgPCAqLS1fX2opKQogICAgICAg
IHt9CiAgICAgIGl0ZXJfc3dhcChfX2ksIF9faik7CiAgICAgIHJldmVyc2UoX19paSwgX19sYXN0
KTsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBpZiAoX19pID09IF9fZmlyc3QpIHsKICAg
ICAgcmV2ZXJzZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAg
fQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBfQ29tcGFyZT4K
Ym9vbCBuZXh0X3Blcm11dGF0aW9uKF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LCBfQmlkaXJl
Y3Rpb25hbEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21w
KSB7CiAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogICAgcmV0dXJuIGZhbHNlOwogIF9CaWRpcmVj
dGlvbmFsSXRlciBfX2kgPSBfX2ZpcnN0OwogICsrX19pOwogIGlmIChfX2kgPT0gX19sYXN0KQog
ICAgcmV0dXJuIGZhbHNlOwogIF9faSA9IF9fbGFzdDsKICAtLV9faTsKCiAgZm9yKDs7KSB7CiAg
ICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19paSA9IF9faTsKICAgIC0tX19pOwogICAgaWYgKF9fY29t
cCgqX19pLCAqX19paSkpIHsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faiA9IF9fbGFzdDsK
ICAgICAgd2hpbGUgKCFfX2NvbXAoKl9faSwgKi0tX19qKSkKICAgICAgICB7fQogICAgICBpdGVy
X3N3YXAoX19pLCBfX2opOwogICAgICByZXZlcnNlKF9faWksIF9fbGFzdCk7CiAgICAgIHJldHVy
biB0cnVlOwogICAgfQogICAgaWYgKF9faSA9PSBfX2ZpcnN0KSB7CiAgICAgIHJldmVyc2UoX19m
aXJzdCwgX19sYXN0KTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIH0KfQoKdGVtcGxhdGUg
PGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcj4KYm9vbCBwcmV2X3Blcm11dGF0aW9uKF9CaWRpcmVj
dGlvbmFsSXRlciBfX2ZpcnN0LCBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0KSB7CiAgaWYgKF9f
Zmlyc3QgPT0gX19sYXN0KQogICAgcmV0dXJuIGZhbHNlOwogIF9CaWRpcmVjdGlvbmFsSXRlciBf
X2kgPSBfX2ZpcnN0OwogICsrX19pOwogIGlmIChfX2kgPT0gX19sYXN0KQogICAgcmV0dXJuIGZh
bHNlOwogIF9faSA9IF9fbGFzdDsKICAtLV9faTsKCiAgZm9yKDs7KSB7CiAgICBfQmlkaXJlY3Rp
b25hbEl0ZXIgX19paSA9IF9faTsKICAgIC0tX19pOwogICAgaWYgKCpfX2lpIDwgKl9faSkgewog
ICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19qID0gX19sYXN0OwogICAgICB3aGlsZSAoISgqLS1f
X2ogPCAqX19pKSkKICAgICAgICB7fQogICAgICBpdGVyX3N3YXAoX19pLCBfX2opOwogICAgICBy
ZXZlcnNlKF9faWksIF9fbGFzdCk7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgaWYgKF9f
aSA9PSBfX2ZpcnN0KSB7CiAgICAgIHJldmVyc2UoX19maXJzdCwgX19sYXN0KTsKICAgICAgcmV0
dXJuIGZhbHNlOwogICAgfQogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRl
ciwgY2xhc3MgX0NvbXBhcmU+CmJvb2wgcHJldl9wZXJtdXRhdGlvbihfQmlkaXJlY3Rpb25hbEl0
ZXIgX19maXJzdCwgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAg
ICAgIF9Db21wYXJlIF9fY29tcCkgewogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAgIHJldHVy
biBmYWxzZTsKICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19pID0gX19maXJzdDsKICArK19faTsKICBp
ZiAoX19pID09IF9fbGFzdCkKICAgIHJldHVybiBmYWxzZTsKICBfX2kgPSBfX2xhc3Q7CiAgLS1f
X2k7CgogIGZvcig7OykgewogICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faWkgPSBfX2k7CiAgICAt
LV9faTsKICAgIGlmIChfX2NvbXAoKl9faWksICpfX2kpKSB7CiAgICAgIF9CaWRpcmVjdGlvbmFs
SXRlciBfX2ogPSBfX2xhc3Q7CiAgICAgIHdoaWxlICghX19jb21wKCotLV9faiwgKl9faSkpCiAg
ICAgICAge30KICAgICAgaXRlcl9zd2FwKF9faSwgX19qKTsKICAgICAgcmV2ZXJzZShfX2lpLCBf
X2xhc3QpOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGlmIChfX2kgPT0gX19maXJzdCkg
ewogICAgICByZXZlcnNlKF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgIHJldHVybiBmYWxzZTsKICAg
IH0KICB9Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9yd2FyZEl0
ZXI+Cl9JbnB1dEl0ZXIgZmluZF9maXJzdF9vZihfSW5wdXRJdGVyIF9fZmlyc3QxLCBfSW5wdXRJ
dGVyIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19maXJz
dDIsIF9Gb3J3YXJkSXRlciBfX2xhc3QyKQp7CiAgZm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3Qx
OyArK19fZmlyc3QxKSAKICAgIGZvciAoX0ZvcndhcmRJdGVyIF9faXRlciA9IF9fZmlyc3QyOyBf
X2l0ZXIgIT0gX19sYXN0MjsgKytfX2l0ZXIpCiAgICAgIGlmICgqX19maXJzdDEgPT0gKl9faXRl
cikKICAgICAgICByZXR1cm4gX19maXJzdDE7CiAgcmV0dXJuIF9fbGFzdDE7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9CaW5hcnlQcmVk
aWNhdGU+Cl9JbnB1dEl0ZXIgZmluZF9maXJzdF9vZihfSW5wdXRJdGVyIF9fZmlyc3QxLCBfSW5w
dXRJdGVyIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19m
aXJzdDIsIF9Gb3J3YXJkSXRlciBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgX0Jp
bmFyeVByZWRpY2F0ZSBfX2NvbXApCnsKICBmb3IgKCA7IF9fZmlyc3QxICE9IF9fbGFzdDE7ICsr
X19maXJzdDEpIAogICAgZm9yIChfRm9yd2FyZEl0ZXIgX19pdGVyID0gX19maXJzdDI7IF9faXRl
ciAhPSBfX2xhc3QyOyArK19faXRlcikKICAgICAgaWYgKF9fY29tcCgqX19maXJzdDEsICpfX2l0
ZXIpKQogICAgICAgIHJldHVybiBfX2ZpcnN0MTsKICByZXR1cm4gX19sYXN0MTsKfQoKCiAKIAog
CiAKCiAKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcjEsIGNsYXNzIF9Gb3J3YXJkSXRlcjI+
Cl9Gb3J3YXJkSXRlcjEgX19maW5kX2VuZChfRm9yd2FyZEl0ZXIxIF9fZmlyc3QxLCBfRm9yd2Fy
ZEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIyIF9f
Zmlyc3QyLCBfRm9yd2FyZEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBm
b3J3YXJkX2l0ZXJhdG9yX3RhZywgZm9yd2FyZF9pdGVyYXRvcl90YWcpCnsKICBpZiAoX19maXJz
dDIgPT0gX19sYXN0MikKICAgIHJldHVybiBfX2xhc3QxOwogIGVsc2UgewogICAgX0ZvcndhcmRJ
dGVyMSBfX3Jlc3VsdCA9IF9fbGFzdDE7CiAgICB3aGlsZSAoMSkgewogICAgICBfRm9yd2FyZEl0
ZXIxIF9fbmV3X3Jlc3VsdAogICAgICAgID0gc2VhcmNoKF9fZmlyc3QxLCBfX2xhc3QxLCBfX2Zp
cnN0MiwgX19sYXN0Mik7CiAgICAgIGlmIChfX25ld19yZXN1bHQgPT0gX19sYXN0MSkKICAgICAg
ICByZXR1cm4gX19yZXN1bHQ7CiAgICAgIGVsc2UgewogICAgICAgIF9fcmVzdWx0ID0gX19uZXdf
cmVzdWx0OwogICAgICAgIF9fZmlyc3QxID0gX19uZXdfcmVzdWx0OwogICAgICAgICsrX19maXJz
dDE7CiAgICAgIH0KICAgIH0KICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIxLCBj
bGFzcyBfRm9yd2FyZEl0ZXIyLAogICAgICAgICAgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KX0Zv
cndhcmRJdGVyMSBfX2ZpbmRfZW5kKF9Gb3J3YXJkSXRlcjEgX19maXJzdDEsIF9Gb3J3YXJkSXRl
cjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlcjIgX19maXJz
dDIsIF9Gb3J3YXJkSXRlcjIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndh
cmRfaXRlcmF0b3JfdGFnLCBmb3J3YXJkX2l0ZXJhdG9yX3RhZywKICAgICAgICAgICAgICAgICAg
ICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19jb21wKQp7CiAgaWYgKF9fZmlyc3QyID09IF9fbGFz
dDIpCiAgICByZXR1cm4gX19sYXN0MTsKICBlbHNlIHsKICAgIF9Gb3J3YXJkSXRlcjEgX19yZXN1
bHQgPSBfX2xhc3QxOwogICAgd2hpbGUgKDEpIHsKICAgICAgX0ZvcndhcmRJdGVyMSBfX25ld19y
ZXN1bHQKICAgICAgICA9IHNlYXJjaChfX2ZpcnN0MSwgX19sYXN0MSwgX19maXJzdDIsIF9fbGFz
dDIsIF9fY29tcCk7CiAgICAgIGlmIChfX25ld19yZXN1bHQgPT0gX19sYXN0MSkKICAgICAgICBy
ZXR1cm4gX19yZXN1bHQ7CiAgICAgIGVsc2UgewogICAgICAgIF9fcmVzdWx0ID0gX19uZXdfcmVz
dWx0OwogICAgICAgIF9fZmlyc3QxID0gX19uZXdfcmVzdWx0OwogICAgICAgICsrX19maXJzdDE7
CiAgICAgIH0KICAgIH0KICB9Cn0KCiAKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJ
dGVyMSwgY2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyMj4KX0JpZGlyZWN0aW9uYWxJdGVyMQpfX2Zp
bmRfZW5kKF9CaWRpcmVjdGlvbmFsSXRlcjEgX19maXJzdDEsIF9CaWRpcmVjdGlvbmFsSXRlcjEg
X19sYXN0MSwKICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fZmlyc3QyLCBfQmlkaXJl
Y3Rpb25hbEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90
YWcsIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKQp7CiAgdHlwZWRlZiByZXZlcnNlX2l0ZXJh
dG9yPF9CaWRpcmVjdGlvbmFsSXRlcjE+IF9SZXZJdGVyMTsKICB0eXBlZGVmIHJldmVyc2VfaXRl
cmF0b3I8X0JpZGlyZWN0aW9uYWxJdGVyMj4gX1Jldkl0ZXIyOwoKICBfUmV2SXRlcjEgX19ybGFz
dDEoX19maXJzdDEpOwogIF9SZXZJdGVyMiBfX3JsYXN0MihfX2ZpcnN0Mik7CiAgX1Jldkl0ZXIx
IF9fcnJlc3VsdCA9IHNlYXJjaChfUmV2SXRlcjEoX19sYXN0MSksIF9fcmxhc3QxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX1Jldkl0ZXIyKF9fbGFzdDIpLCBfX3JsYXN0Mik7Cgog
IGlmIChfX3JyZXN1bHQgPT0gX19ybGFzdDEpCiAgICByZXR1cm4gX19sYXN0MTsKICBlbHNlIHsK
ICAgIF9CaWRpcmVjdGlvbmFsSXRlcjEgX19yZXN1bHQgPSBfX3JyZXN1bHQuYmFzZSgpOwogICAg
YWR2YW5jZShfX3Jlc3VsdCwgLWRpc3RhbmNlKF9fZmlyc3QyLCBfX2xhc3QyKSk7CiAgICByZXR1
cm4gX19yZXN1bHQ7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyMSwg
Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyMiwKICAgICAgICAgIGNsYXNzIF9CaW5hcnlQcmVkaWNh
dGU+Cl9CaWRpcmVjdGlvbmFsSXRlcjEKX19maW5kX2VuZChfQmlkaXJlY3Rpb25hbEl0ZXIxIF9f
Zmlyc3QxLCBfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgX0JpZGlyZWN0
aW9uYWxJdGVyMiBfX2ZpcnN0MiwgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX2xhc3QyLAogICAgICAg
ICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3Rh
ZywgCiAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2NvbXApCnsKICB0eXBlZGVmIHJldmVy
c2VfaXRlcmF0b3I8X0JpZGlyZWN0aW9uYWxJdGVyMT4gX1Jldkl0ZXIxOwogIHR5cGVkZWYgcmV2
ZXJzZV9pdGVyYXRvcjxfQmlkaXJlY3Rpb25hbEl0ZXIyPiBfUmV2SXRlcjI7CgogIF9SZXZJdGVy
MSBfX3JsYXN0MShfX2ZpcnN0MSk7CiAgX1Jldkl0ZXIyIF9fcmxhc3QyKF9fZmlyc3QyKTsKICBf
UmV2SXRlcjEgX19ycmVzdWx0ID0gc2VhcmNoKF9SZXZJdGVyMShfX2xhc3QxKSwgX19ybGFzdDEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmV2SXRlcjIoX19sYXN0MiksIF9fcmxh
c3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb21wKTsKCiAgaWYgKF9fcnJl
c3VsdCA9PSBfX3JsYXN0MSkKICAgIHJldHVybiBfX2xhc3QxOwogIGVsc2UgewogICAgX0JpZGly
ZWN0aW9uYWxJdGVyMSBfX3Jlc3VsdCA9IF9fcnJlc3VsdC5iYXNlKCk7CiAgICBhZHZhbmNlKF9f
cmVzdWx0LCAtZGlzdGFuY2UoX19maXJzdDIsIF9fbGFzdDIpKTsKICAgIHJldHVybiBfX3Jlc3Vs
dDsKICB9Cn0KCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyMSwgY2xhc3MgX0Zvcndh
cmRJdGVyMj4KaW5saW5lIF9Gb3J3YXJkSXRlcjEgCmZpbmRfZW5kKF9Gb3J3YXJkSXRlcjEgX19m
aXJzdDEsIF9Gb3J3YXJkSXRlcjEgX19sYXN0MSwgCiAgICAgICAgIF9Gb3J3YXJkSXRlcjIgX19m
aXJzdDIsIF9Gb3J3YXJkSXRlcjIgX19sYXN0MikKewogIHJldHVybiBfX2ZpbmRfZW5kKF9fZmly
c3QxLCBfX2xhc3QxLCBfX2ZpcnN0MiwgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICBfX2l0
ZXJhdG9yX2NhdGVnb3J5KCBfX2ZpcnN0MSApICwKICAgICAgICAgICAgICAgICAgICBfX2l0ZXJh
dG9yX2NhdGVnb3J5KCBfX2ZpcnN0MiApICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0
ZXIxLCBjbGFzcyBfRm9yd2FyZEl0ZXIyLCAKICAgICAgICAgIGNsYXNzIF9CaW5hcnlQcmVkaWNh
dGU+CmlubGluZSBfRm9yd2FyZEl0ZXIxIApmaW5kX2VuZChfRm9yd2FyZEl0ZXIxIF9fZmlyc3Qx
LCBfRm9yd2FyZEl0ZXIxIF9fbGFzdDEsIAogICAgICAgICBfRm9yd2FyZEl0ZXIyIF9fZmlyc3Qy
LCBfRm9yd2FyZEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19jb21w
KQp7CiAgcmV0dXJuIF9fZmluZF9lbmQoX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xh
c3QyLAogICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3QxICkg
LAogICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3QyICkgLAog
ICAgICAgICAgICAgICAgICAgIF9fY29tcCk7Cn0KCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jh
bmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9EaXN0YW5jZT4KYm9vbCBfX2lzX2hlYXAoX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19maXJzdCwgX0Rpc3RhbmNlIF9fbikKewogIF9EaXN0YW5jZSBfX3BhcmVudCA9
IDA7CiAgZm9yIChfRGlzdGFuY2UgX19jaGlsZCA9IDE7IF9fY2hpbGQgPCBfX247ICsrX19jaGls
ZCkgewogICAgaWYgKF9fZmlyc3RbX19wYXJlbnRdIDwgX19maXJzdFtfX2NoaWxkXSkgCiAgICAg
IHJldHVybiBmYWxzZTsKICAgIGlmICgoX19jaGlsZCAmIDEpID09IDApCiAgICAgICsrX19wYXJl
bnQ7CiAgfQogIHJldHVybiB0cnVlOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0
ZXIsIGNsYXNzIF9EaXN0YW5jZSwgY2xhc3MgX1N0cmljdFdlYWtPcmRlcmluZz4KYm9vbCBfX2lz
X2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1N0cmljdFdlYWtPcmRlcmluZyBfX2Nv
bXAsCiAgICAgICAgICAgICAgIF9EaXN0YW5jZSBfX24pCnsKICBfRGlzdGFuY2UgX19wYXJlbnQg
PSAwOwogIGZvciAoX0Rpc3RhbmNlIF9fY2hpbGQgPSAxOyBfX2NoaWxkIDwgX19uOyArK19fY2hp
bGQpIHsKICAgIGlmIChfX2NvbXAoX19maXJzdFtfX3BhcmVudF0sIF9fZmlyc3RbX19jaGlsZF0p
KQogICAgICByZXR1cm4gZmFsc2U7CiAgICBpZiAoKF9fY2hpbGQgJiAxKSA9PSAwKQogICAgICAr
K19fcGFyZW50OwogIH0KICByZXR1cm4gdHJ1ZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21B
Y2Nlc3NJdGVyPgppbmxpbmUgYm9vbCBpc19oZWFwKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3Qs
IF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCkKewogIHJldHVybiBfX2lzX2hlYXAoX19maXJzdCwg
X19sYXN0IC0gX19maXJzdCk7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIs
IGNsYXNzIF9TdHJpY3RXZWFrT3JkZXJpbmc+CmlubGluZSBib29sIGlzX2hlYXAoX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAg
ICAgICAgIF9TdHJpY3RXZWFrT3JkZXJpbmcgX19jb21wKQp7CiAgcmV0dXJuIF9faXNfaGVhcChf
X2ZpcnN0LCBfX2NvbXAsIF9fbGFzdCAtIF9fZmlyc3QpOwp9CgogCiAKIAoKdGVtcGxhdGUgPGNs
YXNzIF9Gb3J3YXJkSXRlcj4KYm9vbCBpc19zb3J0ZWQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9G
b3J3YXJkSXRlciBfX2xhc3QpCnsKICBpZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgICByZXR1cm4g
dHJ1ZTsKCiAgX0ZvcndhcmRJdGVyIF9fbmV4dCA9IF9fZmlyc3Q7CiAgZm9yICgrK19fbmV4dDsg
X19uZXh0ICE9IF9fbGFzdDsgX19maXJzdCA9IF9fbmV4dCwgKytfX25leHQpIHsKICAgIGlmICgq
X19uZXh0IDwgKl9fZmlyc3QpCiAgICAgIHJldHVybiBmYWxzZTsKICB9CgogIHJldHVybiB0cnVl
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfU3RyaWN0V2Vha09yZGVy
aW5nPgpib29sIGlzX3NvcnRlZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgX1N0cmljdFdlYWtPcmRlcmluZyBfX2NvbXApCnsKICBpZiAo
X19maXJzdCA9PSBfX2xhc3QpCiAgICByZXR1cm4gdHJ1ZTsKCiAgX0ZvcndhcmRJdGVyIF9fbmV4
dCA9IF9fZmlyc3Q7CiAgZm9yICgrK19fbmV4dDsgX19uZXh0ICE9IF9fbGFzdDsgX19maXJzdCA9
IF9fbmV4dCwgKytfX25leHQpIHsKICAgIGlmIChfX2NvbXAoKl9fbmV4dCwgKl9fZmlyc3QpKQog
ICAgICByZXR1cm4gZmFsc2U7CiAgfQoKICByZXR1cm4gdHJ1ZTsKfQoKCgoKCiAKCgoKIAogCiAK
IyAzNCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8yLjk1LjMv
Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9hbGdvcml0aG0iIDIgMwoKCgoKIAogCiAKIyAzMyAi
Li8uLi9TcmNTaGFyZWQvTWV0YU1lbW9yeS5jcHAiIDIKCgoKc3RydWN0IEVtVGFnZ2VkUGFsbUNo
dW5rIDogcHVibGljIEVtUGFsbUNodW5rCnsKCUVtVGFnZ2VkUGFsbUNodW5rICh2b2lkKSB7fQoJ
RW1UYWdnZWRQYWxtQ2h1bmsgKGNvbnN0IEVtUGFsbUNodW5rJiBjaHVuaywgQm9vbCBpc1N5c3Rl
bUNodW5rKSA6CgkJRW1QYWxtQ2h1bmsgKGNodW5rKSwKCQlmSXNTeXN0ZW1DaHVuayAoaXNTeXN0
ZW1DaHVuaykKCQl7fQoKCUJvb2wJZklzU3lzdGVtQ2h1bms7Cn07Cgp0eXBlZGVmIHZlY3RvcjxF
bVRhZ2dlZFBhbG1DaHVuaz4JRW1UYWdnZWRQYWxtQ2h1bmtMaXN0OwoKc3RhdGljIEVtVGFnZ2Vk
UGFsbUNodW5rTGlzdAlnVGFnZ2VkQ2h1bmtzOwpzdGF0aWMgQm9vbAkJCQkJCWdIYXZlTGFzdENo
dW5rOwpzdGF0aWMgRW1UYWdnZWRQYWxtQ2h1bmsJCWdMYXN0Q2h1bms7CgpzdGF0aWMgdmVjdG9y
PE1lbUhhbmRsZT4JCWdCaXRtYXBIYW5kbGVMaXN0OwpzdGF0aWMgdmVjdG9yPE1lbVB0cj4JCQln
Qml0bWFwUG9pbnRlckxpc3Q7CgplbnVtCnsKCWtVSVdpbmRvdywKCWtVSUJpdG1hcAp9OwoKdHlw
ZWRlZiBCb29sICgqSXRlckZuKSAoZW11cHRyIG9iamVjdCwgdm9pZCogZGF0YSwgaW50IHR5cGUp
OwpzdGF0aWMgQm9vbCBQcnZDaGVja1VJT2JqZWN0IChlbXVwdHIgb2JqZWN0LCB2b2lkKiBkYXRh
LCBpbnQgdHlwZSk7CnN0YXRpYyBCb29sIFBydk1hcmtVSU9iamVjdCAoZW11cHRyIG9iamVjdCwg
dm9pZCogZGF0YSwgaW50IHR5cGUpOwpzdGF0aWMgQm9vbCBQcnZVbm1hcmtVSU9iamVjdCAoZW11
cHRyIG9iamVjdCwgdm9pZCogZGF0YSwgaW50IHR5cGUpOwpzdGF0aWMgQm9vbCBQcnZGb3JFYWNo
Qml0bWFwIChJdGVyRm4gZm4sIHZvaWQqIGRhdGEpOwpzdGF0aWMgQm9vbCBQcnZGb3JFYWNoV2lu
ZG93IChJdGVyRm4gZm4sIHZvaWQqIGRhdGEpOwpzdGF0aWMgQm9vbCBQcnZGb3JFYWNoVUlPYmpl
Y3QgKEl0ZXJGbiBmbiwgdm9pZCogZGF0YSk7CgoKI3ByYWdtYSBtYXJrIC0KCiAKIAogCgp2b2lk
IE1ldGFNZW1vcnk6OkluaXRpYWxpemUgKHZvaWQpCnsKfQoKCiAKIAogCgp2b2lkIE1ldGFNZW1v
cnk6OlJlc2V0ICh2b2lkKQp7CglnVGFnZ2VkQ2h1bmtzLmNsZWFyICgpOwoJZ0hhdmVMYXN0Q2h1
bmsgPSBmYWxzZTsKCglnQml0bWFwSGFuZGxlTGlzdC5jbGVhciAoKTsKCWdCaXRtYXBQb2ludGVy
TGlzdC5jbGVhciAoKTsKfQoKCiAKIAogCgp2b2lkIE1ldGFNZW1vcnk6OlNhdmUgKFNlc3Npb25G
aWxlJiBmKQp7Cgljb25zdCBsb25nCWtDdXJyZW50VmVyc2lvbiA9IDE7CgoJQ2h1bmsJCQljaHVu
azsKCUVtU3RyZWFtQ2h1bmsJcyAoY2h1bmspOwoKCXMgPDwga0N1cnJlbnRWZXJzaW9uOwoKCWdC
aXRtYXBIYW5kbGVMaXN0LmNsZWFyICgpOwoJZ0JpdG1hcFBvaW50ZXJMaXN0LmNsZWFyICgpOwoK
CXMgPDwgZ0JpdG1hcEhhbmRsZUxpc3Q7CglzIDw8IGdCaXRtYXBQb2ludGVyTGlzdDsKCglmLldy
aXRlTWV0YUluZm8gKGNodW5rKTsKfQoKCiAKIAogCgp2b2lkIE1ldGFNZW1vcnk6OkxvYWQgKFNl
c3Npb25GaWxlJiBmKQp7CglnVGFnZ2VkQ2h1bmtzLmNsZWFyICgpOwoJZ0hhdmVMYXN0Q2h1bmsg
PSBmYWxzZTsKCglDaHVuawljaHVuazsKCWlmIChmLlJlYWRNZXRhSW5mbyAoY2h1bmspKQoJewoJ
CWxvbmcJCQl2ZXJzaW9uOwoJCUVtU3RyZWFtQ2h1bmsJcyAoY2h1bmspOwoKCQlzID4+IHZlcnNp
b247CgoJCWlmICh2ZXJzaW9uID49IDEpCgkJewoJCQlzID4+IGdCaXRtYXBIYW5kbGVMaXN0OwoJ
CQlzID4+IGdCaXRtYXBQb2ludGVyTGlzdDsKCgkJCWdCaXRtYXBIYW5kbGVMaXN0LmNsZWFyICgp
OwoJCQlnQml0bWFwUG9pbnRlckxpc3QuY2xlYXIgKCk7CgkJfQoJfQp9CgoKIAogCiAKCnZvaWQg
TWV0YU1lbW9yeTo6RGlzcG9zZSAodm9pZCkKewp9CgoKIyAxNjYgIi4vLi4vU3JjU2hhcmVkL01l
dGFNZW1vcnkuY3BwIgoKCgojIDIwNCAiLi8uLi9TcmNTaGFyZWQvTWV0YU1lbW9yeS5jcHAiCgoK
CiMgMjE2ICIuLy4uL1NyY1NoYXJlZC9NZXRhTWVtb3J5LmNwcCIKCgoKIAogCiAKIAogCiAKIAoK
IAogCiAKIAoKdm9pZCBNZXRhTWVtb3J5OjpTeW5jT25lQ2h1bmsgKGNvbnN0IEVtUGFsbUNodW5r
JiBjaHVuaykKewoJIAoKCU1hcmtDaHVua0hlYWRlciAoY2h1bmsuSGVhZGVyU3RhcnQgKCksIGNo
dW5rLkhlYWRlckVuZCAoKSk7CgoJIAoKCSAKCglpZiAoY2h1bmsuRnJlZSAoKSkKCXsKCQlNYXJr
RnJlZUNodW5rIChjaHVuay5Cb2R5U3RhcnQgKCksIGNodW5rLkJvZHlFbmQgKCkpOwoJfQoKCSAK
CgllbHNlIGlmIChjaHVuay5Mb2NrQ291bnQgKCkgPT0gMCkKCXsKCQlNYXJrVW5sb2NrZWRDaHVu
ayAoY2h1bmsuQm9keVN0YXJ0ICgpLCBjaHVuay5Cb2R5RW5kICgpKTsKCX0KCgkgCgoJZWxzZQoJ
ewoJCU1hcmtUb3RhbEFjY2VzcyAoY2h1bmsuQm9keVN0YXJ0ICgpLCBjaHVuay5Cb2R5RW5kICgp
KTsKCX0KCgkgCgoJaWYgKGNodW5rLlRyYWlsZXJTaXplICgpID4gMCkKCXsKCQlNYXJrQ2h1bmtU
cmFpbGVyIChjaHVuay5UcmFpbGVyU3RhcnQgKCksIGNodW5rLlRyYWlsZXJFbmQgKCkpOwoJfQp9
CgoKIAogCiAKCnZvaWQgTWV0YU1lbW9yeTo6UmVzeW5jIChjb25zdCBFbVBhbG1DaHVua0xpc3Qm
IGRlbHRhKQp7CglpZiAoZGVsdGEuc2l6ZSAoKSA9PSAwKQoJCXJldHVybjsKCgkgCgkgCgoJRW1Q
YWxtQ2h1bmtMaXN0Ojpjb25zdF9pdGVyYXRvcglpdGVyID0gZGVsdGEuYmVnaW4gKCk7Cgljb25z
dCBFbVBhbG1IZWFwKgloZWFwID0gRW1QYWxtSGVhcDo6R2V0SGVhcEJ5UHRyIChpdGVyLT5TdGFy
dCAoKSk7CglpZiAoIWhlYXApCgkJcmV0dXJuOwoKCSAKCglpZiAoaGVhcC0+SGVhcElEICgpICE9
IDApCgkJcmV0dXJuOwoKCXdoaWxlIChpdGVyICE9IGRlbHRhLmVuZCAoKSkKCXsKCQlTeW5jT25l
Q2h1bmsgKCppdGVyKTsKCQkrK2l0ZXI7Cgl9CgoJIAoJIAoKCU1ldGFNZW1vcnk6Ok1hcmtVSU9i
amVjdHMgKCk7CgoJIAoJIAoJIAoJIAoKCUVtUGFsbU1QVExpc3Q6OmNvbnN0X2l0ZXJhdG9yCSAg
bXB0X2l0ZXIgID0gKCAqaGVhcCApLkdldE1QVExpc3RCZWdpbiAoKTsJRW1QYWxtTVBUTGlzdDo6
Y29uc3RfaXRlcmF0b3IJICBlbmQgID0gKCAqaGVhcCApLkdldE1QVExpc3RFbmQgKCk7CXdoaWxl
ICggIG1wdF9pdGVyICAhPSAgIGVuZCApIAoJewoJCU1hcmtNUFQgKG1wdF9pdGVyLT5TdGFydCAo
KSwgbXB0X2l0ZXItPlRhYmxlU3RhcnQgKCkpOwoJCU1hcmtNUFQgKG1wdF9pdGVyLT5UYWJsZVN0
YXJ0ICgpLCBtcHRfaXRlci0+RW5kICgpKTsKCQkrK21wdF9pdGVyOwoJfQoKCSAKCSAKCSAKCSAK
CglTdGFja1JhbmdlCXJhbmdlID0gRW1QYWxtT1M6OkdldEJvb3RTdGFjayAoKTsKCU1hcmtUb3Rh
bEFjY2VzcyAocmFuZ2UuZkJvdHRvbSwgcmFuZ2UuZlRvcCk7Cn0KCgogCiAKIAogCiAKIAoKRXJy
b3JzOjpFQWNjZXNzVHlwZSBNZXRhTWVtb3J5OjpHZXRXaGF0SGFwcGVuZWQgKGVtdXB0ciBhZGRy
ZXNzLCBsb25nIHNpemUsIEJvb2wgZm9yUmVhZCkKewoJIAoKCWlmIChDRW5hYmxlRnVsbEFjY2Vz
czo6QWNjZXNzT0sgKCkpCgkJcmV0dXJuIEVycm9yczo6a09LQWNjZXNzOwoKCUNFbmFibGVGdWxs
QWNjZXNzCW11bmdlOwkgCgoJRXJyb3JzOjpFQWNjZXNzVHlwZQl3aGF0SGFwcGVuZWQgPSBFcnJv
cnM6OmtVbmtub3duQWNjZXNzOwoKCSAKCglpZiAoTWV0YU1lbW9yeTo6SXNMb3dNZW1vcnkgKGFk
ZHJlc3MsIHNpemUpKQoJewoJCXdoYXRIYXBwZW5lZCA9IEVycm9yczo6a0xvd01lbUFjY2VzczsK
CX0KCgllbHNlIGlmIChNZXRhTWVtb3J5OjpJc1N5c3RlbUdsb2JhbCAoYWRkcmVzcywgc2l6ZSkp
Cgl7CgkJd2hhdEhhcHBlbmVkID0gRXJyb3JzOjprR2xvYmFsVmFyQWNjZXNzOwoJfQoKCWVsc2Ug
aWYgKE1ldGFNZW1vcnk6OklzU2NyZWVuQnVmZmVyIChhZGRyZXNzLCBzaXplKSkKCXsKCQl3aGF0
SGFwcGVuZWQgPSBFcnJvcnM6OmtTY3JlZW5BY2Nlc3M7Cgl9CgoJZWxzZSBpZiAoTWV0YU1lbW9y
eTo6SXNMb3dTdGFjayAoYWRkcmVzcywgc2l6ZSkpCgl7CgkJd2hhdEhhcHBlbmVkID0gRXJyb3Jz
OjprTG93U3RhY2tBY2Nlc3M7Cgl9CgojIDM3OCAiLi8uLi9TcmNTaGFyZWQvTWV0YU1lbW9yeS5j
cHAiCgoKCWVsc2UKCXsKCQlCb29sCWluVUlPYmplY3QsIGJ1dEl0c09LOwoJCUNoZWNrVUlPYmpl
Y3RBY2Nlc3MgKGFkZHJlc3MsIHNpemUsIGZvclJlYWQsIGluVUlPYmplY3QsIGJ1dEl0c09LKTsK
CgkJaWYgKGluVUlPYmplY3QpCgkJewoJCQkgCgkJCSAKCQkJIAoKCQkJd2hhdEhhcHBlbmVkID0g
RXJyb3JzOjprT0tBY2Nlc3M7CgkJfQoJCWVsc2UKCQl7CgkJCVdoYXRIYXBwZW5lZERhdGEJaW5m
bzsKCQkJaW5mby5yZXN1bHQJCQk9IEVycm9yczo6a1Vua25vd25BY2Nlc3M7CgkJCWluZm8uYWRk
cmVzcwkJPSBhZGRyZXNzOwoJCQlpbmZvLnNpemUJCQk9IHNpemU7CgkJCWluZm8uZm9yUmVhZAkJ
PSBmb3JSZWFkOwoKCQkJY29uc3QgRW1QYWxtSGVhcCoJaGVhcCA9IEVtUGFsbUhlYXA6OkdldEhl
YXBCeUlEICgwKTsKCgkJCWlmIChoZWFwKQoJCQkJR1dIX0V4YW1pbmVIZWFwICgqaGVhcCwgaW5m
byk7CgoJCQlpZiAoaW5mby5yZXN1bHQgIT0gRXJyb3JzOjprVW5rbm93bkFjY2VzcykKCQkJewoJ
CQkJd2hhdEhhcHBlbmVkID0gaW5mby5yZXN1bHQ7CgkJCX0KCQl9Cgl9CgoJd2hhdEhhcHBlbmVk
ID0gQWxsb3dGb3JCdWdzIChhZGRyZXNzLCBzaXplLCBmb3JSZWFkLCB3aGF0SGFwcGVuZWQpOwoK
CXJldHVybiB3aGF0SGFwcGVuZWQ7Cn0KCgogCiAKIAoKRXJyb3JzOjpFQWNjZXNzVHlwZSBNZXRh
TWVtb3J5OjpBbGxvd0ZvckJ1Z3MgKGVtdXB0ciBhZGRyZXNzLCBsb25nIHNpemUsIEJvb2wgZm9y
UmVhZCwgRXJyb3JzOjpFQWNjZXNzVHlwZSB3aGF0SGFwcGVuZWQpCnsKCWlmICh3aGF0SGFwcGVu
ZWQgPT0gRXJyb3JzOjprT0tBY2Nlc3MpCgl7CgkJcmV0dXJuIHdoYXRIYXBwZW5lZDsKCX0KCglp
ZiAoZm9yUmVhZCkKCXsKCQkgCgogCgkJaWYgKEluUHJ2RmluZE1lbW9yeUxlYWtzICgpKQoJCXsK
CQkJcmV0dXJuIEVycm9yczo6a09LQWNjZXNzOwoJCX0KCgkJIAoKCQllbXVwdHIJYTYgPSBnQ1BV
NjhLLT5HZXRSZWdpc3RlciAoZTY4S1JlZ0lEX0E2KTsKCQlpZiAoOjpJc0V2ZW4gKGE2KSAmJiBF
bVBhbG1PUzo6SXNJblN0YWNrIChhNikpCgkJewoJCQllbXVwdHIJcnRuQWRkciA9IEVtTWVtR2V0
MzIgKGE2ICsgNCk7CgoJCQlpZiAoYWRkcmVzcyA8IDB4MTAwMCAmJgoJCQkJOjpJbkNyYzE2Q2Fs
Y0Jsb2NrICgpICYmCgkJCQk6OkluU2VjUHJ2UmFuZG9tU2VlZCAocnRuQWRkcikpCgkJCXsKCQkJ
CXJldHVybiBFcnJvcnM6OmtPS0FjY2VzczsKCQkJfQoJCX0KCgkJaWYgKHdoYXRIYXBwZW5lZCA9
PSBFcnJvcnM6OmtMb3dNZW1BY2Nlc3MpCgkJewoJCQkgCgoJCQlpZiAoc2l6ZSA9PSA0ICYmCgkJ
CQk6OkluUHJ2U3lzdGVtVGltZXJQcm9jICgpKQoJCQl7CgkJCQlyZXR1cm4gRXJyb3JzOjprT0tB
Y2Nlc3M7CgkJCX0KCgkJCSAKCgkJCWlmIChFbVBhdGNoU3RhdGU6Okhhc0JhY2tzcGFjZUNoYXJC
dWcgKCkgJiYKCQkJCWFkZHJlc3MgPT0gMHgwMDAwICYmIHNpemUgPT0gMiAmJgoJCQkJSW5CYWNr
c3BhY2VDaGFyICgpKQoJCQl7CgkJCQlyZXR1cm4gRXJyb3JzOjprT0tBY2Nlc3M7CgkJCX0KCgkJ
CSAKCgkJCWlmIChFbVBhdGNoU3RhdGU6Okhhc0ZsZERlbGV0ZUJ1ZyAoKSAmJgoJCQkJYWRkcmVz
cyA9PSAweDAwMDAgJiYgc2l6ZSA9PSAyICYmCgkJCQk6OkluRmxkRGVsZXRlICgpKQoJCQl7CgkJ
CQlyZXR1cm4gRXJyb3JzOjprT0tBY2Nlc3M7CgkJCX0KCgkJCSAKCgkJCWlmIChFbVBhdGNoU3Rh
dGU6Okhhc0dyZlByb2Nlc3NTdHJva2VCdWcgKCkgJiYKCQkJCWFkZHJlc3MgPT0gMHgwMDAyICYm
IHNpemUgPT0gMiAmJgoJCQkJOjpJbkdyZlByb2Nlc3NTdHJva2UgKCkpCgkJCXsKCQkJCXJldHVy
biBFcnJvcnM6OmtPS0FjY2VzczsKCQkJfQoKCQkJIAoKCQkJaWYgKEVtUGF0Y2hTdGF0ZTo6SGFz
TmV0UHJ2VGFza01haW5CdWcgKCkgJiYKCQkJCTo6SW5OZXRQcnZUYXNrTWFpbiAoKSkKCQkJewoJ
CQkJcmV0dXJuIEVycm9yczo6a09LQWNjZXNzOwoJCQl9CgkJfQoKCQkgCgkJIAoJCSAKCgkJaWYg
KEVtUGF0Y2hTdGF0ZTo6SGFzU3lzQmluYXJ5U2VhcmNoQnVnICgpICYmCgkJCUVtUGF0Y2hTdGF0
ZTo6SXNJblN5c0JpbmFyeVNlYXJjaCAoKSkKCQl7CgkJCXJldHVybiBFcnJvcnM6OmtPS0FjY2Vz
czsKCQl9CgoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoKCQlpZiAoOjpJbl9DZXJ0aWNvbU1lbUNw
eSAoKSkKCQl7CgkJCXJldHVybiBFcnJvcnM6OmtPS0FjY2VzczsKCQl9CgoJCSAKCQkgCgoJCWlm
ICg6OkluZG5zX2RlY29kZV9uYW1lICgpICYmCgkJCXdoYXRIYXBwZW5lZCA9PSBFcnJvcnM6OmtN
ZW1NZ3JBY2Nlc3MpCgkJewoJCQlyZXR1cm4gRXJyb3JzOjprT0tBY2Nlc3M7CgkJfQoJfQoKCWlm
ICh3aGF0SGFwcGVuZWQgPT0gRXJyb3JzOjprTG93TWVtQWNjZXNzKQoJewoJCSAKCQkgCgoJCWlm
IChzaXplID09IDQgJiYgYWRkcmVzcyA9PSAweDAwMDggJiYgKDo6SW5Ic1BydkluaXQgKCkgfHwg
OjpJbkhzUHJ2SW5pdENhcmQgKCkpKQoJCXsKCQkJcmV0dXJuIEVycm9yczo6a09LQWNjZXNzOwoJ
CX0KCX0KCglpZiAod2hhdEhhcHBlbmVkID09IEVycm9yczo6a0dsb2JhbFZhckFjY2VzcykKCXsK
CQkgCgkJIAoKCgkJaWYgKChhZGRyZXNzID09IEVtTG93TWVtOjpmZ0xvd01lbS5nbG9iYWxzLiB0
c21GZXBMaWJTdGF0dXNQIC5HZXRQdHIgKCkgIHx8CgkJCSBhZGRyZXNzID09IEVtTG93TWVtOjpm
Z0xvd01lbS5nbG9iYWxzLiB0c21GZXBMaWJSZWZOdW0gLkdldFB0ciAoKSApICYmCgkJCSA6Oklu
VHNtR2x1ZUdldEZlcEdsb2JhbHMgKCkpCgkJewoJCQlyZXR1cm4gRXJyb3JzOjprT0tBY2Nlc3M7
CgkJfQoKCQkgCgkJCgkJaWYgKChhZGRyZXNzID09IEVtTG93TWVtOjpmZ0xvd01lbS5nbG9iYWxz
LiBpbnRsTWdyR2xvYmFsc1AgLkdldFB0ciAoKSApICYmCgkJCSg6OkluUHJ2R2V0SW50bE1nckds
b2JhbHNQKCkgfHwKCQkJIDo6SW5QcnZTZXRJbnRsTWdyR2xvYmFsc1AoKSkpCgkJewoJCQlyZXR1
cm4gRXJyb3JzOjprT0tBY2Nlc3M7CgkJfQoKCQkgCgoJCWlmIChhZGRyZXNzID09IEVtTG93TWVt
OjpmZ0xvd01lbS5nbG9iYWxzLiB0ZXN0SGFybmVzc0dsb2JhbHNQIC5HZXRQdHIgKCkgKQoJCXsK
CQkJcmV0dXJuIEVycm9yczo6a09LQWNjZXNzOwoJCX0KCX0KCglyZXR1cm4gd2hhdEhhcHBlbmVk
Owp9CgoKIAogCiAKCmVtdXB0ciBNZXRhTWVtb3J5OjpHZXRMb3dNZW1vcnlCZWdpbiAodm9pZCkK
ewoJcmV0dXJuIDA7Cn0KCgogCiAKIAoKZW11cHRyIE1ldGFNZW1vcnk6OkdldExvd01lbW9yeUVu
ZCAodm9pZCkKewoJcmV0dXJuICgoc2l6ZV90KSAmKCggTG93TWVtSGRyVHlwZSAgKikwKS0+ICBn
bG9iYWxzICkgOwp9CgoKIAogCiAKCmVtdXB0ciBNZXRhTWVtb3J5OjpHZXRTeXNHbG9iYWxzQmVn
aW4gKHZvaWQpCnsKCXJldHVybiAoKHNpemVfdCkgJigoIExvd01lbUhkclR5cGUgICopMCktPiAg
Z2xvYmFscyApIDsKfQoKCiAKIAogCgplbXVwdHIgTWV0YU1lbW9yeTo6R2V0U3lzR2xvYmFsc0Vu
ZCAodm9pZCkKewoJQ0VuYWJsZUZ1bGxBY2Nlc3MJbXVuZ2U7CSAKCglyZXR1cm4gRW1Mb3dNZW06
OmZnTG93TWVtLmdsb2JhbHMuIHN5c0Rpc3BhdGNoVGFibGVQICAgKyAKCQkJRW1Mb3dNZW06OmZn
TG93TWVtLmdsb2JhbHMuIHN5c0Rpc3BhdGNoVGFibGVTaXplICAgKiAoc2l6ZW9mICh2b2lkKikp
Owp9CiAKIAogCgplbXVwdHIgTWV0YU1lbW9yeTo6R2V0SGVhcEhkckJlZ2luIChVSW50MTYgaGVh
cElEKQp7Cgljb25zdCBFbVBhbG1IZWFwKgloZWFwID0gRW1QYWxtSGVhcDo6R2V0SGVhcEJ5SUQg
KGhlYXBJRCk7CglpZiAoIWhlYXApCgkJcmV0dXJuICgoZW11cHRyKSAwKSA7CgoJcmV0dXJuIGhl
YXAtPkhlYWRlclN0YXJ0ICgpOwp9CgoKIAogCiAKCmVtdXB0ciBNZXRhTWVtb3J5OjpHZXRIZWFw
SGRyRW5kIChVSW50MTYgaGVhcElEKQp7Cgljb25zdCBFbVBhbG1IZWFwKgloZWFwID0gRW1QYWxt
SGVhcDo6R2V0SGVhcEJ5SUQgKGhlYXBJRCk7CglpZiAoIWhlYXApCgkJcmV0dXJuICgoZW11cHRy
KSAwKSA7CgoJcmV0dXJuIGhlYXAtPkhlYWRlckVuZCAoKTsKfQoKCkJvb2wgTWV0YU1lbW9yeTo6
SXNMb3dNZW1vcnkgKGVtdXB0ciB0ZXN0QWRkcmVzcywgdWludDMyIHNpemUpCnsKCXJldHVybiB0
ZXN0QWRkcmVzcyA+PSBHZXRMb3dNZW1vcnlCZWdpbiAoKSAmJiB0ZXN0QWRkcmVzcyArIHNpemUg
PD0gR2V0TG93TWVtb3J5RW5kICgpOwp9CgoKQm9vbCBNZXRhTWVtb3J5OjpJc1N5c3RlbUdsb2Jh
bCAoZW11cHRyIHRlc3RBZGRyZXNzLCB1aW50MzIgc2l6ZSkKewoJcmV0dXJuIHRlc3RBZGRyZXNz
ID49IEdldFN5c0dsb2JhbHNCZWdpbiAoKSAmJiB0ZXN0QWRkcmVzcyArIHNpemUgPD0gR2V0U3lz
R2xvYmFsc0VuZCAoKTsKfQoKCkJvb2wgTWV0YU1lbW9yeTo6SXNTY3JlZW5CdWZmZXIgKGVtdXB0
ciB0ZXN0QWRkcmVzcywgdWludDMyIHNpemUpCnsKCXJldHVybiBJc1NjcmVlbkJ1ZmZlciAoRW1N
ZW1HZXRNZXRhQWRkcmVzcyAodGVzdEFkZHJlc3MpLCBzaXplKTsKfQoKCkJvb2wgTWV0YU1lbW9y
eTo6SXNNZW1NZ3JEYXRhIChlbXVwdHIgdGVzdEFkZHJlc3MsIHVpbnQzMiBzaXplKQp7Cgljb25z
dCBFbVBhbG1IZWFwKgloZWFwID0gRW1QYWxtSGVhcDo6R2V0SGVhcEJ5UHRyICh0ZXN0QWRkcmVz
cyk7CgkKCWlmIChoZWFwKQoJewoJCUVtUGFsbUNodW5rTGlzdDo6Y29uc3RfaXRlcmF0b3IJICBp
dGVyICA9ICggKmhlYXAgKS5HZXRDaHVua0xpc3RCZWdpbiAoKTsJRW1QYWxtQ2h1bmtMaXN0Ojpj
b25zdF9pdGVyYXRvcgkgIGVuZCAgPSAoICpoZWFwICkuR2V0Q2h1bmtMaXN0RW5kICgpOwl3aGls
ZSAoICBpdGVyICAhPSAgIGVuZCApIAoJCXsKCQkJaWYgKChpdGVyLT5IZWFkZXJDb250YWlucyAo
dGVzdEFkZHJlc3MpICYmCgkJCQlpdGVyLT5IZWFkZXJDb250YWlucyAodGVzdEFkZHJlc3MgKyBz
aXplKSkgfHwKCQkJCShpdGVyLT5UcmFpbGVyQ29udGFpbnMgKHRlc3RBZGRyZXNzKSAmJgoJCQkJ
aXRlci0+VHJhaWxlckNvbnRhaW5zICh0ZXN0QWRkcmVzcyArIHNpemUpKSkKCQkJewoJCQkJcmV0
dXJuIHRydWU7CgkJCX0KCgkJCSsraXRlcjsKCQl9Cgl9CgkKCXJldHVybiBmYWxzZTsKfQoKCkJv
b2wgTWV0YU1lbW9yeTo6SXNVbmxvY2tlZENodW5rIChlbXVwdHIgdGVzdEFkZHJlc3MsIHVpbnQz
MiBzaXplKQp7Cgljb25zdCBFbVBhbG1IZWFwKgloZWFwID0gRW1QYWxtSGVhcDo6R2V0SGVhcEJ5
UHRyICh0ZXN0QWRkcmVzcyk7CgkKCWlmIChoZWFwKQoJewoJCUVtUGFsbUNodW5rTGlzdDo6Y29u
c3RfaXRlcmF0b3IJICBpdGVyICA9ICggKmhlYXAgKS5HZXRDaHVua0xpc3RCZWdpbiAoKTsJRW1Q
YWxtQ2h1bmtMaXN0Ojpjb25zdF9pdGVyYXRvcgkgIGVuZCAgPSAoICpoZWFwICkuR2V0Q2h1bmtM
aXN0RW5kICgpOwl3aGlsZSAoICBpdGVyICAhPSAgIGVuZCApIAoJCXsKCQkJaWYgKGl0ZXItPkJv
ZHlDb250YWlucyAodGVzdEFkZHJlc3MpICYmCgkJCQlpdGVyLT5Cb2R5Q29udGFpbnMgKHRlc3RB
ZGRyZXNzICsgc2l6ZSkgJiYKCQkJCWl0ZXItPkxvY2tDb3VudCAoKSA9PSAwKQoJCQl7CgkJCQly
ZXR1cm4gdHJ1ZTsKCQkJfQoKCQkJKytpdGVyOwoJCX0KCX0KCQoJcmV0dXJuIGZhbHNlOwp9CgoK
Qm9vbCBNZXRhTWVtb3J5OjpJc0ZyZWVDaHVuayAoZW11cHRyIHRlc3RBZGRyZXNzLCB1aW50MzIg
c2l6ZSkKewoJY29uc3QgRW1QYWxtSGVhcCoJaGVhcCA9IEVtUGFsbUhlYXA6OkdldEhlYXBCeVB0
ciAodGVzdEFkZHJlc3MpOwoJCglpZiAoaGVhcCkKCXsKCQlFbVBhbG1DaHVua0xpc3Q6OmNvbnN0
X2l0ZXJhdG9yCSAgaXRlciAgPSAoICpoZWFwICkuR2V0Q2h1bmtMaXN0QmVnaW4gKCk7CUVtUGFs
bUNodW5rTGlzdDo6Y29uc3RfaXRlcmF0b3IJICBlbmQgID0gKCAqaGVhcCApLkdldENodW5rTGlz
dEVuZCAoKTsJd2hpbGUgKCAgaXRlciAgIT0gICBlbmQgKSAKCQl7CgkJCWlmIChpdGVyLT5Cb2R5
Q29udGFpbnMgKHRlc3RBZGRyZXNzKSAmJgoJCQkJaXRlci0+Qm9keUNvbnRhaW5zICh0ZXN0QWRk
cmVzcyArIHNpemUpICYmCgkJCQlpdGVyLT5GcmVlICgpID09IDApCgkJCXsKCQkJCXJldHVybiB0
cnVlOwoJCQl9CgoJCQkrK2l0ZXI7CgkJfQoJfQoJCglyZXR1cm4gZmFsc2U7Cn0KCgpCb29sIE1l
dGFNZW1vcnk6OklzVW5pbml0aWFsaXplZCAoZW11cHRyIHRlc3RBZGRyZXNzLCB1aW50MzIgc2l6
ZSkKewoKCgoJKCh2b2lkKSAgdGVzdEFkZHJlc3MgKTsgCgkoKHZvaWQpICBzaXplICk7IAoKCXJl
dHVybiBmYWxzZTsKCn0KCgpCb29sIE1ldGFNZW1vcnk6OklzU3RhY2sgKGVtdXB0ciB0ZXN0QWRk
cmVzcywgdWludDMyIHNpemUpCnsKCSgodm9pZCkgIHRlc3RBZGRyZXNzICk7IAoJKCh2b2lkKSAg
c2l6ZSApOyAKCglyZXR1cm4gZmFsc2U7Cn0KCgpCb29sIE1ldGFNZW1vcnk6OklzTG93U3RhY2sg
KGVtdXB0ciB0ZXN0QWRkcmVzcywgdWludDMyIHNpemUpCnsKCSgodm9pZCkgIHRlc3RBZGRyZXNz
ICk7IAoJKCh2b2lkKSAgc2l6ZSApOyAKCglyZXR1cm4gZmFsc2U7Cn0KCgpCb29sIE1ldGFNZW1v
cnk6OklzQWxsb2NhdGVkQ2h1bmsgKGVtdXB0ciB0ZXN0QWRkcmVzcywgdWludDMyIHNpemUpCnsK
CXJldHVybiAhSXNGcmVlQ2h1bmsgKHRlc3RBZGRyZXNzLCBzaXplKTsKfQoKCiAKIAogCgp2b2lk
IE1ldGFNZW1vcnk6Ok1hcmtSYW5nZSAoZW11cHRyIHN0YXJ0LCBlbXVwdHIgZW5kLCB1aW50OCB2
KQp7CgkgCgkgCgoJaWYgKCgqZ0VtTWVtQmFua3NbKCgoZW11cHRyKSggIHN0YXJ0ICApKSA+PiAx
NikgXSkgLnhsYXRlbWV0YWFkZHIgPT0gX19udWxsICkKCQlyZXR1cm47CgoJIAoJIAoJIAoJIAoK
CWlmIChzdGFydCA+PSAwICYmIHN0YXJ0IDwgMCArIGdSQU1CYW5rX1NpemUKCQkmJiBlbmQgPj0g
MCArIGdSQU1CYW5rX1NpemUpCgl7CgkJZW5kID0gZ1JBTUJhbmtfU2l6ZSAtIDE7Cgl9CgoJaWYg
KHN0YXJ0ID49IGdNZW1vcnlTdGFydCAmJiBzdGFydCA8IGdNZW1vcnlTdGFydCArIGdSQU1CYW5r
X1NpemUKCQkmJiBlbmQgPj0gZ01lbW9yeVN0YXJ0ICsgZ1JBTUJhbmtfU2l6ZSkKCXsKCQllbmQg
PSBnTWVtb3J5U3RhcnQgKyBnUkFNQmFua19TaXplIC0gMTsKCX0KCgl1aW50OCoJc3RhcnRQCT0g
RW1NZW1HZXRNZXRhQWRkcmVzcyAoc3RhcnQpOwoJdWludDgqCWVuZFAJPSBzdGFydFAgKyAoZW5k
IC0gc3RhcnQpOwkgCgl1aW50OCoJZW5kNFAJPSAodWludDgqKSAoKCh1aW50MzIpIGVuZFApICYg
fjMpOwoJdWludDgqCXAJCT0gc3RhcnRQOwoKCSgodm9pZCkgMCkgOwoJKCh2b2lkKSAwKSA7Cgko
KHZvaWQpIDApIDsKCgoJIAoJIAoKCWlmIChlbmQgLSBzdGFydCA8IDEyKQoJewoJCXdoaWxlIChw
IDwgZW5kUCkKCQl7CgkJCSpwKysgJj0gdjsKCQl9Cgl9CgllbHNlCgl7CgkJdWludDMyCWxvbmdW
YWx1ZSA9IHY7CgkJbG9uZ1ZhbHVlIHw9IChsb25nVmFsdWUgPDwgOCk7CgkJbG9uZ1ZhbHVlIHw9
IChsb25nVmFsdWUgPDwgMTYpOwoKCQl3aGlsZSAoKCh1aW50MzIpIHApICYgMykJCSAKCQl7CgkJ
CSpwKysgfD0gdjsKCQl9CgoJCXdoaWxlIChwIDwgZW5kNFApCQkJCSAKCQl7CgkJCSoodWludDMy
KikgcCB8PSBsb25nVmFsdWU7CgkJCXAgKz0gc2l6ZW9mICh1aW50MzIpOwoJCX0KCgkJd2hpbGUg
KHAgPCBlbmRQKQkJCQkgCgkJewoJCQkqcCsrIHw9IHY7CgkJfQoJfQoKCgoKCgp9CgoKIAogCiAK
CnZvaWQgTWV0YU1lbW9yeTo6VW5tYXJrUmFuZ2UgKGVtdXB0ciBzdGFydCwgZW11cHRyIGVuZCwg
dWludDggdikKewoJIAoJIAoKCWlmICgoKmdFbU1lbUJhbmtzWygoKGVtdXB0cikoICBzdGFydCAg
KSkgPj4gMTYpIF0pIC54bGF0ZW1ldGFhZGRyID09IF9fbnVsbCApCgkJcmV0dXJuOwoKCSAKCSAK
CSAKCSAKCglpZiAoc3RhcnQgPj0gMCAmJiBzdGFydCA8IDAgKyBnUkFNQmFua19TaXplCgkJJiYg
ZW5kID49IDAgKyBnUkFNQmFua19TaXplKQoJewoJCWVuZCA9IGdSQU1CYW5rX1NpemUgLSAxOwoJ
fQoKCWlmIChzdGFydCA+PSBnTWVtb3J5U3RhcnQgJiYgc3RhcnQgPCBnTWVtb3J5U3RhcnQgKyBn
UkFNQmFua19TaXplCgkJJiYgZW5kID49IGdNZW1vcnlTdGFydCArIGdSQU1CYW5rX1NpemUpCgl7
CgkJZW5kID0gZ01lbW9yeVN0YXJ0ICsgZ1JBTUJhbmtfU2l6ZSAtIDE7Cgl9CgoJdWludDgqCXN0
YXJ0UAk9IEVtTWVtR2V0TWV0YUFkZHJlc3MgKHN0YXJ0KTsKCXVpbnQ4KgllbmRQCT0gc3RhcnRQ
ICsgKGVuZCAtIHN0YXJ0KTsJIAoJdWludDgqCWVuZDRQCT0gKHVpbnQ4KikgKCgodWludDMyKSBl
bmRQKSAmIH4zKTsKCXVpbnQ4KglwCQk9IHN0YXJ0UDsKCgkoKHZvaWQpIDApIDsKCSgodm9pZCkg
MCkgOwoJKCh2b2lkKSAwKSA7CgoJdiA9IH52OwoKCgkgCgkgCgoJaWYgKGVuZCAtIHN0YXJ0IDwg
MTIpCgl7CgkJd2hpbGUgKHAgPCBlbmRQKQoJCXsKCQkJKnArKyAmPSB2OwoJCX0KCX0KCWVsc2UK
CXsKCQl1aW50MzIJbG9uZ1ZhbHVlID0gdjsKCQlsb25nVmFsdWUgfD0gKGxvbmdWYWx1ZSA8PCA4
KTsKCQlsb25nVmFsdWUgfD0gKGxvbmdWYWx1ZSA8PCAxNik7CgoJCXdoaWxlICgoKHVpbnQzMikg
cCkgJiAzKQkJIAoJCXsKCQkJKnArKyAmPSB2OwoJCX0KCgkJd2hpbGUgKHAgPCBlbmQ0UCkJCQkJ
IAoJCXsKCQkJKih1aW50MzIqKSBwICY9IGxvbmdWYWx1ZTsKCQkJcCArPSBzaXplb2YgKHVpbnQz
Mik7CgkJfQoKCQl3aGlsZSAocCA8IGVuZFApCQkJCSAKCQl7CgkJCSpwKysgJj0gdjsKCQl9Cgl9
CgoKCgoKCn0KCgogCiAKIAoKdm9pZCBNZXRhTWVtb3J5OjpNYXJrVW5tYXJrUmFuZ2UgKGVtdXB0
ciBzdGFydCwgZW11cHRyIGVuZCwKCQkJCQkJCXVpbnQ4IGFuZFZhbHVlLCB1aW50OCBvclZhbHVl
KQp7CgkgCgkgCgoJaWYgKCgqZ0VtTWVtQmFua3NbKCgoZW11cHRyKSggIHN0YXJ0ICApKSA+PiAx
NikgXSkgLnhsYXRlbWV0YWFkZHIgPT0gX19udWxsICkKCQlyZXR1cm47CgoJIAoJIAoJIAoJIAoK
CWlmIChzdGFydCA+PSAwICYmIHN0YXJ0IDwgMCArIGdSQU1CYW5rX1NpemUKCQkmJiBlbmQgPj0g
MCArIGdSQU1CYW5rX1NpemUpCgl7CgkJZW5kID0gZ1JBTUJhbmtfU2l6ZSAtIDE7Cgl9CgoJaWYg
KHN0YXJ0ID49IGdNZW1vcnlTdGFydCAmJiBzdGFydCA8IGdNZW1vcnlTdGFydCArIGdSQU1CYW5r
X1NpemUKCQkmJiBlbmQgPj0gZ01lbW9yeVN0YXJ0ICsgZ1JBTUJhbmtfU2l6ZSkKCXsKCQllbmQg
PSBnTWVtb3J5U3RhcnQgKyBnUkFNQmFua19TaXplIC0gMTsKCX0KCgl1aW50OCoJc3RhcnRQCT0g
RW1NZW1HZXRNZXRhQWRkcmVzcyAoc3RhcnQpOwoJdWludDgqCWVuZFAJPSBzdGFydFAgKyAoZW5k
IC0gc3RhcnQpOwkgCgl1aW50OCoJZW5kNFAJPSAodWludDgqKSAoKCh1aW50MzIpIGVuZFApICYg
fjMpOwoJdWludDgqCXAJCT0gc3RhcnRQOwoKCSgodm9pZCkgMCkgOwoJKCh2b2lkKSAwKSA7Cgko
KHZvaWQpIDApIDsKCglpZiAoYW5kVmFsdWUgPT0gMHhGRikKCXsKCQl3aGlsZSAocCA8IGVuZFAp
CgkJewoJCQkqcCsrIHw9IG9yVmFsdWU7CgkJfQoJfQoJZWxzZSBpZiAob3JWYWx1ZSA9PSAweDAw
KQoJewoJCXdoaWxlIChwIDwgZW5kUCkKCQl7CgkJCSpwKysgJj0gYW5kVmFsdWU7CgkJfQoJfQoJ
ZWxzZQoJewoKCQkgCgkJIAoKCQlpZiAoZW5kIC0gc3RhcnQgPCAxMikKCQl7CgkJCXdoaWxlIChw
IDwgZW5kUCkJCQkJIAoJCQl7CgkJCQkqcCA9ICgqcCAmIGFuZFZhbHVlKSB8IG9yVmFsdWU7CgkJ
CQlwICs9IHNpemVvZiAoY2hhcik7CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJdWludDMyCWxvbmdB
bmQgPSBhbmRWYWx1ZTsKCQkJbG9uZ0FuZCB8PSAobG9uZ0FuZCA8PCA4KTsKCQkJbG9uZ0FuZCB8
PSAobG9uZ0FuZCA8PCAxNik7CgoJCQl1aW50MzIJbG9uZ09yID0gb3JWYWx1ZTsKCQkJbG9uZ09y
IHw9IChsb25nT3IgPDwgOCk7CgkJCWxvbmdPciB8PSAobG9uZ09yIDw8IDE2KTsKCgkJCXdoaWxl
ICgoKHVpbnQzMikgcCkgJiAzKQkJIAoJCQl7CgkJCQkqcCA9ICgqcCAmIGFuZFZhbHVlKSB8IG9y
VmFsdWU7CgkJCQlwICs9IHNpemVvZiAoY2hhcik7CgkJCX0KCgkJCXdoaWxlIChwIDwgZW5kNFAp
CQkJCSAKCQkJewoJCQkJKih1aW50MzIqKSBwID0gKCgqKHVpbnQzMiopIHApICYgbG9uZ0FuZCkg
fCBsb25nT3I7CgkJCQlwICs9IHNpemVvZiAobG9uZyk7CgkJCX0KCgkJCXdoaWxlIChwIDwgZW5k
UCkJCQkJIAoJCQl7CgkJCQkqcCA9ICgqcCAmIGFuZFZhbHVlKSB8IG9yVmFsdWU7CgkJCQlwICs9
IHNpemVvZiAoY2hhcik7CgkJCX0KCQl9CgoKCgoKCgl9Cn0KCgogCiAKIAogCiAKCnZvaWQgTWV0
YU1lbW9yeTo6R1dIX0V4YW1pbmVIZWFwICgJY29uc3QgRW1QYWxtSGVhcCYgaGVhcCwKCQkJCQkJ
CQkJV2hhdEhhcHBlbmVkRGF0YSYgaW5mbykKewoJIAoKCWlmICghaGVhcC5Db250YWlucyAoaW5m
by5hZGRyZXNzKSkKCXsKCQlyZXR1cm47Cgl9CgoJIAoJIAoKCSAKCglpZiAoaGVhcC5IZWFkZXJD
b250YWlucyAoaW5mby5hZGRyZXNzKSkKCXsKCQlpbmZvLnJlc3VsdCA9IEVycm9yczo6a01lbU1n
ckFjY2VzczsKCQlyZXR1cm47Cgl9CgoJIAoKCXsKCQlFbVBhbG1NUFRMaXN0Ojpjb25zdF9pdGVy
YXRvcgkgIGl0ZXIgID0gKCBoZWFwICkuR2V0TVBUTGlzdEJlZ2luICgpOwlFbVBhbG1NUFRMaXN0
Ojpjb25zdF9pdGVyYXRvcgkgIGVuZCAgPSAoIGhlYXAgKS5HZXRNUFRMaXN0RW5kICgpOwl3aGls
ZSAoICBpdGVyICAhPSAgIGVuZCApIAoJCXsKCQkJaWYgKGl0ZXItPkNvbnRhaW5zIChpbmZvLmFk
ZHJlc3MpKQoJCQl7CgkJCQlpbmZvLnJlc3VsdCA9IEVycm9yczo6a01lbU1nckFjY2VzczsKCQkJ
CXJldHVybjsKCQkJfQoKCQkJKytpdGVyOwoJCX0KCX0KCgkgCgoJewoJCUVtUGFsbUNodW5rTGlz
dDo6Y29uc3RfaXRlcmF0b3IJICBpdGVyICA9ICggaGVhcCApLkdldENodW5rTGlzdEJlZ2luICgp
OwlFbVBhbG1DaHVua0xpc3Q6OmNvbnN0X2l0ZXJhdG9yCSAgZW5kICA9ICggaGVhcCApLkdldENo
dW5rTGlzdEVuZCAoKTsJd2hpbGUgKCAgaXRlciAgIT0gICBlbmQgKSAKCQl7CgkJCUdXSF9FeGFt
aW5lQ2h1bmsgKCppdGVyLCBpbmZvKTsKCQkJaWYgKGluZm8ucmVzdWx0ICE9IEVycm9yczo6a1Vu
a25vd25BY2Nlc3MpCgkJCQlyZXR1cm47CgoJCQkrK2l0ZXI7CgkJfQoJfQp9CgoKIAogCiAKIAog
Cgp2b2lkIE1ldGFNZW1vcnk6OkdXSF9FeGFtaW5lQ2h1bmsgKAljb25zdCBFbVBhbG1DaHVuayYg
Y2h1bmssCgkJCQkJCQkJCVdoYXRIYXBwZW5lZERhdGEmIGluZm8pCnsKCWVtdXB0cglhZGRyU3Rh
cnQJPSBpbmZvLmFkZHJlc3M7CgllbXVwdHIJYWRkckVuZAkJPSBpbmZvLmFkZHJlc3MgKyBpbmZv
LnNpemU7CgoJIAoKCWVtdXB0cgloZHJTdGFydAk9IGNodW5rLkhlYWRlclN0YXJ0ICgpOwoJZW11
cHRyCWJvZHlTdGFydAk9IGNodW5rLkJvZHlTdGFydCAoKTsKCWVtdXB0cgl0cmxTdGFydAk9IGNo
dW5rLkJvZHlFbmQgKCk7CgllbXVwdHIJY2h1bmtFbmQJPSBjaHVuay5FbmQgKCk7CgoJIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgkgCgoJaWYgKGFkZHJFbmQgPiBoZHJTdGFydCAmJiBhZGRyU3Rh
cnQgPCBjaHVua0VuZCkKCXsKCQkgCgoJCWlmIChhZGRyRW5kID4gYm9keVN0YXJ0ICYmIGFkZHJT
dGFydCA8IHRybFN0YXJ0KQoJCXsKCQkJIAoKCQkJaWYgKGNodW5rLkZyZWUgKCkpCgkJCXsKCQkJ
CWluZm8ucmVzdWx0ID0gRXJyb3JzOjprRnJlZUNodW5rQWNjZXNzOwoJCQl9CgoJCQkgCgoJCQll
bHNlIGlmIChjaHVuay5Mb2NrQ291bnQgKCkgPT0gMCkKCQkJewoJCQkJaW5mby5yZXN1bHQgPSBF
cnJvcnM6OmtVbmxvY2tlZENodW5rQWNjZXNzOwoJCQl9CgkJfQoKCQkgCgoJCWlmIChhZGRyRW5k
ID4gaGRyU3RhcnQgJiYgYWRkclN0YXJ0IDwgYm9keVN0YXJ0KQoJCXsKCQkJaW5mby5yZXN1bHQg
PSBFcnJvcnM6OmtNZW1NZ3JBY2Nlc3M7CgkJfQoKCQkgCgoJCWlmIChhZGRyRW5kID4gdHJsU3Rh
cnQgJiYgYWRkclN0YXJ0IDwgY2h1bmtFbmQpCgkJewoJCQlpbmZvLnJlc3VsdCA9IEVycm9yczo6
a01lbU1nckFjY2VzczsKCQl9CgoKCQkgCgoJCSAKCQkgCgkJIAoJCSAKCgkJaWYgKGluZm8ucmVz
dWx0ID09IEVycm9yczo6a01lbU1nckFjY2VzcyAmJgoJCQlpbmZvLmZvclJlYWQgJiYKCQkgCgkJ
CSg6OkluUHJ2Q29tcHJlc3NlZElubmVyQml0Qmx0ICgpIHx8CgkJCSA6OkluUHJ2TWlzQWxpZ25l
ZEZvcndhcmRJbm5lckJpdEJsdCAoKSB8fAoJCQkgOjpJblBydk1pc0FsaWduZWRCYWNrd2FyZElu
bmVyQml0Qmx0ICgpKSkKCQl7CgkJCWdvdG8gSGlkZUJ1ZzsKCQl9CgoKCQlpZiAoRW1QYXRjaFN0
YXRlOjpIYXNDb252ZXJ0RGVwdGgxVG8yQldCdWcgKCkgJiYKCQkJaW5mby5yZXN1bHQgPT0gRXJy
b3JzOjprTWVtTWdyQWNjZXNzICYmCgkJCWluZm8uZm9yUmVhZCAmJgoJCQlpbmZvLnNpemUgPT0g
c2l6ZW9mIChVSW50OCkgJiYKCQkJOjpJblBydkNvbnZlcnREZXB0aDFUbzJCVyAoKSkKCQl7CgkJ
CWdvdG8gSGlkZUJ1ZzsKCQl9CgoKCQkgCgkJIAoJCSAKCgkJaWYgKGluZm8ucmVzdWx0ID09IEVy
cm9yczo6a01lbU1nckFjY2VzcyAmJgoJCQlpbmZvLmZvclJlYWQgJiYKCQkJaW5mby5zaXplID09
IHNpemVvZiAoVUludDgpICYmCgkJCTo6SW5OZXRMaWJCaXRNb3ZlICgpKQoJCXsKCQkJZ290byBI
aWRlQnVnOwoJCX0KCgoJCSAKCQkgCgkJIAoKCQlpZiAoRW1QYXRjaFN0YXRlOjpIYXNNZW51SGFu
ZGxlRXZlbnRCdWcgKCkgJiYKCQkJaW5mby5mb3JSZWFkICYmCgkJCWluZm8uc2l6ZSA9PSBzaXpl
b2YgKFdpbkhhbmRsZSkgJiYJIAoJCQk6OkluTWVudUhhbmRsZUV2ZW50ICgpKQoJCXsKCQkJZ290
byBIaWRlQnVnOwoJCX0KCgoJCSAKCQkgCgoJCWlmIChFbVBhdGNoU3RhdGU6Okhhc05ldFBydlNl
dHRpbmdTZXRCdWcgKCkgJiYKCQkJaW5mby5mb3JSZWFkICYmCgkJCWluZm8uc2l6ZSA9PSA0ICYm
CgkJCTo6SW5OZXRQcnZTZXR0aW5nU2V0ICgpKQoJCXsKCQkJZ290byBIaWRlQnVnOwoJCX0KCgoJ
CSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoKCQlpZiAoaW5m
by5yZXN1bHQgPT0gRXJyb3JzOjprRnJlZUNodW5rQWNjZXNzICYmCgkJCUVtUGF0Y2hTdGF0ZTo6
SGFzRGVsZXRlZFN0YWNrQnVnICgpKQoJCXsKCQkJIAoJCQkgCgoJCQlTeXNLZXJuZWxJbmZvVHlw
ZQl0YXNrSW5mbzsKCgkJCXRhc2tJbmZvLnNlbGVjdG9yCT0gc3lzS2VybmVsSW5mb1NlbFRhc2tJ
bmZvOwoJCQl0YXNrSW5mby5pZAkJCT0gMDsJIAoKCQkJIAoJCQkgCgkJCSAKCQkJIAoJCQkgCgkJ
CSAKCQkJIAoKCQkJdmVjdG9yPFVJbnQzMj4JdGFza0lETGlzdDsKCQkJRXJyCQkJCWVyciA9IFN5
c0tlcm5lbEluZm8gKCZ0YXNrSW5mbyk7CgoJCQl3aGlsZSAoZXJyID09IDApCgkJCXsKCQkJCSAK
CgkJCQl2ZWN0b3I8VUludDMyPjo6aXRlcmF0b3IJaXRlciA9IHRhc2tJRExpc3QuYmVnaW4gKCk7
CgkJCQl3aGlsZSAoaXRlciAhPSB0YXNrSURMaXN0LmVuZCAoKSkKCQkJCXsKCQkJCQlpZiAoKml0
ZXIrKyA9PSB0YXNrSW5mby5wYXJhbS50YXNrLmlkKQoJCQkJCXsKCQkJCQkJZ290byBQbGFuQjsJ
IAoJCQkJCX0KCQkJCX0KCgkJCQkgCgkJCQkgCgkJCQkgCgkJCQkgCgkJCQkgCgoJCQkJaWYgKHRh
c2tJbmZvLnBhcmFtLnRhc2suc3RhY2tTdGFydCA+PSBib2R5U3RhcnQgJiYKCQkJCQl0YXNrSW5m
by5wYXJhbS50YXNrLnN0YWNrU3RhcnQgPCB0cmxTdGFydCkKCQkJCXsKCQkJCQlnb3RvIEhpZGVC
dWc7CgkJCQl9CgoJCQkJIAoJCQkJIAoKCQkJCXRhc2tJRExpc3QucHVzaF9iYWNrICh0YXNrSW5m
by5wYXJhbS50YXNrLmlkKTsKCgkJCQkgCgoJCQkJdGFza0luZm8uc2VsZWN0b3IJPSBzeXNLZXJu
ZWxJbmZvU2VsVGFza0luZm87CgkJCQl0YXNrSW5mby5pZAkJCT0gdGFza0luZm8ucGFyYW0udGFz
ay5uZXh0SUQ7CgkJCQllcnIJCQkJCT0gU3lzS2VybmVsSW5mbyAoJnRhc2tJbmZvKTsKCQkJfQoK
CQkJIApQbGFuQjoKCQkJIAoJCQkgCgkJCSAKCgkJCWlmICgJZ0NQVS0+R2V0U1AgKCkgPj0gYm9k
eVN0YXJ0ICYmCgkJCQkJZ0NQVS0+R2V0U1AgKCkgPCB0cmxTdGFydCkKCQkJewoJCQkJIAoKCQkJ
CWlmICg6OkluY2pfa3B0a2RlbGV0ZSAoKSkKCQkJCXsKCQkJCQlpbmZvLnJlc3VsdCA9IEVycm9y
czo6a09LQWNjZXNzOwoJCQkJfQoKCQkJCSAKCQkJCSAKCQkJCSAKCQkJCSAKCQkJCSAKCQkJCSAK
CQkJCSAKCQkJCSAKCQkJCSAKCQkJCSAKCQkJCSAKCQkJCSAKCQkJCSAKCQkJCSAKCQkJCSAKCQkJ
CSAKCQkJCSAKCQkJCSAKCQkJCSAKCQkJCSAKCQkJCSAKCQkJCSAKCgkJCQllbHNlCgkJCQl7CgkJ
CQkJIAoJCQkJCSAKCQkJCQkgCgkJCQkJIAoKCQkJCQllbXVwdHIJYTcgPSBnQ1BVLT5HZXRTUCAo
KTsKCgkJCQkJd2hpbGUgKGE3ID49IGJvZHlTdGFydCAmJiBhNyA8IHRybFN0YXJ0KQoJCQkJCXsK
CQkJCQkJaWYgKDo6SW5jal9rcHRrZGVsZXRlIChFbU1lbUdldDMyIChhNykpKQoJCQkJCQl7CgkJ
CQkJCQlnb3RvIEhpZGVCdWc7CgkJCQkJCX0KCgkJCQkJCWE3ICs9IDI7CgkJCQkJfQoJCQkJfQkg
CgkJCX0JIAoJCX0JIAoKCgkJIAoJCSAKCgkJaWYgKGluZm8ucmVzdWx0ID09IEVycm9yczo6a1Vu
bG9ja2VkQ2h1bmtBY2Nlc3MgJiYKCQkJRW1QYXRjaFN0YXRlOjpIYXNGaW5kU2hvd1Jlc3VsdHNC
dWcgKCkgJiYKCQkJaW5mby5mb3JSZWFkICYmCgkJCWluZm8uc2l6ZSA9PSBzaXplb2YgKEJvb2xl
YW4pICYmCgkJCWFkZHJTdGFydCA9PSBib2R5U3RhcnQgKyBzaXplb2YgKFVJbnQxNikgKiAyICAg
JiYKCQkJOjpJbkZpbmRTaG93UmVzdWx0cyAoKSkKCQl7CgkJCWdvdG8gSGlkZUJ1ZzsKCQl9CgoK
CQkgCgkJIAoJCSAKCQkgCgoJCWVtdXB0cglhNl8wID0gZ0NQVTY4Sy0+R2V0UmVnaXN0ZXIgKGU2
OEtSZWdJRF9BNik7CSAKCQlpZiAoOjpJc0V2ZW4gKGE2XzApICYmIEVtUGFsbU9TOjpJc0luU3Rh
Y2sgKGE2XzApKQoJCXsKCQkJZW11cHRyCWE2XzEgPSBFbU1lbUdldDMyIChhNl8wKTsJCQkJIAoK
CQkJaWYgKEVtUGF0Y2hTdGF0ZTo6SGFzRmluZFNhdmVGaW5kU3RyQnVnICgpICYmCgkJCQlpbmZv
LmZvclJlYWQgJiYKCQkJCTo6SW5NZW1Nb3ZlICgpICYmCQkJCQkJCQkgCgkJCQk6OkluRG1Xcml0
ZSAoRW1NZW1HZXQzMiAoYTZfMCArIDQpKSAmJgkJCSAKCQkJCTo6SW5GaW5kU2F2ZUZpbmRTdHIg
KEVtTWVtR2V0MzIgKGE2XzEgKyA0KSkpCSAKCQkJewoJCQkJZ290byBIaWRlQnVnOwoJCQl9CgkJ
fQoKCQkgCgkJIAoJCSAKCQkgCgoJCWlmIChFbVBhdGNoU3RhdGU6Okhhc0ZudERlZmluZUZvbnRC
dWcgKCkgJiYKCQkJaW5mby5mb3JSZWFkICYmCgkJCTo6SW5NZW1Nb3ZlICgpICYmCQkJCQkJCSAK
CQkJOjpJbkZudERlZmluZUZvbnQgKEVtTWVtR2V0MzIgKGE2XzAgKyA0KSkpCSAKCQl7CgkJCWdv
dG8gSGlkZUJ1ZzsKCQl9Cgl9CgoJcmV0dXJuOwoKSGlkZUJ1ZzoKCWluZm8ucmVzdWx0ID0gRXJy
b3JzOjprT0tBY2Nlc3M7Cn0KCgojcHJhZ21hIG1hcmsgLQoKIAogCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgoKIAogCiAK
CnN0YXRpYyBCb29sIFBydlRyYXBzQXZhaWxhYmxlICh2b2lkKQp7CgkgCgoJQm9vbAlyZXN1bHQg
PSBFbVBhdGNoU3RhdGU6Ok9TTWFqb3JWZXJzaW9uICgpID49IDQ7CgoJcmV0dXJuIHJlc3VsdDsK
fQoKCiAKIAogCgpzdGF0aWMgQm9vbCBQcnZBY2Nlc3NvclRyYXBBdmFpbGFibGUgKHZvaWQpCnsK
CSAKCSAKCgkKCQoJCgoJVUludDMyCXZhbHVlOwoJQm9vbAlyZXN1bHQgPSAoRnRyR2V0ICgncHN5
cycgICwgMjUgLCAmdmFsdWUpID09IDB4MDAwMCApICYmICh2YWx1ZSAhPSAwKTsKCglyZXR1cm4g
cmVzdWx0Owp9CgoKIAogCiAKIAogCgpzdGF0aWMgQm9vbCBQcnZBbGxvd2VkRmllbGRPYmplY3RB
Y2Nlc3MgKGVtdXB0ciBvYmplY3RQLCBlbXVwdHIgYWRkcmVzcywgQm9vbCBmb3JSZWFkKQp7Cgkg
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoJIAoJIAoKCWlmIChmb3JSZWFkKQoJewoJ
CXNpemVfdAkJCW9mZnNldAkJCT0gYWRkcmVzcyAtIG9iamVjdFA7CgkJY29uc3Qgc2l6ZV90CWxp
bmVzX29mZnNldAk9IEVtQWxpYXNGaWVsZFR5cGU8UEFTPjo6b2Zmc2V0b2ZfbGluZXMgKCk7CgkJ
Y29uc3Qgc2l6ZV90CWxpbmVzX3NpemUJCT0gRW1BbGlhc2VtdXB0cjxQQVM+OjpHZXRTaXplICgp
OwoKCQlpZiAob2Zmc2V0ID49IGxpbmVzX29mZnNldCAmJiBvZmZzZXQgPCBsaW5lc19vZmZzZXQg
KyBsaW5lc19zaXplKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoKCSAKCSAKCiAKCXsKCQlz
aXplX3QJCQlvZmZzZXQJCT0gYWRkcmVzcyAtIG9iamVjdFA7CgkJY29uc3Qgc2l6ZV90CWF0dHJf
b2Zmc2V0CT0gRW1BbGlhc0ZpZWxkVHlwZTxQQVM+OjpvZmZzZXRvZl9hdHRyICgpOwoJCWNvbnN0
IHNpemVfdAlhdHRyX3NpemUJPSBFbUFsaWFzRmllbGRBdHRyVHlwZTxQQVM+OjpHZXRTaXplICgp
OwoKCQlpZiAob2Zmc2V0ID49IGF0dHJfb2Zmc2V0ICYmIG9mZnNldCA8IGF0dHJfb2Zmc2V0ICsg
YXR0cl9zaXplKQoJCXsKCQkJaWYgKEVtUGF0Y2hTdGF0ZTo6T1NNYWpvck1pbm9yVmVyc2lvbiAo
KSA8IDMzKQoJCQl7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCX0KCX0KCgkgCgoJcmV0dXJuIGZh
bHNlOwp9CgoKIAogCiAKIAogCgpzdGF0aWMgQm9vbCBQcnZBbGxvd2VkQ29udHJvbE9iamVjdEFj
Y2VzcyAoZW11cHRyIG9iamVjdFAsIGVtdXB0ciBhZGRyZXNzLCBCb29sIGZvclJlYWQpCnsKCSAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgkgCgkgCgoJaWYg
KGZvclJlYWQpCgl7CgkJc2l6ZV90CQkJb2Zmc2V0CQk9IGFkZHJlc3MgLSBvYmplY3RQOwoKCQlj
b25zdCBzaXplX3QJYXR0cl9vZmZzZXQJPSBFbUFsaWFzQ29udHJvbFR5cGU8UEFTPjo6b2Zmc2V0
b2ZfYXR0ciAoKTsKCQljb25zdCBzaXplX3QJYXR0cl9zaXplCT0gRW1BbGlhc0NvbnRyb2xBdHRy
VHlwZTxQQVM+OjpHZXRTaXplICgpOwoKCQljb25zdCBzaXplX3QJc3R5bGVfb2Zmc2V0PSBFbUFs
aWFzQ29udHJvbFR5cGU8UEFTPjo6b2Zmc2V0b2Zfc3R5bGUgKCk7CgkJY29uc3Qgc2l6ZV90CXN0
eWxlX3NpemUJPSBFbUFsaWFzVUludDg8UEFTPjo6R2V0U2l6ZSAoKTsKCgkJaWYgKChvZmZzZXQg
Pj0gYXR0cl9vZmZzZXQgJiYgb2Zmc2V0IDwgYXR0cl9vZmZzZXQgKyBhdHRyX3NpemUpIHx8CgkJ
CShvZmZzZXQgPj0gc3R5bGVfb2Zmc2V0ICYmIG9mZnNldCA8IHN0eWxlX29mZnNldCArIHN0eWxl
X3NpemUpKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoKCSAKCSAKCSAKCQoJIAoJIAoKCSAK
CSAKCgl7CgkJc2l6ZV90CQkJb2Zmc2V0CQk9IGFkZHJlc3MgLSBvYmplY3RQOwoKCQljb25zdCBz
aXplX3QJZm9udF9vZmZzZXQJPSBFbUFsaWFzQ29udHJvbFR5cGU8UEFTPjo6b2Zmc2V0b2ZfZm9u
dCAoKTsKCQljb25zdCBzaXplX3QJZm9udF9zaXplCT0gRW1BbGlhc0ZvbnRJRDxQQVM+OjpHZXRT
aXplICgpOwoKCQlpZiAoKG9mZnNldCA+PSBmb250X29mZnNldCAmJiBvZmZzZXQgPCBmb250X29m
ZnNldCArIGZvbnRfc2l6ZSkpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9Cgl9CgoJIAoKCXJldHVy
biBmYWxzZTsKfQoKCiAKIAogCiAKIAoKc3RhdGljIEJvb2wgUHJ2QWxsb3dlZExpc3RPYmplY3RB
Y2Nlc3MgKGVtdXB0ciBvYmplY3RQLCBlbXVwdHIgYWRkcmVzcywgQm9vbCBmb3JSZWFkKQp7Cgko
KHZvaWQpICBmb3JSZWFkICk7IAoKCSAKCgoKCgoKCgoKCgoKCgoKCgoKCgoJIAoJIAoKCSAKCSAK
CiAKCXsKCQlzaXplX3QJCQlvZmZzZXQJCT0gYWRkcmVzcyAtIG9iamVjdFA7CgkJY29uc3Qgc2l6
ZV90CWF0dHJfb2Zmc2V0CT0gRW1BbGlhc0xpc3RUeXBlPFBBUz46Om9mZnNldG9mX2F0dHIgKCk7
CgkJY29uc3Qgc2l6ZV90CWF0dHJfc2l6ZQk9IEVtQWxpYXNMaXN0QXR0clR5cGU8UEFTPjo6R2V0
U2l6ZSAoKTsKCgkJaWYgKG9mZnNldCA+PSBhdHRyX29mZnNldCAmJiBvZmZzZXQgPCBhdHRyX29m
ZnNldCArIGF0dHJfc2l6ZSkKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCX0KCgkgCgoJaWYgKGZv
clJlYWQpCgl7CgkJc2l6ZV90CQkJb2Zmc2V0CQk9IGFkZHJlc3MgLSBvYmplY3RQOwoJCWNvbnN0
IHNpemVfdAl0b3BJdGVtX29mZnNldAk9IEVtQWxpYXNMaXN0VHlwZTxQQVM+OjpvZmZzZXRvZl90
b3BJdGVtICgpOwoJCWNvbnN0IHNpemVfdAl0b3BJdGVtX3NpemUJPSBFbUFsaWFzVUludDE2PFBB
Uz46OkdldFNpemUgKCk7CgoJCWlmIChvZmZzZXQgPj0gdG9wSXRlbV9vZmZzZXQgJiYgb2Zmc2V0
IDwgdG9wSXRlbV9vZmZzZXQgKyB0b3BJdGVtX3NpemUpCgkJewoJCQlpZiAoITo6UHJ2VHJhcHNB
dmFpbGFibGUgKCkpCgkJCXsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgkJfQoJfQoKCSAKCSAKCSAK
CgkgCgkgCgoJIAoJIAoKCXsKCQlzaXplX3QJCQlvZmZzZXQJCT0gYWRkcmVzcyAtIG9iamVjdFA7
CgoJCWNvbnN0IHNpemVfdAlmb250X29mZnNldAk9IEVtQWxpYXNMaXN0VHlwZTxQQVM+OjpvZmZz
ZXRvZl9mb250ICgpOwoJCWNvbnN0IHNpemVfdAlmb250X3NpemUJPSBFbUFsaWFzRm9udElEPFBB
Uz46OkdldFNpemUgKCk7CgoJCWlmICgob2Zmc2V0ID49IGZvbnRfb2Zmc2V0ICYmIG9mZnNldCA8
IGZvbnRfb2Zmc2V0ICsgZm9udF9zaXplKSkKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCX0KCgkg
CgoJcmV0dXJuIGZhbHNlOwp9CgoKIAogCiAKIAogCgpzdGF0aWMgQm9vbCBQcnZBbGxvd2VkVGFi
bGVPYmplY3RBY2Nlc3MgKGVtdXB0ciBvYmplY3RQLCBlbXVwdHIgYWRkcmVzcywgQm9vbCBmb3JS
ZWFkKQp7CgkgCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoJ
IAoJIAoKCSAKCSAKCgkgCgkgCgkgCgkgCgkgCgkgCgkgCgkgCgkgCgoJaWYgKGZvclJlYWQpCgl7
CgkJc2l6ZV90CQkJb2Zmc2V0CQkJCT0gYWRkcmVzcyAtIG9iamVjdFA7CgkJY29uc3Qgc2l6ZV90
CW51bVJvd3Nfb2Zmc2V0CQk9IEVtQWxpYXNUYWJsZVR5cGU8UEFTPjo6b2Zmc2V0b2ZfbnVtUm93
cyAoKTsKCQljb25zdCBzaXplX3QJbnVtUm93c19zaXplCQk9IEVtQWxpYXNVSW50MTY8UEFTPjo6
R2V0U2l6ZSAoKTsKCgkJY29uc3Qgc2l6ZV90CW51bUNvbHVtbnNfb2Zmc2V0CT0gRW1BbGlhc1Rh
YmxlVHlwZTxQQVM+OjpvZmZzZXRvZl9udW1Db2x1bW5zICgpOwoJCWNvbnN0IHNpemVfdAludW1D
b2x1bW5zX3NpemUJCT0gRW1BbGlhc1VJbnQxNjxQQVM+OjpHZXRTaXplICgpOwoKCQljb25zdCBz
aXplX3QJdG9wUm93X29mZnNldAkJPSBFbUFsaWFzVGFibGVUeXBlPFBBUz46Om9mZnNldG9mX3Rv
cFJvdyAoKTsKCQljb25zdCBzaXplX3QJdG9wUm93X3NpemUJCQk9IEVtQWxpYXNVSW50MTY8UEFT
Pjo6R2V0U2l6ZSAoKTsKCgkJaWYgKChvZmZzZXQgPj0gbnVtUm93c19vZmZzZXQgJiYgb2Zmc2V0
IDwgbnVtUm93c19vZmZzZXQgKyBudW1Sb3dzX3NpemUpIHx8CgkJCShvZmZzZXQgPj0gbnVtQ29s
dW1uc19vZmZzZXQgJiYgb2Zmc2V0IDwgbnVtQ29sdW1uc19vZmZzZXQgKyBudW1Db2x1bW5zX3Np
emUpIHx8CgkJCShvZmZzZXQgPj0gdG9wUm93X29mZnNldCAmJiBvZmZzZXQgPCB0b3BSb3dfb2Zm
c2V0ICsgdG9wUm93X3NpemUpKQoJCXsKCQkJaWYgKCE6OlBydlRyYXBzQXZhaWxhYmxlICgpKQoJ
CQl7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCX0KCX0KCgkgCgkgCgoJaWYgKGZvclJlYWQpCgl7
CgkJc2l6ZV90CQkJb2Zmc2V0CQkJCT0gYWRkcmVzcyAtIG9iamVjdFA7CgoJCWNvbnN0IHNpemVf
dAlpdGVtc19vZmZzZXQJCT0gRW1BbGlhc1RhYmxlVHlwZTxQQVM+OjpvZmZzZXRvZl9pdGVtcyAo
KTsKCQljb25zdCBzaXplX3QJaXRlbXNfc2l6ZQkJCT0gRW1BbGlhc2VtdXB0cjxQQVM+OjpHZXRT
aXplICgpOwoKCQljb25zdCBzaXplX3QJcm93QXR0cnNfb2Zmc2V0CQk9IEVtQWxpYXNUYWJsZVR5
cGU8UEFTPjo6b2Zmc2V0b2Zfcm93QXR0cnMgKCk7CgkJY29uc3Qgc2l6ZV90CXJvd0F0dHJzX3Np
emUJCT0gRW1BbGlhc2VtdXB0cjxQQVM+OjpHZXRTaXplICgpOwoKCQljb25zdCBzaXplX3QJY29s
dW1uQXR0cnNfb2Zmc2V0CT0gRW1BbGlhc1RhYmxlVHlwZTxQQVM+OjpvZmZzZXRvZl9jb2x1bW5B
dHRycyAoKTsKCQljb25zdCBzaXplX3QJY29sdW1uQXR0cnNfc2l6ZQk9IEVtQWxpYXNlbXVwdHI8
UEFTPjo6R2V0U2l6ZSAoKTsKCgkJaWYgKChvZmZzZXQgPj0gaXRlbXNfb2Zmc2V0ICYmIG9mZnNl
dCA8IGl0ZW1zX29mZnNldCArIGl0ZW1zX3NpemUpIHx8CgkJCShvZmZzZXQgPj0gcm93QXR0cnNf
b2Zmc2V0ICYmIG9mZnNldCA8IHJvd0F0dHJzX29mZnNldCArIHJvd0F0dHJzX3NpemUpIHx8CgkJ
CShvZmZzZXQgPj0gY29sdW1uQXR0cnNfb2Zmc2V0ICYmIG9mZnNldCA8IGNvbHVtbkF0dHJzX29m
ZnNldCArIGNvbHVtbkF0dHJzX3NpemUpKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoKCXsK
CQlzaXplX3QJCQlvZmZzZXQJCQkJPSBhZGRyZXNzIC0gb2JqZWN0UDsKCgkJY29uc3Qgc2l6ZV90
CWN1cnJlbnRSb3dfb2Zmc2V0CT0gRW1BbGlhc1RhYmxlVHlwZTxQQVM+OjpvZmZzZXRvZl9jdXJy
ZW50Um93ICgpOwoJCWNvbnN0IHNpemVfdAljdXJyZW50Um93X3NpemUJCT0gRW1BbGlhc1VJbnQx
NjxQQVM+OjpHZXRTaXplICgpOwoKCQljb25zdCBzaXplX3QJY3VycmVudENvbHVtbl9vZmZzZXQ9
IEVtQWxpYXNUYWJsZVR5cGU8UEFTPjo6b2Zmc2V0b2ZfY3VycmVudENvbHVtbiAoKTsKCQljb25z
dCBzaXplX3QJY3VycmVudENvbHVtbl9zaXplCT0gRW1BbGlhc1VJbnQxNjxQQVM+OjpHZXRTaXpl
ICgpOwoKCQlpZiAoKG9mZnNldCA+PSBjdXJyZW50Um93X29mZnNldCAmJiBvZmZzZXQgPCBjdXJy
ZW50Um93X29mZnNldCArIGN1cnJlbnRSb3dfc2l6ZSkgfHwKCQkJKG9mZnNldCA+PSBjdXJyZW50
Q29sdW1uX29mZnNldCAmJiBvZmZzZXQgPCBjdXJyZW50Q29sdW1uX29mZnNldCArIGN1cnJlbnRD
b2x1bW5fc2l6ZSkpCgkJewoJCQlpZiAoITo6UHJ2VHJhcHNBdmFpbGFibGUgKCkpCgkJCXsKCQkJ
CXJldHVybiB0cnVlOwoJCQl9CgkJfQoJfQoKCXsKCQlzaXplX3QJCQlvZmZzZXQJCQkJPSBhZGRy
ZXNzIC0gb2JqZWN0UDsKCQljb25zdCBzaXplX3QJYXR0cl9vZmZzZXQJCQk9IEVtQWxpYXNUYWJs
ZVR5cGU8UEFTPjo6b2Zmc2V0b2ZfYXR0ciAoKTsKCQljb25zdCBzaXplX3QJYXR0cl9zaXplCQkJ
PSBFbUFsaWFzVGFibGVBdHRyVHlwZTxQQVM+OjpHZXRTaXplICgpOwoKCQlpZiAob2Zmc2V0ID49
IGF0dHJfb2Zmc2V0ICYmIG9mZnNldCA8IGF0dHJfb2Zmc2V0ICsgYXR0cl9zaXplKQoJCXsKCQkJ
cmV0dXJuIHRydWU7CgkJfQoJfQoKCSAKCglyZXR1cm4gUHJ2QWxsb3dlZEZpZWxkT2JqZWN0QWNj
ZXNzICgKCQlvYmplY3RQICsgRW1BbGlhc1RhYmxlVHlwZTxQQVM+OjpvZmZzZXRvZl9jdXJyZW50
RmllbGQgKCksCgkJYWRkcmVzcywgZm9yUmVhZCk7Cn0KCgogCiAKIAogCiAKCnN0YXRpYyBCb29s
IFBydkFsbG93ZWRGb3JtQml0bWFwT2JqZWN0QWNjZXNzIChlbXVwdHIgb2JqZWN0UCwgZW11cHRy
IGFkZHJlc3MsIEJvb2wgZm9yUmVhZCkKewoJIAoKCgoKCgoKCSAKCSAKCglpZiAoZm9yUmVhZCkK
CXsKCQlzaXplX3QJCQlvZmZzZXQJCT0gYWRkcmVzcyAtIG9iamVjdFA7CgkJY29uc3Qgc2l6ZV90
CWF0dHJfb2Zmc2V0CT0gRW1BbGlhc0Zvcm1CaXRtYXBUeXBlPFBBUz46Om9mZnNldG9mX2F0dHIg
KCk7CgkJY29uc3Qgc2l6ZV90CWF0dHJfc2l6ZQk9IEVtQWxpYXNGb3JtT2JqQXR0clR5cGU8UEFT
Pjo6R2V0U2l6ZSAoKTsKCgkJaWYgKG9mZnNldCA+PSBhdHRyX29mZnNldCAmJiBvZmZzZXQgPCBh
dHRyX29mZnNldCArIGF0dHJfc2l6ZSkKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCX0KCgkgCgkg
CgoJewoJCXNpemVfdAkJCW9mZnNldAkJPSBhZGRyZXNzIC0gb2JqZWN0UDsKCgkJY29uc3Qgc2l6
ZV90CWF0dHJfb2Zmc2V0CT0gRW1BbGlhc0Zvcm1CaXRtYXBUeXBlPFBBUz46Om9mZnNldG9mX2F0
dHIgKCk7CgkJY29uc3Qgc2l6ZV90CWF0dHJfc2l6ZQk9IEVtQWxpYXNGb3JtT2JqQXR0clR5cGU8
UEFTPjo6R2V0U2l6ZSAoKTsKCgkJaWYgKG9mZnNldCA+PSBhdHRyX29mZnNldCAmJiBvZmZzZXQg
PCBhdHRyX29mZnNldCArIGF0dHJfc2l6ZSkKCQl7CgkJCWlmIChFbVBhdGNoU3RhdGU6Ok9TTWFq
b3JNaW5vclZlcnNpb24gKCkgPCAzMikKCQkJewoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCQl9Cgl9
CgoJIAoKCXJldHVybiBmYWxzZTsKfQoKCiAKIAogCiAKIAoKc3RhdGljIEJvb2wgUHJ2QWxsb3dl
ZEZvcm1MaW5lT2JqZWN0QWNjZXNzIChlbXVwdHIgb2JqZWN0UCwgZW11cHRyIGFkZHJlc3MsIEJv
b2wgZm9yUmVhZCkKewoJKCh2b2lkKSAgb2JqZWN0UCApOyAKCSgodm9pZCkgIGFkZHJlc3MgKTsg
CgkoKHZvaWQpICBmb3JSZWFkICk7IAoKCSAKCgoKCgoKCSAKCglyZXR1cm4gZmFsc2U7Cn0KCgog
CiAKIAogCiAKCnN0YXRpYyBCb29sIFBydkFsbG93ZWRGb3JtRnJhbWVPYmplY3RBY2Nlc3MgKGVt
dXB0ciBvYmplY3RQLCBlbXVwdHIgYWRkcmVzcywgQm9vbCBmb3JSZWFkKQp7CgkoKHZvaWQpICBv
YmplY3RQICk7IAoJKCh2b2lkKSAgYWRkcmVzcyApOyAKCSgodm9pZCkgIGZvclJlYWQgKTsgCgoJ
IAoKCgoKCgoKCSAKCglyZXR1cm4gZmFsc2U7Cn0KCgogCiAKIAogCiAKCnN0YXRpYyBCb29sIFBy
dkFsbG93ZWRGb3JtUmVjdGFuZ2xlT2JqZWN0QWNjZXNzIChlbXVwdHIgb2JqZWN0UCwgZW11cHRy
IGFkZHJlc3MsIEJvb2wgZm9yUmVhZCkKewoJKCh2b2lkKSAgb2JqZWN0UCApOyAKCSgodm9pZCkg
IGFkZHJlc3MgKTsgCgkoKHZvaWQpICBmb3JSZWFkICk7IAoKCSAKCgoKCgkKCSAKCglyZXR1cm4g
ZmFsc2U7Cn0KCgogCiAKIAogCiAKCnN0YXRpYyBCb29sIFBydkFsbG93ZWRGb3JtTGFiZWxPYmpl
Y3RBY2Nlc3MgKGVtdXB0ciBvYmplY3RQLCBlbXVwdHIgYWRkcmVzcywgQm9vbCBmb3JSZWFkKQp7
CgkgCgoKCgoKCgoKCgoJIAoJIAoKCWlmIChmb3JSZWFkKQoJewoJCXNpemVfdAkJCW9mZnNldAkJ
PSBhZGRyZXNzIC0gb2JqZWN0UDsKCQljb25zdCBzaXplX3QJYXR0cl9vZmZzZXQJPSBFbUFsaWFz
Rm9ybUxhYmVsVHlwZTxQQVM+OjpvZmZzZXRvZl9hdHRyICgpOwoJCWNvbnN0IHNpemVfdAlhdHRy
X3NpemUJPSBFbUFsaWFzRm9ybU9iakF0dHJUeXBlPFBBUz46OkdldFNpemUgKCk7CgoJCWlmIChv
ZmZzZXQgPj0gYXR0cl9vZmZzZXQgJiYgb2Zmc2V0IDwgYXR0cl9vZmZzZXQgKyBhdHRyX3NpemUp
CgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9Cgl9CgoJIAoJIAoJIAoKCSAKCSAKCQoJIAoJIAoKCXsK
CQlzaXplX3QJCQlvZmZzZXQJCT0gYWRkcmVzcyAtIG9iamVjdFA7CgoJCWNvbnN0IHNpemVfdAlm
b250X29mZnNldAk9IEVtQWxpYXNGb3JtTGFiZWxUeXBlPFBBUz46Om9mZnNldG9mX2ZvbnRJRCAo
KTsKCQljb25zdCBzaXplX3QJZm9udF9zaXplCT0gRW1BbGlhc0ZvbnRJRDxQQVM+OjpHZXRTaXpl
ICgpOwoKCQlpZiAoKG9mZnNldCA+PSBmb250X29mZnNldCAmJiBvZmZzZXQgPCBmb250X29mZnNl
dCArIGZvbnRfc2l6ZSkpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9Cgl9CgoJIAoKCXJldHVybiBm
YWxzZTsKfQoKCiAKIAogCiAKIAoKc3RhdGljIEJvb2wgUHJ2QWxsb3dlZEZvcm1UaXRsZU9iamVj
dEFjY2VzcyAoZW11cHRyIG9iamVjdFAsIGVtdXB0ciBhZGRyZXNzLCBCb29sIGZvclJlYWQpCnsK
CSgodm9pZCkgIG9iamVjdFAgKTsgCgkoKHZvaWQpICBhZGRyZXNzICk7IAoJKCh2b2lkKSAgZm9y
UmVhZCApOyAKCgkgCgoKCgoKCSAKCglyZXR1cm4gZmFsc2U7Cn0KCgogCiAKIAogCiAKCnN0YXRp
YyBCb29sIFBydkFsbG93ZWRGb3JtUG9wdXBPYmplY3RBY2Nlc3MgKGVtdXB0ciBvYmplY3RQLCBl
bXVwdHIgYWRkcmVzcywgQm9vbCBmb3JSZWFkKQp7CgkoKHZvaWQpICBvYmplY3RQICk7IAoJKCh2
b2lkKSAgYWRkcmVzcyApOyAKCSgodm9pZCkgIGZvclJlYWQgKTsgCgoJIAoKCgoKCgkgCgoJcmV0
dXJuIGZhbHNlOwp9CgoKIAogCiAKIAogCgpzdGF0aWMgQm9vbCBQcnZBbGxvd2VkRm9ybUdyYWZm
aXRpU3RhdGVPYmplY3RBY2Nlc3MgKGVtdXB0ciBvYmplY3RQLCBlbXVwdHIgYWRkcmVzcywgQm9v
bCBmb3JSZWFkKQp7CgkoKHZvaWQpICBvYmplY3RQICk7IAoJKCh2b2lkKSAgYWRkcmVzcyApOyAK
CSgodm9pZCkgIGZvclJlYWQgKTsgCgoJIAoKCgoKCSAKCglyZXR1cm4gZmFsc2U7Cn0KCgogCiAK
IAogCiAKCnN0YXRpYyBCb29sIFBydkFsbG93ZWRGb3JtR2FkZ2V0T2JqZWN0QWNjZXNzIChlbXVw
dHIgb2JqZWN0UCwgZW11cHRyIGFkZHJlc3MsIEJvb2wgZm9yUmVhZCkKewoJIAoKCgoKCgoKCgoK
CgoJKCh2b2lkKSAgb2JqZWN0UCApOyA7CgkoKHZvaWQpICBhZGRyZXNzICk7IDsKCSgodm9pZCkg
IGZvclJlYWQgKTsgOwoKCSAKCSAKCSAKCSAKCglyZXR1cm4gdHJ1ZTsKIyAyMjgzICIuLy4uL1Ny
Y1NoYXJlZC9NZXRhTWVtb3J5LmNwcCIKCn0KCgogCiAKIAogCiAKCnN0YXRpYyBCb29sIFBydkFs
bG93ZWRTY3JvbGxCYXJPYmplY3RBY2Nlc3MgKGVtdXB0ciBvYmplY3RQLCBlbXVwdHIgYWRkcmVz
cywgQm9vbCBmb3JSZWFkKQp7CgkgCgoKCgoKCgoKCgoKCgoKCgoKCSAKCSAKCglpZiAoZm9yUmVh
ZCkKCXsKCQlzaXplX3QJCQlvZmZzZXQJCT0gYWRkcmVzcyAtIG9iamVjdFA7CgkJY29uc3Qgc2l6
ZV90CWF0dHJfb2Zmc2V0CT0gRW1BbGlhc1Njcm9sbEJhclR5cGU8UEFTPjo6b2Zmc2V0b2ZfYXR0
ciAoKTsKCQljb25zdCBzaXplX3QJYXR0cl9zaXplCT0gRW1BbGlhc1Njcm9sbEJhckF0dHJUeXBl
PFBBUz46OkdldFNpemUgKCk7CgoJCWlmIChvZmZzZXQgPj0gYXR0cl9vZmZzZXQgJiYgb2Zmc2V0
IDwgYXR0cl9vZmZzZXQgKyBhdHRyX3NpemUpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9Cgl9CgoJ
IAoJIAoKIAoJewoJCXNpemVfdAkJCW9mZnNldAkJPSBhZGRyZXNzIC0gb2JqZWN0UDsKCQljb25z
dCBzaXplX3QJYXR0cl9vZmZzZXQJPSBFbUFsaWFzU2Nyb2xsQmFyVHlwZTxQQVM+OjpvZmZzZXRv
Zl9hdHRyICgpOwoJCWNvbnN0IHNpemVfdAlhdHRyX3NpemUJPSBFbUFsaWFzU2Nyb2xsQmFyQXR0
clR5cGU8UEFTPjo6R2V0U2l6ZSAoKTsKCgkJaWYgKG9mZnNldCA+PSBhdHRyX29mZnNldCAmJiBv
ZmZzZXQgPCBhdHRyX29mZnNldCArIGF0dHJfc2l6ZSkKCQl7CgkJCWlmIChFbVBhdGNoU3RhdGU6
Ok9TTWFqb3JNaW5vclZlcnNpb24gKCkgPCAzNSkKCQkJewoJCQkJcmV0dXJuIHRydWU7CgkJCX0K
CQl9Cgl9CgoJIAoKCXJldHVybiBmYWxzZTsKfQoKCiAKIAogCiAKIAoKc3RhdGljIEJvb2wgUHJ2
QWxsb3dlZEZvcm1PYmplY3RBY2Nlc3MgKEVtQWxpYXNGb3JtT2JqTGlzdFR5cGU8UEFTPiYgZm9y
bU9iamVjdCwKCQkJCQkJCQkJCWVtdXB0ciBhZGRyZXNzLCBCb29sIGZvclJlYWQpCnsKCSAKCSAK
CSAKCglpZiAoOjpQcnZBY2Nlc3NvclRyYXBBdmFpbGFibGUgKCkpCgkJcmV0dXJuIGZhbHNlOwoK
CUZvcm1PYmplY3RLaW5kCWtpbmQgPSBmb3JtT2JqZWN0Lm9iamVjdFR5cGU7CgoJQm9vbCAoKmNo
ZWNrX2Z1bmN0aW9uKSAoZW11cHRyLCBlbXVwdHIsIEJvb2wpID0gX19udWxsIDsKCglzd2l0Y2gg
KGtpbmQpCgl7CgkJY2FzZSBmcm1GaWVsZE9iajoJCQljaGVja19mdW5jdGlvbiA9IFBydkFsbG93
ZWRGaWVsZE9iamVjdEFjY2VzczsJCQkJYnJlYWs7CgkJY2FzZSBmcm1Db250cm9sT2JqOgkJCWNo
ZWNrX2Z1bmN0aW9uID0gUHJ2QWxsb3dlZENvbnRyb2xPYmplY3RBY2Nlc3M7CQkJCWJyZWFrOwoJ
CWNhc2UgZnJtTGlzdE9iajoJCQljaGVja19mdW5jdGlvbiA9IFBydkFsbG93ZWRMaXN0T2JqZWN0
QWNjZXNzOwkJCQlicmVhazsKCQljYXNlIGZybVRhYmxlT2JqOgkJCWNoZWNrX2Z1bmN0aW9uID0g
UHJ2QWxsb3dlZFRhYmxlT2JqZWN0QWNjZXNzOwkJCQlicmVhazsKCQljYXNlIGZybUJpdG1hcE9i
ajoJCQljaGVja19mdW5jdGlvbiA9IFBydkFsbG93ZWRGb3JtQml0bWFwT2JqZWN0QWNjZXNzOwkJ
CWJyZWFrOwoJCWNhc2UgZnJtTGluZU9iajoJCQljaGVja19mdW5jdGlvbiA9IFBydkFsbG93ZWRG
b3JtTGluZU9iamVjdEFjY2VzczsJCQlicmVhazsKCQljYXNlIGZybUZyYW1lT2JqOgkJCWNoZWNr
X2Z1bmN0aW9uID0gUHJ2QWxsb3dlZEZvcm1GcmFtZU9iamVjdEFjY2VzczsJCQlicmVhazsKCQlj
YXNlIGZybVJlY3RhbmdsZU9iajoJCWNoZWNrX2Z1bmN0aW9uID0gUHJ2QWxsb3dlZEZvcm1SZWN0
YW5nbGVPYmplY3RBY2Nlc3M7CQlicmVhazsKCQljYXNlIGZybUxhYmVsT2JqOgkJCWNoZWNrX2Z1
bmN0aW9uID0gUHJ2QWxsb3dlZEZvcm1MYWJlbE9iamVjdEFjY2VzczsJCQlicmVhazsKCQljYXNl
IGZybVRpdGxlT2JqOgkJCWNoZWNrX2Z1bmN0aW9uID0gUHJ2QWxsb3dlZEZvcm1UaXRsZU9iamVj
dEFjY2VzczsJCQlicmVhazsKCQljYXNlIGZybVBvcHVwT2JqOgkJCWNoZWNrX2Z1bmN0aW9uID0g
UHJ2QWxsb3dlZEZvcm1Qb3B1cE9iamVjdEFjY2VzczsJCQlicmVhazsKCQljYXNlIGZybUdyYWZm
aXRpU3RhdGVPYmo6CWNoZWNrX2Z1bmN0aW9uID0gUHJ2QWxsb3dlZEZvcm1HcmFmZml0aVN0YXRl
T2JqZWN0QWNjZXNzOwlicmVhazsKCQljYXNlIGZybUdhZGdldE9iajoJCQljaGVja19mdW5jdGlv
biA9IFBydkFsbG93ZWRGb3JtR2FkZ2V0T2JqZWN0QWNjZXNzOwkJCWJyZWFrOwoJCWNhc2UgZnJt
U2Nyb2xsQmFyT2JqOgkJY2hlY2tfZnVuY3Rpb24gPSBQcnZBbGxvd2VkU2Nyb2xsQmFyT2JqZWN0
QWNjZXNzOwkJCWJyZWFrOwoJfQoKCWlmIChjaGVja19mdW5jdGlvbikKCXsKCQlyZXR1cm4gY2hl
Y2tfZnVuY3Rpb24gKGZvcm1PYmplY3Qub2JqZWN0LCBhZGRyZXNzLCBmb3JSZWFkKTsKCX0KCgly
ZXR1cm4gZmFsc2U7Cn0KCgogCiAKIAogCiAKCnN0YXRpYyBCb29sIFBydkFsbG93ZWRXaW5kb3dB
Y2Nlc3MgKGVtdXB0ciB3aW5kb3dQLCBlbXVwdHIgYWRkcmVzcywgQm9vbCBmb3JSZWFkKQp7Cgkg
CgkgCgkgCgoJaWYgKDo6UHJ2QWNjZXNzb3JUcmFwQXZhaWxhYmxlICgpKQoJCXJldHVybiBmYWxz
ZTsKCgkoKHZvaWQpICBmb3JSZWFkICk7IAoKCXNpemVfdAkJCQkJb2Zmc2V0ID0gYWRkcmVzcyAt
IHdpbmRvd1A7CglFbUFsaWFzV2luZG93VHlwZTxQQVM+CXdpbmRvdyAod2luZG93UCk7CgoKCgoK
CgkgCgkgCgkgCgkgCgoJaWYgKGZvclJlYWQgJiYgRW1QYXRjaFN0YXRlOjpPU01ham9yTWlub3JW
ZXJzaW9uICgpIDwgMjApCgl7CgkJaWYgKCgob2Zmc2V0ID49IHdpbmRvdy5vZmZzZXRvZl9kaXNw
bGF5V2lkdGhWMjAgICgpKSAmJgkob2Zmc2V0IDwgd2luZG93Lm9mZnNldG9mX2Rpc3BsYXlXaWR0
aFYyMCAgKCkgKyB3aW5kb3cuIGRpc3BsYXlXaWR0aFYyMCAuR2V0U2l6ZSAoKSkpICB8fAoJCQko
KG9mZnNldCA+PSB3aW5kb3cub2Zmc2V0b2ZfZGlzcGxheUhlaWdodFYyMCAgKCkpICYmCShvZmZz
ZXQgPCB3aW5kb3cub2Zmc2V0b2ZfZGlzcGxheUhlaWdodFYyMCAgKCkgKyB3aW5kb3cuIGRpc3Bs
YXlIZWlnaHRWMjAgLkdldFNpemUgKCkpKSApCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9Cgl9CgoJ
IAoJIAoJIAoJIAoKCWlmIChmb3JSZWFkICYmIEVtUGF0Y2hTdGF0ZTo6T1NNYWpvck1pbm9yVmVy
c2lvbiAoKSA8IDM1KQoJewoJCWlmICgoKG9mZnNldCA+PSB3aW5kb3cub2Zmc2V0b2ZfZGlzcGxh
eUFkZHJWMjAgICgpKSAmJgkob2Zmc2V0IDwgd2luZG93Lm9mZnNldG9mX2Rpc3BsYXlBZGRyVjIw
ICAoKSArIHdpbmRvdy4gZGlzcGxheUFkZHJWMjAgLkdldFNpemUgKCkpKSAgfHwKCQkJKChvZmZz
ZXQgPj0gd2luZG93Lm9mZnNldG9mX2JpdG1hcFAgICgpKSAmJgkob2Zmc2V0IDwgd2luZG93Lm9m
ZnNldG9mX2JpdG1hcFAgICgpICsgd2luZG93LiBiaXRtYXBQIC5HZXRTaXplICgpKSkgKQoJCXsK
CQkJcmV0dXJuIHRydWU7CgkJfQoJfQoKCSAKCgl7CgkJaWYgKCgob2Zmc2V0ID49IHdpbmRvdy5v
ZmZzZXRvZl9mcmFtZVR5cGUgICgpKSAmJgkob2Zmc2V0IDwgd2luZG93Lm9mZnNldG9mX2ZyYW1l
VHlwZSAgKCkgKyB3aW5kb3cuIGZyYW1lVHlwZSAuR2V0U2l6ZSAoKSkpICkKCQl7CgkJCXJldHVy
biB0cnVlOwoJCX0KCX0KCglyZXR1cm4gZmFsc2U7Cn0KCgogCiAKIAogCiAKCnN0YXRpYyBCb29s
IFBydkFsbG93ZWRGb3JtQWNjZXNzIChlbXVwdHIgZm9ybVAsIGVtdXB0ciBhZGRyZXNzLCBCb29s
IGZvclJlYWQpCnsKCSAKCSAKCSAKCglpZiAoOjpQcnZBY2Nlc3NvclRyYXBBdmFpbGFibGUgKCkp
CgkJcmV0dXJuIGZhbHNlOwoKCSgodm9pZCkgIGZvcm1QICk7IAoJKCh2b2lkKSAgYWRkcmVzcyAp
OyAKCSgodm9pZCkgIGZvclJlYWQgKTsgCgoJIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgkgCgkg
CgkgCgoJaWYgKGZvclJlYWQpCgl7CgkJc2l6ZV90CQkJb2Zmc2V0CQkJPSBhZGRyZXNzIC0gZm9y
bVA7CgkJY29uc3Qgc2l6ZV90CWhhbmRsZXJfb2Zmc2V0CT0gRW1BbGlhc0Zvcm1UeXBlPFBBUz46
Om9mZnNldG9mX2hhbmRsZXIgKCk7CgkJY29uc3Qgc2l6ZV90CWhhbmRsZXJfc2l6ZQk9IEVtQWxp
YXNlbXVwdHI8UEFTPjo6R2V0U2l6ZSAoKTsKCgkJaWYgKG9mZnNldCA+PSBoYW5kbGVyX29mZnNl
dCAmJiBvZmZzZXQgPCBoYW5kbGVyX29mZnNldCArIGhhbmRsZXJfc2l6ZSkKCQl7CgkJCXJldHVy
biB0cnVlOwoJCX0KCX0KCgkgCgkgCgoJewoJCXNpemVfdAkJCW9mZnNldAkJCQkJPSBhZGRyZXNz
IC0gZm9ybVA7CgkJY29uc3Qgc2l6ZV90CWRlZmF1bHRCdXR0b25fb2Zmc2V0CT0gRW1BbGlhc0Zv
cm1UeXBlPFBBUz46Om9mZnNldG9mX2RlZmF1bHRCdXR0b24gKCk7CgkJY29uc3Qgc2l6ZV90CWRl
ZmF1bHRCdXR0b25fc2l6ZQkJPSBFbUFsaWFzVUludDE2PFBBUz46OkdldFNpemUgKCk7CgkJY29u
c3Qgc2l6ZV90CWhlbHBSc2NJZF9vZmZzZXQJCT0gRW1BbGlhc0Zvcm1UeXBlPFBBUz46Om9mZnNl
dG9mX2hlbHBSc2NJZCAoKTsKCQljb25zdCBzaXplX3QJaGVscFJzY0lkX3NpemUJCQk9IEVtQWxp
YXNVSW50MTY8UEFTPjo6R2V0U2l6ZSAoKTsKCQljb25zdCBzaXplX3QJbWVudVJzY0lkX29mZnNl
dAkJPSBFbUFsaWFzRm9ybVR5cGU8UEFTPjo6b2Zmc2V0b2ZfbWVudVJzY0lkICgpOwoJCWNvbnN0
IHNpemVfdAltZW51UnNjSWRfc2l6ZQkJCT0gRW1BbGlhc1VJbnQxNjxQQVM+OjpHZXRTaXplICgp
OwoKCQlpZiAoKG9mZnNldCA+PSBkZWZhdWx0QnV0dG9uX29mZnNldCAmJiBvZmZzZXQgPCBkZWZh
dWx0QnV0dG9uX29mZnNldCArIGRlZmF1bHRCdXR0b25fc2l6ZSkgfHwKCQkJKG9mZnNldCA+PSBo
ZWxwUnNjSWRfb2Zmc2V0ICYmIG9mZnNldCA8IGhlbHBSc2NJZF9vZmZzZXQgKyBoZWxwUnNjSWRf
c2l6ZSkgfHwKCQkJKG9mZnNldCA+PSBtZW51UnNjSWRfb2Zmc2V0ICYmIG9mZnNldCA8IG1lbnVS
c2NJZF9vZmZzZXQgKyBtZW51UnNjSWRfc2l6ZSkpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9Cgl9
CgoJIAoKCXJldHVybiBQcnZBbGxvd2VkV2luZG93QWNjZXNzIChmb3JtUCwgYWRkcmVzcywgZm9y
UmVhZCk7Cn0KCgogCiAKIAogCiAKCnN0YXRpYyBCb29sIFBydkFsbG93ZWRCaXRtYXBBY2Nlc3Mg
KEVtQWxpYXNCaXRtYXBUeXBlVjI8UEFTPiYgYml0bWFwLCBlbXVwdHIgYWRkcmVzcywgQm9vbCBm
b3JSZWFkKQp7CgkgCgkgCgkgCgoJaWYgKDo6UHJ2QWNjZXNzb3JUcmFwQXZhaWxhYmxlICgpKQoJ
CXJldHVybiBmYWxzZTsKCgkgCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCSAKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgkgCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgkgCgkgCgoJ
aWYgKEVtUGF0Y2hTdGF0ZTo6T1NNYWpvck1pbm9yVmVyc2lvbiAoKSA8IDM1KQoJewoJCSAKCgkJ
cmV0dXJuIHRydWU7Cgl9CgllbHNlIGlmIChFbVBhdGNoU3RhdGU6Ok9TTWFqb3JNaW5vclZlcnNp
b24gKCkgPCA0MCkKCXsKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJ
IAoJCSAKCQkgCgoJCWlmIChmb3JSZWFkKQoJCXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCWVsc2UK
CQl7CgkJCWVtdXB0cgkJCWJpdG1hcFAJCQkJCT0gYml0bWFwLkdldFB0ciAoKTsKCQkJc2l6ZV90
CQkJb2Zmc2V0CQkJCQk9IGFkZHJlc3MgLSBiaXRtYXBQOwoKCQkJY29uc3Qgc2l6ZV90CWZsYWdz
X29mZnNldAkJCT0gRW1BbGlhc0JpdG1hcFR5cGVWMjxQQVM+OjpvZmZzZXRvZl9mbGFncyAoKTsK
CQkJY29uc3Qgc2l6ZV90CWZsYWdzX3NpemUJCQkJPSBFbUFsaWFzVUludDE2PFBBUz46OkdldFNp
emUgKCk7CgoJCQljb25zdCBzaXplX3QJdHJhbnNwYXJlbnRJbmRleF9vZmZzZXQJPSBFbUFsaWFz
Qml0bWFwVHlwZVYyPFBBUz46Om9mZnNldG9mX3RyYW5zcGFyZW50SW5kZXggKCk7CgkJCWNvbnN0
IHNpemVfdAl0cmFuc3BhcmVudEluZGV4X3NpemUJPSBFbUFsaWFzVUludDg8UEFTPjo6R2V0U2l6
ZSAoKTsKCgkJCWlmIChvZmZzZXQgPj0gZmxhZ3Nfb2Zmc2V0ICYmIG9mZnNldCA8IGZsYWdzX29m
ZnNldCArIGZsYWdzX3NpemUpCgkJCXsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgoJCQlpZiAob2Zm
c2V0ID49IHRyYW5zcGFyZW50SW5kZXhfb2Zmc2V0ICYmIG9mZnNldCA8IHRyYW5zcGFyZW50SW5k
ZXhfb2Zmc2V0ICsgdHJhbnNwYXJlbnRJbmRleF9zaXplKQoJCQl7CgkJCQlyZXR1cm4gdHJ1ZTsK
CQkJfQoJCX0KCX0KCWVsc2UKCXsKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgkJIAoJCSAK
CgkJZW11cHRyCQkJYml0bWFwUAkJCQkJPSBiaXRtYXAuR2V0UHRyICgpOwoJCXNpemVfdAkJCW9m
ZnNldAkJCQkJPSBhZGRyZXNzIC0gYml0bWFwUDsKCgkJY29uc3Qgc2l6ZV90CWZsYWdzX29mZnNl
dAkJCT0gRW1BbGlhc0JpdG1hcFR5cGVWMjxQQVM+OjpvZmZzZXRvZl9mbGFncyAoKTsKCQljb25z
dCBzaXplX3QJZmxhZ3Nfc2l6ZQkJCQk9IEVtQWxpYXNVSW50MTY8UEFTPjo6R2V0U2l6ZSAoKTsK
CgkJY29uc3Qgc2l6ZV90CXRyYW5zcGFyZW50SW5kZXhfb2Zmc2V0CT0gRW1BbGlhc0JpdG1hcFR5
cGVWMjxQQVM+OjpvZmZzZXRvZl90cmFuc3BhcmVudEluZGV4ICgpOwoJCWNvbnN0IHNpemVfdAl0
cmFuc3BhcmVudEluZGV4X3NpemUJPSBFbUFsaWFzVUludDg8UEFTPjo6R2V0U2l6ZSAoKTsKCgkJ
aWYgKG9mZnNldCA+PSBmbGFnc19vZmZzZXQgJiYgb2Zmc2V0IDwgZmxhZ3Nfb2Zmc2V0ICsgZmxh
Z3Nfc2l6ZSkKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCgkJaWYgKG9mZnNldCA+PSB0cmFuc3Bh
cmVudEluZGV4X29mZnNldCAmJiBvZmZzZXQgPCB0cmFuc3BhcmVudEluZGV4X29mZnNldCArIHRy
YW5zcGFyZW50SW5kZXhfc2l6ZSkKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCX0KCgkgCgoJcmV0
dXJuIGZhbHNlOwp9CgoKc3RhdGljIEJvb2wgUHJ2QWxsb3dlZEJpdG1hcEFjY2VzcyAoRW1BbGlh
c0JpdG1hcFR5cGVWMzxQQVM+JiwgZW11cHRyLCBCb29sKQp7CgkgCgkgCgoJIAoKCXJldHVybiBm
YWxzZTsKfQoKCiNwcmFnbWEgbWFyayAtCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiAK
IAogCiAKIAogCiAKIAoKIAogCiAKCnZvaWQgTWV0YU1lbW9yeTo6UmVnaXN0ZXJCaXRtYXBIYW5k
bGUgKE1lbUhhbmRsZSAgKQp7CgoKCgoKCgoKfQoKCiAKIAogCgp2b2lkIE1ldGFNZW1vcnk6OlJl
Z2lzdGVyQml0bWFwUG9pbnRlciAoTWVtUHRyICApCnsKCgoKCgoKCgp9CgoKIAogCiAKCkJvb2wg
TWV0YU1lbW9yeTo6SXNCaXRtYXBIYW5kbGUgKE1lbUhhbmRsZSBoKQp7CglyZXR1cm4gaCAmJiBm
aW5kICgKCQlnQml0bWFwSGFuZGxlTGlzdC5iZWdpbiAoKSwKCQlnQml0bWFwSGFuZGxlTGlzdC5l
bmQgKCksIGgpICE9IGdCaXRtYXBIYW5kbGVMaXN0LmVuZCAoKTsKfQoKCiAKIAogCgpCb29sIE1l
dGFNZW1vcnk6OklzQml0bWFwUG9pbnRlciAoTWVtUHRyIHApCnsKCXJldHVybiBwICYmIGZpbmQg
KAoJCWdCaXRtYXBQb2ludGVyTGlzdC5iZWdpbiAoKSwKCQlnQml0bWFwUG9pbnRlckxpc3QuZW5k
ICgpLCBwKSAhPSBnQml0bWFwUG9pbnRlckxpc3QuZW5kICgpOwp9CgoKIAogCiAKCnZvaWQgTWV0
YU1lbW9yeTo6VW5yZWdpc3RlckJpdG1hcEhhbmRsZSAoTWVtSGFuZGxlIGgpCnsKCWlmIChoKQoJ
ewoJCXZlY3RvcjxNZW1IYW5kbGU+OjppdGVyYXRvcglpdGVyID0gZmluZCAoCgkJCWdCaXRtYXBI
YW5kbGVMaXN0LmJlZ2luICgpLAoJCQlnQml0bWFwSGFuZGxlTGlzdC5lbmQgKCksIGgpOwoKCQlp
ZiAoaXRlciAhPSBnQml0bWFwSGFuZGxlTGlzdC5lbmQgKCkpCgkJewoJCQlNZXRhTWVtb3J5OjpV
bm1hcmtVSU9iamVjdHMgKCk7CgkJCWdCaXRtYXBIYW5kbGVMaXN0LmVyYXNlIChpdGVyKTsKCQkJ
TWV0YU1lbW9yeTo6TWFya1VJT2JqZWN0cyAoKTsKCQl9Cgl9Cn0KCgogCiAKIAoKdm9pZCBNZXRh
TWVtb3J5OjpVbnJlZ2lzdGVyQml0bWFwUG9pbnRlciAoTWVtUHRyIHApCnsKCWlmIChwKQoJewoJ
CXZlY3RvcjxNZW1QdHI+OjppdGVyYXRvcglpdGVyID0gZmluZCAoCgkJCWdCaXRtYXBQb2ludGVy
TGlzdC5iZWdpbiAoKSwKCQkJZ0JpdG1hcFBvaW50ZXJMaXN0LmVuZCAoKSwgcCk7CgoJCWlmIChp
dGVyICE9IGdCaXRtYXBQb2ludGVyTGlzdC5lbmQgKCkpCgkJewoJCQlNZXRhTWVtb3J5OjpVbm1h
cmtVSU9iamVjdHMgKCk7CgkJCWdCaXRtYXBQb2ludGVyTGlzdC5lcmFzZSAoaXRlcik7CgkJCU1l
dGFNZW1vcnk6Ok1hcmtVSU9iamVjdHMgKCk7CgkJfQoJfQp9CgoKI3ByYWdtYSBtYXJrIC0KCnN0
cnVjdCBFbUNoZWNrSXRlckRhdGEKewoJZW11cHRyCWFkZHJlc3M7CglzaXplX3QJc2l6ZTsKCUJv
b2wJZm9yUmVhZDsKCUJvb2wJaXNJblVJT2JqZWN0OwoJQm9vbAlidXRJdHNPSzsKfTsKCgogCiAK
IAogCiAKIAoKc3RhdGljIGludCBQcnZHZXRPYmplY3RTaXplIChlbXVwdHIgb2JqZWN0LCBpbnQg
dHlwZSkKewoJaW50CXJlc3VsdCA9IDA7CgoJaWYgKHR5cGUgPT0ga1VJV2luZG93KQoJewoJCSAK
CQkgCgoJCWNvbnN0IEVtUGFsbUhlYXAqCWhlYXAgPSBFbVBhbG1IZWFwOjpHZXRIZWFwQnlQdHIg
KChNZW1QdHIpIG9iamVjdCk7CgoJCSAKCgkJKCh2b2lkKSAwKSA7CgoJCWlmICghaGVhcCkKCQkJ
cmV0dXJuIHJlc3VsdDsKCgkJIAoKCQlFbVBhbG1DaHVuawljaHVuayAoKmhlYXAsIG9iamVjdCAt
IGhlYXAtPkNodW5rSGVhZGVyU2l6ZSAoKSk7CgoJCXJlc3VsdCA9IGNodW5rLkJvZHlTaXplICgp
OwoJfQoJZWxzZSBpZiAodHlwZSA9PSBrVUlCaXRtYXApCgl7CgkJRW1BbGlhc0JpdG1hcFR5cGVW
MzxQQVM+CWJpdG1hcFYzIChvYmplY3QpOwoKCQlpZiAoYml0bWFwVjMudmVyc2lvbiA8PSAyKQoJ
CXsKCQkJcmVzdWx0ID0gRW1Qcm94eUJpdG1hcFR5cGVWMjo6R2V0U2l6ZSAoKTsKCQl9CgkJZWxz
ZQoJCXsKCQkJcmVzdWx0ID0gYml0bWFwVjMuc2l6ZTsKCQl9Cgl9CgllbHNlCgl7CgkJKCh2b2lk
KSAwKSA7Cgl9CgoJcmV0dXJuIHJlc3VsdDsKfQoKCiAKIAogCgpzdGF0aWMgZW11cHRyIFBydkdl
dE5leHRCaXRtYXAgKGVtdXB0ciBwKQp7CgllbXVwdHIJbmV4dEJpdG1hcCA9ICgoZW11cHRyKSAw
KSA7CgoJRW1BbGlhc0JpdG1hcFR5cGVWMjxQQVM+CWJpdG1hcFYyIChwKTsKCgkgCgkgCgoJaWYg
KGJpdG1hcFYyLnZlcnNpb24gPj0gMykKCXsKCQlFbUFsaWFzQml0bWFwVHlwZVYzPFBBUz4JYml0
bWFwVjMgKHApOwoJCQoJCWlmIChiaXRtYXBWMy5uZXh0RGVwdGhPZmZzZXQgIT0gMCkKCQl7CgkJ
CW5leHRCaXRtYXAgPSBwICsgYml0bWFwVjMubmV4dERlcHRoT2Zmc2V0ICogc2l6ZW9mIChVSW50
MzIpOwoJCX0KCX0KCgkgCgkgCgoJZWxzZSBpZiAoYml0bWFwVjIubmV4dERlcHRoT2Zmc2V0ICE9
IDApCgl7CgkJbmV4dEJpdG1hcCA9IHAgKyBiaXRtYXBWMi5uZXh0RGVwdGhPZmZzZXQgKiBzaXpl
b2YgKFVJbnQzMik7Cgl9CgoJIAoJIAoJIAoKCWVsc2UgaWYgKGJpdG1hcFYyLnZlcnNpb24gPT0g
MSAmJiBiaXRtYXBWMi5waXhlbFNpemUgPT0gMjU1KQoJewoJCW5leHRCaXRtYXAgPSBwICsgYml0
bWFwVjIuR2V0U2l6ZSAoKTsKCX0KCgkoKHZvaWQpIDApIDsKCglyZXR1cm4gbmV4dEJpdG1hcDsK
fQoKCiAKIAogCgpzdGF0aWMgQm9vbCBQcnZDaGVja0Zvcm1PYmplY3QgKEVtQWxpYXNGb3JtVHlw
ZTxQQVM+JiBmb3JtLAoJCQkJCQkgRW1BbGlhc0Zvcm1PYmpMaXN0VHlwZTxQQVM+JiBmb3JtT2Jq
ZWN0LAoJCQkJCQkgRW1DaGVja0l0ZXJEYXRhKiBkYXRhKQp7CgkgCgoJZW11cHRyCQkJZm9ybVAJ
CT0gZm9ybS5HZXRQdHIgKCk7CgllbXVwdHIJCQlmb3JtT2JqZWN0UAk9IGZvcm1PYmplY3QuR2V0
UHRyICgpOwoKCUZvcm1PYmplY3RLaW5kCWtpbmQJCT0gZm9ybU9iamVjdC5vYmplY3RUeXBlOwoJ
ZW11cHRyCQkJb2JqZWN0QWRkcgk9IGZvcm1PYmplY3Qub2JqZWN0OwoKCXN0YXRpYyBpbnQJa1Np
emVBcnJheVtdID0KCXsKCQlFbUFsaWFzRmllbGRUeXBlPFBBUz46OkdldFNpemUgKCksCQkJCSAK
CQktMSwJCQkJCQkJCQkJCQkgCgkJRW1BbGlhc0xpc3RUeXBlPFBBUz46OkdldFNpemUgKCksCQkJ
CSAKCQlFbUFsaWFzVGFibGVUeXBlPFBBUz46OkdldFNpemUgKCksCQkJCSAKCQlFbUFsaWFzRm9y
bUJpdG1hcFR5cGU8UEFTPjo6R2V0U2l6ZSAoKSwJCQkgCgkJRW1BbGlhc0Zvcm1MaW5lVHlwZTxQ
QVM+OjpHZXRTaXplICgpLAkJCSAKCQlFbUFsaWFzRm9ybUZyYW1lVHlwZTxQQVM+OjpHZXRTaXpl
ICgpLAkJCSAKCQlFbUFsaWFzRm9ybVJlY3RhbmdsZVR5cGU8UEFTPjo6R2V0U2l6ZSAoKSwJCSAK
CQlFbUFsaWFzRm9ybUxhYmVsVHlwZTxQQVM+OjpHZXRTaXplICgpLAkJCSAKCQlFbUFsaWFzRm9y
bVRpdGxlVHlwZTxQQVM+OjpHZXRTaXplICgpLAkJCSAKCQlFbUFsaWFzRm9ybVBvcHVwVHlwZTxQ
QVM+OjpHZXRTaXplICgpLAkJCSAKCQlFbUFsaWFzRnJtR3JhZmZpdGlTdGF0ZVR5cGU8UEFTPjo6
R2V0U2l6ZSAoKSwJIAoJCUVtQWxpYXNGb3JtR2FkZ2V0VHlwZTxQQVM+OjpHZXRTaXplICgpLAkJ
CSAKCQlFbUFsaWFzU2Nyb2xsQmFyVHlwZTxQQVM+OjpHZXRTaXplICgpCQkJIAoJfTsKCgkgCgoJ
aW50CQlpdHNTaXplCT0ga1NpemVBcnJheVtraW5kXTsKCglpZiAoaXRzU2l6ZSA8IDApCSAKCXsK
CQkgCgoJCUVtQWxpYXNDb250cm9sVHlwZTxQQVM+CWNvbnRyb2wgKG9iamVjdEFkZHIpOwoJCXVp
bnQxNglhdHRyCT0gY29udHJvbC5hdHRyLmZsYWdzOwoJCXVpbnQ4CXN0eWxlCT0gY29udHJvbC5z
dHlsZTsKCgkJaXRzU2l6ZQk9IGNvbnRyb2wuR2V0U2l6ZSAoKTsJIAoJCQoJCWlmIChhdHRyICYg
MHgwMDQwICkKCQl7CgkJCSAKCgkJCWl0c1NpemUgPSBFbUFsaWFzR3JhcGhpY0NvbnRyb2xUeXBl
PFBBUz46OkdldFNpemUgKCk7CgkJfQoJCWVsc2UgaWYgKHN0eWxlID09IHNsaWRlckN0bCB8fCBz
dHlsZSA9PSBmZWVkYmFja1NsaWRlckN0bCkKCQl7CgkJCSAKCgkJCWl0c1NpemUgPSBFbUFsaWFz
U2xpZGVyQ29udHJvbFR5cGU8UEFTPjo6R2V0U2l6ZSAoKTsKCQl9Cgl9CgoJIAoKCWlmIChkYXRh
LT5hZGRyZXNzID49IG9iamVjdEFkZHIgJiYgZGF0YS0+YWRkcmVzcyA8IG9iamVjdEFkZHIgKyBp
dHNTaXplKQoJewoJCWRhdGEtPmlzSW5VSU9iamVjdCA9IHRydWU7CgoJCWlmICghOjpQcnZBbGxv
d2VkRm9ybU9iamVjdEFjY2VzcyAoZm9ybU9iamVjdCwgZGF0YS0+YWRkcmVzcywgZGF0YS0+Zm9y
UmVhZCkpCgkJewoJCQlnU2Vzc2lvbi0+U2NoZWR1bGVEZWZlcnJlZEVycm9yIChuZXcgRW1EZWZl
cnJlZEVyckZvcm1PYmplY3RBY2Nlc3MgKGZvcm1PYmplY3RQLCBmb3JtUCwgZGF0YS0+YWRkcmVz
cywgZGF0YS0+c2l6ZSwgZGF0YS0+Zm9yUmVhZCkpOwoJCQlkYXRhLT5idXRJdHNPSyA9IGZhbHNl
OwoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9CgoJIAoKCWVtdXB0cgl0ZXh0UHRyID0gKChlbXVwdHIp
IDApIDsKCglzd2l0Y2ggKGtpbmQpCgl7CgkJY2FzZSBmcm1Db250cm9sT2JqOgoJCXsKCQkJRW1B
bGlhc0NvbnRyb2xUeXBlPFBBUz4JY29udHJvbCAob2JqZWN0QWRkcik7CgkJCXVpbnQxNglhdHRy
CT0gY29udHJvbC5hdHRyLmZsYWdzOwoJCQl1aW50OAlzdHlsZQk9IGNvbnRyb2wuc3R5bGU7CgkJ
CQoJCQlpZiAoYXR0ciAmIDB4MDA0MCApCgkJCXsKCQkJCSAKCQkJfQoJCQllbHNlIGlmIChzdHls
ZSA9PSBzbGlkZXJDdGwgfHwgc3R5bGUgPT0gZmVlZGJhY2tTbGlkZXJDdGwpCgkJCXsKCQkJCSAK
CQkJfQoJCQllbHNlCgkJCXsKCQkJCXRleHRQdHIgPSBjb250cm9sLnRleHQ7CgkJCX0KCgkJCWJy
ZWFrOwoJCX0KCgkJY2FzZSBmcm1MYWJlbE9iajoKCQl7CgkJCUVtQWxpYXNGb3JtTGFiZWxUeXBl
PFBBUz4JbGFiZWwgKG9iamVjdEFkZHIpOwoJCQl0ZXh0UHRyID0gbGFiZWwudGV4dDsKCQkJYnJl
YWs7CgkJfQoKCQljYXNlIGZybVRpdGxlT2JqOgoJCXsKCQkJRW1BbGlhc0Zvcm1UaXRsZVR5cGU8
UEFTPgl0aXRsZSAob2JqZWN0QWRkcik7CgkJCXRleHRQdHIgPSB0aXRsZS50ZXh0OwoJCQlicmVh
azsKCQl9CgoJCWNhc2UgZnJtRmllbGRPYmo6CSAKCQkJCQkJCSAKCQkJCQkJCSAKCQkJCQkJCSAK
CQljYXNlIGZybUxpc3RPYmo6CgkJY2FzZSBmcm1UYWJsZU9iajoKCQljYXNlIGZybUJpdG1hcE9i
ajoKCQljYXNlIGZybUxpbmVPYmo6CgkJY2FzZSBmcm1GcmFtZU9iajoKCQljYXNlIGZybVJlY3Rh
bmdsZU9iajoKCQljYXNlIGZybVBvcHVwT2JqOgoJCWNhc2UgZnJtR3JhZmZpdGlTdGF0ZU9iajoK
CQljYXNlIGZybUdhZGdldE9iajoKCQljYXNlIGZybVNjcm9sbEJhck9iajoKCQkJYnJlYWs7Cgl9
CgoJaWYgKHRleHRQdHIpCgl7CgkJc2l6ZV90CXRleHRTaXplID0gRW1NZW1fc3RybGVuICh0ZXh0
UHRyKSArIDE7CgoJCWlmIChkYXRhLT5hZGRyZXNzID49IHRleHRQdHIgJiYgZGF0YS0+YWRkcmVz
cyA8IHRleHRQdHIgKyB0ZXh0U2l6ZSkKCQl7CgkJCWRhdGEtPmlzSW5VSU9iamVjdCA9IHRydWU7
CgoJCQlpZiAoITo6UHJ2QWxsb3dlZEZvcm1PYmplY3RBY2Nlc3MgKGZvcm1PYmplY3QsIGRhdGEt
PmFkZHJlc3MsIGRhdGEtPmZvclJlYWQpKQoJCQl7CgkJCQlnU2Vzc2lvbi0+U2NoZWR1bGVEZWZl
cnJlZEVycm9yIChuZXcgRW1EZWZlcnJlZEVyckZvcm1PYmplY3RBY2Nlc3MgKGZvcm1PYmplY3RQ
LCBmb3JtUCwgZGF0YS0+YWRkcmVzcywgZGF0YS0+c2l6ZSwgZGF0YS0+Zm9yUmVhZCkpOwoJCQkJ
ZGF0YS0+YnV0SXRzT0sgPSBmYWxzZTsKCQkJfQoKCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoKCXJl
dHVybiBmYWxzZTsKfQoKCiAKIAogCgpzdGF0aWMgQm9vbCBQcnZDaGVja0Zvcm0gKEVtQWxpYXNG
b3JtVHlwZTxQQVM+JiBmb3JtLCBFbUNoZWNrSXRlckRhdGEqIGRhdGEpCnsKCSAKCgllbXVwdHIJ
Zm9ybVAJPSBmb3JtLkdldFB0ciAoKTsKCXNpemVfdAlzaXplCT0gZm9ybS5HZXRTaXplICgpOwoK
CWlmIChkYXRhLT5hZGRyZXNzID49IGZvcm1QICYmIGRhdGEtPmFkZHJlc3MgPCBmb3JtUCArIHNp
emUpCgl7CgkJZGF0YS0+aXNJblVJT2JqZWN0ID0gdHJ1ZTsKCgkJaWYgKCE6OlBydkFsbG93ZWRG
b3JtQWNjZXNzIChmb3JtUCwgZGF0YS0+YWRkcmVzcywgZGF0YS0+Zm9yUmVhZCkpCgkJewoJCQln
U2Vzc2lvbi0+U2NoZWR1bGVEZWZlcnJlZEVycm9yIChuZXcgRW1EZWZlcnJlZEVyckZvcm1BY2Nl
c3MgKGZvcm1QLCBkYXRhLT5hZGRyZXNzLCBkYXRhLT5zaXplLCBkYXRhLT5mb3JSZWFkKSk7CgkJ
CWRhdGEtPmJ1dEl0c09LID0gZmFsc2U7CgkJfQoKCQlyZXR1cm4gdHJ1ZTsKCX0KCgkgCgoJIAoJ
IAoKCXVpbnQxNgludW1PYmplY3RzCT0gZm9ybS5udW1PYmplY3RzOwoJZW11cHRyCWZpcnN0T2Jq
ZWN0CT0gZm9ybS5vYmplY3RzOwoJZW11cHRyCWxhc3RPYmplY3QJPSBmaXJzdE9iamVjdCArIG51
bU9iamVjdHMgKiBFbUFsaWFzRm9ybU9iakxpc3RUeXBlPFBBUz46OkdldFNpemUgKCk7CgoJaWYg
KGRhdGEtPmFkZHJlc3MgPj0gZmlyc3RPYmplY3QgJiYgZGF0YS0+YWRkcmVzcyA8IGxhc3RPYmpl
Y3QpCgl7CgkJZGF0YS0+aXNJblVJT2JqZWN0ID0gdHJ1ZTsKCgkJaWYgKCE6OlBydkFsbG93ZWRG
b3JtQWNjZXNzIChmb3JtUCwgZGF0YS0+YWRkcmVzcywgZGF0YS0+Zm9yUmVhZCkpCgkJewoJCQln
U2Vzc2lvbi0+U2NoZWR1bGVEZWZlcnJlZEVycm9yIChuZXcgRW1EZWZlcnJlZEVyckZvcm1BY2Nl
c3MgKGZvcm1QLCBkYXRhLT5hZGRyZXNzLCBkYXRhLT5zaXplLCBkYXRhLT5mb3JSZWFkKSk7CgkJ
CWRhdGEtPmJ1dEl0c09LID0gZmFsc2U7CgkJfQoKCQlyZXR1cm4gdHJ1ZTsKCX0KCgkgCgkgCgoJ
ZW11cHRyCXRoaXNPYmplY3QgPSBmaXJzdE9iamVjdDsKCglmb3IgKGludCBpaSA9IDA7IGlpIDwg
bnVtT2JqZWN0czsgKytpaSkKCXsKCQlFbUFsaWFzRm9ybU9iakxpc3RUeXBlPFBBUz4JZm9ybU9i
amVjdCAodGhpc09iamVjdCk7CgoJCWlmICg6OlBydkNoZWNrRm9ybU9iamVjdCAoZm9ybSwgZm9y
bU9iamVjdCwgZGF0YSkpCgkJCXJldHVybiB0cnVlOwoKCQkgCgoJCXRoaXNPYmplY3QgKz0gZm9y
bU9iamVjdC5HZXRTaXplICgpOwoJfQoKCXJldHVybiBmYWxzZTsKfQoKCiAKIAogCgpzdGF0aWMg
Qm9vbCBQcnZDaGVja1dpbmRvdyAoRW1BbGlhc1dpbmRvd1R5cGU8UEFTPiYgd2luZG93LCBFbUNo
ZWNrSXRlckRhdGEqIGRhdGEpCnsKCSAKCSAKCSAKCSAKCSAKCgllbXVwdHIJd2luZG93UCA9IHdp
bmRvdy5HZXRQdHIgKCk7CglzaXplX3QJc2l6ZQk9IHdpbmRvdy5HZXRTaXplICgpOwoKCWlmIChk
YXRhLT5hZGRyZXNzID49IHdpbmRvd1AgJiYgZGF0YS0+YWRkcmVzcyA8IHdpbmRvd1AgKyBzaXpl
KQoJewoJCWRhdGEtPmlzSW5VSU9iamVjdCA9IHRydWU7CgoJCWlmICghOjpQcnZBbGxvd2VkV2lu
ZG93QWNjZXNzICh3aW5kb3dQLCBkYXRhLT5hZGRyZXNzLCBkYXRhLT5mb3JSZWFkKSkKCQl7CgkJ
CWdTZXNzaW9uLT5TY2hlZHVsZURlZmVycmVkRXJyb3IgKG5ldyBFbURlZmVycmVkRXJyV2luZG93
QWNjZXNzICh3aW5kb3dQLCBkYXRhLT5hZGRyZXNzLCBkYXRhLT5zaXplLCBkYXRhLT5mb3JSZWFk
KSk7CgkJCWRhdGEtPmJ1dEl0c09LID0gZmFsc2U7CgkJfQoKCQlyZXR1cm4gdHJ1ZTsKCX0KCgly
ZXR1cm4gZmFsc2U7Cn0KCgogCiAKIAoKc3RhdGljIEJvb2wgUHJ2Q2hlY2tCaXRtYXAgKEVtQWxp
YXNCaXRtYXBUeXBlVjI8UEFTPiYgYml0bWFwVjIsIEVtQ2hlY2tJdGVyRGF0YSogZGF0YSkKewoJ
ZW11cHRyCWJpdG1hcFAJPSBiaXRtYXBWMi5HZXRQdHIgKCk7CglzaXplX3QJc2l6ZQk9IGJpdG1h
cFYyLkdldFNpemUgKCk7CgoJaWYgKGRhdGEtPmFkZHJlc3MgPj0gYml0bWFwUCAmJiBkYXRhLT5h
ZGRyZXNzIDwgYml0bWFwUCArIHNpemUpCgl7CgkJZGF0YS0+aXNJblVJT2JqZWN0ID0gdHJ1ZTsK
CgkJaWYgKCE6OlBydkFsbG93ZWRCaXRtYXBBY2Nlc3MgKGJpdG1hcFYyLCBkYXRhLT5hZGRyZXNz
LCBkYXRhLT5mb3JSZWFkKSkKCQl7CgkJCWdTZXNzaW9uLT5TY2hlZHVsZURlZmVycmVkRXJyb3Ig
KG5ldyBFbURlZmVycmVkRXJyQml0bWFwQWNjZXNzIChiaXRtYXBQLCBkYXRhLT5hZGRyZXNzLCBk
YXRhLT5zaXplLCBkYXRhLT5mb3JSZWFkKSk7CgkJCWRhdGEtPmJ1dEl0c09LID0gZmFsc2U7CgkJ
fQoKCQlyZXR1cm4gdHJ1ZTsKCX0KCglyZXR1cm4gZmFsc2U7Cn0KCgogCiAKIAoKc3RhdGljIEJv
b2wgUHJ2Q2hlY2tCaXRtYXAgKEVtQWxpYXNCaXRtYXBUeXBlVjM8UEFTPiYgYml0bWFwVjMsIEVt
Q2hlY2tJdGVyRGF0YSogZGF0YSkKewoJZW11cHRyCWJpdG1hcFAJPSBiaXRtYXBWMy5HZXRQdHIg
KCk7CglzaXplX3QJc2l6ZQk9IGJpdG1hcFYzLnNpemU7CgoJaWYgKGRhdGEtPmFkZHJlc3MgPj0g
Yml0bWFwUCAmJiBkYXRhLT5hZGRyZXNzIDwgYml0bWFwUCArIHNpemUpCgl7CgkJZGF0YS0+aXNJ
blVJT2JqZWN0ID0gdHJ1ZTsKCgkJaWYgKCE6OlBydkFsbG93ZWRCaXRtYXBBY2Nlc3MgKGJpdG1h
cFYzLCBkYXRhLT5hZGRyZXNzLCBkYXRhLT5mb3JSZWFkKSkKCQl7CgkJCWdTZXNzaW9uLT5TY2hl
ZHVsZURlZmVycmVkRXJyb3IgKG5ldyBFbURlZmVycmVkRXJyQml0bWFwQWNjZXNzIChiaXRtYXBQ
LCBkYXRhLT5hZGRyZXNzLCBkYXRhLT5zaXplLCBkYXRhLT5mb3JSZWFkKSk7CgkJCWRhdGEtPmJ1
dEl0c09LID0gZmFsc2U7CgkJfQoKCQlyZXR1cm4gdHJ1ZTsKCX0KCglyZXR1cm4gZmFsc2U7Cn0K
CgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCkJvb2wgUHJ2Q2hlY2tVSU9iamVjdCAoZW11
cHRyIG9iamVjdFAsIHZvaWQqIGQsIGludCB0eXBlKQp7CgkgCgoJKCh2b2lkKSAwKSA7CglFbUNo
ZWNrSXRlckRhdGEqCWRhdGEgPSAoRW1DaGVja0l0ZXJEYXRhKikgZDsKCglpZiAodHlwZSA9PSBr
VUlXaW5kb3cpCgl7CgkJIAoKCQlFbUFsaWFzV2luZG93VHlwZTxQQVM+CXdpbmRvdyAob2JqZWN0
UCk7CgkJdWludDE2CWZsYWdzID0gd2luZG93LndpbmRvd0ZsYWdzLmZsYWdzOwoKCQlpZiAoZmxh
Z3MgJiAweDAyMDAgKQoJCXsKCQkJIAoKCQkJRW1BbGlhc0Zvcm1UeXBlPFBBUz4JZm9ybSAob2Jq
ZWN0UCk7CgoJCQlpZiAoOjpQcnZDaGVja0Zvcm0gKGZvcm0sIGRhdGEpKQoJCQkJcmV0dXJuIHRy
dWU7CgkJfQoJCWVsc2UKCQl7CgkJCSAKCgkJCWlmICg6OlBydkNoZWNrV2luZG93ICh3aW5kb3cs
IGRhdGEpKQoJCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoJZWxzZSBpZiAodHlwZSA9PSBrVUlCaXRt
YXApCgl7CgkJRW1BbGlhc0JpdG1hcFR5cGVWMjxQQVM+CWJpdG1hcFYyIChvYmplY3RQKTsKCgkJ
aWYgKGJpdG1hcFYyLnZlcnNpb24gPD0gMikKCQl7CgkJCWlmICg6OlBydkNoZWNrQml0bWFwIChi
aXRtYXBWMiwgZGF0YSkpCgkJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJZWxzZQoJCXsKCQkJRW1BbGlh
c0JpdG1hcFR5cGVWMzxQQVM+CWJpdG1hcFYzIChvYmplY3RQKTsKCgkJCWlmICg6OlBydkNoZWNr
Qml0bWFwIChiaXRtYXBWMywgZGF0YSkpCgkJCQlyZXR1cm4gdHJ1ZTsKCQl9Cgl9CgllbHNlCgl7
CgkJKCh2b2lkKSAwKSA7Cgl9CgoJcmV0dXJuIGZhbHNlOwp9CgoKIAogCiAKIAogCgpCb29sIFBy
dk1hcmtVSU9iamVjdCAoZW11cHRyIG9iamVjdCwgdm9pZCogICwgaW50IHR5cGUpCnsKCWVtdXB0
cgliZWdpbgk9IG9iamVjdDsKCWVtdXB0cgllbmQJCT0gYmVnaW4gKyA6OlBydkdldE9iamVjdFNp
emUgKG9iamVjdCwgdHlwZSk7CgoJTWV0YU1lbW9yeTo6TWFya1VJT2JqZWN0IChiZWdpbiwgZW5k
KTsKCglyZXR1cm4gZmFsc2U7Cn0KCgogCiAKIAogCiAKCnN0YXRpYyBCb29sIFBydlVubWFya1VJ
T2JqZWN0IChlbXVwdHIgb2JqZWN0LCB2b2lkKiAgLCBpbnQgdHlwZSkKewoJZW11cHRyCWJlZ2lu
CT0gb2JqZWN0OwoJZW11cHRyCWVuZAkJPSBiZWdpbiArIDo6UHJ2R2V0T2JqZWN0U2l6ZSAob2Jq
ZWN0LCB0eXBlKTsKCglNZXRhTWVtb3J5OjpVbm1hcmtVSU9iamVjdCAoYmVnaW4sIGVuZCk7CgoJ
cmV0dXJuIGZhbHNlOwp9CgoKIAogCiAKIAogCiAKIAoKQm9vbCBQcnZGb3JFYWNoV2luZG93IChJ
dGVyRm4gZm4sIHZvaWQqIGRhdGEpCnsKCSAKCSAKCSAKCSAKCglpZiAoIUVtUGF0Y2hTdGF0ZTo6
VUlSZXNldCAoKSkKCQlyZXR1cm4gZmFsc2U7CgoJIAoKCWVtdXB0cgl3ID0gRW1Mb3dNZW06OmZn
TG93TWVtLmdsb2JhbHMuIHVpR2xvYmFscy5maXJzdFdpbmRvdyAgOwoJd2hpbGUgKHcpCgl7CgkJ
aWYgKGZuICh3LCBkYXRhLCBrVUlXaW5kb3cpKQoJCQlyZXR1cm4gdHJ1ZTsKCgkJIAoKCQlFbUFs
aWFzV2luZG93VHlwZTxQQVM+CXdpbmRvdyAodyk7CgkJdyA9IHdpbmRvdy5uZXh0V2luZG93OwoJ
fQoKCXJldHVybiBmYWxzZTsKfQoKCiAKIAogCiAKIAogCiAKCkJvb2wgUHJ2Rm9yRWFjaEJpdG1h
cCAoSXRlckZuICAsIHZvaWQqICApCnsKIyAzNDgxICIuLy4uL1NyY1NoYXJlZC9NZXRhTWVtb3J5
LmNwcCIKCgoJcmV0dXJuIGZhbHNlOwp9CgoKIAogCiAKIAogCiAKIAoKQm9vbCBQcnZGb3JFYWNo
VUlPYmplY3QgKEl0ZXJGbiBmbiwgdm9pZCogZGF0YSkKewoJIAoKCUNFbmFibGVGdWxsQWNjZXNz
CW11bmdlOwoKCSAKCglpZiAoOjpQcnZGb3JFYWNoV2luZG93IChmbiwgZGF0YSkpCgkJcmV0dXJu
IHRydWU7CgoJIAoKCWlmICg6OlBydkZvckVhY2hCaXRtYXAgKGZuLCBkYXRhKSkKCQlyZXR1cm4g
dHJ1ZTsKCglyZXR1cm4gZmFsc2U7Cn0KCgogCiAKIAogCiAKCnZvaWQgTWV0YU1lbW9yeTo6Q2hl
Y2tVSU9iamVjdEFjY2VzcyAoZW11cHRyIGFkZHJlc3MsIHNpemVfdCBzaXplLCBCb29sIGZvclJl
YWQsCgkJCQkJCQkJCSAgQm9vbCYgaXNJblVJT2JqZWN0LCBCb29sJiBidXRJdHNPSykKewoJRW1D
aGVja0l0ZXJEYXRhCWRhdGE7CgoJZGF0YS5hZGRyZXNzCQk9IGFkZHJlc3M7CglkYXRhLnNpemUJ
CQk9IHNpemU7CglkYXRhLmZvclJlYWQJCT0gZm9yUmVhZDsKCWRhdGEuaXNJblVJT2JqZWN0CT0g
ZmFsc2U7CglkYXRhLmJ1dEl0c09LCQk9IHRydWU7CgoJOjpQcnZGb3JFYWNoVUlPYmplY3QgKCY6
OlBydkNoZWNrVUlPYmplY3QsICZkYXRhKTsKCglpc0luVUlPYmplY3QJCT0gZGF0YS5pc0luVUlP
YmplY3Q7CglidXRJdHNPSwkJCT0gZGF0YS5idXRJdHNPSzsKfQoKCiAKIAogCiAKIAoKdm9pZCBN
ZXRhTWVtb3J5OjpNYXJrVUlPYmplY3RzICh2b2lkKQp7Cgk6OlBydkZvckVhY2hVSU9iamVjdCAo
Jjo6UHJ2TWFya1VJT2JqZWN0LCBfX251bGwgKTsKfQoKCiAKIAogCiAKIAoKdm9pZCBNZXRhTWVt
b3J5OjpVbm1hcmtVSU9iamVjdHMgKHZvaWQpCnsKCTo6UHJ2Rm9yRWFjaFVJT2JqZWN0ICgmOjpQ
cnZVbm1hcmtVSU9iamVjdCwgX19udWxsICk7Cn0KCgojcHJhZ21hIG1hcmsgLQoKIAogCiAKIAog
CgpzdGF0aWMgZW11cHRyIFBydkxvY2FsSURUb1B0ciAoTG9jYWxJRCBsb2NhbCkKewoJZW11cHRy
CQkJCQkJbWVtQ2FyZEluZm9QID0gRW1Mb3dNZW06OmZnTG93TWVtLmdsb2JhbHMuIG1lbUNhcmRJ
bmZvUCAgOwoJRW1BbGlhc0NhcmRJbmZvVHlwZTxQQVM+CWNhcmRJbmZvIChtZW1DYXJkSW5mb1Ap
OwoJZW11cHRyCQkJCQkJcCA9IChsb2NhbCAmIDB4RkZGRkZGRkUpICsgY2FyZEluZm8uYmFzZVA7
CgoJIAoKCWlmIChsb2NhbCAmIDB4MDEpIAoJCXAgPSBFbU1lbUdldDMyIChwKTsKCglyZXR1cm4g
cDsKfQoKCiAKIAogCiAKCnN0YXRpYyBlbXVwdHIgUHJ2R2V0UkFNRGF0YWJhc2VEaXJlY3Rvcnko
dm9pZCkKewoJZW11cHRyCQkJCQkJCW1lbUNhcmRJbmZvUCA9IEVtTG93TWVtOjpmZ0xvd01lbS5n
bG9iYWxzLiBtZW1DYXJkSW5mb1AgIDsKCUVtQWxpYXNDYXJkSW5mb1R5cGU8UEFTPgkJY2FyZElu
Zm8gKG1lbUNhcmRJbmZvUCk7CgllbXVwdHIJCQkJCQkJc3RvcmVQID0gY2FyZEluZm8ucmFtU3Rv
cmVQOwoKCUVtQWxpYXNTdG9yYWdlSGVhZGVyVHlwZTxQQVM+CXN0b3JlIChzdG9yZVApOwoJTG9j
YWxJRAkJCQkJCQlkYXRhYmFzZURpcklEID0gc3RvcmUuZGF0YWJhc2VEaXJJRDsKCglyZXR1cm4g
OjpQcnZMb2NhbElEVG9QdHIgKGRhdGFiYXNlRGlySUQpOwp9CgoKIAogCiAKCnN0YXRpYyBpbmxp
bmUgQm9vbCBQcnZJc09LQ2hhcmFjdGVyIChjaGFyIGNoKQp7CglyZXR1cm4gKChfX2N0eXBlICsg
MSlbIGNoIF0gJiAweDAwMDAwMDAyICkgOwp9CgoKIAogCiAKIAogCgpzdGF0aWMgaW5saW5lIEJv
b2wgUHJ2SXNMb3dlckNhc2VDcmVhdG9yIChVSW50MzIgY3JlYXRvcikKewoJY29uc3QgY2hhcioJ
cCA9IChjb25zdCBjaGFyKikgJmNyZWF0b3I7CgoJcmV0dXJuCVBydklzT0tDaGFyYWN0ZXIgKHBb
MF0pICYmCgkJCVBydklzT0tDaGFyYWN0ZXIgKHBbMV0pICYmCgkJCVBydklzT0tDaGFyYWN0ZXIg
KHBbMl0pICYmCgkJCVBydklzT0tDaGFyYWN0ZXIgKHBbM10pOwp9CgoKIAogCiAKCnN0YXRpYyBC
b29sIFBydklzUGFsbUNyZWF0b3IgKFVJbnQzMiBjcmVhdG9yKQp7CgkgCgkgCgkgCgoJc3RhdGlj
IGNvbnN0IFVJbnQzMiBrTm9uU3RhbmRhcmRDcmVhdG9yc1tdID0KCXsKCQknYTY4aycsCgkJJ21m
eDEnLAoJCSd1MzI4JywKCQkndTY1MCcsCgkJJ3U4RVonCgl9OwoKCSAKCSAKCglpZiAoOjpQcnZJ
c0xvd2VyQ2FzZUNyZWF0b3IgKGNyZWF0b3IpKQoJewoJCXJldHVybiB0cnVlOwoJfQoKCSAKCSAK
Cglmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgKHNpemVvZigga05vblN0YW5kYXJkQ3JlYXRvcnMg
KSAvIHNpemVvZiAoIGtOb25TdGFuZGFyZENyZWF0b3JzIFswXSkpIDsgKytpaSkKCXsKCQlpZiAo
Y3JlYXRvciA9PSBrTm9uU3RhbmRhcmRDcmVhdG9yc1tpaV0pCgkJewoJCQlyZXR1cm4gdHJ1ZTsK
CQl9Cgl9CgoJIAoKCXJldHVybiBmYWxzZTsKfQoKCiAKIAogCgpzdGF0aWMgQm9vbCBQcnZJc1Jl
Z2lzdGVyZWRQYWxtQ3JlYXRvciAoVUludDMyIGNyZWF0b3IpCnsKCSAKCglzdGF0aWMgY29uc3Qg
VUludDMyIGtQYWxtUmVnaXN0ZXJlZENyZWF0b3JzW10gPQoJewoJCSdhNjhrJywJCSdhY3R2JywJ
CSdhZGRyJywJCSdibHRoJywJCSdidGNwJywKCQknYnRleCcsCQknYnR0bicsCQknYnR0eCcsCQkn
Y2FsYycsCQknY2luZicsCgkJJ2NscHInLAkJJ2RhdGUnLAkJJ2RibW4nLAkJJ2RpYWwnLAkJJ2Rp
Y3QnLAoJCSdkaWdpJywJCSdkbWZ4JywJCSdkdHRtJywJCSdlY29uJywJCSdleHBuJywKCQknZXhw
cycsCQknZmF0ZicsCQknZmlucycsCQknZmxzaCcsCQknZm9uZScsCgkJJ2ZybXQnLAkJJ2dhZmQn
LAkJJ2dkZW0nLAkJJ2ducmwnLAkJJ2dyYWYnLAoJCSdnc21mJywJCSdoaWRkJywJCSdocGFkJywJ
CSdocmVsJywJCSdoc3N1JywKCQknaHRjcCcsCQknaW5ldCcsCQknaXJjbScsCQknaXJkYScsCQkn
aXdycCcsCgkJJ2xuY2gnLAkJJ2xvY2wnLAkJJ2xwa3InLAkJJ21haWwnLAkJJ21kZW0nLAoJCSdt
ZW1vJywJCSdtZW1yJywJCSdtZmdjJywJCSdtZmdmJywJCSdtZngxJywKCQknbWluZScsCQknbW1m
eCcsCQknbW9kbScsCQknbXNncycsCQknbmV0bCcsCgkJJ25ldHAnLAkJJ25ldHQnLAkJJ25ldHcn
LAkJJ29sYmknLAkJJ293bnInLAoJCSdwYXRkJywJCSdwZGlsJywJCSdwZHZjJywJCSdwaG9wJywJ
CSdwaW5nJywKCQkncG5wcycsCQkncG9lbScsCQkncG9ydCcsCQkncHJlZicsCQkncHN5cycsCgkJ
J3B0Y2gnLAkJJ3B1c2InLAkJJ3B1emwnLAkJJ3JmY20nLAkJJ3JmZGcnLAoJCSdzZHNkJywJCSdz
ZWNsJywJCSdzZWNyJywJCSdzZXRwJywJCSdzaGN0JywKCQknc21ncicsCQknc21zbCcsCQknc21z
bScsCQknc3BodCcsCQknc3J2cicsCgkJJ3N0Z2QnLAkJJ3N3cnAnLAkJJ3N5bmMnLAkJJ3RtZ3In
LAkJJ3RvZG8nLAoJCSd0c21sJywJCSd1MzI4JywJCSd1NjUwJywJCSd1OEVaJywJCSd1ZGljJywK
CQkndXNiYycsCQkndXNiZCcsCQkndXNicCcsCQkndmZzbScsCQknd2NscCcsCgkJJ3dlYmwnLAkJ
J3d3d3cnCgl9OwoKCWNvbnN0IFVJbnQzMioJYmVnaW4JPSAma1BhbG1SZWdpc3RlcmVkQ3JlYXRv
cnNbMF07Cgljb25zdCBVSW50MzIqCWVuZAkJPSAma1BhbG1SZWdpc3RlcmVkQ3JlYXRvcnNbKHNp
emVvZigga1BhbG1SZWdpc3RlcmVkQ3JlYXRvcnMgKSAvIHNpemVvZiAoIGtQYWxtUmVnaXN0ZXJl
ZENyZWF0b3JzIFswXSkpIF07CgoJcmV0dXJuIGJpbmFyeV9zZWFyY2ggKGJlZ2luLCBlbmQsIGNy
ZWF0b3IpOwp9CgoKIAogCiAKCnN0YXRpYyB2b2lkIFBydkFkZFRhZ2dlZENodW5rIChjb25zdCBF
bVRhZ2dlZFBhbG1DaHVuayYgY2h1bmspCnsKCWdUYWdnZWRDaHVua3MucHVzaF9iYWNrIChjaHVu
ayk7Cn0KCgogCiAKIAogCiAKCnN0YXRpYyB2b2lkIFBydkxvYWRUYWdnZWRDaHVuayAoZW11cHRy
IHBjKQp7CglFbVRhZ2dlZFBhbG1DaHVua0xpc3Q6Oml0ZXJhdG9yCWl0ZXIgPSBnVGFnZ2VkQ2h1
bmtzLmJlZ2luICgpOwoJd2hpbGUgKGl0ZXIgIT0gZ1RhZ2dlZENodW5rcy5lbmQgKCkpCgl7CgkJ
aWYgKGl0ZXItPkJvZHlDb250YWlucyAocGMpKQoJCXsKCQkJZ0hhdmVMYXN0Q2h1bmsgPSB0cnVl
OwoJCQlnTGFzdENodW5rID0gKml0ZXI7CgkJCXJldHVybjsKCQl9CgoJCSsraXRlcjsKCX0KfQoK
CiAKIAogCiAKIAoKdm9pZCBNZXRhTWVtb3J5OjpDaHVua1VubG9ja2VkIChlbXVwdHIgYWRkcikK
ewoJRW1UYWdnZWRQYWxtQ2h1bmtMaXN0OjppdGVyYXRvcglpdGVyID0gZ1RhZ2dlZENodW5rcy5i
ZWdpbiAoKTsKCXdoaWxlIChpdGVyICE9IGdUYWdnZWRDaHVua3MuZW5kICgpKQoJewoJCWlmIChp
dGVyLT5Cb2R5Q29udGFpbnMgKGFkZHIpKQoJCXsKCQkJZ1RhZ2dlZENodW5rcy5lcmFzZSAoaXRl
cik7CgoJCQlpZiAoZ0xhc3RDaHVuay5Cb2R5Q29udGFpbnMgKGFkZHIpKQoJCQl7CgkJCQlnSGF2
ZUxhc3RDaHVuayA9IGZhbHNlOwoJCQl9CgoJCQlyZXR1cm47CgkJfQoKCQkrK2l0ZXI7Cgl9Cn0K
CgojcHJhZ21hIG1hcmsgLQoKIAogCiAKIAogCgpzdGF0aWMgQm9vbCBQcnZJc1N5c3RlbURhdGFi
YXNlIChVSW50MzIgdHlwZSwgVUludDMyIGNyZWF0b3IpCnsKCUJvb2wJaXNTeXN0ZW1EYXRhYmFz
ZSA9IGZhbHNlOwoKCWlmICgodHlwZSA9PSAnZXh0bicgKSB8fAoJCSh0eXBlID09ICdsaWJyJyAp
IHx8CgkJKHR5cGUgPT0gJ3BhbmwnICkgfHwKCQkodHlwZSA9PSAncHRjaCcgKSB8fAoJCSh0eXBl
ID09ICdodGFsJyApIHx8CSAKCQkodHlwZSA9PSAnYnR0eCcpKQkJCQkgCgl7CgkJaXNTeXN0ZW1E
YXRhYmFzZSA9IDo6UHJ2SXNQYWxtQ3JlYXRvciAoY3JlYXRvcik7Cgl9CgllbHNlIGlmICh0eXBl
ID09ICdhcHBsJyApCgl7CgkJIAoJCSAKCQkgCgkJIAoJCSAKCQkgCgoJCWlzU3lzdGVtRGF0YWJh
c2UgPSA6OlBydklzUmVnaXN0ZXJlZFBhbG1DcmVhdG9yIChjcmVhdG9yKTsKCX0KCgkgCgkgCgkg
CgkgCgkgCgkgCgkgCgkgCgkgCgkgCgkgCgkgCgkgCgoJZWxzZSBpZiAoY3JlYXRvciA9PSAnSHNF
eCcgJiYgKHR5cGUgPT0gJ0hzUHQnIHx8IHR5cGUgPT0gJ0h3QWwnKSkKCXsKCQlpc1N5c3RlbURh
dGFiYXNlID0gdHJ1ZTsKCX0KCglyZXR1cm4gaXNTeXN0ZW1EYXRhYmFzZTsKfQoKCiAKIAogCgpz
dGF0aWMgdm9pZCBQcnZTZWFyY2hGb3JDb2RlQ2h1bmsgKGVtdXB0ciBwYykKewoJIAoJIAoJIAoJ
IAoKCSAKCglDRW5hYmxlRnVsbEFjY2VzcwkJCW11bmdlOwoKCSAKCgllbXVwdHIJCQkJCQlkaXJQ
ID0gOjpQcnZHZXRSQU1EYXRhYmFzZURpcmVjdG9yeSAoKTsKCUVtQWxpYXNEYXRhYmFzZURpclR5
cGU8UEFTPglkaXIgKGRpclApOwoKCSAKCglVSW50MTYJbnVtRGF0YWJhc2VzID0gZGlyLm51bURh
dGFiYXNlczsKCWZvciAoVUludDE2IGlpID0gMDsgaWkgPCBudW1EYXRhYmFzZXM7ICsraWkpCgl7
CgkJIAoKCQlMb2NhbElECQkJCQkJZGJJRCA9IGRpci5kYXRhYmFzZUlEW2lpXS5iYXNlSUQ7CgkJ
ZW11cHRyCQkJCQkJaGRyUCA9IDo6UHJ2TG9jYWxJRFRvUHRyIChkYklEKTsKCQlFbUFsaWFzRGF0
YWJhc2VIZHJUeXBlPFBBUz4JaGRyIChoZHJQKTsKCgkJIAoKCQlpZiAoKGhkci5hdHRyaWJ1dGVz
ICYgMHgwMDAxICkgPT0gMCkKCQkJY29udGludWU7CgoJCSAKCgkJRW1BbGlhc1JlY29yZExpc3RU
eXBlPFBBUz4JcmVjTGlzdCAoaGRyLnJlY29yZExpc3QpOwoKCQkgCgoJCVVJbnQxNgludW1SZWNv
cmRzID0gcmVjTGlzdC5udW1SZWNvcmRzOwoJCWZvciAoVUludDE2IGpqID0gMDsgamogPCBudW1S
ZWNvcmRzOyArK2pqKQoJCXsKCQkJRW1BbGlhc1JzcmNFbnRyeVR5cGU8UEFTPgllbnRyeSAocmVj
TGlzdC5yZXNvdXJjZXNbampdKTsKCgkJCSAKCgkJCUxvY2FsSUQJZW50cnlMb2NhbElEID0gZW50
cnkubG9jYWxDaHVua0lEOwoJCQllbXVwdHIJcmVzb3VyY2VQID0gOjpQcnZMb2NhbElEVG9QdHIg
KGVudHJ5TG9jYWxJRCk7CgoJCQkgCgkJCSAKCgkJCWNvbnN0IEVtUGFsbUhlYXAqCWhlYXAgPSBF
bVBhbG1IZWFwOjpHZXRIZWFwQnlQdHIgKChNZW1QdHIpIHJlc291cmNlUCk7CgoJCQkgCgoJCQko
KHZvaWQpIDApIDsKCgkJCWlmICghaGVhcCkKCQkJCWNvbnRpbnVlOwoKCQkJIAoKCQkJRW1QYWxt
Q2h1bmsJY2h1bmsgKCpoZWFwLCByZXNvdXJjZVAgLSBoZWFwLT5DaHVua0hlYWRlclNpemUgKCkp
OwoKCQkJaWYgKCFjaHVuay5Cb2R5Q29udGFpbnMgKHBjKSkKCQkJCWNvbnRpbnVlOwoKCQkJIAoJ
CQkgCgoJCQlVSW50MzIJdHlwZQk9IGhkci50eXBlOwoJCQlVSW50MzIJY3JlYXRvcgk9IGhkci5j
cmVhdG9yOwoJCQlCb29sCW9rVHlwZQk9IDo6UHJ2SXNTeXN0ZW1EYXRhYmFzZSAodHlwZSwgY3Jl
YXRvcik7CgoJCQlnSGF2ZUxhc3RDaHVuawk9IHRydWU7CgkJCWdMYXN0Q2h1bmsJCT0gRW1UYWdn
ZWRQYWxtQ2h1bmsgKGNodW5rLCBva1R5cGUpOwoKCQkJOjpQcnZBZGRUYWdnZWRDaHVuayAoZ0xh
c3RDaHVuayk7CgoJCQkgCgoJCQlyZXR1cm47CgkJfQoJfQp9CgoKIAogCiAKIAoKQm9vbCBNZXRh
TWVtb3J5OjpJblJBTU9TQ29tcG9uZW50IChlbXVwdHIgcGMpCnsKCSAKCglpZiAoQ0VuYWJsZUZ1
bGxBY2Nlc3M6OkFjY2Vzc09LICgpKQoJCXJldHVybiB0cnVlOwoKCSAKCSAKCglpZiAoIShnSGF2
ZUxhc3RDaHVuayAmJiBnTGFzdENodW5rLkJvZHlDb250YWlucyAocGMpKSkKCXsKCQkgCgkJIAoK
CQk6OlBydkxvYWRUYWdnZWRDaHVuayAocGMpOwoKCQlpZiAoIShnSGF2ZUxhc3RDaHVuayAmJiBn
TGFzdENodW5rLkJvZHlDb250YWlucyAocGMpKSkKCQl7CgkJCSAKCQkJIAoKCQkJOjpQcnZTZWFy
Y2hGb3JDb2RlQ2h1bmsgKHBjKTsKCgkJCSAKCQkJIAoJCQkgCgoJCQlpZiAoIShnSGF2ZUxhc3RD
aHVuayAmJiBnTGFzdENodW5rLkJvZHlDb250YWlucyAocGMpKSkKCQkJewoJCQkJcmV0dXJuIGZh
bHNlOwoJCQl9CgkJfQoJfQoKCSAKCglyZXR1cm4gZ0xhc3RDaHVuay5mSXNTeXN0ZW1DaHVuazsK
fQo=


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

end of thread, other threads:[~2002-09-13 22:44 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-09-13 15:44 c++/7631: gcc 2.95.3 crashes when compiling a file in the Palm OS emulator nathan
  -- strict thread matches above, loose matches on Subject: below --
2002-08-19  4:02 joele, at, uma, dot, com

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).