This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

c++/9909: internal compile error


>Number:         9909
>Category:       c++
>Synopsis:       internal compile error
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Mar 03 00:46:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator:     GNU CPP 2.95.3 20010315
>Release:        2.95.3 20010315
>Organization:
>Environment:
Slackware linux 2.4.18 i686 
>Description:
char *trim(char *st)
{
	int len;
	static pthread_mutex_t lock=0;

	pthread_mutex_lock(lock);
	for (len=strlen(st);
	     len>0 && (st[len-1]==' ' || st[len-1]=='\t' || st[len-1]=='\n');
	     len--)
		st[len-1]='\000';
	return (st);
}
>How-To-Repeat:
gcc -v -save-temps -I. -I../inc -I../../ttf/inc -o mlib.o mlib.cpp
>Fix:

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

IyAxICJtbGliLmNwcCIKIAoKCiAKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKIAoKCgogCgoKCgoKCgogCiMgMTQyICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMu
aCIgMwoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IyAyMDggIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCiAKCgogCgoKCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKIAoK
CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCiAKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgogCgoKCiMgNjUgIi91c3IvaW5jbHVkZS9z
eXMvY2RlZnMuaCIgMwoKCiAKCgoKCgogCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgoKCgoKIAoKCgoKCgoKCiAK
CgoKCgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKIyAyODMgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMK
CgoKIAoKCgoKCgoKCiAKCgoKCgogCgogCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZ251L3N0
dWJzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDMxMiAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDIgMwoKCgoKIyAyOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCmV4dGVybiAi
QyIgeyAKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAK
CgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1
LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1
LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvaTM4Ni1z
bGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRk
ZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDM0ICIvdXNyL2luY2x1ZGUvc3Rk
aW8uaCIgMiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJl
LWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3Iv
bGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2Fy
ZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2Fy
ZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgojIDE4OCAiL3Vzci9s
aWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxp
bnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIv
aTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoj
IDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDI5ICIvdXNyL2luY2x1
ZGUvYml0cy90eXBlcy5oIiAyIDMKCgogCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VfY2hhcjsK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3Vfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9f
dV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3VfbG9uZzsKCl9fZXh0ZW5zaW9uX18gdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdV9xdWFkX3Q7Cl9fZXh0ZW5zaW9uX18gdHlw
ZWRlZiBsb25nIGxvbmcgaW50IF9fcXVhZF90OwojIDQ4ICIvdXNyL2luY2x1ZGUvYml0cy90eXBl
cy5oIiAzCgp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNo
YXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQz
Ml90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKX19leHRlbnNpb25fXyB0eXBl
ZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCnR5cGVkZWYgX19xdWFkX3QgKl9f
cWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBfX2Rldl90OwkJIAp0eXBlZGVmIF9fdV9pbnQg
X191aWRfdDsJCSAKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7CQkgCnR5cGVkZWYgX191X2xvbmcg
X19pbm9fdDsJCSAKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90OwkJIAp0eXBlZGVmIF9fdV9pbnQg
X19ubGlua190OyAJCSAKdHlwZWRlZiBsb25nIGludCBfX29mZl90OwkJIAp0eXBlZGVmIF9fcXVh
ZF90IF9fbG9mZl90OwkJIAp0eXBlZGVmIGludCBfX3BpZF90OwkJCSAKdHlwZWRlZiBpbnQgX19z
c2l6ZV90OwkJCSAKdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsJCSAKdHlwZWRlZiBfX3VfcXVh
ZF90IF9fcmxpbTY0X3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX2lkX3Q7CQkJIAoKdHlwZWRlZiBz
dHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsJCQkJIAoKIAp0eXBlZGVm
IGludCBfX2RhZGRyX3Q7CQkJIAp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKdHlwZWRlZiBsb25n
IGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191c2Vjb25kc190Owp0eXBlZGVm
IGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zd2Jsa190OwkJIAoM
CnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoKIAp0eXBlZGVmIGludCBfX2Nsb2NraWRfdDsK
CiAKdHlwZWRlZiBpbnQgX190aW1lcl90OwoKCiAKCgoKdHlwZWRlZiBpbnQgX19rZXlfdDsKCiAK
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoKIAp0eXBlZGVmIGxvbmcg
aW50IF9fYmxrc2l6ZV90OwoKIAoKIAp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVk
ZWYgX19xdWFkX3QgX19ibGtjbnQ2NF90OwoKIAp0eXBlZGVmIF9fdV9sb25nIF9fZnNibGtjbnRf
dDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNibGtjbnQ2NF90OwoKIAp0eXBlZGVmIF9fdV9sb25n
IF9fZnNmaWxjbnRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fZnNmaWxjbnQ2NF90OwoKIAp0eXBl
ZGVmIF9fdV9xdWFkX3QgX19pbm82NF90OwoKIAp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRfdDsK
CiAKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBp
bnQgX190X3VzY2FsYXJfdDsKCiAKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCiAKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgX19zb2NrbGVuX3Q7CgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhy
ZWFkdHlwZXMuaCIgMSAzCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKCgoKCgoKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIyA2MiAi
L3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMwoKCgoKCiAKc3RydWN0IF9fc2NoZWRfcGFyYW0K
ICB7CiAgICBpbnQgX19zY2hlZF9wcmlvcml0eTsKICB9OwoKCiMgMjMgIi91c3IvaW5jbHVkZS9i
aXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMKCgogCnN0cnVjdCBfcHRocmVhZF9mYXN0bG9jawp7CiAg
bG9uZyBpbnQgX19zdGF0dXM7ICAgIAogIGludCBfX3NwaW5sb2NrOyAgICAgICAKCn07CgoKIAp0
eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9kZXNjcl9zdHJ1Y3QgKl9wdGhyZWFkX2Rlc2NyOwoKCgoK
IAp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfYXR0cl9zCnsKICBpbnQgX19kZXRhY2hzdGF0ZTsK
ICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07
CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGludCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6
ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0OwogIHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBf
X3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJfdDsKCgogCnR5cGVkZWYgc3RydWN0CnsKICBzdHJ1
Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19jX2xvY2s7ICAKICBfcHRocmVhZF9kZXNjciBfX2Nfd2Fp
dGluZzsgICAgICAgICAKfSBwdGhyZWFkX2NvbmRfdDsKCgogCnR5cGVkZWYgc3RydWN0CnsKICBp
bnQgX19kdW1teTsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgaW50
IHB0aHJlYWRfa2V5X3Q7CgoKIAogCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbV9yZXNlcnZl
ZDsgICAgICAgICAgICAgICAgCiAgaW50IF9fbV9jb3VudDsgICAgICAgICAgICAgICAgICAgCiAg
X3B0aHJlYWRfZGVzY3IgX19tX293bmVyOyAgICAgICAgCiAgaW50IF9fbV9raW5kOyAgICAgICAg
ICAgICAgICAgICAgCiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9fbV9sb2NrOyAgCn0gcHRo
cmVhZF9tdXRleF90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX211dGV4a2luZDsKfSBw
dGhyZWFkX211dGV4YXR0cl90OwoKCiAKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7CgoKIyAx
MTcgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCgoKIyAxMzYgIi91c3IvaW5j
bHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAzCgoKCiAKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu
dCBwdGhyZWFkX3Q7CgoKIyAxNDMgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCgoK
IyAzNiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCgoKCiAKdHlwZWRlZiBzdHJ1Y3Qg
X0lPX0ZJTEUgRklMRTsKCgoKCgoKCgogCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9fRklMRTsK
CgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwogCgoKCgoK
IAoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4z
L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoK
CgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2kz
ODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgIHdpbnRfdDsK
CgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTQg
Ii91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVk
ZS93Y2hhci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgojIDQ2ICIvdXNy
L2luY2x1ZGUvd2NoYXIuaCIgMwoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2Fy
ZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNy
L2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dh
cmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dh
cmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDE5MCAiL3Vzci9s
aWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIg
MwoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51
eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNDggIi91c3IvaW5jbHVkZS93Y2hh
ci5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3djaGFyLmgiIDEgMwogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojIDUwICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgoKIAoKCgoK
CgoKCgoKCgoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291bnQ7CiAgdW5pb24KICB7CiAg
ICB3aW50X3QgX193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9IF9fdmFsdWU7CQkgCn0gX19t
YnN0YXRlX3Q7CgoKCgogCgojIDY4MiAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMKCgoKIyAyNCAi
L3Vzci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKCgp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmZf
dCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3NfdDsKdHlwZWRlZiBzdHJ1
Y3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwp9IF9HX2Zwb3M2
NF90OwoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwogCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgNDYgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCgoKIyAx
ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dh
cmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2
MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9z
dGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEz
MSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9z
dGRkZWYuaCIgMwoKCiAKCiAKCiMgMTkwICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJl
LWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNy
L2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFj
a3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIyA0OCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMwoKCgoKIAoKCgoKCgoKCgoK
CiMgNzYgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCgoKCgogCgojIDY4MiAiL3Vzci9pbmNsdWRl
L3djaGFyLmgiIDMKCgoKIyAyOCAiL3Vzci9pbmNsdWRlL2djb252LmgiIDIgMwoKCgojIDEgIi91
c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVm
LmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1s
aW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxp
bnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKCiMgMjY5ICIvdXNy
L2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1
LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2kz
ODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiMgMzEgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKCgogCgoKIApl
bnVtCnsKICBfX0dDT05WX09LID0gMCwKICBfX0dDT05WX05PQ09OViwKICBfX0dDT05WX05PREIs
CiAgX19HQ09OVl9OT01FTSwKCiAgX19HQ09OVl9FTVBUWV9JTlBVVCwKICBfX0dDT05WX0ZVTExf
T1VUUFVULAogIF9fR0NPTlZfSUxMRUdBTF9JTlBVVCwKICBfX0dDT05WX0lOQ09NUExFVEVfSU5Q
VVQsCgogIF9fR0NPTlZfSUxMRUdBTF9ERVNDUklQVE9SLAogIF9fR0NPTlZfSU5URVJOQUxfRVJS
T1IKfTsKCgogCmVudW0KewogIF9fR0NPTlZfSVNfTEFTVCA9IDB4MDAwMSwKICBfX0dDT05WX0lH
Tk9SRV9FUlJPUlMgPSAweDAwMDIKfTsKCgogCnN0cnVjdCBfX2djb252X3N0ZXA7CnN0cnVjdCBf
X2djb252X3N0ZXBfZGF0YTsKc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdDsKc3RydWN0IF9f
Z2NvbnZfdHJhbnNfZGF0YTsKCgogCnR5cGVkZWYgaW50ICgqX19nY29udl9mY3QpIChzdHJ1Y3Qg
X19nY29udl9zdGVwICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLAoJCQkgICAgX19jb25z
dCB1bnNpZ25lZCBjaGFyICoqLCBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKCQkJICAgIHVuc2ln
bmVkIGNoYXIgKiosIHNpemVfdCAqLCBpbnQsIGludCk7CgogCnR5cGVkZWYgaW50ICgqX19nY29u
dl9pbml0X2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2Nv
bnZfZW5kX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKik7CgoKIAp0eXBlZGVmIGludCAoKl9f
Z2NvbnZfdHJhbnNfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqLAoJCQkJICBzdHJ1Y3QgX19n
Y29udl9zdGVwX2RhdGEgKiwgdm9pZCAqLAoJCQkJICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwK
CQkJCSAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLAoJCQkJICBfX2NvbnN0IHVuc2lnbmVkIGNo
YXIgKiwgdW5zaWduZWQgY2hhciAqKiwKCQkJCSAgc2l6ZV90ICopOwoKIAp0eXBlZGVmIGludCAo
Kl9fZ2NvbnZfdHJhbnNfY29udGV4dF9mY3QpICh2b2lkICosIF9fY29uc3QgdW5zaWduZWQgY2hh
ciAqLAoJCQkJCSAgX19jb25zdCB1bnNpZ25lZCBjaGFyICosCgkJCQkJICB1bnNpZ25lZCBjaGFy
ICosIHVuc2lnbmVkIGNoYXIgKik7CgogCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19xdWVy
eV9mY3QpIChfX2NvbnN0IGNoYXIgKiwgX19jb25zdCBjaGFyICoqKiwKCQkJCQlzaXplX3QgKik7
CgogCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19pbml0X2ZjdCkgKHZvaWQgKiosIGNvbnN0
IGNoYXIgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCkgKHZvaWQgKik7
CgpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhCnsKICAgCiAgX19nY29udl90cmFuc19mY3QgX190
cmFuc19mY3Q7CiAgX19nY29udl90cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRleHRfZmN0
OwogIF9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7CiAgdm9pZCAqX19kYXRh
OwogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fbmV4dDsKfTsKCgogCnN0cnVjdCBfX2dj
b252X3N0ZXAKewogIHN0cnVjdCBfX2djb252X2xvYWRlZF9vYmplY3QgKl9fc2hsaWJfaGFuZGxl
OwogIF9fY29uc3QgY2hhciAqX19tb2RuYW1lOwoKICBpbnQgX19jb3VudGVyOwoKICBjaGFyICpf
X2Zyb21fbmFtZTsKICBjaGFyICpfX3RvX25hbWU7CgogIF9fZ2NvbnZfZmN0IF9fZmN0OwogIF9f
Z2NvbnZfaW5pdF9mY3QgX19pbml0X2ZjdDsKICBfX2djb252X2VuZF9mY3QgX19lbmRfZmN0OwoK
ICAgCgogIGludCBfX21pbl9uZWVkZWRfZnJvbTsKICBpbnQgX19tYXhfbmVlZGVkX2Zyb207CiAg
aW50IF9fbWluX25lZWRlZF90bzsKICBpbnQgX19tYXhfbmVlZGVkX3RvOwoKICAgCiAgaW50IF9f
c3RhdGVmdWw7CgogIHZvaWQgKl9fZGF0YTsJCSAKfTsKCiAKCnN0cnVjdCBfX2djb252X3N0ZXBf
ZGF0YQp7CiAgdW5zaWduZWQgY2hhciAqX19vdXRidWY7ICAgICAKICB1bnNpZ25lZCBjaGFyICpf
X291dGJ1ZmVuZDsgIAoKCiAgIAogIGludCBfX2ZsYWdzOwoKICAgCgogIGludCBfX2ludm9jYXRp
b25fY291bnRlcjsKCiAgIAoKICBpbnQgX19pbnRlcm5hbF91c2U7CgogIF9fbWJzdGF0ZV90ICpf
X3N0YXRlcDsKICBfX21ic3RhdGVfdCBfX3N0YXRlOwkgCgoKICAgCiAgc3RydWN0IF9fZ2NvbnZf
dHJhbnNfZGF0YSAqX190cmFuczsKfTsKCgogCnR5cGVkZWYgc3RydWN0IF9fZ2NvbnZfaW5mbwp7
CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVjdCBfX2djb252X3N0ZXAgKl9fc3RlcHM7CiAgX19l
eHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEgX19kYXRhIFswXSA7Cn0gKl9fZ2Nv
bnZfdDsKCgojIDQ0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIgMwoKdHlwZWRlZiB1bmlv
bgp7CiAgc3RydWN0IF9fZ2NvbnZfaW5mbyBfX2NkOwogIHN0cnVjdAogIHsKICAgIHN0cnVjdCBf
X2djb252X2luZm8gX19jZDsKICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSBfX2RhdGE7CiAg
fSBfX2NvbWJpbmVkOwp9IF9HX2ljb252X3Q7Cgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0
cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9f
YXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBf
R191aW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18p
KSk7CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDMyICIv
dXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCgogCgoKCgoKCgoKCgoKCgoKCgoKIAoKIyAxICIvdXNy
L2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgp0eXBlZGVmIHZvaWQgKl9fZ251Y192YV9saXN0OwoKCgog
CgojIDEyMiAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5j
bHVkZS9zdGRhcmcuaCIgMwoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjA5ICIvdXNyL2xpYi9nY2Mt
bGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoKCgoj
IDUzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCgoKCgoKCgojIDcyICIvdXNyL2luY2x1ZGUv
bGliaW8uaCIgMwoKCiAKCgoKCgoKCgoKCgoKCgoKCgojIDEwMyAiL3Vzci9pbmNsdWRlL2xpYmlv
LmgiIDMKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgpzdHJ1Y3QgX0lPX2p1bXBfdDsgIHN0cnVjdCBfSU9fRklMRTsKCiAKCgoKCgoKCnR5
cGVkZWYgdm9pZCBfSU9fbG9ja190OwoKCgogCgpzdHJ1Y3QgX0lPX21hcmtlciB7CiAgc3RydWN0
IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVjdCBfSU9fRklMRSAqX3NidWY7CiAgIAoKICAgCiAg
aW50IF9wb3M7CiMgMTkyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKfTsKCiAKZW51bSBfX2Nv
ZGVjdnRfcmVzdWx0CnsKICBfX2NvZGVjdnRfb2ssCiAgX19jb2RlY3Z0X3BhcnRpYWwsCiAgX19j
b2RlY3Z0X2Vycm9yLAogIF9fY29kZWN2dF9ub2NvbnYKfTsKCiMgMjU5ICIvdXNyL2luY2x1ZGUv
bGliaW8uaCIgMwoKCnN0cnVjdCBfSU9fRklMRSB7CiAgaW50IF9mbGFnczsJCSAKCgogICAKICAg
CiAgY2hhciogX0lPX3JlYWRfcHRyOwkgCiAgY2hhciogX0lPX3JlYWRfZW5kOwkgCiAgY2hhciog
X0lPX3JlYWRfYmFzZTsJIAogIGNoYXIqIF9JT193cml0ZV9iYXNlOwkgCiAgY2hhciogX0lPX3dy
aXRlX3B0cjsJIAogIGNoYXIqIF9JT193cml0ZV9lbmQ7CSAKICBjaGFyKiBfSU9fYnVmX2Jhc2U7
CSAKICBjaGFyKiBfSU9fYnVmX2VuZDsJIAogICAKICBjaGFyICpfSU9fc2F2ZV9iYXNlOyAgCiAg
Y2hhciAqX0lPX2JhY2t1cF9iYXNlOyAgIAogIGNoYXIgKl9JT19zYXZlX2VuZDsgIAoKICBzdHJ1
Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklMRSAqX2NoYWluOwoKICBp
bnQgX2ZpbGVubzsKICBpbnQgX2Jsa3NpemU7CiAgX19vZmZfdCAgIF9vbGRfb2Zmc2V0OyAgCgoK
ICAgCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0YWJsZV9v
ZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgogICAKCiAgX0lPX2xvY2tfdCAqX2xvY2s7CgoK
CgoKCgoKICBfX29mZjY0X3QgICBfb2Zmc2V0OwoKCgoKCiAgdm9pZCAqX19wYWQxOwogIHZvaWQg
Kl9fcGFkMjsKCiAgaW50IF9tb2RlOwogICAKICBjaGFyIF91bnVzZWQyWzE1ICogc2l6ZW9mIChp
bnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9OwoKCgoKCnN0cnVjdCBfSU9fRklMRV9wbHVz
OwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3Ry
dWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRvdXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxF
X3BsdXMgX0lPXzJfMV9zdGRlcnJfOwoKCgoKCgoKCgoKCiAKCiAKCnR5cGVkZWYgX19zc2l6ZV90
IF9faW9fcmVhZF9mbiAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19uYnl0
ZXMpOwoKIAoKCgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gKHZvaWQgKl9fY29v
a2llLCBfX2NvbnN0IGNoYXIgKl9fYnVmLAoJCQkJIHNpemVfdCBfX24pOwoKIAoKCgoKCnR5cGVk
ZWYgaW50IF9faW9fc2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAgICpfX3Bvcywg
aW50IF9fdyk7CgogCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsK
CgojIDM4OSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKCgoKCmV4dGVybiAiQyIgewoKCmV4dGVy
biBpbnQgX191bmRlcmZsb3cgKF9JT19GSUxFICopIHRocm93ICgpIDsKZXh0ZXJuIGludCBfX3Vm
bG93IChfSU9fRklMRSAqKSB0aHJvdyAoKSA7CmV4dGVybiBpbnQgX19vdmVyZmxvdyAoX0lPX0ZJ
TEUgKiwgaW50KSB0aHJvdyAoKSA7CmV4dGVybiB3aW50X3QgICBfX3d1bmRlcmZsb3cgKF9JT19G
SUxFICopIHRocm93ICgpIDsKZXh0ZXJuIHdpbnRfdCAgIF9fd3VmbG93IChfSU9fRklMRSAqKSB0
aHJvdyAoKSA7CmV4dGVybiB3aW50X3QgICBfX3dvdmVyZmxvdyAoX0lPX0ZJTEUgKiwgd2ludF90
ICApIHRocm93ICgpIDsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBfSU9fZ2V0
YyAoX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50IF9f
YywgX0lPX0ZJTEUgKl9fZnApIHRocm93ICgpIDsKZXh0ZXJuIGludCBfSU9fZmVvZiAoX0lPX0ZJ
TEUgKl9fZnApIHRocm93ICgpIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yIChfSU9fRklMRSAqX19m
cCkgdGhyb3cgKCkgOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklMRSAqX19m
cCkgdGhyb3cgKCkgOwoKIAoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlIChfSU9fRklMRSAq
KSB0aHJvdyAoKSA7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAoX0lPX0ZJTEUgKikgdGhy
b3cgKCkgOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUgKF9JT19GSUxFICopIHRocm93ICgp
IDsKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiBpbnQgX0lPX3Zmc2NhbmYgKF9JT19GSUxFICogX19y
ZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsCgkJCV9fZ251Y192YV9saXN0ICwgaW50
ICpfX3Jlc3RyaWN0KSB0aHJvdyAoKSA7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmIChfSU9fRklM
RSAqX19yZXN0cmljdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCwKCQkJIF9fZ251Y192YV9saXN0
ICkgdGhyb3cgKCkgOwpleHRlcm4gX19zc2l6ZV90ICAgX0lPX3BhZG4gKF9JT19GSUxFICosIGlu
dCwgX19zc2l6ZV90ICApIHRocm93ICgpIDsKZXh0ZXJuIHNpemVfdCAgIF9JT19zZ2V0biAoX0lP
X0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QgICkgdGhyb3cgKCkgOwoKZXh0ZXJuIF9fb2ZmNjRfdCAg
IF9JT19zZWVrb2ZmIChfSU9fRklMRSAqLCBfX29mZjY0X3QgICwgaW50LCBpbnQpIHRocm93ICgp
IDsKZXh0ZXJuIF9fb2ZmNjRfdCAgIF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3Qg
ICwgaW50KSB0aHJvdyAoKSA7CgpleHRlcm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lP
X0ZJTEUgKikgdGhyb3cgKCkgOwoKIyA1MTEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAzCgoKCn0K
CgoKIyA2NSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCiMgNzYgIi91c3IvaW5jbHVkZS9z
dGRpby5oIiAzCgoKIAoKdHlwZWRlZiBfR19mcG9zX3QgZnBvc190OwoKCgoKCgoKIAoKCgoKCiAK
CgoKCgogCgoKCgoKCiAKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL3N0ZGlvX2xpbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIyAxMjkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKIApleHRlcm4gRklMRSAq
c3RkaW47CQkgCmV4dGVybiBGSUxFICpzdGRvdXQ7CQkgCmV4dGVybiBGSUxFICpzdGRlcnI7CQkg
CiAKCgoKCiAKZXh0ZXJuIGludCByZW1vdmUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgdGhy
b3cgKCkgOwogCmV4dGVybiBpbnQgcmVuYW1lIChfX2NvbnN0IGNoYXIgKl9fb2xkLCBfX2NvbnN0
IGNoYXIgKl9fbmV3KSB0aHJvdyAoKSA7CgoKIAoKZXh0ZXJuIEZJTEUgKnRtcGZpbGUgKHZvaWQp
IHRocm93ICgpIDsKCgoKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hhciAqX19zKSB0
aHJvdyAoKSA7CgoKIAoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yIChjaGFyICpfX3MpIHRocm93ICgp
IDsKCgoKCiAKCgoKCgoKZXh0ZXJuIGNoYXIgKnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIs
IF9fY29uc3QgY2hhciAqX19wZngpCiAgICAgdGhyb3cgKCkgICA7CgoKCiAKZXh0ZXJuIGludCBm
Y2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKSA7CiAKZXh0ZXJuIGludCBmZmx1c2ggKEZJ
TEUgKl9fc3RyZWFtKSB0aHJvdyAoKSA7CgoKIApleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAo
RklMRSAqX19zdHJlYW0pIHRocm93ICgpIDsKCgoKCgoKCgoKIApleHRlcm4gRklMRSAqZm9wZW4g
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJCSAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19tb2RlcykgdGhyb3cgKCkgOwogCmV4dGVybiBGSUxFICpmcmVvcGVuIChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwKCQkgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19tb2RlcywKCQkgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0
aHJvdyAoKSA7CiMgMjIwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCgoKCgoKCgoKIApleHRl
cm4gRklMRSAqZmRvcGVuIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAo
KSA7CgoKIyAyNDkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCiAKCmV4dGVybiB2b2lkIHNl
dGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1Zikg
dGhyb3cgKCkgOwogCgoKZXh0ZXJuIGludCBzZXR2YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCSAgICBpbnQgX19tb2Rlcywgc2l6ZV90IF9f
bikgdGhyb3cgKCkgOwoKCiAKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAoRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKCQkgICAgICAgc2l6ZV90IF9fc2l6
ZSkgdGhyb3cgKCkgOwoKIApleHRlcm4gdm9pZCBzZXRsaW5lYnVmIChGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCkgOwoKCgogCmV4dGVybiBpbnQgZnByaW50ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSwKCQkgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93
ICgpIDsKIApleHRlcm4gaW50IHByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y
bWF0LCAuLi4pIHRocm93ICgpIDsKIApleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLAoJCSAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhy
b3cgKCkgOwoKIApleHRlcm4gaW50IHZmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAoJCSAgICAgX19nbnVjX3ZhX2xpc3QgIF9f
YXJnKSB0aHJvdyAoKSA7CiAKZXh0ZXJuIGludCB2cHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0ICBfX2FyZykKICAgICB0aHJvdyAoKSA7CiAK
ZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwKCQkgICAgIF9fZ251Y192YV9saXN0ICBfX2FyZykgdGhyb3cg
KCkgOwoKCiAKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVf
dCBfX21heGxlbiwKCQkgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u
KQogICAgIHRocm93ICgpICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywg
MywgNCkpKTsKCmV4dGVybiBpbnQgdnNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6
ZV90IF9fbWF4bGVuLAoJCSAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwg
X19nbnVjX3ZhX2xpc3QgIF9fYXJnKQogICAgIHRocm93ICgpICBfX2F0dHJpYnV0ZV9fICgoX19m
b3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKCgojIDMyMSAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDMKCgoKIApleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwK
CQkgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCkgOwog
CmV4dGVybiBpbnQgc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u
KSB0aHJvdyAoKSA7CiAKZXh0ZXJuIGludCBzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3MsCgkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93
ICgpIDsKCiMgMzQ3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCgogCmV4dGVybiBpbnQgZmdl
dGMgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKSA7CmV4dGVybiBpbnQgZ2V0YyAoRklMRSAqX19z
dHJlYW0pIHRocm93ICgpIDsKCiAKZXh0ZXJuIGludCBnZXRjaGFyICh2b2lkKSB0aHJvdyAoKSA7
CgogCgoKCgogCmV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93
ICgpIDsKZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkICh2b2lkKSB0aHJvdyAoKSA7CgoKCiAK
ZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpIDsKCgoK
IApleHRlcm4gaW50IGZwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgOwpl
eHRlcm4gaW50IHB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKSA7CgogCmV4
dGVybiBpbnQgcHV0Y2hhciAoaW50IF9fYykgdGhyb3cgKCkgOwoKIAoKCgoKIApleHRlcm4gaW50
IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgOwoKCgog
CmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93
ICgpIDsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKSB0aHJvdyAoKSA7CgoK
CgogCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpIDsKCiAKZXh0ZXJu
IGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgOwoKCgogCmV4dGVy
biBjaGFyICpmZ2V0cyAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24sIEZJTEUgKl9fcmVz
dHJpY3QgX19zdHJlYW0pCiAgICAgdGhyb3cgKCkgOwoKCgoKCgoKIAoKZXh0ZXJuIGNoYXIgKmdl
dHMgKGNoYXIgKl9fcykgdGhyb3cgKCkgOwoKCiMgNDM3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg
MwoKCgogCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgdGhyb3cgKCkgOwoKCgoKCgoKIApleHRlcm4g
aW50IHB1dHMgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKSA7CgoKIApleHRlcm4gaW50IHVu
Z2V0YyAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpIDsKCgogCmV4dGVybiBzaXpl
X3QgZnJlYWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCgkJICAgICBz
aXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKSA7CiAKZXh0ZXJu
IHNpemVfdCBmd3JpdGUgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9f
c2l6ZSwKCQkgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcykgdGhyb3cgKCkg
OwoKCiAKZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmljdCBfX3B0
ciwgc2l6ZV90IF9fc2l6ZSwKCQkJICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkgdGhyb3cgKCkgOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoX19jb25z
dCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAoJCQkgICAgICAgc2l6ZV90
IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgdGhyb3cgKCkgOwoKCgogCmV4dGVybiBp
bnQgZnNlZWsgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hlbmNlKSB0
aHJvdyAoKSA7CiAKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgdGhyb3cg
KCkgOwogCmV4dGVybiB2b2lkIHJld2luZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpIDsKCiAK
CgoKCgoKCgoKCgoKIApleHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykKICAgICB0aHJvdyAoKSA7CiAKZXh0ZXJuIGlu
dCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSB0aHJvdyAo
KSA7CiMgNTIwICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCgoKCgoKCgoKIApleHRlcm4gdm9p
ZCBjbGVhcmVyciAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpIDsKIApleHRlcm4gaW50IGZlb2Yg
KEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKSA7CiAKZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUgKl9f
c3RyZWFtKSB0aHJvdyAoKSA7CgoKIApleHRlcm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklM
RSAqX19zdHJlYW0pIHRocm93ICgpIDsKZXh0ZXJuIGludCBmZW9mX3VubG9ja2VkIChGSUxFICpf
X3N0cmVhbSkgdGhyb3cgKCkgOwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19z
dHJlYW0pIHRocm93ICgpIDsKCgoKIApleHRlcm4gdm9pZCBwZXJyb3IgKF9fY29uc3QgY2hhciAq
X19zKSB0aHJvdyAoKSA7CgogCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJuIF9fY29uc3Qg
Y2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwoKCgoKCgoKCiAKZXh0ZXJuIGludCBmaWxlbm8g
KEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKSA7CgoKCiAKZXh0ZXJuIGludCBmaWxlbm9fdW5sb2Nr
ZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKSA7CgoKCgoKIApleHRlcm4gRklMRSAqcG9wZW4g
KF9fY29uc3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIHRocm93ICgp
IDsKCiAKZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKSA7CgoKCgog
CmV4dGVybiBjaGFyICpjdGVybWlkIChjaGFyICpfX3MpIHRocm93ICgpIDsKCgoKCgoKCgoKIyA2
MDIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCgogCgogCmV4dGVybiB2b2lkIGZsb2NrZmls
ZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpIDsKCiAKCmV4dGVybiBpbnQgZnRyeWxvY2tmaWxl
IChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgOwoKIApleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAo
RklMRSAqX19zdHJlYW0pIHRocm93ICgpIDsKCgoKCgoKCgoKCiAKCgoKCgp9IAoKCgoKIyAxNSAi
bWxpYi5jcHAiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgpleHRlcm4gIkMiIHsgCgogCgoKIyAxICIvdXNyL2xpYi9nY2MtbGli
L2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoK
IAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxp
Yi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxp
Yi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAK
CgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL2kz
ODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91
c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVm
LmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51
eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
IDMzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgogCmV4dGVybiB2b2lkICptZW1jcHkg
KHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAoJCSAgICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0
IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKSA7CiAKCmV4dGVybiB2b2lkICptZW1tb3ZlICh2
b2lkICpfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgdGhyb3cg
KCkgOwoKIAoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3Qs
IF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywKCQkgICAgICBpbnQgX19jLCBzaXplX3Qg
X19uKQogICAgIHRocm93ICgpIDsKCgoKIApleHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpfX3Ms
IGludCBfX2MsIHNpemVfdCBfX24pIHRocm93ICgpIDsKCiAKZXh0ZXJuIGludCBtZW1jbXAgKF9f
Y29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRo
cm93ICgpICAgOwoKIApleHRlcm4gdm9pZCAqbWVtY2hyIChfX2NvbnN0IHZvaWQgKl9fcywgaW50
IF9fYywgc2l6ZV90IF9fbikKICAgICAgdGhyb3cgKCkgICA7CgojIDczICIvdXNyL2luY2x1ZGUv
c3RyaW5nLmgiIDMKCgoKIApleHRlcm4gY2hhciAqc3RyY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgpIDsKIApl
eHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJICAgICAgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKSA7CgogCmV4
dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zcmMpCiAgICAgdGhyb3cgKCkgOwogCmV4dGVybiBjaGFyICpzdHJuY2F0
IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj
LAoJCSAgICAgIHNpemVfdCBfX24pIHRocm93ICgpIDsKCiAKZXh0ZXJuIGludCBzdHJjbXAgKF9f
Y29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpICAgOwog
CmV4dGVybiBpbnQgc3RybmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9f
czIsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgICA7CgogCmV4dGVybiBpbnQgc3RyY29sbCAo
X19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpCiAgICAgdGhyb3cgKCkgICA7
CiAKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKSA7
CgojIDExNiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCgoKCiAKZXh0ZXJuIGNoYXIgKnN0cmR1
cCAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpICAgOwoKCiAKCgoKCgoKCiMgMTUyICIvdXNy
L2luY2x1ZGUvc3RyaW5nLmgiIDMKCgogCmV4dGVybiBjaGFyICpzdHJjaHIgKF9fY29uc3QgY2hh
ciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSAgIDsKIApleHRlcm4gY2hhciAqc3RycmNociAoX19j
b25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpICAgOwoKCgoKCgoKIAoKZXh0ZXJuIHNp
emVfdCBzdHJjc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkK
ICAgICB0aHJvdyAoKSAgIDsKIAoKZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9fY29uc3QgY2hhciAq
X19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAgIHRocm93ICgpICAgOwogCmV4dGVybiBj
aGFyICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkK
ICAgICB0aHJvdyAoKSAgIDsKIApleHRlcm4gY2hhciAqc3Ryc3RyIChfX2NvbnN0IGNoYXIgKl9f
aGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpCiAgICAgdGhyb3cgKCkgICA7CgoKCgoK
CgogCmV4dGVybiBjaGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19kZWxpbSkKICAgICB0aHJvdyAoKSA7CgogCgpleHRlcm4gY2hhciAq
X19zdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19kZWxpbSwKCQkJIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpIHRocm93ICgp
IDsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2RlbGltLAoJCSAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3Nh
dmVfcHRyKSB0aHJvdyAoKSA7CgoKIyAyMTQgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgog
CmV4dGVybiBzaXplX3Qgc3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCkgICA7CgoK
CgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJudW0pIHRocm93ICgpIDsK
CiAKCmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBz
aXplX3QgX19idWZsZW4pIHRocm93ICgpIDsKCgogCgpleHRlcm4gdm9pZCBfX2J6ZXJvICh2b2lk
ICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpIDsKCgogCmV4dGVybiB2b2lkIGJjb3B5IChfX2Nv
bnN0IHZvaWQgKl9fc3JjLCB2b2lkICpfX2Rlc3QsIHNpemVfdCBfX24pIHRocm93ICgpIDsKCiAK
ZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCkgOwoKIApl
eHRlcm4gaW50IGJjbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBz
aXplX3QgX19uKQogICAgIHRocm93ICgpICAgOwoKIApleHRlcm4gY2hhciAqaW5kZXggKF9fY29u
c3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSAgIDsKCiAKZXh0ZXJuIGNoYXIgKnJpbmRl
eCAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpICAgOwoKIAoKZXh0ZXJuIGlu
dCBmZnMgKGludCBfX2kpIHRocm93ICgpICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cgog
CgoKCgoKCgoKCiAKZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9f
Y29uc3QgY2hhciAqX19zMikKICAgICB0aHJvdyAoKSAgIDsKCiAKZXh0ZXJuIGludCBzdHJuY2Fz
ZWNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24p
CiAgICAgdGhyb3cgKCkgICA7CgoKIyAyODkgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgog
CgpleHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsCgkJICAg
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkgdGhyb3cgKCkgOwoKCiMgMzMyICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKCiMgMzYxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgi
IDMKCgoKfSAKCgojIDE2ICJtbGliLmNwcCIgMgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxs
ZWdyby5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgZXh0ZXJuICJDIiB7CgoKIyAx
ICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9iYXNlLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogICAKIyAxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKIAoKCgoKCgpleHRlcm4gIkMiIHsgCgogCgojIDEgIi91c3IvaW5jbHVkZS9i
aXRzL2Vycm5vLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1
ZGUvbGludXgvZXJybm8uaCIgMSAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIiAx
IDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA0ICIvdXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCIgMiAz
CgoKIyAyNCAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDMKCgoKIyAyNSAiL3Vzci9pbmNs
dWRlL2JpdHMvZXJybm8uaCIgMiAzCgoKIAoKCiAKCgoKCiAKZXh0ZXJuIGludCBlcnJubzsKCiAK
ZXh0ZXJuIGludCAqX19lcnJub19sb2NhdGlvbiAodm9pZCkgdGhyb3cgKCkgIF9fYXR0cmlidXRl
X18gKChfX2NvbnN0X18pKTsKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCiMgMzYgIi91c3IvaW5jbHVk
ZS9lcnJuby5oIiAyIDMKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKfSAKCgoKIAoKCgoKCgoKCgoK
IyAyNCAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vYmFzZS5oIiAyIDMKCiAgIAojIDEgIi91
c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvbGltaXRz
LmgiIDEgMwogCgoKIAoKCgoKCiAKIyAxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJl
LWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N5c2xpbWl0cy5oIiAxIDMKIAoKCgoKCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9saW1pdHMuaCIg
MSAzCiAKCgogCgojIDExNCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8y
Ljk1LjMvaW5jbHVkZS9saW1pdHMuaCIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgogCgojIDExMyAiL3Vzci9p
bmNsdWRlL2xpbWl0cy5oIiAzCgoKCgogIAoKCgoKIyAxNDAgIi91c3IvaW5jbHVkZS9saW1pdHMu
aCIgMwoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAK
CgoKIAoKCiAKCgogCgoKIAoKCiAKCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgog
CgoKIAoKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9sb2NhbF9saW0uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CiAKIyAxICIvdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMwoKCgoKCgoKCgoKCgoKCgoK
CgoKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDIgMwoKCiAKCgoKCiAKCgoK
CiAKCgoKCgogCgogCgoKIAoKIAoKCiAKCiAKCgogCgoKCiAKCgogCgojIDEyNiAiL3Vzci9pbmNs
dWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAyIDMKCgoKCgoKCgogCgoKCgoKCgojIDE0NCAiL3Vzci9p
bmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgyX2xp
bS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgogCgoKIAoKCiAKCgogCgoK
CiAKCgoKIAoKCiAKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoj
IDE0OCAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCgoKIyAxMTcgIi91c3IvbGliL2dj
Yy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvbGltaXRzLmgiIDIgMwoK
CgoKIyA3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNs
dWRlL3N5c2xpbWl0cy5oIiAyIDMKCgojIDExICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3
YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCgogCgoKCiAKCgoKIAoK
CgoKIAoKCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgogCgogCgoKCgogCgoKCiAKCgoKCgoKCgogCgoK
CiAKCgoKCgoKCgoKCgoKCiAKCgoKIyAxMDcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dh
cmUtbGludXgvMi45NS4zL2luY2x1ZGUvbGltaXRzLmgiIDMKCgoKCiAKCgoKCgoKCgoKIyAyNSAi
L3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vYmFzZS5oIiAyIDMKCiAgIAojIDEgIi91c3IvbGli
L2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkYXJnLmgiIDEg
MwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgp2b2lkIHZhX2Vu
ZCAoX19nbnVjX3ZhX2xpc3QpOwkJIAoKCiAKCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAogCgoKCgoKCgoKCgoKCgojIDE3NSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCiAKCgoKCiAKCiAK
CiAKCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIyAyNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vYmFzZS5oIiAyIDMKCiAgIAojIDEg
Ii91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDEgMwoKCgoKCgogCgoKCgoKCgogCgogCgoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIv
dXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwoKCgoKCgoKCgogCgoKCgogCgogCgoK
IyAxODggIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1
ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3IvbGliL2djYy1saWIvaTM4
Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoK
CgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCgojIDI3
ICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9iYXNlLmgiIDIgMwoKICAgCiMgMSAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgoKCgoj
IDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNr
d2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgoj
IDYxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoj
IDEyNiAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAK
CgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2dj
Yy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoK
CiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAz
CgoKZXh0ZXJuICJDIiB7IAoKCgoKIyA5MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKIAp0
eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwkJCSAKICAgIGludCByZW07CQkJIAogIH0g
ZGl2X3Q7CgogCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CQkgCiAgICBs
b25nIGludCByZW07CQkgCiAgfSBsZGl2X3Q7CgoKCiMgMTE4ICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMKCgoKIAoKCgogCgoKCgoKIAoKZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dldF9tYl9jdXJf
bWF4ICh2b2lkKSB0aHJvdyAoKSA7CgoKIApleHRlcm4gZG91YmxlIGF0b2YgKF9fY29uc3QgY2hh
ciAqX19ucHRyKSB0aHJvdyAoKSAgIDsKIApleHRlcm4gaW50IGF0b2kgKF9fY29uc3QgY2hhciAq
X19ucHRyKSB0aHJvdyAoKSAgIDsKIApleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFy
ICpfX25wdHIpIHRocm93ICgpICAgOwoKCiAKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25n
IGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpCiAgICAgdGhyb3cgKCkgICA7CgoKIApl
eHRlcm4gZG91YmxlIHN0cnRvZCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCkgOwoKCgoKCgoKCgoKIApl
eHRlcm4gbG9uZyBpbnQgc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJ
CQljaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCkgOwogCmV4
dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19ucHRyLAoJCQkJICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAg
ICB0aHJvdyAoKSA7CgoKIApfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRv
cSAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJICAgICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCkgOwogCl9fZXh0ZW5zaW9uX18KZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKCQkJCSAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9f
YmFzZSkKICAgICB0aHJvdyAoKSA7CgoKCiAKCiAKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBs
b25nIGludCBzdHJ0b2xsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCkgOwogCl9f
ZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkJY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsIGludCBfX2Jhc2UpCiAgICAgdGhyb3cgKCkgOwoKCgojIDI0NCAiL3Vzci9pbmNsdWRlL3N0
ZGxpYi5oIiAzCgoKCiAKCgpleHRlcm4gZG91YmxlIF9fc3RydG9kX2ludGVybmFsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LCBpbnQgX19ncm91cCkKICAgICB0aHJvdyAoKSA7CmV4dGVybiBmbG9hdCBfX3N0cnRvZl9pbnRl
cm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCWNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICB0aHJvdyAoKSA7CmV4dGVybiBsb25nIGRv
dWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs
CgkJCQkgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkgICAgICAgaW50IF9f
Z3JvdXApIHRocm93ICgpIDsKCmV4dGVybiBsb25nIGludCBfX3N0cnRvbF9pbnRlcm5hbCAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAoJCQkJICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpIDsKCgoKZXh0
ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJ
CQkJCSAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpIDsKCgoKCl9fZXh0ZW5z
aW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2ludGVybmFsIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCSBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwK
CQkJCQkgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApIHRocm93ICgpIDsKCgoKX19leHRlbnNpb25f
XwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2ludGVybmFsIChfX2Nv
bnN0IGNoYXIgKgoJCQkJCQkgICBfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJICAgY2hhciAqKl9f
cmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJCSAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKQogICAg
IHRocm93ICgpIDsKCgoKCiMgMzc3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKCiAKCgpl
eHRlcm4gY2hhciAqbDY0YSAobG9uZyBpbnQgX19uKSB0aHJvdyAoKSA7CgogCmV4dGVybiBsb25n
IGludCBhNjRsIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCkgICA7CgoKIyAxICIvdXNyL2lu
Y2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCmV4dGVy
biAiQyIgeyAKCgoKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQg
dV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsK
dHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlw
ZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CgoKCgp0eXBlZGVmIF9fbG9mZl90IGxvZmZfdDsKCgoKdHlw
ZWRlZiBfX2lub190IGlub190OwoKCgoKCgoKCgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKCgoK
CnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19tb2RlX3QgbW9kZV90OwoKCgoK
dHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYgX191aWRfdCB1aWRfdDsKCgoK
Cgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCgoKCgoKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90
OwoKCgoKdHlwZWRlZiBfX2lkX3QgaWRfdDsKCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7
CgoKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJf
dDsKCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMwoKCiMgNjEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoK
CgogCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKCgoKCgoKCgoKIAp0eXBlZGVmIF9fY2xvY2tp
ZF90IGNsb2NraWRfdDsKCgoKCgoKCgoKCiAKdHlwZWRlZiBfX3RpbWVyX3QgdGltZXJfdDsKCgoK
CgojIDExMiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKIyAzNjQgIi91c3IvaW5jbHVkZS90
aW1lLmgiIDMKCgoKIyAxMzIgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIyAxNDMg
Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4
Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoK
IyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2kz
ODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vzci9saWIvZ2NjLWxpYi9p
Mzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAK
CiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2OSAiL3Vzci9saWIvZ2NjLWxp
Yi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCgoK
CgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGlu
dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CiMgMTQ2ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgogCnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKCgogCgojIDE4MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAzCgoKIAoKCgoKCgoKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoICBfX1FJX18gKSkpIDsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKCAgX19ISV9fICkpKSA7CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVf
XyAoKF9fbW9kZV9fICggIF9fU0lfXyApKSkgOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoICBfX0RJX18gKSkpIDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1
X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19RSV9fICkpKSA7CnR5cGVkZWYg
dW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ISV9f
ICkpKSA7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19t
b2RlX18gKCAgX19TSV9fICkpKSA7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBfX2F0
dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ESV9fICkpKSA7Cgp0eXBlZGVmIGludCByZWdpc3Rl
cl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18pKSk7CgoKIAoKCgoKCgogCiMg
MSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzCiAKCgoKCgoK
IyAzNyAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoj
IDIxMiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vzci9pbmNsdWRl
L3N5cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKIAojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIyAzNiAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMKCgoKCgoKCgoKCgoKIyA1NiAi
L3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMKCiMgNzIgIi91c3IvaW5jbHVkZS9iaXRzL3Nl
bGVjdC5oIiAzCgojIDMxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgogCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5
cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKIAoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5z
aWduZWQgbG9uZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBp
bnQpKSkgXTsKICB9IF9fc2lnc2V0X3Q7CgoKCgogCgoKCgoKIyAxMjUgIi91c3IvaW5jbHVkZS9i
aXRzL3NpZ3NldC5oIiAzCgojIDM0ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgoK
CnR5cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKCgogCgoKIyAxICIvdXNyL2luY2x1ZGUvdGlt
ZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDUxICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAzCgoKIyA2MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDcyICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgODQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoK
IyA5NiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCgoKCiAKCnN0cnVjdCB0aW1lc3BlYwog
IHsKICAgIF9fdGltZV90IHR2X3NlYzsJCSAKICAgIGxvbmcgaW50IHR2X25zZWM7CQkgCiAgfTsK
CgoKCgojIDM2NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDQ0ICIvdXNyL2luY2x1ZGUv
c3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgojIDU3ICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMK
CgoKCgoKCgogCgpzdHJ1Y3QgdGltZXZhbAogIHsKICAgIF9fdGltZV90IHR2X3NlYzsJCSAKICAg
IF9fc3VzZWNvbmRzX3QgdHZfdXNlYzsJIAogIH07CgoKIyA0NiAiL3Vzci9pbmNsdWRlL3N5cy9z
ZWxlY3QuaCIgMiAzCgoKCnR5cGVkZWYgX19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCiAK
dHlwZWRlZiBsb25nIGludCBfX2ZkX21hc2s7CgogCgoKCgogCnR5cGVkZWYgc3RydWN0CiAgewog
ICAgIAoKCgoKCiAgICBfX2ZkX21hc2sgX19mZHNfYml0c1sxMDI0ICAvICg4ICogc2l6ZW9mIChf
X2ZkX21hc2spKSBdOwoKCiAgfSBmZF9zZXQ7CgogCgoKCiAKdHlwZWRlZiBfX2ZkX21hc2sgZmRf
bWFzazsKCiAKCgoKCiAKCgoKCgoKZXh0ZXJuICJDIiB7IAoKIAoKCgoKZXh0ZXJuIGludCBzZWxl
Y3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBfX3JlYWRmZHMsCgkJICAgZmRfc2V0
ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCgkJICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0
ZmRzLAoJCSAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCkgdGhyb3cgKCkg
OwoKIyAxMTYgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKCgp9IAoKCiMgMjE1ICIvdXNy
L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiAKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N5c21h
Y3Jvcy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIyA0NyAiL3Vzci9p
bmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMwoKCgojIDIxOCAiL3Vzci9pbmNsdWRlL3N5cy90eXBl
cy5oIiAyIDMKCgoKCgoKCgoKIAoKCnR5cGVkZWYgX19ibGtjbnRfdCBibGtjbnRfdDsJICAKCgoK
dHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsgIAoKCgp0eXBlZGVmIF9fZnNmaWxjbnRf
dCBmc2ZpbGNudF90OyAgCgoKIyAyNTQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwoKCgoK
CgoKCn0gCgoKIyAzOTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKIAoKCgogCmV4dGVy
biBsb25nIGludCByYW5kb20gKHZvaWQpIHRocm93ICgpIDsKCiAKZXh0ZXJuIHZvaWQgc3JhbmRv
bSAodW5zaWduZWQgaW50IF9fc2VlZCkgdGhyb3cgKCkgOwoKIAoKCgpleHRlcm4gY2hhciAqaW5p
dHN0YXRlICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3N0YXRlYnVmLAoJCQlzaXplX3Qg
X19zdGF0ZWxlbikgdGhyb3cgKCkgOwoKIAoKZXh0ZXJuIGNoYXIgKnNldHN0YXRlIChjaGFyICpf
X3N0YXRlYnVmKSB0aHJvdyAoKSA7CgoKCiAKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAg
aW50MzJfdCAqZnB0cjsJCSAKICAgIGludDMyX3QgKnJwdHI7CQkgCiAgICBpbnQzMl90ICpzdGF0
ZTsJCSAKICAgIGludCByYW5kX3R5cGU7CQkgCiAgICBpbnQgcmFuZF9kZWc7CQkgCiAgICBpbnQg
cmFuZF9zZXA7CQkgCiAgICBpbnQzMl90ICplbmRfcHRyOwkJIAogIH07CgpleHRlcm4gaW50IHJh
bmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYsCgkJICAgICBpbnQz
Ml90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKSA7CgpleHRlcm4gaW50IHNyYW5kb21f
ciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgdGhyb3cg
KCkgOwoKZXh0ZXJuIGludCBpbml0c3RhdGVfciAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAq
X19yZXN0cmljdCBfX3N0YXRlYnVmLAoJCQlzaXplX3QgX19zdGF0ZWxlbiwKCQkJc3RydWN0IHJh
bmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKSA7CgpleHRlcm4gaW50IHNldHN0
YXRlX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKCQkgICAgICAgc3RydWN0IHJhbmRv
bV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSB0aHJvdyAoKSA7CgoKCgogCmV4dGVybiBpbnQgcmFu
ZCAodm9pZCkgdGhyb3cgKCkgOwogCmV4dGVybiB2b2lkIHNyYW5kICh1bnNpZ25lZCBpbnQgX19z
ZWVkKSB0aHJvdyAoKSA7CgoKIApleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpfX3Nl
ZWQpIHRocm93ICgpIDsKCgoKCiAKCiAKZXh0ZXJuIGRvdWJsZSBkcmFuZDQ4ICh2b2lkKSB0aHJv
dyAoKSA7CmV4dGVybiBkb3VibGUgZXJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1Ymlb
M10pIHRocm93ICgpIDsKCiAKZXh0ZXJuIGxvbmcgaW50IGxyYW5kNDggKHZvaWQpIHRocm93ICgp
IDsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNd
KSB0aHJvdyAoKSA7CgogCmV4dGVybiBsb25nIGludCBtcmFuZDQ4ICh2b2lkKSB0aHJvdyAoKSA7
CmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkg
dGhyb3cgKCkgOwoKIApleHRlcm4gdm9pZCBzcmFuZDQ4IChsb25nIGludCBfX3NlZWR2YWwpIHRo
cm93ICgpIDsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9y
dCBpbnQgX19zZWVkMTZ2WzNdKSB0aHJvdyAoKSA7CmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2ln
bmVkIHNob3J0IGludCBfX3BhcmFtWzddKSB0aHJvdyAoKSA7CgoKIAoKCnN0cnVjdCBkcmFuZDQ4
X2RhdGEKICB7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX194WzNdOwkgCiAgICB1bnNpZ25lZCBz
aG9ydCBpbnQgX19vbGRfeFszXTsgIAogICAgdW5zaWduZWQgc2hvcnQgaW50IF9fYzsJIAogICAg
dW5zaWduZWQgc2hvcnQgaW50IF9faW5pdDsJIAogICAgdW5zaWduZWQgbG9uZyBsb25nIGludCBf
X2E7CSAKICB9OwoKIApleHRlcm4gaW50IGRyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAq
X19yZXN0cmljdCBfX2J1ZmZlciwKCQkgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQp
IHRocm93ICgpIDsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdLAoJCSAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIs
CgkJICAgICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKSA7CgogCmV4dGVy
biBpbnQgbHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVy
LAoJCSAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKSA7CmV4dGVy
biBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkgICAgICBz
dHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAoJCSAgICAgIGxvbmcgaW50
ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKSA7CgogCmV4dGVybiBpbnQgbXJhbmQ0OF9y
IChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAoJCSAgICAgIGxvbmcg
aW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKSA7CmV4dGVybiBpbnQganJhbmQ0OF9y
ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkgICAgICBzdHJ1Y3QgZHJhbmQ0OF9k
YXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAoJCSAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9f
cmVzdWx0KSB0aHJvdyAoKSA7CgogCmV4dGVybiBpbnQgc3JhbmQ0OF9yIChsb25nIGludCBfX3Nl
ZWR2YWwsIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKQogICAgIHRocm93ICgpIDsKCmV4
dGVybiBpbnQgc2VlZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10sCgkJICAg
ICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgdGhyb3cgKCkgOwoKZXh0ZXJuIGludCBs
Y29uZzQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddLAoJCSAgICAgIHN0cnVjdCBk
cmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSB0aHJvdyAoKSA7CgoKCgoKCgogCmV4dGVybiB2b2lkICpt
YWxsb2MgKHNpemVfdCBfX3NpemUpIHRocm93ICgpICAgOwogCmV4dGVybiB2b2lkICpjYWxsb2Mg
KHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQogICAgIHRocm93ICgpICAgOwoKCgogCgpl
eHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpIHRocm93ICgp
ICAgOwogCmV4dGVybiB2b2lkIGZyZWUgKHZvaWQgKl9fcHRyKSB0aHJvdyAoKSA7CgoKIApleHRl
cm4gdm9pZCBjZnJlZSAodm9pZCAqX19wdHIpIHRocm93ICgpIDsKCgoKIyAxICIvdXNyL2luY2x1
ZGUvYWxsb2NhLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
CgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45
NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIv
Z2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGli
L2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMK
CgogCgoKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGlu
dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3Iv
bGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xh
Y2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgojIDI1ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKCmV4dGVybiAiQyIg
eyAKCiAKCgogCmV4dGVybiB2b2lkICphbGxvY2EgKHNpemVfdCBfX3NpemUpIHRocm93ICgpIDsK
CgoKCgp9IAoKCiMgNTQ2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKIApleHRlcm4g
dm9pZCAqdmFsbG9jIChzaXplX3QgX19zaXplKSB0aHJvdyAoKSAgIDsKCgoKCgoKCgogCmV4dGVy
biB2b2lkIGFib3J0ICh2b2lkKSB0aHJvdyAoKSAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5f
XykpOwoKCiAKZXh0ZXJuIGludCBhdGV4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgdGhyb3cg
KCkgOwoKCiAKCmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1
cywgdm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykKICAgICB0aHJvdyAoKSA7CgoKIAoKCmV4dGVy
biB2b2lkIGV4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgIF9fYXR0cmlidXRlX18gKChfX25v
cmV0dXJuX18pKTsKCgoKCgoKCgogCmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29uc3QgY2hhciAq
X19uYW1lKSB0aHJvdyAoKSA7CgogCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52IChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCkgOwoKCiAKIAoKZXh0ZXJuIGludCBwdXRlbnYgKGNo
YXIgKl9fc3RyaW5nKSB0aHJvdyAoKSA7CgoKCiAKCmV4dGVybiBpbnQgc2V0ZW52IChfX2NvbnN0
IGNoYXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLCBpbnQgX19yZXBsYWNlKQogICAg
IHRocm93ICgpIDsKCiAKZXh0ZXJuIGludCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUp
IHRocm93ICgpIDsKCgoKIAoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIHRocm93ICgpIDsK
CgoKCiAKCgoKZXh0ZXJuIGNoYXIgKm1rdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCkg
OwoKIAoKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCkg
OwoKCgoKCgoKCgoKCgoKIAoKCgoKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxh
dGUpIHRocm93ICgpIDsKCgoKIApleHRlcm4gaW50IHN5c3RlbSAoX19jb25zdCBjaGFyICpfX2Nv
bW1hbmQpIHRocm93ICgpIDsKCgoKCgoKCgoKCiAKCgoKCgpleHRlcm4gY2hhciAqcmVhbHBhdGgg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCgkJICAgICAgIGNoYXIgKl9fcmVzdHJp
Y3QgX19yZXNvbHZlZCkgdGhyb3cgKCkgOwoKCgogCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9m
bl90KSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKTsKCgoKCgoKIAoKZXh0ZXJuIHZv
aWQgKmJzZWFyY2ggKF9fY29uc3Qgdm9pZCAqX19rZXksIF9fY29uc3Qgdm9pZCAqX19iYXNlLAoJ
CSAgICAgIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29t
cGFyKTsKCiAKCmV4dGVybiB2b2lkIHFzb3J0ICh2b2lkICpfX2Jhc2UsIHNpemVfdCBfX25tZW1i
LCBzaXplX3QgX19zaXplLAoJCSAgIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpOwoKCiAKZXh0ZXJu
IGludCBhYnMgKGludCBfX3gpIHRocm93ICgpICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7
CmV4dGVybiBsb25nIGludCBsYWJzIChsb25nIGludCBfX3gpIHRocm93ICgpICBfX2F0dHJpYnV0
ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCiAKCiAKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVt
ZXIsIGludCBfX2Rlbm9tKQogICAgIHRocm93ICgpICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f
KSk7CmV4dGVybiBsZGl2X3QgbGRpdiAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5v
bSkKICAgICB0aHJvdyAoKSAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgoKCiAK
CgogCgoKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGlu
dCAqX19yZXN0cmljdCBfX2RlY3B0LAoJCSAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93
ICgpIDsKCiAKCgpleHRlcm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdp
dCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCgkJICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikg
dGhyb3cgKCkgOwoKIAoKCmV4dGVybiBjaGFyICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9f
bmRpZ2l0LCBjaGFyICpfX2J1ZikgdGhyb3cgKCkgOwoKCgogCmV4dGVybiBjaGFyICpxZWN2dCAo
bG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAoJCSAgICBpbnQgKl9fcmVzdHJpY3Qg
X19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCkgOwpleHRlcm4gY2hhciAq
cWZjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkgICAgaW50ICpfX3Jl
c3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRocm93ICgpIDsKZXh0ZXJu
IGNoYXIgKnFnY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9f
YnVmKSB0aHJvdyAoKSA7CgoKIAoKZXh0ZXJuIGludCBlY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAoJCSAgIGludCAqX19yZXN0cmlj
dCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCgkJICAgc2l6ZV90IF9fbGVuKSB0aHJv
dyAoKSA7CmV4dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBp
bnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFy
ICpfX3Jlc3RyaWN0IF9fYnVmLAoJCSAgIHNpemVfdCBfX2xlbikgdGhyb3cgKCkgOwoKZXh0ZXJu
IGludCBxZWN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJICAgIGlu
dCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAoJCSAgICBjaGFy
ICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpIDsKZXh0ZXJuIGludCBx
ZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJICAgIGludCAqX19y
ZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAoJCSAgICBjaGFyICpfX3Jl
c3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpIDsKCgoKCiAKCmV4dGVybiBpbnQg
bWJsZW4gKF9fY29uc3QgY2hhciAqX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKSA7CiAKCmV4dGVy
biBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAoJCSAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIHRocm93ICgpIDsKIAoKZXh0ZXJuIGludCB3
Y3RvbWIgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSB0aHJvdyAoKSA7CgoKIApleHRlcm4g
c2l6ZV90IG1ic3Rvd2NzICh3Y2hhcl90ICpfX3Jlc3RyaWN0ICBfX3B3Y3MsCgkJCV9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIHRocm93ICgpIDsKIApleHRlcm4gc2l6
ZV90IHdjc3RvbWJzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJX19jb25zdCB3Y2hhcl90ICpf
X3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSA7CgoKCiAKCgoKZXh0
ZXJuIGludCBycG1hdGNoIChfX2NvbnN0IGNoYXIgKl9fcmVzcG9uc2UpIHRocm93ICgpIDsKCgoK
IyA4MTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKCgoKCgogCgoKCgoKCiMgODQyICIv
dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgojIDg1MiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz
CgoKCiAKCgpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9f
bmVsZW0pIHRocm93ICgpIDsKCgoKCgp9IAoKCiMgMjggIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxl
Z3JvL2Jhc2UuaCIgMiAzCgogICAKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCgoKCiAKCgojIDEgIi91c3Iv
bGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi
IDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51
eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNy
L2xpYi9nY2MtbGliL2kzODYtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vz
ci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2Fy
ZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2OSAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRk
ZWYuaCIgMwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTM4
Ni1zbGFja3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCiMgMzggIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCiAKCiMgMSAi
L3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgogCgoKIAoKCgoKCiAKCgpleHRlcm4gbG9uZyBpbnQgX19zeXNjb25mIChpbnQpOwoKCgoKIAoK
IAoKIAoKCiAKCgoKCgoKIyA3MyAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzCgojIDQyICIv
dXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgogCgoKCgoKCgoKCgoKCgogCnR5cGVkZWYgX19jbG9j
a190IGNsb2NrX3Q7CgoKCgojIDcyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgODQgIi91
c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA5NiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoK
IyAxMTIgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgogCnN0cnVjdCB0bQp7CiAgaW50IHRt
X3NlYzsJCQkgCiAgaW50IHRtX21pbjsJCQkgCiAgaW50IHRtX2hvdXI7CQkJIAogIGludCB0bV9t
ZGF5OwkJCSAKICBpbnQgdG1fbW9uOwkJCSAKICBpbnQgdG1feWVhcjsJCQkgCiAgaW50IHRtX3dk
YXk7CQkJIAogIGludCB0bV95ZGF5OwkJCSAKICBpbnQgdG1faXNkc3Q7CQkJIAoKCiAgbG9uZyBp
bnQgdG1fZ210b2ZmOwkJIAogIF9fY29uc3QgY2hhciAqdG1fem9uZTsJIAoKCgoKfTsKCgoKIApz
dHJ1Y3QgaXRpbWVyc3BlYwogIHsKICAgIHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsKICAg
IHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKICB9OwoKIApzdHJ1Y3Qgc2lnZXZlbnQ7CgoKCgoK
CgoKCgoKIAoKZXh0ZXJuIGNsb2NrX3QgY2xvY2sgKHZvaWQpIHRocm93ICgpIDsKCiAKZXh0ZXJu
IHRpbWVfdCB0aW1lICh0aW1lX3QgKl9fdGltZXIpIHRocm93ICgpIDsKCiAKZXh0ZXJuIGRvdWJs
ZSBkaWZmdGltZSAodGltZV90IF9fdGltZTEsIHRpbWVfdCBfX3RpbWUwKQogICAgIHRocm93ICgp
ICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVybiB0aW1lX3QgbWt0aW1lIChz
dHJ1Y3QgdG0gKl9fdHApIHRocm93ICgpIDsKCgogCgoKZXh0ZXJuIHNpemVfdCBzdHJmdGltZSAo
Y2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heHNpemUsCgkJCV9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJX19jb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190
cCkgdGhyb3cgKCkgOwoKCgoKCgoKCgoKIAoKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lIChfX2Nv
bnN0IHRpbWVfdCAqX190aW1lcikgdGhyb3cgKCkgOwoKIAoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9j
YWx0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgdGhyb3cgKCkgOwoKCiAKCmV4dGVybiBz
dHJ1Y3QgdG0gKmdtdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAoJ
CQkgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIHRocm93ICgpIDsKCiAKCmV4dGVybiBz
dHJ1Y3QgdG0gKmxvY2FsdGltZV9yIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVy
LAoJCQkgICAgICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIHRocm93ICgpIDsKCgogCgpl
eHRlcm4gY2hhciAqYXNjdGltZSAoX19jb25zdCBzdHJ1Y3QgdG0gKl9fdHApIHRocm93ICgpIDsK
CiAKZXh0ZXJuIGNoYXIgKmN0aW1lIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgdGhyb3cgKCkg
OwoKCiAKCiAKCmV4dGVybiBjaGFyICphc2N0aW1lX3IgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jl
c3RyaWN0IF9fdHAsCgkJCWNoYXIgKl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpIDsKCiAKZXh0
ZXJuIGNoYXIgKmN0aW1lX3IgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCgkJ
ICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1ZikgdGhyb3cgKCkgOwoKCgogCmV4dGVybiBjaGFy
ICpfX3R6bmFtZVsyXTsJIApleHRlcm4gaW50IF9fZGF5bGlnaHQ7CQkgCmV4dGVybiBsb25nIGlu
dCBfX3RpbWV6b25lOwkgCgoKCiAKZXh0ZXJuIGNoYXIgKnR6bmFtZVsyXTsKCiAKCmV4dGVybiB2
b2lkIHR6c2V0ICh2b2lkKSB0aHJvdyAoKSA7CgoKCmV4dGVybiBpbnQgZGF5bGlnaHQ7CmV4dGVy
biBsb25nIGludCB0aW1lem9uZTsKCgoKIAoKZXh0ZXJuIGludCBzdGltZSAoX19jb25zdCB0aW1l
X3QgKl9fd2hlbikgdGhyb3cgKCkgOwoKCgogCgoKCgoKCiAKCgogCmV4dGVybiB0aW1lX3QgdGlt
ZWdtIChzdHJ1Y3QgdG0gKl9fdHApIHRocm93ICgpIDsKCiAKZXh0ZXJuIHRpbWVfdCB0aW1lbG9j
YWwgKHN0cnVjdCB0bSAqX190cCkgdGhyb3cgKCkgOwoKIApleHRlcm4gaW50IGR5c2l6ZSAoaW50
IF9feWVhcikgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgogCmV4
dGVybiBpbnQgbmFub3NsZWVwIChfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0ZWRf
dGltZSwKCQkgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKSB0aHJvdyAoKSA7CgoK
IApleHRlcm4gaW50IGNsb2NrX2dldHJlcyAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0
aW1lc3BlYyAqX19yZXMpIHRocm93ICgpIDsKCiAKZXh0ZXJuIGludCBjbG9ja19nZXR0aW1lIChj
bG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRpbWVzcGVjICpfX3RwKSB0aHJvdyAoKSA7Cgog
CmV4dGVybiBpbnQgY2xvY2tfc2V0dGltZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIF9fY29uc3Qg
c3RydWN0IHRpbWVzcGVjICpfX3RwKQogICAgIHRocm93ICgpIDsKCiMgMzA1ICIvdXNyL2luY2x1
ZGUvdGltZS5oIiAzCgoKCiAKZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUgKGNsb2NraWRfdCBfX2Ns
b2NrX2lkLAoJCQkgc3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3RyaWN0IF9fZXZwLAoJCQkgdGltZXJf
dCAqX19yZXN0cmljdCBfX3RpbWVyaWQpIHRocm93ICgpIDsKCiAKZXh0ZXJuIGludCB0aW1lcl9k
ZWxldGUgKHRpbWVyX3QgX190aW1lcmlkKSB0aHJvdyAoKSA7CgogCmV4dGVybiBpbnQgdGltZXJf
c2V0dGltZSAodGltZXJfdCBfX3RpbWVyaWQsIGludCBfX2ZsYWdzLAoJCQkgIF9fY29uc3Qgc3Ry
dWN0IGl0aW1lcnNwZWMgKl9fcmVzdHJpY3QgX192YWx1ZSwKCQkJICBzdHJ1Y3QgaXRpbWVyc3Bl
YyAqX19yZXN0cmljdCBfX292YWx1ZSkgdGhyb3cgKCkgOwoKIApleHRlcm4gaW50IHRpbWVyX2dl
dHRpbWUgKHRpbWVyX3QgX190aW1lcmlkLCBzdHJ1Y3QgaXRpbWVyc3BlYyAqX192YWx1ZSkKICAg
ICB0aHJvdyAoKSA7CgogCmV4dGVybiBpbnQgdGltZXJfZ2V0b3ZlcnJ1biAodGltZXJfdCBfX3Rp
bWVyaWQpIHRocm93ICgpIDsKCgoKIyAzNDkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgojIDM1
OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgp9IAoKCgoKIyAyOSAiL3Vzci9sb2NhbC9pbmNs
dWRlL2FsbGVncm8vYmFzZS5oIiAyIDMKCgoKCiAgIGV4dGVybiAiQyIgewoKCiMgMSAiL3Vzci9s
b2NhbC9pbmNsdWRlL2FsbGVncm8vaW50ZXJuYWwvYWxjb25maWcuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCiAKCiAgIAogICAgICAKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxs
ZWdyby9wbGF0Zm9ybS9hbHBsYXRmLmgiIDEgMwogCgojIDI5ICIvdXNyL2xvY2FsL2luY2x1ZGUv
YWxsZWdyby9pbnRlcm5hbC9hbGNvbmZpZy5oIiAyIDMKCiAgIAoKICAgCiMgNDggIi91c3IvbG9j
YWwvaW5jbHVkZS9hbGxlZ3JvL2ludGVybmFsL2FsY29uZmlnLmgiIDMKCiAgICAgIAojIDEgIi91
c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL3BsYXRmb3JtL2FsdWNmZy5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCiAKZXh0ZXJuICJDIiB7IAoKIAoKIyAxICIvdXNyL2luY2x1ZGUvYml0
cy9mY250bC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCgogCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKIyAxMzQgIi91c3IvaW5jbHVkZS9iaXRz
L2ZjbnRsLmgiIDMKCgpzdHJ1Y3QgZmxvY2sKICB7CiAgICBzaG9ydCBpbnQgbF90eXBlOwkgCiAg
ICBzaG9ydCBpbnQgbF93aGVuY2U7CSAKCiAgICBfX29mZl90IGxfc3RhcnQ7CSAKICAgIF9fb2Zm
X3QgbF9sZW47CSAKCgoKCiAgICBfX3BpZF90IGxfcGlkOwkgCiAgfTsKCiMgMTU5ICIvdXNyL2lu
Y2x1ZGUvYml0cy9mY250bC5oIiAzCgoKIAoKCgoKCgoKCgogCgoKCgoKCgoKIyAzMyAiL3Vzci9p
bmNsdWRlL2ZjbnRsLmgiIDIgMwoKCiAKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKIAoKZXh0ZXJu
IGludCBmY250bCAoaW50IF9fZmQsIGludCBfX2NtZCwgLi4uKSB0aHJvdyAoKSA7CgogCgoKCmV4
dGVybiBpbnQgb3BlbiAoX19jb25zdCBjaGFyICpfX2ZpbGUsIGludCBfX29mbGFnLCAuLi4pIHRo
cm93ICgpIDsKCgoKCgoKCgoKCgoKIAoKCgpleHRlcm4gaW50IGNyZWF0IChfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwgX19tb2RlX3QgX19tb2RlKSB0aHJvdyAoKSA7CgoKCgoKCgoKCgoKCgoKIAoKCgog
CgoKCgoKCgoKCmV4dGVybiBpbnQgbG9ja2YgKGludCBfX2ZkLCBpbnQgX19jbWQsIF9fb2ZmX3Qg
X19sZW4pIHRocm93ICgpIDsKCgoKCgoKCgoKCgoKCiMgMTYzICIvdXNyL2luY2x1ZGUvZmNudGwu
aCIgMwoKCn0gCgoKIyAyMiAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vcGxhdGZvcm0vYWx1
Y2ZnLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKCgoK
IAoKCgogCgoKCiAKCgoKIAoKCgoKCgogCgoKIAoKCgoKIAoKCiAKCgogCgoKCiAKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcG9zaXhfb3B0Lmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgog
CgoKIAoKCiAKCgogCgoKIAoKCiAKCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKCiAKCgogCgoK
IAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoK
CiAKCgogCgoKIAoKCiAKCgogCgoKCiMgMTc1ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoK
CiAKCgoKCiAKCgoKCgogCgoKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFj
a3dhcmUtbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAi
L3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRk
ZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2kzODYtc2xh
Y2t3YXJlLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNs
YWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgoj
IDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9pMzg2
LXNsYWNrd2FyZS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCgoKCgoKCgoK
CgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvaTM4Ni1zbGFja3dhcmUtbGludXgvMi45
NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMTk5
ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCiMgMjM2ICIvdXNyL2luY2x1ZGUvdW5pc3Rk
LmgiIDMKCgoKCnR5cGVkZWYgX19pbnRwdHJfdCBpbnRwdHJfdDsKCgoKCgoKdHlwZWRlZiBfX3Nv
Y2tsZW5fdCBzb2NrbGVuX3Q7CgoKCgogCgoKCgoKCiAKZXh0ZXJuIGludCBhY2Nlc3MgKF9fY29u
c3QgY2hhciAqX19uYW1lLCBpbnQgX190eXBlKSB0aHJvdyAoKSA7CgoKCgoKCgoKIAoKCgoKCgoK
IAoKCgoKCgogCgoKCgoKZXh0ZXJuIF9fb2ZmX3QgbHNlZWsgKGludCBfX2ZkLCBfX29mZl90IF9f
b2Zmc2V0LCBpbnQgX193aGVuY2UpIHRocm93ICgpIDsKIyAzMDAgIi91c3IvaW5jbHVkZS91bmlz
dGQuaCIgMwoKCgoKCiAKZXh0ZXJuIGludCBjbG9zZSAoaW50IF9fZmQpIHRocm93ICgpIDsKCiAK
CmV4dGVybiBzc2l6ZV90IHJlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5
dGVzKSB0aHJvdyAoKSA7CgogCmV4dGVybiBzc2l6ZV90IHdyaXRlIChpbnQgX19mZCwgX19jb25z
dCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbikgdGhyb3cgKCkgOwoKIyAzNDcgIi91c3IvaW5jbHVk
ZS91bmlzdGQuaCIgMwoKCiAKCgoKZXh0ZXJuIGludCBwaXBlIChpbnQgX19waXBlZGVzWzJdKSB0
aHJvdyAoKSA7CgogCgoKCgoKCmV4dGVybiB1bnNpZ25lZCBpbnQgYWxhcm0gKHVuc2lnbmVkIGlu
dCBfX3NlY29uZHMpIHRocm93ICgpIDsKCiAKCgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCBzbGVl
cCAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgdGhyb3cgKCkgOwoKCiAKCgoKZXh0ZXJuIF9fdXNl
Y29uZHNfdCB1YWxhcm0gKF9fdXNlY29uZHNfdCBfX3ZhbHVlLCBfX3VzZWNvbmRzX3QgX19pbnRl
cnZhbCkKICAgICB0aHJvdyAoKSA7CgogCgpleHRlcm4gaW50IHVzbGVlcCAoX191c2Vjb25kc190
IF9fdXNlY29uZHMpIHRocm93ICgpIDsKCgoKIAoKZXh0ZXJuIGludCBwYXVzZSAodm9pZCkgdGhy
b3cgKCkgOwoKCiAKZXh0ZXJuIGludCBjaG93biAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlk
X3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQogICAgIHRocm93ICgpIDsKCgogCmV4dGVybiBp
bnQgZmNob3duIChpbnQgX19mZCwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApIHRo
cm93ICgpIDsKCgogCgpleHRlcm4gaW50IGxjaG93biAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9f
dWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQogICAgIHRocm93ICgpIDsKCgoKIApleHRl
cm4gaW50IGNoZGlyIChfX2NvbnN0IGNoYXIgKl9fcGF0aCkgdGhyb3cgKCkgOwoKCiAKZXh0ZXJu
IGludCBmY2hkaXIgKGludCBfX2ZkKSB0aHJvdyAoKSA7CgoKIAoKCgoKCgpleHRlcm4gY2hhciAq
Z2V0Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCkgOwoKCgoKCgoKCgog
CgoKZXh0ZXJuIGNoYXIgKmdldHdkIChjaGFyICpfX2J1ZikgdGhyb3cgKCkgOwoKCgogCmV4dGVy
biBpbnQgZHVwIChpbnQgX19mZCkgdGhyb3cgKCkgOwoKIApleHRlcm4gaW50IGR1cDIgKGludCBf
X2ZkLCBpbnQgX19mZDIpIHRocm93ICgpIDsKCiAKZXh0ZXJuIGNoYXIgKipfX2Vudmlyb247CgoK
CgoKIAoKZXh0ZXJuIGludCBleGVjdmUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2Nv
bnN0IF9fYXJndltdLAoJCSAgIGNoYXIgKl9fY29uc3QgX19lbnZwW10pIHRocm93ICgpIDsKCgoK
CgoKCgoKIApleHRlcm4gaW50IGV4ZWN2IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19j
b25zdCBfX2FyZ3ZbXSkgdGhyb3cgKCkgOwoKIAoKZXh0ZXJuIGludCBleGVjbGUgKF9fY29uc3Qg
Y2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pIHRocm93ICgpIDsKCiAKCmV4
dGVybiBpbnQgZXhlY2wgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJn
LCAuLi4pIHRocm93ICgpIDsKCiAKCmV4dGVybiBpbnQgZXhlY3ZwIChfX2NvbnN0IGNoYXIgKl9f
ZmlsZSwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgdGhyb3cgKCkgOwoKIAoKCmV4dGVybiBpbnQg
ZXhlY2xwIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSB0
aHJvdyAoKSA7CgoKCiAKZXh0ZXJuIGludCBuaWNlIChpbnQgX19pbmMpIHRocm93ICgpIDsKCgoK
IApleHRlcm4gdm9pZCBfZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Jl
dHVybl9fKSk7CgoKIAoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKZW51bQogIHsKICAgIF9QQ19MSU5LX01BWCwKCiAgICBf
UENfTUFYX0NBTk9OLAoKICAgIF9QQ19NQVhfSU5QVVQsCgogICAgX1BDX05BTUVfTUFYLAoKICAg
IF9QQ19QQVRIX01BWCwKCiAgICBfUENfUElQRV9CVUYsCgogICAgX1BDX0NIT1dOX1JFU1RSSUNU
RUQsCgogICAgX1BDX05PX1RSVU5DLAoKICAgIF9QQ19WRElTQUJMRSwKCiAgICBfUENfU1lOQ19J
TywKCiAgICBfUENfQVNZTkNfSU8sCgogICAgX1BDX1BSSU9fSU8sCgogICAgX1BDX1NPQ0tfTUFY
QlVGLAoKICAgIF9QQ19GSUxFU0laRUJJVFMsCgogICAgX1BDX1JFQ19JTkNSX1hGRVJfU0laRSwK
CiAgICBfUENfUkVDX01BWF9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19NSU5fWEZFUl9TSVpFLAoK
ICAgIF9QQ19SRUNfWEZFUl9BTElHTiwKCiAgICBfUENfQUxMT0NfU0laRV9NSU4sCgogICAgX1BD
X1NZTUxJTktfTUFYCgogIH07CgogCmVudW0KICB7CiAgICBfU0NfQVJHX01BWCwKCiAgICBfU0Nf
Q0hJTERfTUFYLAoKICAgIF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBTX01BWCwKCiAgICBf
U0NfT1BFTl9NQVgsCgogICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1RaTkFNRV9NQVgsCgog
ICAgX1NDX0pPQl9DT05UUk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgogICAgX1NDX1JFQUxUSU1F
X1NJR05BTFMsCgogICAgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RJTUVSUywK
CiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLAoKICAgIF9TQ19QUklPUklUSVpFRF9JTywKCiAgICBf
U0NfU1lOQ0hST05JWkVEX0lPLAoKICAgIF9TQ19GU1lOQywKCiAgICBfU0NfTUFQUEVEX0ZJTEVT
LAoKICAgIF9TQ19NRU1MT0NLLAoKICAgIF9TQ19NRU1MT0NLX1JBTkdFLAoKICAgIF9TQ19NRU1P
UllfUFJPVEVDVElPTiwKCiAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAoKICAgIF9TQ19TRU1BUEhP
UkVTLAoKICAgIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1NDX0FJT19MSVNUSU9f
TUFYLAoKICAgIF9TQ19BSU9fTUFYLAoKICAgIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgsCgogICAg
X1NDX0RFTEFZVElNRVJfTUFYLAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCiAgICBfU0NfTVFfUFJJ
T19NQVgsCgogICAgX1NDX1ZFUlNJT04sCgogICAgX1NDX1BBR0VTSVpFLAoKCiAgICBfU0NfUlRT
SUdfTUFYLAoKICAgIF9TQ19TRU1fTlNFTVNfTUFYLAoKICAgIF9TQ19TRU1fVkFMVUVfTUFYLAoK
ICAgIF9TQ19TSUdRVUVVRV9NQVgsCgogICAgX1NDX1RJTUVSX01BWCwKCgogICAgIAoKICAgIF9T
Q19CQ19CQVNFX01BWCwKCiAgICBfU0NfQkNfRElNX01BWCwKCiAgICBfU0NfQkNfU0NBTEVfTUFY
LAoKICAgIF9TQ19CQ19TVFJJTkdfTUFYLAoKICAgIF9TQ19DT0xMX1dFSUdIVFNfTUFYLAoKICAg
IF9TQ19FUVVJVl9DTEFTU19NQVgsCgogICAgX1NDX0VYUFJfTkVTVF9NQVgsCgogICAgX1NDX0xJ
TkVfTUFYLAoKICAgIF9TQ19SRV9EVVBfTUFYLAoKICAgIF9TQ19DSEFSQ0xBU1NfTkFNRV9NQVgs
CgoKICAgIF9TQ18yX1ZFUlNJT04sCgogICAgX1NDXzJfQ19CSU5ELAoKICAgIF9TQ18yX0NfREVW
LAoKICAgIF9TQ18yX0ZPUlRfREVWLAoKICAgIF9TQ18yX0ZPUlRfUlVOLAoKICAgIF9TQ18yX1NX
X0RFViwKCiAgICBfU0NfMl9MT0NBTEVERUYsCgoKICAgIF9TQ19QSUksCgogICAgX1NDX1BJSV9Y
VEksCgogICAgX1NDX1BJSV9TT0NLRVQsCgogICAgX1NDX1BJSV9JTlRFUk5FVCwKCiAgICBfU0Nf
UElJX09TSSwKCiAgICBfU0NfUE9MTCwKCiAgICBfU0NfU0VMRUNULAoKICAgIF9TQ19VSU9fTUFY
SU9WLAoKICAgIF9TQ19JT1ZfTUFYID0gX1NDX1VJT19NQVhJT1YgLAoKICAgIF9TQ19QSUlfSU5U
RVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0sCgogICAgX1NDX1BJSV9P
U0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19QSUlfT1NJX00sCgogICAg
X1NDX1RfSU9WX01BWCwKCgogICAgIAogICAgX1NDX1RIUkVBRFMsCgogICAgX1NDX1RIUkVBRF9T
QUZFX0ZVTkNUSU9OUywKCiAgICBfU0NfR0VUR1JfUl9TSVpFX01BWCwKCiAgICBfU0NfR0VUUFdf
Ul9TSVpFX01BWCwKCiAgICBfU0NfTE9HSU5fTkFNRV9NQVgsCgogICAgX1NDX1RUWV9OQU1FX01B
WCwKCiAgICBfU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUywKCiAgICBfU0NfVEhSRUFE
X0tFWVNfTUFYLAoKICAgIF9TQ19USFJFQURfU1RBQ0tfTUlOLAoKICAgIF9TQ19USFJFQURfVEhS
RUFEU19NQVgsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiwKCiAgICBfU0NfVEhSRUFE
X0FUVFJfU1RBQ0tTSVpFLAoKICAgIF9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElORywKCiAg
ICBfU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCwKCiAgICBfU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCwK
CiAgICBfU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVELAoKCiAgICBfU0NfTlBST0NFU1NPUlNfQ09O
RiwKCiAgICBfU0NfTlBST0NFU1NPUlNfT05MTiwKCiAgICBfU0NfUEhZU19QQUdFUywKCiAgICBf
U0NfQVZQSFlTX1BBR0VTLAoKICAgIF9TQ19BVEVYSVRfTUFYLAoKICAgIF9TQ19QQVNTX01BWCwK
CgogICAgX1NDX1hPUEVOX1ZFUlNJT04sCgogICAgX1NDX1hPUEVOX1hDVV9WRVJTSU9OLAoKICAg
IF9TQ19YT1BFTl9VTklYLAoKICAgIF9TQ19YT1BFTl9DUllQVCwKCiAgICBfU0NfWE9QRU5fRU5I
X0kxOE4sCgogICAgX1NDX1hPUEVOX1NITSwKCgogICAgX1NDXzJfQ0hBUl9URVJNLAoKICAgIF9T
Q18yX0NfVkVSU0lPTiwKCiAgICBfU0NfMl9VUEUsCgoKICAgIF9TQ19YT1BFTl9YUEcyLAoKICAg
IF9TQ19YT1BFTl9YUEczLAoKICAgIF9TQ19YT1BFTl9YUEc0LAoKCiAgICBfU0NfQ0hBUl9CSVQs
CgogICAgX1NDX0NIQVJfTUFYLAoKICAgIF9TQ19DSEFSX01JTiwKCiAgICBfU0NfSU5UX01BWCwK
CiAgICBfU0NfSU5UX01JTiwKCiAgICBfU0NfTE9OR19CSVQsCgogICAgX1NDX1dPUkRfQklULAoK
ICAgIF9TQ19NQl9MRU5fTUFYLAoKICAgIF9TQ19OWkVSTywKCiAgICBfU0NfU1NJWkVfTUFYLAoK
ICAgIF9TQ19TQ0hBUl9NQVgsCgogICAgX1NDX1NDSEFSX01JTiwKCiAgICBfU0NfU0hSVF9NQVgs
CgogICAgX1NDX1NIUlRfTUlOLAoKICAgIF9TQ19VQ0hBUl9NQVgsCgogICAgX1NDX1VJTlRfTUFY
LAoKICAgIF9TQ19VTE9OR19NQVgsCgogICAgX1NDX1VTSFJUX01BWCwKCgogICAgX1NDX05MX0FS
R01BWCwKCiAgICBfU0NfTkxfTEFOR01BWCwKCiAgICBfU0NfTkxfTVNHTUFYLAoKICAgIF9TQ19O
TF9OTUFYLAoKICAgIF9TQ19OTF9TRVRNQVgsCgogICAgX1NDX05MX1RFWFRNQVgsCgoKICAgIF9T
Q19YQlM1X0lMUDMyX09GRjMyLAoKICAgIF9TQ19YQlM1X0lMUDMyX09GRkJJRywKCiAgICBfU0Nf
WEJTNV9MUDY0X09GRjY0LAoKICAgIF9TQ19YQlM1X0xQQklHX09GRkJJRywKCgogICAgX1NDX1hP
UEVOX0xFR0FDWSwKCiAgICBfU0NfWE9QRU5fUkVBTFRJTUUsCgogICAgX1NDX1hPUEVOX1JFQUxU
SU1FX1RIUkVBRFMsCgoKICAgIF9TQ19BRFZJU09SWV9JTkZPLAoKICAgIF9TQ19CQVJSSUVSUywK
CiAgICBfU0NfQkFTRSwKCiAgICBfU0NfQ19MQU5HX1NVUFBPUlQsCgogICAgX1NDX0NfTEFOR19T
VVBQT1JUX1IsCgogICAgX1NDX0NMT0NLX1NFTEVDVElPTiwKCiAgICBfU0NfQ1BVVElNRSwKCiAg
ICBfU0NfVEhSRUFEX0NQVVRJTUUsCgogICAgX1NDX0RFVklDRV9JTywKCiAgICBfU0NfREVWSUNF
X1NQRUNJRklDLAoKICAgIF9TQ19ERVZJQ0VfU1BFQ0lGSUNfUiwKCiAgICBfU0NfRkRfTUdNVCwK
CiAgICBfU0NfRklGTywKCiAgICBfU0NfUElQRSwKCiAgICBfU0NfRklMRV9BVFRSSUJVVEVTLAoK
ICAgIF9TQ19GSUxFX0xPQ0tJTkcsCgogICAgX1NDX0ZJTEVfU1lTVEVNLAoKICAgIF9TQ19NT05P
VE9OSUNfQ0xPQ0ssCgogICAgX1NDX01VTFRJX1BST0NFU1MsCgogICAgX1NDX1NJTkdMRV9QUk9D
RVNTLAoKICAgIF9TQ19ORVRXT1JLSU5HLAoKICAgIF9TQ19SRUFERVJfV1JJVEVSX0xPQ0tTLAoK
ICAgIF9TQ19TUElOX0xPQ0tTLAoKICAgIF9TQ19SRUdFWFAsCgogICAgX1NDX1JFR0VYX1ZFUlNJ
T04sCgogICAgX1NDX1NIRUxMLAoKICAgIF9TQ19TSUdOQUxTLAoKICAgIF9TQ19TUEFXTiwKCiAg
ICBfU0NfU1BPUkFESUNfU0VSVkVSLAoKICAgIF9TQ19USFJFQURfU1BPUkFESUNfU0VSVkVSLAoK
ICAgIF9TQ19TWVNURU1fREFUQUJBU0UsCgogICAgX1NDX1NZU1RFTV9EQVRBQkFTRV9SLAoKICAg
IF9TQ19USU1FT1VUUywKCiAgICBfU0NfVFlQRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1NDX1VT
RVJfR1JPVVBTLAoKICAgIF9TQ19VU0VSX0dST1VQU19SLAoKICAgIF9TQ18yX1BCUywKCiAgICBf
U0NfMl9QQlNfQUNDT1VOVElORywKCiAgICBfU0NfMl9QQlNfTE9DQVRFLAoKICAgIF9TQ18yX1BC
U19NRVNTQUdFLAoKICAgIF9TQ18yX1BCU19UUkFDSywKCiAgICBfU0NfU1lNTE9PUF9NQVgsCgog
ICAgX1NDX1NUUkVBTVMsCgogICAgX1NDXzJfUEJTX0NIRUNLUE9JTlQsCgoKICAgIF9TQ19WNl9J
TFAzMl9PRkYzMiwKCiAgICBfU0NfVjZfSUxQMzJfT0ZGQklHLAoKICAgIF9TQ19WNl9MUDY0X09G
RjY0LAoKICAgIF9TQ19WNl9MUEJJR19PRkZCSUcsCgoKICAgIF9TQ19IT1NUX05BTUVfTUFYLAoK
ICAgIF9TQ19UUkFDRSwKCiAgICBfU0NfVFJBQ0VfRVZFTlRfRklMVEVSLAoKICAgIF9TQ19UUkFD
RV9JTkhFUklULAoKICAgIF9TQ19UUkFDRV9MT0cKCiAgfTsKCgoKCiAKZW51bQogIHsKICAgIF9D
U19QQVRILAkJCSAKCgojIDQ5MiAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMwoKCiMg
NTI3ICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCgojIDU2MSAiL3Vzci9pbmNsdWRl
L2JpdHMvY29uZm5hbWUuaCIgMwoKCiAgICBfQ1NfVjZfV0lEVEhfUkVTVFJJQ1RFRF9FTlZTCgog
IH07CgojIDUwMCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgogCmV4dGVybiBsb25nIGlu
dCBwYXRoY29uZiAoX19jb25zdCBjaGFyICpfX3BhdGgsIGludCBfX25hbWUpIHRocm93ICgpIDsK
CiAKZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29uZiAoaW50IF9fZmQsIGludCBfX25hbWUpIHRocm93
ICgpIDsKCiAKZXh0ZXJuIGxvbmcgaW50IHN5c2NvbmYgKGludCBfX25hbWUpIHRocm93ICgpICBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIApleHRlcm4gc2l6ZV90IGNvbmZzdHIgKGlu
dCBfX25hbWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpIDsKCgoKIApleHRl
cm4gX19waWRfdCBnZXRwaWQgKHZvaWQpIHRocm93ICgpIDsKCiAKZXh0ZXJuIF9fcGlkX3QgZ2V0
cHBpZCAodm9pZCkgdGhyb3cgKCkgOwoKIAoKCmV4dGVybiBfX3BpZF90IGdldHBncnAgKHZvaWQp
IHRocm93ICgpIDsKCgoKCgoKCgogCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAoX19waWRfdCBf
X3BpZCkgdGhyb3cgKCkgOwoKCgoKCiAKCgpleHRlcm4gaW50IHNldHBnaWQgKF9fcGlkX3QgX19w
aWQsIF9fcGlkX3QgX19wZ2lkKSB0aHJvdyAoKSA7CgoKIAoKCgoKCgoKCgoKCiAKCmV4dGVybiBp
bnQgc2V0cGdycCAodm9pZCkgdGhyb3cgKCkgOwoKIyA1NzQgIi91c3IvaW5jbHVkZS91bmlzdGQu
aCIgMwoKCgogCgoKZXh0ZXJuIF9fcGlkX3Qgc2V0c2lkICh2b2lkKSB0aHJvdyAoKSA7CgoKCgoK
CiAKZXh0ZXJuIF9fdWlkX3QgZ2V0dWlkICh2b2lkKSB0aHJvdyAoKSA7CgogCmV4dGVybiBfX3Vp
ZF90IGdldGV1aWQgKHZvaWQpIHRocm93ICgpIDsKCiAKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2
b2lkKSB0aHJvdyAoKSA7CgogCmV4dGVybiBfX2dpZF90IGdldGVnaWQgKHZvaWQpIHRocm93ICgp
IDsKCiAKCgpleHRlcm4gaW50IGdldGdyb3VwcyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3Rb
XSkgdGhyb3cgKCkgOwoKCgoKCgogCgoKCmV4dGVybiBpbnQgc2V0dWlkIChfX3VpZF90IF9fdWlk
KSB0aHJvdyAoKSA7CgoKIAoKZXh0ZXJuIGludCBzZXRyZXVpZCAoX191aWRfdCBfX3J1aWQsIF9f
dWlkX3QgX19ldWlkKSB0aHJvdyAoKSA7CgoKCiAKZXh0ZXJuIGludCBzZXRldWlkIChfX3VpZF90
IF9fdWlkKSB0aHJvdyAoKSA7CgoKIAoKCgpleHRlcm4gaW50IHNldGdpZCAoX19naWRfdCBfX2dp
ZCkgdGhyb3cgKCkgOwoKCiAKCmV4dGVybiBpbnQgc2V0cmVnaWQgKF9fZ2lkX3QgX19yZ2lkLCBf
X2dpZF90IF9fZWdpZCkgdGhyb3cgKCkgOwoKCgogCmV4dGVybiBpbnQgc2V0ZWdpZCAoX19naWRf
dCBfX2dpZCkgdGhyb3cgKCkgOwoKCgogCgoKZXh0ZXJuIF9fcGlkX3QgZm9yayAodm9pZCkgdGhy
b3cgKCkgOwoKCiAKCgoKZXh0ZXJuIF9fcGlkX3QgdmZvcmsgKHZvaWQpIHRocm93ICgpIDsKCgoK
IAoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUgKGludCBfX2ZkKSB0aHJvdyAoKSA7CgogCgpleHRlcm4g
aW50IHR0eW5hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIHRo
cm93ICgpIDsKCiAKCmV4dGVybiBpbnQgaXNhdHR5IChpbnQgX19mZCkgdGhyb3cgKCkgOwoKCgog
CgpleHRlcm4gaW50IHR0eXNsb3QgKHZvaWQpIHRocm93ICgpIDsKCgoKIApleHRlcm4gaW50IGxp
bmsgKF9fY29uc3QgY2hhciAqX19mcm9tLCBfX2NvbnN0IGNoYXIgKl9fdG8pIHRocm93ICgpIDsK
CgogCmV4dGVybiBpbnQgc3ltbGluayAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hh
ciAqX190bykgdGhyb3cgKCkgOwoKIAoKCmV4dGVybiBpbnQgcmVhZGxpbmsgKF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX3BhdGgsIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCgkJICAgICBzaXpl
X3QgX19sZW4pIHRocm93ICgpIDsKCgogCmV4dGVybiBpbnQgdW5saW5rIChfX2NvbnN0IGNoYXIg
Kl9fbmFtZSkgdGhyb3cgKCkgOwoKIApleHRlcm4gaW50IHJtZGlyIChfX2NvbnN0IGNoYXIgKl9f
cGF0aCkgdGhyb3cgKCkgOwoKCiAKZXh0ZXJuIF9fcGlkX3QgdGNnZXRwZ3JwIChpbnQgX19mZCkg
dGhyb3cgKCkgOwoKIApleHRlcm4gaW50IHRjc2V0cGdycCAoaW50IF9fZmQsIF9fcGlkX3QgX19w
Z3JwX2lkKSB0aHJvdyAoKSA7CgoKIApleHRlcm4gY2hhciAqZ2V0bG9naW4gKHZvaWQpIHRocm93
ICgpIDsKCgoKCgoKCgogCmV4dGVybiBpbnQgc2V0bG9naW4gKF9fY29uc3QgY2hhciAqX19uYW1l
KSB0aHJvdyAoKSA7CgoKCgogCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2dldG9wdC5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKIAoKCgoK
CmV4dGVybiBjaGFyICpvcHRhcmc7CgogCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBvcHRpbmQ7Cgog
CgoKZXh0ZXJuIGludCBvcHRlcnI7CgogCgpleHRlcm4gaW50IG9wdG9wdDsKCiMgMTEzICIvdXNy
L2luY2x1ZGUvZ2V0b3B0LmgiIDMKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCmV4
dGVybiBpbnQgZ2V0b3B0IChpbnQgX19fYXJnYywgY2hhciAqY29uc3QgKl9fX2FyZ3YsIGNvbnN0
IGNoYXIgKl9fc2hvcnRvcHRzKTsKCgoKCiMgMTYzICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMK
CiMgMTcyICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMKCgoKfQoKCiAKCgoKIyA3MjYgIi91c3Iv
aW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKCgoKIAoKCmV4dGVybiBpbnQgZ2V0aG9zdG5hbWUgKGNo
YXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKSA7CgoKCgogCgpleHRlcm4gaW50IHNl
dGhvc3RuYW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSB0aHJvdyAoKSA7
CgogCgpleHRlcm4gaW50IHNldGhvc3RpZCAobG9uZyBpbnQgX19pZCkgdGhyb3cgKCkgOwoKCiAK
CgpleHRlcm4gaW50IGdldGRvbWFpbm5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSB0
aHJvdyAoKSA7CmV4dGVybiBpbnQgc2V0ZG9tYWlubmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUs
IHNpemVfdCBfX2xlbikgdGhyb3cgKCkgOwoKCiAKCgpleHRlcm4gaW50IHZoYW5ndXAgKHZvaWQp
IHRocm93ICgpIDsKCiAKZXh0ZXJuIGludCByZXZva2UgKF9fY29uc3QgY2hhciAqX19maWxlKSB0
aHJvdyAoKSA7CgoKIAoKCgoKZXh0ZXJuIGludCBwcm9maWwgKHVuc2lnbmVkIHNob3J0IGludCAq
X19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXplLAoJCSAgIHNpemVfdCBfX29mZnNldCwgdW5z
aWduZWQgaW50IF9fc2NhbGUpIHRocm93ICgpIDsKCgogCgoKZXh0ZXJuIGludCBhY2N0IChfX2Nv
bnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCkgOwoKCiAKZXh0ZXJuIGNoYXIgKmdldHVzZXJzaGVs
bCAodm9pZCkgdGhyb3cgKCkgOwpleHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgKHZvaWQpIHRocm93
ICgpIDsgIApleHRlcm4gdm9pZCBzZXR1c2Vyc2hlbGwgKHZvaWQpIHRocm93ICgpIDsgIAoKCiAK
CgpleHRlcm4gaW50IGRhZW1vbiAoaW50IF9fbm9jaGRpciwgaW50IF9fbm9jbG9zZSkgdGhyb3cg
KCkgOwoKCgoKIAoKZXh0ZXJuIGludCBjaHJvb3QgKF9fY29uc3QgY2hhciAqX19wYXRoKSB0aHJv
dyAoKSA7CgogCgpleHRlcm4gY2hhciAqZ2V0cGFzcyAoX19jb25zdCBjaGFyICpfX3Byb21wdCkg
dGhyb3cgKCkgOwoKCgoKIApleHRlcm4gaW50IGZzeW5jIChpbnQgX19mZCkgdGhyb3cgKCkgOwoK
CgoKCiAKZXh0ZXJuIGxvbmcgaW50IGdldGhvc3RpZCAodm9pZCkgdGhyb3cgKCkgOwoKIApleHRl
cm4gdm9pZCBzeW5jICh2b2lkKSB0aHJvdyAoKSA7CgoKIAoKZXh0ZXJuIGludCBnZXRwYWdlc2l6
ZSAodm9pZCkgIHRocm93ICgpICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIAoKZXh0
ZXJuIGludCB0cnVuY2F0ZSAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fb2ZmX3QgX19sZW5ndGgp
IHRocm93ICgpIDsKIyA4MzQgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoKCgoKCiAKCmV4dGVy
biBpbnQgZnRydW5jYXRlIChpbnQgX19mZCwgX19vZmZfdCBfX2xlbmd0aCkgdGhyb3cgKCkgOwoK
CgoKCgoKCgoKCgoKIAoKZXh0ZXJuIGludCBnZXRkdGFibGVzaXplICh2b2lkKSB0aHJvdyAoKSA7
CgoKCgoKCiAKCmV4dGVybiBpbnQgYnJrICh2b2lkICpfX2FkZHIpIHRocm93ICgpIDsKCiAKCgoK
ZXh0ZXJuIHZvaWQgKnNicmsgKGludHB0cl90IF9fZGVsdGEpIHRocm93ICgpIDsKCgoKCiAKCgoK
CgoKCgoKZXh0ZXJuIGxvbmcgaW50IHN5c2NhbGwgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgdGhy
b3cgKCkgOwoKCgoKIyA5MTkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoKCgojIDkzMyAiL3Vz
ci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoKCiAKCmV4dGVybiBpbnQgZmRhdGFzeW5jIChpbnQgX19m
aWxkZXMpIHRocm93ICgpIDsKCgoKIAoKIyA5NTkgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoK
CgogCgoKCgoKCgoKIAoKIAoKCgoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrICh2b2lk
ICgqX19wcmVwYXJlKSAodm9pZCksCgkJCSAgIHZvaWQgKCpfX3BhcmVudCkgKHZvaWQpLAoJCQkg
ICB2b2lkICgqX19jaGlsZCkgKHZvaWQpKSB0aHJvdyAoKSA7CgoKfSAKCgojIDIzICIvdXNyL2xv
Y2FsL2luY2x1ZGUvYWxsZWdyby9wbGF0Zm9ybS9hbHVjZmcuaCIgMiAzCgoKIAoKCgoKCgoKCgoK
CgogCgoKCgoKIAojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL3BsYXRmb3JtL2FsdW5p
eGFjLmgiIDEgMwogCiAKIAoKCiAKCgogCgoKIAoKCiAKIAoKIAoKCiAKCgogCiAKCiAKCgogCgoK
IAoKCiAKCgogCiAKCiAKIAoKIAoKCiAKIAoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAK
CgogCiAKCiAKIAoKIAoKCiAKIAoKIAoKCiAKCgoKIAoKCiAKCgogCiAKCiAKCgogCgoKIAogCgog
CgoKIAoKCiAKCgogCgoKIAogCgogCgoKIAogCgogCgoKIAoKCiAKIAoKIAogCgogCiAKCiAKIAoK
IAogCgogCiAKCiAKIAoKIAogCgogCiAKCiAKCgogCiAKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoK
CiAKCgogCgoKIAogCgogCgogCgogCiAKCiAKCiAKCiAKIAojIDQ1ICIvdXNyL2xvY2FsL2luY2x1
ZGUvYWxsZWdyby9wbGF0Zm9ybS9hbHVjZmcuaCIgMiAzCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoj
IDQ5ICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9pbnRlcm5hbC9hbGNvbmZpZy5oIiAyIDMK
CiAgIAoKCgoKCiAKCiAgIAoKICAgCiAgICAgIAogICAgICAgICAKICAgICAgCgoKICAgCgogICAK
CiAgIAogICAgICAKICAgCgogICAKCgoKCgoKCiAgICAgIAogICAKCiAgIAogICAgICAKICAgICAg
ICAgCiAgICAgIAoKCiAgIAogICAKICAgCiAgICAgIAogICAKCiAgIAogICAgICAKICAgCgogICAK
ICAgICAgCiAgIAoKCgoKIAoKICAgCiAgIAoKCgoKIAoKICAgCiAgIAogICAKICAgCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogICAKCgoKICAgCgoKCiAgIAoKCgoKCgoKICAgCgoKCiAgIAoKCgoK
CgoKICAgCgoKCiAKCiAgIAogICAKICAgCiAgIAogICAKICAgCiAgIAoKCgogCgogICAKCgoKCgoK
ICAgCiAgIAoKCgogCgogICAKICAgCiAgIAogICAKICAgCiAgIAoKCgogCgogICAgaW50ICAgIF9h
bGVtdV9zdHJpY21wICAgIChjb25zdCAgY2hhciAqczEsIGNvbnN0ICBjaGFyICpzMikgIDsKICAg
CgoKCiAgICBjaGFyICogICAgX2FsZW11X3N0cmx3ciAgICAoY2hhciAqc3RyaW5nKSAgOwogICAK
CgoKICAgIGNoYXIgKiAgICBfYWxlbXVfc3RydXByICAgIChjaGFyICpzdHJpbmcpICA7CiAgIAoK
CgoKCgoKCiAKCiAgIAoKCgogCgogICAKICAgCiAgIAogICAKICAgCiAgIAogICAKCgoKIAoKICAg
CgoKCiAgIAogICAKICAgCiAgIAoKICAgCiAgIAogICAKICAgCgogICAKCiAgICAgIHN0YXRpYyBp
bmxpbmUgIHZvaWQgICAgYm1wX3dyaXRlMjQgICAgKHVuc2lnbmVkIGxvbmcgYWRkciwgaW50IGMp
ICAgCiAgICAgIHsKCSB1bnNpZ25lZCBjaGFyICpwID0gKHVuc2lnbmVkIGNoYXIgKilhZGRyOwoK
CSBwWzBdID0gYyAmIDB4RkY7CgkgcFsxXSA9IChjPj44KSAmIDB4RkY7CgkgcFsyXSA9IChjPj4x
NikgJiAweEZGOwogICAgICB9ICAKCiAgICAgIHN0YXRpYyBpbmxpbmUgIGludCAgICBibXBfcmVh
ZDI0ICAgICh1bnNpZ25lZCBsb25nIGFkZHIpICAgCiAgICAgIHsKCSB1bnNpZ25lZCBjaGFyICpw
ID0gKHVuc2lnbmVkIGNoYXIgKilhZGRyOwoJIGludCBjOwoKCSBjID0gcFswXTsKCSBjIHw9IChp
bnQpcFsxXSA8PCA4OwoJIGMgfD0gKGludClwWzJdIDw8IDE2OwoKCSByZXR1cm4gYzsKICAgICAg
fSAgCgogICAKIyAzMTkgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL2ludGVybmFsL2FsY29u
ZmlnLmgiIDMKCgoKCgogCgoKCgoKIyAzNiAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vYmFz
ZS5oIiAyIDMKCgoKCgoKCgoKIAogCiAKCgogICAKICAgCgoKCgoKICAgICAKCgoKICAgICAKCgog
ICAgIAoKCgoKCgoKZXh0ZXJuICBpbnQgKiAgICBhbGxlZ3JvX2Vycm5vICA7Cgp0eXBlZGVmIHN0
cnVjdCBfRFJJVkVSX0lORk8gICAgICAgICAgCnsKICAgaW50IGlkOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICB2b2lkICpkcml2ZXI7ICAgICAgICAgICAgICAgICAgICAgCiAgIGludCBh
dXRvZGV0ZWN0OyAgICAgICAgICAgICAgICAgICAKfSBfRFJJVkVSX0lORk87CgoKICAgfQoKCgoK
CiMgMjcgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2FsbGVncm8vc3lzdGVtLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAg
IGV4dGVybiAiQyIgewoKCgoKc3RydWN0IFJHQjsKc3RydWN0IEJJVE1BUDsKc3RydWN0IEdGWF9W
VEFCTEU7CgoKCmV4dGVybiAgY2hhciAgICBhbGxlZ3JvX2lkIFtdIDsKZXh0ZXJuICBjaGFyICAg
IGFsbGVncm9fZXJyb3IgW10gOwoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAgaW50ICAgIG9z
X3R5cGUgIDsKZXh0ZXJuICBpbnQgICAgb3NfdmVyc2lvbiAgOwpleHRlcm4gIGludCAgICBvc19y
ZXZpc2lvbiAgOwpleHRlcm4gIGludCAgICBvc19tdWx0aXRhc2tpbmcgIDsKCgoKCiBpbnQgICAg
aW5zdGFsbF9hbGxlZ3JvICAgIChpbnQgc3lzdGVtX2lkLCBpbnQgKmVycm5vX3B0ciwgIGludCAg
KCogIGF0ZXhpdF9wdHIgKSAgICggdm9pZCAgKCogIGZ1bmMgKSAgICh2b2lkKSAgKSAgKSAgOwoK
IHZvaWQgICAgYWxsZWdyb19leGl0ICAgICh2b2lkKSAgOwoKIHZvaWQgICAgZ2V0X2V4ZWN1dGFi
bGVfbmFtZSAgICAoY2hhciAqb3V0cHV0LCBpbnQgc2l6ZSkgIDsKICB2b2lkICAgICAgIGFsbGVn
cm9fbWVzc2FnZSAgICAgICAoY29uc3QgIGNoYXIgKm1zZywgLi4uKSAgICBfX2F0dHJpYnV0ZV9f
ICgoZm9ybWF0IChwcmludGYsICAgMSAsICAgMiApKSkgOwoKCiB2b2lkICAgIGNoZWNrX2NwdSAg
ICAodm9pZCkgIDsKCiAKCgoKCgoKCgoKCmV4dGVybiAgY2hhciAgICBjcHVfdmVuZG9yIFtdIDsK
ZXh0ZXJuICBpbnQgICAgY3B1X2ZhbWlseSAgOwpleHRlcm4gIGludCAgICBjcHVfbW9kZWwgIDsK
ZXh0ZXJuICBpbnQgICAgY3B1X2NhcGFiaWxpdGllcyAgOwoKCnR5cGVkZWYgc3RydWN0IFNZU1RF
TV9EUklWRVIKewogICBpbnQgIGlkOwogICBjb25zdCAgY2hhciAqbmFtZTsKICAgY29uc3QgIGNo
YXIgKmRlc2M7CiAgIGNvbnN0ICBjaGFyICphc2NpaV9uYW1lOwogICAgaW50ICAoKiAgaW5pdCAp
ICAgKHZvaWQpICA7CiAgICB2b2lkICAoKiAgZXhpdCApICAgKHZvaWQpICA7CiAgICB2b2lkICAo
KiAgZ2V0X2V4ZWN1dGFibGVfbmFtZSApICAgKGNoYXIgKm91dHB1dCwgaW50IHNpemUpICA7CiAg
ICBpbnQgICgqICBmaW5kX3Jlc291cmNlICkgICAoY2hhciAqZGVzdCwgY29uc3QgIGNoYXIgKnJl
c291cmNlLCBpbnQgc2l6ZSkgIDsKICAgIHZvaWQgICgqICBzZXRfd2luZG93X3RpdGxlICkgICAo
Y29uc3QgIGNoYXIgKm5hbWUpICA7CiAgICBpbnQgICgqICBzZXRfd2luZG93X2Nsb3NlX2J1dHRv
biApICAgKGludCBlbmFibGUpICA7CiAgICB2b2lkICAoKiAgc2V0X3dpbmRvd19jbG9zZV9ob29r
ICkgICAoIHZvaWQgICgqICBwcm9jICkgICAodm9pZCkgICkgIDsKICAgIHZvaWQgICgqICBtZXNz
YWdlICkgICAoY29uc3QgIGNoYXIgKm1zZykgIDsKICAgIHZvaWQgICgqICBhc3NlcnQgKSAgIChj
b25zdCAgY2hhciAqbXNnKSAgOwogICAgdm9pZCAgKCogIHNhdmVfY29uc29sZV9zdGF0ZSApICAg
KHZvaWQpICA7CiAgICB2b2lkICAoKiAgcmVzdG9yZV9jb25zb2xlX3N0YXRlICkgICAodm9pZCkg
IDsKICAgIHN0cnVjdCBCSVRNQVAgKiAgKCogIGNyZWF0ZV9iaXRtYXAgKSAgIChpbnQgY29sb3Jf
ZGVwdGgsIGludCB3aWR0aCwgaW50IGhlaWdodCkgIDsKICAgIHZvaWQgICgqICBjcmVhdGVkX2Jp
dG1hcCApICAgKHN0cnVjdCBCSVRNQVAgKmJtcCkgIDsKICAgIHN0cnVjdCBCSVRNQVAgKiAgKCog
IGNyZWF0ZV9zdWJfYml0bWFwICkgICAoc3RydWN0IEJJVE1BUCAqcGFyZW50LCBpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkgIDsKICAgIHZvaWQgICgqICBjcmVhdGVkX3N1Yl9i
aXRtYXAgKSAgIChzdHJ1Y3QgQklUTUFQICpibXAsIHN0cnVjdCBCSVRNQVAgKnBhcmVudCkgIDsK
ICAgIGludCAgKCogIGRlc3Ryb3lfYml0bWFwICkgICAoc3RydWN0IEJJVE1BUCAqYml0bWFwKSAg
OwogICAgdm9pZCAgKCogIHJlYWRfaGFyZHdhcmVfcGFsZXR0ZSApICAgKHZvaWQpICA7CiAgICB2
b2lkICAoKiAgc2V0X3BhbGV0dGVfcmFuZ2UgKSAgIChjb25zdCAgc3RydWN0IFJHQiAqcCwgaW50
IGZyb20sIGludCB0bywgaW50IHJldHJhY2VzeW5jKSAgOwogICAgc3RydWN0IEdGWF9WVEFCTEUg
KiAgKCogIGdldF92dGFibGUgKSAgIChpbnQgY29sb3JfZGVwdGgpICA7CiAgICBpbnQgICgqICBz
ZXRfZGlzcGxheV9zd2l0Y2hfbW9kZSApICAgKGludCBtb2RlKSAgOwogICAgaW50ICAoKiAgc2V0
X2Rpc3BsYXlfc3dpdGNoX2NhbGxiYWNrICkgICAoaW50IGRpciwgIHZvaWQgICgqICBjYiApICAg
KHZvaWQpICApICA7CiAgICB2b2lkICAoKiAgcmVtb3ZlX2Rpc3BsYXlfc3dpdGNoX2NhbGxiYWNr
ICkgICAoIHZvaWQgICgqICBjYiApICAgKHZvaWQpICApICA7CiAgICB2b2lkICAoKiAgZGlzcGxh
eV9zd2l0Y2hfbG9jayApICAgKGludCBsb2NrLCBpbnQgZm9yZWdyb3VuZCkgIDsKICAgIGludCAg
KCogIGRlc2t0b3BfY29sb3JfZGVwdGggKSAgICh2b2lkKSAgOwogICAgaW50ICAoKiAgZ2V0X2Rl
c2t0b3BfcmVzb2x1dGlvbiApICAgKGludCAqd2lkdGgsIGludCAqaGVpZ2h0KSAgOwogICAgdm9p
ZCAgKCogIHlpZWxkX3RpbWVzbGljZSApICAgKHZvaWQpICA7CiAgICBfRFJJVkVSX0lORk8gKiAg
KCogIGdmeF9kcml2ZXJzICkgICAodm9pZCkgIDsKICAgIF9EUklWRVJfSU5GTyAqICAoKiAgZGln
aV9kcml2ZXJzICkgICAodm9pZCkgIDsKICAgIF9EUklWRVJfSU5GTyAqICAoKiAgbWlkaV9kcml2
ZXJzICkgICAodm9pZCkgIDsKICAgIF9EUklWRVJfSU5GTyAqICAoKiAga2V5Ym9hcmRfZHJpdmVy
cyApICAgKHZvaWQpICA7CiAgICBfRFJJVkVSX0lORk8gKiAgKCogIG1vdXNlX2RyaXZlcnMgKSAg
ICh2b2lkKSAgOwogICAgX0RSSVZFUl9JTkZPICogICgqICBqb3lzdGlja19kcml2ZXJzICkgICAo
dm9pZCkgIDsKICAgIF9EUklWRVJfSU5GTyAqICAoKiAgdGltZXJfZHJpdmVycyApICAgKHZvaWQp
ICA7Cn0gU1lTVEVNX0RSSVZFUjsKCgpleHRlcm4gIFNZU1RFTV9EUklWRVIgICAgc3lzdGVtX25v
bmUgIDsKZXh0ZXJuICBTWVNURU1fRFJJVkVSICogICAgc3lzdGVtX2RyaXZlciAgOwpleHRlcm4g
IF9EUklWRVJfSU5GTyAgICBfc3lzdGVtX2RyaXZlcl9saXN0IFtdIDsKCiMgMSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2FsbGVncm8vaW5saW5lL3N5c3RlbS5pbmwiIDEgMwogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAgIGV4dGVybiAiQyIgewoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8v
ZGVidWcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgZXh0ZXJuICJDIiB7CgoKCgog
dm9pZCAgICBhbF9hc3NlcnQgICAgKGNvbnN0ICBjaGFyICpmaWxlLCBpbnQgbGluZSkgIDsKICB2
b2lkICAgICAgIGFsX3RyYWNlICAgICAgIChjb25zdCAgY2hhciAqbXNnLCAuLi4pICAgIF9fYXR0
cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgICAxICwgICAyICkpKSA7Cgogdm9pZCAgICByZWdp
c3Rlcl9hc3NlcnRfaGFuZGxlciAgICAoIGludCAgKCogIGhhbmRsZXIgKSAgIChjb25zdCAgY2hh
ciAqbXNnKSAgKSAgOwogdm9pZCAgICByZWdpc3Rlcl90cmFjZV9oYW5kbGVyICAgICggaW50ICAo
KiAgaGFuZGxlciApICAgKGNvbnN0ICBjaGFyICptc2cpICApICA7CgoKCgoKCiAgIAogICAKCgoK
ICAgfQoKCgoKCiMgMjYgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL2lubGluZS9zeXN0ZW0u
aW5sIiAyIDMKCgoKc3RhdGljIGlubGluZSAgdm9pZCAgICBzZXRfd2luZG93X3RpdGxlICAgIChj
aGFyICpuYW1lKSAgIAp7CiAgICA7CgogICBpZiAoc3lzdGVtX2RyaXZlci0+c2V0X3dpbmRvd190
aXRsZSkKICAgICAgc3lzdGVtX2RyaXZlci0+c2V0X3dpbmRvd190aXRsZShuYW1lKTsKfSAgCgoK
CgoKCgoKc3RhdGljIGlubGluZSAgaW50ICAgIHNldF93aW5kb3dfY2xvc2VfYnV0dG9uICAgIChp
bnQgZW5hYmxlKSAgIAp7CiAgICA7CgogICBpZiAoc3lzdGVtX2RyaXZlci0+c2V0X3dpbmRvd19j
bG9zZV9idXR0b24pCiAgICAgIHJldHVybiBzeXN0ZW1fZHJpdmVyLT5zZXRfd2luZG93X2Nsb3Nl
X2J1dHRvbihlbmFibGUpOwoKICAgcmV0dXJuIC0xOwp9ICAKCgpzdGF0aWMgaW5saW5lICB2b2lk
ICAgIHNldF93aW5kb3dfY2xvc2VfaG9vayAgICAoIHZvaWQgICgqICBwcm9jICkgICAodm9pZCkg
ICkgICAKewogICAgOwoKICAgaWYgKHN5c3RlbV9kcml2ZXItPnNldF93aW5kb3dfY2xvc2VfaG9v
aykKICAgICAgc3lzdGVtX2RyaXZlci0+c2V0X3dpbmRvd19jbG9zZV9ob29rKHByb2MpOwp9ICAK
CgpzdGF0aWMgaW5saW5lICBpbnQgICAgZGVza3RvcF9jb2xvcl9kZXB0aCAgICAodm9pZCkgICAK
ewogICAgOwoKICAgaWYgKHN5c3RlbV9kcml2ZXItPmRlc2t0b3BfY29sb3JfZGVwdGgpCiAgICAg
IHJldHVybiBzeXN0ZW1fZHJpdmVyLT5kZXNrdG9wX2NvbG9yX2RlcHRoKCk7CiAgIGVsc2UKICAg
ICAgcmV0dXJuIDA7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBnZXRfZGVza3RvcF9yZXNv
bHV0aW9uICAgIChpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkgICAKewogICAgOwoKICAgaWYgKHN5
c3RlbV9kcml2ZXItPmdldF9kZXNrdG9wX3Jlc29sdXRpb24pCiAgICAgIHJldHVybiBzeXN0ZW1f
ZHJpdmVyLT5nZXRfZGVza3RvcF9yZXNvbHV0aW9uKHdpZHRoLCBoZWlnaHQpOwogICBlbHNlCiAg
ICAgIHJldHVybiAtMTsKfSAgCgoKc3RhdGljIGlubGluZSAgdm9pZCAgICB5aWVsZF90aW1lc2xp
Y2UgICAgKHZvaWQpICAgCnsKICAgIDsKCiAgIGlmIChzeXN0ZW1fZHJpdmVyLT55aWVsZF90aW1l
c2xpY2UpCiAgICAgIHN5c3RlbV9kcml2ZXItPnlpZWxkX3RpbWVzbGljZSgpOwp9ICAKCgoKICAg
fQoKCgoKCiMgMTM3ICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9zeXN0ZW0uaCIgMiAzCgoK
CiAgIH0KCgoKCgojIDI5ICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby5oIiAyIDMKCgoKIyAx
ICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby91bmljb2RlLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAgIGV4dGVybiAiQyIgewoKCgoKCgoKCgoKIHZvaWQgICAgc2V0X3Vmb3JtYXQg
ICAgKGludCB0eXBlKSAgOwogaW50ICAgIGdldF91Zm9ybWF0ICAgICh2b2lkKSAgOwogdm9pZCAg
ICByZWdpc3Rlcl91Zm9ybWF0ICAgIChpbnQgdHlwZSwgIGludCAgKCogIHVfZ2V0YyApICAgKGNv
bnN0ICBjaGFyICpzKSAgLCAgaW50ICAoKiAgdV9nZXR4ICkgICAoY2hhciAqKnMpICAsICBpbnQg
ICgqICB1X3NldGMgKSAgIChjaGFyICpzLCBpbnQgYykgICwgIGludCAgKCogIHVfd2lkdGggKSAg
IChjb25zdCAgY2hhciAqcykgICwgIGludCAgKCogIHVfY3dpZHRoICkgICAoaW50IGMpICAsICBp
bnQgICgqICB1X2lzb2sgKSAgIChpbnQgYykgICwgaW50IHVfd2lkdGhfbWF4KSAgOwogdm9pZCAg
ICBzZXRfdWNvZGVwYWdlICAgIChjb25zdCAgdW5zaWduZWQgc2hvcnQgKnRhYmxlLCBjb25zdCAg
dW5zaWduZWQgc2hvcnQgKmV4dHJhcykgIDsKCiBpbnQgICAgbmVlZF91Y29udmVydCAgICAoY29u
c3QgIGNoYXIgKnMsIGludCB0eXBlLCBpbnQgbmV3dHlwZSkgIDsKIGludCAgICB1Y29udmVydF9z
aXplICAgIChjb25zdCAgY2hhciAqcywgaW50IHR5cGUsIGludCBuZXd0eXBlKSAgOwogdm9pZCAg
ICBkb191Y29udmVydCAgICAoY29uc3QgIGNoYXIgKnMsIGludCB0eXBlLCBjaGFyICpidWYsIGlu
dCBuZXd0eXBlLCBpbnQgc2l6ZSkgIDsKIGNoYXIgKiAgICB1Y29udmVydCAgICAoY29uc3QgIGNo
YXIgKnMsIGludCB0eXBlLCBjaGFyICpidWYsIGludCBuZXd0eXBlLCBpbnQgc2l6ZSkgIDsKIGlu
dCAgICB1d2lkdGhfbWF4ICAgIChpbnQgdHlwZSkgIDsKCgoKCgoKZXh0ZXJuICBjaGFyICAgIGVt
cHR5X3N0cmluZyBbXSA7CgpleHRlcm4gIGludCAgKCogIHVnZXRjICkgICAoY29uc3QgIGNoYXIg
KnMpICA7CmV4dGVybiAgaW50ICAoKiAgdWdldHggKSAgIChjaGFyICoqcykgIDsKZXh0ZXJuICBp
bnQgICgqICB1Z2V0eGMgKSAgIChjb25zdCAgY2hhciAqKnMpICA7CmV4dGVybiAgaW50ICAoKiAg
dXNldGMgKSAgIChjaGFyICpzLCBpbnQgYykgIDsKZXh0ZXJuICBpbnQgICgqICB1d2lkdGggKSAg
IChjb25zdCAgY2hhciAqcykgIDsKZXh0ZXJuICBpbnQgICgqICB1Y3dpZHRoICkgICAoaW50IGMp
ICA7CmV4dGVybiAgaW50ICAoKiAgdWlzb2sgKSAgIChpbnQgYykgIDsKIGludCAgICB1b2Zmc2V0
ICAgIChjb25zdCAgY2hhciAqcywgaW50IGluZGV4KSAgOwogaW50ICAgIHVnZXRhdCAgICAoY29u
c3QgIGNoYXIgKnMsIGludCBpbmRleCkgIDsKIGludCAgICB1c2V0YXQgICAgKGNoYXIgKnMsIGlu
dCBpbmRleCwgaW50IGMpICA7CiBpbnQgICAgdWluc2VydCAgICAoY2hhciAqcywgaW50IGluZGV4
LCBpbnQgYykgIDsKIGludCAgICB1cmVtb3ZlICAgIChjaGFyICpzLCBpbnQgaW5kZXgpICA7CiBp
bnQgICAgdXRvbG93ZXIgICAgKGludCBjKSAgOwogaW50ICAgIHV0b3VwcGVyICAgIChpbnQgYykg
IDsKIGludCAgICB1aXNzcGFjZSAgICAoaW50IGMpICA7CiBpbnQgICAgdWlzZGlnaXQgICAgKGlu
dCBjKSAgOwogaW50ICAgIHVzdHJzaXplICAgIChjb25zdCAgY2hhciAqcykgIDsKIGludCAgICB1
c3Ryc2l6ZXogICAgKGNvbnN0ICBjaGFyICpzKSAgOwogY2hhciAqICAgIF91c3RyZHVwICAgIChj
b25zdCAgY2hhciAqc3JjLCAgdm9pZCAqICAoKiAgbWFsbG9jX2Z1bmMgKSAgIChzaXplX3QpICAp
ICA7CiBjaGFyICogICAgdXN0cnpjcHkgICAgKGNoYXIgKmRlc3QsIGludCBzaXplLCBjb25zdCAg
Y2hhciAqc3JjKSAgOwogY2hhciAqICAgIHVzdHJ6Y2F0ICAgIChjaGFyICpkZXN0LCBpbnQgc2l6
ZSwgY29uc3QgIGNoYXIgKnNyYykgIDsKIGludCAgICB1c3RybGVuICAgIChjb25zdCAgY2hhciAq
cykgIDsKIGludCAgICB1c3RyY21wICAgIChjb25zdCAgY2hhciAqczEsIGNvbnN0ICBjaGFyICpz
MikgIDsKIGNoYXIgKiAgICB1c3Ryem5jcHkgICAgKGNoYXIgKmRlc3QsIGludCBzaXplLCBjb25z
dCAgY2hhciAqc3JjLCBpbnQgbikgIDsKIGNoYXIgKiAgICB1c3Ryem5jYXQgICAgKGNoYXIgKmRl
c3QsIGludCBzaXplLCBjb25zdCAgY2hhciAqc3JjLCBpbnQgbikgIDsKIGludCAgICB1c3RybmNt
cCAgICAoY29uc3QgIGNoYXIgKnMxLCBjb25zdCAgY2hhciAqczIsIGludCBuKSAgOwogaW50ICAg
IHVzdHJpY21wICAgIChjb25zdCAgY2hhciAqczEsIGNvbnN0ICBjaGFyICpzMikgIDsKIGNoYXIg
KiAgICB1c3RybHdyICAgIChjaGFyICpzKSAgOwogY2hhciAqICAgIHVzdHJ1cHIgICAgKGNoYXIg
KnMpICA7CiBjaGFyICogICAgdXN0cmNociAgICAoY29uc3QgIGNoYXIgKnMsIGludCBjKSAgOwog
Y2hhciAqICAgIHVzdHJyY2hyICAgIChjb25zdCAgY2hhciAqcywgaW50IGMpICA7CiBjaGFyICog
ICAgdXN0cnN0ciAgICAoY29uc3QgIGNoYXIgKnMxLCBjb25zdCAgY2hhciAqczIpICA7CiBjaGFy
ICogICAgdXN0cnBicmsgICAgKGNvbnN0ICBjaGFyICpzLCBjb25zdCAgY2hhciAqc2V0KSAgOwog
Y2hhciAqICAgIHVzdHJ0b2sgICAgKGNoYXIgKnMsIGNvbnN0ICBjaGFyICpzZXQpICA7CiBjaGFy
ICogICAgdXN0cnRva19yICAgIChjaGFyICpzLCBjb25zdCAgY2hhciAqc2V0LCBjaGFyICoqbGFz
dCkgIDsKIGRvdWJsZSAgICB1YXRvZiAgICAoY29uc3QgIGNoYXIgKnMpICA7CiBsb25nICAgIHVz
dHJ0b2wgICAgKGNvbnN0ICBjaGFyICpzLCBjaGFyICoqZW5kcCwgaW50IGJhc2UpICA7CiBkb3Vi
bGUgICAgdXN0cnRvZCAgICAoY29uc3QgIGNoYXIgKnMsIGNoYXIgKiplbmRwKSAgOwogY29uc3Qg
IGNoYXIgKiAgICB1c3RyZXJyb3IgICAgKGludCBlcnIpICA7CiAgaW50ICAgICAgIHVzenByaW50
ZiAgICAgICAoY2hhciAqYnVmLCBpbnQgc2l6ZSwgY29uc3QgIGNoYXIgKmZvcm1hdCwgLi4uKSAg
ICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsICAgMyAsICAgNCApKSkgOwogaW50ICAg
IHV2c3pwcmludGYgICAgKGNoYXIgKmJ1ZiwgaW50IHNpemUsIGNvbnN0ICBjaGFyICpmb3JtYXQs
IHZhX2xpc3QgYXJncykgIDsKICBpbnQgICAgICAgdXNwcmludGYgICAgICAgKGNoYXIgKmJ1Ziwg
Y29uc3QgIGNoYXIgKmZvcm1hdCwgLi4uKSAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmlu
dGYsICAgMiAsICAgMyApKSkgOwoKCiAgIAoKCgoKCgoKCgogICB9CgoKCgoKIyAzMiAiL3Vzci9s
b2NhbC9pbmNsdWRlL2FsbGVncm8uaCIgMiAzCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxs
ZWdyby9tb3VzZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogICBleHRlcm4gIkMiIHsK
CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBNT1VTRV9EUklWRVIKewogICBpbnQgIGlkOwogICBjb25z
dCAgY2hhciAqbmFtZTsKICAgY29uc3QgIGNoYXIgKmRlc2M7CiAgIGNvbnN0ICBjaGFyICphc2Np
aV9uYW1lOwogICAgaW50ICAoKiAgIGluaXQgKSAgICh2b2lkKSAgOwogICAgdm9pZCAgKCogIGV4
aXQgKSAgICh2b2lkKSAgOwogICAgdm9pZCAgKCogIHBvbGwgKSAgICh2b2lkKSAgOwogICAgdm9p
ZCAgKCogIHRpbWVyX3BvbGwgKSAgICh2b2lkKSAgOwogICAgdm9pZCAgKCogIHBvc2l0aW9uICkg
ICAoaW50IHgsIGludCB5KSAgOwogICAgdm9pZCAgKCogIHNldF9yYW5nZSApICAgKGludCB4MSwg
aW50IHkxLCBpbnQgeDIsIGludCB5MikgIDsKICAgIHZvaWQgICgqICBzZXRfc3BlZWQgKSAgIChp
bnQgeHNwZWVkLCBpbnQgeXNwZWVkKSAgOwogICAgdm9pZCAgKCogIGdldF9taWNrZXlzICkgICAo
aW50ICptaWNrZXl4LCBpbnQgKm1pY2tleXkpICA7CiAgICBpbnQgICgqICAgYW5hbHlzZV9kYXRh
ICkgICAoY29uc3QgIGNoYXIgKmJ1ZmZlciwgaW50IHNpemUpICA7Cn0gTU9VU0VfRFJJVkVSOwoK
CmV4dGVybiAgTU9VU0VfRFJJVkVSICAgIG1vdXNlZHJ2X25vbmUgIDsKZXh0ZXJuICBNT1VTRV9E
UklWRVIgKiAgICBtb3VzZV9kcml2ZXIgIDsKZXh0ZXJuICBfRFJJVkVSX0lORk8gICAgX21vdXNl
X2RyaXZlcl9saXN0IFtdIDsKCiBpbnQgICAgaW5zdGFsbF9tb3VzZSAgICAodm9pZCkgIDsKIHZv
aWQgICAgcmVtb3ZlX21vdXNlICAgICh2b2lkKSAgOwoKIGludCAgICBwb2xsX21vdXNlICAgICh2
b2lkKSAgOwogaW50ICAgIG1vdXNlX25lZWRzX3BvbGwgICAgKHZvaWQpICA7CgpleHRlcm4gIHN0
cnVjdCBCSVRNQVAgKiAgICBtb3VzZV9zcHJpdGUgIDsKZXh0ZXJuICBpbnQgICAgbW91c2VfeF9m
b2N1cyAgOwpleHRlcm4gIGludCAgICBtb3VzZV95X2ZvY3VzICA7CgpleHRlcm4gIHZvbGF0aWxl
IGludCAgICBtb3VzZV94ICA7CmV4dGVybiAgdm9sYXRpbGUgaW50ICAgIG1vdXNlX3kgIDsKZXh0
ZXJuICB2b2xhdGlsZSBpbnQgICAgbW91c2VfeiAgOwpleHRlcm4gIHZvbGF0aWxlIGludCAgICBt
b3VzZV9iICA7CmV4dGVybiAgdm9sYXRpbGUgaW50ICAgIG1vdXNlX3BvcyAgOwoKZXh0ZXJuICB2
b2xhdGlsZSBpbnQgICAgZnJlZXplX21vdXNlX2ZsYWcgIDsKCgoKCgoKCgoKCmV4dGVybiAgdm9p
ZCAgKCogIG1vdXNlX2NhbGxiYWNrICkgICAoaW50IGZsYWdzKSAgOwoKIHZvaWQgICAgc2hvd19t
b3VzZSAgICAoc3RydWN0IEJJVE1BUCAqYm1wKSAgOwogdm9pZCAgICBzY2FyZV9tb3VzZSAgICAo
dm9pZCkgIDsKIHZvaWQgICAgc2NhcmVfbW91c2VfYXJlYSAgICAoaW50IHgsIGludCB5LCBpbnQg
dywgaW50IGgpICA7CiB2b2lkICAgIHVuc2NhcmVfbW91c2UgICAgKHZvaWQpICA7CiB2b2lkICAg
IHBvc2l0aW9uX21vdXNlICAgIChpbnQgeCwgaW50IHkpICA7CiB2b2lkICAgIHBvc2l0aW9uX21v
dXNlX3ogICAgKGludCB6KSAgOwogdm9pZCAgICBzZXRfbW91c2VfcmFuZ2UgICAgKGludCB4MSwg
aW50IHkxLCBpbnQgeDIsIGludCB5MikgIDsKIHZvaWQgICAgc2V0X21vdXNlX3NwZWVkICAgIChp
bnQgeHNwZWVkLCBpbnQgeXNwZWVkKSAgOwogdm9pZCAgICBzZXRfbW91c2Vfc3ByaXRlICAgIChz
dHJ1Y3QgQklUTUFQICpzcHJpdGUpICA7CiB2b2lkICAgIHNldF9tb3VzZV9zcHJpdGVfZm9jdXMg
ICAgKGludCB4LCBpbnQgeSkgIDsKIHZvaWQgICAgZ2V0X21vdXNlX21pY2tleXMgICAgKGludCAq
bWlja2V5eCwgaW50ICptaWNrZXl5KSAgOwoKCiAgIH0KCgoKCgojIDM0ICIvdXNyL2xvY2FsL2lu
Y2x1ZGUvYWxsZWdyby5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vdGlt
ZXIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgZXh0ZXJuICJDIiB7CgoKCgoKCgoK
CgoKdHlwZWRlZiBzdHJ1Y3QgVElNRVJfRFJJVkVSCnsKICAgaW50ICBpZDsKICAgY29uc3QgIGNo
YXIgKm5hbWU7CiAgIGNvbnN0ICBjaGFyICpkZXNjOwogICBjb25zdCAgY2hhciAqYXNjaWlfbmFt
ZTsKICAgIGludCAgKCogICBpbml0ICkgICAodm9pZCkgIDsKICAgIHZvaWQgICgqICBleGl0ICkg
ICAodm9pZCkgIDsKICAgIGludCAgKCogICBpbnN0YWxsX2ludCApICAgKCB2b2lkICAoKiAgcHJv
YyApICAgKHZvaWQpICAsIGxvbmcgc3BlZWQpICA7CiAgICB2b2lkICAoKiAgcmVtb3ZlX2ludCAp
ICAgKCB2b2lkICAoKiAgcHJvYyApICAgKHZvaWQpICApICA7CiAgICBpbnQgICgqICAgaW5zdGFs
bF9wYXJhbV9pbnQgKSAgICggdm9pZCAgKCogIHByb2MgKSAgICh2b2lkICpwYXJhbSkgICwgdm9p
ZCAqcGFyYW0sIGxvbmcgc3BlZWQpICA7CiAgICB2b2lkICAoKiAgcmVtb3ZlX3BhcmFtX2ludCAp
ICAgKCB2b2lkICAoKiAgcHJvYyApICAgKHZvaWQgKnBhcmFtKSAgLCB2b2lkICpwYXJhbSkgIDsK
ICAgIGludCAgKCogICBjYW5fc2ltdWxhdGVfcmV0cmFjZSApICAgKHZvaWQpICA7CiAgICB2b2lk
ICAoKiAgc2ltdWxhdGVfcmV0cmFjZSApICAgKGludCBlbmFibGUpICA7CiAgICB2b2lkICAoKiAg
cmVzdCApICAgKGxvbmcgdGltZSwgIHZvaWQgICgqICBjYWxsYmFjayApICAgKHZvaWQpICApICA7
Cn0gVElNRVJfRFJJVkVSOwoKCmV4dGVybiAgVElNRVJfRFJJVkVSICogICAgdGltZXJfZHJpdmVy
ICA7CmV4dGVybiAgX0RSSVZFUl9JTkZPICAgIF90aW1lcl9kcml2ZXJfbGlzdCBbXSA7CgogaW50
ICAgIGluc3RhbGxfdGltZXIgICAgKHZvaWQpICA7CiB2b2lkICAgIHJlbW92ZV90aW1lciAgICAo
dm9pZCkgIDsKCiBpbnQgICAgaW5zdGFsbF9pbnRfZXggICAgKCB2b2lkICAoKiAgcHJvYyApICAg
KHZvaWQpICAsIGxvbmcgc3BlZWQpICA7CiBpbnQgICAgaW5zdGFsbF9pbnQgICAgKCB2b2lkICAo
KiAgcHJvYyApICAgKHZvaWQpICAsIGxvbmcgc3BlZWQpICA7CiB2b2lkICAgIHJlbW92ZV9pbnQg
ICAgKCB2b2lkICAoKiAgcHJvYyApICAgKHZvaWQpICApICA7CgogaW50ICAgIGluc3RhbGxfcGFy
YW1faW50X2V4ICAgICggdm9pZCAgKCogIHByb2MgKSAgICh2b2lkICpwYXJhbSkgICwgdm9pZCAq
cGFyYW0sIGxvbmcgc3BlZWQpICA7CiBpbnQgICAgaW5zdGFsbF9wYXJhbV9pbnQgICAgKCB2b2lk
ICAoKiAgcHJvYyApICAgKHZvaWQgKnBhcmFtKSAgLCB2b2lkICpwYXJhbSwgbG9uZyBzcGVlZCkg
IDsKIHZvaWQgICAgcmVtb3ZlX3BhcmFtX2ludCAgICAoIHZvaWQgICgqICBwcm9jICkgICAodm9p
ZCAqcGFyYW0pICAsIHZvaWQgKnBhcmFtKSAgOwoKZXh0ZXJuICB2b2xhdGlsZSBpbnQgICAgcmV0
cmFjZV9jb3VudCAgOwpleHRlcm4gIHZvaWQgICgqICByZXRyYWNlX3Byb2MgKSAgICh2b2lkKSAg
OwoKIGludCAgICAgdGltZXJfY2FuX3NpbXVsYXRlX3JldHJhY2UgICAgKHZvaWQpICA7CiB2b2lk
ICAgIHRpbWVyX3NpbXVsYXRlX3JldHJhY2UgICAgKGludCBlbmFibGUpICA7CiBpbnQgICAgIHRp
bWVyX2lzX3VzaW5nX3JldHJhY2UgICAgKHZvaWQpICA7Cgogdm9pZCAgICByZXN0ICAgIChsb25n
IHRpbWUpICA7CiB2b2lkICAgIHJlc3RfY2FsbGJhY2sgICAgKGxvbmcgdGltZSwgIHZvaWQgICgq
ICBjYWxsYmFjayApICAgKHZvaWQpICApICA7CgoKICAgfQoKCgoKIyAzNSAiL3Vzci9sb2NhbC9p
bmNsdWRlL2FsbGVncm8uaCIgMiAzCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL2tl
eWJvYXJkLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgIGV4dGVybiAiQyIgewoKCgoK
dHlwZWRlZiBzdHJ1Y3QgS0VZQk9BUkRfRFJJVkVSCnsKICAgaW50ICBpZDsKICAgY29uc3QgIGNo
YXIgKm5hbWU7CiAgIGNvbnN0ICBjaGFyICpkZXNjOwogICBjb25zdCAgY2hhciAqYXNjaWlfbmFt
ZTsKICAgaW50IGF1dG9yZXBlYXQ7CiAgICBpbnQgICgqICAgaW5pdCApICAgKHZvaWQpICA7CiAg
ICB2b2lkICAoKiAgZXhpdCApICAgKHZvaWQpICA7CiAgICB2b2lkICAoKiAgcG9sbCApICAgKHZv
aWQpICA7CiAgICB2b2lkICAoKiAgc2V0X2xlZHMgKSAgIChpbnQgbGVkcykgIDsKICAgIHZvaWQg
ICgqICBzZXRfcmF0ZSApICAgKGludCBkZWxheSwgaW50IHJhdGUpICA7CiAgICB2b2lkICAoKiAg
d2FpdF9mb3JfaW5wdXQgKSAgICh2b2lkKSAgOwogICAgdm9pZCAgKCogIHN0b3Bfd2FpdGluZ19m
b3JfaW5wdXQgKSAgICh2b2lkKSAgOwogICAgaW50ICAoKiAgIHNjYW5jb2RlX3RvX2FzY2lpICkg
ICAoaW50IHNjYW5jb2RlKSAgOwp9IEtFWUJPQVJEX0RSSVZFUjsKCgpleHRlcm4gIEtFWUJPQVJE
X0RSSVZFUiAqICAgIGtleWJvYXJkX2RyaXZlciAgOwpleHRlcm4gIF9EUklWRVJfSU5GTyAgICBf
a2V5Ym9hcmRfZHJpdmVyX2xpc3QgW10gOwoKIGludCAgICBpbnN0YWxsX2tleWJvYXJkICAgICh2
b2lkKSAgOwogdm9pZCAgICByZW1vdmVfa2V5Ym9hcmQgICAgKHZvaWQpICA7CgogaW50ICAgIHBv
bGxfa2V5Ym9hcmQgICAgKHZvaWQpICA7CiBpbnQgICAga2V5Ym9hcmRfbmVlZHNfcG9sbCAgICAo
dm9pZCkgIDsKCmV4dGVybiAgaW50ICAoKiAga2V5Ym9hcmRfY2FsbGJhY2sgKSAgIChpbnQga2V5
KSAgOwpleHRlcm4gIGludCAgKCogIGtleWJvYXJkX3VjYWxsYmFjayApICAgKGludCBrZXksIGlu
dCAqc2NhbmNvZGUpICA7CmV4dGVybiAgdm9pZCAgKCogIGtleWJvYXJkX2xvd2xldmVsX2NhbGxi
YWNrICkgICAoaW50IHNjYW5jb2RlKSAgOwoKIHZvaWQgICAgaW5zdGFsbF9rZXlib2FyZF9ob29r
cyAgICAoIGludCAgKCogIGtleXByZXNzZWQgKSAgICh2b2lkKSAgLCAgaW50ICAoKiAgcmVhZGtl
eSApICAgKHZvaWQpICApICA7CgpleHRlcm4gIHZvbGF0aWxlIGNoYXIgICAga2V5IFtdIDsKZXh0
ZXJuICB2b2xhdGlsZSBpbnQgICAga2V5X3NoaWZ0cyAgOwoKZXh0ZXJuICBpbnQgICAgdGhyZWVf
ZmluZ2VyX2ZsYWcgIDsKZXh0ZXJuICBpbnQgICAga2V5X2xlZF9mbGFnICA7CgogaW50ICAgIGtl
eXByZXNzZWQgICAgKHZvaWQpICA7CiBpbnQgICAgcmVhZGtleSAgICAodm9pZCkgIDsKIGludCAg
ICB1cmVhZGtleSAgICAoaW50ICpzY2FuY29kZSkgIDsKIHZvaWQgICAgc2ltdWxhdGVfa2V5cHJl
c3MgICAgKGludCBrZXljb2RlKSAgOwogdm9pZCAgICBzaW11bGF0ZV91a2V5cHJlc3MgICAgKGlu
dCBrZXljb2RlLCBpbnQgc2NhbmNvZGUpICA7CiB2b2lkICAgIGNsZWFyX2tleWJ1ZiAgICAodm9p
ZCkgIDsKIHZvaWQgICAgc2V0X2xlZHMgICAgKGludCBsZWRzKSAgOwogdm9pZCAgICBzZXRfa2V5
Ym9hcmRfcmF0ZSAgICAoaW50IGRlbGF5LCBpbnQgcmVwZWF0KSAgOwogaW50ICAgIHNjYW5jb2Rl
X3RvX2FzY2lpICAgIChpbnQgc2NhbmNvZGUpICA7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiAgIH0KCgoKCgojIDM2ICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby5oIiAyIDMKCiMgMSAi
L3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vam95c3RpY2suaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKICAgZXh0ZXJuICJDIiB7CgoKCgoKCgoKCgoKCgoKIAp0eXBlZGVmIHN0cnVjdCBK
T1lTVElDS19BWElTX0lORk8KewogICBpbnQgcG9zOwogICBpbnQgZDEsIGQyOwogICBjb25zdCAg
Y2hhciAqbmFtZTsKfSBKT1lTVElDS19BWElTX0lORk87CgoKIAp0eXBlZGVmIHN0cnVjdCBKT1lT
VElDS19TVElDS19JTkZPCnsKICAgaW50IGZsYWdzOwogICBpbnQgbnVtX2F4aXM7CiAgIEpPWVNU
SUNLX0FYSVNfSU5GTyBheGlzWzMgXTsKICAgY29uc3QgIGNoYXIgKm5hbWU7Cn0gSk9ZU1RJQ0tf
U1RJQ0tfSU5GTzsKCgogCnR5cGVkZWYgc3RydWN0IEpPWVNUSUNLX0JVVFRPTl9JTkZPCnsKICAg
aW50IGI7CiAgIGNvbnN0ICBjaGFyICpuYW1lOwp9IEpPWVNUSUNLX0JVVFRPTl9JTkZPOwoKCiAK
dHlwZWRlZiBzdHJ1Y3QgSk9ZU1RJQ0tfSU5GTwp7CiAgIGludCBmbGFnczsKICAgaW50IG51bV9z
dGlja3M7CiAgIGludCBudW1fYnV0dG9uczsKICAgSk9ZU1RJQ0tfU1RJQ0tfSU5GTyBzdGlja1s1
IF07CiAgIEpPWVNUSUNLX0JVVFRPTl9JTkZPIGJ1dHRvblsxNiBdOwp9IEpPWVNUSUNLX0lORk87
CgoKIAoKCgoKCgoKCgogCgoKCgogCmV4dGVybiAgSk9ZU1RJQ0tfSU5GTyAgICBqb3kgW10gOwpl
eHRlcm4gIGludCAgICBudW1fam95c3RpY2tzICA7CgoKdHlwZWRlZiBzdHJ1Y3QgSk9ZU1RJQ0tf
RFJJVkVSICAgICAgICAgIAp7CiAgIGludCAgaWQ7CiAgIGNvbnN0ICBjaGFyICpuYW1lOwogICBj
b25zdCAgY2hhciAqZGVzYzsKICAgY29uc3QgIGNoYXIgKmFzY2lpX25hbWU7CiAgICBpbnQgICgq
ICBpbml0ICkgICAodm9pZCkgIDsKICAgIHZvaWQgICgqICBleGl0ICkgICAodm9pZCkgIDsKICAg
IGludCAgKCogIHBvbGwgKSAgICh2b2lkKSAgOwogICAgaW50ICAoKiAgc2F2ZV9kYXRhICkgICAo
dm9pZCkgIDsKICAgIGludCAgKCogIGxvYWRfZGF0YSApICAgKHZvaWQpICA7CiAgICBjb25zdCAg
Y2hhciAqICAoKiAgY2FsaWJyYXRlX25hbWUgKSAgIChpbnQgbikgIDsKICAgIGludCAgKCogIGNh
bGlicmF0ZSApICAgKGludCBuKSAgOwp9IEpPWVNUSUNLX0RSSVZFUjsKCgpleHRlcm4gIEpPWVNU
SUNLX0RSSVZFUiAgICBqb3lzdGlja19ub25lICA7CmV4dGVybiAgSk9ZU1RJQ0tfRFJJVkVSICog
ICAgam95c3RpY2tfZHJpdmVyICA7CmV4dGVybiAgX0RSSVZFUl9JTkZPICAgIF9qb3lzdGlja19k
cml2ZXJfbGlzdCBbXSA7CgoKIAoKCgoKCgoKCgoKIGludCAgICBpbnN0YWxsX2pveXN0aWNrICAg
IChpbnQgdHlwZSkgIDsKIHZvaWQgICAgcmVtb3ZlX2pveXN0aWNrICAgICh2b2lkKSAgOwoKIGlu
dCAgICBpbml0aWFsaXNlX2pveXN0aWNrICAgICh2b2lkKSAgOwoKIGludCAgICBwb2xsX2pveXN0
aWNrICAgICh2b2lkKSAgOwoKIGludCAgICBzYXZlX2pveXN0aWNrX2RhdGEgICAgKGNvbnN0ICBj
aGFyICpmaWxlbmFtZSkgIDsKIGludCAgICBsb2FkX2pveXN0aWNrX2RhdGEgICAgKGNvbnN0ICBj
aGFyICpmaWxlbmFtZSkgIDsKCiBjb25zdCAgY2hhciAqICAgIGNhbGlicmF0ZV9qb3lzdGlja19u
YW1lICAgIChpbnQgbikgIDsKIGludCAgICBjYWxpYnJhdGVfam95c3RpY2sgICAgKGludCBuKSAg
OwoKCiAgIH0KCgoKCgojIDM3ICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby5oIiAyIDMKCgoj
IDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL3BhbGV0dGUuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKICAgZXh0ZXJuICJDIiB7CgoKdHlwZWRlZiBzdHJ1Y3QgUkdCCnsKICAgdW5z
aWduZWQgY2hhciByLCBnLCBiOwogICB1bnNpZ25lZCBjaGFyIGZpbGxlcjsKfSBSR0I7CgoKCnR5
cGVkZWYgUkdCIFBBTEVUVEVbMjU2IF07CgoKICAgfQoKCgoKCiMgMzkgIi91c3IvbG9jYWwvaW5j
bHVkZS9hbGxlZ3JvLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9nZngu
aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgZXh0ZXJuICJDIiB7CgoKCiMgMSAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vZml4ZWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKICAgZXh0ZXJuICJDIiB7CgoKdHlwZWRlZiBsb25nIGZpeGVkOwoKCiAgIH0KCgoKCgojIDI3
ICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9nZnguaCIgMiAzCgoKc3RydWN0IFJMRV9TUFJJ
VEU7CnN0cnVjdCBGT05UX0dMWVBIOwpzdHJ1Y3QgUkdCOwoKCgoKCgoKCnR5cGVkZWYgc3RydWN0
IEdGWF9NT0RFCnsKICAgaW50IHdpZHRoLCBoZWlnaHQsIGJwcDsKfSBHRlhfTU9ERTsKCnR5cGVk
ZWYgc3RydWN0IEdGWF9NT0RFX0xJU1QKewogICBpbnQgbnVtX21vZGVzOyAgICAgICAgICAgICAg
ICAgCiAgIEdGWF9NT0RFICptb2RlOyAgICAgICAgICAgICAgICAKfSBHRlhfTU9ERV9MSVNUOwoK
dHlwZWRlZiBzdHJ1Y3QgR0ZYX0RSSVZFUiAgICAgICAgIAp7CiAgIGludCAgaWQ7CiAgIGNvbnN0
ICBjaGFyICpuYW1lOwogICBjb25zdCAgY2hhciAqZGVzYzsKICAgY29uc3QgIGNoYXIgKmFzY2lp
X25hbWU7CiAgICBzdHJ1Y3QgQklUTUFQICogICgqICBpbml0ICkgICAoaW50IHcsIGludCBoLCBp
bnQgdl93LCBpbnQgdl9oLCBpbnQgY29sb3JfZGVwdGgpICA7CiAgICB2b2lkICAoKiAgZXhpdCAp
ICAgKHN0cnVjdCBCSVRNQVAgKmIpICA7CiAgICBpbnQgICgqICBzY3JvbGwgKSAgIChpbnQgeCwg
aW50IHkpICA7CiAgICB2b2lkICAoKiAgdnN5bmMgKSAgICh2b2lkKSAgOwogICAgdm9pZCAgKCog
IHNldF9wYWxldHRlICkgICAoY29uc3QgIHN0cnVjdCBSR0IgKnAsIGludCBmcm9tLCBpbnQgdG8s
IGludCByZXRyYWNlc3luYykgIDsKICAgIGludCAgKCogIHJlcXVlc3Rfc2Nyb2xsICkgICAoaW50
IHgsIGludCB5KSAgOwogICAgaW50ICAoKiAgcG9sbF9zY3JvbGwgKSAgICh2b2lkKSAgOwogICAg
dm9pZCAgKCogIGVuYWJsZV90cmlwbGVfYnVmZmVyICkgICAodm9pZCkgIDsKICAgIHN0cnVjdCBC
SVRNQVAgKiAgKCogIGNyZWF0ZV92aWRlb19iaXRtYXAgKSAgIChpbnQgd2lkdGgsIGludCBoZWln
aHQpICA7CiAgICB2b2lkICAoKiAgZGVzdHJveV92aWRlb19iaXRtYXAgKSAgIChzdHJ1Y3QgQklU
TUFQICpiaXRtYXApICA7CiAgICBpbnQgICgqICBzaG93X3ZpZGVvX2JpdG1hcCApICAgKHN0cnVj
dCBCSVRNQVAgKmJpdG1hcCkgIDsKICAgIGludCAgKCogIHJlcXVlc3RfdmlkZW9fYml0bWFwICkg
ICAoc3RydWN0IEJJVE1BUCAqYml0bWFwKSAgOwogICAgc3RydWN0IEJJVE1BUCAqICAoKiAgY3Jl
YXRlX3N5c3RlbV9iaXRtYXAgKSAgIChpbnQgd2lkdGgsIGludCBoZWlnaHQpICA7CiAgICB2b2lk
ICAoKiAgZGVzdHJveV9zeXN0ZW1fYml0bWFwICkgICAoc3RydWN0IEJJVE1BUCAqYml0bWFwKSAg
OwogICAgaW50ICAoKiAgc2V0X21vdXNlX3Nwcml0ZSApICAgKHN0cnVjdCBCSVRNQVAgKnNwcml0
ZSwgaW50IHhmb2N1cywgaW50IHlmb2N1cykgIDsKICAgIGludCAgKCogIHNob3dfbW91c2UgKSAg
IChzdHJ1Y3QgQklUTUFQICpibXAsIGludCB4LCBpbnQgeSkgIDsKICAgIHZvaWQgICgqICBoaWRl
X21vdXNlICkgICAodm9pZCkgIDsKICAgIHZvaWQgICgqICBtb3ZlX21vdXNlICkgICAoaW50IHgs
IGludCB5KSAgOwogICAgdm9pZCAgKCogIGRyYXdpbmdfbW9kZSApICAgKHZvaWQpICA7CiAgICB2
b2lkICAoKiAgc2F2ZV92aWRlb19zdGF0ZSApICAgKHZvaWQpICA7CiAgICB2b2lkICAoKiAgcmVz
dG9yZV92aWRlb19zdGF0ZSApICAgKHZvaWQpICA7CiAgICBHRlhfTU9ERV9MSVNUICogICgqICBm
ZXRjaF9tb2RlX2xpc3QgKSAgICh2b2lkKSAgOwogICBpbnQgdywgaDsgICAgICAgICAgICAgICAg
ICAgICAgCiAgIGludCBsaW5lYXI7ICAgICAgICAgICAgICAgICAgICAKICAgbG9uZyBiYW5rX3Np
emU7ICAgICAgICAgICAgICAgIAogICBsb25nIGJhbmtfZ3JhbjsgICAgICAgICAgICAgICAgCiAg
IGxvbmcgdmlkX21lbTsgICAgICAgICAgICAgICAgICAKICAgbG9uZyB2aWRfcGh5c19iYXNlOyAg
ICAgICAgICAgIAogICBpbnQgd2luZG93ZWQ7ICAgICAgICAgICAgICAgICAgCn0gR0ZYX0RSSVZF
UjsKCgpleHRlcm4gIEdGWF9EUklWRVIgKiAgICBnZnhfZHJpdmVyICA7CmV4dGVybiAgX0RSSVZF
Ul9JTkZPICAgIF9nZnhfZHJpdmVyX2xpc3QgW10gOwoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKZXh0ZXJuICBpbnQgICAgZ2Z4X2NhcGFiaWxpdGllcyAgOyAgICAKCgp0eXBl
ZGVmIHN0cnVjdCBHRlhfVlRBQkxFICAgICAgICAgCnsKICAgaW50IGNvbG9yX2RlcHRoOwogICBp
bnQgbWFza19jb2xvcjsKICAgdm9pZCAqdW53cml0ZV9iYW5rOyAgIAogICAgdm9pZCAgKCogIHNl
dF9jbGlwICkgICAoc3RydWN0IEJJVE1BUCAqYm1wKSAgOwogICAgdm9pZCAgKCogIGFjcXVpcmUg
KSAgIChzdHJ1Y3QgQklUTUFQICpibXApICA7CiAgICB2b2lkICAoKiAgcmVsZWFzZSApICAgKHN0
cnVjdCBCSVRNQVAgKmJtcCkgIDsKICAgIHN0cnVjdCBCSVRNQVAgKiAgKCogIGNyZWF0ZV9zdWJf
Yml0bWFwICkgICAoc3RydWN0IEJJVE1BUCAqcGFyZW50LCBpbnQgeCwgaW50IHksIGludCB3aWR0
aCwgaW50IGhlaWdodCkgIDsKICAgIHZvaWQgICgqICBjcmVhdGVkX3N1Yl9iaXRtYXAgKSAgIChz
dHJ1Y3QgQklUTUFQICpibXAsIHN0cnVjdCBCSVRNQVAgKnBhcmVudCkgIDsKICAgIGludCAgKCog
ICBnZXRwaXhlbCApICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5KSAgOwogICAg
dm9pZCAgKCogIHB1dHBpeGVsICkgICAoc3RydWN0IEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHks
IGludCBjb2xvcikgIDsKICAgIHZvaWQgICgqICB2bGluZSApICAgKHN0cnVjdCBCSVRNQVAgKmJt
cCwgaW50IHgsIGludCB5MSwgaW50IHkyLCBpbnQgY29sb3IpICA7CiAgICB2b2lkICAoKiAgaGxp
bmUgKSAgIChzdHJ1Y3QgQklUTUFQICpibXAsIGludCB4MSwgaW50IHksIGludCB4MiwgaW50IGNv
bG9yKSAgOwogICAgdm9pZCAgKCogIGhmaWxsICkgICAoc3RydWN0IEJJVE1BUCAqYm1wLCBpbnQg
eDEsIGludCB5LCBpbnQgeDIsIGludCBjb2xvcikgIDsKICAgIHZvaWQgICgqICBsaW5lICkgICAo
c3RydWN0IEJJVE1BUCAqYm1wLCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIsIGludCBj
b2xvcikgIDsKICAgIHZvaWQgICgqICByZWN0ZmlsbCApICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwg
aW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBpbnQgY29sb3IpICA7CiAgICBpbnQgICgq
ICAgdHJpYW5nbGUgKSAgIChzdHJ1Y3QgQklUTUFQICpibXAsIGludCB4MSwgaW50IHkxLCBpbnQg
eDIsIGludCB5MiwgaW50IHgzLCBpbnQgeTMsIGludCBjb2xvcikgIDsKICAgIHZvaWQgICgqICBk
cmF3X3Nwcml0ZSApICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgc3RydWN0IEJJVE1BUCAqc3ByaXRl
LCBpbnQgeCwgaW50IHkpICA7CiAgICB2b2lkICAoKiAgZHJhd18yNTZfc3ByaXRlICkgICAoc3Ry
dWN0IEJJVE1BUCAqYm1wLCBzdHJ1Y3QgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSkgIDsK
ICAgIHZvaWQgICgqICBkcmF3X3Nwcml0ZV92X2ZsaXAgKSAgIChzdHJ1Y3QgQklUTUFQICpibXAs
IHN0cnVjdCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5KSAgOwogICAgdm9pZCAgKCogIGRy
YXdfc3ByaXRlX2hfZmxpcCApICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgc3RydWN0IEJJVE1BUCAq
c3ByaXRlLCBpbnQgeCwgaW50IHkpICA7CiAgICB2b2lkICAoKiAgZHJhd19zcHJpdGVfdmhfZmxp
cCApICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgc3RydWN0IEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwg
aW50IHkpICA7CiAgICB2b2lkICAoKiAgZHJhd190cmFuc19zcHJpdGUgKSAgIChzdHJ1Y3QgQklU
TUFQICpibXAsIHN0cnVjdCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5KSAgOwogICAgdm9p
ZCAgKCogIGRyYXdfdHJhbnNfcmdiYV9zcHJpdGUgKSAgIChzdHJ1Y3QgQklUTUFQICpibXAsIHN0
cnVjdCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5KSAgOwogICAgdm9pZCAgKCogIGRyYXdf
bGl0X3Nwcml0ZSApICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgc3RydWN0IEJJVE1BUCAqc3ByaXRl
LCBpbnQgeCwgaW50IHksIGludCBjb2xvcikgIDsKICAgIHZvaWQgICgqICBkcmF3X3JsZV9zcHJp
dGUgKSAgIChzdHJ1Y3QgQklUTUFQICpibXAsIGNvbnN0ICBzdHJ1Y3QgUkxFX1NQUklURSAqc3By
aXRlLCBpbnQgeCwgaW50IHkpICA7CiAgICB2b2lkICAoKiAgZHJhd190cmFuc19ybGVfc3ByaXRl
ICkgICAoc3RydWN0IEJJVE1BUCAqYm1wLCBjb25zdCAgc3RydWN0IFJMRV9TUFJJVEUgKnNwcml0
ZSwgaW50IHgsIGludCB5KSAgOwogICAgdm9pZCAgKCogIGRyYXdfdHJhbnNfcmdiYV9ybGVfc3By
aXRlICkgICAoc3RydWN0IEJJVE1BUCAqYm1wLCBjb25zdCAgc3RydWN0IFJMRV9TUFJJVEUgKnNw
cml0ZSwgaW50IHgsIGludCB5KSAgOwogICAgdm9pZCAgKCogIGRyYXdfbGl0X3JsZV9zcHJpdGUg
KSAgIChzdHJ1Y3QgQklUTUFQICpibXAsIGNvbnN0ICBzdHJ1Y3QgUkxFX1NQUklURSAqc3ByaXRl
LCBpbnQgeCwgaW50IHksIGludCBjb2xvcikgIDsKICAgIHZvaWQgICgqICBkcmF3X2NoYXJhY3Rl
ciApICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgc3RydWN0IEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwg
aW50IHksIGludCBjb2xvcikgIDsKICAgIHZvaWQgICgqICBkcmF3X2dseXBoICkgICAoc3RydWN0
IEJJVE1BUCAqYm1wLCBjb25zdCAgc3RydWN0IEZPTlRfR0xZUEggKmdseXBoLCBpbnQgeCwgaW50
IHksIGludCBjb2xvcikgIDsKICAgIHZvaWQgICgqICBibGl0X2Zyb21fbWVtb3J5ICkgICAoc3Ry
dWN0IEJJVE1BUCAqc291cmNlLCBzdHJ1Y3QgQklUTUFQICpkZXN0LCBpbnQgc291cmNlX3gsIGlu
dCBzb3VyY2VfeSwgaW50IGRlc3RfeCwgaW50IGRlc3RfeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KSAgOwogICAgdm9pZCAgKCogIGJsaXRfdG9fbWVtb3J5ICkgICAoc3RydWN0IEJJVE1BUCAqc291
cmNlLCBzdHJ1Y3QgQklUTUFQICpkZXN0LCBpbnQgc291cmNlX3gsIGludCBzb3VyY2VfeSwgaW50
IGRlc3RfeCwgaW50IGRlc3RfeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSAgOwogICAgdm9pZCAg
KCogIGJsaXRfZnJvbV9zeXN0ZW0gKSAgIChzdHJ1Y3QgQklUTUFQICpzb3VyY2UsIHN0cnVjdCBC
SVRNQVAgKmRlc3QsIGludCBzb3VyY2VfeCwgaW50IHNvdXJjZV95LCBpbnQgZGVzdF94LCBpbnQg
ZGVzdF95LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpICA7CiAgICB2b2lkICAoKiAgYmxpdF90b19z
eXN0ZW0gKSAgIChzdHJ1Y3QgQklUTUFQICpzb3VyY2UsIHN0cnVjdCBCSVRNQVAgKmRlc3QsIGlu
dCBzb3VyY2VfeCwgaW50IHNvdXJjZV95LCBpbnQgZGVzdF94LCBpbnQgZGVzdF95LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpICA7CiAgICB2b2lkICAoKiAgYmxpdF90b19zZWxmICkgICAoc3RydWN0
IEJJVE1BUCAqc291cmNlLCBzdHJ1Y3QgQklUTUFQICpkZXN0LCBpbnQgc291cmNlX3gsIGludCBz
b3VyY2VfeSwgaW50IGRlc3RfeCwgaW50IGRlc3RfeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSAg
OwogICAgdm9pZCAgKCogIGJsaXRfdG9fc2VsZl9mb3J3YXJkICkgICAoc3RydWN0IEJJVE1BUCAq
c291cmNlLCBzdHJ1Y3QgQklUTUFQICpkZXN0LCBpbnQgc291cmNlX3gsIGludCBzb3VyY2VfeSwg
aW50IGRlc3RfeCwgaW50IGRlc3RfeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSAgOwogICAgdm9p
ZCAgKCogIGJsaXRfdG9fc2VsZl9iYWNrd2FyZCApICAgKHN0cnVjdCBCSVRNQVAgKnNvdXJjZSwg
c3RydWN0IEJJVE1BUCAqZGVzdCwgaW50IHNvdXJjZV94LCBpbnQgc291cmNlX3ksIGludCBkZXN0
X3gsIGludCBkZXN0X3ksIGludCB3aWR0aCwgaW50IGhlaWdodCkgIDsKICAgIHZvaWQgICgqICBi
bGl0X2JldHdlZW5fZm9ybWF0cyApICAgKHN0cnVjdCBCSVRNQVAgKnNvdXJjZSwgc3RydWN0IEJJ
VE1BUCAqZGVzdCwgaW50IHNvdXJjZV94LCBpbnQgc291cmNlX3ksIGludCBkZXN0X3gsIGludCBk
ZXN0X3ksIGludCB3aWR0aCwgaW50IGhlaWdodCkgIDsKICAgIHZvaWQgICgqICBtYXNrZWRfYmxp
dCApICAgKHN0cnVjdCBCSVRNQVAgKnNvdXJjZSwgc3RydWN0IEJJVE1BUCAqZGVzdCwgaW50IHNv
dXJjZV94LCBpbnQgc291cmNlX3ksIGludCBkZXN0X3gsIGludCBkZXN0X3ksIGludCB3aWR0aCwg
aW50IGhlaWdodCkgIDsKICAgIHZvaWQgICgqICBjbGVhcl90b19jb2xvciApICAgKHN0cnVjdCBC
SVRNQVAgKmJpdG1hcCwgaW50IGNvbG9yKSAgOwogICAgdm9pZCAgKCogIHBpdm90X3NjYWxlZF9z
cHJpdGVfZmxpcCApICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgc3RydWN0IEJJVE1BUCAqc3ByaXRl
LCBmaXhlZCB4LCBmaXhlZCB5LCBmaXhlZCBjeCwgZml4ZWQgY3ksIGZpeGVkIGFuZ2xlLCBmaXhl
ZCBzY2FsZSwgaW50IHZfZmxpcCkgIDsKICAgIHZvaWQgICgqICBkcmF3X3Nwcml0ZV9lbmQgKSAg
ICh2b2lkKSAgOwogICAgdm9pZCAgKCogIGJsaXRfZW5kICkgICAodm9pZCkgIDsKfSBHRlhfVlRB
QkxFOwoKCmV4dGVybiAgR0ZYX1ZUQUJMRSAgICBfX2xpbmVhcl92dGFibGU4ICA7CmV4dGVybiAg
R0ZYX1ZUQUJMRSAgICBfX2xpbmVhcl92dGFibGUxNSAgOwpleHRlcm4gIEdGWF9WVEFCTEUgICAg
X19saW5lYXJfdnRhYmxlMTYgIDsKZXh0ZXJuICBHRlhfVlRBQkxFICAgIF9fbGluZWFyX3Z0YWJs
ZTI0ICA7CmV4dGVybiAgR0ZYX1ZUQUJMRSAgICBfX2xpbmVhcl92dGFibGUzMiAgOwoKCnR5cGVk
ZWYgc3RydWN0IF9WVEFCTEVfSU5GTwp7CiAgIGludCBjb2xvcl9kZXB0aDsKICAgR0ZYX1ZUQUJM
RSAqdnRhYmxlOwp9IF9WVEFCTEVfSU5GTzsKCmV4dGVybiAgX1ZUQUJMRV9JTkZPICAgIF92dGFi
bGVfbGlzdCBbXSA7CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBC
SVRNQVAgICAgICAgICAgICAgCnsKICAgaW50IHcsIGg7ICAgICAgICAgICAgICAgICAgICAgIAog
ICBpbnQgY2xpcDsgICAgICAgICAgICAgICAgICAgICAgCiAgIGludCBjbCwgY3IsIGN0LCBjYjsg
ICAgICAgICAgICAKICAgR0ZYX1ZUQUJMRSAqdnRhYmxlOyAgICAgICAgICAgIAogICB2b2lkICp3
cml0ZV9iYW5rOyAgICAgICAgICAgICAgCiAgIHZvaWQgKnJlYWRfYmFuazsgICAgICAgICAgICAg
ICAKICAgdm9pZCAqZGF0OyAgICAgICAgICAgICAgICAgICAgIAogICB1bnNpZ25lZCBsb25nIGlk
OyAgICAgICAgICAgICAgCiAgIHZvaWQgKmV4dHJhOyAgICAgICAgICAgICAgICAgICAKICAgaW50
IHhfb2ZzOyAgICAgICAgICAgICAgICAgICAgIAogICBpbnQgeV9vZnM7ICAgICAgICAgICAgICAg
ICAgICAgCiAgIGludCBzZWc7ICAgICAgICAgICAgICAgICAgICAgICAKICAgdW5zaWduZWQgY2hh
ciAqbGluZVswIF07Cn0gQklUTUFQOwoKCgoKCgoKCgoKCgpleHRlcm4gIEJJVE1BUCAqICAgIHNj
cmVlbiAgOwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDMzMiAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVn
cm8vZ2Z4LmgiIDMKCgoKCgoKCgoKCgogR0ZYX01PREVfTElTVCAqICAgIGdldF9nZnhfbW9kZV9s
aXN0ICAgIChpbnQgY2FyZCkgIDsKIHZvaWQgICAgZGVzdHJveV9nZnhfbW9kZV9saXN0ICAgIChH
RlhfTU9ERV9MSVNUICpnZnhfbW9kZV9saXN0KSAgOwogdm9pZCAgICBzZXRfY29sb3JfZGVwdGgg
ICAgKGludCBkZXB0aCkgIDsKIHZvaWQgICAgc2V0X2NvbG9yX2NvbnZlcnNpb24gICAgKGludCBt
b2RlKSAgOwogdm9pZCAgICByZXF1ZXN0X3JlZnJlc2hfcmF0ZSAgICAoaW50IHJhdGUpICA7CiBp
bnQgICAgZ2V0X3JlZnJlc2hfcmF0ZSAgICAodm9pZCkgIDsKIGludCAgICBzZXRfZ2Z4X21vZGUg
ICAgKGludCBjYXJkLCBpbnQgdywgaW50IGgsIGludCB2X3csIGludCB2X2gpICA7CiBpbnQgICAg
c2Nyb2xsX3NjcmVlbiAgICAoaW50IHgsIGludCB5KSAgOwogaW50ICAgIHJlcXVlc3Rfc2Nyb2xs
ICAgIChpbnQgeCwgaW50IHkpICA7CiBpbnQgICAgcG9sbF9zY3JvbGwgICAgKHZvaWQpICA7CiBp
bnQgICAgc2hvd192aWRlb19iaXRtYXAgICAgKEJJVE1BUCAqYml0bWFwKSAgOwogaW50ICAgIHJl
cXVlc3RfdmlkZW9fYml0bWFwICAgIChCSVRNQVAgKmJpdG1hcCkgIDsKIGludCAgICBlbmFibGVf
dHJpcGxlX2J1ZmZlciAgICAodm9pZCkgIDsKIEJJVE1BUCAqICAgIGNyZWF0ZV9iaXRtYXAgICAg
KGludCB3aWR0aCwgaW50IGhlaWdodCkgIDsKIEJJVE1BUCAqICAgIGNyZWF0ZV9iaXRtYXBfZXgg
ICAgKGludCBjb2xvcl9kZXB0aCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSAgOwogQklUTUFQICog
ICAgY3JlYXRlX3N1Yl9iaXRtYXAgICAgKEJJVE1BUCAqcGFyZW50LCBpbnQgeCwgaW50IHksIGlu
dCB3aWR0aCwgaW50IGhlaWdodCkgIDsKIEJJVE1BUCAqICAgIGNyZWF0ZV92aWRlb19iaXRtYXAg
ICAgKGludCB3aWR0aCwgaW50IGhlaWdodCkgIDsKIEJJVE1BUCAqICAgIGNyZWF0ZV9zeXN0ZW1f
Yml0bWFwICAgIChpbnQgd2lkdGgsIGludCBoZWlnaHQpICA7CiB2b2lkICAgIGRlc3Ryb3lfYml0
bWFwICAgIChCSVRNQVAgKmJpdG1hcCkgIDsKIHZvaWQgICAgc2V0X2NsaXAgICAgKEJJVE1BUCAq
Yml0bWFwLCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIpICA7CiB2b2lkICAgIGNsZWFy
X2JpdG1hcCAgICAoQklUTUFQICpiaXRtYXApICA7CiB2b2lkICAgIHZzeW5jICAgICh2b2lkKSAg
OwoKCgoKCgoKCgoKCgogaW50ICAgIHNldF9kaXNwbGF5X3N3aXRjaF9tb2RlICAgIChpbnQgbW9k
ZSkgIDsKIGludCAgICBnZXRfZGlzcGxheV9zd2l0Y2hfbW9kZSAgICAodm9pZCkgIDsKIGludCAg
ICBzZXRfZGlzcGxheV9zd2l0Y2hfY2FsbGJhY2sgICAgKGludCBkaXIsICB2b2lkICAoKiAgY2Ig
KSAgICh2b2lkKSAgKSAgOwogdm9pZCAgICByZW1vdmVfZGlzcGxheV9zd2l0Y2hfY2FsbGJhY2sg
ICAgKCB2b2lkICAoKiAgY2IgKSAgICh2b2lkKSAgKSAgOwoKIHZvaWQgICAgbG9ja19iaXRtYXAg
ICAgKHN0cnVjdCBCSVRNQVAgKmJtcCkgIDsKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVn
cm8vaW5saW5lL2dmeC5pbmwiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgIGV4dGVybiAi
QyIgewoKCgoKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL2lubGluZS9hc20uaW5s
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAgIGV4dGVybiAiQyIgewoKCgoKCgoKICAgIAogICAK
IyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9wbGF0Zm9ybS9hbDM4NmdjYy5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgpzdGF0aWMgaW5saW5lICBpbnQgICAgX2RlZmF1
bHRfZHMgICAgKHZvaWQpICAgCnsKICAgc2hvcnQgcmVzdWx0OwoKICAgYXNtICgKICAgICAgIiAg
bW92dyAlJWRzLCAlMCAiCgogICA6ICI9ciIgKHJlc3VsdCkKICAgKTsKCiAgIHJldHVybiByZXN1
bHQ7Cn0gIAoKCgogCgoKc3RhdGljIGlubGluZSAgdW5zaWduZWQgbG9uZyAgICBibXBfd3JpdGVf
bGluZSAgICAoQklUTUFQICpibXAsIGludCBsaW5lKSAgIAp7CiAgIHVuc2lnbmVkIGxvbmcgcmVz
dWx0OwoKICAgYXNtIHZvbGF0aWxlICgKICAgICAgIiAgY2FsbCAqJTMgIgoKICAgOiAiPWEiIChy
ZXN1bHQpICAgICAgICAgICAgICAgICAgICAgIAoKICAgOiAiZCIgKGJtcCksICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICIwIiAobGluZSksICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgInIiIChibXAtPndyaXRlX2JhbmspICAgICAgICAgICAgICAKICAgKTsKCiAgIHJldHVybiBy
ZXN1bHQ7Cn0gIAoKCgogCgoKc3RhdGljIGlubGluZSAgdW5zaWduZWQgbG9uZyAgICBibXBfcmVh
ZF9saW5lICAgIChCSVRNQVAgKmJtcCwgaW50IGxpbmUpICAgCnsKICAgdW5zaWduZWQgbG9uZyBy
ZXN1bHQ7CgogICBhc20gdm9sYXRpbGUgKAogICAgICAiICBjYWxsIColMyAiCgogICA6ICI9YSIg
KHJlc3VsdCkgICAgICAgICAgICAgICAgICAgICAgCgogICA6ICJkIiAoYm1wKSwgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgIjAiIChsaW5lKSwgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAiciIgKGJtcC0+cmVhZF9iYW5rKSAgICAgICAgICAgICAgIAogICApOwoKICAgcmV0dXJu
IHJlc3VsdDsKfSAgCgoKCiAKCgpzdGF0aWMgaW5saW5lICB2b2lkICAgIGJtcF91bndyaXRlX2xp
bmUgICAgKEJJVE1BUCAqYm1wKSAgIAp7CiAgIGFzbSB2b2xhdGlsZSAoCiAgICAgICIgIGNhbGwg
KiUxICIKICAgOgogICA6ICJkIiAoYm1wKSwgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
InIiIChibXAtPnZ0YWJsZS0+dW53cml0ZV9iYW5rKSAgICAKICAgKTsKfSAgCgoKCgojIDQwMSAi
L3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vcGxhdGZvcm0vYWwzODZnY2MuaCIgMwoKCiMgMjgg
Ii91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL2lubGluZS9hc20uaW5sIiAyIDMKCgojIDQ1ICIv
dXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9pbmxpbmUvYXNtLmlubCIgMwoKCgoKCgogICB9CgoK
IyAzMCAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vaW5saW5lL2dmeC5pbmwiIDIgMwoKCgoK
IyA4NSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vaW5saW5lL2dmeC5pbmwiIDMKCgoKc3Rh
dGljIGlubGluZSAgdm9pZCAgICBjbGVhcl90b19jb2xvciAgICAoQklUTUFQICpiaXRtYXAsIGlu
dCBjb2xvcikgICAKewogICAgOwoKICAgYml0bWFwLT52dGFibGUtPmNsZWFyX3RvX2NvbG9yKGJp
dG1hcCwgY29sb3IpOwp9ICAKCgpzdGF0aWMgaW5saW5lICBpbnQgICAgYml0bWFwX2NvbG9yX2Rl
cHRoICAgIChCSVRNQVAgKmJtcCkgICAKewogICAgOwoKICAgcmV0dXJuIGJtcC0+dnRhYmxlLT5j
b2xvcl9kZXB0aDsKfSAgCgoKc3RhdGljIGlubGluZSAgaW50ICAgIGJpdG1hcF9tYXNrX2NvbG9y
ICAgIChCSVRNQVAgKmJtcCkgICAKewogICAgOwoKICAgcmV0dXJuIGJtcC0+dnRhYmxlLT5tYXNr
X2NvbG9yOwp9ICAKCgpzdGF0aWMgaW5saW5lICBpbnQgICAgaXNfc2FtZV9iaXRtYXAgICAgKEJJ
VE1BUCAqYm1wMSwgQklUTUFQICpibXAyKSAgIAp7CiAgIHVuc2lnbmVkIGxvbmcgbTE7CiAgIHVu
c2lnbmVkIGxvbmcgbTI7CgogICBpZiAoKCFibXAxKSB8fCAoIWJtcDIpKQogICAgICByZXR1cm4g
MCA7CgogICBpZiAoYm1wMSA9PSBibXAyKQogICAgICByZXR1cm4gLTEgOwoKICAgbTEgPSBibXAx
LT5pZCAmIDB4MDFGRkZGRkYgOwogICBtMiA9IGJtcDItPmlkICYgMHgwMUZGRkZGRiA7CgogICBy
ZXR1cm4gKChtMSkgJiYgKG0xID09IG0yKSk7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBp
c19saW5lYXJfYml0bWFwICAgIChCSVRNQVAgKmJtcCkgICAKewogICAgOwoKICAgcmV0dXJuIChi
bXAtPmlkICYgMHgxMDAwMDAwMCApID09IDA7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBp
c19wbGFuYXJfYml0bWFwICAgIChCSVRNQVAgKmJtcCkgICAKewogICAgOwoKICAgcmV0dXJuIChi
bXAtPmlkICYgMHgxMDAwMDAwMCApICE9IDA7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBp
c19tZW1vcnlfYml0bWFwICAgIChCSVRNQVAgKmJtcCkgICAKewogICAgOwoKICAgcmV0dXJuIChi
bXAtPmlkICYgKDB4ODAwMDAwMDAgIHwgMHg0MDAwMDAwMCApKSA9PSAwOwp9ICAKCgpzdGF0aWMg
aW5saW5lICBpbnQgICAgaXNfc2NyZWVuX2JpdG1hcCAgICAoQklUTUFQICpibXApICAgCnsKICAg
IDsKCiAgIHJldHVybiBpc19zYW1lX2JpdG1hcChibXAsIHNjcmVlbik7Cn0gIAoKCnN0YXRpYyBp
bmxpbmUgIGludCAgICBpc192aWRlb19iaXRtYXAgICAgKEJJVE1BUCAqYm1wKSAgIAp7CiAgICA7
CgogICByZXR1cm4gKGJtcC0+aWQgJiAweDgwMDAwMDAwICkgIT0gMDsKfSAgCgoKc3RhdGljIGlu
bGluZSAgaW50ICAgIGlzX3N5c3RlbV9iaXRtYXAgICAgKEJJVE1BUCAqYm1wKSAgIAp7CiAgICA7
CgogICByZXR1cm4gKGJtcC0+aWQgJiAweDQwMDAwMDAwICkgIT0gMDsKfSAgCgoKc3RhdGljIGlu
bGluZSAgaW50ICAgIGlzX3N1Yl9iaXRtYXAgICAgKEJJVE1BUCAqYm1wKSAgIAp7CiAgICA7Cgog
ICByZXR1cm4gKGJtcC0+aWQgJiAweDIwMDAwMDAwICkgIT0gMDsKfSAgCgoKCgoKCgoKCgoKCnN0
YXRpYyBpbmxpbmUgIHZvaWQgICAgYWNxdWlyZV9iaXRtYXAgICAgKEJJVE1BUCAqYm1wKSAgIAp7
CiAgICA7CgogICBpZiAoYm1wLT52dGFibGUtPmFjcXVpcmUpCiAgICAgIGJtcC0+dnRhYmxlLT5h
Y3F1aXJlKGJtcCk7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIHZvaWQgICAgcmVsZWFzZV9iaXRtYXAg
ICAgKEJJVE1BUCAqYm1wKSAgIAp7CiAgICA7CgogICBpZiAoYm1wLT52dGFibGUtPnJlbGVhc2Up
CiAgICAgIGJtcC0+dnRhYmxlLT5yZWxlYXNlKGJtcCk7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIHZv
aWQgICAgYWNxdWlyZV9zY3JlZW4gICAgKHZvaWQpICAgCnsKICAgYWNxdWlyZV9iaXRtYXAoc2Ny
ZWVuKTsKfSAgCgoKc3RhdGljIGlubGluZSAgdm9pZCAgICByZWxlYXNlX3NjcmVlbiAgICAodm9p
ZCkgICAKewogICByZWxlYXNlX2JpdG1hcChzY3JlZW4pOwp9ICAKCgoKCiAgIH0KCgoKCgojIDM4
NCAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vZ2Z4LmgiIDIgMwoKCgogICB9CgoKCgoKIyA0
MCAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8uaCIgMiAzCgojIDEgIi91c3IvbG9jYWwvaW5j
bHVkZS9hbGxlZ3JvL2NvbG9yLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgIGV4dGVy
biAiQyIgewoKCgoKCnN0cnVjdCBCSVRNQVA7CgpleHRlcm4gIFBBTEVUVEUgICAgYmxhY2tfcGFs
ZXR0ZSAgOwpleHRlcm4gIFBBTEVUVEUgICAgZGVza3RvcF9wYWxldHRlICA7CmV4dGVybiAgUEFM
RVRURSAgICBkZWZhdWx0X3BhbGV0dGUgIDsKCnR5cGVkZWYgc3RydWN0IHsKICAgdW5zaWduZWQg
Y2hhciBkYXRhWzMyXVszMl1bMzJdOwp9IFJHQl9NQVA7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgIHVu
c2lnbmVkIGNoYXIgZGF0YVsyNTYgXVsyNTYgXTsKfSBDT0xPUl9NQVA7CgpleHRlcm4gIFJHQl9N
QVAgKiAgICByZ2JfbWFwICA7CmV4dGVybiAgQ09MT1JfTUFQICogICAgY29sb3JfbWFwICA7Cgpl
eHRlcm4gIFBBTEVUVEUgICAgX2N1cnJlbnRfcGFsZXR0ZSAgOwoKZXh0ZXJuICBpbnQgICAgX3Jn
Yl9yX3NoaWZ0XzE1ICA7CmV4dGVybiAgaW50ICAgIF9yZ2JfZ19zaGlmdF8xNSAgOwpleHRlcm4g
IGludCAgICBfcmdiX2Jfc2hpZnRfMTUgIDsKZXh0ZXJuICBpbnQgICAgX3JnYl9yX3NoaWZ0XzE2
ICA7CmV4dGVybiAgaW50ICAgIF9yZ2JfZ19zaGlmdF8xNiAgOwpleHRlcm4gIGludCAgICBfcmdi
X2Jfc2hpZnRfMTYgIDsKZXh0ZXJuICBpbnQgICAgX3JnYl9yX3NoaWZ0XzI0ICA7CmV4dGVybiAg
aW50ICAgIF9yZ2JfZ19zaGlmdF8yNCAgOwpleHRlcm4gIGludCAgICBfcmdiX2Jfc2hpZnRfMjQg
IDsKZXh0ZXJuICBpbnQgICAgX3JnYl9yX3NoaWZ0XzMyICA7CmV4dGVybiAgaW50ICAgIF9yZ2Jf
Z19zaGlmdF8zMiAgOwpleHRlcm4gIGludCAgICBfcmdiX2Jfc2hpZnRfMzIgIDsKZXh0ZXJuICBp
bnQgICAgX3JnYl9hX3NoaWZ0XzMyICA7CgpleHRlcm4gIGludCAgICBfcmdiX3NjYWxlXzUgW10g
OwpleHRlcm4gIGludCAgICBfcmdiX3NjYWxlXzYgW10gOwoKCgoKCgoKZXh0ZXJuICBpbnQgKiAg
ICBwYWxldHRlX2NvbG9yICA7Cgogdm9pZCAgICBzZXRfY29sb3IgICAgKGludCBpbmRleCwgY29u
c3QgIFJHQiAqcCkgIDsKIHZvaWQgICAgc2V0X3BhbGV0dGUgICAgKGNvbnN0ICBQQUxFVFRFIHAp
ICA7CiB2b2lkICAgIHNldF9wYWxldHRlX3JhbmdlICAgIChjb25zdCAgUEFMRVRURSBwLCBpbnQg
ZnJvbSwgaW50IHRvLCBpbnQgcmV0cmFjZXN5bmMpICA7Cgogdm9pZCAgICBnZXRfY29sb3IgICAg
KGludCBpbmRleCwgUkdCICpwKSAgOwogdm9pZCAgICBnZXRfcGFsZXR0ZSAgICAoUEFMRVRURSBw
KSAgOwogdm9pZCAgICBnZXRfcGFsZXR0ZV9yYW5nZSAgICAoUEFMRVRURSBwLCBpbnQgZnJvbSwg
aW50IHRvKSAgOwoKIHZvaWQgICAgZmFkZV9pbnRlcnBvbGF0ZSAgICAoY29uc3QgIFBBTEVUVEUg
c291cmNlLCBjb25zdCAgUEFMRVRURSBkZXN0LCBQQUxFVFRFIG91dHB1dCwgaW50IHBvcywgaW50
IGZyb20sIGludCB0bykgIDsKIHZvaWQgICAgZmFkZV9mcm9tX3JhbmdlICAgIChjb25zdCAgUEFM
RVRURSBzb3VyY2UsIGNvbnN0ICBQQUxFVFRFIGRlc3QsIGludCBzcGVlZCwgaW50IGZyb20sIGlu
dCB0bykgIDsKIHZvaWQgICAgZmFkZV9pbl9yYW5nZSAgICAoY29uc3QgIFBBTEVUVEUgcCwgaW50
IHNwZWVkLCBpbnQgZnJvbSwgaW50IHRvKSAgOwogdm9pZCAgICBmYWRlX291dF9yYW5nZSAgICAo
aW50IHNwZWVkLCBpbnQgZnJvbSwgaW50IHRvKSAgOwogdm9pZCAgICBmYWRlX2Zyb20gICAgKGNv
bnN0ICBQQUxFVFRFIHNvdXJjZSwgY29uc3QgIFBBTEVUVEUgZGVzdCwgaW50IHNwZWVkKSAgOwog
dm9pZCAgICBmYWRlX2luICAgIChjb25zdCAgUEFMRVRURSBwLCBpbnQgc3BlZWQpICA7CiB2b2lk
ICAgIGZhZGVfb3V0ICAgIChpbnQgc3BlZWQpICA7Cgogdm9pZCAgICBzZWxlY3RfcGFsZXR0ZSAg
ICAoY29uc3QgIFBBTEVUVEUgcCkgIDsKIHZvaWQgICAgdW5zZWxlY3RfcGFsZXR0ZSAgICAodm9p
ZCkgIDsKCiB2b2lkICAgIGdlbmVyYXRlXzMzMl9wYWxldHRlICAgIChQQUxFVFRFIHBhbCkgIDsK
IGludCAgICBnZW5lcmF0ZV9vcHRpbWl6ZWRfcGFsZXR0ZSAgICAoc3RydWN0IEJJVE1BUCAqaW1h
Z2UsIFBBTEVUVEUgcGFsLCBjb25zdCAgc2lnbmVkIGNoYXIgcnN2ZGNvbHNbMjU2XSkgIDsKCiB2
b2lkICAgIGNyZWF0ZV9yZ2JfdGFibGUgICAgKFJHQl9NQVAgKnRhYmxlLCBjb25zdCAgUEFMRVRU
RSBwYWwsICB2b2lkICAoKiAgY2FsbGJhY2sgKSAgIChpbnQgcG9zKSAgKSAgOwogdm9pZCAgICBj
cmVhdGVfbGlnaHRfdGFibGUgICAgKENPTE9SX01BUCAqdGFibGUsIGNvbnN0ICBQQUxFVFRFIHBh
bCwgaW50IHIsIGludCBnLCBpbnQgYiwgIHZvaWQgICgqICBjYWxsYmFjayApICAgKGludCBwb3Mp
ICApICA7CiB2b2lkICAgIGNyZWF0ZV90cmFuc190YWJsZSAgICAoQ09MT1JfTUFQICp0YWJsZSwg
Y29uc3QgIFBBTEVUVEUgcGFsLCBpbnQgciwgaW50IGcsIGludCBiLCAgdm9pZCAgKCogIGNhbGxi
YWNrICkgICAoaW50IHBvcykgICkgIDsKIHZvaWQgICAgY3JlYXRlX2NvbG9yX3RhYmxlICAgIChD
T0xPUl9NQVAgKnRhYmxlLCBjb25zdCAgUEFMRVRURSBwYWwsICB2b2lkICAoKiAgYmxlbmQgKSAg
IChjb25zdCAgUEFMRVRURSBwYWwsIGludCB4LCBpbnQgeSwgUkdCICpyZ2IpICAsICB2b2lkICAo
KiAgY2FsbGJhY2sgKSAgIChpbnQgcG9zKSAgKSAgOwogdm9pZCAgICBjcmVhdGVfYmxlbmRlcl90
YWJsZSAgICAoQ09MT1JfTUFQICp0YWJsZSwgY29uc3QgIFBBTEVUVEUgcGFsLCAgdm9pZCAgKCog
IGNhbGxiYWNrICkgICAoaW50IHBvcykgICkgIDsKCnR5cGVkZWYgIHVuc2lnbmVkIGxvbmcgICgq
ICBCTEVOREVSX0ZVTkMgKSAgICh1bnNpZ25lZCBsb25nIHgsIHVuc2lnbmVkIGxvbmcgeSwgdW5z
aWduZWQgbG9uZyBuKSAgOwoKIHZvaWQgICAgc2V0X2JsZW5kZXJfbW9kZSAgICAoQkxFTkRFUl9G
VU5DIGIxNSwgQkxFTkRFUl9GVU5DIGIxNiwgQkxFTkRFUl9GVU5DIGIyNCwgaW50IHIsIGludCBn
LCBpbnQgYiwgaW50IGEpICA7CiB2b2lkICAgIHNldF9ibGVuZGVyX21vZGVfZXggICAgKEJMRU5E
RVJfRlVOQyBiMTUsIEJMRU5ERVJfRlVOQyBiMTYsIEJMRU5ERVJfRlVOQyBiMjQsIEJMRU5ERVJf
RlVOQyBiMzIsIEJMRU5ERVJfRlVOQyBiMTV4LCBCTEVOREVSX0ZVTkMgYjE2eCwgQkxFTkRFUl9G
VU5DIGIyNHgsIGludCByLCBpbnQgZywgaW50IGIsIGludCBhKSAgOwoKIHZvaWQgICAgc2V0X2Fs
cGhhX2JsZW5kZXIgICAgKHZvaWQpICA7CiB2b2lkICAgIHNldF93cml0ZV9hbHBoYV9ibGVuZGVy
ICAgICh2b2lkKSAgOwogdm9pZCAgICBzZXRfdHJhbnNfYmxlbmRlciAgICAoaW50IHIsIGludCBn
LCBpbnQgYiwgaW50IGEpICA7CiB2b2lkICAgIHNldF9hZGRfYmxlbmRlciAgICAoaW50IHIsIGlu
dCBnLCBpbnQgYiwgaW50IGEpICA7CiB2b2lkICAgIHNldF9idXJuX2JsZW5kZXIgICAgKGludCBy
LCBpbnQgZywgaW50IGIsIGludCBhKSAgOwogdm9pZCAgICBzZXRfY29sb3JfYmxlbmRlciAgICAo
aW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpICA7CiB2b2lkICAgIHNldF9kaWZmZXJlbmNlX2Js
ZW5kZXIgICAgKGludCByLCBpbnQgZywgaW50IGIsIGludCBhKSAgOwogdm9pZCAgICBzZXRfZGlz
c29sdmVfYmxlbmRlciAgICAoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpICA7CiB2b2lkICAg
IHNldF9kb2RnZV9ibGVuZGVyICAgIChpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkgIDsKIHZv
aWQgICAgc2V0X2h1ZV9ibGVuZGVyICAgIChpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkgIDsK
IHZvaWQgICAgc2V0X2ludmVydF9ibGVuZGVyICAgIChpbnQgciwgaW50IGcsIGludCBiLCBpbnQg
YSkgIDsKIHZvaWQgICAgc2V0X2x1bWluYW5jZV9ibGVuZGVyICAgIChpbnQgciwgaW50IGcsIGlu
dCBiLCBpbnQgYSkgIDsKIHZvaWQgICAgc2V0X211bHRpcGx5X2JsZW5kZXIgICAgKGludCByLCBp
bnQgZywgaW50IGIsIGludCBhKSAgOwogdm9pZCAgICBzZXRfc2F0dXJhdGlvbl9ibGVuZGVyICAg
IChpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkgIDsKIHZvaWQgICAgc2V0X3NjcmVlbl9ibGVu
ZGVyICAgIChpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkgIDsKCiB2b2lkICAgIGhzdl90b19y
Z2IgICAgKGZsb2F0IGgsIGZsb2F0IHMsIGZsb2F0IHYsIGludCAqciwgaW50ICpnLCBpbnQgKmIp
ICA7CiB2b2lkICAgIHJnYl90b19oc3YgICAgKGludCByLCBpbnQgZywgaW50IGIsIGZsb2F0ICpo
LCBmbG9hdCAqcywgZmxvYXQgKnYpICA7CgogaW50ICAgIGJlc3RmaXRfY29sb3IgICAgKGNvbnN0
ICBQQUxFVFRFIHBhbCwgaW50IHIsIGludCBnLCBpbnQgYikgIDsKCiBpbnQgICAgbWFrZWNvbCAg
ICAoaW50IHIsIGludCBnLCBpbnQgYikgIDsKIGludCAgICBtYWtlY29sOCAgICAoaW50IHIsIGlu
dCBnLCBpbnQgYikgIDsKIGludCAgICBtYWtlY29sX2RlcHRoICAgIChpbnQgY29sb3JfZGVwdGgs
IGludCByLCBpbnQgZywgaW50IGIpICA7CgogaW50ICAgIG1ha2VhY29sICAgIChpbnQgciwgaW50
IGcsIGludCBiLCBpbnQgYSkgIDsKIGludCAgICBtYWtlYWNvbF9kZXB0aCAgICAoaW50IGNvbG9y
X2RlcHRoLCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkgIDsKCiBpbnQgICAgbWFrZWNvbDE1
X2RpdGhlciAgICAoaW50IHIsIGludCBnLCBpbnQgYiwgaW50IHgsIGludCB5KSAgOwogaW50ICAg
IG1ha2Vjb2wxNl9kaXRoZXIgICAgKGludCByLCBpbnQgZywgaW50IGIsIGludCB4LCBpbnQgeSkg
IDsKCiBpbnQgICAgZ2V0ciAgICAoaW50IGMpICA7CiBpbnQgICAgZ2V0ZyAgICAoaW50IGMpICA7
CiBpbnQgICAgZ2V0YiAgICAoaW50IGMpICA7CiBpbnQgICAgZ2V0YSAgICAoaW50IGMpICA7Cgog
aW50ICAgIGdldHJfZGVwdGggICAgKGludCBjb2xvcl9kZXB0aCwgaW50IGMpICA7CiBpbnQgICAg
Z2V0Z19kZXB0aCAgICAoaW50IGNvbG9yX2RlcHRoLCBpbnQgYykgIDsKIGludCAgICBnZXRiX2Rl
cHRoICAgIChpbnQgY29sb3JfZGVwdGgsIGludCBjKSAgOwogaW50ICAgIGdldGFfZGVwdGggICAg
KGludCBjb2xvcl9kZXB0aCwgaW50IGMpICA7CgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxl
Z3JvL2lubGluZS9jb2xvci5pbmwiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgIGV4dGVy
biAiQyIgewoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBtYWtlY29sMTUgICAgKGludCByLCBpbnQg
ZywgaW50IGIpICAgCnsKICAgcmV0dXJuICgoKHIgPj4gMykgPDwgX3JnYl9yX3NoaWZ0XzE1KSB8
CiAgICAgICAgICAgKChnID4+IDMpIDw8IF9yZ2JfZ19zaGlmdF8xNSkgfAogICAgICAgICAgICgo
YiA+PiAzKSA8PCBfcmdiX2Jfc2hpZnRfMTUpKTsKfSAgCgoKc3RhdGljIGlubGluZSAgaW50ICAg
IG1ha2Vjb2wxNiAgICAoaW50IHIsIGludCBnLCBpbnQgYikgICAKewogICByZXR1cm4gKCgociA+
PiAzKSA8PCBfcmdiX3Jfc2hpZnRfMTYpIHwKICAgICAgICAgICAoKGcgPj4gMikgPDwgX3JnYl9n
X3NoaWZ0XzE2KSB8CiAgICAgICAgICAgKChiID4+IDMpIDw8IF9yZ2JfYl9zaGlmdF8xNikpOwp9
ICAKCgpzdGF0aWMgaW5saW5lICBpbnQgICAgbWFrZWNvbDI0ICAgIChpbnQgciwgaW50IGcsIGlu
dCBiKSAgIAp7CiAgIHJldHVybiAoKHIgPDwgX3JnYl9yX3NoaWZ0XzI0KSB8CiAgICAgICAgICAg
KGcgPDwgX3JnYl9nX3NoaWZ0XzI0KSB8CiAgICAgICAgICAgKGIgPDwgX3JnYl9iX3NoaWZ0XzI0
KSk7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBtYWtlY29sMzIgICAgKGludCByLCBpbnQg
ZywgaW50IGIpICAgCnsKICAgcmV0dXJuICgociA8PCBfcmdiX3Jfc2hpZnRfMzIpIHwKICAgICAg
ICAgICAoZyA8PCBfcmdiX2dfc2hpZnRfMzIpIHwKICAgICAgICAgICAoYiA8PCBfcmdiX2Jfc2hp
ZnRfMzIpKTsKfSAgCgoKc3RhdGljIGlubGluZSAgaW50ICAgIG1ha2VhY29sMzIgICAgKGludCBy
LCBpbnQgZywgaW50IGIsIGludCBhKSAgIAp7CiAgIHJldHVybiAoKHIgPDwgX3JnYl9yX3NoaWZ0
XzMyKSB8CiAgICAgICAgICAgKGcgPDwgX3JnYl9nX3NoaWZ0XzMyKSB8CiAgICAgICAgICAgKGIg
PDwgX3JnYl9iX3NoaWZ0XzMyKSB8CiAgICAgICAgICAgKGEgPDwgX3JnYl9hX3NoaWZ0XzMyKSk7
Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBnZXRyOCAgICAoaW50IGMpICAgCnsKICAgcmV0
dXJuIF9yZ2Jfc2NhbGVfNlsoaW50KV9jdXJyZW50X3BhbGV0dGVbY10ucl07Cn0gIAoKCnN0YXRp
YyBpbmxpbmUgIGludCAgICBnZXRnOCAgICAoaW50IGMpICAgCnsKICAgcmV0dXJuIF9yZ2Jfc2Nh
bGVfNlsoaW50KV9jdXJyZW50X3BhbGV0dGVbY10uZ107Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGlu
dCAgICBnZXRiOCAgICAoaW50IGMpICAgCnsKICAgcmV0dXJuIF9yZ2Jfc2NhbGVfNlsoaW50KV9j
dXJyZW50X3BhbGV0dGVbY10uYl07Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBnZXRyMTUg
ICAgKGludCBjKSAgIAp7CiAgIHJldHVybiBfcmdiX3NjYWxlXzVbKGMgPj4gX3JnYl9yX3NoaWZ0
XzE1KSAmIDB4MUZdOwp9ICAKCgpzdGF0aWMgaW5saW5lICBpbnQgICAgZ2V0ZzE1ICAgIChpbnQg
YykgICAKewogICByZXR1cm4gX3JnYl9zY2FsZV81WyhjID4+IF9yZ2JfZ19zaGlmdF8xNSkgJiAw
eDFGXTsKfSAgCgoKc3RhdGljIGlubGluZSAgaW50ICAgIGdldGIxNSAgICAoaW50IGMpICAgCnsK
ICAgcmV0dXJuIF9yZ2Jfc2NhbGVfNVsoYyA+PiBfcmdiX2Jfc2hpZnRfMTUpICYgMHgxRl07Cn0g
IAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBnZXRyMTYgICAgKGludCBjKSAgIAp7CiAgIHJldHVy
biBfcmdiX3NjYWxlXzVbKGMgPj4gX3JnYl9yX3NoaWZ0XzE2KSAmIDB4MUZdOwp9ICAKCgpzdGF0
aWMgaW5saW5lICBpbnQgICAgZ2V0ZzE2ICAgIChpbnQgYykgICAKewogICByZXR1cm4gX3JnYl9z
Y2FsZV82WyhjID4+IF9yZ2JfZ19zaGlmdF8xNikgJiAweDNGXTsKfSAgCgoKc3RhdGljIGlubGlu
ZSAgaW50ICAgIGdldGIxNiAgICAoaW50IGMpICAgCnsKICAgcmV0dXJuIF9yZ2Jfc2NhbGVfNVso
YyA+PiBfcmdiX2Jfc2hpZnRfMTYpICYgMHgxRl07Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAg
ICBnZXRyMjQgICAgKGludCBjKSAgIAp7CiAgIHJldHVybiAoKGMgPj4gX3JnYl9yX3NoaWZ0XzI0
KSAmIDB4RkYpOwp9ICAKCgpzdGF0aWMgaW5saW5lICBpbnQgICAgZ2V0ZzI0ICAgIChpbnQgYykg
ICAKewogICByZXR1cm4gKChjID4+IF9yZ2JfZ19zaGlmdF8yNCkgJiAweEZGKTsKfSAgCgoKc3Rh
dGljIGlubGluZSAgaW50ICAgIGdldGIyNCAgICAoaW50IGMpICAgCnsKICAgcmV0dXJuICgoYyA+
PiBfcmdiX2Jfc2hpZnRfMjQpICYgMHhGRik7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBn
ZXRyMzIgICAgKGludCBjKSAgIAp7CiAgIHJldHVybiAoKGMgPj4gX3JnYl9yX3NoaWZ0XzMyKSAm
IDB4RkYpOwp9ICAKCgpzdGF0aWMgaW5saW5lICBpbnQgICAgZ2V0ZzMyICAgIChpbnQgYykgICAK
ewogICByZXR1cm4gKChjID4+IF9yZ2JfZ19zaGlmdF8zMikgJiAweEZGKTsKfSAgCgoKc3RhdGlj
IGlubGluZSAgaW50ICAgIGdldGIzMiAgICAoaW50IGMpICAgCnsKICAgcmV0dXJuICgoYyA+PiBf
cmdiX2Jfc2hpZnRfMzIpICYgMHhGRik7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBnZXRh
MzIgICAgKGludCBjKSAgIAp7CiAgIHJldHVybiAoKGMgPj4gX3JnYl9hX3NoaWZ0XzMyKSAmIDB4
RkYpOwp9ICAKCgoKCnN0YXRpYyBpbmxpbmUgIHZvaWQgICAgX3NldF9jb2xvciAgICAoaW50IGlu
ZGV4LCBjb25zdCAgUkdCICpwKSAgIAp7CiAgIHNldF9jb2xvcihpbmRleCwgcCk7Cn0gIAoKCgoK
CiAgIH0KCgoKCgojIDE0NyAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vY29sb3IuaCIgMiAz
CgoKCiAgIH0KCgoKCgojIDQxICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby5oIiAyIDMKCiMg
MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vZHJhdy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogICBleHRlcm4gIkMiIHsKCgoKCgoKCgoKCgoKCiB2b2lkICAgIGRyYXdpbmdfbW9k
ZSAgICAoaW50IG1vZGUsIHN0cnVjdCBCSVRNQVAgKnBhdHRlcm4sIGludCB4X2FuY2hvciwgaW50
IHlfYW5jaG9yKSAgOwogdm9pZCAgICB4b3JfbW9kZSAgICAoaW50IG9uKSAgOwogdm9pZCAgICBz
b2xpZF9tb2RlICAgICh2b2lkKSAgOwogdm9pZCAgICBkb19saW5lICAgIChzdHJ1Y3QgQklUTUFQ
ICpibXAsIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MiwgaW50IGQsICB2b2lkICAoKiAg
cHJvYyApICAgKHN0cnVjdCBCSVRNQVAgKiwgaW50LCBpbnQsIGludCkgICkgIDsKIHZvaWQgICAg
dHJpYW5nbGUgICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgaW50IHgxLCBpbnQgeTEsIGludCB4Miwg
aW50IHkyLCBpbnQgeDMsIGludCB5MywgaW50IGNvbG9yKSAgOwogdm9pZCAgICBwb2x5Z29uICAg
IChzdHJ1Y3QgQklUTUFQICpibXAsIGludCB2ZXJ0aWNlcywgY29uc3QgIGludCAqcG9pbnRzLCBp
bnQgY29sb3IpICA7CiB2b2lkICAgIHJlY3QgICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgaW50IHgx
LCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBpbnQgY29sb3IpICA7CiB2b2lkICAgIGRvX2NpcmNs
ZSAgICAoc3RydWN0IEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHksIGludCByYWRpdXMsIGludCBk
LCAgdm9pZCAgKCogIHByb2MgKSAgIChzdHJ1Y3QgQklUTUFQICosIGludCwgaW50LCBpbnQpICAp
ICA7CiB2b2lkICAgIGNpcmNsZSAgICAoc3RydWN0IEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHks
IGludCByYWRpdXMsIGludCBjb2xvcikgIDsKIHZvaWQgICAgY2lyY2xlZmlsbCAgICAoc3RydWN0
IEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHksIGludCByYWRpdXMsIGludCBjb2xvcikgIDsKIHZv
aWQgICAgZG9fZWxsaXBzZSAgICAoc3RydWN0IEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50IHksIGlu
dCByeCwgaW50IHJ5LCBpbnQgZCwgIHZvaWQgICgqICBwcm9jICkgICAoc3RydWN0IEJJVE1BUCAq
LCBpbnQsIGludCwgaW50KSAgKSAgOwogdm9pZCAgICBlbGxpcHNlICAgIChzdHJ1Y3QgQklUTUFQ
ICpibXAsIGludCB4LCBpbnQgeSwgaW50IHJ4LCBpbnQgcnksIGludCBjb2xvcikgIDsKIHZvaWQg
ICAgZWxsaXBzZWZpbGwgICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5LCBpbnQg
cngsIGludCByeSwgaW50IGNvbG9yKSAgOwogdm9pZCAgICBkb19hcmMgICAgKHN0cnVjdCBCSVRN
QVAgKmJtcCwgaW50IHgsIGludCB5LCBmaXhlZCBhbmcxLCBmaXhlZCBhbmcyLCBpbnQgciwgaW50
IGQsICB2b2lkICAoKiAgcHJvYyApICAgKHN0cnVjdCBCSVRNQVAgKiwgaW50LCBpbnQsIGludCkg
ICkgIDsKIHZvaWQgICAgYXJjICAgIChzdHJ1Y3QgQklUTUFQICpibXAsIGludCB4LCBpbnQgeSwg
Zml4ZWQgYW5nMSwgZml4ZWQgYW5nMiwgaW50IHIsIGludCBjb2xvcikgIDsKIHZvaWQgICAgY2Fs
Y19zcGxpbmUgICAgKGNvbnN0ICBpbnQgcG9pbnRzWzhdLCBpbnQgbnB0cywgaW50ICp4LCBpbnQg
KnkpICA7CiB2b2lkICAgIHNwbGluZSAgICAoc3RydWN0IEJJVE1BUCAqYm1wLCBjb25zdCAgaW50
IHBvaW50c1s4XSwgaW50IGNvbG9yKSAgOwogdm9pZCAgICBmbG9vZGZpbGwgICAgKHN0cnVjdCBC
SVRNQVAgKmJtcCwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpICA7CiB2b2lkICAgIGJsaXQgICAg
KHN0cnVjdCBCSVRNQVAgKnNvdXJjZSwgc3RydWN0IEJJVE1BUCAqZGVzdCwgaW50IHNvdXJjZV94
LCBpbnQgc291cmNlX3ksIGludCBkZXN0X3gsIGludCBkZXN0X3ksIGludCB3aWR0aCwgaW50IGhl
aWdodCkgIDsKIHZvaWQgICAgbWFza2VkX2JsaXQgICAgKHN0cnVjdCBCSVRNQVAgKnNvdXJjZSwg
c3RydWN0IEJJVE1BUCAqZGVzdCwgaW50IHNvdXJjZV94LCBpbnQgc291cmNlX3ksIGludCBkZXN0
X3gsIGludCBkZXN0X3ksIGludCB3aWR0aCwgaW50IGhlaWdodCkgIDsKIHZvaWQgICAgc3RyZXRj
aF9ibGl0ICAgIChzdHJ1Y3QgQklUTUFQICpzLCBzdHJ1Y3QgQklUTUFQICpkLCBpbnQgc194LCBp
bnQgc195LCBpbnQgc193LCBpbnQgc19oLCBpbnQgZF94LCBpbnQgZF95LCBpbnQgZF93LCBpbnQg
ZF9oKSAgOwogdm9pZCAgICBtYXNrZWRfc3RyZXRjaF9ibGl0ICAgIChzdHJ1Y3QgQklUTUFQICpz
LCBzdHJ1Y3QgQklUTUFQICpkLCBpbnQgc194LCBpbnQgc195LCBpbnQgc193LCBpbnQgc19oLCBp
bnQgZF94LCBpbnQgZF95LCBpbnQgZF93LCBpbnQgZF9oKSAgOwogdm9pZCAgICBzdHJldGNoX3Nw
cml0ZSAgICAoc3RydWN0IEJJVE1BUCAqYm1wLCBzdHJ1Y3QgQklUTUFQICpzcHJpdGUsIGludCB4
LCBpbnQgeSwgaW50IHcsIGludCBoKSAgOwogdm9pZCAgICBkcmF3X2dvdXJhdWRfc3ByaXRlICAg
IChzdHJ1Y3QgQklUTUFQICpibXAsIHN0cnVjdCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5
LCBpbnQgYzEsIGludCBjMiwgaW50IGMzLCBpbnQgYzQpICA7CgojIDEgIi91c3IvbG9jYWwvaW5j
bHVkZS9hbGxlZ3JvL2lubGluZS9kcmF3LmlubCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
ICAgZXh0ZXJuICJDIiB7CgoKCgoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBnZXRwaXhlbCAgICAo
QklUTUFQICpibXAsIGludCB4LCBpbnQgeSkgICAKewogICAgOwoKICAgcmV0dXJuIGJtcC0+dnRh
YmxlLT5nZXRwaXhlbChibXAsIHgsIHkpOwp9ICAKCgpzdGF0aWMgaW5saW5lICB2b2lkICAgIHB1
dHBpeGVsICAgIChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpICAgCnsKICAg
IDsKCiAgIGJtcC0+dnRhYmxlLT5wdXRwaXhlbChibXAsIHgsIHksIGNvbG9yKTsKfSAgCgoKc3Rh
dGljIGlubGluZSAgdm9pZCAgICB2bGluZSAgICAoQklUTUFQICpibXAsIGludCB4LCBpbnQgeTEs
IGludCB5MiwgaW50IGNvbG9yKSAgIAp7CiAgICA7CgogICBibXAtPnZ0YWJsZS0+dmxpbmUoYm1w
LCB4LCB5MSwgeTIsIGNvbG9yKTsKfSAgCgoKc3RhdGljIGlubGluZSAgdm9pZCAgICBobGluZSAg
ICAoQklUTUFQICpibXAsIGludCB4MSwgaW50IHksIGludCB4MiwgaW50IGNvbG9yKSAgIAp7CiAg
ICA7CgogICBibXAtPnZ0YWJsZS0+aGxpbmUoYm1wLCB4MSwgeSwgeDIsIGNvbG9yKTsKfSAgCgoK
c3RhdGljIGlubGluZSAgdm9pZCAgICBsaW5lICAgIChCSVRNQVAgKmJtcCwgaW50IHgxLCBpbnQg
eTEsIGludCB4MiwgaW50IHkyLCBpbnQgY29sb3IpICAgCnsKICAgIDsKCiAgIGJtcC0+dnRhYmxl
LT5saW5lKGJtcCwgeDEsIHkxLCB4MiwgeTIsIGNvbG9yKTsKfSAgCgoKc3RhdGljIGlubGluZSAg
dm9pZCAgICByZWN0ZmlsbCAgICAoQklUTUFQICpibXAsIGludCB4MSwgaW50IHkxLCBpbnQgeDIs
IGludCB5MiwgaW50IGNvbG9yKSAgIAp7CiAgICA7CgogICBibXAtPnZ0YWJsZS0+cmVjdGZpbGwo
Ym1wLCB4MSwgeTEsIHgyLCB5MiwgY29sb3IpOwp9ICAKCgpzdGF0aWMgaW5saW5lICB2b2lkICAg
IGRyYXdfc3ByaXRlICAgIChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQg
eSkgICAKewogICAgOwogICAgOwoKICAgaWYgKHNwcml0ZS0+dnRhYmxlLT5jb2xvcl9kZXB0aCA9
PSA4KSB7CiAgICAgIGJtcC0+dnRhYmxlLT5kcmF3XzI1Nl9zcHJpdGUoYm1wLCBzcHJpdGUsIHgs
IHkpOwogICB9CiAgIGVsc2UgewogICAgICAgOwogICAgICBibXAtPnZ0YWJsZS0+ZHJhd19zcHJp
dGUoYm1wLCBzcHJpdGUsIHgsIHkpOwogICB9Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIHZvaWQgICAg
ZHJhd19zcHJpdGVfdl9mbGlwICAgIChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4
LCBpbnQgeSkgICB7CiAgICA7CiAgICA7CiAgICA7CgogICBibXAtPnZ0YWJsZS0+ZHJhd19zcHJp
dGVfdl9mbGlwKGJtcCwgc3ByaXRlLCB4LCB5KTsKfSAgCgoKc3RhdGljIGlubGluZSAgdm9pZCAg
ICBkcmF3X3Nwcml0ZV9oX2ZsaXAgICAgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0ZSwgaW50
IHgsIGludCB5KSAgIHsKICAgIDsKICAgIDsKICAgIDsKCiAgIGJtcC0+dnRhYmxlLT5kcmF3X3Nw
cml0ZV9oX2ZsaXAoYm1wLCBzcHJpdGUsIHgsIHkpOwp9ICAKCgpzdGF0aWMgaW5saW5lICB2b2lk
ICAgIGRyYXdfc3ByaXRlX3ZoX2ZsaXAgICAgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0ZSwg
aW50IHgsIGludCB5KSAgIAp7CiAgICA7CiAgICA7CiAgICA7CgogICBibXAtPnZ0YWJsZS0+ZHJh
d19zcHJpdGVfdmhfZmxpcChibXAsIHNwcml0ZSwgeCwgeSk7Cn0gIAoKCnN0YXRpYyBpbmxpbmUg
IHZvaWQgICAgZHJhd190cmFuc19zcHJpdGUgICAgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0
ZSwgaW50IHgsIGludCB5KSAgIAp7CiAgICA7CiAgICA7CgogICBpZiAoc3ByaXRlLT52dGFibGUt
PmNvbG9yX2RlcHRoID09IDMyKSB7CiAgICAgICA7CiAgICAgIGJtcC0+dnRhYmxlLT5kcmF3X3Ry
YW5zX3JnYmFfc3ByaXRlKGJtcCwgc3ByaXRlLCB4LCB5KTsKICAgfQogICBlbHNlIHsKICAgICAg
IDsKICAgICAgYm1wLT52dGFibGUtPmRyYXdfdHJhbnNfc3ByaXRlKGJtcCwgc3ByaXRlLCB4LCB5
KTsKICAgfQp9ICAKCgoKCnN0YXRpYyBpbmxpbmUgIHZvaWQgICAgZHJhd19saXRfc3ByaXRlICAg
IChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSwgaW50IGNvbG9yKSAg
IAp7CiAgICA7CiAgICA7CiAgICA7CgogICBibXAtPnZ0YWJsZS0+ZHJhd19saXRfc3ByaXRlKGJt
cCwgc3ByaXRlLCB4LCB5LCBjb2xvcik7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIHZvaWQgICAgZHJh
d19jaGFyYWN0ZXIgICAgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5
LCBpbnQgY29sb3IpICAgCnsKICAgIDsKICAgIDsKICAgIDsKCiAgIGJtcC0+dnRhYmxlLT5kcmF3
X2NoYXJhY3RlcihibXAsIHNwcml0ZSwgeCwgeSwgY29sb3IpOwp9ICAKCgpzdGF0aWMgaW5saW5l
ICB2b2lkICAgIHJvdGF0ZV9zcHJpdGUgICAgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0ZSwg
aW50IHgsIGludCB5LCBmaXhlZCBhbmdsZSkgICAKewogICAgOwogICAgOwoKICAgYm1wLT52dGFi
bGUtPnBpdm90X3NjYWxlZF9zcHJpdGVfZmxpcChibXAsIHNwcml0ZSwgKHg8PDE2KSArIChzcHJp
dGUtPncgKiAweDEwMDAwKSAvIDIsCgkJCSAgICAgCQkJICAgICAgKHk8PDE2KSArIChzcHJpdGUt
PmggKiAweDEwMDAwKSAvIDIsCgkJCSAgICAgCQkJICAgICAgc3ByaXRlLT53IDw8IDE1LCBzcHJp
dGUtPmggPDwgMTUsCgkJCSAgICAgCQkJICAgICAgYW5nbGUsIDB4MTAwMDAsIDAgKTsKfSAgCgoK
c3RhdGljIGlubGluZSAgdm9pZCAgICByb3RhdGVfc3ByaXRlX3ZfZmxpcCAgICAoQklUTUFQICpi
bXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50IHksIGZpeGVkIGFuZ2xlKSAgIAp7CiAgICA7
CiAgICA7CgogICBibXAtPnZ0YWJsZS0+cGl2b3Rfc2NhbGVkX3Nwcml0ZV9mbGlwKGJtcCwgc3By
aXRlLCAoeDw8MTYpICsgKHNwcml0ZS0+dyAqIDB4MTAwMDApIC8gMiwKCQkJICAgICAJCQkgICAg
ICAoeTw8MTYpICsgKHNwcml0ZS0+aCAqIDB4MTAwMDApIC8gMiwKCQkJICAgICAJCQkgICAgICBz
cHJpdGUtPncgPDwgMTUsIHNwcml0ZS0+aCA8PCAxNSwKCQkJICAgICAJCQkgICAgICBhbmdsZSwg
MHgxMDAwMCwgLTEgKTsKfSAgCgoKc3RhdGljIGlubGluZSAgdm9pZCAgICByb3RhdGVfc2NhbGVk
X3Nwcml0ZSAgICAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50IHksIGZp
eGVkIGFuZ2xlLCBmaXhlZCBzY2FsZSkgICAKewogICAgOwogICAgOwoKICAgYm1wLT52dGFibGUt
PnBpdm90X3NjYWxlZF9zcHJpdGVfZmxpcChibXAsIHNwcml0ZSwgKHg8PDE2KSArIChzcHJpdGUt
PncgKiBzY2FsZSkgLyAyLAoJCQkgICAgIAkJCSAgICAgICh5PDwxNikgKyAoc3ByaXRlLT5oICog
c2NhbGUpIC8gMiwKCQkJICAgICAJCQkgICAgICBzcHJpdGUtPncgPDwgMTUsIHNwcml0ZS0+aCA8
PCAxNSwKCQkJICAgICAJCQkgICAgICBhbmdsZSwgc2NhbGUsIDAgKTsKfSAgCgoKc3RhdGljIGlu
bGluZSAgdm9pZCAgICByb3RhdGVfc2NhbGVkX3Nwcml0ZV92X2ZsaXAgICAgKEJJVE1BUCAqYm1w
LCBCSVRNQVAgKnNwcml0ZSwgaW50IHgsIGludCB5LCBmaXhlZCBhbmdsZSwgZml4ZWQgc2NhbGUp
ICAgCnsKICAgIDsKICAgIDsKCiAgIGJtcC0+dnRhYmxlLT5waXZvdF9zY2FsZWRfc3ByaXRlX2Zs
aXAoYm1wLCBzcHJpdGUsICh4PDwxNikgKyAoc3ByaXRlLT53ICogc2NhbGUpIC8gMiwKCQkJICAg
ICAJCQkgICAgICAoeTw8MTYpICsgKHNwcml0ZS0+aCAqIHNjYWxlKSAvIDIsCgkJCSAgICAgCQkJ
ICAgICAgc3ByaXRlLT53IDw8IDE1LCBzcHJpdGUtPmggPDwgMTUsCgkJCSAgICAgCQkJICAgICAg
YW5nbGUsIHNjYWxlLCAtMSApOwp9ICAKCgpzdGF0aWMgaW5saW5lICB2b2lkICAgIHBpdm90X3Nw
cml0ZSAgICAoQklUTUFQICpibXAsIEJJVE1BUCAqc3ByaXRlLCBpbnQgeCwgaW50IHksIGludCBj
eCwgaW50IGN5LCBmaXhlZCBhbmdsZSkgICAKewogICAgOwogICAgOwoKICAgYm1wLT52dGFibGUt
PnBpdm90X3NjYWxlZF9zcHJpdGVfZmxpcChibXAsIHNwcml0ZSwgeDw8MTYsIHk8PDE2LCBjeDw8
MTYsIGN5PDwxNiwgYW5nbGUsIDB4MTAwMDAsIDAgKTsKfSAgCgoKc3RhdGljIGlubGluZSAgdm9p
ZCAgICBwaXZvdF9zcHJpdGVfdl9mbGlwICAgIChCSVRNQVAgKmJtcCwgQklUTUFQICpzcHJpdGUs
IGludCB4LCBpbnQgeSwgaW50IGN4LCBpbnQgY3ksIGZpeGVkIGFuZ2xlKSAgIAp7CiAgICA7CiAg
ICA7CgogICBibXAtPnZ0YWJsZS0+cGl2b3Rfc2NhbGVkX3Nwcml0ZV9mbGlwKGJtcCwgc3ByaXRl
LCB4PDwxNiwgeTw8MTYsIGN4PDwxNiwgY3k8PDE2LCBhbmdsZSwgMHgxMDAwMCwgLTEgKTsKfSAg
CgoKc3RhdGljIGlubGluZSAgdm9pZCAgICBwaXZvdF9zY2FsZWRfc3ByaXRlICAgIChCSVRNQVAg
KmJtcCwgQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSwgaW50IGN4LCBpbnQgY3ksIGZpeGVk
IGFuZ2xlLCBmaXhlZCBzY2FsZSkgICAKewogICAgOwogICAgOwoKICAgYm1wLT52dGFibGUtPnBp
dm90X3NjYWxlZF9zcHJpdGVfZmxpcChibXAsIHNwcml0ZSwgeDw8MTYsIHk8PDE2LCBjeDw8MTYs
IGN5PDwxNiwgYW5nbGUsIHNjYWxlLCAwICk7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIHZvaWQgICAg
cGl2b3Rfc2NhbGVkX3Nwcml0ZV92X2ZsaXAgICAgKEJJVE1BUCAqYm1wLCBCSVRNQVAgKnNwcml0
ZSwgaW50IHgsIGludCB5LCBpbnQgY3gsIGludCBjeSwgZml4ZWQgYW5nbGUsIGZpeGVkIHNjYWxl
KSAgIAp7CiAgICA7CiAgICA7CgogICBibXAtPnZ0YWJsZS0+cGl2b3Rfc2NhbGVkX3Nwcml0ZV9m
bGlwKGJtcCwgc3ByaXRlLCB4PDwxNiwgeTw8MTYsIGN4PDwxNiwgY3k8PDE2LCBhbmdsZSwgc2Nh
bGUsIC0xICk7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIHZvaWQgICAgX3B1dHBpeGVsICAgIChCSVRN
QVAgKmJtcCwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpICAgCnsKICAgdW5zaWduZWQgbG9uZyBh
ZGRyOwoKICAgIDsKICAgYWRkciA9IGJtcF93cml0ZV9saW5lKGJtcCwgeSk7CiAgICgqKCh1bnNp
Z25lZCBjaGFyICAqKSggYWRkcit4ICkpID0gKCAgY29sb3IgKSkgOwogICBibXBfdW53cml0ZV9s
aW5lKGJtcCk7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBfZ2V0cGl4ZWwgICAgKEJJVE1B
UCAqYm1wLCBpbnQgeCwgaW50IHkpICAgCnsKICAgdW5zaWduZWQgbG9uZyBhZGRyOwogICBpbnQg
YzsKCiAgICA7CiAgIGFkZHIgPSBibXBfcmVhZF9saW5lKGJtcCwgeSk7CiAgIGMgPSAoKigodW5z
aWduZWQgY2hhciAgKikoIGFkZHIreCApKSkgOwogICBibXBfdW53cml0ZV9saW5lKGJtcCk7Cgog
ICByZXR1cm4gYzsKfSAgCgoKc3RhdGljIGlubGluZSAgdm9pZCAgICBfcHV0cGl4ZWwxNSAgICAo
QklUTUFQICpibXAsIGludCB4LCBpbnQgeSwgaW50IGNvbG9yKSAgIAp7CiAgIHVuc2lnbmVkIGxv
bmcgYWRkcjsKCiAgICA7CiAgIGFkZHIgPSBibXBfd3JpdGVfbGluZShibXAsIHkpOwogICAoKigo
dW5zaWduZWQgc2hvcnQgKikoIGFkZHIreCpzaXplb2Yoc2hvcnQpICkpID0gKCAgY29sb3IgKSkg
OwogICBibXBfdW53cml0ZV9saW5lKGJtcCk7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBf
Z2V0cGl4ZWwxNSAgICAoQklUTUFQICpibXAsIGludCB4LCBpbnQgeSkgICAKewogICB1bnNpZ25l
ZCBsb25nIGFkZHI7CiAgIGludCBjOwoKICAgIDsKICAgYWRkciA9IGJtcF9yZWFkX2xpbmUoYm1w
LCB5KTsKICAgYyA9ICgqKCh1bnNpZ25lZCBzaG9ydCAqKSggYWRkcit4KnNpemVvZihzaG9ydCkg
KSkpIDsKICAgYm1wX3Vud3JpdGVfbGluZShibXApOwoKICAgcmV0dXJuIGM7Cn0gIAoKCnN0YXRp
YyBpbmxpbmUgIHZvaWQgICAgX3B1dHBpeGVsMTYgICAgKEJJVE1BUCAqYm1wLCBpbnQgeCwgaW50
IHksIGludCBjb2xvcikgICAKewogICB1bnNpZ25lZCBsb25nIGFkZHI7CgogICAgOwogICBhZGRy
ID0gYm1wX3dyaXRlX2xpbmUoYm1wLCB5KTsKICAgKCooKHVuc2lnbmVkIHNob3J0ICopKCBhZGRy
K3gqc2l6ZW9mKHNob3J0KSApKSA9ICggIGNvbG9yICkpIDsKICAgYm1wX3Vud3JpdGVfbGluZShi
bXApOwp9ICAKCgpzdGF0aWMgaW5saW5lICBpbnQgICAgX2dldHBpeGVsMTYgICAgKEJJVE1BUCAq
Ym1wLCBpbnQgeCwgaW50IHkpICAgCnsKICAgdW5zaWduZWQgbG9uZyBhZGRyOwogICBpbnQgYzsK
CiAgICA7CiAgIGFkZHIgPSBibXBfcmVhZF9saW5lKGJtcCwgeSk7CiAgIGMgPSAoKigodW5zaWdu
ZWQgc2hvcnQgKikoIGFkZHIreCpzaXplb2Yoc2hvcnQpICkpKSA7CiAgIGJtcF91bndyaXRlX2xp
bmUoYm1wKTsKCiAgIHJldHVybiBjOwp9ICAKCgpzdGF0aWMgaW5saW5lICB2b2lkICAgIF9wdXRw
aXhlbDI0ICAgIChCSVRNQVAgKmJtcCwgaW50IHgsIGludCB5LCBpbnQgY29sb3IpICAgCnsKICAg
dW5zaWduZWQgbG9uZyBhZGRyOwoKICAgIDsKICAgYWRkciA9IGJtcF93cml0ZV9saW5lKGJtcCwg
eSk7CiAgIGJtcF93cml0ZTI0KGFkZHIreCozLCBjb2xvcik7CiAgIGJtcF91bndyaXRlX2xpbmUo
Ym1wKTsKfSAgCgoKc3RhdGljIGlubGluZSAgaW50ICAgIF9nZXRwaXhlbDI0ICAgIChCSVRNQVAg
KmJtcCwgaW50IHgsIGludCB5KSAgIAp7CiAgIHVuc2lnbmVkIGxvbmcgYWRkcjsKICAgaW50IGM7
CgogICAgOwogICBhZGRyID0gYm1wX3JlYWRfbGluZShibXAsIHkpOwogICBjID0gYm1wX3JlYWQy
NChhZGRyK3gqMyk7CiAgIGJtcF91bndyaXRlX2xpbmUoYm1wKTsKCiAgIHJldHVybiBjOwp9ICAK
CgpzdGF0aWMgaW5saW5lICB2b2lkICAgIF9wdXRwaXhlbDMyICAgIChCSVRNQVAgKmJtcCwgaW50
IHgsIGludCB5LCBpbnQgY29sb3IpICAgCnsKICAgdW5zaWduZWQgbG9uZyBhZGRyOwoKICAgIDsK
ICAgYWRkciA9IGJtcF93cml0ZV9saW5lKGJtcCwgeSk7CiAgICgqKCh1bnNpZ25lZCBsb25nICAq
KSggYWRkcit4KnNpemVvZihsb25nKSApKSA9ICggIGNvbG9yICkpIDsKICAgYm1wX3Vud3JpdGVf
bGluZShibXApOwp9ICAKCgpzdGF0aWMgaW5saW5lICBpbnQgICAgX2dldHBpeGVsMzIgICAgKEJJ
VE1BUCAqYm1wLCBpbnQgeCwgaW50IHkpICAgCnsKICAgdW5zaWduZWQgbG9uZyBhZGRyOwogICBp
bnQgYzsKCiAgICA7CiAgIGFkZHIgPSBibXBfcmVhZF9saW5lKGJtcCwgeSk7CiAgIGMgPSAoKigo
dW5zaWduZWQgbG9uZyAgKikoIGFkZHIreCpzaXplb2YobG9uZykgKSkpIDsKICAgYm1wX3Vud3Jp
dGVfbGluZShibXApOwoKICAgcmV0dXJuIGM7Cn0gIAoKCiAgIH0KCgoKCgojIDYyICIvdXNyL2xv
Y2FsL2luY2x1ZGUvYWxsZWdyby9kcmF3LmgiIDIgMwoKCgogICB9CgoKCgoKIyA0MiAiL3Vzci9s
b2NhbC9pbmNsdWRlL2FsbGVncm8uaCIgMiAzCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxl
Z3JvL3JsZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogICBleHRlcm4gIkMiIHsKCgoK
Cgp0eXBlZGVmIHN0cnVjdCBSTEVfU1BSSVRFICAgICAgICAgICAgCnsKICAgaW50IHcsIGg7ICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICBpbnQgY29sb3JfZGVwdGg7ICAgICAgICAgICAgICAg
ICAgCiAgIGludCBzaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAKICAgc2lnbmVkIGNoYXIg
ZGF0WzAgXTsKfSBSTEVfU1BSSVRFOwoKCiBSTEVfU1BSSVRFICogICAgZ2V0X3JsZV9zcHJpdGUg
ICAgKHN0cnVjdCBCSVRNQVAgKmJpdG1hcCkgIDsKIHZvaWQgICAgZGVzdHJveV9ybGVfc3ByaXRl
ICAgIChSTEVfU1BSSVRFICpzcHJpdGUpICA7CgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxl
Z3JvL2lubGluZS9ybGUuaW5sIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogICBleHRlcm4g
IkMiIHsKCgoKCgpzdGF0aWMgaW5saW5lICB2b2lkICAgIGRyYXdfcmxlX3Nwcml0ZSAgICAoc3Ry
dWN0IEJJVE1BUCAqYm1wLCBjb25zdCAgc3RydWN0IFJMRV9TUFJJVEUgKnNwcml0ZSwgaW50IHgs
IGludCB5KSAgIAp7CiAgICA7CiAgICA7CiAgICA7CgogICBibXAtPnZ0YWJsZS0+ZHJhd19ybGVf
c3ByaXRlKGJtcCwgc3ByaXRlLCB4LCB5KTsKfSAgCgoKc3RhdGljIGlubGluZSAgdm9pZCAgICBk
cmF3X3RyYW5zX3JsZV9zcHJpdGUgICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgY29uc3QgIHN0cnVj
dCBSTEVfU1BSSVRFICpzcHJpdGUsIGludCB4LCBpbnQgeSkgICAKewogICAgOwogICAgOwoKICAg
aWYgKHNwcml0ZS0+Y29sb3JfZGVwdGggPT0gMzIpIHsKICAgICAgIDsKICAgICAgYm1wLT52dGFi
bGUtPmRyYXdfdHJhbnNfcmdiYV9ybGVfc3ByaXRlKGJtcCwgc3ByaXRlLCB4LCB5KTsKICAgfQog
ICBlbHNlIHsKICAgICAgIDsKICAgICAgYm1wLT52dGFibGUtPmRyYXdfdHJhbnNfcmxlX3Nwcml0
ZShibXAsIHNwcml0ZSwgeCwgeSk7CiAgIH0KfSAgCgoKc3RhdGljIGlubGluZSAgdm9pZCAgICBk
cmF3X2xpdF9ybGVfc3ByaXRlICAgIChzdHJ1Y3QgQklUTUFQICpibXAsIGNvbnN0ICBzdHJ1Y3Qg
UkxFX1NQUklURSAqc3ByaXRlLCBpbnQgeCwgaW50IHksIGludCBjb2xvcikgICAKewogICAgOwog
ICAgOwogICAgOwoKICAgYm1wLT52dGFibGUtPmRyYXdfbGl0X3JsZV9zcHJpdGUoYm1wLCBzcHJp
dGUsIHgsIHksIGNvbG9yKTsKfSAgCgoKICAgfQoKCgoKCiMgNDEgIi91c3IvbG9jYWwvaW5jbHVk
ZS9hbGxlZ3JvL3JsZS5oIiAyIDMKCgoKICAgfQoKCgoKCiMgNDMgIi91c3IvbG9jYWwvaW5jbHVk
ZS9hbGxlZ3JvLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9jb21waWxl
ZC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogICBleHRlcm4gIkMiIHsKCgoKCnN0cnVj
dCBCSVRNQVA7CgoKCiAKdHlwZWRlZiBzdHJ1Y3QgQ09NUElMRURfU1BSSVRFCnsKICAgc2hvcnQg
cGxhbmFyOyAgICAgICAgICAgICAgICAgICAgIAogICBzaG9ydCBjb2xvcl9kZXB0aDsgICAgICAg
ICAgICAgICAgCiAgIHNob3J0IHcsIGg7ICAgICAgICAgICAgICAgICAgICAgICAKICAgc3RydWN0
IHsKICAgICAgdm9pZCAqZHJhdzsgICAgICAgICAgICAgICAgICAgIAogICAgICBpbnQgbGVuOyAg
ICAgICAgICAgICAgICAgICAgICAgCiAgIH0gcHJvY1s0XTsKfSBDT01QSUxFRF9TUFJJVEU7CgoK
CgoKCgoKCiBDT01QSUxFRF9TUFJJVEUgKiAgICBnZXRfY29tcGlsZWRfc3ByaXRlICAgIChzdHJ1
Y3QgQklUTUFQICpiaXRtYXAsIGludCBwbGFuYXIpICA7CiB2b2lkICAgIGRlc3Ryb3lfY29tcGls
ZWRfc3ByaXRlICAgIChDT01QSUxFRF9TUFJJVEUgKnNwcml0ZSkgIDsKIHZvaWQgICAgZHJhd19j
b21waWxlZF9zcHJpdGUgICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgY29uc3QgIENPTVBJTEVEX1NQ
UklURSAqc3ByaXRlLCBpbnQgeCwgaW50IHkpICA7CgoKICAgfQoKCgoKCiMgNDQgIi91c3IvbG9j
YWwvaW5jbHVkZS9hbGxlZ3JvLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdy
by90ZXh0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgIGV4dGVybiAiQyIgewoKCgoK
c3RydWN0IEJJVE1BUDsKCnR5cGVkZWYgc3RydWN0IEZPTlRfR0xZUEggICAgICAgICAgICAKewog
ICBzaG9ydCB3LCBoOwogICB1bnNpZ25lZCBjaGFyIGRhdFswIF07Cn0gRk9OVF9HTFlQSDsKCgpz
dHJ1Y3QgRk9OVF9WVEFCTEU7Cgp0eXBlZGVmIHN0cnVjdCBGT05UCnsKICAgdm9pZCAqZGF0YTsK
ICAgaW50IGhlaWdodDsKICAgc3RydWN0IEZPTlRfVlRBQkxFICp2dGFibGU7Cn0gRk9OVDsKCmV4
dGVybiAgRk9OVCAqICAgIGZvbnQgIDsKZXh0ZXJuICBpbnQgICAgYWxsZWdyb180MDRfY2hhciAg
OwogaW50ICAgIHRleHRfbW9kZSAgICAoaW50IG1vZGUpICA7CiB2b2lkICAgIHRleHRvdXQgICAg
KHN0cnVjdCBCSVRNQVAgKmJtcCwgY29uc3QgIEZPTlQgKmYsIGNvbnN0ICBjaGFyICpzdHIsIGlu
dCB4LCBpbnQgeSwgaW50IGNvbG9yKSAgOwogdm9pZCAgICB0ZXh0b3V0X2NlbnRyZSAgICAoc3Ry
dWN0IEJJVE1BUCAqYm1wLCBjb25zdCAgRk9OVCAqZiwgY29uc3QgIGNoYXIgKnN0ciwgaW50IHgs
IGludCB5LCBpbnQgY29sb3IpICA7CiB2b2lkICAgIHRleHRvdXRfcmlnaHQgICAgKHN0cnVjdCBC
SVRNQVAgKmJtcCwgY29uc3QgIEZPTlQgKmYsIGNvbnN0ICBjaGFyICpzdHIsIGludCB4LCBpbnQg
eSwgaW50IGNvbG9yKSAgOwogdm9pZCAgICB0ZXh0b3V0X2p1c3RpZnkgICAgKHN0cnVjdCBCSVRN
QVAgKmJtcCwgY29uc3QgIEZPTlQgKmYsIGNvbnN0ICBjaGFyICpzdHIsIGludCB4MSwgaW50IHgy
LCBpbnQgeSwgaW50IGRpZmYsIGludCBjb2xvcikgIDsKICB2b2lkICAgICAgIHRleHRwcmludGYg
ICAgICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgY29uc3QgIEZPTlQgKmYsIGludCB4LCBpbnQgeSwg
aW50IGNvbG9yLCBjb25zdCAgY2hhciAqZm9ybWF0LCAuLi4pICAgIF9fYXR0cmlidXRlX18gKChm
b3JtYXQgKHByaW50ZiwgICA2ICwgICA3ICkpKSA7CiAgdm9pZCAgICAgICB0ZXh0cHJpbnRmX2Nl
bnRyZSAgICAgICAoc3RydWN0IEJJVE1BUCAqYm1wLCBjb25zdCAgRk9OVCAqZiwgaW50IHgsIGlu
dCB5LCBpbnQgY29sb3IsIGNvbnN0ICBjaGFyICpmb3JtYXQsIC4uLikgICAgX19hdHRyaWJ1dGVf
XyAoKGZvcm1hdCAocHJpbnRmLCAgIDYgLCAgIDcgKSkpIDsKICB2b2lkICAgICAgIHRleHRwcmlu
dGZfcmlnaHQgICAgICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgY29uc3QgIEZPTlQgKmYsIGludCB4
LCBpbnQgeSwgaW50IGNvbG9yLCBjb25zdCAgY2hhciAqZm9ybWF0LCAuLi4pICAgIF9fYXR0cmli
dXRlX18gKChmb3JtYXQgKHByaW50ZiwgICA2ICwgICA3ICkpKSA7CiAgdm9pZCAgICAgICB0ZXh0
cHJpbnRmX2p1c3RpZnkgICAgICAgKHN0cnVjdCBCSVRNQVAgKmJtcCwgY29uc3QgIEZPTlQgKmYs
IGludCB4MSwgaW50IHgyLCBpbnQgeSwgaW50IGRpZmYsIGludCBjb2xvciwgY29uc3QgIGNoYXIg
KmZvcm1hdCwgLi4uKSAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsICAgOCAsICAg
OSApKSkgOwogaW50ICAgIHRleHRfbGVuZ3RoICAgIChjb25zdCAgRk9OVCAqZiwgY29uc3QgIGNo
YXIgKnN0cikgIDsKIGludCAgICB0ZXh0X2hlaWdodCAgICAoY29uc3QgIEZPTlQgKmYpICA7CiB2
b2lkICAgIGRlc3Ryb3lfZm9udCAgICAoRk9OVCAqZikgIDsKCgogICB9CgoKCgoKIyA0NSAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2FsbGVncm8uaCIgMiAzCgoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUv
YWxsZWdyby9mbGkuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgZXh0ZXJuICJDIiB7
CgoKCgoKc3RydWN0IEJJVE1BUDsKCgoKCgoKIGludCAgICBwbGF5X2ZsaSAgICAoY29uc3QgIGNo
YXIgKmZpbGVuYW1lLCBzdHJ1Y3QgQklUTUFQICpibXAsIGludCBsb29wLCAgaW50ICAoKiAgY2Fs
bGJhY2sgKSAgICh2b2lkKSAgKSAgOwogaW50ICAgIHBsYXlfbWVtb3J5X2ZsaSAgICAodm9pZCAq
ZmxpX2RhdGEsIHN0cnVjdCBCSVRNQVAgKmJtcCwgaW50IGxvb3AsICBpbnQgICgqICBjYWxsYmFj
ayApICAgKHZvaWQpICApICA7CgogaW50ICAgIG9wZW5fZmxpICAgIChjb25zdCAgY2hhciAqZmls
ZW5hbWUpICA7CiBpbnQgICAgb3Blbl9tZW1vcnlfZmxpICAgICh2b2lkICpmbGlfZGF0YSkgIDsK
IHZvaWQgICAgY2xvc2VfZmxpICAgICh2b2lkKSAgOwogaW50ICAgIG5leHRfZmxpX2ZyYW1lICAg
IChpbnQgbG9vcCkgIDsKIHZvaWQgICAgcmVzZXRfZmxpX3ZhcmlhYmxlcyAgICAodm9pZCkgIDsK
CmV4dGVybiAgc3RydWN0IEJJVE1BUCAqICAgIGZsaV9iaXRtYXAgIDsgICAgCmV4dGVybiAgUEFM
RVRURSAgICBmbGlfcGFsZXR0ZSAgOyAgICAgICAgICAgCgpleHRlcm4gIGludCAgICBmbGlfYm1w
X2RpcnR5X2Zyb20gIDsgICAgICAgIApleHRlcm4gIGludCAgICBmbGlfYm1wX2RpcnR5X3RvICA7
CmV4dGVybiAgaW50ICAgIGZsaV9wYWxfZGlydHlfZnJvbSAgOyAgICAgICAgCmV4dGVybiAgaW50
ICAgIGZsaV9wYWxfZGlydHlfdG8gIDsKCmV4dGVybiAgaW50ICAgIGZsaV9mcmFtZSAgOyAgICAg
ICAgICAgICAgICAgCgpleHRlcm4gIHZvbGF0aWxlIGludCAgICBmbGlfdGltZXIgIDsgICAgICAg
IAoKCiAgIH0KCgoKCgojIDQ3ICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby5oIiAyIDMKCiMg
MSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vY29uZmlnLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAgIGV4dGVybiAiQyIgewoKCgoKIHZvaWQgICAgc2V0X2NvbmZpZ19maWxlICAg
IChjb25zdCAgY2hhciAqZmlsZW5hbWUpICA7CiB2b2lkICAgIHNldF9jb25maWdfZGF0YSAgICAo
Y29uc3QgIGNoYXIgKmRhdGEsIGludCBsZW5ndGgpICA7CiB2b2lkICAgIG92ZXJyaWRlX2NvbmZp
Z19maWxlICAgIChjb25zdCAgY2hhciAqZmlsZW5hbWUpICA7CiB2b2lkICAgIG92ZXJyaWRlX2Nv
bmZpZ19kYXRhICAgIChjb25zdCAgY2hhciAqZGF0YSwgaW50IGxlbmd0aCkgIDsKIHZvaWQgICAg
Zmx1c2hfY29uZmlnX2ZpbGUgICAgKHZvaWQpICA7CiB2b2lkICAgIHJlbG9hZF9jb25maWdfdGV4
dHMgICAgKGNvbnN0ICBjaGFyICpuZXdfbGFuZ3VhZ2UpICA7Cgogdm9pZCAgICBwdXNoX2NvbmZp
Z19zdGF0ZSAgICAodm9pZCkgIDsKIHZvaWQgICAgcG9wX2NvbmZpZ19zdGF0ZSAgICAodm9pZCkg
IDsKCiB2b2lkICAgIGhvb2tfY29uZmlnX3NlY3Rpb24gICAgKGNvbnN0ICBjaGFyICpzZWN0aW9u
LCAgaW50ICAoKiAgaW50Z2V0dGVyICkgICAoY29uc3QgIGNoYXIgKiwgaW50KSAgLCAgY29uc3Qg
IGNoYXIgKiAgKCogIHN0cmluZ2dldHRlciApICAgKGNvbnN0ICBjaGFyICosIGNvbnN0ICBjaGFy
ICopICAsICB2b2lkICAoKiAgc3RyaW5nc2V0dGVyICkgICAoY29uc3QgIGNoYXIgKiwgY29uc3Qg
IGNoYXIgKikgICkgIDsKIGludCAgICBjb25maWdfaXNfaG9va2VkICAgIChjb25zdCAgY2hhciAq
c2VjdGlvbikgIDsKCiBjb25zdCAgY2hhciAqICAgIGdldF9jb25maWdfc3RyaW5nICAgIChjb25z
dCAgY2hhciAqc2VjdGlvbiwgY29uc3QgIGNoYXIgKm5hbWUsIGNvbnN0ICBjaGFyICpkZWYpICA7
CiBpbnQgICAgZ2V0X2NvbmZpZ19pbnQgICAgKGNvbnN0ICBjaGFyICpzZWN0aW9uLCBjb25zdCAg
Y2hhciAqbmFtZSwgaW50IGRlZikgIDsKIGludCAgICBnZXRfY29uZmlnX2hleCAgICAoY29uc3Qg
IGNoYXIgKnNlY3Rpb24sIGNvbnN0ICBjaGFyICpuYW1lLCBpbnQgZGVmKSAgOwogZmxvYXQgICAg
Z2V0X2NvbmZpZ19mbG9hdCAgICAoY29uc3QgIGNoYXIgKnNlY3Rpb24sIGNvbnN0ICBjaGFyICpu
YW1lLCBmbG9hdCBkZWYpICA7CiBpbnQgICAgZ2V0X2NvbmZpZ19pZCAgICAoY29uc3QgIGNoYXIg
KnNlY3Rpb24sIGNvbnN0ICBjaGFyICpuYW1lLCBpbnQgZGVmKSAgOwogY2hhciAqKiAgICBnZXRf
Y29uZmlnX2FyZ3YgICAgKGNvbnN0ICBjaGFyICpzZWN0aW9uLCBjb25zdCAgY2hhciAqbmFtZSwg
aW50ICphcmdjKSAgOwogY29uc3QgIGNoYXIgKiAgICBnZXRfY29uZmlnX3RleHQgICAgKGNvbnN0
ICBjaGFyICptc2cpICA7Cgogdm9pZCAgICBzZXRfY29uZmlnX3N0cmluZyAgICAoY29uc3QgIGNo
YXIgKnNlY3Rpb24sIGNvbnN0ICBjaGFyICpuYW1lLCBjb25zdCAgY2hhciAqdmFsKSAgOwogdm9p
ZCAgICBzZXRfY29uZmlnX2ludCAgICAoY29uc3QgIGNoYXIgKnNlY3Rpb24sIGNvbnN0ICBjaGFy
ICpuYW1lLCBpbnQgdmFsKSAgOwogdm9pZCAgICBzZXRfY29uZmlnX2hleCAgICAoY29uc3QgIGNo
YXIgKnNlY3Rpb24sIGNvbnN0ICBjaGFyICpuYW1lLCBpbnQgdmFsKSAgOwogdm9pZCAgICBzZXRf
Y29uZmlnX2Zsb2F0ICAgIChjb25zdCAgY2hhciAqc2VjdGlvbiwgY29uc3QgIGNoYXIgKm5hbWUs
IGZsb2F0IHZhbCkgIDsKIHZvaWQgICAgc2V0X2NvbmZpZ19pZCAgICAoY29uc3QgIGNoYXIgKnNl
Y3Rpb24sIGNvbnN0ICBjaGFyICpuYW1lLCBpbnQgdmFsKSAgOwoKCiAgIH0KCgoKCgojIDQ4ICIv
dXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRl
L2FsbGVncm8vZ3VpLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgIGV4dGVybiAiQyIg
ewoKCgoKc3RydWN0IEJJVE1BUDsKc3RydWN0IERJQUxPRzsKCnR5cGVkZWYgIGludCAgKCogIERJ
QUxPR19QUk9DICkgICAoaW50IG1zZywgc3RydWN0IERJQUxPRyAqZCwgaW50IGMpICA7Cgp0eXBl
ZGVmIHN0cnVjdCBESUFMT0cKewogICBESUFMT0dfUFJPQyBwcm9jOwogICBpbnQgeCwgeSwgdywg
aDsgICAgICAgICAgICAgICAgCiAgIGludCBmZywgYmc7ICAgICAgICAgICAgICAgICAgICAKICAg
aW50IGtleTsgICAgICAgICAgICAgICAgICAgICAgIAogICBpbnQgZmxhZ3M7ICAgICAgICAgICAg
ICAgICAgICAgCiAgIGludCBkMSwgZDI7ICAgICAgICAgICAgICAgICAgICAKICAgdm9pZCAqZHAs
ICpkcDIsICpkcDM7ICAgICAgICAgIAp9IERJQUxPRzsKCgogCnR5cGVkZWYgc3RydWN0IE1FTlUK
ewogICBjaGFyICp0ZXh0OyAgICAgICAgICAgICAgICAgICAgCiAgICBpbnQgICgqICBwcm9jICkg
ICAodm9pZCkgIDsgIAogICBzdHJ1Y3QgTUVOVSAqY2hpbGQ7ICAgICAgICAgICAgCiAgIGludCBm
bGFnczsgICAgICAgICAgICAgICAgICAgICAKICAgdm9pZCAqZHA7ICAgICAgICAgICAgICAgICAg
ICAgIAp9IE1FTlU7CgoKIAp0eXBlZGVmIHN0cnVjdCBESUFMT0dfUExBWUVSCnsKICAgaW50IG9i
ajsKICAgaW50IHJlczsKICAgaW50IG1vdXNlX29iajsKICAgaW50IGZvY3VzX29iajsKICAgaW50
IGpveV9vbjsKICAgaW50IGNsaWNrX3dhaXQ7CiAgIGludCBtb3VzZV9veCwgbW91c2Vfb3k7CiAg
IGludCBtb3VzZV9vejsKICAgaW50IG1vdXNlX2I7CiAgIERJQUxPRyAqZGlhbG9nOwp9IERJQUxP
R19QTEFZRVI7CgoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKIGludCAgICBkX3lpZWxkX3Byb2MgICAgKGludCBtc2csIERJQUxPRyAqZCwgaW50
IGMpICA7CiBpbnQgICAgZF9jbGVhcl9wcm9jICAgIChpbnQgbXNnLCBESUFMT0cgKmQsIGludCBj
KSAgOwogaW50ICAgIGRfYm94X3Byb2MgICAgKGludCBtc2csIERJQUxPRyAqZCwgaW50IGMpICA7
CiBpbnQgICAgZF9zaGFkb3dfYm94X3Byb2MgICAgKGludCBtc2csIERJQUxPRyAqZCwgaW50IGMp
ICA7CiBpbnQgICAgZF9iaXRtYXBfcHJvYyAgICAoaW50IG1zZywgRElBTE9HICpkLCBpbnQgYykg
IDsKIGludCAgICBkX3RleHRfcHJvYyAgICAoaW50IG1zZywgRElBTE9HICpkLCBpbnQgYykgIDsK
IGludCAgICBkX2N0ZXh0X3Byb2MgICAgKGludCBtc2csIERJQUxPRyAqZCwgaW50IGMpICA7CiBp
bnQgICAgZF9ydGV4dF9wcm9jICAgIChpbnQgbXNnLCBESUFMT0cgKmQsIGludCBjKSAgOwogaW50
ICAgIGRfYnV0dG9uX3Byb2MgICAgKGludCBtc2csIERJQUxPRyAqZCwgaW50IGMpICA7CiBpbnQg
ICAgZF9jaGVja19wcm9jICAgIChpbnQgbXNnLCBESUFMT0cgKmQsIGludCBjKSAgOwogaW50ICAg
IGRfcmFkaW9fcHJvYyAgICAoaW50IG1zZywgRElBTE9HICpkLCBpbnQgYykgIDsKIGludCAgICBk
X2ljb25fcHJvYyAgICAoaW50IG1zZywgRElBTE9HICpkLCBpbnQgYykgIDsKIGludCAgICBkX2tl
eWJvYXJkX3Byb2MgICAgKGludCBtc2csIERJQUxPRyAqZCwgaW50IGMpICA7CiBpbnQgICAgZF9l
ZGl0X3Byb2MgICAgKGludCBtc2csIERJQUxPRyAqZCwgaW50IGMpICA7CiBpbnQgICAgZF9saXN0
X3Byb2MgICAgKGludCBtc2csIERJQUxPRyAqZCwgaW50IGMpICA7CiBpbnQgICAgZF90ZXh0X2xp
c3RfcHJvYyAgICAoaW50IG1zZywgRElBTE9HICpkLCBpbnQgYykgIDsKIGludCAgICBkX3RleHRi
b3hfcHJvYyAgICAoaW50IG1zZywgRElBTE9HICpkLCBpbnQgYykgIDsKIGludCAgICBkX3NsaWRl
cl9wcm9jICAgIChpbnQgbXNnLCBESUFMT0cgKmQsIGludCBjKSAgOwogaW50ICAgIGRfbWVudV9w
cm9jICAgIChpbnQgbXNnLCBESUFMT0cgKmQsIGludCBjKSAgOwoKZXh0ZXJuICBESUFMT0dfUFJP
QyAgICBndWlfc2hhZG93X2JveF9wcm9jICA7CmV4dGVybiAgRElBTE9HX1BST0MgICAgZ3VpX2N0
ZXh0X3Byb2MgIDsKZXh0ZXJuICBESUFMT0dfUFJPQyAgICBndWlfYnV0dG9uX3Byb2MgIDsKZXh0
ZXJuICBESUFMT0dfUFJPQyAgICBndWlfZWRpdF9wcm9jICA7CmV4dGVybiAgRElBTE9HX1BST0Mg
ICAgZ3VpX2xpc3RfcHJvYyAgOwpleHRlcm4gIERJQUxPR19QUk9DICAgIGd1aV90ZXh0X2xpc3Rf
cHJvYyAgOwoKZXh0ZXJuICB2b2lkICAoKiAgZ3VpX21lbnVfZHJhd19tZW51ICkgICAoaW50IHgs
IGludCB5LCBpbnQgdywgaW50IGgpICA7CmV4dGVybiAgdm9pZCAgKCogIGd1aV9tZW51X2RyYXdf
bWVudV9pdGVtICkgICAoTUVOVSAqbSwgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsIGludCBi
YXIsIGludCBzZWwpICA7CgpleHRlcm4gIERJQUxPRyAqICAgIGFjdGl2ZV9kaWFsb2cgIDsKZXh0
ZXJuICBNRU5VICogICAgYWN0aXZlX21lbnUgIDsKCmV4dGVybiAgaW50ICAgIGd1aV9tb3VzZV9m
b2N1cyAgOwoKZXh0ZXJuICBpbnQgICAgZ3VpX2ZnX2NvbG9yICA7CmV4dGVybiAgaW50ICAgIGd1
aV9tZ19jb2xvciAgOwpleHRlcm4gIGludCAgICBndWlfYmdfY29sb3IgIDsKCmV4dGVybiAgaW50
ICAgIGd1aV9mb250X2Jhc2VsaW5lICA7CgpleHRlcm4gIGludCAgKCogIGd1aV9tb3VzZV94ICkg
ICAodm9pZCkgIDsKZXh0ZXJuICBpbnQgICgqICBndWlfbW91c2VfeSApICAgKHZvaWQpICA7CmV4
dGVybiAgaW50ICAoKiAgZ3VpX21vdXNlX3ogKSAgICh2b2lkKSAgOwpleHRlcm4gIGludCAgKCog
IGd1aV9tb3VzZV9iICkgICAodm9pZCkgIDsKCiBpbnQgICAgZ3VpX3RleHRvdXQgICAgKHN0cnVj
dCBCSVRNQVAgKmJtcCwgY29uc3QgIGNoYXIgKnMsIGludCB4LCBpbnQgeSwgaW50IGNvbG9yLCBp
bnQgY2VudHJlKSAgOwogaW50ICAgIGd1aV9zdHJsZW4gICAgKGNvbnN0ICBjaGFyICpzKSAgOwog
dm9pZCAgICBwb3NpdGlvbl9kaWFsb2cgICAgKERJQUxPRyAqZGlhbG9nLCBpbnQgeCwgaW50IHkp
ICA7CiB2b2lkICAgIGNlbnRyZV9kaWFsb2cgICAgKERJQUxPRyAqZGlhbG9nKSAgOwogdm9pZCAg
ICBzZXRfZGlhbG9nX2NvbG9yICAgIChESUFMT0cgKmRpYWxvZywgaW50IGZnLCBpbnQgYmcpICA7
CiBpbnQgICAgZmluZF9kaWFsb2dfZm9jdXMgICAgKERJQUxPRyAqZGlhbG9nKSAgOwogaW50ICAg
IG9mZmVyX2ZvY3VzICAgIChESUFMT0cgKmQsIGludCBvYmosIGludCAqZm9jdXNfb2JqLCBpbnQg
Zm9yY2UpICA7CiBpbnQgICAgZGlhbG9nX21lc3NhZ2UgICAgKERJQUxPRyAqZGlhbG9nLCBpbnQg
bXNnLCBpbnQgYywgaW50ICpvYmopICA7CiBpbnQgICAgYnJvYWRjYXN0X2RpYWxvZ19tZXNzYWdl
ICAgIChpbnQgbXNnLCBpbnQgYykgIDsKIGludCAgICBkb19kaWFsb2cgICAgKERJQUxPRyAqZGlh
bG9nLCBpbnQgZm9jdXNfb2JqKSAgOwogaW50ICAgIHBvcHVwX2RpYWxvZyAgICAoRElBTE9HICpk
aWFsb2csIGludCBmb2N1c19vYmopICA7CiBESUFMT0dfUExBWUVSICogICAgaW5pdF9kaWFsb2cg
ICAgKERJQUxPRyAqZGlhbG9nLCBpbnQgZm9jdXNfb2JqKSAgOwogaW50ICAgIHVwZGF0ZV9kaWFs
b2cgICAgKERJQUxPR19QTEFZRVIgKnBsYXllcikgIDsKIGludCAgICBzaHV0ZG93bl9kaWFsb2cg
ICAgKERJQUxPR19QTEFZRVIgKnBsYXllcikgIDsKIGludCAgICBkb19tZW51ICAgIChNRU5VICpt
ZW51LCBpbnQgeCwgaW50IHkpICA7CiBpbnQgICAgYWxlcnQgICAgKGNvbnN0ICBjaGFyICpzMSwg
Y29uc3QgIGNoYXIgKnMyLCBjb25zdCAgY2hhciAqczMsIGNvbnN0ICBjaGFyICpiMSwgY29uc3Qg
IGNoYXIgKmIyLCBpbnQgYzEsIGludCBjMikgIDsKIGludCAgICBhbGVydDMgICAgKGNvbnN0ICBj
aGFyICpzMSwgY29uc3QgIGNoYXIgKnMyLCBjb25zdCAgY2hhciAqczMsIGNvbnN0ICBjaGFyICpi
MSwgY29uc3QgIGNoYXIgKmIyLCBjb25zdCAgY2hhciAqYjMsIGludCBjMSwgaW50IGMyLCBpbnQg
YzMpICA7CgoKCgogaW50ICAgIGZpbGVfc2VsZWN0ICAgIChjb25zdCAgY2hhciAqbWVzc2FnZSwg
Y2hhciAqcGF0aCwgY29uc3QgIGNoYXIgKmV4dCkgIDsKIGludCAgICBmaWxlX3NlbGVjdF9leCAg
ICAoY29uc3QgIGNoYXIgKm1lc3NhZ2UsIGNoYXIgKnBhdGgsIGNvbnN0ICBjaGFyICpleHQsIGlu
dCBzaXplLCBpbnQgdywgaW50IGgpICA7CgogaW50ICAgIGdmeF9tb2RlX3NlbGVjdCAgICAoaW50
ICpjYXJkLCBpbnQgKncsIGludCAqaCkgIDsKIGludCAgICBnZnhfbW9kZV9zZWxlY3RfZXggICAg
KGludCAqY2FyZCwgaW50ICp3LCBpbnQgKmgsIGludCAqY29sb3JfZGVwdGgpICA7CgojIDEgIi91
c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL2lubGluZS9ndWkuaW5sIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogICBleHRlcm4gIkMiIHsKCgpzdGF0aWMgaW5saW5lICBpbnQgICAgb2JqZWN0
X21lc3NhZ2UgICAgKERJQUxPRyAqZCwgaW50IG1zZywgaW50IGMpICAgCnsKICAgaW50IHJldDsK
CiAgIGlmIChtc2cgPT0gMyApIHsKICAgICAgaWYgKGQtPmZsYWdzICYgMTYgKSByZXR1cm4gMCA7
CiAgICAgIGFjcXVpcmVfc2NyZWVuKCk7CiAgIH0KCiAgIHJldCA9IGQtPnByb2MobXNnLCBkLCBj
KTsKCiAgIGlmIChtc2cgPT0gMyApCiAgICAgIHJlbGVhc2Vfc2NyZWVuKCk7CgogICBpZiAocmV0
ICYgNCApIHsKICAgICAgZC0+ZmxhZ3MgfD0gNjQgOwogICAgICByZXQgJj0gfjQgOwogICB9Cgog
ICByZXR1cm4gcmV0Owp9ICAKCgogICB9CgoKCgoKIyAxOTUgIi91c3IvbG9jYWwvaW5jbHVkZS9h
bGxlZ3JvL2d1aS5oIiAyIDMKCgoKICAgfQoKCgoKCiMgNDkgIi91c3IvbG9jYWwvaW5jbHVkZS9h
bGxlZ3JvLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vc291bmQuaCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgZXh0ZXJuICJDIiB7CgoKCgojIDEgIi91c3Iv
bG9jYWwvaW5jbHVkZS9hbGxlZ3JvL2RpZ2kuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
ICAgZXh0ZXJuICJDIiB7CgoKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgp0eXBlZGVmIHN0
cnVjdCBTQU1QTEUgICAgICAgICAgICAgICAgICAgCnsKICAgaW50IGJpdHM7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICBpbnQgc3RlcmVvOyAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgIGludCBmcmVxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgaW50IHByaW9yaXR5
OyAgICAgICAgICAgICAgICAgICAgICAgIAogICB1bnNpZ25lZCBsb25nIGxlbjsgICAgICAgICAg
ICAgICAgICAgCiAgIHVuc2lnbmVkIGxvbmcgbG9vcF9zdGFydDsgICAgICAgICAgICAKICAgdW5z
aWduZWQgbG9uZyBsb29wX2VuZDsgICAgICAgICAgICAgIAogICB1bnNpZ25lZCBsb25nIHBhcmFt
OyAgICAgICAgICAgICAgICAgCiAgIHZvaWQgKmRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAKfSBTQU1QTEU7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgRElHSV9EUklWRVIgICAgICAgICAgICAg
IAp7CiAgIGludCAgaWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgY29uc3QgIGNo
YXIgKm5hbWU7ICAgICAgICAgICAgICAgICAKICAgY29uc3QgIGNoYXIgKmRlc2M7ICAgICAgICAg
ICAgICAgICAKICAgY29uc3QgIGNoYXIgKmFzY2lpX25hbWU7ICAgICAgICAgICAKICAgaW50ICB2
b2ljZXM7ICAgICAgICAgICAgICAgICAgICAgICAgIAogICBpbnQgIGJhc2V2b2ljZTsgICAgICAg
ICAgICAgICAgICAgICAgCiAgIGludCAgbWF4X3ZvaWNlczsgICAgICAgICAgICAgICAgICAgICAK
ICAgaW50ICBkZWZfdm9pY2VzOyAgICAgICAgICAgICAgICAgICAgIAoKICAgIAogICAgaW50ICAo
KiAgIGRldGVjdCApICAgKGludCBpbnB1dCkgIDsKICAgIGludCAgKCogICBpbml0ICkgICAoaW50
IGlucHV0LCBpbnQgdm9pY2VzKSAgOwogICAgdm9pZCAgKCogIGV4aXQgKSAgIChpbnQgaW5wdXQp
ICA7CiAgICBpbnQgICgqICAgbWl4ZXJfdm9sdW1lICkgICAoaW50IHZvbHVtZSkgIDsKCiAgICAK
ICAgIHZvaWQgKiAgKCogIGxvY2tfdm9pY2UgKSAgIChpbnQgdm9pY2UsIGludCBzdGFydCwgaW50
IGVuZCkgIDsKICAgIHZvaWQgICgqICB1bmxvY2tfdm9pY2UgKSAgIChpbnQgdm9pY2UpICA7CiAg
ICBpbnQgICgqICAgYnVmZmVyX3NpemUgKSAgICh2b2lkKSAgOwoKICAgIAogICAgdm9pZCAgKCog
IGluaXRfdm9pY2UgKSAgIChpbnQgdm9pY2UsIGNvbnN0ICBTQU1QTEUgKnNhbXBsZSkgIDsKICAg
IHZvaWQgICgqICByZWxlYXNlX3ZvaWNlICkgICAoaW50IHZvaWNlKSAgOwogICAgdm9pZCAgKCog
IHN0YXJ0X3ZvaWNlICkgICAoaW50IHZvaWNlKSAgOwogICAgdm9pZCAgKCogIHN0b3Bfdm9pY2Ug
KSAgIChpbnQgdm9pY2UpICA7CiAgICB2b2lkICAoKiAgbG9vcF92b2ljZSApICAgKGludCB2b2lj
ZSwgaW50IHBsYXltb2RlKSAgOwoKICAgIAogICAgaW50ICAoKiAgIGdldF9wb3NpdGlvbiApICAg
KGludCB2b2ljZSkgIDsKICAgIHZvaWQgICgqICBzZXRfcG9zaXRpb24gKSAgIChpbnQgdm9pY2Us
IGludCBwb3NpdGlvbikgIDsKCiAgICAKICAgIGludCAgKCogICBnZXRfdm9sdW1lICkgICAoaW50
IHZvaWNlKSAgOwogICAgdm9pZCAgKCogIHNldF92b2x1bWUgKSAgIChpbnQgdm9pY2UsIGludCB2
b2x1bWUpICA7CiAgICB2b2lkICAoKiAgcmFtcF92b2x1bWUgKSAgIChpbnQgdm9pY2UsIGludCB0
aW1lLCBpbnQgZW5kdm9sKSAgOwogICAgdm9pZCAgKCogIHN0b3Bfdm9sdW1lX3JhbXAgKSAgIChp
bnQgdm9pY2UpICA7CgogICAgCiAgICBpbnQgICgqICAgZ2V0X2ZyZXF1ZW5jeSApICAgKGludCB2
b2ljZSkgIDsKICAgIHZvaWQgICgqICBzZXRfZnJlcXVlbmN5ICkgICAoaW50IHZvaWNlLCBpbnQg
ZnJlcXVlbmN5KSAgOwogICAgdm9pZCAgKCogIHN3ZWVwX2ZyZXF1ZW5jeSApICAgKGludCB2b2lj
ZSwgaW50IHRpbWUsIGludCBlbmRmcmVxKSAgOwogICAgdm9pZCAgKCogIHN0b3BfZnJlcXVlbmN5
X3N3ZWVwICkgICAoaW50IHZvaWNlKSAgOwoKICAgIAogICAgaW50ICAoKiAgIGdldF9wYW4gKSAg
IChpbnQgdm9pY2UpICA7CiAgICB2b2lkICAoKiAgc2V0X3BhbiApICAgKGludCB2b2ljZSwgaW50
IHBhbikgIDsKICAgIHZvaWQgICgqICBzd2VlcF9wYW4gKSAgIChpbnQgdm9pY2UsIGludCB0aW1l
LCBpbnQgZW5kcGFuKSAgOwogICAgdm9pZCAgKCogIHN0b3BfcGFuX3N3ZWVwICkgICAoaW50IHZv
aWNlKSAgOwoKICAgIAogICAgdm9pZCAgKCogIHNldF9lY2hvICkgICAoaW50IHZvaWNlLCBpbnQg
c3RyZW5ndGgsIGludCBkZWxheSkgIDsKICAgIHZvaWQgICgqICBzZXRfdHJlbW9sbyApICAgKGlu
dCB2b2ljZSwgaW50IHJhdGUsIGludCBkZXB0aCkgIDsKICAgIHZvaWQgICgqICBzZXRfdmlicmF0
byApICAgKGludCB2b2ljZSwgaW50IHJhdGUsIGludCBkZXB0aCkgIDsKCiAgICAKICAgaW50IHJl
Y19jYXBfYml0czsKICAgaW50IHJlY19jYXBfc3RlcmVvOwogICAgaW50ICAoKiAgIHJlY19jYXBf
cmF0ZSApICAgKGludCBiaXRzLCBpbnQgc3RlcmVvKSAgOwogICAgaW50ICAoKiAgIHJlY19jYXBf
cGFybSApICAgKGludCByYXRlLCBpbnQgYml0cywgaW50IHN0ZXJlbykgIDsKICAgIGludCAgKCog
ICByZWNfc291cmNlICkgICAoaW50IHNvdXJjZSkgIDsKICAgIGludCAgKCogICByZWNfc3RhcnQg
KSAgIChpbnQgcmF0ZSwgaW50IGJpdHMsIGludCBzdGVyZW8pICA7CiAgICB2b2lkICAoKiAgcmVj
X3N0b3AgKSAgICh2b2lkKSAgOwogICAgaW50ICAoKiAgIHJlY19yZWFkICkgICAodm9pZCAqYnVm
KSAgOwp9IERJR0lfRFJJVkVSOwoKZXh0ZXJuICBfRFJJVkVSX0lORk8gICAgX2RpZ2lfZHJpdmVy
X2xpc3QgW10gOwoKIAoKCgoKCgoKCmV4dGVybiAgRElHSV9EUklWRVIgKiAgICBkaWdpX2RyaXZl
ciAgOwoKZXh0ZXJuICBESUdJX0RSSVZFUiAqICAgIGRpZ2lfaW5wdXRfZHJpdmVyICA7CgpleHRl
cm4gIGludCAgICBkaWdpX2NhcmQgIDsKCmV4dGVybiAgaW50ICAgIGRpZ2lfaW5wdXRfY2FyZCAg
OwoKIGludCAgICBkZXRlY3RfZGlnaV9kcml2ZXIgICAgKGludCBkcml2ZXJfaWQpICA7CgoKIFNB
TVBMRSAqICAgIGxvYWRfc2FtcGxlICAgIChjb25zdCAgY2hhciAqZmlsZW5hbWUpICA7CiBTQU1Q
TEUgKiAgICBsb2FkX3dhdiAgICAoY29uc3QgIGNoYXIgKmZpbGVuYW1lKSAgOwogU0FNUExFICog
ICAgbG9hZF92b2MgICAgKGNvbnN0ICBjaGFyICpmaWxlbmFtZSkgIDsKIFNBTVBMRSAqICAgIGNy
ZWF0ZV9zYW1wbGUgICAgKGludCBiaXRzLCBpbnQgc3RlcmVvLCBpbnQgZnJlcSwgaW50IGxlbikg
IDsKIHZvaWQgICAgZGVzdHJveV9zYW1wbGUgICAgKFNBTVBMRSAqc3BsKSAgOwoKIGludCAgICBw
bGF5X3NhbXBsZSAgICAoY29uc3QgIFNBTVBMRSAqc3BsLCBpbnQgdm9sLCBpbnQgcGFuLCBpbnQg
ZnJlcSwgaW50IGxvb3ApICA7CiB2b2lkICAgIHN0b3Bfc2FtcGxlICAgIChjb25zdCAgU0FNUExF
ICpzcGwpICA7CiB2b2lkICAgIGFkanVzdF9zYW1wbGUgICAgKGNvbnN0ICBTQU1QTEUgKnNwbCwg
aW50IHZvbCwgaW50IHBhbiwgaW50IGZyZXEsIGludCBsb29wKSAgOwoKIGludCAgICBhbGxvY2F0
ZV92b2ljZSAgICAoY29uc3QgIFNBTVBMRSAqc3BsKSAgOwogdm9pZCAgICBkZWFsbG9jYXRlX3Zv
aWNlICAgIChpbnQgdm9pY2UpICA7CiB2b2lkICAgIHJlYWxsb2NhdGVfdm9pY2UgICAgKGludCB2
b2ljZSwgY29uc3QgIFNBTVBMRSAqc3BsKSAgOwogdm9pZCAgICByZWxlYXNlX3ZvaWNlICAgIChp
bnQgdm9pY2UpICA7CiB2b2lkICAgIHZvaWNlX3N0YXJ0ICAgIChpbnQgdm9pY2UpICA7CiB2b2lk
ICAgIHZvaWNlX3N0b3AgICAgKGludCB2b2ljZSkgIDsKIHZvaWQgICAgdm9pY2Vfc2V0X3ByaW9y
aXR5ICAgIChpbnQgdm9pY2UsIGludCBwcmlvcml0eSkgIDsKIFNBTVBMRSAqICAgIHZvaWNlX2No
ZWNrICAgIChpbnQgdm9pY2UpICA7CgoKCgoKCgogdm9pZCAgICB2b2ljZV9zZXRfcGxheW1vZGUg
ICAgKGludCB2b2ljZSwgaW50IHBsYXltb2RlKSAgOwoKIGludCAgICB2b2ljZV9nZXRfcG9zaXRp
b24gICAgKGludCB2b2ljZSkgIDsKIHZvaWQgICAgdm9pY2Vfc2V0X3Bvc2l0aW9uICAgIChpbnQg
dm9pY2UsIGludCBwb3NpdGlvbikgIDsKCiBpbnQgICAgdm9pY2VfZ2V0X3ZvbHVtZSAgICAoaW50
IHZvaWNlKSAgOwogdm9pZCAgICB2b2ljZV9zZXRfdm9sdW1lICAgIChpbnQgdm9pY2UsIGludCB2
b2x1bWUpICA7CiB2b2lkICAgIHZvaWNlX3JhbXBfdm9sdW1lICAgIChpbnQgdm9pY2UsIGludCB0
aW1lLCBpbnQgZW5kdm9sKSAgOwogdm9pZCAgICB2b2ljZV9zdG9wX3ZvbHVtZXJhbXAgICAgKGlu
dCB2b2ljZSkgIDsKCiBpbnQgICAgdm9pY2VfZ2V0X2ZyZXF1ZW5jeSAgICAoaW50IHZvaWNlKSAg
Owogdm9pZCAgICB2b2ljZV9zZXRfZnJlcXVlbmN5ICAgIChpbnQgdm9pY2UsIGludCBmcmVxdWVu
Y3kpICA7CiB2b2lkICAgIHZvaWNlX3N3ZWVwX2ZyZXF1ZW5jeSAgICAoaW50IHZvaWNlLCBpbnQg
dGltZSwgaW50IGVuZGZyZXEpICA7CiB2b2lkICAgIHZvaWNlX3N0b3BfZnJlcXVlbmN5X3N3ZWVw
ICAgIChpbnQgdm9pY2UpICA7CgogaW50ICAgIHZvaWNlX2dldF9wYW4gICAgKGludCB2b2ljZSkg
IDsKIHZvaWQgICAgdm9pY2Vfc2V0X3BhbiAgICAoaW50IHZvaWNlLCBpbnQgcGFuKSAgOwogdm9p
ZCAgICB2b2ljZV9zd2VlcF9wYW4gICAgKGludCB2b2ljZSwgaW50IHRpbWUsIGludCBlbmRwYW4p
ICA7CiB2b2lkICAgIHZvaWNlX3N0b3BfcGFuX3N3ZWVwICAgIChpbnQgdm9pY2UpICA7Cgogdm9p
ZCAgICB2b2ljZV9zZXRfZWNobyAgICAoaW50IHZvaWNlLCBpbnQgc3RyZW5ndGgsIGludCBkZWxh
eSkgIDsKIHZvaWQgICAgdm9pY2Vfc2V0X3RyZW1vbG8gICAgKGludCB2b2ljZSwgaW50IHJhdGUs
IGludCBkZXB0aCkgIDsKIHZvaWQgICAgdm9pY2Vfc2V0X3ZpYnJhdG8gICAgKGludCB2b2ljZSwg
aW50IHJhdGUsIGludCBkZXB0aCkgIDsKCgoKCgogaW50ICAgIGdldF9zb3VuZF9pbnB1dF9jYXBf
Yml0cyAgICAodm9pZCkgIDsKIGludCAgICBnZXRfc291bmRfaW5wdXRfY2FwX3N0ZXJlbyAgICAo
dm9pZCkgIDsKIGludCAgICBnZXRfc291bmRfaW5wdXRfY2FwX3JhdGUgICAgKGludCBiaXRzLCBp
bnQgc3RlcmVvKSAgOwogaW50ICAgIGdldF9zb3VuZF9pbnB1dF9jYXBfcGFybSAgICAoaW50IHJh
dGUsIGludCBiaXRzLCBpbnQgc3RlcmVvKSAgOwogaW50ICAgIHNldF9zb3VuZF9pbnB1dF9zb3Vy
Y2UgICAgKGludCBzb3VyY2UpICA7CiBpbnQgICAgc3RhcnRfc291bmRfaW5wdXQgICAgKGludCBy
YXRlLCBpbnQgYml0cywgaW50IHN0ZXJlbykgIDsKIHZvaWQgICAgc3RvcF9zb3VuZF9pbnB1dCAg
ICAodm9pZCkgIDsKIGludCAgICByZWFkX3NvdW5kX2lucHV0ICAgICh2b2lkICpidWZmZXIpICA7
CgpleHRlcm4gIHZvaWQgICgqICBkaWdpX3JlY29yZGVyICkgICAodm9pZCkgIDsKCiB2b2lkICAg
IGxvY2tfc2FtcGxlICAgIChzdHJ1Y3QgU0FNUExFICpzcGwpICA7CgoKICAgfQoKCgoKCiMgMjgg
Ii91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL3NvdW5kLmgiIDIgMwoKIyAxICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYWxsZWdyby9zdHJlYW0uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAg
ZXh0ZXJuICJDIiB7CgoKCgpzdHJ1Y3QgU0FNUExFOwoKdHlwZWRlZiBzdHJ1Y3QgQVVESU9TVFJF
QU0KewogICBpbnQgdm9pY2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgIHN0cnVjdCBT
QU1QTEUgKnNhbXA7ICAgICAgICAgICAgICAgICAKICAgaW50IGxlbjsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICBpbnQgYnVmY291bnQ7ICAgICAgICAgICAgICAgICAgICAgICAgCiAg
IGludCBidWZudW07ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgaW50IGFjdGl2ZTsgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICB2b2lkICpsb2NrZWQ7ICAgICAgICAgICAgICAgICAg
ICAgICAgCn0gQVVESU9TVFJFQU07CgogQVVESU9TVFJFQU0gKiAgICBwbGF5X2F1ZGlvX3N0cmVh
bSAgICAoaW50IGxlbiwgaW50IGJpdHMsIGludCBzdGVyZW8sIGludCBmcmVxLCBpbnQgdm9sLCBp
bnQgcGFuKSAgOwogdm9pZCAgICBzdG9wX2F1ZGlvX3N0cmVhbSAgICAoQVVESU9TVFJFQU0gKnN0
cmVhbSkgIDsKIHZvaWQgKiAgICBnZXRfYXVkaW9fc3RyZWFtX2J1ZmZlciAgICAoQVVESU9TVFJF
QU0gKnN0cmVhbSkgIDsKIHZvaWQgICAgZnJlZV9hdWRpb19zdHJlYW1fYnVmZmVyICAgIChBVURJ
T1NUUkVBTSAqc3RyZWFtKSAgOwoKCiAgIH0KCgoKCgojIDI5ICIvdXNyL2xvY2FsL2luY2x1ZGUv
YWxsZWdyby9zb3VuZC5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vbWlk
aS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogICBleHRlcm4gIkMiIHsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCgoKCgoKCnR5cGVkZWYgc3RydWN0IE1J
REkgICAgICAgICAgICAgICAgICAgICAKewogICBpbnQgZGl2aXNpb25zOyAgICAgICAgICAgICAg
ICAgICAgICAgCiAgIHN0cnVjdCB7CiAgICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7ICAgICAgICAg
ICAgICAKICAgICAgaW50IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgIAogICB9IHRyYWNr
WzMyIF07Cn0gTUlESTsKCgoKCgoKCnR5cGVkZWYgc3RydWN0IE1JRElfRFJJVkVSICAgICAgICAg
ICAgICAKewogICBpbnQgIGlkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgIGNvbnN0
ICBjaGFyICpuYW1lOyAgICAgICAgICAgICAgICAgCiAgIGNvbnN0ICBjaGFyICpkZXNjOyAgICAg
ICAgICAgICAgICAgCiAgIGNvbnN0ICBjaGFyICphc2NpaV9uYW1lOyAgICAgICAgICAgCiAgIGlu
dCAgdm9pY2VzOyAgICAgICAgICAgICAgICAgICAgICAgICAKICAgaW50ICBiYXNldm9pY2U7ICAg
ICAgICAgICAgICAgICAgICAgIAogICBpbnQgIG1heF92b2ljZXM7ICAgICAgICAgICAgICAgICAg
ICAgCiAgIGludCAgZGVmX3ZvaWNlczsgICAgICAgICAgICAgICAgICAgICAKICAgaW50ICB4bWlu
LCB4bWF4OyAgICAgICAgICAgICAgICAgICAgIAoKICAgIAogICAgaW50ICAoKiAgIGRldGVjdCAp
ICAgKGludCBpbnB1dCkgIDsKICAgIGludCAgKCogICBpbml0ICkgICAoaW50IGlucHV0LCBpbnQg
dm9pY2VzKSAgOwogICAgdm9pZCAgKCogIGV4aXQgKSAgIChpbnQgaW5wdXQpICA7CiAgICBpbnQg
ICgqICAgbWl4ZXJfdm9sdW1lICkgICAoaW50IHZvbHVtZSkgIDsKCiAgICAKICAgIHZvaWQgICgq
ICByYXdfbWlkaSApICAgKGludCBkYXRhKSAgOwoKICAgIAogICAgaW50ICAoKiAgIGxvYWRfcGF0
Y2hlcyApICAgKGNvbnN0ICBjaGFyICpwYXRjaGVzLCBjb25zdCAgY2hhciAqZHJ1bXMpICA7CiAg
ICB2b2lkICAoKiAgYWRqdXN0X3BhdGNoZXMgKSAgIChjb25zdCAgY2hhciAqcGF0Y2hlcywgY29u
c3QgIGNoYXIgKmRydW1zKSAgOwoKICAgIAogICAgdm9pZCAgKCogIGtleV9vbiApICAgKGludCBp
bnN0LCBpbnQgbm90ZSwgaW50IGJlbmQsIGludCB2b2wsIGludCBwYW4pICA7CiAgICB2b2lkICAo
KiAga2V5X29mZiApICAgKGludCB2b2ljZSkgIDsKICAgIHZvaWQgICgqICBzZXRfdm9sdW1lICkg
ICAoaW50IHZvaWNlLCBpbnQgdm9sKSAgOwogICAgdm9pZCAgKCogIHNldF9waXRjaCApICAgKGlu
dCB2b2ljZSwgaW50IG5vdGUsIGludCBiZW5kKSAgOwogICAgdm9pZCAgKCogIHNldF9wYW4gKSAg
IChpbnQgdm9pY2UsIGludCBwYW4pICA7CiAgICB2b2lkICAoKiAgc2V0X3ZpYnJhdG8gKSAgIChp
bnQgdm9pY2UsIGludCBhbW91bnQpICA7Cn0gTUlESV9EUklWRVI7CgoKZXh0ZXJuICBNSURJX0RS
SVZFUiAgICBtaWRpX2RpZ21pZCAgOwoKZXh0ZXJuICBfRFJJVkVSX0lORk8gICAgX21pZGlfZHJp
dmVyX2xpc3QgW10gOwoKCiAKCgoKCgoKCgoKCgoKZXh0ZXJuICBNSURJX0RSSVZFUiAqICAgIG1p
ZGlfZHJpdmVyICA7CgpleHRlcm4gIE1JRElfRFJJVkVSICogICAgbWlkaV9pbnB1dF9kcml2ZXIg
IDsKCmV4dGVybiAgaW50ICAgIG1pZGlfY2FyZCAgOwoKZXh0ZXJuICBpbnQgICAgbWlkaV9pbnB1
dF9jYXJkICA7CgpleHRlcm4gIHZvbGF0aWxlIGxvbmcgICAgbWlkaV9wb3MgIDsgICAgICAgIAoK
ZXh0ZXJuICBsb25nICAgIG1pZGlfbG9vcF9zdGFydCAgOyAgICAgICAgICAKZXh0ZXJuICBsb25n
ICAgIG1pZGlfbG9vcF9lbmQgIDsgICAgICAgICAgICAKCiBpbnQgICAgZGV0ZWN0X21pZGlfZHJp
dmVyICAgIChpbnQgZHJpdmVyX2lkKSAgOwoKIE1JREkgKiAgICBsb2FkX21pZGkgICAgKGNvbnN0
ICBjaGFyICpmaWxlbmFtZSkgIDsKIHZvaWQgICAgZGVzdHJveV9taWRpICAgIChNSURJICptaWRp
KSAgOwogaW50ICAgIHBsYXlfbWlkaSAgICAoTUlESSAqbWlkaSwgaW50IGxvb3ApICA7CiBpbnQg
ICAgcGxheV9sb29wZWRfbWlkaSAgICAoTUlESSAqbWlkaSwgaW50IGxvb3Bfc3RhcnQsIGludCBs
b29wX2VuZCkgIDsKIHZvaWQgICAgc3RvcF9taWRpICAgICh2b2lkKSAgOwogdm9pZCAgICBtaWRp
X3BhdXNlICAgICh2b2lkKSAgOwogdm9pZCAgICBtaWRpX3Jlc3VtZSAgICAodm9pZCkgIDsKIGlu
dCAgICBtaWRpX3NlZWsgICAgKGludCB0YXJnZXQpICA7CiB2b2lkICAgIG1pZGlfb3V0ICAgICh1
bnNpZ25lZCBjaGFyICpkYXRhLCBpbnQgbGVuZ3RoKSAgOwogaW50ICAgIGxvYWRfbWlkaV9wYXRj
aGVzICAgICh2b2lkKSAgOwoKZXh0ZXJuICB2b2lkICAoKiAgbWlkaV9tc2dfY2FsbGJhY2sgKSAg
IChpbnQgbXNnLCBpbnQgYnl0ZTEsIGludCBieXRlMikgIDsKZXh0ZXJuICB2b2lkICAoKiAgbWlk
aV9tZXRhX2NhbGxiYWNrICkgICAoaW50IHR5cGUsIGNvbnN0ICB1bnNpZ25lZCBjaGFyICpkYXRh
LCBpbnQgbGVuZ3RoKSAgOwpleHRlcm4gIHZvaWQgICgqICBtaWRpX3N5c2V4X2NhbGxiYWNrICkg
ICAoY29uc3QgIHVuc2lnbmVkIGNoYXIgKmRhdGEsIGludCBsZW5ndGgpICA7CgpleHRlcm4gIHZv
aWQgICgqICBtaWRpX3JlY29yZGVyICkgICAodW5zaWduZWQgY2hhciBkYXRhKSAgOwoKIHZvaWQg
ICAgbG9ja19taWRpICAgIChzdHJ1Y3QgTUlESSAqbWlkaSkgIDsKCgogICB9CgoKCgoKIyAzMCAi
L3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vc291bmQuaCIgMiAzCgoKIHZvaWQgICAgcmVzZXJ2
ZV92b2ljZXMgICAgKGludCBkaWdpX3ZvaWNlcywgaW50IG1pZGlfdm9pY2VzKSAgOwogdm9pZCAg
ICBzZXRfdm9sdW1lX3Blcl92b2ljZSAgICAoaW50IHNjYWxlKSAgOwoKIGludCAgICBpbnN0YWxs
X3NvdW5kICAgIChpbnQgZGlnaSwgaW50IG1pZGksIGNvbnN0ICBjaGFyICpjZmdfcGF0aCkgIDsK
IHZvaWQgICAgcmVtb3ZlX3NvdW5kICAgICh2b2lkKSAgOwoKIGludCAgICBpbnN0YWxsX3NvdW5k
X2lucHV0ICAgIChpbnQgZGlnaSwgaW50IG1pZGkpICA7CiB2b2lkICAgIHJlbW92ZV9zb3VuZF9p
bnB1dCAgICAodm9pZCkgIDsKCiB2b2lkICAgIHNldF92b2x1bWUgICAgKGludCBkaWdpX3ZvbHVt
ZSwgaW50IG1pZGlfdm9sdW1lKSAgOwoKCiAgIH0KCgoKCgojIDUxICIvdXNyL2xvY2FsL2luY2x1
ZGUvYWxsZWdyby5oIiAyIDMKCgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL2ZpbGUu
aCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgZXh0ZXJuICJDIiB7CgoKCgogY2hhciAq
ICAgIGZpeF9maWxlbmFtZV9jYXNlICAgIChjaGFyICpwYXRoKSAgOwogY2hhciAqICAgIGZpeF9m
aWxlbmFtZV9zbGFzaGVzICAgIChjaGFyICpwYXRoKSAgOwogY2hhciAqICAgIGZpeF9maWxlbmFt
ZV9wYXRoICAgIChjaGFyICpkZXN0LCBjb25zdCAgY2hhciAqcGF0aCwgaW50IHNpemUpICA7CiBj
aGFyICogICAgcmVwbGFjZV9maWxlbmFtZSAgICAoY2hhciAqZGVzdCwgY29uc3QgIGNoYXIgKnBh
dGgsIGNvbnN0ICBjaGFyICpmaWxlbmFtZSwgaW50IHNpemUpICA7CiBjaGFyICogICAgcmVwbGFj
ZV9leHRlbnNpb24gICAgKGNoYXIgKmRlc3QsIGNvbnN0ICBjaGFyICpmaWxlbmFtZSwgY29uc3Qg
IGNoYXIgKmV4dCwgaW50IHNpemUpICA7CiBjaGFyICogICAgYXBwZW5kX2ZpbGVuYW1lICAgIChj
aGFyICpkZXN0LCBjb25zdCAgY2hhciAqcGF0aCwgY29uc3QgIGNoYXIgKmZpbGVuYW1lLCBpbnQg
c2l6ZSkgIDsKIGNoYXIgKiAgICBnZXRfZmlsZW5hbWUgICAgKGNvbnN0ICBjaGFyICpwYXRoKSAg
OwogY2hhciAqICAgIGdldF9leHRlbnNpb24gICAgKGNvbnN0ICBjaGFyICpmaWxlbmFtZSkgIDsK
IHZvaWQgICAgcHV0X2JhY2tzbGFzaCAgICAoY2hhciAqZmlsZW5hbWUpICA7CiBpbnQgICAgZmls
ZV9leGlzdHMgICAgKGNvbnN0ICBjaGFyICpmaWxlbmFtZSwgaW50IGF0dHJpYiwgaW50ICphcmV0
KSAgOwogaW50ICAgIGV4aXN0cyAgICAoY29uc3QgIGNoYXIgKmZpbGVuYW1lKSAgOwogbG9uZyAg
ICBmaWxlX3NpemUgICAgKGNvbnN0ICBjaGFyICpmaWxlbmFtZSkgIDsKIHRpbWVfdCAgICBmaWxl
X3RpbWUgICAgKGNvbnN0ICBjaGFyICpmaWxlbmFtZSkgIDsKIGludCAgICBkZWxldGVfZmlsZSAg
ICAoY29uc3QgIGNoYXIgKmZpbGVuYW1lKSAgOwogaW50ICAgIGZvcl9lYWNoX2ZpbGUgICAgKGNv
bnN0ICBjaGFyICpuYW1lLCBpbnQgYXR0cmliLCAgdm9pZCAgKCogIGNhbGxiYWNrICkgICAoY29u
c3QgIGNoYXIgKmZpbGVuYW1lLCBpbnQgYXR0cmliLCBpbnQgcGFyYW0pICAsIGludCBwYXJhbSkg
IDsKIGludCAgICBmaW5kX2FsbGVncm9fcmVzb3VyY2UgICAgKGNoYXIgKmRlc3QsIGNvbnN0ICBj
aGFyICpyZXNvdXJjZSwgY29uc3QgIGNoYXIgKmV4dCwgY29uc3QgIGNoYXIgKmRhdGFmaWxlLCBj
b25zdCAgY2hhciAqb2JqZWN0bmFtZSwgY29uc3QgIGNoYXIgKmVudnZhciwgY29uc3QgIGNoYXIg
KnN1YmRpciwgaW50IHNpemUpICA7CgpzdHJ1Y3QgYWxfZmZibGsgICAgICAgICAKewogICBpbnQg
YXR0cmliOyAgICAgICAgICAKICAgdGltZV90IHRpbWU7ICAgICAgICAgCiAgIGxvbmcgc2l6ZTsg
ICAgICAgICAgIAogICBjaGFyIG5hbWVbNTEyXTsgICAgICAKICAgdm9pZCAqZmZfZGF0YTsgICAg
ICAgCn07CgogaW50ICAgIGFsX2ZpbmRmaXJzdCAgICAoY29uc3QgIGNoYXIgKnBhdHRlcm4sIHN0
cnVjdCBhbF9mZmJsayAqaW5mbywgaW50IGF0dHJpYikgIDsKIGludCAgICBhbF9maW5kbmV4dCAg
ICAoc3RydWN0IGFsX2ZmYmxrICppbmZvKSAgOwogdm9pZCAgICBhbF9maW5kY2xvc2UgICAgKHN0
cnVjdCBhbF9mZmJsayAqaW5mbykgIDsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYg
c3RydWN0IFBBQ0tGSUxFICAgICAgICAgICAgICAgICAKewogICBpbnQgaG5kbDsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgIGludCBmbGFnczsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgdW5zaWduZWQgY2hhciAqYnVmX3BvczsgICAgICAgICAgICAgIAogICBpbnQgYnVmX3Np
emU7ICAgICAgICAgICAgICAgICAgICAgICAgCiAgIGxvbmcgdG9kbzsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKICAgc3RydWN0IFBBQ0tGSUxFICpwYXJlbnQ7ICAgICAgICAgICAgIAogICB2
b2lkICpwYWNrX2RhdGE7ICAgICAgICAgICAgICAgICAgICAgCiAgIGNoYXIgKmZpbGVuYW1lOyAg
ICAgICAgICAgICAgICAgICAgICAKICAgY2hhciAqcGFzc2RhdGE7ICAgICAgICAgICAgICAgICAg
ICAgIAogICBjaGFyICpwYXNzcG9zOyAgICAgICAgICAgICAgICAgICAgICAgCiAgIHVuc2lnbmVk
IGNoYXIgYnVmWzQwOTYgXTsgICAgICAgCn0gUEFDS0ZJTEU7CgoKIHZvaWQgICAgcGFja2ZpbGVf
cGFzc3dvcmQgICAgKGNvbnN0ICBjaGFyICpwYXNzd29yZCkgIDsKIFBBQ0tGSUxFICogICAgcGFj
a19mb3BlbiAgICAoY29uc3QgIGNoYXIgKmZpbGVuYW1lLCBjb25zdCAgY2hhciAqbW9kZSkgIDsK
IGludCAgICBwYWNrX2ZjbG9zZSAgICAoUEFDS0ZJTEUgKmYpICA7CiBpbnQgICAgcGFja19mc2Vl
ayAgICAoUEFDS0ZJTEUgKmYsIGludCBvZmZzZXQpICA7CiBQQUNLRklMRSAqICAgIHBhY2tfZm9w
ZW5fY2h1bmsgICAgKFBBQ0tGSUxFICpmLCBpbnQgcGFjaykgIDsKIFBBQ0tGSUxFICogICAgcGFj
a19mY2xvc2VfY2h1bmsgICAgKFBBQ0tGSUxFICpmKSAgOwogaW50ICAgIHBhY2tfaWdldHcgICAg
KFBBQ0tGSUxFICpmKSAgOwogbG9uZyAgICBwYWNrX2lnZXRsICAgIChQQUNLRklMRSAqZikgIDsK
IGludCAgICBwYWNrX2lwdXR3ICAgIChpbnQgdywgUEFDS0ZJTEUgKmYpICA7CiBsb25nICAgIHBh
Y2tfaXB1dGwgICAgKGxvbmcgbCwgUEFDS0ZJTEUgKmYpICA7CiBpbnQgICAgcGFja19tZ2V0dyAg
ICAoUEFDS0ZJTEUgKmYpICA7CiBsb25nICAgIHBhY2tfbWdldGwgICAgKFBBQ0tGSUxFICpmKSAg
OwogaW50ICAgIHBhY2tfbXB1dHcgICAgKGludCB3LCBQQUNLRklMRSAqZikgIDsKIGxvbmcgICAg
cGFja19tcHV0bCAgICAobG9uZyBsLCBQQUNLRklMRSAqZikgIDsKIGxvbmcgICAgcGFja19mcmVh
ZCAgICAodm9pZCAqcCwgbG9uZyBuLCBQQUNLRklMRSAqZikgIDsKIGxvbmcgICAgcGFja19md3Jp
dGUgICAgKGNvbnN0ICB2b2lkICpwLCBsb25nIG4sIFBBQ0tGSUxFICpmKSAgOwogY2hhciAqICAg
IHBhY2tfZmdldHMgICAgKGNoYXIgKnAsIGludCBtYXgsIFBBQ0tGSUxFICpmKSAgOwogaW50ICAg
IHBhY2tfZnB1dHMgICAgKGNvbnN0ICBjaGFyICpwLCBQQUNLRklMRSAqZikgIDsKCiBpbnQgICAg
X3NvcnRfb3V0X2dldGMgICAgKFBBQ0tGSUxFICpmKSAgOwogaW50ICAgIF9zb3J0X291dF9wdXRj
ICAgIChpbnQgYywgUEFDS0ZJTEUgKmYpICA7CgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxl
Z3JvL2lubGluZS9maWxlLmlubCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgZXh0ZXJu
ICJDIiB7CgoKc3RhdGljIGlubGluZSAgaW50ICAgIHBhY2tfZ2V0YyAgICAoUEFDS0ZJTEUgKmYp
ICAgCnsKICAgZi0+YnVmX3NpemUtLTsKICAgaWYgKGYtPmJ1Zl9zaXplID4gMCkKICAgICAgcmV0
dXJuICooZi0+YnVmX3BvcysrKTsKICAgZWxzZQogICAgICByZXR1cm4gX3NvcnRfb3V0X2dldGMo
Zik7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBwYWNrX3B1dGMgICAgKGludCBjLCBQQUNL
RklMRSAqZikgICAKewogICBmLT5idWZfc2l6ZSsrOwogICBpZiAoZi0+YnVmX3NpemUgPj0gNDA5
NiApCiAgICAgIHJldHVybiBfc29ydF9vdXRfcHV0YyhjLCBmKTsKICAgZWxzZQogICAgICByZXR1
cm4gKCooZi0+YnVmX3BvcysrKSA9IGMpOwp9ICAKCgpzdGF0aWMgaW5saW5lICBpbnQgICAgcGFj
a19mZW9mICAgIChQQUNLRklMRSAqZikgICAKewogICByZXR1cm4gKGYtPmZsYWdzICYgOCApOwp9
ICAKCgpzdGF0aWMgaW5saW5lICBpbnQgICAgcGFja19mZXJyb3IgICAgKFBBQ0tGSUxFICpmKSAg
IAp7CiAgIHJldHVybiAoZi0+ZmxhZ3MgJiAxNiApOwp9ICAKCgogICB9CgoKCgoKIyAxMjAgIi91
c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL2ZpbGUuaCIgMiAzCgoKCiAgIH0KCgoKCgojIDUzICIv
dXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRl
L2FsbGVncm8vZGF0YWZpbGUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgZXh0ZXJu
ICJDIiB7CgoKCgpzdHJ1Y3QgQklUTUFQOwpzdHJ1Y3QgUEFDS0ZJTEU7CnN0cnVjdCBSR0I7CgoK
CgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IERBVEFGSUxFX1BST1BFUlRZCnsKICAg
Y2hhciAqZGF0OyAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICBpbnQgdHlwZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCn0gREFUQUZJTEVfUFJPUEVSVFk7CgoKdHlwZWRlZiBzdHJ1
Y3QgREFUQUZJTEUKewogICB2b2lkICpkYXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
IGludCB0eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgbG9uZyBzaXplOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICBEQVRBRklMRV9QUk9QRVJUWSAqcHJvcDsgICAgICAg
ICAgICAgCn0gREFUQUZJTEU7CgoKIERBVEFGSUxFICogICAgbG9hZF9kYXRhZmlsZSAgICAoY29u
c3QgIGNoYXIgKmZpbGVuYW1lKSAgOwogREFUQUZJTEUgKiAgICBsb2FkX2RhdGFmaWxlX2NhbGxi
YWNrICAgIChjb25zdCAgY2hhciAqZmlsZW5hbWUsICB2b2lkICAoKiAgY2FsbGJhY2sgKSAgIChE
QVRBRklMRSAqKSAgKSAgOwogdm9pZCAgICB1bmxvYWRfZGF0YWZpbGUgICAgKERBVEFGSUxFICpk
YXQpICA7CgogREFUQUZJTEUgKiAgICBsb2FkX2RhdGFmaWxlX29iamVjdCAgICAoY29uc3QgIGNo
YXIgKmZpbGVuYW1lLCBjb25zdCAgY2hhciAqb2JqZWN0bmFtZSkgIDsKIHZvaWQgICAgdW5sb2Fk
X2RhdGFmaWxlX29iamVjdCAgICAoREFUQUZJTEUgKmRhdCkgIDsKCiBEQVRBRklMRSAqICAgIGZp
bmRfZGF0YWZpbGVfb2JqZWN0ICAgIChjb25zdCAgREFUQUZJTEUgKmRhdCwgY29uc3QgIGNoYXIg
Km9iamVjdG5hbWUpICA7CiBjb25zdCAgY2hhciAqICAgIGdldF9kYXRhZmlsZV9wcm9wZXJ0eSAg
ICAoY29uc3QgIERBVEFGSUxFICpkYXQsIGludCB0eXBlKSAgOwogdm9pZCAgICByZWdpc3Rlcl9k
YXRhZmlsZV9vYmplY3QgICAgKGludCBpZCwgIHZvaWQgKiAgKCogIGxvYWQgKSAgIChzdHJ1Y3Qg
UEFDS0ZJTEUgKmYsIGxvbmcgc2l6ZSkgICwgIHZvaWQgICgqICBkZXN0cm95ICkgICAodm9pZCAq
ZGF0YSkgICkgIDsKCiB2b2lkICAgIGZpeHVwX2RhdGFmaWxlICAgIChEQVRBRklMRSAqZGF0YSkg
IDsKCiBzdHJ1Y3QgQklUTUFQICogICAgbG9hZF9iaXRtYXAgICAgKGNvbnN0ICBjaGFyICpmaWxl
bmFtZSwgc3RydWN0IFJHQiAqcGFsKSAgOwogc3RydWN0IEJJVE1BUCAqICAgIGxvYWRfYm1wICAg
IChjb25zdCAgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBSR0IgKnBhbCkgIDsKIHN0cnVjdCBCSVRN
QVAgKiAgICBsb2FkX2xibSAgICAoY29uc3QgIGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgUkdCICpw
YWwpICA7CiBzdHJ1Y3QgQklUTUFQICogICAgbG9hZF9wY3ggICAgKGNvbnN0ICBjaGFyICpmaWxl
bmFtZSwgc3RydWN0IFJHQiAqcGFsKSAgOwogc3RydWN0IEJJVE1BUCAqICAgIGxvYWRfdGdhICAg
IChjb25zdCAgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBSR0IgKnBhbCkgIDsKCiBpbnQgICAgc2F2
ZV9iaXRtYXAgICAgKGNvbnN0ICBjaGFyICpmaWxlbmFtZSwgc3RydWN0IEJJVE1BUCAqYm1wLCBj
b25zdCAgc3RydWN0IFJHQiAqcGFsKSAgOwogaW50ICAgIHNhdmVfYm1wICAgIChjb25zdCAgY2hh
ciAqZmlsZW5hbWUsIHN0cnVjdCBCSVRNQVAgKmJtcCwgY29uc3QgIHN0cnVjdCBSR0IgKnBhbCkg
IDsKIGludCAgICBzYXZlX3BjeCAgICAoY29uc3QgIGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgQklU
TUFQICpibXAsIGNvbnN0ICBzdHJ1Y3QgUkdCICpwYWwpICA7CiBpbnQgICAgc2F2ZV90Z2EgICAg
KGNvbnN0ICBjaGFyICpmaWxlbmFtZSwgc3RydWN0IEJJVE1BUCAqYm1wLCBjb25zdCAgc3RydWN0
IFJHQiAqcGFsKSAgOwoKIHZvaWQgICAgcmVnaXN0ZXJfYml0bWFwX2ZpbGVfdHlwZSAgICAoY29u
c3QgIGNoYXIgKmV4dCwgIHN0cnVjdCBCSVRNQVAgKiAgKCogIGxvYWQgKSAgIChjb25zdCAgY2hh
ciAqZmlsZW5hbWUsIHN0cnVjdCBSR0IgKnBhbCkgICwgIGludCAgKCogIHNhdmUgKSAgIChjb25z
dCAgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBCSVRNQVAgKmJtcCwgY29uc3QgIHN0cnVjdCBSR0Ig
KnBhbCkgICkgIDsKCgogICB9CgoKCgoKIyA1NCAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8u
aCIgMiAzCgoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vZm1hdGhzLmgiIDEgMwog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgIGV4dGVybiAiQyIgewoKCgoKCiBmaXhlZCAgICBmaXhz
cXJ0ICAgIChmaXhlZCB4KSAgOwogZml4ZWQgICAgZml4aHlwb3QgICAgKGZpeGVkIHgsIGZpeGVk
IHkpICA7CiBmaXhlZCAgICBmaXhhdGFuICAgIChmaXhlZCB4KSAgOwogZml4ZWQgICAgZml4YXRh
bjIgICAgKGZpeGVkIHksIGZpeGVkIHgpICA7CgpleHRlcm4gIGZpeGVkICAgIF9jb3NfdGJsIFtd
IDsKZXh0ZXJuICBmaXhlZCAgICBfdGFuX3RibCBbXSA7CmV4dGVybiAgZml4ZWQgICAgX2Fjb3Nf
dGJsIFtdIDsKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vaW5saW5lL2ZtYXRocy5p
bmwiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgIGV4dGVybiAiQyIgewoKCgoKIyAxICIv
dXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9pbmxpbmUvYXNtLmlubCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgogICBleHRlcm4gIkMiIHsKCgoKCgoKCiAgICAKICAgCiMgMSAiL3Vzci9sb2NhbC9p
bmNsdWRlL2FsbGVncm8vcGxhdGZvcm0vYWwzODZnY2MuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIyAxMDAgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL3BsYXRmb3JtL2FsMzg2Z2Nj
LmgiIDMKCgoKCgogCgoKCiMgMTI0ICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9wbGF0Zm9y
bS9hbDM4NmdjYy5oIiAzCgogICAKCgoKCiAKCgpzdGF0aWMgaW5saW5lICBmaXhlZCAgICBmaXhh
ZGQgICAgKGZpeGVkIHgsIGZpeGVkIHkpICAgCnsKICAgZml4ZWQgcmVzdWx0OwoKICAgIAogICB7
CiAgICAgIGFzbSAoCgkgIiAgYWRkbCAlMiwgJTAgOyAiICAgICAgICAgICAgICAgIAoJICIgIGpu
byAwZiA7ICIgICAgICAgICAgICAgICAgICAgICAKCgkgIiAgbW92bCAlNCwgJTAgOyAiICAgICAg
ICAgICAgICAgIAoJICIgIG1vdmwgJTMsICglMCkgOyAiCgkgIiAgbW92bCAkMHg3RkZGRkZGRiwg
JTAgOyAiICAgICAgIAoJICIgIGNtcGwgJDAsICUyIDsgIgoJICIgIGpnIDBmIDsgIgoJICIgIG5l
Z2wgJTAgOyAiCgoJICIgMDogIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgIDog
Ij1yIiAocmVzdWx0KSAgICAgICAgICAgICAgICAgICAgICAKCiAgICAgIDogIjAiICh4KSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKCSJybSIgKHkpLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgCgkiaSIgKDM0ICksCgkibSIgKGFsbGVncm9fZXJybm8pCgogICAgICA6ICIlY2MiLCAibWVt
b3J5IiAgICAgICAgICAgICAgICAgICAgCiAgICAgICk7CgogICAgICByZXR1cm4gcmVzdWx0Owog
ICB9Cn0gIAoKCgogCgoKc3RhdGljIGlubGluZSAgZml4ZWQgICAgZml4c3ViICAgIChmaXhlZCB4
LCBmaXhlZCB5KSAgIAp7CiAgIGZpeGVkIHJlc3VsdDsKCiAgICAKICAgewogICAgICBhc20gKAoJ
ICIgIHN1YmwgJTIsICUwIDsgIiAgICAgICAgICAgICAgICAKCSAiICBqbm8gMGYgOyAiICAgICAg
ICAgICAgICAgICAgICAgCgoJICIgIG1vdmwgJTQsICUwIDsgIiAgICAgICAgICAgICAgICAKCSAi
ICBtb3ZsICUzLCAoJTApIDsgIgoJICIgIG1vdmwgJDB4N0ZGRkZGRkYsICUwIDsgIiAgICAgICAK
CSAiICBjbXBsICQwLCAlMiA7ICIKCSAiICBqbCAwZiA7ICIKCSAiICBuZWdsICUwIDsgIgoKCSAi
IDA6ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICA6ICI9ciIgKHJlc3VsdCkg
ICAgICAgICAgICAgICAgICAgICAgCgogICAgICA6ICIwIiAoeCksICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCgkicm0iICh5KSwgICAgICAgICAgICAgICAgICAgICAgICAgIAoJImkiICgzNCAp
LAoJIm0iIChhbGxlZ3JvX2Vycm5vKQoKICAgICAgOiAiJWNjIiwgIm1lbW9yeSIgICAgICAgICAg
ICAgICAgICAgIAogICAgICApOwoKICAgICAgcmV0dXJuIHJlc3VsdDsKICAgfQp9ICAKCgoKIAoK
CnN0YXRpYyBpbmxpbmUgIGZpeGVkICAgIGZpeG11bCAgICAoZml4ZWQgeCwgZml4ZWQgeSkgICAK
ewogICBmaXhlZCBlZHggX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgZml4ZWQgcmVz
dWx0OwoKICAgIAogICB7CiAgICAgIGFzbSAoCgkgIiAgbW92bCAlMiwgJSVlYXggOyAiCgkgIiAg
aW11bGwgJTMgOyAiICAgICAgICAgICAgICAgICAgIAoJICIgIHNocmRsICQxNiwgJSVlZHgsICUl
ZWF4IDsgIgoKCSAiICBzYXJsICQxNSwgJSVlZHggOyAiICAgICAgICAgICAgCgkgIiAganogMGYg
OyAiCgkgIiAgY21wbCAkLTEsICUlZWR4IDsgIgoJICIgIGplIDBmIDsgIgoKCSAiICBtb3ZsICU1
LCAlJWVheCA7ICIgICAgICAgICAgICAgCgkgIiAgbW92bCAlNCwgKCUlZWF4KSA7ICIKCSAiICBt
b3ZsICQweDdGRkZGRkZGLCAlJWVheCA7ICIgICAgCgkgIiAgY21wbCAkMCwgJTIgOyAiCgkgIiAg
amdlIDFmIDsgIgoJICIgIG5lZ2wgJSVlYXggOyAiCgkgIiAxOiAiCgkgIiAgY21wbCAkMCwgJTMg
OyAiCgkgIiAgamdlIDBmIDsgIgoJICIgIG5lZ2wgJSVlYXggOyAiCgoJICIgIC5iYWxpZ24gNCwg
MHg5MCA7ICIKCgkgIiAwOiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgOiAi
PSZhIiAocmVzdWx0KSwgICAgICAgICAgICAgICAgICAgIAoJIj0mZCIgKGVkeCkgICAgICAgICAg
ICAgICAgICAgICAgICAKCiAgICAgIDogIm1yIiAoeCksICAgICAgICAgICAgICAgICAgICAgICAg
ICAKCSJtciIgKHkpLAoJImkiICgzNCApLAoJIm0iIChhbGxlZ3JvX2Vycm5vKQoKICAgICAgOiAi
JWNjIiwgIm1lbW9yeSIgICAgICAgICAgICAgICAgICAgIAogICAgICApOwoKICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgfQp9ICAKCgoKIAoKCnN0YXRpYyBpbmxpbmUgIGZpeGVkICAgIGZpeGRpdiAg
ICAoZml4ZWQgeCwgZml4ZWQgeSkgICAKewogICBmaXhlZCBlZHggX19hdHRyaWJ1dGVfXyAoKF9f
dW51c2VkX18pKTsKICAgZml4ZWQgcmVnIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSk7CiAg
IGZpeGVkIHJlc3VsdDsKCiAgICAKICAgewogICAgICBhc20gKAoJICIgIHRlc3RsICUlZWF4LCAl
JWVheCA7ICIgICAgICAgICAKCSAiICBqcyAzZiA7ICIKCgkgIiAgdGVzdGwgJTIsICUyIDsgIiAg
ICAgICAgICAgICAgIAoJICIgIGpucyA0ZiA7ICIKCSAiICBuZWdsICUyIDsgIgoKCSAiIDA6ICIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkgIiAgbW92bCAlJWVheCwgJSVlZHggOyAiICAg
ICAgICAgIAoJICIgIHNocmwgJDE2LCAlJWVkeCA7ICIKCSAiICBzaGxsICQxNiwgJSVlYXggOyAi
CgkgIiAgY21wbCAlMiwgJSVlZHggOyAiCgkgIiAgamFlIDFmIDsgIgoKCSAiICBkaXZsICUyIDsg
IiAgICAgICAgICAgICAgICAgICAgCgkgIiAgdGVzdGwgJSVlYXgsICUlZWF4IDsgIgoJICIgIGpu
cyAyZiA7ICIKCgkgIiAxOiAiCgkgIiAgbW92bCAlNiwgJSVlYXggOyAiICAgICAgICAgICAgIAoJ
ICIgIG1vdmwgJTUsICglJWVheCkgOyAiCgkgIiAgbW92bCAkMHg3RkZGRkZGRiwgJSVlYXggOyAi
ICAgIAoKCSAiIDI6ICIKCSAiICBuZWdsICUlZWF4IDsgIiAgICAgICAgICAgICAgICAgCgkgIiAg
am1wIDZmIDsgIgoKCSAiICAuYmFsaWduIDQsIDB4OTAgOyAiCgoJICIgMzogIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKCSAiICBuZWdsICUlZWF4IDsgIgoJICIgIHRlc3RsICUyLCAlMiA7
ICIgICAgICAgICAgICAgICAKCSAiICBqbnMgMGIgOyAiCgkgIiAgbmVnbCAlMiA7ICIKCgkgIiA0
OiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoJICIgIG1vdmwgJSVlYXgsICUlZWR4IDsg
IiAgICAgICAgICAKCSAiICBzaHJsICQxNiwgJSVlZHggOyAiCgkgIiAgc2hsbCAkMTYsICUlZWF4
IDsgIgoJICIgIGNtcGwgJTIsICUlZWR4IDsgIgoJICIgIGphZSA1ZiA7ICIKCgkgIiAgZGl2bCAl
MiA7ICIgICAgICAgICAgICAgICAgICAgIAoJICIgIHRlc3RsICUlZWF4LCAlJWVheCA7ICIKCSAi
ICBqbnMgNmYgOyAiCgoJICIgNTogIgoJICIgIG1vdmwgJTYsICUlZWF4IDsgIiAgICAgICAgICAg
ICAKCSAiICBtb3ZsICU1LCAoJSVlYXgpIDsgIgoJICIgIG1vdmwgJDB4N0ZGRkZGRkYsICUlZWF4
IDsgIiAgICAKCgkgIiA2OiAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgOiAi
PWEiIChyZXN1bHQpLCAgICAgICAgICAgICAgICAgICAgIAoJIj0mZCIgKGVkeCksICAgICAgICAg
ICAgICAgICAgICAgICAKCSI9ciIgKHJlZykgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAg
ICA6ICIwIiAoeCksICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkiMiIgKHkpLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAoJImkiICgzNCApLAoJIm0iIChhbGxlZ3JvX2Vycm5vKQoKICAg
ICAgOiAiJWNjIiwgIm1lbW9yeSIgICAgICAgICAgICAgICAgICAgIAogICAgICApOwoKICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgfQp9ICAKCgoKIAoKCgpzdGF0aWMgaW5saW5lICBpbnQgICAgZml4
Zmxvb3IgICAgKGZpeGVkIHgpICAgCnsKICAgaW50IHJlc3VsdDsKCiAgIGFzbSAoCiAgICAgICIg
c2FybCAkMTYsICUwICIJCSAKCiAgICA6ICI9ciIgKHJlc3VsdCkJCSAKCiAgICA6ICIwIiAoeCkg
CQkJIAogICApOwoKICAgcmV0dXJuIHJlc3VsdDsKfSAgCgoKCiAKCgoKc3RhdGljIGlubGluZSAg
aW50ICAgIGZpeGNlaWwgICAgKGZpeGVkIHgpICAgCnsKICAgaW50IHJlc3VsdDsKCiAgIGFzbSAo
CiAgICAgICIgYWRkbCAkMHhGRkZGLCAlMCA7IgkgCiAgICAgICIgam5zIDBmIDsiCiAgICAgICIg
am8gMWYgOyIKCiAgICAgICIwOiIKICAgICAgIiBzYXJsICQxNiwgJTAgOyIJCSAKICAgICAgIiBq
bXAgMmYgOyIKCiAgICAgICIxOiIKICAgICAgIiBtb3ZsICUzLCAlMCA7IgkJIAogICAgICAiIG1v
dmwgJTIsICglMCkgOyIKICAgICAgIiBtb3ZsICQweDdGRkYsICUwIDsiCSAKCiAgICAgICIyOiIK
ICAgIDogIj1yIiAocmVzdWx0KQkJIAoKICAgIDogIjAiICh4KSwJCQkgCiAgICAgICJpIiAoMzQg
KSwKICAgICAgIm0iIChhbGxlZ3JvX2Vycm5vKQoKICAgIDogIiVjYyIsICJtZW1vcnkiCQkgCiAg
ICk7CgogICByZXR1cm4gcmVzdWx0Owp9ICAKCgoKCgoKCiMgMjggIi91c3IvbG9jYWwvaW5jbHVk
ZS9hbGxlZ3JvL2lubGluZS9hc20uaW5sIiAyIDMKCgojIDQ1ICIvdXNyL2xvY2FsL2luY2x1ZGUv
YWxsZWdyby9pbmxpbmUvYXNtLmlubCIgMwoKCgoKCgogICB9CgoKIyAyOCAiL3Vzci9sb2NhbC9p
bmNsdWRlL2FsbGVncm8vaW5saW5lL2ZtYXRocy5pbmwiIDIgMwoKCgoKIApzdGF0aWMgaW5saW5l
ICBmaXhlZCAgICBmdG9maXggICAgKGRvdWJsZSB4KSAgIAp7CiAgIGlmICh4ID4gMzI3NjcuMCkg
ewogICAgICAqYWxsZWdyb19lcnJubyA9IDM0IDsKICAgICAgcmV0dXJuIDB4N0ZGRkZGRkY7CiAg
IH0KCiAgIGlmICh4IDwgLTMyNzY3LjApIHsKICAgICAgKmFsbGVncm9fZXJybm8gPSAzNCA7CiAg
ICAgIHJldHVybiAtMHg3RkZGRkZGRjsKICAgfQoKICAgcmV0dXJuIChsb25nKSh4ICogNjU1MzYu
MCArICh4IDwgMCA/IC0wLjUgOiAwLjUpKTsKfSAgCgoKc3RhdGljIGlubGluZSAgZG91YmxlICAg
IGZpeHRvZiAgICAoZml4ZWQgeCkgICAKewogICByZXR1cm4gKGRvdWJsZSl4IC8gNjU1MzYuMDsK
fSAgCgoKIyAxNDIgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL2lubGluZS9mbWF0aHMuaW5s
IiAzCgoKCnN0YXRpYyBpbmxpbmUgIGZpeGVkICAgIGl0b2ZpeCAgICAoaW50IHgpICAgCnsKICAg
cmV0dXJuIHggPDwgMTY7Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGludCAgICBmaXh0b2kgICAgKGZp
eGVkIHgpICAgCnsKICAgcmV0dXJuIGZpeGZsb29yKHgpICsgKCh4ICYgMHg4MDAwKSA+PiAxNSk7
Cn0gIAoKCnN0YXRpYyBpbmxpbmUgIGZpeGVkICAgIGZpeGNvcyAgICAoZml4ZWQgeCkgICAKewog
ICByZXR1cm4gX2Nvc190YmxbKCh4ICsgMHg0MDAwKSA+PiAxNSkgJiAweDFGRl07Cn0gIAoKCnN0
YXRpYyBpbmxpbmUgIGZpeGVkICAgIGZpeHNpbiAgICAoZml4ZWQgeCkgICAKewogICByZXR1cm4g
X2Nvc190YmxbKCh4IC0gMHg0MDAwMDAgKyAweDQwMDApID4+IDE1KSAmIDB4MUZGXTsKfSAgCgoK
c3RhdGljIGlubGluZSAgZml4ZWQgICAgZml4dGFuICAgIChmaXhlZCB4KSAgIAp7CiAgIHJldHVy
biBfdGFuX3RibFsoKHggKyAweDQwMDApID4+IDE1KSAmIDB4RkZdOwp9ICAKCgpzdGF0aWMgaW5s
aW5lICBmaXhlZCAgICBmaXhhY29zICAgIChmaXhlZCB4KSAgIAp7CiAgIGlmICgoeCA8IC02NTUz
NikgfHwgKHggPiA2NTUzNikpIHsKICAgICAgKmFsbGVncm9fZXJybm8gPSAzMyA7CiAgICAgIHJl
dHVybiAwOwogICB9CgogICByZXR1cm4gX2Fjb3NfdGJsWyh4KzY1NTM2KzEyNyk+PjhdOwp9ICAK
CgpzdGF0aWMgaW5saW5lICBmaXhlZCAgICBmaXhhc2luICAgIChmaXhlZCB4KSAgIAp7CiAgIGlm
ICgoeCA8IC02NTUzNikgfHwgKHggPiA2NTUzNikpIHsKICAgICAgKmFsbGVncm9fZXJybm8gPSAz
MyA7CiAgICAgIHJldHVybiAwOwogICB9CgogICByZXR1cm4gMHgwMDQwMDAwMCAtIF9hY29zX3Ri
bFsoeCs2NTUzNisxMjcpPj44XTsKfSAgCgoKICAgfQoKCgoKCiMgMzggIi91c3IvbG9jYWwvaW5j
bHVkZS9hbGxlZ3JvL2ZtYXRocy5oIiAyIDMKCgoKICAgfQoKCgoKCiMgNTcgIi91c3IvbG9jYWwv
aW5jbHVkZS9hbGxlZ3JvLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9t
YXRyaXguaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgZXh0ZXJuICJDIiB7CgoKCgoK
CnR5cGVkZWYgc3RydWN0IE1BVFJJWCAgICAgICAgICAgICAKewogICBmaXhlZCB2WzNdWzNdOyAg
ICAgICAgICAgICAgICAgCiAgIGZpeGVkIHRbM107ICAgICAgICAgICAgICAgICAgICAKfSBNQVRS
SVg7CgoKdHlwZWRlZiBzdHJ1Y3QgTUFUUklYX2YgICAgICAgICAgIAp7CiAgIGZsb2F0IHZbM11b
M107ICAgICAgICAgICAgICAgICAKICAgZmxvYXQgdFszXTsgICAgICAgICAgICAgICAgICAgIAp9
IE1BVFJJWF9mOwoKCmV4dGVybiAgTUFUUklYICAgIGlkZW50aXR5X21hdHJpeCAgOwpleHRlcm4g
IE1BVFJJWF9mICAgIGlkZW50aXR5X21hdHJpeF9mICA7Cgogdm9pZCAgICBnZXRfdHJhbnNsYXRp
b25fbWF0cml4ICAgIChNQVRSSVggKm0sIGZpeGVkIHgsIGZpeGVkIHksIGZpeGVkIHopICA7CiB2
b2lkICAgIGdldF90cmFuc2xhdGlvbl9tYXRyaXhfZiAgICAoTUFUUklYX2YgKm0sIGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHopICA7Cgogdm9pZCAgICBnZXRfc2NhbGluZ19tYXRyaXggICAgKE1B
VFJJWCAqbSwgZml4ZWQgeCwgZml4ZWQgeSwgZml4ZWQgeikgIDsKIHZvaWQgICAgZ2V0X3NjYWxp
bmdfbWF0cml4X2YgICAgKE1BVFJJWF9mICptLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSAg
OwoKIHZvaWQgICAgZ2V0X3hfcm90YXRlX21hdHJpeCAgICAoTUFUUklYICptLCBmaXhlZCByKSAg
Owogdm9pZCAgICBnZXRfeF9yb3RhdGVfbWF0cml4X2YgICAgKE1BVFJJWF9mICptLCBmbG9hdCBy
KSAgOwoKIHZvaWQgICAgZ2V0X3lfcm90YXRlX21hdHJpeCAgICAoTUFUUklYICptLCBmaXhlZCBy
KSAgOwogdm9pZCAgICBnZXRfeV9yb3RhdGVfbWF0cml4X2YgICAgKE1BVFJJWF9mICptLCBmbG9h
dCByKSAgOwoKIHZvaWQgICAgZ2V0X3pfcm90YXRlX21hdHJpeCAgICAoTUFUUklYICptLCBmaXhl
ZCByKSAgOwogdm9pZCAgICBnZXRfel9yb3RhdGVfbWF0cml4X2YgICAgKE1BVFJJWF9mICptLCBm
bG9hdCByKSAgOwoKIHZvaWQgICAgZ2V0X3JvdGF0aW9uX21hdHJpeCAgICAoTUFUUklYICptLCBm
aXhlZCB4LCBmaXhlZCB5LCBmaXhlZCB6KSAgOwogdm9pZCAgICBnZXRfcm90YXRpb25fbWF0cml4
X2YgICAgKE1BVFJJWF9mICptLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSAgOwoKIHZvaWQg
ICAgZ2V0X2FsaWduX21hdHJpeCAgICAoTUFUUklYICptLCBmaXhlZCB4ZnJvbnQsIGZpeGVkIHlm
cm9udCwgZml4ZWQgemZyb250LCBmaXhlZCB4dXAsIGZpeGVkIHl1cCwgZml4ZWQgenVwKSAgOwog
dm9pZCAgICBnZXRfYWxpZ25fbWF0cml4X2YgICAgKE1BVFJJWF9mICptLCBmbG9hdCB4ZnJvbnQs
IGZsb2F0IHlmcm9udCwgZmxvYXQgemZyb250LCBmbG9hdCB4dXAsIGZsb2F0IHl1cCwgZmxvYXQg
enVwKSAgOwoKIHZvaWQgICAgZ2V0X3ZlY3Rvcl9yb3RhdGlvbl9tYXRyaXggICAgKE1BVFJJWCAq
bSwgZml4ZWQgeCwgZml4ZWQgeSwgZml4ZWQgeiwgZml4ZWQgYSkgIDsKIHZvaWQgICAgZ2V0X3Zl
Y3Rvcl9yb3RhdGlvbl9tYXRyaXhfZiAgICAoTUFUUklYX2YgKm0sIGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHosIGZsb2F0IGEpICA7Cgogdm9pZCAgICBnZXRfdHJhbnNmb3JtYXRpb25fbWF0cml4
ICAgIChNQVRSSVggKm0sIGZpeGVkIHNjYWxlLCBmaXhlZCB4cm90LCBmaXhlZCB5cm90LCBmaXhl
ZCB6cm90LCBmaXhlZCB4LCBmaXhlZCB5LCBmaXhlZCB6KSAgOwogdm9pZCAgICBnZXRfdHJhbnNm
b3JtYXRpb25fbWF0cml4X2YgICAgKE1BVFJJWF9mICptLCBmbG9hdCBzY2FsZSwgZmxvYXQgeHJv
dCwgZmxvYXQgeXJvdCwgZmxvYXQgenJvdCwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgIDsK
CiB2b2lkICAgIGdldF9jYW1lcmFfbWF0cml4ICAgIChNQVRSSVggKm0sIGZpeGVkIHgsIGZpeGVk
IHksIGZpeGVkIHosIGZpeGVkIHhmcm9udCwgZml4ZWQgeWZyb250LCBmaXhlZCB6ZnJvbnQsIGZp
eGVkIHh1cCwgZml4ZWQgeXVwLCBmaXhlZCB6dXAsIGZpeGVkIGZvdiwgZml4ZWQgYXNwZWN0KSAg
Owogdm9pZCAgICBnZXRfY2FtZXJhX21hdHJpeF9mICAgIChNQVRSSVhfZiAqbSwgZmxvYXQgeCwg
ZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgeGZyb250LCBmbG9hdCB5ZnJvbnQsIGZsb2F0IHpmcm9u
dCwgZmxvYXQgeHVwLCBmbG9hdCB5dXAsIGZsb2F0IHp1cCwgZmxvYXQgZm92LCBmbG9hdCBhc3Bl
Y3QpICA7Cgogdm9pZCAgICBxdHJhbnNsYXRlX21hdHJpeCAgICAoTUFUUklYICptLCBmaXhlZCB4
LCBmaXhlZCB5LCBmaXhlZCB6KSAgOwogdm9pZCAgICBxdHJhbnNsYXRlX21hdHJpeF9mICAgIChN
QVRSSVhfZiAqbSwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgIDsKCiB2b2lkICAgIHFzY2Fs
ZV9tYXRyaXggICAgKE1BVFJJWCAqbSwgZml4ZWQgc2NhbGUpICA7CiB2b2lkICAgIHFzY2FsZV9t
YXRyaXhfZiAgICAoTUFUUklYX2YgKm0sIGZsb2F0IHNjYWxlKSAgOwoKIHZvaWQgICAgbWF0cml4
X211bCAgICAoY29uc3QgIE1BVFJJWCAqbTEsIGNvbnN0ICBNQVRSSVggKm0yLCBNQVRSSVggKm91
dCkgIDsKIHZvaWQgICAgbWF0cml4X211bF9mICAgIChjb25zdCAgTUFUUklYX2YgKm0xLCBjb25z
dCAgTUFUUklYX2YgKm0yLCBNQVRSSVhfZiAqb3V0KSAgOwoKIHZvaWQgICAgYXBwbHlfbWF0cml4
X2YgICAgKGNvbnN0ICBNQVRSSVhfZiAqbSwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxv
YXQgKnhvdXQsIGZsb2F0ICp5b3V0LCBmbG9hdCAqem91dCkgIDsKCiMgMSAiL3Vzci9sb2NhbC9p
bmNsdWRlL2FsbGVncm8vaW5saW5lL21hdHJpeC5pbmwiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAgIGV4dGVybiAiQyIgewoKCgoKCgoKCnN0YXRpYyBpbmxpbmUgIHZvaWQgICAgYXBwbHlf
bWF0cml4ICAgIChNQVRSSVggKm0sIGZpeGVkIHgsIGZpeGVkIHksIGZpeGVkIHosIGZpeGVkICp4
b3V0LCBmaXhlZCAqeW91dCwgZml4ZWQgKnpvdXQpICAgCnsKICAgKnhvdXQgPSAoZml4bXVsKHgs
IG0tPnZbIDAgXVswXSkgKyBmaXhtdWwoeSwgbS0+dlsgMCBdWzFdKSArIGZpeG11bCh6LCBtLT52
WyAwIF1bMl0pICsgbS0+dFsgMCBdKSA7CiAgICp5b3V0ID0gKGZpeG11bCh4LCBtLT52WyAxIF1b
MF0pICsgZml4bXVsKHksIG0tPnZbIDEgXVsxXSkgKyBmaXhtdWwoeiwgbS0+dlsgMSBdWzJdKSAr
IG0tPnRbIDEgXSkgOwogICAqem91dCA9IChmaXhtdWwoeCwgbS0+dlsgMiBdWzBdKSArIGZpeG11
bCh5LCBtLT52WyAyIF1bMV0pICsgZml4bXVsKHosIG0tPnZbIDIgXVsyXSkgKyBtLT50WyAyIF0p
IDsKfSAgCgoKCgoKICAgfQoKCgoKCiMgODggIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL21h
dHJpeC5oIiAyIDMKCgoKICAgfQoKCgoKCiMgNTggIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3Jv
LmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9xdWF0LmgiIDEgMwogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAgIGV4dGVybiAiQyIgewoKCgoKdHlwZWRlZiBzdHJ1Y3QgUVVB
VAp7CiAgICAgZmxvYXQgdywgeCwgeSwgejsKfSBRVUFUOwoKCmV4dGVybiAgUVVBVCAgICBpZGVu
dGl0eV9xdWF0ICA7Cgogdm9pZCAgICBxdWF0X211bCAgICAoY29uc3QgIFFVQVQgKnAsIGNvbnN0
ICBRVUFUICpxLCBRVUFUICpvdXQpICA7CiB2b2lkICAgIGdldF94X3JvdGF0ZV9xdWF0ICAgIChR
VUFUICpxLCBmbG9hdCByKSAgOwogdm9pZCAgICBnZXRfeV9yb3RhdGVfcXVhdCAgICAoUVVBVCAq
cSwgZmxvYXQgcikgIDsKIHZvaWQgICAgZ2V0X3pfcm90YXRlX3F1YXQgICAgKFFVQVQgKnEsIGZs
b2F0IHIpICA7CiB2b2lkICAgIGdldF9yb3RhdGlvbl9xdWF0ICAgIChRVUFUICpxLCBmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6KSAgOwogdm9pZCAgICBnZXRfdmVjdG9yX3JvdGF0aW9uX3F1YXQg
ICAgKFFVQVQgKnEsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IGEpICA7Cgogdm9p
ZCAgICBhcHBseV9xdWF0ICAgIChjb25zdCAgUVVBVCAqcSwgZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeiwgZmxvYXQgKnhvdXQsIGZsb2F0ICp5b3V0LCBmbG9hdCAqem91dCkgIDsKIHZvaWQgICAg
cXVhdF9zbGVycCAgICAoY29uc3QgIFFVQVQgKmZyb20sIGNvbnN0ICBRVUFUICp0bywgZmxvYXQg
dCwgUVVBVCAqb3V0LCBpbnQgaG93KSAgOwoKCgoKCgoKCgoKICAgfQoKCgoKCiMgNTkgIi91c3Iv
bG9jYWwvaW5jbHVkZS9hbGxlZ3JvLmgiIDIgMwoKCiMgMSAiL3Vzci9sb2NhbC9pbmNsdWRlL2Fs
bGVncm8vM2QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAgZXh0ZXJuICJDIiB7CgoK
CgoKc3RydWN0IEJJVE1BUDsKCnR5cGVkZWYgc3RydWN0IFYzRCAgICAgICAgICAgICAgICAgICAK
ewogICBmaXhlZCB4LCB5LCB6OyAgICAgICAgICAgICAgICAgICAgCiAgIGZpeGVkIHUsIHY7ICAg
ICAgICAgICAgICAgICAgICAgICAKICAgaW50IGM7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAp9IFYzRDsKCgp0eXBlZGVmIHN0cnVjdCBWM0RfZiAgICAgICAgICAgICAgICAgCnsKICAgZmxv
YXQgeCwgeSwgejsgICAgICAgICAgICAgICAgICAgIAogICBmbG9hdCB1LCB2OyAgICAgICAgICAg
ICAgICAgICAgICAgCiAgIGludCBjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKfSBWM0Rf
ZjsKCgoKCgoKCgoKCgoKCgoKCgoKCgpleHRlcm4gIGZsb2F0ICAgIHNjZW5lX2dhcCAgOwoKIHZv
aWQgICAgcG9seWdvbjNkICAgIChzdHJ1Y3QgQklUTUFQICpibXAsIGludCB0eXBlLCBzdHJ1Y3Qg
QklUTUFQICp0ZXh0dXJlLCBpbnQgdmMsIFYzRCAqdnR4W10pICA7CiB2b2lkICAgIHBvbHlnb24z
ZF9mICAgIChzdHJ1Y3QgQklUTUFQICpibXAsIGludCB0eXBlLCBzdHJ1Y3QgQklUTUFQICp0ZXh0
dXJlLCBpbnQgdmMsIFYzRF9mICp2dHhbXSkgIDsKIHZvaWQgICAgdHJpYW5nbGUzZCAgICAoc3Ry
dWN0IEJJVE1BUCAqYm1wLCBpbnQgdHlwZSwgc3RydWN0IEJJVE1BUCAqdGV4dHVyZSwgVjNEICp2
MSwgVjNEICp2MiwgVjNEICp2MykgIDsKIHZvaWQgICAgdHJpYW5nbGUzZF9mICAgIChzdHJ1Y3Qg
QklUTUFQICpibXAsIGludCB0eXBlLCBzdHJ1Y3QgQklUTUFQICp0ZXh0dXJlLCBWM0RfZiAqdjEs
IFYzRF9mICp2MiwgVjNEX2YgKnYzKSAgOwogdm9pZCAgICBxdWFkM2QgICAgKHN0cnVjdCBCSVRN
QVAgKmJtcCwgaW50IHR5cGUsIHN0cnVjdCBCSVRNQVAgKnRleHR1cmUsIFYzRCAqdjEsIFYzRCAq
djIsIFYzRCAqdjMsIFYzRCAqdjQpICA7CiB2b2lkICAgIHF1YWQzZF9mICAgIChzdHJ1Y3QgQklU
TUFQICpibXAsIGludCB0eXBlLCBzdHJ1Y3QgQklUTUFQICp0ZXh0dXJlLCBWM0RfZiAqdjEsIFYz
RF9mICp2MiwgVjNEX2YgKnYzLCBWM0RfZiAqdjQpICA7CiBpbnQgICAgY2xpcDNkICAgIChpbnQg
dHlwZSwgZml4ZWQgbWluX3osIGZpeGVkIG1heF96LCBpbnQgdmMsIGNvbnN0ICBWM0QgKnZ0eFtd
LCBWM0QgKnZvdXRbXSwgVjNEICp2dG1wW10sIGludCBvdXRbXSkgIDsKIGludCAgICBjbGlwM2Rf
ZiAgICAoaW50IHR5cGUsIGZsb2F0IG1pbl96LCBmbG9hdCBtYXhfeiwgaW50IHZjLCBjb25zdCAg
VjNEX2YgKnZ0eFtdLCBWM0RfZiAqdm91dFtdLCBWM0RfZiAqdnRtcFtdLCBpbnQgb3V0W10pICA7
CgogZml4ZWQgICAgcG9seWdvbl96X25vcm1hbCAgICAoY29uc3QgIFYzRCAqdjEsIGNvbnN0ICBW
M0QgKnYyLCBjb25zdCAgVjNEICp2MykgIDsKIGZsb2F0ICAgIHBvbHlnb25fel9ub3JtYWxfZiAg
ICAoY29uc3QgIFYzRF9mICp2MSwgY29uc3QgIFYzRF9mICp2MiwgY29uc3QgIFYzRF9mICp2Mykg
IDsKCiAKCgoKdHlwZWRlZiBzdHJ1Y3QgQklUTUFQIFpCVUZGRVI7CgogWkJVRkZFUiAqICAgIGNy
ZWF0ZV96YnVmZmVyICAgIChzdHJ1Y3QgQklUTUFQICpibXApICA7CiBaQlVGRkVSICogICAgY3Jl
YXRlX3N1Yl96YnVmZmVyICAgIChaQlVGRkVSICpwYXJlbnQsIGludCB4LCBpbnQgeSwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KSAgOwogdm9pZCAgICBzZXRfemJ1ZmZlciAgICAoWkJVRkZFUiAqemJ1
ZikgIDsKIHZvaWQgICAgY2xlYXJfemJ1ZmZlciAgICAoWkJVRkZFUiAqemJ1ZiwgZmxvYXQgeikg
IDsKIHZvaWQgICAgZGVzdHJveV96YnVmZmVyICAgIChaQlVGRkVSICp6YnVmKSAgOwoKIGludCAg
ICBjcmVhdGVfc2NlbmUgICAgKGludCBuZWRnZSwgaW50IG5wb2x5KSAgOwogdm9pZCAgICBjbGVh
cl9zY2VuZSAgICAoc3RydWN0IEJJVE1BUCogYm1wKSAgOwogdm9pZCAgICBkZXN0cm95X3NjZW5l
ICAgICh2b2lkKSAgOwogaW50ICAgIHNjZW5lX3BvbHlnb24zZCAgICAoaW50IHR5cGUsIHN0cnVj
dCBCSVRNQVAgKnRleHR1cmUsIGludCB2eCwgVjNEICp2dHhbXSkgIDsKIGludCAgICBzY2VuZV9w
b2x5Z29uM2RfZiAgICAoaW50IHR5cGUsIHN0cnVjdCBCSVRNQVAgKnRleHR1cmUsIGludCB2eCwg
VjNEX2YgKnZ0eFtdKSAgOwogdm9pZCAgICByZW5kZXJfc2NlbmUgICAgKHZvaWQpICA7CgoKICAg
fQoKCgoKCiMgNjEgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvLmgiIDIgMwoKIyAxICIvdXNy
L2xvY2FsL2luY2x1ZGUvYWxsZWdyby8zZG1hdGhzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiAgIGV4dGVybiAiQyIgewoKCgoKCnN0cnVjdCBRVUFUOwpzdHJ1Y3QgTUFUUklYX2Y7Cgog
Zml4ZWQgICAgdmVjdG9yX2xlbmd0aCAgICAoZml4ZWQgeCwgZml4ZWQgeSwgZml4ZWQgeikgIDsK
IGZsb2F0ICAgIHZlY3Rvcl9sZW5ndGhfZiAgICAoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikg
IDsKCiB2b2lkICAgIG5vcm1hbGl6ZV92ZWN0b3IgICAgKGZpeGVkICp4LCBmaXhlZCAqeSwgZml4
ZWQgKnopICA7CiB2b2lkICAgIG5vcm1hbGl6ZV92ZWN0b3JfZiAgICAoZmxvYXQgKngsIGZsb2F0
ICp5LCBmbG9hdCAqeikgIDsKCiB2b2lkICAgIGNyb3NzX3Byb2R1Y3QgICAgKGZpeGVkIHgxLCBm
aXhlZCB5MSwgZml4ZWQgejEsIGZpeGVkIHgyLCBmaXhlZCB5MiwgZml4ZWQgejIsIGZpeGVkICp4
b3V0LCBmaXhlZCAqeW91dCwgZml4ZWQgKnpvdXQpICA7CiB2b2lkICAgIGNyb3NzX3Byb2R1Y3Rf
ZiAgICAoZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB6MSwgZmxvYXQgeDIsIGZsb2F0IHkyLCBm
bG9hdCB6MiwgZmxvYXQgKnhvdXQsIGZsb2F0ICp5b3V0LCBmbG9hdCAqem91dCkgIDsKCmV4dGVy
biAgZml4ZWQgICAgX3BlcnNwX3hzY2FsZSAgOwpleHRlcm4gIGZpeGVkICAgIF9wZXJzcF95c2Nh
bGUgIDsKZXh0ZXJuICBmaXhlZCAgICBfcGVyc3BfeG9mZnNldCAgOwpleHRlcm4gIGZpeGVkICAg
IF9wZXJzcF95b2Zmc2V0ICA7CgpleHRlcm4gIGZsb2F0ICAgIF9wZXJzcF94c2NhbGVfZiAgOwpl
eHRlcm4gIGZsb2F0ICAgIF9wZXJzcF95c2NhbGVfZiAgOwpleHRlcm4gIGZsb2F0ICAgIF9wZXJz
cF94b2Zmc2V0X2YgIDsKZXh0ZXJuICBmbG9hdCAgICBfcGVyc3BfeW9mZnNldF9mICA7Cgogdm9p
ZCAgICBzZXRfcHJvamVjdGlvbl92aWV3cG9ydCAgICAoaW50IHgsIGludCB5LCBpbnQgdywgaW50
IGgpICA7Cgogdm9pZCAgICBxdWF0X3RvX21hdHJpeCAgICAoY29uc3QgIHN0cnVjdCBRVUFUICpx
LCBzdHJ1Y3QgTUFUUklYX2YgKm0pICA7CiB2b2lkICAgIG1hdHJpeF90b19xdWF0ICAgIChjb25z
dCAgc3RydWN0IE1BVFJJWF9mICptLCBzdHJ1Y3QgUVVBVCAqcSkgIDsKCiMgMSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2FsbGVncm8vaW5saW5lLzNkbWF0aHMuaW5sIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogICBleHRlcm4gIkMiIHsKCgoKc3RhdGljIGlubGluZSAgZml4ZWQgICAgZG90X3By
b2R1Y3QgICAgKGZpeGVkIHgxLCBmaXhlZCB5MSwgZml4ZWQgejEsIGZpeGVkIHgyLCBmaXhlZCB5
MiwgZml4ZWQgejIpICAgCnsKICAgcmV0dXJuIGZpeG11bCh4MSwgeDIpICsgZml4bXVsKHkxLCB5
MikgKyBmaXhtdWwoejEsIHoyKTsKfSAgCgoKc3RhdGljIGlubGluZSAgZmxvYXQgICAgZG90X3By
b2R1Y3RfZiAgICAoZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB6MSwgZmxvYXQgeDIsIGZsb2F0
IHkyLCBmbG9hdCB6MikgICAKewogICByZXR1cm4gKHgxICogeDIpICsgKHkxICogeTIpICsgKHox
ICogejIpOwp9ICAKCgpzdGF0aWMgaW5saW5lICB2b2lkICAgIHBlcnNwX3Byb2plY3QgICAgKGZp
eGVkIHgsIGZpeGVkIHksIGZpeGVkIHosIGZpeGVkICp4b3V0LCBmaXhlZCAqeW91dCkgICAKewog
ICAqeG91dCA9IGZpeG11bChmaXhkaXYoeCwgeiksIF9wZXJzcF94c2NhbGUpICsgX3BlcnNwX3hv
ZmZzZXQ7CiAgICp5b3V0ID0gZml4bXVsKGZpeGRpdih5LCB6KSwgX3BlcnNwX3lzY2FsZSkgKyBf
cGVyc3BfeW9mZnNldDsKfSAgCgoKc3RhdGljIGlubGluZSAgdm9pZCAgICBwZXJzcF9wcm9qZWN0
X2YgICAgKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0ICp4b3V0LCBmbG9hdCAqeW91
dCkgICAKewogICBmbG9hdCB6MSA9IDEuMGYgLyB6OwogICAqeG91dCA9ICgoeCAqIHoxKSAqIF9w
ZXJzcF94c2NhbGVfZikgKyBfcGVyc3BfeG9mZnNldF9mOwogICAqeW91dCA9ICgoeSAqIHoxKSAq
IF9wZXJzcF95c2NhbGVfZikgKyBfcGVyc3BfeW9mZnNldF9mOwp9ICAKCgoKICAgfQoKCgoKCiMg
NTYgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvLzNkbWF0aHMuaCIgMiAzCgoKCiAgIH0KCgoK
CgojIDYyICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby5oIiAyIDMKCgoKICAgCiMgMSAiL3Vz
ci9sb2NhbC9pbmNsdWRlL2FsbGVncm8vYWxjb21wYXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKICAgZXh0ZXJuICJDIiB7CgoKCgogICAKICAgICAgc3RhdGljIF9fYXR0cmlidXRlX18o
KHVudXNlZCkpIGlubGluZSB2b2lkIGNsZWFyKEJJVE1BUCAqYm1wKQogICAgICB7CiAgICAgICAg
IGNsZWFyX2JpdG1hcChibXApOwogICAgICB9CiAgIAoKCgoKCgoKCiAgIAogICAgICAKCgoKCiAg
IAoKCgoKCgogICBzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW5saW5lICBmaXhlZCBm
YWRkKGZpeGVkIHgsIGZpeGVkIHkpICB7IHJldHVybiAgIGZpeGFkZCh4LCB5KSA7IH0gOwogICBz
dGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW5saW5lICBmaXhlZCBmc3ViKGZpeGVkIHgs
IGZpeGVkIHkpICB7IHJldHVybiAgIGZpeHN1Yih4LCB5KSA7IH0gOwogICBzdGF0aWMgX19hdHRy
aWJ1dGVfXygodW51c2VkKSkgaW5saW5lICBmaXhlZCBmbXVsKGZpeGVkIHgsIGZpeGVkIHkpICB7
IHJldHVybiAgIGZpeG11bCh4LCB5KSA7IH0gOwogICBzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51
c2VkKSkgaW5saW5lICBmaXhlZCBmZGl2KGZpeGVkIHgsIGZpeGVkIHkpICB7IHJldHVybiAgIGZp
eGRpdih4LCB5KSA7IH0gOwogICBzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW5saW5l
ICBpbnQgZmNlaWwoZml4ZWQgeCkgIHsgcmV0dXJuICAgZml4Y2VpbCh4KSA7IH0gOwogICBzdGF0
aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW5saW5lICBpbnQgZmZsb29yKGZpeGVkIHgpICB7
IHJldHVybiAgIGZpeGZsb29yKHgpIDsgfSA7CiAgIHN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVz
ZWQpKSBpbmxpbmUgIGZpeGVkIGZjb3MoZml4ZWQgeCkgIHsgcmV0dXJuICAgZml4Y29zKHgpIDsg
fSA7CiAgIHN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbmxpbmUgIGZpeGVkIGZzaW4o
Zml4ZWQgeCkgIHsgcmV0dXJuICAgZml4c2luKHgpIDsgfSA7CiAgIHN0YXRpYyBfX2F0dHJpYnV0
ZV9fKCh1bnVzZWQpKSBpbmxpbmUgIGZpeGVkIGZ0YW4oZml4ZWQgeCkgIHsgcmV0dXJuICAgZml4
dGFuKHgpIDsgfSA7CiAgIHN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbmxpbmUgIGZp
eGVkIGZhY29zKGZpeGVkIHgpICB7IHJldHVybiAgIGZpeGFjb3MoeCkgOyB9IDsKICAgc3RhdGlj
IF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGlubGluZSAgZml4ZWQgZmFzaW4oZml4ZWQgeCkgIHsg
cmV0dXJuICAgZml4YXNpbih4KSA7IH0gOwogICBzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2Vk
KSkgaW5saW5lICBmaXhlZCBmYXRhbihmaXhlZCB4KSAgeyByZXR1cm4gICBmaXhhdGFuKHgpIDsg
fSA7CiAgIHN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbmxpbmUgIGZpeGVkIGZhdGFu
MihmaXhlZCB5LCBmaXhlZCB4KSAgeyByZXR1cm4gICBmaXhhdGFuMih5LCB4KSA7IH0gOwogICBz
dGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW5saW5lICBmaXhlZCBmc3FydChmaXhlZCB4
KSAgeyByZXR1cm4gICBmaXhzcXJ0KHgpIDsgfSA7CiAgIHN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1
bnVzZWQpKSBpbmxpbmUgIGZpeGVkIGZoeXBvdChmaXhlZCB4LCBmaXhlZCB5KSAgeyByZXR1cm4g
ICBmaXhoeXBvdCh4LCB5KSA7IH0gOwogICAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgogICB9CgoKCgoKIyA2NSAi
L3Vzci9sb2NhbC9pbmNsdWRlL2FsbGVncm8uaCIgMiAzCgoKCgoKICAgCiMgMSAiL3Vzci9sb2Nh
bC9pbmNsdWRlL2FsbGVncm8vcGxhdGZvcm0vYWx1bml4LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogCiAKIAoKCgoKIApleHRlcm4gaW50ICAgIF9fY3J0MF9hcmdjOwpleHRlcm4g
Y2hhciAqKl9fY3J0MF9hcmd2OwoKCgoKCgoKCgoKCgoKCmV4dGVybiAgVElNRVJfRFJJVkVSICAg
IHRpbWVyZHJ2X3VuaXhfcHRocmVhZHMgIDsKCgoKCgoKCgoKCiAKIAogCgoKCgoKZXh0ZXJuICBE
SUdJX0RSSVZFUiAgICBkaWdpX29zcyAgOwoKCgoKCgoKCgoKZXh0ZXJuICBNSURJX0RSSVZFUiAg
ICBtaWRpX29zcyAgOwoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDExNiAiL3Vzci9sb2NhbC9pbmNs
dWRlL2FsbGVncm8vcGxhdGZvcm0vYWx1bml4LmgiIDMKCgoKIyAxMzIgIi91c3IvbG9jYWwvaW5j
bHVkZS9hbGxlZ3JvL3BsYXRmb3JtL2FsdW5peC5oIiAzCgoKCgogCiAKIAoKCgoKCmV4dGVybiAg
U1lTVEVNX0RSSVZFUiAgICBzeXN0ZW1feHdpbiAgOwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCiAKIAoKCgoKCmV4dGVybiAgU1lTVEVNX0RSSVZFUiAgICBzeXN0ZW1fbGludXggIDsK
CgogICAKICAgCiAgIGV4dGVybiAgR0ZYX0RSSVZFUiAgICBnZnhfdmdhICA7CiAgIGV4dGVybiAg
R0ZYX0RSSVZFUiAgICBnZnhfbW9kZXggIDsKCgoKICAgCgoKCgoKCiAgIAogICBleHRlcm4gIEdG
WF9EUklWRVIgICAgZ2Z4X3ZiZWFmICA7CgoKCgoKCgoKCgpleHRlcm4gIEtFWUJPQVJEX0RSSVZF
UiAgICBrZXlkcnZfbGludXhfY29uc29sZSAgOwoKCmV4dGVybiAgTU9VU0VfRFJJVkVSICAgIG1v
dXNlZHJ2X2xpbnV4X3BzMiAgOwoKCmV4dGVybiAgTU9VU0VfRFJJVkVSICAgIG1vdXNlZHJ2X2xp
bnV4X2lwczIgIDsKCgpleHRlcm4gIE1PVVNFX0RSSVZFUiAgICBtb3VzZWRydl9saW51eF9ncG1k
YXRhICA7CgoKZXh0ZXJuICBNT1VTRV9EUklWRVIgICAgbW91c2VkcnZfbGludXhfbXMgIDsKCgpl
eHRlcm4gIE1PVVNFX0RSSVZFUiAgICBtb3VzZWRydl9saW51eF9pbXMgIDsKCgpleHRlcm4gIEpP
WVNUSUNLX0RSSVZFUiAgICBqb3lzdGlja19saW51eF9hbmFsb2d1ZSAgOwoKCiB2b2lkICAgIHNw
bGl0X21vZGV4X3NjcmVlbiAgICAoaW50IGxpbmUpICA7CgoKIAoKc3RhdGljIGlubGluZSB2b2lk
IG91dHBvcnRiKHVuc2lnbmVkIHNob3J0IHBvcnQsIHVuc2lnbmVkIGNoYXIgdmFsdWUpCnsKICAg
X19hc21fXyB2b2xhdGlsZSAoIm91dGIgJTAsICUxIiA6IDogImEiICh2YWx1ZSksICJkIiAocG9y
dCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgb3V0cG9ydHcodW5zaWduZWQgc2hvcnQgcG9ydCwg
dW5zaWduZWQgc2hvcnQgdmFsdWUpCnsKICAgX19hc21fXyB2b2xhdGlsZSAoIm91dHcgJTAsICUx
IiA6IDogImEiICh2YWx1ZSksICJkIiAocG9ydCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgb3V0
cG9ydGwodW5zaWduZWQgc2hvcnQgcG9ydCwgdW5zaWduZWQgbG9uZyB2YWx1ZSkKewogICBfX2Fz
bV9fIHZvbGF0aWxlICgib3V0bCAlMCwgJTEiIDogOiAiYSIgKHZhbHVlKSwgImQiIChwb3J0KSk7
Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciBpbnBvcnRiKHVuc2lnbmVkIHNob3J0IHBv
cnQpCnsKICAgdW5zaWduZWQgY2hhciB2YWx1ZTsKICAgX19hc21fXyB2b2xhdGlsZSAoImluYiAl
MSwgJTAiIDogIj1hIiAodmFsdWUpIDogImQiIChwb3J0KSk7CiAgIHJldHVybiB2YWx1ZTsKfQoK
c3RhdGljIGlubGluZSB1bnNpZ25lZCBzaG9ydCBpbnBvcnR3KHVuc2lnbmVkIHNob3J0IHBvcnQp
CnsKICAgdW5zaWduZWQgc2hvcnQgdmFsdWU7CiAgIF9fYXNtX18gdm9sYXRpbGUgKCJpbncgJTEs
ICUwIiA6ICI9YSIgKHZhbHVlKSA6ICJkIiAocG9ydCkpOwogICByZXR1cm4gdmFsdWU7Cn0KCnN0
YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBpbnBvcnRsKHVuc2lnbmVkIHNob3J0IHBvcnQpCnsK
ICAgdW5zaWduZWQgbG9uZyB2YWx1ZTsKICAgX19hc21fXyB2b2xhdGlsZSAoImlubCAlMSwgJTAi
IDogIj1hIiAodmFsdWUpIDogImQiIChwb3J0KSk7CiAgIHJldHVybiB2YWx1ZTsKfQoKCgoKCgoK
CiMgNzAgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvLmgiIDIgMwoKCgoKCiAgIH0KCgoKIyAx
ICIvdXNyL2xvY2FsL2luY2x1ZGUvYWxsZWdyby9maXguaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCmNsYXNzIGZpeCAgICAgICAKewpwdWJsaWM6CiAgIGZpeGVkIHY7CgogICBmaXgo
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IH0KICAgZml4KGNvbnN0IGZp
eCAmeCkgICAgICAgICAgICAgICAgICAgICAgICAgeyB2ID0geC52OyB9CiAgIGZpeChjb25zdCBp
bnQgeCkgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdiA9IGl0b2ZpeCh4KTsgfQogICBmaXgo
Y29uc3QgbG9uZyB4KSAgICAgICAgICAgICAgICAgICAgICAgICB7IHYgPSBpdG9maXgoeCk7IH0K
ICAgZml4KGNvbnN0IHVuc2lnbmVkIGludCB4KSAgICAgICAgICAgICAgICAgeyB2ID0gaXRvZml4
KHgpOyB9CiAgIGZpeChjb25zdCB1bnNpZ25lZCBsb25nIHgpICAgICAgICAgICAgICAgIHsgdiA9
IGl0b2ZpeCh4KTsgfQogICBmaXgoY29uc3QgZmxvYXQgeCkgICAgICAgICAgICAgICAgICAgICAg
ICB7IHYgPSBmdG9maXgoeCk7IH0KICAgZml4KGNvbnN0IGRvdWJsZSB4KSAgICAgICAgICAgICAg
ICAgICAgICAgeyB2ID0gZnRvZml4KHgpOyB9CgogICBvcGVyYXRvciBpbnQoKSBjb25zdCAgICAg
ICAgICAgICAgICAgICAgICB7IHJldHVybiBmaXh0b2kodik7IH0KICAgb3BlcmF0b3IgbG9uZygp
IGNvbnN0ICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gZml4dG9pKHYpOyB9CiAgIG9wZXJh
dG9yIHVuc2lnbmVkIGludCgpIGNvbnN0ICAgICAgICAgICAgIHsgcmV0dXJuIGZpeHRvaSh2KTsg
fQogICBvcGVyYXRvciB1bnNpZ25lZCBsb25nKCkgY29uc3QgICAgICAgICAgICB7IHJldHVybiBm
aXh0b2kodik7IH0KICAgb3BlcmF0b3IgZmxvYXQoKSBjb25zdCAgICAgICAgICAgICAgICAgICAg
eyByZXR1cm4gZml4dG9mKHYpOyB9CiAgIG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0ICAgICAgICAg
ICAgICAgICAgIHsgcmV0dXJuIGZpeHRvZih2KTsgfQoKICAgZml4JiBvcGVyYXRvciA9IChjb25z
dCBmaXggJngpICAgICAgICAgICAgeyB2ID0geC52OyAgICAgICAgICAgcmV0dXJuICp0aGlzOyB9
CiAgIGZpeCYgb3BlcmF0b3IgPSAoY29uc3QgaW50IHgpICAgICAgICAgICAgIHsgdiA9IGl0b2Zp
eCh4KTsgICAgIHJldHVybiAqdGhpczsgfQogICBmaXgmIG9wZXJhdG9yID0gKGNvbnN0IGxvbmcg
eCkgICAgICAgICAgICB7IHYgPSBpdG9maXgoeCk7ICAgICByZXR1cm4gKnRoaXM7IH0KICAgZml4
JiBvcGVyYXRvciA9IChjb25zdCB1bnNpZ25lZCBpbnQgeCkgICAgeyB2ID0gaXRvZml4KHgpOyAg
ICAgcmV0dXJuICp0aGlzOyB9CiAgIGZpeCYgb3BlcmF0b3IgPSAoY29uc3QgdW5zaWduZWQgbG9u
ZyB4KSAgIHsgdiA9IGl0b2ZpeCh4KTsgICAgIHJldHVybiAqdGhpczsgfQogICBmaXgmIG9wZXJh
dG9yID0gKGNvbnN0IGZsb2F0IHgpICAgICAgICAgICB7IHYgPSBmdG9maXgoeCk7ICAgICByZXR1
cm4gKnRoaXM7IH0KICAgZml4JiBvcGVyYXRvciA9IChjb25zdCBkb3VibGUgeCkgICAgICAgICAg
eyB2ID0gZnRvZml4KHgpOyAgICAgcmV0dXJuICp0aGlzOyB9CgogICBmaXgmIG9wZXJhdG9yICs9
ICAoY29uc3QgZml4IHgpICAgICAgICAgICB7IHYgKz0geC52OyAgICAgICAgICByZXR1cm4gKnRo
aXM7IH0KICAgZml4JiBvcGVyYXRvciArPSAgKGNvbnN0IGludCB4KSAgICAgICAgICAgeyB2ICs9
IGl0b2ZpeCh4KTsgICAgcmV0dXJuICp0aGlzOyB9CiAgIGZpeCYgb3BlcmF0b3IgKz0gIChjb25z
dCBsb25nIHgpICAgICAgICAgIHsgdiArPSBpdG9maXgoeCk7ICAgIHJldHVybiAqdGhpczsgfQog
ICBmaXgmIG9wZXJhdG9yICs9ICAoY29uc3QgZmxvYXQgeCkgICAgICAgICB7IHYgKz0gZnRvZml4
KHgpOyAgICByZXR1cm4gKnRoaXM7IH0KICAgZml4JiBvcGVyYXRvciArPSAgKGNvbnN0IGRvdWJs
ZSB4KSAgICAgICAgeyB2ICs9IGZ0b2ZpeCh4KTsgICAgcmV0dXJuICp0aGlzOyB9CgogICBmaXgm
IG9wZXJhdG9yIC09ICAoY29uc3QgZml4IHgpICAgICAgICAgICB7IHYgLT0geC52OyAgICAgICAg
ICByZXR1cm4gKnRoaXM7IH0KICAgZml4JiBvcGVyYXRvciAtPSAgKGNvbnN0IGludCB4KSAgICAg
ICAgICAgeyB2IC09IGl0b2ZpeCh4KTsgICAgcmV0dXJuICp0aGlzOyB9CiAgIGZpeCYgb3BlcmF0
b3IgLT0gIChjb25zdCBsb25nIHgpICAgICAgICAgIHsgdiAtPSBpdG9maXgoeCk7ICAgIHJldHVy
biAqdGhpczsgfQogICBmaXgmIG9wZXJhdG9yIC09ICAoY29uc3QgZmxvYXQgeCkgICAgICAgICB7
IHYgLT0gZnRvZml4KHgpOyAgICByZXR1cm4gKnRoaXM7IH0KICAgZml4JiBvcGVyYXRvciAtPSAg
KGNvbnN0IGRvdWJsZSB4KSAgICAgICAgeyB2IC09IGZ0b2ZpeCh4KTsgICAgcmV0dXJuICp0aGlz
OyB9CgogICBmaXgmIG9wZXJhdG9yICo9ICAoY29uc3QgZml4IHgpICAgICAgICAgICB7IHYgPSBm
aXhtdWwodiwgeC52KTsgICAgICAgICByZXR1cm4gKnRoaXM7IH0KICAgZml4JiBvcGVyYXRvciAq
PSAgKGNvbnN0IGludCB4KSAgICAgICAgICAgeyB2ICo9IHg7ICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICp0aGlzOyB9CiAgIGZpeCYgb3BlcmF0b3IgKj0gIChjb25zdCBsb25nIHgpICAgICAg
ICAgIHsgdiAqPSB4OyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsgfQogICBmaXgm
IG9wZXJhdG9yICo9ICAoY29uc3QgZmxvYXQgeCkgICAgICAgICB7IHYgPSBmdG9maXgoZml4dG9m
KHYpICogeCk7ICByZXR1cm4gKnRoaXM7IH0KICAgZml4JiBvcGVyYXRvciAqPSAgKGNvbnN0IGRv
dWJsZSB4KSAgICAgICAgeyB2ID0gZnRvZml4KGZpeHRvZih2KSAqIHgpOyAgcmV0dXJuICp0aGlz
OyB9CgogICBmaXgmIG9wZXJhdG9yIC89ICAoY29uc3QgZml4IHgpICAgICAgICAgICB7IHYgPSBm
aXhkaXYodiwgeC52KTsgICAgICAgICByZXR1cm4gKnRoaXM7IH0KICAgZml4JiBvcGVyYXRvciAv
PSAgKGNvbnN0IGludCB4KSAgICAgICAgICAgeyB2IC89IHg7ICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICp0aGlzOyB9CiAgIGZpeCYgb3BlcmF0b3IgLz0gIChjb25zdCBsb25nIHgpICAgICAg
ICAgIHsgdiAvPSB4OyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsgfQogICBmaXgm
IG9wZXJhdG9yIC89ICAoY29uc3QgZmxvYXQgeCkgICAgICAgICB7IHYgPSBmdG9maXgoZml4dG9m
KHYpIC8geCk7ICByZXR1cm4gKnRoaXM7IH0KICAgZml4JiBvcGVyYXRvciAvPSAgKGNvbnN0IGRv
dWJsZSB4KSAgICAgICAgeyB2ID0gZnRvZml4KGZpeHRvZih2KSAvIHgpOyAgcmV0dXJuICp0aGlz
OyB9CgogICBmaXgmIG9wZXJhdG9yIDw8PSAoY29uc3QgaW50IHgpICAgICAgICAgICB7IHYgPDw9
IHg7ICAgICAgICAgICByZXR1cm4gKnRoaXM7IH0KICAgZml4JiBvcGVyYXRvciA+Pj0gKGNvbnN0
IGludCB4KSAgICAgICAgICAgeyB2ID4+PSB4OyAgICAgICAgICAgcmV0dXJuICp0aGlzOyB9Cgog
ICBmaXgmIG9wZXJhdG9yICsrICgpICAgICAgICAgICAgICAgICAgICAgICB7IHYgKz0gaXRvZml4
KDEpOyAgICByZXR1cm4gKnRoaXM7IH0KICAgZml4JiBvcGVyYXRvciAtLSAoKSAgICAgICAgICAg
ICAgICAgICAgICAgeyB2IC09IGl0b2ZpeCgxKTsgICAgcmV0dXJuICp0aGlzOyB9CgogICBmaXgg
b3BlcmF0b3IgKysgKGludCkgICAgICAgICAgICAgICAgICAgICB7IGZpeCB0OyAgdC52ID0gdjsg
ICB2ICs9IGl0b2ZpeCgxKTsgIHJldHVybiB0OyB9CiAgIGZpeCBvcGVyYXRvciAtLSAoaW50KSAg
ICAgICAgICAgICAgICAgICAgIHsgZml4IHQ7ICB0LnYgPSB2OyAgIHYgLT0gaXRvZml4KDEpOyAg
cmV0dXJuIHQ7IH0KCiAgIGZpeCBvcGVyYXRvciAtICgpIGNvbnN0ICAgICAgICAgICAgICAgICAg
IHsgZml4IHQ7ICB0LnYgPSAtdjsgIHJldHVybiB0OyB9CgogICBpbmxpbmUgZnJpZW5kIGZpeCBv
cGVyYXRvciArICAoY29uc3QgZml4IHgsIGNvbnN0IGZpeCB5KTsKICAgaW5saW5lIGZyaWVuZCBm
aXggb3BlcmF0b3IgKyAgKGNvbnN0IGZpeCB4LCBjb25zdCBpbnQgeSk7CiAgIGlubGluZSBmcmll
bmQgZml4IG9wZXJhdG9yICsgIChjb25zdCBpbnQgeCwgY29uc3QgZml4IHkpOwogICBpbmxpbmUg
ZnJpZW5kIGZpeCBvcGVyYXRvciArICAoY29uc3QgZml4IHgsIGNvbnN0IGxvbmcgeSk7CiAgIGlu
bGluZSBmcmllbmQgZml4IG9wZXJhdG9yICsgIChjb25zdCBsb25nIHgsIGNvbnN0IGZpeCB5KTsK
ICAgaW5saW5lIGZyaWVuZCBmaXggb3BlcmF0b3IgKyAgKGNvbnN0IGZpeCB4LCBjb25zdCBmbG9h
dCB5KTsKICAgaW5saW5lIGZyaWVuZCBmaXggb3BlcmF0b3IgKyAgKGNvbnN0IGZsb2F0IHgsIGNv
bnN0IGZpeCB5KTsKICAgaW5saW5lIGZyaWVuZCBmaXggb3BlcmF0b3IgKyAgKGNvbnN0IGZpeCB4
LCBjb25zdCBkb3VibGUgeSk7CiAgIGlubGluZSBmcmllbmQgZml4IG9wZXJhdG9yICsgIChjb25z
dCBkb3VibGUgeCwgY29uc3QgZml4IHkpOwoKICAgaW5saW5lIGZyaWVuZCBmaXggb3BlcmF0b3Ig
LSAgKGNvbnN0IGZpeCB4LCBjb25zdCBmaXggeSk7CiAgIGlubGluZSBmcmllbmQgZml4IG9wZXJh
dG9yIC0gIChjb25zdCBmaXggeCwgY29uc3QgaW50IHkpOwogICBpbmxpbmUgZnJpZW5kIGZpeCBv
cGVyYXRvciAtICAoY29uc3QgaW50IHgsIGNvbnN0IGZpeCB5KTsKICAgaW5saW5lIGZyaWVuZCBm
aXggb3BlcmF0b3IgLSAgKGNvbnN0IGZpeCB4LCBjb25zdCBsb25nIHkpOwogICBpbmxpbmUgZnJp
ZW5kIGZpeCBvcGVyYXRvciAtICAoY29uc3QgbG9uZyB4LCBjb25zdCBmaXggeSk7CiAgIGlubGlu
ZSBmcmllbmQgZml4IG9wZXJhdG9yIC0gIChjb25zdCBmaXggeCwgY29uc3QgZmxvYXQgeSk7CiAg
IGlubGluZSBmcmllbmQgZml4IG9wZXJhdG9yIC0gIChjb25zdCBmbG9hdCB4LCBjb25zdCBmaXgg
eSk7CiAgIGlubGluZSBmcmllbmQgZml4IG9wZXJhdG9yIC0gIChjb25zdCBmaXggeCwgY29uc3Qg
ZG91YmxlIHkpOwogICBpbmxpbmUgZnJpZW5kIGZpeCBvcGVyYXRvciAtICAoY29uc3QgZG91Ymxl
IHgsIGNvbnN0IGZpeCB5KTsKCiAgIGlubGluZSBmcmllbmQgZml4IG9wZXJhdG9yICogIChjb25z
dCBmaXggeCwgY29uc3QgZml4IHkpOwogICBpbmxpbmUgZnJpZW5kIGZpeCBvcGVyYXRvciAqICAo
Y29uc3QgZml4IHgsIGNvbnN0IGludCB5KTsKICAgaW5saW5lIGZyaWVuZCBmaXggb3BlcmF0b3Ig
KiAgKGNvbnN0IGludCB4LCBjb25zdCBmaXggeSk7CiAgIGlubGluZSBmcmllbmQgZml4IG9wZXJh
dG9yICogIChjb25zdCBmaXggeCwgY29uc3QgbG9uZyB5KTsKICAgaW5saW5lIGZyaWVuZCBmaXgg
b3BlcmF0b3IgKiAgKGNvbnN0IGxvbmcgeCwgY29uc3QgZml4IHkpOwogICBpbmxpbmUgZnJpZW5k
IGZpeCBvcGVyYXRvciAqICAoY29uc3QgZml4IHgsIGNvbnN0IGZsb2F0IHkpOwogICBpbmxpbmUg
ZnJpZW5kIGZpeCBvcGVyYXRvciAqICAoY29uc3QgZmxvYXQgeCwgY29uc3QgZml4IHkpOwogICBp
bmxpbmUgZnJpZW5kIGZpeCBvcGVyYXRvciAqICAoY29uc3QgZml4IHgsIGNvbnN0IGRvdWJsZSB5
KTsKICAgaW5saW5lIGZyaWVuZCBmaXggb3BlcmF0b3IgKiAgKGNvbnN0IGRvdWJsZSB4LCBjb25z
dCBmaXggeSk7CgogICBpbmxpbmUgZnJpZW5kIGZpeCBvcGVyYXRvciAvICAoY29uc3QgZml4IHgs
IGNvbnN0IGZpeCB5KTsKICAgaW5saW5lIGZyaWVuZCBmaXggb3BlcmF0b3IgLyAgKGNvbnN0IGZp
eCB4LCBjb25zdCBpbnQgeSk7CiAgIGlubGluZSBmcmllbmQgZml4IG9wZXJhdG9yIC8gIChjb25z
dCBpbnQgeCwgY29uc3QgZml4IHkpOwogICBpbmxpbmUgZnJpZW5kIGZpeCBvcGVyYXRvciAvICAo
Y29uc3QgZml4IHgsIGNvbnN0IGxvbmcgeSk7CiAgIGlubGluZSBmcmllbmQgZml4IG9wZXJhdG9y
IC8gIChjb25zdCBsb25nIHgsIGNvbnN0IGZpeCB5KTsKICAgaW5saW5lIGZyaWVuZCBmaXggb3Bl
cmF0b3IgLyAgKGNvbnN0IGZpeCB4LCBjb25zdCBmbG9hdCB5KTsKICAgaW5saW5lIGZyaWVuZCBm
aXggb3BlcmF0b3IgLyAgKGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZpeCB5KTsKICAgaW5saW5lIGZy
aWVuZCBmaXggb3BlcmF0b3IgLyAgKGNvbnN0IGZpeCB4LCBjb25zdCBkb3VibGUgeSk7CiAgIGlu
bGluZSBmcmllbmQgZml4IG9wZXJhdG9yIC8gIChjb25zdCBkb3VibGUgeCwgY29uc3QgZml4IHkp
OwoKICAgaW5saW5lIGZyaWVuZCBmaXggb3BlcmF0b3IgPDwgKGNvbnN0IGZpeCB4LCBjb25zdCBp
bnQgeSk7CiAgIGlubGluZSBmcmllbmQgZml4IG9wZXJhdG9yID4+IChjb25zdCBmaXggeCwgY29u
c3QgaW50IHkpOwoKICAgaW5saW5lIGZyaWVuZCBpbnQgb3BlcmF0b3IgPT0gKGNvbnN0IGZpeCB4
LCBjb25zdCBmaXggeSk7CiAgIGlubGluZSBmcmllbmQgaW50IG9wZXJhdG9yID09IChjb25zdCBm
aXggeCwgY29uc3QgaW50IHkpOwogICBpbmxpbmUgZnJpZW5kIGludCBvcGVyYXRvciA9PSAoY29u
c3QgaW50IHgsIGNvbnN0IGZpeCB5KTsKICAgaW5saW5lIGZyaWVuZCBpbnQgb3BlcmF0b3IgPT0g
KGNvbnN0IGZpeCB4LCBjb25zdCBsb25nIHkpOwogICBpbmxpbmUgZnJpZW5kIGludCBvcGVyYXRv
ciA9PSAoY29uc3QgbG9uZyB4LCBjb25zdCBmaXggeSk7CiAgIGlubGluZSBmcmllbmQgaW50IG9w
ZXJhdG9yID09IChjb25zdCBmaXggeCwgY29uc3QgZmxvYXQgeSk7CiAgIGlubGluZSBmcmllbmQg
aW50IG9wZXJhdG9yID09IChjb25zdCBmbG9hdCB4LCBjb25zdCBmaXggeSk7CiAgIGlubGluZSBm
cmllbmQgaW50IG9wZXJhdG9yID09IChjb25zdCBmaXggeCwgY29uc3QgZG91YmxlIHkpOwogICBp
bmxpbmUgZnJpZW5kIGludCBvcGVyYXRvciA9PSAoY29uc3QgZG91YmxlIHgsIGNvbnN0IGZpeCB5
KTsKCiAgIGlubGluZSBmcmllbmQgaW50IG9wZXJhdG9yICE9IChjb25zdCBmaXggeCwgY29uc3Qg
Zml4IHkpOwogICBpbmxpbmUgZnJpZW5kIGludCBvcGVyYXRvciAhPSAoY29uc3QgZml4IHgsIGNv
bnN0IGludCB5KTsKICAgaW5saW5lIGZyaWVuZCBpbnQgb3BlcmF0b3IgIT0gKGNvbnN0IGludCB4
LCBjb25zdCBmaXggeSk7CiAgIGlubGluZSBmcmllbmQgaW50IG9wZXJhdG9yICE9IChjb25zdCBm
aXggeCwgY29uc3QgbG9uZyB5KTsKICAgaW5saW5lIGZyaWVuZCBpbnQgb3BlcmF0b3IgIT0gKGNv
bnN0IGxvbmcgeCwgY29uc3QgZml4IHkpOwogICBpbmxpbmUgZnJpZW5kIGludCBvcGVyYXRvciAh
PSAoY29uc3QgZml4IHgsIGNvbnN0IGZsb2F0IHkpOwogICBpbmxpbmUgZnJpZW5kIGludCBvcGVy
YXRvciAhPSAoY29uc3QgZmxvYXQgeCwgY29uc3QgZml4IHkpOwogICBpbmxpbmUgZnJpZW5kIGlu
dCBvcGVyYXRvciAhPSAoY29uc3QgZml4IHgsIGNvbnN0IGRvdWJsZSB5KTsKICAgaW5saW5lIGZy
aWVuZCBpbnQgb3BlcmF0b3IgIT0gKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBmaXggeSk7CgogICBp
bmxpbmUgZnJpZW5kIGludCBvcGVyYXRvciA8ICAoY29uc3QgZml4IHgsIGNvbnN0IGZpeCB5KTsK
ICAgaW5saW5lIGZyaWVuZCBpbnQgb3BlcmF0b3IgPCAgKGNvbnN0IGZpeCB4LCBjb25zdCBpbnQg
eSk7CiAgIGlubGluZSBmcmllbmQgaW50IG9wZXJhdG9yIDwgIChjb25zdCBpbnQgeCwgY29uc3Qg
Zml4IHkpOwogICBpbmxpbmUgZnJpZW5kIGludCBvcGVyYXRvciA8ICAoY29uc3QgZml4IHgsIGNv
bnN0IGxvbmcgeSk7CiAgIGlubGluZSBmcmllbmQgaW50IG9wZXJhdG9yIDwgIChjb25zdCBsb25n
IHgsIGNvbnN0IGZpeCB5KTsKICAgaW5saW5lIGZyaWVuZCBpbnQgb3BlcmF0b3IgPCAgKGNvbnN0
IGZpeCB4LCBjb25zdCBmbG9hdCB5KTsKICAgaW5saW5lIGZyaWVuZCBpbnQgb3BlcmF0b3IgPCAg
KGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZpeCB5KTsKICAgaW5saW5lIGZyaWVuZCBpbnQgb3BlcmF0
b3IgPCAgKGNvbnN0IGZpeCB4LCBjb25zdCBkb3VibGUgeSk7CiAgIGlubGluZSBmcmllbmQgaW50
IG9wZXJhdG9yIDwgIChjb25zdCBkb3VibGUgeCwgY29uc3QgZml4IHkpOwoKICAgaW5saW5lIGZy
aWVuZCBpbnQgb3BlcmF0b3IgPiAgKGNvbnN0IGZpeCB4LCBjb25zdCBmaXggeSk7CiAgIGlubGlu
ZSBmcmllbmQgaW50IG9wZXJhdG9yID4gIChjb25zdCBmaXggeCwgY29uc3QgaW50IHkpOwogICBp
bmxpbmUgZnJpZW5kIGludCBvcGVyYXRvciA+ICAoY29uc3QgaW50IHgsIGNvbnN0IGZpeCB5KTsK
ICAgaW5saW5lIGZyaWVuZCBpbnQgb3BlcmF0b3IgPiAgKGNvbnN0IGZpeCB4LCBjb25zdCBsb25n
IHkpOwogICBpbmxpbmUgZnJpZW5kIGludCBvcGVyYXRvciA+ICAoY29uc3QgbG9uZyB4LCBjb25z
dCBmaXggeSk7CiAgIGlubGluZSBmcmllbmQgaW50IG9wZXJhdG9yID4gIChjb25zdCBmaXggeCwg
Y29uc3QgZmxvYXQgeSk7CiAgIGlubGluZSBmcmllbmQgaW50IG9wZXJhdG9yID4gIChjb25zdCBm
bG9hdCB4LCBjb25zdCBmaXggeSk7CiAgIGlubGluZSBmcmllbmQgaW50IG9wZXJhdG9yID4gIChj
b25zdCBmaXggeCwgY29uc3QgZG91YmxlIHkpOwogICBpbmxpbmUgZnJpZW5kIGludCBvcGVyYXRv
ciA+ICAoY29uc3QgZG91YmxlIHgsIGNvbnN0IGZpeCB5KTsKCiAgIGlubGluZSBmcmllbmQgaW50
IG9wZXJhdG9yIDw9IChjb25zdCBmaXggeCwgY29uc3QgZml4IHkpOwogICBpbmxpbmUgZnJpZW5k
IGludCBvcGVyYXRvciA8PSAoY29uc3QgZml4IHgsIGNvbnN0IGludCB5KTsKICAgaW5saW5lIGZy
aWVuZCBpbnQgb3BlcmF0b3IgPD0gKGNvbnN0IGludCB4LCBjb25zdCBmaXggeSk7CiAgIGlubGlu
ZSBmcmllbmQgaW50IG9wZXJhdG9yIDw9IChjb25zdCBmaXggeCwgY29uc3QgbG9uZyB5KTsKICAg
aW5saW5lIGZyaWVuZCBpbnQgb3BlcmF0b3IgPD0gKGNvbnN0IGxvbmcgeCwgY29uc3QgZml4IHkp
OwogICBpbmxpbmUgZnJpZW5kIGludCBvcGVyYXRvciA8PSAoY29uc3QgZml4IHgsIGNvbnN0IGZs
b2F0IHkpOwogICBpbmxpbmUgZnJpZW5kIGludCBvcGVyYXRvciA8PSAoY29uc3QgZmxvYXQgeCwg
Y29uc3QgZml4IHkpOwogICBpbmxpbmUgZnJpZW5kIGludCBvcGVyYXRvciA8PSAoY29uc3QgZml4
IHgsIGNvbnN0IGRvdWJsZSB5KTsKICAgaW5saW5lIGZyaWVuZCBpbnQgb3BlcmF0b3IgPD0gKGNv
bnN0IGRvdWJsZSB4LCBjb25zdCBmaXggeSk7CgogICBpbmxpbmUgZnJpZW5kIGludCBvcGVyYXRv
ciA+PSAoY29uc3QgZml4IHgsIGNvbnN0IGZpeCB5KTsKICAgaW5saW5lIGZyaWVuZCBpbnQgb3Bl
cmF0b3IgPj0gKGNvbnN0IGZpeCB4LCBjb25zdCBpbnQgeSk7CiAgIGlubGluZSBmcmllbmQgaW50
IG9wZXJhdG9yID49IChjb25zdCBpbnQgeCwgY29uc3QgZml4IHkpOwogICBpbmxpbmUgZnJpZW5k
IGludCBvcGVyYXRvciA+PSAoY29uc3QgZml4IHgsIGNvbnN0IGxvbmcgeSk7CiAgIGlubGluZSBm
cmllbmQgaW50IG9wZXJhdG9yID49IChjb25zdCBsb25nIHgsIGNvbnN0IGZpeCB5KTsKICAgaW5s
aW5lIGZyaWVuZCBpbnQgb3BlcmF0b3IgPj0gKGNvbnN0IGZpeCB4LCBjb25zdCBmbG9hdCB5KTsK
ICAgaW5saW5lIGZyaWVuZCBpbnQgb3BlcmF0b3IgPj0gKGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZp
eCB5KTsKICAgaW5saW5lIGZyaWVuZCBpbnQgb3BlcmF0b3IgPj0gKGNvbnN0IGZpeCB4LCBjb25z
dCBkb3VibGUgeSk7CiAgIGlubGluZSBmcmllbmQgaW50IG9wZXJhdG9yID49IChjb25zdCBkb3Vi
bGUgeCwgY29uc3QgZml4IHkpOwoKICAgaW5saW5lIGZyaWVuZCBmaXggc3FydChmaXggeCk7CiAg
IGlubGluZSBmcmllbmQgZml4IGNvcyhmaXggeCk7CiAgIGlubGluZSBmcmllbmQgZml4IHNpbihm
aXggeCk7CiAgIGlubGluZSBmcmllbmQgZml4IHRhbihmaXggeCk7CiAgIGlubGluZSBmcmllbmQg
Zml4IGFjb3MoZml4IHgpOwogICBpbmxpbmUgZnJpZW5kIGZpeCBhc2luKGZpeCB4KTsKICAgaW5s
aW5lIGZyaWVuZCBmaXggYXRhbihmaXggeCk7CiAgIGlubGluZSBmcmllbmQgZml4IGF0YW4yKGZp
eCB4LCBmaXggeSk7Cn07CgojIDEgIi91c3IvbG9jYWwvaW5jbHVkZS9hbGxlZ3JvL2lubGluZS9m
aXguaW5sIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmlubGluZSAgZml4IG9wZXJhdG9y
ICsgIChjb25zdCBmaXggeCwgY29uc3QgZml4IHkpICAgIHsgZml4IHQ7ICB0LnYgPSB4LnYgKyB5
LnY7ICAgICAgICByZXR1cm4gdDsgfQppbmxpbmUgIGZpeCBvcGVyYXRvciArICAoY29uc3QgZml4
IHgsIGNvbnN0IGludCB5KSAgICB7IGZpeCB0OyAgdC52ID0geC52ICsgaXRvZml4KHkpOyAgcmV0
dXJuIHQ7IH0KaW5saW5lICBmaXggb3BlcmF0b3IgKyAgKGNvbnN0IGludCB4LCBjb25zdCBmaXgg
eSkgICAgeyBmaXggdDsgIHQudiA9IGl0b2ZpeCh4KSArIHkudjsgIHJldHVybiB0OyB9CmlubGlu
ZSAgZml4IG9wZXJhdG9yICsgIChjb25zdCBmaXggeCwgY29uc3QgbG9uZyB5KSAgIHsgZml4IHQ7
ICB0LnYgPSB4LnYgKyBpdG9maXgoeSk7ICByZXR1cm4gdDsgfQppbmxpbmUgIGZpeCBvcGVyYXRv
ciArICAoY29uc3QgbG9uZyB4LCBjb25zdCBmaXggeSkgICB7IGZpeCB0OyAgdC52ID0gaXRvZml4
KHgpICsgeS52OyAgcmV0dXJuIHQ7IH0KaW5saW5lICBmaXggb3BlcmF0b3IgKyAgKGNvbnN0IGZp
eCB4LCBjb25zdCBmbG9hdCB5KSAgeyBmaXggdDsgIHQudiA9IHgudiArIGZ0b2ZpeCh5KTsgIHJl
dHVybiB0OyB9CmlubGluZSAgZml4IG9wZXJhdG9yICsgIChjb25zdCBmbG9hdCB4LCBjb25zdCBm
aXggeSkgIHsgZml4IHQ7ICB0LnYgPSBmdG9maXgoeCkgKyB5LnY7ICByZXR1cm4gdDsgfQppbmxp
bmUgIGZpeCBvcGVyYXRvciArICAoY29uc3QgZml4IHgsIGNvbnN0IGRvdWJsZSB5KSB7IGZpeCB0
OyAgdC52ID0geC52ICsgZnRvZml4KHkpOyAgcmV0dXJuIHQ7IH0KaW5saW5lICBmaXggb3BlcmF0
b3IgKyAgKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBmaXggeSkgeyBmaXggdDsgIHQudiA9IGZ0b2Zp
eCh4KSArIHkudjsgIHJldHVybiB0OyB9CgppbmxpbmUgIGZpeCBvcGVyYXRvciAtICAoY29uc3Qg
Zml4IHgsIGNvbnN0IGZpeCB5KSAgICB7IGZpeCB0OyAgdC52ID0geC52IC0geS52OyAgICAgICAg
cmV0dXJuIHQ7IH0KaW5saW5lICBmaXggb3BlcmF0b3IgLSAgKGNvbnN0IGZpeCB4LCBjb25zdCBp
bnQgeSkgICAgeyBmaXggdDsgIHQudiA9IHgudiAtIGl0b2ZpeCh5KTsgIHJldHVybiB0OyB9Cmlu
bGluZSAgZml4IG9wZXJhdG9yIC0gIChjb25zdCBpbnQgeCwgY29uc3QgZml4IHkpICAgIHsgZml4
IHQ7ICB0LnYgPSBpdG9maXgoeCkgLSB5LnY7ICByZXR1cm4gdDsgfQppbmxpbmUgIGZpeCBvcGVy
YXRvciAtICAoY29uc3QgZml4IHgsIGNvbnN0IGxvbmcgeSkgICB7IGZpeCB0OyAgdC52ID0geC52
IC0gaXRvZml4KHkpOyAgcmV0dXJuIHQ7IH0KaW5saW5lICBmaXggb3BlcmF0b3IgLSAgKGNvbnN0
IGxvbmcgeCwgY29uc3QgZml4IHkpICAgeyBmaXggdDsgIHQudiA9IGl0b2ZpeCh4KSAtIHkudjsg
IHJldHVybiB0OyB9CmlubGluZSAgZml4IG9wZXJhdG9yIC0gIChjb25zdCBmaXggeCwgY29uc3Qg
ZmxvYXQgeSkgIHsgZml4IHQ7ICB0LnYgPSB4LnYgLSBmdG9maXgoeSk7ICByZXR1cm4gdDsgfQpp
bmxpbmUgIGZpeCBvcGVyYXRvciAtICAoY29uc3QgZmxvYXQgeCwgY29uc3QgZml4IHkpICB7IGZp
eCB0OyAgdC52ID0gZnRvZml4KHgpIC0geS52OyAgcmV0dXJuIHQ7IH0KaW5saW5lICBmaXggb3Bl
cmF0b3IgLSAgKGNvbnN0IGZpeCB4LCBjb25zdCBkb3VibGUgeSkgeyBmaXggdDsgIHQudiA9IHgu
diAtIGZ0b2ZpeCh5KTsgIHJldHVybiB0OyB9CmlubGluZSAgZml4IG9wZXJhdG9yIC0gIChjb25z
dCBkb3VibGUgeCwgY29uc3QgZml4IHkpIHsgZml4IHQ7ICB0LnYgPSBmdG9maXgoeCkgLSB5LnY7
ICByZXR1cm4gdDsgfQoKaW5saW5lICBmaXggb3BlcmF0b3IgKiAgKGNvbnN0IGZpeCB4LCBjb25z
dCBmaXggeSkgICAgeyBmaXggdDsgIHQudiA9IGZpeG11bCh4LnYsIHkudik7ICAgICAgICAgcmV0
dXJuIHQ7IH0KaW5saW5lICBmaXggb3BlcmF0b3IgKiAgKGNvbnN0IGZpeCB4LCBjb25zdCBpbnQg
eSkgICAgeyBmaXggdDsgIHQudiA9IHgudiAqIHk7ICAgICAgICAgICAgICAgICAgcmV0dXJuIHQ7
IH0KaW5saW5lICBmaXggb3BlcmF0b3IgKiAgKGNvbnN0IGludCB4LCBjb25zdCBmaXggeSkgICAg
eyBmaXggdDsgIHQudiA9IHggKiB5LnY7ICAgICAgICAgICAgICAgICAgcmV0dXJuIHQ7IH0KaW5s
aW5lICBmaXggb3BlcmF0b3IgKiAgKGNvbnN0IGZpeCB4LCBjb25zdCBsb25nIHkpICAgeyBmaXgg
dDsgIHQudiA9IHgudiAqIHk7ICAgICAgICAgICAgICAgICAgcmV0dXJuIHQ7IH0KaW5saW5lICBm
aXggb3BlcmF0b3IgKiAgKGNvbnN0IGxvbmcgeCwgY29uc3QgZml4IHkpICAgeyBmaXggdDsgIHQu
diA9IHggKiB5LnY7ICAgICAgICAgICAgICAgICAgcmV0dXJuIHQ7IH0KaW5saW5lICBmaXggb3Bl
cmF0b3IgKiAgKGNvbnN0IGZpeCB4LCBjb25zdCBmbG9hdCB5KSAgeyBmaXggdDsgIHQudiA9IGZ0
b2ZpeChmaXh0b2YoeC52KSAqIHkpOyAgcmV0dXJuIHQ7IH0KaW5saW5lICBmaXggb3BlcmF0b3Ig
KiAgKGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZpeCB5KSAgeyBmaXggdDsgIHQudiA9IGZ0b2ZpeCh4
ICogZml4dG9mKHkudikpOyAgcmV0dXJuIHQ7IH0KaW5saW5lICBmaXggb3BlcmF0b3IgKiAgKGNv
bnN0IGZpeCB4LCBjb25zdCBkb3VibGUgeSkgeyBmaXggdDsgIHQudiA9IGZ0b2ZpeChmaXh0b2Yo
eC52KSAqIHkpOyAgcmV0dXJuIHQ7IH0KaW5saW5lICBmaXggb3BlcmF0b3IgKiAgKGNvbnN0IGRv
dWJsZSB4LCBjb25zdCBmaXggeSkgeyBmaXggdDsgIHQudiA9IGZ0b2ZpeCh4ICogZml4dG9mKHku
dikpOyAgcmV0dXJuIHQ7IH0KCmlubGluZSAgZml4IG9wZXJhdG9yIC8gIChjb25zdCBmaXggeCwg
Y29uc3QgZml4IHkpICAgIHsgZml4IHQ7ICB0LnYgPSBmaXhkaXYoeC52LCB5LnYpOyAgICAgICAg
IHJldHVybiB0OyB9CmlubGluZSAgZml4IG9wZXJhdG9yIC8gIChjb25zdCBmaXggeCwgY29uc3Qg
aW50IHkpICAgIHsgZml4IHQ7ICB0LnYgPSB4LnYgLyB5OyAgICAgICAgICAgICAgICAgIHJldHVy
biB0OyB9CmlubGluZSAgZml4IG9wZXJhdG9yIC8gIChjb25zdCBpbnQgeCwgY29uc3QgZml4IHkp
ICAgIHsgZml4IHQ7ICB0LnYgPSBmaXhkaXYoaXRvZml4KHgpLCB5LnYpOyAgIHJldHVybiB0OyB9
CmlubGluZSAgZml4IG9wZXJhdG9yIC8gIChjb25zdCBmaXggeCwgY29uc3QgbG9uZyB5KSAgIHsg
Zml4IHQ7ICB0LnYgPSB4LnYgLyB5OyAgICAgICAgICAgICAgICAgIHJldHVybiB0OyB9CmlubGlu
ZSAgZml4IG9wZXJhdG9yIC8gIChjb25zdCBsb25nIHgsIGNvbnN0IGZpeCB5KSAgIHsgZml4IHQ7
ICB0LnYgPSBmaXhkaXYoaXRvZml4KHgpLCB5LnYpOyAgIHJldHVybiB0OyB9CmlubGluZSAgZml4
IG9wZXJhdG9yIC8gIChjb25zdCBmaXggeCwgY29uc3QgZmxvYXQgeSkgIHsgZml4IHQ7ICB0LnYg
PSBmdG9maXgoZml4dG9mKHgudikgLyB5KTsgIHJldHVybiB0OyB9CmlubGluZSAgZml4IG9wZXJh
dG9yIC8gIChjb25zdCBmbG9hdCB4LCBjb25zdCBmaXggeSkgIHsgZml4IHQ7ICB0LnYgPSBmdG9m
aXgoeCAvIGZpeHRvZih5LnYpKTsgIHJldHVybiB0OyB9CmlubGluZSAgZml4IG9wZXJhdG9yIC8g
IChjb25zdCBmaXggeCwgY29uc3QgZG91YmxlIHkpIHsgZml4IHQ7ICB0LnYgPSBmdG9maXgoZml4
dG9mKHgudikgLyB5KTsgIHJldHVybiB0OyB9CmlubGluZSAgZml4IG9wZXJhdG9yIC8gIChjb25z
dCBkb3VibGUgeCwgY29uc3QgZml4IHkpIHsgZml4IHQ7ICB0LnYgPSBmdG9maXgoeCAvIGZpeHRv
Zih5LnYpKTsgIHJldHVybiB0OyB9CgppbmxpbmUgIGZpeCBvcGVyYXRvciA8PCAoY29uc3QgZml4
IHgsIGNvbnN0IGludCB5KSAgICB7IGZpeCB0OyAgdC52ID0geC52IDw8IHk7ICAgcmV0dXJuIHQ7
IH0KaW5saW5lICBmaXggb3BlcmF0b3IgPj4gKGNvbnN0IGZpeCB4LCBjb25zdCBpbnQgeSkgICAg
eyBmaXggdDsgIHQudiA9IHgudiA+PiB5OyAgIHJldHVybiB0OyB9CgppbmxpbmUgIGludCBvcGVy
YXRvciA9PSAoY29uc3QgZml4IHgsIGNvbnN0IGZpeCB5KSAgICB7IHJldHVybiAoeC52ID09IHku
dik7ICAgICAgIH0KaW5saW5lICBpbnQgb3BlcmF0b3IgPT0gKGNvbnN0IGZpeCB4LCBjb25zdCBp
bnQgeSkgICAgeyByZXR1cm4gKHgudiA9PSBpdG9maXgoeSkpOyB9CmlubGluZSAgaW50IG9wZXJh
dG9yID09IChjb25zdCBpbnQgeCwgY29uc3QgZml4IHkpICAgIHsgcmV0dXJuIChpdG9maXgoeCkg
PT0geS52KTsgfQppbmxpbmUgIGludCBvcGVyYXRvciA9PSAoY29uc3QgZml4IHgsIGNvbnN0IGxv
bmcgeSkgICB7IHJldHVybiAoeC52ID09IGl0b2ZpeCh5KSk7IH0KaW5saW5lICBpbnQgb3BlcmF0
b3IgPT0gKGNvbnN0IGxvbmcgeCwgY29uc3QgZml4IHkpICAgeyByZXR1cm4gKGl0b2ZpeCh4KSA9
PSB5LnYpOyB9CmlubGluZSAgaW50IG9wZXJhdG9yID09IChjb25zdCBmaXggeCwgY29uc3QgZmxv
YXQgeSkgIHsgcmV0dXJuICh4LnYgPT0gZnRvZml4KHkpKTsgfQppbmxpbmUgIGludCBvcGVyYXRv
ciA9PSAoY29uc3QgZmxvYXQgeCwgY29uc3QgZml4IHkpICB7IHJldHVybiAoZnRvZml4KHgpID09
IHkudik7IH0KaW5saW5lICBpbnQgb3BlcmF0b3IgPT0gKGNvbnN0IGZpeCB4LCBjb25zdCBkb3Vi
bGUgeSkgeyByZXR1cm4gKHgudiA9PSBmdG9maXgoeSkpOyB9CmlubGluZSAgaW50IG9wZXJhdG9y
ID09IChjb25zdCBkb3VibGUgeCwgY29uc3QgZml4IHkpIHsgcmV0dXJuIChmdG9maXgoeCkgPT0g
eS52KTsgfQoKaW5saW5lICBpbnQgb3BlcmF0b3IgIT0gKGNvbnN0IGZpeCB4LCBjb25zdCBmaXgg
eSkgICAgeyByZXR1cm4gKHgudiAhPSB5LnYpOyAgICAgICB9CmlubGluZSAgaW50IG9wZXJhdG9y
ICE9IChjb25zdCBmaXggeCwgY29uc3QgaW50IHkpICAgIHsgcmV0dXJuICh4LnYgIT0gaXRvZml4
KHkpKTsgfQppbmxpbmUgIGludCBvcGVyYXRvciAhPSAoY29uc3QgaW50IHgsIGNvbnN0IGZpeCB5
KSAgICB7IHJldHVybiAoaXRvZml4KHgpICE9IHkudik7IH0KaW5saW5lICBpbnQgb3BlcmF0b3Ig
IT0gKGNvbnN0IGZpeCB4LCBjb25zdCBsb25nIHkpICAgeyByZXR1cm4gKHgudiAhPSBpdG9maXgo
eSkpOyB9CmlubGluZSAgaW50IG9wZXJhdG9yICE9IChjb25zdCBsb25nIHgsIGNvbnN0IGZpeCB5
KSAgIHsgcmV0dXJuIChpdG9maXgoeCkgIT0geS52KTsgfQppbmxpbmUgIGludCBvcGVyYXRvciAh
PSAoY29uc3QgZml4IHgsIGNvbnN0IGZsb2F0IHkpICB7IHJldHVybiAoeC52ICE9IGZ0b2ZpeCh5
KSk7IH0KaW5saW5lICBpbnQgb3BlcmF0b3IgIT0gKGNvbnN0IGZsb2F0IHgsIGNvbnN0IGZpeCB5
KSAgeyByZXR1cm4gKGZ0b2ZpeCh4KSAhPSB5LnYpOyB9CmlubGluZSAgaW50IG9wZXJhdG9yICE9
IChjb25zdCBmaXggeCwgY29uc3QgZG91YmxlIHkpIHsgcmV0dXJuICh4LnYgIT0gZnRvZml4KHkp
KTsgfQppbmxpbmUgIGludCBvcGVyYXRvciAhPSAoY29uc3QgZG91YmxlIHgsIGNvbnN0IGZpeCB5
KSB7IHJldHVybiAoZnRvZml4KHgpICE9IHkudik7IH0KCmlubGluZSAgaW50IG9wZXJhdG9yIDwg
IChjb25zdCBmaXggeCwgY29uc3QgZml4IHkpICAgIHsgcmV0dXJuICh4LnYgPCB5LnYpOyAgICAg
ICAgfQppbmxpbmUgIGludCBvcGVyYXRvciA8ICAoY29uc3QgZml4IHgsIGNvbnN0IGludCB5KSAg
ICB7IHJldHVybiAoeC52IDwgaXRvZml4KHkpKTsgIH0KaW5saW5lICBpbnQgb3BlcmF0b3IgPCAg
KGNvbnN0IGludCB4LCBjb25zdCBmaXggeSkgICAgeyByZXR1cm4gKGl0b2ZpeCh4KSA8IHkudik7
ICB9CmlubGluZSAgaW50IG9wZXJhdG9yIDwgIChjb25zdCBmaXggeCwgY29uc3QgbG9uZyB5KSAg
IHsgcmV0dXJuICh4LnYgPCBpdG9maXgoeSkpOyAgfQppbmxpbmUgIGludCBvcGVyYXRvciA8ICAo
Y29uc3QgbG9uZyB4LCBjb25zdCBmaXggeSkgICB7IHJldHVybiAoaXRvZml4KHgpIDwgeS52KTsg
IH0KaW5saW5lICBpbnQgb3BlcmF0b3IgPCAgKGNvbnN0IGZpeCB4LCBjb25zdCBmbG9hdCB5KSAg
eyByZXR1cm4gKHgudiA8IGZ0b2ZpeCh5KSk7ICB9CmlubGluZSAgaW50IG9wZXJhdG9yIDwgIChj
b25zdCBmbG9hdCB4LCBjb25zdCBmaXggeSkgIHsgcmV0dXJuIChmdG9maXgoeCkgPCB5LnYpOyAg
fQppbmxpbmUgIGludCBvcGVyYXRvciA8ICAoY29uc3QgZml4IHgsIGNvbnN0IGRvdWJsZSB5KSB7
IHJldHVybiAoeC52IDwgZnRvZml4KHkpKTsgIH0KaW5saW5lICBpbnQgb3BlcmF0b3IgPCAgKGNv
bnN0IGRvdWJsZSB4LCBjb25zdCBmaXggeSkgeyByZXR1cm4gKGZ0b2ZpeCh4KSA8IHkudik7ICB9
CgppbmxpbmUgIGludCBvcGVyYXRvciA+ICAoY29uc3QgZml4IHgsIGNvbnN0IGZpeCB5KSAgICB7
IHJldHVybiAoeC52ID4geS52KTsgICAgICAgIH0KaW5saW5lICBpbnQgb3BlcmF0b3IgPiAgKGNv
bnN0IGZpeCB4LCBjb25zdCBpbnQgeSkgICAgeyByZXR1cm4gKHgudiA+IGl0b2ZpeCh5KSk7ICB9
CmlubGluZSAgaW50IG9wZXJhdG9yID4gIChjb25zdCBpbnQgeCwgY29uc3QgZml4IHkpICAgIHsg
cmV0dXJuIChpdG9maXgoeCkgPiB5LnYpOyAgfQppbmxpbmUgIGludCBvcGVyYXRvciA+ICAoY29u
c3QgZml4IHgsIGNvbnN0IGxvbmcgeSkgICB7IHJldHVybiAoeC52ID4gaXRvZml4KHkpKTsgIH0K
aW5saW5lICBpbnQgb3BlcmF0b3IgPiAgKGNvbnN0IGxvbmcgeCwgY29uc3QgZml4IHkpICAgeyBy
ZXR1cm4gKGl0b2ZpeCh4KSA+IHkudik7ICB9CmlubGluZSAgaW50IG9wZXJhdG9yID4gIChjb25z
dCBmaXggeCwgY29uc3QgZmxvYXQgeSkgIHsgcmV0dXJuICh4LnYgPiBmdG9maXgoeSkpOyAgfQpp
bmxpbmUgIGludCBvcGVyYXRvciA+ICAoY29uc3QgZmxvYXQgeCwgY29uc3QgZml4IHkpICB7IHJl
dHVybiAoZnRvZml4KHgpID4geS52KTsgIH0KaW5saW5lICBpbnQgb3BlcmF0b3IgPiAgKGNvbnN0
IGZpeCB4LCBjb25zdCBkb3VibGUgeSkgeyByZXR1cm4gKHgudiA+IGZ0b2ZpeCh5KSk7ICB9Cmlu
bGluZSAgaW50IG9wZXJhdG9yID4gIChjb25zdCBkb3VibGUgeCwgY29uc3QgZml4IHkpIHsgcmV0
dXJuIChmdG9maXgoeCkgPiB5LnYpOyAgfQoKaW5saW5lICBpbnQgb3BlcmF0b3IgPD0gKGNvbnN0
IGZpeCB4LCBjb25zdCBmaXggeSkgICAgeyByZXR1cm4gKHgudiA8PSB5LnYpOyAgICAgICB9Cmlu
bGluZSAgaW50IG9wZXJhdG9yIDw9IChjb25zdCBmaXggeCwgY29uc3QgaW50IHkpICAgIHsgcmV0
dXJuICh4LnYgPD0gaXRvZml4KHkpKTsgfQppbmxpbmUgIGludCBvcGVyYXRvciA8PSAoY29uc3Qg
aW50IHgsIGNvbnN0IGZpeCB5KSAgICB7IHJldHVybiAoaXRvZml4KHgpIDw9IHkudik7IH0KaW5s
aW5lICBpbnQgb3BlcmF0b3IgPD0gKGNvbnN0IGZpeCB4LCBjb25zdCBsb25nIHkpICAgeyByZXR1
cm4gKHgudiA8PSBpdG9maXgoeSkpOyB9CmlubGluZSAgaW50IG9wZXJhdG9yIDw9IChjb25zdCBs
b25nIHgsIGNvbnN0IGZpeCB5KSAgIHsgcmV0dXJuIChpdG9maXgoeCkgPD0geS52KTsgfQppbmxp
bmUgIGludCBvcGVyYXRvciA8PSAoY29uc3QgZml4IHgsIGNvbnN0IGZsb2F0IHkpICB7IHJldHVy
biAoeC52IDw9IGZ0b2ZpeCh5KSk7IH0KaW5saW5lICBpbnQgb3BlcmF0b3IgPD0gKGNvbnN0IGZs
b2F0IHgsIGNvbnN0IGZpeCB5KSAgeyByZXR1cm4gKGZ0b2ZpeCh4KSA8PSB5LnYpOyB9CmlubGlu
ZSAgaW50IG9wZXJhdG9yIDw9IChjb25zdCBmaXggeCwgY29uc3QgZG91YmxlIHkpIHsgcmV0dXJu
ICh4LnYgPD0gZnRvZml4KHkpKTsgfQppbmxpbmUgIGludCBvcGVyYXRvciA8PSAoY29uc3QgZG91
YmxlIHgsIGNvbnN0IGZpeCB5KSB7IHJldHVybiAoZnRvZml4KHgpIDw9IHkudik7IH0KCmlubGlu
ZSAgaW50IG9wZXJhdG9yID49IChjb25zdCBmaXggeCwgY29uc3QgZml4IHkpICAgIHsgcmV0dXJu
ICh4LnYgPj0geS52KTsgICAgICAgfQppbmxpbmUgIGludCBvcGVyYXRvciA+PSAoY29uc3QgZml4
IHgsIGNvbnN0IGludCB5KSAgICB7IHJldHVybiAoeC52ID49IGl0b2ZpeCh5KSk7IH0KaW5saW5l
ICBpbnQgb3BlcmF0b3IgPj0gKGNvbnN0IGludCB4LCBjb25zdCBmaXggeSkgICAgeyByZXR1cm4g
KGl0b2ZpeCh4KSA+PSB5LnYpOyB9CmlubGluZSAgaW50IG9wZXJhdG9yID49IChjb25zdCBmaXgg
eCwgY29uc3QgbG9uZyB5KSAgIHsgcmV0dXJuICh4LnYgPj0gaXRvZml4KHkpKTsgfQppbmxpbmUg
IGludCBvcGVyYXRvciA+PSAoY29uc3QgbG9uZyB4LCBjb25zdCBmaXggeSkgICB7IHJldHVybiAo
aXRvZml4KHgpID49IHkudik7IH0KaW5saW5lICBpbnQgb3BlcmF0b3IgPj0gKGNvbnN0IGZpeCB4
LCBjb25zdCBmbG9hdCB5KSAgeyByZXR1cm4gKHgudiA+PSBmdG9maXgoeSkpOyB9CmlubGluZSAg
aW50IG9wZXJhdG9yID49IChjb25zdCBmbG9hdCB4LCBjb25zdCBmaXggeSkgIHsgcmV0dXJuIChm
dG9maXgoeCkgPj0geS52KTsgfQppbmxpbmUgIGludCBvcGVyYXRvciA+PSAoY29uc3QgZml4IHgs
IGNvbnN0IGRvdWJsZSB5KSB7IHJldHVybiAoeC52ID49IGZ0b2ZpeCh5KSk7IH0KaW5saW5lICBp
bnQgb3BlcmF0b3IgPj0gKGNvbnN0IGRvdWJsZSB4LCBjb25zdCBmaXggeSkgeyByZXR1cm4gKGZ0
b2ZpeCh4KSA+PSB5LnYpOyB9CgppbmxpbmUgIGZpeCBzcXJ0KGZpeCB4KSAgICAgICAgICB7IGZp
eCB0OyAgdC52ID0gZml4c3FydCh4LnYpOyAgICAgICAgcmV0dXJuIHQ7IH0KaW5saW5lICBmaXgg
Y29zKGZpeCB4KSAgICAgICAgICAgeyBmaXggdDsgIHQudiA9IGZpeGNvcyh4LnYpOyAgICAgICAg
IHJldHVybiB0OyB9CmlubGluZSAgZml4IHNpbihmaXggeCkgICAgICAgICAgIHsgZml4IHQ7ICB0
LnYgPSBmaXhzaW4oeC52KTsgICAgICAgICByZXR1cm4gdDsgfQppbmxpbmUgIGZpeCB0YW4oZml4
IHgpICAgICAgICAgICB7IGZpeCB0OyAgdC52ID0gZml4dGFuKHgudik7ICAgICAgICAgcmV0dXJu
IHQ7IH0KaW5saW5lICBmaXggYWNvcyhmaXggeCkgICAgICAgICAgeyBmaXggdDsgIHQudiA9IGZp
eGFjb3MoeC52KTsgICAgICAgIHJldHVybiB0OyB9CmlubGluZSAgZml4IGFzaW4oZml4IHgpICAg
ICAgICAgIHsgZml4IHQ7ICB0LnYgPSBmaXhhc2luKHgudik7ICAgICAgICByZXR1cm4gdDsgfQpp
bmxpbmUgIGZpeCBhdGFuKGZpeCB4KSAgICAgICAgICB7IGZpeCB0OyAgdC52ID0gZml4YXRhbih4
LnYpOyAgICAgICAgcmV0dXJuIHQ7IH0KaW5saW5lICBmaXggYXRhbjIoZml4IHgsIGZpeCB5KSAg
eyBmaXggdDsgIHQudiA9IGZpeGF0YW4yKHgudiwgeS52KTsgIHJldHVybiB0OyB9CgoKaW5saW5l
IHZvaWQgZ2V0X3RyYW5zbGF0aW9uX21hdHJpeChNQVRSSVggKm0sIGZpeCB4LCBmaXggeSwgZml4
IHopCnsKICAgZ2V0X3RyYW5zbGF0aW9uX21hdHJpeChtLCB4LnYsIHkudiwgei52KTsKfQoKCmlu
bGluZSB2b2lkIGdldF9zY2FsaW5nX21hdHJpeChNQVRSSVggKm0sIGZpeCB4LCBmaXggeSwgZml4
IHopCnsKICAgZ2V0X3NjYWxpbmdfbWF0cml4KG0sIHgudiwgeS52LCB6LnYpOwp9CgoKaW5saW5l
IHZvaWQgZ2V0X3hfcm90YXRlX21hdHJpeChNQVRSSVggKm0sIGZpeCByKQp7CiAgIGdldF94X3Jv
dGF0ZV9tYXRyaXgobSwgci52KTsKfQoKCmlubGluZSB2b2lkIGdldF95X3JvdGF0ZV9tYXRyaXgo
TUFUUklYICptLCBmaXggcikKewogICBnZXRfeV9yb3RhdGVfbWF0cml4KG0sIHIudik7Cn0KCgpp
bmxpbmUgdm9pZCBnZXRfel9yb3RhdGVfbWF0cml4KE1BVFJJWCAqbSwgZml4IHIpCnsKICAgZ2V0
X3pfcm90YXRlX21hdHJpeChtLCByLnYpOwp9CgoKaW5saW5lIHZvaWQgZ2V0X3JvdGF0aW9uX21h
dHJpeChNQVRSSVggKm0sIGZpeCB4LCBmaXggeSwgZml4IHopCnsKICAgZ2V0X3JvdGF0aW9uX21h
dHJpeChtLCB4LnYsIHkudiwgei52KTsKfQoKCmlubGluZSB2b2lkIGdldF9hbGlnbl9tYXRyaXgo
TUFUUklYICptLCBmaXggeGZyb250LCBmaXggeWZyb250LCBmaXggemZyb250LCBmaXggeHVwLCBm
aXggeXVwLCBmaXggenVwKQp7CiAgIGdldF9hbGlnbl9tYXRyaXgobSwgeGZyb250LnYsIHlmcm9u
dC52LCB6ZnJvbnQudiwgeHVwLnYsIHl1cC52LCB6dXAudik7Cn0KCgppbmxpbmUgdm9pZCBnZXRf
dmVjdG9yX3JvdGF0aW9uX21hdHJpeChNQVRSSVggKm0sIGZpeCB4LCBmaXggeSwgZml4IHosIGZp
eCBhKQp7CiAgIGdldF92ZWN0b3Jfcm90YXRpb25fbWF0cml4KG0sIHgudiwgeS52LCB6LnYsIGEu
dik7Cn0KCgppbmxpbmUgdm9pZCBnZXRfdHJhbnNmb3JtYXRpb25fbWF0cml4KE1BVFJJWCAqbSwg
Zml4IHNjYWxlLCBmaXggeHJvdCwgZml4IHlyb3QsIGZpeCB6cm90LCBmaXggeCwgZml4IHksIGZp
eCB6KQp7CiAgIGdldF90cmFuc2Zvcm1hdGlvbl9tYXRyaXgobSwgc2NhbGUudiwgeHJvdC52LCB5
cm90LnYsIHpyb3QudiwgeC52LCB5LnYsIHoudik7Cn0KCgppbmxpbmUgdm9pZCBnZXRfY2FtZXJh
X21hdHJpeChNQVRSSVggKm0sIGZpeCB4LCBmaXggeSwgZml4IHosIGZpeCB4ZnJvbnQsIGZpeCB5
ZnJvbnQsIGZpeCB6ZnJvbnQsIGZpeCB4dXAsIGZpeCB5dXAsIGZpeCB6dXAsIGZpeCBmb3YsIGZp
eCBhc3BlY3QpCnsKICAgZ2V0X2NhbWVyYV9tYXRyaXgobSwgeC52LCB5LnYsIHoudiwgeGZyb250
LnYsIHlmcm9udC52LCB6ZnJvbnQudiwgeHVwLnYsIHl1cC52LCB6dXAudiwgZm92LnYsIGFzcGVj
dC52KTsKfQoKCmlubGluZSB2b2lkIHF0cmFuc2xhdGVfbWF0cml4KE1BVFJJWCAqbSwgZml4IHgs
IGZpeCB5LCBmaXggeikKewogICBxdHJhbnNsYXRlX21hdHJpeChtLCB4LnYsIHkudiwgei52KTsK
fQoKCmlubGluZSB2b2lkIHFzY2FsZV9tYXRyaXgoTUFUUklYICptLCBmaXggc2NhbGUpCnsKICAg
cXNjYWxlX21hdHJpeChtLCBzY2FsZS52KTsKfQoKCmlubGluZSBmaXggdmVjdG9yX2xlbmd0aChm
aXggeCwgZml4IHksIGZpeCB6KQp7CiAgIGZpeCB0OwogICB0LnYgPSB2ZWN0b3JfbGVuZ3RoKHgu
diwgeS52LCB6LnYpOwogICByZXR1cm4gdDsKfQoKCmlubGluZSB2b2lkIG5vcm1hbGl6ZV92ZWN0
b3IoZml4ICp4LCBmaXggKnksIGZpeCAqeikKewogICBub3JtYWxpemVfdmVjdG9yKCZ4LT52LCAm
eS0+diwgJnotPnYpOwp9CgoKaW5saW5lIHZvaWQgY3Jvc3NfcHJvZHVjdChmaXggeDEsIGZpeCB5
MSwgZml4IHoxLCBmaXggeDIsIGZpeCB5MiwgZml4IHoyLCBmaXggKnhvdXQsIGZpeCAqeW91dCwg
Zml4ICp6b3V0KQp7CiAgIGNyb3NzX3Byb2R1Y3QoeDEudiwgeTEudiwgejEudiwgeDIudiwgeTIu
diwgejIudiwgJnhvdXQtPnYsICZ5b3V0LT52LCAmem91dC0+dik7Cn0KCgppbmxpbmUgZml4IGRv
dF9wcm9kdWN0KGZpeCB4MSwgZml4IHkxLCBmaXggejEsIGZpeCB4MiwgZml4IHkyLCBmaXggejIp
CnsKICAgZml4IHQ7CiAgIHQudiA9IGRvdF9wcm9kdWN0KHgxLnYsIHkxLnYsIHoxLnYsIHgyLnYs
IHkyLnYsIHoyLnYpOwogICByZXR1cm4gdDsKfQoKCmlubGluZSB2b2lkIGFwcGx5X21hdHJpeChN
QVRSSVggKm0sIGZpeCB4LCBmaXggeSwgZml4IHosIGZpeCAqeG91dCwgZml4ICp5b3V0LCBmaXgg
KnpvdXQpCnsKICAgYXBwbHlfbWF0cml4KG0sIHgudiwgeS52LCB6LnYsICZ4b3V0LT52LCAmeW91
dC0+diwgJnpvdXQtPnYpOwp9CgoKaW5saW5lIHZvaWQgcGVyc3BfcHJvamVjdChmaXggeCwgZml4
IHksIGZpeCB6LCBmaXggKnhvdXQsIGZpeCAqeW91dCkKewogICBwZXJzcF9wcm9qZWN0KHgudiwg
eS52LCB6LnYsICZ4b3V0LT52LCAmeW91dC0+dik7Cn0KCgoKCgoKCiMgMjA0ICIvdXNyL2xvY2Fs
L2luY2x1ZGUvYWxsZWdyby9maXguaCIgMiAzCgoKCgoKCgojIDc5ICIvdXNyL2xvY2FsL2luY2x1
ZGUvYWxsZWdyby5oIiAyIDMKCgoKCgoKIyAxNyAibWxpYi5jcHAiIDIKCiMgMSAiLi4vLi4vdHRm
L2luYy9hbGxlZ3R0Zi5oIiAxCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKZXh0ZXJuICJD
IiB7CgoKIAogCnZvaWQgYW50aWFsaWFzX2luaXQgKHN0cnVjdCBSR0IqIHBhbCk7CnZvaWQgYW50
aWFsaWFzX3BhbGV0dGUgKHN0cnVjdCBSR0IqIHBhbCk7CnZvaWQgYW50aWFsaWFzX2V4aXQgKHZv
aWQpOwoKIAogCnZvaWQgYWF0ZXh0b3V0IChCSVRNQVAgKmJtcCwgY29uc3QgIEZPTlQgKmZvbnQs
IGNvbnN0ICBjaGFyICpzdHJpbmcsIGludCB4LCBpbnQgeSwgaW50IGNvbG91cik7CnZvaWQgYWF0
ZXh0b3V0X2NlbnRlciAoQklUTUFQICpibXAsIGNvbnN0ICBGT05UICpmb250LCBjb25zdCAgY2hh
ciAqc3RyaW5nLCBpbnQgeCwgaW50IHksIGludCBjb2xvdXIpOwp2b2lkIGFhdGV4dG91dF9yaWdo
dCAoQklUTUFQICpibXAsIGNvbnN0ICBGT05UICpmb250LCBjb25zdCAgY2hhciAqc3RyaW5nLCBp
bnQgeCwgaW50IHksIGludCBjb2xvdXIpOwoKIAp2b2lkIGFhdGV4dHByaW50ZihCSVRNQVAgKmJt
cCwgY29uc3QgIEZPTlQgKmYsIGludCB4LCBpbnQgeSwgaW50IGNvbG9yLCBjb25zdCAgY2hhciAq
Zm9ybWF0LCAuLi4pOwp2b2lkIGFhdGV4dHByaW50Zl9jZW50ZXIoQklUTUFQICpibXAsIGNvbnN0
ICBGT05UICpmLCBpbnQgeCwgaW50IHksIGludCBjb2xvciwgY29uc3QgIGNoYXIgKmZvcm1hdCwg
Li4uKTsKdm9pZCBhYXRleHRwcmludGZfcmlnaHQoQklUTUFQICpibXAsIGNvbnN0ICBGT05UICpm
LCBpbnQgeCwgaW50IHksIGludCBjb2xvciwgY29uc3QgIGNoYXIgKmZvcm1hdCwgLi4uKTsKCiAK
IAoKIAogCgoKCiAKIAoKCgogCgoKCgogCnN0cnVjdCBGT05UKiBsb2FkX2ZvbnQoY2hhciAqZmls
ZW5hbWUpOwoKCiAKc3RydWN0IEZPTlQqIGxvYWRfdHRmX2ZvbnRfZXggKGNvbnN0IGNoYXIqIGZp
bGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgcG9pbnRzX3csCiAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBwb2ludHNfaCwKICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgaW50IHNtb290aCk7CgogCnN0cnVjdCBGT05UKiBsb2FkX3R0Zl9mb250X2V4
MiAoY29uc3QgY2hhciogZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQgcG9pbnRzX3csCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgcG9pbnRzX2gs
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgYmVnaW4sCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBpbnQgZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
aW50IHNtb290aCk7CiAgICAgICAgICAgICAgICAgICAgICAgIAogCnN0cnVjdCBGT05UKiBsb2Fk
X3R0Zl9mb250IChjb25zdCBjaGFyKiBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgY29u
c3QgaW50IHBvaW50cywKICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IHNtb290aCk7CgoK
IApzdHJ1Y3QgRk9OVCogbG9hZF90dGZfZm9udF9leDJfbWVtIChjb25zdCBjaGFyKiBmaWxlbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IHB3LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgcGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBiZWdpbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGVuZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgaW50IHNtb290aCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIApzdHJ1Y3QgRk9OVCogbG9hZF90dGZfZm9udF9leF9tZW0gKGNvbnN0IGNo
YXIqIGZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu
dCBwdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgcGgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IHNtb290aCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCnN0cnVjdCBGT05UKiBsb2FkX3R0Zl9mb250
X21lbSAoY29uc3QgY2hhciogZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgaW50IHBvaW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBpbnQgc21vb3RoKTsKCgogCgp9CgogCgoKCiMgMTggIm1saWIuY3BwIiAyCgoKIyAxICIuLi9p
bmMvbWxpYi5oIiAxCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0
ZXJuIHZvbGF0aWxlIGludCB0OwpleHRlcm4gdm9sYXRpbGUgaW50IGZyYW1lX3JhdGU7CmV4dGVy
biB2b2xhdGlsZSBpbnQgaW50ZXJydXB0OwpleHRlcm4gYm9vbCBERUJVRzsKZXh0ZXJuIGludCBD
T0xPUl9ERVBUSDsKCgoKaW50IHdhaXRfa2V5KCk7ICAKaW50IHdhaXRfa2V5X3RpbWUoaW50IHIp
OyAgCmludCBnZXRfa2V5X3RpbWUoaW50IHIpOyAgCnZvaWQgcGFkemVybyhpbnQgY3QsIGNoYXIg
KnB6KTsKCiAKCgp2b2lkIGRwX3JzdChpbnQgcm93KTsKdm9pZCBkcF9jaGFyKEJJVE1BUCAqcHBs
YW5lLCBjaGFyICpwdCk7CnZvaWQgZHBfaW50IChCSVRNQVAgKnBwbGFuZSwgaW50IHZsKTsKdm9p
ZCBkcF9oZXggKEJJVE1BUCAqcHBsYW5lLCBpbnQgdmwpOwppbnQgZHBfa2V5KCk7Cgp2b2lkIHN1
YnN0X2JtcF9jb2xvcihCSVRNQVAgKmJtcCwgaW50IHNyY19jb2wsIGludCBkZXN0X2NvbCk7Cmlu
dCBmaXhfd2luX3RvX2FsbGVnX2NvbChpbnQgY29sKTsKQklUTUFQICpjcmVhdGVfYml0bWFwX2Zy
b21fZGF0ZmlsZShEQVRBRklMRSAqZGYsIGludCBpbmRleCwgaW50IGNvbG9yX2RlcHRoKTsKdm9p
ZCByb3RhdGVfc3ByaXRlKEJJVE1BUCAqYm1wRCwgQklUTUFQICpibXBTLCBpbnQgeCwgaW50IHks
IGludCByLCBpbnQgY29sb3JfZGVwdGgpOwoKdm9pZCBhZGp1c3RfeHlfYml0bWFwKEJJVE1BUCAq
c3ByaXRlLCBpbnQgeCwgaW50IHkpOwp2b2lkIGFkanVzdF94eV90ZXh0KEZPTlQgKmZvbnRjLCBj
aGFyICpzdCwgaW50IHgsIGludCB5KTsKCmJvb2wgY291bGRfc2hvdyhpbnQgcyk7Cgp2b2lkIGdm
X3dyaXRlKEJJVE1BUCAqcHBsYW5lLCBjaGFyICpwdCk7CnZvaWQgZ2Zfd3JpdGVsbihCSVRNQVAg
KnBwbGFuZSwgY2hhciAqcHQpOwp2b2lkIGdmX2NscyhCSVRNQVAgKnBwbGFuZSk7CnZvaWQgZ2Zf
c2V0eHkoaW50IHgsIGludCB5KTsKCmJvb2wgcGVyY2VudF9jaGFuY2UoaW50IHZhbHVlKTsKdm9p
ZCBfZ2VuZXJhdGVfMzMyX3BhbGV0dGUoUEFMRVRURSBwYWwpOwoKdm9pZCB1cGRhdGVfc2NyZWVu
KEJJVE1BUCAqYmJtcCk7CnZvaWQgZGVsYXlfc2NyZWVuKEJJVE1BUCAqYmJtcCwgaW50IGkpOwpp
bnQgcGxheV92b2ljZShjb25zdCBTQU1QTEUgKnNwbCwgaW50IHZvbCwgaW50IHBhbiwgaW50IGZy
ZXEsIGludCBsb29wKTsKdm9pZCBnZW5lcmF0ZV8zMzJfYml0bWFwX3BhbGV0dGUodm9pZCk7Cgpj
aGFyICppdG9hKGludCB2YWx1ZSwgY2hhciAqc3QsIGludCByYWRpeCk7CmNoYXIgKnRyaW0oY2hh
ciAqc3QpOwpjaGFyICpzcGFjZShpbnQgbik7CgoKCgoKCiMgMjAgIm1saWIuY3BwIiAyCgojIDEg
Ii4uL2luYy9nYW1laW8uaCIgMQoKCgoKCgoKCgoKCgoKICAgCiAgIAogICAKICAgCiAgIAogICAK
ICAgCiAgIAojIDMxICIuLi9pbmMvZ2FtZWlvLmgiCgoKCgpleHRlcm4gdm9sYXRpbGUgaW50IHQ7
CmV4dGVybiBpbnQgSVNfS0VZQk9BUkRfSU5TVEFMTEVEOwpleHRlcm4gaW50IElTX0pPWVNUSUNL
X0lOU1RBTExFRDsKCgoKIAoKCgoKY2xhc3MgQ1BPUlRJTiB7CiAgIHB1YmxpYzoKICAgICAgaW50
IHJlc3VsdCxsYXN0cmVzdWx0OwoKICAgICAgQ1BPUlRJTigpIHsKICAgICAgICAgcmVzdWx0ID0g
MDsKICAgICAgICAgbGFzdHJlc3VsdCA9IC0xOwogICAgICAgICBjYWxpYnJhdGVkID0gZmFsc2U7
CiAgICAgIH0KCiAgICAgIH5DUE9SVElOKCl7CiAgICAgIH0KCiAgICAgIGludCByZWFkKHZvaWQp
OwogICAgICB2b2lkIGNsZWFyX2J1ZmZlcih2b2lkKTsKICAgICAgdm9pZCBwb29sKHZvaWQpOwog
ICAgICBpbnQgY2hhbmdlZCh2b2lkKTsKICAgICAgdm9pZCB0ZXN0KHZvaWQpOwogICAgICBpbnQg
c2Nhbih2b2lkKTsKICAgICAgYm9vbCBjYWxpYnJhdGVkOwp9OwoKCgpleHRlcm4gQ1BPUlRJTiBw
b3J0aW47CgoKCgoKCgojIDIxICJtbGliLmNwcCIgMgoKIyAxICIuLi9pbmMvYWNjb3VudC5oIiAx
CiAKCgoKCgogCiAKIAoKCiAKCiAKCgoKCmNsYXNzIENBQ0NPVU5UIHsKICAgcHVibGljOgoKICAg
ICAgZmxvYXQgYmFzZWJvbnVzNjsgICAgICAgIAogICAgICBmbG9hdCBiYXNlYm9udXM1OyAgICAg
ICAgCiAgICAgIGZsb2F0IGJhc2Vib251czQ7ICAgICAgICAKICAgICAgZmxvYXQgYmFzZWJvbnVz
MzsgICAgICAgIAogICAgICBmbG9hdCB0b3Bib251czsgICAgICAgICAgCgogICAgICBjaGFyIG1l
c3NhZ2UxWzI1NV07CiAgICAgIGNoYXIgbWVzc2FnZTJbMjU1XTsKICAgICAgY2hhciBtZXNzYWdl
M1syNTVdOwoKICAgICAgaW50IG1hY2hpbmV0eXBlOwoKICAgICAgQ0FDQ09VTlQgKCkgewogCiAg
ICAgIH0KIAogICAgICB+Q0FDQ09VTlQgKCkgewogCiAgICAgIH0KCiAgICAgIHZvaWQgZHVtcF9l
MnByb20oQklUTUFQICpwcGxhbmUpOwoKICAgICAgaW50IHJlc2V0X21lbW9yeSh2b2lkKTsKICAg
ICAgaW50IGxvYWRfbWVtb3J5KHZvaWQpOwogICAgICBpbnQgc2F2ZV9tZW1vcnkodm9pZCk7CiAK
ICAgICAgaW50ICBnZXRfY3JlZGl0cyh2b2lkKTsKICAgICAgYm9vbCBhZGRfY3JlZGl0cyhpbnQg
dmFsdWUpOwogICAgICBib29sIHN1Yl9jcmVkaXRzKGludCB2YWx1ZSk7CgogICAgICBpbnQgIGdl
dF9jcmVkaXRzX3ByaXplKHZvaWQpOwogICAgICBib29sIHNldF9jcmVkaXRzX3ByaXplKGludCB2
YWx1ZSk7CgogICAgICBpbnQgIGdldF9jcmVkaXRzX2JldCh2b2lkKTsKICAgICAgYm9vbCBzZXRf
Y3JlZGl0c19iZXQoaW50IHZhbHVlKTsKICAgICAgYm9vbCBhZGRfY3JlZGl0c19iZXQoaW50IHZh
bHVlKTsKIAogICAgICBpbnQgIGdldF91Y3JlZGl0c19iZXQodm9pZCk7CiAgICAgIGJvb2wgc2V0
X3VjcmVkaXRzX2JldChpbnQgdmFsdWUpOwogICAgICBib29sIGFkZF91Y3JlZGl0c19iZXQoaW50
IHZhbHVlKTsKIAogICAgICBmbG9hdCBnZXRfYm9udXMoY2hhciBib251c19pZCk7CiAgICAgIGJv
b2wgIHNldF9ib251cyhjaGFyIGJvbnVzX2lkLCBmbG9hdCB2YWx1ZSk7CiAgICAgIGJvb2wgIGFk
ZF9ib251cyhmbG9hdCB2YWx1ZSk7CiAgICAgIGNoYXIgYm9udXNfbG9ja2VkKHZvaWQpOwogICAg
ICBib29sIGJvbnVzX3JlYWNoZWQoY2hhciBib251c19pZCk7CiAgICAgIGludCByZXNldF9ib251
cyhjaGFyIGJvbnVzX2lkKTsKCiAgICAgIGludCAgZ2V0X2JldF90ZW5zKHZvaWQpOwogICAgICBi
b29sIHNldF9iZXRfdGVucyhpbnQgdmFsdWUpOwogICAgICBib29sIGFkZF9iZXRfdGVucyhpbnQg
dmFsdWUpOwogCiAgICAgIGZsb2F0IGdldF9wb3dlcl9tZXRlcih2b2lkKTsKICAgICAgYm9vbCBz
ZXRfcG93ZXJfbWV0ZXIoZmxvYXQgdmFsdWUpOwogICAgICBib29sIGFkZF9wb3dlcl9tZXRlcihm
bG9hdCB2YWx1ZSk7CgogICAgICBpbnQgIGdldF9wcml6ZSh2b2lkKTsKICAgICAgaW50ICBnZXRf
cHJvZml0KHZvaWQpOwogICAgICBib29sIFYxX3N1Yl9wcml6ZShpbnQgdmFsdWUpOwogICAgICBi
b29sIFYxX2FkZF9wcml6ZV9wcm9maXQoaW50IHZhbHVlLCBpbnQgcHByaXplMywgaW50IHBwcml6
ZTQsIGludCBwcHJpemU1KTsKICAgICAgYm9vbCBWMl9zdWJfcHJpemUoaW50IHZhbHVlKTsKICAg
ICAgYm9vbCBWMl9hZGRfcHJpemVfcHJvZml0KGludCB2YWx1ZSwgaW50IHBwcml6ZTMsIGludCBw
cHJpemU0LCBpbnQgcHByaXplNSk7CgogICAgICBpbnQgIGdldF9jcmVkaXRzX3dvbih2b2lkKTsK
ICAgICAgYm9vbCBzZXRfY3JlZGl0c193b24oaW50IHZhbHVlKTsKCiAgICAgIGludCAgZ2V0X21l
dGVyX2luKHZvaWQpOwogICAgICBib29sIGFkZF9tZXRlcl9pbihpbnQgdmFsdWUpOwogICAgICBp
bnQgIGdldF9tZXRlcl9vdXQodm9pZCk7CiAgICAgIGJvb2wgYWRkX21ldGVyX291dChpbnQgdmFs
dWUpOwoKICAgICAgYm9vbCBhZGRfdG90YWxfc3RhdChjaGFyICp2YWx1ZSk7CgogICAgICBpbnQg
IGdldF9kb3VibGUodm9pZCk7CiAgICAgIGJvb2wgc2V0X2RvdWJsZShpbnQgdmFsdWUpOwogICAg
ICBib29sIGFkZF9kb3VibGUoaW50IHZhbHVlKTsKICAgICAgYm9vbCBzdWJfZG91YmxlKGludCB2
YWx1ZSk7CiAgICAgIGludCAgZ2V0X2F2YWxpYWJsZV9wcml6ZSh2b2lkKTsKCiAgICAgIHZvaWQg
Z2FtZV9kZW1vc3RyYXRpb24odm9pZCk7CgoKIAogICAgcHJpdmF0ZToKICAgICAgICAKCgogICAg
ICAgdm9sYXRpbGUgZmxvYXQgYm9udXM2OyAgICAgICAgICAgIAogICAgICAgdm9sYXRpbGUgZmxv
YXQgYm9udXM1OyAgICAgICAgICAgIAogICAgICAgdm9sYXRpbGUgZmxvYXQgYm9udXM0OyAgICAg
ICAgICAgIAogICAgICAgdm9sYXRpbGUgZmxvYXQgYm9udXMzOyAgICAgICAgICAgIAoKICAgICAg
IHZvbGF0aWxlIGludCBkb3VibGVfcHJpemU7ICAgICAgICAKCiAgICAgICB2b2xhdGlsZSBpbnQg
YmV0X3RlbnM7ICAgICAgICAgICAgCgogICAgICAgdm9sYXRpbGUgaW50IGNyZWRpdHM7ICAgICAg
ICAgICAgIAogICAgICAgdm9sYXRpbGUgaW50IGNyZWRpdHNfaW47ICAgICAgICAgIAogICAgICAg
dm9sYXRpbGUgaW50IGNyZWRpdHNfb3V0OyAgICAgICAgIAoKICAgICAgIHZvbGF0aWxlIGludCBj
cmVkaXRzX2JldDsgICAgICAgICAKICAgICAgIHZvbGF0aWxlIGludCBjcmVkaXRzX3dvbjsgICAg
ICAgICAKICAgICAgIHZvbGF0aWxlIGludCBjcmVkaXRzX3ByaXplOyAgICAgICAKCiAgICAgICB2
b2xhdGlsZSBpbnQgaWRlbnRpZmljYXRpb247ICAgICAgCiAgICAgICB2b2xhdGlsZSBpbnQgbWV0
ZXJfaW47CiAgICAgICB2b2xhdGlsZSBpbnQgbWV0ZXJfb3V0OwoKICAgICAgIHZvbGF0aWxlIGlu
dCBwZXJjX3ByaXplOyAgICAgICAgICAKICAgICAgIHZvbGF0aWxlIGludCBwZXJjX3Byb2ZpdDsg
ICAgICAgICAKICAgICAgIHZvbGF0aWxlIGludCBwZXJjZW50OyAgICAgICAgICAgICAKICAgICAg
IHZvbGF0aWxlIGludCBwZXJjZW50X0RTOyAgICAgICAgICAKCiAgICAgICB2b2xhdGlsZSBmbG9h
dCBwb3dlcl9tZXRlcjsgICAgICAgCiAgICAgICB2b2xhdGlsZSBpbnQgcHJpemU7ICAgICAgICAg
ICAgICAgCiAgICAgICB2b2xhdGlsZSBpbnQgcHJpemU1OyAgICAgICAgICAgICAgCiAgICAgICB2
b2xhdGlsZSBpbnQgcHJpemU0OyAgICAgICAgICAgICAgCiAgICAgICB2b2xhdGlsZSBpbnQgcHJp
emUzOyAgICAgICAgICAgICAgCiAgICAgICB2b2xhdGlsZSBpbnQgcHJvZml0OyAgICAgICAgICAg
ICAgCgogICAgICAgdm9sYXRpbGUgaW50IHVjcmVkaXRzX2JldDsgICAgICAgIAogICAgICAgdm9s
YXRpbGUgaW50IHRvdGFsX3ByaXplNTsgICAgICAgIAogICAgICAgdm9sYXRpbGUgaW50IHRvdGFs
X3ByaXplNDsgICAgICAgIAogICAgICAgdm9sYXRpbGUgaW50IHRvdGFsX3ByaXplMzsgICAgICAg
IAoKICAgICAgIHZvbGF0aWxlIGludCB0b3RhbF9kb3VibGU7ICAgICAgICAKICAgICAgIHZvbGF0
aWxlIGludCB0b3RhbF9wb3dlcjsgICAgICAgICAKICAgICAgIHZvbGF0aWxlIGludCB0b3RhbF9l
eHRyYWJhbGw7ICAgICAKICAgICAgIHZvbGF0aWxlIGludCB0b3RhbF9tdWx0aXBseTsgICAgICAK
CiAgICAgICB2b2xhdGlsZSBpbnQgdG90YWxfYm9udXM1OyAgICAgICAgCiAgICAgICB2b2xhdGls
ZSBpbnQgdG90YWxfYm9udXM0OyAgICAgICAgCiAgICAgICB2b2xhdGlsZSBpbnQgdG90YWxfYm9u
dXMzOyAgICAgICAgCgogICAgICAgIAoKCgoKCgp9OwogCiAKIApleHRlcm4gQ0FDQ09VTlQgYWNj
b3VudDsKCgogCgogCiAKIAoKCgojIDIyICJtbGliLmNwcCIgMgoKCgoKaW50IHhfZHVtcCx5X2R1
bXA7CmludCB3X2R1bXAsaF9kdW1wOwpzdGF0aWMgaW50IHh3ID0gMDsKc3RhdGljIGludCB5dyA9
IDA7CgoKCiAKCgoKCmludCB3YWl0X2tleSgpCnsKICAgY2xlYXJfa2V5YnVmKCk7CiAgIHdoaWxl
ICAoIXBvcnRpbi5jaGFuZ2VkKCkpCiAgICAgIHBvbGxfa2V5Ym9hcmQoKTsKICAgcmV0dXJuIChw
b3J0aW4ucmVhZCgpKTsKfQoKCgogCgoKCgppbnQgd2FpdF9rZXlfdGltZShpbnQgcikKewogICBj
bGVhcl9rZXlidWYoKTsKICAgd2hpbGUgICghcG9ydGluLmNoYW5nZWQoKSAmIChyLS0gPiAwKSkK
ICAgICAgcmVzdCgxKTsKCiAgIGlmIChwb3J0aW4uY2hhbmdlZCgpKQogICAgICByZXR1cm4gKHBv
cnRpbi5yZWFkKCkpOwogICBlbHNlCiAgICAgIHJldHVybiAoMCk7Cn0KCgoKIAoKCgoKaW50IGdl
dF9rZXlfdGltZShpbnQgcikKewogICB3aGlsZSAgKCFwb3J0aW4uY2hhbmdlZCgpICYgKHItLSA+
IDApKQogICAgICByZXN0KDEpOwoKICAgaWYgKHBvcnRpbi5jaGFuZ2VkKCkpCiAgICAgIHJldHVy
biAocG9ydGluLnJlYWQoKSk7CiAgIGVsc2UKICAgICAgcmV0dXJuICgwKTsKfQoKCgogCgoKCmNo
YXIgKml0b2EoaW50IHZhbHVlLCBjaGFyICpzdCwgaW50IHJhZGl4KQp7CiAgIHJhZGl4PTA7CiAg
IHN0cmNweShzdCwgIiIpOwogICBzcHJpbnRmKHN0LCAiJWQiLCB2YWx1ZSk7CiAgIHJldHVybiAo
c3QpOwp9CgoKCiAKCgoKCnZvaWQgcGFkemVybyhpbnQgY3QsIGNoYXIgKnB6KQp7CiAgIGNoYXIg
YnVmWzI1Nl09IlwwMDAiOwoKICAgc3RyY3B5KGJ1ZiwgIjAiKTsKICAgaXRvYShjdCwgcHosIDEw
KTsKICAgaWYgKChzdHJsZW4ocHopKSA9PSAxKSB7CiAgICAgIHN0cmNhdChidWYsIHB6KTsKICAg
ICAgc3RyY3B5KHB6LCBidWYpOwogICB9Cn0KCgoKIAoKCgoKdm9pZCBkcF9yc3QoaW50IHJvdykK
ewogICBoX2R1bXAgPSB0ZXh0X2hlaWdodChmb250KTsKICAgeF9kdW1wID0gMjsKICAgeV9kdW1w
ID0gMCArIChyb3cgKiBoX2R1bXApOwoKfQoKdm9pZCBkcF9jaGFyKEJJVE1BUCAqcHBsYW5lLCBj
aGFyICpwdCkKewogICBjaGFyIHN0WzI1Nl09IlwwMDAiOwoKICAgdGV4dF9tb2RlKG1ha2Vjb2wo
MCwwLDI1NSkpOwogICBzdHJjcHkoc3QsIHB0KTsKCiAgIHRleHRwcmludGYocHBsYW5lLCBmb250
LCB4X2R1bXAseV9kdW1wLCBtYWtlY29sKDI1NSwyNTUsMjU1KSwgIiVzIiwgc3QpOwogICB3X2R1
bXAgPSB0ZXh0X2xlbmd0aChmb250LCBzdCk7CiAgIHhfZHVtcCArPSB3X2R1bXA7Cn0KCnZvaWQg
ZHBfaW50KEJJVE1BUCAqcHBsYW5lLCBpbnQgdmwpCnsKICAgY2hhciBzdFsyNTZdPSJcMDAwIjsK
CiAgIHRleHRfbW9kZShtYWtlY29sKDAsMCwyNTUpKTsKICAgaXRvYSAodmwsIHN0LCAxMCk7CiAg
IHN0cmNhdChzdCwgIiAiKTsKCiAgIHRleHRwcmludGYocHBsYW5lLCBmb250LCB4X2R1bXAseV9k
dW1wLCBtYWtlY29sKDI1NSwyNTUsMjU1KSwgIiVzIiwgc3QpOwogICB3X2R1bXAgPSB0ZXh0X2xl
bmd0aChmb250LCBzdCk7CiAgIHhfZHVtcCArPSB3X2R1bXA7Cn0KCnZvaWQgZHBfaGV4KEJJVE1B
UCAqcHBsYW5lLCBpbnQgdmwpCnsKICAgY2hhciBzdFsyNTZdPSJcMDAwIjsKCiAgIHRleHRfbW9k
ZShtYWtlY29sKDAsMCwyNTUpKTsKICAgaXRvYSAodmwsIHN0LCAxNik7CiAgIHN0cmNhdChzdCwg
ImggIik7CgogICB0ZXh0cHJpbnRmKHBwbGFuZSwgZm9udCwgeF9kdW1wLHlfZHVtcCwgbWFrZWNv
bCgyNTUsMjU1LDI1NSksICIlcyIsIHN0KTsKICAgd19kdW1wID0gdGV4dF9sZW5ndGgoZm9udCwg
c3QpOwogICB4X2R1bXAgKz0gd19kdW1wOwp9CgppbnQgZHBfa2V5KCkKewogICByZXR1cm4gKHJl
YWRrZXkoKSk7Cn0KIAoKCgoKCgoKdm9pZCBnZl93cml0ZShCSVRNQVAgKnBwbGFuZSwgY2hhciAq
cHQpCnsKICAgdGV4dHByaW50ZihwcGxhbmUsIGZvbnQsIHh3LHl3LCBtYWtlY29sKDI1NSwyNTUs
MjU1KSwgIiVzIiwgcHQpOwogICB4dyArPSB0ZXh0X2xlbmd0aChmb250LCBwdCk7Cn0KCnZvaWQg
Z2Zfd3JpdGVsbihCSVRNQVAgKnBwbGFuZSwgY2hhciAqcHQpCnsKICAgdGV4dHByaW50ZihwcGxh
bmUsIGZvbnQsIHh3LHl3LCBtYWtlY29sKDI1NSwyNTUsMjU1KSwgIiVzIiwgcHQpOwogICB4dyA9
IDA7CiAgIHl3ICs9IHRleHRfaGVpZ2h0KGZvbnQpOwp9Cgp2b2lkIGdmX2NscyhCSVRNQVAgKnBw
bGFuZSkKewogICB4dyA9IDA7CiAgIHl3ID0gMDsKICAgY2xlYXJfYml0bWFwKHBwbGFuZSk7Cn0K
CnZvaWQgZ2Zfc2V0eHkoaW50IHgsIGludCB5KQp7CiAgIHh3ID0gKHggPT0gLTEpID8geHcgOiB4
OwogICB5dyA9ICh5ID09IC0xKSA/IHl3IDogeTsKfQoKIAoKCgoKCgoKCnZvaWQgdXBkYXRlX3Nj
cmVlbihCSVRNQVAgKmJibXApCnsKICAgc3RhdGljIGludCB0aW1lcj0wLGNzPTA7CiAgIHN0YXRp
YyBpbnQga2V5PTAsbGtleT0weGZmOwogICBpbnQgaTsKCgogICAgCgoKCgogICB3aGlsZSAodCA8
ICh0aW1lciArIChpbnRlcnJ1cHQvZnJhbWVfcmF0ZSkpKSB7fQogICB0aW1lciA9IHQ7CgogICAg
CgoKICAgaWYgKGNzKysgJiAxKSB7CiAgICAgIGkgPSBwb3J0aW4uc2NhbigpIF4gMHhmZjsKICAg
ICAga2V5ID0gKGkgXiBsa2V5KSAmIGxrZXk7CiAgICAgIGxrZXkgPSBpOwogICAgICBpZiAoa2V5
ICYgMSkgewoJIGFjY291bnQuYWRkX2NyZWRpdHMoMTApOwoJIGFjY291bnQuYWRkX21ldGVyX2lu
KDEwKTsKICAgICAgfQogICB9CgogICBzaG93X21vdXNlKF9fbnVsbCApOwogICBhY3F1aXJlX3Nj
cmVlbigpOwogICBibGl0KGJibXAsIHNjcmVlbiwgMCwwLCAwLDAsIChnZnhfZHJpdmVyID8gZ2Z4
X2RyaXZlci0+dyA6IDApICwoZ2Z4X2RyaXZlciA/IGdmeF9kcml2ZXItPmggOiAwKSApOwogICBy
ZWxlYXNlX3NjcmVlbigpOwp9CgoKCgogCgoKCgp2b2lkIGRlbGF5X3NjcmVlbihCSVRNQVAgKmJi
bXAsIGludCBpKQp7CiAgIGZvcig7aT4wO2ktLSkgdXBkYXRlX3NjcmVlbihiYm1wKTsKfQoKCgp2
b2lkIHN1YnN0X2JtcF9jb2xvcihCSVRNQVAgKmJtcCwgaW50IHNyY19jb2wsIGludCBkZXN0X2Nv
bCkKewogICBpbnQgeD0wLHk9MDsKCiAgIGRyYXdpbmdfbW9kZSgwICwgX19udWxsICwgMCwgMCk7
CgogICBmb3IgKHggPSAwOyB4IDwgYm1wLT53OyB4KyspCiAgICAgIGZvciAoeSA9IDA7IHkgPCBi
bXAtPmg7IHkrKykKCSBpZiAoZ2V0cGl4ZWwoYm1wLCB4LCB5KSA9PSBzcmNfY29sKQoJICAgIHB1
dHBpeGVsKGJtcCwgeCwgeSwgZGVzdF9jb2wpOwp9CgoKCmludCBmaXhfd2luX3RvX2FsbGVnX2Nv
bChpbnQgY29sKQp7CiAgIGludCByPTAsZz0wLGI9MDsKCiAgIHIgPSAoY29sICYgMHgwMDAwZmYp
IDw8IDE2OwogICBnID0gKGNvbCAmIDB4MDBmZjAwKTsKICAgYiA9IChjb2wgJiAweGZmMDAwMCkg
Pj4gMTY7CgkJCQkJCQkgIAogICByZXR1cm4gKCByIHwgZyB8IGIpOwp9CgoKCiAKCgoKCkJJVE1B
UCAqY3JlYXRlX2JpdG1hcF9mcm9tX2RhdGZpbGUoREFUQUZJTEUgKmRmLCBpbnQgaW5kZXgsIGlu
dCBjb2xvcl9kZXB0aCkKewogICBpbnQgdz0wLGg9MDsKICAgc3RhdGljIEJJVE1BUCAqYm1wPSBf
X251bGwgOwogICBCSVRNQVAgKnRlbXA9IF9fbnVsbCA7CgogICB3ID0gKChCSVRNQVAgKilkZltp
bmRleF0uZGF0KS0+dzsKICAgaCA9ICgoQklUTUFQICopZGZbaW5kZXhdLmRhdCktPmg7CgogICBi
bXAgPSBjcmVhdGVfYml0bWFwX2V4KGNvbG9yX2RlcHRoLCB3LCBoKTsKICAgdGVtcCA9IGNyZWF0
ZV9iaXRtYXBfZXgoY29sb3JfZGVwdGgsIHcsIGgpOwogICBjbGVhcl90b19jb2xvcihibXAsIGJp
dG1hcF9tYXNrX2NvbG9yKGJtcCkpOwoKICAgIAogICBibGl0KCgoQklUTUFQICopIGRmW2luZGV4
XS5kYXQpLCB0ZW1wLCAwLDAsMCwwLCB3LGgpOwogICByb3RhdGVfc3ByaXRlKGJtcCwgdGVtcCwg
MCwwLCAwKTsKCiAgIGRlc3Ryb3lfYml0bWFwKHRlbXApOwogICByZXR1cm4oYm1wKTsKfQoKCgoK
IAoKCgoKCgoKdm9pZCByb3RhdGVfc3ByaXRlKEJJVE1BUCAqYm1wRCwgQklUTUFQICpibXBTLCBp
bnQgeCwgaW50IHksIGludCByLCBpbnQgY29sb3JfZGVwdGgpCnsKICAgQklUTUFQICpibXBzOwoK
ICAgYm1wcyA9IGNyZWF0ZV9iaXRtYXBfZXgoY29sb3JfZGVwdGgsIGJtcFMtPncsIGJtcFMtPmgp
OwogICBibGl0KGJtcFMsIGJtcHMsIDAsMCwwLDAsIGJtcFMtPncsIGJtcFMtPmgpOwogICByb3Rh
dGVfc3ByaXRlKGJtcEQsIGJtcHMsIHgsIHksIHIpOwogICBkZXN0cm95X2JpdG1hcChibXBzKTsK
fQoKCgp2b2lkIGFkanVzdF94eV9iaXRtYXAoQklUTUFQICpzcHJpdGUsIGludCB4LCBpbnQgeSkK
ewogICBpbnQgYz0wOwogICBCSVRNQVAgKnNjcj0gX19udWxsIDsKCiAgIHNjciA9IGNyZWF0ZV9i
aXRtYXAoKGdmeF9kcml2ZXIgPyBnZnhfZHJpdmVyLT53IDogMCkgLChnZnhfZHJpdmVyID8gZ2Z4
X2RyaXZlci0+aCA6IDApICk7CiAgIGJsaXQgKHNjcmVlbixzY3IsIDAsMCwwLDAsIChnZnhfZHJp
dmVyID8gZ2Z4X2RyaXZlci0+dyA6IDApICwgKGdmeF9kcml2ZXIgPyBnZnhfZHJpdmVyLT5oIDog
MCkgKTsKICAgd2hpbGUgKHRydWUpIHsKICAgICAgYmxpdCAoc2NyLCBzY3JlZW4sIDAsMCwwLDAs
IChnZnhfZHJpdmVyID8gZ2Z4X2RyaXZlci0+dyA6IDApICwgKGdmeF9kcml2ZXIgPyBnZnhfZHJp
dmVyLT5oIDogMCkgKTsKICAgICAgdGV4dF9tb2RlKG1ha2Vjb2woMCwwLDI1NSkpOwogICAgICB0
ZXh0cHJpbnRmKHNjcmVlbiwgZm9udCwgOCw4LCAtMSwgIiVkICVkICIsIHgsIHkpOwogICAgICBy
b3RhdGVfc3ByaXRlKHNjcmVlbiwgc3ByaXRlLCB4LCB5LCAwKTsKCiAgICAgIGMgPSBwb3J0aW4u
cmVhZCgpOwogICAgICBpZiAoYyA9PSA1OSApICAgcmV0dXJuOwogICAgICBpZiAoYyA9PSA4NCAp
ICAgIHktLTsKICAgICAgaWYgKGMgPT0gODUgKSAgeSsrOwogICAgICBpZiAoYyA9PSA4MiApICB4
LS07CiAgICAgIGlmIChjID09IDgzICkgeCsrOwogICB9CgogICBkZXN0cm95X2JpdG1hcChzY3Ip
Owp9CgoKCnZvaWQgYWRqdXN0X3h5X3RleHQoQklUTUFQICpwbGFuZSwgRk9OVCAqZm9udGMsIGNo
YXIgKnN0LCBpbnQgeCwgaW50IHkpCnsKICAgaW50IGM9MDsKCiAgIHdoaWxlICh0cnVlKSB7Cgog
ICAgICBibGl0IChwbGFuZSwgc2NyZWVuLCAwLDAsMCwwLCAoZ2Z4X2RyaXZlciA/IGdmeF9kcml2
ZXItPncgOiAwKSAsIChnZnhfZHJpdmVyID8gZ2Z4X2RyaXZlci0+aCA6IDApICk7CiAgICAgIHRl
eHRfbW9kZShtYWtlY29sKDAsMCwyNTUpKTsKICAgICAgdGV4dHByaW50ZihzY3JlZW4sIGZvbnQs
IDgsOCwgLTEsICIlZCAlZCAiLCB4LCB5KTsKCiAgICAgIHRleHRvdXRfY2VudHJlKHNjcmVlbiwg
Zm9udGMsIHN0LCB4LCB5LCAwKTsKCiAgICAgIGMgPSBwb3J0aW4ucmVhZCgpOwogICAgICBpZiAo
YyA9PSA1OSApICAgcmV0dXJuOwogICAgICBpZiAoYyA9PSA4NCApICAgIHktLTsKICAgICAgaWYg
KGMgPT0gODUgKSAgeSsrOwogICAgICBpZiAoYyA9PSA4MiApICB4LS07CiAgICAgIGlmIChjID09
IDgzICkgeCsrOwoKICAgfQp9CgoKCiAKCgoKCmJvb2wgY291bGRfc2hvdyhpbnQgcykKewogICBi
b29sIHNob3dub3c9ZmFsc2U7CgoJaWYgKHMgPiAyMDAwKSBzaG93bm93ID0gKChzICYgMHgwZikg
PT0gMHgwZikgPyB0cnVlIDogZmFsc2U7CiAgIGVsc2UgaWYgKHMgPiAxMDAwKSBzaG93bm93ID0g
KChzICYgMHgwNykgPT0gMHgwNykgPyB0cnVlIDogZmFsc2U7CiAgIGVsc2UgaWYgKHMgPiAgNTAw
KSBzaG93bm93ID0gKChzICYgMHgwMykgPT0gMHgwMykgPyB0cnVlIDogZmFsc2U7CiAgIGVsc2Ug
aWYgKHMgPiAgMjAwKSBzaG93bm93ID0gKChzICYgMHgwMSkgPT0gMHgwMSkgPyB0cnVlIDogZmFs
c2U7CiAgIGVsc2UgaWYgKHMgPD0gMjAwKSBzaG93bm93ID0gdHJ1ZTsKICAgZWxzZSBzaG93bm93
ID0gZmFsc2U7CgogICAgCiAgIHJldHVybih0cnVlKTsgIAp9CgoKCiAKCgoKCgpib29sIHBlcmNl
bnRfY2hhbmNlKGludCB2YWx1ZSkKewogICByZXR1cm4gKChyYW5kKCklMTAwMCkgPiAodmFsdWUq
MTApKSA/IGZhbHNlIDogdHJ1ZTsKfQoKCgogCgoKCgppbnQgcGxheV92b2ljZShjb25zdCBTQU1Q
TEUgKnNwbCwgaW50IHZvbCwgaW50IHBhbiwgaW50IGZyZXEsIGludCBsb29wKQp7CiAgIGludCB2
b2ljZT0wOwoKICAgdm9pY2UgPSBhbGxvY2F0ZV92b2ljZShzcGwpOwoKICAgdm9pY2Vfc2V0X3Bv
c2l0aW9uKHZvaWNlLCAwKTsKICAgdm9pY2Vfc2V0X3ZvbHVtZSh2b2ljZSwgdm9sKTsKICAgdm9p
Y2Vfc2V0X3Bhbih2b2ljZSwgcGFuKTsKICAgdm9pY2Vfc2V0X2ZyZXF1ZW5jeSh2b2ljZSwgKGZy
ZXEvMTAwMCkgKiB2b2ljZV9nZXRfZnJlcXVlbmN5KHZvaWNlKSk7CiAgIHZvaWNlX3NldF9wbGF5
bW9kZSh2b2ljZSwgIWxvb3AgPyAwICA6IDEgKTsKCiAgIHZvaWNlX3N0YXJ0KHZvaWNlKTsKCiAg
IHJldHVybih2b2ljZSk7Cn0KCgoKIAoKCgoKCnZvaWQgX2dlbmVyYXRlXzMzMl9wYWxldHRlKFBB
TEVUVEUgcGFsKQp7CiAgIGludCBjPTA7CiAKICAgZm9yIChjPTA7IGM8MjU2OyBjKyspIHsKICAg
ICAgcGFsW2NdLnIgPSAoKGM+PjUpJjcpICogNjMvNzsKICAgICAgcGFsW2NdLmcgPSAoKGM+PjIp
JjcpICogNjMvNzsKICAgICAgcGFsW2NdLmIgPSAoYyYzKSAqIDYzLzM7CiAgIH0KfQogCgoKIAoK
CnZvaWQgZ2VuZXJhdGVfMzMyX2JpdG1hcF9wYWxldHRlKHZvaWQpCnsKICAgQklUTUFQICpibXBw
YWw9IF9fbnVsbCA7CiAgIFBBTEVUVEUgcGFsOwoKICAgYm1wcGFsID0gY3JlYXRlX2JpdG1hcF9l
eCg4LCAxMDAsMzApOwogICBjbGVhcl90b19jb2xvcihibXBwYWwsIG1ha2Vjb2woMzIsMzIsMjU1
KSk7CiAgIGFhdGV4dG91dF9jZW50ZXIoYm1wcGFsLCBmb250LCAiMzMyIFBBTEVUVEUiLCA1MCwx
MiwgbWFrZWNvbCgyNTUsMjU1LDI1NSkpOwogICBfZ2VuZXJhdGVfMzMyX3BhbGV0dGUocGFsKTsK
ICAgc2F2ZV9iaXRtYXAoInBhbDMzMi5ibXAiLCBibXBwYWwsIHBhbCk7CiAgIGRlc3Ryb3lfYml0
bWFwKGJtcHBhbCk7Cn0KCgoKCiAKCgoKCnZvaWQgcHJvZmlsZV9tYXRoKHZvaWQpCnsKICAgdW5z
aWduZWQgdm9sYXRpbGUgaW50IGl0PTA7CiAgIHZvbGF0aWxlIGZsb2F0IGZ0PTAuMDsKICAgZml4
IHh0PTA7CgogICBzZXRfZ2Z4X21vZGUoLTEgLCAwLCAwLCAwLCAwKTsKCiAgIGxvb3B6OgogICBp
dD0wOwogICB0PTA7IHdoaWxlICh0PDUpIGl0PWl0ICsgMTsKICAgcHJpbnRmKCJpbnRlZ2VyLzht
cyAldVxuIiwgaXQpOwogCiAgIGZ0PTA7CiAgIHQ9MDsgd2hpbGUgKHQ8NSkgZnQ9ZnQgKyAxOwog
ICBwcmludGYoImludGVnZXIvOG1zICVmXG4iLCBmdCk7CiAKICAgeHQgPSAwOwogICB0PTA7IHdo
aWxlICh0PDUpIHh0PXh0ICsgMTsKICAgcHJpbnRmKCJpbnRlZ2VyLzhtcyAldVxuIiwgZml4dG9p
KHh0KSk7CgogICBpZiAocmVhZGtleSgpPj44IT0gNTkgKSBnb3RvIGxvb3B6Owp9CgoKCiAKCgpj
aGFyICp0cmltKGNoYXIgKnN0KQp7CglpbnQgbGVuOwoJc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBs
b2NrPTA7CgkKCXB0aHJlYWRfbXV0ZXhfbG9jayhsb2NrKTsKCWZvciAobGVuPXN0cmxlbihzdCk7
IAoJICAgICBsZW4+MCAmJiAoc3RbbGVuLTFdPT0nICcgfHwgc3RbbGVuLTFdPT0nXHQnIHx8IHN0
W2xlbi0xXT09J1xuJyk7CgkgICAgIGxlbi0tKSAKCQlzdFtsZW4tMV09J1wwMDAnOwoJcmV0dXJu
IChzdCk7Cn0KCgoKIAoKCmNoYXIgKnNwYWNlKGludCBuKQp7CglzdGF0aWMgY2hhciBzdFsyNTVd
OwoJaW50IGk9MDsKICAgIAoJc3RbMF09J1wwMDAnOwoJZm9yIChpPTA7IGk8bjsgaSsrKSB7CgkJ
c3RyY2F0KHN0LCAiICIpOyAgICAKCX0KCXJldHVybihzdCk7Cn0KCgkJCQoJCQkJCgoKCgoKICAg
IAogICAgCiAgICAKICAgIAogICAgCiAgICAKICAgIAoKCgoKCgoK


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]