From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30056 invoked by alias); 7 Dec 2001 17:06:12 -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 30009 invoked by uid 71); 7 Dec 2001 17:06:03 -0000 Resent-Date: 7 Dec 2001 17:06:03 -0000 Resent-Message-ID: <20011207170603.30008.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, reichelt@igpm.rwth-aachen.de Received:(qmail 26660 invoked by uid 61); 7 Dec 2001 16:58:22 -0000 Message-Id:<20011207165821.26653.qmail@sources.redhat.com> Date: Fri, 07 Dec 2001 09:06:00 -0000 From: reichelt@igpm.rwth-aachen.de Reply-To: reichelt@igpm.rwth-aachen.de To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.2 (1.1.1.1.2.21) Subject: bootstrap/5043: ICE compiling libgcc2.c on mips-sgi-irix6.5 X-SW-Source: 2001-12/txt/msg00431.txt.bz2 List-Id: >Number: 5043 >Category: bootstrap >Synopsis: ICE compiling libgcc2.c on mips-sgi-irix6.5 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Fri Dec 07 09:06:01 PST 2001 >Closed-Date: >Last-Modified: >Originator: Volker Reichelt >Release: gcc 3.1 20011203 (experimental) >Organization: >Environment: mips-sgi-irix6.5 >Description: Bootstrapping gcc 3.1 on mips-sgi-irix6.5 results in an ICE: ../../gcc-20011203/gcc/libgcc2.c: In function `__muldi3': ../../gcc-20011203/gcc/libgcc2.c:359: Internal compiler error in c_expand_expr, at c-common.c:3436 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. gmake[3]: *** [libgcc/./_muldi3.o] Error 1 gmake[3]: Leaving directory `/...../build/gcc' gmake[2]: *** [stmp-multilib] Error 2 gmake[2]: Leaving directory `/...../build/gcc' gmake[1]: *** [stage1_build] Error 2 gmake[1]: Leaving directory `/...../build/gcc' gmake: *** [bootstrap-lean] Error 2 The command that triggers the failure is: ./xgcc -B./ -B/gcc3.1/mips-sgi-irix6.5/bin/ -isystem /gcc3.1/mips-sgi-irix6.5/include -isystem /gcc3.1/mips-sgi-irix6.5/sys-include -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -isystem ./include -g1 -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I../../gcc-20011203/gcc -I../../gcc-20011203/gcc/. -I../../gcc-20011203/gcc/config -I../../gcc-20011203/gcc/../include -DL_muldi3 -c ../../gcc-20011203/gcc/libgcc2.c -o libgcc/./_muldi3.o The offending part of libgcc2.c is the following code snippet (just compile with "BUILD_DIRECTORY/gcc/cc1 -quiet"): typedef int SItype __attribute__ ((mode (SI))); typedef unsigned int USItype __attribute__ ((mode (SI))); typedef int DItype __attribute__ ((mode (DI))); struct DWstruct {SItype high, low;}; typedef union { struct DWstruct s; DItype ll; } DWunion; DItype __muldi3 (DItype u, DItype v) { DWunion w; DWunion uu, vv; uu.ll = u, vv.ll = v; w.ll = ({DWunion __w; __asm__ ("multu %2,%3" : "=l" ((USItype) (__w.s.low)), "=h" ((USItype) (__w.s.high)) : "d" ((USItype) (uu.s.low)), "d" ((USItype) (vv.s.low))); __w.ll; }); w.s.high += ((USItype) uu.s.low * (USItype) vv.s.high + (USItype) uu.s.high * (USItype) vv.s.low); return w.ll; } The example can be reduced further to the follwing code that still crashes cc1: void f () { unsigned int u; __asm__ ("multu %2,%3" : "=l" (u), "=h" (u) : "d" (u), "d" (u)); } Notes: * I added the complete preprocessed file libgcc2.i for convenience. * All three examples (libgcc2.i and the two code snippets above) compile fine with gcc 3.0.x. * The bootstrap was started with gcc 3.0. I think the the same problem arose using SGI's native compiler (but I'm not quite sure about that). * The problem persists for quite some time now (probably for a couple of months). >How-To-Repeat: make bootstrap-lean on mips-sgi-irix6.5 >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="libgcc2.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="libgcc2.i" IyAxICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2NjL2xpYmdjYzIuYyIKIyAxICI8YnVpbHRpbj4iCiMg MSAiPGNvbW1hbmQgbGluZT4iCiMgMSAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy9saWJnY2MyLmMi CiMgMzYgIi4uLy4uL2djYy0yMDAxMTIwMy9nY2MvbGliZ2NjMi5jIgojIDEgInRjb25maWcuaCIg MQoKIyAxICIuLi8uLi9nY2MtMjAwMTEyMDMvaW5jbHVkZS9hbnNpZGVjbC5oIiAxCiMgMyAidGNv bmZpZy5oIiAyCiMgMSAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy9jb25maWcvbWlwcy9pcmlzNi5o IiAxCiMgMzMgIi4uLy4uL2djYy0yMDAxMTIwMy9nY2MvY29uZmlnL21pcHMvaXJpczYuaCIKIyAx ICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2NjL2NvbmZpZy9taXBzL2lyaXM1LmgiIDEKIyAyNyAiLi4v Li4vZ2NjLTIwMDExMjAzL2djYy9jb25maWcvbWlwcy9pcmlzNS5oIgojIDEgIi4uLy4uL2djYy0y MDAxMTIwMy9nY2MvY29uZmlnL21pcHMvaXJpczMuaCIgMQojIDI4ICIuLi8uLi9nY2MtMjAwMTEy MDMvZ2NjL2NvbmZpZy9taXBzL2lyaXM1LmgiIDIKIyAxICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2Nj L2NvbmZpZy9taXBzL21pcHMuaCIgMQojIDI5ICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2NjL2NvbmZp Zy9taXBzL21pcHMuaCIKZXh0ZXJuIGNoYXIgKmFzbV9maWxlX25hbWU7CmV4dGVybiBjaGFyIGNh bGxfdXNlZF9yZWdzW107CmV4dGVybiBpbnQgbWF5X2NhbGxfYWxsb2NhOwpleHRlcm4gY2hhciAq KnNhdmVfYXJndjsKZXh0ZXJuIGludCB0YXJnZXRfZmxhZ3M7CgoKCgplbnVtIGNtcF90eXBlIHsK ICBDTVBfU0ksCiAgQ01QX0RJLAogIENNUF9TRiwKICBDTVBfREYsCiAgQ01QX01BWAp9OwoKCmVu dW0gZGVsYXlfdHlwZSB7CiAgREVMQVlfTk9ORSwKICBERUxBWV9MT0FELAogIERFTEFZX0hJTE8s CiAgREVMQVlfRkNNUAp9OwoKCgoKCgplbnVtIHByb2Nlc3Nvcl90eXBlIHsKICBQUk9DRVNTT1Jf REVGQVVMVCwKICBQUk9DRVNTT1JfUjMwMDAsCiAgUFJPQ0VTU09SX1IzOTAwLAogIFBST0NFU1NP Ul9SNjAwMCwKICBQUk9DRVNTT1JfUjQwMDAsCiAgUFJPQ0VTU09SX1I0MTAwLAogIFBST0NFU1NP Ul9SNDMwMCwKICBQUk9DRVNTT1JfUjQ2MDAsCiAgUFJPQ0VTU09SX1I0NjUwLAogIFBST0NFU1NP Ul9SNTAwMCwKICBQUk9DRVNTT1JfUjgwMDAsCiAgUFJPQ0VTU09SX1I0S0MsCiAgUFJPQ0VTU09S X1I1S0MsCiAgUFJPQ0VTU09SX1IyMEtDCn07CiMgMTA0ICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2Nj L2NvbmZpZy9taXBzL21pcHMuaCIKZW51bSBtaXBzX2FiaWNhbGxzX3R5cGUgewogIE1JUFNfQUJJ Q0FMTFNfTk8sCiAgTUlQU19BQklDQUxMU19ZRVMKfTsKCgoKCgoKCmVudW0gYmxvY2tfbW92ZV90 eXBlIHsKICBCTE9DS19NT1ZFX05PUk1BTCwKICBCTE9DS19NT1ZFX05PVF9MQVNULAogIEJMT0NL X01PVkVfTEFTVAp9OwoKZXh0ZXJuIGNoYXIgbWlwc19yZWdfbmFtZXNbXVs4XTsKZXh0ZXJuIGNo YXIgbWlwc19wcmludF9vcGVyYW5kX3B1bmN0W107CmV4dGVybiBjb25zdCBjaGFyICpjdXJyZW50 X2Z1bmN0aW9uX2ZpbGU7CmV4dGVybiBpbnQgbnVtX3NvdXJjZV9maWxlbmFtZXM7CmV4dGVybiBp bnQgaW5zaWRlX2Z1bmN0aW9uOwpleHRlcm4gaW50IGlnbm9yZV9saW5lX251bWJlcjsKZXh0ZXJu IGludCBmaWxlX2luX2Z1bmN0aW9uX3dhcm5pbmc7CmV4dGVybiBpbnQgc2RiX2xhYmVsX2NvdW50 OwpleHRlcm4gaW50IHNkYl9iZWdpbl9mdW5jdGlvbl9saW5lOwpleHRlcm4gaW50IG1pcHNfc2Vj dGlvbl90aHJlc2hvbGQ7CmV4dGVybiBpbnQgZ19zd2l0Y2hfdmFsdWU7CmV4dGVybiBpbnQgZ19z d2l0Y2hfc2V0OwpleHRlcm4gaW50IHN5bV9saW5lbm87CmV4dGVybiBpbnQgc2V0X25vcmVvcmRl cjsKZXh0ZXJuIGludCBzZXRfbm9tYWNybzsKZXh0ZXJuIGludCBzZXRfbm9hdDsKZXh0ZXJuIGlu dCBzZXRfdm9sYXRpbGU7CmV4dGVybiBpbnQgbWlwc19icmFuY2hfbGlrZWx5OwpleHRlcm4gaW50 IG1pcHNfZGJ4X3JlZ25vW107CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqYnJhbmNoX2NtcFsyXTsK ZXh0ZXJuIGVudW0gY21wX3R5cGUgYnJhbmNoX3R5cGU7CmV4dGVybiBlbnVtIHByb2Nlc3Nvcl90 eXBlIG1pcHNfYXJjaDsKZXh0ZXJuIGVudW0gcHJvY2Vzc29yX3R5cGUgbWlwc190dW5lOwpleHRl cm4gZW51bSBtaXBzX2FiaWNhbGxzX3R5cGUgbWlwc19hYmljYWxsczsKZXh0ZXJuIGludCBtaXBz X2lzYTsKZXh0ZXJuIGludCBtaXBzMTY7CmV4dGVybiBpbnQgbWlwczE2X2hhcmRfZmxvYXQ7CmV4 dGVybiBpbnQgbWlwc19lbnRyeTsKZXh0ZXJuIGNvbnN0IGNoYXIgKm1pcHNfY3B1X3N0cmluZzsK ZXh0ZXJuIGNvbnN0IGNoYXIgKm1pcHNfYXJjaF9zdHJpbmc7CmV4dGVybiBjb25zdCBjaGFyICpt aXBzX3R1bmVfc3RyaW5nOwpleHRlcm4gY29uc3QgY2hhciAqbWlwc19pc2Ffc3RyaW5nOwpleHRl cm4gY29uc3QgY2hhciAqbWlwc19hYmlfc3RyaW5nOwpleHRlcm4gY29uc3QgY2hhciAqbWlwc19l bnRyeV9zdHJpbmc7CmV4dGVybiBjb25zdCBjaGFyICptaXBzX25vX21pcHMxNl9zdHJpbmc7CmV4 dGVybiBjb25zdCBjaGFyICptaXBzX2V4cGxpY2l0X3R5cGVfc2l6ZV9zdHJpbmc7CmV4dGVybiBj b25zdCBjaGFyICptaXBzX2NhY2hlX2ZsdXNoX2Z1bmM7CmV4dGVybiBpbnQgbWlwc19zcGxpdF9h ZGRyZXNzZXM7CmV4dGVybiBpbnQgZHNsb3RzX2xvYWRfdG90YWw7CmV4dGVybiBpbnQgZHNsb3Rz X2xvYWRfZmlsbGVkOwpleHRlcm4gaW50IGRzbG90c19qdW1wX3RvdGFsOwpleHRlcm4gaW50IGRz bG90c19qdW1wX2ZpbGxlZDsKZXh0ZXJuIGludCBkc2xvdHNfbnVtYmVyX25vcHM7CmV4dGVybiBp bnQgbnVtX3JlZnNbM107CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqbWlwc19sb2FkX3JlZzsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICptaXBzX2xvYWRfcmVnMjsKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICptaXBzX2xvYWRfcmVnMzsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICptaXBzX2xvYWRfcmVnNDsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICplbWJlZGRlZF9waWNfZm5hZGRyX3J0eDsKZXh0ZXJuIGlu dCBtaXBzX3N0cmluZ19sZW5ndGg7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqbWlwczE2X2dwX3Bz ZXVkb19ydHg7CgoKZXh0ZXJuIHZvaWQgcmRhdGFfc2VjdGlvbiAodm9pZCk7CmV4dGVybiB2b2lk IHNkYXRhX3NlY3Rpb24gKHZvaWQpOwpleHRlcm4gdm9pZCBzYnNzX3NlY3Rpb24gKHZvaWQpOwoj IDg3NCAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy9jb25maWcvbWlwcy9taXBzLmgiCmV4dGVybiBp bnQgbWlwc19hYmk7CiMgMTc4NyAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy9jb25maWcvbWlwcy9t aXBzLmgiCmV4dGVybiBjaGFyIG1pcHNfaGFyZF9yZWdub19tb2RlX29rW11bNzZdOwojIDE5MTEg Ii4uLy4uL2djYy0yMDAxMTIwMy9nY2MvY29uZmlnL21pcHMvbWlwcy5oIgplbnVtIHJlZ19jbGFz cwp7CiAgTk9fUkVHUywKICBNMTZfTkFfUkVHUywKICBNMTZfUkVHUywKICBUX1JFRywKICBNMTZf VF9SRUdTLAogIEdSX1JFR1MsCiAgRlBfUkVHUywKICBISV9SRUcsCiAgTE9fUkVHLAogIEhJTE9f UkVHLAogIE1EX1JFR1MsCiAgSElfQU5EX0dSX1JFR1MsCiAgTE9fQU5EX0dSX1JFR1MsCiAgSElM T19BTkRfR1JfUkVHUywKICBTVF9SRUdTLAogIEFMTF9SRUdTLAogIExJTV9SRUdfQ0xBU1NFUwp9 OwojIDE5OTcgIi4uLy4uL2djYy0yMDAxMTIwMy9nY2MvY29uZmlnL21pcHMvbWlwcy5oIgpleHRl cm4gY29uc3QgZW51bSByZWdfY2xhc3MgbWlwc19yZWdub190b19jbGFzc1tdOwojIDIwNjcgIi4u Ly4uL2djYy0yMDAxMTIwMy9nY2MvY29uZmlnL21pcHMvbWlwcy5oIgpleHRlcm4gZW51bSByZWdf Y2xhc3MgbWlwc19jaGFyX3RvX2NsYXNzW107CiMgMjI4OSAiLi4vLi4vZ2NjLTIwMDExMjAzL2dj Yy9jb25maWcvbWlwcy9taXBzLmgiCnN0cnVjdCBtaXBzX2ZyYW1lX2luZm8KewogIGxvbmcgdG90 YWxfc2l6ZTsKICBsb25nIHZhcl9zaXplOwogIGxvbmcgYXJnc19zaXplOwogIGxvbmcgZXh0cmFf c2l6ZTsKICBpbnQgZ3BfcmVnX3NpemU7CiAgaW50IGZwX3JlZ19zaXplOwogIGxvbmcgbWFzazsK ICBsb25nIGZtYXNrOwogIGxvbmcgZ3Bfc2F2ZV9vZmZzZXQ7CiAgbG9uZyBmcF9zYXZlX29mZnNl dDsKICBsb25nIGdwX3NwX29mZnNldDsKICBsb25nIGZwX3NwX29mZnNldDsKICBpbnQgaW5pdGlh bGl6ZWQ7CiAgaW50IG51bV9ncDsKICBpbnQgbnVtX2ZwOwogIGxvbmcgaW5zbnNfbGVuOwp9OwoK ZXh0ZXJuIHN0cnVjdCBtaXBzX2ZyYW1lX2luZm8gY3VycmVudF9mcmFtZV9pbmZvOwojIDI2MzEg Ii4uLy4uL2djYy0yMDAxMTIwMy9nY2MvY29uZmlnL21pcHMvbWlwcy5oIgp0eXBlZGVmIHN0cnVj dCBtaXBzX2FyZ3MgewogIGludCBncF9yZWdfZm91bmQ7CiAgdW5zaWduZWQgaW50IGFyZ19udW1i ZXI7CiAgdW5zaWduZWQgaW50IGFyZ193b3JkczsKICB1bnNpZ25lZCBpbnQgZnBfYXJnX3dvcmRz OwogIGludCBsYXN0X2FyZ19mcDsKICBpbnQgZnBfY29kZTsKICB1bnNpZ25lZCBpbnQgbnVtX2Fk anVzdHM7CgoKCgogIGludCBwcm90b3R5cGU7CiAgc3RydWN0IHJ0eF9kZWYgKmFkanVzdFs0KjJd Owp9IENVTVVMQVRJVkVfQVJHUzsKIyAyOSAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy9jb25maWcv bWlwcy9pcmlzNS5oIiAyCiMgMSAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy9jb25maWcvbWlwcy9p cmlzNC5oIiAxCiMgMzAgIi4uLy4uL2djYy0yMDAxMTIwMy9nY2MvY29uZmlnL21pcHMvaXJpczUu aCIgMgojIDM0ICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2NjL2NvbmZpZy9taXBzL2lyaXM2LmgiIDIK IyAxICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2NjL2NvbmZpZy9taXBzL2FiaTY0LmgiIDEKIyAzNSAi Li4vLi4vZ2NjLTIwMDExMjAzL2djYy9jb25maWcvbWlwcy9pcmlzNi5oIiAyCiMgNCAidGNvbmZp Zy5oIiAyCiMgMSAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy9kZWZhdWx0cy5oIiAxCiMgNSAidGNv bmZpZy5oIiAyCiMgMzcgIi4uLy4uL2djYy0yMDAxMTIwMy9nY2MvbGliZ2NjMi5jIiAyCiMgMSAi Li4vLi4vZ2NjLTIwMDExMjAzL2djYy90c3lzdGVtLmgiIDEKIyAzNyAiLi4vLi4vZ2NjLTIwMDEx MjAzL2djYy90c3lzdGVtLmgiCiMgMSAiaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMTQ3ICJpbmNs dWRlL3N0ZGRlZi5oIiAzCnR5cGVkZWYgaW50IHB0cmRpZmZfdDsKIyAyMDEgImluY2x1ZGUvc3Rk ZGVmLmgiIDMKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDI5MyAiaW5jbHVkZS9zdGRk ZWYuaCIgMwp0eXBlZGVmIGxvbmcgaW50IHdjaGFyX3Q7CiMgMzggIi4uLy4uL2djYy0yMDAxMTIw My9nY2MvdHN5c3RlbS5oIiAyCiMgNjAgIi4uLy4uL2djYy0yMDAxMTIwMy9nY2MvdHN5c3RlbS5o IgojIDEgImluY2x1ZGUvc3RkYXJnLmgiIDEgMwojIDQzICJpbmNsdWRlL3N0ZGFyZy5oIiAzCnR5 cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgMTEwICJpbmNsdWRlL3N0 ZGFyZy5oIiAzCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKIyA2MSAiLi4vLi4vZ2Nj LTIwMDExMjAzL2djYy90c3lzdGVtLmgiIDIKCgojIDEgImluY2x1ZGUvc3RkaW8uaCIgMSAzCiMg MjAgImluY2x1ZGUvc3RkaW8uaCIgMwojaWRlbnQgIiRSZXZpc2lvbjogMS43NiAkIgojIDUwICJp bmNsdWRlL3N0ZGlvLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3RhbmRhcmRzLmgiIDEgMwojIDE5 ICIvdXNyL2luY2x1ZGUvc3RhbmRhcmRzLmgiIDMKI2lkZW50ICIkSWQ6IHN0YW5kYXJkcy5oLHYg MS4xOSAxOTk3LzEyLzE1IDIxOjMwOjI1IGpwaCBFeHAgJCIKIyA1MSAiaW5jbHVkZS9zdGRpby5o IiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc2dpZGVmcy5oIiAxIDMKIyAxOSAiL3Vzci9pbmNsdWRl L3NnaWRlZnMuaCIgMwojaWRlbnQgIiRSZXZpc2lvbjogMS4xMSAkIgojIDEzNiAiL3Vzci9pbmNs dWRlL3NnaWRlZnMuaCIgMwp0eXBlZGVmIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQg X191aW50MzJfdDsKIyAxODMgIi91c3IvaW5jbHVkZS9zZ2lkZWZzLmgiIDMKdHlwZWRlZiBsb25n IGxvbmcgX19pbnQ2NF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3VpbnQ2NF90Owoj IDIxOSAiL3Vzci9pbmNsdWRlL3NnaWRlZnMuaCIgMwp0eXBlZGVmIF9faW50MzJfdCBfX3BzaW50 X3Q7CnR5cGVkZWYgX191aW50MzJfdCBfX3BzdW5zaWduZWRfdDsKIyAyNDEgIi91c3IvaW5jbHVk ZS9zZ2lkZWZzLmgiIDMKdHlwZWRlZiBfX2ludDMyX3QgX19zY2ludF90Owp0eXBlZGVmIF9fdWlu dDMyX3QgX19zY3Vuc2lnbmVkX3Q7CiMgNTIgImluY2x1ZGUvc3RkaW8uaCIgMiAzCiMgNjcgImlu Y2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIGludCBzc2l6ZV90OwojIDc2ICJpbmNsdWRlL3N0ZGlv LmgiIDMKdHlwZWRlZiBfX2ludDY0X3QgZnBvc190OwojIDg2ICJpbmNsdWRlL3N0ZGlvLmgiIDMK dHlwZWRlZiBfX2ludDY0X3Qgb2ZmNjRfdDsKIyA5NiAiaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVk ZWYgX19pbnQ2NF90IG9mZl90OwojIDEwOCAiaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgX19p bnQ2NF90IGZwb3M2NF90OwojIDExNyAiaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgY2hhciAq X19ub3RfdmFfbGlzdF9fOwojIDE4NyAiaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgc3RydWN0 CiMgMTk3ICJpbmNsdWRlL3N0ZGlvLmgiIDMKX19maWxlX3MKCnsKCiAgICAgICAgaW50IF9jbnQ7 CgoKCgogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9wdHI7CiAgICAgICAgdW5zaWduZWQgY2hhciAq X2Jhc2U7CgoKCgoKICAgICAgICB1bnNpZ25lZCBjaGFyIF9mbGFnOwogICAgICAgIHVuc2lnbmVk IGNoYXIgX29fZmlsZTsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBfZmlsZTsKCgoKCn0gRklMRTsK CmV4dGVybiBGSUxFIF9faW9iWzEwMF07CgpleHRlcm4gRklMRSAqX2xhc3RidWY7CmV4dGVybiB1 bnNpZ25lZCBjaGFyICpfYnVmZW5kdGFiW107CmV4dGVybiB1bnNpZ25lZCBjaGFyIF9zaWJ1Zltd LCBfc29idWZbXTsKCgpleHRlcm4gaW50IHJlbW92ZShjb25zdCBjaGFyICopOwpleHRlcm4gaW50 IHJlbmFtZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBGSUxFICp0bXBmaWxl KHZvaWQpOwpleHRlcm4gY2hhciAqdG1wbmFtKGNoYXIgKik7CmV4dGVybiBpbnQgZmNsb3NlKEZJ TEUgKik7CmV4dGVybiBpbnQgZmZsdXNoKEZJTEUgKik7CmV4dGVybiBGSUxFICpmb3Blbihjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBGSUxFICpmcmVvcGVuKGNvbnN0IGNoYXIg KiwgY29uc3QgY2hhciAqLCBGSUxFICopOwpleHRlcm4gdm9pZCBzZXRidWYoRklMRSAqLCBjaGFy ICopOwpleHRlcm4gaW50IHNldHZidWYoRklMRSAqLCBjaGFyICosIGludCwgc2l6ZV90KTsKCmV4 dGVybiBpbnQgZnByaW50ZihGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBpbnQg ZnNjYW5mKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwoKZXh0ZXJuIGludCBwcmludGYoY29u c3QgY2hhciAqLCAuLi4pOwoKZXh0ZXJuIGludCBzY2FuZihjb25zdCBjaGFyICosIC4uLik7CgoK ZXh0ZXJuIGludCBzbnByaW50ZihjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCAuLi4pOwoK CmV4dGVybiBpbnQgc3ByaW50ZihjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBp bnQgc3NjYW5mKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwpleHRlcm4gaW50IHZm cHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmV4dGVybiBpbnQg dnByaW50Zihjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKCmV4dGVybiBpbnQgdnNucHJp bnRmKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKCmV4dGVy biBpbnQgdnNwcmludGYoY2hhciAqLCBjb25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKIyAy NzEgImluY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZnZXRjKEZJTEUgKik7CmV4dGVybiBj aGFyICpmZ2V0cyhjaGFyICosIGludCwgRklMRSAqKTsKZXh0ZXJuIGludCBmcHV0YyhpbnQsIEZJ TEUgKik7CmV4dGVybiBpbnQgZnB1dHMoY29uc3QgY2hhciAqLCBGSUxFICopOwpleHRlcm4gaW50 IGdldGMoRklMRSAqKTsKZXh0ZXJuIGludCBnZXRjaGFyKHZvaWQpOwpleHRlcm4gY2hhciAqZ2V0 cyhjaGFyICopOwpleHRlcm4gaW50IHB1dGMoaW50LCBGSUxFICopOwpleHRlcm4gaW50IHB1dGNo YXIoaW50KTsKZXh0ZXJuIGludCBwdXRzKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdW5nZXRj KGludCwgRklMRSAqKTsKZXh0ZXJuIHNpemVfdCBmcmVhZCh2b2lkICosIHNpemVfdCwgc2l6ZV90 LCBGSUxFICopOwojcHJhZ21hIGludF90b191bnNpZ25lZCBmcmVhZApleHRlcm4gc2l6ZV90IGZ3 cml0ZShjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOwojcHJhZ21hIGludF90 b191bnNpZ25lZCBmd3JpdGUKZXh0ZXJuIGludCBmZ2V0cG9zKEZJTEUgKiwgZnBvc190ICopOwpl eHRlcm4gaW50IGZzZWVrKEZJTEUgKiwgbG9uZywgaW50KTsKZXh0ZXJuIGludCBmc2V0cG9zKEZJ TEUgKiwgY29uc3QgZnBvc190ICopOwpleHRlcm4gbG9uZyBmdGVsbChGSUxFICopOwpleHRlcm4g dm9pZCByZXdpbmQoRklMRSAqKTsKZXh0ZXJuIHZvaWQgY2xlYXJlcnIoRklMRSAqKTsKZXh0ZXJu IGludCBmZW9mKEZJTEUgKik7CmV4dGVybiBpbnQgZmVycm9yKEZJTEUgKik7CmV4dGVybiB2b2lk IHBlcnJvcihjb25zdCBjaGFyICopOwoKZXh0ZXJuIGludCBfX2ZpbGJ1ZihGSUxFICopOwpleHRl cm4gaW50IF9fZmxzYnVmKGludCwgRklMRSAqKTsKCgoKZXh0ZXJuIEZJTEUgKmZkb3BlbihpbnQs IGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgZmlsZW5vKEZJTEUgKik7CgoKCgpleHRlcm4gdm9p ZCBmbG9ja2ZpbGUoRklMRSAqKTsKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUoRklMRSAqKTsKZXh0 ZXJuIHZvaWQgZnVubG9ja2ZpbGUoRklMRSAqKTsKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkKEZJ TEUgKik7CmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZChpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQg Z2V0Y2hhcl91bmxvY2tlZCh2b2lkKTsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkKGludCk7 CgoKCmV4dGVybiBGSUxFICpwb3Blbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVy biBpbnQgcGNsb3NlKEZJTEUgKik7CgoKCiMgMSAiLi4vLi4vZ2NjLTIwMDExMjAzL2luY2x1ZGUv Z2V0b3B0LmgiIDEgMwojIDM2ICIuLi8uLi9nY2MtMjAwMTEyMDMvaW5jbHVkZS9nZXRvcHQuaCIg MwpleHRlcm4gY2hhciAqb3B0YXJnOwojIDUwICIuLi8uLi9nY2MtMjAwMTEyMDMvaW5jbHVkZS9n ZXRvcHQuaCIgMwpleHRlcm4gaW50IG9wdGluZDsKCgoKCmV4dGVybiBpbnQgb3B0ZXJyOwoKCgpl eHRlcm4gaW50IG9wdG9wdDsKIyA4MiAiLi4vLi4vZ2NjLTIwMDExMjAzL2luY2x1ZGUvZ2V0b3B0 LmgiIDMKc3RydWN0IG9wdGlvbgp7CgogIGNvbnN0IGNoYXIgKm5hbWU7CgoKCgoKICBpbnQgaGFz X2FyZzsKICBpbnQgKmZsYWc7CiAgaW50IHZhbDsKfTsKIyAxMTggIi4uLy4uL2djYy0yMDAxMTIw My9pbmNsdWRlL2dldG9wdC5oIiAzCmV4dGVybiBpbnQgZ2V0b3B0X2xvbmcgKGludCBhcmdjLCBj aGFyICpjb25zdCAqYXJndiwgY29uc3QgY2hhciAqc2hvcnRvcHRzLAogICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpsb25nb3B0cywgaW50ICpsb25naW5kKTsKZXh0 ZXJuIGludCBnZXRvcHRfbG9uZ19vbmx5IChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRvcHRzLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBvcHRpb24gKmxvbmdvcHRzLCBpbnQg KmxvbmdpbmQpOwoKCmV4dGVybiBpbnQgX2dldG9wdF9pbnRlcm5hbCAoaW50IGFyZ2MsIGNoYXIg KmNvbnN0ICphcmd2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNo b3J0b3B0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9u ICpsb25nb3B0cywgaW50ICpsb25naW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBsb25nX29ubHkpOwojIDMyMyAiaW5jbHVkZS9zdGRpby5oIiAyIDMKZXh0ZXJuIGNoYXIgKmN0 ZXJtaWQoY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmN1c2VyaWQoY2hhciAqKTsKZXh0ZXJuIGNoYXIg KnRlbXBuYW0oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IGdldHcoRklM RSAqKTsKZXh0ZXJuIGludCBwdXR3KGludCwgRklMRSAqKTsKCgoKCgpleHRlcm4gY2hhciAqbWt0 ZW1wKGNoYXIgKik7CmV4dGVybiBpbnQgbWtzdGVtcChjaGFyICopOwpleHRlcm4gaW50IHNldGJ1 ZmZlcihGSUxFICosIGNoYXIgKiwgaW50KTsKZXh0ZXJuIGludCBzZXRsaW5lYnVmKEZJTEUgKik7 CmV4dGVybiBpbnQgc3lzdGVtKGNvbnN0IGNoYXIgKik7CgoKCgpleHRlcm4gb2ZmX3QgZnRlbGxv KEZJTEUgKik7CmV4dGVybiBpbnQgZnNlZWtvKEZJTEUgKiwgb2ZmX3QsIGludCk7CgoKCgpleHRl cm4gaW50IGZnZXRwb3M2NChGSUxFICosIGZwb3M2NF90ICopOwpleHRlcm4gRklMRSAqZm9wZW42 NChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBGSUxFICpmcmVvcGVuNjQoY29u c3QgY2hhciAqLCBjb25zdCBjaGFyICosIEZJTEUgKik7CmV4dGVybiBpbnQgZnNlZWs2NChGSUxF ICosIF9faW50NjRfdCwgaW50KTsKZXh0ZXJuIGludCBmc2Vla282NChGSUxFICosIG9mZjY0X3Qs IGludCk7CmV4dGVybiBpbnQgZnNldHBvczY0KEZJTEUgKiwgY29uc3QgZnBvczY0X3QgKik7CmV4 dGVybiBfX2ludDY0X3QgZnRlbGw2NChGSUxFICopOwpleHRlcm4gb2ZmNjRfdCBmdGVsbG82NChG SUxFICopOwpleHRlcm4gRklMRSAqdG1wZmlsZTY0KHZvaWQpOwoKCgpleHRlcm4gaW50IF9fc2Vt cHV0YyhpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQgX19zZW1nZXRjKEZJTEUgKik7CmV4dGVybiBp bnQgX191c19yc3RocmVhZF9zdGRpbzsKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWRfcihjaGFyICop OwojIDY0ICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2NjL3RzeXN0ZW0uaCIgMgoKCiMgMSAiaW5jbHVk ZS9zeXMvdHlwZXMuaCIgMSAzCiMgMzYgImluY2x1ZGUvc3lzL3R5cGVzLmgiIDMKI2lkZW50ICIk UmV2aXNpb246IDMuMTQxICQiCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVjaGFyX3Q7CnR5 cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRf dDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nX3Q7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5 cy9wdGhyZWFkLmgiIDEgMwojIDExICIvdXNyL2luY2x1ZGUvc3lzL3B0aHJlYWQuaCIgMwp0eXBl ZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX3Q7CgoKdHlwZWRlZiBzdHJ1Y3QgeyBsb25nIF9fRFs1 XTsgfSBwdGhyZWFkX2F0dHJfdDsKdHlwZWRlZiBzdHJ1Y3QgeyBsb25nIF9fRFs4XTsgfSBwdGhy ZWFkX211dGV4X3Q7CnR5cGVkZWYgc3RydWN0IHsgbG9uZyBfX0RbMl07IH0gcHRocmVhZF9tdXRl eGF0dHJfdDsKdHlwZWRlZiBzdHJ1Y3QgeyBsb25nIF9fRFs4XTsgfSBwdGhyZWFkX2NvbmRfdDsK dHlwZWRlZiBzdHJ1Y3QgeyBsb25nIF9fRFsyXTsgfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CnR5cGVk ZWYgc3RydWN0IHsgbG9uZyBfX0RbMTZdOyB9IHB0aHJlYWRfcndsb2NrX3Q7CnR5cGVkZWYgc3Ry dWN0IHsgbG9uZyBfX0RbNF07IH0gcHRocmVhZF9yd2xvY2thdHRyX3Q7CnR5cGVkZWYgaW50IHB0 aHJlYWRfa2V5X3Q7CnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwojIDUwICJpbmNsdWRlL3N5 cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBjaGFyICogYWRkcl90Owp0eXBlZGVmIGNoYXIgKiBj YWRkcl90OwoKdHlwZWRlZiBfX2ludDY0X3QgZGFkZHJfdDsKCgoKdHlwZWRlZiBsb25nIHBnbm9f dDsKdHlwZWRlZiBfX3VpbnQzMl90IHBmbl90Owp0eXBlZGVmIHNob3J0IGNudF90Owp0eXBlZGVm IHVuc2lnbmVkIGxvbmcgYmFzaWN0aW1lX3Q7CnR5cGVkZWYgX19pbnQ2NF90IG1pY3JvX3Q7CgoK Cgp0eXBlZGVmIF9faW50MzJfdCBwZ2NudF90OwoKdHlwZWRlZiBlbnVtIHsgQl9GQUxTRSwgQl9U UlVFIH0gYm9vbGVhbl90OwojIDgzICJpbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgbG9u ZyBpZF90OwojIDk2ICJpbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgdWxvbmdfdCBtYWpv cl90Owp0eXBlZGVmIHVsb25nX3QgbWlub3JfdDsKIyAxMTUgImluY2x1ZGUvc3lzL3R5cGVzLmgi IDMKdHlwZWRlZiB1c2hvcnRfdCBvX21vZGVfdDsKdHlwZWRlZiBzaG9ydCBvX2Rldl90Owp0eXBl ZGVmIHVzaG9ydF90IG9fdWlkX3Q7CnR5cGVkZWYgb191aWRfdCBvX2dpZF90Owp0eXBlZGVmIHNo b3J0IG9fbmxpbmtfdDsKdHlwZWRlZiBzaG9ydCBvX3BpZF90Owp0eXBlZGVmIF9fdWludDMyX3Qg b19pbm9fdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbW9kZV90Owp0eXBlZGVmIHVuc2lnbmVk IGxvbmcgZGV2X3Q7CnR5cGVkZWYgbG9uZyB1aWRfdDsKdHlwZWRlZiBsb25nIGdpZF90Owp0eXBl ZGVmIHVuc2lnbmVkIGxvbmcgbmxpbmtfdDsKdHlwZWRlZiBsb25nIHBpZF90OwojIDE0MCAiaW5j bHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIGludCB0aWRfdDsKCnR5cGVkZWYgZGV2X3QgdmVy dGV4X2hkbF90OwoKCnR5cGVkZWYgX191aW50NjRfdCBpbm9fdDsKCgoKdHlwZWRlZiBfX3VpbnQ2 NF90IGlubzY0X3Q7CiMgMTY5ICJpbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX19zY2lu dF90IF9fc2NvZmZfdDsKCnR5cGVkZWYgX19zY29mZl90IHNjb2ZmX3Q7CgoKCgp0eXBlZGVmIF9f aW50NjRfdCBibGtjbnQ2NF90Owp0eXBlZGVmIF9fdWludDY0X3QgZnNibGtjbnQ2NF90Owp0eXBl ZGVmIF9fdWludDY0X3QgZnNmaWxjbnQ2NF90OwoKCgp0eXBlZGVmIF9faW50NjRfdCBibGtjbnRf dDsKdHlwZWRlZiBfX3VpbnQ2NF90IGZzYmxrY250X3Q7CnR5cGVkZWYgX191aW50NjRfdCBmc2Zp bGNudF90OwoKCgoKCgp0eXBlZGVmIGxvbmcgc3dibGtfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25n IHBhZGRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpb3BhZGRyX3Q7CnR5cGVkZWYgaW50IGtl eV90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdXNlX3Q7CnR5cGVkZWYgbG9uZyBzeXNpZF90Owp0 eXBlZGVmIHNob3J0IGluZGV4X3Q7Cgp0eXBlZGVmIHNpZ25lZCBzaG9ydCBuYXNpZF90Owp0eXBl ZGVmIHNpZ25lZCBzaG9ydCBjbm9kZWlkX3Q7CnR5cGVkZWYgc2lnbmVkIGNoYXIgcGFydGlkX3Q7 CnR5cGVkZWYgc2lnbmVkIHNob3J0IG1vZHVsZWlkX3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGNt b2R1bGVpZF90Owp0eXBlZGVmIHVjaGFyX3QgY2x1c3RlcmlkX3Q7Cgp0eXBlZGVmIHVuc2lnbmVk IGludCBsb2NrX3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGNwdWlkX3Q7CnR5cGVkZWYgdW5zaWdu ZWQgY2hhciBwcmlfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IGFjY3VtX3Q7CnR5cGVkZWYgX19pbnQ2 NF90IHByaWRfdDsKdHlwZWRlZiBfX2ludDY0X3QgYXNoX3Q7CnR5cGVkZWYgc2hvcnQgY2VsbF90 Owp0eXBlZGVmIGludCBjcmVkaWRfdDsKdHlwZWRlZiBfX2ludDY0X3QgamlkX3Q7CiMgMjQ3ICJp bmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgbG9uZyB0aW1lX3Q7CiMgMjU3ICJpbmNsdWRl L3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgbG9uZyBjbG9ja190OwojIDI4OCAiaW5jbHVkZS9zeXMv dHlwZXMuaCIgMwp0eXBlZGVmIGludCBjbG9ja2lkX3Q7CgoKCnR5cGVkZWYgaW50IHRpbWVyX3Q7 CiMgMzAxICJpbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgdW5zaWduZWQgaW50IHVzZWNv bmRzX3Q7CgoKCgoKCnR5cGVkZWYgX19zY3Vuc2lnbmVkX3QgYml0bnVtX3Q7CnR5cGVkZWYgX19z Y3Vuc2lnbmVkX3QgYml0bGVuX3Q7CgoKdHlwZWRlZiBpbnQgcHJvY2Vzc29yaWRfdDsKdHlwZWRl ZiBpbnQgdG9pZF90Owp0eXBlZGVmIGxvbmcgKnFhZGRyX3Q7CnR5cGVkZWYgX191aW50MzJfdCBp bnN0X3Q7CiMgMzI0ICJpbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX191aW50NjRfdCBt YWNocmVnX3Q7CiMgMzM0ICJpbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgX191aW50NjRf dCBmcHJlZ190OwojIDM0NSAiaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBj aGFyIGludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVk IHNob3J0IGludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7CnR5cGVkZWYg c2lnbmVkIGludCBpbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKdHlwZWRl ZiBfX2ludDY0X3QgaW50NjRfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IHVpbnQ2NF90Owp0eXBlZGVm IF9faW50NjRfdCBpbnRtYXhfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IHVpbnRtYXhfdDsKdHlwZWRl ZiBzaWduZWQgbG9uZyBpbnQgaW50cHRyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWlu dHB0cl90OwoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdV9pbnQ4X3Q7CnR5cGVkZWYgdW5z aWduZWQgc2hvcnQgdV9pbnQxNl90Owp0eXBlZGVmIF9fdWludDMyX3QgdV9pbnQzMl90OwojIDM4 OCAiaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIGxvbmcgaG9zdGlkX3Q7CiMgNDAzICJp bmNsdWRlL3N5cy90eXBlcy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9ic2RfdHlwZXMuaCIg MSAzCiMgMjEgIi91c3IvaW5jbHVkZS9zeXMvYnNkX3R5cGVzLmgiIDMKI2lkZW50ICIkUmV2aXNp b246IDEuMiAkIgoKCgoKCgp0eXBlZGVmIHN0cnVjdCB7IGludCByWzFdOyB9ICogcGh5c2FkcjsK dHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVuY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hh cjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg dV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg dV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBsb25n IHVfbG9uZzsKdHlwZWRlZiBzdHJ1Y3QgX3F1YWQgeyBsb25nIHZhbFsyXTsgfSBxdWFkOwoKCgoK CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUv c3lzL3NlbGVjdC5oIiAzCiNpZGVudCAiJFJldmlzaW9uOiAxLjE3ICQiCiMgNTUgIi91c3IvaW5j bHVkZS9zeXMvc2VsZWN0LmgiIDMKdHlwZWRlZiBsb25nIGZkX21hc2tfdDsKdHlwZWRlZiB1bnNp Z25lZCBsb25nIHVmZF9tYXNrX3Q7CiMgNjcgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMK dHlwZWRlZiBzdHJ1Y3QgZmRfc2V0IHsKCgoKICAgICAgICBmZF9tYXNrX3QgZmRzX2JpdHNbKCgo MTAyNCkrKCgoaW50KShzaXplb2YoZmRfbWFza190KSAqIDgpKS0xKSkvKChpbnQpKHNpemVvZihm ZF9tYXNrX3QpICogOCkpKV07Cn0gZmRfc2V0OwoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3Ry aW5nLmgiIDEgMwoKCgoKCiNpZGVudCAiJFJldmlzaW9uOiAxLjQxICQiCiMgNjcgIi91c3IvaW5j bHVkZS9zdHJpbmcuaCIgMwpleHRlcm4gdm9pZCAqbWVtY3B5KHZvaWQgKiwgY29uc3Qgdm9pZCAq LCBzaXplX3QpOwpleHRlcm4gdm9pZCAqbWVtbW92ZSh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6 ZV90KTsKZXh0ZXJuIGNoYXIgKnN0cmNweShjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBj aGFyICpzdHJuY3B5KGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gY2hhciAq c3RyY2F0KGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnN0cm5jYXQoY2hhciAq LCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiB2b2lkICptZW1jY3B5KHZvaWQgKiwgY29u c3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7CmV4dGVybiBpbnQgbWVtY21wKGNvbnN0IHZvaWQgKiwg Y29uc3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gaW50IHN0cmNtcChjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKik7CmV4dGVybiBpbnQgc3RyY29sbChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg Kik7CmV4dGVybiBpbnQgc3RybmNtcChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90 KTsKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtKGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwoK ZXh0ZXJuIHZvaWQgKm1lbWNocihjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKZXh0ZXJuIGNo YXIgKnN0cmNocihjb25zdCBjaGFyICosIGludCk7CgpleHRlcm4gc2l6ZV90IHN0cmNzcG4oY29u c3QgY2hhciAqLCBjb25zdCBjaGFyICopOwojcHJhZ21hIGludF90b191bnNpZ25lZCBzdHJjc3Bu CgpleHRlcm4gY2hhciAqc3RycGJyayhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVy biBjaGFyICpzdHJyY2hyKGNvbnN0IGNoYXIgKiwgaW50KTsKCmV4dGVybiBzaXplX3Qgc3Ryc3Bu KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKI3ByYWdtYSBpbnRfdG9fdW5zaWduZWQgc3Ry c3BuCgpleHRlcm4gY2hhciAqc3Ryc3RyKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKCmV4 dGVybiBjaGFyICpzdHJ0b2soY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCAqbWVt c2V0KHZvaWQgKiwgaW50LCBzaXplX3QpOwpleHRlcm4gY2hhciAqc3RyZXJyb3IoaW50KTsKZXh0 ZXJuIHNpemVfdCBzdHJsZW4oY29uc3QgY2hhciAqKTsKI3ByYWdtYSBpbnRfdG9fdW5zaWduZWQg c3RybGVuCgoKZXh0ZXJuIGludCBmZnMoaW50KTsKCmV4dGVybiBpbnQgc3RyY2FzZWNtcChjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgc3RybmNhc2VjbXAoY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CgoKCmV4dGVybiBjaGFyICpzdHJkdXAoY29uc3Qg Y2hhciAqKTsKCgoKZXh0ZXJuIGNoYXIgKnN0cnRva19yKGNoYXIgKiwgY29uc3QgY2hhciAqLCBj aGFyICoqKTsKIyA4MSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCiMgMTE3ICIvdXNy L2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCnR5cGVkZWYgbG9uZyBmZF9tYXNrOwojIDQ1ICIvdXNy L2luY2x1ZGUvc3lzL2JzZF90eXBlcy5oIiAyIDMKIyA0MDQgImluY2x1ZGUvc3lzL3R5cGVzLmgi IDIgMwoKCgp0eXBlZGVmIF9fdWludDY0X3Qga19zaWdzZXRfdDsKIyA2NyAiLi4vLi4vZ2NjLTIw MDExMjAzL2djYy90c3lzdGVtLmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS9lcnJuby5oIiAxIDMK CgoKCgojaWRlbnQgIiRSZXZpc2lvbjogMS4yOCAkIgojIDM2ICIvdXNyL2luY2x1ZGUvZXJybm8u aCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvZXJybm8uaCIgMSAzCiMgMTMgIi91c3IvaW5jbHVk ZS9zeXMvZXJybm8uaCIgMwojaWRlbnQgIiRSZXZpc2lvbjogMy40NCAkIgojIDM3ICIvdXNyL2lu Y2x1ZGUvZXJybm8uaCIgMiAzCgoKCgpleHRlcm4gY2hhciAqIHN5c19lcnJsaXN0W107CmV4dGVy biBpbnQgc3lzX25lcnI7CgpleHRlcm4gaW50IG9zZXJyb3Iodm9pZCk7CmV4dGVybiBpbnQgc2V0 b3NlcnJvcihpbnQpOwpleHRlcm4gaW50IGdvc2Vycm9yKHZvaWQpOwojIDYwICIvdXNyL2luY2x1 ZGUvZXJybm8uaCIgMwpleHRlcm4gaW50IGVycm5vOwojIDcwICIuLi8uLi9nY2MtMjAwMTEyMDMv Z2NjL3RzeXN0ZW0uaCIgMgoKCmV4dGVybiBpbnQgZXJybm87CgoKCgoKCgojIDEgImluY2x1ZGUv c3RkbGliLmgiIDEgMwojIDE1ICJpbmNsdWRlL3N0ZGxpYi5oIiAzCiNpZGVudCAiJFJldmlzaW9u OiAxLjc4ICQiCiMgOTkgImluY2x1ZGUvc3RkbGliLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgewogICAg ICAgICBpbnQgcXVvdDsKICAgICAgICAgaW50IHJlbTsKICAgICAgICB9IGRpdl90OwoKdHlwZWRl ZiBzdHJ1Y3QgewogICAgICAgICBsb25nIHF1b3Q7CiAgICAgICAgIGxvbmcgcmVtOwogICAgICAg IH0gbGRpdl90OwojIDE2MiAiaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9s b2NhbGVfYXR0ci5oIiAxIDMKIyAyMSAiL3Vzci9pbmNsdWRlL2xvY2FsZV9hdHRyLmgiIDMKI2lk ZW50ICIkUmV2aXNpb246IDEuNCAkIgojIDQ0ICIvdXNyL2luY2x1ZGUvbG9jYWxlX2F0dHIuaCIg Mwp0eXBlZGVmIHN0cnVjdCB7CgogICAgdW5zaWduZWQgaW50IF9jbGFzcyBbIDI1NyBdOwogICAg c2lnbmVkIHNob3J0IF9sb3dlciBbIDI1NyBdOwogICAgc2lnbmVkIHNob3J0IF91cHBlciBbIDI1 NyBdOwoKICAgIGNoYXIgX2Nzd2lkdGggWyA3IF07CiAgICBjaGFyIF9maWxsIFsgMSBdOwoKCgp9 IF9fY3R5cGVfdDsKCgp0eXBlZGVmIGludCAoKl9faXNzZXRfZnVuY190KShpbnQpOwoKCgoKICAg ICAgICB0eXBlZGVmIGxvbmcgd2ludF90OwoKCgoKCgp0eXBlZGVmIGludCAoKl9faXNjb2Rlc2V0 X2Z1bmNfdCkoaW50LCB3aW50X3QpOwoKCnR5cGVkZWYgc3RydWN0IF9fYXR0ciB7CgogICAgX19j dHlwZV90ICogX2N0eXBlX3RibDsKCiAgICBzdHJ1Y3QgX2NzaW5mbyB7CiAgICAgICAgdW5zaWdu ZWQgY2hhciBfZXVjd2lkdGhbM107CiAgICAgICAgdW5zaWduZWQgY2hhciBfc2Nyd2lkdGhbM107 CiAgICAgICAgdW5zaWduZWQgY2hhciBfbWJfY3VyX21heDsKICAgIH0gX2NzaW5mbzsKCiAgICBz dHJ1Y3QgX2V1Y19mdW5jIHsKICAgICAgICBpbnQgX2lzX2V1YzsKICAgICAgICBfX2lzc2V0X2Z1 bmNfdCBfaXNzZXQyOwogICAgICAgIF9faXNzZXRfZnVuY190IF9pc3NldDM7CiAgICAgICAgX19p c2NvZGVzZXRfZnVuY190IF9pc2NvZGVzZXQ7CiAgICB9IF9ldWNfZnVuYzsKCiAgICBzdHJ1Y3Qg X2NvbGxhdGVfcmVzIHsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9jb2xsX2FzX2NtcDsKICAgIH0g X2NvbGxhdGVfcmVzOwoKICAgIHZvaWQgKiBfZmlsbFsxNV07Cn0gX19hdHRyX3Q7CgoKCgpleHRl cm4gX19hdHRyX3QgX19saWJjX2F0dHI7CiMgMTYzICJpbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAx NzMgImluY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGRvdWJsZSBhdG9mKGNvbnN0IGNoYXIgKik7 CmV4dGVybiBpbnQgYXRvaShjb25zdCBjaGFyICopOwpleHRlcm4gbG9uZyBpbnQgYXRvbChjb25z dCBjaGFyICopOwpleHRlcm4gZG91YmxlIHN0cnRvZChjb25zdCBjaGFyICosIGNoYXIgKiopOwpl eHRlcm4gbG9uZyBpbnQgc3RydG9sKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKZXh0ZXJu IHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwpl eHRlcm4gaW50IHJhbmQodm9pZCk7CmV4dGVybiB2b2lkIHNyYW5kKHVuc2lnbmVkIGludCk7CmV4 dGVybiB2b2lkICpjYWxsb2Moc2l6ZV90LCBzaXplX3QpOwpleHRlcm4gdm9pZCBmcmVlKHZvaWQg Kik7CmV4dGVybiB2b2lkICptYWxsb2Moc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKnJlYWxsb2Modm9p ZCAqLCBzaXplX3QpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgYWJvcnQodm9pZCk7CmV4dGVybiBpbnQg YXRleGl0KHZvaWQgKCopKHZvaWQpKTsKZXh0ZXJuIHZvaWQgZXhpdChpbnQpOwoKCgoKZXh0ZXJu IGNoYXIgKmdldGVudihjb25zdCBjaGFyICopOwpleHRlcm4gaW50IHN5c3RlbShjb25zdCBjaGFy ICopOwpleHRlcm4gdm9pZCAqYnNlYXJjaChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6 ZV90LCBzaXplX3QsCiAgICAgICAgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikp OwpleHRlcm4gdm9pZCBxc29ydCh2b2lkICosIHNpemVfdCwgc2l6ZV90LAogICAgICAgIGludCAo KikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKCgoKCgoKCmV4dGVybiBpbnQgYWJzKGlu dCk7CgoKCgoKCmV4dGVybiBkaXZfdCBkaXYoaW50LCBpbnQpOwpleHRlcm4gbG9uZyBpbnQgbGFi cyhsb25nKTsKCgoKCmV4dGVybiBsZGl2X3QgbGRpdihsb25nLCBsb25nKTsKZXh0ZXJuIGludCBt YnRvd2Mod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiBpbnQgbWJsZW4o Y29uc3QgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gaW50IHdjdG9tYihjaGFyICosIHdjaGFyX3Qp OwpleHRlcm4gc2l6ZV90IG1ic3Rvd2NzKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3Qp OwpleHRlcm4gc2l6ZV90IHdjc3RvbWJzKGNoYXIgKiwgY29uc3Qgd2NoYXJfdCAqLCBzaXplX3Qp OwoKCgpleHRlcm4gaW50IHB1dGVudihjb25zdCBjaGFyICopOwpleHRlcm4gZG91YmxlIGRyYW5k NDgodm9pZCk7CmV4dGVybiBkb3VibGUgZXJhbmQ0OCh1bnNpZ25lZCBzaG9ydCBbM10pOwpleHRl cm4gbG9uZyBscmFuZDQ4KHZvaWQpOwpleHRlcm4gbG9uZyBucmFuZDQ4KHVuc2lnbmVkIHNob3J0 IFszXSk7CmV4dGVybiBsb25nIG1yYW5kNDgodm9pZCk7CmV4dGVybiBsb25nIGpyYW5kNDgodW5z aWduZWQgc2hvcnQgWzNdKTsKZXh0ZXJuIHZvaWQgc3JhbmQ0OChsb25nKTsKZXh0ZXJuIHZvaWQg bGNvbmc0OCh1bnNpZ25lZCBzaG9ydCBpbnQgWzddKTsKZXh0ZXJuIHZvaWQgc2V0a2V5KGNvbnN0 IGNoYXIgKik7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCAqIHNlZWQ0OCh1bnNpZ25lZCBzaG9ydCBp bnQgWzNdKTsKCgoKCmV4dGVybiBsb25nIGE2NGwoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIg KmVjdnQoZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7CmV4dGVybiBjaGFyICpmY3Z0KGRvdWJs ZSwgaW50LCBpbnQgKiwgaW50ICopOwpleHRlcm4gY2hhciAqZ2N2dChkb3VibGUsIGludCwgY2hh ciAqKTsKZXh0ZXJuIGludCBnZXRzdWJvcHQoY2hhciAqKiwgY2hhciAqIGNvbnN0ICosIGNoYXIg KiopOwpleHRlcm4gaW50IGdyYW50cHQoaW50KTsKZXh0ZXJuIGNoYXIgKmluaXRzdGF0ZSh1bnNp Z25lZCBpbnQsIGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGNoYXIgKmw2NGEobG9uZyk7CmV4dGVy biBjaGFyICpta3RlbXAoY2hhciAqKTsKZXh0ZXJuIGludCBta3N0ZW1wKGNoYXIgKik7CmV4dGVy biBjaGFyICpwdHNuYW1lKGludCk7CmV4dGVybiBsb25nIHJhbmRvbSh2b2lkKTsKZXh0ZXJuIGNo YXIgKnJlYWxwYXRoKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnNldHN0YXRl KGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIHNyYW5kb20odW5zaWduZWQpOwpleHRlcm4gaW50 IHR0eXNsb3Qodm9pZCk7CmV4dGVybiBpbnQgdW5sb2NrcHQoaW50KTsKZXh0ZXJuIHZvaWQgKnZh bGxvYyhzaXplX3QpOwoKCgoKCgoKZXh0ZXJuIGludCByYW5kX3IodW5zaWduZWQgaW50ICopOwoK CgoKCmV4dGVybiBpbnQgYXRjaGVja3BvaW50KHZvaWQgKCopKHZvaWQpKTsKZXh0ZXJuIGludCBh dHJlc3RhcnQodm9pZCAoKikodm9pZCkpOwpleHRlcm4gaW50IGR1cDIoaW50LCBpbnQpOwpleHRl cm4gaW50IGdldHB3KGludCwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmdldGN3ZChjaGFyICosIHNp emVfdCk7CmV4dGVybiBjaGFyICpnZXRsb2dpbih2b2lkKTsKZXh0ZXJuIGNoYXIgKmdldHBhc3Mo Y29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBpc2F0dHkoaW50KTsKZXh0ZXJuIHZvaWQgbDN0b2wo bG9uZyAqLCBjb25zdCBjaGFyICosIGludCk7CmV4dGVybiB2b2lkIGx0b2wzKGNoYXIgKiwgY29u c3QgbG9uZyAqLCBpbnQpOwpleHRlcm4gdm9pZCAqbWVtYWxpZ24oc2l6ZV90LCBzaXplX3QpOwoj IDMwMCAiaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4gbG9uZyBkb3VibGUgYXRvbGQoY29uc3Qg Y2hhciAqKTsKZXh0ZXJuIGxvbmcgZG91YmxlIHN0cnRvbGQoY29uc3QgY2hhciAqbnB0ciwgY2hh ciAqKmVuZHB0cik7CmV4dGVybiBjaGFyICpxZWN2dChsb25nIGRvdWJsZSwgaW50LCBpbnQgKiwg aW50ICopOwpleHRlcm4gY2hhciAqcWZjdnQobG9uZyBkb3VibGUsIGludCwgaW50ICosIGludCAq KTsKZXh0ZXJuIGNoYXIgKnFnY3Z0KGxvbmcgZG91YmxlLCBpbnQsIGNoYXIgKik7CmV4dGVybiBj aGFyICplY3Z0bChsb25nIGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwpleHRlcm4gY2hhciAq ZmN2dGwobG9uZyBkb3VibGUsIGludCwgaW50ICosIGludCAqKTsKZXh0ZXJuIGNoYXIgKmdjdnRs KGxvbmcgZG91YmxlLCBpbnQsIGNoYXIgKik7CiMgMzIwICJpbmNsdWRlL3N0ZGxpYi5oIiAzCnR5 cGVkZWYgc3RydWN0IHsKICAgICAgICAgX19pbnQ2NF90IHF1b3Q7CiAgICAgICAgIF9faW50NjRf dCByZW07CiAgICAgICAgfSBsbGRpdl90OwoKZXh0ZXJuIF9faW50NjRfdCBhdG9sbChjb25zdCBj aGFyICopOwpleHRlcm4gX19pbnQ2NF90IHN0cnRvbGwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBp bnQpOwpleHRlcm4gX191aW50NjRfdCBzdHJ0b3VsbChjb25zdCBjaGFyICosIGNoYXIgKiosIGlu dCk7CmV4dGVybiBfX2ludDY0X3QgbGxhYnMoX19pbnQ2NF90KTsKCgoKCmV4dGVybiBsbGRpdl90 IGxsZGl2KF9faW50NjRfdCwgX19pbnQ2NF90KTsKCgoKCgoKCmV4dGVybiBjaGFyICplY3Z0X3Io ZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmZjdnRfcihk b3VibGUsIGludCwgaW50ICosIGludCAqLCBjaGFyICopOwoKZXh0ZXJuIGNoYXIgKnFlY3Z0X3Io bG9uZyBkb3VibGUsIGludCwgaW50ICosIGludCAqLCBjaGFyICopOwpleHRlcm4gY2hhciAqcWZj dnRfcihsb25nIGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICosIGNoYXIgKik7CmV4dGVybiBjaGFy ICplY3Z0bF9yKGxvbmcgZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJu IGNoYXIgKmZjdnRsX3IobG9uZyBkb3VibGUsIGludCwgaW50ICosIGludCAqLCBjaGFyICopOwoj IDgxICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2NjL3RzeXN0ZW0uaCIgMgojIDEgImluY2x1ZGUvdW5p c3RkLmgiIDEgMwojIDE1ICJpbmNsdWRlL3VuaXN0ZC5oIiAzCiNpZGVudCAiJFJldmlzaW9uOiAx LjEzNyAkIgojIDI4NyAiaW5jbHVkZS91bmlzdGQuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMv dW5pc3RkLmgiIDEgMwojIDI4OCAiaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKCgpleHRlcm4gaW50 IGFjY2Vzcyhjb25zdCBjaGFyICosIGludCk7CmV4dGVybiB1bnNpZ25lZCBhbGFybSh1bnNpZ25l ZCk7CmV4dGVybiBpbnQgY2hkaXIoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBjaG93bihjb25z dCBjaGFyICosIHVpZF90LCBnaWRfdCk7CmV4dGVybiBpbnQgY2xvc2UoaW50KTsKZXh0ZXJuIGNo YXIgKmN0ZXJtaWQoY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmN1c2VyaWQoY2hhciAqKTsKZXh0ZXJu IGludCBkdXAoaW50KTsKZXh0ZXJuIGludCBkdXAyKGludCwgaW50KTsKZXh0ZXJuIGludCBleGVj bChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCBleGVjbGUoY29u c3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgZXhlY2xwKGNvbnN0IGNo YXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwpleHRlcm4gaW50IGV4ZWN2KGNvbnN0IGNoYXIgKiwg Y2hhciAqY29uc3QgKik7CmV4dGVybiBpbnQgZXhlY3ZlKGNvbnN0IGNoYXIgKiwgY2hhciAqY29u c3QgKiwgY2hhciAqY29uc3QgKik7CmV4dGVybiBpbnQgZXhlY3ZwKGNvbnN0IGNoYXIgKiwgY2hh ciAqY29uc3QgKik7CmV4dGVybiB2b2lkIF9leGl0KGludCk7CmV4dGVybiBwaWRfdCBmb3JrKHZv aWQpOwpleHRlcm4gbG9uZyBmcGF0aGNvbmYoaW50LCBpbnQpOwoKZXh0ZXJuIGNoYXIgKmdldGN3 ZChjaGFyICosIHNpemVfdCk7CmV4dGVybiBnaWRfdCBnZXRlZ2lkKHZvaWQpOwpleHRlcm4gdWlk X3QgZ2V0ZXVpZCh2b2lkKTsKZXh0ZXJuIGdpZF90IGdldGdpZCh2b2lkKTsKCgoKZXh0ZXJuIGlu dCBnZXRncm91cHMoaW50LCBnaWRfdCAqKTsKCmV4dGVybiBjaGFyICpnZXRsb2dpbih2b2lkKTsK CgoKZXh0ZXJuIHBpZF90IGdldHBncnAodm9pZCk7CgpleHRlcm4gcGlkX3QgZ2V0cGlkKHZvaWQp OwpleHRlcm4gcGlkX3QgZ2V0cHBpZCh2b2lkKTsKZXh0ZXJuIHVpZF90IGdldHVpZCh2b2lkKTsK ZXh0ZXJuIGludCBpc2F0dHkoaW50KTsKCmV4dGVybiBpbnQgbGluayhjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKik7CmV4dGVybiBpbnQgbGlua2ZvbGxvdyhjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKik7CiMgMzQ0ICJpbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBvZmZfdCBsc2VlayhpbnQs IG9mZl90LCBpbnQpOwpleHRlcm4gbG9uZyBwYXRoY29uZihjb25zdCBjaGFyICosIGludCk7CmV4 dGVybiBpbnQgcGF1c2Uodm9pZCk7CmV4dGVybiBpbnQgcGlwZShpbnQgKik7CmV4dGVybiBzc2l6 ZV90IHJlYWQoaW50LCB2b2lkICosIHNpemVfdCk7CmV4dGVybiBpbnQgcm1kaXIoY29uc3QgY2hh ciAqKTsKZXh0ZXJuIGludCBzZXRnaWQoZ2lkX3QpOwpleHRlcm4gaW50IHNldHBnaWQocGlkX3Qs IHBpZF90KTsKZXh0ZXJuIHBpZF90IHNldHNpZCh2b2lkKTsKZXh0ZXJuIGludCBzZXR1aWQodWlk X3QpOwpleHRlcm4gdW5zaWduZWQgc2xlZXAodW5zaWduZWQpOwpleHRlcm4gbG9uZyBzeXNjb25m KGludCk7CmV4dGVybiBwaWRfdCB0Y2dldHBncnAoaW50KTsKZXh0ZXJuIGludCB0Y3NldHBncnAo aW50LCBwaWRfdCk7CmV4dGVybiBjaGFyICp0dHluYW1lKGludCk7CmV4dGVybiBpbnQgdW5saW5r KGNvbnN0IGNoYXIgKik7CmV4dGVybiBzc2l6ZV90IHdyaXRlKGludCwgY29uc3Qgdm9pZCAqLCBz aXplX3QpOwoKCgoKCmV4dGVybiBpbnQgZmRhdGFzeW5jKGludCk7CgoKCgoKCmV4dGVybiBpbnQg ZnN5bmMoaW50KTsKCgoKCgoKZXh0ZXJuIGludCBmdHJ1bmNhdGUoaW50LCBvZmZfdCk7CgoKCgoK CmV4dGVybiBpbnQgZ2V0bG9naW5fcihjaGFyICosIHNpemVfdCk7CmV4dGVybiBpbnQgdHR5bmFt ZV9yKGludCwgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gaW50IHB0aHJlYWRfYXRmb3JrKHZvaWQg KCopKHZvaWQpLCB2b2lkICgqKSh2b2lkKSwgdm9pZCAoKikodm9pZCkpOwoKCgoKCgoKZXh0ZXJu IHNpemVfdCBjb25mc3RyKGludCwgY2hhciAqLCBzaXplX3QpOwoKCgoKCgpleHRlcm4gaW50IGNo cm9vdChjb25zdCBjaGFyICopOwpleHRlcm4gaW50IG5pY2UoaW50KTsKZXh0ZXJuIGNoYXIgKmNy eXB0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgZW5jcnlwdChjaGFy ICosIGludCk7CmV4dGVybiBjaGFyICpnZXRwYXNzKGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lk IHN3YWIoY29uc3Qgdm9pZCAqLCB2b2lkICosIHNzaXplX3QpOwoKCgoKCgpleHRlcm4gaW50IGJy ayh2b2lkICopOwpleHRlcm4gaW50IGZjaG93bihpbnQsIHVpZF90LCBnaWRfdCk7CmV4dGVybiBp bnQgZmNoZGlyKGludCk7CmV4dGVybiBpbnQgZ2V0ZHRhYmxlc2l6ZSh2b2lkKTsKZXh0ZXJuIGxv bmcgZ2V0aG9zdGlkKHZvaWQpOwpleHRlcm4gaW50IGdldGhvc3RuYW1lKGNoYXIgKiwgc2l6ZV90 KTsKZXh0ZXJuIGludCBnZXRwYWdlc2l6ZSh2b2lkKTsKZXh0ZXJuIHBpZF90IGdldHBnaWQocGlk X3QpOwpleHRlcm4gcGlkX3QgZ2V0c2lkKHBpZF90KTsKZXh0ZXJuIGNoYXIgKmdldHdkKGNoYXIg Kik7CmV4dGVybiBpbnQgbGNob3duKGNvbnN0IGNoYXIgKiwgdWlkX3QsIGdpZF90KTsKZXh0ZXJu IGludCBsb2NrZihpbnQsIGludCwgb2ZmX3QpOwpleHRlcm4gaW50IHJlYWRsaW5rKGNvbnN0IGNo YXIgKiwgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCAqc2Jyayhzc2l6ZV90KTsKCgoKZXh0 ZXJuIHBpZF90IHNldHBncnAodm9pZCk7CgoKCmV4dGVybiBpbnQgc2V0cmVnaWQoZ2lkX3QsIGdp ZF90KTsKIyA0NDkgImluY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIGludCBzZXRyZXVpZCh1aWRf dCwgdWlkX3QpOwpleHRlcm4gaW50IHN5bWxpbmsoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICop OwpleHRlcm4gdm9pZCBzeW5jKHZvaWQpOwpleHRlcm4gaW50IHRydW5jYXRlKGNvbnN0IGNoYXIg Kiwgb2ZmX3QpOwpleHRlcm4gdXNlY29uZHNfdCB1YWxhcm0odXNlY29uZHNfdCwgdXNlY29uZHNf dCk7CmV4dGVybiBpbnQgdXNsZWVwKHVzZWNvbmRzX3QpOwojIDQ2OSAiaW5jbHVkZS91bmlzdGQu aCIgMwpleHRlcm4gc3NpemVfdCBwcmVhZChpbnQsIHZvaWQgKiwgc2l6ZV90LCBvZmZfdCk7CmV4 dGVybiBzc2l6ZV90IHB3cml0ZShpbnQsIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBvZmZfdCk7CiMg NDgxICJpbmNsdWRlL3VuaXN0ZC5oIiAzCnN0cnVjdCB0aW1ldmFsOwpleHRlcm4gaW50IHNlbGVj dChpbnQsIGZkX3NldCAqLCBmZF9zZXQgKiwgZmRfc2V0ICosIHN0cnVjdCB0aW1ldmFsICopOwoK CgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdWlvLmgiIDEgMwojIDEyICIvdXNyL2luY2x1ZGUv c3lzL3Vpby5oIiAzCiNpZGVudCAiQCgjKXV0cy0zYjI6aW8vdWlvLmgJMS4yIgojaWRlbnQgIiRS ZXZpc2lvbjogMS4yMyAkIgojIDMwICIvdXNyL2luY2x1ZGUvc3lzL3Vpby5oIiAzCnR5cGVkZWYg c3RydWN0IGlvdmVjIHsKICAgICAgICB2b2lkICppb3ZfYmFzZTsKICAgICAgICBzaXplX3QgaW92 X2xlbjsKfSBpb3ZlY190OwoKCgpleHRlcm4gc3NpemVfdCByZWFkdihpbnQsIGNvbnN0IHN0cnVj dCBpb3ZlYyAqLCBpbnQpOwpleHRlcm4gc3NpemVfdCB3cml0ZXYoaW50LCBjb25zdCBzdHJ1Y3Qg aW92ZWMgKiwgaW50KTsKIyA0OTAgImluY2x1ZGUvdW5pc3RkLmgiIDIgMwojIDEgIi91c3IvaW5j bHVkZS91dGltZS5oIiAxIDMKCgoKCgojaWRlbnQgIiRSZXZpc2lvbjogMS45ICQiCiMgMzQgIi91 c3IvaW5jbHVkZS91dGltZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy91dGltZS5oIiAxIDMK IyAxNyAiL3Vzci9pbmNsdWRlL3N5cy91dGltZS5oIiAzCnN0cnVjdCB1dGltYnVmIHsKICAgICAg ICB0aW1lX3QgYWN0aW1lOwogICAgICAgIHRpbWVfdCBtb2R0aW1lOwp9OwojIDM1ICIvdXNyL2lu Y2x1ZGUvdXRpbWUuaCIgMiAzCgpleHRlcm4gaW50IHV0aW1lKGNvbnN0IGNoYXIgKiwgY29uc3Qg c3RydWN0IHV0aW1idWYgKik7CiMgNDkxICJpbmNsdWRlL3VuaXN0ZC5oIiAyIDMKIyAxICIvdXNy L2luY2x1ZGUvcmVfY29tcC5oIiAxIDMKCgoKCgojaWRlbnQgIiRSZXZpc2lvbjogMS4xICQiCiMg MjUgIi91c3IvaW5jbHVkZS9yZV9jb21wLmgiIDMKZXh0ZXJuIGNoYXIgKnJlX2NvbXAoY29uc3Qg Y2hhciAqKTsKZXh0ZXJuIGludCByZV9leGVjKGNvbnN0IGNoYXIgKik7CiMgNDkyICJpbmNsdWRl L3VuaXN0ZC5oIiAyIDMKZXh0ZXJuIGludCBhY2N0KGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lk IGV4aXQoaW50KTsKZXh0ZXJuIGNoYXIgKmdldHR4dChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg Kik7CmV4dGVybiBpbnQgcHJvZmlsKHVuc2lnbmVkIHNob3J0ICosIHNpemVfdCwgaW50LCB1bnNp Z25lZCBpbnQpOwpleHRlcm4gaW50IHB0cmFjZShpbnQsIHBpZF90LCBpbnQsIGludCk7CmV4dGVy biBpbnQgcmVuYW1lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBzZXRl dWlkKHVpZF90KTsKZXh0ZXJuIGludCBzZXRlZ2lkKGdpZF90KTsKZXh0ZXJuIGludCBzdGltZShj b25zdCB0aW1lX3QgKik7CmV4dGVybiBvZmZfdCB0ZWxsKGludCk7CgoKCnN0cnVjdCBhY2N0X3Nw aTsKZXh0ZXJuIGludCBhdGZvcmtfY2hpbGQodm9pZCAoKmZ1bmMpKHZvaWQpKTsKZXh0ZXJuIGlu dCBhdGZvcmtfY2hpbGRfcHJlcGVuZCh2b2lkICgqZnVuYykodm9pZCkpOwpleHRlcm4gaW50IGF0 Zm9ya19wYXJlbnQodm9pZCAoKmZ1bmMpKGludCwgaW50KSk7CmV4dGVybiBpbnQgYXRmb3JrX3By ZSh2b2lkICgqZnVuYykodm9pZCkpOwpleHRlcm4gaW50IGF0c3Byb2NfY2hpbGQodm9pZCAoKmZ1 bmMpKHZvaWQpKTsKZXh0ZXJuIGludCBhdHNwcm9jX3BhcmVudCh2b2lkICgqZnVuYykoaW50LCBp bnQpKTsKZXh0ZXJuIGludCBhdHNwcm9jX3ByZSh2b2lkICgqZnVuYykodW5zaWduZWQgaW50KSk7 CmV4dGVybiB2b2lkIGJzZXQoY2hhciAqLCBiaXRudW1fdCk7CmV4dGVybiB2b2lkIGJjbHIoY2hh ciAqLCBiaXRudW1fdCk7CmV4dGVybiBpbnQgYnRzdChjaGFyICosIGJpdG51bV90KTsKZXh0ZXJu IHZvaWQgYmZzZXQoY2hhciAqLCBiaXRudW1fdCwgYml0bGVuX3QpOwpleHRlcm4gdm9pZCBiZmNs cihjaGFyICosIGJpdG51bV90LCBiaXRsZW5fdCk7CmV4dGVybiBiaXRsZW5fdCBiZnRzdHNldChj aGFyICosIGJpdG51bV90LCBiaXRsZW5fdCk7CmV4dGVybiBiaXRsZW5fdCBiZnRzdGNscihjaGFy ICosIGJpdG51bV90LCBiaXRsZW5fdCk7CmV4dGVybiBpbnQgQlNEY2hvd24oY29uc3QgY2hhciAq LCB1aWRfdCwgZ2lkX3QpOwpleHRlcm4gaW50IEJTRGR1cDIoaW50LCBpbnQpOwpleHRlcm4gaW50 IEJTRGZjaG93bihpbnQsIHVpZF90LCBnaWRfdCk7CmV4dGVybiBpbnQgQlNEZ2V0cGdycChpbnQp OwpleHRlcm4gaW50IEJTRHNldHBncnAoaW50LCBpbnQpOwpleHRlcm4gaW50IEJTRHNldGdyb3Vw cyhpbnQsIGludCAqKTsKZXh0ZXJuIGludCBCU0RnZXRncm91cHMoaW50LCBpbnQgKik7CmV4dGVy biBpbnQgX2RhZW1vbml6ZShpbnQsIGludCwgaW50LCBpbnQpOwpleHRlcm4gYXNoX3QgZ2V0YXNo KHZvaWQpOwpleHRlcm4gaW50IGdldGR0YWJsZWhpKHZvaWQpOwpleHRlcm4gaW50IGdldGRvbWFp bm5hbWUoY2hhciAqLCBpbnQpOwpleHRlcm4gcHJpZF90IGdldHByaWQodm9pZCk7CmV4dGVybiBj aGFyICpfZ2V0cHR5KGludCAqLCBpbnQsIG1vZGVfdCwgaW50KTsKZXh0ZXJuIGludCBnZXRzcGlu Zm8oc3RydWN0IGFjY3Rfc3BpICopOwpleHRlcm4gaW50IG1pbmNvcmUoY2FkZHJfdCwgc2l6ZV90 LCBjaGFyICopOwpleHRlcm4gaW50IG1waW4odm9pZCAqLCBzaXplX3QpOwpleHRlcm4gaW50IG11 bnBpbih2b2lkICosIHNpemVfdCk7CmV4dGVybiBpbnQgbmV3YXJyYXlzZXNzKHZvaWQpOwpleHRl cm4gcGlkX3QgcGNyZWF0ZWwoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmV4dGVy biBwaWRfdCBwY3JlYXRlbHAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7CmV4dGVy biBwaWRfdCBwY3JlYXRldihjb25zdCBjaGFyICosIGNoYXIgKmNvbnN0ICopOwpleHRlcm4gcGlk X3QgcGNyZWF0ZXZlKGNvbnN0IGNoYXIgKiwgY2hhciAqY29uc3QgKiwgY2hhciAqY29uc3QgKik7 CmV4dGVybiBwaWRfdCBwY3JlYXRldnAoY29uc3QgY2hhciAqLCBjaGFyICpjb25zdCAqKTsKCmV4 dGVybiBzc2l6ZV90IHByZWFkNjQoaW50LCB2b2lkICosIHNpemVfdCwgb2ZmNjRfdCk7CmV4dGVy biBzc2l6ZV90IHB3cml0ZTY0KGludCwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIG9mZjY0X3QpOwoK ZXh0ZXJuIGludCByZXhlY2woY2VsbF90LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4u KTsKZXh0ZXJuIGludCByZXhlY2xlKGNlbGxfdCwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICos IC4uLik7CmV4dGVybiBpbnQgcmV4ZWNscChjZWxsX3QsIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqLCAuLi4pOwpleHRlcm4gaW50IHJleGVjdihjZWxsX3QsIGNvbnN0IGNoYXIgKiwgY2hhciAq Y29uc3QgKik7CmV4dGVybiBpbnQgcmV4ZWN2ZShjZWxsX3QsIGNvbnN0IGNoYXIgKiwgY2hhciAq Y29uc3QgKiwgY2hhciAqY29uc3QgKik7CmV4dGVybiBpbnQgcmV4ZWN2cChjZWxsX3QsIGNvbnN0 IGNoYXIgKiwgY2hhciAqY29uc3QgKik7CmV4dGVybiBmbG9hdCBfc3FydF9zKGZsb2F0KTsKZXh0 ZXJuIGRvdWJsZSBfc3FydF9kKGRvdWJsZSk7CmV4dGVybiBpbnQgc2V0YXNoKGFzaF90KTsKZXh0 ZXJuIGludCBzZXRkb21haW5uYW1lKGNvbnN0IGNoYXIgKiwgaW50KTsKCgoKZXh0ZXJuIGludCBz ZXRncm91cHMoaW50LCBjb25zdCBnaWRfdCAqKTsKCmV4dGVybiBpbnQgc2V0aG9zdGlkKGludCk7 CmV4dGVybiBpbnQgc2V0aG9zdG5hbWUoY29uc3QgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IHNl dHByaWQocHJpZF90KTsKZXh0ZXJuIGludCBzZXRyZ2lkKGdpZF90KTsKZXh0ZXJuIGludCBzZXRy dWlkKHVpZF90KTsKZXh0ZXJuIGludCBzZXRzcGluZm8oc3RydWN0IGFjY3Rfc3BpICopOwpleHRl cm4gaW50IHNnaWtvcHQoY29uc3QgY2hhciAqLCBjaGFyICosIGludCk7CmV4dGVybiBsb25nIHNn aW5hcChsb25nKTsKZXh0ZXJuIG9mZjY0X3QgdGVsbDY0KGludCk7CmV4dGVybiBpbnQgdmhhbmd1 cCh2b2lkKTsKCgoKCgpleHRlcm4gaW50IGZhdHRhY2goaW50LCBjb25zdCBjaGFyICopOwpleHRl cm4gaW50IGZkZXRhY2goY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBpb2N0bChpbnQsIGludCwg Li4uKTsKCgoKCgpleHRlcm4gaW50IGZ0cnVuY2F0ZTY0KGludCwgb2ZmNjRfdCk7CmV4dGVybiBp bnQgbG9ja2Y2NChpbnQsIGludCwgb2ZmNjRfdCk7CmV4dGVybiBvZmY2NF90IGxzZWVrNjQoaW50 LCBvZmY2NF90LCBpbnQpOwpleHRlcm4gaW50IHRydW5jYXRlNjQoY29uc3QgY2hhciAqLCBvZmY2 NF90KTsKIyA4MiAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy90c3lzdGVtLmgiIDIKCgojIDEgImlu Y2x1ZGUvbGltaXRzLmgiIDEgMwojIDExICJpbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiaW5jbHVk ZS9zeXNsaW1pdHMuaCIgMSAzCiMgMzYgImluY2x1ZGUvc3lzbGltaXRzLmgiIDMKI2lkZW50ICIk UmV2aXNpb246IDcuNDEgJCIKIyAzMTkgImluY2x1ZGUvc3lzbGltaXRzLmgiIDMKdHlwZWRlZiB1 bmlvbiBfaF92YWwgewoKICAgICAgICB1bnNpZ25lZCBsb25nIGlbMl07CgoKCgogICAgICAgIGRv dWJsZSBkOwp9IF9oX3ZhbDsKCmV4dGVybiBfX2NvbnN0IF9oX3ZhbCBfX2h1Z2VfdmFsOwojIDEy ICJpbmNsdWRlL2xpbWl0cy5oIiAyIDMKIyA4NSAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy90c3lz dGVtLmgiIDIKCgojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwoKCgoKCiNpZGVudCAiJFJl dmlzaW9uOiAxLjUxICQiCiMgNzQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKIyAxICIvdXNyL2lu Y2x1ZGUvc3lzL3B0aW1lcnMuaCIgMSAzCiMgMjIgIi91c3IvaW5jbHVkZS9zeXMvcHRpbWVycy5o IiAzCiNpZGVudCAiJElkOiBwdGltZXJzLmgsdiAxLjQgMTk5Ny8wMS8xNSAwNDo0NDo0MSBqd2Fn IEV4cCAkIgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lc3BlYy5oIiAxIDMKIyAxOSAi L3Vzci9pbmNsdWRlL3N5cy90aW1lc3BlYy5oIiAzCiNpZGVudCAiJFJldmlzaW9uOiAxLjUgJCIK IyA0NiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lc3BlYy5oIiAzCnR5cGVkZWYgc3RydWN0IHRpbWVz cGVjIHsKCgoKICAgICAgICB0aW1lX3QgdHZfc2VjOwoKCgoKICAgICAgICBsb25nIHR2X25zZWM7 Cgp9IHRpbWVzcGVjX3Q7CiMgMjkgIi91c3IvaW5jbHVkZS9zeXMvcHRpbWVycy5oIiAyIDMKCnR5 cGVkZWYgc3RydWN0IGl0aW1lcnNwZWMgewogICAgICAgIHRpbWVzcGVjX3QgaXRfaW50ZXJ2YWw7 CiAgICAgICAgdGltZXNwZWNfdCBpdF92YWx1ZTsKfSBpdGltZXJzcGVjX3Q7CiMgNzUgIi91c3Iv aW5jbHVkZS90aW1lLmgiIDIgMwojIDEwNiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwpzdHJ1Y3Qg dG0gewogICAgICAgIGludCB0bV9zZWM7CiAgICAgICAgaW50IHRtX21pbjsKICAgICAgICBpbnQg dG1faG91cjsKICAgICAgICBpbnQgdG1fbWRheTsKICAgICAgICBpbnQgdG1fbW9uOwogICAgICAg IGludCB0bV95ZWFyOwogICAgICAgIGludCB0bV93ZGF5OwogICAgICAgIGludCB0bV95ZGF5Owog ICAgICAgIGludCB0bV9pc2RzdDsKfTsKCgoKCmV4dGVybiBjbG9ja190IGNsb2NrKHZvaWQpOwpl eHRlcm4gZG91YmxlIGRpZmZ0aW1lKHRpbWVfdCwgdGltZV90KTsKZXh0ZXJuIHRpbWVfdCBta3Rp bWUoc3RydWN0IHRtICopOwpleHRlcm4gdGltZV90IHRpbWUodGltZV90ICopOwpleHRlcm4gY2hh ciAqYXNjdGltZShjb25zdCBzdHJ1Y3QgdG0gKik7CmV4dGVybiBjaGFyICpjdGltZSAoY29uc3Qg dGltZV90ICopOwpleHRlcm4gc3RydWN0IHRtICpnbXRpbWUoY29uc3QgdGltZV90ICopOwpleHRl cm4gc3RydWN0IHRtICpsb2NhbHRpbWUoY29uc3QgdGltZV90ICopOwpleHRlcm4gc2l6ZV90IHN0 cmZ0aW1lKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCB0bSAqKTsK CgoKCgpleHRlcm4gdm9pZCB0enNldCh2b2lkKTsKZXh0ZXJuIGNoYXIgKnR6bmFtZVsyXTsKIyAx NTAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKc3RydWN0IHNpZ2V2ZW50OwpleHRlcm4gaW50IGNs b2NrX3NldHRpbWUoY2xvY2tpZF90LCBjb25zdCB0aW1lc3BlY190ICopOwpleHRlcm4gaW50IGNs b2NrX2dldHRpbWUoY2xvY2tpZF90LCB0aW1lc3BlY190ICopOwpleHRlcm4gaW50IGNsb2NrX2dl dHJlcyhjbG9ja2lkX3QsIHRpbWVzcGVjX3QgKik7CmV4dGVybiBpbnQgbmFub3NsZWVwKGNvbnN0 IHRpbWVzcGVjX3QgKiwgdGltZXNwZWNfdCAqKTsKZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUoY2xv Y2tpZF90LCBzdHJ1Y3Qgc2lnZXZlbnQgKiwgdGltZXJfdCAqKTsKZXh0ZXJuIGludCB0aW1lcl9k ZWxldGUodGltZXJfdCk7CmV4dGVybiBpbnQgdGltZXJfc2V0dGltZSh0aW1lcl90LCBpbnQsIGNv bnN0IHN0cnVjdCBpdGltZXJzcGVjICosIHN0cnVjdCBpdGltZXJzcGVjICopOwpleHRlcm4gaW50 IHRpbWVyX2dldHRpbWUodGltZXJfdCwgc3RydWN0IGl0aW1lcnNwZWMgKik7CmV4dGVybiBpbnQg dGltZXJfZ2V0b3ZlcnJ1bih0aW1lcl90KTsKCgoKCgoKZXh0ZXJuIHRpbWVfdCB0aW1lem9uZTsK ZXh0ZXJuIGludCBkYXlsaWdodDsKZXh0ZXJuIGNoYXIgKnN0cnB0aW1lKGNvbnN0IGNoYXIgKiwg Y29uc3QgY2hhciAqLCBzdHJ1Y3QgdG0gKik7CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdldGRh dGUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCBnZXRkYXRlX2VycjsKCgoKZXh0ZXJuIGludCBj ZnRpbWUoY2hhciAqLCBjaGFyICosIGNvbnN0IHRpbWVfdCAqKTsKZXh0ZXJuIGludCBhc2NmdGlt ZShjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHRtICopOwpleHRlcm4gdGltZV90 IGFsdHpvbmU7CgoKCgoKCmV4dGVybiBjaGFyICphc2N0aW1lX3IoY29uc3Qgc3RydWN0IHRtICos IGNoYXIgKik7CmV4dGVybiBjaGFyICpjdGltZV9yKGNvbnN0IHRpbWVfdCAqLCBjaGFyICopOwpl eHRlcm4gc3RydWN0IHRtICpnbXRpbWVfcihjb25zdCB0aW1lX3QgKiwgc3RydWN0IHRtICopOwpl eHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWVfcihjb25zdCB0aW1lX3QgKiwgc3RydWN0IHRtICop OwojIDg4ICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2NjL3RzeXN0ZW0uaCIgMgojIDM4ICIuLi8uLi9n Y2MtMjAwMTEyMDMvZ2NjL2xpYmdjYzIuYyIgMgoKIyAxICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2Nj L21hY2htb2RlLmgiIDEKIyAyOSAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy9tYWNobW9kZS5oIgpl bnVtIG1hY2hpbmVfbW9kZSB7CiMgMSAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy9tYWNobW9kZS5k ZWYiIDEKIyA3MCAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy9tYWNobW9kZS5kZWYiClZPSURtb2Rl LAoKQkltb2RlLApRSW1vZGUsCkhJbW9kZSwKU0ltb2RlLApESW1vZGUsClRJbW9kZSwKT0ltb2Rl LAoKCgoKUFFJbW9kZSwKUEhJbW9kZSwKUFNJbW9kZSwKUERJbW9kZSwKClFGbW9kZSwKSEZtb2Rl LApUUUZtb2RlLApTRm1vZGUsCkRGbW9kZSwKWEZtb2RlLApURm1vZGUsCgoKUUNtb2RlLApIQ21v ZGUsClNDbW9kZSwKRENtb2RlLApYQ21vZGUsClRDbW9kZSwKCkNRSW1vZGUsCkNISW1vZGUsCkNT SW1vZGUsCkNESW1vZGUsCkNUSW1vZGUsCkNPSW1vZGUsCgoKCgoKCgpWMlFJbW9kZSwKVjJISW1v ZGUsClYyU0ltb2RlLApWMkRJbW9kZSwKClY0UUltb2RlLApWNEhJbW9kZSwKVjRTSW1vZGUsClY0 REltb2RlLAoKVjhRSW1vZGUsClY4SEltb2RlLApWOFNJbW9kZSwKVjhESW1vZGUsCgpWMTZRSW1v ZGUsCgpWMlNGbW9kZSwKVjJERm1vZGUsCgpWNFNGbW9kZSwKVjRERm1vZGUsCgpWOFNGbW9kZSwK VjhERm1vZGUsCgoKCkJMS21vZGUsCiMgMTU0ICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2NjL21hY2ht b2RlLmRlZiIKQ0Ntb2RlLAojIDMxICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2NjL21hY2htb2RlLmgi IDIKTUFYX01BQ0hJTkVfTU9ERSB9OwojIDQxICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2NjL21hY2ht b2RlLmgiCmV4dGVybiBjb25zdCBjaGFyICogY29uc3QgbW9kZV9uYW1lW107CgoKZW51bSBtb2Rl X2NsYXNzIHsgTU9ERV9SQU5ET00sIE1PREVfSU5ULCBNT0RFX0ZMT0FULCBNT0RFX1BBUlRJQUxf SU5ULCBNT0RFX0NDLAogICAgICAgICAgICAgICAgICBNT0RFX0NPTVBMRVhfSU5ULCBNT0RFX0NP TVBMRVhfRkxPQVQsCiAgICAgICAgICAgICAgICAgIE1PREVfVkVDVE9SX0lOVCwgTU9ERV9WRUNU T1JfRkxPQVQsCiAgICAgICAgICAgICAgICAgIE1BWF9NT0RFX0NMQVNTfTsKCgoKCmV4dGVybiBj b25zdCBlbnVtIG1vZGVfY2xhc3MgbW9kZV9jbGFzc1tdOwojIDgwICIuLi8uLi9nY2MtMjAwMTEy MDMvZ2NjL21hY2htb2RlLmgiCmV4dGVybiBjb25zdCB1bnNpZ25lZCBpbnQgbW9kZV9zaXplW107 CgoKCgpleHRlcm4gY29uc3QgdW5zaWduZWQgaW50IG1vZGVfdW5pdF9zaXplW107CiMgOTYgIi4u Ly4uL2djYy0yMDAxMTIwMy9nY2MvbWFjaG1vZGUuaCIKZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGlu dCBtb2RlX2JpdHNpemVbXTsKIyAxMTcgIi4uLy4uL2djYy0yMDAxMTIwMy9nY2MvbWFjaG1vZGUu aCIKZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgbW9kZV93aWRlcl9tb2RlW107CgoKCgoKCmV4 dGVybiBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlX2Zvcl9zaXplICh1bnNpZ25lZCBpbnQsIGVudW0g bW9kZV9jbGFzcywgaW50KTsKCgoKCmV4dGVybiBlbnVtIG1hY2hpbmVfbW9kZSBzbWFsbGVzdF9t b2RlX2Zvcl9zaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGlu dCwgZW51bSBtb2RlX2NsYXNzKTsKCgoKCgpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgaW50X21v ZGVfZm9yX21vZGUgKGVudW0gbWFjaGluZV9tb2RlKTsKCgoKZXh0ZXJuIGVudW0gbWFjaGluZV9t b2RlIGdldF9iZXN0X21vZGUgKGludCwgaW50LCB1bnNpZ25lZCBpbnQsIGVudW0gbWFjaGluZV9t b2RlLCBpbnQpOwoKCgoKZXh0ZXJuIHVuc2lnbmVkIGdldF9tb2RlX2FsaWdubWVudCAoZW51bSBt YWNoaW5lX21vZGUpOwoKCgoKCmV4dGVybiBjb25zdCBlbnVtIG1hY2hpbmVfbW9kZSBjbGFzc19u YXJyb3dlc3RfbW9kZVtdOwoKCgoKCmV4dGVybiBlbnVtIG1hY2hpbmVfbW9kZSBieXRlX21vZGU7 CmV4dGVybiBlbnVtIG1hY2hpbmVfbW9kZSB3b3JkX21vZGU7CmV4dGVybiBlbnVtIG1hY2hpbmVf bW9kZSBwdHJfbW9kZTsKIyA0MCAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy9saWJnY2MyLmMiIDIK CgoKCgoKIyAxICIuLi8uLi9nY2MtMjAwMTEyMDMvZ2NjL2xpYmdjYzIuaCIgMQojIDI1ICIuLi8u Li9nY2MtMjAwMTEyMDMvZ2NjL2xpYmdjYzIuaCIKZXh0ZXJuIGludCBfX2djY19iY21wIChjb25z dCB1bnNpZ25lZCBjaGFyICosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJu IHZvaWQgX19jbGVhcl9jYWNoZSAoY2hhciAqLCBjaGFyICopOwpleHRlcm4gdm9pZCBfX2Vwcmlu dGYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIg KikKICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgpzdHJ1Y3QgYmI7CmV4dGVybiB2 b2lkIF9fYmJfZXhpdF9mdW5jICh2b2lkKTsKZXh0ZXJuIHZvaWQgX19iYl9pbml0X2Z1bmMgKHN0 cnVjdCBiYiAqKTsKZXh0ZXJuIHZvaWQgX19iYl9mb3JrX2Z1bmMgKHZvaWQpOwpleHRlcm4gdm9p ZCBfX2JiX3RyYWNlX2Z1bmMgKHZvaWQpOwpleHRlcm4gdm9pZCBfX2JiX3RyYWNlX3JldCAodm9p ZCk7CmV4dGVybiB2b2lkIF9fYmJfaW5pdF90cmFjZV9mdW5jIChzdHJ1Y3QgYmIgKiwgdW5zaWdu ZWQgbG9uZyk7CgpzdHJ1Y3QgZXhjZXB0aW9uX2Rlc2NyaXB0b3I7CmV4dGVybiBzaG9ydCBpbnQg X19nZXRfZWhfdGFibGVfbGFuZ3VhZ2UgKHN0cnVjdCBleGNlcHRpb25fZGVzY3JpcHRvciAqKTsK ZXh0ZXJuIHNob3J0IGludCBfX2dldF9laF90YWJsZV92ZXJzaW9uIChzdHJ1Y3QgZXhjZXB0aW9u X2Rlc2NyaXB0b3IgKik7CiMgNjcgIi4uLy4uL2djYy0yMDAxMTIwMy9nY2MvbGliZ2NjMi5oIgp0 eXBlZGVmIGludCBRSXR5cGUgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKFFJKSkpOwp0eXBlZGVmIHVu c2lnbmVkIGludCBVUUl0eXBlIF9fYXR0cmlidXRlX18gKChtb2RlIChRSSkpKTsKdHlwZWRlZiBp bnQgSEl0eXBlIF9fYXR0cmlidXRlX18gKChtb2RlIChISSkpKTsKdHlwZWRlZiB1bnNpZ25lZCBp bnQgVUhJdHlwZSBfX2F0dHJpYnV0ZV9fICgobW9kZSAoSEkpKSk7CgoKdHlwZWRlZiBpbnQgU0l0 eXBlIF9fYXR0cmlidXRlX18gKChtb2RlIChTSSkpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgVVNJ dHlwZSBfX2F0dHJpYnV0ZV9fICgobW9kZSAoU0kpKSk7CgoKdHlwZWRlZiBpbnQgREl0eXBlIF9f YXR0cmlidXRlX18gKChtb2RlIChESSkpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgVURJdHlwZSBf X2F0dHJpYnV0ZV9fICgobW9kZSAoREkpKSk7CiMgODkgIi4uLy4uL2djYy0yMDAxMTIwMy9nY2Mv bGliZ2NjMi5oIgp0eXBlZGVmIGZsb2F0IFNGdHlwZSBfX2F0dHJpYnV0ZV9fICgobW9kZSAoU0Yp KSk7CnR5cGVkZWYgZmxvYXQgREZ0eXBlIF9fYXR0cmlidXRlX18gKChtb2RlIChERikpKTsKIyAx MjIgIi4uLy4uL2djYy0yMDAxMTIwMy9nY2MvbGliZ2NjMi5oIgp0eXBlZGVmIGludCB3b3JkX3R5 cGUgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKF9fd29yZF9fKSkpOwojIDIxNCAiLi4vLi4vZ2NjLTIw MDExMjAzL2djYy9saWJnY2MyLmgiCmV4dGVybiBESXR5cGUgX19tdWxkaTMgKERJdHlwZSwgREl0 eXBlKTsKZXh0ZXJuIERJdHlwZSBfX2RpdmRpMyAoREl0eXBlLCBESXR5cGUpOwpleHRlcm4gVURJ dHlwZSBfX3VkaXZkaTMgKFVESXR5cGUsIFVESXR5cGUpOwpleHRlcm4gVURJdHlwZSBfX3Vtb2Rk aTMgKFVESXR5cGUsIFVESXR5cGUpOwpleHRlcm4gREl0eXBlIF9fbW9kZGkzIChESXR5cGUsIERJ dHlwZSk7CgoKCgpleHRlcm4gVURJdHlwZSBfX3VkaXZtb2RkaTQgKFVESXR5cGUsIFVESXR5cGUs IFVESXR5cGUgKik7CgoKCgpleHRlcm4gREl0eXBlIF9fbmVnZGkyIChESXR5cGUpOwoKCmV4dGVy biBESXR5cGUgX19sc2hyZGkzIChESXR5cGUsIHdvcmRfdHlwZSk7CmV4dGVybiBESXR5cGUgX19h c2hsZGkzIChESXR5cGUsIHdvcmRfdHlwZSk7CmV4dGVybiBESXR5cGUgX19hc2hyZGkzIChESXR5 cGUsIHdvcmRfdHlwZSk7CmV4dGVybiBESXR5cGUgX19mZnNkaTIgKERJdHlwZSk7CgoKCgpleHRl cm4gVVNJdHlwZSBfX3VkaXZfd19zZGl2IChVU0l0eXBlICosIFVTSXR5cGUsIFVTSXR5cGUsIFVT SXR5cGUpOwoKCmV4dGVybiB3b3JkX3R5cGUgX19jbXBkaTIgKERJdHlwZSwgREl0eXBlKTsKZXh0 ZXJuIHdvcmRfdHlwZSBfX3VjbXBkaTIgKERJdHlwZSwgREl0eXBlKTsKCmV4dGVybiBTSXR5cGUg X19hYnN2c2kyIChTSXR5cGUpOwpleHRlcm4gREl0eXBlIF9fYWJzdmRpMiAoREl0eXBlKTsKZXh0 ZXJuIFNJdHlwZSBfX2FkZHZzaTMgKFNJdHlwZSwgU0l0eXBlKTsKZXh0ZXJuIERJdHlwZSBfX2Fk ZHZkaTMgKERJdHlwZSwgREl0eXBlKTsKZXh0ZXJuIFNJdHlwZSBfX3N1YnZzaTMgKFNJdHlwZSwg U0l0eXBlKTsKZXh0ZXJuIERJdHlwZSBfX3N1YnZkaTMgKERJdHlwZSwgREl0eXBlKTsKZXh0ZXJu IFNJdHlwZSBfX211bHZzaTMgKFNJdHlwZSwgU0l0eXBlKTsKZXh0ZXJuIERJdHlwZSBfX211bHZk aTMgKERJdHlwZSwgREl0eXBlKTsKZXh0ZXJuIFNJdHlwZSBfX25lZ3ZzaTIgKFNJdHlwZSk7CmV4 dGVybiBESXR5cGUgX19uZWd2ZGkyIChESXR5cGUpOwoKCmV4dGVybiBESXR5cGUgX19maXhkZmRp IChERnR5cGUpOwpleHRlcm4gREl0eXBlIF9fZml4c2ZkaSAoU0Z0eXBlKTsKZXh0ZXJuIERGdHlw ZSBfX2Zsb2F0ZGlkZiAoREl0eXBlKTsKZXh0ZXJuIFNGdHlwZSBfX2Zsb2F0ZGlzZiAoREl0eXBl KTsKZXh0ZXJuIFVTSXR5cGUgX19maXh1bnNkZnNpIChERnR5cGUpOwpleHRlcm4gVVNJdHlwZSBf X2ZpeHVuc3Nmc2kgKFNGdHlwZSk7CmV4dGVybiBESXR5cGUgX19maXh1bnNkZmRpIChERnR5cGUp OwpleHRlcm4gREl0eXBlIF9fZml4dW5zc2ZkaSAoU0Z0eXBlKTsKIyAyODQgIi4uLy4uL2djYy0y MDAxMTIwMy9nY2MvbGliZ2NjMi5oIgogIHN0cnVjdCBEV3N0cnVjdCB7U0l0eXBlIGhpZ2gsIGxv dzt9OwojIDI5MyAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy9saWJnY2MyLmgiCnR5cGVkZWYgdW5p b24KewogIHN0cnVjdCBEV3N0cnVjdCBzOwogIERJdHlwZSBsbDsKfSBEV3VuaW9uOwoKIyAxICIu Li8uLi9nY2MtMjAwMTEyMDMvZ2NjL2xvbmdsb25nLmgiIDEKIyAxNDUwICIuLi8uLi9nY2MtMjAw MTEyMDMvZ2NjL2xvbmdsb25nLmgiCmV4dGVybiBjb25zdCBVUUl0eXBlIF9fY2x6X3RhYltdOwoj IDMwMCAiLi4vLi4vZ2NjLTIwMDExMjAzL2djYy9saWJnY2MyLmgiIDIKIyA0NyAiLi4vLi4vZ2Nj LTIwMDExMjAzL2djYy9saWJnY2MyLmMiIDIKIyAzNTMgIi4uLy4uL2djYy0yMDAxMTIwMy9nY2Mv bGliZ2NjMi5jIgpESXR5cGUKX19tdWxkaTMgKERJdHlwZSB1LCBESXR5cGUgdikKewogIERXdW5p b24gdzsKICBEV3VuaW9uIHV1LCB2djsKCiAgdXUubGwgPSB1LAogIHZ2LmxsID0gdjsKCiAgdy5s bCA9ICh7RFd1bmlvbiBfX3c7IF9fYXNtX18gKCJtdWx0dSAlMiwlMyIgOiAiPWwiICgoVVNJdHlw ZSkgKF9fdy5zLmxvdykpLCAiPWgiICgoVVNJdHlwZSkgKF9fdy5zLmhpZ2gpKSA6ICJkIiAoKFVT SXR5cGUpICh1dS5zLmxvdykpLCAiZCIgKChVU0l0eXBlKSAodnYucy5sb3cpKSk7IF9fdy5sbDsg fSk7CiAgdy5zLmhpZ2ggKz0gKChVU0l0eXBlKSB1dS5zLmxvdyAqIChVU0l0eXBlKSB2di5zLmhp Z2gKICAgICAgICAgICAgICAgKyAoVVNJdHlwZSkgdXUucy5oaWdoICogKFVTSXR5cGUpIHZ2LnMu bG93KTsKCiAgcmV0dXJuIHcubGw7Cn0K