From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2165 invoked by alias); 8 Jan 2003 11:26:07 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 2151 invoked by uid 71); 8 Jan 2003 11:26:06 -0000 Date: Wed, 08 Jan 2003 11:26:00 -0000 Message-ID: <20030108112606.2150.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: "Andreas Loeffler" Subject: Re: c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel Reply-To: "Andreas Loeffler" X-SW-Source: 2003-01/txt/msg00532.txt.bz2 List-Id: The following reply was made to PR c/7577; it has been noted by GNATS. From: "Andreas Loeffler" To: bangerth@dealii.org, "Andreas Loeffler" , gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org, gcc-gnats@gcc.gnu.org Cc: Subject: Re: c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel Date: Wed, 8 Jan 2003 12:15:27 +0100 --0__=4EBBE63BDFAE34898f9e8a93df938690918c4EBBE63BDFAE3489 Content-type: text/plain; charset=us-ascii here's the file, i hope that helps you (See attached file: bla.i) Andreas Loeffler -- EL HD S/390 SPP (Support Processor Platform Development) IBM Entwicklungslabor Phone: +49 (0) 7031 16 5035 Schoenaicher Str. 220 Fax: +49 (0) 7031 16 4632 71032 Boeblingen URL: http://www.ibm.com bangerth@dealii.o rg To: "Andreas Loeffler" , gcc-bugs@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org 01/08/2003 03:13 cc: AM Subject: Re: c/7577: GCC 3.1 has problems with -gdwarf+ option linking the linux Please respond to kernel bangerth; Please respond to "Andreas Loeffler"; Please respond to gcc-bugs; Please respond to gcc-prs; Please respond to nobody; Please respond to gcc-gnats Synopsis: GCC 3.1 has problems with -gdwarf+ option linking the linux kernel State-Changed-From-To: open->feedback State-Changed-By: bangerth State-Changed-When: Tue Jan 7 18:13:28 2003 State-Changed-Why: Thanks for your report (how unfortunate nobody has yet looked at it). In trying to reproduce it, I saw that the file still had an #include in it. Would you mind running the testcase through the compiler again, and give it -save-temps in addition? This would generate a file called bla.i which we need (it's then self-contained). Thanks Wolfgang http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7577 --0__=4EBBE63BDFAE34898f9e8a93df938690918c4EBBE63BDFAE3489 Content-type: application/octet-stream; name="bla.i" Content-Disposition: attachment; filename="bla.i" Content-transfer-encoding: base64 IyAxICJibGEuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+IgojIDEgImJs YS5jIgojIDE0ICJibGEuYyIKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAxIDMKIyA5ICIvb3B0L2ZzcC9p NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lk ZS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51 eC9zeXMtaW5jbHVkZS9saW51eC9jb25maWcuaCIgMSAzCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1w Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9hdXRvY29u Zi5oIiAxIDMKIyA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAyIDMKIyAxMCAiL29wdC9mc3AvaTU4Ni1w Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIg MiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9saW51eC9pbml0LmgiIDEgMwojIDQ2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2luaXQuaCIgMwp0eXBl ZGVmIGludCAoKmluaXRjYWxsX3QpKHZvaWQpOwp0eXBlZGVmIHZvaWQgKCpleGl0Y2FsbF90KSh2 b2lkKTsKCmV4dGVybiBpbml0Y2FsbF90IF9faW5pdGNhbGxfc3RhcnQsIF9faW5pdGNhbGxfZW5k OwojIDU5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L2luaXQuaCIgMwpzdHJ1Y3Qga2VybmVsX3BhcmFtIHsKICAgICAgICBj b25zdCBjaGFyICpzdHI7CiAgICAgICAgaW50ICgqc2V0dXBfZnVuYykoY2hhciAqKTsKfTsKCmV4 dGVybiBzdHJ1Y3Qga2VybmVsX3BhcmFtIF9fc2V0dXBfc3RhcnQsIF9fc2V0dXBfZW5kOwojIDEx ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2xpbnV4L2lkZS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lvcG9ydC5oIiAxIDMKIyAxNSAiL29w dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s aW51eC9pb3BvcnQuaCIgMwpzdHJ1Y3QgcmVzb3VyY2UgewogICAgICAgIGNvbnN0IGNoYXIgKm5h bWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOwogICAgICAgIHVuc2lnbmVkIGxv bmcgZmxhZ3M7CiAgICAgICAgc3RydWN0IHJlc291cmNlICpwYXJlbnQsICpzaWJsaW5nLCAqY2hp bGQ7Cn07CgpzdHJ1Y3QgcmVzb3VyY2VfbGlzdCB7CiAgICAgICAgc3RydWN0IHJlc291cmNlX2xp c3QgKm5leHQ7CiAgICAgICAgc3RydWN0IHJlc291cmNlICpyZXM7CiAgICAgICAgc3RydWN0IHBj aV9kZXYgKmRldjsKfTsKIyA4MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pb3BvcnQuaCIgMwpleHRlcm4gc3RydWN0IHJl c291cmNlIGlvcG9ydF9yZXNvdXJjZTsKZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSBpb21lbV9yZXNv dXJjZTsKCmV4dGVybiBpbnQgZ2V0X3Jlc291cmNlX2xpc3Qoc3RydWN0IHJlc291cmNlICosIGNo YXIgKmJ1ZiwgaW50IHNpemUpOwoKZXh0ZXJuIGludCBjaGVja19yZXNvdXJjZShzdHJ1Y3QgcmVz b3VyY2UgKnJvb3QsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gaW50IHJl cXVlc3RfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5l dyk7CmV4dGVybiBpbnQgcmVsZWFzZV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CmV4 dGVybiBpbnQgYWxsb2NhdGVfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3Qg cmVzb3VyY2UgKm5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtaW4sIHVu c2lnbmVkIGxvbmcgbWF4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgYWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmFsaWduZikodm9p ZCAqLCBzdHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWduZWQgbG9uZyksCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdm9pZCAqYWxpZ25mX2RhdGEpOwoKCgoKCmV4dGVybiBzdHJ1Y3QgcmVzb3Vy Y2UgKiBfX3JlcXVlc3RfcmVnaW9uKHN0cnVjdCByZXNvdXJjZSAqLCB1bnNpZ25lZCBsb25nIHN0 YXJ0LCB1bnNpZ25lZCBsb25nIG4sIGNvbnN0IGNoYXIgKm5hbWUpOwoKCgoKCgoKZXh0ZXJuIGlu dCBfX2NoZWNrX3JlZ2lvbihzdHJ1Y3QgcmVzb3VyY2UgKiwgdW5zaWduZWQgbG9uZywgdW5zaWdu ZWQgbG9uZyk7CmV4dGVybiB2b2lkIF9fcmVsZWFzZV9yZWdpb24oc3RydWN0IHJlc291cmNlICos IHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwoKCgoKCmV4dGVybiB2b2lkIGF1dG9pcnFf c2V0dXAoaW50IHdhaXR0aW1lKTsKZXh0ZXJuIGludCBhdXRvaXJxX3JlcG9ydChpbnQgd2FpdHRp bWUpOwojIDEyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4 L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hkcmVnLmgiIDEgMwoj IDE2NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9saW51eC9oZHJlZy5oIiAzCnN0cnVjdCBoZF9nZW9tZXRyeSB7CiAgICAgIHVuc2ln bmVkIGNoYXIgaGVhZHM7CiAgICAgIHVuc2lnbmVkIGNoYXIgc2VjdG9yczsKICAgICAgdW5zaWdu ZWQgc2hvcnQgY3lsaW5kZXJzOwogICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0Owp9OwojIDIwNSAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9saW51eC9oZHJlZy5oIiAzCnN0cnVjdCBoZF9iaWdfZ2VvbWV0cnkgewogICAgICAgIHVuc2ln bmVkIGNoYXIgaGVhZHM7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZWN0b3JzOwogICAgICAgIHVu c2lnbmVkIGludCBjeWxpbmRlcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydDsKfTsKCgoK CgoKCnN0cnVjdCBoZF9kcml2ZWlkIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb25maWc7CiAg ICAgICAgdW5zaWduZWQgc2hvcnQgY3lsczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByZXNlcnZl ZDI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgaGVhZHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg dHJhY2tfYnl0ZXM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VjdG9yX2J5dGVzOwogICAgICAg IHVuc2lnbmVkIHNob3J0IHNlY3RvcnM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVuZG9yMDsK ICAgICAgICB1bnNpZ25lZCBzaG9ydCB2ZW5kb3IxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZl bmRvcjI7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZXJpYWxfbm9bMjBdOwogICAgICAgIHVuc2ln bmVkIHNob3J0IGJ1Zl90eXBlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1Zl9zaXplOwogICAg ICAgIHVuc2lnbmVkIHNob3J0IGVjY19ieXRlczsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZ3X3Jl dls4XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1vZGVsWzQwXTsKICAgICAgICB1bnNpZ25lZCBj aGFyIG1heF9tdWx0c2VjdDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZlbmRvcjM7CiAgICAgICAg dW5zaWduZWQgc2hvcnQgZHdvcmRfaW87CiAgICAgICAgdW5zaWduZWQgY2hhciB2ZW5kb3I0Owog ICAgICAgIHVuc2lnbmVkIGNoYXIgY2FwYWJpbGl0eTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBy ZXNlcnZlZDUwOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdmVuZG9yNTsKICAgICAgICB1bnNpZ25l ZCBjaGFyIHRQSU87CiAgICAgICAgdW5zaWduZWQgY2hhciB2ZW5kb3I2OwogICAgICAgIHVuc2ln bmVkIGNoYXIgdERNQTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmaWVsZF92YWxpZDsKICAgICAg ICB1bnNpZ25lZCBzaG9ydCBjdXJfY3lsczsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjdXJfaGVh ZHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY3VyX3NlY3RvcnM7CiAgICAgICAgdW5zaWduZWQg c2hvcnQgY3VyX2NhcGFjaXR5MDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjdXJfY2FwYWNpdHkx OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXVsdHNlY3Q7CiAgICAgICAgdW5zaWduZWQgY2hhciBt dWx0c2VjdF92YWxpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgbGJhX2NhcGFjaXR5OwogICAgICAg IHVuc2lnbmVkIHNob3J0IGRtYV8xd29yZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkbWFfbXdv cmQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZWlkZV9waW9fbW9kZXM7CiAgICAgICAgdW5zaWdu ZWQgc2hvcnQgZWlkZV9kbWFfbWluOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGVpZGVfZG1hX3Rp bWU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZWlkZV9waW87CiAgICAgICAgdW5zaWduZWQgc2hv cnQgZWlkZV9waW9faW9yZHk7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd29yZHM2OV83MFsyXTsK CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd29yZHM3MV83NFs0XTsKICAgICAgICB1bnNpZ25lZCBz aG9ydCBxdWV1ZV9kZXB0aDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3b3Jkczc2Xzc5WzRdOwog ICAgICAgIHVuc2lnbmVkIHNob3J0IG1ham9yX3Jldl9udW07CiAgICAgICAgdW5zaWduZWQgc2hv cnQgbWlub3JfcmV2X251bTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb21tYW5kX3NldF8xOwog ICAgICAgIHVuc2lnbmVkIHNob3J0IGNvbW1hbmRfc2V0XzI7CiAgICAgICAgdW5zaWduZWQgc2hv cnQgY2Zzc2U7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY2ZzX2VuYWJsZV8xOwogICAgICAgIHVu c2lnbmVkIHNob3J0IGNmc19lbmFibGVfMjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjc2ZfZGVm YXVsdDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkbWFfdWx0cmE7CiAgICAgICAgdW5zaWduZWQg c2hvcnQgd29yZDg5OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdvcmQ5MDsKICAgICAgICB1bnNp Z25lZCBzaG9ydCBDdXJBUE12YWx1ZXM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd29yZDkyOwog ICAgICAgIHVuc2lnbmVkIHNob3J0IGh3X2NvbmZpZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3 b3Jkczk0XzEyNVszMl07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGFzdF9sdW47CiAgICAgICAg dW5zaWduZWQgc2hvcnQgd29yZDEyNzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkbGY7CiMgMjk0 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2xpbnV4L2hkcmVnLmgiIDMKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjc2ZvOwoKCgoKCgog ICAgICAgIHVuc2lnbmVkIHNob3J0IHdvcmRzMTMwXzE1NVsyNl07CiAgICAgICAgdW5zaWduZWQg c2hvcnQgd29yZDE1NjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3b3JkczE1N18xNTlbM107CiAg ICAgICAgdW5zaWduZWQgc2hvcnQgd29yZHMxNjBfMjU1Wzk1XTsKfTsKIyAxMyAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9p ZGUuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s aW51eC9zeXMtaW5jbHVkZS9saW51eC9oZHNtYXJ0LmgiIDEgMwojIDI3ICIvb3B0L2ZzcC9pNTg2 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hkc21h cnQuaCIgMwp0eXBlZGVmIHN0cnVjdCBhdGFfc21hcnRfYXR0cmlidXRlX3MgewogICAgICAgIHVu c2lnbmVkIGNoYXIgaWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzX2ZsYWc7CiAgICAg ICAgdW5zaWduZWQgY2hhciBub3JtYWxpemVkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgd29yc2Vf bm9ybWFsOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcmF3WzZdOwogICAgICAgIHVuc2lnbmVkIGNo YXIgcmVzZXJ2Owp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBhdGFfc21hcnRfYXR0cmlidXRl X3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgYXRhX3NtYXJ0X3ZhbHVlc19zIHsKICAgICAgICB1bnNpZ25l ZCBzaG9ydCByZXZudW1iZXI7CiAgICAgICAgYXRhX3NtYXJ0X2F0dHJpYnV0ZV90IHZlbmRvcl9h dHRyaWJ1dGVzIFszMF07CiAgICAgICAgdW5zaWduZWQgY2hhciBvZmZsaW5lX2RhdGFfY29sbGVj dGlvbl9zdGF0dXM7CiAgICAgICAgdW5zaWduZWQgY2hhciBzZWxmX3Rlc3RfZXhlY19zdGF0dXM7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdG90YWxfdGltZV90b19jb21wbGV0ZV9vZmZfbGluZTsK ICAgICAgICB1bnNpZ25lZCBjaGFyIHZlbmRvcl9zcGVjaWZpY18zNjY7CiAgICAgICAgdW5zaWdu ZWQgY2hhciBvZmZsaW5lX2RhdGFfY29sbGVjdGlvbl9jYXBhYmlsaXR5OwogICAgICAgIHVuc2ln bmVkIHNob3J0IHNtYXJ0X2NhcGFiaWxpdHk7CiAgICAgICAgdW5zaWduZWQgY2hhciBlcnJvcmxv Z19jYXBhYmlsaXR5OwogICAgICAgIHVuc2lnbmVkIGNoYXIgdmVuZG9yX3NwZWNpZmljXzM3MTsK ICAgICAgICB1bnNpZ25lZCBjaGFyIHNob3J0X3Rlc3RfY29tcGxldGlvbl90aW1lOwogICAgICAg IHVuc2lnbmVkIGNoYXIgZXh0ZW5kX3Rlc3RfY29tcGxldGlvbl90aW1lOwogICAgICAgIHVuc2ln bmVkIGNoYXIgcmVzZXJ2ZWRfMzc0XzM4NSBbMTJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdmVu ZG9yX3NwZWNpZmljXzM4Nl81MDkgWzEyNV07CiAgICAgICAgdW5zaWduZWQgY2hhciBjaGtzdW07 Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGF0YV9zbWFydF92YWx1ZXNfdDsKCgoKdHlwZWRl ZiBzdHJ1Y3QgYXRhX3NtYXJ0X3RocmVzaG9sZF9lbnRyeV9zIHsKICAgICAgICB1bnNpZ25lZCBj aGFyIGlkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbm9ybWFsaXplZF90aHJlc2hvbGQ7CiAgICAg ICAgdW5zaWduZWQgY2hhciByZXNlcnZlZFsxMF07Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkp IGF0YV9zbWFydF90aHJlc2hvbGRfZW50cnlfdDsKCgp0eXBlZGVmIHN0cnVjdCBhdGFfc21hcnRf dGhyZXNob2xkc19zIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCByZXZudW1iZXI7CiAgICAgICAg YXRhX3NtYXJ0X3RocmVzaG9sZF9lbnRyeV90IHRocmVzX2VudHJpZXNbMzBdOwogICAgICAgIHVu c2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTQ5XTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNoa3N1bTsK fSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgYXRhX3NtYXJ0X3RocmVzaG9sZHNfdDsKCnR5cGVk ZWYgc3RydWN0IGF0YV9zbWFydF9lcnJvcmxvZ19jb21tYW5kX3N0cnVjdF9zIHsKICAgICAgICB1 bnNpZ25lZCBjaGFyIGRldmljZWNvbnRyb2xyZWc7CiAgICAgICAgdW5zaWduZWQgY2hhciBmZWF0 dXJlc3JlZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNlY3Rvcl9jb3VudDsKICAgICAgICB1bnNp Z25lZCBjaGFyIHNlY3Rvcl9udW1iZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBjeWxpbmRlcl9s b3c7CiAgICAgICAgdW5zaWduZWQgY2hhciBjeWxpbmRlcl9oaWdoOwogICAgICAgIHVuc2lnbmVk IGNoYXIgZHJpdmVfaGVhZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbW1hbmRyZWc7CiAgICAg ICAgdW5zaWduZWQgaW50IHRpbWVzdGFtcDsKfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgYXRh X3NtYXJ0X2Vycm9ybG9nX2NvbW1hbmRfc3RydWN0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBhdGFfc21h cnRfZXJyb3Jsb2dfZXJyb3Jfc3RydWN0X3MgewogICAgICAgIHVuc2lnbmVkIGNoYXIgZXJyb3Jf Y29uZGl0aW9uOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZXh0ZW5kZWRfZXJyb3JbMTRdOwogICAg ICAgIHVuc2lnbmVkIGNoYXIgc3RhdGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdGltZXN0YW1w Owp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBhdGFfc21hcnRfZXJyb3Jsb2dfZXJyb3Jfc3Ry dWN0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBhdGFfc21hcnRfZXJyb3Jsb2dfc3RydWN0X3MgewogICAg ICAgIGF0YV9zbWFydF9lcnJvcmxvZ19jb21tYW5kX3N0cnVjdF90IGNvbW1hbmRzWzZdOwogICAg ICAgIGF0YV9zbWFydF9lcnJvcmxvZ19lcnJvcl9zdHJ1Y3RfdCBlcnJvcl9zdHJ1Y3Q7Cn0gX19h dHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGF0YV9zbWFydF9lcnJvcmxvZ19zdHJ1Y3RfdDsKCnR5cGVk ZWYgc3RydWN0IGF0YV9zbWFydF9lcnJvcmxvZ19zIHsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJl dm51bWJlcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGVycm9yX2xvZ19wb2ludGVyOwogICAgICAg IGF0YV9zbWFydF9lcnJvcmxvZ19zdHJ1Y3RfdCBlcnJvcmxvZ19zdHJ1Y3RbNV07CiAgICAgICAg dW5zaWduZWQgc2hvcnQgYXRhX2Vycm9yX2NvdW50OwogICAgICAgIHVuc2lnbmVkIHNob3J0IG5v bl9mYXRhbF9jb3VudDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcml2ZV90aW1lb3V0X2NvdW50 OwogICAgICAgIHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNTNdOwogICAgICAgIHVuc2lnbmVkIGNo YXIgY2hrc3VtOwp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBhdGFfc21hcnRfZXJyb3Jsb2df dDsKCnR5cGVkZWYgc3RydWN0IGF0YV9zbWFydF9zZWxmdGVzdGxvZ19zdHJ1Y3RfcyB7CiAgICAg ICAgdW5zaWduZWQgY2hhciBzZWxmdGVzdG51bWJlcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNl bGZ0ZXN0c3RhdHVzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHRpbWVzdGFtcDsKICAgICAgICB1 bnNpZ25lZCBjaGFyIHNlbGZ0ZXN0ZmFpbHVyZWNoZWNrcG9pbnQ7CiAgICAgICAgdW5zaWduZWQg aW50IGxiYWZpcnN0ZmFpbHVyZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZlbmRvcnNwZWNpZmlj WzE1XTsKfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgYXRhX3NtYXJ0X3NlbGZ0ZXN0bG9nX3N0 cnVjdF90OwoKdHlwZWRlZiBzdHJ1Y3QgYXRhX3NtYXJ0X3NlbGZ0ZXN0bG9nX3MgewogICAgICAg IHVuc2lnbmVkIHNob3J0IHJldm51bWJlcjsKICAgICAgICBhdGFfc21hcnRfc2VsZnRlc3Rsb2df c3RydWN0X3Qgc2VsZnRlc3Rfc3RydWN0WzIxXTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHZlbmRv cnNwZWNpZmljWzJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbW9zdHJlY2VudHRlc3Q7CiAgICAg ICAgdW5zaWduZWQgY2hhciByZXNldmVyZWRbMl07CiAgICAgICAgdW5zaWduZWQgY2hhciBjaGtz dW07Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGF0YV9zbWFydF9zZWxmdGVzdGxvZ190Owoj IDE0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p bmNsdWRlL2xpbnV4L2lkZS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Jsa2Rldi5oIiAxIDMKCgoKIyAx ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2xpbnV4L21ham9yLmgiIDEgMwojIDE3MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tYWpvci5oIiAzCnN0YXRpYyBf X2lubGluZV9fIGludCBzY3NpX2Jsa19tYWpvcihpbnQgbSkgewogICAgICAgIHJldHVybiAoKCht KSA9PSA4IHx8ICgobSkgPj0gNjUgJiYgKG0pIDw9IDcxKSkgfHwgKG0pID09IDExKTsKfQojIDUg Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1 ZGUvbGludXgvYmxrZGV2LmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMSAzCgoKCiMgMSAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9hc20vcGFyYW0uaCIgMSAzCiMgNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyIDMKCmV4dGVybiB1bnNp Z25lZCBsb25nIGV2ZW50OwoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9iaW5mbXRzLmgiIDEgMwoKCgojIDEgIi9v cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv bGludXgvcHRyYWNlLmgiIDEgMwojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3B0cmFjZS5oIiAzCiMgMSAiL29wdC9m c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20v cHRyYWNlLmgiIDEgMwojIDIxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMwpzdHJ1Y3QgcHRfcmVncyB7CiAg ICAgICAgdW5zaWduZWQgbG9uZyBncHJbMzJdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbmlwOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgbXNyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgb3JpZ19ncHIz OwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3RyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbGluazsK ICAgICAgICB1bnNpZ25lZCBsb25nIHhlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNjcjsKICAg ICAgICB1bnNpZ25lZCBsb25nIG1xOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHRyYXA7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBkYXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkc2lzcjsKICAgICAg ICB1bnNpZ25lZCBsb25nIHJlc3VsdDsKCgoKCgoKCn07CiMgMjUgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcHRyYWNlLmgi IDIgMwojIDUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvYmluZm10cy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxp bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHku aCIgMSAzCiMgMTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1w Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90eXBlcy5o IiAxIDMKCgoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAxIDMKCgoKIyAxICIvb3B0 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp bnV4L3N0ZGRlZi5oIiAxIDMKIyA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDIgMwojIDM2ICIv b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl L2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVk IGxvbmcgZmRzX2JpdHMgWygxMDI0Lyg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSldOwp9IF9f a2VybmVsX2ZkX3NldDsKCgp0eXBlZGVmIHZvaWQgKCpfX2tlcm5lbF9zaWdoYW5kbGVyX3QpKGlu dCk7CgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfa2V5X3Q7CgojIDEgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Bvc2l4X3R5cGVz LmgiIDEgMwojIDEwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50 IF9fa2VybmVsX2Rldl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9pbm9fdDsKdHlw ZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfbW9kZV90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0 IF9fa2VybmVsX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF9vZmZfdDsKdHlwZWRlZiBp bnQgX19rZXJuZWxfcGlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX3VpZF90Owp0 eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9naWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg X19rZXJuZWxfc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9zc2l6ZV90Owp0eXBlZGVmIGxv bmcgX19rZXJuZWxfcHRyZGlmZl90Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfdGltZV90Owp0eXBl ZGVmIGxvbmcgX19rZXJuZWxfc3VzZWNvbmRzX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF9jbG9j a190Owp0eXBlZGVmIGludCBfX2tlcm5lbF9kYWRkcl90Owp0eXBlZGVmIGNoYXIgKiBfX2tlcm5l bF9jYWRkcl90Owp0eXBlZGVmIHNob3J0IF9fa2VybmVsX2lwY19waWRfdDsKdHlwZWRlZiB1bnNp Z25lZCBzaG9ydCBfX2tlcm5lbF91aWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2Vy bmVsX2dpZDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX3VpZDMyX3Q7CnR5cGVk ZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX2dpZDMyX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGludCBf X2tlcm5lbF9vbGRfdWlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX29sZF9naWRf dDsKCgp0eXBlZGVmIGxvbmcgbG9uZyBfX2tlcm5lbF9sb2ZmX3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qg ewogICAgICAgIGludCB2YWxbMl07Cn0gX19rZXJuZWxfZnNpZF90OwojIDU4ICIvb3B0L2ZzcC9p NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wb3Np eF90eXBlcy5oIiAzCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgX19GRF9TRVQodW5zaWduZWQgbG9u ZyBmZCwgX19rZXJuZWxfZmRfc2V0ICpmZHNldHApCnsKICAgICAgICB1bnNpZ25lZCBsb25nIF90 bXAgPSBmZCAvICg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKICAgICAgICB1bnNpZ25lZCBs b25nIF9yZW0gPSBmZCAlICg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKICAgICAgICBmZHNl dHAtPmZkc19iaXRzW190bXBdIHw9ICgxVUw8PF9yZW0pOwp9CgoKc3RhdGljIF9faW5saW5lX18g dm9pZCBfX0ZEX0NMUih1bnNpZ25lZCBsb25nIGZkLCBfX2tlcm5lbF9mZF9zZXQgKmZkc2V0cCkK ewogICAgICAgIHVuc2lnbmVkIGxvbmcgX3RtcCA9IGZkIC8gKDggKiBzaXplb2YodW5zaWduZWQg bG9uZykpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX3JlbSA9IGZkICUgKDggKiBzaXplb2YodW5z aWduZWQgbG9uZykpOwogICAgICAgIGZkc2V0cC0+ZmRzX2JpdHNbX3RtcF0gJj0gfigxVUw8PF9y ZW0pOwp9CgoKc3RhdGljIF9faW5saW5lX18gaW50IF9fRkRfSVNTRVQodW5zaWduZWQgbG9uZyBm ZCwgX19rZXJuZWxfZmRfc2V0ICpwKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfdG1wID0gZmQg LyAoOCAqIHNpemVvZih1bnNpZ25lZCBsb25nKSk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfcmVt ID0gZmQgJSAoOCAqIHNpemVvZih1bnNpZ25lZCBsb25nKSk7CiAgICAgICAgcmV0dXJuIChwLT5m ZHNfYml0c1tfdG1wXSAmICgxVUw8PF9yZW0pKSAhPSAwOwp9CgoKCgoKCnN0YXRpYyBfX2lubGlu ZV9fIHZvaWQgX19GRF9aRVJPKF9fa2VybmVsX2ZkX3NldCAqcCkKewogICAgICAgIHVuc2lnbmVk IGludCAqdG1wID0gKHVuc2lnbmVkIGludCAqKXAtPmZkc19iaXRzOwogICAgICAgIGludCBpOwoK ICAgICAgICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AoKDEwMjQvKDggKiBzaXplb2YodW5zaWdu ZWQgbG9uZykpKSkpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAoKDEwMjQvKDggKiBzaXplb2Yo dW5zaWduZWQgbG9uZykpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg6CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wWzBdID0gMDsgdG1wWzFdID0gMDsgdG1wWzJd ID0gMDsgdG1wWzNdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBbNF0g PSAwOyB0bXBbNV0gPSAwOyB0bXBbNl0gPSAwOyB0bXBbN10gPSAwOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAg ICAgaSA9ICgxMDI0Lyg4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSk7CiAgICAgICAgd2hpbGUg KGkpIHsKICAgICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgICAgICp0bXAgPSAwOwogICAg ICAgICAgICAgICAgdG1wKys7CiAgICAgICAgfQp9CiMgNDcgIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMu aCIgMiAzCiMgOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51 eC9zeXMtaW5jbHVkZS9saW51eC90eXBlcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxp bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS90eXBlcy5oIiAxIDMK CgoKCgp0eXBlZGVmIF9fc2lnbmVkX18gY2hhciBfX3M4Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg X191ODsKCnR5cGVkZWYgX19zaWduZWRfXyBzaG9ydCBfX3MxNjsKdHlwZWRlZiB1bnNpZ25lZCBz aG9ydCBfX3UxNjsKCnR5cGVkZWYgX19zaWduZWRfXyBpbnQgX19zMzI7CnR5cGVkZWYgdW5zaWdu ZWQgaW50IF9fdTMyOwoKCnR5cGVkZWYgX19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7CnR5cGVk ZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBf X3UzMiB1WzRdOwp9IF9fYXR0cmlidXRlKChhbGlnbmVkKDE2KSkpIF9fdmVjdG9yMTI4OwoKCgoK CnR5cGVkZWYgc2lnbmVkIGNoYXIgczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1ODsKCnR5cGVk ZWYgc2lnbmVkIHNob3J0IHMxNjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1MTY7Cgp0eXBlZGVm IHNpZ25lZCBpbnQgczMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1MzI7Cgp0eXBlZGVmIHNpZ25l ZCBsb25nIGxvbmcgczY0Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1NjQ7Cgp0eXBlZGVm IF9fdmVjdG9yMTI4IHZlY3RvcjEyODsKCgoKCnR5cGVkZWYgdTMyIGRtYV9hZGRyX3Q7Cgp0eXBl ZGVmIHVuc2lnbmVkIHNob3J0IHVtb2RlX3Q7CiMgMTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHlwZXMuaCIgMiAzCgoK CnR5cGVkZWYgX19rZXJuZWxfZmRfc2V0IGZkX3NldDsKdHlwZWRlZiBfX2tlcm5lbF9kZXZfdCBk ZXZfdDsKdHlwZWRlZiBfX2tlcm5lbF9pbm9fdCBpbm9fdDsKdHlwZWRlZiBfX2tlcm5lbF9tb2Rl X3QgbW9kZV90Owp0eXBlZGVmIF9fa2VybmVsX25saW5rX3QgbmxpbmtfdDsKdHlwZWRlZiBfX2tl cm5lbF9vZmZfdCBvZmZfdDsKdHlwZWRlZiBfX2tlcm5lbF9waWRfdCBwaWRfdDsKdHlwZWRlZiBf X2tlcm5lbF9kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19rZXJuZWxfa2V5X3Qga2V5X3Q7CnR5 cGVkZWYgX19rZXJuZWxfc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKdHlwZWRlZiBfX2tlcm5l bF91aWQzMl90IHVpZF90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDMyX3QgZ2lkX3Q7CnR5cGVkZWYg X19rZXJuZWxfdWlkMTZfdCB1aWQxNl90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDE2X3QgZ2lkMTZf dDsKIyA0NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9saW51eC90eXBlcy5oIiAzCnR5cGVkZWYgX19rZXJuZWxfbG9mZl90IGxvZmZf dDsKIyA1NCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9saW51eC90eXBlcy5oIiAzCnR5cGVkZWYgX19rZXJuZWxfc2l6ZV90IHNpemVf dDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfc3NpemVfdCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBfX2tl cm5lbF9wdHJkaWZmX3QgcHRyZGlmZl90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3QgdGlt ZV90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9jbG9ja190IGNsb2NrX3Q7CgoKCgp0eXBlZGVmIF9f a2VybmVsX2NhZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsK dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2lu dDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg dW5jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBp bnQgdWludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwoKCgoKdHlwZWRlZiBfX3U4IHVf aW50OF90Owp0eXBlZGVmIF9fczggaW50OF90Owp0eXBlZGVmIF9fdTE2IHVfaW50MTZfdDsKdHlw ZWRlZiBfX3MxNiBpbnQxNl90Owp0eXBlZGVmIF9fdTMyIHVfaW50MzJfdDsKdHlwZWRlZiBfX3Mz MiBpbnQzMl90OwoKCgp0eXBlZGVmIF9fdTggdWludDhfdDsKdHlwZWRlZiBfX3UxNiB1aW50MTZf dDsKdHlwZWRlZiBfX3UzMiB1aW50MzJfdDsKCgp0eXBlZGVmIF9fdTY0IHVpbnQ2NF90Owp0eXBl ZGVmIF9fdTY0IHVfaW50NjRfdDsKdHlwZWRlZiBfX3M2NCBpbnQ2NF90OwojIDEyMyAiL29wdC9m c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51 eC90eXBlcy5oIiAzCnN0cnVjdCB1c3RhdCB7CiAgICAgICAgX19rZXJuZWxfZGFkZHJfdCBmX3Rm cmVlOwogICAgICAgIF9fa2VybmVsX2lub190IGZfdGlub2RlOwogICAgICAgIGNoYXIgZl9mbmFt ZVs2XTsKICAgICAgICBjaGFyIGZfZnBhY2tbNl07Cn07CiMgMTcgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvY2FwYWJpbGl0 eS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDEgMwojIDEwICIvb3B0L2ZzcC9pNTg2LXBjLWxp bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDMKIyAx ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2xpbnV4L2xpbmthZ2UuaCIgMSAzCiMgMTEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29w dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s aW51eC9saW1pdHMuaCIgMSAzCiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC93 YWl0LmgiIDEgMwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgva2VybmVsLmgi IDEgMwojIDEwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4 L3N5cy1pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51 eC1nbnUvbG9jYWwvbGliL2djYy1saWIvcG93ZXJwYy1saW51eC8zLjEvaW5jbHVkZS9zdGRhcmcu aCIgMSAzCiMgNDMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGli L3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2J1aWx0aW5f dmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyAxMTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUvc3RkYXJnLmgiIDMK dHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxp bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAy IDMKIyA0OCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMwpzdHJ1Y3Qgc2VtYXBob3JlOwoKZXh0ZXJuIHN0 cnVjdCBub3RpZmllcl9ibG9jayAqcGFuaWNfbm90aWZpZXJfbGlzdDsKIHZvaWQgcGFuaWMoY29u c3QgY2hhciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChub3JldHVybiwgZm9y bWF0IChwcmludGYsIDEsIDIpKSk7CiB2b2lkIGRvX2V4aXQobG9uZyBlcnJvcl9jb2RlKQogICAg ICAgIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CiB2b2lkIHVwX2FuZF9leGl0KHN0cnVjdCBz ZW1hcGhvcmUgKiwgbG9uZykKICAgICAgICBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwpleHRl cm4gdW5zaWduZWQgbG9uZyBzaW1wbGVfc3RydG91bChjb25zdCBjaGFyICosY2hhciAqKix1bnNp Z25lZCBpbnQpOwpleHRlcm4gbG9uZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKixjaGFyICoq LHVuc2lnbmVkIGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgc2ltcGxlX3N0cnRvdWxs KGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBsb25nIGxvbmcgc2lt cGxlX3N0cnRvbGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIGlu dCBzcHJpbnRmKGNoYXIgKiBidWYsIGNvbnN0IGNoYXIgKiBmbXQsIC4uLik7CmV4dGVybiBpbnQg dnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwpleHRlcm4gaW50IGdl dF9vcHRpb24oY2hhciAqKnN0ciwgaW50ICpwaW50KTsKZXh0ZXJuIGNoYXIgKmdldF9vcHRpb25z KGNoYXIgKnN0ciwgaW50IG5pbnRzLCBpbnQgKmludHMpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBs b25nIG1lbXBhcnNlKGNoYXIgKnB0ciwgY2hhciAqKnJldHB0cik7CmV4dGVybiB2b2lkIGRldl9w cm9iZV9sb2NrKHZvaWQpOwpleHRlcm4gdm9pZCBkZXZfcHJvYmVfdW5sb2NrKHZvaWQpOwoKZXh0 ZXJuIGludCBzZXNzaW9uX29mX3BncnAoaW50IHBncnApOwoKIGludCBwcmludGsoY29uc3QgY2hh ciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMSwg MikpKTsKCmV4dGVybiBpbnQgY29uc29sZV9sb2dsZXZlbDsKCnN0YXRpYyBpbmxpbmUgdm9pZCBj b25zb2xlX3NpbGVudCh2b2lkKQp7CiAgICAgICAgY29uc29sZV9sb2dsZXZlbCA9IDA7Cn0KCnN0 YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3ZlcmJvc2Uodm9pZCkKewogICAgICAgIGlmIChjb25z b2xlX2xvZ2xldmVsKQogICAgICAgICAgICAgICAgY29uc29sZV9sb2dsZXZlbCA9IDE1Owp9CiMg MTE3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p bmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAzCnN0cnVjdCBzeXNpbmZvIHsKICAgICAgICBsb25nIHVw dGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvYWRzWzNdOwogICAgICAgIHVuc2lnbmVkIGxv bmcgdG90YWxyYW07CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlcmFtOwogICAgICAgIHVuc2ln bmVkIGxvbmcgc2hhcmVkcmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVycmFtOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgdG90YWxzd2FwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZXN3 YXA7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcHJvY3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0 b3RhbGhpZ2g7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlaGlnaDsKICAgICAgICB1bnNpZ25l ZCBpbnQgbWVtX3VuaXQ7CiAgICAgICAgY2hhciBfZlsyMC0yKnNpemVvZihsb25nKS1zaXplb2Yo aW50KV07Cn07CiMgMTQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt bGludXgvc3lzLWluY2x1ZGUvbGludXgvd2FpdC5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBj LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2xpc3QuaCIg MSAzCgoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDEgMwojIDEzICIvb3B0L2ZzcC9pNTg2 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3ByZWZl dGNoLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMSAzCiMgNjUwICIvb3B0L2ZzcC9pNTg2 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNz b3IuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvYXNtL2Rjci5oIiAxIDMKIyA2NTEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAy IDMKIyA2ODMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAzCmV4dGVybiBpbnQgX3ByZXBfdHlwZTsKCgoK CmV4dGVybiB1bnNpZ25lZCBjaGFyIHVjU3lzdGVtVHlwZTsKZXh0ZXJuIHVuc2lnbmVkIGNoYXIg dWNCb2FyZFJldjsKZXh0ZXJuIHVuc2lnbmVkIGNoYXIgdWNCb2FyZFJldk1haiwgdWNCb2FyZFJl dk1pbjsKCnN0cnVjdCB0YXNrX3N0cnVjdDsKdm9pZCBzdGFydF90aHJlYWQoc3RydWN0IHB0X3Jl Z3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgbmlwLCB1bnNpZ25lZCBsb25nIHNwKTsKdm9pZCByZWxl YXNlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CgoKCgpleHRlcm4gbG9uZyBrZXJuZWxf dGhyZWFkKGludCAoKmZuKSh2b2lkICopLCB2b2lkICphcmcsIHVuc2lnbmVkIGxvbmcgZmxhZ3Mp OwojIDcxMCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDMKZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAq bGFzdF90YXNrX3VzZWRfbWF0aDsKZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqbGFzdF90YXNr X3VzZWRfYWx0aXZlYzsKIyA3MjYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv d2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAzCnR5cGVkZWYgc3RydWN0 IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlZzsKfSBtbV9zZWdtZW50X3Q7CgpzdHJ1Y3QgdGhy ZWFkX3N0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBrc3A7CiAgICAgICAgdW5zaWduZWQg bG9uZyB3Y2hhbjsKICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVnczsKICAgICAgICBtbV9zZWdt ZW50X3QgZnM7CiAgICAgICAgdm9pZCAqcGdkaXI7CiAgICAgICAgc2lnbmVkIGxvbmcgbGFzdF9z eXNjYWxsOwogICAgICAgIGRvdWJsZSBmcHJbMzJdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnBz Y3JfcGFkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnBzY3I7CgoKCgoKCgogICAgICAgIHVuc2ln bmVkIGxvbmcgcHRyYWNlX2RiY3IwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHRyYWNlX2RiY3Ix OwoKfTsKIyA3OTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAzCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQg bG9uZyB0aHJlYWRfc2F2ZWRfcGMoc3RydWN0IHRocmVhZF9zdHJ1Y3QgKnQpCnsKICAgICAgICBy ZXR1cm4gKHQtPnJlZ3MpID8gdC0+cmVncy0+bmlwIDogMDsKfQoKCgoKdW5zaWduZWQgbG9uZyBn ZXRfd2NoYW4oc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKIyA4MTUgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Byb2Nlc3Nvci5o IiAzCmludCBsbF9wcmludGsoY29uc3QgY2hhciAqLCAuLi4pOwp2b2lkIGxsX3B1dHMoY29uc3Qg Y2hhciAqKTsKCgoKCgp2b2lkIF9ubWFza19hbmRfb3JfbXNyKHVuc2lnbmVkIGxvbmcgbm1hc2ss IHVuc2lnbmVkIGxvbmcgb3JfdmFsKTsKdm9pZCBfcG93ZXJzYXZlX25tYXNrX2FuZF9vcl9tc3Io dW5zaWduZWQgbG9uZyBubWFzaywgdW5zaWduZWQgbG9uZyBvcl92YWwpOwojIDE0ICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4 L3ByZWZldGNoLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv d2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2NhY2hlLmgiIDEgMwojIDkgIi9vcHQvZnNwL2k1 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2NhY2hl LmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4 L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMSAzCiMgMTAgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2NhY2hlLmgiIDIg MwojIDQwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2FzbS9jYWNoZS5oIiAzCmV4dGVybiB2b2lkIGNsZWFuX2RjYWNoZV9yYW5nZSh1 bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHN0b3ApOwpleHRlcm4gdm9pZCBmbHVz aF9kY2FjaGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzdG9wKTsK ZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9kY2FjaGVfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwg dW5zaWduZWQgbG9uZyBzdG9wKTsKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAyIDMKIyA0MyAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9saW51eC9wcmVmZXRjaC5oIiAzCnN0YXRpYyBpbmxpbmUgdm9pZCBwcmVmZXRjaChjb25zdCB2 b2lkICp4KSB7O30KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBwcmVmZXRjaHcoY29uc3Qgdm9pZCAq eCkgezt9CiMgNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51 eC9zeXMtaW5jbHVkZS9saW51eC9saXN0LmgiIDIgMwojIDE4ICIvb3B0L2ZzcC9pNTg2LXBjLWxp bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMwpz dHJ1Y3QgbGlzdF9oZWFkIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0LCAqcHJldjsK fTsKIyAzNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9saW51eC9saXN0LmgiIDMKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3Rf YWRkKHN0cnVjdCBsaXN0X2hlYWQgKiBuZXcsCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqIHBy ZXYsCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2 ID0gbmV3OwogICAgICAgIG5ldy0+bmV4dCA9IG5leHQ7CiAgICAgICAgbmV3LT5wcmV2ID0gcHJl djsKICAgICAgICBwcmV2LT5uZXh0ID0gbmV3Owp9CiMgNTUgIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbGlzdC5oIiAzCnN0 YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9hZGQoc3RydWN0IGxpc3RfaGVhZCAqbmV3LCBzdHJ1 Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgX19saXN0X2FkZChuZXcsIGhlYWQsIGhlYWQt Pm5leHQpOwp9CiMgNjggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt bGludXgvc3lzLWluY2x1ZGUvbGludXgvbGlzdC5oIiAzCnN0YXRpYyBfX2lubGluZV9fIHZvaWQg bGlzdF9hZGRfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQgKmhl YWQpCnsKICAgICAgICBfX2xpc3RfYWRkKG5ldywgaGVhZC0+cHJldiwgaGVhZCk7Cn0KIyA4MCAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9saW51eC9saXN0LmgiIDMKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3RfZGVsKHN0cnVj dCBsaXN0X2hlYWQgKiBwcmV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGxpc3RfaGVhZCAqIG5leHQpCnsKICAgICAgICBuZXh0LT5wcmV2ID0gcHJldjsKICAgICAg ICBwcmV2LT5uZXh0ID0gbmV4dDsKfQoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxpc3Rf ZGVsKHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRyeS0+ cHJldiwgZW50cnktPm5leHQpOwp9CgoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X2Rl bF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQp7CiAgICAgICAgX19saXN0X2RlbChlbnRy eS0+cHJldiwgZW50cnktPm5leHQpOwogICAgICAgIGRvIHsgKGVudHJ5KS0+bmV4dCA9IChlbnRy eSk7IChlbnRyeSktPnByZXYgPSAoZW50cnkpOyB9IHdoaWxlICgwKTsKfQoKCgoKCnN0YXRpYyBf X2lubGluZV9fIGludCBsaXN0X2VtcHR5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKICAgICAg ICByZXR1cm4gaGVhZC0+bmV4dCA9PSBoZWFkOwp9CgoKCgoKCnN0YXRpYyBfX2lubGluZV9fIHZv aWQgbGlzdF9zcGxpY2Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgc3RydWN0IGxpc3RfaGVhZCAq aGVhZCkKewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmZpcnN0ID0gbGlzdC0+bmV4dDsKCiAg ICAgICAgaWYgKGZpcnN0ICE9IGxpc3QpIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgKmxhc3QgPSBsaXN0LT5wcmV2OwogICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAq YXQgPSBoZWFkLT5uZXh0OwoKICAgICAgICAgICAgICAgIGZpcnN0LT5wcmV2ID0gaGVhZDsKICAg ICAgICAgICAgICAgIGhlYWQtPm5leHQgPSBmaXJzdDsKCiAgICAgICAgICAgICAgICBsYXN0LT5u ZXh0ID0gYXQ7CiAgICAgICAgICAgICAgICBhdC0+cHJldiA9IGxhc3Q7CiAgICAgICAgfQp9CiMg MTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu Y2x1ZGUvbGludXgvd2FpdC5oIiAyIDMKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAxIDMKIyA1 MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9saW51eC9zcGlubG9jay5oIiAzCiAgdHlwZWRlZiBzdHJ1Y3QgeyB9IHNwaW5sb2NrX3Q7 CiMgMTE0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDMKICB0eXBlZGVmIHN0cnVjdCB7IH0gcndsb2Nr X3Q7CiMgMTcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvd2FpdC5oIiAyIDMKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGFnZS5oIiAxIDMKIyAy MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9hc20vcGFnZS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv bGliL2djYy1saWIvcG93ZXJwYy1saW51eC8zLjEvaW5jbHVkZS9hc20vc3lzdGVtLmgiIDEgMwoj IDIwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBj LWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgva2Rldl90Lmgi IDEgMwojIDY3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4 L3N5cy1pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAzCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQga2Rl dl90OwojIDc2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4 L3N5cy1pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAzCmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5h bWUoa2Rldl90KTsKCgoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQga2Rldl90X3RvX25y KGtkZXZfdCBkZXYpIHsKICAgICAgICByZXR1cm4gKCgodW5zaWduZWQgaW50KSAoKGRldikgPj4g OCkpPDw4KSB8ICgodW5zaWduZWQgaW50KSAoKGRldikgJiAoKDFVIDw8IDgpIC0gMSkpKTsKfQoK c3RhdGljIGlubGluZSBrZGV2X3QgdG9fa2Rldl90KGludCBkZXYpCnsKICAgICAgICBpbnQgbWFq b3IsIG1pbm9yOwojIDk4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAzCiAgICAgICAgbWFqb3IgPSAoZGV2 ID4+IDgpOwogICAgICAgIG1pbm9yID0gKGRldiAmIDB4ZmYpOwoKICAgICAgICByZXR1cm4gKCgo bWFqb3IpIDw8IDgpIHwgKG1pbm9yKSk7Cn0KIyAyMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvbGliL2djYy1saWIvcG93ZXJwYy1saW51eC8zLjEvaW5jbHVkZS9hc20vc3lzdGVt LmgiIDIgMwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMSAzCiMgMjMgIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUv YXNtL3N5c3RlbS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9hdG9taWMuaCIgMSAzCgoKCgoKCgp0eXBlZGVm IHN0cnVjdCB7IHZvbGF0aWxlIGludCBjb3VudGVyOyB9IGF0b21pY190OwoKCgoKCgoKc3RhdGlj IF9faW5saW5lX18gdm9pZCBhdG9taWNfc2V0KGF0b21pY190ICp2LCBpbnQgYSkKewogICAgICAg IGludCB0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiXG4xOglsd2FyeAklMCwwLCUz XG4Jb3JpCSUwLCUyLDBcbglzdHdjeC4JJTAsMCwlM1xuCWJuZS0JMWIiCgoKCgogICAgICAgIDog Ij0mciIgKHQpLCAiPW0iICh2LT5jb3VudGVyKQogICAgICAgIDogInIiIChhKSwgInIiICh2KSwg Im0iICh2LT5jb3VudGVyKQogICAgICAgIDogImNjIik7Cn0KCgoKZXh0ZXJuIHZvaWQgYXRvbWlj X2NsZWFyX21hc2sodW5zaWduZWQgbG9uZyBtYXNrLCB1bnNpZ25lZCBsb25nICphZGRyKTsKZXh0 ZXJuIHZvaWQgYXRvbWljX3NldF9tYXNrKHVuc2lnbmVkIGxvbmcgbWFzaywgdW5zaWduZWQgbG9u ZyAqYWRkcik7CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2FkZF9yZXR1cm4oaW50IGEs IGF0b21pY190ICp2KQp7CiAgICAgICAgaW50IHQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGls ZV9fKCJcbjE6CWx3YXJ4CSUwLDAsJTNcbglhZGQJJTAsJTIsJTBcbglzdHdjeC4JJTAsMCwlM1xu CWJuZS0JMWIiCgoKCgogICAgICAgIDogIj0mciIgKHQpLCAiPW0iICh2LT5jb3VudGVyKQogICAg ICAgIDogInIiIChhKSwgInIiICh2KSwgIm0iICh2LT5jb3VudGVyKQogICAgICAgIDogImNjIik7 CgogICAgICAgIHJldHVybiB0Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX3N1Yl9y ZXR1cm4oaW50IGEsIGF0b21pY190ICp2KQp7CiAgICAgICAgaW50IHQ7CgogICAgICAgIF9fYXNt X18gX192b2xhdGlsZV9fKCJcbjE6CWx3YXJ4CSUwLDAsJTNcbglzdWJmCSUwLCUyLCUwXG4Jc3R3 Y3guCSUwLDAsJTNcbglibmUtCTFiIgoKCgoKICAgICAgICA6ICI9JnIiICh0KSwgIj1tIiAodi0+ Y291bnRlcikKICAgICAgICA6ICJyIiAoYSksICJyIiAodiksICJtIiAodi0+Y291bnRlcikKICAg ICAgICA6ICJjYyIpOwoKICAgICAgICByZXR1cm4gdDsKfQoKc3RhdGljIF9faW5saW5lX18gaW50 IGF0b21pY19pbmNfcmV0dXJuKGF0b21pY190ICp2KQp7CiAgICAgICAgaW50IHQ7CgogICAgICAg IF9fYXNtX18gX192b2xhdGlsZV9fKCJcbjE6CWx3YXJ4CSUwLDAsJTJcbglhZGRpYwklMCwlMCwx XG4Jc3R3Y3guCSUwLDAsJTJcbglibmUtCTFiIgoKCgoKICAgICAgICA6ICI9JnIiICh0KSwgIj1t IiAodi0+Y291bnRlcikKICAgICAgICA6ICJyIiAodiksICJtIiAodi0+Y291bnRlcikKICAgICAg ICA6ICJjYyIpOwoKICAgICAgICByZXR1cm4gdDsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IGF0 b21pY19kZWNfcmV0dXJuKGF0b21pY190ICp2KQp7CiAgICAgICAgaW50IHQ7CgogICAgICAgIF9f YXNtX18gX192b2xhdGlsZV9fKCJcbjE6CWx3YXJ4CSUwLDAsJTJcbglhZGRpYwklMCwlMCwtMVxu CXN0d2N4LgklMCwwLCUyXG4JYm5lCTFiIgoKCgoKICAgICAgICA6ICI9JnIiICh0KSwgIj1tIiAo di0+Y291bnRlcikKICAgICAgICA6ICJyIiAodiksICJtIiAodi0+Y291bnRlcikKICAgICAgICA6 ICJjYyIpOwoKICAgICAgICByZXR1cm4gdDsKfQojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0 ZW0uaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s aW51eC9zeXMtaW5jbHVkZS9hc20vaHdfaXJxLmgiIDEgMwojIDEwICIvb3B0L2ZzcC9pNTg2LXBj LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9od19pcnEuaCIg MwpzdHJ1Y3QgaW50X2NvbnRyb2xfc3RydWN0CnsKICAgICAgICB2b2lkICgqaW50X2NsaSkodm9p ZCk7CiAgICAgICAgdm9pZCAoKmludF9zdGkpKHZvaWQpOwogICAgICAgIHZvaWQgKCppbnRfcmVz dG9yZV9mbGFncykodW5zaWduZWQgbG9uZyk7CiAgICAgICAgdm9pZCAoKmludF9zYXZlX2ZsYWdz KSh1bnNpZ25lZCBsb25nICopOwogICAgICAgIHZvaWQgKCppbnRfc2V0X2xvc3QpKHVuc2lnbmVk IGxvbmcpOwp9OwpleHRlcm4gc3RydWN0IGludF9jb250cm9sX3N0cnVjdCBpbnRfY29udHJvbDsK ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdGltZXJfaW50ZXJydXB0X2ludGVyY2VwdDsKZXh0ZXJuIHVu c2lnbmVkIGxvbmcgZG9fSVJRX2ludGVyY2VwdDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZG9fY3Jp dF9JUlFfaW50ZXJjZXB0OwppbnQgdGltZXJfaW50ZXJydXB0KHN0cnVjdCBwdF9yZWdzICopOwoK ZXh0ZXJuIHZvaWQgX19ub191c2Vfc3RpKHZvaWQpOwpleHRlcm4gdm9pZCBfX25vX3VzZV9jbGko dm9pZCk7CmV4dGVybiB2b2lkIF9fbm9fdXNlX3Jlc3RvcmVfZmxhZ3ModW5zaWduZWQgbG9uZyk7 CmV4dGVybiB2b2lkIF9fbm9fdXNlX3NhdmVfZmxhZ3ModW5zaWduZWQgbG9uZyAqKTsKZXh0ZXJu IHZvaWQgX19ub191c2Vfc2V0X2xvc3QodW5zaWduZWQgbG9uZyk7CiMgMzcgIi9vcHQvZnNwL2k1 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2h3X2ly cS5oIiAzCmV4dGVybiB2b2lkIGRvX2xvc3RfaW50ZXJydXB0cyh1bnNpZ25lZCBsb25nKTsKIyA0 NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9hc20vaHdfaXJxLmgiIDMKc3RydWN0IGh3X2ludGVycnVwdF90eXBlOwpzdGF0aWMgaW5s aW5lIHZvaWQgaHdfcmVzZW5kX2lycShzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUgKmgsIHVuc2ln bmVkIGludCBpKSB7fQojIDI1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIv Z2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMiAzCiMgNTkg Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGlu dXgvMy4xL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAzCmV4dGVybiB2b2lkIHhtb25faXJxKGludCwg dm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIHZvaWQgeG1vbihzdHJ1Y3QgcHRfcmVn cyAqZXhjcCk7CgoKCgpleHRlcm4gX19pbmxpbmVfXyB2b2lkIGRjYmYodm9pZCAqbGluZSkKewog ICAgICAgIGFzbSBfX3ZvbGF0aWxlX18gKCJkY2JmICUwLCUxOyBzeW5jIiA6IDogInIiIChsaW5l KSwgInIiICgwKSk7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgaWNiaSh2b2lkICpsaW5lKQp7 CiAgICAgICAgYXNtIF9fdm9sYXRpbGVfXyAoImljYmkgJTAsJTE7IHN5bmMiIDogOiAiciIgKGxp bmUpLCAiciIgKDApKTsKfQoKZXh0ZXJuIHZvaWQgcHJpbnRfYmFja3RyYWNlKHVuc2lnbmVkIGxv bmcgKik7CgoKCgoKCgpleHRlcm4gdm9pZCBzaG93X3JlZ3Moc3RydWN0IHB0X3JlZ3MgKiByZWdz KTsKZXh0ZXJuIHZvaWQgZmx1c2hfaW5zdHJ1Y3Rpb25fY2FjaGUodm9pZCk7CmV4dGVybiB2b2lk IGhhcmRfcmVzZXRfbm93KHZvaWQpOwpleHRlcm4gdm9pZCBwb3dlcm9mZl9ub3codm9pZCk7CmV4 dGVybiBpbnQgX2dldF9QVlIodm9pZCk7CmV4dGVybiBsb25nIF9nZXRfTDJDUih2b2lkKTsKZXh0 ZXJuIHZvaWQgX3NldF9MMkNSKHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCB2aWFfY3VkYV9p bml0KHZvaWQpOwpleHRlcm4gdm9pZCBwbWFjX252cmFtX2luaXQodm9pZCk7CmV4dGVybiB2b2lk IHJlYWRfcnRjX3RpbWUodm9pZCk7CmV4dGVybiB2b2lkIHBtYWNfZmluZF9kaXNwbGF5KHZvaWQp OwpleHRlcm4gdm9pZCBnaXZldXBfZnB1KHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZv aWQgZW5hYmxlX2tlcm5lbF9mcCh2b2lkKTsKZXh0ZXJuIHZvaWQgZ2l2ZXVwX2FsdGl2ZWMoc3Ry dWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBsb2FkX3VwX2FsdGl2ZWMoc3RydWN0IHRh c2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBjdnRfZmQoZmxvYXQgKmZyb20sIGRvdWJsZSAqdG8s IHVuc2lnbmVkIGxvbmcgKmZwc2NyKTsKZXh0ZXJuIHZvaWQgY3Z0X2RmKGRvdWJsZSAqZnJvbSwg ZmxvYXQgKnRvLCB1bnNpZ25lZCBsb25nICpmcHNjcik7CmV4dGVybiBpbnQgY2FsbF9ydGFzKGNv bnN0IGNoYXIgKiwgaW50LCBpbnQsIHVuc2lnbmVkIGxvbmcgKiwgLi4uKTsKZXh0ZXJuIGludCBh YnMoaW50KTsKZXh0ZXJuIHZvaWQgY2FjaGVhYmxlX21lbXplcm8odm9pZCAqcCwgdW5zaWduZWQg aW50IG5iKTsKCnN0cnVjdCBkZXZpY2Vfbm9kZTsKZXh0ZXJuIHZvaWQgbm90ZV9zY3NpX2hvc3Qo c3RydWN0IGRldmljZV9ub2RlICosIHZvaWQgKik7CgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CgoKZXh0 ZXJuIHZvaWQgX3N3aXRjaF90byhzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IHRhc2tfc3Ry dWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICoqKTsKCnN0 cnVjdCB0aHJlYWRfc3RydWN0OwpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpfc3dpdGNoKHN0 cnVjdCB0aHJlYWRfc3RydWN0ICpwcmV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB0aHJlYWRfc3RydWN0ICpuZXh0KTsKCmV4dGVybiB1bnNpZ25lZCBpbnQgcnRh c19kYXRhOwoKc3RydWN0IHB0X3JlZ3M7CmV4dGVybiB2b2lkIGR1bXBfcmVncyhzdHJ1Y3QgcHRf cmVncyAqKTsKIyAxNTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2Mt bGliL3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUvYXNtL3N5c3RlbS5oIiAzCnN0YXRpYyBfX2lu bGluZV9fIHVuc2lnbmVkIGxvbmcKeGNoZ191MzIodm9sYXRpbGUgdm9pZCAqcCwgdW5zaWduZWQg bG9uZyB2YWwpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHByZXY7CgogICAgICAgIF9fYXNtX18g X192b2xhdGlsZV9fICgiXG4iCiIxOglsd2FyeAklMCwwLCUyXG4iCiIJc3R3Y3guCSUzLDAsJTJc biIKIglibmUtCTFiIgogICAgICAgIDogIj0mciIgKHByZXYpLCAiPW0iICgqKHZvbGF0aWxlIHVu c2lnbmVkIGxvbmcgKilwKQogICAgICAgIDogInIiIChwKSwgInIiICh2YWwpLCAibSIgKCoodm9s YXRpbGUgdW5zaWduZWQgbG9uZyAqKXApCiAgICAgICAgOiAiY2MiLCAibWVtb3J5Iik7CgogICAg ICAgIHJldHVybiBwcmV2Owp9CgoKCgoKZXh0ZXJuIHZvaWQgX194Y2hnX2NhbGxlZF93aXRoX2Jh ZF9wb2ludGVyKHZvaWQpOwoKCgoKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1 bnNpZ25lZCBsb25nIHgsIHZvaWQgKiBwdHIsIGludCBzaXplKQp7CiAgICAgICAgc3dpdGNoIChz aXplKSB7CiAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBs b25nICl4Y2hnX3UzMihwdHIsIHgpOwoKCgoKICAgICAgICB9CiAgICAgICAgX194Y2hnX2NhbGxl ZF93aXRoX2JhZF9wb2ludGVyKCk7CiAgICAgICAgcmV0dXJuIHg7CgoKfQoKZXh0ZXJuIGlubGlu ZSB2b2lkICogeGNoZ19wdHIodm9pZCAqIG0sIHZvaWQgKiB2YWwpCnsKICAgICAgICByZXR1cm4g KHZvaWQgKikgeGNoZ191MzIobSwgKHVuc2lnbmVkIGxvbmcpIHZhbCk7Cn0KCgoKCnN0YXRpYyBf X2lubGluZV9fIHVuc2lnbmVkIGxvbmcKX19jbXB4Y2hnX3UzMih2b2xhdGlsZSBpbnQgKnAsIGlu dCBvbGQsIGludCBuZXcpCnsKICAgICAgICBpbnQgcHJldjsKCiAgICAgICAgX19hc21fXyBfX3Zv bGF0aWxlX18gKCJcbiIKIjE6CWx3YXJ4CSUwLDAsJTJcbiIKIgljbXB3CTAsJTAsJTNcbiIKIgli bmUJMmZcbiIKIglzdHdjeC4JJTQsMCwlMlxuIgoiCWJuZS0JMWJcbiIKCgoKIjI6IgogICAgICAg IDogIj0mciIgKHByZXYpLCAiPW0iICgqcCkKICAgICAgICA6ICJyIiAocCksICJyIiAob2xkKSwg InIiIChuZXcpLCAibSIgKCpwKQogICAgICAgIDogImNjIiwgIm1lbW9yeSIpOwoKICAgICAgICBy ZXR1cm4gcHJldjsKfQoKCgpleHRlcm4gdm9pZCBfX2NtcHhjaGdfY2FsbGVkX3dpdGhfYmFkX3Bv aW50ZXIodm9pZCk7CgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nCl9fY21weGNoZyh2 b2xhdGlsZSB2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgb2xkLCB1bnNpZ25lZCBsb25nIG5ldywg aW50IHNpemUpCnsKICAgICAgICBzd2l0Y2ggKHNpemUpIHsKICAgICAgICBjYXNlIDQ6CiAgICAg ICAgICAgICAgICByZXR1cm4gX19jbXB4Y2hnX3UzMihwdHIsIG9sZCwgbmV3KTsKCgoKCiAgICAg ICAgfQogICAgICAgIF9fY21weGNoZ19jYWxsZWRfd2l0aF9iYWRfcG9pbnRlcigpOwogICAgICAg IHJldHVybiBvbGQ7Cn0KIyAyMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGFnZS5oIiAyIDMKIyA0MSAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGFnZS5o IiAzCnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwdGU7IH0gcHRlX3Q7CnR5cGVkZWYg c3RydWN0IHsgdW5zaWduZWQgbG9uZyBwbWQ7IH0gcG1kX3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5z aWduZWQgbG9uZyBwZ2Q7IH0gcGdkX3Q7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBw Z3Byb3Q7IH0gcGdwcm90X3Q7CiMgODQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BhZ2UuaCIgMwpleHRlcm4gdm9pZCBjbGVh cl9wYWdlKHZvaWQgKnBhZ2UpOwpleHRlcm4gdm9pZCBjb3B5X3BhZ2Uodm9pZCAqdG8sIHZvaWQg KmZyb20pOwojIDEyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s aW51eC9zeXMtaW5jbHVkZS9hc20vcGFnZS5oIiAzCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u ZyBfX19wYSh1bnNpZ25lZCBsb25nIHYpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHA7CiAgICAg ICAgYXNtIHZvbGF0aWxlICgiMTogYWRkaXMgJTAsICUxLCAlMjsiCiAgICAgICAgICAgICAgICAg ICAgICAiLnNlY3Rpb24gXCIudnRvcF9maXh1cFwiLFwiYXdcIjsiCiAgICAgICAgICAgICAgICAg ICAgICAiLmFsaWduICAxOyIKICAgICAgICAgICAgICAgICAgICAgICIubG9uZyAgIDFiOyIKICAg ICAgICAgICAgICAgICAgICAgICIucHJldmlvdXM7IgogICAgICAgICAgICAgICAgICAgICAgOiAi PXIiIChwKQogICAgICAgICAgICAgICAgICAgICAgOiAiYiIgKHYpLCAiSyIgKCgoLTB4YzAwMDAw MDApID4+IDE2KSAmIDB4ZmZmZikpOwoKICAgICAgICByZXR1cm4gcDsKfQpzdGF0aWMgaW5saW5l IHZvaWQqIF9fX3ZhKHVuc2lnbmVkIGxvbmcgcCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgdjsK ICAgICAgICBhc20gdm9sYXRpbGUgKCIxOiBhZGRpcyAlMCwgJTEsICUyOyIKICAgICAgICAgICAg ICAgICAgICAgICIuc2VjdGlvbiBcIi5wdG92X2ZpeHVwXCIsXCJhd1wiOyIKICAgICAgICAgICAg ICAgICAgICAgICIuYWxpZ24gIDE7IgogICAgICAgICAgICAgICAgICAgICAgIi5sb25nICAgMWI7 IgogICAgICAgICAgICAgICAgICAgICAgIi5wcmV2aW91czsiCiAgICAgICAgICAgICAgICAgICAg ICA6ICI9ciIgKHYpCiAgICAgICAgICAgICAgICAgICAgICA6ICJiIiAocCksICJLIiAoKCgweGMw MDAwMDAwKSA+PiAxNikgJiAweGZmZmYpKTsKCiAgICAgICAgcmV0dXJuICh2b2lkKikgdjsKfQoj IDE2MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9hc20vcGFnZS5oIiAzCmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF96ZXJvX3BhZ2Vf ZmFzdCh2b2lkKTsKCgpleHRlcm4gX19pbmxpbmVfXyBpbnQgZ2V0X29yZGVyKHVuc2lnbmVkIGxv bmcgc2l6ZSkKewogICAgICAgIGludCBvcmRlcjsKCiAgICAgICAgc2l6ZSA9IChzaXplLTEpID4+ ICgxMiAtMSk7CiAgICAgICAgb3JkZXIgPSAtMTsKICAgICAgICBkbyB7CiAgICAgICAgICAgICAg ICBzaXplID4+PSAxOwogICAgICAgICAgICAgICAgb3JkZXIrKzsKICAgICAgICB9IHdoaWxlIChz aXplKTsKICAgICAgICByZXR1cm4gb3JkZXI7Cn0KIyAxOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC93YWl0LmgiIDIgMwoj IDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu Y2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAxIDMKIyAyMCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC93YWl0LmgiIDIgMwoKCgoK CgpzdHJ1Y3QgX193YWl0X3F1ZXVlIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CgogICAg ICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqIHRhc2s7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB0 YXNrX2xpc3Q7CgoKCgp9Owp0eXBlZGVmIHN0cnVjdCBfX3dhaXRfcXVldWUgd2FpdF9xdWV1ZV90 OwojIDcyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMwpzdHJ1Y3QgX193YWl0X3F1ZXVlX2hlYWQgewogICAg ICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHRhc2tfbGlzdDsK CgoKCn07CnR5cGVkZWYgc3RydWN0IF9fd2FpdF9xdWV1ZV9oZWFkIHdhaXRfcXVldWVfaGVhZF90 OwojIDE1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9saW51eC93YWl0LmgiIDMKc3RhdGljIGlubGluZSB2b2lkIGluaXRfd2FpdHF1 ZXVlX2hlYWQod2FpdF9xdWV1ZV9oZWFkX3QgKnEpCnsKCgoKCiAgICAgICAgcS0+bG9jayA9IChz cGlubG9ja190KSB7IH07CiAgICAgICAgZG8geyAoJnEtPnRhc2tfbGlzdCktPm5leHQgPSAoJnEt PnRhc2tfbGlzdCk7ICgmcS0+dGFza19saXN0KS0+cHJldiA9ICgmcS0+dGFza19saXN0KTsgfSB3 aGlsZSAoMCk7CgoKCgp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF93YWl0cXVldWVfZW50cnko d2FpdF9xdWV1ZV90ICpxLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKCgoKCiAgICAgICAgcS0+ ZmxhZ3MgPSAwOwogICAgICAgIHEtPnRhc2sgPSBwOwoKCgp9CgpzdGF0aWMgaW5saW5lIGludCB3 YWl0cXVldWVfYWN0aXZlKHdhaXRfcXVldWVfaGVhZF90ICpxKQp7CgoKCgoKCiAgICAgICAgcmV0 dXJuICFsaXN0X2VtcHR5KCZxLT50YXNrX2xpc3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19h ZGRfd2FpdF9xdWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqaGVhZCwgd2FpdF9xdWV1ZV90ICpuZXcp CnsKIyAxOTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvd2FpdC5oIiAzCiAgICAgICAgbGlzdF9hZGQoJm5ldy0+dGFza19s aXN0LCAmaGVhZC0+dGFza19saXN0KTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fYWRkX3dh aXRfcXVldWVfdGFpbCh3YWl0X3F1ZXVlX2hlYWRfdCAqaGVhZCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdF9xdWV1ZV90ICpuZXcpCnsKIyAyMTUg Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1 ZGUvbGludXgvd2FpdC5oIiAzCiAgICAgICAgbGlzdF9hZGRfdGFpbCgmbmV3LT50YXNrX2xpc3Qs ICZoZWFkLT50YXNrX2xpc3QpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgX19yZW1vdmVfd2FpdF9x dWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X3F1ZXVlX3QgKm9sZCkKewoKCgoKCiAg ICAgICAgbGlzdF9kZWwoJm9sZC0+dGFza19saXN0KTsKfQojIDEzICIvb3B0L2ZzcC9pNTg2LXBj LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIg MwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L3Zmcy5oIiAxIDMKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zdGF0ZnMuaCIgMSAzCgoK CgoKCgp0eXBlZGVmIF9fa2VybmVsX2ZzaWRfdCBmc2lkX3Q7CgoKCnN0cnVjdCBzdGF0ZnMgewog ICAgICAgIGxvbmcgZl90eXBlOwogICAgICAgIGxvbmcgZl9ic2l6ZTsKICAgICAgICBsb25nIGZf YmxvY2tzOwogICAgICAgIGxvbmcgZl9iZnJlZTsKICAgICAgICBsb25nIGZfYmF2YWlsOwogICAg ICAgIGxvbmcgZl9maWxlczsKICAgICAgICBsb25nIGZfZmZyZWU7CiAgICAgICAgX19rZXJuZWxf ZnNpZF90IGZfZnNpZDsKICAgICAgICBsb25nIGZfbmFtZWxlbjsKICAgICAgICBsb25nIGZfc3Bh cmVbNl07Cn07CiMgNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s aW51eC9zeXMtaW5jbHVkZS9saW51eC92ZnMuaCIgMiAzCiMgMTUgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAz CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9saW51eC9uZXQuaCIgMSAzCiMgMjIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmV0LmgiIDMKIyAxICIvb3B0 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp bnV4L3NvY2tldC5oIiAxIDMKCgoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3NvY2tldC5oIiAxIDMKIyA3ICIvb3B0 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp bnV4L3NvY2tldC5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NvY2tpb3MuaCIgMSAzCiMgMjEgIi9vcHQv ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu dXgvc29ja2lvcy5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vc29ja2lvcy5oIiAxIDMKIyAyMiAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9z b2NraW9zLmgiIDIgMwojIDggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc29ja2V0LmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdWlv LmgiIDEgMwojIDE5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Vpby5oIiAzCnN0cnVjdCBpb3ZlYwp7CiAgICAgICAgdm9p ZCAqaW92X2Jhc2U7CiAgICAgICAgX19rZXJuZWxfc2l6ZV90IGlvdl9sZW47Cn07CiMgOSAiL29w dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s aW51eC9zb2NrZXQuaCIgMiAzCgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBzYV9mYW1pbHlfdDsK CgoKCgpzdHJ1Y3Qgc29ja2FkZHIgewogICAgICAgIHNhX2ZhbWlseV90IHNhX2ZhbWlseTsKICAg ICAgICBjaGFyIHNhX2RhdGFbMTRdOwp9OwoKc3RydWN0IGxpbmdlciB7CiAgICAgICAgaW50IGxf b25vZmY7CiAgICAgICAgaW50IGxfbGluZ2VyOwp9OwoKCgoKCgoKc3RydWN0IG1zZ2hkciB7CiAg ICAgICAgdm9pZCAqIG1zZ19uYW1lOwogICAgICAgIGludCBtc2dfbmFtZWxlbjsKICAgICAgICBz dHJ1Y3QgaW92ZWMgKiBtc2dfaW92OwogICAgICAgIF9fa2VybmVsX3NpemVfdCBtc2dfaW92bGVu OwogICAgICAgIHZvaWQgKiBtc2dfY29udHJvbDsKICAgICAgICBfX2tlcm5lbF9zaXplX3QgbXNn X2NvbnRyb2xsZW47CiAgICAgICAgdW5zaWduZWQgbXNnX2ZsYWdzOwp9OwoKCgoKCgoKc3RydWN0 IGNtc2doZHIgewogICAgICAgIF9fa2VybmVsX3NpemVfdCBjbXNnX2xlbjsKICAgICAgICBpbnQg Y21zZ19sZXZlbDsKICAgICAgICBpbnQgY21zZ190eXBlOwp9OwojIDEwMiAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zb2Nr ZXQuaCIgMwpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRyICogX19jbXNnX254dGhkcih2b2lk ICpfX2N0bCwgX19rZXJuZWxfc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAgICAg c3RydWN0IGNtc2doZHIgKiBfX3B0cjsKCiAgICAgICAgX19wdHIgPSAoc3RydWN0IGNtc2doZHIq KSgoKHVuc2lnbmVkIGNoYXIgKikgX19jbXNnKSArICggKChfX2Ntc2ctPmNtc2dfbGVuKStzaXpl b2YobG9uZyktMSkgJiB+KHNpemVvZihsb25nKS0xKSApKTsKICAgICAgICBpZiAoKHVuc2lnbmVk IGxvbmcpKChjaGFyKikoX19wdHIrMSkgLSAoY2hhciAqKSBfX2N0bCkgPiBfX3NpemUpCiAgICAg ICAgICAgICAgICByZXR1cm4gKHN0cnVjdCBjbXNnaGRyICopMDsKCiAgICAgICAgcmV0dXJuIF9f cHRyOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRyICogY21zZ19ueHRoZHIgKHN0cnVj dCBtc2doZHIgKl9fbXNnLCBzdHJ1Y3QgY21zZ2hkciAqX19jbXNnKQp7CiAgICAgICAgcmV0dXJu IF9fY21zZ19ueHRoZHIoX19tc2ctPm1zZ19jb250cm9sLCBfX21zZy0+bXNnX2NvbnRyb2xsZW4s IF9fY21zZyk7Cn0KCgoKCgoKCnN0cnVjdCB1Y3JlZCB7CiAgICAgICAgX191MzIgcGlkOwogICAg ICAgIF9fdTMyIHVpZDsKICAgICAgICBfX3UzMiBnaWQ7Cn07CiMgMjQwICIvb3B0L2ZzcC9pNTg2 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NvY2tl dC5oIiAzCmV4dGVybiBpbnQgbWVtY3B5X2Zyb21pb3ZlYyh1bnNpZ25lZCBjaGFyICprZGF0YSwg c3RydWN0IGlvdmVjICppb3YsIGludCBsZW4pOwpleHRlcm4gaW50IG1lbWNweV9mcm9taW92ZWNl bmQodW5zaWduZWQgY2hhciAqa2RhdGEsIHN0cnVjdCBpb3ZlYyAqaW92LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQsIGludCBsZW4pOwpleHRlcm4gaW50IGNzdW1f cGFydGlhbF9jb3B5X2Zyb21pb3ZlY2VuZCh1bnNpZ25lZCBjaGFyICprZGF0YSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlvdmVjICppb3YsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4sIGludCAq Y3N1bXApOwoKZXh0ZXJuIGludCB2ZXJpZnlfaW92ZWMoc3RydWN0IG1zZ2hkciAqbSwgc3RydWN0 IGlvdmVjICppb3YsIGNoYXIgKmFkZHJlc3MsIGludCBtb2RlKTsKZXh0ZXJuIGludCBtZW1jcHlf dG9pb3ZlYyhzdHJ1Y3QgaW92ZWMgKnYsIHVuc2lnbmVkIGNoYXIgKmtkYXRhLCBpbnQgbGVuKTsK ZXh0ZXJuIHZvaWQgbWVtY3B5X3Rva2VybmVsaW92ZWMoc3RydWN0IGlvdmVjICppb3YsIHVuc2ln bmVkIGNoYXIgKmtkYXRhLCBpbnQgbGVuKTsKZXh0ZXJuIGludCBtb3ZlX2FkZHJfdG9fdXNlcih2 b2lkICprYWRkciwgaW50IGtsZW4sIHZvaWQgKnVhZGRyLCBpbnQgKnVsZW4pOwpleHRlcm4gaW50 IG1vdmVfYWRkcl90b19rZXJuZWwodm9pZCAqdWFkZHIsIGludCB1bGVuLCB2b2lkICprYWRkcik7 CmV4dGVybiBpbnQgcHV0X2Ntc2coc3RydWN0IG1zZ2hkciosIGludCBsZXZlbCwgaW50IHR5cGUs IGludCBsZW4sIHZvaWQgKmRhdGEpOwojIDIzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L25ldC5oIiAyIDMKCgpzdHJ1Y3Qg cG9sbF90YWJsZV9zdHJ1Y3Q7CiMgNDkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmV0LmgiIDMKdHlwZWRlZiBlbnVtIHsK ICBTU19GUkVFID0gMCwKICBTU19VTkNPTk5FQ1RFRCwKICBTU19DT05ORUNUSU5HLAogIFNTX0NP Tk5FQ1RFRCwKICBTU19ESVNDT05ORUNUSU5HCn0gc29ja2V0X3N0YXRlOwojIDY1ICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4 L25ldC5oIiAzCnN0cnVjdCBzb2NrZXQKewogICAgICAgIHNvY2tldF9zdGF0ZSBzdGF0ZTsKCiAg ICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICBzdHJ1Y3QgcHJvdG9fb3BzICpvcHM7 CiAgICAgICAgc3RydWN0IGlub2RlICppbm9kZTsKICAgICAgICBzdHJ1Y3QgZmFzeW5jX3N0cnVj dCAqZmFzeW5jX2xpc3Q7CiAgICAgICAgc3RydWN0IGZpbGUgKmZpbGU7CiAgICAgICAgc3RydWN0 IHNvY2sgKnNrOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgogICAgICAgIHNob3J0 IHR5cGU7CiAgICAgICAgdW5zaWduZWQgY2hhciBwYXNzY3JlZDsKfTsKCgoKc3RydWN0IHNjbV9j b29raWU7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKCnN0cnVjdCBwcm90b19vcHMgewogIGludCBm YW1pbHk7CgogIGludCAoKnJlbGVhc2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrKTsKICBpbnQgKCpi aW5kKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1bXlhZGRyLAogICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHNvY2thZGRyX2xlbik7CiAgaW50ICgqY29ubmVjdCkg KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdXNlcnZhZGRyLAogICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHNvY2thZGRyX2xlbiwgaW50IGZsYWdzKTsKICBpbnQgKCpz b2NrZXRwYWlyKSAoc3RydWN0IHNvY2tldCAqc29jazEsIHN0cnVjdCBzb2NrZXQgKnNvY2syKTsK ICBpbnQgKCphY2NlcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdz b2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKICBpbnQgKCpnZXRuYW1l KSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1YWRkciwKICAgICAgICAg ICAgICAgICAgICAgICAgIGludCAqdXNvY2thZGRyX2xlbiwgaW50IHBlZXIpOwogIHVuc2lnbmVk IGludCAoKnBvbGwpIChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3Ry dWN0IHBvbGxfdGFibGVfc3RydWN0ICp3YWl0KTsKICBpbnQgKCppb2N0bCkgKHN0cnVjdCBzb2Nr ZXQgKnNvY2ssIHVuc2lnbmVkIGludCBjbWQsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIGFyZyk7CiAgaW50ICgqbGlzdGVuKSAoc3RydWN0IHNvY2tldCAqc29jaywgaW50 IGxlbik7CiAgaW50ICgqc2h1dGRvd24pIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgZmxhZ3Mp OwogIGludCAoKnNldHNvY2tvcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGlu dCBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgb3B0 bGVuKTsKICBpbnQgKCpnZXRzb2Nrb3B0KSAoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVs LCBpbnQgb3B0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm9wdHZhbCwgaW50 ICpvcHRsZW4pOwogIGludCAoKnNlbmRtc2cpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qg bXNnaGRyICptLCBpbnQgdG90YWxfbGVuLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQg KCpyZWN2bXNnKSAoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IG1zZ2hkciAqbSwgaW50IHRv dGFsX2xlbiwgaW50IGZsYWdzLCBzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtKTsKICBpbnQgKCptbWFw KSAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqIHZtYSk7Cn07CgpzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseQp7CiAgICAgICAgaW50 IGZhbWlseTsKICAgICAgICBpbnQgKCpjcmVhdGUpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBw cm90b2NvbCk7CgoKICAgICAgICBzaG9ydCBhdXRoZW50aWNhdGlvbjsKICAgICAgICBzaG9ydCBl bmNyeXB0aW9uOwogICAgICAgIHNob3J0IGVuY3J5cHRfbmV0Owp9OwoKc3RydWN0IG5ldF9wcm90 bwp7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICB2b2lkICgqaW5pdF9mdW5jKShz dHJ1Y3QgbmV0X3Byb3RvICopOwp9OwoKZXh0ZXJuIGludCBzb2NrX3dha2VfYXN5bmMoc3RydWN0 IHNvY2tldCAqc2ssIGludCBob3csIGludCBiYW5kKTsKZXh0ZXJuIGludCBzb2NrX3JlZ2lzdGVy KHN0cnVjdCBuZXRfcHJvdG9fZmFtaWx5ICpmYW0pOwpleHRlcm4gaW50IHNvY2tfdW5yZWdpc3Rl cihpbnQgZmFtaWx5KTsKZXh0ZXJuIHN0cnVjdCBzb2NrZXQgKnNvY2tfYWxsb2Modm9pZCk7CmV4 dGVybiBpbnQgc29ja19jcmVhdGUoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90bywgc3Ry dWN0IHNvY2tldCAqKik7CmV4dGVybiB2b2lkIHNvY2tfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICop OwpleHRlcm4gaW50IHNvY2tfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBtc2doZHIg Km0sIGludCBsZW4pOwpleHRlcm4gaW50IHNvY2tfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICosIHN0 cnVjdCBtc2doZHIgKm0sIGludCBsZW4sIGludCBmbGFncyk7CmV4dGVybiBpbnQgc29ja19yZWFk dl93cml0ZXYoaW50IHR5cGUsIHN0cnVjdCBpbm9kZSAqIGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZp bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW92ZWMg KiBpb3YsIGxvbmcgY291bnQsIGxvbmcgc2l6ZSk7CgpleHRlcm4gaW50IG5ldF9yYXRlbGltaXQo dm9pZCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIG5ldF9yYW5kb20odm9pZCk7CmV4dGVybiB2b2lk IG5ldF9zcmFuZG9tKHVuc2lnbmVkIGxvbmcpOwojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwoKIyAx ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2xpbnV4L2lvY3RsLmgiIDEgMwoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lvY3RsLmgiIDEgMwojIDUgIi9v cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv bGludXgvaW9jdGwuaCIgMiAzCiMgMTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCgojIDEgIi9vcHQvZnNw L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv ZGNhY2hlLmgiIDEgMwoKCgoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbW91bnQuaCIgMSAzCiMgMTcgIi9vcHQv ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu dXgvbW91bnQuaCIgMwpzdHJ1Y3QgdmZzbW91bnQKewogICAgICAgIHN0cnVjdCBkZW50cnkgKm1u dF9tb3VudHBvaW50OwogICAgICAgIHN0cnVjdCBkZW50cnkgKm1udF9yb290OwogICAgICAgIHN0 cnVjdCB2ZnNtb3VudCAqbW50X3BhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1udF9p bnN0YW5jZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbnRfY2xhc2g7CgogICAgICAgIHN0 cnVjdCBzdXBlcl9ibG9jayAqbW50X3NiOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X21v dW50czsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1udF9jaGlsZDsKICAgICAgICBhdG9taWNf dCBtbnRfY291bnQ7CiAgICAgICAgaW50IG1udF9mbGFnczsKICAgICAgICBjaGFyICptbnRfZGV2 bmFtZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIG1udF9saXN0OwogICAgICAgIHVpZF90IG1u dF9vd25lcjsKfTsKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHZmc21vdW50ICptbnRnZXQoc3RydWN0 IHZmc21vdW50ICptbnQpCnsKICAgICAgICBpZiAobW50KQogICAgICAgICAgICAgICAgKCh2b2lk KSBhdG9taWNfaW5jX3JldHVybigoJm1udC0+bW50X2NvdW50KSkpOwogICAgICAgIHJldHVybiBt bnQ7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtbnRwdXQoc3RydWN0IHZmc21vdW50ICptbnQpCnsK ICAgICAgICBpZiAobW50KSB7CiAgICAgICAgICAgICAgICBpZiAoKGF0b21pY19kZWNfcmV0dXJu KCgmbW50LT5tbnRfY291bnQpKSA9PSAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBw cmludGsoImtlcm5lbCBCVUcgYXQgJXM6JWQhXG4iLCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tb3VudC5oIiwgNDYpOyBf X2FzbV9fIF9fdm9sYXRpbGVfXygiLmxvbmcgMHgwIik7IH0gd2hpbGUgKDApOwogICAgICAgIH0K fQojIDggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz LWluY2x1ZGUvbGludXgvZGNhY2hlLmgiIDIgMwojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAzCnN0 cnVjdCBxc3RyIHsKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICogbmFtZTsKICAgICAgICB1 bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGludCBoYXNoOwp9OwoKc3RydWN0IGRl bnRyeV9zdGF0X3QgewogICAgICAgIGludCBucl9kZW50cnk7CiAgICAgICAgaW50IG5yX3VudXNl ZDsKICAgICAgICBpbnQgYWdlX2xpbWl0OwogICAgICAgIGludCB3YW50X3BhZ2VzOwogICAgICAg IGludCBkdW1teVsyXTsKfTsKZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3RhdF90IGRlbnRyeV9zdGF0 OwoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIHBhcnRpYWxfbmFtZV9oYXNo KHVuc2lnbmVkIGxvbmcgYywgdW5zaWduZWQgbG9uZyBwcmV2aGFzaCkKewogICAgICAgIHJldHVy biAocHJldmhhc2ggKyAoYyA8PCA0KSArIChjID4+IDQpKSAqIDExOwp9CgoKc3RhdGljIF9faW5s aW5lX18gdW5zaWduZWQgbG9uZyBlbmRfbmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcgaGFzaCkKewog ICAgICAgIHJldHVybiAodW5zaWduZWQgaW50KSBoYXNoOwp9CgoKc3RhdGljIF9faW5saW5lX18g dW5zaWduZWQgaW50IGZ1bGxfbmFtZV9oYXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBuYW1lLCB1 bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBoYXNoID0gMDsKICAgICAg ICB3aGlsZSAobGVuLS0pCiAgICAgICAgICAgICAgICBoYXNoID0gcGFydGlhbF9uYW1lX2hhc2go Km5hbWUrKywgaGFzaCk7CiAgICAgICAgcmV0dXJuIGVuZF9uYW1lX2hhc2goaGFzaCk7Cn0KCgoK c3RydWN0IGRlbnRyeSB7CiAgICAgICAgYXRvbWljX3QgZF9jb3VudDsKICAgICAgICB1bnNpZ25l ZCBpbnQgZF9mbGFnczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBkX2lub2RlOwogICAgICAgIHN0 cnVjdCBkZW50cnkgKiBkX3BhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfdmZzbW50 OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgZF9scnU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkX2NoaWxkOwogICAgICAgIHN0cnVj dCBsaXN0X2hlYWQgZF9zdWJkaXJzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZF9hbGlhczsK ICAgICAgICBzdHJ1Y3QgcXN0ciBkX25hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3RpbWU7 CiAgICAgICAgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zICpkX29wOwogICAgICAgIHN0cnVjdCBz dXBlcl9ibG9jayAqIGRfc2I7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3JlZnRpbWU7CiAgICAg ICAgdm9pZCAqIGRfZnNkYXRhOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF9pbmFtZVsxNl07Cn07 CgpzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmRfcmV2YWxpZGF0ZSko c3RydWN0IGRlbnRyeSAqLCBpbnQpOwogICAgICAgIGludCAoKmRfaGFzaCkgKHN0cnVjdCBkZW50 cnkgKiwgc3RydWN0IHFzdHIgKik7CiAgICAgICAgaW50ICgqZF9jb21wYXJlKSAoc3RydWN0IGRl bnRyeSAqLCBzdHJ1Y3QgcXN0ciAqLCBzdHJ1Y3QgcXN0ciAqKTsKICAgICAgICBpbnQgKCpkX2Rl bGV0ZSkoc3RydWN0IGRlbnRyeSAqKTsKICAgICAgICB2b2lkICgqZF9yZWxlYXNlKShzdHJ1Y3Qg ZGVudHJ5ICopOwogICAgICAgIHZvaWQgKCpkX2lwdXQpKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0 IGlub2RlICopOwp9OwojIDEyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9kY2FjaGUuaCIgMwpleHRlcm4gc3BpbmxvY2tf dCBkY2FjaGVfbG9jazsKIyAxNDYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZGNhY2hlLmgiIDMKc3RhdGljIF9faW5saW5l X18gdm9pZCBkX2Ryb3Aoc3RydWN0IGRlbnRyeSAqIGRlbnRyeSkKewogICAgICAgICh2b2lkKSgm ZGNhY2hlX2xvY2spOwogICAgICAgIGxpc3RfZGVsKCZkZW50cnktPmRfaGFzaCk7CiAgICAgICAg ZG8geyAoJmRlbnRyeS0+ZF9oYXNoKS0+bmV4dCA9ICgmZGVudHJ5LT5kX2hhc2gpOyAoJmRlbnRy eS0+ZF9oYXNoKS0+cHJldiA9ICgmZGVudHJ5LT5kX2hhc2gpOyB9IHdoaWxlICgwKTsKICAgICAg ICBkbyB7IH0gd2hpbGUoMCk7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBkbmFtZV9leHRlcm5h bChzdHJ1Y3QgZGVudHJ5ICpkKQp7CiAgICAgICAgcmV0dXJuIGQtPmRfbmFtZS5uYW1lICE9IGQt PmRfaW5hbWU7Cn0KCgoKCmV4dGVybiB2b2lkIGRfaW5zdGFudGlhdGUoc3RydWN0IGRlbnRyeSAq LCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRfZGVsZXRlKHN0cnVjdCBkZW50cnkgKik7 CgoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2FsbG9jKHN0cnVjdCBkZW50cnkgKiwgY29uc3Qg c3RydWN0IHFzdHIgKik7CmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfc2Ioc3RydWN0IHN1cGVy X2Jsb2NrICopOwpleHRlcm4gdm9pZCBzaHJpbmtfZGNhY2hlX3BhcmVudChzdHJ1Y3QgZGVudHJ5 ICopOwpleHRlcm4gaW50IGRfaW52YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICopOwoKCnN0cnVjdCB6 b25lX3N0cnVjdDsKCmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfbWVtb3J5KGludCwgdW5zaWdu ZWQgaW50KTsKZXh0ZXJuIHZvaWQgcHJ1bmVfZGNhY2hlKGludCk7CgoKZXh0ZXJuIHZvaWQgc2hy aW5rX2ljYWNoZV9tZW1vcnkoaW50LCBpbnQpOwpleHRlcm4gdm9pZCBwcnVuZV9pY2FjaGUoaW50 KTsKCgpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfYWxsb2Nfcm9vdChzdHJ1Y3QgaW5vZGUgKik7 CgoKZXh0ZXJuIHZvaWQgZF9nZW5vY2lkZShzdHJ1Y3QgZGVudHJ5ICopOwoKZXh0ZXJuIHN0cnVj dCBkZW50cnkgKmRfZmluZF9hbGlhcyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGRfcHJ1 bmVfYWxpYXNlcyhzdHJ1Y3QgaW5vZGUgKik7CgoKZXh0ZXJuIGludCBoYXZlX3N1Ym1vdW50cyhz dHJ1Y3QgZGVudHJ5ICopOwoKCgoKZXh0ZXJuIHZvaWQgZF9yZWhhc2goc3RydWN0IGRlbnRyeSAq KTsKIyAyMDcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvZGNhY2hlLmgiIDMKc3RhdGljIF9faW5saW5lX18gdm9pZCBkX2Fk ZChzdHJ1Y3QgZGVudHJ5ICogZW50cnksIHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiAgICAgICAg ZF9pbnN0YW50aWF0ZShlbnRyeSwgaW5vZGUpOwogICAgICAgIGRfcmVoYXNoKGVudHJ5KTsKfQoK CmV4dGVybiB2b2lkIGRfbW92ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKik7CgoK ZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2xvb2t1cChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBx c3RyICopOwoKCmV4dGVybiBpbnQgZF92YWxpZGF0ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBk ZW50cnkgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOwoKZXh0ZXJuIGNoYXIgKiBfX2Rf cGF0aChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICos CiAgICAgICAgc3RydWN0IHZmc21vdW50ICosIGNoYXIgKiwgaW50KTsKIyAyNDAgIi9vcHQvZnNw L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv ZGNhY2hlLmgiIDMKc3RhdGljIF9faW5saW5lX18gc3RydWN0IGRlbnRyeSAqIGRnZXQoc3RydWN0 IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgaWYgKGRlbnRyeSkgewogICAgICAgICAgICAgICAg aWYgKCEoKCZkZW50cnktPmRfY291bnQpLT5jb3VudGVyKSkKCgoKICAgICAgICAgICAgICAgICAg ICAgICAgZG8geyBwcmludGsoImtlcm5lbCBCVUcgYXQgJXM6JWQhXG4iLCAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9kY2Fj aGUuaCIsIDI0Nyk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIubG9uZyAweDAiKTsgfSB3aGlsZSAo MCk7CgogICAgICAgICAgICAgICAgKCh2b2lkKSBhdG9taWNfaW5jX3JldHVybigoJmRlbnRyeS0+ ZF9jb3VudCkpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoKZXh0ZXJuIHN0 cnVjdCBkZW50cnkgKiBkZ2V0X2xvY2tlZChzdHJ1Y3QgZGVudHJ5ICopOwojIDI2MyAiL29wdC9m c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51 eC9kY2FjaGUuaCIgMwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZF91bmhhc2hlZChzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkpCnsKICAgICAgICByZXR1cm4gbGlzdF9lbXB0eSgmZGVudHJ5LT5kX2hhc2gp Owp9CgpleHRlcm4gdm9pZCBkcHV0KHN0cnVjdCBkZW50cnkgKik7CgpzdGF0aWMgX19pbmxpbmVf XyBpbnQgZF9tb3VudHBvaW50KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHJldHVy biAhbGlzdF9lbXB0eSgmZGVudHJ5LT5kX3Zmc21udCk7Cn0KIyAyMCAiL29wdC9mc3AvaTU4Ni1w Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAy IDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMSAzCgoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxp bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zdGF0LmgiIDEgMwoK CgoKCgoKc3RydWN0IF9fb2xkX2tlcm5lbF9zdGF0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz dF9kZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfaW5vOwogICAgICAgIHVuc2lnbmVkIHNo b3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rfbmxpbms7CiAgICAgICAgdW5z aWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X2dpZDsKICAgICAg ICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rfc2l6ZTsK ICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3Rf bXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9jdGltZTsKfTsKCnN0cnVjdCBzdGF0IHsK ICAgICAgICBkZXZfdCBzdF9kZXY7CiAgICAgICAgaW5vX3Qgc3RfaW5vOwogICAgICAgIG1vZGVf dCBzdF9tb2RlOwogICAgICAgIG5saW5rX3Qgc3Rfbmxpbms7CiAgICAgICAgdWlkX3Qgc3RfdWlk OwogICAgICAgIGdpZF90IHN0X2dpZDsKICAgICAgICBkZXZfdCBzdF9yZGV2OwogICAgICAgIG9m Zl90IHN0X3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwogICAgICAgIHVu c2lnbmVkIGxvbmcgc3RfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYXRpbWU7CiAg ICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9t dGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBs b25nIHN0X2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQzOwogICAgICAgIHVu c2lnbmVkIGxvbmcgX191bnVzZWQ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ1Owp9 OwoKCgpzdHJ1Y3Qgc3RhdDY0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3RfZGV2Owog ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdF9pbm87CiAgICAgICAgdW5zaWduZWQgaW50IHN0 X21vZGU7CiAgICAgICAgdW5zaWduZWQgaW50IHN0X25saW5rOwogICAgICAgIHVuc2lnbmVkIGlu dCBzdF91aWQ7CiAgICAgICAgdW5zaWduZWQgaW50IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBs b25nIGxvbmcgc3RfcmRldjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19wYWQyOwogICAg ICAgIGxvbmcgbG9uZyBzdF9zaXplOwogICAgICAgIGxvbmcgc3RfYmxrc2l6ZTsKCiAgICAgICAg bG9uZyBsb25nIHN0X2Jsb2NrczsKICAgICAgICBsb25nIHN0X2F0aW1lOwogICAgICAgIHVuc2ln bmVkIGxvbmcgaW50IF9fdW51c2VkMTsKICAgICAgICBsb25nIHN0X210aW1lOwogICAgICAgIHVu c2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMjsKICAgICAgICBsb25nIHN0X2N0aW1lOwogICAgICAg IHVuc2lnbmVkIGxvbmcgaW50IF9fdW51c2VkMzsKICAgICAgICB1bnNpZ25lZCBsb25nIGludCBf X3VudXNlZDQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbnQgX191bnVzZWQ1Owp9OwojIDcgIi9v cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv bGludXgvc3RhdC5oIiAyIDMKIyAyMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9p NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Nh Y2hlLmgiIDEgMwoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy cGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2NhY2hlLmgiIDEgMwojIDUgIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvY2FjaGUu aCIgMiAzCiMgMjIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc3RyaW5nLmgiIDEg MwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICogX19fc3RydG9rOwpleHRl cm4gY2hhciAqIHN0cnBicmsoY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFy ICogc3RydG9rKGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cnNlcChjaGFy ICoqLGNvbnN0IGNoYXIgKik7CmV4dGVybiBfX2tlcm5lbF9zaXplX3Qgc3Ryc3BuKGNvbnN0IGNo YXIgKixjb25zdCBjaGFyICopOwoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vc3RyaW5nLmgiIDEgMwojIDE4ICIv b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl L2FzbS9zdHJpbmcuaCIgMwpleHRlcm4gaW50IHN0cmNhc2VjbXAoY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICopOwpleHRlcm4gaW50IHN0cm5jYXNlY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqLCBpbnQpOwpleHRlcm4gY2hhciAqIHN0cmNweShjaGFyICosY29uc3QgY2hhciAqKTsKZXh0 ZXJuIGNoYXIgKiBzdHJuY3B5KGNoYXIgKixjb25zdCBjaGFyICosIF9fa2VybmVsX3NpemVfdCk7 CmV4dGVybiBfX2tlcm5lbF9zaXplX3Qgc3RybGVuKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQg c3RyY21wKGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqIHN0cmNhdChj aGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkICogbWVtc2V0KHZvaWQgKixpbnQsX19r ZXJuZWxfc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKiBtZW1jcHkodm9pZCAqLGNvbnN0IHZvaWQgKixf X2tlcm5lbF9zaXplX3QpOwpleHRlcm4gdm9pZCAqIG1lbW1vdmUodm9pZCAqLGNvbnN0IHZvaWQg KixfX2tlcm5lbF9zaXplX3QpOwpleHRlcm4gaW50IG1lbWNtcChjb25zdCB2b2lkICosY29uc3Qg dm9pZCAqLF9fa2VybmVsX3NpemVfdCk7CmV4dGVybiB2b2lkICogbWVtY2hyKGNvbnN0IHZvaWQg KixpbnQsX19rZXJuZWxfc2l6ZV90KTsKIyAyMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMiAzCiMgMzMg Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1 ZGUvbGludXgvc3RyaW5nLmgiIDMKZXh0ZXJuIGNoYXIgKiBzdHJuY2F0KGNoYXIgKiwgY29uc3Qg Y2hhciAqLCBfX2tlcm5lbF9zaXplX3QpOwoKCgoKCmV4dGVybiBpbnQgc3RybmNtcChjb25zdCBj aGFyICosY29uc3QgY2hhciAqLF9fa2VybmVsX3NpemVfdCk7CgoKZXh0ZXJuIGludCBzdHJuaWNt cChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgX19rZXJuZWxfc2l6ZV90KTsKCgpleHRlcm4g Y2hhciAqIHN0cmNocihjb25zdCBjaGFyICosaW50KTsKCgpleHRlcm4gY2hhciAqIHN0cnJjaHIo Y29uc3QgY2hhciAqLGludCk7CgoKZXh0ZXJuIGNoYXIgKiBzdHJzdHIoY29uc3QgY2hhciAqLGNv bnN0IGNoYXIgKik7CgoKCgoKZXh0ZXJuIF9fa2VybmVsX3NpemVfdCBzdHJubGVuKGNvbnN0IGNo YXIgKixfX2tlcm5lbF9zaXplX3QpOwojIDcwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAzCmV4dGVybiB2 b2lkICogbWVtc2Nhbih2b2lkICosaW50LF9fa2VybmVsX3NpemVfdCk7CiMgMjQgIi9vcHQvZnNw L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv ZnMuaCIgMiAzCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMSAzCiMgMTEgIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2JpdG9wcy5o IiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDEgMwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxp bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIg MwpleHRlcm4gX19pbmxpbmVfXyB1bnNpZ25lZCBsZF9sZTE2KGNvbnN0IHZvbGF0aWxlIHVuc2ln bmVkIHNob3J0ICphZGRyKQp7CiAgICAgICAgdW5zaWduZWQgdmFsOwoKICAgICAgICBfX2FzbV9f IF9fdm9sYXRpbGVfXyAoImxoYnJ4ICUwLDAsJTEiIDogIj1yIiAodmFsKSA6ICJyIiAoYWRkciks ICJtIiAoKmFkZHIpKTsKICAgICAgICByZXR1cm4gdmFsOwp9CgpleHRlcm4gX19pbmxpbmVfXyB2 b2lkIHN0X2xlMTYodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKmFkZHIsIGNvbnN0IHVuc2lnbmVk IHZhbCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgic3RoYnJ4ICUxLDAsJTIiIDog Ij1tIiAoKmFkZHIpIDogInIiICh2YWwpLCAiciIgKGFkZHIpKTsKfQoKZXh0ZXJuIF9faW5saW5l X18gdW5zaWduZWQgbGRfbGUzMihjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCAqYWRkcikKewogICAg ICAgIHVuc2lnbmVkIHZhbDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJsd2JyeCAl MCwwLCUxIiA6ICI9ciIgKHZhbCkgOiAiciIgKGFkZHIpLCAibSIgKCphZGRyKSk7CiAgICAgICAg cmV0dXJuIHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lX18gdm9pZCBzdF9sZTMyKHZvbGF0aWxlIHVu c2lnbmVkICphZGRyLCBjb25zdCB1bnNpZ25lZCB2YWwpCnsKICAgICAgICBfX2FzbV9fIF9fdm9s YXRpbGVfXyAoInN0d2JyeCAlMSwwLCUyIiA6ICI9bSIgKCphZGRyKSA6ICJyIiAodmFsKSwgInIi IChhZGRyKSk7Cn0KIyA4MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVv cmRlci9iaWdfZW5kaWFuLmgiIDEgMwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9iaWdfZW5kaWFu LmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4 L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiIDEgMwojIDEzMSAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9i eXRlb3JkZXIvc3dhYi5oIiAzCmV4dGVybiBfX2lubGluZV9fIF9fY29uc3RfXyBfX3UxNiBfX2Zz d2FiMTYoX191MTYgeCkKewogICAgICAgIHJldHVybiAoeyBfX3UxNiBfX3RtcCA9ICh4KSA7ICh7 IF9fdTE2IF9feCA9IChfX3RtcCk7ICgoX191MTYpKCAoKChfX3UxNikoX194KSAmIChfX3UxNikw eDAwZmZVKSA8PCA4KSB8ICgoKF9fdTE2KShfX3gpICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpICkp OyB9KTsgfSk7Cn0KZXh0ZXJuIF9faW5saW5lX18gX191MTYgX19zd2FiMTZwKF9fdTE2ICp4KQp7 CiAgICAgICAgcmV0dXJuIGxkX2xlMTYoeCk7Cn0KZXh0ZXJuIF9faW5saW5lX18gdm9pZCBfX3N3 YWIxNnMoX191MTYgKmFkZHIpCnsKICAgICAgICBzdF9sZTE2KGFkZHIsKmFkZHIpOwp9CgpleHRl cm4gX19pbmxpbmVfXyBfX2NvbnN0X18gX191MzIgX19mc3dhYjMyKF9fdTMyIHgpCnsKICAgICAg ICByZXR1cm4gKHsgX191MzIgX190bXAgPSAoeCkgOyAoeyBfX3UzMiBfX3ggPSAoX190bXApOyAo KF9fdTMyKSggKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAo KChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDBmZjAwVUwpIDw8IDgpIHwgKCgoX191MzIpKF9f eCkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMy KTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpOyB9KTsgfSk7Cn0KZXh0ZXJuIF9faW5saW5lX18gX191 MzIgX19zd2FiMzJwKF9fdTMyICp4KQp7CiAgICAgICAgcmV0dXJuIGxkX2xlMzIoeCk7Cn0KZXh0 ZXJuIF9faW5saW5lX18gdm9pZCBfX3N3YWIzMnMoX191MzIgKmFkZHIpCnsKICAgICAgICBzdF9s ZTMyKGFkZHIsKmFkZHIpOwp9CgoKZXh0ZXJuIF9faW5saW5lX18gX19jb25zdF9fIF9fdTY0IF9f ZnN3YWI2NChfX3U2NCB4KQp7CgoKCgoKICAgICAgICByZXR1cm4gKHsgX191NjQgX190bXAgPSAo eCkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXApOyAoKF9fdTY0KSggKF9fdTY0KSgoKF9fdTY0KShf X3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVMTCkgPDwgNTYpIHwgKF9fdTY0KSgoKF9f dTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwZmYwMFVMTCkgPDwgNDApIHwgKF9fdTY0 KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMGZmMDAwMFVMTCkgPDwgMjQpIHwg KF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDBmZjAwMDAwMFVMTCkgPDwg OCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDBmZjAwMDAwMDAwVUxM KSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDBmZjAwMDAwMDAw MDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwZmYwMDAw MDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweGZm MDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSApKTsgfSk7IH0pOwoKfQpleHRlcm4gX19pbmxpbmVf XyBfX3U2NCBfX3N3YWI2NHAoX191NjQgKngpCnsKICAgICAgICByZXR1cm4gKHsgX191NjQgX190 bXAgPSAoKih4KSkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXApOyAoKF9fdTY0KSggKF9fdTY0KSgo KF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVMTCkgPDwgNTYpIHwgKF9f dTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwZmYwMFVMTCkgPDwgNDAp IHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMGZmMDAwMFVMTCkg PDwgMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDBmZjAwMDAw MFVMTCkgPDwgOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDBmZjAw MDAwMDAwVUxMKSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDBm ZjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkw eDAwZmYwMDAwMDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChf X3U2NCkweGZmMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSApKTsgfSk7IH0pOwp9CmV4dGVybiBf X2lubGluZV9fIHZvaWQgX19zd2FiNjRzKF9fdTY0ICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFk ZHIpID0gKHsgX191NjQgX190bXAgPSAoKigoYWRkcikpKSA7ICh7IF9fdTY0IF9feCA9IChfX3Rt cCk7ICgoX191NjQpKCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwMDAwMDAw MDAwMGZmVUxMKSA8PCA1NikgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAw MDAwMDAwMDBmZjAwVUxMKSA8PCA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQp MHgwMDAwMDAwMDAwZmYwMDAwVUxMKSA8PCAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAo X191NjQpMHgwMDAwMDAwMGZmMDAwMDAwVUxMKSA8PCA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194 KSAmIChfX3U2NCkweDAwMDAwMGZmMDAwMDAwMDBVTEwpID4+IDgpIHwgKF9fdTY0KSgoKF9fdTY0 KShfX3gpICYgKF9fdTY0KTB4MDAwMGZmMDAwMDAwMDAwMFVMTCkgPj4gMjQpIHwgKF9fdTY0KSgo KF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDBmZjAwMDAwMDAwMDAwMFVMTCkgPj4gNDApIHwgKF9f dTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4ZmYwMDAwMDAwMDAwMDAwMFVMTCkgPj4gNTYp ICkpOyB9KTsgfSk7IH0gd2hpbGUgKDApOwp9CiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2JpZ19l bmRpYW4uaCIgMiAzCiMgNjYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2JpZ19lbmRpYW4uaCIgMwojIDEg Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1 ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIgMSAzCiMgMTUwICIvb3B0L2ZzcC9pNTg2LXBj LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVvcmRl ci9nZW5lcmljLmgiIDMKZXh0ZXJuIF9fdTMyIG50b2hsKF9fdTMyKTsKZXh0ZXJuIF9fdTMyIGh0 b25sKF9fdTMyKTsKCgoKCmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgbnRvaHModW5zaWduZWQg c2hvcnQgaW50KTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCBodG9ucyh1bnNpZ25lZCBzaG9y dCBpbnQpOwojIDY3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9iaWdfZW5kaWFuLmgiIDIgMwojIDg0ICIv b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl L2FzbS9ieXRlb3JkZXIuaCIgMiAzCiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2JpdG9wcy5oIiAyIDMKIyAzMiAiL29w dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9h c20vYml0b3BzLmgiIDMKc3RhdGljIF9faW5saW5lX18gdm9pZCBzZXRfYml0KGludCBuciwgdm9s YXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIG9sZDsKICAgICAgICB1 bnNpZ25lZCBsb25nIG1hc2sgPSAxIDw8IChuciAmIDB4MWYpOwogICAgICAgIHVuc2lnbmVkIGxv bmcgKnAgPSAoKHVuc2lnbmVkIGxvbmcgKilhZGRyKSArIChuciA+PiA1KTsKCiAgICAgICAgX19h c21fXyBfX3ZvbGF0aWxlX18oIlxuIgoiMToJbHdhcngJJTAsMCwlM1xuIgoiCW9yCSUwLCUwLCUy XG4iCiIJc3R3Y3guCSUwLDAsJTNcbiIKIglibmUtCTFiIgogICAgICAgIDogIj0mciIgKG9sZCks ICI9bSIgKCpwKQogICAgICAgIDogInIiIChtYXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAgICAg ICA6ICJjYyIgKTsKfQoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBfX3NldF9iaXQoaW50IG5y LCB2b2xhdGlsZSB2b2lkICphZGRyKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtYXNrID0gMSA8 PCAobnIgJiAweDFmKTsKICAgICAgICB1bnNpZ25lZCBsb25nICpwID0gKCh1bnNpZ25lZCBsb25n ICopYWRkcikgKyAobnIgPj4gNSk7CgogICAgICAgICpwIHw9IG1hc2s7Cn0KCgoKCgoKCnN0YXRp YyBfX2lubGluZV9fIHZvaWQgY2xlYXJfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikK ewogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWFzayA9 IDEgPDwgKG5yICYgMHgxZik7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcCA9ICgodW5zaWduZWQg bG9uZyAqKWFkZHIpICsgKG5yID4+IDUpOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi XG4iCiIxOglsd2FyeAklMCwwLCUzXG4iCiIJYW5kYwklMCwlMCwlMlxuIgoiCXN0d2N4LgklMCww LCUzXG4iCiIJYm5lLQkxYiIKICAgICAgICA6ICI9JnIiIChvbGQpLCAiPW0iICgqcCkKICAgICAg ICA6ICJyIiAobWFzayksICJyIiAocCksICJtIiAoKnApCiAgICAgICAgOiAiY2MiKTsKfQoKc3Rh dGljIF9faW5saW5lX18gdm9pZCBjaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRk cikKewogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbWFz ayA9IDEgPDwgKG5yICYgMHgxZik7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqcCA9ICgodW5zaWdu ZWQgbG9uZyAqKWFkZHIpICsgKG5yID4+IDUpOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVf XygiXG4iCiIxOglsd2FyeAklMCwwLCUzXG4iCiIJeG9yCSUwLCUwLCUyXG4iCiIJc3R3Y3guCSUw LDAsJTNcbiIKIglibmUtCTFiIgogICAgICAgIDogIj0mciIgKG9sZCksICI9bSIgKCpwKQogICAg ICAgIDogInIiIChtYXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAgICAgICA6ICJjYyIpOwp9CgoK CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxl IHZvaWQgKmFkZHIpCnsKICAgICAgICB1bnNpZ25lZCBpbnQgb2xkLCB0OwogICAgICAgIHVuc2ln bmVkIGludCBtYXNrID0gMSA8PCAobnIgJiAweDFmKTsKICAgICAgICB2b2xhdGlsZSB1bnNpZ25l ZCBpbnQgKnAgPSAoKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKWFkZHIpICsgKG5yID4+IDUpOwoK ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIlxuIgoiMToJbHdhcngJJTAsMCwlNFxuIgoi CW9yCSUxLCUwLCUzXG4iCiIJc3R3Y3guCSUxLDAsJTRcbiIKIglibmUJMWIiCiAgICAgICAKICAg ICAgICA6ICI9JnIiIChvbGQpLCAiPSZyIiAodCksICI9bSIgKCpwKQogICAgICAgIDogInIiICht YXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAgICAgICA6ICJjYyIsICJtZW1vcnkiKTsKCiAgICAg ICAgcmV0dXJuIChvbGQgJiBtYXNrKSAhPSAwOwp9CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQg X190ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqYWRkcikKewogICAgICAg IHVuc2lnbmVkIGxvbmcgbWFzayA9IDEgPDwgKG5yICYgMHgxZik7CiAgICAgICAgdW5zaWduZWQg bG9uZyAqcCA9ICgodW5zaWduZWQgbG9uZyAqKWFkZHIpICsgKG5yID4+IDUpOwogICAgICAgIHVu c2lnbmVkIGxvbmcgb2xkID0gKnA7CgogICAgICAgICpwID0gb2xkIHwgbWFzazsKICAgICAgICBy ZXR1cm4gKG9sZCAmIG1hc2spICE9IDA7Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCB0ZXN0X2Fu ZF9jbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICphZGRyKQp7CiAgICAgICAgdW5zaWdu ZWQgaW50IG9sZCwgdDsKICAgICAgICB1bnNpZ25lZCBpbnQgbWFzayA9IDEgPDwgKG5yICYgMHgx Zik7CiAgICAgICAgdm9sYXRpbGUgdW5zaWduZWQgaW50ICpwID0gKCh2b2xhdGlsZSB1bnNpZ25l ZCBpbnQgKilhZGRyKSArIChuciA+PiA1KTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o ICJcbiIKIjE6CWx3YXJ4CSUwLDAsJTRcbiIKIglhbmRjCSUxLCUwLCUzXG4iCiIJc3R3Y3guCSUx LDAsJTRcbiIKIglibmUJMWIiCiAgICAgICAKICAgICAgICA6ICI9JnIiIChvbGQpLCAiPSZyIiAo dCksICI9bSIgKCpwKQogICAgICAgIDogInIiIChtYXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAg ICAgICA6ICJjYyIsICJtZW1vcnkiKTsKCiAgICAgICAgcmV0dXJuIChvbGQgJiBtYXNrKSAhPSAw Owp9CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0X2FuZF9jbGVhcl9iaXQoaW50IG5y LCB2b2xhdGlsZSB2b2lkICphZGRyKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtYXNrID0gMSA8 PCAobnIgJiAweDFmKTsKICAgICAgICB1bnNpZ25lZCBsb25nICpwID0gKCh1bnNpZ25lZCBsb25n ICopYWRkcikgKyAobnIgPj4gNSk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBvbGQgPSAqcDsKCiAg ICAgICAgKnAgPSBvbGQgJiB+bWFzazsKICAgICAgICByZXR1cm4gKG9sZCAmIG1hc2spICE9IDA7 Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCB0ZXN0X2FuZF9jaGFuZ2VfYml0KGludCBuciwgdm9s YXRpbGUgdm9pZCAqYWRkcikKewogICAgICAgIHVuc2lnbmVkIGludCBvbGQsIHQ7CiAgICAgICAg dW5zaWduZWQgaW50IG1hc2sgPSAxIDw8IChuciAmIDB4MWYpOwogICAgICAgIHZvbGF0aWxlIHVu c2lnbmVkIGludCAqcCA9ICgodm9sYXRpbGUgdW5zaWduZWQgaW50ICopYWRkcikgKyAobnIgPj4g NSk7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiXG4iCiIxOglsd2FyeAklMCwwLCU0 XG4iCiIJeG9yCSUxLCUwLCUzXG4iCiIJc3R3Y3guCSUxLDAsJTRcbiIKIglibmUJMWIiCiAgICAg ICAKICAgICAgICA6ICI9JnIiIChvbGQpLCAiPSZyIiAodCksICI9bSIgKCpwKQogICAgICAgIDog InIiIChtYXNrKSwgInIiIChwKSwgIm0iICgqcCkKICAgICAgICA6ICJjYyIsICJtZW1vcnkiKTsK CiAgICAgICAgcmV0dXJuIChvbGQgJiBtYXNrKSAhPSAwOwp9CiMgMTkzICIvb3B0L2ZzcC9pNTg2 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMu aCIgMwpzdGF0aWMgX19pbmxpbmVfXyBpbnQgdGVzdF9iaXQoaW50IG5yLCBfX2NvbnN0X18gdm9s YXRpbGUgdm9pZCAqYWRkcikKewogICAgICAgIF9fY29uc3RfXyB1bnNpZ25lZCBpbnQgKnAgPSAo X19jb25zdF9fIHVuc2lnbmVkIGludCAqKSBhZGRyOwoKICAgICAgICByZXR1cm4gKChwW25yID4+ IDVdID4+IChuciAmIDB4MWYpKSAmIDEpICE9IDA7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQg X19pbG9nMih1bnNpZ25lZCBpbnQgeCkKewogICAgICAgIGludCBsejsKCiAgICAgICAgYXNtICgi Y250bHp3ICUwLCUxIiA6ICI9ciIgKGx6KSA6ICJyIiAoeCkpOwogICAgICAgIHJldHVybiAzMSAt IGx6Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZmZ6KHVuc2lnbmVkIGludCB4KQp7CiAgICAg ICAgaWYgKCh4ID0gfngpID09IDApCiAgICAgICAgICAgICAgICByZXR1cm4gMzI7CiAgICAgICAg cmV0dXJuIF9faWxvZzIoeCAmIC14KTsKfQojIDIyMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vYml0b3BzLmgiIDMKc3RhdGlj IF9faW5saW5lX18gaW50IGZmcyhpbnQgeCkKewogICAgICAgIHJldHVybiBfX2lsb2cyKHggJiAt eCkgKyAxOwp9CiMgMjQ2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMwpzdGF0aWMgX19pbmxpbmVfXyB1bnNp Z25lZCBsb25nIGZpbmRfbmV4dF96ZXJvX2JpdCh2b2lkICogYWRkciwKICAgICAgICB1bnNpZ25l ZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQp7CiAgICAgICAgdW5zaWduZWQgaW50 ICogcCA9ICgodW5zaWduZWQgaW50ICopIGFkZHIpICsgKG9mZnNldCA+PiA1KTsKICAgICAgICB1 bnNpZ25lZCBpbnQgcmVzdWx0ID0gb2Zmc2V0ICYgfjMxVUw7CiAgICAgICAgdW5zaWduZWQgaW50 IHRtcDsKCiAgICAgICAgaWYgKG9mZnNldCA+PSBzaXplKQogICAgICAgICAgICAgICAgcmV0dXJu IHNpemU7CiAgICAgICAgc2l6ZSAtPSByZXN1bHQ7CiAgICAgICAgb2Zmc2V0ICY9IDMxVUw7CiAg ICAgICAgaWYgKG9mZnNldCkgewogICAgICAgICAgICAgICAgdG1wID0gKnArKzsKICAgICAgICAg ICAgICAgIHRtcCB8PSB+MFVMID4+ICgzMi1vZmZzZXQpOwogICAgICAgICAgICAgICAgaWYgKHNp emUgPCAzMikKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9maXJzdDsKICAgICAg ICAgICAgICAgIGlmICh0bXAgIT0gfjBVKQogICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZv dW5kX21pZGRsZTsKICAgICAgICAgICAgICAgIHNpemUgLT0gMzI7CiAgICAgICAgICAgICAgICBy ZXN1bHQgKz0gMzI7CiAgICAgICAgfQogICAgICAgIHdoaWxlIChzaXplID49IDMyKSB7CiAgICAg ICAgICAgICAgICBpZiAoKHRtcCA9ICpwKyspICE9IH4wVSkKICAgICAgICAgICAgICAgICAgICAg ICAgZ290byBmb3VuZF9taWRkbGU7CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gMzI7CiAgICAg ICAgICAgICAgICBzaXplIC09IDMyOwogICAgICAgIH0KICAgICAgICBpZiAoIXNpemUpCiAgICAg ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgIHRtcCA9ICpwOwpmb3VuZF9maXJzdDoK ICAgICAgICB0bXAgfD0gfjBVTCA8PCBzaXplOwogICAgICAgIGlmICh0bXAgPT0gfjBVTCkKICAg ICAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyBzaXplOwpmb3VuZF9taWRkbGU6CiAgICAgICAg cmV0dXJuIHJlc3VsdCArIGZmeih0bXApOwp9CiMgMjkyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMwpzdGF0 aWMgX19pbmxpbmVfXyBpbnQgZXh0Ml90ZXN0X2JpdChpbnQgbnIsIF9fY29uc3RfXyB2b2lkICog YWRkcikKewogICAgICAgIF9fY29uc3RfXyB1bnNpZ25lZCBjaGFyICpBRERSID0gKF9fY29uc3Rf XyB1bnNpZ25lZCBjaGFyICopIGFkZHI7CgogICAgICAgIHJldHVybiAoQUREUltuciA+PiAzXSA+ PiAobnIgJiA3KSkgJiAxOwp9CiMgMzA3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMwpzdGF0aWMgX19pbmxp bmVfXyB1bnNpZ25lZCBsb25nIGV4dDJfZmluZF9uZXh0X3plcm9fYml0KHZvaWQgKmFkZHIsCiAg ICAgICAgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKewogICAgICAg IHVuc2lnbmVkIGludCAqcCA9ICgodW5zaWduZWQgaW50ICopIGFkZHIpICsgKG9mZnNldCA+PiA1 KTsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVzdWx0ID0gb2Zmc2V0ICYgfjMxVUw7CiAgICAgICAg dW5zaWduZWQgaW50IHRtcDsKCiAgICAgICAgaWYgKG9mZnNldCA+PSBzaXplKQogICAgICAgICAg ICAgICAgcmV0dXJuIHNpemU7CiAgICAgICAgc2l6ZSAtPSByZXN1bHQ7CiAgICAgICAgb2Zmc2V0 ICY9IDMxVUw7CiAgICAgICAgaWYgKG9mZnNldCkgewogICAgICAgICAgICAgICAgdG1wID0gX19z d2FiMzJwKChwKyspKTsKICAgICAgICAgICAgICAgIHRtcCB8PSB+MFVMID4+ICgzMi1vZmZzZXQp OwogICAgICAgICAgICAgICAgaWYgKHNpemUgPCAzMikKICAgICAgICAgICAgICAgICAgICAgICAg Z290byBmb3VuZF9maXJzdDsKICAgICAgICAgICAgICAgIGlmICh0bXAgIT0gfjBVKQogICAgICAg ICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX21pZGRsZTsKICAgICAgICAgICAgICAgIHNpemUg LT0gMzI7CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gMzI7CiAgICAgICAgfQogICAgICAgIHdo aWxlIChzaXplID49IDMyKSB7CiAgICAgICAgICAgICAgICBpZiAoKHRtcCA9IF9fc3dhYjMycCgo cCsrKSkpICE9IH4wVSkKICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9taWRkbGU7 CiAgICAgICAgICAgICAgICByZXN1bHQgKz0gMzI7CiAgICAgICAgICAgICAgICBzaXplIC09IDMy OwogICAgICAgIH0KICAgICAgICBpZiAoIXNpemUpCiAgICAgICAgICAgICAgICByZXR1cm4gcmVz dWx0OwogICAgICAgIHRtcCA9IF9fc3dhYjMycCgocCkpOwpmb3VuZF9maXJzdDoKICAgICAgICB0 bXAgfD0gfjBVIDw8IHNpemU7CiAgICAgICAgaWYgKHRtcCA9PSB+MFVMKQogICAgICAgICAgICAg ICAgcmV0dXJuIHJlc3VsdCArIHNpemU7CmZvdW5kX21pZGRsZToKICAgICAgICByZXR1cm4gcmVz dWx0ICsgZmZ6KHRtcCk7Cn0KIyAyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKCnN0cnVjdCBwb2xsX3Rh YmxlX3N0cnVjdDsKIyA1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnN0cnVjdCBmaWxlc19zdGF0X3N0cnVj dCB7CiAgICAgICAgaW50IG5yX2ZpbGVzOwogICAgICAgIGludCBucl9mcmVlX2ZpbGVzOwogICAg ICAgIGludCBtYXhfZmlsZXM7Cn07CmV4dGVybiBzdHJ1Y3QgZmlsZXNfc3RhdF9zdHJ1Y3QgZmls ZXNfc3RhdDsKCnN0cnVjdCBpbm9kZXNfc3RhdF90IHsKICAgICAgICBpbnQgbnJfaW5vZGVzOwog ICAgICAgIGludCBucl91bnVzZWQ7CiAgICAgICAgaW50IGR1bW15WzVdOwp9OwpleHRlcm4gc3Ry dWN0IGlub2Rlc19zdGF0X3QgaW5vZGVzX3N0YXQ7CgpleHRlcm4gaW50IG1heF9zdXBlcl9ibG9j a3MsIG5yX3N1cGVyX2Jsb2NrczsKZXh0ZXJuIGludCBsZWFzZXNfZW5hYmxlLCBkaXJfbm90aWZ5 X2VuYWJsZSwgbGVhc2VfYnJlYWtfdGltZTsKIyAxOTkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMwojIDEgIi9v cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv YXNtL3NlbWFwaG9yZS5oIiAxIDMKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vc2VtYXBob3JlLmgiIDMKIyAxICIvb3B0 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMu MS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMSAzCiMgMTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyIDMK CgpzdHJ1Y3Qgc2VtYXBob3JlIHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBhdG9t aWNfdCB3YWtpbmc7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCgoKfTsKIyA0NyAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9hc20vc2VtYXBob3JlLmgiIDMKZXh0ZXJuIGlubGluZSB2b2lkIHNlbWFfaW5pdCAoc3RydWN0 IHNlbWFwaG9yZSAqc2VtLCBpbnQgdmFsKQp7CiAgICAgICAgYXRvbWljX3NldCgmc2VtLT5jb3Vu dCwgdmFsKTsKICAgICAgICBhdG9taWNfc2V0KCZzZW0tPndha2luZywgMCk7CiAgICAgICAgaW5p dF93YWl0cXVldWVfaGVhZCgmc2VtLT53YWl0KTsKCgoKfQoKc3RhdGljIGlubGluZSB2b2lkIGlu aXRfTVVURVggKHN0cnVjdCBzZW1hcGhvcmUgKnNlbSkKewogICAgICAgIHNlbWFfaW5pdChzZW0s IDEpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9NVVRFWF9MT0NLRUQgKHN0cnVjdCBzZW1h cGhvcmUgKnNlbSkKewogICAgICAgIHNlbWFfaW5pdChzZW0sIDApOwp9CgpleHRlcm4gdm9pZCBf X2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CmV4dGVybiBpbnQgX19kb3duX2ludGVycnVw dGlibGUoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CmV4dGVybiBpbnQgX19kb3duX3RyeWxvY2so c3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CmV4dGVybiB2b2lkIF9fdXAoc3RydWN0IHNlbWFwaG9y ZSAqIHNlbSk7CgpleHRlcm4gaW5saW5lIHZvaWQgZG93bihzdHJ1Y3Qgc2VtYXBob3JlICogc2Vt KQp7CiAgICAgICAgaWYgKGF0b21pY19kZWNfcmV0dXJuKCZzZW0tPmNvdW50KSA+PSAwKQogICAg ICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJlaWVpbyIgOiA6IDogIm1lbW9yeSIp OwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIF9fZG93bihzZW0pOwp9CgpleHRlcm4gaW5s aW5lIGludCBkb3duX2ludGVycnVwdGlibGUoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewogICAg ICAgIGludCByZXQgPSAwOwoKICAgICAgICBpZiAoYXRvbWljX2RlY19yZXR1cm4oJnNlbS0+Y291 bnQpID49IDApCiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImVpZWlvIiA6 IDogOiAibWVtb3J5Iik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0ID0gX19kb3du X2ludGVycnVwdGlibGUoc2VtKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4gaW5saW5l IGludCBkb3duX3RyeWxvY2soc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewogICAgICAgIGludCBy ZXQgPSAwOwoKICAgICAgICBpZiAoYXRvbWljX2RlY19yZXR1cm4oJnNlbS0+Y291bnQpID49IDAp CiAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImVpZWlvIiA6IDogOiAibWVt b3J5Iik7CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0ID0gX19kb3duX3RyeWxvY2so c2VtKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4gaW5saW5lIHZvaWQgdXAoc3RydWN0 IHNlbWFwaG9yZSAqIHNlbSkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgic3luYyIg OiA6IDogIm1lbW9yeSIpOwogICAgICAgIGlmIChhdG9taWNfaW5jX3JldHVybigmc2VtLT5jb3Vu dCkgPD0gMCkKICAgICAgICAgICAgICAgIF9fdXAoc2VtKTsKfQoKCgoKc3RydWN0IHJ3X3NlbWFw aG9yZQp7CiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwogICAgICAgIGludCByZCwgd3I7CiAgICAg ICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKCgoKfTsKIyAxMzcgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3NlbWFwaG9yZS5o IiAzCmV4dGVybiBpbmxpbmUgdm9pZCBpbml0X3J3c2VtKHN0cnVjdCByd19zZW1hcGhvcmUgKnNl bSkKewogICAgICAgIGRvIHsgfSB3aGlsZSgwKTsKICAgICAgICBzZW0tPnJkID0gc2VtLT53ciA9 IDA7CiAgICAgICAgaW5pdF93YWl0cXVldWVfaGVhZCgmc2VtLT53YWl0KTsKCgoKfQoKCgoKCmV4 dGVybiB2b2lkIGRvd25fcmVhZF9mYWlsZWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqKTsKZXh0ZXJu IHZvaWQgZG93bl93cml0ZV9mYWlsZWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqKTsKCmV4dGVybiBp bmxpbmUgdm9pZCBkb3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAgICAgICAg OwoKICAgICAgICBkbyB7IGludF9jb250cm9sLmludF9jbGkoKTsgKHZvaWQpKCZzZW0tPmxvY2sp OyB9IHdoaWxlICgwKTsKICAgICAgICBpZiAoc2VtLT53cikKICAgICAgICAgICAgICAgIGRvd25f cmVhZF9mYWlsZWQoc2VtKTsKICAgICAgICBzZW0tPnJkKys7CiAgICAgICAgZG8geyBkbyB7IH0g d2hpbGUoMCk7IGludF9jb250cm9sLmludF9zdGkoKTsgfSB3aGlsZSAoMCk7Cn0KCmV4dGVybiBp bmxpbmUgdm9pZCBkb3duX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAg IDsKCiAgICAgICAgKHZvaWQpKCZzZW0tPmxvY2spOwogICAgICAgIGlmKHNlbS0+cmQgfHwgc2Vt LT53cikKICAgICAgICAgICAgICAgIGRvd25fd3JpdGVfZmFpbGVkKHNlbSk7CiAgICAgICAgc2Vt LT53ciA9IDE7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwp9CiMgMjAwICIvb3B0L2ZzcC9pNTg2 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgi IDIgMwoKCmV4dGVybiB2b2lkIHVwZGF0ZV9hdGltZSAoc3RydWN0IGlub2RlICopOwoKCmV4dGVy biB2b2lkIGJ1ZmZlcl9pbml0KHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCBpbm9kZV9pbml0 KHVuc2lnbmVkIGxvbmcpOwojIDIyOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnN0cnVjdCBidWZmZXJfaGVh ZCB7CgogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9uZXh0OwogICAgICAgIHVuc2lnbmVk IGxvbmcgYl9ibG9ja25yOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGJfc2l6ZTsKICAgICAgICB1 bnNpZ25lZCBzaG9ydCBiX2xpc3Q7CiAgICAgICAga2Rldl90IGJfZGV2OwoKICAgICAgICBhdG9t aWNfdCBiX2NvdW50OwogICAgICAgIGtkZXZfdCBiX3JkZXY7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBiX3N0YXRlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgYl9mbHVzaHRpbWU7CgogICAgICAgIHN0 cnVjdCBidWZmZXJfaGVhZCAqYl9uZXh0X2ZyZWU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFk ICpiX3ByZXZfZnJlZTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfdGhpc19wYWdlOwog ICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqYl9yZXFuZXh0OwoKICAgICAgICBzdHJ1Y3QgYnVm ZmVyX2hlYWQgKipiX3BwcmV2OwogICAgICAgIGNoYXIgKiBiX2RhdGE7CiAgICAgICAgc3RydWN0 IHBhZ2UgKmJfcGFnZTsKICAgICAgICB2b2lkICgqYl9lbmRfaW8pKHN0cnVjdCBidWZmZXJfaGVh ZCAqYmgsIGludCB1cHRvZGF0ZSk7CiAgICAgICAgdm9pZCAqYl9wcml2YXRlOwoKICAgICAgICB1 bnNpZ25lZCBsb25nIGJfcnNlY3RvcjsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBiX3dhaXQ7 CgogICAgICAgIHN0cnVjdCBpbm9kZSAqIGJfaW5vZGU7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh ZCBiX2lub2RlX2J1ZmZlcnM7Cn07Cgp0eXBlZGVmIHZvaWQgKGJoX2VuZF9pb190KShzdHJ1Y3Qg YnVmZmVyX2hlYWQgKmJoLCBpbnQgdXB0b2RhdGUpOwp2b2lkIGluaXRfYnVmZmVyKHN0cnVjdCBi dWZmZXJfaGVhZCAqLCBiaF9lbmRfaW9fdCAqLCB2b2lkICopOwojIDI3NCAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5o IiAzCmV4dGVybiB2b2lkIHNldF9iaF9wYWdlKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIHN0cnVj dCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCk7CgoKCgojIDEgIi9vcHQvZnNwL2k1 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGlw ZV9mc19pLmgiIDEgMwoKCgoKc3RydWN0IHBpcGVfaW5vZGVfaW5mbyB7CiAgICAgICAgd2FpdF9x dWV1ZV9oZWFkX3Qgd2FpdDsKICAgICAgICBjaGFyICpiYXNlOwogICAgICAgIHVuc2lnbmVkIGlu dCBzdGFydDsKICAgICAgICB1bnNpZ25lZCBpbnQgcmVhZGVyczsKICAgICAgICB1bnNpZ25lZCBp bnQgd3JpdGVyczsKICAgICAgICB1bnNpZ25lZCBpbnQgd2FpdGluZ19yZWFkZXJzOwogICAgICAg IHVuc2lnbmVkIGludCB3YWl0aW5nX3dyaXRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHJfY291 bnRlcjsKICAgICAgICB1bnNpZ25lZCBpbnQgd19jb3VudGVyOwp9OwojIDQxICIvb3B0L2ZzcC9p NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Bp cGVfZnNfaS5oIiAzCnZvaWQgcGlwZV93YWl0KHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKCnN0cnVj dCBpbm9kZSogcGlwZV9uZXcoc3RydWN0IGlub2RlKiBpbm9kZSk7CiMgMjgwICIvb3B0L2ZzcC9p NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Zz LmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvbGludXgvbWluaXhfZnNfaS5oIiAxIDMKCgoKCgoKc3RydWN0IG1pbml4 X2lub2RlX2luZm8gewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTE2IGkxX2Rh dGFbMTZdOwogICAgICAgICAgICAgICAgX191MzIgaTJfZGF0YVsxNl07CiAgICAgICAgfSB1Owp9 OwojIDI4MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2V4dDJfZnNfaS5oIiAxIDMK IyAyMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9saW51eC9leHQyX2ZzX2kuaCIgMwpzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZvIHsKICAg ICAgICBfX3UzMiBpX2RhdGFbMTVdOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191 MzIgaV9mYWRkcjsKICAgICAgICBfX3U4IGlfZnJhZ19ubzsKICAgICAgICBfX3U4IGlfZnJhZ19z aXplOwogICAgICAgIF9fdTE2IGlfb3N5bmM7CiAgICAgICAgX191MzIgaV9maWxlX2FjbDsKICAg ICAgICBfX3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191MzIgaV9kdGltZTsKICAgICAgICBfX3Uz MiBub3RfdXNlZF8xOwogICAgICAgIF9fdTMyIGlfYmxvY2tfZ3JvdXA7CiAgICAgICAgX191MzIg aV9uZXh0X2FsbG9jX2Jsb2NrOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19nb2FsOwogICAg ICAgIF9fdTMyIGlfcHJlYWxsb2NfYmxvY2s7CiAgICAgICAgX191MzIgaV9wcmVhbGxvY19jb3Vu dDsKICAgICAgICBfX3UzMiBpX2hpZ2hfc2l6ZTsKICAgICAgICBpbnQgaV9uZXdfaW5vZGU6MTsK fTsKIyAyODIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ocGZzX2ZzX2kuaCIgMSAz CgoKCnN0cnVjdCBocGZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3By aXZhdGU7CiAgICAgICAgaW5vX3QgaV9wYXJlbnRfZGlyOwogICAgICAgIHVuc2lnbmVkIGlfZG5v OwogICAgICAgIHVuc2lnbmVkIGlfZHBvczsKICAgICAgICB1bnNpZ25lZCBpX2RzdWJkbm87CiAg ICAgICAgdW5zaWduZWQgaV9maWxlX3NlYzsKICAgICAgICB1bnNpZ25lZCBpX2Rpc2tfc2VjOwog ICAgICAgIHVuc2lnbmVkIGlfbl9zZWNzOwogICAgICAgIHVuc2lnbmVkIGlfZWFfc2l6ZTsKICAg ICAgICB1bnNpZ25lZCBpX2NvbnYgOiAyOwogICAgICAgIHVuc2lnbmVkIGlfZWFfbW9kZSA6IDE7 CiAgICAgICAgdW5zaWduZWQgaV9lYV91aWQgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfZWFfZ2lk IDogMTsKICAgICAgICB1bnNpZ25lZCBpX2RpcnR5IDogMTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBo b3JlIGlfc2VtOwogICAgICAgIGxvZmZfdCAqKmlfcmRkaXJfb2ZmOwp9OwojIDI4MyAiL29wdC9m c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51 eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIiAxIDMKCgoKCnN0cnVjdCBudGZz X2F0dHJpYnV0ZTsKc3RydWN0IG50ZnNfc2JfaW5mbzsKCgoKCnR5cGVkZWYgdTggbnRmc191ODsK dHlwZWRlZiB1MTYgbnRmc191MTY7CnR5cGVkZWYgdTMyIG50ZnNfdTMyOwp0eXBlZGVmIHU2NCBu dGZzX3U2NDsKdHlwZWRlZiBzOCBudGZzX3M4Owp0eXBlZGVmIHMxNiBudGZzX3MxNjsKdHlwZWRl ZiBzMzIgbnRmc19zMzI7CnR5cGVkZWYgczY0IG50ZnNfczY0OwoKCgoKdHlwZWRlZiBfX2tlcm5l bF9tb2RlX3QgbnRtb2RlX3Q7CgoKCnR5cGVkZWYgdWlkX3QgbnRmc191aWRfdDsKCgoKdHlwZWRl ZiBnaWRfdCBudGZzX2dpZF90OwoKCgp0eXBlZGVmIF9fa2VybmVsX3NpemVfdCBudGZzX3NpemVf dDsKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3QgbnRmc190aW1lX3Q7CgoKCgoKdHlwZWRlZiB1 bnNpZ25lZCBzaG9ydCBudGZzX3djaGFyX3Q7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u ZyBudGZzX29mZnNldF90OwoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgbnRmc190aW1l NjRfdDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IG50ZnNfY2x1c3Rlcl90OwoKCgpzdHJ1Y3Qg bnRmc19pbm9kZV9pbmZvewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAg ICAgc3RydWN0IG50ZnNfc2JfaW5mbyAqdm9sOwogICAgICAgIGludCBpX251bWJlcjsKICAgICAg ICB1bnNpZ25lZCBzZXF1ZW5jZV9udW1iZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciogYXR0cjsK ICAgICAgICBpbnQgYXR0cl9jb3VudDsKICAgICAgICBzdHJ1Y3QgbnRmc19hdHRyaWJ1dGUgKmF0 dHJzOwogICAgICAgIGludCByZWNvcmRfY291bnQ7CgoKICAgICAgICBpbnQgKnJlY29yZHM7CiAg ICAgICAgdW5pb257CiAgICAgICAgICAgICAgICBzdHJ1Y3R7CiAgICAgICAgICAgICAgICAgICAg ICAgIGludCByZWNvcmRzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2x1c3RlcnNf cGVyX3JlY29yZDsKICAgICAgICAgICAgICAgIH1pbmRleDsKICAgICAgICB9IHU7Cn07CiMgMjg0 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbXNkb3NfZnNfaS5oIiAxIDMKCgoKCgoK CnN0cnVjdCBtc2Rvc19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2 YXRlOwogICAgICAgIGludCBpX3N0YXJ0OwogICAgICAgIGludCBpX2xvZ3N0YXJ0OwogICAgICAg IGludCBpX2F0dHJzOwogICAgICAgIGludCBpX2N0aW1lX21zOwogICAgICAgIGludCBpX2xvY2F0 aW9uOwogICAgICAgIHN0cnVjdCBpbm9kZSAqaV9mYXRfaW5vZGU7CiAgICAgICAgc3RydWN0IGxp c3RfaGVhZCBpX2ZhdF9oYXNoOwp9OwojIDI4NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp bnV4L3Vtc2Rvc19mc19pLmgiIDEgMwojIDM5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Vtc2Rvc19mc19pLmgiIDMKc3Ry dWN0IGRpcl9sb2NraW5nX2luZm8gewogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHA7CiAgICAg ICAgc2hvcnQgaW50IGxvb2tpbmc7CiAgICAgICAgc2hvcnQgaW50IGNyZWF0aW5nOwoKCgogICAg ICAgIGxvbmcgcGlkOwoKfTsKCnN0cnVjdCB1bXNkb3NfaW5vZGVfaW5mbyB7CiAgICAgICAgc3Ry dWN0IG1zZG9zX2lub2RlX2luZm8gbXNkb3NfaW5mbzsKICAgICAgICBzdHJ1Y3QgZGlyX2xvY2tp bmdfaW5mbyBkaXJfaW5mbzsKICAgICAgICBpbnQgaV9wYXRjaGVkOwogICAgICAgIGludCBpX2lz X2hsaW5rOwogICAgICAgIG9mZl90IHBvczsKfTsKIyAyODYgIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMg MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9saW51eC9pc29fZnNfaS5oIiAxIDMKCgoKCgoKc3RydWN0IGlzb19pbm9kZV9pbmZvIHsK ICAgICAgICB1bnNpZ25lZCBpbnQgaV9maXJzdF9leHRlbnQ7CiAgICAgICAgdW5zaWduZWQgY2hh ciBpX2ZpbGVfZm9ybWF0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9uZXh0X3NlY3Rpb25faW5v OwogICAgICAgIG9mZl90IGlfc2VjdGlvbl9zaXplOwp9OwojIDI4NyAiL29wdC9mc3AvaTU4Ni1w Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAy IDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDEgMwoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1w Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9uZnMuaCIg MSAzCiMgMTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvbmZzLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3N1bnJwYy9tc2dfcHJvdC5o IiAxIDMKIyAxNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51 eC9zeXMtaW5jbHVkZS9saW51eC9zdW5ycGMvbXNnX3Byb3QuaCIgMwplbnVtIHJwY19hdXRoX2Zs YXZvciB7CiAgICAgICAgUlBDX0FVVEhfTlVMTCA9IDAsCiAgICAgICAgUlBDX0FVVEhfVU5JWCA9 IDEsCiAgICAgICAgUlBDX0FVVEhfU0hPUlQgPSAyLAogICAgICAgIFJQQ19BVVRIX0RFUyA9IDMs CiAgICAgICAgUlBDX0FVVEhfS1JCID0gNCwKfTsKCmVudW0gcnBjX21zZ190eXBlIHsKICAgICAg ICBSUENfQ0FMTCA9IDAsCiAgICAgICAgUlBDX1JFUExZID0gMQp9OwoKZW51bSBycGNfcmVwbHlf c3RhdCB7CiAgICAgICAgUlBDX01TR19BQ0NFUFRFRCA9IDAsCiAgICAgICAgUlBDX01TR19ERU5J RUQgPSAxCn07CgplbnVtIHJwY19hY2NlcHRfc3RhdCB7CiAgICAgICAgUlBDX1NVQ0NFU1MgPSAw LAogICAgICAgIFJQQ19QUk9HX1VOQVZBSUwgPSAxLAogICAgICAgIFJQQ19QUk9HX01JU01BVENI ID0gMiwKICAgICAgICBSUENfUFJPQ19VTkFWQUlMID0gMywKICAgICAgICBSUENfR0FSQkFHRV9B UkdTID0gNCwKICAgICAgICBSUENfU1lTVEVNX0VSUiA9IDUKfTsKCmVudW0gcnBjX3JlamVjdF9z dGF0IHsKICAgICAgICBSUENfTUlTTUFUQ0ggPSAwLAogICAgICAgIFJQQ19BVVRIX0VSUk9SID0g MQp9OwoKZW51bSBycGNfYXV0aF9zdGF0IHsKICAgICAgICBSUENfQVVUSF9PSyA9IDAsCiAgICAg ICAgUlBDX0FVVEhfQkFEQ1JFRCA9IDEsCiAgICAgICAgUlBDX0FVVEhfUkVKRUNURURDUkVEID0g MiwKICAgICAgICBSUENfQVVUSF9CQURWRVJGID0gMywKICAgICAgICBSUENfQVVUSF9SRUpFQ1RF RFZFUkYgPSA0LAogICAgICAgIFJQQ19BVVRIX1RPT1dFQUsgPSA1Cn07CiMgMTEgIi9vcHQvZnNw L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv bmZzLmgiIDIgMwojIDQxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L25mcy5oIiAzCiBlbnVtIG5mc19zdGF0IHsKICAgICAg ICBORlNfT0sgPSAwLAogICAgICAgIE5GU0VSUl9QRVJNID0gMSwKICAgICAgICBORlNFUlJfTk9F TlQgPSAyLAogICAgICAgIE5GU0VSUl9JTyA9IDUsCiAgICAgICAgTkZTRVJSX05YSU8gPSA2LAog ICAgICAgIE5GU0VSUl9FQUdBSU4gPSAxMSwKICAgICAgICBORlNFUlJfQUNDRVMgPSAxMywKICAg ICAgICBORlNFUlJfRVhJU1QgPSAxNywKICAgICAgICBORlNFUlJfWERFViA9IDE4LAogICAgICAg IE5GU0VSUl9OT0RFViA9IDE5LAogICAgICAgIE5GU0VSUl9OT1RESVIgPSAyMCwKICAgICAgICBO RlNFUlJfSVNESVIgPSAyMSwKICAgICAgICBORlNFUlJfSU5WQUwgPSAyMiwKICAgICAgICBORlNF UlJfRkJJRyA9IDI3LAogICAgICAgIE5GU0VSUl9OT1NQQyA9IDI4LAogICAgICAgIE5GU0VSUl9S T0ZTID0gMzAsCiAgICAgICAgTkZTRVJSX01MSU5LID0gMzEsCiAgICAgICAgTkZTRVJSX09QTk9U U1VQUCA9IDQ1LAogICAgICAgIE5GU0VSUl9OQU1FVE9PTE9ORyA9IDYzLAogICAgICAgIE5GU0VS Ul9OT1RFTVBUWSA9IDY2LAogICAgICAgIE5GU0VSUl9EUVVPVCA9IDY5LAogICAgICAgIE5GU0VS Ul9TVEFMRSA9IDcwLAogICAgICAgIE5GU0VSUl9SRU1PVEUgPSA3MSwKICAgICAgICBORlNFUlJf V0ZMVVNIID0gOTksCiAgICAgICAgTkZTRVJSX0JBREhBTkRMRSA9IDEwMDAxLAogICAgICAgIE5G U0VSUl9OT1RfU1lOQyA9IDEwMDAyLAogICAgICAgIE5GU0VSUl9CQURfQ09PS0lFID0gMTAwMDMs CiAgICAgICAgTkZTRVJSX05PVFNVUFAgPSAxMDAwNCwKICAgICAgICBORlNFUlJfVE9PU01BTEwg PSAxMDAwNSwKICAgICAgICBORlNFUlJfU0VSVkVSRkFVTFQgPSAxMDAwNiwKICAgICAgICBORlNF UlJfQkFEVFlQRSA9IDEwMDA3LAogICAgICAgIE5GU0VSUl9KVUtFQk9YID0gMTAwMDgKIH07CgoK CmVudW0gbmZzX2Z0eXBlIHsKICAgICAgICBORk5PTiA9IDAsCiAgICAgICAgTkZSRUcgPSAxLAog ICAgICAgIE5GRElSID0gMiwKICAgICAgICBORkJMSyA9IDMsCiAgICAgICAgTkZDSFIgPSA0LAog ICAgICAgIE5GTE5LID0gNSwKICAgICAgICBORlNPQ0sgPSA2LAogICAgICAgIE5GQkFEID0gNywK ICAgICAgICBORkZJRk8gPSA4Cn07CgoKCgoKCnN0cnVjdCBuZnNfZmggewogICAgICAgIHVuc2ln bmVkIHNob3J0IHNpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBkYXRhWzY0XTsKfTsKIyAxMDcg Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1 ZGUvbGludXgvbmZzLmgiIDMKZW51bSBuZnMzX3N0YWJsZV9ob3cgewogICAgICAgIE5GU19VTlNU QUJMRSA9IDAsCiAgICAgICAgTkZTX0RBVEFfU1lOQyA9IDEsCiAgICAgICAgTkZTX0ZJTEVfU1lO QyA9IDIKfTsKIyA3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2xpbnV4L25mc19mc19pLmgiIDIgMwoKCgoKc3RydWN0IG5mc19pbm9k ZV9pbmZvIHsKCgoKICAgICAgICBfX3U2NCBmc2lkOwogICAgICAgIF9fdTY0IGZpbGVpZDsKCgoK CiAgICAgICAgc3RydWN0IG5mc19maCBmaDsKCgoKCiAgICAgICAgdW5zaWduZWQgc2hvcnQgZmxh Z3M7CiMgNDUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVh ZF9jYWNoZV9qaWZmaWVzOwogICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfY3RpbWU7CiAgICAgICAg X191NjQgcmVhZF9jYWNoZV9tdGltZTsKICAgICAgICBfX3U2NCByZWFkX2NhY2hlX2F0aW1lOwog ICAgICAgIF9fdTY0IHJlYWRfY2FjaGVfaXNpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRy dGltZW87CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRydGltZW9fdGltZXN0YW1wOwoKCgoKCiAg ICAgICAgX191MzIgY29va2lldmVyZlsyXTsKCgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBy ZWFkOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZGlydHk7CiAgICAgICAgc3RydWN0IGxpc3Rf aGVhZCBjb21taXQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCB3cml0ZWJhY2s7CgogICAgICAg IHVuc2lnbmVkIGludCBucmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGly dHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmNvbW1pdCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBucGFnZXM7CgoKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmhhc2hf bmV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqaGFzaF9wcmV2OwogICAgICAg IHVuc2lnbmVkIGxvbmcgbmV4dHNjYW47Cn07CiMgOTAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMwpz dHJ1Y3QgbmZzX2xvY2tfaW5mbyB7CiAgICAgICAgdTMyIHN0YXRlOwogICAgICAgIHUzMiBmbGFn czsKICAgICAgICBzdHJ1Y3QgbmxtX2hvc3QgKmhvc3Q7Cn07CiMgMjg4ICIvb3B0L2ZzcC9pNTg2 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgi IDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvc3lzdl9mc19pLmgiIDEgMwoKCgoKCgpzdHJ1Y3Qgc3lzdl9pbm9k ZV9pbmZvIHsKICAgICAgICB1MzIgaV9kYXRhWzEwKzErMSsxXTsKCgoKCn07CiMgMjg5ICIvb3B0 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp bnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYWZmc19mc19pLmgiIDEgMwoKCgojIDEgIi9vcHQv ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4x L2luY2x1ZGUvbGludXgvYS5vdXQuaCIgMSAzCiMgMTcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt Z251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4xL2luY2x1ZGUvbGludXgvYS5v dXQuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvYXNtL2Eub3V0LmgiIDEgMwoKCgoKCgoKc3RydWN0IGV4ZWMKewogIHVu c2lnbmVkIGxvbmcgYV9pbmZvOwogIHVuc2lnbmVkIGFfdGV4dDsKICB1bnNpZ25lZCBhX2RhdGE7 CiAgdW5zaWduZWQgYV9ic3M7CiAgdW5zaWduZWQgYV9zeW1zOwogIHVuc2lnbmVkIGFfZW50cnk7 CiAgdW5zaWduZWQgYV90cnNpemU7CiAgdW5zaWduZWQgYV9kcnNpemU7Cn07CiMgMTggIi9vcHQv ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL2xpYi9nY2MtbGliL3Bvd2VycGMtbGludXgvMy4x L2luY2x1ZGUvbGludXgvYS5vdXQuaCIgMiAzCgoKCgplbnVtIG1hY2hpbmVfdHlwZSB7CgoKCiAg TV9PTERTVU4yID0gMCwKCgoKCiAgTV82ODAxMCA9IDEsCgoKCgogIE1fNjgwMjAgPSAyLAoKCgoK ICBNX1NQQVJDID0gMywKCgogIE1fMzg2ID0gMTAwLAogIE1fTUlQUzEgPSAxNTEsCiAgTV9NSVBT MiA9IDE1Mgp9OwojIDE2NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvbGliL2dj Yy1saWIvcG93ZXJwYy1saW51eC8zLjEvaW5jbHVkZS9saW51eC9hLm91dC5oIiAzCnN0cnVjdCBu bGlzdCB7CiAgdW5pb24gewogICAgY2hhciAqbl9uYW1lOwogICAgc3RydWN0IG5saXN0ICpuX25l eHQ7CiAgICBsb25nIG5fc3RyeDsKICB9IG5fdW47CiAgdW5zaWduZWQgY2hhciBuX3R5cGU7CiAg Y2hhciBuX290aGVyOwogIHNob3J0IG5fZGVzYzsKICB1bnNpZ25lZCBsb25nIG5fdmFsdWU7Cn07 CiMgMjQ0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dl cnBjLWxpbnV4LzMuMS9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiIDMKc3RydWN0IHJlbG9jYXRpb25f aW5mbwp7CgogIGludCByX2FkZHJlc3M7CgogIHVuc2lnbmVkIGludCByX3N5bWJvbG51bToyNDsK CgoKICB1bnNpZ25lZCBpbnQgcl9wY3JlbDoxOwoKCiAgdW5zaWduZWQgaW50IHJfbGVuZ3RoOjI7 CgoKCgoKCiAgdW5zaWduZWQgaW50IHJfZXh0ZXJuOjE7CgoKCgoKCgogIHVuc2lnbmVkIGludCBy X3BhZDo0OwoKfTsKIyA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2FmZnNfZnNfaS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9p NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Rp bWUuaCIgMSAzCiMgOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s aW51eC9zeXMtaW5jbHVkZS9saW51eC90aW1lLmgiIDMKc3RydWN0IHRpbWVzcGVjIHsKICAgICAg ICB0aW1lX3QgdHZfc2VjOwogICAgICAgIGxvbmcgdHZfbnNlYzsKfTsKIyAzMSAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90 aW1lLmgiIDMKc3RhdGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZwp0aW1lc3BlY190b19qaWZm aWVzKHN0cnVjdCB0aW1lc3BlYyAqdmFsdWUpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlYyA9 IHZhbHVlLT50dl9zZWM7CiAgICAgICAgbG9uZyBuc2VjID0gdmFsdWUtPnR2X25zZWM7CgogICAg ICAgIGlmIChzZWMgPj0gKCgofjBVTCA+PiAxKS0xKSAvIDEwMCkpCiAgICAgICAgICAgICAgICBy ZXR1cm4gKCh+MFVMID4+IDEpLTEpOwogICAgICAgIG5zZWMgKz0gMTAwMDAwMDAwMEwgLyAxMDAg LSAxOwogICAgICAgIG5zZWMgLz0gMTAwMDAwMDAwMEwgLyAxMDA7CiAgICAgICAgcmV0dXJuIDEw MCAqIHNlYyArIG5zZWM7Cn0KCnN0YXRpYyBfX2lubGluZV9fIHZvaWQKamlmZmllc190b190aW1l c3BlYyh1bnNpZ25lZCBsb25nIGppZmZpZXMsIHN0cnVjdCB0aW1lc3BlYyAqdmFsdWUpCnsKICAg ICAgICB2YWx1ZS0+dHZfbnNlYyA9IChqaWZmaWVzICUgMTAwKSAqICgxMDAwMDAwMDAwTCAvIDEw MCk7CiAgICAgICAgdmFsdWUtPnR2X3NlYyA9IGppZmZpZXMgLyAxMDA7Cn0KIyA2NyAiL29wdC9m c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51 eC90aW1lLmgiIDMKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCm1rdGltZSAodW5zaWduZWQg aW50IHllYXIsIHVuc2lnbmVkIGludCBtb24sCiAgICAgICAgdW5zaWduZWQgaW50IGRheSwgdW5z aWduZWQgaW50IGhvdXIsCiAgICAgICAgdW5zaWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IHNl YykKewogICAgICAgIGlmICgwID49IChpbnQpIChtb24gLT0gMikpIHsKICAgICAgICAgICAgICAg IG1vbiArPSAxMjsKICAgICAgICAgICAgICAgIHllYXIgLT0gMTsKICAgICAgICB9CgogICAgICAg IHJldHVybiAoKCgKICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSAoeWVhci80IC0geWVh ci8xMDAgKyB5ZWFyLzQwMCArIDM2Nyptb24vMTIgKyBkYXkpICsKICAgICAgICAgICAgICAgICAg ICAgICAgeWVhciozNjUgLSA3MTk0OTkKICAgICAgICAgICAgKSoyNCArIGhvdXIKICAgICAgICAg ICkqNjAgKyBtaW4KICAgICAgICApKjYwICsgc2VjOwp9CgoKCgpzdHJ1Y3QgdGltZXZhbCB7CiAg ICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBzdXNlY29uZHNfdCB0dl91c2VjOwp9OwoKc3Ry dWN0IHRpbWV6b25lIHsKICAgICAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAgICAgICAgaW50IHR6 X2RzdHRpbWU7Cn07CgoKCgpleHRlcm4gdm9pZCBkb19nZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2 YWwgKnR2KTsKZXh0ZXJuIHZvaWQgZG9fc2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7 CmV4dGVybiB2b2lkIGdldF9mYXN0X3RpbWUoc3RydWN0IHRpbWV2YWwgKnR2KTsKZXh0ZXJuIHZv aWQgKCpkb19nZXRfZmFzdF90aW1lKShzdHJ1Y3QgdGltZXZhbCAqKTsKIyAxMjEgIi9vcHQvZnNw L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv dGltZS5oIiAzCnN0cnVjdCBpdGltZXJzcGVjIHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRf aW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwp9OwoKc3RydWN0IGl0 aW1lcnZhbCB7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3Ry dWN0IHRpbWV2YWwgaXRfdmFsdWU7Cn07CiMgNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIgMiAzCgoK CgpzdHJ1Y3Qga2V5X2NhY2hlIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBrY19scnVfdGltZTsK ICAgICAgICBzMzIga2NfZmlyc3Q7CiAgICAgICAgczMyIGtjX2xhc3Q7CiAgICAgICAgczMyIGtj X3RoaXNfa2V5OwogICAgICAgIGludCBrY190aGlzX3NlcTsKICAgICAgICBzMzIga2NfbmV4dF9r ZXk7CiAgICAgICAgczMyIGtjX2tleXNbNzNdOwp9OwoKCgpzdHJ1Y3QgZXh0X2NhY2hlIHsKICAg ICAgICBzdHJ1Y3Qga2V5X2NhY2hlIGtjWzRdOwogICAgICAgIHMzMiBlY1soKDFVTCA8PCAxMikg LSA0ICogc2l6ZW9mKHN0cnVjdCBrZXlfY2FjaGUpIC0gNCkgLyA0XTsKICAgICAgICBpbnQgbWF4 X2V4dDsKfTsKCgoKCnN0cnVjdCBhZmZzX2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxv bmcgbW11X3ByaXZhdGU7CiAgICAgICAgdTMyIGlfcHJvdGVjdDsKICAgICAgICBzMzIgaV9wYXJl bnQ7CiAgICAgICAgczMyIGlfb3JpZ2luYWw7CiAgICAgICAgczMyIGlfZGF0YVsxNl07CiAgICAg ICAgc3RydWN0IGV4dF9jYWNoZSAqaV9lYzsKICAgICAgICBpbnQgaV9jYWNoZV91c2VyczsKICAg ICAgICBpbnQgaV9sYXN0YmxvY2s7CiAgICAgICAgc2hvcnQgaV9wYV9jbnQ7CiAgICAgICAgc2hv cnQgaV9wYV9uZXh0OwogICAgICAgIHNob3J0IGlfcGFfbGFzdDsKICAgICAgICBzaG9ydCBpX3pv bmU7CiAgICAgICAgdW5zaWduZWQgY2hhciBpX2hsaW5rOwogICAgICAgIHVuc2lnbmVkIGNoYXIg aV9wYWQ7Cn07CiMgMjkwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdWZzX2ZzX2ku aCIgMSAzCiMgMTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvbGludXgvdWZzX2ZzX2kuaCIgMwpzdHJ1Y3QgdWZzX2lub2RlX2luZm8g ewogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIF9fdTMyIGlfZGF0YVsxNV07CiAgICAg ICAgICAgICAgICBfX3U4IGlfc3ltbGlua1s0KjE1XTsKICAgICAgICB9IGlfdTE7CiAgICAgICAg X191NjQgaV9zaXplOwogICAgICAgIF9fdTMyIGlfZmxhZ3M7CiAgICAgICAgX191MzIgaV9nZW47 CiAgICAgICAgX191MzIgaV9zaGFkb3c7CiAgICAgICAgX191MzIgaV91bnVzZWQxOwogICAgICAg IF9fdTMyIGlfdW51c2VkMjsKICAgICAgICBfX3UzMiBpX29lZnRmbGFnOwogICAgICAgIF9fdTE2 IGlfb3N5bmM7CiAgICAgICAgX191MzIgaV9sYXN0ZnJhZzsKfTsKIyAyOTEgIi9vcHQvZnNwL2k1 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMu aCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51 eC9zeXMtaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIiAxIDMKIyAxMiAiL29wdC9mc3AvaTU4Ni1w Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9lZnNfZnNf aS5oIiAzCnR5cGVkZWYgaW50MzJfdCBlZnNfYmxvY2tfdDsKdHlwZWRlZiB1aW50MzJfdCBlZnNf aW5vX3Q7CgoKCgoKCnR5cGVkZWYgdW5pb24gZXh0ZW50X3UgewogICAgICAgIHVuc2lnbmVkIGNo YXIgcmF3WzhdOwogICAgICAgIHN0cnVjdCBleHRlbnRfcyB7CiAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgZXhfbWFnaWM6ODsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9ibjoy NDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBleF9sZW5ndGg6ODsKICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBleF9vZmZzZXQ6MjQ7CiAgICAgICAgfSBjb29rZWQ7Cn0gZWZzX2V4 dGVudDsKCnR5cGVkZWYgc3RydWN0IGVkZXZzIHsKICAgICAgICBzaG9ydCBvZGV2OwogICAgICAg IHVuc2lnbmVkIGludCBuZGV2Owp9IGVmc19kZXZzOwoKCgoKCnN0cnVjdCBlZnNfZGlub2RlIHsK ICAgICAgICB1X3Nob3J0IGRpX21vZGU7CiAgICAgICAgc2hvcnQgZGlfbmxpbms7CiAgICAgICAg dV9zaG9ydCBkaV91aWQ7CiAgICAgICAgdV9zaG9ydCBkaV9naWQ7CiAgICAgICAgaW50MzJfdCBk aV9zaXplOwogICAgICAgIGludDMyX3QgZGlfYXRpbWU7CiAgICAgICAgaW50MzJfdCBkaV9tdGlt ZTsKICAgICAgICBpbnQzMl90IGRpX2N0aW1lOwogICAgICAgIHVpbnQzMl90IGRpX2dlbjsKICAg ICAgICBzaG9ydCBkaV9udW1leHRlbnRzOwogICAgICAgIHVfY2hhciBkaV92ZXJzaW9uOwogICAg ICAgIHVfY2hhciBkaV9zcGFyZTsKICAgICAgICB1bmlvbiBkaV9hZGRyIHsKICAgICAgICAgICAg ICAgIGVmc19leHRlbnQgZGlfZXh0ZW50c1sxMl07CiAgICAgICAgICAgICAgICBlZnNfZGV2cyBk aV9kZXY7CiAgICAgICAgfSBkaV91Owp9OwoKCnN0cnVjdCBlZnNfaW5vZGVfaW5mbyB7CiAgICAg ICAgaW50IG51bWV4dGVudHM7CiAgICAgICAgaW50IGxhc3RleHRlbnQ7CgogICAgICAgIGVmc19l eHRlbnQgZXh0ZW50c1sxMl07Cn07CiMgMjkyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQv ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu dXgvY29kYV9mc19pLmgiIDEgMwojIDE0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIiAzCiMgMSAiL29w dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s aW51eC9jb2RhLmgiIDEgMwojIDEwOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9jb2RhLmgiIDMKdHlwZWRlZiB1bnNpZ25l ZCBsb25nIGxvbmcgdV9xdWFkX3Q7CiMgMTY0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwpzdHJ1Y3QgdmVu dXNfZGlyZW50IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGRfZmlsZW5vOwogICAgICAgIHVuc2ln bmVkIHNob3J0IGRfcmVjbGVuOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOwogICAgICAg IHVuc2lnbmVkIGNoYXIgZF9uYW1sZW47CiAgICAgICAgY2hhciBkX25hbWVbMjU1ICsgMV07Cn07 CiMgMTk4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwp0eXBlZGVmIHVfbG9uZyBWb2x1bWVJZDsKdHlwZWRl ZiB1X2xvbmcgVm5vZGVJZDsKdHlwZWRlZiB1X2xvbmcgVW5pcXVlX3Q7CnR5cGVkZWYgdV9sb25n IEZpbGVWZXJzaW9uOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgVmljZUZpZCB7CiAgICBWb2x1bWVJZCBW b2x1bWU7CiAgICBWbm9kZUlkIFZub2RlOwogICAgVW5pcXVlX3QgVW5pcXVlOwp9IFZpY2VGaWQ7 CgoKCgpzdGF0aWMgX19pbmxpbmVfXyBpbm9fdCBjb2RhX2YyaShzdHJ1Y3QgVmljZUZpZCAqZmlk KQp7CiAgICAgICAgaWYgKCAhIGZpZCApCiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg ICBpZiAoZmlkLT5Wbm9kZSA9PSAweGZmZmZmZmZlIHx8IGZpZC0+Vm5vZGUgPT0gMHhmZmZmZmZm ZikKICAgICAgICAgICAgICAgIHJldHVybiAoKGZpZC0+Vm9sdW1lIDw8IDIwKSB8IChmaWQtPlVu aXF1ZSAmIDB4ZmZmZmYpKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICByZXR1cm4gKGZp ZC0+VW5pcXVlICsgKGZpZC0+Vm5vZGU8PDEwKSArIChmaWQtPlZvbHVtZTw8MjApKTsKfQojIDIz MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9saW51eC9jb2RhLmgiIDMKdHlwZWRlZiB1X2ludDMyX3QgdnVpZF90Owp0eXBlZGVmIHVf aW50MzJfdCB2Z2lkX3Q7CgoKCgpzdHJ1Y3QgY29kYV9jcmVkIHsKICAgIHZ1aWRfdCBjcl91aWQs IGNyX2V1aWQsIGNyX3N1aWQsIGNyX2ZzdWlkOwogICAgdmdpZF90IGNyX2dyb3VwaWQsIGNyX2Vn aWQsIGNyX3NnaWQsIGNyX2ZzZ2lkOwp9OwoKCgoKCgoKZW51bSBjb2RhX3Z0eXBlIHsgQ19WTk9O LCBDX1ZSRUcsIENfVkRJUiwgQ19WQkxLLCBDX1ZDSFIsIENfVkxOSywgQ19WU09DSywgQ19WRklG TywgQ19WQkFEIH07CgpzdHJ1Y3QgY29kYV92YXR0ciB7CiAgICAgICAgbG9uZyB2YV90eXBlOwog ICAgICAgIHVfc2hvcnQgdmFfbW9kZTsKICAgICAgICBzaG9ydCB2YV9ubGluazsKICAgICAgICB2 dWlkX3QgdmFfdWlkOwogICAgICAgIHZnaWRfdCB2YV9naWQ7CiAgICAgICAgbG9uZyB2YV9maWxl aWQ7CiAgICAgICAgdV9xdWFkX3QgdmFfc2l6ZTsKICAgICAgICBsb25nIHZhX2Jsb2Nrc2l6ZTsK ICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfYXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWVzcGVj IHZhX210aW1lOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2YV9jdGltZTsKICAgICAgICB1X2xv bmcgdmFfZ2VuOwogICAgICAgIHVfbG9uZyB2YV9mbGFnczsKICAgICAgICB1X3F1YWRfdCB2YV9y ZGV2OwogICAgICAgIHVfcXVhZF90IHZhX2J5dGVzOwogICAgICAgIHVfcXVhZF90IHZhX2ZpbGVy ZXY7Cn07CgoKCgpzdHJ1Y3QgY29kYV9zdGF0ZnMgewogICAgaW50MzJfdCBmX2Jsb2NrczsKICAg IGludDMyX3QgZl9iZnJlZTsKICAgIGludDMyX3QgZl9iYXZhaWw7CiAgICBpbnQzMl90IGZfZmls ZXM7CiAgICBpbnQzMl90IGZfZmZyZWU7Cn07CiMgMzM1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwpzdHJ1 Y3QgY29kYV9pbl9oZHIgewogICAgdW5zaWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBs b25nIHVuaXF1ZTsKICAgIHVfc2hvcnQgcGlkOwogICAgdV9zaG9ydCBwZ2lkOwogICAgdV9zaG9y dCBzaWQ7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7Cn07CgoKc3RydWN0IGNvZGFfb3V0X2hk ciB7CiAgICB1bnNpZ25lZCBsb25nIG9wY29kZTsKICAgIHVuc2lnbmVkIGxvbmcgdW5pcXVlOwog ICAgdW5zaWduZWQgbG9uZyByZXN1bHQ7Cn07CgoKc3RydWN0IGNvZGFfcm9vdF9vdXQgewogICAg c3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2Rh X3Jvb3RfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGluOwp9OwoKCnN0cnVjdCBjb2RhX29w ZW5faW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAg aW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfb3Blbl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0 X2hkciBvaDsKICAgIHVfcXVhZF90IGRldjsKICAgIGlub190IGlub2RlOwp9OwoKCgpzdHJ1Y3Qg Y29kYV9jbG9zZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZG aWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9jbG9zZV9vdXQgewogICAgc3RydWN0 IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfaW9jdGxfaW4gewogICAgc3RydWN0 IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGNtZDsKICAgIGludCBs ZW47CiAgICBpbnQgcndmbGFnOwogICAgY2hhciAqZGF0YTsKfTsKCnN0cnVjdCBjb2RhX2lvY3Rs X291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgaW50IGxlbjsKICAgIGNhZGRy X3QgZGF0YTsKfTsKCgoKc3RydWN0IGNvZGFfZ2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9p bl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9nZXRhdHRyX291dCB7 CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsK fTsKCgoKc3RydWN0IGNvZGFfc2V0YXR0cl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7 CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9OwoKc3RydWN0 IGNvZGFfc2V0YXR0cl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3Ry dWN0IGNvZGFfYWNjZXNzX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG aWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX2FjY2Vzc19vdXQgewogICAg c3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCgoKCgpzdHJ1Y3QgY29kYV9sb29rdXBfaW4g ewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IG5h bWU7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9sb29rdXBfb3V0IHsKICAgIHN0cnVj dCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7Cn07CgoK CnN0cnVjdCBjb2RhX2NyZWF0ZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBW aWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IGV4Y2w7CiAg ICBpbnQgbW9kZTsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfY3JlYXRlX291dCB7CiAg ICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNv ZGFfdmF0dHIgYXR0cjsKfTsKCgoKc3RydWN0IGNvZGFfcmVtb3ZlX2luIHsKICAgIHN0cnVjdCBj b2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0 IGNvZGFfcmVtb3ZlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1 Y3QgY29kYV9saW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQg c291cmNlRmlkOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50IHRuYW1lOwp9OwoKc3RydWN0 IGNvZGFfbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKCnN0cnVj dCBjb2RhX3JlbmFtZV9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlk IHNvdXJjZUZpZDsKICAgIGludCBzcmNuYW1lOwogICAgVmljZUZpZCBkZXN0RmlkOwogICAgaW50 IGRlc3RuYW1lOwp9OwoKc3RydWN0IGNvZGFfcmVuYW1lX291dCB7CiAgICBzdHJ1Y3QgY29kYV9v dXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9ta2Rpcl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9p bl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwog ICAgaW50IG5hbWU7Cn07CgpzdHJ1Y3QgY29kYV9ta2Rpcl9vdXQgewogICAgc3RydWN0IGNvZGFf b3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7 Cn07CgoKCnN0cnVjdCBjb2RhX3JtZGlyX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsK ICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfcm1kaXJfb3V0 IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3N5bWxpbmtf aW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50 IHNyY25hbWU7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwogICAgaW50IHRuYW1lOwp9OwoK c3RydWN0IGNvZGFfc3ltbGlua19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07 CgoKc3RydWN0IGNvZGFfcmVhZGxpbmtfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwog ICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfcmVhZGxpbmtfb3V0IHsKICAgIHN0cnVj dCBjb2RhX291dF9oZHIgb2g7CiAgICBpbnQgY291bnQ7CiAgICBjYWRkcl90IGRhdGE7Cn07CgoK CnN0cnVjdCBjb2RhX2ZzeW5jX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZp Y2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX2ZzeW5jX291dCB7CiAgICBzdHJ1Y3QgY29kYV9v dXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV92Z2V0X2luIHsKICAgIHN0cnVjdCBjb2RhX2lu X2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3ZnZXRfb3V0IHsKICAg IHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgdnR5cGU7 Cn07CiMgNTkyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4 L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwpzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHsK ICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9jcmVkIGNyZWQ7Cn07 CgoKCnN0cnVjdCBjb2RhX3phcGZpbGVfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7 CiAgICBWaWNlRmlkIENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3phcGRpcl9vdXQgewogICAg c3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0 IGNvZGFfemFwdm5vZGVfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1 Y3QgY29kYV9jcmVkIGNyZWQ7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3B1 cmdlZmlkX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2Rh RmlkOwp9OwoKCgpzdHJ1Y3QgY29kYV9yZXBsYWNlX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRf aGRyIG9oOwogICAgVmljZUZpZCBOZXdGaWQ7CiAgICBWaWNlRmlkIE9sZEZpZDsKfTsKCgpzdHJ1 Y3QgY29kYV9vcGVuX2J5X2ZkX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZp Y2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0 IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBpbnQgZmQ7Cn07CgoKc3RydWN0IGNv ZGFfb3Blbl9ieV9wYXRoX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VG aWQgVkZpZDsKICAgIGludCBmbGFnczsKfTsKCnN0cnVjdCBjb2RhX29wZW5fYnlfcGF0aF9vdXQg ewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgICAgICBpbnQgcGF0aDsKfTsKCgpzdHJ1 Y3QgY29kYV9zdGF0ZnNfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGluOwp9OwoKc3RydWN0 IGNvZGFfc3RhdGZzX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgc3RydWN0 IGNvZGFfc3RhdGZzIHN0YXQ7Cn07CiMgNjc1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2NvZGEuaCIgMwp1bmlvbiBpbnB1 dEFyZ3MgewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgc3RydWN0IGNvZGFfb3Blbl9p biBjb2RhX29wZW47CiAgICBzdHJ1Y3QgY29kYV9jbG9zZV9pbiBjb2RhX2Nsb3NlOwogICAgc3Ry dWN0IGNvZGFfaW9jdGxfaW4gY29kYV9pb2N0bDsKICAgIHN0cnVjdCBjb2RhX2dldGF0dHJfaW4g Y29kYV9nZXRhdHRyOwogICAgc3RydWN0IGNvZGFfc2V0YXR0cl9pbiBjb2RhX3NldGF0dHI7CiAg ICBzdHJ1Y3QgY29kYV9hY2Nlc3NfaW4gY29kYV9hY2Nlc3M7CiAgICBzdHJ1Y3QgY29kYV9sb29r dXBfaW4gY29kYV9sb29rdXA7CiAgICBzdHJ1Y3QgY29kYV9jcmVhdGVfaW4gY29kYV9jcmVhdGU7 CiAgICBzdHJ1Y3QgY29kYV9yZW1vdmVfaW4gY29kYV9yZW1vdmU7CiAgICBzdHJ1Y3QgY29kYV9s aW5rX2luIGNvZGFfbGluazsKICAgIHN0cnVjdCBjb2RhX3JlbmFtZV9pbiBjb2RhX3JlbmFtZTsK ICAgIHN0cnVjdCBjb2RhX21rZGlyX2luIGNvZGFfbWtkaXI7CiAgICBzdHJ1Y3QgY29kYV9ybWRp cl9pbiBjb2RhX3JtZGlyOwogICAgc3RydWN0IGNvZGFfc3ltbGlua19pbiBjb2RhX3N5bWxpbms7 CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19pbiBjb2RhX3JlYWRsaW5rOwogICAgc3RydWN0IGNv ZGFfZnN5bmNfaW4gY29kYV9mc3luYzsKICAgIHN0cnVjdCBjb2RhX3ZnZXRfaW4gY29kYV92Z2V0 OwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9pbiBjb2RhX29wZW5fYnlfZmQ7CiAgICBzdHJ1 Y3QgY29kYV9vcGVuX2J5X3BhdGhfaW4gY29kYV9vcGVuX2J5X3BhdGg7CiAgICBzdHJ1Y3QgY29k YV9zdGF0ZnNfaW4gY29kYV9zdGF0ZnM7Cn07Cgp1bmlvbiBvdXRwdXRBcmdzIHsKICAgIHN0cnVj dCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9yb290X291dCBjb2RhX3Jvb3Q7CiAg ICBzdHJ1Y3QgY29kYV9vcGVuX291dCBjb2RhX29wZW47CiAgICBzdHJ1Y3QgY29kYV9pb2N0bF9v dXQgY29kYV9pb2N0bDsKICAgIHN0cnVjdCBjb2RhX2dldGF0dHJfb3V0IGNvZGFfZ2V0YXR0cjsK ICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9vdXQgY29kYV9sb29rdXA7CiAgICBzdHJ1Y3QgY29kYV9j cmVhdGVfb3V0IGNvZGFfY3JlYXRlOwogICAgc3RydWN0IGNvZGFfbWtkaXJfb3V0IGNvZGFfbWtk aXI7CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19vdXQgY29kYV9yZWFkbGluazsKICAgIHN0cnVj dCBjb2RhX3ZnZXRfb3V0IGNvZGFfdmdldDsKICAgIHN0cnVjdCBjb2RhX3B1cmdldXNlcl9vdXQg Y29kYV9wdXJnZXVzZXI7CiAgICBzdHJ1Y3QgY29kYV96YXBmaWxlX291dCBjb2RhX3phcGZpbGU7 CiAgICBzdHJ1Y3QgY29kYV96YXBkaXJfb3V0IGNvZGFfemFwZGlyOwogICAgc3RydWN0IGNvZGFf emFwdm5vZGVfb3V0IGNvZGFfemFwdm5vZGU7CiAgICBzdHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQg Y29kYV9wdXJnZWZpZDsKICAgIHN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IGNvZGFfcmVwbGFjZTsK ICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0IGNvZGFfb3Blbl9ieV9mZDsKICAgIHN0cnVj dCBjb2RhX29wZW5fYnlfcGF0aF9vdXQgY29kYV9vcGVuX2J5X3BhdGg7CiAgICBzdHJ1Y3QgY29k YV9zdGF0ZnNfb3V0IGNvZGFfc3RhdGZzOwp9OwoKdW5pb24gY29kYV9kb3duY2FsbHMgewoKCiAg ICBzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHB1cmdldXNlcjsKICAgIHN0cnVjdCBjb2RhX3ph cGZpbGVfb3V0IHphcGZpbGU7CiAgICBzdHJ1Y3QgY29kYV96YXBkaXJfb3V0IHphcGRpcjsKICAg IHN0cnVjdCBjb2RhX3phcHZub2RlX291dCB6YXB2bm9kZTsKICAgIHN0cnVjdCBjb2RhX3B1cmdl ZmlkX291dCBwdXJnZWZpZDsKICAgIHN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IHJlcGxhY2U7Cn07 CgoKCgoKCgpzdHJ1Y3QgVmljZUlvY3RsIHsKICAgICAgICBjYWRkcl90IGluLCBvdXQ7CiAgICAg ICAgc2hvcnQgaW5fc2l6ZTsKICAgICAgICBzaG9ydCBvdXRfc2l6ZTsKfTsKCnN0cnVjdCBQaW9j dGxEYXRhIHsKICAgICAgICBjb25zdCBjaGFyICpwYXRoOwogICAgICAgIGludCBmb2xsb3c7CiAg ICAgICAgc3RydWN0IFZpY2VJb2N0bCB2aTsKfTsKIyA3NjcgIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvY29kYS5oIiAzCnN0 cnVjdCBjb2RhX21vdW50X2RhdGEgewogICAgICAgIGludCB2ZXJzaW9uOwogICAgICAgIGludCBm ZDsKfTsKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51 eC9zeXMtaW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIgMiAzCgoKCgoKc3RydWN0IGNvZGFfaW5v ZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IFZpY2VGaWQgY19maWQ7CiAgICAgICAgdV9zaG9ydCBj X2ZsYWdzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgY192b2xyb290bGlzdDsKICAgICAgICBz dHJ1Y3QgbGlzdF9oZWFkIGNfY2lsaXN0OwogICAgICAgIHN0cnVjdCBpbm9kZSAqY192bm9kZTsK ICAgICAgICB1bnNpZ25lZCBpbnQgY19jb250Y291bnQ7CiAgICAgICAgc3RydWN0IGNvZGFfY3Jl ZCBjX2NhY2hlZF9jcmVkOwogICAgICAgIHVuc2lnbmVkIGludCBjX2NhY2hlZF9wZXJtOwogICAg ICAgIGludCBjX21hZ2ljOwp9OwoKCgoKCgoKaW50IGNvZGFfY25vZGVfbWFrZShzdHJ1Y3QgaW5v ZGUgKiosIHN0cnVjdCBWaWNlRmlkICosIHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKaW50IGNvZGFf Y25vZGVfbWFrZWN0bChzdHJ1Y3QgaW5vZGUgKippbm9kZSwgc3RydWN0IHN1cGVyX2Jsb2NrICpz Yik7CnN0cnVjdCBpbm9kZSAqY29kYV9maWRfdG9faW5vZGUoVmljZUZpZCAqZmlkLCBzdHJ1Y3Qg c3VwZXJfYmxvY2sgKnNiKTsKdm9pZCBjb2RhX3JlcGxhY2VfZmlkKHN0cnVjdCBpbm9kZSAqLCBW aWNlRmlkICosIFZpY2VGaWQgKik7CiMgMjkzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQv ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu dXgvcm9tZnNfZnNfaS5oIiAxIDMKCgoKCgpzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyB7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBpX21ldGFzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kYXRh b2Zmc2V0Owp9OwojIDI5NCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBj LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NobWVtX2Zz LmgiIDEgMwojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NobWVtX2ZzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogICAg ICAgIHVuc2lnbmVkIGxvbmcgdmFsOwp9IHN3cF9lbnRyeV90OwoKc3RydWN0IHNobWVtX2lub2Rl X2luZm8gewogICAgICAgIHNwaW5sb2NrX3QgbG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIG1h eF9pbmRleDsKICAgICAgICBzd3BfZW50cnlfdCBpX2RpcmVjdFsxNl07CiAgICAgICAgc3dwX2Vu dHJ5X3QgKippX2luZGlyZWN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3dhcHBlZDsKICAgICAg ICBpbnQgbG9ja2VkOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKfTsKCnN0cnVjdCBz aG1lbV9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heF9ibG9ja3M7CiAgICAgICAg dW5zaWduZWQgbG9uZyBmcmVlX2Jsb2NrczsKICAgICAgICB1bnNpZ25lZCBsb25nIG1heF9pbm9k ZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmcmVlX2lub2RlczsKICAgICAgICBzcGlubG9ja190 IHN0YXRfbG9jazsKfTsKIyAyOTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbWJf ZnNfaS5oIiAxIDMKIyAxOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbWJfZnNfaS5oIiAzCnN0cnVjdCBzbWJfaW5vZGVf aW5mbyB7CgoKCgoKICAgICAgICB1bnNpZ25lZCBpbnQgb3BlbjsKICAgICAgICBfX3UxNiBmaWxl aWQ7CiAgICAgICAgX191MTYgYXR0cjsKCiAgICAgICAgX191MTYgYWNjZXNzOwogICAgICAgIF9f dTE2IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2xkbXRpbWU7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBjbG9zZWQ7CiAgICAgICAgdW5zaWduZWQgb3BlbmVyczsKfTsKIyAyOTYgIi9vcHQv ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu dXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9oZnNfZnNfaS5oIiAxIDMKIyAxOSAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9o ZnNfZnNfaS5oIiAzCnN0cnVjdCBoZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgaW50IG1hZ2ljOwoK ICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAgIHN0cnVjdCBoZnNfY2F0 X2VudHJ5ICplbnRyeTsKCgogICAgICAgIHN0cnVjdCBoZnNfZm9yayAqZm9yazsKICAgICAgICBp bnQgY29udmVydDsKCgogICAgICAgIGlub190IGZpbGVfdHlwZTsKICAgICAgICBjaGFyIGRpcl9z aXplOwoKCiAgICAgICAgY29uc3Qgc3RydWN0IGhmc19oZHJfbGF5b3V0ICpkZWZhdWx0X2xheW91 dDsKICAgICAgICBzdHJ1Y3QgaGZzX2hkcl9sYXlvdXQgKmxheW91dDsKCgogICAgICAgIGludCB0 el9zZWNvbmRzd2VzdDsKCgogICAgICAgIHZvaWQgKCpkX2Ryb3Bfb3ApKHN0cnVjdCBkZW50cnkg KiwgY29uc3QgaW5vX3QpOwp9OwojIDI5NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4 L2FkZnNfZnNfaS5oIiAxIDMKIyAxMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9hZGZzX2ZzX2kuaCIgMwpzdHJ1Y3QgYWRm c19pbm9kZV9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwogICAgICAg IHVuc2lnbmVkIGxvbmcgcGFyZW50X2lkOwogICAgICAgIF9fdTMyIGxvYWRhZGRyOwogICAgICAg IF9fdTMyIGV4ZWNhZGRyOwogICAgICAgIHVuc2lnbmVkIGludCBmaWxldHlwZTsKICAgICAgICB1 bnNpZ25lZCBpbnQgYXR0cjsKICAgICAgICBpbnQgc3RhbXBlZDoxOwp9OwojIDI5OCAiL29wdC9m c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51 eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAxIDMKIyAxNCAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9x bng0X2ZzX2kuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcW54dHlwZXMuaCIgMSAzCiMgMTUgIi9vcHQvZnNw L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv cW54dHlwZXMuaCIgMwp0eXBlZGVmIF9fdTE2IHFueDRfbnh0bnRfdDsKdHlwZWRlZiBfX3U4IHFu eDRfZnR5cGVfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBfX3UzMiB4dG50X2JsazsKICAg ICAgICBfX3UzMiB4dG50X3NpemU7Cn0gcW54NF94dG50X3Q7Cgp0eXBlZGVmIF9fdTE2IHFueDRf bW9kZV90Owp0eXBlZGVmIF9fdTE2IHFueDRfbXVpZF90Owp0eXBlZGVmIF9fdTE2IHFueDRfbWdp ZF90Owp0eXBlZGVmIF9fdTMyIHFueDRfb2ZmX3Q7CnR5cGVkZWYgX191MTYgcW54NF9ubGlua190 OwojIDE1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5oIiAyIDMKCgoKCnN0cnVjdCBxbng0X2lub2RlX2lu Zm8gewogICAgICAgIGNoYXIgaV9yZXNlcnZlZFsxNl07CiAgICAgICAgcW54NF9vZmZfdCBpX3Np emU7CiAgICAgICAgcW54NF94dG50X3QgaV9maXJzdF94dG50OwogICAgICAgIF9fdTMyIGlfeGJs azsKICAgICAgICBfX3MzMiBpX2Z0aW1lOwogICAgICAgIF9fczMyIGlfbXRpbWU7CiAgICAgICAg X19zMzIgaV9hdGltZTsKICAgICAgICBfX3MzMiBpX2N0aW1lOwogICAgICAgIHFueDRfbnh0bnRf dCBpX251bV94dG50czsKICAgICAgICBxbng0X21vZGVfdCBpX21vZGU7CiAgICAgICAgcW54NF9t dWlkX3QgaV91aWQ7CiAgICAgICAgcW54NF9tZ2lkX3QgaV9naWQ7CiAgICAgICAgcW54NF9ubGlu a190IGlfbmxpbms7CiAgICAgICAgX191OCBpX3plcm9bNF07CiAgICAgICAgcW54NF9mdHlwZV90 IGlfdHlwZTsKICAgICAgICBfX3U4IGlfc3RhdHVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11 X3ByaXZhdGU7Cn07CiMgMjk5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcmVpc2Vy ZnNfZnNfaS5oIiAxIDMKCgoKCgoKc3RydWN0IHJlaXNlcmZzX3BhZ2VfbGlzdCA7CgpzdHJ1Y3Qg cmVpc2VyZnNfaW5vZGVfaW5mbyB7CiAgX191MzIgaV9rZXkgWzRdOwoKCgoKCgogIGludCBpX3Zl cnNpb247CgogIGludCBpX3BhY2tfb25fY2xvc2UgOwoKICBfX3UzMiBpX2ZpcnN0X2RpcmVjdF9i eXRlOwoKCgoKCgoKICBzdHJ1Y3QgcmVpc2VyZnNfcGFnZV9saXN0ICppX2NvbnZlcnRlZF9wYWdl IDsKCgoKCgoKICBpbnQgaV9jb252ZXJzaW9uX3RyYW5zX2lkIDsKIyA1MyAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9yZWlz ZXJmc19mc19pLmgiIDMKICBpbnQgaV9wcmVhbGxvY19ibG9jazsKICBpbnQgaV9wcmVhbGxvY19j b3VudDsKCgoKCiAgaW50IG5vcGFjazsKfTsKIyAzMDAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9saW51eC9iZnNfZnNfaS5oIiAxIDMKIyAxMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIiAzCnN0cnVj dCBiZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Rza19pbm87CiAgICAg ICAgdW5zaWduZWQgbG9uZyBpX3NibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIGlfZWJsb2Nr Owp9OwojIDMwMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51 eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgiIDEg MwojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L3VkZl9mc19pLmgiIDMKdHlwZWRlZiBzdHJ1Y3QKewogICAgICAgIF9f dTMyIGxvZ2ljYWxCbG9ja051bTsKICAgICAgICBfX3UxNiBwYXJ0aXRpb25SZWZlcmVuY2VOdW07 Cn0gbGJfYWRkcjsKCgpzdHJ1Y3QgdWRmX2lub2RlX2luZm8KewogICAgICAgIGxvbmcgaV91YXRp bWU7CiAgICAgICAgbG9uZyBpX3VtdGltZTsKICAgICAgICBsb25nIGlfdWN0aW1lOwoKICAgICAg ICBsYl9hZGRyIGlfbG9jYXRpb247CiAgICAgICAgX191NjQgaV91bmlxdWU7CiAgICAgICAgX191 MzIgaV9sZW5FQXR0cjsKICAgICAgICBfX3UzMiBpX2xlbkFsbG9jOwogICAgICAgIF9fdTMyIGlf bmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAg ICB1bnNpZ25lZCBpX2FsbG9jX3R5cGUgOiAzOwogICAgICAgIHVuc2lnbmVkIGlfZXh0ZW5kZWRf ZmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfc3RyYXRfNDA5NiA6IDE7CiAgICAgICAgdW5zaWdu ZWQgaV9uZXdfaW5vZGUgOiAxOwogICAgICAgIHVuc2lnbmVkIHJlc2VydmVkIDogMjY7Cn07CiMg MzAyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p bmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmNwX2ZzX2kuaCIgMSAzCiMgMTcg Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1 ZGUvbGludXgvbmNwX2ZzX2kuaCIgMwpzdHJ1Y3QgbmNwX2lub2RlX2luZm8gewogICAgICAgIF9f dTMyIGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBEb3NE aXJOdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgdm9sTnVtYmVyIF9f YXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG53YXR0cjsKICAgICAgICBzdHJ1 Y3Qgc2VtYXBob3JlIG9wZW5fc2VtOwogICAgICAgIGF0b21pY190IG9wZW5lZDsKICAgICAgICBp bnQgYWNjZXNzOwogICAgICAgIF9fdTMyIHNlcnZlcl9maWxlX2hhbmRsZSBfX2F0dHJpYnV0ZV9f KChwYWNrZWQpKTsKICAgICAgICBfX3U4IG9wZW5fY3JlYXRlX2FjdGlvbiBfX2F0dHJpYnV0ZV9f KChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZpbGVfaGFuZGxlWzZdIF9fYXR0cmlidXRlX18oKHBh Y2tlZCkpOwp9OwojIDMwMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBj LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Byb2NfZnNf aS5oIiAxIDMKc3RydWN0IHByb2NfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IHRhc2tfc3Ry dWN0ICp0YXNrOwogICAgICAgIGludCB0eXBlOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAg ICAgIGludCAoKnByb2NfZ2V0X2xpbmspKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICoq LCBzdHJ1Y3QgdmZzbW91bnQgKiopOwogICAgICAgICAgICAgICAgaW50ICgqcHJvY19yZWFkKShz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGNoYXIgKnBhZ2UpOwogICAgICAgIH0gb3A7CiAgICAg ICAgc3RydWN0IGZpbGUgKmZpbGU7Cn07CiMgMzA0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9v cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv bGludXgvdXNiZGV2X2ZzX2kuaCIgMSAzCnN0cnVjdCB1c2JfZGV2aWNlOwpzdHJ1Y3QgdXNiX2J1 czsKCnN0cnVjdCB1c2JkZXZfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBk bGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNsaXN0OwogICAgICAgIHVuaW9uIHsKICAg ICAgICAgICAgICAgIHN0cnVjdCB1c2JfZGV2aWNlICpkZXY7CiAgICAgICAgICAgICAgICBzdHJ1 Y3QgdXNiX2J1cyAqYnVzOwogICAgICAgIH0gcDsKfTsKIyAzMDUgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAz CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9saW51eC9qZmZzMl9mc19pLmgiIDEgMwoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1w Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC92ZXJzaW9u LmgiIDEgMwojIDcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvbGludXgvamZmczJfZnNfaS5oIiAyIDMKCnN0cnVjdCBqZmZzMl9pbm9k ZV9pbmZvIHsKCgoKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCgogICAgICAgIHVp bnQzMl90IGhpZ2hlc3RfdmVyc2lvbjsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9ub2RlX2ZyYWcg KmZyYWdsaXN0OwoKCgoKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rub2RlICptZXRhZGF0 YTsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9mdWxsX2RpcmVudCAqZGVudHM7CgoKICAgICAgICBz dHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlOwoKICAgICAgICB1aW50MTZfdCBmbGFn czsKICAgICAgICB1aW50OF90IHVzZXJjb21wcjsKCgoKfTsKIyAzMDYgIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIg MiAzCiMgMzMyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4 L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDMKc3RydWN0IGlhdHRyIHsKICAgICAgICB1bnNpZ25l ZCBpbnQgaWFfdmFsaWQ7CiAgICAgICAgdW1vZGVfdCBpYV9tb2RlOwogICAgICAgIHVpZF90IGlh X3VpZDsKICAgICAgICBnaWRfdCBpYV9naWQ7CiAgICAgICAgbG9mZl90IGlhX3NpemU7CiAgICAg ICAgdGltZV90IGlhX2F0aW1lOwogICAgICAgIHRpbWVfdCBpYV9tdGltZTsKICAgICAgICB0aW1l X3QgaWFfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgaW50IGlhX2F0dHJfZmxhZ3M7Cn07CiMgMzU2 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2xpbnV4L2ZzLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3F1b3RhLmgiIDEgMwojIDQyICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4 L3F1b3RhLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEgMwoKCgojIDEgIi9vcHQvZnNwL2k1 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2Vycm5v LmgiIDEgMwojIDUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvbGludXgvZXJybm8uaCIgMiAzCiMgNDMgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcXVvdGEuaCIg MiAzCiMgODQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvcXVvdGEuaCIgMwpleHRlcm4gaW50IG5yX2RxdW90cywgbnJfZnJl ZV9kcXVvdHM7CmV4dGVybiBpbnQgbWF4X2RxdW90czsKZXh0ZXJuIGludCBkcXVvdF9yb290X3Nx dWFzaDsKIyAxMTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvbGludXgvcXVvdGEuaCIgMwpzdHJ1Y3QgZHFibGsgewogICAgICAgIF9f dTMyIGRxYl9iaGFyZGxpbWl0OwogICAgICAgIF9fdTMyIGRxYl9ic29mdGxpbWl0OwogICAgICAg IF9fdTMyIGRxYl9jdXJibG9ja3M7CiAgICAgICAgX191MzIgZHFiX2loYXJkbGltaXQ7CiAgICAg ICAgX191MzIgZHFiX2lzb2Z0bGltaXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmlub2RlczsKICAg ICAgICB0aW1lX3QgZHFiX2J0aW1lOwogICAgICAgIHRpbWVfdCBkcWJfaXRpbWU7Cn07CiMgMTQx ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2xpbnV4L3F1b3RhLmgiIDMKc3RydWN0IGRxc3RhdHMgewogICAgICAgIF9fdTMyIGxvb2t1 cHM7CiAgICAgICAgX191MzIgZHJvcHM7CiAgICAgICAgX191MzIgcmVhZHM7CiAgICAgICAgX191 MzIgd3JpdGVzOwogICAgICAgIF9fdTMyIGNhY2hlX2hpdHM7CiAgICAgICAgX191MzIgYWxsb2Nh dGVkX2RxdW90czsKICAgICAgICBfX3UzMiBmcmVlX2RxdW90czsKICAgICAgICBfX3UzMiBzeW5j czsKfTsKIyAxNjcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvbGludXgvcXVvdGEuaCIgMwpzdHJ1Y3QgZHF1b3QgewogICAgICAgIHN0 cnVjdCBkcXVvdCAqZHFfbmV4dDsKICAgICAgICBzdHJ1Y3QgZHF1b3QgKipkcV9wcHJldjsKICAg ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRxX2ZyZWU7CiAgICAgICAgc3RydWN0IGRxdW90ICpkcV9o YXNoX25leHQ7CiAgICAgICAgc3RydWN0IGRxdW90ICoqZHFfaGFzaF9wcHJldjsKICAgICAgICB3 YWl0X3F1ZXVlX2hlYWRfdCBkcV93YWl0OwogICAgICAgIGludCBkcV9jb3VudDsKCgogICAgICAg IHN0cnVjdCBzdXBlcl9ibG9jayAqZHFfc2I7CiAgICAgICAgdW5zaWduZWQgaW50IGRxX2lkOwog ICAgICAgIGtkZXZfdCBkcV9kZXY7CiAgICAgICAgc2hvcnQgZHFfdHlwZTsKICAgICAgICBzaG9y dCBkcV9mbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGRxX3JlZmVyZW5jZWQ7CgogICAgICAg IHN0cnVjdCBkcWJsayBkcV9kcWI7Cn07CiMgMzU3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwoKCgoKCnN0 cnVjdCBwYWdlOwpzdHJ1Y3QgYWRkcmVzc19zcGFjZTsKCnN0cnVjdCBhZGRyZXNzX3NwYWNlX29w ZXJhdGlvbnMgewogICAgICAgIGludCAoKndyaXRlcGFnZSkoc3RydWN0IHBhZ2UgKik7CiAgICAg ICAgaW50ICgqcmVhZHBhZ2UpKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICopOwogICAgICAg IGludCAoKnN5bmNfcGFnZSkoc3RydWN0IHBhZ2UgKik7CiAgICAgICAgaW50ICgqcHJlcGFyZV93 cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsK ICAgICAgICBpbnQgKCpjb21taXRfd3JpdGUpKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICos IHVuc2lnbmVkLCB1bnNpZ25lZCk7CgogICAgICAgIGludCAoKmJtYXApKHN0cnVjdCBhZGRyZXNz X3NwYWNlICosIGxvbmcpOwp9OwoKc3RydWN0IGFkZHJlc3Nfc3BhY2UgewogICAgICAgIHN0cnVj dCBsaXN0X2hlYWQgY2xlYW5fcGFnZXM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkaXJ0eV9w YWdlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxvY2tlZF9wYWdlczsKICAgICAgICB1bnNp Z25lZCBsb25nIG5ycGFnZXM7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2Vfb3BlcmF0aW9u cyAqYV9vcHM7CiAgICAgICAgc3RydWN0IGlub2RlICpob3N0OwogICAgICAgIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqaV9tbWFwOwogICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqaV9tbWFw X3NoYXJlZDsKICAgICAgICBzcGlubG9ja190IGlfc2hhcmVkX2xvY2s7Cn07CgpzdHJ1Y3QgYmxv Y2tfZGV2aWNlIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2hhc2g7CiAgICAgICAgYXRv bWljX3QgYmRfY291bnQ7CgogICAgICAgIGRldl90IGJkX2RldjsKICAgICAgICBhdG9taWNfdCBi ZF9vcGVuZXJzOwogICAgICAgIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyAq YmRfb3A7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBiZF9zZW07Cn07CgpzdHJ1Y3QgaW5vZGUg ewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9oYXNoOwogICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgaV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaV9kZW50cnk7CgogICAgICAgIHN0 cnVjdCBsaXN0X2hlYWQgaV9kaXJ0eV9idWZmZXJzOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGlf aW5vOwogICAgICAgIGF0b21pY190IGlfY291bnQ7CiAgICAgICAga2Rldl90IGlfZGV2OwogICAg ICAgIHVtb2RlX3QgaV9tb2RlOwogICAgICAgIG5saW5rX3QgaV9ubGluazsKICAgICAgICB1aWRf dCBpX3VpZDsKICAgICAgICBnaWRfdCBpX2dpZDsKICAgICAgICBrZGV2X3QgaV9yZGV2OwogICAg ICAgIGxvZmZfdCBpX3NpemU7CiAgICAgICAgdGltZV90IGlfYXRpbWU7CiAgICAgICAgdGltZV90 IGlfbXRpbWU7CiAgICAgICAgdGltZV90IGlfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBp X2Jsa3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Jsb2NrczsKICAgICAgICB1bnNpZ25l ZCBsb25nIGlfdmVyc2lvbjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfc2VtOwogICAgICAg IHN0cnVjdCBzZW1hcGhvcmUgaV96b21iaWU7CiAgICAgICAgc3RydWN0IGlub2RlX29wZXJhdGlv bnMgKmlfb3A7CiAgICAgICAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqaV9mb3A7CiAgICAgICAg c3RydWN0IHN1cGVyX2Jsb2NrICppX3NiOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGlfd2Fp dDsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2NrICppX2Zsb2NrOwogICAgICAgIHN0cnVjdCBhZGRy ZXNzX3NwYWNlICppX21hcHBpbmc7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgaV9kYXRh OwogICAgICAgIHN0cnVjdCBkcXVvdCAqaV9kcXVvdFsyXTsKICAgICAgICBzdHJ1Y3QgcGlwZV9p bm9kZV9pbmZvICppX3BpcGU7CiAgICAgICAgc3RydWN0IGJsb2NrX2RldmljZSAqaV9iZGV2OwoK ICAgICAgICB1bnNpZ25lZCBsb25nIGlfZG5vdGlmeV9tYXNrOwogICAgICAgIHN0cnVjdCBkbm90 aWZ5X3N0cnVjdCAqaV9kbm90aWZ5OwoKICAgICAgICB1bnNpZ25lZCBsb25nIGlfc3RhdGU7Cgog ICAgICAgIHVuc2lnbmVkIGludCBpX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaV9zb2Nr OwoKICAgICAgICBhdG9taWNfdCBpX3dyaXRlY291bnQ7CiAgICAgICAgdW5zaWduZWQgaW50IGlf YXR0cl9mbGFnczsKICAgICAgICBfX3UzMiBpX2dlbmVyYXRpb247CiAgICAgICAgdW5pb24gewog ICAgICAgICAgICAgICAgc3RydWN0IG1pbml4X2lub2RlX2luZm8gbWluaXhfaTsKICAgICAgICAg ICAgICAgIHN0cnVjdCBleHQyX2lub2RlX2luZm8gZXh0Ml9pOwogICAgICAgICAgICAgICAgc3Ry dWN0IGhwZnNfaW5vZGVfaW5mbyBocGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgbnRmc19p bm9kZV9pbmZvIG50ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBtc2Rvc19pbm9kZV9pbmZv IG1zZG9zX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdW1zZG9zX2lub2RlX2luZm8gdW1zZG9z X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXNvX2lub2RlX2luZm8gaXNvZnNfaTsKICAgICAg ICAgICAgICAgIHN0cnVjdCBuZnNfaW5vZGVfaW5mbyBuZnNfaTsKICAgICAgICAgICAgICAgIHN0 cnVjdCBzeXN2X2lub2RlX2luZm8gc3lzdl9pOwogICAgICAgICAgICAgICAgc3RydWN0IGFmZnNf aW5vZGVfaW5mbyBhZmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWZzX2lub2RlX2luZm8g dWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZWZzX2lub2RlX2luZm8gZWZzX2k7CiAgICAg ICAgICAgICAgICBzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyByb21mc19pOwogICAgICAgICAgICAg ICAgc3RydWN0IHNobWVtX2lub2RlX2luZm8gc2htZW1faTsKICAgICAgICAgICAgICAgIHN0cnVj dCBjb2RhX2lub2RlX2luZm8gY29kYV9pOwogICAgICAgICAgICAgICAgc3RydWN0IHNtYl9pbm9k ZV9pbmZvIHNtYmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaGZzX2lub2RlX2luZm8gaGZz X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYWRmc19pbm9kZV9pbmZvIGFkZnNfaTsKICAgICAg ICAgICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2luZm8gcW54NF9pOwogICAgICAgICAgICAgICAg c3RydWN0IHJlaXNlcmZzX2lub2RlX2luZm8gcmVpc2VyZnNfaTsKICAgICAgICAgICAgICAgIHN0 cnVjdCBiZnNfaW5vZGVfaW5mbyBiZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfaW5v ZGVfaW5mbyB1ZGZfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBuY3BfaW5vZGVfaW5mbyBuY3Bm c19pOwogICAgICAgICAgICAgICAgc3RydWN0IHByb2NfaW5vZGVfaW5mbyBwcm9jX2k7CiAgICAg ICAgICAgICAgICBzdHJ1Y3Qgc29ja2V0IHNvY2tldF9pOwogICAgICAgICAgICAgICAgc3RydWN0 IHVzYmRldl9pbm9kZV9pbmZvIHVzYmRldl9pOwogICAgICAgICAgICAgICAgc3RydWN0IGpmZnMy X2lub2RlX2luZm8gamZmczJfaTsKICAgICAgICAgICAgICAgIHZvaWQgKmdlbmVyaWNfaXA7CiAg ICAgICAgfSB1Owp9OwoKc3RydWN0IGZvd25fc3RydWN0IHsKICAgICAgICBpbnQgcGlkOwogICAg ICAgIHVpZF90IHVpZCwgZXVpZDsKICAgICAgICBpbnQgc2lnbnVtOwp9OwoKc3RydWN0IGZpbGUg ewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZl9saXN0OwogICAgICAgIHN0cnVjdCBkZW50cnkg KmZfZGVudHJ5OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqZl92ZnNtbnQ7CiAgICAgICAgc3Ry dWN0IGZpbGVfb3BlcmF0aW9ucyAqZl9vcDsKICAgICAgICBhdG9taWNfdCBmX2NvdW50OwogICAg ICAgIHVuc2lnbmVkIGludCBmX2ZsYWdzOwogICAgICAgIG1vZGVfdCBmX21vZGU7CiAgICAgICAg bG9mZl90IGZfcG9zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9yZWFkYSwgZl9yYW1heCwgZl9y YWVuZCwgZl9yYWxlbiwgZl9yYXdpbjsKICAgICAgICBzdHJ1Y3QgZm93bl9zdHJ1Y3QgZl9vd25l cjsKICAgICAgICB1bnNpZ25lZCBpbnQgZl91aWQsIGZfZ2lkOwogICAgICAgIGludCBmX2Vycm9y OwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZfdmVyc2lvbjsKCgogICAgICAgIHZvaWQgKnByaXZh dGVfZGF0YTsKfTsKZXh0ZXJuIHNwaW5sb2NrX3QgZmlsZXNfbG9jazsKCgoKCgoKZXh0ZXJuIGlu dCBpbml0X3ByaXZhdGVfZmlsZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGludCk7 CiMgNTIzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmbF9v d25lcl90OwoKc3RydWN0IGZpbGVfbG9jayB7CiAgICAgICAgc3RydWN0IGZpbGVfbG9jayAqZmxf bmV4dDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZsX2xpbms7CiAgICAgICAgc3RydWN0IGxp c3RfaGVhZCBmbF9ibG9jazsKICAgICAgICBmbF9vd25lcl90IGZsX293bmVyOwogICAgICAgIHVu c2lnbmVkIGludCBmbF9waWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZmxfd2FpdDsKICAg ICAgICBzdHJ1Y3QgZmlsZSAqZmxfZmlsZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGZsX2ZsYWdz OwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmxfdHlwZTsKICAgICAgICBsb2ZmX3QgZmxfc3RhcnQ7 CiAgICAgICAgbG9mZl90IGZsX2VuZDsKCiAgICAgICAgdm9pZCAoKmZsX25vdGlmeSkoc3RydWN0 IGZpbGVfbG9jayAqKTsKICAgICAgICB2b2lkICgqZmxfaW5zZXJ0KShzdHJ1Y3QgZmlsZV9sb2Nr ICopOwogICAgICAgIHZvaWQgKCpmbF9yZW1vdmUpKHN0cnVjdCBmaWxlX2xvY2sgKik7CgogICAg ICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICogZmxfZmFzeW5jOwoKICAgICAgICB1bmlvbiB7CiAg ICAgICAgICAgICAgICBzdHJ1Y3QgbmZzX2xvY2tfaW5mbyBuZnNfZmw7CiAgICAgICAgfSBmbF91 Owp9OwojIDU1NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51 eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVf bG9ja19saXN0OwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZjbnRsLmgiIDEgMwoKCgojIDEgIi9vcHQvZnNwL2k1 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2ZjbnRs LmgiIDEgMwojIDc1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2FzbS9mY250bC5oIiAzCnN0cnVjdCBmbG9jayB7CiAgICAgICAgc2hv cnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAgICAgIG9mZl90IGxfc3RhcnQ7 CiAgICAgICAgb2ZmX3QgbF9sZW47CiAgICAgICAgcGlkX3QgbF9waWQ7Cn07CgpzdHJ1Y3QgZmxv Y2s2NCB7CiAgICAgICAgc2hvcnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAg ICAgIGxvZmZfdCBsX3N0YXJ0OwogICAgICAgIGxvZmZfdCBsX2xlbjsKICAgICAgICBwaWRfdCBs X3BpZDsKfTsKIyA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZjbnRsLmgiIDIgMwojIDU1OSAiL29wdC9mc3AvaTU4Ni1w Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAy IDMKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGsodW5zaWduZWQgaW50LCBzdHJ1Y3QgZmxvY2sgKik7 CmV4dGVybiBpbnQgZmNudGxfc2V0bGsodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQsIHN0cnVj dCBmbG9jayAqKTsKCmV4dGVybiBpbnQgZmNudGxfZ2V0bGs2NCh1bnNpZ25lZCBpbnQsIHN0cnVj dCBmbG9jazY0ICopOwpleHRlcm4gaW50IGZjbnRsX3NldGxrNjQodW5zaWduZWQgaW50LCB1bnNp Z25lZCBpbnQsIHN0cnVjdCBmbG9jazY0ICopOwoKCmV4dGVybiB2b2lkIGxvY2tzX2luaXRfbG9j ayhzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBsb2Nrc19jb3B5X2xvY2soc3RydWN0 IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBsb2Nrc19yZW1v dmVfcG9zaXgoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCk7CmV4dGVybiB2b2lkIGxvY2tzX3Jl bW92ZV9mbG9jayhzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIHN0cnVjdCBmaWxlX2xvY2sgKnBvc2l4 X3Rlc3RfbG9jayhzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50 IHBvc2l4X2xvY2tfZmlsZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICosIHVuc2ln bmVkIGludCk7CmV4dGVybiB2b2lkIHBvc2l4X2Jsb2NrX2xvY2soc3RydWN0IGZpbGVfbG9jayAq LCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gdm9pZCBwb3NpeF91bmJsb2NrX2xvY2soc3Ry dWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBfX2dldF9sZWFzZShzdHJ1Y3QgaW5vZGUgKmlu b2RlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwpleHRlcm4gdGltZV90IGxlYXNlX2dldF9tdGltZShz dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja19tYXlfcmVhZChzdHJ1Y3QgaW5vZGUgKiwg bG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKZXh0ZXJuIGludCBsb2NrX21heV93 cml0ZShzdHJ1Y3QgaW5vZGUgKiwgbG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsK CnN0cnVjdCBmYXN5bmNfc3RydWN0IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgaW50IGZh X2ZkOwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYV9uZXh0OwogICAgICAgIHN0cnVj dCBmaWxlICpmYV9maWxlOwp9OwoKCgoKZXh0ZXJuIGludCBmYXN5bmNfaGVscGVyKGludCwgc3Ry dWN0IGZpbGUgKiwgaW50LCBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKik7CgpleHRlcm4gdm9pZCBr aWxsX2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKiwgaW50LCBpbnQpOwoKZXh0ZXJuIHZv aWQgX19raWxsX2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqLCBpbnQsIGludCk7CgpzdHJ1 Y3QgbmFtZWlkYXRhIHsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAgICAgICAgc3Ry dWN0IHZmc21vdW50ICptbnQ7CiAgICAgICAgc3RydWN0IHFzdHIgbGFzdDsKICAgICAgICB1bnNp Z25lZCBpbnQgZmxhZ3M7CiAgICAgICAgaW50IGxhc3RfdHlwZTsKfTsKCgoKCnN0cnVjdCBxdW90 YV9tb3VudF9vcHRpb25zCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgc3Ry dWN0IHNlbWFwaG9yZSBkcWlvX3NlbTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGRxb2ZmX3Nl bTsKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZXNbMl07CiAgICAgICAgdGltZV90IGlub2RlX2V4 cGlyZVsyXTsKICAgICAgICB0aW1lX3QgYmxvY2tfZXhwaXJlWzJdOwogICAgICAgIGNoYXIgcnNx dWFzaFsyXTsKfTsKCgoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9taW5peF9mc19zYi5oIiAxIDMKCgoKCgoK c3RydWN0IG1pbml4X3NiX2luZm8gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs b25nIHNfbmlub2RlczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX256 b25lczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ltYXBfYmxvY2tz OwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfem1hcF9ibG9ja3M7CiAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwogICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9zaXplOwogICAgICAgICAgICAg ICAgICAgICAgICBpbnQgc19kaXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19u YW1lbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19saW5rX21heDsKICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfaW1hcDsKICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfem1hcDsKICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBtaW5peF9zdXBlcl9ibG9jayAqIHNfbXM7CiAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIHNob3J0IHNfdmVyc2lvbjsKfTsKIyA2MjUgIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMg MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9saW51eC9leHQyX2ZzX3NiLmgiIDEgMwojIDMwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2V4dDJfZnNfc2IuaCIg MwpzdHJ1Y3QgZXh0Ml9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ19zaXpl OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZyYWdz X3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tzX3Blcl9ncm91cDsKICAg ICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBs b25nIHNfaXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZ2RiX2NvdW50Owog ICAgICAgIHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBs b25nIHNfZ3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfc2JoOwog ICAgICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogc19lczsKICAgICAgICBzdHJ1Y3QgYnVm ZmVyX2hlYWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbG9hZGVk X2lub2RlX2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRfYmxvY2tfYml0 bWFwczsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0bWFwX251bWJlcls4XTsKICAg ICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2lub2RlX2JpdG1hcFs4XTsKICAgICAgICB1bnNp Z25lZCBsb25nIHNfYmxvY2tfYml0bWFwX251bWJlcls4XTsKICAgICAgICBzdHJ1Y3QgYnVmZmVy X2hlYWQgKiBzX2Jsb2NrX2JpdG1hcFs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbW91bnRf b3B0OwogICAgICAgIHVpZF90IHNfcmVzdWlkOwogICAgICAgIGdpZF90IHNfcmVzZ2lkOwogICAg ICAgIHVuc2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg c19wYWQ7CiAgICAgICAgaW50IHNfYWRkcl9wZXJfYmxvY2tfYml0czsKICAgICAgICBpbnQgc19k ZXNjX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2lub2RlX3NpemU7CiAgICAgICAgaW50 IHNfZmlyc3RfaW5vOwp9OwojIDYyNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9p NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hw ZnNfZnNfc2IuaCIgMSAzCgoKCnN0cnVjdCBocGZzX3NiX2luZm8gewogICAgICAgIGlub190IHNi X3Jvb3Q7CiAgICAgICAgdW5zaWduZWQgc2JfZnNfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBzYl9i aXRtYXBzOwogICAgICAgIHVuc2lnbmVkIHNiX2RpcmJhbmRfc3RhcnQ7CiAgICAgICAgdW5zaWdu ZWQgc2JfZGlyYmFuZF9zaXplOwogICAgICAgIHVuc2lnbmVkIHNiX2RtYXA7CiAgICAgICAgdW5z aWduZWQgc2Jfbl9mcmVlOwogICAgICAgIHVuc2lnbmVkIHNiX25fZnJlZV9kbm9kZXM7CiAgICAg ICAgdWlkX3Qgc2JfdWlkOwogICAgICAgIGdpZF90IHNiX2dpZDsKICAgICAgICB1bW9kZV90IHNi X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2JfY29udiA6IDI7CiAgICAgICAgdW5zaWduZWQgc2Jf ZWFzIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9lcnIgOiAyOwogICAgICAgIHVuc2lnbmVkIHNi X2NoayA6IDI7CiAgICAgICAgdW5zaWduZWQgc2JfbG93ZXJjYXNlIDogMTsKICAgICAgICB1bnNp Z25lZCBzYl93YXNfZXJyb3IgOiAxOwogICAgICAgIHVuc2lnbmVkIHNiX2Noa2RzayA6IDI7CiAg ICAgICAgdW5zaWduZWQgc2JfcmRfZm5vZGUgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX3JkX2lu b2RlIDogMjsKCgogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHNiX2lnZXRfcTsKICAgICAgICB1 bnNpZ25lZCBjaGFyICpzYl9jcF90YWJsZTsKCgogICAgICAgIHVuc2lnbmVkICpzYl9ibXBfZGly OwogICAgICAgIHVuc2lnbmVkIHNiX2NfYml0bWFwOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90 IHNiX2NyZWF0aW9uX2RlOwoKICAgICAgICB1bnNpZ25lZCBzYl9jcmVhdGlvbl9kZV9sb2NrIDog MTsKCiAgICAgICAgaW50IHNiX3RpbWVzaGlmdDsKfTsKIyA2MjcgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAz CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9saW51eC9udGZzX2ZzX3NiLmgiIDEgMwoKCgpzdHJ1Y3QgbnRmc19zYl9pbmZvewoK ICAgICAgICBudGZzX3VpZF90IHVpZDsKICAgICAgICBudGZzX2dpZF90IGdpZDsKICAgICAgICBu dG1vZGVfdCB1bWFzazsKICAgICAgICB1bnNpZ25lZCBpbnQgbmN0OwogICAgICAgIHZvaWQgKm5s c19tYXA7CiAgICAgICAgdW5zaWduZWQgaW50IG5ndDsKCiAgICAgICAgbnRmc19zaXplX3QgcGFy dGl0aW9uX2JpYXM7CgogICAgICAgIG50ZnNfdTMyIGF0X3N0YW5kYXJkX2luZm9ybWF0aW9uOwog ICAgICAgIG50ZnNfdTMyIGF0X2F0dHJpYnV0ZV9saXN0OwogICAgICAgIG50ZnNfdTMyIGF0X2Zp bGVfbmFtZTsKICAgICAgICBudGZzX3UzMiBhdF92b2x1bWVfdmVyc2lvbjsKICAgICAgICBudGZz X3UzMiBhdF9zZWN1cml0eV9kZXNjcmlwdG9yOwogICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVtZV9u YW1lOwogICAgICAgIG50ZnNfdTMyIGF0X3ZvbHVtZV9pbmZvcm1hdGlvbjsKICAgICAgICBudGZz X3UzMiBhdF9kYXRhOwogICAgICAgIG50ZnNfdTMyIGF0X2luZGV4X3Jvb3Q7CiAgICAgICAgbnRm c191MzIgYXRfaW5kZXhfYWxsb2NhdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9iaXRtYXA7CiAg ICAgICAgbnRmc191MzIgYXRfc3ltbGluazsKCiAgICAgICAgaW50IGJsb2Nrc2l6ZTsKICAgICAg ICBpbnQgY2x1c3RlcmZhY3RvcjsKICAgICAgICBpbnQgY2x1c3RlcnNpemU7CiAgICAgICAgaW50 IG1mdF9yZWNvcmRzaXplOwogICAgICAgIGludCBtZnRfY2x1c3RlcnNfcGVyX3JlY29yZDsKICAg ICAgICBpbnQgaW5kZXhfcmVjb3Jkc2l6ZTsKICAgICAgICBpbnQgaW5kZXhfY2x1c3RlcnNfcGVy X3JlY29yZDsKICAgICAgICBpbnQgbWZ0X2NsdXN0ZXI7CgogICAgICAgIHVuc2lnbmVkIGNoYXIg Km1mdDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqdXBjYXNlOwogICAgICAgIHVuc2lnbmVkIGlu dCB1cGNhc2VfbGVuZ3RoOwoKICAgICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvICptZnRfaW5v OwogICAgICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gKm1mdG1pcnI7CiAgICAgICAgc3RydWN0 IG50ZnNfaW5vZGVfaW5mbyAqYml0bWFwOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqc2I7 Cn07CiMgNjI4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4 L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbXNkb3NfZnNfc2IuaCIg MSAzCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4 L3N5cy1pbmNsdWRlL2xpbnV4L2ZhdF9jdmYuaCIgMSAzCgoKCgoKc3RydWN0IGN2Zl9mb3JtYXQK eyBpbnQgY3ZmX3ZlcnNpb247CiAgY2hhciogY3ZmX3ZlcnNpb25fdGV4dDsKICB1bnNpZ25lZCBs b25nIGZsYWdzOwogIGludCAoKmRldGVjdF9jdmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IpOwog IGludCAoKm1vdW50X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixjaGFyKm9wdGlvbnMpOwog IGludCAoKnVubW91bnRfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsKICBzdHJ1Y3QgYnVm ZmVyX2hlYWQqICgqY3ZmX2JyZWFkKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGludCBibG9jayk7 CiAgc3RydWN0IGJ1ZmZlcl9oZWFkKiAoKmN2Zl9nZXRibGspIChzdHJ1Y3Qgc3VwZXJfYmxvY2sq c2IsaW50IGJsb2NrKTsKICB2b2lkICgqY3ZmX2JyZWxzZSkgKHN0cnVjdCBzdXBlcl9ibG9jayAq c2Isc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7CiAgdm9pZCAoKmN2Zl9tYXJrX2J1ZmZlcl9kaXJ0 eSkgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfc2V0X3VwdG9kYXRlKSAoc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYiwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZm ZXJfaGVhZCAqYmgsCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsKTsKICBpbnQgKCpj dmZfaXNfdXB0b2RhdGUpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVjdCBidWZmZXJfaGVh ZCAqYmgpOwogIHZvaWQgKCpjdmZfbGxfcndfYmxvY2spIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ByLAogICAgICAgICAgICAgICAgICAgICAg ICBpbnQgbmJyZXEsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq YmhbMzJdKTsKICBpbnQgKCpmYXRfYWNjZXNzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixpbnQg bnIsaW50IG5ld192YWx1ZSk7CiAgaW50ICgqY3ZmX3N0YXRmcykgKHN0cnVjdCBzdXBlcl9ibG9j ayAqc2Isc3RydWN0IHN0YXRmcyAqYnVmLCBpbnQgYnVmc2l6KTsKICBpbnQgKCpjdmZfYm1hcCkg KHN0cnVjdCBpbm9kZSAqaW5vZGUsaW50IGJsb2NrKTsKICBzc2l6ZV90ICgqY3ZmX2ZpbGVfcmVh ZCkgKCBzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogIHNzaXplX3Qg KCpjdmZfZmlsZV93cml0ZSkgKCBzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwg bG9mZl90ICopOwogIGludCAoKmN2Zl9tbWFwKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICopOwogIGludCAoKmN2Zl9yZWFkcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1 Y3QgcGFnZSAqKTsKICBpbnQgKCpjdmZfd3JpdGVwYWdlKSAoc3RydWN0IGlub2RlICosIHN0cnVj dCBwYWdlICopOwogIGludCAoKmN2Zl9kaXJfaW9jdGwpIChzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwg c3RydWN0IGZpbGUgKiBmaWxwLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg Y21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiAgdm9pZCAoKnplcm9fb3V0X2NsdXN0ZXIpIChzdHJ1 Y3QgaW5vZGUqLCBpbnQgY2x1c3Rlcm5yKTsKfTsKCmludCByZWdpc3Rlcl9jdmZfZm9ybWF0KHN0 cnVjdCBjdmZfZm9ybWF0KmN2Zl9mb3JtYXQpOwppbnQgdW5yZWdpc3Rlcl9jdmZfZm9ybWF0KHN0 cnVjdCBjdmZfZm9ybWF0KmN2Zl9mb3JtYXQpOwp2b2lkIGRlY19jdmZfZm9ybWF0X3VzZV9jb3Vu dF9ieV92ZXJzaW9uKGludCB2ZXJzaW9uKTsKaW50IGRldGVjdF9jdmYoc3RydWN0IHN1cGVyX2Js b2NrKnNiLGNoYXIqZm9yY2UpOwoKZXh0ZXJuIHN0cnVjdCBjdmZfZm9ybWF0ICpjdmZfZm9ybWF0 c1tdOwpleHRlcm4gaW50IGN2Zl9mb3JtYXRfdXNlX2NvdW50W107CiMgNCAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tc2Rv c19mc19zYi5oIiAyIDMKCgoKCgpzdHJ1Y3QgZmF0X21vdW50X29wdGlvbnMgewogICAgICAgIHVp ZF90IGZzX3VpZDsKICAgICAgICBnaWRfdCBmc19naWQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg ZnNfdW1hc2s7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY29kZXBhZ2U7CiAgICAgICAgY2hhciAq aW9jaGFyc2V0OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbmFtZV9jaGVjazsKICAgICAgICB1bnNp Z25lZCBjaGFyIGNvbnZlcnNpb247CiAgICAgICAgdW5zaWduZWQgcXVpZXQ6MSwKICAgICAgICAg ICAgICAgICBzaG93ZXhlYzoxLAogICAgICAgICAgICAgICAgIHN5c19pbW11dGFibGU6MSwKICAg ICAgICAgICAgICAgICBkb3RzT0s6MSwKICAgICAgICAgICAgICAgICBpc3ZmYXQ6MSwKICAgICAg ICAgICAgICAgICB1dGY4OjEsCiAgICAgICAgICAgICAgICAgdW5pY29kZV94bGF0ZToxLAogICAg ICAgICAgICAgICAgIHBvc2l4ZnM6MSwKICAgICAgICAgICAgICAgICBudW10YWlsOjEsCiAgICAg ICAgICAgICAgICAgYXRhcmk6MSwKICAgICAgICAgICAgICAgICBmYXQzMjoxLAogICAgICAgICAg ICAgICAgIG5vY2FzZToxOwp9OwoKc3RydWN0IHZmYXRfdW5pY29kZSB7CiAgICAgICAgdW5zaWdu ZWQgY2hhciB1bmkxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgdW5pMjsKfTsKCnN0cnVjdCBtc2Rv c19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjbHVzdGVyX3NpemU7CiAgICAgICAg dW5zaWduZWQgc2hvcnQgY2x1c3Rlcl9iaXRzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmF0cyxm YXRfYml0czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBmYXRfc3RhcnQ7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBmYXRfbGVuZ3RoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGlyX3N0YXJ0OwogICAg ICAgIHVuc2lnbmVkIHNob3J0IGRpcl9lbnRyaWVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0 YV9zdGFydDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNsdXN0ZXJzOwogICAgICAgIHVuc2lnbmVk IGxvbmcgcm9vdF9jbHVzdGVyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnNpbmZvX29mZnNldDsK ICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBmYXRfd2FpdDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBo b3JlIGZhdF9sb2NrOwogICAgICAgIGludCBwcmV2X2ZyZWU7CiAgICAgICAgaW50IGZyZWVfY2x1 c3RlcnM7CiAgICAgICAgc3RydWN0IGZhdF9tb3VudF9vcHRpb25zIG9wdGlvbnM7CiAgICAgICAg c3RydWN0IG5sc190YWJsZSAqbmxzX2Rpc2s7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbmxz X2lvOwogICAgICAgIHN0cnVjdCBjdmZfZm9ybWF0KiBjdmZfZm9ybWF0OwogICAgICAgIHZvaWQg KmRpcl9vcHM7CiAgICAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhOwp9OwojIDYyOSAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9m cy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lzb19mc19zYi5oIiAxIDMKCgoKCgoKc3RydWN0IGlzb2Zz X3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19uaW5vZGVzOwogICAgICAgIHVuc2ln bmVkIGxvbmcgc19uem9uZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZpcnN0ZGF0YXpvbmU7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2xvZ196b25lX3NpemU7CiAgICAgICAgdW5zaWduZWQg bG9uZyBzX21heF9zaXplOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfaGlnaF9zaWVycmE7CiAg ICAgICAgdW5zaWduZWQgY2hhciBzX21hcHBpbmc7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX3Jv Y2s7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2pvbGlldF9sZXZlbDsKICAgICAgICB1bnNpZ25l ZCBjaGFyIHNfdXRmODsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfY3J1ZnQ7CgoKICAgICAgICB1 bnNpZ25lZCBjaGFyIHNfdW5oaWRlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ub3N1aWQ7CiAg ICAgICAgdW5zaWduZWQgY2hhciBzX25vZGV2OwogICAgICAgIG1vZGVfdCBzX21vZGU7CiAgICAg ICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAgc3RydWN0IG5sc190 YWJsZSAqc19ubHNfaW9jaGFyc2V0Owp9OwojIDYzMCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIv b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl L2xpbnV4L25mc19mc19zYi5oIiAxIDMKCgoKCgoKc3RydWN0IG5mc19zZXJ2ZXIgewogICAgICAg IHN0cnVjdCBycGNfY2xudCAqIGNsaWVudDsKICAgICAgICBzdHJ1Y3QgbmZzX3JwY19vcHMgKiBy cGNfb3BzOwogICAgICAgIGludCBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgcnNpemU7CiAg ICAgICAgdW5zaWduZWQgaW50IHJwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgd3NpemU7CiAg ICAgICAgdW5zaWduZWQgaW50IHdwYWdlczsKICAgICAgICB1bnNpZ25lZCBpbnQgZHRzaXplOwog ICAgICAgIHVuc2lnbmVkIGludCBic2l6ZTsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNyZWdtaW47 CiAgICAgICAgdW5zaWduZWQgaW50IGFjcmVnbWF4OwogICAgICAgIHVuc2lnbmVkIGludCBhY2Rp cm1pbjsKICAgICAgICB1bnNpZ25lZCBpbnQgYWNkaXJtYXg7CiAgICAgICAgdW5zaWduZWQgaW50 IG5hbWVsZW47CiAgICAgICAgY2hhciAqIGhvc3RuYW1lOwogICAgICAgIHN0cnVjdCBuZnNfcmVx bGlzdCAqIHJ3X3JlcXVlc3RzOwp9OwoKCgoKc3RydWN0IG5mc19zYl9pbmZvIHsKICAgICAgICBz dHJ1Y3QgbmZzX3NlcnZlciBzX3NlcnZlcjsKfTsKIyA2MzEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMg MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9saW51eC9zeXN2X2ZzX3NiLmgiIDEgMwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2IuaCIg MwpzdHJ1Y3Qgc3lzdl9zYl9pbmZvIHsKICAgICAgICBpbnQgc190eXBlOwogICAgICAgIHVuc2ln bmVkIGludCBzX2Jsb2NrX3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHNfYmxvY2tfc2l6ZV8x OwogICAgICAgIHVuc2lnbmVkIGludCBzX2Jsb2NrX3NpemVfYml0czsKICAgICAgICB1bnNpZ25l ZCBpbnQgc19ibG9ja19zaXplX2luY19iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBzX2Jsb2Nr X3NpemVfZGVjX2JpdHM7CiAgICAgICAgY2hhciBzX2NvbnZlcnQ7CiAgICAgICAgY2hhciBzX2ts dWRnZV9zeW1saW5rczsKICAgICAgICBjaGFyIHNfdHJ1bmNhdGU7CgogICAgICAgIG5saW5rX3Qg c19saW5rX21heDsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrOwogICAg ICAgIHVuc2lnbmVkIGludCBzX2lub2Rlc19wZXJfYmxvY2tfMTsKICAgICAgICB1bnNpZ25lZCBp bnQgc19pbm9kZXNfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Bl cl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzE7CiAgICAgICAg dW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9ja19iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBz X2luZF9wZXJfYmxvY2tfMjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzJf MTsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzJfYml0czsKICAgICAgICB1 bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5k X3Blcl9ibG9ja19ibG9ja19zaXplXzE7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9i bG9ja19ibG9ja19zaXplX2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9j a18yX2Jsb2NrX3NpemVfMTsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrXzJf YmxvY2tfc2l6ZV9iaXRzOwogICAgICAgIHVuc2lnbmVkIGludCBzX2luZDBfc2l6ZTsKICAgICAg ICB1bnNpZ25lZCBpbnQgc19pbmQxX3NpemU7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kMl9z aXplOwogICAgICAgIHVuc2lnbmVkIGludCBzX3Rvb2JpZ19ibG9jazsKICAgICAgICB1bnNpZ25l ZCBpbnQgc19ibG9ja19iYXNlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfZmljX3NpemU7CiAg ICAgICAgdW5zaWduZWQgc2hvcnQgc19mbGNfc2l6ZTsKCiAgICAgICAgc3RydWN0IGJ1ZmZlcl9o ZWFkICpzX2JoMTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYmgyOwoKCiAgICAgICAg Y2hhciAqIHNfc2JkMTsKICAgICAgICBjaGFyICogc19zYmQyOwogICAgICAgIHUxNiAqc19zYl9m aWNfY291bnQ7CiAgICAgICAgdTE2ICpzX3NiX2ZpY19pbm9kZXM7CiAgICAgICAgdTE2ICpzX3Ni X3RvdGFsX2ZyZWVfaW5vZGVzOwogICAgICAgIHUxNiAqc19zYl9mbGNfY291bnQ7CiAgICAgICAg dTMyICpzX3NiX2ZsY19ibG9ja3M7CiAgICAgICAgdTMyICpzX3NiX3RvdGFsX2ZyZWVfYmxvY2tz OwogICAgICAgIHUzMiAqc19zYl90aW1lOwogICAgICAgIHUzMiAqc19zYl9zdGF0ZTsKCgogICAg ICAgIHUzMiBzX2ZpcnN0aW5vZGV6b25lOwogICAgICAgIHUzMiBzX2ZpcnN0ZGF0YXpvbmU7CiAg ICAgICAgdTMyIHNfbmlub2RlczsKICAgICAgICB1MzIgc19uZGF0YXpvbmVzOwogICAgICAgIHUz MiBzX256b25lczsKfTsKIyA2MzIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9hZmZz X2ZzX3NiLmgiIDEgMwojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2FmZnNfZnNfc2IuaCIgMwpzdHJ1Y3QgYWZmc19i bV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJtX2JoOwogICAgICAgIHMzMiBi bV9maXJzdGJsazsKICAgICAgICBzMzIgYm1fa2V5OwogICAgICAgIGludCBibV9jb3VudDsKfTsK CnN0cnVjdCBhZmZzX2FsbG9jX3pvbmUgewogICAgICAgIHNob3J0IGF6X3NpemU7CiAgICAgICAg c2hvcnQgYXpfY291bnQ7CiAgICAgICAgaW50IGF6X2ZyZWU7Cn07CgpzdHJ1Y3QgYWZmc196b25l IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHpfaW5vOwogICAgICAgIHN0cnVjdCBhZmZzX2JtX2lu Zm8gKnpfYm07CiAgICAgICAgaW50IHpfc3RhcnQ7CiAgICAgICAgaW50IHpfZW5kOwogICAgICAg IGludCB6X2F6X25vOwogICAgICAgIHVuc2lnbmVkIGxvbmcgel9scnVfdGltZTsKfTsKCnN0cnVj dCBhZmZzX3NiX2luZm8gewogICAgICAgIGludCBzX3BhcnRpdGlvbl9zaXplOwogICAgICAgIGlu dCBzX2Jsa3NpemU7CiAgICAgICAgczMyIHNfcm9vdF9ibG9jazsKICAgICAgICBpbnQgc19oYXNo c2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZmxhZ3M7CiAgICAgICAgczE2IHNfdWlkOwog ICAgICAgIHMxNiBzX2dpZDsKICAgICAgICB1bW9kZV90IHNfbW9kZTsKICAgICAgICBpbnQgc19y ZXNlcnZlZDsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfcm9vdF9iaDsKICAgICAgICBz dHJ1Y3QgYWZmc19ibV9pbmZvICpzX2JpdG1hcDsKICAgICAgICBpbnQgc19ibV9jb3VudDsKICAg ICAgICBpbnQgc19uZXh0em9uZTsKICAgICAgICBpbnQgc19udW1fYXo7CiAgICAgICAgc3RydWN0 IGFmZnNfem9uZSAqc196b25lczsKICAgICAgICBzdHJ1Y3QgYWZmc19hbGxvY196b25lICpzX2Fs bG9jOwogICAgICAgIGNoYXIgKnNfem9uZW1hcDsKICAgICAgICBjaGFyICpzX3ByZWZpeDsKICAg ICAgICBpbnQgc19wcmVmaXhfbGVuOwogICAgICAgIGNoYXIgc192b2x1bWVbMzJdOwp9OwojIDYz MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Vmc19mc19zYi5oIiAxIDMKIyAxNyAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9saW51eC91ZnNfZnNfc2IuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdWZzX2ZzLmgiIDEgMwojIDI0OCAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9saW51eC91ZnNfZnMuaCIgMwpzdHJ1Y3QgdWZzX3RpbWV2YWwgewogICAgICAgIF9fczMyIHR2 X3NlYzsKICAgICAgICBfX3MzMiB0dl91c2VjOwp9OwoKc3RydWN0IHVmc19kaXJfZW50cnkgewog ICAgICAgIF9fdTMyIGRfaW5vOwogICAgICAgIF9fdTE2IGRfcmVjbGVuOwogICAgICAgIHVuaW9u IHsKICAgICAgICAgICAgICAgIF9fdTE2IGRfbmFtbGVuOwogICAgICAgICAgICAgICAgc3RydWN0 IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191OCBkX3R5cGU7CiAgICAgICAgICAgICAgICAg ICAgICAgIF9fdTggZF9uYW1sZW47CiAgICAgICAgICAgICAgICB9IGRfNDQ7CiAgICAgICAgfSBk X3U7CiAgICAgICAgX191OCBkX25hbWVbMjU1ICsgMV07Cn07CgpzdHJ1Y3QgdWZzX2NzdW0gewog ICAgICAgIF9fdTMyIGNzX25kaXI7CiAgICAgICAgX191MzIgY3NfbmJmcmVlOwogICAgICAgIF9f dTMyIGNzX25pZnJlZTsKICAgICAgICBfX3UzMiBjc19uZmZyZWU7Cn07CgoKCgpzdHJ1Y3QgdWZz X3N1cGVyX2Jsb2NrIHsKICAgICAgICBfX3UzMiBmc19saW5rOwogICAgICAgIF9fdTMyIGZzX3Js aW5rOwogICAgICAgIF9fdTMyIGZzX3NibGtubzsKICAgICAgICBfX3UzMiBmc19jYmxrbm87CiAg ICAgICAgX191MzIgZnNfaWJsa25vOwogICAgICAgIF9fdTMyIGZzX2RibGtubzsKICAgICAgICBf X3UzMiBmc19jZ29mZnNldDsKICAgICAgICBfX3UzMiBmc19jZ21hc2s7CiAgICAgICAgX191MzIg ZnNfdGltZTsKICAgICAgICBfX3UzMiBmc19zaXplOwogICAgICAgIF9fdTMyIGZzX2RzaXplOwog ICAgICAgIF9fdTMyIGZzX25jZzsKICAgICAgICBfX3UzMiBmc19ic2l6ZTsKICAgICAgICBfX3Uz MiBmc19mc2l6ZTsKICAgICAgICBfX3UzMiBmc19mcmFnOwoKICAgICAgICBfX3UzMiBmc19taW5m cmVlOwogICAgICAgIF9fdTMyIGZzX3JvdGRlbGF5OwogICAgICAgIF9fdTMyIGZzX3JwczsKCiAg ICAgICAgX191MzIgZnNfYm1hc2s7CiAgICAgICAgX191MzIgZnNfZm1hc2s7CiAgICAgICAgX191 MzIgZnNfYnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzaGlmdDsKCiAgICAgICAgX191MzIgZnNf bWF4Y29udGlnOwogICAgICAgIF9fdTMyIGZzX21heGJwZzsKCiAgICAgICAgX191MzIgZnNfZnJh Z3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgZnNfc2JzaXpl OwogICAgICAgIF9fdTMyIGZzX2NzbWFzazsKICAgICAgICBfX3UzMiBmc19jc3NoaWZ0OwogICAg ICAgIF9fdTMyIGZzX25pbmRpcjsKICAgICAgICBfX3UzMiBmc19pbm9wYjsKICAgICAgICBfX3Uz MiBmc19uc3BmOwoKICAgICAgICBfX3UzMiBmc19vcHRpbTsKCiAgICAgICAgdW5pb24gewogICAg ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBz ZWN0OwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgewog ICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0g ZnNfc3VueDg2OwogICAgICAgIH0gZnNfdTE7CiAgICAgICAgX191MzIgZnNfaW50ZXJsZWF2ZTsK ICAgICAgICBfX3UzMiBmc190cmFja3NrZXc7CgoKCgogICAgICAgIF9fdTMyIGZzX2lkWzJdOwoK ICAgICAgICBfX3UzMiBmc19jc2FkZHI7CiAgICAgICAgX191MzIgZnNfY3NzaXplOwogICAgICAg IF9fdTMyIGZzX2Nnc2l6ZTsKCiAgICAgICAgX191MzIgZnNfbnRyYWs7CiAgICAgICAgX191MzIg ZnNfbnNlY3Q7CiAgICAgICAgX191MzIgZnNfc3BjOwoKICAgICAgICBfX3UzMiBmc19uY3lsOwoK ICAgICAgICBfX3UzMiBmc19jcGc7CiAgICAgICAgX191MzIgZnNfaXBnOwogICAgICAgIF9fdTMy IGZzX2ZwZzsKCiAgICAgICAgc3RydWN0IHVmc19jc3VtIGZzX2NzdG90YWw7CgogICAgICAgIF9f czggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2NsZWFuOwogICAgICAgIF9fczggZnNfcm9ubHk7 CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAgICBfX3M4IGZzX2ZzbW50WzUxMl07CgogICAg ICAgIF9fdTMyIGZzX2Nncm90b3I7CiAgICAgICAgX191MzIgZnNfY3NwWzMxXTsKICAgICAgICBf X3UzMiBmc19tYXhjbHVzdGVyOwogICAgICAgIF9fdTMyIGZzX2NwYzsKICAgICAgICBfX3UxNiBm c19vcG9zdGJsWzE2XVs4XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg ewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAg ICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAg IF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNf c3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAg ICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBm c19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBf X3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3Jl Y2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAg ICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgICAg ICAgICBfX3UzMiBmc19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZz X3FmbWFza1syXTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgICAgICAgICAg c3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTBdOwog ICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19jb250aWdzdW1zaXplOwogICAgICAgICAg ICAgICAgICAgICAgICBfX3MzMiBmc19tYXhzeW1saW5rbGVuOwogICAgICAgICAgICAgICAgICAg ICAgICBfX3MzMiBmc19pbm9kZWZtdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNf bWF4ZmlsZXNpemVbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1sy XTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAg ICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfNDQ7CiAg ICAgICAgfSBmc191MjsKICAgICAgICBfX3MzMiBmc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19z MzIgZnNfbnJwb3M7CiAgICAgICAgX19zMzIgZnNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIGZz X3JvdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX21hZ2ljOwogICAgICAgIF9fdTggZnNfc3BhY2Vb MV07Cn07CiMgNDI1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIiAzCnN0cnVjdCB1ZnNfY3lsaW5kZXJfZ3Jv dXAgewogICAgICAgIF9fdTMyIGNnX2xpbms7CiAgICAgICAgX191MzIgY2dfbWFnaWM7CiAgICAg ICAgX191MzIgY2dfdGltZTsKICAgICAgICBfX3UzMiBjZ19jZ3g7CiAgICAgICAgX191MTYgY2df bmN5bDsKICAgICAgICBfX3UxNiBjZ19uaWJsazsKICAgICAgICBfX3UzMiBjZ19uZGJsazsKICAg ICAgICBzdHJ1Y3QgdWZzX2NzdW0gY2dfY3M7CiAgICAgICAgX191MzIgY2dfcm90b3I7CiAgICAg ICAgX191MzIgY2dfZnJvdG9yOwogICAgICAgIF9fdTMyIGNnX2lyb3RvcjsKICAgICAgICBfX3Uz MiBjZ19mcnN1bVsoODE5MiAvIDEwMjQpXTsKICAgICAgICBfX3UzMiBjZ19idG90b2ZmOwogICAg ICAgIF9fdTMyIGNnX2JvZmY7CiAgICAgICAgX191MzIgY2dfaXVzZWRvZmY7CiAgICAgICAgX191 MzIgY2dfZnJlZW9mZjsKICAgICAgICBfX3UzMiBjZ19uZXh0ZnJlZW9mZjsKICAgICAgICB1bmlv biB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3Uz MiBjZ19jbHVzdGVyc3Vtb2ZmOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBjZ19jbHVz dGVyb2ZmOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBjZ19uY2x1c3RlcmJsa3M7CiAg ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGNnX3NwYXJlY29uWzEzXTsKICAgICAgICAgICAg ICAgIH0gY2dfNDQ7CiAgICAgICAgICAgICAgICBfX3UzMiBjZ19zcGFyZWNvblsxNl07CiAgICAg ICAgfSBjZ191OwogICAgICAgIF9fdTggY2dfc3BhY2VbMV07Cgp9OwoKCgoKc3RydWN0IHVmc19p bm9kZSB7CiAgICAgICAgX191MTYgdWlfbW9kZTsKICAgICAgICBfX3UxNiB1aV9ubGluazsKICAg ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg ICAgICBfX3UxNiB1aV9zdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UxNiB1aV9zZ2lk OwogICAgICAgICAgICAgICAgfSBvbGRpZHM7CiAgICAgICAgICAgICAgICBfX3UzMiB1aV9pbnVt YmVyOwogICAgICAgICAgICAgICAgX191MzIgdWlfYXV0aG9yOwogICAgICAgIH0gdWlfdTE7CiAg ICAgICAgX191NjQgdWlfc2l6ZTsKICAgICAgICBzdHJ1Y3QgdWZzX3RpbWV2YWwgdWlfYXRpbWU7 CiAgICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVpX210aW1lOwogICAgICAgIHN0cnVjdCB1ZnNf dGltZXZhbCB1aV9jdGltZTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg ewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9kYlsxMl07CiAgICAgICAgICAgICAg ICAgICAgICAgIF9fdTMyIHVpX2liWzNdOwogICAgICAgICAgICAgICAgfSB1aV9hZGRyOwogICAg ICAgICAgICAgICAgX191OCB1aV9zeW1saW5rWzQqKDEyICszKV07CiAgICAgICAgfSB1aV91MjsK ICAgICAgICBfX3UzMiB1aV9mbGFnczsKICAgICAgICBfX3UzMiB1aV9ibG9ja3M7CiAgICAgICAg X191MzIgdWlfZ2VuOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAg ICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX3NoYWRvdzsKICAgICAgICAgICAgICAgICAg ICAgICAgX191MzIgdWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9naWQ7 CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX29lZnRmbGFnOwogICAgICAgICAgICAg ICAgfSB1aV9zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg ICAgICBfX3UzMiB1aV91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIHVpX2dpZDsK ICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgdWlfc3BhcmVbMl07CiAgICAgICAgICAgICAg ICB9IHVpXzQ0OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg ICAgX191MzIgdWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9naWQ7CiAg ICAgICAgICAgICAgICAgICAgICAgIF9fdTE2IHVpX21vZGVoOwogICAgICAgICAgICAgICAgICAg ICAgICBfX3UxNiB1aV9zcGFyZTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfdHJh bnM7CiAgICAgICAgICAgICAgICB9IHVpX2h1cmQ7CiAgICAgICAgfSB1aV91MzsKfTsKIyA1MjQg Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1 ZGUvbGludXgvdWZzX2ZzLmgiIDMKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfZnJhZ21lbnRzIChzdHJ1 Y3QgaW5vZGUgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfYmxv Y2tzIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKZXh0ZXJuIHVuc2lnbmVk IHVmc19uZXdfZnJhZ21lbnRzIChzdHJ1Y3QgaW5vZGUgKiwgdTMyICosIHVuc2lnbmVkLCB1bnNp Z25lZCwgdW5zaWduZWQsIGludCAqKTsKCgpleHRlcm4gc3RydWN0IHVmc19jZ19wcml2YXRlX2lu Zm8gKiB1ZnNfbG9hZF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkKTsK ZXh0ZXJuIHZvaWQgdWZzX3B1dF9jeWxpbmRlciAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2ln bmVkKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Rpcl9pbm9kZV9vcGVy YXRpb25zOwpleHRlcm4gaW50IHVmc19jaGVja19kaXJfZW50cnkgKGNvbnN0IGNoYXIgKiwgc3Ry dWN0IGlub2RlICosIHN0cnVjdCB1ZnNfZGlyX2VudHJ5ICosIHN0cnVjdCBidWZmZXJfaGVhZCAq LCB1bnNpZ25lZCBsb25nKTsKCgpleHRlcm4gc3RydWN0IGlub2RlX29wZXJhdGlvbnMgdWZzX2Zp bGVfaW5vZGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdWZzX2Zp bGVfb3BlcmF0aW9uczsKCmV4dGVybiBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIHVm c19hb3BzOwoKCmV4dGVybiB2b2lkIHVmc19mcmVlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKmlub2Rl KTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIHVmc19uZXdfaW5vZGUgKGNvbnN0IHN0cnVjdCBpbm9k ZSAqLCBpbnQsIGludCAqKTsKCgpleHRlcm4gaW50IHVmc19mcmFnX21hcCAoc3RydWN0IGlub2Rl ICosIGludCk7CmV4dGVybiB2b2lkIHVmc19yZWFkX2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4 dGVybiB2b2lkIHVmc19wdXRfaW5vZGUgKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgdWZz X3dyaXRlX2lub2RlIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCB1ZnNfc3luY19p bm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCB1ZnNfZGVsZXRlX2lub2RlIChzdHJ1 Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiB1ZnNfZ2V0ZnJhZyAoc3Ry dWN0IGlub2RlICosIHVuc2lnbmVkLCBpbnQsIGludCAqKTsKZXh0ZXJuIHN0cnVjdCBidWZmZXJf aGVhZCAqIHVmc19icmVhZCAoc3RydWN0IGlub2RlICosIHVuc2lnbmVkLCBpbnQsIGludCAqKTsK CgpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1ZnNfZGlyX29wZXJhdGlvbnM7CgoKZXh0 ZXJuIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHVmc19mc190eXBlOwpleHRlcm4gdm9pZCB1ZnNf d2FybmluZyAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAq LCAuLi4pIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZv aWQgdWZzX2Vycm9yIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgY29uc3QgY2hhciAqLCBjb25zdCBj aGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwpleHRl cm4gdm9pZCB1ZnNfcGFuaWMgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDMsIDQpKSk7 CmV4dGVybiB2b2lkIHVmc193cml0ZV9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwoKCmV4 dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNfZmFzdF9zeW1saW5rX2lub2RlX29wZXJh dGlvbnM7CgoKZXh0ZXJuIHZvaWQgdWZzX3RydW5jYXRlIChzdHJ1Y3QgaW5vZGUgKik7CiMgMTgg Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1 ZGUvbGludXgvdWZzX2ZzX3NiLmgiIDIgMwoKCgoKCnN0cnVjdCB1ZnNfYnVmZmVyX2hlYWQgewog ICAgICAgIHVuc2lnbmVkIGZyYWdtZW50OwogICAgICAgIHVuc2lnbmVkIGNvdW50OwogICAgICAg IHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoWyg4MTkyIC8gMTAyNCldOwp9OwoKc3RydWN0IHVmc19j Z19wcml2YXRlX2luZm8gewogICAgICAgIHN0cnVjdCB1ZnNfY3lsaW5kZXJfZ3JvdXAgdWNnOwog ICAgICAgIF9fdTMyIGNfY2d4OwogICAgICAgIF9fdTE2IGNfbmN5bDsKICAgICAgICBfX3UxNiBj X25pYmxrOwogICAgICAgIF9fdTMyIGNfbmRibGs7CiAgICAgICAgX191MzIgY19yb3RvcjsKICAg ICAgICBfX3UzMiBjX2Zyb3RvcjsKICAgICAgICBfX3UzMiBjX2lyb3RvcjsKICAgICAgICBfX3Uz MiBjX2J0b3RvZmY7CiAgICAgICAgX191MzIgY19ib2ZmOwogICAgICAgIF9fdTMyIGNfaXVzZWRv ZmY7CiAgICAgICAgX191MzIgY19mcmVlb2ZmOwogICAgICAgIF9fdTMyIGNfbmV4dGZyZWVvZmY7 CiAgICAgICAgX191MzIgY19jbHVzdGVyc3Vtb2ZmOwogICAgICAgIF9fdTMyIGNfY2x1c3Rlcm9m ZjsKICAgICAgICBfX3UzMiBjX25jbHVzdGVyYmxrczsKfTsKCnN0cnVjdCB1ZnNfc2JfcHJpdmF0 ZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdWZzX2J1ZmZlcl9oZWFkIHNfdWJoOwogICAgICAgIF9f dTMyIHNfc2Jsa25vOwogICAgICAgIF9fdTMyIHNfY2Jsa25vOwogICAgICAgIF9fdTMyIHNfaWJs a25vOwogICAgICAgIF9fdTMyIHNfZGJsa25vOwogICAgICAgIF9fdTMyIHNfY2dvZmZzZXQ7CiAg ICAgICAgX191MzIgc19jZ21hc2s7CiAgICAgICAgX191MzIgc19zaXplOwogICAgICAgIF9fdTMy IHNfZHNpemU7CiAgICAgICAgX191MzIgc19uY2c7CiAgICAgICAgX191MzIgc19ic2l6ZTsKICAg ICAgICBfX3UzMiBzX2ZzaXplOwogICAgICAgIF9fdTMyIHNfZnBiOwogICAgICAgIF9fdTMyIHNf bWluZnJlZTsKICAgICAgICBfX3UzMiBzX2JtYXNrOwogICAgICAgIF9fdTMyIHNfZm1hc2s7CiAg ICAgICAgX191MzIgc19ic2hpZnQ7CiAgICAgICAgX191MzIgc19mc2hpZnQ7CiAgICAgICAgX191 MzIgc19mcGJzaGlmdDsKICAgICAgICBfX3UzMiBzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgc19z YnNpemU7CiAgICAgICAgX191MzIgc19jc21hc2s7CiAgICAgICAgX191MzIgc19jc3NoaWZ0Owog ICAgICAgIF9fdTMyIHNfbmluZGlyOwogICAgICAgIF9fdTMyIHNfaW5vcGI7CiAgICAgICAgX191 MzIgc19uc3BmOwogICAgICAgIF9fdTMyIHNfbnBzZWN0OwogICAgICAgIF9fdTMyIHNfaW50ZXJs ZWF2ZTsKICAgICAgICBfX3UzMiBzX3RyYWNrc2tldzsKICAgICAgICBfX3UzMiBzX2NzYWRkcjsK ICAgICAgICBfX3UzMiBzX2Nzc2l6ZTsKICAgICAgICBfX3UzMiBzX2Nnc2l6ZTsKICAgICAgICBf X3UzMiBzX250cmFrOwogICAgICAgIF9fdTMyIHNfbnNlY3Q7CiAgICAgICAgX191MzIgc19zcGM7 CiAgICAgICAgX191MzIgc19pcGc7CiAgICAgICAgX191MzIgc19mcGc7CiAgICAgICAgX191MzIg c19jcGM7CiAgICAgICAgX19zMzIgc19jb250aWdzdW1zaXplOwogICAgICAgIF9fczY0IHNfcWJt YXNrOwogICAgICAgIF9fczY0IHNfcWZtYXNrOwogICAgICAgIF9fczMyIHNfcG9zdGJsZm9ybWF0 OwogICAgICAgIF9fczMyIHNfbnJwb3M7CiAgICAgICAgX19zMzIgc19wb3N0YmxvZmY7CiAgICAg ICAgX19zMzIgc19yb3RibG9mZjsKCiAgICAgICAgX191MzIgc19mcGJtYXNrOwogICAgICAgIF9f dTMyIHNfYXBiOwogICAgICAgIF9fdTMyIHNfMmFwYjsKICAgICAgICBfX3UzMiBzXzNhcGI7CiAg ICAgICAgX191MzIgc19hcGJtYXNrOwogICAgICAgIF9fdTMyIHNfYXBic2hpZnQ7CiAgICAgICAg X191MzIgc18yYXBic2hpZnQ7CiAgICAgICAgX191MzIgc18zYXBic2hpZnQ7CiAgICAgICAgX191 MzIgc19uc3Bmc2hpZnQ7CiAgICAgICAgX191MzIgc19uc3BiOwogICAgICAgIF9fdTMyIHNfaW5v cGY7CiAgICAgICAgX191MzIgc19zYmJhc2U7CiAgICAgICAgX191MzIgc19icGY7CiAgICAgICAg X191MzIgc19icGZzaGlmdDsKICAgICAgICBfX3UzMiBzX2JwZm1hc2s7CgogICAgICAgIF9fdTMy IHNfbWF4c3ltbGlua2xlbjsKfTsKCgoKCgpzdHJ1Y3QgdWZzX3NiX2luZm8gewogICAgICAgIHN0 cnVjdCB1ZnNfc2JfcHJpdmF0ZV9pbmZvICogc191c3BpOwogICAgICAgIHN0cnVjdCB1ZnNfY3N1 bSAqIHNfY3NwWzMxXTsKICAgICAgICB1bnNpZ25lZCBzX3N3YWI7CiAgICAgICAgdW5zaWduZWQg c19mbGFnczsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc191Y2c7CiAgICAgICAgc3Ry dWN0IHVmc19jZ19wcml2YXRlX2luZm8gKiBzX3VjcGlbOF07CiAgICAgICAgdW5zaWduZWQgc19j Z25vWzhdOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfY2dfbG9hZGVkOwogICAgICAgIHVuc2ln bmVkIHNfbW91bnRfb3B0Owp9OwoKCgoKCgoKc3RydWN0IHVmc19zdXBlcl9ibG9ja19maXJzdCB7 CiAgICAgICAgX191MzIgZnNfbGluazsKICAgICAgICBfX3UzMiBmc19ybGluazsKICAgICAgICBf X3UzMiBmc19zYmxrbm87CiAgICAgICAgX191MzIgZnNfY2Jsa25vOwogICAgICAgIF9fdTMyIGZz X2libGtubzsKICAgICAgICBfX3UzMiBmc19kYmxrbm87CiAgICAgICAgX191MzIgZnNfY2dvZmZz ZXQ7CiAgICAgICAgX191MzIgZnNfY2dtYXNrOwogICAgICAgIF9fdTMyIGZzX3RpbWU7CiAgICAg ICAgX191MzIgZnNfc2l6ZTsKICAgICAgICBfX3UzMiBmc19kc2l6ZTsKICAgICAgICBfX3UzMiBm c19uY2c7CiAgICAgICAgX191MzIgZnNfYnNpemU7CiAgICAgICAgX191MzIgZnNfZnNpemU7CiAg ICAgICAgX191MzIgZnNfZnJhZzsKICAgICAgICBfX3UzMiBmc19taW5mcmVlOwogICAgICAgIF9f dTMyIGZzX3JvdGRlbGF5OwogICAgICAgIF9fdTMyIGZzX3JwczsKICAgICAgICBfX3UzMiBmc19i bWFzazsKICAgICAgICBfX3UzMiBmc19mbWFzazsKICAgICAgICBfX3UzMiBmc19ic2hpZnQ7CiAg ICAgICAgX191MzIgZnNfZnNoaWZ0OwogICAgICAgIF9fdTMyIGZzX21heGNvbnRpZzsKICAgICAg ICBfX3UzMiBmc19tYXhicGc7CiAgICAgICAgX191MzIgZnNfZnJhZ3NoaWZ0OwogICAgICAgIF9f dTMyIGZzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgZnNfc2JzaXplOwogICAgICAgIF9fdTMyIGZz X2NzbWFzazsKICAgICAgICBfX3UzMiBmc19jc3NoaWZ0OwogICAgICAgIF9fdTMyIGZzX25pbmRp cjsKICAgICAgICBfX3UzMiBmc19pbm9wYjsKICAgICAgICBfX3UzMiBmc19uc3BmOwogICAgICAg IF9fdTMyIGZzX29wdGltOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7 CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX25wc2VjdDsKICAgICAgICAgICAgICAg IH0gZnNfc3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg ICAgX19zMzIgZnNfc3RhdGU7CiAgICAgICAgICAgICAgICB9IGZzX3N1bng4NjsKICAgICAgICB9 IGZzX3UxOwogICAgICAgIF9fdTMyIGZzX2ludGVybGVhdmU7CiAgICAgICAgX191MzIgZnNfdHJh Y2tza2V3OwogICAgICAgIF9fdTMyIGZzX2lkWzJdOwogICAgICAgIF9fdTMyIGZzX2NzYWRkcjsK ICAgICAgICBfX3UzMiBmc19jc3NpemU7CiAgICAgICAgX191MzIgZnNfY2dzaXplOwogICAgICAg IF9fdTMyIGZzX250cmFrOwogICAgICAgIF9fdTMyIGZzX25zZWN0OwogICAgICAgIF9fdTMyIGZz X3NwYzsKICAgICAgICBfX3UzMiBmc19uY3lsOwogICAgICAgIF9fdTMyIGZzX2NwZzsKICAgICAg ICBfX3UzMiBmc19pcGc7CiAgICAgICAgX191MzIgZnNfZnBnOwogICAgICAgIHN0cnVjdCB1ZnNf Y3N1bSBmc19jc3RvdGFsOwogICAgICAgIF9fczggZnNfZm1vZDsKICAgICAgICBfX3M4IGZzX2Ns ZWFuOwogICAgICAgIF9fczggZnNfcm9ubHk7CiAgICAgICAgX19zOCBmc19mbGFnczsKICAgICAg ICBfX3M4IGZzX2ZzbW50WzUxMiAtIDIxMl07Cgp9OwoKc3RydWN0IHVmc19zdXBlcl9ibG9ja19z ZWNvbmQgewogICAgICAgIF9fczggZnNfZnNtbnRbMjEyXTsKICAgICAgICBfX3UzMiBmc19jZ3Jv dG9yOwogICAgICAgIF9fdTMyIGZzX2NzcFszMV07CiAgICAgICAgX191MzIgZnNfbWF4Y2x1c3Rl cjsKICAgICAgICBfX3UzMiBmc19jcGM7CiAgICAgICAgX191MTYgZnNfb3Bvc3RibFs4Ml07Cn07 CgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX3RoaXJkIHsKICAgICAgICBfX3UxNiBmc19vcG9zdGJs WzQ2XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg ICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAg ICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3Nw YXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAg ICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAg ICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAg ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFy ZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAg ICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAg ICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBm c19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsK ICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAg ICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTBdOwogICAgICAgICAgICAg ICAgICAgICAgICBfX3MzMiBmc19jb250aWdzdW1zaXplOwogICAgICAgICAgICAgICAgICAgICAg ICBfX3MzMiBmc19tYXhzeW1saW5rbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBm c19pbm9kZWZtdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbWF4ZmlsZXNpemVb Ml07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAg ICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAg ICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfNDQ7CiAgICAgICAgfSBmc191 MjsKICAgICAgICBfX3MzMiBmc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19zMzIgZnNfbnJwb3M7 CiAgICAgICAgX19zMzIgZnNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX3JvdGJsb2ZmOwog ICAgICAgIF9fczMyIGZzX21hZ2ljOwogICAgICAgIF9fdTggZnNfc3BhY2VbMV07Cn07CiMgNjM0 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZWZzX2ZzX3NiLmgiIDEgMwojIDI1ICIv b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl L2xpbnV4L2Vmc19mc19zYi5oIiAzCnN0cnVjdCBlZnNfc3VwZXIgewogICAgICAgIGludDMyX3Qg ZnNfc2l6ZTsKICAgICAgICBpbnQzMl90IGZzX2ZpcnN0Y2c7CiAgICAgICAgaW50MzJfdCBmc19j Z2ZzaXplOwogICAgICAgIHNob3J0IGZzX2NnaXNpemU7CiAgICAgICAgc2hvcnQgZnNfc2VjdG9y czsKICAgICAgICBzaG9ydCBmc19oZWFkczsKICAgICAgICBzaG9ydCBmc19uY2c7CiAgICAgICAg c2hvcnQgZnNfZGlydHk7CiAgICAgICAgaW50MzJfdCBmc190aW1lOwogICAgICAgIGludDMyX3Qg ZnNfbWFnaWM7CiAgICAgICAgY2hhciBmc19mbmFtZVs2XTsKICAgICAgICBjaGFyIGZzX2ZwYWNr WzZdOwogICAgICAgIGludDMyX3QgZnNfYm1zaXplOwogICAgICAgIGludDMyX3QgZnNfdGZyZWU7 CiAgICAgICAgaW50MzJfdCBmc190aW5vZGU7CiAgICAgICAgaW50MzJfdCBmc19ibWJsb2NrOwog ICAgICAgIGludDMyX3QgZnNfcmVwbHNiOwogICAgICAgIGludDMyX3QgZnNfbGFzdGlhbGxvYzsK ICAgICAgICBjaGFyIGZzX3NwYXJlWzIwXTsKICAgICAgICBpbnQzMl90IGZzX2NoZWNrc3VtOwp9 OwoKCnN0cnVjdCBlZnNfc2JfaW5mbyB7CiAgICAgICAgaW50MzJfdCBmc19tYWdpYzsKICAgICAg ICBpbnQzMl90IGZzX3N0YXJ0OwogICAgICAgIGludDMyX3QgZmlyc3RfYmxvY2s7CiAgICAgICAg aW50MzJfdCB0b3RhbF9ibG9ja3M7CiAgICAgICAgaW50MzJfdCBncm91cF9zaXplOwogICAgICAg IGludDMyX3QgZGF0YV9mcmVlOwogICAgICAgIGludDMyX3QgaW5vZGVfZnJlZTsKICAgICAgICBz aG9ydCBpbm9kZV9ibG9ja3M7CiAgICAgICAgc2hvcnQgdG90YWxfZ3JvdXBzOwp9OwojIDYzNSAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3JvbWZzX2ZzX3NiLmgiIDEgMwoKCgoKCnN0 cnVjdCByb21mc19zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbWF4c2l6ZTsKfTsK IyA2MzYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz LWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMSAzCiMg MTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu Y2x1ZGUvbGludXgvc21iX2ZzX3NiLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NtYi5oIiAxIDMKIyAxNCAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9saW51eC9zbWIuaCIgMwplbnVtIHNtYl9wcm90b2NvbCB7CiAgICAgICAgU01CX1BST1RPQ09M X05PTkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NPUkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NP UkVQTFVTLAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5NQU4xLAogICAgICAgIFNNQl9QUk9UT0NP TF9MQU5NQU4yLAogICAgICAgIFNNQl9QUk9UT0NPTF9OVDEKfTsKCmVudW0gc21iX2Nhc2VfaG5k bCB7CiAgICAgICAgU01CX0NBU0VfREVGQVVMVCwKICAgICAgICBTTUJfQ0FTRV9MT1dFUiwKICAg ICAgICBTTUJfQ0FTRV9VUFBFUgp9OwoKc3RydWN0IHNtYl9kc2thdHRyIHsKICAgICAgICBfX3Ux NiB0b3RhbDsKICAgICAgICBfX3UxNiBhbGxvY2Jsb2NrczsKICAgICAgICBfX3UxNiBibG9ja3Np emU7CiAgICAgICAgX191MTYgZnJlZTsKfTsKCnN0cnVjdCBzbWJfY29ubl9vcHQgewoKCiAgICAg ICAgdW5zaWduZWQgaW50IGZkOwoKICAgICAgICBlbnVtIHNtYl9wcm90b2NvbCBwcm90b2NvbDsK ICAgICAgICBlbnVtIHNtYl9jYXNlX2huZGwgY2FzZV9oYW5kbGluZzsKCgoKICAgICAgICBfX3Uz MiBtYXhfeG1pdDsKICAgICAgICBfX3UxNiBzZXJ2ZXJfdWlkOwogICAgICAgIF9fdTE2IHRpZDsK CgogICAgICAgIF9fdTE2IHNlY21vZGU7CiAgICAgICAgX191MTYgbWF4bXV4OwogICAgICAgIF9f dTE2IG1heHZjczsKICAgICAgICBfX3UxNiByYXdtb2RlOwogICAgICAgIF9fdTMyIHNlc3NrZXk7 CgoKICAgICAgICBfX3UzMiBtYXhyYXc7CiAgICAgICAgX191MzIgY2FwYWJpbGl0aWVzOwogICAg ICAgIF9fczE2IHNlcnZlcnpvbmU7Cn07CgoKCgpzdHJ1Y3Qgc21iX25sc19jb2RlcGFnZSB7CiAg ICAgICAgY2hhciBsb2NhbF9uYW1lWzIwXTsKICAgICAgICBjaGFyIHJlbW90ZV9uYW1lWzIwXTsK fTsKIyA3OCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9saW51eC9zbWIuaCIgMwpzdHJ1Y3Qgc21iX2ZhdHRyIHsKCiAgICAgICAgX191 MTYgYXR0cjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2lubzsKICAgICAgICB1bW9kZV90IGZf bW9kZTsKICAgICAgICBubGlua190IGZfbmxpbms7CiAgICAgICAgdWlkX3QgZl91aWQ7CiAgICAg ICAgZ2lkX3QgZl9naWQ7CiAgICAgICAga2Rldl90IGZfcmRldjsKICAgICAgICBvZmZfdCBmX3Np emU7CiAgICAgICAgdGltZV90IGZfYXRpbWU7CiAgICAgICAgdGltZV90IGZfbXRpbWU7CiAgICAg ICAgdGltZV90IGZfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmX2Jsa3NpemU7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBmX2Jsb2NrczsKfTsKCmVudW0gc21iX2Nvbm5fc3RhdGUgewogICAg ICAgIENPTk5fVkFMSUQsCiAgICAgICAgQ09OTl9JTlZBTElELAoKICAgICAgICBDT05OX1JFVFJJ RUQKfTsKIyAxNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51 eC9zeXMtaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaCIgMiAzCgoKCgoKCgpzdHJ1Y3Qgc21iX3Ni X2luZm8gewogICAgICAgIGVudW0gc21iX2Nvbm5fc3RhdGUgc3RhdGU7CiAgICAgICAgc3RydWN0 IGZpbGUgKiBzb2NrX2ZpbGU7CgogICAgICAgIHN0cnVjdCBzbWJfbW91bnRfZGF0YV9rZXJuZWwg Km1udDsKICAgICAgICB1bnNpZ25lZCBjaGFyICp0ZW1wX2J1ZjsKCgoKCiAgICAgICAgdW5zaWdu ZWQgaW50IGdlbmVyYXRpb247CiAgICAgICAgcGlkX3QgY29ubl9waWQ7CiAgICAgICAgc3RydWN0 IHNtYl9jb25uX29wdCBvcHQ7CgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwogICAgICAg IHdhaXRfcXVldWVfaGVhZF90IHdhaXQ7CgogICAgICAgIF9fdTMyIHBhY2tldF9zaXplOwogICAg ICAgIHVuc2lnbmVkIGNoYXIgKiBwYWNrZXQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcmNsczsK ICAgICAgICB1bnNpZ25lZCBzaG9ydCBlcnI7CgoKICAgICAgICB2b2lkICpkYXRhX3JlYWR5OwoK CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqcmVtb3RlX25sczsKICAgICAgICBzdHJ1Y3Qgbmxz X3RhYmxlICpsb2NhbF9ubHM7CgoKCgogICAgICAgIGNoYXIgKm5hbWVfYnVmOwoKICAgICAgICBp bnQgKCpjb252ZXJ0KShjaGFyICosIGludCwgY29uc3QgY2hhciAqLCBpbnQsCiAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IG5sc190YWJsZSAqLCBzdHJ1Y3QgbmxzX3RhYmxlICopOwp9Owoj IDYzNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hmc19mc19zYi5oIiAxIDMKIyAx NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9saW51eC9oZnNfZnNfc2IuaCIgMwpzdHJ1Y3QgaGZzX25hbWU7Cgp0eXBlZGVmIGludCAo Kmhmc19uYW1laW5fZm4pIChjaGFyICosIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqKTsKdHlwZWRl ZiB2b2lkICgqaGZzX25hbWVvdXRfZm4pIChzdHJ1Y3QgaGZzX25hbWUgKiwgY29uc3QgY2hhciAq LCBpbnQpOwp0eXBlZGVmIHZvaWQgKCpoZnNfaWZpbGxfZm4pIChzdHJ1Y3QgaW5vZGUgKiwgaW5v X3QsIGNvbnN0IGludCk7CgoKCgoKCnN0cnVjdCBoZnNfc2JfaW5mbyB7CiAgICAgICAgaW50IG1h Z2ljOwogICAgICAgIHN0cnVjdCBoZnNfbWRiICpzX21kYjsKICAgICAgICBpbnQgc19xdWlldDsK CiAgICAgICAgaW50IHNfbG93ZXJjYXNlOwogICAgICAgIGludCBzX2FmcGQ7CiAgICAgICAgaW50 IHNfdmVyc2lvbjsKICAgICAgICBoZnNfbmFtZWluX2ZuIHNfbmFtZWluOwoKCiAgICAgICAgaGZz X25hbWVvdXRfZm4gc19uYW1lb3V0OwoKCiAgICAgICAgaGZzX2lmaWxsX2ZuIHNfaWZpbGw7Cgog ICAgICAgIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqc19yZXNlcnZlZDE7CiAgICAgICAgY29uc3Qg c3RydWN0IGhmc19uYW1lICpzX3Jlc2VydmVkMjsKICAgICAgICBfX3UzMiBzX3R5cGU7CiAgICAg ICAgX191MzIgc19jcmVhdG9yOwogICAgICAgIHVtb2RlX3Qgc191bWFzazsKCiAgICAgICAgdWlk X3Qgc191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgY2hhciBzX2NvbnY7Cn07CiMg NjM4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p bmNsdWRlL2xpbnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYWRmc19mc19zYi5oIiAxIDMKIyAx MyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9saW51eC9hZGZzX2ZzX3NiLmgiIDMKc3RydWN0IGFkZnNfZGlzY21hcDsKc3RydWN0IGFk ZnNfZGlyX29wczsKCgoKCnN0cnVjdCBhZGZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCBhZGZz X2Rpc2NtYXAgKnNfbWFwOwogICAgICAgIHN0cnVjdCBhZGZzX2Rpcl9vcHMgKnNfZGlyOwoKICAg ICAgICB1aWRfdCBzX3VpZDsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNf b3duZXJfbWFzazsKICAgICAgICB1bW9kZV90IHNfb3RoZXJfbWFzazsKCiAgICAgICAgX191MzIg c19pZHNfcGVyX3pvbmU7CiAgICAgICAgX191MzIgc19pZGxlbjsKICAgICAgICBfX3UzMiBzX21h cF9zaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19zaXplOwogICAgICAgIHNpZ25lZCBpbnQg c19tYXAyYmxrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2xvZzJzaGFyZXNpemU7CiAgICAgICAg dW5zaWduZWQgaW50IHNfdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19uYW1lbGVuOwp9 OwojIDYzOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9saW51eC9mcy5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMSAz CiMgMTQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz LWluY2x1ZGUvbGludXgvcW54NF9mc19zYi5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9xbng0X2ZzLmgiIDEg MwojIDQ1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L3FueDRfZnMuaCIgMwpzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSB7CiAg ICAgICAgY2hhciBkaV9mbmFtZVsxNl07CiAgICAgICAgcW54NF9vZmZfdCBkaV9zaXplOwogICAg ICAgIHFueDRfeHRudF90IGRpX2ZpcnN0X3h0bnQ7CiAgICAgICAgX191MzIgZGlfeGJsazsKICAg ICAgICBfX3MzMiBkaV9mdGltZTsKICAgICAgICBfX3MzMiBkaV9tdGltZTsKICAgICAgICBfX3Mz MiBkaV9hdGltZTsKICAgICAgICBfX3MzMiBkaV9jdGltZTsKICAgICAgICBxbng0X254dG50X3Qg ZGlfbnVtX3h0bnRzOwogICAgICAgIHFueDRfbW9kZV90IGRpX21vZGU7CiAgICAgICAgcW54NF9t dWlkX3QgZGlfdWlkOwogICAgICAgIHFueDRfbWdpZF90IGRpX2dpZDsKICAgICAgICBxbng0X25s aW5rX3QgZGlfbmxpbms7CiAgICAgICAgX191OCBkaV96ZXJvWzRdOwogICAgICAgIHFueDRfZnR5 cGVfdCBkaV90eXBlOwogICAgICAgIF9fdTggZGlfc3RhdHVzOwp9OwoKc3RydWN0IHFueDRfbGlu a19pbmZvIHsKICAgICAgICBjaGFyIGRsX2ZuYW1lWzQ4XTsKICAgICAgICBfX3UzMiBkbF9pbm9k ZV9ibGs7CiAgICAgICAgX191OCBkbF9pbm9kZV9uZHg7CiAgICAgICAgX191OCBkbF9zcGFyZVsx MF07CiAgICAgICAgX191OCBkbF9zdGF0dXM7Cn07CgpzdHJ1Y3QgcW54NF94YmxrIHsKICAgICAg ICBfX3UzMiB4YmxrX25leHRfeGJsazsKICAgICAgICBfX3UzMiB4YmxrX3ByZXZfeGJsazsKICAg ICAgICBfX3U4IHhibGtfbnVtX3h0bnRzOwogICAgICAgIF9fdTggeGJsa19zcGFyZVszXTsKICAg ICAgICBfX3MzMiB4YmxrX251bV9ibG9ja3M7CiAgICAgICAgcW54NF94dG50X3QgeGJsa194dG50 c1s2MF07CiAgICAgICAgY2hhciB4YmxrX3NpZ25hdHVyZVs4XTsKICAgICAgICBxbng0X3h0bnRf dCB4YmxrX2ZpcnN0X3h0bnQ7Cn07CgpzdHJ1Y3QgcW54NF9zdXBlcl9ibG9jayB7CiAgICAgICAg c3RydWN0IHFueDRfaW5vZGVfZW50cnkgUm9vdERpcjsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9k ZV9lbnRyeSBJbm9kZTsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSBCb290OwogICAg ICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IEFsdEJvb3Q7Cn07CiMgMTAwICIvb3B0L2ZzcC9p NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Fu eDRfZnMuaCIgMwpleHRlcm4gc3RydWN0IGRlbnRyeSAqcW54NF9sb29rdXAoc3RydWN0IGlub2Rl ICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHFueDRf Y291bnRfZnJlZV9ibG9ja3Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiB1bnNpZ25l ZCBsb25nIHFueDRfYmxvY2tfbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvbmcgaWJsb2NrKTsK CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfZ2V0YmxrKHN0cnVjdCBpbm9kZSAqLCBp bnQsIGludCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfYnJlYWQoc3RydWN0IGlu b2RlICosIGludCwgaW50KTsKCmV4dGVybiBpbnQgcW54NF9jcmVhdGUoc3RydWN0IGlub2RlICpk aXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpleHRlcm4gc3RydWN0IGlub2Rl X29wZXJhdGlvbnMgcW54NF9maWxlX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgaW5v ZGVfb3BlcmF0aW9ucyBxbng0X2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZp bGVfb3BlcmF0aW9ucyBxbng0X2ZpbGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29w ZXJhdGlvbnMgcW54NF9kaXJfb3BlcmF0aW9uczsKZXh0ZXJuIGludCBxbng0X2lzX2ZyZWUoc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYiwgbG9uZyBibG9jayk7CmV4dGVybiBpbnQgcW54NF9zZXRfYml0 bWFwKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGxvbmcgYmxvY2ssIGludCBidXN5KTsKZXh0ZXJu IGludCBxbng0X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnksIGludCBtb2RlKTsKZXh0ZXJuIHZvaWQgcW54NF90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlu b2RlKTsKZXh0ZXJuIHZvaWQgcW54NF9mcmVlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpl eHRlcm4gaW50IHFueDRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpk ZW50cnkpOwpleHRlcm4gaW50IHFueDRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBk ZW50cnkgKmRlbnRyeSk7CmV4dGVybiBpbnQgcW54NF9zeW5jX2ZpbGUoc3RydWN0IGZpbGUgKmZp bGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50KTsKZXh0ZXJuIGludCBxbng0X3N5bmNfaW5v ZGUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBpbnQgcW54NF9nZXRfYmxvY2soc3RydWN0 IGlub2RlICppbm9kZSwgbG9uZyBpYmxvY2ssIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCBj cmVhdGUpOwojIDE1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMiAzCgoKCgoKc3RydWN0IHFueDRf c2JfaW5mbyB7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzYl9idWY7CiAgICAgICAgc3Ry dWN0IHFueDRfc3VwZXJfYmxvY2sgKnNiOwogICAgICAgIHVuc2lnbmVkIGludCBWZXJzaW9uOwog ICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5ICpCaXRNYXA7Cn07CiMgNjQwICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4 L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt bGludXgvc3lzLWluY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMSAzCgoKCgoKCgojIDEg Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1 ZGUvbGludXgvdHF1ZXVlLmgiIDEgMwojIDE4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAzCiMgMSAiL29w dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9h c20vYml0b3BzLmgiIDEgMwojIDE5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIiAyIDMKIyAxICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9p bmNsdWRlL2FzbS9zeXN0ZW0uaCIgMSAzCiMgMjAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDIgMwojIDM4 ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2xpbnV4L3RxdWV1ZS5oIiAzCnN0cnVjdCB0cV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBs aXN0X2hlYWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHN5bmM7CiAgICAgICAgdm9pZCAo KnJvdXRpbmUpKHZvaWQgKik7CiAgICAgICAgdm9pZCAqZGF0YTsKfTsKIyA2NCAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90 cXVldWUuaCIgMwp0eXBlZGVmIHN0cnVjdCBsaXN0X2hlYWQgdGFza19xdWV1ZTsKCgoKCmV4dGVy biB0YXNrX3F1ZXVlIHRxX3RpbWVyLCB0cV9pbW1lZGlhdGUsIHRxX2Rpc2ssIHRxX2JkZmx1c2g7 CiMgOTQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz LWluY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDMKZXh0ZXJuIHNwaW5sb2NrX3QgdHF1ZXVlX2xvY2s7 CgoKCgoKc3RhdGljIGlubGluZSBpbnQgcXVldWVfdGFzayhzdHJ1Y3QgdHFfc3RydWN0ICpiaF9w b2ludGVyLCB0YXNrX3F1ZXVlICpiaF9saXN0KQp7CiAgICAgICAgaW50IHJldCA9IDA7CiAgICAg ICAgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KDAsJmJoX3BvaW50ZXItPnN5bmMpKSB7CiAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgICAgICAgICAgZG8geyAoe2ludF9j b250cm9sLmludF9zYXZlX2ZsYWdzKCh1bnNpZ25lZCBsb25nICopJmZsYWdzKTtpbnRfY29udHJv bC5pbnRfY2xpKCk7fSk7ICh2b2lkKSgmdHF1ZXVlX2xvY2spOyB9IHdoaWxlICgwKTsKICAgICAg ICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJmJoX3BvaW50ZXItPmxpc3QsIGJoX2xpc3QpOwogICAg ICAgICAgICAgICAgZG8geyBkbyB7IH0gd2hpbGUoMCk7IGludF9jb250cm9sLmludF9yZXN0b3Jl X2ZsYWdzKCh1bnNpZ25lZCBsb25nKWZsYWdzKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAg ICByZXQgPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0Owp9CgoKCgoKZXh0ZXJuIHZv aWQgX19ydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KTsKCnN0YXRpYyBpbmxpbmUgdm9p ZCBydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KQp7CiAgICAgICAgaWYgKCghbGlzdF9l bXB0eSgmKmxpc3QpKSkKICAgICAgICAgICAgICAgIF9fcnVuX3Rhc2tfcXVldWUobGlzdCk7Cn0K IyA5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p bmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiIDIgMwojIDI2ICIvb3B0L2ZzcC9pNTg2LXBj LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3JlaXNlcmZz X2ZzX3NiLmgiIDMKc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Jsb2NrCnsKICBfX3UzMiBzX2Jsb2Nr X2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7CiAgX191MzIgc19yb290X2Jsb2NrOwogIF9f dTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBzX2pvdXJuYWxfZGV2OwojIDQzICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4 L3JlaXNlcmZzX2ZzX3NiLmgiIDMKICBfX3UzMiBzX29yaWdfam91cm5hbF9zaXplOwogIF9fdTMy IHNfam91cm5hbF90cmFuc19tYXggOwogIF9fdTMyIHNfam91cm5hbF9ibG9ja19jb3VudCA7CiAg X191MzIgc19qb3VybmFsX21heF9iYXRjaCA7CiAgX191MzIgc19qb3VybmFsX21heF9jb21taXRf YWdlIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X3RyYW5zX2FnZSA7CiAgX191MTYgc19ibG9ja3Np emU7CiAgX191MTYgc19vaWRfbWF4c2l6ZTsKICBfX3UxNiBzX29pZF9jdXJzaXplOwogIF9fdTE2 IHNfc3RhdGU7CiAgY2hhciBzX21hZ2ljWzEyXTsKICBfX3UzMiBzX2hhc2hfZnVuY3Rpb25fY29k ZTsKICBfX3UxNiBzX3RyZWVfaGVpZ2h0OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3UxNiBzX3Zl cnNpb247CgoKCgogIF9fdTE2IHNfcmVzZXJ2ZWQ7CiAgY2hhciBzX3VudXNlZFsxMjhdIDsKfSBf X2F0dHJpYnV0ZV9fICgoX19wYWNrZWRfXykpOwoKCgoKc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Js b2NrX3YxCnsKICBfX3UzMiBzX2Jsb2NrX2NvdW50OwogIF9fdTMyIHNfZnJlZV9ibG9ja3M7CiAg X191MzIgc19yb290X2Jsb2NrOwogIF9fdTMyIHNfam91cm5hbF9ibG9jazsKICBfX3UzMiBzX2pv dXJuYWxfZGV2OwogIF9fdTMyIHNfb3JpZ19qb3VybmFsX3NpemU7CiAgX191MzIgc19qb3VybmFs X3RyYW5zX21heCA7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrX2NvdW50IDsKICBfX3UzMiBzX2pv dXJuYWxfbWF4X2JhdGNoIDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X2NvbW1pdF9hZ2UgOwogIF9f dTMyIHNfam91cm5hbF9tYXhfdHJhbnNfYWdlIDsKICBfX3UxNiBzX2Jsb2Nrc2l6ZTsKICBfX3Ux NiBzX29pZF9tYXhzaXplOwogIF9fdTE2IHNfb2lkX2N1cnNpemU7CiAgX191MTYgc19zdGF0ZTsK ICBjaGFyIHNfbWFnaWNbMTZdOwogIF9fdTE2IHNfdHJlZV9oZWlnaHQ7CiAgX191MTYgc19ibWFw X25yOwogIF9fdTMyIHNfcmVzZXJ2ZWQ7Cn0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18pKTsK IyAxNDggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz LWluY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMwpzdHJ1Y3QgcmVpc2VyZnNfam91cm5h bF9jbm9kZSB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCA7CiAga2Rldl90IGRldiA7CiAgdW5z aWduZWQgbG9uZyBibG9ja25yIDsKICBpbnQgc3RhdGUgOwogIHN0cnVjdCByZWlzZXJmc19qb3Vy bmFsX2xpc3QgKmpsaXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqbmV4dCA7 CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKnByZXYgOwogIHN0cnVjdCByZWlzZXJm c19qb3VybmFsX2Nub2RlICpocHJldiA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg KmhuZXh0IDsKfTsKCnN0cnVjdCByZWlzZXJmc19iaXRtYXBfbm9kZSB7CiAgaW50IGlkIDsKICBj aGFyICpkYXRhIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3QgOwp9IDsKCnN0cnVjdCByZWlzZXJm c19saXN0X2JpdG1hcCB7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCAqam91cm5hbF9s aXN0IDsKICBzdHJ1Y3QgcmVpc2VyZnNfYml0bWFwX25vZGUgKipiaXRtYXBzIDsKfSA7CgoKCgpz dHJ1Y3QgcmVpc2VyZnNfdHJhbnNhY3Rpb25faGFuZGxlIHsKCiAgY2hhciAqdF9jYWxsZXIgOwog IGludCB0X2Jsb2Nrc19sb2dnZWQgOwogIGludCB0X2Jsb2Nrc19hbGxvY2F0ZWQgOwogIHVuc2ln bmVkIGxvbmcgdF90cmFuc19pZCA7CiAgc3RydWN0IHN1cGVyX2Jsb2NrICp0X3N1cGVyIDsKCgp9 IDsKCgoKCgoKCnN0cnVjdCByZWlzZXJmc19qb3VybmFsX2xpc3QgewogIHVuc2lnbmVkIGxvbmcg al9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgYXRvbWljX3Qgal9ub256ZXJvbGVu IDsKICBhdG9taWNfdCBqX2NvbW1pdF9sZWZ0IDsKICBhdG9taWNfdCBqX2ZsdXNoaW5nIDsKICBh dG9taWNfdCBqX2NvbW1pdF9mbHVzaGluZyA7CiAgYXRvbWljX3Qgal9vbGRlcl9jb21taXRzX2Rv bmUgOwogIHVuc2lnbmVkIGxvbmcgal90cmFuc19pZCA7CiAgdGltZV90IGpfdGltZXN0YW1wIDsK ICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgKmpfbGlzdF9iaXRtYXAgOwogIHN0cnVjdCBi dWZmZXJfaGVhZCAqal9jb21taXRfYmggOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2Rl ICpqX3JlYWxibG9jayA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZnJlZWRs aXN0IDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2NvbW1pdF93YWl0IDsKICB3YWl0X3F1ZXVlX2hl YWRfdCBqX2ZsdXNoX3dhaXQgOwp9IDsKCnN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgOwoKc3Ry dWN0IHJlaXNlcmZzX2pvdXJuYWwgewogIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBqX2FwX2Jsb2Nr cyA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfbGFzdCA7CiAgc3RydWN0IHJl aXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZmlyc3QgOwoKICBpbnQgal9zdGF0ZSA7CiAgdW5zaWdu ZWQgbG9uZyBqX3RyYW5zX2lkIDsKICB1bnNpZ25lZCBsb25nIGpfbW91bnRfaWQgOwogIHVuc2ln bmVkIGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xlbiA7CiAgdW5zaWduZWQgbG9u ZyBqX2xlbl9hbGxvYyA7CiAgYXRvbWljX3Qgal93Y291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9i Y291bnQgOwogIHVuc2lnbmVkIGxvbmcgal9maXJzdF91bmZsdXNoZWRfb2Zmc2V0IDsKICB1bnNp Z25lZCBsb25nIGpfbGFzdF9mbHVzaF90cmFuc19pZCA7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkICpq X2hlYWRlcl9iaCA7CgoKCgogIHN0cnVjdCByZWlzZXJmc19wYWdlX2xpc3QgKmpfZmx1c2hfcGFn ZXMgOwogIHRpbWVfdCBqX3RyYW5zX3N0YXJ0X3RpbWUgOwogIHdhaXRfcXVldWVfaGVhZF90IGpf d2FpdCA7CiAgYXRvbWljX3Qgal93bG9jayA7CiAgd2FpdF9xdWV1ZV9oZWFkX3Qgal9qb2luX3dh aXQgOwogIGF0b21pY190IGpfamxvY2sgOwogIGludCBqX2pvdXJuYWxfbGlzdF9pbmRleCA7CiAg aW50IGpfbGlzdF9iaXRtYXBfaW5kZXggOwogIGludCBqX211c3Rfd2FpdCA7CiAgaW50IGpfbmV4 dF9mdWxsX2ZsdXNoIDsKICBpbnQgal9uZXh0X2FzeW5jX2ZsdXNoIDsKCiAgaW50IGpfY25vZGVf dXNlZCA7CiAgaW50IGpfY25vZGVfZnJlZSA7CgogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nu b2RlICpqX2Nub2RlX2ZyZWVfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUg KmpfY25vZGVfZnJlZV9vcmlnIDsKCiAgaW50IGpfZnJlZV9iaXRtYXBfbm9kZXMgOwogIGludCBq X3VzZWRfYml0bWFwX25vZGVzIDsKICBzdHJ1Y3QgbGlzdF9oZWFkIGpfYml0bWFwX25vZGVzIDsK ICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgal9saXN0X2JpdG1hcFs1XSA7CiAgc3RydWN0 IHJlaXNlcmZzX2pvdXJuYWxfbGlzdCBqX2pvdXJuYWxfbGlzdFs2NF0gOwogIHN0cnVjdCByZWlz ZXJmc19qb3VybmFsX2Nub2RlICpqX2hhc2hfdGFibGVbODE5Ml0gOwogIHN0cnVjdCByZWlzZXJm c19qb3VybmFsX2Nub2RlICpqX2xpc3RfaGFzaF90YWJsZVs4MTkyXSA7Cgp9OwoKCgoKdHlwZWRl ZiBfX3UzMiAoKmhhc2hmX3QpIChjb25zdCBjaGFyICosIGludCk7CgoKc3RydWN0IHJlaXNlcmZz X3NiX2luZm8KewogICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CgoKICAgIHN0cnVjdCBy ZWlzZXJmc19zdXBlcl9ibG9jayAqIHNfcnM7CiAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiogc19h cF9iaXRtYXA7CiAgICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbCAqc19qb3VybmFsIDsKICAgIHVu c2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CgoKICAgIHZvaWQgKCplbmRfaW9faGFuZGxlciko c3RydWN0IGJ1ZmZlcl9oZWFkICosIGludCk7CiAgICBoYXNoZl90IHNfaGFzaF9mdW5jdGlvbjsK CgogICAgdW5zaWduZWQgbG9uZyBzX21vdW50X29wdDsKCgoKCiAgICB3YWl0X3F1ZXVlX2hlYWRf dCBzX3dhaXQ7CgogICAgYXRvbWljX3Qgc19nZW5lcmF0aW9uX2NvdW50ZXI7CgoKCiAgICBpbnQg c19rbWFsbG9jczsKICAgIGludCBzX2Rpc2tfcmVhZHM7CiAgICBpbnQgc19kaXNrX3dyaXRlczsK ICAgIGludCBzX2ZpeF9ub2RlczsKICAgIGludCBzX2RvX2JhbGFuY2U7CiAgICBpbnQgc191bm5l ZWRlZF9sZWZ0X25laWdoYm9yOwogICAgaW50IHNfZ29vZF9zZWFyY2hfYnlfa2V5X3JlYWRhOwog ICAgaW50IHNfYm1hcHM7CiAgICBpbnQgc19ibWFwc193aXRob3V0X3NlYXJjaDsKICAgIGludCBz X2RpcmVjdDJpbmRpcmVjdDsKICAgIGludCBzX2luZGlyZWN0MmRpcmVjdDsKfTsKIyAzNTcgIi9v cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv bGludXgvcmVpc2VyZnNfZnNfc2IuaCIgMwp2b2lkIHJlaXNlcmZzX2ZpbGVfYnVmZmVyIChzdHJ1 Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50IGxpc3QpOwppbnQgcmVpc2VyZnNfaXNfc3VwZXIoc3Ry dWN0IHN1cGVyX2Jsb2NrICpzKSA7CmludCBqb3VybmFsX21hcmtfZGlydHkoc3RydWN0IHJlaXNl cmZzX3RyYW5zYWN0aW9uX2hhbmRsZSAqLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGJ1 ZmZlcl9oZWFkICpiaCkgOwppbnQgZmx1c2hfb2xkX2NvbW1pdHMoc3RydWN0IHN1cGVyX2Jsb2Nr ICpzLCBpbnQpIDsKaW50IHNob3dfcmVpc2VyZnNfbG9ja3Modm9pZCkgOwppbnQgcmVpc2VyZnNf cmVzaXplKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nKSA7CiMgNjQxICIvb3B0 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp bnV4L2ZzLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYmZzX2ZzX3NiLmgiIDEgMwojIDEyICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4 L2Jmc19mc19zYi5oIiAzCnN0cnVjdCBiZnNfc2JfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBzaV9ibG9ja3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9mcmVlYjsKICAgICAgICB1bnNp Z25lZCBsb25nIHNpX2ZyZWVpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGZfaW9mZjsKICAg ICAgICB1bnNpZ25lZCBsb25nIHNpX2xmX3NibGs7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9s Zl9lYmxrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfbGFzdGk7CiAgICAgICAgY2hhciAqIHNp X2ltYXA7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2lfc2JoOwogICAgICAgIHN0cnVj dCBiZnNfc3VwZXJfYmxvY2sgKiBzaV9iZnNfc2I7Cn07CiMgNjQyICIvb3B0L2ZzcC9pNTg2LXBj LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDIg MwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz LWluY2x1ZGUvbGludXgvdWRmX2ZzX3NiLmgiIDEgMwojIDIxICIvb3B0L2ZzcC9pNTg2LXBjLWxp bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3VkZl9mc19zYi5o IiAzCiNwcmFnbWEgcGFjaygxKQojIDMwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3VkZl9mc19zYi5oIiAzCnN0cnVjdCB1 ZGZfc3BhcmluZ19kYXRhCnsKICAgICAgICBfX3UzMiBzX3NwYXJfbG9jWzRdOwogICAgICAgIF9f dTggc19zcGFyX3BzaGlmdDsKICAgICAgICBfX3U4IHNfc3Bhcl9pbmRleHNpemU7CiAgICAgICAg X191MzIgKnNfc3Bhcl9tYXA7CiAgICAgICAgdW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAg ICBfX3U4ICpzX3NwYXJfcmVtYXA4OwogICAgICAgICAgICAgICAgX191MTYgKnNfc3Bhcl9yZW1h cDE2OwogICAgICAgICAgICAgICAgX191MzIgKnNfc3Bhcl9yZW1hcDMyOwogICAgICAgIH0gc19z cGFyX3JlbWFwOwp9OwoKc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEKewogICAgICAgIF9fdTMyIHNf bnVtX2VudHJpZXM7CiAgICAgICAgX191MTYgc19zdGFydF9vZmZzZXQ7Cn07CgpzdHJ1Y3QgdWRm X3BhcnRfbWFwCnsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIF9fdTMy IGJpdG1hcDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqdGFibGU7CiAgICAgICAgfSBz X3VzcGFjZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIF9fdTMyIGJp dG1hcDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqdGFibGU7CiAgICAgICAgfSBzX2Zz cGFjZTsKICAgICAgICBfX3UzMiBzX3BhcnRpdGlvbl9yb290OwogICAgICAgIF9fdTMyIHNfcGFy dGl0aW9uX2xlbjsKICAgICAgICBfX3UxNiBzX3BhcnRpdGlvbl90eXBlOwogICAgICAgIF9fdTE2 IHNfcGFydGl0aW9uX251bTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAg IHN0cnVjdCB1ZGZfc3BhcmluZ19kYXRhIHNfc3BhcmluZzsKICAgICAgICAgICAgICAgIHN0cnVj dCB1ZGZfdmlydHVhbF9kYXRhIHNfdmlydHVhbDsKICAgICAgICB9IHNfdHlwZV9zcGVjaWZpYzsK ICAgICAgICBfX3UzMiAoKnNfcGFydGl0aW9uX2Z1bmMpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBf X3UzMiwgX191MTYsIF9fdTMyKTsKICAgICAgICBfX3UxNiBzX3ZvbHVtZXNlcW51bTsKICAgICAg ICBfX3UxNiBzX3BhcnRpdGlvbl9mbGFnczsKfTsKCiNwcmFnbWEgcGFjaygpCgpzdHJ1Y3QgdWRm X3NiX2luZm8KewogICAgICAgIHN0cnVjdCB1ZGZfcGFydF9tYXAgKnNfcGFydG1hcHM7CiAgICAg ICAgX191OCBzX3ZvbGlkZW50WzMyXTsKCgogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uczsKICAg ICAgICBfX3UxNiBzX3BhcnRpdGlvbjsKCgogICAgICAgIF9fdTMyIHNfc2Vzc2lvbjsKICAgICAg ICBfX3UzMiBzX2FuY2hvcls0XTsKICAgICAgICBfX3UzMiBzX2xhc3RibG9jazsKCiAgICAgICAg c3RydWN0IGJ1ZmZlcl9oZWFkICpzX2x2aWRiaDsKCiAgICAgICAgX191MTYgc19sb2FkZWRfYmxv Y2tfYml0bWFwczsKICAgICAgICBfX3UzMiBzX2Jsb2NrX2JpdG1hcF9udW1iZXJbOF07CiAgICAg ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX2Jsb2NrX2JpdG1hcFs4XTsKCgogICAgICAgIG1vZGVf dCBzX3VtYXNrOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVpZF90IHNfdWlkOwoKCiAg ICAgICAgdGltZV90IHNfcmVjb3JkdGltZTsKCgogICAgICAgIF9fdTE2IHNfc2VyaWFsbnVtOwoK CiAgICAgICAgX191MTYgc191ZGZyZXY7CgoKICAgICAgICBfX3UzMiBzX2ZsYWdzOwoKCiAgICAg ICAgc3RydWN0IGlub2RlICpzX3ZhdDsKfTsKIyA2NDMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCiMgMSAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9saW51eC9uY3BfZnNfc2IuaCIgMSAzCiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiIDMKIyAx ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2xpbnV4L25jcF9tb3VudC5oIiAxIDMKIyAxMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIgMwoj IDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu Y2x1ZGUvbGludXgvbmNwLmgiIDEgMwojIDIyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L25jcC5oIiAzCnN0cnVjdCBuY3Bf cmVxdWVzdF9oZWFkZXIgewogICAgICAgIF9fdTE2IHR5cGUgX19hdHRyaWJ1dGVfXygocGFja2Vk KSk7CiAgICAgICAgX191OCBzZXF1ZW5jZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg ICBfX3U4IGNvbm5fbG93IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggdGFz ayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGNvbm5faGlnaCBfX2F0dHJp YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZ1bmN0aW9uIF9fYXR0cmlidXRlX18oKHBh Y2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsK CgoKCnN0cnVjdCBuY3BfcmVwbHlfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0cmli dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg ICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25u X2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb21wbGV0aW9uX2Nv ZGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uZWN0aW9uX3N0YXRl IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJpYnV0 ZV9fKChwYWNrZWQpKTsKfTsKCgoKc3RydWN0IG5jcF92b2x1bWVfaW5mbyB7CiAgICAgICAgX191 MzIgdG90YWxfYmxvY2tzOwogICAgICAgIF9fdTMyIGZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMy IHB1cmdlYWJsZV9ibG9ja3M7CiAgICAgICAgX191MzIgbm90X3lldF9wdXJnZWFibGVfYmxvY2tz OwogICAgICAgIF9fdTMyIHRvdGFsX2Rpcl9lbnRyaWVzOwogICAgICAgIF9fdTMyIGF2YWlsYWJs ZV9kaXJfZW50cmllczsKICAgICAgICBfX3U4IHNlY3RvcnNfcGVyX2Jsb2NrOwogICAgICAgIGNo YXIgdm9sdW1lX25hbWVbKDE2KSArIDFdOwp9OwojIDExMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9uY3AuaCIgMwpzdHJ1 Y3QgbndfaW5mb19zdHJ1Y3QgewogICAgICAgIF9fdTMyIHNwYWNlQWxsb2MgX19hdHRyaWJ1dGVf XygocGFja2VkKSk7CiAgICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0dHJpYnV0ZV9fKChwYWNr ZWQpKTsKICAgICAgICBfX3UxNiBmbGFncyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg ICBfX3UzMiBkYXRhU3RyZWFtU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf X3UzMiB0b3RhbFN0cmVhbVNpemUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191 MTYgbnVtYmVyT2ZTdHJlYW1zIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2 IGNyZWF0aW9uVGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVh dGlvbkRhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgY3JlYXRvcklE IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1vZGlmeVRpbWUgX19hdHRy aWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5RGF0ZSBfX2F0dHJpYnV0ZV9f KChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtb2RpZmllcklEIF9fYXR0cmlidXRlX18oKHBhY2tl ZCkpOwogICAgICAgIF9fdTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkp OwogICAgICAgIF9fdTE2IGFyY2hpdmVUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg ICAgIF9fdTE2IGFyY2hpdmVEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9f dTMyIGFyY2hpdmVySUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgaW5o ZXJpdGVkUmlnaHRzTWFzayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBk aXJFbnROdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRG9zRGlyTnVt IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHZvbE51bWJlciBfX2F0dHJp YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBFQURhdGFTaXplIF9fYXR0cmlidXRlX18o KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBS2V5Q291bnQgX19hdHRyaWJ1dGVfXygocGFja2Vk KSk7CiAgICAgICAgX191MzIgRUFLZXlTaXplIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg ICAgIF9fdTMyIE5TQ3JlYXRvciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4 IG5hbWVMZW4gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBlbnRyeU5hbWVb MjU2XSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKfTsKIyAxNTYgIi9vcHQvZnNwL2k1ODYtcGMt bGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmNwLmgiIDMK c3RydWN0IG53X21vZGlmeV9kb3NfaW5mbyB7CiAgICAgICAgX191MzIgYXR0cmlidXRlcyBfX2F0 dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvbkRhdGUgX19hdHRyaWJ1 dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgY3JlYXRpb25UaW1lIF9fYXR0cmlidXRlX18o KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGNyZWF0b3JJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp KTsKICAgICAgICBfX3UxNiBtb2RpZnlEYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAg ICAgIF9fdTE2IG1vZGlmeVRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191 MzIgbW9kaWZpZXJJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNo aXZlRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlVGlt ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBhcmNoaXZlcklEIF9fYXR0 cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGxhc3RBY2Nlc3NEYXRlIF9fYXR0cmli dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGluaGVyaXRhbmNlR3JhbnRNYXNrIF9fYXR0 cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGluaGVyaXRhbmNlUmV2b2tlTWFzayBf X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtYXhpbXVtU3BhY2UgX19hdHRy aWJ1dGVfXygocGFja2VkKSk7Cn07CgpzdHJ1Y3Qgbndfc2VhcmNoX3NlcXVlbmNlIHsKICAgICAg ICBfX3U4IHZvbE51bWJlciBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBk aXJCYXNlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIHNlcXVlbmNlIF9f YXR0cmlidXRlX18oKHBhY2tlZCkpOwp9OwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L25jcF9tb3VudC5oIiAyIDMK IyAyNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIgMwpzdHJ1Y3QgbmNwX21vdW50X2RhdGEgewogICAg ICAgIGludCB2ZXJzaW9uOwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAgX19r ZXJuZWxfdWlkX3QgbW91bnRlZF91aWQ7CiAgICAgICAgX19rZXJuZWxfcGlkX3Qgd2RvZ19waWQ7 CgogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRlZF92b2xbKDE2KSArIDFdOwogICAgICAgIHVu c2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2NvdW50Owog ICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKCiAgICAgICAgX19rZXJuZWxfdWlkX3QgdWlkOwog ICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZmlsZV9t b2RlOwogICAgICAgIF9fa2VybmVsX21vZGVfdCBkaXJfbW9kZTsKfTsKCgoKc3RydWN0IG5jcF9t b3VudF9kYXRhX3Y0IHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBsb25n IGZsYWdzOwoKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtb3VudGVkX3VpZDsKCiAgICAgICAgbG9u ZyB3ZG9nX3BpZDsKCiAgICAgICAgdW5zaWduZWQgaW50IG5jcF9mZDsKICAgICAgICB1bnNpZ25l ZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2lnbmVkIGludCByZXRyeV9jb3VudDsKCgoKICAg ICAgICB1bnNpZ25lZCBsb25nIHVpZDsKICAgICAgICB1bnNpZ25lZCBsb25nIGdpZDsKCiAgICAg ICAgdW5zaWduZWQgbG9uZyBmaWxlX21vZGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkaXJfbW9k ZTsKfTsKCgoKc3RydWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCB7CiAgICAgICAgdW5zaWduZWQg bG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBpbnQgaW50X2ZsYWdzOwoKICAgICAgICBfX2tl cm5lbF91aWQzMl90IG1vdW50ZWRfdWlkOwogICAgICAgIF9fa2VybmVsX3BpZF90IHdkb2dfcGlk OwogICAgICAgIHVuc2lnbmVkIGludCBuY3BfZmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRpbWVf b3V0OwoKICAgICAgICB1bnNpZ25lZCBpbnQgcmV0cnlfY291bnQ7CiAgICAgICAgdW5zaWduZWQg Y2hhciBtb3VudGVkX3ZvbFsoMTYpICsgMV07CiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCB1aWQ7 CiAgICAgICAgX19rZXJuZWxfZ2lkMzJfdCBnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IGZp bGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZGlyX21vZGU7Cn07CiMgMTMgIi9vcHQv ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu dXgvbmNwX2ZzX3NiLmgiIDIgMwoKCgoKCnN0cnVjdCBuY3Bfc2VydmVyIHsKCiAgICAgICAgc3Ry dWN0IG5jcF9tb3VudF9kYXRhX2tlcm5lbCBtOwoKCgogICAgICAgIF9fdTggbmFtZV9zcGFjZVso NjQpICsgMl07CgogICAgICAgIHN0cnVjdCBmaWxlICpuY3BfZmlscDsKCiAgICAgICAgdTggc2Vx dWVuY2U7CiAgICAgICAgdTggdGFzazsKICAgICAgICB1MTYgY29ubmVjdGlvbjsKCiAgICAgICAg dTggY29tcGxldGlvbjsKICAgICAgICB1OCBjb25uX3N0YXR1czsKCgoKICAgICAgICBpbnQgYnVm ZmVyX3NpemU7CgogICAgICAgIGludCByZXBseV9zaXplOwoKICAgICAgICBpbnQgcGFja2V0X3Np emU7CiAgICAgICAgdW5zaWduZWQgY2hhciAqcGFja2V0OwoKCiAgICAgICAgaW50IGxvY2s7CiAg ICAgICAgc3RydWN0IHNlbWFwaG9yZSBzZW07CgogICAgICAgIGludCBjdXJyZW50X3NpemU7CiAg ICAgICAgaW50IGhhc19zdWJmdW5jdGlvbjsKICAgICAgICBpbnQgbmNwX3JlcGx5X3NpemU7Cgog ICAgICAgIGludCByb290X3NldHVwZWQ7CgoKICAgICAgICBpbnQgc2lnbl93YW50ZWQ7CiAgICAg ICAgaW50IHNpZ25fYWN0aXZlOwogICAgICAgIGNoYXIgc2lnbl9yb290WzhdOwogICAgICAgIGNo YXIgc2lnbl9sYXN0WzE2XTsKCgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICBpbnQg YXV0aF90eXBlOwogICAgICAgICAgICAgICAgc2l6ZV90IG9iamVjdF9uYW1lX2xlbjsKICAgICAg ICAgICAgICAgIHZvaWQqIG9iamVjdF9uYW1lOwogICAgICAgICAgICAgICAgaW50IG9iamVjdF90 eXBlOwogICAgICAgIH0gYXV0aDsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHNp emVfdCBsZW47CiAgICAgICAgICAgICAgICB2b2lkKiBkYXRhOwogICAgICAgIH0gcHJpdjsKCgog ICAgICAgIHN0cnVjdCBubHNfdGFibGUgKm5sc192b2w7CiAgICAgICAgc3RydWN0IG5sc190YWJs ZSAqbmxzX2lvOwoKCiAgICAgICAgaW50IGRlbnRyeV90dGw7CgoKICAgICAgICB1bnNpZ25lZCBp bnQgZmxhZ3M7Cn07CiMgOTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbmNwX2ZzX3NiLmgiIDMKc3RhdGljIGlubGluZSBp bnQgbmNwX2Nvbm5fdmFsaWQoc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikKewogICAgICAgIHJl dHVybiAoKHNlcnZlci0+Y29ubl9zdGF0dXMgJiAweDExKSA9PSAwKTsKfQoKc3RhdGljIGlubGlu ZSB2b2lkIG5jcF9pbnZhbGlkYXRlX2Nvbm4oc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikKewog ICAgICAgIHNlcnZlci0+Y29ubl9zdGF0dXMgfD0gMHgwMTsKfQojIDY0NCAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5o IiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4 L3N5cy1pbmNsdWRlL2xpbnV4L3VzYmRldl9mc19zYi5oIiAxIDMKc3RydWN0IHVzYmRldl9zYl9p bmZvIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNsaXN0OwogICAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgaWxpc3Q7CiAgICAgICAgdWlkX3QgZGV2dWlkOwogICAgICAgIGdpZF90IGRldmdpZDsK ICAgICAgICB1bW9kZV90IGRldm1vZGU7CiAgICAgICAgdWlkX3QgYnVzdWlkOwogICAgICAgIGdp ZF90IGJ1c2dpZDsKICAgICAgICB1bW9kZV90IGJ1c21vZGU7Cn07CiMgNjQ1ICIvb3B0L2ZzcC9p NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Zz LmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMSAzCgoKCgoKCgojIDEgIi9vcHQv ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu dXgvY29tcGxldGlvbi5oIiAxIDMKIyAxNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiIDMKc3RydWN0 IGNvbXBsZXRpb24gewogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgczsKfTsKIyA5ICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4 L2pmZnMyX2ZzX3NiLmgiIDIgMwoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90aW1lci5oIiAxIDMKIyAyMCAiL29w dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s aW51eC90aW1lci5oIiAzCnN0cnVjdCB0aW1lcl9saXN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkIGxpc3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBleHBpcmVzOwogICAgICAgIHVuc2lnbmVk IGxvbmcgZGF0YTsKICAgICAgICB2b2lkICgqZnVuY3Rpb24pKHVuc2lnbmVkIGxvbmcpOwp9OwoK ZXh0ZXJuIHZvaWQgYWRkX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpOwpleHRlcm4g aW50IGRlbF90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKTsKIyA0NSAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90 aW1lci5oIiAzCmludCBtb2RfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25l ZCBsb25nIGV4cGlyZXMpOwoKZXh0ZXJuIHZvaWQgaXRfcmVhbF9mbih1bnNpZ25lZCBsb25nKTsK CnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIp CnsKICAgICAgICB0aW1lci0+bGlzdC5uZXh0ID0gdGltZXItPmxpc3QucHJldiA9ICgodm9pZCAq KTApOwp9CgpzdGF0aWMgaW5saW5lIGludCB0aW1lcl9wZW5kaW5nIChjb25zdCBzdHJ1Y3QgdGlt ZXJfbGlzdCAqIHRpbWVyKQp7CiAgICAgICAgcmV0dXJuIHRpbWVyLT5saXN0Lm5leHQgIT0gKCh2 b2lkICopMCk7Cn0KIyAxMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9qZmZzMl9mc19zYi5oIiAyIDMKIyAyMiAiL29wdC9m c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51 eC9qZmZzMl9mc19zYi5oIiAzCnN0cnVjdCBqZmZzMl9zYl9pbmZvIHsKICAgICAgICBzdHJ1Y3Qg bXRkX2luZm8gKm10ZDsKCiAgICAgICAgdWludDMyX3QgaGlnaGVzdF9pbm87CiAgICAgICAgdW5z aWduZWQgaW50IGZsYWdzOwoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmdjX3Rhc2s7CiAg ICAgICAgc3RydWN0IHNlbWFwaG9yZSBnY190aHJlYWRfc3RhcnQ7CiAgICAgICAgc3RydWN0IGNv bXBsZXRpb24gZ2NfdGhyZWFkX2V4aXQ7CgogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgYWxsb2Nf c2VtOwoKCgoKICAgICAgICB1aW50MzJfdCBmbGFzaF9zaXplOwogICAgICAgIHVpbnQzMl90IHVz ZWRfc2l6ZTsKICAgICAgICB1aW50MzJfdCBkaXJ0eV9zaXplOwogICAgICAgIHVpbnQzMl90IGZy ZWVfc2l6ZTsKICAgICAgICB1aW50MzJfdCBlcmFzaW5nX3NpemU7CiAgICAgICAgdWludDMyX3Qg YmFkX3NpemU7CiAgICAgICAgdWludDMyX3Qgc2VjdG9yX3NpemU7CgogICAgICAgIHVpbnQzMl90 IG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIHVpbnQzMl90IG5yX2VyYXNpbmdfYmxvY2tzOwoKICAg ICAgICB1aW50MzJfdCBucl9ibG9ja3M7CiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sg KmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKm5leHRibG9jazsKCiAg ICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdjYmxvY2s7CgogICAgICAgIHN0cnVjdCBs aXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHZlcnlfZGlydHlf bGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X2xpc3Q7CiAgICAgICAgc3RydWN0 IGxpc3RfaGVhZCBlcmFzYWJsZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZXJhc2Fi bGVfcGVuZGluZ193YnVmX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5nX2xp c3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAgICAg c3RydWN0IGxpc3RfaGVhZCBlcmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgZnJlZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAgICAg ICAgc3RydWN0IGxpc3RfaGVhZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190IGVy YXNlX2NvbXBsZXRpb25fbG9jazsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vfd2Fp dDsKCiAgICAgICAgc3RydWN0IGpmZnMyX2lub2RlX2NhY2hlICppbm9jYWNoZV9saXN0WzE0XTsK ICAgICAgICBzcGlubG9ja190IGlub2NhY2hlX2xvY2s7CgogICAgICAgIHN0cnVjdCBqZmZzMl9p bm9kZV9jYWNoZSAqaW5vY2FjaGVfbGFzdDsKCgoKCiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBl cmFzZV9mcmVlX3NlbTsKCgogICAgICAgIHVuc2lnbmVkIGNoYXIgKndidWY7CiAgICAgICAgdWlu dDMyX3Qgd2J1Zl9vZnM7CiAgICAgICAgdWludDMyX3Qgd2J1Zl9sZW47CiAgICAgICAgdWludDMy X3Qgd2J1Zl9wYWdlc2l6ZTsKICAgICAgICBzdHJ1Y3QgdHFfc3RydWN0IHdidWZfdGFzazsKICAg ICAgICBzdHJ1Y3QgdGltZXJfbGlzdCB3YnVmX3RpbWVyOwoKCiAgICAgICAgdm9pZCAqb3NfcHJp djsKfTsKIyA2NDYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMiAzCgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBz dXBlcl9ibG9ja3M7CgoKc3RydWN0IHN1cGVyX2Jsb2NrIHsKICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkIHNfbGlzdDsKICAgICAgICBrZGV2X3Qgc19kZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz X2Jsb2Nrc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfYmxvY2tzaXplX2JpdHM7CiAgICAg ICAgdW5zaWduZWQgY2hhciBzX2xvY2s7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2RpcnQ7CiAg ICAgICAgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKnNfdHlwZTsKICAgICAgICBzdHJ1Y3Qgc3Vw ZXJfb3BlcmF0aW9ucyAqc19vcDsKICAgICAgICBzdHJ1Y3QgZHF1b3Rfb3BlcmF0aW9ucyAqZHFf b3A7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcg c19tYWdpYzsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpzX3Jvb3Q7CiAgICAgICAgd2FpdF9xdWV1 ZV9oZWFkX3Qgc193YWl0OwoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfZGlydHk7CiAgICAg ICAgc3RydWN0IGxpc3RfaGVhZCBzX2ZpbGVzOwoKICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNl ICpzX2JkZXY7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX21vdW50czsKICAgICAgICBzdHJ1 Y3QgcXVvdGFfbW91bnRfb3B0aW9ucyBzX2RxdW90OwoKICAgICAgICB1bmlvbiB7CiAgICAgICAg ICAgICAgICBzdHJ1Y3QgbWluaXhfc2JfaW5mbyBtaW5peF9zYjsKICAgICAgICAgICAgICAgIHN0 cnVjdCBleHQyX3NiX2luZm8gZXh0Ml9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBocGZzX3Ni X2luZm8gaHBmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBudGZzX3NiX2luZm8gbnRmc19z YjsKICAgICAgICAgICAgICAgIHN0cnVjdCBtc2Rvc19zYl9pbmZvIG1zZG9zX3NiOwogICAgICAg ICAgICAgICAgc3RydWN0IGlzb2ZzX3NiX2luZm8gaXNvZnNfc2I7CiAgICAgICAgICAgICAgICBz dHJ1Y3QgbmZzX3NiX2luZm8gbmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHN5c3Zfc2Jf aW5mbyBzeXN2X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGFmZnNfc2JfaW5mbyBhZmZzX3Ni OwogICAgICAgICAgICAgICAgc3RydWN0IHVmc19zYl9pbmZvIHVmc19zYjsKICAgICAgICAgICAg ICAgIHN0cnVjdCBlZnNfc2JfaW5mbyBlZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2ht ZW1fc2JfaW5mbyBzaG1lbV9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCByb21mc19zYl9pbmZv IHJvbWZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHNtYl9zYl9pbmZvIHNtYmZzX3NiOwog ICAgICAgICAgICAgICAgc3RydWN0IGhmc19zYl9pbmZvIGhmc19zYjsKICAgICAgICAgICAgICAg IHN0cnVjdCBhZGZzX3NiX2luZm8gYWRmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBxbng0 X3NiX2luZm8gcW54NF9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCByZWlzZXJmc19zYl9pbmZv IHJlaXNlcmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGJmc19zYl9pbmZvIGJmc19zYjsK ICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZfc2JfaW5mbyB1ZGZfc2I7CiAgICAgICAgICAgICAg ICBzdHJ1Y3QgbmNwX3NlcnZlciBuY3Bmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCB1c2Jk ZXZfc2JfaW5mbyB1c2JkZXZmc19zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBqZmZzMl9zYl9p bmZvIGpmZnMyX3NiOwogICAgICAgICAgICAgICAgdm9pZCAqZ2VuZXJpY19zYnA7CiAgICAgICAg fSB1OwoKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfdmZzX3JlbmFtZV9zZW07CiMgNzEx ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2xpbnV4L2ZzLmgiIDMKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfbmZzZF9mcmVlX3Bh dGhfc2VtOwp9OwoKCgoKZXh0ZXJuIGludCB2ZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1 Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgdmZzX21rZGlyKHN0cnVjdCBpbm9kZSAqLCBz dHJ1Y3QgZGVudHJ5ICosIGludCk7CmV4dGVybiBpbnQgdmZzX21rbm9kKHN0cnVjdCBpbm9kZSAq LCBzdHJ1Y3QgZGVudHJ5ICosIGludCwgZGV2X3QpOwpleHRlcm4gaW50IHZmc19zeW1saW5rKHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQg dmZzX2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAq KTsKZXh0ZXJuIGludCB2ZnNfcm1kaXIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7 CmV4dGVybiBpbnQgdmZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsK ZXh0ZXJuIGludCB2ZnNfcmVuYW1lKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwojIDc0NSAiL29wdC9mc3AvaTU4Ni1wYy1s aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnR5 cGVkZWYgaW50ICgqZmlsbGRpcl90KSh2b2lkICosIGNvbnN0IGNoYXIgKiwgaW50LCBvZmZfdCwg aW5vX3QsIHVuc2lnbmVkKTsKCnN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7CiAgICAg ICAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBp bnQgKCpyZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGlu dCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkLCB1bnNp Z25lZCBsb25nKTsKICAgICAgICBpbnQgKCpjaGVja19tZWRpYV9jaGFuZ2UpIChrZGV2X3QpOwog ICAgICAgIGludCAoKnJldmFsaWRhdGUpIChrZGV2X3QpOwp9OwoKCgoKCgpzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIHsKICAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcjsKICAgICAgICBsb2ZmX3Qg KCpsbHNlZWspIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGludCk7CiAgICAgICAgc3NpemVfdCAo KnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogICAgICAg IHNzaXplX3QgKCp3cml0ZSkgKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBs b2ZmX3QgKik7CiAgICAgICAgaW50ICgqcmVhZGRpcikgKHN0cnVjdCBmaWxlICosIHZvaWQgKiwg ZmlsbGRpcl90KTsKICAgICAgICB1bnNpZ25lZCBpbnQgKCpwb2xsKSAoc3RydWN0IGZpbGUgKiwg c3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwogICAgICAgIGludCAoKmlvY3RsKSAoc3RydWN0 IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyk7CiAg ICAgICAgaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq KTsKICAgICAgICBpbnQgKCpvcGVuKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwog ICAgICAgIGludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgqcmVsZWFz ZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpmc3luYykg KHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwgaW50IGRhdGFzeW5jKTsKICAgICAgICBp bnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBmaWxlICosIGludCk7CiAgICAgICAgaW50ICgqbG9j aykgKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZpbGVfbG9jayAqKTsKICAgICAgICBzc2l6 ZV90ICgqcmVhZHYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWdu ZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0ZXYpIChzdHJ1Y3QgZmls ZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICopOwp9OwoK c3RydWN0IGlub2RlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmNyZWF0ZSkgKHN0cnVjdCBp bm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQpOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiAoKmxv b2t1cCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgqbGlu aykgKHN0cnVjdCBkZW50cnkgKixzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwogICAg ICAgIGludCAoKnVubGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAg ICAgaW50ICgqc3ltbGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixjb25zdCBj aGFyICopOwogICAgICAgIGludCAoKm1rZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRy eSAqLGludCk7CiAgICAgICAgaW50ICgqcm1kaXIpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVu dHJ5ICopOwogICAgICAgIGludCAoKm1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRy eSAqLGludCxpbnQpOwogICAgICAgIGludCAoKnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1 Y3QgZGVudHJ5ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqLCBzdHJ1 Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnJlYWRsaW5rKSAoc3RydWN0IGRlbnRyeSAqLCBj aGFyICosaW50KTsKICAgICAgICBpbnQgKCpmb2xsb3dfbGluaykgKHN0cnVjdCBkZW50cnkgKiwg c3RydWN0IG5hbWVpZGF0YSAqKTsKICAgICAgICB2b2lkICgqdHJ1bmNhdGUpIChzdHJ1Y3QgaW5v ZGUgKik7CiAgICAgICAgaW50ICgqcGVybWlzc2lvbikgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwog ICAgICAgIGludCAoKnJldmFsaWRhdGUpIChzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAo KnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKICAgICAgICBpbnQg KCpnZXRhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgoKCgoKc3Ry dWN0IHN1cGVyX29wZXJhdGlvbnMgewogICAgICAgIHZvaWQgKCpyZWFkX2lub2RlKSAoc3RydWN0 IGlub2RlICopOwoKCgoKCgoKICAgICAgICB2b2lkICgqcmVhZF9pbm9kZTIpIChzdHJ1Y3QgaW5v ZGUgKiwgdm9pZCAqKSA7CiAgICAgICAgdm9pZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlub2Rl ICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwog ICAgICAgIHZvaWQgKCpwdXRfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgdm9pZCAo KmRlbGV0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqcHV0X3N1cGVy KSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9zdXBlcikgKHN0 cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgqd3JpdGVfc3VwZXJfbG9ja2ZzKSAo c3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQgKCp1bmxvY2tmcykgKHN0cnVjdCBz dXBlcl9ibG9jayAqKTsKICAgICAgICBpbnQgKCpzdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg Kiwgc3RydWN0IHN0YXRmcyAqKTsKICAgICAgICBpbnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0IHN1 cGVyX2Jsb2NrICosIGludCAqLCBjaGFyICopOwogICAgICAgIHZvaWQgKCpjbGVhcl9pbm9kZSkg KHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqdW1vdW50X2JlZ2luKSAoc3RydWN0IHN1 cGVyX2Jsb2NrICopOwp9OwojIDgzNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCmV4dGVybiB2b2lkIF9fbWFy a19pbm9kZV9kaXJ0eShzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKc3RhdGljIGlubGluZSB2b2lkIG1h cmtfaW5vZGVfZGlydHkoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19pbm9k ZV9kaXJ0eShpbm9kZSwgKDEgfCAyIHwgNCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19p bm9kZV9kaXJ0eV9zeW5jKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21hcmtfaW5v ZGVfZGlydHkoaW5vZGUsIDEpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19pbm9kZV9kaXJ0 eV9wYWdlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJrX2lub2RlX2RpcnR5 KGlub2RlLCA0KTsKfQoKc3RydWN0IGRxdW90X29wZXJhdGlvbnMgewogICAgICAgIHZvaWQgKCpp bml0aWFsaXplKSAoc3RydWN0IGlub2RlICosIHNob3J0KTsKICAgICAgICB2b2lkICgqZHJvcCkg KHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICBpbnQgKCphbGxvY19ibG9jaykgKGNvbnN0IHN0cnVj dCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFyKTsKICAgICAgICBpbnQgKCphbGxvY19pbm9k ZSkgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAgICB2b2lkICgq ZnJlZV9ibG9jaykgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nKTsKICAgICAg ICB2b2lkICgqZnJlZV9pbm9kZSkgKGNvbnN0IHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25n KTsKICAgICAgICBpbnQgKCp0cmFuc2ZlcikgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlhdHRy ICopOwp9OwoKc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgewogICAgICAgIGNvbnN0IGNoYXIgKm5h bWU7CiAgICAgICAgaW50IGZzX2ZsYWdzOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqKCpy ZWFkX3N1cGVyKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KTsKICAgICAgICBz dHJ1Y3QgbW9kdWxlICpvd25lcjsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKmtlcm5fbW50Owog ICAgICAgIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICogbmV4dDsKfTsKIyA4OTUgIi9vcHQvZnNw L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv ZnMuaCIgMwpleHRlcm4gaW50IHJlZ2lzdGVyX2ZpbGVzeXN0ZW0oc3RydWN0IGZpbGVfc3lzdGVt X3R5cGUgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9maWxlc3lzdGVtKHN0cnVjdCBmaWxlX3N5 c3RlbV90eXBlICopOwpleHRlcm4gc3RydWN0IHZmc21vdW50ICprZXJuX21vdW50KHN0cnVjdCBm aWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gdm9pZCBrZXJuX3Vtb3VudChzdHJ1Y3QgdmZzbW91 bnQgKik7CmV4dGVybiBpbnQgbWF5X3Vtb3VudChzdHJ1Y3QgdmZzbW91bnQgKik7CmV4dGVybiBs b25nIGRvX21vdW50KGNoYXIgKiwgY2hhciAqLCBjaGFyICosIHVuc2lnbmVkIGxvbmcsIHZvaWQg Kik7CgoKZXh0ZXJuIGludCB2ZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qg c3RhdGZzICopOwojIDkxMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0 b3J5X2xvY2tlZChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0b3J5X2Fy ZWEoaW50LCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgbG9mZl90LCBzaXplX3QpOwoj IDkyMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9saW51eC9mcy5oIiAzCnN0YXRpYyBpbmxpbmUgaW50IGxvY2tzX3ZlcmlmeV9sb2Nr ZWQoc3RydWN0IGlub2RlICppbm9kZSkKewoKCgoKCgogICAgICAgIGlmICgoKChpbm9kZSktPmlf c2ItPnNfZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAx MCkpID09IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9s b2NrZWQoaW5vZGUpOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBsb2Nr c192ZXJpZnlfYXJlYShpbnQgcmVhZF93cml0ZSwgc3RydWN0IGlub2RlICppbm9kZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZpbGUgKmZpbHAsIGxvZmZfdCBv ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCkK ewoKCgoKCgogICAgICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoKChpbm9kZSktPmlfc2ItPnNf ZmxhZ3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAxMCkpID09 IDAwMDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9hcmVhKHJl YWRfd3JpdGUsIGlub2RlLCBmaWxwLCBvZmZzZXQsIGNvdW50KTsKICAgICAgICByZXR1cm4gMDsK fQoKc3RhdGljIGlubGluZSBpbnQgbG9ja3NfdmVyaWZ5X3RydW5jYXRlKHN0cnVjdCBpbm9kZSAq aW5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlICpm aWxwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2ZmX3Qgc2l6ZSkKewoK CgoKCgogICAgICAgIGlmIChpbm9kZS0+aV9mbG9jayAmJiAoKChpbm9kZSktPmlfc2ItPnNfZmxh Z3MgJiAoNjQpKSAmJiAoKGlub2RlKS0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAxMCkpID09IDAw MDIwMDApKQogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9hcmVhKAogICAg ICAgICAgICAgICAgICAgICAgICAyLCBpbm9kZSwgZmlscCwKICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZSA8IGlub2RlLT5pX3NpemUgPyBzaXplIDogaW5vZGUtPmlfc2l6ZSwKICAgICAgICAg ICAgICAgICAgICAgICAgKHNpemUgPCBpbm9kZS0+aV9zaXplID8gaW5vZGUtPmlfc2l6ZSAtIHNp emUKICAgICAgICAgICAgICAgICAgICAgICAgIDogc2l6ZSAtIGlub2RlLT5pX3NpemUpCiAgICAg ICAgICAgICAgICApOwogICAgICAgIHJldHVybiAwOwp9CgpleHRlcm4gaW5saW5lIGludCBnZXRf bGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgaW50IG1vZGUpCnsKCgoKCgoKICAg ICAgICBpZiAoaW5vZGUtPmlfZmxvY2sgJiYgKGlub2RlLT5pX2Zsb2NrLT5mbF9mbGFncyAmIDMy KSkKICAgICAgICAgICAgICAgIHJldHVybiBfX2dldF9sZWFzZShpbm9kZSwgbW9kZSk7CiAgICAg ICAgcmV0dXJuIDA7Cn0KCgoKIGxvbmcgc3lzX29wZW4oY29uc3QgY2hhciAqLCBpbnQsIGludCk7 CiBsb25nIHN5c19jbG9zZSh1bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50IGRvX3RydW5jYXRlKHN0 cnVjdCBkZW50cnkgKiwgbG9mZl90IHN0YXJ0KTsKCmV4dGVybiBzdHJ1Y3QgZmlsZSAqZmlscF9v cGVuKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBkZW50cnlf b3BlbihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLCBpbnQpOwpleHRlcm4gaW50 IGZpbHBfY2xvc2Uoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCBpZCk7CmV4dGVybiBjaGFyICog Z2V0bmFtZShjb25zdCBjaGFyICopOwoKCmV4dGVybiB2b2lkIHZmc19jYWNoZXNfaW5pdCh1bnNp Z25lZCBsb25nKTsKCgoKCmVudW0ge0JERVZfRklMRSwgQkRFVl9TV0FQLCBCREVWX0ZTLCBCREVW X1JBV307CmV4dGVybiBpbnQgcmVnaXN0ZXJfYmxrZGV2KHVuc2lnbmVkIGludCwgY29uc3QgY2hh ciAqLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgKik7CmV4dGVybiBpbnQgdW5yZWdp c3Rlcl9ibGtkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gc3RydWN0IGJs b2NrX2RldmljZSAqYmRnZXQoZGV2X3QpOwpleHRlcm4gdm9pZCBiZHB1dChzdHJ1Y3QgYmxvY2tf ZGV2aWNlICopOwpleHRlcm4gaW50IGJsa2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg ZmlsZSAqKTsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGVmX2Jsa19mb3BzOwpleHRl cm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZfZmlmb19mb3BzOwpleHRlcm4gaW50IGlvY3Rs X2J5X2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7 CmV4dGVybiBpbnQgYmxrZGV2X2dldChzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIG1vZGVfdCwgdW5z aWduZWQsIGludCk7CmV4dGVybiBpbnQgYmxrZGV2X3B1dChzdHJ1Y3QgYmxvY2tfZGV2aWNlICos IGludCk7CgoKZXh0ZXJuIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyAqZ2V0 X2Jsa2ZvcHModW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCByZWdpc3Rlcl9jaHJkZXYodW5zaWdu ZWQgaW50LCBjb25zdCBjaGFyICosIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKik7CmV4dGVybiBp bnQgdW5yZWdpc3Rlcl9jaHJkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4g aW50IGNocmRldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIGNv bnN0IGNoYXIgKiBiZGV2bmFtZShrZGV2X3QpOwpleHRlcm4gY29uc3QgY2hhciAqIGNkZXZuYW1l KGtkZXZfdCk7CmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWUoa2Rldl90KTsKZXh0ZXJuIHZv aWQgaW5pdF9zcGVjaWFsX2lub2RlKHN0cnVjdCBpbm9kZSAqLCB1bW9kZV90LCBpbnQpOwoKCmV4 dGVybiB2b2lkIG1ha2VfYmFkX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBpc19i YWRfaW5vZGUoc3RydWN0IGlub2RlICopOwoKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg cmVhZF9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHdyaXRlX2ZpZm9f Zm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmR3cl9maWZvX2ZvcHM7CmV4dGVy biBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfcGlwZV9mb3BzOwpleHRlcm4gc3RydWN0IGZp bGVfb3BlcmF0aW9ucyB3cml0ZV9waXBlX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRp b25zIHJkd3JfcGlwZV9mb3BzOwoKZXh0ZXJuIGludCBmc19tYXlfcmVtb3VudF9ybyhzdHJ1Y3Qg c3VwZXJfYmxvY2sgKik7CgpleHRlcm4gaW50IHRyeV90b19mcmVlX2J1ZmZlcnMoc3RydWN0IHBh Z2UgKiwgaW50KTsKZXh0ZXJuIHZvaWQgcmVmaWxlX2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQg KiBidWYpOwoKCmV4dGVybiB2b2lkIHNldF9idWZmZXJfYXN5bmNfaW8oc3RydWN0IGJ1ZmZlcl9o ZWFkICpiaCkgOwojIDEwNTEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMwpzdGF0aWMgaW5saW5lIHZvaWQgbWFy a19idWZmZXJfdXB0b2RhdGUoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgsIGludCBvbikKewogICAg ICAgIGlmIChvbikKICAgICAgICAgICAgICAgIHNldF9iaXQoMCwgJmJoLT5iX3N0YXRlKTsKICAg ICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVhcl9iaXQoMCwgJmJoLT5iX3N0YXRlKTsKfQoK CgpzdGF0aWMgaW5saW5lIHZvaWQgX19tYXJrX2J1ZmZlcl9jbGVhbihzdHJ1Y3QgYnVmZmVyX2hl YWQgKmJoKQp7CiAgICAgICAgcmVmaWxlX2J1ZmZlcihiaCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9p ZCBtYXJrX2J1ZmZlcl9jbGVhbihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIGlm ICh0ZXN0X2FuZF9jbGVhcl9iaXQoMSwgJihiaCktPmJfc3RhdGUpKQogICAgICAgICAgICAgICAg X19tYXJrX2J1ZmZlcl9jbGVhbihiaCk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9fbWFya19i dWZmZXJfcHJvdGVjdGVkKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAgICByZWZpbGVf YnVmZmVyKGJoKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX3Byb3RlY3RlZChz dHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCkKewogICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdCg2 LCAmKGJoKS0+Yl9zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX21hcmtfYnVmZmVyX3Byb3RlY3Rl ZChiaCk7Cn0KCmV4dGVybiB2b2lkIF9fbWFya19idWZmZXJfZGlydHkoc3RydWN0IGJ1ZmZlcl9o ZWFkICpiaCk7CmV4dGVybiB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVh ZCAqYmgpOwojIDEwOTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt bGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMwpzdGF0aWMgaW5saW5lIHZvaWQgYnVmZmVy X0lPX2Vycm9yKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQp7CiAgICAgICAgbWFya19idWZmZXJf Y2xlYW4oYmgpOwoKCgogICAgICAgIGJoLT5iX2VuZF9pbyhiaCwgMCk7Cn0KCmV4dGVybiB2b2lk IGJ1ZmZlcl9pbnNlcnRfaW5vZGVfcXVldWUoc3RydWN0IGJ1ZmZlcl9oZWFkICosIHN0cnVjdCBp bm9kZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5X2lub2RlKHN0cnVj dCBidWZmZXJfaGVhZCAqYmgsIHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBtYXJrX2J1 ZmZlcl9kaXJ0eShiaCk7CiAgICAgICAgYnVmZmVyX2luc2VydF9pbm9kZV9xdWV1ZShiaCwgaW5v ZGUpOwp9CgpleHRlcm4gdm9pZCBiYWxhbmNlX2RpcnR5KGtkZXZfdCk7CmV4dGVybiBpbnQgY2hl Y2tfZGlza19jaGFuZ2Uoa2Rldl90KTsKZXh0ZXJuIGludCBpbnZhbGlkYXRlX2lub2RlcyhzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfcGFnZXMoc3Ry dWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX2J1ZmZlcnMoc3RydWN0 IGlub2RlICopOwoKCmV4dGVybiB2b2lkIF9faW52YWxpZGF0ZV9idWZmZXJzKGtkZXZfdCBkZXYs IGludCk7CmV4dGVybiB2b2lkIHN5bmNfaW5vZGVzKGtkZXZfdCk7CmV4dGVybiB2b2lkIHdyaXRl X2lub2RlX25vdyhzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIHZvaWQgc3luY19kZXYoa2Rl dl90KTsKZXh0ZXJuIGludCBmc3luY19kZXYoa2Rldl90KTsKZXh0ZXJuIGludCBmc3luY19pbm9k ZV9idWZmZXJzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBvc3luY19pbm9kZV9idWZmZXJz KHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBpbm9kZV9oYXNfYnVmZmVycyhzdHJ1Y3QgaW5v ZGUgKik7CmV4dGVybiB2b2lkIGZpbGVtYXBfZmRhdGFzeW5jKHN0cnVjdCBhZGRyZXNzX3NwYWNl ICopOwpleHRlcm4gdm9pZCBmaWxlbWFwX2ZkYXRhd2FpdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAq KTsKZXh0ZXJuIHZvaWQgc3luY19zdXBlcnMoa2Rldl90KTsKZXh0ZXJuIGludCBibWFwKHN0cnVj dCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IG5vdGlmeV9jaGFuZ2Uoc3RydWN0IGRlbnRyeSAq LCBzdHJ1Y3QgaWF0dHIgKik7CmV4dGVybiBpbnQgcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwg aW50KTsKZXh0ZXJuIGludCB2ZnNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0 ZXJuIGludCBnZXRfd3JpdGVfYWNjZXNzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGludCBkZW55 X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqKTsKc3RhdGljIGlubGluZSB2b2lkIHB1dF93cml0 ZV9hY2Nlc3Moc3RydWN0IGlub2RlICogaW5vZGUpCnsKICAgICAgICAoKHZvaWQpIGF0b21pY19k ZWNfcmV0dXJuKCgmaW5vZGUtPmlfd3JpdGVjb3VudCkpKTsKfQpzdGF0aWMgaW5saW5lIHZvaWQg YWxsb3dfd3JpdGVfYWNjZXNzKHN0cnVjdCBmaWxlICpmaWxlKQp7CiAgICAgICAgaWYgKGZpbGUp CiAgICAgICAgICAgICAgICAoKHZvaWQpIGF0b21pY19pbmNfcmV0dXJuKCgmZmlsZS0+Zl9kZW50 cnktPmRfaW5vZGUtPmlfd3JpdGVjb3VudCkpKTsKfQpleHRlcm4gaW50IGRvX3BpcGUoaW50ICop OwoKZXh0ZXJuIGludCBvcGVuX25hbWVpKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQsIHN0cnVjdCBu YW1laWRhdGEgKik7CgpleHRlcm4gaW50IGtlcm5lbF9yZWFkKHN0cnVjdCBmaWxlICosIHVuc2ln bmVkIGxvbmcsIGNoYXIgKiwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBzdHJ1Y3QgZmlsZSAqIG9w ZW5fZXhlYyhjb25zdCBjaGFyICopOwoKCmV4dGVybiBpbnQgaXNfc3ViZGlyKHN0cnVjdCBkZW50 cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGlub190IGZpbmRfaW5vZGVfbnVtYmVyKHN0 cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CiMgMTE2NCAiL29wdC9mc3AvaTU4Ni1wYy1s aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnN0 YXRpYyBpbmxpbmUgdm9pZCAqRVJSX1BUUihsb25nIGVycm9yKQp7CiAgICAgICAgcmV0dXJuICh2 b2lkICopIGVycm9yOwp9CgpzdGF0aWMgaW5saW5lIGxvbmcgUFRSX0VSUihjb25zdCB2b2lkICpw dHIpCnsKICAgICAgICByZXR1cm4gKGxvbmcpIHB0cjsKfQoKc3RhdGljIGlubGluZSBsb25nIElT X0VSUihjb25zdCB2b2lkICpwdHIpCnsKICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpcHRy ID4gKHVuc2lnbmVkIGxvbmcpLTEwMDBMOwp9CiMgMTE5NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCmVudW0g e0xBU1RfTk9STSwgTEFTVF9ST09ULCBMQVNUX0RPVCwgTEFTVF9ET1RET1QsIExBU1RfQklORH07 CiMgMTIwNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9saW51eC9mcy5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBzaXplX3Qg d3JpdHRlbjsKICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgY2hhciAqIGJ1ZjsKICAgICAg ICBpbnQgZXJyb3I7Cn0gcmVhZF9kZXNjcmlwdG9yX3Q7Cgp0eXBlZGVmIGludCAoKnJlYWRfYWN0 b3JfdCkocmVhZF9kZXNjcmlwdG9yX3QgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZywg dW5zaWduZWQgbG9uZyk7CgoKZXh0ZXJuIGxvZmZfdCBkZWZhdWx0X2xsc2VlayhzdHJ1Y3QgZmls ZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CgpleHRlcm4gaW50IF9fdXNlcl93 YWxrKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1laWRhdGEgKik7CmV4dGVybiBp bnQgcGF0aF9pbml0KGNvbnN0IGNoYXIgKiwgdW5zaWduZWQsIHN0cnVjdCBuYW1laWRhdGEgKik7 CmV4dGVybiBpbnQgcGF0aF93YWxrKGNvbnN0IGNoYXIgKiwgc3RydWN0IG5hbWVpZGF0YSAqKTsK ZXh0ZXJuIHZvaWQgcGF0aF9yZWxlYXNlKHN0cnVjdCBuYW1laWRhdGEgKik7CmV4dGVybiBpbnQg Zm9sbG93X2Rvd24oc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3QgZGVudHJ5ICoqKTsKZXh0ZXJu IGludCBmb2xsb3dfdXAoc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3QgZGVudHJ5ICoqKTsKZXh0 ZXJuIHN0cnVjdCBkZW50cnkgKiBsb29rdXBfb25lKGNvbnN0IGNoYXIgKiwgc3RydWN0IGRlbnRy eSAqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBsb29rdXBfaGFzaChzdHJ1Y3QgcXN0ciAqLCBz dHJ1Y3QgZGVudHJ5ICopOwoKCgpleHRlcm4gdm9pZCBpcHV0KHN0cnVjdCBpbm9kZSAqKTsKZXh0 ZXJuIHZvaWQgZm9yY2VfZGVsZXRlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9k ZSAqIGlncmFiKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGlub190IGl1bmlxdWUoc3RydWN0IHN1 cGVyX2Jsb2NrICosIGlub190KTsKCnR5cGVkZWYgaW50ICgqZmluZF9pbm9kZV90KShzdHJ1Y3Qg aW5vZGUgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGln ZXQ0KHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nLCBmaW5kX2lub2RlX3QsIHZv aWQgKik7CnN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICppZ2V0KHN0cnVjdCBzdXBlcl9ibG9j ayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKQp7CiAgICAgICAgcmV0dXJuIGlnZXQ0KHNiLCBpbm8s ICgodm9pZCAqKTApLCAoKHZvaWQgKikwKSk7Cn0KCmV4dGVybiB2b2lkIGNsZWFyX2lub2RlKHN0 cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGdldF9lbXB0eV9pbm9kZSh2b2lk KTsKc3RhdGljIGlubGluZSBzdHJ1Y3QgaW5vZGUgKiBuZXdfaW5vZGUoc3RydWN0IHN1cGVyX2Js b2NrICpzYikKewogICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBnZXRfZW1wdHlfaW5vZGUo KTsKICAgICAgICBpZiAoaW5vZGUpIHsKICAgICAgICAgICAgICAgIGlub2RlLT5pX3NiID0gc2I7 CiAgICAgICAgICAgICAgICBpbm9kZS0+aV9kZXYgPSBzYi0+c19kZXY7CiAgICAgICAgfQogICAg ICAgIHJldHVybiBpbm9kZTsKfQpleHRlcm4gdm9pZCByZW1vdmVfc3VpZChzdHJ1Y3QgaW5vZGUg Kmlub2RlKTsKCmV4dGVybiB2b2lkIGluc2VydF9pbm9kZV9oYXNoKHN0cnVjdCBpbm9kZSAqKTsK ZXh0ZXJuIHZvaWQgcmVtb3ZlX2lub2RlX2hhc2goc3RydWN0IGlub2RlICopOwpleHRlcm4gc3Ry dWN0IGZpbGUgKiBnZXRfZW1wdHlfZmlscCh2b2lkKTsKZXh0ZXJuIHZvaWQgZmlsZV9tb3ZlKHN0 cnVjdCBmaWxlICpmLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KTsKZXh0ZXJuIHZvaWQgZmlsZV9t b3ZldG8oc3RydWN0IGZpbGUgKm5ldywgc3RydWN0IGZpbGUgKm9sZCk7CmV4dGVybiBzdHJ1Y3Qg YnVmZmVyX2hlYWQgKiBnZXRfaGFzaF90YWJsZShrZGV2X3QsIGludCwgaW50KTsKZXh0ZXJuIHN0 cnVjdCBidWZmZXJfaGVhZCAqIGdldGJsayhrZGV2X3QsIGludCwgaW50KTsKZXh0ZXJuIHZvaWQg bGxfcndfYmxvY2soaW50LCBpbnQsIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoW10pOwpleHRlcm4g dm9pZCBzdWJtaXRfYmgoaW50LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CmV4dGVybiBpbnQgaXNf cmVhZF9vbmx5KGtkZXZfdCk7CmV4dGVybiB2b2lkIF9fYnJlbHNlKHN0cnVjdCBidWZmZXJfaGVh ZCAqKTsKc3RhdGljIGlubGluZSB2b2lkIGJyZWxzZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJ1ZikK ewogICAgICAgIGlmIChidWYpCiAgICAgICAgICAgICAgICBfX2JyZWxzZShidWYpOwp9CmV4dGVy biB2b2lkIF9fYmZvcmdldChzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CnN0YXRpYyBpbmxpbmUgdm9p ZCBiZm9yZ2V0KHN0cnVjdCBidWZmZXJfaGVhZCAqYnVmKQp7CiAgICAgICAgaWYgKGJ1ZikKICAg ICAgICAgICAgICAgIF9fYmZvcmdldChidWYpOwp9CmV4dGVybiB2b2lkIHNldF9ibG9ja3NpemUo a2Rldl90LCBpbnQpOwpleHRlcm4gdW5zaWduZWQgaW50IGdldF9oYXJkYmxvY2tzaXplKGtkZXZf dCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBicmVhZChrZGV2X3QsIGludCwgaW50KTsK ZXh0ZXJuIHZvaWQgd2FrZXVwX2JkZmx1c2goaW50IHdhaXQpOwoKZXh0ZXJuIGludCBicndfcGFn ZShpbnQsIHN0cnVjdCBwYWdlICosIGtkZXZfdCwgaW50IFtdLCBpbnQpOwoKdHlwZWRlZiBpbnQg KGdldF9ibG9ja190KShzdHJ1Y3QgaW5vZGUqLGxvbmcsc3RydWN0IGJ1ZmZlcl9oZWFkKixpbnQp OwoKCmV4dGVybiBpbnQgYmxvY2tfZmx1c2hwYWdlKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxv bmcpOwpleHRlcm4gaW50IGJsb2NrX3N5bWxpbmsoc3RydWN0IGlub2RlICosIGNvbnN0IGNoYXIg KiwgaW50KTsKZXh0ZXJuIGludCBibG9ja193cml0ZV9mdWxsX3BhZ2Uoc3RydWN0IHBhZ2UqLCBn ZXRfYmxvY2tfdCopOwpleHRlcm4gaW50IGJsb2NrX3JlYWRfZnVsbF9wYWdlKHN0cnVjdCBwYWdl KiwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBibG9ja19wcmVwYXJlX3dyaXRlKHN0cnVjdCBw YWdlKiwgdW5zaWduZWQsIHVuc2lnbmVkLCBnZXRfYmxvY2tfdCopOwpleHRlcm4gaW50IGNvbnRf cHJlcGFyZV93cml0ZShzdHJ1Y3QgcGFnZSosIHVuc2lnbmVkLCB1bnNpZ25lZCwgZ2V0X2Jsb2Nr X3QqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKik7CmV4 dGVybiBpbnQgYmxvY2tfc3luY19wYWdlKHN0cnVjdCBwYWdlICopOwoKaW50IGdlbmVyaWNfYmxv Y2tfYm1hcChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb25nLCBnZXRfYmxvY2tfdCAqKTsKaW50 IGdlbmVyaWNfY29tbWl0X3dyaXRlKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICosIHVuc2ln bmVkLCB1bnNpZ25lZCk7CmludCBibG9ja190cnVuY2F0ZV9wYWdlKHN0cnVjdCBhZGRyZXNzX3Nw YWNlICosIGxvZmZfdCwgZ2V0X2Jsb2NrX3QgKik7CgpleHRlcm4gaW50IGdlbmVyaWNfZmlsZV9t bWFwKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKZXh0ZXJuIGludCBm aWxlX3JlYWRfYWN0b3IocmVhZF9kZXNjcmlwdG9yX3QgKiBkZXNjLCBzdHJ1Y3QgcGFnZSAqcGFn ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBzc2l6 ZV90IGdlbmVyaWNfZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2Zm X3QgKik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfZmlsZV93cml0ZShzdHJ1Y3QgZmlsZSAqLCBj b25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4gdm9pZCBkb19nZW5lcmljX2Zp bGVfcmVhZChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgcmVhZF9kZXNjcmlwdG9yX3QgKiwgcmVh ZF9hY3Rvcl90KTsKCmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcmVhZF9kaXIoc3RydWN0IGZpbGUg KiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRp b25zIGdlbmVyaWNfcm9fZm9wczsKCmV4dGVybiBpbnQgdmZzX3JlYWRsaW5rKHN0cnVjdCBkZW50 cnkgKiwgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZzX2ZvbGxvd19s aW5rKHN0cnVjdCBuYW1laWRhdGEgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBwYWdlX3Jl YWRsaW5rKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IHBhZ2VfZm9s bG93X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gc3Ry dWN0IGlub2RlX29wZXJhdGlvbnMgcGFnZV9zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7CgpleHRl cm4gaW50IHZmc19yZWFkZGlyKHN0cnVjdCBmaWxlICosIGZpbGxkaXJfdCwgdm9pZCAqKTsKZXh0 ZXJuIGludCBkY2FjaGVfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZpbGxkaXJfdCk7 CgpleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmdldF9mc190eXBlKGNvbnN0IGNoYXIg Km5hbWUpOwpleHRlcm4gc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfc3VwZXIoa2Rldl90KTsKc3Ry dWN0IHN1cGVyX2Jsb2NrICpnZXRfZW1wdHlfc3VwZXIodm9pZCk7CmV4dGVybiB2b2lkIHB1dF9z dXBlcihrZGV2X3QpOwp1bnNpZ25lZCBsb25nIGdlbmVyYXRlX2NsdXN0ZXIoa2Rldl90LCBpbnQg YltdLCBpbnQpOwp1bnNpZ25lZCBsb25nIGdlbmVyYXRlX2NsdXN0ZXJfc3dhYjMyKGtkZXZfdCwg aW50IGJbXSwgaW50KTsKZXh0ZXJuIGtkZXZfdCBST09UX0RFVjsKZXh0ZXJuIGNoYXIgcm9vdF9k ZXZpY2VfbmFtZVtdOwoKCmV4dGVybiB2b2lkIHNob3dfYnVmZmVycyh2b2lkKTsKZXh0ZXJuIHZv aWQgbW91bnRfcm9vdCh2b2lkKTsKCgpleHRlcm4ga2Rldl90IHJlYWxfcm9vdF9kZXY7CmV4dGVy biBpbnQgY2hhbmdlX3Jvb3Qoa2Rldl90LCBjb25zdCBjaGFyICopOwoKCmV4dGVybiBzc2l6ZV90 IGNoYXJfcmVhZChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRl cm4gc3NpemVfdCBibG9ja19yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2Zm X3QgKik7CmV4dGVybiBpbnQgcmVhZF9haGVhZFtdOwoKZXh0ZXJuIHNzaXplX3QgY2hhcl93cml0 ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwpleHRlcm4g c3NpemVfdCBibG9ja193cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwg bG9mZl90ICopOwoKZXh0ZXJuIGludCBmaWxlX2ZzeW5jKHN0cnVjdCBmaWxlICosIHN0cnVjdCBk ZW50cnkgKiwgaW50KTsKZXh0ZXJuIGludCBnZW5lcmljX2J1ZmZlcl9mZGF0YXN5bmMoc3RydWN0 IGlub2RlICppbm9kZSwgdW5zaWduZWQgbG9uZyBzdGFydF9pZHgsIHVuc2lnbmVkIGxvbmcgZW5k X2lkeCk7CmV4dGVybiBpbnQgZ2VuZXJpY19vc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKiwgaW50 KTsKCmV4dGVybiBpbnQgaW5vZGVfY2hhbmdlX29rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgaWF0 dHIgKik7CmV4dGVybiB2b2lkIGlub2RlX3NldGF0dHIoc3RydWN0IGlub2RlICosIHN0cnVjdCBp YXR0ciAqKTsKIyAxMzY5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2ZzLmgiIDMKc3RhdGljIGlubGluZSBzdHJ1Y3QgZGVu dHJ5ICpsb2NrX3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBzdHJ1Y3Qg ZGVudHJ5ICpkaXIgPSBkZ2V0KGRlbnRyeS0+ZF9wYXJlbnQpOwoKICAgICAgICBkb3duKCZkaXIt PmRfaW5vZGUtPmlfc2VtKTsKICAgICAgICByZXR1cm4gZGlyOwp9CgpzdGF0aWMgaW5saW5lIHN0 cnVjdCBkZW50cnkgKmdldF9wYXJlbnQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAg cmV0dXJuIGRnZXQoZGVudHJ5LT5kX3BhcmVudCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmxv Y2tfZGlyKHN0cnVjdCBkZW50cnkgKmRpcikKewogICAgICAgIHVwKCZkaXItPmRfaW5vZGUtPmlf c2VtKTsKICAgICAgICBkcHV0KGRpcik7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgZG91Ymxl X2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsIHN0cnVjdCBzZW1hcGhvcmUgKnMyKQp7CiAgICAg ICAgaWYgKHMxICE9IHMyKSB7CiAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMx IDwgKHVuc2lnbmVkIGxvbmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBz ZW1hcGhvcmUgKnRtcCA9IHMyOwogICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHMxOyBzMSA9 IHRtcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvd24oczEpOwogICAgICAg IH0KICAgICAgICBkb3duKHMyKTsKfQojIDE0MTMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZnMuaCIgMwpzdGF0aWMgaW5s aW5lIHZvaWQgdHJpcGxlX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICpzMiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgaWYgKHMxICE9IHMy KSB7CiAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxv bmcpIHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEg PCAodW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzMyA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcpIHMy KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1w ID0gczI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7 CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg ICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9u ZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3Jl ICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMxOyBzMSA9 IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBp ZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczM7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAgICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvd24oczEpOwog ICAgICAgIH0gZWxzZSBpZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMz KSB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAg ICAgICAgIHMzID0gczI7IHMyID0gdG1wOwogICAgICAgIH0KICAgICAgICBkb3duKHMyKTsKICAg ICAgICBkb3duKHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91cChzdHJ1Y3Qgc2Vt YXBob3JlICpzMSwgc3RydWN0IHNlbWFwaG9yZSAqczIpCnsKICAgICAgICB1cChzMSk7CiAgICAg ICAgaWYgKHMxICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwp9CgpzdGF0aWMgaW5saW5l IHZvaWQgdHJpcGxlX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgdXAoczEpOwogICAgICAgIGlmIChz MSAhPSBzMikKICAgICAgICAgICAgICAgIHVwKHMyKTsKICAgICAgICB1cChzMyk7Cn0KCnN0YXRp YyBpbmxpbmUgdm9pZCBkb3VibGVfbG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0IGRlbnRy eSAqZDIpCnsKICAgICAgICBkb3VibGVfZG93bigmZDEtPmRfaW5vZGUtPmlfc2VtLCAmZDItPmRf aW5vZGUtPmlfc2VtKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91bmxvY2soc3RydWN0 IGRlbnRyeSAqZDEsIHN0cnVjdCBkZW50cnkgKmQyKQp7CiAgICAgICAgZG91YmxlX3VwKCZkMS0+ ZF9pbm9kZS0+aV9zZW0sJmQyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dChkMSk7CiAg ICAgICAgZHB1dChkMik7Cn0KIyAxOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiIDIgMwojIDMyICIv b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl L2xpbnV4L2NhcGFiaWxpdHkuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX3VzZXJfY2FwX2hlYWRlcl9z dHJ1Y3QgewogICAgICAgIF9fdTMyIHZlcnNpb247CiAgICAgICAgaW50IHBpZDsKfSAqY2FwX3Vz ZXJfaGVhZGVyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBfX3VzZXJfY2FwX2RhdGFfc3RydWN0IHsKICAg ICAgICBfX3UzMiBlZmZlY3RpdmU7CiAgICAgICAgX191MzIgcGVybWl0dGVkOwogICAgICAgIF9f dTMyIGluaGVyaXRhYmxlOwp9ICpjYXBfdXNlcl9kYXRhX3Q7CiMgNTUgIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvY2FwYWJp bGl0eS5oIiAzCnR5cGVkZWYgX191MzIga2VybmVsX2NhcF90OwojIDI4NCAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9jYXBh YmlsaXR5LmgiIDMKZXh0ZXJuIGtlcm5lbF9jYXBfdCBjYXBfYnNldDsKIyAzMTIgIi9vcHQvZnNw L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv Y2FwYWJpbGl0eS5oIiAzCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9jb21iaW5lKGtl cm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgYikKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0Owog ICAgIChkZXN0KSA9IChhKSB8IChiKTsKICAgICByZXR1cm4gZGVzdDsKfQoKc3RhdGljIGlubGlu ZSBrZXJuZWxfY2FwX3QgY2FwX2ludGVyc2VjdChrZXJuZWxfY2FwX3QgYSwga2VybmVsX2NhcF90 IGIpCnsKICAgICBrZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSAoYSkgJiAoYik7CiAg ICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9kcm9wKGtl cm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgZHJvcCkKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0 OwogICAgIChkZXN0KSA9IChhKSAmIH4oZHJvcCk7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KCnN0YXRp YyBpbmxpbmUga2VybmVsX2NhcF90IGNhcF9pbnZlcnQoa2VybmVsX2NhcF90IGMpCnsKICAgICBr ZXJuZWxfY2FwX3QgZGVzdDsKICAgICAoZGVzdCkgPSB+KGMpOwogICAgIHJldHVybiBkZXN0Owp9 CiMgNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9saW51eC9iaW5mbXRzLmgiIDIgMwojIDIyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMwpz dHJ1Y3QgbGludXhfYmlucHJtewogICAgICAgIGNoYXIgYnVmWzEyOF07CiAgICAgICAgc3RydWN0 IHBhZ2UgKnBhZ2VbMzJdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcDsKICAgICAgICBpbnQgc2hf YmFuZzsKICAgICAgICBzdHJ1Y3QgZmlsZSAqIGZpbGU7CiAgICAgICAgaW50IGVfdWlkLCBlX2dp ZDsKICAgICAgICBrZXJuZWxfY2FwX3QgY2FwX2luaGVyaXRhYmxlLCBjYXBfcGVybWl0dGVkLCBj YXBfZWZmZWN0aXZlOwogICAgICAgIGludCBhcmdjLCBlbnZjOwogICAgICAgIGNoYXIgKiBmaWxl bmFtZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvYWRlciwgZXhlYzsKfTsKCgoKCgpzdHJ1Y3Qg bGludXhfYmluZm10IHsKICAgICAgICBzdHJ1Y3QgbGludXhfYmluZm10ICogbmV4dDsKICAgICAg ICBzdHJ1Y3QgbW9kdWxlICptb2R1bGU7CiAgICAgICAgaW50ICgqbG9hZF9iaW5hcnkpKHN0cnVj dCBsaW51eF9iaW5wcm0gKiwgc3RydWN0IHB0X3JlZ3MgKiByZWdzKTsKICAgICAgICBpbnQgKCps b2FkX3NobGliKShzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpjb3JlX2R1bXApKGxvbmcg c2lnbnIsIHN0cnVjdCBwdF9yZWdzICogcmVncywgc3RydWN0IGZpbGUgKiBmaWxlKTsKICAgICAg ICB1bnNpZ25lZCBsb25nIG1pbl9jb3JlZHVtcDsKfTsKCmV4dGVybiBpbnQgcmVnaXN0ZXJfYmlu Zm10KHN0cnVjdCBsaW51eF9iaW5mbXQgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9iaW5mbXQo c3RydWN0IGxpbnV4X2JpbmZtdCAqKTsKCmV4dGVybiBpbnQgcHJlcGFyZV9iaW5wcm0oc3RydWN0 IGxpbnV4X2JpbnBybSAqKTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX2FyZ196ZXJvKHN0cnVjdCBsaW51 eF9iaW5wcm0gKik7CmV4dGVybiBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51 eF9iaW5wcm0gKixzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIGludCBmbHVzaF9vbGRfZXhlYyhz dHJ1Y3QgbGludXhfYmlucHJtICogYnBybSk7CmV4dGVybiBpbnQgc2V0dXBfYXJnX3BhZ2VzKHN0 cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKTsKZXh0ZXJuIGludCBjb3B5X3N0cmluZ3MoaW50IGFy Z2MsY2hhciAqKiBhcmd2LHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pOwpleHRlcm4gaW50IGNv cHlfc3RyaW5nc19rZXJuZWwoaW50IGFyZ2MsY2hhciAqKiBhcmd2LHN0cnVjdCBsaW51eF9iaW5w cm0gKmJwcm0pOwpleHRlcm4gdm9pZCBjb21wdXRlX2NyZWRzKHN0cnVjdCBsaW51eF9iaW5wcm0g KmJpbnBybSk7CmV4dGVybiBpbnQgZG9fY29yZWR1bXAobG9uZyBzaWduciwgc3RydWN0IHB0X3Jl Z3MgKiByZWdzKTsKZXh0ZXJuIHZvaWQgc2V0X2JpbmZtdChzdHJ1Y3QgbGludXhfYmluZm10ICpu ZXcpOwojIDEwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4 L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGVyc29uYWxpdHku aCIgMSAzCgoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9jdXJyZW50LmgiIDEgMwoKCgoKCgoKcmVnaXN0ZXIgc3Ry dWN0IHRhc2tfc3RydWN0ICpjdXJyZW50IGFzbSAoInIyIik7CiMgNyAiL29wdC9mc3AvaTU4Ni1w Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wZXJzb25h bGl0eS5oIiAyIDMKIyAzNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wZXJzb25hbGl0eS5oIiAzCnR5cGVkZWYgdm9pZCAo KmxjYWxsN19mdW5jKShpbnQsIHN0cnVjdCBwdF9yZWdzICopOwoKCgoKCgoKc3RydWN0IGV4ZWNf ZG9tYWluIHsKICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgIGxjYWxsN19mdW5jIGhh bmRsZXI7CiAgICAgICAgdW5zaWduZWQgY2hhciBwZXJzX2xvdywgcGVyc19oaWdoOwogICAgICAg IHVuc2lnbmVkIGxvbmcgKiBzaWduYWxfbWFwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKiBzaWdu YWxfaW52bWFwOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKiBtb2R1bGU7CiAgICAgICAgc3RydWN0 IGV4ZWNfZG9tYWluICpuZXh0Owp9OwoKZXh0ZXJuIHN0cnVjdCBleGVjX2RvbWFpbiBkZWZhdWx0 X2V4ZWNfZG9tYWluOwoKZXh0ZXJuIGludCByZWdpc3Rlcl9leGVjX2RvbWFpbihzdHJ1Y3QgZXhl Y19kb21haW4gKml0KTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2V4ZWNfZG9tYWluKHN0cnVjdCBl eGVjX2RvbWFpbiAqaXQpOwoKCgoKZXh0ZXJuIHZvaWQgX19zZXRfcGVyc29uYWxpdHkodW5zaWdu ZWQgbG9uZyBwZXJzb25hbGl0eSk7CgoKCgogbG9uZyBzeXNfcGVyc29uYWxpdHkodW5zaWduZWQg bG9uZyBwZXJzb25hbGl0eSk7CiMgMTEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMiAzCiMgMSAiL29wdC9m c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51 eC90aHJlYWRzLmgiIDEgMwojIDEyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwoKCiMgMSAiL29wdC9m c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51 eC90aW1lcy5oIiAxIDMKCgoKc3RydWN0IHRtcyB7CiAgICAgICAgY2xvY2tfdCB0bXNfdXRpbWU7 CiAgICAgICAgY2xvY2tfdCB0bXNfc3RpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNfY3V0aW1lOwog ICAgICAgIGNsb2NrX3QgdG1zX2NzdGltZTsKfTsKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyIDMK IyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p bmNsdWRlL2xpbnV4L3RpbWV4LmgiIDEgMwojIDE1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90aW1leC5oIiAzCiMgMSAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9hc20vdGltZXguaCIgMSAzCiMgMTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3RpbWV4LmgiIDMKdHlwZWRlZiB1bnNpZ25l ZCBsb25nIGN5Y2xlc190OwojIDI4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS90aW1leC5oIiAzCmV4dGVybiBjeWNsZXNfdCBj YWNoZWZsdXNoX3RpbWU7CgpzdGF0aWMgaW5saW5lIGN5Y2xlc190IGdldF9jeWNsZXModm9pZCkK ewoKCgoKCgogICAgICAgIHJldHVybiAwOwoKfQojIDE1MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90aW1leC5oIiAyIDMK IyAxNTkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lz LWluY2x1ZGUvbGludXgvdGltZXguaCIgMwpzdHJ1Y3QgdGltZXggewogICAgICAgIHVuc2lnbmVk IGludCBtb2RlczsKICAgICAgICBsb25nIG9mZnNldDsKICAgICAgICBsb25nIGZyZXE7CiAgICAg ICAgbG9uZyBtYXhlcnJvcjsKICAgICAgICBsb25nIGVzdGVycm9yOwogICAgICAgIGludCBzdGF0 dXM7CiAgICAgICAgbG9uZyBjb25zdGFudDsKICAgICAgICBsb25nIHByZWNpc2lvbjsKICAgICAg ICBsb25nIHRvbGVyYW5jZTsKCgogICAgICAgIHN0cnVjdCB0aW1ldmFsIHRpbWU7CiAgICAgICAg bG9uZyB0aWNrOwoKICAgICAgICBsb25nIHBwc2ZyZXE7CiAgICAgICAgbG9uZyBqaXR0ZXI7CiAg ICAgICAgaW50IHNoaWZ0OwogICAgICAgIGxvbmcgc3RhYmlsOwogICAgICAgIGxvbmcgaml0Y250 OwogICAgICAgIGxvbmcgY2FsY250OwogICAgICAgIGxvbmcgZXJyY250OwogICAgICAgIGxvbmcg c3RiY250OwoKICAgICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwogICAg ICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAgaW50IDozMjsg aW50IDozMjsgaW50IDozMjsgaW50IDozMjsKfTsKIyAyNTEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdGltZXguaCIgMwpl eHRlcm4gbG9uZyB0aWNrOwpleHRlcm4gaW50IHRpY2thZGo7CgoKCgpleHRlcm4gaW50IHRpbWVf c3RhdGU7CmV4dGVybiBpbnQgdGltZV9zdGF0dXM7CmV4dGVybiBsb25nIHRpbWVfb2Zmc2V0Owpl eHRlcm4gbG9uZyB0aW1lX2NvbnN0YW50OwpleHRlcm4gbG9uZyB0aW1lX3RvbGVyYW5jZTsKZXh0 ZXJuIGxvbmcgdGltZV9wcmVjaXNpb247CmV4dGVybiBsb25nIHRpbWVfbWF4ZXJyb3I7CmV4dGVy biBsb25nIHRpbWVfZXN0ZXJyb3I7CgpleHRlcm4gbG9uZyB0aW1lX3BoYXNlOwpleHRlcm4gbG9u ZyB0aW1lX2ZyZXE7CmV4dGVybiBsb25nIHRpbWVfYWRqOwpleHRlcm4gbG9uZyB0aW1lX3JlZnRp bWU7CgpleHRlcm4gbG9uZyB0aW1lX2FkanVzdDsKCgpleHRlcm4gbG9uZyBwcHNfb2Zmc2V0Owpl eHRlcm4gbG9uZyBwcHNfaml0dGVyOwpleHRlcm4gbG9uZyBwcHNfZnJlcTsKZXh0ZXJuIGxvbmcg cHBzX3N0YWJpbDsKZXh0ZXJuIGxvbmcgcHBzX3ZhbGlkOwoKCmV4dGVybiBpbnQgcHBzX3NoaWZ0 OwpleHRlcm4gbG9uZyBwcHNfaml0Y250OwpleHRlcm4gbG9uZyBwcHNfY2FsY250OwpleHRlcm4g bG9uZyBwcHNfZXJyY250OwpleHRlcm4gbG9uZyBwcHNfc3RiY250OwojIDE2ICIvb3B0L2ZzcC9p NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Nj aGVkLmgiIDIgMwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9saWIvZ2Nj LWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIgMSAzCiMgMTggIi9v cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv bGludXgvc2NoZWQuaCIgMiAzCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vbW11LmgiIDEgMwojIDE0ICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9t bXUuaCIgMwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbW1fY29udGV4dF90OwoKCnR5cGVkZWYgc3Ry dWN0IF9QVEUgewojIDI2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9tbXUuaCIgMwogICAgICAgIHVuc2lnbmVkIGxvbmcgdjox OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdnNpZDoyNDsKICAgICAgICB1bnNpZ25lZCBsb25nIGg6 MTsKICAgICAgICB1bnNpZ25lZCBsb25nIGFwaTo2OwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnBu OjIwOwoKICAgICAgICB1bnNpZ25lZCBsb25nIDozOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcjox OwogICAgICAgIHVuc2lnbmVkIGxvbmcgYzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdzoxOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgaToxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbToxOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgZzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgOjE7CiAgICAgICAg dW5zaWduZWQgbG9uZyBwcDoyOwp9IFBURTsKIyA1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vbW11LmgiIDMKdHlwZWRlZiBz dHJ1Y3QgX1NFR1JFRyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyB0OjE7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBrczoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcga3A6MTsKICAgICAgICB1bnNpZ25l ZCBsb25nIG46MTsKICAgICAgICB1bnNpZ25lZCBsb25nIDo0OwogICAgICAgIHVuc2lnbmVkIGxv bmcgdnNpZDoyNDsKfSBTRUdSRUc7CgoKdHlwZWRlZiBzdHJ1Y3QgX1A2MDFfQkFUVSB7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBiZXBpOjE1OwogICAgICAgIHVuc2lnbmVkIGxvbmcgOjg7CiAgICAg ICAgdW5zaWduZWQgbG9uZyB3OjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpOjE7CiAgICAgICAg dW5zaWduZWQgbG9uZyBtOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBrczoxOwogICAgICAgIHVu c2lnbmVkIGxvbmcga3A6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBwOjI7Cn0gUDYwMV9CQVRV OwoKdHlwZWRlZiBzdHJ1Y3QgX0JBVFUgewoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgYmVwaTox NTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyA6NDsKICAgICAgICB1bnNpZ25lZCBsb25nIGJsOjEx OwogICAgICAgIHVuc2lnbmVkIGxvbmcgdnM6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZwOjE7 Cn0gQkFUVTsKCnR5cGVkZWYgc3RydWN0IF9QNjAxX0JBVEwgewogICAgICAgIHVuc2lnbmVkIGxv bmcgYnJwbjoxNTsKICAgICAgICB1bnNpZ25lZCBsb25nIDoxMDsKICAgICAgICB1bnNpZ25lZCBs b25nIHY6MTsKICAgICAgICB1bnNpZ25lZCBsb25nIGJsOjY7Cn0gUDYwMV9CQVRMOwoKdHlwZWRl ZiBzdHJ1Y3QgX0JBVEwgewoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgYnJwbjoxNTsKCiAgICAg ICAgdW5zaWduZWQgbG9uZyA6MTA7CiAgICAgICAgdW5zaWduZWQgbG9uZyB3OjE7CiAgICAgICAg dW5zaWduZWQgbG9uZyBpOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtOjE7CiAgICAgICAgdW5z aWduZWQgbG9uZyBnOjE7CiAgICAgICAgdW5zaWduZWQgbG9uZyA6MTsKICAgICAgICB1bnNpZ25l ZCBsb25nIHBwOjI7Cn0gQkFUTDsKCnR5cGVkZWYgc3RydWN0IF9CQVQgewogICAgICAgIEJBVFUg YmF0dTsKICAgICAgICBCQVRMIGJhdGw7Cn0gQkFUOwoKdHlwZWRlZiBzdHJ1Y3QgX1A2MDFfQkFU IHsKICAgICAgICBQNjAxX0JBVFUgYmF0dTsKICAgICAgICBQNjAxX0JBVEwgYmF0bDsKfSBQNjAx X0JBVDsKIyAxMjQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvYXNtL21tdS5oIiAzCnR5cGVkZWYgc3RydWN0IF9wdGUgewogICAgICAg IHVuc2lnbmVkIGxvbmcgcGFnZV9udW06MjA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczox MjsKfSBwdGU7CiMgMTM4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9tbXUuaCIgMwp0eXBlZGVmIHN0cnVjdCBfTU1VX2NvbnRl eHQgewogICAgICAgIFNFR1JFRyBzZWdzWzE2XTsKICAgICAgICBwdGUgKipwbWFwOwp9IE1NVV9j b250ZXh0OwoKZXh0ZXJuIHZvaWQgX3RsYmllKHVuc2lnbmVkIGxvbmcgdmEpOwpleHRlcm4gdm9p ZCBfdGxiaWEodm9pZCk7CiMgMjIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMiAzCgojIDEgIi9vcHQvZnNw L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv c21wLmgiIDEgMwojIDI0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHR5Lmgi IDEgMwojIDIyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4 L3N5cy1pbmNsdWRlL2xpbnV4L3R0eS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90ZXJtaW9zLmgiIDEgMwoK CgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDEgMwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDMKIyAx ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2FzbS9pb2N0bHMuaCIgMSAzCiMgMTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Rlcm1pb3MuaCIgMiAzCiMgMSAiL29w dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9h c20vdGVybWJpdHMuaCIgMSAzCgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBjY190Owp0eXBlZGVm IHVuc2lnbmVkIGludCBzcGVlZF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB0Y2ZsYWdfdDsKIyAx NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9hc20vdGVybWJpdHMuaCIgMwpzdHJ1Y3QgdGVybWlvcyB7CiAgICAgICAgdGNmbGFnX3Qg Y19pZmxhZzsKICAgICAgICB0Y2ZsYWdfdCBjX29mbGFnOwogICAgICAgIHRjZmxhZ190IGNfY2Zs YWc7CiAgICAgICAgdGNmbGFnX3QgY19sZmxhZzsKICAgICAgICBjY190IGNfY2NbMTldOwogICAg ICAgIGNjX3QgY19saW5lOwogICAgICAgIHNwZWVkX3QgY19pc3BlZWQ7CiAgICAgICAgc3BlZWRf dCBjX29zcGVlZDsKfTsKIyAxMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vdGVybWlvcy5oIiAyIDMKCnN0cnVjdCBzZ3R0eWIg ewogICAgICAgIGNoYXIgc2dfaXNwZWVkOwogICAgICAgIGNoYXIgc2dfb3NwZWVkOwogICAgICAg IGNoYXIgc2dfZXJhc2U7CiAgICAgICAgY2hhciBzZ19raWxsOwogICAgICAgIHNob3J0IHNnX2Zs YWdzOwp9OwoKc3RydWN0IHRjaGFycyB7CiAgICAgICAgY2hhciB0X2ludHJjOwogICAgICAgIGNo YXIgdF9xdWl0YzsKICAgICAgICBjaGFyIHRfc3RhcnRjOwogICAgICAgIGNoYXIgdF9zdG9wYzsK ICAgICAgICBjaGFyIHRfZW9mYzsKICAgICAgICBjaGFyIHRfYnJrYzsKfTsKCnN0cnVjdCBsdGNo YXJzIHsKICAgICAgICBjaGFyIHRfc3VzcGM7CiAgICAgICAgY2hhciB0X2RzdXNwYzsKICAgICAg ICBjaGFyIHRfcnBybnRjOwogICAgICAgIGNoYXIgdF9mbHVzaGM7CiAgICAgICAgY2hhciB0X3dl cmFzYzsKICAgICAgICBjaGFyIHRfbG5leHRjOwp9OwojIDEyNCAiL29wdC9mc3AvaTU4Ni1wYy1s aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vdGVybWlvcy5oIiAz CnN0cnVjdCB3aW5zaXplIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c19yb3c7CiAgICAgICAg dW5zaWduZWQgc2hvcnQgd3NfY29sOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3hwaXhlbDsK ICAgICAgICB1bnNpZ25lZCBzaG9ydCB3c195cGl4ZWw7Cn07CgoKc3RydWN0IHRlcm1pbyB7CiAg ICAgICAgdW5zaWduZWQgc2hvcnQgY19pZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX29m bGFnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNfY2ZsYWc7CiAgICAgICAgdW5zaWduZWQgc2hv cnQgY19sZmxhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNfbGluZTsKICAgICAgICB1bnNpZ25l ZCBjaGFyIGNfY2NbMTBdOwp9OwojIDYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdGVybWlvcy5oIiAyIDMKIyAyMyAiL29w dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s aW51eC90dHkuaCIgMiAzCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHR5X2RyaXZlci5oIiAxIDMKIyAxMjAgIi9v cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv bGludXgvdHR5X2RyaXZlci5oIiAzCnN0cnVjdCB0dHlfZHJpdmVyIHsKICAgICAgICBpbnQgbWFn aWM7CiAgICAgICAgY29uc3QgY2hhciAqZHJpdmVyX25hbWU7CiAgICAgICAgY29uc3QgY2hhciAq bmFtZTsKICAgICAgICBpbnQgbmFtZV9iYXNlOwogICAgICAgIHNob3J0IG1ham9yOwogICAgICAg IHNob3J0IG1pbm9yX3N0YXJ0OwogICAgICAgIHNob3J0IG51bTsKICAgICAgICBzaG9ydCB0eXBl OwogICAgICAgIHNob3J0IHN1YnR5cGU7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgaW5pdF90ZXJt aW9zOwogICAgICAgIGludCBmbGFnczsKICAgICAgICBpbnQgKnJlZmNvdW50OwogICAgICAgIHN0 cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19lbnRyeTsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZl ciAqb3RoZXI7CgoKCgogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICoqdGFibGU7CiAgICAgICAg c3RydWN0IHRlcm1pb3MgKip0ZXJtaW9zOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICoqdGVybWlv c19sb2NrZWQ7CiAgICAgICAgdm9pZCAqZHJpdmVyX3N0YXRlOwoKCgoKCiAgICAgICAgaW50ICgq b3Blbikoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlscCk7CiAgICAg ICAgdm9pZCAoKmNsb3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBm aWxwKTsKICAgICAgICBpbnQgKCp3cml0ZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIGludCBm cm9tX3VzZXIsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYs IGludCBjb3VudCk7CiAgICAgICAgdm9pZCAoKnB1dF9jaGFyKShzdHJ1Y3QgdHR5X3N0cnVjdCAq dHR5LCB1bnNpZ25lZCBjaGFyIGNoKTsKICAgICAgICB2b2lkICgqZmx1c2hfY2hhcnMpKHN0cnVj dCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAgIGludCAoKndyaXRlX3Jvb20pKHN0cnVjdCB0dHlf c3RydWN0ICp0dHkpOwogICAgICAgIGludCAoKmNoYXJzX2luX2J1ZmZlcikoc3RydWN0IHR0eV9z dHJ1Y3QgKnR0eSk7CiAgICAgICAgaW50ICgqaW9jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHks IHN0cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21k LCB1bnNpZ25lZCBsb25nIGFyZyk7CiAgICAgICAgdm9pZCAoKnNldF90ZXJtaW9zKShzdHJ1Y3Qg dHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdGVybWlvcyAqIG9sZCk7CiAgICAgICAgdm9pZCAoKnRo cm90dGxlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CiAgICAgICAgdm9pZCAoKnVudGhyb3R0 bGUpKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKICAgICAgICB2b2lkICgqc3RvcCkoc3RydWN0 IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKnN0YXJ0KShzdHJ1Y3QgdHR5X3N0cnVj dCAqdHR5KTsKICAgICAgICB2b2lkICgqaGFuZ3VwKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsK ICAgICAgICB2b2lkICgqYnJlYWtfY3RsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgc3Rh dGUpOwogICAgICAgIHZvaWQgKCpmbHVzaF9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkp OwogICAgICAgIHZvaWQgKCpzZXRfbGRpc2MpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAg ICAgIHZvaWQgKCp3YWl0X3VudGlsX3NlbnQpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCB0 aW1lb3V0KTsKICAgICAgICB2b2lkICgqc2VuZF94Y2hhcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0 eSwgY2hhciBjaCk7CiAgICAgICAgaW50ICgqcmVhZF9wcm9jKShjaGFyICpwYWdlLCBjaGFyICoq c3RhcnQsIG9mZl90IG9mZiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQsIGlu dCAqZW9mLCB2b2lkICpkYXRhKTsKICAgICAgICBpbnQgKCp3cml0ZV9wcm9jKShzdHJ1Y3QgZmls ZSAqZmlsZSwgY29uc3QgY2hhciAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgY291bnQsIHZvaWQgKmRhdGEpOwoKCgoKICAgICAgICBzdHJ1Y3QgdHR5X2Ry aXZlciAqbmV4dDsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAqcHJldjsKfTsKIyAyNSAiL29w dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s aW51eC90dHkuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC90dHlfbGRpc2MuaCIgMSAzCiMgMTAzICIvb3B0 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp bnV4L3R0eV9sZGlzYy5oIiAzCnN0cnVjdCB0dHlfbGRpc2MgewogICAgICAgIGludCBtYWdpYzsK ICAgICAgICBjaGFyICpuYW1lOwogICAgICAgIGludCBudW07CiAgICAgICAgaW50IGZsYWdzOwoK CgogICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCB0dHlfc3RydWN0ICopOwogICAgICAgIHZvaWQg KCpjbG9zZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAgICAgICAgdm9pZCAoKmZsdXNoX2J1ZmZl cikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKmNoYXJzX2luX2J1 ZmZlcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKnJlYWQpKHN0 cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiBidWYsIHNpemVfdCBucik7CiAgICAgICAgc3NpemVf dCAoKndyaXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAog ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqIGJ1Ziwgc2l6ZV90 IG5yKTsKICAgICAgICBpbnQgKCppb2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVj dCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQs IHVuc2lnbmVkIGxvbmcgYXJnKTsKICAgICAgICB2b2lkICgqc2V0X3Rlcm1pb3MpKHN0cnVjdCB0 dHlfc3RydWN0ICp0dHksIHN0cnVjdCB0ZXJtaW9zICogb2xkKTsKICAgICAgICB1bnNpZ25lZCBp bnQgKCpwb2xsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBzdHJ1Y3QgZmlsZSAqLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqKTsKCgoKCiAgICAg ICAgdm9pZCAoKnJlY2VpdmVfYnVmKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBjb25zdCB1bnNpZ25l ZCBjaGFyICpjcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZwLCBpbnQg Y291bnQpOwogICAgICAgIGludCAoKnJlY2VpdmVfcm9vbSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7 CiAgICAgICAgdm9pZCAoKndyaXRlX3dha2V1cCkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7Cn07CiMg MjYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu Y2x1ZGUvbGludXgvdHR5LmgiIDIgMwoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCIg MSAzCiMgMjggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvdHR5LmgiIDIgMwojIDU5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3R0eS5oIiAzCnN0cnVj dCBzY3JlZW5faW5mbyB7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3g7CiAgICAgICAgdW5z aWduZWQgY2hhciBvcmlnX3k7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZG9udHVzZTE7CiAgICAg ICAgdW5zaWduZWQgc2hvcnQgb3JpZ192aWRlb19wYWdlOwogICAgICAgIHVuc2lnbmVkIGNoYXIg b3JpZ192aWRlb19tb2RlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgb3JpZ192aWRlb19jb2xzOwog ICAgICAgIHVuc2lnbmVkIHNob3J0IHVudXNlZDI7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgb3Jp Z192aWRlb19lZ2FfYng7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW51c2VkMzsKICAgICAgICB1 bnNpZ25lZCBjaGFyIG9yaWdfdmlkZW9fbGluZXM7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmln X3ZpZGVvX2lzVkdBOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG9yaWdfdmlkZW9fcG9pbnRzOwoK CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX3dpZHRoOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IGxmYl9oZWlnaHQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX2RlcHRoOwogICAgICAgIHVu c2lnbmVkIGxvbmcgbGZiX2Jhc2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsZmJfc2l6ZTsKICAg ICAgICB1bnNpZ25lZCBzaG9ydCBkb250dXNlMiwgZG9udHVzZTM7CiAgICAgICAgdW5zaWduZWQg c2hvcnQgbGZiX2xpbmVsZW5ndGg7CiAgICAgICAgdW5zaWduZWQgY2hhciByZWRfc2l6ZTsKICAg ICAgICB1bnNpZ25lZCBjaGFyIHJlZF9wb3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBncmVlbl9z aXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZ3JlZW5fcG9zOwogICAgICAgIHVuc2lnbmVkIGNo YXIgYmx1ZV9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgYmx1ZV9wb3M7CiAgICAgICAgdW5z aWduZWQgY2hhciByc3ZkX3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciByc3ZkX3BvczsKICAg ICAgICB1bnNpZ25lZCBzaG9ydCB2ZXNhcG1fc2VnOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZl c2FwbV9vZmY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFnZXM7Cgp9OwoKZXh0ZXJuIHN0cnVj dCBzY3JlZW5faW5mbyBzY3JlZW5faW5mbzsKIyAxMzkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvdHR5LmgiIDMKc3RydWN0 IHR0eV9mbGlwX2J1ZmZlciB7CiAgICAgICAgc3RydWN0IHRxX3N0cnVjdCB0cXVldWU7CiAgICAg ICAgc3RydWN0IHNlbWFwaG9yZSBwdHlfc2VtOwogICAgICAgIGNoYXIgKmNoYXJfYnVmX3B0cjsK ICAgICAgICB1bnNpZ25lZCBjaGFyICpmbGFnX2J1Zl9wdHI7CiAgICAgICAgaW50IGNvdW50Owog ICAgICAgIGludCBidWZfbnVtOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2hhcl9idWZbMio1MTJd OwogICAgICAgIGNoYXIgZmxhZ19idWZbMio1MTJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2xv cFs0XTsKfTsKIyAyNTkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt bGludXgvc3lzLWluY2x1ZGUvbGludXgvdHR5LmgiIDMKc3RydWN0IHR0eV9zdHJ1Y3QgewogICAg ICAgIGludCBtYWdpYzsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciBkcml2ZXI7CiAgICAgICAg c3RydWN0IHR0eV9sZGlzYyBsZGlzYzsKICAgICAgICBzdHJ1Y3QgdGVybWlvcyAqdGVybWlvcywg KnRlcm1pb3NfbG9ja2VkOwogICAgICAgIGludCBwZ3JwOwogICAgICAgIGludCBzZXNzaW9uOwog ICAgICAgIGtkZXZfdCBkZXZpY2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAg ICBpbnQgY291bnQ7CiAgICAgICAgc3RydWN0IHdpbnNpemUgd2luc2l6ZTsKICAgICAgICB1bnNp Z25lZCBjaGFyIHN0b3BwZWQ6MSwgaHdfc3RvcHBlZDoxLCBmbG93X3N0b3BwZWQ6MSwgcGFja2V0 OjE7CiAgICAgICAgdW5zaWduZWQgY2hhciBsb3dfbGF0ZW5jeToxLCB3YXJuZWQ6MTsKICAgICAg ICB1bnNpZ25lZCBjaGFyIGN0cmxfc3RhdHVzOwoKICAgICAgICBzdHJ1Y3QgdHR5X3N0cnVjdCAq bGluazsKICAgICAgICBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFzeW5jOwogICAgICAgIHN0cnVj dCB0dHlfZmxpcF9idWZmZXIgZmxpcDsKICAgICAgICBpbnQgbWF4X2ZsaXBfY250OwogICAgICAg IGludCBhbHRfc3BlZWQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd3JpdGVfd2FpdDsKICAg ICAgICB3YWl0X3F1ZXVlX2hlYWRfdCByZWFkX3dhaXQ7CiAgICAgICAgc3RydWN0IHRxX3N0cnVj dCB0cV9oYW5ndXA7CiAgICAgICAgdm9pZCAqZGlzY19kYXRhOwogICAgICAgIHZvaWQgKmRyaXZl cl9kYXRhOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdHR5X2ZpbGVzOwoKCgoKCgoKICAgICAg ICB1bnNpZ25lZCBpbnQgY29sdW1uOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG5leHQ6MSwgZXJh c2luZzoxLCByYXc6MSwgcmVhbF9yYXc6MSwgaWNhbm9uOjE7CiAgICAgICAgdW5zaWduZWQgY2hh ciBjbG9zaW5nOjE7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbWluaW11bV90b193YWtlOwogICAg ICAgIHVuc2lnbmVkIG92ZXJydW5fdGltZTsKICAgICAgICBpbnQgbnVtX292ZXJydW47CiAgICAg ICAgdW5zaWduZWQgbG9uZyBwcm9jZXNzX2NoYXJfbWFwWzI1Ni8oOCpzaXplb2YodW5zaWduZWQg bG9uZykpXTsKICAgICAgICBjaGFyICpyZWFkX2J1ZjsKICAgICAgICBpbnQgcmVhZF9oZWFkOwog ICAgICAgIGludCByZWFkX3RhaWw7CiAgICAgICAgaW50IHJlYWRfY250OwogICAgICAgIHVuc2ln bmVkIGxvbmcgcmVhZF9mbGFnc1s0MDk2Lyg4KnNpemVvZih1bnNpZ25lZCBsb25nKSldOwogICAg ICAgIGludCBjYW5vbl9kYXRhOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY2Fub25faGVhZDsKICAg ICAgICB1bnNpZ25lZCBpbnQgY2Fub25fY29sdW1uOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg YXRvbWljX3JlYWQ7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBhdG9taWNfd3JpdGU7CiAgICAg ICAgc3BpbmxvY2tfdCByZWFkX2xvY2s7Cn07CiMgMzM5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3R0eS5oIiAzCmV4dGVy biB2b2lkIHR0eV93cml0ZV9mbHVzaChzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKCmV4dGVybiBzdHJ1 Y3QgdGVybWlvcyB0dHlfc3RkX3Rlcm1pb3M7CmV4dGVybiBzdHJ1Y3QgdHR5X3N0cnVjdCAqIHJl ZGlyZWN0OwpleHRlcm4gc3RydWN0IHR0eV9sZGlzYyBsZGlzY3NbXTsKZXh0ZXJuIGludCBmZ19j b25zb2xlLCBsYXN0X2NvbnNvbGUsIHdhbnRfY29uc29sZTsKCmV4dGVybiBpbnQga21zZ19yZWRp cmVjdDsKCmV4dGVybiB2b2lkIGNvbl9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBjb25zb2xlX2lu aXQodm9pZCk7CgpleHRlcm4gaW50IGxwX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcHR5X2luaXQo dm9pZCk7CmV4dGVybiB2b2lkIHR0eV9pbml0KHZvaWQpOwpleHRlcm4gaW50IG14c2VyX2luaXQo dm9pZCk7CmV4dGVybiBpbnQgbW94YV9pbml0KHZvaWQpOwpleHRlcm4gaW50IGlwMl9pbml0KHZv aWQpOwpleHRlcm4gaW50IHBjeGVfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwY19pbml0KHZvaWQp OwpleHRlcm4gaW50IHZjc19pbml0KHZvaWQpOwpleHRlcm4gaW50IHJwX2luaXQodm9pZCk7CmV4 dGVybiBpbnQgY3lfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBzdGxfaW5pdCh2b2lkKTsKZXh0ZXJu IGludCBzdGxpX2luaXQodm9pZCk7CmV4dGVybiBpbnQgc3BlY2lhbGl4X2luaXQodm9pZCk7CmV4 dGVybiBpbnQgZXNwc2VyaWFsX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbWFjc2VyaWFsX2luaXQo dm9pZCk7CgpleHRlcm4gaW50IHR0eV9wYXJhbm9pYV9jaGVjayhzdHJ1Y3QgdHR5X3N0cnVjdCAq dHR5LCBrZGV2X3QgZGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICpyb3V0aW5lKTsKZXh0ZXJuIGNoYXIgKnR0eV9uYW1lKHN0cnVjdCB0dHlfc3RydWN0ICp0 dHksIGNoYXIgKmJ1Zik7CmV4dGVybiB2b2lkIHR0eV93YWl0X3VudGlsX3NlbnQoc3RydWN0IHR0 eV9zdHJ1Y3QgKiB0dHksIGxvbmcgdGltZW91dCk7CmV4dGVybiBpbnQgdHR5X2NoZWNrX2NoYW5n ZShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHN0b3BfdHR5KHN0cnVjdCB0 dHlfc3RydWN0ICogdHR5KTsKZXh0ZXJuIHZvaWQgc3RhcnRfdHR5KHN0cnVjdCB0dHlfc3RydWN0 ICogdHR5KTsKZXh0ZXJuIGludCB0dHlfcmVnaXN0ZXJfbGRpc2MoaW50IGRpc2MsIHN0cnVjdCB0 dHlfbGRpc2MgKm5ld19sZGlzYyk7CmV4dGVybiBpbnQgdHR5X3JlZ2lzdGVyX2RyaXZlcihzdHJ1 Y3QgdHR5X2RyaXZlciAqZHJpdmVyKTsKZXh0ZXJuIGludCB0dHlfdW5yZWdpc3Rlcl9kcml2ZXIo c3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVybiB2b2lkIHR0eV9yZWdpc3Rlcl9kZXZm cyAoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlciwgdW5zaWduZWQgaW50IGZsYWdzLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1pbm9yKTsKZXh0ZXJuIHZvaWQgdHR5 X3VucmVnaXN0ZXJfZGV2ZnMgKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2ZXIsIHVuc2lnbmVkIG1p bm9yKTsKZXh0ZXJuIGludCB0dHlfcmVhZF9yYXdfZGF0YShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5 LCB1bnNpZ25lZCBjaGFyICpidWZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBi dWZsZW4pOwpleHRlcm4gdm9pZCB0dHlfd3JpdGVfbWVzc2FnZShzdHJ1Y3QgdHR5X3N0cnVjdCAq dHR5LCBjaGFyICptc2cpOwoKZXh0ZXJuIGludCBpc19vcnBoYW5lZF9wZ3JwKGludCBwZ3JwKTsK ZXh0ZXJuIGludCBpc19pZ25vcmVkKGludCBzaWcpOwpleHRlcm4gaW50IHR0eV9zaWduYWwoaW50 IHNpZywgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiB2b2lkIHR0eV9oYW5ndXAoc3Ry dWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpleHRlcm4gdm9pZCB0dHlfdmhhbmd1cChzdHJ1Y3QgdHR5 X3N0cnVjdCAqIHR0eSk7CmV4dGVybiB2b2lkIHR0eV91bmhhbmd1cChzdHJ1Y3QgZmlsZSAqZmls cCk7CmV4dGVybiBpbnQgdHR5X2h1bmdfdXBfcChzdHJ1Y3QgZmlsZSAqIGZpbHApOwpleHRlcm4g dm9pZCBkb19TQUsoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiB2b2lkIGRpc2Fzc29j aWF0ZV9jdHR5KGludCBwcml2KTsKZXh0ZXJuIHZvaWQgdHR5X2ZsaXBfYnVmZmVyX3B1c2goc3Ry dWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CmV4dGVybiBpbnQgdHR5X2dldF9iYXVkX3JhdGUoc3RydWN0 IHR0eV9zdHJ1Y3QgKnR0eSk7CgoKZXh0ZXJuIHN0cnVjdCB0dHlfbGRpc2MgdHR5X2xkaXNjX05f VFRZOwoKCmV4dGVybiBpbnQgbl90dHlfaW9jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0 cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21k LCB1bnNpZ25lZCBsb25nIGFyZyk7CgoKCmV4dGVybiB2b2lkIHNlcmlhbF9jb25zb2xlX2luaXQo dm9pZCk7CgoKCmV4dGVybiBpbnQgcGN4ZV9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0 cnVjdCBmaWxlICpmaWxwKTsKCgoKZXh0ZXJuIHZvaWQgY29uc29sZV9wcmludChjb25zdCBjaGFy ICopOwoKCgpleHRlcm4gaW50IHZ0X2lvY3RsKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVj dCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNp Z25lZCBsb25nIGFyZyk7CiMgMjUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMiAzCiMgMSAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9z ZW0uaCIgMSAzCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pcGMuaCIgMSAzCiMgOSAiL29wdC9mc3AvaTU4Ni1w Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pcGMuaCIg MwpzdHJ1Y3QgaXBjX3Blcm0KewogICAgICAgIF9fa2VybmVsX2tleV90IGtleTsKICAgICAgICBf X2tlcm5lbF91aWRfdCB1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkX3QgZ2lkOwogICAgICAgIF9f a2VybmVsX3VpZF90IGN1aWQ7CiAgICAgICAgX19rZXJuZWxfZ2lkX3QgY2dpZDsKICAgICAgICBf X2tlcm5lbF9tb2RlX3QgbW9kZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZXE7Cn07CgoKIyAx ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2FzbS9pcGNidWYuaCIgMSAzCiMgMTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lwY2J1Zi5oIiAzCnN0cnVjdCBpcGM2 NF9wZXJtCnsKICAgICAgICBfX2tlcm5lbF9rZXlfdCBrZXk7CiAgICAgICAgX19rZXJuZWxfdWlk X3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGdpZDsKICAgICAgICBfX2tlcm5lbF91aWRf dCBjdWlkOwogICAgICAgIF9fa2VybmVsX2dpZF90IGNnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9k ZV90IG1vZGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXE7CiAgICAgICAgdW5zaWduZWQgaW50 IF9fcGFkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX191bnVzZWQxOwogICAgICAgIHVu c2lnbmVkIGxvbmcgbG9uZyBfX3VudXNlZDI7Cn07CiMgMjIgIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaXBjLmgiIDIgMwoj IDU3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1p bmNsdWRlL2xpbnV4L2lwYy5oIiAzCnN0cnVjdCBrZXJuX2lwY19wZXJtCnsKICAgICAgICBrZXlf dCBrZXk7CiAgICAgICAgdWlkX3QgdWlkOwogICAgICAgIGdpZF90IGdpZDsKICAgICAgICB1aWRf dCBjdWlkOwogICAgICAgIGdpZF90IGNnaWQ7CiAgICAgICAgbW9kZV90IG1vZGU7CiAgICAgICAg dW5zaWduZWQgbG9uZyBzZXE7Cn07CiMgNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zZW0uaCIgMiAzCiMgMjMgIi9vcHQv ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGlu dXgvc2VtLmgiIDMKc3RydWN0IHNlbWlkX2RzIHsKICAgICAgICBzdHJ1Y3QgaXBjX3Blcm0gc2Vt X3Blcm07CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9vdGltZTsKICAgICAgICBfX2tlcm5l bF90aW1lX3Qgc2VtX2N0aW1lOwogICAgICAgIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwogICAgICAg IHN0cnVjdCBzZW1fcXVldWUgKnNlbV9wZW5kaW5nOwogICAgICAgIHN0cnVjdCBzZW1fcXVldWUg KipzZW1fcGVuZGluZ19sYXN0OwogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsKICAgICAg ICB1bnNpZ25lZCBzaG9ydCBzZW1fbnNlbXM7Cn07CgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxp bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zZW1idWYuaCIgMSAz CgoKCgoKCgpzdHJ1Y3Qgc2VtaWQ2NF9kcyB7CiAgICAgICAgc3RydWN0IGlwYzY0X3Blcm0gc2Vt X3Blcm07CiAgICAgICAgdW5zaWduZWQgaW50IF9fdW51c2VkMTsKICAgICAgICBfX2tlcm5lbF90 aW1lX3Qgc2VtX290aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBfX3VudXNlZDI7CiAgICAgICAg X19rZXJuZWxfdGltZV90IHNlbV9jdGltZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNlbV9uc2Vt czsKICAgICAgICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMzsKICAgICAgICB1bnNpZ25lZCBsb25n IF9fdW51c2VkNDsKfTsKIyAzNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zZW0uaCIgMiAzCgoKc3RydWN0IHNlbWJ1ZiB7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VtX251bTsKICAgICAgICBzaG9ydCBzZW1fb3A7CiAg ICAgICAgc2hvcnQgc2VtX2ZsZzsKfTsKCgp1bmlvbiBzZW11biB7CiAgICAgICAgaW50IHZhbDsK ICAgICAgICBzdHJ1Y3Qgc2VtaWRfZHMgKmJ1ZjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCAqYXJy YXk7CiAgICAgICAgc3RydWN0IHNlbWluZm8gKl9fYnVmOwogICAgICAgIHZvaWQgKl9fcGFkOwp9 OwoKc3RydWN0IHNlbWluZm8gewogICAgICAgIGludCBzZW1tYXA7CiAgICAgICAgaW50IHNlbW1u aTsKICAgICAgICBpbnQgc2VtbW5zOwogICAgICAgIGludCBzZW1tbnU7CiAgICAgICAgaW50IHNl bW1zbDsKICAgICAgICBpbnQgc2Vtb3BtOwogICAgICAgIGludCBzZW11bWU7CiAgICAgICAgaW50 IHNlbXVzejsKICAgICAgICBpbnQgc2Vtdm14OwogICAgICAgIGludCBzZW1hZW07Cn07CiMgODIg Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1 ZGUvbGludXgvc2VtLmgiIDMKc3RydWN0IHNlbSB7CiAgICAgICAgaW50IHNlbXZhbDsKICAgICAg ICBpbnQgc2VtcGlkOwp9OwoKCnN0cnVjdCBzZW1fYXJyYXkgewogICAgICAgIHN0cnVjdCBrZXJu X2lwY19wZXJtIHNlbV9wZXJtOwogICAgICAgIHRpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgdGlt ZV90IHNlbV9jdGltZTsKICAgICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBzdHJ1 Y3Qgc2VtX3F1ZXVlICpzZW1fcGVuZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoqc2Vt X3BlbmRpbmdfbGFzdDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAgdW5z aWduZWQgbG9uZyBzZW1fbnNlbXM7Cn07CgoKc3RydWN0IHNlbV9xdWV1ZSB7CiAgICAgICAgc3Ry dWN0IHNlbV9xdWV1ZSAqIG5leHQ7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqKiBwcmV2Owog ICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCogc2xlZXBlcjsKICAgICAgICBzdHJ1Y3Qgc2VtX3Vu ZG8gKiB1bmRvOwogICAgICAgIGludCBwaWQ7CiAgICAgICAgaW50IHN0YXR1czsKICAgICAgICBz dHJ1Y3Qgc2VtX2FycmF5ICogc21hOwogICAgICAgIGludCBpZDsKICAgICAgICBzdHJ1Y3Qgc2Vt YnVmICogc29wczsKICAgICAgICBpbnQgbnNvcHM7CiAgICAgICAgaW50IGFsdGVyOwp9OwoKCgoK c3RydWN0IHNlbV91bmRvIHsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKiBwcm9jX25leHQ7CiAg ICAgICAgc3RydWN0IHNlbV91bmRvICogaWRfbmV4dDsKICAgICAgICBpbnQgc2VtaWQ7CiAgICAg ICAgc2hvcnQgKiBzZW1hZGo7Cn07CgogbG9uZyBzeXNfc2VtZ2V0IChrZXlfdCBrZXksIGludCBu c2VtcywgaW50IHNlbWZsZyk7CiBsb25nIHN5c19zZW1vcCAoaW50IHNlbWlkLCBzdHJ1Y3Qgc2Vt YnVmICpzb3BzLCB1bnNpZ25lZCBuc29wcyk7CiBsb25nIHN5c19zZW1jdGwgKGludCBzZW1pZCwg aW50IHNlbW51bSwgaW50IGNtZCwgdW5pb24gc2VtdW4gYXJnKTsKIyAyNiAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hl ZC5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAxIDMKCgoKIyAxICIvb3B0L2ZzcC9pNTg2 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zaWduYWwu aCIgMSAzCiMgOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51 eC9zeXMtaW5jbHVkZS9hc20vc2lnbmFsLmgiIDMKc3RydWN0IHNpZ2luZm87CiMgMTggIi9vcHQv ZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNt L3NpZ25hbC5oIiAzCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBvbGRfc2lnc2V0X3Q7Cgp0eXBlZGVm IHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaWdbKDY0IC8gMzIpXTsKfSBzaWdzZXRf dDsKIyAxMjEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvYXNtL3NpZ25hbC5oIiAzCnR5cGVkZWYgdm9pZCAoKl9fc2lnaGFuZGxlcl90 KShpbnQpOwoKCgoKCnN0cnVjdCBvbGRfc2lnYWN0aW9uIHsKICAgICAgICBfX3NpZ2hhbmRsZXJf dCBzYV9oYW5kbGVyOwogICAgICAgIG9sZF9zaWdzZXRfdCBzYV9tYXNrOwogICAgICAgIHVuc2ln bmVkIGxvbmcgc2FfZmxhZ3M7CiAgICAgICAgdm9pZCAoKnNhX3Jlc3RvcmVyKSh2b2lkKTsKfTsK CnN0cnVjdCBzaWdhY3Rpb24gewogICAgICAgIF9fc2lnaGFuZGxlcl90IHNhX2hhbmRsZXI7CiAg ICAgICAgdW5zaWduZWQgbG9uZyBzYV9mbGFnczsKICAgICAgICB2b2lkICgqc2FfcmVzdG9yZXIp KHZvaWQpOwogICAgICAgIHNpZ3NldF90IHNhX21hc2s7Cn07CgpzdHJ1Y3Qga19zaWdhY3Rpb24g ewogICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gc2E7Cn07Cgp0eXBlZGVmIHN0cnVjdCBzaWdhbHRz dGFjayB7CiAgICAgICAgdm9pZCAqc3Nfc3A7CiAgICAgICAgaW50IHNzX2ZsYWdzOwogICAgICAg IHNpemVfdCBzc19zaXplOwp9IHN0YWNrX3Q7CgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zaWdjb250ZXh0LmgiIDEg MwoKCgoKCgpzdHJ1Y3Qgc2lnY29udGV4dF9zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcg X3VudXNlZFs0XTsKICAgICAgICBpbnQgc2lnbmFsOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaGFu ZGxlcjsKICAgICAgICB1bnNpZ25lZCBsb25nIG9sZG1hc2s7CiAgICAgICAgc3RydWN0IHB0X3Jl Z3MgKnJlZ3M7Cn07CiMgMTUzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zaWduYWwuaCIgMiAzCiMgNSAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zaWdu YWwuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s aW51eC9zeXMtaW5jbHVkZS9hc20vc2lnaW5mby5oIiAxIDMKCgoKCgp0eXBlZGVmIHVuaW9uIHNp Z3ZhbCB7CiAgICAgICAgaW50IHNpdmFsX2ludDsKICAgICAgICB2b2lkICpzaXZhbF9wdHI7Cn0g c2lndmFsX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBzaWdpbmZvIHsKICAgICAgICBpbnQgc2lfc2ln bm87CiAgICAgICAgaW50IHNpX2Vycm5vOwogICAgICAgIGludCBzaV9jb2RlOwoKICAgICAgICB1 bmlvbiB7CiAgICAgICAgICAgICAgICBpbnQgX3BhZFsoKDEyOC9zaXplb2YoaW50KSkgLSAzKV07 CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90 IF9waWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAg ICB9IF9raWxsOwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgX3RpbWVyMTsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IF90aW1lcjI7CiAgICAgICAgICAgICAgICB9IF90aW1lcjsKCgogICAgICAgICAgICAg ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgX3BpZDsKICAgICAgICAg ICAgICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgc2lndmFs X3QgX3NpZ3ZhbDsKICAgICAgICAgICAgICAgIH0gX3J0OwoKCiAgICAgICAgICAgICAgICBzdHJ1 Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAgICAgICAgICAgICAg ICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX3N0YXR1czsK ICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfdCBfdXRpbWU7CiAgICAgICAgICAgICAgICAg ICAgICAgIGNsb2NrX3QgX3N0aW1lOwogICAgICAgICAgICAgICAgfSBfc2lnY2hsZDsKCgogICAg ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX2FkZHI7 CiAgICAgICAgICAgICAgICB9IF9zaWdmYXVsdDsKCgogICAgICAgICAgICAgICAgc3RydWN0IHsK ICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9iYW5kOwogICAgICAgICAgICAgICAgICAgICAg ICBpbnQgX2ZkOwogICAgICAgICAgICAgICAgfSBfc2lncG9sbDsKICAgICAgICB9IF9zaWZpZWxk czsKfSBzaWdpbmZvX3Q7CiMgMTk3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9zaWdpbmZvLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qg c2lnZXZlbnQgewogICAgICAgIHNpZ3ZhbF90IHNpZ2V2X3ZhbHVlOwogICAgICAgIGludCBzaWdl dl9zaWdubzsKICAgICAgICBpbnQgc2lnZXZfbm90aWZ5OwogICAgICAgIHVuaW9uIHsKICAgICAg ICAgICAgICAgIGludCBfcGFkWygoNjQvc2l6ZW9mKGludCkpIC0gMyldOwoKICAgICAgICAgICAg ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpfZnVuY3Rpb24pKHNp Z3ZhbF90KTsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX2F0dHJpYnV0ZTsKICAgICAg ICAgICAgICAgIH0gX3NpZ2V2X3RocmVhZDsKICAgICAgICB9IF9zaWdldl91bjsKfSBzaWdldmVu dF90OwoKCgoKCgoKZXh0ZXJuIGlubGluZSB2b2lkIGNvcHlfc2lnaW5mbyhzaWdpbmZvX3QgKnRv LCBzaWdpbmZvX3QgKmZyb20pCnsKICAgICAgICBpZiAoZnJvbS0+c2lfY29kZSA8IDApCiAgICAg ICAgICAgICAgICBtZW1jcHkodG8sIGZyb20sIHNpemVvZihzaWdpbmZvX3QpKTsKICAgICAgICBl bHNlCgogICAgICAgICAgICAgICAgbWVtY3B5KHRvLCBmcm9tLCAzKnNpemVvZihpbnQpICsgc2l6 ZW9mKGZyb20tPl9zaWZpZWxkcy5fc2lnY2hsZCkpOwp9CgpleHRlcm4gaW50IGNvcHlfc2lnaW5m b190b191c2VyKHNpZ2luZm9fdCAqdG8sIHNpZ2luZm9fdCAqZnJvbSk7CiMgNiAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9z aWduYWwuaCIgMiAzCgoKCgoKCnN0cnVjdCBzaWdxdWV1ZSB7CiAgICAgICAgc3RydWN0IHNpZ3F1 ZXVlICpuZXh0OwogICAgICAgIHNpZ2luZm9fdCBpbmZvOwp9OwoKc3RydWN0IHNpZ3BlbmRpbmcg ewogICAgICAgIHN0cnVjdCBzaWdxdWV1ZSAqaGVhZCwgKip0YWlsOwogICAgICAgIHNpZ3NldF90 IHNpZ25hbDsKfTsKCgoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMSAzCiMgMjggIi9vcHQvZnNw L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv c2lnbmFsLmgiIDIgMwoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYWRkc2V0KHNpZ3NldF90ICpz ZXQsIGludCBfc2lnKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaWcgPSBfc2lnIC0gMTsKICAg ICAgICBpZiAoKDY0IC8gMzIpID09IDEpCiAgICAgICAgICAgICAgICBzZXQtPnNpZ1swXSB8PSAx VUwgPDwgc2lnOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHNldC0+c2lnW3NpZyAvIDMy XSB8PSAxVUwgPDwgKHNpZyAlIDMyKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2RlbHNldChz aWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lnID0gX3Np ZyAtIDE7CiAgICAgICAgaWYgKCg2NCAvIDMyKSA9PSAxKQogICAgICAgICAgICAgICAgc2V0LT5z aWdbMF0gJj0gfigxVUwgPDwgc2lnKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBzZXQt PnNpZ1tzaWcgLyAzMl0gJj0gfigxVUwgPDwgKHNpZyAlIDMyKSk7Cn0KCnN0YXRpYyBpbmxpbmUg aW50IHNpZ2lzbWVtYmVyKHNpZ3NldF90ICpzZXQsIGludCBfc2lnKQp7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBzaWcgPSBfc2lnIC0gMTsKICAgICAgICBpZiAoKDY0IC8gMzIpID09IDEpCiAgICAg ICAgICAgICAgICByZXR1cm4gMSAmIChzZXQtPnNpZ1swXSA+PiBzaWcpOwogICAgICAgIGVsc2UK ICAgICAgICAgICAgICAgIHJldHVybiAxICYgKHNldC0+c2lnW3NpZyAvIDMyXSA+PiAoc2lnICUg MzIpKTsKfQoKc3RhdGljIGlubGluZSBpbnQgc2lnZmluZGlud29yZCh1bnNpZ25lZCBsb25nIHdv cmQpCnsKICAgICAgICByZXR1cm4gZmZ6KH53b3JkKTsKfQojIDEwOCAiL29wdC9mc3AvaTU4Ni1w Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zaWduYWwu aCIgMwpzdGF0aWMgaW5saW5lIHZvaWQgc2lnb3JzZXRzKHNpZ3NldF90ICpyLCBjb25zdCBzaWdz ZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5zaWduZWQgbG9uZyBhMCwgYTEsIGEyLCBh MywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0gMDsgaSA8ICg2NCAv IDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEy ID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdbNCppKzNdOyBiMCA9IGItPnNpZ1s0KmkrMF07 IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0Kmkr M107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkg fCAoYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwgKGIyKSk7IHItPnNpZ1s0KmkrM10gPSAo KGEzKSB8IChiMykpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IGEwID0gYS0+ c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGIwID0g Yi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07IHIt PnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChiMCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgfCAoYjEp KTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpIHwgKGIyKSk7IGJyZWFrOyBjYXNlIDI6IGEwID0gYS0+ c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0g Yi0+c2lnWzQqaSsxXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIwKSk7IHItPnNpZ1s0Kmkr MV0gPSAoKGExKSB8IChiMSkpOyBicmVhazsgY2FzZSAxOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGIw ID0gYi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSswXSA9ICgoYTApIHwgKGIwKSk7IGJyZWFrOyB9 IH0KCgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnYW5kc2V0cyhzaWdzZXRfdCAqciwgY29uc3Qgc2ln c2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpiKSB7IHVuc2lnbmVkIGxvbmcgYTAsIGExLCBhMiwg YTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25lZCBsb25nIGk7IGZvciAoaSA9IDA7IGkgPCAoNjQg LyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBhLT5zaWdbNCppKzFdOyBh MiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+c2lnWzQqaSszXTsgYjAgPSBiLT5zaWdbNCppKzBd OyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsgYjMgPSBiLT5zaWdbNCpp KzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEp ICYgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIChiMikpOyByLT5zaWdbNCppKzNdID0g KChhMykgJiAoYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBhMCA9IGEt PnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBiMCA9 IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBy LT5zaWdbNCppKzBdID0gKChhMCkgJiAoYjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgKGIx KSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIChiMikpOyBicmVhazsgY2FzZSAyOiBhMCA9IGEt PnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9 IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChiMCkpOyByLT5zaWdbNCpp KzFdID0gKChhMSkgJiAoYjEpKTsgYnJlYWs7IGNhc2UgMTogYTAgPSBhLT5zaWdbNCppKzBdOyBi MCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIChiMCkpOyBicmVhazsg fSB9CgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ25hbmRzZXRzKHNpZ3NldF90ICpyLCBjb25zdCBz aWdzZXRfdCAqYSwgY29uc3Qgc2lnc2V0X3QgKmIpIHsgdW5zaWduZWQgbG9uZyBhMCwgYTEsIGEy LCBhMywgYjAsIGIxLCBiMiwgYjM7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0gMDsgaSA8ICg2 NCAvIDMyKS80OyArK2kpIHsgYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07 IGEyID0gYS0+c2lnWzQqaSsyXTsgYTMgPSBhLT5zaWdbNCppKzNdOyBiMCA9IGItPnNpZ1s0Kmkr MF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCppKzJdOyBiMyA9IGItPnNpZ1s0 KmkrM107IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsgci0+c2lnWzQqaSsxXSA9ICgo YTEpICYgfihiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgJiB+KGIyKSk7IHItPnNpZ1s0Kmkr M10gPSAoKGEzKSAmIH4oYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsgY2FzZSAzOiBh MCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJd OyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBiLT5zaWdbNCpp KzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGEx KSAmIH4oYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpICYgfihiMikpOyBicmVhazsgY2FzZSAy OiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYjAgPSBiLT5zaWdbNCpp KzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSAmIH4oYjApKTsg ci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgfihiMSkpOyBicmVhazsgY2FzZSAxOiBhMCA9IGEtPnNp Z1s0KmkrMF07IGIwID0gYi0+c2lnWzQqaSswXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgfihi MCkpOyBicmVhazsgfSB9CiMgMTQwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NpZ25hbC5oIiAzCnN0YXRpYyBpbmxpbmUg dm9pZCBzaWdub3RzZXQoc2lnc2V0X3QgKnNldCkgeyB1bnNpZ25lZCBsb25nIGk7IGZvciAoaSA9 IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IHNldC0+c2lnWzQqaSswXSA9ICh+KHNldC0+c2ln WzQqaSswXSkpOyBzZXQtPnNpZ1s0KmkrMV0gPSAofihzZXQtPnNpZ1s0KmkrMV0pKTsgc2V0LT5z aWdbNCppKzJdID0gKH4oc2V0LT5zaWdbNCppKzJdKSk7IHNldC0+c2lnWzQqaSszXSA9ICh+KHNl dC0+c2lnWzQqaSszXSkpOyB9IHN3aXRjaCAoKDY0IC8gMzIpICUgNCkgeyBjYXNlIDM6IHNldC0+ c2lnWzQqaSsyXSA9ICh+KHNldC0+c2lnWzQqaSsyXSkpOyBjYXNlIDI6IHNldC0+c2lnWzQqaSsx XSA9ICh+KHNldC0+c2lnWzQqaSsxXSkpOyBjYXNlIDE6IHNldC0+c2lnWzQqaSswXSA9ICh+KHNl dC0+c2lnWzQqaSswXSkpOyB9IH0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdlbXB0eXNldChz aWdzZXRfdCAqc2V0KQp7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBkZWZh dWx0OgogICAgICAgICAgICAgICAgbWVtc2V0KHNldCwgMCwgc2l6ZW9mKHNpZ3NldF90KSk7CiAg ICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6IHNldC0+c2lnWzFdID0gMDsKICAg ICAgICBjYXNlIDE6IHNldC0+c2lnWzBdID0gMDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgIH0KfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2ZpbGxzZXQoc2lnc2V0X3QgKnNldCkKewog ICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg ICAgIG1lbXNldChzZXQsIC0xLCBzaXplb2Yoc2lnc2V0X3QpKTsKICAgICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgIGNhc2UgMjogc2V0LT5zaWdbMV0gPSAtMTsKICAgICAgICBjYXNlIDE6IHNl dC0+c2lnWzBdID0gLTE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9Cn0KCmV4dGVy biBjaGFyICogcmVuZGVyX3NpZ3NldF90KHNpZ3NldF90ICpzZXQsIGNoYXIgKmJ1ZmZlcik7CgoK CnN0YXRpYyBpbmxpbmUgdm9pZCBzaWdhZGRzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVk IGxvbmcgbWFzaykKewogICAgICAgIHNldC0+c2lnWzBdIHw9IG1hc2s7Cn0KCnN0YXRpYyBpbmxp bmUgdm9pZCBzaWdkZWxzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykK ewogICAgICAgIHNldC0+c2lnWzBdICY9IH5tYXNrOwp9CgpzdGF0aWMgaW5saW5lIGludCBzaWd0 ZXN0c2V0bWFzayhzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBy ZXR1cm4gKHNldC0+c2lnWzBdICYgbWFzaykgIT0gMDsKfQoKc3RhdGljIGlubGluZSB2b2lkIHNp Z2luaXRzZXQoc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgc2V0 LT5zaWdbMF0gPSBtYXNrOwogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVm YXVsdDoKICAgICAgICAgICAgICAgIG1lbXNldCgmc2V0LT5zaWdbMV0sIDAsIHNpemVvZihsb25n KSooKDY0IC8gMzIpLTEpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMjog c2V0LT5zaWdbMV0gPSAwOwogICAgICAgIGNhc2UgMTogOwogICAgICAgIH0KfQoKc3RhdGljIGlu bGluZSB2b2lkIHNpZ2luaXRzZXRpbnYoc2lnc2V0X3QgKnNldCwgdW5zaWduZWQgbG9uZyBtYXNr KQp7CiAgICAgICAgc2V0LT5zaWdbMF0gPSB+bWFzazsKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMy KSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBtZW1zZXQoJnNldC0+c2lnWzFd LCAtMSwgc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpOwogICAgICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9IC0xOwogICAgICAgIGNhc2UgMTogOwogICAg ICAgIH0KfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQgaW5pdF9zaWdwZW5kaW5nKHN0cnVjdCBzaWdw ZW5kaW5nICpzaWcpCnsKICAgICAgICBzaWdlbXB0eXNldCgmc2lnLT5zaWduYWwpOwogICAgICAg IHNpZy0+aGVhZCA9ICgodm9pZCAqKTApOwogICAgICAgIHNpZy0+dGFpbCA9ICZzaWctPmhlYWQ7 Cn0KCmV4dGVybiBsb25nIGRvX3NpZ3BlbmRpbmcodm9pZCAqLCB1bnNpZ25lZCBsb25nKTsKIyAy NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9saW51eC9zY2hlZC5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NlY3VyZWJpdHMuaCIgMSAzCgoK CgoKZXh0ZXJuIHVuc2lnbmVkIHNlY3VyZWJpdHM7CiMgMjggIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMiAz CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9saW51eC9mc19zdHJ1Y3QuaCIgMSAzCgoKCgpzdHJ1Y3QgZnNfc3RydWN0IHsKICAg ICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICByd2xvY2tfdCBsb2NrOwogICAgICAgIGludCB1 bWFzazsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICogcm9vdCwgKiBwd2QsICogYWx0cm9vdDsKICAg ICAgICBzdHJ1Y3QgdmZzbW91bnQgKiByb290bW50LCAqIHB3ZG1udCwgKiBhbHRyb290bW50Owp9 OwojIDIwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L2ZzX3N0cnVjdC5oIiAzCmV4dGVybiB2b2lkIGV4aXRfZnMoc3RydWN0 IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBzZXRfZnNfYWx0cm9vdCh2b2lkKTsKCgoKCgoK c3RhdGljIGlubGluZSB2b2lkIHNldF9mc19yb290KHN0cnVjdCBmc19zdHJ1Y3QgKmZzLAogICAg ICAgIHN0cnVjdCB2ZnNtb3VudCAqbW50LAogICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkK ewogICAgICAgIHN0cnVjdCBkZW50cnkgKm9sZF9yb290OwogICAgICAgIHN0cnVjdCB2ZnNtb3Vu dCAqb2xkX3Jvb3RtbnQ7CiAgICAgICAgKHZvaWQpKCZmcy0+bG9jayk7CiAgICAgICAgb2xkX3Jv b3QgPSBmcy0+cm9vdDsKICAgICAgICBvbGRfcm9vdG1udCA9IGZzLT5yb290bW50OwogICAgICAg IGZzLT5yb290bW50ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMtPnJvb3QgPSBkZ2V0KGRlbnRy eSk7CiAgICAgICAgZG8geyB9IHdoaWxlKDApOwogICAgICAgIGlmIChvbGRfcm9vdCkgewogICAg ICAgICAgICAgICAgZHB1dChvbGRfcm9vdCk7CiAgICAgICAgICAgICAgICBtbnRwdXQob2xkX3Jv b3RtbnQpOwogICAgICAgIH0KfQoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3B3ZChz dHJ1Y3QgZnNfc3RydWN0ICpmcywKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udCwKICAgICAg ICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpvbGRfcHdk OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqb2xkX3B3ZG1udDsKICAgICAgICAodm9pZCkoJmZz LT5sb2NrKTsKICAgICAgICBvbGRfcHdkID0gZnMtPnB3ZDsKICAgICAgICBvbGRfcHdkbW50ID0g ZnMtPnB3ZG1udDsKICAgICAgICBmcy0+cHdkbW50ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMt PnB3ZCA9IGRnZXQoZGVudHJ5KTsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7CiAgICAgICAgaWYg KG9sZF9wd2QpIHsKICAgICAgICAgICAgICAgIGRwdXQob2xkX3B3ZCk7CiAgICAgICAgICAgICAg ICBtbnRwdXQob2xkX3B3ZG1udCk7CiAgICAgICAgfQp9CgpzdHJ1Y3QgZnNfc3RydWN0ICpjb3B5 X2ZzX3N0cnVjdChzdHJ1Y3QgZnNfc3RydWN0ICpvbGQpOwp2b2lkIHB1dF9mc19zdHJ1Y3Qoc3Ry dWN0IGZzX3N0cnVjdCAqZnMpOwojIDI5ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwojIDU2ICIvb3B0 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp bnV4L3NjaGVkLmgiIDMKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYXZlbnJ1bltdOwojIDczICIvb3B0 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp bnV4L3NjaGVkLmgiIDMKZXh0ZXJuIGludCBucl9ydW5uaW5nLCBucl90aHJlYWRzOwpleHRlcm4g aW50IGxhc3RfcGlkOwoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGFyYW0uaCIgMSAzCiMgNzkgIi9vcHQvZnNw L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv c2NoZWQuaCIgMiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9yZXNvdXJjZS5oIiAxIDMKIyAyMSAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9y ZXNvdXJjZS5oIiAzCnN0cnVjdCBydXNhZ2UgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3V0 aW1lOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3N0aW1lOwogICAgICAgIGxvbmcgcnVfbWF4 cnNzOwogICAgICAgIGxvbmcgcnVfaXhyc3M7CiAgICAgICAgbG9uZyBydV9pZHJzczsKICAgICAg ICBsb25nIHJ1X2lzcnNzOwogICAgICAgIGxvbmcgcnVfbWluZmx0OwogICAgICAgIGxvbmcgcnVf bWFqZmx0OwogICAgICAgIGxvbmcgcnVfbnN3YXA7CiAgICAgICAgbG9uZyBydV9pbmJsb2NrOwog ICAgICAgIGxvbmcgcnVfb3VibG9jazsKICAgICAgICBsb25nIHJ1X21zZ3NuZDsKICAgICAgICBs b25nIHJ1X21zZ3JjdjsKICAgICAgICBsb25nIHJ1X25zaWduYWxzOwogICAgICAgIGxvbmcgcnVf bnZjc3c7CiAgICAgICAgbG9uZyBydV9uaXZjc3c7Cn07CgpzdHJ1Y3QgcmxpbWl0IHsKICAgICAg ICB1bnNpZ25lZCBsb25nIHJsaW1fY3VyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9tYXg7 Cn07CiMgNTYgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3Jlc291cmNlLmgiIDEg MwojIDU3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIgMwojIDgwICIvb3B0L2ZzcC9pNTg2LXBjLWxp bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIg MwoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDEgMwojIDgzICIvb3B0L2ZzcC9pNTg2LXBjLWxp bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIg MwojIDEyMyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAzCnN0cnVjdCBzY2hlZF9wYXJhbSB7CiAgICAgICAg aW50IHNjaGVkX3ByaW9yaXR5Owp9OwojIDEzNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAzCmV4dGVybiBy d2xvY2tfdCB0YXNrbGlzdF9sb2NrOwpleHRlcm4gc3BpbmxvY2tfdCBydW5xdWV1ZV9sb2NrOwpl eHRlcm4gc3BpbmxvY2tfdCBtbWxpc3RfbG9jazsKCmV4dGVybiB2b2lkIHNjaGVkX2luaXQodm9p ZCk7CmV4dGVybiB2b2lkIGluaXRfaWRsZSh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19zdGF0ZSh2 b2lkKTsKZXh0ZXJuIHZvaWQgY3B1X2luaXQgKHZvaWQpOwpleHRlcm4gdm9pZCB0cmFwX2luaXQo dm9pZCk7CmV4dGVybiB2b2lkIHVwZGF0ZV9wcm9jZXNzX3RpbWVzKGludCB1c2VyKTsKZXh0ZXJu IHZvaWQgdXBkYXRlX29uZV9wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgdW5zaWduZWQg bG9uZyB1c2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBz eXN0ZW0sIGludCBjcHUpOwoKCmV4dGVybiBzaWduZWQgbG9uZyBzY2hlZHVsZV90aW1lb3V0KHNp Z25lZCBsb25nIHRpbWVvdXQpOwogdm9pZCBzY2hlZHVsZSh2b2lkKTsKCmV4dGVybiBpbnQgc2No ZWR1bGVfdGFzayhzdHJ1Y3QgdHFfc3RydWN0ICp0YXNrKTsKZXh0ZXJuIHZvaWQgZmx1c2hfc2No ZWR1bGVkX3Rhc2tzKHZvaWQpOwpleHRlcm4gaW50IHN0YXJ0X2NvbnRleHRfdGhyZWFkKHZvaWQp OwpleHRlcm4gaW50IGN1cnJlbnRfaXNfa2V2ZW50ZCh2b2lkKTsKIyAxNjggIi9vcHQvZnNwL2k1 ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2No ZWQuaCIgMwpzdHJ1Y3QgZmlsZXNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAg ICAgICByd2xvY2tfdCBmaWxlX2xvY2s7CiAgICAgICAgaW50IG1heF9mZHM7CiAgICAgICAgaW50 IG1heF9mZHNldDsKICAgICAgICBpbnQgbmV4dF9mZDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqKiBm ZDsKICAgICAgICBmZF9zZXQgKmNsb3NlX29uX2V4ZWM7CiAgICAgICAgZmRfc2V0ICpvcGVuX2Zk czsKICAgICAgICBmZF9zZXQgY2xvc2Vfb25fZXhlY19pbml0OwogICAgICAgIGZkX3NldCBvcGVu X2Zkc19pbml0OwogICAgICAgIHN0cnVjdCBmaWxlICogZmRfYXJyYXlbMzJdOwp9OwojIDIwMyAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9saW51eC9zY2hlZC5oIiAzCnN0cnVjdCBtbV9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqIG1tYXA7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcF9h dmw7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICogbW1hcF9jYWNoZTsKICAgICAgICBw Z2RfdCAqIHBnZDsKICAgICAgICBhdG9taWNfdCBtbV91c2VyczsKICAgICAgICBhdG9taWNfdCBt bV9jb3VudDsKICAgICAgICBpbnQgbWFwX2NvdW50OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg bW1hcF9zZW07CiAgICAgICAgc3BpbmxvY2tfdCBwYWdlX3RhYmxlX2xvY2s7CgogICAgICAgIHN0 cnVjdCBsaXN0X2hlYWQgbW1saXN0OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2NvZGUs IGVuZF9jb2RlLCBzdGFydF9kYXRhLCBlbmRfZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0 YXJ0X2JyaywgYnJrLCBzdGFydF9zdGFjazsKICAgICAgICB1bnNpZ25lZCBsb25nIGFyZ19zdGFy dCwgYXJnX2VuZCwgZW52X3N0YXJ0LCBlbnZfZW5kOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcnNz LCB0b3RhbF92bSwgbG9ja2VkX3ZtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGVmX2ZsYWdzOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgY3B1X3ZtX21hc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz d2FwX2FkZHJlc3M7CgoKICAgICAgICBtbV9jb250ZXh0X3QgY29udGV4dDsKfTsKCmV4dGVybiBp bnQgbW1saXN0X25yOwojIDI0NCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hlZC5oIiAzCnN0cnVjdCBzaWduYWxfc3Ry dWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBzdHJ1Y3Qga19zaWdhY3Rpb24g YWN0aW9uWzY0XTsKICAgICAgICBzcGlubG9ja190IHNpZ2xvY2s7Cn07CiMgMjYwICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4 L3NjaGVkLmgiIDMKc3RydWN0IHVzZXJfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBfX2NvdW50 OwogICAgICAgIGF0b21pY190IHByb2Nlc3NlczsKICAgICAgICBhdG9taWNfdCBmaWxlczsKCgog ICAgICAgIHN0cnVjdCB1c2VyX3N0cnVjdCAqbmV4dCwgKipwcHJldjsKICAgICAgICB1aWRfdCB1 aWQ7Cn07CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3Qgcm9vdF91c2VyOwoKCnN0cnVj dCB0YXNrX3N0cnVjdCB7CgoKCiAgICAgICAgdm9sYXRpbGUgbG9uZyBzdGF0ZTsKICAgICAgICB1 bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIGludCBzaWdwZW5kaW5nOwogICAgICAgIG1tX3Nl Z21lbnRfdCBhZGRyX2xpbWl0OwoKCgogICAgICAgIHN0cnVjdCBleGVjX2RvbWFpbiAqZXhlY19k b21haW47CiAgICAgICAgdm9sYXRpbGUgbG9uZyBuZWVkX3Jlc2NoZWQ7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBwdHJhY2U7CgogICAgICAgIGludCBsb2NrX2RlcHRoOwoKCgoKCgogICAgICAgIGxv bmcgY291bnRlcjsKICAgICAgICBsb25nIG5pY2U7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwb2xp Y3k7CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqbW07CiAgICAgICAgaW50IGhhc19jcHUsIHBy b2Nlc3NvcjsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdXNfYWxsb3dlZDsKCgoKCiAgICAgICAg c3RydWN0IGxpc3RfaGVhZCBydW5fbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNsZWVwX3Rp bWU7CgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dF90YXNrLCAqcHJldl90YXNrOwog ICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKmFjdGl2ZV9tbTsKCgogICAgICAgIHN0cnVjdCBsaW51 eF9iaW5mbXQgKmJpbmZtdDsKICAgICAgICBpbnQgZXhpdF9jb2RlLCBleGl0X3NpZ25hbDsKICAg ICAgICBpbnQgcGRlYXRoX3NpZ25hbDsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBwZXJzb25hbGl0 eTsKICAgICAgICBpbnQgZHVtcGFibGU6MTsKICAgICAgICBpbnQgZGlkX2V4ZWM6MTsKICAgICAg ICBwaWRfdCBwaWQ7CiAgICAgICAgcGlkX3QgcGdycDsKICAgICAgICBwaWRfdCB0dHlfb2xkX3Bn cnA7CiAgICAgICAgcGlkX3Qgc2Vzc2lvbjsKICAgICAgICBwaWRfdCB0Z2lkOwoKICAgICAgICBp bnQgbGVhZGVyOwoKCgoKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwX29wcHRyLCAqcF9w cHRyLCAqcF9jcHRyLCAqcF95c3B0ciwgKnBfb3NwdHI7CiAgICAgICAgc3RydWN0IGxpc3RfaGVh ZCB0aHJlYWRfZ3JvdXA7CgoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpZGhhc2hfbmV4 dDsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKipwaWRoYXNoX3BwcmV2OwoKICAgICAgICB3 YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X2NobGRleGl0OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUg KnZmb3JrX3NlbTsKICAgICAgICB1bnNpZ25lZCBsb25nIHJ0X3ByaW9yaXR5OwogICAgICAgIHVu c2lnbmVkIGxvbmcgaXRfcmVhbF92YWx1ZSwgaXRfcHJvZl92YWx1ZSwgaXRfdmlydF92YWx1ZTsK ICAgICAgICB1bnNpZ25lZCBsb25nIGl0X3JlYWxfaW5jciwgaXRfcHJvZl9pbmNyLCBpdF92aXJ0 X2luY3I7CiAgICAgICAgc3RydWN0IHRpbWVyX2xpc3QgcmVhbF90aW1lcjsKICAgICAgICBzdHJ1 Y3QgdG1zIHRpbWVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfdGltZTsKICAgICAgICBs b25nIHBlcl9jcHVfdXRpbWVbMV0sIHBlcl9jcHVfc3RpbWVbMV07CgogICAgICAgIHVuc2lnbmVk IGxvbmcgbWluX2ZsdCwgbWFqX2ZsdCwgbnN3YXAsIGNtaW5fZmx0LCBjbWFqX2ZsdCwgY25zd2Fw OwogICAgICAgIGludCBzd2FwcGFibGU6MTsKCiAgICAgICAgdWlkX3QgdWlkLGV1aWQsc3VpZCxm c3VpZDsKICAgICAgICBnaWRfdCBnaWQsZWdpZCxzZ2lkLGZzZ2lkOwogICAgICAgIGludCBuZ3Jv dXBzOwogICAgICAgIGdpZF90IGdyb3Vwc1szMl07CiAgICAgICAga2VybmVsX2NhcF90IGNhcF9l ZmZlY3RpdmUsIGNhcF9pbmhlcml0YWJsZSwgY2FwX3Blcm1pdHRlZDsKICAgICAgICBpbnQga2Vl cF9jYXBhYmlsaXRpZXM6MTsKICAgICAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXI7CgogICAg ICAgIHN0cnVjdCBybGltaXQgcmxpbVsxMV07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdXNlZF9t YXRoOwogICAgICAgIGNoYXIgY29tbVsxNl07CgogICAgICAgIGludCBsaW5rX2NvdW50OwogICAg ICAgIHN0cnVjdCB0dHlfc3RydWN0ICp0dHk7CiAgICAgICAgdW5zaWduZWQgaW50IGxvY2tzOwoK ICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnNlbXVuZG87CiAgICAgICAgc3RydWN0IHNlbV9xdWV1 ZSAqc2Vtc2xlZXBpbmc7CgogICAgICAgIHN0cnVjdCB0aHJlYWRfc3RydWN0IHRocmVhZDsKCiAg ICAgICAgc3RydWN0IGZzX3N0cnVjdCAqZnM7CgogICAgICAgIHN0cnVjdCBmaWxlc19zdHJ1Y3Qg KmZpbGVzOwoKICAgICAgICBzcGlubG9ja190IHNpZ21hc2tfbG9jazsKICAgICAgICBzdHJ1Y3Qg c2lnbmFsX3N0cnVjdCAqc2lnOwoKICAgICAgICBzaWdzZXRfdCBibG9ja2VkOwogICAgICAgIHN0 cnVjdCBzaWdwZW5kaW5nIHBlbmRpbmc7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FzX3NzX3Nw OwogICAgICAgIHNpemVfdCBzYXNfc3Nfc2l6ZTsKICAgICAgICBpbnQgKCpub3RpZmllcikodm9p ZCAqcHJpdik7CiAgICAgICAgdm9pZCAqbm90aWZpZXJfZGF0YTsKICAgICAgICBzaWdzZXRfdCAq bm90aWZpZXJfbWFzazsKCgogICAgICAgIHUzMiBwYXJlbnRfZXhlY19pZDsKICAgICAgICB1MzIg c2VsZl9leGVjX2lkOwoKICAgICAgICBzcGlubG9ja190IGFsbG9jX2xvY2s7Cn07CiMgNDg1ICIv b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl L2xpbnV4L3NjaGVkLmgiIDMKdW5pb24gdGFza191bmlvbiB7CiAgICAgICAgc3RydWN0IHRhc2tf c3RydWN0IHRhc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFja1syMDQ4KnNpemVvZihsb25n KS9zaXplb2YobG9uZyldOwp9OwoKZXh0ZXJuIHVuaW9uIHRhc2tfdW5pb24gaW5pdF90YXNrX3Vu aW9uOwoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgaW5pdF9tbTsKZXh0ZXJuIHN0cnVjdCB0YXNr X3N0cnVjdCAqaW5pdF90YXNrc1sxXTsKCgoKZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqcGlk aGFzaFsoNDA5NiA+PiAyKV07CgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBoYXNoX3BpZChzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnApCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKipodGFibGUgPSAm cGlkaGFzaFsoKCgocC0+cGlkKSA+PiA4KSBeIChwLT5waWQpKSAmICgoNDA5NiA+PiAyKSAtIDEp KV07CgogICAgICAgIGlmKChwLT5waWRoYXNoX25leHQgPSAqaHRhYmxlKSAhPSAoKHZvaWQgKikw KSkKICAgICAgICAgICAgICAgICgqaHRhYmxlKS0+cGlkaGFzaF9wcHJldiA9ICZwLT5waWRoYXNo X25leHQ7CiAgICAgICAgKmh0YWJsZSA9IHA7CiAgICAgICAgcC0+cGlkaGFzaF9wcHJldiA9IGh0 YWJsZTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHVuaGFzaF9waWQoc3RydWN0IHRhc2tfc3RydWN0 ICpwKQp7CiAgICAgICAgaWYocC0+cGlkaGFzaF9uZXh0KQogICAgICAgICAgICAgICAgcC0+cGlk aGFzaF9uZXh0LT5waWRoYXNoX3BwcmV2ID0gcC0+cGlkaGFzaF9wcHJldjsKICAgICAgICAqcC0+ cGlkaGFzaF9wcHJldiA9IHAtPnBpZGhhc2hfbmV4dDsKfQoKc3RhdGljIGlubGluZSBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKmZpbmRfdGFza19ieV9waWQoaW50IHBpZCkKewogICAgICAgIHN0cnVjdCB0 YXNrX3N0cnVjdCAqcCwgKipodGFibGUgPSAmcGlkaGFzaFsoKCgocGlkKSA+PiA4KSBeIChwaWQp KSAmICgoNDA5NiA+PiAyKSAtIDEpKV07CgogICAgICAgIGZvcihwID0gKmh0YWJsZTsgcCAmJiBw LT5waWQgIT0gcGlkOyBwID0gcC0+cGlkaGFzaF9uZXh0KQogICAgICAgICAgICAgICAgOwoKICAg ICAgICByZXR1cm4gcDsKfQoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKiBhbGxvY191aWQo dWlkX3QpOwpleHRlcm4gdm9pZCBmcmVlX3VpZChzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKik7CgojIDEg Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1 ZGUvYXNtL2N1cnJlbnQuaCIgMSAzCiMgNTMzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIgMwoKZXh0ZXJu IHVuc2lnbmVkIGxvbmcgdm9sYXRpbGUgamlmZmllczsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaXRp bWVyX3RpY2tzOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpdGltZXJfbmV4dDsKZXh0ZXJuIHZvbGF0 aWxlIHN0cnVjdCB0aW1ldmFsIHh0aW1lOwpleHRlcm4gdm9pZCBkb190aW1lcihzdHJ1Y3QgcHRf cmVncyAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQgKiBwcm9mX2J1ZmZlcjsKZXh0ZXJuIHVuc2ln bmVkIGxvbmcgcHJvZl9sZW47CmV4dGVybiB1bnNpZ25lZCBsb25nIHByb2Zfc2hpZnQ7CgpleHRl cm4gdW5zaWduZWQgbG9uZyBrcHJvZl9jb3VudDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdXByb2Zf Y291bnQ7CgoKCmV4dGVybiB2b2lkIF9fd2FrZV91cCh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgdW5z aWduZWQgaW50IG1vZGUsIGludCBucik7CmV4dGVybiB2b2lkIF9fd2FrZV91cF9zeW5jKHdhaXRf cXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yKTsKZXh0ZXJuIHZvaWQg c2xlZXBfb24od2FpdF9xdWV1ZV9oZWFkX3QgKnEpOwpleHRlcm4gbG9uZyBzbGVlcF9vbl90aW1l b3V0KHdhaXRfcXVldWVfaGVhZF90ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KTsKCmV4dGVybiB2 b2lkIGludGVycnVwdGlibGVfc2xlZXBfb24od2FpdF9xdWV1ZV9oZWFkX3QgKnEpOwpleHRlcm4g bG9uZyBpbnRlcnJ1cHRpYmxlX3NsZWVwX29uX3RpbWVvdXQod2FpdF9xdWV1ZV9oZWFkX3QgKnEs IHNpZ25lZCBsb25nIHRpbWVvdXQpOwoKZXh0ZXJuIGludCB3YWtlX3VwX3Byb2Nlc3Moc3RydWN0 IHRhc2tfc3RydWN0ICogdHNrKTsKIyA1NjkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQuaCIgMwogbG9uZyBzeXNf d2FpdDQocGlkX3QgcGlkLHVuc2lnbmVkIGludCAqIHN0YXRfYWRkciwgaW50IG9wdGlvbnMsIHN0 cnVjdCBydXNhZ2UgKiBydSk7CgpleHRlcm4gaW50IGluX2dyb3VwX3AoZ2lkX3QpOwpleHRlcm4g aW50IGluX2Vncm91cF9wKGdpZF90KTsKCmV4dGVybiB2b2lkIHByb2NfY2FjaGVzX2luaXQodm9p ZCk7CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25hbHMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl cm4gdm9pZCBmbHVzaF9zaWduYWxfaGFuZGxlcnMoc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRl cm4gaW50IGRlcXVldWVfc2lnbmFsKHNpZ3NldF90ICosIHNpZ2luZm9fdCAqKTsKZXh0ZXJuIHZv aWQgYmxvY2tfYWxsX3NpZ25hbHMoaW50ICgqbm90aWZpZXIpKHZvaWQgKnByaXYpLCB2b2lkICpw cml2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdzZXRfdCAqbWFzayk7CmV4dGVy biB2b2lkIHVuYmxvY2tfYWxsX3NpZ25hbHModm9pZCk7CmV4dGVybiBpbnQgc2VuZF9zaWdfaW5m byhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIGlu dCBmb3JjZV9zaWdfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHN0cnVjdCB0YXNrX3N0cnVj dCAqKTsKZXh0ZXJuIGludCBraWxsX3BnX2luZm8oaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBwaWRf dCk7CmV4dGVybiBpbnQga2lsbF9zbF9pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3Qp OwpleHRlcm4gaW50IGtpbGxfcHJvY19pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3Qp OwpleHRlcm4gdm9pZCBub3RpZnlfcGFyZW50KHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBpbnQpOwpl eHRlcm4gdm9pZCBkb19ub3RpZnlfcGFyZW50KHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBpbnQpOwpl eHRlcm4gdm9pZCBmb3JjZV9zaWcoaW50LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBp bnQgc2VuZF9zaWcoaW50LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50KTsKZXh0ZXJuIGludCBr aWxsX3BnKHBpZF90LCBpbnQsIGludCk7CmV4dGVybiBpbnQga2lsbF9zbChwaWRfdCwgaW50LCBp bnQpOwpleHRlcm4gaW50IGtpbGxfcHJvYyhwaWRfdCwgaW50LCBpbnQpOwpleHRlcm4gaW50IGRv X3NpZ2FjdGlvbihpbnQsIGNvbnN0IHN0cnVjdCBrX3NpZ2FjdGlvbiAqLCBzdHJ1Y3Qga19zaWdh Y3Rpb24gKik7CmV4dGVybiBpbnQgZG9fc2lnYWx0c3RhY2soY29uc3Qgc3RhY2tfdCAqLCBzdGFj a190ICosIHVuc2lnbmVkIGxvbmcpOwoKc3RhdGljIGlubGluZSBpbnQgc2lnbmFsX3BlbmRpbmco c3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgcmV0dXJuIChwLT5zaWdwZW5kaW5nICE9 IDApOwp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgaGFzX3BlbmRpbmdfc2lnbmFscyhzaWdzZXRf dCAqc2lnbmFsLCBzaWdzZXRfdCAqYmxvY2tlZCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgcmVh ZHk7CiAgICAgICAgbG9uZyBpOwoKICAgICAgICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAg IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBmb3IgKGkgPSAoNjQgLyAzMiksIHJlYWR5ID0gMDsg LS1pID49IDAgOykKICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdb aV0gJn4gYmxvY2tlZC0+c2lnW2ldOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNh c2UgNDogcmVhZHkgPSBzaWduYWwtPnNpZ1szXSAmfiBibG9ja2VkLT5zaWdbM107CiAgICAgICAg ICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1syXSAmfiBibG9ja2VkLT5zaWdbMl07CiAgICAg ICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1sxXSAmfiBibG9ja2VkLT5zaWdbMV07CiAg ICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwtPnNpZ1swXSAmfiBibG9ja2VkLT5zaWdbMF07 CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOiByZWFkeSA9IHNpZ25hbC0+ c2lnWzFdICZ+IGJsb2NrZWQtPnNpZ1sxXTsKICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25h bC0+c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAg ICAgICBjYXNlIDE6IHJlYWR5ID0gc2lnbmFsLT5zaWdbMF0gJn4gYmxvY2tlZC0+c2lnWzBdOwog ICAgICAgIH0KICAgICAgICByZXR1cm4gcmVhZHkgIT0gMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUg dm9pZCByZWNhbGNfc2lncGVuZGluZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpCnsKICAgICAgICB0 LT5zaWdwZW5kaW5nID0gaGFzX3BlbmRpbmdfc2lnbmFscygmdC0+cGVuZGluZy5zaWduYWwsICZ0 LT5ibG9ja2VkKTsKfQoKCgpzdGF0aWMgaW5saW5lIGludCBvbl9zaWdfc3RhY2sodW5zaWduZWQg bG9uZyBzcCkKewogICAgICAgIHJldHVybiAoc3AgLSBjdXJyZW50LT5zYXNfc3Nfc3AgPCBjdXJy ZW50LT5zYXNfc3Nfc2l6ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IHNhc19zc19mbGFncyh1bnNp Z25lZCBsb25nIHNwKQp7CiAgICAgICAgcmV0dXJuIChjdXJyZW50LT5zYXNfc3Nfc2l6ZSA9PSAw ID8gMgogICAgICAgICAgICAgICAgOiBvbl9zaWdfc3RhY2soc3ApID8gMSA6IDApOwp9CgpleHRl cm4gaW50IHJlcXVlc3RfaXJxKHVuc2lnbmVkIGludCwKICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICgqaGFuZGxlcikoaW50LCB2b2lkICosIHN0cnVjdCBwdF9yZWdzICopLAogICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcsIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKZXh0ZXJu IHZvaWQgZnJlZV9pcnEodW5zaWduZWQgaW50LCB2b2lkICopOwojIDY3MiAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zY2hl ZC5oIiAzCnN0YXRpYyBpbmxpbmUgaW50IHN1c2VyKHZvaWQpCnsKICAgICAgICBpZiAoISggKDEg PDwgKDAgKzEpKSAmIDB4MDAwMDAwMDAgPyAoMSA8PCAoMCkpICYgMHgwMDAwMDAwMCA6ICgxIDw8 ICgwKSkgJiBzZWN1cmViaXRzICkgJiYgY3VycmVudC0+ZXVpZCA9PSAwKSB7CiAgICAgICAgICAg ICAgICBjdXJyZW50LT5mbGFncyB8PSAweDAwMDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJu IDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBmc3Vz ZXIodm9pZCkKewogICAgICAgIGlmICghKCAoMSA8PCAoMCArMSkpICYgMHgwMDAwMDAwMCA/ICgx IDw8ICgwKSkgJiAweDAwMDAwMDAwIDogKDEgPDwgKDApKSAmIHNlY3VyZWJpdHMgKSAmJiBjdXJy ZW50LT5mc3VpZCA9PSAwKSB7CiAgICAgICAgICAgICAgICBjdXJyZW50LT5mbGFncyB8PSAweDAw MDAwMTAwOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJldHVy biAwOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIGludCBjYXBhYmxlKGludCBjYXApCnsKCiAgICAg ICAgaWYgKCgoY3VycmVudC0+Y2FwX2VmZmVjdGl2ZSkgJiAoMSA8PCAoY2FwKSkpKQoKCgogICAg ICAgIHsKICAgICAgICAgICAgICAgIGN1cnJlbnQtPmZsYWdzIHw9IDB4MDAwMDAxMDA7CiAgICAg ICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KCgoKCmV4 dGVybiBzdHJ1Y3QgbW1fc3RydWN0ICogbW1fYWxsb2Modm9pZCk7CgpleHRlcm4gc3RydWN0IG1t X3N0cnVjdCAqIHN0YXJ0X2xhenlfdGxiKHZvaWQpOwpleHRlcm4gdm9pZCBlbmRfbGF6eV90bGIo c3RydWN0IG1tX3N0cnVjdCAqbW0pOwoKCmV4dGVybiBpbmxpbmUgdm9pZCBfX21tZHJvcChzdHJ1 Y3QgbW1fc3RydWN0ICopOwpzdGF0aWMgaW5saW5lIHZvaWQgbW1kcm9wKHN0cnVjdCBtbV9zdHJ1 Y3QgKiBtbSkKewogICAgICAgIGlmICgoYXRvbWljX2RlY19yZXR1cm4oKCZtbS0+bW1fY291bnQp KSA9PSAwKSkKICAgICAgICAgICAgICAgIF9fbW1kcm9wKG1tKTsKfQoKCmV4dGVybiB2b2lkIG1t cHV0KHN0cnVjdCBtbV9zdHJ1Y3QgKik7CgpleHRlcm4gdm9pZCBtbV9yZWxlYXNlKHZvaWQpOwoK CgoKZXh0ZXJuIHN0cnVjdCBmaWxlICoqIGFsbG9jX2ZkX2FycmF5KGludCk7CmV4dGVybiBpbnQg ZXhwYW5kX2ZkX2FycmF5KHN0cnVjdCBmaWxlc19zdHJ1Y3QgKiwgaW50IG5yKTsKZXh0ZXJuIHZv aWQgZnJlZV9mZF9hcnJheShzdHJ1Y3QgZmlsZSAqKiwgaW50KTsKCmV4dGVybiBmZF9zZXQgKmFs bG9jX2Zkc2V0KGludCk7CmV4dGVybiBpbnQgZXhwYW5kX2Zkc2V0KHN0cnVjdCBmaWxlc19zdHJ1 Y3QgKiwgaW50IG5yKTsKZXh0ZXJuIHZvaWQgZnJlZV9mZHNldChmZF9zZXQgKiwgaW50KTsKCmV4 dGVybiBpbnQgY29weV90aHJlYWQoaW50LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1 bnNpZ25lZCBsb25nLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IHB0X3JlZ3MgKik7CmV4 dGVybiB2b2lkIGZsdXNoX3RocmVhZCh2b2lkKTsKZXh0ZXJuIHZvaWQgZXhpdF90aHJlYWQodm9p ZCk7CgpleHRlcm4gdm9pZCBleGl0X21tKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZv aWQgZXhpdF9maWxlcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIGV4aXRfc2ln aGFuZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CgpleHRlcm4gdm9pZCBkYWVtb25pemUodm9pZCk7 CgpleHRlcm4gaW50IGRvX2V4ZWN2ZShjaGFyICosIGNoYXIgKiosIGNoYXIgKiosIHN0cnVjdCBw dF9yZWdzICopOwpleHRlcm4gaW50IGRvX2ZvcmsodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9u Zywgc3RydWN0IHB0X3JlZ3MgKiwgdW5zaWduZWQgbG9uZyk7CgpleHRlcm4gdm9pZCBhZGRfd2Fp dF9xdWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCk7CmV4dGVy biB2b2lkIGFkZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgd2Fp dF9xdWV1ZV90ICogd2FpdCk7CmV4dGVybiB2b2lkIHJlbW92ZV93YWl0X3F1ZXVlKHdhaXRfcXVl dWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKiB3YWl0KTsKIyA4MzkgIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQu aCIgMwpzdGF0aWMgaW5saW5lIHZvaWQgZGVsX2Zyb21fcnVucXVldWUoc3RydWN0IHRhc2tfc3Ry dWN0ICogcCkKewogICAgICAgIG5yX3J1bm5pbmctLTsKICAgICAgICBwLT5zbGVlcF90aW1lID0g amlmZmllczsKICAgICAgICBsaXN0X2RlbCgmcC0+cnVuX2xpc3QpOwogICAgICAgIHAtPnJ1bl9s aXN0Lm5leHQgPSAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBpbnQgdGFza19vbl9ydW5x dWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1cm4gKHAtPnJ1bl9saXN0 Lm5leHQgIT0gKCh2b2lkICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5oYXNoX3Byb2Nl c3Moc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgaWYgKHRhc2tfb25fcnVucXVldWUo cCkpIGRvIHsgcHJpbnRrKCJrZXJuZWwgQlVHIGF0ICVzOiVkIVxuIiwgIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvc2NoZWQu aCIsIDg1NCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIubG9uZyAweDAiKTsgfSB3aGlsZSAoMCk7 CiAgICAgICAgZG8geyBpbnRfY29udHJvbC5pbnRfY2xpKCk7ICh2b2lkKSgmdGFza2xpc3RfbG9j ayk7IH0gd2hpbGUgKDApOwogICAgICAgIG5yX3RocmVhZHMtLTsKICAgICAgICB1bmhhc2hfcGlk KHApOwogICAgICAgIGRvIHsgKHApLT5uZXh0X3Rhc2stPnByZXZfdGFzayA9IChwKS0+cHJldl90 YXNrOyAocCktPnByZXZfdGFzay0+bmV4dF90YXNrID0gKHApLT5uZXh0X3Rhc2s7IGlmICgocCkt PnBfb3NwdHIpIChwKS0+cF9vc3B0ci0+cF95c3B0ciA9IChwKS0+cF95c3B0cjsgaWYgKChwKS0+ cF95c3B0cikgKHApLT5wX3lzcHRyLT5wX29zcHRyID0gKHApLT5wX29zcHRyOyBlbHNlIChwKS0+ cF9wcHRyLT5wX2NwdHIgPSAocCktPnBfb3NwdHI7IH0gd2hpbGUgKDApOwogICAgICAgIGxpc3Rf ZGVsKCZwLT50aHJlYWRfZ3JvdXApOwogICAgICAgIGRvIHsgZG8geyB9IHdoaWxlKDApOyBpbnRf Y29udHJvbC5pbnRfc3RpKCk7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdGFz a19sb2NrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgICh2b2lkKSgmcC0+YWxsb2Nf bG9jayk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX3VubG9jayhzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnApCnsKICAgICAgICBkbyB7IH0gd2hpbGUoMCk7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIg KiBkX3BhdGgoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgdmZzbW91bnQgKnZmc21udCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsIGludCBidWZsZW4pCnsK ICAgICAgICBjaGFyICpyZXM7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpyb290bW50OwogICAg ICAgIHN0cnVjdCBkZW50cnkgKnJvb3Q7CiAgICAgICAgKHZvaWQpKCZjdXJyZW50LT5mcy0+bG9j ayk7CiAgICAgICAgcm9vdG1udCA9IG1udGdldChjdXJyZW50LT5mcy0+cm9vdG1udCk7CiAgICAg ICAgcm9vdCA9IGRnZXQoY3VycmVudC0+ZnMtPnJvb3QpOwogICAgICAgIGRvIHsgfSB3aGlsZSgw KTsKICAgICAgICAodm9pZCkoJmRjYWNoZV9sb2NrKTsKICAgICAgICByZXMgPSBfX2RfcGF0aChk ZW50cnksIHZmc21udCwgcm9vdCwgcm9vdG1udCwgYnVmLCBidWZsZW4pOwogICAgICAgIGRvIHsg fSB3aGlsZSgwKTsKICAgICAgICBkcHV0KHJvb3QpOwogICAgICAgIG1udHB1dChyb290bW50KTsK ICAgICAgICByZXR1cm4gcmVzOwp9CiMgNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ibGtkZXYuaCIgMiAzCiMgMSAiL29w dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9s aW51eC9nZW5oZC5oIiAxIDMKIyAzNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9nZW5oZC5oIiAzCnN0cnVjdCBwYXJ0aXRp b24gewogICAgICAgIHVuc2lnbmVkIGNoYXIgYm9vdF9pbmQ7CiAgICAgICAgdW5zaWduZWQgY2hh ciBoZWFkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2VjdG9yOwogICAgICAgIHVuc2lnbmVkIGNo YXIgY3lsOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc3lzX2luZDsKICAgICAgICB1bnNpZ25lZCBj aGFyIGVuZF9oZWFkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZW5kX3NlY3RvcjsKICAgICAgICB1 bnNpZ25lZCBjaGFyIGVuZF9jeWw7CiAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0X3NlY3Q7CiAg ICAgICAgdW5zaWduZWQgaW50IG5yX3NlY3RzOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoK CiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9saW51eC9kZXZmc19mc19rZXJuZWwuaCIgMSAzCiMgNDUgIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZGV2ZnNf ZnNfa2VybmVsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgZGV2ZnNfZW50cnkgKiBkZXZmc19oYW5kbGVf dDsKIyA1NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9saW51eC9kZXZmc19mc19rZXJuZWwuaCIgMwpleHRlcm4gZGV2ZnNfaGFuZGxl X3QgZGV2ZnNfcmVnaXN0ZXIgKGRldmZzX2hhbmRsZV90IGRpciwgY29uc3QgY2hhciAqbmFtZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3Ms CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1ham9y LCB1bnNpZ25lZCBpbnQgbWlub3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW1vZGVfdCBtb2RlLCB2b2lkICpvcHMsIHZvaWQgKmluZm8pOwpleHRlcm4gdm9pZCBkZXZm c191bnJlZ2lzdGVyIChkZXZmc19oYW5kbGVfdCBkZSk7CmV4dGVybiBpbnQgZGV2ZnNfbWtfc3lt bGluayAoZGV2ZnNfaGFuZGxlX3QgZGlyLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncywgY29uc3QgY2hhciAqbGluaywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZmc19oYW5kbGVfdCAqaGFuZGxlLCB2b2lkICpp bmZvKTsKZXh0ZXJuIGRldmZzX2hhbmRsZV90IGRldmZzX21rX2RpciAoZGV2ZnNfaGFuZGxlX3Qg ZGlyLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICppbmZvKTsKZXh0ZXJuIGRldmZzX2hhbmRsZV90IGRldmZzX2ZpbmRfaGFuZGxlIChk ZXZmc19oYW5kbGVfdCBkaXIsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1ham9yLHVuc2lnbmVkIGludCBtaW5v ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIHR5cGUsIGlu dCB0cmF2ZXJzZV9zeW1saW5rcyk7CmV4dGVybiBpbnQgZGV2ZnNfZ2V0X2ZsYWdzIChkZXZmc19o YW5kbGVfdCBkZSwgdW5zaWduZWQgaW50ICpmbGFncyk7CmV4dGVybiBpbnQgZGV2ZnNfc2V0X2Zs YWdzIChkZXZmc19oYW5kbGVfdCBkZSwgdW5zaWduZWQgaW50IGZsYWdzKTsKZXh0ZXJuIGludCBk ZXZmc19nZXRfbWFqX21pbiAoZGV2ZnNfaGFuZGxlX3QgZGUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCAqbWFqb3IsIHVuc2lnbmVkIGludCAqbWlub3IpOwpleHRl cm4gZGV2ZnNfaGFuZGxlX3QgZGV2ZnNfZ2V0X2hhbmRsZV9mcm9tX2lub2RlIChzdHJ1Y3QgaW5v ZGUgKmlub2RlKTsKZXh0ZXJuIGludCBkZXZmc19nZW5lcmF0ZV9wYXRoIChkZXZmc19oYW5kbGVf dCBkZSwgY2hhciAqcGF0aCwgaW50IGJ1Zmxlbik7CmV4dGVybiB2b2lkICpkZXZmc19nZXRfb3Bz IChkZXZmc19oYW5kbGVfdCBkZSk7CmV4dGVybiBpbnQgZGV2ZnNfc2V0X2ZpbGVfc2l6ZSAoZGV2 ZnNfaGFuZGxlX3QgZGUsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiB2b2lkICpkZXZmc19n ZXRfaW5mbyAoZGV2ZnNfaGFuZGxlX3QgZGUpOwpleHRlcm4gaW50IGRldmZzX3NldF9pbmZvIChk ZXZmc19oYW5kbGVfdCBkZSwgdm9pZCAqaW5mbyk7CmV4dGVybiBkZXZmc19oYW5kbGVfdCBkZXZm c19nZXRfcGFyZW50IChkZXZmc19oYW5kbGVfdCBkZSk7CmV4dGVybiBkZXZmc19oYW5kbGVfdCBk ZXZmc19nZXRfZmlyc3RfY2hpbGQgKGRldmZzX2hhbmRsZV90IGRlKTsKZXh0ZXJuIGRldmZzX2hh bmRsZV90IGRldmZzX2dldF9uZXh0X3NpYmxpbmcgKGRldmZzX2hhbmRsZV90IGRlKTsKZXh0ZXJu IHZvaWQgZGV2ZnNfYXV0b191bnJlZ2lzdGVyIChkZXZmc19oYW5kbGVfdCBtYXN0ZXIsZGV2ZnNf aGFuZGxlX3Qgc2xhdmUpOwpleHRlcm4gZGV2ZnNfaGFuZGxlX3QgZGV2ZnNfZ2V0X3VucmVnaXN0 ZXJfc2xhdmUgKGRldmZzX2hhbmRsZV90IG1hc3Rlcik7CmV4dGVybiBjb25zdCBjaGFyICpkZXZm c19nZXRfbmFtZSAoZGV2ZnNfaGFuZGxlX3QgZGUsIHVuc2lnbmVkIGludCAqbmFtZWxlbik7CmV4 dGVybiBpbnQgZGV2ZnNfcmVnaXN0ZXJfY2hyZGV2ICh1bnNpZ25lZCBpbnQgbWFqb3IsIGNvbnN0 IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmls ZV9vcGVyYXRpb25zICpmb3BzKTsKZXh0ZXJuIGludCBkZXZmc19yZWdpc3Rlcl9ibGtkZXYgKHVu c2lnbmVkIGludCBtYWpvciwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyAqYmRvcHMpOwpleHRl cm4gaW50IGRldmZzX3VucmVnaXN0ZXJfY2hyZGV2ICh1bnNpZ25lZCBpbnQgbWFqb3IsIGNvbnN0 IGNoYXIgKm5hbWUpOwpleHRlcm4gaW50IGRldmZzX3VucmVnaXN0ZXJfYmxrZGV2ICh1bnNpZ25l ZCBpbnQgbWFqb3IsIGNvbnN0IGNoYXIgKm5hbWUpOwoKZXh0ZXJuIHZvaWQgZGV2ZnNfcmVnaXN0 ZXJfdGFwZSAoZGV2ZnNfaGFuZGxlX3QgZGUpOwpleHRlcm4gdm9pZCBkZXZmc19yZWdpc3Rlcl9z ZXJpZXMgKGRldmZzX2hhbmRsZV90IGRpciwgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBudW1fZW50cmllcywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsIHVuc2lnbmVk IGludCBtYWpvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgbWlub3Jfc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW1vZGVf dCBtb2RlLCB2b2lkICpvcHMsIHZvaWQgKmluZm8pOwoKZXh0ZXJuIGludCBpbml0X2RldmZzX2Zz ICh2b2lkKTsKZXh0ZXJuIHZvaWQgbW91bnRfZGV2ZnNfZnMgKHZvaWQpOwpleHRlcm4gdm9pZCBk ZXZmc19tYWtlX3Jvb3QgKGNvbnN0IGNoYXIgKm5hbWUpOwojIDQ5ICIvb3B0L2ZzcC9pNTg2LXBj LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2dlbmhkLmgi IDIgMwoKc3RydWN0IGhkX3N0cnVjdCB7CiAgICAgICAgbG9uZyBzdGFydF9zZWN0OwogICAgICAg IGxvbmcgbnJfc2VjdHM7CiAgICAgICAgZGV2ZnNfaGFuZGxlX3QgZGU7Cn07CgoKCnN0cnVjdCBn ZW5kaXNrIHsKICAgICAgICBpbnQgbWFqb3I7CiAgICAgICAgY29uc3QgY2hhciAqbWFqb3JfbmFt ZTsKICAgICAgICBpbnQgbWlub3Jfc2hpZnQ7CgogICAgICAgIGludCBtYXhfcDsKCiAgICAgICAg c3RydWN0IGhkX3N0cnVjdCAqcGFydDsKICAgICAgICBpbnQgKnNpemVzOwogICAgICAgIGludCBu cl9yZWFsOwoKICAgICAgICB2b2lkICpyZWFsX2RldmljZXM7CiAgICAgICAgc3RydWN0IGdlbmRp c2sgKm5leHQ7CiAgICAgICAgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICpmb3BzOwoK ICAgICAgICBkZXZmc19oYW5kbGVfdCAqZGVfYXJyOwogICAgICAgIGNoYXIgKmZsYWdzOwp9Owoj IDIyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9saW51eC9nZW5oZC5oIiAzCmV4dGVybiBzdHJ1Y3QgZ2VuZGlzayAqZ2VuZGlza19o ZWFkOwoKY2hhciAqZGlza19uYW1lIChzdHJ1Y3QgZ2VuZGlzayAqaGQsIGludCBtaW5vciwgY2hh ciAqYnVmKTsKCmV4dGVybiB2b2lkIGRldmZzX3JlZ2lzdGVyX3BhcnRpdGlvbnMgKHN0cnVjdCBn ZW5kaXNrICpkZXYsIGludCBtaW5vciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IHVucmVnaXN0ZXIpOwoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBk aXNrX2luZGV4IChrZGV2X3QgZGV2KQp7CiAgICAgICAgaW50IG1ham9yID0gKCh1bnNpZ25lZCBp bnQpICgoZGV2KSA+PiA4KSk7CiAgICAgICAgaW50IG1pbm9yID0gKCh1bnNpZ25lZCBpbnQpICgo ZGV2KSAmICgoMVUgPDwgOCkgLSAxKSkpOwogICAgICAgIHVuc2lnbmVkIGludCBpbmRleDsKCiAg ICAgICAgc3dpdGNoIChtYWpvcikgewogICAgICAgICAgICAgICAgY2FzZSA0OCArMDoKICAgICAg ICAgICAgICAgICAgICAgICAgaW5kZXggPSAobWlub3IgJiAweDAwZjgpID4+IDM7CiAgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAg ICAgICAgICAgICAgICBpbmRleCA9IChtaW5vciAmIDB4MDBmMCkgPj4gNDsKICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAg ICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IChtaW5vciAmIDB4MDA0 MCkgPj4gNjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBj YXNlIDIyOgogICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9ICgobWlub3IgJiAweDAwNDAp ID4+IDYpICsgMjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAg ICAgICAgcmV0dXJuIGluZGV4Owp9CiMgNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ibGtkZXYuaCIgMiAzCgoKCnN0cnVj dCByZXF1ZXN0X3F1ZXVlOwp0eXBlZGVmIHN0cnVjdCByZXF1ZXN0X3F1ZXVlIHJlcXVlc3RfcXVl dWVfdDsKc3RydWN0IGVsZXZhdG9yX3M7CnR5cGVkZWYgc3RydWN0IGVsZXZhdG9yX3MgZWxldmF0 b3JfdDsKCgoKCgoKCnN0cnVjdCByZXF1ZXN0IHsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHF1 ZXVlOwogICAgICAgIGludCBlbGV2YXRvcl9zZXF1ZW5jZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkIHRhYmxlOwoKICAgICAgICB2b2xhdGlsZSBpbnQgcnFfc3RhdHVzOwoKCgoKCgogICAgICAg IGtkZXZfdCBycV9kZXY7CiAgICAgICAgaW50IGNtZDsKICAgICAgICBpbnQgZXJyb3JzOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgc2VjdG9yOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbnJfc2VjdG9y czsKICAgICAgICB1bnNpZ25lZCBsb25nIGhhcmRfc2VjdG9yLCBoYXJkX25yX3NlY3RvcnM7CiAg ICAgICAgdW5zaWduZWQgaW50IG5yX3NlZ21lbnRzOwogICAgICAgIHVuc2lnbmVkIGludCBucl9o d19zZWdtZW50czsKICAgICAgICB1bnNpZ25lZCBsb25nIGN1cnJlbnRfbnJfc2VjdG9yczsKICAg ICAgICB2b2lkICogc3BlY2lhbDsKICAgICAgICBjaGFyICogYnVmZmVyOwogICAgICAgIHN0cnVj dCBzZW1hcGhvcmUgKiBzZW07CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYmg7CiAgICAg ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYmh0YWlsOwogICAgICAgIHJlcXVlc3RfcXVldWVfdCAq cTsKfTsKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51 eC9zeXMtaW5jbHVkZS9saW51eC9lbGV2YXRvci5oIiAxIDMKCgoKdHlwZWRlZiB2b2lkIChlbGV2 YXRvcl9mbikgKHN0cnVjdCByZXF1ZXN0ICosIGVsZXZhdG9yX3QgKiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBsaXN0X2hlYWQgKiwgaW50KTsKCnR5cGVkZWYgaW50IChlbGV2YXRvcl9tZXJn ZV9mbikgKHJlcXVlc3RfcXVldWVfdCAqLCBzdHJ1Y3QgcmVxdWVzdCAqKiwgc3RydWN0IGxpc3Rf aGVhZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hl YWQgKiwgaW50LCBpbnQpOwoKdHlwZWRlZiB2b2lkIChlbGV2YXRvcl9tZXJnZV9jbGVhbnVwX2Zu KSAocmVxdWVzdF9xdWV1ZV90ICosIHN0cnVjdCByZXF1ZXN0ICosIGludCk7Cgp0eXBlZGVmIHZv aWQgKGVsZXZhdG9yX21lcmdlX3JlcV9mbikgKHN0cnVjdCByZXF1ZXN0ICosIHN0cnVjdCByZXF1 ZXN0ICopOwoKc3RydWN0IGVsZXZhdG9yX3MKewogICAgICAgIGludCByZWFkX2xhdGVuY3k7CiAg ICAgICAgaW50IHdyaXRlX2xhdGVuY3k7CgogICAgICAgIGVsZXZhdG9yX21lcmdlX2ZuICplbGV2 YXRvcl9tZXJnZV9mbjsKICAgICAgICBlbGV2YXRvcl9tZXJnZV9jbGVhbnVwX2ZuICplbGV2YXRv cl9tZXJnZV9jbGVhbnVwX2ZuOwogICAgICAgIGVsZXZhdG9yX21lcmdlX3JlcV9mbiAqZWxldmF0 b3JfbWVyZ2VfcmVxX2ZuOwoKICAgICAgICB1bnNpZ25lZCBpbnQgcXVldWVfSUQ7Cn07CgppbnQg ZWxldmF0b3Jfbm9vcF9tZXJnZShyZXF1ZXN0X3F1ZXVlX3QgKiwgc3RydWN0IHJlcXVlc3QgKios IHN0cnVjdCBsaXN0X2hlYWQgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICosIGludCwgaW50KTsKdm9p ZCBlbGV2YXRvcl9ub29wX21lcmdlX2NsZWFudXAocmVxdWVzdF9xdWV1ZV90ICosIHN0cnVjdCBy ZXF1ZXN0ICosIGludCk7CnZvaWQgZWxldmF0b3Jfbm9vcF9tZXJnZV9yZXEoc3RydWN0IHJlcXVl c3QgKiwgc3RydWN0IHJlcXVlc3QgKik7CgppbnQgZWxldmF0b3JfbGludXNfbWVyZ2UocmVxdWVz dF9xdWV1ZV90ICosIHN0cnVjdCByZXF1ZXN0ICoqLCBzdHJ1Y3QgbGlzdF9oZWFkICosIHN0cnVj dCBidWZmZXJfaGVhZCAqLCBpbnQsIGludCk7CnZvaWQgZWxldmF0b3JfbGludXNfbWVyZ2VfY2xl YW51cChyZXF1ZXN0X3F1ZXVlX3QgKiwgc3RydWN0IHJlcXVlc3QgKiwgaW50KTsKdm9pZCBlbGV2 YXRvcl9saW51c19tZXJnZV9yZXEoc3RydWN0IHJlcXVlc3QgKiwgc3RydWN0IHJlcXVlc3QgKik7 Cgp0eXBlZGVmIHN0cnVjdCBibGtlbHZfaW9jdGxfYXJnX3MgewogICAgICAgIGludCBxdWV1ZV9J RDsKICAgICAgICBpbnQgcmVhZF9sYXRlbmN5OwogICAgICAgIGludCB3cml0ZV9sYXRlbmN5Owog ICAgICAgIGludCBtYXhfYm9tYl9zZWdtZW50czsKfSBibGtlbHZfaW9jdGxfYXJnX3Q7CgoKCgpl eHRlcm4gaW50IGJsa2VsdmdldF9pb2N0bChlbGV2YXRvcl90ICosIGJsa2Vsdl9pb2N0bF9hcmdf dCAqKTsKZXh0ZXJuIGludCBibGtlbHZzZXRfaW9jdGwoZWxldmF0b3JfdCAqLCBjb25zdCBibGtl bHZfaW9jdGxfYXJnX3QgKik7CgpleHRlcm4gdm9pZCBlbGV2YXRvcl9pbml0KGVsZXZhdG9yX3Qg KiwgZWxldmF0b3JfdCk7CiMgNzMgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvZWxldmF0b3IuaCIgMwpzdGF0aWMgaW5saW5l IGludCBlbGV2YXRvcl9yZXF1ZXN0X2xhdGVuY3koZWxldmF0b3JfdCAqIGVsZXZhdG9yLCBpbnQg cncpCnsKICAgICAgICBpbnQgbGF0ZW5jeTsKCiAgICAgICAgbGF0ZW5jeSA9IGVsZXZhdG9yLT5y ZWFkX2xhdGVuY3k7CiAgICAgICAgaWYgKHJ3ICE9IDApCiAgICAgICAgICAgICAgICBsYXRlbmN5 ID0gZWxldmF0b3ItPndyaXRlX2xhdGVuY3k7CgogICAgICAgIHJldHVybiBsYXRlbmN5Owp9CiMg NTEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu Y2x1ZGUvbGludXgvYmxrZGV2LmgiIDIgMwoKdHlwZWRlZiBpbnQgKG1lcmdlX3JlcXVlc3RfZm4p IChyZXF1ZXN0X3F1ZXVlX3QgKnEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHJlcXVlc3QgKnJlcSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg YnVmZmVyX2hlYWQgKmJoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCk7CnR5 cGVkZWYgaW50IChtZXJnZV9yZXF1ZXN0c19mbikgKHJlcXVlc3RfcXVldWVfdCAqcSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJlcXVlc3QgKnJlcSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJlcXVlc3QgKnJlcTIsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCk7CnR5cGVkZWYgdm9pZCAocmVxdWVzdF9mbl9wcm9j KSAocmVxdWVzdF9xdWV1ZV90ICpxKTsKdHlwZWRlZiByZXF1ZXN0X3F1ZXVlX3QgKiAocXVldWVf cHJvYykgKGtkZXZfdCBkZXYpOwp0eXBlZGVmIGludCAobWFrZV9yZXF1ZXN0X2ZuKSAocmVxdWVz dF9xdWV1ZV90ICpxLCBpbnQgcncsIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwp0eXBlZGVmIHZv aWQgKHBsdWdfZGV2aWNlX2ZuKSAocmVxdWVzdF9xdWV1ZV90ICpxLCBrZGV2X3QgZGV2aWNlKTsK dHlwZWRlZiB2b2lkICh1bnBsdWdfZGV2aWNlX2ZuKSAodm9pZCAqcSk7CgoKCgoKCgpzdHJ1Y3Qg cmVxdWVzdF9xdWV1ZQp7CgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCByZXF1ZXN0X2ZyZWVs aXN0WzJdOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ19mcmVlbGlzdFsyXTsKICAg ICAgICBpbnQgcGVuZGluZ19mcmVlWzJdOwoKCgoKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHF1 ZXVlX2hlYWQ7CiAgICAgICAgZWxldmF0b3JfdCBlbGV2YXRvcjsKCiAgICAgICAgcmVxdWVzdF9m bl9wcm9jICogcmVxdWVzdF9mbjsKICAgICAgICBtZXJnZV9yZXF1ZXN0X2ZuICogYmFja19tZXJn ZV9mbjsKICAgICAgICBtZXJnZV9yZXF1ZXN0X2ZuICogZnJvbnRfbWVyZ2VfZm47CiAgICAgICAg bWVyZ2VfcmVxdWVzdHNfZm4gKiBtZXJnZV9yZXF1ZXN0c19mbjsKICAgICAgICBtYWtlX3JlcXVl c3RfZm4gKiBtYWtlX3JlcXVlc3RfZm47CiAgICAgICAgcGx1Z19kZXZpY2VfZm4gKiBwbHVnX2Rl dmljZV9mbjsKCgoKCiAgICAgICAgdm9pZCAqIHF1ZXVlZGF0YTsKCgoKCiAgICAgICAgc3RydWN0 IHRxX3N0cnVjdCBwbHVnX3RxOwoKCgoKICAgICAgICBjaGFyIHBsdWdnZWQ7CgoKCgoKICAgICAg ICBjaGFyIGhlYWRfYWN0aXZlOwoKCgoKCiAgICAgICAgc3BpbmxvY2tfdCBxdWV1ZV9sb2NrOwoK CgoKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0X2Zvcl9yZXF1ZXN0Owp9OwoKc3RydWN0 IGJsa19kZXZfc3RydWN0IHsKCgoKICAgICAgICByZXF1ZXN0X3F1ZXVlX3QgcmVxdWVzdF9xdWV1 ZTsKICAgICAgICBxdWV1ZV9wcm9jICpxdWV1ZTsKICAgICAgICB2b2lkICpkYXRhOwp9OwoKc3Ry dWN0IHNlY19zaXplIHsKICAgICAgICB1bnNpZ25lZCBibG9ja19zaXplOwogICAgICAgIHVuc2ln bmVkIGJsb2NrX3NpemVfYml0czsKfTsKIyAxNDkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvYmxrZGV2LmgiIDMKZXh0ZXJu IHN0cnVjdCBzZWNfc2l6ZSAqIGJsa19zZWNbMjU1XTsKZXh0ZXJuIHN0cnVjdCBibGtfZGV2X3N0 cnVjdCBibGtfZGV2WzI1NV07CmV4dGVybiB2b2lkIGdyb2tfcGFydGl0aW9ucyhzdHJ1Y3QgZ2Vu ZGlzayAqZGV2LCBpbnQgZHJpdmUsIHVuc2lnbmVkIG1pbm9ycywgbG9uZyBzaXplKTsKZXh0ZXJu IHZvaWQgcmVnaXN0ZXJfZGlzayhzdHJ1Y3QgZ2VuZGlzayAqZGV2LCBrZGV2X3QgZmlyc3QsIHVu c2lnbmVkIG1pbm9ycywgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zICpvcHMsIGxvbmcg c2l6ZSk7CmV4dGVybiB2b2lkIGdlbmVyaWNfbWFrZV9yZXF1ZXN0KGludCBydywgc3RydWN0IGJ1 ZmZlcl9oZWFkICogYmgpOwpleHRlcm4gcmVxdWVzdF9xdWV1ZV90ICpibGtfZ2V0X3F1ZXVlKGtk ZXZfdCBkZXYpOwpleHRlcm4gaW5saW5lIHJlcXVlc3RfcXVldWVfdCAqX19ibGtfZ2V0X3F1ZXVl KGtkZXZfdCBkZXYpOwpleHRlcm4gdm9pZCBibGtkZXZfcmVsZWFzZV9yZXF1ZXN0KHN0cnVjdCBy ZXF1ZXN0ICopOwoKCgoKZXh0ZXJuIHZvaWQgYmxrX2luaXRfcXVldWUocmVxdWVzdF9xdWV1ZV90 ICosIHJlcXVlc3RfZm5fcHJvYyAqKTsKZXh0ZXJuIHZvaWQgYmxrX2NsZWFudXBfcXVldWUocmVx dWVzdF9xdWV1ZV90ICopOwpleHRlcm4gdm9pZCBibGtfcXVldWVfaGVhZGFjdGl2ZShyZXF1ZXN0 X3F1ZXVlX3QgKiwgaW50KTsKZXh0ZXJuIHZvaWQgYmxrX3F1ZXVlX3BsdWdnYWJsZShyZXF1ZXN0 X3F1ZXVlX3QgKiwgcGx1Z19kZXZpY2VfZm4gKik7CmV4dGVybiB2b2lkIGJsa19xdWV1ZV9tYWtl X3JlcXVlc3QocmVxdWVzdF9xdWV1ZV90ICosIG1ha2VfcmVxdWVzdF9mbiAqKTsKZXh0ZXJuIHZv aWQgZ2VuZXJpY191bnBsdWdfZGV2aWNlKHZvaWQgKik7CgpleHRlcm4gaW50ICogYmxrX3NpemVb MjU1XTsKCmV4dGVybiBpbnQgKiBibGtzaXplX3NpemVbMjU1XTsKCmV4dGVybiBpbnQgKiBoYXJk c2VjdF9zaXplWzI1NV07CgpleHRlcm4gaW50ICogbWF4X3JlYWRhaGVhZFsyNTVdOwoKZXh0ZXJu IGludCAqIG1heF9zZWN0b3JzWzI1NV07CgpleHRlcm4gaW50ICogbWF4X3NlZ21lbnRzWzI1NV07 CgpleHRlcm4gYXRvbWljX3QgcXVldWVkX3NlY3RvcnM7CiMgMTk3ICIvb3B0L2ZzcC9pNTg2LXBj LWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Jsa2Rldi5o IiAzCmV4dGVybiB2b2lkIGRyaXZlX3N0YXRfYWNjdCAoa2Rldl90IGRldiwgaW50IHJ3LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBucl9zZWN0 b3JzLCBpbnQgbmV3X2lvKTsKCnN0YXRpYyBpbmxpbmUgaW50IGdldF9oYXJkc2VjdF9zaXplKGtk ZXZfdCBkZXYpCnsKICAgICAgICBleHRlcm4gaW50ICpoYXJkc2VjdF9zaXplW107CiAgICAgICAg aWYgKGhhcmRzZWN0X3NpemVbKCh1bnNpZ25lZCBpbnQpICgoZGV2KSA+PiA4KSldICE9ICgodm9p ZCAqKTApKQogICAgICAgICAgICAgICAgcmV0dXJuIGhhcmRzZWN0X3NpemVbKCh1bnNpZ25lZCBp bnQpICgoZGV2KSA+PiA4KSldWygodW5zaWduZWQgaW50KSAoKGRldikgJiAoKDFVIDw8IDgpIC0g MSkpKV07CiAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIDUxMjsKfQojIDE1ICIv b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl L2xpbnV4L2lkZS5oIiAyIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Byb2NfZnMuaCIgMSAzCgoKCgojIDEgIi9v cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv bGludXgvc2xhYi5oIiAxIDMKIyAxMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbGFiLmgiIDMKdHlwZWRlZiBzdHJ1Y3Qg a21lbV9jYWNoZV9zIGttZW1fY2FjaGVfdDsKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tbS5oIiAxIDMKIyAxMiAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9saW51eC9tbS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMSAzCiMgMTcgIi9vcHQvZnNw L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv bW16b25lLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgZnJlZV9hcmVhX3N0cnVjdCB7CiAgICAgICAgc3Ry dWN0IGxpc3RfaGVhZCBmcmVlX2xpc3Q7CiAgICAgICAgdW5zaWduZWQgaW50ICptYXA7Cn0gZnJl ZV9hcmVhX3Q7CgpzdHJ1Y3QgcGdsaXN0X2RhdGE7Cgp0eXBlZGVmIHN0cnVjdCB6b25lX3N0cnVj dCB7CgoKCiAgICAgICAgc3BpbmxvY2tfdCBsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zm c2V0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9wYWdlczsKICAgICAgICB1bnNpZ25lZCBs b25nIGluYWN0aXZlX2NsZWFuX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW5hY3RpdmVf ZGlydHlfcGFnZXM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBwYWdlc19taW4sIHBhZ2VzX2xvdywg cGFnZXNfaGlnaDsKCgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpbmFjdGl2ZV9jbGVhbl9s aXN0OwogICAgICAgIGZyZWVfYXJlYV90IGZyZWVfYXJlYVsxMF07CgoKCgogICAgICAgIGNoYXIg Km5hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplOwoKCgogICAgICAgIHN0cnVjdCBwZ2xp c3RfZGF0YSAqem9uZV9wZ2RhdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHpvbmVfc3RhcnRfcGFk ZHI7CiAgICAgICAgdW5zaWduZWQgbG9uZyB6b25lX3N0YXJ0X21hcG5yOwogICAgICAgIHN0cnVj dCBwYWdlICp6b25lX21lbV9tYXA7Cn0gem9uZV90OwojIDcxICIvb3B0L2ZzcC9pNTg2LXBjLWxp bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAz CnR5cGVkZWYgc3RydWN0IHpvbmVsaXN0X3N0cnVjdCB7CiAgICAgICAgem9uZV90ICogem9uZXMg WzMgKzFdOwogICAgICAgIGludCBnZnBfbWFzazsKfSB6b25lbGlzdF90OwoKCgpzdHJ1Y3QgYm9v dG1lbV9kYXRhOwp0eXBlZGVmIHN0cnVjdCBwZ2xpc3RfZGF0YSB7CiAgICAgICAgem9uZV90IG5v ZGVfem9uZXNbM107CiAgICAgICAgem9uZWxpc3RfdCBub2RlX3pvbmVsaXN0c1sweDEwMF07CiAg ICAgICAgc3RydWN0IHBhZ2UgKm5vZGVfbWVtX21hcDsKICAgICAgICB1bnNpZ25lZCBsb25nICp2 YWxpZF9hZGRyX2JpdG1hcDsKICAgICAgICBzdHJ1Y3QgYm9vdG1lbV9kYXRhICpiZGF0YTsKICAg ICAgICB1bnNpZ25lZCBsb25nIG5vZGVfc3RhcnRfcGFkZHI7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBub2RlX3N0YXJ0X21hcG5yOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbm9kZV9zaXplOwogICAg ICAgIGludCBub2RlX2lkOwogICAgICAgIHN0cnVjdCBwZ2xpc3RfZGF0YSAqbm9kZV9uZXh0Owp9 IHBnX2RhdGFfdDsKCmV4dGVybiBpbnQgbnVtbm9kZXM7CmV4dGVybiBwZ19kYXRhX3QgKnBnZGF0 X2xpc3Q7CiMgMTAzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAzCnN0cnVjdCBwYWdlOwpleHRlcm4gdm9p ZCBzaG93X2ZyZWVfYXJlYXNfY29yZShwZ19kYXRhX3QgKnBnZGF0KTsKZXh0ZXJuIHZvaWQgZnJl ZV9hcmVhX2luaXRfY29yZShpbnQgbmlkLCBwZ19kYXRhX3QgKnBnZGF0LCBzdHJ1Y3QgcGFnZSAq KmdtYXAsCiAgdW5zaWduZWQgbG9uZyAqem9uZXNfc2l6ZSwgdW5zaWduZWQgbG9uZyBwYWRkciwg dW5zaWduZWQgbG9uZyAqemhvbGVzX3NpemUsCiAgc3RydWN0IHBhZ2UgKnBtYXApOwoKZXh0ZXJu IHBnX2RhdGFfdCBjb250aWdfcGFnZV9kYXRhOwojIDEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L21tLmgiIDIgMwoKZXh0 ZXJuIHVuc2lnbmVkIGxvbmcgbWF4X21hcG5yOwpleHRlcm4gdW5zaWduZWQgbG9uZyBudW1fcGh5 c3BhZ2VzOwpleHRlcm4gdm9pZCAqIGhpZ2hfbWVtb3J5OwpleHRlcm4gaW50IHBhZ2VfY2x1c3Rl cjsKCmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9saXN0OwpleHRlcm4gc3RydWN0IGxp c3RfaGVhZCBpbmFjdGl2ZV9kaXJ0eV9saXN0OwoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAxIDMK IyAxMCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDEgMwojIDEx ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNs dWRlL2FzbS9wZ3RhYmxlLmgiIDIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL21tdS5oIiAxIDMKIyAxMiAiL29wdC9m c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20v cGd0YWJsZS5oIiAyIDMKCgoKCmV4dGVybiB2b2lkIFBQQzR4eF90bGJfcGluKHVuc2lnbmVkIGxv bmcgdmEsIHVuc2lnbmVkIGxvbmcgcGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IHBhZ2VzeiwgaW50IGNhY2hlKTsKZXh0ZXJuIHZvaWQgUFBDNHh4X3RsYl91bnBpbih1bnNp Z25lZCBsb25nIHZhLCB1bnNpZ25lZCBsb25nIHBhLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHNpemUpOwpleHRlcm4gdm9pZCBQUEM0eHhfdGxiX2ZsdXNoX2FsbCh2b2lk KTsKZXh0ZXJuIHZvaWQgUFBDNHh4X3RsYl9mbHVzaCh1bnNpZ25lZCBsb25nIHZhLCBpbnQgcGlk KTsKCgoKZXh0ZXJuIGlubGluZSB2b2lkIGxvY2FsX2ZsdXNoX3RsYl9tbShzdHJ1Y3QgbW1fc3Ry dWN0ICptbSkKICAgICAgICB7IHJldHVybiBQUEM0eHhfdGxiX2ZsdXNoX2FsbCgpOyB9CgpleHRl cm4gaW5saW5lIHZvaWQgbG9jYWxfZmx1c2hfdGxiX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0 ICp2bWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2bWFk ZHIpCiAgICAgICAgeyByZXR1cm4gUFBDNHh4X3RsYl9mbHVzaF9hbGwoKTsgfQoKZXh0ZXJuIGlu bGluZSB2b2lkIGxvY2FsX2ZsdXNoX3RsYl9yYW5nZShzdHJ1Y3QgbW1fc3RydWN0ICptbSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25l ZCBsb25nIGVuZCkKICAgICAgICB7IHJldHVybiBQUEM0eHhfdGxiX2ZsdXNoX2FsbCgpOyB9Cgpz dGF0aWMgaW5saW5lIHZvaWQgZmx1c2hfaGFzaF9wYWdlKHVuc2lnbmVkIGNvbnRleHQsIHVuc2ln bmVkIGxvbmcgdmEpCiAgICAgICAgeyB9CiMgNzEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwpzdGF0aWMg aW5saW5lIHZvaWQgZmx1c2hfdGxiX3BndGFibGVzKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVk IGxvbmcgZW5kKQp7Cgp9CiMgOTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv d2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwpleHRlcm4gdm9pZCBfX2Zs dXNoX2ljYWNoZV9wYWdlKHZvaWQgKik7CgoKCgoKZXh0ZXJuIHZvaWQgZmx1c2hfaWNhY2hlX3Jh bmdlKHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gdm9pZCBfX2ZsdXNoX3Bh Z2VfdG9fcmFtKHVuc2lnbmVkIGxvbmcgcGFnZV92YSk7CmV4dGVybiB2b2lkIGZsdXNoX3BhZ2Vf dG9fcmFtKHN0cnVjdCBwYWdlICpwYWdlKTsKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdmFfdG9f cGh5cyh1bnNpZ25lZCBsb25nIGFkZHJlc3MpOwpleHRlcm4gcHRlX3QgKnZhX3RvX3B0ZSh1bnNp Z25lZCBsb25nIGFkZHJlc3MpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpb3JlbWFwX2JvdCwgaW9y ZW1hcF9iYXNlOwojIDMwOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCmV4dGVybiB1bnNpZ25lZCBsb25n IGVtcHR5X3plcm9fcGFnZVsxMDI0XTsKIyAzMTkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwpleHRlcm4g cHRlX3QgX19iYWRfcGFnZSh2b2lkKTsKZXh0ZXJuIHB0ZV90ICogX19iYWRfcGFnZXRhYmxlKHZv aWQpOwojIDM1OCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51 eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCnN0YXRpYyBpbmxpbmUgaW50IHBnZF9ub25l KHBnZF90IHBnZCkgeyByZXR1cm4gMDsgfQpzdGF0aWMgaW5saW5lIGludCBwZ2RfYmFkKHBnZF90 IHBnZCkgeyByZXR1cm4gMDsgfQpzdGF0aWMgaW5saW5lIGludCBwZ2RfcHJlc2VudChwZ2RfdCBw Z2QpIHsgcmV0dXJuIDE7IH0KIyAzNzAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwpzdGF0aWMgaW5saW5l IGludCBwdGVfcmVhZChwdGVfdCBwdGUpIHsgcmV0dXJuICgocHRlKS5wdGUpICYgMHgwMTA7IH0K c3RhdGljIGlubGluZSBpbnQgcHRlX3dyaXRlKHB0ZV90IHB0ZSkgeyByZXR1cm4gKChwdGUpLnB0 ZSkgJiAweDIwMDsgfQpzdGF0aWMgaW5saW5lIGludCBwdGVfZXhlYyhwdGVfdCBwdGUpIHsgcmV0 dXJuICgocHRlKS5wdGUpICYgMHgwMTA7IH0Kc3RhdGljIGlubGluZSBpbnQgcHRlX2RpcnR5KHB0 ZV90IHB0ZSkgeyByZXR1cm4gKChwdGUpLnB0ZSkgJiAweDEwMDsgfQpzdGF0aWMgaW5saW5lIGlu dCBwdGVfeW91bmcocHRlX3QgcHRlKSB7IHJldHVybiAoKHB0ZSkucHRlKSAmIDB4NDAwOyB9Cgpz dGF0aWMgaW5saW5lIHZvaWQgcHRlX3VuY2FjaGUocHRlX3QgcHRlKSB7ICgocHRlKS5wdGUpIHw9 IDB4MDA0OyB9CnN0YXRpYyBpbmxpbmUgdm9pZCBwdGVfY2FjaGUocHRlX3QgcHRlKSB7ICgocHRl KS5wdGUpICY9IH4weDAwNDsgfQoKc3RhdGljIGlubGluZSBwdGVfdCBwdGVfcmRwcm90ZWN0KHB0 ZV90IHB0ZSkgewogICAgICAgICgocHRlKS5wdGUpICY9IH4weDAxMDsgcmV0dXJuIHB0ZTsgfQpz dGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9leHByb3RlY3QocHRlX3QgcHRlKSB7CiAgICAgICAgKChw dGUpLnB0ZSkgJj0gfjB4MDEwOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRl X3dycHJvdGVjdChwdGVfdCBwdGUpIHsKICAgICAgICAoKHB0ZSkucHRlKSAmPSB+KDB4MjAwIHwg MHg4MDApOyByZXR1cm4gcHRlOyB9CnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlX21rY2xlYW4ocHRl X3QgcHRlKSB7CiAgICAgICAgKChwdGUpLnB0ZSkgJj0gfigweDEwMCB8IDB4ODAwKTsgcmV0dXJu IHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta29sZChwdGVfdCBwdGUpIHsKICAgICAg ICAoKHB0ZSkucHRlKSAmPSB+MHg0MDA7IHJldHVybiBwdGU7IH0KCnN0YXRpYyBpbmxpbmUgcHRl X3QgcHRlX21rcmVhZChwdGVfdCBwdGUpIHsKICAgICAgICAoKHB0ZSkucHRlKSB8PSAweDAxMDsg cmV0dXJuIHB0ZTsgfQpzdGF0aWMgaW5saW5lIHB0ZV90IHB0ZV9ta2V4ZWMocHRlX3QgcHRlKSB7 CiAgICAgICAgKChwdGUpLnB0ZSkgfD0gMHgwMTA7IHJldHVybiBwdGU7IH0Kc3RhdGljIGlubGlu ZSBwdGVfdCBwdGVfbWt3cml0ZShwdGVfdCBwdGUpCnsKICAgICAgICAoKHB0ZSkucHRlKSB8PSAw eDIwMDsKICAgICAgICBpZiAoKChwdGUpLnB0ZSkgJiAweDEwMCkKICAgICAgICAgICAgICAgICgo cHRlKS5wdGUpIHw9IDB4ODAwOwogICAgICAgIHJldHVybiBwdGU7Cn0Kc3RhdGljIGlubGluZSBw dGVfdCBwdGVfbWtkaXJ0eShwdGVfdCBwdGUpCnsKICAgICAgICAoKHB0ZSkucHRlKSB8PSAweDEw MDsKICAgICAgICBpZiAoKChwdGUpLnB0ZSkgJiAweDIwMCkKICAgICAgICAgICAgICAgICgocHRl KS5wdGUpIHw9IDB4ODAwOwogICAgICAgIHJldHVybiBwdGU7Cn0Kc3RhdGljIGlubGluZSBwdGVf dCBwdGVfbWt5b3VuZyhwdGVfdCBwdGUpIHsKICAgICAgICAoKHB0ZSkucHRlKSB8PSAweDQwMDsg cmV0dXJuIHB0ZTsgfQojIDQyMiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCnN0YXRpYyBpbmxpbmUgcHRl X3QgbWtfcHRlX3BoeXModW5zaWduZWQgbG9uZyBwaHlzcGFnZSwgcGdwcm90X3QgcGdwcm90KQp7 CiAgICAgICAgcHRlX3QgcHRlOwogICAgICAgICgocHRlKS5wdGUpID0gcGh5c3BhZ2UgfCAoKHBn cHJvdCkucGdwcm90KTsKICAgICAgICByZXR1cm4gcHRlOwp9CiMgNDM2ICIvb3B0L2ZzcC9pNTg2 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ3RhYmxl LmgiIDMKc3RhdGljIGlubGluZSBwdGVfdCBwdGVfbW9kaWZ5KHB0ZV90IHB0ZSwgcGdwcm90X3Qg bmV3cHJvdCkKewogICAgICAgICgocHRlKS5wdGUpID0gKCgocHRlKS5wdGUpICYgKCh+KCgxVUwg PDwgMTIpLTEpKSB8IDB4NDAwIHwgMHgxMDAgfCAweDAwNCkpIHwgKChuZXdwcm90KS5wZ3Byb3Qp OwogICAgICAgIHJldHVybiBwdGU7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u ZyBwdGVfdXBkYXRlKHB0ZV90ICpwLCB1bnNpZ25lZCBsb25nIGNsciwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzZXQpCnsKICAgICAgICB1bnNp Z25lZCBsb25nIG9sZCwgdG1wOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiXG4iCiIx Oglsd2FyeAklMCwwLCUzXG4iCiIJYW5kYwklMSwlMCwlNFxuIgoiCW9yCSUxLCUxLCU1XG4iCiIJ c3R3Y3guCSUxLDAsJTNcbiIKIglibmUtCTFiIgogICAgICAgIDogIj0mciIgKG9sZCksICI9JnIi ICh0bXApLCAiPW0iICgqcCkKICAgICAgICA6ICJyIiAocCksICJyIiAoY2xyKSwgInIiIChzZXQp LCAibSIgKCpwKQogICAgICAgIDogImNjIiApOwogICAgICAgIHJldHVybiBvbGQ7Cn0KCnN0YXRp YyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9hbmRfY2xlYXJfeW91bmcocHRlX3QgKnB0ZXApCnsKICAg ICAgICByZXR1cm4gKHB0ZV91cGRhdGUocHRlcCwgMHg0MDAsIDApICYgMHg0MDApICE9IDA7Cn0K CnN0YXRpYyBpbmxpbmUgaW50IHB0ZXBfdGVzdF9hbmRfY2xlYXJfZGlydHkocHRlX3QgKnB0ZXAp CnsKICAgICAgICByZXR1cm4gKHB0ZV91cGRhdGUocHRlcCwgMHgxMDAgfCAweDgwMCwgMCkKICAg ICAgICAgICAgICAgICYgMHgxMDApICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgcHRlX3QgcHRlcF9n ZXRfYW5kX2NsZWFyKHB0ZV90ICpwdGVwKQp7CiAgICAgICAgcmV0dXJuICgocHRlX3QpIHsgKHB0 ZV91cGRhdGUocHRlcCwgfjBVTCwgMCkpIH0gKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHB0ZXBf c2V0X3dycHJvdGVjdChwdGVfdCAqcHRlcCkKewogICAgICAgIHB0ZV91cGRhdGUocHRlcCwgMHgy MDAgfCAweDgwMCwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBwdGVwX21rZGlydHkocHRlX3Qg KnB0ZXApCnsKIyA0OTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMt bGludXgvc3lzLWluY2x1ZGUvYXNtL3BndGFibGUuaCIgMwogICAgICAgIHB0ZV91cGRhdGUocHRl cCwgMCwgMHgxMDApOwp9CiMgNTEzICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDMKc3RhdGljIGlubGluZSBw bWRfdCAqIHBtZF9vZmZzZXQocGdkX3QgKiBkaXIsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewog ICAgICAgIHJldHVybiAocG1kX3QgKikgZGlyOwp9CgoKc3RhdGljIGlubGluZSBwdGVfdCAqIHB0 ZV9vZmZzZXQocG1kX3QgKiBkaXIsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogICAgICAgIHJl dHVybiAocHRlX3QgKikgKCgoKmRpcikucG1kKSkgKyAoKGFkZHJlc3MgPj4gMTIpICYgKDEwMjQg LSAxKSk7Cn0KCmV4dGVybiBwZ2RfdCBzd2FwcGVyX3BnX2RpclsxMDI0XTsKZXh0ZXJuIHZvaWQg cGFnaW5nX2luaXQodm9pZCk7CiMgNTM4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDMKZXh0ZXJuIHZvaWQg Zmx1c2hfaGFzaF9zZWdtZW50cyh1bnNpZ25lZCBsb3dfdnNpZCwgdW5zaWduZWQgaGlnaF92c2lk KTsKZXh0ZXJuIHZvaWQgZmx1c2hfaGFzaF9wYWdlKHVuc2lnbmVkIGNvbnRleHQsIHVuc2lnbmVk IGxvbmcgdmEpOwojIDU1MCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9hc20vcGd0YWJsZS5oIiAzCmV4dGVybiB2b2lkIGNhY2hlX2Ns ZWFyKF9fdTMyIGFkZHIsIGludCBsZW5ndGgpOwpleHRlcm4gdm9pZCBjYWNoZV9wdXNoKF9fdTMy IGFkZHIsIGludCBsZW5ndGgpOwpleHRlcm4gaW50IG1tX2VuZF9vZl9jaHVuayAodW5zaWduZWQg bG9uZyBhZGRyLCBpbnQgbGVuKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW9wYSh1bnNpZ25lZCBs b25nIGFkZHIpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBtbV9wdG92KHVuc2lnbmVkIGxvbmcgYWRk cikgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CiMgNTY3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ3RhYmxlLmgiIDMKZXh0 ZXJuIHVuc2lnbmVkIGxvbmcga2VybmVsX21hcCh1bnNpZ25lZCBsb25nIHBhZGRyLCB1bnNpZ25l ZCBsb25nIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vY2FjaGVm bGFnLCB1bnNpZ25lZCBsb25nICptZW1hdmFpbHAgKTsKCgoKCmV4dGVybiB2b2lkIGtlcm5lbF9z ZXRfY2FjaGVtb2RlICh1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtb2RlKTsKIyAy NCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9saW51eC9tbS5oIiAyIDMKIyA0MSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9tbS5oIiAzCnN0cnVjdCB2bV9hcmVh X3N0cnVjdCB7CiAgICAgICAgc3RydWN0IG1tX3N0cnVjdCAqIHZtX21tOwogICAgICAgIHVuc2ln bmVkIGxvbmcgdm1fc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bV9lbmQ7CgoKICAgICAg ICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtX25leHQ7CgogICAgICAgIHBncHJvdF90IHZtX3Bh Z2VfcHJvdDsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX2ZsYWdzOwoKCiAgICAgICAgc2hvcnQg dm1fYXZsX2hlaWdodDsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bV9hdmxfbGVm dDsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bV9hdmxfcmlnaHQ7CgoKCgoKICAg ICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtX25leHRfc2hhcmU7CiAgICAgICAgc3RydWN0 IHZtX2FyZWFfc3RydWN0ICoqdm1fcHByZXZfc2hhcmU7CgogICAgICAgIHN0cnVjdCB2bV9vcGVy YXRpb25zX3N0cnVjdCAqIHZtX29wczsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX3Bnb2ZmOwog ICAgICAgIHN0cnVjdCBmaWxlICogdm1fZmlsZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHZtX3Jh ZW5kOwogICAgICAgIHZvaWQgKiB2bV9wcml2YXRlX2RhdGE7Cn07CiMgMTEyICIvb3B0L2ZzcC9p NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L21t LmgiIDMKZXh0ZXJuIHBncHJvdF90IHByb3RlY3Rpb25fbWFwWzE2XTsKCgoKCgoKCnN0cnVjdCB2 bV9vcGVyYXRpb25zX3N0cnVjdCB7CiAgICAgICAgdm9pZCAoKm9wZW4pKHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqIGFyZWEpOwogICAgICAgIHZvaWQgKCpjbG9zZSkoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICogYXJlYSk7CiAgICAgICAgc3RydWN0IHBhZ2UgKiAoKm5vcGFnZSkoc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICogYXJlYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgd3JpdGVfYWNjZXNz KTsKfTsKIyAxMzQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGlu dXgvc3lzLWluY2x1ZGUvbGludXgvbW0uaCIgMwp0eXBlZGVmIHN0cnVjdCBwYWdlIHsKICAgICAg ICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1h cHBpbmc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpbmRleDsKICAgICAgICBzdHJ1Y3QgcGFnZSAq bmV4dF9oYXNoOwogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIHVuc2lnbmVkIGxvbmcg ZmxhZ3M7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBscnU7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBhZ2U7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKICAgICAgICBzdHJ1Y3QgcGFn ZSAqKnBwcmV2X2hhc2g7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYnVmZmVyczsKICAg ICAgICB2b2lkICp2aXJ0dWFsOwogICAgICAgIHN0cnVjdCB6b25lX3N0cnVjdCAqem9uZTsKfSBt ZW1fbWFwX3Q7CiMgMTg4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L21tLmgiIDMKZXh0ZXJuIHZvaWQgX19zZXRfcGFnZV9k aXJ0eShzdHJ1Y3QgcGFnZSAqKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfcGFnZV9kaXJ0eShz dHJ1Y3QgcGFnZSAqIHBhZ2UpCnsKICAgICAgICBpZiAoIXRlc3RfYW5kX3NldF9iaXQoNCwgJnBh Z2UtPmZsYWdzKSkKICAgICAgICAgICAgICAgIF9fc2V0X3BhZ2VfZGlydHkocGFnZSk7Cn0KIyAz MzggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWlu Y2x1ZGUvbGludXgvbW0uaCIgMwpleHRlcm4gbWVtX21hcF90ICogbWVtX21hcDsKCgoKCgoKCmV4 dGVybiBzdHJ1Y3QgcGFnZSAqIF9fYWxsb2NfcGFnZXMoem9uZWxpc3RfdCAqem9uZWxpc3QsIHVu c2lnbmVkIGxvbmcgb3JkZXIpOwpleHRlcm4gc3RydWN0IHBhZ2UgKiBhbGxvY19wYWdlc19ub2Rl KGludCBuaWQsIGludCBnZnBfbWFzaywgdW5zaWduZWQgbG9uZyBvcmRlcik7CgoKc3RhdGljIGlu bGluZSBzdHJ1Y3QgcGFnZSAqIGFsbG9jX3BhZ2VzKGludCBnZnBfbWFzaywgdW5zaWduZWQgbG9u ZyBvcmRlcikKewoKCgogICAgICAgIGlmIChvcmRlciA+PSAxMCkKICAgICAgICAgICAgICAgIHJl dHVybiAoKHZvaWQgKikwKTsKICAgICAgICByZXR1cm4gX19hbGxvY19wYWdlcyhjb250aWdfcGFn ZV9kYXRhLm5vZGVfem9uZWxpc3RzKyhnZnBfbWFzayksIG9yZGVyKTsKfQoKCgoKCgpleHRlcm4g dW5zaWduZWQgbG9uZyBfX2dldF9mcmVlX3BhZ2VzKGludCBnZnBfbWFzaywgdW5zaWduZWQgbG9u ZyBvcmRlcik7CmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF96ZXJvZWRfcGFnZShpbnQgZ2ZwX21h c2spOwojIDM4MiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51 eC9zeXMtaW5jbHVkZS9saW51eC9tbS5oIiAzCmV4dGVybiB2b2lkIF9fZnJlZV9wYWdlcyhzdHJ1 Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBvcmRlcik7CmV4dGVybiB2b2lkIGZyZWVfcGFn ZXModW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIG9yZGVyKTsKCgoKCmV4dGVybiB2 b2lkIHNob3dfZnJlZV9hcmVhcyh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19mcmVlX2FyZWFzX25v ZGUocGdfZGF0YV90ICpwZ2RhdCk7CgpleHRlcm4gdm9pZCBjbGVhcl9wYWdlX3RhYmxlcyhzdHJ1 Y3QgbW1fc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIGludCk7CgpzdHJ1Y3QgcGFnZSAqIHNobWVt X25vcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiB2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcmVz cywgaW50IG5vX3NoYXJlKTsKc3RydWN0IGZpbGUgKnNobWVtX2ZpbGVfc2V0dXAoY2hhciAqIG5h bWUsIGxvZmZfdCBzaXplKTsKZXh0ZXJuIHZvaWQgc2htZW1fbG9jayhzdHJ1Y3QgZmlsZSAqIGZp bGUsIGludCBsb2NrKTsKZXh0ZXJuIGludCBzaG1lbV96ZXJvX3NldHVwKHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqKTsKCmV4dGVybiB2b2lkIHphcF9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3Qg Km1tLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CmV4dGVybiBp bnQgY29weV9wYWdlX3JhbmdlKHN0cnVjdCBtbV9zdHJ1Y3QgKmRzdCwgc3RydWN0IG1tX3N0cnVj dCAqc3JjLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CmV4dGVybiBpbnQgcmVtYXBfcGFn ZV9yYW5nZSh1bnNpZ25lZCBsb25nIGZyb20sIHVuc2lnbmVkIGxvbmcgdG8sIHVuc2lnbmVkIGxv bmcgc2l6ZSwgcGdwcm90X3QgcHJvdCk7CmV4dGVybiBpbnQgemVyb21hcF9wYWdlX3JhbmdlKHVu c2lnbmVkIGxvbmcgZnJvbSwgdW5zaWduZWQgbG9uZyBzaXplLCBwZ3Byb3RfdCBwcm90KTsKCmV4 dGVybiB2b2lkIHZtdHJ1bmNhdGUoc3RydWN0IGlub2RlICogaW5vZGUsIGxvZmZfdCBvZmZzZXQp OwpleHRlcm4gaW50IGhhbmRsZV9tbV9mYXVsdChzdHJ1Y3QgbW1fc3RydWN0ICptbSxzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLCBpbnQgd3JpdGVfYWNj ZXNzKTsKZXh0ZXJuIGludCBtYWtlX3BhZ2VzX3ByZXNlbnQodW5zaWduZWQgbG9uZyBhZGRyLCB1 bnNpZ25lZCBsb25nIGVuZCk7CmV4dGVybiBpbnQgYWNjZXNzX3Byb2Nlc3Nfdm0oc3RydWN0IHRh c2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGxvbmcgYWRkciwgdm9pZCAqYnVmLCBpbnQgbGVuLCBp bnQgd3JpdGUpOwpleHRlcm4gaW50IHB0cmFjZV9yZWFkZGF0YShzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnRzaywgdW5zaWduZWQgbG9uZyBzcmMsIGNoYXIgKmRzdCwgaW50IGxlbik7CmV4dGVybiBpbnQg cHRyYWNlX3dyaXRlZGF0YShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgY2hhciAqIHNyYywgdW5z aWduZWQgbG9uZyBkc3QsIGludCBsZW4pOwoKZXh0ZXJuIGludCBwZ3RfY2FjaGVfd2F0ZXJbMl07 CmV4dGVybiBpbnQgY2hlY2tfcGd0X2NhY2hlKHZvaWQpOwoKZXh0ZXJuIHZvaWQgZnJlZV9hcmVh X2luaXQodW5zaWduZWQgbG9uZyAqIHpvbmVzX3NpemUpOwpleHRlcm4gdm9pZCBmcmVlX2FyZWFf aW5pdF9ub2RlKGludCBuaWQsIHBnX2RhdGFfdCAqcGdkYXQsIHN0cnVjdCBwYWdlICpwbWFwLAog ICAgICAgIHVuc2lnbmVkIGxvbmcgKiB6b25lc19zaXplLCB1bnNpZ25lZCBsb25nIHpvbmVfc3Rh cnRfcGFkZHIsCiAgICAgICAgdW5zaWduZWQgbG9uZyAqemhvbGVzX3NpemUpOwpleHRlcm4gdm9p ZCBtZW1faW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgc2hvd19tZW0odm9pZCk7CmV4dGVybiB2b2lk IHNpX21lbWluZm8oc3RydWN0IHN5c2luZm8gKiB2YWwpOwpleHRlcm4gdm9pZCBzd2FwaW5fcmVh ZGFoZWFkKHN3cF9lbnRyeV90KTsKCgpleHRlcm4gdm9pZCBsb2NrX3ZtYV9tYXBwaW5ncyhzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIHVubG9ja192bWFfbWFwcGluZ3Moc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gdm9pZCBpbnNlcnRfdm1fc3RydWN0KHN0cnVj dCBtbV9zdHJ1Y3QgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gdm9pZCBfX2lu c2VydF92bV9zdHJ1Y3Qoc3RydWN0IG1tX3N0cnVjdCAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg Kik7CmV4dGVybiB2b2lkIGJ1aWxkX21tYXBfYXZsKHN0cnVjdCBtbV9zdHJ1Y3QgKik7CmV4dGVy biB2b2lkIGV4aXRfbW1hcChzdHJ1Y3QgbW1fc3RydWN0ICopOwpleHRlcm4gdW5zaWduZWQgbG9u ZyBnZXRfdW5tYXBwZWRfYXJlYSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKCmV4dGVy biB1bnNpZ25lZCBsb25nIGRvX21tYXBfcGdvZmYoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVk IGxvbmcgYWRkciwKICAgICAgICB1bnNpZ25lZCBsb25nIGxlbiwgdW5zaWduZWQgbG9uZyBwcm90 LAogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZywgdW5zaWduZWQgbG9uZyBwZ29mZik7CgpzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZG9fbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWdu ZWQgbG9uZyBhZGRyLAogICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuLCB1bnNpZ25lZCBsb25nIHBy b3QsCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKewog ICAgICAgIHVuc2lnbmVkIGxvbmcgcmV0ID0gLTIyOwogICAgICAgIGlmICgob2Zmc2V0ICsgKCgo bGVuKSsoMVVMIDw8IDEyKS0xKSYofigoMVVMIDw8IDEyKS0xKSkpKSA8IG9mZnNldCkKICAgICAg ICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgIGlmICghKG9mZnNldCAmIH4ofigoMVVMIDw8IDEy KS0xKSkpKQogICAgICAgICAgICAgICAgcmV0ID0gZG9fbW1hcF9wZ29mZihmaWxlLCBhZGRyLCBs ZW4sIHByb3QsIGZsYWcsIG9mZnNldCA+PiAxMik7Cm91dDoKICAgICAgICByZXR1cm4gcmV0Owp9 CgpleHRlcm4gaW50IGRvX211bm1hcChzdHJ1Y3QgbW1fc3RydWN0ICosIHVuc2lnbmVkIGxvbmcs IHNpemVfdCk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBkb19icmsodW5zaWduZWQgbG9uZywgdW5z aWduZWQgbG9uZyk7CgpzdHJ1Y3Qgem9uZV90OwoKZXh0ZXJuIHZvaWQgcmVtb3ZlX2lub2RlX3Bh Z2Uoc3RydWN0IHBhZ2UgKik7CmV4dGVybiB1bnNpZ25lZCBsb25nIHBhZ2VfdW51c2Uoc3RydWN0 IHBhZ2UgKik7CmV4dGVybiB2b2lkIHRydW5jYXRlX2lub2RlX3BhZ2VzKHN0cnVjdCBhZGRyZXNz X3NwYWNlICosIGxvZmZfdCk7CgoKZXh0ZXJuIGludCBmaWxlbWFwX3N5bmMoc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICosIHVuc2lnbmVkIGxvbmcsIHNpemVfdCwgdW5zaWduZWQgaW50KTsKZXh0ZXJu IHN0cnVjdCBwYWdlICpmaWxlbWFwX25vcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiwgdW5z aWduZWQgbG9uZywgaW50KTsKIyA0OTcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvbW0uaCIgMwpzdGF0aWMgaW5saW5lIGlu dCBleHBhbmRfc3RhY2soc3RydWN0IHZtX2FyZWFfc3RydWN0ICogdm1hLCB1bnNpZ25lZCBsb25n IGFkZHJlc3MpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIGdyb3c7CgogICAgICAgIGFkZHJlc3Mg Jj0gKH4oKDFVTCA8PCAxMiktMSkpOwogICAgICAgIGdyb3cgPSAodm1hLT52bV9zdGFydCAtIGFk ZHJlc3MpID4+IDEyOwogICAgICAgIGlmICh2bWEtPnZtX2VuZCAtIGFkZHJlc3MgPiBjdXJyZW50 LT5ybGltWzNdLnJsaW1fY3VyIHx8CiAgICAgICAgICAgICgodm1hLT52bV9tbS0+dG90YWxfdm0g KyBncm93KSA8PCAxMikgPiBjdXJyZW50LT5ybGltWzldLnJsaW1fY3VyKQogICAgICAgICAgICAg ICAgcmV0dXJuIC0xMjsKICAgICAgICB2bWEtPnZtX3N0YXJ0ID0gYWRkcmVzczsKICAgICAgICB2 bWEtPnZtX3Bnb2ZmIC09IGdyb3c7CiAgICAgICAgdm1hLT52bV9tbS0+dG90YWxfdm0gKz0gZ3Jv dzsKICAgICAgICBpZiAodm1hLT52bV9mbGFncyAmIDB4MDAwMDIwMDApCiAgICAgICAgICAgICAg ICB2bWEtPnZtX21tLT5sb2NrZWRfdm0gKz0gZ3JvdzsKICAgICAgICByZXR1cm4gMDsKfQoKCmV4 dGVybiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBmaW5kX3ZtYShzdHJ1Y3QgbW1fc3RydWN0ICog bW0sIHVuc2lnbmVkIGxvbmcgYWRkcik7CmV4dGVybiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBm aW5kX3ZtYV9wcmV2KHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgdW5zaWduZWQgbG9uZyBhZGRyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKipwcHJldik7CgoKCnN0YXRpYyBpbmxpbmUgc3RydWN0IHZtX2FyZWFfc3RydWN0 ICogZmluZF92bWFfaW50ZXJzZWN0aW9uKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSwgdW5zaWduZWQg bG9uZyBzdGFydF9hZGRyLCB1bnNpZ25lZCBsb25nIGVuZF9hZGRyKQp7CiAgICAgICAgc3RydWN0 IHZtX2FyZWFfc3RydWN0ICogdm1hID0gZmluZF92bWEobW0sc3RhcnRfYWRkcik7CgogICAgICAg IGlmICh2bWEgJiYgZW5kX2FkZHIgPD0gdm1hLT52bV9zdGFydCkKICAgICAgICAgICAgICAgIHZt YSA9ICgodm9pZCAqKTApOwogICAgICAgIHJldHVybiB2bWE7Cn0KCmV4dGVybiBzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKmZpbmRfZXh0ZW5kX3ZtYShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWdu ZWQgbG9uZyBhZGRyKTsKIyAxNSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93 ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9zbGFiLmgiIDIgMwojIDQ2ICIvb3B0L2ZzcC9p NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Ns YWIuaCIgMwpleHRlcm4gdm9pZCBrbWVtX2NhY2hlX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGtt ZW1fY2FjaGVfc2l6ZXNfaW5pdCh2b2lkKTsKCmV4dGVybiBrbWVtX2NhY2hlX3QgKmttZW1fZmlu ZF9nZW5lcmFsX2NhY2hlcChzaXplX3QsIGludCBnZnBmbGFncyk7CmV4dGVybiBrbWVtX2NhY2hl X3QgKmttZW1fY2FjaGVfY3JlYXRlKGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBzaXplX3QsIHVuc2ln bmVkIGxvbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCop KHZvaWQgKiwga21lbV9jYWNoZV90ICosIHVuc2lnbmVkIGxvbmcpLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqKSh2b2lkICosIGttZW1fY2FjaGVfdCAqLCB1 bnNpZ25lZCBsb25nKSk7CmV4dGVybiBpbnQga21lbV9jYWNoZV9kZXN0cm95KGttZW1fY2FjaGVf dCAqKTsKZXh0ZXJuIGludCBrbWVtX2NhY2hlX3NocmluayhrbWVtX2NhY2hlX3QgKik7CmV4dGVy biB2b2lkICprbWVtX2NhY2hlX2FsbG9jKGttZW1fY2FjaGVfdCAqLCBpbnQpOwpleHRlcm4gdm9p ZCBrbWVtX2NhY2hlX2ZyZWUoa21lbV9jYWNoZV90ICosIHZvaWQgKik7CgpleHRlcm4gdm9pZCAq a21hbGxvYyhzaXplX3QsIGludCk7CmV4dGVybiB2b2lkIGtmcmVlKGNvbnN0IHZvaWQgKik7Cgpl eHRlcm4gdm9pZCBrbWVtX2NhY2hlX3JlYXAoaW50KTsKZXh0ZXJuIGludCBzbGFiaW5mb19yZWFk X3Byb2MoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBjb3VudCwgaW50ICplb2YsIHZvaWQgKmRhdGEpOwpleHRl cm4gaW50IHNsYWJpbmZvX3dyaXRlX3Byb2Moc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIg KmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb3VudCwg dm9pZCAqZGF0YSk7CgoKZXh0ZXJuIGttZW1fY2FjaGVfdCAqdm1fYXJlYV9jYWNoZXA7CmV4dGVy biBrbWVtX2NhY2hlX3QgKm1tX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqbmFtZXNfY2Fj aGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpmaWxlc19jYWNoZXA7CmV4dGVybiBrbWVtX2NhY2hl X3QgKmZpbHBfY2FjaGVwOwpleHRlcm4ga21lbV9jYWNoZV90ICpkcXVvdF9jYWNoZXA7CmV4dGVy biBrbWVtX2NhY2hlX3QgKmJoX2NhY2hlcDsKZXh0ZXJuIGttZW1fY2FjaGVfdCAqZnNfY2FjaGVw OwpleHRlcm4ga21lbV9jYWNoZV90ICpzaWdhY3RfY2FjaGVwOwojIDYgIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcHJvY19m cy5oIiAyIDMKIyAyMSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s aW51eC9zeXMtaW5jbHVkZS9saW51eC9wcm9jX2ZzLmgiIDMKZW51bSB7CiAgICAgICAgUFJPQ19S T09UX0lOTyA9IDEsCn07CiMgNDcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcHJvY19mcy5oIiAzCnR5cGVkZWYgaW50IChy ZWFkX3Byb2NfdCkoY2hhciAqcGFnZSwgY2hhciAqKnN0YXJ0LCBvZmZfdCBvZmYsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCBpbnQgKmVvZiwgdm9pZCAqZGF0YSk7CnR5cGVk ZWYgaW50ICh3cml0ZV9wcm9jX3QpKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpidWZm ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQsIHZvaWQg KmRhdGEpOwp0eXBlZGVmIGludCAoZ2V0X2luZm9fdCkoY2hhciAqLCBjaGFyICoqLCBvZmZfdCwg aW50KTsKCnN0cnVjdCBwcm9jX2Rpcl9lbnRyeSB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbG93 X2lubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBuYW1lbGVuOwogICAgICAgIGNvbnN0IGNoYXIg Km5hbWU7CiAgICAgICAgbW9kZV90IG1vZGU7CiAgICAgICAgbmxpbmtfdCBubGluazsKICAgICAg ICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6 ZTsKICAgICAgICBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyAqIHByb2NfaW9wczsKICAgICAgICBz dHJ1Y3QgZmlsZV9vcGVyYXRpb25zICogcHJvY19mb3BzOwogICAgICAgIGdldF9pbmZvX3QgKmdl dF9pbmZvOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyOwogICAgICAgIHN0cnVjdCBwcm9j X2Rpcl9lbnRyeSAqbmV4dCwgKnBhcmVudCwgKnN1YmRpcjsKICAgICAgICB2b2lkICpkYXRhOwog ICAgICAgIHJlYWRfcHJvY190ICpyZWFkX3Byb2M7CiAgICAgICAgd3JpdGVfcHJvY190ICp3cml0 ZV9wcm9jOwogICAgICAgIGF0b21pY190IGNvdW50OwogICAgICAgIGludCBkZWxldGVkOwogICAg ICAgIGtkZXZfdCByZGV2Owp9OwoKCgoKCmV4dGVybiBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgcHJv Y19yb290OwpleHRlcm4gc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jX3Jvb3RfZnM7CmV4dGVy biBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2NfbmV0OwpleHRlcm4gc3RydWN0IHByb2NfZGly X2VudHJ5ICpwcm9jX2J1czsKZXh0ZXJuIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19yb290 X2RyaXZlcjsKZXh0ZXJuIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19yb290X2tjb3JlOwoK ZXh0ZXJuIHZvaWQgcHJvY19yb290X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHByb2NfbWlzY19p bml0KHZvaWQpOwoKc3RydWN0IGRlbnRyeSAqcHJvY19waWRfbG9va3VwKHN0cnVjdCBpbm9kZSAq ZGlyLCBzdHJ1Y3QgZGVudHJ5ICogZGVudHJ5KTsKdm9pZCBwcm9jX3BpZF9kZWxldGVfaW5vZGUo c3RydWN0IGlub2RlICppbm9kZSk7CmludCBwcm9jX3BpZF9yZWFkZGlyKHN0cnVjdCBmaWxlICog ZmlscCwgdm9pZCAqIGRpcmVudCwgZmlsbGRpcl90IGZpbGxkaXIpOwoKZXh0ZXJuIHN0cnVjdCBw cm9jX2Rpcl9lbnRyeSAqY3JlYXRlX3Byb2NfZW50cnkoY29uc3QgY2hhciAqbmFtZSwgbW9kZV90 IG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcGFyZW50KTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX3Byb2NfZW50 cnkoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwYXJlbnQpOwoKZXh0 ZXJuIHN0cnVjdCB2ZnNtb3VudCAqcHJvY19tbnQ7CmV4dGVybiBzdHJ1Y3Qgc3VwZXJfYmxvY2sg KnByb2NfcmVhZF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKix2b2lkICosaW50KTsKZXh0ZXJu IHN0cnVjdCBpbm9kZSAqIHByb2NfZ2V0X2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQs IHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqKTsKCmV4dGVybiBpbnQgcHJvY19tYXRjaChpbnQsIGNv bnN0IGNoYXIgKixzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKik7CiMgMTEwICIvb3B0L2ZzcC9pNTg2 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3Byb2Nf ZnMuaCIgMwpleHRlcm4gaW50IHByb2NfcmVhZGRpcihzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIGZp bGxkaXJfdCk7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpwcm9jX2xvb2t1cChzdHJ1Y3QgaW5vZGUg Kiwgc3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2Nf a2NvcmVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcHJvY19rbXNn X29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHBwY19odGFiX29wZXJh dGlvbnM7CgoKCgpleHRlcm4gdm9pZCBwcm9jX3R0eV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBw cm9jX3R0eV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR0eV9kcml2ZXIgKmRyaXZlcik7CmV4dGVy biB2b2lkIHByb2NfdHR5X3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0dHlfZHJpdmVyICpkcml2 ZXIpOwoKCgoKZXh0ZXJuIHZvaWQgcHJvY19kZXZpY2VfdHJlZV9pbml0KHZvaWQpOwoKCgoKZXh0 ZXJuIHZvaWQgcHJvY19ydGFzX2luaXQodm9pZCk7CgpleHRlcm4gc3RydWN0IHByb2NfZGlyX2Vu dHJ5ICpwcm9jX3N5bWxpbmsoY29uc3QgY2hhciAqLAogICAgICAgICAgICAgICAgc3RydWN0IHBy b2NfZGlyX2VudHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBzdHJ1Y3QgcHJvY19kaXJfZW50 cnkgKnByb2NfbWtub2QoY29uc3QgY2hhciAqLG1vZGVfdCwKICAgICAgICAgICAgICAgIHN0cnVj dCBwcm9jX2Rpcl9lbnRyeSAqLGtkZXZfdCk7CmV4dGVybiBzdHJ1Y3QgcHJvY19kaXJfZW50cnkg KnByb2NfbWtkaXIoY29uc3QgY2hhciAqLHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqKTsKCmV4dGVy biBpbmxpbmUgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpjcmVhdGVfcHJvY19yZWFkX2VudHJ5KGNv bnN0IGNoYXIgKm5hbWUsCiAgICAgICAgbW9kZV90IG1vZGUsIHN0cnVjdCBwcm9jX2Rpcl9lbnRy eSAqYmFzZSwKICAgICAgICByZWFkX3Byb2NfdCAqcmVhZF9wcm9jLCB2b2lkICogZGF0YSkKewog ICAgICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcmVzPWNyZWF0ZV9wcm9jX2VudHJ5KG5hbWUs bW9kZSxiYXNlKTsKICAgICAgICBpZiAocmVzKSB7CiAgICAgICAgICAgICAgICByZXMtPnJlYWRf cHJvYz1yZWFkX3Byb2M7CiAgICAgICAgICAgICAgICByZXMtPmRhdGE9ZGF0YTsKICAgICAgICB9 CiAgICAgICAgcmV0dXJuIHJlczsKfQoKZXh0ZXJuIGlubGluZSBzdHJ1Y3QgcHJvY19kaXJfZW50 cnkgKmNyZWF0ZV9wcm9jX2luZm9fZW50cnkoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBtb2Rl X3QgbW9kZSwgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpiYXNlLCBnZXRfaW5mb190ICpnZXRfaW5m bykKewogICAgICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcmVzPWNyZWF0ZV9wcm9jX2VudHJ5 KG5hbWUsbW9kZSxiYXNlKTsKICAgICAgICBpZiAocmVzKSByZXMtPmdldF9pbmZvPWdldF9pbmZv OwogICAgICAgIHJldHVybiByZXM7Cn0KCmV4dGVybiBpbmxpbmUgc3RydWN0IHByb2NfZGlyX2Vu dHJ5ICpwcm9jX25ldF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBtb2RlX3QgbW9k ZSwgZ2V0X2luZm9fdCAqZ2V0X2luZm8pCnsKICAgICAgICByZXR1cm4gY3JlYXRlX3Byb2NfaW5m b19lbnRyeShuYW1lLG1vZGUscHJvY19uZXQsZ2V0X2luZm8pOwp9CgpleHRlcm4gaW5saW5lIHZv aWQgcHJvY19uZXRfcmVtb3ZlKGNvbnN0IGNoYXIgKm5hbWUpCnsKICAgICAgICByZW1vdmVfcHJv Y19lbnRyeShuYW1lLHByb2NfbmV0KTsKfQojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAyIDMKCiMgMSAi L29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVk ZS9hc20vaGRyZWcuaCIgMSAzCiMgMTQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2hkcmVnLmgiIDMKdHlwZWRlZiB1bnNpZ25l ZCBpbnQgaWRlX2lvcmVnX3Q7CiMgMTggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDIgMwojIDgwICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4 L2lkZS5oIiAzCnR5cGVkZWYgdW5zaWduZWQgY2hhciBieXRlOwojIDIyMSAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUu aCIgMwpzdHJ1Y3QgaHdpZl9zOwp0eXBlZGVmIGludCAoaWRlX2Fja19pbnRyX3QpKHN0cnVjdCBo d2lmX3MgKik7CiMgMjMxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAzCnR5cGVkZWYgc3RydWN0IGh3X3JlZ3Nf cyB7CiAgICAgICAgaWRlX2lvcmVnX3QgaW9fcG9ydHNbKDEwKV07CiAgICAgICAgaW50IGlycTsK ICAgICAgICBpbnQgZG1hOwogICAgICAgIGlkZV9hY2tfaW50cl90ICphY2tfaW50cjsKICAgICAg ICB2b2lkICpwcml2Owp9IGh3X3JlZ3NfdDsKCgoKCmludCBpZGVfcmVnaXN0ZXJfaHcoaHdfcmVn c190ICpodywgc3RydWN0IGh3aWZfcyAqKmh3aWZwKTsKCgoKCnZvaWQgaWRlX3NldHVwX3BvcnRz KCBod19yZWdzX3QgKmh3LAogICAgICAgICAgICAgICAgICAgICAgICBpZGVfaW9yZWdfdCBiYXNl LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm9mZnNldHMsCiAgICAgICAgICAgICAgICAg ICAgICAgIGlkZV9pb3JlZ190IGN0cmwsCiAgICAgICAgICAgICAgICAgICAgICAgIGlkZV9pb3Jl Z190IGludHIsCiAgICAgICAgICAgICAgICAgICAgICAgIGlkZV9hY2tfaW50cl90ICphY2tfaW50 ciwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlycSk7CgojIDEgIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lkZS5oIiAx IDMKIyAxNiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9hc20vaWRlLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9s b2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMSAzCiMgMTcg Ii9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1 ZGUvYXNtL2lkZS5oIiAyIDMKIyAyNyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwv cG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vaWRlLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2 LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9pby5oIiAx IDMKIyAyNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9hc20vaW8uaCIgMwojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xv Y2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BwYzR4eC5oIiAxIDMKIyAzMyAiL29w dC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9h c20vcHBjNHh4LmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9pcnEuaCIgMSAzCgoKCgoKIyAxICIvb3B0L2ZzcC9p NTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9tYWNo ZGVwLmgiIDEgMwojIDExICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9tYWNoZGVwLmgiIDMKc3RydWN0IHB0X3JlZ3M7CnN0cnVj dCBwY2lfYnVzOwpzdHJ1Y3QgcGNpX2RldjsKCnN0cnVjdCBtYWNoZGVwX2NhbGxzIHsKICAgICAg ICB2b2lkICgqc2V0dXBfYXJjaCkodm9pZCk7CgogICAgICAgIGludCAoKnNldHVwX3Jlc2lkdWFs KShjaGFyICpidWZmZXIpOwoKICAgICAgICBpbnQgKCpnZXRfY3B1aW5mbykoY2hhciAqYnVmZmVy KTsKCiAgICAgICAgdW5zaWduZWQgaW50ICgqaXJxX2Nhbm5vbmljYWxpemUpKHVuc2lnbmVkIGlu dCBpcnEpOwogICAgICAgIHZvaWQgKCppbml0X0lSUSkodm9pZCk7CiAgICAgICAgaW50ICgqZ2V0 X2lycSkoc3RydWN0IHB0X3JlZ3MgKik7CiAgICAgICAgdm9pZCAoKnBvc3RfaXJxKSggc3RydWN0 IHB0X3JlZ3MgKiwgaW50ICk7CgoKCiAgICAgICAgdm9pZCAoKmluaXQpKHZvaWQpOwoKICAgICAg ICB2b2lkICgqcmVzdGFydCkoY2hhciAqY21kKTsKICAgICAgICB2b2lkICgqcG93ZXJfb2ZmKSh2 b2lkKTsKICAgICAgICB2b2lkICgqaGFsdCkodm9pZCk7CgogICAgICAgIGxvbmcgKCp0aW1lX2lu aXQpKHZvaWQpOwogICAgICAgIGludCAoKnNldF9ydGNfdGltZSkodW5zaWduZWQgbG9uZyBub3d0 aW1lKTsKICAgICAgICB1bnNpZ25lZCBsb25nICgqZ2V0X3J0Y190aW1lKSh2b2lkKTsKICAgICAg ICB2b2lkICgqY2FsaWJyYXRlX2RlY3IpKHZvaWQpOwoKICAgICAgICB2b2lkICgqaGVhcnRiZWF0 KSh2b2lkKTsKICAgICAgICB1bnNpZ25lZCBsb25nIGhlYXJ0YmVhdF9yZXNldDsKICAgICAgICB1 bnNpZ25lZCBsb25nIGhlYXJ0YmVhdF9jb3VudDsKCgoKICAgICAgICB1bnNpZ25lZCBsb25nICgq ZmluZF9lbmRfb2ZfbWVtb3J5KSh2b2lkKTsKCiAgICAgICAgdm9pZCAoKnByb2dyZXNzKShjaGFy ICosIHVuc2lnbmVkIHNob3J0KTsKCiAgICAgICAgdW5zaWduZWQgY2hhciAoKm52cmFtX3JlYWRf dmFsKShpbnQgYWRkcik7CiAgICAgICAgdm9pZCAoKm52cmFtX3dyaXRlX3ZhbCkoaW50IGFkZHIs IHVuc2lnbmVkIGNoYXIgdmFsKTsKCgogICAgICAgIGludCAoKmtiZF9zZXRrZXljb2RlKSh1bnNp Z25lZCBpbnQgc2NhbmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IGtleWNvZGUpOwogICAgICAgIGludCAoKmtiZF9nZXRrZXljb2RlKSh1bnNpZ25lZCBp bnQgc2NhbmNvZGUpOwogICAgICAgIGludCAoKmtiZF90cmFuc2xhdGUpKHVuc2lnbmVkIGNoYXIg c2NhbmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAq a2V5Y29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIHJhd19tb2RlKTsK ICAgICAgICBjaGFyICgqa2JkX3VuZXhwZWN0ZWRfdXApKHVuc2lnbmVkIGNoYXIga2V5Y29kZSk7 CiAgICAgICAgdm9pZCAoKmtiZF9sZWRzKSh1bnNpZ25lZCBjaGFyIGxlZHMpOwogICAgICAgIHZv aWQgKCprYmRfaW5pdF9odykodm9pZCk7CiMgNzQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL21hY2hkZXAuaCIgMwogICAgICAg IHZvaWQgKCpwY2liaW9zX2ZpeHVwKSh2b2lkKTsKCgoKCiAgICAgICAgdm9pZCAoKnBjaWJpb3Nf Zml4dXBfYnVzKShzdHJ1Y3QgcGNpX2J1cyAqKTsKCgoKCiAgICAgICAgdm9pZCAoKnBjaWJpb3Nf Zml4dXBfcmVzb3VyY2VzKShzdHJ1Y3QgcGNpX2RldiAqKTsKCgoKCiAgICAgICAgaW50ICgqcGNp Ymlvc19lbmFibGVfZGV2aWNlX2hvb2spKHN0cnVjdCBwY2lfZGV2ICosIGludCBpbml0aWFsKTsK CgogICAgICAgIHVuc2lnbmVkIGNoYXIgKCpwY2lfc3dpenpsZSkoc3RydWN0IHBjaV9kZXYgKiwg dW5zaWduZWQgY2hhciAqKTsKICAgICAgICBpbnQgKCpwY2lfbWFwX2lycSkoc3RydWN0IHBjaV9k ZXYgKiwgdW5zaWduZWQgY2hhciwgdW5zaWduZWQgY2hhcik7CgoKICAgICAgICBpbnQgcHBjX21h Y2hpbmU7Cn07CgpleHRlcm4gc3RydWN0IG1hY2hkZXBfY2FsbHMgcHBjX21kOwpleHRlcm4gY2hh ciBjbWRfbGluZVs1MTJdOwoKZXh0ZXJuIHZvaWQgc2V0dXBfcGNpX3B0cnModm9pZCk7CgoKCgoK dHlwZWRlZiBlbnVtIHN5c19jdHJsZXJfa2luZCB7CiAgICAgICAgU1lTX0NUUkxFUl9VTktOT1dO ID0gMCwKICAgICAgICBTWVNfQ1RSTEVSX0NVREEgPSAxLAogICAgICAgIFNZU19DVFJMRVJfUE1V ID0gMiwKfSBzeXNfY3RybGVyX3Q7CgpleHRlcm4gc3lzX2N0cmxlcl90IHN5c19jdHJsZXI7CiMg NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5j bHVkZS9hc20vaXJxLmgiIDIgMwoKCmV4dGVybiB2b2lkIGRpc2FibGVfaXJxKHVuc2lnbmVkIGlu dCk7CmV4dGVybiB2b2lkIGRpc2FibGVfaXJxX25vc3luYyh1bnNpZ25lZCBpbnQpOwpleHRlcm4g dm9pZCBlbmFibGVfaXJxKHVuc2lnbmVkIGludCk7CiMgNzEgIi9vcHQvZnNwL2k1ODYtcGMtbGlu dXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lycS5oIiAzCnN0YXRp YyBfX2lubGluZV9fIGludAppcnFfY2Fubm9uaWNhbGl6ZShpbnQgaXJxKQp7CiAgICAgICAgcmV0 dXJuIChpcnEpOwp9CiMgMjQwICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9pcnEuaCIgMwpleHRlcm4gdW5zaWduZWQgbG9uZyBw cGNfY2FjaGVkX2lycV9tYXNrWygoMTI4ICsgMzEpIC8gMzIpXTsKZXh0ZXJuIHVuc2lnbmVkIGxv bmcgcHBjX2VuYWJsZWRfaXJxX21hc2tbKCgxMjggKyAzMSkgLyAzMildOwpleHRlcm4gdW5zaWdu ZWQgbG9uZyBwcGNfbG9zdF9pbnRlcnJ1cHRzWygoMTI4ICsgMzEpIC8gMzIpXTsKZXh0ZXJuIGF0 b21pY190IHBwY19uX2xvc3RfaW50ZXJydXB0czsKIyAzNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51 eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vcHBjNHh4LmgiIDIgMwoj IDIwOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9hc20vcHBjNHh4LmgiIDMKdHlwZWRlZiBzdHJ1Y3QgYm9hcmRfaW5mbyB7CiAgICAg ICAgdW5zaWduZWQgY2hhciBiaV9zX3ZlcnNpb25bNF07CiAgICAgICAgdW5zaWduZWQgY2hhciBi aV9yX3ZlcnNpb25bMzBdOwogICAgICAgIHVuc2lnbmVkIGludCBiaV9tZW1zaXplOwogICAgICAg IHVuc2lnbmVkIGNoYXIgYmlfZW5ldGFkZHJbNl07CiAgICAgICAgdW5zaWduZWQgY2hhciBiaV9w Y2lfZW5ldGFkZHJbNl07CiAgICAgICAgdW5zaWduZWQgaW50IGJpX2ludGZyZXE7CiAgICAgICAg dW5zaWduZWQgaW50IGJpX2J1c2ZyZXE7CiAgICAgICAgdW5zaWduZWQgaW50IGJpX3BjaV9idXNm cmVxOwp9IGJkX3Q7CiMgMjI3ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wcGM0eHguaCIgMwpleHRlcm4gdW5zaWduZWQgY2hh ciBfX3Jlc1tdOwoKZXh0ZXJuIGludCBwcGM0MDVfZ2V0X2JvYXJkaW5mbyhpbnQgb3B0aW9uLCB1 bnNpZ25lZCBsb25nIGJkX2VudHJ5KTsKIyAyNTIgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL3BwYzR4eC5oIiAzCmV4dGVybiB1 bnNpZ25lZCBsb25nIGlzYV9pb19iYXNlOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpc2FfbWVtX2Jh c2U7CmV4dGVybiB1bnNpZ25lZCBsb25nIHBjaV9kcmFtX29mZnNldDsKIyAyNSAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vaW8u aCIgMiAzCiMgMTUyICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxp bnV4L3N5cy1pbmNsdWRlL2FzbS9pby5oIiAzCmV4dGVybiB2b2lkIF9pbnNiKHZvbGF0aWxlIHU4 ICpwb3J0LCB2b2lkICpidWYsIGludCBucyk7CmV4dGVybiB2b2lkIF9vdXRzYih2b2xhdGlsZSB1 OCAqcG9ydCwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbnMpOwpleHRlcm4gdm9pZCBfaW5zdyh2b2xh dGlsZSB1MTYgKnBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5zKTsKZXh0ZXJuIHZvaWQgX291dHN3KHZv bGF0aWxlIHUxNiAqcG9ydCwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbnMpOwpleHRlcm4gdm9pZCBf aW5zbCh2b2xhdGlsZSB1MzIgKnBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5sKTsKZXh0ZXJuIHZvaWQg X291dHNsKHZvbGF0aWxlIHUzMiAqcG9ydCwgY29uc3Qgdm9pZCAqYnVmLCBpbnQgbmwpOwpleHRl cm4gdm9pZCBfaW5zd19ucyh2b2xhdGlsZSB1MTYgKnBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5zKTsK ZXh0ZXJuIHZvaWQgX291dHN3X25zKHZvbGF0aWxlIHUxNiAqcG9ydCwgY29uc3Qgdm9pZCAqYnVm LCBpbnQgbnMpOwpleHRlcm4gdm9pZCBfaW5zbF9ucyh2b2xhdGlsZSB1MzIgKnBvcnQsIHZvaWQg KmJ1ZiwgaW50IG5sKTsKZXh0ZXJuIHZvaWQgX291dHNsX25zKHZvbGF0aWxlIHUzMiAqcG9ydCwg Y29uc3Qgdm9pZCAqYnVmLCBpbnQgbmwpOwojIDE4NSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20vaW8uaCIgMwpleHRlcm4gdm9p ZCAqX19pb3JlbWFwKHVuc2lnbmVkIGxvbmcgYWRkcmVzcywgdW5zaWduZWQgbG9uZyBzaXplLAog ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwpleHRlcm4gdm9pZCAq X19pb3JlbWFwX2F0KHVuc2lnbmVkIGxvbmcgcGh5cywgdW5zaWduZWQgbG9uZyBzaXplLAogICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwpleHRlcm4gdm9pZCAq aW9yZW1hcCh1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CgpleHRl cm4gdm9pZCBpb3VubWFwKHZvaWQgKmFkZHIpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpb3BhKHVu c2lnbmVkIGxvbmcgYWRkcik7CgoKCmV4dGVybiB2b2lkICptZW1yZW1hcCh1bnNpZ25lZCBsb25n IGFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiMgMjA1ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4 LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9pby5oIiAzCmV4dGVybiBp bmxpbmUgdW5zaWduZWQgbG9uZyB2aXJ0X3RvX2J1cyh2b2xhdGlsZSB2b2lkICogYWRkcmVzcykK ewoKCgoKCiAgICAgICAgcmV0dXJuIGlvcGEgKCh1bnNpZ25lZCBsb25nKSBhZGRyZXNzKSArIDA7 CgoKCgoKfQoKZXh0ZXJuIGlubGluZSB2b2lkICogYnVzX3RvX3ZpcnQodW5zaWduZWQgbG9uZyBh ZGRyZXNzKQp7CgoKCiAgICAgICAgaWYgKGFkZHJlc3MgPT0gMCkKICAgICAgICAgICAgICAgIHJl dHVybiAwOwogICAgICAgIHJldHVybiAodm9pZCAqKShhZGRyZXNzIC0gMCArIDB4YzAwMDAwMDAp OwoKfQoKCgoKCmV4dGVybiBpbmxpbmUgdW5zaWduZWQgbG9uZyB2aXJ0X3RvX3BoeXModm9sYXRp bGUgdm9pZCAqIGFkZHJlc3MpCnsKCgoKCgogICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZykg YWRkcmVzcyAtIDB4YzAwMDAwMDA7Cgp9CgpleHRlcm4gaW5saW5lIHZvaWQgKiBwaHlzX3RvX3Zp cnQodW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CgoKCgoKICAgICAgICByZXR1cm4gKHZvaWQgKikg KGFkZHJlc3MgKyAweGMwMDAwMDAwKTsKCn0KIyAyNjQgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgt Z251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lvLmgiIDMKZXh0ZXJuIGlu bGluZSB2b2lkIGVpZWlvKHZvaWQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImVp ZWlvIiA6IDogOiAibWVtb3J5Iik7Cn0KIyAyNzkgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lvLmgiIDMKZXh0ZXJuIGlubGlu ZSBpbnQgaW5fOCh2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICphZGRyKQp7CiAgICAgICAgaW50IHJl dDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImxieiVVMSVYMSAlMCwlMTsgZWllaW8i IDogIj1yIiAocmV0KSA6ICJtIiAoKmFkZHIpKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRl cm4gaW5saW5lIHZvaWQgb3V0Xzgodm9sYXRpbGUgdW5zaWduZWQgY2hhciAqYWRkciwgaW50IHZh bCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGIlVTAlWDAgJTEsJTA7IGVpZWlv IiA6ICI9bSIgKCphZGRyKSA6ICJyIiAodmFsKSk7Cn0KCmV4dGVybiBpbmxpbmUgaW50IGluX2xl MTYodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKmFkZHIpCnsKICAgICAgICBpbnQgcmV0OwoKICAg ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygibGhicnggJTAsMCwlMTsgZWllaW8iIDogIj1yIiAo cmV0KSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiAoYWRkciksICJtIiAoKmFk ZHIpKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4gaW5saW5lIGludCBpbl9iZTE2KHZv bGF0aWxlIHVuc2lnbmVkIHNob3J0ICphZGRyKQp7CiAgICAgICAgaW50IHJldDsKCiAgICAgICAg X19hc21fXyBfX3ZvbGF0aWxlX18oImxoeiVVMSVYMSAlMCwlMTsgZWllaW8iIDogIj1yIiAocmV0 KSA6ICJtIiAoKmFkZHIpKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4gaW5saW5lIHZv aWQgb3V0X2xlMTYodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKmFkZHIsIGludCB2YWwpCnsKICAg ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygic3RoYnJ4ICUxLDAsJTI7IGVpZWlvIiA6ICI9bSIg KCphZGRyKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyIiAodmFsKSwgInIiIChh ZGRyKSk7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCBvdXRfYmUxNih2b2xhdGlsZSB1bnNpZ25lZCBz aG9ydCAqYWRkciwgaW50IHZhbCkKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGgl VTAlWDAgJTEsJTA7IGVpZWlvIiA6ICI9bSIgKCphZGRyKSA6ICJyIiAodmFsKSk7Cn0KCmV4dGVy biBpbmxpbmUgdW5zaWduZWQgaW5fbGUzMih2b2xhdGlsZSB1bnNpZ25lZCAqYWRkcikKewogICAg ICAgIHVuc2lnbmVkIHJldDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oImx3YnJ4ICUw LDAsJTE7IGVpZWlvIiA6ICI9ciIgKHJldCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJyIiAoYWRkciksICJtIiAoKmFkZHIpKTsKICAgICAgICByZXR1cm4gcmV0Owp9CgpleHRlcm4g aW5saW5lIHVuc2lnbmVkIGluX2JlMzIodm9sYXRpbGUgdW5zaWduZWQgKmFkZHIpCnsKICAgICAg ICB1bnNpZ25lZCByZXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsd3olVTElWDEg JTAsJTE7IGVpZWlvIiA6ICI9ciIgKHJldCkgOiAibSIgKCphZGRyKSk7CiAgICAgICAgcmV0dXJu IHJldDsKfQoKZXh0ZXJuIGlubGluZSB2b2lkIG91dF9sZTMyKHZvbGF0aWxlIHVuc2lnbmVkICph ZGRyLCBpbnQgdmFsKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0d2JyeCAlMSww LCUyOyBlaWVpbyIgOiAiPW0iICgqYWRkcikgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJyIiAodmFsKSwgInIiIChhZGRyKSk7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCBvdXRfYmUzMih2 b2xhdGlsZSB1bnNpZ25lZCAqYWRkciwgaW50IHZhbCkKewogICAgICAgIF9fYXNtX18gX192b2xh dGlsZV9fKCJzdHclVTAlWDAgJTEsJTA7IGVpZWlvIiA6ICI9bSIgKCphZGRyKSA6ICJyIiAodmFs KSk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGNoZWNrX3NpZ25hdHVyZSh1bnNpZ25lZCBsb25nIGlv X2FkZHIsCiAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2lnbmF0dXJlLCBpbnQgbGVuZ3Ro KQp7CiAgICAgICAgaW50IHJldHZhbCA9IDA7CiAgICAgICAgZG8gewogICAgICAgICAgICAgICAg aWYgKGluXzgoKHZvbGF0aWxlIHU4ICopKGlvX2FkZHIpKSAhPSAqc2lnbmF0dXJlKQogICAgICAg ICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgIGlvX2FkZHIrKzsKICAg ICAgICAgICAgICAgIHNpZ25hdHVyZSsrOwogICAgICAgICAgICAgICAgbGVuZ3RoLS07CiAgICAg ICAgfSB3aGlsZSAobGVuZ3RoKTsKICAgICAgICByZXR2YWwgPSAxOwpvdXQ6CiAgICAgICAgcmV0 dXJuIHJldHZhbDsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IGlzYV9jaGVja19zaWduYXR1cmUodW5z aWduZWQgbG9uZyBpb19hZGRyLAogICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNpZ25hdHVy ZSwgaW50IGxlbmd0aCkKewogICAgICAgIHJldHVybiAwOwp9CgoKCmV4dGVybiB2b2lkIGludmFs aWRhdGVfZGNhY2hlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5k KTsKZXh0ZXJuIHZvaWQgZmx1c2hfZGNhY2hlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVu c2lnbmVkIGxvbmcgZW5kKTsKZXh0ZXJuIHZvaWQgd2JhY2tfaW52X2RjYWNoZV9yYW5nZSh1bnNp Z25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7CiMgMjggIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvYXNtL2lkZS5oIiAy IDMKCmV4dGVybiBpbnQgcG1hY19pZGVfcG9ydHNfa25vd247CmV4dGVybiBpZGVfaW9yZWdfdCBw bWFjX2lkZV9yZWdiYXNlWzRdOwpleHRlcm4gaW50IHBtYWNfaWRlX2lycVs0XTsKZXh0ZXJuIHZv aWQgcG1hY19pZGVfcHJvYmUodm9pZCk7CgpleHRlcm4gaW50IGNocnBfaWRlX3BvcnRzX2tub3du OwpleHRlcm4gaWRlX2lvcmVnX3QgY2hycF9pZGVfcmVnYmFzZVs0XTsKZXh0ZXJuIGlkZV9pb3Jl Z190IGNocnBfaWRlZG1hX3JlZ2Jhc2U7CmV4dGVybiB1bnNpZ25lZCBpbnQgY2hycF9pZGVfaXJx OwpleHRlcm4gdm9pZCBjaHJwX2lkZV9wcm9iZSh2b2lkKTsKCmV4dGVybiB2b2lkIHBwY19nZW5l cmljX2lkZV9maXhfZHJpdmVpZChzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQpOwoKc3RydWN0IGlkZV9t YWNoZGVwX2NhbGxzIHsKICAgICAgICB2b2lkICgqaW5zdykoaWRlX2lvcmVnX3QgcG9ydCwgdm9p ZCAqYnVmLCBpbnQgbnMpOwogICAgICAgIHZvaWQgKCpvdXRzdykoaWRlX2lvcmVnX3QgcG9ydCwg dm9pZCAqYnVmLCBpbnQgbnMpOwogICAgICAgIGludCAoKmRlZmF1bHRfaXJxKShpZGVfaW9yZWdf dCBiYXNlKTsKICAgICAgICBpZGVfaW9yZWdfdCAoKmRlZmF1bHRfaW9fYmFzZSkoaW50IGluZGV4 KTsKICAgICAgICBpbnQgKCppZGVfY2hlY2tfcmVnaW9uKShpZGVfaW9yZWdfdCBmcm9tLCB1bnNp Z25lZCBpbnQgZXh0ZW50KTsKICAgICAgICB2b2lkICgqaWRlX3JlcXVlc3RfcmVnaW9uKShpZGVf aW9yZWdfdCBmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBleHRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqbmFtZSk7CiAgICAgICAgdm9pZCAoKmlkZV9yZWxlYXNlX3JlZ2lvbikoaWRlX2lv cmVnX3QgZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgZXh0ZW50KTsKICAgICAgICB2b2lkICgqZml4X2RyaXZlaWQpKHN0cnVjdCBoZF9kcml2 ZWlkICppZCk7CiAgICAgICAgdm9pZCAoKmlkZV9pbml0X2h3aWYpKGh3X3JlZ3NfdCAqaHcsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVfaW9yZWdfdCBkYXRhX3BvcnQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVfaW9yZWdfdCBjdHJsX3Bv cnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmlycSk7CgogICAg ICAgIGludCBpb19iYXNlOwp9OwoKZXh0ZXJuIHN0cnVjdCBpZGVfbWFjaGRlcF9jYWxscyBwcGNf aWRlX21kOwoKdm9pZCBpZGVfaW5zdyhpZGVfaW9yZWdfdCBwb3J0LCB2b2lkICpidWYsIGludCBu cyk7CnZvaWQgaWRlX291dHN3KGlkZV9pb3JlZ190IHBvcnQsIHZvaWQgKmJ1ZiwgaW50IG5zKTsK dm9pZCBwcGNfZ2VuZXJpY19pZGVfZml4X2RyaXZlaWQoc3RydWN0IGhkX2RyaXZlaWQgKmlkKTsK IyA4NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9hc20vaWRlLmgiIDMKc3RhdGljIF9faW5saW5lX18gaW50IGlkZV9kZWZhdWx0X2ly cShpZGVfaW9yZWdfdCBiYXNlKQp7CiAgICAgICAgaWYgKCBwcGNfaWRlX21kLmRlZmF1bHRfaXJx ICkKICAgICAgICAgICAgICAgIHJldHVybiBwcGNfaWRlX21kLmRlZmF1bHRfaXJxKGJhc2UpOwog ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiAtMTsKfQoKc3RhdGljIF9faW5saW5l X18gaWRlX2lvcmVnX3QgaWRlX2RlZmF1bHRfaW9fYmFzZShpbnQgaW5kZXgpCnsKICAgICAgICBp ZiAocHBjX2lkZV9tZC5kZWZhdWx0X2lvX2Jhc2UpCiAgICAgICAgICAgICAgICByZXR1cm4gcHBj X2lkZV9tZC5kZWZhdWx0X2lvX2Jhc2UoaW5kZXgpOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0 aWMgX19pbmxpbmVfXyB2b2lkIGlkZV9pbml0X2h3aWZfcG9ydHMoaHdfcmVnc190ICpodywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZV9pb3JlZ190IGRhdGFf cG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZV9pb3Jl Z190IGN0cmxfcG9ydCwgaW50ICppcnEpCnsKICAgICAgICBpZiAocHBjX2lkZV9tZC5pZGVfaW5p dF9od2lmICE9ICgodm9pZCAqKTApKQogICAgICAgICAgICAgICAgcHBjX2lkZV9tZC5pZGVfaW5p dF9od2lmKGh3LCBkYXRhX3BvcnQsIGN0cmxfcG9ydCwgaXJxKTsKfQoKc3RhdGljIF9faW5saW5l X18gdm9pZCBpZGVfaW5pdF9kZWZhdWx0X2h3aWZzKHZvaWQpCnsKCiAgICAgICAgaHdfcmVnc190 IGh3OwogICAgICAgIGludCBpbmRleDsKICAgICAgICBpZGVfaW9yZWdfdCBiYXNlOwoKICAgICAg ICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCA0OyBpbmRleCsrKSB7CiAgICAgICAgICAgICAgICBi YXNlID0gaWRlX2RlZmF1bHRfaW9fYmFzZShpbmRleCk7CiAgICAgICAgICAgICAgICBpZiAoYmFz ZSA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg IGlkZV9pbml0X2h3aWZfcG9ydHMoJmh3LCBiYXNlLCAwLCAoKHZvaWQgKikwKSk7CiAgICAgICAg ICAgICAgICBody5pcnEgPSBpZGVfZGVmYXVsdF9pcnEoYmFzZSk7CiAgICAgICAgICAgICAgICBp ZGVfcmVnaXN0ZXJfaHcoJmh3LCAoKHZvaWQgKikwKSk7CiAgICAgICAgfQoKfQoKc3RhdGljIF9f aW5saW5lX18gaW50IGlkZV9jaGVja19yZWdpb24gKGlkZV9pb3JlZ190IGZyb20sIHVuc2lnbmVk IGludCBleHRlbnQpCnsKICAgICAgICBpZiAocHBjX2lkZV9tZC5pZGVfY2hlY2tfcmVnaW9uKQog ICAgICAgICAgICAgICAgcmV0dXJuIHBwY19pZGVfbWQuaWRlX2NoZWNrX3JlZ2lvbihmcm9tLCBl eHRlbnQpOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGlkZV9y ZXF1ZXN0X3JlZ2lvbiAoaWRlX2lvcmVnX3QgZnJvbSwgdW5zaWduZWQgaW50IGV4dGVudCwgY29u c3QgY2hhciAqbmFtZSkKewogICAgICAgIGlmICggcHBjX2lkZV9tZC5pZGVfcmVxdWVzdF9yZWdp b24gKQogICAgICAgICAgICAgICAgcHBjX2lkZV9tZC5pZGVfcmVxdWVzdF9yZWdpb24oZnJvbSwg ZXh0ZW50LCBuYW1lKTsKfQoKc3RhdGljIF9faW5saW5lX18gdm9pZCBpZGVfcmVsZWFzZV9yZWdp b24gKGlkZV9pb3JlZ190IGZyb20sIHVuc2lnbmVkIGludCBleHRlbnQpCnsKICAgICAgICBpZiAo IHBwY19pZGVfbWQuaWRlX3JlbGVhc2VfcmVnaW9uICkKICAgICAgICAgICAgICAgIHBwY19pZGVf bWQuaWRlX3JlbGVhc2VfcmVnaW9uKGZyb20sIGV4dGVudCk7Cn0KCnN0YXRpYyBfX2lubGluZV9f IHZvaWQgaWRlX2ZpeF9kcml2ZWlkIChzdHJ1Y3QgaGRfZHJpdmVpZCAqaWQpCnsKICAgICAgICBp ZiAoIHBwY19pZGVfbWQuZml4X2RyaXZlaWQgKQogICAgICAgICAgICAgICAgcHBjX2lkZV9tZC5m aXhfZHJpdmVpZChpZCk7Cn0KCnR5cGVkZWYgdW5pb24gewogICAgICAgIHVuc2lnbmVkIGFsbCA6 IDg7CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJpdDcgOiAxOwog ICAgICAgICAgICAgICAgdW5zaWduZWQgbGJhIDogMTsKICAgICAgICAgICAgICAgIHVuc2lnbmVk IGJpdDUgOiAxOwogICAgICAgICAgICAgICAgdW5zaWduZWQgdW5pdCA6IDE7CiAgICAgICAgICAg ICAgICB1bnNpZ25lZCBoZWFkIDogNDsKICAgICAgICB9IGI7Cn0gc2VsZWN0X3Q7CiMgMjU2ICIv b3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRl L2xpbnV4L2lkZS5oIiAyIDMKIyAyNjggIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDMKdHlwZWRlZiB1bmlvbiB7 CiAgICAgICAgdW5zaWduZWQgYWxsIDogODsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg ICAgdW5zaWduZWQgc2V0X2dlb21ldHJ5IDogMTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJl Y2FsaWJyYXRlIDogMTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNldF9tdWx0bW9kZSA6IDE7 CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBzZXRfdHVuZSA6IDE7CiAgICAgICAgICAgICAgICB1 bnNpZ25lZCByZXNlcnZlZCA6IDQ7CiAgICAgICAgfSBiOwp9IHNwZWNpYWxfdDsKCnR5cGVkZWYg c3RydWN0IGlkZV9kcml2ZV9zIHsKICAgICAgICByZXF1ZXN0X3F1ZXVlX3QgcXVldWU7CiAgICAg ICAgc3RydWN0IGlkZV9kcml2ZV9zICpuZXh0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2xlZXA7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZXJ2aWNlX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxv bmcgc2VydmljZV90aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dDsKICAgICAgICBz cGVjaWFsX3Qgc3BlY2lhbDsKICAgICAgICBieXRlIGtlZXBfc2V0dGluZ3M7CiAgICAgICAgYnl0 ZSB1c2luZ19kbWE7CiAgICAgICAgYnl0ZSB3YWl0aW5nX2Zvcl9kbWE7CiAgICAgICAgYnl0ZSB1 bm1hc2s7CiAgICAgICAgYnl0ZSBzbG93OwogICAgICAgIGJ5dGUgYnN3YXA7CiAgICAgICAgYnl0 ZSBkc2Nfb3ZlcmxhcDsKICAgICAgICBieXRlIG5pY2UxOwogICAgICAgIHVuc2lnbmVkIHByZXNl bnQgOiAxOwogICAgICAgIHVuc2lnbmVkIG5vcHJvYmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGJ1 c3kgOiAxOwogICAgICAgIHVuc2lnbmVkIHJlbW92YWJsZSA6IDE7CiAgICAgICAgdW5zaWduZWQg Zm9yY2VkX2dlb20gOiAxOwogICAgICAgIHVuc2lnbmVkIG5vX3VubWFzayA6IDE7CiAgICAgICAg dW5zaWduZWQgbm9faW9fMzJiaXQgOiAxOwogICAgICAgIHVuc2lnbmVkIG5vYmlvcyA6IDE7CiAg ICAgICAgdW5zaWduZWQgcmV2YWxpZGF0ZSA6IDE7CiAgICAgICAgdW5zaWduZWQgYXRhcGlfb3Zl cmxhcCA6IDE7CiAgICAgICAgdW5zaWduZWQgbmljZTAgOiAxOwogICAgICAgIHVuc2lnbmVkIG5p Y2UyIDogMTsKICAgICAgICB1bnNpZ25lZCBkb29ybG9ja2luZyA6IDE7CiAgICAgICAgdW5zaWdu ZWQgYXV0b3R1bmUgOiAyOwogICAgICAgIHVuc2lnbmVkIHJlbWFwXzBfdG9fMSA6IDI7CiAgICAg ICAgdW5zaWduZWQgYXRhX2ZsYXNoIDogMTsKICAgICAgICBieXRlIHNjc2k7CiAgICAgICAgYnl0 ZSBtZWRpYTsKICAgICAgICBzZWxlY3RfdCBzZWxlY3Q7CiAgICAgICAgYnl0ZSBjdGw7CiAgICAg ICAgYnl0ZSByZWFkeV9zdGF0OwogICAgICAgIGJ5dGUgbXVsdF9jb3VudDsKICAgICAgICBieXRl IG11bHRfcmVxOwogICAgICAgIGJ5dGUgdHVuZV9yZXE7CiAgICAgICAgYnl0ZSBpb18zMmJpdDsK ICAgICAgICBieXRlIGJhZF93c3RhdDsKICAgICAgICBieXRlIG5vd2VycjsKICAgICAgICBieXRl IHNlY3QwOwogICAgICAgIGJ5dGUgdXNhZ2U7CiAgICAgICAgYnl0ZSBoZWFkOwogICAgICAgIGJ5 dGUgc2VjdDsKICAgICAgICBieXRlIGJpb3NfaGVhZDsKICAgICAgICBieXRlIGJpb3Nfc2VjdDsK ICAgICAgICB1bnNpZ25lZCBpbnQgYmlvc19jeWw7CiAgICAgICAgdW5zaWduZWQgaW50IGN5bDsK ICAgICAgICB1bnNpZ25lZCBsb25nIGNhcGFjaXR5OwogICAgICAgIHVuc2lnbmVkIGludCBkcml2 ZV9kYXRhOwogICAgICAgIHZvaWQgKmh3aWY7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3Qgd3F1 ZXVlOwogICAgICAgIHN0cnVjdCBoZF9kcml2ZWlkICppZDsKICAgICAgICBzdHJ1Y3QgaGRfc3Ry dWN0ICpwYXJ0OwogICAgICAgIGNoYXIgbmFtZVs0XTsKICAgICAgICB2b2lkICpkcml2ZXI7CiAg ICAgICAgdm9pZCAqZHJpdmVyX2RhdGE7CiAgICAgICAgZGV2ZnNfaGFuZGxlX3QgZGU7CiAgICAg ICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jOwogICAgICAgIHZvaWQgKnNldHRpbmdzOwog ICAgICAgIGNoYXIgZHJpdmVyX3JlcVsxMF07CiAgICAgICAgaW50IGxhc3RfbHVuOwogICAgICAg IGludCBmb3JjZWRfbHVuOwogICAgICAgIGludCBsdW47CiAgICAgICAgaW50IGNyY19jb3VudDsK ICAgICAgICBieXRlIHF1aXJrX2xpc3Q7CiAgICAgICAgYnl0ZSBzdXNwZW5kX3Jlc2V0OwogICAg ICAgIGJ5dGUgaW5pdF9zcGVlZDsKICAgICAgICBieXRlIGN1cnJlbnRfc3BlZWQ7CiAgICAgICAg Ynl0ZSBkbjsKfSBpZGVfZHJpdmVfdDsKIyAzNjUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251 L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDMKdHlwZWRlZiBl bnVtIHsgaWRlX2RtYV9yZWFkLCBpZGVfZG1hX3dyaXRlLCBpZGVfZG1hX2JlZ2luLAogICAgICAg ICAgICAgICAgaWRlX2RtYV9lbmQsIGlkZV9kbWFfY2hlY2ssIGlkZV9kbWFfb24sCiAgICAgICAg ICAgICAgICBpZGVfZG1hX29mZiwgaWRlX2RtYV9vZmZfcXVpZXRseSwgaWRlX2RtYV90ZXN0X2ly cSwKICAgICAgICAgICAgICAgIGlkZV9kbWFfYmFkX2RyaXZlLCBpZGVfZG1hX2dvb2RfZHJpdmUs CiAgICAgICAgICAgICAgICBpZGVfZG1hX3ZlcmJvc2UsIGlkZV9kbWFfcmV0dW5lLAogICAgICAg ICAgICAgICAgaWRlX2RtYV9sb3N0aXJxLCBpZGVfZG1hX3RpbWVvdXQKfSBpZGVfZG1hX2FjdGlv bl90OwoKdHlwZWRlZiBpbnQgKGlkZV9kbWFwcm9jX3QpKGlkZV9kbWFfYWN0aW9uX3QsIGlkZV9k cml2ZV90ICopOwojIDM4NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJw Yy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwp0eXBlZGVmIHZvaWQgKGlkZV90dW5l cHJvY190KSAoaWRlX2RyaXZlX3QgKiwgYnl0ZSk7CnR5cGVkZWYgaW50IChpZGVfc3BlZWRwcm9j X3QpIChpZGVfZHJpdmVfdCAqLCBieXRlKTsKCgoKCnR5cGVkZWYgdm9pZCAoaWRlX3NlbGVjdHBy b2NfdCkgKGlkZV9kcml2ZV90ICopOwp0eXBlZGVmIHZvaWQgKGlkZV9yZXNldHByb2NfdCkgKGlk ZV9kcml2ZV90ICopOwp0eXBlZGVmIGludCAoaWRlX3F1aXJrcHJvY190KSAoaWRlX2RyaXZlX3Qg Kik7CnR5cGVkZWYgdm9pZCAoaWRlX2ludHJwcm9jX3QpIChpZGVfZHJpdmVfdCAqKTsKdHlwZWRl ZiB2b2lkIChpZGVfbWFza3Byb2NfdCkgKGlkZV9kcml2ZV90ICosIGludCk7CnR5cGVkZWYgdm9p ZCAoaWRlX3J3X3Byb2NfdCkgKGlkZV9kcml2ZV90ICosIGlkZV9kbWFfYWN0aW9uX3QpOwoKCgoK CnR5cGVkZWYgZW51bSB7IGlkZV91bmtub3duLCBpZGVfZ2VuZXJpYywgaWRlX3BjaSwKICAgICAg ICAgICAgICAgIGlkZV9jbWQ2NDAsIGlkZV9kdGMyMjc4LCBpZGVfYWxpMTR4eCwKICAgICAgICAg ICAgICAgIGlkZV9xZDY1ODAsIGlkZV91bWM4NjcyLCBpZGVfaHQ2NTYwYiwKICAgICAgICAgICAg ICAgIGlkZV9wZGM0MDMwLCBpZGVfcnoxMDAwLCBpZGVfdHJtMjkwLAogICAgICAgICAgICAgICAg aWRlX2NtZDY0NiwgaWRlX2N5ODJjNjkzLCBpZGVfNGRyaXZlcywKICAgICAgICAgICAgICAgIGlk ZV9wbWFjCn0gaHdpZl9jaGlwc2V0X3Q7CiMgNDIxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdu dS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAzCnR5cGVkZWYg c3RydWN0IGh3aWZfcyB7CiAgICAgICAgc3RydWN0IGh3aWZfcyAqbmV4dDsKICAgICAgICB2b2lk ICpod2dyb3VwOwogICAgICAgIGlkZV9pb3JlZ190IGlvX3BvcnRzWygxMCldOwogICAgICAgIGh3 X3JlZ3NfdCBodzsKICAgICAgICBpZGVfZHJpdmVfdCBkcml2ZXNbMl07CiAgICAgICAgc3RydWN0 IGdlbmRpc2sgKmdkOwogICAgICAgIGlkZV90dW5lcHJvY190ICp0dW5lcHJvYzsKICAgICAgICBp ZGVfc3BlZWRwcm9jX3QgKnNwZWVkcHJvYzsKICAgICAgICBpZGVfc2VsZWN0cHJvY190ICpzZWxl Y3Rwcm9jOwogICAgICAgIGlkZV9yZXNldHByb2NfdCAqcmVzZXRwcm9jOwogICAgICAgIGlkZV9p bnRycHJvY190ICppbnRycHJvYzsKICAgICAgICBpZGVfbWFza3Byb2NfdCAqbWFza3Byb2M7CiAg ICAgICAgaWRlX3F1aXJrcHJvY190ICpxdWlya3Byb2M7CiAgICAgICAgaWRlX3J3X3Byb2NfdCAq cndwcm9jOwogICAgICAgIGlkZV9kbWFwcm9jX3QgKmRtYXByb2M7CiAgICAgICAgdW5zaWduZWQg aW50ICpkbWF0YWJsZV9jcHU7CiAgICAgICAgZG1hX2FkZHJfdCBkbWF0YWJsZV9kbWE7CiAgICAg ICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ190YWJsZTsKICAgICAgICBpbnQgc2dfbmVudHM7CiAg ICAgICAgaW50IHNnX2RtYV9kaXJlY3Rpb247CiAgICAgICAgc3RydWN0IGh3aWZfcyAqbWF0ZTsK ICAgICAgICB1bnNpZ25lZCBsb25nIGRtYV9iYXNlOwogICAgICAgIHVuc2lnbmVkIGRtYV9leHRy YTsKICAgICAgICB1bnNpZ25lZCBsb25nIGNvbmZpZ19kYXRhOwogICAgICAgIHVuc2lnbmVkIGxv bmcgc2VsZWN0X2RhdGE7CiAgICAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpwcm9jOwogICAg ICAgIGludCBpcnE7CiAgICAgICAgYnl0ZSBtYWpvcjsKICAgICAgICBjaGFyIG5hbWVbNl07CiAg ICAgICAgYnl0ZSBpbmRleDsKICAgICAgICBod2lmX2NoaXBzZXRfdCBjaGlwc2V0OwogICAgICAg IHVuc2lnbmVkIG5vcHJvYmUgOiAxOwogICAgICAgIHVuc2lnbmVkIHByZXNlbnQgOiAxOwogICAg ICAgIHVuc2lnbmVkIHNlcmlhbGl6ZWQgOiAxOwogICAgICAgIHVuc2lnbmVkIHNoYXJpbmdfaXJx OiAxOwogICAgICAgIHVuc2lnbmVkIHJlc2V0IDogMTsKICAgICAgICB1bnNpZ25lZCBhdXRvZG1h IDogMTsKICAgICAgICB1bnNpZ25lZCB1ZG1hX2ZvdXIgOiAxOwogICAgICAgIGJ5dGUgY2hhbm5l bDsKCgoKCgoKCiAgICAgICAgYnl0ZSBzdHJhaWdodDg7CiAgICAgICAgdm9pZCAqaHdpZl9kYXRh Owp9IGlkZV9od2lmX3Q7CgoKCgoKdHlwZWRlZiBlbnVtIHsKICAgICAgICBpZGVfc3RvcHBlZCwK ICAgICAgICBpZGVfc3RhcnRlZAp9IGlkZV9zdGFydHN0b3BfdDsKCgoKCnR5cGVkZWYgaWRlX3N0 YXJ0c3RvcF90IChpZGVfaGFuZGxlcl90KShpZGVfZHJpdmVfdCAqKTsKCgoKCgp0eXBlZGVmIGlu dCAoaWRlX2V4cGlyeV90KShpZGVfZHJpdmVfdCAqKTsKCnR5cGVkZWYgc3RydWN0IGh3Z3JvdXBf cyB7CiAgICAgICAgaWRlX2hhbmRsZXJfdCAqaGFuZGxlcjsKICAgICAgICB2b2xhdGlsZSBpbnQg YnVzeTsKICAgICAgICBpbnQgc2xlZXBpbmc7CiAgICAgICAgaWRlX2RyaXZlX3QgKmRyaXZlOwog ICAgICAgIGlkZV9od2lmX3QgKmh3aWY7CiAgICAgICAgc3RydWN0IHJlcXVlc3QgKnJxOwogICAg ICAgIHN0cnVjdCB0aW1lcl9saXN0IHRpbWVyOwogICAgICAgIHN0cnVjdCByZXF1ZXN0IHdycTsK ICAgICAgICB1bnNpZ25lZCBsb25nIHBvbGxfdGltZW91dDsKICAgICAgICBpZGVfZXhwaXJ5X3Qg KmV4cGlyeTsKfSBpZGVfaHdncm91cF90OwojIDUxOCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwp0eXBlZGVm IGludCAoaWRlX3Byb2NzZXRfdCkoaWRlX2RyaXZlX3QgKiwgaW50KTsKdHlwZWRlZiBzdHJ1Y3Qg aWRlX3NldHRpbmdzX3MgewogICAgICAgIGNoYXIgKm5hbWU7CiAgICAgICAgaW50IHJ3OwogICAg ICAgIGludCByZWFkX2lvY3RsOwogICAgICAgIGludCB3cml0ZV9pb2N0bDsKICAgICAgICBpbnQg ZGF0YV90eXBlOwogICAgICAgIGludCBtaW47CiAgICAgICAgaW50IG1heDsKICAgICAgICBpbnQg bXVsX2ZhY3RvcjsKICAgICAgICBpbnQgZGl2X2ZhY3RvcjsKICAgICAgICB2b2lkICpkYXRhOwog ICAgICAgIGlkZV9wcm9jc2V0X3QgKnNldDsKICAgICAgICBpbnQgYXV0b19yZW1vdmU7CiAgICAg ICAgc3RydWN0IGlkZV9zZXR0aW5nc19zICpuZXh0Owp9IGlkZV9zZXR0aW5nc190OwoKdm9pZCBp ZGVfYWRkX3NldHRpbmcoaWRlX2RyaXZlX3QgKmRyaXZlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQg cncsIGludCByZWFkX2lvY3RsLCBpbnQgd3JpdGVfaW9jdGwsIGludCBkYXRhX3R5cGUsIGludCBt aW4sIGludCBtYXgsIGludCBtdWxfZmFjdG9yLCBpbnQgZGl2X2ZhY3Rvciwgdm9pZCAqZGF0YSwg aWRlX3Byb2NzZXRfdCAqc2V0KTsKdm9pZCBpZGVfcmVtb3ZlX3NldHRpbmcoaWRlX2RyaXZlX3Qg KmRyaXZlLCBjaGFyICpuYW1lKTsKaWRlX3NldHRpbmdzX3QgKmlkZV9maW5kX3NldHRpbmdfYnlf bmFtZShpZGVfZHJpdmVfdCAqZHJpdmUsIGNoYXIgKm5hbWUpOwppbnQgaWRlX3JlYWRfc2V0dGlu ZyhpZGVfZHJpdmVfdCAqdCwgaWRlX3NldHRpbmdzX3QgKnNldHRpbmcpOwppbnQgaWRlX3dyaXRl X3NldHRpbmcoaWRlX2RyaXZlX3QgKmRyaXZlLCBpZGVfc2V0dGluZ3NfdCAqc2V0dGluZywgaW50 IHZhbCk7CnZvaWQgaWRlX2FkZF9nZW5lcmljX3NldHRpbmdzKGlkZV9kcml2ZV90ICpkcml2ZSk7 CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICBt b2RlX3QgbW9kZTsKICAgICAgICByZWFkX3Byb2NfdCAqcmVhZF9wcm9jOwogICAgICAgIHdyaXRl X3Byb2NfdCAqd3JpdGVfcHJvYzsKfSBpZGVfcHJvY19lbnRyeV90OwoKCnZvaWQgcHJvY19pZGVf Y3JlYXRlKHZvaWQpOwp2b2lkIHByb2NfaWRlX2Rlc3Ryb3kodm9pZCk7CnZvaWQgZGVzdHJveV9w cm9jX2lkZV9kcml2ZXMoaWRlX2h3aWZfdCAqKTsKdm9pZCBjcmVhdGVfcHJvY19pZGVfaW50ZXJm YWNlcyh2b2lkKTsKdm9pZCBpZGVfYWRkX3Byb2NfZW50cmllcyhzdHJ1Y3QgcHJvY19kaXJfZW50 cnkgKmRpciwgaWRlX3Byb2NfZW50cnlfdCAqcCwgdm9pZCAqZGF0YSk7CnZvaWQgaWRlX3JlbW92 ZV9wcm9jX2VudHJpZXMoc3RydWN0IHByb2NfZGlyX2VudHJ5ICpkaXIsIGlkZV9wcm9jX2VudHJ5 X3QgKnApOwpyZWFkX3Byb2NfdCBwcm9jX2lkZV9yZWFkX2NhcGFjaXR5OwpyZWFkX3Byb2NfdCBw cm9jX2lkZV9yZWFkX2dlb21ldHJ5OwojIDU4NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUv bG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwp0eXBlZGVmIGlu dCAoaWRlX2NsZWFudXBfcHJvYykoaWRlX2RyaXZlX3QgKik7CnR5cGVkZWYgaWRlX3N0YXJ0c3Rv cF90IChpZGVfZG9fcmVxdWVzdF9wcm9jKShpZGVfZHJpdmVfdCAqLCBzdHJ1Y3QgcmVxdWVzdCAq LCB1bnNpZ25lZCBsb25nKTsKdHlwZWRlZiB2b2lkIChpZGVfZW5kX3JlcXVlc3RfcHJvYykoYnl0 ZSwgaWRlX2h3Z3JvdXBfdCAqKTsKdHlwZWRlZiBpbnQgKGlkZV9pb2N0bF9wcm9jKShpZGVfZHJp dmVfdCAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LCB1bnNp Z25lZCBsb25nKTsKdHlwZWRlZiBpbnQgKGlkZV9vcGVuX3Byb2MpKHN0cnVjdCBpbm9kZSAqLCBz dHJ1Y3QgZmlsZSAqLCBpZGVfZHJpdmVfdCAqKTsKdHlwZWRlZiB2b2lkIChpZGVfcmVsZWFzZV9w cm9jKShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKiwgaWRlX2RyaXZlX3QgKik7CnR5cGVk ZWYgaW50IChpZGVfY2hlY2tfbWVkaWFfY2hhbmdlX3Byb2MpKGlkZV9kcml2ZV90ICopOwp0eXBl ZGVmIHZvaWQgKGlkZV9yZXZhbGlkYXRlX3Byb2MpKGlkZV9kcml2ZV90ICopOwp0eXBlZGVmIHZv aWQgKGlkZV9wcmVfcmVzZXRfcHJvYykoaWRlX2RyaXZlX3QgKik7CnR5cGVkZWYgdW5zaWduZWQg bG9uZyAoaWRlX2NhcGFjaXR5X3Byb2MpKGlkZV9kcml2ZV90ICopOwp0eXBlZGVmIGlkZV9zdGFy dHN0b3BfdCAoaWRlX3NwZWNpYWxfcHJvYykoaWRlX2RyaXZlX3QgKik7CnR5cGVkZWYgdm9pZCAo aWRlX3NldHRpbmdfcHJvYykoaWRlX2RyaXZlX3QgKik7Cgp0eXBlZGVmIHN0cnVjdCBpZGVfZHJp dmVyX3MgewogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgY29uc3QgY2hhciAqdmVy c2lvbjsKICAgICAgICBieXRlIG1lZGlhOwogICAgICAgIHVuc2lnbmVkIGJ1c3kgOiAxOwogICAg ICAgIHVuc2lnbmVkIHN1cHBvcnRzX2RtYSA6IDE7CiAgICAgICAgdW5zaWduZWQgc3VwcG9ydHNf ZHNjX292ZXJsYXAgOiAxOwogICAgICAgIGlkZV9jbGVhbnVwX3Byb2MgKmNsZWFudXA7CiAgICAg ICAgaWRlX2RvX3JlcXVlc3RfcHJvYyAqZG9fcmVxdWVzdDsKICAgICAgICBpZGVfZW5kX3JlcXVl c3RfcHJvYyAqZW5kX3JlcXVlc3Q7CiAgICAgICAgaWRlX2lvY3RsX3Byb2MgKmlvY3RsOwogICAg ICAgIGlkZV9vcGVuX3Byb2MgKm9wZW47CiAgICAgICAgaWRlX3JlbGVhc2VfcHJvYyAqcmVsZWFz ZTsKICAgICAgICBpZGVfY2hlY2tfbWVkaWFfY2hhbmdlX3Byb2MgKm1lZGlhX2NoYW5nZTsKICAg ICAgICBpZGVfcmV2YWxpZGF0ZV9wcm9jICpyZXZhbGlkYXRlOwogICAgICAgIGlkZV9wcmVfcmVz ZXRfcHJvYyAqcHJlX3Jlc2V0OwogICAgICAgIGlkZV9jYXBhY2l0eV9wcm9jICpjYXBhY2l0eTsK ICAgICAgICBpZGVfc3BlY2lhbF9wcm9jICpzcGVjaWFsOwogICAgICAgIGlkZV9wcm9jX2VudHJ5 X3QgKnByb2M7Cn0gaWRlX2RyaXZlcl90OwojIDYyOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwp0eXBlZGVm IGludCAoaWRlX21vZHVsZV9pbml0X3Byb2MpKHZvaWQpOwoKdHlwZWRlZiBzdHJ1Y3QgaWRlX21v ZHVsZV9zIHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICBpZGVfbW9kdWxlX2luaXRfcHJvYyAq aW5pdDsKICAgICAgICB2b2lkICppbmZvOwogICAgICAgIHN0cnVjdCBpZGVfbW9kdWxlX3MgKm5l eHQ7Cn0gaWRlX21vZHVsZV90OwojIDY0NyAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9j YWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9pZGUuaCIgMwpleHRlcm4gaWRlX2h3 aWZfdCBpZGVfaHdpZnNbXTsKZXh0ZXJuIGlkZV9tb2R1bGVfdCAqaWRlX21vZHVsZXM7CmV4dGVy biBpZGVfbW9kdWxlX3QgKmlkZV9wcm9iZTsKCgoKCgoKCiMgMSAiL29wdC9mc3AvaTU4Ni1wYy1s aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ibGsuaCIgMSAz CgoKCgojIDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvbG9ja3MuaCIgMSAzCgoKCgoKCgojIDEgIi9vcHQvZnNwL2k1ODYt cGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGFnZW1h cC5oIiAxIDMKIyAxNCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1s aW51eC9zeXMtaW5jbHVkZS9saW51eC9wYWdlbWFwLmgiIDMKIyAxICIvb3B0L2ZzcC9pNTg2LXBj LWxpbnV4LWdudS9sb2NhbC9saWIvZ2NjLWxpYi9wb3dlcnBjLWxpbnV4LzMuMS9pbmNsdWRlL2Fz bS9zeXN0ZW0uaCIgMSAzCiMgMTUgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bv d2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvcGFnZW1hcC5oIiAyIDMKIyAxICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9w Z3RhYmxlLmgiIDEgMwojIDE2ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dl cnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L3BhZ2VtYXAuaCIgMiAzCiMgMSAiL29wdC9mc3Av aTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9o aWdobWVtLmgiIDEgMwoKCgoKIyAxICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9w b3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiIDEgMwoKCgoKCgojIDEgIi9v cHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUv YXNtL3Byb2Nlc3Nvci5oIiAxIDMKIyA4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2Nh bC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiIDIgMwojIDI2ICIvb3B0 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2Fz bS9wZ2FsbG9jLmgiIDMKZXh0ZXJuIHN0cnVjdCBwZ3RhYmxlX2NhY2hlX3N0cnVjdCB7CiAgICAg ICAgdW5zaWduZWQgbG9uZyAqcGdkX2NhY2hlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnB0ZV9j YWNoZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBndGFibGVfY2FjaGVfc3o7Cn0gcXVpY2tsaXN0 czsKCgoKCgoKCmV4dGVybiB1bnNpZ25lZCBsb25nICp6ZXJvX2NhY2hlOwpleHRlcm4gYXRvbWlj X3QgemVyb19zejsKZXh0ZXJuIGF0b21pY190IHplcm9wYWdlX2hpdHM7CmV4dGVybiBhdG9taWNf dCB6ZXJvcGFnZV9jYWxsczsKZXh0ZXJuIGF0b21pY190IHplcm90b3RhbDsKIyA1MSAiL29wdC9m c3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9hc20v cGdhbGxvYy5oIiAzCmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF96ZXJvX3BhZ2VfZmFzdCh2b2lk KTsKCmV4dGVybiB2b2lkIF9fYmFkX3B0ZShwbWRfdCAqcG1kKTsKCgpleHRlcm4gX19pbmxpbmVf XyBwbWRfdCAqZ2V0X3BtZF9mYXN0KHZvaWQpCnsKICAgICAgICByZXR1cm4gKHBtZF90ICopMDsK fQoKZXh0ZXJuIF9faW5saW5lX18gdm9pZCBmcmVlX3BtZF9mYXN0KHBtZF90ICpwbWQpCnsKfQoK ZXh0ZXJuIF9faW5saW5lX18gdm9pZCBmcmVlX3BtZF9zbG93KHBtZF90ICpwbWQpCnsKfQoKCgoK CmV4dGVybiBpbmxpbmUgdm9pZCBwbWRfZnJlZShwbWRfdCAqIHBtZCkKewp9CgpleHRlcm4gaW5s aW5lIHBtZF90ICogcG1kX2FsbG9jKHBnZF90ICogcGdkLCB1bnNpZ25lZCBsb25nIGFkZHJlc3Mp CnsKICAgICAgICByZXR1cm4gKHBtZF90ICopIHBnZDsKfQoKCgoKCmV4dGVybiBfX2lubGluZV9f IHBnZF90ICpnZXRfcGdkX3Nsb3codm9pZCkKewogICAgICAgIHBnZF90ICpyZXQsICppbml0OwoK ICAgICAgICBpZiAoIChyZXQgPSAocGdkX3QgKilfX2dldF9mcmVlX3BhZ2VzKCgoMHgwMiB8IDB4 MDEgfCAweDA0KSksMCkpICE9ICgodm9pZCAqKTApICkKICAgICAgICAgICAgICAgIG1lbXNldCAo cmV0LCAwLCAoKDB4ODAwMDAwMDBVTCkgLyAoMVVMIDw8IDIyKSkgKiBzaXplb2YocGdkX3QpKTsK ICAgICAgICBpZiAocmV0KSB7CiAgICAgICAgICAgICAgICBpbml0ID0gKCgmaW5pdF9tbSktPnBn ZCArICgoMCkgPj4gMjIpKTsKICAgICAgICAgICAgICAgIG1lbWNweSAocmV0ICsgKCgweDgwMDAw MDAwVUwpIC8gKDFVTCA8PCAyMikpLCBpbml0ICsgKCgweDgwMDAwMDAwVUwpIC8gKDFVTCA8PCAy MikpLAogICAgICAgICAgICAgICAgICAgICAgICAoMTAyNCAtICgoMHg4MDAwMDAwMFVMKSAvICgx VUwgPDwgMjIpKSkgKiBzaXplb2YocGdkX3QpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJl dDsKfQoKZXh0ZXJuIF9faW5saW5lX18gcGdkX3QgKmdldF9wZ2RfZmFzdCh2b2lkKQp7CiAgICAg ICAgdW5zaWduZWQgbG9uZyAqcmV0OwoKICAgICAgICBpZiAoKHJldCA9IChxdWlja2xpc3RzLnBn ZF9jYWNoZSkpICE9ICgodm9pZCAqKTApKSB7CiAgICAgICAgICAgICAgICAocXVpY2tsaXN0cy5w Z2RfY2FjaGUpID0gKHVuc2lnbmVkIGxvbmcgKikoKnJldCk7CiAgICAgICAgICAgICAgICByZXRb MF0gPSAwOwogICAgICAgICAgICAgICAgKHF1aWNrbGlzdHMucGd0YWJsZV9jYWNoZV9zeiktLTsK ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIHJldCA9ICh1bnNpZ25lZCBsb25nICopZ2V0 X3BnZF9zbG93KCk7CiAgICAgICAgcmV0dXJuIChwZ2RfdCAqKXJldDsKfQoKZXh0ZXJuIF9faW5s aW5lX18gdm9pZCBmcmVlX3BnZF9mYXN0KHBnZF90ICpwZ2QpCnsKICAgICAgICAqKHVuc2lnbmVk IGxvbmcgKiopcGdkID0gKHF1aWNrbGlzdHMucGdkX2NhY2hlKTsKICAgICAgICAocXVpY2tsaXN0 cy5wZ2RfY2FjaGUpID0gKHVuc2lnbmVkIGxvbmcgKikgcGdkOwogICAgICAgIChxdWlja2xpc3Rz LnBndGFibGVfY2FjaGVfc3opKys7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgZnJlZV9wZ2Rf c2xvdyhwZ2RfdCAqcGdkKQp7CiAgICAgICAgZnJlZV9wYWdlcygoKHVuc2lnbmVkIGxvbmcpcGdk KSwwKTsKfQoKZXh0ZXJuIHB0ZV90ICpnZXRfcHRlX3Nsb3cocG1kX3QgKnBtZCwgdW5zaWduZWQg bG9uZyBhZGRyZXNzX3ByZWFkanVzdGVkKTsKCmV4dGVybiBfX2lubGluZV9fIHB0ZV90ICpnZXRf cHRlX2Zhc3Qodm9pZCkKewogICAgICAgIHVuc2lnbmVkIGxvbmcgKnJldDsKCiAgICAgICAgaWYg KChyZXQgPSAocXVpY2tsaXN0cy5wdGVfY2FjaGUpKSAhPSAoKHZvaWQgKikwKSkgewogICAgICAg ICAgICAgICAgKHF1aWNrbGlzdHMucHRlX2NhY2hlKSA9ICh1bnNpZ25lZCBsb25nICopKCpyZXQp OwogICAgICAgICAgICAgICAgcmV0WzBdID0gMDsKICAgICAgICAgICAgICAgIChxdWlja2xpc3Rz LnBndGFibGVfY2FjaGVfc3opLS07CiAgICAgICAgfQogICAgICAgIHJldHVybiAocHRlX3QgKily ZXQ7Cn0KCmV4dGVybiBfX2lubGluZV9fIHZvaWQgZnJlZV9wdGVfZmFzdChwdGVfdCAqcHRlKQp7 CiAgICAgICAgKih1bnNpZ25lZCBsb25nICoqKXB0ZSA9IChxdWlja2xpc3RzLnB0ZV9jYWNoZSk7 CiAgICAgICAgKHF1aWNrbGlzdHMucHRlX2NhY2hlKSA9ICh1bnNpZ25lZCBsb25nICopIHB0ZTsK ICAgICAgICAocXVpY2tsaXN0cy5wZ3RhYmxlX2NhY2hlX3N6KSsrOwp9CgpleHRlcm4gX19pbmxp bmVfXyB2b2lkIGZyZWVfcHRlX3Nsb3cocHRlX3QgKnB0ZSkKewogICAgICAgIGZyZWVfcGFnZXMo KCh1bnNpZ25lZCBsb25nKXB0ZSksMCk7Cn0KCgoKCgoKZXh0ZXJuIGlubGluZSBwdGVfdCAqIHB0 ZV9hbGxvYyhwbWRfdCAqIHBtZCwgdW5zaWduZWQgbG9uZyBhZGRyZXNzKQp7CiAgICAgICAgYWRk cmVzcyA9IChhZGRyZXNzID4+IDEyKSAmICgxMDI0IC0gMSk7CiAgICAgICAgaWYgKCghKCgqcG1k KS5wbWQpKSkgewogICAgICAgICAgICAgICAgcHRlX3QgKiBwYWdlID0gKHB0ZV90ICopIGdldF9w dGVfZmFzdCgpOwoKICAgICAgICAgICAgICAgIGlmICghcGFnZSkKICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGdldF9wdGVfc2xvdyhwbWQsIGFkZHJlc3MpOwogICAgICAgICAgICAgICAg KCgqcG1kKS5wbWQpID0gKHVuc2lnbmVkIGxvbmcpIHBhZ2U7CiAgICAgICAgICAgICAgICByZXR1 cm4gcGFnZSArIGFkZHJlc3M7CiAgICAgICAgfQogICAgICAgIGlmICgoKCgoKnBtZCkucG1kKSAm IH4ofigoMVVMIDw8IDEyKS0xKSkpICE9IDApKSB7CiAgICAgICAgICAgICAgICBfX2JhZF9wdGUo cG1kKTsKICAgICAgICAgICAgICAgIHJldHVybiAoKHZvaWQgKikwKTsKICAgICAgICB9CiAgICAg ICAgcmV0dXJuIChwdGVfdCAqKSAoKCgqcG1kKS5wbWQpKSArIGFkZHJlc3M7Cn0KCmV4dGVybiBp bnQgZG9fY2hlY2tfcGd0X2NhY2hlKGludCwgaW50KTsKIyA2ICIvb3B0L2ZzcC9pNTg2LXBjLWxp bnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2hpZ2htZW0uaCIg MiAzCiMgMzEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvaGlnaG1lbS5oIiAzCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50 IG5yX2ZyZWVfaGlnaHBhZ2VzKHZvaWQpIHsgcmV0dXJuIDA7IH0KCnN0YXRpYyBpbmxpbmUgdm9p ZCAqa21hcChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gKChwYWdlKS0+dmlydHVhbCk7IH0K IyA0NiAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMt aW5jbHVkZS9saW51eC9oaWdobWVtLmgiIDMKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX3VzZXJf aGlnaHBhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgdmFkZHIpCnsKICAgICAg ICBjbGVhcl9wYWdlKGttYXAocGFnZSkpOwogICAgICAgIGRvIHsgfSB3aGlsZSAoMCk7Cn0KCnN0 YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9oaWdocGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKewogICAg ICAgIGNsZWFyX3BhZ2Uoa21hcChwYWdlKSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoK c3RhdGljIGlubGluZSB2b2lkIG1lbWNsZWFyX2hpZ2hwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCB1 bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKewogICAgICAgIGNoYXIgKmth ZGRyOwoKICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+ICgxVUwgPDwgMTIpKQogICAgICAgICAg ICAgICAgZG8geyBwcmludGsoImtlcm5lbCBCVUcgYXQgJXM6JWQhXG4iLCAiL29wdC9mc3AvaTU4 Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9oaWdo bWVtLmgiLCA2Myk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIubG9uZyAweDAiKTsgfSB3aGlsZSAo MCk7CiAgICAgICAga2FkZHIgPSBrbWFwKHBhZ2UpOwogICAgICAgIG1lbXNldChrYWRkciArIG9m ZnNldCwgMCwgc2l6ZSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKfQoKCgoKc3RhdGljIGlu bGluZSB2b2lkIG1lbWNsZWFyX2hpZ2hwYWdlX2ZsdXNoKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNp Z25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKewogICAgICAgIGNoYXIgKmthZGRy OwoKICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZSA+ICgxVUwgPDwgMTIpKQogICAgICAgICAgICAg ICAgZG8geyBwcmludGsoImtlcm5lbCBCVUcgYXQgJXM6JWQhXG4iLCAiL29wdC9mc3AvaTU4Ni1w Yy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9oaWdobWVt LmgiLCA3Nyk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIubG9uZyAweDAiKTsgfSB3aGlsZSAoMCk7 CiAgICAgICAga2FkZHIgPSBrbWFwKHBhZ2UpOwogICAgICAgIG1lbXNldChrYWRkciArIG9mZnNl dCwgMCwgc2l6ZSk7CiAgICAgICAgZmx1c2hfcGFnZV90b19yYW0ocGFnZSk7CiAgICAgICAgZG8g eyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNvcHlfdXNlcl9oaWdocGFnZShz dHJ1Y3QgcGFnZSAqdG8sIHN0cnVjdCBwYWdlICpmcm9tLCB1bnNpZ25lZCBsb25nIHZhZGRyKQp7 CiAgICAgICAgY2hhciAqdmZyb20sICp2dG87CgogICAgICAgIHZmcm9tID0ga21hcChmcm9tKTsK ICAgICAgICB2dG8gPSBrbWFwKHRvKTsKICAgICAgICBjb3B5X3BhZ2UodnRvLCB2ZnJvbSk7CiAg ICAgICAgZG8geyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDApOwp9CgpzdGF0 aWMgaW5saW5lIHZvaWQgY29weV9oaWdocGFnZShzdHJ1Y3QgcGFnZSAqdG8sIHN0cnVjdCBwYWdl ICpmcm9tKQp7CiAgICAgICAgY2hhciAqdmZyb20sICp2dG87CgogICAgICAgIHZmcm9tID0ga21h cChmcm9tKTsKICAgICAgICB2dG8gPSBrbWFwKHRvKTsKICAgICAgICBjb3B5X3BhZ2UodnRvLCB2 ZnJvbSk7CiAgICAgICAgZG8geyB9IHdoaWxlICgwKTsKICAgICAgICBkbyB7IH0gd2hpbGUgKDAp Owp9CiMgMTcgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgv c3lzLWluY2x1ZGUvbGludXgvcGFnZW1hcC5oIiAyIDMKIyA0MSAiL29wdC9mc3AvaTU4Ni1wYy1s aW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9wYWdlbWFwLmgi IDMKZXh0ZXJuIHVuc2lnbmVkIGludCBwYWdlX2hhc2hfYml0czsKCgoKZXh0ZXJuIGF0b21pY190 IHBhZ2VfY2FjaGVfc2l6ZTsKZXh0ZXJuIHN0cnVjdCBwYWdlICoqcGFnZV9oYXNoX3RhYmxlOwoK ZXh0ZXJuIHZvaWQgcGFnZV9jYWNoZV9pbml0KHVuc2lnbmVkIGxvbmcpOwojIDU5ICIvb3B0L2Zz cC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4 L3BhZ2VtYXAuaCIgMwpleHRlcm4gaW5saW5lIHVuc2lnbmVkIGxvbmcgX3BhZ2VfaGFzaGZuKHN0 cnVjdCBhZGRyZXNzX3NwYWNlICogbWFwcGluZywgdW5zaWduZWQgbG9uZyBpbmRleCkKewoKCiAg ICAgICAgcmV0dXJuICgoKCgodW5zaWduZWQgbG9uZykgbWFwcGluZykvKHNpemVvZihzdHJ1Y3Qg aW5vZGUpICYgfiAoc2l6ZW9mKHN0cnVjdCBpbm9kZSkgLSAxKSkpK2luZGV4KSsoKCgoKHVuc2ln bmVkIGxvbmcpIG1hcHBpbmcpLyhzaXplb2Yoc3RydWN0IGlub2RlKSAmIH4gKHNpemVvZihzdHJ1 Y3QgaW5vZGUpIC0gMSkpKStpbmRleCk+PihwYWdlX2hhc2hfYml0cykpKSAmICgoMSA8PCAocGFn ZV9oYXNoX2JpdHMpKS0xKTsKCgp9CgoKCmV4dGVybiBzdHJ1Y3QgcGFnZSAqIF9fZmluZF9nZXRf cGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBzdHJ1Y3QgcGFnZSAqKmhhc2gp OwpleHRlcm4gc3RydWN0IHBhZ2UgKiBfX2ZpbmRfbG9ja19wYWdlIChzdHJ1Y3QgYWRkcmVzc19z cGFjZSAqIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBpbmRleCwgc3RydWN0IHBhZ2UgKipoYXNoKTsKZXh0ZXJuIHZvaWQgbG9ja19wYWdlKHN0 cnVjdCBwYWdlICpwYWdlKTsKCgoKZXh0ZXJuIHZvaWQgX19hZGRfcGFnZV90b19oYXNoX3F1ZXVl KHN0cnVjdCBwYWdlICogcGFnZSwgc3RydWN0IHBhZ2UgKipwKTsKCmV4dGVybiB2b2lkIGFkZF90 b19wYWdlX2NhY2hlKHN0cnVjdCBwYWdlICogcGFnZSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1h cHBpbmcsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwpleHRlcm4gdm9pZCBhZGRfdG9fcGFnZV9jYWNo ZV9sb2NrZWQoc3RydWN0IHBhZ2UgKiBwYWdlLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGlu ZywgdW5zaWduZWQgbG9uZyBpbmRleCk7CgpleHRlcm4gdm9pZCBfX193YWl0X29uX3BhZ2Uoc3Ry dWN0IHBhZ2UgKik7CgpleHRlcm4gaW5saW5lIHZvaWQgd2FpdF9vbl9wYWdlKHN0cnVjdCBwYWdl ICogcGFnZSkKewogICAgICAgIGlmICh0ZXN0X2JpdCgwLCAmKHBhZ2UpLT5mbGFncykpCiAgICAg ICAgICAgICAgICBfX193YWl0X29uX3BhZ2UocGFnZSk7Cn0KCmV4dGVybiBzdHJ1Y3QgcGFnZSAq IGdyYWJfY2FjaGVfcGFnZSAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgdW5zaWduZWQgbG9uZyk7 Cgp0eXBlZGVmIGludCBmaWxsZXJfdCh2b2lkICosIHN0cnVjdCBwYWdlKik7CgpleHRlcm4gc3Ry dWN0IHBhZ2UgKnJlYWRfY2FjaGVfcGFnZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCB1bnNpZ25l ZCBsb25nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxlcl90ICosIHZvaWQg Kik7CiMgOSAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1nbnUvbG9jYWwvcG93ZXJwYy1saW51eC9z eXMtaW5jbHVkZS9saW51eC9sb2Nrcy5oIiAyIDMKCgoKCgoKZXh0ZXJuIHZvaWQgX193YWl0X29u X2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CgpleHRlcm4gaW5saW5lIHZvaWQgd2FpdF9v bl9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBpZiAodGVzdF9iaXQo MiwgJmJoLT5iX3N0YXRlKSkKICAgICAgICAgICAgICAgIF9fd2FpdF9vbl9idWZmZXIoYmgpOwp9 CgpleHRlcm4gaW5saW5lIHZvaWQgbG9ja19idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgp CnsKICAgICAgICB3aGlsZSAodGVzdF9hbmRfc2V0X2JpdCgyLCAmYmgtPmJfc3RhdGUpKQogICAg ICAgICAgICAgICAgX193YWl0X29uX2J1ZmZlcihiaCk7Cn0KCmV4dGVybiBpbmxpbmUgdm9pZCB1 bmxvY2tfYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCnsKICAgICAgICBjbGVhcl9iaXQo MiwgJmJoLT5iX3N0YXRlKTsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1l bW9yeSIpOwogICAgICAgIGlmICh3YWl0cXVldWVfYWN0aXZlKCZiaC0+Yl93YWl0KSkKICAgICAg ICAgICAgICAgIF9fd2FrZV91cCgoJmJoLT5iX3dhaXQpLDIgfCAxLCAxKTsKfQoKCgoKCgpleHRl cm4gdm9pZCBfX3dhaXRfb25fc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICopOwoKZXh0ZXJuIGlu bGluZSB2b2lkIHdhaXRfb25fc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICogc2IpCnsKICAgICAg ICBpZiAoc2ItPnNfbG9jaykKICAgICAgICAgICAgICAgIF9fd2FpdF9vbl9zdXBlcihzYik7Cn0K CmV4dGVybiBpbmxpbmUgdm9pZCBsb2NrX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiKQp7 CiAgICAgICAgaWYgKHNiLT5zX2xvY2spCiAgICAgICAgICAgICAgICBfX3dhaXRfb25fc3VwZXIo c2IpOwogICAgICAgIHNiLT5zX2xvY2sgPSAxOwp9CgpleHRlcm4gaW5saW5lIHZvaWQgdW5sb2Nr X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqIHNiKQp7CiAgICAgICAgc2ItPnNfbG9jayA9IDA7 CgoKCgogICAgICAgIGlmICh3YWl0cXVldWVfYWN0aXZlKCZzYi0+c193YWl0KSkKICAgICAgICAg ICAgICAgIF9fd2FrZV91cCgoJnNiLT5zX3dhaXQpLDIgfCAxLCAxKTsKfQojIDYgIi9vcHQvZnNw L2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgv YmxrLmgiIDIgMwojIDE0ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBj LWxpbnV4L3N5cy1pbmNsdWRlL2xpbnV4L2Jsay5oIiAzCmV4dGVybiBzcGlubG9ja190IGlvX3Jl cXVlc3RfbG9jazsKCgoKCmV4dGVybiBpbnQgaXNwMTZfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBj ZHUzMWFfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBhY3NpX2luaXQodm9pZCk7CmV4dGVybiBpbnQg bWNkX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbWNkeF9pbml0KHZvaWQpOwpleHRlcm4gaW50IHNi cGNkX2luaXQodm9pZCk7CmV4dGVybiBpbnQgYXp0Y2RfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBz b255NTM1X2luaXQodm9pZCk7CmV4dGVybiBpbnQgZ3NjZF9pbml0KHZvaWQpOwpleHRlcm4gaW50 IGNtMjA2X2luaXQodm9pZCk7CmV4dGVybiBpbnQgb3B0Y2RfaW5pdCh2b2lkKTsKZXh0ZXJuIGlu dCBzamNkX2luaXQodm9pZCk7CmV4dGVybiBpbnQgY2RpX2luaXQodm9pZCk7CmV4dGVybiBpbnQg aGRfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBpZGVfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCB4ZF9p bml0KHZvaWQpOwpleHRlcm4gaW50IG1mbV9pbml0KHZvaWQpOwpleHRlcm4gaW50IGxvb3BfaW5p dCh2b2lkKTsKZXh0ZXJuIGludCBtZF9pbml0KHZvaWQpOwpleHRlcm4gaW50IGFwX2luaXQodm9p ZCk7CmV4dGVybiBpbnQgZGR2X2luaXQodm9pZCk7CmV4dGVybiBpbnQgejJfaW5pdCh2b2lkKTsK ZXh0ZXJuIGludCBzd2ltM19pbml0KHZvaWQpOwpleHRlcm4gaW50IHN3aW1pb3BfaW5pdCh2b2lk KTsKZXh0ZXJuIGludCBhbWlnYV9mbG9wcHlfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBhdGFyaV9m bG9wcHlfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBuYmRfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBl el9pbml0KHZvaWQpOwpleHRlcm4gaW50IGJwY2RfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwczJl c2RpX2luaXQodm9pZCk7CmV4dGVybiBpbnQganNmZF9pbml0KHZvaWQpOwoKCgoKCgpleHRlcm4g dm9pZCBzZXRfZGV2aWNlX3JvKGtkZXZfdCBkZXYsaW50IGZsYWcpOwp2b2lkIGFkZF9ibGtkZXZf cmFuZG9tbmVzcyhpbnQgbWFqb3IpOwoKZXh0ZXJuIGludCBmbG9wcHlfaW5pdCh2b2lkKTsKZXh0 ZXJuIHZvaWQgcmRfbG9hZCh2b2lkKTsKZXh0ZXJuIGludCByZF9pbml0KHZvaWQpOwpleHRlcm4g aW50IHJkX2RvbG9hZDsKZXh0ZXJuIGludCByZF9wcm9tcHQ7CmV4dGVybiBpbnQgcmRfaW1hZ2Vf c3RhcnQ7CgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW5pdHJkX3N0YXJ0LGluaXRyZF9lbmQ7 CmV4dGVybiBpbnQgbW91bnRfaW5pdHJkOwpleHRlcm4gaW50IGluaXRyZF9iZWxvd19zdGFydF9v azsKdm9pZCBpbml0cmRfaW5pdCh2b2lkKTsKIyA4OCAiL29wdC9mc3AvaTU4Ni1wYy1saW51eC1n bnUvbG9jYWwvcG93ZXJwYy1saW51eC9zeXMtaW5jbHVkZS9saW51eC9ibGsuaCIgMwpzdGF0aWMg aW5saW5lIHZvaWQgYmxrZGV2X2RlcXVldWVfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdCAqIHJlcSkK ewogICAgICAgIGxpc3RfZGVsKCZyZXEtPnF1ZXVlKTsKfQoKaW50IGVuZF90aGF0X3JlcXVlc3Rf Zmlyc3Qoc3RydWN0IHJlcXVlc3QgKnJlcSwgaW50IHVwdG9kYXRlLCBjaGFyICpuYW1lKTsKdm9p ZCBlbmRfdGhhdF9yZXF1ZXN0X2xhc3Qoc3RydWN0IHJlcXVlc3QgKnJlcSk7CiMgNjU4ICIvb3B0 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp bnV4L2lkZS5oIiAyIDMKCnZvaWQgaWRlX2VuZF9yZXF1ZXN0KGJ5dGUgdXB0b2RhdGUsIGlkZV9o d2dyb3VwX3QgKmh3Z3JvdXApOwoKCgoKCnZvaWQgaWRlX2lucHV0X2RhdGEgKGlkZV9kcml2ZV90 ICpkcml2ZSwgdm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBpbnQgd2NvdW50KTsKdm9pZCBpZGVfb3V0 cHV0X2RhdGEgKGlkZV9kcml2ZV90ICpkcml2ZSwgdm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBpbnQg d2NvdW50KTsKCgoKCgp2b2lkIGF0YXBpX2lucHV0X2J5dGVzIChpZGVfZHJpdmVfdCAqZHJpdmUs IHZvaWQgKmJ1ZmZlciwgdW5zaWduZWQgaW50IGJ5dGVjb3VudCk7CnZvaWQgYXRhcGlfb3V0cHV0 X2J5dGVzIChpZGVfZHJpdmVfdCAqZHJpdmUsIHZvaWQgKmJ1ZmZlciwgdW5zaWduZWQgaW50IGJ5 dGVjb3VudCk7CgoKCgoKdm9pZCBpZGVfc2V0X2hhbmRsZXIgKGlkZV9kcml2ZV90ICpkcml2ZSwg aWRlX2hhbmRsZXJfdCAqaGFuZGxlciwgdW5zaWduZWQgaW50IHRpbWVvdXQsIGlkZV9leHBpcnlf dCAqZXhwaXJ5KTsKCgoKCmJ5dGUgaWRlX2R1bXBfc3RhdHVzIChpZGVfZHJpdmVfdCAqZHJpdmUs IGNvbnN0IGNoYXIgKm1zZywgYnl0ZSBzdGF0KTsKCgoKCgppZGVfc3RhcnRzdG9wX3QgaWRlX2Vy cm9yIChpZGVfZHJpdmVfdCAqZHJpdmUsIGNvbnN0IGNoYXIgKm1zZywgYnl0ZSBzdGF0KTsKCgoK Cgp2b2lkIGlkZV9jbWQoaWRlX2RyaXZlX3QgKmRyaXZlLCBieXRlIGNtZCwgYnl0ZSBuc2VjdCwg aWRlX2hhbmRsZXJfdCAqaGFuZGxlcik7CgoKCgoKCgp2b2lkIGlkZV9maXhzdHJpbmcgKGJ5dGUg KnMsIGNvbnN0IGludCBieXRlY291bnQsIGNvbnN0IGludCBieXRlc3dhcCk7CiMgNzE0ICIvb3B0 L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5cy1pbmNsdWRlL2xp bnV4L2lkZS5oIiAzCmludCBpZGVfd2FpdF9zdGF0IChpZGVfc3RhcnRzdG9wX3QgKnN0YXJ0c3Rv cCwgaWRlX2RyaXZlX3QgKmRyaXZlLCBieXRlIGdvb2QsIGJ5dGUgYmFkLCB1bnNpZ25lZCBsb25n IHRpbWVvdXQpOwoKaW50IGlkZV93YWl0X25vZXJyIChpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5dGUg Z29vZCwgYnl0ZSBiYWQsIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CgoKCgoKaW50IGlkZV94bGF0 ZV8xMDI0IChrZGV2X3QsIGludCwgaW50LCBjb25zdCBjaGFyICopOwoKCgoKaWRlX2RyaXZlX3Qg KmdldF9pbmZvX3B0ciAoa2Rldl90IGlfcmRldik7CgoKCgp1bnNpZ25lZCBsb25nIGN1cnJlbnRf Y2FwYWNpdHkgKGlkZV9kcml2ZV90ICpkcml2ZSk7CgoKCgoKaWRlX3N0YXJ0c3RvcF90IGlkZV9k b19yZXNldCAoaWRlX2RyaXZlX3QgKik7CgoKCgp2b2lkIGlkZV9pbml0X2RyaXZlX2NtZCAoc3Ry dWN0IHJlcXVlc3QgKnJxKTsKCgoKCnR5cGVkZWYgZW51bSB7CiAgICAgICAgaWRlX3dhaXQsCiAg ICAgICAgaWRlX25leHQsCiAgICAgICAgaWRlX3ByZWVtcHQsCiAgICAgICAgaWRlX2VuZAp9IGlk ZV9hY3Rpb25fdDsKIyA3ODAgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2FsL3Bvd2Vy cGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDMKaW50IGlkZV9kb19kcml2ZV9jbWQg KGlkZV9kcml2ZV90ICpkcml2ZSwgc3RydWN0IHJlcXVlc3QgKnJxLCBpZGVfYWN0aW9uX3QgYWN0 aW9uKTsKCgoKCgp2b2lkIGlkZV9lbmRfZHJpdmVfY21kIChpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5 dGUgc3RhdCwgYnl0ZSBlcnIpOwoKCgoKaW50IGlkZV93YWl0X2NtZCAoaWRlX2RyaXZlX3QgKmRy aXZlLCBpbnQgY21kLCBpbnQgbnNlY3QsIGludCBmZWF0dXJlLCBpbnQgc2VjdG9ycywgYnl0ZSAq YnVmKTsKaW50IGlkZV93YWl0X2NtZF90YXNrIChpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5dGUgKmJ1 Zik7Cgp2b2lkIGlkZV9kZWxheV81MG1zICh2b2lkKTsKaW50IHN5c3RlbV9idXNfY2xvY2sodm9p ZCk7CgpieXRlIGlkZV9hdXRvX3JlZHVjZV94ZmVyIChpZGVfZHJpdmVfdCAqZHJpdmUpOwppbnQg aWRlX2RyaXZlaWRfdXBkYXRlIChpZGVfZHJpdmVfdCAqZHJpdmUpOwppbnQgaWRlX2F0YTY2X2No ZWNrIChpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5dGUgY21kLCBieXRlIG5zZWN0LCBieXRlIGZlYXR1 cmUpOwppbnQgaWRlX2NvbmZpZ19kcml2ZV9zcGVlZCAoaWRlX2RyaXZlX3QgKmRyaXZlLCBieXRl IHNwZWVkKTsKYnl0ZSBlaWdodHlfbmludHlfdGhyZWUgKGlkZV9kcml2ZV90ICpkcml2ZSk7Cmlu dCBzZXRfdHJhbnNmZXIgKGlkZV9kcml2ZV90ICpkcml2ZSwgYnl0ZSBjbWQsIGJ5dGUgbnNlY3Qs IGJ5dGUgZmVhdHVyZSk7CgoKCgoKCgppbnQgaWRlX3N5c3RlbV9idXNfc3BlZWQgKHZvaWQpOwoK CgoKCmludCBpZGVfbXVsdHdyaXRlIChpZGVfZHJpdmVfdCAqZHJpdmUsIHVuc2lnbmVkIGludCBt Y291bnQpOwoKCgoKCnZvaWQgaWRlX3N0YWxsX3F1ZXVlIChpZGVfZHJpdmVfdCAqZHJpdmUsIHVu c2lnbmVkIGxvbmcgdGltZW91dCk7CgoKCgpyZXF1ZXN0X3F1ZXVlX3QgKmlkZV9nZXRfcXVldWUg KGtkZXZfdCBkZXYpOwoKCgoKCgppbnQgZHJpdmVfaXNfZmxhc2hjYXJkIChpZGVfZHJpdmVfdCAq ZHJpdmUpOwoKaW50IGlkZV9zcGluX3dhaXRfaHdncm91cCAoaWRlX2RyaXZlX3QgKmRyaXZlKTsK dm9pZCBpZGVfdGltZXJfZXhwaXJ5ICh1bnNpZ25lZCBsb25nIGRhdGEpOwp2b2lkIGlkZV9pbnRy IChpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKdm9pZCBkb19p ZGVfcmVxdWVzdCAocmVxdWVzdF9xdWV1ZV90ICogcSk7CnZvaWQgaWRlX2luaXRfc3ViZHJpdmVy cyAodm9pZCk7CgoKZXh0ZXJuIHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyBpZGVfZm9w c1tdOwpleHRlcm4gaWRlX3Byb2NfZW50cnlfdCBnZW5lcmljX3N1YmRyaXZlcl9lbnRyaWVzW107 CiMgODY4ICIvb3B0L2ZzcC9pNTg2LXBjLWxpbnV4LWdudS9sb2NhbC9wb3dlcnBjLWxpbnV4L3N5 cy1pbmNsdWRlL2xpbnV4L2lkZS5oIiAzCmludCBpZGVfcmVnaXN0ZXJfbW9kdWxlIChpZGVfbW9k dWxlX3QgKm1vZHVsZSk7CnZvaWQgaWRlX3VucmVnaXN0ZXJfbW9kdWxlIChpZGVfbW9kdWxlX3Qg Km1vZHVsZSk7CmlkZV9kcml2ZV90ICppZGVfc2Nhbl9kZXZpY2VzIChieXRlIG1lZGlhLCBjb25z dCBjaGFyICpuYW1lLCBpZGVfZHJpdmVyX3QgKmRyaXZlciwgaW50IG4pOwppbnQgaWRlX3JlZ2lz dGVyX3N1YmRyaXZlciAoaWRlX2RyaXZlX3QgKmRyaXZlLCBpZGVfZHJpdmVyX3QgKmRyaXZlciwg aW50IHZlcnNpb24pOwppbnQgaWRlX3VucmVnaXN0ZXJfc3ViZHJpdmVyIChpZGVfZHJpdmVfdCAq ZHJpdmUpOwppbnQgaWRlX3JlcGxhY2Vfc3ViZHJpdmVyKGlkZV9kcml2ZV90ICpkcml2ZSwgY29u c3QgY2hhciAqZHJpdmVyKTsKIyA5MDEgIi9vcHQvZnNwL2k1ODYtcGMtbGludXgtZ251L2xvY2Fs L3Bvd2VycGMtbGludXgvc3lzLWluY2x1ZGUvbGludXgvaWRlLmgiIDMKdm9pZCBod2lmX3VucmVn aXN0ZXIgKGlkZV9od2lmX3QgKmh3aWYpOwojIDE1ICJibGEuYyIgMgojIDM3ICJibGEuYyIKZXh0 ZXJuIF9faW5saW5lX18gX19jb25zdF9fIF9fdTE2IG15X19mc3dhYjE2KF9fdTE2IHgpCgoKCnsK ICAgICAgICByZXR1cm4gKHsgX191MTYgX190bXAgPSAoeCkgOyAoeyBfX3UxNiBfX3ggPSAoX190 bXApOyAoKF9fdTE2KSggKCgoX191MTYpKF9feCkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAo KChfX3UxNikoX194KSAmIChfX3UxNikweGZmMDBVKSA+PiA4KSApKTsgfSk7IH0pOwp9CgoKdW5z aWduZWQgc2hvcnQgYmxhYmxhYmxhKHN0cnVjdCBoZF9kcml2ZWlkICppZCkKewogICAgICAgIGlk LT5jb25maWcgPSAoX19idWlsdGluX2NvbnN0YW50X3AoKF9fdTE2KShpZC0+Y29uZmlnKSkgPyAo eyBfX3UxNiBfX3ggPSAoKGlkLT5jb25maWcpKTsgKChfX3UxNikoICgoKF9fdTE2KShfX3gpICYg KF9fdTE2KTB4MDBmZlUpIDw8IDgpIHwgKCgoX191MTYpKF9feCkgJiAoX191MTYpMHhmZjAwVSkg Pj4gOCkgKSk7IH0pIDogbXlfX2Zzd2FiMTYoKGlkLT5jb25maWcpKSk7CiAgICAgICAgcmV0dXJu IDA7Cn0K --0__=4EBBE63BDFAE34898f9e8a93df938690918c4EBBE63BDFAE3489--