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] |
>Number: 2420 >Category: c >Synopsis: Internal compiler error received compiling mkreiserfs.c >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Mar 28 13:46:01 PST 2001 >Closed-Date: >Last-Modified: >Originator: Mark Post >Release: gcc version 2.95.2 19991024 (release) >Organization: >Environment: Slackware-like Linux/390 on IBM mainframe. >Description: Was attempting to compile reiserfs_utils-3.6.25-fsck-3.x.0b, and the compile died on the first module, mkreiserfs.c. The generated command to perform the compilation was: cc -Wall -c -O2 -g -I/tmp/build-reiserfs-3.6.25-s390-1/reiserfs_utils-3.6.25-fsck-3.x.0b/utils/include -I/tmp/build-reiserfs-3.6.25-s390-1/reiserfs_utils-3.6.25-fsck-3.x.0b/utils/../../../include/linux -I- mkreiserfs.c The output from the command was: mkreiserfs.c: In function `make_root_block': mkreiserfs.c:261: invalid lvalue in assignment mkreiserfs.c:261: invalid lvalue in assignment mkreiserfs.c:277: Internal compiler error in `emit_no_conflict_block', at optabs.c:2798 Please submit a full bug report. See <URL:http://www.gnu.org/software/gcc/faq.html#bugreport> for instructions. make[2]: *** [mkreiserfs.o] Error 1 make[2]: Leaving directory `/tmp/build-reiserfs-3.6.25-s390-1/reiserfs_utils-3.6.25-fsck-3.x.0b/utils/mkreiserfs' make[1]: *** [all] Error 2 make[1]: Leaving directory `/tmp/build-reiserfs-3.6.25-s390-1/reiserfs_utils-3.6.25-fsck-3.x.0b/utils' make: *** [all] Error 2 It fails consistently. >How-To-Repeat: Unpack the source code to /tmp cd reiserfs_utils-3.6.25-fsck-3.x.0b/ make That should do it (if you have an S/390). >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="mkreiserfs.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mkreiserfs.i" IyAxICJta3JlaXNlcmZzLmMiCiAKCgoKIAoKCgogCgojIDEgIi91c3IvaW5jbHVkZS9zdGRpby5o IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1 cmVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoK CiAKCgoKCgogCgoKCiAKCgoKCgoKCiAKIyAxMzggIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAz CgoKIAoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDE5NiAi L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCiAKCgoKIAoKCgoKCgoKCiAKCgoKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5o IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgogCgoKCgoKCgoKIAoKCgoK IyA3MSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzCgoKIAoKCgoKCgoKIAoKCgojIDEwMyAi L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoK CiAKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKCgojIDI1MCAiL3Vzci9pbmNs dWRlL2ZlYXR1cmVzLmgiIDIgMwoKCiAKCgoKCgoKCgogCgoKCgoKIAoKIAoKCgoKCgoKCiMgMSAi L3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMg Mjc4ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMiAzCgoKCgojIDI3ICIvdXNyL2luY2x1ZGUv c3RkaW8uaCIgMiAzCgoKIAoKCgojIDEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUt bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9s aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg MwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJl LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoK CgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJl LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBsb25nIHVuc2lnbmVkIGludCBzaXplX3Q7CgoKCgoK CgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNs YWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xp Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz CgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45 NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAzMyAi L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw LXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMg MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS92 YS1zMzkwLmgiIDEgMwogCgoKCgp0eXBlZGVmIHN0cnVjdCBfX3ZhX2xpc3RfdGFnIHsKICBpbnQg Z3ByOyAgICAgICAgICAgICAgICAgICAgICAgCgoKICBpbnQgZnByOyAgICAgICAgICAgICAgICAg ICAgICAgCgoKICBjaGFyICppbmNvbWluZ19hcmdzX2FyZWE7ICAgICAgCgogIGNoYXIgKnJlZ19z YXZlX2FyZWE7ICAgICAgICAgICAKCn0gX19nbnVjX3ZhX2xpc3RbMV0sKl9fZ251Y192YV9saXN0 cDsKCgogCgojIDE2NiAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1 LjIvaW5jbHVkZS92YS1zMzkwLmgiIDMKCgojIDY2ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xh Y2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGFyZy5oIiAyIDMKCiMgMTI3ICIvdXNyL2xp Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGFyZy5oIiAz CgoKCgoKCgoKCgoKCgoKCgoKCgojIDIxMyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2Fy ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKIyAzOCAiL3Vzci9pbmNsdWRl L3N0ZGlvLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiAKCgoK CgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNr d2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIv dXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl Zi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFj a3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoK CgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFj a3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91 c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVm LmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2Fy ZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2Mt bGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoK IAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2lu Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyOSAiL3Vzci9p bmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2No YXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGlu dCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX191X2xvbmc7CgpfX2V4dGVuc2lvbl9f IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VfcXVhZF90OwpfX2V4dGVuc2lvbl9f IHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKIyA0OCAiL3Vzci9pbmNsdWRlL2JpdHMv dHlwZXMuaCIgMwoKdHlwZWRlZiBzaWduZWQgY2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25l ZCBjaGFyIF9fdWludDhfdDsKdHlwZWRlZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlw ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9f aW50MzJfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCl9fZXh0ZW5zaW9uX18g dHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIGludCBfX2ludDY0X3Q7Cl9fZXh0ZW5zaW9uX18gdHlw ZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fdWludDY0X3Q7Cgp0eXBlZGVmIF9fcXVhZF90 ICpfX3FhZGRyX3Q7Cgp0eXBlZGVmIF9fdV9xdWFkX3QgX19kZXZfdDsJCSAKdHlwZWRlZiBfX3Vf aW50IF9fdWlkX3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX2dpZF90OwkJIAp0eXBlZGVmIF9fdV9s b25nIF9faW5vX3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX21vZGVfdDsJCSAKdHlwZWRlZiBfX3Vf aW50IF9fbmxpbmtfdDsgCQkgCnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsJCSAKdHlwZWRlZiBf X3F1YWRfdCBfX2xvZmZfdDsJCSAKdHlwZWRlZiBpbnQgX19waWRfdDsJCQkgCnR5cGVkZWYgaW50 IF9fc3NpemVfdDsJCQkgCnR5cGVkZWYgX191X2xvbmcgX19ybGltX3Q7CQkgCnR5cGVkZWYgX191 X3F1YWRfdCBfX3JsaW02NF90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19pZF90OwkJCSAKCnR5cGVk ZWYgc3RydWN0CiAgewogICAgaW50IF9fdmFsWzJdOwogIH0gX19mc2lkX3Q7CQkJCSAKCiAKdHlw ZWRlZiBpbnQgX19kYWRkcl90OwkJCSAKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYg bG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19zd2Jsa190OwkJIAoMCnR5cGVk ZWYgbG9uZyBpbnQgX19jbG9ja190OwoKIAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZmRf bWFzazsKCiAKCgogCgoKCgogCnR5cGVkZWYgc3RydWN0CiAgewogICAgIAoKCgoKCiAgICBfX2Zk X21hc2sgX19mZHNfYml0c1sxMDI0ICAvICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKSBdOwoKCiAg fSBfX2ZkX3NldDsKCgp0eXBlZGVmIGludCBfX2tleV90OwoKIAp0eXBlZGVmIHVuc2lnbmVkIHNo b3J0IGludCBfX2lwY19waWRfdDsKCgogCgogCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsK dHlwZWRlZiBfX3F1YWRfdCBfX2Jsa2NudDY0X3Q7CgogCnR5cGVkZWYgX191X2xvbmcgX19mc2Js a2NudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgogCnR5cGVkZWYgX191 X2xvbmcgX19mc2ZpbGNudF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgX19mc2ZpbGNudDY0X3Q7Cgog CnR5cGVkZWYgX191X2xvbmcgX19pbm82NF90OwoKIAp0eXBlZGVmIF9fbG9mZl90IF9fb2ZmNjRf dDsKCiAKdHlwZWRlZiBsb25nIGludCBfX3Rfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9u ZyBpbnQgX190X3VzY2FsYXJfdDsKCiAKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgogCgoKCgoK IyA0MCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCgoKIAp0eXBlZGVmIHN0cnVjdCBf SU9fRklMRSBGSUxFOwoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDEgMwogCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIg MSAzCiAKCgoKCgogCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1s aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xp Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz CgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUt bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoK CgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUt bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGli L2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMK CgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJfdDsKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgIHdpbnRfdDsKCgoKCiAKCiAKCiMgMzE3ICIvdXNy L2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5o IiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTQgIi91c3IvaW5jbHVkZS9fR19jb25m aWcuaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgaW50IF9HX2ludDE2X3QgX19h dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgaW50IF9HX2ludDMyX3Qg X19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50 IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVm IHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lf XykpKTsKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgMzAg Ii91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiMgMSAiL3Vzci9s aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRhcmcuaCIg MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8y Ljk1LjIvaW5jbHVkZS92YS1zMzkwLmgiIDEgMwogCgojIDE4ICIvdXNyL2xpYi9nY2MtbGliL3Mz OTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3ZhLXMzOTAuaCIgMwoKCiAKCiMgMTY2 ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3Zh LXMzOTAuaCIgMwoKCiMgNjYgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgv Mi45NS4yL2luY2x1ZGUvc3RkYXJnLmgiIDIgMwoKIyAxMjcgIi91c3IvbGliL2djYy1saWIvczM5 MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkYXJnLmgiIDMKCgoKCgoKCgoKCgoK CgoKCgoKCiMgMjEzICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUu Mi9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoKCgojIDQ4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAz CgoKCgoKCgojIDY3ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCiAKCgoKCgoKCgoKCgoKCgoK CgojIDk4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKc3RydWN0IF9JT19qdW1wX3Q7ICBzdHJ1 Y3QgX0lPX0ZJTEU7CgogCgoKCgoKCgp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKIAoKc3Ry dWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lP X0ZJTEUgKl9zYnVmOwogICAKCiAgIAogIGludCBfcG9zOwojIDE4NiAiL3Vzci9pbmNsdWRlL2xp YmlvLmgiIDMKCn07CgpzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CQkgCgoKICAgCiAg IAogIGNoYXIqIF9JT19yZWFkX3B0cjsJIAogIGNoYXIqIF9JT19yZWFkX2VuZDsJIAogIGNoYXIq IF9JT19yZWFkX2Jhc2U7CSAKICBjaGFyKiBfSU9fd3JpdGVfYmFzZTsJIAogIGNoYXIqIF9JT193 cml0ZV9wdHI7CSAKICBjaGFyKiBfSU9fd3JpdGVfZW5kOwkgCiAgY2hhciogX0lPX2J1Zl9iYXNl OwkgCiAgY2hhciogX0lPX2J1Zl9lbmQ7CSAKICAgCiAgY2hhciAqX0lPX3NhdmVfYmFzZTsgIAog IGNoYXIgKl9JT19iYWNrdXBfYmFzZTsgICAKICBjaGFyICpfSU9fc2F2ZV9lbmQ7ICAKCiAgc3Ry dWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAg aW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgICBfb2xkX29mZnNldDsgIAoK CiAgIAogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVf b2Zmc2V0OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKICAgCgogIF9JT19sb2NrX3QgKl9sb2NrOwoK CgoKCgoKCiAgX19vZmY2NF90ICAgX29mZnNldDsKICAgCiAgaW50IF91bnVzZWQyWzE2XTsKCn07 CgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgX0lPX0ZJTEU7CgoKc3RydWN0IF9JT19GSUxFX3Bs dXM7CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0 cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklM RV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKCgoKCgoKCgoKCgogCgogCgp0eXBlZGVmIF9fc3NpemVf dCBfX2lvX3JlYWRfZm4gICh2b2lkICogIF9fY29va2llLCBjaGFyICpfX2J1ZiwKCQkJCSAgICAg ICBzaXplX3QgX19uYnl0ZXMpICA7CgogCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0 ZV9mbiAgKHZvaWQgKiAgX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCgkJCQkgICAgICBz aXplX3QgX19uKSAgOwoKIAoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAgKHZvaWQgKiAg X19jb29raWUsIF9fb2ZmX3QgICBfX3BvcywgaW50IF9fdykgIDsKCiAKdHlwZWRlZiBpbnQgX19p b19jbG9zZV9mbiAgKHZvaWQgKiAgX19jb29raWUpICA7CgoKIyAzMTEgIi91c3IvaW5jbHVkZS9s aWJpby5oIiAzCgoKCgoKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93ICAoX0lPX0ZJTEUgKikgICAg OwpleHRlcm4gaW50IF9fdWZsb3cgIChfSU9fRklMRSAqKSAgICA7CmV4dGVybiBpbnQgX19vdmVy ZmxvdyAgKF9JT19GSUxFICosIGludCkgICAgOwoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBf SU9fZ2V0YyAgKF9JT19GSUxFICpfX2ZwKSAgICA7CmV4dGVybiBpbnQgX0lPX3B1dGMgIChpbnQg X19jLCBfSU9fRklMRSAqX19mcCkgICAgOwpleHRlcm4gaW50IF9JT19mZW9mICAoX0lPX0ZJTEUg Kl9fZnApICAgIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yICAoX0lPX0ZJTEUgKl9fZnApICAgIDsK CmV4dGVybiBpbnQgX0lPX3BlZWtjX2xvY2tlZCAgKF9JT19GSUxFICpfX2ZwKSAgICA7CgogCgoK CmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgICA7CmV4dGVybiB2b2lk IF9JT19mdW5sb2NrZmlsZSAgKF9JT19GSUxFICopICAgIDsKZXh0ZXJuIGludCBfSU9fZnRyeWxv Y2tmaWxlICAoX0lPX0ZJTEUgKikgICAgOwoKCgoKCgoKCgoKCgpleHRlcm4gaW50IF9JT192ZnNj YW5mICAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0cmljdCwKCQkJ ICAgICBfX2dudWNfdmFfbGlzdCAsIGludCAqX19yZXN0cmljdCkgICAgOwpleHRlcm4gaW50IF9J T192ZnByaW50ZiAgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0 LAoJCQkgICAgICBfX2dudWNfdmFfbGlzdCApICAgIDsKZXh0ZXJuIF9fc3NpemVfdCAgIF9JT19w YWRuICAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QgICkgICAgOwpleHRlcm4gc2l6ZV90ICAg X0lPX3NnZXRuICAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QgICkgICAgOwoKZXh0ZXJuIF9f b2ZmNjRfdCAgIF9JT19zZWVrb2ZmICAoX0lPX0ZJTEUgKiwgX19vZmY2NF90ICAsIGludCwgaW50 KSAgICA7CmV4dGVybiBfX29mZjY0X3QgICBfSU9fc2Vla3BvcyAgKF9JT19GSUxFICosIF9fb2Zm NjRfdCAgLCBpbnQpICAgIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9hcmVhICAoX0lP X0ZJTEUgKikgICAgOwoKCgoKCgojIDU3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKIAoK dHlwZWRlZiBfX29mZl90ICBmcG9zX3Q7CgoKCgoKCgogCgoKCgoKIAoKCgoKCiAKCgoKCgoKIAoK CgoKCgoKIAoKCgoKIAoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgi IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMTEwICIvdXNyL2lu Y2x1ZGUvc3RkaW8uaCIgMiAzCgoKCiAKZXh0ZXJuIEZJTEUgKnN0ZGluOwkJIApleHRlcm4gRklM RSAqc3Rkb3V0OwkJIApleHRlcm4gRklMRSAqc3RkZXJyOwkJIAogCgoKCgoKIApleHRlcm4gaW50 IHJlbW92ZSAgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgICAgOwogCmV4dGVybiBpbnQgcmVu YW1lICAoX19jb25zdCBjaGFyICpfX29sZCwgX19jb25zdCBjaGFyICpfX25ldykgICAgOwoKCiAK CmV4dGVybiBGSUxFICp0bXBmaWxlICAodm9pZCkgICAgOwoKCgoKCgoKCgoKIApleHRlcm4gY2hh ciAqdG1wbmFtICAoY2hhciAqX19zKSAgICA7CgoKIAoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yICAo Y2hhciAqX19zKSAgICA7CgoKCgogCgoKCgoKCmV4dGVybiBjaGFyICp0ZW1wbmFtICAoX19jb25z dCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkgICAgOwoKCgogCmV4dGVybiBpbnQg ZmNsb3NlICAoRklMRSAqX19zdHJlYW0pICAgIDsKIApleHRlcm4gaW50IGZmbHVzaCAgKEZJTEUg Kl9fc3RyZWFtKSAgICA7CgoKIApleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAgKEZJTEUgKl9f c3RyZWFtKSAgICA7CgoKCgoKCgoKCiAKZXh0ZXJuIEZJTEUgKmZvcGVuICAoX19jb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCgkJCSBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19t b2RlcykgICAgOwogCmV4dGVybiBGSUxFICpmcmVvcGVuICAoX19jb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fZmlsZW5hbWUsCgkJCSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAoJ CQkgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CiMgMjAxICIvdXNyL2luY2x1ZGUv c3RkaW8uaCIgMwoKCgoKCgoKCgoKIApleHRlcm4gRklMRSAqZmRvcGVuICAoaW50IF9fZmQsIF9f Y29uc3QgY2hhciAqX19tb2RlcykgICAgOwoKCiMgMjI3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg MwoKCgogCgpleHRlcm4gdm9pZCBzZXRidWYgIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBj aGFyICpfX3Jlc3RyaWN0IF9fYnVmKSAgICA7CiAKCgpleHRlcm4gaW50IHNldHZidWYgIChGSUxF ICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQkgaW50IF9f bW9kZXMsIHNpemVfdCBfX24pICAgIDsKCgogCgpleHRlcm4gdm9pZCBzZXRidWZmZXIgIChGSUxF ICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQkgICAgc2l6 ZV90IF9fc2l6ZSkgICAgOwoKIApleHRlcm4gdm9pZCBzZXRsaW5lYnVmICAoRklMRSAqX19zdHJl YW0pICAgIDsKCgoKIApleHRlcm4gaW50IGZwcmludGYgIChGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry ZWFtLAoJCQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICAgIDsKIApl eHRlcm4gaW50IHByaW50ZiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4u KSAgICA7CiAKZXh0ZXJuIGludCBzcHJpbnRmICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSBf X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwoKIApleHRlcm4gaW50 IHZmcHJpbnRmICAoRklMRSAqX19yZXN0cmljdCBfX3MsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fZm9ybWF0LAoJCQkgIF9fZ251Y192YV9saXN0ICBfX2FyZykgICAgOwogCmV4dGVy biBpbnQgdnByaW50ZiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJIF9f Z251Y192YV9saXN0ICBfX2FyZykgICAgOwogCmV4dGVybiBpbnQgdnNwcmludGYgIChjaGFyICpf X3Jlc3RyaWN0IF9fcywKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJ CSAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICA7CgoKIApleHRlcm4gaW50IHNucHJpbnRmICAo Y2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJICBfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y bWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IF9fdnNucHJpbnRmICAoY2hh ciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJICAgICBfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSAgICAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICAK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKZXh0 ZXJuIGludCB2c25wcmludGYgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVu LAoJCQkgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCSAgIF9fZ251Y192 YV9saXN0ICBfX2FyZykgICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp bnRmX18sIDMsIDApKSk7CgoKIyAzMDYgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCiAKZXh0 ZXJuIGludCBmc2NhbmYgIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAoJCQlfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwogCmV4dGVybiBpbnQgc2NhbmYgIChf X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwogCmV4dGVybiBpbnQg c3NjYW5mICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICAgIDsKCiMgMzM0ICIvdXNyL2luY2x1ZGUvc3RkaW8u aCIgMwoKCgogCmV4dGVybiBpbnQgZmdldGMgIChGSUxFICpfX3N0cmVhbSkgICAgOwpleHRlcm4g aW50IGdldGMgIChGSUxFICpfX3N0cmVhbSkgICAgOwoKIApleHRlcm4gaW50IGdldGNoYXIgICh2 b2lkKSAgICA7CgogCgoKCgogCmV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAgKEZJTEUgKl9fc3Ry ZWFtKSAgICA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAgKHZvaWQpICAgIDsKCgoKIApl eHRlcm4gaW50IGZnZXRjX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICAgIDsKCgoKIApleHRl cm4gaW50IGZwdXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICAgIDsKZXh0ZXJuIGludCBw dXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICAgIDsKCiAKZXh0ZXJuIGludCBwdXRjaGFy ICAoaW50IF9fYykgICAgOwoKIAoKCgoKIApleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkICAoaW50 IF9fYywgRklMRSAqX19zdHJlYW0pICAgIDsKCgoKIApleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQg IChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgICAgOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2Nr ZWQgIChpbnQgX19jKSAgICA7CgoKCgogCmV4dGVybiBpbnQgZ2V0dyAgKEZJTEUgKl9fc3RyZWFt KSAgICA7CgogCmV4dGVybiBpbnQgcHV0dyAgKGludCBfX3csIEZJTEUgKl9fc3RyZWFtKSAgICA7 CgoKCiAKZXh0ZXJuIGNoYXIgKmZnZXRzICAoY2hhciAqX19yZXN0cmljdCBfX3MsIGludCBfX24s CgkJCSBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CgoKCgoKCgogCgpleHRlcm4gY2hh ciAqZ2V0cyAgKGNoYXIgKl9fcykgICAgOwoKCiMgNDI0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg MwoKCgogCmV4dGVybiBpbnQgZnB1dHMgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJ CSAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CgoKCgoKCgogCmV4dGVybiBp bnQgcHV0cyAgKF9fY29uc3QgY2hhciAqX19zKSAgICA7CgoKIApleHRlcm4gaW50IHVuZ2V0YyAg KGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSAgICA7CgoKIApleHRlcm4gc2l6ZV90IGZyZWFkICAo dm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJICBzaXplX3QgX19uLCBG SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CiAKZXh0ZXJuIHNpemVfdCBmd3JpdGUgIChf X2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCgkJCSAgIHNpemVf dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKSAgICA7CgoKIApleHRlcm4gc2l6ZV90IGZyZWFk X3VubG9ja2VkICAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJCSAg IHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICAgIDsKZXh0ZXJuIHNpemVf dCBmd3JpdGVfdW5sb2NrZWQgIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsCgkJCQkg ICAgc2l6ZV90IF9fc2l6ZSwgc2l6ZV90IF9fbiwKCQkJCSAgICBGSUxFICpfX3Jlc3RyaWN0IF9f c3RyZWFtKSAgICA7CgoKCiAKZXh0ZXJuIGludCBmc2VlayAgKEZJTEUgKl9fc3RyZWFtLCBsb25n IGludCBfX29mZiwgaW50IF9fd2hlbmNlKSAgICA7CiAKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsICAo RklMRSAqX19zdHJlYW0pICAgIDsKIApleHRlcm4gdm9pZCByZXdpbmQgIChGSUxFICpfX3N0cmVh bSkgICAgOwoKIAoKCgoKIAoKCnR5cGVkZWYgX19vZmZfdCBvZmZfdDsKCgoKCgoKCgoKCgoKCgoK CgoKCgogCmV4dGVybiBpbnQgZmdldHBvcyAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCgkJ CSBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpICAgIDsKIApleHRlcm4gaW50IGZzZXRwb3MgIChG SUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSAgICA7CiMgNTIzICIvdXNyL2lu Y2x1ZGUvc3RkaW8uaCIgMwoKCiMgNTMzICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCiAKZXh0 ZXJuIHZvaWQgY2xlYXJlcnIgIChGSUxFICpfX3N0cmVhbSkgICAgOwogCmV4dGVybiBpbnQgZmVv ZiAgKEZJTEUgKl9fc3RyZWFtKSAgICA7CiAKZXh0ZXJuIGludCBmZXJyb3IgIChGSUxFICpfX3N0 cmVhbSkgICAgOwoKCiAKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQgIChGSUxFICpfX3N0 cmVhbSkgICAgOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgICAg OwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgICA7CgoKCiAK ZXh0ZXJuIHZvaWQgcGVycm9yICAoX19jb25zdCBjaGFyICpfX3MpICAgIDsKCiAKCgpleHRlcm4g aW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107 CgoKCgoKCgoKIApleHRlcm4gaW50IGZpbGVubyAgKEZJTEUgKl9fc3RyZWFtKSAgICA7CgoKCiAK ZXh0ZXJuIGludCBmaWxlbm9fdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgICAgOwoKCgoKCiAK ZXh0ZXJuIEZJTEUgKnBvcGVuICAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hh ciAqX19tb2RlcykgICAgOwoKIApleHRlcm4gaW50IHBjbG9zZSAgKEZJTEUgKl9fc3RyZWFtKSAg ICA7CgoKCgogCmV4dGVybiBjaGFyICpjdGVybWlkICAoY2hhciAqX19zKSAgICA7CgoKCgoKCgoK CiMgNjA3ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCgoKIAoKIApleHRlcm4gdm9pZCBmbG9j a2ZpbGUgIChGSUxFICpfX3N0cmVhbSkgICAgOwoKIAoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUg IChGSUxFICpfX3N0cmVhbSkgICAgOwoKIApleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAgKEZJTEUg Kl9fc3RyZWFtKSAgICA7CgoKCgoKCgoKCgogCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRp by5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKZXh0ZXJuIF9faW5saW5l ICBpbnQKdnByaW50ZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFf bGlzdCAgX19hcmcpICAKewogIHJldHVybiB2ZnByaW50ZiAoc3Rkb3V0ICwgX19mbXQsIF9fYXJn KTsKfQoKIApleHRlcm4gX19pbmxpbmUgIGludApnZXRjaGFyICh2b2lkKSAgCnsKICByZXR1cm4g X0lPX2dldGMgKHN0ZGluICk7Cn0KCgoKIApleHRlcm4gX19pbmxpbmUgIGludApnZXRjX3VubG9j a2VkIChGSUxFICpfX2ZwKSAgCnsKICByZXR1cm4gKCggX19mcCApLT5fSU9fcmVhZF9wdHIgPj0g KCBfX2ZwICktPl9JT19yZWFkX2VuZCA/IF9fdWZsb3cgKCBfX2ZwICkgOiAqKHVuc2lnbmVkIGNo YXIgKikgKCBfX2ZwICktPl9JT19yZWFkX3B0cisrKSA7Cn0KCiAKZXh0ZXJuIF9faW5saW5lICBp bnQKZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCkgIAp7CiAgcmV0dXJuICgoIHN0ZGluICApLT5fSU9f cmVhZF9wdHIgPj0gKCBzdGRpbiAgKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoIHN0ZGluICAp IDogKih1bnNpZ25lZCBjaGFyICopICggc3RkaW4gICktPl9JT19yZWFkX3B0cisrKSA7Cn0KCgoK IApleHRlcm4gX19pbmxpbmUgIGludApwdXRjaGFyIChpbnQgX19jKSAgCnsKICByZXR1cm4gX0lP X3B1dGMgKF9fYywgc3Rkb3V0ICk7Cn0KCgoKIApleHRlcm4gX19pbmxpbmUgIGludApmcHV0Y191 bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICAKewogIHJldHVybiAoKCggIF9fc3Ry ZWFtICktPl9JT193cml0ZV9wdHIgPj0gKCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX2VuZCkgPyBf X292ZXJmbG93ICggIF9fc3RyZWFtICwgKHVuc2lnbmVkIGNoYXIpICggX19jICkpIDogKHVuc2ln bmVkIGNoYXIpICgqKCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX3B0cisrID0gKCBfX2MgKSkpIDsK fQoKCgoKIApleHRlcm4gX19pbmxpbmUgIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxF ICpfX3N0cmVhbSkgIAp7CiAgcmV0dXJuICgoKCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX3B0ciA+ PSAoICBfX3N0cmVhbSApLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKCAgX19zdHJlYW0g LCAodW5zaWduZWQgY2hhcikgKCBfX2MgKSkgOiAodW5zaWduZWQgY2hhcikgKCooICBfX3N0cmVh bSApLT5fSU9fd3JpdGVfcHRyKysgPSAoIF9fYyApKSkgOwp9CgogCmV4dGVybiBfX2lubGluZSAg aW50CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpICAKewogIHJldHVybiAoKCggIHN0ZG91dCAg KS0+X0lPX3dyaXRlX3B0ciA+PSAoICBzdGRvdXQgICktPl9JT193cml0ZV9lbmQpID8gX19vdmVy ZmxvdyAoICBzdGRvdXQgICwgKHVuc2lnbmVkIGNoYXIpICggX19jICkpIDogKHVuc2lnbmVkIGNo YXIpICgqKCAgc3Rkb3V0ICApLT5fSU9fd3JpdGVfcHRyKysgPSAoIF9fYyApKSkgOwp9CgoKCgoK CgoKCgoKCgoKIApleHRlcm4gX19pbmxpbmUgIGludApmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0 cmVhbSkgIAp7CiAgcmV0dXJuICgoKCBfX3N0cmVhbSApLT5fZmxhZ3MgJiAweDEwICkgIT0gMCkg Owp9CgogCmV4dGVybiBfX2lubGluZSAgaW50CmZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJl YW0pICAKewogIHJldHVybiAoKCggX19zdHJlYW0gKS0+X2ZsYWdzICYgMHgyMCApICE9IDApIDsK fQoKCgoKCgogCgojIDE0OSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwoKCiMgMTY1ICIv dXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzCgoKIAoKIyA2MzUgIi91c3IvaW5jbHVkZS9zdGRp by5oIiAyIDMKCgoKIAoKCgoKIyAxMSAibWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVk ZS9zdHJpbmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKIAoKCiMgMSAi L3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRk ZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJl LWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEg Ii91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk ZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEg Ii91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk ZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUt bGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vz ci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYu aCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUu Mi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5 MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoK CgoKCgoKCgoKCgoKCgoKIyAzMyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKIApleHRl cm4gdm9pZCAqICBtZW1jcHkgICh2b2lkICogIF9fcmVzdHJpY3QgX19kZXN0LAoJCQkgICAgX19j b25zdCB2b2lkICogIF9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pICAgIDsKIAoKZXh0ZXJu IHZvaWQgKiAgbWVtbW92ZSAgKHZvaWQgKiAgX19kZXN0LCBfX2NvbnN0IHZvaWQgKiAgX19zcmMs CgkJCSAgICAgc2l6ZV90IF9fbikgICAgOwoKIAoKCgpleHRlcm4gdm9pZCAqICBtZW1jY3B5ICAo dm9pZCAqICBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICBpbnQgX19jLCBz aXplX3QgX19uKSAgICA7CgoKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtc2V0ICAodm9pZCAqICBfX3Ms IGludCBfX2MsIHNpemVfdCBfX24pICAgIDsKCiAKZXh0ZXJuIGludCBtZW1jbXAgIChfX2NvbnN0 IHZvaWQgKiAgX19zMSwgX19jb25zdCB2b2lkICogIF9fczIsCgkJCXNpemVfdCBfX24pICAgIDsK CiAKZXh0ZXJuIHZvaWQgKiAgbWVtY2hyICAoX19jb25zdCB2b2lkICogIF9fcywgaW50IF9fYywg c2l6ZV90IF9fbikgICAgOwoKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnN0cmNweSAgKGNoYXIgKl9f cmVzdHJpY3QgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykgICAg OwogCmV4dGVybiBjaGFyICpzdHJuY3B5ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAg IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwoKIApleHRl cm4gY2hhciAqc3RyY2F0ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgX19jb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fc3JjKSAgICA7CiAKZXh0ZXJuIGNoYXIgKnN0cm5jYXQgIChjaGFy ICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj LCBzaXplX3QgX19uKSAgICA7CgogCmV4dGVybiBpbnQgc3RyY21wICAoX19jb25zdCBjaGFyICpf X3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKIApleHRlcm4gaW50IHN0cm5jbXAgIChfX2Nv bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikgICAgOwoKIApl eHRlcm4gaW50IHN0cmNvbGwgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19z MikgICAgOwogCmV4dGVybiBzaXplX3Qgc3RyeGZybSAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0 LAoJCQkgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgICA7 CgojIDEwNyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCgoKCiAKZXh0ZXJuIGNoYXIgKl9fc3Ry ZHVwICAoX19jb25zdCBjaGFyICpfX3MpICAgIDsKZXh0ZXJuIGNoYXIgKnN0cmR1cCAgKF9fY29u c3QgY2hhciAqX19zKSAgICA7CgoKIAoKCgoKCgojIDE0MyAiL3Vzci9pbmNsdWRlL3N0cmluZy5o IiAzCgoKIApleHRlcm4gY2hhciAqc3RyY2hyICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2Mp ICAgIDsKIApleHRlcm4gY2hhciAqc3RycmNociAgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19j KSAgICA7CgoKCgoKCgogCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0IGNoYXIgKl9f cywgX19jb25zdCBjaGFyICpfX3JlamVjdCkgICAgOwogCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAg KF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KSAgICA7CiAKZXh0ZXJu IGNoYXIgKnN0cnBicmsgIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2Vw dCkgICAgOwogCmV4dGVybiBjaGFyICpzdHJzdHIgIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ss IF9fY29uc3QgY2hhciAqX19uZWVkbGUpICAgIDsKCgoKCgoKCgoKIApleHRlcm4gY2hhciAqc3Ry dG9rICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fZGVsaW0pICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cnRva19yICAoY2hhciAqX19yZXN0 cmljdCBfX3MsCgkJCSAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAoJCQkg ICAgICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSAgICA7CgpleHRlcm4gY2hhciAqc3Ry dG9rX3IgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX2RlbGltLAoJCQkgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgICAgOwoK CiMgMjAzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKIApleHRlcm4gc2l6ZV90IHN0cmxl biAgKF9fY29uc3QgY2hhciAqX19zKSAgICA7CgoKCgoKCgoKIApleHRlcm4gY2hhciAqc3RyZXJy b3IgIChpbnQgX19lcnJudW0pICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cmVycm9yX3IgIChp bnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pICAgIDsKZXh0ZXJuIGNo YXIgKnN0cmVycm9yX3IgIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZs ZW4pICAgIDsKCgogCgpleHRlcm4gdm9pZCBfX2J6ZXJvICAodm9pZCAqICBfX3MsIHNpemVfdCBf X24pICAgIDsKCgogCmV4dGVybiB2b2lkIGJjb3B5ICAoX19jb25zdCB2b2lkICogIF9fc3JjLCB2 b2lkICogIF9fZGVzdCwgc2l6ZV90IF9fbikgICAgOwoKIApleHRlcm4gdm9pZCBiemVybyAgKHZv aWQgKiAgX19zLCBzaXplX3QgX19uKSAgICA7CgogCmV4dGVybiBpbnQgYmNtcCAgKF9fY29uc3Qg dm9pZCAqICBfX3MxLCBfX2NvbnN0IHZvaWQgKiAgX19zMiwgc2l6ZV90IF9fbikgICAgOwoKIApl eHRlcm4gY2hhciAqaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgICAgOwoKIApl eHRlcm4gY2hhciAqcmluZGV4ICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpICAgIDsKCiAK CmV4dGVybiBpbnQgX19mZnMgIChpbnQgX19pKSAgICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7 CmV4dGVybiBpbnQgZmZzICAoaW50IF9faSkgICAgIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK IAoKCgoKCgoKCgogCmV4dGVybiBpbnQgX19zdHJjYXNlY21wICAoX19jb25zdCBjaGFyICpfX3Mx LCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKZXh0ZXJuIGludCBzdHJjYXNlY21wICAoX19jb25z dCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKCiAKZXh0ZXJuIGludCBzdHJu Y2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAoJCQkgICAg IHNpemVfdCBfX24pICAgIDsKCgojIDI3NyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCgoKCiAK CmV4dGVybiBjaGFyICpzdHJzZXAgIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsCgkJCSAg X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pICAgIDsKCgojIDMxOSAiL3Vzci9pbmNs dWRlL3N0cmluZy5oIiAzCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKIyAxICIvdXNyL2luY2x1 ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCiMg MTQyICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcuaCIgMwoKIyAzNDMgIi91c3IvaW5jbHVkZS9z dHJpbmcuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMSAzCiAK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCiMgMSAi L3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK CgoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwogCgoKCgoKCiMgMzUg Ii91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCgoKIAoKCgoKCgoKCgoKCgoKIyA1MiAiL3Vzci9p bmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAyIDMKCgoKIyA2NCAiL3Vzci9pbmNsdWRlL2JpdHMvc3Ry aW5nMi5oIiAzCgoKCgoKCgoKCgojIDg4ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK CgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgojIDE4MCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5n Mi5oIiAzCgoKCgoKCgogCgoKCgoKCgoKCiAKCiMgMzY3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJp bmcyLmgiIDMKCgoKIAoKZXh0ZXJuIHZvaWQgKiAgX19yYXdtZW1jaHIgKGNvbnN0IHZvaWQgKiAg X19zLCBpbnQgX19jKTsKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuIF9faW5saW5lICBj aGFyICpfX3N0cmNweV9zbWFsbCAoY2hhciAqLCBfX3VpbnQxNl90LCBfX3VpbnQxNl90LAoJCQkJ ICAgICAgX191aW50MzJfdCwgX191aW50MzJfdCwgc2l6ZV90KTsKZXh0ZXJuIF9faW5saW5lICBj aGFyICoKX19zdHJjcHlfc21hbGwgKGNoYXIgKl9fZGVzdCwKCQlfX3VpbnQxNl90IF9fc3JjMF8y LCBfX3VpbnQxNl90IF9fc3JjNF8yLAoJCV9fdWludDMyX3QgX19zcmMwXzQsIF9fdWludDMyX3Qg X19zcmM0XzQsCgkJc2l6ZV90IF9fc3JjbGVuKQp7CiAgdW5pb24gewogICAgX191aW50MzJfdCBf X3VpOwogICAgX191aW50MTZfdCBfX3VzaTsKICAgIHVuc2lnbmVkIGNoYXIgX191YzsKICB9ICpf X3UgPSAodm9pZCAqKSBfX2Rlc3Q7CiAgc3dpdGNoICgodW5zaWduZWQgaW50KSBfX3NyY2xlbikK ICAgIHsKICAgIGNhc2UgMToKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAgICAgYnJlYWs7CiAg ICBjYXNlIDI6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgYnJlYWs7CiAgICBj YXNlIDM6CiAgICAgIF9fdS0+X191c2kgPSBfX3NyYzBfMjsKICAgICAgX191ID0gX19leHRlbnNp b25fXyAoKHZvaWQgKikgX191ICsgMik7CiAgICAgIF9fdS0+X191YyA9ICdcMCc7CiAgICAgIGJy ZWFrOwogICAgY2FzZSA0OgogICAgICBfX3UtPl9fdWkgPSBfX3NyYzBfNDsKICAgICAgYnJlYWs7 CiAgICBjYXNlIDU6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBfX3UgPSBfX2V4 dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VjID0gJ1wwJzsKICAg ICAgYnJlYWs7CiAgICBjYXNlIDY6CiAgICAgIF9fdS0+X191aSA9IF9fc3JjMF80OwogICAgICBf X3UgPSBfX2V4dGVuc2lvbl9fICgodm9pZCAqKSBfX3UgKyA0KTsKICAgICAgX191LT5fX3VzaSA9 IF9fc3JjNF8yOwogICAgICBicmVhazsKICAgIGNhc2UgNzoKICAgICAgX191LT5fX3VpID0gX19z cmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lkICopIF9fdSArIDQpOwogICAg ICBfX3UtPl9fdXNpID0gX19zcmM0XzI7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9uX18gKCh2b2lk ICopIF9fdSArIDIpOwogICAgICBfX3UtPl9fdWMgPSAnXDAnOwogICAgICBicmVhazsKICAgIGNh c2UgODoKICAgICAgX191LT5fX3VpID0gX19zcmMwXzQ7CiAgICAgIF9fdSA9IF9fZXh0ZW5zaW9u X18gKCh2b2lkICopIF9fdSArIDQpOwogICAgICBfX3UtPl9fdWkgPSBfX3NyYzRfNDsKICAgICAg YnJlYWs7CiAgICB9CiAgcmV0dXJuIF9fZGVzdDsKfQojIDUzMSAiL3Vzci9pbmNsdWRlL2JpdHMv c3RyaW5nMi5oIiAzCgoKCgogCiMgNjk3ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK CgoKIAoKIyA3MTIgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCgoKCgoKCgoKCiAK CiMgNzMzICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgoKCgoKCgoKCgogCgoKIyA3 NjYgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCiMgNzkzICIvdXNyL2luY2x1ZGUv Yml0cy9zdHJpbmcyLmgiIDMKCgojIDgxNSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAz CgoKIyA4NDAgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCgogCgoKCgoKCgoKCgoK IAoKCgojIDg3MiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgpleHRlcm4gX19pbmxp bmUgIHNpemVfdCBfX3N0cmNzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0 KTsKZXh0ZXJuIF9faW5saW5lICBzaXplX3QKX19zdHJjc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9f cywgY2hhciBfX3JlamVjdCkKewogIHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hp bGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0KQog ICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lubGluZSAgc2l6 ZV90IF9fc3RyY3Nwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLAoJCQkJ ICAgICBjaGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lubGluZSAgc2l6ZV90Cl9fc3RyY3Nwbl9j MiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MikKewog IHJlZ2lzdGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0g J1wwJyAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQoJICYmIF9fc1tfX3Jlc3VsdF0gIT0g X19yZWplY3QyKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBf X2lubGluZSAgc2l6ZV90IF9fc3RyY3Nwbl9jMyAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19y ZWplY3QxLAoJCQkJICAgICBjaGFyIF9fcmVqZWN0MiwgY2hhciBfX3JlamVjdDMpOwpleHRlcm4g X19pbmxpbmUgIHNpemVfdApfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9f cmVqZWN0MSwgY2hhciBfX3JlamVjdDIsCgkgICAgICBjaGFyIF9fcmVqZWN0MykKewogIHJlZ2lz dGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7CiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAm JiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MQoJICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWpl Y3QyICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QzKQogICAgKytfX3Jlc3VsdDsKICByZXR1 cm4gX19yZXN1bHQ7Cn0KCgoKIAoKCgojIDkyNyAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5o IiAzCgpleHRlcm4gX19pbmxpbmUgIHNpemVfdCBfX3N0cnNwbl9jMSAoX19jb25zdCBjaGFyICpf X3MsIGNoYXIgX19hY2NlcHQpOwpleHRlcm4gX19pbmxpbmUgIHNpemVfdApfX3N0cnNwbl9jMSAo X19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQpCnsKICByZWdpc3RlciBzaXplX3QgX19y ZXN1bHQgPSAwOwogICAKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdCkKICAgICsr X19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgIHNpemVfdCBf X3N0cnNwbl9jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLAoJCQkJICAgIGNo YXIgX19hY2NlcHQyKTsKZXh0ZXJuIF9faW5saW5lICBzaXplX3QKX19zdHJzcG5fYzIgKF9fY29u c3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIpCnsKICByZWdpc3Rl ciBzaXplX3QgX19yZXN1bHQgPSAwOwogICAKICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2Fj Y2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIpCiAgICArK19fcmVzdWx0OwogIHJl dHVybiBfX3Jlc3VsdDsKfQoKZXh0ZXJuIF9faW5saW5lICBzaXplX3QgX19zdHJzcG5fYzMgKF9f Y29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwKCQkJCSAgICBjaGFyIF9fYWNjZXB0Miwg Y2hhciBfX2FjY2VwdDMpOwpleHRlcm4gX19pbmxpbmUgIHNpemVfdApfX3N0cnNwbl9jMyAoX19j b25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9fYWNjZXB0MiwgY2hhciBfX2Fj Y2VwdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogICAKICB3aGlsZSAoX19z W19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDIKCSB8 fCBfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9f cmVzdWx0Owp9CgoKCiAKCgojIDk4MiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgpl eHRlcm4gX19pbmxpbmUgIGNoYXIgKl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGNo YXIgX19hY2NlcHQxLAoJCQkJICAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGluZSAg Y2hhciAqCl9fc3RycGJya19jMiAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBj aGFyIF9fYWNjZXB0MikKewogICAKICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19h Y2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0g J1wwJyA/ICgodm9pZCAqKTApICA6IChjaGFyICopIChzaXplX3QpIF9fczsKfQoKZXh0ZXJuIF9f aW5saW5lICBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNj ZXB0MSwKCQkJCSAgICAgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKTsKZXh0ZXJuIF9f aW5saW5lICBjaGFyICoKX19zdHJwYnJrX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2Fj Y2VwdDEsIGNoYXIgX19hY2NlcHQyLAoJICAgICAgY2hhciBfX2FjY2VwdDMpCnsKICAgCiAgd2hp bGUgKCpfX3MgIT0gJ1wwJyAmJiAqX19zICE9IF9fYWNjZXB0MSAmJiAqX19zICE9IF9fYWNjZXB0 MgoJICYmICpfX3MgIT0gX19hY2NlcHQzKQogICAgKytfX3M7CiAgcmV0dXJuICpfX3MgPT0gJ1ww JyA/ICgodm9pZCAqKTApICA6IChjaGFyICopIChzaXplX3QpIF9fczsKfQoKCgogCgoKIyAxMDIw ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgoKIyAxMDMyICIvdXNyL2luY2x1ZGUv Yml0cy9zdHJpbmcyLmgiIDMKCgoKCgoKCgoKCgoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0 cnRva19yXzFjIChjaGFyICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKTsKZXh0ZXJu IF9faW5saW5lICBjaGFyICoKX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9fc2VwLCBj aGFyICoqX19uZXh0cCkKewogIGNoYXIgKl9fcmVzdWx0OwogIGlmIChfX3MgPT0gKCh2b2lkICop MCkgKQogICAgX19zID0gKl9fbmV4dHA7CiAgd2hpbGUgKCpfX3MgPT0gX19zZXApCiAgICArK19f czsKICBpZiAoKl9fcyA9PSAnXDAnKQogICAgX19yZXN1bHQgPSAoKHZvaWQgKikwKSA7CiAgZWxz ZQogICAgewogICAgICBfX3Jlc3VsdCA9IF9fczsKICAgICAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAm JiAqX19zICE9IF9fc2VwKQoJKytfX3M7CiAgICAgIGlmICgqX19zID09ICdcMCcpCgkqX19uZXh0 cCA9IF9fczsKICAgICAgZWxzZQoJewoJICAqX19zID0gJ1wwJzsKCSAgKl9fbmV4dHAgPSBfX3Mg KyAxOwoJfQogICAgfQogIHJldHVybiBfX3Jlc3VsdDsKfQoKCgoKCgoKCgojIDEwOTMgIi91c3Iv aW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0cnNl cF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSAgY2hhciAq Cl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KQp7CiAgcmVnaXN0ZXIgY2hh ciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSApCiAgICBy ZXR1cm4gKl9fcyA9ICgodm9pZCAqKTApIDsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0KQog ICAgKigqX19zKSsrID0gJ1wwJzsKICBlbHNlCiAgICBpZiAoKCpfX3MgPSAoX19leHRlbnNpb25f XyAoX19idWlsdGluX2NvbnN0YW50X3AgKCAgX19yZWplY3QgKSAmJiAoICBfX3JlamVjdCApID09 ICdcMCcJPyAoY2hhciAqKSBfX3Jhd21lbWNociAoIF9fcmV0dmFsICwgICBfX3JlamVjdCApCTog c3RyY2hyICggX19yZXR2YWwgLCAgIF9fcmVqZWN0ICkpKSApICE9ICgodm9pZCAqKTApICkKICAg ICAgKigqX19zKSsrID0gJ1wwJzsKICAgIGVsc2UKICAgICAgKl9fcyA9ICgodm9pZCAqKTApIDsK ICByZXR1cm4gX19yZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSAgY2hhciAqX19zdHJzZXBfMmMg KGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0Mik7CmV4dGVybiBfX2lu bGluZSAgY2hhciAqCl9fc3Ryc2VwXzJjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hh ciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9f cmV0dmFsID09ICgodm9pZCAqKTApICkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICopMCkgOwog IGlmICgqX19yZXR2YWwgPT0gX19yZWplY3QxIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDIpCiAg ICAqKCpfX3MpKysgPSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19j cCA9IF9fcmV0dmFsOwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3Jl amVjdDEgJiYgKl9fY3AgIT0gX19yZWplY3QyKQoJKytfX2NwOwogICAgICBpZiAoKl9fY3AgIT0g J1wwJykKCXsKCSAgKl9fcyA9IF9fY3A7CgkgICooKl9fcykrKyA9ICdcMCc7Cgl9CiAgICAgIGVs c2UKCSpfX3MgPSAoKHZvaWQgKikwKSA7CiAgICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRl cm4gX19pbmxpbmUgIGNoYXIgKl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0 MSwgY2hhciBfX3JlamVjdDIsCgkJCQkgICBjaGFyIF9fcmVqZWN0Myk7CmV4dGVybiBfX2lubGlu ZSAgY2hhciAqCl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBf X3JlamVjdDIsIGNoYXIgX19yZWplY3QzKQp7CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAq X19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZvaWQgKikwKSApCiAgICByZXR1cm4gKl9fcyA9ICgo dm9pZCAqKTApIDsKICBpZiAoKl9fcmV0dmFsID09IF9fcmVqZWN0MSB8fCAqX19yZXR2YWwgPT0g X19yZWplY3QyCiAgICAgIHx8ICpfX3JldHZhbCA9PSBfX3JlamVjdDMpCiAgICAqKCpfX3MpKysg PSAnXDAnOwogIGVsc2UKICAgIHsKICAgICAgcmVnaXN0ZXIgY2hhciAqX19jcCA9IF9fcmV0dmFs OwogICAgICB3aGlsZSAoKl9fY3AgIT0gJ1wwJyAmJiAqX19jcCAhPSBfX3JlamVjdDEgJiYgKl9f Y3AgIT0gX19yZWplY3QyCgkgICAgICYmICpfX2NwICE9IF9fcmVqZWN0MykKCSsrX19jcDsKICAg ICAgaWYgKCpfX2NwICE9ICdcMCcpCgl7CgkgICpfX3MgPSBfX2NwOwoJICAqKCpfX3MpKysgPSAn XDAnOwoJfQogICAgICBlbHNlCgkqX19zID0gKCh2b2lkICopMCkgOwogICAgfQogIHJldHVybiBf X3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0cnNlcF9nIChjaGFyICoqX19z LCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KTsKZXh0ZXJuIF9faW5saW5lICBjaGFyICoKX19zdHJz ZXBfZyAoY2hhciAqKl9fcywgX19jb25zdCBjaGFyICpfX3JlamVjdCkKewogIHJlZ2lzdGVyIGNo YXIgKl9fcmV0dmFsID0gKl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkgKQogICAg cmV0dXJuICgodm9pZCAqKTApIDsKICBpZiAoKCpfX3MgPSBfX2V4dGVuc2lvbl9fCSh7IGNoYXIg X19hMCwgX19hMSwgX19hMjsJKF9fYnVpbHRpbl9jb25zdGFudF9wICggIF9fcmVqZWN0ICkgJiYg KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCAgIF9fcmVqZWN0ICApICsgMSkgLSAoc2l6ZV90KShj b25zdCB2b2lkICopKCAgIF9fcmVqZWN0ICApID09IDEpIAk/ICgoX19hMCA9ICgoX19jb25zdCBj aGFyICAqKSAoICBfX3JlamVjdCApKVswXSwgX19hMCA9PSAnXDAnKQk/ICgodm9pZCAqKTApIAk6 ICgoX19hMSA9ICgoX19jb25zdCBjaGFyICopICggIF9fcmVqZWN0ICkpWzFdLCBfX2ExID09ICdc MCcpCT8gKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wICggIF9fYTAgKSAmJiAo ICBfX2EwICkgPT0gJ1wwJwk/IChjaGFyICopIF9fcmF3bWVtY2hyICggIF9fcmV0dmFsICAsICAg X19hMCApCTogc3RyY2hyICggIF9fcmV0dmFsICAsICAgX19hMCApKSkgCTogKChfX2EyID0gKChf X2NvbnN0IGNoYXIgKikgKCAgX19yZWplY3QgKSlbMl0sIF9fYTIgPT0gJ1wwJykJPyBfX3N0cnBi cmtfYzIgKCBfX3JldHZhbCAsIF9fYTAsIF9fYTEpCTogKCgoX19jb25zdCBjaGFyICopICggIF9f cmVqZWN0ICkpWzNdID09ICdcMCcJPyBfX3N0cnBicmtfYzMgKCBfX3JldHZhbCAsIF9fYTAsIF9f YTEsIF9fYTIpCTogc3RycGJyayAoIF9fcmV0dmFsICwgICBfX3JlamVjdCApKSkpKQk6IHN0cnBi cmsgKCBfX3JldHZhbCAsICAgX19yZWplY3QgKSk7IH0pICkgIT0gKCh2b2lkICopMCkgKQogICAg KigqX19zKSsrID0gJ1wwJzsKICByZXR1cm4gX19yZXR2YWw7Cn0KCgoKCgogCgoKCgoKCiMgMSAi L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAK CgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2lu Y2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw LXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoK CiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9p bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAK CiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9p bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAt c2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoK IyAyNzEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1 ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1s aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9n Y2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAz CgoKIAoKIyA0NjkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKIApleHRlcm4gdm9pZCAq ICBtYWxsb2MgIChzaXplX3QgX19zaXplKSAgICA7CiAKZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAo c2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpICAgIDsKCgojIDc2OCAiL3Vzci9pbmNsdWRl L3N0ZGxpYi5oIiAzCgoKCiAKCgojIDExODcgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIg MiAzCgoKCgoKCiMgMTIwMiAiL3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKCgoK CgoKCgojIDM0NiAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoKCiAKCgojIDEyICJta3Jl aXNlcmZzLmMiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAxIDMKIAoKCgoKCgoKCgoK CgoKCgoKCiAKCgoKCgoKCgogCgogCgoKIAoKCgogCgoKIAoKCiAKCgogCgoKCiAKCgoKIAoKCgog CgoKCiAKCgoKCgoKIAoKCiAKCgoKCiAKCgogCgoKIAoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4X29wdC5oIiAxIDMKIAoKCgoK CgoKCgoKCgoKCgoKCgoKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoK IAoKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCgogCgoKIAoKCiAKCgogCiAKCiAK CgogCgogCgoKIAoKCiAKCgoKCgojIDE3NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgog CgoKCgogCgoKCgoKIAoKCgoKdHlwZWRlZiBfX3NzaXplX3Qgc3NpemVfdDsKCgoKCgojIDEgIi91 c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVm LmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1s aW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIv dXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl Zi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIv dXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRl Zi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxp bnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3Iv bGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgi IDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIv aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAt c2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoK CgoKCgoKCgoKCgoKCiMgMTk5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCiMgMjMxICIv dXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKCgoKCgoKIAoKCgoKCgogCmV4dGVybiBpbnQgYWNj ZXNzICAoX19jb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpICAgIDsKCgoKCgoKCgogCgoK CgoKCgogCgoKCgoKCiAKCgoKCmV4dGVybiBfX29mZl90IF9fbHNlZWsgIChpbnQgX19mZCwgX19v ZmZfdCBfX29mZnNldCwgaW50IF9fd2hlbmNlKSAgICA7CgpleHRlcm4gX19vZmZfdCBsc2VlayAg KGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpICAgIDsKIyAyODkgIi91 c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoKCgoKCiAKZXh0ZXJuIGludCBfX2Nsb3NlICAoaW50IF9f ZmQpICAgIDsKZXh0ZXJuIGludCBjbG9zZSAgKGludCBfX2ZkKSAgICA7CgogCgpleHRlcm4gc3Np emVfdCAgX19yZWFkICAoaW50IF9fZmQsIHZvaWQgKiAgX19idWYsIHNpemVfdCBfX25ieXRlcykg ICAgOwpleHRlcm4gc3NpemVfdCAgcmVhZCAgKGludCBfX2ZkLCB2b2lkICogIF9fYnVmLCBzaXpl X3QgX19uYnl0ZXMpICAgIDsKCiAKZXh0ZXJuIHNzaXplX3QgIF9fd3JpdGUgIChpbnQgX19mZCwg X19jb25zdCB2b2lkICogIF9fYnVmLCBzaXplX3QgX19uKSAgICA7CmV4dGVybiBzc2l6ZV90ICB3 cml0ZSAgKGludCBfX2ZkLCBfX2NvbnN0IHZvaWQgKiAgX19idWYsIHNpemVfdCBfX24pICAgIDsK CiMgMzQzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgogCgoKCmV4dGVybiBpbnQgcGlwZSAg KGludCBfX3BpcGVkZXNbMl0pICAgIDsKCiAKCgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCBhbGFy bSAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpICAgIDsKCiAKCgoKCgoKZXh0ZXJuIHVuc2lnbmVk IGludCBzbGVlcCAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpICAgIDsKCgogCgoKCmV4dGVybiB1 bnNpZ25lZCBpbnQgdWFsYXJtICAodW5zaWduZWQgaW50IF9fdmFsdWUsCgkJCQkgdW5zaWduZWQg aW50IF9faW50ZXJ2YWwpICAgIDsKCiAKCmV4dGVybiB2b2lkIHVzbGVlcCAgKHVuc2lnbmVkIGlu dCBfX3VzZWNvbmRzKSAgICA7CgoKCiAKCmV4dGVybiBpbnQgcGF1c2UgICh2b2lkKSAgICA7CgoK IApleHRlcm4gaW50IGNob3duICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25l ciwKCQkgICAgICAgX19naWRfdCBfX2dyb3VwKSAgICA7CgoKIApleHRlcm4gaW50IGZjaG93biAg KGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkgICAgOwoKCiAKCmV4 dGVybiBpbnQgbGNob3duICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwK CQkJX19naWRfdCBfX2dyb3VwKSAgICA7CgoKCiAKZXh0ZXJuIGludCBjaGRpciAgKF9fY29uc3Qg Y2hhciAqX19wYXRoKSAgICA7CgoKIApleHRlcm4gaW50IGZjaGRpciAgKGludCBfX2ZkKSAgICA7 CgoKIAoKCgoKCgpleHRlcm4gY2hhciAqZ2V0Y3dkICAoY2hhciAqX19idWYsIHNpemVfdCBfX3Np emUpICAgIDsKCgoKCgoKCgoKIAoKCmV4dGVybiBjaGFyICpnZXR3ZCAgKGNoYXIgKl9fYnVmKSAg ICA7CgoKCiAKZXh0ZXJuIGludCBkdXAgIChpbnQgX19mZCkgICAgOwoKIApleHRlcm4gaW50IGR1 cDIgIChpbnQgX19mZCwgaW50IF9fZmQyKSAgICA7CgogCmV4dGVybiBjaGFyICoqX19lbnZpcm9u OwoKCgoKCiAKCmV4dGVybiBpbnQgZXhlY3ZlICAoX19jb25zdCBjaGFyICpfX3BhdGgsIGNoYXIg Kl9fY29uc3QgX19hcmd2W10sCgkJCWNoYXIgKl9fY29uc3QgX19lbnZwW10pICAgIDsKCgoKCgoK CgoKCiAKZXh0ZXJuIGludCBleGVjdiAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2Nv bnN0IF9fYXJndltdKSAgICA7CgogCgpleHRlcm4gaW50IGV4ZWNsZSAgKF9fY29uc3QgY2hhciAq X19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pICAgIDsKCiAKCmV4dGVybiBpbnQgZXhl Y2wgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSAgICA7 CgogCgpleHRlcm4gaW50IGV4ZWN2cCAgKF9fY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpfX2Nv bnN0IF9fYXJndltdKSAgICA7CgogCgoKZXh0ZXJuIGludCBleGVjbHAgIChfX2NvbnN0IGNoYXIg Kl9fZmlsZSwgX19jb25zdCBjaGFyICpfX2FyZywgLi4uKSAgICA7CgoKCiAKZXh0ZXJuIGludCBu aWNlICAoaW50IF9faW5jKSAgICA7CgoKCiAKZXh0ZXJuIHZvaWQgX2V4aXQgIChpbnQgX19zdGF0 dXMpICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiAKCgojIDEgIi91c3IvaW5j bHVkZS9iaXRzL2NvbmZuYW1lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCmVudW0K ICB7CiAgICBfUENfTElOS19NQVgsCgogICAgX1BDX01BWF9DQU5PTiwKCiAgICBfUENfTUFYX0lO UFVULAoKICAgIF9QQ19OQU1FX01BWCwKCiAgICBfUENfUEFUSF9NQVgsCgogICAgX1BDX1BJUEVf QlVGLAoKICAgIF9QQ19DSE9XTl9SRVNUUklDVEVELAoKICAgIF9QQ19OT19UUlVOQywKCiAgICBf UENfVkRJU0FCTEUsCgogICAgX1BDX1NZTkNfSU8sCgogICAgX1BDX0FTWU5DX0lPLAoKICAgIF9Q Q19QUklPX0lPLAoKICAgIF9QQ19TT0NLX01BWEJVRiwKCiAgICBfUENfRklMRVNJWkVCSVRTCgog IH07CgogCmVudW0KICB7CiAgICBfU0NfQVJHX01BWCwKCiAgICBfU0NfQ0hJTERfTUFYLAoKICAg IF9TQ19DTEtfVENLLAoKICAgIF9TQ19OR1JPVVBTX01BWCwKCiAgICBfU0NfT1BFTl9NQVgsCgog ICAgX1NDX1NUUkVBTV9NQVgsCgogICAgX1NDX1RaTkFNRV9NQVgsCgogICAgX1NDX0pPQl9DT05U Uk9MLAoKICAgIF9TQ19TQVZFRF9JRFMsCgogICAgX1NDX1JFQUxUSU1FX1NJR05BTFMsCgogICAg X1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcsCgogICAgX1NDX1RJTUVSUywKCiAgICBfU0NfQVNZTkNI Uk9OT1VTX0lPLAoKICAgIF9TQ19QUklPUklUSVpFRF9JTywKCiAgICBfU0NfU1lOQ0hST05JWkVE X0lPLAoKICAgIF9TQ19GU1lOQywKCiAgICBfU0NfTUFQUEVEX0ZJTEVTLAoKICAgIF9TQ19NRU1M T0NLLAoKICAgIF9TQ19NRU1MT0NLX1JBTkdFLAoKICAgIF9TQ19NRU1PUllfUFJPVEVDVElPTiwK CiAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAoKICAgIF9TQ19TRU1BUEhPUkVTLAoKICAgIF9TQ19T SEFSRURfTUVNT1JZX09CSkVDVFMsCgogICAgX1NDX0FJT19MSVNUSU9fTUFYLAoKICAgIF9TQ19B SU9fTUFYLAoKICAgIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgsCgogICAgX1NDX0RFTEFZVElNRVJf TUFYLAoKICAgIF9TQ19NUV9PUEVOX01BWCwKCiAgICBfU0NfTVFfUFJJT19NQVgsCgogICAgX1ND X1ZFUlNJT04sCgogICAgX1NDX1BBR0VTSVpFLAoKCiAgICBfU0NfUlRTSUdfTUFYLAoKICAgIF9T Q19TRU1fTlNFTVNfTUFYLAoKICAgIF9TQ19TRU1fVkFMVUVfTUFYLAoKICAgIF9TQ19TSUdRVUVV RV9NQVgsCgogICAgX1NDX1RJTUVSX01BWCwKCgogICAgIAoKICAgIF9TQ19CQ19CQVNFX01BWCwK CiAgICBfU0NfQkNfRElNX01BWCwKCiAgICBfU0NfQkNfU0NBTEVfTUFYLAoKICAgIF9TQ19CQ19T VFJJTkdfTUFYLAoKICAgIF9TQ19DT0xMX1dFSUdIVFNfTUFYLAoKICAgIF9TQ19FUVVJVl9DTEFT U19NQVgsCgogICAgX1NDX0VYUFJfTkVTVF9NQVgsCgogICAgX1NDX0xJTkVfTUFYLAoKICAgIF9T Q19SRV9EVVBfTUFYLAoKICAgIF9TQ19DSEFSQ0xBU1NfTkFNRV9NQVgsCgoKICAgIF9TQ18yX1ZF UlNJT04sCgogICAgX1NDXzJfQ19CSU5ELAoKICAgIF9TQ18yX0NfREVWLAoKICAgIF9TQ18yX0ZP UlRfREVWLAoKICAgIF9TQ18yX0ZPUlRfUlVOLAoKICAgIF9TQ18yX1NXX0RFViwKCiAgICBfU0Nf Ml9MT0NBTEVERUYsCgoKICAgIF9TQ19QSUksCgogICAgX1NDX1BJSV9YVEksCgogICAgX1NDX1BJ SV9TT0NLRVQsCgogICAgX1NDX1BJSV9JTlRFUk5FVCwKCiAgICBfU0NfUElJX09TSSwKCiAgICBf U0NfUE9MTCwKCiAgICBfU0NfU0VMRUNULAoKICAgIF9TQ19VSU9fTUFYSU9WLAoKICAgIF9TQ19Q SUlfSU5URVJORVRfU1RSRUFNLAoKICAgIF9TQ19QSUlfSU5URVJORVRfREdSQU0sCgogICAgX1ND X1BJSV9PU0lfQ09UUywKCiAgICBfU0NfUElJX09TSV9DTFRTLAoKICAgIF9TQ19QSUlfT1NJX00s CgogICAgX1NDX1RfSU9WX01BWCwKCgogICAgIAogICAgX1NDX1RIUkVBRFMsCgogICAgX1NDX1RI UkVBRF9TQUZFX0ZVTkNUSU9OUywKCiAgICBfU0NfR0VUR1JfUl9TSVpFX01BWCwKCiAgICBfU0Nf R0VUUFdfUl9TSVpFX01BWCwKCiAgICBfU0NfTE9HSU5fTkFNRV9NQVgsCgogICAgX1NDX1RUWV9O QU1FX01BWCwKCiAgICBfU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUywKCiAgICBfU0Nf VEhSRUFEX0tFWVNfTUFYLAoKICAgIF9TQ19USFJFQURfU1RBQ0tfTUlOLAoKICAgIF9TQ19USFJF QURfVEhSRUFEU19NQVgsCgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiwKCiAgICBfU0Nf VEhSRUFEX0FUVFJfU1RBQ0tTSVpFLAoKICAgIF9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElO RywKCiAgICBfU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCwKCiAgICBfU0NfVEhSRUFEX1BSSU9fUFJP VEVDVCwKCiAgICBfU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVELAoKCiAgICBfU0NfTlBST0NFU1NP UlNfQ09ORiwKCiAgICBfU0NfTlBST0NFU1NPUlNfT05MTiwKCiAgICBfU0NfUEhZU19QQUdFUywK CiAgICBfU0NfQVZQSFlTX1BBR0VTLAoKICAgIF9TQ19BVEVYSVRfTUFYLAoKICAgIF9TQ19QQVNT X01BWCwKCgogICAgX1NDX1hPUEVOX1ZFUlNJT04sCgogICAgX1NDX1hPUEVOX1hDVV9WRVJTSU9O LAoKICAgIF9TQ19YT1BFTl9VTklYLAoKICAgIF9TQ19YT1BFTl9DUllQVCwKCiAgICBfU0NfWE9Q RU5fRU5IX0kxOE4sCgogICAgX1NDX1hPUEVOX1NITSwKCgogICAgX1NDXzJfQ0hBUl9URVJNLAoK ICAgIF9TQ18yX0NfVkVSU0lPTiwKCiAgICBfU0NfMl9VUEUsCgoKICAgIF9TQ19YT1BFTl9YUEcy LAoKICAgIF9TQ19YT1BFTl9YUEczLAoKICAgIF9TQ19YT1BFTl9YUEc0LAoKCiAgICBfU0NfQ0hB Ul9CSVQsCgogICAgX1NDX0NIQVJfTUFYLAoKICAgIF9TQ19DSEFSX01JTiwKCiAgICBfU0NfSU5U X01BWCwKCiAgICBfU0NfSU5UX01JTiwKCiAgICBfU0NfTE9OR19CSVQsCgogICAgX1NDX1dPUkRf QklULAoKICAgIF9TQ19NQl9MRU5fTUFYLAoKICAgIF9TQ19OWkVSTywKCiAgICBfU0NfU1NJWkVf TUFYLAoKICAgIF9TQ19TQ0hBUl9NQVgsCgogICAgX1NDX1NDSEFSX01JTiwKCiAgICBfU0NfU0hS VF9NQVgsCgogICAgX1NDX1NIUlRfTUlOLAoKICAgIF9TQ19VQ0hBUl9NQVgsCgogICAgX1NDX1VJ TlRfTUFYLAoKICAgIF9TQ19VTE9OR19NQVgsCgogICAgX1NDX1VTSFJUX01BWCwKCgogICAgX1ND X05MX0FSR01BWCwKCiAgICBfU0NfTkxfTEFOR01BWCwKCiAgICBfU0NfTkxfTVNHTUFYLAoKICAg IF9TQ19OTF9OTUFYLAoKICAgIF9TQ19OTF9TRVRNQVgsCgogICAgX1NDX05MX1RFWFRNQVgsCgoK ICAgIF9TQ19YQlM1X0lMUDMyX09GRjMyLAoKICAgIF9TQ19YQlM1X0lMUDMyX09GRkJJRywKCiAg ICBfU0NfWEJTNV9MUDY0X09GRjY0LAoKICAgIF9TQ19YQlM1X0xQQklHX09GRkJJRywKCgogICAg X1NDX1hPUEVOX0xFR0FDWSwKCiAgICBfU0NfWE9QRU5fUkVBTFRJTUUsCgogICAgX1NDX1hPUEVO X1JFQUxUSU1FX1RIUkVBRFMKCiAgfTsKCgoKCiAKZW51bQogIHsKICAgIF9DU19QQVRICQkJIAoK CiMgMzcwICIvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCgoKIyA0MDYgIi91c3IvaW5j bHVkZS9iaXRzL2NvbmZuYW1lLmgiIDMKCiAgfTsKCiMgNDk3ICIvdXNyL2luY2x1ZGUvdW5pc3Rk LmgiIDIgMwoKCiAKZXh0ZXJuIGxvbmcgaW50IHBhdGhjb25mICAoX19jb25zdCBjaGFyICpfX3Bh dGgsIGludCBfX25hbWUpICAgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29uZiAgKGludCBf X2ZkLCBpbnQgX19uYW1lKSAgICA7CgogCmV4dGVybiBsb25nIGludCBzeXNjb25mICAoaW50IF9f bmFtZSkgICAgOwoKCiAKZXh0ZXJuIHNpemVfdCBjb25mc3RyICAoaW50IF9fbmFtZSwgY2hhciAq X19idWYsIHNpemVfdCBfX2xlbikgICAgOwoKCgogCmV4dGVybiBfX3BpZF90IF9fZ2V0cGlkICAo dm9pZCkgICAgOwpleHRlcm4gX19waWRfdCBnZXRwaWQgICh2b2lkKSAgICA7CgogCmV4dGVybiBf X3BpZF90IGdldHBwaWQgICh2b2lkKSAgICA7CgogCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAg KHZvaWQpICAgIDsKCgoKCgoKCgogCmV4dGVybiBfX3BpZF90IF9fZ2V0cGdpZCAgKF9fcGlkX3Qg X19waWQpICAgIDsKCgoKCgogCgoKZXh0ZXJuIGludCBfX3NldHBnaWQgIChfX3BpZF90IF9fcGlk LCBfX3BpZF90IF9fcGdpZCkgICAgOwpleHRlcm4gaW50IHNldHBnaWQgIChfX3BpZF90IF9fcGlk LCBfX3BpZF90IF9fcGdpZCkgICAgOwoKCiAKCgoKCgoKCgoKCgogCgpleHRlcm4gaW50IHNldHBn cnAgICh2b2lkKSAgICA7CgojIDU3MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoKCiAKCgpl eHRlcm4gX19waWRfdCBzZXRzaWQgICh2b2lkKSAgICA7CgoKCgoKCiAKZXh0ZXJuIF9fdWlkX3Qg Z2V0dWlkICAodm9pZCkgICAgOwoKIApleHRlcm4gX191aWRfdCBnZXRldWlkICAodm9pZCkgICAg OwoKIApleHRlcm4gX19naWRfdCBnZXRnaWQgICh2b2lkKSAgICA7CgogCmV4dGVybiBfX2dpZF90 IGdldGVnaWQgICh2b2lkKSAgICA7CgogCgoKZXh0ZXJuIGludCBnZXRncm91cHMgIChpbnQgX19z aXplLCBfX2dpZF90IF9fbGlzdFtdKSAgICA7CgoKCgoKCiAKCgoKZXh0ZXJuIGludCBzZXR1aWQg IChfX3VpZF90IF9fdWlkKSAgICA7CgoKIAoKZXh0ZXJuIGludCBzZXRyZXVpZCAgKF9fdWlkX3Qg X19ydWlkLCBfX3VpZF90IF9fZXVpZCkgICAgOwoKCgogCmV4dGVybiBpbnQgc2V0ZXVpZCAgKF9f dWlkX3QgX191aWQpICAgIDsKCgogCgoKCmV4dGVybiBpbnQgc2V0Z2lkICAoX19naWRfdCBfX2dp ZCkgICAgOwoKCiAKCmV4dGVybiBpbnQgc2V0cmVnaWQgIChfX2dpZF90IF9fcmdpZCwgX19naWRf dCBfX2VnaWQpICAgIDsKCgoKIApleHRlcm4gaW50IHNldGVnaWQgIChfX2dpZF90IF9fZ2lkKSAg ICA7CgoKCiAKCgpleHRlcm4gX19waWRfdCBfX2ZvcmsgICh2b2lkKSAgICA7CmV4dGVybiBfX3Bp ZF90IGZvcmsgICh2b2lkKSAgICA7CgoKIAoKCgpleHRlcm4gX19waWRfdCB2Zm9yayAgKHZvaWQp ICAgIDsKCgoKIAoKZXh0ZXJuIGNoYXIgKnR0eW5hbWUgIChpbnQgX19mZCkgICAgOwoKIAoKZXh0 ZXJuIGludCB0dHluYW1lX3IgIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxl bikgICAgOwoKIAoKZXh0ZXJuIGludCBpc2F0dHkgIChpbnQgX19mZCkgICAgOwoKCiAKCmV4dGVy biBpbnQgdHR5c2xvdCAgKHZvaWQpICAgIDsKCgoKIApleHRlcm4gaW50IGxpbmsgIChfX2NvbnN0 IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSAgICA7CgoKIApleHRlcm4gaW50IHN5 bWxpbmsgIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSAgICA7Cgog CgoKZXh0ZXJuIGludCByZWFkbGluayAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2J1 Ziwgc2l6ZV90IF9fbGVuKSAgICA7CgoKIApleHRlcm4gaW50IHVubGluayAgKF9fY29uc3QgY2hh ciAqX19uYW1lKSAgICA7CgogCmV4dGVybiBpbnQgcm1kaXIgIChfX2NvbnN0IGNoYXIgKl9fcGF0 aCkgICAgOwoKCiAKZXh0ZXJuIF9fcGlkX3QgdGNnZXRwZ3JwICAoaW50IF9fZmQpICAgIDsKCiAK ZXh0ZXJuIGludCB0Y3NldHBncnAgIChpbnQgX19mZCwgX19waWRfdCBfX3BncnBfaWQpICAgIDsK CgogCmV4dGVybiBjaGFyICpnZXRsb2dpbiAgKHZvaWQpICAgIDsKCgoKCgoKCgogCmV4dGVybiBp bnQgc2V0bG9naW4gIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgICAgOwoKCgoKIAoKCgojIDEgIi91 c3IvaW5jbHVkZS9nZXRvcHQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK CgoKCgpleHRlcm4gY2hhciAqb3B0YXJnOwoKIAoKCgoKCgoKCgoKCmV4dGVybiBpbnQgb3B0aW5k OwoKIAoKCmV4dGVybiBpbnQgb3B0ZXJyOwoKIAoKZXh0ZXJuIGludCBvcHRvcHQ7CgojIDEwMiAi L3Vzci9pbmNsdWRlL2dldG9wdC5oIiAzCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK CgpleHRlcm4gaW50IGdldG9wdCAoaW50IF9fYXJnYywgY2hhciAqY29uc3QgKl9fYXJndiwgY29u c3QgY2hhciAqX19zaG9ydG9wdHMpOwoKCgoKIyAxNTEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIg MwoKIyAxNjAgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwoKCgoKCgogCgoKCiMgNzI0ICIvdXNy L2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCgoKCgogCgoKZXh0ZXJuIGludCBnZXRob3N0bmFtZSAg KGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSAgICA7CgogCgpleHRlcm4gaW50IHNldGhvc3Ru YW1lICAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgICAgOwoKIAoKZXh0ZXJu IGludCBzZXRob3N0aWQgIChsb25nIGludCBfX2lkKSAgICA7CgoKIAoKCmV4dGVybiBpbnQgZ2V0 ZG9tYWlubmFtZSAgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKSAgICA7CmV4dGVybiBpbnQg c2V0ZG9tYWlubmFtZSAgKF9fY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pICAgIDsK CgogCmV4dGVybiBpbnQgZnN5bmMgIChpbnQgX19mZCkgICAgOwoKCiAKCgpleHRlcm4gaW50IHZo YW5ndXAgICh2b2lkKSAgICA7CgogCmV4dGVybiBpbnQgcmV2b2tlICAoX19jb25zdCBjaGFyICpf X2ZpbGUpICAgIDsKCgogCgoKCgpleHRlcm4gaW50IHByb2ZpbCAgKHVuc2lnbmVkIHNob3J0IGlu dCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXplLAoJCQlzaXplX3QgX19vZmZzZXQsIHVu c2lnbmVkIGludCBfX3NjYWxlKSAgICA7CgoKIAoKCmV4dGVybiBpbnQgYWNjdCAgKF9fY29uc3Qg Y2hhciAqX19uYW1lKSAgICA7CgogCgpleHRlcm4gaW50IGNocm9vdCAgKF9fY29uc3QgY2hhciAq X19wYXRoKSAgICA7CgoKIApleHRlcm4gY2hhciAqZ2V0dXNlcnNoZWxsICAodm9pZCkgICAgOwpl eHRlcm4gdm9pZCBlbmR1c2Vyc2hlbGwgICh2b2lkKSAgICA7ICAKZXh0ZXJuIHZvaWQgc2V0dXNl cnNoZWxsICAodm9pZCkgICAgOyAgCgoKIAoKZXh0ZXJuIGNoYXIgKmdldHBhc3MgIChfX2NvbnN0 IGNoYXIgKl9fcHJvbXB0KSAgICA7CgogCgoKZXh0ZXJuIGludCBkYWVtb24gIChpbnQgX19ub2No ZGlyLCBpbnQgX19ub2Nsb3NlKSAgICA7CgoKCgoKCiAKZXh0ZXJuIGxvbmcgaW50IGdldGhvc3Rp ZCAgKHZvaWQpICAgIDsKCiAKZXh0ZXJuIGludCBzeW5jICAodm9pZCkgICAgOwoKCiAKCmV4dGVy biBpbnQgX19nZXRwYWdlc2l6ZSAgKHZvaWQpICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSk7CmV4dGVybiBpbnQgZ2V0cGFnZXNpemUgICh2b2lkKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOwoKCiAKCmV4dGVybiBpbnQgdHJ1bmNhdGUgIChfX2NvbnN0IGNoYXIgKl9fZmls ZSwgX19vZmZfdCBfX2xlbmd0aCkgICAgOwojIDgyNyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz CgoKCgoKIApleHRlcm4gaW50IF9fZnRydW5jYXRlICAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5n dGgpICAgIDsKCmV4dGVybiBpbnQgZnRydW5jYXRlICAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5n dGgpICAgIDsKCgoKCgoKCgoKCgoKCiAKCmV4dGVybiBpbnQgZ2V0ZHRhYmxlc2l6ZSAgKHZvaWQp ICAgIDsKCgoKCgoKIAoKZXh0ZXJuIGludCBicmsgICh2b2lkICogIF9fYWRkcikgICAgOwoKCiMg MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9z dGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3 YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMg NjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUv c3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCgoK CgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGludCBwdHJkaWZmX3Q7CgoKCgoKCgoKCiAKCgoKCiAK CiAKCiMgMTkwICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9p bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGliL3Mz OTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91 c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVm LmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51 eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj IDg2MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMKCgogCgoKCmV4dGVybiB2b2lkICogIF9f c2JyayAgKHB0cmRpZmZfdCBfX2RlbHRhKSAgICA7CmV4dGVybiB2b2lkICogIHNicmsgIChwdHJk aWZmX3QgX19kZWx0YSkgICAgOwoKCgoKIAoKCgoKCgoKCgpleHRlcm4gbG9uZyBpbnQgc3lzY2Fs bCAgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgICAgOwoKCgoKCiAKCgoKIAoKCgoKCgoKCgpleHRl cm4gaW50IGxvY2tmICAoaW50IF9fZmQsIGludCBfX2NtZCwgX19vZmZfdCBfX2xlbikgICAgOwoK CgoKCgoKCgoKCgoKCiMgOTQwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKIAoKZXh0ZXJu IGludCBmZGF0YXN5bmMgIChpbnQgX19maWxkZXMpICAgIDsKCgoKIAoKIyA5NjggIi91c3IvaW5j bHVkZS91bmlzdGQuaCIgMwoKCgogCgojIDk4MyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoK CgogCgogCgoKCgoKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdGZvcmsgICh2b2lkICgqX19wcmVw YXJlKSAodm9pZCksCgkJCQl2b2lkICgqX19wYXJlbnQpICh2b2lkKSwKCQkJCXZvaWQgKCpfX2No aWxkKSAodm9pZCkpICAgIDsKCgogCgoKIyAxMyAibWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3Iv aW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoK CgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5 cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19x dWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lk X3QgZnNpZF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3Qg aW5vX3Q7CgoKCgoKCgoKCgoKdHlwZWRlZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dp ZF90IGdpZF90OwoKCgoKdHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxp bmtfdCBubGlua190OwoKCgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwoKCgoKCgoKCgoKCgoKCgoK CnR5cGVkZWYgX19waWRfdCBwaWRfdDsKCgoKCnR5cGVkZWYgX19pZF90IGlkX3Q7CgoKCgoKCgoK dHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoK dHlwZWRlZiBfX2tleV90IGtleV90OwoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEg MwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvaW5jbHVkZS90 aW1lLmgiIDMKCgoKIyA2MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCgoKCiAKdHlwZWRl ZiBfX3RpbWVfdCB0aW1lX3Q7CgoKCgoKIyA4OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoK IyAyNzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAxMjIgIi91c3IvaW5jbHVkZS9zeXMv dHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51 eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9n Y2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK CiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGlu dXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK CgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGlu dXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2dj Yy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoK CgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8y Ljk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL3MzOTAt c2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcg Ii91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3Rk ZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxMjUgIi91c3IvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMiAzCgoKCiAKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlw ZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50 OwoKCiAKCiMgMTU5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKCgogCgoKCgoKCgp0eXBl ZGVmIGludCBpbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fUUlfXyApKSkgOwp0 eXBlZGVmIGludCBpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0hJX18gKSkp IDsKdHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19TSV9f ICkpKSA7CnR5cGVkZWYgaW50IGludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9f RElfXyApKSkgOwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18g KChfX21vZGVfXyAoICBfX1FJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90 IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0hJX18gKSkpIDsKdHlwZWRlZiB1bnNpZ25l ZCBpbnQgdV9pbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1NJX18gKSkpIDsK dHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAo ICBfX0RJX18gKSkpIDsKCnR5cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9f bW9kZV9fIChfX3dvcmRfXykpKTsKCgogCgoKCgoKCiAKCgogCiMgMSAiL3Vzci9pbmNsdWRlL3N5 cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKIAojIDEgIi91 c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK CgoKCgoKCgoKCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAKIyAxICIv dXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlw ZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CgogCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNp Z25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGlu dCkpKSBdOwogIH0gX19zaWdzZXRfdDsKCgoKCiAKCgoKCgojIDEyNSAiL3Vzci9pbmNsdWRlL2Jp dHMvc2lnc2V0LmgiIDMKCiMgMzQgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAK CiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK CgoKCgoKCgoKIyA1MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDYyICIvdXNyL2luY2x1 ZGUvdGltZS5oIiAzCgoKCiMgNzMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgogCgpz dHJ1Y3QgdGltZXNwZWMKICB7CiAgICBsb25nIGludCB0dl9zZWM7CQkgCiAgICBsb25nIGludCB0 dl9uc2VjOwkJIAogIH07CgoKCgoKIyAyNzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAz OCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIAoKIAoKCgpzdHJ1Y3QgdGltZXZh bDsKCnR5cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CgogCnR5cGVkZWYgX19mZF9zZXQgZmRfc2V0 OwoKIAoKCgogCgoKCgogCgoKCgoKCiAKCgoKCmV4dGVybiBpbnQgX19zZWxlY3QgIChpbnQgX19u ZmRzLCBfX2ZkX3NldCAqX19yZWFkZmRzLAoJCQkgIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2Zk X3NldCAqX19leGNlcHRmZHMsCgkJCSAgc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCkgICAgOwpl eHRlcm4gaW50IHNlbGVjdCAgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsCgkJCV9f ZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRmZHMsCgkJCXN0cnVjdCB0aW1l dmFsICpfX3RpbWVvdXQpICAgIDsKCiMgOTEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMK CgogCgoKIyAxOTQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIAojIDEgIi91c3Iv aW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK CgoKCgojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL3N5c21hY3Jvcy5oIiAzCgoKCiMgMTk3ICIvdXNy L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgoKIAoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2Nu dF90OwkgIAp0eXBlZGVmIF9fZnNibGtjbnRfdCBmc2Jsa2NudF90OyAgCnR5cGVkZWYgX19mc2Zp bGNudF90IGZzZmlsY250X3Q7ICAKCgoKCgoKCgoKCgoKIAoKCiMgMTQgIm1rcmVpc2VyZnMuYyIg MgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgog CgoKCgoKCgoKCgojIDc4ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwoKCgoKCgoKCgogCgoj IDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK IAoKCgoKCgogCgoKCgoKc3RydWN0IHN0YXQKICB7CiAgICBfX2Rldl90IHN0X2RldjsJCQkgCiAg ICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQxOwoKICAgIF9faW5vX3Qgc3RfaW5vOwkJCSAKCgoK ICAgIF9fbW9kZV90IHN0X21vZGU7CQkJIAogICAgX19ubGlua190IHN0X25saW5rOwkJCSAKICAg IF9fdWlkX3Qgc3RfdWlkOwkJCSAKICAgIF9fZ2lkX3Qgc3RfZ2lkOwkJCSAKICAgIF9fZGV2X3Qg c3RfcmRldjsJCQkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwoKICAgIF9fb2ZmX3Qg c3Rfc2l6ZTsJCQkgCgoKCiAgICB1bnNpZ25lZCBsb25nIGludCBzdF9ibGtzaXplOwkgCgoKICAg IF9fYmxrY250X3Qgc3RfYmxvY2tzOwkJIAoKCgogICAgX190aW1lX3Qgc3RfYXRpbWU7CQkJIAog ICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQxOwogICAgX190aW1lX3Qgc3RfbXRpbWU7CQkJ IAogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQyOwogICAgX190aW1lX3Qgc3RfY3RpbWU7 CQkJIAogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQzOwogICAgdW5zaWduZWQgbG9uZyBp bnQgX191bnVzZWQ0OwogICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQ1OwogIH07CgojIDk5 ICIvdXNyL2luY2x1ZGUvYml0cy9zdGF0LmgiIDMKCgogCgoKCiAKCgoKIAoKCgoKCgogCgoKCiAK CgoKCgoKCiMgODkgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKCgoKCgoKCgoKCgoKCgoK CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgoKCgoKCiAKCgoKCgoKCgoK CgogCgoKCgoKIAoKCgoKIAoKCgoKCgoKCgogCmV4dGVybiBpbnQgc3RhdCAgKF9fY29uc3QgY2hh ciAqX19maWxlLCBzdHJ1Y3Qgc3RhdCAqX19idWYpICAgIDsKCiAKCmV4dGVybiBpbnQgZnN0YXQg IChpbnQgX19mZCwgc3RydWN0IHN0YXQgKl9fYnVmKSAgICA7CiMgMTk1ICIvdXNyL2luY2x1ZGUv c3lzL3N0YXQuaCIgMwoKCgoKCgoKCiAKCmV4dGVybiBpbnQgbHN0YXQgIChfX2NvbnN0IGNoYXIg Kl9fZmlsZSwgc3RydWN0IHN0YXQgKl9fYnVmKSAgICA7CgoKCgoKCgoKCgoKCgogCgoKZXh0ZXJu IGludCBjaG1vZCAgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUpICAgIDsK CiAKCmV4dGVybiBpbnQgZmNobW9kICAoaW50IF9fZmQsIF9fbW9kZV90IF9fbW9kZSkgICAgOwoK CgogCgpleHRlcm4gX19tb2RlX3QgdW1hc2sgIChfX21vZGVfdCBfX21hc2spICAgIDsKCgoKCgoK CiAKZXh0ZXJuIGludCBta2RpciAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21v ZGUpICAgIDsKCiAKCgoKZXh0ZXJuIGludCBta25vZCAgKF9fY29uc3QgY2hhciAqX19wYXRoLAoJ CSAgICAgICBfX21vZGVfdCBfX21vZGUsIF9fZGV2X3QgX19kZXYpICAgIDsKCgoKIApleHRlcm4g aW50IG1rZmlmbyAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUpICAgIDsK DAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCmV4dGVybiBpbnQgX19meHN0YXQgIChpbnQgX192 ZXIsIGludCBfX2ZpbGRlcywKCQkJICBzdHJ1Y3Qgc3RhdCAqX19zdGF0X2J1ZikgICAgOwpleHRl cm4gaW50IF9feHN0YXQgIChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwKCQkJ IHN0cnVjdCBzdGF0ICpfX3N0YXRfYnVmKSAgICA7CmV4dGVybiBpbnQgX19seHN0YXQgIChpbnQg X192ZXIsIF9fY29uc3QgY2hhciAqX19maWxlbmFtZSwKCQkJICBzdHJ1Y3Qgc3RhdCAqX19zdGF0 X2J1ZikgICAgOwojIDI5OSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKCgoKCgoKCgoKCmV4 dGVybiBpbnQgX194bWtub2QgIChpbnQgX192ZXIsIF9fY29uc3QgY2hhciAqX19wYXRoLAoJCQkg IF9fbW9kZV90IF9fbW9kZSwgX19kZXZfdCAqX19kZXYpICAgIDsKCgogCgpleHRlcm4gX19pbmxp bmVfXyBpbnQgc3RhdCAoX19jb25zdCBjaGFyICpfX3BhdGgsCgkJCSAgICBzdHJ1Y3Qgc3RhdCAq X19zdGF0YnVmKSAgCnsKICByZXR1cm4gX194c3RhdCAoMyAgLCBfX3BhdGgsIF9fc3RhdGJ1Zik7 Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgbHN0YXQgKF9fY29uc3QgY2hhciAqX19wYXRoLAoJ CQkgICAgIHN0cnVjdCBzdGF0ICpfX3N0YXRidWYpICAKewogIHJldHVybiBfX2x4c3RhdCAoMyAg LCBfX3BhdGgsIF9fc3RhdGJ1Zik7Cn0KCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZnN0YXQgKGlu dCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19zdGF0YnVmKSAgCnsKICByZXR1cm4gX19meHN0YXQgKDMg ICwgX19mZCwgX19zdGF0YnVmKTsKfQoKCmV4dGVybiBfX2lubGluZV9fIGludCBta25vZCAoX19j b25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKCQkJICAgICBfX2Rldl90IF9fZGV2 KSAgCnsKICByZXR1cm4gX194bWtub2QgKDEgICwgX19wYXRoLCBfX21vZGUsICZfX2Rldik7Cn0K CgojIDM2MSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKCgoKCiAKCgoKIyAxNSAibWtyZWlz ZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS9mY250bC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK CgoKCiAKCgoKCgoKCgogCiAKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMSAz CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK CgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgogCgoKIAoKCgoKIAoKCgoKIAoKCgoK CgoKc3RydWN0IGZsb2NrCiAgewogICAgc2hvcnQgaW50IGxfdHlwZTsJIAogICAgc2hvcnQgaW50 IGxfd2hlbmNlOwkgCgogICAgX19vZmZfdCBsX3N0YXJ0OwkgCiAgICBfX29mZl90IGxfbGVuOwkg CgoKCgogICAgX19waWRfdCBsX3BpZDsJIAogIH07CgojIDEzMSAiL3Vzci9pbmNsdWRlL2JpdHMv ZmNudGwuaCIgMwoKCiAKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMiAzCgoK IAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCmV4dGVybiBpbnQgX19mY250bCAgKGludCBfX2Zk LCBpbnQgX19jbWQsIC4uLikgICAgOwpleHRlcm4gaW50IGZjbnRsICAoaW50IF9fZmQsIGludCBf X2NtZCwgLi4uKSAgICA7CgogCgoKZXh0ZXJuIGludCBfX29wZW4gIChfX2NvbnN0IGNoYXIgKl9f ZmlsZSwgaW50IF9fb2ZsYWcsIC4uLikgICAgOwoKZXh0ZXJuIGludCBvcGVuICAoX19jb25zdCBj aGFyICpfX2ZpbGUsIGludCBfX29mbGFnLCAuLi4pICAgIDsKCgoKCgoKCgoKCgoKIAoKCgpleHRl cm4gaW50IGNyZWF0ICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkgICAg OwoKCgoKCgoKCgoKCgojIDEyNiAiL3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMKCgogCgoKIyAxNiAi bWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoK CgoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKIAoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw LXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgoj IDE5ICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRl L3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvczM5 MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoK CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvczM5 MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAx ODggIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUv c3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNs YWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMgMjgzICIvdXNyL2xp Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAz CgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45 NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAzOCAi L3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1l LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgogCgoKCgoKIAoKCgoKCgoK IyA1OSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzCiAKIyA0MiAiL3Vzci9pbmNsdWRlL3Rp bWUuaCIgMiAzCgoKIAoKCgoKCgoKCgoKCgoKCiAKdHlwZWRlZiBfX2Nsb2NrX3QgY2xvY2tfdDsK CgoKCiMgNzMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKCiMgODkgIi91c3IvaW5jbHVkZS90 aW1lLmgiIDMKCgoKCgogCnN0cnVjdCB0bQp7CiAgaW50IHRtX3NlYzsJCQkgCiAgaW50IHRtX21p bjsJCQkgCiAgaW50IHRtX2hvdXI7CQkJIAogIGludCB0bV9tZGF5OwkJCSAKICBpbnQgdG1fbW9u OwkJCSAKICBpbnQgdG1feWVhcjsJCQkgCiAgaW50IHRtX3dkYXk7CQkJIAogIGludCB0bV95ZGF5 OwkJCSAKICBpbnQgdG1faXNkc3Q7CQkJIAoKCiAgbG9uZyBpbnQgdG1fZ210b2ZmOwkJIAogIF9f Y29uc3QgY2hhciAqdG1fem9uZTsJIAoKCgoKfTsKCgogCgpleHRlcm4gY2xvY2tfdCBjbG9jayAg KHZvaWQpICAgIDsKCiAKZXh0ZXJuIHRpbWVfdCB0aW1lICAodGltZV90ICpfX3RpbWVyKSAgICA7 CgogCmV4dGVybiBkb3VibGUgZGlmZnRpbWUgICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGlt ZTApICAgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuIHRpbWVf dCBta3RpbWUgIChzdHJ1Y3QgdG0gKl9fdHApICAgIDsKCgogCgoKZXh0ZXJuIHNpemVfdCBzdHJm dGltZSAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAoJCQkgICAgIF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICAgICBfX2NvbnN0IHN0cnVjdCB0 bSAqX19yZXN0cmljdCBfX3RwKSAgICA7CgoKCgoKCgoKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKmdt dGltZSAgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSAgICA7CgogCgpleHRlcm4gc3RydWN0IHRt ICpsb2NhbHRpbWUgIChfX2NvbnN0IHRpbWVfdCAqX190aW1lcikgICAgOwoKCiAKCmV4dGVybiBz dHJ1Y3QgdG0gKl9fZ210aW1lX3IgIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVy LAoJCQkJICAgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApICAgIDsKZXh0ZXJuIHN0cnVjdCB0 bSAqZ210aW1lX3IgIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAoJCQkJIHN0 cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSAgICA7CgogCgpleHRlcm4gc3RydWN0IHRtICpsb2Nh bHRpbWVfciAgKF9fY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCgkJCQkgICAgc3Ry dWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApICAgIDsKCgogCgpleHRlcm4gY2hhciAqYXNjdGltZSAg KF9fY29uc3Qgc3RydWN0IHRtICpfX3RwKSAgICA7CgogCmV4dGVybiBjaGFyICpjdGltZSAgKF9f Y29uc3QgdGltZV90ICpfX3RpbWVyKSAgICA7CgoKIAoKIAoKZXh0ZXJuIGNoYXIgKmFzY3RpbWVf ciAgKF9fY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCgkJCSAgICAgY2hhciAqX19y ZXN0cmljdCBfX2J1ZikgICAgOwoKIApleHRlcm4gY2hhciAqY3RpbWVfciAgKF9fY29uc3QgdGlt ZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCgkJCSAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpICAg IDsKCgoKIApleHRlcm4gY2hhciAqX190em5hbWVbMl07CSAKZXh0ZXJuIGludCBfX2RheWxpZ2h0 OwkJIApleHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsJIAoKCgogCmV4dGVybiBjaGFyICp0em5h bWVbMl07CgogCgpleHRlcm4gdm9pZCB0enNldCAgKHZvaWQpICAgIDsKCgoKZXh0ZXJuIGludCBk YXlsaWdodDsKZXh0ZXJuIGxvbmcgaW50IHRpbWV6b25lOwoKCgogCgpleHRlcm4gaW50IHN0aW1l ICAoX19jb25zdCB0aW1lX3QgKl9fd2hlbikgICAgOwoKCgogCgoKCgoKCiAKCgogCmV4dGVybiB0 aW1lX3QgdGltZWdtICAoc3RydWN0IHRtICpfX3RwKSAgICA7CgogCmV4dGVybiB0aW1lX3QgdGlt ZWxvY2FsICAoc3RydWN0IHRtICpfX3RwKSAgICA7CgogCmV4dGVybiBpbnQgZHlzaXplICAoaW50 IF9feWVhcikgICAgOwoKCgoKIApleHRlcm4gaW50IG5hbm9zbGVlcCAgKF9fY29uc3Qgc3RydWN0 IHRpbWVzcGVjICpfX3JlcXVlc3RlZF90aW1lLAoJCQkgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVt YWluaW5nKSAgICA7CgoKCiMgMjY0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKIyAyNzQgIi91 c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIAoKCgoKIyAxNyAibWtyZWlzZXJmcy5jIiAyCgojIDEg Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgog CgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9p bmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvczM5 MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoK CgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIv aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgog CgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIv aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkw LXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAK CgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5j bHVkZS9zdGRkZWYuaCIgMwoKCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dh cmUtbGludXgvMi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9s aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg MwoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi IDIgMwoKCiAKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsJCQkgCiAgICBp bnQgcmVtOwkJCSAKICB9IGRpdl90OwoKIAoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGlu dCBxdW90OwkJIAogICAgbG9uZyBpbnQgcmVtOwkJIAogIH0gbGRpdl90OwoKCgojIDY1ICIvdXNy L2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKIAoKCgogCgoKCgoKIAoKZXh0ZXJuIHNpemVfdCBfX2N0 eXBlX2dldF9tYl9jdXJfbWF4ICAodm9pZCkgICAgOwoKCiAKZXh0ZXJuIGRvdWJsZSBhdG9mICAo X19jb25zdCBjaGFyICpfX25wdHIpICAgIDsKIApleHRlcm4gaW50IGF0b2kgIChfX2NvbnN0IGNo YXIgKl9fbnB0cikgICAgOwogCmV4dGVybiBsb25nIGludCBhdG9sICAoX19jb25zdCBjaGFyICpf X25wdHIpICAgIDsKCgogCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9uZyBpbnQgYXRvbGwg IChfX2NvbnN0IGNoYXIgKl9fbnB0cikgICAgOwoKCiAKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgIChf X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkgICBjaGFyICoqX19yZXN0cmljdCBf X2VuZHB0cikgICAgOwoKCgoKCgoKCgoKIApleHRlcm4gbG9uZyBpbnQgc3RydG9sICAoX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu ZHB0ciwgaW50IF9fYmFzZSkgICAgOwogCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3Vs ICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAgICBjaGFyICoqX19y ZXN0cmljdCBfX2VuZHB0ciwKCQkJCSAgICAgICBpbnQgX19iYXNlKSAgICA7CgoKIApfX2V4dGVu c2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAgKF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX25wdHIsCgkJCQkgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNl KSAgICA7CiAKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0 b3VxICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgY2hhciAqKl9f cmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJICAgIGludCBfX2Jhc2UpICAgIDsKCgoKIAoKIApfX2V4 dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvbGwgIChfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19ucHRyLAoJCQkJICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBf X2Jhc2UpICAgIDsKIApfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50 IHN0cnRvdWxsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgIGNo YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCSAgICAgaW50IF9fYmFzZSkgICAgOwoKCgoj IDE5MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiAKCgpleHRlcm4gZG91YmxlIF9fc3Ry dG9kX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAg IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJICAgICAgaW50IF9fZ3JvdXApICAgIDsK ZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fbnB0ciwKCQkJCSAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3Vw KSAgICA7CmV4dGVybiBsb25nIGRvdWJsZSAgX19zdHJ0b2xkX2ludGVybmFsICAoX19jb25zdCBj aGFyICoKCQkJCQkJX19yZXN0cmljdCBfX25wdHIsCgkJCQkJCWNoYXIgKipfX3Jlc3RyaWN0IF9f ZW5kcHRyLAoJCQkJCQlpbnQgX19ncm91cCkgICAgOwoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9s X2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQljaGFyICoq X19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQlpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgICAgOwoK CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsICAoX19jb25zdCBj aGFyICoKCQkJCQkJICBfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJICBjaGFyICoqX19yZXN0cmlj dCBfX2VuZHB0ciwKCQkJCQkJICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgICAgOwoKCgoKX19l eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgIChfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCSAgICAgIGNoYXIgKipfX3Jlc3RyaWN0 IF9fZW5kcHRyLAoJCQkJCSAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgICA7CgoKCl9f ZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9pbnRl cm5hbCAgKF9fY29uc3QgY2hhciAqCgkJCQkJCQlfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJCWNo YXIgKioKCQkJCQkJCV9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJCQlpbnQgX19iYXNlLAoJCQkJ CQkJaW50IF9fZ3JvdXApICAgIDsKCgoKCgoKIAoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0 b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9f ZW5kcHRyKSAgCnsKICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs IDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJaW50IF9fYmFzZSkg IAp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us IDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCSBp bnQgX19iYXNlKSAgCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5k cHRyLCBfX2Jhc2UsIDApOwp9CgojIDI3MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCl9f ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9xIChfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCWlu dCBfX2Jhc2UpICAKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw dHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQg bG9uZyBsb25nIGludApzdHJ0b3VxIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBj aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCSBpbnQgX19iYXNlKSAgCnsKICByZXR1cm4gX19z dHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCgpfX2V4 dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvbGwgKF9fY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJIGlu dCBfX2Jhc2UpICAKewogIHJldHVybiBfX3N0cnRvbGxfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRw dHIsIF9fYmFzZSwgMCk7Cn0KX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdW5zaWduZWQg bG9uZyBsb25nIGludApzdHJ0b3VsbCAoX19jb25zdCBjaGFyICogX19yZXN0cmljdCBfX25wdHIs IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJICBpbnQgX19iYXNlKSAgCnsKICByZXR1cm4g X19zdHJ0b3VsbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCmV4 dGVybiBfX2lubGluZSBkb3VibGUKYXRvZiAoX19jb25zdCBjaGFyICpfX25wdHIpICAKewogIHJl dHVybiBzdHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApICk7Cn0KZXh0ZXJuIF9f aW5saW5lIGludAphdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIAp7CiAgcmV0dXJuIChpbnQp IHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkgLCAxMCk7Cn0KZXh0ZXJuIF9f aW5saW5lIGxvbmcgaW50CmF0b2wgKF9fY29uc3QgY2hhciAqX19ucHRyKSAgCnsKICByZXR1cm4g c3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSAsIDEwKTsKfQoKCl9fZXh0ZW5z aW9uX18gZXh0ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKYXRvbGwgKF9fY29uc3QgY2hhciAq X19ucHRyKSAgCnsKICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICop MCkgLCAxMCk7Cn0KCgoKCgogCgoKZXh0ZXJuIGNoYXIgKmw2NGEgIChsb25nIGludCBfX24pICAg IDsKCiAKZXh0ZXJuIGxvbmcgaW50IGE2NGwgIChfX2NvbnN0IGNoYXIgKl9fcykgICAgOwoKCgoK IAoKCgogCmV4dGVybiBpbnQzMl90IHJhbmRvbSAgKHZvaWQpICAgIDsKCiAKZXh0ZXJuIHZvaWQg c3JhbmRvbSAgKHVuc2lnbmVkIGludCBfX3NlZWQpICAgIDsKCiAKCgoKZXh0ZXJuIHZvaWQgKiAg aW5pdHN0YXRlICAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAqICBfX3N0YXRlYnVmLAoJCQkg ICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pICAgIDsKCiAKCmV4dGVybiB2b2lkICogIHNldHN0YXRl ICAodm9pZCAqICBfX3N0YXRlYnVmKSAgICA7CgoKCiAKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAg ewogICAgaW50MzJfdCAqZnB0cjsJCSAKICAgIGludDMyX3QgKnJwdHI7CQkgCiAgICBpbnQzMl90 ICpzdGF0ZTsJCSAKICAgIGludCByYW5kX3R5cGU7CQkgCiAgICBpbnQgcmFuZF9kZWc7CQkgCiAg ICBpbnQgcmFuZF9zZXA7CQkgCiAgICBpbnQzMl90ICplbmRfcHRyOwkJIAogIH07CgpleHRlcm4g aW50IHJhbmRvbV9yICAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQkg IGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAgIDsKCmV4dGVybiBpbnQgc3JhbmRvbV9y ICAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikgICAgOwoK ZXh0ZXJuIGludCBpbml0c3RhdGVfciAgKHVuc2lnbmVkIGludCBfX3NlZWQsCgkJCSAgICAgdm9p ZCAqICBfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCgkJCSAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCgkJ CSAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSAgICA7CgpleHRlcm4g aW50IHNldHN0YXRlX3IgICh2b2lkICogIF9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKCQkJICAgIHN0 cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgICAgOwoKCgoKIApleHRlcm4gaW50 IHJhbmQgICh2b2lkKSAgICA7CiAKZXh0ZXJuIHZvaWQgc3JhbmQgICh1bnNpZ25lZCBpbnQgX19z ZWVkKSAgICA7CgoKIApleHRlcm4gaW50IHJhbmRfciAgKHVuc2lnbmVkIGludCAqX19zZWVkKSAg ICA7CgoKCgogCgogCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAgKHZvaWQpICAgIDsKZXh0ZXJuIGRv dWJsZSBlcmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsKCiAKZXh0 ZXJuIGxvbmcgaW50IGxyYW5kNDggICh2b2lkKSAgICA7CmV4dGVybiBsb25nIGludCBucmFuZDQ4 ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsKCiAKZXh0ZXJuIGxvbmcgaW50 IG1yYW5kNDggICh2b2lkKSAgICA7CmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICAodW5zaWduZWQg c2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsKCiAKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAgKGxvbmcg aW50IF9fc2VlZHZhbCkgICAgOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggICh1 bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSAgICA7CmV4dGVybiB2b2lkIGxjb25nNDgg ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgICAgOwoKIApzdHJ1Y3QgZHJhbmQ0OF9k YXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IHhbM107CSAKICAgIHVuc2lnbmVkIHNob3J0 IGludCBhWzNdOwkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsJIAogICAgdW5zaWduZWQgc2hv cnQgaW50IG9sZF94WzNdOyAgCiAgICBpbnQgaW5pdDsJCQkgCiAgfTsKCgogCmV4dGVybiBpbnQg ZHJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJ ICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgICA7CmV4dGVybiBpbnQgZXJhbmQ0OF9y ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2Rh dGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3Vs dCkgICAgOwoKIApleHRlcm4gaW50IGxyYW5kNDhfciAgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f cmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAg ICA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10s CgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGxv bmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgICA7CgogCmV4dGVybiBpbnQgbXJhbmQ0OF9y ICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgbG9uZyBp bnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAgIDsKZXh0ZXJuIGludCBqcmFuZDQ4X3IgICh1bnNp Z25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkJICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19y ZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAg IDsKCiAKZXh0ZXJuIGludCBzcmFuZDQ4X3IgIChsb25nIGludCBfX3NlZWR2YWwsIHN0cnVjdCBk cmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgICA7CgpleHRlcm4gaW50IHNlZWQ0OF9yICAodW5zaWdu ZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSwKCQkJICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1 ZmZlcikgICAgOwoKZXh0ZXJuIGludCBsY29uZzQ4X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX19w YXJhbVs3XSwKCQkJICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpICAgIDsKCgoKCgoK CgoKCgoKCgogCgpleHRlcm4gdm9pZCAqICByZWFsbG9jICAodm9pZCAqICBfX3B0ciwgc2l6ZV90 IF9fc2l6ZSkgICAgOwogCmV4dGVybiB2b2lkIGZyZWUgICh2b2lkICogIF9fcHRyKSAgICA7CgoK IApleHRlcm4gdm9pZCBjZnJlZSAgKHZvaWQgKiAgX19wdHIpICAgIDsKCgoKIyAxICIvdXNyL2lu Y2x1ZGUvYWxsb2NhLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xp Yi9nY2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAx IDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgv Mi45NS4yL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9s aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg MwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9s aWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIg MwoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNrd2FyZS1saW51eC8y Ljk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9n Y2MtbGliL3MzOTAtc2xhY2t3YXJlLWxpbnV4LzIuOTUuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK IyAyODMgIi91c3IvbGliL2djYy1saWIvczM5MC1zbGFja3dhcmUtbGludXgvMi45NS4yL2luY2x1 ZGUvc3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9zMzkwLXNsYWNr d2FyZS1saW51eC8yLjk1LjIvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoK CgoKCgoKCgojIDI1ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKCiAKCiAKCgogCmV4dGVy biB2b2lkICogIGFsbG9jYSAgKHNpemVfdCBfX3NpemUpICAgIDsKCgoKCgogCgoKIyA0OTIgIi91 c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgogCmV4dGVybiB2b2lkICogIHZhbGxvYyAgKHNp emVfdCBfX3NpemUpICAgIDsKCgoKIApleHRlcm4gdm9pZCBhYm9ydCAgKHZvaWQpICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKIApleHRlcm4gaW50IGF0ZXhpdCAgKHZvaWQg KCpfX2Z1bmMpICh2b2lkKSkgICAgOwoKCiAKCmV4dGVybiBpbnQgX19vbl9leGl0ICAodm9pZCAo Kl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqICBfX2FyZyksCgkJCSAgIHZvaWQgKiAgX19h cmcpICAgIDsKZXh0ZXJuIGludCBvbl9leGl0ICAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1 cywgdm9pZCAqICBfX2FyZyksCgkJCSB2b2lkICogIF9fYXJnKSAgICA7CgoKIAoKCmV4dGVybiB2 b2lkIGV4aXQgIChpbnQgX19zdGF0dXMpICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f KSk7CgoKCgoKCgoKIApleHRlcm4gY2hhciAqZ2V0ZW52ICAoX19jb25zdCBjaGFyICpfX25hbWUp ICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9f bmFtZSkgICAgOwoKCiAKIAoKZXh0ZXJuIGludCBwdXRlbnYgIChjaGFyICpfX3N0cmluZykgICAg OwoKCgogCgpleHRlcm4gaW50IHNldGVudiAgKF9fY29uc3QgY2hhciAqX19uYW1lLCBfX2NvbnN0 IGNoYXIgKl9fdmFsdWUsCgkJCWludCBfX3JlcGxhY2UpICAgIDsKCiAKZXh0ZXJuIHZvaWQgdW5z ZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgICAgOwoKCgogCgoKZXh0ZXJuIGludCBjbGVh cmVudiAgKHZvaWQpICAgIDsKCgoKCiAKCgoKZXh0ZXJuIGNoYXIgKm1rdGVtcCAgKGNoYXIgKl9f dGVtcGxhdGUpICAgIDsKCiAKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAgKGNoYXIgKl9fdGVtcGxh dGUpICAgIDsKCgoKIApleHRlcm4gaW50IHN5c3RlbSAgKF9fY29uc3QgY2hhciAqX19jb21tYW5k KSAgICA7CgoKCgoKCgoKCgogCgoKCgoKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoICAoX19jb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKCQkJICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZl ZCkgICAgOwoKCgogCgoKdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAgKF9fY29uc3Qgdm9p ZCAqICwgX19jb25zdCB2b2lkICogKSAgOwoKCgoKCgogCgpleHRlcm4gdm9pZCAqICBic2VhcmNo ICAoX19jb25zdCB2b2lkICogIF9fa2V5LCBfX2NvbnN0IHZvaWQgKiAgX19iYXNlLAoJCQkgICAg ICAgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCgkJCSAgICAgICBfX2NvbXBhcl9mbl90 IF9fY29tcGFyKSAgOwoKIAoKZXh0ZXJuIHZvaWQgcXNvcnQgICh2b2lkICogIF9fYmFzZSwgc2l6 ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsCgkJCSAgX19jb21wYXJfZm5fdCBfX2NvbXBhcikg IDsKCgogCmV4dGVybiBpbnQgYWJzICAoaW50IF9feCkgICAgIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgIChsb25nIGludCBfX3gpICAgICBfX2F0dHJp YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCiAKCiAKZXh0ZXJuIGRpdl90IGRpdiAgKGludCBf X251bWVyLCBpbnQgX19kZW5vbSkgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0 ZXJuIGxkaXZfdCBsZGl2ICAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5vbSkgICAg CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgoKCiAKCgogCgoKZXh0ZXJu IGNoYXIgKmVjdnQgIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJp Y3QgX19kZWNwdCwKCQkJaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgICAgOwoKIAoKCmV4dGVybiBj aGFyICpmY3Z0ICAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0 IF9fZGVjcHQsCgkJCWludCAqX19yZXN0cmljdCBfX3NpZ24pICAgIDsKCiAKCgpleHRlcm4gY2hh ciAqZ2N2dCAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSAgICA7 CgogCmV4dGVybiBjaGFyICpxZWN2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGln aXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikg ICAgOwpleHRlcm4gY2hhciAqcWZjdnQgIChsb25nIGRvdWJsZSAgX192YWx1ZSwgaW50IF9fbmRp Z2l0LAoJCQkgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24p ICAgIDsKZXh0ZXJuIGNoYXIgKnFnY3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25k aWdpdCwgY2hhciAqX19idWYpICAgIDsKCgoKIAoKZXh0ZXJuIGludCBlY3Z0X3IgIChkb3VibGUg X192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50ICpf X3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKCQkJc2l6ZV90IF9fbGVu KSAgICA7CmV4dGVybiBpbnQgZmN2dF9yICAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwg aW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCgkJCWludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIg Kl9fcmVzdHJpY3QgX19idWYsCgkJCXNpemVfdCBfX2xlbikgICAgOwoKZXh0ZXJuIGludCBxZWN2 dF9yICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0 cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAoJCQkgY2hhciAqX19yZXN0cmlj dCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSAgICA7CmV4dGVybiBpbnQgcWZjdnRfciAgKGxvbmcgZG91 YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwg aW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKCQkJIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVf dCBfX2xlbikgICAgOwoKCgoKIAoKZXh0ZXJuIGludCBtYmxlbiAgKF9fY29uc3QgY2hhciAqX19z LCBzaXplX3QgX19uKSAgICA7CiAKCmV4dGVybiBpbnQgbWJ0b3djICAod2NoYXJfdCAqX19yZXN0 cmljdCBfX3B3YywKCQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikg ICAgOwogCgpleHRlcm4gaW50IHdjdG9tYiAgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSAg ICA7CgoKIApleHRlcm4gc2l6ZV90IG1ic3Rvd2NzICAod2NoYXJfdCAqX19yZXN0cmljdCAgX19w d2NzLAoJCQkgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pICAg IDsKIApleHRlcm4gc2l6ZV90IHdjc3RvbWJzICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAg ICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikgICAgOwoK CgogCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAgKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkgICAg OwoKCgojIDczMiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiMgNzU2ICIvdXNyL2luY2x1 ZGUvc3RkbGliLmgiIDMKCgojIDc2NiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCgoKIAoK CiMgMTggIm1rcmVpc2VyZnMuYyIgMgoKIyAxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMSAzCiAK CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCgogCgogCgojIDEgIi91c3IvaW5jbHVkZS9i aXRzL2Vycm5vLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2luY2x1 ZGUvbGludXgvZXJybm8uaCIgMSAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIiAx IDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA0ICIvdXNyL2luY2x1ZGUvbGludXgvZXJy bm8uaCIgMiAzCgoKIyAyNCAiL3Vzci9pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDMKCgoKIyAyNSAi L3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAzCgoKIAoKCiAKCgoKCiAKZXh0ZXJuIGludCBl cnJubzsKCiAKZXh0ZXJuIGludCAqX19lcnJub19sb2NhdGlvbiAgKHZvaWQpICAgICBfX2F0dHJp YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgogCgoKCgoKCgoKCgoKCgojIDM2ICIvdXNyL2lu Y2x1ZGUvZXJybm8uaCIgMiAzCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCgoKCgoK CgoKIyAxOSAibWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvaW9jdGwuaCIg MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9p b2N0bHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAojIDEgIi91c3IvaW5jbHVkZS9h c20vaW9jdGxzLmgiIDEgMwogCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9hc20vaW9jdGwu aCIgMSAzCiAKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK CgoKCgoKCgoKCgogCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgojIDEyICIvdXNyL2luY2x1ZGUvYXNt L2lvY3Rscy5oIiAyIDMKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiMgMjQgIi91c3IvaW5jbHVkZS9i aXRzL2lvY3Rscy5oIiAyIDMKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCiAKCQkgICAgIAoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKIAoKIAoKCgoKCgog CgoKCgojIDI3ICIvdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmgiIDIgMwoKCiAKIyAxICIvdXNyL2lu Y2x1ZGUvYml0cy9pb2N0bC10eXBlcy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK CgpzdHJ1Y3Qgd2luc2l6ZQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCB3c19yb3c7CiAgICB1 bnNpZ25lZCBzaG9ydCBpbnQgd3NfY29sOwogICAgdW5zaWduZWQgc2hvcnQgaW50IHdzX3hwaXhl bDsKICAgIHVuc2lnbmVkIHNob3J0IGludCB3c195cGl4ZWw7CiAgfTsKCgpzdHJ1Y3QgdGVybWlv CiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IGNfaWZsYWc7CQkgCiAgICB1bnNpZ25lZCBzaG9y dCBpbnQgY19vZmxhZzsJCSAKICAgIHVuc2lnbmVkIHNob3J0IGludCBjX2NmbGFnOwkJIAogICAg dW5zaWduZWQgc2hvcnQgaW50IGNfbGZsYWc7CQkgCiAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsJ CSAKICAgIHVuc2lnbmVkIGNoYXIgY19jY1s4IF07CQkgCn07CgogCgoKCgoKCgoKCgoKCiAKCiAK CgoKCgoKCgoKCgoKCgoKIyAzMCAiL3Vzci9pbmNsdWRlL3N5cy9pb2N0bC5oIiAyIDMKCgogCgoK CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHR5ZGVmYXVsdHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIAoKCiAKCgoKCgoKCgoKCiMgMzcgIi91c3IvaW5jbHVk ZS9zeXMvaW9jdGwuaCIgMiAzCgoKIAoKCmV4dGVybiBpbnQgaW9jdGwgIChpbnQgX19mZCwgdW5z aWduZWQgbG9uZyBpbnQgX19yZXF1ZXN0LCAuLi4pICAgIDsKCiAKCgojIDIwICJta3JlaXNlcmZz LmMiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9tb3VudC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK CgoKCgogCgoKCgoKCgoKCgoKIAoKZW51bQp7CiAgTVNfUkRPTkxZID0gMSwJCSAKCiAgTVNfTk9T VUlEID0gMiwJCSAKCiAgTVNfTk9ERVYgPSA0LAkJCSAKCiAgTVNfTk9FWEVDID0gOCwJCSAKCiAg TVNfU1lOQ0hST05PVVMgPSAxNiwJCSAKCiAgTVNfUkVNT1VOVCA9IDMyLAkJIAoKICBNU19NQU5E TE9DSyA9IDY0LAkJIAoKICBTX1dSSVRFID0gMTI4LAkJIAoKICBTX0FQUEVORCA9IDI1NiwJCSAK CiAgU19JTU1VVEFCTEUgPSA1MTIsCQkgCgogIE1TX05PQVRJTUUgPSAxMDI0LAkJIAoKICBNU19O T0RJUkFUSU1FID0gMjA0OAkJIAoKfTsKCiAKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKIAplbnVt CnsKICBNTlRfRk9SQ0UgPSAxCQkJIAoKfTsKCgogCgogCmV4dGVybiBpbnQgbW91bnQgIChfX2Nv bnN0IGNoYXIgKl9fc3BlY2lhbF9maWxlLCBfX2NvbnN0IGNoYXIgKl9fZGlyLAoJCSAgICAgICBf X2NvbnN0IGNoYXIgKl9fZnN0eXBlLCB1bnNpZ25lZCBsb25nIGludCBfX3J3ZmxhZywKCQkgICAg ICAgX19jb25zdCB2b2lkICpfX2RhdGEpICAgIDsKCiAKZXh0ZXJuIGludCB1bW91bnQgIChfX2Nv bnN0IGNoYXIgKl9fc3BlY2lhbF9maWxlKSAgICA7CgogCmV4dGVybiBpbnQgdW1vdW50MiAgKF9f Y29uc3QgY2hhciAqX19zcGVjaWFsX2ZpbGUsIGludCBfX2ZsYWdzKSAgICA7CgogCgoKIyAyMSAi bWtyZWlzZXJmcy5jIiAyCgojIDEgIi91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCIgMSAzCiAKCgoK CgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdW1vZGVfdDsKCiAKCgoKCnR5cGVkZWYgX19z aWduZWRfXyBjaGFyIF9fczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3U4OwoKdHlwZWRlZiBf X3NpZ25lZF9fIHNob3J0IF9fczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdTE2OwoKdHlw ZWRlZiBfX3NpZ25lZF9fIGludCBfX3MzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzI7CgoK dHlwZWRlZiBfX3NpZ25lZF9fIGxvbmcgbG9uZyBfX3M2NDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n IGxvbmcgX191NjQ7CgogCgoKdHlwZWRlZiBfX3UzMiAgYWRkcl90OyAKdHlwZWRlZiBfX3MzMiAg c2FkZHJfdDsKIAoKCiMgNjUgIi91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCIgMwoKCiMgMjIgIm1r cmVpc2VyZnMuYyIgMgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3Zmcy5oIiAxIDMKIAoKCiMgMSAi L3Vzci9pbmNsdWRlL3N5cy9zdGF0ZnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RhdGZzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKc3RydWN0IHN0YXRmcwogIHsKICAgIGludCBmX3R5cGU7CiAgICBpbnQgZl9ic2l6ZTsK CiAgICBfX2ZzYmxrY250X3QgZl9ibG9ja3M7CiAgICBfX2ZzYmxrY250X3QgZl9iZnJlZTsKICAg IF9fZnNibGtjbnRfdCBmX2JhdmFpbDsKICAgIF9fZnNmaWxjbnRfdCBmX2ZpbGVzOwogICAgX19m c2ZpbGNudF90IGZfZmZyZWU7CgoKCgoKCgogICAgX19mc2lkX3QgZl9mc2lkOwogICAgaW50IGZf bmFtZWxlbjsKICAgIGludCBmX3NwYXJlWzZdOwogIH07CgojIDYxICIvdXNyL2luY2x1ZGUvYml0 cy9zdGF0ZnMuaCIgMwoKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0ZnMuaCIgMiAzCgoKIAoK IAoKZXh0ZXJuIGludCBzdGF0ZnMgIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgc3RydWN0IHN0YXRm cyAqX19idWYpICAgIDsKCgoKCgoKCgoKCgoKIAoKCmV4dGVybiBpbnQgZnN0YXRmcyAgKGludCBf X2ZpbGRlcywgc3RydWN0IHN0YXRmcyAqX19idWYpICAgIDsKCgoKCgoKCgoKCgoKIAoKCiMgNCAi L3Vzci9pbmNsdWRlL3N5cy92ZnMuaCIgMiAzCgojIDIzICJta3JlaXNlcmZzLmMiIDIKCgojIDEg Ii90bXAvYnVpbGQtcmVpc2VyZnMtMy42LjI1LXMzOTAtMS9yZWlzZXJmc191dGlscy0zLjYuMjUt ZnNjay0zLnguMGIvdXRpbHMvaW5jbHVkZS9taXNjLmgiIDEKIAoKCgoKdm9pZCBkaWUgKGNoYXIg KiBmbXQsIC4uLik7CnZvaWQgKiBnZXRtZW0gKGludCBzaXplKTsKdm9pZCBmcmVlbWVtIChjb25z dCB2b2lkICogcCk7CnZvaWQgKiBleHBhbmRtZW0gKHZvaWQgKiBwLCBpbnQgc2l6ZSwgaW50IGJ5 KTsKaW50IGlzX21vdW50ZWQgKGNoYXIgKiBkZXZpY2VfbmFtZSk7CnZvaWQgY2hlY2tfYW5kX2Zy ZWVfbWVtICh2b2lkKTsKdm9pZCBwcmludF9ob3dfZmFyIChfX3UzMiAqIHBhc3NlZCwgX191MzIg dG90YWwpOwppbnQgYmxvY2tfd3JpdGUgKGludCBkZXYsIGludCBibG9jaywgaW50IGJsb2Nrc2l6 ZSwgY2hhciAqIGRhdGEpOwppbnQgYmxvY2tfcmVhZCAoaW50IGRldiwgaW50IGJsb2NrLCBpbnQg YmxvY2tzaXplLCBjaGFyICogZGF0YSk7Cgpsb2ZmX3QgcmVpc2VyZnNfbGxzZWVrICh1bnNpZ25l ZCBpbnQgZmQsIGxvZmZfdCBvZmZzZXQsIHVuc2lnbmVkIGludCBvcmlnaW4pOwppbnQgcmVpc2Vy ZnNfcHJvZ3Nfc2V0X2xlX2JpdChpbnQsIHZvaWQgKikgOwppbnQgcmVpc2VyZnNfcHJvZ3NfdGVz dF9sZV9iaXQoaW50LCBjb25zdCB2b2lkICopIDsKCgoKCgoKIyAyNSAibWtyZWlzZXJmcy5jIiAy CgojIDEgIi90bXAvYnVpbGQtcmVpc2VyZnMtMy42LjI1LXMzOTAtMS9yZWlzZXJmc191dGlscy0z LjYuMjUtZnNjay0zLnguMGIvdXRpbHMvaW5jbHVkZS92ZnMuaCIgMQogCgoKIAojIDEgIi91c3Iv aW5jbHVkZS9zeXMvdmZzLmgiIDEgMwogCgoKCiMgNSAiL3RtcC9idWlsZC1yZWlzZXJmcy0zLjYu MjUtczM5MC0xL3JlaXNlcmZzX3V0aWxzLTMuNi4yNS1mc2NrLTMueC4wYi91dGlscy9pbmNsdWRl L3Zmcy5oIiAyCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCIgMSAzCiAKCgoKCgoKCgoK CiAKCgoKCiMgMTEyICIvdXNyL2luY2x1ZGUvYXNtL3BhZ2UuaCIgMwoKCgojIDcgIi90bXAvYnVp bGQtcmVpc2VyZnMtMy42LjI1LXMzOTAtMS9yZWlzZXJmc191dGlscy0zLjYuMjUtZnNjay0zLngu MGIvdXRpbHMvaW5jbHVkZS92ZnMuaCIgMgoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2F0 b21pYy5oIiAxIDMKCgoKIAoKCgoKCgoKCgoKCgogCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgeyB2b2xh dGlsZSBpbnQgY291bnRlcjsgfSBhdG9taWNfdCBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoNCkp KTsKCgoKCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfcmVhZChhdG9taWNfdCAqdikKewog ICAgICAgIGludCByZXR2YWw7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImJjciAgICAg IDE1LDBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsICAgICAgICAlMCwlMSIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9ZCIgKHJldHZhbCkgOiAibSIgKCp2KSAp OwogICAgICAgIHJldHVybiByZXR2YWw7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWlj X3NldChhdG9taWNfdCAqdiwgaW50IGkpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi c3QgICUxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmNyIDE1LDAiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0iICgqdikgOiAiZCIgKGkpICk7Cn0KCnN0 YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2FkZChpbnQgaSwgYXRvbWljX3QgKnYpCnsKICAg ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiICAgbGEgICAgMiwlMFxuIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICIgICBsICAgICAwLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIjA6IGxyICAgIDEsMFxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBh ciAgICAxLCUxXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGNzICAgIDAsMSww KDIpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGpsICAgIDBiIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDogIittIiAoKnYpIDogImQiIChpKSA6ICIwIiwgIjEiLCAi MiIsICJjYyIgKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfc3ViKGludCBpLCBh dG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIgICBsYSAgICAyLCUw XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGwgICAgIDAsJTBcbiIKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiMDogbHIgICAgMSwwXG4iCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIiAgIHNyICAgIDEsJTFcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiICAgY3MgICAgMCwxLDAoMilcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg amwgICAgMGIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiK20iICgqdikgOiAiZCIg KGkpIDogIjAiLCAiMSIsICIyIiwgImNjIiApOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0 b21pY19pbmModm9sYXRpbGUgYXRvbWljX3QgKnYpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRp bGVfXygiICAgbGEgICAgMiwlMFxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBs ICAgICAwLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjA6IGxyICAgIDEsMFxu IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBhaGkgICAxLDFcbiIKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiICAgY3MgICAgMCwxLDAoMilcbiIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiICAgamwgICAgMGIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OiAiK20iICgqdikgOiA6ICIwIiwgIjEiLCAiMiIsICJjYyIgKTsKfQoKc3RhdGljIF9faW5saW5l X18gaW50IGF0b21pY19pbmNfcmV0dXJuKHZvbGF0aWxlIGF0b21pY190ICp2KQp7CiAgICAgICAg aW50IGk7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiAgIGxhICAgIDEsJTBcbiIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgbCAgICAgMCwlMFxuIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICIwOiBsciAgICAlMSwwXG4iCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiAgIGFoaSAgICUxLDFcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg Y3MgICAgMCwlMSwwKDEpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGpsICAg IDBiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIittIiAoKnYpLCAiPSZkIiAoaSkg OiA6ICIwIiwgIjEiLCAiY2MiICk7CiAgICAgICAgcmV0dXJuIGk7Cn0KCnN0YXRpYyBfX2lubGlu ZV9fIHZvaWQgYXRvbWljX2RlYyh2b2xhdGlsZSBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNt X18gX192b2xhdGlsZV9fKCIgICBsYSAgICAyLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiAgIGwgICAgIDAsJTBcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDog bHIgICAgMSwwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGFoaSAgIDEsLTFc biIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgY3MgICAgMCwxLDAoMilcbiIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgamwgICAgMGIiCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOiAiK20iICgqdikgOiA6ICIwIiwgIjEiLCAiMiIsICJjYyIgKTsKfQoKc3Rh dGljIF9faW5saW5lX18gaW50IGF0b21pY19kZWNfcmV0dXJuKHZvbGF0aWxlIGF0b21pY190ICp2 KQp7CiAgICAgICAgaW50IGk7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiAgIGxhICAg IDEsJTBcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgbCAgICAgMCwlMFxuIgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwOiBsciAgICAlMSwwXG4iCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIiAgIGFoaSAgICUxLC0xXG4iCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIiAgIGNzICAgIDAsJTEsMCgxKVxuIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIgICBqbCAgICAwYiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIrbSIgKCp2 KSwgIj0mZCIgKGkpIDogOiAiMCIsICIxIiwgImNjIiApOwogICAgICAgIHJldHVybiBpOwp9Cgpz dGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2RlY19hbmRfdGVzdCh2b2xhdGlsZSBhdG9taWNf dCAqdikKewogICAgICAgIGludCBpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIgICBs YSAgICAxLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGwgICAgIDAsJTBc biIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDogbHIgICAgJTEsMFxuIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIgICBhaGkgICAlMSwtMVxuIgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIgICBjcyAgICAwLCUxLDAoMSlcbiIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiICAgamwgICAgMGIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiK20i ICgqdiksICI9JmQiIChpKSA6IDogIjAiLCAiMSIsICJjYyIpOwogICAgICAgIHJldHVybiBpID09 IDA7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2NsZWFyX21hc2sodW5zaWduZWQg bG9uZyBtYXNrLCBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIg ICBsYSAgICAyLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGwgICAgIDAs JTBcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDogbHIgICAgMSwwXG4iCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIiAgIG5yICAgIDEsJTFcbiIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiICAgY3MgICAgMCwxLDAoMilcbiIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiICAgamwgICAgMGIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiK20i ICgqdikgOiAiZCIgKH4obWFzaykpIDogIjAiLCAiMSIsICIyIiwgImNjIiApOwp9CgpzdGF0aWMg X19pbmxpbmVfXyB2b2lkIGF0b21pY19zZXRfbWFzayh1bnNpZ25lZCBsb25nIG1hc2ssIGF0b21p Y190ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiAgIGxhICAgIDIsJTBcbiIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgbCAgICAgMCwlMFxuIgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIwOiBsciAgICAxLDBcbiIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiICAgb3IgICAgMSwlMVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg ICBjcyAgICAwLDEsMCgyKVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBqbCAg ICAwYiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICIrbSIgKCp2KSA6ICJkIiAobWFz aykgOiAiMCIsICIxIiwgIjIiLCAiY2MiICk7Cn0KCiAKCgoKc3RhdGljIF9faW5saW5lX18gaW50 CmF0b21pY19jb21wYXJlX2FuZF9zd2FwKGludCBleHBlY3RlZF9vbGR2YWwsaW50IG5ld192YWws YXRvbWljX3QgKnYpCnsKICAgICAgICBpbnQgcmV0dmFsOwoKICAgICAgICBfX2FzbV9fIF9fdm9s YXRpbGVfXygKICAgICAgICAgICAgICAgICIgIGxhICAgMSwlMVxuIgogICAgICAgICAgICAgICAg IiAgbHIgICAwLCUyXG4iCiAgICAgICAgICAgICAgICAiICBjcyAgIDAsJTMsMCgxKVxuIgogICAg ICAgICAgICAgICAgIiAgaXBtICAlMFxuIgogICAgICAgICAgICAgICAgIiAgc3JsICAlMCwyOFxu IgogICAgICAgICAgICAgICAgIjA6IgogICAgICAgICAgICAgICAgOiAiPSZyIiAocmV0dmFsKSwg IittIiAoKnYpCiAgICAgICAgICAgICAgICA6ICJkIiAoZXhwZWN0ZWRfb2xkdmFsKSAsICJkIiAo bmV3X3ZhbCkKICAgICAgICAgICAgICAgIDogIjAiLCAiMSIsICJjYyIpOwogICAgICAgIHJldHVy biByZXR2YWw7Cn0KCiAKCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCmF0b21pY19jb21wYXJlX2Fu ZF9zd2FwX3NwaW4oaW50IGV4cGVjdGVkX29sZHZhbCxpbnQgbmV3X3ZhbCxhdG9taWNfdCAqdikK ewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgIiAgIGxhICAy LCUwXG4iCiAgICAgICAgICAgICAgICAiMDogbHIgIDEsJTFcbiIKICAgICAgICAgICAgICAgICIg ICBjcyAgMSwlMiwwKDIpXG4iCiAgICAgICAgICAgICAgICAiICAgamwgIDBiXG4iCiAgICAgICAg ICAgICAgICA6ICIrbSIgKCp2KQogICAgICAgICAgICAgICAgOiAiZCIgKGV4cGVjdGVkX29sZHZh bCkgLCAiZCIgKG5ld192YWwpCiAgICAgICAgICAgICAgICA6ICJjYyIsICIxIiwgIjIiKTsKfQoK IAoKCmV4dGVybiBfX2lubGluZV9fIGludCBhdG9taWNfaW5jX2FuZF90ZXN0X2dyZWF0ZXJfemVy byhhdG9taWNfdCAqdikKewogICAgICAgIGludCBpOwogICAgICAgIF9fYXNtX18gX192b2xhdGls ZV9fKCIgICBsYSAgICAxLCUwXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIGwg ICAgIDAsJTBcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMDogbHIgICAgJTEsMFxu IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBhaGkgICAlMSwxXG4iCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIiAgIGNzICAgIDAsJTEsMCgxKVxuIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICIgICBqbCAgICAwYiIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6ICIrbSIgKCp2KSwgIj0mZCIgKGkpIDogOiAiMCIsICIxIiwgImNjIiApOwogICAgICAgIHJl dHVybiBpID4gMDsKfQoKCgoKCgoKCgoKIyAxNCAiL3RtcC9idWlsZC1yZWlzZXJmcy0zLjYuMjUt czM5MC0xL3JlaXNlcmZzX3V0aWxzLTMuNi4yNS1mc2NrLTMueC4wYi91dGlscy9pbmNsdWRlL3Zm cy5oIiAyCgoKIAogCiAKCgogCiAKIAojIDEgIi91c3IvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIg MSAzCgoKIyAxMDQgIi91c3IvaW5jbHVkZS9saW51eC9rZGV2X3QuaCIgMwoKCiAKCgoKCgoKCgoj IDI0ICIvdG1wL2J1aWxkLXJlaXNlcmZzLTMuNi4yNS1zMzkwLTEvcmVpc2VyZnNfdXRpbHMtMy42 LjI1LWZzY2stMy54LjBiL3V0aWxzL2luY2x1ZGUvdmZzLmgiIDIKCgp0eXBlZGVmIHVuc2lnbmVk IGxvbmcgbG9uZyBrZGV2X3Q7CnN0YXRpYyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2 KQp7CiAgICByZXR1cm4gKCggKCggZGV2ICk+PjgpICApPDw4IHwgKCAgKCggZGV2ICkgJiAweGZm KSAgKSkgOwp9CgoKIAogCiAKc3RydWN0IGxpc3RfaGVhZCB7CiAgICBzdHJ1Y3QgbGlzdF9oZWFk ICpuZXh0LCAqcHJldjsKfTsKCgoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3RfYWRk KHN0cnVjdCBsaXN0X2hlYWQgKiBuZXcsCgkJCQkgIHN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2LAoJ CQkJICBzdHJ1Y3QgbGlzdF9oZWFkICogbmV4dCkKewogICAgbmV4dC0+cHJldiA9IG5ldzsKICAg IG5ldy0+bmV4dCA9IG5leHQ7CiAgICBuZXctPnByZXYgPSBwcmV2OwogICAgcHJldi0+bmV4dCA9 IG5ldzsKfQoKIAoKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9hZGQoc3RydWN0IGxpc3Rf aGVhZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICBfX2xpc3RfYWRkKG5ldywg aGVhZCwgaGVhZC0+bmV4dCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19saXN0X2RlbChz dHJ1Y3QgbGlzdF9oZWFkICogcHJldiwKCQkJCSAgc3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCnsK CW5leHQtPnByZXYgPSBwcmV2OwoJcHJldi0+bmV4dCA9IG5leHQ7Cn0KCnN0YXRpYyBfX2lubGlu ZV9fIHZvaWQgbGlzdF9kZWwoc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpCnsKCV9fbGlzdF9kZWwo ZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKfQoKCgoKCgogCiAKIApzdHJ1Y3Qgd2FpdF9xdWV1 ZSB7Cn07Cgp0eXBlZGVmIHN0cnVjdCB3YWl0X3F1ZXVlIHdhaXRfcXVldWVfaGVhZF90OwoKCgoK c3RhdGljIGlubGluZSB2b2lkIGluaXRfd2FpdHF1ZXVlX2hlYWQod2FpdF9xdWV1ZV9oZWFkX3Qg KnEpCnsKfQoKCgoKIAogCiAKCgpzdHJ1Y3QgZnNfc3RydWN0IHsKICAgIGF0b21pY190IGNvdW50 OwogICAgaW50IHVtYXNrOwogICAgc3RydWN0IGRlbnRyeSAqIHJvb3QsICogcHdkOwp9OwoKc3Ry dWN0IHRhc2sgewogICAgaW50IHBpZDsKICAgIGludCBjb3VudGVyOwogICAgaW50IGZzdWlkOwog ICAgaW50IGZzZ2lkOwogICAgaW50IG5lZWRfcmVzY2hlZDsKICAgIHN0cnVjdCBmc19zdHJ1Y3Qg KiBmczsKICAgIHVuc2lnbmVkIGxvbmcgcG9saWN5OwogICAgaW50IGxvY2tfZGVwdGg7Cn07CgoK ZXh0ZXJuIGlubGluZSBpbnQgZnN1c2VyKHZvaWQpCnsKICAgIHJldHVybiAwOwp9CgoKCmV4dGVy biB2b2lkIF9fd2FrZV91cCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgdW5zaWduZWQgaW50IG1vZGUp OwoKdm9pZCBzbGVlcF9vbih3YWl0X3F1ZXVlX2hlYWRfdCAqcSk7CmV4dGVybiBsb25nIGludGVy cnVwdGlibGVfc2xlZXBfb25fdGltZW91dCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwKICBzaWduZWQg bG9uZyB0aW1lb3V0KTsKZXh0ZXJuIGludCBpbl9ncm91cF9wKGdpZF90ICk7CmV4dGVybiBpbmxp bmUgaW50IGNhcGFibGUoaW50IGNhcCkKewogICAgcmV0dXJuIDA7Cn0KCgogCiAKIAoKCgogCiAK IApleHRlcm4gc3RydWN0IHRhc2sgY3VyX3Rhc2s7CgoKCiAKIAogCnN0cnVjdCBxc3RyIHsKICAg IGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBuYW1lOwogICAgdW5zaWduZWQgaW50IGxlbjsKICAgIHVu c2lnbmVkIGludCBoYXNoOwp9OwoKc3RydWN0IGRlbnRyeSB7CiAgICBzdHJ1Y3QgaW5vZGUgKiBk X2lub2RlOwogICAgc3RydWN0IHFzdHIgZF9uYW1lOwogICAgdW5zaWduZWQgY2hhciBkX2luYW1l WzQwOTZdOwp9OwoKc3RhdGljIF9faW5saW5lX18gdm9pZCBkX2FkZChzdHJ1Y3QgZGVudHJ5ICog ZW50cnksIHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiAgICBlbnRyeS0+ZF9pbm9kZSA9IGlub2Rl Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZF91bmhhc2hlZChzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpCnsKICByZXR1cm4gMDsKfQoKCmV4dGVybiB2b2lkIGRfaW5zdGFudGlhdGUoc3RydWN0IGRl bnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRfZGVsZXRlKHN0cnVjdCBkZW50 cnkgKik7CmV4dGVybiB2b2lkIGRfbW92ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkg Kik7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9hbGxvY19yb290KHN0cnVjdCBpbm9kZSAqKTsK ZXh0ZXJuIHZvaWQgZHB1dChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwoKCgogCiAKIApzdHJ1Y3Qg ZGVudHJ5ICogbG9va3VwX2RlbnRyeShjb25zdCBjaGFyICogbmFtZSwgc3RydWN0IGRlbnRyeSAq IGJhc2UsIAoJCQkgICAgICB1bnNpZ25lZCBpbnQgbG9va3VwX2ZsYWdzKTsKCgogCiAKIApzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3Qgewp9OwoKdHlwZWRlZiBzdHJ1Y3QgcGFnZSB7CiAgICBzdHJ1Y3Qg YWRkcmVzc19zcGFjZSAqbWFwcGluZzsKICAgIHVuc2lnbmVkIGxvbmcgaW5kZXg7CiAgICBhdG9t aWNfdCBjb3VudDsKICAgIGludCBmbGFnczsKICAgIGNoYXIgKiBhZGRyZXNzOwogICAgc3RydWN0 IGJ1ZmZlcl9oZWFkICogYnVmZmVyczsKfSBtZW1fbWFwX3Q7CgoKCgoKCgoKCgoKZXh0ZXJuIG1l bV9tYXBfdCAqIG1lbV9tYXA7CgoKCgoKZXh0ZXJuIHZvaWQgdm10cnVuY2F0ZShzdHJ1Y3QgaW5v ZGUgKiBpbm9kZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwoKIAogCiAKCgoKCgoKCgoKCgoKCgoK CiAKIAogCgoKCiAKIAogCnN0cnVjdCBwaXBlX2lub2RlX2luZm8gewp9OwoKCiAKIAogCnN0cnVj dCBzZW1hcGhvcmUgewp9OwoKZXh0ZXJuIGlubGluZSB2b2lkIGRvd24oc3RydWN0IHNlbWFwaG9y ZSAqIHNlbSkKewp9CgpleHRlcm4gaW5saW5lIHZvaWQgdXAoc3RydWN0IHNlbWFwaG9yZSAqIHNl bSkKewp9CgoKIAogCiAKCgoKCgoKZXh0ZXJuIHZvaWQgdXBkYXRlX2F0aW1lIChzdHJ1Y3QgaW5v ZGUgKik7CgoKIAoKCgoKCgoKCgoKCgoKc3RydWN0IGJ1ZmZlcl9oZWFkIHsKICAgIHVuc2lnbmVk IGxvbmcgYl9ibG9ja25yOwogICAgdW5zaWduZWQgc2hvcnQgYl9zaXplOwogICAgdW5zaWduZWQg c2hvcnQgYl9saXN0OwogICAga2Rldl90IGJfZGV2OwogICAgYXRvbWljX3QgYl9jb3VudDsKICAg IHVuc2lnbmVkIGxvbmcgYl9zdGF0ZTsKICAgIHVuc2lnbmVkIGxvbmcgYl9mbHVzaHRpbWU7Cgog ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYl9uZXh0OwogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICog Yl9wcmV2OwogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYl9oYXNoX25leHQ7CiAgICBzdHJ1Y3Qg YnVmZmVyX2hlYWQgKiBiX2hhc2hfcHJldjsKICAgIGNoYXIgKiBiX2RhdGE7CiAgICBzdHJ1Y3Qg cGFnZSAqIGJfcGFnZTsKICAgIHZvaWQgKCpiX2VuZF9pbykoc3RydWN0IGJ1ZmZlcl9oZWFkICpi aCwgaW50IHVwdG9kYXRlKTsKICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJfdGhpc19wYWdlOwp9 OwoKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAxIDMKCgoKIAoKCgoKCgoKCgoKCiAK CgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKZXh0ZXJuIGNvbnN0IGNoYXIgX29pX2JpdG1hcFtdOwpl eHRlcm4gY29uc3QgY2hhciBfbmlfYml0bWFwW107CmV4dGVybiBjb25zdCBjaGFyIF96Yl9maW5k bWFwW107CgogCgoKZXh0ZXJuIHZvaWQgX19zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAq IGFkZHIpOwpleHRlcm4gdm9pZCBfX2NvbnN0YW50X3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2 b2lkICogYWRkcik7CmV4dGVybiBpbnQgX190ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQg KiBhZGRyKTsKZXh0ZXJuIGludCBfX2NvbnN0YW50X3Rlc3RfYml0KGludCBuciwgdm9sYXRpbGUg dm9pZCAqIGFkZHIpOwpleHRlcm4gdm9pZCBfX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZv aWQgKiBhZGRyKTsKZXh0ZXJuIHZvaWQgX19jb25zdGFudF9jbGVhcl9iaXQoaW50IG5yLCB2b2xh dGlsZSB2b2lkICogYWRkcik7CmV4dGVybiB2b2lkIF9fY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0 aWxlIHZvaWQgKiBhZGRyKTsKZXh0ZXJuIHZvaWQgX19jb25zdGFudF9jaGFuZ2VfYml0KGludCBu ciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpOwpleHRlcm4gaW50IHRlc3RfYW5kX3NldF9iaXQoaW50 IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcik7CmV4dGVybiBpbnQgdGVzdF9hbmRfY2xlYXJfYml0 KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpOwpleHRlcm4gaW50IHRlc3RfYW5kX2NoYW5n ZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcik7CmV4dGVybiBpbnQgdGVzdF9hbmRf c2V0X2JpdF9zaW1wbGUoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcik7CmV4dGVybiBpbnQg dGVzdF9hbmRfY2xlYXJfYml0X3NpbXBsZShpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKTsK ZXh0ZXJuIGludCB0ZXN0X2FuZF9jaGFuZ2VfYml0X3NpbXBsZShpbnQgbnIsIHZvbGF0aWxlIHZv aWQgKiBhZGRyKTsKZXh0ZXJuIGludCBmaW5kX2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRyLCB1 bnNpZ25lZCBzaXplKTsKZXh0ZXJuIGludCBmaW5kX25leHRfemVyb19iaXQgKHZvaWQgKiBhZGRy LCBpbnQgc2l6ZSwgaW50IG9mZnNldCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGZmeih1bnNpZ25l ZCBsb25nIHdvcmQpOwoKIyAyNDkgIi91c3IvaW5jbHVkZS9hc20vYml0b3BzLmgiIDMKCgogCgoK ZXh0ZXJuIF9faW5saW5lX18gdm9pZCBfX3NldF9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICog YWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgIiAgIGxo aSAgIDIsMjRcbiIKICAgICAgICAgICAgICIgICBsaGkgICAxLDdcbiIKICAgICAgICAgICAgICIg ICB4ciAgICAyLCUwXG4iCiAgICAgICAgICAgICAiICAgbnIgICAgMSwlMFxuIgogICAgICAgICAg ICAgIiAgIHNybCAgIDIsM1xuIgogICAgICAgICAgICAgIiAgIGxhICAgIDIsMCgyLCUxKVxuIgog ICAgICAgICAgICAgIiAgIGxhICAgIDEsMCgxLCUyKVxuIgogICAgICAgICAgICAgIiAgIG9jICAg IDAoMSwyKSwwKDEpIgogICAgICAgICAgICAgOiAgOiAiciIgKG5yKSwgImEiIChhZGRyKSwgImEi ICgmX29pX2JpdG1hcCkKICAgICAgICAgICAgIDogImNjIiwgIm1lbW9yeSIsICIxIiwgIjIiICk7 Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgCl9fY29uc3RhbnRfc2V0X2JpdChjb25zdCBpbnQg bnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgc3dpdGNoIChuciY3KSB7CiAgY2FzZSAwOgog ICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsYSAxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAg ICAgICAgICAib2kgMCgxKSwweDAxIgogICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1tIiAo Kigodm9sYXRpbGUgY2hhciAqKSBhZGRyICsgKChucj4+MyleMykpKSAKICAgICAgICAgICAgICAg ICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAibWVtb3J5Iik7CiAgICBicmVhazsKICBjYXNlIDE6 CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxhIDEsJTBcblx0IgogICAgICAgICAgICAgICAg ICAgICAgICAgICJvaSAwKDEpLDB4MDIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0i ICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIgKyAoKG5yPj4zKV4zKSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2Ug MjoKICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIm9pIDAoMSksMHgwNCIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9 bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAibWVtb3J5IiApOwogICAgYnJlYWs7CiAgY2Fz ZSAzOgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsYSAxLCUwXG5cdCIKICAgICAgICAgICAg ICAgICAgICAgICAgICAib2kgMCgxKSwweDA4IgogICAgICAgICAgICAgICAgICAgICAgICAgIDog Ij1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBhZGRyICsgKChucj4+MyleMykpKQogICAgICAgICAg ICAgICAgICAgICAgICAgIDogOiAiMSIsICJjYyIsICJtZW1vcnkiICk7CiAgICBicmVhazsKICBj YXNlIDQ6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxhIDEsJTBcblx0IgogICAgICAgICAg ICAgICAgICAgICAgICAgICJvaSAwKDEpLDB4MTAiCiAgICAgICAgICAgICAgICAgICAgICAgICAg OiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIgKyAoKG5yPj4zKV4zKSkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwog IGNhc2UgNToKICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIm9pIDAoMSksMHgyMCIKICAgICAgICAgICAgICAgICAgICAgICAg ICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAibWVtb3J5IiApOwogICAgYnJlYWs7 CiAgY2FzZSA2OgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsYSAxLCUwXG5cdCIKICAgICAg ICAgICAgICAgICAgICAgICAgICAib2kgMCgxKSwweDQwIgogICAgICAgICAgICAgICAgICAgICAg ICAgIDogIj1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBhZGRyICsgKChucj4+MyleMykpKQogICAg ICAgICAgICAgICAgICAgICAgICAgIDogOiAiMSIsICJjYyIsICJtZW1vcnkiICk7CiAgICBicmVh azsKICBjYXNlIDc6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxhIDEsJTBcblx0IgogICAg ICAgICAgICAgICAgICAgICAgICAgICJvaSAwKDEpLDB4ODAiCiAgICAgICAgICAgICAgICAgICAg ICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIgKyAoKG5yPj4zKV4zKSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwgIm1lbW9yeSIgKTsKICAgIGJy ZWFrOwogIH0KfQoKCgoKCgogCgoKZXh0ZXJuIF9faW5saW5lX18gdm9pZCAKX19jbGVhcl9iaXQo aW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xhdGls ZV9fKAogICAgICAgICAgICAgIiAgIGxoaSAgIDIsMjRcbiIKICAgICAgICAgICAgICIgICBsaGkg ICAxLDdcbiIKICAgICAgICAgICAgICIgICB4ciAgICAyLCUwXG4iCiAgICAgICAgICAgICAiICAg bnIgICAgMSwlMFxuIgogICAgICAgICAgICAgIiAgIHNybCAgIDIsM1xuIgogICAgICAgICAgICAg IiAgIGxhICAgIDIsMCgyLCUxKVxuIgogICAgICAgICAgICAgIiAgIGxhICAgIDEsMCgxLCUyKVxu IgogICAgICAgICAgICAgIiAgIG5jICAgIDAoMSwyKSwwKDEpIgogICAgICAgICAgICAgOiAgOiAi ciIgKG5yKSwgImEiIChhZGRyKSwgImEiICgmX25pX2JpdG1hcCkKICAgICAgICAgICAgIDogImNj IiwgIm1lbW9yeSIsICIxIiwgIjIiICk7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgCl9fY29u c3RhbnRfY2xlYXJfYml0KGNvbnN0IGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICBz d2l0Y2ggKG5yJjcpIHsKICBjYXNlIDA6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImxhIDEs JTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICJuaSAwKDEpLDB4RkUiCiAgICAgICAg ICAgICAgICAgICAgICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIgKyAoKG5y Pj4zKV4zKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwgIm1lbW9y eSIgKTsKICAgIGJyZWFrOwogIGNhc2UgMToKICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgibGEg MSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pIDAoMSksMHhGRCIKICAgICAg ICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRkciArICgo bnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAibWVt b3J5IiApOwogICAgYnJlYWs7CiAgY2FzZSAyOgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJs YSAxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAibmkgMCgxKSwweEZCIgogICAg ICAgICAgICAgICAgICAgICAgICAgIDogIj1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBhZGRyICsg KChucj4+MyleMykpKQogICAgICAgICAgICAgICAgICAgICAgICAgIDogOiAiMSIsICJjYyIsICJt ZW1vcnkiICk7CiAgICBicmVhazsKICBjYXNlIDM6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAo ImxhIDEsJTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICJuaSAwKDEpLDB4RjciCiAg ICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFkZHIg KyAoKG5yPj4zKV4zKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNjIiwg Im1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgNDoKICAgIF9fYXNtX18gX192b2xhdGlsZV9f ICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pIDAoMSksMHhFRiIK ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRk ciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogImNjIiwgIm1l bW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgNToKICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgi bGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5pIDAoMSksMHhERiIKICAg ICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRkciAr ICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogIjEiLCAiY2MiLCAi bWVtb3J5IiApOwogICAgYnJlYWs7CiAgY2FzZSA2OgogICAgX19hc21fXyBfX3ZvbGF0aWxlX18g KCJsYSAxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAibmkgMCgxKSwweEJGIgog ICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBhZGRy ICsgKChucj4+MyleMykpKQogICAgICAgICAgICAgICAgICAgICAgICAgIDogOiAiMSIsICJjYyIs ICJtZW1vcnkiICk7CiAgICBicmVhazsKICBjYXNlIDc6CiAgICBfX2FzbV9fIF9fdm9sYXRpbGVf XyAoImxhIDEsJTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICJuaSAwKDEpLDB4N0Yi CiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICopIGFk ZHIgKyAoKG5yPj4zKV4zKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwgImNj IiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIH0KfQoKCgoKCgogCgoKZXh0ZXJuIF9faW5saW5l X18gdm9pZCBfX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAg ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgIiAgIGxoaSAgIDIsMjRcbiIK ICAgICAgICAgICAgICIgICBsaGkgICAxLDdcbiIKICAgICAgICAgICAgICIgICB4ciAgICAyLCUw XG4iCiAgICAgICAgICAgICAiICAgbnIgICAgMSwlMFxuIgogICAgICAgICAgICAgIiAgIHNybCAg IDIsM1xuIgogICAgICAgICAgICAgIiAgIGxhICAgIDIsMCgyLCUxKVxuIgogICAgICAgICAgICAg IiAgIGxhICAgIDEsMCgxLCUyKVxuIgogICAgICAgICAgICAgIiAgIHhjICAgIDAoMSwyKSwwKDEp IgogICAgICAgICAgICAgOiAgOiAiciIgKG5yKSwgImEiIChhZGRyKSwgImEiICgmX29pX2JpdG1h cCkKICAgICAgICAgICAgIDogImNjIiwgIm1lbW9yeSIsICIxIiwgIjIiICk7Cn0KCmV4dGVybiBf X2lubGluZV9fIHZvaWQgCl9fY29uc3RhbnRfY2hhbmdlX2JpdChjb25zdCBpbnQgbnIsIHZvbGF0 aWxlIHZvaWQgKiBhZGRyKSAKewogIHN3aXRjaCAobnImNykgewogIGNhc2UgMDoKICAgIF9fYXNt X18gX192b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAg InhpIDAoMSksMHgwMSIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0 aWxlIGNoYXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICA6IDogImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgMToKICAgIF9fYXNtX18g X192b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhp IDAoMSksMHgwMiIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxl IGNoYXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6 IDogImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgMjoKICAgIF9fYXNtX18gX192 b2xhdGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhpIDAo MSksMHgwNCIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNo YXIgKikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDog ImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgMzoKICAgIF9fYXNtX18gX192b2xh dGlsZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhpIDAoMSks MHgwOCIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIg KikgYWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogImNj IiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgNDoKICAgIF9fYXNtX18gX192b2xhdGls ZV9fICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhpIDAoMSksMHgx MCIKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikg YWRkciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogImNjIiwg Im1lbW9yeSIgKTsKICAgIGJyZWFrOwogIGNhc2UgNToKICAgIF9fYXNtX18gX192b2xhdGlsZV9f ICgibGEgMSwlMFxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInhpIDAoMSksMHgyMCIK ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9bSIgKCooKHZvbGF0aWxlIGNoYXIgKikgYWRk ciArICgobnI+PjMpXjMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDogIjEiLCAiY2Mi LCAibWVtb3J5IiApOwogICAgYnJlYWs7CiAgY2FzZSA2OgogICAgX19hc21fXyBfX3ZvbGF0aWxl X18gKCJsYSAxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAieGkgMCgxKSwweDQw IgogICAgICAgICAgICAgICAgICAgICAgICAgIDogIj1tIiAoKigodm9sYXRpbGUgY2hhciAqKSBh ZGRyICsgKChucj4+MyleMykpKQogICAgICAgICAgICAgICAgICAgICAgICAgIDogOiAiMSIsICJj YyIsICJtZW1vcnkiICk7CiAgICBicmVhazsKICBjYXNlIDc6CiAgICBfX2FzbV9fIF9fdm9sYXRp bGVfXyAoImxhIDEsJTBcblx0IgogICAgICAgICAgICAgICAgICAgICAgICAgICJ4aSAwKDEpLDB4 ODAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPW0iICgqKCh2b2xhdGlsZSBjaGFyICop IGFkZHIgKyAoKG5yPj4zKV4zKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiA6ICIxIiwg ImNjIiwgIm1lbW9yeSIgKTsKICAgIGJyZWFrOwogIH0KfQoKCgoKCgogCgoKZXh0ZXJuIF9faW5s aW5lX18gaW50IHRlc3RfYW5kX3NldF9iaXRfc2ltcGxlKGludCBuciwgdm9sYXRpbGUgdm9pZCAq IGFkZHIpCnsKICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1hc2sgPSAxOwogICAgICAgIGludCBv bGRiaXQ7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAiICAgbGhp ICAgMSwyNFxuIgogICAgICAgICAgICAgIiAgIGxoaSAgIDIsN1xuIgogICAgICAgICAgICAgIiAg IHhyICAgIDEsJTFcbiIKICAgICAgICAgICAgICIgICBuciAgICAyLDFcbiIKICAgICAgICAgICAg ICIgICBzcmwgICAxLDNcbiIKICAgICAgICAgICAgICIgICBsYSAgICAxLDAoMSwlMilcbiIKICAg ICAgICAgICAgICIgICBpYyAgICAlMCwwKDEpXG4iCiAgICAgICAgICAgICAiICAgc3JsICAgJTAs MCgyKVxuIgogICAgICAgICAgICAgIiAgIG4gICAgICUwLCU0XG4iCiAgICAgICAgICAgICAiICAg bGEgICAgMiwwKDIsJTMpXG4iCiAgICAgICAgICAgICAiICAgb2MgICAgMCgxLDEpLDAoMikiCiAg ICAgICAgICAgICA6ICI9ZCYiIChvbGRiaXQpIDogInIiIChuciksICJhIiAoYWRkciksCiAgICAg ICAgICAgICAgICJhIiAoJl9vaV9iaXRtYXApLCAibSIgKG1hc2spCiAgICAgICAgICAgICA6ICJj YyIsICJtZW1vcnkiLCAiMSIsICIyIiApOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KCiAKCgpl eHRlcm4gX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfY2xlYXJfYml0X3NpbXBsZShpbnQgbnIsIHZv bGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXNrID0gMTsK ICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAg ICAgICAgICIgICBsaGkgICAxLDI0XG4iCiAgICAgICAgICAgICAiICAgbGhpICAgMiw3XG4iCiAg ICAgICAgICAgICAiICAgeHIgICAgMSwlMVxuIgogICAgICAgICAgICAgIiAgIG5yICAgIDIsMVxu IgogICAgICAgICAgICAgIiAgIHNybCAgIDEsM1xuIgogICAgICAgICAgICAgIiAgIGxhICAgIDEs MCgxLCUyKVxuIgogICAgICAgICAgICAgIiAgIGljICAgICUwLDAoMSlcbiIKICAgICAgICAgICAg ICIgICBzcmwgICAlMCwwKDIpXG4iCiAgICAgICAgICAgICAiICAgbiAgICAgJTAsJTRcbiIKICAg ICAgICAgICAgICIgICBsYSAgICAyLDAoMiwlMylcbiIKICAgICAgICAgICAgICIgICBuYyAgICAw KDEsMSksMCgyKSIKICAgICAgICAgICAgIDogIj1kJiIgKG9sZGJpdCkgOiAiciIgKG5yKSwgImEi IChhZGRyKSwKICAgICAgICAgICAgICAgImEiICgmX25pX2JpdG1hcCksICJtIiAobWFzaykKICAg ICAgICAgICAgIDogImNjIiwgIm1lbW9yeSIsICIxIiwgIjIiICk7CiAgICAgICAgcmV0dXJuIG9s ZGJpdDsKfQoKIAoKCmV4dGVybiBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9jaGFuZ2VfYml0X3Np bXBsZShpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgc3RhdGljIGNvbnN0 IGludCBtYXNrID0gMTsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9s YXRpbGVfXygKICAgICAgICAgICAgICIgICBsaGkgICAxLDI0XG4iCiAgICAgICAgICAgICAiICAg bGhpICAgMiw3XG4iCiAgICAgICAgICAgICAiICAgeHIgICAgMSwlMVxuIgogICAgICAgICAgICAg IiAgIG5yICAgIDIsMVxuIgogICAgICAgICAgICAgIiAgIHNybCAgIDEsM1xuIgogICAgICAgICAg ICAgIiAgIGxhICAgIDEsMCgxLCUyKVxuIgogICAgICAgICAgICAgIiAgIGljICAgICUwLDAoMSlc biIKICAgICAgICAgICAgICIgICBzcmwgICAlMCwwKDIpXG4iCiAgICAgICAgICAgICAiICAgbiAg ICAgJTAsJTRcbiIKICAgICAgICAgICAgICIgICBsYSAgICAyLDAoMiwlMylcbiIKICAgICAgICAg ICAgICIgICB4YyAgICAwKDEsMSksMCgyKSIKICAgICAgICAgICAgIDogIj1kJiIgKG9sZGJpdCkg OiAiciIgKG5yKSwgImEiIChhZGRyKSwKICAgICAgICAgICAgICAgImEiICgmX29pX2JpdG1hcCks ICJtIiAobWFzaykKICAgICAgICAgICAgIDogImNjIiwgIm1lbW9yeSIsICIxIiwgIjIiICk7CiAg ICAgICAgcmV0dXJuIG9sZGJpdDsKfQoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCmV4dGVybiBfX2lu bGluZV9fIGludCBfX3Rlc3RfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAg ICAgICBzdGF0aWMgY29uc3QgaW50IG1hc2sgPSAxOwogICAgICAgIGludCBvbGRiaXQ7CgogICAg ICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgIiAgIGxoaSAgIDIsMjRcbiIK ICAgICAgICAgICAgICIgICBsaGkgICAxLDdcbiIKICAgICAgICAgICAgICIgICB4ciAgICAyLCUx XG4iCiAgICAgICAgICAgICAiICAgbnIgICAgMSwlMVxuIgogICAgICAgICAgICAgIiAgIHNybCAg IDIsM1xuIgogICAgICAgICAgICAgIiAgIGljICAgICUwLDAoMiwlMilcbiIKICAgICAgICAgICAg ICIgICBzcmwgICAlMCwwKDEpXG4iCiAgICAgICAgICAgICAiICAgbiAgICAgJTAsJTMiCiAgICAg ICAgICAgICA6ICI9ZCYiIChvbGRiaXQpIDogInIiIChuciksICJhIiAoYWRkciksCiAgICAgICAg ICAgICAgICJtIiAobWFzaykKICAgICAgICAgICAgIDogImNjIiwgIjEiLCAiMiIgKTsKICAgICAg ICByZXR1cm4gb2xkYml0Owp9CgpleHRlcm4gX19pbmxpbmVfXyBpbnQgX19jb25zdGFudF90ZXN0 X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKSB7CiAgICByZXR1cm4gKCgodm9sYXRp bGUgY2hhciAqKSBhZGRyKVsobnI+PjMpXjNdICYgKDE8PChuciY3KSkpICE9IDA7Cn0KCgoKCgoK IAoKCmV4dGVybiBfX2lubGluZV9fIGludCBmaW5kX2ZpcnN0X3plcm9fYml0KHZvaWQgKiBhZGRy LCB1bnNpZ25lZCBzaXplKQp7CiAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXNrID0gMHhmZkw7 CiAgICAgICAgaW50IHJlczsKCiAgICAgICAgaWYgKCFzaXplKQogICAgICAgICAgICAgICAgcmV0 dXJuIDA7CiAgICAgICAgX19hc21fXygiICAgbGhpICAwLC0xXG4iCiAgICAgICAgICAgICAgICAi ICAgbHIgICAxLCUxXG4iCiAgICAgICAgICAgICAgICAiICAgYWhpICAxLDMxXG4iCiAgICAgICAg ICAgICAgICAiICAgc3JsICAxLDVcbiIKICAgICAgICAgICAgICAgICIgICBzciAgIDIsMlxuIgog ICAgICAgICAgICAgICAgIjA6IGMgICAgMCwwKDIsJTIpXG4iCiAgICAgICAgICAgICAgICAiICAg am5lICAxZlxuIgogICAgICAgICAgICAgICAgIiAgIGFoaSAgMiw0XG4iCiAgICAgICAgICAgICAg ICAiICAgYnJjdCAxLDBiXG4iCiAgICAgICAgICAgICAgICAiICAgbHIgICAyLCUxXG4iCiAgICAg ICAgICAgICAgICAiICAgaiAgICA0ZlxuIgogICAgICAgICAgICAgICAgIjE6IGwgICAgMSwwKDIs JTIpXG4iCiAgICAgICAgICAgICAgICAiICAgc2xsICAyLDNcbiIKICAgICAgICAgICAgICAgICIg ICB0bWwgIDEsMHhGRkZGXG4iCiAgIC