From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13971 invoked by alias); 22 Jul 2002 18:36:02 -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 13929 invoked by uid 71); 22 Jul 2002 18:36:02 -0000 Resent-Date: 22 Jul 2002 18:36:02 -0000 Resent-Message-ID: <20020722183602.13928.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, priestwilliaml@yahoo.com Received: (qmail 5355 invoked by uid 61); 22 Jul 2002 18:27:48 -0000 Message-Id: <20020722182748.5354.qmail@sources.redhat.com> Date: Mon, 22 Jul 2002 11:36:00 -0000 From: priestwilliaml@yahoo.com Reply-To: priestwilliaml@yahoo.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c/7376: linux kernel 2.4.19-rc3 parser error w/ 3.2 CVS (works w/ 3.1) on ix86 semaphore.c X-SW-Source: 2002-07/txt/msg00607.txt.bz2 List-Id: >Number: 7376 >Category: c >Synopsis: linux kernel 2.4.19-rc3 parser error w/ 3.2 CVS (works w/ 3.1) on ix86 semaphore.c >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Jul 22 11:36:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: priestwilliaml@yahoo.com >Release: 3.2 CVS sync'ed today (7/22/02 CST) >Organization: >Environment: linux ix86 >Description: Trying to compile/build Linux Kernel 2.4.19-rc3 on ix86 using latest bootstrapped 3.2 sync'ed from CVS today (didn't work with sync from last week either). File in question is semaphore.c. This same file compiles fine w/ 3.1. ./configure --enable-languages="c,c++" \ --prefix=/home/bpriest/usr/local make bootstrap-lean /home/bpriest/usr/local/bin/gcc --verbose --save-temps -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -mpreferred-stack-boundary=2 -march=i686 -nostdinc -I /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include -DKBUILD_BASENAME=semaphore -c -o semaphore.o semaphore.c Reading specs from /home/bpriest/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2/specs Configured with: ../gcc/configure --enable-languages=c,c++ --prefix=/home/bpriest/usr/local : (reconfigured) ../gcc/configure --enable-languages=c,c++ : (reconfigured) ../gcc/configure --enable-languages=c,c++ --prefix=/home/bpriest/usr/local Thread model: single gcc version 3.2 20020722 (experimental) /home/bpriest/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2/cc1 -E -quiet -nostdinc -v -I/usr/src/linux/include -I /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=0 -D__KERNEL__ -DKBUILD_BASENAME=semaphore semaphore.c -Wall -Wstrict-prototypes -Wno-trigraphs -mpreferred-stack-boundary=2 -march=i686 -fno-strict-aliasing -fno-common -fomit-frame-pointer -O2 semaphore.i #include "..." search starts here: #include <...> search starts here: /usr/src/linux/include /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include End of search list. semaphore.c:265:1: missing terminating " character semaphore.c:290:1: missing terminating " character same file compiled w/ 3.1 /usr/local/bin/gcc --verbose --save-temps -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -mpreferred-stack-boundary=2 -march=i686 -nostdinc -I /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include -DKBUILD_BASENAME=semaphore -c -o semaphore.o semaphore.c Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/specs Configured with: ../gcc-3.1/configure --prefix=/usr/local --enable-languages=c,c++,g77 Thread model: single gcc version 3.1 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/cpp0 -lang-c -nostdinc -v -I/usr/src/linux/include -I /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include -D__GNUC__=3 -D__GNUC_MINOR__=1 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -D__gnu_linux__ -Dlinux -D__ELF__ -D__unix__ -D__gnu_linux__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ -D__tune_i686__ -D__tune_pentiumpro__ -D__KERNEL__ -DKBUILD_BASENAME=semaphore semaphore.c -Wall -Wstrict-prototypes -Wno-trigraphs semaphore.i GNU CPP version 3.1 (cpplib) (i386 Linux/ELF) #include "..." search starts here: #include <...> search starts here: /usr/src/linux/include /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include End of search list. semaphore.c:265:1: warning: multi-line string literals are deprecated semaphore.c:269:35: warning: multi-line string literals are deprecated semaphore.c:271:27: warning: multi-line string literals are deprecated semaphore.c:274:35: warning: multi-line string literals are deprecated /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/cc1 -fpreprocessed semaphore.i -quiet -dumpbase semaphore.c -mpreferred-stack-boundary=2 -march=i686 -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -version -fno-strict-aliasing -fno-common -fomit-frame-pointer -o semaphore.s GNU CPP version 3.1 (cpplib) (i386 Linux/ELF) GNU C version 3.1 (i686-pc-linux-gnu) compiled by GNU C version 3.1. semaphore.c:265:1: warning: multi-line string literals are deprecated semaphore.c:269:36: warning: multi-line string literals are deprecated semaphore.c:271:23: warning: multi-line string literals are deprecated semaphore.c:274:36: warning: multi-line string literals are deprecated /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/../../../../i686-pc-linux-gnu/bin/as --traditional-format -V -Qy -o semaphore.o semaphore.s GNU assembler version 2.12.1 (i686-pc-linux-gnu) using BFD version 2.12.1 I attached the 3.2 .i file (but since this is where the problem is I'm not sure it will help). I can also provide the 3.1 .i file if that would be helpful. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="semaphore.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="semaphore.i" IyAxICJzZW1hcGhvcmUuYyIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kIGxpbmU+Igoj IDEgInNlbWFwaG9yZS5jIgojIDE1ICJzZW1hcGhvcmUuYyIKIyAxICIvdXNyL3NyYy9saW51eC9p bmNsdWRlL2xpbnV4L2NvbmZpZy5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9hdXRvY29uZi5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb25m aWcuaCIgMgojIDE2ICJzZW1hcGhvcmUuYyIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv bGludXgvc2NoZWQuaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BhcmFt LmgiIDEKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCmV4dGVy biB1bnNpZ25lZCBsb25nIGV2ZW50OwoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51 eC9iaW5mbXRzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3B0cmFj ZS5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcHRyYWNlLmgiCiMgMSAi L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKIyAyNiAiL3Vzci9zcmMvbGlu dXgvaW5jbHVkZS9hc20vcHRyYWNlLmgiCnN0cnVjdCBwdF9yZWdzIHsKICAgICAgICBsb25nIGVi eDsKICAgICAgICBsb25nIGVjeDsKICAgICAgICBsb25nIGVkeDsKICAgICAgICBsb25nIGVzaTsK ICAgICAgICBsb25nIGVkaTsKICAgICAgICBsb25nIGVicDsKICAgICAgICBsb25nIGVheDsKICAg ICAgICBpbnQgeGRzOwogICAgICAgIGludCB4ZXM7CiAgICAgICAgbG9uZyBvcmlnX2VheDsKICAg ICAgICBsb25nIGVpcDsKICAgICAgICBpbnQgeGNzOwogICAgICAgIGxvbmcgZWZsYWdzOwogICAg ICAgIGxvbmcgZXNwOwogICAgICAgIGludCB4c3M7Cn07CiMgNjAgIi91c3Ivc3JjL2xpbnV4L2lu Y2x1ZGUvYXNtL3B0cmFjZS5oIgpleHRlcm4gdm9pZCBzaG93X3JlZ3Moc3RydWN0IHB0X3JlZ3Mg Kik7CiMgMjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcHRyYWNlLmgiIDIKIyA1ICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMgojIDEgIi91c3Ivc3JjL2xp bnV4L2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4L2lu Y2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu dXgvdHlwZXMuaCIgMQoKCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Bv c2l4X3R5cGVzLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N0ZGRl Zi5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAy CiMgMzYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcG9zaXhfdHlwZXMuaCIKdHlwZWRl ZiBzdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmRzX2JpdHMgWygxMDI0Lyg4ICogc2l6 ZW9mKHVuc2lnbmVkIGxvbmcpKSldOwp9IF9fa2VybmVsX2ZkX3NldDsKCgp0eXBlZGVmIHZvaWQg KCpfX2tlcm5lbF9zaWdoYW5kbGVyX3QpKGludCk7CgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfa2V5 X3Q7CgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiIDEKIyAx MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaCIKdHlwZWRlZiB1bnNp Z25lZCBzaG9ydCBfX2tlcm5lbF9kZXZfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fa2VybmVs X2lub190Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX21vZGVfdDsKdHlwZWRlZiB1 bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9ubGlua190Owp0eXBlZGVmIGxvbmcgX19rZXJuZWxfb2Zm X3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX3BpZF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9f a2VybmVsX2lwY19waWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF91aWRfdDsK dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBp bnQgX19rZXJuZWxfc2l6ZV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9zc2l6ZV90Owp0eXBlZGVm IGludCBfX2tlcm5lbF9wdHJkaWZmX3Q7CnR5cGVkZWYgbG9uZyBfX2tlcm5lbF90aW1lX3Q7CnR5 cGVkZWYgbG9uZyBfX2tlcm5lbF9zdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIF9fa2VybmVsX2Ns b2NrX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX2RhZGRyX3Q7CnR5cGVkZWYgY2hhciAqIF9fa2Vy bmVsX2NhZGRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfdWlkMTZfdDsKdHlw ZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9naWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGlu dCBfX2tlcm5lbF91aWQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9naWQzMl90 OwoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9vbGRfdWlkX3Q7CnR5cGVkZWYgdW5z aWduZWQgc2hvcnQgX19rZXJuZWxfb2xkX2dpZF90OwoKCnR5cGVkZWYgbG9uZyBsb25nIF9fa2Vy bmVsX2xvZmZfdDsKCgp0eXBlZGVmIHN0cnVjdCB7CgogICAgICAgIGludCB2YWxbMl07CgoKCn0g X19rZXJuZWxfZnNpZF90OwojIDQ3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Bvc2l4 X3R5cGVzLmgiIDIKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDIK IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90eXBlcy5oIiAxCgoKCnR5cGVkZWYgdW5z aWduZWQgc2hvcnQgdW1vZGVfdDsKCgoKCgoKdHlwZWRlZiBfX3NpZ25lZF9fIGNoYXIgX19zODsK dHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdTg7Cgp0eXBlZGVmIF9fc2lnbmVkX18gc2hvcnQgX19z MTY7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191MTY7Cgp0eXBlZGVmIF9fc2lnbmVkX18gaW50 IF9fczMyOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3UzMjsKCgp0eXBlZGVmIF9fc2lnbmVkX18g bG9uZyBsb25nIF9fczY0Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3U2NDsKIyAzMiAi L3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdHlwZXMuaCIKdHlwZWRlZiBzaWduZWQgY2hhciBz ODsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4OwoKdHlwZWRlZiBzaWduZWQgc2hvcnQgczE2Owp0 eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKCnR5cGVkZWYgc2lnbmVkIGludCBzMzI7CnR5cGVk ZWYgdW5zaWduZWQgaW50IHUzMjsKCnR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBzNjQ7CnR5cGVk ZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKIyA1MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h c20vdHlwZXMuaCIKdHlwZWRlZiB1MzIgZG1hX2FkZHJfdDsKCnR5cGVkZWYgdTY0IGRtYTY0X2Fk ZHJfdDsKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIiAyCgoKCnR5 cGVkZWYgX19rZXJuZWxfZmRfc2V0IGZkX3NldDsKdHlwZWRlZiBfX2tlcm5lbF9kZXZfdCBkZXZf dDsKdHlwZWRlZiBfX2tlcm5lbF9pbm9fdCBpbm9fdDsKdHlwZWRlZiBfX2tlcm5lbF9tb2RlX3Qg bW9kZV90Owp0eXBlZGVmIF9fa2VybmVsX25saW5rX3QgbmxpbmtfdDsKdHlwZWRlZiBfX2tlcm5l bF9vZmZfdCBvZmZfdDsKdHlwZWRlZiBfX2tlcm5lbF9waWRfdCBwaWRfdDsKdHlwZWRlZiBfX2tl cm5lbF9kYWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19rZXJuZWxfa2V5X3Qga2V5X3Q7CnR5cGVk ZWYgX19rZXJuZWxfc3VzZWNvbmRzX3Qgc3VzZWNvbmRzX3Q7CgoKdHlwZWRlZiBfX2tlcm5lbF91 aWQzMl90IHVpZF90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDMyX3QgZ2lkX3Q7CnR5cGVkZWYgX19r ZXJuZWxfdWlkMTZfdCB1aWQxNl90Owp0eXBlZGVmIF9fa2VybmVsX2dpZDE2X3QgZ2lkMTZfdDsK CgoKdHlwZWRlZiBfX2tlcm5lbF9vbGRfdWlkX3Qgb2xkX3VpZF90Owp0eXBlZGVmIF9fa2VybmVs X29sZF9naWRfdCBvbGRfZ2lkX3Q7CiMgNDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv dHlwZXMuaCIKdHlwZWRlZiBfX2tlcm5lbF9sb2ZmX3QgbG9mZl90OwojIDU0ICIvdXNyL3NyYy9s aW51eC9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYgX19rZXJuZWxfc2l6ZV90IHNpemVf dDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfc3NpemVfdCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBfX2tl cm5lbF9wdHJkaWZmX3QgcHRyZGlmZl90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF90aW1lX3QgdGlt ZV90OwoKCgoKdHlwZWRlZiBfX2tlcm5lbF9jbG9ja190IGNsb2NrX3Q7CgoKCgp0eXBlZGVmIF9f a2VybmVsX2NhZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsK dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2lu dDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg dW5jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBp bnQgdWludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwoKCgoKdHlwZWRlZiBfX3U4IHVf aW50OF90Owp0eXBlZGVmIF9fczggaW50OF90Owp0eXBlZGVmIF9fdTE2IHVfaW50MTZfdDsKdHlw ZWRlZiBfX3MxNiBpbnQxNl90Owp0eXBlZGVmIF9fdTMyIHVfaW50MzJfdDsKdHlwZWRlZiBfX3Mz MiBpbnQzMl90OwoKCgp0eXBlZGVmIF9fdTggdWludDhfdDsKdHlwZWRlZiBfX3UxNiB1aW50MTZf dDsKdHlwZWRlZiBfX3UzMiB1aW50MzJfdDsKCgp0eXBlZGVmIF9fdTY0IHVpbnQ2NF90Owp0eXBl ZGVmIF9fdTY0IHVfaW50NjRfdDsKdHlwZWRlZiBfX3M2NCBpbnQ2NF90OwojIDEyMyAiL3Vzci9z cmMvbGludXgvaW5jbHVkZS9saW51eC90eXBlcy5oIgpzdHJ1Y3QgdXN0YXQgewogICAgICAgIF9f a2VybmVsX2RhZGRyX3QgZl90ZnJlZTsKICAgICAgICBfX2tlcm5lbF9pbm9fdCBmX3Rpbm9kZTsK ICAgICAgICBjaGFyIGZfZm5hbWVbNl07CiAgICAgICAgY2hhciBmX2ZwYWNrWzZdOwp9OwojIDE3 ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIgMgojIDEgIi91c3Iv c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMQojIDEwICIvdXNyL3NyYy9saW51eC9pbmNs dWRlL2xpbnV4L2ZzLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saW5rYWdl LmgiIDEKIyAxMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saW1pdHMuaCIgMQojIDEyICIvdXNyL3NyYy9saW51 eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4 L3dhaXQuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKIyAx ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAxCiMgMTAgIi91c3Ivc3Jj L2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgiCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp Yi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRhcmcuaCIgMQojIDQzICIvdXNyL2xv Y2FsL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMS9pbmNsdWRlL3N0ZGFyZy5oIgp0 eXBlZGVmIF9fYnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwojIDExMCAiL3Vzci9sb2Nh bC9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjEvaW5jbHVkZS9zdGRhcmcuaCIKdHlw ZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L2tlcm5lbC5oIiAyCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9j b21waWxlci5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgi IDIKIyA0MCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKZXh0ZXJuIGlu dCBjb25zb2xlX3ByaW50a1tdOwojIDU3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tl cm5lbC5oIgpzdHJ1Y3QgY29tcGxldGlvbjsKCmV4dGVybiBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sg KnBhbmljX25vdGlmaWVyX2xpc3Q7CiB2b2lkIHBhbmljKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikK ICAgICAgICBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4sIGZvcm1hdCAocHJpbnRmLCAxLCAyKSkp OwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgZG9fZXhpdChsb25nIGVycm9yX2Nv ZGUpCiAgICAgICAgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKIHZvaWQgY29tcGxldGVfYW5k X2V4aXQoc3RydWN0IGNvbXBsZXRpb24gKiwgbG9uZykKICAgICAgICBfX2F0dHJpYnV0ZV9fKChu b3JldHVybikpOwpleHRlcm4gaW50IGFicyhpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBzaW1w bGVfc3RydG91bChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwpleHRlcm4gbG9u ZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVy biB1bnNpZ25lZCBsb25nIGxvbmcgc2ltcGxlX3N0cnRvdWxsKGNvbnN0IGNoYXIgKixjaGFyICoq LHVuc2lnbmVkIGludCk7CmV4dGVybiBsb25nIGxvbmcgc2ltcGxlX3N0cnRvbGwoY29uc3QgY2hh ciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCBzcHJpbnRmKGNoYXIgKiBidWYs IGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAgICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChw cmludGYsIDIsIDMpKSk7CmV4dGVybiBpbnQgdnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFy ICosIHZhX2xpc3QpOwpleHRlcm4gaW50IHNucHJpbnRmKGNoYXIgKiBidWYsIHNpemVfdCBzaXpl LCBjb25zdCBjaGFyICogZm10LCAuLi4pCiAgICAgICAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAo cHJpbnRmLCAzLCA0KSkpOwpleHRlcm4gaW50IHZzbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBz aXplLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7CgpleHRlcm4gaW50IHNzY2FuZihj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChm b3JtYXQgKHNjYW5mLDIsMykpKTsKZXh0ZXJuIGludCB2c3NjYW5mKGNvbnN0IGNoYXIgKiwgY29u c3QgY2hhciAqLCB2YV9saXN0KTsKCmV4dGVybiBpbnQgZ2V0X29wdGlvbihjaGFyICoqc3RyLCBp bnQgKnBpbnQpOwpleHRlcm4gY2hhciAqZ2V0X29wdGlvbnMoY2hhciAqc3RyLCBpbnQgbmludHMs IGludCAqaW50cyk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgbWVtcGFyc2UoY2hhciAqcHRy LCBjaGFyICoqcmV0cHRyKTsKZXh0ZXJuIHZvaWQgZGV2X3Byb2JlX2xvY2sodm9pZCk7CmV4dGVy biB2b2lkIGRldl9wcm9iZV91bmxvY2sodm9pZCk7CgpleHRlcm4gaW50IHNlc3Npb25fb2ZfcGdy cChpbnQgcGdycCk7CgogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGludCBwcmludGsoY29u c3QgY2hhciAqIGZtdCwgLi4uKQogICAgICAgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50 ZiwgMSwgMikpKTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBjb25zb2xlX3NpbGVudCh2b2lkKQp7CiAg ICAgICAgKGNvbnNvbGVfcHJpbnRrWzBdKSA9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBjb25z b2xlX3ZlcmJvc2Uodm9pZCkKewogICAgICAgIGlmICgoY29uc29sZV9wcmludGtbMF0pKQogICAg ICAgICAgICAgICAgKGNvbnNvbGVfcHJpbnRrWzBdKSA9IDE1Owp9CgpleHRlcm4gdm9pZCBidXN0 X3NwaW5sb2NrcyhpbnQgeWVzKTsKZXh0ZXJuIGludCBvb3BzX2luX3Byb2dyZXNzOwoKZXh0ZXJu IGludCB0YWludGVkOwpleHRlcm4gY29uc3QgY2hhciAqcHJpbnRfdGFpbnRlZCh2b2lkKTsKIyAx NjUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2VybmVsLmgiCmV4dGVybiB2b2lkIF9f b3V0X29mX2xpbmVfYnVnKGludCBsaW5lKSBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwoKCgoK CnN0cnVjdCBzeXNpbmZvIHsKICAgICAgICBsb25nIHVwdGltZTsKICAgICAgICB1bnNpZ25lZCBs b25nIGxvYWRzWzNdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdG90YWxyYW07CiAgICAgICAgdW5z aWduZWQgbG9uZyBmcmVlcmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2hhcmVkcmFtOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVycmFtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdG90YWxz d2FwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZXN3YXA7CiAgICAgICAgdW5zaWduZWQgc2hv cnQgcHJvY3M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgcGFkOwogICAgICAgIHVuc2lnbmVkIGxv bmcgdG90YWxoaWdoOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZWhpZ2g7CiAgICAgICAgdW5z aWduZWQgaW50IG1lbV91bml0OwogICAgICAgIGNoYXIgX2ZbMjAtMipzaXplb2YobG9uZyktc2l6 ZW9mKGludCldOwp9OwojIDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIg MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIiAxCgoKCgoKIyAxICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgiIDEKIyAxMyAiL3Vzci9zcmMv bGludXgvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1 ZGUvYXNtL3Byb2Nlc3Nvci5oIiAxCiMgMTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3By b2Nlc3Nvci5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3ZtODYuaCIgMQojIDY4 ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS92bTg2LmgiCnN0cnVjdCB2bTg2X3JlZ3MgewoK CgogICAgICAgIGxvbmcgZWJ4OwogICAgICAgIGxvbmcgZWN4OwogICAgICAgIGxvbmcgZWR4Owog ICAgICAgIGxvbmcgZXNpOwogICAgICAgIGxvbmcgZWRpOwogICAgICAgIGxvbmcgZWJwOwogICAg ICAgIGxvbmcgZWF4OwogICAgICAgIGxvbmcgX19udWxsX2RzOwogICAgICAgIGxvbmcgX19udWxs X2VzOwogICAgICAgIGxvbmcgX19udWxsX2ZzOwogICAgICAgIGxvbmcgX19udWxsX2dzOwogICAg ICAgIGxvbmcgb3JpZ19lYXg7CiAgICAgICAgbG9uZyBlaXA7CiAgICAgICAgdW5zaWduZWQgc2hv cnQgY3MsIF9fY3NoOwogICAgICAgIGxvbmcgZWZsYWdzOwogICAgICAgIGxvbmcgZXNwOwogICAg ICAgIHVuc2lnbmVkIHNob3J0IHNzLCBfX3NzaDsKCgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBl cywgX19lc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2ln bmVkIHNob3J0IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7Cn07 CgpzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIGxvbmcgX19tYXBb OF07Cn07CgpzdHJ1Y3Qgdm04Nl9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCB2bTg2X3JlZ3MgcmVn czsKICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2Ny ZWVuX2JpdG1hcDsKICAgICAgICB1bnNpZ25lZCBsb25nIGNwdV90eXBlOwogICAgICAgIHN0cnVj dCByZXZlY3RvcmVkX3N0cnVjdCBpbnRfcmV2ZWN0b3JlZDsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0 b3JlZF9zdHJ1Y3QgaW50MjFfcmV2ZWN0b3JlZDsKfTsKCgoKCgoKc3RydWN0IHZtODZwbHVzX2lu Zm9fc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIGZvcmNlX3JldHVybl9mb3JfcGljOjE7 CiAgICAgICAgdW5zaWduZWQgbG9uZyB2bTg2ZGJnX2FjdGl2ZToxOwogICAgICAgIHVuc2lnbmVk IGxvbmcgdm04NmRiZ19URnBlbmRpZzoxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgdW51c2VkOjI4 OwogICAgICAgIHVuc2lnbmVkIGxvbmcgaXNfdm04NnB1czoxOwogICAgICAgIHVuc2lnbmVkIGNo YXIgdm04NmRiZ19pbnR4eHRhYlszMl07Cn07CgpzdHJ1Y3Qgdm04NnBsdXNfc3RydWN0IHsKICAg ICAgICBzdHJ1Y3Qgdm04Nl9yZWdzIHJlZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK ICAgICAgICB1bnNpZ25lZCBsb25nIHNjcmVlbl9iaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBjcHVfdHlwZTsKICAgICAgICBzdHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50X3JldmVjdG9y ZWQ7CiAgICAgICAgc3RydWN0IHJldmVjdG9yZWRfc3RydWN0IGludDIxX3JldmVjdG9yZWQ7CiAg ICAgICAgc3RydWN0IHZtODZwbHVzX2luZm9fc3RydWN0IHZtODZwbHVzOwp9OwojIDE0NSAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9hc20vdm04Ni5oIgpzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyB7 CgoKCiAgICAgICAgbG9uZyBlYng7CiAgICAgICAgbG9uZyBlY3g7CiAgICAgICAgbG9uZyBlZHg7 CiAgICAgICAgbG9uZyBlc2k7CiAgICAgICAgbG9uZyBlZGk7CiAgICAgICAgbG9uZyBlYnA7CiAg ICAgICAgbG9uZyBlYXg7CiAgICAgICAgbG9uZyBfX251bGxfZHM7CiAgICAgICAgbG9uZyBfX251 bGxfZXM7CiAgICAgICAgbG9uZyBvcmlnX2VheDsKICAgICAgICBsb25nIGVpcDsKICAgICAgICB1 bnNpZ25lZCBzaG9ydCBjcywgX19jc2g7CiAgICAgICAgbG9uZyBlZmxhZ3M7CiAgICAgICAgbG9u ZyBlc3A7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwoKCgogICAgICAgIHVuc2ln bmVkIHNob3J0IGVzLCBfX2VzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkcywgX19kc2g7CiAg ICAgICAgdW5zaWduZWQgc2hvcnQgZnMsIF9fZnNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGdz LCBfX2dzaDsKfTsKCnN0cnVjdCBrZXJuZWxfdm04Nl9zdHJ1Y3QgewogICAgICAgIHN0cnVjdCBr ZXJuZWxfdm04Nl9yZWdzIHJlZ3M7CiMgMTg0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS92 bTg2LmgiCiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25n IHNjcmVlbl9iaXRtYXA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVfdHlwZTsKICAgICAgICBz dHJ1Y3QgcmV2ZWN0b3JlZF9zdHJ1Y3QgaW50X3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHJl dmVjdG9yZWRfc3RydWN0IGludDIxX3JldmVjdG9yZWQ7CiAgICAgICAgc3RydWN0IHZtODZwbHVz X2luZm9fc3RydWN0IHZtODZwbHVzOwogICAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzMzI7CiMg MjAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS92bTg2LmgiCn07Cgp2b2lkIGhhbmRsZV92 bTg2X2ZhdWx0KHN0cnVjdCBrZXJuZWxfdm04Nl9yZWdzICosIGxvbmcpOwppbnQgaGFuZGxlX3Zt ODZfdHJhcChzdHJ1Y3Qga2VybmVsX3ZtODZfcmVncyAqLCBsb25nLCBpbnQpOwojIDExICIvdXNy L3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4 L2luY2x1ZGUvYXNtL21hdGhfZW11LmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2FzbS9zaWdjb250ZXh0LmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2ln Y29udGV4dC5oIgpzdHJ1Y3QgX2ZwcmVnIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaWduaWZp Y2FuZFs0XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBleHBvbmVudDsKfTsKCnN0cnVjdCBfZnB4 cmVnIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzaWduaWZpY2FuZFs0XTsKICAgICAgICB1bnNp Z25lZCBzaG9ydCBleHBvbmVudDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYWRkaW5nWzNdOwp9 OwoKc3RydWN0IF94bW1yZWcgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZWxlbWVudFs0XTsKfTsK CnN0cnVjdCBfZnBzdGF0ZSB7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgY3c7CiAgICAgICAgdW5z aWduZWQgbG9uZyBzdzsKICAgICAgICB1bnNpZ25lZCBsb25nIHRhZzsKICAgICAgICB1bnNpZ25l ZCBsb25nIGlwb2ZmOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY3NzZWw7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBkYXRhb2ZmOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YXNlbDsKICAgICAgICBz dHJ1Y3QgX2ZwcmVnIF9zdFs4XTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CiAgICAg ICAgdW5zaWduZWQgc2hvcnQgbWFnaWM7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIF9meHNyX2Vu dls2XTsKICAgICAgICB1bnNpZ25lZCBsb25nIG14Y3NyOwogICAgICAgIHVuc2lnbmVkIGxvbmcg cmVzZXJ2ZWQ7CiAgICAgICAgc3RydWN0IF9mcHhyZWcgX2Z4c3Jfc3RbOF07CiAgICAgICAgc3Ry dWN0IF94bW1yZWcgX3htbVs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBhZGRpbmdbNTZdOwp9 OwoKCgpzdHJ1Y3Qgc2lnY29udGV4dCB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZ3MsIF9fZ3No OwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzLCBfX2ZzaDsKICAgICAgICB1bnNpZ25lZCBzaG9y dCBlcywgX19lc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVu c2lnbmVkIGxvbmcgZWRpOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNpOwogICAgICAgIHVuc2ln bmVkIGxvbmcgZWJwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVk IGxvbmcgZWJ4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWR4OwogICAgICAgIHVuc2lnbmVkIGxv bmcgZWN4OwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWF4OwogICAgICAgIHVuc2lnbmVkIGxvbmcg dHJhcG5vOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZXJyOwogICAgICAgIHVuc2lnbmVkIGxvbmcg ZWlwOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGNzLCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBs b25nIGVmbGFnczsKICAgICAgICB1bnNpZ25lZCBsb25nIGVzcF9hdF9zaWduYWw7CiAgICAgICAg dW5zaWduZWQgc2hvcnQgc3MsIF9fc3NoOwogICAgICAgIHN0cnVjdCBfZnBzdGF0ZSAqIGZwc3Rh dGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBvbGRtYXNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcg Y3IyOwp9OwojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL21hdGhfZW11LmgiIDIKCmlu dCByZXN0b3JlX2kzODdfc29mdCh2b2lkICpzMzg3LCBzdHJ1Y3QgX2Zwc3RhdGUgKmJ1Zik7Cmlu dCBzYXZlX2kzODdfc29mdCh2b2lkICpzMzg3LCBzdHJ1Y3QgX2Zwc3RhdGUgKiBidWYpOwoKCgoK CnN0cnVjdCBpbmZvIHsKICAgICAgICBsb25nIF9fX29yaWdfZWlwOwogICAgICAgIGxvbmcgX19f ZWJ4OwogICAgICAgIGxvbmcgX19fZWN4OwogICAgICAgIGxvbmcgX19fZWR4OwogICAgICAgIGxv bmcgX19fZXNpOwogICAgICAgIGxvbmcgX19fZWRpOwogICAgICAgIGxvbmcgX19fZWJwOwogICAg ICAgIGxvbmcgX19fZWF4OwogICAgICAgIGxvbmcgX19fZHM7CiAgICAgICAgbG9uZyBfX19lczsK ICAgICAgICBsb25nIF9fX29yaWdfZWF4OwogICAgICAgIGxvbmcgX19fZWlwOwogICAgICAgIGxv bmcgX19fY3M7CiAgICAgICAgbG9uZyBfX19lZmxhZ3M7CiAgICAgICAgbG9uZyBfX19lc3A7CiAg ICAgICAgbG9uZyBfX19zczsKICAgICAgICBsb25nIF9fX3ZtODZfZXM7CiAgICAgICAgbG9uZyBf X192bTg2X2RzOwogICAgICAgIGxvbmcgX19fdm04Nl9mczsKICAgICAgICBsb25nIF9fX3ZtODZf Z3M7Cn07CiMgMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMg MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2VnbWVudC5oIiAxCiMgMTMgIi91c3Ivc3Jj L2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j bHVkZS9hc20vcGFnZS5oIiAxCiMgNDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3BhZ2Uu aCIKdHlwZWRlZiBzdHJ1Y3QgeyB1bnNpZ25lZCBsb25nIHB0ZV9sb3c7IH0gcHRlX3Q7CnR5cGVk ZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBwbWQ7IH0gcG1kX3Q7CnR5cGVkZWYgc3RydWN0IHsg dW5zaWduZWQgbG9uZyBwZ2Q7IH0gcGdkX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCB7IHVuc2lnbmVk IGxvbmcgcGdwcm90OyB9IHBncHJvdF90OwojIDExMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h c20vcGFnZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgZ2V0X29yZGVyKHVuc2lnbmVkIGxvbmcg c2l6ZSkKewogICAgICAgIGludCBvcmRlcjsKCiAgICAgICAgc2l6ZSA9IChzaXplLTEpID4+ICgx MiAtMSk7CiAgICAgICAgb3JkZXIgPSAtMTsKICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBz aXplID4+PSAxOwogICAgICAgICAgICAgICAgb3JkZXIrKzsKICAgICAgICB9IHdoaWxlIChzaXpl KTsKICAgICAgICByZXR1cm4gb3JkZXI7Cn0KIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h c20vcHJvY2Vzc29yLmgiIDIKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2NwdWZl YXR1cmUuaCIgMQojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIg MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMQoKCgoKIyAxICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9jYWNoZS5oIiAxCiMgNiAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9saW51eC9jYWNoZS5oIiAyCiMgMTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt L3Byb2Nlc3Nvci5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGhyZWFk cy5oIiAxCiMgMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCiMg MzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgY3B1aW5m b194ODYgewogICAgICAgIF9fdTggeDg2OwogICAgICAgIF9fdTggeDg2X3ZlbmRvcjsKICAgICAg ICBfX3U4IHg4Nl9tb2RlbDsKICAgICAgICBfX3U4IHg4Nl9tYXNrOwogICAgICAgIGNoYXIgd3Bf d29ya3Nfb2s7CiAgICAgICAgY2hhciBobHRfd29ya3Nfb2s7CiAgICAgICAgY2hhciBoYXJkX21h dGg7CiAgICAgICAgY2hhciByZnU7CiAgICAgICAgaW50IGNwdWlkX2xldmVsOwogICAgICAgIF9f dTMyIHg4Nl9jYXBhYmlsaXR5WzRdOwogICAgICAgIGNoYXIgeDg2X3ZlbmRvcl9pZFsxNl07CiAg ICAgICAgY2hhciB4ODZfbW9kZWxfaWRbNjRdOwogICAgICAgIGludCB4ODZfY2FjaGVfc2l6ZTsK CiAgICAgICAgaW50IGZkaXZfYnVnOwogICAgICAgIGludCBmMDBmX2J1ZzsKICAgICAgICBpbnQg Y29tYV9idWc7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb29wc19wZXJfamlmZnk7CiAgICAgICAg dW5zaWduZWQgbG9uZyAqcGdkX3F1aWNrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgKnBtZF9xdWlj azsKICAgICAgICB1bnNpZ25lZCBsb25nICpwdGVfcXVpY2s7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBwZ3RhYmxlX2NhY2hlX3N6Owp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICgo NSkpKSkpKTsKIyA3MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4 dGVybiBzdHJ1Y3QgY3B1aW5mb194ODYgYm9vdF9jcHVfZGF0YTsKZXh0ZXJuIHN0cnVjdCB0c3Nf c3RydWN0IGluaXRfdHNzWzMyXTsKCgpleHRlcm4gc3RydWN0IGNwdWluZm9feDg2IGNwdV9kYXRh W107CiMgOTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpleHRlcm4g Y2hhciBpZ25vcmVfaXJxMTM7CgpleHRlcm4gdm9pZCBpZGVudGlmeV9jcHUoc3RydWN0IGNwdWlu Zm9feDg2ICopOwpleHRlcm4gdm9pZCBwcmludF9jcHVfaW5mbyhzdHJ1Y3QgY3B1aW5mb194ODYg Kik7CmV4dGVybiB2b2lkIGRvZGd5X3RzYyh2b2lkKTsKIyAxMjUgIi91c3Ivc3JjL2xpbnV4L2lu Y2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdGF0aWMgaW5saW5lIHZvaWQgY3B1aWQoaW50IG9wLCBp bnQgKmVheCwgaW50ICplYngsIGludCAqZWN4LCBpbnQgKmVkeCkKewogICAgICAgIF9fYXNtX18o ImNwdWlkIgogICAgICAgICAgICAgICAgOiAiPWEiICgqZWF4KSwKICAgICAgICAgICAgICAgICAg Ij1iIiAoKmVieCksCiAgICAgICAgICAgICAgICAgICI9YyIgKCplY3gpLAogICAgICAgICAgICAg ICAgICAiPWQiICgqZWR4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKSk7Cn0KCgoKCnN0YXRp YyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VheCh1bnNpZ25lZCBpbnQgb3ApCnsKICAgICAg ICB1bnNpZ25lZCBpbnQgZWF4OwoKICAgICAgICBfX2FzbV9fKCJjcHVpZCIKICAgICAgICAgICAg ICAgIDogIj1hIiAoZWF4KQogICAgICAgICAgICAgICAgOiAiMCIgKG9wKQogICAgICAgICAgICAg ICAgOiAiYngiLCAiY3giLCAiZHgiKTsKICAgICAgICByZXR1cm4gZWF4Owp9CnN0YXRpYyBpbmxp bmUgdW5zaWduZWQgaW50IGNwdWlkX2VieCh1bnNpZ25lZCBpbnQgb3ApCnsKICAgICAgICB1bnNp Z25lZCBpbnQgZWF4LCBlYng7CgogICAgICAgIF9fYXNtX18oImNwdWlkIgogICAgICAgICAgICAg ICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpCiAgICAgICAgICAgICAgICA6ICIwIiAob3ApCiAg ICAgICAgICAgICAgICA6ICJjeCIsICJkeCIgKTsKICAgICAgICByZXR1cm4gZWJ4Owp9CnN0YXRp YyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VjeCh1bnNpZ25lZCBpbnQgb3ApCnsKICAgICAg ICB1bnNpZ25lZCBpbnQgZWF4LCBlY3g7CgogICAgICAgIF9fYXNtX18oImNwdWlkIgogICAgICAg ICAgICAgICAgOiAiPWEiIChlYXgpLCAiPWMiIChlY3gpCiAgICAgICAgICAgICAgICA6ICIwIiAo b3ApCiAgICAgICAgICAgICAgICA6ICJieCIsICJkeCIgKTsKICAgICAgICByZXR1cm4gZWN4Owp9 CnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2VkeCh1bnNpZ25lZCBpbnQgb3ApCnsK ICAgICAgICB1bnNpZ25lZCBpbnQgZWF4LCBlZHg7CgogICAgICAgIF9fYXNtX18oImNwdWlkIgog ICAgICAgICAgICAgICAgOiAiPWEiIChlYXgpLCAiPWQiIChlZHgpCiAgICAgICAgICAgICAgICA6 ICIwIiAob3ApCiAgICAgICAgICAgICAgICA6ICJieCIsICJjeCIpOwogICAgICAgIHJldHVybiBl ZHg7Cn0KIyAyMDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpleHRl cm4gdW5zaWduZWQgbG9uZyBtbXVfY3I0X2ZlYXR1cmVzOwoKc3RhdGljIGlubGluZSB2b2lkIHNl dF9pbl9jcjQgKHVuc2lnbmVkIGxvbmcgbWFzaykKewogICAgICAgIG1tdV9jcjRfZmVhdHVyZXMg fD0gbWFzazsKICAgICAgICBfX2FzbV9fKCJtb3ZsICUlY3I0LCUlZWF4XG5cdCIKICAgICAgICAg ICAgICAgICJvcmwgJTAsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgIm1vdmwgJSVlYXgsJSVj cjRcbiIKICAgICAgICAgICAgICAgIDogOiAiaXJnIiAobWFzaykKICAgICAgICAgICAgICAgIDoi YXgiKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2luX2NyNCAodW5zaWduZWQgbG9uZyBt YXNrKQp7CiAgICAgICAgbW11X2NyNF9mZWF0dXJlcyAmPSB+bWFzazsKICAgICAgICBfX2FzbV9f KCJtb3ZsICUlY3I0LCUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJhbmRsICUwLCUlZWF4XG5c dCIKICAgICAgICAgICAgICAgICJtb3ZsICUlZWF4LCUlY3I0XG4iCiAgICAgICAgICAgICAgICA6 IDogImlyZyIgKH5tYXNrKQogICAgICAgICAgICAgICAgOiJheCIpOwp9CiMgMjYwICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIGludCBNQ0FfYnVzOwoKCgpl eHRlcm4gdW5zaWduZWQgaW50IG1hY2hpbmVfaWQ7CmV4dGVybiB1bnNpZ25lZCBpbnQgbWFjaGlu ZV9zdWJtb2RlbF9pZDsKZXh0ZXJuIHVuc2lnbmVkIGludCBCSU9TX3JldmlzaW9uOwpleHRlcm4g dW5zaWduZWQgaW50IG1jYV9wZW50aXVtX2ZsYWc7CiMgMjg2ICIvdXNyL3NyYy9saW51eC9pbmNs dWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0IGkzODdfZnNhdmVfc3RydWN0IHsKICAgICAgICBs b25nIGN3ZDsKICAgICAgICBsb25nIHN3ZDsKICAgICAgICBsb25nIHR3ZDsKICAgICAgICBsb25n IGZpcDsKICAgICAgICBsb25nIGZjczsKICAgICAgICBsb25nIGZvbzsKICAgICAgICBsb25nIGZv czsKICAgICAgICBsb25nIHN0X3NwYWNlWzIwXTsKICAgICAgICBsb25nIHN0YXR1czsKfTsKCnN0 cnVjdCBpMzg3X2Z4c2F2ZV9zdHJ1Y3QgewogICAgICAgIHVuc2lnbmVkIHNob3J0IGN3ZDsKICAg ICAgICB1bnNpZ25lZCBzaG9ydCBzd2Q7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHdkOwogICAg ICAgIHVuc2lnbmVkIHNob3J0IGZvcDsKICAgICAgICBsb25nIGZpcDsKICAgICAgICBsb25nIGZj czsKICAgICAgICBsb25nIGZvbzsKICAgICAgICBsb25nIGZvczsKICAgICAgICBsb25nIG14Y3Ny OwogICAgICAgIGxvbmcgcmVzZXJ2ZWQ7CiAgICAgICAgbG9uZyBzdF9zcGFjZVszMl07CiAgICAg ICAgbG9uZyB4bW1fc3BhY2VbMzJdOwogICAgICAgIGxvbmcgcGFkZGluZ1s1Nl07Cn0gX19hdHRy aWJ1dGVfXyAoKGFsaWduZWQgKDE2KSkpOwoKc3RydWN0IGkzODdfc29mdF9zdHJ1Y3QgewogICAg ICAgIGxvbmcgY3dkOwogICAgICAgIGxvbmcgc3dkOwogICAgICAgIGxvbmcgdHdkOwogICAgICAg IGxvbmcgZmlwOwogICAgICAgIGxvbmcgZmNzOwogICAgICAgIGxvbmcgZm9vOwogICAgICAgIGxv bmcgZm9zOwogICAgICAgIGxvbmcgc3Rfc3BhY2VbMjBdOwogICAgICAgIHVuc2lnbmVkIGNoYXIg ZnRvcCwgY2hhbmdlZCwgbG9va2FoZWFkLCBub191cGRhdGUsIHJtLCBhbGltaXQ7CiAgICAgICAg c3RydWN0IGluZm8gKmluZm87CiAgICAgICAgdW5zaWduZWQgbG9uZyBlbnRyeV9laXA7Cn07Cgp1 bmlvbiBpMzg3X3VuaW9uIHsKICAgICAgICBzdHJ1Y3QgaTM4N19mc2F2ZV9zdHJ1Y3QgZnNhdmU7 CiAgICAgICAgc3RydWN0IGkzODdfZnhzYXZlX3N0cnVjdCBmeHNhdmU7CiAgICAgICAgc3RydWN0 IGkzODdfc29mdF9zdHJ1Y3Qgc29mdDsKfTsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNp Z25lZCBsb25nIHNlZzsKfSBtbV9zZWdtZW50X3Q7CgpzdHJ1Y3QgdHNzX3N0cnVjdCB7CiAgICAg ICAgdW5zaWduZWQgc2hvcnQgYmFja19saW5rLF9fYmxoOwogICAgICAgIHVuc2lnbmVkIGxvbmcg ZXNwMDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczAsX19zczBoOwogICAgICAgIHVuc2lnbmVk IGxvbmcgZXNwMTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczEsX19zczFoOwogICAgICAgIHVu c2lnbmVkIGxvbmcgZXNwMjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzczIsX19zczJoOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgX19jcjM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlaXA7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBlZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlYXgsZWN4LGVk eCxlYng7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc3A7CiAgICAgICAgdW5zaWduZWQgbG9uZyBl YnA7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlc2k7CiAgICAgICAgdW5zaWduZWQgbG9uZyBlZGk7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXMsIF9fZXNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0 IGNzLCBfX2NzaDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzcywgX19zc2g7CiAgICAgICAgdW5z aWduZWQgc2hvcnQgZHMsIF9fZHNoOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZzLCBfX2ZzaDsK ICAgICAgICB1bnNpZ25lZCBzaG9ydCBncywgX19nc2g7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg bGR0LCBfX2xkdGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdHJhY2UsIGJpdG1hcDsKICAgICAg ICB1bnNpZ25lZCBsb25nIGlvX2JpdG1hcFszMiArMV07CgoKCiAgICAgICAgdW5zaWduZWQgbG9u ZyBfX2NhY2hlbGluZV9maWxsZXJbNV07Cn07CgpzdHJ1Y3QgdGhyZWFkX3N0cnVjdCB7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBlc3AwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZWlwOwogICAgICAg IHVuc2lnbmVkIGxvbmcgZXNwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnM7CiAgICAgICAgdW5z aWduZWQgbG9uZyBnczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBkZWJ1Z3JlZ1s4XTsKCiAgICAg ICAgdW5zaWduZWQgbG9uZyBjcjIsIHRyYXBfbm8sIGVycm9yX2NvZGU7CgogICAgICAgIHVuaW9u IGkzODdfdW5pb24gaTM4NzsKCiAgICAgICAgc3RydWN0IHZtODZfc3RydWN0ICogdm04Nl9pbmZv OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2NyZWVuX2JpdG1hcDsKICAgICAgICB1bnNpZ25lZCBs b25nIHY4NmZsYWdzLCB2ODZtYXNrLCB2ODZtb2RlLCBzYXZlZF9lc3AwOwoKICAgICAgICBpbnQg aW9wZXJtOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW9fYml0bWFwWzMyICsxXTsKfTsKIyA0Mjgg Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgdGFza19zdHJ1 Y3Q7CnN0cnVjdCBtbV9zdHJ1Y3Q7CgoKZXh0ZXJuIHZvaWQgcmVsZWFzZV90aHJlYWQoc3RydWN0 IHRhc2tfc3RydWN0ICopOwoKCgpleHRlcm4gaW50IGtlcm5lbF90aHJlYWQoaW50ICgqZm4pKHZv aWQgKiksIHZvaWQgKiBhcmcsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwoKCmV4dGVybiB2b2lkIGNv cHlfc2VnbWVudHMoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBzdHJ1Y3QgbW1fc3RydWN0ICogbW0p OwpleHRlcm4gdm9pZCByZWxlYXNlX3NlZ21lbnRzKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSk7CgoK CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdGhyZWFkX3NhdmVkX3BjKHN0cnVjdCB0aHJl YWRfc3RydWN0ICp0KQp7CiAgICAgICAgcmV0dXJuICgodW5zaWduZWQgbG9uZyAqKXQtPmVzcClb M107Cn0KCnVuc2lnbmVkIGxvbmcgZ2V0X3djaGFuKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7CiMg NDYyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RydWN0IG1pY3Jv Y29kZSB7CiAgICAgICAgdW5zaWduZWQgaW50IGhkcnZlcjsKICAgICAgICB1bnNpZ25lZCBpbnQg cmV2OwogICAgICAgIHVuc2lnbmVkIGludCBkYXRlOwogICAgICAgIHVuc2lnbmVkIGludCBzaWc7 CiAgICAgICAgdW5zaWduZWQgaW50IGNrc3VtOwogICAgICAgIHVuc2lnbmVkIGludCBsZHJ2ZXI7 CiAgICAgICAgdW5zaWduZWQgaW50IHBmOwogICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZFs1 XTsKICAgICAgICB1bnNpZ25lZCBpbnQgYml0c1s1MDBdOwp9OwoKCgoKCnN0YXRpYyBpbmxpbmUg dm9pZCByZXBfbm9wKHZvaWQpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmVwO25v cCIpOwp9CgoKCgoKCgpleHRlcm4gaW5saW5lIHZvaWQgcHJlZmV0Y2goY29uc3Qgdm9pZCAqeCkK ewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgicHJlZmV0Y2hudGEgKCUwKSIgOiA6ICJy Iih4KSk7Cn0KIyAxNCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oIiAy CiMgNDggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaCIKc3RhdGljIGlu bGluZSB2b2lkIHByZWZldGNodyhjb25zdCB2b2lkICp4KSB7O30KIyA3ICIvdXNyL3NyYy9saW51 eC9pbmNsdWRlL2xpbnV4L2xpc3QuaCIgMgojIDE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp bnV4L2xpc3QuaCIKc3RydWN0IGxpc3RfaGVhZCB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAq bmV4dCwgKnByZXY7Cn07CiMgMzcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5o IgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fbGlzdF9hZGQoc3RydWN0IGxpc3RfaGVhZCAqIG5l dywKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICogcHJldiwKICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkICogbmV4dCkKewogICAgICAgIG5leHQtPnByZXYgPSBuZXc7CiAgICAgICAgbmV3LT5uZXh0 ID0gbmV4dDsKICAgICAgICBuZXctPnByZXYgPSBwcmV2OwogICAgICAgIHByZXYtPm5leHQgPSBu ZXc7Cn0KIyA1NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBf X2lubGluZV9fIHZvaWQgbGlzdF9hZGQoc3RydWN0IGxpc3RfaGVhZCAqbmV3LCBzdHJ1Y3QgbGlz dF9oZWFkICpoZWFkKQp7CiAgICAgICAgX19saXN0X2FkZChuZXcsIGhlYWQsIGhlYWQtPm5leHQp Owp9CiMgNjggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMgX19p bmxpbmVfXyB2b2lkIGxpc3RfYWRkX3RhaWwoc3RydWN0IGxpc3RfaGVhZCAqbmV3LCBzdHJ1Y3Qg bGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgX19saXN0X2FkZChuZXcsIGhlYWQtPnByZXYsIGhl YWQpOwp9CiMgODAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMg X19pbmxpbmVfXyB2b2lkIF9fbGlzdF9kZWwoc3RydWN0IGxpc3RfaGVhZCAqIHByZXYsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICogbmV4dCkKewog ICAgICAgIG5leHQtPnByZXYgPSBwcmV2OwogICAgICAgIHByZXYtPm5leHQgPSBuZXh0Owp9CgoK CgoKCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9kZWwoc3RydWN0IGxpc3RfaGVhZCAqZW50 cnkpCnsKICAgICAgICBfX2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBlbnRyeS0+bmV4dCk7Cn0KCgoK CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxpc3RfZGVsX2luaXQoc3RydWN0IGxpc3RfaGVhZCAq ZW50cnkpCnsKICAgICAgICBfX2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBlbnRyeS0+bmV4dCk7CiAg ICAgICAgZG8geyAoZW50cnkpLT5uZXh0ID0gKGVudHJ5KTsgKGVudHJ5KS0+cHJldiA9IChlbnRy eSk7IH0gd2hpbGUgKDApOwp9CgoKCgoKc3RhdGljIF9faW5saW5lX18gaW50IGxpc3RfZW1wdHko c3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogICAgICAgIHJldHVybiBoZWFkLT5uZXh0ID09IGhl YWQ7Cn0KCgoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X3NwbGljZShzdHJ1Y3QgbGlz dF9oZWFkICpsaXN0LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiAgICAgICAgc3RydWN0IGxp c3RfaGVhZCAqZmlyc3QgPSBsaXN0LT5uZXh0OwoKICAgICAgICBpZiAoZmlyc3QgIT0gbGlzdCkg ewogICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqbGFzdCA9IGxpc3QtPnByZXY7CiAg ICAgICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICphdCA9IGhlYWQtPm5leHQ7CgogICAgICAg ICAgICAgICAgZmlyc3QtPnByZXYgPSBoZWFkOwogICAgICAgICAgICAgICAgaGVhZC0+bmV4dCA9 IGZpcnN0OwoKICAgICAgICAgICAgICAgIGxhc3QtPm5leHQgPSBhdDsKICAgICAgICAgICAgICAg IGF0LT5wcmV2ID0gbGFzdDsKICAgICAgICB9Cn0KIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVk ZS9saW51eC93YWl0LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zcGlu bG9jay5oIiAxCiMgNDAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIK IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N0cmluZ2lmeS5oIiAxCiMgNDEgIi91 c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMgojIDU2ICIvdXNyL3NyYy9s aW51eC9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk ZS9hc20vc3BpbmxvY2suaCIgMQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0 b21pYy5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIgp0eXBl ZGVmIHN0cnVjdCB7IHZvbGF0aWxlIGludCBjb3VudGVyOyB9IGF0b21pY190OwojIDUzICIvdXNy L3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBh dG9taWNfYWRkKGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGls ZV9fKAogICAgICAgICAgICAgICAgImxvY2sgOyAiICJhZGRsICUxLCUwIgogICAgICAgICAgICAg ICAgOiI9bSIgKHYtPmNvdW50ZXIpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+ Y291bnRlcikpOwp9CiMgNjkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpz dGF0aWMgX19pbmxpbmVfXyB2b2lkIGF0b21pY19zdWIoaW50IGksIGF0b21pY190ICp2KQp7CiAg ICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAibG9jayA7ICIgInN1 YmwgJTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAgICAgICAg ICAgIDoiaXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSk7Cn0KIyA4NyAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfc3ViX2Fu ZF90ZXN0KGludCBpLCBhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAg ICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAibG9jayA7ICIgInN1 YmwgJTIsJTA7IHNldGUgJTEiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlciksICI9 cW0iIChjKQogICAgICAgICAgICAgICAgOiJpciIgKGkpLCAibSIgKHYtPmNvdW50ZXIpIDogIm1l bW9yeSIpOwogICAgICAgIHJldHVybiBjOwp9CiMgMTA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBhdG9taWNfaW5jKGF0b21pY190 ICp2KQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAibG9j ayA7ICIgImluY2wgJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlcikKICAgICAg ICAgICAgICAgIDoibSIgKHYtPmNvdW50ZXIpKTsKfQojIDEyMCAiL3Vzci9zcmMvbGludXgvaW5j bHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgYXRvbWljX2RlYyhhdG9t aWNfdCAqdikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAg ImxvY2sgOyAiICJkZWNsICUwIgogICAgICAgICAgICAgICAgOiI9bSIgKHYtPmNvdW50ZXIpCiAg ICAgICAgICAgICAgICA6Im0iICh2LT5jb3VudGVyKSk7Cn0KIyAxMzcgIi91c3Ivc3JjL2xpbnV4 L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgYXRvbWljX2RlY19h bmRfdGVzdChhdG9taWNfdCAqdikKewogICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKCiAgICAgICAg X19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAibG9jayA7ICIgImRlY2wgJTA7 IHNldGUgJTEiCiAgICAgICAgICAgICAgICA6Ij1tIiAodi0+Y291bnRlciksICI9cW0iIChjKQog ICAgICAgICAgICAgICAgOiJtIiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0 dXJuIGMgIT0gMDsKfQojIDE1NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXRvbWljLmgi CnN0YXRpYyBfX2lubGluZV9fIGludCBhdG9taWNfaW5jX2FuZF90ZXN0KGF0b21pY190ICp2KQp7 CiAgICAgICAgdW5zaWduZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygK ICAgICAgICAgICAgICAgICJsb2NrIDsgIiAiaW5jbCAlMDsgc2V0ZSAlMSIKICAgICAgICAgICAg ICAgIDoiPW0iICh2LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6Im0iICh2 LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gYyAhPSAwOwp9CiMgMTc4ICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIF9faW5saW5lX18gaW50 IGF0b21pY19hZGRfbmVnYXRpdmUoaW50IGksIGF0b21pY190ICp2KQp7CiAgICAgICAgdW5zaWdu ZWQgY2hhciBjOwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAg ICJsb2NrIDsgIiAiYWRkbCAlMiwlMDsgc2V0cyAlMSIKICAgICAgICAgICAgICAgIDoiPW0iICh2 LT5jb3VudGVyKSwgIj1xbSIgKGMpCiAgICAgICAgICAgICAgICA6ImlyIiAoaSksICJtIiAodi0+ Y291bnRlcikgOiAibWVtb3J5Iik7CiAgICAgICAgcmV0dXJuIGM7Cn0KIyA1ICIvdXNyL3NyYy9s aW51eC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk ZS9hc20vcndsb2NrLmgiIDEKIyA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zcGlubG9j ay5oIiAyCgoKCmV4dGVybiBpbnQgcHJpbnRrKGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKICAgICAg ICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChwcmludGYsIDEsIDIpKSk7CiMgMjYgIi91c3Ivc3Jj L2xpbnV4L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB2 b2xhdGlsZSB1bnNpZ25lZCBpbnQgbG9jazsKCgoKfSBzcGlubG9ja190OwojIDgwICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2FzbS9zcGlubG9jay5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc3Bpbl91 bmxvY2soc3BpbmxvY2tfdCAqbG9jaykKewoKCgoKCgogICAgICAgIF9fYXNtX18gX192b2xhdGls ZV9fKAogICAgICAgICAgICAgICAgIm1vdmIgJDEsJTAiIDoiPW0iIChsb2NrLT5sb2NrKSA6IDog Im1lbW9yeSIKICAgICAgICApOwp9CiMgMTE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9z cGlubG9jay5oIgpzdGF0aWMgaW5saW5lIGludCBzcGluX3RyeWxvY2soc3BpbmxvY2tfdCAqbG9j aykKewogICAgICAgIGNoYXIgb2xkdmFsOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAog ICAgICAgICAgICAgICAgInhjaGdiICViMCwlMSIKICAgICAgICAgICAgICAgIDoiPXEiIChvbGR2 YWwpLCAiPW0iIChsb2NrLT5sb2NrKQogICAgICAgICAgICAgICAgOiIwIiAoMCkgOiAibWVtb3J5 Iik7CiAgICAgICAgcmV0dXJuIG9sZHZhbCA+IDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBzcGlu X2xvY2soc3BpbmxvY2tfdCAqbG9jaykKewojIDEzNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9h c20vc3BpbmxvY2suaCIKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAg ICAgICJcbjE6XHQiICJsb2NrIDsgZGVjYiAlMFxuXHQiICJqcyAyZlxuIiAiLnN1YnNlY3Rpb24g MVxuXHQiICIiICIuaWZuZGVmICIgIi50ZXh0LmxvY2suIiAic2VtYXBob3JlIiAiXG5cdCIgIi50 ZXh0LmxvY2suIiAic2VtYXBob3JlIiAiOlxuXHQiICIuZW5kaWZcblx0IiAiMjpcdCIgImNtcGIg JDAsJTBcblx0IiAicmVwO25vcFxuXHQiICJqbGUgMmJcblx0IiAiam1wIDFiXG4iICIucHJldmlv dXNcblx0IgogICAgICAgICAgICAgICAgOiI9bSIgKGxvY2stPmxvY2spIDogOiAibWVtb3J5Iik7 Cn0KIyAxNTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiCnR5cGVkZWYg c3RydWN0IHsKICAgICAgICB2b2xhdGlsZSB1bnNpZ25lZCBpbnQgbG9jazsKCgoKfSByd2xvY2tf dDsKIyAxODIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiCnN0YXRpYyBp bmxpbmUgdm9pZCByZWFkX2xvY2socndsb2NrX3QgKnJ3KQp7CgoKCgogICAgICAgIGRvIHsgaWYg KF9fYnVpbHRpbl9jb25zdGFudF9wKHJ3KSkgYXNtIHZvbGF0aWxlKCJsb2NrIDsgIiAic3VibCAk MSwlMFxuXHQiICJqcyAyZlxuIiAiMTpcbiIgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRl ZiAiICIudGV4dC5sb2NrLiIgInNlbWFwaG9yZSIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNlbWFw aG9yZSIgIjpcblx0IiAiLmVuZGlmXG5cdCIgIjI6XHRwdXNobCAlJWVheFxuXHQiICJsZWFsICUw LCUlZWF4XG5cdCIgImNhbGwgIiAiX19yZWFkX2xvY2tfZmFpbGVkIiAiXG5cdCIgInBvcGwgJSVl YXhcblx0IiAiam1wIDFiXG4iICIucHJldmlvdXNcblx0IiA6Ij1tIiAoKih2b2xhdGlsZSBpbnQg KilydykgOiA6ICJtZW1vcnkiKTsgZWxzZSBhc20gdm9sYXRpbGUoImxvY2sgOyAiICJzdWJsICQx LCglMClcblx0IiAianMgMmZcbiIgIjE6XG4iICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5k ZWYgIiAiLnRleHQubG9jay4iICJzZW1hcGhvcmUiICJcblx0IiAiLnRleHQubG9jay4iICJzZW1h cGhvcmUiICI6XG5cdCIgIi5lbmRpZlxuXHQiICIyOlx0Y2FsbCAiICJfX3JlYWRfbG9ja19mYWls ZWQiICJcblx0IiAiam1wIDFiXG4iICIucHJldmlvdXNcblx0IiA6OiJhIiAocncpIDogIm1lbW9y eSIpOyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHdyaXRlX2xvY2socndsb2Nr X3QgKnJ3KQp7CgoKCgogICAgICAgIGRvIHsgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKHJ3KSkg YXNtIHZvbGF0aWxlKCJsb2NrIDsgIiAic3VibCAkIiAiMHgwMTAwMDAwMCIgIiwoJTApXG5cdCIg ImpueiAyZlxuIiAiMTpcbiIgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4 dC5sb2NrLiIgInNlbWFwaG9yZSIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNlbWFwaG9yZSIgIjpc blx0IiAiLmVuZGlmXG5cdCIgIjI6XHRwdXNobCAlJWVheFxuXHQiICJsZWFsICUwLCUlZWF4XG5c dCIgImNhbGwgIiAiX193cml0ZV9sb2NrX2ZhaWxlZCIgIlxuXHQiICJwb3BsICUlZWF4XG5cdCIg ImptcCAxYlxuIiAiLnByZXZpb3VzXG5cdCIgOiI9bSIgKCoodm9sYXRpbGUgaW50ICopcncpIDog OiAibWVtb3J5Iik7IGVsc2UgYXNtIHZvbGF0aWxlKCJsb2NrIDsgIiAic3VibCAkIiAiMHgwMTAw MDAwMCIgIiwoJTApXG5cdCIgImpueiAyZlxuIiAiMTpcbiIgIi5zdWJzZWN0aW9uIDFcblx0IiAi IiAiLmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInNlbWFwaG9yZSIgIlxuXHQiICIudGV4dC5sb2Nr LiIgInNlbWFwaG9yZSIgIjpcblx0IiAiLmVuZGlmXG5cdCIgIjI6XHRjYWxsICIgIl9fd3JpdGVf bG9ja19mYWlsZWQiICJcblx0IiAiam1wIDFiXG4iICIucHJldmlvdXNcblx0IiA6OiJhIiAocncp IDogIm1lbW9yeSIpOyB9IHdoaWxlICgwKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgd3JpdGVf dHJ5bG9jayhyd2xvY2tfdCAqbG9jaykKewogICAgICAgIGF0b21pY190ICpjb3VudCA9IChhdG9t aWNfdCAqKWxvY2s7CiAgICAgICAgaWYgKGF0b21pY19zdWJfYW5kX3Rlc3QoMHgwMTAwMDAwMCwg Y291bnQpKQogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgYXRvbWljX2FkZCgweDAx MDAwMDAwLCBjb3VudCk7CiAgICAgICAgcmV0dXJuIDA7Cn0KIyA1NyAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCiMgMTU1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L3NwaW5sb2NrLmgiCmV4dGVybiBpbnQgYXRvbWljX2RlY19hbmRfbG9jayhhdG9taWNf dCAqYXRvbWljLCBzcGlubG9ja190ICpsb2NrKTsKCgoKCgp0eXBlZGVmIHVuaW9uIHsKICAgIHNw aW5sb2NrX3QgbG9jazsKICAgIGNoYXIgZmlsbF91cFsoKDEgPDwgKCg1KSkpKV07Cn0gc3Bpbmxv Y2tfY2FjaGVsaW5lX3QgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQoKDEgPDwgKCg1KSkpKSkpOwoj IDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIgMgojIDMxICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKc3RydWN0IF9fd2FpdF9xdWV1ZSB7CiAgICAg ICAgdW5zaWduZWQgaW50IGZsYWdzOwoKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiB0YXNr OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdGFza19saXN0OwoKCgoKfTsKdHlwZWRlZiBzdHJ1 Y3QgX193YWl0X3F1ZXVlIHdhaXRfcXVldWVfdDsKIyA3NyAiL3Vzci9zcmMvbGludXgvaW5jbHVk ZS9saW51eC93YWl0LmgiCnN0cnVjdCBfX3dhaXRfcXVldWVfaGVhZCB7CiAgICAgICAgc3Bpbmxv Y2tfdCBsb2NrOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdGFza19saXN0OwoKCgoKfTsKdHlw ZWRlZiBzdHJ1Y3QgX193YWl0X3F1ZXVlX2hlYWQgd2FpdF9xdWV1ZV9oZWFkX3Q7CiMgMTU1ICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKc3RhdGljIGlubGluZSB2b2lkIGlu aXRfd2FpdHF1ZXVlX2hlYWQod2FpdF9xdWV1ZV9oZWFkX3QgKnEpCnsKCgoKCiAgICAgICAgcS0+ bG9jayA9IChzcGlubG9ja190KSB7IDEgfTsKICAgICAgICBkbyB7ICgmcS0+dGFza19saXN0KS0+ bmV4dCA9ICgmcS0+dGFza19saXN0KTsgKCZxLT50YXNrX2xpc3QpLT5wcmV2ID0gKCZxLT50YXNr X2xpc3QpOyB9IHdoaWxlICgwKTsKCgoKCn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3dhaXRx dWV1ZV9lbnRyeSh3YWl0X3F1ZXVlX3QgKnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewoKCgoK ICAgICAgICBxLT5mbGFncyA9IDA7CiAgICAgICAgcS0+dGFzayA9IHA7CgoKCn0KCnN0YXRpYyBp bmxpbmUgaW50IHdhaXRxdWV1ZV9hY3RpdmUod2FpdF9xdWV1ZV9oZWFkX3QgKnEpCnsKCgoKCgoK ICAgICAgICByZXR1cm4gIWxpc3RfZW1wdHkoJnEtPnRhc2tfbGlzdCk7Cn0KCnN0YXRpYyBpbmxp bmUgdm9pZCBfX2FkZF93YWl0X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpoZWFkLCB3YWl0X3F1 ZXVlX3QgKm5ldykKewojIDIwMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC93YWl0Lmgi CiAgICAgICAgbGlzdF9hZGQoJm5ldy0+dGFza19saXN0LCAmaGVhZC0+dGFza19saXN0KTsKfQoK CgoKc3RhdGljIGlubGluZSB2b2lkIF9fYWRkX3dhaXRfcXVldWVfdGFpbCh3YWl0X3F1ZXVlX2hl YWRfdCAqaGVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgd2FpdF9xdWV1ZV90ICpuZXcpCnsKIyAyMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu dXgvd2FpdC5oIgogICAgICAgIGxpc3RfYWRkX3RhaWwoJm5ldy0+dGFza19saXN0LCAmaGVhZC0+ dGFza19saXN0KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIF9fcmVtb3ZlX3dhaXRfcXVldWUod2Fp dF9xdWV1ZV9oZWFkX3QgKmhlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgd2FpdF9xdWV1ZV90ICpvbGQpCnsKCgoKCgogICAgICAgIGxp c3RfZGVsKCZvbGQtPnRhc2tfbGlzdCk7Cn0KIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9mcy5oIiAyCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdmZzLmgiIDEK CgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zdGF0ZnMuaCIgMQoKCgoKCgoKdHlw ZWRlZiBfX2tlcm5lbF9mc2lkX3QgZnNpZF90OwoKCgpzdHJ1Y3Qgc3RhdGZzIHsKICAgICAgICBs b25nIGZfdHlwZTsKICAgICAgICBsb25nIGZfYnNpemU7CiAgICAgICAgbG9uZyBmX2Jsb2NrczsK ICAgICAgICBsb25nIGZfYmZyZWU7CiAgICAgICAgbG9uZyBmX2JhdmFpbDsKICAgICAgICBsb25n IGZfZmlsZXM7CiAgICAgICAgbG9uZyBmX2ZmcmVlOwogICAgICAgIF9fa2VybmVsX2ZzaWRfdCBm X2ZzaWQ7CiAgICAgICAgbG9uZyBmX25hbWVsZW47CiAgICAgICAgbG9uZyBmX3NwYXJlWzZdOwp9 OwojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdmZzLmgiIDIKIyAxNSAiL3Vzci9z cmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk ZS9saW51eC9uZXQuaCIgMQojIDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldC5o IgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc29ja2V0LmgiIDEKCgoKCgojIDEg Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NvY2tldC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMv bGludXgvaW5jbHVkZS9hc20vc29ja2lvcy5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVk ZS9hc20vc29ja2V0LmgiIDIKIyA3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tl dC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zb2NraW9zLmgiIDEKIyA4 ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIiAyCiMgMSAiL3Vzci9zcmMv bGludXgvaW5jbHVkZS9saW51eC91aW8uaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L3Vpby5oIgpzdHJ1Y3QgaW92ZWMKewogICAgICAgIHZvaWQgKmlvdl9iYXNlOwogICAg ICAgIF9fa2VybmVsX3NpemVfdCBpb3ZfbGVuOwp9OwojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1 ZGUvbGludXgvc29ja2V0LmgiIDIKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHNhX2ZhbWlseV90 OwoKCgoKCnN0cnVjdCBzb2NrYWRkciB7CiAgICAgICAgc2FfZmFtaWx5X3Qgc2FfZmFtaWx5Owog ICAgICAgIGNoYXIgc2FfZGF0YVsxNF07Cn07CgpzdHJ1Y3QgbGluZ2VyIHsKICAgICAgICBpbnQg bF9vbm9mZjsKICAgICAgICBpbnQgbF9saW5nZXI7Cn07CgoKCgoKCgpzdHJ1Y3QgbXNnaGRyIHsK ICAgICAgICB2b2lkICogbXNnX25hbWU7CiAgICAgICAgaW50IG1zZ19uYW1lbGVuOwogICAgICAg IHN0cnVjdCBpb3ZlYyAqIG1zZ19pb3Y7CiAgICAgICAgX19rZXJuZWxfc2l6ZV90IG1zZ19pb3Zs ZW47CiAgICAgICAgdm9pZCAqIG1zZ19jb250cm9sOwogICAgICAgIF9fa2VybmVsX3NpemVfdCBt c2dfY29udHJvbGxlbjsKICAgICAgICB1bnNpZ25lZCBtc2dfZmxhZ3M7Cn07CgoKCgoKCgpzdHJ1 Y3QgY21zZ2hkciB7CiAgICAgICAgX19rZXJuZWxfc2l6ZV90IGNtc2dfbGVuOwogICAgICAgIGlu dCBjbXNnX2xldmVsOwogICAgICAgIGludCBjbXNnX3R5cGU7Cn07CiMgMTAyICIvdXNyL3NyYy9s aW51eC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRy ICogX19jbXNnX254dGhkcih2b2lkICpfX2N0bCwgX19rZXJuZWxfc2l6ZV90IF9fc2l6ZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY21zZ2hk ciAqX19jbXNnKQp7CiAgICAgICAgc3RydWN0IGNtc2doZHIgKiBfX3B0cjsKCiAgICAgICAgX19w dHIgPSAoc3RydWN0IGNtc2doZHIqKSgoKHVuc2lnbmVkIGNoYXIgKikgX19jbXNnKSArICggKChf X2Ntc2ctPmNtc2dfbGVuKStzaXplb2YobG9uZyktMSkgJiB+KHNpemVvZihsb25nKS0xKSApKTsK ICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpKChjaGFyKikoX19wdHIrMSkgLSAoY2hhciAqKSBf X2N0bCkgPiBfX3NpemUpCiAgICAgICAgICAgICAgICByZXR1cm4gKHN0cnVjdCBjbXNnaGRyICop MDsKCiAgICAgICAgcmV0dXJuIF9fcHRyOwp9CgpzdGF0aWMgaW5saW5lIHN0cnVjdCBjbXNnaGRy ICogY21zZ19ueHRoZHIgKHN0cnVjdCBtc2doZHIgKl9fbXNnLCBzdHJ1Y3QgY21zZ2hkciAqX19j bXNnKQp7CiAgICAgICAgcmV0dXJuIF9fY21zZ19ueHRoZHIoX19tc2ctPm1zZ19jb250cm9sLCBf X21zZy0+bXNnX2NvbnRyb2xsZW4sIF9fY21zZyk7Cn0KCgoKCgoKCnN0cnVjdCB1Y3JlZCB7CiAg ICAgICAgX191MzIgcGlkOwogICAgICAgIF9fdTMyIHVpZDsKICAgICAgICBfX3UzMiBnaWQ7Cn07 CiMgMjQ5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIgpleHRlcm4gaW50 IG1lbWNweV9mcm9taW92ZWModW5zaWduZWQgY2hhciAqa2RhdGEsIHN0cnVjdCBpb3ZlYyAqaW92 LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBtZW1jcHlfZnJvbWlvdmVjZW5kKHVuc2lnbmVkIGNoYXIg KmtkYXRhLCBzdHJ1Y3QgaW92ZWMgKmlvdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgb2Zmc2V0LCBpbnQgbGVuKTsKZXh0ZXJuIGludCBjc3VtX3BhcnRpYWxfY29weV9mcm9t aW92ZWNlbmQodW5zaWduZWQgY2hhciAqa2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBpb3ZlYyAqaW92LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuLCBpbnQgKmNzdW1wKTsKCmV4dGVybiBp bnQgdmVyaWZ5X2lvdmVjKHN0cnVjdCBtc2doZHIgKm0sIHN0cnVjdCBpb3ZlYyAqaW92LCBjaGFy ICphZGRyZXNzLCBpbnQgbW9kZSk7CmV4dGVybiBpbnQgbWVtY3B5X3RvaW92ZWMoc3RydWN0IGlv dmVjICp2LCB1bnNpZ25lZCBjaGFyICprZGF0YSwgaW50IGxlbik7CmV4dGVybiB2b2lkIG1lbWNw eV90b2tlcm5lbGlvdmVjKHN0cnVjdCBpb3ZlYyAqaW92LCB1bnNpZ25lZCBjaGFyICprZGF0YSwg aW50IGxlbik7CmV4dGVybiBpbnQgbW92ZV9hZGRyX3RvX3VzZXIodm9pZCAqa2FkZHIsIGludCBr bGVuLCB2b2lkICp1YWRkciwgaW50ICp1bGVuKTsKZXh0ZXJuIGludCBtb3ZlX2FkZHJfdG9fa2Vy bmVsKHZvaWQgKnVhZGRyLCBpbnQgdWxlbiwgdm9pZCAqa2FkZHIpOwpleHRlcm4gaW50IHB1dF9j bXNnKHN0cnVjdCBtc2doZHIqLCBpbnQgbGV2ZWwsIGludCB0eXBlLCBpbnQgbGVuLCB2b2lkICpk YXRhKTsKIyAyMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZXQuaCIgMgoKCnN0cnVj dCBwb2xsX3RhYmxlX3N0cnVjdDsKIyA0OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9u ZXQuaCIKdHlwZWRlZiBlbnVtIHsKICBTU19GUkVFID0gMCwKICBTU19VTkNPTk5FQ1RFRCwKICBT U19DT05ORUNUSU5HLAogIFNTX0NPTk5FQ1RFRCwKICBTU19ESVNDT05ORUNUSU5HCn0gc29ja2V0 X3N0YXRlOwojIDY1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25ldC5oIgpzdHJ1Y3Qg c29ja2V0CnsKICAgICAgICBzb2NrZXRfc3RhdGUgc3RhdGU7CgogICAgICAgIHVuc2lnbmVkIGxv bmcgZmxhZ3M7CiAgICAgICAgc3RydWN0IHByb3RvX29wcyAqb3BzOwogICAgICAgIHN0cnVjdCBp bm9kZSAqaW5vZGU7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKmZhc3luY19saXN0Owog ICAgICAgIHN0cnVjdCBmaWxlICpmaWxlOwogICAgICAgIHN0cnVjdCBzb2NrICpzazsKICAgICAg ICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoKICAgICAgICBzaG9ydCB0eXBlOwogICAgICAgIHVu c2lnbmVkIGNoYXIgcGFzc2NyZWQ7Cn07CgoKCnN0cnVjdCBzY21fY29va2llOwpzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3Q7CnN0cnVjdCBwYWdlOwoKc3RydWN0IHByb3RvX29wcyB7CiAgaW50IGZhbWls eTsKCiAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBzb2NrZXQgKnNvY2spOwogIGludCAoKmJpbmQp IChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVteWFkZHIsCiAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgc29ja2FkZHJfbGVuKTsKICBpbnQgKCpjb25uZWN0KSAoc3Ry dWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyICp1c2VydmFkZHIsCiAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgc29ja2FkZHJfbGVuLCBpbnQgZmxhZ3MpOwogIGludCAoKnNvY2tl dHBhaXIpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrMSwgc3RydWN0IHNvY2tldCAqc29jazIpOwogIGlu dCAoKmFjY2VwdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ss CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpOwogIGludCAoKmdldG5hbWUpIChz dHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAogICAgICAgICAgICAg ICAgICAgICAgICAgaW50ICp1c29ja2FkZHJfbGVuLCBpbnQgcGVlcik7CiAgdW5zaWduZWQgaW50 ICgqcG9sbCkgKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qg cG9sbF90YWJsZV9zdHJ1Y3QgKndhaXQpOwogIGludCAoKmlvY3RsKSAoc3RydWN0IHNvY2tldCAq c29jaywgdW5zaWduZWQgaW50IGNtZCwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgYXJnKTsKICBpbnQgKCpsaXN0ZW4pIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGVu KTsKICBpbnQgKCpzaHV0ZG93bikgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBmbGFncyk7CiAg aW50ICgqc2V0c29ja29wdCkgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9w dG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpvcHR2YWwsIGludCBvcHRsZW4p OwogIGludCAoKmdldHNvY2tvcHQpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGlu dCBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3B0dmFsLCBpbnQgKm9w dGxlbik7CiAgaW50ICgqc2VuZG1zZykgKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2do ZHIgKm0sIGludCB0b3RhbF9sZW4sIHN0cnVjdCBzY21fY29va2llICpzY20pOwogIGludCAoKnJl Y3Ztc2cpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptLCBpbnQgdG90YWxf bGVuLCBpbnQgZmxhZ3MsIHN0cnVjdCBzY21fY29va2llICpzY20pOwogIGludCAoKm1tYXApIChz dHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICogdm1hKTsKICBzc2l6ZV90ICgqc2VuZHBhZ2UpIChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBz dHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG9mZnNldCwgc2l6ZV90IHNpemUsIGludCBmbGFncyk7Cn07 CgpzdHJ1Y3QgbmV0X3Byb3RvX2ZhbWlseQp7CiAgICAgICAgaW50IGZhbWlseTsKICAgICAgICBp bnQgKCpjcmVhdGUpKHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBwcm90b2NvbCk7CgoKICAgICAg ICBzaG9ydCBhdXRoZW50aWNhdGlvbjsKICAgICAgICBzaG9ydCBlbmNyeXB0aW9uOwogICAgICAg IHNob3J0IGVuY3J5cHRfbmV0Owp9OwoKc3RydWN0IG5ldF9wcm90bwp7CiAgICAgICAgY29uc3Qg Y2hhciAqbmFtZTsKICAgICAgICB2b2lkICgqaW5pdF9mdW5jKShzdHJ1Y3QgbmV0X3Byb3RvICop Owp9OwoKZXh0ZXJuIGludCBzb2NrX3dha2VfYXN5bmMoc3RydWN0IHNvY2tldCAqc2ssIGludCBo b3csIGludCBiYW5kKTsKZXh0ZXJuIGludCBzb2NrX3JlZ2lzdGVyKHN0cnVjdCBuZXRfcHJvdG9f ZmFtaWx5ICpmYW0pOwpleHRlcm4gaW50IHNvY2tfdW5yZWdpc3RlcihpbnQgZmFtaWx5KTsKZXh0 ZXJuIHN0cnVjdCBzb2NrZXQgKnNvY2tfYWxsb2Modm9pZCk7CmV4dGVybiBpbnQgc29ja19jcmVh dGUoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90bywgc3RydWN0IHNvY2tldCAqKik7CmV4 dGVybiB2b2lkIHNvY2tfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICopOwpleHRlcm4gaW50IHNvY2tf c2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBtc2doZHIgKm0sIGludCBsZW4pOwpleHRl cm4gaW50IHNvY2tfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICosIHN0cnVjdCBtc2doZHIgKm0sIGlu dCBsZW4sIGludCBmbGFncyk7CmV4dGVybiBpbnQgc29ja19yZWFkdl93cml0ZXYoaW50IHR5cGUs IHN0cnVjdCBpbm9kZSAqIGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW92ZWMgKiBpb3YsIGxvbmcgY291bnQs IGxvbmcgc2l6ZSk7CgpleHRlcm4gaW50IG5ldF9yYXRlbGltaXQodm9pZCk7CmV4dGVybiB1bnNp Z25lZCBsb25nIG5ldF9yYW5kb20odm9pZCk7CmV4dGVybiB2b2lkIG5ldF9zcmFuZG9tKHVuc2ln bmVkIGxvbmcpOwojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAxCiMgNjcgIi91c3Ivc3Jj L2xpbnV4L2luY2x1ZGUvbGludXgva2Rldl90LmgiCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQga2Rl dl90OwojIDc2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIgpleHRlcm4g Y29uc3QgY2hhciAqIGtkZXZuYW1lKGtkZXZfdCk7CiMgOTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1 ZGUvbGludXgva2Rldl90LmgiCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGtkZXZfdF90b19u cihrZGV2X3QgZGV2KSB7CiAgICAgICAgcmV0dXJuICgoKHVuc2lnbmVkIGludCkgKChkZXYpID4+ IDgpKTw8OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8PCA4KSAtIDEpKSk7Cn0K CnN0YXRpYyBpbmxpbmUga2Rldl90IHRvX2tkZXZfdChpbnQgZGV2KQp7CiAgICAgICAgaW50IG1h am9yLCBtaW5vcjsKIyAxMDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgva2Rldl90Lmgi CiAgICAgICAgbWFqb3IgPSAoZGV2ID4+IDgpOwogICAgICAgIG1pbm9yID0gKGRldiAmIDB4ZmYp OwoKICAgICAgICByZXR1cm4gKCgobWFqb3IpIDw8IDgpIHwgKG1pbm9yKSk7Cn0KIyAxNyAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j bHVkZS9saW51eC9pb2N0bC5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v aW9jdGwuaCIgMQojIDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaW9jdGwuaCIgMgoj IDE4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiL3Vzci9zcmMv bGludXgvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIgMQoKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4 L2luY2x1ZGUvbGludXgvbW91bnQuaCIgMQojIDE5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp bnV4L21vdW50LmgiCnN0cnVjdCB2ZnNtb3VudAp7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBt bnRfaGFzaDsKICAgICAgICBzdHJ1Y3QgdmZzbW91bnQgKm1udF9wYXJlbnQ7CiAgICAgICAgc3Ry dWN0IGRlbnRyeSAqbW50X21vdW50cG9pbnQ7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqbW50X3Jv b3Q7CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICptbnRfc2I7CiAgICAgICAgc3RydWN0IGxp c3RfaGVhZCBtbnRfbW91bnRzOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2NoaWxkOwog ICAgICAgIGF0b21pY190IG1udF9jb3VudDsKICAgICAgICBpbnQgbW50X2ZsYWdzOwogICAgICAg IGNoYXIgKm1udF9kZXZuYW1lOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbW50X2xpc3Q7Cn07 CgpzdGF0aWMgaW5saW5lIHN0cnVjdCB2ZnNtb3VudCAqbW50Z2V0KHN0cnVjdCB2ZnNtb3VudCAq bW50KQp7CiAgICAgICAgaWYgKG1udCkKICAgICAgICAgICAgICAgIGF0b21pY19pbmMoJm1udC0+ bW50X2NvdW50KTsKICAgICAgICByZXR1cm4gbW50Owp9CgpleHRlcm4gdm9pZCBfX21udHB1dChz dHJ1Y3QgdmZzbW91bnQgKm1udCk7CgpzdGF0aWMgaW5saW5lIHZvaWQgbW50cHV0KHN0cnVjdCB2 ZnNtb3VudCAqbW50KQp7CiAgICAgICAgaWYgKG1udCkgewogICAgICAgICAgICAgICAgaWYgKGF0 b21pY19kZWNfYW5kX3Rlc3QoJm1udC0+bW50X2NvdW50KSkKICAgICAgICAgICAgICAgICAgICAg ICAgX19tbnRwdXQobW50KTsKICAgICAgICB9Cn0KIyA4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L2RjYWNoZS5oIiAyCiMgMjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZGNh Y2hlLmgiCnN0cnVjdCBxc3RyIHsKICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICogbmFtZTsK ICAgICAgICB1bnNpZ25lZCBpbnQgbGVuOwogICAgICAgIHVuc2lnbmVkIGludCBoYXNoOwp9OwoK c3RydWN0IGRlbnRyeV9zdGF0X3QgewogICAgICAgIGludCBucl9kZW50cnk7CiAgICAgICAgaW50 IG5yX3VudXNlZDsKICAgICAgICBpbnQgYWdlX2xpbWl0OwogICAgICAgIGludCB3YW50X3BhZ2Vz OwogICAgICAgIGludCBkdW1teVsyXTsKfTsKZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3RhdF90IGRl bnRyeV9zdGF0OwoKCgoKCgpzdGF0aWMgX19pbmxpbmVfXyB1bnNpZ25lZCBsb25nIHBhcnRpYWxf bmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcgYywgdW5zaWduZWQgbG9uZyBwcmV2aGFzaCkKewogICAg ICAgIHJldHVybiAocHJldmhhc2ggKyAoYyA8PCA0KSArIChjID4+IDQpKSAqIDExOwp9CgoKc3Rh dGljIF9faW5saW5lX18gdW5zaWduZWQgbG9uZyBlbmRfbmFtZV9oYXNoKHVuc2lnbmVkIGxvbmcg aGFzaCkKewogICAgICAgIHJldHVybiAodW5zaWduZWQgaW50KSBoYXNoOwp9CgoKc3RhdGljIF9f aW5saW5lX18gdW5zaWduZWQgaW50IGZ1bGxfbmFtZV9oYXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIg KiBuYW1lLCB1bnNpZ25lZCBpbnQgbGVuKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBoYXNoID0g MDsKICAgICAgICB3aGlsZSAobGVuLS0pCiAgICAgICAgICAgICAgICBoYXNoID0gcGFydGlhbF9u YW1lX2hhc2goKm5hbWUrKywgaGFzaCk7CiAgICAgICAgcmV0dXJuIGVuZF9uYW1lX2hhc2goaGFz aCk7Cn0KCgoKc3RydWN0IGRlbnRyeSB7CiAgICAgICAgYXRvbWljX3QgZF9jb3VudDsKICAgICAg ICB1bnNpZ25lZCBpbnQgZF9mbGFnczsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBkX2lub2RlOwog ICAgICAgIHN0cnVjdCBkZW50cnkgKiBkX3BhcmVudDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk IGRfaGFzaDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfbHJ1OwogICAgICAgIHN0cnVjdCBs aXN0X2hlYWQgZF9jaGlsZDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfc3ViZGlyczsKICAg ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRfYWxpYXM7CiAgICAgICAgaW50IGRfbW91bnRlZDsKICAg ICAgICBzdHJ1Y3QgcXN0ciBkX25hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3RpbWU7CiAg ICAgICAgc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zICpkX29wOwogICAgICAgIHN0cnVjdCBzdXBl cl9ibG9jayAqIGRfc2I7CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX3Zmc19mbGFnczsKICAgICAg ICB2b2lkICogZF9mc2RhdGE7CiAgICAgICAgdW5zaWduZWQgY2hhciBkX2luYW1lWzE2XTsKfTsK CnN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqZF9yZXZhbGlkYXRlKShz dHJ1Y3QgZGVudHJ5ICosIGludCk7CiAgICAgICAgaW50ICgqZF9oYXNoKSAoc3RydWN0IGRlbnRy eSAqLCBzdHJ1Y3QgcXN0ciAqKTsKICAgICAgICBpbnQgKCpkX2NvbXBhcmUpIChzdHJ1Y3QgZGVu dHJ5ICosIHN0cnVjdCBxc3RyICosIHN0cnVjdCBxc3RyICopOwogICAgICAgIGludCAoKmRfZGVs ZXRlKShzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIHZvaWQgKCpkX3JlbGVhc2UpKHN0cnVjdCBk ZW50cnkgKik7CiAgICAgICAgdm9pZCAoKmRfaXB1dCkoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg aW5vZGUgKik7Cn07CiMgMTI3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5o IgpleHRlcm4gc3BpbmxvY2tfdCBkY2FjaGVfbG9jazsKIyAxNDYgIi91c3Ivc3JjL2xpbnV4L2lu Y2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBfX2lubGluZV9fIHZvaWQgZF9kcm9wKHN0cnVj dCBkZW50cnkgKiBkZW50cnkpCnsKICAgICAgICBzcGluX2xvY2soJmRjYWNoZV9sb2NrKTsKICAg ICAgICBsaXN0X2RlbCgmZGVudHJ5LT5kX2hhc2gpOwogICAgICAgIGRvIHsgKCZkZW50cnktPmRf aGFzaCktPm5leHQgPSAoJmRlbnRyeS0+ZF9oYXNoKTsgKCZkZW50cnktPmRfaGFzaCktPnByZXYg PSAoJmRlbnRyeS0+ZF9oYXNoKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgc3Bpbl91bmxvY2soJmRj YWNoZV9sb2NrKTsKfQoKc3RhdGljIF9faW5saW5lX18gaW50IGRuYW1lX2V4dGVybmFsKHN0cnVj dCBkZW50cnkgKmQpCnsKICAgICAgICByZXR1cm4gZC0+ZF9uYW1lLm5hbWUgIT0gZC0+ZF9pbmFt ZTsKfQoKCgoKZXh0ZXJuIHZvaWQgZF9pbnN0YW50aWF0ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVj dCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZF9kZWxldGUoc3RydWN0IGRlbnRyeSAqKTsKCgpleHRl cm4gc3RydWN0IGRlbnRyeSAqIGRfYWxsb2Moc3RydWN0IGRlbnRyeSAqLCBjb25zdCBzdHJ1Y3Qg cXN0ciAqKTsKZXh0ZXJuIHZvaWQgc2hyaW5rX2RjYWNoZV9zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sg Kik7CmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfcGFyZW50KHN0cnVjdCBkZW50cnkgKik7CmV4 dGVybiBpbnQgZF9pbnZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKik7CgoKc3RydWN0IHpvbmVfc3Ry dWN0OwoKZXh0ZXJuIGludCBzaHJpbmtfZGNhY2hlX21lbW9yeShpbnQsIHVuc2lnbmVkIGludCk7 CmV4dGVybiB2b2lkIHBydW5lX2RjYWNoZShpbnQpOwoKCmV4dGVybiBpbnQgc2hyaW5rX2ljYWNo ZV9tZW1vcnkoaW50LCBpbnQpOwpleHRlcm4gdm9pZCBwcnVuZV9pY2FjaGUoaW50KTsKCgpleHRl cm4gaW50IHNocmlua19kcWNhY2hlX21lbW9yeShpbnQsIHVuc2lnbmVkIGludCk7CgoKZXh0ZXJu IHN0cnVjdCBkZW50cnkgKiBkX2FsbG9jX3Jvb3Qoc3RydWN0IGlub2RlICopOwoKCmV4dGVybiB2 b2lkIGRfZ2Vub2NpZGUoc3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpk X2ZpbmRfYWxpYXMoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBkX3BydW5lX2FsaWFzZXMo c3RydWN0IGlub2RlICopOwoKCmV4dGVybiBpbnQgaGF2ZV9zdWJtb3VudHMoc3RydWN0IGRlbnRy eSAqKTsKCgoKCmV4dGVybiB2b2lkIGRfcmVoYXNoKHN0cnVjdCBkZW50cnkgKik7CiMgMjEwICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyB2 b2lkIGRfYWRkKHN0cnVjdCBkZW50cnkgKiBlbnRyeSwgc3RydWN0IGlub2RlICogaW5vZGUpCnsK ICAgICAgICBkX2luc3RhbnRpYXRlKGVudHJ5LCBpbm9kZSk7CiAgICAgICAgZF9yZWhhc2goZW50 cnkpOwp9CgoKZXh0ZXJuIHZvaWQgZF9tb3ZlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRy eSAqKTsKCgpleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfbG9va3VwKHN0cnVjdCBkZW50cnkgKiwg c3RydWN0IHFzdHIgKik7CgoKZXh0ZXJuIGludCBkX3ZhbGlkYXRlKHN0cnVjdCBkZW50cnkgKiwg c3RydWN0IGRlbnRyeSAqKTsKCmV4dGVybiBjaGFyICogX19kX3BhdGgoc3RydWN0IGRlbnRyeSAq LCBzdHJ1Y3QgdmZzbW91bnQgKiwgc3RydWN0IGRlbnRyeSAqLAogICAgICAgIHN0cnVjdCB2ZnNt b3VudCAqLCBjaGFyICosIGludCk7CiMgMjQzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4 L2RjYWNoZS5oIgpzdGF0aWMgX19pbmxpbmVfXyBzdHJ1Y3QgZGVudHJ5ICogZGdldChzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICBpZiAoZGVudHJ5KSB7CiAgICAgICAgICAgICAgICBp ZiAoISgoJmRlbnRyeS0+ZF9jb3VudCktPmNvdW50ZXIpKQogICAgICAgICAgICAgICAgICAgICAg ICBfX291dF9vZl9saW5lX2J1ZygyNDcpOwogICAgICAgICAgICAgICAgYXRvbWljX2luYygmZGVu dHJ5LT5kX2NvdW50KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRlbnRyeTsKfQoKZXh0ZXJu IHN0cnVjdCBkZW50cnkgKiBkZ2V0X2xvY2tlZChzdHJ1Y3QgZGVudHJ5ICopOwojIDI2MiAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIF9faW5saW5lX18gaW50 IGRfdW5oYXNoZWQoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiAgICAgICAgcmV0dXJuIGxpc3Rf ZW1wdHkoJmRlbnRyeS0+ZF9oYXNoKTsKfQoKZXh0ZXJuIHZvaWQgZHB1dChzdHJ1Y3QgZGVudHJ5 ICopOwoKc3RhdGljIF9faW5saW5lX18gaW50IGRfbW91bnRwb2ludChzdHJ1Y3QgZGVudHJ5ICpk ZW50cnkpCnsKICAgICAgICByZXR1cm4gZGVudHJ5LT5kX21vdW50ZWQ7Cn0KCmV4dGVybiBzdHJ1 Y3QgdmZzbW91bnQgKmxvb2t1cF9tbnQoc3RydWN0IHZmc21vdW50ICosIHN0cnVjdCBkZW50cnkg Kik7CiMgMjAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51 eC9pbmNsdWRlL2FzbS9zdGF0LmgiIDEKCgoKc3RydWN0IF9fb2xkX2tlcm5lbF9zdGF0IHsKICAg ICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfaW5v OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg c3Rfbmxpbms7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVuc2lnbmVk IHNob3J0IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVu c2lnbmVkIGxvbmcgc3Rfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgc3RfbXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9jdGlt ZTsKfTsKCnN0cnVjdCBzdGF0IHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9kZXY7CiAgICAg ICAgdW5zaWduZWQgc2hvcnQgX19wYWQxOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfaW5vOwog ICAgICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3Rf bmxpbms7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfdWlkOwogICAgICAgIHVuc2lnbmVkIHNo b3J0IHN0X2dpZDsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwogICAgICAgIHVuc2ln bmVkIHNob3J0IF9fcGFkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X3NpemU7CiAgICAgICAg dW5zaWduZWQgbG9uZyBzdF9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxvY2tz OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYXRpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBf X3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9tdGltZTsKICAgICAgICB1bnNpZ25l ZCBsb25nIF9fdW51c2VkMjsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2N0aW1lOwogICAgICAg IHVuc2lnbmVkIGxvbmcgX191bnVzZWQzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ0 OwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQ1Owp9OwoKCgoKc3RydWN0IHN0YXQ2NCB7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc3RfZGV2OwogICAgICAgIHVuc2lnbmVkIGNoYXIgX19w YWQwWzEwXTsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgX19zdF9pbm87CgogICAgICAgIHVuc2ln bmVkIGludCBzdF9tb2RlOwogICAgICAgIHVuc2lnbmVkIGludCBzdF9ubGluazsKCiAgICAgICAg dW5zaWduZWQgbG9uZyBzdF91aWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdF9naWQ7CgogICAg ICAgIHVuc2lnbmVkIHNob3J0IHN0X3JkZXY7CiAgICAgICAgdW5zaWduZWQgY2hhciBfX3BhZDNb MTBdOwoKICAgICAgICBsb25nIGxvbmcgc3Rfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHN0 X2Jsa3NpemU7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RfYmxvY2tzOwogICAgICAgIHVuc2ln bmVkIGxvbmcgX19wYWQ0OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2F0aW1lOwogICAgICAg IHVuc2lnbmVkIGxvbmcgX19wYWQ1OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X210aW1lOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ2OwoKICAgICAgICB1bnNpZ25lZCBsb25nIHN0X2N0 aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ3OwoKICAgICAgICB1bnNpZ25lZCBsb25n IGxvbmcgc3RfaW5vOwp9OwojIDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3RhdC5o IiAyCiMgMjEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCiMgMSAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51 eC9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIgpleHRlcm4gY2hhciAqIF9fX3N0cnRvazsKZXh0ZXJu IGNoYXIgKiBzdHJwYnJrKGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAq IHN0cnRvayhjaGFyICosY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKiBzdHJzZXAoY2hhciAq Kixjb25zdCBjaGFyICopOwpleHRlcm4gX19rZXJuZWxfc2l6ZV90IHN0cnNwbihjb25zdCBjaGFy ICosY29uc3QgY2hhciAqKTsKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N0 cmluZy5oIiAxCiMgMzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N0cmluZy5oIgpzdGF0 aWMgaW5saW5lIGNoYXIgKiBzdHJjcHkoY2hhciAqIGRlc3QsY29uc3QgY2hhciAqc3JjKQp7Cmlu dCBkMCwgZDEsIGQyOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAiMTpcdGxvZHNiXG5c dCIKICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxcblx0IgogICAg ICAgICJqbmUgMWIiCiAgICAgICAgOiAiPSZTIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZhIiAoZDIp CiAgICAgICAgOiIwIiAoc3JjKSwiMSIgKGRlc3QpIDogIm1lbW9yeSIpOwpyZXR1cm4gZGVzdDsK fQoKCnN0YXRpYyBpbmxpbmUgY2hhciAqIHN0cm5jcHkoY2hhciAqIGRlc3QsY29uc3QgY2hhciAq c3JjLHNpemVfdCBjb3VudCkKewppbnQgZDAsIGQxLCBkMiwgZDM7Cl9fYXNtX18gX192b2xhdGls ZV9fKAogICAgICAgICIxOlx0ZGVjbCAlMlxuXHQiCiAgICAgICAgImpzIDJmXG5cdCIKICAgICAg ICAibG9kc2Jcblx0IgogICAgICAgICJzdG9zYlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVh bFxuXHQiCiAgICAgICAgImpuZSAxYlxuXHQiCiAgICAgICAgInJlcFxuXHQiCiAgICAgICAgInN0 b3NiXG4iCiAgICAgICAgIjI6IgogICAgICAgIDogIj0mUyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0m YyIgKGQyKSwgIj0mYSIgKGQzKQogICAgICAgIDoiMCIgKHNyYyksIjEiIChkZXN0KSwiMiIgKGNv dW50KSA6ICJtZW1vcnkiKTsKcmV0dXJuIGRlc3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGNoYXIgKiBz dHJjYXQoY2hhciAqIGRlc3QsY29uc3QgY2hhciAqIHNyYykKewppbnQgZDAsIGQxLCBkMiwgZDM7 Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAgICAgICAgInNjYXNi XG5cdCIKICAgICAgICAiZGVjbCAlMVxuIgogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAgICAg ICJzdG9zYlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpuZSAx YiIKICAgICAgICA6ICI9JlMiIChkMCksICI9JkQiIChkMSksICI9JmEiIChkMiksICI9JmMiIChk MykKICAgICAgICA6ICIwIiAoc3JjKSwgIjEiIChkZXN0KSwgIjIiICgwKSwgIjMiICgweGZmZmZm ZmZmKToibWVtb3J5Iik7CnJldHVybiBkZXN0Owp9CgoKc3RhdGljIGlubGluZSBjaGFyICogc3Ry bmNhdChjaGFyICogZGVzdCxjb25zdCBjaGFyICogc3JjLHNpemVfdCBjb3VudCkKewppbnQgZDAs IGQxLCBkMiwgZDM7Cl9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICJyZXBuZVxuXHQiCiAg ICAgICAgInNjYXNiXG5cdCIKICAgICAgICAiZGVjbCAlMVxuXHQiCiAgICAgICAgIm1vdmwgJTgs JTNcbiIKICAgICAgICAiMTpcdGRlY2wgJTNcblx0IgogICAgICAgICJqcyAyZlxuXHQiCiAgICAg ICAgImxvZHNiXG5cdCIKICAgICAgICAic3Rvc2Jcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUl YWxcblx0IgogICAgICAgICJqbmUgMWJcbiIKICAgICAgICAiMjpcdHhvcmwgJTIsJTJcblx0Igog ICAgICAgICJzdG9zYiIKICAgICAgICA6ICI9JlMiIChkMCksICI9JkQiIChkMSksICI9JmEiIChk MiksICI9JmMiIChkMykKICAgICAgICA6ICIwIiAoc3JjKSwiMSIgKGRlc3QpLCIyIiAoMCksIjMi ICgweGZmZmZmZmZmKSwgImciIChjb3VudCkKICAgICAgICA6ICJtZW1vcnkiKTsKcmV0dXJuIGRl c3Q7Cn0KCgpzdGF0aWMgaW5saW5lIGludCBzdHJjbXAoY29uc3QgY2hhciAqIGNzLGNvbnN0IGNo YXIgKiBjdCkKewppbnQgZDAsIGQxOwpyZWdpc3RlciBpbnQgX19yZXM7Cl9fYXNtX18gX192b2xh dGlsZV9fKAogICAgICAgICIxOlx0bG9kc2Jcblx0IgogICAgICAgICJzY2FzYlxuXHQiCiAgICAg ICAgImpuZSAyZlxuXHQiCiAgICAgICAgInRlc3RiICUlYWwsJSVhbFxuXHQiCiAgICAgICAgImpu ZSAxYlxuXHQiCiAgICAgICAgInhvcmwgJSVlYXgsJSVlYXhcblx0IgogICAgICAgICJqbXAgM2Zc biIKICAgICAgICAiMjpcdHNiYmwgJSVlYXgsJSVlYXhcblx0IgogICAgICAgICJvcmIgJDEsJSVh bFxuIgogICAgICAgICIzOiIKICAgICAgICA6Ij1hIiAoX19yZXMpLCAiPSZTIiAoZDApLCAiPSZE IiAoZDEpCiAgICAgICAgICAgICAgICAgICAgIDoiMSIgKGNzKSwiMiIgKGN0KSk7CnJldHVybiBf X3JlczsKfQoKCnN0YXRpYyBpbmxpbmUgaW50IHN0cm5jbXAoY29uc3QgY2hhciAqIGNzLGNvbnN0 IGNoYXIgKiBjdCxzaXplX3QgY291bnQpCnsKcmVnaXN0ZXIgaW50IF9fcmVzOwppbnQgZDAsIGQx LCBkMjsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIjE6XHRkZWNsICUzXG5cdCIKICAg ICAgICAianMgMmZcblx0IgogICAgICAgICJsb2RzYlxuXHQiCiAgICAgICAgInNjYXNiXG5cdCIK ICAgICAgICAiam5lIDNmXG5cdCIKICAgICAgICAidGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAg ICAiam5lIDFiXG4iCiAgICAgICAgIjI6XHR4b3JsICUlZWF4LCUlZWF4XG5cdCIKICAgICAgICAi am1wIDRmXG4iCiAgICAgICAgIjM6XHRzYmJsICUlZWF4LCUlZWF4XG5cdCIKICAgICAgICAib3Ji ICQxLCUlYWxcbiIKICAgICAgICAiNDoiCiAgICAgICAgICAgICAgICAgICAgIDoiPWEiIChfX3Jl cyksICI9JlMiIChkMCksICI9JkQiIChkMSksICI9JmMiIChkMikKICAgICAgICAgICAgICAgICAg ICAgOiIxIiAoY3MpLCIyIiAoY3QpLCIzIiAoY291bnQpKTsKcmV0dXJuIF9fcmVzOwp9CgoKc3Rh dGljIGlubGluZSBjaGFyICogc3RyY2hyKGNvbnN0IGNoYXIgKiBzLCBpbnQgYykKewppbnQgZDA7 CnJlZ2lzdGVyIGNoYXIgKiBfX3JlczsKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgIm1v dmIgJSVhbCwlJWFoXG4iCiAgICAgICAgIjE6XHRsb2RzYlxuXHQiCiAgICAgICAgImNtcGIgJSVh aCwlJWFsXG5cdCIKICAgICAgICAiamUgMmZcblx0IgogICAgICAgICJ0ZXN0YiAlJWFsLCUlYWxc blx0IgogICAgICAgICJqbmUgMWJcblx0IgogICAgICAgICJtb3ZsICQxLCUxXG4iCiAgICAgICAg IjI6XHRtb3ZsICUxLCUwXG5cdCIKICAgICAgICAiZGVjbCAlMCIKICAgICAgICA6Ij1hIiAoX19y ZXMpLCAiPSZTIiAoZDApIDogIjEiIChzKSwiMCIgKGMpKTsKcmV0dXJuIF9fcmVzOwp9CgoKc3Rh dGljIGlubGluZSBjaGFyICogc3RycmNocihjb25zdCBjaGFyICogcywgaW50IGMpCnsKaW50IGQw LCBkMTsKcmVnaXN0ZXIgY2hhciAqIF9fcmVzOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAg ICAibW92YiAlJWFsLCUlYWhcbiIKICAgICAgICAiMTpcdGxvZHNiXG5cdCIKICAgICAgICAiY21w YiAlJWFoLCUlYWxcblx0IgogICAgICAgICJqbmUgMmZcblx0IgogICAgICAgICJsZWFsIC0xKCUl ZXNpKSwlMFxuIgogICAgICAgICIyOlx0dGVzdGIgJSVhbCwlJWFsXG5cdCIKICAgICAgICAiam5l IDFiIgogICAgICAgIDoiPWciIChfX3JlcyksICI9JlMiIChkMCksICI9JmEiIChkMSkgOiIwIiAo MCksIjEiIChzKSwiMiIgKGMpKTsKcmV0dXJuIF9fcmVzOwp9CgoKc3RhdGljIGlubGluZSBzaXpl X3Qgc3RybGVuKGNvbnN0IGNoYXIgKiBzKQp7CmludCBkMDsKcmVnaXN0ZXIgaW50IF9fcmVzOwpf X2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwbmVcblx0IgogICAgICAgICJzY2FzYlxu XHQiCiAgICAgICAgIm5vdGwgJTBcblx0IgogICAgICAgICJkZWNsICUwIgogICAgICAgIDoiPWMi IChfX3JlcyksICI9JkQiIChkMCkgOiIxIiAocyksImEiICgwKSwgIjAiICgweGZmZmZmZmZmKSk7 CnJldHVybiBfX3JlczsKfQoKc3RhdGljIGlubGluZSB2b2lkICogX19tZW1jcHkodm9pZCAqIHRv LCBjb25zdCB2b2lkICogZnJvbSwgc2l6ZV90IG4pCnsKaW50IGQwLCBkMSwgZDI7Cl9fYXNtX18g X192b2xhdGlsZV9fKAogICAgICAgICJyZXAgOyBtb3ZzbFxuXHQiCiAgICAgICAgInRlc3RiICQy LCViNFxuXHQiCiAgICAgICAgImplIDFmXG5cdCIKICAgICAgICAibW92c3dcbiIKICAgICAgICAi MTpcdHRlc3RiICQxLCViNFxuXHQiCiAgICAgICAgImplIDJmXG5cdCIKICAgICAgICAibW92c2Jc biIKICAgICAgICAiMjoiCiAgICAgICAgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpLCAiPSZTIiAo ZDIpCiAgICAgICAgOiIwIiAobi80KSwgInEiIChuKSwiMSIgKChsb25nKSB0byksIjIiICgobG9u ZykgZnJvbSkKICAgICAgICA6ICJtZW1vcnkiKTsKcmV0dXJuICh0byk7Cn0KCgoKCgpzdGF0aWMg aW5saW5lIHZvaWQgKiBfX2NvbnN0YW50X21lbWNweSh2b2lkICogdG8sIGNvbnN0IHZvaWQgKiBm cm9tLCBzaXplX3QgbikKewogICAgICAgIHN3aXRjaCAobikgewogICAgICAgICAgICAgICAgY2Fz ZSAwOgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBj YXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgY2hhciAqKXRvID0gKihj b25zdCB1bnNpZ25lZCBjaGFyICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHRvOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVu c2lnbmVkIHNob3J0ICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIHNob3J0ICopZnJvbTsKICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAgY2FzZSAzOgogICAg ICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIHNob3J0ICopdG8gPSAqKGNvbnN0IHVuc2ln bmVkIHNob3J0ICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBj aGFyICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBjaGFyICopZnJvbSk7CiAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAg ICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxv bmcgKilmcm9tOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAg ICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyAqKXRv ID0gKihjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbTsKICAgICAgICAgICAgICAgICAgICAgICAg KigyKyh1bnNpZ25lZCBzaG9ydCAqKXRvKSA9ICooMisoY29uc3QgdW5zaWduZWQgc2hvcnQgKilm cm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwogICAgICAgICAgICAgICAg Y2FzZSA4OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICoo Y29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICooMSso dW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMSsoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwog ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAgICAgICAgICBjYXNlIDEy OgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgKil0byA9ICooY29uc3Qg dW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAgICAgICooMSsodW5zaWdu ZWQgbG9uZyAqKXRvKSA9ICooMSsoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAg ICAgICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDIrKGNvbnN0IHVu c2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvOwog ICAgICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25l ZCBsb25nICopdG8gPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tOwogICAgICAgICAgICAg ICAgICAgICAgICAqKDErKHVuc2lnbmVkIGxvbmcgKil0bykgPSAqKDErKGNvbnN0IHVuc2lnbmVk IGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBsb25n ICopdG8pID0gKigyKyhjb25zdCB1bnNpZ25lZCBsb25nICopZnJvbSk7CiAgICAgICAgICAgICAg ICAgICAgICAgICooMysodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMysoY29uc3QgdW5zaWduZWQg bG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG87CiAgICAgICAg ICAgICAgICBjYXNlIDIwOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcg Kil0byA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb207CiAgICAgICAgICAgICAgICAgICAg ICAgICooMSsodW5zaWduZWQgbG9uZyAqKXRvKSA9ICooMSsoY29uc3QgdW5zaWduZWQgbG9uZyAq KWZyb20pOwogICAgICAgICAgICAgICAgICAgICAgICAqKDIrKHVuc2lnbmVkIGxvbmcgKil0bykg PSAqKDIrKGNvbnN0IHVuc2lnbmVkIGxvbmcgKilmcm9tKTsKICAgICAgICAgICAgICAgICAgICAg ICAgKigzKyh1bnNpZ25lZCBsb25nICopdG8pID0gKigzKyhjb25zdCB1bnNpZ25lZCBsb25nICop ZnJvbSk7CiAgICAgICAgICAgICAgICAgICAgICAgICooNCsodW5zaWduZWQgbG9uZyAqKXRvKSA9 ICooNCsoY29uc3QgdW5zaWduZWQgbG9uZyAqKWZyb20pOwogICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gdG87CiAgICAgICAgfQoKCgoKCgoKewogICAgICAgIGludCBkMCwgZDEsIGQyOwog ICAgICAgIHN3aXRjaCAobiAlIDQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDogX19hc21fXyBf X3ZvbGF0aWxlX18oICJyZXAgOyBtb3ZzbCIgIiIgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpLCAi PSZTIiAoZDIpIDogIjAiIChuLzQpLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25nKSBmcm9tKSA6 ICJtZW1vcnkiKTs7IHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMTogX19hc21fXyBf X3ZvbGF0aWxlX18oICJyZXAgOyBtb3ZzbCIgIlxuXHRtb3ZzYiIgOiAiPSZjIiAoZDApLCAiPSZE IiAoZDEpLCAiPSZTIiAoZDIpIDogIjAiIChuLzQpLCIxIiAoKGxvbmcpIHRvKSwiMiIgKChsb25n KSBmcm9tKSA6ICJtZW1vcnkiKTs7IHJldHVybiB0bzsKICAgICAgICAgICAgICAgIGNhc2UgMjog X19hc21fXyBfX3ZvbGF0aWxlX18oICJyZXAgOyBtb3ZzbCIgIlxuXHRtb3ZzdyIgOiAiPSZjIiAo ZDApLCAiPSZEIiAoZDEpLCAiPSZTIiAoZDIpIDogIjAiIChuLzQpLCIxIiAoKGxvbmcpIHRvKSwi MiIgKChsb25nKSBmcm9tKSA6ICJtZW1vcnkiKTs7IHJldHVybiB0bzsKICAgICAgICAgICAgICAg IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgbW92c2wiICJcblx0bW92c3dc blx0bW92c2IiIDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSwgIj0mUyIgKGQyKSA6ICIwIiAobi80 KSwiMSIgKChsb25nKSB0byksIjIiICgobG9uZykgZnJvbSkgOiAibWVtb3J5Iik7OyByZXR1cm4g dG87CiAgICAgICAgfQp9CgoKfQojIDMzNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3Ry aW5nLmgiCmV4dGVybiB2b2lkIF9fc3RydWN0X2NweV9idWcgKHZvaWQpOwojIDM0NSAiL3Vzci9z cmMvbGludXgvaW5jbHVkZS9hc20vc3RyaW5nLmgiCnN0YXRpYyBpbmxpbmUgdm9pZCAqIG1lbW1v dmUodm9pZCAqIGRlc3QsY29uc3Qgdm9pZCAqIHNyYywgc2l6ZV90IG4pCnsKaW50IGQwLCBkMSwg ZDI7CmlmIChkZXN0PHNyYykKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInJlcFxuXHQi CiAgICAgICAgIm1vdnNiIgogICAgICAgIDogIj0mYyIgKGQwKSwgIj0mUyIgKGQxKSwgIj0mRCIg KGQyKQogICAgICAgIDoiMCIgKG4pLCIxIiAoc3JjKSwiMiIgKGRlc3QpCiAgICAgICAgOiAibWVt b3J5Iik7CmVsc2UKX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgInN0ZFxuXHQiCiAgICAg ICAgInJlcFxuXHQiCiAgICAgICAgIm1vdnNiXG5cdCIKICAgICAgICAiY2xkIgogICAgICAgIDog Ij0mYyIgKGQwKSwgIj0mUyIgKGQxKSwgIj0mRCIgKGQyKQogICAgICAgIDoiMCIgKG4pLAogICAg ICAgICAiMSIgKG4tMSsoY29uc3QgY2hhciAqKXNyYyksCiAgICAgICAgICIyIiAobi0xKyhjaGFy ICopZGVzdCkKICAgICAgICA6Im1lbW9yeSIpOwpyZXR1cm4gZGVzdDsKfQoKCgoKc3RhdGljIGlu bGluZSB2b2lkICogbWVtY2hyKGNvbnN0IHZvaWQgKiBjcyxpbnQgYyxzaXplX3QgY291bnQpCnsK aW50IGQwOwpyZWdpc3RlciB2b2lkICogX19yZXM7CmlmICghY291bnQpCiAgICAgICAgcmV0dXJu ICgodm9pZCAqKTApOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVwbmVcblx0Igog ICAgICAgICJzY2FzYlxuXHQiCiAgICAgICAgImplIDFmXG5cdCIKICAgICAgICAibW92bCAkMSwl MFxuIgogICAgICAgICIxOlx0ZGVjbCAlMCIKICAgICAgICA6Ij1EIiAoX19yZXMpLCAiPSZjIiAo ZDApIDogImEiIChjKSwiMCIgKGNzKSwiMSIgKGNvdW50KSk7CnJldHVybiBfX3JlczsKfQoKc3Rh dGljIGlubGluZSB2b2lkICogX19tZW1zZXRfZ2VuZXJpYyh2b2lkICogcywgY2hhciBjLHNpemVf dCBjb3VudCkKewppbnQgZDAsIGQxOwpfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAicmVw XG5cdCIKICAgICAgICAic3Rvc2IiCiAgICAgICAgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpCiAg ICAgICAgOiJhIiAoYyksIjEiIChzKSwiMCIgKGNvdW50KQogICAgICAgIDoibWVtb3J5Iik7CnJl dHVybiBzOwp9CiMgNDA4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zdHJpbmcuaCIKc3Rh dGljIGlubGluZSB2b2lkICogX19jb25zdGFudF9jX21lbXNldCh2b2lkICogcywgdW5zaWduZWQg bG9uZyBjLCBzaXplX3QgY291bnQpCnsKaW50IGQwLCBkMTsKX19hc21fXyBfX3ZvbGF0aWxlX18o CiAgICAgICAgInJlcCA7IHN0b3NsXG5cdCIKICAgICAgICAidGVzdGIgJDIsJWIzXG5cdCIKICAg ICAgICAiamUgMWZcblx0IgogICAgICAgICJzdG9zd1xuIgogICAgICAgICIxOlx0dGVzdGIgJDEs JWIzXG5cdCIKICAgICAgICAiamUgMmZcblx0IgogICAgICAgICJzdG9zYlxuIgogICAgICAgICIy OiIKICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKICAgICAgICA6ImEiIChjKSwgInEi IChjb3VudCksICIwIiAoY291bnQvNCksICIxIiAoKGxvbmcpIHMpCiAgICAgICAgOiJtZW1vcnki KTsKcmV0dXJuIChzKTsKfQoKCgpzdGF0aWMgaW5saW5lIHNpemVfdCBzdHJubGVuKGNvbnN0IGNo YXIgKiBzLCBzaXplX3QgY291bnQpCnsKaW50IGQwOwpyZWdpc3RlciBpbnQgX19yZXM7Cl9fYXNt X18gX192b2xhdGlsZV9fKAogICAgICAgICJtb3ZsICUyLCUwXG5cdCIKICAgICAgICAiam1wIDJm XG4iCiAgICAgICAgIjE6XHRjbXBiICQwLCglMClcblx0IgogICAgICAgICJqZSAzZlxuXHQiCiAg ICAgICAgImluY2wgJTBcbiIKICAgICAgICAiMjpcdGRlY2wgJTFcblx0IgogICAgICAgICJjbXBs ICQtMSwlMVxuXHQiCiAgICAgICAgImpuZSAxYlxuIgogICAgICAgICIzOlx0c3VibCAlMiwlMCIK ICAgICAgICA6Ij1hIiAoX19yZXMpLCAiPSZkIiAoZDApCiAgICAgICAgOiJjIiAocyksIjEiIChj b3VudCkpOwpyZXR1cm4gX19yZXM7Cn0KCgoKCmV4dGVybiBjaGFyICpzdHJzdHIoY29uc3QgY2hh ciAqY3MsIGNvbnN0IGNoYXIgKmN0KTsKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgKiBfX2NvbnN0 YW50X2NfYW5kX2NvdW50X21lbXNldCh2b2lkICogcywgdW5zaWduZWQgbG9uZyBwYXR0ZXJuLCBz aXplX3QgY291bnQpCnsKICAgICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgICAgICAgICBj YXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICAgICAgICAg Y2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAqKHVuc2lnbmVkIGNoYXIgKilzID0gcGF0 dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBj YXNlIDI6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKilzID0gcGF0 dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBj YXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICoodW5zaWduZWQgc2hvcnQgKilzID0gcGF0 dGVybjsKICAgICAgICAgICAgICAgICAgICAgICAgKigyKyh1bnNpZ25lZCBjaGFyICopcykgPSBw YXR0ZXJuOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICAgICAgICAg IGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nICopcyA9IHBh dHRlcm47CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgIH0KCgoKCgoK CnsKICAgICAgICBpbnQgZDAsIGQxOwogICAgICAgIHN3aXRjaCAoY291bnQgJSA0KSB7CiAgICAg ICAgICAgICAgICBjYXNlIDA6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICIi IDogIj0mYyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwi MSIgKChsb25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNl IDE6IF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICJcblx0c3Rvc2IiIDogIj0m YyIgKGQwKSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIgKChs b25nKSBzKSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBjYXNlIDI6IF9f YXNtX18gX192b2xhdGlsZV9fKCAicmVwIDsgc3Rvc2wiICJcblx0c3Rvc3ciIDogIj0mYyIgKGQw KSwgIj0mRCIgKGQxKSA6ICJhIiAocGF0dGVybiksIjAiIChjb3VudC80KSwiMSIgKChsb25nKSBz KSA6ICJtZW1vcnkiKTsgcmV0dXJuIHM7CiAgICAgICAgICAgICAgICBkZWZhdWx0OiBfX2FzbV9f IF9fdm9sYXRpbGVfXyggInJlcCA7IHN0b3NsIiAiXG5cdHN0b3N3XG5cdHN0b3NiIiA6ICI9JmMi IChkMCksICI9JkQiIChkMSkgOiAiYSIgKHBhdHRlcm4pLCIwIiAoY291bnQvNCksIjEiICgobG9u ZykgcykgOiAibWVtb3J5Iik7IHJldHVybiBzOwogICAgICAgIH0KfQoKCn0KIyA1MTUgIi91c3Iv c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N0cmluZy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgKiBtZW1z Y2FuKHZvaWQgKiBhZGRyLCBpbnQgYywgc2l6ZV90IHNpemUpCnsKICAgICAgICBpZiAoIXNpemUp CiAgICAgICAgICAgICAgICByZXR1cm4gYWRkcjsKICAgICAgICBfX2FzbV9fKCJyZXBuejsgc2Nh c2Jcblx0IgogICAgICAgICAgICAgICAgImpueiAxZlxuXHQiCiAgICAgICAgICAgICAgICAiZGVj ICUlZWRpXG4iCiAgICAgICAgICAgICAgICAiMToiCiAgICAgICAgICAgICAgICA6ICI9RCIgKGFk ZHIpLCAiPWMiIChzaXplKQogICAgICAgICAgICAgICAgOiAiMCIgKGFkZHIpLCAiMSIgKHNpemUp LCAiYSIgKGMpKTsKICAgICAgICByZXR1cm4gYWRkcjsKfQojIDI2ICIvdXNyL3NyYy9saW51eC9p bmNsdWRlL2xpbnV4L3N0cmluZy5oIiAyCiMgNDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu dXgvc3RyaW5nLmgiCmV4dGVybiBpbnQgc3RybmljbXAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICosIF9fa2VybmVsX3NpemVfdCk7CiMgNzcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv c3RyaW5nLmgiCmV4dGVybiBpbnQgX19idWlsdGluX21lbWNtcChjb25zdCB2b2lkICosY29uc3Qg dm9pZCAqLF9fa2VybmVsX3NpemVfdCk7CiMgMjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu dXgvZnMuaCIgMgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEK IyAzNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0YXRpYyBfX2lubGlu ZV9fIHZvaWQgc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAg X19hc21fXyBfX3ZvbGF0aWxlX18oICJsb2NrIDsgIgogICAgICAgICAgICAgICAgImJ0c2wgJTEs JTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAg ICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgNTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv YXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkIF9fc2V0X2JpdChpbnQgbnIsIHZv bGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgX19hc21fXygKICAgICAgICAgICAgICAgICJi dHNsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRk cikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpKTsKfQojIDcxICIvdXNyL3NyYy9saW51eC9p bmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBjbGVhcl9iaXQoaW50 IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f KCAibG9jayA7ICIKICAgICAgICAgICAgICAgICJidHJsICUxLCUwIgogICAgICAgICAgICAgICAg OiI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAgICA6IklyIiAo bnIpKTsKfQojIDkwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGlj IF9faW5saW5lX18gdm9pZCBfX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRk cikKewogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAgImJ0Y2wg JTEsJTAiCiAgICAgICAgICAgICAgICA6Ij1tIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkK ICAgICAgICAgICAgICAgIDoiSXIiIChucikpOwp9CiMgMTA3ICIvdXNyL3NyYy9saW51eC9pbmNs dWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gdm9pZCBjaGFuZ2VfYml0KGludCBu ciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygg ImxvY2sgOyAiCiAgICAgICAgICAgICAgICAiYnRjbCAlMSwlMCIKICAgICAgICAgICAgICAgIDoi PW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIgKG5y KSk7Cn0KIyAxMjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMg X19pbmxpbmVfXyBpbnQgdGVzdF9hbmRfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBh ZGRyKQp7CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18o ICJsb2NrIDsgIgogICAgICAgICAgICAgICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAg ICAgICAgICAgICAgIDoiPXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRk cikpCiAgICAgICAgICAgICAgICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVy biBvbGRiaXQ7Cn0KIyAxNDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpz dGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0X2FuZF9zZXRfYml0KGludCBuciwgdm9sYXRpbGUg dm9pZCAqIGFkZHIpCnsKICAgICAgICBpbnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fKAogICAg ICAgICAgICAgICAgImJ0c2wgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoi PXIiIChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAg ICAgICA6IklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMTYyICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3Rf YW5kX2NsZWFyX2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7CiAgICAgICAgaW50 IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oICJsb2NrIDsgIgogICAgICAg ICAgICAgICAgImJ0cmwgJTIsJTFcblx0c2JibCAlMCwlMCIKICAgICAgICAgICAgICAgIDoiPXIi IChvbGRiaXQpLCI9bSIgKCgqKHZvbGF0aWxlIGxvbmcgKikgYWRkcikpCiAgICAgICAgICAgICAg ICA6IklyIiAobnIpIDogIm1lbW9yeSIpOwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KIyAxODIg Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgX19pbmxpbmVfXyBp bnQgX190ZXN0X2FuZF9jbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewog ICAgICAgIGludCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18oCiAgICAgICAgICAgICAgICAiYnRy bCAlMiwlMVxuXHRzYmJsICUwLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKG9sZGJpdCksIj1t IiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRyKSkKICAgICAgICAgICAgICAgIDoiSXIiIChucikp OwogICAgICAgIHJldHVybiBvbGRiaXQ7Cn0KCgpzdGF0aWMgX19pbmxpbmVfXyBpbnQgX190ZXN0 X2FuZF9jaGFuZ2VfYml0KGludCBuciwgdm9sYXRpbGUgdm9pZCAqIGFkZHIpCnsKICAgICAgICBp bnQgb2xkYml0OwoKICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAg ICJidGNsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1yIiAob2xkYml0 KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAgICAgOiJJciIg KG5yKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjEzICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IHRlc3Rf YW5kX2NoYW5nZV9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICogYWRkcikKewogICAgICAgIGlu dCBvbGRiaXQ7CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAibG9jayA7ICIKICAgICAg ICAgICAgICAgICJidGNsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1y IiAob2xkYml0KSwiPW0iICgoKih2b2xhdGlsZSBsb25nICopIGFkZHIpKQogICAgICAgICAgICAg ICAgOiJJciIgKG5yKSA6ICJtZW1vcnkiKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjMz ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18g aW50IGNvbnN0YW50X3Rlc3RfYml0KGludCBuciwgY29uc3Qgdm9sYXRpbGUgdm9pZCAqIGFkZHIp CnsKICAgICAgICByZXR1cm4gKCgxVUwgPDwgKG5yICYgMzEpKSAmICgoKGNvbnN0IHZvbGF0aWxl IHVuc2lnbmVkIGludCAqKSBhZGRyKVtuciA+PiA1XSkpICE9IDA7Cn0KCnN0YXRpYyBfX2lubGlu ZV9fIGludCB2YXJpYWJsZV90ZXN0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHZvaWQgKiBhZGRyKQp7 CiAgICAgICAgaW50IG9sZGJpdDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAg ICAgICAgICAgICAiYnRsICUyLCUxXG5cdHNiYmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6Ij1y IiAob2xkYml0KQogICAgICAgICAgICAgICAgOiJtIiAoKCoodm9sYXRpbGUgbG9uZyAqKSBhZGRy KSksIklyIiAobnIpKTsKICAgICAgICByZXR1cm4gb2xkYml0Owp9CiMgMjYyICIvdXNyL3NyYy9s aW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGZpbmRfZmly c3RfemVyb19iaXQodm9pZCAqIGFkZHIsIHVuc2lnbmVkIHNpemUpCnsKICAgICAgICBpbnQgZDAs IGQxLCBkMjsKICAgICAgICBpbnQgcmVzOwoKICAgICAgICBpZiAoIXNpemUpCiAgICAgICAgICAg ICAgICByZXR1cm4gMDsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAg ICAgICAibW92bCAkLTEsJSVlYXhcblx0IgogICAgICAgICAgICAgICAgInhvcmwgJSVlZHgsJSVl ZHhcblx0IgogICAgICAgICAgICAgICAgInJlcGU7IHNjYXNsXG5cdCIKICAgICAgICAgICAgICAg ICJqZSAxZlxuXHQiCiAgICAgICAgICAgICAgICAieG9ybCAtNCglJWVkaSksJSVlYXhcblx0Igog ICAgICAgICAgICAgICAgInN1YmwgJDQsJSVlZGlcblx0IgogICAgICAgICAgICAgICAgImJzZmwg JSVlYXgsJSVlZHhcbiIKICAgICAgICAgICAgICAgICIxOlx0c3VibCAlJWVieCwlJWVkaVxuXHQi CiAgICAgICAgICAgICAgICAic2hsbCAkMywlJWVkaVxuXHQiCiAgICAgICAgICAgICAgICAiYWRk bCAlJWVkaSwlJWVkeCIKICAgICAgICAgICAgICAgIDoiPWQiIChyZXMpLCAiPSZjIiAoZDApLCAi PSZEIiAoZDEpLCAiPSZhIiAoZDIpCiAgICAgICAgICAgICAgICA6IjEiICgoc2l6ZSArIDMxKSA+ PiA1KSwgIjIiIChhZGRyKSwgImIiIChhZGRyKSk7CiAgICAgICAgcmV0dXJuIHJlczsKfQoKCgoK CgoKc3RhdGljIF9faW5saW5lX18gaW50IGZpbmRfbmV4dF96ZXJvX2JpdCAodm9pZCAqIGFkZHIs IGludCBzaXplLCBpbnQgb2Zmc2V0KQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyAqIHAgPSAoKHVu c2lnbmVkIGxvbmcgKikgYWRkcikgKyAob2Zmc2V0ID4+IDUpOwogICAgICAgIGludCBzZXQgPSAw LCBiaXQgPSBvZmZzZXQgJiAzMSwgcmVzOwoKICAgICAgICBpZiAoYml0KSB7CgoKCiAgICAgICAg ICAgICAgICBfX2FzbV9fKCJic2ZsICUxLCUwXG5cdCIKICAgICAgICAgICAgICAgICAgICAgICAg ImpuZSAxZlxuXHQiCiAgICAgICAgICAgICAgICAgICAgICAgICJtb3ZsICQzMiwgJTBcbiIKICAg ICAgICAgICAgICAgICAgICAgICAgIjE6IgogICAgICAgICAgICAgICAgICAgICAgICA6ICI9ciIg KHNldCkKICAgICAgICAgICAgICAgICAgICAgICAgOiAiciIgKH4oKnAgPj4gYml0KSkpOwogICAg ICAgICAgICAgICAgaWYgKHNldCA8ICgzMiAtIGJpdCkpCiAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBzZXQgKyBvZmZzZXQ7CiAgICAgICAgICAgICAgICBzZXQgPSAzMiAtIGJpdDsKICAg ICAgICAgICAgICAgIHArKzsKICAgICAgICB9CgoKCiAgICAgICAgcmVzID0gZmluZF9maXJzdF96 ZXJvX2JpdCAocCwgc2l6ZSAtIDMyICogKHAgLSAodW5zaWduZWQgbG9uZyAqKSBhZGRyKSk7CiAg ICAgICAgcmV0dXJuIChvZmZzZXQgKyBzZXQgKyByZXMpOwp9CgoKCgoKCgpzdGF0aWMgX19pbmxp bmVfXyB1bnNpZ25lZCBsb25nIGZmeih1bnNpZ25lZCBsb25nIHdvcmQpCnsKICAgICAgICBfX2Fz bV9fKCJic2ZsICUxLCUwIgogICAgICAgICAgICAgICAgOiI9ciIgKHdvcmQpCiAgICAgICAgICAg ICAgICA6InIiICh+d29yZCkpOwogICAgICAgIHJldHVybiB3b3JkOwp9CiMgMzQzICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIF9faW5saW5lX18gaW50IGZmcyhp bnQgeCkKewogICAgICAgIGludCByOwoKICAgICAgICBfX2FzbV9fKCJic2ZsICUxLCUwXG5cdCIK ICAgICAgICAgICAgICAgICJqbnogMWZcblx0IgogICAgICAgICAgICAgICAgIm1vdmwgJC0xLCUw XG4iCiAgICAgICAgICAgICAgICAiMToiIDogIj1yIiAocikgOiAiZyIgKHgpKTsKICAgICAgICBy ZXR1cm4gcisxOwp9CiMgMjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoK c3RydWN0IHBvbGxfdGFibGVfc3RydWN0OwojIDUwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp bnV4L2ZzLmgiCnN0cnVjdCBmaWxlc19zdGF0X3N0cnVjdCB7CiAgICAgICAgaW50IG5yX2ZpbGVz OwogICAgICAgIGludCBucl9mcmVlX2ZpbGVzOwogICAgICAgIGludCBtYXhfZmlsZXM7Cn07CmV4 dGVybiBzdHJ1Y3QgZmlsZXNfc3RhdF9zdHJ1Y3QgZmlsZXNfc3RhdDsKCnN0cnVjdCBpbm9kZXNf c3RhdF90IHsKICAgICAgICBpbnQgbnJfaW5vZGVzOwogICAgICAgIGludCBucl91bnVzZWQ7CiAg ICAgICAgaW50IGR1bW15WzVdOwp9OwpleHRlcm4gc3RydWN0IGlub2Rlc19zdGF0X3QgaW5vZGVz X3N0YXQ7CgpleHRlcm4gaW50IGxlYXNlc19lbmFibGUsIGRpcl9ub3RpZnlfZW5hYmxlLCBsZWFz ZV9icmVha190aW1lOwojIDIwMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgoj IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAxCiMgMzkgIi91c3Iv c3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu Y2x1ZGUvYXNtL3N5c3RlbS5oIiAxCgoKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp bnV4L2luaXQuaCIgMQojIDQ4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2luaXQuaCIK dHlwZWRlZiBpbnQgKCppbml0Y2FsbF90KSh2b2lkKTsKdHlwZWRlZiB2b2lkICgqZXhpdGNhbGxf dCkodm9pZCk7CgpleHRlcm4gaW5pdGNhbGxfdCBfX2luaXRjYWxsX3N0YXJ0LCBfX2luaXRjYWxs X2VuZDsKIyA2MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pbml0LmgiCnN0cnVjdCBr ZXJuZWxfcGFyYW0gewogICAgICAgIGNvbnN0IGNoYXIgKnN0cjsKICAgICAgICBpbnQgKCpzZXR1 cF9mdW5jKShjaGFyICopOwp9OwoKZXh0ZXJuIHN0cnVjdCBrZXJuZWxfcGFyYW0gX19zZXR1cF9z dGFydCwgX19zZXR1cF9lbmQ7CiMgNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3lzdGVt LmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9iaXRvcHMuaCIgMQojIDEx ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIgpzdGF0aWMgaW5saW5lIGlu dCBnZW5lcmljX2ZmcyhpbnQgeCkKewogICAgICAgIGludCByID0gMTsKCiAgICAgICAgaWYgKCF4 KQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYgKCEoeCAmIDB4ZmZmZikpIHsK ICAgICAgICAgICAgICAgIHggPj49IDE2OwogICAgICAgICAgICAgICAgciArPSAxNjsKICAgICAg ICB9CiAgICAgICAgaWYgKCEoeCAmIDB4ZmYpKSB7CiAgICAgICAgICAgICAgICB4ID4+PSA4Owog ICAgICAgICAgICAgICAgciArPSA4OwogICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMHhmKSkg ewogICAgICAgICAgICAgICAgeCA+Pj0gNDsKICAgICAgICAgICAgICAgIHIgKz0gNDsKICAgICAg ICB9CiAgICAgICAgaWYgKCEoeCAmIDMpKSB7CiAgICAgICAgICAgICAgICB4ID4+PSAyOwogICAg ICAgICAgICAgICAgciArPSAyOwogICAgICAgIH0KICAgICAgICBpZiAoISh4ICYgMSkpIHsKICAg ICAgICAgICAgICAgIHggPj49IDE7CiAgICAgICAgICAgICAgICByICs9IDE7CiAgICAgICAgfQog ICAgICAgIHJldHVybiByOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdlbmVy aWNfaHdlaWdodDMyKHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAgdW5zaWduZWQgaW50IHJlcyA9 ICh3ICYgMHg1NTU1NTU1NSkgKyAoKHcgPj4gMSkgJiAweDU1NTU1NTU1KTsKICAgICAgICByZXMg PSAocmVzICYgMHgzMzMzMzMzMykgKyAoKHJlcyA+PiAyKSAmIDB4MzMzMzMzMzMpOwogICAgICAg IHJlcyA9IChyZXMgJiAweDBGMEYwRjBGKSArICgocmVzID4+IDQpICYgMHgwRjBGMEYwRik7CiAg ICAgICAgcmVzID0gKHJlcyAmIDB4MDBGRjAwRkYpICsgKChyZXMgPj4gOCkgJiAweDAwRkYwMEZG KTsKICAgICAgICByZXR1cm4gKHJlcyAmIDB4MDAwMEZGRkYpICsgKChyZXMgPj4gMTYpICYgMHgw MDAwRkZGRik7Cn0KCnN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdlbmVyaWNfaHdlaWdodDE2 KHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAgdW5zaWduZWQgaW50IHJlcyA9ICh3ICYgMHg1NTU1 KSArICgodyA+PiAxKSAmIDB4NTU1NSk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MzMzMykgKyAo KHJlcyA+PiAyKSAmIDB4MzMzMyk7CiAgICAgICAgcmVzID0gKHJlcyAmIDB4MEYwRikgKyAoKHJl cyA+PiA0KSAmIDB4MEYwRik7CiAgICAgICAgcmV0dXJuIChyZXMgJiAweDAwRkYpICsgKChyZXMg Pj4gOCkgJiAweDAwRkYpOwp9CgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZW5lcmljX2h3 ZWlnaHQ4KHVuc2lnbmVkIGludCB3KQp7CiAgICAgICAgdW5zaWduZWQgaW50IHJlcyA9ICh3ICYg MHg1NSkgKyAoKHcgPj4gMSkgJiAweDU1KTsKICAgICAgICByZXMgPSAocmVzICYgMHgzMykgKyAo KHJlcyA+PiAyKSAmIDB4MzMpOwogICAgICAgIHJldHVybiAocmVzICYgMHgwRikgKyAoKHJlcyA+ PiA0KSAmIDB4MEYpOwp9CiMgOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc3lzdGVtLmgi IDIKCgoKc3RydWN0IHRhc2tfc3RydWN0OwpleHRlcm4gdm9pZCBfX3N3aXRjaF90byhzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnByZXYsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCkgX19hdHRyaWJ1dGVf XygocmVncGFybSgzKSkpOwojIDY0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zeXN0ZW0u aCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9nZXRfYmFzZShjaGFyICogYWRkcikKewog ICAgICAgIHVuc2lnbmVkIGxvbmcgX19iYXNlOwogICAgICAgIF9fYXNtX18oIm1vdmIgJTMsJSVk aFxuXHQiCiAgICAgICAgICAgICAgICAibW92YiAlMiwlJWRsXG5cdCIKICAgICAgICAgICAgICAg ICJzaGxsICQxNiwlJWVkeFxuXHQiCiAgICAgICAgICAgICAgICAibW92dyAlMSwlJWR4IgogICAg ICAgICAgICAgICAgOiI9JmQiIChfX2Jhc2UpCiAgICAgICAgICAgICAgICA6Im0iICgqKChhZGRy KSsyKSksCiAgICAgICAgICAgICAgICAgIm0iICgqKChhZGRyKSs0KSksCiAgICAgICAgICAgICAg ICAgIm0iICgqKChhZGRyKSs3KSkpOwogICAgICAgIHJldHVybiBfX2Jhc2U7Cn0KIyAxMzEgIi91 c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVk IGxvbmcgZ2V0X2xpbWl0KHVuc2lnbmVkIGxvbmcgc2VnbWVudCkKewogICAgICAgIHVuc2lnbmVk IGxvbmcgX19saW1pdDsKICAgICAgICBfX2FzbV9fKCJsc2xsICUxLCUwIgogICAgICAgICAgICAg ICAgOiI9ciIgKF9fbGltaXQpOiJyIiAoc2VnbWVudCkpOwogICAgICAgIHJldHVybiBfX2xpbWl0 KzE7Cn0KCgoKCgoKCnN0cnVjdCBfX3hjaGdfZHVtbXkgeyB1bnNpZ25lZCBsb25nIGFbMTAwXTsg fTsKIyAxNTggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5s aW5lIHZvaWQgX19zZXRfNjRiaXQgKHVuc2lnbmVkIGxvbmcgbG9uZyAqIHB0ciwKICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBsb3csIHVuc2lnbmVkIGludCBoaWdoKQp7CiAgICAgICAgX19h c21fXyBfX3ZvbGF0aWxlX18gKAogICAgICAgICAgICAgICAgIlxuMTpcdCIKICAgICAgICAgICAg ICAgICJtb3ZsICglMCksICUlZWF4XG5cdCIKICAgICAgICAgICAgICAgICJtb3ZsIDQoJTApLCAl JWVkeFxuXHQiCiAgICAgICAgICAgICAgICAiY21weGNoZzhiICglMClcblx0IgogICAgICAgICAg ICAgICAgImpueiAxYiIKICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgIDogIkQiKHB0 ciksCiAgICAgICAgICAgICAgICAgICAgICAgICJiIihsb3cpLAogICAgICAgICAgICAgICAgICAg ICAgICAiYyIoaGlnaCkKICAgICAgICAgICAgICAgIDogImF4IiwiZHgiLCJtZW1vcnkiKTsKfQoK c3RhdGljIGlubGluZSB2b2lkIF9fc2V0XzY0Yml0X2NvbnN0YW50ICh1bnNpZ25lZCBsb25nIGxv bmcgKnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSkKewogICAgICAgIF9fc2V0XzY0Yml0KHB0ciwodW5z aWduZWQgaW50KSh2YWx1ZSksICh1bnNpZ25lZCBpbnQpKCh2YWx1ZSk+PjMyVUxMKSk7Cn0KCgoK c3RhdGljIGlubGluZSB2b2lkIF9fc2V0XzY0Yml0X3ZhciAodW5zaWduZWQgbG9uZyBsb25nICpw dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCnsK ICAgICAgICBfX3NldF82NGJpdChwdHIsKigoKHVuc2lnbmVkIGludCopJih2YWx1ZSkpKzApLCAq KCgodW5zaWduZWQgaW50KikmKHZhbHVlKSkrMSkpOwp9CiMgMjAzICIvdXNyL3NyYy9saW51eC9p bmNsdWRlL2FzbS9zeXN0ZW0uaCIKc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9feGNoZyh1 bnNpZ25lZCBsb25nIHgsIHZvbGF0aWxlIHZvaWQgKiBwdHIsIGludCBzaXplKQp7CiAgICAgICAg c3dpdGNoIChzaXplKSB7CiAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAg ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ4Y2hnYiAlYjAsJTEiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOiI9cSIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOiJtIiAoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIiAoeCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAg ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInhjaGd3ICV3MCwlMSIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6Ij1yIiAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6 Im0iICgqKChzdHJ1Y3QgX194Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiICh4KQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDoibWVtb3J5Iik7CiAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgICAgICAgICBf X2FzbV9fIF9fdm9sYXRpbGVfXygieGNoZ2wgJTAsJTEiCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiI9ciIgKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiJtIiAo Kigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIiAoeCkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVh azsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHg7Cn0KIyAyMzcgIi91c3Ivc3JjL2xpbnV4L2lu Y2x1ZGUvYXNtL3N5c3RlbS5oIgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgX19jbXB4Y2hn KHZvbGF0aWxlIHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBvbGQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuZXcsIGludCBzaXplKQp7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBwcmV2OwogICAgICAgIHN3aXRjaCAoc2l6ZSkgewogICAgICAgIGNh c2UgMToKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsb2NrIDsgIiAiY21w eGNoZ2IgJWIxLCUyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPWEi KHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJxIihuZXcpLCAi bSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSksICIwIihvbGQpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnkiKTsKICAgICAgICAgICAgICAgIHJl dHVybiBwcmV2OwogICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xh dGlsZV9fKCJsb2NrIDsgIiAiY21weGNoZ3cgJXcxLCUyIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOiAiPWEiKHByZXYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6ICJxIihuZXcpLCAibSIoKigoc3RydWN0IF9feGNoZ19kdW1teSAqKShwdHIpKSks ICIwIihvbGQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJtZW1vcnki KTsKICAgICAgICAgICAgICAgIHJldHVybiBwcmV2OwogICAgICAgIGNhc2UgNDoKICAgICAgICAg ICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJsb2NrIDsgIiAiY21weGNoZ2wgJTEsJTIiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9YSIocHJldikKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInEiKG5ldyksICJtIigqKChzdHJ1Y3QgX194 Y2hnX2R1bW15ICopKHB0cikpKSwgIjAiKG9sZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDogIm1lbW9yeSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7CiAgICAg ICAgfQogICAgICAgIHJldHVybiBvbGQ7Cn0KIyAzMjggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv YXNtL3N5c3RlbS5oIgpleHRlcm4gdm9pZCBfX2dsb2JhbF9jbGkodm9pZCk7CmV4dGVybiB2b2lk IF9fZ2xvYmFsX3N0aSh2b2lkKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19nbG9iYWxfc2F2ZV9m bGFncyh2b2lkKTsKZXh0ZXJuIHZvaWQgX19nbG9iYWxfcmVzdG9yZV9mbGFncyh1bnNpZ25lZCBs b25nKTsKIyAzNTAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3N5c3RlbS5oIgp2b2lkIGRp c2FibGVfaGx0KHZvaWQpOwp2b2lkIGVuYWJsZV9obHQodm9pZCk7CgpleHRlcm4gdW5zaWduZWQg bG9uZyBkbWlfYnJva2VuOwpleHRlcm4gaW50IGlzX3NvbnlfdmFpb19sYXB0b3A7CiMgNDAgIi91 c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NlbWFwaG9yZS5oIiAyCgoKIyAxICIvdXNyL3NyYy9s aW51eC9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDEKIyAyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVk ZS9saW51eC9yd3NlbS5oIgpzdHJ1Y3Qgcndfc2VtYXBob3JlOwoKCgoKIyAxICIvdXNyL3NyYy9s aW51eC9pbmNsdWRlL2FzbS9yd3NlbS5oIiAxCiMgNDQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv YXNtL3J3c2VtLmgiCnN0cnVjdCByd3NlbV93YWl0ZXI7CgpleHRlcm4gc3RydWN0IHJ3X3NlbWFw aG9yZSAqcndzZW1fZG93bl9yZWFkX2ZhaWxlZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHN0cnVjdCByd19zZW1hcGhvcmUgKnJ3 c2VtX2Rvd25fd3JpdGVfZmFpbGVkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkgX19hdHRyaWJ1 dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gc3RydWN0IHJ3X3NlbWFwaG9yZSAqcndzZW1fd2Fr ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCgoK CnN0cnVjdCByd19zZW1hcGhvcmUgewogICAgICAgIHNpZ25lZCBsb25nIGNvdW50OwoKCgoKCgog ICAgICAgIHNwaW5sb2NrX3Qgd2FpdF9sb2NrOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgd2Fp dF9saXN0OwoKCgp9OwojIDg0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9yd3NlbS5oIgpz dGF0aWMgaW5saW5lIHZvaWQgaW5pdF9yd3NlbShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsK ICAgICAgICBzZW0tPmNvdW50ID0gMHgwMDAwMDAwMDsKICAgICAgICBkbyB7ICooJnNlbS0+d2Fp dF9sb2NrKSA9IChzcGlubG9ja190KSB7IDEgfTsgfSB3aGlsZSgwKTsKICAgICAgICBkbyB7ICgm c2VtLT53YWl0X2xpc3QpLT5uZXh0ID0gKCZzZW0tPndhaXRfbGlzdCk7ICgmc2VtLT53YWl0X2xp c3QpLT5wcmV2ID0gKCZzZW0tPndhaXRfbGlzdCk7IH0gd2hpbGUgKDApOwoKCgp9CgoKCgpzdGF0 aWMgaW5saW5lIHZvaWQgX19kb3duX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKQp7CiAg ICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcg ZG93bl9yZWFkXG5cdCIKImxvY2sgOyAiICIgIGluY2wgICAgICAoJSVlYXgpXG5cdCIKICAgICAg ICAgICAgICAgICIgIGpzICAgICAgICAyZlxuXHQiCiAgICAgICAgICAgICAgICAiMTpcblx0Igog ICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4dC5s b2NrLiIgInNlbWFwaG9yZSIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNlbWFwaG9yZSIgIjpcblx0 IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAgICAgICAgICAi ICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgcHVzaGwgICAgICUlZWR4 XG5cdCIKICAgICAgICAgICAgICAgICIgIGNhbGwgICAgICByd3NlbV9kb3duX3JlYWRfZmFpbGVk XG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVkeFxuXHQiCiAgICAgICAgICAg ICAgICAiICBwb3BsICAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAg IDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgICIj IGVuZGluZyBkb3duX3JlYWRcblx0IgogICAgICAgICAgICAgICAgOiAiK20iKHNlbS0+Y291bnQp CiAgICAgICAgICAgICAgICA6ICJhIihzZW0pCiAgICAgICAgICAgICAgICA6ICJtZW1vcnkiLCAi Y2MiKTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIF9fZG93bl93cml0ZShzdHJ1Y3Qgcndfc2Vt YXBob3JlICpzZW0pCnsKICAgICAgICBpbnQgdG1wOwoKICAgICAgICB0bXAgPSAoKC0weDAwMDEw MDAwKSArIDB4MDAwMDAwMDEpOwogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAg ICAgICAgICAgIiMgYmVnaW5uaW5nIGRvd25fd3JpdGVcblx0IgoibG9jayA7ICIgIiAgeGFkZCAg ICAgICUwLCglJWVheClcblx0IgogICAgICAgICAgICAgICAgIiAgdGVzdGwgICAgICUwLCUwXG5c dCIKICAgICAgICAgICAgICAgICIgIGpueiAgICAgICAyZlxuXHQiCiAgICAgICAgICAgICAgICAi MTpcblx0IgogICAgICAgICAgICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAi ICIudGV4dC5sb2NrLiIgInNlbWFwaG9yZSIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNlbWFwaG9y ZSIgIjpcblx0IiAiLmVuZGlmXG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAg ICAgICAgICAiICBwdXNobCAgICAgJSVlY3hcblx0IgogICAgICAgICAgICAgICAgIiAgY2FsbCAg ICAgIHJ3c2VtX2Rvd25fd3JpdGVfZmFpbGVkXG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwg ICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAgICAg ICAgICAgICAgICIucHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIGRvd25f d3JpdGUiCiAgICAgICAgICAgICAgICA6ICIrZCIodG1wKSwgIittIihzZW0tPmNvdW50KQogICAg ICAgICAgICAgICAgOiAiYSIoc2VtKQogICAgICAgICAgICAgICAgOiAibWVtb3J5IiwgImNjIik7 Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBfX3VwX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAq c2VtKQp7CiAgICAgICAgX19zMzIgdG1wID0gLTB4MDAwMDAwMDE7CiAgICAgICAgX19hc21fXyBf X3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBiZWdpbm5pbmcgX191cF9yZWFkXG5cdCIK ImxvY2sgOyAiICIgIHhhZGQgICAgICAlJWVkeCwoJSVlYXgpXG5cdCIKICAgICAgICAgICAgICAg ICIgIGpzICAgICAgICAyZlxuXHQiCiAgICAgICAgICAgICAgICAiMTpcblx0IgogICAgICAgICAg ICAgICAgIi5zdWJzZWN0aW9uIDFcblx0IiAiIiAiLmlmbmRlZiAiICIudGV4dC5sb2NrLiIgInNl bWFwaG9yZSIgIlxuXHQiICIudGV4dC5sb2NrLiIgInNlbWFwaG9yZSIgIjpcblx0IiAiLmVuZGlm XG5cdCIKICAgICAgICAgICAgICAgICIyOlxuXHQiCiAgICAgICAgICAgICAgICAiICBkZWN3ICAg ICAgJSVkeFxuXHQiCiAgICAgICAgICAgICAgICAiICBqbnogICAgICAgMWJcblx0IgogICAgICAg ICAgICAgICAgIiAgcHVzaGwgICAgICUlZWN4XG5cdCIKICAgICAgICAgICAgICAgICIgIGNhbGwg ICAgICByd3NlbV93YWtlXG5cdCIKICAgICAgICAgICAgICAgICIgIHBvcGwgICAgICAlJWVjeFxu XHQiCiAgICAgICAgICAgICAgICAiICBqbXAgICAgICAgMWJcbiIKICAgICAgICAgICAgICAgICIu cHJldmlvdXNcblx0IgogICAgICAgICAgICAgICAgIiMgZW5kaW5nIF9fdXBfcmVhZFxuIgogICAg ICAgICAgICAgICAgOiAiK20iKHNlbS0+Y291bnQpLCAiK2QiKHRtcCkKICAgICAgICAgICAgICAg IDogImEiKHNlbSkKICAgICAgICAgICAgICAgIDogIm1lbW9yeSIsICJjYyIpOwp9CgoKCgpzdGF0 aWMgaW5saW5lIHZvaWQgX191cF93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAg ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGJlZ2lubmluZyBf X3VwX3dyaXRlXG5cdCIKICAgICAgICAgICAgICAgICIgIG1vdmwgICAgICAlMiwlJWVkeFxuXHQi CiJsb2NrIDsgIiAiICB4YWRkbCAgICAgJSVlZHgsKCUlZWF4KVxuXHQiCiAgICAgICAgICAgICAg ICAiICBqbnogICAgICAgMmZcblx0IgogICAgICAgICAgICAgICAgIjE6XG5cdCIKICAgICAgICAg ICAgICAgICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJz ZW1hcGhvcmUiICJcblx0IiAiLnRleHQubG9jay4iICJzZW1hcGhvcmUiICI6XG5cdCIgIi5lbmRp ZlxuXHQiCiAgICAgICAgICAgICAgICAiMjpcblx0IgogICAgICAgICAgICAgICAgIiAgZGVjdyAg ICAgICUlZHhcblx0IgogICAgICAgICAgICAgICAgIiAgam56ICAgICAgIDFiXG5cdCIKICAgICAg ICAgICAgICAgICIgIHB1c2hsICAgICAlJWVjeFxuXHQiCiAgICAgICAgICAgICAgICAiICBjYWxs ICAgICAgcndzZW1fd2FrZVxuXHQiCiAgICAgICAgICAgICAgICAiICBwb3BsICAgICAgJSVlY3hc blx0IgogICAgICAgICAgICAgICAgIiAgam1wICAgICAgIDFiXG4iCiAgICAgICAgICAgICAgICAi LnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgICIjIGVuZGluZyBfX3VwX3dyaXRlXG4iCiAg ICAgICAgICAgICAgICA6ICIrbSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDogImEiKHNl bSksICJpIigtKCgtMHgwMDAxMDAwMCkgKyAweDAwMDAwMDAxKSkKICAgICAgICAgICAgICAgIDog Im1lbW9yeSIsICJjYyIsICJlZHgiKTsKfQoKCgoKc3RhdGljIGlubGluZSB2b2lkIHJ3c2VtX2F0 b21pY19hZGQoaW50IGRlbHRhLCBzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBf X2FzbV9fIF9fdm9sYXRpbGVfXygKImxvY2sgOyAiICJhZGRsICUxLCUwIgogICAgICAgICAgICAg ICAgOiI9bSIoc2VtLT5jb3VudCkKICAgICAgICAgICAgICAgIDoiaXIiKGRlbHRhKSwgIm0iKHNl bS0+Y291bnQpKTsKfQoKCgoKc3RhdGljIGlubGluZSBpbnQgcndzZW1fYXRvbWljX3VwZGF0ZShp bnQgZGVsdGEsIHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogICAgICAgIGludCB0bXAgPSBk ZWx0YTsKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiJsb2NrIDsgIiAieGFkZCAlMCwo JTIpIgogICAgICAgICAgICAgICAgOiAiK3IiKHRtcCksICI9bSIoc2VtLT5jb3VudCkKICAgICAg ICAgICAgICAgIDogInIiKHNlbSksICJtIihzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiAi bWVtb3J5Iik7CgogICAgICAgIHJldHVybiB0bXArZGVsdGE7Cn0KIyAyOCAiL3Vzci9zcmMvbGlu dXgvaW5jbHVkZS9saW51eC9yd3NlbS5oIiAyCiMgNDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv bGludXgvcndzZW0uaCIKc3RhdGljIGlubGluZSB2b2lkIGRvd25fcmVhZChzdHJ1Y3Qgcndfc2Vt YXBob3JlICpzZW0pCnsKICAgICAgICA7CiAgICAgICAgX19kb3duX3JlYWQoc2VtKTsKICAgICAg ICA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3duX3dyaXRlKHN0cnVjdCByd19zZW1hcGhv cmUgKnNlbSkKewogICAgICAgIDsKICAgICAgICBfX2Rvd25fd3JpdGUoc2VtKTsKICAgICAgICA7 Cn0KCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB1cF9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNl bSkKewogICAgICAgIDsKICAgICAgICBfX3VwX3JlYWQoc2VtKTsKICAgICAgICA7Cn0KCgoKCnN0 YXRpYyBpbmxpbmUgdm9pZCB1cF93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCnsKICAg ICAgICA7CiAgICAgICAgX191cF93cml0ZShzZW0pOwogICAgICAgIDsKfQojIDQzICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2FzbS9zZW1hcGhvcmUuaCIgMgoKc3RydWN0IHNlbWFwaG9yZSB7CiAg ICAgICAgYXRvbWljX3QgY291bnQ7CiAgICAgICAgaW50IHNsZWVwZXJzOwogICAgICAgIHdhaXRf cXVldWVfaGVhZF90IHdhaXQ7CgoKCn07CiMgNzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNt L3NlbWFwaG9yZS5oIgpzdGF0aWMgaW5saW5lIHZvaWQgc2VtYV9pbml0IChzdHJ1Y3Qgc2VtYXBo b3JlICpzZW0sIGludCB2YWwpCnsKCgoKCgoKICAgICAgICAoKCgmc2VtLT5jb3VudCktPmNvdW50 ZXIpID0gKHZhbCkpOwogICAgICAgIHNlbS0+c2xlZXBlcnMgPSAwOwogICAgICAgIGluaXRfd2Fp dHF1ZXVlX2hlYWQoJnNlbS0+d2FpdCk7CgoKCn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X01V VEVYIChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pCnsKICAgICAgICBzZW1hX2luaXQoc2VtLCAxKTsK fQoKc3RhdGljIGlubGluZSB2b2lkIGluaXRfTVVURVhfTE9DS0VEIChzdHJ1Y3Qgc2VtYXBob3Jl ICpzZW0pCnsKICAgICAgICBzZW1hX2luaXQoc2VtLCAwKTsKfQoKIF9fYXR0cmlidXRlX18oKHJl Z3Bhcm0oMCkpKSB2b2lkIF9fZG93bl9mYWlsZWQodm9pZCApOwogX19hdHRyaWJ1dGVfXygocmVn cGFybSgwKSkpIGludCBfX2Rvd25fZmFpbGVkX2ludGVycnVwdGlibGUodm9pZCApOwogX19hdHRy aWJ1dGVfXygocmVncGFybSgwKSkpIGludCBfX2Rvd25fZmFpbGVkX3RyeWxvY2sodm9pZCApOwog X19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIHZvaWQgX191cF93YWtldXAodm9pZCApOwoKIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSB2b2lkIF9fZG93bihzdHJ1Y3Qgc2VtYXBob3JlICog c2VtKTsKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBpbnQgX19kb3duX2ludGVycnVwdGli bGUoc3RydWN0IHNlbWFwaG9yZSAqIHNlbSk7CiBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDApKSkg aW50IF9fZG93bl90cnlsb2NrKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pOwogX19hdHRyaWJ1dGVf XygocmVncGFybSgwKSkpIHZvaWQgX191cChzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKTsKCgoKCgoK c3RhdGljIGlubGluZSB2b2lkIGRvd24oc3RydWN0IHNlbWFwaG9yZSAqIHNlbSkKewoKCgoKICAg ICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKICAgICAgICAgICAgICAgICIjIGF0b21pYyBkb3du IG9wZXJhdGlvblxuXHQiCiAgICAgICAgICAgICAgICAibG9jayA7ICIgImRlY2wgJTBcblx0Igog ICAgICAgICAgICAgICAgImpzIDJmXG4iCiAgICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAg ICAgICAgICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJz ZW1hcGhvcmUiICJcblx0IiAiLnRleHQubG9jay4iICJzZW1hcGhvcmUiICI6XG5cdCIgIi5lbmRp ZlxuXHQiCiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX19kb3duX2ZhaWxlZFxuXHQiCiAgICAg ICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAgICAiLnByZXZpb3VzXG5cdCIKICAg ICAgICAgICAgICAgIDoiPW0iIChzZW0tPmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2Vt KQogICAgICAgICAgICAgICAgOiJtZW1vcnkiKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGRv d25faW50ZXJydXB0aWJsZShzdHJ1Y3Qgc2VtYXBob3JlICogc2VtKQp7CiAgICAgICAgaW50IHJl c3VsdDsKCgoKCgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAogICAgICAgICAgICAgICAg IiMgYXRvbWljIGludGVycnVwdGlibGUgZG93biBvcGVyYXRpb25cblx0IgogICAgICAgICAgICAg ICAgImxvY2sgOyAiICJkZWNsICUxXG5cdCIKICAgICAgICAgICAgICAgICJqcyAyZlxuXHQiCiAg ICAgICAgICAgICAgICAieG9ybCAlMCwlMFxuIgogICAgICAgICAgICAgICAgIjE6XG4iCiAgICAg ICAgICAgICAgICAiLnN1YnNlY3Rpb24gMVxuXHQiICIiICIuaWZuZGVmICIgIi50ZXh0LmxvY2su IiAic2VtYXBob3JlIiAiXG5cdCIgIi50ZXh0LmxvY2suIiAic2VtYXBob3JlIiAiOlxuXHQiICIu ZW5kaWZcblx0IgogICAgICAgICAgICAgICAgIjI6XHRjYWxsIF9fZG93bl9mYWlsZWRfaW50ZXJy dXB0aWJsZVxuXHQiCiAgICAgICAgICAgICAgICAiam1wIDFiXG4iCiAgICAgICAgICAgICAgICAi LnByZXZpb3VzXG5cdCIKICAgICAgICAgICAgICAgIDoiPWEiIChyZXN1bHQpLCAiPW0iIChzZW0t PmNvdW50KQogICAgICAgICAgICAgICAgOiJjIiAoc2VtKQogICAgICAgICAgICAgICAgOiJtZW1v cnkiKTsKICAgICAgICByZXR1cm4gcmVzdWx0Owp9CgoKCgoKc3RhdGljIGlubGluZSBpbnQgZG93 bl90cnlsb2NrKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCnsKICAgICAgICBpbnQgcmVzdWx0OwoK CgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAgICAgICAgICAiIyBhdG9t aWMgaW50ZXJydXB0aWJsZSBkb3duIG9wZXJhdGlvblxuXHQiCiAgICAgICAgICAgICAgICAibG9j ayA7ICIgImRlY2wgJTFcblx0IgogICAgICAgICAgICAgICAgImpzIDJmXG5cdCIKICAgICAgICAg ICAgICAgICJ4b3JsICUwLCUwXG4iCiAgICAgICAgICAgICAgICAiMTpcbiIKICAgICAgICAgICAg ICAgICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5kZWYgIiAiLnRleHQubG9jay4iICJzZW1h cGhvcmUiICJcblx0IiAiLnRleHQubG9jay4iICJzZW1hcGhvcmUiICI6XG5cdCIgIi5lbmRpZlxu XHQiCiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX19kb3duX2ZhaWxlZF90cnlsb2NrXG5cdCIK ICAgICAgICAgICAgICAgICJqbXAgMWJcbiIKICAgICAgICAgICAgICAgICIucHJldmlvdXNcblx0 IgogICAgICAgICAgICAgICAgOiI9YSIgKHJlc3VsdCksICI9bSIgKHNlbS0+Y291bnQpCiAgICAg ICAgICAgICAgICA6ImMiIChzZW0pCiAgICAgICAgICAgICAgICA6Im1lbW9yeSIpOwogICAgICAg IHJldHVybiByZXN1bHQ7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCB1cChzdHJ1Y3Qgc2Vt YXBob3JlICogc2VtKQp7CgoKCiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCiAgICAgICAg ICAgICAgICAiIyBhdG9taWMgdXAgb3BlcmF0aW9uXG5cdCIKICAgICAgICAgICAgICAgICJsb2Nr IDsgIiAiaW5jbCAlMFxuXHQiCiAgICAgICAgICAgICAgICAiamxlIDJmXG4iCiAgICAgICAgICAg ICAgICAiMTpcbiIKICAgICAgICAgICAgICAgICIuc3Vic2VjdGlvbiAxXG5cdCIgIiIgIi5pZm5k ZWYgIiAiLnRleHQubG9jay4iICJzZW1hcGhvcmUiICJcblx0IiAiLnRleHQubG9jay4iICJzZW1h cGhvcmUiICI6XG5cdCIgIi5lbmRpZlxuXHQiCiAgICAgICAgICAgICAgICAiMjpcdGNhbGwgX191 cF93YWtldXBcblx0IgogICAgICAgICAgICAgICAgImptcCAxYlxuIgogICAgICAgICAgICAgICAg Ii5wcmV2aW91c1xuXHQiCiAgICAgICAgICAgICAgICAiLnN1YnNlY3Rpb24gMFxuIgogICAgICAg ICAgICAgICAgOiI9bSIgKHNlbS0+Y291bnQpCiAgICAgICAgICAgICAgICA6ImMiIChzZW0pCiAg ICAgICAgICAgICAgICA6Im1lbW9yeSIpOwp9CiMgMjAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIu aCIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaCIKc3RhdGlj IF9faW5saW5lX18gX19jb25zdF9fIF9fdTMyIF9fX2FyY2hfX3N3YWIzMihfX3UzMiB4KQp7Cgog ICAgICAgIF9fYXNtX18oImJzd2FwICUwIiA6ICI9ciIgKHgpIDogIjAiICh4KSk7CgoKCgoKCgog ICAgICAgIHJldHVybiB4Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX2NvbnN0X18gX191MTYgX19f YXJjaF9fc3dhYjE2KF9fdTE2IHgpCnsKICAgICAgICBfX2FzbV9fKCJ4Y2hnYiAlYjAsJWgwIiA6 ICI9cSIgKHgpIDogIjAiICh4KSk7IHJldHVybiB4OwoKCgp9CiMgNDUgIi91c3Ivc3JjL2xpbnV4 L2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu dXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNs dWRlL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiCiMgMSAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9saW51eC9ieXRlb3JkZXIvc3dhYi5oIiAxCiMgMTMxICIvdXNyL3NyYy9saW51eC9p bmNsdWRlL2xpbnV4L2J5dGVvcmRlci9zd2FiLmgiCnN0YXRpYyBfX2lubGluZV9fIF9fY29uc3Rf XyBfX3UxNiBfX2Zzd2FiMTYoX191MTYgeCkKewogICAgICAgIHJldHVybiBfX19hcmNoX19zd2Fi MTYoeCk7Cn0Kc3RhdGljIF9faW5saW5lX18gX191MTYgX19zd2FiMTZwKF9fdTE2ICp4KQp7CiAg ICAgICAgcmV0dXJuIF9fX2FyY2hfX3N3YWIxNigqKHgpKTsKfQpzdGF0aWMgX19pbmxpbmVfXyB2 b2lkIF9fc3dhYjE2cyhfX3UxNiAqYWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9IF9fX2Fy Y2hfX3N3YWIxNigqKChhZGRyKSkpOyB9IHdoaWxlICgwKTsKfQoKc3RhdGljIF9faW5saW5lX18g X19jb25zdF9fIF9fdTMyIF9fZnN3YWIzMihfX3UzMiB4KQp7CiAgICAgICAgcmV0dXJuIF9fX2Fy Y2hfX3N3YWIzMih4KTsKfQpzdGF0aWMgX19pbmxpbmVfXyBfX3UzMiBfX3N3YWIzMnAoX191MzIg KngpCnsKICAgICAgICByZXR1cm4gX19fYXJjaF9fc3dhYjMyKCooeCkpOwp9CnN0YXRpYyBfX2lu bGluZV9fIHZvaWQgX19zd2FiMzJzKF9fdTMyICphZGRyKQp7CiAgICAgICAgZG8geyAqKGFkZHIp ID0gX19fYXJjaF9fc3dhYjMyKCooKGFkZHIpKSk7IH0gd2hpbGUgKDApOwp9CgoKc3RhdGljIF9f aW5saW5lX18gX19jb25zdF9fIF9fdTY0IF9fZnN3YWI2NChfX3U2NCB4KQp7CgogICAgICAgIF9f dTMyIGggPSB4ID4+IDMyOwogICAgICAgIF9fdTMyIGwgPSB4ICYgKCgxVUxMPDwzMiktMSk7CiAg ICAgICAgcmV0dXJuICgoKF9fdTY0KShfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKGwpKSA/ ICh7IF9fdTMyIF9feCA9ICgobCkpOyAoKF9fdTMyKSggKCgoX191MzIpKF9feCkgJiAoX191MzIp MHgwMDAwMDBmZlVMKSA8PCAyNCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwMDBmZjAw VUwpIDw8IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHgwMGZmMDAwMFVMKSA+PiA4KSB8 ICgoKF9fdTMyKShfX3gpICYgKF9fdTMyKTB4ZmYwMDAwMDBVTCkgPj4gMjQpICkpOyB9KSA6IF9f ZnN3YWIzMigobCkpKSkgPDwgMzIpIHwgKChfX3U2NCkoKF9fYnVpbHRpbl9jb25zdGFudF9wKChf X3UzMikoaCkpID8gKHsgX191MzIgX194ID0gKChoKSk7ICgoX191MzIpKCAoKChfX3UzMikoX194 KSAmIChfX3UzMikweDAwMDAwMGZmVUwpIDw8IDI0KSB8ICgoKF9fdTMyKShfX3gpICYgKF9fdTMy KTB4MDAwMGZmMDBVTCkgPDwgOCkgfCAoKChfX3UzMikoX194KSAmIChfX3UzMikweDAwZmYwMDAw VUwpID4+IDgpIHwgKCgoX191MzIpKF9feCkgJiAoX191MzIpMHhmZjAwMDAwMFVMKSA+PiAyNCkg KSk7IH0pIDogX19mc3dhYjMyKChoKSkpKSk7CgoKCn0Kc3RhdGljIF9faW5saW5lX18gX191NjQg X19zd2FiNjRwKF9fdTY0ICp4KQp7CiAgICAgICAgcmV0dXJuICh7IF9fdTY0IF9fdG1wID0gKCoo eCkpIDsgKHsgX191NjQgX194ID0gKF9fdG1wKTsgKChfX3U2NCkoIChfX3U2NCkoKChfX3U2NCko X194KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMDAwZmZVTEwpIDw8IDU2KSB8IChfX3U2NCkoKChf X3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDAwMGZmMDBVTEwpIDw8IDQwKSB8IChfX3U2 NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwMDBmZjAwMDBVTEwpIDw8IDI0KSB8 IChfX3U2NCkoKChfX3U2NCkoX194KSAmIChfX3U2NCkweDAwMDAwMDAwZmYwMDAwMDBVTEwpIDw8 IDgpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwZmYwMDAwMDAwMFVM TCkgPj4gOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMDAwZmYwMDAwMDAw MDAwVUxMKSA+PiAyNCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHgwMGZmMDAw MDAwMDAwMDAwVUxMKSA+PiA0MCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191NjQpMHhm ZjAwMDAwMDAwMDAwMDAwVUxMKSA+PiA1NikgKSk7IH0pOyB9KTsKfQpzdGF0aWMgX19pbmxpbmVf XyB2b2lkIF9fc3dhYjY0cyhfX3U2NCAqYWRkcikKewogICAgICAgIGRvIHsgKihhZGRyKSA9ICh7 IF9fdTY0IF9fdG1wID0gKCooKGFkZHIpKSkgOyAoeyBfX3U2NCBfX3ggPSAoX190bXApOyAoKF9f dTY0KSggKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAwMDBmZlVM TCkgPDwgNTYpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAwMDAwMDAw ZmYwMFVMTCkgPDwgNDApIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4MDAwMDAw MDAwMGZmMDAwMFVMTCkgPDwgMjQpIHwgKF9fdTY0KSgoKF9fdTY0KShfX3gpICYgKF9fdTY0KTB4 MDAwMDAwMDBmZjAwMDAwMFVMTCkgPDwgOCkgfCAoX191NjQpKCgoX191NjQpKF9feCkgJiAoX191 NjQpMHgwMDAwMDBmZjAwMDAwMDAwVUxMKSA+PiA4KSB8IChfX3U2NCkoKChfX3U2NCkoX194KSAm IChfX3U2NCkweDAwMDBmZjAwMDAwMDAwMDBVTEwpID4+IDI0KSB8IChfX3U2NCkoKChfX3U2NCko X194KSAmIChfX3U2NCkweDAwZmYwMDAwMDAwMDAwMDBVTEwpID4+IDQwKSB8IChfX3U2NCkoKChf X3U2NCkoX194KSAmIChfX3U2NCkweGZmMDAwMDAwMDAwMDAwMDBVTEwpID4+IDU2KSApKTsgfSk7 IH0pOyB9IHdoaWxlICgwKTsKfQojIDEyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2J5 dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDIKIyA2NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1 ZGUvbGludXgvYnl0ZW9yZGVyL2dlbmVyaWMuaCIgMQojIDE1MCAiL3Vzci9zcmMvbGludXgvaW5j bHVkZS9saW51eC9ieXRlb3JkZXIvZ2VuZXJpYy5oIgpleHRlcm4gX191MzIgbnRvaGwoX191MzIp OwpleHRlcm4gX191MzIgaHRvbmwoX191MzIpOwoKCgoKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGlu dCBudG9ocyh1bnNpZ25lZCBzaG9ydCBpbnQpOwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50IGh0 b25zKHVuc2lnbmVkIHNob3J0IGludCk7CiMgNjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu dXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMgojIDQ2ICIvdXNyL3NyYy9saW51eC9pbmNs dWRlL2FzbS9ieXRlb3JkZXIuaCIgMgojIDIwMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51 eC9mcy5oIiAyCgpleHRlcm4gdm9pZCB1cGRhdGVfYXRpbWUgKHN0cnVjdCBpbm9kZSAqKTsKCgpl eHRlcm4gdm9pZCBidWZmZXJfaW5pdCh1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgaW5vZGVf aW5pdCh1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgbW50X2luaXQodW5zaWduZWQgbG9uZyk7 CgoKZW51bSBiaF9zdGF0ZV9iaXRzIHsKICAgICAgICBCSF9VcHRvZGF0ZSwKICAgICAgICBCSF9E aXJ0eSwKICAgICAgICBCSF9Mb2NrLAogICAgICAgIEJIX1JlcSwKICAgICAgICBCSF9NYXBwZWQs CiAgICAgICAgQkhfTmV3LAogICAgICAgIEJIX0FzeW5jLAogICAgICAgIEJIX1dhaXRfSU8sCiAg ICAgICAgQkhfTGF1bmRlciwKICAgICAgICBCSF9KQkQsCgogICAgICAgIEJIX1ByaXZhdGVTdGFy dCwKCgp9OwojIDI0MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3Qg YnVmZmVyX2hlYWQgewoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfbmV4dDsKICAgICAg ICB1bnNpZ25lZCBsb25nIGJfYmxvY2tucjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBiX3NpemU7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgYl9saXN0OwogICAgICAgIGtkZXZfdCBiX2RldjsKCiAg ICAgICAgYXRvbWljX3QgYl9jb3VudDsKICAgICAgICBrZGV2X3QgYl9yZGV2OwogICAgICAgIHVu c2lnbmVkIGxvbmcgYl9zdGF0ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGJfZmx1c2h0aW1lOwoK ICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfbmV4dF9mcmVlOwogICAgICAgIHN0cnVjdCBi dWZmZXJfaGVhZCAqYl9wcmV2X2ZyZWU7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiX3Ro aXNfcGFnZTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJfcmVxbmV4dDsKCiAgICAgICAg c3RydWN0IGJ1ZmZlcl9oZWFkICoqYl9wcHJldjsKICAgICAgICBjaGFyICogYl9kYXRhOwogICAg ICAgIHN0cnVjdCBwYWdlICpiX3BhZ2U7CiAgICAgICAgdm9pZCAoKmJfZW5kX2lvKShzdHJ1Y3Qg YnVmZmVyX2hlYWQgKmJoLCBpbnQgdXB0b2RhdGUpOwogICAgICAgIHZvaWQgKmJfcHJpdmF0ZTsK CiAgICAgICAgdW5zaWduZWQgbG9uZyBiX3JzZWN0b3I7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk X3QgYl93YWl0OwoKICAgICAgICBzdHJ1Y3QgaW5vZGUgKiBiX2lub2RlOwogICAgICAgIHN0cnVj dCBsaXN0X2hlYWQgYl9pbm9kZV9idWZmZXJzOwp9OwoKdHlwZWRlZiB2b2lkIChiaF9lbmRfaW9f dCkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgaW50IHVwdG9kYXRlKTsKdm9pZCBpbml0X2J1ZmZl cihzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgYmhfZW5kX2lvX3QgKiwgdm9pZCAqKTsKIyAyODggIi91 c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHZvaWQgc2V0X2JoX3BhZ2Uo c3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwgc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcg b2Zmc2V0KTsKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9waXBlX2ZzX2ku aCIgMQoKCgoKc3RydWN0IHBpcGVfaW5vZGVfaW5mbyB7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk X3Qgd2FpdDsKICAgICAgICBjaGFyICpiYXNlOwogICAgICAgIHVuc2lnbmVkIGludCBsZW47CiAg ICAgICAgdW5zaWduZWQgaW50IHN0YXJ0OwogICAgICAgIHVuc2lnbmVkIGludCByZWFkZXJzOwog ICAgICAgIHVuc2lnbmVkIGludCB3cml0ZXJzOwogICAgICAgIHVuc2lnbmVkIGludCB3YWl0aW5n X3JlYWRlcnM7CiAgICAgICAgdW5zaWduZWQgaW50IHdhaXRpbmdfd3JpdGVyczsKICAgICAgICB1 bnNpZ25lZCBpbnQgcl9jb3VudGVyOwogICAgICAgIHVuc2lnbmVkIGludCB3X2NvdW50ZXI7Cn07 CiMgNDIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcGlwZV9mc19pLmgiCnZvaWQgcGlw ZV93YWl0KHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKCnN0cnVjdCBpbm9kZSogcGlwZV9uZXcoc3Ry dWN0IGlub2RlKiBpbm9kZSk7CiMgMjk0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Zz LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzX2kuaCIgMQoK CgoKCgpzdHJ1Y3QgbWluaXhfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5pb24gewogICAgICAgICAg ICAgICAgX191MTYgaTFfZGF0YVsxNl07CiAgICAgICAgICAgICAgICBfX3UzMiBpMl9kYXRhWzE2 XTsKICAgICAgICB9IHU7Cn07CiMgMjk1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Zz LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2V4dDJfZnNfaS5oIiAxCiMg MjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXh0Ml9mc19pLmgiCnN0cnVjdCBleHQy X2lub2RlX2luZm8gewogICAgICAgIF9fdTMyIGlfZGF0YVsxNV07CiAgICAgICAgX191MzIgaV9m bGFnczsKICAgICAgICBfX3UzMiBpX2ZhZGRyOwogICAgICAgIF9fdTggaV9mcmFnX25vOwogICAg ICAgIF9fdTggaV9mcmFnX3NpemU7CiAgICAgICAgX191MzIgaV9maWxlX2FjbDsKICAgICAgICBf X3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191MzIgaV9kdGltZTsKICAgICAgICBfX3UzMiBpX2Js b2NrX2dyb3VwOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3Uz MiBpX25leHRfYWxsb2NfZ29hbDsKICAgICAgICBfX3UzMiBpX3ByZWFsbG9jX2Jsb2NrOwogICAg ICAgIF9fdTMyIGlfcHJlYWxsb2NfY291bnQ7CiAgICAgICAgX191MzIgaV9kaXJfc3RhcnRfbG9v a3VwOwogICAgICAgIGludCBpX25ld19pbm9kZToxOwp9OwojIDI5NiAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9l eHQzX2ZzX2kuaCIgMQojIDI0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2V4dDNfZnNf aS5oIgpzdHJ1Y3QgZXh0M19pbm9kZV9pbmZvIHsKICAgICAgICBfX3UzMiBpX2RhdGFbMTVdOwog ICAgICAgIF9fdTMyIGlfZmxhZ3M7CgoKCgoKCiAgICAgICAgX191MzIgaV9maWxlX2FjbDsKICAg ICAgICBfX3UzMiBpX2Rpcl9hY2w7CiAgICAgICAgX191MzIgaV9kdGltZTsKICAgICAgICBfX3Uz MiBpX2Jsb2NrX2dyb3VwOwogICAgICAgIF9fdTMyIGlfc3RhdGU7CiAgICAgICAgX191MzIgaV9u ZXh0X2FsbG9jX2Jsb2NrOwogICAgICAgIF9fdTMyIGlfbmV4dF9hbGxvY19nb2FsOwoKCgoKICAg ICAgICBfX3UzMiBpX2Rpcl9zdGFydF9sb29rdXA7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg aV9vcnBoYW47CiMgNjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXh0M19mc19pLmgi CiAgICAgICAgbG9mZl90IGlfZGlza3NpemU7CiMgNzUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv bGludXgvZXh0M19mc19pLmgiCiAgICAgICAgc3RydWN0IHJ3X3NlbWFwaG9yZSB0cnVuY2F0ZV9z ZW07Cn07CiMgMjk3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2hwZnNfZnNfaS5oIiAxCgoKCnN0cnVjdCBocGZz X2lub2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAgICAg aW5vX3QgaV9wYXJlbnRfZGlyOwogICAgICAgIHVuc2lnbmVkIGlfZG5vOwogICAgICAgIHVuc2ln bmVkIGlfZHBvczsKICAgICAgICB1bnNpZ25lZCBpX2RzdWJkbm87CiAgICAgICAgdW5zaWduZWQg aV9maWxlX3NlYzsKICAgICAgICB1bnNpZ25lZCBpX2Rpc2tfc2VjOwogICAgICAgIHVuc2lnbmVk IGlfbl9zZWNzOwogICAgICAgIHVuc2lnbmVkIGlfZWFfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBp X2NvbnYgOiAyOwogICAgICAgIHVuc2lnbmVkIGlfZWFfbW9kZSA6IDE7CiAgICAgICAgdW5zaWdu ZWQgaV9lYV91aWQgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfZWFfZ2lkIDogMTsKICAgICAgICB1 bnNpZ25lZCBpX2RpcnR5IDogMTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfc2VtOwogICAg ICAgIGxvZmZfdCAqKmlfcmRkaXJfb2ZmOwp9OwojIDI5OCAiL3Vzci9zcmMvbGludXgvaW5jbHVk ZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9udGZzX2Zz X2kuaCIgMQoKCgoKCgpzdHJ1Y3QgbnRmc19hdHRyaWJ1dGU7CnN0cnVjdCBudGZzX3NiX2luZm87 CgoKCgp0eXBlZGVmIHU4IG50ZnNfdTg7CnR5cGVkZWYgdTE2IG50ZnNfdTE2Owp0eXBlZGVmIHUz MiBudGZzX3UzMjsKdHlwZWRlZiB1NjQgbnRmc191NjQ7CnR5cGVkZWYgczggbnRmc19zODsKdHlw ZWRlZiBzMTYgbnRmc19zMTY7CnR5cGVkZWYgczMyIG50ZnNfczMyOwp0eXBlZGVmIHM2NCBudGZz X3M2NDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfbW9kZV90IG50bW9kZV90OwoKCgp0eXBlZGVmIHVp ZF90IG50ZnNfdWlkX3Q7CgoKCnR5cGVkZWYgZ2lkX3QgbnRmc19naWRfdDsKCgoKdHlwZWRlZiBf X2tlcm5lbF9zaXplX3QgbnRmc19zaXplX3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfdGltZV90IG50 ZnNfdGltZV90OwoKCgoKCnR5cGVkZWYgdTE2IG50ZnNfd2NoYXJfdDsKCgoKCnR5cGVkZWYgczY0 IG50ZnNfb2Zmc2V0X3Q7CgoKCgp0eXBlZGVmIHU2NCBudGZzX3RpbWU2NF90OwojIDY5ICIvdXNy L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfaS5oIgp0eXBlZGVmIHMzMiBudGZzX2Ns dXN0ZXJfdDsKCgoKc3RydWN0IG50ZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgc3RydWN0IG50ZnNf c2JfaW5mbyAqdm9sOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9udW1iZXI7CiAgICAgICAgX191 MTYgc2VxdWVuY2VfbnVtYmVyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgKmF0dHI7CiAgICAgICAg aW50IGF0dHJfY291bnQ7CiAgICAgICAgc3RydWN0IG50ZnNfYXR0cmlidXRlICphdHRyczsKICAg ICAgICBpbnQgcmVjb3JkX2NvdW50OwogICAgICAgIGludCAqcmVjb3JkczsKCiAgICAgICAgdW5p b24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW50 IHJlY29yZHNpemU7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbHVzdGVyc19wZXJfcmVj b3JkOwogICAgICAgICAgICAgICAgfSBpbmRleDsKICAgICAgICB9IHU7Cn07CiMgMjk5ICIvdXNy L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs dWRlL2xpbnV4L21zZG9zX2ZzX2kuaCIgMQoKCgoKCgoKc3RydWN0IG1zZG9zX2lub2RlX2luZm8g ewogICAgICAgIHVuc2lnbmVkIGxvbmcgbW11X3ByaXZhdGU7CiAgICAgICAgaW50IGlfc3RhcnQ7 CiAgICAgICAgaW50IGlfbG9nc3RhcnQ7CiAgICAgICAgaW50IGlfYXR0cnM7CiAgICAgICAgaW50 IGlfY3RpbWVfbXM7CiAgICAgICAgaW50IGlfbG9jYXRpb247CiAgICAgICAgc3RydWN0IGlub2Rl ICppX2ZhdF9pbm9kZTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGlfZmF0X2hhc2g7Cn07CiMg MzAwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s aW51eC9pbmNsdWRlL2xpbnV4L3Vtc2Rvc19mc19pLmgiIDEKIyAzOSAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9saW51eC91bXNkb3NfZnNfaS5oIgpzdHJ1Y3QgZGlyX2xvY2tpbmdfaW5mbyB7CiAg ICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgcDsKICAgICAgICBzaG9ydCBpbnQgbG9va2luZzsKICAg ICAgICBzaG9ydCBpbnQgY3JlYXRpbmc7CgoKCiAgICAgICAgbG9uZyBwaWQ7Cgp9OwoKc3RydWN0 IHVtc2Rvc19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgbXNkb3NfaW5vZGVfaW5mbyBtc2Rv c19pbmZvOwogICAgICAgIHN0cnVjdCBkaXJfbG9ja2luZ19pbmZvIGRpcl9pbmZvOwogICAgICAg IGludCBpX3BhdGNoZWQ7CiAgICAgICAgaW50IGlfaXNfaGxpbms7CiAgICAgICAgb2ZmX3QgcG9z Owp9OwojIDMwMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9pc29fZnNfaS5oIiAxCgoKCmVudW0gaXNvZnNfZmls ZV9mb3JtYXQgewogICAgICAgIGlzb2ZzX2ZpbGVfbm9ybWFsID0gMCwKICAgICAgICBpc29mc19m aWxlX3NwYXJzZSA9IDEsCiAgICAgICAgaXNvZnNfZmlsZV9jb21wcmVzc2VkID0gMiwKfTsKCgoK CnN0cnVjdCBpc29faW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWduZWQgaW50IGlfZmlyc3RfZXh0 ZW50OwogICAgICAgIHVuc2lnbmVkIGNoYXIgaV9maWxlX2Zvcm1hdDsKICAgICAgICB1bnNpZ25l ZCBjaGFyIGlfZm9ybWF0X3Bhcm1bM107CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX25leHRfc2Vj dGlvbl9pbm87CiAgICAgICAgb2ZmX3QgaV9zZWN0aW9uX3NpemU7Cn07CiMgMzAyICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L25mc19mc19pLmgiIDEKCgoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu dXgvbmZzLmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZnMuaCIKIyAx ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N1bnJwYy9tc2dfcHJvdC5oIiAxCiMgMTQg Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc3VucnBjL21zZ19wcm90LmgiCmVudW0gcnBj X2F1dGhfZmxhdm9yIHsKICAgICAgICBSUENfQVVUSF9OVUxMID0gMCwKICAgICAgICBSUENfQVVU SF9VTklYID0gMSwKICAgICAgICBSUENfQVVUSF9TSE9SVCA9IDIsCiAgICAgICAgUlBDX0FVVEhf REVTID0gMywKICAgICAgICBSUENfQVVUSF9LUkIgPSA0LAp9OwoKZW51bSBycGNfbXNnX3R5cGUg ewogICAgICAgIFJQQ19DQUxMID0gMCwKICAgICAgICBSUENfUkVQTFkgPSAxCn07CgplbnVtIHJw Y19yZXBseV9zdGF0IHsKICAgICAgICBSUENfTVNHX0FDQ0VQVEVEID0gMCwKICAgICAgICBSUENf TVNHX0RFTklFRCA9IDEKfTsKCmVudW0gcnBjX2FjY2VwdF9zdGF0IHsKICAgICAgICBSUENfU1VD Q0VTUyA9IDAsCiAgICAgICAgUlBDX1BST0dfVU5BVkFJTCA9IDEsCiAgICAgICAgUlBDX1BST0df TUlTTUFUQ0ggPSAyLAogICAgICAgIFJQQ19QUk9DX1VOQVZBSUwgPSAzLAogICAgICAgIFJQQ19H QVJCQUdFX0FSR1MgPSA0LAogICAgICAgIFJQQ19TWVNURU1fRVJSID0gNQp9OwoKZW51bSBycGNf cmVqZWN0X3N0YXQgewogICAgICAgIFJQQ19NSVNNQVRDSCA9IDAsCiAgICAgICAgUlBDX0FVVEhf RVJST1IgPSAxCn07CgplbnVtIHJwY19hdXRoX3N0YXQgewogICAgICAgIFJQQ19BVVRIX09LID0g MCwKICAgICAgICBSUENfQVVUSF9CQURDUkVEID0gMSwKICAgICAgICBSUENfQVVUSF9SRUpFQ1RF RENSRUQgPSAyLAogICAgICAgIFJQQ19BVVRIX0JBRFZFUkYgPSAzLAogICAgICAgIFJQQ19BVVRI X1JFSkVDVEVEVkVSRiA9IDQsCiAgICAgICAgUlBDX0FVVEhfVE9PV0VBSyA9IDUKfTsKIyAxMSAi L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uZnMuaCIgMgojIDQxICIvdXNyL3NyYy9saW51 eC9pbmNsdWRlL2xpbnV4L25mcy5oIgogZW51bSBuZnNfc3RhdCB7CiAgICAgICAgTkZTX09LID0g MCwKICAgICAgICBORlNFUlJfUEVSTSA9IDEsCiAgICAgICAgTkZTRVJSX05PRU5UID0gMiwKICAg ICAgICBORlNFUlJfSU8gPSA1LAogICAgICAgIE5GU0VSUl9OWElPID0gNiwKICAgICAgICBORlNF UlJfRUFHQUlOID0gMTEsCiAgICAgICAgTkZTRVJSX0FDQ0VTID0gMTMsCiAgICAgICAgTkZTRVJS X0VYSVNUID0gMTcsCiAgICAgICAgTkZTRVJSX1hERVYgPSAxOCwKICAgICAgICBORlNFUlJfTk9E RVYgPSAxOSwKICAgICAgICBORlNFUlJfTk9URElSID0gMjAsCiAgICAgICAgTkZTRVJSX0lTRElS ID0gMjEsCiAgICAgICAgTkZTRVJSX0lOVkFMID0gMjIsCiAgICAgICAgTkZTRVJSX0ZCSUcgPSAy NywKICAgICAgICBORlNFUlJfTk9TUEMgPSAyOCwKICAgICAgICBORlNFUlJfUk9GUyA9IDMwLAog ICAgICAgIE5GU0VSUl9NTElOSyA9IDMxLAogICAgICAgIE5GU0VSUl9PUE5PVFNVUFAgPSA0NSwK ICAgICAgICBORlNFUlJfTkFNRVRPT0xPTkcgPSA2MywKICAgICAgICBORlNFUlJfTk9URU1QVFkg PSA2NiwKICAgICAgICBORlNFUlJfRFFVT1QgPSA2OSwKICAgICAgICBORlNFUlJfU1RBTEUgPSA3 MCwKICAgICAgICBORlNFUlJfUkVNT1RFID0gNzEsCiAgICAgICAgTkZTRVJSX1dGTFVTSCA9IDk5 LAogICAgICAgIE5GU0VSUl9CQURIQU5ETEUgPSAxMDAwMSwKICAgICAgICBORlNFUlJfTk9UX1NZ TkMgPSAxMDAwMiwKICAgICAgICBORlNFUlJfQkFEX0NPT0tJRSA9IDEwMDAzLAogICAgICAgIE5G U0VSUl9OT1RTVVBQID0gMTAwMDQsCiAgICAgICAgTkZTRVJSX1RPT1NNQUxMID0gMTAwMDUsCiAg ICAgICAgTkZTRVJSX1NFUlZFUkZBVUxUID0gMTAwMDYsCiAgICAgICAgTkZTRVJSX0JBRFRZUEUg PSAxMDAwNywKICAgICAgICBORlNFUlJfSlVLRUJPWCA9IDEwMDA4CiB9OwoKCgplbnVtIG5mc19m dHlwZSB7CiAgICAgICAgTkZOT04gPSAwLAogICAgICAgIE5GUkVHID0gMSwKICAgICAgICBORkRJ UiA9IDIsCiAgICAgICAgTkZCTEsgPSAzLAogICAgICAgIE5GQ0hSID0gNCwKICAgICAgICBORkxO SyA9IDUsCiAgICAgICAgTkZTT0NLID0gNiwKICAgICAgICBORkJBRCA9IDcsCiAgICAgICAgTkZG SUZPID0gOAp9OwoKCgoKCgpzdHJ1Y3QgbmZzX2ZoIHsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBz aXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZGF0YVs2NF07Cn07CiMgMTA3ICIvdXNyL3NyYy9s aW51eC9pbmNsdWRlL2xpbnV4L25mcy5oIgplbnVtIG5mczNfc3RhYmxlX2hvdyB7CiAgICAgICAg TkZTX1VOU1RBQkxFID0gMCwKICAgICAgICBORlNfREFUQV9TWU5DID0gMSwKICAgICAgICBORlNf RklMRV9TWU5DID0gMgp9OwojIDcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmZzX2Zz X2kuaCIgMgoKCgoKc3RydWN0IG5mc19pbm9kZV9pbmZvIHsKCgoKICAgICAgICBfX3U2NCBmaWxl aWQ7CgoKCgogICAgICAgIHN0cnVjdCBuZnNfZmggZmg7CgoKCgogICAgICAgIHVuc2lnbmVkIHNo b3J0IGZsYWdzOwojIDQ0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25mc19mc19pLmgi CiAgICAgICAgdW5zaWduZWQgbG9uZyByZWFkX2NhY2hlX2ppZmZpZXM7CiAgICAgICAgX191NjQg cmVhZF9jYWNoZV9jdGltZTsKICAgICAgICBfX3U2NCByZWFkX2NhY2hlX210aW1lOwogICAgICAg IF9fdTY0IHJlYWRfY2FjaGVfaXNpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRydGltZW87 CiAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRydGltZW9fdGltZXN0YW1wOwoKCgoKCiAgICAgICAg dW5zaWduZWQgbG9uZyBjYWNoZV9tdGltZV9qaWZmaWVzOwoKCgoKCiAgICAgICAgX191MzIgY29v a2lldmVyZlsyXTsKCgoKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCByZWFkOwogICAgICAgIHN0 cnVjdCBsaXN0X2hlYWQgZGlydHk7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjb21taXQ7CiAg ICAgICAgc3RydWN0IGxpc3RfaGVhZCB3cml0ZWJhY2s7CgogICAgICAgIHVuc2lnbmVkIGludCBu cmVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGlydHksCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbmNvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBucGFnZXM7CgoKICAgICAgICBzdHJ1Y3QgcnBjX2NyZWQgKm1tX2NyZWQ7Cn07CiMgOTIg Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIKc3RydWN0IG5mc19sb2Nr X2luZm8gewogICAgICAgIHUzMiBzdGF0ZTsKICAgICAgICB1MzIgZmxhZ3M7CiAgICAgICAgc3Ry dWN0IG5sbV9ob3N0ICpob3N0Owp9OwojIDMwMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51 eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zeXN2X2ZzX2kuaCIg MQoKCgoKCgpzdHJ1Y3Qgc3lzdl9pbm9kZV9pbmZvIHsKICAgICAgICB1MzIgaV9kYXRhWzEwKzEr MSsxXTsKCgoKCiAgICAgICAgdTMyIGlfZGlyX3N0YXJ0X2xvb2t1cDsKfTsKIyAzMDQgIi91c3Iv c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1 ZGUvbGludXgvYWZmc19mc19pLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp bnV4L2Eub3V0LmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYS5v dXQuaCIgMQoKCgpzdHJ1Y3QgZXhlYwp7CiAgdW5zaWduZWQgbG9uZyBhX2luZm87CiAgdW5zaWdu ZWQgYV90ZXh0OwogIHVuc2lnbmVkIGFfZGF0YTsKICB1bnNpZ25lZCBhX2JzczsKICB1bnNpZ25l ZCBhX3N5bXM7CiAgdW5zaWduZWQgYV9lbnRyeTsKICB1bnNpZ25lZCBhX3Ryc2l6ZTsKICB1bnNp Z25lZCBhX2Ryc2l6ZTsKfTsKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Eub3V0 LmgiIDIKCgoKCmVudW0gbWFjaGluZV90eXBlIHsKCgoKICBNX09MRFNVTjIgPSAwLAoKCgoKICBN XzY4MDEwID0gMSwKCgoKCiAgTV82ODAyMCA9IDIsCgoKCgogIE1fU1BBUkMgPSAzLAoKCiAgTV8z ODYgPSAxMDAsCiAgTV9NSVBTMSA9IDE1MSwKICBNX01JUFMyID0gMTUyCn07CiMgMTU3ICIvdXNy L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCnN0cnVjdCBubGlzdCB7CiAgdW5pb24g ewogICAgY2hhciAqbl9uYW1lOwogICAgc3RydWN0IG5saXN0ICpuX25leHQ7CiAgICBsb25nIG5f c3RyeDsKICB9IG5fdW47CiAgdW5zaWduZWQgY2hhciBuX3R5cGU7CiAgY2hhciBuX290aGVyOwog IHNob3J0IG5fZGVzYzsKICB1bnNpZ25lZCBsb25nIG5fdmFsdWU7Cn07CiMgMjM1ICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2xpbnV4L2Eub3V0LmgiCnN0cnVjdCByZWxvY2F0aW9uX2luZm8KewoK ICBpbnQgcl9hZGRyZXNzOwoKICB1bnNpZ25lZCBpbnQgcl9zeW1ib2xudW06MjQ7CgoKCiAgdW5z aWduZWQgaW50IHJfcGNyZWw6MTsKCgogIHVuc2lnbmVkIGludCByX2xlbmd0aDoyOwoKCgoKCgog IHVuc2lnbmVkIGludCByX2V4dGVybjoxOwoKCgoKCgoKICB1bnNpZ25lZCBpbnQgcl9wYWQ6NDsK Cn07CiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9hZmZzX2ZzX2kuaCIgMgoKCiMg MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lLmgiIDEKIyA5ICIvdXNyL3NyYy9s aW51eC9pbmNsdWRlL2xpbnV4L3RpbWUuaCIKc3RydWN0IHRpbWVzcGVjIHsKICAgICAgICB0aW1l X3QgdHZfc2VjOwogICAgICAgIGxvbmcgdHZfbnNlYzsKfTsKIyAzMSAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9saW51eC90aW1lLmgiCnN0YXRpYyBfX2lubGluZV9fIHVuc2lnbmVkIGxvbmcKdGlt ZXNwZWNfdG9famlmZmllcyhzdHJ1Y3QgdGltZXNwZWMgKnZhbHVlKQp7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBzZWMgPSB2YWx1ZS0+dHZfc2VjOwogICAgICAgIGxvbmcgbnNlYyA9IHZhbHVlLT50 dl9uc2VjOwoKICAgICAgICBpZiAoc2VjID49ICgoKH4wVUwgPj4gMSktMSkgLyAxMDApKQogICAg ICAgICAgICAgICAgcmV0dXJuICgofjBVTCA+PiAxKS0xKTsKICAgICAgICBuc2VjICs9IDEwMDAw MDAwMDBMIC8gMTAwIC0gMTsKICAgICAgICBuc2VjIC89IDEwMDAwMDAwMDBMIC8gMTAwOwogICAg ICAgIHJldHVybiAxMDAgKiBzZWMgKyBuc2VjOwp9CgpzdGF0aWMgX19pbmxpbmVfXyB2b2lkCmpp ZmZpZXNfdG9fdGltZXNwZWModW5zaWduZWQgbG9uZyBqaWZmaWVzLCBzdHJ1Y3QgdGltZXNwZWMg KnZhbHVlKQp7CiAgICAgICAgdmFsdWUtPnR2X25zZWMgPSAoamlmZmllcyAlIDEwMCkgKiAoMTAw MDAwMDAwMEwgLyAxMDApOwogICAgICAgIHZhbHVlLT50dl9zZWMgPSBqaWZmaWVzIC8gMTAwOwp9 CiMgNjcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZS5oIgpzdGF0aWMgaW5saW5l IHVuc2lnbmVkIGxvbmcKbWt0aW1lICh1bnNpZ25lZCBpbnQgeWVhciwgdW5zaWduZWQgaW50IG1v biwKICAgICAgICB1bnNpZ25lZCBpbnQgZGF5LCB1bnNpZ25lZCBpbnQgaG91ciwKICAgICAgICB1 bnNpZ25lZCBpbnQgbWluLCB1bnNpZ25lZCBpbnQgc2VjKQp7CiAgICAgICAgaWYgKDAgPj0gKGlu dCkgKG1vbiAtPSAyKSkgewogICAgICAgICAgICAgICAgbW9uICs9IDEyOwogICAgICAgICAgICAg ICAgeWVhciAtPSAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICgoKAogICAgICAgICAgICAg ICAgKHVuc2lnbmVkIGxvbmcpICh5ZWFyLzQgLSB5ZWFyLzEwMCArIHllYXIvNDAwICsgMzY3Km1v bi8xMiArIGRheSkgKwogICAgICAgICAgICAgICAgICAgICAgICB5ZWFyKjM2NSAtIDcxOTQ5OQog ICAgICAgICAgICApKjI0ICsgaG91cgogICAgICAgICAgKSo2MCArIG1pbgogICAgICAgICkqNjAg KyBzZWM7Cn0KCgoKCnN0cnVjdCB0aW1ldmFsIHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwogICAg ICAgIHN1c2Vjb25kc190IHR2X3VzZWM7Cn07CgpzdHJ1Y3QgdGltZXpvbmUgewogICAgICAgIGlu dCB0el9taW51dGVzd2VzdDsKICAgICAgICBpbnQgdHpfZHN0dGltZTsKfTsKCgoKCmV4dGVybiB2 b2lkIGRvX2dldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqdHYpOwpleHRlcm4gdm9pZCBkb19z ZXR0aW1lb2ZkYXkoc3RydWN0IHRpbWV2YWwgKnR2KTsKIyAxMTkgIi91c3Ivc3JjL2xpbnV4L2lu Y2x1ZGUvbGludXgvdGltZS5oIgpzdHJ1Y3QgaXRpbWVyc3BlYyB7CiAgICAgICAgc3RydWN0IHRp bWVzcGVjIGl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92YWx1ZTsKfTsK CnN0cnVjdCBpdGltZXJ2YWwgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X2ludGVydmFsOwog ICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X3ZhbHVlOwp9OwojIDggIi91c3Ivc3JjL2xpbnV4L2lu Y2x1ZGUvbGludXgvYWZmc19mc19pLmgiIDIKIyAxNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9hZmZzX2ZzX2kuaCIKc3RydWN0IGFmZnNfZXh0X2tleSB7CiAgICAgICAgdTMyIGV4dDsK ICAgICAgICB1MzIga2V5Owp9OwoKCgoKc3RydWN0IGFmZnNfaW5vZGVfaW5mbyB7CiAgICAgICAg dTMyIGlfb3BlbmNudDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfbGlua19sb2NrOwogICAg ICAgIHN0cnVjdCBzZW1hcGhvcmUgaV9leHRfbG9jazsKCiAgICAgICAgdTMyIGlfYmxrY250Owog ICAgICAgIHUzMiBpX2V4dGNudDsKICAgICAgICB1MzIgKmlfbGM7CiAgICAgICAgdTMyIGlfbGNf c2l6ZTsKICAgICAgICB1MzIgaV9sY19zaGlmdDsKICAgICAgICB1MzIgaV9sY19tYXNrOwogICAg ICAgIHN0cnVjdCBhZmZzX2V4dF9rZXkgKmlfYWM7CiAgICAgICAgdTMyIGlfZXh0X2xhc3Q7CiAg ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICppX2V4dF9iaDsKICAgICAgICB1bnNpZ25lZCBsb25n IG1tdV9wcml2YXRlOwogICAgICAgIHUzMiBpX3Byb3RlY3Q7CiAgICAgICAgdTMyIGlfbGFzdGFs bG9jOwogICAgICAgIGludCBpX3BhX2NudDsKIyA1MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9hZmZzX2ZzX2kuaCIKfTsKIyAzMDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzX2kuaCIgMQoj IDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mc19pLmgiCnN0cnVjdCB1ZnNf aW5vZGVfaW5mbyB7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgX191MzIgaV9kYXRh WzE1XTsKICAgICAgICAgICAgICAgIF9fdTggaV9zeW1saW5rWzQqMTVdOwogICAgICAgIH0gaV91 MTsKICAgICAgICBfX3UzMiBpX2ZsYWdzOwogICAgICAgIF9fdTMyIGlfZ2VuOwogICAgICAgIF9f dTMyIGlfc2hhZG93OwogICAgICAgIF9fdTMyIGlfdW51c2VkMTsKICAgICAgICBfX3UzMiBpX3Vu dXNlZDI7CiAgICAgICAgX191MzIgaV9vZWZ0ZmxhZzsKICAgICAgICBfX3UxNiBpX29zeW5jOwog ICAgICAgIF9fdTMyIGlfbGFzdGZyYWc7Cn07CiMgMzA2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Vmc19mc19p LmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9lZnNfZnNfaS5oIgp0eXBl ZGVmIGludDMyX3QgZWZzX2Jsb2NrX3Q7CnR5cGVkZWYgdWludDMyX3QgZWZzX2lub190OwoKCgoK Cgp0eXBlZGVmIHVuaW9uIGV4dGVudF91IHsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJhd1s4XTsK ICAgICAgICBzdHJ1Y3QgZXh0ZW50X3MgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGV4 X21hZ2ljOjg7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZXhfYm46MjQ7CiAgICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgZXhfbGVuZ3RoOjg7CiAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgZXhfb2Zmc2V0OjI0OwogICAgICAgIH0gY29va2VkOwp9IGVmc19leHRlbnQ7Cgp0eXBl ZGVmIHN0cnVjdCBlZGV2cyB7CiAgICAgICAgc2hvcnQgb2RldjsKICAgICAgICB1bnNpZ25lZCBp bnQgbmRldjsKfSBlZnNfZGV2czsKCgoKCgpzdHJ1Y3QgZWZzX2Rpbm9kZSB7CiAgICAgICAgdV9z aG9ydCBkaV9tb2RlOwogICAgICAgIHNob3J0IGRpX25saW5rOwogICAgICAgIHVfc2hvcnQgZGlf dWlkOwogICAgICAgIHVfc2hvcnQgZGlfZ2lkOwogICAgICAgIGludDMyX3QgZGlfc2l6ZTsKICAg ICAgICBpbnQzMl90IGRpX2F0aW1lOwogICAgICAgIGludDMyX3QgZGlfbXRpbWU7CiAgICAgICAg aW50MzJfdCBkaV9jdGltZTsKICAgICAgICB1aW50MzJfdCBkaV9nZW47CiAgICAgICAgc2hvcnQg ZGlfbnVtZXh0ZW50czsKICAgICAgICB1X2NoYXIgZGlfdmVyc2lvbjsKICAgICAgICB1X2NoYXIg ZGlfc3BhcmU7CiAgICAgICAgdW5pb24gZGlfYWRkciB7CiAgICAgICAgICAgICAgICBlZnNfZXh0 ZW50IGRpX2V4dGVudHNbMTJdOwogICAgICAgICAgICAgICAgZWZzX2RldnMgZGlfZGV2OwogICAg ICAgIH0gZGlfdTsKfTsKCgpzdHJ1Y3QgZWZzX2lub2RlX2luZm8gewogICAgICAgIGludCBudW1l eHRlbnRzOwogICAgICAgIGludCBsYXN0ZXh0ZW50OwoKICAgICAgICBlZnNfZXh0ZW50IGV4dGVu dHNbMTJdOwp9OwojIDMwNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaCIgMQojIDE0ICIvdXNy L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGFfZnNfaS5oIgojIDEgIi91c3Ivc3JjL2xpbnV4 L2luY2x1ZGUvbGludXgvY29kYS5oIiAxCiMgMTA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp bnV4L2NvZGEuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdV9xdWFkX3Q7CiMgMTY0ICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0IHZlbnVzX2RpcmVudCB7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBkX2ZpbGVubzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBk X3JlY2xlbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGRfdHlwZTsKICAgICAgICB1bnNpZ25lZCBj aGFyIGRfbmFtbGVuOwogICAgICAgIGNoYXIgZF9uYW1lWzI1NSArIDFdOwp9OwojIDE5OCAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgiCnR5cGVkZWYgdV9sb25nIFZvbHVtZUlk Owp0eXBlZGVmIHVfbG9uZyBWbm9kZUlkOwp0eXBlZGVmIHVfbG9uZyBVbmlxdWVfdDsKdHlwZWRl ZiB1X2xvbmcgRmlsZVZlcnNpb247CgoKCgp0eXBlZGVmIHN0cnVjdCBWaWNlRmlkIHsKICAgIFZv bHVtZUlkIFZvbHVtZTsKICAgIFZub2RlSWQgVm5vZGU7CiAgICBVbmlxdWVfdCBVbmlxdWU7Cn0g VmljZUZpZDsKCgoKCnN0YXRpYyBfX2lubGluZV9fIGlub190IGNvZGFfZjJpKHN0cnVjdCBWaWNl RmlkICpmaWQpCnsKICAgICAgICBpZiAoICEgZmlkICkKICAgICAgICAgICAgICAgIHJldHVybiAw OwogICAgICAgIGlmIChmaWQtPlZub2RlID09IDB4ZmZmZmZmZmUgfHwgZmlkLT5Wbm9kZSA9PSAw eGZmZmZmZmZmKQogICAgICAgICAgICAgICAgcmV0dXJuICgoZmlkLT5Wb2x1bWUgPDwgMjApIHwg KGZpZC0+VW5pcXVlICYgMHhmZmZmZikpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJl dHVybiAoZmlkLT5VbmlxdWUgKyAoZmlkLT5Wbm9kZTw8MTApICsgKGZpZC0+Vm9sdW1lPDwyMCkp Owp9CiMgMjMzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKdHlwZWRlZiB1 X2ludDMyX3QgdnVpZF90Owp0eXBlZGVmIHVfaW50MzJfdCB2Z2lkX3Q7CgoKCgpzdHJ1Y3QgY29k YV9jcmVkIHsKICAgIHZ1aWRfdCBjcl91aWQsIGNyX2V1aWQsIGNyX3N1aWQsIGNyX2ZzdWlkOwog ICAgdmdpZF90IGNyX2dyb3VwaWQsIGNyX2VnaWQsIGNyX3NnaWQsIGNyX2ZzZ2lkOwp9OwoKCgoK CgoKZW51bSBjb2RhX3Z0eXBlIHsgQ19WTk9OLCBDX1ZSRUcsIENfVkRJUiwgQ19WQkxLLCBDX1ZD SFIsIENfVkxOSywgQ19WU09DSywgQ19WRklGTywgQ19WQkFEIH07CgpzdHJ1Y3QgY29kYV92YXR0 ciB7CiAgICAgICAgbG9uZyB2YV90eXBlOwogICAgICAgIHVfc2hvcnQgdmFfbW9kZTsKICAgICAg ICBzaG9ydCB2YV9ubGluazsKICAgICAgICB2dWlkX3QgdmFfdWlkOwogICAgICAgIHZnaWRfdCB2 YV9naWQ7CiAgICAgICAgbG9uZyB2YV9maWxlaWQ7CiAgICAgICAgdV9xdWFkX3QgdmFfc2l6ZTsK ICAgICAgICBsb25nIHZhX2Jsb2Nrc2l6ZTsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdmFfYXRp bWU7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHZhX210aW1lOwogICAgICAgIHN0cnVjdCB0aW1l c3BlYyB2YV9jdGltZTsKICAgICAgICB1X2xvbmcgdmFfZ2VuOwogICAgICAgIHVfbG9uZyB2YV9m bGFnczsKICAgICAgICB1X3F1YWRfdCB2YV9yZGV2OwogICAgICAgIHVfcXVhZF90IHZhX2J5dGVz OwogICAgICAgIHVfcXVhZF90IHZhX2ZpbGVyZXY7Cn07CgoKCgpzdHJ1Y3QgY29kYV9zdGF0ZnMg ewogICAgaW50MzJfdCBmX2Jsb2NrczsKICAgIGludDMyX3QgZl9iZnJlZTsKICAgIGludDMyX3Qg Zl9iYXZhaWw7CiAgICBpbnQzMl90IGZfZmlsZXM7CiAgICBpbnQzMl90IGZfZmZyZWU7Cn07CiMg MzM3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGEuaCIKc3RydWN0IGNvZGFfaW5f aGRyIHsKICAgIHVuc2lnbmVkIGxvbmcgb3Bjb2RlOwogICAgdW5zaWduZWQgbG9uZyB1bmlxdWU7 CiAgICB1X3Nob3J0IHBpZDsKICAgIHVfc2hvcnQgcGdpZDsKICAgIHVfc2hvcnQgc2lkOwogICAg c3RydWN0IGNvZGFfY3JlZCBjcmVkOwp9OwoKCnN0cnVjdCBjb2RhX291dF9oZHIgewogICAgdW5z aWduZWQgbG9uZyBvcGNvZGU7CiAgICB1bnNpZ25lZCBsb25nIHVuaXF1ZTsKICAgIHVuc2lnbmVk IGxvbmcgcmVzdWx0Owp9OwoKCnN0cnVjdCBjb2RhX3Jvb3Rfb3V0IHsKICAgIHN0cnVjdCBjb2Rh X291dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9yb290X2luIHsK ICAgIHN0cnVjdCBjb2RhX2luX2hkciBpbjsKfTsKCgpzdHJ1Y3QgY29kYV9vcGVuX2luIHsKICAg IHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBmbGFnczsK fTsKCnN0cnVjdCBjb2RhX29wZW5fb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAg ICB1X3F1YWRfdCBkZXY7CiAgICBpbm9fdCBpbm9kZTsKfTsKCgoKc3RydWN0IGNvZGFfc3RvcmVf aW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50 IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfc3RvcmVfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9o ZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX3JlbGVhc2VfaW4gewogICAgc3RydWN0IGNvZGFfaW5f aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFf cmVsZWFzZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNv ZGFfY2xvc2VfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlk OwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfY2xvc2Vfb3V0IHsKICAgIHN0cnVjdCBj b2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVjdCBjb2RhX2lvY3RsX2luIHsKICAgIHN0cnVjdCBj b2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBjbWQ7CiAgICBpbnQgbGVu OwogICAgaW50IHJ3ZmxhZzsKICAgIGNoYXIgKmRhdGE7Cn07CgpzdHJ1Y3QgY29kYV9pb2N0bF9v dXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIGludCBsZW47CiAgICBjYWRkcl90 IGRhdGE7Cn07CgoKCnN0cnVjdCBjb2RhX2dldGF0dHJfaW4gewogICAgc3RydWN0IGNvZGFfaW5f aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwp9OwoKc3RydWN0IGNvZGFfZ2V0YXR0cl9vdXQgewog ICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7Cn07 CgoKCnN0cnVjdCBjb2RhX3NldGF0dHJfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwog ICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKfTsKCnN0cnVjdCBj b2RhX3NldGF0dHJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCnN0cnVj dCBjb2RhX2FjY2Vzc19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlk IFZGaWQ7CiAgICBpbnQgZmxhZ3M7Cn07CgpzdHJ1Y3QgY29kYV9hY2Nlc3Nfb3V0IHsKICAgIHN0 cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCgoKCgoKc3RydWN0IGNvZGFfbG9va3VwX2luIHsK ICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBuYW1l OwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfbG9va3VwX291dCB7CiAgICBzdHJ1Y3Qg Y29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IHZ0eXBlOwp9OwoKCgpz dHJ1Y3QgY29kYV9jcmVhdGVfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmlj ZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKICAgIGludCBleGNsOwogICAg aW50IG1vZGU7CiAgICBpbnQgbmFtZTsKfTsKCnN0cnVjdCBjb2RhX2NyZWF0ZV9vdXQgewogICAg c3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIHN0cnVjdCBjb2Rh X3ZhdHRyIGF0dHI7Cn07CgoKCnN0cnVjdCBjb2RhX3JlbW92ZV9pbiB7CiAgICBzdHJ1Y3QgY29k YV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgbmFtZTsKfTsKCnN0cnVjdCBj b2RhX3JlbW92ZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvdXQ7Cn07CgoKc3RydWN0 IGNvZGFfbGlua19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNlRmlkIHNv dXJjZUZpZDsKICAgIFZpY2VGaWQgZGVzdEZpZDsKICAgIGludCB0bmFtZTsKfTsKCnN0cnVjdCBj b2RhX2xpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoKCgpzdHJ1Y3Qg Y29kYV9yZW5hbWVfaW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBz b3VyY2VGaWQ7CiAgICBpbnQgc3JjbmFtZTsKICAgIFZpY2VGaWQgZGVzdEZpZDsKICAgIGludCBk ZXN0bmFtZTsKfTsKCnN0cnVjdCBjb2RhX3JlbmFtZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0 X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfbWtkaXJfaW4gewogICAgc3RydWN0IGNvZGFfaW5f aGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKICAg IGludCBuYW1lOwp9OwoKc3RydWN0IGNvZGFfbWtkaXJfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291 dF9oZHIgb2g7CiAgICBWaWNlRmlkIFZGaWQ7CiAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOwp9 OwoKCgpzdHJ1Y3QgY29kYV9ybWRpcl9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAg ICBWaWNlRmlkIFZGaWQ7CiAgICBpbnQgbmFtZTsKfTsKCnN0cnVjdCBjb2RhX3JtZGlyX291dCB7 CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG91dDsKfTsKCgpzdHJ1Y3QgY29kYV9zeW1saW5rX2lu IHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAgIFZpY2VGaWQgVkZpZDsKICAgIGludCBz cmNuYW1lOwogICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKICAgIGludCB0bmFtZTsKfTsKCnN0 cnVjdCBjb2RhX3N5bWxpbmtfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb3V0Owp9OwoK CnN0cnVjdCBjb2RhX3JlYWRsaW5rX2luIHsKICAgIHN0cnVjdCBjb2RhX2luX2hkciBpaDsKICAg IFZpY2VGaWQgVkZpZDsKfTsKCnN0cnVjdCBjb2RhX3JlYWRsaW5rX291dCB7CiAgICBzdHJ1Y3Qg Y29kYV9vdXRfaGRyIG9oOwogICAgaW50IGNvdW50OwogICAgY2FkZHJfdCBkYXRhOwp9OwoKCgpz dHJ1Y3QgY29kYV9mc3luY19pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaWg7CiAgICBWaWNl RmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV9mc3luY19vdXQgewogICAgc3RydWN0IGNvZGFfb3V0 X2hkciBvdXQ7Cn07CgoKc3RydWN0IGNvZGFfdmdldF9pbiB7CiAgICBzdHJ1Y3QgY29kYV9pbl9o ZHIgaWg7CiAgICBWaWNlRmlkIFZGaWQ7Cn07CgpzdHJ1Y3QgY29kYV92Z2V0X291dCB7CiAgICBz dHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IHZ0eXBlOwp9 OwojIDYxNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jb2RhLmgiCnN0cnVjdCBjb2Rh X3B1cmdldXNlcl9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIHN0cnVjdCBj b2RhX2NyZWQgY3JlZDsKfTsKCgoKc3RydWN0IGNvZGFfemFwZmlsZV9vdXQgewogICAgc3RydWN0 IGNvZGFfb3V0X2hkciBvaDsKICAgIFZpY2VGaWQgQ29kYUZpZDsKfTsKCgoKc3RydWN0IGNvZGFf emFwZGlyX291dCB7CiAgICBzdHJ1Y3QgY29kYV9vdXRfaGRyIG9oOwogICAgVmljZUZpZCBDb2Rh RmlkOwp9OwoKCgpzdHJ1Y3QgY29kYV96YXB2bm9kZV9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0 X2hkciBvaDsKICAgIHN0cnVjdCBjb2RhX2NyZWQgY3JlZDsKICAgIFZpY2VGaWQgVkZpZDsKfTsK CgoKc3RydWN0IGNvZGFfcHVyZ2VmaWRfb3V0IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7 CiAgICBWaWNlRmlkIENvZGFGaWQ7Cn07CgoKCnN0cnVjdCBjb2RhX3JlcGxhY2Vfb3V0IHsKICAg IHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBWaWNlRmlkIE5ld0ZpZDsKICAgIFZpY2VGaWQg T2xkRmlkOwp9OwoKCnN0cnVjdCBjb2RhX29wZW5fYnlfZmRfaW4gewogICAgc3RydWN0IGNvZGFf aW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50IGZsYWdzOwp9OwoKc3RydWN0IGNv ZGFfb3Blbl9ieV9mZF9vdXQgewogICAgc3RydWN0IGNvZGFfb3V0X2hkciBvaDsKICAgIGludCBm ZDsKCgogICAgc3RydWN0IGZpbGUgKmZoOwoKfTsKCgpzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhf aW4gewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgVmljZUZpZCBWRmlkOwogICAgaW50 IGZsYWdzOwp9OwoKc3RydWN0IGNvZGFfb3Blbl9ieV9wYXRoX291dCB7CiAgICBzdHJ1Y3QgY29k YV9vdXRfaGRyIG9oOwogICAgICAgIGludCBwYXRoOwp9OwoKCnN0cnVjdCBjb2RhX3N0YXRmc19p biB7CiAgICBzdHJ1Y3QgY29kYV9pbl9oZHIgaW47Cn07CgpzdHJ1Y3QgY29kYV9zdGF0ZnNfb3V0 IHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnMgc3Rh dDsKfTsKIyA3MDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgp1bmlvbiBp bnB1dEFyZ3MgewogICAgc3RydWN0IGNvZGFfaW5faGRyIGloOwogICAgc3RydWN0IGNvZGFfb3Bl bl9pbiBjb2RhX29wZW47CiAgICBzdHJ1Y3QgY29kYV9zdG9yZV9pbiBjb2RhX3N0b3JlOwogICAg c3RydWN0IGNvZGFfcmVsZWFzZV9pbiBjb2RhX3JlbGVhc2U7CiAgICBzdHJ1Y3QgY29kYV9jbG9z ZV9pbiBjb2RhX2Nsb3NlOwogICAgc3RydWN0IGNvZGFfaW9jdGxfaW4gY29kYV9pb2N0bDsKICAg IHN0cnVjdCBjb2RhX2dldGF0dHJfaW4gY29kYV9nZXRhdHRyOwogICAgc3RydWN0IGNvZGFfc2V0 YXR0cl9pbiBjb2RhX3NldGF0dHI7CiAgICBzdHJ1Y3QgY29kYV9hY2Nlc3NfaW4gY29kYV9hY2Nl c3M7CiAgICBzdHJ1Y3QgY29kYV9sb29rdXBfaW4gY29kYV9sb29rdXA7CiAgICBzdHJ1Y3QgY29k YV9jcmVhdGVfaW4gY29kYV9jcmVhdGU7CiAgICBzdHJ1Y3QgY29kYV9yZW1vdmVfaW4gY29kYV9y ZW1vdmU7CiAgICBzdHJ1Y3QgY29kYV9saW5rX2luIGNvZGFfbGluazsKICAgIHN0cnVjdCBjb2Rh X3JlbmFtZV9pbiBjb2RhX3JlbmFtZTsKICAgIHN0cnVjdCBjb2RhX21rZGlyX2luIGNvZGFfbWtk aXI7CiAgICBzdHJ1Y3QgY29kYV9ybWRpcl9pbiBjb2RhX3JtZGlyOwogICAgc3RydWN0IGNvZGFf c3ltbGlua19pbiBjb2RhX3N5bWxpbms7CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19pbiBjb2Rh X3JlYWRsaW5rOwogICAgc3RydWN0IGNvZGFfZnN5bmNfaW4gY29kYV9mc3luYzsKICAgIHN0cnVj dCBjb2RhX3ZnZXRfaW4gY29kYV92Z2V0OwogICAgc3RydWN0IGNvZGFfb3Blbl9ieV9mZF9pbiBj b2RhX29wZW5fYnlfZmQ7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX2J5X3BhdGhfaW4gY29kYV9vcGVu X2J5X3BhdGg7CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnNfaW4gY29kYV9zdGF0ZnM7Cn07Cgp1bmlv biBvdXRwdXRBcmdzIHsKICAgIHN0cnVjdCBjb2RhX291dF9oZHIgb2g7CiAgICBzdHJ1Y3QgY29k YV9yb290X291dCBjb2RhX3Jvb3Q7CiAgICBzdHJ1Y3QgY29kYV9vcGVuX291dCBjb2RhX29wZW47 CiAgICBzdHJ1Y3QgY29kYV9pb2N0bF9vdXQgY29kYV9pb2N0bDsKICAgIHN0cnVjdCBjb2RhX2dl dGF0dHJfb3V0IGNvZGFfZ2V0YXR0cjsKICAgIHN0cnVjdCBjb2RhX2xvb2t1cF9vdXQgY29kYV9s b29rdXA7CiAgICBzdHJ1Y3QgY29kYV9jcmVhdGVfb3V0IGNvZGFfY3JlYXRlOwogICAgc3RydWN0 IGNvZGFfbWtkaXJfb3V0IGNvZGFfbWtkaXI7CiAgICBzdHJ1Y3QgY29kYV9yZWFkbGlua19vdXQg Y29kYV9yZWFkbGluazsKICAgIHN0cnVjdCBjb2RhX3ZnZXRfb3V0IGNvZGFfdmdldDsKICAgIHN0 cnVjdCBjb2RhX3B1cmdldXNlcl9vdXQgY29kYV9wdXJnZXVzZXI7CiAgICBzdHJ1Y3QgY29kYV96 YXBmaWxlX291dCBjb2RhX3phcGZpbGU7CiAgICBzdHJ1Y3QgY29kYV96YXBkaXJfb3V0IGNvZGFf emFwZGlyOwogICAgc3RydWN0IGNvZGFfemFwdm5vZGVfb3V0IGNvZGFfemFwdm5vZGU7CiAgICBz dHJ1Y3QgY29kYV9wdXJnZWZpZF9vdXQgY29kYV9wdXJnZWZpZDsKICAgIHN0cnVjdCBjb2RhX3Jl cGxhY2Vfb3V0IGNvZGFfcmVwbGFjZTsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfZmRfb3V0IGNv ZGFfb3Blbl9ieV9mZDsKICAgIHN0cnVjdCBjb2RhX29wZW5fYnlfcGF0aF9vdXQgY29kYV9vcGVu X2J5X3BhdGg7CiAgICBzdHJ1Y3QgY29kYV9zdGF0ZnNfb3V0IGNvZGFfc3RhdGZzOwp9OwoKdW5p b24gY29kYV9kb3duY2FsbHMgewoKCiAgICBzdHJ1Y3QgY29kYV9wdXJnZXVzZXJfb3V0IHB1cmdl dXNlcjsKICAgIHN0cnVjdCBjb2RhX3phcGZpbGVfb3V0IHphcGZpbGU7CiAgICBzdHJ1Y3QgY29k YV96YXBkaXJfb3V0IHphcGRpcjsKICAgIHN0cnVjdCBjb2RhX3phcHZub2RlX291dCB6YXB2bm9k ZTsKICAgIHN0cnVjdCBjb2RhX3B1cmdlZmlkX291dCBwdXJnZWZpZDsKICAgIHN0cnVjdCBjb2Rh X3JlcGxhY2Vfb3V0IHJlcGxhY2U7Cn07CgoKCgoKCgpzdHJ1Y3QgVmljZUlvY3RsIHsKICAgICAg ICBjYWRkcl90IGluLCBvdXQ7CiAgICAgICAgc2hvcnQgaW5fc2l6ZTsKICAgICAgICBzaG9ydCBv dXRfc2l6ZTsKfTsKCnN0cnVjdCBQaW9jdGxEYXRhIHsKICAgICAgICBjb25zdCBjaGFyICpwYXRo OwogICAgICAgIGludCBmb2xsb3c7CiAgICAgICAgc3RydWN0IFZpY2VJb2N0bCB2aTsKfTsKIyA3 OTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYS5oIgpzdHJ1Y3QgY29kYV9tb3Vu dF9kYXRhIHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICBpbnQgZmQ7Cn07CiMgMTUgIi91 c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvY29kYV9mc19pLmgiIDIKCgoKCnN0cnVjdCBjb2Rh X2lub2RlX2luZm8gewogICAgICAgIHN0cnVjdCBWaWNlRmlkIGNfZmlkOwogICAgICAgIHVfc2hv cnQgY19mbGFnczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNfY2lsaXN0OwogICAgICAgIGlu dCBjX21hcGNvdW50OwogICAgICAgIHN0cnVjdCBjb2RhX2NyZWQgY19jYWNoZWRfY3JlZDsKICAg ICAgICB1bnNpZ25lZCBpbnQgY19jYWNoZWRfcGVybTsKfTsKCgoKCgpzdHJ1Y3QgY29kYV9maWxl X2luZm8gewogICAgICAgIGludCBjZmlfbWFnaWM7CiAgICAgICAgaW50IGNmaV9tYXBjb3VudDsK ICAgICAgICBzdHJ1Y3QgZmlsZSAqY2ZpX2NvbnRhaW5lcjsKICAgICAgICBzdHJ1Y3QgY29kYV9j cmVkIGNmaV9jcmVkOwp9OwojIDQ3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NvZGFf ZnNfaS5oIgppbnQgY29kYV9jbm9kZV9tYWtlKHN0cnVjdCBpbm9kZSAqKiwgc3RydWN0IFZpY2VG aWQgKiwgc3RydWN0IHN1cGVyX2Jsb2NrICopOwpzdHJ1Y3QgaW5vZGUgKmNvZGFfaWdldChzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgVmljZUZpZCAqZmlkLCBzdHJ1Y3QgY29kYV92YXR0 ciAqYXR0cik7CmludCBjb2RhX2Nub2RlX21ha2VjdGwoc3RydWN0IGlub2RlICoqaW5vZGUsIHN0 cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpzdHJ1Y3QgaW5vZGUgKmNvZGFfZmlkX3RvX2lub2RlKFZp Y2VGaWQgKmZpZCwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnZvaWQgY29kYV9yZXBsYWNlX2Zp ZChzdHJ1Y3QgaW5vZGUgKiwgVmljZUZpZCAqLCBWaWNlRmlkICopOwojIDMwOCAiL3Vzci9zcmMv bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9yb21mc19mc19pLmgiIDEKCgoKCgpzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyB7CiAgICAg ICAgdW5zaWduZWQgbG9uZyBpX21ldGFzaXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kYXRh b2Zmc2V0Owp9OwojIDMwOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zaG1lbV9mcy5oIiAxCiMgMTYgIi91c3Iv c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2htZW1fZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogICAg ICAgIHVuc2lnbmVkIGxvbmcgdmFsOwp9IHN3cF9lbnRyeV90OwoKZXh0ZXJuIGF0b21pY190IHNo bWVtX25ycGFnZXM7CgpzdHJ1Y3Qgc2htZW1faW5vZGVfaW5mbyB7CiAgICAgICAgc3BpbmxvY2tf dCBsb2NrOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgc2VtOwogICAgICAgIHVuc2lnbmVkIGxv bmcgbmV4dF9pbmRleDsKICAgICAgICBzd3BfZW50cnlfdCBpX2RpcmVjdFsxNl07CiAgICAgICAg dm9pZCAqKmlfaW5kaXJlY3Q7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzd2FwcGVkOwogICAgICAg IGludCBsb2NrZWQ7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogICAgICAgIHN0cnVj dCBpbm9kZSAqaW5vZGU7Cn07CgpzdHJ1Y3Qgc2htZW1fc2JfaW5mbyB7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBtYXhfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9ibG9ja3M7CiAg ICAgICAgdW5zaWduZWQgbG9uZyBtYXhfaW5vZGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZnJl ZV9pbm9kZXM7CiAgICAgICAgc3BpbmxvY2tfdCBzdGF0X2xvY2s7Cn07CiMgMzEwICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L3NtYl9mc19pLmgiIDEKIyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z bWJfZnNfaS5oIgpzdHJ1Y3Qgc21iX2lub2RlX2luZm8gewoKCgoKCiAgICAgICAgdW5zaWduZWQg aW50IG9wZW47CiAgICAgICAgX191MTYgZmlsZWlkOwogICAgICAgIF9fdTE2IGF0dHI7CgogICAg ICAgIF9fdTE2IGFjY2VzczsKICAgICAgICBfX3UxNiBmbGFnczsKICAgICAgICB1bnNpZ25lZCBs b25nIG9sZG10aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgY2xvc2VkOwogICAgICAgIHVuc2ln bmVkIG9wZW5lcnM7Cn07CiMgMzExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgi IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2hmc19mc19pLmgiIDEKIyAxOSAi L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9oZnNfZnNfaS5oIgpzdHJ1Y3QgaGZzX2lub2Rl X2luZm8gewogICAgICAgIGludCBtYWdpYzsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtbXVfcHJp dmF0ZTsKICAgICAgICBzdHJ1Y3QgaGZzX2NhdF9lbnRyeSAqZW50cnk7CgoKICAgICAgICBzdHJ1 Y3QgaGZzX2ZvcmsgKmZvcms7CiAgICAgICAgaW50IGNvbnZlcnQ7CgoKICAgICAgICBpbm9fdCBm aWxlX3R5cGU7CiAgICAgICAgY2hhciBkaXJfc2l6ZTsKCgogICAgICAgIGNvbnN0IHN0cnVjdCBo ZnNfaGRyX2xheW91dCAqZGVmYXVsdF9sYXlvdXQ7CiAgICAgICAgc3RydWN0IGhmc19oZHJfbGF5 b3V0ICpsYXlvdXQ7CgoKICAgICAgICBpbnQgdHpfc2Vjb25kc3dlc3Q7CgoKICAgICAgICB2b2lk ICgqZF9kcm9wX29wKShzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGlub190KTsKfTsKIyAzMTIgIi91 c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2lu Y2x1ZGUvbGludXgvYWRmc19mc19pLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9hZGZzX2ZzX2kuaCIKc3RydWN0IGFkZnNfaW5vZGVfaW5mbyB7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBtbXVfcHJpdmF0ZTsKICAgICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9pZDsKICAg ICAgICBfX3UzMiBsb2FkYWRkcjsKICAgICAgICBfX3UzMiBleGVjYWRkcjsKICAgICAgICB1bnNp Z25lZCBpbnQgZmlsZXR5cGU7CiAgICAgICAgdW5zaWduZWQgaW50IGF0dHI7CiAgICAgICAgaW50 IHN0YW1wZWQ6MTsKfTsKIyAzMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIg MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcW54NF9mc19pLmgiIDEKIyAxNCAi L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xbng0X2ZzX2kuaCIKIyAxICIvdXNyL3NyYy9s aW51eC9pbmNsdWRlL2xpbnV4L3FueHR5cGVzLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5j bHVkZS9saW51eC9xbnh0eXBlcy5oIgp0eXBlZGVmIF9fdTE2IHFueDRfbnh0bnRfdDsKdHlwZWRl ZiBfX3U4IHFueDRfZnR5cGVfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBfX3UzMiB4dG50 X2JsazsKICAgICAgICBfX3UzMiB4dG50X3NpemU7Cn0gcW54NF94dG50X3Q7Cgp0eXBlZGVmIF9f dTE2IHFueDRfbW9kZV90Owp0eXBlZGVmIF9fdTE2IHFueDRfbXVpZF90Owp0eXBlZGVmIF9fdTE2 IHFueDRfbWdpZF90Owp0eXBlZGVmIF9fdTMyIHFueDRfb2ZmX3Q7CnR5cGVkZWYgX191MTYgcW54 NF9ubGlua190OwojIDE1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfaS5o IiAyCgoKCgpzdHJ1Y3QgcW54NF9pbm9kZV9pbmZvIHsKICAgICAgICBjaGFyIGlfcmVzZXJ2ZWRb MTZdOwogICAgICAgIHFueDRfb2ZmX3QgaV9zaXplOwogICAgICAgIHFueDRfeHRudF90IGlfZmly c3RfeHRudDsKICAgICAgICBfX3UzMiBpX3hibGs7CiAgICAgICAgX19zMzIgaV9mdGltZTsKICAg ICAgICBfX3MzMiBpX210aW1lOwogICAgICAgIF9fczMyIGlfYXRpbWU7CiAgICAgICAgX19zMzIg aV9jdGltZTsKICAgICAgICBxbng0X254dG50X3QgaV9udW1feHRudHM7CiAgICAgICAgcW54NF9t b2RlX3QgaV9tb2RlOwogICAgICAgIHFueDRfbXVpZF90IGlfdWlkOwogICAgICAgIHFueDRfbWdp ZF90IGlfZ2lkOwogICAgICAgIHFueDRfbmxpbmtfdCBpX25saW5rOwogICAgICAgIF9fdTggaV96 ZXJvWzRdOwogICAgICAgIHFueDRfZnR5cGVfdCBpX3R5cGU7CiAgICAgICAgX191OCBpX3N0YXR1 czsKICAgICAgICB1bnNpZ25lZCBsb25nIG1tdV9wcml2YXRlOwp9OwojIDMxNCAiL3Vzci9zcmMv bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9yZWlzZXJmc19mc19pLmgiIDEKCgoKCgoKdHlwZWRlZiBlbnVtIHsKCgoKICAgIGlfaXRl bV9rZXlfdmVyc2lvbl9tYXNrID0gMHgwMDAxLAoKCiAgICBpX3N0YXRfZGF0YV92ZXJzaW9uX21h c2sgPSAweDAwMDIsCgogICAgaV9wYWNrX29uX2Nsb3NlX21hc2sgPSAweDAwMDQsCgogICAgaV9u b3BhY2tfbWFzayA9IDB4MDAwOCwKCgoKICAgIGlfbGlua19zYXZlZF91bmxpbmtfbWFzayA9IDB4 MDAxMCwKICAgIGlfbGlua19zYXZlZF90cnVuY2F0ZV9tYXNrID0gMHgwMDIwCn0gcmVpc2VyZnNf aW5vZGVfZmxhZ3M7CgoKc3RydWN0IHJlaXNlcmZzX2lub2RlX2luZm8gewogICAgX191MzIgaV9r ZXkgWzRdOwoKCgogICAgX191MzIgaV9mbGFnczsKCiAgICBfX3UzMiBpX2ZpcnN0X2RpcmVjdF9i eXRlOwoKCiAgICBfX3UzMiBpX2F0dHJzOwoKICAgIGludCBpX3ByZWFsbG9jX2Jsb2NrOwogICAg aW50IGlfcHJlYWxsb2NfY291bnQ7CiAgICBzdHJ1Y3QgbGlzdF9oZWFkIGlfcHJlYWxsb2NfbGlz dDsKCgoKCgogICAgdW5zaWduZWQgbG9uZyBpX3RyYW5zX2lkIDsKICAgIHVuc2lnbmVkIGxvbmcg aV90cmFuc19pbmRleCA7Cn07CiMgMzE1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Zz LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Jmc19mc19pLmgiIDEKIyAx MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9iZnNfZnNfaS5oIgpzdHJ1Y3QgYmZzX2lu b2RlX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgaV9kc2tfaW5vOwogICAgICAgIHVuc2ln bmVkIGxvbmcgaV9zYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2VibG9jazsKfTsKIyAz MTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xp bnV4L2luY2x1ZGUvbGludXgvdWRmX2ZzX2kuaCIgMQojIDI0ICIvdXNyL3NyYy9saW51eC9pbmNs dWRlL2xpbnV4L3VkZl9mc19pLmgiCnR5cGVkZWYgc3RydWN0CnsKICAgICAgICBfX3UzMiBsb2dp Y2FsQmxvY2tOdW07CiAgICAgICAgX191MTYgcGFydGl0aW9uUmVmZXJlbmNlTnVtOwp9IF9fYXR0 cmlidXRlX18gKChwYWNrZWQpKSBsYl9hZGRyOwoKCnN0cnVjdCB1ZGZfaW5vZGVfaW5mbwp7CiAg ICAgICAgbG9uZyBpX3VtdGltZTsKICAgICAgICBsb25nIGlfdWN0aW1lOwogICAgICAgIGxvbmcg aV9jcnRpbWU7CiAgICAgICAgbG9uZyBpX3VjcnRpbWU7CgogICAgICAgIGxiX2FkZHIgaV9sb2Nh dGlvbjsKICAgICAgICBfX3U2NCBpX3VuaXF1ZTsKICAgICAgICBfX3UzMiBpX2xlbkVBdHRyOwog ICAgICAgIF9fdTMyIGlfbGVuQWxsb2M7CiAgICAgICAgX191NjQgaV9sZW5FeHRlbnRzOwogICAg ICAgIF9fdTMyIGlfbmV4dF9hbGxvY19ibG9jazsKICAgICAgICBfX3UzMiBpX25leHRfYWxsb2Nf Z29hbDsKICAgICAgICB1bnNpZ25lZCBpX2FsbG9jX3R5cGUgOiAzOwogICAgICAgIHVuc2lnbmVk IGlfZXh0ZW5kZWRfZmUgOiAxOwogICAgICAgIHVuc2lnbmVkIGlfc3RyYXRfNDA5NiA6IDE7CiAg ICAgICAgdW5zaWduZWQgaV9uZXdfaW5vZGUgOiAxOwogICAgICAgIHVuc2lnbmVkIHJlc2VydmVk IDogMjY7Cn07CiMgMzE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19pLmgiIDEKIyAxNyAiL3Vzci9z cmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfZnNfaS5oIgpzdHJ1Y3QgbmNwX2lub2RlX2luZm8g ewogICAgICAgIF9fdTMyIGRpckVudE51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAg ICBfX3UzMiBEb3NEaXJOdW0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIg dm9sTnVtYmVyIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIG53YXR0cjsK ICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIG9wZW5fc2VtOwogICAgICAgIGF0b21pY190IG9wZW5l ZDsKICAgICAgICBpbnQgYWNjZXNzOwogICAgICAgIF9fdTMyIHNlcnZlcl9maWxlX2hhbmRsZSBf X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IG9wZW5fY3JlYXRlX2FjdGlvbiBf X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZpbGVfaGFuZGxlWzZdIF9fYXR0 cmlidXRlX18oKHBhY2tlZCkpOwp9OwojIDMxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51 eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9wcm9jX2ZzX2kuaCIg MQpzdHJ1Y3QgcHJvY19pbm9kZV9pbmZvIHsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2s7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgaW50 ICgqcHJvY19nZXRfbGluaykoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiosIHN0cnVj dCB2ZnNtb3VudCAqKik7CiAgICAgICAgICAgICAgICBpbnQgKCpwcm9jX3JlYWQpKHN0cnVjdCB0 YXNrX3N0cnVjdCAqdGFzaywgY2hhciAqcGFnZSk7CiAgICAgICAgfSBvcDsKICAgICAgICBzdHJ1 Y3QgZmlsZSAqZmlsZTsKfTsKIyAzMTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMu aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdXNiZGV2X2ZzX2kuaCIgMQpz dHJ1Y3QgdXNiX2RldmljZTsKc3RydWN0IHVzYl9idXM7CgpzdHJ1Y3QgdXNiZGV2X2lub2RlX2lu Zm8gewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZGxpc3Q7CiAgICAgICAgc3RydWN0IGxpc3Rf aGVhZCBzbGlzdDsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdXNiX2Rl dmljZSAqZGV2OwogICAgICAgICAgICAgICAgc3RydWN0IHVzYl9idXMgKmJ1czsKICAgICAgICB9 IHA7Cn07CiMgMzIwICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIgMQojIDE2ICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIKc3RydWN0IGpmZnMyX2lub2RlX2lu Zm8gewojIDI2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2pmZnMyX2ZzX2kuaCIKICAg ICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKCgogICAgICAgIF9fdTMyIGhpZ2hlc3RfdmVyc2lv bjsKCgogICAgICAgIHN0cnVjdCBqZmZzMl9ub2RlX2ZyYWcgKmZyYWdsaXN0OwoKCgoKCgogICAg ICAgIHN0cnVjdCBqZmZzMl9mdWxsX2Rub2RlICptZXRhZGF0YTsKCgogICAgICAgIHN0cnVjdCBq ZmZzMl9mdWxsX2RpcmVudCAqZGVudHM7CgoKICAgICAgICBzdHJ1Y3QgamZmczJfaW5vZGVfY2Fj aGUgKmlub2NhY2hlOwoKCgoKCiAgICAgICAgX191MTYgZmxhZ3M7CiAgICAgICAgX191OCB1c2Vy Y29tcHI7Cn07CiMgMzIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NyYW1mc19mc19zYi5oIiAxCgoKCgoKCnN0 cnVjdCBjcmFtZnNfc2JfaW5mbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgbWFnaWM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsKICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBibG9ja3M7CiAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmlsZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgZmxhZ3M7Cn07CiMgMzIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4 L2ZzLmgiIDIKIyAzNDggIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0 IGlhdHRyIHsKICAgICAgICB1bnNpZ25lZCBpbnQgaWFfdmFsaWQ7CiAgICAgICAgdW1vZGVfdCBp YV9tb2RlOwogICAgICAgIHVpZF90IGlhX3VpZDsKICAgICAgICBnaWRfdCBpYV9naWQ7CiAgICAg ICAgbG9mZl90IGlhX3NpemU7CiAgICAgICAgdGltZV90IGlhX2F0aW1lOwogICAgICAgIHRpbWVf dCBpYV9tdGltZTsKICAgICAgICB0aW1lX3QgaWFfY3RpbWU7CiAgICAgICAgdW5zaWduZWQgaW50 IGlhX2F0dHJfZmxhZ3M7Cn07CiMgMzcyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2Zz LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xdW90YS5oIiAxCiMgNDIgIi91 c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcXVvdGEuaCIKIyAxICIvdXNyL3NyYy9saW51eC9p bmNsdWRlL2xpbnV4L2Vycm5vLmgiIDEKCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2Fz bS9lcnJuby5oIiAxCiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9lcnJuby5oIiAy CiMgNDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcXVvdGEuaCIgMgojIDEwOSAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgZHFibGsgewogICAgICAg IF9fdTMyIGRxYl9iaGFyZGxpbWl0OwogICAgICAgIF9fdTMyIGRxYl9ic29mdGxpbWl0OwogICAg ICAgIF9fdTMyIGRxYl9jdXJibG9ja3M7CiAgICAgICAgX191MzIgZHFiX2loYXJkbGltaXQ7CiAg ICAgICAgX191MzIgZHFiX2lzb2Z0bGltaXQ7CiAgICAgICAgX191MzIgZHFiX2N1cmlub2RlczsK ICAgICAgICB0aW1lX3QgZHFiX2J0aW1lOwogICAgICAgIHRpbWVfdCBkcWJfaXRpbWU7Cn07CiMg MTM0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBkcXN0YXRz IHsKICAgICAgICBfX3UzMiBsb29rdXBzOwogICAgICAgIF9fdTMyIGRyb3BzOwogICAgICAgIF9f dTMyIHJlYWRzOwogICAgICAgIF9fdTMyIHdyaXRlczsKICAgICAgICBfX3UzMiBjYWNoZV9oaXRz OwogICAgICAgIF9fdTMyIGFsbG9jYXRlZF9kcXVvdHM7CiAgICAgICAgX191MzIgZnJlZV9kcXVv dHM7CiAgICAgICAgX191MzIgc3luY3M7Cn07CgoKCmV4dGVybiBpbnQgbnJfZHF1b3RzLCBucl9m cmVlX2RxdW90czsKZXh0ZXJuIGludCBkcXVvdF9yb290X3NxdWFzaDsKIyAxNTkgIi91c3Ivc3Jj L2xpbnV4L2luY2x1ZGUvbGludXgvcXVvdGEuaCIKc3RydWN0IGRxdW90IHsKICAgICAgICBzdHJ1 Y3QgbGlzdF9oZWFkIGRxX2hhc2g7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkcV9pbnVzZTsK ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRxX2ZyZWU7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk X3QgZHFfd2FpdF9sb2NrOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IGRxX3dhaXRfZnJlZTsK ICAgICAgICBpbnQgZHFfY291bnQ7CgoKICAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmRxX3Ni OwogICAgICAgIHVuc2lnbmVkIGludCBkcV9pZDsKICAgICAgICBrZGV2X3QgZHFfZGV2OwogICAg ICAgIHNob3J0IGRxX3R5cGU7CiAgICAgICAgc2hvcnQgZHFfZmxhZ3M7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBkcV9yZWZlcmVuY2VkOwoKICAgICAgICBzdHJ1Y3QgZHFibGsgZHFfZHFiOwp9Owoj IDM3MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCgoKCgoKc3RydWN0IHBh Z2U7CnN0cnVjdCBhZGRyZXNzX3NwYWNlOwpzdHJ1Y3Qga2lvYnVmOwoKc3RydWN0IGFkZHJlc3Nf c3BhY2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50ICgqd3JpdGVwYWdlKShzdHJ1Y3QgcGFnZSAq KTsKICAgICAgICBpbnQgKCpyZWFkcGFnZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKik7 CiAgICAgICAgaW50ICgqc3luY19wYWdlKShzdHJ1Y3QgcGFnZSAqKTsKCgoKCiAgICAgICAgaW50 ICgqcHJlcGFyZV93cml0ZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQs IHVuc2lnbmVkKTsKICAgICAgICBpbnQgKCpjb21taXRfd3JpdGUpKHN0cnVjdCBmaWxlICosIHN0 cnVjdCBwYWdlICosIHVuc2lnbmVkLCB1bnNpZ25lZCk7CgogICAgICAgIGludCAoKmJtYXApKHN0 cnVjdCBhZGRyZXNzX3NwYWNlICosIGxvbmcpOwogICAgICAgIGludCAoKmZsdXNocGFnZSkgKHN0 cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcpOwogICAgICAgIGludCAoKnJlbGVhc2VwYWdlKSAo c3RydWN0IHBhZ2UgKiwgaW50KTsKCiAgICAgICAgaW50ICgqZGlyZWN0X0lPKShpbnQsIHN0cnVj dCBpbm9kZSAqLCBzdHJ1Y3Qga2lvYnVmICosIHVuc2lnbmVkIGxvbmcsIGludCk7Cn07CgpzdHJ1 Y3QgYWRkcmVzc19zcGFjZSB7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBjbGVhbl9wYWdlczsK ICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRpcnR5X3BhZ2VzOwogICAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgbG9ja2VkX3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgbnJwYWdlczsKICAgICAg ICBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zICphX29wczsKICAgICAgICBzdHJ1Y3Qg aW5vZGUgKmhvc3Q7CiAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXA7CiAgICAg ICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICppX21tYXBfc2hhcmVkOwogICAgICAgIHNwaW5sb2Nr X3QgaV9zaGFyZWRfbG9jazsKICAgICAgICBpbnQgZ2ZwX21hc2s7Cn07CgpzdHJ1Y3QgY2hhcl9k ZXZpY2UgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgaGFzaDsKICAgICAgICBhdG9taWNfdCBj b3VudDsKICAgICAgICBkZXZfdCBkZXY7CiAgICAgICAgYXRvbWljX3Qgb3BlbmVyczsKICAgICAg ICBzdHJ1Y3Qgc2VtYXBob3JlIHNlbTsKfTsKCnN0cnVjdCBibG9ja19kZXZpY2UgewogICAgICAg IHN0cnVjdCBsaXN0X2hlYWQgYmRfaGFzaDsKICAgICAgICBhdG9taWNfdCBiZF9jb3VudDsKICAg ICAgICBzdHJ1Y3QgaW5vZGUgKiBiZF9pbm9kZTsKICAgICAgICBkZXZfdCBiZF9kZXY7CiAgICAg ICAgaW50IGJkX29wZW5lcnM7CiAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVy YXRpb25zICpiZF9vcDsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGJkX3NlbTsKICAgICAgICBz dHJ1Y3QgbGlzdF9oZWFkIGJkX2lub2RlczsKfTsKCnN0cnVjdCBpbm9kZSB7CiAgICAgICAgc3Ry dWN0IGxpc3RfaGVhZCBpX2hhc2g7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2xpc3Q7CiAg ICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RlbnRyeTsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVh ZCBpX2RpcnR5X2J1ZmZlcnM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpX2RpcnR5X2RhdGFf YnVmZmVyczsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2lubzsKICAgICAgICBhdG9taWNfdCBp X2NvdW50OwogICAgICAgIGtkZXZfdCBpX2RldjsKICAgICAgICB1bW9kZV90IGlfbW9kZTsKICAg ICAgICBubGlua190IGlfbmxpbms7CiAgICAgICAgdWlkX3QgaV91aWQ7CiAgICAgICAgZ2lkX3Qg aV9naWQ7CiAgICAgICAga2Rldl90IGlfcmRldjsKICAgICAgICBsb2ZmX3QgaV9zaXplOwogICAg ICAgIHRpbWVfdCBpX2F0aW1lOwogICAgICAgIHRpbWVfdCBpX210aW1lOwogICAgICAgIHRpbWVf dCBpX2N0aW1lOwogICAgICAgIHVuc2lnbmVkIGludCBpX2Jsa2JpdHM7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBpX2Jsa3NpemU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Jsb2NrczsKICAgICAg ICB1bnNpZ25lZCBsb25nIGlfdmVyc2lvbjsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGlfc2Vt OwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgaV96b21iaWU7CiAgICAgICAgc3RydWN0IGlub2Rl X29wZXJhdGlvbnMgKmlfb3A7CiAgICAgICAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqaV9mb3A7 CiAgICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICppX3NiOwogICAgICAgIHdhaXRfcXVldWVfaGVh ZF90IGlfd2FpdDsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2NrICppX2Zsb2NrOwogICAgICAgIHN0 cnVjdCBhZGRyZXNzX3NwYWNlICppX21hcHBpbmc7CiAgICAgICAgc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgaV9kYXRhOwogICAgICAgIHN0cnVjdCBkcXVvdCAqaV9kcXVvdFsyXTsKCiAgICAgICAgc3Ry dWN0IGxpc3RfaGVhZCBpX2RldmljZXM7CiAgICAgICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAq aV9waXBlOwogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKmlfYmRldjsKICAgICAgICBzdHJ1 Y3QgY2hhcl9kZXZpY2UgKmlfY2RldjsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBpX2Rub3RpZnlf bWFzazsKICAgICAgICBzdHJ1Y3QgZG5vdGlmeV9zdHJ1Y3QgKmlfZG5vdGlmeTsKCiAgICAgICAg dW5zaWduZWQgbG9uZyBpX3N0YXRlOwoKICAgICAgICB1bnNpZ25lZCBpbnQgaV9mbGFnczsKICAg ICAgICB1bnNpZ25lZCBjaGFyIGlfc29jazsKCiAgICAgICAgYXRvbWljX3QgaV93cml0ZWNvdW50 OwogICAgICAgIHVuc2lnbmVkIGludCBpX2F0dHJfZmxhZ3M7CiAgICAgICAgX191MzIgaV9nZW5l cmF0aW9uOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBtaW5peF9pbm9k ZV9pbmZvIG1pbml4X2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZV9pbmZvIGV4 dDJfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBleHQzX2lub2RlX2luZm8gZXh0M19pOwogICAg ICAgICAgICAgICAgc3RydWN0IGhwZnNfaW5vZGVfaW5mbyBocGZzX2k7CiAgICAgICAgICAgICAg ICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvIG50ZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBt c2Rvc19pbm9kZV9pbmZvIG1zZG9zX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdW1zZG9zX2lu b2RlX2luZm8gdW1zZG9zX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXNvX2lub2RlX2luZm8g aXNvZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBuZnNfaW5vZGVfaW5mbyBuZnNfaTsKICAg ICAgICAgICAgICAgIHN0cnVjdCBzeXN2X2lub2RlX2luZm8gc3lzdl9pOwogICAgICAgICAgICAg ICAgc3RydWN0IGFmZnNfaW5vZGVfaW5mbyBhZmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg dWZzX2lub2RlX2luZm8gdWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgZWZzX2lub2RlX2lu Zm8gZWZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgcm9tZnNfaW5vZGVfaW5mbyByb21mc19p OwogICAgICAgICAgICAgICAgc3RydWN0IHNobWVtX2lub2RlX2luZm8gc2htZW1faTsKICAgICAg ICAgICAgICAgIHN0cnVjdCBjb2RhX2lub2RlX2luZm8gY29kYV9pOwogICAgICAgICAgICAgICAg c3RydWN0IHNtYl9pbm9kZV9pbmZvIHNtYmZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaGZz X2lub2RlX2luZm8gaGZzX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgYWRmc19pbm9kZV9pbmZv IGFkZnNfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2luZm8gcW54NF9pOwog ICAgICAgICAgICAgICAgc3RydWN0IHJlaXNlcmZzX2lub2RlX2luZm8gcmVpc2VyZnNfaTsKICAg ICAgICAgICAgICAgIHN0cnVjdCBiZnNfaW5vZGVfaW5mbyBiZnNfaTsKICAgICAgICAgICAgICAg IHN0cnVjdCB1ZGZfaW5vZGVfaW5mbyB1ZGZfaTsKICAgICAgICAgICAgICAgIHN0cnVjdCBuY3Bf aW5vZGVfaW5mbyBuY3Bmc19pOwogICAgICAgICAgICAgICAgc3RydWN0IHByb2NfaW5vZGVfaW5m byBwcm9jX2k7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2V0IHNvY2tldF9pOwogICAgICAg ICAgICAgICAgc3RydWN0IHVzYmRldl9pbm9kZV9pbmZvIHVzYmRldl9pOwogICAgICAgICAgICAg ICAgc3RydWN0IGpmZnMyX2lub2RlX2luZm8gamZmczJfaTsKICAgICAgICAgICAgICAgIHZvaWQg KmdlbmVyaWNfaXA7CiAgICAgICAgfSB1Owp9OwoKc3RydWN0IGZvd25fc3RydWN0IHsKICAgICAg ICBpbnQgcGlkOwogICAgICAgIHVpZF90IHVpZCwgZXVpZDsKICAgICAgICBpbnQgc2lnbnVtOwp9 OwoKc3RydWN0IGZpbGUgewogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZl9saXN0OwogICAgICAg IHN0cnVjdCBkZW50cnkgKmZfZGVudHJ5OwogICAgICAgIHN0cnVjdCB2ZnNtb3VudCAqZl92ZnNt bnQ7CiAgICAgICAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZl9vcDsKICAgICAgICBhdG9taWNf dCBmX2NvdW50OwogICAgICAgIHVuc2lnbmVkIGludCBmX2ZsYWdzOwogICAgICAgIG1vZGVfdCBm X21vZGU7CiAgICAgICAgbG9mZl90IGZfcG9zOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9yZWFk YSwgZl9yYW1heCwgZl9yYWVuZCwgZl9yYWxlbiwgZl9yYXdpbjsKICAgICAgICBzdHJ1Y3QgZm93 bl9zdHJ1Y3QgZl9vd25lcjsKICAgICAgICB1bnNpZ25lZCBpbnQgZl91aWQsIGZfZ2lkOwogICAg ICAgIGludCBmX2Vycm9yOwoKICAgICAgICB1bnNpZ25lZCBsb25nIGZfdmVyc2lvbjsKCgogICAg ICAgIHZvaWQgKnByaXZhdGVfZGF0YTsKCgogICAgICAgIHN0cnVjdCBraW9idWYgKmZfaW9idWY7 CiAgICAgICAgbG9uZyBmX2lvYnVmX2xvY2s7Cn07CmV4dGVybiBzcGlubG9ja190IGZpbGVzX2xv Y2s7CgoKCgoKCmV4dGVybiBpbnQgaW5pdF9wcml2YXRlX2ZpbGUoc3RydWN0IGZpbGUgKiwgc3Ry dWN0IGRlbnRyeSAqLCBpbnQpOwojIDU3OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9m cy5oIgp0eXBlZGVmIHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZsX293bmVyX3Q7CgpzdHJ1Y3QgZmls ZV9sb2NrIHsKICAgICAgICBzdHJ1Y3QgZmlsZV9sb2NrICpmbF9uZXh0OwogICAgICAgIHN0cnVj dCBsaXN0X2hlYWQgZmxfbGluazsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZsX2Jsb2NrOwog ICAgICAgIGZsX293bmVyX3QgZmxfb3duZXI7CiAgICAgICAgdW5zaWduZWQgaW50IGZsX3BpZDsK ICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBmbF93YWl0OwogICAgICAgIHN0cnVjdCBmaWxlICpm bF9maWxlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgZmxfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQg Y2hhciBmbF90eXBlOwogICAgICAgIGxvZmZfdCBmbF9zdGFydDsKICAgICAgICBsb2ZmX3QgZmxf ZW5kOwoKICAgICAgICB2b2lkICgqZmxfbm90aWZ5KShzdHJ1Y3QgZmlsZV9sb2NrICopOwogICAg ICAgIHZvaWQgKCpmbF9pbnNlcnQpKHN0cnVjdCBmaWxlX2xvY2sgKik7CiAgICAgICAgdm9pZCAo KmZsX3JlbW92ZSkoc3RydWN0IGZpbGVfbG9jayAqKTsKCiAgICAgICAgc3RydWN0IGZhc3luY19z dHJ1Y3QgKiBmbF9mYXN5bmM7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVj dCBuZnNfbG9ja19pbmZvIG5mc19mbDsKICAgICAgICB9IGZsX3U7Cn07CiMgNjExICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVf bG9ja19saXN0OwoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZjbnRsLmgiIDEK CgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9mY250bC5oIiAxCiMgNjkgIi91c3Iv c3JjL2xpbnV4L2luY2x1ZGUvYXNtL2ZjbnRsLmgiCnN0cnVjdCBmbG9jayB7CiAgICAgICAgc2hv cnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAgICAgIG9mZl90IGxfc3RhcnQ7 CiAgICAgICAgb2ZmX3QgbF9sZW47CiAgICAgICAgcGlkX3QgbF9waWQ7Cn07CgpzdHJ1Y3QgZmxv Y2s2NCB7CiAgICAgICAgc2hvcnQgbF90eXBlOwogICAgICAgIHNob3J0IGxfd2hlbmNlOwogICAg ICAgIGxvZmZfdCBsX3N0YXJ0OwogICAgICAgIGxvZmZfdCBsX2xlbjsKICAgICAgICBwaWRfdCBs X3BpZDsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZjbnRsLmgiIDIKIyA2 MTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKZXh0ZXJuIGludCBmY250 bF9nZXRsayh1bnNpZ25lZCBpbnQsIHN0cnVjdCBmbG9jayAqKTsKZXh0ZXJuIGludCBmY250bF9z ZXRsayh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2NrICopOwoKZXh0ZXJu IGludCBmY250bF9nZXRsazY0KHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2NrNjQgKik7CmV4dGVy biBpbnQgZmNudGxfc2V0bGs2NCh1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgc3RydWN0IGZs b2NrNjQgKik7CgoKZXh0ZXJuIHZvaWQgbG9ja3NfaW5pdF9sb2NrKHN0cnVjdCBmaWxlX2xvY2sg Kik7CmV4dGVybiB2b2lkIGxvY2tzX2NvcHlfbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVj dCBmaWxlX2xvY2sgKik7CmV4dGVybiB2b2lkIGxvY2tzX3JlbW92ZV9wb3NpeChzdHJ1Y3QgZmls ZSAqLCBmbF9vd25lcl90KTsKZXh0ZXJuIHZvaWQgbG9ja3NfcmVtb3ZlX2Zsb2NrKHN0cnVjdCBm aWxlICopOwpleHRlcm4gc3RydWN0IGZpbGVfbG9jayAqcG9zaXhfdGVzdF9sb2NrKHN0cnVjdCBm aWxlICosIHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiBpbnQgcG9zaXhfbG9ja19maWxlKHN0 cnVjdCBmaWxlICosIHN0cnVjdCBmaWxlX2xvY2sgKiwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZv aWQgcG9zaXhfYmxvY2tfbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xvY2sg Kik7CmV4dGVybiB2b2lkIHBvc2l4X3VuYmxvY2tfbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICopOwpl eHRlcm4gaW50IHBvc2l4X2xvY2tzX2RlYWRsb2NrKHN0cnVjdCBmaWxlX2xvY2sgKiwgc3RydWN0 IGZpbGVfbG9jayAqKTsKZXh0ZXJuIGludCBfX2dldF9sZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2Rl LCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwpleHRlcm4gdGltZV90IGxlYXNlX2dldF9tdGltZShzdHJ1 Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgbG9ja19tYXlfcmVhZChzdHJ1Y3QgaW5vZGUgKiwgbG9m Zl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKZXh0ZXJuIGludCBsb2NrX21heV93cml0 ZShzdHJ1Y3QgaW5vZGUgKiwgbG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGNvdW50KTsKCnN0 cnVjdCBmYXN5bmNfc3RydWN0IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgaW50IGZhX2Zk OwogICAgICAgIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpmYV9uZXh0OwogICAgICAgIHN0cnVjdCBm aWxlICpmYV9maWxlOwp9OwoKCgoKZXh0ZXJuIGludCBmYXN5bmNfaGVscGVyKGludCwgc3RydWN0 IGZpbGUgKiwgaW50LCBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKik7CgpleHRlcm4gdm9pZCBraWxs X2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqKiwgaW50LCBpbnQpOwoKZXh0ZXJuIHZvaWQg X19raWxsX2Zhc3luYyhzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqLCBpbnQsIGludCk7CgpzdHJ1Y3Qg bmFtZWlkYXRhIHsKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7CiAgICAgICAgc3RydWN0 IHZmc21vdW50ICptbnQ7CiAgICAgICAgc3RydWN0IHFzdHIgbGFzdDsKICAgICAgICB1bnNpZ25l ZCBpbnQgZmxhZ3M7CiAgICAgICAgaW50IGxhc3RfdHlwZTsKfTsKCgoKCnN0cnVjdCBxdW90YV9t b3VudF9vcHRpb25zCnsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CiAgICAgICAgc3RydWN0 IHNlbWFwaG9yZSBkcWlvX3NlbTsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGRxb2ZmX3NlbTsK ICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZXNbMl07CiAgICAgICAgdGltZV90IGlub2RlX2V4cGly ZVsyXTsKICAgICAgICB0aW1lX3QgYmxvY2tfZXhwaXJlWzJdOwogICAgICAgIGNoYXIgcnNxdWFz aFsyXTsKfTsKIyA2ODEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKIyAxICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzX3NiLmgiIDEKCgoKCgoKc3RydWN0 IG1pbml4X3NiX2luZm8gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNf bmlub2RlczsKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX256b25lczsK ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ltYXBfYmxvY2tzOwogICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfem1hcF9ibG9ja3M7CiAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc19maXJzdGRhdGF6b25lOwogICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNfbG9nX3pvbmVfc2l6ZTsKICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9zaXplOwogICAgICAgICAgICAgICAgICAg ICAgICBpbnQgc19kaXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19uYW1lbGVu OwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgc19saW5rX21heDsKICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfaW1hcDsKICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICoqIHNfem1hcDsKICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBtaW5peF9zdXBlcl9ibG9jayAqIHNfbXM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIHNob3J0IHNfdmVyc2lvbjsKfTsKIyA2ODIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu dXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXh0Ml9mc19zYi5o IiAxCiMgMzAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZXh0Ml9mc19zYi5oIgpzdHJ1 Y3QgZXh0Ml9zYl9pbmZvIHsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ19zaXplOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBzX2lub2Rlc19wZXJfYmxvY2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2ZyYWdzX3Blcl9n cm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfYmxvY2tzX3Blcl9ncm91cDsKICAgICAgICB1 bnNpZ25lZCBsb25nIHNfaW5vZGVzX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf aXRiX3Blcl9ncm91cDsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZ2RiX2NvdW50OwogICAgICAg IHVuc2lnbmVkIGxvbmcgc19kZXNjX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf Z3JvdXBzX2NvdW50OwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfc2JoOwogICAgICAg IHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICogc19lczsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hl YWQgKiogc19ncm91cF9kZXNjOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbG9hZGVkX2lub2Rl X2JpdG1hcHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRfYmxvY2tfYml0bWFwczsK ICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5vZGVfYml0bWFwX251bWJlcls4XTsKICAgICAgICBz dHJ1Y3QgYnVmZmVyX2hlYWQgKiBzX2lub2RlX2JpdG1hcFs4XTsKICAgICAgICB1bnNpZ25lZCBs b25nIHNfYmxvY2tfYml0bWFwX251bWJlcls4XTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQg KiBzX2Jsb2NrX2JpdG1hcFs4XTsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfbW91bnRfb3B0Owog ICAgICAgIHVpZF90IHNfcmVzdWlkOwogICAgICAgIGdpZF90IHNfcmVzZ2lkOwogICAgICAgIHVu c2lnbmVkIHNob3J0IHNfbW91bnRfc3RhdGU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19wYWQ7 CiAgICAgICAgaW50IHNfYWRkcl9wZXJfYmxvY2tfYml0czsKICAgICAgICBpbnQgc19kZXNjX3Bl cl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2lub2RlX3NpemU7CiAgICAgICAgaW50IHNfZmly c3RfaW5vOwp9OwojIDY4MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9leHQzX2ZzX3NiLmgiIDEKIyAyMCAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9leHQzX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGlu dXgvaW5jbHVkZS9saW51eC90aW1lci5oIiAxCiMgMTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv bGludXgvdGltZXIuaCIKc3RydWN0IHRpbWVyX2xpc3QgewogICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgbGlzdDsKICAgICAgICB1bnNpZ25lZCBsb25nIGV4cGlyZXM7CiAgICAgICAgdW5zaWduZWQg bG9uZyBkYXRhOwogICAgICAgIHZvaWQgKCpmdW5jdGlvbikodW5zaWduZWQgbG9uZyk7Cn07Cgpl eHRlcm4gdm9pZCBhZGRfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CmV4dGVybiBp bnQgZGVsX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpOwoKCmV4dGVybiBpbnQgZGVs X3RpbWVyX3N5bmMoc3RydWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CmV4dGVybiB2b2lkIHN5bmNf dGltZXJzKHZvaWQpOwojIDQxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RpbWVyLmgi CmludCBtb2RfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25lZCBsb25nIGV4 cGlyZXMpOwoKZXh0ZXJuIHZvaWQgaXRfcmVhbF9mbih1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBp bmxpbmUgdm9pZCBpbml0X3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICogdGltZXIpCnsKICAgICAg ICB0aW1lci0+bGlzdC5uZXh0ID0gdGltZXItPmxpc3QucHJldiA9ICgodm9pZCAqKTApOwp9Cgpz dGF0aWMgaW5saW5lIGludCB0aW1lcl9wZW5kaW5nIChjb25zdCBzdHJ1Y3QgdGltZXJfbGlzdCAq IHRpbWVyKQp7CiAgICAgICAgcmV0dXJuIHRpbWVyLT5saXN0Lm5leHQgIT0gKCh2b2lkICopMCk7 Cn0KIyAyMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9leHQzX2ZzX3NiLmgiIDIKIyAz NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9leHQzX2ZzX3NiLmgiCnN0cnVjdCBleHQz X3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mcmFnX3NpemU7CiAgICAgICAgdW5z aWduZWQgbG9uZyBzX2ZyYWdzX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfaW5v ZGVzX3Blcl9ibG9jazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNfZnJhZ3NfcGVyX2dyb3VwOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgc19ibG9ja3NfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVk IGxvbmcgc19pbm9kZXNfcGVyX2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19pdGJfcGVy X2dyb3VwOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19nZGJfY291bnQ7CiAgICAgICAgdW5zaWdu ZWQgbG9uZyBzX2Rlc2NfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19ncm91cHNf Y291bnQ7CiAgICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogc19zYmg7CiAgICAgICAgc3RydWN0 IGV4dDNfc3VwZXJfYmxvY2sgKiBzX2VzOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBz X2dyb3VwX2Rlc2M7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19sb2FkZWRfaW5vZGVfYml0bWFw czsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2xvYWRlZF9ibG9ja19iaXRtYXBzOwogICAgICAg IHVuc2lnbmVkIGxvbmcgc19pbm9kZV9iaXRtYXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBi dWZmZXJfaGVhZCAqIHNfaW5vZGVfYml0bWFwWzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19i bG9ja19iaXRtYXBfbnVtYmVyWzhdOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNfYmxv Y2tfYml0bWFwWzhdOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CiAgICAgICAg dWlkX3Qgc19yZXN1aWQ7CiAgICAgICAgZ2lkX3Qgc19yZXNnaWQ7CiAgICAgICAgdW5zaWduZWQg c2hvcnQgc19tb3VudF9zdGF0ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX3BhZDsKICAgICAg ICBpbnQgc19hZGRyX3Blcl9ibG9ja19iaXRzOwogICAgICAgIGludCBzX2Rlc2NfcGVyX2Jsb2Nr X2JpdHM7CiAgICAgICAgaW50IHNfaW5vZGVfc2l6ZTsKICAgICAgICBpbnQgc19maXJzdF9pbm87 CiAgICAgICAgdTMyIHNfbmV4dF9nZW5lcmF0aW9uOwoKCiAgICAgICAgc3RydWN0IGlub2RlICog c19qb3VybmFsX2lub2RlOwogICAgICAgIHN0cnVjdCBqb3VybmFsX3MgKiBzX2pvdXJuYWw7CiAg ICAgICAgc3RydWN0IGxpc3RfaGVhZCBzX29ycGhhbjsKICAgICAgICB1bnNpZ25lZCBsb25nIHNf Y29tbWl0X2ludGVydmFsOwogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKmpvdXJuYWxfYmRl djsKCgoKCn07CiMgNjg0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAx ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2hwZnNfZnNfc2IuaCIgMQoKCgpzdHJ1Y3Qg aHBmc19zYl9pbmZvIHsKICAgICAgICBpbm9fdCBzYl9yb290OwogICAgICAgIHVuc2lnbmVkIHNi X2ZzX3NpemU7CiAgICAgICAgdW5zaWduZWQgc2JfYml0bWFwczsKICAgICAgICB1bnNpZ25lZCBz Yl9kaXJiYW5kX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIHNiX2RpcmJhbmRfc2l6ZTsKICAgICAg ICB1bnNpZ25lZCBzYl9kbWFwOwogICAgICAgIHVuc2lnbmVkIHNiX25fZnJlZTsKICAgICAgICB1 bnNpZ25lZCBzYl9uX2ZyZWVfZG5vZGVzOwogICAgICAgIHVpZF90IHNiX3VpZDsKICAgICAgICBn aWRfdCBzYl9naWQ7CiAgICAgICAgdW1vZGVfdCBzYl9tb2RlOwogICAgICAgIHVuc2lnbmVkIHNi X2NvbnYgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX2VhcyA6IDI7CiAgICAgICAgdW5zaWduZWQg c2JfZXJyIDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9jaGsgOiAyOwogICAgICAgIHVuc2lnbmVk IHNiX2xvd2VyY2FzZSA6IDE7CiAgICAgICAgdW5zaWduZWQgc2Jfd2FzX2Vycm9yIDogMTsKICAg ICAgICB1bnNpZ25lZCBzYl9jaGtkc2sgOiAyOwogICAgICAgIHVuc2lnbmVkIHNiX3JkX2Zub2Rl IDogMjsKICAgICAgICB1bnNpZ25lZCBzYl9yZF9pbm9kZSA6IDI7CgoKICAgICAgICB3YWl0X3F1 ZXVlX2hlYWRfdCBzYl9pZ2V0X3E7CiAgICAgICAgdW5zaWduZWQgY2hhciAqc2JfY3BfdGFibGU7 CgoKICAgICAgICB1bnNpZ25lZCAqc2JfYm1wX2RpcjsKICAgICAgICB1bnNpZ25lZCBzYl9jX2Jp dG1hcDsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBzYl9jcmVhdGlvbl9kZTsKCiAgICAgICAg dW5zaWduZWQgc2JfY3JlYXRpb25fZGVfbG9jayA6IDE7CgogICAgICAgIGludCBzYl90aW1lc2hp ZnQ7Cn07CiMgNjg1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L250ZnNfZnNfc2IuaCIgMQoKCgoKCnN0cnVjdCBu dGZzX3NiX2luZm97CgogICAgICAgIG50ZnNfdWlkX3QgdWlkOwogICAgICAgIG50ZnNfZ2lkX3Qg Z2lkOwogICAgICAgIG50bW9kZV90IHVtYXNrOwogICAgICAgIHZvaWQgKm5sc19tYXA7CiAgICAg ICAgdW5zaWduZWQgaW50IG5ndDsKICAgICAgICBjaGFyIG1mdF96b25lX211bHRpcGxpZXI7CiAg ICAgICAgdW5zaWduZWQgbG9uZyBtZnRfZGF0YV9wb3M7CiAgICAgICAgbnRmc19jbHVzdGVyX3Qg bWZ0X3pvbmVfcG9zOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25lX3N0YXJ0OwogICAg ICAgIG50ZnNfY2x1c3Rlcl90IG1mdF96b25lX2VuZDsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBk YXRhMV96b25lX3BvczsKICAgICAgICBudGZzX2NsdXN0ZXJfdCBkYXRhMl96b25lX3BvczsKCgog ICAgICAgIG50ZnNfc2l6ZV90IHBhcnRpdGlvbl9iaWFzOwoKICAgICAgICBudGZzX3UzMiBhdF9z dGFuZGFyZF9pbmZvcm1hdGlvbjsKICAgICAgICBudGZzX3UzMiBhdF9hdHRyaWJ1dGVfbGlzdDsK ICAgICAgICBudGZzX3UzMiBhdF9maWxlX25hbWU7CiAgICAgICAgbnRmc191MzIgYXRfdm9sdW1l X3ZlcnNpb247CiAgICAgICAgbnRmc191MzIgYXRfc2VjdXJpdHlfZGVzY3JpcHRvcjsKICAgICAg ICBudGZzX3UzMiBhdF92b2x1bWVfbmFtZTsKICAgICAgICBudGZzX3UzMiBhdF92b2x1bWVfaW5m b3JtYXRpb247CiAgICAgICAgbnRmc191MzIgYXRfZGF0YTsKICAgICAgICBudGZzX3UzMiBhdF9p bmRleF9yb290OwogICAgICAgIG50ZnNfdTMyIGF0X2luZGV4X2FsbG9jYXRpb247CiAgICAgICAg bnRmc191MzIgYXRfYml0bWFwOwogICAgICAgIG50ZnNfdTMyIGF0X3N5bWxpbms7CgogICAgICAg IGludCBzZWN0b3Jfc2l6ZTsKICAgICAgICBpbnQgY2x1c3Rlcl9zaXplOwogICAgICAgIGludCBj bHVzdGVyX3NpemVfYml0czsKICAgICAgICBpbnQgbWZ0X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAg ICAgICAgaW50IG1mdF9yZWNvcmRfc2l6ZTsKICAgICAgICBpbnQgbWZ0X3JlY29yZF9zaXplX2Jp dHM7CiAgICAgICAgaW50IGluZGV4X2NsdXN0ZXJzX3Blcl9yZWNvcmQ7CiAgICAgICAgaW50IGlu ZGV4X3JlY29yZF9zaXplOwogICAgICAgIGludCBpbmRleF9yZWNvcmRfc2l6ZV9iaXRzOwogICAg ICAgIG50ZnNfY2x1c3Rlcl90IG5yX2NsdXN0ZXJzOwogICAgICAgIG50ZnNfY2x1c3Rlcl90IG1m dF9sY247CiAgICAgICAgbnRmc19jbHVzdGVyX3QgbWZ0X21pcnJfbGNuOwoKICAgICAgICB1bnNp Z25lZCBjaGFyICptZnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgKnVwY2FzZTsKICAgICAgICB1 bnNpZ25lZCBpbnQgdXBjYXNlX2xlbmd0aDsKCiAgICAgICAgc3RydWN0IG50ZnNfaW5vZGVfaW5m byAqbWZ0X2lubzsKICAgICAgICBzdHJ1Y3QgbnRmc19pbm9kZV9pbmZvICptZnRtaXJyOwogICAg ICAgIHN0cnVjdCBudGZzX2lub2RlX2luZm8gKmJpdG1hcDsKICAgICAgICBzdHJ1Y3Qgc3VwZXJf YmxvY2sgKnNiOwogICAgICAgIHVuc2lnbmVkIGNoYXIgaW5vX2ZsYWdzOwp9OwojIDY4NiAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j bHVkZS9saW51eC9tc2Rvc19mc19zYi5oIiAxCgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L2ZhdF9jdmYuaCIgMQoKCgoKCnN0cnVjdCBjdmZfZm9ybWF0CnsgaW50IGN2Zl92ZXJz aW9uOwogIGNoYXIqIGN2Zl92ZXJzaW9uX3RleHQ7CiAgdW5zaWduZWQgbG9uZyBmbGFnczsKICBp bnQgKCpkZXRlY3RfY3ZmKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiKTsKICBpbnQgKCptb3VudF9j dmYpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sqc2IsY2hhcipvcHRpb25zKTsKICBpbnQgKCp1bm1vdW50 X2N2ZikgKHN0cnVjdCBzdXBlcl9ibG9jaypzYik7CiAgc3RydWN0IGJ1ZmZlcl9oZWFkKiAoKmN2 Zl9icmVhZCkgKHN0cnVjdCBzdXBlcl9ibG9jaypzYixpbnQgYmxvY2spOwogIHN0cnVjdCBidWZm ZXJfaGVhZCogKCpjdmZfZ2V0YmxrKSAoc3RydWN0IHN1cGVyX2Jsb2NrKnNiLGludCBibG9jayk7 CiAgdm9pZCAoKmN2Zl9icmVsc2UpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVjdCBidWZm ZXJfaGVhZCAqYmgpOwogIHZvaWQgKCpjdmZfbWFya19idWZmZXJfZGlydHkpIChzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKnNiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVy X2hlYWQgKmJoKTsKICB2b2lkICgqY3ZmX3NldF91cHRvZGF0ZSkgKHN0cnVjdCBzdXBlcl9ibG9j ayAqc2IsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLAog ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbCk7CiAgaW50ICgqY3ZmX2lzX3VwdG9kYXRl KSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsKICB2b2lk ICgqY3ZmX2xsX3J3X2Jsb2NrKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKICAgICAgICAgICAg ICAgICAgICAgICAgaW50IG9wciwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5icmVxLAog ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoWzMyXSk7CiAgaW50 ICgqZmF0X2FjY2VzcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsaW50IG5yLGludCBuZXdfdmFs dWUpOwogIGludCAoKmN2Zl9zdGF0ZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLHN0cnVjdCBz dGF0ZnMgKmJ1ZiwgaW50IGJ1ZnNpeik7CiAgaW50ICgqY3ZmX2JtYXApIChzdHJ1Y3QgaW5vZGUg Kmlub2RlLGludCBibG9jayk7CiAgc3NpemVfdCAoKmN2Zl9maWxlX3JlYWQpICggc3RydWN0IGZp bGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICBzc2l6ZV90ICgqY3ZmX2ZpbGVfd3Jp dGUpICggc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKICBp bnQgKCpjdmZfbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsK ICBpbnQgKCpjdmZfcmVhZHBhZ2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHBhZ2UgKik7CiAg aW50ICgqY3ZmX3dyaXRlcGFnZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcGFnZSAqKTsKICBp bnQgKCpjdmZfZGlyX2lvY3RsKSAoc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBmaWxlICog ZmlscCwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQg bG9uZyBhcmcpOwogIHZvaWQgKCp6ZXJvX291dF9jbHVzdGVyKSAoc3RydWN0IGlub2RlKiwgaW50 IGNsdXN0ZXJucik7Cn07CgppbnQgcmVnaXN0ZXJfY3ZmX2Zvcm1hdChzdHJ1Y3QgY3ZmX2Zvcm1h dCpjdmZfZm9ybWF0KTsKaW50IHVucmVnaXN0ZXJfY3ZmX2Zvcm1hdChzdHJ1Y3QgY3ZmX2Zvcm1h dCpjdmZfZm9ybWF0KTsKdm9pZCBkZWNfY3ZmX2Zvcm1hdF91c2VfY291bnRfYnlfdmVyc2lvbihp bnQgdmVyc2lvbik7CmludCBkZXRlY3RfY3ZmKHN0cnVjdCBzdXBlcl9ibG9jaypzYixjaGFyKmZv cmNlKTsKCmV4dGVybiBzdHJ1Y3QgY3ZmX2Zvcm1hdCAqY3ZmX2Zvcm1hdHNbXTsKZXh0ZXJuIGlu dCBjdmZfZm9ybWF0X3VzZV9jb3VudFtdOwojIDQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu dXgvbXNkb3NfZnNfc2IuaCIgMgoKCgoKCnN0cnVjdCBmYXRfbW91bnRfb3B0aW9ucyB7CiAgICAg ICAgdWlkX3QgZnNfdWlkOwogICAgICAgIGdpZF90IGZzX2dpZDsKICAgICAgICB1bnNpZ25lZCBz aG9ydCBmc191bWFzazsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb2RlcGFnZTsKICAgICAgICBj aGFyICppb2NoYXJzZXQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2hvcnRuYW1lOwogICAgICAg IHVuc2lnbmVkIGNoYXIgbmFtZV9jaGVjazsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbnZlcnNp b247CiAgICAgICAgdW5zaWduZWQgcXVpZXQ6MSwKICAgICAgICAgICAgICAgICBzaG93ZXhlYzox LAogICAgICAgICAgICAgICAgIHN5c19pbW11dGFibGU6MSwKICAgICAgICAgICAgICAgICBkb3Rz T0s6MSwKICAgICAgICAgICAgICAgICBpc3ZmYXQ6MSwKICAgICAgICAgICAgICAgICB1dGY4OjEs CiAgICAgICAgICAgICAgICAgdW5pY29kZV94bGF0ZToxLAogICAgICAgICAgICAgICAgIHBvc2l4 ZnM6MSwKICAgICAgICAgICAgICAgICBudW10YWlsOjEsCiAgICAgICAgICAgICAgICAgYXRhcmk6 MSwKICAgICAgICAgICAgICAgICBmYXQzMjoxLAogICAgICAgICAgICAgICAgIG5vY2FzZToxOwp9 OwoKc3RydWN0IG1zZG9zX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIHNob3J0IGNsdXN0ZXJf c2l6ZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjbHVzdGVyX2JpdHM7CiAgICAgICAgdW5zaWdu ZWQgY2hhciBmYXRzLGZhdF9iaXRzOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGZhdF9zdGFydDsK ICAgICAgICB1bnNpZ25lZCBsb25nIGZhdF9sZW5ndGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBk aXJfc3RhcnQ7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZGlyX2VudHJpZXM7CiAgICAgICAgdW5z aWduZWQgbG9uZyBkYXRhX3N0YXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgY2x1c3RlcnM7CiAg ICAgICAgdW5zaWduZWQgbG9uZyByb290X2NsdXN0ZXI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBm c2luZm9fc2VjdG9yOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgZmF0X2xvY2s7CiAgICAgICAg aW50IHByZXZfZnJlZTsKICAgICAgICBpbnQgZnJlZV9jbHVzdGVyczsKICAgICAgICBzdHJ1Y3Qg ZmF0X21vdW50X29wdGlvbnMgb3B0aW9uczsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNf ZGlzazsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfaW87CiAgICAgICAgc3RydWN0IGN2 Zl9mb3JtYXQqIGN2Zl9mb3JtYXQ7CiAgICAgICAgdm9pZCAqZGlyX29wczsKICAgICAgICB2b2lk ICpwcml2YXRlX2RhdGE7CiAgICAgICAgaW50IGRpcl9wZXJfYmxvY2s7CiAgICAgICAgaW50IGRp cl9wZXJfYmxvY2tfYml0czsKfTsKIyA2ODcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv ZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaXNvX2ZzX3NiLmgiIDEK CgoKCgoKc3RydWN0IGlzb2ZzX3NiX2luZm8gewogICAgICAgIHVuc2lnbmVkIGxvbmcgc19uaW5v ZGVzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19uem9uZXM7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBzX2ZpcnN0ZGF0YXpvbmU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX2xvZ196b25lX3NpemU7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9zaXplOwoKICAgICAgICB1bnNpZ25lZCBjaGFy IHNfaGlnaF9zaWVycmE7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX21hcHBpbmc7CiAgICAgICAg aW50IHNfcm9ja19vZmZzZXQ7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX3JvY2s7CiAgICAgICAg dW5zaWduZWQgY2hhciBzX2pvbGlldF9sZXZlbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfdXRm ODsKICAgICAgICB1bnNpZ25lZCBjaGFyIHNfY3J1ZnQ7CgoKICAgICAgICB1bnNpZ25lZCBjaGFy IHNfdW5oaWRlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ub3N1aWQ7CiAgICAgICAgdW5zaWdu ZWQgY2hhciBzX25vZGV2OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19ub2NvbXByZXNzOwoKICAg ICAgICBtb2RlX3Qgc19tb2RlOwogICAgICAgIGdpZF90IHNfZ2lkOwogICAgICAgIHVpZF90IHNf dWlkOwogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKnNfbmxzX2lvY2hhcnNldDsKfTsKIyA2ODgg Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4 L2luY2x1ZGUvbGludXgvbmZzX2ZzX3NiLmgiIDEKIyA5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L25mc19mc19zYi5oIgpzdHJ1Y3QgbmZzX3NlcnZlciB7CiAgICAgICAgc3RydWN0IHJw Y19jbG50ICogY2xpZW50OwogICAgICAgIHN0cnVjdCBuZnNfcnBjX29wcyAqIHJwY19vcHM7CiAg ICAgICAgaW50IGZsYWdzOwogICAgICAgIHVuc2lnbmVkIGludCByc2l6ZTsKICAgICAgICB1bnNp Z25lZCBpbnQgcnBhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCB3c2l6ZTsKICAgICAgICB1bnNp Z25lZCBpbnQgd3BhZ2VzOwogICAgICAgIHVuc2lnbmVkIGludCBkdHNpemU7CiAgICAgICAgdW5z aWduZWQgaW50IGJzaXplOwogICAgICAgIHVuc2lnbmVkIGludCBhY3JlZ21pbjsKICAgICAgICB1 bnNpZ25lZCBpbnQgYWNyZWdtYXg7CiAgICAgICAgdW5zaWduZWQgaW50IGFjZGlybWluOwogICAg ICAgIHVuc2lnbmVkIGludCBhY2Rpcm1heDsKICAgICAgICB1bnNpZ25lZCBpbnQgbmFtZWxlbjsK ICAgICAgICBjaGFyICogaG9zdG5hbWU7CiAgICAgICAgc3RydWN0IG5mc19yZXFsaXN0ICogcndf cmVxdWVzdHM7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBscnVfcmVhZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBscnVfZGlydHksCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbHJ1X2NvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscnVfYnVz eTsKfTsKCgoKCnN0cnVjdCBuZnNfc2JfaW5mbyB7CiAgICAgICAgc3RydWN0IG5mc19zZXJ2ZXIg c19zZXJ2ZXI7Cn07CiMgNjg5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2IuaCIgMQojIDEzICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3N5c3ZfZnNfc2IuaCIKc3RydWN0IHN5c3Zfc2Jf aW5mbyB7CiAgICAgICAgaW50IHNfdHlwZTsKICAgICAgICBjaGFyIHNfYnl0ZXNleDsKICAgICAg ICBjaGFyIHNfdHJ1bmNhdGU7CgogICAgICAgIG5saW5rX3Qgc19saW5rX21heDsKICAgICAgICB1 bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2NrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2lu b2Rlc19wZXJfYmxvY2tfMTsKICAgICAgICB1bnNpZ25lZCBpbnQgc19pbm9kZXNfcGVyX2Jsb2Nr X2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5kX3Blcl9ibG9jazsKICAgICAgICB1bnNp Z25lZCBpbnQgc19pbmRfcGVyX2Jsb2NrX2JpdHM7CiAgICAgICAgdW5zaWduZWQgaW50IHNfaW5k X3Blcl9ibG9ja18yOwogICAgICAgIHVuc2lnbmVkIGludCBzX3Rvb2JpZ19ibG9jazsKICAgICAg ICB1bnNpZ25lZCBpbnQgc19ibG9ja19iYXNlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNfZmlj X3NpemU7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19mbGNfc2l6ZTsKCiAgICAgICAgc3RydWN0 IGJ1ZmZlcl9oZWFkICpzX2JoMTsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfYmgyOwoK CiAgICAgICAgY2hhciAqIHNfc2JkMTsKICAgICAgICBjaGFyICogc19zYmQyOwogICAgICAgIHUx NiAqc19zYl9maWNfY291bnQ7CiAgICAgICAgdTE2ICpzX3NiX2ZpY19pbm9kZXM7CiAgICAgICAg dTE2ICpzX3NiX3RvdGFsX2ZyZWVfaW5vZGVzOwogICAgICAgIHUxNiAqc19iY2FjaGVfY291bnQ7 CiAgICAgICAgdTMyICpzX2JjYWNoZTsKICAgICAgICB1MzIgKnNfZnJlZV9ibG9ja3M7CiAgICAg ICAgdTMyICpzX3NiX3RpbWU7CiAgICAgICAgdTMyICpzX3NiX3N0YXRlOwoKCiAgICAgICAgdTMy IHNfZmlyc3Rpbm9kZXpvbmU7CiAgICAgICAgdTMyIHNfZmlyc3RkYXRhem9uZTsKICAgICAgICB1 MzIgc19uaW5vZGVzOwogICAgICAgIHUzMiBzX25kYXRhem9uZXM7CiAgICAgICAgdTMyIHNfbnpv bmVzOwogICAgICAgIHUxNiBzX25hbWVsZW47Cn07CiMgNjkwICIvdXNyL3NyYy9saW51eC9pbmNs dWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2FmZnNf ZnNfc2IuaCIgMQojIDExICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2FmZnNfZnNfc2Iu aCIKc3RydWN0IGFmZnNfYm1faW5mbyB7CiAgICAgICAgdTMyIGJtX2tleTsKICAgICAgICB1MzIg Ym1fZnJlZTsKfTsKCnN0cnVjdCBhZmZzX3NiX2luZm8gewogICAgICAgIGludCBzX3BhcnRpdGlv bl9zaXplOwogICAgICAgIGludCBzX3Jlc2VydmVkOwoKICAgICAgICB1MzIgc19kYXRhX2Jsa3Np emU7CiAgICAgICAgdTMyIHNfcm9vdF9ibG9jazsKICAgICAgICBpbnQgc19oYXNoc2l6ZTsKICAg ICAgICB1bnNpZ25lZCBsb25nIHNfZmxhZ3M7CiAgICAgICAgdWlkX3Qgc191aWQ7CiAgICAgICAg Z2lkX3Qgc19naWQ7CiAgICAgICAgdW1vZGVfdCBzX21vZGU7CiAgICAgICAgc3RydWN0IGJ1ZmZl cl9oZWFkICpzX3Jvb3RfYmg7CiAgICAgICAgc3RydWN0IHNlbWFwaG9yZSBzX2JtbG9jazsKICAg ICAgICBzdHJ1Y3QgYWZmc19ibV9pbmZvICpzX2JpdG1hcDsKICAgICAgICB1MzIgc19ibWFwX2Nv dW50OwogICAgICAgIHUzMiBzX2JtYXBfYml0czsKICAgICAgICB1MzIgc19sYXN0X2JtYXA7CiAg ICAgICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpzX2JtYXBfYmg7CiAgICAgICAgY2hhciAqc19wcmVm aXg7CiAgICAgICAgaW50IHNfcHJlZml4X2xlbjsKICAgICAgICBjaGFyIHNfdm9sdW1lWzMyXTsK fTsKIyA2OTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Iv c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdWZzX2ZzX3NiLmgiIDEKIyAxNyAiL3Vzci9zcmMvbGlu dXgvaW5jbHVkZS9saW51eC91ZnNfZnNfc2IuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L3Vmc19mcy5oIiAxCiMgMjM3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vm c19mcy5oIgpzdHJ1Y3QgdWZzX3RpbWV2YWwgewogICAgICAgIF9fczMyIHR2X3NlYzsKICAgICAg ICBfX3MzMiB0dl91c2VjOwp9OwoKc3RydWN0IHVmc19kaXJfZW50cnkgewogICAgICAgIF9fdTMy IGRfaW5vOwogICAgICAgIF9fdTE2IGRfcmVjbGVuOwogICAgICAgIHVuaW9uIHsKICAgICAgICAg ICAgICAgIF9fdTE2IGRfbmFtbGVuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAg ICAgICAgICAgICAgICAgX191OCBkX3R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTgg ZF9uYW1sZW47CiAgICAgICAgICAgICAgICB9IGRfNDQ7CiAgICAgICAgfSBkX3U7CiAgICAgICAg X191OCBkX25hbWVbMjU1ICsgMV07Cn07CgpzdHJ1Y3QgdWZzX2NzdW0gewogICAgICAgIF9fdTMy IGNzX25kaXI7CiAgICAgICAgX191MzIgY3NfbmJmcmVlOwogICAgICAgIF9fdTMyIGNzX25pZnJl ZTsKICAgICAgICBfX3UzMiBjc19uZmZyZWU7Cn07CgoKCgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2Nr IHsKICAgICAgICBfX3UzMiBmc19saW5rOwogICAgICAgIF9fdTMyIGZzX3JsaW5rOwogICAgICAg IF9fdTMyIGZzX3NibGtubzsKICAgICAgICBfX3UzMiBmc19jYmxrbm87CiAgICAgICAgX191MzIg ZnNfaWJsa25vOwogICAgICAgIF9fdTMyIGZzX2RibGtubzsKICAgICAgICBfX3UzMiBmc19jZ29m ZnNldDsKICAgICAgICBfX3UzMiBmc19jZ21hc2s7CiAgICAgICAgX191MzIgZnNfdGltZTsKICAg ICAgICBfX3UzMiBmc19zaXplOwogICAgICAgIF9fdTMyIGZzX2RzaXplOwogICAgICAgIF9fdTMy IGZzX25jZzsKICAgICAgICBfX3UzMiBmc19ic2l6ZTsKICAgICAgICBfX3UzMiBmc19mc2l6ZTsK ICAgICAgICBfX3UzMiBmc19mcmFnOwoKICAgICAgICBfX3UzMiBmc19taW5mcmVlOwogICAgICAg IF9fdTMyIGZzX3JvdGRlbGF5OwogICAgICAgIF9fdTMyIGZzX3JwczsKCiAgICAgICAgX191MzIg ZnNfYm1hc2s7CiAgICAgICAgX191MzIgZnNfZm1hc2s7CiAgICAgICAgX191MzIgZnNfYnNoaWZ0 OwogICAgICAgIF9fdTMyIGZzX2ZzaGlmdDsKCiAgICAgICAgX191MzIgZnNfbWF4Y29udGlnOwog ICAgICAgIF9fdTMyIGZzX21heGJwZzsKCiAgICAgICAgX191MzIgZnNfZnJhZ3NoaWZ0OwogICAg ICAgIF9fdTMyIGZzX2ZzYnRvZGI7CiAgICAgICAgX191MzIgZnNfc2JzaXplOwogICAgICAgIF9f dTMyIGZzX2NzbWFzazsKICAgICAgICBfX3UzMiBmc19jc3NoaWZ0OwogICAgICAgIF9fdTMyIGZz X25pbmRpcjsKICAgICAgICBfX3UzMiBmc19pbm9wYjsKICAgICAgICBfX3UzMiBmc19uc3BmOwoK ICAgICAgICBfX3UzMiBmc19vcHRpbTsKCiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAg c3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAg ICAgICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg ICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2Owog ICAgICAgIH0gZnNfdTE7CiAgICAgICAgX191MzIgZnNfaW50ZXJsZWF2ZTsKICAgICAgICBfX3Uz MiBmc190cmFja3NrZXc7CgoKCgogICAgICAgIF9fdTMyIGZzX2lkWzJdOwoKICAgICAgICBfX3Uz MiBmc19jc2FkZHI7CiAgICAgICAgX191MzIgZnNfY3NzaXplOwogICAgICAgIF9fdTMyIGZzX2Nn c2l6ZTsKCiAgICAgICAgX191MzIgZnNfbnRyYWs7CiAgICAgICAgX191MzIgZnNfbnNlY3Q7CiAg ICAgICAgX191MzIgZnNfc3BjOwoKICAgICAgICBfX3UzMiBmc19uY3lsOwoKICAgICAgICBfX3Uz MiBmc19jcGc7CiAgICAgICAgX191MzIgZnNfaXBnOwogICAgICAgIF9fdTMyIGZzX2ZwZzsKCiAg ICAgICAgc3RydWN0IHVmc19jc3VtIGZzX2NzdG90YWw7CgogICAgICAgIF9fczggZnNfZm1vZDsK ICAgICAgICBfX3M4IGZzX2NsZWFuOwogICAgICAgIF9fczggZnNfcm9ubHk7CiAgICAgICAgX19z OCBmc19mbGFnczsKICAgICAgICBfX3M4IGZzX2ZzbW50WzUxMl07CgogICAgICAgIF9fdTMyIGZz X2Nncm90b3I7CiAgICAgICAgX191MzIgZnNfY3NwWzMxXTsKICAgICAgICBfX3UzMiBmc19tYXhj bHVzdGVyOwogICAgICAgIF9fdTMyIGZzX2NwYzsKICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzE2 XVs4XTsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg ICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAg ICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3Nw YXJlY29uMlsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3RhdGU7CiAgICAg ICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAg ICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW47CiAgICAg ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFy ZWNvbls1M107CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3JlY2xhaW07CiAgICAg ICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uMlsxXTsKICAgICAgICAgICAgICAg ICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBm c19xYm1hc2tbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FmbWFza1syXTsK ICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAg ICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb25bNTBdOwogICAgICAgICAgICAg ICAgICAgICAgICBfX3MzMiBmc19jb250aWdzdW1zaXplOwogICAgICAgICAgICAgICAgICAgICAg ICBfX3MzMiBmc19tYXhzeW1saW5rbGVuOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBm c19pbm9kZWZtdDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbWF4ZmlsZXNpemVb Ml07CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMyIGZzX3FibWFza1syXTsKICAgICAgICAg ICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNrWzJdOwogICAgICAgICAgICAgICAgICAgICAg ICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfNDQ7CiAgICAgICAgfSBmc191 MjsKICAgICAgICBfX3MzMiBmc19wb3N0Ymxmb3JtYXQ7CiAgICAgICAgX19zMzIgZnNfbnJwb3M7 CiAgICAgICAgX19zMzIgZnNfcG9zdGJsb2ZmOwogICAgICAgIF9fczMyIGZzX3JvdGJsb2ZmOwog ICAgICAgIF9fczMyIGZzX21hZ2ljOwogICAgICAgIF9fdTggZnNfc3BhY2VbMV07Cn07CiMgNDE1 ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpzdHJ1Y3QgdWZzX2N5bGlu ZGVyX2dyb3VwIHsKICAgICAgICBfX3UzMiBjZ19saW5rOwogICAgICAgIF9fdTMyIGNnX21hZ2lj OwogICAgICAgIF9fdTMyIGNnX3RpbWU7CiAgICAgICAgX191MzIgY2dfY2d4OwogICAgICAgIF9f dTE2IGNnX25jeWw7CiAgICAgICAgX191MTYgY2dfbmlibGs7CiAgICAgICAgX191MzIgY2dfbmRi bGs7CiAgICAgICAgc3RydWN0IHVmc19jc3VtIGNnX2NzOwogICAgICAgIF9fdTMyIGNnX3JvdG9y OwogICAgICAgIF9fdTMyIGNnX2Zyb3RvcjsKICAgICAgICBfX3UzMiBjZ19pcm90b3I7CiAgICAg ICAgX191MzIgY2dfZnJzdW1bKDgxOTIgLyAxMDI0KV07CiAgICAgICAgX191MzIgY2dfYnRvdG9m ZjsKICAgICAgICBfX3UzMiBjZ19ib2ZmOwogICAgICAgIF9fdTMyIGNnX2l1c2Vkb2ZmOwogICAg ICAgIF9fdTMyIGNnX2ZyZWVvZmY7CiAgICAgICAgX191MzIgY2dfbmV4dGZyZWVvZmY7CiAgICAg ICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg ICAgX191MzIgY2dfY2x1c3RlcnN1bW9mZjsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIg Y2dfY2x1c3Rlcm9mZjsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgY2dfbmNsdXN0ZXJi bGtzOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBjZ19zcGFyZWNvblsxM107CiAgICAg ICAgICAgICAgICB9IGNnXzQ0OwogICAgICAgICAgICAgICAgX191MzIgY2dfc3BhcmVjb25bMTZd OwogICAgICAgIH0gY2dfdTsKICAgICAgICBfX3U4IGNnX3NwYWNlWzFdOwoKfTsKCgoKCnN0cnVj dCB1ZnNfaW5vZGUgewogICAgICAgIF9fdTE2IHVpX21vZGU7CiAgICAgICAgX191MTYgdWlfbmxp bms7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAg ICAgICAgICAgICAgX191MTYgdWlfc3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MTYg dWlfc2dpZDsKICAgICAgICAgICAgICAgIH0gb2xkaWRzOwogICAgICAgICAgICAgICAgX191MzIg dWlfaW51bWJlcjsKICAgICAgICAgICAgICAgIF9fdTMyIHVpX2F1dGhvcjsKICAgICAgICB9IHVp X3UxOwogICAgICAgIF9fdTY0IHVpX3NpemU7CiAgICAgICAgc3RydWN0IHVmc190aW1ldmFsIHVp X2F0aW1lOwogICAgICAgIHN0cnVjdCB1ZnNfdGltZXZhbCB1aV9tdGltZTsKICAgICAgICBzdHJ1 Y3QgdWZzX3RpbWV2YWwgdWlfY3RpbWU7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAg c3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlfZGJbMTJdOwogICAgICAg ICAgICAgICAgICAgICAgICBfX3UzMiB1aV9pYlszXTsKICAgICAgICAgICAgICAgIH0gdWlfYWRk cjsKICAgICAgICAgICAgICAgIF9fdTggdWlfc3ltbGlua1s0KigxMiArMyldOwogICAgICAgIH0g dWlfdTI7CiAgICAgICAgX191MzIgdWlfZmxhZ3M7CiAgICAgICAgX191MzIgdWlfYmxvY2tzOwog ICAgICAgIF9fdTMyIHVpX2dlbjsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1 Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9zaGFkb3c7CiAgICAgICAgICAg ICAgICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIg dWlfZ2lkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1aV9vZWZ0ZmxhZzsKICAgICAg ICAgICAgICAgIH0gdWlfc3VuOwogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAg ICAgICAgICAgICAgX191MzIgdWlfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiB1 aV9naWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIHVpX3NwYXJlWzJdOwogICAgICAg ICAgICAgICAgfSB1aV80NDsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg ICAgICAgICAgIF9fdTMyIHVpX3VpZDsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgdWlf Z2lkOwogICAgICAgICAgICAgICAgICAgICAgICBfX3UxNiB1aV9tb2RlaDsKICAgICAgICAgICAg ICAgICAgICAgICAgX191MTYgdWlfc3BhcmU7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdTMy IHVpX3RyYW5zOwogICAgICAgICAgICAgICAgfSB1aV9odXJkOwogICAgICAgIH0gdWlfdTM7Cn07 CiMgNTE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Vmc19mcy5oIgpleHRlcm4gdm9p ZCB1ZnNfZnJlZV9mcmFnbWVudHMgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQp OwpleHRlcm4gdm9pZCB1ZnNfZnJlZV9ibG9ja3MgKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwg dW5zaWduZWQpOwpleHRlcm4gdW5zaWduZWQgdWZzX25ld19mcmFnbWVudHMgKHN0cnVjdCBpbm9k ZSAqLCB1MzIgKiwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgaW50ICopOwoKCmV4dGVy biBzdHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyAqIHVmc19sb2FkX2N5bGluZGVyIChzdHJ1Y3Qg c3VwZXJfYmxvY2sgKiwgdW5zaWduZWQpOwpleHRlcm4gdm9pZCB1ZnNfcHV0X2N5bGluZGVyIChz dHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQpOwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3Bl cmF0aW9ucyB1ZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBpbnQgdWZzX2NoZWNrX2Rp cl9lbnRyeSAoY29uc3QgY2hhciAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHVmc19kaXJfZW50 cnkgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICosIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gaW50IHVm c19hZGRfbGluayAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbm9f dCB1ZnNfaW5vZGVfYnlfbmFtZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0 ZXJuIGludCB1ZnNfbWFrZV9lbXB0eShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlub2RlICopOwpl eHRlcm4gc3RydWN0IHVmc19kaXJfZW50cnkgKiB1ZnNfZmluZF9lbnRyeSAoc3RydWN0IGRlbnRy eSAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiopOwpleHRlcm4gaW50IHVmc19kZWxldGVfZW50cnkg KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqLCBzdHJ1Y3QgYnVmZmVyX2hl YWQgKik7CmV4dGVybiBpbnQgdWZzX2VtcHR5X2RpciAoc3RydWN0IGlub2RlICopOwpleHRlcm4g c3RydWN0IHVmc19kaXJfZW50cnkgKiB1ZnNfZG90ZG90IChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0 IGJ1ZmZlcl9oZWFkICoqKTsKZXh0ZXJuIHZvaWQgdWZzX3NldF9saW5rKHN0cnVjdCBpbm9kZSAq LCBzdHJ1Y3QgdWZzX2Rpcl9lbnRyeSAqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgc3RydWN0IGlu b2RlICopOwoKCmV4dGVybiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB1ZnNfZmlsZV9pbm9kZV9v cGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1ZnNfZmlsZV9vcGVyYXRp b25zOwoKZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgdWZzX2FvcHM7CgoK ZXh0ZXJuIHZvaWQgdWZzX2ZyZWVfaW5vZGUgKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4g c3RydWN0IGlub2RlICogdWZzX25ld19pbm9kZSAoY29uc3Qgc3RydWN0IGlub2RlICosIGludCk7 CgoKZXh0ZXJuIGludCB1ZnNfZnJhZ19tYXAgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4g dm9pZCB1ZnNfcmVhZF9pbm9kZSAoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCB1ZnNfcHV0 X2lub2RlIChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHVmc193cml0ZV9pbm9kZSAoc3Ry dWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgdWZzX3N5bmNfaW5vZGUgKHN0cnVjdCBpbm9k ZSAqKTsKZXh0ZXJuIHZvaWQgdWZzX2RlbGV0ZV9pbm9kZSAoc3RydWN0IGlub2RlICopOwpleHRl cm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogdWZzX2dldGZyYWcgKHN0cnVjdCBpbm9kZSAqLCB1bnNp Z25lZCwgaW50LCBpbnQgKik7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiB1ZnNfYnJlYWQg KHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCwgaW50LCBpbnQgKik7CgoKZXh0ZXJuIHN0cnVjdCBm aWxlX29wZXJhdGlvbnMgdWZzX2Rpcl9vcGVyYXRpb25zOwoKCmV4dGVybiBzdHJ1Y3QgZmlsZV9z eXN0ZW1fdHlwZSB1ZnNfZnNfdHlwZTsKZXh0ZXJuIHZvaWQgdWZzX3dhcm5pbmcgKHN0cnVjdCBz dXBlcl9ibG9jayAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0 ZV9fICgoZm9ybWF0IChwcmludGYsIDMsIDQpKSk7CmV4dGVybiB2b2lkIHVmc19lcnJvciAoc3Ry dWN0IHN1cGVyX2Jsb2NrICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pIF9fYXR0 cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMywgNCkpKTsKZXh0ZXJuIHZvaWQgdWZzX3Bhbmlj IChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikg X19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpOwpleHRlcm4gdm9pZCB1ZnNf d3JpdGVfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKCgpleHRlcm4gc3RydWN0IGlub2Rl X29wZXJhdGlvbnMgdWZzX2Zhc3Rfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zOwoKCmV4dGVybiB2 b2lkIHVmc190cnVuY2F0ZSAoc3RydWN0IGlub2RlICopOwojIDE4ICIvdXNyL3NyYy9saW51eC9p bmNsdWRlL2xpbnV4L3Vmc19mc19zYi5oIiAyCgoKCgoKc3RydWN0IHVmc19idWZmZXJfaGVhZCB7 CiAgICAgICAgdW5zaWduZWQgZnJhZ21lbnQ7CiAgICAgICAgdW5zaWduZWQgY291bnQ7CiAgICAg ICAgc3RydWN0IGJ1ZmZlcl9oZWFkICogYmhbKDgxOTIgLyAxMDI0KV07Cn07CgpzdHJ1Y3QgdWZz X2NnX3ByaXZhdGVfaW5mbyB7CiAgICAgICAgc3RydWN0IHVmc19jeWxpbmRlcl9ncm91cCB1Y2c7 CiAgICAgICAgX191MzIgY19jZ3g7CiAgICAgICAgX191MTYgY19uY3lsOwogICAgICAgIF9fdTE2 IGNfbmlibGs7CiAgICAgICAgX191MzIgY19uZGJsazsKICAgICAgICBfX3UzMiBjX3JvdG9yOwog ICAgICAgIF9fdTMyIGNfZnJvdG9yOwogICAgICAgIF9fdTMyIGNfaXJvdG9yOwogICAgICAgIF9f dTMyIGNfYnRvdG9mZjsKICAgICAgICBfX3UzMiBjX2JvZmY7CiAgICAgICAgX191MzIgY19pdXNl ZG9mZjsKICAgICAgICBfX3UzMiBjX2ZyZWVvZmY7CiAgICAgICAgX191MzIgY19uZXh0ZnJlZW9m ZjsKICAgICAgICBfX3UzMiBjX2NsdXN0ZXJzdW1vZmY7CiAgICAgICAgX191MzIgY19jbHVzdGVy b2ZmOwogICAgICAgIF9fdTMyIGNfbmNsdXN0ZXJibGtzOwp9OwoKc3RydWN0IHVmc19zYl9wcml2 YXRlX2luZm8gewogICAgICAgIHN0cnVjdCB1ZnNfYnVmZmVyX2hlYWQgc191Ymg7CiAgICAgICAg X191MzIgc19zYmxrbm87CiAgICAgICAgX191MzIgc19jYmxrbm87CiAgICAgICAgX191MzIgc19p Ymxrbm87CiAgICAgICAgX191MzIgc19kYmxrbm87CiAgICAgICAgX191MzIgc19jZ29mZnNldDsK ICAgICAgICBfX3UzMiBzX2NnbWFzazsKICAgICAgICBfX3UzMiBzX3NpemU7CiAgICAgICAgX191 MzIgc19kc2l6ZTsKICAgICAgICBfX3UzMiBzX25jZzsKICAgICAgICBfX3UzMiBzX2JzaXplOwog ICAgICAgIF9fdTMyIHNfZnNpemU7CiAgICAgICAgX191MzIgc19mcGI7CiAgICAgICAgX191MzIg c19taW5mcmVlOwogICAgICAgIF9fdTMyIHNfYm1hc2s7CiAgICAgICAgX191MzIgc19mbWFzazsK ICAgICAgICBfX3UzMiBzX2JzaGlmdDsKICAgICAgICBfX3UzMiBzX2ZzaGlmdDsKICAgICAgICBf X3UzMiBzX2ZwYnNoaWZ0OwogICAgICAgIF9fdTMyIHNfZnNidG9kYjsKICAgICAgICBfX3UzMiBz X3Nic2l6ZTsKICAgICAgICBfX3UzMiBzX2NzbWFzazsKICAgICAgICBfX3UzMiBzX2Nzc2hpZnQ7 CiAgICAgICAgX191MzIgc19uaW5kaXI7CiAgICAgICAgX191MzIgc19pbm9wYjsKICAgICAgICBf X3UzMiBzX25zcGY7CiAgICAgICAgX191MzIgc19ucHNlY3Q7CiAgICAgICAgX191MzIgc19pbnRl cmxlYXZlOwogICAgICAgIF9fdTMyIHNfdHJhY2tza2V3OwogICAgICAgIF9fdTMyIHNfY3NhZGRy OwogICAgICAgIF9fdTMyIHNfY3NzaXplOwogICAgICAgIF9fdTMyIHNfY2dzaXplOwogICAgICAg IF9fdTMyIHNfbnRyYWs7CiAgICAgICAgX191MzIgc19uc2VjdDsKICAgICAgICBfX3UzMiBzX3Nw YzsKICAgICAgICBfX3UzMiBzX2lwZzsKICAgICAgICBfX3UzMiBzX2ZwZzsKICAgICAgICBfX3Uz MiBzX2NwYzsKICAgICAgICBfX3MzMiBzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgX19zNjQgc19x Ym1hc2s7CiAgICAgICAgX19zNjQgc19xZm1hc2s7CiAgICAgICAgX19zMzIgc19wb3N0Ymxmb3Jt YXQ7CiAgICAgICAgX19zMzIgc19ucnBvczsKICAgICAgICBfX3MzMiBzX3Bvc3RibG9mZjsKICAg ICAgICBfX3MzMiBzX3JvdGJsb2ZmOwoKICAgICAgICBfX3UzMiBzX2ZwYm1hc2s7CiAgICAgICAg X191MzIgc19hcGI7CiAgICAgICAgX191MzIgc18yYXBiOwogICAgICAgIF9fdTMyIHNfM2FwYjsK ICAgICAgICBfX3UzMiBzX2FwYm1hc2s7CiAgICAgICAgX191MzIgc19hcGJzaGlmdDsKICAgICAg ICBfX3UzMiBzXzJhcGJzaGlmdDsKICAgICAgICBfX3UzMiBzXzNhcGJzaGlmdDsKICAgICAgICBf X3UzMiBzX25zcGZzaGlmdDsKICAgICAgICBfX3UzMiBzX25zcGI7CiAgICAgICAgX191MzIgc19p bm9wZjsKICAgICAgICBfX3UzMiBzX3NiYmFzZTsKICAgICAgICBfX3UzMiBzX2JwZjsKICAgICAg ICBfX3UzMiBzX2JwZnNoaWZ0OwogICAgICAgIF9fdTMyIHNfYnBmbWFzazsKCiAgICAgICAgX191 MzIgc19tYXhzeW1saW5rbGVuOwp9OwoKCgoKCnN0cnVjdCB1ZnNfc2JfaW5mbyB7CiAgICAgICAg c3RydWN0IHVmc19zYl9wcml2YXRlX2luZm8gKiBzX3VzcGk7CiAgICAgICAgc3RydWN0IHVmc19j c3VtICogc19jc3BbMzFdOwogICAgICAgIHVuc2lnbmVkIHNfYnl0ZXNleDsKICAgICAgICB1bnNp Z25lZCBzX2ZsYWdzOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqKiBzX3VjZzsKICAgICAg ICBzdHJ1Y3QgdWZzX2NnX3ByaXZhdGVfaW5mbyAqIHNfdWNwaVs4XTsKICAgICAgICB1bnNpZ25l ZCBzX2Nnbm9bOF07CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc19jZ19sb2FkZWQ7CiAgICAgICAg dW5zaWduZWQgc19tb3VudF9vcHQ7Cn07CgoKCgoKCgpzdHJ1Y3QgdWZzX3N1cGVyX2Jsb2NrX2Zp cnN0IHsKICAgICAgICBfX3UzMiBmc19saW5rOwogICAgICAgIF9fdTMyIGZzX3JsaW5rOwogICAg ICAgIF9fdTMyIGZzX3NibGtubzsKICAgICAgICBfX3UzMiBmc19jYmxrbm87CiAgICAgICAgX191 MzIgZnNfaWJsa25vOwogICAgICAgIF9fdTMyIGZzX2RibGtubzsKICAgICAgICBfX3UzMiBmc19j Z29mZnNldDsKICAgICAgICBfX3UzMiBmc19jZ21hc2s7CiAgICAgICAgX191MzIgZnNfdGltZTsK ICAgICAgICBfX3UzMiBmc19zaXplOwogICAgICAgIF9fdTMyIGZzX2RzaXplOwogICAgICAgIF9f dTMyIGZzX25jZzsKICAgICAgICBfX3UzMiBmc19ic2l6ZTsKICAgICAgICBfX3UzMiBmc19mc2l6 ZTsKICAgICAgICBfX3UzMiBmc19mcmFnOwogICAgICAgIF9fdTMyIGZzX21pbmZyZWU7CiAgICAg ICAgX191MzIgZnNfcm90ZGVsYXk7CiAgICAgICAgX191MzIgZnNfcnBzOwogICAgICAgIF9fdTMy IGZzX2JtYXNrOwogICAgICAgIF9fdTMyIGZzX2ZtYXNrOwogICAgICAgIF9fdTMyIGZzX2JzaGlm dDsKICAgICAgICBfX3UzMiBmc19mc2hpZnQ7CiAgICAgICAgX191MzIgZnNfbWF4Y29udGlnOwog ICAgICAgIF9fdTMyIGZzX21heGJwZzsKICAgICAgICBfX3UzMiBmc19mcmFnc2hpZnQ7CiAgICAg ICAgX191MzIgZnNfZnNidG9kYjsKICAgICAgICBfX3UzMiBmc19zYnNpemU7CiAgICAgICAgX191 MzIgZnNfY3NtYXNrOwogICAgICAgIF9fdTMyIGZzX2Nzc2hpZnQ7CiAgICAgICAgX191MzIgZnNf bmluZGlyOwogICAgICAgIF9fdTMyIGZzX2lub3BiOwogICAgICAgIF9fdTMyIGZzX25zcGY7CiAg ICAgICAgX191MzIgZnNfb3B0aW07CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3Ry dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfbnBzZWN0OwogICAgICAgICAg ICAgICAgfSBmc19zdW47CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg ICAgICAgICBfX3MzMiBmc19zdGF0ZTsKICAgICAgICAgICAgICAgIH0gZnNfc3VueDg2OwogICAg ICAgIH0gZnNfdTE7CiAgICAgICAgX191MzIgZnNfaW50ZXJsZWF2ZTsKICAgICAgICBfX3UzMiBm c190cmFja3NrZXc7CiAgICAgICAgX191MzIgZnNfaWRbMl07CiAgICAgICAgX191MzIgZnNfY3Nh ZGRyOwogICAgICAgIF9fdTMyIGZzX2Nzc2l6ZTsKICAgICAgICBfX3UzMiBmc19jZ3NpemU7CiAg ICAgICAgX191MzIgZnNfbnRyYWs7CiAgICAgICAgX191MzIgZnNfbnNlY3Q7CiAgICAgICAgX191 MzIgZnNfc3BjOwogICAgICAgIF9fdTMyIGZzX25jeWw7CiAgICAgICAgX191MzIgZnNfY3BnOwog ICAgICAgIF9fdTMyIGZzX2lwZzsKICAgICAgICBfX3UzMiBmc19mcGc7CiAgICAgICAgc3RydWN0 IHVmc19jc3VtIGZzX2NzdG90YWw7CiAgICAgICAgX19zOCBmc19mbW9kOwogICAgICAgIF9fczgg ZnNfY2xlYW47CiAgICAgICAgX19zOCBmc19yb25seTsKICAgICAgICBfX3M4IGZzX2ZsYWdzOwog ICAgICAgIF9fczggZnNfZnNtbnRbNTEyIC0gMjEyXTsKCn07CgpzdHJ1Y3QgdWZzX3N1cGVyX2Js b2NrX3NlY29uZCB7CiAgICAgICAgX19zOCBmc19mc21udFsyMTJdOwogICAgICAgIF9fdTMyIGZz X2Nncm90b3I7CiAgICAgICAgX191MzIgZnNfY3NwWzMxXTsKICAgICAgICBfX3UzMiBmc19tYXhj bHVzdGVyOwogICAgICAgIF9fdTMyIGZzX2NwYzsKICAgICAgICBfX3UxNiBmc19vcG9zdGJsWzgy XTsKfTsKCnN0cnVjdCB1ZnNfc3VwZXJfYmxvY2tfdGhpcmQgewogICAgICAgIF9fdTE2IGZzX29w b3N0YmxbNDZdOwogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAg ICAgICAgICAgICAgICAgICAgIF9fczMyIGZzX3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAg ICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIg ZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zdGF0ZTsK ICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAgICAgICAgICAg ICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICB9IGZzX3N1bjsK ICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fczMyIGZz X3NwYXJlY29uWzUzXTsKICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfcmVjbGFpbTsK ICAgICAgICAgICAgICAgICAgICAgICAgX19zMzIgZnNfc3BhcmVjb24yWzFdOwogICAgICAgICAg ICAgICAgICAgICAgICBfX3UzMiBmc19ucHNlY3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIF9f dTMyIGZzX3FibWFza1syXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWZtYXNr WzJdOwogICAgICAgICAgICAgICAgfSBmc19zdW54ODY7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg ewogICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiBmc19zcGFyZWNvbls1MF07CiAgICAgICAg ICAgICAgICAgICAgICAgIF9fczMyIGZzX2NvbnRpZ3N1bXNpemU7CiAgICAgICAgICAgICAgICAg ICAgICAgIF9fczMyIGZzX21heHN5bWxpbmtsZW47CiAgICAgICAgICAgICAgICAgICAgICAgIF9f czMyIGZzX2lub2RlZm10OwogICAgICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19tYXhmaWxl c2l6ZVsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgX191MzIgZnNfcWJtYXNrWzJdOwogICAg ICAgICAgICAgICAgICAgICAgICBfX3UzMiBmc19xZm1hc2tbMl07CiAgICAgICAgICAgICAgICAg ICAgICAgIF9fczMyIGZzX3N0YXRlOwogICAgICAgICAgICAgICAgfSBmc180NDsKICAgICAgICB9 IGZzX3UyOwogICAgICAgIF9fczMyIGZzX3Bvc3RibGZvcm1hdDsKICAgICAgICBfX3MzMiBmc19u cnBvczsKICAgICAgICBfX3MzMiBmc19wb3N0YmxvZmY7CiAgICAgICAgX19zMzIgZnNfcm90Ymxv ZmY7CiAgICAgICAgX19zMzIgZnNfbWFnaWM7CiAgICAgICAgX191OCBmc19zcGFjZVsxXTsKfTsK IyA2OTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi91c3Ivc3Jj L2xpbnV4L2luY2x1ZGUvbGludXgvZWZzX2ZzX3NiLmgiIDEKIyAyNSAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9saW51eC9lZnNfZnNfc2IuaCIKc3RydWN0IGVmc19zdXBlciB7CiAgICAgICAgaW50 MzJfdCBmc19zaXplOwogICAgICAgIGludDMyX3QgZnNfZmlyc3RjZzsKICAgICAgICBpbnQzMl90 IGZzX2NnZnNpemU7CiAgICAgICAgc2hvcnQgZnNfY2dpc2l6ZTsKICAgICAgICBzaG9ydCBmc19z ZWN0b3JzOwogICAgICAgIHNob3J0IGZzX2hlYWRzOwogICAgICAgIHNob3J0IGZzX25jZzsKICAg ICAgICBzaG9ydCBmc19kaXJ0eTsKICAgICAgICBpbnQzMl90IGZzX3RpbWU7CiAgICAgICAgaW50 MzJfdCBmc19tYWdpYzsKICAgICAgICBjaGFyIGZzX2ZuYW1lWzZdOwogICAgICAgIGNoYXIgZnNf ZnBhY2tbNl07CiAgICAgICAgaW50MzJfdCBmc19ibXNpemU7CiAgICAgICAgaW50MzJfdCBmc190 ZnJlZTsKICAgICAgICBpbnQzMl90IGZzX3Rpbm9kZTsKICAgICAgICBpbnQzMl90IGZzX2JtYmxv Y2s7CiAgICAgICAgaW50MzJfdCBmc19yZXBsc2I7CiAgICAgICAgaW50MzJfdCBmc19sYXN0aWFs bG9jOwogICAgICAgIGNoYXIgZnNfc3BhcmVbMjBdOwogICAgICAgIGludDMyX3QgZnNfY2hlY2tz dW07Cn07CgoKc3RydWN0IGVmc19zYl9pbmZvIHsKICAgICAgICBpbnQzMl90IGZzX21hZ2ljOwog ICAgICAgIGludDMyX3QgZnNfc3RhcnQ7CiAgICAgICAgaW50MzJfdCBmaXJzdF9ibG9jazsKICAg ICAgICBpbnQzMl90IHRvdGFsX2Jsb2NrczsKICAgICAgICBpbnQzMl90IGdyb3VwX3NpemU7CiAg ICAgICAgaW50MzJfdCBkYXRhX2ZyZWU7CiAgICAgICAgaW50MzJfdCBpbm9kZV9mcmVlOwogICAg ICAgIHNob3J0IGlub2RlX2Jsb2NrczsKICAgICAgICBzaG9ydCB0b3RhbF9ncm91cHM7Cn07CiMg NjkzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9s aW51eC9pbmNsdWRlL2xpbnV4L3JvbWZzX2ZzX3NiLmgiIDEKCgoKCgpzdHJ1Y3Qgcm9tZnNfc2Jf aW5mbyB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heHNpemU7Cn07CiMgNjk0ICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L3NtYl9mc19zYi5oIiAxCiMgMTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv c21iX2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbWIuaCIgMQoj IDE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NtYi5oIgplbnVtIHNtYl9wcm90b2Nv bCB7CiAgICAgICAgU01CX1BST1RPQ09MX05PTkUsCiAgICAgICAgU01CX1BST1RPQ09MX0NPUkUs CiAgICAgICAgU01CX1BST1RPQ09MX0NPUkVQTFVTLAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5N QU4xLAogICAgICAgIFNNQl9QUk9UT0NPTF9MQU5NQU4yLAogICAgICAgIFNNQl9QUk9UT0NPTF9O VDEKfTsKCmVudW0gc21iX2Nhc2VfaG5kbCB7CiAgICAgICAgU01CX0NBU0VfREVGQVVMVCwKICAg ICAgICBTTUJfQ0FTRV9MT1dFUiwKICAgICAgICBTTUJfQ0FTRV9VUFBFUgp9OwoKc3RydWN0IHNt Yl9kc2thdHRyIHsKICAgICAgICBfX3UxNiB0b3RhbDsKICAgICAgICBfX3UxNiBhbGxvY2Jsb2Nr czsKICAgICAgICBfX3UxNiBibG9ja3NpemU7CiAgICAgICAgX191MTYgZnJlZTsKfTsKCnN0cnVj dCBzbWJfY29ubl9vcHQgewoKCiAgICAgICAgdW5zaWduZWQgaW50IGZkOwoKICAgICAgICBlbnVt IHNtYl9wcm90b2NvbCBwcm90b2NvbDsKICAgICAgICBlbnVtIHNtYl9jYXNlX2huZGwgY2FzZV9o YW5kbGluZzsKCgoKICAgICAgICBfX3UzMiBtYXhfeG1pdDsKICAgICAgICBfX3UxNiBzZXJ2ZXJf dWlkOwogICAgICAgIF9fdTE2IHRpZDsKCgogICAgICAgIF9fdTE2IHNlY21vZGU7CiAgICAgICAg X191MTYgbWF4bXV4OwogICAgICAgIF9fdTE2IG1heHZjczsKICAgICAgICBfX3UxNiByYXdtb2Rl OwogICAgICAgIF9fdTMyIHNlc3NrZXk7CgoKICAgICAgICBfX3UzMiBtYXhyYXc7CiAgICAgICAg X191MzIgY2FwYWJpbGl0aWVzOwogICAgICAgIF9fczE2IHNlcnZlcnpvbmU7Cn07CgoKCgpzdHJ1 Y3Qgc21iX25sc19jb2RlcGFnZSB7CiAgICAgICAgY2hhciBsb2NhbF9uYW1lWzIwXTsKICAgICAg ICBjaGFyIHJlbW90ZV9uYW1lWzIwXTsKfTsKIyA3OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9zbWIuaCIKc3RydWN0IHNtYl9mYXR0ciB7CgogICAgICAgIF9fdTE2IGF0dHI7CgogICAg ICAgIHVuc2lnbmVkIGxvbmcgZl9pbm87CiAgICAgICAgdW1vZGVfdCBmX21vZGU7CiAgICAgICAg bmxpbmtfdCBmX25saW5rOwogICAgICAgIHVpZF90IGZfdWlkOwogICAgICAgIGdpZF90IGZfZ2lk OwogICAgICAgIGtkZXZfdCBmX3JkZXY7CiAgICAgICAgb2ZmX3QgZl9zaXplOwogICAgICAgIHRp bWVfdCBmX2F0aW1lOwogICAgICAgIHRpbWVfdCBmX210aW1lOwogICAgICAgIHRpbWVfdCBmX2N0 aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZl9ibGtzaXplOwogICAgICAgIHVuc2lnbmVkIGxv bmcgZl9ibG9ja3M7Cn07CgplbnVtIHNtYl9jb25uX3N0YXRlIHsKICAgICAgICBDT05OX1ZBTElE LAogICAgICAgIENPTk5fSU5WQUxJRCwKCiAgICAgICAgQ09OTl9SRVRSSUVELAogICAgICAgIENP Tk5fUkVUUllJTkcKfTsKIyAxNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zbWJfZnNf c2IuaCIgMgoKCgoKCgoKc3RydWN0IHNtYl9zYl9pbmZvIHsKICAgICAgICBlbnVtIHNtYl9jb25u X3N0YXRlIHN0YXRlOwogICAgICAgIHN0cnVjdCBmaWxlICogc29ja19maWxlOwoKICAgICAgICBz dHJ1Y3Qgc21iX21vdW50X2RhdGFfa2VybmVsICptbnQ7CiAgICAgICAgdW5zaWduZWQgY2hhciAq dGVtcF9idWY7CgoKCgogICAgICAgIHVuc2lnbmVkIGludCBnZW5lcmF0aW9uOwogICAgICAgIHBp ZF90IGNvbm5fcGlkOwogICAgICAgIHN0cnVjdCBzbWJfY29ubl9vcHQgb3B0OwoKICAgICAgICBz dHJ1Y3Qgc2VtYXBob3JlIHNlbTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoKICAg ICAgICBfX3UzMiBwYWNrZXRfc2l6ZTsKICAgICAgICB1bnNpZ25lZCBjaGFyICogcGFja2V0Owog ICAgICAgIHVuc2lnbmVkIHNob3J0IHJjbHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgZXJyOwoK CiAgICAgICAgdm9pZCAqZGF0YV9yZWFkeTsKCgogICAgICAgIHN0cnVjdCBubHNfdGFibGUgKnJl bW90ZV9ubHM7CiAgICAgICAgc3RydWN0IG5sc190YWJsZSAqbG9jYWxfbmxzOwoKCgoKICAgICAg ICBjaGFyICpuYW1lX2J1ZjsKCiAgICAgICAgaW50ICgqY29udmVydCkoY2hhciAqLCBpbnQsIGNv bnN0IGNoYXIgKiwgaW50LAogICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBubHNfdGFibGUg Kiwgc3RydWN0IG5sc190YWJsZSAqKTsKfTsKCgpzdGF0aWMgaW5saW5lIHZvaWQKc21iX2xvY2tf c2VydmVyKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2VydmVyKQp7CiAgICAgICAgZG93bigmKHNlcnZl ci0+c2VtKSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZApzbWJfdW5sb2NrX3NlcnZlcihzdHJ1Y3Qg c21iX3NiX2luZm8gKnNlcnZlcikKewogICAgICAgIHVwKCYoc2VydmVyLT5zZW0pKTsKfQojIDY5 NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGlu dXgvaW5jbHVkZS9saW51eC9oZnNfZnNfc2IuaCIgMQojIDE1ICIvdXNyL3NyYy9saW51eC9pbmNs dWRlL2xpbnV4L2hmc19mc19zYi5oIgpzdHJ1Y3QgaGZzX25hbWU7Cgp0eXBlZGVmIGludCAoKmhm c19uYW1laW5fZm4pIChjaGFyICosIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqKTsKdHlwZWRlZiB2 b2lkICgqaGZzX25hbWVvdXRfZm4pIChzdHJ1Y3QgaGZzX25hbWUgKiwgY29uc3QgY2hhciAqLCBp bnQpOwp0eXBlZGVmIHZvaWQgKCpoZnNfaWZpbGxfZm4pIChzdHJ1Y3QgaW5vZGUgKiwgaW5vX3Qs IGNvbnN0IGludCk7CgoKCgoKCnN0cnVjdCBoZnNfc2JfaW5mbyB7CiAgICAgICAgaW50IG1hZ2lj OwogICAgICAgIHN0cnVjdCBoZnNfbWRiICpzX21kYjsKICAgICAgICBpbnQgc19xdWlldDsKCiAg ICAgICAgaW50IHNfbG93ZXJjYXNlOwogICAgICAgIGludCBzX2FmcGQ7CiAgICAgICAgaW50IHNf dmVyc2lvbjsKICAgICAgICBoZnNfbmFtZWluX2ZuIHNfbmFtZWluOwoKCiAgICAgICAgaGZzX25h bWVvdXRfZm4gc19uYW1lb3V0OwoKCiAgICAgICAgaGZzX2lmaWxsX2ZuIHNfaWZpbGw7CgogICAg ICAgIGNvbnN0IHN0cnVjdCBoZnNfbmFtZSAqc19yZXNlcnZlZDE7CiAgICAgICAgY29uc3Qgc3Ry dWN0IGhmc19uYW1lICpzX3Jlc2VydmVkMjsKICAgICAgICBfX3UzMiBzX3R5cGU7CiAgICAgICAg X191MzIgc19jcmVhdG9yOwogICAgICAgIHVtb2RlX3Qgc191bWFzazsKCiAgICAgICAgdWlkX3Qg c191aWQ7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgY2hhciBzX2NvbnY7Cn07CiMgNjk2 ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIvdXNyL3NyYy9saW51 eC9pbmNsdWRlL2xpbnV4L2FkZnNfZnNfc2IuaCIgMQojIDEzICIvdXNyL3NyYy9saW51eC9pbmNs dWRlL2xpbnV4L2FkZnNfZnNfc2IuaCIKc3RydWN0IGFkZnNfZGlzY21hcDsKc3RydWN0IGFkZnNf ZGlyX29wczsKCgoKCnN0cnVjdCBhZGZzX3NiX2luZm8gewogICAgICAgIHN0cnVjdCBhZGZzX2Rp c2NtYXAgKnNfbWFwOwogICAgICAgIHN0cnVjdCBhZGZzX2Rpcl9vcHMgKnNfZGlyOwoKICAgICAg ICB1aWRfdCBzX3VpZDsKICAgICAgICBnaWRfdCBzX2dpZDsKICAgICAgICB1bW9kZV90IHNfb3du ZXJfbWFzazsKICAgICAgICB1bW9kZV90IHNfb3RoZXJfbWFzazsKCiAgICAgICAgX191MzIgc19p ZHNfcGVyX3pvbmU7CiAgICAgICAgX191MzIgc19pZGxlbjsKICAgICAgICBfX3UzMiBzX21hcF9z aXplOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19zaXplOwogICAgICAgIHNpZ25lZCBpbnQgc19t YXAyYmxrOwogICAgICAgIHVuc2lnbmVkIGludCBzX2xvZzJzaGFyZXNpemU7CiAgICAgICAgdW5z aWduZWQgaW50IHNfdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBpbnQgc19uYW1lbGVuOwp9Owoj IDY5NyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMv bGludXgvaW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiIDEKIyAxNCAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9saW51eC9xbng0X2ZzX3NiLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9xbng0X2ZzLmgiIDEKIyA0NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9xbng0 X2ZzLmgiCnN0cnVjdCBxbng0X2lub2RlX2VudHJ5IHsKICAgICAgICBjaGFyIGRpX2ZuYW1lWzE2 XTsKICAgICAgICBxbng0X29mZl90IGRpX3NpemU7CiAgICAgICAgcW54NF94dG50X3QgZGlfZmly c3RfeHRudDsKICAgICAgICBfX3UzMiBkaV94YmxrOwogICAgICAgIF9fczMyIGRpX2Z0aW1lOwog ICAgICAgIF9fczMyIGRpX210aW1lOwogICAgICAgIF9fczMyIGRpX2F0aW1lOwogICAgICAgIF9f czMyIGRpX2N0aW1lOwogICAgICAgIHFueDRfbnh0bnRfdCBkaV9udW1feHRudHM7CiAgICAgICAg cW54NF9tb2RlX3QgZGlfbW9kZTsKICAgICAgICBxbng0X211aWRfdCBkaV91aWQ7CiAgICAgICAg cW54NF9tZ2lkX3QgZGlfZ2lkOwogICAgICAgIHFueDRfbmxpbmtfdCBkaV9ubGluazsKICAgICAg ICBfX3U4IGRpX3plcm9bNF07CiAgICAgICAgcW54NF9mdHlwZV90IGRpX3R5cGU7CiAgICAgICAg X191OCBkaV9zdGF0dXM7Cn07CgpzdHJ1Y3QgcW54NF9saW5rX2luZm8gewogICAgICAgIGNoYXIg ZGxfZm5hbWVbNDhdOwogICAgICAgIF9fdTMyIGRsX2lub2RlX2JsazsKICAgICAgICBfX3U4IGRs X2lub2RlX25keDsKICAgICAgICBfX3U4IGRsX3NwYXJlWzEwXTsKICAgICAgICBfX3U4IGRsX3N0 YXR1czsKfTsKCnN0cnVjdCBxbng0X3hibGsgewogICAgICAgIF9fdTMyIHhibGtfbmV4dF94Ymxr OwogICAgICAgIF9fdTMyIHhibGtfcHJldl94YmxrOwogICAgICAgIF9fdTggeGJsa19udW1feHRu dHM7CiAgICAgICAgX191OCB4YmxrX3NwYXJlWzNdOwogICAgICAgIF9fczMyIHhibGtfbnVtX2Js b2NrczsKICAgICAgICBxbng0X3h0bnRfdCB4YmxrX3h0bnRzWzYwXTsKICAgICAgICBjaGFyIHhi bGtfc2lnbmF0dXJlWzhdOwogICAgICAgIHFueDRfeHRudF90IHhibGtfZmlyc3RfeHRudDsKfTsK CnN0cnVjdCBxbng0X3N1cGVyX2Jsb2NrIHsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRy eSBSb290RGlyOwogICAgICAgIHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IElub2RlOwogICAgICAg IHN0cnVjdCBxbng0X2lub2RlX2VudHJ5IEJvb3Q7CiAgICAgICAgc3RydWN0IHFueDRfaW5vZGVf ZW50cnkgQWx0Qm9vdDsKfTsKIyAxMDAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcW54 NF9mcy5oIgpleHRlcm4gc3RydWN0IGRlbnRyeSAqcW54NF9sb29rdXAoc3RydWN0IGlub2RlICpk aXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHFueDRfY291 bnRfZnJlZV9ibG9ja3Moc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiB1bnNpZ25lZCBs b25nIHFueDRfYmxvY2tfbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvbmcgaWJsb2NrKTsKCmV4 dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfZ2V0YmxrKHN0cnVjdCBpbm9kZSAqLCBpbnQs IGludCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnFueDRfYnJlYWQoc3RydWN0IGlub2Rl ICosIGludCwgaW50KTsKCmV4dGVybiBpbnQgcW54NF9jcmVhdGUoc3RydWN0IGlub2RlICpkaXIs IHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50IG1vZGUpOwpleHRlcm4gc3RydWN0IGlub2RlX29w ZXJhdGlvbnMgcW54NF9maWxlX2lub2RlX29wZXJhdGlvbnM7CmV4dGVybiBzdHJ1Y3QgaW5vZGVf b3BlcmF0aW9ucyBxbng0X2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gc3RydWN0IGZpbGVf b3BlcmF0aW9ucyBxbng0X2ZpbGVfb3BlcmF0aW9uczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJh dGlvbnMgcW54NF9kaXJfb3BlcmF0aW9uczsKZXh0ZXJuIGludCBxbng0X2lzX2ZyZWUoc3RydWN0 IHN1cGVyX2Jsb2NrICpzYiwgbG9uZyBibG9jayk7CmV4dGVybiBpbnQgcW54NF9zZXRfYml0bWFw KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGxvbmcgYmxvY2ssIGludCBidXN5KTsKZXh0ZXJuIGlu dCBxbng0X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnks IGludCBtb2RlKTsKZXh0ZXJuIHZvaWQgcW54NF90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2Rl KTsKZXh0ZXJuIHZvaWQgcW54NF9mcmVlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRl cm4gaW50IHFueDRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpOwpleHRlcm4gaW50IHFueDRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50 cnkgKmRlbnRyeSk7CmV4dGVybiBpbnQgcW54NF9zeW5jX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUs IHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgaW50KTsKZXh0ZXJuIGludCBxbng0X3N5bmNfaW5vZGUo c3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBpbnQgcW54NF9nZXRfYmxvY2soc3RydWN0IGlu b2RlICppbm9kZSwgbG9uZyBpYmxvY2ssIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCBjcmVh dGUpOwojIDE1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3FueDRfZnNfc2IuaCIgMgoK CgoKCnN0cnVjdCBxbng0X3NiX2luZm8gewogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqc2Jf YnVmOwogICAgICAgIHN0cnVjdCBxbng0X3N1cGVyX2Jsb2NrICpzYjsKICAgICAgICB1bnNpZ25l ZCBpbnQgVmVyc2lvbjsKICAgICAgICBzdHJ1Y3QgcW54NF9pbm9kZV9lbnRyeSAqQml0TWFwOwp9 OwojIDY5OCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9z cmMvbGludXgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIiAxCgoKCgoKCgojIDEgIi91 c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHF1ZXVlLmgiIDEKIyAzOCAiL3Vzci9zcmMvbGlu dXgvaW5jbHVkZS9saW51eC90cXVldWUuaCIKc3RydWN0IHRxX3N0cnVjdCB7CiAgICAgICAgc3Ry dWN0IGxpc3RfaGVhZCBsaXN0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3luYzsKICAgICAgICB2 b2lkICgqcm91dGluZSkodm9pZCAqKTsKICAgICAgICB2b2lkICpkYXRhOwp9OwojIDY0ICIvdXNy L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3RxdWV1ZS5oIgp0eXBlZGVmIHN0cnVjdCBsaXN0X2hl YWQgdGFza19xdWV1ZTsKCgoKCmV4dGVybiB0YXNrX3F1ZXVlIHRxX3RpbWVyLCB0cV9pbW1lZGlh dGUsIHRxX2Rpc2s7CiMgOTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHF1ZXVlLmgi CmV4dGVybiBzcGlubG9ja190IHRxdWV1ZV9sb2NrOwoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IHF1 ZXVlX3Rhc2soc3RydWN0IHRxX3N0cnVjdCAqYmhfcG9pbnRlciwgdGFza19xdWV1ZSAqYmhfbGlz dCkKewogICAgICAgIGludCByZXQgPSAwOwogICAgICAgIGlmICghdGVzdF9hbmRfc2V0X2JpdCgw LCZiaF9wb2ludGVyLT5zeW5jKSkgewogICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFn czsKICAgICAgICAgICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hmbCA7IHBv cGwgJTAgOyBjbGkiOiI9ZyIgKGZsYWdzKTogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZ0cXVldWVf bG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmYmhfcG9p bnRlci0+bGlzdCwgYmhfbGlzdCk7CiAgICAgICAgICAgICAgICBkbyB7IHNwaW5fdW5sb2NrKCZ0 cXVldWVfbG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJwdXNobCAlMCA7IHBvcGZsIjogOiJn IiAoZmxhZ3MpOiJtZW1vcnkiLCAiY2MiKTsgfSB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBy ZXQgPSAxOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0Owp9CgoKCgoKZXh0ZXJuIHZvaWQg X19ydW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KTsKCnN0YXRpYyBpbmxpbmUgdm9pZCBy dW5fdGFza19xdWV1ZSh0YXNrX3F1ZXVlICpsaXN0KQp7CiAgICAgICAgaWYgKCghbGlzdF9lbXB0 eSgmKmxpc3QpKSkKICAgICAgICAgICAgICAgIF9fcnVuX3Rhc2tfcXVldWUobGlzdCk7Cn0KIyA5 ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiIDIKIyAyNiAi L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgpzdHJ1Y3QgcmVp c2VyZnNfc3VwZXJfYmxvY2sKewogIF9fdTMyIHNfYmxvY2tfY291bnQ7CiAgX191MzIgc19mcmVl X2Jsb2NrczsKICBfX3UzMiBzX3Jvb3RfYmxvY2s7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrOwog IF9fdTMyIHNfam91cm5hbF9kZXY7CiMgNDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv cmVpc2VyZnNfZnNfc2IuaCIKICBfX3UzMiBzX29yaWdfam91cm5hbF9zaXplOwogIF9fdTMyIHNf am91cm5hbF90cmFuc19tYXggOwogIF9fdTMyIHNfam91cm5hbF9ibG9ja19jb3VudCA7CiAgX191 MzIgc19qb3VybmFsX21heF9iYXRjaCA7CiAgX191MzIgc19qb3VybmFsX21heF9jb21taXRfYWdl IDsKICBfX3UzMiBzX2pvdXJuYWxfbWF4X3RyYW5zX2FnZSA7CiAgX191MTYgc19ibG9ja3NpemU7 CiAgX191MTYgc19vaWRfbWF4c2l6ZTsKICBfX3UxNiBzX29pZF9jdXJzaXplOwogIF9fdTE2IHNf c3RhdGU7CiAgY2hhciBzX21hZ2ljWzEyXTsKICBfX3UzMiBzX2hhc2hfZnVuY3Rpb25fY29kZTsK ICBfX3UxNiBzX3RyZWVfaGVpZ2h0OwogIF9fdTE2IHNfYm1hcF9ucjsKICBfX3UxNiBzX3ZlcnNp b247CgoKCgogIF9fdTE2IHNfcmVzZXJ2ZWQ7CiAgX191MzIgc19pbm9kZV9nZW5lcmF0aW9uOwog IF9fdTMyIHNfZmxhZ3M7CiAgdW5zaWduZWQgY2hhciBzX3V1aWRbMTZdOwogIHVuc2lnbmVkIGNo YXIgc19sYWJlbFsxNl07CiAgY2hhciBzX3VudXNlZFs4OF0gOwoKCgp9IF9fYXR0cmlidXRlX18g KChfX3BhY2tlZF9fKSk7Cgp0eXBlZGVmIGVudW0gewogIHJlaXNlcmZzX2F0dHJzX2NsZWFyZWQg PSAweDAwMDAwMDAxLAp9IHJlaXNlcmZzX3N1cGVyX2Jsb2NrX2ZsYWdzOwojIDEzMSAiL3Vzci9z cmMvbGludXgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19zYi5oIgpzdHJ1Y3QgcmVpc2VyZnNf c3VwZXJfYmxvY2tfdjEKewogIF9fdTMyIHNfYmxvY2tfY291bnQ7CiAgX191MzIgc19mcmVlX2Js b2NrczsKICBfX3UzMiBzX3Jvb3RfYmxvY2s7CiAgX191MzIgc19qb3VybmFsX2Jsb2NrOwogIF9f dTMyIHNfam91cm5hbF9kZXY7CiAgX191MzIgc19vcmlnX2pvdXJuYWxfc2l6ZTsKICBfX3UzMiBz X2pvdXJuYWxfdHJhbnNfbWF4IDsKICBfX3UzMiBzX2pvdXJuYWxfYmxvY2tfY291bnQgOwogIF9f dTMyIHNfam91cm5hbF9tYXhfYmF0Y2ggOwogIF9fdTMyIHNfam91cm5hbF9tYXhfY29tbWl0X2Fn ZSA7CiAgX191MzIgc19qb3VybmFsX21heF90cmFuc19hZ2UgOwogIF9fdTE2IHNfYmxvY2tzaXpl OwogIF9fdTE2IHNfb2lkX21heHNpemU7CiAgX191MTYgc19vaWRfY3Vyc2l6ZTsKICBfX3UxNiBz X3N0YXRlOwogIGNoYXIgc19tYWdpY1sxNl07CiAgX191MTYgc190cmVlX2hlaWdodDsKICBfX3Ux NiBzX2JtYXBfbnI7CiAgX191MzIgc19yZXNlcnZlZDsKfSBfX2F0dHJpYnV0ZV9fICgoX19wYWNr ZWRfXykpOwojIDIxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mc19z Yi5oIgpzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSB7CiAgc3RydWN0IGJ1ZmZlcl9oZWFk ICpiaCA7CiAga2Rldl90IGRldiA7CiAgdW5zaWduZWQgbG9uZyBibG9ja25yIDsKICBsb25nIHN0 YXRlIDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9saXN0ICpqbGlzdCA7CiAgc3RydWN0IHJl aXNlcmZzX2pvdXJuYWxfY25vZGUgKm5leHQgOwogIHN0cnVjdCByZWlzZXJmc19qb3VybmFsX2Nu b2RlICpwcmV2IDsKICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqaHByZXYgOwogIHN0 cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpobmV4dCA7Cn07CgpzdHJ1Y3QgcmVpc2VyZnNf Yml0bWFwX25vZGUgewogIGludCBpZCA7CiAgY2hhciAqZGF0YSA7CiAgc3RydWN0IGxpc3RfaGVh ZCBsaXN0IDsKfSA7CgpzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAgewogIHN0cnVjdCByZWlz ZXJmc19qb3VybmFsX2xpc3QgKmpvdXJuYWxfbGlzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2JpdG1h cF9ub2RlICoqYml0bWFwcyA7Cn0gOwoKCgoKc3RydWN0IHJlaXNlcmZzX3RyYW5zYWN0aW9uX2hh bmRsZSB7CgogIGNoYXIgKnRfY2FsbGVyIDsKICBpbnQgdF9ibG9ja3NfbG9nZ2VkIDsKICBpbnQg dF9ibG9ja3NfYWxsb2NhdGVkIDsKICB1bnNpZ25lZCBsb25nIHRfdHJhbnNfaWQgOwogIHN0cnVj dCBzdXBlcl9ibG9jayAqdF9zdXBlciA7Cgp9IDsKCgoKCgoKCnN0cnVjdCByZWlzZXJmc19qb3Vy bmFsX2xpc3QgewogIHVuc2lnbmVkIGxvbmcgal9zdGFydCA7CiAgdW5zaWduZWQgbG9uZyBqX2xl biA7CiAgYXRvbWljX3Qgal9ub256ZXJvbGVuIDsKICBhdG9taWNfdCBqX2NvbW1pdF9sZWZ0IDsK ICBhdG9taWNfdCBqX2ZsdXNoaW5nIDsKICBhdG9taWNfdCBqX2NvbW1pdF9mbHVzaGluZyA7CiAg YXRvbWljX3Qgal9vbGRlcl9jb21taXRzX2RvbmUgOwogIHVuc2lnbmVkIGxvbmcgal90cmFuc19p ZCA7CiAgdGltZV90IGpfdGltZXN0YW1wIDsKICBzdHJ1Y3QgcmVpc2VyZnNfbGlzdF9iaXRtYXAg KmpfbGlzdF9iaXRtYXAgOwogIHN0cnVjdCBidWZmZXJfaGVhZCAqal9jb21taXRfYmggOwogIHN0 cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX3JlYWxibG9jayA7CiAgc3RydWN0IHJlaXNl cmZzX2pvdXJuYWxfY25vZGUgKmpfZnJlZWRsaXN0IDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2Nv bW1pdF93YWl0IDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX2ZsdXNoX3dhaXQgOwp9IDsKCnN0cnVj dCByZWlzZXJmc19wYWdlX2xpc3QgOwoKc3RydWN0IHJlaXNlcmZzX2pvdXJuYWwgewogIHN0cnVj dCBidWZmZXJfaGVhZCAqKiBqX2FwX2Jsb2NrcyA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxf Y25vZGUgKmpfbGFzdCA7CiAgc3RydWN0IHJlaXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfZmlyc3Qg OwoKICBsb25nIGpfc3RhdGUgOwogIHVuc2lnbmVkIGxvbmcgal90cmFuc19pZCA7CiAgdW5zaWdu ZWQgbG9uZyBqX21vdW50X2lkIDsKICB1bnNpZ25lZCBsb25nIGpfc3RhcnQgOwogIHVuc2lnbmVk IGxvbmcgal9sZW4gOwogIHVuc2lnbmVkIGxvbmcgal9sZW5fYWxsb2MgOwogIGF0b21pY190IGpf d2NvdW50IDsKICB1bnNpZ25lZCBsb25nIGpfYmNvdW50IDsKICB1bnNpZ25lZCBsb25nIGpfZmly c3RfdW5mbHVzaGVkX29mZnNldCA7CiAgdW5zaWduZWQgbG9uZyBqX2xhc3RfZmx1c2hfdHJhbnNf aWQgOwogIHN0cnVjdCBidWZmZXJfaGVhZCAqal9oZWFkZXJfYmggOwoKCgoKICBzdHJ1Y3QgcmVp c2VyZnNfcGFnZV9saXN0ICpqX2ZsdXNoX3BhZ2VzIDsKICB0aW1lX3Qgal90cmFuc19zdGFydF90 aW1lIDsKICB3YWl0X3F1ZXVlX2hlYWRfdCBqX3dhaXQgOwogIGF0b21pY190IGpfd2xvY2sgOwog IHdhaXRfcXVldWVfaGVhZF90IGpfam9pbl93YWl0IDsKICBhdG9taWNfdCBqX2psb2NrIDsKICBp bnQgal9qb3VybmFsX2xpc3RfaW5kZXggOwogIGludCBqX2xpc3RfYml0bWFwX2luZGV4IDsKICBp bnQgal9tdXN0X3dhaXQgOwogIGludCBqX25leHRfZnVsbF9mbHVzaCA7CiAgaW50IGpfbmV4dF9h c3luY19mbHVzaCA7CgogIGludCBqX2Nub2RlX3VzZWQgOwogIGludCBqX2Nub2RlX2ZyZWUgOwoK ICBzdHJ1Y3QgcmVpc2VyZnNfam91cm5hbF9jbm9kZSAqal9jbm9kZV9mcmVlX2xpc3QgOwogIHN0 cnVjdCByZWlzZXJmc19qb3VybmFsX2Nub2RlICpqX2Nub2RlX2ZyZWVfb3JpZyA7CgogIGludCBq X2ZyZWVfYml0bWFwX25vZGVzIDsKICBpbnQgal91c2VkX2JpdG1hcF9ub2RlcyA7CiAgc3RydWN0 IGxpc3RfaGVhZCBqX2JpdG1hcF9ub2RlcyA7CiAgc3RydWN0IGlub2RlIGpfZHVtbXlfaW5vZGUg OwogIHN0cnVjdCByZWlzZXJmc19saXN0X2JpdG1hcCBqX2xpc3RfYml0bWFwWzVdIDsKICBzdHJ1 Y3QgcmVpc2VyZnNfam91cm5hbF9saXN0IGpfam91cm5hbF9saXN0WzY0XSA7CiAgc3RydWN0IHJl aXNlcmZzX2pvdXJuYWxfY25vZGUgKmpfaGFzaF90YWJsZVs4MTkyXSA7CiAgc3RydWN0IHJlaXNl cmZzX2pvdXJuYWxfY25vZGUgKmpfbGlzdF9oYXNoX3RhYmxlWzgxOTJdIDsKCiAgc3RydWN0IGxp c3RfaGVhZCBqX3ByZWFsbG9jX2xpc3Q7Cn07CgoKCgp0eXBlZGVmIF9fdTMyICgqaGFzaGZfdCkg KGNvbnN0IHNpZ25lZCBjaGFyICosIGludCk7CgpzdHJ1Y3QgcHJvY19kaXJfZW50cnk7CiMgMzk3 ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzX3NiLmgiCnR5cGVkZWYg c3RydWN0IHJlaXNlcmZzX3Byb2NfaW5mb19kYXRhCnt9IHJlaXNlcmZzX3Byb2NfaW5mb19kYXRh X3Q7CgoKCnN0cnVjdCByZWlzZXJmc19zYl9pbmZvCnsKICAgIHN0cnVjdCBidWZmZXJfaGVhZCAq IHNfc2JoOwoKCiAgICBzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgKiBzX3JzOwogICAgc3Ry dWN0IGJ1ZmZlcl9oZWFkICoqIHNfYXBfYml0bWFwOwogICAgc3RydWN0IHJlaXNlcmZzX2pvdXJu YWwgKnNfam91cm5hbCA7CiAgICB1bnNpZ25lZCBzaG9ydCBzX21vdW50X3N0YXRlOwoKCiAgICB2 b2lkICgqZW5kX2lvX2hhbmRsZXIpKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQpOwogICAgaGFz aGZfdCBzX2hhc2hfZnVuY3Rpb247CgoKICAgIHVuc2lnbmVkIGxvbmcgc19tb3VudF9vcHQ7CgoK CgogICAgd2FpdF9xdWV1ZV9oZWFkX3Qgc193YWl0OwoKICAgIGF0b21pY190IHNfZ2VuZXJhdGlv bl9jb3VudGVyOwoKICAgIHVuc2lnbmVkIGxvbmcgc19wcm9wZXJ0aWVzOwoKCgogICAgaW50IHNf a21hbGxvY3M7CiAgICBpbnQgc19kaXNrX3JlYWRzOwogICAgaW50IHNfZGlza193cml0ZXM7CiAg ICBpbnQgc19maXhfbm9kZXM7CiAgICBpbnQgc19kb19iYWxhbmNlOwogICAgaW50IHNfdW5uZWVk ZWRfbGVmdF9uZWlnaGJvcjsKICAgIGludCBzX2dvb2Rfc2VhcmNoX2J5X2tleV9yZWFkYTsKICAg IGludCBzX2JtYXBzOwogICAgaW50IHNfYm1hcHNfd2l0aG91dF9zZWFyY2g7CiAgICBpbnQgc19k aXJlY3QyaW5kaXJlY3Q7CiAgICBpbnQgc19pbmRpcmVjdDJkaXJlY3Q7CgoKCiAgICBpbnQgc19p c191bmxpbmtlZF9vazsKICAgIHJlaXNlcmZzX3Byb2NfaW5mb19kYXRhX3Qgc19wcm9jX2luZm9f ZGF0YTsKICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY2RpcjsKfTsKIyA1MTAgIi91c3Iv c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnNfc2IuaCIKdm9pZCByZWlzZXJmc19m aWxlX2J1ZmZlciAoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgsIGludCBsaXN0KTsKaW50IHJlaXNl cmZzX2lzX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqcykgOwppbnQgam91cm5hbF9tYXJrX2Rp cnR5KHN0cnVjdCByZWlzZXJmc190cmFuc2FjdGlvbl9oYW5kbGUgKiwgc3RydWN0IHN1cGVyX2Js b2NrICosIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIDsKaW50IGZsdXNoX29sZF9jb21taXRzKHN0 cnVjdCBzdXBlcl9ibG9jayAqcywgaW50KSA7CmludCBzaG93X3JlaXNlcmZzX2xvY2tzKHZvaWQp IDsKaW50IHJlaXNlcmZzX3Jlc2l6ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQgbG9u ZykgOwojIDY5OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9iZnNfZnNfc2IuaCIgMQojIDEyICIvdXNyL3NyYy9s aW51eC9pbmNsdWRlL2xpbnV4L2Jmc19mc19zYi5oIgpzdHJ1Y3QgYmZzX3NiX2luZm8gewogICAg ICAgIHVuc2lnbmVkIGxvbmcgc2lfYmxvY2tzOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2lfZnJl ZWI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9mcmVlaTsKICAgICAgICB1bnNpZ25lZCBsb25n IHNpX2xmX2lvZmY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaV9sZl9zYmxrOwogICAgICAgIHVu c2lnbmVkIGxvbmcgc2lfbGZfZWJsazsKICAgICAgICB1bnNpZ25lZCBsb25nIHNpX2xhc3RpOwog ICAgICAgIGNoYXIgKiBzaV9pbWFwOwogICAgICAgIHN0cnVjdCBidWZmZXJfaGVhZCAqIHNpX3Ni aDsKICAgICAgICBzdHJ1Y3QgYmZzX3N1cGVyX2Jsb2NrICogc2lfYmZzX3NiOwp9OwojIDcwMCAi L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9saW51eC91ZGZfZnNfc2IuaCIgMQojIDIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L3VkZl9mc19zYi5oIgojcHJhZ21hIHBhY2soMSkKIyAzMCAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9saW51eC91ZGZfZnNfc2IuaCIKc3RydWN0IHVkZl9zcGFyaW5nX2RhdGEKewogICAg ICAgIF9fdTE2IHNfcGFja2V0X2xlbjsKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfc3Bh cl9tYXBbNF07Cn07CgpzdHJ1Y3QgdWRmX3ZpcnR1YWxfZGF0YQp7CiAgICAgICAgX191MzIgc19u dW1fZW50cmllczsKICAgICAgICBfX3UxNiBzX3N0YXJ0X29mZnNldDsKfTsKCnN0cnVjdCB1ZGZf Yml0bWFwCnsKICAgICAgICBfX3UzMiBzX2V4dExlbmd0aDsKICAgICAgICBfX3UzMiBzX2V4dFBv c2l0aW9uOwogICAgICAgIF9fdTE2IHNfbnJfZ3JvdXBzOwogICAgICAgIHN0cnVjdCBidWZmZXJf aGVhZCAqKnNfYmxvY2tfYml0bWFwOwp9OwoKc3RydWN0IHVkZl9wYXJ0X21hcAp7CiAgICAgICAg dW5pb24KICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRmX2JpdG1hcCAqc19iaXRt YXA7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5vZGUgKnNfdGFibGU7CiAgICAgICAgfSBzX3Vz cGFjZTsKICAgICAgICB1bmlvbgogICAgICAgIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB1ZGZf Yml0bWFwICpzX2JpdG1hcDsKICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqc190YWJsZTsK ICAgICAgICB9IHNfZnNwYWNlOwogICAgICAgIF9fdTMyIHNfcGFydGl0aW9uX3Jvb3Q7CiAgICAg ICAgX191MzIgc19wYXJ0aXRpb25fbGVuOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uX3R5cGU7 CiAgICAgICAgX191MTYgc19wYXJ0aXRpb25fbnVtOwogICAgICAgIHVuaW9uCiAgICAgICAgewog ICAgICAgICAgICAgICAgc3RydWN0IHVkZl9zcGFyaW5nX2RhdGEgc19zcGFyaW5nOwogICAgICAg ICAgICAgICAgc3RydWN0IHVkZl92aXJ0dWFsX2RhdGEgc192aXJ0dWFsOwogICAgICAgIH0gc190 eXBlX3NwZWNpZmljOwogICAgICAgIF9fdTMyICgqc19wYXJ0aXRpb25fZnVuYykoc3RydWN0IHN1 cGVyX2Jsb2NrICosIF9fdTMyLCBfX3UxNiwgX191MzIpOwogICAgICAgIF9fdTE2IHNfdm9sdW1l c2VxbnVtOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uX2ZsYWdzOwp9OwoKI3ByYWdtYSBwYWNr KCkKCnN0cnVjdCB1ZGZfc2JfaW5mbwp7CiAgICAgICAgc3RydWN0IHVkZl9wYXJ0X21hcCAqc19w YXJ0bWFwczsKICAgICAgICBfX3U4IHNfdm9saWRlbnRbMzJdOwoKCiAgICAgICAgX191MTYgc19w YXJ0aXRpb25zOwogICAgICAgIF9fdTE2IHNfcGFydGl0aW9uOwoKCiAgICAgICAgX19zMzIgc19z ZXNzaW9uOwogICAgICAgIF9fdTMyIHNfYW5jaG9yWzRdOwogICAgICAgIF9fdTMyIHNfbGFzdGJs b2NrOwoKICAgICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKnNfbHZpZGJoOwoKCiAgICAgICAgbW9k ZV90IHNfdW1hc2s7CiAgICAgICAgZ2lkX3Qgc19naWQ7CiAgICAgICAgdWlkX3Qgc191aWQ7CgoK ICAgICAgICB0aW1lX3Qgc19yZWNvcmR0aW1lOwoKCiAgICAgICAgX191MTYgc19zZXJpYWxudW07 CgoKICAgICAgICBfX3UxNiBzX3VkZnJldjsKCgogICAgICAgIF9fdTMyIHNfZmxhZ3M7CgoKICAg ICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpzX25sc19tYXA7CgoKICAgICAgICBzdHJ1Y3QgaW5vZGUg KnNfdmF0Owp9OwojIDcwMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMg MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIgMQojIDEyICIvdXNy L3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5oIgojIDEgIi91c3Ivc3JjL2xpbnV4 L2luY2x1ZGUvbGludXgvbmNwX21vdW50LmgiIDEKIyAxMiAiL3Vzci9zcmMvbGludXgvaW5jbHVk ZS9saW51eC9uY3BfbW91bnQuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25j cC5oIiAxCiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwLmgiCnN0cnVjdCBu Y3BfcmVxdWVzdF9oZWFkZXIgewogICAgICAgIF9fdTE2IHR5cGUgX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7CiAgICAgICAgX191OCBzZXF1ZW5jZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAg ICAgICBfX3U4IGNvbm5fbG93IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTgg dGFzayBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGNvbm5faGlnaCBfX2F0 dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3U4IGZ1bmN0aW9uIF9fYXR0cmlidXRlX18o KHBhY2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK fTsKCgoKCnN0cnVjdCBuY3BfcmVwbHlfaGVhZGVyIHsKICAgICAgICBfX3UxNiB0eXBlIF9fYXR0 cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygo cGFja2VkKSk7CiAgICAgICAgX191OCBjb25uX2xvdyBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK ICAgICAgICBfX3U4IHRhc2sgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBj b25uX2hpZ2ggX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb21wbGV0aW9u X2NvZGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191OCBjb25uZWN0aW9uX3N0 YXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTggZGF0YVswXSBfX2F0dHJp YnV0ZV9fKChwYWNrZWQpKTsKfTsKCgoKc3RydWN0IG5jcF92b2x1bWVfaW5mbyB7CiAgICAgICAg X191MzIgdG90YWxfYmxvY2tzOwogICAgICAgIF9fdTMyIGZyZWVfYmxvY2tzOwogICAgICAgIF9f dTMyIHB1cmdlYWJsZV9ibG9ja3M7CiAgICAgICAgX191MzIgbm90X3lldF9wdXJnZWFibGVfYmxv Y2tzOwogICAgICAgIF9fdTMyIHRvdGFsX2Rpcl9lbnRyaWVzOwogICAgICAgIF9fdTMyIGF2YWls YWJsZV9kaXJfZW50cmllczsKICAgICAgICBfX3U4IHNlY3RvcnNfcGVyX2Jsb2NrOwogICAgICAg IGNoYXIgdm9sdW1lX25hbWVbKDE2KSArIDFdOwp9OwojIDExMiAiL3Vzci9zcmMvbGludXgvaW5j bHVkZS9saW51eC9uY3AuaCIKc3RydWN0IG53X2luZm9fc3RydWN0IHsKICAgICAgICBfX3UzMiBz cGFjZUFsbG9jIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGF0dHJpYnV0 ZXMgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgZmxhZ3MgX19hdHRyaWJ1 dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgZGF0YVN0cmVhbVNpemUgX19hdHRyaWJ1dGVf XygocGFja2VkKSk7CiAgICAgICAgX191MzIgdG90YWxTdHJlYW1TaXplIF9fYXR0cmlidXRlX18o KHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG51bWJlck9mU3RyZWFtcyBfX2F0dHJpYnV0ZV9fKChw YWNrZWQpKTsKICAgICAgICBfX3UxNiBjcmVhdGlvblRpbWUgX19hdHRyaWJ1dGVfXygocGFja2Vk KSk7CiAgICAgICAgX191MTYgY3JlYXRpb25EYXRlIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog ICAgICAgIF9fdTMyIGNyZWF0b3JJRCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf X3UxNiBtb2RpZnlUaW1lIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IG1v ZGlmeURhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgbW9kaWZpZXJJ RCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBsYXN0QWNjZXNzRGF0ZSBf X2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlVGltZSBfX2F0dHJp YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UxNiBhcmNoaXZlRGF0ZSBfX2F0dHJpYnV0ZV9f KChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBhcmNoaXZlcklEIF9fYXR0cmlidXRlX18oKHBhY2tl ZCkpOwogICAgICAgIF9fdTE2IGluaGVyaXRlZFJpZ2h0c01hc2sgX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7CiAgICAgICAgX191MzIgZGlyRW50TnVtIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog ICAgICAgIF9fdTMyIERvc0Rpck51bSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBf X3UzMiB2b2xOdW1iZXIgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgRUFE YXRhU2l6ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBFQUtleUNvdW50 IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIEVBS2V5U2l6ZSBfX2F0dHJp YnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBOU0NyZWF0b3IgX19hdHRyaWJ1dGVfXygo cGFja2VkKSk7CiAgICAgICAgX191OCBuYW1lTGVuIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwog ICAgICAgIF9fdTggZW50cnlOYW1lWzI1Nl0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cn07CiMg MTU2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcC5oIgpzdHJ1Y3QgbndfbW9kaWZ5 X2Rvc19pbmZvIHsKICAgICAgICBfX3UzMiBhdHRyaWJ1dGVzIF9fYXR0cmlidXRlX18oKHBhY2tl ZCkpOwogICAgICAgIF9fdTE2IGNyZWF0aW9uRGF0ZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsK ICAgICAgICBfX3UxNiBjcmVhdGlvblRpbWUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAg ICAgX191MzIgY3JlYXRvcklEIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2 IG1vZGlmeURhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MTYgbW9kaWZ5 VGltZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKICAgICAgICBfX3UzMiBtb2RpZmllcklEIF9f YXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVEYXRlIF9fYXR0cmli dXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTE2IGFyY2hpdmVUaW1lIF9fYXR0cmlidXRlX18o KHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGFyY2hpdmVySUQgX19hdHRyaWJ1dGVfXygocGFja2Vk KSk7CiAgICAgICAgX191MTYgbGFzdEFjY2Vzc0RhdGUgX19hdHRyaWJ1dGVfXygocGFja2VkKSk7 CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VHcmFudE1hc2sgX19hdHRyaWJ1dGVfXygocGFja2Vk KSk7CiAgICAgICAgX191MTYgaW5oZXJpdGFuY2VSZXZva2VNYXNrIF9fYXR0cmlidXRlX18oKHBh Y2tlZCkpOwogICAgICAgIF9fdTMyIG1heGltdW1TcGFjZSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp KTsKfTsKCnN0cnVjdCBud19zZWFyY2hfc2VxdWVuY2UgewogICAgICAgIF9fdTggdm9sTnVtYmVy IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwogICAgICAgIF9fdTMyIGRpckJhc2UgX19hdHRyaWJ1 dGVfXygocGFja2VkKSk7CiAgICAgICAgX191MzIgc2VxdWVuY2UgX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7Cn07CiMgMTMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvbmNwX21vdW50Lmgi IDIKIyAyNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfbW91bnQuaCIKc3RydWN0 IG5jcF9tb3VudF9kYXRhIHsKICAgICAgICBpbnQgdmVyc2lvbjsKICAgICAgICB1bnNpZ25lZCBp bnQgbmNwX2ZkOwogICAgICAgIF9fa2VybmVsX3VpZF90IG1vdW50ZWRfdWlkOwogICAgICAgIF9f a2VybmVsX3BpZF90IHdkb2dfcGlkOwoKICAgICAgICB1bnNpZ25lZCBjaGFyIG1vdW50ZWRfdm9s WygxNikgKyAxXTsKICAgICAgICB1bnNpZ25lZCBpbnQgdGltZV9vdXQ7CgogICAgICAgIHVuc2ln bmVkIGludCByZXRyeV9jb3VudDsKICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CgogICAgICAg IF9fa2VybmVsX3VpZF90IHVpZDsKICAgICAgICBfX2tlcm5lbF9naWRfdCBnaWQ7CiAgICAgICAg X19rZXJuZWxfbW9kZV90IGZpbGVfbW9kZTsKICAgICAgICBfX2tlcm5lbF9tb2RlX3QgZGlyX21v ZGU7Cn07CgoKCnN0cnVjdCBuY3BfbW91bnRfZGF0YV92NCB7CiAgICAgICAgaW50IHZlcnNpb247 CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgbW91 bnRlZF91aWQ7CgogICAgICAgIGxvbmcgd2RvZ19waWQ7CgogICAgICAgIHVuc2lnbmVkIGludCBu Y3BfZmQ7CiAgICAgICAgdW5zaWduZWQgaW50IHRpbWVfb3V0OwoKICAgICAgICB1bnNpZ25lZCBp bnQgcmV0cnlfY291bnQ7CgoKCiAgICAgICAgdW5zaWduZWQgbG9uZyB1aWQ7CiAgICAgICAgdW5z aWduZWQgbG9uZyBnaWQ7CgogICAgICAgIHVuc2lnbmVkIGxvbmcgZmlsZV9tb2RlOwogICAgICAg IHVuc2lnbmVkIGxvbmcgZGlyX21vZGU7Cn07CgoKCnN0cnVjdCBuY3BfbW91bnRfZGF0YV9rZXJu ZWwgewogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgaW50IGlu dF9mbGFnczsKCiAgICAgICAgX19rZXJuZWxfdWlkMzJfdCBtb3VudGVkX3VpZDsKICAgICAgICBf X2tlcm5lbF9waWRfdCB3ZG9nX3BpZDsKICAgICAgICB1bnNpZ25lZCBpbnQgbmNwX2ZkOwogICAg ICAgIHVuc2lnbmVkIGludCB0aW1lX291dDsKCiAgICAgICAgdW5zaWduZWQgaW50IHJldHJ5X2Nv dW50OwogICAgICAgIHVuc2lnbmVkIGNoYXIgbW91bnRlZF92b2xbKDE2KSArIDFdOwogICAgICAg IF9fa2VybmVsX3VpZDMyX3QgdWlkOwogICAgICAgIF9fa2VybmVsX2dpZDMyX3QgZ2lkOwogICAg ICAgIF9fa2VybmVsX21vZGVfdCBmaWxlX21vZGU7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IGRp cl9tb2RlOwp9OwojIDEzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L25jcF9mc19zYi5o IiAyCgoKCgoKc3RydWN0IG5jcF9zZXJ2ZXIgewoKICAgICAgICBzdHJ1Y3QgbmNwX21vdW50X2Rh dGFfa2VybmVsIG07CgoKCiAgICAgICAgX191OCBuYW1lX3NwYWNlWyg2NCkgKyAyXTsKCiAgICAg ICAgc3RydWN0IGZpbGUgKm5jcF9maWxwOwoKICAgICAgICB1OCBzZXF1ZW5jZTsKICAgICAgICB1 OCB0YXNrOwogICAgICAgIHUxNiBjb25uZWN0aW9uOwoKICAgICAgICB1OCBjb21wbGV0aW9uOwog ICAgICAgIHU4IGNvbm5fc3RhdHVzOwoKCgogICAgICAgIGludCBidWZmZXJfc2l6ZTsKCiAgICAg ICAgaW50IHJlcGx5X3NpemU7CgogICAgICAgIGludCBwYWNrZXRfc2l6ZTsKICAgICAgICB1bnNp Z25lZCBjaGFyICpwYWNrZXQ7CgoKICAgICAgICBpbnQgbG9jazsKICAgICAgICBzdHJ1Y3Qgc2Vt YXBob3JlIHNlbTsKCiAgICAgICAgaW50IGN1cnJlbnRfc2l6ZTsKICAgICAgICBpbnQgaGFzX3N1 YmZ1bmN0aW9uOwogICAgICAgIGludCBuY3BfcmVwbHlfc2l6ZTsKCiAgICAgICAgaW50IHJvb3Rf c2V0dXBlZDsKCgogICAgICAgIGludCBzaWduX3dhbnRlZDsKICAgICAgICBpbnQgc2lnbl9hY3Rp dmU7CiAgICAgICAgY2hhciBzaWduX3Jvb3RbOF07CiAgICAgICAgY2hhciBzaWduX2xhc3RbMTZd OwoKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIGludCBhdXRoX3R5cGU7CiAgICAg ICAgICAgICAgICBzaXplX3Qgb2JqZWN0X25hbWVfbGVuOwogICAgICAgICAgICAgICAgdm9pZCog b2JqZWN0X25hbWU7CiAgICAgICAgICAgICAgICBpbnQgb2JqZWN0X3R5cGU7CiAgICAgICAgfSBh dXRoOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgc2l6ZV90IGxlbjsKICAgICAg ICAgICAgICAgIHZvaWQqIGRhdGE7CiAgICAgICAgfSBwcml2OwoKCiAgICAgICAgc3RydWN0IG5s c190YWJsZSAqbmxzX3ZvbDsKICAgICAgICBzdHJ1Y3QgbmxzX3RhYmxlICpubHNfaW87CgoKICAg ICAgICBpbnQgZGVudHJ5X3R0bDsKCgogICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKfTsKIyA5 MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9uY3BfZnNfc2IuaCIKc3RhdGljIGlubGlu ZSBpbnQgbmNwX2Nvbm5fdmFsaWQoc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikKewogICAgICAg IHJldHVybiAoKHNlcnZlci0+Y29ubl9zdGF0dXMgJiAweDExKSA9PSAwKTsKfQoKc3RhdGljIGlu bGluZSB2b2lkIG5jcF9pbnZhbGlkYXRlX2Nvbm4oc3RydWN0IG5jcF9zZXJ2ZXIgKnNlcnZlcikK ewogICAgICAgIHNlcnZlci0+Y29ubl9zdGF0dXMgfD0gMHgwMTsKfQojIDcwMiAiL3Vzci9zcmMv bGludXgvaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC91c2JkZXZfZnNfc2IuaCIgMQpzdHJ1Y3QgdXNiZGV2X3NiX2luZm8gewogICAgICAgIHN0 cnVjdCBsaXN0X2hlYWQgc2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBpbGlzdDsKICAg ICAgICB1aWRfdCBkZXZ1aWQ7CiAgICAgICAgZ2lkX3QgZGV2Z2lkOwogICAgICAgIHVtb2RlX3Qg ZGV2bW9kZTsKICAgICAgICB1aWRfdCBidXN1aWQ7CiAgICAgICAgZ2lkX3QgYnVzZ2lkOwogICAg ICAgIHVtb2RlX3QgYnVzbW9kZTsKICAgICAgICB1aWRfdCBsaXN0dWlkOwogICAgICAgIGdpZF90 IGxpc3RnaWQ7CiAgICAgICAgdW1vZGVfdCBsaXN0bW9kZTsKfTsKIyA3MDMgIi91c3Ivc3JjL2xp bnV4L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp bnV4L2pmZnMyX2ZzX3NiLmgiIDEKCgoKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9jb21wbGV0aW9uLmgiIDEKIyAxMyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9j b21wbGV0aW9uLmgiCnN0cnVjdCBjb21wbGV0aW9uIHsKICAgICAgICB1bnNpZ25lZCBpbnQgZG9u ZTsKICAgICAgICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0Owp9OwoKCgoKCgoKc3RhdGljIGlubGlu ZSB2b2lkIGluaXRfY29tcGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAqeCkKewogICAgICAgIHgt PmRvbmUgPSAwOwogICAgICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQoJngtPndhaXQpOwp9CgpleHRl cm4gdm9pZCB3YWl0X2Zvcl9jb21wbGV0aW9uKHN0cnVjdCBjb21wbGV0aW9uICopIF9fYXR0cmli dXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgY29tcGxldGUoc3RydWN0IGNvbXBsZXRp b24gKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwojIDkgIi91c3Ivc3JjL2xpbnV4L2lu Y2x1ZGUvbGludXgvamZmczJfZnNfc2IuaCIgMgojIDIxICIvdXNyL3NyYy9saW51eC9pbmNsdWRl L2xpbnV4L2pmZnMyX2ZzX3NiLmgiCnN0cnVjdCBqZmZzMl9zYl9pbmZvIHsKICAgICAgICBzdHJ1 Y3QgbXRkX2luZm8gKm10ZDsKCiAgICAgICAgX191MzIgaGlnaGVzdF9pbm87CiAgICAgICAgdW5z aWduZWQgaW50IGZsYWdzOwogICAgICAgIHNwaW5sb2NrX3Qgbm9kZWxpc3RfbG9jazsKCgogICAg ICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ2NfdGFzazsKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3Jl IGdjX3RocmVhZF9zdGFydDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiBnY190aHJlYWRfZXhp dDsKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIGFsbG9jX3NlbTsKCgoKCiAgICAgICAgX191 MzIgZmxhc2hfc2l6ZTsKICAgICAgICBfX3UzMiB1c2VkX3NpemU7CiAgICAgICAgX191MzIgZGly dHlfc2l6ZTsKICAgICAgICBfX3UzMiBmcmVlX3NpemU7CiAgICAgICAgX191MzIgZXJhc2luZ19z aXplOwogICAgICAgIF9fdTMyIGJhZF9zaXplOwogICAgICAgIF9fdTMyIHNlY3Rvcl9zaXplOwoK CgogICAgICAgIF9fdTMyIG5yX2ZyZWVfYmxvY2tzOwogICAgICAgIF9fdTMyIG5yX2VyYXNpbmdf YmxvY2tzOwoKICAgICAgICBfX3UzMiBucl9ibG9ja3M7CiAgICAgICAgc3RydWN0IGpmZnMyX2Vy YXNlYmxvY2sgKmJsb2NrczsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKm5leHRi bG9jazsKCiAgICAgICAgc3RydWN0IGpmZnMyX2VyYXNlYmxvY2sgKmdjYmxvY2s7CgogICAgICAg IHN0cnVjdCBsaXN0X2hlYWQgY2xlYW5fbGlzdDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGRp cnR5X2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBlcmFzaW5nX2xpc3Q7CiAgICAgICAg c3RydWN0IGxpc3RfaGVhZCBlcmFzZV9wZW5kaW5nX2xpc3Q7CiAgICAgICAgc3RydWN0IGxpc3Rf aGVhZCBlcmFzZV9jb21wbGV0ZV9saXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZnJlZV9s aXN0OwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgYmFkX2xpc3Q7CiAgICAgICAgc3RydWN0IGxp c3RfaGVhZCBiYWRfdXNlZF9saXN0OwoKICAgICAgICBzcGlubG9ja190IGVyYXNlX2NvbXBsZXRp b25fbG9jazsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgZXJhc2Vfd2FpdDsKICAgICAgICBz dHJ1Y3QgamZmczJfaW5vZGVfY2FjaGUgKmlub2NhY2hlX2xpc3RbMV07CiAgICAgICAgc3Bpbmxv Y2tfdCBpbm9jYWNoZV9sb2NrOwp9OwojIDcwNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51 eC9mcy5oIiAyCgpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCBzdXBlcl9ibG9ja3M7CmV4dGVybiBz cGlubG9ja190IHNiX2xvY2s7CgoKCnN0cnVjdCBzdXBlcl9ibG9jayB7CiAgICAgICAgc3RydWN0 IGxpc3RfaGVhZCBzX2xpc3Q7CiAgICAgICAga2Rldl90IHNfZGV2OwogICAgICAgIHVuc2lnbmVk IGxvbmcgc19ibG9ja3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBzX2Jsb2Nrc2l6ZV9iaXRz OwogICAgICAgIHVuc2lnbmVkIGNoYXIgc19kaXJ0OwogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9u ZyBzX21heGJ5dGVzOwogICAgICAgIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpzX3R5cGU7CiAg ICAgICAgc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgKnNfb3A7CiAgICAgICAgc3RydWN0IGRxdW90 X29wZXJhdGlvbnMgKmRxX29wOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc19mbGFnczsKICAgICAg ICB1bnNpZ25lZCBsb25nIHNfbWFnaWM7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqc19yb290Owog ICAgICAgIHN0cnVjdCByd19zZW1hcGhvcmUgc191bW91bnQ7CiAgICAgICAgc3RydWN0IHNlbWFw aG9yZSBzX2xvY2s7CiAgICAgICAgaW50IHNfY291bnQ7CiAgICAgICAgYXRvbWljX3Qgc19hY3Rp dmU7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgc19kaXJ0eTsKICAgICAgICBzdHJ1Y3QgbGlz dF9oZWFkIHNfbG9ja2VkX2lub2RlczsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNfZmlsZXM7 CgogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKnNfYmRldjsKICAgICAgICBzdHJ1Y3QgbGlz dF9oZWFkIHNfaW5zdGFuY2VzOwogICAgICAgIHN0cnVjdCBxdW90YV9tb3VudF9vcHRpb25zIHNf ZHF1b3Q7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCBtaW5peF9zYl9p bmZvIG1pbml4X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDJfc2JfaW5mbyBleHQyX3Ni OwogICAgICAgICAgICAgICAgc3RydWN0IGV4dDNfc2JfaW5mbyBleHQzX3NiOwogICAgICAgICAg ICAgICAgc3RydWN0IGhwZnNfc2JfaW5mbyBocGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0 IG50ZnNfc2JfaW5mbyBudGZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IG1zZG9zX3NiX2lu Zm8gbXNkb3Nfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXNvZnNfc2JfaW5mbyBpc29mc19z YjsKICAgICAgICAgICAgICAgIHN0cnVjdCBuZnNfc2JfaW5mbyBuZnNfc2I7CiAgICAgICAgICAg ICAgICBzdHJ1Y3Qgc3lzdl9zYl9pbmZvIHN5c3Zfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg YWZmc19zYl9pbmZvIGFmZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgdWZzX3NiX2luZm8g dWZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGVmc19zYl9pbmZvIGVmc19zYjsKICAgICAg ICAgICAgICAgIHN0cnVjdCBzaG1lbV9zYl9pbmZvIHNobWVtX3NiOwogICAgICAgICAgICAgICAg c3RydWN0IHJvbWZzX3NiX2luZm8gcm9tZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc21i X3NiX2luZm8gc21iZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgaGZzX3NiX2luZm8gaGZz X3NiOwogICAgICAgICAgICAgICAgc3RydWN0IGFkZnNfc2JfaW5mbyBhZGZzX3NiOwogICAgICAg ICAgICAgICAgc3RydWN0IHFueDRfc2JfaW5mbyBxbng0X3NiOwogICAgICAgICAgICAgICAgc3Ry dWN0IHJlaXNlcmZzX3NiX2luZm8gcmVpc2VyZnNfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg YmZzX3NiX2luZm8gYmZzX3NiOwogICAgICAgICAgICAgICAgc3RydWN0IHVkZl9zYl9pbmZvIHVk Zl9zYjsKICAgICAgICAgICAgICAgIHN0cnVjdCBuY3Bfc2VydmVyIG5jcGZzX3NiOwogICAgICAg ICAgICAgICAgc3RydWN0IHVzYmRldl9zYl9pbmZvIHVzYmRldmZzX3NiOwogICAgICAgICAgICAg ICAgc3RydWN0IGpmZnMyX3NiX2luZm8gamZmczJfc2I7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg Y3JhbWZzX3NiX2luZm8gY3JhbWZzX3NiOwogICAgICAgICAgICAgICAgdm9pZCAqZ2VuZXJpY19z YnA7CiAgICAgICAgfSB1OwoKCgoKICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlIHNfdmZzX3JlbmFt ZV9zZW07CiMgNzc4ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2ZzLmgiCiAgICAgICAg c3RydWN0IHNlbWFwaG9yZSBzX25mc2RfZnJlZV9wYXRoX3NlbTsKfTsKCgoKCmV4dGVybiBpbnQg dmZzX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4g aW50IHZmc19ta2RpcihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRl cm4gaW50IHZmc19ta25vZChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQsIGRl dl90KTsKZXh0ZXJuIGludCB2ZnNfc3ltbGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRy eSAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHZmc19saW5rKHN0cnVjdCBkZW50cnkgKiwg c3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZzX3JtZGlyKHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IHZmc191bmxpbmsoc3Ry dWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CmV4dGVybiBpbnQgdmZzX3JlbmFtZShzdHJ1 Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRy eSAqKTsKIyA4MTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMuaCIKdHlwZWRlZiBp bnQgKCpmaWxsZGlyX3QpKHZvaWQgKiwgY29uc3QgY2hhciAqLCBpbnQsIGxvZmZfdCwgaW5vX3Qs IHVuc2lnbmVkKTsKCnN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7CiAgICAgICAgaW50 ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKICAgICAgICBpbnQgKCpy ZWxlYXNlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmlv Y3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVkLCB1bnNpZ25lZCBs b25nKTsKICAgICAgICBpbnQgKCpjaGVja19tZWRpYV9jaGFuZ2UpIChrZGV2X3QpOwogICAgICAg IGludCAoKnJldmFsaWRhdGUpIChrZGV2X3QpOwogICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVy Owp9OwoKCgoKCgpzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHsKICAgICAgICBzdHJ1Y3QgbW9kdWxl ICpvd25lcjsKICAgICAgICBsb2ZmX3QgKCpsbHNlZWspIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3Qs IGludCk7CiAgICAgICAgc3NpemVfdCAoKnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNp emVfdCwgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCp3cml0ZSkgKHN0cnVjdCBmaWxlICos IGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CiAgICAgICAgaW50ICgqcmVhZGRpcikg KHN0cnVjdCBmaWxlICosIHZvaWQgKiwgZmlsbGRpcl90KTsKICAgICAgICB1bnNpZ25lZCBpbnQg KCpwb2xsKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOwogICAg ICAgIGludCAoKmlvY3RsKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIHVuc2lnbmVk IGludCwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICos IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKICAgICAgICBpbnQgKCpvcGVuKSAoc3RydWN0IGlu b2RlICosIHN0cnVjdCBmaWxlICopOwogICAgICAgIGludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUg Kik7CiAgICAgICAgaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAq KTsKICAgICAgICBpbnQgKCpmc3luYykgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkZW50cnkgKiwg aW50IGRhdGFzeW5jKTsKICAgICAgICBpbnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBmaWxlICos IGludCk7CiAgICAgICAgaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZp bGVfbG9jayAqKTsKICAgICAgICBzc2l6ZV90ICgqcmVhZHYpIChzdHJ1Y3QgZmlsZSAqLCBjb25z dCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXpl X3QgKCp3cml0ZXYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWdu ZWQgbG9uZywgbG9mZl90ICopOwogICAgICAgIHNzaXplX3QgKCpzZW5kcGFnZSkgKHN0cnVjdCBm aWxlICosIHN0cnVjdCBwYWdlICosIGludCwgc2l6ZV90LCBsb2ZmX3QgKiwgaW50KTsKICAgICAg ICB1bnNpZ25lZCBsb25nICgqZ2V0X3VubWFwcGVkX2FyZWEpKHN0cnVjdCBmaWxlICosIHVuc2ln bmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwp9 OwoKc3RydWN0IGlub2RlX29wZXJhdGlvbnMgewogICAgICAgIGludCAoKmNyZWF0ZSkgKHN0cnVj dCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixpbnQpOwogICAgICAgIHN0cnVjdCBkZW50cnkgKiAo Kmxvb2t1cCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAgICAgICAgaW50ICgq bGluaykgKHN0cnVjdCBkZW50cnkgKixzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwog ICAgICAgIGludCAoKnVubGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiAg ICAgICAgaW50ICgqc3ltbGluaykgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKixjb25z dCBjaGFyICopOwogICAgICAgIGludCAoKm1rZGlyKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRl bnRyeSAqLGludCk7CiAgICAgICAgaW50ICgqcm1kaXIpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3Qg ZGVudHJ5ICopOwogICAgICAgIGludCAoKm1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRl bnRyeSAqLGludCxpbnQpOwogICAgICAgIGludCAoKnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBz dHJ1Y3QgZGVudHJ5ICosCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqLCBz dHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGludCAoKnJlYWRsaW5rKSAoc3RydWN0IGRlbnRyeSAq LCBjaGFyICosaW50KTsKICAgICAgICBpbnQgKCpmb2xsb3dfbGluaykgKHN0cnVjdCBkZW50cnkg Kiwgc3RydWN0IG5hbWVpZGF0YSAqKTsKICAgICAgICB2b2lkICgqdHJ1bmNhdGUpIChzdHJ1Y3Qg aW5vZGUgKik7CiAgICAgICAgaW50ICgqcGVybWlzc2lvbikgKHN0cnVjdCBpbm9kZSAqLCBpbnQp OwogICAgICAgIGludCAoKnJldmFsaWRhdGUpIChzdHJ1Y3QgZGVudHJ5ICopOwogICAgICAgIGlu dCAoKnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKICAgICAgICBp bnQgKCpnZXRhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7Cn07CgpzdHJ1 Y3Qgc2VxX2ZpbGU7CgoKCgoKc3RydWN0IHN1cGVyX29wZXJhdGlvbnMgewogICAgICAgIHZvaWQg KCpyZWFkX2lub2RlKSAoc3RydWN0IGlub2RlICopOwoKCgoKCgoKICAgICAgICB2b2lkICgqcmVh ZF9pbm9kZTIpIChzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSA7CiAgICAgICAgdm9pZCAoKmRpcnR5 X2lub2RlKSAoc3RydWN0IGlub2RlICopOwogICAgICAgIHZvaWQgKCp3cml0ZV9pbm9kZSkgKHN0 cnVjdCBpbm9kZSAqLCBpbnQpOwogICAgICAgIHZvaWQgKCpwdXRfaW5vZGUpIChzdHJ1Y3QgaW5v ZGUgKik7CiAgICAgICAgdm9pZCAoKmRlbGV0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAg ICAgICB2b2lkICgqcHV0X3N1cGVyKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZv aWQgKCp3cml0ZV9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICB2b2lkICgq d3JpdGVfc3VwZXJfbG9ja2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwogICAgICAgIHZvaWQg KCp1bmxvY2tmcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKICAgICAgICBpbnQgKCpzdGF0ZnMp IChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IHN0YXRmcyAqKTsKICAgICAgICBpbnQgKCpy ZW1vdW50X2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCAqLCBjaGFyICopOwogICAgICAg IHZvaWQgKCpjbGVhcl9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKICAgICAgICB2b2lkICgqdW1v dW50X2JlZ2luKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwojIDkyMCAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9saW51eC9mcy5oIgogICAgICAgIHN0cnVjdCBkZW50cnkgKiAoKmZoX3RvX2RlbnRy eSkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgX191MzIgKmZoLCBpbnQgbGVuLCBpbnQgZmh0eXBl LCBpbnQgcGFyZW50KTsKICAgICAgICBpbnQgKCpkZW50cnlfdG9fZmgpKHN0cnVjdCBkZW50cnkg KiwgX191MzIgKmZoLCBpbnQgKmxlbnAsIGludCBuZWVkX3BhcmVudCk7CiAgICAgICAgaW50ICgq c2hvd19vcHRpb25zKShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IHZmc21vdW50ICopOwp9Owoj IDkzNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gdm9pZCBfX21h cmtfaW5vZGVfZGlydHkoc3RydWN0IGlub2RlICosIGludCk7CnN0YXRpYyBpbmxpbmUgdm9pZCBt YXJrX2lub2RlX2RpcnR5KHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBfX21hcmtfaW5v ZGVfZGlydHkoaW5vZGUsICgxIHwgMiB8IDQpKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtf aW5vZGVfZGlydHlfc3luYyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiAgICAgICAgX19tYXJrX2lu b2RlX2RpcnR5KGlub2RlLCAxKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIG1hcmtfaW5vZGVfZGly dHlfcGFnZXMoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIF9fbWFya19pbm9kZV9kaXJ0 eShpbm9kZSwgNCk7Cn0KCnN0cnVjdCBkcXVvdF9vcGVyYXRpb25zIHsKICAgICAgICB2b2lkICgq aW5pdGlhbGl6ZSkgKHN0cnVjdCBpbm9kZSAqLCBzaG9ydCk7CiAgICAgICAgdm9pZCAoKmRyb3Ap IChzdHJ1Y3QgaW5vZGUgKik7CiAgICAgICAgaW50ICgqYWxsb2NfYmxvY2spIChzdHJ1Y3QgaW5v ZGUgKiwgdW5zaWduZWQgbG9uZywgY2hhcik7CiAgICAgICAgaW50ICgqYWxsb2NfaW5vZGUpIChj b25zdCBzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgdm9pZCAoKmZyZWVf YmxvY2spIChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAgdm9pZCAoKmZy ZWVfaW5vZGUpIChjb25zdCBzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9uZyk7CiAgICAgICAg aW50ICgqdHJhbnNmZXIpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlhdHRyICopOwp9OwoKc3Ry dWN0IGZpbGVfc3lzdGVtX3R5cGUgewogICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAg aW50IGZzX2ZsYWdzOwogICAgICAgIHN0cnVjdCBzdXBlcl9ibG9jayAqKCpyZWFkX3N1cGVyKSAo c3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KTsKICAgICAgICBzdHJ1Y3QgbW9kdWxl ICpvd25lcjsKICAgICAgICBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqIG5leHQ7CiAgICAgICAg c3RydWN0IGxpc3RfaGVhZCBmc19zdXBlcnM7Cn07CiMgOTkzICIvdXNyL3NyYy9saW51eC9pbmNs dWRlL2xpbnV4L2ZzLmgiCmV4dGVybiBpbnQgcmVnaXN0ZXJfZmlsZXN5c3RlbShzdHJ1Y3QgZmls ZV9zeXN0ZW1fdHlwZSAqKTsKZXh0ZXJuIGludCB1bnJlZ2lzdGVyX2ZpbGVzeXN0ZW0oc3RydWN0 IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBzdHJ1Y3QgdmZzbW91bnQgKmtlcm5fbW91bnQo c3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBpbnQgbWF5X3Vtb3VudChzdHJ1Y3Qg dmZzbW91bnQgKik7CmV4dGVybiBsb25nIGRvX21vdW50KGNoYXIgKiwgY2hhciAqLCBjaGFyICos IHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CmV4dGVybiB2b2lkIHVtb3VudF90cmVlKHN0cnVjdCB2 ZnNtb3VudCAqKTsKCgoKZXh0ZXJuIGludCB2ZnNfc3RhdGZzKHN0cnVjdCBzdXBlcl9ibG9jayAq LCBzdHJ1Y3Qgc3RhdGZzICopOwojIDEwMTIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgv ZnMuaCIKZXh0ZXJuIGludCBsb2Nrc19tYW5kYXRvcnlfbG9ja2VkKHN0cnVjdCBpbm9kZSAqKTsK ZXh0ZXJuIGludCBsb2Nrc19tYW5kYXRvcnlfYXJlYShpbnQsIHN0cnVjdCBpbm9kZSAqLCBzdHJ1 Y3QgZmlsZSAqLCBsb2ZmX3QsIHNpemVfdCk7CiMgMTAyMiAiL3Vzci9zcmMvbGludXgvaW5jbHVk ZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIGludCBsb2Nrc192ZXJpZnlfbG9ja2VkKHN0cnVj dCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICBpZiAoKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYg KDY0KSkgJiYgKChpbm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAw KSkKICAgICAgICAgICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfbG9ja2VkKGlub2RlKTsK ICAgICAgICByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgbG9ja3NfdmVyaWZ5X2FyZWEo aW50IHJlYWRfd3JpdGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlICpmaWxwLCBsb2ZmX3Qgb2Zmc2V0LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQpCnsKICAgICAgICBpZiAo aW5vZGUtPmlfZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYgKChp bm9kZSktPmlfbW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAgICAg ICAgICAgIHJldHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYShyZWFkX3dyaXRlLCBpbm9kZSwgZmls cCwgb2Zmc2V0LCBjb3VudCk7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50 IGxvY2tzX3ZlcmlmeV90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlscCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbG9mZl90IHNpemUpCnsKICAgICAgICBpZiAoaW5vZGUtPmlf ZmxvY2sgJiYgKCgoaW5vZGUpLT5pX3NiLT5zX2ZsYWdzICYgKDY0KSkgJiYgKChpbm9kZSktPmlf bW9kZSAmICgwMDAyMDAwIHwgMDAwMTApKSA9PSAwMDAyMDAwKSkKICAgICAgICAgICAgICAgIHJl dHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYSgKICAgICAgICAgICAgICAgICAgICAgICAgMiwgaW5v ZGUsIGZpbHAsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPCBpbm9kZS0+aV9zaXplID8g c2l6ZSA6IGlub2RlLT5pX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIChzaXplIDwgaW5v ZGUtPmlfc2l6ZSA/IGlub2RlLT5pX3NpemUgLSBzaXplCiAgICAgICAgICAgICAgICAgICAgICAg ICA6IHNpemUgLSBpbm9kZS0+aV9zaXplKQogICAgICAgICAgICAgICAgKTsKICAgICAgICByZXR1 cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQgZ2V0X2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHVuc2lnbmVkIGludCBtb2RlKQp7CiAgICAgICAgaWYgKGlub2RlLT5pX2Zsb2NrICYmIChpbm9k ZS0+aV9mbG9jay0+ZmxfZmxhZ3MgJiAzMikpCiAgICAgICAgICAgICAgICByZXR1cm4gX19nZXRf bGVhc2UoaW5vZGUsIG1vZGUpOwogICAgICAgIHJldHVybiAwOwp9CgoKCiBfX2F0dHJpYnV0ZV9f KChyZWdwYXJtKDApKSkgbG9uZyBzeXNfb3Blbihjb25zdCBjaGFyICosIGludCwgaW50KTsKIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19jbG9zZSh1bnNpZ25lZCBpbnQpOwpl eHRlcm4gaW50IGRvX3RydW5jYXRlKHN0cnVjdCBkZW50cnkgKiwgbG9mZl90IHN0YXJ0KTsKCmV4 dGVybiBzdHJ1Y3QgZmlsZSAqZmlscF9vcGVuKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwpleHRl cm4gc3RydWN0IGZpbGUgKiBkZW50cnlfb3BlbihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNt b3VudCAqLCBpbnQpOwpleHRlcm4gaW50IGZpbHBfY2xvc2Uoc3RydWN0IGZpbGUgKiwgZmxfb3du ZXJfdCBpZCk7CmV4dGVybiBjaGFyICogZ2V0bmFtZShjb25zdCBjaGFyICopOwoKCmV4dGVybiB2 b2lkIHZmc19jYWNoZXNfaW5pdCh1bnNpZ25lZCBsb25nKTsKCgoKCmVudW0ge0JERVZfRklMRSwg QkRFVl9TV0FQLCBCREVWX0ZTLCBCREVWX1JBV307CmV4dGVybiBpbnQgcmVnaXN0ZXJfYmxrZGV2 KHVuc2lnbmVkIGludCwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlv bnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9ibGtkZXYodW5zaWduZWQgaW50LCBjb25zdCBj aGFyICopOwpleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmRnZXQoZGV2X3QpOwpleHRlcm4g aW50IGJkX2FjcXVpcmUoc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiB2b2lkIGJkX2Zvcmdl dChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZvaWQgYmRwdXQoc3RydWN0IGJsb2NrX2Rl dmljZSAqKTsKZXh0ZXJuIHN0cnVjdCBjaGFyX2RldmljZSAqY2RnZXQoZGV2X3QpOwpleHRlcm4g dm9pZCBjZHB1dChzdHJ1Y3QgY2hhcl9kZXZpY2UgKik7CmV4dGVybiBpbnQgYmxrZGV2X29wZW4o c3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRlcm4gaW50IGJsa2Rldl9jbG9zZShz dHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRp b25zIGRlZl9ibGtfZm9wczsKZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMg ZGVmX2Jsa19hb3BzOwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZfZmlmb19mb3Bz OwpleHRlcm4gaW50IGlvY3RsX2J5X2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAqLCB1bnNpZ25l ZCwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBpbnQgYmxrZGV2X2dldChzdHJ1Y3QgYmxvY2tfZGV2 aWNlICosIG1vZGVfdCwgdW5zaWduZWQsIGludCk7CmV4dGVybiBpbnQgYmxrZGV2X3B1dChzdHJ1 Y3QgYmxvY2tfZGV2aWNlICosIGludCk7CgoKZXh0ZXJuIGNvbnN0IHN0cnVjdCBibG9ja19kZXZp Y2Vfb3BlcmF0aW9ucyAqZ2V0X2Jsa2ZvcHModW5zaWduZWQgaW50KTsKZXh0ZXJuIGludCByZWdp c3Rlcl9jaHJkZXYodW5zaWduZWQgaW50LCBjb25zdCBjaGFyICosIHN0cnVjdCBmaWxlX29wZXJh dGlvbnMgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9jaHJkZXYodW5zaWduZWQgaW50LCBjb25z dCBjaGFyICopOwpleHRlcm4gaW50IGNocmRldl9vcGVuKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg ZmlsZSAqKTsKZXh0ZXJuIGNvbnN0IGNoYXIgKiBiZGV2bmFtZShrZGV2X3QpOwpleHRlcm4gY29u c3QgY2hhciAqIGNkZXZuYW1lKGtkZXZfdCk7CmV4dGVybiBjb25zdCBjaGFyICoga2Rldm5hbWUo a2Rldl90KTsKZXh0ZXJuIHZvaWQgaW5pdF9zcGVjaWFsX2lub2RlKHN0cnVjdCBpbm9kZSAqLCB1 bW9kZV90LCBpbnQpOwoKCmV4dGVybiB2b2lkIG1ha2VfYmFkX2lub2RlKHN0cnVjdCBpbm9kZSAq KTsKZXh0ZXJuIGludCBpc19iYWRfaW5vZGUoc3RydWN0IGlub2RlICopOwoKZXh0ZXJuIHN0cnVj dCBmaWxlX29wZXJhdGlvbnMgcmVhZF9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVy YXRpb25zIHdyaXRlX2ZpZm9fZm9wczsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmR3 cl9maWZvX2ZvcHM7CmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJlYWRfcGlwZV9mb3Bz OwpleHRlcm4gc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB3cml0ZV9waXBlX2ZvcHM7CmV4dGVybiBz dHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJkd3JfcGlwZV9mb3BzOwoKZXh0ZXJuIGludCBmc19tYXlf cmVtb3VudF9ybyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CgpleHRlcm4gaW50IHRyeV90b19mcmVl X2J1ZmZlcnMoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgaW50KSBfX2F0dHJpYnV0ZV9fKChyZWdw YXJtKDMpKSk7CmV4dGVybiB2b2lkIHJlZmlsZV9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICog YnVmKTsKZXh0ZXJuIHZvaWQgY3JlYXRlX2VtcHR5X2J1ZmZlcnMoc3RydWN0IHBhZ2UgKiwga2Rl dl90LCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJuIHZvaWQgZW5kX2J1ZmZlcl9pb19zeW5jKHN0cnVj dCBidWZmZXJfaGVhZCAqYmgsIGludCB1cHRvZGF0ZSk7CgoKZXh0ZXJuIHZvaWQgc2V0X2J1ZmZl cl9hc3luY19pbyhzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSA7CgoKCgoKCnN0YXRpYyBpbmxpbmUg dm9pZCBnZXRfYmgoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBhdG9taWNfaW5j KCYoYmgpLT5iX2NvdW50KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHB1dF9iaChzdHJ1Y3QgYnVm ZmVyX2hlYWQgKmJoKQp7CiAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1v cnkiKTsKICAgICAgICBhdG9taWNfZGVjKCZiaC0+Yl9jb3VudCk7Cn0KCgoKCnN0YXRpYyBpbmxp bmUgdm9pZCBtYXJrX2J1ZmZlcl91cHRvZGF0ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiBiaCwgaW50 IG9uKQp7CiAgICAgICAgaWYgKG9uKQogICAgICAgICAgICAgICAgc2V0X2JpdChCSF9VcHRvZGF0 ZSwgJmJoLT5iX3N0YXRlKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjbGVhcl9iaXQo QkhfVXB0b2RhdGUsICZiaC0+Yl9zdGF0ZSk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lkIF9fbWFy a19idWZmZXJfY2xlYW4oc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIHJlZmlsZV9i dWZmZXIoYmgpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZmZXJfY2xlYW4oc3RydWN0 IGJ1ZmZlcl9oZWFkICogYmgpCnsKICAgICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJIX0Rp cnR5LCAmKGJoKS0+Yl9zdGF0ZSkpCiAgICAgICAgICAgICAgICBfX21hcmtfYnVmZmVyX2NsZWFu KGJoKTsKfQoKZXh0ZXJuIHZvaWQgX19tYXJrX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgp IF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgX19tYXJrX2J1ZmZlcl9k aXJ0eShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7 CmV4dGVybiB2b2lkIG1hcmtfYnVmZmVyX2RpcnR5KHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpIF9f YXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYnVmZmVyX2luc2VydF9pbm9k ZV9xdWV1ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKiwgc3RydWN0IGlub2RlICopIF9fYXR0cmlidXRl X18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQgYnVmZmVyX2luc2VydF9pbm9kZV9kYXRhX3F1 ZXVlKHN0cnVjdCBidWZmZXJfaGVhZCAqLCBzdHJ1Y3QgaW5vZGUgKikgX19hdHRyaWJ1dGVfXygo cmVncGFybSgzKSkpOwoKc3RhdGljIGlubGluZSBpbnQgYXRvbWljX3NldF9idWZmZXJfZGlydHko c3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKewogICAgICAgIHJldHVybiB0ZXN0X2FuZF9zZXRfYml0 KEJIX0RpcnR5LCAmYmgtPmJfc3RhdGUpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgbWFya19idWZm ZXJfYXN5bmMoc3RydWN0IGJ1ZmZlcl9oZWFkICogYmgsIGludCBvbikKewogICAgICAgIGlmIChv bikKICAgICAgICAgICAgICAgIHNldF9iaXQoQkhfQXN5bmMsICZiaC0+Yl9zdGF0ZSk7CiAgICAg ICAgZWxzZQogICAgICAgICAgICAgICAgY2xlYXJfYml0KEJIX0FzeW5jLCAmYmgtPmJfc3RhdGUp Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgYnVmZmVyX0lPX2Vycm9yKHN0cnVjdCBidWZm ZXJfaGVhZCAqIGJoKQp7CiAgICAgICAgbWFya19idWZmZXJfY2xlYW4oYmgpOwoKCgogICAgICAg IGJoLT5iX2VuZF9pbyhiaCwgMCk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrX2J1ZmZlcl9k aXJ0eV9pbm9kZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7 CiAgICAgICAgbWFya19idWZmZXJfZGlydHkoYmgpOwogICAgICAgIGJ1ZmZlcl9pbnNlcnRfaW5v ZGVfcXVldWUoYmgsIGlub2RlKTsKfQoKZXh0ZXJuIHZvaWQgc2V0X2J1ZmZlcl9mbHVzaHRpbWUo c3RydWN0IGJ1ZmZlcl9oZWFkICopOwpleHRlcm4gdm9pZCBiYWxhbmNlX2RpcnR5KHZvaWQpOwpl eHRlcm4gaW50IGNoZWNrX2Rpc2tfY2hhbmdlKGtkZXZfdCk7CmV4dGVybiBpbnQgaW52YWxpZGF0 ZV9pbm9kZXMoc3RydWN0IHN1cGVyX2Jsb2NrICopOwpleHRlcm4gaW50IGludmFsaWRhdGVfZGV2 aWNlKGtkZXZfdCwgaW50KTsKZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9pbm9kZV9wYWdlcyhzdHJ1 Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIGludmFsaWRhdGVfaW5vZGVfcGFnZXMyKHN0cnVjdCBh ZGRyZXNzX3NwYWNlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2lub2RlX2J1ZmZlcnMoc3Ry dWN0IGlub2RlICopOwoKCmV4dGVybiB2b2lkIGludmFsaWRhdGVfYmRldihzdHJ1Y3QgYmxvY2tf ZGV2aWNlICosIGludCk7CmV4dGVybiB2b2lkIF9faW52YWxpZGF0ZV9idWZmZXJzKGtkZXZfdCBk ZXYsIGludCk7CmV4dGVybiB2b2lkIHN5bmNfaW5vZGVzKGtkZXZfdCk7CmV4dGVybiB2b2lkIHN5 bmNfdW5sb2NrZWRfaW5vZGVzKHZvaWQpOwpleHRlcm4gdm9pZCB3cml0ZV9pbm9kZV9ub3coc3Ry dWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgc3luY19idWZmZXJzKGtkZXZfdCwgaW50KTsK ZXh0ZXJuIHZvaWQgc3luY19kZXYoa2Rldl90KTsKZXh0ZXJuIGludCBmc3luY19kZXYoa2Rldl90 KTsKZXh0ZXJuIGludCBmc3luY19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CmV4dGVybiBp bnQgZnN5bmNfbm9fc3VwZXIoa2Rldl90KTsKZXh0ZXJuIHZvaWQgc3luY19pbm9kZXNfc2Ioc3Ry dWN0IHN1cGVyX2Jsb2NrICopOwpleHRlcm4gaW50IGZzeW5jX2J1ZmZlcnNfbGlzdChzdHJ1Y3Qg bGlzdF9oZWFkICopOwpzdGF0aWMgaW5saW5lIGludCBmc3luY19pbm9kZV9idWZmZXJzKHN0cnVj dCBpbm9kZSAqaW5vZGUpCnsKICAgICAgICByZXR1cm4gZnN5bmNfYnVmZmVyc19saXN0KCZpbm9k ZS0+aV9kaXJ0eV9idWZmZXJzKTsKfQpzdGF0aWMgaW5saW5lIGludCBmc3luY19pbm9kZV9kYXRh X2J1ZmZlcnMoc3RydWN0IGlub2RlICppbm9kZSkKewogICAgICAgIHJldHVybiBmc3luY19idWZm ZXJzX2xpc3QoJmlub2RlLT5pX2RpcnR5X2RhdGFfYnVmZmVycyk7Cn0KZXh0ZXJuIGludCBpbm9k ZV9oYXNfYnVmZmVycyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgZmlsZW1hcF9mZGF0YXN5 bmMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVybiBpbnQgZmlsZW1hcF9mZGF0YXdhaXQo c3RydWN0IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVybiB2b2lkIHN5bmNfc3VwZXJzKGtkZXZfdCk7 CmV4dGVybiBpbnQgYm1hcChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCBub3RpZnlf Y2hhbmdlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlhdHRyICopOwpleHRlcm4gaW50IHBlcm1p c3Npb24oc3RydWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgdmZzX3Blcm1pc3Npb24oc3Ry dWN0IGlub2RlICosIGludCk7CmV4dGVybiBpbnQgZ2V0X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgaW5v ZGUgKik7CmV4dGVybiBpbnQgZGVueV93cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKik7CnN0YXRp YyBpbmxpbmUgdm9pZCBwdXRfd3JpdGVfYWNjZXNzKHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiAg ICAgICAgYXRvbWljX2RlYygmaW5vZGUtPmlfd3JpdGVjb3VudCk7Cn0Kc3RhdGljIGlubGluZSB2 b2lkIGFsbG93X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqZmlsZSkKewogICAgICAgIGlmIChm aWxlKQogICAgICAgICAgICAgICAgYXRvbWljX2luYygmZmlsZS0+Zl9kZW50cnktPmRfaW5vZGUt Pmlfd3JpdGVjb3VudCk7Cn0KZXh0ZXJuIGludCBkb19waXBlKGludCAqKTsKCmV4dGVybiBpbnQg b3Blbl9uYW1laShjb25zdCBjaGFyICosIGludCwgaW50LCBzdHJ1Y3QgbmFtZWlkYXRhICopOwoK ZXh0ZXJuIGludCBrZXJuZWxfcmVhZChzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBsb25nLCBjaGFy ICosIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gc3RydWN0IGZpbGUgKiBvcGVuX2V4ZWMoY29uc3Qg Y2hhciAqKTsKCgpleHRlcm4gaW50IGlzX3N1YmRpcihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBk ZW50cnkgKik7CmV4dGVybiBpbm9fdCBmaW5kX2lub2RlX251bWJlcihzdHJ1Y3QgZGVudHJ5ICos IHN0cnVjdCBxc3RyICopOwojIDEyNzMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvZnMu aCIKc3RhdGljIGlubGluZSB2b2lkICpFUlJfUFRSKGxvbmcgZXJyb3IpCnsKICAgICAgICByZXR1 cm4gKHZvaWQgKikgZXJyb3I7Cn0KCnN0YXRpYyBpbmxpbmUgbG9uZyBQVFJfRVJSKGNvbnN0IHZv aWQgKnB0cikKewogICAgICAgIHJldHVybiAobG9uZykgcHRyOwp9CgpzdGF0aWMgaW5saW5lIGxv bmcgSVNfRVJSKGNvbnN0IHZvaWQgKnB0cikKewogICAgICAgIHJldHVybiAodW5zaWduZWQgbG9u ZylwdHIgPiAodW5zaWduZWQgbG9uZyktMTAwMEw7Cn0KIyAxMzA0ICIvdXNyL3NyYy9saW51eC9p bmNsdWRlL2xpbnV4L2ZzLmgiCmVudW0ge0xBU1RfTk9STSwgTEFTVF9ST09ULCBMQVNUX0RPVCwg TEFTVF9ET1RET1QsIExBU1RfQklORH07CiMgMTMxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9mcy5oIgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgc2l6ZV90IHdyaXR0ZW47CiAgICAg ICAgc2l6ZV90IGNvdW50OwogICAgICAgIGNoYXIgKiBidWY7CiAgICAgICAgaW50IGVycm9yOwp9 IHJlYWRfZGVzY3JpcHRvcl90OwoKdHlwZWRlZiBpbnQgKCpyZWFkX2FjdG9yX3QpKHJlYWRfZGVz Y3JpcHRvcl90ICosIHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcp OwoKCmV4dGVybiBsb2ZmX3QgZGVmYXVsdF9sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZf dCBvZmZzZXQsIGludCBvcmlnaW4pOwoKZXh0ZXJuIGludCBfX3VzZXJfd2Fsayhjb25zdCBjaGFy ICosIHVuc2lnbmVkLCBzdHJ1Y3QgbmFtZWlkYXRhICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0o MykpKTsKZXh0ZXJuIGludCBwYXRoX2luaXQoY29uc3QgY2hhciAqLCB1bnNpZ25lZCwgc3RydWN0 IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgcGF0 aF93YWxrKGNvbnN0IGNoYXIgKiwgc3RydWN0IG5hbWVpZGF0YSAqKSBfX2F0dHJpYnV0ZV9fKChy ZWdwYXJtKDMpKSk7CmV4dGVybiBpbnQgbGlua19wYXRoX3dhbGsoY29uc3QgY2hhciAqLCBzdHJ1 Y3QgbmFtZWlkYXRhICopIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKZXh0ZXJuIHZvaWQg cGF0aF9yZWxlYXNlKHN0cnVjdCBuYW1laWRhdGEgKik7CmV4dGVybiBpbnQgZm9sbG93X2Rvd24o c3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3QgZGVudHJ5ICoqKTsKZXh0ZXJuIGludCBmb2xsb3df dXAoc3RydWN0IHZmc21vdW50ICoqLCBzdHJ1Y3QgZGVudHJ5ICoqKTsKZXh0ZXJuIHN0cnVjdCBk ZW50cnkgKiBsb29rdXBfb25lX2xlbihjb25zdCBjaGFyICosIHN0cnVjdCBkZW50cnkgKiwgaW50 KTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBsb29rdXBfaGFzaChzdHJ1Y3QgcXN0ciAqLCBzdHJ1 Y3QgZGVudHJ5ICopOwoKCgpleHRlcm4gdm9pZCBpcHV0KHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJu IHZvaWQgZm9yY2VfZGVsZXRlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAq IGlncmFiKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIGlub190IGl1bmlxdWUoc3RydWN0IHN1cGVy X2Jsb2NrICosIGlub190KTsKCnR5cGVkZWYgaW50ICgqZmluZF9pbm9kZV90KShzdHJ1Y3QgaW5v ZGUgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGlnZXQ0 KHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nLCBmaW5kX2lub2RlX3QsIHZvaWQg Kik7CnN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICppZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAq c2IsIHVuc2lnbmVkIGxvbmcgaW5vKQp7CiAgICAgICAgcmV0dXJuIGlnZXQ0KHNiLCBpbm8sICgo dm9pZCAqKTApLCAoKHZvaWQgKikwKSk7Cn0KCmV4dGVybiB2b2lkIGNsZWFyX2lub2RlKHN0cnVj dCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGdldF9lbXB0eV9pbm9kZSh2b2lkKTsK CnN0YXRpYyBpbmxpbmUgc3RydWN0IGlub2RlICogbmV3X2lub2RlKHN0cnVjdCBzdXBlcl9ibG9j ayAqc2IpCnsKICAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZ2V0X2VtcHR5X2lub2RlKCk7 CiAgICAgICAgaWYgKGlub2RlKSB7CiAgICAgICAgICAgICAgICBpbm9kZS0+aV9zYiA9IHNiOwog ICAgICAgICAgICAgICAgaW5vZGUtPmlfZGV2ID0gc2ItPnNfZGV2OwogICAgICAgICAgICAgICAg aW5vZGUtPmlfYmxrYml0cyA9IHNiLT5zX2Jsb2Nrc2l6ZV9iaXRzOwogICAgICAgIH0KICAgICAg ICByZXR1cm4gaW5vZGU7Cn0KZXh0ZXJuIHZvaWQgcmVtb3ZlX3N1aWQoc3RydWN0IGlub2RlICpp bm9kZSk7CgpleHRlcm4gdm9pZCBpbnNlcnRfaW5vZGVfaGFzaChzdHJ1Y3QgaW5vZGUgKik7CmV4 dGVybiB2b2lkIHJlbW92ZV9pbm9kZV9oYXNoKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVj dCBmaWxlICogZ2V0X2VtcHR5X2ZpbHAodm9pZCk7CmV4dGVybiB2b2lkIGZpbGVfbW92ZShzdHJ1 Y3QgZmlsZSAqZiwgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCk7CmV4dGVybiBzdHJ1Y3QgYnVmZmVy X2hlYWQgKiBnZXRfaGFzaF90YWJsZShrZGV2X3QsIGludCwgaW50KTsKZXh0ZXJuIHN0cnVjdCBi dWZmZXJfaGVhZCAqIGdldGJsayhrZGV2X3QsIGludCwgaW50KTsKZXh0ZXJuIHZvaWQgbGxfcndf YmxvY2soaW50LCBpbnQsIHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoW10pOwpleHRlcm4gdm9pZCBz dWJtaXRfYmgoaW50LCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CmV4dGVybiBpbnQgaXNfcmVhZF9v bmx5KGtkZXZfdCk7CmV4dGVybiB2b2lkIF9fYnJlbHNlKHN0cnVjdCBidWZmZXJfaGVhZCAqKTsK c3RhdGljIGlubGluZSB2b2lkIGJyZWxzZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJ1ZikKewogICAg ICAgIGlmIChidWYpCiAgICAgICAgICAgICAgICBfX2JyZWxzZShidWYpOwp9CmV4dGVybiB2b2lk IF9fYmZvcmdldChzdHJ1Y3QgYnVmZmVyX2hlYWQgKik7CnN0YXRpYyBpbmxpbmUgdm9pZCBiZm9y Z2V0KHN0cnVjdCBidWZmZXJfaGVhZCAqYnVmKQp7CiAgICAgICAgaWYgKGJ1ZikKICAgICAgICAg ICAgICAgIF9fYmZvcmdldChidWYpOwp9CmV4dGVybiBpbnQgc2V0X2Jsb2Nrc2l6ZShrZGV2X3Qs IGludCk7CmV4dGVybiBpbnQgc2Jfc2V0X2Jsb2Nrc2l6ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwg aW50KTsKZXh0ZXJuIGludCBzYl9taW5fYmxvY2tzaXplKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBp bnQpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogYnJlYWQoa2Rldl90LCBpbnQsIGludCk7 CnN0YXRpYyBpbmxpbmUgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2JfYnJlYWQoc3RydWN0IHN1cGVy X2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAgICAgICAgcmV0dXJuIGJyZWFkKHNiLT5zX2Rldiwg YmxvY2ssIHNiLT5zX2Jsb2Nrc2l6ZSk7Cn0Kc3RhdGljIGlubGluZSBzdHJ1Y3QgYnVmZmVyX2hl YWQgKiBzYl9nZXRibGsoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAgICAg ICAgcmV0dXJuIGdldGJsayhzYi0+c19kZXYsIGJsb2NrLCBzYi0+c19ibG9ja3NpemUpOwp9CnN0 YXRpYyBpbmxpbmUgc3RydWN0IGJ1ZmZlcl9oZWFkICogc2JfZ2V0X2hhc2hfdGFibGUoc3RydWN0 IHN1cGVyX2Jsb2NrICpzYiwgaW50IGJsb2NrKQp7CiAgICAgICAgcmV0dXJuIGdldF9oYXNoX3Rh YmxlKHNiLT5zX2RldiwgYmxvY2ssIHNiLT5zX2Jsb2Nrc2l6ZSk7Cn0KZXh0ZXJuIHZvaWQgd2Fr ZXVwX2JkZmx1c2godm9pZCk7CmV4dGVybiB2b2lkIHB1dF91bnVzZWRfYnVmZmVyX2hlYWQoc3Ry dWN0IGJ1ZmZlcl9oZWFkICogYmgpOwpleHRlcm4gc3RydWN0IGJ1ZmZlcl9oZWFkICogZ2V0X3Vu dXNlZF9idWZmZXJfaGVhZChpbnQgYXN5bmMpOwoKZXh0ZXJuIGludCBicndfcGFnZShpbnQsIHN0 cnVjdCBwYWdlICosIGtkZXZfdCwgaW50IFtdLCBpbnQpOwoKdHlwZWRlZiBpbnQgKGdldF9ibG9j a190KShzdHJ1Y3QgaW5vZGUqLGxvbmcsc3RydWN0IGJ1ZmZlcl9oZWFkKixpbnQpOwoKCmV4dGVy biBpbnQgdHJ5X3RvX3JlbGVhc2VfcGFnZShzdHJ1Y3QgcGFnZSAqIHBhZ2UsIGludCBnZnBfbWFz ayk7CmV4dGVybiBpbnQgZGlzY2FyZF9iaF9wYWdlKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxv bmcsIGludCk7CgoKZXh0ZXJuIGludCBibG9ja19zeW1saW5rKHN0cnVjdCBpbm9kZSAqLCBjb25z dCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgYmxvY2tfd3JpdGVfZnVsbF9wYWdlKHN0cnVjdCBw YWdlKiwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGludCBibG9ja19yZWFkX2Z1bGxfcGFnZShzdHJ1 Y3QgcGFnZSosIGdldF9ibG9ja190Kik7CmV4dGVybiBpbnQgYmxvY2tfcHJlcGFyZV93cml0ZShz dHJ1Y3QgcGFnZSosIHVuc2lnbmVkLCB1bnNpZ25lZCwgZ2V0X2Jsb2NrX3QqKTsKZXh0ZXJuIGlu dCBjb250X3ByZXBhcmVfd3JpdGUoc3RydWN0IHBhZ2UqLCB1bnNpZ25lZCwgdW5zaWduZWQsIGdl dF9ibG9ja190KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n ICopOwpleHRlcm4gaW50IGdlbmVyaWNfY29udF9leHBhbmQoc3RydWN0IGlub2RlICppbm9kZSwg bG9mZl90IHNpemUpIDsKZXh0ZXJuIGludCBibG9ja19jb21taXRfd3JpdGUoc3RydWN0IHBhZ2Ug KnBhZ2UsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvKTsKZXh0ZXJuIGludCBibG9ja19zeW5j X3BhZ2Uoc3RydWN0IHBhZ2UgKik7CgppbnQgZ2VuZXJpY19ibG9ja19ibWFwKHN0cnVjdCBhZGRy ZXNzX3NwYWNlICosIGxvbmcsIGdldF9ibG9ja190ICopOwppbnQgZ2VuZXJpY19jb21taXRfd3Jp dGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkKTsKaW50 IGJsb2NrX3RydW5jYXRlX3BhZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9mZl90LCBnZXRf YmxvY2tfdCAqKTsKZXh0ZXJuIGludCBnZW5lcmljX2RpcmVjdF9JTyhpbnQsIHN0cnVjdCBpbm9k ZSAqLCBzdHJ1Y3Qga2lvYnVmICosIHVuc2lnbmVkIGxvbmcsIGludCwgZ2V0X2Jsb2NrX3QgKik7 CmV4dGVybiBpbnQgd2FpdGZvcl9vbmVfcGFnZShzdHJ1Y3QgcGFnZSAqKTsKZXh0ZXJuIGludCB3 cml0ZW91dF9vbmVfcGFnZShzdHJ1Y3QgcGFnZSAqKTsKCmV4dGVybiBpbnQgZ2VuZXJpY19maWxl X21tYXAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwpleHRlcm4gaW50 IGZpbGVfcmVhZF9hY3RvcihyZWFkX2Rlc2NyaXB0b3JfdCAqIGRlc2MsIHN0cnVjdCBwYWdlICpw YWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKTsKZXh0ZXJuIHNz aXplX3QgZ2VuZXJpY19maWxlX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxv ZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgZ2VuZXJpY19maWxlX3dyaXRlKHN0cnVjdCBmaWxlICos IGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiB2b2lkIGRvX2dlbmVyaWNf ZmlsZV9yZWFkKHN0cnVjdCBmaWxlICosIGxvZmZfdCAqLCByZWFkX2Rlc2NyaXB0b3JfdCAqLCBy ZWFkX2FjdG9yX3QpOwpleHRlcm4gbG9mZl90IG5vX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwg bG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVybiBsb2ZmX3QgZ2VuZXJpY19maWxlX2xs c2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbik7CmV4dGVy biBzc2l6ZV90IGdlbmVyaWNfcmVhZF9kaXIoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3Qs IGxvZmZfdCAqKTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKiBp bm9kZSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IGdlbmVyaWNfcm9fZm9wczsKCmV4dGVybiBpbnQgdmZzX3JlYWRsaW5rKHN0cnVjdCBkZW50cnkg KiwgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZzX2ZvbGxvd19saW5r KHN0cnVjdCBuYW1laWRhdGEgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBwYWdlX3JlYWRs aW5rKHN0cnVjdCBkZW50cnkgKiwgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IHBhZ2VfZm9sbG93 X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopOwpleHRlcm4gc3RydWN0 IGlub2RlX29wZXJhdGlvbnMgcGFnZV9zeW1saW5rX2lub2RlX29wZXJhdGlvbnM7CgpleHRlcm4g aW50IHZmc19yZWFkZGlyKHN0cnVjdCBmaWxlICosIGZpbGxkaXJfdCwgdm9pZCAqKTsKZXh0ZXJu IGludCBkY2FjaGVfZGlyX29wZW4oc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpleHRl cm4gaW50IGRjYWNoZV9kaXJfY2xvc2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwpl eHRlcm4gbG9mZl90IGRjYWNoZV9kaXJfbHNlZWsoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQp OwpleHRlcm4gaW50IGRjYWNoZV9kaXJfZnN5bmMoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRlbnRy eSAqLCBpbnQpOwpleHRlcm4gaW50IGRjYWNoZV9yZWFkZGlyKHN0cnVjdCBmaWxlICosIHZvaWQg KiwgZmlsbGRpcl90KTsKZXh0ZXJuIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGNhY2hlX2Rpcl9v cHM7CgpleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmdldF9mc190eXBlKGNvbnN0IGNo YXIgKm5hbWUpOwpleHRlcm4gc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfc3VwZXIoa2Rldl90KTsK ZXh0ZXJuIHZvaWQgZHJvcF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKc3RhdGljIGlu bGluZSBpbnQgaXNfbW91bnRlZChrZGV2X3QgZGV2KQp7CiAgICAgICAgc3RydWN0IHN1cGVyX2Js b2NrICpzYiA9IGdldF9zdXBlcihkZXYpOwogICAgICAgIGlmIChzYikgewogICAgICAgICAgICAg ICAgZHJvcF9zdXBlcihzYik7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAg ICAgICAgcmV0dXJuIDA7Cn0KdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVzdGVyKGtkZXZfdCwg aW50IGJbXSwgaW50KTsKdW5zaWduZWQgbG9uZyBnZW5lcmF0ZV9jbHVzdGVyX3N3YWIzMihrZGV2 X3QsIGludCBiW10sIGludCk7CmV4dGVybiBrZGV2X3QgUk9PVF9ERVY7CmV4dGVybiBjaGFyIHJv b3RfZGV2aWNlX25hbWVbXTsKCgpleHRlcm4gdm9pZCBzaG93X2J1ZmZlcnModm9pZCk7CgoKCgoK ZXh0ZXJuIHNzaXplX3QgY2hhcl9yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBs b2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90IGJsb2NrX3JlYWQoc3RydWN0IGZpbGUgKiwgY2hhciAq LCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIGludCByZWFkX2FoZWFkW107CgpleHRlcm4gc3Np emVfdCBjaGFyX3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2Zm X3QgKik7CmV4dGVybiBzc2l6ZV90IGJsb2NrX3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IGNo YXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CgpleHRlcm4gaW50IGZpbGVfZnN5bmMoc3RydWN0IGZp bGUgKiwgc3RydWN0IGRlbnRyeSAqLCBpbnQpOwpleHRlcm4gaW50IGdlbmVyaWNfYnVmZmVyX2Zk YXRhc3luYyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBsb25nIHN0YXJ0X2lkeCwgdW5z aWduZWQgbG9uZyBlbmRfaWR4KTsKZXh0ZXJuIGludCBnZW5lcmljX29zeW5jX2lub2RlKHN0cnVj dCBpbm9kZSAqLCBpbnQpOwoKCgoKZXh0ZXJuIGludCBpbm9kZV9jaGFuZ2Vfb2soc3RydWN0IGlu b2RlICosIHN0cnVjdCBpYXR0ciAqKTsKZXh0ZXJuIGludCBpbm9kZV9zZXRhdHRyKHN0cnVjdCBp bm9kZSAqLCBzdHJ1Y3QgaWF0dHIgKik7CiMgMTUxOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIHN0cnVjdCBkZW50cnkgKmxvY2tfcGFyZW50KHN0cnVj dCBkZW50cnkgKmRlbnRyeSkKewogICAgICAgIHN0cnVjdCBkZW50cnkgKmRpciA9IGRnZXQoZGVu dHJ5LT5kX3BhcmVudCk7CgogICAgICAgIGRvd24oJmRpci0+ZF9pbm9kZS0+aV9zZW0pOwogICAg ICAgIHJldHVybiBkaXI7Cn0KCnN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqZ2V0X3BhcmVu dChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKICAgICAgICByZXR1cm4gZGdldChkZW50cnktPmRf cGFyZW50KTsKfQoKc3RhdGljIGlubGluZSB2b2lkIHVubG9ja19kaXIoc3RydWN0IGRlbnRyeSAq ZGlyKQp7CiAgICAgICAgdXAoJmRpci0+ZF9pbm9kZS0+aV9zZW0pOwogICAgICAgIGRwdXQoZGly KTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZCBkb3VibGVfZG93bihzdHJ1Y3Qgc2VtYXBob3Jl ICpzMSwgc3RydWN0IHNlbWFwaG9yZSAqczIpCnsKICAgICAgICBpZiAoczEgIT0gczIpIHsKICAg ICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykgczIp IHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczI7CiAg ICAgICAgICAgICAgICAgICAgICAgIHMyID0gczE7IHMxID0gdG1wOwogICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgZG93bihzMSk7CiAgICAgICAgfQogICAgICAgIGRvd24oczIpOwp9 CiMgMTU2MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5l IHZvaWQgdHJpcGxlX2Rvd24oc3RydWN0IHNlbWFwaG9yZSAqczEsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICpzMiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgaWYgKHMxICE9IHMyKSB7 CiAgICAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcp IHMyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAo dW5zaWduZWQgbG9uZykgczMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz MyA9IHMxOyBzMSA9IHRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIHMxIDwgKHVuc2lnbmVkIGxvbmcpIHMyKSB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0g czI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMTsgczEgPSB0bXA7CiAg ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg ICAgICAgICAgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgczEgPCAodW5zaWduZWQgbG9uZykg czMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0 bXAgPSBzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHMxOyBzMSA9IHRt cDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAo KHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWFwaG9yZSAqdG1wID0gczM7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgczMgPSBzMjsgczIgPSB0bXA7CiAgICAgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRvd24oczEpOwogICAg ICAgIH0gZWxzZSBpZiAoKHVuc2lnbmVkIGxvbmcpIHMyIDwgKHVuc2lnbmVkIGxvbmcpIHMzKSB7 CiAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2VtYXBob3JlICp0bXAgPSBzMzsKICAgICAgICAgICAg ICAgIHMzID0gczI7IHMyID0gdG1wOwogICAgICAgIH0KICAgICAgICBkb3duKHMyKTsKICAgICAg ICBkb3duKHMzKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91cChzdHJ1Y3Qgc2VtYXBo b3JlICpzMSwgc3RydWN0IHNlbWFwaG9yZSAqczIpCnsKICAgICAgICB1cChzMSk7CiAgICAgICAg aWYgKHMxICE9IHMyKQogICAgICAgICAgICAgICAgdXAoczIpOwp9CgpzdGF0aWMgaW5saW5lIHZv aWQgdHJpcGxlX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnMxLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgKnMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBzZW1hcGhvcmUgKnMzKQp7CiAgICAgICAgdXAoczEpOwogICAgICAgIGlmIChzMSAh PSBzMikKICAgICAgICAgICAgICAgIHVwKHMyKTsKICAgICAgICB1cChzMyk7Cn0KCnN0YXRpYyBp bmxpbmUgdm9pZCBkb3VibGVfbG9jayhzdHJ1Y3QgZGVudHJ5ICpkMSwgc3RydWN0IGRlbnRyeSAq ZDIpCnsKICAgICAgICBkb3VibGVfZG93bigmZDEtPmRfaW5vZGUtPmlfc2VtLCAmZDItPmRfaW5v ZGUtPmlfc2VtKTsKfQoKc3RhdGljIGlubGluZSB2b2lkIGRvdWJsZV91bmxvY2soc3RydWN0IGRl bnRyeSAqZDEsIHN0cnVjdCBkZW50cnkgKmQyKQp7CiAgICAgICAgZG91YmxlX3VwKCZkMS0+ZF9p bm9kZS0+aV9zZW0sJmQyLT5kX2lub2RlLT5pX3NlbSk7CiAgICAgICAgZHB1dChkMSk7CiAgICAg ICAgZHB1dChkMik7Cn0KIyAxOCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYXBhYmls aXR5LmgiIDIKIyAzMiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5Lmgi CnR5cGVkZWYgc3RydWN0IF9fdXNlcl9jYXBfaGVhZGVyX3N0cnVjdCB7CiAgICAgICAgX191MzIg dmVyc2lvbjsKICAgICAgICBpbnQgcGlkOwp9ICpjYXBfdXNlcl9oZWFkZXJfdDsKCnR5cGVkZWYg c3RydWN0IF9fdXNlcl9jYXBfZGF0YV9zdHJ1Y3QgewogICAgICAgIF9fdTMyIGVmZmVjdGl2ZTsK ICAgICAgICBfX3UzMiBwZXJtaXR0ZWQ7CiAgICAgICAgX191MzIgaW5oZXJpdGFibGU7Cn0gKmNh cF91c2VyX2RhdGFfdDsKIyA1NSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9jYXBhYmls aXR5LmgiCnR5cGVkZWYgX191MzIga2VybmVsX2NhcF90OwojIDI4NiAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCmV4dGVybiBrZXJuZWxfY2FwX3QgY2FwX2JzZXQ7 CiMgMzE0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIKc3RhdGlj IGlubGluZSBrZXJuZWxfY2FwX3QgY2FwX2NvbWJpbmUoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9j YXBfdCBiKQp7CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3QpID0gKGEpIHwgKGIp OwogICAgIHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5lIGtlcm5lbF9jYXBfdCBjYXBfaW50 ZXJzZWN0KGtlcm5lbF9jYXBfdCBhLCBrZXJuZWxfY2FwX3QgYikKewogICAgIGtlcm5lbF9jYXBf dCBkZXN0OwogICAgIChkZXN0KSA9IChhKSAmIChiKTsKICAgICByZXR1cm4gZGVzdDsKfQoKc3Rh dGljIGlubGluZSBrZXJuZWxfY2FwX3QgY2FwX2Ryb3Aoa2VybmVsX2NhcF90IGEsIGtlcm5lbF9j YXBfdCBkcm9wKQp7CiAgICAga2VybmVsX2NhcF90IGRlc3Q7CiAgICAgKGRlc3QpID0gKGEpICYg fihkcm9wKTsKICAgICByZXR1cm4gZGVzdDsKfQoKc3RhdGljIGlubGluZSBrZXJuZWxfY2FwX3Qg Y2FwX2ludmVydChrZXJuZWxfY2FwX3QgYykKewogICAgIGtlcm5lbF9jYXBfdCBkZXN0OwogICAg IChkZXN0KSA9IH4oYyk7CiAgICAgcmV0dXJuIGRlc3Q7Cn0KIyA2ICIvdXNyL3NyYy9saW51eC9p bmNsdWRlL2xpbnV4L2JpbmZtdHMuaCIgMgojIDIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xp bnV4L2JpbmZtdHMuaCIKc3RydWN0IGxpbnV4X2JpbnBybXsKICAgICAgICBjaGFyIGJ1ZlsxMjhd OwogICAgICAgIHN0cnVjdCBwYWdlICpwYWdlWzMyXTsKICAgICAgICB1bnNpZ25lZCBsb25nIHA7 CiAgICAgICAgaW50IHNoX2Jhbmc7CiAgICAgICAgc3RydWN0IGZpbGUgKiBmaWxlOwogICAgICAg IGludCBlX3VpZCwgZV9naWQ7CiAgICAgICAga2VybmVsX2NhcF90IGNhcF9pbmhlcml0YWJsZSwg Y2FwX3Blcm1pdHRlZCwgY2FwX2VmZmVjdGl2ZTsKICAgICAgICBpbnQgYXJnYywgZW52YzsKICAg ICAgICBjaGFyICogZmlsZW5hbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb2FkZXIsIGV4ZWM7 Cn07CgoKCgoKc3RydWN0IGxpbnV4X2JpbmZtdCB7CiAgICAgICAgc3RydWN0IGxpbnV4X2JpbmZt dCAqIG5leHQ7CiAgICAgICAgc3RydWN0IG1vZHVsZSAqbW9kdWxlOwogICAgICAgIGludCAoKmxv YWRfYmluYXJ5KShzdHJ1Y3QgbGludXhfYmlucHJtICosIHN0cnVjdCBwdF9yZWdzICogcmVncyk7 CiAgICAgICAgaW50ICgqbG9hZF9zaGxpYikoc3RydWN0IGZpbGUgKik7CiAgICAgICAgaW50ICgq Y29yZV9kdW1wKShsb25nIHNpZ25yLCBzdHJ1Y3QgcHRfcmVncyAqIHJlZ3MsIHN0cnVjdCBmaWxl ICogZmlsZSk7CiAgICAgICAgdW5zaWduZWQgbG9uZyBtaW5fY29yZWR1bXA7Cn07CgpleHRlcm4g aW50IHJlZ2lzdGVyX2JpbmZtdChzdHJ1Y3QgbGludXhfYmluZm10ICopOwpleHRlcm4gaW50IHVu cmVnaXN0ZXJfYmluZm10KHN0cnVjdCBsaW51eF9iaW5mbXQgKik7CgpleHRlcm4gaW50IHByZXBh cmVfYmlucHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKik7CmV4dGVybiB2b2lkIHJlbW92ZV9hcmdf emVybyhzdHJ1Y3QgbGludXhfYmlucHJtICopOwpleHRlcm4gaW50IHNlYXJjaF9iaW5hcnlfaGFu ZGxlcihzdHJ1Y3QgbGludXhfYmlucHJtICosc3RydWN0IHB0X3JlZ3MgKik7CmV4dGVybiBpbnQg Zmx1c2hfb2xkX2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pOwpleHRlcm4gaW50IHNl dHVwX2FyZ19wYWdlcyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSk7CmV4dGVybiBpbnQgY29w eV9zdHJpbmdzKGludCBhcmdjLGNoYXIgKiogYXJndixzdHJ1Y3QgbGludXhfYmlucHJtICpicHJt KTsKZXh0ZXJuIGludCBjb3B5X3N0cmluZ3Nfa2VybmVsKGludCBhcmdjLGNoYXIgKiogYXJndixz dHJ1Y3QgbGludXhfYmlucHJtICpicHJtKTsKZXh0ZXJuIHZvaWQgY29tcHV0ZV9jcmVkcyhzdHJ1 Y3QgbGludXhfYmlucHJtICpiaW5wcm0pOwpleHRlcm4gaW50IGRvX2NvcmVkdW1wKGxvbmcgc2ln bnIsIHN0cnVjdCBwdF9yZWdzICogcmVncyk7CmV4dGVybiB2b2lkIHNldF9iaW5mbXQoc3RydWN0 IGxpbnV4X2JpbmZtdCAqbmV3KTsKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z Y2hlZC5oIiAyCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1lcy5oIiAx CgoKCnN0cnVjdCB0bXMgewogICAgICAgIGNsb2NrX3QgdG1zX3V0aW1lOwogICAgICAgIGNsb2Nr X3QgdG1zX3N0aW1lOwogICAgICAgIGNsb2NrX3QgdG1zX2N1dGltZTsKICAgICAgICBjbG9ja190 IHRtc19jc3RpbWU7Cn07CiMgMTQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQu aCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZXguaCIgMQojIDE1MiAi L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90aW1leC5oIgojIDEgIi91c3Ivc3JjL2xpbnV4 L2luY2x1ZGUvYXNtL3RpbWV4LmgiIDEKIyAxMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v dGltZXguaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9tc3IuaCIgMQojIDExICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90aW1leC5oIiAyCiMgMzcgIi91c3Ivc3JjL2xpbnV4 L2luY2x1ZGUvYXNtL3RpbWV4LmgiCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGN5Y2xlc190 OwoKZXh0ZXJuIGN5Y2xlc190IGNhY2hlZmx1c2hfdGltZTsKCnN0YXRpYyBpbmxpbmUgY3ljbGVz X3QgZ2V0X2N5Y2xlcyAodm9pZCkKewoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXQ7 CgogICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJyZHRzYyIgOiAiPUEiIChyZXQpKTsKICAg ICAgICByZXR1cm4gcmV0OwoKfQoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgY3B1X2toejsKIyAxNTMg Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdGltZXguaCIgMgojIDE2MSAiL3Vzci9zcmMv bGludXgvaW5jbHVkZS9saW51eC90aW1leC5oIgpzdHJ1Y3QgdGltZXggewogICAgICAgIHVuc2ln bmVkIGludCBtb2RlczsKICAgICAgICBsb25nIG9mZnNldDsKICAgICAgICBsb25nIGZyZXE7CiAg ICAgICAgbG9uZyBtYXhlcnJvcjsKICAgICAgICBsb25nIGVzdGVycm9yOwogICAgICAgIGludCBz dGF0dXM7CiAgICAgICAgbG9uZyBjb25zdGFudDsKICAgICAgICBsb25nIHByZWNpc2lvbjsKICAg ICAgICBsb25nIHRvbGVyYW5jZTsKCgogICAgICAgIHN0cnVjdCB0aW1ldmFsIHRpbWU7CiAgICAg ICAgbG9uZyB0aWNrOwoKICAgICAgICBsb25nIHBwc2ZyZXE7CiAgICAgICAgbG9uZyBqaXR0ZXI7 CiAgICAgICAgaW50IHNoaWZ0OwogICAgICAgIGxvbmcgc3RhYmlsOwogICAgICAgIGxvbmcgaml0 Y250OwogICAgICAgIGxvbmcgY2FsY250OwogICAgICAgIGxvbmcgZXJyY250OwogICAgICAgIGxv bmcgc3RiY250OwoKICAgICAgICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwog ICAgICAgIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7IGludCA6MzI7CiAgICAgICAgaW50IDoz MjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKfTsKIyAyNTMgIi91c3Ivc3JjL2xpbnV4L2lu Y2x1ZGUvbGludXgvdGltZXguaCIKZXh0ZXJuIGxvbmcgdGljazsKZXh0ZXJuIGludCB0aWNrYWRq OwoKCgoKZXh0ZXJuIGludCB0aW1lX3N0YXRlOwpleHRlcm4gaW50IHRpbWVfc3RhdHVzOwpleHRl cm4gbG9uZyB0aW1lX29mZnNldDsKZXh0ZXJuIGxvbmcgdGltZV9jb25zdGFudDsKZXh0ZXJuIGxv bmcgdGltZV90b2xlcmFuY2U7CmV4dGVybiBsb25nIHRpbWVfcHJlY2lzaW9uOwpleHRlcm4gbG9u ZyB0aW1lX21heGVycm9yOwpleHRlcm4gbG9uZyB0aW1lX2VzdGVycm9yOwoKZXh0ZXJuIGxvbmcg dGltZV9waGFzZTsKZXh0ZXJuIGxvbmcgdGltZV9mcmVxOwpleHRlcm4gbG9uZyB0aW1lX2FkajsK ZXh0ZXJuIGxvbmcgdGltZV9yZWZ0aW1lOwoKZXh0ZXJuIGxvbmcgdGltZV9hZGp1c3Q7CgoKZXh0 ZXJuIGxvbmcgcHBzX29mZnNldDsKZXh0ZXJuIGxvbmcgcHBzX2ppdHRlcjsKZXh0ZXJuIGxvbmcg cHBzX2ZyZXE7CmV4dGVybiBsb25nIHBwc19zdGFiaWw7CmV4dGVybiBsb25nIHBwc192YWxpZDsK CgpleHRlcm4gaW50IHBwc19zaGlmdDsKZXh0ZXJuIGxvbmcgcHBzX2ppdGNudDsKZXh0ZXJuIGxv bmcgcHBzX2NhbGNudDsKZXh0ZXJuIGxvbmcgcHBzX2VycmNudDsKZXh0ZXJuIGxvbmcgcHBzX3N0 YmNudDsKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAi L3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9yYnRyZWUuaCIgMQojIDEwMCAiL3Vzci9zcmMv bGludXgvaW5jbHVkZS9saW51eC9yYnRyZWUuaCIKdHlwZWRlZiBzdHJ1Y3QgcmJfbm9kZV9zCnsK ICAgICAgICBzdHJ1Y3QgcmJfbm9kZV9zICogcmJfcGFyZW50OwogICAgICAgIGludCByYl9jb2xv cjsKCgogICAgICAgIHN0cnVjdCByYl9ub2RlX3MgKiByYl9yaWdodDsKICAgICAgICBzdHJ1Y3Qg cmJfbm9kZV9zICogcmJfbGVmdDsKfQpyYl9ub2RlX3Q7Cgp0eXBlZGVmIHN0cnVjdCByYl9yb290 X3MKewogICAgICAgIHN0cnVjdCByYl9ub2RlX3MgKiByYl9ub2RlOwp9CnJiX3Jvb3RfdDsKCgoK CgpleHRlcm4gdm9pZCByYl9pbnNlcnRfY29sb3IocmJfbm9kZV90ICosIHJiX3Jvb3RfdCAqKTsK ZXh0ZXJuIHZvaWQgcmJfZXJhc2UocmJfbm9kZV90ICosIHJiX3Jvb3RfdCAqKTsKCnN0YXRpYyBp bmxpbmUgdm9pZCByYl9saW5rX25vZGUocmJfbm9kZV90ICogbm9kZSwgcmJfbm9kZV90ICogcGFy ZW50LCByYl9ub2RlX3QgKiogcmJfbGluaykKewogICAgICAgIG5vZGUtPnJiX3BhcmVudCA9IHBh cmVudDsKICAgICAgICBub2RlLT5yYl9jb2xvciA9IDA7CiAgICAgICAgbm9kZS0+cmJfbGVmdCA9 IG5vZGUtPnJiX3JpZ2h0ID0gKCh2b2lkICopMCk7CgogICAgICAgICpyYl9saW5rID0gbm9kZTsK fQojIDE2ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCgoKCgojIDEg Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL21tdS5oIiAxCgoKCgoKCgp0eXBlZGVmIHN0cnVj dCB7CiAgICAgICAgdm9pZCAqc2VnbWVudHM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHV2YWxp ZDsKfSBtbV9jb250ZXh0X3Q7CiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2No ZWQuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NtcC5oIiAxCiMgMTQg Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc21wLmgiCiMgMSAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9hc20vc21wLmgiIDEKIyAxNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc21w LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiIDEKIyAxOCAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j bHVkZS9hc20vYXBpY2RlZi5oIiAxCiMgMTIyICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9h cGljZGVmLmgiCnN0cnVjdCBsb2NhbF9hcGljIHsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQg aW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wMTsKCiAgICAgICAgc3RydWN0IHsgdW5z aWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wMjsKCiAgICAgICAgc3RydWN0 IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyNCwKICAgICAg ICAgICAgICAgICAgICAgICAgcGh5c19hcGljX2lkIDogNCwKICAgICAgICAgICAgICAgICAgICAg ICAgX19yZXNlcnZlZF8yIDogNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2Vy dmVkWzNdOwogICAgICAgIH0gaWQ7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uIDogOCwKICAgICAgICAgICAgICAgICAg ICAgICAgX19yZXNlcnZlZF8xIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2x2dCA6 IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDg7CiAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IHZlcnNpb247CgogICAg ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDM7 CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2 ZWRfMDQ7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9f cmVzZXJ2ZWRfMDU7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRd OyB9IF9fcmVzZXJ2ZWRfMDY7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgcHJpb3JpdHkgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVk XzEgOiAyNDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAg ICAgICAgfSB0cHI7CgogICAgICAgIGNvbnN0CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBwcmlvcml0eSA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9f cmVzZXJ2ZWRfMSA6IDI0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRf MlszXTsKICAgICAgICB9IGFwcjsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IHByaW9yaXR5IDogOCwKICAgICAgICAgICAgICAgICAg ICAgICAgX19yZXNlcnZlZF8xIDogMjQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19y ZXNlcnZlZF8yWzNdOwogICAgICAgIH0gcHByOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IGVvaTsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jl c2VydmVkWzNdOwogICAgICAgIH0gZW9pOwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQg X19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA3OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAogICAgICAgICAgICAgICAg ICAgICAgICBsb2dpY2FsX2Rlc3QgOiA4OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9f cmVzZXJ2ZWRfMlszXTsKICAgICAgICB9IGxkcjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyOCwKICAgICAgICAgICAgICAgICAg ICAgICAgbW9kZWwgOiA0OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRf MlszXTsKICAgICAgICB9IGRmcjsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBzcHVyaW91c192ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBh cGljX2VuYWJsZWQgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBmb2N1c19jcHUgOiAxLAog ICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAyMjsKICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgfSBzdnI7CgogICAgICAgIHN0 cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CiAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IGlzciBbOF07CgogICAg ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CiAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IHRtciBbOF07 CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7 CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKICAgICAgICB9IGly ciBbOF07CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzZW5kX2NzX2Vycm9yIDogMSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlX2NzX2Vycm9yIDogMSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZW5kX2FjY2VwdF9lcnJvciA6IDEsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVjZWl2ZV9hY2NlcHRfZXJyb3IgOiAxLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VuZF9pbGxlZ2FsX3ZlY3RvciA6IDEsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVjZWl2ZV9pbGxlZ2FsX3ZlY3RvciA6IDEsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWxsZWdhbF9yZWdpc3Rlcl9hZGRyZXNzIDogMSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAyNDsKICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAgICAgICAgICAgICAgIH0gZXJy b3JfYml0czsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBlcnJvcnM7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgICAgICAgICB9IGFsbF9lcnJvcnM7CiAgICAgICAg fSBlc3I7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9f cmVzZXJ2ZWRfMDg7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRd OyB9IF9fcmVzZXJ2ZWRfMDk7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2Vy dmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTA7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTE7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVk IGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTI7CgogICAgICAgIHN0cnVjdCB7IHVu c2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTM7CgogICAgICAgIHN0cnVj dCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTQ7CgogICAgICAg IHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgICAg ICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgICAgICAgICAgICAgICAgICAg ICAgIGRlc3RpbmF0aW9uX21vZGUgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVy eV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAog ICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAg IHRyaWdnZXIgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAyLAog ICAgICAgICAgICAgICAgICAgICAgICBzaG9ydGhhbmQgOiAyLAogICAgICAgICAgICAgICAgICAg ICAgICBfX3Jlc2VydmVkXzMgOiAxMjsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jl c2VydmVkXzRbM107CiAgICAgICAgfSBpY3IxOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg ICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNl cnZlZF8xIDogMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGh5c19kZXN0IDog NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiA0OwogICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8zIDogMjQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNhbF9kZXN0IDogODsKICAgICAgICAgICAg ICAgIH0gZGVzdDsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107 CiAgICAgICAgfSBpY3IyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6 IDQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgICAgICAg ICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMiA6IDMsCiAgICAgICAgICAgICAgICAgICAgICAg IG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICB0aW1lcl9tb2RlIDogMSwKICAgICAg ICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8zIDogMTQ7CiAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwogICAgICAgIH0gbHZ0X3RpbWVyOwoKICAgICAgICBz dHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE1OwoKICAg ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAg ICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAogICAgICAgICAgICAgICAg ICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVy eV9zdGF0dXMgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAzLAog ICAgICAgICAgICAgICAgICAgICAgICBtYXNrIDogMSwKICAgICAgICAgICAgICAgICAgICAgICAg X19yZXNlcnZlZF8zIDogMTU7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZl ZF80WzNdOwogICAgICAgIH0gbHZ0X3BjOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAg ICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2 ZXJ5X21vZGUgOiAzLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAxLAog ICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICAgICAgICAgICAg ICAgICAgICAgICBwb2xhcml0eSA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9p cnIgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIDogMSwKICAgICAgICAgICAg ICAgICAgICAgICAgbWFzayA6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRf MiA6IDE1OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICAg ICAgICB9IGx2dF9saW50MDsKCiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgICAgICAgICBkZWxpdmVyeV9tb2Rl IDogMywKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogMSwKICAgICAgICAg ICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAgICAgICAg ICAgcG9sYXJpdHkgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfaXJyIDogMSwK ICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciA6IDEsCiAgICAgICAgICAgICAgICAgICAg ICAgIG1hc2sgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzIgOiAxNTsK ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CiAgICAgICAgfSBs dnRfbGludDE7CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg dmVjdG9yIDogOCwKICAgICAgICAgICAgICAgICAgICAgICAgX19yZXNlcnZlZF8xIDogNCwKICAg ICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgICAgICAgICAgICAg ICAgICAgICAgX19yZXNlcnZlZF8yIDogMywKICAgICAgICAgICAgICAgICAgICAgICAgbWFzayA6 IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMyA6IDE1OwogICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKICAgICAgICB9IGx2dF9lcnJvcjsK CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpbml0aWFsX2Nv dW50OwogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKICAgICAg ICB9IHRpbWVyX2ljcjsKCiAgICAgICAgY29uc3QKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IGN1cnJfY291bnQ7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgX19yZXNlcnZlZF8yWzNdOwogICAgICAgIH0gdGltZXJfY2NyOwoKICAgICAgICBzdHJ1Y3Qg eyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE2OwoKICAgICAgICBz dHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE3OwoKICAg ICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE4 OwoKICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2Vy dmVkXzE5OwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRp dmlzb3IgOiA0LAogICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiAyODsKICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiAgICAgICAgfSB0aW1l cl9kY3I7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9f cmVzZXJ2ZWRfMjA7Cgp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIyAxOSAiL3Vzci9zcmMv bGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiIDIKIyA1MCAiL3Vzci9zcmMvbGludXgvaW5jbHVk ZS9hc20vZml4bWFwLmgiCmVudW0gZml4ZWRfYWRkcmVzc2VzIHsKCiAgICAgICAgRklYX0FQSUNf QkFTRSwKCgogICAgICAgIEZJWF9JT19BUElDX0JBU0VfMCwKICAgICAgICBGSVhfSU9fQVBJQ19C QVNFX0VORCA9IEZJWF9JT19BUElDX0JBU0VfMCArIDggLTEsCiMgNjggIi91c3Ivc3JjL2xpbnV4 L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIgogICAgICAgIF9fZW5kX29mX3Blcm1hbmVudF9maXhlZF9h ZGRyZXNzZXMsCgoKICAgICAgICBGSVhfQlRNQVBfRU5EID0gX19lbmRfb2ZfcGVybWFuZW50X2Zp eGVkX2FkZHJlc3NlcywKICAgICAgICBGSVhfQlRNQVBfQkVHSU4gPSBGSVhfQlRNQVBfRU5EICsg MTYgLSAxLAogICAgICAgIF9fZW5kX29mX2ZpeGVkX2FkZHJlc3Nlcwp9OwoKZXh0ZXJuIHZvaWQg X19zZXRfZml4bWFwIChlbnVtIGZpeGVkX2FkZHJlc3NlcyBpZHgsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBoeXMsIHBncHJvdF90IGZsYWdz KTsKIyA5OSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vZml4bWFwLmgiCmV4dGVybiB2b2lk IF9fdGhpc19maXhtYXBfZG9lc19ub3RfZXhpc3Qodm9pZCk7CgoKCgoKCnN0YXRpYyBpbmxpbmUg dW5zaWduZWQgbG9uZyBmaXhfdG9fdmlydChjb25zdCB1bnNpZ25lZCBpbnQgaWR4KQp7CiMgMTE3 ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9maXhtYXAuaCIKICAgICAgICBpZiAoaWR4ID49 IF9fZW5kX29mX2ZpeGVkX2FkZHJlc3NlcykKICAgICAgICAgICAgICAgIF9fdGhpc19maXhtYXBf ZG9lc19ub3RfZXhpc3QoKTsKCiAgICAgICAgcmV0dXJuICgoMHhmZmZmZTAwMFVMKSAtICgoaWR4 KSA8PCAxMikpOwp9CiMgMTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NtcC5oIiAyCgoj IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL21wc3BlYy5oIiAxCiMgMjcgIi91c3Ivc3Jj L2xpbnV4L2luY2x1ZGUvYXNtL21wc3BlYy5oIgpzdHJ1Y3QgaW50ZWxfbXBfZmxvYXRpbmcKewog ICAgICAgIGNoYXIgbXBmX3NpZ25hdHVyZVs0XTsKICAgICAgICB1bnNpZ25lZCBsb25nIG1wZl9w aHlzcHRyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBmX2xlbmd0aDsKICAgICAgICB1bnNpZ25l ZCBjaGFyIG1wZl9zcGVjaWZpY2F0aW9uOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBmX2NoZWNr c3VtOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBmX2ZlYXR1cmUxOwogICAgICAgIHVuc2lnbmVk IGNoYXIgbXBmX2ZlYXR1cmUyOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBmX2ZlYXR1cmUzOwog ICAgICAgIHVuc2lnbmVkIGNoYXIgbXBmX2ZlYXR1cmU0OwogICAgICAgIHVuc2lnbmVkIGNoYXIg bXBmX2ZlYXR1cmU1Owp9OwoKc3RydWN0IG1wX2NvbmZpZ190YWJsZQp7CiAgICAgICAgY2hhciBt cGNfc2lnbmF0dXJlWzRdOwoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtcGNfbGVuZ3RoOwogICAg ICAgIGNoYXIgbXBjX3NwZWM7CiAgICAgICAgY2hhciBtcGNfY2hlY2tzdW07CiAgICAgICAgY2hh ciBtcGNfb2VtWzhdOwogICAgICAgIGNoYXIgbXBjX3Byb2R1Y3RpZFsxMl07CiAgICAgICAgdW5z aWduZWQgbG9uZyBtcGNfb2VtcHRyOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1wY19vZW1zaXpl OwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1wY19vZW1jb3VudDsKICAgICAgICB1bnNpZ25lZCBs b25nIG1wY19sYXBpYzsKICAgICAgICB1bnNpZ25lZCBsb25nIHJlc2VydmVkOwp9OwojIDY2ICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9tcHNwZWMuaCIKc3RydWN0IG1wY19jb25maWdfcHJv Y2Vzc29yCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY190eXBlOwogICAgICAgIHVuc2lnbmVk IGNoYXIgbXBjX2FwaWNpZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19hcGljdmVyOwogICAg ICAgIHVuc2lnbmVkIGNoYXIgbXBjX2NwdWZsYWc7CgoKICAgICAgICB1bnNpZ25lZCBsb25nIG1w Y19jcHVmZWF0dXJlOwoKCgogICAgICAgIHVuc2lnbmVkIGxvbmcgbXBjX2ZlYXR1cmVmbGFnOwog ICAgICAgIHVuc2lnbmVkIGxvbmcgbXBjX3Jlc2VydmVkWzJdOwp9OwoKc3RydWN0IG1wY19jb25m aWdfYnVzCnsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY190eXBlOwogICAgICAgIHVuc2lnbmVk IGNoYXIgbXBjX2J1c2lkOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2J1c3R5cGVbNl0gX19h dHRyaWJ1dGUoKHBhY2tlZCkpOwp9OwojIDEwOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20v bXBzcGVjLmgiCnN0cnVjdCBtcGNfY29uZmlnX2lvYXBpYwp7CiAgICAgICAgdW5zaWduZWQgY2hh ciBtcGNfdHlwZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19hcGljaWQ7CiAgICAgICAgdW5z aWduZWQgY2hhciBtcGNfYXBpY3ZlcjsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19mbGFnczsK CiAgICAgICAgdW5zaWduZWQgbG9uZyBtcGNfYXBpY2FkZHI7Cn07CgpzdHJ1Y3QgbXBjX2NvbmZp Z19pbnRzcmMKewogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX3R5cGU7CiAgICAgICAgdW5zaWdu ZWQgY2hhciBtcGNfaXJxdHlwZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtcGNfaXJxZmxhZzsK ICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19zcmNidXM7CiAgICAgICAgdW5zaWduZWQgY2hhciBt cGNfc3JjYnVzaXJxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX2RzdGFwaWM7CiAgICAgICAg dW5zaWduZWQgY2hhciBtcGNfZHN0aXJxOwp9OwoKZW51bSBtcF9pcnFfc291cmNlX3R5cGVzIHsK ICAgICAgICBtcF9JTlQgPSAwLAogICAgICAgIG1wX05NSSA9IDEsCiAgICAgICAgbXBfU01JID0g MiwKICAgICAgICBtcF9FeHRJTlQgPSAzCn07CgoKCgoKCnN0cnVjdCBtcGNfY29uZmlnX2xpbnRz cmMKewogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX3R5cGU7CiAgICAgICAgdW5zaWduZWQgY2hh ciBtcGNfaXJxdHlwZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBtcGNfaXJxZmxhZzsKICAgICAg ICB1bnNpZ25lZCBjaGFyIG1wY19zcmNidXNpZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIG1wY19z cmNidXNpcnE7CiAgICAgICAgdW5zaWduZWQgY2hhciBtcGNfZGVzdGFwaWM7CgogICAgICAgIHVu c2lnbmVkIGNoYXIgbXBjX2Rlc3RhcGljbGludDsKfTsKCnN0cnVjdCBtcF9jb25maWdfb2VtdGFi bGUKewogICAgICAgIGNoYXIgb2VtX3NpZ25hdHVyZVs0XTsKCiAgICAgICAgdW5zaWduZWQgc2hv cnQgb2VtX2xlbmd0aDsKICAgICAgICBjaGFyIG9lbV9yZXY7CiAgICAgICAgY2hhciBvZW1fY2hl Y2tzdW07CiAgICAgICAgY2hhciBtcGNfb2VtWzhdOwp9OwoKc3RydWN0IG1wY19jb25maWdfdHJh bnNsYXRpb24KewogICAgICAgIHVuc2lnbmVkIGNoYXIgbXBjX3R5cGU7CiAgICAgICAgdW5zaWdu ZWQgY2hhciB0cmFuc19sZW47CiAgICAgICAgdW5zaWduZWQgY2hhciB0cmFuc190eXBlOwogICAg ICAgIHVuc2lnbmVkIGNoYXIgdHJhbnNfcXVhZDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRyYW5z X2dsb2JhbDsKICAgICAgICB1bnNpZ25lZCBjaGFyIHRyYW5zX2xvY2FsOwogICAgICAgIHVuc2ln bmVkIHNob3J0IHRyYW5zX3Jlc2VydmVkOwp9OwojIDE5NCAiL3Vzci9zcmMvbGludXgvaW5jbHVk ZS9hc20vbXBzcGVjLmgiCmVudW0gbXBfYnVzdHlwZSB7CiAgICAgICAgTVBfQlVTX0lTQSA9IDEs CiAgICAgICAgTVBfQlVTX0VJU0EsCiAgICAgICAgTVBfQlVTX1BDSSwKICAgICAgICBNUF9CVVNf TUNBCn07CmV4dGVybiBpbnQgbXBfYnVzX2lkX3RvX3R5cGUgWzMyXTsKZXh0ZXJuIGludCBtcF9i dXNfaWRfdG9fbm9kZSBbMzJdOwpleHRlcm4gaW50IG1wX2J1c19pZF90b19sb2NhbCBbMzJdOwpl eHRlcm4gaW50IHF1YWRfbG9jYWxfdG9fbXBfYnVzX2lkIFszMi80XVs0XTsKZXh0ZXJuIGludCBt cF9idXNfaWRfdG9fcGNpX2J1cyBbMzJdOwoKZXh0ZXJuIHVuc2lnbmVkIGludCBib290X2NwdV9w aHlzaWNhbF9hcGljaWQ7CmV4dGVybiB1bnNpZ25lZCBsb25nIHBoeXNfY3B1X3ByZXNlbnRfbWFw OwpleHRlcm4gaW50IHNtcF9mb3VuZF9jb25maWc7CmV4dGVybiB2b2lkIGZpbmRfc21wX2NvbmZp ZyAodm9pZCk7CmV4dGVybiB2b2lkIGdldF9zbXBfY29uZmlnICh2b2lkKTsKZXh0ZXJuIGludCBu cl9pb2FwaWNzOwpleHRlcm4gaW50IGFwaWNfdmVyc2lvbiBbMTZdOwpleHRlcm4gaW50IG1wX2J1 c19pZF90b190eXBlIFszMl07CmV4dGVybiBpbnQgbXBfaXJxX2VudHJpZXM7CmV4dGVybiBzdHJ1 Y3QgbXBjX2NvbmZpZ19pbnRzcmMgbXBfaXJxcyBbMjU2XTsKZXh0ZXJuIGludCBtcGNfZGVmYXVs dF90eXBlOwpleHRlcm4gaW50IG1wX2J1c19pZF90b19wY2lfYnVzIFszMl07CmV4dGVybiBpbnQg bXBfY3VycmVudF9wY2lfaWQ7CmV4dGVybiB1bnNpZ25lZCBsb25nIG1wX2xhcGljX2FkZHI7CmV4 dGVybiBpbnQgcGljX21vZGU7CmV4dGVybiBpbnQgdXNpbmdfYXBpY190aW1lcjsKIyAxOCAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9hc20vc21wLmgiIDIKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j bHVkZS9hc20vaW9fYXBpYy5oIiAxCiMgMjQgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lv X2FwaWMuaCIKc3RydWN0IElPX0FQSUNfcmVnXzAwIHsKICAgICAgICBfX3UzMiBfX3Jlc2VydmVk XzIgOiAyNCwKICAgICAgICAgICAgICAgIElEIDogNCwKICAgICAgICAgICAgICAgIF9fcmVzZXJ2 ZWRfMSA6IDQ7Cn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwoKc3RydWN0IElPX0FQSUNfcmVn XzAxIHsKICAgICAgICBfX3UzMiB2ZXJzaW9uIDogOCwKICAgICAgICAgICAgICAgIF9fcmVzZXJ2 ZWRfMiA6IDcsCiAgICAgICAgICAgICAgICBQUlEgOiAxLAogICAgICAgICAgICAgICAgZW50cmll cyA6IDgsCiAgICAgICAgICAgICAgICBfX3Jlc2VydmVkXzEgOiA4Owp9IF9fYXR0cmlidXRlX18g KChwYWNrZWQpKTsKCnN0cnVjdCBJT19BUElDX3JlZ18wMiB7CiAgICAgICAgX191MzIgX19yZXNl cnZlZF8yIDogMjQsCiAgICAgICAgICAgICAgICBhcmJpdHJhdGlvbiA6IDQsCiAgICAgICAgICAg ICAgICBfX3Jlc2VydmVkXzEgOiA0Owp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKCgoKCmV4 dGVybiBpbnQgbnJfaW9hcGljczsKZXh0ZXJuIGludCBucl9pb2FwaWNfcmVnaXN0ZXJzWzhdOwoK ZW51bSBpb2FwaWNfaXJxX2Rlc3RpbmF0aW9uX3R5cGVzIHsKICAgICAgICBkZXN0X0ZpeGVkID0g MCwKICAgICAgICBkZXN0X0xvd2VzdFByaW8gPSAxLAogICAgICAgIGRlc3RfU01JID0gMiwKICAg ICAgICBkZXN0X19yZXNlcnZlZF8xID0gMywKICAgICAgICBkZXN0X05NSSA9IDQsCiAgICAgICAg ZGVzdF9JTklUID0gNSwKICAgICAgICBkZXN0X19yZXNlcnZlZF8yID0gNiwKICAgICAgICBkZXN0 X0V4dElOVCA9IDcKfTsKCnN0cnVjdCBJT19BUElDX3JvdXRlX2VudHJ5IHsKICAgICAgICBfX3Uz MiB2ZWN0b3IgOiA4LAogICAgICAgICAgICAgICAgZGVsaXZlcnlfbW9kZSA6IDMsCgoKCiAgICAg ICAgICAgICAgICBkZXN0X21vZGUgOiAxLAogICAgICAgICAgICAgICAgZGVsaXZlcnlfc3RhdHVz IDogMSwKICAgICAgICAgICAgICAgIHBvbGFyaXR5IDogMSwKICAgICAgICAgICAgICAgIGlyciA6 IDEsCiAgICAgICAgICAgICAgICB0cmlnZ2VyIDogMSwKICAgICAgICAgICAgICAgIG1hc2sgOiAx LAogICAgICAgICAgICAgICAgX19yZXNlcnZlZF8yIDogMTU7CgogICAgICAgIHVuaW9uIHsgc3Ry dWN0IHsgX191MzIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmVz ZXJ2ZWRfMSA6IDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGh5 c2ljYWxfZGVzdCA6IDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf X3Jlc2VydmVkXzIgOiA0OwogICAgICAgICAgICAgICAgICAgICAgICB9IHBoeXNpY2FsOwoKICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgX191MzIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF9fcmVzZXJ2ZWRfMSA6IDI0LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbG9naWNhbF9kZXN0IDogODsKICAgICAgICAgICAgICAgICAg ICAgICAgfSBsb2dpY2FsOwogICAgICAgIH0gZGVzdDsKCn0gX19hdHRyaWJ1dGVfXyAoKHBhY2tl ZCkpOwoKCgoKCgpleHRlcm4gc3RydWN0IG1wY19jb25maWdfaW9hcGljIG1wX2lvYXBpY3NbOF07 CgoKZXh0ZXJuIGludCBtcF9pcnFfZW50cmllczsKCgpleHRlcm4gc3RydWN0IG1wY19jb25maWdf aW50c3JjIG1wX2lycXNbMjU2XTsKCgpleHRlcm4gaW50IG1wY19kZWZhdWx0X3R5cGU7CgpzdGF0 aWMgaW5saW5lIHVuc2lnbmVkIGludCBpb19hcGljX3JlYWQodW5zaWduZWQgaW50IGFwaWMsIHVu c2lnbmVkIGludCByZWcpCnsKICAgICAgICAqKCh2b2xhdGlsZSBpbnQgKikoKCgweGZmZmZlMDAw VUwpIC0gKChGSVhfSU9fQVBJQ19CQVNFXzAgKyBhcGljKSA8PCAxMikpICsgKG1wX2lvYXBpY3Nb YXBpY10ubXBjX2FwaWNhZGRyICYgfih+KCgxVUwgPDwgMTIpLTEpKSkpKSA9IHJlZzsKICAgICAg ICByZXR1cm4gKigoKHZvbGF0aWxlIGludCAqKSgoKDB4ZmZmZmUwMDBVTCkgLSAoKEZJWF9JT19B UElDX0JBU0VfMCArIGFwaWMpIDw8IDEyKSkgKyAobXBfaW9hcGljc1thcGljXS5tcGNfYXBpY2Fk ZHIgJiB+KH4oKDFVTCA8PCAxMiktMSkpKSkpKzQpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgaW9f YXBpY193cml0ZSh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQg aW50IHZhbHVlKQp7CiAgICAgICAgKigodm9sYXRpbGUgaW50ICopKCgoMHhmZmZmZTAwMFVMKSAt ICgoRklYX0lPX0FQSUNfQkFTRV8wICsgYXBpYykgPDwgMTIpKSArIChtcF9pb2FwaWNzW2FwaWNd Lm1wY19hcGljYWRkciAmIH4ofigoMVVMIDw8IDEyKS0xKSkpKSkgPSByZWc7CiAgICAgICAgKigo KHZvbGF0aWxlIGludCAqKSgoKDB4ZmZmZmUwMDBVTCkgLSAoKEZJWF9JT19BUElDX0JBU0VfMCAr IGFwaWMpIDw8IDEyKSkgKyAobXBfaW9hcGljc1thcGljXS5tcGNfYXBpY2FkZHIgJiB+KH4oKDFV TCA8PCAxMiktMSkpKSkpKzQpID0gdmFsdWU7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgaW9f YXBpY19tb2RpZnkodW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCB2YWx1ZSkKewogICAg ICAgICooKCh2b2xhdGlsZSBpbnQgKikoKCgweGZmZmZlMDAwVUwpIC0gKChGSVhfSU9fQVBJQ19C QVNFXzAgKyBhcGljKSA8PCAxMikpICsgKG1wX2lvYXBpY3NbYXBpY10ubXBjX2FwaWNhZGRyICYg fih+KCgxVUwgPDwgMTIpLTEpKSkpKSs0KSA9IHZhbHVlOwp9CgoKCgoKc3RhdGljIGlubGluZSB2 b2lkIGlvX2FwaWNfc3luYyh1bnNpZ25lZCBpbnQgYXBpYykKewogICAgICAgICh2b2lkKSAqKCgo dm9sYXRpbGUgaW50ICopKCgoMHhmZmZmZTAwMFVMKSAtICgoRklYX0lPX0FQSUNfQkFTRV8wICsg YXBpYykgPDwgMTIpKSArIChtcF9pb2FwaWNzW2FwaWNdLm1wY19hcGljYWRkciAmIH4ofigoMVVM IDw8IDEyKS0xKSkpKSkrNCk7Cn0KCgpleHRlcm4gaW50IHNraXBfaW9hcGljX3NldHVwOwojIDIw ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zbXAuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51 eC9pbmNsdWRlL2FzbS9hcGljLmgiIDEKCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9wbS5oIiAxCiMgMzIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcG0uaCIKZW51 bQp7CiAgICAgICAgUE1fU1VTUEVORCwKICAgICAgICBQTV9SRVNVTUUsCgogICAgICAgIFBNX1NB VkVfU1RBVEUsCgoKICAgICAgICBQTV9TRVRfV0FLRVVQLAoKCiAgICAgICAgUE1fR0VUX1JFU09V UkNFUywKICAgICAgICBQTV9TRVRfUkVTT1VSQ0VTLAoKCiAgICAgICAgUE1fRUpFQ1QsCiAgICAg ICAgUE1fTE9DSywKfTsKCnR5cGVkZWYgaW50IHBtX3JlcXVlc3RfdDsKCgoKCmVudW0KewogICAg ICAgIFBNX1VOS05PV05fREVWID0gMCwKICAgICAgICBQTV9TWVNfREVWLAogICAgICAgIFBNX1BD SV9ERVYsCiAgICAgICAgUE1fVVNCX0RFViwKICAgICAgICBQTV9TQ1NJX0RFViwKICAgICAgICBQ TV9JU0FfREVWLAogICAgICAgIFBNX01URF9ERVYsCn07Cgp0eXBlZGVmIGludCBwbV9kZXZfdDsK CgoKCmVudW0KewogICAgICAgIFBNX1NZU19VTktOT1dOID0gMHgwMDAwMDAwMCwKICAgICAgICBQ TV9TWVNfS0JDID0gMHg0MWQwMDMwMywKICAgICAgICBQTV9TWVNfQ09NID0gMHg0MWQwMDUwMCwK ICAgICAgICBQTV9TWVNfSVJEQSA9IDB4NDFkMDA1MTAsCiAgICAgICAgUE1fU1lTX0ZEQyA9IDB4 NDFkMDA3MDAsCiAgICAgICAgUE1fU1lTX1ZHQSA9IDB4NDFkMDA5MDAsCiAgICAgICAgUE1fU1lT X1BDTUNJQSA9IDB4NDFkMDBlMDAsCn07CiMgOTEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu dXgvcG0uaCIKc3RydWN0IHBtX2RldjsKCnR5cGVkZWYgaW50ICgqcG1fY2FsbGJhY2spKHN0cnVj dCBwbV9kZXYgKmRldiwgcG1fcmVxdWVzdF90IHJxc3QsIHZvaWQgKmRhdGEpOwoKCgoKc3RydWN0 IHBtX2Rldgp7CiAgICAgICAgcG1fZGV2X3QgdHlwZTsKICAgICAgICB1bnNpZ25lZCBsb25nIGlk OwogICAgICAgIHBtX2NhbGxiYWNrIGNhbGxiYWNrOwogICAgICAgIHZvaWQgKmRhdGE7CgogICAg ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzdGF0ZTsKICAg ICAgICB1bnNpZ25lZCBsb25nIHByZXZfc3RhdGU7CgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg ZW50cnk7Cn07CiMgMTU3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3BtLmgiCnN0YXRp YyBpbmxpbmUgc3RydWN0IHBtX2RldiAqcG1fcmVnaXN0ZXIocG1fZGV2X3QgdHlwZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGlkLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBtX2NhbGxiYWNrIGNhbGxiYWNr KQp7CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCBwbV91bnJlZ2lzdGVy KHN0cnVjdCBwbV9kZXYgKmRldikge30KCnN0YXRpYyBpbmxpbmUgdm9pZCBwbV91bnJlZ2lzdGVy X2FsbChwbV9jYWxsYmFjayBjYWxsYmFjaykge30KCnN0YXRpYyBpbmxpbmUgaW50IHBtX3NlbmQo c3RydWN0IHBtX2RldiAqZGV2LCBwbV9yZXF1ZXN0X3QgcnFzdCwgdm9pZCAqZGF0YSkKewogICAg ICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIGludCBwbV9zZW5kX2FsbChwbV9yZXF1ZXN0 X3QgcnFzdCwgdm9pZCAqZGF0YSkKewogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5l IHN0cnVjdCBwbV9kZXYgKnBtX2ZpbmQocG1fZGV2X3QgdHlwZSwgc3RydWN0IHBtX2RldiAqZnJv bSkKewogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgcG1fYWNjZXNzKHN0 cnVjdCBwbV9kZXYgKmRldikge30Kc3RhdGljIGlubGluZSB2b2lkIHBtX2Rldl9pZGxlKHN0cnVj dCBwbV9kZXYgKmRldikge30KCgoKZXh0ZXJuIHZvaWQgKCpwbV9pZGxlKSh2b2lkKTsKZXh0ZXJu IHZvaWQgKCpwbV9wb3dlcl9vZmYpKHZvaWQpOwojIDYgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUv YXNtL2FwaWMuaCIgMgojIDIzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9hcGljLmgiCnN0 YXRpYyBfX2lubGluZSB2b2lkIGFwaWNfd3JpdGUodW5zaWduZWQgbG9uZyByZWcsIHVuc2lnbmVk IGxvbmcgdikKewogICAgICAgICooKHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKikoKGZpeF90b192 aXJ0KEZJWF9BUElDX0JBU0UpKStyZWcpKSA9IHY7Cn0KCnN0YXRpYyBfX2lubGluZSB2b2lkIGFw aWNfd3JpdGVfYXRvbWljKHVuc2lnbmVkIGxvbmcgcmVnLCB1bnNpZ25lZCBsb25nIHYpCnsKICAg ICAgICAoKF9fdHlwZW9mX18oKigodm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqKSgoZml4X3RvX3Zp cnQoRklYX0FQSUNfQkFTRSkpK3JlZykpKSlfX3hjaGcoKHVuc2lnbmVkIGxvbmcpKHYpLCgodm9s YXRpbGUgdW5zaWduZWQgbG9uZyAqKSgoZml4X3RvX3ZpcnQoRklYX0FQSUNfQkFTRSkpK3JlZykp LHNpemVvZigqKCh2b2xhdGlsZSB1bnNpZ25lZCBsb25nICopKChmaXhfdG9fdmlydChGSVhfQVBJ Q19CQVNFKSkrcmVnKSkpKSk7Cn0KCnN0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBsb25nIGFwaWNf cmVhZCh1bnNpZ25lZCBsb25nIHJlZykKewogICAgICAgIHJldHVybiAqKCh2b2xhdGlsZSB1bnNp Z25lZCBsb25nICopKChmaXhfdG9fdmlydChGSVhfQVBJQ19CQVNFKSkrcmVnKSk7Cn0KCnN0YXRp YyBfX2lubGluZV9fIHZvaWQgYXBpY193YWl0X2ljcl9pZGxlKHZvaWQpCnsKICAgICAgICBkbyB7 IH0gd2hpbGUgKCBhcGljX3JlYWQoIDB4MzAwICkgJiAweDAxMDAwICk7Cn0KIyA1MyAiL3Vzci9z cmMvbGludXgvaW5jbHVkZS9hc20vYXBpYy5oIgpzdGF0aWMgaW5saW5lIHZvaWQgYWNrX0FQSUNf aXJxKHZvaWQpCnsKIyA2MyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vYXBpYy5oIgogICAg ICAgIGFwaWNfd3JpdGUoKDB4QjApLCgwKSk7Cn0KCmV4dGVybiBpbnQgZ2V0X21heGx2dCh2b2lk KTsKZXh0ZXJuIHZvaWQgY2xlYXJfbG9jYWxfQVBJQyh2b2lkKTsKZXh0ZXJuIHZvaWQgY29ubmVj dF9ic3BfQVBJQyAodm9pZCk7CmV4dGVybiB2b2lkIGRpc2Nvbm5lY3RfYnNwX0FQSUMgKHZvaWQp OwpleHRlcm4gdm9pZCBkaXNhYmxlX2xvY2FsX0FQSUMgKHZvaWQpOwpleHRlcm4gaW50IHZlcmlm eV9sb2NhbF9BUElDICh2b2lkKTsKZXh0ZXJuIHZvaWQgY2FjaGVfQVBJQ19yZWdpc3RlcnMgKHZv aWQpOwpleHRlcm4gdm9pZCBzeW5jX0FyYl9JRHMgKHZvaWQpOwpleHRlcm4gdm9pZCBpbml0X2Jz cF9BUElDICh2b2lkKTsKZXh0ZXJuIHZvaWQgc2V0dXBfbG9jYWxfQVBJQyAodm9pZCk7CmV4dGVy biB2b2lkIGluaXRfYXBpY19tYXBwaW5ncyAodm9pZCk7CmV4dGVybiB2b2lkIHNtcF9sb2NhbF90 aW1lcl9pbnRlcnJ1cHQgKHN0cnVjdCBwdF9yZWdzICogcmVncyk7CmV4dGVybiB2b2lkIHNldHVw X0FQSUNfY2xvY2tzICh2b2lkKTsKZXh0ZXJuIHZvaWQgc2V0dXBfYXBpY19ubWlfd2F0Y2hkb2cg KHZvaWQpOwpleHRlcm4gaW5saW5lIHZvaWQgbm1pX3dhdGNoZG9nX3RpY2sgKHN0cnVjdCBwdF9y ZWdzICogcmVncyk7CmV4dGVybiBpbnQgQVBJQ19pbml0X3VuaXByb2Nlc3NvciAodm9pZCk7CmV4 dGVybiB2b2lkIGRpc2FibGVfQVBJQ190aW1lcih2b2lkKTsKZXh0ZXJuIHZvaWQgZW5hYmxlX0FQ SUNfdGltZXIodm9pZCk7CgpleHRlcm4gc3RydWN0IHBtX2RldiAqYXBpY19wbV9yZWdpc3Rlcihw bV9kZXZfdCwgdW5zaWduZWQgbG9uZywgcG1fY2FsbGJhY2spOwpleHRlcm4gdm9pZCBhcGljX3Bt X3VucmVnaXN0ZXIoc3RydWN0IHBtX2RldiopOwoKZXh0ZXJuIHVuc2lnbmVkIGludCBhcGljX3Rp bWVyX2lycXMgWzMyXTsKZXh0ZXJuIGludCBjaGVja19ubWlfd2F0Y2hkb2cgKHZvaWQpOwoKZXh0 ZXJuIHVuc2lnbmVkIGludCBubWlfd2F0Y2hkb2c7CiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1 ZGUvYXNtL3NtcC5oIiAyCiMgNTUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NtcC5oIgpl eHRlcm4gdm9pZCBzbXBfYWxsb2NfbWVtb3J5KHZvaWQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBw aHlzX2NwdV9wcmVzZW50X21hcDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgY3B1X29ubGluZV9tYXA7 CmV4dGVybiB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIHNtcF9pbnZhbGlkYXRlX25lZWRlZDsKZXh0 ZXJuIGludCBwaWNfbW9kZTsKZXh0ZXJuIGludCBzbXBfbnVtX3NpYmxpbmdzOwpleHRlcm4gaW50 IGNwdV9zaWJsaW5nX21hcFtdOwoKZXh0ZXJuIHZvaWQgc21wX2ZsdXNoX3RsYih2b2lkKTsKZXh0 ZXJuIHZvaWQgc21wX21lc3NhZ2VfaXJxKGludCBjcGwsIHZvaWQgKmRldl9pZCwgc3RydWN0IHB0 X3JlZ3MgKnJlZ3MpOwpleHRlcm4gdm9pZCBzbXBfc2VuZF9yZXNjaGVkdWxlKGludCBjcHUpOwpl eHRlcm4gdm9pZCBzbXBfaW52YWxpZGF0ZV9yY3Yodm9pZCk7CmV4dGVybiB2b2lkICgqbXRycl9o b29rKSAodm9pZCk7CmV4dGVybiB2b2lkIHphcF9sb3dfbWFwcGluZ3MgKHZvaWQpOwoKCgoKCgpz dGF0aWMgaW5saW5lIGludCBjcHVfbG9naWNhbF9tYXAoaW50IGNwdSkKewogICAgICAgIHJldHVy biBjcHU7Cn0Kc3RhdGljIGlubGluZSBpbnQgY3B1X251bWJlcl9tYXAoaW50IGNwdSkKewogICAg ICAgIHJldHVybiBjcHU7Cn0KCgoKCgoKZXh0ZXJuIHZvbGF0aWxlIGludCBjcHVfdG9fcGh5c2lj YWxfYXBpY2lkWzMyXTsKZXh0ZXJuIHZvbGF0aWxlIGludCBwaHlzaWNhbF9hcGljaWRfdG9fY3B1 WzI1Nl07CmV4dGVybiB2b2xhdGlsZSBpbnQgY3B1X3RvX2xvZ2ljYWxfYXBpY2lkWzMyXTsKZXh0 ZXJuIHZvbGF0aWxlIGludCBsb2dpY2FsX2FwaWNpZF90b19jcHVbMjU2XTsKCgoKCgpleHRlcm4g dm9pZCBzbXBfYm9vdF9jcHVzKHZvaWQpOwpleHRlcm4gdm9pZCBzbXBfc3RvcmVfY3B1X2luZm8o aW50IGlkKTsKIyAxMDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NtcC5oIgpzdGF0aWMg X19pbmxpbmUgaW50IGhhcmRfc21wX3Byb2Nlc3Nvcl9pZCh2b2lkKQp7CgogICAgICAgIHJldHVy biAoKCgqKHVuc2lnbmVkIGxvbmcgKikoKGZpeF90b192aXJ0KEZJWF9BUElDX0JBU0UpKSsweDIw KSk+PjI0KSYweDBGKTsKfQoKc3RhdGljIF9faW5saW5lIGludCBsb2dpY2FsX3NtcF9wcm9jZXNz b3JfaWQodm9pZCkKewoKICAgICAgICByZXR1cm4gKCgoKih1bnNpZ25lZCBsb25nICopKChmaXhf dG9fdmlydChGSVhfQVBJQ19CQVNFKSkrMHhEMCkpPj4yNCkmMHhGRik7Cn0KIyAxNSAiL3Vzci9z cmMvbGludXgvaW5jbHVkZS9saW51eC9zbXAuaCIgMgojIDI0ICIvdXNyL3NyYy9saW51eC9pbmNs dWRlL2xpbnV4L3NtcC5oIgpleHRlcm4gdm9pZCBzbXBfc2VuZF9zdG9wKHZvaWQpOwoKCgoKZXh0 ZXJuIHZvaWQgc21wX3NlbmRfcmVzY2hlZHVsZShpbnQgY3B1KSBfX2F0dHJpYnV0ZV9fKChyZWdw YXJtKDMpKSk7CgoKCgoKZXh0ZXJuIHZvaWQgc21wX2Jvb3RfY3B1cyh2b2lkKTsKCgoKCmV4dGVy biB2b2lkIHNtcF9jYWxsaW4odm9pZCk7CgoKCgpleHRlcm4gdm9pZCBzbXBfY29tbWVuY2Uodm9p ZCk7CgoKCgpleHRlcm4gaW50IHNtcF9jYWxsX2Z1bmN0aW9uICh2b2lkICgqZnVuYykgKHZvaWQg KmluZm8pLCB2b2lkICppbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0 cnksIGludCB3YWl0KTsKCgoKCmV4dGVybiBpbnQgc21wX3RocmVhZHNfcmVhZHk7CgpleHRlcm4g aW50IHNtcF9udW1fY3B1czsKCmV4dGVybiB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIHNtcF9tc2df ZGF0YTsKZXh0ZXJuIHZvbGF0aWxlIGludCBzbXBfc3JjX2NwdTsKZXh0ZXJuIHZvbGF0aWxlIGlu dCBzbXBfbXNnX2lkOwojIDI0ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi IDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3R0eS5oIiAxCiMgMjEgIi91c3Iv c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5LmgiCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVk ZS9saW51eC9tYWpvci5oIiAxCiMgMTc5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L21h am9yLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBzY3NpX2Jsa19tYWpvcihpbnQgbSkgewogICAg ICAgIHJldHVybiAoKChtKSA9PSA4IHx8ICgobSkgPj0gNjUgJiYgKG0pIDw9IDcxKSkgfHwgKG0p ID09IDExKTsKfQojIDE5MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9tYWpvci5oIgpz dGF0aWMgX19pbmxpbmVfXyBpbnQgaWRlX2Jsa19tYWpvcihpbnQgbSkKewogICAgICAgIHJldHVy biAoKG0pID09IDMgfHwgKG0pID09IDIyIHx8IChtKSA9PSAzMyB8fCAobSkgPT0gMzQgfHwgKG0p ID09IDU2IHx8IChtKSA9PSA1NyB8fCAobSkgPT0gODggfHwgKG0pID09IDg5IHx8IChtKSA9PSA5 MCB8fCAobSkgPT0gOTEpOwp9CiMgMjIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5 LmgiIDIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Rlcm1pb3MuaCIgMQoKCgoK IyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDEKCgoKIyAxICIvdXNy L3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJtYml0cy5oIiAxCgoKCgoKdHlwZWRlZiB1bnNpZ25l ZCBjaGFyIGNjX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHNwZWVkX3Q7CnR5cGVkZWYgdW5zaWdu ZWQgaW50IHRjZmxhZ190OwoKCnN0cnVjdCB0ZXJtaW9zIHsKICAgICAgICB0Y2ZsYWdfdCBjX2lm bGFnOwogICAgICAgIHRjZmxhZ190IGNfb2ZsYWc7CiAgICAgICAgdGNmbGFnX3QgY19jZmxhZzsK ICAgICAgICB0Y2ZsYWdfdCBjX2xmbGFnOwogICAgICAgIGNjX3QgY19saW5lOwogICAgICAgIGNj X3QgY19jY1sxOV07Cn07CiMgNSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vdGVybWlvcy5o IiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vaW9jdGxzLmgiIDEKIyA2ICIvdXNy L3NyYy9saW51eC9pbmNsdWRlL2FzbS90ZXJtaW9zLmgiIDIKCnN0cnVjdCB3aW5zaXplIHsKICAg ICAgICB1bnNpZ25lZCBzaG9ydCB3c19yb3c7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgd3NfY29s OwogICAgICAgIHVuc2lnbmVkIHNob3J0IHdzX3hwaXhlbDsKICAgICAgICB1bnNpZ25lZCBzaG9y dCB3c195cGl4ZWw7Cn07CgoKc3RydWN0IHRlcm1pbyB7CiAgICAgICAgdW5zaWduZWQgc2hvcnQg Y19pZmxhZzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBjX29mbGFnOwogICAgICAgIHVuc2lnbmVk IHNob3J0IGNfY2ZsYWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgY19sZmxhZzsKICAgICAgICB1 bnNpZ25lZCBjaGFyIGNfbGluZTsKICAgICAgICB1bnNpZ25lZCBjaGFyIGNfY2NbOF07Cn07CiMg NiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90ZXJtaW9zLmgiIDIKIyAyMyAiL3Vzci9z cmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgoKIyAxICIvdXNyL3NyYy9saW51eC9pbmNs dWRlL2xpbnV4L3R0eV9kcml2ZXIuaCIgMQojIDEyMCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC90dHlfZHJpdmVyLmgiCnN0cnVjdCB0dHlfZHJpdmVyIHsKICAgICAgICBpbnQgbWFnaWM7 CiAgICAgICAgY29uc3QgY2hhciAqZHJpdmVyX25hbWU7CiAgICAgICAgY29uc3QgY2hhciAqbmFt ZTsKICAgICAgICBpbnQgbmFtZV9iYXNlOwogICAgICAgIHNob3J0IG1ham9yOwogICAgICAgIHNo b3J0IG1pbm9yX3N0YXJ0OwogICAgICAgIHNob3J0IG51bTsKICAgICAgICBzaG9ydCB0eXBlOwog ICAgICAgIHNob3J0IHN1YnR5cGU7CiAgICAgICAgc3RydWN0IHRlcm1pb3MgaW5pdF90ZXJtaW9z OwogICAgICAgIGludCBmbGFnczsKICAgICAgICBpbnQgKnJlZmNvdW50OwogICAgICAgIHN0cnVj dCBwcm9jX2Rpcl9lbnRyeSAqcHJvY19lbnRyeTsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAq b3RoZXI7CgoKCgogICAgICAgIHN0cnVjdCB0dHlfc3RydWN0ICoqdGFibGU7CiAgICAgICAgc3Ry dWN0IHRlcm1pb3MgKip0ZXJtaW9zOwogICAgICAgIHN0cnVjdCB0ZXJtaW9zICoqdGVybWlvc19s b2NrZWQ7CiAgICAgICAgdm9pZCAqZHJpdmVyX3N0YXRlOwoKCgoKCiAgICAgICAgaW50ICgqb3Bl bikoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBmaWxlICogZmlscCk7CiAgICAgICAg dm9pZCAoKmNsb3NlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxw KTsKICAgICAgICBpbnQgKCp3cml0ZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIGludCBmcm9t X3VzZXIsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIGlu dCBjb3VudCk7CiAgICAgICAgdm9pZCAoKnB1dF9jaGFyKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5 LCB1bnNpZ25lZCBjaGFyIGNoKTsKICAgICAgICB2b2lkICgqZmx1c2hfY2hhcnMpKHN0cnVjdCB0 dHlfc3RydWN0ICp0dHkpOwogICAgICAgIGludCAoKndyaXRlX3Jvb20pKHN0cnVjdCB0dHlfc3Ry dWN0ICp0dHkpOwogICAgICAgIGludCAoKmNoYXJzX2luX2J1ZmZlcikoc3RydWN0IHR0eV9zdHJ1 Y3QgKnR0eSk7CiAgICAgICAgaW50ICgqaW9jdGwpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0 cnVjdCBmaWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY21kLCB1 bnNpZ25lZCBsb25nIGFyZyk7CiAgICAgICAgdm9pZCAoKnNldF90ZXJtaW9zKShzdHJ1Y3QgdHR5 X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgdGVybWlvcyAqIG9sZCk7CiAgICAgICAgdm9pZCAoKnRocm90 dGxlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CiAgICAgICAgdm9pZCAoKnVudGhyb3R0bGUp KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5KTsKICAgICAgICB2b2lkICgqc3RvcCkoc3RydWN0IHR0 eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgdm9pZCAoKnN0YXJ0KShzdHJ1Y3QgdHR5X3N0cnVjdCAq dHR5KTsKICAgICAgICB2b2lkICgqaGFuZ3VwKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KTsKICAg ICAgICB2b2lkICgqYnJlYWtfY3RsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgc3RhdGUp OwogICAgICAgIHZvaWQgKCpmbHVzaF9idWZmZXIpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwog ICAgICAgIHZvaWQgKCpzZXRfbGRpc2MpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpOwogICAgICAg IHZvaWQgKCp3YWl0X3VudGlsX3NlbnQpKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCB0aW1l b3V0KTsKICAgICAgICB2b2lkICgqc2VuZF94Y2hhcikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwg Y2hhciBjaCk7CiAgICAgICAgaW50ICgqcmVhZF9wcm9jKShjaGFyICpwYWdlLCBjaGFyICoqc3Rh cnQsIG9mZl90IG9mZiwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQsIGludCAq ZW9mLCB2b2lkICpkYXRhKTsKICAgICAgICBpbnQgKCp3cml0ZV9wcm9jKShzdHJ1Y3QgZmlsZSAq ZmlsZSwgY29uc3QgY2hhciAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgY291bnQsIHZvaWQgKmRhdGEpOwoKCgoKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZl ciAqbmV4dDsKICAgICAgICBzdHJ1Y3QgdHR5X2RyaXZlciAqcHJldjsKfTsKIyAyNSAiL3Vzci9z cmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIgMgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1 ZGUvbGludXgvdHR5X2xkaXNjLmgiIDEKIyAxMDMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGlu dXgvdHR5X2xkaXNjLmgiCnN0cnVjdCB0dHlfbGRpc2MgewogICAgICAgIGludCBtYWdpYzsKICAg ICAgICBjaGFyICpuYW1lOwogICAgICAgIGludCBudW07CiAgICAgICAgaW50IGZsYWdzOwoKCgog ICAgICAgIGludCAoKm9wZW4pKHN0cnVjdCB0dHlfc3RydWN0ICopOwogICAgICAgIHZvaWQgKCpj bG9zZSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAgICAgICAgdm9pZCAoKmZsdXNoX2J1ZmZlciko c3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKmNoYXJzX2luX2J1ZmZl cikoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSk7CiAgICAgICAgc3NpemVfdCAoKnJlYWQpKHN0cnVj dCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGNoYXIgKiBidWYsIHNpemVfdCBucik7CiAgICAgICAgc3NpemVfdCAo KndyaXRlKShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSwgc3RydWN0IGZpbGUgKiBmaWxlLAogICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqIGJ1Ziwgc2l6ZV90IG5y KTsKICAgICAgICBpbnQgKCppb2N0bCkoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHksIHN0cnVjdCBm aWxlICogZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVu c2lnbmVkIGxvbmcgYXJnKTsKICAgICAgICB2b2lkICgqc2V0X3Rlcm1pb3MpKHN0cnVjdCB0dHlf c3RydWN0ICp0dHksIHN0cnVjdCB0ZXJtaW9zICogb2xkKTsKICAgICAgICB1bnNpZ25lZCBpbnQg KCpwb2xsKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBzdHJ1Y3QgZmlsZSAqLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqKTsKCgoKCiAgICAgICAg dm9pZCAoKnJlY2VpdmVfYnVmKShzdHJ1Y3QgdHR5X3N0cnVjdCAqLCBjb25zdCB1bnNpZ25lZCBj aGFyICpjcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZwLCBpbnQgY291 bnQpOwogICAgICAgIGludCAoKnJlY2VpdmVfcm9vbSkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7CiAg ICAgICAgdm9pZCAoKndyaXRlX3dha2V1cCkoc3RydWN0IHR0eV9zdHJ1Y3QgKik7Cn07CiMgMjYg Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5LmgiIDIKIyA1OSAiL3Vzci9zcmMvbGlu dXgvaW5jbHVkZS9saW51eC90dHkuaCIKc3RydWN0IHNjcmVlbl9pbmZvIHsKICAgICAgICB1bnNp Z25lZCBjaGFyIG9yaWdfeDsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfeTsKICAgICAgICB1 bnNpZ25lZCBzaG9ydCBkb250dXNlMTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBvcmlnX3ZpZGVv X3BhZ2U7CiAgICAgICAgdW5zaWduZWQgY2hhciBvcmlnX3ZpZGVvX21vZGU7CiAgICAgICAgdW5z aWduZWQgY2hhciBvcmlnX3ZpZGVvX2NvbHM7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdW51c2Vk MjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBvcmlnX3ZpZGVvX2VnYV9ieDsKICAgICAgICB1bnNp Z25lZCBzaG9ydCB1bnVzZWQzOwogICAgICAgIHVuc2lnbmVkIGNoYXIgb3JpZ192aWRlb19saW5l czsKICAgICAgICB1bnNpZ25lZCBjaGFyIG9yaWdfdmlkZW9faXNWR0E7CiAgICAgICAgdW5zaWdu ZWQgc2hvcnQgb3JpZ192aWRlb19wb2ludHM7CgoKICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZmJf d2lkdGg7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgbGZiX2hlaWdodDsKICAgICAgICB1bnNpZ25l ZCBzaG9ydCBsZmJfZGVwdGg7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsZmJfYmFzZTsKICAgICAg ICB1bnNpZ25lZCBsb25nIGxmYl9zaXplOwogICAgICAgIHVuc2lnbmVkIHNob3J0IGRvbnR1c2Uy LCBkb250dXNlMzsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBsZmJfbGluZWxlbmd0aDsKICAgICAg ICB1bnNpZ25lZCBjaGFyIHJlZF9zaXplOwogICAgICAgIHVuc2lnbmVkIGNoYXIgcmVkX3BvczsK ICAgICAgICB1bnNpZ25lZCBjaGFyIGdyZWVuX3NpemU7CiAgICAgICAgdW5zaWduZWQgY2hhciBn cmVlbl9wb3M7CiAgICAgICAgdW5zaWduZWQgY2hhciBibHVlX3NpemU7CiAgICAgICAgdW5zaWdu ZWQgY2hhciBibHVlX3BvczsKICAgICAgICB1bnNpZ25lZCBjaGFyIHJzdmRfc2l6ZTsKICAgICAg ICB1bnNpZ25lZCBjaGFyIHJzdmRfcG9zOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHZlc2FwbV9z ZWc7CiAgICAgICAgdW5zaWduZWQgc2hvcnQgdmVzYXBtX29mZjsKICAgICAgICB1bnNpZ25lZCBz aG9ydCBwYWdlczsKCn07CgpleHRlcm4gc3RydWN0IHNjcmVlbl9pbmZvIHNjcmVlbl9pbmZvOwoj IDEzOSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC90dHkuaCIKc3RydWN0IHR0eV9mbGlw X2J1ZmZlciB7CiAgICAgICAgc3RydWN0IHRxX3N0cnVjdCB0cXVldWU7CiAgICAgICAgc3RydWN0 IHNlbWFwaG9yZSBwdHlfc2VtOwogICAgICAgIGNoYXIgKmNoYXJfYnVmX3B0cjsKICAgICAgICB1 bnNpZ25lZCBjaGFyICpmbGFnX2J1Zl9wdHI7CiAgICAgICAgaW50IGNvdW50OwogICAgICAgIGlu dCBidWZfbnVtOwogICAgICAgIHVuc2lnbmVkIGNoYXIgY2hhcl9idWZbMio1MTJdOwogICAgICAg IGNoYXIgZmxhZ19idWZbMio1MTJdOwogICAgICAgIHVuc2lnbmVkIGNoYXIgc2xvcFs0XTsKfTsK IyAyNTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5LmgiCnN0cnVjdCB0dHlfc3Ry dWN0IHsKICAgICAgICBpbnQgbWFnaWM7CiAgICAgICAgc3RydWN0IHR0eV9kcml2ZXIgZHJpdmVy OwogICAgICAgIHN0cnVjdCB0dHlfbGRpc2MgbGRpc2M7CiAgICAgICAgc3RydWN0IHRlcm1pb3Mg KnRlcm1pb3MsICp0ZXJtaW9zX2xvY2tlZDsKICAgICAgICBpbnQgcGdycDsKICAgICAgICBpbnQg c2Vzc2lvbjsKICAgICAgICBrZGV2X3QgZGV2aWNlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgZmxh Z3M7CiAgICAgICAgaW50IGNvdW50OwogICAgICAgIHN0cnVjdCB3aW5zaXplIHdpbnNpemU7CiAg ICAgICAgdW5zaWduZWQgY2hhciBzdG9wcGVkOjEsIGh3X3N0b3BwZWQ6MSwgZmxvd19zdG9wcGVk OjEsIHBhY2tldDoxOwogICAgICAgIHVuc2lnbmVkIGNoYXIgbG93X2xhdGVuY3k6MSwgd2FybmVk OjE7CiAgICAgICAgdW5zaWduZWQgY2hhciBjdHJsX3N0YXR1czsKCiAgICAgICAgc3RydWN0IHR0 eV9zdHJ1Y3QgKmxpbms7CiAgICAgICAgc3RydWN0IGZhc3luY19zdHJ1Y3QgKmZhc3luYzsKICAg ICAgICBzdHJ1Y3QgdHR5X2ZsaXBfYnVmZmVyIGZsaXA7CiAgICAgICAgaW50IG1heF9mbGlwX2Nu dDsKICAgICAgICBpbnQgYWx0X3NwZWVkOwogICAgICAgIHdhaXRfcXVldWVfaGVhZF90IHdyaXRl X3dhaXQ7CiAgICAgICAgd2FpdF9xdWV1ZV9oZWFkX3QgcmVhZF93YWl0OwogICAgICAgIHN0cnVj dCB0cV9zdHJ1Y3QgdHFfaGFuZ3VwOwogICAgICAgIHZvaWQgKmRpc2NfZGF0YTsKICAgICAgICB2 b2lkICpkcml2ZXJfZGF0YTsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHR0eV9maWxlczsKCgoK CgoKCiAgICAgICAgdW5zaWduZWQgaW50IGNvbHVtbjsKICAgICAgICB1bnNpZ25lZCBjaGFyIGxu ZXh0OjEsIGVyYXNpbmc6MSwgcmF3OjEsIHJlYWxfcmF3OjEsIGljYW5vbjoxOwogICAgICAgIHVu c2lnbmVkIGNoYXIgY2xvc2luZzoxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IG1pbmltdW1fdG9f d2FrZTsKICAgICAgICB1bnNpZ25lZCBvdmVycnVuX3RpbWU7CiAgICAgICAgaW50IG51bV9vdmVy cnVuOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHJvY2Vzc19jaGFyX21hcFsyNTYvKDgqc2l6ZW9m KHVuc2lnbmVkIGxvbmcpKV07CiAgICAgICAgY2hhciAqcmVhZF9idWY7CiAgICAgICAgaW50IHJl YWRfaGVhZDsKICAgICAgICBpbnQgcmVhZF90YWlsOwogICAgICAgIGludCByZWFkX2NudDsKICAg ICAgICB1bnNpZ25lZCBsb25nIHJlYWRfZmxhZ3NbNDA5Ni8oOCpzaXplb2YodW5zaWduZWQgbG9u ZykpXTsKICAgICAgICBpbnQgY2Fub25fZGF0YTsKICAgICAgICB1bnNpZ25lZCBsb25nIGNhbm9u X2hlYWQ7CiAgICAgICAgdW5zaWduZWQgaW50IGNhbm9uX2NvbHVtbjsKICAgICAgICBzdHJ1Y3Qg c2VtYXBob3JlIGF0b21pY19yZWFkOwogICAgICAgIHN0cnVjdCBzZW1hcGhvcmUgYXRvbWljX3dy aXRlOwogICAgICAgIHNwaW5sb2NrX3QgcmVhZF9sb2NrOwoKICAgICAgICBzdHJ1Y3QgdHFfc3Ry dWN0IFNBS190cTsKfTsKIyAzNDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvdHR5Lmgi CmV4dGVybiB2b2lkIHR0eV93cml0ZV9mbHVzaChzdHJ1Y3QgdHR5X3N0cnVjdCAqKTsKCmV4dGVy biBzdHJ1Y3QgdGVybWlvcyB0dHlfc3RkX3Rlcm1pb3M7CmV4dGVybiBzdHJ1Y3QgdHR5X3N0cnVj dCAqIHJlZGlyZWN0OwpleHRlcm4gc3RydWN0IHR0eV9sZGlzYyBsZGlzY3NbXTsKZXh0ZXJuIGlu dCBmZ19jb25zb2xlLCBsYXN0X2NvbnNvbGUsIHdhbnRfY29uc29sZTsKCmV4dGVybiBpbnQga21z Z19yZWRpcmVjdDsKCmV4dGVybiB2b2lkIGNvbl9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBjb25z b2xlX2luaXQodm9pZCk7CgpleHRlcm4gaW50IGxwX2luaXQodm9pZCk7CmV4dGVybiBpbnQgcHR5 X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHR0eV9pbml0KHZvaWQpOwpleHRlcm4gaW50IG14c2Vy X2luaXQodm9pZCk7CmV4dGVybiBpbnQgbW94YV9pbml0KHZvaWQpOwpleHRlcm4gaW50IGlwMl9p bml0KHZvaWQpOwpleHRlcm4gaW50IHBjeGVfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBwY19pbml0 KHZvaWQpOwpleHRlcm4gaW50IHZjc19pbml0KHZvaWQpOwpleHRlcm4gaW50IHJwX2luaXQodm9p ZCk7CmV4dGVybiBpbnQgY3lfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCBzdGxfaW5pdCh2b2lkKTsK ZXh0ZXJuIGludCBzdGxpX2luaXQodm9pZCk7CmV4dGVybiBpbnQgc3BlY2lhbGl4X2luaXQodm9p ZCk7CmV4dGVybiBpbnQgZXNwc2VyaWFsX2luaXQodm9pZCk7CmV4dGVybiBpbnQgbWFjc2VyaWFs X2luaXQodm9pZCk7CmV4dGVybiBpbnQgYTIyMzJib2FyZF9pbml0KHZvaWQpOwoKZXh0ZXJuIGlu dCB0dHlfcGFyYW5vaWFfY2hlY2soc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwga2Rldl90IGRldmlj ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcm91dGluZSk7CmV4 dGVybiBjaGFyICp0dHlfbmFtZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBjaGFyICpidWYpOwpl eHRlcm4gdm9pZCB0dHlfd2FpdF91bnRpbF9zZW50KHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBs b25nIHRpbWVvdXQpOwpleHRlcm4gaW50IHR0eV9jaGVja19jaGFuZ2Uoc3RydWN0IHR0eV9zdHJ1 Y3QgKiB0dHkpOwpleHRlcm4gdm9pZCBzdG9wX3R0eShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7 CmV4dGVybiB2b2lkIHN0YXJ0X3R0eShzdHJ1Y3QgdHR5X3N0cnVjdCAqIHR0eSk7CmV4dGVybiBp bnQgdHR5X3JlZ2lzdGVyX2xkaXNjKGludCBkaXNjLCBzdHJ1Y3QgdHR5X2xkaXNjICpuZXdfbGRp c2MpOwpleHRlcm4gaW50IHR0eV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IHR0eV9kcml2ZXIgKmRy aXZlcik7CmV4dGVybiBpbnQgdHR5X3VucmVnaXN0ZXJfZHJpdmVyKHN0cnVjdCB0dHlfZHJpdmVy ICpkcml2ZXIpOwpleHRlcm4gdm9pZCB0dHlfcmVnaXN0ZXJfZGV2ZnMgKHN0cnVjdCB0dHlfZHJp dmVyICpkcml2ZXIsIHVuc2lnbmVkIGludCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBtaW5vcik7CmV4dGVybiB2b2lkIHR0eV91bnJlZ2lzdGVyX2RldmZz IChzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyLCB1bnNpZ25lZCBtaW5vcik7CmV4dGVybiBpbnQg dHR5X3JlYWRfcmF3X2RhdGEoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgdW5zaWduZWQgY2hhciAq YnVmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmbGVuKTsKZXh0ZXJuIHZv aWQgdHR5X3dyaXRlX21lc3NhZ2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY2hhciAqbXNnKTsK CmV4dGVybiBpbnQgaXNfb3JwaGFuZWRfcGdycChpbnQgcGdycCk7CmV4dGVybiBpbnQgaXNfaWdu b3JlZChpbnQgc2lnKTsKZXh0ZXJuIGludCB0dHlfc2lnbmFsKGludCBzaWcsIHN0cnVjdCB0dHlf c3RydWN0ICp0dHkpOwpleHRlcm4gdm9pZCB0dHlfaGFuZ3VwKHN0cnVjdCB0dHlfc3RydWN0ICog dHR5KTsKZXh0ZXJuIHZvaWQgdHR5X3ZoYW5ndXAoc3RydWN0IHR0eV9zdHJ1Y3QgKiB0dHkpOwpl eHRlcm4gdm9pZCB0dHlfdW5oYW5ndXAoc3RydWN0IGZpbGUgKmZpbHApOwpleHRlcm4gaW50IHR0 eV9odW5nX3VwX3Aoc3RydWN0IGZpbGUgKiBmaWxwKTsKZXh0ZXJuIHZvaWQgZG9fU0FLKHN0cnVj dCB0dHlfc3RydWN0ICp0dHkpOwpleHRlcm4gdm9pZCBkaXNhc3NvY2lhdGVfY3R0eShpbnQgcHJp dik7CmV4dGVybiB2b2lkIHR0eV9mbGlwX2J1ZmZlcl9wdXNoKHN0cnVjdCB0dHlfc3RydWN0ICp0 dHkpOwpleHRlcm4gaW50IHR0eV9nZXRfYmF1ZF9yYXRlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkp OwoKCmV4dGVybiBzdHJ1Y3QgdHR5X2xkaXNjIHR0eV9sZGlzY19OX1RUWTsKCgpleHRlcm4gaW50 IG5fdHR5X2lvY3RsKHN0cnVjdCB0dHlfc3RydWN0ICogdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUs CiAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh cmcpOwoKCgpleHRlcm4gdm9pZCBzZXJpYWxfY29uc29sZV9pbml0KHZvaWQpOwoKCgpleHRlcm4g aW50IHBjeGVfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlscCk7 CgoKCmV4dGVybiB2b2lkIGNvbnNvbGVfcHJpbnQoY29uc3QgY2hhciAqKTsKCgoKZXh0ZXJuIGlu dCB2dF9pb2N0bChzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqIGZpbGUsCiAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpOwoj IDI1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2xpbnV4L3NlbS5oIiAxCgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5j bHVkZS9saW51eC9pcGMuaCIgMQojIDkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaXBj LmgiCnN0cnVjdCBpcGNfcGVybQp7CiAgICAgICAgX19rZXJuZWxfa2V5X3Qga2V5OwogICAgICAg IF9fa2VybmVsX3VpZF90IHVpZDsKICAgICAgICBfX2tlcm5lbF9naWRfdCBnaWQ7CiAgICAgICAg X19rZXJuZWxfdWlkX3QgY3VpZDsKICAgICAgICBfX2tlcm5lbF9naWRfdCBjZ2lkOwogICAgICAg IF9fa2VybmVsX21vZGVfdCBtb2RlOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNlcTsKfTsKCgoj IDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL2lwY2J1Zi5oIiAxCiMgMTQgIi91c3Ivc3Jj L2xpbnV4L2luY2x1ZGUvYXNtL2lwY2J1Zi5oIgpzdHJ1Y3QgaXBjNjRfcGVybQp7CiAgICAgICAg X19rZXJuZWxfa2V5X3Qga2V5OwogICAgICAgIF9fa2VybmVsX3VpZDMyX3QgdWlkOwogICAgICAg IF9fa2VybmVsX2dpZDMyX3QgZ2lkOwogICAgICAgIF9fa2VybmVsX3VpZDMyX3QgY3VpZDsKICAg ICAgICBfX2tlcm5lbF9naWQzMl90IGNnaWQ7CiAgICAgICAgX19rZXJuZWxfbW9kZV90IG1vZGU7 CiAgICAgICAgdW5zaWduZWQgc2hvcnQgX19wYWQxOwogICAgICAgIHVuc2lnbmVkIHNob3J0IHNl cTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBf X3VudXNlZDE7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDI7Cn07CiMgMjIgIi91c3Iv c3JjL2xpbnV4L2luY2x1ZGUvbGludXgvaXBjLmgiIDIKIyA1NyAiL3Vzci9zcmMvbGludXgvaW5j bHVkZS9saW51eC9pcGMuaCIKc3RydWN0IGtlcm5faXBjX3Blcm0KewogICAgICAgIGtleV90IGtl eTsKICAgICAgICB1aWRfdCB1aWQ7CiAgICAgICAgZ2lkX3QgZ2lkOwogICAgICAgIHVpZF90IGN1 aWQ7CiAgICAgICAgZ2lkX3QgY2dpZDsKICAgICAgICBtb2RlX3QgbW9kZTsKICAgICAgICB1bnNp Z25lZCBsb25nIHNlcTsKfTsKIyA1ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NlbS5o IiAyCiMgMjMgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2VtLmgiCnN0cnVjdCBzZW1p ZF9kcyB7CiAgICAgICAgc3RydWN0IGlwY19wZXJtIHNlbV9wZXJtOwogICAgICAgIF9fa2VybmVs X3RpbWVfdCBzZW1fb3RpbWU7CiAgICAgICAgX19rZXJuZWxfdGltZV90IHNlbV9jdGltZTsKICAg ICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFzZTsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICpzZW1f cGVuZGluZzsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICoqc2VtX3BlbmRpbmdfbGFzdDsKICAg ICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVuZG87CiAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VtX25z ZW1zOwp9OwoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2VtYnVmLmgiIDEKIyAx NCAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2VtYnVmLmgiCnN0cnVjdCBzZW1pZDY0X2Rz IHsKICAgICAgICBzdHJ1Y3QgaXBjNjRfcGVybSBzZW1fcGVybTsKICAgICAgICBfX2tlcm5lbF90 aW1lX3Qgc2VtX290aW1lOwogICAgICAgIHVuc2lnbmVkIGxvbmcgX191bnVzZWQxOwogICAgICAg IF9fa2VybmVsX3RpbWVfdCBzZW1fY3RpbWU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNl ZDI7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZW1fbnNlbXM7CiAgICAgICAgdW5zaWduZWQgbG9u ZyBfX3VudXNlZDM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDQ7Cn07CiMgMzYgIi91 c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2VtLmgiIDIKCgpzdHJ1Y3Qgc2VtYnVmIHsKICAg ICAgICB1bnNpZ25lZCBzaG9ydCBzZW1fbnVtOwogICAgICAgIHNob3J0IHNlbV9vcDsKICAgICAg ICBzaG9ydCBzZW1fZmxnOwp9OwoKCnVuaW9uIHNlbXVuIHsKICAgICAgICBpbnQgdmFsOwogICAg ICAgIHN0cnVjdCBzZW1pZF9kcyAqYnVmOwogICAgICAgIHVuc2lnbmVkIHNob3J0ICphcnJheTsK ICAgICAgICBzdHJ1Y3Qgc2VtaW5mbyAqX19idWY7CiAgICAgICAgdm9pZCAqX19wYWQ7Cn07Cgpz dHJ1Y3Qgc2VtaW5mbyB7CiAgICAgICAgaW50IHNlbW1hcDsKICAgICAgICBpbnQgc2VtbW5pOwog ICAgICAgIGludCBzZW1tbnM7CiAgICAgICAgaW50IHNlbW1udTsKICAgICAgICBpbnQgc2VtbXNs OwogICAgICAgIGludCBzZW1vcG07CiAgICAgICAgaW50IHNlbXVtZTsKICAgICAgICBpbnQgc2Vt dXN6OwogICAgICAgIGludCBzZW12bXg7CiAgICAgICAgaW50IHNlbWFlbTsKfTsKIyA4MiAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zZW0uaCIKc3RydWN0IHNlbSB7CiAgICAgICAgaW50 IHNlbXZhbDsKICAgICAgICBpbnQgc2VtcGlkOwp9OwoKCnN0cnVjdCBzZW1fYXJyYXkgewogICAg ICAgIHN0cnVjdCBrZXJuX2lwY19wZXJtIHNlbV9wZXJtOwogICAgICAgIHRpbWVfdCBzZW1fb3Rp bWU7CiAgICAgICAgdGltZV90IHNlbV9jdGltZTsKICAgICAgICBzdHJ1Y3Qgc2VtICpzZW1fYmFz ZTsKICAgICAgICBzdHJ1Y3Qgc2VtX3F1ZXVlICpzZW1fcGVuZGluZzsKICAgICAgICBzdHJ1Y3Qg c2VtX3F1ZXVlICoqc2VtX3BlbmRpbmdfbGFzdDsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8gKnVu ZG87CiAgICAgICAgdW5zaWduZWQgbG9uZyBzZW1fbnNlbXM7Cn07CgoKc3RydWN0IHNlbV9xdWV1 ZSB7CiAgICAgICAgc3RydWN0IHNlbV9xdWV1ZSAqIG5leHQ7CiAgICAgICAgc3RydWN0IHNlbV9x dWV1ZSAqKiBwcmV2OwogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCogc2xlZXBlcjsKICAgICAg ICBzdHJ1Y3Qgc2VtX3VuZG8gKiB1bmRvOwogICAgICAgIGludCBwaWQ7CiAgICAgICAgaW50IHN0 YXR1czsKICAgICAgICBzdHJ1Y3Qgc2VtX2FycmF5ICogc21hOwogICAgICAgIGludCBpZDsKICAg ICAgICBzdHJ1Y3Qgc2VtYnVmICogc29wczsKICAgICAgICBpbnQgbnNvcHM7CiAgICAgICAgaW50 IGFsdGVyOwp9OwoKCgoKc3RydWN0IHNlbV91bmRvIHsKICAgICAgICBzdHJ1Y3Qgc2VtX3VuZG8g KiBwcm9jX25leHQ7CiAgICAgICAgc3RydWN0IHNlbV91bmRvICogaWRfbmV4dDsKICAgICAgICBp bnQgc2VtaWQ7CiAgICAgICAgc2hvcnQgKiBzZW1hZGo7Cn07CgogX19hdHRyaWJ1dGVfXygocmVn cGFybSgwKSkpIGxvbmcgc3lzX3NlbWdldCAoa2V5X3Qga2V5LCBpbnQgbnNlbXMsIGludCBzZW1m bGcpOwogX19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NlbW9wIChpbnQgc2Vt aWQsIHN0cnVjdCBzZW1idWYgKnNvcHMsIHVuc2lnbmVkIG5zb3BzKTsKIF9fYXR0cmlidXRlX18o KHJlZ3Bhcm0oMCkpKSBsb25nIHN5c19zZW1jdGwgKGludCBzZW1pZCwgaW50IHNlbW51bSwgaW50 IGNtZCwgdW5pb24gc2VtdW4gYXJnKTsKIyAyNiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51 eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zaWduYWwuaCIg MQoKCgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ25hbC5oIiAxCgoKCgoKCnN0 cnVjdCBzaWdpbmZvOwojIDE3ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9zaWduYWwuaCIK dHlwZWRlZiB1bnNpZ25lZCBsb25nIG9sZF9zaWdzZXRfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAg ICAgICB1bnNpZ25lZCBsb25nIHNpZ1soNjQgLyAzMildOwp9IHNpZ3NldF90OwojIDEyOSAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVkZWYgdm9pZCAoKl9fc2lnaGFu ZGxlcl90KShpbnQpOwoKCgoKCgpzdHJ1Y3Qgb2xkX3NpZ2FjdGlvbiB7CiAgICAgICAgX19zaWdo YW5kbGVyX3Qgc2FfaGFuZGxlcjsKICAgICAgICBvbGRfc2lnc2V0X3Qgc2FfbWFzazsKICAgICAg ICB1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwogICAgICAgIHZvaWQgKCpzYV9yZXN0b3Jlcikodm9p ZCk7Cn07CgpzdHJ1Y3Qgc2lnYWN0aW9uIHsKICAgICAgICBfX3NpZ2hhbmRsZXJfdCBzYV9oYW5k bGVyOwogICAgICAgIHVuc2lnbmVkIGxvbmcgc2FfZmxhZ3M7CiAgICAgICAgdm9pZCAoKnNhX3Jl c3RvcmVyKSh2b2lkKTsKICAgICAgICBzaWdzZXRfdCBzYV9tYXNrOwp9OwoKc3RydWN0IGtfc2ln YWN0aW9uIHsKICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIHNhOwp9OwojIDE3MSAiL3Vzci9zcmMv bGludXgvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnR5cGVkZWYgc3RydWN0IHNpZ2FsdHN0YWNrIHsK ICAgICAgICB2b2lkICpzc19zcDsKICAgICAgICBpbnQgc3NfZmxhZ3M7CiAgICAgICAgc2l6ZV90 IHNzX3NpemU7Cn0gc3RhY2tfdDsKCgoKCgoKc3RhdGljIF9faW5saW5lX18gdm9pZCBzaWdhZGRz ZXQoc2lnc2V0X3QgKnNldCwgaW50IF9zaWcpCnsKICAgICAgICBfX2FzbV9fKCJidHNsICUxLCUw IiA6ICI9bSIoKnNldCkgOiAiSXIiKF9zaWcgLSAxKSA6ICJjYyIpOwp9CgpzdGF0aWMgX19pbmxp bmVfXyB2b2lkIHNpZ2RlbHNldChzaWdzZXRfdCAqc2V0LCBpbnQgX3NpZykKewogICAgICAgIF9f YXNtX18oImJ0cmwgJTEsJTAiIDogIj1tIigqc2V0KSA6ICJJciIoX3NpZyAtIDEpIDogImNjIik7 Cn0KCnN0YXRpYyBfX2lubGluZV9fIGludCBfX2NvbnN0X3NpZ2lzbWVtYmVyKHNpZ3NldF90ICpz ZXQsIGludCBfc2lnKQp7CiAgICAgICAgdW5zaWduZWQgbG9uZyBzaWcgPSBfc2lnIC0gMTsKICAg ICAgICByZXR1cm4gMSAmIChzZXQtPnNpZ1tzaWcgLyAzMl0gPj4gKHNpZyAlIDMyKSk7Cn0KCnN0 YXRpYyBfX2lubGluZV9fIGludCBfX2dlbl9zaWdpc21lbWJlcihzaWdzZXRfdCAqc2V0LCBpbnQg X3NpZykKewogICAgICAgIGludCByZXQ7CiAgICAgICAgX19hc21fXygiYnRsICUyLCUxXG5cdHNi YmwgJTAsJTAiCiAgICAgICAgICAgICAgICA6ICI9ciIocmV0KSA6ICJtIigqc2V0KSwgIklyIihf c2lnLTEpIDogImNjIik7CiAgICAgICAgcmV0dXJuIHJldDsKfQojIDIxMyAiL3Vzci9zcmMvbGlu dXgvaW5jbHVkZS9hc20vc2lnbmFsLmgiCnN0YXRpYyBfX2lubGluZV9fIGludCBzaWdmaW5kaW53 b3JkKHVuc2lnbmVkIGxvbmcgd29yZCkKewogICAgICAgIF9fYXNtX18oImJzZmwgJTEsJTAiIDog Ij1yIih3b3JkKSA6ICJybSIod29yZCkgOiAiY2MiKTsKICAgICAgICByZXR1cm4gd29yZDsKfQoj IDUgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKIyAxICIvdXNyL3Ny Yy9saW51eC9pbmNsdWRlL2FzbS9zaWdpbmZvLmgiIDEKCgoKCgoKCnR5cGVkZWYgdW5pb24gc2ln dmFsIHsKICAgICAgICBpbnQgc2l2YWxfaW50OwogICAgICAgIHZvaWQgKnNpdmFsX3B0cjsKfSBz aWd2YWxfdDsKCgoKCnR5cGVkZWYgc3RydWN0IHNpZ2luZm8gewogICAgICAgIGludCBzaV9zaWdu bzsKICAgICAgICBpbnQgc2lfZXJybm87CiAgICAgICAgaW50IHNpX2NvZGU7CgogICAgICAgIHVu aW9uIHsKICAgICAgICAgICAgICAgIGludCBfcGFkWygoMTI4L3NpemVvZihpbnQpKSAtIDMpXTsK CgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3Qg X3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdWlkX3QgX3VpZDsKICAgICAgICAgICAgICAg IH0gX2tpbGw7CgoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBfdGltZXIxOwogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgX3RpbWVyMjsKICAgICAgICAgICAgICAgIH0gX3RpbWVyOwoKCiAgICAgICAgICAgICAg ICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfcGlkOwogICAgICAgICAg ICAgICAgICAgICAgICB1aWRfdCBfdWlkOwogICAgICAgICAgICAgICAgICAgICAgICBzaWd2YWxf dCBfc2lndmFsOwogICAgICAgICAgICAgICAgfSBfcnQ7CgoKICAgICAgICAgICAgICAgIHN0cnVj dCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9waWQ7CiAgICAgICAgICAgICAgICAg ICAgICAgIHVpZF90IF91aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfc3RhdHVzOwog ICAgICAgICAgICAgICAgICAgICAgICBjbG9ja190IF91dGltZTsKICAgICAgICAgICAgICAgICAg ICAgICAgY2xvY2tfdCBfc3RpbWU7CiAgICAgICAgICAgICAgICB9IF9zaWdjaGxkOwoKCiAgICAg ICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfYWRkcjsK ICAgICAgICAgICAgICAgIH0gX3NpZ2ZhdWx0OwoKCiAgICAgICAgICAgICAgICBzdHJ1Y3Qgewog ICAgICAgICAgICAgICAgICAgICAgICBpbnQgX2JhbmQ7CiAgICAgICAgICAgICAgICAgICAgICAg IGludCBfZmQ7CiAgICAgICAgICAgICAgICB9IF9zaWdwb2xsOwogICAgICAgIH0gX3NpZmllbGRz Owp9IHNpZ2luZm9fdDsKIyAyMDAgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvYXNtL3NpZ2luZm8u aCIKdHlwZWRlZiBzdHJ1Y3Qgc2lnZXZlbnQgewogICAgICAgIHNpZ3ZhbF90IHNpZ2V2X3ZhbHVl OwogICAgICAgIGludCBzaWdldl9zaWdubzsKICAgICAgICBpbnQgc2lnZXZfbm90aWZ5OwogICAg ICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIGludCBfcGFkWygoNjQvc2l6ZW9mKGludCkpIC0g MyldOwoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZv aWQgKCpfZnVuY3Rpb24pKHNpZ3ZhbF90KTsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq X2F0dHJpYnV0ZTsKICAgICAgICAgICAgICAgIH0gX3NpZ2V2X3RocmVhZDsKICAgICAgICB9IF9z aWdldl91bjsKfSBzaWdldmVudF90OwoKCgoKCgoKc3RhdGljIGlubGluZSB2b2lkIGNvcHlfc2ln aW5mbyhzaWdpbmZvX3QgKnRvLCBzaWdpbmZvX3QgKmZyb20pCnsKICAgICAgICBpZiAoZnJvbS0+ c2lfY29kZSA8IDApCiAgICAgICAgICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZW9m KHNpZ2luZm9fdCkpID8gX19jb25zdGFudF9tZW1jcHkoKHRvKSwoZnJvbSksKHNpemVvZihzaWdp bmZvX3QpKSkgOiBfX21lbWNweSgodG8pLChmcm9tKSwoc2l6ZW9mKHNpZ2luZm9fdCkpKSk7CiAg ICAgICAgZWxzZQoKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgzKnNpemVv ZihpbnQpICsgc2l6ZW9mKGZyb20tPl9zaWZpZWxkcy5fc2lnY2hsZCkpID8gX19jb25zdGFudF9t ZW1jcHkoKHRvKSwoZnJvbSksKDMqc2l6ZW9mKGludCkgKyBzaXplb2YoZnJvbS0+X3NpZmllbGRz Ll9zaWdjaGxkKSkpIDogX19tZW1jcHkoKHRvKSwoZnJvbSksKDMqc2l6ZW9mKGludCkgKyBzaXpl b2YoZnJvbS0+X3NpZmllbGRzLl9zaWdjaGxkKSkpKTsKfQoKZXh0ZXJuIGludCBjb3B5X3NpZ2lu Zm9fdG9fdXNlcihzaWdpbmZvX3QgKnRvLCBzaWdpbmZvX3QgKmZyb20pOwojIDYgIi91c3Ivc3Jj L2xpbnV4L2luY2x1ZGUvbGludXgvc2lnbmFsLmgiIDIKCgoKCgoKc3RydWN0IHNpZ3F1ZXVlIHsK ICAgICAgICBzdHJ1Y3Qgc2lncXVldWUgKm5leHQ7CiAgICAgICAgc2lnaW5mb190IGluZm87Cn07 CgpzdHJ1Y3Qgc2lncGVuZGluZyB7CiAgICAgICAgc3RydWN0IHNpZ3F1ZXVlICpoZWFkLCAqKnRh aWw7CiAgICAgICAgc2lnc2V0X3Qgc2lnbmFsOwp9OwojIDEwOCAiL3Vzci9zcmMvbGludXgvaW5j bHVkZS9saW51eC9zaWduYWwuaCIKc3RhdGljIGlubGluZSB2b2lkIHNpZ29yc2V0cyhzaWdzZXRf dCAqciwgY29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpiKSB7IHVuc2lnbmVkIGxv bmcgYTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25lZCBsb25nIGk7IGZvciAo aSA9IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2lnWzQqaSswXTsgYTEgPSBh LT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+c2lnWzQqaSszXTsgYjAg PSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsyXTsg YjMgPSBiLT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjApKTsgci0+c2ln WzQqaSsxXSA9ICgoYTEpIHwgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSB8IChiMikpOyBy LT5zaWdbNCppKzNdID0gKChhMykgfCAoYjMpKTsgfSBzd2l0Y2ggKCg2NCAvIDMyKSAlIDQpIHsg Y2FzZSAzOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5z aWdbNCppKzJdOyBiMCA9IGItPnNpZ1s0KmkrMF07IGIxID0gYi0+c2lnWzQqaSsxXTsgYjIgPSBi LT5zaWdbNCppKzJdOyByLT5zaWdbNCppKzBdID0gKChhMCkgfCAoYjApKTsgci0+c2lnWzQqaSsx XSA9ICgoYTEpIHwgKGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSB8IChiMikpOyBicmVhazsg Y2FzZSAyOiBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0gYS0+c2lnWzQqaSsxXTsgYjAgPSBiLT5z aWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8IChi MCkpOyByLT5zaWdbNCppKzFdID0gKChhMSkgfCAoYjEpKTsgYnJlYWs7IGNhc2UgMTogYTAgPSBh LT5zaWdbNCppKzBdOyBiMCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0KmkrMF0gPSAoKGEwKSB8 IChiMCkpOyBicmVhazsgfSB9CgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2FuZHNldHMoc2lnc2V0 X3QgKnIsIGNvbnN0IHNpZ3NldF90ICphLCBjb25zdCBzaWdzZXRfdCAqYikgeyB1bnNpZ25lZCBs b25nIGEwLCBhMSwgYTIsIGEzLCBiMCwgYjEsIGIyLCBiMzsgdW5zaWduZWQgbG9uZyBpOyBmb3Ig KGkgPSAwOyBpIDwgKDY0IC8gMzIpLzQ7ICsraSkgeyBhMCA9IGEtPnNpZ1s0KmkrMF07IGExID0g YS0+c2lnWzQqaSsxXTsgYTIgPSBhLT5zaWdbNCppKzJdOyBhMyA9IGEtPnNpZ1s0KmkrM107IGIw ID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyBiMiA9IGItPnNpZ1s0KmkrMl07 IGIzID0gYi0+c2lnWzQqaSszXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIwKSk7IHItPnNp Z1s0KmkrMV0gPSAoKGExKSAmIChiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgJiAoYjIpKTsg ci0+c2lnWzQqaSszXSA9ICgoYTMpICYgKGIzKSk7IH0gc3dpdGNoICgoNjQgLyAzMikgJSA0KSB7 IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEyID0gYS0+ c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0g Yi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgKGIwKSk7IHItPnNpZ1s0Kmkr MV0gPSAoKGExKSAmIChiMSkpOyByLT5zaWdbNCppKzJdID0gKChhMikgJiAoYjIpKTsgYnJlYWs7 IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGIwID0gYi0+ c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiAo YjApKTsgci0+c2lnWzQqaSsxXSA9ICgoYTEpICYgKGIxKSk7IGJyZWFrOyBjYXNlIDE6IGEwID0g YS0+c2lnWzQqaSswXTsgYjAgPSBiLT5zaWdbNCppKzBdOyByLT5zaWdbNCppKzBdID0gKChhMCkg JiAoYjApKTsgYnJlYWs7IH0gfQoKCnN0YXRpYyBpbmxpbmUgdm9pZCBzaWduYW5kc2V0cyhzaWdz ZXRfdCAqciwgY29uc3Qgc2lnc2V0X3QgKmEsIGNvbnN0IHNpZ3NldF90ICpiKSB7IHVuc2lnbmVk IGxvbmcgYTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOyB1bnNpZ25lZCBsb25nIGk7IGZv ciAoaSA9IDA7IGkgPCAoNjQgLyAzMikvNDsgKytpKSB7IGEwID0gYS0+c2lnWzQqaSswXTsgYTEg PSBhLT5zaWdbNCppKzFdOyBhMiA9IGEtPnNpZ1s0KmkrMl07IGEzID0gYS0+c2lnWzQqaSszXTsg YjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07IGIyID0gYi0+c2lnWzQqaSsy XTsgYjMgPSBiLT5zaWdbNCppKzNdOyByLT5zaWdbNCppKzBdID0gKChhMCkgJiB+KGIwKSk7IHIt PnNpZ1s0KmkrMV0gPSAoKGExKSAmIH4oYjEpKTsgci0+c2lnWzQqaSsyXSA9ICgoYTIpICYgfihi MikpOyByLT5zaWdbNCppKzNdID0gKChhMykgJiB+KGIzKSk7IH0gc3dpdGNoICgoNjQgLyAzMikg JSA0KSB7IGNhc2UgMzogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07IGEy ID0gYS0+c2lnWzQqaSsyXTsgYjAgPSBiLT5zaWdbNCppKzBdOyBiMSA9IGItPnNpZ1s0KmkrMV07 IGIyID0gYi0+c2lnWzQqaSsyXTsgci0+c2lnWzQqaSswXSA9ICgoYTApICYgfihiMCkpOyByLT5z aWdbNCppKzFdID0gKChhMSkgJiB+KGIxKSk7IHItPnNpZ1s0KmkrMl0gPSAoKGEyKSAmIH4oYjIp KTsgYnJlYWs7IGNhc2UgMjogYTAgPSBhLT5zaWdbNCppKzBdOyBhMSA9IGEtPnNpZ1s0KmkrMV07 IGIwID0gYi0+c2lnWzQqaSswXTsgYjEgPSBiLT5zaWdbNCppKzFdOyByLT5zaWdbNCppKzBdID0g KChhMCkgJiB+KGIwKSk7IHItPnNpZ1s0KmkrMV0gPSAoKGExKSAmIH4oYjEpKTsgYnJlYWs7IGNh c2UgMTogYTAgPSBhLT5zaWdbNCppKzBdOyBiMCA9IGItPnNpZ1s0KmkrMF07IHItPnNpZ1s0Kmkr MF0gPSAoKGEwKSAmIH4oYjApKTsgYnJlYWs7IH0gfQojIDE0MCAiL3Vzci9zcmMvbGludXgvaW5j bHVkZS9saW51eC9zaWduYWwuaCIKc3RhdGljIGlubGluZSB2b2lkIHNpZ25vdHNldChzaWdzZXRf dCAqc2V0KSB7IHVuc2lnbmVkIGxvbmcgaTsgZm9yIChpID0gMDsgaSA8ICg2NCAvIDMyKS80OyAr K2kpIHsgc2V0LT5zaWdbNCppKzBdID0gKH4oc2V0LT5zaWdbNCppKzBdKSk7IHNldC0+c2lnWzQq aSsxXSA9ICh+KHNldC0+c2lnWzQqaSsxXSkpOyBzZXQtPnNpZ1s0KmkrMl0gPSAofihzZXQtPnNp Z1s0KmkrMl0pKTsgc2V0LT5zaWdbNCppKzNdID0gKH4oc2V0LT5zaWdbNCppKzNdKSk7IH0gc3dp dGNoICgoNjQgLyAzMikgJSA0KSB7IGNhc2UgMzogc2V0LT5zaWdbNCppKzJdID0gKH4oc2V0LT5z aWdbNCppKzJdKSk7IGNhc2UgMjogc2V0LT5zaWdbNCppKzFdID0gKH4oc2V0LT5zaWdbNCppKzFd KSk7IGNhc2UgMTogc2V0LT5zaWdbNCppKzBdID0gKH4oc2V0LT5zaWdbNCppKzBdKSk7IH0gfQoK CgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2VtcHR5c2V0KHNpZ3NldF90ICpzZXQpCnsKICAgICAg ICBzd2l0Y2ggKCg2NCAvIDMyKSkgewogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAo X19idWlsdGluX2NvbnN0YW50X3AoMCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihz aWdzZXRfdCkpKSA/IF9fY29uc3RhbnRfY19hbmRfY291bnRfbWVtc2V0KCgoc2V0KSksKCgweDAx MDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKDApKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpIDogX19j b25zdGFudF9jX21lbXNldCgoKHNldCkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgw KSkpLCgoc2l6ZW9mKHNpZ3NldF90KSkpKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVv ZihzaWdzZXRfdCkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoc2V0KSkpLCgoKDApKSksKCgoc2l6 ZW9mKHNpZ3NldF90KSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoc2V0KSksKCgwKSksKChzaXpl b2Yoc2lnc2V0X3QpKSkpKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6 IHNldC0+c2lnWzFdID0gMDsKICAgICAgICBjYXNlIDE6IHNldC0+c2lnWzBdID0gMDsKICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KfQoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2ZpbGxz ZXQoc2lnc2V0X3QgKnNldCkKewogICAgICAgIHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAg ZGVmYXVsdDoKICAgICAgICAgICAgICAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCgtMSkgPyAoX19i dWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihzaWdzZXRfdCkpKSA/IF9fY29uc3RhbnRfY19hbmRf Y291bnRfbWVtc2V0KCgoc2V0KSksKCgweDAxMDEwMTAxVUwqKHVuc2lnbmVkIGNoYXIpKC0xKSkp LCgoc2l6ZW9mKHNpZ3NldF90KSkpKSA6IF9fY29uc3RhbnRfY19tZW1zZXQoKChzZXQpKSwoKDB4 MDEwMTAxMDFVTCoodW5zaWduZWQgY2hhcikoLTEpKSksKChzaXplb2Yoc2lnc2V0X3QpKSkpKSA6 IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKHNpZ3NldF90KSkpID8gX19tZW1zZXRfZ2Vu ZXJpYygoKChzZXQpKSksKCgoLTEpKSksKCgoc2l6ZW9mKHNpZ3NldF90KSkpKSkgOiBfX21lbXNl dF9nZW5lcmljKCgoc2V0KSksKCgtMSkpLCgoc2l6ZW9mKHNpZ3NldF90KSkpKSkpOwogICAgICAg ICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9IC0xOwogICAgICAg IGNhc2UgMTogc2V0LT5zaWdbMF0gPSAtMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg IH0KfQoKZXh0ZXJuIGNoYXIgKiByZW5kZXJfc2lnc2V0X3Qoc2lnc2V0X3QgKnNldCwgY2hhciAq YnVmZmVyKTsKCgoKc3RhdGljIGlubGluZSB2b2lkIHNpZ2FkZHNldG1hc2soc2lnc2V0X3QgKnNl dCwgdW5zaWduZWQgbG9uZyBtYXNrKQp7CiAgICAgICAgc2V0LT5zaWdbMF0gfD0gbWFzazsKfQoK c3RhdGljIGlubGluZSB2b2lkIHNpZ2RlbHNldG1hc2soc2lnc2V0X3QgKnNldCwgdW5zaWduZWQg bG9uZyBtYXNrKQp7CiAgICAgICAgc2V0LT5zaWdbMF0gJj0gfm1hc2s7Cn0KCnN0YXRpYyBpbmxp bmUgaW50IHNpZ3Rlc3RzZXRtYXNrKHNpZ3NldF90ICpzZXQsIHVuc2lnbmVkIGxvbmcgbWFzaykK ewogICAgICAgIHJldHVybiAoc2V0LT5zaWdbMF0gJiBtYXNrKSAhPSAwOwp9CgpzdGF0aWMgaW5s aW5lIHZvaWQgc2lnaW5pdHNldChzaWdzZXRfdCAqc2V0LCB1bnNpZ25lZCBsb25nIG1hc2spCnsK ICAgICAgICBzZXQtPnNpZ1swXSA9IG1hc2s7CiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsK ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgKF9fYnVpbHRpbl9jb25zdGFudF9wKDAp ID8gKF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpID8g X19jb25zdGFudF9jX2FuZF9jb3VudF9tZW1zZXQoKCgmc2V0LT5zaWdbMV0pKSwoKDB4MDEwMTAx MDFVTCoodW5zaWduZWQgY2hhcikoMCkpKSwoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkp IDogX19jb25zdGFudF9jX21lbXNldCgoKCZzZXQtPnNpZ1sxXSkpLCgoMHgwMTAxMDEwMVVMKih1 bnNpZ25lZCBjaGFyKSgwKSkpLCgoc2l6ZW9mKGxvbmcpKigoNjQgLyAzMiktMSkpKSkpIDogKF9f YnVpbHRpbl9jb25zdGFudF9wKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpID8gX19tZW1z ZXRfZ2VuZXJpYygoKCgmc2V0LT5zaWdbMV0pKSksKCgoMCkpKSwoKChzaXplb2YobG9uZykqKCg2 NCAvIDMyKS0xKSkpKSkgOiBfX21lbXNldF9nZW5lcmljKCgoJnNldC0+c2lnWzFdKSksKCgwKSks KChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkpKSkpOwogICAgICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9IDA7CiAgICAgICAgY2FzZSAxOiA7CiAgICAg ICAgfQp9CgpzdGF0aWMgaW5saW5lIHZvaWQgc2lnaW5pdHNldGludihzaWdzZXRfdCAqc2V0LCB1 bnNpZ25lZCBsb25nIG1hc2spCnsKICAgICAgICBzZXQtPnNpZ1swXSA9IH5tYXNrOwogICAgICAg IHN3aXRjaCAoKDY0IC8gMzIpKSB7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIChf X2J1aWx0aW5fY29uc3RhbnRfcCgtMSkgPyAoX19idWlsdGluX2NvbnN0YW50X3AoKHNpemVvZihs b25nKSooKDY0IC8gMzIpLTEpKSkgPyBfX2NvbnN0YW50X2NfYW5kX2NvdW50X21lbXNldCgoKCZz ZXQtPnNpZ1sxXSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVv Zihsb25nKSooKDY0IC8gMzIpLTEpKSkpIDogX19jb25zdGFudF9jX21lbXNldCgoKCZzZXQtPnNp Z1sxXSkpLCgoMHgwMTAxMDEwMVVMKih1bnNpZ25lZCBjaGFyKSgtMSkpKSwoKHNpemVvZihsb25n KSooKDY0IC8gMzIpLTEpKSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZW9mKGxvbmcp KigoNjQgLyAzMiktMSkpKSA/IF9fbWVtc2V0X2dlbmVyaWMoKCgoJnNldC0+c2lnWzFdKSkpLCgo KC0xKSkpLCgoKHNpemVvZihsb25nKSooKDY0IC8gMzIpLTEpKSkpKSA6IF9fbWVtc2V0X2dlbmVy aWMoKCgmc2V0LT5zaWdbMV0pKSwoKC0xKSksKChzaXplb2YobG9uZykqKCg2NCAvIDMyKS0xKSkp KSkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAyOiBzZXQtPnNpZ1sxXSA9 IC0xOwogICAgICAgIGNhc2UgMTogOwogICAgICAgIH0KfQoKCgpzdGF0aWMgaW5saW5lIHZvaWQg aW5pdF9zaWdwZW5kaW5nKHN0cnVjdCBzaWdwZW5kaW5nICpzaWcpCnsKICAgICAgICBzaWdlbXB0 eXNldCgmc2lnLT5zaWduYWwpOwogICAgICAgIHNpZy0+aGVhZCA9ICgodm9pZCAqKTApOwogICAg ICAgIHNpZy0+dGFpbCA9ICZzaWctPmhlYWQ7Cn0KCmV4dGVybiBsb25nIGRvX3NpZ3BlbmRpbmco dm9pZCAqLCB1bnNpZ25lZCBsb25nKTsKIyAyNyAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51 eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zZWN1cmViaXRz LmgiIDEKCgoKCgpleHRlcm4gdW5zaWduZWQgc2VjdXJlYml0czsKIyAyOCAiL3Vzci9zcmMvbGlu dXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9s aW51eC9mc19zdHJ1Y3QuaCIgMQoKCgoKc3RydWN0IGZzX3N0cnVjdCB7CiAgICAgICAgYXRvbWlj X3QgY291bnQ7CiAgICAgICAgcndsb2NrX3QgbG9jazsKICAgICAgICBpbnQgdW1hc2s7CiAgICAg ICAgc3RydWN0IGRlbnRyeSAqIHJvb3QsICogcHdkLCAqIGFsdHJvb3Q7CiAgICAgICAgc3RydWN0 IHZmc21vdW50ICogcm9vdG1udCwgKiBwd2RtbnQsICogYWx0cm9vdG1udDsKfTsKIyAyMCAiL3Vz ci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9mc19zdHJ1Y3QuaCIKZXh0ZXJuIHZvaWQgZXhpdF9m cyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiB2b2lkIHNldF9mc19hbHRyb290KHZvaWQp OwoKCgoKCgpzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2ZzX3Jvb3Qoc3RydWN0IGZzX3N0cnVjdCAq ZnMsCiAgICAgICAgc3RydWN0IHZmc21vdW50ICptbnQsCiAgICAgICAgc3RydWN0IGRlbnRyeSAq ZGVudHJ5KQp7CiAgICAgICAgc3RydWN0IGRlbnRyeSAqb2xkX3Jvb3Q7CiAgICAgICAgc3RydWN0 IHZmc21vdW50ICpvbGRfcm9vdG1udDsKICAgICAgICB3cml0ZV9sb2NrKCZmcy0+bG9jayk7CiAg ICAgICAgb2xkX3Jvb3QgPSBmcy0+cm9vdDsKICAgICAgICBvbGRfcm9vdG1udCA9IGZzLT5yb290 bW50OwogICAgICAgIGZzLT5yb290bW50ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMtPnJvb3Qg PSBkZ2V0KGRlbnRyeSk7CiAgICAgICAgYXNtIHZvbGF0aWxlKCJsb2NrIDsgYWRkbCAkIiAiMHgw MTAwMDAwMCIgIiwlMCI6Ij1tIiAoKCZmcy0+bG9jayktPmxvY2spIDogOiAibWVtb3J5Iik7CiAg ICAgICAgaWYgKG9sZF9yb290KSB7CiAgICAgICAgICAgICAgICBkcHV0KG9sZF9yb290KTsKICAg ICAgICAgICAgICAgIG1udHB1dChvbGRfcm9vdG1udCk7CiAgICAgICAgfQp9CgoKCgoKCnN0YXRp YyBpbmxpbmUgdm9pZCBzZXRfZnNfcHdkKHN0cnVjdCBmc19zdHJ1Y3QgKmZzLAogICAgICAgIHN0 cnVjdCB2ZnNtb3VudCAqbW50LAogICAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogICAg ICAgIHN0cnVjdCBkZW50cnkgKm9sZF9wd2Q7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpvbGRf cHdkbW50OwogICAgICAgIHdyaXRlX2xvY2soJmZzLT5sb2NrKTsKICAgICAgICBvbGRfcHdkID0g ZnMtPnB3ZDsKICAgICAgICBvbGRfcHdkbW50ID0gZnMtPnB3ZG1udDsKICAgICAgICBmcy0+cHdk bW50ID0gbW50Z2V0KG1udCk7CiAgICAgICAgZnMtPnB3ZCA9IGRnZXQoZGVudHJ5KTsKICAgICAg ICBhc20gdm9sYXRpbGUoImxvY2sgOyBhZGRsICQiICIweDAxMDAwMDAwIiAiLCUwIjoiPW0iICgo JmZzLT5sb2NrKS0+bG9jaykgOiA6ICJtZW1vcnkiKTsKICAgICAgICBpZiAob2xkX3B3ZCkgewog ICAgICAgICAgICAgICAgZHB1dChvbGRfcHdkKTsKICAgICAgICAgICAgICAgIG1udHB1dChvbGRf cHdkbW50KTsKICAgICAgICB9Cn0KCnN0cnVjdCBmc19zdHJ1Y3QgKmNvcHlfZnNfc3RydWN0KHN0 cnVjdCBmc19zdHJ1Y3QgKm9sZCk7CnZvaWQgcHV0X2ZzX3N0cnVjdChzdHJ1Y3QgZnNfc3RydWN0 ICpmcyk7CiMgMjkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoKc3Ry dWN0IGV4ZWNfZG9tYWluOwojIDU5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVk LmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIGF2ZW5ydW5bXTsKIyA3NiAiL3Vzci9zcmMvbGludXgv aW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gaW50IG5yX3J1bm5pbmcsIG5yX3RocmVhZHM7 CmV4dGVybiBpbnQgbGFzdF9waWQ7CgoKCiMgMSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51 eC9wYXJhbS5oIiAxCiMgODIgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIg MgojIDEgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIgMQojIDIxICIv dXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiCnN0cnVjdCBydXNhZ2Ugewog ICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1 X3N0aW1lOwogICAgICAgIGxvbmcgcnVfbWF4cnNzOwogICAgICAgIGxvbmcgcnVfaXhyc3M7CiAg ICAgICAgbG9uZyBydV9pZHJzczsKICAgICAgICBsb25nIHJ1X2lzcnNzOwogICAgICAgIGxvbmcg cnVfbWluZmx0OwogICAgICAgIGxvbmcgcnVfbWFqZmx0OwogICAgICAgIGxvbmcgcnVfbnN3YXA7 CiAgICAgICAgbG9uZyBydV9pbmJsb2NrOwogICAgICAgIGxvbmcgcnVfb3VibG9jazsKICAgICAg ICBsb25nIHJ1X21zZ3NuZDsKICAgICAgICBsb25nIHJ1X21zZ3JjdjsKICAgICAgICBsb25nIHJ1 X25zaWduYWxzOwogICAgICAgIGxvbmcgcnVfbnZjc3c7CiAgICAgICAgbG9uZyBydV9uaXZjc3c7 Cn07CgpzdHJ1Y3QgcmxpbWl0IHsKICAgICAgICB1bnNpZ25lZCBsb25nIHJsaW1fY3VyOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgcmxpbV9tYXg7Cn07CiMgNTYgIi91c3Ivc3JjL2xpbnV4L2luY2x1 ZGUvbGludXgvcmVzb3VyY2UuaCIKIyAxICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbS9yZXNv dXJjZS5oIiAxCiMgNTcgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIg MgojIDgzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxMjggIi91 c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IHNjaGVkX3BhcmFtIHsK ICAgICAgICBpbnQgc2NoZWRfcHJpb3JpdHk7Cn07CgpzdHJ1Y3QgY29tcGxldGlvbjsKIyAxNDQg Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJuIHJ3bG9ja190IHRh c2tsaXN0X2xvY2s7CmV4dGVybiBzcGlubG9ja190IHJ1bnF1ZXVlX2xvY2s7CmV4dGVybiBzcGlu bG9ja190IG1tbGlzdF9sb2NrOwoKZXh0ZXJuIHZvaWQgc2NoZWRfaW5pdCh2b2lkKTsKZXh0ZXJu IHZvaWQgaW5pdF9pZGxlKHZvaWQpOwpleHRlcm4gdm9pZCBzaG93X3N0YXRlKHZvaWQpOwpleHRl cm4gdm9pZCBjcHVfaW5pdCAodm9pZCk7CmV4dGVybiB2b2lkIHRyYXBfaW5pdCh2b2lkKTsKZXh0 ZXJuIHZvaWQgdXBkYXRlX3Byb2Nlc3NfdGltZXMoaW50IHVzZXIpOwpleHRlcm4gdm9pZCB1cGRh dGVfb25lX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1bnNpZ25lZCBsb25nIHVzZXIs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN5c3RlbSwgaW50 IGNwdSk7CgoKZXh0ZXJuIHNpZ25lZCBsb25nIHNjaGVkdWxlX3RpbWVvdXQoc2lnbmVkIGxvbmcg dGltZW91dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwogX19hdHRyaWJ1dGVfXygocmVn cGFybSgwKSkpIHZvaWQgc2NoZWR1bGUodm9pZCk7CgpleHRlcm4gaW50IHNjaGVkdWxlX3Rhc2so c3RydWN0IHRxX3N0cnVjdCAqdGFzayk7CmV4dGVybiB2b2lkIGZsdXNoX3NjaGVkdWxlZF90YXNr cyh2b2lkKTsKZXh0ZXJuIGludCBzdGFydF9jb250ZXh0X3RocmVhZCh2b2lkKTsKZXh0ZXJuIGlu dCBjdXJyZW50X2lzX2tldmVudGQodm9pZCk7CgoKCgoKCgpzdHJ1Y3QgbmFtZXNwYWNlOwoKCgpz dHJ1Y3QgZmlsZXNfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICByd2xv Y2tfdCBmaWxlX2xvY2s7CiAgICAgICAgaW50IG1heF9mZHM7CiAgICAgICAgaW50IG1heF9mZHNl dDsKICAgICAgICBpbnQgbmV4dF9mZDsKICAgICAgICBzdHJ1Y3QgZmlsZSAqKiBmZDsKICAgICAg ICBmZF9zZXQgKmNsb3NlX29uX2V4ZWM7CiAgICAgICAgZmRfc2V0ICpvcGVuX2ZkczsKICAgICAg ICBmZF9zZXQgY2xvc2Vfb25fZXhlY19pbml0OwogICAgICAgIGZkX3NldCBvcGVuX2Zkc19pbml0 OwogICAgICAgIHN0cnVjdCBmaWxlICogZmRfYXJyYXlbMzJdOwp9OwojIDIwOCAiL3Vzci9zcmMv bGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gaW50IG1heF9tYXBfY291bnQ7Cgpz dHJ1Y3QgbW1fc3RydWN0IHsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBtbWFwOwog ICAgICAgIHJiX3Jvb3RfdCBtbV9yYjsKICAgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiBt bWFwX2NhY2hlOwogICAgICAgIHBnZF90ICogcGdkOwogICAgICAgIGF0b21pY190IG1tX3VzZXJz OwogICAgICAgIGF0b21pY190IG1tX2NvdW50OwogICAgICAgIGludCBtYXBfY291bnQ7CiAgICAg ICAgc3RydWN0IHJ3X3NlbWFwaG9yZSBtbWFwX3NlbTsKICAgICAgICBzcGlubG9ja190IHBhZ2Vf dGFibGVfbG9jazsKCiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBtbWxpc3Q7CgoKCgogICAgICAg IHVuc2lnbmVkIGxvbmcgc3RhcnRfY29kZSwgZW5kX2NvZGUsIHN0YXJ0X2RhdGEsIGVuZF9kYXRh OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfYnJrLCBicmssIHN0YXJ0X3N0YWNrOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgYXJnX3N0YXJ0LCBhcmdfZW5kLCBlbnZfc3RhcnQsIGVudl9lbmQ7 CiAgICAgICAgdW5zaWduZWQgbG9uZyByc3MsIHRvdGFsX3ZtLCBsb2NrZWRfdm07CiAgICAgICAg dW5zaWduZWQgbG9uZyBkZWZfZmxhZ3M7CiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVfdm1fbWFz azsKICAgICAgICB1bnNpZ25lZCBsb25nIHN3YXBfYWRkcmVzczsKCiAgICAgICAgdW5zaWduZWQg ZHVtcGFibGU6MTsKCgogICAgICAgIG1tX2NvbnRleHRfdCBjb250ZXh0Owp9OwoKZXh0ZXJuIGlu dCBtbWxpc3RfbnI7CiMgMjUzICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi CnN0cnVjdCBzaWduYWxfc3RydWN0IHsKICAgICAgICBhdG9taWNfdCBjb3VudDsKICAgICAgICBz dHJ1Y3Qga19zaWdhY3Rpb24gYWN0aW9uWzY0XTsKICAgICAgICBzcGlubG9ja190IHNpZ2xvY2s7 Cn07CiMgMjY5ICIvdXNyL3NyYy9saW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0cnVjdCB1 c2VyX3N0cnVjdCB7CiAgICAgICAgYXRvbWljX3QgX19jb3VudDsKICAgICAgICBhdG9taWNfdCBw cm9jZXNzZXM7CiAgICAgICAgYXRvbWljX3QgZmlsZXM7CgoKICAgICAgICBzdHJ1Y3QgdXNlcl9z dHJ1Y3QgKm5leHQsICoqcHByZXY7CiAgICAgICAgdWlkX3QgdWlkOwp9OwoKCgoKCgpleHRlcm4g c3RydWN0IHVzZXJfc3RydWN0IHJvb3RfdXNlcjsKCgpzdHJ1Y3QgdGFza19zdHJ1Y3QgewoKCgog ICAgICAgIHZvbGF0aWxlIGxvbmcgc3RhdGU7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsK ICAgICAgICBpbnQgc2lncGVuZGluZzsKICAgICAgICBtbV9zZWdtZW50X3QgYWRkcl9saW1pdDsK CgoKICAgICAgICBzdHJ1Y3QgZXhlY19kb21haW4gKmV4ZWNfZG9tYWluOwogICAgICAgIHZvbGF0 aWxlIGxvbmcgbmVlZF9yZXNjaGVkOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcHRyYWNlOwoKICAg ICAgICBpbnQgbG9ja19kZXB0aDsKCgoKCgoKICAgICAgICBsb25nIGNvdW50ZXI7CiAgICAgICAg bG9uZyBuaWNlOwogICAgICAgIHVuc2lnbmVkIGxvbmcgcG9saWN5OwogICAgICAgIHN0cnVjdCBt bV9zdHJ1Y3QgKm1tOwogICAgICAgIGludCBwcm9jZXNzb3I7CiMgMzIyICIvdXNyL3NyYy9saW51 eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiAgICAgICAgdW5zaWduZWQgbG9uZyBjcHVzX3J1bm5h YmxlLCBjcHVzX2FsbG93ZWQ7CgoKCgogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgcnVuX2xpc3Q7 CiAgICAgICAgdW5zaWduZWQgbG9uZyBzbGVlcF90aW1lOwoKICAgICAgICBzdHJ1Y3QgdGFza19z dHJ1Y3QgKm5leHRfdGFzaywgKnByZXZfdGFzazsKICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICph Y3RpdmVfbW07CiAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBsb2NhbF9wYWdlczsKICAgICAgICB1 bnNpZ25lZCBpbnQgYWxsb2NhdGlvbl9vcmRlciwgbnJfbG9jYWxfcGFnZXM7CgoKICAgICAgICBz dHJ1Y3QgbGludXhfYmluZm10ICpiaW5mbXQ7CiAgICAgICAgaW50IGV4aXRfY29kZSwgZXhpdF9z aWduYWw7CiAgICAgICAgaW50IHBkZWF0aF9zaWduYWw7CgogICAgICAgIHVuc2lnbmVkIGxvbmcg cGVyc29uYWxpdHk7CiAgICAgICAgaW50IGRpZF9leGVjOjE7CiAgICAgICAgcGlkX3QgcGlkOwog ICAgICAgIHBpZF90IHBncnA7CiAgICAgICAgcGlkX3QgdHR5X29sZF9wZ3JwOwogICAgICAgIHBp ZF90IHNlc3Npb247CiAgICAgICAgcGlkX3QgdGdpZDsKCiAgICAgICAgaW50IGxlYWRlcjsKCgoK CgogICAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcF9vcHB0ciwgKnBfcHB0ciwgKnBfY3B0ciwg KnBfeXNwdHIsICpwX29zcHRyOwogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgdGhyZWFkX2dyb3Vw OwoKCiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpwaWRoYXNoX25leHQ7CiAgICAgICAgc3Ry dWN0IHRhc2tfc3RydWN0ICoqcGlkaGFzaF9wcHJldjsKCiAgICAgICAgd2FpdF9xdWV1ZV9oZWFk X3Qgd2FpdF9jaGxkZXhpdDsKICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiAqdmZvcmtfZG9uZTsK ICAgICAgICB1bnNpZ25lZCBsb25nIHJ0X3ByaW9yaXR5OwogICAgICAgIHVuc2lnbmVkIGxvbmcg aXRfcmVhbF92YWx1ZSwgaXRfcHJvZl92YWx1ZSwgaXRfdmlydF92YWx1ZTsKICAgICAgICB1bnNp Z25lZCBsb25nIGl0X3JlYWxfaW5jciwgaXRfcHJvZl9pbmNyLCBpdF92aXJ0X2luY3I7CiAgICAg ICAgc3RydWN0IHRpbWVyX2xpc3QgcmVhbF90aW1lcjsKICAgICAgICBzdHJ1Y3QgdG1zIHRpbWVz OwogICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfdGltZTsKICAgICAgICBsb25nIHBlcl9jcHVf dXRpbWVbMzJdLCBwZXJfY3B1X3N0aW1lWzMyXTsKCiAgICAgICAgdW5zaWduZWQgbG9uZyBtaW5f Zmx0LCBtYWpfZmx0LCBuc3dhcCwgY21pbl9mbHQsIGNtYWpfZmx0LCBjbnN3YXA7CiAgICAgICAg aW50IHN3YXBwYWJsZToxOwoKICAgICAgICB1aWRfdCB1aWQsZXVpZCxzdWlkLGZzdWlkOwogICAg ICAgIGdpZF90IGdpZCxlZ2lkLHNnaWQsZnNnaWQ7CiAgICAgICAgaW50IG5ncm91cHM7CiAgICAg ICAgZ2lkX3QgZ3JvdXBzWzMyXTsKICAgICAgICBrZXJuZWxfY2FwX3QgY2FwX2VmZmVjdGl2ZSwg Y2FwX2luaGVyaXRhYmxlLCBjYXBfcGVybWl0dGVkOwogICAgICAgIGludCBrZWVwX2NhcGFiaWxp dGllczoxOwogICAgICAgIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcjsKCiAgICAgICAgc3RydWN0 IHJsaW1pdCBybGltWzExXTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCB1c2VkX21hdGg7CiAgICAg ICAgY2hhciBjb21tWzE2XTsKCiAgICAgICAgaW50IGxpbmtfY291bnQsIHRvdGFsX2xpbmtfY291 bnQ7CiAgICAgICAgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eTsKICAgICAgICB1bnNpZ25lZCBpbnQg bG9ja3M7CgogICAgICAgIHN0cnVjdCBzZW1fdW5kbyAqc2VtdW5kbzsKICAgICAgICBzdHJ1Y3Qg c2VtX3F1ZXVlICpzZW1zbGVlcGluZzsKCiAgICAgICAgc3RydWN0IHRocmVhZF9zdHJ1Y3QgdGhy ZWFkOwoKICAgICAgICBzdHJ1Y3QgZnNfc3RydWN0ICpmczsKCiAgICAgICAgc3RydWN0IGZpbGVz X3N0cnVjdCAqZmlsZXM7CgogICAgICAgIHN0cnVjdCBuYW1lc3BhY2UgKm5hbWVzcGFjZTsKCiAg ICAgICAgc3BpbmxvY2tfdCBzaWdtYXNrX2xvY2s7CiAgICAgICAgc3RydWN0IHNpZ25hbF9zdHJ1 Y3QgKnNpZzsKCiAgICAgICAgc2lnc2V0X3QgYmxvY2tlZDsKICAgICAgICBzdHJ1Y3Qgc2lncGVu ZGluZyBwZW5kaW5nOwoKICAgICAgICB1bnNpZ25lZCBsb25nIHNhc19zc19zcDsKICAgICAgICBz aXplX3Qgc2FzX3NzX3NpemU7CiAgICAgICAgaW50ICgqbm90aWZpZXIpKHZvaWQgKnByaXYpOwog ICAgICAgIHZvaWQgKm5vdGlmaWVyX2RhdGE7CiAgICAgICAgc2lnc2V0X3QgKm5vdGlmaWVyX21h c2s7CgoKICAgICAgICB1MzIgcGFyZW50X2V4ZWNfaWQ7CiAgICAgICAgdTMyIHNlbGZfZXhlY19p ZDsKCiAgICAgICAgc3BpbmxvY2tfdCBhbGxvY19sb2NrOwoKCiAgICAgICAgdm9pZCAqam91cm5h bF9pbmZvOwp9OwojIDQ2MSAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5oIgog X19hdHRyaWJ1dGVfXygocmVncGFybSgwKSkpIGxvbmcgc3lzX3NjaGVkX3lpZWxkKHZvaWQpOwoK CgoKCmV4dGVybiBzdHJ1Y3QgZXhlY19kb21haW4gZGVmYXVsdF9leGVjX2RvbWFpbjsKIyA1MjEg Ii91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKdW5pb24gdGFza191bmlvbiB7 CiAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0IHRhc2s7CiAgICAgICAgdW5zaWduZWQgbG9uZyBz dGFja1syMDQ4KnNpemVvZihsb25nKS9zaXplb2YobG9uZyldOwp9OwoKZXh0ZXJuIHVuaW9uIHRh c2tfdW5pb24gaW5pdF90YXNrX3VuaW9uOwoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgaW5pdF9t bTsKZXh0ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqaW5pdF90YXNrc1szMl07CgoKCmV4dGVybiBz dHJ1Y3QgdGFza19zdHJ1Y3QgKnBpZGhhc2hbKDQwOTYgPj4gMildOwoKCgpzdGF0aWMgaW5saW5l IHZvaWQgaGFzaF9waWQoc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgc3RydWN0IHRh c2tfc3RydWN0ICoqaHRhYmxlID0gJnBpZGhhc2hbKCgoKHAtPnBpZCkgPj4gOCkgXiAocC0+cGlk KSkgJiAoKDQwOTYgPj4gMikgLSAxKSldOwoKICAgICAgICBpZigocC0+cGlkaGFzaF9uZXh0ID0g Kmh0YWJsZSkgIT0gKCh2b2lkICopMCkpCiAgICAgICAgICAgICAgICAoKmh0YWJsZSktPnBpZGhh c2hfcHByZXYgPSAmcC0+cGlkaGFzaF9uZXh0OwogICAgICAgICpodGFibGUgPSBwOwogICAgICAg IHAtPnBpZGhhc2hfcHByZXYgPSBodGFibGU7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB1bmhhc2hf cGlkKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIGlmKHAtPnBpZGhhc2hfbmV4dCkK ICAgICAgICAgICAgICAgIHAtPnBpZGhhc2hfbmV4dC0+cGlkaGFzaF9wcHJldiA9IHAtPnBpZGhh c2hfcHByZXY7CiAgICAgICAgKnAtPnBpZGhhc2hfcHByZXYgPSBwLT5waWRoYXNoX25leHQ7Cn0K CnN0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3RydWN0ICpmaW5kX3Rhc2tfYnlfcGlkKGludCBw aWQpCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsICoqaHRhYmxlID0gJnBpZGhhc2hb KCgoKHBpZCkgPj4gOCkgXiAocGlkKSkgJiAoKDQwOTYgPj4gMikgLSAxKSldOwoKICAgICAgICBm b3IocCA9ICpodGFibGU7IHAgJiYgcC0+cGlkICE9IHBpZDsgcCA9IHAtPnBpZGhhc2hfbmV4dCkK ICAgICAgICAgICAgICAgIDsKCiAgICAgICAgcmV0dXJuIHA7Cn0KCgoKc3RhdGljIGlubGluZSB2 b2lkIHRhc2tfc2V0X2NwdShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgdW5zaWduZWQgaW50IGNw dSkKewogICAgICAgIHRzay0+cHJvY2Vzc29yID0gY3B1OwogICAgICAgIHRzay0+Y3B1c19ydW5u YWJsZSA9IDFVTCA8PCBjcHU7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX3JlbGVhc2VfY3B1 KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQp7CiAgICAgICAgdHNrLT5jcHVzX3J1bm5hYmxlID0g fjBVTDsKfQoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKiBhbGxvY191aWQodWlkX3QpOwpl eHRlcm4gdm9pZCBmcmVlX3VpZChzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKik7CgojIDEgIi91c3Ivc3Jj L2xpbnV4L2luY2x1ZGUvYXNtL2N1cnJlbnQuaCIgMQoKCgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7Cgpz dGF0aWMgaW5saW5lIHN0cnVjdCB0YXNrX3N0cnVjdCAqIGdldF9jdXJyZW50KHZvaWQpCnsKICAg ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnJlbnQ7CiAgICAgICAgX19hc21fXygiYW5kbCAl JWVzcCwlMDsgIjoiPXIiIChjdXJyZW50KSA6ICIwIiAofjgxOTFVTCkpOwogICAgICAgIHJldHVy biBjdXJyZW50OwogfQojIDU4MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9zY2hlZC5o IiAyCgpleHRlcm4gdW5zaWduZWQgbG9uZyB2b2xhdGlsZSBqaWZmaWVzOwpleHRlcm4gdW5zaWdu ZWQgbG9uZyBpdGltZXJfdGlja3M7CmV4dGVybiB1bnNpZ25lZCBsb25nIGl0aW1lcl9uZXh0Owpl eHRlcm4gc3RydWN0IHRpbWV2YWwgeHRpbWU7CmV4dGVybiB2b2lkIGRvX3RpbWVyKHN0cnVjdCBw dF9yZWdzICopOwoKZXh0ZXJuIHVuc2lnbmVkIGludCAqIHByb2ZfYnVmZmVyOwpleHRlcm4gdW5z aWduZWQgbG9uZyBwcm9mX2xlbjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcHJvZl9zaGlmdDsKCgoK ZXh0ZXJuIHZvaWQgX193YWtlX3VwKHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQg bW9kZSwgaW50IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIF9f d2FrZV91cF9zeW5jKHdhaXRfcXVldWVfaGVhZF90ICpxLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50 IG5yKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIHNsZWVwX29uKHdh aXRfcXVldWVfaGVhZF90ICpxKSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiBs b25nIHNsZWVwX29uX3RpbWVvdXQod2FpdF9xdWV1ZV9oZWFkX3QgKnEsIHNpZ25lZCBsb25nIHRp bWVvdXQpIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKCmV4dGVybiB2b2lkIGludGVycnVw dGlibGVfc2xlZXBfb24od2FpdF9xdWV1ZV9oZWFkX3QgKnEpIF9fYXR0cmlidXRlX18oKHJlZ3Bh cm0oMykpKTsKZXh0ZXJuIGxvbmcgaW50ZXJydXB0aWJsZV9zbGVlcF9vbl90aW1lb3V0KHdhaXRf cXVldWVfaGVhZF90ICpxLCBzaWduZWQgbG9uZyB0aW1lb3V0KSBfX2F0dHJpYnV0ZV9fKChyZWdw YXJtKDMpKSk7CgpleHRlcm4gaW50IHdha2VfdXBfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg KiB0c2spIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMykpKTsKIyA2MTUgIi91c3Ivc3JjL2xpbnV4 L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKIF9fYXR0cmlidXRlX18oKHJlZ3Bhcm0oMCkpKSBsb25n IHN5c193YWl0NChwaWRfdCBwaWQsdW5zaWduZWQgaW50ICogc3RhdF9hZGRyLCBpbnQgb3B0aW9u cywgc3RydWN0IHJ1c2FnZSAqIHJ1KTsKCmV4dGVybiBpbnQgaW5fZ3JvdXBfcChnaWRfdCk7CmV4 dGVybiBpbnQgaW5fZWdyb3VwX3AoZ2lkX3QpOwoKZXh0ZXJuIHZvaWQgcHJvY19jYWNoZXNfaW5p dCh2b2lkKTsKZXh0ZXJuIHZvaWQgZmx1c2hfc2lnbmFscyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7 CmV4dGVybiB2b2lkIGZsdXNoX3NpZ25hbF9oYW5kbGVycyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7 CmV4dGVybiB2b2lkIHNpZ19leGl0KGludCwgaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqKTsKZXh0ZXJu IGludCBkZXF1ZXVlX3NpZ25hbChzaWdzZXRfdCAqLCBzaWdpbmZvX3QgKik7CmV4dGVybiB2b2lk IGJsb2NrX2FsbF9zaWduYWxzKGludCAoKm5vdGlmaWVyKSh2b2lkICpwcml2KSwgdm9pZCAqcHJp diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnc2V0X3QgKm1hc2spOwpleHRlcm4g dm9pZCB1bmJsb2NrX2FsbF9zaWduYWxzKHZvaWQpOwpleHRlcm4gaW50IHNlbmRfc2lnX2luZm8o aW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBpbnQg Zm9yY2Vfc2lnX2luZm8oaW50LCBzdHJ1Y3Qgc2lnaW5mbyAqLCBzdHJ1Y3QgdGFza19zdHJ1Y3Qg Kik7CmV4dGVybiBpbnQga2lsbF9wZ19pbmZvKGludCwgc3RydWN0IHNpZ2luZm8gKiwgcGlkX3Qp OwpleHRlcm4gaW50IGtpbGxfc2xfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHBpZF90KTsK ZXh0ZXJuIGludCBraWxsX3Byb2NfaW5mbyhpbnQsIHN0cnVjdCBzaWdpbmZvICosIHBpZF90KTsK ZXh0ZXJuIHZvaWQgbm90aWZ5X3BhcmVudChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50KTsKZXh0 ZXJuIHZvaWQgZG9fbm90aWZ5X3BhcmVudChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50KTsKZXh0 ZXJuIHZvaWQgZm9yY2Vfc2lnKGludCwgc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gaW50 IHNlbmRfc2lnKGludCwgc3RydWN0IHRhc2tfc3RydWN0ICosIGludCk7CmV4dGVybiBpbnQga2ls bF9wZyhwaWRfdCwgaW50LCBpbnQpOwpleHRlcm4gaW50IGtpbGxfc2wocGlkX3QsIGludCwgaW50 KTsKZXh0ZXJuIGludCBraWxsX3Byb2MocGlkX3QsIGludCwgaW50KTsKZXh0ZXJuIGludCBkb19z aWdhY3Rpb24oaW50LCBjb25zdCBzdHJ1Y3Qga19zaWdhY3Rpb24gKiwgc3RydWN0IGtfc2lnYWN0 aW9uICopOwpleHRlcm4gaW50IGRvX3NpZ2FsdHN0YWNrKGNvbnN0IHN0YWNrX3QgKiwgc3RhY2tf dCAqLCB1bnNpZ25lZCBsb25nKTsKCnN0YXRpYyBpbmxpbmUgaW50IHNpZ25hbF9wZW5kaW5nKHN0 cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHJldHVybiAocC0+c2lncGVuZGluZyAhPSAw KTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGhhc19wZW5kaW5nX3NpZ25hbHMoc2lnc2V0X3Qg KnNpZ25hbCwgc2lnc2V0X3QgKmJsb2NrZWQpCnsKICAgICAgICB1bnNpZ25lZCBsb25nIHJlYWR5 OwogICAgICAgIGxvbmcgaTsKCiAgICAgICAgc3dpdGNoICgoNjQgLyAzMikpIHsKICAgICAgICBk ZWZhdWx0OgogICAgICAgICAgICAgICAgZm9yIChpID0gKDY0IC8gMzIpLCByZWFkeSA9IDA7IC0t aSA+PSAwIDspCiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWR5IHw9IHNpZ25hbC0+c2lnW2ld ICZ+IGJsb2NrZWQtPnNpZ1tpXTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNl IDQ6IHJlYWR5ID0gc2lnbmFsLT5zaWdbM10gJn4gYmxvY2tlZC0+c2lnWzNdOwogICAgICAgICAg ICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdbMl0gJn4gYmxvY2tlZC0+c2lnWzJdOwogICAgICAg ICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdbMV0gJn4gYmxvY2tlZC0+c2lnWzFdOwogICAg ICAgICAgICAgICAgcmVhZHkgfD0gc2lnbmFsLT5zaWdbMF0gJn4gYmxvY2tlZC0+c2lnWzBdOwog ICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMjogcmVhZHkgPSBzaWduYWwtPnNp Z1sxXSAmfiBibG9ja2VkLT5zaWdbMV07CiAgICAgICAgICAgICAgICByZWFkeSB8PSBzaWduYWwt PnNpZ1swXSAmfiBibG9ja2VkLT5zaWdbMF07CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAg ICAgY2FzZSAxOiByZWFkeSA9IHNpZ25hbC0+c2lnWzBdICZ+IGJsb2NrZWQtPnNpZ1swXTsKICAg ICAgICB9CiAgICAgICAgcmV0dXJuIHJlYWR5ICE9IDA7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIHZv aWQgcmVjYWxjX3NpZ3BlbmRpbmcoc3RydWN0IHRhc2tfc3RydWN0ICp0KQp7CiAgICAgICAgdC0+ c2lncGVuZGluZyA9IGhhc19wZW5kaW5nX3NpZ25hbHMoJnQtPnBlbmRpbmcuc2lnbmFsLCAmdC0+ YmxvY2tlZCk7Cn0KCgoKc3RhdGljIGlubGluZSBpbnQgb25fc2lnX3N0YWNrKHVuc2lnbmVkIGxv bmcgc3ApCnsKICAgICAgICByZXR1cm4gKHNwIC0gZ2V0X2N1cnJlbnQoKS0+c2FzX3NzX3NwIDwg Z2V0X2N1cnJlbnQoKS0+c2FzX3NzX3NpemUpOwp9CgpzdGF0aWMgaW5saW5lIGludCBzYXNfc3Nf ZmxhZ3ModW5zaWduZWQgbG9uZyBzcCkKewogICAgICAgIHJldHVybiAoZ2V0X2N1cnJlbnQoKS0+ c2FzX3NzX3NpemUgPT0gMCA/IDIKICAgICAgICAgICAgICAgIDogb25fc2lnX3N0YWNrKHNwKSA/ IDEgOiAwKTsKfQoKZXh0ZXJuIGludCByZXF1ZXN0X2lycSh1bnNpZ25lZCBpbnQsCiAgICAgICAg ICAgICAgICAgICAgICAgdm9pZCAoKmhhbmRsZXIpKGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVn cyAqKSwKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nLCBjb25zdCBjaGFyICos IHZvaWQgKik7CmV4dGVybiB2b2lkIGZyZWVfaXJxKHVuc2lnbmVkIGludCwgdm9pZCAqKTsKIyA3 MTkgIi91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RhdGljIGlubGluZSBp bnQgc3VzZXIodm9pZCkKewogICAgICAgIGlmICghKCAoMSA8PCAoMCArMSkpICYgMHgwMDAwMDAw MCA/ICgxIDw8ICgwKSkgJiAweDAwMDAwMDAwIDogKDEgPDwgKDApKSAmIHNlY3VyZWJpdHMgKSAm JiBnZXRfY3VycmVudCgpLT5ldWlkID09IDApIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50 KCktPmZsYWdzIHw9IDB4MDAwMDAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAg ICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50IGZzdXNlcih2b2lkKQp7 CiAgICAgICAgaWYgKCEoICgxIDw8ICgwICsxKSkgJiAweDAwMDAwMDAwID8gKDEgPDwgKDApKSAm IDB4MDAwMDAwMDAgOiAoMSA8PCAoMCkpICYgc2VjdXJlYml0cyApICYmIGdldF9jdXJyZW50KCkt PmZzdWlkID09IDApIHsKICAgICAgICAgICAgICAgIGdldF9jdXJyZW50KCktPmZsYWdzIHw9IDB4 MDAwMDAxMDA7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CiAgICAgICAgcmV0 dXJuIDA7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgaW50IGNhcGFibGUoaW50IGNhcCkKewoKICAg ICAgICBpZiAoKChnZXRfY3VycmVudCgpLT5jYXBfZWZmZWN0aXZlKSAmICgxIDw8IChjYXApKSkp CgoKCiAgICAgICAgewogICAgICAgICAgICAgICAgZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgfD0gMHgw MDAwMDEwMDsKICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgICAgICByZXR1 cm4gMDsKfQoKCgoKZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbV9hbGxvYyh2b2lkKTsKCmV4 dGVybiBzdHJ1Y3QgbW1fc3RydWN0ICogc3RhcnRfbGF6eV90bGIodm9pZCk7CmV4dGVybiB2b2lk IGVuZF9sYXp5X3RsYihzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CgoKZXh0ZXJuIGlubGluZSB2b2lk IF9fbW1kcm9wKHN0cnVjdCBtbV9zdHJ1Y3QgKikgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkp OwpzdGF0aWMgaW5saW5lIHZvaWQgbW1kcm9wKHN0cnVjdCBtbV9zdHJ1Y3QgKiBtbSkKewogICAg ICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZtbS0+bW1fY291bnQpKQogICAgICAgICAgICAg ICAgX19tbWRyb3AobW0pOwp9CgoKZXh0ZXJuIHZvaWQgbW1wdXQoc3RydWN0IG1tX3N0cnVjdCAq KTsKCmV4dGVybiB2b2lkIG1tX3JlbGVhc2Uodm9pZCk7CgoKCgpleHRlcm4gc3RydWN0IGZpbGUg KiogYWxsb2NfZmRfYXJyYXkoaW50KTsKZXh0ZXJuIGludCBleHBhbmRfZmRfYXJyYXkoc3RydWN0 IGZpbGVzX3N0cnVjdCAqLCBpbnQgbnIpOwpleHRlcm4gdm9pZCBmcmVlX2ZkX2FycmF5KHN0cnVj dCBmaWxlICoqLCBpbnQpOwoKZXh0ZXJuIGZkX3NldCAqYWxsb2NfZmRzZXQoaW50KTsKZXh0ZXJu IGludCBleHBhbmRfZmRzZXQoc3RydWN0IGZpbGVzX3N0cnVjdCAqLCBpbnQgbnIpOwpleHRlcm4g dm9pZCBmcmVlX2Zkc2V0KGZkX3NldCAqLCBpbnQpOwoKZXh0ZXJuIGludCBjb3B5X3RocmVhZChp bnQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCB0 YXNrX3N0cnVjdCAqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKZXh0ZXJuIHZvaWQgZmx1c2hfdGhyZWFk KHZvaWQpOwpleHRlcm4gdm9pZCBleGl0X3RocmVhZCh2b2lkKTsKCmV4dGVybiB2b2lkIGV4aXRf bW0oc3RydWN0IHRhc2tfc3RydWN0ICopOwpleHRlcm4gdm9pZCBleGl0X2ZpbGVzKHN0cnVjdCB0 YXNrX3N0cnVjdCAqKTsKZXh0ZXJuIHZvaWQgZXhpdF9zaWdoYW5kKHN0cnVjdCB0YXNrX3N0cnVj dCAqKTsKCmV4dGVybiB2b2lkIHJlcGFyZW50X3RvX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGRh ZW1vbml6ZSh2b2lkKTsKCmV4dGVybiBpbnQgZG9fZXhlY3ZlKGNoYXIgKiwgY2hhciAqKiwgY2hh ciAqKiwgc3RydWN0IHB0X3JlZ3MgKik7CmV4dGVybiBpbnQgZG9fZm9yayh1bnNpZ25lZCBsb25n LCB1bnNpZ25lZCBsb25nLCBzdHJ1Y3QgcHRfcmVncyAqLCB1bnNpZ25lZCBsb25nKTsKCmV4dGVy biB2b2lkIGFkZF93YWl0X3F1ZXVlKHdhaXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3Qg KiB3YWl0KSBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSk7CmV4dGVybiB2b2lkIGFkZF93YWl0 X3F1ZXVlX2V4Y2x1c2l2ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2Fp dCkgX19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpOwpleHRlcm4gdm9pZCByZW1vdmVfd2FpdF9x dWV1ZSh3YWl0X3F1ZXVlX2hlYWRfdCAqcSwgd2FpdF9xdWV1ZV90ICogd2FpdCkgX19hdHRyaWJ1 dGVfXygocmVncGFybSgzKSkpOwojIDg5MiAiL3Vzci9zcmMvbGludXgvaW5jbHVkZS9saW51eC9z Y2hlZC5oIgpzdGF0aWMgaW5saW5lIHZvaWQgZGVsX2Zyb21fcnVucXVldWUoc3RydWN0IHRhc2tf c3RydWN0ICogcCkKewogICAgICAgIG5yX3J1bm5pbmctLTsKICAgICAgICBwLT5zbGVlcF90aW1l ID0gamlmZmllczsKICAgICAgICBsaXN0X2RlbCgmcC0+cnVuX2xpc3QpOwogICAgICAgIHAtPnJ1 bl9saXN0Lm5leHQgPSAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBpbnQgdGFza19vbl9y dW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKICAgICAgICByZXR1cm4gKHAtPnJ1bl9s aXN0Lm5leHQgIT0gKCh2b2lkICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIHZvaWQgdW5oYXNoX3By b2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICpwKQp7CiAgICAgICAgaWYgKHRhc2tfb25fcnVucXVl dWUocCkpCiAgICAgICAgICAgICAgICBfX291dF9vZl9saW5lX2J1Zyg5MDgpOwogICAgICAgIGRv IHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgd3JpdGVfbG9jaygm dGFza2xpc3RfbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIG5yX3RocmVhZHMtLTsKICAgICAg ICB1bmhhc2hfcGlkKHApOwogICAgICAgIGRvIHsgKHApLT5uZXh0X3Rhc2stPnByZXZfdGFzayA9 IChwKS0+cHJldl90YXNrOyAocCktPnByZXZfdGFzay0+bmV4dF90YXNrID0gKHApLT5uZXh0X3Rh c2s7IGlmICgocCktPnBfb3NwdHIpIChwKS0+cF9vc3B0ci0+cF95c3B0ciA9IChwKS0+cF95c3B0 cjsgaWYgKChwKS0+cF95c3B0cikgKHApLT5wX3lzcHRyLT5wX29zcHRyID0gKHApLT5wX29zcHRy OyBlbHNlIChwKS0+cF9wcHRyLT5wX2NwdHIgPSAocCktPnBfb3NwdHI7IH0gd2hpbGUgKDApOwog ICAgICAgIGxpc3RfZGVsKCZwLT50aHJlYWRfZ3JvdXApOwogICAgICAgIGRvIHsgYXNtIHZvbGF0 aWxlKCJsb2NrIDsgYWRkbCAkIiAiMHgwMTAwMDAwMCIgIiwlMCI6Ij1tIiAoKCZ0YXNrbGlzdF9s b2NrKS0+bG9jaykgOiA6ICJtZW1vcnkiKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oInN0aSI6IDog OiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7Cn0KCgpzdGF0aWMgaW5saW5lIHZvaWQgdGFza19sb2Nr KHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogICAgICAgIHNwaW5fbG9jaygmcC0+YWxsb2NfbG9j ayk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZCB0YXNrX3VubG9jayhzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnApCnsKICAgICAgICBzcGluX3VubG9jaygmcC0+YWxsb2NfbG9jayk7Cn0KCgpzdGF0aWMgaW5s aW5lIGNoYXIgKiBkX3BhdGgoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgdmZzbW91bnQg KnZmc21udCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYsIGludCBi dWZsZW4pCnsKICAgICAgICBjaGFyICpyZXM7CiAgICAgICAgc3RydWN0IHZmc21vdW50ICpyb290 bW50OwogICAgICAgIHN0cnVjdCBkZW50cnkgKnJvb3Q7CiAgICAgICAgcmVhZF9sb2NrKCZnZXRf Y3VycmVudCgpLT5mcy0+bG9jayk7CiAgICAgICAgcm9vdG1udCA9IG1udGdldChnZXRfY3VycmVu dCgpLT5mcy0+cm9vdG1udCk7CiAgICAgICAgcm9vdCA9IGRnZXQoZ2V0X2N1cnJlbnQoKS0+ZnMt PnJvb3QpOwogICAgICAgIGFzbSB2b2xhdGlsZSgibG9jayA7IGluY2wgJTAiIDoiPW0iICgoJmdl dF9jdXJyZW50KCktPmZzLT5sb2NrKS0+bG9jaykgOiA6ICJtZW1vcnkiKTsKICAgICAgICBzcGlu X2xvY2soJmRjYWNoZV9sb2NrKTsKICAgICAgICByZXMgPSBfX2RfcGF0aChkZW50cnksIHZmc21u dCwgcm9vdCwgcm9vdG1udCwgYnVmLCBidWZsZW4pOwogICAgICAgIHNwaW5fdW5sb2NrKCZkY2Fj aGVfbG9jayk7CiAgICAgICAgZHB1dChyb290KTsKICAgICAgICBtbnRwdXQocm9vdG1udCk7CiAg ICAgICAgcmV0dXJuIHJlczsKfQojIDE3ICJzZW1hcGhvcmUuYyIgMgojIDUwICJzZW1hcGhvcmUu YyIKdm9pZCBfX3VwKHN0cnVjdCBzZW1hcGhvcmUgKnNlbSkKewogICAgICAgIF9fd2FrZV91cCgo JnNlbS0+d2FpdCksMiB8IDEsIDEpOwp9CgpzdGF0aWMgc3BpbmxvY2tfdCBzZW1hcGhvcmVfbG9j ayA9IChzcGlubG9ja190KSB7IDEgfTsKCnZvaWQgX19kb3duKHN0cnVjdCBzZW1hcGhvcmUgKiBz ZW0pCnsKICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayA9IGdldF9jdXJyZW50KCk7CiAg ICAgICAgd2FpdF9xdWV1ZV90IHdhaXQgPSB7IHRhc2s6IHRzaywgdGFza19saXN0OiB7ICgodm9p ZCAqKTApLCAoKHZvaWQgKikwKSB9LCB9OwogICAgICAgIHRzay0+c3RhdGUgPSAyOwogICAgICAg IGFkZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZSgmc2VtLT53YWl0LCAmd2FpdCk7CgogICAgICAgIGRv IHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZz ZW1hcGhvcmVfbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIHNlbS0+c2xlZXBlcnMrKzsKICAg ICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICBpbnQgc2xlZXBlcnMgPSBzZW0tPnNsZWVw ZXJzOwoKCgoKCiAgICAgICAgICAgICAgICBpZiAoIWF0b21pY19hZGRfbmVnYXRpdmUoc2xlZXBl cnMgLSAxLCAmc2VtLT5jb3VudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VtLT5zbGVl cGVycyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgc2VtLT5zbGVlcGVycyA9IDE7CiAgICAgICAgICAgICAgICBkbyB7 IHNwaW5fdW5sb2NrKCZzZW1hcGhvcmVfbG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGki OiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwoKICAgICAgICAgICAgICAgIHNjaGVkdWxlKCk7 CiAgICAgICAgICAgICAgICB0c2stPnN0YXRlID0gMjsKICAgICAgICAgICAgICAgIGRvIHsgX19h c21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZzZW1hcGhv cmVfbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIH0KICAgICAgICBkbyB7IHNwaW5fdW5sb2Nr KCZzZW1hcGhvcmVfbG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6IDoibWVtb3J5 Iik7IH0gd2hpbGUgKDApOwogICAgICAgIHJlbW92ZV93YWl0X3F1ZXVlKCZzZW0tPndhaXQsICZ3 YWl0KTsKICAgICAgICB0c2stPnN0YXRlID0gMDsKICAgICAgICBfX3dha2VfdXAoKCZzZW0tPndh aXQpLDIgfCAxLCAxKTsKfQoKaW50IF9fZG93bl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBzZW1hcGhv cmUgKiBzZW0pCnsKICAgICAgICBpbnQgcmV0dmFsID0gMDsKICAgICAgICBzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRzayA9IGdldF9jdXJyZW50KCk7CiAgICAgICAgd2FpdF9xdWV1ZV90IHdhaXQgPSB7 IHRhc2s6IHRzaywgdGFza19saXN0OiB7ICgodm9pZCAqKTApLCAoKHZvaWQgKikwKSB9LCB9Owog ICAgICAgIHRzay0+c3RhdGUgPSAxOwogICAgICAgIGFkZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZSgm c2VtLT53YWl0LCAmd2FpdCk7CgogICAgICAgIGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNs aSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2NrKCZzZW1hcGhvcmVfbG9jayk7IH0gd2hpbGUgKDAp OwogICAgICAgIHNlbS0+c2xlZXBlcnMgKys7CiAgICAgICAgZm9yICg7OykgewogICAgICAgICAg ICAgICAgaW50IHNsZWVwZXJzID0gc2VtLT5zbGVlcGVyczsKIyAxMTAgInNlbWFwaG9yZS5jIgog ICAgICAgICAgICAgICAgaWYgKHNpZ25hbF9wZW5kaW5nKGdldF9jdXJyZW50KCkpKSB7CiAgICAg ICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IC00OwogICAgICAgICAgICAgICAgICAgICAgICBz ZW0tPnNsZWVwZXJzID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgYXRvbWljX2FkZChzbGVl cGVycywgJnNlbS0+Y291bnQpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg ICAgICAgICAgIH0KCgoKCgoKCiAgICAgICAgICAgICAgICBpZiAoIWF0b21pY19hZGRfbmVnYXRp dmUoc2xlZXBlcnMgLSAxLCAmc2VtLT5jb3VudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg c2VtLT5zbGVlcGVycyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgc2VtLT5zbGVlcGVycyA9IDE7CiAgICAgICAgICAg ICAgICBkbyB7IHNwaW5fdW5sb2NrKCZzZW1hcGhvcmVfbG9jayk7IF9fYXNtX18gX192b2xhdGls ZV9fKCJzdGkiOiA6IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwoKICAgICAgICAgICAgICAgIHNj aGVkdWxlKCk7CiAgICAgICAgICAgICAgICB0c2stPnN0YXRlID0gMTsKICAgICAgICAgICAgICAg IGRvIHsgX19hc21fXyBfX3ZvbGF0aWxlX18oImNsaSI6IDogOiJtZW1vcnkiKTsgc3Bpbl9sb2Nr KCZzZW1hcGhvcmVfbG9jayk7IH0gd2hpbGUgKDApOwogICAgICAgIH0KICAgICAgICBkbyB7IHNw aW5fdW5sb2NrKCZzZW1hcGhvcmVfbG9jayk7IF9fYXNtX18gX192b2xhdGlsZV9fKCJzdGkiOiA6 IDoibWVtb3J5Iik7IH0gd2hpbGUgKDApOwogICAgICAgIHRzay0+c3RhdGUgPSAwOwogICAgICAg IHJlbW92ZV93YWl0X3F1ZXVlKCZzZW0tPndhaXQsICZ3YWl0KTsKICAgICAgICBfX3dha2VfdXAo KCZzZW0tPndhaXQpLDIgfCAxLCAxKTsKICAgICAgICByZXR1cm4gcmV0dmFsOwp9CiMgMTQ5ICJz ZW1hcGhvcmUuYyIKaW50IF9fZG93bl90cnlsb2NrKHN0cnVjdCBzZW1hcGhvcmUgKiBzZW0pCnsK ICAgICAgICBpbnQgc2xlZXBlcnM7CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKCiAgICAg ICAgZG8geyBfX2FzbV9fIF9fdm9sYXRpbGVfXygicHVzaGZsIDsgcG9wbCAlMCA7IGNsaSI6Ij1n IiAoZmxhZ3MpOiA6Im1lbW9yeSIpOyBzcGluX2xvY2soJnNlbWFwaG9yZV9sb2NrKTsgfSB3aGls ZSAoMCk7CiAgICAgICAgc2xlZXBlcnMgPSBzZW0tPnNsZWVwZXJzICsgMTsKICAgICAgICBzZW0t PnNsZWVwZXJzID0gMDsKCgoKCgogICAgICAgIGlmICghYXRvbWljX2FkZF9uZWdhdGl2ZShzbGVl cGVycywgJnNlbS0+Y291bnQpKQogICAgICAgICAgICAgICAgX193YWtlX3VwKCgmc2VtLT53YWl0 KSwyIHwgMSwgMSk7CgogICAgICAgIGRvIHsgc3Bpbl91bmxvY2soJnNlbWFwaG9yZV9sb2NrKTsg X19hc21fXyBfX3ZvbGF0aWxlX18oInB1c2hsICUwIDsgcG9wZmwiOiA6ImciIChmbGFncyk6Im1l bW9yeSIsICJjYyIpOyB9IHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gMTsKfQojIDE4MCAic2Vt YXBob3JlLmMiCmFzbSgKIi50ZXh0XG4iCiIuYWxpZ24gNFxuIgoiLmdsb2JsIF9fZG93bl9mYWls ZWRcbiIKIl9fZG93bl9mYWlsZWQ6XG5cdCIKCgoKCiAgICAgICAgInB1c2hsICVlYXhcblx0Igog ICAgICAgICJwdXNobCAlZWR4XG5cdCIKICAgICAgICAicHVzaGwgJWVjeFxuXHQiCiAgICAgICAg ImNhbGwgX19kb3duXG5cdCIKICAgICAgICAicG9wbCAlZWN4XG5cdCIKICAgICAgICAicG9wbCAl ZWR4XG5cdCIKICAgICAgICAicG9wbCAlZWF4XG5cdCIKCgoKCiAgICAgICAgInJldCIKKTsKCmFz bSgKIi50ZXh0XG4iCiIuYWxpZ24gNFxuIgoiLmdsb2JsIF9fZG93bl9mYWlsZWRfaW50ZXJydXB0 aWJsZVxuIgoiX19kb3duX2ZhaWxlZF9pbnRlcnJ1cHRpYmxlOlxuXHQiCgoKCgogICAgICAgICJw dXNobCAlZWR4XG5cdCIKICAgICAgICAicHVzaGwgJWVjeFxuXHQiCiAgICAgICAgImNhbGwgX19k b3duX2ludGVycnVwdGlibGVcblx0IgogICAgICAgICJwb3BsICVlY3hcblx0IgogICAgICAgICJw b3BsICVlZHhcblx0IgoKCgoKICAgICAgICAicmV0IgopOwoKYXNtKAoiLnRleHRcbiIKIi5hbGln biA0XG4iCiIuZ2xvYmwgX19kb3duX2ZhaWxlZF90cnlsb2NrXG4iCiJfX2Rvd25fZmFpbGVkX3Ry eWxvY2s6XG5cdCIKCgoKCiAgICAgICAgInB1c2hsICVlZHhcblx0IgogICAgICAgICJwdXNobCAl ZWN4XG5cdCIKICAgICAgICAiY2FsbCBfX2Rvd25fdHJ5bG9ja1xuXHQiCiAgICAgICAgInBvcGwg JWVjeFxuXHQiCiAgICAgICAgInBvcGwgJWVkeFxuXHQiCgoKCgogICAgICAgICJyZXQiCik7Cgph c20oCiIudGV4dFxuIgoiLmFsaWduIDRcbiIKIi5nbG9ibCBfX3VwX3dha2V1cFxuIgoiX191cF93 YWtldXA6XG5cdCIKICAgICAgICAicHVzaGwgJWVheFxuXHQiCiAgICAgICAgInB1c2hsICVlZHhc blx0IgogICAgICAgICJwdXNobCAlZWN4XG5cdCIKICAgICAgICAiY2FsbCBfX3VwXG5cdCIKICAg ICAgICAicG9wbCAlZWN4XG5cdCIKICAgICAgICAicG9wbCAlZWR4XG5cdCIKICAgICAgICAicG9w bCAlZWF4XG5cdCIKICAgICAgICAicmV0IgopOwoKCgoKCmFzbSgKIiIKLmFsaWduIDQKLmdsb2Js IF9fd3JpdGVfbG9ja19mYWlsZWQKX193cml0ZV9sb2NrX2ZhaWxlZDoKICAgICAgICAiIExPQ0sg ImFkZGwgJCIgUldfTE9DS19CSUFTX1NUUiAiLCglZWF4KQoxOiByZXA7IG5vcAogICAgICAgIGNt cGwgJCIgUldfTE9DS19CSUFTX1NUUiAiLCglZWF4KQogICAgICAgIGpuZSAxYgoKICAgICAgICAi IExPQ0sgInN1YmwgJCIgUldfTE9DS19CSUFTX1NUUiAiLCglZWF4KQogICAgICAgIGpueiBfX3dy aXRlX2xvY2tfZmFpbGVkCiAgICAgICAgcmV0CgoKLmFsaWduIDQKLmdsb2JsIF9fcmVhZF9sb2Nr X2ZhaWxlZApfX3JlYWRfbG9ja19mYWlsZWQ6CiAgICAgICAgbG9jayA7IGluY2wgKCVlYXgpCjE6 IHJlcDsgbm9wCiAgICAgICAgY21wbCAkMSwoJWVheCkKICAgICAgICBqcyAxYgoKICAgICAgICBs b2NrIDsgZGVjbCAoJWVheCkKICAgICAgICBqcyBfX3JlYWRfbG9ja19mYWlsZWQKICAgICAgICBy ZXQKIiIKKTsK