From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yw1-x1132.google.com (mail-yw1-x1132.google.com [IPv6:2607:f8b0:4864:20::1132]) by sourceware.org (Postfix) with ESMTPS id A3AB93858427 for ; Mon, 31 Oct 2022 20:23:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A3AB93858427 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-367cd2807f2so118757497b3.1 for ; Mon, 31 Oct 2022 13:23:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=N0b2sc7G711PHC0ZihznGjZILYauDgMJN0FChRN1jzk=; b=K2AFqg5MaktC4ZvGUfPj5j91zVsuT6tSFWBMxKWY8IK7d1hoRox3E/CvdYqr87K6jV Ol+i8QXFaKVgf5KvSfgGmtu97x9QE8W/Bb8VDB7goGRqqjlmtd8POASCy9V3Qvwir7ps jTQbBYA5R/amNS81i1F3si7/emg2l/3vVmwUhNGPCE5udkVvolOc2GWI2Nh4jQKTr2ak dqywo2UC526kYnCRAa2ulxOXBa/3YWbllmJzGbaG03rZt1VadWvhDaTL1cflxm2JDa4d 53pfNH2KJLotnjr3g2ym0izfAv5Cfb98o2ARelt6KT5FtirTI/18A6ychmLLOE4CZDb9 tyWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=N0b2sc7G711PHC0ZihznGjZILYauDgMJN0FChRN1jzk=; b=nTnq7fmPisEWbXqc/KGYCmWlbNTESaGrL+quRfcI8HDf76s75erFI5UIgDO96gJnPf JKVs2S9Wanq/heRV3XGi6OsGhW1/cPdQYk2hw7WFX0Q6NhRInR/ExpyGPSllD7sBw6nI Vub0ii+X5bF+pndpWXSK1oEZWuPwFmuqf1Aw8QgLBSDP9PnVc7VAOGPLwrfOyie7jk6R cfVNNUROwyMHARvNI8u7f5Lg5dqbzUrzXQq1tYsXRXbTqI0tvFDNnvY/ZdhPwEHr+TNm /Hp+7SS9RZ1zwXfL/iq8l6ILg5K4wYRN1ALndvBGUCToJtcizIEoyZop/hcN2W6Q1Zar iQjw== X-Gm-Message-State: ACrzQf0e6xQqTqFlKBMNKOSnZUoHNpl8QPy2KXLB7RuY/pMyuCU8HQwz wzkpDFN5FvZHEb01eASqBA8pp102b1rZbyT1rXN65qWfiM0= X-Google-Smtp-Source: AMsMyM7/L9dP1PzIdExogBonOqlOCayf9bUkJBBq1buLA29cOGOwAPIbpqMoXJ/ZltEb8/h24fmAzYzEQ6v5QExsCOk= X-Received: by 2002:a81:6941:0:b0:36b:68cb:9b26 with SMTP id e62-20020a816941000000b0036b68cb9b26mr15060466ywc.504.1667247800677; Mon, 31 Oct 2022 13:23:20 -0700 (PDT) MIME-Version: 1.0 From: Max Filippov Date: Mon, 31 Oct 2022 13:23:09 -0700 Message-ID: Subject: out-of-bounds heap access in IRA To: gcc@gcc.gnu.org Content-Type: multipart/mixed; boundary="000000000000e9c3cd05ec5a607e" X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,FROM_LOCAL_NOVOWEL,GIT_PATCH_0,HK_RANDOM_ENVFROM,HK_RANDOM_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000e9c3cd05ec5a607e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, I've been playing with a cross-compiler built with ASAN for target=3Dxtensa-linux-uclibc and I was consistently getting a report for out-of-bound heap access inside IRA. I was able to get the same report for target=3Dmicroblazeel-linux-gnu so it does not look entirely target-specific. I also tried earlier gcc releases and the issue can be reproduced as early as with gcc-7.1.0 (I had build issues with earlier versions). AFAICS inside the functions update_costs_from_allocno and assign_hard_reg the macro ALLOCNO_COLOR_DATA may be applied to objects of type 'struct ira_allocno' whose add_data field wasn't changed in the function color_pass to point to a memory area sized for struct allocno_color_data. The following change helps exhibit this issue without ASAN: diff --git a/gcc/ira-color.cc b/gcc/ira-color.cc index 4a1a325e8e31..8feacf91ff81 100644 --- a/gcc/ira-color.cc +++ b/gcc/ira-color.cc @@ -167,7 +167,7 @@ typedef struct allocno_color_data *allocno_color_data_t= ; static allocno_color_data_t allocno_color_data; /* Macro to access the data concerning coloring. */ -#define ALLOCNO_COLOR_DATA(a) ((allocno_color_data_t) ALLOCNO_ADD_DATA (a)= ) +#define ALLOCNO_COLOR_DATA(a) (ira_assert (a->data_is_color), (allocno_color_data_t) ALLOCNO_ADD_DATA (a)) /* Used for finding allocno colorability to exclude repeated allocno processing and for updating preferencing to exclude repeated @@ -3621,6 +3621,7 @@ color_pass (ira_loop_tree_node_t loop_tree_node) { a =3D ira_allocnos[j]; ALLOCNO_ADD_DATA (a) =3D allocno_color_data + n; + a->data_is_color =3D true; n++; } init_allocno_threads (); @@ -3749,6 +3750,7 @@ color_pass (ira_loop_tree_node_t loop_tree_node) { a =3D ira_allocnos[j]; ALLOCNO_ADD_DATA (a) =3D NULL; + a->data_is_color =3D false; } } diff --git a/gcc/ira-int.h b/gcc/ira-int.h index f42a314fa7f4..a5d8d70f368c 100644 --- a/gcc/ira-int.h +++ b/gcc/ira-int.h @@ -416,6 +416,7 @@ struct ira_allocno /* Different additional data. It is used to decrease size of allocno data footprint. */ void *add_data; + bool data_is_color; }; The attached source triggers the above assertion in a compiler built from revision gcc-13-3563-gf36bba013361 for target=3Dmicroblazeel-linux-gnu: $ gcc/cc1 -O2 _gcov.i ../../../../gcc/libgcc/libgcov-driver.c: In function =E2=80=98gcov_do_dump.= constprop=E2=80=99: ../../../../gcc/libgcc/libgcov-driver.c:704:1: internal compiler error: in assign_hard_reg, at ira-color.cc:2006 --=20 Thanks. -- Max --000000000000e9c3cd05ec5a607e Content-Type: application/octet-stream; name="_gcov.i" Content-Disposition: attachment; filename="_gcov.i" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l9x83b9v0 IyAwICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVyLmMiCiMgMSAiL2hvbWUv amNtdmJrYmMvd3MvdGVuc2lsaWNhL2djYy9idWlsZHMvXy9taWNyb2JsYXplZWwtYnVpbGRyb290 LWxpbnV4LWdudS9saWJnY2MvLyIKIyAwICI8YnVpbHQtaW4+IgojIDAgIjxjb21tYW5kLWxpbmU+ IgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9i bGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL3N0ZGMtcHJlZGVmLmgiIDEgMyA0CiMgMCAiPGNvbW1hbmQtbGlu ZT4iIDIKIyAxICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVyLmMiCiMgMjYg Ii4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXIuYyIKIyAxICIuLi8uLi8uLi8u Li9nY2MvbGliZ2NjL2xpYmdjb3YuaCIgMQojIDQwICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xp Ymdjb3YuaCIKIyAxICIuLi8uLi8uL2djYy90Y29uZmlnLmgiIDEKCgoKCgojIDEgIi4uLy4uLy4v Z2NjL2F1dG8taG9zdC5oIiAxCiMgNyAiLi4vLi4vLi9nY2MvdGNvbmZpZy5oIiAyCgojIDEgIi4u Ly4uLy4uLy4uL2djYy9saWJnY2MvLi4vaW5jbHVkZS9hbnNpZGVjbC5oIiAxCiMgOSAiLi4vLi4v Li9nY2MvdGNvbmZpZy5oIiAyCiMgNDEgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi5o IiAyCiMgMSAiLi9hdXRvLXRhcmdldC5oIiAxCiMgNDIgIi4uLy4uLy4uLy4uL2djYy9saWJnY2Mv bGliZ2Nvdi5oIiAyCiMgMSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvdHN5c3RlbS5o IiAxCiMgNDQgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL3RzeXN0ZW0uaCIKIyAxICIv aG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvZ2NjL2J1aWxkcy9fL2djYy9pbmNsdWRlL3N0ZGRl Zi5oIiAxIDMgNAojIDE0NSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2djYy9idWlsZHMv Xy9nY2MvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CgojIDE0NSAiL2hvbWUvamNtdmJrYmMvd3MvdGVu c2lsaWNhL2djYy9idWlsZHMvXy9nY2MvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CnR5cGVkZWYgaW50 IHB0cmRpZmZfdDsKIyAyMTQgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9nY2MvYnVpbGRz L18vZ2NjL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7 CiMgMzI5ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvZ2NjL2J1aWxkcy9fL2djYy9pbmNs dWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiBpbnQgd2NoYXJfdDsKIyA0MjUgIi9ob21lL2pjbXZi a2JjL3dzL3RlbnNpbGljYS9nY2MvYnVpbGRzL18vZ2NjL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0 eXBlZGVmIHN0cnVjdCB7CiAgbG9uZyBsb25nIF9fbWF4X2FsaWduX2xsIF9fYXR0cmlidXRlX18o KF9fYWxpZ25lZF9fKF9fYWxpZ25vZl9fKGxvbmcgbG9uZykpKSk7CiAgbG9uZyBkb3VibGUgX19t YXhfYWxpZ25fbGQgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oX19hbGlnbm9mX18obG9uZyBk b3VibGUpKSkpOwojIDQzNiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2djYy9idWlsZHMv Xy9nY2MvaW5jbHVkZS9zdGRkZWYuaCIgMyA0Cn0gbWF4X2FsaWduX3Q7CiMgNDUgIi4uLy4uLy4u Ly4uL2djYy9saWJnY2MvLi4vZ2NjL3RzeXN0ZW0uaCIgMgojIDEgIi9ob21lL2pjbXZia2JjL3dz L3RlbnNpbGljYS9nY2MvYnVpbGRzL18vZ2NjL2luY2x1ZGUvZmxvYXQuaCIgMSAzIDQKIyA0NiAi Li4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvdHN5c3RlbS5oIiAyCiMgODQgIi4uLy4uLy4u Ly4uL2djYy9saWJnY2MvLi4vZ2NjL3RzeXN0ZW0uaCIKIyAxICIvaG9tZS9qY212YmtiYy93cy90 ZW5zaWxpY2EvZ2NjL2J1aWxkcy9fL2djYy9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMgNAojIDQwICIv aG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvZ2NjL2J1aWxkcy9fL2djYy9pbmNsdWRlL3N0ZGFy Zy5oIiAzIDQKdHlwZWRlZiBfX2J1aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyAxMDMg Ii9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9nY2MvYnVpbGRzL18vZ2NjL2luY2x1ZGUvc3Rk YXJnLmgiIDMgNAp0eXBlZGVmIF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CiMgODUgIi4uLy4uLy4u Ly4uL2djYy9saWJnY2MvLi4vZ2NjL3RzeXN0ZW0uaCIgMgoKCiMgMSAiL2hvbWUvamNtdmJrYmMv d3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0 L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3Rk aW8uaCIgMSAzIDQKIyAyNyAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9i dWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3Qt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CiMgMSAiL2hvbWUvamNt dmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVz dC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvYml0cy9saWJjLWhlYWRlci1zdGFydC5oIiAxIDMgNAojIDMzICIvaG9tZS9qY212YmtiYy93 cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3Qv bWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRz L2xpYmMtaGVhZGVyLXN0YXJ0LmgiIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGlj YS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXpl ZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEg MyA0CiMgMzkyICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1p Y3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKIyAxICIvaG9tZS9qY212Ymti Yy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hv c3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9m ZWF0dXJlcy10aW1lNjQuaCIgMSAzIDQKIyAyMCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNh L2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVl bC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmVhdHVyZXMtdGltZTY0 LmgiIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQt bWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAyMSAiL2hv bWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEu MTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvZmVhdHVyZXMtdGltZTY0LmgiIDIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3Mv dGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21p Y3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90 aW1lc2l6ZS5oIiAxIDMgNAojIDE5ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRy b290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxk cm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3RpbWVzaXplLmgiIDMgNAoj IDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6 ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAyMCAiL2hvbWUvamNtdmJr YmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9o b3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv Yml0cy90aW1lc2l6ZS5oIiAyIDMgNAojIDIyICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2Ev YnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVs LWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9mZWF0dXJlcy10aW1lNjQu aCIgMiAzIDQKIyAzOTMgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVp bGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMyA0CiMgNDg4ICIvaG9t ZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4x MS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2Ev YnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVs LWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAz IDQKIyA0OTkgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWlj cm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKIyAxICIvaG9tZS9qY212Ymti Yy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hv c3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9i aXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgNTAwICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2Ev YnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVs LWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMiAz IDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3Jv YmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2xvbmctZG91YmxlLmgiIDEgMyA0CiMgNTAxICIvaG9t ZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4x MS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9zeXMvY2RlZnMuaCIgMiAzIDQKIyA0ODkgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgi IDIgMyA0CiMgNTEyICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxk LW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKIyAxICIvaG9tZS9qY212 YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0 L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9nbnUvc3R1YnMuaCIgMSAzIDQKIyA1MTMgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9i dWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwt YnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMyA0 CiMgMzQgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9i bGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2JpdHMvbGliYy1oZWFkZXItc3RhcnQuaCIgMiAzIDQKIyAyOCAi L2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIw MjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3Rl bnNpbGljYS9nY2MvYnVpbGRzL18vZ2NjL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzQgIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMu aCIgMSAzIDQKIyAyNyAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWls ZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGlu dXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzIDQKIyAxICIvaG9tZS9q Y212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10 ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgMjggIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMu aCIgMiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxk LW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3RpbWVzaXplLmgiIDEgMyA0CiMgMTkgIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL2JpdHMvdGltZXNpemUuaCIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVu c2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3Jv YmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy93b3Jk c2l6ZS5oIiAxIDMgNAojIDIwICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290 L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9v dC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3RpbWVzaXplLmgiIDIgMyA0CiMg MjkgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6 ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzIDQKCgp0eXBlZGVmIHVuc2lnbmVkIGNo YXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdV9zaG9ydDsKdHlwZWRl ZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3VfbG9u ZzsKCgp0eXBlZGVmIHNpZ25lZCBjaGFyIF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIg X191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVu c2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90 Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpbnQzMl90OwoKCgoKX19leHRlbnNpb25fXyB0eXBl ZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVm IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50NjRfdDsKCgoKdHlwZWRlZiBfX2ludDhfdCBf X2ludF9sZWFzdDhfdDsKdHlwZWRlZiBfX3VpbnQ4X3QgX191aW50X2xlYXN0OF90Owp0eXBlZGVm IF9faW50MTZfdCBfX2ludF9sZWFzdDE2X3Q7CnR5cGVkZWYgX191aW50MTZfdCBfX3VpbnRfbGVh c3QxNl90Owp0eXBlZGVmIF9faW50MzJfdCBfX2ludF9sZWFzdDMyX3Q7CnR5cGVkZWYgX191aW50 MzJfdCBfX3VpbnRfbGVhc3QzMl90Owp0eXBlZGVmIF9faW50NjRfdCBfX2ludF9sZWFzdDY0X3Q7 CnR5cGVkZWYgX191aW50NjRfdCBfX3VpbnRfbGVhc3Q2NF90OwoKCgoKCgpfX2V4dGVuc2lvbl9f IHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVu c2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKCgoKCgoKCl9fZXh0ZW5zaW9uX18gdHlw ZWRlZiBsb25nIGxvbmcgaW50IF9faW50bWF4X3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNp Z25lZCBsb25nIGxvbmcgaW50IF9fdWludG1heF90OwojIDE0MSAiL2hvbWUvamNtdmJrYmMvd3Mv dGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21p Y3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90 eXBlcy5oIiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1 aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzaXplcy5oIiAxIDMgNAojIDE0 MiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXpl LTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dz L3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9t aWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMv dGltZTY0LmgiIDEgMyA0CiMgMTQzICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRy b290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxk cm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMyA0CgoK X19leHRlbnNpb25fXyB0eXBlZGVmIF9fdWludDY0X3QgX19kZXZfdDsKX19leHRlbnNpb25fXyB0 eXBlZGVmIHVuc2lnbmVkIGludCBfX3VpZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWdu ZWQgaW50IF9fZ2lkX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBf X2lub190OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgX191aW50NjRfdCBfX2lubzY0X3Q7Cl9fZXh0 ZW5zaW9uX18gdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19tb2RlX3Q7Cl9fZXh0ZW5zaW9uX18gdHlw ZWRlZiB1bnNpZ25lZCBpbnQgX19ubGlua190OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBp bnQgX19vZmZfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIF9faW50NjRfdCBfX29mZjY0X3Q7Cl9f ZXh0ZW5zaW9uX18gdHlwZWRlZiBpbnQgX19waWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHN0 cnVjdCB7IGludCBfX3ZhbFsyXTsgfSBfX2ZzaWRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxv bmcgaW50IF9fY2xvY2tfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50 IF9fcmxpbV90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgX191aW50NjRfdCBfX3JsaW02NF90Owpf X2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgaW50IF9faWRfdDsKX19leHRlbnNpb25fXyB0 eXBlZGVmIGxvbmcgaW50IF9fdGltZV90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQg aW50IF9fdXNlY29uZHNfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNv bmRzX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBfX2ludDY0X3QgX19zdXNlY29uZHM2NF90OwoK X19leHRlbnNpb25fXyB0eXBlZGVmIGludCBfX2RhZGRyX3Q7Cl9fZXh0ZW5zaW9uX18gdHlwZWRl ZiBpbnQgX19rZXlfdDsKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoK Cl9fZXh0ZW5zaW9uX18gdHlwZWRlZiB2b2lkICogX190aW1lcl90OwoKCl9fZXh0ZW5zaW9uX18g dHlwZWRlZiBsb25nIGludCBfX2Jsa3NpemVfdDsKCgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBs b25nIGludCBfX2Jsa2NudF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgX19pbnQ2NF90IF9fYmxr Y250NjRfdDsKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19mc2Js a2NudF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgX191aW50NjRfdCBfX2ZzYmxrY250NjRfdDsK CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19mc2ZpbGNudF90Owpf X2V4dGVuc2lvbl9fIHR5cGVkZWYgX191aW50NjRfdCBfX2ZzZmlsY250NjRfdDsKCgpfX2V4dGVu c2lvbl9fIHR5cGVkZWYgaW50IF9fZnN3b3JkX3Q7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50 IF9fc3NpemVfdDsKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBpbnQgX19zeXNjYWxsX3Ns b25nX3Q7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19zeXNjYWxs X3Vsb25nX3Q7CgoKCnR5cGVkZWYgX19vZmY2NF90IF9fbG9mZl90Owp0eXBlZGVmIGNoYXIgKl9f Y2FkZHJfdDsKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgaW50IF9faW50cHRyX3Q7CgoKX19leHRl bnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2tsZW5fdDsKCgoKCnR5cGVkZWYgaW50 IF9fc2lnX2F0b21pY190OwoKCgoKCgoKX19leHRlbnNpb25fXyB0eXBlZGVmIF9faW50NjRfdCBf X3RpbWU2NF90OwojIDM5ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1 aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAojIDEgIi9ob21lL2pj bXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRl c3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL2JpdHMvdHlwZXMvX19mcG9zX3QuaCIgMSAzIDQKCgoKCiMgMSAiL2hvbWUvamNtdmJrYmMv d3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0 L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0 cy90eXBlcy9fX21ic3RhdGVfdC5oIiAxIDMgNAojIDEzICIvaG9tZS9qY212YmtiYy93cy90ZW5z aWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9i bGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVz L19fbWJzdGF0ZV90LmgiIDMgNAp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291bnQ7CiAgdW5p b24KICB7CiAgICB1bnNpZ25lZCBpbnQgX193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9IF9f dmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMgNiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1 aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1i dWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9fX2Zwb3Nf dC5oIiAyIDMgNAoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0dfZnBvc190CnsKICBfX29mZl90IF9fcG9z OwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX19mcG9zX3Q7CiMgNDAgIi9ob21lL2pjbXZia2Jj L3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9z dC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9i dWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3Qt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9fX2Zwb3M2NF90LmgiIDEg MyA0CiMgMTAgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWlj cm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvX19mcG9zNjRfdC5oIiAzIDQKdHlwZWRl ZiBzdHJ1Y3QgX0dfZnBvczY0X3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVfdCBf X3N0YXRlOwp9IF9fZnBvczY0X3Q7CiMgNDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9i dWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwt YnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMg MSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXpl LTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9fX0ZJTEUuaCIgMSAzIDQKCgoKc3RydWN0IF9JT19G SUxFOwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7CiMgNDIgIi9ob21lL2pjbXZia2Jj L3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9z dC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9i dWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3Qt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9GSUxFLmgiIDEgMyA0CgoK CnN0cnVjdCBfSU9fRklMRTsKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwojIDQzICIv aG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAy MS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGlj YS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXpl ZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvc3Ry dWN0X0ZJTEUuaCIgMSAzIDQKIyAzNSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxk cm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWls ZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9zdHJ1Y3RfRklM RS5oIiAzIDQKc3RydWN0IF9JT19GSUxFOwpzdHJ1Y3QgX0lPX21hcmtlcjsKc3RydWN0IF9JT19j b2RlY3Z0OwpzdHJ1Y3QgX0lPX3dpZGVfZGF0YTsKCgoKCnR5cGVkZWYgdm9pZCBfSU9fbG9ja190 OwoKCgoKCnN0cnVjdCBfSU9fRklMRQp7CiAgaW50IF9mbGFnczsKCgogIGNoYXIgKl9JT19yZWFk X3B0cjsKICBjaGFyICpfSU9fcmVhZF9lbmQ7CiAgY2hhciAqX0lPX3JlYWRfYmFzZTsKICBjaGFy ICpfSU9fd3JpdGVfYmFzZTsKICBjaGFyICpfSU9fd3JpdGVfcHRyOwogIGNoYXIgKl9JT193cml0 ZV9lbmQ7CiAgY2hhciAqX0lPX2J1Zl9iYXNlOwogIGNoYXIgKl9JT19idWZfZW5kOwoKCiAgY2hh ciAqX0lPX3NhdmVfYmFzZTsKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7CiAgY2hhciAqX0lPX3Nh dmVfZW5kOwoKICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBfSU9fRklM RSAqX2NoYWluOwoKICBpbnQgX2ZpbGVubzsKICBpbnQgX2ZsYWdzMjsKICBfX29mZl90IF9vbGRf b2Zmc2V0OwoKCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNoYXIgX3Z0 YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgogIF9JT19sb2NrX3QgKl9sb2NrOwoK CgoKCgoKICBfX29mZjY0X3QgX29mZnNldDsKCiAgc3RydWN0IF9JT19jb2RlY3Z0ICpfY29kZWN2 dDsKICBzdHJ1Y3QgX0lPX3dpZGVfZGF0YSAqX3dpZGVfZGF0YTsKICBzdHJ1Y3QgX0lPX0ZJTEUg Kl9mcmVlcmVzX2xpc3Q7CiAgdm9pZCAqX2ZyZWVyZXNfYnVmOwogIHNpemVfdCBfX3BhZDU7CiAg aW50IF9tb2RlOwoKICBjaGFyIF91bnVzZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gNCAqIHNpemVv ZiAodm9pZCAqKSAtIHNpemVvZiAoc2l6ZV90KV07Cn07CiMgNDQgIi9ob21lL2pjbXZia2JjL3dz L3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9t aWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlv LmgiIDIgMyA0CgoKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1 aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL2Nvb2tpZV9pb19mdW5jdGlv bnNfdC5oIiAxIDMgNAojIDI3ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290 L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9v dC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL2Nvb2tpZV9pb19mdW5j dGlvbnNfdC5oIiAzIDQKdHlwZWRlZiBfX3NzaXplX3QgY29va2llX3JlYWRfZnVuY3Rpb25fdCAo dm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplX3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlwZWRlZiBfX3NzaXplX3Qg Y29va2llX3dyaXRlX2Z1bmN0aW9uX3QgKHZvaWQgKl9fY29va2llLCBjb25zdCBjaGFyICpfX2J1 ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25i eXRlcyk7CgoKCgoKCgp0eXBlZGVmIGludCBjb29raWVfc2Vla19mdW5jdGlvbl90ICh2b2lkICpf X2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50IF9fdyk7CgoKdHlwZWRlZiBpbnQgY29va2ll X2Nsb3NlX2Z1bmN0aW9uX3QgKHZvaWQgKl9fY29va2llKTsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3Qg X0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdAp7CiAgY29va2llX3JlYWRfZnVuY3Rpb25fdCAqcmVh ZDsKICBjb29raWVfd3JpdGVfZnVuY3Rpb25fdCAqd3JpdGU7CiAgY29va2llX3NlZWtfZnVuY3Rp b25fdCAqc2VlazsKICBjb29raWVfY2xvc2VfZnVuY3Rpb25fdCAqY2xvc2U7Cn0gY29va2llX2lv X2Z1bmN0aW9uc190OwojIDQ3ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290 L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9v dC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAojIDY1ICIvaG9t ZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4x MS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9zdGRpby5oIiAzIDQKdHlwZWRlZiBfX29mZjY0X3Qgb2ZmX3Q7CgoKCgp0eXBlZGVm IF9fb2ZmNjRfdCBvZmY2NF90OwoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90OwojIDg2 ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKdHlwZWRlZiBfX2Zwb3M2NF90IGZwb3NfdDsKCgp0 eXBlZGVmIF9fZnBvczY0X3QgZnBvczY0X3Q7CiMgMTMzICIvaG9tZS9qY212YmtiYy93cy90ZW5z aWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9i bGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAz IDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3Jv YmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMgNAojIDEzNCAiL2hvbWUv amNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEt dGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgoKZXh0ZXJuIEZJTEUgKnN0ZGluOwpleHRlcm4gRklMRSAq c3Rkb3V0OwpleHRlcm4gRklMRSAqc3RkZXJyOwoKCgoKCgpleHRlcm4gaW50IHJlbW92ZSAoY29u c3QgY2hhciAqX19maWxlbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKCmV4dGVybiBpbnQgcmVuYW1lIChjb25zdCBjaGFyICpfX29sZCwgY29uc3QgY2hhciAq X19uZXcpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVy biBpbnQgcmVuYW1lYXQgKGludCBfX29sZGZkLCBjb25zdCBjaGFyICpfX29sZCwgaW50IF9fbmV3 ZmQsCiAgICAgICBjb25zdCBjaGFyICpfX25ldykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKIyAxNjQgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJv b3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRy b290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50 IHJlbmFtZWF0MiAoaW50IF9fb2xkZmQsIGNvbnN0IGNoYXIgKl9fb2xkLCBpbnQgX19uZXdmZCwK ICAgICAgICBjb25zdCBjaGFyICpfX25ldywgdW5zaWduZWQgaW50IF9fZmxhZ3MpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCmV4dGVybiBpbnQgZmNsb3Nl IChGSUxFICpfX3N0cmVhbSk7CiMgMTg2ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVp bGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1 aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJu IEZJTEUgKnRtcGZpbGUgKHZvaWQpIF9fYXNtX18gKCIiICJ0bXBmaWxlNjQiKQogIF9fYXR0cmli dXRlX18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18gKGZjbG9zZSwg MSkpKSA7CgoKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlNjQgKHZvaWQpCiAgIF9fYXR0cmlidXRl X18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18gKGZjbG9zZSwgMSkp KSA7CgoKCmV4dGVybiBjaGFyICp0bXBuYW0gKGNoYXJbMjBdKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgoKCmV4dGVybiBjaGFyICp0bXBuYW1fciAoY2hhciBf X3NbMjBdKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKIyAyMTYg Ii9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0y MDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gY2hhciAqdGVtcG5hbSAoY29uc3QgY2hh ciAqX19kaXIsIGNvbnN0IGNoYXIgKl9fcGZ4KQogICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbWFsbG9jX18gKF9fYnVpbHRpbl9mcmVlLCAxKSkpOwoKCgoKCgpleHRlcm4gaW50IGZm bHVzaCAoRklMRSAqX19zdHJlYW0pOwojIDIzMyAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNh L2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVl bC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4 dGVybiBpbnQgZmZsdXNoX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CiMgMjQzICIvaG9tZS9q Y212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10 ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBmY2xvc2VhbGwgKHZvaWQpOwojIDI2NCAiL2hv bWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEu MTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBGSUxFICpmb3BlbiAoY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX2ZpbGVuYW1lLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpIF9fYXNt X18gKCIiICJmb3BlbjY0IikKCiAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJp YnV0ZV9fICgoX19tYWxsb2NfXyAoZmNsb3NlLCAxKSkpIDsKZXh0ZXJuIEZJTEUgKmZyZW9wZW4g KGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlbmFtZSwgY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX21vZGVzLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSBfX2FzbV9fICgiIiAiZnJlb3Bl bjY0IikKCgogIDsKCgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuNjQgKGNvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19maWxlbmFtZSwKICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMp CiAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2Nf XyAoZmNsb3NlLCAxKSkpIDsKZXh0ZXJuIEZJTEUgKmZyZW9wZW42NCAoY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX2ZpbGVuYW1lLAogICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAg IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBGSUxFICpmZG9wZW4gKGlu dCBfX2ZkLCBjb25zdCBjaGFyICpfX21vZGVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpCiAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19tYWxsb2NfXyAoZmNsb3NlLCAxKSkpIDsKCgoKCgpleHRlcm4gRklMRSAqZm9wZW5jb29r aWUgKHZvaWQgKl9fcmVzdHJpY3QgX19tYWdpY19jb29raWUsCiAgICAgY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX21vZGVzLAogICAgIGNvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2lvX2Z1bmNzKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpCiAgX19hdHRyaWJ1dGVfXyAo KF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXyAoZmNsb3NlLCAxKSkpIDsK CgoKCmV4dGVybiBGSUxFICpmbWVtb3BlbiAodm9pZCAqX19zLCBzaXplX3QgX19sZW4sIGNvbnN0 IGNoYXIgKl9fbW9kZXMpCiAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f IChmY2xvc2UsIDEpKSkgOwoKCgoKZXh0ZXJuIEZJTEUgKm9wZW5fbWVtc3RyZWFtIChjaGFyICoq X19idWZsb2MsIHNpemVfdCAqX19zaXplbG9jKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpCiAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19tYWxsb2NfXyAoZmNsb3NlLCAxKSkpIDsKIyAzMjIgIi9ob21lL2pjbXZia2JjL3dzL3Rl bnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNy b2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlvLmgi IDMgNApleHRlcm4gdm9pZCBzZXRidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIg Kl9fcmVzdHJpY3QgX19idWYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hh ciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgaW50IF9fbW9kZXMsIHNpemVfdCBfX24pIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gdm9pZCBzZXRi dWZmZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs CiAgICAgICAgIHNpemVfdCBfX3NpemUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7CgoKZXh0ZXJuIHZvaWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCgpleHRlcm4gaW50IGZw cmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgIGNvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19mb3JtYXQsIC4uLik7CgoKCgpleHRlcm4gaW50IHByaW50ZiAoY29uc3QgY2hhciAq X19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKTsKCmV4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqX19y ZXN0cmljdCBfX3MsCiAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7CgoKCgoKZXh0ZXJuIGludCB2ZnByaW50ZiAo RklMRSAqX19yZXN0cmljdCBfX3MsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAg ICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZyk7CgoKCgpleHRlcm4gaW50IHZwcmludGYgKGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKTsKCmV4dGVy biBpbnQgdnNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fZm9ybWF0LAogICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXykpOwoKCgpleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0 IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zv cm1hdCwgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRl X18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCB2c25wcmlu dGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f cHJpbnRmX18sIDMsIDApKSk7CgoKCgoKZXh0ZXJuIGludCB2YXNwcmludGYgKGNoYXIgKipfX3Jl c3RyaWN0IF9fcHRyLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZiwKICAgICAgICBfX2dudWNf dmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJp YnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKSA7CmV4dGVybiBpbnQgX19h c3ByaW50ZiAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCiAgICAgICAgIGNvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBf X2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKSA7CmV4dGVybiBp bnQgYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgY29uc3QgY2hhciAq X19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp IF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpIDsKCgoKCmV4 dGVybiBpbnQgdmRwcmludGYgKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10 LAogICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9y bWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgZHByaW50ZiAoaW50IF9fZmQs IGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgo X19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgoKCgoKCmV4dGVybiBpbnQgZnNjYW5m IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19mb3JtYXQsIC4uLikgOwoKCgoKZXh0ZXJuIGludCBzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX2Zvcm1hdCwgLi4uKSA7CgpleHRlcm4gaW50IHNzY2FuZiAoY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX3MsCiAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCiMgMSAiL2hvbWUv amNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEt dGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvYml0cy9mbG9hdG4uaCIgMSAzIDQKIyA1MiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2ls aWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxh emVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9mbG9hdG4u aCIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2djYy9idWlsZHMvXy9nY2Mv aW5jbHVkZS1maXhlZC9iaXRzL2Zsb2F0bi1jb21tb24uaCIgMSAzIDQKIyAzMyAiL2hvbWUvamNt dmJrYmMvd3MvdGVuc2lsaWNhL2djYy9idWlsZHMvXy9nY2MvaW5jbHVkZS1maXhlZC9iaXRzL2Zs b2F0bi1jb21tb24uaCIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxk cm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWls ZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9sb25nLWRvdWJsZS5oIiAx IDMgNAojIDM0ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvZ2NjL2J1aWxkcy9fL2djYy9p bmNsdWRlLWZpeGVkL2JpdHMvZmxvYXRuLWNvbW1vbi5oIiAyIDMgNAojIDUzICIvaG9tZS9qY212 YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0 L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9iaXRzL2Zsb2F0bi5oIiAyIDMgNAojIDQyNSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNh L2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVl bC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQK CgoKZXh0ZXJuIGludCBmc2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgX19hc21fXyAoIiIgIl9faXNvYzk5X2ZzY2Fu ZiIpCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4gaW50IHNjYW5mIChj b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIF9fYXNtX18gKCIiICJfX2lzb2M5 OV9zY2FuZiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIGludCBzc2Nh bmYgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f Zm9ybWF0LCAuLi4pIF9fYXNtX18gKCIiICJfX2lzb2M5OV9zc2NhbmYiKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpCgogICAgICAgICAgICAgICAgICAgICAgOwojIDQ1 MyAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXpl LTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgdmZzY2FuZiAoRklMRSAqX19y ZXN0cmljdCBfX3MsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgIF9fZ251 Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5m X18sIDIsIDApKSkgOwoKCgoKCmV4dGVybiBpbnQgdnNjYW5mIChjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgo X19mb3JtYXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpIDsKCgpleHRlcm4gaW50IHZzc2NhbmYgKGNv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f Zm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18s IDIsIDApKSk7CgoKCgoKZXh0ZXJuIGludCB2ZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fcywg Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIF9f YXNtX18gKCIiICJfX2lzb2M5OV92ZnNjYW5mIikKCgoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19m b3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpIDsKZXh0ZXJuIGludCB2c2NhbmYgKGNvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSBfX2FzbV9fICgi IiAiX19pc29jOTlfdnNjYW5mIikKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f c2NhbmZfXywgMSwgMCkpKSA7CmV4dGVybiBpbnQgdnNzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX3MsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0 IF9fYXJnKSBfX2FzbV9fICgiIiAiX19pc29jOTlfdnNzY2FuZiIpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkKCgoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRf XyAoX19zY2FuZl9fLCAyLCAwKSkpOwojIDUwNyAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNh L2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVl bC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4 dGVybiBpbnQgZmdldGMgKEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIGludCBnZXRjIChGSUxFICpf X3N0cmVhbSk7CgoKCgoKZXh0ZXJuIGludCBnZXRjaGFyICh2b2lkKTsKCgoKCgoKZXh0ZXJuIGlu dCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxv Y2tlZCAodm9pZCk7CiMgNTMyICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290 L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9v dC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBm Z2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pOwojIDU0MyAiL2hvbWUvamNtdmJrYmMvd3Mv dGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21p Y3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkaW8u aCIgMyA0CmV4dGVybiBpbnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJu IGludCBwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CgoKCgoKZXh0ZXJuIGludCBwdXRj aGFyIChpbnQgX19jKTsKIyA1NTkgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJv b3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRy b290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50 IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CgoKCgoKCgpleHRlcm4g aW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIGludCBw dXRjaGFyX3VubG9ja2VkIChpbnQgX19jKTsKCgoKCgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpf X3N0cmVhbSk7CgoKZXh0ZXJuIGludCBwdXR3IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSk7CgoK CgoKCgpleHRlcm4gY2hhciAqZmdldHMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLCBG SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKQogICAgIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19f IChfX3dyaXRlX29ubHlfXywgMSwgMikpKTsKIyA2MDkgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMg NApleHRlcm4gY2hhciAqZmdldHNfdW5sb2NrZWQgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQg X19uLAogICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICBfX2F0dHJpYnV0ZV9f ICgoX19hY2Nlc3NfXyAoX193cml0ZV9vbmx5X18sIDEsIDIpKSk7CiMgNjI2ICIvaG9tZS9qY212 YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0 L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9zdGRpby5oIiAzIDQKZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFyICoqX19yZXN0 cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jl c3RyaWN0IF9fbiwgaW50IF9fZGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAo Y2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCgoKCmV4dGVybiBfX3Nz aXplX3QgZ2V0bGluZSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKCgoKZXh0ZXJuIGludCBmcHV0 cyAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0p OwoKCgoKCmV4dGVybiBpbnQgcHV0cyAoY29uc3QgY2hhciAqX19zKTsKCgoKCgoKZXh0ZXJuIGlu dCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKCgoKCgoKZXh0ZXJuIHNpemVfdCBm cmVhZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgIHNpemVf dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBzaXplX3QgZndy aXRlIChjb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAg IHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKTsKIyA2ODUgIi9ob21lL2pjbXZia2Jj L3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9z dC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDMgNApleHRlcm4gaW50IGZwdXRzX3VubG9ja2VkIChjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fcywKICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSk7CiMgNjk2ICIvaG9tZS9q Y212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10 ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tlZCAodm9pZCAqX19y ZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAq X19yZXN0cmljdCBfX3N0cmVhbSkgOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoY29u c3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgIHNpemVf dCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwoKCgoKCgoKZXh0ZXJuIGludCBmc2Vl ayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2UpOwoKCgoKZXh0 ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIHZvaWQgcmV3 aW5kIChGSUxFICpfX3N0cmVhbSk7CiMgNzM4ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2Ev YnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVs LWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0 ZXJuIGludCBmc2Vla28gKEZJTEUgKl9fc3RyZWFtLCBfX29mZjY0X3QgX19vZmYsIGludCBfX3do ZW5jZSkgX19hc21fXyAoIiIgImZzZWVrbzY0IikKCiAgICAgICAgICAgICAgICAgIDsKZXh0ZXJu IF9fb2ZmNjRfdCBmdGVsbG8gKEZJTEUgKl9fc3RyZWFtKSBfX2FzbV9fICgiIiAiZnRlbGxvNjQi KTsKIyA3NjIgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWlj cm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZnZXRwb3MgKEZJ TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19yZXN0cmljdCBfX3BvcykgX19hc21f XyAoIiIgImZnZXRwb3M2NCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsKZXh0ZXJuIGludCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgY29uc3QgZnBvc190ICpf X3BvcykgX19hc21fXyAoIiIgImZzZXRwb3M2NCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCgoKCgpleHRlcm4gaW50IGZzZWVr bzY0IChGSUxFICpfX3N0cmVhbSwgX19vZmY2NF90IF9fb2ZmLCBpbnQgX193aGVuY2UpOwpleHRl cm4gX19vZmY2NF90IGZ0ZWxsbzY0IChGSUxFICpfX3N0cmVhbSkgOwpleHRlcm4gaW50IGZnZXRw b3M2NCAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgZnBvczY0X3QgKl9fcmVzdHJpY3QgX19w b3MpOwpleHRlcm4gaW50IGZzZXRwb3M2NCAoRklMRSAqX19zdHJlYW0sIGNvbnN0IGZwb3M2NF90 ICpfX3Bvcyk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxFICpfX3N0cmVhbSkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCmV4dGVybiBpbnQgZmVvZiAoRklM RSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoK ZXh0ZXJuIGludCBmZXJyb3IgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIDsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQgKEZJ TEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpl eHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQgKEZJ TEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsK CgoKCgoKCmV4dGVybiB2b2lkIHBlcnJvciAoY29uc3QgY2hhciAqX19zKTsKCgoKCmV4dGVybiBp bnQgZmlsZW5vIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSA7CgoKCgpleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJl YW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwojIDgxNyAiL2hv bWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEu MTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgcGNsb3NlIChGSUxFICpfX3N0cmVhbSk7 CgoKCgoKZXh0ZXJuIEZJTEUgKnBvcGVuIChjb25zdCBjaGFyICpfX2NvbW1hbmQsIGNvbnN0IGNo YXIgKl9fbW9kZXMpCiAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19tYWxsb2NfXyAocGNsb3NlLCAxKSkpIDsKCgoKCgoKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQg KGNoYXIgKl9fcykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKQogIF9f YXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3dyaXRlX29ubHlfXywgMSkpKTsKCgoKCgpleHRl cm4gY2hhciAqY3VzZXJpZCAoY2hhciAqX19zKQogIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19f IChfX3dyaXRlX29ubHlfXywgMSkpKTsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQg b2JzdGFja19wcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAg ICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9f LCAyLCAzKSkpOwpleHRlcm4gaW50IG9ic3RhY2tfdnByaW50ZiAoc3RydWN0IG9ic3RhY2sgKl9f cmVzdHJpY3QgX19vYnN0YWNrLAogICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h dCwKICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJncykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkp KTsKCgoKCgoKCmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBpbnQgZnRyeWxvY2tm aWxlIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSA7CgoKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDg3OSAiL2hvbWUvamNtdmJrYmMv d3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0 L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3Rk aW8uaCIgMyA0CmV4dGVybiBpbnQgX191ZmxvdyAoRklMRSAqKTsKZXh0ZXJuIGludCBfX292ZXJm bG93IChGSUxFICosIGludCk7CgoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9i dWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwt YnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMSAz IDQKIyAzOCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNy b2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzIDQKZXh0ZXJuIF9faW5saW5lIF9f YXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGludAp2cHJpbnRmIChjb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKewogIHJldHVybiB2ZnByaW50 ZiAoc3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0 ZV9fICgoX19nbnVfaW5saW5lX18pKSBpbnQKZ2V0Y2hhciAodm9pZCkKewogIHJldHVybiBnZXRj IChzdGRpbik7Cn0KCgoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5s aW5lX18pKSBpbnQKZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsKICByZXR1cm4gKF9fYnVp bHRpbl9leHBlY3QgKCgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19yZWFkX2Vu ZCksIDApID8gX191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5fSU9f cmVhZF9wdHIrKyk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251 X2lubGluZV9fKSkgaW50CmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsKICByZXR1cm4gKF9f YnVpbHRpbl9leHBlY3QgKCgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19yZWFk X2VuZCksIDApID8gX191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5f SU9fcmVhZF9wdHIrKyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251 X2lubGluZV9fKSkgaW50CmdldGNoYXJfdW5sb2NrZWQgKHZvaWQpCnsKICByZXR1cm4gKF9fYnVp bHRpbl9leHBlY3QgKCgoc3RkaW4pLT5fSU9fcmVhZF9wdHIgPj0gKHN0ZGluKS0+X0lPX3JlYWRf ZW5kKSwgMCkgPyBfX3VmbG93IChzdGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0ZGluKS0+ X0lPX3JlYWRfcHRyKyspOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9f Z251X2lubGluZV9fKSkgaW50CnB1dGNoYXIgKGludCBfX2MpCnsKICByZXR1cm4gcHV0YyAoX19j LCBzdGRvdXQpOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lu bGluZV9fKSkgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewog IHJldHVybiAoX19idWlsdGluX2V4cGVjdCAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0g KF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCksIDApID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1 bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9f d3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRl X18gKChfX2dudV9pbmxpbmVfXykpIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpf X3N0cmVhbSkKewogIHJldHVybiAoX19idWlsdGluX2V4cGVjdCAoKChfX3N0cmVhbSktPl9JT193 cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCksIDApID8gX19vdmVyZmxvdyAo X19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19z dHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKZXh0ZXJuIF9faW5saW5lIF9f YXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGludApwdXRjaGFyX3VubG9ja2VkIChpbnQg X19jKQp7CiAgcmV0dXJuIChfX2J1aWx0aW5fZXhwZWN0ICgoKHN0ZG91dCktPl9JT193cml0ZV9w dHIgPj0gKHN0ZG91dCktPl9JT193cml0ZV9lbmQpLCAwKSA/IF9fb3ZlcmZsb3cgKHN0ZG91dCwg KHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRvdXQpLT5fSU9f d3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRl X18gKChfX2dudV9pbmxpbmVfXykpIF9fc3NpemVfdApnZXRsaW5lIChjaGFyICoqX19saW5lcHRy LCBzaXplX3QgKl9fbiwgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gX19nZXRkZWxpbSAoX19s aW5lcHRyLCBfX24sICdcbicsIF9fc3RyZWFtKTsKfQoKCgoKCmV4dGVybiBfX2lubGluZSBfX2F0 dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBpbnQKX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBmZW9mX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVy biAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MDAxMCkgIT0gMCk7Cn0KCgpleHRlcm4gX19pbmxp bmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgaW50Cl9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkK ewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MDAyMCkgIT0gMCk7Cn0KIyA4ODYg Ii9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0y MDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgoKCgoKIyAxICIvaG9tZS9qY212YmtiYy93cy90 ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWlj cm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2Zs b2F0bi5oIiAxIDMgNAojIDg5MiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9v dC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJv b3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgoKCgojIDg4 ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy90c3lzdGVtLmgiIDIKCgojIDEgIi9ob21l L2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjEx LXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL3N5cy90eXBlcy5oIiAxIDMgNAojIDI3ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxp Y2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6 ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIg MyA0CgoKCgoKCnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOwp0eXBlZGVmIF9fdV9zaG9ydCB1X3No b3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7CnR5cGVkZWYgX191X2xvbmcgdV9sb25nOwp0eXBl ZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlwZWRlZiBfX3VfcXVhZF90IHVfcXVhZF90Owp0eXBlZGVm IF9fZnNpZF90IGZzaWRfdDsKCgp0eXBlZGVmIF9fbG9mZl90IGxvZmZfdDsKCgoKCgoKdHlwZWRl ZiBfX2lubzY0X3QgaW5vX3Q7CgoKCgp0eXBlZGVmIF9faW5vNjRfdCBpbm82NF90OwoKCgoKdHlw ZWRlZiBfX2Rldl90IGRldl90OwoKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwoKCgoKdHlwZWRl ZiBfX21vZGVfdCBtb2RlX3Q7CgoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190OwoKCgoKdHlw ZWRlZiBfX3VpZF90IHVpZF90OwojIDk3ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVp bGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1 aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5 cGVkZWYgX19waWRfdCBwaWRfdDsKCgoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwojIDExNCAiL2hv bWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEu MTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIF9fZGFkZHJfdCBkYWRkcl90Owp0eXBl ZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgoKCnR5cGVkZWYgX19rZXlfdCBrZXlfdDsKCgoKCiMg MSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXpl LTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9jbG9ja190LmgiIDEgMyA0CgoKCgoKCnR5cGVkZWYg X19jbG9ja190IGNsb2NrX3Q7CiMgMTI3ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVp bGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1 aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQK CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2Js YXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9jbG9ja2lkX3QuaCIgMSAzIDQKCgoKCgoKdHlw ZWRlZiBfX2Nsb2NraWRfdCBjbG9ja2lkX3Q7CiMgMTI5ICIvaG9tZS9qY212YmtiYy93cy90ZW5z aWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9i bGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMu aCIgMiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxk LW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL3RpbWVfdC5oIiAxIDMgNAojIDEw ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL3RpbWVfdC5oIiAzIDQKdHlwZWRlZiBfX3RpbWVfdCB0 aW1lX3Q7CiMgMTMwICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxk LW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKIyAxICIvaG9tZS9q Y212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10 ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9iaXRzL3R5cGVzL3RpbWVyX3QuaCIgMSAzIDQKCgoKCgoKdHlwZWRlZiBfX3RpbWVyX3Qg dGltZXJfdDsKIyAxMzEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVp bGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCgp0eXBlZGVm IF9fdXNlY29uZHNfdCB1c2Vjb25kc190OwoKCgp0eXBlZGVmIF9fc3VzZWNvbmRzX3Qgc3VzZWNv bmRzX3Q7CgoKCgoKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvZ2NjL2J1aWxkcy9f L2djYy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDE0NSAiL2hvbWUvamNtdmJrYmMvd3MvdGVu c2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3Jv YmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3R5cGVz LmgiIDIgMyA0CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5z aWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKCgoKCiMg MSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXpl LTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYml0cy9zdGRpbnQtaW50bi5oIiAxIDMgNAojIDI0ICIvaG9tZS9qY212 YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0 L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9iaXRzL3N0ZGludC1pbnRuLmgiIDMgNAp0eXBlZGVmIF9faW50OF90IGludDhfdDsKdHlwZWRl ZiBfX2ludDE2X3QgaW50MTZfdDsKdHlwZWRlZiBfX2ludDMyX3QgaW50MzJfdDsKdHlwZWRlZiBf X2ludDY0X3QgaW50NjRfdDsKIyAxNTYgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWls ZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVp bGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoK CnR5cGVkZWYgX191aW50OF90IHVfaW50OF90Owp0eXBlZGVmIF9fdWludDE2X3QgdV9pbnQxNl90 Owp0eXBlZGVmIF9fdWludDMyX3QgdV9pbnQzMl90Owp0eXBlZGVmIF9fdWludDY0X3QgdV9pbnQ2 NF90OwoKCnR5cGVkZWYgaW50IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChf X3dvcmRfXykpKTsKIyAxNzYgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3Qv YnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKIyAxICIvaG9t ZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4x MS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9lbmRpYW4uaCIgMSAzIDQKIyAyNCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNh L2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVl bC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMgNAoj IDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6 ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMyA0CiMgMzUgIi9ob21lL2pjbXZia2Jj L3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9z dC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Jp dHMvZW5kaWFuLmgiIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJv b3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRy b290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFubmVzcy5oIiAxIDMg NAojIDM2ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3Jv YmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2VuZGlhbi5oIiAyIDMgNAojIDI1ICIvaG9tZS9qY212 YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0 L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9lbmRpYW4uaCIgMiAzIDQKIyAzNSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxk cm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWls ZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDMgNAojIDEgIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL2JpdHMvYnl0ZXN3YXAuaCIgMSAzIDQKIyAzMyAiL2hvbWUvamNtdmJrYmMvd3Mv dGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21p Y3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9i eXRlc3dhcC5oIiAzIDQKc3RhdGljIF9faW5saW5lIF9fdWludDE2X3QKX19ic3dhcF8xNiAoX191 aW50MTZfdCBfX2JzeCkKewoKICByZXR1cm4gX19idWlsdGluX2Jzd2FwMTYgKF9fYnN4KTsKCgoK fQoKCgoKCgpzdGF0aWMgX19pbmxpbmUgX191aW50MzJfdApfX2Jzd2FwXzMyIChfX3VpbnQzMl90 IF9fYnN4KQp7CgogIHJldHVybiBfX2J1aWx0aW5fYnN3YXAzMiAoX19ic3gpOwoKCgp9CiMgNjkg Ii9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0y MDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL2JpdHMvYnl0ZXN3YXAuaCIgMyA0Cl9fZXh0ZW5zaW9uX18gc3RhdGljIF9f aW5saW5lIF9fdWludDY0X3QKX19ic3dhcF82NCAoX191aW50NjRfdCBfX2JzeCkKewoKICByZXR1 cm4gX19idWlsdGluX2Jzd2FwNjQgKF9fYnN4KTsKCgoKfQojIDM2ICIvaG9tZS9qY212YmtiYy93 cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3Qv bWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9lbmRp YW4uaCIgMiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1 aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3VpbnRuLWlkZW50aXR5LmgiIDEgMyA0 CiMgMzIgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9i bGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdWludG4taWRlbnRpdHkuaCIgMyA0CnN0YXRpYyBfX2lu bGluZSBfX3VpbnQxNl90Cl9fdWludDE2X2lkZW50aXR5IChfX3VpbnQxNl90IF9feCkKewogIHJl dHVybiBfX3g7Cn0KCnN0YXRpYyBfX2lubGluZSBfX3VpbnQzMl90Cl9fdWludDMyX2lkZW50aXR5 IChfX3VpbnQzMl90IF9feCkKewogIHJldHVybiBfX3g7Cn0KCnN0YXRpYyBfX2lubGluZSBfX3Vp bnQ2NF90Cl9fdWludDY0X2lkZW50aXR5IChfX3VpbnQ2NF90IF9feCkKewogIHJldHVybiBfX3g7 Cn0KIyAzNyAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNy b2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDIgMyA0CiMgMTc3ICIvaG9tZS9qY212Ymti Yy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hv c3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMiAzIDQKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWls ZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVp bGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzIDQK IyAzMCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2Js YXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93 cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3Qv bWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRz L3NlbGVjdC5oIiAxIDMgNAojIDMxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRy b290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxk cm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMyA0CgoK IyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxh emUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL3NpZ3NldF90LmgiIDEgMyA0CgoKCiMgMSAiL2hv bWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEu MTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvYml0cy90eXBlcy9fX3NpZ3NldF90LmgiIDEgMyA0CgoKCgp0eXBlZGVmIHN0cnVj dAp7CiAgdW5zaWduZWQgbG9uZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWdu ZWQgbG9uZyBpbnQpKSldOwp9IF9fc2lnc2V0X3Q7CiMgNSAiL2hvbWUvamNtdmJrYmMvd3MvdGVu c2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3Jv YmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBl cy9zaWdzZXRfdC5oIiAyIDMgNAoKCnR5cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKIyAzNCAi L2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIw MjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMgNAoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dz L3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9t aWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMv dHlwZXMvc3RydWN0X3RpbWV2YWwuaCIgMSAzIDQKCgoKCgoKCnN0cnVjdCB0aW1ldmFsCnsKCgoK CiAgX190aW1lX3QgdHZfc2VjOwogIF9fc3VzZWNvbmRzX3QgdHZfdXNlYzsKCn07CiMgMzggIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzIDQKCiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVu c2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3Jv YmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBl cy9zdHJ1Y3RfdGltZXNwZWMuaCIgMSAzIDQKIyAxMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2ls aWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxh emVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9z dHJ1Y3RfdGltZXNwZWMuaCIgMyA0CnN0cnVjdCB0aW1lc3BlYwp7CgoKCiAgX190aW1lX3QgdHZf c2VjOwoKCgoKICBfX3N5c2NhbGxfc2xvbmdfdCB0dl9uc2VjOwojIDMxICIvaG9tZS9qY212Ymti Yy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hv c3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9i aXRzL3R5cGVzL3N0cnVjdF90aW1lc3BlYy5oIiAzIDQKfTsKIyA0MCAiL2hvbWUvamNtdmJrYmMv d3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0 L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lz L3NlbGVjdC5oIiAyIDMgNAojIDQ5ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRy b290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxk cm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNAp0eXBl ZGVmIGxvbmcgaW50IF9fZmRfbWFzazsKIyA1OSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNh L2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVl bC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAz IDQKdHlwZWRlZiBzdHJ1Y3QKICB7CgoKCiAgICBfX2ZkX21hc2sgZmRzX2JpdHNbMTAyNCAvICg4 ICogKGludCkgc2l6ZW9mIChfX2ZkX21hc2spKV07CgoKCgoKICB9IGZkX3NldDsKCgoKCgoKdHlw ZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsKIyA5MSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNh L2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVl bC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAz IDQKCiMgMTAyICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1p Y3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNApleHRlcm4gaW50IHNlbGVj dCAoaW50IF9fbmZkcywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICBmZF9zZXQg Kl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRm ZHMsCiAgICAgc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QgX190aW1lb3V0KTsKIyAxMjcgIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CmV4dGVybiBpbnQgcHNlbGVjdCAoaW50IF9fbmZk cywgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fcmVhZGZkcywKICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0 IF9fd3JpdGVmZHMsCiAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAg Y29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0IF9fdGltZW91dCwKICAgICAgY29uc3Qg X19zaWdzZXRfdCAqX19yZXN0cmljdCBfX3NpZ21hc2spOwojIDE1MyAiL2hvbWUvamNtdmJrYmMv d3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0 L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lz L3NlbGVjdC5oIiAzIDQKCiMgMTgwICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRy b290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxk cm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKCgoK Cgp0eXBlZGVmIF9fYmxrc2l6ZV90IGJsa3NpemVfdDsKIyAyMDUgIi9ob21lL2pjbXZia2JjL3dz L3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9t aWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy90 eXBlcy5oIiAzIDQKdHlwZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250X3Q7CgoKCnR5cGVkZWYgX19m c2Jsa2NudDY0X3QgZnNibGtjbnRfdDsKCgoKdHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNu dF90OwoKCgoKCnR5cGVkZWYgX19ibGtjbnQ2NF90IGJsa2NudDY0X3Q7CnR5cGVkZWYgX19mc2Js a2NudDY0X3QgZnNibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNmaWxjbnQ2NF90IGZzZmlsY250NjRf dDsKCgoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQt bWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMyA0CiMgMjMg Ii9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0y MDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMgNAojIDEgIi9ob21lL2pjbXZia2Jj L3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9z dC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Jp dHMvdGhyZWFkLXNoYXJlZC10eXBlcy5oIiAxIDMgNAojIDQ0ICIvaG9tZS9qY212YmtiYy93cy90 ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWlj cm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3Ro cmVhZC1zaGFyZWQtdHlwZXMuaCIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNh L2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVl bC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlw ZXMtYXJjaC5oIiAxIDMgNAojIDIzICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRy b290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxk cm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy1hcmNo LmgiIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQt bWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAyNCAiL2hv bWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEu MTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMtYXJjaC5oIiAyIDMgNAojIDQ1ICIvaG9tZS9qY212 YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0 L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9iaXRzL3RocmVhZC1zaGFyZWQtdHlwZXMuaCIgMiAzIDQKCgoKCnR5cGVkZWYgc3RydWN0IF9f cHRocmVhZF9pbnRlcm5hbF9saXN0CnsKICBzdHJ1Y3QgX19wdGhyZWFkX2ludGVybmFsX2xpc3Qg Kl9fcHJldjsKICBzdHJ1Y3QgX19wdGhyZWFkX2ludGVybmFsX2xpc3QgKl9fbmV4dDsKfSBfX3B0 aHJlYWRfbGlzdF90OwoKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2ludGVybmFsX3NsaXN0CnsK ICBzdHJ1Y3QgX19wdGhyZWFkX2ludGVybmFsX3NsaXN0ICpfX25leHQ7Cn0gX19wdGhyZWFkX3Ns aXN0X3Q7CiMgNzQgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQt bWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdGhyZWFkLXNoYXJlZC10eXBlcy5oIiAzIDQK IyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxh emUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0cnVjdF9tdXRleC5oIiAxIDMgNAojIDI3ICIvaG9tZS9q Y212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10 ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9iaXRzL3N0cnVjdF9tdXRleC5oIiAzIDQKc3RydWN0IF9fcHRocmVhZF9tdXRleF9zCnsK ICBpbnQgX19sb2NrIDsKICB1bnNpZ25lZCBpbnQgX19jb3VudDsKICBpbnQgX19vd25lcjsKIyA1 OCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXpl LTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYml0cy9zdHJ1Y3RfbXV0ZXguaCIgMyA0CiAgaW50IF9fa2luZDsKCiAg dW5zaWduZWQgaW50IF9fbnVzZXJzOwoKCgoKCgogIF9fZXh0ZW5zaW9uX18gdW5pb24KICB7CiAg ICBpbnQgX19zcGluczsKICAgIF9fcHRocmVhZF9zbGlzdF90IF9fbGlzdDsKICB9OwoKCn07CiMg NzUgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6 ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvdGhyZWFkLXNoYXJlZC10eXBlcy5oIiAyIDMgNAojIDg3ICIv aG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAy MS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS9iaXRzL3RocmVhZC1zaGFyZWQtdHlwZXMuaCIgMyA0CiMgMSAiL2hvbWUvamNt dmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVz dC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvYml0cy9zdHJ1Y3Rfcndsb2NrLmgiIDEgMyA0CiMgMjkgIi9ob21lL2pjbXZia2JjL3dzL3Rl bnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNy b2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3Ry dWN0X3J3bG9jay5oIiAzIDQKc3RydWN0IF9fcHRocmVhZF9yd2xvY2tfYXJjaF90CnsKICB1bnNp Z25lZCBpbnQgX19yZWFkZXJzOwogIHVuc2lnbmVkIGludCBfX3dyaXRlcnM7CiAgdW5zaWduZWQg aW50IF9fd3JwaGFzZV9mdXRleDsKICB1bnNpZ25lZCBpbnQgX193cml0ZXJzX2Z1dGV4OwogIHVu c2lnbmVkIGludCBfX3BhZDM7CiAgdW5zaWduZWQgaW50IF9fcGFkNDsKIyA0NSAiL2hvbWUvamNt dmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVz dC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvYml0cy9zdHJ1Y3Rfcndsb2NrLmgiIDMgNAogIHVuc2lnbmVkIGNoYXIgX19mbGFnczsKICB1 bnNpZ25lZCBjaGFyIF9fc2hhcmVkOwogIHVuc2lnbmVkIGNoYXIgX19wYWQxOwogIHVuc2lnbmVk IGNoYXIgX19wYWQyOwoKICBpbnQgX19jdXJfd3JpdGVyOwp9OwojIDg4ICIvaG9tZS9qY212Ymti Yy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hv c3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9i aXRzL3RocmVhZC1zaGFyZWQtdHlwZXMuaCIgMiAzIDQKCgoKCnN0cnVjdCBfX3B0aHJlYWRfY29u ZF9zCnsKICBfX2V4dGVuc2lvbl9fIHVuaW9uCiAgewogICAgX19leHRlbnNpb25fXyB1bnNpZ25l ZCBsb25nIGxvbmcgaW50IF9fd3NlcTsKICAgIHN0cnVjdAogICAgewogICAgICB1bnNpZ25lZCBp bnQgX19sb3c7CiAgICAgIHVuc2lnbmVkIGludCBfX2hpZ2g7CiAgICB9IF9fd3NlcTMyOwogIH07 CiAgX19leHRlbnNpb25fXyB1bmlvbgogIHsKICAgIF9fZXh0ZW5zaW9uX18gdW5zaWduZWQgbG9u ZyBsb25nIGludCBfX2cxX3N0YXJ0OwogICAgc3RydWN0CiAgICB7CiAgICAgIHVuc2lnbmVkIGlu dCBfX2xvdzsKICAgICAgdW5zaWduZWQgaW50IF9faGlnaDsKICAgIH0gX19nMV9zdGFydDMyOwog IH07CiAgdW5zaWduZWQgaW50IF9fZ19yZWZzWzJdIDsKICB1bnNpZ25lZCBpbnQgX19nX3NpemVb Ml07CiAgdW5zaWduZWQgaW50IF9fZzFfb3JpZ19zaXplOwogIHVuc2lnbmVkIGludCBfX3dyZWZz OwogIHVuc2lnbmVkIGludCBfX2dfc2lnbmFsc1syXTsKfTsKCnR5cGVkZWYgdW5zaWduZWQgaW50 IF9fdHNzX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX190aHJkX3Q7Cgp0eXBlZGVmIHN0 cnVjdAp7CiAgaW50IF9fZGF0YSA7Cn0gX19vbmNlX2ZsYWc7CiMgMjQgIi9ob21lL2pjbXZia2Jj L3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9z dC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Jp dHMvcHRocmVhZHR5cGVzLmgiIDIgMyA0CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgcHRo cmVhZF90OwoKCgoKdHlwZWRlZiB1bmlvbgp7CiAgY2hhciBfX3NpemVbNF07CiAgaW50IF9fYWxp Z247Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoKCnR5cGVkZWYgdW5pb24KewogIGNoYXIgX19z aXplWzRdOwogIGludCBfX2FsaWduOwp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgoKdHlwZWRlZiB1 bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKdHlwZWRlZiBpbnQgcHRocmVhZF9vbmNlX3Q7 CgoKdW5pb24gcHRocmVhZF9hdHRyX3QKewogIGNoYXIgX19zaXplWzM2XTsKICBsb25nIGludCBf X2FsaWduOwp9OwoKdHlwZWRlZiB1bmlvbiBwdGhyZWFkX2F0dHJfdCBwdGhyZWFkX2F0dHJfdDsK CgoKCnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBfX3B0aHJlYWRfbXV0ZXhfcyBfX2RhdGE7CiAg Y2hhciBfX3NpemVbMjRdOwogIGxvbmcgaW50IF9fYWxpZ247Cn0gcHRocmVhZF9tdXRleF90OwoK CnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBfX3B0aHJlYWRfY29uZF9zIF9fZGF0YTsKICBjaGFy IF9fc2l6ZVs0OF07CiAgX19leHRlbnNpb25fXyBsb25nIGxvbmcgaW50IF9fYWxpZ247Cn0gcHRo cmVhZF9jb25kX3Q7CgoKCgoKdHlwZWRlZiB1bmlvbgp7CiAgc3RydWN0IF9fcHRocmVhZF9yd2xv Y2tfYXJjaF90IF9fZGF0YTsKICBjaGFyIF9fc2l6ZVszMl07CiAgbG9uZyBpbnQgX19hbGlnbjsK fSBwdGhyZWFkX3J3bG9ja190OwoKdHlwZWRlZiB1bmlvbgp7CiAgY2hhciBfX3NpemVbOF07CiAg bG9uZyBpbnQgX19hbGlnbjsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCgoKCgp0eXBlZGVmIHZv bGF0aWxlIGludCBwdGhyZWFkX3NwaW5sb2NrX3Q7CgoKCgp0eXBlZGVmIHVuaW9uCnsKICBjaGFy IF9fc2l6ZVsyMF07CiAgbG9uZyBpbnQgX19hbGlnbjsKfSBwdGhyZWFkX2JhcnJpZXJfdDsKCnR5 cGVkZWYgdW5pb24KewogIGNoYXIgX19zaXplWzRdOwogIGludCBfX2FsaWduOwp9IHB0aHJlYWRf YmFycmllcmF0dHJfdDsKIyAyMjggIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJv b3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRy b290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCgoj IDkxICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy90c3lzdGVtLmgiIDIKCgojIDEgIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL2Vycm5vLmgiIDEgMyA0CiMgMjggIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGlj YS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXpl ZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMgNAoj IDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6 ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMSAzIDQKIyAyNiAiL2hvbWUvamNtdmJrYmMv d3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0 L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0 cy9lcnJuby5oIiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290 L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9v dC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9lcnJuby5oIiAxIDMgNAojIDEg Ii9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0y MDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIiAxIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dzL3Rl bnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNy b2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2FzbS1nZW5l cmljL2Vycm5vLmgiIDEgMyA0CgoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9i dWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwt YnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5v LWJhc2UuaCIgMSAzIDQKIyA2ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290 L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9v dC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIiAyIDMg NAojIDIgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9i bGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2FzbS9lcnJuby5oIiAyIDMgNAojIDIgIi9ob21lL2pjbXZia2Jj L3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9z dC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xp bnV4L2Vycm5vLmgiIDIgMyA0CiMgMjcgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWls ZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVp bGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMiAzIDQK IyAyOSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2Js YXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvZXJybm8uaCIgMiAzIDQKCgoKCgoKCgpleHRlcm4gaW50ICpfX2Vy cm5vX2xvY2F0aW9uICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKCmV4dGVybiBjaGFyICpwcm9n cmFtX2ludm9jYXRpb25fbmFtZTsKZXh0ZXJuIGNoYXIgKnByb2dyYW1faW52b2NhdGlvbl9zaG9y dF9uYW1lOwoKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxk LW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL2Vycm9yX3QuaCIgMSAzIDQKIyAy MiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXpl LTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9lcnJvcl90LmgiIDMgNAp0eXBlZGVmIGludCBlcnJv cl90OwojIDQ5ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1p Y3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9lcnJuby5oIiAyIDMgNAoKCgoKIyA5NCAiLi4vLi4vLi4v Li4vZ2NjL2xpYmdjYy8uLi9nY2MvdHN5c3RlbS5oIiAyCgoKCgoKCiMgMSAiL2hvbWUvamNtdmJr YmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9o b3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv c3RyaW5nLmgiIDEgMyA0CiMgMjYgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJv b3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRy b290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKIyAxICIvaG9t ZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4x MS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9iaXRzL2xpYmMtaGVhZGVyLXN0YXJ0LmgiIDEgMyA0CiMgMjcgIi9ob21lL2pjbXZi a2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3Qv aG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L3N0cmluZy5oIiAyIDMgNAoKCgoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9n Y2MvYnVpbGRzL18vZ2NjL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMzQgIi9ob21lL2pjbXZi a2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3Qv aG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L3N0cmluZy5oIiAyIDMgNAojIDQzICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRy b290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxk cm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4dGVybiB2 b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LCBjb25zdCB2b2lkICpfX3Jlc3Ry aWN0IF9fc3JjLAogICAgICAgc2l6ZV90IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0 ZXJuIHZvaWQgKm1lbW1vdmUgKHZvaWQgKl9fZGVzdCwgY29uc3Qgdm9pZCAqX19zcmMsIHNpemVf dCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNj cHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LCBjb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3Jj LAogICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pCiAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKSBf X2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX193cml0ZV9vbmx5X18sIDEsIDQpKSk7CgoKCgpl eHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgbWVtY21wIChjb25zdCB2b2lkICpfX3MxLCBjb25z dCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxLCAyKSkpOwojIDkxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2Ev YnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVs LWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4 dGVybiB2b2lkICptZW1jaHIgKGNvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikK ICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgMTA0 ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4dGVybiB2b2lkICpyYXdtZW1jaHIgKGNvbnN0 IHZvaWQgKl9fcywgaW50IF9fYykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKTsKIyAxMTcgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJv b3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRy b290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIHZv aWQgKm1lbXJjaHIgKGNvbnN0IHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkKICAgICAgX19hdHRy aWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fcmVhZF9vbmx5X18sIDEsIDMpKSk7CgoKCgoKZXh0ZXJu IGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19zcmMpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgpleHRlcm4gY2hhciAqc3Ry bmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX3NyYywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRl cm4gY2hhciAqc3RyY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX3NyYykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCmV4dGVybiBjaGFyICpz dHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBf X3NyYywKICAgICAgICBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4g aW50IHN0cmNtcCAoY29uc3QgY2hhciAqX19zMSwgY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1 cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCmV4dGVybiBpbnQg c3RybmNtcCAoY29uc3QgY2hhciAqX19zMSwgY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpl eHRlcm4gaW50IHN0cmNvbGwgKGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0IGNoYXIgKl9fczIpCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgpleHRl cm4gc2l6ZV90IHN0cnhmcm0gKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgICBjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKQogICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIp KSkgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fd3JpdGVfb25seV9fLCAxLCAzKSkpOwoK CgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9i bGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvbG9jYWxlX3QuaCIgMSAzIDQKIyAyMiAiL2hv bWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEu MTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvYml0cy90eXBlcy9sb2NhbGVfdC5oIiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93 cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3Qv bWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRz L3R5cGVzL19fbG9jYWxlX3QuaCIgMSAzIDQKIyAyOCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2ls aWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxh emVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9f X2xvY2FsZV90LmgiIDMgNApzdHJ1Y3QgX19sb2NhbGVfc3RydWN0CnsKCiAgc3RydWN0IF9fbG9j YWxlX2RhdGEgKl9fbG9jYWxlc1sxM107CgoKICBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9f Y3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG9sb3dlcjsKICBjb25zdCBpbnQgKl9fY3R5 cGVfdG91cHBlcjsKCgogIGNvbnN0IGNoYXIgKl9fbmFtZXNbMTNdOwp9OwoKdHlwZWRlZiBzdHJ1 Y3QgX19sb2NhbGVfc3RydWN0ICpfX2xvY2FsZV90OwojIDIzICIvaG9tZS9qY212YmtiYy93cy90 ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWlj cm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5 cGVzL2xvY2FsZV90LmgiIDIgMyA0Cgp0eXBlZGVmIF9fbG9jYWxlX3QgbG9jYWxlX3Q7CiMgMTU3 ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzIDQKCgpleHRlcm4gaW50IHN0cmNvbGxfbCAoY29u c3QgY2hhciAqX19zMSwgY29uc3QgY2hhciAqX19zMiwgbG9jYWxlX3QgX19sKQogICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy ZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCAzKSkpOwoKCmV4dGVybiBz aXplX3Qgc3RyeGZybV9sIChjaGFyICpfX2Rlc3QsIGNvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3Qg X19uLAogICAgbG9jYWxlX3QgX19sKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgNCkpKQogICAgIF9fYXR0cmli dXRlX18gKChfX2FjY2Vzc19fIChfX3dyaXRlX29ubHlfXywgMSwgMykpKTsKCgoKCgpleHRlcm4g Y2hhciAqc3RyZHVwIChjb25zdCBjaGFyICpfX3MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKnN0cm5kdXAgKGNv bnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgMjMwICIvaG9tZS9qY212YmtiYy93cy90ZW5z aWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9i bGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdHJpbmcuaCIg MyA0CmV4dGVybiBjaGFyICpzdHJjaHIgKGNvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKIyAyNTcgIi9ob21l L2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjEx LXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKGNvbnN0IGNoYXIgKl9f cywgaW50IF9fYykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsKIyAyNzAgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQt bWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cmNo cm51bCAoY29uc3QgY2hhciAqX19zLCBpbnQgX19jKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBzaXplX3Qgc3RyY3NwbiAoY29u c3QgY2hhciAqX19zLCBjb25zdCBjaGFyICpfX3JlamVjdCkKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAo Y29uc3QgY2hhciAqX19zLCBjb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKIyAzMDcgIi9ob21lL2pjbXZia2Jj L3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9z dC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0 cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKGNvbnN0IGNoYXIgKl9fcywgY29uc3Qg Y2hhciAqX19hY2NlcHQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEsIDIpKSk7CiMgMzM0ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290 L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9v dC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4dGVybiBjaGFy ICpzdHJzdHIgKGNvbnN0IGNoYXIgKl9faGF5c3RhY2ssIGNvbnN0IGNoYXIgKl9fbmVlZGxlKQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoK ZXh0ZXJuIGNoYXIgKnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIGNvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19kZWxpbSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKZXh0ZXJuIGNoYXIg Kl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX2RlbGltLAogICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikKICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMiwgMykpKTsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0cmlj dCBfX3MsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgY2hhciAqKl9f cmVzdHJpY3QgX19zYXZlX3B0cikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgMykpKTsKIyAzNjQgIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cmNhc2VzdHIgKGNvbnN0IGNo YXIgKl9faGF5c3RhY2ssIGNvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgKm1l bW1lbSAoY29uc3Qgdm9pZCAqX19oYXlzdGFjaywgc2l6ZV90IF9faGF5c3RhY2tsZW4sCiAgICAg ICBjb25zdCB2b2lkICpfX25lZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVuKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkpCiAgICBfX2F0dHJpYnV0ZV9f ICgoX19hY2Nlc3NfXyAoX19yZWFkX29ubHlfXywgMSwgMikpKQogICAgX19hdHRyaWJ1dGVfXyAo KF9fYWNjZXNzX18gKF9fcmVhZF9vbmx5X18sIDMsIDQpKSk7CgoKCmV4dGVybiB2b2lkICpfX21l bXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICBjb25zdCB2b2lkICpfX3Jlc3RyaWN0 IF9fc3JjLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRlcm4gdm9p ZCAqbWVtcGNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgY29uc3Qgdm9pZCAq X19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsK CgoKCmV4dGVybiBzaXplX3Qgc3RybGVuIChjb25zdCBjaGFyICpfX3MpCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0 cm5sZW4gKGNvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3QgX19tYXhsZW4pCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgpleHRlcm4gY2hhciAq c3RyZXJyb3IgKGludCBfX2Vycm51bSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKIyA0MjggIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVp bGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0 cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMikpKSBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX193cml0ZV9v bmx5X18sIDIsIDMpKSk7CgoKCgpleHRlcm4gY29uc3QgY2hhciAqc3RyZXJyb3JkZXNjX25wIChp bnQgX19lcnIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgpleHRl cm4gY29uc3QgY2hhciAqc3RyZXJyb3JuYW1lX25wIChpbnQgX19lcnIpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX2wg KGludCBfX2Vycm51bSwgbG9jYWxlX3QgX19sKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpOwoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJv b3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRy b290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0cmluZ3MuaCIgMSAzIDQKIyAyMyAi L2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIw MjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvc3RyaW5ncy5oIiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxp Y2EvZ2NjL2J1aWxkcy9fL2djYy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDI0ICIvaG9tZS9q Y212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10 ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9zdHJpbmdzLmgiIDIgMyA0CgoKCgoKCgoKCgpleHRlcm4gaW50IGJjbXAgKGNvbnN0IHZv aWQgKl9fczEsIGNvbnN0IHZvaWQgKl9fczIsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIHZvaWQgYmNvcHkg KGNvbnN0IHZvaWQgKl9fc3JjLCB2b2lkICpfX2Rlc3QsIHNpemVfdCBfX24pCiAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEsIDIpKSk7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7CiMgNjggIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWls ZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVp bGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0cmluZ3MuaCIgMyA0CmV4dGVy biBjaGFyICppbmRleCAoY29uc3QgY2hhciAqX19zLCBpbnQgX19jKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDk2ICIvaG9tZS9qY212YmtiYy93 cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3Qv bWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdHJp bmdzLmgiIDMgNApleHRlcm4gY2hhciAqcmluZGV4IChjb25zdCBjaGFyICpfX3MsIGludCBfX2Mp CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoK CmV4dGVybiBpbnQgZmZzIChpbnQgX19pKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgpleHRlcm4gaW50IGZm c2wgKGxvbmcgaW50IF9fbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGludCBm ZnNsbCAobG9uZyBsb25nIGludCBfX2xsKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50 IHN0cmNhc2VjbXAgKGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0IGNoYXIgKl9fczIpCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19w dXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGlu dCBzdHJuY2FzZWNtcCAoY29uc3QgY2hhciAqX19zMSwgY29uc3QgY2hhciAqX19zMiwgc2l6ZV90 IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikp KTsKCgoKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wX2wgKGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0 IGNoYXIgKl9fczIsIGxvY2FsZV90IF9fbG9jKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxLCAyLCAzKSkpOwoKCgpleHRlcm4gaW50IHN0cm5jYXNlY21wX2wg KGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0IGNoYXIgKl9fczIsCiAgICAgc2l6ZV90IF9fbiwgbG9j YWxlX3QgX19sb2MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEsIDIsIDQpKSk7CgoKCiMgNDQ3ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRy b290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxk cm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzIDQKCgoKZXh0 ZXJuIHZvaWQgZXhwbGljaXRfYnplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSkKICAgIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3dyaXRlX29ubHlfXywg MSwgMikpKTsKCgoKZXh0ZXJuIGNoYXIgKnN0cnNlcCAoY2hhciAqKl9fcmVzdHJpY3QgX19zdHJp bmdwLAogICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxLCAyKSkpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gY29uc3QgY2hh ciAqc2lnYWJicmV2X25wIChpbnQgX19zaWcpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7CgoKZXh0ZXJuIGNvbnN0IGNoYXIgKnNpZ2Rlc2NyX25wIChpbnQgX19zaWcp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBjaGFy ICpfX3N0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19zcmMpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBjaGFyICpzdHBjcHkg KGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgpleHRlcm4gY2hhciAqX19zdHBuY3B5IChjaGFy ICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6 ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKZXh0ZXJuIGNoYXIgKnN0cG5jcHkg KGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19zcmMsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgpleHRlcm4g aW50IHN0cnZlcnNjbXAgKGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0IGNoYXIgKl9fczIpCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJu IGNoYXIgKnN0cmZyeSAoY2hhciAqX19zdHJpbmcpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVy biB2b2lkICptZW1mcm9iICh2b2lkICpfX3MsIHNpemVfdCBfX24pIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp CiAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX193cml0ZV9vbmx5X18sIDEsIDIpKSk7 CiMgNTExICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3Jv YmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4dGVybiBjaGFyICpiYXNlbmFtZSAo Y29uc3QgY2hhciAqX19maWxlbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgNTIzICIvaG9tZS9q Y212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10 ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9zdHJpbmcuaCIgMyA0CgojIDEwMSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2Mv dHN5c3RlbS5oIiAyCiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9i dWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3Qt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMyA0CiMgMjUgIi9ob21l L2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjEx LXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL3N0ZGxpYi5oIiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVp bGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1 aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2xpYmMtaGVhZGVyLXN0 YXJ0LmgiIDEgMyA0CiMgMjYgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3Qv YnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKCgoKCiMgMSAi L2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2djYy9idWlsZHMvXy9nY2MvaW5jbHVkZS9zdGRk ZWYuaCIgMSAzIDQKIyAzMiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9i dWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3Qt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgoKCgoKCgojIDEg Ii9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0y MDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL2JpdHMvd2FpdGZsYWdzLmgiIDEgMyA0CiMgNDAgIi9ob21lL2pjbXZia2Jj L3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9z dC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0 ZGxpYi5oIiAyIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3Qv YnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvd2FpdHN0YXR1cy5oIiAxIDMgNAoj IDQxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxh emUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKIyA1NSAiL2hvbWUvamNtdmJrYmMvd3Mv dGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21p Y3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkbGli LmgiIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQt bWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZmxvYXRuLmgiIDEgMyA0CiMgNTYgIi9ob21l L2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjEx LXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7 CiAgICBpbnQgcmVtOwogIH0gZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBp bnQgcXVvdDsKICAgIGxvbmcgaW50IHJlbTsKICB9IGxkaXZfdDsKCgoKCgpfX2V4dGVuc2lvbl9f IHR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBsb25nIGludCBxdW90OwogICAgbG9uZyBsb25n IGludCByZW07CiAgfSBsbGRpdl90OwojIDk3ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2Ev YnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVs LWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4 dGVybiBzaXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21heCAodm9pZCkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCmV4dGVybiBkb3VibGUgYXRvZiAoY29uc3Qg Y2hhciAqX19ucHRyKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxKSkpIDsKCmV4dGVybiBpbnQgYXRvaSAoY29uc3QgY2hhciAqX19ucHRyKQogICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy ZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCmV4dGVybiBsb25nIGlu dCBhdG9sIChjb25zdCBjaGFyICpfX25wdHIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEpKSkgOwoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcg aW50IGF0b2xsIChjb25zdCBjaGFyICpfX25wdHIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgpleHRlcm4gZG91YmxlIHN0cnRvZCAoY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw dHIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBmbG9hdCBzdHJ0b2YgKGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw dHIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKZXh0ZXJuIGxvbmcgZG91YmxlIHN0cnRvbGQgKGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw dHIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgMTQwICIvaG9tZS9qY212YmtiYy93cy90ZW5z aWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9i bGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRsaWIuaCIg MyA0CmV4dGVybiBfRmxvYXQzMiBzdHJ0b2YzMiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w dHIsCiAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp KSk7CgoKCmV4dGVybiBfRmxvYXQ2NCBzdHJ0b2Y2NCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBf X25wdHIsCiAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEpKSk7CiMgMTU4ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxk LW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBfRmxvYXQzMngg c3RydG9mMzJ4IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgIGNoYXIgKipf X3Jlc3RyaWN0IF9fZW5kcHRyKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDE3NiAiL2hvbWUv amNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEt dGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gbG9uZyBpbnQgc3RydG9sIChjb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fbnB0ciwKICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jh c2UpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3Ry dG91bCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgIGNoYXIgKipfX3Jlc3Ry aWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpfX2V4 dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAoY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX25wdHIsCiAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jh c2UpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25l ZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxKSkpOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBz dHJ0b2xsIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgY2hhciAqKl9f cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7Cgpf X2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsIChjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0 ciwgaW50IF9fYmFzZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCmV4dGVybiBpbnQgc3Ry ZnJvbWQgKGNoYXIgKl9fZGVzdCwgc2l6ZV90IF9fc2l6ZSwgY29uc3QgY2hhciAqX19mb3JtYXQs CiAgICAgICBkb3VibGUgX19mKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpOwoKZXh0ZXJuIGludCBz dHJmcm9tZiAoY2hhciAqX19kZXN0LCBzaXplX3QgX19zaXplLCBjb25zdCBjaGFyICpfX2Zvcm1h dCwKICAgICAgIGZsb2F0IF9fZikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMykpKTsKCmV4dGVybiBpbnQg c3RyZnJvbWwgKGNoYXIgKl9fZGVzdCwgc2l6ZV90IF9fc2l6ZSwgY29uc3QgY2hhciAqX19mb3Jt YXQsCiAgICAgICBsb25nIGRvdWJsZSBfX2YpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMpKSk7CiMgMjMy ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgc3RyZnJvbWYzMiAoY2hhciAq X19kZXN0LCBzaXplX3QgX19zaXplLCBjb25zdCBjaGFyICogX19mb3JtYXQsCiAgICAgICAgIF9G bG9hdDMyIF9fZikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMykpKTsKCgoKZXh0ZXJuIGludCBzdHJmcm9t ZjY0IChjaGFyICpfX2Rlc3QsIHNpemVfdCBfX3NpemUsIGNvbnN0IGNoYXIgKiBfX2Zvcm1hdCwK ICAgICAgICAgX0Zsb2F0NjQgX19mKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpOwojIDI1MCAiL2hv bWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEu MTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gaW50IHN0cmZyb21mMzJ4IChjaGFyICpfX2Rl c3QsIHNpemVfdCBfX3NpemUsIGNvbnN0IGNoYXIgKiBfX2Zvcm1hdCwKICAgX0Zsb2F0MzJ4IF9f ZikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMykpKTsKIyAyNzQgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz IDQKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbF9sIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0 ciwKICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgICBsb2Nh bGVfdCBfX2xvYykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBp bnQgc3RydG91bF9sIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICBjaGFy ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICBpbnQgX19iYXNlLCBsb2NhbGVfdCBfX2xv YykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgNCkpKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcg bG9uZyBpbnQgc3RydG9sbF9sIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgIGNo YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLAogICAgbG9jYWxlX3QgX19sb2Mp CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25l ZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsX2wgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy LAogICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICBpbnQgX19iYXNlLCBs b2NhbGVfdCBfX2xvYykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgNCkpKTsKCmV4dGVybiBkb3VibGUg c3RydG9kX2wgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICBjaGFyICoqX19yZXN0 cmljdCBfX2VuZHB0ciwgbG9jYWxlX3QgX19sb2MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDMpKSk7 CgpleHRlcm4gZmxvYXQgc3RydG9mX2wgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog ICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgbG9jYWxlX3QgX19sb2MpCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEsIDMpKSk7CgpleHRlcm4gbG9uZyBkb3VibGUgc3RydG9sZF9sIChjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l bmRwdHIsCiAgICAgICAgIGxvY2FsZV90IF9fbG9jKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkp OwojIDMxNiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNy b2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gX0Zsb2F0MzIgc3RydG9m MzJfbCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICBjaGFyICoqX19yZXN0 cmljdCBfX2VuZHB0ciwKICAgICAgIGxvY2FsZV90IF9fbG9jKQogICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx LCAzKSkpOwoKCgpleHRlcm4gX0Zsb2F0NjQgc3RydG9mNjRfbCAoY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX25wdHIsCiAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgIGxv Y2FsZV90IF9fbG9jKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkpOwojIDMzNyAiL2hvbWUvamNt dmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVz dC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gX0Zsb2F0MzJ4IHN0cnRvZjMyeF9sIChjb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs CiAgICAgICAgIGxvY2FsZV90IF9fbG9jKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkpOwojIDM2 MCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXpl LTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVf XyAoKF9fZ251X2lubGluZV9fKSkgaW50Cl9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgYXRvaSAoY29uc3QgY2hhciAqX19ucHRyKQp7CiAgcmV0dXJuIChpbnQpIHN0cnRv bCAoX19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQpleHRlcm4gX19pbmxpbmUg X19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgbG9uZyBpbnQKX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBhdG9sIChjb25zdCBjaGFyICpfX25wdHIpCnsKICBy ZXR1cm4gc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CgoKX19l eHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9f KSkgbG9uZyBsb25nIGludApfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IGF0b2xsIChjb25zdCBjaGFyICpfX25wdHIpCnsKICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAo Y2hhciAqKikgKCh2b2lkICopMCksIDEwKTsKfQojIDM4NSAiL2hvbWUvamNtdmJrYmMvd3MvdGVu c2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3Jv YmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkbGliLmgi IDMgNApleHRlcm4gY2hhciAqbDY0YSAobG9uZyBpbnQgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoY29uc3QgY2hh ciAqX19zKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp IDsKIyA0MDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWlj cm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGxvbmcgaW50IHJhbmRv bSAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRl cm4gdm9pZCBzcmFuZG9tICh1bnNpZ25lZCBpbnQgX19zZWVkKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVuc2ln bmVkIGludCBfX3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgIHNpemVfdCBfX3N0YXRlbGVuKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMikpKTsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0YXRlIChjaGFyICpfX3N0YXRl YnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsKICAg IGludDMyX3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAgaW50MzJfdCAqc3RhdGU7CiAg ICBpbnQgcmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2VwOwogICAg aW50MzJfdCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0IHJhbmRv bV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jl c3VsdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWdu ZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9kYXRhICpfX2J1ZikKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMikpKTsKCmV4dGVybiBpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNo YXIgKl9fcmVzdHJpY3QgX19zdGF0ZWJ1ZiwKICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAgIHN0cnVj dCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgNCkp KTsKCmV4dGVybiBpbnQgc2V0c3RhdGVfciAoY2hhciAqX19yZXN0cmljdCBfX3N0YXRlYnVmLAog ICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEsIDIpKSk7CgoKCgoKZXh0ZXJuIGludCByYW5kICh2b2lkKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKZXh0ZXJuIHZvaWQgc3JhbmQgKHVuc2lnbmVk IGludCBfX3NlZWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoK CmV4dGVybiBpbnQgcmFuZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgoKCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAo dm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIGRv dWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEpKSk7CgoKZXh0ZXJuIGxvbmcgaW50IGxyYW5kNDggKHZvaWQpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICh1bnNpZ25l ZCBzaG9ydCBpbnQgX194c3ViaVszXSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4g bG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hz dWJpWzNdKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiB2b2lkIHNyYW5kNDggKGxv bmcgaW50IF9fc2VlZHZhbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQg X19zZWVkMTZ2WzNdKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwpleHRlcm4gdm9pZCBsY29uZzQ4 ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoK c3RydWN0IGRyYW5kNDhfZGF0YQogIHsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX3hbM107CiAg ICB1bnNpZ25lZCBzaG9ydCBpbnQgX19vbGRfeFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBf X2M7CiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19pbml0OwogICAgX19leHRlbnNpb25fXyB1bnNp Z25lZCBsb25nIGxvbmcgaW50IF9fYTsKCiAgfTsKCgpleHRlcm4gaW50IGRyYW5kNDhfciAoc3Ry dWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICBkb3VibGUgKl9f cmVzdHJpY3QgX19yZXN1bHQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRlcm4gaW50IGVyYW5k NDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgc3RydWN0IGRyYW5k NDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3Qg X19yZXN1bHQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgbHJhbmQ0OF9yIChz dHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGxvbmcgaW50 ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRlcm4g aW50IG5yYW5kNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgc3Ry dWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICBsb25nIGludCAq X19yZXN0cmljdCBfX3Jlc3VsdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4g aW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwK ICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSwgMikpKTsKZXh0ZXJuIGludCBqcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJp WzNdLAogICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAg ICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs IDIpKSk7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxvbmcgaW50IF9fc2VlZHZhbCwgc3RydWN0 IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgpleHRlcm4g aW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAogICAgICAgc3Ry dWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKZXh0ZXJu IGludCBsY29uZzQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddLAogICAgICAgIHN0 cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoK CgoKZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fYWxsb2Nfc2l6ZV9fICgxKSkpIDsKCmV4dGVybiB2b2lkICpjYWxs b2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQogICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19hbGxvY19zaXplX18gKDEsIDIpKSkgOwoKCgoKCgpleHRlcm4gdm9pZCAq cmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9y ZXN1bHRfXykpIF9fYXR0cmlidXRlX18gKChfX2FsbG9jX3NpemVfXyAoMikpKTsKCgpleHRlcm4g dm9pZCBmcmVlICh2b2lkICpfX3B0cikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKCgoKCgoKCmV4dGVybiB2b2lkICpyZWFsbG9jYXJyYXkgKHZvaWQgKl9fcHRyLCBz aXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19hbGxvY19zaXplX18gKDIsIDMpKSkKICAgIF9fYXR0 cmlidXRlX18gKChfX21hbGxvY19fIChfX2J1aWx0aW5fZnJlZSwgMSkpKTsKCgpleHRlcm4gdm9p ZCAqcmVhbGxvY2FycmF5ICh2b2lkICpfX3B0ciwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3Np emUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19tYWxsb2NfXyAocmVhbGxvY2FycmF5LCAxKSkpOwoKCgojIDEgIi9ob21lL2pj bXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRl c3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL2FsbG9jYS5oIiAxIDMgNAojIDI0ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVp bGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1 aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMyA0CiMgMSAi L2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2djYy9idWlsZHMvXy9nY2MvaW5jbHVkZS9zdGRk ZWYuaCIgMSAzIDQKIyAyNSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9i dWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3Qt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMyA0CgoKCgoKCgpleHRl cm4gdm9pZCAqYWxsb2NhIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpOwoKCgoKCgojIDU3NCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNh L2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVl bC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0 CgoKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fYWxsb2Nfc2l6ZV9fICgxKSkpIDsKCgoKCmV4dGVybiBpbnQg cG9zaXhfbWVtYWxpZ24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBzaXpl X3QgX19zaXplKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKCmV4dGVybiB2b2lkICphbGln bmVkX2FsbG9jIChzaXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxs b2NfXykpIF9fYXR0cmlidXRlX18gKChfX2FsbG9jX3NpemVfXyAoMikpKSA7CgoKCmV4dGVybiB2 b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4aXQgKHZv aWQgKCpfX2Z1bmMpICh2b2lkKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKCgpleHRlcm4gaW50 IGF0X3F1aWNrX2V4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7 CgoKCgoKCmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywg dm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpl eHRlcm4gdm9pZCBleGl0IChpbnQgX19zdGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCmV4dGVy biB2b2lkIHF1aWNrX2V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKZXh0 ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgpleHRlcm4g Y2hhciAqZ2V0ZW52IChjb25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoK CmV4dGVybiBjaGFyICpzZWN1cmVfZ2V0ZW52IChjb25zdCBjaGFyICpfX25hbWUpCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSkgOwoKCgoKCgpleHRlcm4gaW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBpbnQgc2V0ZW52IChjb25zdCBjaGFyICpf X25hbWUsIGNvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDIpKSk7CgoKZXh0ZXJuIGludCB1bnNldGVudiAoY29uc3QgY2hhciAqX19uYW1lKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKTsKCgoKCgoKZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyA2ODAgIi9ob21lL2pjbXZia2JjL3dz L3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9t aWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGxp Yi5oIiAzIDQKZXh0ZXJuIGNoYXIgKm1rdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSk7CiMgNjk2ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1 aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgbWtz dGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgX19hc21fXyAoIiIgIm1rc3RlbXA2NCIpCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKCgpleHRlcm4gaW50IG1rc3RlbXA2 NCAoY2hhciAqX190ZW1wbGF0ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsK IyA3MTggIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9i bGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta3N0ZW1wcyAoY2hh ciAqX190ZW1wbGF0ZSwgaW50IF9fc3VmZml4bGVuKSBfX2FzbV9fICgiIiAibWtzdGVtcHM2NCIp CiAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7 CgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wczY0IChjaGFyICpfX3RlbXBsYXRlLCBpbnQgX19zdWZm aXhsZW4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA3MzYgIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVt cGxhdGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA3NTAgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz IDQKZXh0ZXJuIGludCBta29zdGVtcCAoY2hhciAqX190ZW1wbGF0ZSwgaW50IF9fZmxhZ3MpIF9f YXNtX18gKCIiICJta29zdGVtcDY0IikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEpKSkgOwoKCgoKCmV4dGVybiBpbnQgbWtvc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSwgaW50 IF9fZmxhZ3MpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgNzcxICIvaG9t ZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4x MS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgbWtvc3RlbXBzIChjaGFyICpfX3RlbXBs YXRlLCBpbnQgX19zdWZmaXhsZW4sIGludCBfX2ZsYWdzKSBfX2FzbV9fICgiIiAibWtvc3RlbXBz NjQiKQoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgoKCmV4dGVy biBpbnQgbWtvc3RlbXBzNjQgKGNoYXIgKl9fdGVtcGxhdGUsIGludCBfX3N1ZmZpeGxlbiwgaW50 IF9fZmxhZ3MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA3ODkg Ii9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0y MDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBzeXN0ZW0gKGNvbnN0IGNoYXIg Kl9fY29tbWFuZCkgOwoKCgoKCmV4dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lIChj b25zdCBjaGFyICpfX25hbWUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAo KF9fbWFsbG9jX18pKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fIChfX2J1aWx0aW5f ZnJlZSwgMSkpKSA7CiMgODA2ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290 L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9v dC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBjaGFy ICpyZWFscGF0aCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCiAgICAgICAgIGNoYXIg Kl9fcmVzdHJpY3QgX19yZXNvbHZlZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSA7CgoKCgoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgKGNvbnN0IHZvaWQg KiwgY29uc3Qgdm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3QgY29tcGFyaXNvbl9mbl90 OwoKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2RfZm5fdCkgKGNvbnN0IHZvaWQgKiwgY29uc3Qg dm9pZCAqLCB2b2lkICopOwoKCgoKZXh0ZXJuIHZvaWQgKmJzZWFyY2ggKGNvbnN0IHZvaWQgKl9f a2V5LCBjb25zdCB2b2lkICpfX2Jhc2UsCiAgICAgICAgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBf X3NpemUsIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxLCAyLCA1KSkpIDsKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9i dWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwt YnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RkbGliLWJzZWFy Y2guaCIgMSAzIDQKIyAxOSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9i dWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3Qt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdGRsaWItYnNlYXJjaC5oIiAzIDQK ZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIHZvaWQgKgpi c2VhcmNoIChjb25zdCB2b2lkICpfX2tleSwgY29uc3Qgdm9pZCAqX19iYXNlLCBzaXplX3QgX19u bWVtYiwgc2l6ZV90IF9fc2l6ZSwKICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKQp7CiAgc2l6ZV90 IF9fbCwgX191LCBfX2lkeDsKICBjb25zdCB2b2lkICpfX3A7CiAgaW50IF9fY29tcGFyaXNvbjsK CiAgX19sID0gMDsKICBfX3UgPSBfX25tZW1iOwogIHdoaWxlIChfX2wgPCBfX3UpCiAgICB7CiAg ICAgIF9faWR4ID0gKF9fbCArIF9fdSkgLyAyOwogICAgICBfX3AgPSAodm9pZCAqKSAoKChjb25z dCBjaGFyICopIF9fYmFzZSkgKyAoX19pZHggKiBfX3NpemUpKTsKICAgICAgX19jb21wYXJpc29u ID0gKCpfX2NvbXBhcikgKF9fa2V5LCBfX3ApOwogICAgICBpZiAoX19jb21wYXJpc29uIDwgMCkK IF9fdSA9IF9faWR4OwogICAgICBlbHNlIGlmIChfX2NvbXBhcmlzb24gPiAwKQogX19sID0gX19p ZHggKyAxOwogICAgICBlbHNlCiByZXR1cm4gKHZvaWQgKikgX19wOwogICAgfQoKICByZXR1cm4g KCh2b2lkICopMCk7Cn0KIyA4MzIgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJv b3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRy b290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKCgoKZXh0 ZXJuIHZvaWQgcXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3Np emUsCiAgICAgX19jb21wYXJfZm5fdCBfX2NvbXBhcikgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxLCA0KSkpOwoKZXh0ZXJuIHZvaWQgcXNvcnRfciAodm9pZCAqX19iYXNlLCBzaXplX3Qg X19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAgICAgIF9fY29tcGFyX2RfZm5fdCBfX2NvbXBhciwg dm9pZCAqX19hcmcpCiAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCA0KSkpOwoKCgoK ZXh0ZXJuIGludCBhYnMgKGludCBfX3gpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpIDsKZXh0ZXJuIGxvbmcgaW50IGxh YnMgKGxvbmcgaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgOwoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxv bmcgbG9uZyBpbnQgbGxhYnMgKGxvbmcgbG9uZyBpbnQgX194KQogICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpIDsK CgoKCgoKZXh0ZXJuIGRpdl90IGRpdiAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKQogICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpIDsKZXh0ZXJuIGxkaXZfdCBsZGl2IChsb25nIGludCBfX251bWVyLCBsb25nIGlu dCBfX2Rlbm9tKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpIDsKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsbGRp dl90IGxsZGl2IChsb25nIGxvbmcgaW50IF9fbnVtZXIsCiAgICAgICAgbG9uZyBsb25nIGludCBf X2Rlbm9tKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpIDsKIyA4NzggIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz IDQKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAq X19yZXN0cmljdCBfX2RlY3B0LAogICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgzLCA0KSkpIDsKCgoKCmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUgX192YWx1ZSwgaW50 IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICBpbnQgKl9fcmVzdHJpY3Qg X19zaWduKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMywgNCkpKSA7CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAoZG91 YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDMpKSkgOwoKCgoKZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQg X19uZGlnaXQsCiAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3Qg X19zaWduKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0KSkpIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChs b25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgIGludCAqX19yZXN0cmljdCBf X2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0KSkp IDsKZXh0ZXJuIGNoYXIgKnFnY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs IGNoYXIgKl9fYnVmKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpIDsKCgoKCmV4dGVybiBpbnQgZWN2 dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNw dCwKICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAog ICAgIHNpemVfdCBfX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQsIDUpKSk7CmV4dGVybiBpbnQgZmN2 dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNw dCwKICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAog ICAgIHNpemVfdCBfX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQsIDUpKSk7CgpleHRlcm4gaW50IHFl Y3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgaW50ICpfX3Jl c3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sCiAgICAgIGNoYXIgKl9fcmVz dHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCwgNSkpKTsK ZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAg ICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAogICAg ICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDMsIDQsIDUpKSk7CgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoY29uc3QgY2hhciAqX19zLCBzaXpl X3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVy biBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgIGNvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdjaGFyX3QgX193 Y2hhcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJu IHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3Y3MsCiAgIGNvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpCiAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX19yZWFkX29u bHlfXywgMikpKTsKCmV4dGVybiBzaXplX3Qgd2NzdG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19z LAogICBjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikKICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpCiAgX19hdHRyaWJ1dGVfXyAo KF9fYWNjZXNzX18gKF9fd3JpdGVfb25seV9fLCAxLCAzKSkpIF9fYXR0cmlidXRlX18gKChfX2Fj Y2Vzc19fIChfX3JlYWRfb25seV9fLCAyKSkpOwoKCgoKCgpleHRlcm4gaW50IHJwbWF0Y2ggKGNv bnN0IGNoYXIgKl9fcmVzcG9uc2UpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA5NjQgIi9ob21lL2pj bXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRl c3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jlc3RyaWN0 IF9fb3B0aW9ucCwKICAgICAgICBjaGFyICpjb25zdCAqX19yZXN0cmljdCBfX3Rva2VucywKICAg ICAgICBjaGFyICoqX19yZXN0cmljdCBfX3ZhbHVlcCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwg MykpKSA7CgoKCgoKCgpleHRlcm4gaW50IHBvc2l4X29wZW5wdCAoaW50IF9fb2ZsYWcpIDsKCgoK CgoKCmV4dGVybiBpbnQgZ3JhbnRwdCAoaW50IF9fZmQpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBpbnQgdW5sb2NrcHQgKGludCBfX2ZkKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnB0 c25hbWUgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IDsKCgoKCgoKZXh0ZXJuIGludCBwdHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6 ZV90IF9fYnVmbGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpIF9fYXR0cmlidXRlX18gKChfX2Fj Y2Vzc19fIChfX3dyaXRlX29ubHlfXywgMiwgMykpKTsKCgpleHRlcm4gaW50IGdldHB0ICh2b2lk KTsKCgoKCgoKZXh0ZXJuIGludCBnZXRsb2FkYXZnIChkb3VibGUgX19sb2FkYXZnW10sIGludCBf X25lbGVtKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDEwMjAgIi9ob21lL2pjbXZia2JjL3dz L3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9t aWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGxp Yi5oIiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxk LW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0ZGxpYi1mbG9hdC5oIiAxIDMgNAojIDI0 ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9iaXRzL3N0ZGxpYi1mbG9hdC5oIiAzIDQKZXh0ZXJuIF9faW5saW5lIF9f YXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGRvdWJsZQpfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIGF0b2YgKGNvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVy biBzdHJ0b2QgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApKTsKfQojIDEwMjEgIi9ob21l L2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjEx LXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKCgoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZmxvYXRu LmgiIDEgMyA0CiMgMTAyOCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9i dWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3Qt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgoKCgoKIyAxMDIg Ii4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL3RzeXN0ZW0uaCIgMgojIDEgIi9ob21lL2pj bXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRl c3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL3VuaXN0ZC5oIiAxIDMgNAojIDI3ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVp bGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1 aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CgojIDIw MiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXpl LTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvcG9zaXhf b3B0LmgiIDEgMyA0CiMgMjAzICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290 L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9v dC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKCgoKIyAxICIv aG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAy MS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAxIDMgNAojIDIyICIvaG9tZS9qY212Ymti Yy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hv c3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9i aXRzL2Vudmlyb25tZW50cy5oIiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2Ev YnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVs LWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgi IDEgMyA0CiMgMjMgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQt bWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDIgMyA0CiMgMjA3 ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKIyAyMjYgIi9ob21lL2pjbXZia2JjL3dzL3Rl bnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNy b2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3VuaXN0ZC5o IiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvZ2NjL2J1aWxkcy9fL2djYy9p bmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDIyNyAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNh L2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVl bC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMyA0 CiMgMjY3ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3Jv YmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CnR5cGVkZWYgX19pbnRwdHJfdCBpbnRw dHJfdDsKCgoKCgoKdHlwZWRlZiBfX3NvY2tsZW5fdCBzb2NrbGVuX3Q7CiMgMjg3ICIvaG9tZS9q Y212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10 ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgYWNjZXNzIChjb25zdCBjaGFyICpfX25hbWUs IGludCBfX3R5cGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKZXh0ZXJuIGludCBldWlkYWNjZXNz IChjb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7 CgoKZXh0ZXJuIGludCBlYWNjZXNzIChjb25zdCBjaGFyICpfX25hbWUsIGludCBfX3R5cGUpCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBleGVjdmVhdCAoaW50IF9fZmQsIGNv bnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqY29uc3QgX19hcmd2W10sCiAgICAgICAgICAgICAgICAg ICAgIGNoYXIgKmNvbnN0IF9fZW52cFtdLCBpbnQgX19mbGFncykKICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgy LCAzKSkpOwoKCgoKCgpleHRlcm4gaW50IGZhY2Nlc3NhdCAoaW50IF9fZmQsIGNvbnN0IGNoYXIg Kl9fZmlsZSwgaW50IF9fdHlwZSwgaW50IF9fZmxhZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKSA7 CiMgMzQyICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3Jv YmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBfX29mZjY0X3QgbHNlZWsg KGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIGludCBfX3doZW5jZSkgX19hc21fXyAoIiIg ImxzZWVrNjQiKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpCgogICAg ICAgICAgICAgOwoKCgoKCmV4dGVybiBfX29mZjY0X3QgbHNlZWs2NCAoaW50IF9fZmQsIF9fb2Zm NjRfdCBfX29mZnNldCwgaW50IF9fd2hlbmNlKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCmV4dGVybiBpbnQgY2xvc2UgKGludCBfX2ZkKTsKCgoK CmV4dGVybiB2b2lkIGNsb3NlZnJvbSAoaW50IF9fbG93ZmQpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCgpleHRlcm4gc3NpemVfdCByZWFkIChpbnQgX19m ZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcykKICAgIF9fYXR0cmlidXRlX18gKChfX2Fj Y2Vzc19fIChfX3dyaXRlX29ubHlfXywgMiwgMykpKTsKCgoKCgpleHRlcm4gc3NpemVfdCB3cml0 ZSAoaW50IF9fZmQsIGNvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uKQogICAgX19hdHRyaWJ1 dGVfXyAoKF9fYWNjZXNzX18gKF9fcmVhZF9vbmx5X18sIDIsIDMpKSk7CiMgNDA0ICIvaG9tZS9q Y212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10 ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBzc2l6ZV90IHByZWFkIChpbnQgX19mZCwgdm9pZCAq X19idWYsIHNpemVfdCBfX25ieXRlcywgX19vZmY2NF90IF9fb2Zmc2V0KSBfX2FzbV9fICgiIiAi cHJlYWQ2NCIpCgoKICAgIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3dyaXRlX29ubHlf XywgMiwgMykpKTsKZXh0ZXJuIHNzaXplX3QgcHdyaXRlIChpbnQgX19mZCwgY29uc3Qgdm9pZCAq X19idWYsIHNpemVfdCBfX25ieXRlcywgX19vZmY2NF90IF9fb2Zmc2V0KSBfX2FzbV9fICgiIiAi cHdyaXRlNjQiKQoKCiAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX19yZWFkX29ubHlf XywgMiwgMykpKTsKIyA0MjIgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3Qv YnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIHNzaXpl X3QgcHJlYWQ2NCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsCiAgIF9f b2ZmNjRfdCBfX29mZnNldCkKICAgIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3dyaXRl X29ubHlfXywgMiwgMykpKTsKCgpleHRlcm4gc3NpemVfdCBwd3JpdGU2NCAoaW50IF9fZmQsIGNv bnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uLAogICAgX19vZmY2NF90IF9fb2Zmc2V0KQogICAg X19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fcmVhZF9vbmx5X18sIDIsIDMpKSk7CgoKCgoK CgpleHRlcm4gaW50IHBpcGUgKGludCBfX3BpcGVkZXNbMl0pIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKZXh0ZXJuIGludCBwaXBlMiAoaW50IF9fcGlwZWRl c1syXSwgaW50IF9fZmxhZ3MpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgOwojIDQ1MiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1t aWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gdW5zaWduZWQgaW50 IGFsYXJtICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpOwojIDQ2NCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxk cm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWls ZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4g dW5zaWduZWQgaW50IHNsZWVwICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKTsKCgoKCgoKCmV4dGVy biBfX3VzZWNvbmRzX3QgdWFsYXJtIChfX3VzZWNvbmRzX3QgX192YWx1ZSwgX191c2Vjb25kc190 IF9faW50ZXJ2YWwpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKCgoKCgoKZXh0ZXJuIGludCB1c2xlZXAgKF9fdXNlY29uZHNfdCBfX3VzZWNvbmRzKTsKIyA0 ODkgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6 ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBwYXVzZSAodm9pZCk7CgoK CmV4dGVybiBpbnQgY2hvd24gKGNvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBf X2dpZF90IF9fZ3JvdXApCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgpleHRlcm4gaW50IGZj aG93biAoaW50IF9fZmQsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgoKCmV4dGVybiBpbnQgbGNob3du IChjb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwgX19naWRfdCBfX2dyb3VwKQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKCgoKZXh0ZXJuIGludCBmY2hvd25hdCAoaW50IF9f ZmQsIGNvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLAogICAgICAgX19naWRfdCBf X2dyb3VwLCBpbnQgX19mbGFnKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpIDsKCgoKZXh0ZXJuIGlu dCBjaGRpciAoY29uc3QgY2hhciAqX19wYXRoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgoKCmV4dGVy biBpbnQgZmNoZGlyIChpbnQgX19mZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSA7CiMgNTMxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1 aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBjaGFyICpn ZXRjd2QgKGNoYXIgKl9fYnVmLCBzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpCiAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX193cml0 ZV9vbmx5X18sIDEsIDIpKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKmdldF9jdXJyZW50X2Rpcl9uYW1l ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgoK ZXh0ZXJuIGNoYXIgKmdldHdkIChjaGFyICpfX2J1ZikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSBf X2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKQogICAgX19hdHRyaWJ1dGVfXyAoKF9fYWNj ZXNzX18gKF9fd3JpdGVfb25seV9fLCAxKSkpOwoKCgoKZXh0ZXJuIGludCBkdXAgKGludCBfX2Zk KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgpleHRlcm4gaW50 IGR1cDIgKGludCBfX2ZkLCBpbnQgX19mZDIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gaW50IGR1cDMgKGludCBfX2ZkLCBpbnQgX19mZDIsIGlu dCBfX2ZsYWdzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpl eHRlcm4gY2hhciAqKl9fZW52aXJvbjsKCmV4dGVybiBjaGFyICoqZW52aXJvbjsKCgoKCgpleHRl cm4gaW50IGV4ZWN2ZSAoY29uc3QgY2hhciAqX19wYXRoLCBjaGFyICpjb25zdCBfX2FyZ3ZbXSwK ICAgICBjaGFyICpjb25zdCBfX2VudnBbXSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgpleHRl cm4gaW50IGZleGVjdmUgKGludCBfX2ZkLCBjaGFyICpjb25zdCBfX2FyZ3ZbXSwgY2hhciAqY29u c3QgX19lbnZwW10pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKCgpleHRlcm4gaW50IGV4ZWN2 IChjb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKmNvbnN0IF9fYXJndltdKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxLCAyKSkpOwoKCgpleHRlcm4gaW50IGV4ZWNsZSAoY29uc3QgY2hhciAqX19wYXRoLCBj b25zdCBjaGFyICpfX2FyZywgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgpleHRl cm4gaW50IGV4ZWNsIChjb25zdCBjaGFyICpfX3BhdGgsIGNvbnN0IGNoYXIgKl9fYXJnLCAuLi4p CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4dGVybiBpbnQgZXhlY3ZwIChjb25zdCBj aGFyICpfX2ZpbGUsIGNoYXIgKmNvbnN0IF9fYXJndltdKQogICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAy KSkpOwoKCgoKZXh0ZXJuIGludCBleGVjbHAgKGNvbnN0IGNoYXIgKl9fZmlsZSwgY29uc3QgY2hh ciAqX19hcmcsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKCmV4dGVybiBpbnQg ZXhlY3ZwZSAoY29uc3QgY2hhciAqX19maWxlLCBjaGFyICpjb25zdCBfX2FyZ3ZbXSwKICAgICAg Y2hhciAqY29uc3QgX19lbnZwW10pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoKZXh0 ZXJuIGludCBuaWNlIChpbnQgX19pbmMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgOwoKCgoKZXh0ZXJuIHZvaWQgX2V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1 dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2ls aWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxh emVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9jb25mbmFt ZS5oIiAxIDMgNAojIDI0ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1 aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgiIDMgNAplbnVtCiAg ewogICAgX1BDX0xJTktfTUFYLAoKICAgIF9QQ19NQVhfQ0FOT04sCgogICAgX1BDX01BWF9JTlBV VCwKCiAgICBfUENfTkFNRV9NQVgsCgogICAgX1BDX1BBVEhfTUFYLAoKICAgIF9QQ19QSVBFX0JV RiwKCiAgICBfUENfQ0hPV05fUkVTVFJJQ1RFRCwKCiAgICBfUENfTk9fVFJVTkMsCgogICAgX1BD X1ZESVNBQkxFLAoKICAgIF9QQ19TWU5DX0lPLAoKICAgIF9QQ19BU1lOQ19JTywKCiAgICBfUENf UFJJT19JTywKCiAgICBfUENfU09DS19NQVhCVUYsCgogICAgX1BDX0ZJTEVTSVpFQklUUywKCiAg ICBfUENfUkVDX0lOQ1JfWEZFUl9TSVpFLAoKICAgIF9QQ19SRUNfTUFYX1hGRVJfU0laRSwKCiAg ICBfUENfUkVDX01JTl9YRkVSX1NJWkUsCgogICAgX1BDX1JFQ19YRkVSX0FMSUdOLAoKICAgIF9Q Q19BTExPQ19TSVpFX01JTiwKCiAgICBfUENfU1lNTElOS19NQVgsCgogICAgX1BDXzJfU1lNTElO S1MKCiAgfTsKCgplbnVtCiAgewogICAgX1NDX0FSR19NQVgsCgogICAgX1NDX0NISUxEX01BWCwK CiAgICBfU0NfQ0xLX1RDSywKCiAgICBfU0NfTkdST1VQU19NQVgsCgogICAgX1NDX09QRU5fTUFY LAoKICAgIF9TQ19TVFJFQU1fTUFYLAoKICAgIF9TQ19UWk5BTUVfTUFYLAoKICAgIF9TQ19KT0Jf Q09OVFJPTCwKCiAgICBfU0NfU0FWRURfSURTLAoKICAgIF9TQ19SRUFMVElNRV9TSUdOQUxTLAoK ICAgIF9TQ19QUklPUklUWV9TQ0hFRFVMSU5HLAoKICAgIF9TQ19USU1FUlMsCgogICAgX1NDX0FT WU5DSFJPTk9VU19JTywKCiAgICBfU0NfUFJJT1JJVElaRURfSU8sCgogICAgX1NDX1NZTkNIUk9O SVpFRF9JTywKCiAgICBfU0NfRlNZTkMsCgogICAgX1NDX01BUFBFRF9GSUxFUywKCiAgICBfU0Nf TUVNTE9DSywKCiAgICBfU0NfTUVNTE9DS19SQU5HRSwKCiAgICBfU0NfTUVNT1JZX1BST1RFQ1RJ T04sCgogICAgX1NDX01FU1NBR0VfUEFTU0lORywKCiAgICBfU0NfU0VNQVBIT1JFUywKCiAgICBf U0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19BSU9fTElTVElPX01BWCwKCiAgICBf U0NfQUlPX01BWCwKCiAgICBfU0NfQUlPX1BSSU9fREVMVEFfTUFYLAoKICAgIF9TQ19ERUxBWVRJ TUVSX01BWCwKCiAgICBfU0NfTVFfT1BFTl9NQVgsCgogICAgX1NDX01RX1BSSU9fTUFYLAoKICAg IF9TQ19WRVJTSU9OLAoKICAgIF9TQ19QQUdFU0laRSwKCgogICAgX1NDX1JUU0lHX01BWCwKCiAg ICBfU0NfU0VNX05TRU1TX01BWCwKCiAgICBfU0NfU0VNX1ZBTFVFX01BWCwKCiAgICBfU0NfU0lH UVVFVUVfTUFYLAoKICAgIF9TQ19USU1FUl9NQVgsCgoKCgogICAgX1NDX0JDX0JBU0VfTUFYLAoK ICAgIF9TQ19CQ19ESU1fTUFYLAoKICAgIF9TQ19CQ19TQ0FMRV9NQVgsCgogICAgX1NDX0JDX1NU UklOR19NQVgsCgogICAgX1NDX0NPTExfV0VJR0hUU19NQVgsCgogICAgX1NDX0VRVUlWX0NMQVNT X01BWCwKCiAgICBfU0NfRVhQUl9ORVNUX01BWCwKCiAgICBfU0NfTElORV9NQVgsCgogICAgX1ND X1JFX0RVUF9NQVgsCgogICAgX1NDX0NIQVJDTEFTU19OQU1FX01BWCwKCgogICAgX1NDXzJfVkVS U0lPTiwKCiAgICBfU0NfMl9DX0JJTkQsCgogICAgX1NDXzJfQ19ERVYsCgogICAgX1NDXzJfRk9S VF9ERVYsCgogICAgX1NDXzJfRk9SVF9SVU4sCgogICAgX1NDXzJfU1dfREVWLAoKICAgIF9TQ18y X0xPQ0FMRURFRiwKCgogICAgX1NDX1BJSSwKCiAgICBfU0NfUElJX1hUSSwKCiAgICBfU0NfUElJ X1NPQ0tFVCwKCiAgICBfU0NfUElJX0lOVEVSTkVULAoKICAgIF9TQ19QSUlfT1NJLAoKICAgIF9T Q19QT0xMLAoKICAgIF9TQ19TRUxFQ1QsCgogICAgX1NDX1VJT19NQVhJT1YsCgogICAgX1NDX0lP Vl9NQVggPSBfU0NfVUlPX01BWElPViwKCiAgICBfU0NfUElJX0lOVEVSTkVUX1NUUkVBTSwKCiAg ICBfU0NfUElJX0lOVEVSTkVUX0RHUkFNLAoKICAgIF9TQ19QSUlfT1NJX0NPVFMsCgogICAgX1ND X1BJSV9PU0lfQ0xUUywKCiAgICBfU0NfUElJX09TSV9NLAoKICAgIF9TQ19UX0lPVl9NQVgsCgoK CiAgICBfU0NfVEhSRUFEUywKCiAgICBfU0NfVEhSRUFEX1NBRkVfRlVOQ1RJT05TLAoKICAgIF9T Q19HRVRHUl9SX1NJWkVfTUFYLAoKICAgIF9TQ19HRVRQV19SX1NJWkVfTUFYLAoKICAgIF9TQ19M T0dJTl9OQU1FX01BWCwKCiAgICBfU0NfVFRZX05BTUVfTUFYLAoKICAgIF9TQ19USFJFQURfREVT VFJVQ1RPUl9JVEVSQVRJT05TLAoKICAgIF9TQ19USFJFQURfS0VZU19NQVgsCgogICAgX1NDX1RI UkVBRF9TVEFDS19NSU4sCgogICAgX1NDX1RIUkVBRF9USFJFQURTX01BWCwKCiAgICBfU0NfVEhS RUFEX0FUVFJfU1RBQ0tBRERSLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS1NJWkUsCgogICAg X1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HLAoKICAgIF9TQ19USFJFQURfUFJJT19JTkhF UklULAoKICAgIF9TQ19USFJFQURfUFJJT19QUk9URUNULAoKICAgIF9TQ19USFJFQURfUFJPQ0VT U19TSEFSRUQsCgoKICAgIF9TQ19OUFJPQ0VTU09SU19DT05GLAoKICAgIF9TQ19OUFJPQ0VTU09S U19PTkxOLAoKICAgIF9TQ19QSFlTX1BBR0VTLAoKICAgIF9TQ19BVlBIWVNfUEFHRVMsCgogICAg X1NDX0FURVhJVF9NQVgsCgogICAgX1NDX1BBU1NfTUFYLAoKCiAgICBfU0NfWE9QRU5fVkVSU0lP TiwKCiAgICBfU0NfWE9QRU5fWENVX1ZFUlNJT04sCgogICAgX1NDX1hPUEVOX1VOSVgsCgogICAg X1NDX1hPUEVOX0NSWVBULAoKICAgIF9TQ19YT1BFTl9FTkhfSTE4TiwKCiAgICBfU0NfWE9QRU5f U0hNLAoKCiAgICBfU0NfMl9DSEFSX1RFUk0sCgogICAgX1NDXzJfQ19WRVJTSU9OLAoKICAgIF9T Q18yX1VQRSwKCgogICAgX1NDX1hPUEVOX1hQRzIsCgogICAgX1NDX1hPUEVOX1hQRzMsCgogICAg X1NDX1hPUEVOX1hQRzQsCgoKICAgIF9TQ19DSEFSX0JJVCwKCiAgICBfU0NfQ0hBUl9NQVgsCgog ICAgX1NDX0NIQVJfTUlOLAoKICAgIF9TQ19JTlRfTUFYLAoKICAgIF9TQ19JTlRfTUlOLAoKICAg IF9TQ19MT05HX0JJVCwKCiAgICBfU0NfV09SRF9CSVQsCgogICAgX1NDX01CX0xFTl9NQVgsCgog ICAgX1NDX05aRVJPLAoKICAgIF9TQ19TU0laRV9NQVgsCgogICAgX1NDX1NDSEFSX01BWCwKCiAg ICBfU0NfU0NIQVJfTUlOLAoKICAgIF9TQ19TSFJUX01BWCwKCiAgICBfU0NfU0hSVF9NSU4sCgog ICAgX1NDX1VDSEFSX01BWCwKCiAgICBfU0NfVUlOVF9NQVgsCgogICAgX1NDX1VMT05HX01BWCwK CiAgICBfU0NfVVNIUlRfTUFYLAoKCiAgICBfU0NfTkxfQVJHTUFYLAoKICAgIF9TQ19OTF9MQU5H TUFYLAoKICAgIF9TQ19OTF9NU0dNQVgsCgogICAgX1NDX05MX05NQVgsCgogICAgX1NDX05MX1NF VE1BWCwKCiAgICBfU0NfTkxfVEVYVE1BWCwKCgogICAgX1NDX1hCUzVfSUxQMzJfT0ZGMzIsCgog ICAgX1NDX1hCUzVfSUxQMzJfT0ZGQklHLAoKICAgIF9TQ19YQlM1X0xQNjRfT0ZGNjQsCgogICAg X1NDX1hCUzVfTFBCSUdfT0ZGQklHLAoKCiAgICBfU0NfWE9QRU5fTEVHQUNZLAoKICAgIF9TQ19Y T1BFTl9SRUFMVElNRSwKCiAgICBfU0NfWE9QRU5fUkVBTFRJTUVfVEhSRUFEUywKCgogICAgX1ND X0FEVklTT1JZX0lORk8sCgogICAgX1NDX0JBUlJJRVJTLAoKICAgIF9TQ19CQVNFLAoKICAgIF9T Q19DX0xBTkdfU1VQUE9SVCwKCiAgICBfU0NfQ19MQU5HX1NVUFBPUlRfUiwKCiAgICBfU0NfQ0xP Q0tfU0VMRUNUSU9OLAoKICAgIF9TQ19DUFVUSU1FLAoKICAgIF9TQ19USFJFQURfQ1BVVElNRSwK CiAgICBfU0NfREVWSUNFX0lPLAoKICAgIF9TQ19ERVZJQ0VfU1BFQ0lGSUMsCgogICAgX1NDX0RF VklDRV9TUEVDSUZJQ19SLAoKICAgIF9TQ19GRF9NR01ULAoKICAgIF9TQ19GSUZPLAoKICAgIF9T Q19QSVBFLAoKICAgIF9TQ19GSUxFX0FUVFJJQlVURVMsCgogICAgX1NDX0ZJTEVfTE9DS0lORywK CiAgICBfU0NfRklMRV9TWVNURU0sCgogICAgX1NDX01PTk9UT05JQ19DTE9DSywKCiAgICBfU0Nf TVVMVElfUFJPQ0VTUywKCiAgICBfU0NfU0lOR0xFX1BST0NFU1MsCgogICAgX1NDX05FVFdPUktJ TkcsCgogICAgX1NDX1JFQURFUl9XUklURVJfTE9DS1MsCgogICAgX1NDX1NQSU5fTE9DS1MsCgog ICAgX1NDX1JFR0VYUCwKCiAgICBfU0NfUkVHRVhfVkVSU0lPTiwKCiAgICBfU0NfU0hFTEwsCgog ICAgX1NDX1NJR05BTFMsCgogICAgX1NDX1NQQVdOLAoKICAgIF9TQ19TUE9SQURJQ19TRVJWRVIs CgogICAgX1NDX1RIUkVBRF9TUE9SQURJQ19TRVJWRVIsCgogICAgX1NDX1NZU1RFTV9EQVRBQkFT RSwKCiAgICBfU0NfU1lTVEVNX0RBVEFCQVNFX1IsCgogICAgX1NDX1RJTUVPVVRTLAoKICAgIF9T Q19UWVBFRF9NRU1PUllfT0JKRUNUUywKCiAgICBfU0NfVVNFUl9HUk9VUFMsCgogICAgX1NDX1VT RVJfR1JPVVBTX1IsCgogICAgX1NDXzJfUEJTLAoKICAgIF9TQ18yX1BCU19BQ0NPVU5USU5HLAoK ICAgIF9TQ18yX1BCU19MT0NBVEUsCgogICAgX1NDXzJfUEJTX01FU1NBR0UsCgogICAgX1NDXzJf UEJTX1RSQUNLLAoKICAgIF9TQ19TWU1MT09QX01BWCwKCiAgICBfU0NfU1RSRUFNUywKCiAgICBf U0NfMl9QQlNfQ0hFQ0tQT0lOVCwKCgogICAgX1NDX1Y2X0lMUDMyX09GRjMyLAoKICAgIF9TQ19W Nl9JTFAzMl9PRkZCSUcsCgogICAgX1NDX1Y2X0xQNjRfT0ZGNjQsCgogICAgX1NDX1Y2X0xQQklH X09GRkJJRywKCgogICAgX1NDX0hPU1RfTkFNRV9NQVgsCgogICAgX1NDX1RSQUNFLAoKICAgIF9T Q19UUkFDRV9FVkVOVF9GSUxURVIsCgogICAgX1NDX1RSQUNFX0lOSEVSSVQsCgogICAgX1NDX1RS QUNFX0xPRywKCgogICAgX1NDX0xFVkVMMV9JQ0FDSEVfU0laRSwKCiAgICBfU0NfTEVWRUwxX0lD QUNIRV9BU1NPQywKCiAgICBfU0NfTEVWRUwxX0lDQUNIRV9MSU5FU0laRSwKCiAgICBfU0NfTEVW RUwxX0RDQUNIRV9TSVpFLAoKICAgIF9TQ19MRVZFTDFfRENBQ0hFX0FTU09DLAoKICAgIF9TQ19M RVZFTDFfRENBQ0hFX0xJTkVTSVpFLAoKICAgIF9TQ19MRVZFTDJfQ0FDSEVfU0laRSwKCiAgICBf U0NfTEVWRUwyX0NBQ0hFX0FTU09DLAoKICAgIF9TQ19MRVZFTDJfQ0FDSEVfTElORVNJWkUsCgog ICAgX1NDX0xFVkVMM19DQUNIRV9TSVpFLAoKICAgIF9TQ19MRVZFTDNfQ0FDSEVfQVNTT0MsCgog ICAgX1NDX0xFVkVMM19DQUNIRV9MSU5FU0laRSwKCiAgICBfU0NfTEVWRUw0X0NBQ0hFX1NJWkUs CgogICAgX1NDX0xFVkVMNF9DQUNIRV9BU1NPQywKCiAgICBfU0NfTEVWRUw0X0NBQ0hFX0xJTkVT SVpFLAoKCgogICAgX1NDX0lQVjYgPSBfU0NfTEVWRUwxX0lDQUNIRV9TSVpFICsgNTAsCgogICAg X1NDX1JBV19TT0NLRVRTLAoKCiAgICBfU0NfVjdfSUxQMzJfT0ZGMzIsCgogICAgX1NDX1Y3X0lM UDMyX09GRkJJRywKCiAgICBfU0NfVjdfTFA2NF9PRkY2NCwKCiAgICBfU0NfVjdfTFBCSUdfT0ZG QklHLAoKCiAgICBfU0NfU1NfUkVQTF9NQVgsCgoKICAgIF9TQ19UUkFDRV9FVkVOVF9OQU1FX01B WCwKCiAgICBfU0NfVFJBQ0VfTkFNRV9NQVgsCgogICAgX1NDX1RSQUNFX1NZU19NQVgsCgogICAg X1NDX1RSQUNFX1VTRVJfRVZFTlRfTUFYLAoKCiAgICBfU0NfWE9QRU5fU1RSRUFNUywKCgogICAg X1NDX1RIUkVBRF9ST0JVU1RfUFJJT19JTkhFUklULAoKICAgIF9TQ19USFJFQURfUk9CVVNUX1BS SU9fUFJPVEVDVCwKCgogICAgX1NDX01JTlNJR1NUS1NaLAoKCiAgICBfU0NfU0lHU1RLU1oKCiAg fTsKCgplbnVtCiAgewogICAgX0NTX1BBVEgsCgoKICAgIF9DU19WNl9XSURUSF9SRVNUUklDVEVE X0VOVlMsCgoKCiAgICBfQ1NfR05VX0xJQkNfVkVSU0lPTiwKCiAgICBfQ1NfR05VX0xJQlBUSFJF QURfVkVSU0lPTiwKCgogICAgX0NTX1Y1X1dJRFRIX1JFU1RSSUNURURfRU5WUywKCgoKICAgIF9D U19WN19XSURUSF9SRVNUUklDVEVEX0VOVlMsCgoKCiAgICBfQ1NfTEZTX0NGTEFHUyA9IDEwMDAs CgogICAgX0NTX0xGU19MREZMQUdTLAoKICAgIF9DU19MRlNfTElCUywKCiAgICBfQ1NfTEZTX0xJ TlRGTEFHUywKCiAgICBfQ1NfTEZTNjRfQ0ZMQUdTLAoKICAgIF9DU19MRlM2NF9MREZMQUdTLAoK ICAgIF9DU19MRlM2NF9MSUJTLAoKICAgIF9DU19MRlM2NF9MSU5URkxBR1MsCgoKICAgIF9DU19Y QlM1X0lMUDMyX09GRjMyX0NGTEFHUyA9IDExMDAsCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJf TERGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTLAoKICAgIF9DU19YQlM1X0lM UDMyX09GRjMyX0xJTlRGTEFHUywKCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfQ0ZMQUdTLAoK ICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTLAoKICAgIF9DU19YQlM1X0lMUDMyX09G RkJJR19MSUJTLAoKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19MSU5URkxBR1MsCgogICAgX0NT X1hCUzVfTFA2NF9PRkY2NF9DRkxBR1MsCgogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MREZMQUdT LAoKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElCUywKCiAgICBfQ1NfWEJTNV9MUDY0X09GRjY0 X0xJTlRGTEFHUywKCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19Y QlM1X0xQQklHX09GRkJJR19MREZMQUdTLAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19MSUJT LAoKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19MSU5URkxBR1MsCgoKICAgIF9DU19QT1NJWF9W Nl9JTFAzMl9PRkYzMl9DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xERkxB R1MsCgogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2 X0lMUDMyX09GRjMyX0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0NG TEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1BP U0lYX1Y2X0lMUDMyX09GRkJJR19MSUJTLAoKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdf TElOVEZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0X0NGTEFHUywKCiAgICBfQ1Nf UE9TSVhfVjZfTFA2NF9PRkY2NF9MREZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0 X0xJQlMsCgogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElOVEZMQUdTLAoKICAgIF9DU19Q T1NJWF9WNl9MUEJJR19PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WNl9MUEJJR19PRkZC SUdfTERGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklHX0xJQlMsCgogICAgX0NT X1BPU0lYX1Y2X0xQQklHX09GRkJJR19MSU5URkxBR1MsCgoKICAgIF9DU19QT1NJWF9WN19JTFAz Ml9PRkYzMl9DRkxBR1MsCgogICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRjMyX0xERkxBR1MsCgog ICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRjMyX0xJQlMsCgogICAgX0NTX1BPU0lYX1Y3X0lMUDMy X09GRjMyX0xJTlRGTEFHUywKCiAgICBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGQklHX0NGTEFHUywK CiAgICBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGQklHX0xERkxBR1MsCgogICAgX0NTX1BPU0lYX1Y3 X0lMUDMyX09GRkJJR19MSUJTLAoKICAgIF9DU19QT1NJWF9WN19JTFAzMl9PRkZCSUdfTElOVEZM QUdTLAoKICAgIF9DU19QT1NJWF9WN19MUDY0X09GRjY0X0NGTEFHUywKCiAgICBfQ1NfUE9TSVhf VjdfTFA2NF9PRkY2NF9MREZMQUdTLAoKICAgIF9DU19QT1NJWF9WN19MUDY0X09GRjY0X0xJQlMs CgogICAgX0NTX1BPU0lYX1Y3X0xQNjRfT0ZGNjRfTElOVEZMQUdTLAoKICAgIF9DU19QT1NJWF9W N19MUEJJR19PRkZCSUdfQ0ZMQUdTLAoKICAgIF9DU19QT1NJWF9WN19MUEJJR19PRkZCSUdfTERG TEFHUywKCiAgICBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0xJQlMsCgogICAgX0NTX1BPU0lY X1Y3X0xQQklHX09GRkJJR19MSU5URkxBR1MsCgoKICAgIF9DU19WNl9FTlYsCgogICAgX0NTX1Y3 X0VOVgoKICB9OwojIDYzMiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9i dWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3Qt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMyA0CgoKZXh0ZXJuIGxv bmcgaW50IHBhdGhjb25mIChjb25zdCBjaGFyICpfX3BhdGgsIGludCBfX25hbWUpCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29uZiAoaW50IF9fZmQsIGlu dCBfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0 ZXJuIGxvbmcgaW50IHN5c2NvbmYgKGludCBfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBzaXplX3QgY29uZnN0ciAoaW50IF9fbmFtZSwg Y2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKQogICAgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fd3JpdGVfb25seV9f LCAyLCAzKSkpOwoKCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGlkICh2b2lkKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBfX3BpZF90IGdldHBwaWQgKHZv aWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIF9f cGlkX3QgZ2V0cGdycCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKCgpleHRlcm4gX19waWRfdCBfX2dldHBnaWQgKF9fcGlkX3QgX19waWQpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgpleHRlcm4gX19waWRfdCBnZXRwZ2lk IChfX3BpZF90IF9fcGlkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp OwoKCgoKCgpleHRlcm4gaW50IHNldHBnaWQgKF9fcGlkX3QgX19waWQsIF9fcGlkX3QgX19wZ2lk KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDY4MyAiL2hvbWUv amNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEt dGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gaW50IHNldHBncnAgKHZvaWQpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCmV4dGVybiBfX3BpZF90IHNldHNp ZCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0 ZXJuIF9fcGlkX3QgZ2V0c2lkIChfX3BpZF90IF9fcGlkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gX191aWRfdCBnZXR1aWQgKHZvaWQpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIF9fdWlkX3QgZ2V0 ZXVpZCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpl eHRlcm4gX19naWRfdCBnZXRnaWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0ZWdpZCAodm9pZCkgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCmV4dGVybiBpbnQgZ2V0Z3JvdXBzIChp bnQgX19zaXplLCBfX2dpZF90IF9fbGlzdFtdKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpCiAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX193cml0ZV9vbmx5 X18sIDIsIDEpKSk7CgoKZXh0ZXJuIGludCBncm91cF9tZW1iZXIgKF9fZ2lkX3QgX19naWQpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCmV4dGVybiBpbnQg c2V0dWlkIChfX3VpZF90IF9fdWlkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIDsKCgoKCmV4dGVybiBpbnQgc2V0cmV1aWQgKF9fdWlkX3QgX19ydWlkLCBfX3VpZF90 IF9fZXVpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgpl eHRlcm4gaW50IHNldGV1aWQgKF9fdWlkX3QgX191aWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKCgpleHRlcm4gaW50IHNldGdpZCAoX19naWRfdCBfX2dp ZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgpleHRlcm4g aW50IHNldHJlZ2lkIChfX2dpZF90IF9fcmdpZCwgX19naWRfdCBfX2VnaWQpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKZXh0ZXJuIGludCBzZXRlZ2lkIChf X2dpZF90IF9fZ2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsK CgoKCgpleHRlcm4gaW50IGdldHJlc3VpZCAoX191aWRfdCAqX19ydWlkLCBfX3VpZF90ICpfX2V1 aWQsIF9fdWlkX3QgKl9fc3VpZCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwoKCgpleHRlcm4gaW50IGdldHJlc2dpZCAoX19naWRfdCAqX19yZ2lkLCBfX2dp ZF90ICpfX2VnaWQsIF9fZ2lkX3QgKl9fc2dpZCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gaW50IHNldHJlc3VpZCAoX191aWRfdCBfX3J1 aWQsIF9fdWlkX3QgX19ldWlkLCBfX3VpZF90IF9fc3VpZCkKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgoKZXh0ZXJuIGludCBzZXRyZXNnaWQgKF9fZ2lk X3QgX19yZ2lkLCBfX2dpZF90IF9fZWdpZCwgX19naWRfdCBfX3NnaWQpCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgoKCmV4dGVybiBfX3BpZF90IGZv cmsgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCgoKCgoKZXh0ZXJuIF9f cGlkX3QgdmZvcmsgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7CgoKCgoKCmV4dGVybiBfX3BpZF90IF9Gb3JrICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCmV4dGVybiBjaGFyICp0dHluYW1lIChpbnQgX19m ZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIGlu dCB0dHluYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgyKSkpIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3dyaXRlX29u bHlfXywgMiwgMykpKTsKCgoKZXh0ZXJuIGludCBpc2F0dHkgKGludCBfX2ZkKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIGludCB0dHlzbG90ICh2 b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJu IGludCBsaW5rIChjb25zdCBjaGFyICpfX2Zyb20sIGNvbnN0IGNoYXIgKl9fdG8pCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEsIDIpKSkgOwoKCgoKZXh0ZXJuIGludCBsaW5rYXQgKGludCBfX2Zyb21mZCwg Y29uc3QgY2hhciAqX19mcm9tLCBpbnQgX190b2ZkLAogICAgIGNvbnN0IGNoYXIgKl9fdG8sIGlu dCBfX2ZsYWdzKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCA0KSkpIDsKCgoKCmV4dGVybiBpbnQgc3lt bGluayAoY29uc3QgY2hhciAqX19mcm9tLCBjb25zdCBjaGFyICpfX3RvKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxLCAyKSkpIDsKCgoKCmV4dGVybiBzc2l6ZV90IHJlYWRsaW5rIChjb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fcGF0aCwKICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xl bikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKSBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAo X193cml0ZV9vbmx5X18sIDIsIDMpKSk7CgoKCgoKZXh0ZXJuIGludCBzeW1saW5rYXQgKGNvbnN0 IGNoYXIgKl9fZnJvbSwgaW50IF9fdG9mZCwKICAgICAgICBjb25zdCBjaGFyICpfX3RvKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSwgMykpKSA7CgoKZXh0ZXJuIHNzaXplX3QgcmVhZGxpbmthdCAoaW50IF9fZmQs IGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19wYXRoLAogICAgICBjaGFyICpfX3Jlc3RyaWN0IF9f YnVmLCBzaXplX3QgX19sZW4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIsIDMpKSkgX19hdHRyaWJ1dGVf XyAoKF9fYWNjZXNzX18gKF9fd3JpdGVfb25seV9fLCAzLCA0KSkpOwoKCgpleHRlcm4gaW50IHVu bGluayAoY29uc3QgY2hhciAqX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGlu dCB1bmxpbmthdCAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fZmxhZykKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMikpKTsKCgoKZXh0ZXJuIGludCBybWRpciAoY29uc3QgY2hhciAqX19w YXRoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIF9fcGlkX3QgdGNnZXRwZ3JwIChpbnQg X19mZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4g aW50IHRjc2V0cGdycCAoaW50IF9fZmQsIF9fcGlkX3QgX19wZ3JwX2lkKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gY2hhciAqZ2V0bG9naW4g KHZvaWQpOwoKCgoKCgoKZXh0ZXJuIGludCBnZXRsb2dpbl9yIChjaGFyICpfX25hbWUsIHNpemVf dCBfX25hbWVfbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkKICAgIF9fYXR0 cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3dyaXRlX29ubHlfXywgMSwgMikpKTsKCgoKCmV4dGVy biBpbnQgc2V0bG9naW4gKGNvbnN0IGNoYXIgKl9fbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoK CgoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWlj cm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZ2V0b3B0X3Bvc2l4LmgiIDEgMyA0CiMgMjcgIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL2JpdHMvZ2V0b3B0X3Bvc2l4LmgiIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dz L3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9t aWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMv Z2V0b3B0X2NvcmUuaCIgMSAzIDQKIyAyOCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1 aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1i dWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9nZXRvcHRfY29yZS5o IiAzIDQKCgoKCgoKCgpleHRlcm4gY2hhciAqb3B0YXJnOwojIDUwICIvaG9tZS9qY212YmtiYy93 cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3Qv bWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRz L2dldG9wdF9jb3JlLmgiIDMgNApleHRlcm4gaW50IG9wdGluZDsKCgoKCmV4dGVybiBpbnQgb3B0 ZXJyOwoKCgpleHRlcm4gaW50IG9wdG9wdDsKIyA5MSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2ls aWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxh emVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9nZXRvcHRf Y29yZS5oIiAzIDQKZXh0ZXJuIGludCBnZXRvcHQgKGludCBfX19hcmdjLCBjaGFyICpjb25zdCAq X19fYXJndiwgY29uc3QgY2hhciAqX19zaG9ydG9wdHMpCiAgICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwg MykpKTsKCgojIDI4ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxk LW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2dldG9wdF9wb3NpeC5oIiAyIDMgNAoKCiMg NDkgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6 ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvZ2V0b3B0X3Bvc2l4LmgiIDMgNAoKIyA5MDIgIi9ob21lL2pj bXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRl c3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL3VuaXN0ZC5oIiAyIDMgNAoKCgoKCgoKZXh0ZXJuIGludCBnZXRob3N0bmFtZSAoY2hhciAq X19uYW1lLCBzaXplX3QgX19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpCiAgICBfX2F0dHJpYnV0ZV9f ICgoX19hY2Nlc3NfXyAoX193cml0ZV9vbmx5X18sIDEsIDIpKSk7CgoKCgoKCmV4dGVybiBpbnQg c2V0aG9zdG5hbWUgKGNvbnN0IGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9fbGVuKQogICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3JlYWRfb25seV9fLCAx LCAyKSkpOwoKCgpleHRlcm4gaW50IHNldGhvc3RpZCAobG9uZyBpbnQgX19pZCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgoKZXh0ZXJuIGludCBnZXRkb21h aW5uYW1lIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KSBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX193cml0ZV9vbmx5X18sIDEsIDIpKSk7CmV4 dGVybiBpbnQgc2V0ZG9tYWlubmFtZSAoY29uc3QgY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4p CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fcmVh ZF9vbmx5X18sIDEsIDIpKSk7CgoKCgpleHRlcm4gaW50IHZoYW5ndXAgKHZvaWQpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIGludCByZXZva2UgKGNv bnN0IGNoYXIgKl9fZmlsZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgoKCgoKZXh0ZXJuIGludCBw cm9maWwgKHVuc2lnbmVkIHNob3J0IGludCAqX19zYW1wbGVfYnVmZmVyLCBzaXplX3QgX19zaXpl LAogICAgIHNpemVfdCBfX29mZnNldCwgdW5zaWduZWQgaW50IF9fc2NhbGUpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEpKSk7CgoKCgoKZXh0ZXJuIGludCBhY2N0IChjb25zdCBjaGFyICpfX25hbWUpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBjaGFyICpn ZXR1c2Vyc2hlbGwgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7CmV4dGVybiB2b2lkIGVuZHVzZXJzaGVsbCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIHZvaWQgc2V0dXNlcnNoZWxsICh2b2lkKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCmV4dGVybiBpbnQgZGFl bW9uIChpbnQgX19ub2NoZGlyLCBpbnQgX19ub2Nsb3NlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIDsKCgoKCgoKZXh0ZXJuIGludCBjaHJvb3QgKGNvbnN0IGNoYXIg Kl9fcGF0aCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgpleHRlcm4gY2hhciAqZ2V0cGFzcyAoY29u c3QgY2hhciAqX19wcm9tcHQpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoK CgoKCmV4dGVybiBpbnQgZnN5bmMgKGludCBfX2ZkKTsKCgoKCgpleHRlcm4gaW50IHN5bmNmcyAo aW50IF9fZmQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoK CmV4dGVybiBsb25nIGludCBnZXRob3N0aWQgKHZvaWQpOwoKCmV4dGVybiB2b2lkIHN5bmMgKHZv aWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKZXh0ZXJu IGludCBnZXRwYWdlc2l6ZSAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IGdldGR0 YWJsZXNpemUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 CiMgMTAyNyAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNy b2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gaW50IHRydW5jYXRlIChj b25zdCBjaGFyICpfX2ZpbGUsIF9fb2ZmNjRfdCBfX2xlbmd0aCkgX19hc21fXyAoIiIgInRydW5j YXRlNjQiKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpCgogICAgICAg ICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgoKCmV4dGVy biBpbnQgdHJ1bmNhdGU2NCAoY29uc3QgY2hhciAqX19maWxlLCBfX29mZjY0X3QgX19sZW5ndGgp CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwojIDEwNDkgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz IDQKZXh0ZXJuIGludCBmdHJ1bmNhdGUgKGludCBfX2ZkLCBfX29mZjY0X3QgX19sZW5ndGgpIF9f YXNtX18gKCIiICJmdHJ1bmNhdGU2NCIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkKICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKCmV4dGVybiBpbnQgZnRydW5j YXRlNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19sZW5ndGgpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgOwojIDEwNjcgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGlj YS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXpl ZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQK ZXh0ZXJuIGludCBicmsgKHZvaWQgKl9fYWRkcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSA7CgoKCgoKZXh0ZXJuIHZvaWQgKnNicmsgKGludHB0cl90IF9fZGVsdGEp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMTA4OCAiL2hvbWUv amNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEt dGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gbG9uZyBpbnQgc3lzY2FsbCAobG9uZyBpbnQgX19z eXNubywgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDEx MTQgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6 ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBsb2NrZiAoaW50IF9fZmQs IGludCBfX2NtZCwgX19vZmY2NF90IF9fbGVuKSBfX2FzbV9fICgiIiAibG9ja2Y2NCIpCiAgICAg ICAgICAgICAgICAgICAgICAgOwoKCgoKCmV4dGVybiBpbnQgbG9ja2Y2NCAoaW50IF9fZmQsIGlu dCBfX2NtZCwgX19vZmY2NF90IF9fbGVuKSA7CiMgMTEzOSAiL2hvbWUvamNtdmJrYmMvd3MvdGVu c2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3Jv YmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgi IDMgNApzc2l6ZV90IGNvcHlfZmlsZV9yYW5nZSAoaW50IF9faW5mZCwgX19vZmY2NF90ICpfX3Bp bm9mZiwKICAgIGludCBfX291dGZkLCBfX29mZjY0X3QgKl9fcG91dG9mZiwKICAgIHNpemVfdCBf X2xlbmd0aCwgdW5zaWduZWQgaW50IF9fZmxhZ3MpOwoKCgoKCmV4dGVybiBpbnQgZmRhdGFzeW5j IChpbnQgX19maWxkZXMpOwojIDExNTYgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWls ZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVp bGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJu IGNoYXIgKmNyeXB0IChjb25zdCBjaGFyICpfX2tleSwgY29uc3QgY2hhciAqX19zYWx0KQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgc3dhYiAoY29uc3Qgdm9p ZCAqX19yZXN0cmljdCBfX2Zyb20sIHZvaWQgKl9fcmVzdHJpY3QgX190bywKICAgIHNzaXplX3Qg X19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSwgMikpKQogICAgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18g KF9fcmVhZF9vbmx5X18sIDEsIDMpKSkKICAgIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChf X3dyaXRlX29ubHlfXywgMiwgMykpKTsKIyAxMTk1ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxp Y2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6 ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0 CmludCBnZXRlbnRyb3B5ICh2b2lkICpfX2J1ZmZlciwgc2l6ZV90IF9fbGVuZ3RoKQogICAgX19h dHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fd3JpdGVfb25seV9fLCAxLCAyKSkpOwojIDEyMDUg Ii9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0y MDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxp Y2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6 ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3VuaXN0ZF9l eHQuaCIgMSAzIDQKIyAzNCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9i dWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3Qt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy91bmlzdGRfZXh0LmgiIDMgNApleHRl cm4gX19waWRfdCBnZXR0aWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7CgoKCiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9i dWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3Qt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvbGludXgvY2xvc2VfcmFuZ2UuaCIgMSAzIDQK IyAzOSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2Js YXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy91bmlzdGRfZXh0LmgiIDIgMyA0CiMgNTYgIi9ob21lL2pj bXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRl c3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL2JpdHMvdW5pc3RkX2V4dC5oIiAzIDQKZXh0ZXJuIGludCBjbG9zZV9yYW5nZSAodW5zaWdu ZWQgaW50IF9fZmQsIHVuc2lnbmVkIGludCBfX21heF9mZCwKICAgaW50IF9fZmxhZ3MpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgMTIwNiAiL2hvbWUvamNtdmJr YmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9o b3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv dW5pc3RkLmgiIDIgMyA0CgoKIyAxMDMgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL3Rz eXN0ZW0uaCIgMgoKCiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2djYy9idWlsZHMv Xy9nY2MvaW5jbHVkZS9saW1pdHMuaCIgMSAzIDQKIyAzNCAiL2hvbWUvamNtdmJrYmMvd3MvdGVu c2lsaWNhL2djYy9idWlsZHMvXy9nY2MvaW5jbHVkZS9saW1pdHMuaCIgMyA0CiMgMSAiL2hvbWUv amNtdmJrYmMvd3MvdGVuc2lsaWNhL2djYy9idWlsZHMvXy9nY2MvaW5jbHVkZS9zeXNsaW1pdHMu aCIgMSAzIDQKCgoKCgoKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvZ2NjL2J1aWxk cy9fL2djYy9pbmNsdWRlL2xpbWl0cy5oIiAxIDMgNAojIDIwMyAiL2hvbWUvamNtdmJrYmMvd3Mv dGVuc2lsaWNhL2djYy9idWlsZHMvXy9nY2MvaW5jbHVkZS9saW1pdHMuaCIgMyA0CiMgMSAiL2hv bWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEu MTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0CiMgMjYgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGlj YS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXpl ZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzIDQK IyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxh emUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS9iaXRzL2xpYmMtaGVhZGVyLXN0YXJ0LmgiIDEgMyA0CiMgMjcgIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMgNAojIDE5NSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2ls aWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxh emVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDMg NAojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9i bGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAxIDMgNAojIDI3ICIvaG9tZS9q Y212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10 ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2ls aWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxh emVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6 ZS5oIiAxIDMgNAojIDI4ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1 aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMiAzIDQKIyAx NjEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6 ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvcG9zaXgxX2xpbS5oIiAzIDQKIyAxICIvaG9tZS9qY212Ymti Yy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hv c3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9i aXRzL2xvY2FsX2xpbS5oIiAxIDMgNAojIDM4ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2Ev YnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVs LWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2xvY2FsX2xpbS5o IiAzIDQKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1p Y3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9saW1pdHMuaCIgMSAzIDQKIyAzOSAiL2hvbWUv amNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEt dGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMiAzIDQKIyA4MSAiL2hvbWUvamNtdmJrYmMvd3MvdGVu c2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3Jv YmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9sb2Nh bF9saW0uaCIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9i dWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3Qt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkX3N0YWNrX21pbi1keW5h bWljLmgiIDEgMyA0CiMgMjMgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3Qv YnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZF9zdGFja19taW4tZHlu YW1pYy5oIiAzIDQKCmV4dGVybiBsb25nIGludCBfX3N5c2NvbmYgKGludCBfX25hbWUpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgojIDgyICIvaG9tZS9qY212Ymti Yy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hv c3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9i aXRzL2xvY2FsX2xpbS5oIiAyIDMgNAojIDE2MiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNh L2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVl bC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGlt LmgiIDIgMyA0CiMgMTk2ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1 aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAzIDQKCgoKIyAxICIvaG9t ZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4x MS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMSAzIDQKIyAyMDAgIi9ob21lL2pjbXZia2JjL3dz L3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9t aWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbWl0 cy5oIiAyIDMgNAoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3Qv YnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDEgMyA0CiMg NjQgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6 ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDMgNAojIDEgIi9ob21lL2pjbXZia2Jj L3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9z dC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Jp dHMvdWlvX2xpbS5oIiAxIDMgNAojIDY1ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVp bGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1 aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAy IDMgNAojIDIwNCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1t aWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgMjA0ICIvaG9tZS9qY212 YmtiYy93cy90ZW5zaWxpY2EvZ2NjL2J1aWxkcy9fL2djYy9pbmNsdWRlL2xpbWl0cy5oIiAyIDMg NAojIDggIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9nY2MvYnVpbGRzL18vZ2NjL2luY2x1 ZGUvc3lzbGltaXRzLmgiIDIgMyA0CiMgMzUgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9n Y2MvYnVpbGRzL18vZ2NjL2luY2x1ZGUvbGltaXRzLmgiIDIgMyA0CiMgMTA2ICIuLi8uLi8uLi8u Li9nY2MvbGliZ2NjLy4uL2djYy90c3lzdGVtLmgiIDIKCgojIDEgIi9ob21lL2pjbXZia2JjL3dz L3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9t aWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3RpbWUu aCIgMSAzIDQKIyAyOSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWls ZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGlu dXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKIyAxICIvaG9tZS9qY212Ymti Yy93cy90ZW5zaWxpY2EvZ2NjL2J1aWxkcy9fL2djYy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAoj IDMwICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxh emUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS90aW1lLmgiIDIgMyA0CgoKCiMgMSAiL2hvbWUvamNtdmJrYmMvd3Mv dGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21p Y3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90 aW1lLmgiIDEgMyA0CiMgNzMgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3Qv YnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzIDQKIyAxICIvaG9t ZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4x MS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9iaXRzL3RpbWV4LmgiIDEgMyA0CiMgMjYgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdGltZXgu aCIgMyA0CnN0cnVjdCB0aW1leAp7CiMgNTggIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9i dWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwt YnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdGltZXguaCIgMyA0 CiAgdW5zaWduZWQgaW50IG1vZGVzOwogIF9fc3lzY2FsbF9zbG9uZ190IG9mZnNldDsKICBfX3N5 c2NhbGxfc2xvbmdfdCBmcmVxOwogIF9fc3lzY2FsbF9zbG9uZ190IG1heGVycm9yOwogIF9fc3lz Y2FsbF9zbG9uZ190IGVzdGVycm9yOwogIGludCBzdGF0dXM7CiAgX19zeXNjYWxsX3Nsb25nX3Qg Y29uc3RhbnQ7CiAgX19zeXNjYWxsX3Nsb25nX3QgcHJlY2lzaW9uOwogIF9fc3lzY2FsbF9zbG9u Z190IHRvbGVyYW5jZTsKICBzdHJ1Y3QgdGltZXZhbCB0aW1lOwogIF9fc3lzY2FsbF9zbG9uZ190 IHRpY2s7CiAgX19zeXNjYWxsX3Nsb25nX3QgcHBzZnJlcTsKICBfX3N5c2NhbGxfc2xvbmdfdCBq aXR0ZXI7CiAgaW50IHNoaWZ0OwogIF9fc3lzY2FsbF9zbG9uZ190IHN0YWJpbDsKICBfX3N5c2Nh bGxfc2xvbmdfdCBqaXRjbnQ7CiAgX19zeXNjYWxsX3Nsb25nX3QgY2FsY250OwogIF9fc3lzY2Fs bF9zbG9uZ190IGVycmNudDsKICBfX3N5c2NhbGxfc2xvbmdfdCBzdGJjbnQ7CgogIGludCB0YWk7 CgoKICBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwogIGludCA6MzI7IGludCA6 MzI7IGludCA6MzI7IGludCA6MzI7CiAgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKCn07CiMg NzQgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6 ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAyIDMgNAoKCgoKZXh0ZXJuIGludCBjbG9ja19h ZGp0aW1lIChfX2Nsb2NraWRfdCBfX2Nsb2NrX2lkLCBzdHJ1Y3QgdGltZXggKl9fdXR4KSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDkwICIvaG9tZS9qY212Ymti Yy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hv c3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9i aXRzL3RpbWUuaCIgMyA0CgojIDM0ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRy b290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxk cm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS90aW1lLmgiIDIgMyA0CgoKCgoKIyAx ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL3N0cnVjdF90bS5oIiAxIDMgNAoKCgoKCgpzdHJ1Y3Qg dG0KewogIGludCB0bV9zZWM7CiAgaW50IHRtX21pbjsKICBpbnQgdG1faG91cjsKICBpbnQgdG1f bWRheTsKICBpbnQgdG1fbW9uOwogIGludCB0bV95ZWFyOwogIGludCB0bV93ZGF5OwogIGludCB0 bV95ZGF5OwogIGludCB0bV9pc2RzdDsKCgogIGxvbmcgaW50IHRtX2dtdG9mZjsKICBjb25zdCBj aGFyICp0bV96b25lOwoKCgoKfTsKIyA0MCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1 aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1i dWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMgNAojIDQ4 ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGlj YS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXpl ZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvc3Ry dWN0X2l0aW1lcnNwZWMuaCIgMSAzIDQKCgoKCgoKCnN0cnVjdCBpdGltZXJzcGVjCiAgewogICAg c3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwogICAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVl OwogIH07CiMgNDkgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQt bWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzIDQKc3RydWN0IHNpZ2V2ZW50Owoj IDY4ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxh emUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAoKCgoKZXh0ZXJuIGNsb2NrX3QgY2xvY2sgKHZv aWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiB0 aW1lX3QgdGltZSAodGltZV90ICpfX3RpbWVyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpOwoKCmV4dGVybiBkb3VibGUgZGlmZnRpbWUgKHRpbWVfdCBfX3RpbWUxLCB0 aW1lX3QgX190aW1lMCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gdGltZV90IG1rdGltZSAo c3RydWN0IHRtICpfX3RwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp OwojIDEwMCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNy b2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIHNpemVfdCBzdHJmdGltZSAo Y2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heHNpemUsCiAgIGNvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19mb3JtYXQsCiAgIGNvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIGNoYXIg KnN0cnB0aW1lIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2ZtdCwgc3RydWN0IHRtICpfX3RwKQogICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCmV4dGVybiBzaXplX3Qgc3RyZnRpbWVf bCAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX21heHNpemUsCiAgICAgY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICBjb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3Qg X190cCwKICAgICBsb2NhbGVfdCBfX2xvYykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKCgoKZXh0ZXJuIGNoYXIgKnN0cnB0aW1lX2wgKGNvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19zLAogICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgc3RydWN0IHRtICpf X3RwLAogICAgbG9jYWxlX3QgX19sb2MpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoY29uc3QgdGltZV90ICpf X3RpbWVyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRl cm4gc3RydWN0IHRtICpsb2NhbHRpbWUgKGNvbnN0IHRpbWVfdCAqX190aW1lcikgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAxNTQgIi9ob21lL2pjbXZia2JjL3dz L3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9t aWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3RpbWUu aCIgMyA0CmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZV9yIChjb25zdCB0aW1lX3QgKl9fcmVzdHJp Y3QgX190aW1lciwKICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gc3RydWN0IHRtICpsb2Nh bHRpbWVfciAoY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICAgICBzdHJ1 Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKIyAxNzkgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVp bGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBjaGFyICphc2N0 aW1lIChjb25zdCBzdHJ1Y3QgdG0gKl9fdHApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7CgoKCmV4dGVybiBjaGFyICpjdGltZSAoY29uc3QgdGltZV90ICpfX3RpbWVy KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDE5NyAiL2hvbWUv amNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEt dGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGNoYXIgKmFzY3RpbWVfciAoY29uc3Qgc3RydWN0IHRt ICpfX3Jlc3RyaWN0IF9fdHAsCiAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBjaGFyICpjdGltZV9yIChj b25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgICBjaGFyICpfX3Jlc3RyaWN0 IF9fYnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDIxNyAi L2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIw MjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGNoYXIgKl9fdHpuYW1lWzJdOwpleHRlcm4g aW50IF9fZGF5bGlnaHQ7CmV4dGVybiBsb25nIGludCBfX3RpbWV6b25lOwoKCgoKZXh0ZXJuIGNo YXIgKnR6bmFtZVsyXTsKCgoKZXh0ZXJuIHZvaWQgdHpzZXQgKHZvaWQpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBpbnQgZGF5bGlnaHQ7CmV4dGVy biBsb25nIGludCB0aW1lem9uZTsKIyAyNDkgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9i dWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwt YnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVy biB0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0gKl9fdHApIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7CgpleHRlcm4gdGltZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpf X3RwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDI2MiAiL2hv bWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEu MTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGludCBkeXNpemUgKGludCBfX3llYXIpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOwojIDI3MiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWls ZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGlu dXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGludCBuYW5vc2xl ZXAgKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0ZWRfdGltZSwKICAgICAgICBzdHJ1 Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5nKTsKCgpleHRlcm4gaW50IGNsb2NrX2dldHJlcyAoY2xv Y2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0aW1lc3BlYyAqX19yZXMpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIGludCBjbG9ja19nZXR0aW1lIChj bG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRpbWVzcGVjICpfX3RwKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbnQgY2xvY2tfc2V0dGltZSAo Y2xvY2tpZF90IF9fY2xvY2tfaWQsIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX190cCkKICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDMxMSAiL2hvbWUvamNt dmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVz dC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGludCBjbG9ja19uYW5vc2xlZXAgKGNsb2NraWRfdCBfX2Ns b2NrX2lkLCBpbnQgX19mbGFncywKICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXEs CiAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtKTsKIyAzMjYgIi9ob21lL2pjbXZia2JjL3dz L3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9t aWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3RpbWUu aCIgMyA0CmV4dGVybiBpbnQgY2xvY2tfZ2V0Y3B1Y2xvY2tpZCAocGlkX3QgX19waWQsIGNsb2Nr aWRfdCAqX19jbG9ja19pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KTsKCgoKCmV4dGVybiBpbnQgdGltZXJfY3JlYXRlIChjbG9ja2lkX3QgX19jbG9ja19pZCwKICAg IHN0cnVjdCBzaWdldmVudCAqX19yZXN0cmljdCBfX2V2cCwKICAgIHRpbWVyX3QgKl9fcmVzdHJp Y3QgX190aW1lcmlkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoK CmV4dGVybiBpbnQgdGltZXJfZGVsZXRlICh0aW1lcl90IF9fdGltZXJpZCkgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIGludCB0aW1lcl9zZXR0aW1l ICh0aW1lcl90IF9fdGltZXJpZCwgaW50IF9fZmxhZ3MsCiAgICAgY29uc3Qgc3RydWN0IGl0aW1l cnNwZWMgKl9fcmVzdHJpY3QgX192YWx1ZSwKICAgICBzdHJ1Y3QgaXRpbWVyc3BlYyAqX19yZXN0 cmljdCBfX292YWx1ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK CgpleHRlcm4gaW50IHRpbWVyX2dldHRpbWUgKHRpbWVyX3QgX190aW1lcmlkLCBzdHJ1Y3QgaXRp bWVyc3BlYyAqX192YWx1ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwojIDM2NCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWls ZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGlu dXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGludCB0aW1lcl9n ZXRvdmVycnVuICh0aW1lcl90IF9fdGltZXJpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKCgoKCgoKZXh0ZXJuIGludCB0aW1lc3BlY19nZXQgKHN0cnVjdCB0aW1l c3BlYyAqX190cywgaW50IF9fYmFzZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKIyAzODcgIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBpbnQgdGltZXNwZWNfZ2V0cmVzIChzdHJ1Y3Qg dGltZXNwZWMgKl9fdHMsIGludCBfX2Jhc2UpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKIyA0MTMgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWls ZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVp bGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBp bnQgZ2V0ZGF0ZV9lcnI7CiMgNDIyICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRy b290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxk cm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRlcm4gc3Ry dWN0IHRtICpnZXRkYXRlIChjb25zdCBjaGFyICpfX3N0cmluZyk7CiMgNDM2ICIvaG9tZS9qY212 YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0 L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS90aW1lLmgiIDMgNApleHRlcm4gaW50IGdldGRhdGVfciAoY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX3N0cmluZywKICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX19yZXNidWZwKTsKCgoK IyAxMDkgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL3RzeXN0ZW0uaCIgMgojIDEzNSAi Li4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvdHN5c3RlbS5oIgojIDEgIi4uLy4uLy4uLy4u L2djYy9saWJnY2MvLi4vaW5jbHVkZS9maWxlbmFtZXMuaCIgMQojIDI5ICIuLi8uLi8uLi8uLi9n Y2MvbGliZ2NjLy4uL2luY2x1ZGUvZmlsZW5hbWVzLmgiCiMgMSAiLi4vLi4vLi4vLi4vZ2NjL2xp YmdjYy8uLi9pbmNsdWRlL2hhc2h0YWIuaCIgMQojIDM5ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2Nj Ly4uL2luY2x1ZGUvaGFzaHRhYi5oIgojIDEgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vaW5j bHVkZS9hbnNpZGVjbC5oIiAxCiMgNDAgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vaW5jbHVk ZS9oYXNodGFiLmgiIDIKCgoKIyA0MiAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9pbmNsdWRl L2hhc2h0YWIuaCIKdHlwZWRlZiB1bnNpZ25lZCBpbnQgaGFzaHZhbF90OwoKCgoKdHlwZWRlZiBo YXNodmFsX3QgKCpodGFiX2hhc2gpIChjb25zdCB2b2lkICopOwoKCgoKCgp0eXBlZGVmIGludCAo Kmh0YWJfZXEpIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7CgoKCnR5cGVkZWYgdm9pZCAo Kmh0YWJfZGVsKSAodm9pZCAqKTsKCgoKCgp0eXBlZGVmIGludCAoKmh0YWJfdHJhdikgKHZvaWQg KiosIHZvaWQgKik7CgoKCgoKdHlwZWRlZiB2b2lkICooKmh0YWJfYWxsb2MpIChzaXplX3QsIHNp emVfdCk7CgoKdHlwZWRlZiB2b2lkICgqaHRhYl9mcmVlKSAodm9pZCAqKTsKCgoKdHlwZWRlZiB2 b2lkICooKmh0YWJfYWxsb2Nfd2l0aF9hcmcpICh2b2lkICosIHNpemVfdCwgc2l6ZV90KTsKdHlw ZWRlZiB2b2lkICgqaHRhYl9mcmVlX3dpdGhfYXJnKSAodm9pZCAqLCB2b2lkICopOwojIDk1ICIu Li8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2luY2x1ZGUvaGFzaHRhYi5oIgpzdHJ1Y3QgaHRhYiB7 CgogIGh0YWJfaGFzaCBoYXNoX2Y7CgoKICBodGFiX2VxIGVxX2Y7CgoKICBodGFiX2RlbCBkZWxf ZjsKCgogIHZvaWQgKiplbnRyaWVzOwoKCiAgc2l6ZV90IHNpemU7CgoKICBzaXplX3Qgbl9lbGVt ZW50czsKCgogIHNpemVfdCBuX2RlbGV0ZWQ7CgoKCiAgdW5zaWduZWQgaW50IHNlYXJjaGVzOwoK CgogIHVuc2lnbmVkIGludCBjb2xsaXNpb25zOwoKCiAgaHRhYl9hbGxvYyBhbGxvY19mOwogIGh0 YWJfZnJlZSBmcmVlX2Y7CgoKICB2b2lkICphbGxvY19hcmc7CiAgaHRhYl9hbGxvY193aXRoX2Fy ZyBhbGxvY193aXRoX2FyZ19mOwogIGh0YWJfZnJlZV93aXRoX2FyZyBmcmVlX3dpdGhfYXJnX2Y7 CgoKCiAgdW5zaWduZWQgaW50IHNpemVfcHJpbWVfaW5kZXg7Cn07Cgp0eXBlZGVmIHN0cnVjdCBo dGFiICpodGFiX3Q7CgoKZW51bSBpbnNlcnRfb3B0aW9uIHtOT19JTlNFUlQsIElOU0VSVH07CgoK CmV4dGVybiBodGFiX3QgaHRhYl9jcmVhdGVfYWxsb2MgKHNpemVfdCwgaHRhYl9oYXNoLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodGFiX2VxLCBodGFiX2RlbCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRhYl9hbGxvYywgaHRhYl9mcmVlKTsKCmV4 dGVybiBodGFiX3QgaHRhYl9jcmVhdGVfYWxsb2NfZXggKHNpemVfdCwgaHRhYl9oYXNoLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0YWJfZXEsIGh0YWJfZGVsLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiwgaHRhYl9hbGxvY193aXRo X2FyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodGFiX2ZyZWVfd2l0 aF9hcmcpOwoKZXh0ZXJuIGh0YWJfdCBodGFiX2NyZWF0ZV90eXBlZF9hbGxvYyAoc2l6ZV90LCBo dGFiX2hhc2gsIGh0YWJfZXEsIGh0YWJfZGVsLAogICAgIGh0YWJfYWxsb2MsIGh0YWJfYWxsb2Ms IGh0YWJfZnJlZSk7CgoKZXh0ZXJuIGh0YWJfdCBodGFiX2NyZWF0ZSAoc2l6ZV90LCBodGFiX2hh c2gsIGh0YWJfZXEsIGh0YWJfZGVsKTsKZXh0ZXJuIGh0YWJfdCBodGFiX3RyeV9jcmVhdGUgKHNp emVfdCwgaHRhYl9oYXNoLCBodGFiX2VxLCBodGFiX2RlbCk7CgpleHRlcm4gdm9pZCBodGFiX3Nl dF9mdW5jdGlvbnNfZXggKGh0YWJfdCwgaHRhYl9oYXNoLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBodGFiX2VxLCBodGFiX2RlbCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdm9pZCAqLCBodGFiX2FsbG9jX3dpdGhfYXJnLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodGFiX2ZyZWVfd2l0aF9hcmcpOwoKZXh0ZXJu IHZvaWQgaHRhYl9kZWxldGUgKGh0YWJfdCk7CmV4dGVybiB2b2lkIGh0YWJfZW1wdHkgKGh0YWJf dCk7CgpleHRlcm4gdm9pZCAqIGh0YWJfZmluZCAoaHRhYl90LCBjb25zdCB2b2lkICopOwpleHRl cm4gdm9pZCAqKiBodGFiX2ZpbmRfc2xvdCAoaHRhYl90LCBjb25zdCB2b2lkICosIGVudW0gaW5z ZXJ0X29wdGlvbik7CmV4dGVybiB2b2lkICogaHRhYl9maW5kX3dpdGhfaGFzaCAoaHRhYl90LCBj b25zdCB2b2lkICosIGhhc2h2YWxfdCk7CmV4dGVybiB2b2lkICoqIGh0YWJfZmluZF9zbG90X3dp dGhfaGFzaCAoaHRhYl90LCBjb25zdCB2b2lkICosCiAgICAgICBoYXNodmFsX3QsIGVudW0gaW5z ZXJ0X29wdGlvbik7CmV4dGVybiB2b2lkIGh0YWJfY2xlYXJfc2xvdCAoaHRhYl90LCB2b2lkICoq KTsKZXh0ZXJuIHZvaWQgaHRhYl9yZW1vdmVfZWx0IChodGFiX3QsIGNvbnN0IHZvaWQgKik7CmV4 dGVybiB2b2lkIGh0YWJfcmVtb3ZlX2VsdF93aXRoX2hhc2ggKGh0YWJfdCwgY29uc3Qgdm9pZCAq LCBoYXNodmFsX3QpOwoKZXh0ZXJuIHZvaWQgaHRhYl90cmF2ZXJzZSAoaHRhYl90LCBodGFiX3Ry YXYsIHZvaWQgKik7CmV4dGVybiB2b2lkIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUgKGh0YWJfdCwg aHRhYl90cmF2LCB2b2lkICopOwoKZXh0ZXJuIHNpemVfdCBodGFiX3NpemUgKGh0YWJfdCk7CmV4 dGVybiBzaXplX3QgaHRhYl9lbGVtZW50cyAoaHRhYl90KTsKZXh0ZXJuIGRvdWJsZSBodGFiX2Nv bGxpc2lvbnMgKGh0YWJfdCk7CgoKZXh0ZXJuIGh0YWJfaGFzaCBodGFiX2hhc2hfcG9pbnRlcjsK CgpleHRlcm4gaHRhYl9lcSBodGFiX2VxX3BvaW50ZXI7CgoKZXh0ZXJuIGhhc2h2YWxfdCBodGFi X2hhc2hfc3RyaW5nIChjb25zdCB2b2lkICopOwoKCmV4dGVybiBpbnQgaHRhYl9lcV9zdHJpbmcg KGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKCgpleHRlcm4gaGFzaHZhbF90IGl0ZXJhdGl2 ZV9oYXNoIChjb25zdCB2b2lkICosIHNpemVfdCwgaGFzaHZhbF90KTsKIyAzMCAiLi4vLi4vLi4v Li4vZ2NjL2xpYmdjYy8uLi9pbmNsdWRlL2ZpbGVuYW1lcy5oIiAyCiMgODQgIi4uLy4uLy4uLy4u L2djYy9saWJnY2MvLi4vaW5jbHVkZS9maWxlbmFtZXMuaCIKZXh0ZXJuIGludCBmaWxlbmFtZV9j bXAgKGNvbnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMik7CgoKZXh0ZXJuIGludCBmaWxlbmFt ZV9uY21wIChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIsCiAgICAgc2l6ZV90IG4pOwoK ZXh0ZXJuIGhhc2h2YWxfdCBmaWxlbmFtZV9oYXNoIChjb25zdCB2b2lkICpzKTsKCmV4dGVybiBp bnQgZmlsZW5hbWVfZXEgKGNvbnN0IHZvaWQgKnMxLCBjb25zdCB2b2lkICpzMik7CgpleHRlcm4g aW50IGNhbm9uaWNhbF9maWxlbmFtZV9lcSAoY29uc3QgY2hhciAqYSwgY29uc3QgY2hhciAqYik7 CiMgMTM2ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy90c3lzdGVtLmgiIDIKIyA0MyAi Li4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LmgiIDIKIyAxICIuLi8uLi8uLi8uLi9nY2Mv bGliZ2NjLy4uL2djYy9jb3JldHlwZXMuaCIgMQojIDM3NSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdj Yy8uLi9nY2MvY29yZXR5cGVzLmgiCnN0cnVjdCBfZG9udF91c2VfcnR4X2hlcmVfOwpzdHJ1Y3Qg X2RvbnRfdXNlX3J0dmVjX2hlcmVfOwpzdHJ1Y3QgX2RvbnRfdXNlX3J0eF9pbnNuX2hlcmVfOwp1 bmlvbiBfZG9udF91c2VfdHJlZV9oZXJlXzsKIyAzODcgIi4uLy4uLy4uLy4uL2djYy9saWJnY2Mv Li4vZ2NjL2NvcmV0eXBlcy5oIgp0eXBlZGVmIHN0cnVjdCBzY2FsYXJfbW9kZSBzY2FsYXJfbW9k ZTsKdHlwZWRlZiBzdHJ1Y3Qgc2NhbGFyX2ludF9tb2RlIHNjYWxhcl9pbnRfbW9kZTsKdHlwZWRl ZiBzdHJ1Y3Qgc2NhbGFyX2Zsb2F0X21vZGUgc2NhbGFyX2Zsb2F0X21vZGU7CnR5cGVkZWYgc3Ry dWN0IGNvbXBsZXhfbW9kZSBjb21wbGV4X21vZGU7CgoKCgoKZW51bSBmdW5jdGlvbl9jbGFzcyB7 CiAgZnVuY3Rpb25fYzk0LAogIGZ1bmN0aW9uX2M5OV9taXNjLAogIGZ1bmN0aW9uX2M5OV9tYXRo X2NvbXBsZXgsCiAgZnVuY3Rpb25fc2luY29zLAogIGZ1bmN0aW9uX2MxMV9taXNjLAogIGZ1bmN0 aW9uX2MyeF9taXNjCn07CgoKCmVudW0gc3ltYm9sX3Zpc2liaWxpdHkKewogIFZJU0lCSUxJVFlf REVGQVVMVCwKICBWSVNJQklMSVRZX1BST1RFQ1RFRCwKICBWSVNJQklMSVRZX0hJRERFTiwKICBW SVNJQklMSVRZX0lOVEVSTkFMCn07CgoKCmVudW0gZmx0X2V2YWxfbWV0aG9kCnsKICBGTFRfRVZB TF9NRVRIT0RfVU5QUkVESUNUQUJMRSA9IC0xLAogIEZMVF9FVkFMX01FVEhPRF9QUk9NT1RFX1RP X0ZMT0FUID0gMCwKICBGTFRfRVZBTF9NRVRIT0RfUFJPTU9URV9UT19ET1VCTEUgPSAxLAogIEZM VF9FVkFMX01FVEhPRF9QUk9NT1RFX1RPX0xPTkdfRE9VQkxFID0gMiwKICBGTFRfRVZBTF9NRVRI T0RfUFJPTU9URV9UT19GTE9BVDE2ID0gMTYKfTsKCmVudW0gZXhjZXNzX3ByZWNpc2lvbl90eXBl CnsKICBFWENFU1NfUFJFQ0lTSU9OX1RZUEVfSU1QTElDSVQsCiAgRVhDRVNTX1BSRUNJU0lPTl9U WVBFX1NUQU5EQVJELAogIEVYQ0VTU19QUkVDSVNJT05fVFlQRV9GQVNULAogIEVYQ0VTU19QUkVD SVNJT05fVFlQRV9GTE9BVDE2Cn07CgoKCmVudW0gb3B0aW1pemVfc2l6ZV9sZXZlbAp7CgogIE9Q VElNSVpFX1NJWkVfTk8sCgogIE9QVElNSVpFX1NJWkVfQkFMQU5DRUQsCgogIE9QVElNSVpFX1NJ WkVfTUFYCn07CgoKCgoKdHlwZWRlZiB2b2lkICgqZ3RfcG9pbnRlcl9vcGVyYXRvcikgKHZvaWQg Kiwgdm9pZCAqLCB2b2lkICopOwoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcjsKIyA0NCAi Li4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LmgiIDIKIyAxICIuLi8uLi8uL2djYy90bS5o IiAxCiMgMjUgIi4uLy4uLy4vZ2NjL3RtLmgiCiMgMSAiLi4vLi4vLi9nY2Mvb3B0aW9ucy5oIiAx CgoKCgoKIyAxICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9mbGFnLXR5cGVzLmgiIDEK IyA3ICIuLi8uLi8uL2djYy9vcHRpb25zLmgiIDIKIyA4NzgwICIuLi8uLi8uL2djYy9vcHRpb25z LmgiCmVudW0gb3B0X2NvZGUKewogIE9QVF9fX18gPSAwLAojIDg3OTEgIi4uLy4uLy4vZ2NjL29w dGlvbnMuaCIKICBPUFRfX2NvbXBsZXRpb25fID0gOSwKIyA4ODExICIuLi8uLi8uL2djYy9vcHRp b25zLmgiCiAgT1BUX19oZWxwID0gMjksCiAgT1BUX19oZWxwXyA9IDMwLAojIDg4MzkgIi4uLy4u Ly4vZ2NjL29wdGlvbnMuaCIKICBPUFRfX25vX3N5c3Jvb3Rfc3VmZml4ID0gNTcsCgoKCiAgT1BU X19vdXRwdXRfcGNoID0gNjEsCgogIE9QVF9fcGFyYW1fYWxpZ25fbG9vcF9pdGVyYXRpb25zXyA9 IDYzLAogIE9QVF9fcGFyYW1fYWxpZ25fdGhyZXNob2xkXyA9IDY0LAogIE9QVF9fcGFyYW1fYW5h bHl6ZXJfYmJfZXhwbG9zaW9uX2ZhY3Rvcl8gPSA2NSwKICBPUFRfX3BhcmFtX2FuYWx5emVyX21h eF9jb25zdHJhaW50c18gPSA2NiwKICBPUFRfX3BhcmFtX2FuYWx5emVyX21heF9lbm9kZXNfZm9y X2Z1bGxfZHVtcF8gPSA2NywKICBPUFRfX3BhcmFtX2FuYWx5emVyX21heF9lbm9kZXNfcGVyX3By b2dyYW1fcG9pbnRfID0gNjgsCiAgT1BUX19wYXJhbV9hbmFseXplcl9tYXhfaW5mZWFzaWJsZV9l ZGdlc18gPSA2OSwKICBPUFRfX3BhcmFtX2FuYWx5emVyX21heF9yZWN1cnNpb25fZGVwdGhfID0g NzAsCiAgT1BUX19wYXJhbV9hbmFseXplcl9tYXhfc3ZhbHVlX2RlcHRoXyA9IDcxLAogIE9QVF9f cGFyYW1fYW5hbHl6ZXJfbWluX3Nub2Rlc19mb3JfY2FsbF9zdW1tYXJ5XyA9IDcyLAogIE9QVF9f cGFyYW1fYXNhbl9nbG9iYWxzXyA9IDczLAogIE9QVF9fcGFyYW1fYXNhbl9pbnN0cnVtZW50X2Fs bG9jYXNfID0gNzQsCiAgT1BUX19wYXJhbV9hc2FuX2luc3RydW1lbnRfcmVhZHNfID0gNzUsCiAg T1BUX19wYXJhbV9hc2FuX2luc3RydW1lbnRfd3JpdGVzXyA9IDc2LAogIE9QVF9fcGFyYW1fYXNh bl9pbnN0cnVtZW50YXRpb25fd2l0aF9jYWxsX3RocmVzaG9sZF8gPSA3NywKICBPUFRfX3BhcmFt X2FzYW5fbWVtaW50cmluXyA9IDc4LAogIE9QVF9fcGFyYW1fYXNhbl9zdGFja18gPSA3OSwKICBP UFRfX3BhcmFtX2FzYW5fdXNlX2FmdGVyX3JldHVybl8gPSA4MCwKICBPUFRfX3BhcmFtX2F2Z19s b29wX25pdGVyXyA9IDgxLAogIE9QVF9fcGFyYW1fYXZvaWRfZm1hX21heF9iaXRzXyA9IDgyLAog IE9QVF9fcGFyYW1fYnVpbHRpbl9leHBlY3RfcHJvYmFiaWxpdHlfID0gODMsCiAgT1BUX19wYXJh bV9idWlsdGluX3N0cmluZ19jbXBfaW5saW5lX2xlbmd0aF8gPSA4NCwKICBPUFRfX3BhcmFtX2Nh c2VfdmFsdWVzX3RocmVzaG9sZF8gPSA4NSwKICBPUFRfX3BhcmFtX2NvbWRhdF9zaGFyaW5nX3By b2JhYmlsaXR5XyA9IDg2LAogIE9QVF9fcGFyYW1fY29uc3RydWN0aXZlX2ludGVyZmVyZW5jZV9z aXplXyA9IDg3LAogIE9QVF9fcGFyYW1fY3h4X21heF9uYW1lc3BhY2VzX2Zvcl9kaWFnbm9zdGlj X2hlbHBfID0gODgsCiAgT1BUX19wYXJhbV9kZXN0cnVjdGl2ZV9pbnRlcmZlcmVuY2Vfc2l6ZV8g PSA4OSwKICBPUFRfX3BhcmFtX2RzZV9tYXhfYWxpYXNfcXVlcmllc19wZXJfc3RvcmVfID0gOTAs CiAgT1BUX19wYXJhbV9kc2VfbWF4X29iamVjdF9zaXplXyA9IDkxLAogIE9QVF9fcGFyYW1fZWFy bHlfaW5saW5pbmdfaW5zbnNfID0gOTIsCiAgT1BUX19wYXJhbV9ldnJwX3NwYXJzZV90aHJlc2hv bGRfID0gOTMsCiAgT1BUX19wYXJhbV9ldnJwX3N3aXRjaF9saW1pdF8gPSA5NCwKICBPUFRfX3Bh cmFtX2ZzbV9zY2FsZV9wYXRoX2Jsb2Nrc18gPSA5NSwKICBPUFRfX3BhcmFtX2ZzbV9zY2FsZV9w YXRoX3N0bXRzXyA9IDk2LAogIE9QVF9fcGFyYW1fZ2NzZV9hZnRlcl9yZWxvYWRfY3JpdGljYWxf ZnJhY3Rpb25fID0gOTcsCiAgT1BUX19wYXJhbV9nY3NlX2FmdGVyX3JlbG9hZF9wYXJ0aWFsX2Zy YWN0aW9uXyA9IDk4LAogIE9QVF9fcGFyYW1fZ2NzZV9jb3N0X2Rpc3RhbmNlX3JhdGlvXyA9IDk5 LAogIE9QVF9fcGFyYW1fZ2NzZV91bnJlc3RyaWN0ZWRfY29zdF8gPSAxMDAsCiAgT1BUX19wYXJh bV9nZ2NfbWluX2V4cGFuZF8gPSAxMDEsCiAgT1BUX19wYXJhbV9nZ2NfbWluX2hlYXBzaXplXyA9 IDEwMiwKICBPUFRfX3BhcmFtX2dpbXBsZV9mZV9jb21wdXRlZF9ob3RfYmJfdGhyZXNob2xkXyA9 IDEwMywKICBPUFRfX3BhcmFtX2dyYXBoaXRlX2FsbG93X2NvZGVnZW5fZXJyb3JzXyA9IDEwNCwK ICBPUFRfX3BhcmFtX2dyYXBoaXRlX21heF9hcnJheXNfcGVyX3Njb3BfID0gMTA1LAogIE9QVF9f cGFyYW1fZ3JhcGhpdGVfbWF4X25iX3Njb3BfcGFyYW1zXyA9IDEwNiwKICBPUFRfX3BhcmFtX2hh c2hfdGFibGVfdmVyaWZpY2F0aW9uX2xpbWl0XyA9IDEwNywKICBPUFRfX3BhcmFtX2hvdF9iYl9j b3VudF9mcmFjdGlvbl8gPSAxMDgsCiAgT1BUX19wYXJhbV9ob3RfYmJfY291bnRfd3NfcGVybWls bGVfID0gMTA5LAogIE9QVF9fcGFyYW1faG90X2JiX2ZyZXF1ZW5jeV9mcmFjdGlvbl8gPSAxMTAs CiAgT1BUX19wYXJhbV9od2FzYW5faW5zdHJ1bWVudF9hbGxvY2FzXyA9IDExMSwKICBPUFRfX3Bh cmFtX2h3YXNhbl9pbnN0cnVtZW50X21lbV9pbnRyaW5zaWNzXyA9IDExMiwKICBPUFRfX3BhcmFt X2h3YXNhbl9pbnN0cnVtZW50X3JlYWRzXyA9IDExMywKICBPUFRfX3BhcmFtX2h3YXNhbl9pbnN0 cnVtZW50X3N0YWNrXyA9IDExNCwKICBPUFRfX3BhcmFtX2h3YXNhbl9pbnN0cnVtZW50X3dyaXRl c18gPSAxMTUsCiAgT1BUX19wYXJhbV9od2FzYW5fcmFuZG9tX2ZyYW1lX3RhZ18gPSAxMTYsCiAg T1BUX19wYXJhbV9pbmxpbmVfaGV1cmlzdGljc19oaW50X3BlcmNlbnRfID0gMTE3LAogIE9QVF9f cGFyYW1faW5saW5lX21pbl9zcGVlZHVwXyA9IDExOCwKICBPUFRfX3BhcmFtX2lubGluZV91bml0 X2dyb3d0aF8gPSAxMTksCiAgT1BUX19wYXJhbV9pbnRlZ2VyX3NoYXJlX2xpbWl0XyA9IDEyMCwK ICBPUFRfX3BhcmFtX2lwYV9jcF9ldmFsX3RocmVzaG9sZF8gPSAxMjEsCiAgT1BUX19wYXJhbV9p cGFfY3BfbGFyZ2VfdW5pdF9pbnNuc18gPSAxMjIsCiAgT1BUX19wYXJhbV9pcGFfY3BfbG9vcF9o aW50X2JvbnVzXyA9IDEyMywKICBPUFRfX3BhcmFtX2lwYV9jcF9tYXhfcmVjdXJzaXZlX2RlcHRo XyA9IDEyNCwKICBPUFRfX3BhcmFtX2lwYV9jcF9taW5fcmVjdXJzaXZlX3Byb2JhYmlsaXR5XyA9 IDEyNSwKICBPUFRfX3BhcmFtX2lwYV9jcF9wcm9maWxlX2NvdW50X2Jhc2VfID0gMTI2LAogIE9Q VF9fcGFyYW1faXBhX2NwX3JlY3Vyc2lvbl9wZW5hbHR5XyA9IDEyNywKICBPUFRfX3BhcmFtX2lw YV9jcF9yZWN1cnNpdmVfZnJlcV9mYWN0b3JfID0gMTI4LAogIE9QVF9fcGFyYW1faXBhX2NwX3Np bmdsZV9jYWxsX3BlbmFsdHlfID0gMTI5LAogIE9QVF9fcGFyYW1faXBhX2NwX3VuaXRfZ3Jvd3Ro XyA9IDEzMCwKICBPUFRfX3BhcmFtX2lwYV9jcF92YWx1ZV9saXN0X3NpemVfID0gMTMxLAogIE9Q VF9fcGFyYW1faXBhX2p1bXBfZnVuY3Rpb25fbG9va3Vwc18gPSAxMzIsCiAgT1BUX19wYXJhbV9p cGFfbWF4X2FhX3N0ZXBzXyA9IDEzMywKICBPUFRfX3BhcmFtX2lwYV9tYXhfYWdnX2l0ZW1zXyA9 IDEzNCwKICBPUFRfX3BhcmFtX2lwYV9tYXhfbG9vcF9wcmVkaWNhdGVzXyA9IDEzNSwKICBPUFRf X3BhcmFtX2lwYV9tYXhfcGFyYW1fZXhwcl9vcHNfID0gMTM2LAogIE9QVF9fcGFyYW1faXBhX21h eF9zd2l0Y2hfcHJlZGljYXRlX2JvdW5kc18gPSAxMzcsCiAgT1BUX19wYXJhbV9pcGFfc3JhX21h eF9yZXBsYWNlbWVudHNfID0gMTM4LAogIE9QVF9fcGFyYW1faXBhX3NyYV9wdHJfZ3Jvd3RoX2Zh Y3Rvcl8gPSAxMzksCiAgT1BUX19wYXJhbV9pcmFfY29uc2lkZXJfZHVwX2luX2FsbF9hbHRzXyA9 IDE0MCwKICBPUFRfX3BhcmFtX2lyYV9sb29wX3Jlc2VydmVkX3JlZ3NfID0gMTQxLAogIE9QVF9f cGFyYW1faXJhX21heF9jb25mbGljdF90YWJsZV9zaXplXyA9IDE0MiwKICBPUFRfX3BhcmFtX2ly YV9tYXhfbG9vcHNfbnVtXyA9IDE0MywKICBPUFRfX3BhcmFtX2l2X2Fsd2F5c19wcnVuZV9jYW5k X3NldF9ib3VuZF8gPSAxNDQsCiAgT1BUX19wYXJhbV9pdl9jb25zaWRlcl9hbGxfY2FuZGlkYXRl c19ib3VuZF8gPSAxNDUsCiAgT1BUX19wYXJhbV9pdl9tYXhfY29uc2lkZXJlZF91c2VzXyA9IDE0 NiwKICBPUFRfX3BhcmFtX2p1bXBfdGFibGVfbWF4X2dyb3d0aF9yYXRpb19mb3Jfc2l6ZV8gPSAx NDcsCiAgT1BUX19wYXJhbV9qdW1wX3RhYmxlX21heF9ncm93dGhfcmF0aW9fZm9yX3NwZWVkXyA9 IDE0OCwKICBPUFRfX3BhcmFtX2wxX2NhY2hlX2xpbmVfc2l6ZV8gPSAxNDksCiAgT1BUX19wYXJh bV9sMV9jYWNoZV9zaXplXyA9IDE1MCwKICBPUFRfX3BhcmFtX2wyX2NhY2hlX3NpemVfID0gMTUx LAogIE9QVF9fcGFyYW1fbGFyZ2VfZnVuY3Rpb25fZ3Jvd3RoXyA9IDE1MiwKICBPUFRfX3BhcmFt X2xhcmdlX2Z1bmN0aW9uX2luc25zXyA9IDE1MywKICBPUFRfX3BhcmFtX2xhcmdlX3N0YWNrX2Zy YW1lX2dyb3d0aF8gPSAxNTQsCiAgT1BUX19wYXJhbV9sYXJnZV9zdGFja19mcmFtZV8gPSAxNTUs CiAgT1BUX19wYXJhbV9sYXJnZV91bml0X2luc25zXyA9IDE1NiwKICBPUFRfX3BhcmFtX2xhenlf bW9kdWxlc18gPSAxNTcsCiAgT1BUX19wYXJhbV9saW1fZXhwZW5zaXZlXyA9IDE1OCwKICBPUFRf X3BhcmFtX2xvZ2ljYWxfb3Bfbm9uX3Nob3J0X2NpcmN1aXRfID0gMTU5LAogIE9QVF9fcGFyYW1f bG9vcF9ibG9ja190aWxlX3NpemVfID0gMTYwLAogIE9QVF9fcGFyYW1fbG9vcF9pbnRlcmNoYW5n ZV9tYXhfbnVtX3N0bXRzXyA9IDE2MSwKICBPUFRfX3BhcmFtX2xvb3BfaW50ZXJjaGFuZ2Vfc3Ry aWRlX3JhdGlvXyA9IDE2MiwKICBPUFRfX3BhcmFtX2xvb3BfaW52YXJpYW50X21heF9iYnNfaW5f bG9vcF8gPSAxNjMsCiAgT1BUX19wYXJhbV9sb29wX21heF9kYXRhcmVmc19mb3JfZGF0YWRlcHNf ID0gMTY0LAogIE9QVF9fcGFyYW1fbG9vcF92ZXJzaW9uaW5nX21heF9pbm5lcl9pbnNuc18gPSAx NjUsCiAgT1BUX19wYXJhbV9sb29wX3ZlcnNpb25pbmdfbWF4X291dGVyX2luc25zXyA9IDE2NiwK ICBPUFRfX3BhcmFtX2xyYV9pbmhlcml0YW5jZV9lYmJfcHJvYmFiaWxpdHlfY3V0b2ZmXyA9IDE2 NywKICBPUFRfX3BhcmFtX2xyYV9tYXhfY29uc2lkZXJlZF9yZWxvYWRfcHNldWRvc18gPSAxNjgs CiAgT1BUX19wYXJhbV9sdG9fbWF4X3BhcnRpdGlvbl8gPSAxNjksCiAgT1BUX19wYXJhbV9sdG9f bWF4X3N0cmVhbWluZ19wYXJhbGxlbGlzbV8gPSAxNzAsCiAgT1BUX19wYXJhbV9sdG9fbWluX3Bh cnRpdGlvbl8gPSAxNzEsCiAgT1BUX19wYXJhbV9sdG9fcGFydGl0aW9uc18gPSAxNzIsCiAgT1BU X19wYXJhbV9tYXhfYXZlcmFnZV91bnJvbGxlZF9pbnNuc18gPSAxNzMsCiAgT1BUX19wYXJhbV9t YXhfY29tYmluZV9pbnNuc18gPSAxNzQsCiAgT1BUX19wYXJhbV9tYXhfY29tcGxldGVseV9wZWVs X2xvb3BfbmVzdF9kZXB0aF8gPSAxNzUsCiAgT1BUX19wYXJhbV9tYXhfY29tcGxldGVseV9wZWVs X3RpbWVzXyA9IDE3NiwKICBPUFRfX3BhcmFtX21heF9jb21wbGV0ZWx5X3BlZWxlZF9pbnNuc18g PSAxNzcsCiAgT1BUX19wYXJhbV9tYXhfY3Jvc3NqdW1wX2VkZ2VzXyA9IDE3OCwKICBPUFRfX3Bh cmFtX21heF9jc2VfaW5zbnNfID0gMTc5LAogIE9QVF9fcGFyYW1fbWF4X2NzZV9wYXRoX2xlbmd0 aF8gPSAxODAsCiAgT1BUX19wYXJhbV9tYXhfY3NlbGliX21lbW9yeV9sb2NhdGlvbnNfID0gMTgx LAogIE9QVF9fcGFyYW1fbWF4X2RlYnVnX21hcmtlcl9jb3VudF8gPSAxODIsCiAgT1BUX19wYXJh bV9tYXhfZGVsYXlfc2xvdF9pbnNuX3NlYXJjaF8gPSAxODMsCiAgT1BUX19wYXJhbV9tYXhfZGVs YXlfc2xvdF9saXZlX3NlYXJjaF8gPSAxODQsCiAgT1BUX19wYXJhbV9tYXhfZHNlX2FjdGl2ZV9s b2NhbF9zdG9yZXNfID0gMTg1LAogIE9QVF9fcGFyYW1fbWF4X2Vhcmx5X2lubGluZXJfaXRlcmF0 aW9uc18gPSAxODYsCiAgT1BUX19wYXJhbV9tYXhfZmllbGRzX2Zvcl9maWVsZF9zZW5zaXRpdmVf ID0gMTg3LAogIE9QVF9fcGFyYW1fbWF4X2ZpbmRfYmFzZV90ZXJtX3ZhbHVlc18gPSAxODgsCiAg T1BUX19wYXJhbV9tYXhfZnNtX3RocmVhZF9wYXRoX2luc25zXyA9IDE4OSwKICBPUFRfX3BhcmFt X21heF9nY3NlX2luc2VydGlvbl9yYXRpb18gPSAxOTAsCiAgT1BUX19wYXJhbV9tYXhfZ2NzZV9t ZW1vcnlfID0gMTkxLAogIE9QVF9fcGFyYW1fbWF4X2dvdG9fZHVwbGljYXRpb25faW5zbnNfID0g MTkyLAogIE9QVF9fcGFyYW1fbWF4X2dyb3dfY29weV9iYl9pbnNuc18gPSAxOTMsCiAgT1BUX19w YXJhbV9tYXhfaG9pc3RfZGVwdGhfID0gMTk0LAogIE9QVF9fcGFyYW1fbWF4X2lubGluZV9mdW5j dGlvbnNfY2FsbGVkX29uY2VfaW5zbnNfID0gMTk1LAogIE9QVF9fcGFyYW1fbWF4X2lubGluZV9m dW5jdGlvbnNfY2FsbGVkX29uY2VfbG9vcF9kZXB0aF8gPSAxOTYsCiAgT1BUX19wYXJhbV9tYXhf aW5saW5lX2luc25zX2F1dG9fID0gMTk3LAogIE9QVF9fcGFyYW1fbWF4X2lubGluZV9pbnNuc19y ZWN1cnNpdmVfYXV0b18gPSAxOTgsCiAgT1BUX19wYXJhbV9tYXhfaW5saW5lX2luc25zX3JlY3Vy c2l2ZV8gPSAxOTksCiAgT1BUX19wYXJhbV9tYXhfaW5saW5lX2luc25zX3NpbmdsZV8gPSAyMDAs CiAgT1BUX19wYXJhbV9tYXhfaW5saW5lX2luc25zX3NpemVfID0gMjAxLAogIE9QVF9fcGFyYW1f bWF4X2lubGluZV9pbnNuc19zbWFsbF8gPSAyMDIsCiAgT1BUX19wYXJhbV9tYXhfaW5saW5lX3Jl Y3Vyc2l2ZV9kZXB0aF9hdXRvXyA9IDIwMywKICBPUFRfX3BhcmFtX21heF9pbmxpbmVfcmVjdXJz aXZlX2RlcHRoXyA9IDIwNCwKICBPUFRfX3BhcmFtX21heF9pc2xfb3BlcmF0aW9uc18gPSAyMDUs CiAgT1BUX19wYXJhbV9tYXhfaXRlcmF0aW9uc19jb21wdXRhdGlvbl9jb3N0XyA9IDIwNiwKICBP UFRfX3BhcmFtX21heF9pdGVyYXRpb25zX3RvX3RyYWNrXyA9IDIwNywKICBPUFRfX3BhcmFtX21h eF9qdW1wX3RocmVhZF9kdXBsaWNhdGlvbl9zdG10c18gPSAyMDgsCiAgT1BUX19wYXJhbV9tYXhf anVtcF90aHJlYWRfcGF0aHNfID0gMjA5LAogIE9QVF9fcGFyYW1fbWF4X2xhc3RfdmFsdWVfcnRs XyA9IDIxMCwKICBPUFRfX3BhcmFtX21heF9sb29wX2hlYWRlcl9pbnNuc18gPSAyMTEsCiAgT1BU X19wYXJhbV9tYXhfbW9kdWxvX2JhY2t0cmFja19hdHRlbXB0c18gPSAyMTIsCiAgT1BUX19wYXJh bV9tYXhfcGFydGlhbF9hbnRpY19sZW5ndGhfID0gMjEzLAogIE9QVF9fcGFyYW1fbWF4X3BlZWxf YnJhbmNoZXNfID0gMjE0LAogIE9QVF9fcGFyYW1fbWF4X3BlZWxfdGltZXNfID0gMjE1LAogIE9Q VF9fcGFyYW1fbWF4X3BlZWxlZF9pbnNuc18gPSAyMTYsCiAgT1BUX19wYXJhbV9tYXhfcGVuZGlu Z19saXN0X2xlbmd0aF8gPSAyMTcsCiAgT1BUX19wYXJhbV9tYXhfcGlwZWxpbmVfcmVnaW9uX2Js b2Nrc18gPSAyMTgsCiAgT1BUX19wYXJhbV9tYXhfcGlwZWxpbmVfcmVnaW9uX2luc25zXyA9IDIx OSwKICBPUFRfX3BhcmFtX21heF9wb3dfc3FydF9kZXB0aF8gPSAyMjAsCiAgT1BUX19wYXJhbV9t YXhfcHJlZGljdGVkX2l0ZXJhdGlvbnNfID0gMjIxLAogIE9QVF9fcGFyYW1fbWF4X3JlbG9hZF9z ZWFyY2hfaW5zbnNfID0gMjIyLAogIE9QVF9fcGFyYW1fbWF4X3J0bF9pZl9jb252ZXJzaW9uX2lu c25zXyA9IDIyMywKICBPUFRfX3BhcmFtX21heF9ydGxfaWZfY29udmVyc2lvbl9wcmVkaWN0YWJs ZV9jb3N0XyA9IDIyNCwKICBPUFRfX3BhcmFtX21heF9ydGxfaWZfY29udmVyc2lvbl91bnByZWRp Y3RhYmxlX2Nvc3RfID0gMjI1LAogIE9QVF9fcGFyYW1fbWF4X3NjaGVkX2V4dGVuZF9yZWdpb25z X2l0ZXJzXyA9IDIyNiwKICBPUFRfX3BhcmFtX21heF9zY2hlZF9pbnNuX2NvbmZsaWN0X2RlbGF5 XyA9IDIyNywKICBPUFRfX3BhcmFtX21heF9zY2hlZF9yZWFkeV9pbnNuc18gPSAyMjgsCiAgT1BU X19wYXJhbV9tYXhfc2NoZWRfcmVnaW9uX2Jsb2Nrc18gPSAyMjksCiAgT1BUX19wYXJhbV9tYXhf c2NoZWRfcmVnaW9uX2luc25zXyA9IDIzMCwKICBPUFRfX3BhcmFtX21heF9zbHNyX2NhbmRfc2Nh bl8gPSAyMzEsCiAgT1BUX19wYXJhbV9tYXhfc3BlY3VsYXRpdmVfZGV2aXJ0X21heWRlZnNfID0g MjMyLAogIE9QVF9fcGFyYW1fbWF4X3NzYV9uYW1lX3F1ZXJ5X2RlcHRoXyA9IDIzMywKICBPUFRf X3BhcmFtX21heF9zdG9yZV9jaGFpbnNfdG9fdHJhY2tfID0gMjM0LAogIE9QVF9fcGFyYW1fbWF4 X3N0b3Jlc190b19tZXJnZV8gPSAyMzUsCiAgT1BUX19wYXJhbV9tYXhfc3RvcmVzX3RvX3Npbmtf ID0gMjM2LAogIE9QVF9fcGFyYW1fbWF4X3N0b3Jlc190b190cmFja18gPSAyMzcsCiAgT1BUX19w YXJhbV9tYXhfdGFpbF9tZXJnZV9jb21wYXJpc29uc18gPSAyMzgsCiAgT1BUX19wYXJhbV9tYXhf dGFpbF9tZXJnZV9pdGVyYXRpb25zXyA9IDIzOSwKICBPUFRfX3BhcmFtX21heF90cmFja2VkX3N0 cmxlbnNfID0gMjQwLAogIE9QVF9fcGFyYW1fbWF4X3RyZWVfaWZfY29udmVyc2lvbl9waGlfYXJn c18gPSAyNDEsCiAgT1BUX19wYXJhbV9tYXhfdW5yb2xsX3RpbWVzXyA9IDI0MiwKICBPUFRfX3Bh cmFtX21heF91bnJvbGxlZF9pbnNuc18gPSAyNDMsCiAgT1BUX19wYXJhbV9tYXhfdW5zd2l0Y2hf aW5zbnNfID0gMjQ0LAogIE9QVF9fcGFyYW1fbWF4X3ZhcmlhYmxlX2V4cGFuc2lvbnNfaW5fdW5y b2xsZXJfID0gMjQ1LAogIE9QVF9fcGFyYW1fbWF4X3ZhcnRyYWNrX2V4cHJfZGVwdGhfID0gMjQ2 LAogIE9QVF9fcGFyYW1fbWF4X3ZhcnRyYWNrX3JldmVyc2Vfb3Bfc2l6ZV8gPSAyNDcsCiAgT1BU X19wYXJhbV9tYXhfdmFydHJhY2tfc2l6ZV8gPSAyNDgsCiAgT1BUX19wYXJhbV9tYXhfdnJwX3N3 aXRjaF9hc3NlcnRpb25zXyA9IDI0OSwKICBPUFRfX3BhcmFtX21pbl9jcm9zc2p1bXBfaW5zbnNf ID0gMjUwLAogIE9QVF9fcGFyYW1fbWluX2lubGluZV9yZWN1cnNpdmVfcHJvYmFiaWxpdHlfID0g MjUxLAogIE9QVF9fcGFyYW1fbWluX2luc25fdG9fcHJlZmV0Y2hfcmF0aW9fID0gMjUyLAogIE9Q VF9fcGFyYW1fbWluX2xvb3BfY29uZF9zcGxpdF9wcm9iXyA9IDI1MywKICBPUFRfX3BhcmFtX21p bl9ub25kZWJ1Z19pbnNuX3VpZF8gPSAyNTQsCiAgT1BUX19wYXJhbV9taW5fcGFnZXNpemVfID0g MjU1LAogIE9QVF9fcGFyYW1fbWluX3NpemVfZm9yX3N0YWNrX3NoYXJpbmdfID0gMjU2LAogIE9Q VF9fcGFyYW1fbWluX3NwZWNfcHJvYl8gPSAyNTcsCiAgT1BUX19wYXJhbV9taW5fdmVjdF9sb29w X2JvdW5kXyA9IDI1OCwKICBPUFRfX3BhcmFtX21vZHJlZl9tYXhfYWNjZXNzZXNfID0gMjU5LAog IE9QVF9fcGFyYW1fbW9kcmVmX21heF9hZGp1c3RtZW50c18gPSAyNjAsCiAgT1BUX19wYXJhbV9t b2RyZWZfbWF4X2Jhc2VzXyA9IDI2MSwKICBPUFRfX3BhcmFtX21vZHJlZl9tYXhfZGVwdGhfID0g MjYyLAogIE9QVF9fcGFyYW1fbW9kcmVmX21heF9lc2NhcGVfcG9pbnRzXyA9IDI2MywKICBPUFRf X3BhcmFtX21vZHJlZl9tYXhfcmVmc18gPSAyNjQsCiAgT1BUX19wYXJhbV9tb2RyZWZfbWF4X3Rl c3RzXyA9IDI2NSwKICBPUFRfX3BhcmFtX29wZW5hY2Nfa2VybmVsc18gPSAyNjYsCiAgT1BUX19w YXJhbV9vcGVuYWNjX3ByaXZhdGl6YXRpb25fID0gMjY3LAogIE9QVF9fcGFyYW1fcGFybG9vcHNf Y2h1bmtfc2l6ZV8gPSAyNjgsCiAgT1BUX19wYXJhbV9wYXJsb29wc19taW5fcGVyX3RocmVhZF8g PSAyNjksCiAgT1BUX19wYXJhbV9wYXJsb29wc19zY2hlZHVsZV8gPSAyNzAsCiAgT1BUX19wYXJh bV9wYXJ0aWFsX2lubGluaW5nX2VudHJ5X3Byb2JhYmlsaXR5XyA9IDI3MSwKICBPUFRfX3BhcmFt X3ByZWRpY3RhYmxlX2JyYW5jaF9vdXRjb21lXyA9IDI3MiwKICBPUFRfX3BhcmFtX3ByZWZldGNo X2R5bmFtaWNfc3RyaWRlc18gPSAyNzMsCiAgT1BUX19wYXJhbV9wcmVmZXRjaF9sYXRlbmN5XyA9 IDI3NCwKICBPUFRfX3BhcmFtX3ByZWZldGNoX21pbl9pbnNuX3RvX21lbV9yYXRpb18gPSAyNzUs CiAgT1BUX19wYXJhbV9wcmVmZXRjaF9taW5pbXVtX3N0cmlkZV8gPSAyNzYsCiAgT1BUX19wYXJh bV9wcm9maWxlX2Z1bmNfaW50ZXJuYWxfaWRfID0gMjc3LAogIE9QVF9fcGFyYW1fcmFuZ2VyX2Rl YnVnXyA9IDI3OCwKICBPUFRfX3BhcmFtX3Jhbmdlcl9sb2dpY2FsX2RlcHRoXyA9IDI3OSwKICBP UFRfX3BhcmFtX3JlbGF0aW9uX2Jsb2NrX2xpbWl0XyA9IDI4MCwKICBPUFRfX3BhcmFtX3Jwb192 bl9tYXhfbG9vcF9kZXB0aF8gPSAyODEsCiAgT1BUX19wYXJhbV9zY2N2bl9tYXhfYWxpYXNfcXVl cmllc19wZXJfYWNjZXNzXyA9IDI4MiwKICBPUFRfX3BhcmFtX3NjZXZfbWF4X2V4cHJfY29tcGxl eGl0eV8gPSAyODMsCiAgT1BUX19wYXJhbV9zY2V2X21heF9leHByX3NpemVfID0gMjg0LAogIE9Q VF9fcGFyYW1fc2NoZWRfYXV0b3ByZWZfcXVldWVfZGVwdGhfID0gMjg1LAogIE9QVF9fcGFyYW1f c2NoZWRfbWVtX3RydWVfZGVwX2Nvc3RfID0gMjg2LAogIE9QVF9fcGFyYW1fc2NoZWRfcHJlc3N1 cmVfYWxnb3JpdGhtXyA9IDI4NywKICBPUFRfX3BhcmFtX3NjaGVkX3NwZWNfcHJvYl9jdXRvZmZf ID0gMjg4LAogIE9QVF9fcGFyYW1fc2NoZWRfc3RhdGVfZWRnZV9wcm9iX2N1dG9mZl8gPSAyODks CiAgT1BUX19wYXJhbV9zZWxzY2hlZF9pbnNuc190b19yZW5hbWVfID0gMjkwLAogIE9QVF9fcGFy YW1fc2Vsc2NoZWRfbWF4X2xvb2thaGVhZF8gPSAyOTEsCiAgT1BUX19wYXJhbV9zZWxzY2hlZF9t YXhfc2NoZWRfdGltZXNfID0gMjkyLAogIE9QVF9fcGFyYW1fc2ltdWx0YW5lb3VzX3ByZWZldGNo ZXNfID0gMjkzLAogIE9QVF9fcGFyYW1fc2lua19mcmVxdWVuY3lfdGhyZXNob2xkXyA9IDI5NCwK ICBPUFRfX3BhcmFtX3Ntc19kZmFfaGlzdG9yeV8gPSAyOTUsCiAgT1BUX19wYXJhbV9zbXNfbG9v cF9hdmVyYWdlX2NvdW50X3RocmVzaG9sZF8gPSAyOTYsCiAgT1BUX19wYXJhbV9zbXNfbWF4X2lp X2ZhY3Rvcl8gPSAyOTcsCiAgT1BUX19wYXJhbV9zbXNfbWluX3NjXyA9IDI5OCwKICBPUFRfX3Bh cmFtX3NyYV9tYXhfcHJvcGFnYXRpb25zXyA9IDI5OSwKICBPUFRfX3BhcmFtX3NyYV9tYXhfc2Nh bGFyaXphdGlvbl9zaXplX09zaXplXyA9IDMwMCwKICBPUFRfX3BhcmFtX3NyYV9tYXhfc2NhbGFy aXphdGlvbl9zaXplX09zcGVlZF8gPSAzMDEsCiAgT1BUX19wYXJhbV9zc2FfbmFtZV9kZWZfY2hh aW5fbGltaXRfID0gMzAyLAogIE9QVF9fcGFyYW1fc3NwX2J1ZmZlcl9zaXplXyA9IDMwMywKICBP UFRfX3BhcmFtX3N0YWNrX2NsYXNoX3Byb3RlY3Rpb25fZ3VhcmRfc2l6ZV8gPSAzMDQsCiAgT1BU X19wYXJhbV9zdGFja19jbGFzaF9wcm90ZWN0aW9uX3Byb2JlX2ludGVydmFsXyA9IDMwNSwKICBP UFRfX3BhcmFtX3N0b3JlX21lcmdpbmdfYWxsb3dfdW5hbGlnbmVkXyA9IDMwNiwKICBPUFRfX3Bh cmFtX3N0b3JlX21lcmdpbmdfbWF4X3NpemVfID0gMzA3LAogIE9QVF9fcGFyYW1fc3dpdGNoX2Nv bnZlcnNpb25fbWF4X2JyYW5jaF9yYXRpb18gPSAzMDgsCiAgT1BUX19wYXJhbV90aHJlYWRlcl9k ZWJ1Z18gPSAzMDksCiAgT1BUX19wYXJhbV90bV9tYXhfYWdncmVnYXRlX3NpemVfID0gMzEwLAog IE9QVF9fcGFyYW1fdHJhY2VyX2R5bmFtaWNfY292ZXJhZ2VfZmVlZGJhY2tfID0gMzExLAogIE9Q VF9fcGFyYW1fdHJhY2VyX2R5bmFtaWNfY292ZXJhZ2VfID0gMzEyLAogIE9QVF9fcGFyYW1fdHJh Y2VyX21heF9jb2RlX2dyb3d0aF8gPSAzMTMsCiAgT1BUX19wYXJhbV90cmFjZXJfbWluX2JyYW5j aF9wcm9iYWJpbGl0eV9mZWVkYmFja18gPSAzMTQsCiAgT1BUX19wYXJhbV90cmFjZXJfbWluX2Jy YW5jaF9wcm9iYWJpbGl0eV8gPSAzMTUsCiAgT1BUX19wYXJhbV90cmFjZXJfbWluX2JyYW5jaF9y YXRpb18gPSAzMTYsCiAgT1BUX19wYXJhbV90cmVlX3JlYXNzb2Nfd2lkdGhfID0gMzE3LAogIE9Q VF9fcGFyYW1fdHNhbl9kaXN0aW5ndWlzaF92b2xhdGlsZV8gPSAzMTgsCiAgT1BUX19wYXJhbV90 c2FuX2luc3RydW1lbnRfZnVuY19lbnRyeV9leGl0XyA9IDMxOSwKICBPUFRfX3BhcmFtX3VuaW5p dF9jb250cm9sX2RlcF9hdHRlbXB0c18gPSAzMjAsCiAgT1BUX19wYXJhbV91bmlubGluZWRfZnVu Y3Rpb25faW5zbnNfID0gMzIxLAogIE9QVF9fcGFyYW1fdW5pbmxpbmVkX2Z1bmN0aW9uX3RpbWVf ID0gMzIyLAogIE9QVF9fcGFyYW1fdW5pbmxpbmVkX3RodW5rX2luc25zXyA9IDMyMywKICBPUFRf X3BhcmFtX3VuaW5saW5lZF90aHVua190aW1lXyA9IDMyNCwKICBPUFRfX3BhcmFtX3VubGlrZWx5 X2JiX2NvdW50X2ZyYWN0aW9uXyA9IDMyNSwKICBPUFRfX3BhcmFtX3Vucm9sbF9qYW1fbWF4X3Vu cm9sbF8gPSAzMjYsCiAgT1BUX19wYXJhbV91bnJvbGxfamFtX21pbl9wZXJjZW50XyA9IDMyNywK ICBPUFRfX3BhcmFtX3VzZV9hZnRlcl9zY29wZV9kaXJlY3RfZW1pc3Npb25fdGhyZXNob2xkXyA9 IDMyOCwKICBPUFRfX3BhcmFtX3VzZV9jYW5vbmljYWxfdHlwZXNfID0gMzI5LAogIE9QVF9fcGFy YW1fdmVjdF9lcGlsb2d1ZXNfbm9tYXNrXyA9IDMzMCwKICBPUFRfX3BhcmFtX3ZlY3RfaW5kdWN0 aW9uX2Zsb2F0XyA9IDMzMSwKICBPUFRfX3BhcmFtX3ZlY3RfaW5uZXJfbG9vcF9jb3N0X2ZhY3Rv cl8gPSAzMzIsCiAgT1BUX19wYXJhbV92ZWN0X21heF9sYXlvdXRfY2FuZGlkYXRlc18gPSAzMzMs CiAgT1BUX19wYXJhbV92ZWN0X21heF9wZWVsaW5nX2Zvcl9hbGlnbm1lbnRfID0gMzM0LAogIE9Q VF9fcGFyYW1fdmVjdF9tYXhfdmVyc2lvbl9mb3JfYWxpYXNfY2hlY2tzXyA9IDMzNSwKICBPUFRf X3BhcmFtX3ZlY3RfbWF4X3ZlcnNpb25fZm9yX2FsaWdubWVudF9jaGVja3NfID0gMzM2LAogIE9Q VF9fcGFyYW1fdmVjdF9wYXJ0aWFsX3ZlY3Rvcl91c2FnZV8gPSAzMzcsCiAgT1BUX19wYXJhbV92 cnAxX21vZGVfID0gMzM4LAogIE9QVF9fcGFyYW1fdnJwMl9tb2RlXyA9IDMzOSwKIyA5MTUyICIu Li8uLi8uL2djYy9vcHRpb25zLmgiCiAgT1BUX19zeXNyb290XyA9IDM3MCwKICBPUFRfX3Rhcmdl dF9oZWxwID0gMzcxLAojIDkxNjMgIi4uLy4uLy4vZ2NjL29wdGlvbnMuaCIKICBPUFRfX3ZlcnNp b24gPSAzODEsCgoKICBPUFRfQSA9IDM4NCwKICBPUFRfQiA9IDM4NSwKICBPUFRfQyA9IDM4NiwK ICBPUFRfQ0MgPSAzODcsCiAgT1BUX0QgPSAzODgsCiAgT1BUX0UgPSAzODksCiAgT1BUX0YgPSAz OTAsCiAgT1BUX0cgPSAzOTEsCiAgT1BUX0ggPSAzOTIsCiAgT1BUX0hkID0gMzkzLAogIE9QVF9I ZiA9IDM5NCwKICBPUFRfSSA9IDM5NSwKICBPUFRfSiA9IDM5NiwKICBPUFRfTCA9IDM5NywKICBP UFRfTSA9IDM5OCwKICBPUFRfTUQgPSAzOTksCiAgT1BUX01GID0gNDAwLAogIE9QVF9NRyA9IDQw MSwKICBPUFRfTU0gPSA0MDIsCiAgT1BUX01NRCA9IDQwMywKICBPUFRfTVAgPSA0MDQsCiAgT1BU X01RID0gNDA1LAogIE9QVF9NVCA9IDQwNiwKICBPUFRfTW1vZHVsZXMgPSA0MDcsCiAgT1BUX01u b19tb2R1bGVzID0gNDA4LAogIE9QVF9OID0gNDA5LAogIE9QVF9PID0gNDEwLAogIE9QVF9PZmFz dCA9IDQxMSwKICBPUFRfT2cgPSA0MTIsCiAgT1BUX09zID0gNDEzLAogIE9QVF9PeiA9IDQxNCwK ICBPUFRfUCA9IDQxNSwKICBPUFRfUSA9IDQxNiwKICBPUFRfUW4gPSA0MTcsCiAgT1BUX1F5ID0g NDE4LAogIE9QVF9SID0gNDE5LAogIE9QVF9TID0gNDIwLAogIE9QVF9UID0gNDIxLAogIE9QVF9U YnNzID0gNDIyLAogIE9QVF9UYnNzXyA9IDQyMywKICBPUFRfVGRhdGEgPSA0MjQsCiAgT1BUX1Rk YXRhXyA9IDQyNSwKICBPUFRfVHRleHQgPSA0MjYsCiAgT1BUX1R0ZXh0XyA9IDQyNywKICBPUFRf VSA9IDQyOCwKCiAgT1BUX1dOU09iamVjdF9hdHRyaWJ1dGUgPSA0MzAsCiAgT1BUX1dhXyA9IDQz MSwKICBPUFRfV2FiaSA9IDQzMiwKICBPUFRfV2FiaV90YWcgPSA0MzMsCiAgT1BUX1dhYmlfID0g NDM0LAogIE9QVF9XYWJzb2x1dGVfdmFsdWUgPSA0MzUsCiAgT1BUX1dhZGRyZXNzID0gNDM2LAog IE9QVF9XYWRkcmVzc19vZl9wYWNrZWRfbWVtYmVyID0gNDM3LAogIE9QVF9XYWdncmVnYXRlX3Jl dHVybiA9IDQzOCwKICBPUFRfV2FnZ3Jlc3NpdmVfbG9vcF9vcHRpbWl6YXRpb25zID0gNDM5LAog IE9QVF9XYWxpYXNpbmcgPSA0NDAsCiAgT1BUX1dhbGlnbl9jb21tb25zID0gNDQxLAoKICBPUFRf V2FsaWduZWRfbmV3XyA9IDQ0MywKICBPUFRfV2FsbCA9IDQ0NCwKICBPUFRfV2FsbG9jX3NpemVf bGFyZ2VyX3RoYW5fID0gNDQ1LAogIE9QVF9XYWxsb2NfemVybyA9IDQ0NiwKICBPUFRfV2FsbG9j YSA9IDQ0NywKICBPUFRfV2FsbG9jYV9sYXJnZXJfdGhhbl8gPSA0NDgsCiAgT1BUX1dhbXBlcnNh bmQgPSA0NDksCiAgT1BUX1dhbmFseXplcl9hbGxvY2F0aW9uX3NpemUgPSA0NTAsCiAgT1BUX1dh bmFseXplcl9kb3VibGVfZmNsb3NlID0gNDUxLAogIE9QVF9XYW5hbHl6ZXJfZG91YmxlX2ZyZWUg PSA0NTIsCiAgT1BUX1dhbmFseXplcl9leHBvc3VyZV90aHJvdWdoX291dHB1dF9maWxlID0gNDUz LAogIE9QVF9XYW5hbHl6ZXJfZXhwb3N1cmVfdGhyb3VnaF91bmluaXRfY29weSA9IDQ1NCwKICBP UFRfV2FuYWx5emVyX2ZkX2FjY2Vzc19tb2RlX21pc21hdGNoID0gNDU1LAogIE9QVF9XYW5hbHl6 ZXJfZmRfZG91YmxlX2Nsb3NlID0gNDU2LAogIE9QVF9XYW5hbHl6ZXJfZmRfbGVhayA9IDQ1NywK ICBPUFRfV2FuYWx5emVyX2ZkX3VzZV9hZnRlcl9jbG9zZSA9IDQ1OCwKICBPUFRfV2FuYWx5emVy X2ZkX3VzZV93aXRob3V0X2NoZWNrID0gNDU5LAogIE9QVF9XYW5hbHl6ZXJfZmlsZV9sZWFrID0g NDYwLAogIE9QVF9XYW5hbHl6ZXJfZnJlZV9vZl9ub25faGVhcCA9IDQ2MSwKICBPUFRfV2FuYWx5 emVyX2ltcHJlY2lzZV9mcF9hcml0aG1ldGljID0gNDYyLAogIE9QVF9XYW5hbHl6ZXJfanVtcF90 aHJvdWdoX251bGwgPSA0NjMsCiAgT1BUX1dhbmFseXplcl9tYWxsb2NfbGVhayA9IDQ2NCwKICBP UFRfV2FuYWx5emVyX21pc21hdGNoaW5nX2RlYWxsb2NhdGlvbiA9IDQ2NSwKICBPUFRfV2FuYWx5 emVyX251bGxfYXJndW1lbnQgPSA0NjYsCiAgT1BUX1dhbmFseXplcl9udWxsX2RlcmVmZXJlbmNl ID0gNDY3LAogIE9QVF9XYW5hbHl6ZXJfb3V0X29mX2JvdW5kcyA9IDQ2OCwKICBPUFRfV2FuYWx5 emVyX3Bvc3NpYmxlX251bGxfYXJndW1lbnQgPSA0NjksCiAgT1BUX1dhbmFseXplcl9wb3NzaWJs ZV9udWxsX2RlcmVmZXJlbmNlID0gNDcwLAogIE9QVF9XYW5hbHl6ZXJfcHV0ZW52X29mX2F1dG9f dmFyID0gNDcxLAogIE9QVF9XYW5hbHl6ZXJfc2hpZnRfY291bnRfbmVnYXRpdmUgPSA0NzIsCiAg T1BUX1dhbmFseXplcl9zaGlmdF9jb3VudF9vdmVyZmxvdyA9IDQ3MywKICBPUFRfV2FuYWx5emVy X3N0YWxlX3NldGptcF9idWZmZXIgPSA0NzQsCiAgT1BUX1dhbmFseXplcl90YWludGVkX2FsbG9j YXRpb25fc2l6ZSA9IDQ3NSwKICBPUFRfV2FuYWx5emVyX3RhaW50ZWRfYXJyYXlfaW5kZXggPSA0 NzYsCiAgT1BUX1dhbmFseXplcl90YWludGVkX2Rpdmlzb3IgPSA0NzcsCiAgT1BUX1dhbmFseXpl cl90YWludGVkX29mZnNldCA9IDQ3OCwKICBPUFRfV2FuYWx5emVyX3RhaW50ZWRfc2l6ZSA9IDQ3 OSwKICBPUFRfV2FuYWx5emVyX3Rvb19jb21wbGV4ID0gNDgwLAogIE9QVF9XYW5hbHl6ZXJfdW5z YWZlX2NhbGxfd2l0aGluX3NpZ25hbF9oYW5kbGVyID0gNDgxLAogIE9QVF9XYW5hbHl6ZXJfdXNl X2FmdGVyX2ZyZWUgPSA0ODIsCiAgT1BUX1dhbmFseXplcl91c2Vfb2ZfcG9pbnRlcl9pbl9zdGFs ZV9zdGFja19mcmFtZSA9IDQ4MywKICBPUFRfV2FuYWx5emVyX3VzZV9vZl91bmluaXRpYWxpemVk X3ZhbHVlID0gNDg0LAogIE9QVF9XYW5hbHl6ZXJfdmFfYXJnX3R5cGVfbWlzbWF0Y2ggPSA0ODUs CiAgT1BUX1dhbmFseXplcl92YV9saXN0X2V4aGF1c3RlZCA9IDQ4NiwKICBPUFRfV2FuYWx5emVy X3ZhX2xpc3RfbGVhayA9IDQ4NywKICBPUFRfV2FuYWx5emVyX3ZhX2xpc3RfdXNlX2FmdGVyX3Zh X2VuZCA9IDQ4OCwKICBPUFRfV2FuYWx5emVyX3dyaXRlX3RvX2NvbnN0ID0gNDg5LAogIE9QVF9X YW5hbHl6ZXJfd3JpdGVfdG9fc3RyaW5nX2xpdGVyYWwgPSA0OTAsCiAgT1BUX1dhcmd1bWVudF9t aXNtYXRjaCA9IDQ5MSwKICBPUFRfV2FyaXRoX2NvbnZlcnNpb24gPSA0OTIsCiAgT1BUX1dhcnJh eV9ib3VuZHMgPSA0OTMsCiAgT1BUX1dhcnJheV9ib3VuZHNfID0gNDk0LAogIE9QVF9XYXJyYXlf Y29tcGFyZSA9IDQ5NSwKCiAgT1BUX1dhcnJheV9wYXJhbWV0ZXJfID0gNDk3LAogIE9QVF9XYXJy YXlfdGVtcG9yYXJpZXMgPSA0OTgsCiAgT1BUX1dhc3NpZ25faW50ZXJjZXB0ID0gNDk5LAoKICBP UFRfV2F0dHJpYnV0ZV9hbGlhc18gPSA1MDEsCiAgT1BUX1dhdHRyaWJ1dGVfd2FybmluZyA9IDUw MiwKICBPUFRfV2F0dHJpYnV0ZXMgPSA1MDMsCiAgT1BUX1dhdHRyaWJ1dGVzXyA9IDUwNCwKICBP UFRfV2JhZF9mdW5jdGlvbl9jYXN0ID0gNTA1LAoKICBPUFRfV2JpZGlfY2hhcnNfID0gNTA3LAog IE9QVF9XYm9vbF9jb21wYXJlID0gNTA4LAogIE9QVF9XYm9vbF9vcGVyYXRpb24gPSA1MDksCiAg T1BUX1didWlsdGluX2RlY2xhcmF0aW9uX21pc21hdGNoID0gNTEwLAogIE9QVF9XYnVpbHRpbl9t YWNyb19yZWRlZmluZWQgPSA1MTEsCiAgT1BUX1djX19fY29tcGF0ID0gNTEyLAoKICBPUFRfV2Nf XzExX2NvbXBhdCA9IDUxNCwKICBPUFRfV2NfXzExX2V4dGVuc2lvbnMgPSA1MTUsCiAgT1BUX1dj X18xNF9jb21wYXQgPSA1MTYsCiAgT1BUX1djX18xNF9leHRlbnNpb25zID0gNTE3LAogIE9QVF9X Y19fMTdfY29tcGF0ID0gNTE4LAogIE9QVF9XY19fMTdfZXh0ZW5zaW9ucyA9IDUxOSwKCiAgT1BU X1djX18yMF9jb21wYXQgPSA1MjEsCiAgT1BUX1djX18yMF9leHRlbnNpb25zID0gNTIyLAogIE9Q VF9XY19fMjNfZXh0ZW5zaW9ucyA9IDUyMywKCiAgT1BUX1djX2JpbmRpbmdfdHlwZSA9IDUyNSwK ICBPUFRfV2MxMV9jMnhfY29tcGF0ID0gNTI2LAogIE9QVF9XYzkwX2M5OV9jb21wYXQgPSA1Mjcs CiAgT1BUX1djOTlfYzExX2NvbXBhdCA9IDUyOCwKICBPUFRfV2Nhbm5vdF9wcm9maWxlID0gNTI5 LAogIE9QVF9XY2FzdF9hbGlnbiA9IDUzMCwKICBPUFRfV2Nhc3RfYWxpZ25fc3RyaWN0ID0gNTMx LAogIE9QVF9XY2FzdF9mdW5jdGlvbl90eXBlID0gNTMyLAogIE9QVF9XY2FzdF9xdWFsID0gNTMz LAogIE9QVF9XY2FzdF9yZXN1bHQgPSA1MzQsCgogIE9QVF9XY2F0Y2hfdmFsdWVfID0gNTM2LAog IE9QVF9XY2hhcl9zdWJzY3JpcHRzID0gNTM3LAogIE9QVF9XY2hhcmFjdGVyX3RydW5jYXRpb24g PSA1MzgsCiAgT1BUX1djaGtwID0gNTM5LAogIE9QVF9XY2xhc3NfY29udmVyc2lvbiA9IDU0MCwK ICBPUFRfV2NsYXNzX21lbWFjY2VzcyA9IDU0MSwKICBPUFRfV2Nsb2JiZXJlZCA9IDU0MiwKICBP UFRfV2NvbW1hX3N1YnNjcmlwdCA9IDU0MywKICBPUFRfV2NvbW1lbnQgPSA1NDQsCgogIE9QVF9X Y29tcGFyZV9yZWFscyA9IDU0NiwKICBPUFRfV2NvbmRpdGlvbmFsbHlfc3VwcG9ydGVkID0gNTQ3 LAogIE9QVF9XY29udmVyc2lvbiA9IDU0OCwKICBPUFRfV2NvbnZlcnNpb25fZXh0cmEgPSA1NDks CiAgT1BUX1djb252ZXJzaW9uX251bGwgPSA1NTAsCiAgT1BUX1djb3ZlcmFnZV9pbnZhbGlkX2xp bmVfbnVtYmVyID0gNTUxLAogIE9QVF9XY292ZXJhZ2VfbWlzbWF0Y2ggPSA1NTIsCiAgT1BUX1dj cHAgPSA1NTMsCiAgT1BUX1djdGFkX21heWJlX3Vuc3VwcG9ydGVkID0gNTU0LAogIE9QVF9XY3Rv cl9kdG9yX3ByaXZhY3kgPSA1NTUsCiAgT1BUX1dkYW5nbGluZ19lbHNlID0gNTU2LAoKICBPUFRf V2RhbmdsaW5nX3BvaW50ZXJfID0gNTU4LAogIE9QVF9XZGFuZ2xpbmdfcmVmZXJlbmNlID0gNTU5 LAogIE9QVF9XZGF0ZV90aW1lID0gNTYwLAogIE9QVF9XZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVt ZW50ID0gNTYxLAogIE9QVF9XZGVsZXRlX2luY29tcGxldGUgPSA1NjIsCiAgT1BUX1dkZWxldGVf bm9uX3ZpcnR1YWxfZHRvciA9IDU2MywKICBPUFRfV2RlcHJlY2F0ZWQgPSA1NjQsCiAgT1BUX1dk ZXByZWNhdGVkX2NvcHkgPSA1NjUsCiAgT1BUX1dkZXByZWNhdGVkX2NvcHlfZHRvciA9IDU2NiwK ICBPUFRfV2RlcHJlY2F0ZWRfZGVjbGFyYXRpb25zID0gNTY3LAogIE9QVF9XZGVwcmVjYXRlZF9l bnVtX2VudW1fY29udmVyc2lvbiA9IDU2OCwKICBPUFRfV2RlcHJlY2F0ZWRfZW51bV9mbG9hdF9j b252ZXJzaW9uID0gNTY5LAogIE9QVF9XZGVzaWduYXRlZF9pbml0ID0gNTcwLAogIE9QVF9XZGlz YWJsZWRfb3B0aW1pemF0aW9uID0gNTcxLAogIE9QVF9XZGlzY2FyZGVkX2FycmF5X3F1YWxpZmll cnMgPSA1NzIsCiAgT1BUX1dkaXNjYXJkZWRfcXVhbGlmaWVycyA9IDU3MywKICBPUFRfV2Rpdl9i eV96ZXJvID0gNTc0LAogIE9QVF9XZG9fc3Vic2NyaXB0ID0gNTc1LAogIE9QVF9XZG91YmxlX3By b21vdGlvbiA9IDU3NiwKICBPUFRfV2R1cGxpY2F0ZV9kZWNsX3NwZWNpZmllciA9IDU3NywKICBP UFRfV2R1cGxpY2F0ZWRfYnJhbmNoZXMgPSA1NzgsCiAgT1BUX1dkdXBsaWNhdGVkX2NvbmQgPSA1 NzksCiAgT1BUX1dlZmZjX18gPSA1ODAsCiAgT1BUX1dlbXB0eV9ib2R5ID0gNTgxLAogIE9QVF9X ZW5kaWZfbGFiZWxzID0gNTgyLAogIE9QVF9XZW51bV9jb21wYXJlID0gNTgzLAogIE9QVF9XZW51 bV9jb252ZXJzaW9uID0gNTg0LAogIE9QVF9XZW51bV9pbnRfbWlzbWF0Y2ggPSA1ODUsCiAgT1BU X1dlcnJvciA9IDU4NiwKCiAgT1BUX1dlcnJvcl8gPSA1ODgsCiAgT1BUX1dleGNlcHRpb25zID0g NTg5LAogIE9QVF9XZXhwYW5zaW9uX3RvX2RlZmluZWQgPSA1OTAsCiAgT1BUX1dleHRyYSA9IDU5 MSwKICBPUFRfV2V4dHJhX3NlbWkgPSA1OTIsCiAgT1BUX1dmYXRhbF9lcnJvcnMgPSA1OTMsCiAg T1BUX1dmbG9hdF9jb252ZXJzaW9uID0gNTk0LAogIE9QVF9XZmxvYXRfZXF1YWwgPSA1OTUsCgog IE9QVF9XZm9ybWF0X2NvbnRhaW5zX251bCA9IDU5NywKICBPUFRfV2Zvcm1hdF9kaWFnID0gNTk4 LAogIE9QVF9XZm9ybWF0X2V4dHJhX2FyZ3MgPSA1OTksCiAgT1BUX1dmb3JtYXRfbm9ubGl0ZXJh bCA9IDYwMCwKCiAgT1BUX1dmb3JtYXRfb3ZlcmZsb3dfID0gNjAyLAogIE9QVF9XZm9ybWF0X3Nl Y3VyaXR5ID0gNjAzLAogIE9QVF9XZm9ybWF0X3NpZ25lZG5lc3MgPSA2MDQsCgogIE9QVF9XZm9y bWF0X3RydW5jYXRpb25fID0gNjA2LAogIE9QVF9XZm9ybWF0X3kyayA9IDYwNywKICBPUFRfV2Zv cm1hdF96ZXJvX2xlbmd0aCA9IDYwOCwKICBPUFRfV2Zvcm1hdF8gPSA2MDksCiAgT1BUX1dmcmFt ZV9hZGRyZXNzID0gNjEwLAogIE9QVF9XZnJhbWVfbGFyZ2VyX3RoYW5fID0gNjExLAogIE9QVF9X ZnJlZV9ub25oZWFwX29iamVjdCA9IDYxMiwKICBPUFRfV2Zyb250ZW5kX2xvb3BfaW50ZXJjaGFu Z2UgPSA2MTMsCiAgT1BUX1dmdW5jdGlvbl9lbGltaW5hdGlvbiA9IDYxNCwKCiAgT1BUX1dpZl9u b3RfYWxpZ25lZCA9IDYxNiwKICBPUFRfV2lnbm9yZWRfYXR0cmlidXRlcyA9IDYxNywKICBPUFRf V2lnbm9yZWRfcXVhbGlmaWVycyA9IDYxOCwKICBPUFRfV2ltcGxpY2l0ID0gNjE5LAoKICBPUFRf V2ltcGxpY2l0X2ZhbGx0aHJvdWdoXyA9IDYyMSwKICBPUFRfV2ltcGxpY2l0X2Z1bmN0aW9uX2Rl Y2xhcmF0aW9uID0gNjIyLAogIE9QVF9XaW1wbGljaXRfaW50ID0gNjIzLAogIE9QVF9XaW1wbGlj aXRfaW50ZXJmYWNlID0gNjI0LAogIE9QVF9XaW1wbGljaXRfcHJvY2VkdXJlID0gNjI1LAoKICBP UFRfV2luYWNjZXNzaWJsZV9iYXNlID0gNjI3LAogIE9QVF9XaW5jb21wYXRpYmxlX3BvaW50ZXJf dHlwZXMgPSA2MjgsCiAgT1BUX1dpbmZpbml0ZV9yZWN1cnNpb24gPSA2MjksCiAgT1BUX1dpbmhl cml0ZWRfdmFyaWFkaWNfY3RvciA9IDYzMCwKICBPUFRfV2luaXRfbGlzdF9saWZldGltZSA9IDYz MSwKICBPUFRfV2luaXRfc2VsZiA9IDYzMiwKICBPUFRfV2lubGluZSA9IDYzMywKICBPUFRfV2lu dF9jb252ZXJzaW9uID0gNjM0LAogIE9QVF9XaW50X2luX2Jvb2xfY29udGV4dCA9IDYzNSwKICBP UFRfV2ludF90b19wb2ludGVyX2Nhc3QgPSA2MzYsCiAgT1BUX1dpbnRlZ2VyX2RpdmlzaW9uID0g NjM3LAogIE9QVF9XaW50ZXJmZXJlbmNlX3NpemUgPSA2MzgsCiAgT1BUX1dpbnRyaW5zaWNfc2hh ZG93ID0gNjM5LAogIE9QVF9XaW50cmluc2ljc19zdGQgPSA2NDAsCiAgT1BUX1dpbnZhbGlkX2lt cG9ydGVkX21hY3JvcyA9IDY0MSwKICBPUFRfV2ludmFsaWRfbWVtb3J5X21vZGVsID0gNjQyLAog IE9QVF9XaW52YWxpZF9vZmZzZXRvZiA9IDY0MywKICBPUFRfV2ludmFsaWRfcGNoID0gNjQ0LAog IE9QVF9XaW52YWxpZF91dGY4ID0gNjQ1LAogIE9QVF9XanVtcF9taXNzZXNfaW5pdCA9IDY0NiwK ICBPUFRfV2xfID0gNjQ3LAoKICBPUFRfV2xhcmdlcl90aGFuXyA9IDY0OSwKICBPUFRfV2xpbmVf dHJ1bmNhdGlvbiA9IDY1MCwKICBPUFRfV2xpdGVyYWxfc3VmZml4ID0gNjUxLAogIE9QVF9XbG9n aWNhbF9ub3RfcGFyZW50aGVzZXMgPSA2NTIsCiAgT1BUX1dsb2dpY2FsX29wID0gNjUzLAogIE9Q VF9XbG9uZ19sb25nID0gNjU0LAogIE9QVF9XbHRvX3R5cGVfbWlzbWF0Y2ggPSA2NTUsCiAgT1BU X1dtYWluID0gNjU2LAogIE9QVF9XbWF5YmVfdW5pbml0aWFsaXplZCA9IDY1NywKICBPUFRfV21l bXNldF9lbHRfc2l6ZSA9IDY1OCwKICBPUFRfV21lbXNldF90cmFuc3Bvc2VkX2FyZ3MgPSA2NTks CiAgT1BUX1dtaXNsZWFkaW5nX2luZGVudGF0aW9uID0gNjYwLAogIE9QVF9XbWlzbWF0Y2hlZF9k ZWFsbG9jID0gNjYxLAogIE9QVF9XbWlzbWF0Y2hlZF9uZXdfZGVsZXRlID0gNjYyLAogIE9QVF9X bWlzbWF0Y2hlZF90YWdzID0gNjYzLAogIE9QVF9XbWlzc2luZ19hdHRyaWJ1dGVzID0gNjY0LAog IE9QVF9XbWlzc2luZ19icmFjZXMgPSA2NjUsCiAgT1BUX1dtaXNzaW5nX2RlY2xhcmF0aW9ucyA9 IDY2NiwKICBPUFRfV21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzID0gNjY3LAoKICBPUFRfV21p c3NpbmdfaW5jbHVkZV9kaXJzID0gNjY5LAoKICBPUFRfV21pc3NpbmdfcGFyYW1ldGVyX3R5cGUg PSA2NzEsCiAgT1BUX1dtaXNzaW5nX3Byb2ZpbGUgPSA2NzIsCiAgT1BUX1dtaXNzaW5nX3Byb3Rv dHlwZXMgPSA2NzMsCiAgT1BUX1dtaXNzaW5nX3JlcXVpcmVzID0gNjc0LAogIE9QVF9XbWlzc2lu Z190ZW1wbGF0ZV9rZXl3b3JkID0gNjc1LAogIE9QVF9XbXVkZmxhcCA9IDY3NiwKICBPUFRfV211 bHRpY2hhciA9IDY3NywKICBPUFRfV211bHRpcGxlX2luaGVyaXRhbmNlID0gNjc4LAogIE9QVF9X bXVsdGlzdGF0ZW1lbnRfbWFjcm9zID0gNjc5LAogIE9QVF9XbmFtZXNwYWNlcyA9IDY4MCwKICBP UFRfV25hcnJvd2luZyA9IDY4MSwKICBPUFRfV25lc3RlZF9leHRlcm5zID0gNjgyLAoKCgoKCgog IE9QVF9Xbm9leGNlcHQgPSA2ODksCiAgT1BUX1dub2V4Y2VwdF90eXBlID0gNjkwLAogIE9QVF9X bm9uX3RlbXBsYXRlX2ZyaWVuZCA9IDY5MSwKICBPUFRfV25vbl92aXJ0dWFsX2R0b3IgPSA2OTIs CiAgT1BUX1dub25udWxsID0gNjkzLAogIE9QVF9Xbm9ubnVsbF9jb21wYXJlID0gNjk0LAoKICBP UFRfV25vcm1hbGl6ZWRfID0gNjk2LAogIE9QVF9XbnVsbF9kZXJlZmVyZW5jZSA9IDY5NywKICBP UFRfV29iamNfcm9vdF9jbGFzcyA9IDY5OCwKICBPUFRfV29kciA9IDY5OSwKICBPUFRfV29sZF9z dHlsZV9jYXN0ID0gNzAwLAogIE9QVF9Xb2xkX3N0eWxlX2RlY2xhcmF0aW9uID0gNzAxLAogIE9Q VF9Xb2xkX3N0eWxlX2RlZmluaXRpb24gPSA3MDIsCiAgT1BUX1dvcGVuYWNjX3BhcmFsbGVsaXNt ID0gNzAzLAogIE9QVF9Xb3Blbm1wX3NpbWQgPSA3MDQsCiAgT1BUX1dvdmVyZmxvdyA9IDcwNSwK ICBPUFRfV292ZXJsZW5ndGhfc3RyaW5ncyA9IDcwNiwKCiAgT1BUX1dvdmVybG9hZGVkX3ZpcnR1 YWxfID0gNzA4LAogIE9QVF9Xb3ZlcnJpZGVfaW5pdCA9IDcwOSwKICBPUFRfV292ZXJyaWRlX2lu aXRfc2lkZV9lZmZlY3RzID0gNzEwLAogIE9QVF9Xb3ZlcndyaXRlX3JlY3Vyc2l2ZSA9IDcxMSwK ICBPUFRfV3BfID0gNzEyLAogIE9QVF9XcGFja2VkID0gNzEzLAogIE9QVF9XcGFja2VkX2JpdGZp ZWxkX2NvbXBhdCA9IDcxNCwKICBPUFRfV3BhY2tlZF9ub3RfYWxpZ25lZCA9IDcxNSwKICBPUFRf V3BhZGRlZCA9IDcxNiwKICBPUFRfV3BhcmVudGhlc2VzID0gNzE3LAogIE9QVF9XcGVkYW50aWMg PSA3MTgsCiAgT1BUX1dwZXNzaW1pemluZ19tb3ZlID0gNzE5LAoKICBPUFRfV3BsYWNlbWVudF9u ZXdfID0gNzIxLAogIE9QVF9XcG1mX2NvbnZlcnNpb25zID0gNzIyLAogIE9QVF9XcG9pbnRlcl9h cml0aCA9IDcyMywKICBPUFRfV3BvaW50ZXJfY29tcGFyZSA9IDcyNCwKICBPUFRfV3BvaW50ZXJf c2lnbiA9IDcyNSwKICBPUFRfV3BvaW50ZXJfdG9faW50X2Nhc3QgPSA3MjYsCiAgT1BUX1dwcmFn bWFzID0gNzI3LAogIE9QVF9XcHJpb19jdG9yX2R0b3IgPSA3MjgsCiAgT1BUX1dwcm9wZXJ0eV9h c3NpZ25fZGVmYXVsdCA9IDcyOSwKICBPUFRfV3Byb3RvY29sID0gNzMwLAogIE9QVF9XcHNhYmkg PSA3MzEsCiAgT1BUX1dyYW5nZV9sb29wX2NvbnN0cnVjdCA9IDczMiwKICBPUFRfV3JlYWxfcV9j b25zdGFudCA9IDczMywKICBPUFRfV3JlYWxsb2NfbGhzID0gNzM0LAogIE9QVF9XcmVhbGxvY19s aHNfYWxsID0gNzM1LAogIE9QVF9XcmVkdW5kYW50X2RlY2xzID0gNzM2LAogIE9QVF9XcmVkdW5k YW50X21vdmUgPSA3MzcsCiAgT1BUX1dyZWR1bmRhbnRfdGFncyA9IDczOCwKICBPUFRfV3JlZ2lz dGVyID0gNzM5LAogIE9QVF9XcmVvcmRlciA9IDc0MCwKICBPUFRfV3Jlc3RyaWN0ID0gNzQxLAog IE9QVF9XcmV0dXJuX2xvY2FsX2FkZHIgPSA3NDIsCiAgT1BUX1dyZXR1cm5fdHlwZSA9IDc0MywK ICBPUFRfV3NjYWxhcl9zdG9yYWdlX29yZGVyID0gNzQ0LAogIE9QVF9Xc2VsZWN0b3IgPSA3NDUs CiAgT1BUX1dzZWxmX21vdmUgPSA3NDYsCiAgT1BUX1dzZXF1ZW5jZV9wb2ludCA9IDc0NywKICBP UFRfV3NoYWRvdyA9IDc0OCwKCiAgT1BUX1dzaGFkb3dfaXZhciA9IDc1MCwKCiAgT1BUX1dzaGFk b3dfY29tcGF0aWJsZV9sb2NhbCA9IDc1MiwKCiAgT1BUX1dzaGFkb3dfbG9jYWwgPSA3NTQsCiAg T1BUX1dzaGlmdF9jb3VudF9uZWdhdGl2ZSA9IDc1NSwKICBPUFRfV3NoaWZ0X2NvdW50X292ZXJm bG93ID0gNzU2LAogIE9QVF9Xc2hpZnRfbmVnYXRpdmVfdmFsdWUgPSA3NTcsCgogIE9QVF9Xc2hp ZnRfb3ZlcmZsb3dfID0gNzU5LAogIE9QVF9Xc2lnbl9jb21wYXJlID0gNzYwLAogIE9QVF9Xc2ln bl9jb252ZXJzaW9uID0gNzYxLAogIE9QVF9Xc2lnbl9wcm9tbyA9IDc2MiwKICBPUFRfV3NpemVk X2RlYWxsb2NhdGlvbiA9IDc2MywKICBPUFRfV3NpemVvZl9hcnJheV9hcmd1bWVudCA9IDc2NCwK ICBPUFRfV3NpemVvZl9hcnJheV9kaXYgPSA3NjUsCiAgT1BUX1dzaXplb2ZfcG9pbnRlcl9kaXYg PSA3NjYsCiAgT1BUX1dzaXplb2ZfcG9pbnRlcl9tZW1hY2Nlc3MgPSA3NjcsCiAgT1BUX1dzcGVj dWxhdGl2ZSA9IDc2OCwKICBPUFRfV3N0YWNrX3Byb3RlY3RvciA9IDc2OSwKICBPUFRfV3N0YWNr X3VzYWdlXyA9IDc3MCwKICBPUFRfV3N0cmljdF9hbGlhc2luZyA9IDc3MSwKICBPUFRfV3N0cmlj dF9hbGlhc2luZ18gPSA3NzIsCiAgT1BUX1dzdHJpY3RfbnVsbF9zZW50aW5lbCA9IDc3MywKICBP UFRfV3N0cmljdF9vdmVyZmxvdyA9IDc3NCwKICBPUFRfV3N0cmljdF9vdmVyZmxvd18gPSA3NzUs CiAgT1BUX1dzdHJpY3RfcHJvdG90eXBlcyA9IDc3NiwKICBPUFRfV3N0cmljdF9zZWxlY3Rvcl9t YXRjaCA9IDc3NywKICBPUFRfV3N0cmluZ19jb21wYXJlID0gNzc4LAoKICBPUFRfV3N0cmluZ29w X292ZXJmbG93XyA9IDc4MCwKICBPUFRfV3N0cmluZ29wX292ZXJyZWFkID0gNzgxLAogIE9QVF9X c3RyaW5nb3BfdHJ1bmNhdGlvbiA9IDc4MiwKICBPUFRfV3N1Ym9iamVjdF9saW5rYWdlID0gNzgz LAogIE9QVF9Xc3VnZ2VzdF9hdHRyaWJ1dGVfY29sZCA9IDc4NCwKICBPUFRfV3N1Z2dlc3RfYXR0 cmlidXRlX2NvbnN0ID0gNzg1LAogIE9QVF9Xc3VnZ2VzdF9hdHRyaWJ1dGVfZm9ybWF0ID0gNzg2 LAogIE9QVF9Xc3VnZ2VzdF9hdHRyaWJ1dGVfbWFsbG9jID0gNzg3LAogIE9QVF9Xc3VnZ2VzdF9h dHRyaWJ1dGVfbm9yZXR1cm4gPSA3ODgsCiAgT1BUX1dzdWdnZXN0X2F0dHJpYnV0ZV9wdXJlID0g Nzg5LAogIE9QVF9Xc3VnZ2VzdF9maW5hbF9tZXRob2RzID0gNzkwLAogIE9QVF9Xc3VnZ2VzdF9m aW5hbF90eXBlcyA9IDc5MSwKICBPUFRfV3N1Z2dlc3Rfb3ZlcnJpZGUgPSA3OTIsCiAgT1BUX1dz dXJwcmlzaW5nID0gNzkzLAogIE9QVF9Xc3dpdGNoID0gNzk0LAogIE9QVF9Xc3dpdGNoX2Jvb2wg PSA3OTUsCiAgT1BUX1dzd2l0Y2hfZGVmYXVsdCA9IDc5NiwKICBPUFRfV3N3aXRjaF9lbnVtID0g Nzk3LAogIE9QVF9Xc3dpdGNoX291dHNpZGVfcmFuZ2UgPSA3OTgsCiAgT1BUX1dzd2l0Y2hfdW5y ZWFjaGFibGUgPSA3OTksCiAgT1BUX1dzeW5jX25hbmQgPSA4MDAsCiAgT1BUX1dzeW50aCA9IDgw MSwKICBPUFRfV3N5c3RlbV9oZWFkZXJzID0gODAyLAogIE9QVF9XdGFicyA9IDgwMywKICBPUFRf V3RhcmdldF9saWZldGltZSA9IDgwNCwKICBPUFRfV3RhdXRvbG9naWNhbF9jb21wYXJlID0gODA1 LAogIE9QVF9XdGVtcGxhdGVzID0gODA2LAogIE9QVF9XdGVybWluYXRlID0gODA3LAogIE9QVF9X dHJhZGl0aW9uYWwgPSA4MDgsCiAgT1BUX1d0cmFkaXRpb25hbF9jb252ZXJzaW9uID0gODA5LAog IE9QVF9XdHJhbXBvbGluZXMgPSA4MTAsCiAgT1BUX1d0cmlncmFwaHMgPSA4MTEsCiAgT1BUX1d0 cml2aWFsX2F1dG9fdmFyX2luaXQgPSA4MTIsCiAgT1BUX1d0c2FuID0gODEzLAogIE9QVF9XdHlw ZV9saW1pdHMgPSA4MTQsCiAgT1BUX1d1bmRlY2xhcmVkX3NlbGVjdG9yID0gODE1LAogIE9QVF9X dW5kZWYgPSA4MTYsCiAgT1BUX1d1bmRlZmluZWRfZG9fbG9vcCA9IDgxNywKICBPUFRfV3VuZGVy ZmxvdyA9IDgxOCwKICBPUFRfV3VuaWNvZGUgPSA4MTksCiAgT1BUX1d1bmluaXRpYWxpemVkID0g ODIwLAogIE9QVF9XdW5rbm93bl9wcmFnbWFzID0gODIxLAoKCiAgT1BUX1d1bnN1ZmZpeGVkX2Zs b2F0X2NvbnN0YW50cyA9IDgyNCwKICBPUFRfV3VudXNlZCA9IDgyNSwKICBPUFRfV3VudXNlZF9i dXRfc2V0X3BhcmFtZXRlciA9IDgyNiwKICBPUFRfV3VudXNlZF9idXRfc2V0X3ZhcmlhYmxlID0g ODI3LAoKICBPUFRfV3VudXNlZF9jb25zdF92YXJpYWJsZV8gPSA4MjksCiAgT1BUX1d1bnVzZWRf ZHVtbXlfYXJndW1lbnQgPSA4MzAsCiAgT1BUX1d1bnVzZWRfZnVuY3Rpb24gPSA4MzEsCiAgT1BU X1d1bnVzZWRfbGFiZWwgPSA4MzIsCiAgT1BUX1d1bnVzZWRfbG9jYWxfdHlwZWRlZnMgPSA4MzMs CiAgT1BUX1d1bnVzZWRfbWFjcm9zID0gODM0LAogIE9QVF9XdW51c2VkX3BhcmFtZXRlciA9IDgz NSwKICBPUFRfV3VudXNlZF9yZXN1bHQgPSA4MzYsCiAgT1BUX1d1bnVzZWRfdmFsdWUgPSA4Mzcs CiAgT1BUX1d1bnVzZWRfdmFyaWFibGUgPSA4MzgsCiAgT1BUX1d1c2VfYWZ0ZXJfZnJlZSA9IDgz OSwKICBPUFRfV3VzZV9hZnRlcl9mcmVlXyA9IDg0MCwKICBPUFRfV3VzZV93aXRob3V0X29ubHkg PSA4NDEsCiAgT1BUX1d1c2VsZXNzX2Nhc3QgPSA4NDIsCiAgT1BUX1d2YXJhcmdzID0gODQzLAog IE9QVF9XdmFyaWFkaWNfbWFjcm9zID0gODQ0LAogIE9QVF9XdmVjdG9yX29wZXJhdGlvbl9wZXJm b3JtYW5jZSA9IDg0NSwKICBPUFRfV3ZleGluZ19wYXJzZSA9IDg0NiwKICBPUFRfV3ZpcnR1YWxf aW5oZXJpdGFuY2UgPSA4NDcsCiAgT1BUX1d2aXJ0dWFsX21vdmVfYXNzaWduID0gODQ4LAogIE9Q VF9XdmxhID0gODQ5LAogIE9QVF9XdmxhX2xhcmdlcl90aGFuXyA9IDg1MCwKICBPUFRfV3ZsYV9w YXJhbWV0ZXIgPSA4NTEsCiAgT1BUX1d2b2xhdGlsZSA9IDg1MiwKICBPUFRfV3ZvbGF0aWxlX3Jl Z2lzdGVyX3ZhciA9IDg1MywKICBPUFRfV3dyaXRlX3N0cmluZ3MgPSA4NTQsCiAgT1BUX1d4b3Jf dXNlZF9hc19wb3cgPSA4NTUsCiAgT1BUX1d6ZXJvX2FzX251bGxfcG9pbnRlcl9jb25zdGFudCA9 IDg1NiwKICBPUFRfV3plcm9fbGVuZ3RoX2JvdW5kcyA9IDg1NywKICBPUFRfV3plcm90cmlwID0g ODU4LAogIE9QVF9YID0gODU5LAogIE9QVF9YYXNzZW1ibGVyID0gODYwLAogIE9QVF9YZiA9IDg2 MSwKICBPUFRfWGxpbmtlciA9IDg2MiwKICBPUFRfWHByZXByb2Nlc3NvciA9IDg2MywKICBPUFRf WiA9IDg2NCwKICBPUFRfWnhsX21vZGVfYm9vdHN0cmFwID0gODY1LAogIE9QVF9aeGxfbW9kZV9l eGVjdXRhYmxlID0gODY2LAogIE9QVF9aeGxfbW9kZV9ub3ZlY3RvcnMgPSA4NjcsCiAgT1BUX1p4 bF9tb2RlX3hpbGtlcm5lbCA9IDg2OCwKICBPUFRfWnhsX21vZGVfeG1kc3R1YiA9IDg2OSwKICBP UFRfYW5zaSA9IDg3MCwKICBPUFRfYXV4X2luZm8gPSA4NzEsCgogIE9QVF9jID0gODczLAogIE9Q VF9jYWxsZ3JhcGggPSA4NzQsCiAgT1BUX2NvdmVyYWdlID0gODc1LAogIE9QVF9jcHAgPSA4NzYs CiAgT1BUX2NwcF8gPSA4NzcsCiAgT1BUX2QgPSA4NzgsCiAgT1BUX2RlYnVnbGliXyA9IDg3OSwK ICBPUFRfZGVmYXVsdGxpYl8gPSA4ODAsCiAgT1BUX2RlZmluZWRfb25seSA9IDg4MSwKICBPUFRf ZGVtYW5nbGUgPSA4ODIsCiAgT1BUX2RzdGFydGZpbGVzID0gODgzLAogIE9QVF9kdW1wX2JvZHlf ID0gODg0LAogIE9QVF9kdW1wX2xldmVsXyA9IDg4NSwKICBPUFRfZHVtcGJhc2UgPSA4ODYsCiAg T1BUX2R1bXBiYXNlX2V4dCA9IDg4NywKICBPUFRfZHVtcGRpciA9IDg4OCwKICBPUFRfZHVtcGZ1 bGx2ZXJzaW9uID0gODg5LAogIE9QVF9kdW1wbWFjaGluZSA9IDg5MCwKICBPUFRfZHVtcHNwZWNz ID0gODkxLAogIE9QVF9kdW1wdmVyc2lvbiA9IDg5MiwKICBPUFRfZSA9IDg5MywKICBPUFRfZXhw b3J0X2R5bmFtaWMgPSA4OTQsCiAgT1BUX2ZQSUMgPSA4OTUsCiAgT1BUX2ZQSUUgPSA4OTYsCiAg T1BUX2ZSVFNfID0gODk3LAogIE9QVF9mYWJpX2NvbXBhdF92ZXJzaW9uXyA9IDg5OCwKICBPUFRf ZmFiaV92ZXJzaW9uXyA9IDg5OSwKICBPUFRfZmFjY2Vzc19jb250cm9sID0gOTAwLAogIE9QVF9m YWRhX3NwZWNfcGFyZW50XyA9IDkwMSwKICBPUFRfZmFnZ3Jlc3NpdmVfZnVuY3Rpb25fZWxpbWlu YXRpb24gPSA5MDIsCiAgT1BUX2ZhZ2dyZXNzaXZlX2xvb3Bfb3B0aW1pemF0aW9ucyA9IDkwMywK ICBPUFRfZmFsaWduX2NvbW1vbnMgPSA5MDQsCiAgT1BUX2ZhbGlnbl9mdW5jdGlvbnMgPSA5MDUs CiAgT1BUX2ZhbGlnbl9mdW5jdGlvbnNfID0gOTA2LAogIE9QVF9mYWxpZ25fanVtcHMgPSA5MDcs CiAgT1BUX2ZhbGlnbl9qdW1wc18gPSA5MDgsCiAgT1BUX2ZhbGlnbl9sYWJlbHMgPSA5MDksCiAg T1BUX2ZhbGlnbl9sYWJlbHNfID0gOTEwLAogIE9QVF9mYWxpZ25fbG9vcHMgPSA5MTEsCiAgT1BU X2ZhbGlnbl9sb29wc18gPSA5MTIsCgogIE9QVF9mYWxpZ25lZF9uZXdfID0gOTE0LAogIE9QVF9m YWxsX2luc3RhbnRpYXRpb25zID0gOTE1LAogIE9QVF9mYWxsX2ludHJpbnNpY3MgPSA5MTYsCiAg T1BUX2ZhbGxfdmlydHVhbCA9IDkxNywKICBPUFRfZmFsbG9jYXRpb25fZGNlID0gOTE4LAogIE9Q VF9mYWxsb3dfYXJndW1lbnRfbWlzbWF0Y2ggPSA5MTksCiAgT1BUX2ZhbGxvd19pbnZhbGlkX2Jv eiA9IDkyMCwKICBPUFRfZmFsbG93X2xlYWRpbmdfdW5kZXJzY29yZSA9IDkyMSwKCiAgT1BUX2Zh bGxvd19zdG9yZV9kYXRhX3JhY2VzID0gOTIzLAogIE9QVF9mYWx0X2V4dGVybmFsX3RlbXBsYXRl cyA9IDkyNCwKICBPUFRfZmFuYWx5emVyID0gOTI1LAogIE9QVF9mYW5hbHl6ZXJfY2FsbF9zdW1t YXJpZXMgPSA5MjYsCiAgT1BUX2ZhbmFseXplcl9jaGVja2VyXyA9IDkyNywKICBPUFRfZmFuYWx5 emVyX2ZlYXNpYmlsaXR5ID0gOTI4LAogIE9QVF9mYW5hbHl6ZXJfZmluZV9ncmFpbmVkID0gOTI5 LAogIE9QVF9mYW5hbHl6ZXJfc2hvd19kdXBsaWNhdGVfY291bnQgPSA5MzAsCiAgT1BUX2ZhbmFs eXplcl9zdGF0ZV9tZXJnZSA9IDkzMSwKICBPUFRfZmFuYWx5emVyX3N0YXRlX3B1cmdlID0gOTMy LAogIE9QVF9mYW5hbHl6ZXJfdHJhbnNpdGl2aXR5ID0gOTMzLAogIE9QVF9mYW5hbHl6ZXJfdW5k b19pbmxpbmluZyA9IDkzNCwKICBPUFRfZmFuYWx5emVyX3ZlcmJvc2VfZWRnZXMgPSA5MzUsCiAg T1BUX2ZhbmFseXplcl92ZXJib3NlX3N0YXRlX2NoYW5nZXMgPSA5MzYsCiAgT1BUX2ZhbmFseXpl cl92ZXJib3NpdHlfID0gOTM3LAoKCgoKICBPUFRfZmFzYW5fc2hhZG93X29mZnNldF8gPSA5NDIs CiAgT1BUX2Zhc20gPSA5NDMsCiAgT1BUX2Zhc3NlcnQgPSA5NDQsCiAgT1BUX2Zhc3NvY2lhdGl2 ZV9tYXRoID0gOTQ1LAogIE9QVF9mYXN5bmNocm9ub3VzX3Vud2luZF90YWJsZXMgPSA5NDYsCiAg T1BUX2ZhdXRvX2luY19kZWMgPSA5NDcsCiAgT1BUX2ZhdXRvX3Byb2ZpbGUgPSA5NDgsCiAgT1BU X2ZhdXRvX3Byb2ZpbGVfID0gOTQ5LAogIE9QVF9mYXV0b21hdGljID0gOTUwLAogIE9QVF9mYmFj a3NsYXNoID0gOTUxLAogIE9QVF9mYmFja3RyYWNlID0gOTUyLAogIE9QVF9mYml0X3Rlc3RzID0g OTUzLAogIE9QVF9mYmxhc19tYXRtdWxfbGltaXRfID0gOTU0LAogIE9QVF9mYm91bmRzX2NoZWNr ID0gOTU1LAogIE9QVF9mYm91bmRzX2NoZWNrXyA9IDk1NiwKICBPUFRfZmJyYW5jaF9jb3VudF9y ZWcgPSA5NTcsCiAgT1BUX2ZicmFuY2hfcHJvYmFiaWxpdGllcyA9IDk1OCwKCgoKICBPUFRfZmJ1 aWxkaW5nX2xpYmdjYyA9IDk2MiwKICBPUFRfZmJ1aWxkaW5nX2xpYmdmb3J0cmFuID0gOTYzLAog IE9QVF9mYnVpbGRpbmdfbGlicGhvYm9zX3Rlc3RzID0gOTY0LAogIE9QVF9mYnVpbHRpbiA9IDk2 NSwKICBPUFRfZmJ1aWx0aW5fID0gOTY2LAogIE9QVF9mYnVpbHRpbl9wcmludGYgPSA5NjcsCiAg T1BUX2ZjX3Byb3RvdHlwZXMgPSA5NjgsCiAgT1BUX2ZjX3Byb3RvdHlwZXNfZXh0ZXJuYWwgPSA5 NjksCiAgT1BUX2ZjYWxsX3NhdmVkXyA9IDk3MCwKICBPUFRfZmNhbGxfdXNlZF8gPSA5NzEsCiAg T1BUX2ZjYWxsZXJfc2F2ZXMgPSA5NzIsCiAgT1BUX2ZjYWxsZ3JhcGhfaW5mbyA9IDk3MywKICBP UFRfZmNhbGxncmFwaF9pbmZvXyA9IDk3NCwKICBPUFRfZmNhbm9uaWNhbF9zeXN0ZW1faGVhZGVy cyA9IDk3NSwKCiAgT1BUX2ZjZl9wcm90ZWN0aW9uXyA9IDk3NywKICBPUFRfZmNoYXI4X3QgPSA5 NzgsCiAgT1BUX2ZjaGVja19hcnJheV90ZW1wb3JhcmllcyA9IDk3OSwKCiAgT1BUX2ZjaGVja19u ZXcgPSA5ODEsCiAgT1BUX2ZjaGVja19wb2ludGVyX2JvdW5kcyA9IDk4MiwKICBPUFRfZmNoZWNr XyA9IDk4MywKCgoKCgoKICBPUFRfZmNoZWNrYWN0aW9uXyA9IDk5MCwKICBPUFRfZmNoZWNraW5n ID0gOTkxLAogIE9QVF9mY2hlY2tpbmdfID0gOTkyLAogIE9QVF9mY2hrcF9jaGVja19pbmNvbXBs ZXRlX3R5cGUgPSA5OTMsCiAgT1BUX2ZjaGtwX2NoZWNrX3JlYWQgPSA5OTQsCiAgT1BUX2ZjaGtw X2NoZWNrX3dyaXRlID0gOTk1LAogIE9QVF9mY2hrcF9maXJzdF9maWVsZF9oYXNfb3duX2JvdW5k cyA9IDk5NiwKICBPUFRfZmNoa3BfZmxleGlibGVfc3RydWN0X3RyYWlsaW5nX2FycmF5cyA9IDk5 NywKICBPUFRfZmNoa3BfaW5zdHJ1bWVudF9jYWxscyA9IDk5OCwKICBPUFRfZmNoa3BfaW5zdHJ1 bWVudF9tYXJrZWRfb25seSA9IDk5OSwKICBPUFRfZmNoa3BfbmFycm93X2JvdW5kcyA9IDEwMDAs CiAgT1BUX2ZjaGtwX25hcnJvd190b19pbm5lcm1vc3RfYXJyYXkgPSAxMDAxLAogIE9QVF9mY2hr cF9vcHRpbWl6ZSA9IDEwMDIsCiAgT1BUX2ZjaGtwX3N0b3JlX2JvdW5kcyA9IDEwMDMsCiAgT1BU X2ZjaGtwX3RyZWF0X3plcm9fZHluYW1pY19zaXplX2FzX2luZmluaXRlID0gMTAwNCwKICBPUFRf ZmNoa3BfdXNlX2Zhc3Rfc3RyaW5nX2Z1bmN0aW9ucyA9IDEwMDUsCiAgT1BUX2ZjaGtwX3VzZV9u b2Noa19zdHJpbmdfZnVuY3Rpb25zID0gMTAwNiwKICBPUFRfZmNoa3BfdXNlX3N0YXRpY19ib3Vu ZHMgPSAxMDA3LAogIE9QVF9mY2hrcF91c2Vfc3RhdGljX2NvbnN0X2JvdW5kcyA9IDEwMDgsCiAg T1BUX2ZjaGtwX3VzZV93cmFwcGVycyA9IDEwMDksCiAgT1BUX2ZjaGtwX3plcm9faW5wdXRfYm91 bmRzX2Zvcl9tYWluID0gMTAxMCwKCiAgT1BUX2Zjb2FycmF5XyA9IDEwMTIsCiAgT1BUX2Zjb2Rl X2hvaXN0aW5nID0gMTAxMywKICBPUFRfZmNvbWJpbmVfc3RhY2tfYWRqdXN0bWVudHMgPSAxMDE0 LAogIE9QVF9mY29tbW9uID0gMTAxNSwKICBPUFRfZmNvbXBhcmVfZGVidWcgPSAxMDE2LAogIE9Q VF9mY29tcGFyZV9kZWJ1Z19zZWNvbmQgPSAxMDE3LAogIE9QVF9mY29tcGFyZV9kZWJ1Z18gPSAx MDE4LAogIE9QVF9mY29tcGFyZV9lbGltID0gMTAxOSwKICBPUFRfZmNvbmNlcHRzID0gMTAyMCwK ICBPUFRfZmNvbmNlcHRzX2RpYWdub3N0aWNzX2RlcHRoXyA9IDEwMjEsCiAgT1BUX2Zjb25jZXB0 c190cyA9IDEwMjIsCiAgT1BUX2Zjb25kX21pc21hdGNoID0gMTAyMywKCiAgT1BUX2Zjb25zZXJ2 ZV9zdGFjayA9IDEwMjUsCiAgT1BUX2Zjb25zdGFudF9zdHJpbmdfY2xhc3NfID0gMTAyNiwKICBP UFRfZmNvbnN0ZXhwcl9jYWNoZV9kZXB0aF8gPSAxMDI3LAogIE9QVF9mY29uc3RleHByX2RlcHRo XyA9IDEwMjgsCiAgT1BUX2Zjb25zdGV4cHJfZnBfZXhjZXB0ID0gMTAyOSwKICBPUFRfZmNvbnN0 ZXhwcl9sb29wX2xpbWl0XyA9IDEwMzAsCiAgT1BUX2Zjb25zdGV4cHJfb3BzX2xpbWl0XyA9IDEw MzEsCiAgT1BUX2Zjb252ZXJ0XyA9IDEwMzIsCiAgT1BUX2Zjb3JvdXRpbmVzID0gMTAzMywKICBP UFRfZmNwcm9wX3JlZ2lzdGVycyA9IDEwMzQsCiAgT1BUX2ZjcmF5X3BvaW50ZXIgPSAxMDM1LAog IE9QVF9mY3Jvc3NqdW1waW5nID0gMTAzNiwKICBPUFRfZmNzZV9mb2xsb3dfanVtcHMgPSAxMDM3 LAoKICBPUFRfZmN4X2ZvcnRyYW5fcnVsZXMgPSAxMDM5LAogIE9QVF9mY3hfbGltaXRlZF9yYW5n ZSA9IDEwNDAsCiAgT1BUX2ZkX2xpbmVzX2FzX2NvZGUgPSAxMDQxLAogIE9QVF9mZF9saW5lc19h c19jb21tZW50cyA9IDEwNDIsCiAgT1BUX2ZkYXRhX3NlY3Rpb25zID0gMTA0MywKICBPUFRfZmRi Z19jbnRfbGlzdCA9IDEwNDQsCiAgT1BUX2ZkYmdfY250XyA9IDEwNDUsCiAgT1BUX2ZkY2UgPSAx MDQ2LAogIE9QVF9mZGVidWcgPSAxMDQ3LAogIE9QVF9mZGVidWdfYXV4X3ZhcnMgPSAxMDQ4LAog IE9QVF9mZGVidWdfY3BwID0gMTA0OSwKICBPUFRfZmRlYnVnX3ByZWZpeF9tYXBfID0gMTA1MCwK ICBPUFRfZmRlYnVnX3R5cGVzX3NlY3Rpb24gPSAxMDUxLAogIE9QVF9mZGVidWdfID0gMTA1MiwK ICBPUFRfZmRlYyA9IDEwNTMsCiAgT1BUX2ZkZWNfYmxhbmtfZm9ybWF0X2l0ZW0gPSAxMDU0LAog IE9QVF9mZGVjX2NoYXJfY29udmVyc2lvbnMgPSAxMDU1LAogIE9QVF9mZGVjX2Zvcm1hdF9kZWZh dWx0cyA9IDEwNTYsCiAgT1BUX2ZkZWNfaW5jbHVkZSA9IDEwNTcsCiAgT1BUX2ZkZWNfaW50cmlu c2ljX2ludHMgPSAxMDU4LAogIE9QVF9mZGVjX21hdGggPSAxMDU5LAogIE9QVF9mZGVjX3N0YXRp YyA9IDEwNjAsCiAgT1BUX2ZkZWNfc3RydWN0dXJlID0gMTA2MSwKICBPUFRfZmRlY2xvbmVfY3Rv cl9kdG9yID0gMTA2MiwKCiAgT1BUX2ZkZWZhdWx0X2RvdWJsZV84ID0gMTA2NCwKCiAgT1BUX2Zk ZWZhdWx0X2ludGVnZXJfOCA9IDEwNjYsCiAgT1BUX2ZkZWZhdWx0X3JlYWxfMTAgPSAxMDY3LAog IE9QVF9mZGVmYXVsdF9yZWFsXzE2ID0gMTA2OCwKICBPUFRfZmRlZmF1bHRfcmVhbF84ID0gMTA2 OSwKICBPUFRfZmRlZmVyX3BvcCA9IDEwNzAsCiAgT1BUX2ZkZWxheWVkX2JyYW5jaCA9IDEwNzEs CiAgT1BUX2ZkZWxldGVfZGVhZF9leGNlcHRpb25zID0gMTA3MiwKICBPUFRfZmRlbGV0ZV9udWxs X3BvaW50ZXJfY2hlY2tzID0gMTA3MywKICBPUFRfZmRldmlydHVhbGl6ZSA9IDEwNzQsCiAgT1BU X2ZkZXZpcnR1YWxpemVfYXRfbHRyYW5zID0gMTA3NSwKICBPUFRfZmRldmlydHVhbGl6ZV9zcGVj dWxhdGl2ZWx5ID0gMTA3NiwKCiAgT1BUX2ZkaWFnbm9zdGljc19jb2xvcl8gPSAxMDc4LAogIE9Q VF9mZGlhZ25vc3RpY3NfY29sdW1uX29yaWdpbl8gPSAxMDc5LAogIE9QVF9mZGlhZ25vc3RpY3Nf Y29sdW1uX3VuaXRfID0gMTA4MCwKICBPUFRfZmRpYWdub3N0aWNzX2VzY2FwZV9mb3JtYXRfID0g MTA4MSwKICBPUFRfZmRpYWdub3N0aWNzX2Zvcm1hdF8gPSAxMDgyLAogIE9QVF9mZGlhZ25vc3Rp Y3NfZ2VuZXJhdGVfcGF0Y2ggPSAxMDgzLAogIE9QVF9mZGlhZ25vc3RpY3NfbWluaW11bV9tYXJn aW5fd2lkdGhfID0gMTA4NCwKICBPUFRfZmRpYWdub3N0aWNzX3BhcnNlYWJsZV9maXhpdHMgPSAx MDg1LAogIE9QVF9mZGlhZ25vc3RpY3NfcGF0aF9mb3JtYXRfID0gMTA4NiwKICBPUFRfZmRpYWdu b3N0aWNzX3BsYWluX291dHB1dCA9IDEwODcsCiAgT1BUX2ZkaWFnbm9zdGljc19zaG93X2NhcmV0 ID0gMTA4OCwKICBPUFRfZmRpYWdub3N0aWNzX3Nob3dfY3dlID0gMTA4OSwKICBPUFRfZmRpYWdu b3N0aWNzX3Nob3dfbGFiZWxzID0gMTA5MCwKICBPUFRfZmRpYWdub3N0aWNzX3Nob3dfbGluZV9u dW1iZXJzID0gMTA5MSwKICBPUFRfZmRpYWdub3N0aWNzX3Nob3dfbG9jYXRpb25fID0gMTA5MiwK ICBPUFRfZmRpYWdub3N0aWNzX3Nob3dfb3B0aW9uID0gMTA5MywKICBPUFRfZmRpYWdub3N0aWNz X3Nob3dfcGF0aF9kZXB0aHMgPSAxMDk0LAogIE9QVF9mZGlhZ25vc3RpY3Nfc2hvd19ydWxlcyA9 IDEwOTUsCiAgT1BUX2ZkaWFnbm9zdGljc19zaG93X3RlbXBsYXRlX3RyZWUgPSAxMDk2LAogIE9Q VF9mZGlhZ25vc3RpY3NfdXJsc18gPSAxMDk3LAogIE9QVF9mZGlyZWN0aXZlc19vbmx5ID0gMTA5 OCwKICBPUFRfZmRpc2FibGVfID0gMTA5OSwKICBPUFRfZmRvYyA9IDExMDAsCiAgT1BUX2Zkb2Nf ZGlyXyA9IDExMDEsCiAgT1BUX2Zkb2NfZmlsZV8gPSAxMTAyLAogIE9QVF9mZG9jX2luY18gPSAx MTAzLAogIE9QVF9mZG9sbGFyX29rID0gMTEwNCwKICBPUFRfZmRvbGxhcnNfaW5faWRlbnRpZmll cnMgPSAxMTA1LAogIE9QVF9mZHJ1bnRpbWUgPSAxMTA2LAogIE9QVF9mZHNlID0gMTEwNywKICBP UFRfZmR1bXBfID0gMTEwOCwKICBPUFRfZmR1bXBfYWRhX3NwZWMgPSAxMTA5LAogIE9QVF9mZHVt cF9hZGFfc3BlY19zbGltID0gMTExMCwKICBPUFRfZmR1bXBfYW5hbHl6ZXIgPSAxMTExLAogIE9Q VF9mZHVtcF9hbmFseXplcl9jYWxsZ3JhcGggPSAxMTEyLAogIE9QVF9mZHVtcF9hbmFseXplcl9l eHBsb2RlZF9ncmFwaCA9IDExMTMsCiAgT1BUX2ZkdW1wX2FuYWx5emVyX2V4cGxvZGVkX25vZGVz ID0gMTExNCwKICBPUFRfZmR1bXBfYW5hbHl6ZXJfZXhwbG9kZWRfbm9kZXNfMiA9IDExMTUsCiAg T1BUX2ZkdW1wX2FuYWx5emVyX2V4cGxvZGVkX25vZGVzXzMgPSAxMTE2LAogIE9QVF9mZHVtcF9h bmFseXplcl9leHBsb2RlZF9wYXRocyA9IDExMTcsCiAgT1BUX2ZkdW1wX2FuYWx5emVyX2ZlYXNp YmlsaXR5ID0gMTExOCwKICBPUFRfZmR1bXBfYW5hbHl6ZXJfanNvbiA9IDExMTksCiAgT1BUX2Zk dW1wX2FuYWx5emVyX3N0YXRlX3B1cmdlID0gMTEyMCwKICBPUFRfZmR1bXBfYW5hbHl6ZXJfc3Rk ZXJyID0gMTEyMSwKICBPUFRfZmR1bXBfYW5hbHl6ZXJfc3VwZXJncmFwaCA9IDExMjIsCiAgT1BU X2ZkdW1wX2FuYWx5emVyX3VudHJhY2tlZCA9IDExMjMsCiAgT1BUX2ZkdW1wX2NfX19zcGVjX3Zl cmJvc2UgPSAxMTI0LAogIE9QVF9mZHVtcF9jX19fc3BlY18gPSAxMTI1LAoKICBPUFRfZmR1bXBf ZF9vcmlnaW5hbCA9IDExMjcsCiAgT1BUX2ZkdW1wX2ZpbmFsX2luc25zID0gMTEyOCwKICBPUFRf ZmR1bXBfZmluYWxfaW5zbnNfID0gMTEyOSwKICBPUFRfZmR1bXBfZm9ydHJhbl9nbG9iYWwgPSAx MTMwLAogIE9QVF9mZHVtcF9mb3J0cmFuX29wdGltaXplZCA9IDExMzEsCiAgT1BUX2ZkdW1wX2Zv cnRyYW5fb3JpZ2luYWwgPSAxMTMyLAogIE9QVF9mZHVtcF9nb19zcGVjXyA9IDExMzMsCiAgT1BU X2ZkdW1wX2ludGVybmFsX2xvY2F0aW9ucyA9IDExMzQsCiAgT1BUX2ZkdW1wX25vYWRkciA9IDEx MzUsCgogIE9QVF9mZHVtcF9wYXNzZXMgPSAxMTM3LAogIE9QVF9mZHVtcF9zY29zID0gMTEzOCwK ICBPUFRfZmR1bXBfdW5udW1iZXJlZCA9IDExMzksCiAgT1BUX2ZkdW1wX3VubnVtYmVyZWRfbGlu a3MgPSAxMTQwLAogIE9QVF9mZHdhcmYyX2NmaV9hc20gPSAxMTQxLAogIE9QVF9mZWFybHlfaW5s aW5pbmcgPSAxMTQyLAogIE9QVF9mZWxpZGVfY29uc3RydWN0b3JzID0gMTE0MywKICBPUFRfZmVs aWRlX3R5cGUgPSAxMTQ0LAoKICBPUFRfZmVsaW1pbmF0ZV91bnVzZWRfZGVidWdfc3ltYm9scyA9 IDExNDYsCiAgT1BUX2ZlbGltaW5hdGVfdW51c2VkX2RlYnVnX3R5cGVzID0gMTE0NywKICBPUFRf ZmVtaXRfY2xhc3NfZGVidWdfYWx3YXlzID0gMTE0OCwKICBPUFRfZmVtaXRfc3RydWN0X2RlYnVn X2Jhc2Vvbmx5ID0gMTE0OSwKICBPUFRfZmVtaXRfc3RydWN0X2RlYnVnX2RldGFpbGVkXyA9IDEx NTAsCiAgT1BUX2ZlbWl0X3N0cnVjdF9kZWJ1Z19yZWR1Y2VkID0gMTE1MSwKICBPUFRfZmVuYWJs ZV8gPSAxMTUyLAogIE9QVF9mZW5mb3JjZV9laF9zcGVjcyA9IDExNTMsCiAgT1BUX2ZlbnVtX2lu dF9lcXVpdiA9IDExNTQsCiAgT1BUX2ZleGNlcHRpb25zID0gMTE1NSwKICBPUFRfZmV4Y2Vzc19w cmVjaXNpb25fID0gMTE1NiwKICBPUFRfZmV4ZWNfY2hhcnNldF8gPSAxMTU3LAogIE9QVF9mZXhw ZW5zaXZlX29wdGltaXphdGlvbnMgPSAxMTU4LAogIE9QVF9mZXh0X251bWVyaWNfbGl0ZXJhbHMg PSAxMTU5LAogIE9QVF9mZXh0ZW5kZWRfaWRlbnRpZmllcnMgPSAxMTYwLAogIE9QVF9mZXh0ZXJu X3N0ZF8gPSAxMTYxLAogIE9QVF9mZXh0ZXJuX3Rsc19pbml0ID0gMTE2MiwKICBPUFRfZmV4dGVy bmFsX2JsYXMgPSAxMTYzLAogIE9QVF9mZXh0ZXJuYWxfdGVtcGxhdGVzID0gMTE2NCwKICBPUFRf ZmYyYyA9IDExNjUsCiAgT1BUX2ZmYXN0X21hdGggPSAxMTY2LAogIE9QVF9mZmF0X2x0b19vYmpl Y3RzID0gMTE2NywKICBPUFRfZmZpbGVfcHJlZml4X21hcF8gPSAxMTY4LAogIE9QVF9mZmluaXRl X2xvb3BzID0gMTE2OSwKICBPUFRfZmZpbml0ZV9tYXRoX29ubHkgPSAxMTcwLAogIE9QVF9mZml4 ZWRfID0gMTE3MSwKICBPUFRfZmZpeGVkX2Zvcm0gPSAxMTcyLAogIE9QVF9mZml4ZWRfbGluZV9s ZW5ndGhfID0gMTE3MywKICBPUFRfZmZpeGVkX2xpbmVfbGVuZ3RoX25vbmUgPSAxMTc0LAogIE9Q VF9mZmxvYXRfc3RvcmUgPSAxMTc1LAogIE9QVF9mZm9sZF9zaW1wbGVfaW5saW5lcyA9IDExNzYs CiAgT1BUX2Zmb3Jfc2NvcGUgPSAxMTc3LAoKICBPUFRfZmZvcndhcmRfcHJvcGFnYXRlID0gMTE3 OSwKICBPUFRfZmZwX2NvbnRyYWN0XyA9IDExODAsCiAgT1BUX2ZmcF9pbnRfYnVpbHRpbl9pbmV4 YWN0ID0gMTE4MSwKICBPUFRfZmZwZV9zdW1tYXJ5XyA9IDExODIsCiAgT1BUX2ZmcGVfdHJhcF8g PSAxMTgzLAogIE9QVF9mZnJlZV9mb3JtID0gMTE4NCwKICBPUFRfZmZyZWVfbGluZV9sZW5ndGhf ID0gMTE4NSwKICBPUFRfZmZyZWVfbGluZV9sZW5ndGhfbm9uZSA9IDExODYsCiAgT1BUX2ZmcmVl c3RhbmRpbmcgPSAxMTg3LAogIE9QVF9mZnJpZW5kX2luamVjdGlvbiA9IDExODgsCiAgT1BUX2Zm cm9udGVuZF9sb29wX2ludGVyY2hhbmdlID0gMTE4OSwKICBPUFRfZmZyb250ZW5kX29wdGltaXpl ID0gMTE5MCwKICBPUFRfZmZ1bmN0aW9uX2NzZSA9IDExOTEsCiAgT1BUX2ZmdW5jdGlvbl9zZWN0 aW9ucyA9IDExOTIsCiAgT1BUX2ZnY3NlID0gMTE5MywKICBPUFRfZmdjc2VfYWZ0ZXJfcmVsb2Fk ID0gMTE5NCwKICBPUFRfZmdjc2VfbGFzID0gMTE5NSwKICBPUFRfZmdjc2VfbG0gPSAxMTk2LAog IE9QVF9mZ2NzZV9zbSA9IDExOTcsCiAgT1BUX2ZnaW1wbGUgPSAxMTk4LAogIE9QVF9mZ25hdF9l bmNvZGluZ3NfID0gMTE5OSwKICBPUFRfZmdudV9rZXl3b3JkcyA9IDEyMDAsCiAgT1BUX2ZnbnVf cnVudGltZSA9IDEyMDEsCiAgT1BUX2ZnbnVfdG0gPSAxMjAyLAogIE9QVF9mZ251X3VuaXF1ZSA9 IDEyMDMsCiAgT1BUX2ZnbnU4OV9pbmxpbmUgPSAxMjA0LAogIE9QVF9mZ29fY19oZWFkZXJfID0g MTIwNSwKICBPUFRfZmdvX2NoZWNrX2RpdmlkZV9vdmVyZmxvdyA9IDEyMDYsCiAgT1BUX2Znb19j aGVja19kaXZpZGVfemVybyA9IDEyMDcsCiAgT1BUX2Znb19jb21waWxpbmdfcnVudGltZSA9IDEy MDgsCiAgT1BUX2Znb19kZWJ1Z19lc2NhcGUgPSAxMjA5LAogIE9QVF9mZ29fZGVidWdfZXNjYXBl X2hhc2hfID0gMTIxMCwKICBPUFRfZmdvX2RlYnVnX29wdGltaXphdGlvbiA9IDEyMTEsCiAgT1BU X2Znb19kdW1wXyA9IDEyMTIsCiAgT1BUX2Znb19lbWJlZGNmZ18gPSAxMjEzLAogIE9QVF9mZ29f b3B0aW1pemVfID0gMTIxNCwKICBPUFRfZmdvX3BrZ3BhdGhfID0gMTIxNSwKICBPUFRfZmdvX3By ZWZpeF8gPSAxMjE2LAogIE9QVF9mZ29fcmVsYXRpdmVfaW1wb3J0X3BhdGhfID0gMTIxNywKICBP UFRfZmdyYXBoaXRlID0gMTIxOCwKICBPUFRfZmdyYXBoaXRlX2lkZW50aXR5ID0gMTIxOSwKICBP UFRfZmd1ZXNzX2JyYW5jaF9wcm9iYWJpbGl0eSA9IDEyMjAsCiAgT1BUX2ZndWlkaW5nX2RlY2xz ID0gMTIyMSwKCiAgT1BUX2ZoYXJkZW5fY29tcGFyZXMgPSAxMjIzLAogIE9QVF9maGFyZGVuX2Nv bmRpdGlvbmFsX2JyYW5jaGVzID0gMTIyNCwKCgogIE9QVF9maG9pc3RfYWRqYWNlbnRfbG9hZHMg PSAxMjI3LAogIE9QVF9maG9ub3Jfc3RkID0gMTIyOCwKICBPUFRfZmhvc3RlZCA9IDEyMjksCiAg T1BUX2ZodWdlX29iamVjdHMgPSAxMjMwLAogIE9QVF9maWRlbnQgPSAxMjMxLAogIE9QVF9maWZf Y29udmVyc2lvbiA9IDEyMzIsCiAgT1BUX2ZpZl9jb252ZXJzaW9uMiA9IDEyMzMsCiAgT1BUX2Zp Z25vcmVfdW5rbm93bl9wcmFnbWFzID0gMTIzNCwKICBPUFRfZmltcGxlbWVudF9pbmxpbmVzID0g MTIzNSwKICBPUFRfZmltcGxpY2l0X2NvbnN0ZXhwciA9IDEyMzYsCiAgT1BUX2ZpbXBsaWNpdF9p bmxpbmVfdGVtcGxhdGVzID0gMTIzNywKICBPUFRfZmltcGxpY2l0X25vbmUgPSAxMjM4LAogIE9Q VF9maW1wbGljaXRfdGVtcGxhdGVzID0gMTIzOSwKICBPUFRfZmluZGlyZWN0X2lubGluaW5nID0g MTI0MCwKICBPUFRfZmluaGliaXRfc2l6ZV9kaXJlY3RpdmUgPSAxMjQxLAogIE9QVF9maW5pdF9j aGFyYWN0ZXJfID0gMTI0MiwKICBPUFRfZmluaXRfZGVyaXZlZCA9IDEyNDMsCiAgT1BUX2Zpbml0 X2ludGVnZXJfID0gMTI0NCwKICBPUFRfZmluaXRfbG9jYWxfemVybyA9IDEyNDUsCiAgT1BUX2Zp bml0X2xvZ2ljYWxfID0gMTI0NiwKICBPUFRfZmluaXRfcmVhbF8gPSAxMjQ3LAogIE9QVF9maW5s aW5lID0gMTI0OCwKICBPUFRfZmlubGluZV9hcmdfcGFja2luZyA9IDEyNDksCiAgT1BUX2Zpbmxp bmVfYXRvbWljcyA9IDEyNTAsCiAgT1BUX2ZpbmxpbmVfZnVuY3Rpb25zID0gMTI1MSwKICBPUFRf ZmlubGluZV9mdW5jdGlvbnNfY2FsbGVkX29uY2UgPSAxMjUyLAoKICBPUFRfZmlubGluZV9saW1p dF8gPSAxMjU0LAogIE9QVF9maW5saW5lX21hdG11bF9saW1pdF8gPSAxMjU1LAogIE9QVF9maW5s aW5lX3NtYWxsX2Z1bmN0aW9ucyA9IDEyNTYsCiAgT1BUX2ZpbnB1dF9jaGFyc2V0XyA9IDEyNTcs CiAgT1BUX2ZpbnN0cnVtZW50X2Z1bmN0aW9ucyA9IDEyNTgsCiAgT1BUX2ZpbnN0cnVtZW50X2Z1 bmN0aW9uc19leGNsdWRlX2ZpbGVfbGlzdF8gPSAxMjU5LAogIE9QVF9maW5zdHJ1bWVudF9mdW5j dGlvbnNfZXhjbHVkZV9mdW5jdGlvbl9saXN0XyA9IDEyNjAsCiAgT1BUX2ZpbnN0cnVtZW50X2Z1 bmN0aW9uc19vbmNlID0gMTI2MSwKICBPUFRfZmludGVnZXJfNF9pbnRlZ2VyXzggPSAxMjYyLAog IE9QVF9maW50cmluc2ljX21vZHVsZXNfcGF0aCA9IDEyNjMsCiAgT1BUX2ZpbnRyaW5zaWNfbW9k dWxlc19wYXRoXyA9IDEyNjQsCiAgT1BUX2ZpbnZhcmlhbnRzID0gMTI2NSwKICBPUFRfZmlwYV9i aXRfY3AgPSAxMjY2LAogIE9QVF9maXBhX2NwID0gMTI2NywKCiAgT1BUX2ZpcGFfY3BfY2xvbmUg PSAxMjY5LAogIE9QVF9maXBhX2ljZiA9IDEyNzAsCiAgT1BUX2ZpcGFfaWNmX2Z1bmN0aW9ucyA9 IDEyNzEsCiAgT1BUX2ZpcGFfaWNmX3ZhcmlhYmxlcyA9IDEyNzIsCgogIE9QVF9maXBhX21vZHJl ZiA9IDEyNzQsCiAgT1BUX2ZpcGFfcHJvZmlsZSA9IDEyNzUsCiAgT1BUX2ZpcGFfcHRhID0gMTI3 NiwKICBPUFRfZmlwYV9wdXJlX2NvbnN0ID0gMTI3NywKICBPUFRfZmlwYV9yYSA9IDEyNzgsCiAg T1BUX2ZpcGFfcmVmZXJlbmNlID0gMTI3OSwKICBPUFRfZmlwYV9yZWZlcmVuY2VfYWRkcmVzc2Fi bGUgPSAxMjgwLAogIE9QVF9maXBhX3NyYSA9IDEyODEsCiAgT1BUX2ZpcGFfc3RhY2tfYWxpZ25t ZW50ID0gMTI4MiwKICBPUFRfZmlwYV9zdHJpY3RfYWxpYXNpbmcgPSAxMjgzLAoKICBPUFRfZmlw YV92cnAgPSAxMjg1LAogIE9QVF9maXJhX2FsZ29yaXRobV8gPSAxMjg2LAogIE9QVF9maXJhX2hv aXN0X3ByZXNzdXJlID0gMTI4NywKICBPUFRfZmlyYV9sb29wX3ByZXNzdXJlID0gMTI4OCwKICBP UFRfZmlyYV9yZWdpb25fID0gMTI4OSwKICBPUFRfZmlyYV9zaGFyZV9zYXZlX3Nsb3RzID0gMTI5 MCwKICBPUFRfZmlyYV9zaGFyZV9zcGlsbF9zbG90cyA9IDEyOTEsCiAgT1BUX2ZpcmFfdmVyYm9z ZV8gPSAxMjkyLAogIE9QVF9maXNvbGF0ZV9lcnJvbmVvdXNfcGF0aHNfYXR0cmlidXRlID0gMTI5 MywKICBPUFRfZmlzb2xhdGVfZXJyb25lb3VzX3BhdGhzX2RlcmVmZXJlbmNlID0gMTI5NCwKICBP UFRfZml2YXJfdmlzaWJpbGl0eV8gPSAxMjk1LAogIE9QVF9maXZvcHRzID0gMTI5NiwKICBPUFRf Zmp1bXBfdGFibGVzID0gMTI5NywKICBPUFRfZmtlZXBfZ2Nfcm9vdHNfbGl2ZSA9IDEyOTgsCiAg T1BUX2ZrZWVwX2lubGluZV9kbGxleHBvcnQgPSAxMjk5LAogIE9QVF9ma2VlcF9pbmxpbmVfZnVu Y3Rpb25zID0gMTMwMCwKICBPUFRfZmtlZXBfc3RhdGljX2NvbnN0cyA9IDEzMDEsCiAgT1BUX2Zr ZWVwX3N0YXRpY19mdW5jdGlvbnMgPSAxMzAyLAogIE9QVF9mbGFiZWxzX29rID0gMTMwMywKICBP UFRfZmxhbmdfaW5mb19pbmNsdWRlX3RyYW5zbGF0ZSA9IDEzMDQsCiAgT1BUX2ZsYW5nX2luZm9f aW5jbHVkZV90cmFuc2xhdGVfbm90ID0gMTMwNSwKICBPUFRfZmxhbmdfaW5mb19pbmNsdWRlX3Ry YW5zbGF0ZV8gPSAxMzA2LAogIE9QVF9mbGFuZ19pbmZvX21vZHVsZV9jbWkgPSAxMzA3LAogIE9Q VF9mbGFuZ19pbmZvX21vZHVsZV9jbWlfID0gMTMwOCwKICBPUFRfZmxhcmdlX3NvdXJjZV9maWxl cyA9IDEzMDksCiAgT1BUX2ZsYXhfdmVjdG9yX2NvbnZlcnNpb25zID0gMTMxMCwKICBPUFRfZmxl YWRpbmdfdW5kZXJzY29yZSA9IDEzMTEsCiAgT1BUX2ZsaWZldGltZV9kc2UgPSAxMzEyLAogIE9Q VF9mbGlmZXRpbWVfZHNlXyA9IDEzMTMsCiAgT1BUX2ZsaW1pdF9mdW5jdGlvbl9hbGlnbm1lbnQg PSAxMzE0LAogIE9QVF9mbGlua2VyX291dHB1dF8gPSAxMzE1LAoKICBPUFRfZmxpdmVfcGF0Y2hp bmdfID0gMTMxNywKICBPUFRfZmxpdmVfcmFuZ2Vfc2hyaW5rYWdlID0gMTMxOCwKICBPUFRfZmxv Y2FsX2l2YXJzID0gMTMxOSwKCgogIE9QVF9mbG9vcF9pbnRlcmNoYW5nZSA9IDEzMjIsCiAgT1BU X2Zsb29wX25lc3Rfb3B0aW1pemUgPSAxMzIzLAoKICBPUFRfZmxvb3BfcGFyYWxsZWxpemVfYWxs ID0gMTMyNSwKCiAgT1BUX2Zsb29wX3Vucm9sbF9hbmRfamFtID0gMTMyNywKICBPUFRfZmxyYV9y ZW1hdCA9IDEzMjgsCiAgT1BUX2ZsdG8gPSAxMzI5LAogIE9QVF9mbHRvX2NvbXByZXNzaW9uX2xl dmVsXyA9IDEzMzAsCgogIE9QVF9mbHRvX3BhcnRpdGlvbl8gPSAxMzMyLAogIE9QVF9mbHRvX3Jl cG9ydCA9IDEzMzMsCiAgT1BUX2ZsdG9fcmVwb3J0X3dwYSA9IDEzMzQsCiAgT1BUX2ZsdG9fID0g MTMzNSwKICBPUFRfZmx0cmFucyA9IDEzMzYsCiAgT1BUX2ZsdHJhbnNfb3V0cHV0X2xpc3RfID0g MTMzNywKICBPUFRfZm1hY3JvX3ByZWZpeF9tYXBfID0gMTMzOCwKICBPUFRfZm1haW4gPSAxMzM5 LAogIE9QVF9mbWF0aF9lcnJubyA9IDEzNDAsCiAgT1BUX2ZtYXhfYXJyYXlfY29uc3RydWN0b3Jf ID0gMTM0MSwKICBPUFRfZm1heF9lcnJvcnNfID0gMTM0MiwKICBPUFRfZm1heF9pZGVudGlmaWVy X2xlbmd0aF8gPSAxMzQzLAogIE9QVF9mbWF4X2luY2x1ZGVfZGVwdGhfID0gMTM0NCwKICBPUFRf Zm1heF9zdGFja192YXJfc2l6ZV8gPSAxMzQ1LAogIE9QVF9mbWF4X3N1YnJlY29yZF9sZW5ndGhf ID0gMTM0NiwKICBPUFRfZm1lbV9yZXBvcnQgPSAxMzQ3LAogIE9QVF9mbWVtX3JlcG9ydF93cGEg PSAxMzQ4LAogIE9QVF9mbWVyZ2VfYWxsX2NvbnN0YW50cyA9IDEzNDksCiAgT1BUX2ZtZXJnZV9j b25zdGFudHMgPSAxMzUwLAogIE9QVF9mbWVyZ2VfZGVidWdfc3RyaW5ncyA9IDEzNTEsCiAgT1BU X2ZtZXNzYWdlX2xlbmd0aF8gPSAxMzUyLAogIE9QVF9mbW9kdWxlX2ZpbGVfID0gMTM1MywKICBP UFRfZm1vZHVsZV9oZWFkZXIgPSAxMzU0LAogIE9QVF9mbW9kdWxlX2hlYWRlcl8gPSAxMzU1LAog IE9QVF9mbW9kdWxlX2ltcGxpY2l0X2lubGluZSA9IDEzNTYsCiAgT1BUX2Ztb2R1bGVfbGF6eSA9 IDEzNTcsCiAgT1BUX2Ztb2R1bGVfbWFwcGVyXyA9IDEzNTgsCiAgT1BUX2Ztb2R1bGVfb25seSA9 IDEzNTksCiAgT1BUX2Ztb2R1bGVfcHJpdmF0ZSA9IDEzNjAsCiAgT1BUX2Ztb2R1bGVfdmVyc2lv bl9pZ25vcmUgPSAxMzYxLAogIE9QVF9mbW9kdWxlaW5mbyA9IDEzNjIsCiAgT1BUX2Ztb2R1bGVz X3RzID0gMTM2MywKICBPUFRfZm1vZHVsb19zY2hlZCA9IDEzNjQsCiAgT1BUX2Ztb2R1bG9fc2No ZWRfYWxsb3dfcmVnbW92ZXMgPSAxMzY1LAogIE9QVF9mbW92ZV9sb29wX2ludmFyaWFudHMgPSAx MzY2LAogIE9QVF9mbW92ZV9sb29wX3N0b3JlcyA9IDEzNjcsCiAgT1BUX2Ztc19leHRlbnNpb25z ID0gMTM2OCwKICBPUFRfZm11ZGZsYXAgPSAxMzY5LAogIE9QVF9mbXVkZmxhcGlyID0gMTM3MCwK ICBPUFRfZm11ZGZsYXB0aCA9IDEzNzEsCiAgT1BUX2ZuYW1lX21hbmdsaW5nX3ZlcnNpb25fID0g MTM3MiwKICBPUFRfZm5ld19hYmkgPSAxMzczLAogIE9QVF9mbmV3X2luaGVyaXRpbmdfY3RvcnMg PSAxMzc0LAogIE9QVF9mbmV3X3R0cF9tYXRjaGluZyA9IDEzNzUsCiAgT1BUX2ZuZXh0X3J1bnRp bWUgPSAxMzc2LAogIE9QVF9mbmlsX3JlY2VpdmVycyA9IDEzNzcsCiAgT1BUX2Zub19tb2R1bGVz ID0gMTM3OCwKICBPUFRfZm5vbl9jYWxsX2V4Y2VwdGlvbnMgPSAxMzc5LAogIE9QVF9mbm9uYW5z aV9idWlsdGlucyA9IDEzODAsCiAgT1BUX2Zub25udWxsX29iamVjdHMgPSAxMzgxLAogIE9QVF9m bm90aHJvd19vcHQgPSAxMzgyLAogIE9QVF9mb2JqY19hYmlfdmVyc2lvbl8gPSAxMzgzLAogIE9Q VF9mb2JqY19jYWxsX2N4eF9jZHRvcnMgPSAxMzg0LAogIE9QVF9mb2JqY19kaXJlY3RfZGlzcGF0 Y2ggPSAxMzg1LAogIE9QVF9mb2JqY19leGNlcHRpb25zID0gMTM4NiwKICBPUFRfZm9iamNfZ2Mg PSAxMzg3LAogIE9QVF9mb2JqY19uaWxjaGVjayA9IDEzODgsCiAgT1BUX2ZvYmpjX3NqbGpfZXhj ZXB0aW9ucyA9IDEzODksCiAgT1BUX2ZvYmpjX3N0ZF9vYmpjMSA9IDEzOTAsCiAgT1BUX2ZvZmZs b2FkX2FiaV8gPSAxMzkxLAogIE9QVF9mb2ZmbG9hZF9vcHRpb25zXyA9IDEzOTIsCiAgT1BUX2Zv ZmZsb2FkXyA9IDEzOTMsCiAgT1BUX2ZvbWl0X2ZyYW1lX3BvaW50ZXIgPSAxMzk0LAogIE9QVF9m b25seV8gPSAxMzk1LAogIE9QVF9mb3BlbmFjYyA9IDEzOTYsCiAgT1BUX2ZvcGVuYWNjX2RpbV8g PSAxMzk3LAogIE9QVF9mb3Blbm1wID0gMTM5OCwKICBPUFRfZm9wZW5tcF9zaW1kID0gMTM5OSwK ICBPUFRfZm9wZXJhdG9yX25hbWVzID0gMTQwMCwKICBPUFRfZm9wdF9pbmZvID0gMTQwMSwKICBP UFRfZm9wdF9pbmZvXyA9IDE0MDIsCgogIE9QVF9mb3B0aW1pemVfc2libGluZ19jYWxscyA9IDE0 MDQsCiAgT1BUX2ZvcHRpbWl6ZV9zdHJsZW4gPSAxNDA1LAoKICBPUFRfZnBhY2tfZGVyaXZlZCA9 IDE0MDcsCiAgT1BUX2ZwYWNrX3N0cnVjdCA9IDE0MDgsCiAgT1BUX2ZwYWNrX3N0cnVjdF8gPSAx NDA5LAogIE9QVF9mcGFkX3NvdXJjZSA9IDE0MTAsCiAgT1BUX2ZwYXJ0aWFsX2lubGluaW5nID0g MTQxMSwKICBPUFRfZnBhdGNoYWJsZV9mdW5jdGlvbl9lbnRyeV8gPSAxNDEyLAogIE9QVF9mcGNj X3N0cnVjdF9yZXR1cm4gPSAxNDEzLAogIE9QVF9mcGNoX2RlcHMgPSAxNDE0LAogIE9QVF9mcGNo X3ByZXByb2Nlc3MgPSAxNDE1LAogIE9QVF9mcGVlbF9sb29wcyA9IDE0MTYsCiAgT1BUX2ZwZWVw aG9sZSA9IDE0MTcsCiAgT1BUX2ZwZWVwaG9sZTIgPSAxNDE4LAogIE9QVF9mcGVybWlzc2l2ZSA9 IDE0MTksCiAgT1BUX2ZwZXJtaXR0ZWRfZmx0X2V2YWxfbWV0aG9kc18gPSAxNDIwLAogIE9QVF9m cGljID0gMTQyMSwKICBPUFRfZnBpZSA9IDE0MjIsCiAgT1BUX2ZwbGFuOV9leHRlbnNpb25zID0g MTQyMywKICBPUFRfZnBsdCA9IDE0MjQsCiAgT1BUX2ZwbHVnaW5fYXJnXyA9IDE0MjUsCiAgT1BU X2ZwbHVnaW5fID0gMTQyNiwKICBPUFRfZnBvc3RfaXBhX21lbV9yZXBvcnQgPSAxNDI3LAogIE9Q VF9mcG9zdGNvbmRpdGlvbnMgPSAxNDI4LAogIE9QVF9mcHJlX2luY2x1ZGVfID0gMTQyOSwKICBP UFRfZnByZV9pcGFfbWVtX3JlcG9ydCA9IDE0MzAsCiAgT1BUX2ZwcmVjb25kaXRpb25zID0gMTQz MSwKICBPUFRfZnByZWRpY3RpdmVfY29tbW9uaW5nID0gMTQzMiwKICBPUFRfZnByZWZldGNoX2xv b3BfYXJyYXlzID0gMTQzMywKICBPUFRfZnByZXByb2Nlc3NlZCA9IDE0MzQsCiAgT1BUX2ZwcmV0 dHlfdGVtcGxhdGVzID0gMTQzNSwKICBPUFRfZnByZXZpZXdfYWxsID0gMTQzNiwKICBPUFRfZnBy ZXZpZXdfYml0ZmllbGRzID0gMTQzNywKICBPUFRfZnByZXZpZXdfZGlwMTAwMCA9IDE0MzgsCiAg T1BUX2ZwcmV2aWV3X2RpcDEwMDggPSAxNDM5LAogIE9QVF9mcHJldmlld19kaXAxMDIxID0gMTQ0 MCwKICBPUFRfZnByZXZpZXdfZGlwMjUgPSAxNDQxLAogIE9QVF9mcHJldmlld19kdG9yZmllbGRz ID0gMTQ0MiwKICBPUFRfZnByZXZpZXdfZmllbGR3aXNlID0gMTQ0MywKICBPUFRfZnByZXZpZXdf Zml4YWxpYXN0aGlzID0gMTQ0NCwKICBPUFRfZnByZXZpZXdfZml4aW1tdXRhYmxlY29udiA9IDE0 NDUsCiAgT1BUX2ZwcmV2aWV3X2luID0gMTQ0NiwKICBPUFRfZnByZXZpZXdfaW5jbHVzaXZlaW5j b250cmFjdHMgPSAxNDQ3LAogIE9QVF9mcHJldmlld19ub3NoYXJlZGFjY2VzcyA9IDE0NDgsCiAg T1BUX2ZwcmV2aWV3X3J2YWx1ZXJlZnBhcmFtID0gMTQ0OSwKICBPUFRfZnByZXZpZXdfc3lzdGVt dmFyaWFibGVzID0gMTQ1MCwKICBPUFRfZnByaW50Zl9yZXR1cm5fdmFsdWUgPSAxNDUxLAogIE9Q VF9mcHJvZmlsZSA9IDE0NTIsCiAgT1BUX2Zwcm9maWxlX2Fic19wYXRoID0gMTQ1MywKICBPUFRf ZnByb2ZpbGVfYXJjcyA9IDE0NTQsCiAgT1BUX2Zwcm9maWxlX2NvcnJlY3Rpb24gPSAxNDU1LAog IE9QVF9mcHJvZmlsZV9kaXJfID0gMTQ1NiwKICBPUFRfZnByb2ZpbGVfZXhjbHVkZV9maWxlc18g PSAxNDU3LAogIE9QVF9mcHJvZmlsZV9maWx0ZXJfZmlsZXNfID0gMTQ1OCwKICBPUFRfZnByb2Zp bGVfZ2VuZXJhdGUgPSAxNDU5LAogIE9QVF9mcHJvZmlsZV9nZW5lcmF0ZV8gPSAxNDYwLAogIE9Q VF9mcHJvZmlsZV9pbmZvX3NlY3Rpb24gPSAxNDYxLAogIE9QVF9mcHJvZmlsZV9pbmZvX3NlY3Rp b25fID0gMTQ2MiwKICBPUFRfZnByb2ZpbGVfbm90ZV8gPSAxNDYzLAogIE9QVF9mcHJvZmlsZV9w YXJ0aWFsX3RyYWluaW5nID0gMTQ2NCwKICBPUFRfZnByb2ZpbGVfcHJlZml4X21hcF8gPSAxNDY1 LAogIE9QVF9mcHJvZmlsZV9wcmVmaXhfcGF0aF8gPSAxNDY2LAogIE9QVF9mcHJvZmlsZV9yZW9y ZGVyX2Z1bmN0aW9ucyA9IDE0NjcsCiAgT1BUX2Zwcm9maWxlX3JlcG9ydCA9IDE0NjgsCiAgT1BU X2Zwcm9maWxlX3JlcHJvZHVjaWJsZV8gPSAxNDY5LAogIE9QVF9mcHJvZmlsZV91cGRhdGVfID0g MTQ3MCwKICBPUFRfZnByb2ZpbGVfdXNlID0gMTQ3MSwKICBPUFRfZnByb2ZpbGVfdXNlXyA9IDE0 NzIsCiAgT1BUX2Zwcm9maWxlX3ZhbHVlcyA9IDE0NzMsCiAgT1BUX2Zwcm90ZWN0X3BhcmVucyA9 IDE0NzQsCiAgT1BUX2ZyYW5kb21fc2VlZCA9IDE0NzUsCiAgT1BUX2ZyYW5kb21fc2VlZF8gPSAx NDc2LAogIE9QVF9mcmFuZ2VfY2hlY2sgPSAxNDc3LAogIE9QVF9mcmVhbF80X3JlYWxfMTAgPSAx NDc4LAogIE9QVF9mcmVhbF80X3JlYWxfMTYgPSAxNDc5LAogIE9QVF9mcmVhbF80X3JlYWxfOCA9 IDE0ODAsCiAgT1BUX2ZyZWFsXzhfcmVhbF8xMCA9IDE0ODEsCiAgT1BUX2ZyZWFsXzhfcmVhbF8x NiA9IDE0ODIsCiAgT1BUX2ZyZWFsXzhfcmVhbF80ID0gMTQ4MywKICBPUFRfZnJlYWxsb2NfbGhz ID0gMTQ4NCwKICBPUFRfZnJlY2lwcm9jYWxfbWF0aCA9IDE0ODUsCiAgT1BUX2ZyZWNvcmRfZ2Nj X3N3aXRjaGVzID0gMTQ4NiwKICBPUFRfZnJlY29yZF9tYXJrZXJfNCA9IDE0ODcsCiAgT1BUX2Zy ZWNvcmRfbWFya2VyXzggPSAxNDg4LAogIE9QVF9mcmVjdXJzaXZlID0gMTQ4OSwKICBPUFRfZnJl ZSA9IDE0OTAsCiAgT1BUX2ZyZWdfc3RydWN0X3JldHVybiA9IDE0OTEsCgogIE9QVF9mcmVsZWFz ZSA9IDE0OTMsCiAgT1BUX2ZyZW5hbWVfcmVnaXN0ZXJzID0gMTQ5NCwKICBPUFRfZnJlb3JkZXJf YmxvY2tzID0gMTQ5NSwKICBPUFRfZnJlb3JkZXJfYmxvY2tzX2FsZ29yaXRobV8gPSAxNDk2LAog IE9QVF9mcmVvcmRlcl9ibG9ja3NfYW5kX3BhcnRpdGlvbiA9IDE0OTcsCiAgT1BUX2ZyZW9yZGVy X2Z1bmN0aW9ucyA9IDE0OTgsCiAgT1BUX2ZyZXBhY2tfYXJyYXlzID0gMTQ5OSwKICBPUFRfZnJl cGxhY2Vfb2JqY19jbGFzc2VzID0gMTUwMCwKICBPUFRfZnJlcG8gPSAxNTAxLAogIE9QVF9mcmVw b3J0X2J1ZyA9IDE1MDIsCiAgT1BUX2ZyZXF1aXJlX3JldHVybl9zdGF0ZW1lbnQgPSAxNTAzLAog IE9QVF9mcmVydW5fY3NlX2FmdGVyX2xvb3AgPSAxNTA0LAoKICBPUFRfZnJlc2NoZWR1bGVfbW9k dWxvX3NjaGVkdWxlZF9sb29wcyA9IDE1MDYsCiAgT1BUX2ZyZXNvbHV0aW9uXyA9IDE1MDcsCiAg T1BUX2ZyZXZlcnRfYWxsID0gMTUwOCwKICBPUFRfZnJldmVydF9kaXAxMDAwID0gMTUwOSwKICBP UFRfZnJldmVydF9kaXAyNSA9IDE1MTAsCiAgT1BUX2ZyZXZlcnRfZHRvcmZpZWxkcyA9IDE1MTEs CiAgT1BUX2ZyZXZlcnRfaW50cHJvbW90ZSA9IDE1MTIsCiAgT1BUX2Zyb3VuZGluZ19tYXRoID0g MTUxMywKICBPUFRfZnJ0dGkgPSAxNTE0LAogIE9QVF9mc2FuaXRpemVfYWRkcmVzc191c2VfYWZ0 ZXJfc2NvcGUgPSAxNTE1LAogIE9QVF9mc2FuaXRpemVfY292ZXJhZ2VfID0gMTUxNiwKICBPUFRf ZnNhbml0aXplX3JlY292ZXIgPSAxNTE3LAogIE9QVF9mc2FuaXRpemVfcmVjb3Zlcl8gPSAxNTE4 LAogIE9QVF9mc2FuaXRpemVfc2VjdGlvbnNfID0gMTUxOSwKICBPUFRfZnNhbml0aXplX3RyYXAg PSAxNTIwLAogIE9QVF9mc2FuaXRpemVfdHJhcF8gPSAxNTIxLAoKICBPUFRfZnNhbml0aXplXyA9 IDE1MjMsCiAgT1BUX2ZzYXZlX21peGluc18gPSAxNTI0LAogIE9QVF9mc2F2ZV9vcHRpbWl6YXRp b25fcmVjb3JkID0gMTUyNSwKICBPUFRfZnNjaGVkX2NyaXRpY2FsX3BhdGhfaGV1cmlzdGljID0g MTUyNiwKICBPUFRfZnNjaGVkX2RlcF9jb3VudF9oZXVyaXN0aWMgPSAxNTI3LAogIE9QVF9mc2No ZWRfZ3JvdXBfaGV1cmlzdGljID0gMTUyOCwKICBPUFRfZnNjaGVkX2ludGVyYmxvY2sgPSAxNTI5 LAogIE9QVF9mc2NoZWRfbGFzdF9pbnNuX2hldXJpc3RpYyA9IDE1MzAsCiAgT1BUX2ZzY2hlZF9w cmVzc3VyZSA9IDE1MzEsCiAgT1BUX2ZzY2hlZF9yYW5rX2hldXJpc3RpYyA9IDE1MzIsCiAgT1BU X2ZzY2hlZF9zcGVjID0gMTUzMywKICBPUFRfZnNjaGVkX3NwZWNfaW5zbl9oZXVyaXN0aWMgPSAx NTM0LAogIE9QVF9mc2NoZWRfc3BlY19sb2FkID0gMTUzNSwKICBPUFRfZnNjaGVkX3NwZWNfbG9h ZF9kYW5nZXJvdXMgPSAxNTM2LAogIE9QVF9mc2NoZWRfc3RhbGxlZF9pbnNucyA9IDE1MzcsCiAg T1BUX2ZzY2hlZF9zdGFsbGVkX2luc25zX2RlcCA9IDE1MzgsCiAgT1BUX2ZzY2hlZF9zdGFsbGVk X2luc25zX2RlcF8gPSAxNTM5LAogIE9QVF9mc2NoZWRfc3RhbGxlZF9pbnNuc18gPSAxNTQwLAog IE9QVF9mc2NoZWRfdmVyYm9zZV8gPSAxNTQxLAogIE9QVF9mc2NoZWQyX3VzZV9zdXBlcmJsb2Nr cyA9IDE1NDIsCgogIE9QVF9mc2NoZWR1bGVfZnVzaW9uID0gMTU0NCwKICBPUFRfZnNjaGVkdWxl X2luc25zID0gMTU0NSwKICBPUFRfZnNjaGVkdWxlX2luc25zMiA9IDE1NDYsCiAgT1BUX2ZzZWNv bmRfdW5kZXJzY29yZSA9IDE1NDcsCiAgT1BUX2ZzZWN0aW9uX2FuY2hvcnMgPSAxNTQ4LAoKICBP UFRfZnNlbF9zY2hlZF9waXBlbGluaW5nID0gMTU1MCwKICBPUFRfZnNlbF9zY2hlZF9waXBlbGlu aW5nX291dGVyX2xvb3BzID0gMTU1MSwKICBPUFRfZnNlbF9zY2hlZF9yZXNjaGVkdWxlX3BpcGVs aW5lZCA9IDE1NTIsCiAgT1BUX2ZzZWxlY3RpdmVfc2NoZWR1bGluZyA9IDE1NTMsCiAgT1BUX2Zz ZWxlY3RpdmVfc2NoZWR1bGluZzIgPSAxNTU0LAogIE9QVF9mc2VsZl90ZXN0XyA9IDE1NTUsCiAg T1BUX2ZzZW1hbnRpY19pbnRlcnBvc2l0aW9uID0gMTU1NiwKICBPUFRfZnNob3J0X2VudW1zID0g MTU1NywKICBPUFRfZnNob3J0X3djaGFyID0gMTU1OCwKICBPUFRfZnNob3dfY29sdW1uID0gMTU1 OSwKICBPUFRfZnNocmlua193cmFwID0gMTU2MCwKICBPUFRfZnNocmlua193cmFwX3NlcGFyYXRl ID0gMTU2MSwKICBPUFRfZnNpZ25femVybyA9IDE1NjIsCiAgT1BUX2ZzaWduYWxpbmdfbmFucyA9 IDE1NjMsCiAgT1BUX2ZzaWduZWRfYml0ZmllbGRzID0gMTU2NCwKICBPUFRfZnNpZ25lZF9jaGFy ID0gMTU2NSwKICBPUFRfZnNpZ25lZF96ZXJvcyA9IDE1NjYsCiAgT1BUX2ZzaW1kX2Nvc3RfbW9k ZWxfID0gMTU2NywKICBPUFRfZnNpbmdsZV9wcmVjaXNpb25fY29uc3RhbnQgPSAxNTY4LAogIE9Q VF9mc2l6ZWRfZGVhbGxvY2F0aW9uID0gMTU2OSwKICBPUFRfZnNwbGl0X2l2c19pbl91bnJvbGxl ciA9IDE1NzAsCiAgT1BUX2ZzcGxpdF9sb29wcyA9IDE1NzEsCiAgT1BUX2ZzcGxpdF9wYXRocyA9 IDE1NzIsCiAgT1BUX2ZzcGxpdF9zdGFjayA9IDE1NzMsCiAgT1BUX2ZzcGxpdF93aWRlX3R5cGVz ID0gMTU3NCwKICBPUFRfZnNwbGl0X3dpZGVfdHlwZXNfZWFybHkgPSAxNTc1LAogIE9QVF9mc3F1 YW5nbGUgPSAxNTc2LAogIE9QVF9mc3NhX2JhY2twcm9wID0gMTU3NywKICBPUFRfZnNzYV9waGlv cHQgPSAxNTc4LAogIE9QVF9mc3NvX3N0cnVjdF8gPSAxNTc5LAogIE9QVF9mc3RhY2tfYXJyYXlz ID0gMTU4MCwKCiAgT1BUX2ZzdGFja19jaGVja18gPSAxNTgyLAogIE9QVF9mc3RhY2tfY2xhc2hf cHJvdGVjdGlvbiA9IDE1ODMsCiAgT1BUX2ZzdGFja19saW1pdCA9IDE1ODQsCiAgT1BUX2ZzdGFj a19saW1pdF9yZWdpc3Rlcl8gPSAxNTg1LAogIE9QVF9mc3RhY2tfbGltaXRfc3ltYm9sXyA9IDE1 ODYsCiAgT1BUX2ZzdGFja19wcm90ZWN0b3IgPSAxNTg3LAogIE9QVF9mc3RhY2tfcHJvdGVjdG9y X2FsbCA9IDE1ODgsCiAgT1BUX2ZzdGFja19wcm90ZWN0b3JfZXhwbGljaXQgPSAxNTg5LAogIE9Q VF9mc3RhY2tfcHJvdGVjdG9yX3N0cm9uZyA9IDE1OTAsCiAgT1BUX2ZzdGFja19yZXVzZV8gPSAx NTkxLAogIE9QVF9mc3RhY2tfdXNhZ2UgPSAxNTkyLAogIE9QVF9mc3RhdHMgPSAxNTkzLAogIE9Q VF9mc3RkYXJnX29wdCA9IDE1OTQsCiAgT1BUX2ZzdG9yZV9tZXJnaW5nID0gMTU5NSwKCiAgT1BU X2ZzdHJpY3RfYWxpYXNpbmcgPSAxNTk3LAogIE9QVF9mc3RyaWN0X2VudW1zID0gMTU5OCwKCiAg T1BUX2ZzdHJpY3RfZmxleF9hcnJheXNfID0gMTYwMCwKICBPUFRfZnN0cmljdF9vdmVyZmxvdyA9 IDE2MDEsCiAgT1BUX2ZzdHJpY3RfcHJvdG90eXBlID0gMTYwMiwKICBPUFRfZnN0cmljdF92b2xh dGlsZV9iaXRmaWVsZHMgPSAxNjAzLAoKICBPUFRfZnN0cm9uZ19ldmFsX29yZGVyXyA9IDE2MDUs CiAgT1BUX2Zzd2l0Y2hfZXJyb3JzID0gMTYwNiwKICBPUFRfZnN5bmNfbGliY2FsbHMgPSAxNjA3 LAogIE9QVF9mc3ludGF4X29ubHkgPSAxNjA4LAogIE9QVF9mdGFic3RvcF8gPSAxNjA5LAoKICBP UFRfZnRhaWxfY2FsbF93b3JrYXJvdW5kXyA9IDE2MTEsCgogIE9QVF9mdGVtcGxhdGVfYmFja3Ry YWNlX2xpbWl0XyA9IDE2MTMsCgogIE9QVF9mdGVtcGxhdGVfZGVwdGhfID0gMTYxNSwKICBPUFRf ZnRlc3RfY292ZXJhZ2UgPSAxNjE2LAogIE9QVF9mdGVzdF9mb3JhbGxfdGVtcCA9IDE2MTcsCiAg T1BUX2Z0aGlzX2lzX3ZhcmlhYmxlID0gMTYxOCwKICBPUFRfZnRocmVhZF9qdW1wcyA9IDE2MTks CiAgT1BUX2Z0aHJlYWRzYWZlX3N0YXRpY3MgPSAxNjIwLAogIE9QVF9mdGltZV9yZXBvcnQgPSAx NjIxLAogIE9QVF9mdGltZV9yZXBvcnRfZGV0YWlscyA9IDE2MjIsCiAgT1BUX2Z0bHNfbW9kZWxf ID0gMTYyMywKICBPUFRfZnRvcGxldmVsX3Jlb3JkZXIgPSAxNjI0LAogIE9QVF9mdHJhY2VyID0g MTYyNSwKICBPUFRfZnRyYWNrX21hY3JvX2V4cGFuc2lvbiA9IDE2MjYsCiAgT1BUX2Z0cmFja19t YWNyb19leHBhbnNpb25fID0gMTYyNywKICBPUFRfZnRyYW1wb2xpbmVzID0gMTYyOCwKICBPUFRf ZnRyYW5zaXRpb25fYWxsID0gMTYyOSwKICBPUFRfZnRyYW5zaXRpb25fZmllbGQgPSAxNjMwLAog IE9QVF9mdHJhbnNpdGlvbl9pbiA9IDE2MzEsCiAgT1BUX2Z0cmFuc2l0aW9uX25vZ2MgPSAxNjMy LAogIE9QVF9mdHJhbnNpdGlvbl90ZW1wbGF0ZXMgPSAxNjMzLAogIE9QVF9mdHJhbnNpdGlvbl90 bHMgPSAxNjM0LAogIE9QVF9mdHJhcHBpbmdfbWF0aCA9IDE2MzUsCiAgT1BUX2Z0cmFwdiA9IDE2 MzYsCiAgT1BUX2Z0cmVlX2JpdF9jY3AgPSAxNjM3LAogIE9QVF9mdHJlZV9idWlsdGluX2NhbGxf ZGNlID0gMTYzOCwKICBPUFRfZnRyZWVfY2NwID0gMTYzOSwKICBPUFRfZnRyZWVfY2ggPSAxNjQw LAoKICBPUFRfZnRyZWVfY29hbGVzY2VfdmFycyA9IDE2NDIsCiAgT1BUX2Z0cmVlX2NvcHlfcHJv cCA9IDE2NDMsCgogIE9QVF9mdHJlZV9jc2VsaW0gPSAxNjQ1LAogIE9QVF9mdHJlZV9kY2UgPSAx NjQ2LAogIE9QVF9mdHJlZV9kb21pbmF0b3Jfb3B0cyA9IDE2NDcsCiAgT1BUX2Z0cmVlX2RzZSA9 IDE2NDgsCiAgT1BUX2Z0cmVlX2Zvcndwcm9wID0gMTY0OSwKICBPUFRfZnRyZWVfZnJlID0gMTY1 MCwKICBPUFRfZnRyZWVfbG9vcF9kaXN0cmlidXRlX3BhdHRlcm5zID0gMTY1MSwKICBPUFRfZnRy ZWVfbG9vcF9kaXN0cmlidXRpb24gPSAxNjUyLAogIE9QVF9mdHJlZV9sb29wX2lmX2NvbnZlcnQg PSAxNjUzLAoKICBPUFRfZnRyZWVfbG9vcF9pbSA9IDE2NTUsCiAgT1BUX2Z0cmVlX2xvb3BfaXZj YW5vbiA9IDE2NTYsCgogIE9QVF9mdHJlZV9sb29wX29wdGltaXplID0gMTY1OCwKICBPUFRfZnRy ZWVfbG9vcF92ZWN0b3JpemUgPSAxNjU5LAogIE9QVF9mdHJlZV9scnMgPSAxNjYwLAogIE9QVF9m dHJlZV9wYXJhbGxlbGl6ZV9sb29wc18gPSAxNjYxLAogIE9QVF9mdHJlZV9wYXJ0aWFsX3ByZSA9 IDE2NjIsCiAgT1BUX2Z0cmVlX3BoaXByb3AgPSAxNjYzLAogIE9QVF9mdHJlZV9wcmUgPSAxNjY0 LAogIE9QVF9mdHJlZV9wdGEgPSAxNjY1LAogIE9QVF9mdHJlZV9yZWFzc29jID0gMTY2NiwKCiAg T1BUX2Z0cmVlX3NjZXZfY3Byb3AgPSAxNjY4LAogIE9QVF9mdHJlZV9zaW5rID0gMTY2OSwKICBP UFRfZnRyZWVfc2xwX3ZlY3Rvcml6ZSA9IDE2NzAsCiAgT1BUX2Z0cmVlX3Nsc3IgPSAxNjcxLAog IE9QVF9mdHJlZV9zcmEgPSAxNjcyLAoKCiAgT1BUX2Z0cmVlX3N3aXRjaF9jb252ZXJzaW9uID0g MTY3NSwKICBPUFRfZnRyZWVfdGFpbF9tZXJnZSA9IDE2NzYsCiAgT1BUX2Z0cmVlX3RlciA9IDE2 NzcsCgogIE9QVF9mdHJlZV92ZWN0b3JpemUgPSAxNjc5LAoKICBPUFRfZnRyZWVfdnJwID0gMTY4 MSwKICBPUFRfZnRyaXZpYWxfYXV0b192YXJfaW5pdF8gPSAxNjgyLAogIE9QVF9mdW5jb25zdHJh aW5lZF9jb21tb25zID0gMTY4MywKICBPUFRfZnVuZGVyc2NvcmluZyA9IDE2ODQsCiAgT1BUX2Z1 bml0X2F0X2FfdGltZSA9IDE2ODUsCiAgT1BUX2Z1bml0dGVzdCA9IDE2ODYsCiAgT1BUX2Z1bnJl YWNoYWJsZV90cmFwcyA9IDE2ODcsCiAgT1BUX2Z1bnJvbGxfYWxsX2xvb3BzID0gMTY4OCwKICBP UFRfZnVucm9sbF9jb21wbGV0ZWx5X2dyb3dfc2l6ZSA9IDE2ODksCiAgT1BUX2Z1bnJvbGxfbG9v cHMgPSAxNjkwLAoKICBPUFRfZnVuc2FmZV9tYXRoX29wdGltaXphdGlvbnMgPSAxNjkyLAogIE9Q VF9mdW5zaWduZWRfYml0ZmllbGRzID0gMTY5MywKICBPUFRfZnVuc2lnbmVkX2NoYXIgPSAxNjk0 LAogIE9QVF9mdW5zd2l0Y2hfbG9vcHMgPSAxNjk1LAogIE9QVF9mdW53aW5kX3RhYmxlcyA9IDE2 OTYsCiAgT1BUX2Z1c2VfY3hhX2F0ZXhpdCA9IDE2OTcsCiAgT1BUX2Z1c2VfY3hhX2dldF9leGNl cHRpb25fcHRyID0gMTY5OCwKICBPUFRfZnVzZV9sZF9iZmQgPSAxNjk5LAogIE9QVF9mdXNlX2xk X2dvbGQgPSAxNzAwLAogIE9QVF9mdXNlX2xkX2xsZCA9IDE3MDEsCiAgT1BUX2Z1c2VfbGRfbW9s ZCA9IDE3MDIsCiAgT1BUX2Z1c2VfbGlua2VyX3BsdWdpbiA9IDE3MDMsCiAgT1BUX2Z2YXJfdHJh Y2tpbmcgPSAxNzA0LAogIE9QVF9mdmFyX3RyYWNraW5nX2Fzc2lnbm1lbnRzID0gMTcwNSwKICBP UFRfZnZhcl90cmFja2luZ19hc3NpZ25tZW50c190b2dnbGUgPSAxNzA2LAogIE9QVF9mdmFyX3Ry YWNraW5nX3VuaW5pdCA9IDE3MDcsCiAgT1BUX2Z2YXJpYWJsZV9leHBhbnNpb25faW5fdW5yb2xs ZXIgPSAxNzA4LAoKICBPUFRfZnZlY3RfY29zdF9tb2RlbF8gPSAxNzEwLAogIE9QVF9mdmVyYm9z ZV9hc20gPSAxNzExLAoKICBPUFRfZnZlcnNpb25fbG9vcHNfZm9yX3N0cmlkZXMgPSAxNzEzLAog IE9QVF9mdmVyc2lvbl8gPSAxNzE0LAogIE9QVF9mdmlzaWJpbGl0eV9pbmxpbmVzX2hpZGRlbiA9 IDE3MTUsCiAgT1BUX2Z2aXNpYmlsaXR5X21zX2NvbXBhdCA9IDE3MTYsCiAgT1BUX2Z2aXNpYmls aXR5XyA9IDE3MTcsCiAgT1BUX2Z2cHQgPSAxNzE4LAogIE9QVF9mdnRhYmxlX2djID0gMTcxOSwK ICBPUFRfZnZ0YWJsZV90aHVua3MgPSAxNzIwLAogIE9QVF9mdnRhYmxlX3ZlcmlmeV8gPSAxNzIx LAogIE9QVF9mdnR2X2NvdW50cyA9IDE3MjIsCiAgT1BUX2Z2dHZfZGVidWcgPSAxNzIzLAogIE9Q VF9md2VhayA9IDE3MjQsCiAgT1BUX2Z3ZWFrX3RlbXBsYXRlcyA9IDE3MjUsCiAgT1BUX2Z3ZWIg PSAxNzI2LAoKICBPUFRfZndob2xlX3Byb2dyYW0gPSAxNzI4LAogIE9QVF9md2lkZV9leGVjX2No YXJzZXRfID0gMTcyOSwKICBPUFRfZndvcmtpbmdfZGlyZWN0b3J5ID0gMTczMCwKICBPUFRfZndw YSA9IDE3MzEsCiAgT1BUX2Z3cGFfID0gMTczMiwKICBPUFRfZndyYXB2ID0gMTczMywKICBPUFRf ZndyYXB2X3BvaW50ZXIgPSAxNzM0LAogIE9QVF9meHJlZiA9IDE3MzUsCgogIE9QVF9memVyb19j YWxsX3VzZWRfcmVnc18gPSAxNzM3LAogIE9QVF9memVyb19pbml0aWFsaXplZF9pbl9ic3MgPSAx NzM4LAogIE9QVF9memVyb19saW5rID0gMTczOSwKICBPUFRfZyA9IDE3NDAsCiAgT1BUX2dhbnQg PSAxNzQxLAogIE9QVF9nYXNfbG9jX3N1cHBvcnQgPSAxNzQyLAogIE9QVF9nYXNfbG9jdmlld19z dXBwb3J0ID0gMTc0MywKICBPUFRfZ2J0ZiA9IDE3NDQsCiAgT1BUX2djb2ZmID0gMTc0NSwKICBP UFRfZ2NvZmYxID0gMTc0NiwKICBPUFRfZ2NvZmYyID0gMTc0NywKICBPUFRfZ2NvZmYzID0gMTc0 OCwKICBPUFRfZ2NvbHVtbl9pbmZvID0gMTc0OSwKICBPUFRfZ2N0ZiA9IDE3NTAsCiAgT1BUX2dk ZXNjcmliZV9kaWVzID0gMTc1MSwKICBPUFRfZ2R3YXJmID0gMTc1MiwKICBPUFRfZ2R3YXJmXyA9 IDE3NTMsCiAgT1BUX2dkd2FyZjMyID0gMTc1NCwKICBPUFRfZ2R3YXJmNjQgPSAxNzU1LAogIE9Q VF9nZW5fZGVjbHMgPSAxNzU2LAogIE9QVF9nZ2RiID0gMTc1NywKICBPUFRfZ2dudV9wdWJuYW1l cyA9IDE3NTgsCiAgT1BUX2dpbXBsZV9zdGF0cyA9IDE3NTksCiAgT1BUX2dpbmxpbmVfcG9pbnRz ID0gMTc2MCwKICBPUFRfZ2ludGVybmFsX3Jlc2V0X2xvY2F0aW9uX3ZpZXdzID0gMTc2MSwKICBP UFRfZ25hdCA9IDE3NjIsCiAgT1BUX2duYXRPID0gMTc2MywKICBPUFRfZ25vXyA9IDE3NjQsCiAg T1BUX2dub19wdWJuYW1lcyA9IDE3NjUsCiAgT1BUX2dwdWJuYW1lcyA9IDE3NjYsCiAgT1BUX2dy ZWNvcmRfZ2NjX3N3aXRjaGVzID0gMTc2NywKICBPUFRfZ3NwbGl0X2R3YXJmID0gMTc2OCwKICBP UFRfZ3N0YWJzID0gMTc2OSwKICBPUFRfZ3N0YWJzXyA9IDE3NzAsCiAgT1BUX2dzdGF0ZW1lbnRf ZnJvbnRpZXJzID0gMTc3MSwKICBPUFRfZ3N0cmljdF9kd2FyZiA9IDE3NzIsCiAgT1BUX2d0b2dn bGUgPSAxNzczLAogIE9QVF9ndmFyaWFibGVfbG9jYXRpb25fdmlld3MgPSAxNzc0LAogIE9QVF9n dmFyaWFibGVfbG9jYXRpb25fdmlld3NfaW5jb21wYXQ1ID0gMTc3NSwKICBPUFRfZ3ZtcyA9IDE3 NzYsCiAgT1BUX2d4Y29mZiA9IDE3NzcsCiAgT1BUX2d4Y29mZl8gPSAxNzc4LAogIE9QVF9neiA9 IDE3NzksCiAgT1BUX2d6XyA9IDE3ODAsCiAgT1BUX2ggPSAxNzgxLAogIE9QVF9oZWxwID0gMTc4 MiwKICBPUFRfaWRpcmFmdGVyID0gMTc4MywKICBPUFRfaW1hY3JvcyA9IDE3ODQsCiAgT1BUX2lt dWx0aWFyY2ggPSAxNzg1LAogIE9QVF9pbXVsdGlsaWIgPSAxNzg2LAogIE9QVF9pbmNsdWRlID0g MTc4NywKICBPUFRfaXBsdWdpbmRpcl8gPSAxNzg4LAogIE9QVF9pcHJlZml4ID0gMTc4OSwKICBP UFRfaXF1b3RlID0gMTc5MCwKICBPUFRfaXN5c3Jvb3QgPSAxNzkxLAogIE9QVF9pc3lzdGVtID0g MTc5MiwKICBPUFRfaXdpdGhwcmVmaXggPSAxNzkzLAogIE9QVF9pd2l0aHByZWZpeGJlZm9yZSA9 IDE3OTQsCiAgT1BUX2s4ID0gMTc5NSwKICBPUFRfbCA9IDE3OTYsCiAgT1BUX2xhbmdfYXNtID0g MTc5NywKICBPUFRfbGlzdCA9IDE3OTgsCiAgT1BUX21iaWdfZW5kaWFuID0gMTc5OSwKICBPUFRf bWJpb25pYyA9IDE4MDAsCiAgT1BUX21jcHVfID0gMTgwMSwKICBPUFRfbWdsaWJjID0gMTgwMiwK ICBPUFRfbWhhcmRfZmxvYXQgPSAxODAzLAogIE9QVF9tbGl0dGxlX2VuZGlhbiA9IDE4MDQsCiAg T1BUX21tZW1jcHkgPSAxODA1LAogIE9QVF9tbXVzbCA9IDE4MDYsCiAgT1BUX21ub19jbGVhcmJz cyA9IDE4MDcsCiAgT1BUX21waWNfZGF0YV9pc190ZXh0X3JlbGF0aXZlID0gMTgwOCwKICBPUFRf bXNtYWxsX2RpdmlkZXMgPSAxODA5LAogIE9QVF9tc29mdF9mbG9hdCA9IDE4MTAsCiAgT1BUX211 Y2xpYmMgPSAxODExLAogIE9QVF9teGxfYmFycmVsX3NoaWZ0ID0gMTgxMiwKICBPUFRfbXhsX2Zs b2F0X2NvbnZlcnQgPSAxODEzLAogIE9QVF9teGxfZmxvYXRfc3FydCA9IDE4MTQsCiAgT1BUX214 bF9ncF9vcHQgPSAxODE1LAogIE9QVF9teGxfbW9kZV9ib290c3RyYXAgPSAxODE2LAogIE9QVF9t eGxfbW9kZV9leGVjdXRhYmxlID0gMTgxNywKICBPUFRfbXhsX21vZGVfbm92ZWN0b3JzID0gMTgx OCwKICBPUFRfbXhsX21vZGVfeGlsa2VybmVsID0gMTgxOSwKICBPUFRfbXhsX21vZGVfeG1kc3R1 YiA9IDE4MjAsCiAgT1BUX214bF9tdWx0aXBseV9oaWdoID0gMTgyMSwKICBPUFRfbXhsX3BhdHRl cm5fY29tcGFyZSA9IDE4MjIsCiAgT1BUX214bF9wcmVmZXRjaCA9IDE4MjMsCiAgT1BUX214bF9y ZW9yZGVyID0gMTgyNCwKICBPUFRfbXhsX3NvZnRfZGl2ID0gMTgyNSwKICBPUFRfbXhsX3NvZnRf bXVsID0gMTgyNiwKICBPUFRfbXhsX3N0YWNrX2NoZWNrID0gMTgyNywKICBPUFRfbiA9IDE4Mjgs CiAgT1BUX25hbWVfc29ydCA9IDE4MjksCiAgT1BUX25vX2Nhbm9uaWNhbF9wcmVmaXhlcyA9IDE4 MzAsCiAgT1BUX25vX2ludGVncmF0ZWRfY3BwID0gMTgzMSwKICBPUFRfbm9fcGllID0gMTgzMiwK ICBPUFRfbm9jcHAgPSAxODMzLAogIE9QVF9ub2RlZmF1bHRsaWJzID0gMTgzNCwKICBPUFRfbm9s aWJjID0gMTgzNSwKICBPUFRfbm9waG9ib3NsaWIgPSAxODM2LAogIE9QVF9ub3N0YXJ0ZmlsZXMg PSAxODM3LAogIE9QVF9ub3N0ZGluYyA9IDE4MzgsCiAgT1BUX25vc3RkaW5jX18gPSAxODM5LAog IE9QVF9ub3N0ZGxpYiA9IDE4NDAsCiAgT1BUX25vc3RkbGliX18gPSAxODQxLAogIE9QVF9vID0g MTg0MiwKICBPUFRfb2JqZWN0cyA9IDE4NDMsCiAgT1BUX3AgPSAxODQ0LAogIE9QVF9wYXNzX2V4 aXRfY29kZXMgPSAxODQ1LAoKICBPUFRfcGVkYW50aWNfZXJyb3JzID0gMTg0NywKICBPUFRfcGcg PSAxODQ4LAogIE9QVF9waWUgPSAxODQ5LAogIE9QVF9waXBlID0gMTg1MCwKICBPUFRfcG9zaXgg PSAxODUxLAogIE9QVF9wcmludF9maWxlX25hbWVfID0gMTg1MiwKICBPUFRfcHJpbnRfbGliZ2Nj X2ZpbGVfbmFtZSA9IDE4NTMsCiAgT1BUX3ByaW50X211bHRpX2RpcmVjdG9yeSA9IDE4NTQsCiAg T1BUX3ByaW50X211bHRpX2xpYiA9IDE4NTUsCiAgT1BUX3ByaW50X211bHRpX29zX2RpcmVjdG9y eSA9IDE4NTYsCiAgT1BUX3ByaW50X211bHRpYXJjaCA9IDE4NTcsCiAgT1BUX3ByaW50X29iamNf cnVudGltZV9pbmZvID0gMTg1OCwKICBPUFRfcHJpbnRfcHJvZ19uYW1lXyA9IDE4NTksCiAgT1BU X3ByaW50X3NlYXJjaF9kaXJzID0gMTg2MCwKICBPUFRfcHJpbnRfc3lzcm9vdCA9IDE4NjEsCiAg T1BUX3ByaW50X3N5c3Jvb3RfaGVhZGVyc19zdWZmaXggPSAxODYyLAogIE9QVF9wcmludF92YWx1 ZSA9IDE4NjMsCiAgT1BUX3Byb2ZpbGUgPSAxODY0LAogIE9QVF9wdGhyZWFkID0gMTg2NSwKICBP UFRfcXVpZXQgPSAxODY2LAogIE9QVF9yID0gMTg2NywKICBPUFRfcmR5bmFtaWMgPSAxODY4LAog IE9QVF9yZW1hcCA9IDE4NjksCiAgT1BUX3JldmVyc2Vfc29ydCA9IDE4NzAsCiAgT1BUX3MgPSAx ODcxLAogIE9QVF9zYXZlX3RlbXBzID0gMTg3MiwKICBPUFRfc2F2ZV90ZW1wc18gPSAxODczLAog IE9QVF9zaGFyZWQgPSAxODc0LAogIE9QVF9zaGFyZWRfbGliZ2NjID0gMTg3NSwKICBPUFRfc2hh cmVkX2xpYnBob2JvcyA9IDE4NzYsCiAgT1BUX3NpemVfc29ydCA9IDE4NzcsCgogIE9QVF9zcGVj c18gPSAxODc5LAogIE9QVF9zdGF0aWMgPSAxODgwLAogIE9QVF9zdGF0aWNfbGliYXNhbiA9IDE4 ODEsCiAgT1BUX3N0YXRpY19saWJnY2MgPSAxODgyLAogIE9QVF9zdGF0aWNfbGliZ2ZvcnRyYW4g PSAxODgzLAogIE9QVF9zdGF0aWNfbGliZ28gPSAxODg0LAogIE9QVF9zdGF0aWNfbGliaHdhc2Fu ID0gMTg4NSwKICBPUFRfc3RhdGljX2xpYmxzYW4gPSAxODg2LAogIE9QVF9zdGF0aWNfbGlibXB4 ID0gMTg4NywKICBPUFRfc3RhdGljX2xpYm1weHdyYXBwZXJzID0gMTg4OCwKICBPUFRfc3RhdGlj X2xpYnBob2JvcyA9IDE4ODksCiAgT1BUX3N0YXRpY19saWJxdWFkbWF0aCA9IDE4OTAsCiAgT1BU X3N0YXRpY19saWJzdGRjX18gPSAxODkxLAogIE9QVF9zdGF0aWNfbGlidHNhbiA9IDE4OTIsCiAg T1BUX3N0YXRpY19saWJ1YnNhbiA9IDE4OTMsCiAgT1BUX3N0YXRpY19waWUgPSAxODk0LAoKCiAg T1BUX3N0ZF9jX18xMSA9IDE4OTcsCiAgT1BUX3N0ZF9jX18xNCA9IDE4OTgsCiAgT1BUX3N0ZF9j X18xNyA9IDE4OTksCgoKICBPUFRfc3RkX2NfXzIwID0gMTkwMiwKICBPUFRfc3RkX2NfXzIzID0g MTkwMywKCgogIE9QVF9zdGRfY19fOTggPSAxOTA2LAogIE9QVF9zdGRfYzExID0gMTkwNywKICBP UFRfc3RkX2MxNyA9IDE5MDgsCgoKICBPUFRfc3RkX2MyeCA9IDE5MTEsCgogIE9QVF9zdGRfYzkw ID0gMTkxMywKICBPUFRfc3RkX2M5OSA9IDE5MTQsCgogIE9QVF9zdGRfZjIwMDMgPSAxOTE2LAog IE9QVF9zdGRfZjIwMDggPSAxOTE3LAogIE9QVF9zdGRfZjIwMDh0cyA9IDE5MTgsCiAgT1BUX3N0 ZF9mMjAxOCA9IDE5MTksCiAgT1BUX3N0ZF9mOTUgPSAxOTIwLAogIE9QVF9zdGRfZ251ID0gMTky MSwKCgogIE9QVF9zdGRfZ251X18xMSA9IDE5MjQsCiAgT1BUX3N0ZF9nbnVfXzE0ID0gMTkyNSwK ICBPUFRfc3RkX2dudV9fMTcgPSAxOTI2LAoKCiAgT1BUX3N0ZF9nbnVfXzIwID0gMTkyOSwKICBP UFRfc3RkX2dudV9fMjMgPSAxOTMwLAoKCiAgT1BUX3N0ZF9nbnVfXzk4ID0gMTkzMywKICBPUFRf c3RkX2dudTExID0gMTkzNCwKICBPUFRfc3RkX2dudTE3ID0gMTkzNSwKCgogIE9QVF9zdGRfZ251 MnggPSAxOTM4LAoKICBPUFRfc3RkX2dudTkwID0gMTk0MCwKICBPUFRfc3RkX2dudTk5ID0gMTk0 MSwKCgogIE9QVF9zdGRfaXNvOTg5OV8xOTk0MDkgPSAxOTQ0LAoKCgoKCiAgT1BUX3N0ZF9sZWdh Y3kgPSAxOTUwLAogIE9QVF9zdGRsaWJfID0gMTk1MSwKICBPUFRfc3ltYm9sXyA9IDE5NTIsCiAg T1BUX3N5bWJvbGljID0gMTk1MywKICBPUFRfdCA9IDE5NTQsCiAgT1BUX3RpbWUgPSAxOTU1LAog IE9QVF90aW1lXyA9IDE5NTYsCiAgT1BUX3RyYWRpdGlvbmFsID0gMTk1NywKICBPUFRfdHJhZGl0 aW9uYWxfY3BwID0gMTk1OCwKICBPUFRfdHJlZV9zdGF0cyA9IDE5NTksCiAgT1BUX3RyaWdyYXBo cyA9IDE5NjAsCiAgT1BUX3R5cGVfc3RhdHMgPSAxOTYxLAogIE9QVF91ID0gMTk2MiwKICBPUFRf dW5kZWYgPSAxOTYzLAogIE9QVF92ID0gMTk2NCwKICBPUFRfdmVyc2lvbiA9IDE5NjUsCiAgT1BU X3cgPSAxOTY2LAogIE9QVF93cmFwcGVyID0gMTk2NywKICBPUFRfeCA9IDE5NjgsCiAgT1BUX3og PSAxOTY5LAogIE5fT1BUUywKICBPUFRfU1BFQ0lBTF91bmtub3duLAogIE9QVF9TUEVDSUFMX2ln bm9yZSwKICBPUFRfU1BFQ0lBTF93YXJuX3JlbW92ZWQsCiAgT1BUX1NQRUNJQUxfcHJvZ3JhbV9u YW1lLAogIE9QVF9TUEVDSUFMX2lucHV0X2ZpbGUKfTsKIyAyNiAiLi4vLi4vLi9nY2MvdG0uaCIg MgojIDEgIi4uLy4uLy4vZ2NjL2luc24tY29uc3RhbnRzLmgiIDEKIyAyNSAiLi4vLi4vLi9nY2Mv aW5zbi1jb25zdGFudHMuaCIKZW51bSB1bnNwZWMgewogIFVOU1BFQ19JUFJFRkVUQ0ggPSAwCn07 CgpleHRlcm4gY29uc3QgY2hhciAqY29uc3QgdW5zcGVjX3N0cmluZ3NbXTsKIyAyNyAiLi4vLi4v Li9nY2MvdG0uaCIgMgojIDEgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2NvbmZpZy9t aWNyb2JsYXplL21pY3JvYmxhemUuaCIgMQojIDI3ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4u L2djYy9jb25maWcvbWljcm9ibGF6ZS9taWNyb2JsYXplLmgiCmVudW0gcGlwZWxpbmVfdHlwZQp7 CiAgTUlDUk9CTEFaRV9QSVBFXzMgPSAwLAogIE1JQ1JPQkxBWkVfUElQRV81ID0gMQp9OwoKCgoK ZXh0ZXJuIGNoYXIgbWljcm9ibGF6ZV9wcmludF9vcGVyYW5kX3B1bmN0W107CgoKZXh0ZXJuIGlu dCBtaWNyb2JsYXplX3NlY3Rpb25fdGhyZXNob2xkOwoKCmV4dGVybiBpbnQgbWljcm9ibGF6ZV9k ZWJ1Z2dlcl9yZWdub1tdOwoKZXh0ZXJuIGludCBtaWNyb2JsYXplX25vX3Vuc2FmZV9kZWxheTsK ZXh0ZXJuIGludCBtaWNyb2JsYXplX2hhc19jbHo7CmV4dGVybiBlbnVtIHBpcGVsaW5lX3R5cGUg bWljcm9ibGF6ZV9waXBlOwojIDMyNSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvY29u ZmlnL21pY3JvYmxhemUvbWljcm9ibGF6ZS5oIgplbnVtIHJlZ19jbGFzcwp7CiAgTk9fUkVHUywK ICBHUl9SRUdTLAogIFNUX1JFR1MsCiAgQUxMX1JFR1MsCiAgTElNX1JFR19DTEFTU0VTCn07CiMg MzU0ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9jb25maWcvbWljcm9ibGF6ZS9taWNy b2JsYXplLmgiCmV4dGVybiBlbnVtIHJlZ19jbGFzcyBtaWNyb2JsYXplX3JlZ25vX3RvX2NsYXNz W107CiMgNDE1ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9jb25maWcvbWljcm9ibGF6 ZS9taWNyb2JsYXplLmgiCmV4dGVybiBzdHJ1Y3QgbWljcm9ibGF6ZV9mcmFtZV9pbmZvIGN1cnJl bnRfZnJhbWVfaW5mbzsKIyA0NjcgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2NvbmZp Zy9taWNyb2JsYXplL21pY3JvYmxhemUuaCIKdHlwZWRlZiBzdHJ1Y3QgbWljcm9ibGF6ZV9hcmdz CnsKICBpbnQgZ3BfcmVnX2ZvdW5kOwogIGludCBhcmdfbnVtYmVyOwogIGludCBhcmdfd29yZHM7 CiAgaW50IGZwX2FyZ193b3JkczsKICBpbnQgbGFzdF9hcmdfZnA7CiAgaW50IGZwX2NvZGU7CiAg aW50IG51bV9hZGp1c3RzOwoKCgogIHN0cnVjdCBfZG9udF91c2VfcnR4X2hlcmVfICogYWRqdXN0 WygxMCAtIDUgKyAxKSAqIDJdOwp9IENVTVVMQVRJVkVfQVJHUzsKIyA3NDAgIi4uLy4uLy4uLy4u L2djYy9saWJnY2MvLi4vZ2NjL2NvbmZpZy9taWNyb2JsYXplL21pY3JvYmxhemUuaCIKZXh0ZXJu IGludCBpbnRlcnJ1cHRfaGFuZGxlcjsKZXh0ZXJuIGludCBmYXN0X2ludGVycnVwdDsKZXh0ZXJu IGludCBzYXZlX3ZvbGF0aWxlczsKIyAyOCAiLi4vLi4vLi9nY2MvdG0uaCIgMgojIDEgIi4uLy4u Ly4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2NvbmZpZy9nbnUtdXNlci5oIiAxCiMgMjkgIi4uLy4u Ly4vZ2NjL3RtLmgiIDIKIyAxICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9jb25maWcv bGludXguaCIgMQojIDMwICIuLi8uLi8uL2djYy90bS5oIiAyCiMgMSAiLi4vLi4vLi4vLi4vZ2Nj L2xpYmdjYy8uLi9nY2MvY29uZmlnL21pY3JvYmxhemUvbGludXguaCIgMQojIDMxICIuLi8uLi8u L2djYy90bS5oIiAyCiMgMSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvY29uZmlnL2ds aWJjLXN0ZGludC5oIiAxCiMgMzIgIi4uLy4uLy4vZ2NjL3RtLmgiIDIKIyAxICIuLi8uLi8uLi8u Li9nY2MvbGliZ2NjLy4uL2djYy9jb25maWcvaW5pdGZpbmktYXJyYXkuaCIgMQojIDMzICIuLi8u Li8uL2djYy90bS5oIiAyCgoKCgoKIyAxICIuLi8uLi8uL2djYy9pbnNuLW1vZGVzLmgiIDEKCgoK CgoKZW51bSBtYWNoaW5lX21vZGUKewogIEVfVk9JRG1vZGUsCgoKCgoKCiAgRV9CTEttb2RlLAoK CgoKCgogIEVfQ0Ntb2RlLAoKCgoKCgogIEVfQkltb2RlLAoKCgoKCgogIEVfUUltb2RlLAoKCgoK CgogIEVfSEltb2RlLAoKCgoKCgogIEVfU0ltb2RlLAoKCgoKCgogIEVfREltb2RlLAoKCgoKCgog IEVfVEltb2RlLAoKCgoKCgogIEVfUVFtb2RlLAoKCgoKCgogIEVfSFFtb2RlLAoKCgoKCgogIEVf U1Ftb2RlLAoKCgoKCgogIEVfRFFtb2RlLAoKCgoKCgogIEVfVFFtb2RlLAoKCgoKCgogIEVfVVFR bW9kZSwKCgoKCgoKICBFX1VIUW1vZGUsCgoKCgoKCiAgRV9VU1Ftb2RlLAoKCgoKCgogIEVfVURR bW9kZSwKCgoKCgoKICBFX1VUUW1vZGUsCgoKCgoKCiAgRV9IQW1vZGUsCgoKCgoKCiAgRV9TQW1v ZGUsCgoKCgoKCiAgRV9EQW1vZGUsCgoKCgoKCiAgRV9UQW1vZGUsCgoKCgoKCiAgRV9VSEFtb2Rl LAoKCgoKCgogIEVfVVNBbW9kZSwKCgoKCgoKICBFX1VEQW1vZGUsCgoKCgoKCiAgRV9VVEFtb2Rl LAoKCgoKCgogIEVfU0Ztb2RlLAoKCgoKCgogIEVfREZtb2RlLAoKCgoKCgogIEVfU0Rtb2RlLAoK CgoKCgogIEVfRERtb2RlLAoKCgoKCgogIEVfVERtb2RlLAoKCgoKCgogIEVfQ1FJbW9kZSwKCgoK CgoKICBFX0NISW1vZGUsCgoKCgoKCiAgRV9DU0ltb2RlLAoKCgoKCgogIEVfQ0RJbW9kZSwKCgoK CgoKICBFX0NUSW1vZGUsCgoKCgoKCiAgRV9TQ21vZGUsCgoKCgoKCiAgRV9EQ21vZGUsCgoKCgoK CiAgTUFYX01BQ0hJTkVfTU9ERSwKCiAgTUlOX01PREVfUkFORE9NID0gRV9WT0lEbW9kZSwKICBN QVhfTU9ERV9SQU5ET00gPSBFX0JMS21vZGUsCgogIE1JTl9NT0RFX0NDID0gRV9DQ21vZGUsCiAg TUFYX01PREVfQ0MgPSBFX0NDbW9kZSwKCiAgTUlOX01PREVfQk9PTCA9IEVfQkltb2RlLAogIE1B WF9NT0RFX0JPT0wgPSBFX0JJbW9kZSwKCiAgTUlOX01PREVfSU5UID0gRV9RSW1vZGUsCiAgTUFY X01PREVfSU5UID0gRV9USW1vZGUsCgogIE1JTl9NT0RFX1BBUlRJQUxfSU5UID0gRV9WT0lEbW9k ZSwKICBNQVhfTU9ERV9QQVJUSUFMX0lOVCA9IEVfVk9JRG1vZGUsCgogIE1JTl9NT0RFX0ZSQUNU ID0gRV9RUW1vZGUsCiAgTUFYX01PREVfRlJBQ1QgPSBFX1RRbW9kZSwKCiAgTUlOX01PREVfVUZS QUNUID0gRV9VUVFtb2RlLAogIE1BWF9NT0RFX1VGUkFDVCA9IEVfVVRRbW9kZSwKCiAgTUlOX01P REVfQUNDVU0gPSBFX0hBbW9kZSwKICBNQVhfTU9ERV9BQ0NVTSA9IEVfVEFtb2RlLAoKICBNSU5f TU9ERV9VQUNDVU0gPSBFX1VIQW1vZGUsCiAgTUFYX01PREVfVUFDQ1VNID0gRV9VVEFtb2RlLAoK ICBNSU5fTU9ERV9GTE9BVCA9IEVfU0Ztb2RlLAogIE1BWF9NT0RFX0ZMT0FUID0gRV9ERm1vZGUs CgogIE1JTl9NT0RFX0RFQ0lNQUxfRkxPQVQgPSBFX1NEbW9kZSwKICBNQVhfTU9ERV9ERUNJTUFM X0ZMT0FUID0gRV9URG1vZGUsCgogIE1JTl9NT0RFX0NPTVBMRVhfSU5UID0gRV9DUUltb2RlLAog IE1BWF9NT0RFX0NPTVBMRVhfSU5UID0gRV9DVEltb2RlLAoKICBNSU5fTU9ERV9DT01QTEVYX0ZM T0FUID0gRV9TQ21vZGUsCiAgTUFYX01PREVfQ09NUExFWF9GTE9BVCA9IEVfRENtb2RlLAoKICBN SU5fTU9ERV9WRUNUT1JfQk9PTCA9IEVfVk9JRG1vZGUsCiAgTUFYX01PREVfVkVDVE9SX0JPT0wg PSBFX1ZPSURtb2RlLAoKICBNSU5fTU9ERV9WRUNUT1JfSU5UID0gRV9WT0lEbW9kZSwKICBNQVhf TU9ERV9WRUNUT1JfSU5UID0gRV9WT0lEbW9kZSwKCiAgTUlOX01PREVfVkVDVE9SX0ZSQUNUID0g RV9WT0lEbW9kZSwKICBNQVhfTU9ERV9WRUNUT1JfRlJBQ1QgPSBFX1ZPSURtb2RlLAoKICBNSU5f TU9ERV9WRUNUT1JfVUZSQUNUID0gRV9WT0lEbW9kZSwKICBNQVhfTU9ERV9WRUNUT1JfVUZSQUNU ID0gRV9WT0lEbW9kZSwKCiAgTUlOX01PREVfVkVDVE9SX0FDQ1VNID0gRV9WT0lEbW9kZSwKICBN QVhfTU9ERV9WRUNUT1JfQUNDVU0gPSBFX1ZPSURtb2RlLAoKICBNSU5fTU9ERV9WRUNUT1JfVUFD Q1VNID0gRV9WT0lEbW9kZSwKICBNQVhfTU9ERV9WRUNUT1JfVUFDQ1VNID0gRV9WT0lEbW9kZSwK CiAgTUlOX01PREVfVkVDVE9SX0ZMT0FUID0gRV9WT0lEbW9kZSwKICBNQVhfTU9ERV9WRUNUT1Jf RkxPQVQgPSBFX1ZPSURtb2RlLAoKICBNSU5fTU9ERV9PUEFRVUUgPSBFX1ZPSURtb2RlLAogIE1B WF9NT0RFX09QQVFVRSA9IEVfVk9JRG1vZGUsCgogIE5VTV9NQUNISU5FX01PREVTID0gTUFYX01B Q0hJTkVfTU9ERQp9OwojIDM5ICIuLi8uLi8uL2djYy90bS5oIiAyCgojIDEgIi4uLy4uLy4uLy4u L2djYy9saWJnY2MvLi4vZ2NjL2RlZmF1bHRzLmgiIDEKIyA0MSAiLi4vLi4vLi9nY2MvdG0uaCIg MgojIDQ1ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YuaCIgMgojIDEgIi4vbGliZ2Nj X3RtLmgiIDEKIyA0NiAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LmgiIDIKIyAxICIu Li8uLi8uLi8uLi9nY2MvbGliZ2NjL2djb3YuaCIgMQojIDI4ICIuLi8uLi8uLi8uLi9nY2MvbGli Z2NjL2djb3YuaCIKc3RydWN0IGdjb3ZfaW5mbzsKCgoKZXh0ZXJuIHZvaWQgX19nY292X3Jlc2V0 ICh2b2lkKTsKCgoKZXh0ZXJuIHZvaWQgX19nY292X2R1bXAgKHZvaWQpOwojIDQ5ICIuLi8uLi8u Li8uLi9nY2MvbGliZ2NjL2djb3YuaCIKZXh0ZXJuIHZvaWQKX19nY292X2luZm9fdG9fZ2NkYSAo Y29uc3Qgc3RydWN0IGdjb3ZfaW5mbyAqX19pbmZvLAogICAgICAgdm9pZCAoKl9fZmlsZW5hbWVf Zm4pIChjb25zdCBjaGFyICosIHZvaWQgKiksCiAgICAgICB2b2lkICgqX19kdW1wX2ZuKSAoY29u c3Qgdm9pZCAqLCB1bnNpZ25lZCwgdm9pZCAqKSwKICAgICAgIHZvaWQgKigqX19hbGxvY2F0ZV9m bikgKHVuc2lnbmVkLCB2b2lkICopLAogICAgICAgdm9pZCAqX19hcmcpOwojIDY1ICIuLi8uLi8u Li8uLi9nY2MvbGliZ2NjL2djb3YuaCIKZXh0ZXJuIHZvaWQKX19nY292X2ZpbGVuYW1lX3RvX2dj Zm4gKGNvbnN0IGNoYXIgKl9fZmlsZW5hbWUsCiAgICB2b2lkICgqX19kdW1wX2ZuKSAoY29uc3Qg dm9pZCAqLCB1bnNpZ25lZCwgdm9pZCAqKSwKICAgIHZvaWQgKl9fYXJnKTsKIyA0NyAiLi4vLi4v Li4vLi4vZ2NjL2xpYmdjYy9saWJnY292LmgiIDIKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3Rl bnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNy b2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9tbWFu LmgiIDEgMyA0CiMgMjUgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVp bGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDMgNAojIDEgIi9ob21lL2pj bXZia2JjL3dzL3RlbnNpbGljYS9nY2MvYnVpbGRzL18vZ2NjL2luY2x1ZGUvc3RkZGVmLmgiIDEg MyA0CiMgMjYgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWlj cm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDIgMyA0CiMgNDEgIi9ob21lL2pjbXZi a2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3Qv aG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L3N5cy9tbWFuLmgiIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJv b3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRy b290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvbW1hbi5oIiAxIDMgNAojIDI5 ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9iaXRzL21tYW4uaCIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVu c2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3Jv YmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9tbWFu LW1hcC1mbGFncy1nZW5lcmljLmgiIDEgMyA0CiMgMzAgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvbW1hbi5o IiAyIDMgNAoKCiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWls ZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGlu dXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9tbWFuLWxpbnV4LmgiIDEgMyA0CiMgMTEz ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9iaXRzL21tYW4tbGludXguaCIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMv d3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0 L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0 cy9tbWFuLXNoYXJlZC5oIiAxIDMgNAojIDQ3ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2Ev YnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVs LWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL21tYW4tc2hhcmVk LmgiIDMgNAoKCgoKCiMgNTEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3Qv YnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvbW1hbi1zaGFyZWQuaCIgMyA0Cmlu dCBtZW1mZF9jcmVhdGUgKGNvbnN0IGNoYXIgKl9fbmFtZSwgdW5zaWduZWQgaW50IF9fZmxhZ3Mp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmludCBtbG9jazIg KGNvbnN0IHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuZ3RoLCB1bnNpZ25lZCBpbnQgX19mbGFn cykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgppbnQgcGtl eV9hbGxvYyAodW5zaWduZWQgaW50IF9fZmxhZ3MsIHVuc2lnbmVkIGludCBfX2FjY2Vzc19yaWdo dHMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmludCBwa2V5 X3NldCAoaW50IF9fa2V5LCB1bnNpZ25lZCBpbnQgX19hY2Nlc3NfcmlnaHRzKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgppbnQgcGtleV9nZXQgKGludCBfX2tl eSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKaW50IHBrZXlf ZnJlZSAoaW50IF9fa2V5KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp OwoKCgppbnQgcGtleV9tcHJvdGVjdCAodm9pZCAqX19hZGRyLCBzaXplX3QgX19sZW4sIGludCBf X3Byb3QsIGludCBfX3BrZXkpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7CgoKIyAxMTQgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQt bWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvbW1hbi1saW51eC5oIiAyIDMgNAojIDMzICIv aG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAy MS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS9iaXRzL21tYW4uaCIgMiAzIDQKIyA0MiAiL2hvbWUvamNtdmJrYmMvd3MvdGVu c2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3Jv YmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL21tYW4u aCIgMiAzIDQKCgoKCgojIDYxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290 L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9v dC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAzIDQKZXh0ZXJuIHZv aWQgKiBtbWFwICh2b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fcHJvdCwgaW50IF9f ZmxhZ3MsIGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQpIF9fYXNtX18gKCIiICJtbWFwNjQi KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpCgoKICAgICAgICAgICAg ICAgIDsKCgoKCgpleHRlcm4gdm9pZCAqbW1hcDY0ICh2b2lkICpfX2FkZHIsIHNpemVfdCBfX2xl biwgaW50IF9fcHJvdCwKICAgICAgIGludCBfX2ZsYWdzLCBpbnQgX19mZCwgX19vZmY2NF90IF9f b2Zmc2V0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0 ZXJuIGludCBtdW5tYXAgKHZvaWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIGludCBtcHJvdGVjdCAodm9p ZCAqX19hZGRyLCBzaXplX3QgX19sZW4sIGludCBfX3Byb3QpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCgpleHRlcm4gaW50IG1zeW5jICh2b2lkICpfX2Fk ZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fZmxhZ3MpOwoKCgoKZXh0ZXJuIGludCBtYWR2aXNlICh2 b2lkICpfX2FkZHIsIHNpemVfdCBfX2xlbiwgaW50IF9fYWR2aWNlKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gaW50IHBvc2l4X21hZHZpc2UgKHZv aWQgKl9fYWRkciwgc2l6ZV90IF9fbGVuLCBpbnQgX19hZHZpY2UpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gaW50IG1sb2NrIChjb25zdCB2b2lk ICpfX2FkZHIsIHNpemVfdCBfX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKCgpleHRlcm4gaW50IG11bmxvY2sgKGNvbnN0IHZvaWQgKl9fYWRkciwgc2l6ZV90 IF9fbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0 ZXJuIGludCBtbG9ja2FsbCAoaW50IF9fZmxhZ3MpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBpbnQgbXVubG9ja2FsbCAodm9pZCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgoKCmV4dGVybiBpbnQgbWluY29y ZSAodm9pZCAqX19zdGFydCwgc2l6ZV90IF9fbGVuLCB1bnNpZ25lZCBjaGFyICpfX3ZlYykKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDEzMyAiL2hvbWUv amNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEt dGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvc3lzL21tYW4uaCIgMyA0CmV4dGVybiB2b2lkICptcmVtYXAgKHZvaWQgKl9fYWRkciwg c2l6ZV90IF9fb2xkX2xlbiwgc2l6ZV90IF9fbmV3X2xlbiwKICAgICAgIGludCBfX2ZsYWdzLCAu Li4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBp bnQgcmVtYXBfZmlsZV9wYWdlcyAodm9pZCAqX19zdGFydCwgc2l6ZV90IF9fc2l6ZSwgaW50IF9f cHJvdCwKICAgICAgICBzaXplX3QgX19wZ29mZiwgaW50IF9fZmxhZ3MpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gaW50IHNobV9vcGVuIChjb25z dCBjaGFyICpfX25hbWUsIGludCBfX29mbGFnLCBtb2RlX3QgX19tb2RlKTsKCgpleHRlcm4gaW50 IHNobV91bmxpbmsgKGNvbnN0IGNoYXIgKl9fbmFtZSk7CgoKIyA1MCAiLi4vLi4vLi4vLi4vZ2Nj L2xpYmdjYy9saWJnY292LmgiIDIKCgoKCiMgNTMgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGli Z2Nvdi5oIgp0eXBlZGVmIHVuc2lnbmVkIGdjb3ZfdW5zaWduZWRfdCBfX2F0dHJpYnV0ZV9fICgo bW9kZSAoU0kpKSk7CnR5cGVkZWYgdW5zaWduZWQgZ2Nvdl9wb3NpdGlvbl90IF9fYXR0cmlidXRl X18gKChtb2RlIChTSSkpKTsKCnR5cGVkZWYgc2lnbmVkIGdjb3ZfdHlwZSBfX2F0dHJpYnV0ZV9f ICgobW9kZSAoREkpKSk7CnR5cGVkZWYgdW5zaWduZWQgZ2Nvdl90eXBlX3Vuc2lnbmVkIF9fYXR0 cmlidXRlX18gKChtb2RlIChESSkpKTsKIyAxNzYgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGli Z2Nvdi5oIgogICAgICAgCiAgICAgICAKIyAxOTUgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGli Z2Nvdi5oIgojIDEgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2djb3YtaW8uaCIgMQoj IDE4MCAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5oIgpzdHJ1Y3QgZ2Nv dl9rdnA7CgpzdHJ1Y3QgZ2Nvdl9rdnAKewogIGdjb3ZfdHlwZSB2YWx1ZTsKICBnY292X3R5cGUg Y291bnQ7CiAgc3RydWN0IGdjb3Zfa3ZwICpuZXh0Owp9OwojIDI0MCAiLi4vLi4vLi4vLi4vZ2Nj L2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5oIgojIDEgIi4uLy4uLy4vZ2NjL3ZlcnNpb24uaCIgMQoj IDI0MSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5oIiAyCiMgMjc5ICIu Li8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9nY292LWlvLmgiCmVudW0gewojIDEgIi4uLy4u Ly4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2djb3YtY291bnRlci5kZWYiIDEKIyAzMCAiLi4vLi4v Li4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1jb3VudGVyLmRlZiIKR0NPVl9DT1VOVEVSX0FS Q1MsCgoKR0NPVl9DT1VOVEVSX1ZfSU5URVJWQUwsCgoKR0NPVl9DT1VOVEVSX1ZfUE9XMiwKCgpH Q09WX0NPVU5URVJfVl9UT1BOLAoKCkdDT1ZfQ09VTlRFUl9WX0lORElSLAoKCkdDT1ZfQ09VTlRF Ul9BVkVSQUdFLAoKCkdDT1ZfQ09VTlRFUl9JT1IsCgoKR0NPVl9USU1FX1BST0ZJTEVSLAojIDI4 MSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5oIiAyCkdDT1ZfQ09VTlRF UlMKfTsKIyAzNDAgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2djb3YtaW8uaCIKc3Ry dWN0IGdjb3Zfc3VtbWFyeQp7CiAgZ2Nvdl91bnNpZ25lZF90IHJ1bnM7CiAgZ2Nvdl90eXBlIHN1 bV9tYXg7Cn07CiMgMzYzICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9nY292LWlvLmgi CiBpbnQgX19nY292X29wZW4gKGNvbnN0IGNoYXIgKiwgaW50KSBfX2F0dHJpYnV0ZV9fICgoX192 aXNpYmlsaXR5X18gKCJoaWRkZW4iKSkpOwogaW50IF9fZ2Nvdl9jbG9zZSAodm9pZCkgX19hdHRy aWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiaGlkZGVuIikpKTsKIGdjb3ZfdW5zaWduZWRfdCBf X2djb3ZfcmVhZF91bnNpZ25lZCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9f ICgiaGlkZGVuIikpKTsKIGdjb3ZfdHlwZSBfX2djb3ZfcmVhZF9jb3VudGVyICh2b2lkKSBfX2F0 dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJoaWRkZW4iKSkpOwogdm9pZCBfX2djb3ZfcmVh ZF9zdW1tYXJ5IChzdHJ1Y3QgZ2Nvdl9zdW1tYXJ5ICopIF9fYXR0cmlidXRlX18gKChfX3Zpc2li aWxpdHlfXyAoImhpZGRlbiIpKSk7CiBjb25zdCBjaGFyICpnY292X3JlYWRfc3RyaW5nICh2b2lk KTsKIHZvaWQgZ2Nvdl9zeW5jIChnY292X3Bvc2l0aW9uX3QgLAogICAgICAgIGdjb3ZfdW5zaWdu ZWRfdCApOwpjaGFyICptYW5nbGVfcGF0aCAoY2hhciBjb25zdCAqYmFzZSk7CgoKCiB2b2lkIGdj b3Zfd3JpdGUgKGNvbnN0IHZvaWQgKiwgdW5zaWduZWQpIF9fYXR0cmlidXRlX18gKChfX3Zpc2li aWxpdHlfXyAoImhpZGRlbiIpKSk7CiB2b2lkIF9fZ2Nvdl93cml0ZV91bnNpZ25lZCAoZ2Nvdl91 bnNpZ25lZF90KSBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJoaWRkZW4iKSkpOwoj IDE5NiAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LmgiIDIKCgoKCgpzdHJ1Y3QgZ2Nv dl9jdHJfaW5mbwp7CiAgZ2Nvdl91bnNpZ25lZF90IG51bTsKICBnY292X3R5cGUgKnZhbHVlczsK fTsKCgoKCgoKCnN0cnVjdCBnY292X2ZuX2luZm8KewogIGNvbnN0IHN0cnVjdCBnY292X2luZm8g KmtleTsKICBnY292X3Vuc2lnbmVkX3QgaWRlbnQ7CiAgZ2Nvdl91bnNpZ25lZF90IGxpbmVub19j aGVja3N1bTsKICBnY292X3Vuc2lnbmVkX3QgY2ZnX2NoZWNrc3VtOwogIHN0cnVjdCBnY292X2N0 cl9pbmZvIGN0cnNbMV07Cn07CgoKdHlwZWRlZiB2b2lkICgqZ2Nvdl9tZXJnZV9mbikgKGdjb3Zf dHlwZSAqLCBnY292X3Vuc2lnbmVkX3QpOwoKCnN0cnVjdCBnY292X2luZm8KewogIGdjb3ZfdW5z aWduZWRfdCB2ZXJzaW9uOwogIHN0cnVjdCBnY292X2luZm8gKm5leHQ7CgogIGdjb3ZfdW5zaWdu ZWRfdCBzdGFtcDsKICBnY292X3Vuc2lnbmVkX3QgY2hlY2tzdW07CiAgY29uc3QgY2hhciAqZmls ZW5hbWU7CgogIGdjb3ZfbWVyZ2VfZm4gbWVyZ2VbR0NPVl9DT1VOVEVSU107CgoKICBnY292X3Vu c2lnbmVkX3Qgbl9mdW5jdGlvbnM7CgoKICBjb25zdCBzdHJ1Y3QgZ2Nvdl9mbl9pbmZvICpjb25z dCAqZnVuY3Rpb25zOwoKCgoKCn07CgoKc3RydWN0IGdjb3Zfcm9vdAp7CiAgc3RydWN0IGdjb3Zf aW5mbyAqbGlzdDsKICB1bnNpZ25lZCBkdW1wZWQgOiAxOwogIHVuc2lnbmVkIHJ1bl9jb3VudGVk IDogMTsKICBzdHJ1Y3QgZ2Nvdl9yb290ICpuZXh0OwogIHN0cnVjdCBnY292X3Jvb3QgKnByZXY7 Cn07CgpleHRlcm4gc3RydWN0IGdjb3Zfcm9vdCBfX2djb3Zfcm9vdCBfX2F0dHJpYnV0ZV9fICgo X192aXNpYmlsaXR5X18gKCJoaWRkZW4iKSkpOwoKc3RydWN0IGdjb3ZfbWFzdGVyCnsKICBnY292 X3Vuc2lnbmVkX3QgdmVyc2lvbjsKICBzdHJ1Y3QgZ2Nvdl9yb290ICpyb290Owp9OwoKc3RydWN0 IGluZGlyZWN0X2NhbGxfdHVwbGUKewoKICB2b2lkICpjYWxsZWU7CgoKICBnY292X3R5cGUgKmNv dW50ZXJzOwp9OwoKCmV4dGVybiBzdHJ1Y3QgZ2Nvdl9tYXN0ZXIgX19nY292X21hc3RlcjsKZXh0 ZXJuIHN0cnVjdCBnY292X2t2cCAqX19nY292X2t2cF9keW5hbWljX3Bvb2w7CmV4dGVybiB1bnNp Z25lZCBfX2djb3Zfa3ZwX2R5bmFtaWNfcG9vbF9pbmRleDsKZXh0ZXJuIHVuc2lnbmVkIF9fZ2Nv dl9rdnBfZHluYW1pY19wb29sX3NpemU7CgoKZXh0ZXJuIHZvaWQgX19nY292X2R1bXBfb25lIChz dHJ1Y3QgZ2Nvdl9yb290ICopIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImhpZGRl biIpKSk7CgoKZXh0ZXJuIHZvaWQgX19nY292X2luaXQgKHN0cnVjdCBnY292X2luZm8gKikgX19h dHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiaGlkZGVuIikpKTsKCgpleHRlcm4gdm9pZCBf X2djb3ZfZXhpdCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiaGlkZGVu IikpKTsKCgoKZXh0ZXJuIHZvaWQgX19nY292X3Jlc2V0X2ludCAodm9pZCkgX19hdHRyaWJ1dGVf XyAoKF9fdmlzaWJpbGl0eV9fICgiaGlkZGVuIikpKTsKCgpleHRlcm4gdm9pZCBfX2djb3ZfZHVt cF9pbnQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImhpZGRlbiIpKSk7 CgoKZXh0ZXJuIHZvaWQgX19nY292X2xvY2sgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX3Zpc2li aWxpdHlfXyAoImhpZGRlbiIpKSk7CgoKZXh0ZXJuIHZvaWQgX19nY292X3VubG9jayAodm9pZCkg X19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiaGlkZGVuIikpKTsKCgpleHRlcm4gdm9p ZCBfX2djb3ZfbWVyZ2VfYWRkIChnY292X3R5cGUgKiwgdW5zaWduZWQpIF9fYXR0cmlidXRlX18g KChfX3Zpc2liaWxpdHlfXyAoImhpZGRlbiIpKSk7CgoKZXh0ZXJuIHZvaWQgX19nY292X21lcmdl X3RpbWVfcHJvZmlsZSAoZ2Nvdl90eXBlICosIHVuc2lnbmVkKSBfX2F0dHJpYnV0ZV9fICgoX192 aXNpYmlsaXR5X18gKCJoaWRkZW4iKSkpOwoKCmV4dGVybiB2b2lkIF9fZ2Nvdl9tZXJnZV90b3Bu IChnY292X3R5cGUgKiwgdW5zaWduZWQpIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAo ImhpZGRlbiIpKSk7CgoKZXh0ZXJuIHZvaWQgX19nY292X21lcmdlX2lvciAoZ2Nvdl90eXBlICos IHVuc2lnbmVkKSBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJoaWRkZW4iKSkpOwoK CmV4dGVybiB2b2lkIF9fZ2Nvdl9pbnRlcnZhbF9wcm9maWxlciAoZ2Nvdl90eXBlICosIGdjb3Zf dHlwZSwgaW50LCB1bnNpZ25lZCk7CmV4dGVybiB2b2lkIF9fZ2Nvdl9pbnRlcnZhbF9wcm9maWxl cl9hdG9taWMgKGdjb3ZfdHlwZSAqLCBnY292X3R5cGUsIGludCwKICAgICAgICAgIHVuc2lnbmVk KTsKZXh0ZXJuIHZvaWQgX19nY292X3BvdzJfcHJvZmlsZXIgKGdjb3ZfdHlwZSAqLCBnY292X3R5 cGUpOwpleHRlcm4gdm9pZCBfX2djb3ZfcG93Ml9wcm9maWxlcl9hdG9taWMgKGdjb3ZfdHlwZSAq LCBnY292X3R5cGUpOwpleHRlcm4gdm9pZCBfX2djb3ZfdG9wbl92YWx1ZXNfcHJvZmlsZXIgKGdj b3ZfdHlwZSAqLCBnY292X3R5cGUpOwpleHRlcm4gdm9pZCBfX2djb3ZfdG9wbl92YWx1ZXNfcHJv ZmlsZXJfYXRvbWljIChnY292X3R5cGUgKiwgZ2Nvdl90eXBlKTsKZXh0ZXJuIHZvaWQgX19nY292 X2luZGlyZWN0X2NhbGxfcHJvZmlsZXJfdjQgKGdjb3ZfdHlwZSwgdm9pZCAqKTsKZXh0ZXJuIHZv aWQgX19nY292X2luZGlyZWN0X2NhbGxfcHJvZmlsZXJfdjRfYXRvbWljIChnY292X3R5cGUsIHZv aWQgKik7CmV4dGVybiB2b2lkIF9fZ2Nvdl90aW1lX3Byb2ZpbGVyIChnY292X3R5cGUgKik7CmV4 dGVybiB2b2lkIF9fZ2Nvdl90aW1lX3Byb2ZpbGVyX2F0b21pYyAoZ2Nvdl90eXBlICopOwpleHRl cm4gdm9pZCBfX2djb3ZfYXZlcmFnZV9wcm9maWxlciAoZ2Nvdl90eXBlICosIGdjb3ZfdHlwZSk7 CmV4dGVybiB2b2lkIF9fZ2Nvdl9hdmVyYWdlX3Byb2ZpbGVyX2F0b21pYyAoZ2Nvdl90eXBlICos IGdjb3ZfdHlwZSk7CmV4dGVybiB2b2lkIF9fZ2Nvdl9pb3JfcHJvZmlsZXIgKGdjb3ZfdHlwZSAq LCBnY292X3R5cGUpOwpleHRlcm4gdm9pZCBfX2djb3ZfaW9yX3Byb2ZpbGVyX2F0b21pYyAoZ2Nv dl90eXBlICosIGdjb3ZfdHlwZSk7CgoKCmV4dGVybiBwaWRfdCBfX2djb3ZfZm9yayAodm9pZCkg X19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiaGlkZGVuIikpKTsKZXh0ZXJuIGludCBf X2djb3ZfZXhlY2wgKGNvbnN0IGNoYXIgKiwgY2hhciAqLCAuLi4pIF9fYXR0cmlidXRlX18gKChf X3Zpc2liaWxpdHlfXyAoImhpZGRlbiIpKSk7CmV4dGVybiBpbnQgX19nY292X2V4ZWNscCAoY29u c3QgY2hhciAqLCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgi aGlkZGVuIikpKTsKZXh0ZXJuIGludCBfX2djb3ZfZXhlY2xlIChjb25zdCBjaGFyICosIGNoYXIg KiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJoaWRkZW4iKSkpOwpleHRl cm4gaW50IF9fZ2Nvdl9leGVjdiAoY29uc3QgY2hhciAqLCBjaGFyICpjb25zdCBbXSkgX19hdHRy aWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiaGlkZGVuIikpKTsKZXh0ZXJuIGludCBfX2djb3Zf ZXhlY3ZwIChjb25zdCBjaGFyICosIGNoYXIgKmNvbnN0IFtdKSBfX2F0dHJpYnV0ZV9fICgoX192 aXNpYmlsaXR5X18gKCJoaWRkZW4iKSkpOwpleHRlcm4gaW50IF9fZ2Nvdl9leGVjdmUgKGNvbnN0 IGNoYXIgKiwgY2hhciAqY29uc3QgW10sIGNoYXIgKmNvbnN0IFtdKQogIF9fYXR0cmlidXRlX18g KChfX3Zpc2liaWxpdHlfXyAoImhpZGRlbiIpKSk7CgoKIHZvaWQgX19nY292X3dyaXRlX29iamVj dF9zdW1tYXJ5IChjb25zdCBzdHJ1Y3QgZ2Nvdl9zdW1tYXJ5ICopCiAgICBfX2F0dHJpYnV0ZV9f ICgoX192aXNpYmlsaXR5X18gKCJoaWRkZW4iKSkpOwogdm9pZCBfX2djb3ZfcmV3cml0ZSAodm9p ZCkgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiaGlkZGVuIikpKTsKCgoKCgoKc3Rh dGljIGlubGluZSBnY292X3R5cGUKZ2Nvdl9nZXRfY291bnRlciAodm9pZCkKewoKCgoKICByZXR1 cm4gX19nY292X3JlYWRfY291bnRlciAoKTsKCgoKCgoKfQoKCgoKc3RhdGljIGlubGluZSBnY292 X3R5cGUKZ2Nvdl9nZXRfY291bnRlcl9pZ25vcmVfc2NhbGluZyAoZ2Nvdl90eXBlIGlnbm9yZV9z Y2FsaW5nIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkpCnsKCgoKCiAgcmV0dXJuIF9fZ2Nv dl9yZWFkX2NvdW50ZXIgKCk7CiMgMzkxICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3Yu aCIKfQoKCgoKc3RhdGljIGlubGluZSBnY292X3R5cGUKZ2Nvdl9nZXRfY291bnRlcl90YXJnZXQg KHZvaWQpCnsKCgoKCiAgcmV0dXJuIF9fZ2Nvdl9yZWFkX2NvdW50ZXIgKCk7CgoKCgoKCn0KCgoK CnN0YXRpYyBpbmxpbmUgdm9pZApnY292X2NvdW50ZXJfYWRkIChnY292X3R5cGUgKmNvdW50ZXIs IGdjb3ZfdHlwZSB2YWx1ZSwKICAgIGludCB1c2VfYXRvbWljIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSkpCnsKCgoKCgogICAgKmNvdW50ZXIgKz0gdmFsdWU7Cn0KCgoKCgpzdGF0aWMgaW5s aW5lIHZvaWQgKgptYWxsb2NfbW1hcCAoc2l6ZV90IGxlbmd0aCkKewogIHJldHVybiBtbWFwICgK IyA0MzQgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi5oIiAzIDQKICAgICAgICAgICAg ICAoKHZvaWQgKikwKQojIDQzNCAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LmgiCiAg ICAgICAgICAgICAgICAgICwgbGVuZ3RoLCAKIyA0MzQgIi4uLy4uLy4uLy4uL2djYy9saWJnY2Mv bGliZ2Nvdi5oIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSAKIyA0MzQgIi4u Ly4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi5oIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgCiMgNDM0ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YuaCIg MyA0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIKIyA0MzQgIi4u Ly4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi5oIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICwKICAgICAgICAKIyA0MzUgIi4uLy4uLy4uLy4uL2dj Yy9saWJnY2MvbGliZ2Nvdi5oIiAzIDQKICAgICAgIDB4MDIgCiMgNDM1ICIuLi8uLi8uLi8uLi9n Y2MvbGliZ2NjL2xpYmdjb3YuaCIKICAgICAgICAgICAgICAgICAgIHwgCiMgNDM1ICIuLi8uLi8u Li8uLi9nY2MvbGliZ2NjL2xpYmdjb3YuaCIgMyA0CiAgICAgICAgICAgICAgICAgICAgIDB4MjAK IyA0MzUgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi5oIgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLCAtMSwgMCk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBzdHJ1Y3Qg Z2Nvdl9rdnAgKgphbGxvY2F0ZV9nY292X2t2cCAodm9pZCkKewoKICBzdHJ1Y3QgZ2Nvdl9rdnAg Km5ld19ub2RlID0gCiMgNDQ3ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YuaCIgMyA0 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh2b2lkICopMCkKIyA0NDcgIi4uLy4uLy4u Ly4uL2djYy9saWJnY2MvbGliZ2Nvdi5oIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7CiAgdW5zaWduZWQga3ZwX3NpemVvZiA9IHNpemVvZihzdHJ1Y3QgZ2Nvdl9rdnApOwoKCgog IGlmIChfX2djb3Zfa3ZwX2R5bmFtaWNfcG9vbCA9PSAKIyA0NTIgIi4uLy4uLy4uLy4uL2djYy9s aWJnY2MvbGliZ2Nvdi5oIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZv aWQgKikwKQogICAgICAKIyA0NTMgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi5oIgog ICAgIHx8IF9fZ2Nvdl9rdnBfZHluYW1pY19wb29sX2luZGV4ID49IF9fZ2Nvdl9rdnBfZHluYW1p Y19wb29sX3NpemUpCiAgICB7CiAgICAgIHZvaWQgKnB0ciA9IG1hbGxvY19tbWFwICgoMTI4ICog MTAyNCkpOwogICAgICBpZiAocHRyICE9IAojIDQ1NiAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9s aWJnY292LmgiIDMgNAogICAgICAgICAgICAgICAgKCh2b2lkICopIC0xKQojIDQ1NiAiLi4vLi4v Li4vLi4vZ2NjL2xpYmdjYy9saWJnY292LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgKQog ewogICBfX2djb3Zfa3ZwX2R5bmFtaWNfcG9vbCA9IHB0cjsKICAgX19nY292X2t2cF9keW5hbWlj X3Bvb2xfc2l6ZSA9ICgxMjggKiAxMDI0KSAvIGt2cF9zaXplb2Y7CiAgIF9fZ2Nvdl9rdnBfZHlu YW1pY19wb29sX2luZGV4ID0gMDsKIH0KICAgIH0KCiAgaWYgKF9fZ2Nvdl9rdnBfZHluYW1pY19w b29sICE9IAojIDQ2NCAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LmgiIDMgNAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApCiMgNDY0ICIuLi8uLi8uLi8u Li9nY2MvbGliZ2NjL2xpYmdjb3YuaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKQogICAgewogICAgICB1bnNpZ25lZCBpbmRleDsKCgoKCgogICAgICBpbmRleCA9IF9fZ2Nv dl9rdnBfZHluYW1pY19wb29sX2luZGV4Kys7CgogICAgICBpZiAoaW5kZXggPCBfX2djb3Zfa3Zw X2R5bmFtaWNfcG9vbF9zaXplKQogbmV3X25vZGUgPSBfX2djb3Zfa3ZwX2R5bmFtaWNfcG9vbCAr IGluZGV4OwogICAgfQoKCgogIGlmIChuZXdfbm9kZSA9PSAKIyA0ODAgIi4uLy4uLy4uLy4uL2dj Yy9saWJnY2MvbGliZ2Nvdi5oIiAzIDQKICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQojIDQ4 MCAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LmgiCiAgICAgICAgICAgICAgICAgICAg ICkKICAgIG5ld19ub2RlID0gKHN0cnVjdCBnY292X2t2cCAqKWNhbGxvYyAoMSwga3ZwX3NpemVv Zik7CgogIHJldHVybiBuZXdfbm9kZTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIHVuc2lnbmVkCmdj b3ZfdG9wbl9hZGRfdmFsdWUgKGdjb3ZfdHlwZSAqY291bnRlcnMsIGdjb3ZfdHlwZSB2YWx1ZSwg Z2Nvdl90eXBlIGNvdW50LAogICAgICAgaW50IHVzZV9hdG9taWMsIGludCBpbmNyZW1lbnRfdG90 YWwpCnsKICBpZiAoaW5jcmVtZW50X3RvdGFsKQogICAgewoKCiAgICAgIGlmIChjb3VudGVyc1sw XSA8IDApCiByZXR1cm4gMDsKICAgICAgZ2Nvdl9jb3VudGVyX2FkZCAoJmNvdW50ZXJzWzBdLCAx LCB1c2VfYXRvbWljKTsKICAgIH0KCiAgc3RydWN0IGdjb3Zfa3ZwICpwcmV2X25vZGUgPSAKIyA1 MDQgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi5oIiAzIDQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKCh2b2lkICopMCkKIyA1MDQgIi4uLy4uLy4uLy4uL2djYy9saWJnY2Mv bGliZ2Nvdi5oIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogIHN0cnVjdCBn Y292X2t2cCAqbWluaW1hbF9ub2RlID0gCiMgNTA1ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xp Ymdjb3YuaCIgMyA0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCAqKTAp CiMgNTA1ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YuaCIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDsKICBzdHJ1Y3QgZ2Nvdl9rdnAgKmN1cnJlbnRfbm9kZSA9 IChzdHJ1Y3QgZ2Nvdl9rdnAgKikoaW50cHRyX3QpY291bnRlcnNbMl07CgogIHdoaWxlIChjdXJy ZW50X25vZGUpCiAgICB7CiAgICAgIGlmIChjdXJyZW50X25vZGUtPnZhbHVlID09IHZhbHVlKQog ewogICBnY292X2NvdW50ZXJfYWRkICgmY3VycmVudF9ub2RlLT5jb3VudCwgY291bnQsIHVzZV9h dG9taWMpOwogICByZXR1cm4gMDsKIH0KCiAgICAgIGlmIChtaW5pbWFsX25vZGUgPT0gCiMgNTE2 ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YuaCIgMyA0CiAgICAgICAgICAgICAgICAg ICAgICAgICAoKHZvaWQgKikwKQogICAKIyA1MTcgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGli Z2Nvdi5oIgogIHx8IGN1cnJlbnRfbm9kZS0+Y291bnQgPCBtaW5pbWFsX25vZGUtPmNvdW50KQog bWluaW1hbF9ub2RlID0gY3VycmVudF9ub2RlOwoKICAgICAgcHJldl9ub2RlID0gY3VycmVudF9u b2RlOwogICAgICBjdXJyZW50X25vZGUgPSBjdXJyZW50X25vZGUtPm5leHQ7CiAgICB9CgogIGlm IChjb3VudGVyc1sxXSA9PSAzMikKICAgIHsKICAgICAgaWYgKC0tbWluaW1hbF9ub2RlLT5jb3Vu dCA8IGNvdW50KQogewogICBtaW5pbWFsX25vZGUtPnZhbHVlID0gdmFsdWU7CiAgIG1pbmltYWxf bm9kZS0+Y291bnQgPSBjb3VudDsKIH0KCiAgICAgIHJldHVybiAxOwogICAgfQogIGVsc2UKICAg IHsKICAgICAgc3RydWN0IGdjb3Zfa3ZwICpuZXdfbm9kZSA9IGFsbG9jYXRlX2djb3Zfa3ZwICgp OwogICAgICBpZiAobmV3X25vZGUgPT0gCiMgNTM3ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xp Ymdjb3YuaCIgMyA0CiAgICAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApCiMgNTM3ICIuLi8u Li8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YuaCIKICAgICAgICAgICAgICAgICAgICAgICAgICkK IHJldHVybiAwOwoKICAgICAgbmV3X25vZGUtPnZhbHVlID0gdmFsdWU7CiAgICAgIG5ld19ub2Rl LT5jb3VudCA9IGNvdW50OwoKICAgICAgaW50IHN1Y2Nlc3MgPSAwOwogICAgICBpZiAoIWNvdW50 ZXJzWzJdKQogewojIDU1NCAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LmgiCiAgICAg ewogICAgICAgY291bnRlcnNbMl0gPSAoaW50cHRyX3QpbmV3X25vZGU7CiAgICAgICBzdWNjZXNz ID0gMTsKICAgICB9CiB9CiAgICAgIGVsc2UgaWYgKHByZXZfbm9kZSAmJiAhcHJldl9ub2RlLT5u ZXh0KQogewoKCgoKCgogICAgIHsKICAgICAgIHByZXZfbm9kZS0+bmV4dCA9IG5ld19ub2RlOwog ICAgICAgc3VjY2VzcyA9IDE7CiAgICAgfQogfQoKCiAgICAgIGlmIChzdWNjZXNzKQogZ2Nvdl9j b3VudGVyX2FkZCAoJmNvdW50ZXJzWzFdLCAxLCB1c2VfYXRvbWljKTsKICAgIH0KCiAgcmV0dXJu IDA7Cn0KIyAyNyAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRyaXZlci5jIiAyCgoK CgpzdGF0aWMgaW5saW5lIGludAphcmVfYWxsX2NvdW50ZXJzX3plcm8gKGNvbnN0IHN0cnVjdCBn Y292X2N0cl9pbmZvICpjaV9wdHIpCnsKICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2lfcHRy LT5udW07IGkrKykKICAgIGlmIChjaV9wdHItPnZhbHVlc1tpXSAhPSAwKQogICAgICByZXR1cm4g MDsKCiAgcmV0dXJuIDE7Cn0KIyA1MSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRy aXZlci5jIgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQt bWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDEgMyA0CiMgMjggIi9ob21lL2pjbXZi a2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3Qv aG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2ZjbnRsLmgiIDMgNAoKCgoKCgoKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVp bGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1 aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2ZjbnRsLmgiIDEgMyA0 CiMgNjUgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9i bGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMyA0CgojIDY1ICIvaG9tZS9qY212Ymti Yy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hv c3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9i aXRzL2ZjbnRsLmgiIDMgNApzdHJ1Y3QgZmxvY2sKICB7CiAgICBzaG9ydCBpbnQgbF90eXBlOwog ICAgc2hvcnQgaW50IGxfd2hlbmNlOwogICAgX19vZmZfdCBsX3N0YXJ0OwogICAgX19vZmZfdCBs X2xlbjsKICAgIF9fcGlkX3QgbF9waWQ7CiAgfTsKCgpzdHJ1Y3QgZmxvY2s2NAogIHsKICAgIHNo b3J0IGludCBsX3R5cGU7CiAgICBzaG9ydCBpbnQgbF93aGVuY2U7CiAgICBfX29mZjY0X3QgbF9z dGFydDsKICAgIF9fb2ZmNjRfdCBsX2xlbjsKICAgIF9fcGlkX3QgbF9waWQ7CiAgfTsKCgoKIyAx ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9iaXRzL2ZjbnRsLWxpbnV4LmgiIDEgMyA0CiMgMzggIi9ob21lL2pjbXZi a2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3Qv aG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2JpdHMvZmNudGwtbGludXguaCIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNh L2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVl bC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9zdHJ1 Y3RfaW92ZWMuaCIgMSAzIDQKIyAyMyAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxk cm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWls ZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9zdHJ1Y3RfaW92 ZWMuaCIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2djYy9idWlsZHMvXy9n Y2MvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAyNCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2ls aWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxh emVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9z dHJ1Y3RfaW92ZWMuaCIgMiAzIDQKCgpzdHJ1Y3QgaW92ZWMKICB7CiAgICB2b2lkICppb3ZfYmFz ZTsKICAgIHNpemVfdCBpb3ZfbGVuOwogIH07CiMgMzkgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZmNudGwt bGludXguaCIgMiAzIDQKIyAyNjUgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJv b3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRy b290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZmNudGwtbGludXguaCIgMyA0 CmVudW0gX19waWRfdHlwZQogIHsKICAgIEZfT1dORVJfVElEID0gMCwKICAgIEZfT1dORVJfUElE LAogICAgRl9PV05FUl9QR1JQLAogICAgRl9PV05FUl9HSUQgPSBGX09XTkVSX1BHUlAKICB9OwoK CnN0cnVjdCBmX293bmVyX2V4CiAgewogICAgZW51bSBfX3BpZF90eXBlIHR5cGU7CiAgICBfX3Bp ZF90IHBpZDsKICB9OwojIDM1NCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9v dC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJv b3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9mY250bC1saW51eC5oIiAzIDQK IyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxh emUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS9saW51eC9mYWxsb2MuaCIgMSAzIDQKIyAzNTUgIi9ob21lL2pjbXZi a2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3Qv aG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2JpdHMvZmNudGwtbGludXguaCIgMiAzIDQKCgoKc3RydWN0IGZpbGVfaGFuZGxlCnsKICB1bnNp Z25lZCBpbnQgaGFuZGxlX2J5dGVzOwogIGludCBoYW5kbGVfdHlwZTsKCiAgdW5zaWduZWQgY2hh ciBmX2hhbmRsZVswXTsKfTsKCgoKCgoKCgoKCmV4dGVybiBfX3NzaXplX3QgcmVhZGFoZWFkIChp bnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBzaXplX3QgX19jb3VudCkKICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCmV4dGVybiBpbnQgc3luY19m aWxlX3JhbmdlIChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBfX29mZjY0X3QgX19jb3Vu dCwKICAgICAgIHVuc2lnbmVkIGludCBfX2ZsYWdzKTsKCgoKCgoKZXh0ZXJuIF9fc3NpemVfdCB2 bXNwbGljZSAoaW50IF9fZmRvdXQsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqX19pb3YsCiAgICAgIHNp emVfdCBfX2NvdW50LCB1bnNpZ25lZCBpbnQgX19mbGFncyk7CgoKCgoKZXh0ZXJuIF9fc3NpemVf dCBzcGxpY2UgKGludCBfX2ZkaW4sIF9fb2ZmNjRfdCAqX19vZmZpbiwgaW50IF9fZmRvdXQsCiAg ICBfX29mZjY0X3QgKl9fb2Zmb3V0LCBzaXplX3QgX19sZW4sCiAgICB1bnNpZ25lZCBpbnQgX19m bGFncyk7CgoKCgoKZXh0ZXJuIF9fc3NpemVfdCB0ZWUgKGludCBfX2ZkaW4sIGludCBfX2Zkb3V0 LCBzaXplX3QgX19sZW4sCiAgICAgICAgdW5zaWduZWQgaW50IF9fZmxhZ3MpOwojIDQxNyAiL2hv bWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEu MTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvYml0cy9mY250bC1saW51eC5oIiAzIDQKZXh0ZXJuIGludCBmYWxsb2NhdGUgKGlu dCBfX2ZkLCBpbnQgX19tb2RlLCBfX29mZjY0X3QgX19vZmZzZXQsIF9fb2ZmNjRfdCBfX2xlbikg X19hc21fXyAoIiIgImZhbGxvY2F0ZTY0IikKCiAgICAgICAgICAgICAgICAgICAgIDsKCgoKCgpl eHRlcm4gaW50IGZhbGxvY2F0ZTY0IChpbnQgX19mZCwgaW50IF9fbW9kZSwgX19vZmY2NF90IF9f b2Zmc2V0LAogICBfX29mZjY0X3QgX19sZW4pOwoKCgoKZXh0ZXJuIGludCBuYW1lX3RvX2hhbmRs ZV9hdCAoaW50IF9fZGZkLCBjb25zdCBjaGFyICpfX25hbWUsCiAgICAgICAgIHN0cnVjdCBmaWxl X2hhbmRsZSAqX19oYW5kbGUsIGludCAqX19tbnRfaWQsCiAgICAgICAgIGludCBfX2ZsYWdzKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCmV4dGVybiBpbnQg b3Blbl9ieV9oYW5kbGVfYXQgKGludCBfX21vdW50ZGlyZmQsIHN0cnVjdCBmaWxlX2hhbmRsZSAq X19oYW5kbGUsCiAgICAgICAgIGludCBfX2ZsYWdzKTsKCgoKCiMgODcgIi9ob21lL2pjbXZia2Jj L3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9z dC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Jp dHMvZmNudGwuaCIgMiAzIDQKIyAzNiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxk cm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWls ZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmNudGwuaCIgMiAzIDQKIyA3OCAi L2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIw MjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNh L2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVl bC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdGF0LmgiIDEg MyA0CiMgMjUgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWlj cm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RhdC5oIiAzIDQKIyAxICIvaG9tZS9qY212Ymti Yy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hv c3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9i aXRzL3N0cnVjdF9zdGF0LmgiIDEgMyA0CiMgNzUgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGlj YS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXpl ZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RydWN0X3N0 YXQuaCIgMyA0CnN0cnVjdCBzdGF0CnsKCgoKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3Rf ZGV2OwogICAgICAgIF9faW5vNjRfdCBzdF9pbm87CiAgICAgICAgX19tb2RlX3Qgc3RfbW9kZTsK ICAgICAgICBfX25saW5rX3Qgc3Rfbmxpbms7CiAgICAgICAgX191aWRfdCBzdF91aWQ7CiAgICAg ICAgX19naWRfdCBzdF9naWQ7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0X3JkZXY7CiAg ICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fcGFkMjsKICAgICAgICBfX29mZjY0X3Qgc3Rfc2l6 ZTsKICAgICAgICBfX2Jsa3NpemVfdCBzdF9ibGtzaXplOwogICAgICAgIGludCBfX3BhZDM7CiAg ICAgICAgX19ibGtjbnQ2NF90IHN0X2Jsb2NrczsKCgoKCgoKCiAgICAgICAgc3RydWN0IHRpbWVz cGVjIHN0X2F0aW07CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHN0X210aW07CiAgICAgICAgc3Ry dWN0IHRpbWVzcGVjIHN0X2N0aW07CiMgMTEzICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2Ev YnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVs LWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0cnVjdF9zdGF0 LmgiIDMgNAogICAgICAgIHVuc2lnbmVkIGludCBfX2dsaWJjX3Jlc2VydmVkNDsKICAgICAgICB1 bnNpZ25lZCBpbnQgX19nbGliY19yZXNlcnZlZDU7Cgp9OwoKCgpzdHJ1Y3Qgc3RhdDY0CnsKCgoK ICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3RfZGV2OwogICAgICAgIF9faW5vNjRfdCBzdF9p bm87CiAgICAgICAgX19tb2RlX3Qgc3RfbW9kZTsKICAgICAgICBfX25saW5rX3Qgc3Rfbmxpbms7 CiAgICAgICAgX191aWRfdCBzdF91aWQ7CiAgICAgICAgX19naWRfdCBzdF9naWQ7CiAgICAgICAg dW5zaWduZWQgbG9uZyBsb25nIHN0X3JkZXY7CiAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9f cGFkMjsKICAgICAgICBfX29mZjY0X3Qgc3Rfc2l6ZTsKICAgICAgICBfX2Jsa3NpemVfdCBzdF9i bGtzaXplOwogICAgICAgIGludCBfX3BhZDM7CiAgICAgICAgX19ibGtjbnQ2NF90IHN0X2Jsb2Nr czsKCgoKCgoKCiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHN0X2F0aW07CiAgICAgICAgc3RydWN0 IHRpbWVzcGVjIHN0X210aW07CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIHN0X2N0aW07CiMgMTU4 ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9iaXRzL3N0cnVjdF9zdGF0LmgiIDMgNAogICAgICAgIHVuc2lnbmVkIGlu dCBfX2dsaWJjX3Jlc2VydmVkNDsKICAgICAgICB1bnNpZ25lZCBpbnQgX19nbGliY19yZXNlcnZl ZDU7Cgp9OwojIDI2ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxk LW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMiAzIDQKIyA3OSAiL2hvbWUv amNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEt dGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvZmNudGwuaCIgMiAzIDQKIyAxODAgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9i dWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwt YnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNApleHRl cm4gaW50IGZjbnRsIChpbnQgX19mZCwgaW50IF9fY21kLCAuLi4pIF9fYXNtX18gKCIiICJmY250 bDY0Iik7CgoKCgoKZXh0ZXJuIGludCBmY250bDY0IChpbnQgX19mZCwgaW50IF9fY21kLCAuLi4p OwojIDIxMiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNy b2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CmV4dGVybiBpbnQgb3BlbiAoY29uc3Qg Y2hhciAqX19maWxlLCBpbnQgX19vZmxhZywgLi4uKSBfX2FzbV9fICgiIiAib3BlbjY0IikKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKZXh0ZXJuIGludCBvcGVu NjQgKGNvbnN0IGNoYXIgKl9fZmlsZSwgaW50IF9fb2ZsYWcsIC4uLikgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpOwojIDIzNyAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1 aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1i dWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CmV4dGVy biBpbnQgb3BlbmF0IChpbnQgX19mZCwgY29uc3QgY2hhciAqX19maWxlLCBpbnQgX19vZmxhZywg Li4uKSBfX2FzbV9fICgiIiAib3BlbmF0NjQiKQogICAgICAgICAgICAgICAgICAgIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKCgpleHRlcm4gaW50IG9wZW5hdDY0IChpbnQg X19mZCwgY29uc3QgY2hhciAqX19maWxlLCBpbnQgX19vZmxhZywgLi4uKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKIyAyNTggIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMg NApleHRlcm4gaW50IGNyZWF0IChjb25zdCBjaGFyICpfX2ZpbGUsIG1vZGVfdCBfX21vZGUpIF9f YXNtX18gKCIiICJjcmVhdDY0IikKICAgICAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBpbnQgY3JlYXQ2NCAoY29uc3QgY2hhciAqX19m aWxlLCBtb2RlX3QgX19tb2RlKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMg MzA1ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxh emUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKZXh0ZXJuIGludCBwb3NpeF9mYWR2aXNlIChp bnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBfX29mZjY0X3QgX19sZW4sIGludCBfX2Fkdmlz ZSkgX19hc21fXyAoIiIgInBvc2l4X2ZhZHZpc2U2NCIpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkKCiAgICAgICAgICAgICAgICAgICAgICA7CgoKCgoKZXh0ZXJuIGlu dCBwb3NpeF9mYWR2aXNlNjQgKGludCBfX2ZkLCBvZmY2NF90IF9fb2Zmc2V0LCBvZmY2NF90IF9f bGVuLAogICAgICAgaW50IF9fYWR2aXNlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwojIDMyNiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9i dWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3Qt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CmV4dGVybiBpbnQgcG9z aXhfZmFsbG9jYXRlIChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0LCBfX29mZjY0X3QgX19s ZW4pIF9fYXNtX18gKCIiICJwb3NpeF9mYWxsb2NhdGU2NCIpCgogICAgICAgICAgICAgICAgICAg ICAgICAgICA7CgoKCgoKZXh0ZXJuIGludCBwb3NpeF9mYWxsb2NhdGU2NCAoaW50IF9fZmQsIG9m ZjY0X3QgX19vZmZzZXQsIG9mZjY0X3QgX19sZW4pOwojIDM0NSAiL2hvbWUvamNtdmJrYmMvd3Mv dGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21p Y3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmNudGwu aCIgMyA0CgojIDUyICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVyLmMiIDIK CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2Js YXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMSAzIDQKIyA5OSAiL2hvbWUvamNtdmJrYmMv d3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0 L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lz L3N0YXQuaCIgMyA0CgoKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290 L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9v dC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMSAzIDQKIyAxMDIg Ii9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0y MDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIgMyA0CiMgMjI3ICIvaG9tZS9qY212YmtiYy93cy90 ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWlj cm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvc3Rh dC5oIiAzIDQKZXh0ZXJuIGludCBzdGF0IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwg c3RydWN0IHN0YXQgKl9fcmVzdHJpY3QgX19idWYpIF9fYXNtX18gKCIiICJzdGF0NjQiKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpCgogICAgIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSwgMikpKTsKZXh0ZXJuIGludCBmc3RhdCAoaW50IF9fZmQsIHN0cnVj dCBzdGF0ICpfX2J1ZikgX19hc21fXyAoIiIgImZzdGF0NjQiKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgy KSkpOwojIDI0MCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1t aWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0CmV4dGVybiBpbnQgc3RhdDY0 IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3Jl c3RyaWN0IF9fYnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKZXh0ZXJuIGludCBmc3RhdDY0IChp bnQgX19mZCwgc3RydWN0IHN0YXQ2NCAqX19idWYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwojIDI3OSAi L2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIw MjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0CmV4dGVybiBpbnQgZnN0YXRhdCAoaW50IF9fZmQs IGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLCBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBf X2J1ZiwgaW50IF9fZmxhZykgX19hc21fXyAoIiIgImZzdGF0YXQ2NCIpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkKCgogICAgICAgICAgICAgICAgIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMiwgMykpKTsKIyAyOTEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNp bGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2Js YXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9zdGF0Lmgi IDMgNApleHRlcm4gaW50IGZzdGF0YXQ2NCAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19maWxlLAogICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fcmVzdHJpY3QgX19idWYsIGludCBf X2ZsYWcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIsIDMpKSk7CiMgMzI3ICIvaG9tZS9qY212YmtiYy93 cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3Qv bWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMv c3RhdC5oIiAzIDQKZXh0ZXJuIGludCBsc3RhdCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zp bGUsIHN0cnVjdCBzdGF0ICpfX3Jlc3RyaWN0IF9fYnVmKSBfX2FzbV9fICgiIiAibHN0YXQ2NCIp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkKCgogICAgIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKCgoKCmV4dGVybiBpbnQgbHN0YXQ2NCAo Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICAgIHN0cnVjdCBzdGF0NjQgKl9fcmVz dHJpY3QgX19idWYpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CiMgMzUyICIvaG9tZS9qY212 YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0 L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9zeXMvc3RhdC5oIiAzIDQKZXh0ZXJuIGludCBjaG1vZCAoY29uc3QgY2hhciAqX19maWxlLCBf X21vZGVfdCBfX21vZGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKZXh0ZXJuIGludCBs Y2htb2QgKGNvbnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19tb2RlKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpOwoKCgoKZXh0ZXJuIGludCBmY2htb2QgKGludCBfX2ZkLCBfX21vZGVfdCBfX21v ZGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKZXh0ZXJu IGludCBmY2htb2RhdCAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fZmlsZSwgX19tb2RlX3QgX19t b2RlLAogICAgICAgaW50IF9fZmxhZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKSA7CgoKCgoKCmV4 dGVybiBfX21vZGVfdCB1bWFzayAoX19tb2RlX3QgX19tYXNrKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIF9fbW9kZV90IGdldHVtYXNrICh2b2lk KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gaW50 IG1rZGlyIChjb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSkKICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKTsKCgoKCgpleHRlcm4gaW50IG1rZGlyYXQgKGludCBfX2ZkLCBjb25zdCBjaGFy ICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKCgoK ZXh0ZXJuIGludCBta25vZCAoY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUsIF9f ZGV2X3QgX19kZXYpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKZXh0ZXJuIGludCBta25v ZGF0IChpbnQgX19mZCwgY29uc3QgY2hhciAqX19wYXRoLCBfX21vZGVfdCBfX21vZGUsCiAgICAg IF9fZGV2X3QgX19kZXYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKCgoKCmV4dGVybiBpbnQgbWtmaWZv IChjb25zdCBjaGFyICpfX3BhdGgsIF9fbW9kZV90IF9fbW9kZSkKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsKCgoKCgpleHRlcm4gaW50IG1rZmlmb2F0IChpbnQgX19mZCwgY29uc3QgY2hhciAqX19w YXRoLCBfX21vZGVfdCBfX21vZGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKCgoKCmV4dGVy biBpbnQgdXRpbWVuc2F0IChpbnQgX19mZCwgY29uc3QgY2hhciAqX19wYXRoLAogICAgICAgIGNv bnN0IHN0cnVjdCB0aW1lc3BlYyBfX3RpbWVzWzJdLAogICAgICAgIGludCBfX2ZsYWdzKQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgyKSkpOwojIDQ1MiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1 aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1i dWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0CmV4 dGVybiBpbnQgZnV0aW1lbnMgKGludCBfX2ZkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgX190aW1l c1syXSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyA0NjUgIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNAojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGlj YS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXpl ZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RhdHguaCIg MSAzIDQKIyAzMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1t aWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdGF0eC5oIiAzIDQKIyAxICIvaG9tZS9qY212 YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0 L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9saW51eC9zdGF0LmgiIDEgMyA0CgoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGlj YS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXpl ZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmgi IDEgMyA0CgoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVp bGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2FzbS90eXBlcy5oIiAxIDMgNAojIDEgIi9ob21l L2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjEx LXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL2FzbS1nZW5lcmljL3R5cGVzLmgiIDEgMyA0CgoKCgoKCiMgMSAiL2hvbWUvamNtdmJr YmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9o b3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv YXNtLWdlbmVyaWMvaW50LWxsNjQuaCIgMSAzIDQKIyAxMiAiL2hvbWUvamNtdmJrYmMvd3MvdGVu c2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3Jv YmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYXNtLWdlbmVy aWMvaW50LWxsNjQuaCIgMyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxk cm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWls ZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYXNtL2JpdHNwZXJsb25nLmgiIDEg MyA0CiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNy b2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0c3BlcmxvbmcuaCIgMSAzIDQKIyAy ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUt MjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9hc20vYml0c3BlcmxvbmcuaCIgMiAzIDQKIyAxMyAiL2hvbWUvamNtdmJr YmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9o b3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv YXNtLWdlbmVyaWMvaW50LWxsNjQuaCIgMiAzIDQKCgoKCgoKCnR5cGVkZWYgX19zaWduZWRfXyBj aGFyIF9fczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3U4OwoKdHlwZWRlZiBfX3NpZ25lZF9f IHNob3J0IF9fczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdTE2OwoKdHlwZWRlZiBfX3Np Z25lZF9fIGludCBfX3MzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzI7CgoKX19leHRlbnNp b25fXyB0eXBlZGVmIF9fc2lnbmVkX18gbG9uZyBsb25nIF9fczY0OwpfX2V4dGVuc2lvbl9fIHR5 cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwojIDggIi9ob21lL2pjbXZia2JjL3dzL3Rl bnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNy b2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2FzbS1nZW5l cmljL3R5cGVzLmgiIDIgMyA0CiMgMiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxk cm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWls ZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmgiIDIgMyA0CiMg NiAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXpl LTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMiAzIDQKCgoKIyAxICIvaG9tZS9qY212Ymti Yy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hv c3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9s aW51eC9wb3NpeF90eXBlcy5oIiAxIDMgNAoKCgoKIyAxICIvaG9tZS9qY212YmtiYy93cy90ZW5z aWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9i bGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9zdGRk ZWYuaCIgMSAzIDQKIyA2ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1 aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAyIDMgNAoj IDI1ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxh emUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3Qg ewogdW5zaWduZWQgbG9uZyBmZHNfYml0c1sxMDI0IC8gKDggKiBzaXplb2YobG9uZykpXTsKfSBf X2tlcm5lbF9mZF9zZXQ7CgoKdHlwZWRlZiB2b2lkICgqX19rZXJuZWxfc2lnaGFuZGxlcl90KShp bnQpOwoKCnR5cGVkZWYgaW50IF9fa2VybmVsX2tleV90Owp0eXBlZGVmIGludCBfX2tlcm5lbF9t cWRfdDsKCiMgMSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1t aWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiIDEgMyA0CgoKCgp0eXBl ZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX21vZGVfdDsKCgojIDEgIi9ob21lL2pjbXZia2Jj L3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9z dC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Fz bS1nZW5lcmljL3Bvc2l4X3R5cGVzLmgiIDEgMyA0CgoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dz L3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9t aWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2FzbS9i aXRzcGVybG9uZy5oIiAxIDMgNAojIDYgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWls ZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVp bGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3Bvc2l4X3R5 cGVzLmgiIDIgMyA0CiMgMTUgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3Qv YnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3Bvc2l4X3R5cGVzLmgi IDMgNAp0eXBlZGVmIGxvbmcgX19rZXJuZWxfbG9uZ190Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg X19rZXJuZWxfdWxvbmdfdDsKCgoKdHlwZWRlZiBfX2tlcm5lbF91bG9uZ190IF9fa2VybmVsX2lu b190OwoKCgoKCgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfcGlkX3Q7CgoKCnR5cGVkZWYgaW50IF9f a2VybmVsX2lwY19waWRfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfdWlkX3Q7 CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX2dpZF90OwoKCgp0eXBlZGVmIF9fa2VybmVs X2xvbmdfdCBfX2tlcm5lbF9zdXNlY29uZHNfdDsKCgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfZGFk ZHJfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfdWlkMzJfdDsKdHlwZWRlZiB1 bnNpZ25lZCBpbnQgX19rZXJuZWxfZ2lkMzJfdDsKCgoKdHlwZWRlZiBfX2tlcm5lbF91aWRfdCBf X2tlcm5lbF9vbGRfdWlkX3Q7CnR5cGVkZWYgX19rZXJuZWxfZ2lkX3QgX19rZXJuZWxfb2xkX2dp ZF90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF9vbGRfZGV2X3Q7CiMgNjggIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL2FzbS1nZW5lcmljL3Bvc2l4X3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVk IGludCBfX2tlcm5lbF9zaXplX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX3NzaXplX3Q7CnR5cGVk ZWYgaW50IF9fa2VybmVsX3B0cmRpZmZfdDsKIyA3OSAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2ls aWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxh emVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMv cG9zaXhfdHlwZXMuaCIgMyA0CnR5cGVkZWYgc3RydWN0IHsKIGludCB2YWxbMl07Cn0gX19rZXJu ZWxfZnNpZF90OwoKCgoKCnR5cGVkZWYgX19rZXJuZWxfbG9uZ190IF9fa2VybmVsX29mZl90Owp0 eXBlZGVmIGxvbmcgbG9uZyBfX2tlcm5lbF9sb2ZmX3Q7CnR5cGVkZWYgX19rZXJuZWxfbG9uZ190 IF9fa2VybmVsX29sZF90aW1lX3Q7CnR5cGVkZWYgX19rZXJuZWxfbG9uZ190IF9fa2VybmVsX3Rp bWVfdDsKdHlwZWRlZiBsb25nIGxvbmcgX19rZXJuZWxfdGltZTY0X3Q7CnR5cGVkZWYgX19rZXJu ZWxfbG9uZ190IF9fa2VybmVsX2Nsb2NrX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX3RpbWVyX3Q7 CnR5cGVkZWYgaW50IF9fa2VybmVsX2Nsb2NraWRfdDsKdHlwZWRlZiBjaGFyICogX19rZXJuZWxf Y2FkZHJfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF91aWQxNl90Owp0eXBlZGVm IHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2dpZDE2X3Q7CiMgOSAiL2hvbWUvamNtdmJrYmMvd3Mv dGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21p Y3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYXNtL3Bv c2l4X3R5cGVzLmgiIDIgMyA0CiMgMzcgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWls ZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVp bGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgi IDIgMyA0CiMgMTAgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQt bWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDIgMyA0CiMgMjQgIi9ob21l L2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjEx LXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL2xpbnV4L3R5cGVzLmgiIDMgNAp0eXBlZGVmIF9fdTE2IF9fbGUxNjsKdHlwZWRlZiBf X3UxNiBfX2JlMTY7CnR5cGVkZWYgX191MzIgX19sZTMyOwp0eXBlZGVmIF9fdTMyIF9fYmUzMjsK dHlwZWRlZiBfX3U2NCBfX2xlNjQ7CnR5cGVkZWYgX191NjQgX19iZTY0OwoKdHlwZWRlZiBfX3Ux NiBfX3N1bTE2Owp0eXBlZGVmIF9fdTMyIF9fd3N1bTsKIyA0NyAiL2hvbWUvamNtdmJrYmMvd3Mv dGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0L21p Y3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvbGludXgv dHlwZXMuaCIgMyA0CnR5cGVkZWYgdW5zaWduZWQgX19wb2xsX3Q7CiMgNiAiL2hvbWUvamNtdmJr YmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9o b3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv bGludXgvc3RhdC5oIiAyIDMgNAojIDU2ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVp bGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1 aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9zdGF0LmgiIDMgNApz dHJ1Y3Qgc3RhdHhfdGltZXN0YW1wIHsKIF9fczY0IHR2X3NlYzsKIF9fdTMyIHR2X25zZWM7CiBf X3MzMiBfX3Jlc2VydmVkOwp9OwojIDk5ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVp bGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1 aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9zdGF0LmgiIDMgNApz dHJ1Y3Qgc3RhdHggewoKIF9fdTMyIHN0eF9tYXNrOwogX191MzIgc3R4X2Jsa3NpemU7CiBfX3U2 NCBzdHhfYXR0cmlidXRlczsKCiBfX3UzMiBzdHhfbmxpbms7CiBfX3UzMiBzdHhfdWlkOwogX191 MzIgc3R4X2dpZDsKIF9fdTE2IHN0eF9tb2RlOwogX191MTYgX19zcGFyZTBbMV07CgogX191NjQg c3R4X2lubzsKIF9fdTY0IHN0eF9zaXplOwogX191NjQgc3R4X2Jsb2NrczsKIF9fdTY0IHN0eF9h dHRyaWJ1dGVzX21hc2s7Cgogc3RydWN0IHN0YXR4X3RpbWVzdGFtcCBzdHhfYXRpbWU7CiBzdHJ1 Y3Qgc3RhdHhfdGltZXN0YW1wIHN0eF9idGltZTsKIHN0cnVjdCBzdGF0eF90aW1lc3RhbXAgc3R4 X2N0aW1lOwogc3RydWN0IHN0YXR4X3RpbWVzdGFtcCBzdHhfbXRpbWU7CgogX191MzIgc3R4X3Jk ZXZfbWFqb3I7CiBfX3UzMiBzdHhfcmRldl9taW5vcjsKIF9fdTMyIHN0eF9kZXZfbWFqb3I7CiBf X3UzMiBzdHhfZGV2X21pbm9yOwoKIF9fdTY0IHN0eF9tbnRfaWQ7CiBfX3U2NCBfX3NwYXJlMjsK CiBfX3U2NCBfX3NwYXJlM1sxMl07Cgp9OwojIDMyICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxp Y2EvYnVpbGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6 ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0YXR4Lmgi IDIgMyA0CgoKCgoKCgojIDEgIi9ob21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3Qv YnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RhdHgtZ2VuZXJpYy5oIiAxIDMg NAojIDI1ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVpbGRyb290L2J1aWxkLW1pY3Jv YmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1aWxkcm9vdC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0YXR4LWdlbmVyaWMuaCIgMyA0CiMgMSAiL2hvbWUv amNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEt dGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvYml0cy90eXBlcy9zdHJ1Y3Rfc3RhdHhfdGltZXN0YW1wLmgiIDEgMyA0CiMgMjYgIi9o b21lL2pjbXZia2JjL3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIx LjExLXRlc3QvaG9zdC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL2JpdHMvc3RhdHgtZ2VuZXJpYy5oIiAyIDMgNAojIDEgIi9ob21lL2pjbXZia2Jj L3dzL3RlbnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9z dC9taWNyb2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Jp dHMvdHlwZXMvc3RydWN0X3N0YXR4LmgiIDEgMyA0CiMgMjcgIi9ob21lL2pjbXZia2JjL3dzL3Rl bnNpbGljYS9idWlsZHJvb3QvYnVpbGQtbWljcm9ibGF6ZS0yMDIxLjExLXRlc3QvaG9zdC9taWNy b2JsYXplZWwtYnVpbGRyb290LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3Rh dHgtZ2VuZXJpYy5oIiAyIDMgNAojIDU3ICIvaG9tZS9qY212YmtiYy93cy90ZW5zaWxpY2EvYnVp bGRyb290L2J1aWxkLW1pY3JvYmxhemUtMjAyMS4xMS10ZXN0L2hvc3QvbWljcm9ibGF6ZWVsLWJ1 aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0YXR4LWdlbmVyaWMu aCIgMyA0CgoKCmludCBzdGF0eCAoaW50IF9fZGlyZmQsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19wYXRoLCBpbnQgX19mbGFncywKICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19tYXNrLCBzdHJ1 Y3Qgc3RhdHggKl9fcmVzdHJpY3QgX19idWYpCiAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIsIDUpKSk7CgoKIyA0 MCAiL2hvbWUvamNtdmJrYmMvd3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXpl LTIwMjEuMTEtdGVzdC9ob3N0L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYml0cy9zdGF0eC5oIiAyIDMgNAojIDQ2NiAiL2hvbWUvamNtdmJrYmMv d3MvdGVuc2lsaWNhL2J1aWxkcm9vdC9idWlsZC1taWNyb2JsYXplLTIwMjEuMTEtdGVzdC9ob3N0 L21pY3JvYmxhemVlbC1idWlsZHJvb3QtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lz L3N0YXQuaCIgMiAzIDQKCgoKIyA1NCAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRy aXZlci5jIiAyCiMgNzYgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXIuYyIK CiMgNzYgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXIuYyIKc3RhdGljIGlu dCBnY292X2Vycm9yIChjb25zdCBjaGFyICosIC4uLik7CgoKc3RhdGljIHZvaWQgZ2Nvdl9lcnJv cl9leGl0ICh2b2lkKTsKCgojIDEgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2djb3Yt aW8uY2MiIDEKIyAzMCAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5jYyIK c3RhdGljIGdjb3ZfdW5zaWduZWRfdCAqZ2Nvdl9yZWFkX3dvcmRzICh2b2lkICpidWZmZXIsIHVu c2lnbmVkKTsKCgoKZW51bSBnY292X2ZpbGVfZXJyb3IKewogIEdDT1ZfRklMRV9DT1VOVEVSX09W RVJGTE9XID0gLTEsCiAgR0NPVl9GSUxFX05PX0VSUk9SID0gMCwKICBHQ09WX0ZJTEVfV1JJVEVf RVJST1IgPSAxLAogIEdDT1ZfRklMRV9FT0YgPSAyCn07CgpzdHJ1Y3QgX19nY292X3Zhcgp7CiAg RklMRSAqZmlsZTsKICBlbnVtIGdjb3ZfZmlsZV9lcnJvciBlcnJvcjsKICBpbnQgbW9kZTsKICBp bnQgZW5kaWFuOwoKCgp9IF9fZ2Nvdl92YXI7CgoKCgoKCnN0YXRpYyBpbmxpbmUKCmdjb3ZfcG9z aXRpb25fdApfX2djb3ZfcG9zaXRpb24gKHZvaWQpCnsKCgoKCiAgcmV0dXJuIGZ0ZWxsIChfX2dj b3ZfdmFyLmZpbGUpOwp9CgoKCgpzdGF0aWMgaW5saW5lCgppbnQKX19nY292X2lzX2Vycm9yICh2 b2lkKQp7CiAgcmV0dXJuIF9fZ2Nvdl92YXIuZmlsZSA/IF9fZ2Nvdl92YXIuZXJyb3IgOiAxOwp9 CgoKCgoKIGlubGluZSB2b2lkCl9fZ2Nvdl9yZXdyaXRlICh2b2lkKQp7CiAgX19nY292X3Zhci5t b2RlID0gLTE7CiAgX19nY292X3Zhci5lcnJvciA9IEdDT1ZfRklMRV9OT19FUlJPUjsKICBmc2Vl ayAoX19nY292X3Zhci5maWxlLCAwTCwgCiMgOTAgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4v Z2NjL2djb3YtaW8uY2MiIDMgNAogICAgICAgICAgICAgICAgICAgICAgICAgICAwCiMgOTAgIi4u Ly4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2djb3YtaW8uY2MiCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKTsKfQoKCnN0YXRpYyBpbmxpbmUgZ2Nvdl91bnNpZ25lZF90CmZy b21fZmlsZSAoZ2Nvdl91bnNpZ25lZF90IHZhbHVlKQp7CgoKCgogIHJldHVybiB2YWx1ZTsKfQoj IDExMyAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5jYyIKIGludApfX2dj b3Zfb3BlbiAoY29uc3QgY2hhciAqbmFtZSwgaW50IG1vZGUpCnsKCiAgc3RydWN0IGZsb2NrIHNf ZmxvY2s7CiAgaW50IGZkOwoKICBzX2Zsb2NrLmxfd2hlbmNlID0gCiMgMTIwICIuLi8uLi8uLi8u Li9nY2MvbGliZ2NjLy4uL2djYy9nY292LWlvLmNjIiAzIDQKICAgICAgICAgICAgICAgICAgICAw CiMgMTIwICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9nY292LWlvLmNjIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgOwogIHNfZmxvY2subF9zdGFydCA9IDA7CiAgc19mbG9jay5s X2xlbiA9IDA7CiAgc19mbG9jay5sX3BpZCA9IGdldHBpZCAoKTsKCgoKCiAgKCh2b2lkKSgwICYm ICghX19nY292X3Zhci5maWxlKSkpOwogIF9fZ2Nvdl92YXIuZXJyb3IgPSBHQ09WX0ZJTEVfTk9f RVJST1I7CiMgMTQ0ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9nY292LWlvLmNjIgog IGlmIChtb2RlID4gMCkKICAgIHsKCiAgICAgIHNfZmxvY2subF90eXBlID0gCiMgMTQ3ICIuLi8u Li8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9nY292LWlvLmNjIiAzIDQKICAgICAgICAgICAgICAg ICAgICAgIDAKIyAxNDcgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2djb3YtaW8uY2Mi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgZmQgPSBvcGVuIChuYW1lLCAK IyAxNDkgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2djb3YtaW8uY2MiIDMgNAogICAg ICAgICAgICAgICAgICAgICAgMDAKIyAxNDkgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2Nj L2djb3YtaW8uY2MiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgCiMgMTQ5ICIuLi8u Li8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9nY292LWlvLmNjIiAzIDQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAwNDAwIAojIDE0OSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9n Y2MvZ2Nvdi1pby5jYyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg CiMgMTQ5ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9nY292LWlvLmNjIiAzIDQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDIwMAojIDE0OSAiLi4vLi4v Li4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5jYyIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICB9CiAgZWxzZQogICAgIHsKCiAgICAg ICBzX2Zsb2NrLmxfdHlwZSA9IAojIDE1NCAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2Mv Z2Nvdi1pby5jYyIgMyA0CiAgICAgICAgICAgICAgICAgICAgICAgMQojIDE1NCAiLi4vLi4vLi4v Li4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5jYyIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOwoKICAgICAgIGZkID0gb3BlbiAobmFtZSwgCiMgMTU2ICIuLi8uLi8uLi8uLi9nY2Mv bGliZ2NjLy4uL2djYy9nY292LWlvLmNjIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAwMiAK IyAxNTYgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2djb3YtaW8uY2MiCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgCiMgMTU2ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4u L2djYy9nY292LWlvLmNjIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMDAw MDEwMCAKIyAxNTYgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2djb3YtaW8uY2MiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChtb2RlIDwgMCA/IAojIDE1 NiAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5jYyIgMyA0CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwMDAxMDAwIAoj IDE1NiAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5jYyIKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDAp LCAwNjY2KTsKICAgIH0KICBpZiAoZmQgPCAwKQogICAgcmV0dXJuIDA7CgogIHdoaWxlIChmY250 bCAoZmQsIAojIDE2MSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5jYyIg MyA0CiAgICAgICAgICAgICAgICAgICA3CiMgMTYxICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4u L2djYy9nY292LWlvLmNjIgogICAgICAgICAgICAgICAgICAgICAgICAgICAsICZzX2Zsb2NrKSAm JiAKIyAxNjEgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2djb3YtaW8uY2MiIDMgNAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKl9fZXJybm9fbG9jYXRp b24gKCkpIAojIDE2MSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5jYyIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gCiMgMTYx ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9nY292LWlvLmNjIiAzIDQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNAojIDE2MSAiLi4vLi4v Li4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5jYyIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICBjb250aW51ZTsKCiAgX19n Y292X3Zhci5maWxlID0gZmRvcGVuIChmZCwgKG1vZGUgPiAwKSA/ICJyYiIgOiAicitiIik7Cgog IGlmICghX19nY292X3Zhci5maWxlKQogICAgewogICAgICBjbG9zZSAoZmQpOwogICAgICByZXR1 cm4gMDsKICAgIH0KIyAyMTQgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4vZ2NjL2djb3YtaW8u Y2MiCiAgX19nY292X3Zhci5tb2RlID0gbW9kZSA/IG1vZGUgOiAxOwoKICByZXR1cm4gMTsKfQoK CgoKIGludApfX2djb3ZfY2xvc2UgKHZvaWQpCnsKCgoKCgogIGlmIChfX2djb3ZfdmFyLmZpbGUp CiAgICB7CiAgICAgIGlmIChmY2xvc2UgKF9fZ2Nvdl92YXIuZmlsZSkpCiBfX2djb3ZfdmFyLmVy cm9yID0gR0NPVl9GSUxFX1dSSVRFX0VSUk9SOwoKICAgICAgX19nY292X3Zhci5maWxlID0gMDsK ICAgIH0KICBfX2djb3ZfdmFyLm1vZGUgPSAwOwogIHJldHVybiBfX2djb3ZfdmFyLmVycm9yOwp9 CiMgMjY0ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9nY292LWlvLmNjIgogdm9pZApn Y292X3dyaXRlIChjb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCnsKICBnY292X3Vu c2lnbmVkX3QgciA9IGZ3cml0ZSAoZGF0YSwgbGVuZ3RoLCAxLCBfX2djb3ZfdmFyLmZpbGUpOwog IGlmIChyICE9IDEpCiAgICBfX2djb3ZfdmFyLmVycm9yID0gR0NPVl9GSUxFX1dSSVRFX0VSUk9S Owp9CgoKCiB2b2lkCl9fZ2Nvdl93cml0ZV91bnNpZ25lZCAoZ2Nvdl91bnNpZ25lZF90IHZhbHVl KQp7CiAgZ2Nvdl91bnNpZ25lZF90IHIgPSBmd3JpdGUgKCZ2YWx1ZSwgc2l6ZW9mICh2YWx1ZSks IDEsIF9fZ2Nvdl92YXIuZmlsZSk7CiAgaWYgKHIgIT0gMSkKICAgIF9fZ2Nvdl92YXIuZXJyb3Ig PSBHQ09WX0ZJTEVfV1JJVEVfRVJST1I7Cn0KIyAzNzcgIi4uLy4uLy4uLy4uL2djYy9saWJnY2Mv Li4vZ2NjL2djb3YtaW8uY2MiCiB2b2lkCl9fZ2Nvdl93cml0ZV9vYmplY3Rfc3VtbWFyeSAoY29u c3Qgc3RydWN0IGdjb3Zfc3VtbWFyeSAqc3VtbWFyeSkKewogIF9fZ2Nvdl93cml0ZV91bnNpZ25l ZCAoKChnY292X3Vuc2lnbmVkX3QpMHhhMTAwMDAwMCkpOwogIF9fZ2Nvdl93cml0ZV91bnNpZ25l ZCAoKDIgKiA0KSk7CiAgX19nY292X3dyaXRlX3Vuc2lnbmVkIChzdW1tYXJ5LT5ydW5zKTsKICBf X2djb3Zfd3JpdGVfdW5zaWduZWQgKHN1bW1hcnktPnN1bV9tYXgpOwp9CiMgMzkzICIuLi8uLi8u Li8uLi9nY2MvbGliZ2NjLy4uL2djYy9nY292LWlvLmNjIgpzdGF0aWMgdm9pZCAqCmdjb3ZfcmVh ZF9ieXRlcyAodm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBjb3VudCkKewogIGlmIChfX2djb3ZfdmFy Lm1vZGUgPD0gMCkKICAgIHJldHVybiAKIyAzOTcgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvLi4v Z2NjL2djb3YtaW8uY2MiIDMgNAogICAgICAgICAgKCh2b2lkICopMCkKIyAzOTcgIi4uLy4uLy4u Ly4uL2djYy9saWJnY2MvLi4vZ2NjL2djb3YtaW8uY2MiCiAgICAgICAgICAgICAgOwoKICB1bnNp Z25lZCByZWFkID0gZnJlYWQgKGJ1ZmZlciwgY291bnQsIDEsIF9fZ2Nvdl92YXIuZmlsZSk7CiAg aWYgKHJlYWQgIT0gMSkKICAgIHsKICAgICAgaWYgKGZlb2YgKF9fZ2Nvdl92YXIuZmlsZSkpCiBf X2djb3ZfdmFyLmVycm9yID0gR0NPVl9GSUxFX0VPRjsKICAgICAgcmV0dXJuIAojIDQwNCAiLi4v Li4vLi4vLi4vZ2NjL2xpYmdjYy8uLi9nY2MvZ2Nvdi1pby5jYyIgMyA0CiAgICAgICAgICAgICgo dm9pZCAqKTApCiMgNDA0ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9nY292LWlvLmNj IgogICAgICAgICAgICAgICAgOwogICAgfQoKCgoKICByZXR1cm4gYnVmZmVyOwp9CgoKCnN0YXRp YyBnY292X3Vuc2lnbmVkX3QgKgpnY292X3JlYWRfd29yZHMgKHZvaWQgKmJ1ZmZlciwgdW5zaWdu ZWQgd29yZHMpCnsKICByZXR1cm4gKGdjb3ZfdW5zaWduZWRfdCAqKWdjb3ZfcmVhZF9ieXRlcyAo YnVmZmVyLCA0ICogd29yZHMpOwp9CgoKCgogZ2Nvdl91bnNpZ25lZF90Cl9fZ2Nvdl9yZWFkX3Vu c2lnbmVkICh2b2lkKQp7CiAgZ2Nvdl91bnNpZ25lZF90IHZhbHVlOwogIGdjb3ZfdW5zaWduZWRf dCBhbGxvY2F0ZWRfYnVmZmVyWzFdOwogIGdjb3ZfdW5zaWduZWRfdCAqYnVmZmVyID0gZ2Nvdl9y ZWFkX3dvcmRzICgmYWxsb2NhdGVkX2J1ZmZlciwgMSk7CgogIGlmICghYnVmZmVyKQogICAgcmV0 dXJuIDA7CgogIHZhbHVlID0gZnJvbV9maWxlIChidWZmZXJbMF0pOwogIHJldHVybiB2YWx1ZTsK fQoKCgoKIGdjb3ZfdHlwZQpfX2djb3ZfcmVhZF9jb3VudGVyICh2b2lkKQp7CiAgZ2Nvdl90eXBl IHZhbHVlOwogIGdjb3ZfdW5zaWduZWRfdCBhbGxvY2F0ZWRfYnVmZmVyWzJdOwogIGdjb3ZfdW5z aWduZWRfdCAqYnVmZmVyID0gZ2Nvdl9yZWFkX3dvcmRzICgmYWxsb2NhdGVkX2J1ZmZlciwgMik7 CgogIGlmICghYnVmZmVyKQogICAgcmV0dXJuIDA7CiAgdmFsdWUgPSBmcm9tX2ZpbGUgKGJ1ZmZl clswXSk7CiAgaWYgKHNpemVvZiAodmFsdWUpID4gc2l6ZW9mIChnY292X3Vuc2lnbmVkX3QpKQog ICAgdmFsdWUgfD0gKChnY292X3R5cGUpIGZyb21fZmlsZSAoYnVmZmVyWzFdKSkgPDwgMzI7CiAg ZWxzZSBpZiAoYnVmZmVyWzFdKQogICAgX19nY292X3Zhci5lcnJvciA9IEdDT1ZfRklMRV9DT1VO VEVSX09WRVJGTE9XOwoKICByZXR1cm4gdmFsdWU7Cn0KCgoKCmNoYXIgKgptYW5nbGVfcGF0aCAo Y2hhciBjb25zdCAqYmFzZSkKewoKCiAgY29uc3QgY2hhciAqcHJvYmU7CiAgY2hhciAqYnVmZmVy ID0gKGNoYXIgKiltYWxsb2MgKHN0cmxlbiAoYmFzZSkgKyAxKTsKICBjaGFyICpwdHIgPSBidWZm ZXI7CiMgNDgwICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjLy4uL2djYy9nY292LWlvLmNjIgogIGZv ciAoOyAqYmFzZTsgYmFzZSA9IHByb2JlKQogICAgewogICAgICBzaXplX3QgbGVuOwoKICAgICAg Zm9yIChwcm9iZSA9IGJhc2U7ICpwcm9iZTsgcHJvYmUrKykKIGlmICgqcHJvYmUgPT0gJy8nKQog ICBicmVhazsKICAgICAgbGVuID0gcHJvYmUgLSBiYXNlOwogICAgICBpZiAobGVuID09IDIgJiYg YmFzZVswXSA9PSAnLicgJiYgYmFzZVsxXSA9PSAnLicpCiAqcHRyKysgPSAnXic7CiAgICAgIGVs c2UKIHsKICAgbWVtY3B5IChwdHIsIGJhc2UsIGxlbik7CiAgIHB0ciArPSBsZW47CiB9CiAgICAg IGlmICgqcHJvYmUpCiB7CiAgICpwdHIrKyA9ICcjJzsKICAgcHJvYmUrKzsKIH0KICAgIH0KCgog ICpwdHIgPSAnXDAnOwoKICByZXR1cm4gYnVmZmVyOwp9CiMgNTI4ICIuLi8uLi8uLi8uLi9nY2Mv bGliZ2NjLy4uL2djYy9nY292LWlvLmNjIgogdm9pZApfX2djb3ZfcmVhZF9zdW1tYXJ5IChzdHJ1 Y3QgZ2Nvdl9zdW1tYXJ5ICpzdW1tYXJ5KQp7CiAgc3VtbWFyeS0+cnVucyA9IF9fZ2Nvdl9yZWFk X3Vuc2lnbmVkICgpOwogIHN1bW1hcnktPnN1bV9tYXggPSBfX2djb3ZfcmVhZF91bnNpZ25lZCAo KTsKfQojIDgzICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVyLmMiIDIKCgoK c3RydWN0IGdjb3ZfZm5fYnVmZmVyCnsKICBzdHJ1Y3QgZ2Nvdl9mbl9idWZmZXIgKm5leHQ7CiAg dW5zaWduZWQgZm5faXg7CiAgc3RydWN0IGdjb3ZfZm5faW5mbyBpbmZvOwoKfTsKCnN0cnVjdCBn Y292X3N1bW1hcnlfYnVmZmVyCnsKICBzdHJ1Y3QgZ2Nvdl9zdW1tYXJ5X2J1ZmZlciAqbmV4dDsK ICBzdHJ1Y3QgZ2Nvdl9zdW1tYXJ5IHN1bW1hcnk7Cn07CgoKCgpzdHJ1Y3QgZ2Nvdl9maWxlbmFt ZQp7CiAgY2hhciAqZmlsZW5hbWU7CiAgaW50IHN0cmlwOwogIGNoYXIgKnByZWZpeDsKfTsKCnN0 YXRpYyBzdHJ1Y3QgZ2Nvdl9mbl9idWZmZXIgKgpmcmVlX2ZuX2RhdGEgKGNvbnN0IHN0cnVjdCBn Y292X2luZm8gKmdpX3B0ciwgc3RydWN0IGdjb3ZfZm5fYnVmZmVyICpidWZmZXIsCiAgICAgICAg ICAgICAgdW5zaWduZWQgbGltaXQpCnsKICBzdHJ1Y3QgZ2Nvdl9mbl9idWZmZXIgKm5leHQ7CiAg dW5zaWduZWQgaXgsIG5fY3RyID0gMDsKCiAgaWYgKCFidWZmZXIpCiAgICByZXR1cm4gMDsKICBu ZXh0ID0gYnVmZmVyLT5uZXh0OwoKICBmb3IgKGl4ID0gMDsgaXggIT0gbGltaXQ7IGl4KyspCiAg ICBpZiAoZ2lfcHRyLT5tZXJnZVtpeF0pCiAgICAgIGZyZWUgKGJ1ZmZlci0+aW5mby5jdHJzW25f Y3RyKytdLnZhbHVlcyk7CiAgZnJlZSAoYnVmZmVyKTsKICByZXR1cm4gbmV4dDsKfQoKc3RhdGlj IHN0cnVjdCBnY292X2ZuX2J1ZmZlciAqKgpidWZmZXJfZm5fZGF0YSAoY29uc3QgY2hhciAqZmls ZW5hbWUsIGNvbnN0IHN0cnVjdCBnY292X2luZm8gKmdpX3B0ciwKICAgICAgICAgICAgICAgIHN0 cnVjdCBnY292X2ZuX2J1ZmZlciAqKmVuZF9wdHIsIHVuc2lnbmVkIGZuX2l4KQp7CiAgdW5zaWdu ZWQgbl9jdHJzID0gMCwgaXggPSAwOwogIHN0cnVjdCBnY292X2ZuX2J1ZmZlciAqZm5fYnVmZmVy OwogIHVuc2lnbmVkIGxlbjsKCiAgZm9yIChpeCA9IEdDT1ZfQ09VTlRFUlM7IGl4LS07KQogICAg aWYgKGdpX3B0ci0+bWVyZ2VbaXhdKQogICAgICBuX2N0cnMrKzsKCiAgbGVuID0gc2l6ZW9mICgq Zm5fYnVmZmVyKSArIHNpemVvZiAoZm5fYnVmZmVyLT5pbmZvLmN0cnNbMF0pICogbl9jdHJzOwog IGZuX2J1ZmZlciA9IChzdHJ1Y3QgZ2Nvdl9mbl9idWZmZXIgKikgbWFsbG9jIChsZW4pOwoKICBp ZiAoIWZuX2J1ZmZlcikKICAgIGdvdG8gZmFpbDsKCiAgZm5fYnVmZmVyLT5uZXh0ID0gMDsKICBm bl9idWZmZXItPmZuX2l4ID0gZm5faXg7CiAgZm5fYnVmZmVyLT5pbmZvLmlkZW50ID0gX19nY292 X3JlYWRfdW5zaWduZWQgKCk7CiAgZm5fYnVmZmVyLT5pbmZvLmxpbmVub19jaGVja3N1bSA9IF9f Z2Nvdl9yZWFkX3Vuc2lnbmVkICgpOwogIGZuX2J1ZmZlci0+aW5mby5jZmdfY2hlY2tzdW0gPSBf X2djb3ZfcmVhZF91bnNpZ25lZCAoKTsKCiAgZm9yIChuX2N0cnMgPSBpeCA9IDA7IGl4ICE9IEdD T1ZfQ09VTlRFUlM7IGl4KyspCiAgICB7CiAgICAgIGdjb3ZfdW5zaWduZWRfdCBsZW5ndGg7CiAg ICAgIGdjb3ZfdHlwZSAqdmFsdWVzOwoKICAgICAgaWYgKCFnaV9wdHItPm1lcmdlW2l4XSkKICAg ICAgICBjb250aW51ZTsKCiAgICAgIGlmIChfX2djb3ZfcmVhZF91bnNpZ25lZCAoKSAhPSAoKChn Y292X3Vuc2lnbmVkX3QpMHgwMWExMDAwMCkgKyAoKGdjb3ZfdW5zaWduZWRfdCkoaXgpIDw8IDE3 KSkpCiAgICAgICAgewogICAgICAgICAgbGVuID0gMDsKICAgICAgICAgIGdvdG8gZmFpbDsKICAg ICAgICB9CgogICAgICBsZW5ndGggPSAoKF9fZ2Nvdl9yZWFkX3Vuc2lnbmVkICgpIC8gNCkgLyAy KTsKICAgICAgbGVuID0gbGVuZ3RoICogc2l6ZW9mIChnY292X3R5cGUpOwogICAgICB2YWx1ZXMg PSAoZ2Nvdl90eXBlICopIG1hbGxvYyAobGVuKTsKICAgICAgaWYgKCF2YWx1ZXMpCiAgICAgICAg Z290byBmYWlsOwoKICAgICAgZm5fYnVmZmVyLT5pbmZvLmN0cnNbbl9jdHJzXS5udW0gPSBsZW5n dGg7CiAgICAgIGZuX2J1ZmZlci0+aW5mby5jdHJzW25fY3Ryc10udmFsdWVzID0gdmFsdWVzOwoK ICAgICAgd2hpbGUgKGxlbmd0aC0tKQogICAgICAgICp2YWx1ZXMrKyA9IF9fZ2Nvdl9yZWFkX2Nv dW50ZXIgKCk7CiAgICAgIG5fY3RycysrOwogICAgfQoKICAqZW5kX3B0ciA9IGZuX2J1ZmZlcjsK ICByZXR1cm4gJmZuX2J1ZmZlci0+bmV4dDsKCmZhaWw6CiAgZ2Nvdl9lcnJvciAoImxpYmdjb3Yg cHJvZmlsaW5nIGVycm9yOiVzOiIgIkZ1bmN0aW9uICV1ICVzICV1IFxuIiwgZmlsZW5hbWUsIGZu X2l4LAogICAgICAgICAgICAgIGxlbiA/ICJjYW5ub3QgYWxsb2NhdGUiIDogImNvdW50ZXIgbWlz bWF0Y2giLCBsZW4gPyBsZW4gOiBpeCk7CgogIHJldHVybiAoc3RydWN0IGdjb3ZfZm5fYnVmZmVy ICoqKWZyZWVfZm5fZGF0YSAoZ2lfcHRyLCBmbl9idWZmZXIsIGl4KTsKfQoKCgoKCnN0YXRpYyBj aGFyICoKZ2Nvdl92ZXJzaW9uX3N0cmluZyAoY2hhciAqYnVmZmVyLCBjaGFyIHZlcnNpb25bNF0p CnsKICBpZiAodmVyc2lvblswXSA8ICdBJyB8fCB2ZXJzaW9uWzBdID4gJ1onCiAgICAgIHx8IHZl cnNpb25bMV0gPCAnMCcgfHwgdmVyc2lvblsxXSA+ICc5JwogICAgICB8fCB2ZXJzaW9uWzJdIDwg JzAnIHx8IHZlcnNpb25bMl0gPiAnOScpCiAgICBzcHJpbnRmIChidWZmZXIsICIodW5rbm93biki KTsKICBlbHNlCiAgICB7CiAgICAgIHVuc2lnbmVkIG1ham9yID0gMTAgKiAodmVyc2lvblswXSAt ICdBJykgKyAodmVyc2lvblsxXSAtICcwJyk7CiAgICAgIHVuc2lnbmVkIG1pbm9yID0gdmVyc2lv blsyXSAtICcwJzsKICAgICAgc3ByaW50ZiAoYnVmZmVyLCAiJXUuJXUgKCVzKSIsIG1ham9yLCBt aW5vciwKICAgICAgICB2ZXJzaW9uWzNdID09ICcqJyA/ICJyZWxlYXNlIiA6ICJleHBlcmltZW50 YWwiKTsKICAgIH0KICByZXR1cm4gYnVmZmVyOwp9CgoKCgoKCnN0YXRpYyBpbnQKZ2Nvdl92ZXJz aW9uIChzdHJ1Y3QgZ2Nvdl9pbmZvICpwdHIsIGdjb3ZfdW5zaWduZWRfdCB2ZXJzaW9uLAogICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQp7CiAgaWYgKHZlcnNpb24gIT0gKChnY292 X3Vuc2lnbmVkX3QpMHg0MjMzMzAyMCkpCiAgICB7CiAgICAgIGNoYXIgdls0XSwgZVs0XTsKICAg ICAgY2hhciB2ZXJfc3RyaW5nWzEyOF0sIGV4cGVjdGVkX3N0cmluZ1sxMjhdOwoKICAgICAgKCh2 KVswXSA9IChjaGFyKSgodmVyc2lvbikgPj4gMjQpLCAodilbMV0gPSAoY2hhcikoKHZlcnNpb24p ID4+IDE2KSwgKHYpWzJdID0gKGNoYXIpKCh2ZXJzaW9uKSA+PiA4KSwgKHYpWzNdID0gKGNoYXIp KCh2ZXJzaW9uKSA+PiAwKSk7CiAgICAgICgoZSlbMF0gPSAoY2hhcikoKCgoZ2Nvdl91bnNpZ25l ZF90KTB4NDIzMzMwMjApKSA+PiAyNCksIChlKVsxXSA9IChjaGFyKSgoKChnY292X3Vuc2lnbmVk X3QpMHg0MjMzMzAyMCkpID4+IDE2KSwgKGUpWzJdID0gKGNoYXIpKCgoKGdjb3ZfdW5zaWduZWRf dCkweDQyMzMzMDIwKSkgPj4gOCksIChlKVszXSA9IChjaGFyKSgoKChnY292X3Vuc2lnbmVkX3Qp MHg0MjMzMzAyMCkpID4+IDApKTsKCiAgICAgIGdjb3ZfZXJyb3IgKCJsaWJnY292IHByb2ZpbGlu ZyBlcnJvcjolczoiICJWZXJzaW9uIG1pc21hdGNoIC0gZXhwZWN0ZWQgJXMgKCUuNHMpICIKICAg ICJnb3QgJXMgKCUuNHMpXG4iLAogICAgZmlsZW5hbWU/IGZpbGVuYW1lIDogcHRyLT5maWxlbmFt ZSwKICAgIGdjb3ZfdmVyc2lvbl9zdHJpbmcgKGV4cGVjdGVkX3N0cmluZywgZSksIGUsCiAgICBn Y292X3ZlcnNpb25fc3RyaW5nICh2ZXJfc3RyaW5nLCB2KSwgdik7CiAgICAgIHJldHVybiAwOwog ICAgfQogIHJldHVybiAxOwp9CgoKc3RhdGljIHN0cnVjdCBnY292X2ZuX2J1ZmZlciAqZm5fYnVm ZmVyOwoKCiMgMSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRyaXZlci1zeXN0ZW0u YyIgMQojIDMxICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVyLXN5c3RlbS5j IgpGSUxFICpfX2djb3ZfZXJyb3JfZmlsZSA9IAojIDMxICIuLi8uLi8uLi8uLi9nY2MvbGliZ2Nj L2xpYmdjb3YtZHJpdmVyLXN5c3RlbS5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICgo dm9pZCAqKTApCiMgMzEgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXItc3lz dGVtLmMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKCnN0YXRpYyBGSUxFICoK Z2V0X2djb3ZfZXJyb3JfZmlsZSAodm9pZCkKewoKCgogIGlmICghX19nY292X2Vycm9yX2ZpbGUp CiAgICB7CiAgICAgIGNvbnN0IGNoYXIgKmdjb3ZfZXJyb3JfZmlsZW5hbWUgPSBnZXRlbnYgKCJH Q09WX0VSUk9SX0ZJTEUiKTsKCiAgICAgIGlmIChnY292X2Vycm9yX2ZpbGVuYW1lKQogX19nY292 X2Vycm9yX2ZpbGUgPSBmb3BlbiAoZ2Nvdl9lcnJvcl9maWxlbmFtZSwgImEiKTsKICAgICAgaWYg KCFfX2djb3ZfZXJyb3JfZmlsZSkKIF9fZ2Nvdl9lcnJvcl9maWxlID0gCiMgNTAgIi4uLy4uLy4u Ly4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXItc3lzdGVtLmMiIDMgNAogICAgICAgICAgICAg ICAgICAgIHN0ZGVycgojIDUwICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVy LXN5c3RlbS5jIgogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgIH0KICByZXR1cm4gX19n Y292X2Vycm9yX2ZpbGU7Cgp9CgoKCnN0YXRpYyBpbnQgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHBy aW50ZiwgMSwgMikpKQpnY292X2Vycm9yIChjb25zdCBjaGFyICpmbXQsIC4uLikKewogIGludCBy ZXQ7CiAgdmFfbGlzdCBhcmdwOwoKICAKIyA2NCAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJn Y292LWRyaXZlci1zeXN0ZW0uYyIgMyA0CiBfX2J1aWx0aW5fdmFfc3RhcnQoCiMgNjQgIi4uLy4u Ly4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXItc3lzdGVtLmMiCiBhcmdwCiMgNjQgIi4u Ly4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXItc3lzdGVtLmMiIDMgNAogLAojIDY0 ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVyLXN5c3RlbS5jIgogZm10CiMg NjQgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXItc3lzdGVtLmMiIDMgNAog KQojIDY0ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVyLXN5c3RlbS5jIgog ICAgICAgICAgICAgICAgICAgICA7CiAgRklMRSAqZiA9IGdldF9nY292X2Vycm9yX2ZpbGUgKCk7 CiAgcmV0ID0gdmZwcmludGYgKGYsIGZtdCwgYXJncCk7CiAgCiMgNjcgIi4uLy4uLy4uLy4uL2dj Yy9saWJnY2MvbGliZ2Nvdi1kcml2ZXItc3lzdGVtLmMiIDMgNAogX19idWlsdGluX3ZhX2VuZCgK IyA2NyAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRyaXZlci1zeXN0ZW0uYyIKIGFy Z3AKIyA2NyAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRyaXZlci1zeXN0ZW0uYyIg MyA0CiApCiMgNjcgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXItc3lzdGVt LmMiCiAgICAgICAgICAgICAgOwoKICBpZiAoZ2V0ZW52ICgiR0NPVl9FWElUX0FUX0VSUk9SIikp CiAgICB7CiAgICAgIGZwcmludGYgKGYsICJwcm9maWxpbmc6ZXhpdGluZyBhZnRlciBhbiBlcnJv clxuIik7CiAgICAgIGV4aXQgKDEpOwogICAgfQoKICByZXR1cm4gcmV0Owp9CgoKc3RhdGljIHZv aWQKZ2Nvdl9lcnJvcl9leGl0ICh2b2lkKQp7CiAgaWYgKF9fZ2Nvdl9lcnJvcl9maWxlICYmIF9f Z2Nvdl9lcnJvcl9maWxlICE9IAojIDgyICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3Yt ZHJpdmVyLXN5c3RlbS5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdGRlcnIKIyA4MiAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRy aXZlci1zeXN0ZW0uYyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApCiAgICB7CiAgICAgIGZjbG9zZSAoX19nY292X2Vycm9yX2ZpbGUpOwogICAg ICBfX2djb3ZfZXJyb3JfZmlsZSA9IAojIDg1ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdj b3YtZHJpdmVyLXN5c3RlbS5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCAq KTApCiMgODUgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXItc3lzdGVtLmMi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgfQp9CgoKCgoKCnN0YXRpYyBpbnQK Y3JlYXRlX2ZpbGVfZGlyZWN0b3J5IChjaGFyICpmaWxlbmFtZSkKewoKCgoKICBjaGFyICpzOwoK ICBzID0gZmlsZW5hbWU7CgogIGlmICgoMCkpCiAgICBzICs9IDI7CiAgaWYgKCgoKCpzKSA9PSAn LycpIHx8ICgoKCpzKSA9PSAnXFwnKSAmJiAoMCkpKSkKICAgICsrczsKICBmb3IgKDsgKnMgIT0g J1wwJzsgcysrKQogICAgaWYgKCgoKCpzKSA9PSAnLycpIHx8ICgoKCpzKSA9PSAnXFwnKSAmJiAo MCkpKSkKICAgICAgewogICAgICAgIGNoYXIgc2VwID0gKnM7CiAgICAgICAgKnMgPSAnXDAnOwoK CiAgICAgICAgaWYgKGFjY2VzcyAoZmlsZW5hbWUsIAojIDExNiAiLi4vLi4vLi4vLi4vZ2NjL2xp YmdjYy9saWJnY292LWRyaXZlci1zeXN0ZW0uYyIgMyA0CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMAojIDExNiAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRyaXZlci1zeXN0 ZW0uYyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA9PSAtMQoKICAgICAmJiBt a2RpciAoZmlsZW5hbWUsIDA3NzcpID09IC0xCgoKCgoKCgogICAgICAgICAgICAmJiAKIyAxMjYg Ii4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXItc3lzdGVtLmMiIDMgNAogICAg ICAgICAgICAgICgqX19lcnJub19sb2NhdGlvbiAoKSkgCiMgMTI2ICIuLi8uLi8uLi8uLi9nY2Mv bGliZ2NjL2xpYmdjb3YtZHJpdmVyLXN5c3RlbS5jIgogICAgICAgICAgICAgICAgICAgICE9IAoj IDEyNiAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRyaXZlci1zeXN0ZW0uYyIgMyA0 CiAgICAgICAgICAgICAgICAgICAgICAgMTcKIyAxMjYgIi4uLy4uLy4uLy4uL2djYy9saWJnY2Mv bGliZ2Nvdi1kcml2ZXItc3lzdGVtLmMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQog ICAgICAgICAgewogICAgICAgICAgICBnY292X2Vycm9yICgicHJvZmlsaW5nOiVzOkNhbm5vdCBj cmVhdGUgZGlyZWN0b3J5XG4iLCBmaWxlbmFtZSk7CiAgICAgICAgICAgICpzID0gc2VwOwogICAg ICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICB9OwoKICAgICAgICAqcyA9IHNlcDsKICAgICAg fTsKICByZXR1cm4gMDsKCn0KCgoKCgoKCnN0YXRpYyBjaGFyICoKcmVwbGFjZV9maWxlbmFtZV92 YXJpYWJsZXMgKGNoYXIgKmZpbGVuYW1lKQp7CiAgY2hhciBidWZmZXJbMTZdOwogIGNoYXIgZW1w dHlbXSA9ICIiOwogIGZvciAoY2hhciAqcCA9IGZpbGVuYW1lOyAqcCAhPSAnXDAnOyBwKyspCiAg ICB7CiAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbiAoZmlsZW5hbWUpOwogICAgICBpZiAo KnAgPT0gJyUnICYmICoocCArIDEpICE9ICdcMCcpCiB7CiAgIHVuc2lnbmVkIHN0YXJ0ID0gcCAt IGZpbGVuYW1lOwogICBwKys7CiAgIGNoYXIgKnJlcGxhY2VtZW50ID0gCiMgMTU3ICIuLi8uLi8u Li8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVyLXN5c3RlbS5jIiAzIDQKICAgICAgICAgICAg ICAgICAgICAgICgodm9pZCAqKTApCiMgMTU3ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdj b3YtZHJpdmVyLXN5c3RlbS5jIgogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgc3dpdGNo ICgqcCkKICAgICB7CiAgICAgY2FzZSAncCc6CiAgICAgICBzcHJpbnRmIChidWZmZXIsICIlZCIs IGdldHBpZCAoKSk7CiAgICAgICByZXBsYWNlbWVudCA9IGJ1ZmZlcjsKICAgICAgIHArKzsKICAg ICAgIGJyZWFrOwogICAgIGNhc2UgJ3EnOgogICAgICAgaWYgKCoocCArIDEpID09ICd7JykKICB7 CiAgICBwICs9IDI7CiAgICBjaGFyICplID0gc3RyY2hyIChwLCAnfScpOwogICAgaWYgKGUpCiAg ICAgIHsKICAgICAgICAqZSA9ICdcMCc7CiAgICAgICAgcmVwbGFjZW1lbnQgPSBnZXRlbnYgKHAp OwogICAgICAgIGlmIChyZXBsYWNlbWVudCA9PSAKIyAxNzQgIi4uLy4uLy4uLy4uL2djYy9saWJn Y2MvbGliZ2Nvdi1kcml2ZXItc3lzdGVtLmMiIDMgNAogICAgICAgICAgICAgICAgICAgICAgICAg ICgodm9pZCAqKTApCiMgMTc0ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVy LXN5c3RlbS5jIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgIHJlcGxhY2VtZW50 ID0gZW1wdHk7CiAgICAgICAgcCA9IGUgKyAxOwogICAgICB9CiAgICBlbHNlCiAgICAgIHJldHVy biBmaWxlbmFtZTsKICB9CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgcmV0dXJu IGZpbGVuYW1lOwogICAgIH0KCgoKICAgdW5zaWduZWQgZW5kID0gbGVuZ3RoIC0gKHAgLSBmaWxl bmFtZSk7CiAgIHVuc2lnbmVkIHJlcGxfbGVuZ3RoID0gcmVwbGFjZW1lbnQgIT0gCiMgMTg5ICIu Li8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVyLXN5c3RlbS5jIiAzIDQKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApIAojIDE4OSAiLi4v Li4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRyaXZlci1zeXN0ZW0uYyIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzdHJsZW4gKHJlcGxhY2VtZW50KSA6 IDA7CgogICBjaGFyICpidWZmZXIgPSAoY2hhciAqKW1hbGxvYyAoc3RhcnQgKyBlbmQgKyByZXBs X2xlbmd0aCArIDEpOwogICBjaGFyICpidWZmZXJfcHRyID0gYnVmZmVyOwogICBidWZmZXJfcHRy ID0gKGNoYXIgKiltZW1jcHkgKGJ1ZmZlcl9wdHIsIGZpbGVuYW1lLCBzdGFydCk7CiAgIGJ1ZmZl cl9wdHIgKz0gc3RhcnQ7CiAgIGlmIChyZXBsYWNlbWVudCAhPSAKIyAxOTUgIi4uLy4uLy4uLy4u L2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXItc3lzdGVtLmMiIDMgNAogICAgICAgICAgICAgICAg ICAgICAoKHZvaWQgKikwKQojIDE5NSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRy aXZlci1zeXN0ZW0uYyIKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICBidWZmZXJfcHRy ID0gKGNoYXIgKiltZW1jcHkgKGJ1ZmZlcl9wdHIsIHJlcGxhY2VtZW50LCByZXBsX2xlbmd0aCk7 CiAgIGJ1ZmZlcl9wdHIgKz0gcmVwbF9sZW5ndGg7CiAgIGJ1ZmZlcl9wdHIgPSAoY2hhciAqKW1l bWNweSAoYnVmZmVyX3B0ciwgcCwgZW5kKTsKICAgYnVmZmVyX3B0ciArPSBlbmQ7CiAgICpidWZm ZXJfcHRyID0gJ1wwJzsKCiAgIGZyZWUgKGZpbGVuYW1lKTsKICAgZmlsZW5hbWUgPSBidWZmZXI7 CiAgIHAgPSBidWZmZXIgKyBzdGFydCArIHJlcGxfbGVuZ3RoOwogfQogICAgfQoKICByZXR1cm4g ZmlsZW5hbWU7Cn0KCnN0YXRpYyB2b2lkCmFsbG9jYXRlX2ZpbGVuYW1lX3N0cnVjdCAoc3RydWN0 IGdjb3ZfZmlsZW5hbWUgKmdmKQp7CiAgY29uc3QgY2hhciAqZ2Nvdl9wcmVmaXg7CiAgc2l6ZV90 IHByZWZpeF9sZW5ndGg7CiAgaW50IHN0cmlwID0gMDsKICBnZi0+ZmlsZW5hbWUgPSAKIyAyMTcg Ii4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXItc3lzdGVtLmMiIDMgNAogICAg ICAgICAgICAgICAgKCh2b2lkICopMCkKIyAyMTcgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGli Z2Nvdi1kcml2ZXItc3lzdGVtLmMiCiAgICAgICAgICAgICAgICAgICAgOwoKICB7CgogICAgY2hh ciAqdG1wID0gZ2V0ZW52KCJHQ09WX1BSRUZJWF9TVFJJUCIpOwogICAgaWYgKHRtcCkKICAgICAg ewogICAgICAgIHN0cmlwID0gYXRvaSAodG1wKTsKCiAgICAgICAgaWYgKHN0cmlwIDwgMCkKICAg ICAgICAgIHN0cmlwID0gMDsKICAgICAgfQogIH0KICBnZi0+c3RyaXAgPSBzdHJpcDsKCgogIGdj b3ZfcHJlZml4ID0gZ2V0ZW52KCJHQ09WX1BSRUZJWCIpOwogIHByZWZpeF9sZW5ndGggPSBnY292 X3ByZWZpeCA/IHN0cmxlbiAoZ2Nvdl9wcmVmaXgpIDogMDsKCgogIGlmIChwcmVmaXhfbGVuZ3Ro ICYmICgoKGdjb3ZfcHJlZml4W3ByZWZpeF9sZW5ndGggLSAxXSkgPT0gJy8nKSB8fCAoKChnY292 X3ByZWZpeFtwcmVmaXhfbGVuZ3RoIC0gMV0pID09ICdcXCcpICYmICgwKSkpKQogICAgcHJlZml4 X2xlbmd0aC0tOwoKCgogIGlmICghcHJlZml4X2xlbmd0aCAmJiBnZi0+c3RyaXApCiAgICB7CiAg ICAgIGdjb3ZfcHJlZml4ID0gIi4iOwogICAgICBwcmVmaXhfbGVuZ3RoID0gMTsKICAgIH0KCgog IGlmIChwcmVmaXhfbGVuZ3RoKQogICAgewogICAgICBnZi0+cHJlZml4ID0gKGNoYXIgKikgbWFs bG9jIChwcmVmaXhfbGVuZ3RoICsgMSk7CiAgICAgIGNoYXIgKnAgPSAoY2hhciAqKSBtZW1jcHkg KGdmLT5wcmVmaXgsIGdjb3ZfcHJlZml4LCBwcmVmaXhfbGVuZ3RoKTsKICAgICAgKihwICsgcHJl Zml4X2xlbmd0aCkgPSAnXDAnOwogICAgfQogIGVsc2UKICAgIGdmLT5wcmVmaXggPSAKIyAyNTYg Ii4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXItc3lzdGVtLmMiIDMgNAogICAg ICAgICAgICAgICAgKCh2b2lkICopMCkKIyAyNTYgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGli Z2Nvdi1kcml2ZXItc3lzdGVtLmMiCiAgICAgICAgICAgICAgICAgICAgOwp9CgoKCgpzdGF0aWMg aW50Cmdjb3ZfZXhpdF9vcGVuX2djZGFfZmlsZSAoc3RydWN0IGdjb3ZfaW5mbyAqZ2lfcHRyLAog ICAgIHN0cnVjdCBnY292X2ZpbGVuYW1lICpnZiwKICAgICBpbnQgbW9kZSkKewogIGludCBhcHBl bmRfc2xhc2ggPSAwOwogIGNvbnN0IGNoYXIgKmZuYW1lID0gZ2lfcHRyLT5maWxlbmFtZTsKCgoK ICBpZiAoZ2YtPnN0cmlwID4gMCkKICAgIHsKICAgICAgY29uc3QgY2hhciAqcHJvYmUgPSBmbmFt ZTsKICAgICAgaW50IGxldmVsOwoKCiAgICAgIGlmICgoKCgqcHJvYmUpID09ICcvJykgfHwgKCgo KnByb2JlKSA9PSAnXFwnKSAmJiAoMCkpKSkKIHByb2JlKys7CgoKCiAgICAgIGZvciAobGV2ZWwg PSBnZi0+c3RyaXA7ICpwcm9iZSAmJiBsZXZlbDsgcHJvYmUrKykKICAgICAgICBpZiAoKCgoKnBy b2JlKSA9PSAnLycpIHx8ICgoKCpwcm9iZSkgPT0gJ1xcJykgJiYgKDApKSkpCiAgICAgICAgICB7 CiAgICAgICAgICAgIGZuYW1lID0gcHJvYmU7CiAgICAgICAgICAgIGxldmVsLS07CiAgICAgICAg ICB9CiAgICB9CgoKICBpZiAoZ2YtPnByZWZpeCkKICAgIHsKCiAgICAgIGlmICgoMCkpCiBmbmFt ZSArPSAyOwoKICAgICAgaWYgKCEoKCgqZm5hbWUpID09ICcvJykgfHwgKCgoKmZuYW1lKSA9PSAn XFwnKSAmJiAoMCkpKSkKIGFwcGVuZF9zbGFzaCA9IDE7CiAgICB9CgogIHNpemVfdCBwcmVmaXhf bGVuZ3RoID0gZ2YtPnByZWZpeCA/IHN0cmxlbiAoZ2YtPnByZWZpeCkgOiAwOwogIGdmLT5maWxl bmFtZSA9IChjaGFyICopIG1hbGxvYyAocHJlZml4X2xlbmd0aCArIHN0cmxlbiAoZm5hbWUpICsg Mik7CiAgKmdmLT5maWxlbmFtZSA9ICdcMCc7CiAgaWYgKHByZWZpeF9sZW5ndGgpCiAgICBzdHJj YXQgKGdmLT5maWxlbmFtZSwgZ2YtPnByZWZpeCk7CiAgaWYgKGFwcGVuZF9zbGFzaCkKICAgICpn Zi0+ZmlsZW5hbWUrKyA9ICcvJzsKICBzdHJjYXQgKGdmLT5maWxlbmFtZSwgZm5hbWUpOwoKICBn Zi0+ZmlsZW5hbWUgPSByZXBsYWNlX2ZpbGVuYW1lX3ZhcmlhYmxlcyAoZ2YtPmZpbGVuYW1lKTsK CiAgaWYgKCFfX2djb3Zfb3BlbiAoZ2YtPmZpbGVuYW1lLCBtb2RlKSkKICAgIHsKCgogICAgICBp ZiAoY3JlYXRlX2ZpbGVfZGlyZWN0b3J5IChnZi0+ZmlsZW5hbWUpKQogICAgICAgIHsKICAgICAg ICAgIGZwcmludGYgKAojIDMxOSAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRyaXZl ci1zeXN0ZW0uYyIgMyA0CiAgICAgICAgICAgICAgICAgIHN0ZGVycgojIDMxOSAiLi4vLi4vLi4v Li4vZ2NjL2xpYmdjYy9saWJnY292LWRyaXZlci1zeXN0ZW0uYyIKICAgICAgICAgICAgICAgICAg ICAgICAgLCAicHJvZmlsaW5nOiVzOlNraXBcbiIsIGdmLT5maWxlbmFtZSk7CiAgICAgICAgICBy ZXR1cm4gLTE7CiAgICAgICAgfQogICAgICBpZiAoIV9fZ2Nvdl9vcGVuIChnZi0+ZmlsZW5hbWUs IG1vZGUpKQogICAgICAgIHsKICAgICAgICAgIGZwcmludGYgKAojIDMyNCAiLi4vLi4vLi4vLi4v Z2NjL2xpYmdjYy9saWJnY292LWRyaXZlci1zeXN0ZW0uYyIgMyA0CiAgICAgICAgICAgICAgICAg IHN0ZGVycgojIDMyNCAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRyaXZlci1zeXN0 ZW0uYyIKICAgICAgICAgICAgICAgICAgICAgICAgLCAicHJvZmlsaW5nOiVzOkNhbm5vdCBvcGVu XG4iLCBnZi0+ZmlsZW5hbWUpOwogICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0KICAgIH0K CiAgcmV0dXJuIDA7Cn0KIyAyNDMgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2 ZXIuYyIgMgoKCgoKCnN0YXRpYyBpbnQKbWVyZ2Vfb25lX2RhdGEgKGNvbnN0IGNoYXIgKmZpbGVu YW1lLAogIHN0cnVjdCBnY292X2luZm8gKmdpX3B0ciwKICBzdHJ1Y3QgZ2Nvdl9zdW1tYXJ5ICpz dW1tYXJ5KQp7CiAgZ2Nvdl91bnNpZ25lZF90IHRhZywgbGVuZ3RoOwogIHVuc2lnbmVkIHRfaXg7 CiAgaW50IGZfaXggPSAtMTsKICBpbnQgZXJyb3IgPSAwOwogIHN0cnVjdCBnY292X2ZuX2J1ZmZl ciAqKmZuX3RhaWwgPSAmZm5fYnVmZmVyOwoKICBsZW5ndGggPSBfX2djb3ZfcmVhZF91bnNpZ25l ZCAoKTsKICBpZiAoIWdjb3ZfdmVyc2lvbiAoZ2lfcHRyLCBsZW5ndGgsIGZpbGVuYW1lKSkKICAg IHJldHVybiAtMTsKCgogIF9fZ2Nvdl9yZWFkX3Vuc2lnbmVkICgpOwoKICBsZW5ndGggPSBfX2dj b3ZfcmVhZF91bnNpZ25lZCAoKTsKICBpZiAobGVuZ3RoICE9IGdpX3B0ci0+Y2hlY2tzdW0pCiAg ICB7CgogICAgICBnY292X2Vycm9yICgibGliZ2NvdiBwcm9maWxpbmcgZXJyb3I6JXM6IiAib3Zl cndyaXRpbmcgYW4gZXhpc3RpbmcgcHJvZmlsZSBkYXRhICIKICAgICJ3aXRoIGEgZGlmZmVyZW50 IGNoZWNrc3VtXG4iLCBmaWxlbmFtZSk7CiAgICAgIHJldHVybiAwOwogICAgfQoKICB0YWcgPSBf X2djb3ZfcmVhZF91bnNpZ25lZCAoKTsKICBpZiAodGFnICE9ICgoZ2Nvdl91bnNpZ25lZF90KTB4 YTEwMDAwMDApKQogICAgZ290byByZWFkX21pc21hdGNoOwogIGxlbmd0aCA9IF9fZ2Nvdl9yZWFk X3Vuc2lnbmVkICgpOwogICgodm9pZCkoIShsZW5ndGggPiAwKSA/IGFib3J0ICgpLCAwIDogMCkp OwogIF9fZ2Nvdl9yZWFkX3N1bW1hcnkgKHN1bW1hcnkpOwoKICB0YWcgPSBfX2djb3ZfcmVhZF91 bnNpZ25lZCAoKTsKCiAgZm9yIChmX2l4ID0gMDsgKHVuc2lnbmVkKWZfaXggIT0gZ2lfcHRyLT5u X2Z1bmN0aW9uczsKICAgICAgIGZfaXgrKywgdGFnID0gX19nY292X3JlYWRfdW5zaWduZWQgKCkp CiAgICB7CiAgICAgIGNvbnN0IHN0cnVjdCBnY292X2N0cl9pbmZvICpjaV9wdHI7CiAgICAgIGNv bnN0IHN0cnVjdCBnY292X2ZuX2luZm8gKmdmaV9wdHIgPSBnaV9wdHItPmZ1bmN0aW9uc1tmX2l4 XTsKCiAgICAgIGlmICh0YWcgIT0gKChnY292X3Vuc2lnbmVkX3QpMHgwMTAwMDAwMCkpCiAgICAg ICAgZ290byByZWFkX21pc21hdGNoOwoKICAgICAgbGVuZ3RoID0gX19nY292X3JlYWRfdW5zaWdu ZWQgKCk7CiAgICAgIGlmICghbGVuZ3RoKQoKCiAgICAgICAgY29udGludWU7CgogICAgICBpZiAo bGVuZ3RoICE9ICgzICogNCkpCiAgICAgICAgZ290byByZWFkX21pc21hdGNoOwoKICAgICAgaWYg KCFnZmlfcHRyIHx8IGdmaV9wdHItPmtleSAhPSBnaV9wdHIpCiAgICAgICAgewoKCgoKCiAgICAg ICAgICBmbl90YWlsID0gYnVmZmVyX2ZuX2RhdGEgKGZpbGVuYW1lLCBnaV9wdHIsIGZuX3RhaWws IGZfaXgpOwogICAgICAgICAgaWYgKCFmbl90YWlsKQogICAgICAgICAgICBnb3RvIHJlYWRfbWlz bWF0Y2g7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICBsZW5ndGggPSBfX2dj b3ZfcmVhZF91bnNpZ25lZCAoKTsKICAgICAgaWYgKGxlbmd0aCAhPSBnZmlfcHRyLT5pZGVudCkK ICAgICAgICBnb3RvIHJlYWRfbWlzbWF0Y2g7CgogICAgICBsZW5ndGggPSBfX2djb3ZfcmVhZF91 bnNpZ25lZCAoKTsKICAgICAgaWYgKGxlbmd0aCAhPSBnZmlfcHRyLT5saW5lbm9fY2hlY2tzdW0p CiAgICAgICAgZ290byByZWFkX21pc21hdGNoOwoKICAgICAgbGVuZ3RoID0gX19nY292X3JlYWRf dW5zaWduZWQgKCk7CiAgICAgIGlmIChsZW5ndGggIT0gZ2ZpX3B0ci0+Y2ZnX2NoZWNrc3VtKQog ICAgICAgIGdvdG8gcmVhZF9taXNtYXRjaDsKCiAgICAgIGNpX3B0ciA9IGdmaV9wdHItPmN0cnM7 CiAgICAgIGZvciAodF9peCA9IDA7IHRfaXggPCBHQ09WX0NPVU5URVJTOyB0X2l4KyspCiAgICAg ICAgewogICAgICAgICAgZ2Nvdl9tZXJnZV9mbiBtZXJnZSA9IGdpX3B0ci0+bWVyZ2VbdF9peF07 CgogICAgICAgICAgaWYgKCFtZXJnZSkKICAgICAgICAgICAgY29udGludWU7CgogICB0YWcgPSBf X2djb3ZfcmVhZF91bnNpZ25lZCAoKTsKICAgaW50IHJlYWRfbGVuZ3RoID0gKGludClfX2djb3Zf cmVhZF91bnNpZ25lZCAoKTsKICAgbGVuZ3RoID0gYWJzIChyZWFkX2xlbmd0aCk7CiAgIGlmICh0 YWcgIT0gKCgoZ2Nvdl91bnNpZ25lZF90KTB4MDFhMTAwMDApICsgKChnY292X3Vuc2lnbmVkX3Qp KHRfaXgpIDw8IDE3KSkKICAgICAgIHx8IChsZW5ndGggIT0gKChjaV9wdHItPm51bSkgKiAyICog NCkKICAgICYmIHRfaXggIT0gR0NPVl9DT1VOVEVSX1ZfVE9QTgogICAgJiYgdF9peCAhPSBHQ09W X0NPVU5URVJfVl9JTkRJUikpCiAgICAgZ290byByZWFkX21pc21hdGNoOwoKICAgaWYgKHJlYWRf bGVuZ3RoID4gMCkKICAgICAoKm1lcmdlKSAoY2lfcHRyLT52YWx1ZXMsIGNpX3B0ci0+bnVtKTsK ICAgY2lfcHRyKys7CiB9CiAgICAgIGlmICgoZXJyb3IgPSBfX2djb3ZfaXNfZXJyb3IgKCkpKQog Z290byByZWFkX2Vycm9yOwogICAgfQoKICBpZiAodGFnKQogICAgewogICAgcmVhZF9taXNtYXRj aDo7CiAgICAgIGdjb3ZfZXJyb3IgKCJsaWJnY292IHByb2ZpbGluZyBlcnJvcjolczoiICJNZXJn ZSBtaXNtYXRjaCBmb3IgJXMgJXVcbiIsCiAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBmX2l4 ID49IDAgPyAiZnVuY3Rpb24iIDogInN1bW1hcnkiLAogICAgICAgICAgICAgICAgICBmX2l4IDwg MCA/IC0xIC0gZl9peCA6IGZfaXgpOwogICAgICByZXR1cm4gLTE7CiAgICB9CiAgcmV0dXJuIDA7 CgpyZWFkX2Vycm9yOgogIGdjb3ZfZXJyb3IgKCJsaWJnY292IHByb2ZpbGluZyBlcnJvcjolczoi ICIlcyBtZXJnaW5nXG4iLCBmaWxlbmFtZSwKICAgICAgICAgICAgICBlcnJvciA8IDAgPyAiT3Zl cmZsb3ciOiAiRXJyb3IiKTsKICByZXR1cm4gLTE7Cn0KCgoKc3RhdGljIHZvaWQKZ2Nvdl9kdW1w X2hhbmRsZXIgKGNvbnN0IHZvaWQgKmRhdGEsCiAgICAgdW5zaWduZWQgbGVuZ3RoLAogICAgIHZv aWQgKmFyZyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpKQp7CiAgZ2Nvdl93cml0ZSAoZGF0 YSwgbGVuZ3RoKTsKfQoKCgpzdGF0aWMgdm9pZCAqCmdjb3ZfYWxsb2NhdGVfaGFuZGxlciAodW5z aWduZWQgc2l6ZSwgdm9pZCAqYXJnIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkpCnsKICBy ZXR1cm4gbWFsbG9jIChzaXplKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgdm9pZApkdW1wX3Vuc2ln bmVkIChnY292X3Vuc2lnbmVkX3Qgd29yZCwKICAgICAgICB2b2lkICgqZHVtcF9mbikgKGNvbnN0 IHZvaWQgKiwgdW5zaWduZWQsIHZvaWQgKiksCiAgICAgICAgdm9pZCAqYXJnKQp7CiAgKCpkdW1w X2ZuKSAoJndvcmQsIHNpemVvZiAod29yZCksIGFyZyk7Cn0KCgoKc3RhdGljIGlubGluZSB2b2lk CmR1bXBfY291bnRlciAoZ2Nvdl90eXBlIGNvdW50ZXIsCiAgICAgICB2b2lkICgqZHVtcF9mbikg KGNvbnN0IHZvaWQgKiwgdW5zaWduZWQsIHZvaWQgKiksCiAgICAgICB2b2lkICphcmcpCnsKICBk dW1wX3Vuc2lnbmVkICgoZ2Nvdl91bnNpZ25lZF90KWNvdW50ZXIsIGR1bXBfZm4sIGFyZyk7Cgog IGlmIChzaXplb2YgKGNvdW50ZXIpID4gc2l6ZW9mIChnY292X3Vuc2lnbmVkX3QpKQogICAgZHVt cF91bnNpZ25lZCAoKGdjb3ZfdW5zaWduZWRfdCkoY291bnRlciA+PiAzMiksIGR1bXBfZm4sIGFy Zyk7CiAgZWxzZQogICAgZHVtcF91bnNpZ25lZCAoMCwgZHVtcF9mbiwgYXJnKTsKfQoKCgpzdGF0 aWMgaW5saW5lIHZvaWQKX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKQpkdW1wX3N0cmluZyAo Y29uc3QgY2hhciAqc3RyaW5nLAogICAgICB2b2lkICgqZHVtcF9mbikgKGNvbnN0IHZvaWQgKiwg dW5zaWduZWQsIHZvaWQgKiksCiAgICAgIHZvaWQgKmFyZykKewogIHVuc2lnbmVkIGxlbmd0aCA9 IDA7CgogIGlmIChzdHJpbmcpCiAgICBsZW5ndGggPSBzdHJsZW4gKHN0cmluZykgKyAxOwoKICBk dW1wX3Vuc2lnbmVkIChsZW5ndGgsIGR1bXBfZm4sIGFyZyk7CiAgaWYgKHN0cmluZykKICAgICgq ZHVtcF9mbikgKHN0cmluZywgbGVuZ3RoLCBhcmcpOwp9CgoKCgoKc3RhdGljIHZvaWQKd3JpdGVf dG9wbl9jb3VudGVycyAoY29uc3Qgc3RydWN0IGdjb3ZfY3RyX2luZm8gKmNpX3B0ciwKICAgICAg IHVuc2lnbmVkIHRfaXgsCiAgICAgICBnY292X3Vuc2lnbmVkX3Qgbl9jb3VudHMsCiAgICAgICB2 b2lkICgqZHVtcF9mbikgKGNvbnN0IHZvaWQgKiwgdW5zaWduZWQsIHZvaWQgKiksCiAgICAgICB2 b2lkICooKmFsbG9jYXRlX2ZuKSh1bnNpZ25lZCwgdm9pZCAqKSwKICAgICAgIHZvaWQgKmFyZykK ewogIHVuc2lnbmVkIGNvdW50ZXJzID0gbl9jb3VudHMgLyAzOwogICgodm9pZCkoIShuX2NvdW50 cyAlIDMgPT0gMCkgPyBhYm9ydCAoKSwgMCA6IDApKTsKCgoKCgogIHN0YXRpYyB1bnNpZ25lZCAq bGlzdF9zaXplcyA9IAojIDQ1MCAiLi4vLi4vLi4vLi4vZ2NjL2xpYmdjYy9saWJnY292LWRyaXZl ci5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApCiMgNDUw ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVyLmMiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOwogIHN0YXRpYyB1bnNpZ25lZCBsaXN0X3NpemVfbGVuZ3Ro ID0gMDsKCiAgaWYgKGxpc3Rfc2l6ZXMgPT0gCiMgNDUzICIuLi8uLi8uLi8uLi9nY2MvbGliZ2Nj L2xpYmdjb3YtZHJpdmVyLmMiIDMgNAogICAgICAgICAgICAgICAgICAgKCh2b2lkICopMCkgCiMg NDUzICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVyLmMiCiAgICAgICAgICAg ICAgICAgICAgICAgIHx8IGNvdW50ZXJzID4gbGlzdF9zaXplX2xlbmd0aCkKICAgIHsKICAgICAg bGlzdF9zaXplX2xlbmd0aCA9ICgoNCAqIDEwMjQpID4gKDIgKiBjb3VudGVycykgPyAoNCAqIDEw MjQpIDogKDIgKiBjb3VudGVycykpOwoKICAgICAgbGlzdF9zaXplcwogPSAodW5zaWduZWQgKilt YWxsb2NfbW1hcCAobGlzdF9zaXplX2xlbmd0aCAqIHNpemVvZiAodW5zaWduZWQpKTsKCgoKICAg ICAgaWYgKGxpc3Rfc2l6ZXMgPT0gCiMgNDYyICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdj b3YtZHJpdmVyLmMiIDMgNAogICAgICAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApCiMgNDYy ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3YtZHJpdmVyLmMiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICkKIGxpc3Rfc2l6ZXMgPQogICAodW5zaWduZWQgKikoKmFsbG9jYXRlX2Zu KSAobGlzdF9zaXplX2xlbmd0aCAqIHNpemVvZiAodW5zaWduZWQpLAogICAgICAgICAgYXJnKTsK ICAgIH0KCiAgdW5zaWduZWQgcGFpcl90b3RhbCA9IDA7CgogIGZvciAodW5zaWduZWQgaSA9IDA7 IGkgPCBjb3VudGVyczsgaSsrKQogICAgewogICAgICBnY292X3R5cGUgc3RhcnQgPSBjaV9wdHIt PnZhbHVlc1szICogaSArIDJdOwogICAgICB1bnNpZ25lZCBzaXplcyA9IDA7CgogICAgICBmb3Ig KHN0cnVjdCBnY292X2t2cCAqbm9kZSA9IChzdHJ1Y3QgZ2Nvdl9rdnAgKikoaW50KXN0YXJ0Owog ICAgbm9kZSAhPSAKIyA0NzYgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXIu YyIgMyA0CiAgICAgICAgICAgKCh2b2lkICopMCkKIyA0NzYgIi4uLy4uLy4uLy4uL2djYy9saWJn Y2MvbGliZ2Nvdi1kcml2ZXIuYyIKICAgICAgICAgICAgICAgOyBub2RlID0gbm9kZS0+bmV4dCkK ICsrc2l6ZXM7CgogICAgICBwYWlyX3RvdGFsICs9IHNpemVzOwogICAgICBsaXN0X3NpemVzW2ld ID0gc2l6ZXM7CiAgICB9CgogIHVuc2lnbmVkIGRpc2tfc2l6ZSA9IDIgKiBjb3VudGVycyArIDIg KiBwYWlyX3RvdGFsOwogIGR1bXBfdW5zaWduZWQgKCgoKGdjb3ZfdW5zaWduZWRfdCkweDAxYTEw MDAwKSArICgoZ2Nvdl91bnNpZ25lZF90KSh0X2l4KSA8PCAxNykpLCBkdW1wX2ZuLCBhcmcpLAog IGR1bXBfdW5zaWduZWQgKCgoZGlza19zaXplKSAqIDIgKiA0KSwgZHVtcF9mbiwgYXJnKTsKCiAg Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50ZXJzOyBpKyspCiAgICB7CiAgICAgIGR1bXBf Y291bnRlciAoY2lfcHRyLT52YWx1ZXNbMyAqIGldLCBkdW1wX2ZuLCBhcmcpOwogICAgICBkdW1w X2NvdW50ZXIgKGxpc3Rfc2l6ZXNbaV0sIGR1bXBfZm4sIGFyZyk7CiAgICAgIGdjb3ZfdHlwZSBz dGFydCA9IGNpX3B0ci0+dmFsdWVzWzMgKiBpICsgMl07CgogICAgICB1bnNpZ25lZCBqID0gMDsK ICAgICAgZm9yIChzdHJ1Y3QgZ2Nvdl9rdnAgKm5vZGUgPSAoc3RydWN0IGdjb3Zfa3ZwICopKGlu dClzdGFydDsKICAgIGogPCBsaXN0X3NpemVzW2ldOyBub2RlID0gbm9kZS0+bmV4dCwgaisrKQog ewogICBkdW1wX2NvdW50ZXIgKG5vZGUtPnZhbHVlLCBkdW1wX2ZuLCBhcmcpOwogICBkdW1wX2Nv dW50ZXIgKG5vZGUtPmNvdW50LCBkdW1wX2ZuLCBhcmcpOwogfQogICAgfQp9CgoKCgoKc3RhdGlj IHZvaWQKd3JpdGVfb25lX2RhdGEgKGNvbnN0IHN0cnVjdCBnY292X2luZm8gKmdpX3B0ciwKICBj b25zdCBzdHJ1Y3QgZ2Nvdl9zdW1tYXJ5ICpwcmdfcCBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRf XykpLAogIHZvaWQgKCpkdW1wX2ZuKSAoY29uc3Qgdm9pZCAqLCB1bnNpZ25lZCwgdm9pZCAqKSwK ICB2b2lkICooKmFsbG9jYXRlX2ZuKSAodW5zaWduZWQsIHZvaWQgKiksCiAgdm9pZCAqYXJnKQp7 CiAgdW5zaWduZWQgZl9peDsKCiAgZHVtcF91bnNpZ25lZCAoKChnY292X3Vuc2lnbmVkX3QpMHg2 NzYzNjQ2MSksIGR1bXBfZm4sIGFyZyk7CiAgZHVtcF91bnNpZ25lZCAoKChnY292X3Vuc2lnbmVk X3QpMHg0MjMzMzAyMCksIGR1bXBfZm4sIGFyZyk7CiAgZHVtcF91bnNpZ25lZCAoZ2lfcHRyLT5z dGFtcCwgZHVtcF9mbiwgYXJnKTsKICBkdW1wX3Vuc2lnbmVkIChnaV9wdHItPmNoZWNrc3VtLCBk dW1wX2ZuLCBhcmcpOwoKCgogIF9fZ2Nvdl93cml0ZV9vYmplY3Rfc3VtbWFyeSAocHJnX3ApOwoK CgogIGZvciAoZl9peCA9IDA7IGZfaXggIT0gZ2lfcHRyLT5uX2Z1bmN0aW9uczsgZl9peCsrKQog ICAgewoKICAgICAgdW5zaWduZWQgYnVmZmVyZWQgPSAwOwoKICAgICAgY29uc3Qgc3RydWN0IGdj b3ZfZm5faW5mbyAqZ2ZpX3B0cjsKICAgICAgY29uc3Qgc3RydWN0IGdjb3ZfY3RyX2luZm8gKmNp X3B0cjsKICAgICAgZ2Nvdl91bnNpZ25lZF90IGxlbmd0aDsKICAgICAgdW5zaWduZWQgdF9peDsK CgogICAgICBpZiAoZm5fYnVmZmVyICYmIGZuX2J1ZmZlci0+Zm5faXggPT0gZl9peCkKICAgICAg ICB7CgogICAgICAgICAgYnVmZmVyZWQgPSAxOwogICAgICAgICAgZ2ZpX3B0ciA9ICZmbl9idWZm ZXItPmluZm87CiAgICAgICAgICBsZW5ndGggPSAoMyAqIDQpOwogICAgICAgIH0KICAgICAgZWxz ZQoKICAgICAgICB7CiAgICAgICAgICBnZmlfcHRyID0gZ2lfcHRyLT5mdW5jdGlvbnNbZl9peF07 CiAgICAgICAgICBpZiAoZ2ZpX3B0ciAmJiBnZmlfcHRyLT5rZXkgPT0gZ2lfcHRyKQogICAgICAg ICAgICBsZW5ndGggPSAoMyAqIDQpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgbGVu Z3RoID0gMDsKICAgICAgICB9CgogICAgICBkdW1wX3Vuc2lnbmVkICgoKGdjb3ZfdW5zaWduZWRf dCkweDAxMDAwMDAwKSwgZHVtcF9mbiwgYXJnKTsKICAgICAgZHVtcF91bnNpZ25lZCAobGVuZ3Ro LCBkdW1wX2ZuLCBhcmcpOwogICAgICBpZiAoIWxlbmd0aCkKICAgICAgICBjb250aW51ZTsKCiAg ICAgIGR1bXBfdW5zaWduZWQgKGdmaV9wdHItPmlkZW50LCBkdW1wX2ZuLCBhcmcpOwogICAgICBk dW1wX3Vuc2lnbmVkIChnZmlfcHRyLT5saW5lbm9fY2hlY2tzdW0sIGR1bXBfZm4sIGFyZyk7CiAg ICAgIGR1bXBfdW5zaWduZWQgKGdmaV9wdHItPmNmZ19jaGVja3N1bSwgZHVtcF9mbiwgYXJnKTsK CiAgICAgIGNpX3B0ciA9IGdmaV9wdHItPmN0cnM7CiAgICAgIGZvciAodF9peCA9IDA7IHRfaXgg PCBHQ09WX0NPVU5URVJTOyB0X2l4KyspCiAgICAgICAgewogICBnY292X3Bvc2l0aW9uX3Qgbl9j b3VudHM7CgogICBpZiAoIWdpX3B0ci0+bWVyZ2VbdF9peF0pCiAgICAgY29udGludWU7CgogICBu X2NvdW50cyA9IGNpX3B0ci0+bnVtOwoKICAgaWYgKHRfaXggPT0gR0NPVl9DT1VOVEVSX1ZfVE9Q TiB8fCB0X2l4ID09IEdDT1ZfQ09VTlRFUl9WX0lORElSKQogICAgIHdyaXRlX3RvcG5fY291bnRl cnMgKGNpX3B0ciwgdF9peCwgbl9jb3VudHMsIGR1bXBfZm4sIGFsbG9jYXRlX2ZuLAogICAgIGFy Zyk7CiAgIGVsc2UKICAgICB7CiAgICAgICBkdW1wX3Vuc2lnbmVkICgoKChnY292X3Vuc2lnbmVk X3QpMHgwMWExMDAwMCkgKyAoKGdjb3ZfdW5zaWduZWRfdCkodF9peCkgPDwgMTcpKSwgZHVtcF9m biwgYXJnKTsKICAgICAgIGlmIChhcmVfYWxsX2NvdW50ZXJzX3plcm8gKGNpX3B0cikpCgogIGR1 bXBfdW5zaWduZWQgKCgoLW5fY291bnRzKSAqIDIgKiA0KSwKICAgICAgICAgIGR1bXBfZm4sIGFy Zyk7CiAgICAgICBlbHNlCiAgewogICAgZHVtcF91bnNpZ25lZCAoKChuX2NvdW50cykgKiAyICog NCksCiAgICAgZHVtcF9mbiwgYXJnKTsKICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuX2Nv dW50czsgaSsrKQogICAgICBkdW1wX2NvdW50ZXIgKGNpX3B0ci0+dmFsdWVzW2ldLCBkdW1wX2Zu LCBhcmcpOwogIH0KICAgICB9CgogICBjaV9wdHIrKzsKIH0KCiAgICAgIGlmIChidWZmZXJlZCkK ICAgICAgICBmbl9idWZmZXIgPSBmcmVlX2ZuX2RhdGEgKGdpX3B0ciwgZm5fYnVmZmVyLCBHQ09W X0NPVU5URVJTKTsKCiAgICB9CgogIGR1bXBfdW5zaWduZWQgKDAsIGR1bXBfZm4sIGFyZyk7Cn0K IyA2MTMgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXIuYyIKc3RhdGljIHZv aWQKZHVtcF9vbmVfZ2NvdiAoc3RydWN0IGdjb3ZfaW5mbyAqZ2lfcHRyLCBzdHJ1Y3QgZ2Nvdl9m aWxlbmFtZSAqZ2YsCiAgICAgICAgdW5zaWduZWQgcnVuX2NvdW50ZWQgX19hdHRyaWJ1dGVfXyAo KF9fdW51c2VkX18pKSwKICAgICAgICBnY292X3R5cGUgcnVuX21heCBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpLCBpbnQgbW9kZSkKewogIHN0cnVjdCBnY292X3N1bW1hcnkgc3VtbWFyeSA9 IHt9OwogIGludCBlcnJvcjsKICBnY292X3Vuc2lnbmVkX3QgdGFnOwogIGZuX2J1ZmZlciA9IDA7 CgogIGVycm9yID0gZ2Nvdl9leGl0X29wZW5fZ2NkYV9maWxlIChnaV9wdHIsIGdmLCBtb2RlKTsK ICBpZiAoZXJyb3IgPT0gLTEpCiAgICByZXR1cm47CgogIHRhZyA9IF9fZ2Nvdl9yZWFkX3Vuc2ln bmVkICgpOwogIGlmICh0YWcpCiAgICB7CgogICAgICBpZiAodGFnICE9ICgoZ2Nvdl91bnNpZ25l ZF90KTB4Njc2MzY0NjEpKQogICAgICAgIHsKICAgZ2Nvdl9lcnJvciAoImxpYmdjb3YgcHJvZmls aW5nIGVycm9yOiVzOiIgIk5vdCBhIGdjb3YgZGF0YSBmaWxlXG4iLAogICAgICAgIGdmLT5maWxl bmFtZSk7CiAgICAgICAgICBnb3RvIHJlYWRfZmF0YWw7CiAgICAgICAgfQogICAgICBlcnJvciA9 IG1lcmdlX29uZV9kYXRhIChnZi0+ZmlsZW5hbWUsIGdpX3B0ciwgJnN1bW1hcnkpOwogICAgICBp ZiAoZXJyb3IgPT0gLTEpCiAgICAgICAgZ290byByZWFkX2ZhdGFsOwogICAgfQoKICBfX2djb3Zf cmV3cml0ZSAoKTsKCgogIGlmICghcnVuX2NvdW50ZWQpCiAgICB7CiAgICAgIHN1bW1hcnkucnVu cysrOwogICAgICBzdW1tYXJ5LnN1bV9tYXggKz0gcnVuX21heDsKICAgIH0KCgoKCiAgd3JpdGVf b25lX2RhdGEgKGdpX3B0ciwgJnN1bW1hcnksIGdjb3ZfZHVtcF9oYW5kbGVyLCBnY292X2FsbG9j YXRlX2hhbmRsZXIsCiAgICAKIyA2NTUgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1k cml2ZXIuYyIgMyA0CiAgICgodm9pZCAqKTApCiMgNjU1ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2Nj L2xpYmdjb3YtZHJpdmVyLmMiCiAgICAgICApOwoKCnJlYWRfZmF0YWw6OwogIHdoaWxlIChmbl9i dWZmZXIpCiAgICBmbl9idWZmZXIgPSBmcmVlX2ZuX2RhdGEgKGdpX3B0ciwgZm5fYnVmZmVyLCBH Q09WX0NPVU5URVJTKTsKCiAgaWYgKChlcnJvciA9IF9fZ2Nvdl9jbG9zZSAoKSkpCiAgICBnY292 X2Vycm9yICgoZXJyb3IgPCAwID8gImxpYmdjb3YgcHJvZmlsaW5nIGVycm9yOiVzOiIgIk92ZXJm bG93IHdyaXRpbmdcbiIKICAgOiAibGliZ2NvdiBwcm9maWxpbmcgZXJyb3I6JXM6IiAiRXJyb3Ig d3JpdGluZ1xuIiksIGdmLT5maWxlbmFtZSk7Cn0KCgoKCgoKCnN0YXRpYwoKdm9pZApnY292X2Rv X2R1bXAgKHN0cnVjdCBnY292X2luZm8gKmxpc3QsIGludCBydW5fY291bnRlZCwgaW50IG1vZGUp CnsKICBzdHJ1Y3QgZ2Nvdl9pbmZvICpnaV9wdHI7CiAgc3RydWN0IGdjb3ZfZmlsZW5hbWUgZ2Y7 CgoKICBnY292X3R5cGUgcnVuX21heCA9IDA7CiAgZm9yIChnaV9wdHIgPSBsaXN0OyBnaV9wdHI7 IGdpX3B0ciA9IGdpX3B0ci0+bmV4dCkKICAgIGZvciAodW5zaWduZWQgZl9peCA9IDA7ICh1bnNp Z25lZClmX2l4ICE9IGdpX3B0ci0+bl9mdW5jdGlvbnM7IGZfaXgrKykKICAgICAgewogY29uc3Qg c3RydWN0IGdjb3ZfY3RyX2luZm8gKmNpbmZvCiAgID0gJmdpX3B0ci0+ZnVuY3Rpb25zW2ZfaXhd LT5jdHJzW0dDT1ZfQ09VTlRFUl9BUkNTXTsKCiBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2lu Zm8tPm51bTsgaSsrKQogICBpZiAocnVuX21heCA8IGNpbmZvLT52YWx1ZXNbaV0pCiAgICAgcnVu X21heCA9IGNpbmZvLT52YWx1ZXNbaV07CiAgICAgIH0KCiAgYWxsb2NhdGVfZmlsZW5hbWVfc3Ry dWN0ICgmZ2YpOwoKCiAgZm9yIChnaV9wdHIgPSBsaXN0OyBnaV9wdHI7IGdpX3B0ciA9IGdpX3B0 ci0+bmV4dCkKICAgIHsKICAgICAgZHVtcF9vbmVfZ2NvdiAoZ2lfcHRyLCAmZ2YsIHJ1bl9jb3Vu dGVkLCBydW5fbWF4LCBtb2RlKTsKICAgICAgZnJlZSAoZ2YuZmlsZW5hbWUpOwogICAgfQoKICBm cmVlIChnZi5wcmVmaXgpOwp9CiMgNzE2ICIuLi8uLi8uLi8uLi9nY2MvbGliZ2NjL2xpYmdjb3Yt ZHJpdmVyLmMiCnZvaWQKX19nY292X2R1bXBfb25lIChzdHJ1Y3QgZ2Nvdl9yb290ICpyb290KQp7 CiAgaWYgKHJvb3QtPmR1bXBlZCkKICAgIHJldHVybjsKCiAgZ2Nvdl9kb19kdW1wIChyb290LT5s aXN0LCByb290LT5ydW5fY291bnRlZCwgMCk7CgogIHJvb3QtPmR1bXBlZCA9IDE7CiAgcm9vdC0+ cnVuX2NvdW50ZWQgPSAxOwp9CgoKc3RydWN0IGdjb3Zfcm9vdCBfX2djb3Zfcm9vdDsKCgpzdHJ1 Y3QgZ2Nvdl9tYXN0ZXIgX19nY292X21hc3RlciA9CiAgeygoZ2Nvdl91bnNpZ25lZF90KTB4NDIz MzMwMjApLCAwfTsKCgpzdHJ1Y3QgZ2Nvdl9rdnAgKl9fZ2Nvdl9rdnBfZHluYW1pY19wb29sOwoK CnVuc2lnbmVkIF9fZ2Nvdl9rdnBfZHluYW1pY19wb29sX2luZGV4OwoKCnVuc2lnbmVkIF9fZ2Nv dl9rdnBfZHluYW1pY19wb29sX3NpemU7Cgp2b2lkCl9fZ2Nvdl9leGl0ICh2b2lkKQp7CiAgX19n Y292X2R1bXBfb25lICgmX19nY292X3Jvb3QpOwogIGlmIChfX2djb3Zfcm9vdC5uZXh0KQogICAg X19nY292X3Jvb3QubmV4dC0+cHJldiA9IF9fZ2Nvdl9yb290LnByZXY7CiAgaWYgKF9fZ2Nvdl9y b290LnByZXYpCiAgICBfX2djb3Zfcm9vdC5wcmV2LT5uZXh0ID0gX19nY292X3Jvb3QubmV4dDsK ICBlbHNlCiAgICBfX2djb3ZfbWFzdGVyLnJvb3QgPSBfX2djb3Zfcm9vdC5uZXh0OwoKICBnY292 X2Vycm9yX2V4aXQgKCk7Cn0KCgoKCnZvaWQKX19nY292X2luaXQgKHN0cnVjdCBnY292X2luZm8g KmluZm8pCnsKICBpZiAoIWluZm8tPnZlcnNpb24gfHwgIWluZm8tPm5fZnVuY3Rpb25zKQogICAg cmV0dXJuOwogIGlmIChnY292X3ZlcnNpb24gKGluZm8sIGluZm8tPnZlcnNpb24sIDApKQogICAg ewogICAgICBpZiAoIV9fZ2Nvdl9yb290Lmxpc3QpCiB7CgogICBpZiAoZ2Nvdl92ZXJzaW9uICgK IyA3NzEgIi4uLy4uLy4uLy4uL2djYy9saWJnY2MvbGliZ2Nvdi1kcml2ZXIuYyIgMyA0CiAgICAg ICAgICAgICAgICAgICAgKCh2b2lkICopMCkKIyA3NzEgIi4uLy4uLy4uLy4uL2djYy9saWJnY2Mv bGliZ2Nvdi1kcml2ZXIuYyIKICAgICAgICAgICAgICAgICAgICAgICAgLCBfX2djb3ZfbWFzdGVy LnZlcnNpb24sICI8bWFzdGVyPiIpKQogICAgIHsKICAgICAgIF9fZ2Nvdl9yb290Lm5leHQgPSBf X2djb3ZfbWFzdGVyLnJvb3Q7CiAgICAgICBpZiAoX19nY292X21hc3Rlci5yb290KQogIF9fZ2Nv dl9tYXN0ZXIucm9vdC0+cHJldiA9ICZfX2djb3Zfcm9vdDsKICAgICAgIF9fZ2Nvdl9tYXN0ZXIu cm9vdCA9ICZfX2djb3Zfcm9vdDsKICAgICB9CiB9CgogICAgICBpbmZvLT5uZXh0ID0gX19nY292 X3Jvb3QubGlzdDsKICAgICAgX19nY292X3Jvb3QubGlzdCA9IGluZm87CiAgICB9Cn0K --000000000000e9c3cd05ec5a607e--