c/700: Internal compiler error while building PINE 4.30 on SPARC-Solaris

mark@moxienet.com mark@moxienet.com
Fri Oct 27 15:06:00 GMT 2000


>Number:         700
>Category:       c
>Synopsis:       Internal compiler error while building PINE 4.30 on SPARC-Solaris
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Oct 27 15:06:01 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     mark@moxienet.com
>Release:        gcc-2.95.2(19991024 release) and gcc-2.97(20001026 experimental)
>Organization:
>Environment:
sparc-sun-solaris2.7 and sparc-sun-solaris2.8
>Description:
While building PINE 4.30 ( ftp://ftp.cac.washington.edu/pine/ ), gcc fails with an internal compiler error on mbx.c.

> gcc -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/2.97/specs
Configured with:  --enable-shared --enable-multilib --enable-languages=c
gcc version 2.97 20001026 (experimental)
> gcc -save-temps -c mbx.c -o mbx.o
mbx.c: In function `mbx_hdrpos':
mbx.c:1371: Unrecognizable insn:
(insn 110 108 112 (set (reg:SI 132)
        (minus:SI (const_int 4 [0x4])
            (const_int -4096 [0xfffff000]))) -1 (nil)
    (nil))
mbx.c:1371: Internal compiler error in , at recog.c:2162
   Please submit a full bug report.
   See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.

and

> gcc -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.7/2.95.2/specs
gcc version 2.95.2 19991024 (release)
> gcc -save-temps -c mbx.c -o mbx.o
mbx.c: In function `mbx_hdrpos':
mbx.c:1371: internal error--unrecognizable insn:
(insn 102 100 104 (set (reg:SI 130)
        (minus:SI (const_int 4 [0x4])
            (const_int -4096 [0xfffff000]))) -1 (nil)
    (nil))

Preprocessed mbx.i from gcc 20001026 included.
>How-To-Repeat:
get and unpack ftp://ftp.cac.washington.edu/pine/pine4.30.tar.gz
cd pine4.30/imap/c-client
gcc -c mbx.c -o mbx.o
>Fix:

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

IyAxICJtYnguYyINIyAyMiAibWJ4LmMiDSMgMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDEgMw0j
IDE3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMw0NDQ0jcHJhZ21hIGlkZW50ICJAKCMpc3RkaW8u
aAkxLjc4CTk5LzEyLzA4IFNNSSIgDQ0jIDEgIi91c3IvaW5jbHVkZS9pc28vc3RkaW9faXNvLmgi
IDEgMw0jIDI5ICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAzDQ0NDSNwcmFnbWEgaWRl
bnQgIkAoIylzdGRpb19pc28uaAkxLjIJOTkvMTAvMjUgU01JIg0NDSMgMSAiL3Vzci9pbmNsdWRl
L3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMw0jIDEwICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVf
dGVzdHMuaCIgMw0NDQ0jcHJhZ21hIGlkZW50ICJAKCMpZmVhdHVyZV90ZXN0cy5oCTEuMTgJOTkv
MDcvMjYgU01JIg0NIyAxICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDEgMw0NDQ0NDQ0N
DSNwcmFnbWEgaWRlbnQgIkAoIylpc2FfZGVmcy5oCTEuMjAJOTkvMDUvMDQgU01JIg0jIDE1NyAi
L3Vzci9pbmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAzDQ0NIyAxNjggIi91c3IvaW5jbHVkZS9zeXMv
aXNhX2RlZnMuaCIgMw0jIDE5NCAiL3Vzci9pbmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAzDQ0NIyAy
MDggIi91c3IvaW5jbHVkZS9zeXMvaXNhX2RlZnMuaCIgMw0NDQ0NDQ0NIyAyNDEgIi91c3IvaW5j
bHVkZS9zeXMvaXNhX2RlZnMuaCIgMw0NDSMgMjY3ICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZz
LmgiIDMNDQ0NDQ0NDQ0NDQ0NDQ0jIDI4OSAiL3Vzci9pbmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAz
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
IyAzNTkgIi91c3IvaW5jbHVkZS9zeXMvaXNhX2RlZnMuaCIgMw0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0jIDE2ICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVfdGVzdHMuaCIgMiAzDQ0NDSMgMzAg
Ii91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAzDQ0NIyA2MyAiL3Vzci9pbmNsdWRl
L3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDMNDQ0NDQ0NDQ0NDSMgODcgIi91c3IvaW5jbHVkZS9zeXMv
ZmVhdHVyZV90ZXN0cy5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0NIyAxMTkgIi91c3IvaW5jbHVkZS9zeXMv
ZmVhdHVyZV90ZXN0cy5oIiAzDQ0NIyAxMzggIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0
cy5oIiAzDQ0NDQ0NDSMgMTYyICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVfdGVzdHMuaCIgMw0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NIyAzNiAiL3Vzci9pbmNsdWRlL2lzby9zdGRpb19pc28uaCIg
MiAzDSMgMSAiL3Vzci9pbmNsdWRlL3N5cy92YV9saXN0LmgiIDEgMw0NDQ0NDQ0NDSNwcmFnbWEg
aWRlbnQgIkAoIyl2YV9saXN0LmgJMS4xMgk5OS8wNS8wNCBTTUkiDSMgMjEgIi91c3IvaW5jbHVk
ZS9zeXMvdmFfbGlzdC5oIiAzDQ0NDQ0NdHlwZWRlZiB2b2lkICpfX3ZhX2xpc3Q7DQ0NDQ0NDQ0N
IyAzNyAiL3Vzci9pbmNsdWRlL2lzby9zdGRpb19pc28uaCIgMiAzDSMgMSAiL3Vzci9pbmNsdWRl
L3N0ZGlvX3RhZy5oIiAxIDMNDQ0NDQ0NDQ0jcHJhZ21hIGlkZW50ICJAKCMpc3RkaW9fdGFnLmgJ
MS4zCTk4LzA0LzIwIFNNSSINDQ0NDQ0NDQ0NDQ10eXBlZGVmIHN0cnVjdCBfX0ZJTEUgX19GSUxF
Ow0NDQ0NDQ0jIDM4ICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAyIDMNIyAxICIvdXNy
L2luY2x1ZGUvc3RkaW9faW1wbC5oIiAxIDMNDQ0NDQ0NDQ0jcHJhZ21hIGlkZW50ICJAKCMpc3Rk
aW9faW1wbC5oCTEuOAk5OS8wNi8xMCBTTUkiDQ0NDQ0NDQ0NDQ0NDXR5cGVkZWYgaW50IHNzaXpl
X3Q7DQ0NDQ0NDQ0NDQ0NDQ0NDXN0cnVjdCBfX0ZJTEUNew0NDQ0NICAgICAgICBzc2l6ZV90IF9j
bnQ7DSAgICAgICAgdW5zaWduZWQgY2hhciAqX3B0cjsNDSAgICAgICAgdW5zaWduZWQgY2hhciAq
X2Jhc2U7DSAgICAgICAgdW5zaWduZWQgY2hhciBfZmxhZzsNICAgICAgICB1bnNpZ25lZCBjaGFy
IF9maWxlOw0gICAgICAgIHVuc2lnbmVkIF9fb3JpZW50YXRpb246MjsNICAgICAgICB1bnNpZ25l
ZCBfX2lvbm9sb2NrOjE7DSAgICAgICAgdW5zaWduZWQgX19maWxsZXI6NTsNfTsNDQ0NDQ0NDSMg
MzkgIi91c3IvaW5jbHVkZS9pc28vc3RkaW9faXNvLmgiIDIgMw0jIDQ4ICIvdXNyL2luY2x1ZGUv
aXNvL3N0ZGlvX2lzby5oIiAzDQ0NDQ0NDQ0NDQ0NdHlwZWRlZiBsb25nIGxvbmcgX19sb25nbG9u
Z190Ow0NDQ0NDQ0NDQ0NDQ0NDQ10eXBlZGVmIF9fRklMRSBGSUxFOw0NDQ0NDQ0NdHlwZWRlZiB1
bnNpZ25lZCBpbnQgc2l6ZV90Ow0NDQ0NdHlwZWRlZiBsb25nIGZwb3NfdDsNDQ0NDQ0NDQ0NDQ0N
DQ0NDSMgMTEzICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ1leHRlcm4gX19GSUxFIF9faW9iWzIwXTsNDQ0NDQ0NDQ0NDQ0N
DQ0NDWV4dGVybiBpbnQgcmVtb3ZlKGNvbnN0IGNoYXIgKik7DWV4dGVybiBpbnQgcmVuYW1lKGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsNZXh0ZXJuIEZJTEUgKnRtcGZpbGUodm9pZCk7DWV4
dGVybiBjaGFyICp0bXBuYW0oY2hhciAqKTsNZXh0ZXJuIGludCBmY2xvc2UoRklMRSAqKTsNZXh0
ZXJuIGludCBmZmx1c2goRklMRSAqKTsNZXh0ZXJuIEZJTEUgKmZvcGVuKGNvbnN0IGNoYXIgKiwg
Y29uc3QgY2hhciAqKTsNZXh0ZXJuIEZJTEUgKmZyZW9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBj
aGFyICosIEZJTEUgKik7DWV4dGVybiB2b2lkIHNldGJ1ZihGSUxFICosIGNoYXIgKik7DWV4dGVy
biBpbnQgc2V0dmJ1ZihGSUxFICosIGNoYXIgKiwgaW50LCBzaXplX3QpOw0NZXh0ZXJuIGludCBm
cHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOw0NZXh0ZXJuIGludCBmc2NhbmYoRklM
RSAqLCBjb25zdCBjaGFyICosIC4uLik7DQ1leHRlcm4gaW50IHByaW50Zihjb25zdCBjaGFyICos
IC4uLik7DQ1leHRlcm4gaW50IHNjYW5mKGNvbnN0IGNoYXIgKiwgLi4uKTsNDWV4dGVybiBpbnQg
c3ByaW50ZihjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsNDWV4dGVybiBpbnQgc3NjYW5mKGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOw1leHRlcm4gaW50IHZmcHJpbnRmKEZJTEUg
KiwgY29uc3QgY2hhciAqLCBfX3ZhX2xpc3QpOw1leHRlcm4gaW50IHZwcmludGYoY29uc3QgY2hh
ciAqLCBfX3ZhX2xpc3QpOw1leHRlcm4gaW50IHZzcHJpbnRmKGNoYXIgKiwgY29uc3QgY2hhciAq
LCBfX3ZhX2xpc3QpOw1leHRlcm4gaW50IGZnZXRjKEZJTEUgKik7DWV4dGVybiBjaGFyICpmZ2V0
cyhjaGFyICosIGludCwgRklMRSAqKTsNZXh0ZXJuIGludCBmcHV0YyhpbnQsIEZJTEUgKik7DWV4
dGVybiBpbnQgZnB1dHMoY29uc3QgY2hhciAqLCBGSUxFICopOw0NDWV4dGVybiBpbnQgZ2V0YyhG
SUxFICopOw1leHRlcm4gaW50IHB1dGMoaW50LCBGSUxFICopOw0NDQ1leHRlcm4gaW50IGdldGNo
YXIodm9pZCk7DWV4dGVybiBpbnQgcHV0Y2hhcihpbnQpOw0NZXh0ZXJuIGNoYXIgKmdldHMoY2hh
ciAqKTsNZXh0ZXJuIGludCBwdXRzKGNvbnN0IGNoYXIgKik7DWV4dGVybiBpbnQgdW5nZXRjKGlu
dCwgRklMRSAqKTsNZXh0ZXJuIHNpemVfdCBmcmVhZCh2b2lkICosIHNpemVfdCwgc2l6ZV90LCBG
SUxFICopOw1leHRlcm4gc2l6ZV90IGZ3cml0ZShjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90
LCBGSUxFICopOw1leHRlcm4gaW50IGZnZXRwb3MoRklMRSAqLCBmcG9zX3QgKik7DWV4dGVybiBp
bnQgZnNlZWsoRklMRSAqLCBsb25nLCBpbnQpOw1leHRlcm4gaW50IGZzZXRwb3MoRklMRSAqLCBj
b25zdCBmcG9zX3QgKik7DWV4dGVybiBsb25nIGZ0ZWxsKEZJTEUgKik7DWV4dGVybiB2b2lkIHJl
d2luZChGSUxFICopOw0NDWV4dGVybiB2b2lkIGNsZWFyZXJyKEZJTEUgKik7DWV4dGVybiBpbnQg
ZmVvZihGSUxFICopOw1leHRlcm4gaW50IGZlcnJvcihGSUxFICopOw0NZXh0ZXJuIHZvaWQgcGVy
cm9yKGNvbnN0IGNoYXIgKik7DQ0NZXh0ZXJuIGludCBfX2ZpbGJ1ZihGSUxFICopOw1leHRlcm4g
aW50IF9fZmxzYnVmKGludCwgRklMRSAqKTsNDQ0jIDI3MCAiL3Vzci9pbmNsdWRlL2lzby9zdGRp
b19pc28uaCIgMw0NDQ0NDQ0NDQ0NDQ0NDQ0NDSMgMjk1ICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGlv
X2lzby5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NIyAy
MyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMw0jIDM2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
Mw0jIDgxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMw0NDQ0NDQ0NDQ0NdHlwZWRlZiBsb25nIG9m
Zl90Ow0NDQ0NDQ0NdHlwZWRlZiBfX2xvbmdsb25nX3Qgb2ZmNjRfdDsNDQ0NDQ0NDQ0NdHlwZWRl
ZiBfX2xvbmdsb25nX3QgZnBvczY0X3Q7DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDWV4dGVy
biB1bnNpZ25lZCBjaGFyIF9zaWJ1ZltdLCBfc29idWZbXTsNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ1leHRlcm4gdW5zaWduZWQgY2hhciAqX2J1ZmVuZHRhYltdOw1l
eHRlcm4gRklMRSAqX2xhc3RidWY7DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ1l
eHRlcm4gdm9pZCBzZXRidWZmZXIoRklMRSAqLCBjaGFyICosIHNpemVfdCk7DWV4dGVybiBpbnQg
c2V0bGluZWJ1ZihGSUxFICopOw0NDQ0NDWV4dGVybiBpbnQgc25wcmludGYoY2hhciAqLCBzaXpl
X3QsIGNvbnN0IGNoYXIgKiwgLi4uKTsNDQ0NDWV4dGVybiBpbnQgdnNucHJpbnRmKGNoYXIgKiwg
c2l6ZV90LCBjb25zdCBjaGFyICosIF9fdmFfbGlzdCk7DQ0NDQ0NDQ0NZXh0ZXJuIEZJTEUgKmZk
b3BlbihpbnQsIGNvbnN0IGNoYXIgKik7DWV4dGVybiBjaGFyICpjdGVybWlkKGNoYXIgKik7DWV4
dGVybiBpbnQgZmlsZW5vKEZJTEUgKik7DQ0NDQ0NDSMgMjU1ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMw0NDQ0NDQ0NZXh0ZXJuIEZJTEUgKnBvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
KTsNZXh0ZXJuIGNoYXIgKmN1c2VyaWQoY2hhciAqKTsNZXh0ZXJuIGNoYXIgKnRlbXBuYW0oY29u
c3QgY2hhciAqLCBjb25zdCBjaGFyICopOw1leHRlcm4gaW50IGdldG9wdChpbnQsIGNoYXIgKmNv
bnN0ICosIGNvbnN0IGNoYXIgKik7DQ1leHRlcm4gaW50IGdldHN1Ym9wdChjaGFyICoqLCBjaGFy
ICpjb25zdCAqLCBjaGFyICoqKTsNDWV4dGVybiBjaGFyICpvcHRhcmc7DWV4dGVybiBpbnQgb3B0
aW5kLCBvcHRlcnIsIG9wdG9wdDsNZXh0ZXJuIGludCBnZXR3KEZJTEUgKik7DWV4dGVybiBpbnQg
cHV0dyhpbnQsIEZJTEUgKik7DWV4dGVybiBpbnQgcGNsb3NlKEZJTEUgKik7DQ0NDQ0NDQ1leHRl
cm4gaW50IGZzZWVrbyhGSUxFICosIG9mZl90LCBpbnQpOw1leHRlcm4gb2ZmX3QgZnRlbGxvKEZJ
TEUgKik7DQ0NDQ0NDQ0NZXh0ZXJuIEZJTEUgKmZvcGVuNjQoY29uc3QgY2hhciAqLCBjb25zdCBj
aGFyICopOw1leHRlcm4gRklMRSAqZnJlb3BlbjY0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq
LCBGSUxFICopOw1leHRlcm4gRklMRSAqdG1wZmlsZTY0KHZvaWQpOw1leHRlcm4gaW50IGZnZXRw
b3M2NChGSUxFICosIGZwb3M2NF90ICopOw1leHRlcm4gaW50IGZzZXRwb3M2NChGSUxFICosIGNv
bnN0IGZwb3M2NF90ICopOw1leHRlcm4gaW50IGZzZWVrbzY0KEZJTEUgKiwgb2ZmNjRfdCwgaW50
KTsNZXh0ZXJuIG9mZjY0X3QgZnRlbGxvNjQoRklMRSAqKTsNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0jIDMzMyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DSMgMzY0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMw0NDQ0NDQ0NDQ0jIDM4MSAiL3Vzci9pbmNs
dWRlL3N0ZGlvLmgiIDMNIyAzODkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzDQ0NDQ0NDQ0NDQ0N
DSMgMjMgIm1ieC5jIiAyDSMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMw0jIDEzICIvdXNy
L2luY2x1ZGUvY3R5cGUuaCIgMw0NDQ0jcHJhZ21hIGlkZW50ICJAKCMpY3R5cGUuaAkxLjMzCTk5
LzA4LzEwIFNNSSIgDQ0jIDEgIi91c3IvaW5jbHVkZS9pc28vY3R5cGVfaXNvLmgiIDEgMw0jIDI1
ICIvdXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAzDQ0NDSNwcmFnbWEgaWRlbnQgIkAoIylj
dHlwZV9pc28uaAkxLjEJOTkvMDgvMDkgU01JIiANDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDWV4dGVybiBpbnQgaXNhbG51bShpbnQpOw1leHRlcm4gaW50IGlzYWxwaGEoaW50KTsN
ZXh0ZXJuIGludCBpc2NudHJsKGludCk7DWV4dGVybiBpbnQgaXNkaWdpdChpbnQpOw1leHRlcm4g
aW50IGlzZ3JhcGgoaW50KTsNZXh0ZXJuIGludCBpc2xvd2VyKGludCk7DWV4dGVybiBpbnQgaXNw
cmludChpbnQpOw1leHRlcm4gaW50IGlzcHVuY3QoaW50KTsNZXh0ZXJuIGludCBpc3NwYWNlKGlu
dCk7DWV4dGVybiBpbnQgaXN1cHBlcihpbnQpOw1leHRlcm4gaW50IGlzeGRpZ2l0KGludCk7DQ0N
DQ0NDQ1leHRlcm4gaW50IHRvbG93ZXIoaW50KTsNZXh0ZXJuIGludCB0b3VwcGVyKGludCk7DQ0N
DQ0NZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX19jdHlwZVtdOw1leHRlcm4gdW5zaWduZWQgaW50ICpf
X2N0eXBlX21hc2s7DWV4dGVybiBpbnQgKl9fdHJhbnNfdXBwZXI7DWV4dGVybiBpbnQgKl9fdHJh
bnNfbG93ZXI7DQ0NDQ0NDSMgMTEyICIvdXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAzDSMg
MTI1ICIvdXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAzDQ0NDQ0NDSMgMTQ0ICIvdXNyL2lu
Y2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NIyAxODEgIi91
c3IvaW5jbHVkZS9pc28vY3R5cGVfaXNvLmgiIDMNDQ0NDQ0NDQ0jIDE5ICIvdXNyL2luY2x1ZGUv
Y3R5cGUuaCIgMiAzDQ0NDQ0NIyAzOCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMNDQ0NDQ0NDQ0N
DQ1leHRlcm4gaW50IGlzYXNjaWkoaW50KTsNZXh0ZXJuIGludCB0b2FzY2lpKGludCk7DWV4dGVy
biBpbnQgX3RvbG93ZXIoaW50KTsNZXh0ZXJuIGludCBfdG91cHBlcihpbnQpOw0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NIyAyNCAibWJ4LmMiIDINIyAxICIvdXNyL2lu
Y2x1ZGUvZXJybm8uaCIgMSAzDSMgMTQgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAzDQ0NDSNwcmFn
bWEgaWRlbnQgIkAoIyllcnJuby5oCTEuMTYJOTkvMDcvMjYgU01JIiANDQ0NDQ0jIDEgIi91c3Iv
aW5jbHVkZS9zeXMvZXJybm8uaCIgMSAzDQ0NDQ0NDQ0NDQ0jcHJhZ21hIGlkZW50ICJAKCMpZXJy
bm8uaAkxLjIwCTAwLzAyLzE0IFNNSSIgDSMgMzQgIi91c3IvaW5jbHVkZS9zeXMvZXJybm8uaCIg
Mw0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDSMgMjQgIi91
c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMNDQ0NDQ0NDQ0NDQ0NDQ0NDQ1leHRlcm4gaW50IGVycm5v
Ow0NDQ0NDQ0NDQ0NIyAyNSAibWJ4LmMiIDINZXh0ZXJuIGludCBlcnJubzsNIyAxICJtYWlsLmgi
IDENIyAyMyAibWFpbC5oIg0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDXN0cnVjdCBtYWlsX3NpemVkdGV4dCB7DSAg
dW5zaWduZWQgY2hhciAqZGF0YTsNICB1bnNpZ25lZCBsb25nIHNpemU7DX07DQ0NDQ0NDXN0cnVj
dCBzdHJpbmdfbGlzdCB7DSAgc3RydWN0IG1haWxfc2l6ZWR0ZXh0IHRleHQ7DSAgc3RydWN0IHN0
cmluZ19saXN0ICpuZXh0Ow19Ow0NDQ0NDQ0NDXR5cGVkZWYgc3RydWN0IG5ldF9tYWlsYm94IHsN
ICBjaGFyIGhvc3RbNjVdOw0gIGNoYXIgb3JpZ2hvc3RbNjVdOw0gIGNoYXIgdXNlcls2NV07DSAg
Y2hhciBhdXRodXNlcls2NV07DSAgY2hhciBtYWlsYm94WygxMDI0LzQpXTsNICBjaGFyIHNlcnZp
Y2VbMjFdOw0gIHVuc2lnbmVkIGxvbmcgcG9ydDsNICB1bnNpZ25lZCBpbnQgYW5vZmxhZyA6IDE7
DSAgdW5zaWduZWQgaW50IGRiZ2ZsYWcgOiAxOw0gIHVuc2lnbmVkIGludCBzZWNmbGFnIDogMTsN
ICB1bnNpZ25lZCBpbnQgYWx0ZmxhZyA6IDE7DSAgdW5zaWduZWQgaW50IHRyeWFsdGZsYWcgOiAx
Ow0gIHVuc2lnbmVkIGludCBhbHRvcHQgOiAxOw19IE5FVE1CWDsNDQ0NDQ1zdHJ1Y3QgbWFpbF9h
ZGRyZXNzIHsNICBjaGFyICpwZXJzb25hbDsNICBjaGFyICphZGw7DSAgY2hhciAqbWFpbGJveDsN
ICBjaGFyICpob3N0Ow0gIGNoYXIgKmVycm9yOw0gIHN0cnVjdCBtYWlsX2FkZHJlc3MgKm5leHQ7
DX07DQ0NDQ10eXBlZGVmIHN0cnVjdCBtYWlsX2VudmVsb3BlIHsNICB1bnNpZ25lZCBpbnQgbmdi
b2d1cyA6IDE7DSAgdW5zaWduZWQgaW50IGluY29tcGxldGUgOiAxOw0gIGNoYXIgKnJlbWFpbDsN
ICBzdHJ1Y3QgbWFpbF9hZGRyZXNzICpyZXR1cm5fcGF0aDsNICBjaGFyICpkYXRlOw0gIHN0cnVj
dCBtYWlsX2FkZHJlc3MgKmZyb207DSAgc3RydWN0IG1haWxfYWRkcmVzcyAqc2VuZGVyOw0gIHN0
cnVjdCBtYWlsX2FkZHJlc3MgKnJlcGx5X3RvOw0gIGNoYXIgKnN1YmplY3Q7DSAgc3RydWN0IG1h
aWxfYWRkcmVzcyAqdG87DSAgc3RydWN0IG1haWxfYWRkcmVzcyAqY2M7DSAgc3RydWN0IG1haWxf
YWRkcmVzcyAqYmNjOw0gIGNoYXIgKmluX3JlcGx5X3RvOw0gIGNoYXIgKm1lc3NhZ2VfaWQ7DSAg
Y2hhciAqbmV3c2dyb3VwczsNICBjaGFyICpmb2xsb3d1cF90bzsNICBjaGFyICpyZWZlcmVuY2Vz
Ow0gIHZvaWQgKnNwYXJlcDsNfSBFTlZFTE9QRTsNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0Nc3RydWN0IG1haWxfYm9keV90ZXh0IHsNICB1bnNpZ25lZCBsb25nIG9mZnNl
dDsNICBzdHJ1Y3QgbWFpbF9zaXplZHRleHQgdGV4dDsNfTsNDQ0NDXN0cnVjdCBtYWlsX2JvZHlz
dHJ1Y3Qgew0gIHVuc2lnbmVkIHNob3J0IHR5cGU7DSAgdW5zaWduZWQgc2hvcnQgZW5jb2Rpbmc7
DSAgY2hhciAqc3VidHlwZTsNICBzdHJ1Y3QgbWFpbF9ib2R5X3BhcmFtZXRlciAqcGFyYW1ldGVy
Ow0gIGNoYXIgKmlkOw0gIGNoYXIgKmRlc2NyaXB0aW9uOw0gIHN0cnVjdCB7DSAgICBjaGFyICp0
eXBlOw0gICAgc3RydWN0IG1haWxfYm9keV9wYXJhbWV0ZXIgKnBhcmFtZXRlcjsNICB9IGRpc3Bv
c2l0aW9uOw0gIHN0cnVjdCBzdHJpbmdfbGlzdCAqbGFuZ3VhZ2U7DSAgc3RydWN0IG1haWxfYm9k
eV90ZXh0IG1pbWU7DSAgc3RydWN0IG1haWxfYm9keV90ZXh0IGNvbnRlbnRzOw0gIHVuaW9uIHsN
ICAgIHN0cnVjdCBtYWlsX2JvZHlfcGFydCAqcGFydDsNICAgIHN0cnVjdCBtYWlsX2JvZHlfbWVz
c2FnZSAqbXNnOw0gIH0gbmVzdGVkOw0gIHN0cnVjdCB7DSAgICB1bnNpZ25lZCBsb25nIGxpbmVz
Ow0gICAgdW5zaWduZWQgbG9uZyBieXRlczsNICB9IHNpemU7DSAgY2hhciAqbWQ1Ow19Ow0NDQ0N
c3RydWN0IG1haWxfYm9keV9wYXJhbWV0ZXIgew0gIGNoYXIgKmF0dHJpYnV0ZTsNICBjaGFyICp2
YWx1ZTsNICBzdHJ1Y3QgbWFpbF9ib2R5X3BhcmFtZXRlciAqbmV4dDsNfTsNDQ0NDXN0cnVjdCBt
YWlsX2JvZHlfcGFydCB7DSAgc3RydWN0IG1haWxfYm9keXN0cnVjdCBib2R5Ow0gIHN0cnVjdCBt
YWlsX2JvZHlfcGFydCAqbmV4dDsNfTsNDQ0NDXN0cnVjdCBtYWlsX2JvZHlfbWVzc2FnZSB7DSAg
RU5WRUxPUEUgKmVudjsNICBzdHJ1Y3QgbWFpbF9ib2R5c3RydWN0ICpib2R5Ow0gIHN0cnVjdCBt
YWlsX2JvZHlfdGV4dCBmdWxsOw0gIHN0cnVjdCBzdHJpbmdfbGlzdCAqbGluZXM7DSAgc3RydWN0
IG1haWxfYm9keV90ZXh0IGhlYWRlcjsNICBzdHJ1Y3QgbWFpbF9ib2R5X3RleHQgdGV4dDsNfTsN
DQ0NdHlwZWRlZiBzdHJ1Y3QgbWVzc2FnZV9jYWNoZSB7DSAgdW5zaWduZWQgbG9uZyBtc2dubzsN
ICB1bnNpZ25lZCBpbnQgbG9ja2NvdW50IDogODsNICB1bnNpZ25lZCBsb25nIHJmYzgyMl9zaXpl
Ow0gIHN0cnVjdCB7DSAgICB1bnNpZ25lZCBsb25nIHVpZDsNICAgIHN0cnVjdCBtYWlsX2JvZHlf
dGV4dCBzcGVjaWFsOw0gICAgc3RydWN0IG1haWxfYm9keV9tZXNzYWdlIG1zZzsNICAgIHVuc2ln
bmVkIGludCBzZXF1ZW5jZSA6IDE7DSAgICB1bnNpZ25lZCBpbnQgZGlydHkgOiAxOw0gICAgdW5z
aWduZWQgbG9uZyBkYXRhOw0gIH0gcHJpdmF0ZTsNDSAgdW5zaWduZWQgaW50IGRheSA6IDU7DSAg
dW5zaWduZWQgaW50IG1vbnRoIDogNDsNICB1bnNpZ25lZCBpbnQgeWVhciA6IDc7DSAgdW5zaWdu
ZWQgaW50IGhvdXJzOiA1Ow0gIHVuc2lnbmVkIGludCBtaW51dGVzOiA2Ow0gIHVuc2lnbmVkIGlu
dCBzZWNvbmRzOiA2Ow0gIHVuc2lnbmVkIGludCB6b2NjaWRlbnQgOiAxOw0gIHVuc2lnbmVkIGlu
dCB6aG91cnMgOiA0Ow0gIHVuc2lnbmVkIGludCB6bWludXRlczogNjsNDSAgdW5zaWduZWQgaW50
IHNlZW4gOiAxOw0gIHVuc2lnbmVkIGludCBkZWxldGVkIDogMTsNICB1bnNpZ25lZCBpbnQgZmxh
Z2dlZCA6IDE7DSAgdW5zaWduZWQgaW50IGFuc3dlcmVkIDogMTsNICB1bnNpZ25lZCBpbnQgZHJh
ZnQgOiAxOw0gIHVuc2lnbmVkIGludCByZWNlbnQgOiAxOw0NICB1bnNpZ25lZCBpbnQgdmFsaWQg
OiAxOw0gIHVuc2lnbmVkIGludCBzZWFyY2hlZCA6IDE7DSAgdW5zaWduZWQgaW50IHNlcXVlbmNl
IDogMTsNDSAgdW5zaWduZWQgaW50IHNwYXJlIDogMTsNICB1bnNpZ25lZCBpbnQgc3BhcmUyIDog
MTsNICB1bnNpZ25lZCBpbnQgc3BhcmUzIDogMTsNICB2b2lkICpzcGFyZXA7DSAgdm9pZCAqbWFp
bGRpcnA7DSAgdW5zaWduZWQgbG9uZyB1c2VyX2ZsYWdzOw19IE1FU1NBR0VDQUNIRTsNDQ0NDQ10
eXBlZGVmIHN0cnVjdCBtYWlsc3RyaW5nIHsNICB2b2lkICpkYXRhOw0gIHVuc2lnbmVkIGxvbmcg
ZGF0YTE7DSAgdW5zaWduZWQgbG9uZyBzaXplOw0gIGNoYXIgKmNodW5rOw0gIHVuc2lnbmVkIGxv
bmcgY2h1bmtzaXplOw0gIHVuc2lnbmVkIGxvbmcgb2Zmc2V0Ow0gIGNoYXIgKmN1cnBvczsNICB1
bnNpZ25lZCBsb25nIGN1cnNpemU7DSAgc3RydWN0IHN0cmluZ19kcml2ZXIgKmR0YjsNfSBTVFJJ
Tkc7DQ0NDQ1zdHJ1Y3Qgc3RyaW5nX2RyaXZlciB7DQ0gIHZvaWQgKCppbml0KSAoU1RSSU5HICpz
LHZvaWQgKmRhdGEsdW5zaWduZWQgbG9uZyBzaXplKTsNDSAgY2hhciAoKm5leHQpIChTVFJJTkcg
KnMpOw0NICB2b2lkICgqc2V0cG9zKSAoU1RSSU5HICpzLHVuc2lnbmVkIGxvbmcgaSk7DX07DQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0Nc3RydWN0IHNlYXJjaF9oZWFkZXIgew0gIHN0cnVjdCBtYWlsX3Np
emVkdGV4dCBsaW5lOw0gIHN0cnVjdCBtYWlsX3NpemVkdGV4dCB0ZXh0Ow0gIHN0cnVjdCBzZWFy
Y2hfaGVhZGVyICpuZXh0Ow19Ow0NDXN0cnVjdCBzZWFyY2hfc2V0IHsNICB1bnNpZ25lZCBsb25n
IGZpcnN0Ow0gIHVuc2lnbmVkIGxvbmcgbGFzdDsNICBzdHJ1Y3Qgc2VhcmNoX3NldCAqbmV4dDsN
fTsNDQ1zdHJ1Y3Qgc2VhcmNoX29yIHsNICBzdHJ1Y3Qgc2VhcmNoX3Byb2dyYW0gKmZpcnN0Ow0g
IHN0cnVjdCBzZWFyY2hfcHJvZ3JhbSAqc2Vjb25kOw0gIHN0cnVjdCBzZWFyY2hfb3IgKm5leHQ7
DX07DQ0Nc3RydWN0IHNlYXJjaF9wZ21fbGlzdCB7DSAgc3RydWN0IHNlYXJjaF9wcm9ncmFtICpw
Z207DSAgc3RydWN0IHNlYXJjaF9wZ21fbGlzdCAqbmV4dDsNfTsNDXN0cnVjdCBzZWFyY2hfcHJv
Z3JhbSB7DSAgc3RydWN0IHNlYXJjaF9zZXQgKm1zZ25vOw0gIHN0cnVjdCBzZWFyY2hfc2V0ICp1
aWQ7DSAgc3RydWN0IHNlYXJjaF9vciAqb3I7DSAgc3RydWN0IHNlYXJjaF9wZ21fbGlzdCAqbm90
Ow0gIHN0cnVjdCBzZWFyY2hfaGVhZGVyICpoZWFkZXI7DSAgc3RydWN0IHN0cmluZ19saXN0ICpi
Y2M7DSAgc3RydWN0IHN0cmluZ19saXN0ICpib2R5Ow0gIHN0cnVjdCBzdHJpbmdfbGlzdCAqY2M7
DSAgc3RydWN0IHN0cmluZ19saXN0ICpmcm9tOw0gIHN0cnVjdCBzdHJpbmdfbGlzdCAqa2V5d29y
ZDsNICBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKnVua2V5d29yZDsNICBzdHJ1Y3Qgc3RyaW5nX2xpc3Qg
KnN1YmplY3Q7DSAgc3RydWN0IHN0cmluZ19saXN0ICp0ZXh0Ow0gIHN0cnVjdCBzdHJpbmdfbGlz
dCAqdG87DSAgdW5zaWduZWQgbG9uZyBsYXJnZXI7DSAgdW5zaWduZWQgbG9uZyBzbWFsbGVyOw0g
IHVuc2lnbmVkIHNob3J0IHNlbnRiZWZvcmU7DSAgdW5zaWduZWQgc2hvcnQgc2VudG9uOw0gIHVu
c2lnbmVkIHNob3J0IHNlbnRzaW5jZTsNICB1bnNpZ25lZCBzaG9ydCBiZWZvcmU7DSAgdW5zaWdu
ZWQgc2hvcnQgb247DSAgdW5zaWduZWQgc2hvcnQgc2luY2U7DSAgdW5zaWduZWQgaW50IGFuc3dl
cmVkIDogMTsNICB1bnNpZ25lZCBpbnQgdW5hbnN3ZXJlZCA6IDE7DSAgdW5zaWduZWQgaW50IGRl
bGV0ZWQgOiAxOw0gIHVuc2lnbmVkIGludCB1bmRlbGV0ZWQgOiAxOw0gIHVuc2lnbmVkIGludCBk
cmFmdCA6IDE7DSAgdW5zaWduZWQgaW50IHVuZHJhZnQgOiAxOw0gIHVuc2lnbmVkIGludCBmbGFn
Z2VkIDogMTsNICB1bnNpZ25lZCBpbnQgdW5mbGFnZ2VkIDogMTsNICB1bnNpZ25lZCBpbnQgcmVj
ZW50IDogMTsNICB1bnNpZ25lZCBpbnQgb2xkIDogMTsNICB1bnNpZ25lZCBpbnQgc2VlbiA6IDE7
DSAgdW5zaWduZWQgaW50IHVuc2VlbiA6IDE7DQ0gIHN0cnVjdCBzdHJpbmdfbGlzdCAqcmV0dXJu
X3BhdGg7DSAgc3RydWN0IHN0cmluZ19saXN0ICpzZW5kZXI7DSAgc3RydWN0IHN0cmluZ19saXN0
ICpyZXBseV90bzsNICBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmluX3JlcGx5X3RvOw0gIHN0cnVjdCBz
dHJpbmdfbGlzdCAqbWVzc2FnZV9pZDsNICBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKm5ld3Nncm91cHM7
DSAgc3RydWN0IHN0cmluZ19saXN0ICpmb2xsb3d1cF90bzsNICBzdHJ1Y3Qgc3RyaW5nX2xpc3Qg
KnJlZmVyZW5jZXM7DX07DQ0NDQ10eXBlZGVmIHN0cnVjdCBtYnhfc3RhdHVzIHsNICBsb25nIGZs
YWdzOw0gIHVuc2lnbmVkIGxvbmcgbWVzc2FnZXM7DSAgdW5zaWduZWQgbG9uZyByZWNlbnQ7DSAg
dW5zaWduZWQgbG9uZyB1bnNlZW47DSAgdW5zaWduZWQgbG9uZyB1aWRuZXh0Ow0gIHVuc2lnbmVk
IGxvbmcgdWlkdmFsaWRpdHk7DX0gTUFJTFNUQVRVUzsNDQ0NdHlwZWRlZiB2b2lkICgqcG9zdHNv
cnRfdCkgKHZvaWQgKnNjKTsNDQ0Nc3RydWN0IHNvcnRfcHJvZ3JhbSB7DSAgdW5zaWduZWQgaW50
IHJldmVyc2UgOiAxOw0gIHVuc2lnbmVkIGludCBhYm9ydCA6IDE7DSAgc2hvcnQgZnVuY3Rpb247
DSAgdW5zaWduZWQgbG9uZyBubXNnczsNICBzdHJ1Y3Qgew0gICAgdW5zaWduZWQgbG9uZyBjYWNo
ZWQ7DSAgICB1bnNpZ25lZCBsb25nIHNvcnRlZDsNICAgIHVuc2lnbmVkIGxvbmcgcG9zdHNvcnRl
ZDsNICB9IHByb2dyZXNzOw0gIHBvc3Rzb3J0X3QgcG9zdHNvcnQ7DSAgc3RydWN0IHNvcnRfcHJv
Z3JhbSAqbmV4dDsNfTsNDQ0NDQ0Nc3RydWN0IHNvcnRfY2FjaGUgew0gIHVuc2lnbmVkIGludCBz
b3J0ZWQgOiAxOw0gIHVuc2lnbmVkIGludCBwb3N0c29ydGVkIDogMTsNICB1bnNpZ25lZCBpbnQg
cmVmd2QgOiAxOw0gIHN0cnVjdCBzb3J0X3Byb2dyYW0gKnBnbTsNICB1bnNpZ25lZCBsb25nIG51
bTsNICB1bnNpZ25lZCBsb25nIGRhdGU7DSAgdW5zaWduZWQgbG9uZyBhcnJpdmFsOw0gIHVuc2ln
bmVkIGxvbmcgc2l6ZTsNICBjaGFyICpmcm9tOw0gIGNoYXIgKnRvOw0gIGNoYXIgKmNjOw0gIGNo
YXIgKnN1YmplY3Q7DSAgY2hhciAqbWVzc2FnZV9pZDsNICBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKnJl
ZmVyZW5jZXM7DX07DQ0NDQ0Nc3RydWN0IGFjbF9saXN0IHsNICBjaGFyICppZGVudGlmaWVyOw0g
IGNoYXIgKnJpZ2h0czsNICBzdHJ1Y3QgYWNsX2xpc3QgKm5leHQ7DX07DQ0NDQ0Nc3RydWN0IHF1
b3RhX2xpc3Qgew0gIGNoYXIgKm5hbWU7DSAgdW5zaWduZWQgbG9uZyB1c2FnZTsNICB1bnNpZ25l
ZCBsb25nIGxpbWl0Ow0gIHN0cnVjdCBxdW90YV9saXN0ICpuZXh0Ow19Ow0NDQ0NDQ0NDQ0NDXR5
cGVkZWYgc3RydWN0IG1haWxfc3RyZWFtIHsNICBzdHJ1Y3QgZHJpdmVyICpkdGI7DSAgdm9pZCAq
bG9jYWw7DSAgY2hhciAqbWFpbGJveDsNICB1bnNpZ25lZCBzaG9ydCB1c2U7DSAgdW5zaWduZWQg
c2hvcnQgc2VxdWVuY2U7DSAgdW5zaWduZWQgaW50IGluYm94IDogMTsNICB1bnNpZ25lZCBpbnQg
bG9jayA6IDE7DSAgdW5zaWduZWQgaW50IGRlYnVnIDogMTsNICB1bnNpZ25lZCBpbnQgc2lsZW50
IDogMTsNICB1bnNpZ25lZCBpbnQgcmRvbmx5IDogMTsNICB1bnNpZ25lZCBpbnQgYW5vbnltb3Vz
IDogMTsNICB1bnNpZ25lZCBpbnQgc2NhY2hlIDogMTsNICB1bnNpZ25lZCBpbnQgaGFsZm9wZW4g
OiAxOw0gIHVuc2lnbmVkIGludCBzZWN1cmUgOiAxOw0gIHVuc2lnbmVkIGludCB0cnlhbHQgOiAx
Ow0gIHVuc2lnbmVkIGludCBtdWxuZXdzcmMgOiAxOw0gIHVuc2lnbmVkIGludCBwZXJtX3NlZW4g
OiAxOw0gIHVuc2lnbmVkIGludCBwZXJtX2RlbGV0ZWQgOiAxOw0gIHVuc2lnbmVkIGludCBwZXJt
X2ZsYWdnZWQgOiAxOw0gIHVuc2lnbmVkIGludCBwZXJtX2Fuc3dlcmVkIDoxOw0gIHVuc2lnbmVk
IGludCBwZXJtX2RyYWZ0IDogMTsNICB1bnNpZ25lZCBpbnQga3dkX2NyZWF0ZSA6IDE7DSAgdW5z
aWduZWQgaW50IHVpZF9ub3N0aWNreSA6IDE7DSAgdW5zaWduZWQgbG9uZyBwZXJtX3VzZXJfZmxh
Z3M7DSAgdW5zaWduZWQgbG9uZyBnZW5zeW07DSAgdW5zaWduZWQgbG9uZyBubXNnczsNICB1bnNp
Z25lZCBsb25nIHJlY2VudDsNICB1bnNpZ25lZCBsb25nIHVpZF92YWxpZGl0eTsNICB1bnNpZ25l
ZCBsb25nIHVpZF9sYXN0Ow0gIGNoYXIgKnVzZXJfZmxhZ3NbMzBdOw0gIHVuc2lnbmVkIGxvbmcg
Y2FjaGVzaXplOw0gIE1FU1NBR0VDQUNIRSAqKmNhY2hlOw0gIHN0cnVjdCBzb3J0X2NhY2hlICoq
c2M7DSAgdW5zaWduZWQgbG9uZyBtc2dubzsNICBFTlZFTE9QRSAqZW52Ow0gIHN0cnVjdCBtYWls
X2JvZHlzdHJ1Y3QgKmJvZHk7DSAgc3RydWN0IG1haWxfc2l6ZWR0ZXh0IHRleHQ7DSAgdW5pb24g
ew0gICAgc3RydWN0IHsNICAgICAgc3RydWN0IHN0cmluZ19saXN0ICpzdHJpbmc7DSAgICAgIGxv
bmcgcmVzdWx0Ow0gICAgICBjaGFyICp0ZXh0Ow0gICAgfSBzZWFyY2g7DSAgfSBwcml2YXRlOw19
IE1BSUxTVFJFQU07DQ0NDQ10eXBlZGVmIHN0cnVjdCBtYWlsX3N0cmVhbV9oYW5kbGUgew0gIE1B
SUxTVFJFQU0gKnN0cmVhbTsNICB1bnNpZ25lZCBzaG9ydCBzZXF1ZW5jZTsNfSBNQUlMSEFORExF
Ow0NDQ10eXBlZGVmIHN0cnVjdCBtYWlsX292ZXJ2aWV3IHsNICBjaGFyICpzdWJqZWN0Ow0gIHN0
cnVjdCBtYWlsX2FkZHJlc3MgKmZyb207DSAgY2hhciAqZGF0ZTsNICBjaGFyICptZXNzYWdlX2lk
Ow0gIGNoYXIgKnJlZmVyZW5jZXM7DSAgc3RydWN0IHsNICAgIHVuc2lnbmVkIGxvbmcgb2N0ZXRz
Ow0gICAgdW5zaWduZWQgbG9uZyBsaW5lczsNICAgIGNoYXIgKnhyZWY7DSAgfSBvcHRpb25hbDsN
fSBPVkVSVklFVzsNDQ0NDQ0NDQ0NDQ10eXBlZGVmIHN0cnVjdCBuZXRfc3RyZWFtIHsNICB2b2lk
ICpzdHJlYW07DSAgc3RydWN0IG5ldF9kcml2ZXIgKmR0YjsNfSBORVRTVFJFQU07DQ0NDQ1zdHJ1
Y3QgbmV0X2RyaXZlciB7DSAgdm9pZCAqKCpvcGVuKSAoY2hhciAqaG9zdCxjaGFyICpzZXJ2aWNl
LHVuc2lnbmVkIGxvbmcgcG9ydCk7DSAgdm9pZCAqKCphb3BlbikgKE5FVE1CWCAqbWIsY2hhciAq
c2VydmljZSxjaGFyICp1c3JidWYpOw0gIGNoYXIgKigqZ2V0bGluZSkgKHZvaWQgKnN0cmVhbSk7
DSAgbG9uZyAoKmdldGJ1ZmZlcikgKHZvaWQgKnN0cmVhbSx1bnNpZ25lZCBsb25nIHNpemUsY2hh
ciAqYnVmZmVyKTsNICBsb25nICgqc291dHIpICh2b2lkICpzdHJlYW0sY2hhciAqc3RyaW5nKTsN
ICBsb25nICgqc291dCkgKHZvaWQgKnN0cmVhbSxjaGFyICpzdHJpbmcsdW5zaWduZWQgbG9uZyBz
aXplKTsNICB2b2lkICgqY2xvc2UpICh2b2lkICpzdHJlYW0pOw0gIGNoYXIgKigqaG9zdCkgKHZv
aWQgKnN0cmVhbSk7DSAgY2hhciAqKCpyZW1vdGVob3N0KSAodm9pZCAqc3RyZWFtKTsNICB1bnNp
Z25lZCBsb25nICgqcG9ydCkgKHZvaWQgKnN0cmVhbSk7DSAgY2hhciAqKCpsb2NhbGhvc3QpICh2
b2lkICpzdHJlYW0pOw19Ow0NDQ0NdHlwZWRlZiBzdHJ1Y3QgR0VUU19EQVRBIHsNICBNQUlMU1RS
RUFNICpzdHJlYW07DSAgdW5zaWduZWQgbG9uZyBtc2dubzsNICBjaGFyICp3aGF0Ow0gIHN0cnVj
dCBzdHJpbmdfbGlzdCAqc3RsOw0gIHVuc2lnbmVkIGxvbmcgZmlyc3Q7DSAgdW5zaWduZWQgbG9u
ZyBsYXN0Ow0gIGxvbmcgZmxhZ3M7DX0gR0VUU19EQVRBOw0NDQ0NDQ0NDXR5cGVkZWYgc3RydWN0
IHNlbmRfc3RyZWFtIHsNICBORVRTVFJFQU0gKm5ldHN0cmVhbTsNICBjaGFyICpyZXBseTsNICBs
b25nIHJlcGx5Y29kZTsNICB1bnNpZ25lZCBpbnQgZGVidWcgOiAxOw0gIHVuaW9uIHsNICAgIHN0
cnVjdCB7DSAgICAgIHVuc2lnbmVkIGludCBvayA6IDE7DSAgICAgIHN0cnVjdCB7DSAgICAgICAg
dW5zaWduZWQgaW50IHNlbmQgOiAxOw0gICAgICAgIHVuc2lnbmVkIGludCBzb21sIDogMTsNICAg
ICAgICB1bnNpZ25lZCBpbnQgc2FtbCA6IDE7DSAgICAgICAgdW5zaWduZWQgaW50IGV4cG4gOiAx
Ow0gICAgICAgIHVuc2lnbmVkIGludCBoZWxwIDogMTsNICAgICAgICB1bnNpZ25lZCBpbnQgdHVy
biA6IDE7DSAgICAgICAgdW5zaWduZWQgaW50IGV0cm4gOiAxOw0gICAgICAgIHVuc2lnbmVkIGlu
dCByZWxheSA6IDE7DSAgICAgICAgdW5zaWduZWQgaW50IHBpcGUgOiAxOw0gICAgICAgIHVuc2ln
bmVkIGludCBlbnNjIDogMTsNICAgICAgfSBzZXJ2aWNlOw0gICAgICBzdHJ1Y3Qgew0gICAgICAg
IHVuc2lnbmVkIGludCBvayA6IDE7DSAgICAgICAgdW5zaWduZWQgaW50IHdhbnQgOiAxOw0gICAg
ICB9IGVpZ2h0Yml0Ow0gICAgICBzdHJ1Y3Qgew0gICAgICAgIHVuc2lnbmVkIGludCBvayA6IDE7
DSAgICAgICAgdW5zaWduZWQgaW50IHdhbnQgOiAxOw0gICAgICAgIHN0cnVjdCB7DQ0gICAgICAg
ICAgdW5zaWduZWQgaW50IGZhaWx1cmUgOiAxOw0NICAgICAgICAgIHVuc2lnbmVkIGludCBkZWxh
eSA6IDE7DQ0gICAgICAgICAgdW5zaWduZWQgaW50IHN1Y2Nlc3MgOiAxOw0gICAgICAgIH0gbm90
aWZ5Ow0gICAgICAgIHVuc2lnbmVkIGludCBmdWxsIDogMTsNICAgICAgfSBkc247DSAgICAgIHN0
cnVjdCB7DSAgICAgICAgdW5zaWduZWQgaW50IG9rIDogMTsNICAgICAgICB1bnNpZ25lZCBsb25n
IGxpbWl0Ow0gICAgICB9IHNpemU7DSAgICAgIHVuc2lnbmVkIGxvbmcgYXV0aDsNICAgIH0gZXNt
dHA7DSAgICBzdHJ1Y3Qgew0gICAgICB1bnNpZ25lZCBpbnQgcG9zdCA6IDE7DSAgICB9IG5udHA7
DSAgfSBwcm90b2NvbDsNfSBTRU5EU1RSRUFNOw0NDQ10eXBlZGVmIGxvbmcgKCpyZWFkZm5fdCkg
KHZvaWQgKnN0cmVhbSx1bnNpZ25lZCBsb25nIHNpemUsY2hhciAqYnVmZmVyKTsNdHlwZWRlZiBj
aGFyICooKm1haWxnZXRzX3QpIChyZWFkZm5fdCBmLHZvaWQgKnN0cmVhbSx1bnNpZ25lZCBsb25n
IHNpemUsDSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUU19EQVRBICptZCk7DXR5cGVk
ZWYgY2hhciAqKCpyZWFkcHJvZ3Jlc3NfdCkgKEdFVFNfREFUQSAqbWQsdW5zaWduZWQgbG9uZyBv
Y3RldHMpOw10eXBlZGVmIHZvaWQgKigqbWFpbGNhY2hlX3QpIChNQUlMU1RSRUFNICpzdHJlYW0s
dW5zaWduZWQgbG9uZyBtc2dubyxsb25nIG9wKTsNdHlwZWRlZiBsb25nICgqbWFpbHByb3h5Y29w
eV90KSAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKnNlcXVlbmNlLA0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICptYWlsYm94LGxvbmcgb3B0aW9ucyk7DXR5cGVkZWYgbG9u
ZyAoKnRjcHRpbWVvdXRfdCkgKGxvbmcgb3ZlcmFsbCxsb25nIGxhc3QpOw10eXBlZGVmIHZvaWQg
KigqYXV0aGNoYWxsZW5nZV90KSAodm9pZCAqc3RyZWFtLHVuc2lnbmVkIGxvbmcgKmxlbik7DXR5
cGVkZWYgbG9uZyAoKmF1dGhyZXNwb25kX3QpICh2b2lkICpzdHJlYW0sY2hhciAqcyx1bnNpZ25l
ZCBsb25nIHNpemUpOw10eXBlZGVmIGxvbmcgKCphdXRoY2hlY2tfdCkgKHZvaWQpOw10eXBlZGVm
IGxvbmcgKCphdXRoY2xpZW50X3QpIChhdXRoY2hhbGxlbmdlX3QgY2hhbGxlbmdlciwNICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0aHJlc3BvbmRfdCByZXNwb25kZXIsTkVUTUJYICpt
Yix2b2lkICpzLA0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICp0
cmlhbCxjaGFyICp1c2VyKTsNdHlwZWRlZiBjaGFyICooKmF1dGhyZXNwb25zZV90KSAodm9pZCAq
Y2hhbGxlbmdlLHVuc2lnbmVkIGxvbmcgY2xlbiwNICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyAqcmxlbik7DXR5cGVkZWYgY2hhciAqKCphdXRoc2VydmVyX3Qp
IChhdXRocmVzcG9uc2VfdCByZXNwb25kZXIsaW50IGFyZ2MsY2hhciAqYXJndltdKTsNdHlwZWRl
ZiB2b2lkICgqc210cHZlcmJvc2VfdCkgKGNoYXIgKmJ1ZmZlcik7DXR5cGVkZWYgdm9pZCAoKmlt
YXBlbnZlbG9wZV90KSAoTUFJTFNUUkVBTSAqc3RyZWFtLHVuc2lnbmVkIGxvbmcgbXNnbm8sDSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU5WRUxPUEUgKmVudik7DXR5cGVkZWYgY2hh
ciAqKCppbWFwcmVmZXJyYWxfdCkgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICp1cmwsbG9uZyBj
b2RlKTsNdHlwZWRlZiB2b2lkICgqb3ZlcnZpZXdfdCkgKE1BSUxTVFJFQU0gKnN0cmVhbSx1bnNp
Z25lZCBsb25nIHVpZCxPVkVSVklFVyAqb3YpOw10eXBlZGVmIHVuc2lnbmVkIGxvbmcgKigqc29y
dGVyX3QpIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqY2hhcnNldCwNICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlYXJjaF9wcm9ncmFtICpzcGcsc3RydWN0IHNv
cnRfcHJvZ3JhbSAqcGdtLGxvbmcgZmxhZ3MpOw10eXBlZGVmIHZvaWQgKCpwYXJzZWxpbmVfdCkg
KEVOVkVMT1BFICplbnYsY2hhciAqaGRyLGNoYXIgKmRhdGEsY2hhciAqaG9zdCk7DXR5cGVkZWYg
c3RydWN0IG1haWxfYWRkcmVzcyAqKCpwYXJzZXBocmFzZV90KSAoY2hhciAqcGhyYXNlLGNoYXIg
KmVuZCxjaGFyICpob3N0KTsNdHlwZWRlZiB2b2lkICooKmJsb2Nrbm90aWZ5X3QpIChpbnQgcmVh
c29uLHZvaWQgKmRhdGEpOw10eXBlZGVmIHZvaWQgKCpnZXRhY2xfdCkgKE1BSUxTVFJFQU0gKnN0
cmVhbSxjaGFyICptYWlsYm94LHN0cnVjdCBhY2xfbGlzdCAqYWNsKTsNdHlwZWRlZiB2b2lkICgq
bGlzdHJpZ2h0c190KSAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKm1haWxib3gsY2hhciAqaWQs
DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmFsd2F5c3JpZ2h0cyxzdHJ1Y3Qg
c3RyaW5nX2xpc3QgKnBvc3NpYmxlcmlnaHRzKTsNdHlwZWRlZiB2b2lkICgqbXlyaWdodHNfdCkg
KE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICptYWlsYm94LGNoYXIgKnJpZ2h0cyk7DXR5cGVkZWYg
dm9pZCAoKnF1b3RhX3QpIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqcXJvb3Qsc3RydWN0IHF1
b3RhX2xpc3QgKnFsaXN0KTsNdHlwZWRlZiB2b2lkICgqcXVvdGFyb290X3QpIChNQUlMU1RSRUFN
ICpzdHJlYW0sY2hhciAqbWJ4LHN0cnVjdCBzdHJpbmdfbGlzdCAqcXJvb3QpOw10eXBlZGVmIHZv
aWQgKCpzb3J0cmVzdWx0c190KSAoTUFJTFNUUkVBTSAqc3RyZWFtLHVuc2lnbmVkIGxvbmcgKmxp
c3QsDSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOw10
eXBlZGVmIGNoYXIgKigqbmV3c3JjcXVlcnlfdCkgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICpt
dWxuYW1lLGNoYXIgKm5hbWUpOw10eXBlZGVmIGNoYXIgKigqdXNlcnByb21wdF90KSAodm9pZCk7
DXR5cGVkZWYgbG9uZyAoKmFwcGVuZF90KSAoTUFJTFNUUkVBTSAqc3RyZWFtLHZvaWQgKmRhdGEs
Y2hhciAqKmZsYWdzLA0gICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipkYXRlLFNUUklO
RyAqKm1lc3NhZ2UpOw10eXBlZGVmIHZvaWQgKCpmcmVlZW52ZWxvcGVzcGFyZXBfdCkgKHZvaWQg
KipzcGFyZXApOw10eXBlZGVmIHZvaWQgKCpmcmVlZWx0c3BhcmVwX3QpICh2b2lkICoqc3BhcmVw
KTsNDQ0NDWV4dGVybiBjaGFyICpib2R5X3R5cGVzW107DWV4dGVybiBjaGFyICpib2R5X2VuY29k
aW5nc1tdOw1leHRlcm4gY29uc3QgY2hhciAqZGF5c1tdOw1leHRlcm4gY29uc3QgY2hhciAqbW9u
dGhzW107DQ0NDQ0NDQ1zdHJ1Y3QgdGhyZWFkX25vZGUgew0gIHVuc2lnbmVkIGxvbmcgbnVtOw0g
IHN0cnVjdCBzb3J0X2NhY2hlICpzYzsNICBzdHJ1Y3QgdGhyZWFkX25vZGUgKmJyYW5jaDsNICBz
dHJ1Y3QgdGhyZWFkX25vZGUgKm5leHQ7DX07DQ10eXBlZGVmIHZvaWQgKCp0aHJlYWRyZXN1bHRz
X3QpIChNQUlMU1RSRUFNICpzdHJlYW0sc3RydWN0IHRocmVhZF9ub2RlICp0cmVlKTsNDQ0NDQ0N
c3RydWN0IHRocmVhZGVyX2xpc3Qgew0gIGNoYXIgKm5hbWU7DSAgc3RydWN0IHRocmVhZF9ub2Rl
ICooKmRpc3BhdGNoKSAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKmNoYXJzZXQsc3RydWN0IHNl
YXJjaF9wcm9ncmFtICpzcGcsDSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZmxhZ3Ms
c29ydGVyX3Qgc29ydGVyKTsNICBzdHJ1Y3QgdGhyZWFkZXJfbGlzdCAqbmV4dDsNfTsNDQ0NDXR5
cGVkZWYgdm9pZCAqKiBjb250YWluZXJfdDsNDQ0NDQ1zdHJ1Y3QgbWFpbF9uYW1lc3BhY2Ugew0g
IGNoYXIgKm5hbWU7DSAgaW50IGRlbGltaXRlcjsNICBzdHJ1Y3QgbWFpbF9ib2R5X3BhcmFtZXRl
ciAqcGFyYW07DSAgc3RydWN0IG1haWxfbmFtZXNwYWNlICpuZXh0Ow19Ow0NDQ0NDQ1zdHJ1Y3Qg
bWFpbF9hdXRoZW50aWNhdG9yIHsNICBsb25nIGZsYWdzOw0gIGNoYXIgKm5hbWU7DSAgYXV0aGNo
ZWNrX3QgdmFsaWQ7DSAgYXV0aGNsaWVudF90IGNsaWVudDsNICBhdXRoc2VydmVyX3Qgc2VydmVy
Ow0gIHN0cnVjdCBtYWlsX2F1dGhlbnRpY2F0b3IgKm5leHQ7DX07DQ0NDQ0NDQ0Nc3RydWN0IGRy
aXZlciB7DSAgY2hhciAqbmFtZTsNICB1bnNpZ25lZCBsb25nIGZsYWdzOw0gIHN0cnVjdCBkcml2
ZXIgKm5leHQ7DQ0gIHN0cnVjdCBkcml2ZXIgKigqdmFsaWQpIChjaGFyICptYWlsYm94KTsNDSAg
dm9pZCAqKCpwYXJhbWV0ZXJzKSAobG9uZyBmdW5jdGlvbix2b2lkICp2YWx1ZSk7DQ0gIHZvaWQg
KCpzY2FuKSAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKnJlZixjaGFyICpwYXQsY2hhciAqY29u
dGVudHMpOw0NICB2b2lkICgqbGlzdCkgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICpyZWYsY2hh
ciAqcGF0KTsNDSAgdm9pZCAoKmxzdWIpIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqcmVmLGNo
YXIgKnBhdCk7DQ0gIGxvbmcgKCpzdWJzY3JpYmUpIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAq
bWFpbGJveCk7DQ0gIGxvbmcgKCp1bnN1YnNjcmliZSkgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFy
ICptYWlsYm94KTsNDSAgbG9uZyAoKmNyZWF0ZSkgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICpt
YWlsYm94KTsNDSAgbG9uZyAoKm1ieGRlbCkgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICptYWls
Ym94KTsNDSAgbG9uZyAoKm1ieHJlbikgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICpvbGQsY2hh
ciAqbmV3bmFtZSk7DQ0gIGxvbmcgKCpzdGF0dXMpIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAq
bWJ4LGxvbmcgZmxhZ3MpOw0NDSAgTUFJTFNUUkVBTSAqKCpvcGVuKSAoTUFJTFNUUkVBTSAqc3Ry
ZWFtKTsNDSAgdm9pZCAoKmNsb3NlKSAoTUFJTFNUUkVBTSAqc3RyZWFtLGxvbmcgb3B0aW9ucyk7
DQ0gIHZvaWQgKCpmYXN0KSAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKnNlcXVlbmNlLGxvbmcg
ZmxhZ3MpOw0NICB2b2lkICgqbXNnZmxhZ3MpIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqc2Vx
dWVuY2UsbG9uZyBmbGFncyk7DQ0gIGxvbmcgKCpvdmVydmlldykgKE1BSUxTVFJFQU0gKnN0cmVh
bSxjaGFyICpzZXF1ZW5jZSxvdmVydmlld190IG9mbik7DQ0gIEVOVkVMT1BFICooKnN0cnVjdHVy
ZSkgKE1BSUxTVFJFQU0gKnN0cmVhbSx1bnNpZ25lZCBsb25nIG1zZ25vLHN0cnVjdCBtYWlsX2Jv
ZHlzdHJ1Y3QgKipib2R5LA0gICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZmxhZ3MpOw0N
ICBjaGFyICooKmhlYWRlcikgKE1BSUxTVFJFQU0gKnN0cmVhbSx1bnNpZ25lZCBsb25nIG1zZ25v
LA0gICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqbGVuZ3RoLGxvbmcgZmxhZ3MpOw0N
ICBsb25nICgqdGV4dCkgKE1BSUxTVFJFQU0gKnN0cmVhbSx1bnNpZ25lZCBsb25nIG1zZ25vLFNU
UklORyAqYnMsbG9uZyBmbGFncyk7DQ0gIGxvbmcgKCptc2dkYXRhKSAoTUFJTFNUUkVBTSAqc3Ry
ZWFtLHVuc2lnbmVkIGxvbmcgbXNnbm8sY2hhciAqc2VjdGlvbiwNICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgZmlyc3QsdW5zaWduZWQgbG9uZyBsYXN0LHN0cnVjdCBzdHJpbmdfbGlz
dCAqbGluZXMsDSAgICAgICAgICAgICAgICAgICBsb25nIGZsYWdzKTsNDSAgdW5zaWduZWQgbG9u
ZyAoKnVpZCkgKE1BSUxTVFJFQU0gKnN0cmVhbSx1bnNpZ25lZCBsb25nIG1zZ25vKTsNDSAgdW5z
aWduZWQgbG9uZyAoKm1zZ25vKSAoTUFJTFNUUkVBTSAqc3RyZWFtLHVuc2lnbmVkIGxvbmcgdWlk
KTsNDSAgdm9pZCAoKmZsYWcpIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqc2VxdWVuY2UsY2hh
ciAqZmxhZyxsb25nIGZsYWdzKTsNDSAgdm9pZCAoKmZsYWdtc2cpIChNQUlMU1RSRUFNICpzdHJl
YW0sTUVTU0FHRUNBQ0hFICplbHQpOw0NICB2b2lkICgqc2VhcmNoKSAoTUFJTFNUUkVBTSAqc3Ry
ZWFtLGNoYXIgKmNoYXJzZXQsc3RydWN0IHNlYXJjaF9wcm9ncmFtICpwZ20sbG9uZyBmbGFncyk7
DQ0gIHVuc2lnbmVkIGxvbmcgKigqc29ydCkgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICpjaGFy
c2V0LHN0cnVjdCBzZWFyY2hfcHJvZ3JhbSAqc3BnLA0gICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBzb3J0X3Byb2dyYW0gKnBnbSxsb25nIGZsYWdzKTsNDSAgc3RydWN0IHRocmVhZF9u
b2RlICooKnRocmVhZCkgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICp0eXBlLGNoYXIgKmNoYXJz
ZXQsDSAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VhcmNoX3Byb2dyYW0gKnNwZyxs
b25nIGZsYWcpOw0NICBsb25nICgqcGluZykgKE1BSUxTVFJFQU0gKnN0cmVhbSk7DQ0gIHZvaWQg
KCpjaGVjaykgKE1BSUxTVFJFQU0gKnN0cmVhbSk7DQ0gIHZvaWQgKCpleHB1bmdlKSAoTUFJTFNU
UkVBTSAqc3RyZWFtKTsNDSAgbG9uZyAoKmNvcHkpIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAq
c2VxdWVuY2UsY2hhciAqbWFpbGJveCxsb25nIG9wdGlvbnMpOw0NICBsb25nICgqYXBwZW5kKSAo
TUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKm1haWxib3gsYXBwZW5kX3QgYWYsdm9pZCAqZGF0YSk7
DQ0gIHZvaWQgKCpnYykgKE1BSUxTVFJFQU0gKnN0cmVhbSxsb25nIGdjZmxhZ3MpOw19Ow0NDSMg
MSAibGlua2FnZS5oIiAxDWV4dGVybiBzdHJ1Y3QgZHJpdmVyIG1ib3hkcml2ZXI7DWV4dGVybiBz
dHJ1Y3QgZHJpdmVyIG1haWxkaXJkcml2ZXI7DWV4dGVybiBzdHJ1Y3QgZHJpdmVyIGltYXBkcml2
ZXI7DWV4dGVybiBzdHJ1Y3QgZHJpdmVyIG5udHBkcml2ZXI7DWV4dGVybiBzdHJ1Y3QgZHJpdmVy
IHBvcDNkcml2ZXI7DWV4dGVybiBzdHJ1Y3QgZHJpdmVyIG1oZHJpdmVyOw1leHRlcm4gc3RydWN0
IGRyaXZlciBteGRyaXZlcjsNZXh0ZXJuIHN0cnVjdCBkcml2ZXIgbWJ4ZHJpdmVyOw1leHRlcm4g
c3RydWN0IGRyaXZlciB0ZW5leGRyaXZlcjsNZXh0ZXJuIHN0cnVjdCBkcml2ZXIgbXR4ZHJpdmVy
Ow1leHRlcm4gc3RydWN0IGRyaXZlciBtbWRmZHJpdmVyOw1leHRlcm4gc3RydWN0IGRyaXZlciB1
bml4ZHJpdmVyOw1leHRlcm4gc3RydWN0IGRyaXZlciBuZXdzZHJpdmVyOw1leHRlcm4gc3RydWN0
IGRyaXZlciBwaGlsZWRyaXZlcjsNZXh0ZXJuIHN0cnVjdCBkcml2ZXIgZHVtbXlkcml2ZXI7DWV4
dGVybiBzdHJ1Y3QgbWFpbF9hdXRoZW50aWNhdG9yIGF1dGhfbWQ1Ow12b2lkIHNzbF9vbmNlb25s
eWluaXQgKHZvaWQpOw1leHRlcm4gaW50IHNzbF9nZXRjaGFyICh2b2lkKTsNZXh0ZXJuIGNoYXIg
KnNzbF9nZXRzIChjaGFyICpzLGludCBuKTsNZXh0ZXJuIGludCBzc2xfcHV0Y2hhciAoaW50IGMp
Ow1leHRlcm4gaW50IHNzbF9wdXRzIChjaGFyICpzKTsNZXh0ZXJuIGludCBzc2xfZmx1c2ggKHZv
aWQpOw1leHRlcm4gY2hhciAqc3NsX3N0YXJ0X3RscyAoY2hhciAqcyk7DQ0NDQ0NDQ0NDQ0NDQ1l
eHRlcm4gc3RydWN0IG1haWxfYXV0aGVudGljYXRvciBhdXRoX3NzbDsNZXh0ZXJuIHN0cnVjdCBt
YWlsX2F1dGhlbnRpY2F0b3IgYXV0aF9sb2c7DSMgMTIyNyAibWFpbC5oIiAyDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDXZvaWQgbW1fc2VhcmNoZWQgKE1BSUxT
VFJFQU0gKnN0cmVhbSx1bnNpZ25lZCBsb25nIG51bWJlcik7DXZvaWQgbW1fZXhpc3RzIChNQUlM
U1RSRUFNICpzdHJlYW0sdW5zaWduZWQgbG9uZyBudW1iZXIpOw12b2lkIG1tX2V4cHVuZ2VkIChN
QUlMU1RSRUFNICpzdHJlYW0sdW5zaWduZWQgbG9uZyBudW1iZXIpOw12b2lkIG1tX2ZsYWdzIChN
QUlMU1RSRUFNICpzdHJlYW0sdW5zaWduZWQgbG9uZyBudW1iZXIpOw12b2lkIG1tX25vdGlmeSAo
TUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKnN0cmluZyxsb25nIGVycmZsZyk7DXZvaWQgbW1fbGlz
dCAoTUFJTFNUUkVBTSAqc3RyZWFtLGludCBkZWxpbWl0ZXIsY2hhciAqbmFtZSxsb25nIGF0dHJp
YnV0ZXMpOw12b2lkIG1tX2xzdWIgKE1BSUxTVFJFQU0gKnN0cmVhbSxpbnQgZGVsaW1pdGVyLGNo
YXIgKm5hbWUsbG9uZyBhdHRyaWJ1dGVzKTsNdm9pZCBtbV9zdGF0dXMgKE1BSUxTVFJFQU0gKnN0
cmVhbSxjaGFyICptYWlsYm94LE1BSUxTVEFUVVMgKnN0YXR1cyk7DXZvaWQgbW1fbG9nIChjaGFy
ICpzdHJpbmcsbG9uZyBlcnJmbGcpOw12b2lkIG1tX2Rsb2cgKGNoYXIgKnN0cmluZyk7DXZvaWQg
bW1fbG9naW4gKE5FVE1CWCAqbWIsY2hhciAqdXNlcixjaGFyICpwd2QsbG9uZyB0cmlhbCk7DXZv
aWQgbW1fY3JpdGljYWwgKE1BSUxTVFJFQU0gKnN0cmVhbSk7DXZvaWQgbW1fbm9jcml0aWNhbCAo
TUFJTFNUUkVBTSAqc3RyZWFtKTsNbG9uZyBtbV9kaXNrZXJyb3IgKE1BSUxTVFJFQU0gKnN0cmVh
bSxsb25nIGVycmNvZGUsbG9uZyBzZXJpb3VzKTsNdm9pZCBtbV9mYXRhbCAoY2hhciAqc3RyaW5n
KTsNdm9pZCAqbW1fY2FjaGUgKE1BSUxTVFJFQU0gKnN0cmVhbSx1bnNpZ25lZCBsb25nIG1zZ25v
LGxvbmcgb3ApOw0NZXh0ZXJuIHN0cnVjdCBzdHJpbmdfZHJpdmVyIG1haWxfc3RyaW5nOw12b2lk
IG1haWxfbGluayAoc3RydWN0IGRyaXZlciAqZHJpdmVyKTsNdm9pZCAqbWFpbF9wYXJhbWV0ZXJz
IChNQUlMU1RSRUFNICpzdHJlYW0sbG9uZyBmdW5jdGlvbix2b2lkICp2YWx1ZSk7DXN0cnVjdCBk
cml2ZXIgKm1haWxfdmFsaWQgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICptYWlsYm94LGNoYXIg
KnB1cnBvc2UpOw1zdHJ1Y3QgZHJpdmVyICptYWlsX3ZhbGlkX25ldCAoY2hhciAqbmFtZSxzdHJ1
Y3QgZHJpdmVyICpkcnYsY2hhciAqaG9zdCxjaGFyICptYWlsYm94KTsNbG9uZyBtYWlsX3ZhbGlk
X25ldF9wYXJzZSAoY2hhciAqbmFtZSxORVRNQlggKm1iKTsNdm9pZCBtYWlsX3NjYW4gKE1BSUxT
VFJFQU0gKnN0cmVhbSxjaGFyICpyZWYsY2hhciAqcGF0LGNoYXIgKmNvbnRlbnRzKTsNdm9pZCBt
YWlsX2xpc3QgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICpyZWYsY2hhciAqcGF0KTsNdm9pZCBt
YWlsX2xzdWIgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICpyZWYsY2hhciAqcGF0KTsNbG9uZyBt
YWlsX3N1YnNjcmliZSAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKm1haWxib3gpOw1sb25nIG1h
aWxfdW5zdWJzY3JpYmUgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICptYWlsYm94KTsNbG9uZyBt
YWlsX2NyZWF0ZSAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKm1haWxib3gpOw1sb25nIG1haWxf
ZGVsZXRlIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqbWFpbGJveCk7DWxvbmcgbWFpbF9yZW5h
bWUgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICpvbGQsY2hhciAqbmV3bmFtZSk7DWxvbmcgbWFp
bF9zdGF0dXMgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICptYngsbG9uZyBmbGFncyk7DWxvbmcg
bWFpbF9zdGF0dXNfZGVmYXVsdCAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKm1ieCxsb25nIGZs
YWdzKTsNTUFJTFNUUkVBTSAqbWFpbF9vcGVuIChNQUlMU1RSRUFNICpvbGRzdHJlYW0sY2hhciAq
bmFtZSxsb25nIG9wdGlvbnMpOw1NQUlMU1RSRUFNICptYWlsX2Nsb3NlX2Z1bGwgKE1BSUxTVFJF
QU0gKnN0cmVhbSxsb25nIG9wdGlvbnMpOw1NQUlMSEFORExFICptYWlsX21ha2VoYW5kbGUgKE1B
SUxTVFJFQU0gKnN0cmVhbSk7DXZvaWQgbWFpbF9mcmVlX2hhbmRsZSAoTUFJTEhBTkRMRSAqKmhh
bmRsZSk7DU1BSUxTVFJFQU0gKm1haWxfc3RyZWFtIChNQUlMSEFORExFICpoYW5kbGUpOw0Ndm9p
ZCBtYWlsX2ZldGNoX2Zhc3QgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICpzZXF1ZW5jZSxsb25n
IGZsYWdzKTsNdm9pZCBtYWlsX2ZldGNoX2ZsYWdzIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAq
c2VxdWVuY2UsbG9uZyBmbGFncyk7DXZvaWQgbWFpbF9mZXRjaF9vdmVydmlldyAoTUFJTFNUUkVB
TSAqc3RyZWFtLGNoYXIgKnNlcXVlbmNlLG92ZXJ2aWV3X3Qgb2ZuKTsNRU5WRUxPUEUgKm1haWxf
ZmV0Y2hfc3RydWN0dXJlIChNQUlMU1RSRUFNICpzdHJlYW0sdW5zaWduZWQgbG9uZyBtc2dubywN
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWFpbF9ib2R5c3RydWN0ICoq
Ym9keSxsb25nIGZsYWdzKTsNY2hhciAqbWFpbF9mZXRjaF9tZXNzYWdlIChNQUlMU1RSRUFNICpz
dHJlYW0sdW5zaWduZWQgbG9uZyBtc2dubywNICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nICpsZW4sbG9uZyBmbGFncyk7DWNoYXIgKm1haWxfZmV0Y2hfaGVhZGVyIChNQUlM
U1RSRUFNICpzdHJlYW0sdW5zaWduZWQgbG9uZyBtc2dubyxjaGFyICpzZWN0aW9uLA0gICAgICAg
ICAgICAgICAgICAgICAgICAgc3RydWN0IHN0cmluZ19saXN0ICpsaW5lcyx1bnNpZ25lZCBsb25n
ICpsZW4sbG9uZyBmbGFncyk7DWNoYXIgKm1haWxfZmV0Y2hfdGV4dCAoTUFJTFNUUkVBTSAqc3Ry
ZWFtLHVuc2lnbmVkIGxvbmcgbXNnbm8sY2hhciAqc2VjdGlvbiwNICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nICpsZW4sbG9uZyBmbGFncyk7DWNoYXIgKm1haWxfZmV0Y2hfbWlt
ZSAoTUFJTFNUUkVBTSAqc3RyZWFtLHVuc2lnbmVkIGxvbmcgbXNnbm8sY2hhciAqc2VjdGlvbiwN
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpsZW4sbG9uZyBmbGFncyk7DWNo
YXIgKm1haWxfZmV0Y2hfYm9keSAoTUFJTFNUUkVBTSAqc3RyZWFtLHVuc2lnbmVkIGxvbmcgbXNn
bm8sY2hhciAqc2VjdGlvbiwNICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICps
ZW4sbG9uZyBmbGFncyk7DWxvbmcgbWFpbF9wYXJ0aWFsX3RleHQgKE1BSUxTVFJFQU0gKnN0cmVh
bSx1bnNpZ25lZCBsb25nIG1zZ25vLGNoYXIgKnNlY3Rpb24sDSAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgZmlyc3QsdW5zaWduZWQgbG9uZyBsYXN0LGxvbmcgZmxhZ3MpOw1s
b25nIG1haWxfcGFydGlhbF9ib2R5IChNQUlMU1RSRUFNICpzdHJlYW0sdW5zaWduZWQgbG9uZyBt
c2dubyxjaGFyICpzZWN0aW9uLA0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IGZpcnN0LHVuc2lnbmVkIGxvbmcgbGFzdCxsb25nIGZsYWdzKTsNY2hhciAqbWFpbF9mZXRjaF90
ZXh0X3JldHVybiAoR0VUU19EQVRBICptZCxzdHJ1Y3QgbWFpbF9zaXplZHRleHQgKnQsdW5zaWdu
ZWQgbG9uZyAqbGVuKTsNY2hhciAqbWFpbF9mZXRjaF9zdHJpbmdfcmV0dXJuIChHRVRTX0RBVEEg
Km1kLFNUUklORyAqYnMsdW5zaWduZWQgbG9uZyBpLA0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgKmxlbik7DWxvbmcgbWFpbF9yZWFkICh2b2lkICpzdHJlYW0s
dW5zaWduZWQgbG9uZyBzaXplLGNoYXIgKmJ1ZmZlcik7DXVuc2lnbmVkIGxvbmcgbWFpbF91aWQg
KE1BSUxTVFJFQU0gKnN0cmVhbSx1bnNpZ25lZCBsb25nIG1zZ25vKTsNdW5zaWduZWQgbG9uZyBt
YWlsX21zZ25vIChNQUlMU1RSRUFNICpzdHJlYW0sdW5zaWduZWQgbG9uZyB1aWQpOw12b2lkIG1h
aWxfZmV0Y2hmcm9tIChjaGFyICpzLE1BSUxTVFJFQU0gKnN0cmVhbSx1bnNpZ25lZCBsb25nIG1z
Z25vLA0gICAgICAgICAgICAgICAgICAgICBsb25nIGxlbmd0aCk7DXZvaWQgbWFpbF9mZXRjaHN1
YmplY3QgKGNoYXIgKnMsTUFJTFNUUkVBTSAqc3RyZWFtLHVuc2lnbmVkIGxvbmcgbXNnbm8sDSAg
ICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbGVuZ3RoKTsNTUVTU0FHRUNBQ0hFICptYWlsX2Vs
dCAoTUFJTFNUUkVBTSAqc3RyZWFtLHVuc2lnbmVkIGxvbmcgbXNnbm8pOw12b2lkIG1haWxfZmxh
ZyAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKnNlcXVlbmNlLGNoYXIgKmZsYWcsbG9uZyBmbGFn
cyk7DXZvaWQgbWFpbF9zZWFyY2hfZnVsbCAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKmNoYXJz
ZXQsc3RydWN0IHNlYXJjaF9wcm9ncmFtICpwZ20sDSAgICAgICAgICAgICAgICAgICAgICAgbG9u
ZyBmbGFncyk7DXZvaWQgbWFpbF9zZWFyY2hfZGVmYXVsdCAoTUFJTFNUUkVBTSAqc3RyZWFtLGNo
YXIgKmNoYXJzZXQsc3RydWN0IHNlYXJjaF9wcm9ncmFtICpwZ20sDSAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9uZyBmbGFncyk7DWxvbmcgbWFpbF9waW5nIChNQUlMU1RSRUFNICpzdHJlYW0p
Ow12b2lkIG1haWxfY2hlY2sgKE1BSUxTVFJFQU0gKnN0cmVhbSk7DXZvaWQgbWFpbF9leHB1bmdl
IChNQUlMU1RSRUFNICpzdHJlYW0pOw1sb25nIG1haWxfY29weV9mdWxsIChNQUlMU1RSRUFNICpz
dHJlYW0sY2hhciAqc2VxdWVuY2UsY2hhciAqbWFpbGJveCwNICAgICAgICAgICAgICAgICAgICAg
bG9uZyBvcHRpb25zKTsNbG9uZyBtYWlsX2FwcGVuZF9mdWxsIChNQUlMU1RSRUFNICpzdHJlYW0s
Y2hhciAqbWFpbGJveCxjaGFyICpmbGFncyxjaGFyICpkYXRlLA0gICAgICAgICAgICAgICAgICAg
ICAgIFNUUklORyAqbWVzc2FnZSk7DWxvbmcgbWFpbF9hcHBlbmRfbXVsdGlwbGUgKE1BSUxTVFJF
QU0gKnN0cmVhbSxjaGFyICptYWlsYm94LGFwcGVuZF90IGFmLA0gICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkICpkYXRhKTsNdm9pZCBtYWlsX2djIChNQUlMU1RSRUFNICpzdHJlYW0sbG9u
ZyBnY2ZsYWdzKTsNdm9pZCBtYWlsX2djX21zZyAoc3RydWN0IG1haWxfYm9keV9tZXNzYWdlICpt
c2csbG9uZyBnY2ZsYWdzKTsNdm9pZCBtYWlsX2djX2JvZHkgKHN0cnVjdCBtYWlsX2JvZHlzdHJ1
Y3QgKmJvZHkpOw0Nc3RydWN0IG1haWxfYm9keXN0cnVjdCAqbWFpbF9ib2R5IChNQUlMU1RSRUFN
ICpzdHJlYW0sdW5zaWduZWQgbG9uZyBtc2dubyxjaGFyICpzZWN0aW9uKTsNY2hhciAqbWFpbF9k
YXRlIChjaGFyICpzdHJpbmcsTUVTU0FHRUNBQ0hFICplbHQpOw1jaGFyICptYWlsX2NkYXRlIChj
aGFyICpzdHJpbmcsTUVTU0FHRUNBQ0hFICplbHQpOw1sb25nIG1haWxfcGFyc2VfZGF0ZSAoTUVT
U0FHRUNBQ0hFICplbHQsY2hhciAqc3RyaW5nKTsNdm9pZCBtYWlsX2V4aXN0cyAoTUFJTFNUUkVB
TSAqc3RyZWFtLHVuc2lnbmVkIGxvbmcgbm1zZ3MpOw12b2lkIG1haWxfcmVjZW50IChNQUlMU1RS
RUFNICpzdHJlYW0sdW5zaWduZWQgbG9uZyByZWNlbnQpOw12b2lkIG1haWxfZXhwdW5nZWQgKE1B
SUxTVFJFQU0gKnN0cmVhbSx1bnNpZ25lZCBsb25nIG1zZ25vKTsNdm9pZCBtYWlsX2xvY2sgKE1B
SUxTVFJFQU0gKnN0cmVhbSk7DXZvaWQgbWFpbF91bmxvY2sgKE1BSUxTVFJFQU0gKnN0cmVhbSk7
DXZvaWQgbWFpbF9kZWJ1ZyAoTUFJTFNUUkVBTSAqc3RyZWFtKTsNdm9pZCBtYWlsX25vZGVidWcg
KE1BSUxTVFJFQU0gKnN0cmVhbSk7DWxvbmcgbWFpbF9tYXRjaF9saW5lcyAoc3RydWN0IHN0cmlu
Z19saXN0ICpsaW5lcyxzdHJ1Y3Qgc3RyaW5nX2xpc3QgKm1zZ2xpbmVzLGxvbmcgZmxhZ3MpOw11
bnNpZ25lZCBsb25nIG1haWxfZmlsdGVyIChjaGFyICp0ZXh0LHVuc2lnbmVkIGxvbmcgbGVuLHN0
cnVjdCBzdHJpbmdfbGlzdCAqbGluZXMsDSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcg
ZmxhZ3MpOw1sb25nIG1haWxfc2VhcmNoX21zZyAoTUFJTFNUUkVBTSAqc3RyZWFtLHVuc2lnbmVk
IGxvbmcgbXNnbm8sY2hhciAqc2VjdGlvbiwNICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
ZWFyY2hfcHJvZ3JhbSAqcGdtKTsNbG9uZyBtYWlsX3NlYXJjaF9oZWFkZXJfdGV4dCAoY2hhciAq
cyxzdHJ1Y3Qgc3RyaW5nX2xpc3QgKnN0KTsNbG9uZyBtYWlsX3NlYXJjaF9oZWFkZXIgKHN0cnVj
dCBtYWlsX3NpemVkdGV4dCAqaGRyLHN0cnVjdCBzdHJpbmdfbGlzdCAqc3QpOw1sb25nIG1haWxf
c2VhcmNoX3RleHQgKE1BSUxTVFJFQU0gKnN0cmVhbSx1bnNpZ25lZCBsb25nIG1zZ25vLGNoYXIg
KnNlY3Rpb24sDSAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0cmluZ19saXN0ICpzdCxs
b25nIGZsYWdzKTsNbG9uZyBtYWlsX3NlYXJjaF9ib2R5IChNQUlMU1RSRUFNICpzdHJlYW0sdW5z
aWduZWQgbG9uZyBtc2dubyxzdHJ1Y3QgbWFpbF9ib2R5c3RydWN0ICpib2R5LA0gICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKnByZWZpeCx1bnNpZ25lZCBsb25nIHNlY3Rpb24sbG9uZyBmbGFn
cyk7DWxvbmcgbWFpbF9zZWFyY2hfc3RyaW5nIChzdHJ1Y3QgbWFpbF9zaXplZHRleHQgKnMsY2hh
ciAqY2hhcnNldCxzdHJ1Y3Qgc3RyaW5nX2xpc3QgKipzdCk7DWxvbmcgbWFpbF9zZWFyY2hfa2V5
d29yZCAoTUFJTFNUUkVBTSAqc3RyZWFtLE1FU1NBR0VDQUNIRSAqZWx0LHN0cnVjdCBzdHJpbmdf
bGlzdCAqc3QpOw1sb25nIG1haWxfc2VhcmNoX2FkZHIgKHN0cnVjdCBtYWlsX2FkZHJlc3MgKmFk
cixzdHJ1Y3Qgc3RyaW5nX2xpc3QgKnN0KTsNY2hhciAqbWFpbF9zZWFyY2hfZ2V0cyAocmVhZGZu
X3QgZix2b2lkICpzdHJlYW0sdW5zaWduZWQgbG9uZyBzaXplLA0gICAgICAgICAgICAgICAgICAg
ICAgICBHRVRTX0RBVEEgKm1kKTsNc3RydWN0IHNlYXJjaF9wcm9ncmFtICptYWlsX2NyaXRlcmlh
IChjaGFyICpjcml0ZXJpYSk7DWludCBtYWlsX2NyaXRlcmlhX2RhdGUgKHVuc2lnbmVkIHNob3J0
ICpkYXRlKTsNaW50IG1haWxfY3JpdGVyaWFfc3RyaW5nIChzdHJ1Y3Qgc3RyaW5nX2xpc3QgKipz
KTsNdW5zaWduZWQgbG9uZyAqbWFpbF9zb3J0IChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqY2hh
cnNldCxzdHJ1Y3Qgc2VhcmNoX3Byb2dyYW0gKnNwZywNICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJ1Y3Qgc29ydF9wcm9ncmFtICpwZ20sbG9uZyBmbGFncyk7DXVuc2lnbmVkIGxvbmcgKm1h
aWxfc29ydF9jYWNoZSAoTUFJTFNUUkVBTSAqc3RyZWFtLHN0cnVjdCBzb3J0X3Byb2dyYW0gKnBn
bSxzdHJ1Y3Qgc29ydF9jYWNoZSAqKnNjLA0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxvbmcgZmxhZ3MpOw11bnNpZ25lZCBsb25nICptYWlsX3NvcnRfbXNncyAoTUFJTFNUUkVBTSAq
c3RyZWFtLGNoYXIgKmNoYXJzZXQsc3RydWN0IHNlYXJjaF9wcm9ncmFtICpzcGcsDSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ydF9wcm9ncmFtICpwZ20sbG9uZyBmbGFn
cyk7DXN0cnVjdCBzb3J0X2NhY2hlICoqbWFpbF9zb3J0X2xvYWRjYWNoZSAoTUFJTFNUUkVBTSAq
c3RyZWFtLHN0cnVjdCBzb3J0X3Byb2dyYW0gKnBnbSk7DXVuc2lnbmVkIGludCBtYWlsX3N0cmlw
X3N1YmplY3QgKGNoYXIgKnQsY2hhciAqKnJldCk7DXVuc2lnbmVkIGludCBtYWlsX3N0cmlwX3N1
YmplY3RfYXV4IChjaGFyICp0LGNoYXIgKipyZXQpOw1pbnQgbWFpbF9zb3J0X2NvbXBhcmUgKGNv
bnN0IHZvaWQgKmExLGNvbnN0IHZvaWQgKmEyKTsNaW50IG1haWxfY29tcGFyZV91bG9uZyAodW5z
aWduZWQgbG9uZyBsMSx1bnNpZ25lZCBsb25nIGwyKTsNaW50IG1haWxfY29tcGFyZV9jc3RyaW5n
IChjaGFyICpzMSxjaGFyICpzMik7DXVuc2lnbmVkIGxvbmcgbWFpbF9sb25nZGF0ZSAoTUVTU0FH
RUNBQ0hFICplbHQpOw1zdHJ1Y3QgdGhyZWFkX25vZGUgKm1haWxfdGhyZWFkIChNQUlMU1RSRUFN
ICpzdHJlYW0sY2hhciAqdHlwZSxjaGFyICpjaGFyc2V0LA0gICAgICAgICAgICAgICAgICAgICAg
ICAgc3RydWN0IHNlYXJjaF9wcm9ncmFtICpzcGcsbG9uZyBmbGFncyk7DXN0cnVjdCB0aHJlYWRf
bm9kZSAqbWFpbF90aHJlYWRfbXNncyAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKnR5cGUsY2hh
ciAqY2hhcnNldCwNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlYXJjaF9w
cm9ncmFtICpzcGcsbG9uZyBmbGFncyxzb3J0ZXJfdCBzb3J0ZXIpOw1zdHJ1Y3QgdGhyZWFkX25v
ZGUgKm1haWxfdGhyZWFkX29yZGVyZWRzdWJqZWN0IChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAq
Y2hhcnNldCwNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz
ZWFyY2hfcHJvZ3JhbSAqc3BnLGxvbmcgZmxhZ3MsDSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzb3J0ZXJfdCBzb3J0ZXIpOw1zdHJ1Y3QgdGhyZWFkX25vZGUgKm1haWxf
dGhyZWFkX3JlZmVyZW5jZXMgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICpjaGFyc2V0LA0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VhcmNoX3Byb2dyYW0gKnNw
Zyxsb25nIGZsYWdzLA0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZXJf
dCBzb3J0ZXIpOw12b2lkIG1haWxfdGhyZWFkX2xvYWRjYWNoZSAoTUFJTFNUUkVBTSAqc3RyZWFt
LHVuc2lnbmVkIGxvbmcgdWlkLE9WRVJWSUVXICpvdik7DWNoYXIgKm1haWxfdGhyZWFkX3BhcnNl
X21zZ2lkIChjaGFyICpzLGNoYXIgKipzcyk7DXN0cnVjdCBzdHJpbmdfbGlzdCAqbWFpbF90aHJl
YWRfcGFyc2VfcmVmZXJlbmNlcyAoY2hhciAqcyxsb25nIGZsYWcpOw1sb25nIG1haWxfdGhyZWFk
X2NoZWNrX2NoaWxkIChjb250YWluZXJfdCBtb3RoZXIsY29udGFpbmVyX3QgZGF1Z2h0ZXIpOw1j
b250YWluZXJfdCBtYWlsX3RocmVhZF9wcnVuZV9kdW1teSAoY29udGFpbmVyX3QgbXNnLGNvbnRh
aW5lcl90IGFuZSk7DWNvbnRhaW5lcl90IG1haWxfdGhyZWFkX3BydW5lX2R1bW15X3dvcmsgKGNv
bnRhaW5lcl90IG1zZyxjb250YWluZXJfdCBhbmUpOw1zdHJ1Y3QgdGhyZWFkX25vZGUgKm1haWxf
dGhyZWFkX2Mybm9kZSAoTUFJTFNUUkVBTSAqc3RyZWFtLGNvbnRhaW5lcl90IGNvbixsb25nIGZs
YWdzKTsNc3RydWN0IHRocmVhZF9ub2RlICptYWlsX3RocmVhZF9zb3J0IChzdHJ1Y3QgdGhyZWFk
X25vZGUgKnRocixzdHJ1Y3QgdGhyZWFkX25vZGUgKip0Yyk7DWludCBtYWlsX3RocmVhZF9jb21w
YXJlX2RhdGUgKGNvbnN0IHZvaWQgKmExLGNvbnN0IHZvaWQgKmEyKTsNbG9uZyBtYWlsX3NlcXVl
bmNlIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqc2VxdWVuY2UpOw1sb25nIG1haWxfdWlkX3Nl
cXVlbmNlIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqc2VxdWVuY2UpOw1sb25nIG1haWxfcGFy
c2VfZmxhZ3MgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICpmbGFnLHVuc2lnbmVkIGxvbmcgKnVm
KTsNbG9uZyBtYWlsX3VzYWJsZV9uZXR3b3JrX3N0cmVhbSAoTUFJTFNUUkVBTSAqc3RyZWFtLGNo
YXIgKm5hbWUpOw0NTUVTU0FHRUNBQ0hFICptYWlsX25ld19jYWNoZV9lbHQgKHVuc2lnbmVkIGxv
bmcgbXNnbm8pOw1FTlZFTE9QRSAqbWFpbF9uZXdlbnZlbG9wZSAodm9pZCk7DXN0cnVjdCBtYWls
X2FkZHJlc3MgKm1haWxfbmV3YWRkciAodm9pZCk7DXN0cnVjdCBtYWlsX2JvZHlzdHJ1Y3QgKm1h
aWxfbmV3Ym9keSAodm9pZCk7DXN0cnVjdCBtYWlsX2JvZHlzdHJ1Y3QgKm1haWxfaW5pdGJvZHkg
KHN0cnVjdCBtYWlsX2JvZHlzdHJ1Y3QgKmJvZHkpOw1zdHJ1Y3QgbWFpbF9ib2R5X3BhcmFtZXRl
ciAqbWFpbF9uZXdib2R5X3BhcmFtZXRlciAodm9pZCk7DXN0cnVjdCBtYWlsX2JvZHlfcGFydCAq
bWFpbF9uZXdib2R5X3BhcnQgKHZvaWQpOw1zdHJ1Y3QgbWFpbF9ib2R5X21lc3NhZ2UgKm1haWxf
bmV3bXNnICh2b2lkKTsNc3RydWN0IHN0cmluZ19saXN0ICptYWlsX25ld3N0cmluZ2xpc3QgKHZv
aWQpOw1zdHJ1Y3Qgc2VhcmNoX3Byb2dyYW0gKm1haWxfbmV3c2VhcmNocGdtICh2b2lkKTsNc3Ry
dWN0IHNlYXJjaF9oZWFkZXIgKm1haWxfbmV3c2VhcmNoaGVhZGVyIChjaGFyICpsaW5lLGNoYXIg
KnRleHQpOw1zdHJ1Y3Qgc2VhcmNoX3NldCAqbWFpbF9uZXdzZWFyY2hzZXQgKHZvaWQpOw1zdHJ1
Y3Qgc2VhcmNoX29yICptYWlsX25ld3NlYXJjaG9yICh2b2lkKTsNc3RydWN0IHNlYXJjaF9wZ21f
bGlzdCAqbWFpbF9uZXdzZWFyY2hwZ21saXN0ICh2b2lkKTsNc3RydWN0IHNvcnRfcHJvZ3JhbSAq
bWFpbF9uZXdzb3J0cGdtICh2b2lkKTsNc3RydWN0IHRocmVhZF9ub2RlICptYWlsX25ld3RocmVh
ZG5vZGUgKHN0cnVjdCBzb3J0X2NhY2hlICpzYyk7DXN0cnVjdCBhY2xfbGlzdCAqbWFpbF9uZXdh
Y2xsaXN0ICh2b2lkKTsNc3RydWN0IHF1b3RhX2xpc3QgKm1haWxfbmV3cXVvdGFsaXN0ICh2b2lk
KTsNdm9pZCBtYWlsX2ZyZWVfYm9keSAoc3RydWN0IG1haWxfYm9keXN0cnVjdCAqKmJvZHkpOw12
b2lkIG1haWxfZnJlZV9ib2R5X2RhdGEgKHN0cnVjdCBtYWlsX2JvZHlzdHJ1Y3QgKmJvZHkpOw12
b2lkIG1haWxfZnJlZV9ib2R5X3BhcmFtZXRlciAoc3RydWN0IG1haWxfYm9keV9wYXJhbWV0ZXIg
KipwYXJhbWV0ZXIpOw12b2lkIG1haWxfZnJlZV9ib2R5X3BhcnQgKHN0cnVjdCBtYWlsX2JvZHlf
cGFydCAqKnBhcnQpOw12b2lkIG1haWxfZnJlZV9jYWNoZSAoTUFJTFNUUkVBTSAqc3RyZWFtKTsN
dm9pZCBtYWlsX2ZyZWVfZWx0IChNRVNTQUdFQ0FDSEUgKiplbHQpOw12b2lkIG1haWxfZnJlZV9l
bnZlbG9wZSAoRU5WRUxPUEUgKiplbnYpOw12b2lkIG1haWxfZnJlZV9hZGRyZXNzIChzdHJ1Y3Qg
bWFpbF9hZGRyZXNzICoqYWRkcmVzcyk7DXZvaWQgbWFpbF9mcmVlX3N0cmluZ2xpc3QgKHN0cnVj
dCBzdHJpbmdfbGlzdCAqKnN0cmluZyk7DXZvaWQgbWFpbF9mcmVlX3NlYXJjaHBnbSAoc3RydWN0
IHNlYXJjaF9wcm9ncmFtICoqcGdtKTsNdm9pZCBtYWlsX2ZyZWVfc2VhcmNoaGVhZGVyIChzdHJ1
Y3Qgc2VhcmNoX2hlYWRlciAqKmhkcik7DXZvaWQgbWFpbF9mcmVlX3NlYXJjaHNldCAoc3RydWN0
IHNlYXJjaF9zZXQgKipzZXQpOw12b2lkIG1haWxfZnJlZV9zZWFyY2hvciAoc3RydWN0IHNlYXJj
aF9vciAqKm9ybCk7DXZvaWQgbWFpbF9mcmVlX3NlYXJjaHBnbWxpc3QgKHN0cnVjdCBzZWFyY2hf
cGdtX2xpc3QgKipwZ2wpOw12b2lkIG1haWxfZnJlZV9uYW1lc3BhY2UgKHN0cnVjdCBtYWlsX25h
bWVzcGFjZSAqKm4pOw12b2lkIG1haWxfZnJlZV9zb3J0cGdtIChzdHJ1Y3Qgc29ydF9wcm9ncmFt
ICoqcGdtKTsNdm9pZCBtYWlsX2ZyZWVfdGhyZWFkbm9kZSAoc3RydWN0IHRocmVhZF9ub2RlICoq
dGhyKTsNdm9pZCBtYWlsX2ZyZWVfYWNsbGlzdCAoc3RydWN0IGFjbF9saXN0ICoqYWwpOw12b2lk
IG1haWxfZnJlZV9xdW90YWxpc3QgKHN0cnVjdCBxdW90YV9saXN0ICoqcWwpOw12b2lkIGF1dGhf
bGluayAoc3RydWN0IG1haWxfYXV0aGVudGljYXRvciAqYXV0aCk7DWNoYXIgKm1haWxfYXV0aCAo
Y2hhciAqbWVjaGFuaXNtLGF1dGhyZXNwb25zZV90IHJlc3AsaW50IGFyZ2MsY2hhciAqYXJndltd
KTsNc3RydWN0IG1haWxfYXV0aGVudGljYXRvciAqbWFpbF9sb29rdXBfYXV0aCAodW5zaWduZWQg
bG9uZyBpKTsNdW5zaWduZWQgaW50IG1haWxfbG9va3VwX2F1dGhfbmFtZSAoY2hhciAqbWVjaGFu
aXNtLGxvbmcgZmxhZ3MpOw0NTkVUU1RSRUFNICpuZXRfb3BlbiAoTkVUTUJYICptYixzdHJ1Y3Qg
bmV0X2RyaXZlciAqZHYsdW5zaWduZWQgbG9uZyBwb3J0LA0gICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3QgbmV0X2RyaXZlciAqYWx0ZCxjaGFyICphbHRzLHVuc2lnbmVkIGxvbmcgYWx0cCk7DU5F
VFNUUkVBTSAqbmV0X29wZW5fd29yayAoc3RydWN0IG5ldF9kcml2ZXIgKmR2LGNoYXIgKmhvc3Qs
Y2hhciAqc2VydmljZSwNICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBv
cnQsdW5zaWduZWQgbG9uZyBwb3J0b3ZlcnJpZGUsDSAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBmbGFncyk7DU5FVFNUUkVBTSAqbmV0X2FvcGVuIChzdHJ1Y3QgbmV0X2Ry
aXZlciAqZHYsTkVUTUJYICptYixjaGFyICpzZXJ2aWNlLGNoYXIgKnVzcmJ1Zik7DWNoYXIgKm5l
dF9nZXRsaW5lIChORVRTVFJFQU0gKnN0cmVhbSk7DQ1sb25nIG5ldF9nZXRidWZmZXIgKHZvaWQg
KnN0cmVhbSx1bnNpZ25lZCBsb25nIHNpemUsY2hhciAqYnVmZmVyKTsNbG9uZyBuZXRfc291dHIg
KE5FVFNUUkVBTSAqc3RyZWFtLGNoYXIgKnN0cmluZyk7DWxvbmcgbmV0X3NvdXQgKE5FVFNUUkVB
TSAqc3RyZWFtLGNoYXIgKnN0cmluZyx1bnNpZ25lZCBsb25nIHNpemUpOw12b2lkIG5ldF9jbG9z
ZSAoTkVUU1RSRUFNICpzdHJlYW0pOw1jaGFyICpuZXRfaG9zdCAoTkVUU1RSRUFNICpzdHJlYW0p
Ow1jaGFyICpuZXRfcmVtb3RlaG9zdCAoTkVUU1RSRUFNICpzdHJlYW0pOw11bnNpZ25lZCBsb25n
IG5ldF9wb3J0IChORVRTVFJFQU0gKnN0cmVhbSk7DWNoYXIgKm5ldF9sb2NhbGhvc3QgKE5FVFNU
UkVBTSAqc3RyZWFtKTsNDWxvbmcgc21fc3Vic2NyaWJlIChjaGFyICptYWlsYm94KTsNbG9uZyBz
bV91bnN1YnNjcmliZSAoY2hhciAqbWFpbGJveCk7DWNoYXIgKnNtX3JlYWQgKHZvaWQgKipzZGIp
Ow0jIDI3ICJtYnguYyIgMg0jIDEgIm9zZGVwLmgiIDENIyAyMSAib3NkZXAuaCINIyAxICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDEgMw0jIDEzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMNDQ0N
I3ByYWdtYSBpZGVudCAiQCgjKXN0cmluZy5oCTEuMjQJOTkvMDgvMTAgU01JIiANDSMgMSAiL3Vz
ci9pbmNsdWRlL2lzby9zdHJpbmdfaXNvLmgiIDEgMw0jIDI1ICIvdXNyL2luY2x1ZGUvaXNvL3N0
cmluZ19pc28uaCIgMw0NDQ0jcHJhZ21hIGlkZW50ICJAKCMpc3RyaW5nX2lzby5oCTEuMgk5OS8x
MS8wOSBTTUkiDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ1leHRlcm4gaW50IG1lbWNt
cChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsNZXh0ZXJuIHZvaWQgKm1lbWNw
eSh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsNZXh0ZXJuIHZvaWQgKm1lbW1vdmUodm9p
ZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7DWV4dGVybiB2b2lkICptZW1zZXQodm9pZCAqLCBp
bnQsIHNpemVfdCk7DWV4dGVybiBjaGFyICpzdHJjYXQoY2hhciAqLCBjb25zdCBjaGFyICopOw1l
eHRlcm4gaW50IHN0cmNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7DWV4dGVybiBjaGFy
ICpzdHJjcHkoY2hhciAqLCBjb25zdCBjaGFyICopOw1leHRlcm4gaW50IHN0cmNvbGwoY29uc3Qg
Y2hhciAqLCBjb25zdCBjaGFyICopOw1leHRlcm4gc2l6ZV90IHN0cmNzcG4oY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICopOw1leHRlcm4gY2hhciAqc3RyZXJyb3IoaW50KTsNZXh0ZXJuIHNpemVf
dCBzdHJsZW4oY29uc3QgY2hhciAqKTsNZXh0ZXJuIGNoYXIgKnN0cm5jYXQoY2hhciAqLCBjb25z
dCBjaGFyICosIHNpemVfdCk7DWV4dGVybiBpbnQgc3RybmNtcChjb25zdCBjaGFyICosIGNvbnN0
IGNoYXIgKiwgc2l6ZV90KTsNZXh0ZXJuIGNoYXIgKnN0cm5jcHkoY2hhciAqLCBjb25zdCBjaGFy
ICosIHNpemVfdCk7DWV4dGVybiBzaXplX3Qgc3Ryc3BuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh
ciAqKTsNZXh0ZXJuIGNoYXIgKnN0cnRvayhjaGFyICosIGNvbnN0IGNoYXIgKik7DWV4dGVybiBz
aXplX3Qgc3RyeGZybShjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsNIyAxMDMgIi91c3Iv
aW5jbHVkZS9pc28vc3RyaW5nX2lzby5oIiAzDQ0NDQ0NDQ0NDWV4dGVybiB2b2lkICptZW1jaHIo
Y29uc3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7DWV4dGVybiBjaGFyICpzdHJjaHIoY29uc3QgY2hh
ciAqLCBpbnQpOw1leHRlcm4gY2hhciAqc3RycGJyayhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
Kik7DWV4dGVybiBjaGFyICpzdHJyY2hyKGNvbnN0IGNoYXIgKiwgaW50KTsNZXh0ZXJuIGNoYXIg
KnN0cnN0cihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQ0NIyAxNDQgIi91c3IvaW5jbHVk
ZS9pc28vc3RyaW5nX2lzby5oIiAzDQ0NDQ0NDQ0NDQ0jIDE5ICIvdXNyL2luY2x1ZGUvc3RyaW5n
LmgiIDIgMw0NDQ0NDSMgNDggIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMw0NDQ0NDQ0NDQ0NDQ0N
DQ1leHRlcm4gdm9pZCAqbWVtY2NweSh2b2lkICosIGNvbnN0IHZvaWQgKiwgaW50LCBzaXplX3Qp
Ow0NDQ0NZXh0ZXJuIGNoYXIgKnN0cnNpZ25hbChpbnQpOw1leHRlcm4gaW50IGZmcyhpbnQpOw1l
eHRlcm4gaW50IHN0cmNhc2VjbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOw1leHRlcm4g
aW50IHN0cm5jYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOw1leHRl
cm4gc2l6ZV90IHN0cmxjcHkoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7DWV4dGVybiBz
aXplX3Qgc3RybGNhdChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsNDQ0NDQ1leHRlcm4g
Y2hhciAqc3RyZHVwKGNvbnN0IGNoYXIgKik7DQ0NDQ0NDQ0NDQ0NDQ0NIyAxMDIgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMw0NDQ0NDQ0NDQ0NDQ0NDSMgMjIgIm9zZGVwLmgiIDINDSMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMNIyAxMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAzDQ0NDSNwcmFnbWEgaWRlbnQgIkAoIyl0eXBlcy5oCTEuNjYJMDAvMDIvMTQgU01JIg0NDQ0N
DQ0NIyAxICIvdXNyL2luY2x1ZGUvc3lzL21hY2h0eXBlcy5oIiAxIDMNIyAxMyAiL3Vzci9pbmNs
dWRlL3N5cy9tYWNodHlwZXMuaCIgMw0NDQ0jcHJhZ21hIGlkZW50ICJAKCMpbWFjaHR5cGVzLmgJ
MS4xMwk5OS8wNS8wNCBTTUkiDQ0NDQ0NIyAzMCAiL3Vzci9pbmNsdWRlL3N5cy9tYWNodHlwZXMu
aCIgMw0NDQ10eXBlZGVmIHN0cnVjdCBfbGFiZWxfdCB7IGxvbmcgdmFsWzJdOyB9IGxhYmVsX3Q7
DQ0NDXR5cGVkZWYgdW5zaWduZWQgY2hhciBsb2NrX3Q7DQ0NDQ0NIyAyNSAiL3Vzci9pbmNsdWRl
L3N5cy90eXBlcy5oIiAyIDMNIyAzMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzDQ0NDSMg
MSAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfdHlwZXMuaCIgMSAzDQ0NDQ0NDQ0NI3ByYWdtYSBpZGVu
dCAiQCgjKWludF90eXBlcy5oCTEuNgk5Ny8wOC8yMCBTTUkiDSMgNDIgIi91c3IvaW5jbHVkZS9z
eXMvaW50X3R5cGVzLmgiIDMNDQ0NDSMgNjEgIi91c3IvaW5jbHVkZS9zeXMvaW50X3R5cGVzLmgi
IDMNDXR5cGVkZWYgY2hhciBpbnQ4X3Q7DQ0NDQ0NdHlwZWRlZiBzaG9ydCBpbnQxNl90Ow10eXBl
ZGVmIGludCBpbnQzMl90Ow0NDQ0NdHlwZWRlZiBsb25nIGxvbmcgaW50NjRfdDsNDQ0NdHlwZWRl
ZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7DXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7
DXR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90Ow0NDQ0NdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGxvbmcgdWludDY0X3Q7DQ0NDQ0NDQ0NdHlwZWRlZiBpbnQ2NF90IGludG1heF90Ow10eXBlZGVm
IHVpbnQ2NF90IHVpbnRtYXhfdDsNDQ0NDQ0NDQ0NDQ0NDQ10eXBlZGVmIGludCBpbnRwdHJfdDsN
dHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludHB0cl90Ow0NDQ0NDQ0NdHlwZWRlZiBjaGFyIGludF9s
ZWFzdDhfdDsNDQ0NDQ10eXBlZGVmIHNob3J0IGludF9sZWFzdDE2X3Q7DXR5cGVkZWYgaW50IGlu
dF9sZWFzdDMyX3Q7DQ0NDQ10eXBlZGVmIGxvbmcgbG9uZyBpbnRfbGVhc3Q2NF90Ow0NDQ10eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgdWludF9sZWFzdDhfdDsNdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1
aW50X2xlYXN0MTZfdDsNdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9sZWFzdDMyX3Q7DQ0NDQ10
eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1aW50X2xlYXN0NjRfdDsNDQ0NDQ0NDSMgMzcgIi91
c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzDQ0NDQ0NDQ0NDQ0NDQ0NDQ10eXBlZGVmIGxvbmcg
bG9uZyBsb25nbG9uZ190Ow10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1X2xvbmdsb25nX3Q7
DSMgNjUgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMw0NDQ0NDQ0NDQ0NDXR5cGVkZWYgbG9u
ZyB0X3NjYWxhcl90Ow10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdF91c2NhbGFyX3Q7DQ0NDQ0NdHlw
ZWRlZiB1bnNpZ25lZCBjaGFyIHVjaGFyX3Q7DXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0
X3Q7DXR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRfdDsNdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVs
b25nX3Q7DQ10eXBlZGVmIGNoYXIgKmNhZGRyX3Q7DXR5cGVkZWYgbG9uZyBkYWRkcl90Ow10eXBl
ZGVmIHNob3J0IGNudF90Ow0NDXR5cGVkZWYgdWxvbmdfdCBwYWRkcl90Ow0NDQ0NDQ0NDQ10eXBl
ZGVmIGludCBwdHJkaWZmX3Q7DQ0NDQ0NDXR5cGVkZWYgdWxvbmdfdCBwZm5fdDsNdHlwZWRlZiB1
bG9uZ190IHBnY250X3Q7DXR5cGVkZWYgbG9uZyBzcGdjbnRfdDsNDXR5cGVkZWYgdWNoYXJfdCB1
c2VfdDsNdHlwZWRlZiBzaG9ydCBzeXNpZF90Ow10eXBlZGVmIHNob3J0IGluZGV4X3Q7DXR5cGVk
ZWYgdm9pZCAqdGltZW91dF9pZF90Ow10eXBlZGVmIHZvaWQgKmJ1ZmNhbGxfaWRfdDsNIyAxMjgg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMw0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDXR5cGVkZWYg
dWxvbmdfdCBpbm9fdDsNdHlwZWRlZiBsb25nIGJsa2NudF90Ow10eXBlZGVmIHVsb25nX3QgZnNi
bGtjbnRfdDsNdHlwZWRlZiB1bG9uZ190IGZzZmlsY250X3Q7DQ0NDQ0NDQ0NDQ0NDQ0NdHlwZWRl
ZiB1X2xvbmdsb25nX3QgaW5vNjRfdDsNdHlwZWRlZiBsb25nbG9uZ190IGJsa2NudDY0X3Q7DXR5
cGVkZWYgdV9sb25nbG9uZ190IGZzYmxrY250NjRfdDsNdHlwZWRlZiB1X2xvbmdsb25nX3QgZnNm
aWxjbnQ2NF90Ow0NDQ0NDQ10eXBlZGVmIGxvbmcgYmxrc2l6ZV90Ow0NDQ0NDXR5cGVkZWYgZW51
bSB7IEJfRkFMU0UsIEJfVFJVRSB9IGJvb2xlYW5fdDsNIyAxOTIgIi91c3IvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMw0NdHlwZWRlZiBpbnQ2NF90IHBhZDY0X3Q7DXR5cGVkZWYgdWludDY0X3QgdXBh
ZDY0X3Q7DSMgMjA0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMNDQ10eXBlZGVmIGxvbmds
b25nX3Qgb2Zmc2V0X3Q7DXR5cGVkZWYgdV9sb25nbG9uZ190IHVfb2Zmc2V0X3Q7DXR5cGVkZWYg
dV9sb25nbG9uZ190IGxlbl90Ow10eXBlZGVmIGxvbmdsb25nX3QgZGlza2FkZHJfdDsNDQ0NDQ0N
IyAyMjQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMw0NDQ10eXBlZGVmIHVuaW9uIHsNICAg
ICAgICBvZmZzZXRfdCBfZjsNICAgICAgICBzdHJ1Y3Qgew0gICAgICAgICAgICAgICAgaW50MzJf
dCBfdTsNICAgICAgICAgICAgICAgIGludDMyX3QgX2w7DSAgICAgICAgfSBfcDsNfSBsbG9mZl90
Ow0NDSMgMjQ0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMNDQ0NdHlwZWRlZiB1bmlvbiB7
DSAgICAgICAgZGlza2FkZHJfdCBfZjsNICAgICAgICBzdHJ1Y3Qgew0gICAgICAgICAgICAgICAg
aW50MzJfdCBfdTsNICAgICAgICAgICAgICAgIGludDMyX3QgX2w7DSAgICAgICAgfSBfcDsNfSBs
bGRhZGRyX3Q7DQ0NdHlwZWRlZiB1aW50X3Qga19mbHRzZXRfdDsNIyAyNjcgIi91c3IvaW5jbHVk
ZS9zeXMvdHlwZXMuaCIgMw0NDQ10eXBlZGVmIGxvbmcgaWRfdDsNDQ0NDQ0NdHlwZWRlZiB1aW50
X3QgdXNlY29uZHNfdDsNDQ0NdHlwZWRlZiBsb25nIHN1c2Vjb25kc190Ow0NDQ0NDQ0NDQ10eXBl
ZGVmIHVsb25nX3QgbWFqb3JfdDsNdHlwZWRlZiB1bG9uZ190IG1pbm9yX3Q7DQ0NDQ0NdHlwZWRl
ZiBzaG9ydCBwcmlfdDsNIyAzMTEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMw10eXBlZGVm
IHVzaG9ydF90IG9fbW9kZV90Ow10eXBlZGVmIHNob3J0IG9fZGV2X3Q7DXR5cGVkZWYgdXNob3J0
X3Qgb191aWRfdDsNdHlwZWRlZiBvX3VpZF90IG9fZ2lkX3Q7DXR5cGVkZWYgc2hvcnQgb19ubGlu
a190Ow10eXBlZGVmIHNob3J0IG9fcGlkX3Q7DXR5cGVkZWYgdXNob3J0X3Qgb19pbm9fdDsNDQ0N
DQ10eXBlZGVmIGludCBrZXlfdDsNDQ0NdHlwZWRlZiB1bG9uZ190IG1vZGVfdDsNDQ0NDQ0NDXR5
cGVkZWYgbG9uZyB1aWRfdDsNDQ0NdHlwZWRlZiB1aWRfdCBnaWRfdDsNDXR5cGVkZWYgaWRfdCB0
YXNraWRfdDsNdHlwZWRlZiBpZF90IHByb2ppZF90Ow0NDQ0NDQ10eXBlZGVmIHVuc2lnbmVkIGlu
dCBwdGhyZWFkX3Q7DXR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfa2V5X3Q7DQ10eXBlZGVm
IHN0cnVjdCBfcHRocmVhZF9tdXRleCB7DSAgICAgICAgc3RydWN0IHsNICAgICAgICAgICAgICAg
IHVpbnQxNl90IF9fcHRocmVhZF9tdXRleF9mbGFnMTsNICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
X19wdGhyZWFkX211dGV4X2ZsYWcyOw0gICAgICAgICAgICAgICAgdWludDhfdCBfX3B0aHJlYWRf
bXV0ZXhfY2VpbGluZzsNICAgICAgICAgICAgICAgIHVpbnQzMl90IF9fcHRocmVhZF9tdXRleF90
eXBlOw0gICAgICAgIH0gX19wdGhyZWFkX211dGV4X2ZsYWdzOw0gICAgICAgIHVuaW9uIHsNICAg
ICAgICAgICAgICAgIHN0cnVjdCB7DSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgX19w
dGhyZWFkX211dGV4X3BhZFs4XTsNICAgICAgICAgICAgICAgIH0gX19wdGhyZWFkX211dGV4X2xv
Y2s2NDsNICAgICAgICAgICAgICAgIHVwYWQ2NF90IF9fcHRocmVhZF9tdXRleF9vd25lcjY0Ow0g
ICAgICAgIH0gX19wdGhyZWFkX211dGV4X2xvY2s7DSAgICAgICAgdXBhZDY0X3QgX19wdGhyZWFk
X211dGV4X2RhdGE7DX0gcHRocmVhZF9tdXRleF90Ow0NdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRf
Y29uZCB7DSAgICAgICAgc3RydWN0IHsNICAgICAgICAgICAgICAgIHVpbnQ4X3QgX19wdGhyZWFk
X2NvbmRfZmxhZ1s0XTsNICAgICAgICAgICAgICAgIHVpbnQzMl90IF9fcHRocmVhZF9jb25kX3R5
cGU7DSAgICAgICAgfSBfX3B0aHJlYWRfY29uZF9mbGFnczsNICAgICAgICB1cGFkNjRfdCBfX3B0
aHJlYWRfY29uZF9kYXRhOw19IHB0aHJlYWRfY29uZF90Ow0NDQ0NdHlwZWRlZiBzdHJ1Y3QgX3B0
aHJlYWRfcndsb2NrIHsNICAgICAgICBpbnQzMl90IF9fcHRocmVhZF9yd2xvY2tfcmVhZGVyczsN
ICAgICAgICB1aW50MTZfdCBfX3B0aHJlYWRfcndsb2NrX3R5cGU7DSAgICAgICAgdWludDE2X3Qg
X19wdGhyZWFkX3J3bG9ja19tYWdpYzsNICAgICAgICB1cGFkNjRfdCBfX3B0aHJlYWRfcndsb2Nr
X3BhZDFbM107DSAgICAgICAgdXBhZDY0X3QgX19wdGhyZWFkX3J3bG9ja19wYWQyWzJdOw0gICAg
ICAgIHVwYWQ2NF90IF9fcHRocmVhZF9yd2xvY2tfcGFkM1syXTsNfSBwdGhyZWFkX3J3bG9ja190
Ow0NDQ0NdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfYXR0ciB7DSAgICAgICAgdm9pZCAqX19wdGhy
ZWFkX2F0dHJwOw19IHB0aHJlYWRfYXR0cl90Ow0NDQ0NDXR5cGVkZWYgc3RydWN0IF9wdGhyZWFk
X211dGV4YXR0ciB7DSAgICAgICAgdm9pZCAqX19wdGhyZWFkX211dGV4YXR0cnA7DX0gcHRocmVh
ZF9tdXRleGF0dHJfdDsNDQ0NDQ10eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9jb25kYXR0ciB7DSAg
ICAgICAgdm9pZCAqX19wdGhyZWFkX2NvbmRhdHRycDsNfSBwdGhyZWFkX2NvbmRhdHRyX3Q7DQ0N
DQ10eXBlZGVmIHN0cnVjdCBfb25jZSB7DSAgICAgICAgdXBhZDY0X3QgX19wdGhyZWFkX29uY2Vf
cGFkWzRdOw19IHB0aHJlYWRfb25jZV90Ow0NDQ0NDXR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX3J3
bG9ja2F0dHIgew0gICAgICAgIHZvaWQgKl9fcHRocmVhZF9yd2xvY2thdHRycDsNfSBwdGhyZWFk
X3J3bG9ja2F0dHJfdDsNDXR5cGVkZWYgdWxvbmdfdCBkZXZfdDsNDQ0NDQ10eXBlZGVmIHVsb25n
X3QgbmxpbmtfdDsNdHlwZWRlZiBsb25nIHBpZF90Ow0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NdHlw
ZWRlZiBsb25nIHRpbWVfdDsNDQ0NDXR5cGVkZWYgbG9uZyBjbG9ja190Ow0NDQ0NdHlwZWRlZiBp
bnQgY2xvY2tpZF90Ow0NDQ0NdHlwZWRlZiBpbnQgdGltZXJfdDsNDQ0NDQ0NdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIHVuY2hhcjsNdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnQ7DXR5cGVkZWYg
dW5zaWduZWQgaW50IHVpbnQ7DXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsNDQ0jIDQ5MiAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ10eXBlZGVmIHVuc2lnbmVkIGNoYXIgdV9jaGFyOw10eXBlZGVmIHVuc2lnbmVk
IHNob3J0IHVfc2hvcnQ7DXR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50Ow10eXBlZGVmIHVuc2ln
bmVkIGxvbmcgdV9sb25nOw10eXBlZGVmIHN0cnVjdCBfcXVhZCB7IGludCB2YWxbMl07IH0gcXVh
ZF90Ow10eXBlZGVmIHF1YWRfdCBxdWFkOw0NDQ0NDQ0jIDEgIi91c3IvaW5jbHVkZS9zeXMvc2Vs
ZWN0LmgiIDEgMw0jIDkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMNDQ0NI3ByYWdtYSBp
ZGVudCAiQCgjKXNlbGVjdC5oCTEuMTYJOTgvMDQvMjcgU01JIiANDQ0NDSMgMSAiL3Vzci9pbmNs
dWRlL3N5cy90aW1lLmgiIDEgMw0jIDE5ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMw0NDQ0j
cHJhZ21hIGlkZW50ICJAKCMpdGltZS5oCTIuNjQJOTkvMTAvMDUgU01JIiANDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ1zdHJ1Y3QgdGltZXZhbCB7DSAgICAgICAgdGltZV90IHR2X3NlYzsNICAg
ICAgICBzdXNlY29uZHNfdCB0dl91c2VjOw19Ow0NIyA3NCAiL3Vzci9pbmNsdWRlL3N5cy90aW1l
LmgiIDMNDQ0NDQ0NDQ1zdHJ1Y3QgdGltZXpvbmUgew0gICAgICAgIGludCB0el9taW51dGVzd2Vz
dDsNICAgICAgICBpbnQgdHpfZHN0dGltZTsNfTsNDQ0NDQ0NDQ0NDQ0NDQ0jIDEgIi91c3IvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMSAzDSMgMTMgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMw0j
IDMzICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDSMg
NjUgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMw0NDQ0NDQ0NDQ0NDQ0NIyA5MiAiL3Vzci9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0jIDEyOCAiL3Vzci9pbmNsdWRlL3N5
cy90eXBlcy5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0jIDE5MiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzDQ0NDSMgMjA0ICIv
dXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMNIyAyMTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMw0jIDIyNCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzDQ0NIyAyMzQgIi91c3IvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMw0NDSMgMjQ0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMN
DQ0jIDI1NCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzDSMgMjY3ICIvdXNyL2luY2x1ZGUv
c3lzL3R5cGVzLmgiIDMNDQ0NDSMgMjc5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMNDQ0N
DQ0NDQ0NDQ0NDQ0jIDMyNCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzDQ0NDQ0NDQ0NDQ0N
DQ0jIDQyOCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0jIDQ4NCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAzDSMgNDkyICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMNDQ0NDQ0NDQ0NDQ0NDQ0jIDUx
OCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzDQ0NDQ0NIyA1NDYgIi91c3IvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMw0jIDU2MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzDQ0NDQ0jIDEw
MSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMw0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ1zdHJ1Y3QgaXRpbWVydmFsIHsNICAgICAgICBz
dHJ1Y3QgdGltZXZhbCBpdF9pbnRlcnZhbDsNICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1
ZTsNfTsNDSMgMTgxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMw0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NdHlwZWRlZiBsb25nbG9uZ190IGhydGltZV90Ow0NIyAzMDcgIi91c3IvaW5jbHVkZS9z
eXMvdGltZS5oIiAzDQ0NDQ0NDQ0NDWludCBhZGp0aW1lKHN0cnVjdCB0aW1ldmFsICosIHN0cnVj
dCB0aW1ldmFsICopOw0NDQ0NDQ0NDQ0NaW50IGdldGl0aW1lcihpbnQsIHN0cnVjdCBpdGltZXJ2
YWwgKik7DWludCB1dGltZXMoY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKTsN
DQ0NaW50IHNldGl0aW1lcihpbnQsIHN0cnVjdCBpdGltZXJ2YWwgKiwgc3RydWN0IGl0aW1lcnZh
bCAqKTsNDQ0NDQ0NDQ0NIyAzNTggIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzDQ0NDQ0NDQ1p
bnQgc2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICosIHZvaWQgKik7DQ1ocnRpbWVfdCBnZXRo
cnRpbWUodm9pZCk7DWhydGltZV90IGdldGhydnRpbWUodm9pZCk7DQ0NDQ0NDQ0NDQ0NDQ0NDQ1p
bnQgZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICosIHZvaWQgKik7DQ0NDQ0NIyA0MDQgIi91
c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzDQ0NIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMN
IyAxMyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMw0NDQ0jcHJhZ21hIGlkZW50ICJAKCMpdGltZS5o
CTEuMzkJOTkvMDgvMTAgU01JIiANDQ0NIyAxICIvdXNyL2luY2x1ZGUvaXNvL3RpbWVfaXNvLmgi
IDEgMw0jIDI1ICIvdXNyL2luY2x1ZGUvaXNvL3RpbWVfaXNvLmgiIDMNDQ0NI3ByYWdtYSBpZGVu
dCAiQCgjKXRpbWVfaXNvLmgJMS4xCTk5LzA4LzA5IFNNSSIgDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ1zdHJ1Y3QgdG0gew0gICAgICAgIGludCB0bV9zZWM7DSAgICAg
ICAgaW50IHRtX21pbjsNICAgICAgICBpbnQgdG1faG91cjsNICAgICAgICBpbnQgdG1fbWRheTsN
ICAgICAgICBpbnQgdG1fbW9uOw0gICAgICAgIGludCB0bV95ZWFyOw0gICAgICAgIGludCB0bV93
ZGF5Ow0gICAgICAgIGludCB0bV95ZGF5Ow0gICAgICAgIGludCB0bV9pc2RzdDsNfTsNDQ0NDWV4
dGVybiBjaGFyICphc2N0aW1lKGNvbnN0IHN0cnVjdCB0bSAqKTsNZXh0ZXJuIGNsb2NrX3QgY2xv
Y2sodm9pZCk7DWV4dGVybiBjaGFyICpjdGltZShjb25zdCB0aW1lX3QgKik7DWV4dGVybiBkb3Vi
bGUgZGlmZnRpbWUodGltZV90LCB0aW1lX3QpOw1leHRlcm4gc3RydWN0IHRtICpnbXRpbWUoY29u
c3QgdGltZV90ICopOw1leHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWUoY29uc3QgdGltZV90ICop
Ow1leHRlcm4gdGltZV90IG1rdGltZShzdHJ1Y3QgdG0gKik7DWV4dGVybiB0aW1lX3QgdGltZSh0
aW1lX3QgKik7DWV4dGVybiBzaXplX3Qgc3RyZnRpbWUoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNo
YXIgKiwgY29uc3Qgc3RydWN0IHRtICopOw0NIyAxMDYgIi91c3IvaW5jbHVkZS9pc28vdGltZV9p
c28uaCIgMw0NDQ0NDQ0NDQ0NIyAyMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzDQ0NDQ0NIyA0
MCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMw0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ1leHRl
cm4gY2hhciAqc3RycHRpbWUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHN0cnVjdCB0bSAq
KTsNDQ0NDQ0NDQ0NDQ0NDQ0NIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVfaW1wbC5oIiAxIDMN
IyAxMiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMw0NDQ0jcHJhZ21hIGlkZW50ICJA
KCMpdGltZV9pbXBsLmgJMS41CTk5LzEwLzA1IFNNSSINDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ10eXBl
ZGVmIHN0cnVjdCB0aW1lc3BlYyB7DSAgICAgICAgdGltZV90IHR2X3NlYzsNICAgICAgICBsb25n
IHR2X25zZWM7DX0gdGltZXNwZWNfdDsNDSMgNTggIi91c3IvaW5jbHVkZS9zeXMvdGltZV9pbXBs
LmgiIDMNDQ10eXBlZGVmIHN0cnVjdCB0aW1lc3BlYyB0aW1lc3RydWNfdDsNDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NdHlwZWRlZiBzdHJ1Y3QgaXRpbWVyc3BlYyB7DSAgICAgICAgc3RydWN0IHRpbWVzcGVj
IGl0X2ludGVydmFsOw0gICAgICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsNfSBpdGltZXJz
cGVjX3Q7DQ0jIDEwMCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMw0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0jIDg0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAy
IDMNIyA5NiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMw0NDXVuaW9uIHNpZ3ZhbCB7DSAgICAgICAg
aW50IHNpdmFsX2ludDsNICAgICAgICB2b2lkICpzaXZhbF9wdHI7DX07DQ0NDQ1zdHJ1Y3Qgc2ln
ZXZlbnQgew0gICAgICAgIGludCBzaWdldl9ub3RpZnk7DSAgICAgICAgaW50IHNpZ2V2X3NpZ25v
Ow0gICAgICAgIHVuaW9uIHNpZ3ZhbCBzaWdldl92YWx1ZTsNICAgICAgICB2b2lkICgqc2lnZXZf
bm90aWZ5X2Z1bmN0aW9uKSh1bmlvbiBzaWd2YWwpOw0gICAgICAgIHB0aHJlYWRfYXR0cl90ICpz
aWdldl9ub3RpZnlfYXR0cmlidXRlczsNICAgICAgICBpbnQgX19zaWdldl9wYWQyOw19Ow0NDWV4
dGVybiBpbnQgY2xvY2tfZ2V0cmVzKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICopOw1leHRl
cm4gaW50IGNsb2NrX2dldHRpbWUoY2xvY2tpZF90LCBzdHJ1Y3QgdGltZXNwZWMgKik7DWV4dGVy
biBpbnQgY2xvY2tfc2V0dGltZShjbG9ja2lkX3QsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqKTsN
ZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUoY2xvY2tpZF90LCBzdHJ1Y3Qgc2lnZXZlbnQgKiwgdGlt
ZXJfdCAqKTsNZXh0ZXJuIGludCB0aW1lcl9kZWxldGUodGltZXJfdCk7DWV4dGVybiBpbnQgdGlt
ZXJfZ2V0b3ZlcnJ1bih0aW1lcl90KTsNZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1lKHRpbWVyX3Qs
IHN0cnVjdCBpdGltZXJzcGVjICopOw1leHRlcm4gaW50IHRpbWVyX3NldHRpbWUodGltZXJfdCwg
aW50LCBjb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYyAqLA0gICAgICAgICAgICAgICAgc3RydWN0IGl0
aW1lcnNwZWMgKik7DWV4dGVybiBpbnQgbmFub3NsZWVwKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAq
LCBzdHJ1Y3QgdGltZXNwZWMgKik7DQ0NDQ1leHRlcm4gdm9pZCB0enNldCh2b2lkKTsNDWV4dGVy
biBjaGFyICp0em5hbWVbMl07DQ0NZXh0ZXJuIGxvbmcgX3N5c2NvbmYoaW50KTsNDQ0NDQ0NZXh0
ZXJuIGxvbmcgdGltZXpvbmU7DWV4dGVybiBpbnQgZGF5bGlnaHQ7DQ0NDQ0NZXh0ZXJuIGludCBj
ZnRpbWUoY2hhciAqLCBjaGFyICosIGNvbnN0IHRpbWVfdCAqKTsNZXh0ZXJuIGludCBhc2NmdGlt
ZShjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHRtICopOw1leHRlcm4gbG9uZyBh
bHR6b25lOw0NDQ0NZXh0ZXJuIHN0cnVjdCB0bSAqZ2V0ZGF0ZShjb25zdCBjaGFyICopOw0NDQ0N
DQ1leHRlcm4gaW50IGdldGRhdGVfZXJyOw0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0jIDI0MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMw0NDQ0NDQ0NDQ0NDQ0jIDI2
OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMw0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0jIDMwNCAiL3Vzci9p
bmNsdWRlL3RpbWUuaCIgMw0NDQ0NDQ0NDQ0NDQ0NDQ0NDSMgNDA3ICIvdXNyL2luY2x1ZGUvc3lz
L3RpbWUuaCIgMiAzDSMgNDE2ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMw0NDQ0jIDEgIi91
c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMw0jIDkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDMNDQ0NDQ0NDQ0NDQ0NDSMgMzAgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMNDQ0N
DQ0NDQ0NDQ0NDQ0NDSMgNTQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMNDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDSMgODkgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMNDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NIyA0MjAgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAyIDMNDQ0NDQ0NDQ0jIDE4
ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMNDQ0NDSMgMzAgIi91c3IvaW5jbHVkZS9z
eXMvc2VsZWN0LmgiIDMNDQ0NDQ0NDQ0NDQ0NDQ0NdHlwZWRlZiBsb25nIGZkX21hc2s7DQ10eXBl
ZGVmIGxvbmcgZmRzX21hc2s7DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ10eXBlZGVmIHN0cnVj
dCBmZF9zZXQgew0NDQ0gICAgICAgIGxvbmcgZmRzX2JpdHNbKCgoMTAyNCkrKCgoc2l6ZW9mIChm
ZHNfbWFzaykgKiA4KSktMSkpLygoc2l6ZW9mIChmZHNfbWFzaykgKiA4KSkpXTsNfSBmZF9zZXQ7
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDWV4dGVybiBpbnQgc2VsZWN0KGludCwgZmRfc2V0ICosIGZkX3Nl
dCAqLCBmZF9zZXQgKiwgc3RydWN0IHRpbWV2YWwgKik7DQ0NDQ0NDQ0NDSMgNTQ1ICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDIgMw0NIyA1NTggIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
Mw0NDQ0NDQ0jIDI0ICJvc2RlcC5oIiAyDSMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMN
IyAxMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzDQ0NDSNwcmFnbWEgaWRlbnQgIkAoIylzdGRs
aWIuaAkxLjQ3CTk5LzExLzAzIFNNSSIgDQ0jIDEgIi91c3IvaW5jbHVkZS9pc28vc3RkbGliX2lz
by5oIiAxIDMNIyAyNSAiL3Vzci9pbmNsdWRlL2lzby9zdGRsaWJfaXNvLmgiIDMNDQ0NI3ByYWdt
YSBpZGVudCAiQCgjKXN0ZGxpYl9pc28uaAkxLjEJOTkvMDgvMDkgU01JIiANDQ0NDQ0NDQ0NDQ10
eXBlZGVmIHN0cnVjdCB7DSAgICAgICAgaW50IHF1b3Q7DSAgICAgICAgaW50IHJlbTsNfSBkaXZf
dDsNDXR5cGVkZWYgc3RydWN0IHsNICAgICAgICBsb25nIHF1b3Q7DSAgICAgICAgbG9uZyByZW07
DX0gbGRpdl90Ow0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ10eXBlZGVmIGxvbmcgd2NoYXJf
dDsNDQ0NDQ1leHRlcm4gdW5zaWduZWQgY2hhciBfX2N0eXBlW107DQ0NZXh0ZXJuIHZvaWQgYWJv
cnQodm9pZCk7DWV4dGVybiBpbnQgYWJzKGludCk7DWV4dGVybiBpbnQgYXRleGl0KHZvaWQgKCop
KHZvaWQpKTsNZXh0ZXJuIGRvdWJsZSBhdG9mKGNvbnN0IGNoYXIgKik7DWV4dGVybiBpbnQgYXRv
aShjb25zdCBjaGFyICopOw1leHRlcm4gbG9uZyBpbnQgYXRvbChjb25zdCBjaGFyICopOw1leHRl
cm4gdm9pZCAqYnNlYXJjaChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBzaXpl
X3QsDSAgICAgICAgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOw1leHRlcm4g
dm9pZCAqY2FsbG9jKHNpemVfdCwgc2l6ZV90KTsNZXh0ZXJuIGRpdl90IGRpdihpbnQsIGludCk7
DWV4dGVybiB2b2lkIGV4aXQoaW50KTsNZXh0ZXJuIHZvaWQgZnJlZSh2b2lkICopOw1leHRlcm4g
Y2hhciAqZ2V0ZW52KGNvbnN0IGNoYXIgKik7DWV4dGVybiBsb25nIGludCBsYWJzKGxvbmcpOw1l
eHRlcm4gbGRpdl90IGxkaXYobG9uZywgbG9uZyk7DWV4dGVybiB2b2lkICptYWxsb2Moc2l6ZV90
KTsNZXh0ZXJuIGludCBtYmxlbihjb25zdCBjaGFyICosIHNpemVfdCk7DWV4dGVybiBzaXplX3Qg
bWJzdG93Y3Mod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7DWV4dGVybiBpbnQgbWJ0
b3djKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOw1leHRlcm4gdm9pZCBxc29ydCh2
b2lkICosIHNpemVfdCwgc2l6ZV90LA0gICAgICAgIGludCAoKikoY29uc3Qgdm9pZCAqLCBjb25z
dCB2b2lkICopKTsNZXh0ZXJuIGludCByYW5kKHZvaWQpOw1leHRlcm4gdm9pZCAqcmVhbGxvYyh2
b2lkICosIHNpemVfdCk7DWV4dGVybiB2b2lkIHNyYW5kKHVuc2lnbmVkIGludCk7DWV4dGVybiBk
b3VibGUgc3RydG9kKGNvbnN0IGNoYXIgKiwgY2hhciAqKik7DWV4dGVybiBsb25nIGludCBzdHJ0
b2woY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOw1leHRlcm4gdW5zaWduZWQgbG9uZyBpbnQg
c3RydG91bChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7DWV4dGVybiBpbnQgc3lzdGVtKGNv
bnN0IGNoYXIgKik7DWV4dGVybiBpbnQgd2N0b21iKGNoYXIgKiwgd2NoYXJfdCk7DWV4dGVybiBz
aXplX3Qgd2NzdG9tYnMoY2hhciAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7DQ0jIDE1MCAi
L3Vzci9pbmNsdWRlL2lzby9zdGRsaWJfaXNvLmgiIDMNDQ0NDQ0NDQ0NDSMgMTkgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMiAzDQ0NDQ0NDQ0NDQ0jIDYxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi
IDMNDQ0NDQ0NDXR5cGVkZWYgc3RydWN0IHsNICAgICAgICBsb25nIGxvbmcgcXVvdDsNICAgICAg
ICBsb25nIGxvbmcgcmVtOw19IGxsZGl2X3Q7DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ1leHRlcm4gdm9pZCBfZXhpdGhhbmRsZSh2b2lkKTsNDQ0NDWV4dGVybiBkb3Vi
bGUgZHJhbmQ0OCh2b2lkKTsNZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4KHVuc2lnbmVkIHNob3J0ICop
Ow1leHRlcm4gbG9uZyBqcmFuZDQ4KHVuc2lnbmVkIHNob3J0ICopOw1leHRlcm4gdm9pZCBsY29u
ZzQ4KHVuc2lnbmVkIHNob3J0ICopOw1leHRlcm4gbG9uZyBscmFuZDQ4KHZvaWQpOw1leHRlcm4g
bG9uZyBtcmFuZDQ4KHZvaWQpOw1leHRlcm4gbG9uZyBucmFuZDQ4KHVuc2lnbmVkIHNob3J0ICop
Ow1leHRlcm4gdW5zaWduZWQgc2hvcnQgKnNlZWQ0OCh1bnNpZ25lZCBzaG9ydCAqKTsNZXh0ZXJu
IHZvaWQgc3JhbmQ0OChsb25nKTsNZXh0ZXJuIGludCBwdXRlbnYoY2hhciAqKTsNZXh0ZXJuIHZv
aWQgc2V0a2V5KGNvbnN0IGNoYXIgKik7DQ0NDQ0NDQ0NDQ0NDQ0NDQ1leHRlcm4gdm9pZCBzd2Fi
KGNvbnN0IGNoYXIgKiwgY2hhciAqLCBzc2l6ZV90KTsNDQ0NDQ1leHRlcm4gaW50IG1rc3RlbXAo
Y2hhciAqKTsNDQ0NDWV4dGVybiBpbnQgbWtzdGVtcDY0KGNoYXIgKik7DQ0NDQ0NZXh0ZXJuIGxv
bmcgYTY0bChjb25zdCBjaGFyICopOw1leHRlcm4gY2hhciAqZWN2dChkb3VibGUsIGludCwgaW50
ICosIGludCAqKTsNZXh0ZXJuIGNoYXIgKmZjdnQoZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7
DWV4dGVybiBjaGFyICpnY3Z0KGRvdWJsZSwgaW50LCBjaGFyICopOw1leHRlcm4gaW50IGdldHN1
Ym9wdChjaGFyICoqLCBjaGFyICpjb25zdCAqLCBjaGFyICoqKTsNZXh0ZXJuIGludCBncmFudHB0
KGludCk7DWV4dGVybiBjaGFyICppbml0c3RhdGUodW5zaWduZWQsIGNoYXIgKiwgc2l6ZV90KTsN
ZXh0ZXJuIGNoYXIgKmw2NGEobG9uZyk7DWV4dGVybiBjaGFyICpta3RlbXAoY2hhciAqKTsNZXh0
ZXJuIGNoYXIgKnB0c25hbWUoaW50KTsNZXh0ZXJuIGxvbmcgcmFuZG9tKHZvaWQpOw1leHRlcm4g
Y2hhciAqcmVhbHBhdGgoY29uc3QgY2hhciAqLCBjaGFyICopOw1leHRlcm4gY2hhciAqc2V0c3Rh
dGUoY29uc3QgY2hhciAqKTsNZXh0ZXJuIHZvaWQgc3JhbmRvbSh1bnNpZ25lZCk7DWV4dGVybiBp
bnQgdHR5c2xvdCh2b2lkKTsNZXh0ZXJuIGludCB1bmxvY2twdChpbnQpOw1leHRlcm4gdm9pZCAq
dmFsbG9jKHNpemVfdCk7DQ0NDQ1leHRlcm4gaW50IGR1cDIoaW50LCBpbnQpOw1leHRlcm4gY2hh
ciAqcWVjdnQobG9uZyBkb3VibGUsIGludCwgaW50ICosIGludCAqKTsNZXh0ZXJuIGNoYXIgKnFm
Y3Z0KGxvbmcgZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7DWV4dGVybiBjaGFyICpxZ2N2dChs
b25nIGRvdWJsZSwgaW50LCBjaGFyICopOw1leHRlcm4gY2hhciAqZ2V0Y3dkKGNoYXIgKiwgc2l6
ZV90KTsNZXh0ZXJuIGNvbnN0IGNoYXIgKmdldGV4ZWNuYW1lKHZvaWQpOw1leHRlcm4gY2hhciAq
Z2V0bG9naW4odm9pZCk7DWV4dGVybiBpbnQgZ2V0b3B0KGludCwgY2hhciAqY29uc3QgKiwgY29u
c3QgY2hhciAqKTsNZXh0ZXJuIGNoYXIgKm9wdGFyZzsNZXh0ZXJuIGludCBvcHRpbmQsIG9wdGVy
ciwgb3B0b3B0Ow1leHRlcm4gY2hhciAqZ2V0cGFzcyhjb25zdCBjaGFyICopOw1leHRlcm4gY2hh
ciAqZ2V0cGFzc3BocmFzZShjb25zdCBjaGFyICopOw1leHRlcm4gaW50IGdldHB3KHVpZF90LCBj
aGFyICopOw1leHRlcm4gaW50IGlzYXR0eShpbnQpOw1leHRlcm4gdm9pZCAqbWVtYWxpZ24oc2l6
ZV90LCBzaXplX3QpOw1leHRlcm4gY2hhciAqdHR5bmFtZShpbnQpOw0NDWV4dGVybiBsb25nIGxv
bmcgYXRvbGwoY29uc3QgY2hhciAqKTsNZXh0ZXJuIGxvbmcgbG9uZyBsbGFicyhsb25nIGxvbmcp
Ow1leHRlcm4gbGxkaXZfdCBsbGRpdihsb25nIGxvbmcsIGxvbmcgbG9uZyk7DWV4dGVybiBjaGFy
ICpsbHRvc3RyKGxvbmcgbG9uZywgY2hhciAqKTsNZXh0ZXJuIGxvbmcgbG9uZyBzdHJ0b2xsKGNv
bnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsNZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBzdHJ0
b3VsbChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7DWV4dGVybiBjaGFyICp1bGx0b3N0cih1
bnNpZ25lZCBsb25nIGxvbmcsIGNoYXIgKik7DQ0NDQ0NDQ0NDQ0NDQ0jIDIzNCAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0jIDI3MyAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAzDQ0NIyAyOTQgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMw0jIDMwMiAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAzDQ0NDQ0NDQ0NDSMgMjUgIm9zZGVwLmgiIDINIyAxICIvdXNyL2lu
Y2x1ZGUvZGlyZW50LmgiIDEgMw0jIDEzICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMNDQ0NI3By
YWdtYSBpZGVudCAiQCgjKWRpcmVudC5oCTEuMjkJOTkvMDMvMTEgU01JIiANDQ0NDSMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy9kaXJlbnQuaCIgMSAzDSMgMTMgIi91c3IvaW5jbHVkZS9zeXMvZGlyZW50
LmgiIDMNDQ0NI3ByYWdtYSBpZGVudCAiQCgjKWRpcmVudC5oCTEuMzIJOTkvMDUvMDQgU01JIiAN
DQ0NDQ0NDQ0NDQ10eXBlZGVmIHN0cnVjdCBkaXJlbnQgew0gICAgICAgIGlub190IGRfaW5vOw0g
ICAgICAgIG9mZl90IGRfb2ZmOw0gICAgICAgIHVuc2lnbmVkIHNob3J0IGRfcmVjbGVuOw0gICAg
ICAgIGNoYXIgZF9uYW1lWzFdOw19IGRpcmVudF90Ow0NIyA0NiAiL3Vzci9pbmNsdWRlL3N5cy9k
aXJlbnQuaCIgMw0NDQ0NDQ0NDQ0NDXR5cGVkZWYgc3RydWN0IGRpcmVudDY0IHsNICAgICAgICBp
bm82NF90IGRfaW5vOw0gICAgICAgIG9mZjY0X3QgZF9vZmY7DSAgICAgICAgdW5zaWduZWQgc2hv
cnQgZF9yZWNsZW47DSAgICAgICAgY2hhciBkX25hbWVbMV07DX0gZGlyZW50NjRfdDsNDQ0NDQ0N
DQ0NDQ0NDQ0NIyA4OCAiL3Vzci9pbmNsdWRlL3N5cy9kaXJlbnQuaCIgMw0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ1leHRlcm4gaW50IGdldGRlbnRzKGludCwgc3RydWN0IGRpcmVudCAqLCBzaXplX3QpOw0N
DQ0NDQ0NDQ0NDQ0NIyAyMiAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAyIDMNDQ0NDQ0NDQ0NDQ0N
DQ0NdHlwZWRlZiBzdHJ1Y3Qgew0gICAgICAgIGludCBkZF9mZDsNICAgICAgICBpbnQgZGRfbG9j
Ow0gICAgICAgIGludCBkZF9zaXplOw0gICAgICAgIGNoYXIgKmRkX2J1ZjsNfSBESVI7DQ0NIyA1
NCAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ1leHRlcm4g
RElSICpvcGVuZGlyKGNvbnN0IGNoYXIgKik7DWV4dGVybiBzdHJ1Y3QgZGlyZW50ICpyZWFkZGly
KERJUiAqKTsNDQ1leHRlcm4gbG9uZyB0ZWxsZGlyKERJUiAqKTsNZXh0ZXJuIHZvaWQgc2Vla2Rp
cihESVIgKiwgbG9uZyk7DQ1leHRlcm4gdm9pZCByZXdpbmRkaXIoRElSICopOw1leHRlcm4gaW50
IGNsb3NlZGlyKERJUiAqKTsNDQ0NDWV4dGVybiBzdHJ1Y3QgZGlyZW50NjQgKnJlYWRkaXI2NChE
SVIgKik7DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0jIDEzMiAiL3Vzci9pbmNsdWRlL2RpcmVu
dC5oIiAzDQ0NDQ0NDQ0NDQ0NDSMgMTUyICIvdXNyL2luY2x1ZGUvZGlyZW50LmgiIDMNDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NIyAyMDIgIi91c3IvaW5jbHVkZS9k
aXJlbnQuaCIgMw0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDSMgMjYg
Im9zZGVwLmgiIDINIyAxICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMSAzDSMgMTMgIi91c3IvaW5j
bHVkZS9mY250bC5oIiAzDQ0NDSNwcmFnbWEgaWRlbnQgIkAoIylmY250bC5oCTEuMTQJOTcvMTIv
MDUgU01JIiANDQ0NDQ0NDSMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAxIDMNIyAxMyAi
L3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAzDQ0NDSNwcmFnbWEgaWRlbnQgIkAoIylmY250bC5o
CTEuNDUJOTgvMDcvMTcgU01JIiANDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDSMgODkgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMw0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NIyAxMjAgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMw0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDXR5cGVkZWYgc3RydWN0
IGZsb2NrIHsNICAgICAgICBzaG9ydCBsX3R5cGU7DSAgICAgICAgc2hvcnQgbF93aGVuY2U7DSAg
ICAgICAgb2ZmX3QgbF9zdGFydDsNICAgICAgICBvZmZfdCBsX2xlbjsNICAgICAgICBpbnQgbF9z
eXNpZDsNICAgICAgICBwaWRfdCBsX3BpZDsNICAgICAgICBsb25nIGxfcGFkWzRdOw19IGZsb2Nr
X3Q7DQ0jIDE4OCAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAzDQ0NDQ0NDXR5cGVkZWYgc3Ry
dWN0IGZsb2NrNjQgew0gICAgICAgIHNob3J0IGxfdHlwZTsNICAgICAgICBzaG9ydCBsX3doZW5j
ZTsNICAgICAgICBvZmY2NF90IGxfc3RhcnQ7DSAgICAgICAgb2ZmNjRfdCBsX2xlbjsNICAgICAg
ICBpbnQgbF9zeXNpZDsNICAgICAgICBwaWRfdCBsX3BpZDsNICAgICAgICBsb25nIGxfcGFkWzRd
Ow19IGZsb2NrNjRfdDsNDSMgMjMwICIvdXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDMNDQ0NDSMg
MjQ0ICIvdXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDMNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDXR5cGVkZWYgc3RydWN0IGZzaGFyZSB7DSAgICAgICAgc2hvcnQgZl9hY2Nlc3M7DSAgICAg
ICAgc2hvcnQgZl9kZW55Ow0gICAgICAgIGludCBmX2lkOw19IGZzaGFyZV90Ow0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NIyAyNSAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDIgMw0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDWV4dGVybiBpbnQgZmNudGwoaW50LCBp
bnQsIC4uLik7DWV4dGVybiBpbnQgb3Blbihjb25zdCBjaGFyICosIGludCwgLi4uKTsNZXh0ZXJu
IGludCBjcmVhdChjb25zdCBjaGFyICosIG1vZGVfdCk7DQ0NZXh0ZXJuIGludCBkaXJlY3Rpbyhp
bnQsIGludCk7DQ0NDQ0NZXh0ZXJuIGludCBvcGVuNjQoY29uc3QgY2hhciAqLCBpbnQsIC4uLik7
DWV4dGVybiBpbnQgY3JlYXQ2NChjb25zdCBjaGFyICosIG1vZGVfdCk7DQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0jIDI3ICJvc2RlcC5oIiAyDSMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAx
IDMNIyAxMyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzDQ0NDSNwcmFnbWEgaWRlbnQgIkAoIyl1
bmlzdGQuaAkxLjU4CTk5LzExLzExIFNNSSIgDQ0NDQ0jIDEgIi91c3IvaW5jbHVkZS9zeXMvdW5p
c3RkLmgiIDEgMw0jIDIyICIvdXNyL2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAzDQ0NDSNwcmFnbWEg
aWRlbnQgIkAoIyl1bmlzdGQuaAkxLjM3CTk4LzEwLzI4IFNNSSIgDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NIyAyMzEgIi91c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDMNDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDSMgMjIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAz
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NIyAxMzcg
Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMw0jIDE0NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
DQ0NDQ0NIyAxNTggIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMw0jIDE2NiAiL3Vzci9pbmNsdWRl
L3VuaXN0ZC5oIiAzDQ0NDQ0NZXh0ZXJuIGludCBhY2Nlc3MoY29uc3QgY2hhciAqLCBpbnQpOw0N
DWV4dGVybiBpbnQgYWNjdChjb25zdCBjaGFyICopOw0NZXh0ZXJuIHVuc2lnbmVkIGFsYXJtKHVu
c2lnbmVkKTsNDQ1leHRlcm4gaW50IGJyayh2b2lkICopOw0NZXh0ZXJuIGludCBjaGRpcihjb25z
dCBjaGFyICopOw1leHRlcm4gaW50IGNob3duKGNvbnN0IGNoYXIgKiwgdWlkX3QsIGdpZF90KTsN
DQ1leHRlcm4gaW50IGNocm9vdChjb25zdCBjaGFyICopOw0NZXh0ZXJuIGludCBjbG9zZShpbnQp
Ow0NDQ0NDQ0NZXh0ZXJuIGNoYXIgKmN0ZXJtaWQoY2hhciAqKTsNDQ0NDWV4dGVybiBjaGFyICpj
dXNlcmlkKGNoYXIgKik7DWV4dGVybiBpbnQgZHVwKGludCk7DWV4dGVybiBpbnQgZHVwMihpbnQs
IGludCk7DQ0NDQ1leHRlcm4gaW50IGV4ZWNsKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAu
Li4pOw1leHRlcm4gaW50IGV4ZWNsZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsN
ZXh0ZXJuIGludCBleGVjbHAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7DWV4dGVy
biBpbnQgZXhlY3YoY29uc3QgY2hhciAqLCBjaGFyICpjb25zdCAqKTsNZXh0ZXJuIGludCBleGVj
dmUoY29uc3QgY2hhciAqLCBjaGFyICpjb25zdCAqLCBjaGFyICpjb25zdCAqKTsNZXh0ZXJuIGlu
dCBleGVjdnAoY29uc3QgY2hhciAqLCBjaGFyICpjb25zdCAqKTsNZXh0ZXJuIHZvaWQgX2V4aXQo
aW50KTsNDQ0NDQ0NDWV4dGVybiBpbnQgZmF0dGFjaChpbnQsIGNvbnN0IGNoYXIgKik7DQ0NDWV4
dGVybiBpbnQgZmNoZGlyKGludCk7DWV4dGVybiBpbnQgZmNob3duKGludCwgdWlkX3QsIGdpZF90
KTsNDQ0NZXh0ZXJuIGludCBmY2hyb290KGludCk7DQ0NDWV4dGVybiBpbnQgZmRhdGFzeW5jKGlu
dCk7DQ0NDQ0NDQ0NZXh0ZXJuIGludCBmZGV0YWNoKGNvbnN0IGNoYXIgKik7DQ1leHRlcm4gcGlk
X3QgZm9yayh2b2lkKTsNDQ1leHRlcm4gcGlkX3QgZm9yazEodm9pZCk7DQ1leHRlcm4gbG9uZyBm
cGF0aGNvbmYoaW50LCBpbnQpOw0NDWV4dGVybiBpbnQgZnN5bmMoaW50KTsNDQ0NDWV4dGVybiBp
bnQgZnRydW5jYXRlKGludCwgb2ZmX3QpOw0NZXh0ZXJuIGNoYXIgKmdldGN3ZChjaGFyICosIHNp
emVfdCk7DQ0NZXh0ZXJuIGludCBnZXRkdGFibGVzaXplKHZvaWQpOw0NZXh0ZXJuIGdpZF90IGdl
dGVnaWQodm9pZCk7DWV4dGVybiB1aWRfdCBnZXRldWlkKHZvaWQpOw1leHRlcm4gZ2lkX3QgZ2V0
Z2lkKHZvaWQpOw1leHRlcm4gaW50IGdldGdyb3VwcyhpbnQsIGdpZF90ICopOw0NDWV4dGVybiBs
b25nIGdldGhvc3RpZCh2b2lkKTsNDQ0NDQ1leHRlcm4gaW50IGdldGhvc3RuYW1lKGNoYXIgKiwg
aW50KTsNDWV4dGVybiBjaGFyICpnZXRsb2dpbih2b2lkKTsNDQ0NDQ0NDQ0NZXh0ZXJuIGludCBn
ZXRwYWdlc2l6ZSh2b2lkKTsNZXh0ZXJuIHBpZF90IGdldHBnaWQocGlkX3QpOw0NZXh0ZXJuIHBp
ZF90IGdldHBpZCh2b2lkKTsNZXh0ZXJuIHBpZF90IGdldHBwaWQodm9pZCk7DWV4dGVybiBwaWRf
dCBnZXRwZ3JwKHZvaWQpOw0NDWNoYXIgKmdldHR4dChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg
Kik7DQ0NDWV4dGVybiBwaWRfdCBnZXRzaWQocGlkX3QpOw0NZXh0ZXJuIHVpZF90IGdldHVpZCh2
b2lkKTsNDQ1leHRlcm4gY2hhciAqZ2V0d2QoY2hhciAqKTsNDQ0NDQ0NDQ1leHRlcm4gaW50IGlv
Y3RsKGludCwgaW50LCAuLi4pOw0NDQ1leHRlcm4gaW50IGlzYWV4ZWMoY29uc3QgY2hhciAqLCBj
aGFyICpjb25zdCAqLCBjaGFyICpjb25zdCAqKTsNDWV4dGVybiBpbnQgaXNhdHR5KGludCk7DWV4
dGVybiBpbnQgbGluayhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQ0NZXh0ZXJuIGludCBs
Y2hvd24oY29uc3QgY2hhciAqLCB1aWRfdCwgZ2lkX3QpOw0NDQ0NZXh0ZXJuIGludCBsb2NrZihp
bnQsIGludCwgb2ZmX3QpOw0NDQ1leHRlcm4gaW50IHJlYWRsaW5rKGNvbnN0IGNoYXIgKiwgY2hh
ciAqLCBzaXplX3QpOw0NZXh0ZXJuIG9mZl90IGxzZWVrKGludCwgb2ZmX3QsIGludCk7DQ0NZXh0
ZXJuIGludCBuaWNlKGludCk7DQ1leHRlcm4gbG9uZyBwYXRoY29uZihjb25zdCBjaGFyICosIGlu
dCk7DWV4dGVybiBpbnQgcGF1c2Uodm9pZCk7DWV4dGVybiBpbnQgcGlwZShpbnQgKik7DQ0NZXh0
ZXJuIG9mZnNldF90IGxsc2VlayhpbnQsIG9mZnNldF90LCBpbnQpOw0NDQ0NZXh0ZXJuIG9mZl90
IHRlbGwoaW50KTsNDQ0NZXh0ZXJuIGludCBtaW5jb3JlKGNhZGRyX3QsIHNpemVfdCwgY2hhciAq
KTsNDQ0NDWV4dGVybiBzc2l6ZV90IHByZWFkKGludCwgdm9pZCAqLCBzaXplX3QsIG9mZl90KTsN
DQ0NZXh0ZXJuIHZvaWQgcHJvZmlsKHVuc2lnbmVkIHNob3J0ICosIHNpemVfdCwgdW5zaWduZWQg
bG9uZywgdW5zaWduZWQgaW50KTsNDQ0NZXh0ZXJuIGludCBwdGhyZWFkX2F0Zm9yayh2b2lkICgq
KSAodm9pZCksIHZvaWQgKCopICh2b2lkKSwgdm9pZCAoKikgKHZvaWQpKTsNDQ0NZXh0ZXJuIGxv
bmcgcHRyYWNlKGludCwgcGlkX3QsIGxvbmcsIGxvbmcpOw0NDQ0NZXh0ZXJuIHNzaXplX3QgcHdy
aXRlKGludCwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIG9mZl90KTsNDWV4dGVybiBzc2l6ZV90IHJl
YWQoaW50LCB2b2lkICosIHNpemVfdCk7DQ0NZXh0ZXJuIGludCByZW5hbWUoY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICopOw0NDQ1leHRlcm4gaW50IHJlc29sdmVwYXRoKGNvbnN0IGNoYXIgKiwg
Y2hhciAqLCBzaXplX3QpOw0NZXh0ZXJuIGludCBybWRpcihjb25zdCBjaGFyICopOw0NDWV4dGVy
biB2b2lkICpzYnJrKGludHB0cl90KTsNDWV4dGVybiBpbnQgc2V0Z2lkKGdpZF90KTsNDQ1leHRl
cm4gaW50IHNldGVnaWQoZ2lkX3QpOw0NDQ1leHRlcm4gaW50IHNldGdyb3VwcyhpbnQsIGNvbnN0
IGdpZF90ICopOw0NZXh0ZXJuIGludCBzZXRwZ2lkKHBpZF90LCBwaWRfdCk7DQ0NZXh0ZXJuIHBp
ZF90IHNldHBncnAodm9pZCk7DWV4dGVybiBpbnQgc2V0cmVnaWQoZ2lkX3QsIGdpZF90KTsNZXh0
ZXJuIGludCBzZXRyZXVpZCh1aWRfdCwgdWlkX3QpOw0NZXh0ZXJuIHBpZF90IHNldHNpZCh2b2lk
KTsNZXh0ZXJuIGludCBzZXR1aWQodWlkX3QpOw0NDWV4dGVybiBpbnQgc2V0ZXVpZCh1aWRfdCk7
DQ1leHRlcm4gdW5zaWduZWQgc2xlZXAodW5zaWduZWQpOw0NDWV4dGVybiBpbnQgc3RpbWUoY29u
c3QgdGltZV90ICopOw0NDQ0NDQ0NZXh0ZXJuIGludCBzeW1saW5rKGNvbnN0IGNoYXIgKiwgY29u
c3QgY2hhciAqKTsNZXh0ZXJuIHZvaWQgc3luYyh2b2lkKTsNDWV4dGVybiBsb25nIHN5c2NvbmYo
aW50KTsNDQ0NDQ0NDQ1leHRlcm4gcGlkX3QgdGNnZXRwZ3JwKGludCk7DWV4dGVybiBpbnQgdGNz
ZXRwZ3JwKGludCwgcGlkX3QpOw0NDWV4dGVybiBvZmZfdCB0ZWxsKGludCk7DQ0NDQ1leHRlcm4g
aW50IHRydW5jYXRlKGNvbnN0IGNoYXIgKiwgb2ZmX3QpOw0NZXh0ZXJuIGNoYXIgKnR0eW5hbWUo
aW50KTsNDQ1leHRlcm4gdXNlY29uZHNfdCB1YWxhcm0odXNlY29uZHNfdCwgdXNlY29uZHNfdCk7
DQ1leHRlcm4gaW50IHVubGluayhjb25zdCBjaGFyICopOw0NDWV4dGVybiBpbnQgdXNsZWVwKHVz
ZWNvbmRzX3QpOw0NDQ1leHRlcm4gcGlkX3QgdmZvcmsodm9pZCk7DQ0NDWV4dGVybiB2b2lkIHZo
YW5ndXAodm9pZCk7DQ1leHRlcm4gc3NpemVfdCB3cml0ZShpbnQsIGNvbnN0IHZvaWQgKiwgc2l6
ZV90KTsNDQ1leHRlcm4gdm9pZCB5aWVsZCh2b2lkKTsNDQ0NDQ1leHRlcm4gaW50IGZ0cnVuY2F0
ZTY0KGludCwgb2ZmNjRfdCk7DWV4dGVybiBvZmY2NF90IGxzZWVrNjQoaW50LCBvZmY2NF90LCBp
bnQpOw1leHRlcm4gc3NpemVfdCBwcmVhZDY0KGludCwgdm9pZCAqLCBzaXplX3QsIG9mZjY0X3Qp
Ow1leHRlcm4gc3NpemVfdCBwd3JpdGU2NChpbnQsIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBvZmY2
NF90KTsNZXh0ZXJuIG9mZjY0X3QgdGVsbDY0KGludCk7DWV4dGVybiBpbnQgdHJ1bmNhdGU2NChj
b25zdCBjaGFyICosIG9mZjY0X3QpOw1leHRlcm4gaW50IGxvY2tmNjQoaW50LCBpbnQsIG9mZjY0
X3QpOw0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0jIDUzMCAiL3Vzci9p
bmNsdWRlL3VuaXN0ZC5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDSMgNzcwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMNDQ0N
DQ0NDQ0NDQ0NI3ByYWdtYSB1bmtub3duX2NvbnRyb2xfZmxvdyh2Zm9yaykNDSMgODIwICIvdXNy
L2luY2x1ZGUvdW5pc3RkLmgiIDMNDQ0NDQ0NDQ0NDQ0NIyA4NDYgIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMw0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0jIDg4MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NIyAyOCAib3NkZXAuaCIgMg0NIyAxICIvdXNyL2luY2x1ZGUvdXRp
bWUuaCIgMSAzDSMgMTAgIi91c3IvaW5jbHVkZS91dGltZS5oIiAzDQ0NDSNwcmFnbWEgaWRlbnQg
IkAoIyl1dGltZS5oCTEuOAk5Mi8wNy8xNCBTTUkiIA0NIyAxICIvdXNyL2luY2x1ZGUvc3lzL3V0
aW1lLmgiIDEgMw0NDQ0NDQ0NDQ0NI3ByYWdtYSBpZGVudCAiQCgjKXV0aW1lLmgJMS45CTk3LzA4
LzEyIFNNSSIgDQ0NDQ0NDQ0Nc3RydWN0IHV0aW1idWYgew0gICAgICAgIHRpbWVfdCBhY3RpbWU7
DSAgICAgICAgdGltZV90IG1vZHRpbWU7DX07DQ0jIDM0ICIvdXNyL2luY2x1ZGUvc3lzL3V0aW1l
LmgiIDMNDQ0NDQ0NIyAxNiAiL3Vzci9pbmNsdWRlL3V0aW1lLmgiIDIgMw0NDQ0NDQ1leHRlcm4g
aW50IHV0aW1lKGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHV0aW1idWYgKik7DQ0NDQ0NDQ0N
IyAzMCAib3NkZXAuaCIgMg0jIDEgIi91c3IvaW5jbHVkZS9zeXNsb2cuaCIgMSAzDQ0NDQ0NDQ0N
DQ0jcHJhZ21hIGlkZW50ICJAKCMpc3lzbG9nLmgJMS4xMQk5Ni8wNS8xNyBTTUkiIA0NDSMgMSAi
L3Vzci9pbmNsdWRlL3N5cy9zeXNsb2cuaCIgMSAzDSMgMTQgIi91c3IvaW5jbHVkZS9zeXMvc3lz
bG9nLmgiIDMNDQ0NI3ByYWdtYSBpZGVudCAiQCgjKXN5c2xvZy5oCTEuMTAJOTIvMDcvMTQgU01J
IiANDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDSMgNzUg
Ii91c3IvaW5jbHVkZS9zeXMvc3lzbG9nLmgiIDMNDQ0NDQ0NDQ0NDSMgMTUgIi91c3IvaW5jbHVk
ZS9zeXNsb2cuaCIgMiAzDQ0NDQ0NDQ0Ndm9pZCBvcGVubG9nKGNvbnN0IGNoYXIgKiwgaW50LCBp
bnQpOw12b2lkIHN5c2xvZyhpbnQsIGNvbnN0IGNoYXIgKiwgLi4uKTsNdm9pZCBjbG9zZWxvZyh2
b2lkKTsNaW50IHNldGxvZ21hc2soaW50KTsNDXZvaWQgdnN5c2xvZyhpbnQsIGNvbnN0IGNoYXIg
KiwgX192YV9saXN0KTsNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NIyAzMSAib3NkZXAuaCIgMg0jIDEgIi91
c3IvaW5jbHVkZS9zeXMvZmlsZS5oIiAxIDMNIyAxMiAiL3Vzci9pbmNsdWRlL3N5cy9maWxlLmgi
IDMNDQ0NI3ByYWdtYSBpZGVudCAiQCgjKWZpbGUuaAkxLjYwCTk5LzA4LzMxIFNNSSIgDQ0jIDEg
Ii91c3IvaW5jbHVkZS9zeXMvdF9sb2NrLmgiIDEgMw0jIDEyICIvdXNyL2luY2x1ZGUvc3lzL3Rf
bG9jay5oIiAzDQ0NDSNwcmFnbWEgaWRlbnQgIkAoIyl0X2xvY2suaAkxLjQ1CTk4LzAyLzAxIFNN
SSINDQ0jIDEgIi91c3IvaW5jbHVkZS9zeXMvbWFjaGxvY2suaCIgMSAzDQ0NDQ0NDQ0NI3ByYWdt
YSBpZGVudCAiQCgjKW1hY2hsb2NrLmgJMS4yMQkwMC8wNC8yNyBTTUkiDQ0NDQ0NDQ0NDSMgMjkg
Ii91c3IvaW5jbHVkZS9zeXMvbWFjaGxvY2suaCIgMw0NDQ0NDQ0NdHlwZWRlZiBsb2NrX3QgZGlz
cF9sb2NrX3Q7DQ0NDQ0NIyA1MCAiL3Vzci9pbmNsdWRlL3N5cy9tYWNobG9jay5oIiAzDQ0NDQ0N
ZXh0ZXJuIGludCBocmVzX2xvY2s7DQ0jIDgxICIvdXNyL2luY2x1ZGUvc3lzL21hY2hsb2NrLmgi
IDMNDQ0jIDkzICIvdXNyL2luY2x1ZGUvc3lzL21hY2hsb2NrLmgiIDMNDQ0NDQ0NDQ0NIyAxOSAi
L3Vzci9pbmNsdWRlL3N5cy90X2xvY2suaCIgMiAzDSMgMSAiL3Vzci9pbmNsdWRlL3N5cy9wYXJh
bS5oIiAxIDMNIyAzNCAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAzDQ0NDSNwcmFnbWEgaWRl
bnQgIkAoIylwYXJhbS5oCTEuNzYJMDAvMDIvMTQgU01JIg0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0jIDEwMSAiL3Vzci9pbmNsdWRlL3N5cy9w
YXJhbS5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NIyAxNjMgIi91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMw0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0jIDIwNSAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NIyAyNzkgIi91
c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMw0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0jIDMzMiAiL3Vzci9pbmNsdWRlL3N5cy9wYXJhbS5oIiAzDSMgMzUwICIvdXNyL2luY2x1ZGUv
c3lzL3BhcmFtLmgiIDMNIyAzOTkgIi91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMw0NDQ0NIyA0
MTMgIi91c3IvaW5jbHVkZS9zeXMvcGFyYW0uaCIgMw0NDQ0NDQ0NZXh0ZXJuIGxvbmcgX3N5c2Nv
bmYoaW50KTsNDQ0NDQ0NDQ0NDQ0NDQ0NIyAyMCAiL3Vzci9pbmNsdWRlL3N5cy90X2xvY2suaCIg
MiAzDSMgMSAiL3Vzci9pbmNsdWRlL3N5cy9tdXRleC5oIiAxIDMNDQ0NDQ0NDQ0jcHJhZ21hIGlk
ZW50ICJAKCMpbXV0ZXguaAkxLjIwCTk4LzAyLzAxIFNNSSINDQ0NDQ0NDQ0NIyAzOSAiL3Vzci9p
bmNsdWRlL3N5cy9tdXRleC5oIiAzDXR5cGVkZWYgZW51bSB7DSAgICAgICAgTVVURVhfQURBUFRJ
VkUgPSAwLA0gICAgICAgIE1VVEVYX1NQSU4gPSAxLA0gICAgICAgIE1VVEVYX0RSSVZFUiA9IDQs
DSAgICAgICAgTVVURVhfREVGQVVMVCA9IDYNfSBrbXV0ZXhfdHlwZV90Ow0NdHlwZWRlZiBzdHJ1
Y3QgbXV0ZXggew0NDQ0gICAgICAgIHZvaWQgKl9vcGFxdWVbMl07DQ19IGttdXRleF90Ow0NIyA2
NyAiL3Vzci9pbmNsdWRlL3N5cy9tdXRleC5oIiAzDQ0NDQ0NDQ0NIyAyMSAiL3Vzci9pbmNsdWRl
L3N5cy90X2xvY2suaCIgMiAzDSMgMSAiL3Vzci9pbmNsdWRlL3N5cy9yd2xvY2suaCIgMSAzDQ0N
DQ0NDQ0NI3ByYWdtYSBpZGVudCAiQCgjKXJ3bG9jay5oCTEuOQk5OC8wMi8xOCBTTUkiDQ0NDQ0N
DQ0NDQ0NDQ10eXBlZGVmIGVudW0gew0gICAgICAgIFJXX0RSSVZFUiA9IDIsDSAgICAgICAgUldf
REVGQVVMVCA9IDQNfSBrcndfdHlwZV90Ow0NdHlwZWRlZiBlbnVtIHsNICAgICAgICBSV19XUklU
RVIsDSAgICAgICAgUldfUkVBREVSDX0ga3J3X3Q7DQ10eXBlZGVmIHN0cnVjdCBfa3J3bG9jayB7
DSAgICAgICAgdm9pZCAqX29wYXF1ZVsxXTsNfSBrcndsb2NrX3Q7DQ0jIDU4ICIvdXNyL2luY2x1
ZGUvc3lzL3J3bG9jay5oIiAzDQ0NDQ0NDQ0NIyAyMiAiL3Vzci9pbmNsdWRlL3N5cy90X2xvY2su
aCIgMiAzDSMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZW1hcGhvcmUuaCIgMSAzDQ0NDQ0NDQ0NI3By
YWdtYSBpZGVudCAiQCgjKXNlbWFwaG9yZS5oCTEuNQk5OC8wMi8wMSBTTUkiDQ0NDQ0NDQ0NDQ0N
DQ0NDXR5cGVkZWYgZW51bSB7DSAgICAgICAgU0VNQV9ERUZBVUxULA0gICAgICAgIFNFTUFfRFJJ
VkVSDX0ga3NlbWFfdHlwZV90Ow0NdHlwZWRlZiBzdHJ1Y3QgX2tzZW1hIHsNICAgICAgICB2b2lk
ICogX29wYXF1ZVsyXTsNfSBrc2VtYV90Ow0NIyA0NiAiL3Vzci9pbmNsdWRlL3N5cy9zZW1hcGhv
cmUuaCIgMw0NDQ0NDQ0NDSMgMjMgIi91c3IvaW5jbHVkZS9zeXMvdF9sb2NrLmgiIDIgMw0jIDEg
Ii91c3IvaW5jbHVkZS9zeXMvY29uZHZhci5oIiAxIDMNIyAxNCAiL3Vzci9pbmNsdWRlL3N5cy9j
b25kdmFyLmgiIDMNDQ0NI3ByYWdtYSBpZGVudCAiQCgjKWNvbmR2YXIuaAkxLjExCTAwLzAzLzA1
IFNNSSINDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDXR5cGVkZWYgc3RydWN0IF9rY29uZHZhciB7DSAgICAg
ICAgdXNob3J0X3QgX29wYXF1ZTsNfSBrY29uZHZhcl90Ow0NdHlwZWRlZiBlbnVtIHsNICAgICAg
ICBDVl9ERUZBVUxULA0gICAgICAgIENWX0RSSVZFUg19IGtjdl90eXBlX3Q7DQ0NIyA2NSAiL3Vz
ci9pbmNsdWRlL3N5cy9jb25kdmFyLmgiIDMNDQ0NDQ0NDQ0jIDI0ICIvdXNyL2luY2x1ZGUvc3lz
L3RfbG9jay5oIiAyIDMNDQ0NDQ0NIyA0MiAiL3Vzci9pbmNsdWRlL3N5cy90X2xvY2suaCIgMw0j
IDY5ICIvdXNyL2luY2x1ZGUvc3lzL3RfbG9jay5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0NDSMgMTggIi91
c3IvaW5jbHVkZS9zeXMvZmlsZS5oIiAyIDMNDQ0NDQ0NDSMgNDMgIi91c3IvaW5jbHVkZS9zeXMv
ZmlsZS5oIiAzDXR5cGVkZWYgc3RydWN0IGZpbGUgew0gICAgICAgIGttdXRleF90IGZfdGxvY2s7
DSAgICAgICAgdXNob3J0X3QgZl9mbGFnOw0gICAgICAgIHVzaG9ydF90IGZfcGFkOw0gICAgICAg
IHN0cnVjdCB2bm9kZSAqZl92bm9kZTsNICAgICAgICBvZmZzZXRfdCBmX29mZnNldDsNICAgICAg
ICBzdHJ1Y3QgY3JlZCAqZl9jcmVkOw0gICAgICAgIGNhZGRyX3QgZl9hdWRpdF9kYXRhOw0gICAg
ICAgIGludCBmX2NvdW50Ow19IGZpbGVfdDsNDQ0NDXR5cGVkZWYgc3RydWN0IGZwb2xsaW5mbyB7
DSAgICAgICAgc3RydWN0IF9rdGhyZWFkICpmcF90aHJlYWQ7DSAgICAgICAgc3RydWN0IGZwb2xs
aW5mbyAqZnBfbmV4dDsNfSBmcG9sbGluZm9fdDsNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NIyAxNDMgIi91c3IvaW5jbHVkZS9zeXMvZmlsZS5oIiAzDQ0NDQ0NDQ0NIyAx
NjIgIi91c3IvaW5jbHVkZS9zeXMvZmlsZS5oIiAzDQ0NIyAxODUgIi91c3IvaW5jbHVkZS9zeXMv
ZmlsZS5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0jIDMyICJvc2RlcC5oIiAyDSMgMSAiL3Vzci9pbmNsdWRl
L3VzdGF0LmgiIDEgMw0NDQ0NDQ0NDQ0NI3ByYWdtYSBpZGVudCAiQCgjKXVzdGF0LmgJMS42CTky
LzA3LzE0IFNNSSIgDQ0NIyAxICIvdXNyL2luY2x1ZGUvc3lzL3VzdGF0LmgiIDEgMw0jIDE0ICIv
dXNyL2luY2x1ZGUvc3lzL3VzdGF0LmgiIDMNDQ0NI3ByYWdtYSBpZGVudCAiQCgjKXVzdGF0LmgJ
MS4xMQk5Ni8xMC8yNyBTTUkiIA0NDQ0NDQ0Nc3RydWN0IHVzdGF0IHsNICAgICAgICBkYWRkcl90
IGZfdGZyZWU7DSAgICAgICAgaW5vX3QgZl90aW5vZGU7DSAgICAgICAgY2hhciBmX2ZuYW1lWzZd
Ow0gICAgICAgIGNoYXIgZl9mcGFja1s2XTsNfTsNDSMgNDEgIi91c3IvaW5jbHVkZS9zeXMvdXN0
YXQuaCIgMw0NDQ0NDQ0jIDE1ICIvdXNyL2luY2x1ZGUvdXN0YXQuaCIgMiAzDQ0NDQ0NDWV4dGVy
biBpbnQgdXN0YXQoZGV2X3QsIHN0cnVjdCB1c3RhdCAqKTsNDQ0NDQ0NDQ0jIDMzICJvc2RlcC5o
IiAyDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ1pbnQgcG9ydGFibGVfdXRpbWUg
KGNoYXIgKmZpbGUsdGltZV90IHRpbWVwWzJdKTsNDSMgMSAiZW52X3VuaXguaCIgMQ0jIDIxICJl
bnZfdW5peC5oIg0NDQ10eXBlZGVmIHN0cnVjdCBkb3Rsb2NrX2Jhc2Ugew0gIGNoYXIgbG9ja1sx
MDI0XTsNICBpbnQgcGlwZWk7DSAgaW50IHBpcGVvOw19IERPVExPQ0s7DQ0NDQ0jIDEgImVudi5o
IiAxDSMgMjMgImVudi5oIg1sb25nIHBtYXRjaF9mdWxsIChjaGFyICpzLGNoYXIgKnBhdCxjaGFy
IGRlbGltKTsNbG9uZyBkbWF0Y2ggKGNoYXIgKnMsY2hhciAqcGF0LGNoYXIgZGVsaW0pOw12b2lk
ICplbnZfcGFyYW1ldGVycyAobG9uZyBmdW5jdGlvbix2b2lkICp2YWx1ZSk7DXZvaWQgcmZjODIy
X2RhdGUgKGNoYXIgKmRhdGUpOw12b2lkIHJmYzgyMl90aW1lem9uZSAoY2hhciAqcyx2b2lkICp0
KTsNdm9pZCBpbnRlcm5hbF9kYXRlIChjaGFyICpkYXRlKTsNbG9uZyBzZXJ2ZXJfaW5wdXRfd2Fp
dCAobG9uZyBzZWNvbmRzKTsNdm9pZCBzZXJ2ZXJfaW5pdCAoY2hhciAqc2VydmVyLGNoYXIgKnNl
cnZpY2UsY2hhciAqYWx0c2VydmljZSxjaGFyICpzYXNsLA0gICAgICAgICAgICAgICAgICB2b2lk
ICpjbGtpbnQsdm9pZCAqa29kaW50LHZvaWQgKmh1cGludCx2b2lkICp0cm1pbnQpOw1sb25nIHNl
cnZlcl9sb2dpbiAoY2hhciAqdXNlcixjaGFyICpwYXNzLGNoYXIgKmF1dGh1c2VyLGludCBhcmdj
LGNoYXIgKmFyZ3ZbXSk7DWxvbmcgYXV0aHNlcnZlcl9sb2dpbiAoY2hhciAqdXNlcixjaGFyICph
dXRodXNlcixpbnQgYXJnYyxjaGFyICphcmd2W10pOw1sb25nIGFub255bW91c19sb2dpbiAoaW50
IGFyZ2MsY2hhciAqYXJndltdKTsNY2hhciAqbXlsb2NhbGhvc3QgKHZvaWQpOw1jaGFyICpteWhv
bWVkaXIgKHZvaWQpOw1jaGFyICptYWlsYm94ZmlsZSAoY2hhciAqZHN0LGNoYXIgKm5hbWUpOw1N
QUlMU1RSRUFNICpkZWZhdWx0X3Byb3RvIChsb25nIHR5cGUpOw0jIDM0ICJlbnZfdW5peC5oIiAy
DQ12b2lkIHJmYzgyMl9maXhlZF9kYXRlIChjaGFyICpkYXRlKTsNbG9uZyBlbnZfaW5pdCAoY2hh
ciAqdXNlcixjaGFyICpob21lKTsNY2hhciAqbXl1c2VybmFtZV9mdWxsICh1bnNpZ25lZCBsb25n
ICpmbGFncyk7DQ0NDQ0NY2hhciAqc3lzaW5ib3ggKCk7DWNoYXIgKm1haWxib3hkaXIgKGNoYXIg
KmRzdCxjaGFyICpkaXIsY2hhciAqbmFtZSk7DWxvbmcgZG90bG9ja19sb2NrIChjaGFyICpmaWxl
LERPVExPQ0sgKmJhc2UsaW50IGZkKTsNbG9uZyBkb3Rsb2NrX3VubG9jayAoRE9UTE9DSyAqYmFz
ZSk7DWludCBsb2NrbmFtZSAoY2hhciAqbG9jayxjaGFyICpmbmFtZSxpbnQgb3AsbG9uZyAqcGlk
KTsNaW50IGxvY2tmZCAoaW50IGZkLGNoYXIgKmxvY2ssaW50IG9wKTsNaW50IGxvY2tfd29yayAo
Y2hhciAqbG9jayx2b2lkICpzYnVmLGludCBvcCxsb25nICpwaWQpOw1sb25nIGNoa19ub3RzeW1s
aW5rIChjaGFyICpuYW1lLHZvaWQgKnNidWYpOw12b2lkIHVubG9ja2ZkIChpbnQgZmQsY2hhciAq
bG9jayk7DWxvbmcgc2V0X21ieF9wcm90ZWN0aW9ucyAoY2hhciAqbWFpbGJveCxjaGFyICpwYXRo
KTsNTUFJTFNUUkVBTSAqdXNlcl9mbGFncyAoTUFJTFNUUkVBTSAqc3RyZWFtKTsNY2hhciAqZGVm
YXVsdF91c2VyX2ZsYWcgKHVuc2lnbmVkIGxvbmcgaSk7DXZvaWQgZG9yYyAoY2hhciAqZmlsZSxs
b25nIGZsYWcpOw1sb25nIHBhdGhfY3JlYXRlIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqbWFp
bGJveCk7DXZvaWQgZ3JpbV9waWRfcmVhcF9zdGF0dXMgKGludCBwaWQsaW50IGtpbGxyZXEsdm9p
ZCAqc3RhdHVzKTsNDQ1sb25nIHNhZmVfd3JpdGUgKGludCBmZCxjaGFyICpidWYsbG9uZyBuYnl0
ZXMpOw12b2lkICphcm1fc2lnbmFsIChpbnQgc2lnLHZvaWQgKmFjdGlvbik7DXN0cnVjdCBwYXNz
d2QgKmNoZWNrcHcgKHN0cnVjdCBwYXNzd2QgKnB3LGNoYXIgKnBhc3MsaW50IGFyZ2MsY2hhciAq
YXJndltdKTsNbG9uZyBsb2dpbnB3IChzdHJ1Y3QgcGFzc3dkICpwdyxpbnQgYXJnYyxjaGFyICph
cmd2W10pOw1sb25nIHB3X2xvZ2luIChzdHJ1Y3QgcGFzc3dkICpwdyxjaGFyICphdXRodXNlcixj
aGFyICp1c2VyLGNoYXIgKmhvbWUsaW50IGFyZ2MsDSAgICAgICAgICAgICAgIGNoYXIgKmFyZ3Zb
XSk7DXZvaWQgKm1tX2Jsb2Nrbm90aWZ5IChpbnQgcmVhc29uLHZvaWQgKmRhdGEpOw0jIDcwICJv
c2RlcC5oIiAyDSMgMSAiZnMuaCIgMQ0jIDI0ICJmcy5oIg12b2lkICpmc19nZXQgKHNpemVfdCBz
aXplKTsNdm9pZCBmc19yZXNpemUgKHZvaWQgKipibG9jayxzaXplX3Qgc2l6ZSk7DXZvaWQgZnNf
Z2l2ZSAodm9pZCAqKmJsb2NrKTsNIyA3MSAib3NkZXAuaCIgMg0jIDEgImZ0bC5oIiAxDSMgMjQg
ImZ0bC5oIg12b2lkIGZhdGFsIChjaGFyICpzdHJpbmcpOw0jIDcyICJvc2RlcC5oIiAyDSMgMSAi
bmwuaCIgMQ0jIDI0ICJubC5oIg11bnNpZ25lZCBsb25nIHN0cmNybGZjcHkgKGNoYXIgKipkc3Qs
dW5zaWduZWQgbG9uZyAqZHN0bCxjaGFyICpzcmMsDSAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBzcmNsKTsNdW5zaWduZWQgbG9uZyBzdHJjcmxmbGVuIChTVFJJTkcgKnMp
Ow0jIDczICJvc2RlcC5oIiAyDSMgMSAidGNwLmgiIDENIyAyNCAidGNwLmgiDQ0NDQ0NDQ12b2lk
ICp0Y3BfcGFyYW1ldGVycyAobG9uZyBmdW5jdGlvbix2b2lkICp2YWx1ZSk7DXZvaWQgKnRjcF9v
cGVuIChjaGFyICpob3N0LGNoYXIgKnNlcnZpY2UsdW5zaWduZWQgbG9uZyBwb3J0KTsNdm9pZCAq
dGNwX2FvcGVuIChORVRNQlggKm1iLGNoYXIgKnNlcnZpY2UsY2hhciAqdXNyYnVmKTsNY2hhciAq
dGNwX2dldGxpbmUgKHZvaWQgKnN0cmVhbSk7DWxvbmcgdGNwX2dldGJ1ZmZlciAodm9pZCAqc3Ry
ZWFtLHVuc2lnbmVkIGxvbmcgc2l6ZSxjaGFyICpidWZmZXIpOw1sb25nIHRjcF9nZXRkYXRhICh2
b2lkICpzdHJlYW0pOw1sb25nIHRjcF9zb3V0ciAodm9pZCAqc3RyZWFtLGNoYXIgKnN0cmluZyk7
DWxvbmcgdGNwX3NvdXQgKHZvaWQgKnN0cmVhbSxjaGFyICpzdHJpbmcsdW5zaWduZWQgbG9uZyBz
aXplKTsNdm9pZCB0Y3BfY2xvc2UgKHZvaWQgKnN0cmVhbSk7DWNoYXIgKnRjcF9ob3N0ICh2b2lk
ICpzdHJlYW0pOw1jaGFyICp0Y3BfcmVtb3RlaG9zdCAodm9pZCAqc3RyZWFtKTsNdW5zaWduZWQg
bG9uZyB0Y3BfcG9ydCAodm9pZCAqc3RyZWFtKTsNY2hhciAqdGNwX2xvY2FsaG9zdCAodm9pZCAq
c3RyZWFtKTsNY2hhciAqdGNwX2NsaWVudGhvc3QgKHZvaWQpOw1jaGFyICp0Y3Bfc2VydmVyaG9z
dCAodm9pZCk7DWxvbmcgdGNwX3NlcnZlcnBvcnQgKHZvaWQpOw1jaGFyICp0Y3BfY2Fub25pY2Fs
IChjaGFyICpuYW1lKTsNIyA3NCAib3NkZXAuaCIgMg0jIDEgImxvY2tmaXguaCIgMQ0jIDU2ICJs
b2NrZml4LmgiDQ0NIyA3NSAib3NkZXAuaCIgMg0NdHlwZWRlZiBpbnQgKCpzZWxlY3RfdCkgKHN0
cnVjdCBkaXJlbnQgKm5hbWUpOw10eXBlZGVmIGludCAoKmNvbXBhcl90KSAoY29uc3Qgdm9pZCAq
ZDEsY29uc3Qgdm9pZCAqZDIpOw1pbnQgc2NhbmRpciAoY2hhciAqZGlybmFtZSxzdHJ1Y3QgZGly
ZW50ICoqKm5hbWVsaXN0LHNlbGVjdF90IHNlbGVjdCwNICAgICAgICAgICAgIGNvbXBhcl90IGNv
bXBhcik7DWludCBic2RfZmxvY2sgKGludCBmZCxpbnQgb3BlcmF0aW9uKTsNIyAyOCAibWJ4LmMi
IDINIyAxICIvdXNyL2luY2x1ZGUvcHdkLmgiIDEgMw0jIDEzICIvdXNyL2luY2x1ZGUvcHdkLmgi
IDMNDQ0NI3ByYWdtYSBpZGVudCAiQCgjKXB3ZC5oCTEuMTkJOTYvMDMvMTIgU01JIiANDQ0NDQ0N
DQ0NDQ0NDQ1zdHJ1Y3QgcGFzc3dkIHsNICAgICAgICBjaGFyICpwd19uYW1lOw0gICAgICAgIGNo
YXIgKnB3X3Bhc3N3ZDsNICAgICAgICB1aWRfdCBwd191aWQ7DSAgICAgICAgZ2lkX3QgcHdfZ2lk
Ow0gICAgICAgIGNoYXIgKnB3X2FnZTsNICAgICAgICBjaGFyICpwd19jb21tZW50Ow0gICAgICAg
IGNoYXIgKnB3X2dlY29zOw0gICAgICAgIGNoYXIgKnB3X2RpcjsNICAgICAgICBjaGFyICpwd19z
aGVsbDsNfTsNDQ0Nc3RydWN0IGNvbW1lbnQgew0gICAgICAgIGNoYXIgKmNfZGVwdDsNICAgICAg
ICBjaGFyICpjX25hbWU7DSAgICAgICAgY2hhciAqY19hY2N0Ow0gICAgICAgIGNoYXIgKmNfYmlu
Ow19Ow0NDQ0NZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmdldHB3dWlkKHVpZF90KTsNZXh0ZXJuIHN0
cnVjdCBwYXNzd2QgKmdldHB3bmFtKGNvbnN0IGNoYXIgKik7DQ0NDWV4dGVybiBzdHJ1Y3QgcGFz
c3dkICpnZXRwd2VudF9yKHN0cnVjdCBwYXNzd2QgKiwgY2hhciAqLCBpbnQpOw1leHRlcm4gc3Ry
dWN0IHBhc3N3ZCAqZmdldHB3ZW50X3IoRklMRSAqLCBzdHJ1Y3QgcGFzc3dkICosIGNoYXIgKiwg
aW50KTsNZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmZnZXRwd2VudChGSUxFICopOw1leHRlcm4gaW50
IHB1dHB3ZW50KGNvbnN0IHN0cnVjdCBwYXNzd2QgKiwgRklMRSAqKTsNDQ0NDQ1leHRlcm4gdm9p
ZCBlbmRwd2VudCh2b2lkKTsNZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmdldHB3ZW50KHZvaWQpOw1l
eHRlcm4gdm9pZCBzZXRwd2VudCh2b2lkKTsNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NIyAxMzIg
Ii91c3IvaW5jbHVkZS9wd2QuaCIgMw0NDQ0NDQ0NDQ0NDQ0NDSMgMTY0ICIvdXNyL2luY2x1ZGUv
cHdkLmgiIDMNDQ0NDWV4dGVybiBzdHJ1Y3QgcGFzc3dkICpnZXRwd3VpZF9yKHVpZF90LCBzdHJ1
Y3QgcGFzc3dkICosIGNoYXIgKiwgaW50KTsNZXh0ZXJuIHN0cnVjdCBwYXNzd2QgKmdldHB3bmFt
X3IoY29uc3QgY2hhciAqLCBzdHJ1Y3QgcGFzc3dkICosIGNoYXIgKiwgaW50KTsNDQ0NDQ0NDQ0N
DQ0NIyAyMDYgIi91c3IvaW5jbHVkZS9wd2QuaCIgMw0NDQ0NDQ0NDQ0NDQ0NDQ0NDSMgMjkgIm1i
eC5jIiAyDSMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDEgMw0jIDE1ICIvdXNyL2luY2x1
ZGUvc3lzL3N0YXQuaCIgMw0NDQ0jcHJhZ21hIGlkZW50ICJAKCMpc3RhdC5oCTEuMgk5OS8wNS8x
OSBTTUkiDQ0NDQ0NDSMgNDAgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzDQ0NDQ0NDQ0NDQ0N
DQ0jIDczICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMw0jIDEwOSAiL3Vzci9pbmNsdWRlL3N5
cy9zdGF0LmgiIDMNIyAxNTQgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0jIDIxNyAiL3Vzci9pbmNs
dWRlL3N5cy9zdGF0LmgiIDMNDQ0NDQ0NDQ0NDQ0NDQ0NDQ1zdHJ1Y3Qgc3RhdCB7DSAgICAgICAg
ZGV2X3Qgc3RfZGV2Ow0gICAgICAgIGxvbmcgc3RfcGFkMVszXTsNICAgICAgICBpbm9fdCBzdF9p
bm87DSAgICAgICAgbW9kZV90IHN0X21vZGU7DSAgICAgICAgbmxpbmtfdCBzdF9ubGluazsNICAg
ICAgICB1aWRfdCBzdF91aWQ7DSAgICAgICAgZ2lkX3Qgc3RfZ2lkOw0gICAgICAgIGRldl90IHN0
X3JkZXY7DSAgICAgICAgbG9uZyBzdF9wYWQyWzJdOw0gICAgICAgIG9mZl90IHN0X3NpemU7DQ0g
ICAgICAgIGxvbmcgc3RfcGFkMzsNDQ0NICAgICAgICB0aW1lc3RydWNfdCBzdF9hdGltOw0gICAg
ICAgIHRpbWVzdHJ1Y190IHN0X210aW07DSAgICAgICAgdGltZXN0cnVjX3Qgc3RfY3RpbTsNDQ0N
DQ0gICAgICAgIGJsa3NpemVfdCBzdF9ibGtzaXplOw0gICAgICAgIGJsa2NudF90IHN0X2Jsb2Nr
czsNICAgICAgICBjaGFyIHN0X2ZzdHlwZVsxNl07DSAgICAgICAgbG9uZyBzdF9wYWQ0WzhdOw19
Ow0NDQ0NDQ0jIDI4MCAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMNDQ0NDQ0NDQ0NDQ0NDQ0N
DQ1zdHJ1Y3Qgc3RhdDY0IHsNICAgICAgICBkZXZfdCBzdF9kZXY7DSAgICAgICAgbG9uZyBzdF9w
YWQxWzNdOw0gICAgICAgIGlubzY0X3Qgc3RfaW5vOw0gICAgICAgIG1vZGVfdCBzdF9tb2RlOw0g
ICAgICAgIG5saW5rX3Qgc3Rfbmxpbms7DSAgICAgICAgdWlkX3Qgc3RfdWlkOw0gICAgICAgIGdp
ZF90IHN0X2dpZDsNICAgICAgICBkZXZfdCBzdF9yZGV2Ow0gICAgICAgIGxvbmcgc3RfcGFkMlsy
XTsNICAgICAgICBvZmY2NF90IHN0X3NpemU7DQ0NICAgICAgICB0aW1lc3RydWNfdCBzdF9hdGlt
Ow0gICAgICAgIHRpbWVzdHJ1Y190IHN0X210aW07DSAgICAgICAgdGltZXN0cnVjX3Qgc3RfY3Rp
bTsNDQ0NDQ0gICAgICAgIGJsa3NpemVfdCBzdF9ibGtzaXplOw0gICAgICAgIGJsa2NudDY0X3Qg
c3RfYmxvY2tzOw0gICAgICAgIGNoYXIgc3RfZnN0eXBlWzE2XTsNICAgICAgICBsb25nIHN0X3Bh
ZDRbOF07DX07DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NIyAzNjcgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5o
IiAzDQ0NIyAzODkgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0jIDQ2MSAiL3Vzci9p
bmNsdWRlL3N5cy9zdGF0LmgiIDMNDQ0NDQ0NDQ0NZXh0ZXJuIGludCBmY2htb2QoaW50LCBtb2Rl
X3QpOw0NDWV4dGVybiBpbnQgY2htb2QoY29uc3QgY2hhciAqLCBtb2RlX3QpOw1leHRlcm4gaW50
IG1rZGlyKGNvbnN0IGNoYXIgKiwgbW9kZV90KTsNZXh0ZXJuIGludCBta2ZpZm8oY29uc3QgY2hh
ciAqLCBtb2RlX3QpOw1leHRlcm4gbW9kZV90IHVtYXNrKG1vZGVfdCk7DQ0NDQ1leHRlcm4gaW50
IGZzdGF0NjQoaW50LCBzdHJ1Y3Qgc3RhdDY0ICopOw1leHRlcm4gaW50IHN0YXQ2NChjb25zdCBj
aGFyICosIHN0cnVjdCBzdGF0NjQgKik7DWV4dGVybiBpbnQgbHN0YXQ2NChjb25zdCBjaGFyICos
IHN0cnVjdCBzdGF0NjQgKik7DQ0NDQ0NDQ0NIyA1MDAgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5o
IiAzDQ0NDQ0NDQ0NDSMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0X2ltcGwuaCIgMSAzDQ0NDQ0N
DQ0NI3ByYWdtYSBpZGVudCAiQCgjKXN0YXRfaW1wbC5oCTEuMQk5OS8wNS8wNCBTTUkiDQ0NDQ0N
DQ0NDQ0NDQ0NDQ1leHRlcm4gaW50IGZzdGF0KGludCwgc3RydWN0IHN0YXQgKik7DWV4dGVybiBp
bnQgc3RhdChjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0ICopOw0NDQ1leHRlcm4gaW50IGxzdGF0
KGNvbnN0IGNoYXIgKiwgc3RydWN0IHN0YXQgKik7DWV4dGVybiBpbnQgbWtub2QoY29uc3QgY2hh
ciAqLCBtb2RlX3QsIGRldl90KTsNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDSMgNTEwICIvdXNyL2luY2x1
ZGUvc3lzL3N0YXQuaCIgMiAzDQ0NDQ0NDQ0jIDMwICJtYnguYyIgMg0NIyAxICJtYnguaCIgMQ0j
IDIzICJtYnguaCINDQ0NDQ10eXBlZGVmIHN0cnVjdCBtYnhfbG9jYWwgew0gIHVuc2lnbmVkIGlu
dCBmbGFnY2hlY2s6IDE7DSAgdW5zaWduZWQgaW50IGZ1bGxjaGVjazogMTsNICB1bnNpZ25lZCBp
bnQgZXhwdW5nZWQgOiAxOw0gIGludCBmZDsNICBpbnQgZmZ1c2VyZmxhZzsNICBvZmZfdCBmaWxl
c2l6ZTsNICB0aW1lX3QgZmlsZXRpbWU7DSAgdGltZV90IGxhc3RzbmFyZjsNICBjaGFyICpidWY7
DSAgdW5zaWduZWQgbG9uZyBidWZsZW47DX0gTUJYTE9DQUw7DQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ1z
dHJ1Y3QgZHJpdmVyICptYnhfdmFsaWQgKGNoYXIgKm5hbWUpOw1pbnQgbWJ4X2lzdmFsaWQgKGNo
YXIgKm5hbWUsY2hhciAqdG1wKTsNdm9pZCAqbWJ4X3BhcmFtZXRlcnMgKGxvbmcgZnVuY3Rpb24s
dm9pZCAqdmFsdWUpOw12b2lkIG1ieF9zY2FuIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqcmVm
LGNoYXIgKnBhdCxjaGFyICpjb250ZW50cyk7DXZvaWQgbWJ4X2xpc3QgKE1BSUxTVFJFQU0gKnN0
cmVhbSxjaGFyICpyZWYsY2hhciAqcGF0KTsNdm9pZCBtYnhfbHN1YiAoTUFJTFNUUkVBTSAqc3Ry
ZWFtLGNoYXIgKnJlZixjaGFyICpwYXQpOw1sb25nIG1ieF9jcmVhdGUgKE1BSUxTVFJFQU0gKnN0
cmVhbSxjaGFyICptYWlsYm94KTsNbG9uZyBtYnhfZGVsZXRlIChNQUlMU1RSRUFNICpzdHJlYW0s
Y2hhciAqbWFpbGJveCk7DWxvbmcgbWJ4X3JlbmFtZSAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIg
Km9sZCxjaGFyICpuZXduYW1lKTsNbG9uZyBtYnhfc3RhdHVzIChNQUlMU1RSRUFNICpzdHJlYW0s
Y2hhciAqbWJ4LGxvbmcgZmxhZ3MpOw1NQUlMU1RSRUFNICptYnhfb3BlbiAoTUFJTFNUUkVBTSAq
c3RyZWFtKTsNdm9pZCBtYnhfY2xvc2UgKE1BSUxTVFJFQU0gKnN0cmVhbSxsb25nIG9wdGlvbnMp
Ow12b2lkIG1ieF9hYm9ydCAoTUFJTFNUUkVBTSAqc3RyZWFtKTsNdm9pZCBtYnhfZmxhZ3MgKE1B
SUxTVFJFQU0gKnN0cmVhbSxjaGFyICpzZXF1ZW5jZSxsb25nIGZsYWdzKTsNY2hhciAqbWJ4X2hl
YWRlciAoTUFJTFNUUkVBTSAqc3RyZWFtLHVuc2lnbmVkIGxvbmcgbXNnbm8sdW5zaWduZWQgbG9u
ZyAqbGVuZ3RoLA0gICAgICAgICAgICAgICAgICBsb25nIGZsYWdzKTsNbG9uZyBtYnhfdGV4dCAo
TUFJTFNUUkVBTSAqc3RyZWFtLHVuc2lnbmVkIGxvbmcgbXNnbm8sU1RSSU5HICpicyxsb25nIGZs
YWdzKTsNdm9pZCBtYnhfZmxhZyAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKnNlcXVlbmNlLGNo
YXIgKmZsYWcsbG9uZyBmbGFncyk7DXZvaWQgbWJ4X2ZsYWdtc2cgKE1BSUxTVFJFQU0gKnN0cmVh
bSxNRVNTQUdFQ0FDSEUgKmVsdCk7DWxvbmcgbWJ4X3BpbmcgKE1BSUxTVFJFQU0gKnN0cmVhbSk7
DXZvaWQgbWJ4X2NoZWNrIChNQUlMU1RSRUFNICpzdHJlYW0pOw12b2lkIG1ieF9leHB1bmdlIChN
QUlMU1RSRUFNICpzdHJlYW0pOw12b2lkIG1ieF9zbmFyZiAoTUFJTFNUUkVBTSAqc3RyZWFtKTsN
bG9uZyBtYnhfY29weSAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKnNlcXVlbmNlLGNoYXIgKm1h
aWxib3gsbG9uZyBvcHRpb25zKTsNbG9uZyBtYnhfYXBwZW5kIChNQUlMU1RSRUFNICpzdHJlYW0s
Y2hhciAqbWFpbGJveCxhcHBlbmRfdCBhZix2b2lkICpkYXRhKTsNDWNoYXIgKm1ieF9maWxlIChj
aGFyICpkc3QsY2hhciAqbmFtZSk7DWxvbmcgbWJ4X3BhcnNlIChNQUlMU1RSRUFNICpzdHJlYW0p
Ow1NRVNTQUdFQ0FDSEUgKm1ieF9lbHQgKE1BSUxTVFJFQU0gKnN0cmVhbSx1bnNpZ25lZCBsb25n
IG1zZ25vLGxvbmcgZXhwb2spOw11bnNpZ25lZCBsb25nIG1ieF9yZWFkX2ZsYWdzIChNQUlMU1RS
RUFNICpzdHJlYW0sTUVTU0FHRUNBQ0hFICplbHQpOw12b2lkIG1ieF91cGRhdGVfaGVhZGVyIChN
QUlMU1RSRUFNICpzdHJlYW0pOw12b2lkIG1ieF91cGRhdGVfc3RhdHVzIChNQUlMU1RSRUFNICpz
dHJlYW0sdW5zaWduZWQgbG9uZyBtc2dubyxsb25nIGZsYWdzKTsNdW5zaWduZWQgbG9uZyBtYnhf
aGRycG9zIChNQUlMU1RSRUFNICpzdHJlYW0sdW5zaWduZWQgbG9uZyBtc2dubywNICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpzaXplLGNoYXIgKipoZHIpOw11bnNpZ25l
ZCBsb25nIG1ieF9yZXdyaXRlIChNQUlMU1RSRUFNICpzdHJlYW0sdW5zaWduZWQgbG9uZyAqcmVj
bGFpbWVkLA0gICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGZsYWdzKTsNIyAzMiAibWJ4
LmMiIDINIyAxICJtaXNjLmgiIDENIyAzMCAibWlzYy5oIg0NDQ0Nc3RydWN0IGhhc2hfZW50cnkg
ew0gIHN0cnVjdCBoYXNoX2VudHJ5ICpuZXh0Ow0gIGNoYXIgKm5hbWU7DSAgdm9pZCAqZGF0YVsx
XTsNfTsNDQ0NDXN0cnVjdCBoYXNoX3RhYmxlIHsNICBzaXplX3Qgc2l6ZTsNICBzdHJ1Y3QgaGFz
aF9lbnRyeSAqdGFibGVbMV07DX07DSMgNTYgIm1pc2MuaCINDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N
DWNoYXIgKnVjYXNlIChjaGFyICpzdHJpbmcpOw1jaGFyICpsY2FzZSAoY2hhciAqc3RyaW5nKTsN
Y2hhciAqY3B5c3RyIChjb25zdCBjaGFyICpzdHJpbmcpOw1jaGFyICpjcHl0eHQgKHN0cnVjdCBt
YWlsX3NpemVkdGV4dCAqZHN0LGNoYXIgKnRleHQsdW5zaWduZWQgbG9uZyBzaXplKTsNY2hhciAq
dGV4dGNweSAoc3RydWN0IG1haWxfc2l6ZWR0ZXh0ICpkc3Qsc3RydWN0IG1haWxfc2l6ZWR0ZXh0
ICpzcmMpOw1jaGFyICp0ZXh0Y3B5c3RyaW5nIChzdHJ1Y3QgbWFpbF9zaXplZHRleHQgKnRleHQs
U1RSSU5HICpicyk7DWNoYXIgKnRleHRjcHlvZmZzdHJpbmcgKHN0cnVjdCBtYWlsX3NpemVkdGV4
dCAqdGV4dCxTVFJJTkcgKmJzLHVuc2lnbmVkIGxvbmcgb2Zmc2V0LA0gICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOw11bnNpZ25lZCBsb25nIGZpbmRfcmlnaHRtb3N0
X2JpdCAodW5zaWduZWQgbG9uZyAqdmFscHRyKTsNbG9uZyBNaW4gKGxvbmcgaSxsb25nIGopOw1s
b25nIE1heCAobG9uZyBpLGxvbmcgaik7DWxvbmcgc2VhcmNoICh1bnNpZ25lZCBjaGFyICpiYXNl
LGxvbmcgYmFzZWMsdW5zaWduZWQgY2hhciAqcGF0LGxvbmcgcGF0Yyk7DXN0cnVjdCBoYXNoX3Rh
YmxlICpoYXNoX2NyZWF0ZSAoc2l6ZV90IHNpemUpOw12b2lkIGhhc2hfZGVzdHJveSAoc3RydWN0
IGhhc2hfdGFibGUgKipoYXNodGFiKTsNdm9pZCBoYXNoX3Jlc2V0IChzdHJ1Y3QgaGFzaF90YWJs
ZSAqaGFzaHRhYik7DXNpemVfdCBoYXNoX2luZGV4IChzdHJ1Y3QgaGFzaF90YWJsZSAqaGFzaHRh
YixjaGFyICprZXkpOw12b2lkICoqaGFzaF9sb29rdXAgKHN0cnVjdCBoYXNoX3RhYmxlICpoYXNo
dGFiLGNoYXIgKmtleSk7DXN0cnVjdCBoYXNoX2VudHJ5ICpoYXNoX2FkZCAoc3RydWN0IGhhc2hf
dGFibGUgKmhhc2h0YWIsY2hhciAqa2V5LHZvaWQgKmRhdGEsbG9uZyBleHRyYSk7DXZvaWQgKipo
YXNoX2xvb2t1cF9hbmRfYWRkIChzdHJ1Y3QgaGFzaF90YWJsZSAqaGFzaHRhYixjaGFyICprZXks
dm9pZCAqZGF0YSxsb25nIGV4dHJhKTsNIyAzMyAibWJ4LmMiIDINIyAxICJkdW1teS5oIiAxDSMg
MjMgImR1bW15LmgiDXN0cnVjdCBkcml2ZXIgKmR1bW15X3ZhbGlkIChjaGFyICpuYW1lKTsNdm9p
ZCAqZHVtbXlfcGFyYW1ldGVycyAobG9uZyBmdW5jdGlvbix2b2lkICp2YWx1ZSk7DXZvaWQgZHVt
bXlfc2NhbiAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKnJlZixjaGFyICpwYXQsY2hhciAqY29u
dGVudHMpOw12b2lkIGR1bW15X2xpc3QgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICpyZWYsY2hh
ciAqcGF0KTsNdm9pZCBkdW1teV9sc3ViIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqcmVmLGNo
YXIgKnBhdCk7DWxvbmcgZHVtbXlfc3Vic2NyaWJlIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAq
bWFpbGJveCk7DXZvaWQgZHVtbXlfbGlzdF93b3JrIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAq
ZGlyLGNoYXIgKnBhdCxjaGFyICpjb250ZW50cywNICAgICAgICAgICAgICAgICAgICAgIGxvbmcg
bGV2ZWwpOw1sb25nIGR1bW15X2xpc3RlZCAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgZGVsaW1p
dGVyLGNoYXIgKm5hbWUsDSAgICAgICAgICAgICAgICAgICBsb25nIGF0dHJpYnV0ZXMsY2hhciAq
Y29udGVudHMpOw1sb25nIGR1bW15X2NyZWF0ZSAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKm1h
aWxib3gpOw1sb25nIGR1bW15X2NyZWF0ZV9wYXRoIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAq
cGF0aCk7DWxvbmcgZHVtbXlfZGVsZXRlIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqbWFpbGJv
eCk7DWxvbmcgZHVtbXlfcmVuYW1lIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqb2xkLGNoYXIg
Km5ld25hbWUpOw1NQUlMU1RSRUFNICpkdW1teV9vcGVuIChNQUlMU1RSRUFNICpzdHJlYW0pOw12
b2lkIGR1bW15X2Nsb3NlIChNQUlMU1RSRUFNICpzdHJlYW0sbG9uZyBvcHRpb25zKTsNbG9uZyBk
dW1teV9waW5nIChNQUlMU1RSRUFNICpzdHJlYW0pOw12b2lkIGR1bW15X2NoZWNrIChNQUlMU1RS
RUFNICpzdHJlYW0pOw12b2lkIGR1bW15X2V4cHVuZ2UgKE1BSUxTVFJFQU0gKnN0cmVhbSk7DWxv
bmcgZHVtbXlfY29weSAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKnNlcXVlbmNlLGNoYXIgKm1h
aWxib3gsbG9uZyBvcHRpb25zKTsNbG9uZyBkdW1teV9hcHBlbmQgKE1BSUxTVFJFQU0gKnN0cmVh
bSxjaGFyICptYWlsYm94LGFwcGVuZF90IGFmLHZvaWQgKmRhdGEpOw1jaGFyICpkdW1teV9maWxl
IChjaGFyICpkc3QsY2hhciAqbmFtZSk7DWxvbmcgZHVtbXlfY2Fub25pY2FsaXplIChjaGFyICp0
bXAsY2hhciAqcmVmLGNoYXIgKnBhdCk7DSMgMzQgIm1ieC5jIiAyDQ0NDQ0NDXN0cnVjdCBkcml2
ZXIgbWJ4ZHJpdmVyID0gew0gICJtYngiLA0gIChsb25nKSAyfChsb25nKSA0fChsb25nKSA1MTIs
DSAgKHN0cnVjdCBkcml2ZXIgKikgMCwNICBtYnhfdmFsaWQsDSAgbWJ4X3BhcmFtZXRlcnMsDSAg
bWJ4X3NjYW4sDSAgbWJ4X2xpc3QsDSAgbWJ4X2xzdWIsDSAgMCwNICAwLA0gIG1ieF9jcmVhdGUs
DSAgbWJ4X2RlbGV0ZSwNICBtYnhfcmVuYW1lLA0gIG1ieF9zdGF0dXMsDSAgbWJ4X29wZW4sDSAg
bWJ4X2Nsb3NlLA0gIG1ieF9mbGFncywNICBtYnhfZmxhZ3MsDSAgMCwNICAwLA0gIG1ieF9oZWFk
ZXIsDSAgbWJ4X3RleHQsDSAgMCwNICAwLA0gIDAsDSAgbWJ4X2ZsYWcsDSAgbWJ4X2ZsYWdtc2cs
DSAgMCwNICAwLA0gIDAsDSAgbWJ4X3BpbmcsDSAgbWJ4X2NoZWNrLA0gIG1ieF9leHB1bmdlLA0g
IG1ieF9jb3B5LA0gIG1ieF9hcHBlbmQsDSAgMA19Ow0NDU1BSUxTVFJFQU0gbWJ4cHJvdG8gPSB7
Jm1ieGRyaXZlcn07DQ0NDQ0NDXN0cnVjdCBkcml2ZXIgKm1ieF92YWxpZCAoY2hhciAqbmFtZSkN
ew0gIGNoYXIgdG1wWzEwMjRdOw0gIHJldHVybiBtYnhfaXN2YWxpZCAobmFtZSx0bXApID8gJm1i
eGRyaXZlciA6IDA7DX0NIyAxMDAgIm1ieC5jIg1pbnQgbWJ4X2lzdmFsaWQgKGNoYXIgKm5hbWUs
Y2hhciAqdG1wKQ17DSAgaW50IGZkOw0gIGludCByZXQgPSAwOw0gIGNoYXIgKnMsaGRyWzIwNDhd
Ow0gIHN0cnVjdCBzdGF0IHNidWY7DSAgdGltZV90IHRwWzJdOw0gIGVycm5vID0gMjI7DSAgaWYg
KChzID0gbWJ4X2ZpbGUgKHRtcCxuYW1lKSkgJiYgIXN0YXQgKHMsJnNidWYpICYmDSAgICAgICgo
ZmQgPSBvcGVuICh0bXAsMCwwKSkgPj0gMCkpIHsNICAgIGVycm5vID0gLTE7DQ0gICAgaWYgKHJl
YWQgKGZkLGhkciwyMDQ4KSA9PSAyMDQ4KQ0gICAgICBpZiAoKGhkclswXSA9PSAnKicpICYmICho
ZHJbMV0gPT0gJ20nKSAmJiAoaGRyWzJdID09ICdiJykgJiYNICAgICAgICAgIChoZHJbM10gPT0g
J3gnKSAmJiAoaGRyWzRdID09ICcqJykgJiYgKGhkcls1XSA9PSAnXDAxNScpICYmDSAgICAgICAg
ICAoaGRyWzZdID09ICdcMDEyJykgJiYgKChfX2N0eXBlICsgMSlbaGRyWzddXSAmIDB4MDAwMDAw
ODApICYmICgoX19jdHlwZSArIDEpW2hkcls4XV0gJiAweDAwMDAwMDgwKSkNICAgICAgICBpZiAo
KChfX2N0eXBlICsgMSlbaGRyWzldXSAmIDB4MDAwMDAwODApICYmICgoX19jdHlwZSArIDEpW2hk
clsxMF1dICYgMHgwMDAwMDA4MCkgJiYgKChfX2N0eXBlICsgMSlbaGRyWzExXV0gJiAweDAwMDAw
MDgwKSAmJg0gICAgICAgICAgICAoKF9fY3R5cGUgKyAxKVtoZHJbMTJdXSAmIDB4MDAwMDAwODAp
ICYmICgoX19jdHlwZSArIDEpW2hkclsxM11dICYgMHgwMDAwMDA4MCkgJiYgKChfX2N0eXBlICsg
MSlbaGRyWzE0XV0gJiAweDAwMDAwMDgwKSAmJg0gICAgICAgICAgICAoKF9fY3R5cGUgKyAxKVto
ZHJbMTVdXSAmIDB4MDAwMDAwODApICYmICgoX19jdHlwZSArIDEpW2hkclsxNl1dICYgMHgwMDAw
MDA4MCkpDSAgICAgICAgICBpZiAoKChfX2N0eXBlICsgMSlbaGRyWzE3XV0gJiAweDAwMDAwMDgw
KSAmJiAoKF9fY3R5cGUgKyAxKVtoZHJbMThdXSAmIDB4MDAwMDAwODApICYmDSAgICAgICAgICAg
ICAgKChfX2N0eXBlICsgMSlbaGRyWzE5XV0gJiAweDAwMDAwMDgwKSAmJiAoKF9fY3R5cGUgKyAx
KVtoZHJbMjBdXSAmIDB4MDAwMDAwODApICYmDSAgICAgICAgICAgICAgKChfX2N0eXBlICsgMSlb
aGRyWzIxXV0gJiAweDAwMDAwMDgwKSAmJiAoKF9fY3R5cGUgKyAxKVtoZHJbMjJdXSAmIDB4MDAw
MDAwODApICYmDSAgICAgICAgICAgICAgKGhkclsyM10gPT0gJ1wwMTUnKSAmJiAoaGRyWzI0XSA9
PSAnXDAxMicpKSByZXQgPSAxOw0gICAgY2xvc2UgKGZkKTsNICAgIHRwWzBdID0gc2J1Zi5zdF9h
dGltLnR2X3NlYzsNICAgIHRwWzFdID0gc2J1Zi5zdF9tdGltLnR2X3NlYzsNICAgIHBvcnRhYmxl
X3V0aW1lICh0bXAsdHApOw0gIH0NDSAgZWxzZSBpZiAoKGVycm5vID09IDIpICYmICgobmFtZVsw
XSA9PSAnSScpIHx8IChuYW1lWzBdID09ICdpJykpICYmDSAgICAgICAgICAgKChuYW1lWzFdID09
ICdOJykgfHwgKG5hbWVbMV0gPT0gJ24nKSkgJiYNICAgICAgICAgICAoKG5hbWVbMl0gPT0gJ0In
KSB8fCAobmFtZVsyXSA9PSAnYicpKSAmJg0gICAgICAgICAgICgobmFtZVszXSA9PSAnTycpIHx8
IChuYW1lWzNdID09ICdvJykpICYmDSAgICAgICAgICAgKChuYW1lWzRdID09ICdYJykgfHwgKG5h
bWVbNF0gPT0gJ3gnKSkgJiYgIW5hbWVbNV0pIGVycm5vID0gLTE7DSAgcmV0dXJuIHJldDsNfQ0N
DQ0NDQ0Ndm9pZCAqbWJ4X3BhcmFtZXRlcnMgKGxvbmcgZnVuY3Rpb24sdm9pZCAqdmFsdWUpDXsN
ICB2b2lkICpyZXQgPSAwOw0gIHN3aXRjaCAoKGludCkgZnVuY3Rpb24pIHsNICBjYXNlIChsb25n
KSA1MzU6DSAgICBpZiAodmFsdWUgJiYgKCgoTUJYTE9DQUwgKikgKChNQUlMU1RSRUFNICopIHZh
bHVlKS0+bG9jYWwpLT5leHB1bmdlZCkpDSAgICAgICgoTUJYTE9DQUwgKikgKChNQUlMU1RSRUFN
ICopIHZhbHVlKS0+bG9jYWwpLT5mdWxsY2hlY2sgPSAxOw0gIGNhc2UgKGxvbmcpIDUzNDoNICAg
IGlmICh2YWx1ZSkgcmV0ID0gKHZvaWQgKikNICAgICAgKChNQlhMT0NBTCAqKSAoKE1BSUxTVFJF
QU0gKikgdmFsdWUpLT5sb2NhbCktPmZ1bGxjaGVjazsNICAgIGJyZWFrOw0gIH0NICByZXR1cm4g
cmV0Ow19DSMgMTY2ICJtYnguYyINdm9pZCBtYnhfc2NhbiAoTUFJTFNUUkVBTSAqc3RyZWFtLGNo
YXIgKnJlZixjaGFyICpwYXQsY2hhciAqY29udGVudHMpDXsNICBpZiAoc3RyZWFtKSBkdW1teV9z
Y2FuICgwLHJlZixwYXQsY29udGVudHMpOw19DSMgMTc4ICJtYnguYyINdm9pZCBtYnhfbGlzdCAo
TUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKnJlZixjaGFyICpwYXQpDXsNICBpZiAoc3RyZWFtKSBk
dW1teV9saXN0ICgwLHJlZixwYXQpOw19DSMgMTkwICJtYnguYyINdm9pZCBtYnhfbHN1YiAoTUFJ
TFNUUkVBTSAqc3RyZWFtLGNoYXIgKnJlZixjaGFyICpwYXQpDXsNICBpZiAoc3RyZWFtKSBkdW1t
eV9sc3ViICgwLHJlZixwYXQpOw19DQ0NDQ0NDQ1sb25nIG1ieF9jcmVhdGUgKE1BSUxTVFJFQU0g
KnN0cmVhbSxjaGFyICptYWlsYm94KQ17DSAgY2hhciAqcywqdCxtYnhbMTAyNF0sdG1wWzIwNDhd
Ow0gIGxvbmcgcmV0ID0gMDsNICBpbnQgaSxmZDsNICBpZiAoIShzID0gbWJ4X2ZpbGUgKG1ieCxt
YWlsYm94KSkpIHsNICAgIHNwcmludGYgKG1ieCwiQ2FuJ3QgY3JlYXRlICUuODBzOiBpbnZhbGlk
IG5hbWUiLG1haWxib3gpOw0gICAgbW1fbG9nIChtYngsKGxvbmcpIDIpOw0gIH0NDSAgZWxzZSBp
ZiAoZHVtbXlfY3JlYXRlX3BhdGggKHN0cmVhbSxzKSkgew0NICAgIGlmICgocyA9IHN0cnJjaHIg
KHMsJy8nKSkgJiYgIXNbMV0pIHJldHVybiAxOw0gICAgaWYgKChmZCA9IG9wZW4gKG1ieCwxLA0g
ICAgICAgICAgICAgICAgICAgIChpbnQpIG1haWxfcGFyYW1ldGVycyAoMCwobG9uZykgNTAwLDAp
KSkgPCAwKSB7DSAgICAgIHNwcmludGYgKHRtcCwiQ2FuJ3QgcmVvcGVuIG1haWxib3ggbm9kZSAl
LjgwczogJXMiLG1ieCxzdHJlcnJvciAoZXJybm8pKTsNICAgICAgbW1fbG9nICh0bXAsKGxvbmcp
IDIpOw0gICAgICB1bmxpbmsgKG1ieCk7DSAgICB9DSAgICBlbHNlIHsNICAgICAgbWVtc2V0ICh0
bXAsJ1wwJywyMDQ4KTsNICAgICAgc3ByaW50ZiAocyA9IHRtcCwiKm1ieCpcMDE1XDAxMiUwOGx4
MDAwMDAwMDBcMDE1XDAxMiIsDSAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSB0aW1lICgw
KSk7DSAgICAgIGZvciAoaSA9IDA7IGkgPCAzMDsgKytpKQ0gICAgICAgIHNwcmludGYgKHMgKz0g
c3RybGVuIChzKSwiJXNcMDE1XDAxMiIsKHQgPSBkZWZhdWx0X3VzZXJfZmxhZyAoaSkpID8NICAg
ICAgICAgICAgICAgICB0IDogIiIpOw0gICAgICBpZiAoc2FmZV93cml0ZSAoZmQsdG1wLDIwNDgp
ICE9IDIwNDgpIHsNICAgICAgICBzcHJpbnRmICh0bXAsIkNhbid0IGluaXRpYWxpemUgbWFpbGJv
eCBub2RlICUuODBzOiAlcyIsDSAgICAgICAgICAgICAgICAgbWJ4LHN0cmVycm9yIChlcnJubykp
Ow0gICAgICAgIG1tX2xvZyAodG1wLChsb25nKSAyKTsNICAgICAgICB1bmxpbmsgKG1ieCk7DSAg
ICAgIH0NICAgICAgZWxzZSByZXQgPSAxOw0gICAgfQ0gICAgY2xvc2UgKGZkKTsNICB9DSAgcmV0
dXJuIHJldCA/IHNldF9tYnhfcHJvdGVjdGlvbnMgKG1haWxib3gsbWJ4KSA6IDA7DX0NIyAyNDcg
Im1ieC5jIg1sb25nIG1ieF9kZWxldGUgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICptYWlsYm94
KQ17DSAgcmV0dXJuIG1ieF9yZW5hbWUgKHN0cmVhbSxtYWlsYm94LDApOw19DSMgMjU5ICJtYngu
YyINbG9uZyBtYnhfcmVuYW1lIChNQUlMU1RSRUFNICpzdHJlYW0sY2hhciAqb2xkLGNoYXIgKm5l
d25hbWUpDXsNICBsb25nIHJldCA9IDE7DSAgY2hhciBjLCpzLHRtcFsxMDI0XSxmaWxlWzEwMjRd
LGxvY2tbMTAyNF07DSAgaW50IGxkOw0gIGludCBmZCA9IG9wZW4gKG1ieF9maWxlIChmaWxlLG9s
ZCksMiwwKTsNICBzdHJ1Y3Qgc3RhdCBzYnVmOw0gIGlmIChmZCA8IDApIHsNICAgIHNwcmludGYg
KHRtcCwiQ2FuJ3Qgb3BlbiBtYWlsYm94ICUuODBzOiAlcyIsb2xkLHN0cmVycm9yIChlcnJubykp
Ow0gICAgbW1fbG9nICh0bXAsKGxvbmcpIDIpOw0gICAgcmV0dXJuIDA7DSAgfQ0NICBpZiAoKGxk
ID0gbG9ja2ZkIChmZCxsb2NrLDIpKSA8IDApIHsNICAgIG1tX2xvZyAoIlVuYWJsZSB0byBsb2Nr
IHJlbmFtZSBtYWlsYm94IiwobG9uZykgMik7DSAgICByZXR1cm4gMDsNICB9DQ0gIGlmIChic2Rf
ZmxvY2sgKGZkLDJ8NCkpIHsNICAgIGNsb3NlIChmZCk7DSAgICBzcHJpbnRmICh0bXAsIk1haWxi
b3ggJS44MHMgaXMgaW4gdXNlIGJ5IGFub3RoZXIgcHJvY2VzcyIsb2xkKTsNICAgIG1tX2xvZyAo
dG1wLChsb25nKSAyKTsNICAgIHVubG9ja2ZkIChsZCxsb2NrKTsNICAgIHJldHVybiAwOw0gIH0N
ICBpZiAobmV3bmFtZSkgew0gICAgaWYgKCEoKHMgPSBtYnhfZmlsZSAodG1wLG5ld25hbWUpKSAm
JiAqcykpIHsNICAgICAgc3ByaW50ZiAodG1wLCJDYW4ndCByZW5hbWUgbWFpbGJveCAlLjgwcyB0
byAlLjgwczogaW52YWxpZCBuYW1lIiwNICAgICAgICAgICAgICAgb2xkLG5ld25hbWUpOw0gICAg
ICBtbV9sb2cgKHRtcCwobG9uZykgMik7DSAgICAgIHJldCA9IDA7DSAgICB9DSAgICBpZiAocyA9
IHN0cnJjaHIgKHMsJy8nKSkgew0gICAgICBjID0gKisrczsNICAgICAgKnMgPSAnXDAnOw0NICAg
ICAgaWYgKChzdGF0ICh0bXAsJnNidWYpIHx8ICgoc2J1Zi5zdF9tb2RlICYgMHhGMDAwKSAhPSAw
eDQwMDApKSAmJg0gICAgICAgICAgIWR1bW15X2NyZWF0ZSAoc3RyZWFtLHRtcCkpIHJldCA9IDA7
DSAgICAgIGVsc2UgKnMgPSBjOw0gICAgfQ0NICAgIGlmIChyZXQgJiYgcmVuYW1lIChmaWxlLHRt
cCkpIHsNICAgICAgc3ByaW50ZiAodG1wLCJDYW4ndCByZW5hbWUgbWFpbGJveCAlLjgwcyB0byAl
LjgwczogJXMiLG9sZCxuZXduYW1lLA0gICAgICAgICAgICAgICBzdHJlcnJvciAoZXJybm8pKTsN
ICAgICAgbW1fbG9nICh0bXAsKGxvbmcpIDIpOw0gICAgICByZXQgPSAwOw0gICAgfQ0gIH0NICBl
bHNlIGlmICh1bmxpbmsgKGZpbGUpKSB7DSAgICBzcHJpbnRmICh0bXAsIkNhbid0IGRlbGV0ZSBt
YWlsYm94ICUuODBzOiAlcyIsb2xkLHN0cmVycm9yIChlcnJubykpOw0gICAgbW1fbG9nICh0bXAs
KGxvbmcpIDIpOw0gICAgcmV0ID0gMDsNICB9DSAgYnNkX2Zsb2NrIChmZCw4KTsNICB1bmxvY2tm
ZCAobGQsbG9jayk7DSAgY2xvc2UgKGZkKTsNDSAgaWYgKHJldCAmJiAhc3RyY21wICh1Y2FzZSAo
c3RyY3B5ICh0bXAsb2xkKSksIklOQk9YIikpDSAgICBtYnhfY3JlYXRlICgwLCJJTkJPWCIpOw0g
IHJldHVybiByZXQ7DX0NIyAzMjggIm1ieC5jIg1sb25nIG1ieF9zdGF0dXMgKE1BSUxTVFJFQU0g
KnN0cmVhbSxjaGFyICptYngsbG9uZyBmbGFncykNew0gIE1BSUxTVEFUVVMgc3RhdHVzOw0gIHVu
c2lnbmVkIGxvbmcgaTsNICBNQUlMU1RSRUFNICp0c3RyZWFtID0gMDsNICBNQUlMU1RSRUFNICpz
eXN0cmVhbSA9IDA7DQ0gIGlmICghc3RyZWFtICYmICEoc3RyZWFtID0gdHN0cmVhbSA9DSAgICAg
ICAgICAgICAgICAgICBtYWlsX29wZW4gKDAsbWJ4LChsb25nKSAyfChsb25nKSAxNikpKSByZXR1
cm4gMDsNICBzdGF0dXMuZmxhZ3MgPSBmbGFnczsNICBzdGF0dXMubWVzc2FnZXMgPSBzdHJlYW0t
Pm5tc2dzOw0gIHN0YXR1cy5yZWNlbnQgPSBzdHJlYW0tPnJlY2VudDsNICBpZiAoZmxhZ3MgJiAo
bG9uZykgNCkNICAgIGZvciAoaSA9IDEsc3RhdHVzLnVuc2VlbiA9IDA7IGkgPD0gc3RyZWFtLT5u
bXNnczsgaSsrKQ0gICAgICBpZiAoIW1haWxfZWx0IChzdHJlYW0saSktPnNlZW4pIHN0YXR1cy51
bnNlZW4rKzsNICBzdGF0dXMudWlkbmV4dCA9IHN0cmVhbS0+dWlkX2xhc3QgKyAxOw0gIHN0YXR1
cy51aWR2YWxpZGl0eSA9IHN0cmVhbS0+dWlkX3ZhbGlkaXR5Ow0NICBpZiAoIXN0YXR1cy5yZWNl
bnQgJiYgc3RyZWFtLT5pbmJveCAmJg0gICAgICAoc3lzdHJlYW0gPSBtYWlsX29wZW4gKDAsc3lz
aW5ib3ggKCksKGxvbmcpIDJ8KGxvbmcpIDE2KSkpIHsNICAgIHN0YXR1cy5tZXNzYWdlcyArPSBz
eXN0cmVhbS0+bm1zZ3M7DSAgICBzdGF0dXMucmVjZW50ICs9IHN5c3RyZWFtLT5yZWNlbnQ7DSAg
ICBpZiAoZmxhZ3MgJiAobG9uZykgNCkNICAgICAgZm9yIChpID0gMTsgaSA8PSBzeXN0cmVhbS0+
bm1zZ3M7IGkrKykNICAgICAgICBpZiAoIW1haWxfZWx0IChzeXN0cmVhbSxpKS0+c2Vlbikgc3Rh
dHVzLnVuc2VlbisrOw0NICAgIHN0YXR1cy51aWRuZXh0ICs9IHN5c3RyZWFtLT5ubXNnczsNICB9
DQ0gIG1tX3N0YXR1cyAoc3RyZWFtLG1ieCwmc3RhdHVzKTsNICBpZiAodHN0cmVhbSkgbWFpbF9j
bG9zZV9mdWxsICh0c3RyZWFtLDApOw0gIGlmIChzeXN0cmVhbSkgbWFpbF9jbG9zZV9mdWxsIChz
eXN0cmVhbSwwKTsNICByZXR1cm4gMTsNfQ0NDQ0NDQ1NQUlMU1RSRUFNICptYnhfb3BlbiAoTUFJ
TFNUUkVBTSAqc3RyZWFtKQ17DSAgaW50IGZkLGxkOw0gIHNob3J0IHNpbGVudDsNICBjaGFyIHRt
cFsxMDI0XTsNICBibG9ja25vdGlmeV90IGJuID0gKGJsb2Nrbm90aWZ5X3QpIG1haWxfcGFyYW1l
dGVycyAoMCwobG9uZykgMTMzLDApOw0NICBpZiAoIXN0cmVhbSkgcmV0dXJuIHVzZXJfZmxhZ3Mg
KCZtYnhwcm90byk7DSAgaWYgKHN0cmVhbS0+bG9jYWwpIGZhdGFsICgibWJ4IHJlY3ljbGUgc3Ry
ZWFtIik7DSAgaWYgKHN0cmVhbS0+cmRvbmx5IHx8DSAgICAgIChmZCA9IG9wZW4gKG1ieF9maWxl
ICh0bXAsc3RyZWFtLT5tYWlsYm94KSwyLDApKSA8IDApIHsNICAgIGlmICgoZmQgPSBvcGVuICht
YnhfZmlsZSAodG1wLHN0cmVhbS0+bWFpbGJveCksMCwwKSkgPCAwKSB7DSAgICAgIHNwcmludGYg
KHRtcCwiQ2FuJ3Qgb3BlbiBtYWlsYm94OiAlcyIsc3RyZXJyb3IgKGVycm5vKSk7DSAgICAgIG1t
X2xvZyAodG1wLChsb25nKSAyKTsNICAgICAgcmV0dXJuIDA7DSAgICB9DSAgICBlbHNlIGlmICgh
c3RyZWFtLT5yZG9ubHkpIHsNICAgICAgbW1fbG9nICgiQ2FuJ3QgZ2V0IHdyaXRlIGFjY2VzcyB0
byBtYWlsYm94LCBhY2Nlc3MgaXMgcmVhZG9ubHkiLChsb25nKSAxKTsNICAgICAgc3RyZWFtLT5y
ZG9ubHkgPSAxOw0gICAgfQ0gIH0NDSAgc3RyZWFtLT5sb2NhbCA9IG1lbXNldCAoZnNfZ2V0IChz
aXplb2YgKE1CWExPQ0FMKSksMCxzaXplb2YgKE1CWExPQ0FMKSk7DSAgKChNQlhMT0NBTCAqKSBz
dHJlYW0tPmxvY2FsKS0+ZmQgPSBmZDsNICAoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5i
dWYgPSAoY2hhciAqKSBmc19nZXQgKDY1MDAwICsgMSk7DSAgKChNQlhMT0NBTCAqKSBzdHJlYW0t
PmxvY2FsKS0+YnVmbGVuID0gNjUwMDA7DQ0gIHN0cmVhbS0+aW5ib3ggPSAhc3RyY21wKHVjYXNl
IChzdHJjcHkgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZixzdHJlYW0tPm1haWxi
b3gpKSwiSU5CT1giKTsNICBmc19naXZlICgodm9pZCAqKikgJnN0cmVhbS0+bWFpbGJveCk7DSAg
c3RyZWFtLT5tYWlsYm94ID0gY3B5c3RyICh0bXApOw0NICBpZiAoKGxkID0gbG9ja2ZkICgoKE1C
WExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZCx0bXAsMikpIDwgMCkgew0gICAgbW1fbG9nICgi
VW5hYmxlIHRvIGxvY2sgb3BlbiBtYWlsYm94IiwobG9uZykgMik7DSAgICByZXR1cm4gMDsNICB9
DSAgKCpibikgKDIwLDApOw0gIGJzZF9mbG9jayAoKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2Fs
KS0+ZmQsMSk7DSAgKCpibikgKDAsMCk7DSAgdW5sb2NrZmQgKGxkLHRtcCk7DSAgKChNQlhMT0NB
TCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmlsZXNpemUgPSAyMDQ4Ow0NICAoKE1CWExPQ0FMICopIHN0
cmVhbS0+bG9jYWwpLT5sYXN0c25hcmYgPSAoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5m
aWxldGltZSA9IDA7DSAgKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZnVsbGNoZWNrID0g
KChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmxhZ2NoZWNrID0gMDsNICBzdHJlYW0tPnNl
cXVlbmNlKys7DQ0gIHN0cmVhbS0+bm1zZ3MgPSBzdHJlYW0tPnJlY2VudCA9IDA7DSAgc2lsZW50
ID0gc3RyZWFtLT5zaWxlbnQ7DSAgc3RyZWFtLT5zaWxlbnQgPSAxOw0gIGlmIChtYnhfcGluZyAo
c3RyZWFtKSAmJiAhc3RyZWFtLT5ubXNncykNICAgIG1tX2xvZyAoIk1haWxib3ggaXMgZW1wdHki
LChsb25nKSAwKTsNICBzdHJlYW0tPnNpbGVudCA9IHNpbGVudDsNICBtYWlsX2V4aXN0cyAoc3Ry
ZWFtLHN0cmVhbS0+bm1zZ3MpOw0gIG1haWxfcmVjZW50IChzdHJlYW0sc3RyZWFtLT5yZWNlbnQp
Ow0gIGlmICghKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKSkgcmV0dXJuIDA7DSAgc3RyZWFt
LT5wZXJtX3NlZW4gPSBzdHJlYW0tPnBlcm1fZGVsZXRlZCA9IHN0cmVhbS0+cGVybV9mbGFnZ2Vk
ID0NICAgIHN0cmVhbS0+cGVybV9hbnN3ZXJlZCA9IHN0cmVhbS0+cGVybV9kcmFmdCA9IHN0cmVh
bS0+cmRvbmx5ID8gMCA6IDE7DSAgc3RyZWFtLT5wZXJtX3VzZXJfZmxhZ3MgPSBzdHJlYW0tPnJk
b25seSA/IDAgOiAweGZmZmZmZmZmOw0gIHN0cmVhbS0+a3dkX2NyZWF0ZSA9IChzdHJlYW0tPnVz
ZXJfZmxhZ3NbMzAtMV0gfHwgc3RyZWFtLT5yZG9ubHkpID8NICAgIDAgOiAxOw0gIHJldHVybiBz
dHJlYW07DX0NDQ0NDQ0Ndm9pZCBtYnhfY2xvc2UgKE1BSUxTVFJFQU0gKnN0cmVhbSxsb25nIG9w
dGlvbnMpDXsNICBpZiAoc3RyZWFtICYmICgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCkpIHsN
ICAgIGludCBzaWxlbnQgPSBzdHJlYW0tPnNpbGVudDsNICAgIHN0cmVhbS0+c2lsZW50ID0gMTsN
DSAgICBpZiAob3B0aW9ucyAmIChsb25nKSAxKSBtYnhfZXhwdW5nZSAoc3RyZWFtKTsNICAgIGVs
c2Ugew0gICAgICAoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mdWxsY2hlY2sgPSAxOw0g
ICAgICBtYnhfcGluZyAoc3RyZWFtKTsNICAgIH0NICAgIHN0cmVhbS0+c2lsZW50ID0gc2lsZW50
Ow0gICAgbWJ4X2Fib3J0IChzdHJlYW0pOw0gIH0NfQ0NDQ0NDQ12b2lkIG1ieF9hYm9ydCAoTUFJ
TFNUUkVBTSAqc3RyZWFtKQ17DSAgaWYgKHN0cmVhbSAmJiAoKE1CWExPQ0FMICopIHN0cmVhbS0+
bG9jYWwpKSB7DSAgICBic2RfZmxvY2sgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZk
LDgpOw0gICAgY2xvc2UgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZkKTsNDSAgICBp
ZiAoKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVmKSBmc19naXZlICgodm9pZCAqKikg
JigoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1Zik7DQ0gICAgZnNfZ2l2ZSAoKHZvaWQg
KiopICZzdHJlYW0tPmxvY2FsKTsNICAgIHN0cmVhbS0+ZHRiID0gMDsNICB9DX0NIyA0NzcgIm1i
eC5jIg12b2lkIG1ieF9mbGFncyAoTUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKnNlcXVlbmNlLGxv
bmcgZmxhZ3MpDXsNICB1bnNpZ25lZCBsb25nIGk7DSAgaWYgKG1ieF9waW5nIChzdHJlYW0pICYm
DSAgICAgICgoZmxhZ3MgJiAobG9uZykgMSkgPyBtYWlsX3VpZF9zZXF1ZW5jZSAoc3RyZWFtLHNl
cXVlbmNlKSA6DSAgICAgICBtYWlsX3NlcXVlbmNlIChzdHJlYW0sc2VxdWVuY2UpKSkNICAgIGZv
ciAoaSA9IDE7IGkgPD0gc3RyZWFtLT5ubXNnczsgaSsrKQ0gICAgICBpZiAobWFpbF9lbHQgKHN0
cmVhbSxpKS0+c2VxdWVuY2UpIG1ieF9lbHQgKHN0cmVhbSxpLDApOw19DSMgNDk1ICJtYnguYyIN
Y2hhciAqbWJ4X2hlYWRlciAoTUFJTFNUUkVBTSAqc3RyZWFtLHVuc2lnbmVkIGxvbmcgbXNnbm8s
dW5zaWduZWQgbG9uZyAqbGVuZ3RoLA0gICAgICAgICAgICAgICAgICBsb25nIGZsYWdzKQ17DSAg
dW5zaWduZWQgbG9uZyBpOw0gIGNoYXIgKnM7DSAgKmxlbmd0aCA9IDA7DSAgaWYgKGZsYWdzICYg
KGxvbmcpIDEpIHJldHVybiAiIjsNDSAgaSA9IG1ieF9oZHJwb3MgKHN0cmVhbSxtc2dubyxsZW5n
dGgsJnMpOw0gIGlmIChzKSByZXR1cm4gczsNICBsc2VlayAoKChNQlhMT0NBTCAqKSBzdHJlYW0t
PmxvY2FsKS0+ZmQsaSwwKTsNDSAgaWYgKCpsZW5ndGggPiAoKE1CWExPQ0FMICopIHN0cmVhbS0+
bG9jYWwpLT5idWZsZW4pIHsNICAgIGZzX2dpdmUgKCh2b2lkICoqKSAmKChNQlhMT0NBTCAqKSBz
dHJlYW0tPmxvY2FsKS0+YnVmKTsNICAgICgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1
ZiA9IChjaGFyICopIGZzX2dldCAoKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1Zmxl
biA9ICpsZW5ndGgpICsgMSk7DSAgfQ0gICgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1
ZlsqbGVuZ3RoXSA9ICdcMCc7DQ0gIHJlYWQgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCkt
PmZkLCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZiwqbGVuZ3RoKTsNICByZXR1cm4g
KChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVmOw19DSMgNTI1ICJtYnguYyINbG9uZyBt
YnhfdGV4dCAoTUFJTFNUUkVBTSAqc3RyZWFtLHVuc2lnbmVkIGxvbmcgbXNnbm8sU1RSSU5HICpi
cyxsb25nIGZsYWdzKQ17DSAgdW5zaWduZWQgbG9uZyBpLGo7DSAgTUVTU0FHRUNBQ0hFICplbHQ7
DQ0gIGlmIChmbGFncyAmIChsb25nKSAxKSByZXR1cm4gMDsNDSAgZWx0ID0gbWJ4X2VsdCAoc3Ry
ZWFtLG1zZ25vLDApOw0NICBpZiAoIShmbGFncyAmIChsb25nKSAyKSAmJiAhZWx0LT5zZWVuKSB7
DSAgICBlbHQtPnNlZW4gPSAxOw0NICAgIG1ieF91cGRhdGVfc3RhdHVzIChzdHJlYW0sbXNnbm8s
MSk7DSAgICBtbV9mbGFncyAoc3RyZWFtLG1zZ25vKTsNICB9DQ0gIGkgPSBtYnhfaGRycG9zIChz
dHJlYW0sbXNnbm8sJmosMCk7DQ0gIGxzZWVrICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwp
LT5mZCxpICsgaiwwKTsNDSAgaWYgKChpID0gZWx0LT5yZmM4MjJfc2l6ZSAtIGopID4gKChNQlhM
T0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVmbGVuKSB7DSAgICBmc19naXZlICgodm9pZCAqKikg
JigoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1Zik7DSAgICAoKE1CWExPQ0FMICopIHN0
cmVhbS0+bG9jYWwpLT5idWYgPSAoY2hhciAqKSBmc19nZXQgKCgoKE1CWExPQ0FMICopIHN0cmVh
bS0+bG9jYWwpLT5idWZsZW4gPSBpKSArIDEpOw0gIH0NICByZWFkICgoKE1CWExPQ0FMICopIHN0
cmVhbS0+bG9jYWwpLT5mZCwoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYsaSk7DSAg
KChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVmW2ldID0gJ1wwJzsNDSAgKCgqKChicykt
PmR0YiA9ICZtYWlsX3N0cmluZyktPmluaXQpIChicywoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9j
YWwpLT5idWYsaSkpOw0gIHJldHVybiAxOw19DSMgNTYzICJtYnguYyINdm9pZCBtYnhfZmxhZyAo
TUFJTFNUUkVBTSAqc3RyZWFtLGNoYXIgKnNlcXVlbmNlLGNoYXIgKmZsYWcsbG9uZyBmbGFncykN
ew0gIHN0cnVjdCBzdGF0IHNidWY7DSAgaWYgKCFzdHJlYW0tPnJkb25seSkgew0gICAgZnN5bmMg
KCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZkKTsNICAgIGZzdGF0ICgoKE1CWExPQ0FM
ICopIHN0cmVhbS0+bG9jYWwpLT5mZCwmc2J1Zik7DSAgICAoKE1CWExPQ0FMICopIHN0cmVhbS0+
bG9jYWwpLT5maWxldGltZSA9IHNidWYuc3RfbXRpbS50dl9zZWM7DSAgfQ0gIGlmICgoKChNQlhM
T0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmZ1c2VyZmxhZyA8IDMwKSYmc3RyZWFtLT51c2VyX2Zs
YWdzWygoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZmdXNlcmZsYWddKQ0gICAgbWJ4X3Vw
ZGF0ZV9oZWFkZXIgKHN0cmVhbSk7DX0NDQ0NDQ0NDXZvaWQgbWJ4X2ZsYWdtc2cgKE1BSUxTVFJF
QU0gKnN0cmVhbSxNRVNTQUdFQ0FDSEUgKmVsdCkNew0gIHN0cnVjdCBzdGF0IHNidWY7DQ0gIGlm
ICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5maWxldGltZSAmJiAhKChNQlhMT0NBTCAq
KSBzdHJlYW0tPmxvY2FsKS0+ZmxhZ2NoZWNrKSB7DSAgICBmc3RhdCAoKChNQlhMT0NBTCAqKSBz
dHJlYW0tPmxvY2FsKS0+ZmQsJnNidWYpOw0gICAgaWYgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5s
b2NhbCktPmZpbGV0aW1lIDwgc2J1Zi5zdF9tdGltLnR2X3NlYykgKChNQlhMT0NBTCAqKSBzdHJl
YW0tPmxvY2FsKS0+ZmxhZ2NoZWNrID0gMTsNICAgICgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2Nh
bCktPmZpbGV0aW1lID0gMDsNICB9DQ0gIG1ieF91cGRhdGVfc3RhdHVzIChzdHJlYW0sZWx0LT5t
c2dubywwKTsNfQ0NDQ0NDQ1sb25nIG1ieF9waW5nIChNQUlMU1RSRUFNICpzdHJlYW0pDXsNICB1
bnNpZ25lZCBsb25nIGkgPSAxOw0gIGxvbmcgciA9IDE7DSAgaW50IGxkOw0gIGNoYXIgbG9ja1sx
MDI0XTsNICBzdHJ1Y3Qgc3RhdCBzYnVmOw0gIGlmIChzdHJlYW0gJiYgKChNQlhMT0NBTCAqKSBz
dHJlYW0tPmxvY2FsKSkgew0gICAgaW50IHNuYXJmID0gc3RyZWFtLT5pbmJveCAmJiAhc3RyZWFt
LT5yZG9ubHk7DSAgICBmc3RhdCAoKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmQsJnNi
dWYpOw0gICAgaWYgKCEoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mdWxsY2hlY2spIHsN
ICAgICAgaWYgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmV4cHVuZ2VkICYmIG1haWxf
cGFyYW1ldGVycyAoMCwobG9uZykgMTIzLDApKQ0gICAgICAgICgoTUJYTE9DQUwgKikgc3RyZWFt
LT5sb2NhbCktPmZ1bGxjaGVjayA9IDE7DSAgICAgIGVsc2UgaWYgKCgoTUJYTE9DQUwgKikgc3Ry
ZWFtLT5sb2NhbCktPmZpbGV0aW1lICYmICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5m
aWxldGltZSA8IHNidWYuc3RfbXRpbS50dl9zZWMpKQ0gICAgICAgICgoTUJYTE9DQUwgKikgc3Ry
ZWFtLT5sb2NhbCktPmZsYWdjaGVjayA9IDE7DSAgICB9DQ0gICAgaWYgKCgoTUJYTE9DQUwgKikg
c3RyZWFtLT5sb2NhbCktPmZ1bGxjaGVjayB8fCAoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwp
LT5mbGFnY2hlY2spIHsNICAgICAgd2hpbGUgKGkgPD0gc3RyZWFtLT5ubXNncykgaWYgKG1ieF9l
bHQgKHN0cmVhbSxpLCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZ1bGxjaGVjaykpICsr
aTsNICAgICAgKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmxhZ2NoZWNrID0gMDsNICAg
IH0NICAgIGlmICgoc25hcmYgfHwgKGkgPSAoc2J1Zi5zdF9zaXplIC0gKChNQlhMT0NBTCAqKSBz
dHJlYW0tPmxvY2FsKS0+ZmlsZXNpemUpIHx8ICFzdHJlYW0tPm5tc2dzKSkgJiYNICAgICAgICAo
KGxkID0gbG9ja2ZkICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZCxsb2NrLDIpKSA+
PSAwKSkgew0NICAgICAgaWYgKGkpIHIgPSBtYnhfcGFyc2UgKHN0cmVhbSk7DSAgICAgIGlmICgo
KE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpICYmIHNuYXJmKSB7DSAgICAgICAgbWJ4X3NuYXJm
IChzdHJlYW0pOw0gICAgICAgIHIgPSBtYnhfcGFyc2UgKHN0cmVhbSk7DSAgICAgIH0NICAgICAg
dW5sb2NrZmQgKGxkLGxvY2spOw0gICAgfQ0gICAgZWxzZSBpZiAoKHNidWYuc3RfY3RpbS50dl9z
ZWMgPiBzYnVmLnN0X2F0aW0udHZfc2VjKXx8KHNidWYuc3RfY3RpbS50dl9zZWMgPiBzYnVmLnN0
X210aW0udHZfc2VjKSl7DSAgICAgIHRpbWVfdCB0cFsyXTsNICAgICAgKChNQlhMT0NBTCAqKSBz
dHJlYW0tPmxvY2FsKS0+ZmlsZXRpbWUgPSB0cFswXSA9IHRwWzFdID0gdGltZSAoMCk7DSAgICAg
IHBvcnRhYmxlX3V0aW1lIChzdHJlYW0tPm1haWxib3gsdHApOw0gICAgfQ0gICAgaWYgKHIgJiYg
KChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZnVsbGNoZWNrKSB7DQ0gICAgICAoKE1CWExP
Q0FMICopIHN0cmVhbS0+bG9jYWwpLT5mdWxsY2hlY2sgPSAoKE1CWExPQ0FMICopIHN0cmVhbS0+
bG9jYWwpLT5leHB1bmdlZCA9IDA7DSAgICAgIGlmICghc3RyZWFtLT5yZG9ubHkpIHsNICAgICAg
ICBpZiAobWJ4X3Jld3JpdGUgKHN0cmVhbSwmaSwwKSkgZmF0YWwgKCJleHB1bmdlIG9uIGNoZWNr
Iik7DSAgICAgICAgaWYgKGkpIHsNICAgICAgICAgIHNwcmludGYgKCgoTUJYTE9DQUwgKikgc3Ry
ZWFtLT5sb2NhbCktPmJ1ZiwiUmVjbGFpbWVkICVsdSBieXRlcyBvZiBleHB1bmdlZCBzcGFjZSIs
aSk7DSAgICAgICAgICBtbV9sb2cgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1Ziwo
bG9uZykgMCk7DSAgICAgICAgfQ0gICAgICB9DSAgICB9DSAgfQ0gIHJldHVybiByOw19DQ0NDQ0N
dm9pZCBtYnhfY2hlY2sgKE1BSUxTVFJFQU0gKnN0cmVhbSkNew0NICBpZiAoKChNQlhMT0NBTCAq
KSBzdHJlYW0tPmxvY2FsKSkgKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZnVsbGNoZWNr
ID0gMTsNICBpZiAobWJ4X3BpbmcgKHN0cmVhbSkpIG1tX2xvZyAoIkNoZWNrIGNvbXBsZXRlZCIs
KGxvbmcpIDApOw19DQ0NDQ0NDXZvaWQgbWJ4X2V4cHVuZ2UgKE1BSUxTVFJFQU0gKnN0cmVhbSkN
ew0gIHN0cnVjdCBzdGF0IHNidWY7DSAgdW5zaWduZWQgbG9uZyBuZXhwLHJlY2xhaW1lZDsNICBp
ZiAoIW1ieF9waW5nIChzdHJlYW0pKTsNICBlbHNlIGlmIChzdHJlYW0tPnJkb25seSkNICAgIG1t
X2xvZyAoIkV4cHVuZ2UgaWdub3JlZCBvbiByZWFkb25seSBtYWlsYm94IiwobG9uZykgMSk7DSAg
ZWxzZSB7DSAgICBpZiAoKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmlsZXRpbWUgJiYg
ISgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZsYWdjaGVjaykgew0gICAgICBmc3RhdCAo
KChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmQsJnNidWYpOw0gICAgICBpZiAoKChNQlhM
T0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmlsZXRpbWUgPCBzYnVmLnN0X210aW0udHZfc2VjKSAo
KE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mbGFnY2hlY2sgPSAxOw0gICAgfQ0NICAgIGlm
IChuZXhwID0gbWJ4X3Jld3JpdGUgKHN0cmVhbSwmcmVjbGFpbWVkLDEpKSB7DSAgICAgIHNwcmlu
dGYgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZiwiRXhwdW5nZWQgJWx1IG1lc3Nh
Z2VzIixuZXhwKTsNICAgICAgbW1fbG9nICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5i
dWYsKGxvbmcpIDApOw0gICAgfQ0gICAgZWxzZSBpZiAocmVjbGFpbWVkKSB7DSAgICAgIHNwcmlu
dGYgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZiwiUmVjbGFpbWVkICVsdSBieXRl
cyBvZiBleHB1bmdlZCBzcGFjZSIscmVjbGFpbWVkKTsNICAgICAgbW1fbG9nICgoKE1CWExPQ0FM
ICopIHN0cmVhbS0+bG9jYWwpLT5idWYsKGxvbmcpIDApOw0gICAgfQ0gICAgZWxzZSBtbV9sb2cg
KCJObyBtZXNzYWdlcyBkZWxldGVkLCBzbyBubyB1cGRhdGUgbmVlZGVkIiwobG9uZykgMCk7DSAg
fQ19DQ0NDQ0Ndm9pZCBtYnhfc25hcmYgKE1BSUxTVFJFQU0gKnN0cmVhbSkNew0gIHVuc2lnbmVk
IGxvbmcgaSA9IDA7DSAgdW5zaWduZWQgbG9uZyBqLHIsaGRybGVuLHR4dGxlbjsNICBzdHJ1Y3Qg
c3RhdCBzYnVmOw0gIGNoYXIgKmhkciwqdHh0LHRtcFsxMDI0XTsNICBNRVNTQUdFQ0FDSEUgKmVs
dDsNICBNQUlMU1RSRUFNICpzeXNpYnggPSAwOw0NICBpZiAoKHRpbWUgKDApIDwgKCgoTUJYTE9D
QUwgKikgc3RyZWFtLT5sb2NhbCktPmxhc3RzbmFyZiArIDMwKSkgfHwNICAgICAgIXN0cmNtcCAo
c3lzaW5ib3ggKCksc3RyZWFtLT5tYWlsYm94KSkgcmV0dXJuOw0gIG1tX2NyaXRpY2FsIChzdHJl
YW0pOw0NICBpZiAoIXN0YXQgKHN5c2luYm94ICgpLCZzYnVmKSAmJiBzYnVmLnN0X3NpemUpIHsN
ICAgIGZzdGF0ICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZCwmc2J1Zik7DQ0gICAg
aWYgKChzYnVmLnN0X3NpemUgPT0gKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmlsZXNp
emUpICYmDSAgICAgICAgKHN5c2lieCA9IG1haWxfb3BlbiAoc3lzaWJ4LHN5c2luYm94ICgpLChs
b25nKSAxNikpICYmDSAgICAgICAgKCFzeXNpYngtPnJkb25seSkgJiYgKHIgPSBzeXNpYngtPm5t
c2dzKSkgew0NICAgICAgbHNlZWsgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZkLHNi
dWYuc3Rfc2l6ZSwwKTsNDSAgICAgIHdoaWxlIChyICYmICgrK2kgPD0gc3lzaWJ4LT5ubXNncykp
IHsNDSAgICAgICAgaGRyID0gY3B5c3RyIChtYWlsX2ZldGNoX2hlYWRlciAoc3lzaWJ4LGksMCww
LCZoZHJsZW4sKGxvbmcpIDIgfCAoMCkpKTsNICAgICAgICB0eHQgPSBtYWlsX2ZldGNoX3RleHQg
KHN5c2lieCxpLDAsJnR4dGxlbiwobG9uZykgMik7DSAgICAgICAgaWYgKGogPSBoZHJsZW4gKyB0
eHRsZW4pIHsNDSAgICAgICAgICBtYWlsX2RhdGUgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2Nh
bCktPmJ1ZixlbHQgPSBtYWlsX2VsdCAoc3lzaWJ4LGkpKTsNICAgICAgICAgIHNwcmludGYgKCgo
TUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZiArIHN0cmxlbiAoKChNQlhMT0NBTCAqKSBz
dHJlYW0tPmxvY2FsKS0+YnVmKSwNICAgICAgICAgICAgICAgICAgICIsJWx1OzAwMDAwMDAwJTA0
eC0wMDAwMDAwMFwwMTVcMDEyIixqLCh1bnNpZ25lZCkNICAgICAgICAgICAgICAgICAgICgoMSAq
IGVsdC0+c2VlbikgKw0gICAgICAgICAgICAgICAgICAgICgyICogZWx0LT5kZWxldGVkKSArICg0
ICogZWx0LT5mbGFnZ2VkKSArDSAgICAgICAgICAgICAgICAgICAgKDggKiBlbHQtPmFuc3dlcmVk
KSArICgzMiAqIGVsdC0+ZHJhZnQpKSk7DQ0gICAgICAgICAgaWYgKChzYWZlX3dyaXRlICgoKE1C
WExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZCwoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwp
LT5idWYsc3RybGVuICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYpKSA8IDApIHx8
DSAgICAgICAgICAgICAgKHNhZmVfd3JpdGUgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCkt
PmZkLGhkcixoZHJsZW4pIDwgMCkgfHwNICAgICAgICAgICAgICAoc2FmZV93cml0ZSAoKChNQlhM
T0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmQsdHh0LHR4dGxlbikgPCAwKSkgciA9IDA7DSAgICAg
ICAgfQ0gICAgICAgIGZzX2dpdmUgKCh2b2lkICoqKSAmaGRyKTsNICAgICAgfQ0NDSAgICAgIGlm
IChmc3luYyAoKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmQpKSByID0gMDsNICAgICAg
aWYgKHIpIHsNICAgICAgICBpZiAociA9PSAxKSBzdHJjcHkgKHRtcCwiMSIpOw0gICAgICAgIGVs
c2Ugc3ByaW50ZiAodG1wLCIxOiVsdSIscik7DSAgICAgICAgbWFpbF9mbGFnIChzeXNpYngsdG1w
LCJcXERlbGV0ZWQiLChsb25nKSA0KTsNICAgICAgICBtYWlsX2V4cHVuZ2UgKHN5c2lieCk7DSAg
ICAgIH0NICAgICAgZWxzZSB7DSAgICAgICAgc3ByaW50ZiAoKChNQlhMT0NBTCAqKSBzdHJlYW0t
PmxvY2FsKS0+YnVmLCJDYW4ndCBjb3B5IG5ldyBtYWlsOiAlcyIsc3RyZXJyb3IgKGVycm5vKSk7
DSAgICAgICAgbW1fbG9nICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYsKGxvbmcp
IDIpOw0gICAgICAgIGZ0cnVuY2F0ZSAoKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmQs
c2J1Zi5zdF9zaXplKTsNICAgICAgfQ0gICAgICBmc3RhdCAoKChNQlhMT0NBTCAqKSBzdHJlYW0t
PmxvY2FsKS0+ZmQsJnNidWYpOw0gICAgICAoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5m
aWxldGltZSA9IHNidWYuc3RfbXRpbS50dl9zZWM7DSAgICB9DSAgICBpZiAoc3lzaWJ4KSBtYWls
X2Nsb3NlX2Z1bGwgKHN5c2lieCwwKTsNICB9DSAgbW1fbm9jcml0aWNhbCAoc3RyZWFtKTsNICAo
KE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5sYXN0c25hcmYgPSB0aW1lICgwKTsNfQ0jIDc2
NyAibWJ4LmMiDWxvbmcgbWJ4X2NvcHkgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFyICpzZXF1ZW5j
ZSxjaGFyICptYWlsYm94LGxvbmcgb3B0aW9ucykNew0gIHN0cnVjdCBzdGF0IHNidWY7DSAgdGlt
ZV90IHRwWzJdOw0gIE1FU1NBR0VDQUNIRSAqZWx0Ow0gIHVuc2lnbmVkIGxvbmcgaSxqLGs7DSAg
bG9uZyByZXQgPSAobG9uZykgMTsNICBpbnQgZmQsbGQ7DSAgY2hhciBmaWxlWzEwMjRdLGxvY2tb
MTAyNF07DSAgbWFpbHByb3h5Y29weV90IHBjID0NICAgIChtYWlscHJveHljb3B5X3QpIG1haWxf
cGFyYW1ldGVycyAoc3RyZWFtLChsb25nKSAxMTcsMCk7DQ0gIGlmICghbWJ4X2lzdmFsaWQgKG1h
aWxib3gsKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVmKSkgc3dpdGNoIChlcnJubykg
ew0gIGNhc2UgMjoNICAgIG1tX25vdGlmeSAoc3RyZWFtLCJbVFJZQ1JFQVRFXSBNdXN0IGNyZWF0
ZSBtYWlsYm94IGJlZm9yZSBjb3B5IiwwKTsNICAgIHJldHVybiAwOw0gIGNhc2UgMjI6DSAgICBp
ZiAocGMpIHJldHVybiAoKnBjKSAoc3RyZWFtLHNlcXVlbmNlLG1haWxib3gsb3B0aW9ucyk7DSAg
ICBzcHJpbnRmICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYsIkludmFsaWQgTUJY
LWZvcm1hdCBtYWlsYm94IG5hbWU6ICUuODBzIixtYWlsYm94KTsNICAgIG1tX2xvZyAoKChNQlhM
T0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVmLChsb25nKSAyKTsNICAgIHJldHVybiAwOw0gIGRl
ZmF1bHQ6DSAgICBpZiAocGMpIHJldHVybiAoKnBjKSAoc3RyZWFtLHNlcXVlbmNlLG1haWxib3gs
b3B0aW9ucyk7DSAgICBzcHJpbnRmICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYs
Ik5vdCBhIE1CWC1mb3JtYXQgbWFpbGJveDogJS44MHMiLG1haWxib3gpOw0gICAgbW1fbG9nICgo
KE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYsKGxvbmcpIDIpOw0gICAgcmV0dXJuIDA7
DSAgfQ0gIGlmICghKChvcHRpb25zICYgKGxvbmcpIDEpID8gbWFpbF91aWRfc2VxdWVuY2UgKHN0
cmVhbSxzZXF1ZW5jZSkgOg0gICAgICAgIG1haWxfc2VxdWVuY2UgKHN0cmVhbSxzZXF1ZW5jZSkp
KSByZXR1cm4gMDsNDSAgaWYgKChmZD1vcGVuKG1ieF9maWxlKGZpbGUsbWFpbGJveCksMnwweDEw
MCwwMDQwMHwwMDIwMCkpPDApIHsNICAgIHNwcmludGYgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5s
b2NhbCktPmJ1ZiwiVW5hYmxlIHRvIG9wZW4gY29weSBtYWlsYm94OiAlcyIsc3RyZXJyb3IgKGVy
cm5vKSk7DSAgICBtbV9sb2cgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZiwobG9u
ZykgMik7DSAgICByZXR1cm4gMDsNICB9DSAgbW1fY3JpdGljYWwgKHN0cmVhbSk7DQ0gIGlmICgo
bGQgPSBsb2NrZmQgKGZkLGxvY2ssMikpIDwgMCkgew0gICAgbW1fbG9nICgiVW5hYmxlIHRvIGxv
Y2sgY29weSBtYWlsYm94IiwobG9uZykgMik7DSAgICByZXR1cm4gMDsNICB9DSAgZnN0YXQgKGZk
LCZzYnVmKTsNICBsc2VlayAoZmQsc2J1Zi5zdF9zaXplLDApOw0NDSAgZm9yIChpID0gMTsgcmV0
ICYmIChpIDw9IHN0cmVhbS0+bm1zZ3MpOyBpKyspDSAgICBpZiAoKGVsdCA9IG1haWxfZWx0IChz
dHJlYW0saSkpLT5zZXF1ZW5jZSkgew0gICAgICBsc2VlayAoKChNQlhMT0NBTCAqKSBzdHJlYW0t
PmxvY2FsKS0+ZmQsZWx0LT5wcml2YXRlLnNwZWNpYWwub2Zmc2V0ICsNICAgICAgICAgICAgIGVs
dC0+cHJpdmF0ZS5zcGVjaWFsLnRleHQuc2l6ZSwwKTsNICAgICAgbWFpbF9kYXRlKCgoTUJYTE9D
QUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZixlbHQpOw0gICAgICBzcHJpbnRmICgoKE1CWExPQ0FM
ICopIHN0cmVhbS0+bG9jYWwpLT5idWYrc3RybGVuKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2Nh
bCktPmJ1ZiksIiwlbHU7JTA4bHglMDR4LTAwMDAwMDAwXDAxNVwwMTIiLA0gICAgICAgICAgICAg
ICBlbHQtPnJmYzgyMl9zaXplLGVsdC0+dXNlcl9mbGFncywodW5zaWduZWQpDSAgICAgICAgICAg
ICAgICgoMSAqIGVsdC0+c2VlbikgKyAoMiAqIGVsdC0+ZGVsZXRlZCkgKw0gICAgICAgICAgICAg
ICAgKDQgKiBlbHQtPmZsYWdnZWQpICsgKDggKiBlbHQtPmFuc3dlcmVkKSArDSAgICAgICAgICAg
ICAgICAoMzIgKiBlbHQtPmRyYWZ0KSkpOw0NICAgICAgaWYgKHJldCA9IChzYWZlX3dyaXRlIChm
ZCwoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYsc3RybGVuICgoKE1CWExPQ0FMICop
IHN0cmVhbS0+bG9jYWwpLT5idWYpKSA+IDApKQ0gICAgICAgIGZvciAoayA9IGVsdC0+cmZjODIy
X3NpemU7IHJldCAmJiAoaiA9IE1pbiAoaywoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5i
dWZsZW4pKTsgayAtPSBqKXsNICAgICAgICAgIHJlYWQgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5s
b2NhbCktPmZkLCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZixqKTsNICAgICAgICAg
IHJldCA9IHNhZmVfd3JpdGUgKGZkLCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1Zixq
KSA+PSAwOw0gICAgICAgIH0NICAgIH0NDSAgaWYgKCEocmV0ICYmIChyZXQgPSAhZnN5bmMgKGZk
KSkpKSB7DSAgICBzcHJpbnRmICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYsIlVu
YWJsZSB0byB3cml0ZSBtZXNzYWdlOiAlcyIsc3RyZXJyb3IgKGVycm5vKSk7DSAgICBtbV9sb2cg
KCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZiwobG9uZykgMik7DSAgICBmdHJ1bmNh
dGUgKGZkLHNidWYuc3Rfc2l6ZSk7DSAgfQ0gIHRwWzBdID0gc2J1Zi5zdF9hdGltLnR2X3NlYzsN
ICB0cFsxXSA9IHNidWYuc3RfbXRpbS50dl9zZWM7DSAgcG9ydGFibGVfdXRpbWUgKGZpbGUsdHAp
Ow0gIGNsb3NlIChmZCk7DSAgdW5sb2NrZmQgKGxkLGxvY2spOw0gIG1tX25vY3JpdGljYWwgKHN0
cmVhbSk7DQ0gIGlmIChyZXQgJiYgKG9wdGlvbnMgJiAobG9uZykgMikpIHsNICAgIGZvciAoaSA9
IDE7IGkgPD0gc3RyZWFtLT5ubXNnczsgKSBpZiAoZWx0ID0gbWJ4X2VsdCAoc3RyZWFtLGksMSkp
IHsNICAgICAgaWYgKGVsdC0+c2VxdWVuY2UpIHsNICAgICAgICBlbHQtPmRlbGV0ZWQgPSAxOw0N
ICAgICAgICBtYnhfdXBkYXRlX3N0YXR1cyAoc3RyZWFtLGksMCk7DSAgICAgIH0NICAgICAgaSsr
Ow0gICAgfQ0gICAgaWYgKCFzdHJlYW0tPnJkb25seSkgew0gICAgICBmc3luYyAoKChNQlhMT0NB
TCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmQpOw0gICAgICBmc3RhdCAoKChNQlhMT0NBTCAqKSBzdHJl
YW0tPmxvY2FsKS0+ZmQsJnNidWYpOw0gICAgICAoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwp
LT5maWxldGltZSA9IHNidWYuc3RfbXRpbS50dl9zZWM7DSAgICB9DSAgfQ0gIHJldHVybiByZXQ7
DX0NIyA4NjggIm1ieC5jIg1sb25nIG1ieF9hcHBlbmQgKE1BSUxTVFJFQU0gKnN0cmVhbSxjaGFy
ICptYWlsYm94LGFwcGVuZF90IGFmLHZvaWQgKmRhdGEpDXsNICBzdHJ1Y3Qgc3RhdCBzYnVmOw0g
IGludCBmZCxsZCxjOw0gIGNoYXIgKmZsYWdzLCpkYXRlLHRtcFsxMDI0XSxmaWxlWzEwMjRdLGxv
Y2tbMTAyNF07DSAgdGltZV90IHRwWzJdOw0gIEZJTEUgKmRmOw0gIE1FU1NBR0VDQUNIRSBlbHQ7
DSAgbG9uZyBmOw0gIHVuc2lnbmVkIGxvbmcgaSx1ZjsNICBTVFJJTkcgKm1lc3NhZ2U7DSAgbG9u
ZyByZXQgPSAobG9uZykgMTsNDSAgaWYgKCFzdHJlYW0pIHN0cmVhbSA9IHVzZXJfZmxhZ3MgKCZt
Ynhwcm90byk7DQ0gIGlmICghbWJ4X2lzdmFsaWQgKG1haWxib3gsdG1wKSkgc3dpdGNoIChlcnJu
bykgew0gIGNhc2UgMjoNICAgIGlmICgoKG1haWxib3hbMF0gPT0gJ0knKSB8fCAobWFpbGJveFsw
XSA9PSAnaScpKSAmJg0gICAgICAgICgobWFpbGJveFsxXSA9PSAnTicpIHx8IChtYWlsYm94WzFd
ID09ICduJykpICYmDSAgICAgICAgKChtYWlsYm94WzJdID09ICdCJykgfHwgKG1haWxib3hbMl0g
PT0gJ2InKSkgJiYNICAgICAgICAoKG1haWxib3hbM10gPT0gJ08nKSB8fCAobWFpbGJveFszXSA9
PSAnbycpKSAmJg0gICAgICAgICgobWFpbGJveFs0XSA9PSAnWCcpIHx8IChtYWlsYm94WzRdID09
ICd4JykpICYmICFtYWlsYm94WzVdKQ0gICAgICBtYnhfY3JlYXRlICgwLCJJTkJPWCIpOw0gICAg
ZWxzZSB7DSAgICAgIG1tX25vdGlmeSAoc3RyZWFtLCJbVFJZQ1JFQVRFXSBNdXN0IGNyZWF0ZSBt
YWlsYm94IGJlZm9yZSBhcHBlbmQiLDApOw0gICAgICByZXR1cm4gMDsNICAgIH0NDSAgY2FzZSAw
Og0gICAgYnJlYWs7DSAgY2FzZSAyMjoNICAgIHNwcmludGYgKHRtcCwiSW52YWxpZCBNQlgtZm9y
bWF0IG1haWxib3ggbmFtZTogJS44MHMiLG1haWxib3gpOw0gICAgbW1fbG9nICh0bXAsKGxvbmcp
IDIpOw0gICAgcmV0dXJuIDA7DSAgZGVmYXVsdDoNICAgIHNwcmludGYgKHRtcCwiTm90IGEgTUJY
LWZvcm1hdCBtYWlsYm94OiAlLjgwcyIsbWFpbGJveCk7DSAgICBtbV9sb2cgKHRtcCwobG9uZykg
Mik7DSAgICByZXR1cm4gMDsNICB9DQ0gIGlmICghKCphZikgKHN0cmVhbSxkYXRhLCZmbGFncywm
ZGF0ZSwmbWVzc2FnZSkpIHJldHVybiAwOw0NDSAgaWYgKCgoZmQgPSBvcGVuIChtYnhfZmlsZSAo
ZmlsZSxtYWlsYm94KSwxfDB4MDh8MHgxMDAsDSAgICAgICAgICAgICAgICAgICAwMDQwMHwwMDIw
MCkpIDwgMCkgfHwgIShkZiA9IGZkb3BlbiAoZmQsImFiIikpKSB7DSAgICBzcHJpbnRmICh0bXAs
IkNhbid0IG9wZW4gYXBwZW5kIG1haWxib3g6ICVzIixzdHJlcnJvciAoZXJybm8pKTsNICAgIG1t
X2xvZyAodG1wLChsb25nKSAyKTsNICAgIHJldHVybiAwOw0gIH0NDSAgaWYgKChsZCA9IGxvY2tm
ZCAoZmQsbG9jaywyKSkgPCAwKSB7DSAgICBtbV9sb2cgKCJVbmFibGUgdG8gbG9jayBhcHBlbmQg
bWFpbGJveCIsKGxvbmcpIDIpOw0gICAgY2xvc2UgKGZkKTsNICAgIHJldHVybiAwOw0gIH0NICBt
bV9jcml0aWNhbCAoc3RyZWFtKTsNICBmc3RhdCAoZmQsJnNidWYpOw0gIGRvIHsNICAgIGYgPSBt
YWlsX3BhcnNlX2ZsYWdzIChzdHJlYW0sZmxhZ3MsJnVmKTsNICAgIGlmIChkYXRlKSB7DSAgICAg
IGlmICghbWFpbF9wYXJzZV9kYXRlICgmZWx0LGRhdGUpKSB7DSAgICAgICAgc3ByaW50ZiAodG1w
LCJCYWQgZGF0ZSBpbiBhcHBlbmQ6ICUuODBzIixkYXRlKTsNICAgICAgICBtbV9sb2cgKHRtcCwo
bG9uZykgMik7DSAgICAgICAgcmV0ID0gMDsNICAgICAgICBicmVhazsNICAgICAgfQ0gICAgICBt
YWlsX2RhdGUgKHRtcCwmZWx0KTsNICAgIH0NICAgIGVsc2UgaW50ZXJuYWxfZGF0ZSAodG1wKTsN
DSAgICBpZiAoZnByaW50ZiAoZGYsIiVzLCVsdTslMDhseCUwNGx4LTAwMDAwMDAwXDAxNVwwMTIi
LHRtcCwNICAgICAgICAgICAgICAgICBpID0gKChtZXNzYWdlKS0+c2l6ZSAtICgobWVzc2FnZSkt
Pm9mZnNldCArICgobWVzc2FnZSktPmN1cnBvcyAtIChtZXNzYWdlKS0+Y2h1bmspKSksdWYsKHVu
c2lnbmVkIGxvbmcpIGYpIDwgMCkgcmV0ID0gMDsNICAgIGVsc2Ugew0gICAgICBpZiAoaSkgZG8g
YyA9IDB4ZmYgJiAoLS0obWVzc2FnZSktPmN1cnNpemUgPyAqKG1lc3NhZ2UpLT5jdXJwb3MrKyA6
ICgqKG1lc3NhZ2UpLT5kdGItPm5leHQpIChtZXNzYWdlKSk7DSAgICAgIHdoaWxlICgoKC0tKGRm
KS0+X2NudCA8IDAgPyBfX2Zsc2J1ZigoYyksIChkZikpIDogKGludCkoKihkZiktPl9wdHIrKyA9
ICh1bnNpZ25lZCBjaGFyKSAoYykpKSAhPSAoLTEpKSAmJiAtLWkpOw0NICAgICAgaWYgKGkgfHwg
ISgqYWYpIChzdHJlYW0sZGF0YSwmZmxhZ3MsJmRhdGUsJm1lc3NhZ2UpKSByZXQgPSAwOw0gICAg
fQ0gIH0gd2hpbGUgKHJldCAmJiBtZXNzYWdlKTsNDSAgaWYgKCFyZXQgfHwgKGZmbHVzaCAoZGYp
ID09ICgtMSkpKSB7DSAgICBmdHJ1bmNhdGUgKGZkLHNidWYuc3Rfc2l6ZSk7DSAgICBjbG9zZSAo
ZmQpOw0gICAgc3ByaW50ZiAodG1wLCJNZXNzYWdlIGFwcGVuZCBmYWlsZWQ6ICVzIixzdHJlcnJv
ciAoZXJybm8pKTsNICAgIG1tX2xvZyAodG1wLChsb25nKSAyKTsNICAgIHJldCA9IDA7DSAgfQ0g
IHRwWzBdID0gc2J1Zi5zdF9hdGltLnR2X3NlYzsNICB0cFsxXSA9IHNidWYuc3RfbXRpbS50dl9z
ZWM7DSAgcG9ydGFibGVfdXRpbWUgKGZpbGUsdHApOw0gIGZjbG9zZSAoZGYpOw0gIHVubG9ja2Zk
IChsZCxsb2NrKTsNICBtbV9ub2NyaXRpY2FsIChzdHJlYW0pOw0gIHJldHVybiByZXQ7DX0NIyA5
NzMgIm1ieC5jIg1jaGFyICptYnhfZmlsZSAoY2hhciAqZHN0LGNoYXIgKm5hbWUpDXsNICBjaGFy
ICpzID0gbWFpbGJveGZpbGUgKGRzdCxuYW1lKTsNICByZXR1cm4gKHMgJiYgISpzKSA/IG1haWxi
b3hmaWxlIChkc3QsIn4vSU5CT1giKSA6IHM7DX0NDQ0NDQ0NDWxvbmcgbWJ4X3BhcnNlIChNQUlM
U1RSRUFNICpzdHJlYW0pDXsNICBzdHJ1Y3Qgc3RhdCBzYnVmOw0gIE1FU1NBR0VDQUNIRSAqZWx0
ID0gMDsNICBjaGFyIGMsKnMsKnQsKng7DSAgY2hhciB0bXBbMTAyNF07DSAgdW5zaWduZWQgbG9u
ZyBpLGosayxtOw0gIG9mZl90IGN1cnBvcyA9ICgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCkt
PmZpbGVzaXplOw0gIHVuc2lnbmVkIGxvbmcgbm1zZ3MgPSBzdHJlYW0tPm5tc2dzOw0gIHVuc2ln
bmVkIGxvbmcgcmVjZW50ID0gc3RyZWFtLT5yZWNlbnQ7DSAgdW5zaWduZWQgbG9uZyBsYXN0dWlk
ID0gMDsNICBzaG9ydCBzaWxlbnQgPSBzdHJlYW0tPnNpbGVudDsNICBmc3RhdCAoKChNQlhMT0NB
TCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmQsJnNidWYpOw0gIGlmIChzYnVmLnN0X3NpemUgPCBjdXJw
b3MpIHsNICAgIHNwcmludGYgKHRtcCwiTWFpbGJveCBzaHJhbmsgZnJvbSAlbHUgdG8gJWx1ISIs
DSAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgY3VycG9zLCh1bnNpZ25lZCBsb25nKSBzYnVm
LnN0X3NpemUpOw0gICAgbW1fbG9nICh0bXAsKGxvbmcpIDIpOw0gICAgbWJ4X2Fib3J0IChzdHJl
YW0pOw0gICAgcmV0dXJuIDA7DSAgfQ0gIGxzZWVrICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9j
YWwpLT5mZCwwLDApOw0NICByZWFkICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZCwo
KE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYsMjA0OCk7DSAgKChNQlhMT0NBTCAqKSBz
dHJlYW0tPmxvY2FsKS0+YnVmWzIwNDhdID0gJ1wwJzsNICBjID0gKChNQlhMT0NBTCAqKSBzdHJl
YW0tPmxvY2FsKS0+YnVmWzE1XTsNICAoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWZb
MTVdID0gJ1wwJzsNDSAgc3RyZWFtLT51aWRfdmFsaWRpdHkgPSBzdHJ0b3VsICgoKE1CWExPQ0FM
ICopIHN0cmVhbS0+bG9jYWwpLT5idWYgKyA3LDAsMTYpOw0gICgoTUJYTE9DQUwgKikgc3RyZWFt
LT5sb2NhbCktPmJ1ZlsxNV0gPSBjOw0NICBpID0gc3RydG91bCAoKChNQlhMT0NBTCAqKSBzdHJl
YW0tPmxvY2FsKS0+YnVmICsgMTUsMCwxNik7DSAgc3RyZWFtLT51aWRfbGFzdCA9IHN0cmVhbS0+
cmRvbmx5ID8gTWF4IChpLHN0cmVhbS0+dWlkX2xhc3QpIDogaTsNDSAgZm9yIChpID0gMCwgcyA9
ICgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZiArIDI1Ow0gICAgICAgKGkgPCAzMCkg
JiYgKHQgPSBzdHJjaHIgKHMsJ1wwMTUnKSkgJiYgKHQgLSBzKTsNICAgICAgIGkrKywgcyA9IHQg
KyAyKSB7DSAgICAqdCA9ICdcMCc7DSAgICBpZiAoIXN0cmVhbS0+dXNlcl9mbGFnc1tpXSAmJiAo
c3RybGVuIChzKSA8PSA2NCkpDSAgICAgIHN0cmVhbS0+dXNlcl9mbGFnc1tpXSA9IGNweXN0ciAo
cyk7DSAgfQ0gICgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZmdXNlcmZsYWcgPSAoaW50
KSBpOw0NICBzdHJlYW0tPnNpbGVudCA9IDE7DSAgd2hpbGUgKHNidWYuc3Rfc2l6ZSAtIGN1cnBv
cyl7DQ0gICAgbHNlZWsgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZkLGN1cnBvcyww
KTsNICAgIGlmICgoaSA9IHJlYWQgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZkLCgo
TUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1Ziw2NCkpIDw9IDApIHsNICAgICAgc3ByaW50
ZiAodG1wLCJVbmFibGUgdG8gcmVhZCBpbnRlcm5hbCBoZWFkZXIgYXQgJWx1LCBzaXplID0gJWx1
OiAlcyIsDSAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSBjdXJwb3MsKHVuc2lnbmVkIGxv
bmcpIHNidWYuc3Rfc2l6ZSwNICAgICAgICAgICAgICAgaSA/IHN0cmVycm9yIChlcnJubykgOiAi
bm8gZGF0YSByZWFkIik7DSAgICAgIG1tX2xvZyAodG1wLChsb25nKSAyKTsNICAgICAgbWJ4X2Fi
b3J0IChzdHJlYW0pOw0gICAgICByZXR1cm4gMDsNICAgIH0NICAgICgoTUJYTE9DQUwgKikgc3Ry
ZWFtLT5sb2NhbCktPmJ1ZltpXSA9ICdcMCc7DSAgICBpZiAoISgocyA9IHN0cmNociAoKChNQlhM
T0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVmLCdcMDE1JykpICYmIChzWzFdID09ICdcMDEyJykp
KSB7DSAgICAgIHNwcmludGYgKHRtcCwiVW5hYmxlIHRvIGZpbmQgQ1JMRiBhdCAlbHUgaW4gJWx1
IGJ5dGVzLCB0ZXh0OiAlLjgwcyIsDSAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSBjdXJw
b3MsaSwoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYpOw0gICAgICBtbV9sb2cgKHRt
cCwobG9uZykgMik7DSAgICAgIG1ieF9hYm9ydCAoc3RyZWFtKTsNICAgICAgcmV0dXJuIDA7DSAg
ICB9DSAgICAqcyA9ICdcMCc7DSAgICBpID0gKHMgKyAyKSAtICgoTUJYTE9DQUwgKikgc3RyZWFt
LT5sb2NhbCktPmJ1ZjsNICAgIGlmICghKChzID0gc3RyY2hyICgoKE1CWExPQ0FMICopIHN0cmVh
bS0+bG9jYWwpLT5idWYsJywnKSkgJiYgKHQgPSBzdHJjaHIgKHMrMSwnOycpKSkpIHsNICAgICAg
c3ByaW50ZiAodG1wLCJVbmFibGUgdG8gcGFyc2UgaW50ZXJuYWwgaGVhZGVyIGF0ICVsdTogJS44
MHMiLA0gICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgY3VycG9zLCgoTUJYTE9DQUwgKikg
c3RyZWFtLT5sb2NhbCktPmJ1Zik7DSAgICAgIG1tX2xvZyAodG1wLChsb25nKSAyKTsNICAgICAg
bWJ4X2Fib3J0IChzdHJlYW0pOw0gICAgICByZXR1cm4gMDsNICAgIH0NICAgIGlmICghKCgoX19j
dHlwZSArIDEpW3RbMV1dICYgMHgwMDAwMDA4MCkgJiYgKChfX2N0eXBlICsgMSlbdFsyXV0gJiAw
eDAwMDAwMDgwKSAmJiAoKF9fY3R5cGUgKyAxKVt0WzNdXSAmIDB4MDAwMDAwODApICYmDSAgICAg
ICAgICAoKF9fY3R5cGUgKyAxKVt0WzRdXSAmIDB4MDAwMDAwODApICYmICgoX19jdHlwZSArIDEp
W3RbNV1dICYgMHgwMDAwMDA4MCkgJiYgKChfX2N0eXBlICsgMSlbdFs2XV0gJiAweDAwMDAwMDgw
KSAmJg0gICAgICAgICAgKChfX2N0eXBlICsgMSlbdFs3XV0gJiAweDAwMDAwMDgwKSAmJiAoKF9f
Y3R5cGUgKyAxKVt0WzhdXSAmIDB4MDAwMDAwODApICYmICgoX19jdHlwZSArIDEpW3RbOV1dICYg
MHgwMDAwMDA4MCkgJiYNICAgICAgICAgICgoX19jdHlwZSArIDEpW3RbMTBdXSAmIDB4MDAwMDAw
ODApICYmICgoX19jdHlwZSArIDEpW3RbMTFdXSAmIDB4MDAwMDAwODApICYmICgoX19jdHlwZSAr
IDEpW3RbMTJdXSAmIDB4MDAwMDAwODApKSkgew0gICAgICBzcHJpbnRmICh0bXAsIlVuYWJsZSB0
byBwYXJzZSBtZXNzYWdlIGZsYWdzIGF0ICVsdTogJS44MHMiLA0gICAgICAgICAgICAgICAodW5z
aWduZWQgbG9uZykgY3VycG9zLCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1Zik7DSAg
ICAgIG1tX2xvZyAodG1wLChsb25nKSAyKTsNICAgICAgbWJ4X2Fib3J0IChzdHJlYW0pOw0gICAg
ICByZXR1cm4gMDsNICAgIH0NICAgIGlmICgodFsxM10gIT0gJy0nKSB8fCB0WzIyXSB8fA0gICAg
ICAgICEoKChfX2N0eXBlICsgMSlbdFsxNF1dICYgMHgwMDAwMDA4MCkgJiYgKChfX2N0eXBlICsg
MSlbdFsxNV1dICYgMHgwMDAwMDA4MCkgJiYgKChfX2N0eXBlICsgMSlbdFsxNl1dICYgMHgwMDAw
MDA4MCkgJiYNICAgICAgICAgICgoX19jdHlwZSArIDEpW3RbMTddXSAmIDB4MDAwMDAwODApICYm
ICgoX19jdHlwZSArIDEpW3RbMThdXSAmIDB4MDAwMDAwODApICYmICgoX19jdHlwZSArIDEpW3Rb
MTldXSAmIDB4MDAwMDAwODApICYmDSAgICAgICAgICAoKF9fY3R5cGUgKyAxKVt0WzIwXV0gJiAw
eDAwMDAwMDgwKSAmJiAoKF9fY3R5cGUgKyAxKVt0WzIxXV0gJiAweDAwMDAwMDgwKSkpIHsNICAg
ICAgc3ByaW50ZiAodG1wLCJVbmFibGUgdG8gcGFyc2UgbWVzc2FnZSBVSUQgYXQgJWx1OiAlLjgw
cyIsDSAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSBjdXJwb3MsKChNQlhMT0NBTCAqKSBz
dHJlYW0tPmxvY2FsKS0+YnVmKTsNICAgICAgbW1fbG9nICh0bXAsKGxvbmcpIDIpOw0gICAgICBt
YnhfYWJvcnQgKHN0cmVhbSk7DSAgICAgIHJldHVybiAwOw0gICAgfQ0NICAgICpzKysgPSAnXDAn
OyAqdCsrID0gJ1wwJzsNDSAgICBpZiAoIShqID0gc3RydG91bCAocywmeCwxMCkpICYmICghKHgg
JiYgKngpKSkgew0gICAgICBzcHJpbnRmICh0bXAsIlVuYWJsZSB0byBwYXJzZSBtZXNzYWdlIHNp
emUgYXQgJWx1OiAlLjgwcywlLjgwczslLjgwcyIsDSAgICAgICAgICAgICAgICh1bnNpZ25lZCBs
b25nKSBjdXJwb3MsKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVmLHMsdCk7DSAgICAg
IG1tX2xvZyAodG1wLChsb25nKSAyKTsNICAgICAgbWJ4X2Fib3J0IChzdHJlYW0pOw0gICAgICBy
ZXR1cm4gMDsNICAgIH0NDSAgICBpZiAoKChvZmZfdCkgKGN1cnBvcyArIGkgKyBqKSkgPiBzYnVm
LnN0X3NpemUpIHsNICAgICAgc3ByaW50ZiAodG1wLCJMYXN0IG1lc3NhZ2UgKGF0ICVsdSkgcnVu
cyBwYXN0IGVuZCBvZiBmaWxlICglbHUgPiAlbHUpIiwNICAgICAgICAgICAgICAgKHVuc2lnbmVk
IGxvbmcpIGN1cnBvcywodW5zaWduZWQgbG9uZykgKGN1cnBvcyArIGkgKyBqKSwNICAgICAgICAg
ICAgICAgKHVuc2lnbmVkIGxvbmcpIHNidWYuc3Rfc2l6ZSk7DSAgICAgIG1tX2xvZyAodG1wLChs
b25nKSAyKTsNICAgICAgbWJ4X2Fib3J0IChzdHJlYW0pOw0gICAgICByZXR1cm4gMDsNICAgIH0N
DSAgICBpZiAoKG0gPSBzdHJ0b3VsICh0KzEzLDAsMTYpKSAmJg0gICAgICAgICgobSA8PSBsYXN0
dWlkKSB8fCAobSA+IHN0cmVhbS0+dWlkX2xhc3QpKSkgew0gICAgICBzcHJpbnRmICh0bXAsIklu
dmFsaWQgVUlEICUwOGx4IGluIG1lc3NhZ2UgJWx1LCByZWJ1aWxkaW5nIFVJRHMiLA0gICAgICAg
ICAgICAgICAgIG0sbm1zZ3MrMSk7DSAgICAgIG1tX2xvZyAodG1wLChsb25nKSAxKTsNICAgICAg
bSA9IDA7DQ0gICAgICBzdHJlYW0tPnVpZF92YWxpZGl0eSA9IHRpbWUgKDApOw0gICAgICBzdHJl
YW0tPnVpZF9sYXN0ID0gbGFzdHVpZDsNICAgIH0NDSAgICB0WzEyXSA9ICdcMCc7DSAgICBpZiAo
KGsgPSBzdHJ0b3VsICh0KzgsMCwxNikpICYgMzI3NjgpDQ0gICAgICBsYXN0dWlkID0gbSA/IG0g
OiArK3N0cmVhbS0+dWlkX2xhc3Q7DSAgICBlbHNlIHsNICAgICAgbWFpbF9leGlzdHMgKHN0cmVh
bSwrK25tc2dzKTsNDSAgICAgIChlbHQgPSBtYWlsX2VsdCAoc3RyZWFtLG5tc2dzKSktPnZhbGlk
ID0gMTsNDSAgICAgIGlmICghbWFpbF9wYXJzZV9kYXRlIChlbHQsKChNQlhMT0NBTCAqKSBzdHJl
YW0tPmxvY2FsKS0+YnVmKSkgew0gICAgICAgIHNwcmludGYgKHRtcCwiVW5hYmxlIHRvIHBhcnNl
IG1lc3NhZ2UgZGF0ZSBhdCAlbHU6ICUuODBzIiwNICAgICAgICAgICAgICAgICAodW5zaWduZWQg
bG9uZykgY3VycG9zLCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1Zik7DSAgICAgICAg
bW1fbG9nICh0bXAsKGxvbmcpIDIpOw0gICAgICAgIG1ieF9hYm9ydCAoc3RyZWFtKTsNICAgICAg
ICByZXR1cm4gMDsNICAgICAgfQ0NICAgICAgZWx0LT5wcml2YXRlLnNwZWNpYWwub2Zmc2V0ID0g
Y3VycG9zOw0NICAgICAgZWx0LT5wcml2YXRlLnNwZWNpYWwudGV4dC5zaXplID0gaTsNDSAgICAg
IGVsdC0+cHJpdmF0ZS5tc2cuaGVhZGVyLnRleHQuc2l6ZSA9IDA7DSAgICAgIGVsdC0+cmZjODIy
X3NpemUgPSBqOw0NICAgICAgaWYgKGsgJiAxKSBlbHQtPnNlZW4gPSAxOw0gICAgICBpZiAoayAm
IDIpIGVsdC0+ZGVsZXRlZCA9IDE7DSAgICAgIGlmIChrICYgNCkgZWx0LT5mbGFnZ2VkID0gMTsN
ICAgICAgaWYgKGsgJiA4KSBlbHQtPmFuc3dlcmVkID0gMTsNICAgICAgaWYgKGsgJiAzMikgZWx0
LT5kcmFmdCA9IDE7DSAgICAgIHRbOF0gPSAnXDAnOw0gICAgICBlbHQtPnVzZXJfZmxhZ3MgPSBz
dHJ0b3VsICh0LDAsMTYpOw0NICAgICAgaWYgKCEoZWx0LT5wcml2YXRlLnVpZCA9IG0pKSB7DSAg
ICAgICAgZWx0LT5yZWNlbnQgPSAxOw0gICAgICAgICsrcmVjZW50Ow0NICAgICAgICBlbHQtPnBy
aXZhdGUudWlkID0gKytzdHJlYW0tPnVpZF9sYXN0Ow0gICAgICAgIG1ieF91cGRhdGVfc3RhdHVz
IChzdHJlYW0sZWx0LT5tc2dubywwKTsNICAgICAgfQ0NICAgICAgbGFzdHVpZCA9IGVsdC0+cHJp
dmF0ZS51aWQ7DSAgICB9DSAgICBjdXJwb3MgKz0gaSArIGo7DSAgfQ0NDSAgaWYgKCFzdHJlYW0t
PnJkb25seSkgbWJ4X3VwZGF0ZV9oZWFkZXIgKHN0cmVhbSk7DSAgZnN5bmMgKCgoTUJYTE9DQUwg
Kikgc3RyZWFtLT5sb2NhbCktPmZkKTsNDSAgKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+
ZmlsZXNpemUgPSBzYnVmLnN0X3NpemU7DSAgZnN0YXQgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5s
b2NhbCktPmZkLCZzYnVmKTsNICAoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5maWxldGlt
ZSA9IHNidWYuc3RfbXRpbS50dl9zZWM7DSAgc3RyZWFtLT5zaWxlbnQgPSBzaWxlbnQ7DSAgbWFp
bF9leGlzdHMgKHN0cmVhbSxubXNncyk7DSAgbWFpbF9yZWNlbnQgKHN0cmVhbSxyZWNlbnQpOw0g
IHJldHVybiAobG9uZykgMTsNfQ0jIDExNzIgIm1ieC5jIg1NRVNTQUdFQ0FDSEUgKm1ieF9lbHQg
KE1BSUxTVFJFQU0gKnN0cmVhbSx1bnNpZ25lZCBsb25nIG1zZ25vLGxvbmcgZXhwb2spDXsNICBN
RVNTQUdFQ0FDSEUgKmVsdCA9IG1haWxfZWx0IChzdHJlYW0sbXNnbm8pOw0gIHN0cnVjdCB7DSAg
ICB1bnNpZ25lZCBpbnQgc2VlbiA6IDE7DSAgICB1bnNpZ25lZCBpbnQgZGVsZXRlZCA6IDE7DSAg
ICB1bnNpZ25lZCBpbnQgZmxhZ2dlZCA6IDE7DSAgICB1bnNpZ25lZCBpbnQgYW5zd2VyZWQgOiAx
Ow0gICAgdW5zaWduZWQgaW50IGRyYWZ0IDogMTsNICAgIHVuc2lnbmVkIGxvbmcgdXNlcl9mbGFn
czsNICB9IG9sZDsNICBvbGQuc2VlbiA9IGVsdC0+c2Vlbjsgb2xkLmRlbGV0ZWQgPSBlbHQtPmRl
bGV0ZWQ7IG9sZC5mbGFnZ2VkID0gZWx0LT5mbGFnZ2VkOw0gIG9sZC5hbnN3ZXJlZCA9IGVsdC0+
YW5zd2VyZWQ7IG9sZC5kcmFmdCA9IGVsdC0+ZHJhZnQ7DSAgb2xkLnVzZXJfZmxhZ3MgPSBlbHQt
PnVzZXJfZmxhZ3M7DQ0gIGlmIChtYnhfcmVhZF9mbGFncyAoc3RyZWFtLGVsdCkgJiYgZXhwb2sp
IHsNICAgIG1haWxfZXhwdW5nZWQgKHN0cmVhbSxlbHQtPm1zZ25vKTsNICAgIHJldHVybiAwOw0g
IH0NICBpZiAoKG9sZC5zZWVuICE9IGVsdC0+c2VlbikgfHwgKG9sZC5kZWxldGVkICE9IGVsdC0+
ZGVsZXRlZCkgfHwNICAgICAgKG9sZC5mbGFnZ2VkICE9IGVsdC0+ZmxhZ2dlZCkgfHwgKG9sZC5h
bnN3ZXJlZCAhPSBlbHQtPmFuc3dlcmVkKSB8fA0gICAgICAob2xkLmRyYWZ0ICE9IGVsdC0+ZHJh
ZnQpIHx8IChvbGQudXNlcl9mbGFncyAhPSBlbHQtPnVzZXJfZmxhZ3MpKQ0gICAgbW1fZmxhZ3Mg
KHN0cmVhbSxtc2dubyk7DSAgcmV0dXJuIGVsdDsNfQ0NDQ0NDQ0NdW5zaWduZWQgbG9uZyBtYnhf
cmVhZF9mbGFncyAoTUFJTFNUUkVBTSAqc3RyZWFtLE1FU1NBR0VDQUNIRSAqZWx0KQ17DSAgdW5z
aWduZWQgbG9uZyBpOw0NICBpZiAoc3RyZWFtLT5yZG9ubHkgJiYgZWx0LT52YWxpZCkgcmV0dXJu
IDA7DQ0gIGxzZWVrICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZCwob2ZmX3QpIGVs
dC0+cHJpdmF0ZS5zcGVjaWFsLm9mZnNldCArDSAgICAgICAgIGVsdC0+cHJpdmF0ZS5zcGVjaWFs
LnRleHQuc2l6ZSAtIDIzLDApOw0NICBpZiAocmVhZCAoKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxv
Y2FsKS0+ZmQsKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVmLDEyKSA8IDApIHsNICAg
IHNwcmludGYgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZiwiVW5hYmxlIHRvIHJl
YWQgbmV3IHN0YXR1czogJXMiLHN0cmVycm9yIChlcnJubykpOw0gICAgZmF0YWwgKCgoTUJYTE9D
QUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1Zik7DSAgfQ0gICgoTUJYTE9DQUwgKikgc3RyZWFtLT5s
b2NhbCktPmJ1ZlsxMl0gPSAnXDAnOw0NICBpID0gc3RydG91bCAoKChNQlhMT0NBTCAqKSBzdHJl
YW0tPmxvY2FsKS0+YnVmKzgsMCwxNik7DSAgZWx0LT5zZWVuID0gaSAmIDEgPyAxIDogMDsNICBl
bHQtPmRlbGV0ZWQgPSBpICYgMiA/IDEgOiAwOw0gIGVsdC0+ZmxhZ2dlZCA9IGkgJiA0ID8gMSA6
IDA7DSAgZWx0LT5hbnN3ZXJlZCA9IGkgJiA4ID8gMSA6IDA7DSAgZWx0LT5kcmFmdCA9IGkgJiAz
MiA/IDEgOiAwOw0gICgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmV4cHVuZ2VkIHw9IGkg
JiAzMjc2OCA/IDEgOiAwOw0gICgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1Zls4XSA9
ICdcMCc7DQ0gIGVsdC0+dXNlcl9mbGFncyA9IHN0cnRvdWwgKCgoTUJYTE9DQUwgKikgc3RyZWFt
LT5sb2NhbCktPmJ1ZiwwLDE2KTsNICBlbHQtPnZhbGlkID0gMTsNICByZXR1cm4gaSAmIDMyNzY4
Ow19DQ0NDQ0Ndm9pZCBtYnhfdXBkYXRlX2hlYWRlciAoTUFJTFNUUkVBTSAqc3RyZWFtKQ17DSAg
aW50IGk7DSAgY2hhciAqcyA9ICgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZjsNICBt
ZW1zZXQgKHMsJ1wwJywyMDQ4KTsNICBzcHJpbnRmIChzLCIqbWJ4KlwwMTVcMDEyJTA4bHglMDhs
eFwwMTVcMDEyIiwNICAgICAgICAgICBzdHJlYW0tPnVpZF92YWxpZGl0eSxzdHJlYW0tPnVpZF9s
YXN0KTsNICBmb3IgKGkgPSAwOyAoaSA8IDMwKSAmJiBzdHJlYW0tPnVzZXJfZmxhZ3NbaV07ICsr
aSkNICAgIHNwcmludGYgKHMgKz0gc3RybGVuIChzKSwiJXNcMDE1XDAxMiIsc3RyZWFtLT51c2Vy
X2ZsYWdzW2ldKTsNICAoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZnVzZXJmbGFnID0g
aTsNDSAgc3RyZWFtLT5rd2RfY3JlYXRlID0gKGkgPCAzMCkgPyAxIDogMDsNDSAgd2hpbGUgKGkr
KyA8IDMwKSBzdHJjYXQgKHMsIlwwMTVcMDEyIik7DSAgd2hpbGUgKDEpIHsNICAgIGxzZWVrICgo
KE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZCwwLDApOw0NICAgIGlmIChzYWZlX3dyaXRl
ICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZCwoKE1CWExPQ0FMICopIHN0cmVhbS0+
bG9jYWwpLT5idWYsMjA0OCkgPiAwKSBicmVhazsNICAgIG1tX25vdGlmeSAoc3RyZWFtLHN0cmVy
cm9yIChlcnJubyksKGxvbmcpIDEpOw0gICAgbW1fZGlza2Vycm9yIChzdHJlYW0sZXJybm8sMSk7
DSAgfQ19DQ0NDQ0NDQ12b2lkIG1ieF91cGRhdGVfc3RhdHVzIChNQUlMU1RSRUFNICpzdHJlYW0s
dW5zaWduZWQgbG9uZyBtc2dubyxsb25nIGZsYWdzKQ17DSAgTUVTU0FHRUNBQ0hFICplbHQgPSBt
YWlsX2VsdCAoc3RyZWFtLG1zZ25vKTsNICBzdHJ1Y3Qgc3RhdCBzYnVmOw0gIGludCBleHBmbGFn
Ow0NICBpZiAoc3RyZWFtLT5yZG9ubHkgfHwgIWVsdC0+dmFsaWQpIG1ieF9yZWFkX2ZsYWdzIChz
dHJlYW0sZWx0KTsNICBlbHNlIHsNDSAgICBpZiAoZWx0LT5kZWxldGVkICYmIChmbGFncyAmIDIp
KSBleHBmbGFnID0gMzI3Njg7DSAgICBlbHNlIHsNICAgICAgbHNlZWsgKCgoTUJYTE9DQUwgKikg
c3RyZWFtLT5sb2NhbCktPmZkLChvZmZfdCkgZWx0LT5wcml2YXRlLnNwZWNpYWwub2Zmc2V0ICsN
ICAgICAgICAgICAgIGVsdC0+cHJpdmF0ZS5zcGVjaWFsLnRleHQuc2l6ZSAtIDE1LDApOw0NICAg
ICAgaWYgKHJlYWQgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZkLCgoTUJYTE9DQUwg
Kikgc3RyZWFtLT5sb2NhbCktPmJ1Ziw0KSA8IDApIHsNICAgICAgICBzcHJpbnRmICgoKE1CWExP
Q0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYsIlVuYWJsZSB0byByZWFkIHN5c3RlbSBmbGFnczog
JXMiLA0gICAgICAgICAgICAgICAgIHN0cmVycm9yIChlcnJubykpOw0gICAgICAgIGZhdGFsICgo
KE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYpOw0gICAgICB9DSAgICAgICgoTUJYTE9D
QUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1Zls0XSA9ICdcMCc7DQ0gICAgICBleHBmbGFnID0gKHN0
cnRvdWwgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZiwwLDE2KSkgJiAzMjc2ODsN
ICAgIH0NDSAgICBzcHJpbnRmICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYsIiUw
OGx4JTA0eC0lMDhseCIsZWx0LT51c2VyX2ZsYWdzLCh1bnNpZ25lZCkNICAgICAgICAgICAgIChl
eHBmbGFnICsgKDEgKiBlbHQtPnNlZW4pICsgKDIgKiBlbHQtPmRlbGV0ZWQpICsNICAgICAgICAg
ICAgICAoNCAqIGVsdC0+ZmxhZ2dlZCkgKyAoOCAqIGVsdC0+YW5zd2VyZWQpICsNICAgICAgICAg
ICAgICAoMzIgKiBlbHQtPmRyYWZ0KSksZWx0LT5wcml2YXRlLnVpZCk7DSAgICB3aGlsZSAoMSkg
ew0gICAgICBsc2VlayAoKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmQsKG9mZl90KSBl
bHQtPnByaXZhdGUuc3BlY2lhbC5vZmZzZXQgKw0gICAgICAgICAgICAgZWx0LT5wcml2YXRlLnNw
ZWNpYWwudGV4dC5zaXplIC0gMjMsMCk7DQ0gICAgICBpZiAoc2FmZV93cml0ZSAoKChNQlhMT0NB
TCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmQsKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVm
LDIxKSA+IDApIGJyZWFrOw0gICAgICBtbV9ub3RpZnkgKHN0cmVhbSxzdHJlcnJvciAoZXJybm8p
LChsb25nKSAxKTsNICAgICAgbW1fZGlza2Vycm9yIChzdHJlYW0sZXJybm8sMSk7DSAgICB9DSAg
ICBpZiAoZmxhZ3MgJiAxKSB7DSAgICAgIGZzeW5jICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9j
YWwpLT5mZCk7DSAgICAgIGZzdGF0ICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZCwm
c2J1Zik7DSAgICAgICgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZpbGV0aW1lID0gc2J1
Zi5zdF9tdGltLnR2X3NlYzsNICAgIH0NICB9DX0NIyAxMzE4ICJtYnguYyINDQ0NdW5zaWduZWQg
bG9uZyBtYnhfaGRycG9zIChNQUlMU1RSRUFNICpzdHJlYW0sdW5zaWduZWQgbG9uZyBtc2dubywN
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpzaXplLGNoYXIgKipoZHIp
DXsNICB1bnNpZ25lZCBsb25nIHNpejsNICBsb25nIGk7DSAgY2hhciAqcywqdCwqdGU7DSAgTUVT
U0FHRUNBQ0hFICplbHQgPSBtYnhfZWx0IChzdHJlYW0sbXNnbm8sMCk7DSAgdW5zaWduZWQgbG9u
ZyByZXQgPSBlbHQtPnByaXZhdGUuc3BlY2lhbC5vZmZzZXQgKw0gICAgZWx0LT5wcml2YXRlLnNw
ZWNpYWwudGV4dC5zaXplOw0gIGlmIChoZHIpICpoZHIgPSAwOw0NICBpZiAoKnNpemUgPSBlbHQt
PnByaXZhdGUubXNnLmhlYWRlci50ZXh0LnNpemUpIHJldHVybiByZXQ7DQ0gIGlmICgoKE1CWExP
Q0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWZsZW4gPCAoNDA5NiArIDQpKSB7DSAgICBmc19naXZl
ICgodm9pZCAqKikgJigoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1Zik7DSAgICAoKE1C
WExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYgPSAoY2hhciAqKSBmc19nZXQgKCgoKE1CWExP
Q0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWZsZW4gPSA0MDk2KSArIDQpOw0gIH0NICBsc2VlayAo
KChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmQscmV0LDApOw0gIGZvciAoc2l6ID0gMCwg
cyA9ICgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZjsNICAgICAgIChpID0gTWluICgo
bG9uZykgKGVsdC0+cmZjODIyX3NpemUgLSBzaXopLChsb25nKSA0MDk2KSkgJiYNICAgICAgIChy
ZWFkICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZCxzLGkpID09IGkpOw0gICAgICAg
c2l6ICs9ICh0IC0gKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVmKSAtIDQsIHMgPSAo
KE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5idWYgKyA0KSB7DSAgICB0ZSA9ICh0ID0gcyAr
IGkpIC0gMTI7DQ0gICAgZm9yIChzID0gKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVm
OyBzIDwgdGU7KQ0gICAgICBpZiAoKCgqcysrID09ICdcMDE1JykgfHwgKCpzKysgPT0gJ1wwMTUn
KSB8fCAoKnMrKyA9PSAnXDAxNScpIHx8DSAgICAgICAgICAgKCpzKysgPT0gJ1wwMTUnKSB8fCAo
KnMrKyA9PSAnXDAxNScpIHx8ICgqcysrID09ICdcMDE1JykgfHwNICAgICAgICAgICAoKnMrKyA9
PSAnXDAxNScpIHx8ICgqcysrID09ICdcMDE1JykgfHwgKCpzKysgPT0gJ1wwMTUnKSB8fA0gICAg
ICAgICAgICgqcysrID09ICdcMDE1JykgfHwgKCpzKysgPT0gJ1wwMTUnKSB8fCAoKnMrKyA9PSAn
XDAxNScpKSAmJg0gICAgICAgICAgKCpzID09ICdcMDEyJykgJiYgKCorK3MgPT0gJ1wwMTUnKSAm
JiAoKisrcyA9PSAnXDAxMicpKSB7DSAgICAgICAgKnNpemUgPSBlbHQtPnByaXZhdGUubXNnLmhl
YWRlci50ZXh0LnNpemUgPSBzaXogKyAoKytzIC0gKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2Fs
KS0+YnVmKTsNICAgICAgICBpZiAoaGRyKSAqaGRyID0gKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxv
Y2FsKS0+YnVmOw0gICAgICAgIHJldHVybiByZXQ7DSAgICAgIH0NICAgIGZvciAodGUgPSB0IC0g
MzsgKHMgPCB0ZSk7KQ0gICAgICBpZiAoKCpzKysgPT0gJ1wwMTUnKSAmJiAoKnMgPT0gJ1wwMTIn
KSAmJiAoKisrcyA9PSAnXDAxNScpICYmDSAgICAgICAgICAoKisrcyA9PSAnXDAxMicpKSB7DSAg
ICAgICAgKnNpemUgPSBlbHQtPnByaXZhdGUubXNnLmhlYWRlci50ZXh0LnNpemUgPSBzaXogKyAo
KytzIC0gKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVmKTsNICAgICAgICBpZiAoaGRy
KSAqaGRyID0gKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+YnVmOw0gICAgICAgIHJldHVy
biByZXQ7DSAgICAgIH0NICAgIGlmIChpIDw9IDQpIGJyZWFrOw0NICAgIG1lbW1vdmUgKCgoTUJY
TE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1Zix0IC0gNCw0KTsNICAgIGhkciA9IDA7DSAgfQ0N
ICBlbHQtPnByaXZhdGUubXNnLmhlYWRlci50ZXh0LnNpemUgPSAqc2l6ZSA9IGVsdC0+cmZjODIy
X3NpemU7DSAgaWYgKGhkcikgKmhkciA9ICgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1
ZjsNICByZXR1cm4gcmV0Ow19DSMgMTM4MCAibWJ4LmMiDXVuc2lnbmVkIGxvbmcgbWJ4X3Jld3Jp
dGUgKE1BSUxTVFJFQU0gKnN0cmVhbSx1bnNpZ25lZCBsb25nICpyZWNsYWltZWQsDSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvbmcgZmxhZ3MpDXsNICBzdHJ1Y3Qgc3RhdCBzYnVmOw0gIG9m
Zl90IHBvcyxwcG9zOw0gIGludCBsZDsNICB1bnNpZ25lZCBsb25nIGksaixrLG0sbixkZWx0YTsN
ICB1bnNpZ25lZCBsb25nIHJlY2VudCA9IDA7DSAgY2hhciBsb2NrWzEwMjRdOw0gIE1FU1NBR0VD
QUNIRSAqZWx0Ow0gIGJsb2Nrbm90aWZ5X3QgYm4gPSAoYmxvY2tub3RpZnlfdCkgbWFpbF9wYXJh
bWV0ZXJzICgwLChsb25nKSAxMzMsMCk7DSMgMTQwMSAibWJ4LmMiDSAgaWYgKChsZCA9IGxvY2tm
ZCAoKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmQsbG9jaywyKSkgPCAwKSB7DSAgICBt
bV9sb2cgKCJVbmFibGUgdG8gbG9jayBtYWlsYm94IGZvciByZXdyaXRlIiwobG9uZykgMik7DSAg
ICByZXR1cm4gKnJlY2xhaW1lZCA9IDA7DSAgfQ0NDSAgaWYgKCFic2RfZmxvY2sgKCgoTUJYTE9D
QUwgKikgc3RyZWFtLT5sb2NhbCktPmZkLDJ8NCkpIHsNICAgIG1tX2NyaXRpY2FsIChzdHJlYW0p
Ow0gICAgZm9yIChpID0gMSxuID0gZGVsdGEgPSAqcmVjbGFpbWVkID0gMCxwb3MgPSBwcG9zID0g
MjA0ODsNICAgICAgICAgaSA8PSBzdHJlYW0tPm5tc2dzOyApIHsNICAgICAgZWx0ID0gbWJ4X2Vs
dCAoc3RyZWFtLGksMCk7DQ0gICAgICBpZiAobSA9IGVsdC0+cHJpdmF0ZS5zcGVjaWFsLm9mZnNl
dCAtIHBwb3MpIHsNICAgICAgICBwcG9zID0gZWx0LT5wcml2YXRlLnNwZWNpYWwub2Zmc2V0Ow0g
ICAgICAgICpyZWNsYWltZWQgKz0gbTsNICAgICAgICBkZWx0YSArPSBtOw0gICAgICB9DQ0gICAg
ICBwcG9zICs9IChrID0gZWx0LT5wcml2YXRlLnNwZWNpYWwudGV4dC5zaXplICsgZWx0LT5yZmM4
MjJfc2l6ZSk7DQ0gICAgICBpZiAoZmxhZ3MgJiYgZWx0LT5kZWxldGVkKSB7DSAgICAgICAgZGVs
dGEgKz0gazsNICAgICAgICBtYWlsX2V4cHVuZ2VkKHN0cmVhbSxpKTsNICAgICAgICBuKys7DSAg
ICAgIH0NICAgICAgZWxzZSBpZiAoaSsrICYmIGRlbHRhKSB7DSAgICAgICAgaWYgKGVsdC0+cmVj
ZW50KSArK3JlY2VudDsNDSAgICAgICAgaiA9IGVsdC0+cHJpdmF0ZS5zcGVjaWFsLm9mZnNldDsN
ICAgICAgICBkbyB7DSAgICAgICAgICBtID0gTWluIChrLCgoTUJYTE9DQUwgKikgc3RyZWFtLT5s
b2NhbCktPmJ1Zmxlbik7DSAgICAgICAgICBsc2VlayAoKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxv
Y2FsKS0+ZmQsaiwwKTsNICAgICAgICAgIHJlYWQgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2Nh
bCktPmZkLCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmJ1ZixtKTsNICAgICAgICAgIHBv
cyA9IGogLSBkZWx0YTsNICAgICAgICAgIHdoaWxlICgxKSB7DSAgICAgICAgICAgIGxzZWVrICgo
KE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZCxwb3MsMCk7DSAgICAgICAgICAgIGlmIChz
YWZlX3dyaXRlICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZCwoKE1CWExPQ0FMICop
IHN0cmVhbS0+bG9jYWwpLT5idWYsbSkgPiAwKSBicmVhazsNICAgICAgICAgICAgbW1fbm90aWZ5
IChzdHJlYW0sc3RyZXJyb3IgKGVycm5vKSwobG9uZykgMSk7DSAgICAgICAgICAgIG1tX2Rpc2tl
cnJvciAoc3RyZWFtLGVycm5vLDEpOw0gICAgICAgICAgfQ0gICAgICAgICAgcG9zICs9IG07DSAg
ICAgICAgICBqICs9IG07DSAgICAgICAgfSB3aGlsZSAoayAtPSBtKTsNDSAgICAgICAgZWx0LT5w
cml2YXRlLnNwZWNpYWwub2Zmc2V0IC09IGRlbHRhOw0gICAgICB9DQ0gICAgICBlbHNlIHBvcyA9
IGVsdC0+cHJpdmF0ZS5zcGVjaWFsLm9mZnNldCArIGs7DSAgICB9DQ0gICAgaWYgKG0gPSAoKChN
QlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmlsZXNpemUgLT0gZGVsdGEpIC0gcG9zKSB7DSAg
ICAgICpyZWNsYWltZWQgKz0gbTsNICAgICAgKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+
ZmlsZXNpemUgPSBwb3M7DSAgICB9DQ0gICAgZnRydW5jYXRlICgoKE1CWExPQ0FMICopIHN0cmVh
bS0+bG9jYWwpLT5mZCwoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5maWxlc2l6ZSk7DSAg
ICBmc3luYyAoKChNQlhMT0NBTCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmQpOw0gICAgbW1fbm9jcml0
aWNhbCAoc3RyZWFtKTsNICAgICgqYm4pICgyMCwwKTsNICAgIGJzZF9mbG9jayAoKChNQlhMT0NB
TCAqKSBzdHJlYW0tPmxvY2FsKS0+ZmQsMSk7DSAgICAoKmJuKSAoMCwwKTsNICAgIHVubG9ja2Zk
IChsZCxsb2NrKTsNICB9DQ0gIGVsc2Ugew0gICAgKCpibikgKDIwLDApOw0gICAgYnNkX2Zsb2Nr
ICgoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5mZCwxKTsNICAgICgqYm4pICgwLDApOw0g
ICAgdW5sb2NrZmQgKGxkLGxvY2spOw0NICAgIGlmICghZmxhZ3MpIG4gPSAqcmVjbGFpbWVkID0g
MDsNDSAgICBlbHNlIGZvciAoaSA9IDEsbiA9ICpyZWNsYWltZWQgPSAwOyBpIDw9IHN0cmVhbS0+
bm1zZ3M7ICkgew0gICAgICBpZiAoZWx0ID0gbWJ4X2VsdCAoc3RyZWFtLGksMSkpIHsNICAgICAg
ICBpZiAoZWx0LT5kZWxldGVkKSB7DSAgICAgICAgICBtYnhfdXBkYXRlX3N0YXR1cyAoc3RyZWFt
LGVsdC0+bXNnbm8sMik7DQ0gICAgICAgICAgbWFpbF9leHB1bmdlZCAoc3RyZWFtLGkpOw0gICAg
ICAgICAgbisrOw0gICAgICAgIH0NICAgICAgICBlbHNlIHsNICAgICAgICAgIGkrKzsNICAgICAg
ICAgIGlmIChlbHQtPnJlY2VudCkgKytyZWNlbnQ7DSAgICAgICAgfQ0gICAgICB9DSAgICAgIGVs
c2UgbisrOw0gICAgfQ0gICAgZnN5bmMgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZk
KTsNICB9DSAgZnN0YXQgKCgoTUJYTE9DQUwgKikgc3RyZWFtLT5sb2NhbCktPmZkLCZzYnVmKTsN
ICAoKE1CWExPQ0FMICopIHN0cmVhbS0+bG9jYWwpLT5maWxldGltZSA9IHNidWYuc3RfbXRpbS50
dl9zZWM7DQ0gIG1haWxfZXhpc3RzIChzdHJlYW0sc3RyZWFtLT5ubXNncyk7DSAgbWFpbF9yZWNl
bnQgKHN0cmVhbSxyZWNlbnQpOw0gIHJldHVybiBuOw19DQ==


More information about the Gcc-bugs mailing list