From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E3990C07E9E for ; Mon, 5 Jul 2021 23:36:08 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6E5EB61975 for ; Mon, 5 Jul 2021 23:36:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6E5EB61975 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:56990 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m0Y8F-00064X-Iw for qemu-devel@archiver.kernel.org; Mon, 05 Jul 2021 19:36:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35376) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m0Y6v-0003CO-Au for qemu-devel@nongnu.org; Mon, 05 Jul 2021 19:34:45 -0400 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:37352) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1m0Y6s-0004a6-07 for qemu-devel@nongnu.org; Mon, 05 Jul 2021 19:34:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1625528082; x=1657064082; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wPe6v1QEn5+iu20c5agcaLVNwNUrXG5j/czjTjfvoQk=; b=UESva1BlxPJAyhxEeXZreFklzE8romn3Hy6dHHttejZNq8pB/I/qHGHC KpEhwITmt+RiO5+Quje3njhQOJQOPUH9ywLIg+24/VfXm5rt62iREboF2 cGUPM88rQAF3G70/8kZXczynBKwOmaMx6CH/fM8eSsrFM26yOoMs3n19a Q=; Received: from unknown (HELO ironmsg03-sd.qualcomm.com) ([10.53.140.143]) by alexa-out-sd-01.qualcomm.com with ESMTP; 05 Jul 2021 16:34:38 -0700 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg03-sd.qualcomm.com with ESMTP; 05 Jul 2021 16:34:38 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id E2224101B; Mon, 5 Jul 2021 18:34:37 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH 07/20] Hexagon HVX (target/hexagon) import macro definitions Date: Mon, 5 Jul 2021 18:34:21 -0500 Message-Id: <1625528074-19440-8-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1625528074-19440-1-git-send-email-tsimpson@quicinc.com> References: <1625528074-19440-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=199.106.114.38; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-01.qualcomm.com X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ale@rev.ng, peter.maydell@linaro.org, bcain@quicinc.com, richard.henderson@linaro.org, tsimpson@quicinc.com, philmd@redhat.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" SW1wb3J0ZWQgZnJvbSB0aGUgSGV4YWdvbiBhcmNoaXRlY3R1cmUgbGlicmFyeQogICAgaW1wb3J0 ZWQvYWxsZXh0X21hY3Jvcy5kZWYgICAgICAgVG9wIGxldmVsIG1hY3JvIGluY2x1ZGUgZm9yIGFs bCBleHRlbnNpb25zCiAgICBpbXBvcnRlZC9tYWNyb3MuZGVmICAgICAgICAgICAgICBTY2FsYXIg Y29yZSBtYWNyb3MgKHNvbWUgSFZYIGhlcmUpCiAgICBpbXBvcnRlZC9tbXZlYy9tYWNyb3MuZGVm ICAgICAgICBIVlggbWFjcm8gZGVmaW5pdGlvbnMKVGhlIG1hY3JvIGRlZmluaXRpb24gZmlsZXMg c3BlY2lmeSBpbnN0cnVjdGlvbiBhdHRyaWJ1dGVzIHRoYXQgYXJlIGFwcGxpZWQKdG8gZWFjaCBp bnN0cnVjdGlvbiB0aGF0IHJldmVyZW5jZXMgdGhlIG1hY3JvLgoKU2lnbmVkLW9mZi1ieTogVGF5 bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgotLS0KIHRhcmdldC9oZXhhZ29uL2lt cG9ydGVkL2FsbGV4dF9tYWNyb3MuZGVmIHwgIDI1ICsKIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVk L21hY3Jvcy5kZWYgICAgICAgIHwgIDg4ICsrKysKIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21t dmVjL21hY3Jvcy5kZWYgIHwgODQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBm aWxlcyBjaGFuZ2VkLCA5NTUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdl dC9oZXhhZ29uL2ltcG9ydGVkL2FsbGV4dF9tYWNyb3MuZGVmCiBjcmVhdGUgbW9kZSAxMDA3NTUg dGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbW12ZWMvbWFjcm9zLmRlZgoKZGlmZiAtLWdpdCBhL3Rh cmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGV4dF9tYWNyb3MuZGVmIGIvdGFyZ2V0L2hleGFnb24v aW1wb3J0ZWQvYWxsZXh0X21hY3Jvcy5kZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uOWM5MTE5OQotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVk L2FsbGV4dF9tYWNyb3MuZGVmCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMp IDIwMTktMjAyMSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJl c2VydmVkLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg b3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8K KworLyoKKyAqIFRvcCBsZXZlbCBmaWxlIGZvciBhbGwgaW5zdHJ1Y3Rpb24gc2V0IGV4dGVuc2lv bnMKKyAqLworI2RlZmluZSBFWFROQU1FIG1tdmVjCisjZGVmaW5lIEVYVFNUUiAibW12ZWMiCisj aW5jbHVkZSAibW12ZWMvbWFjcm9zLmRlZiIKKyN1bmRlZiBFWFROQU1FCisjdW5kZWYgRVhUU1RS CmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9tYWNyb3MuZGVmIGIvdGFyZ2V0 L2hleGFnb24vaW1wb3J0ZWQvbWFjcm9zLmRlZgppbmRleCAzMmVkM2JmLi5lMjNmOTE1IDEwMDc1 NQotLS0gYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9tYWNyb3MuZGVmCisrKyBiL3RhcmdldC9o ZXhhZ29uL2ltcG9ydGVkL21hY3Jvcy5kZWYKQEAgLTE3Nyw2ICsxNzcsMTIgQEAgREVGX01BQ1JP KAogKQogCiBERUZfTUFDUk8oCisgICAgZlZTQVRVVkFMTiwKKyAgICAoeyAoKFZBTCkgPCAwKSA/ IDAgOiAoKDFMTDw8KE4pKS0xKTt9KSwKKyAgICAoKQorKQorCitERUZfTUFDUk8oCiAgICAgZlNB VFVWQUxOLAogICAgICh7ZlNFVF9PVkVSRkxPVygpOyAoKFZBTCkgPCAwKSA/IDAgOiAoKDFMTDw8 KE4pKS0xKTt9KSwKICAgICAoKQpAQCAtMTg5LDYgKzE5NSwxMiBAQCBERUZfTUFDUk8oCiApCiAK IERFRl9NQUNSTygKKyAgICBmVlNBVFZBTE4sCisgICAgKHsoKFZBTCkgPCAwKSA/ICgtKDFMTDw8 KChOKS0xKSkpIDogKCgxTEw8PCgoTiktMSkpLTEpO30pLAorICAgICgpCispCisKK0RFRl9NQUNS TygKICAgICBmWlhUTiwgLyogbWFjcm8gbmFtZSAqLwogICAgICgoVkFMKSAmICgoMUxMPDwoTikp LTEpKSwKICAgICAvKiBhdHRyaWJzICovCkBAIC0yMDUsNiArMjE3LDExIEBAIERFRl9NQUNSTygK ICAgICAoKGZTWFROKE4sNjQsVkFMKSA9PSAoVkFMKSkgPyAoVkFMKSA6IGZTQVRWQUxOKE4sVkFM KSksCiAgICAgKCkKICkKK0RFRl9NQUNSTygKKyAgICBmVlNBVE4sCisgICAgKChmU1hUTihOLDY0 LFZBTCkgPT0gKFZBTCkpID8gKFZBTCkgOiBmVlNBVFZBTE4oTixWQUwpKSwKKyAgICAoKQorKQog CiBERUZfTUFDUk8oCiAgICAgZkFERFNBVDY0LApAQCAtMjM1LDYgKzI1MiwxMiBAQCBERUZfTUFD Uk8oCiApCiAKIERFRl9NQUNSTygKKyAgICBmVlNBVFVOLAorICAgICgoZlpYVE4oTiw2NCxWQUwp ID09IChWQUwpKSA/IChWQUwpIDogZlZTQVRVVkFMTihOLFZBTCkpLAorICAgICgpCispCisKK0RF Rl9NQUNSTygKICAgICBmU0FUVU4sCiAgICAgKChmWlhUTihOLDY0LFZBTCkgPT0gKFZBTCkpID8g KFZBTCkgOiBmU0FUVVZBTE4oTixWQUwpKSwKICAgICAoKQpAQCAtMjU0LDYgKzI3NywxOSBAQCBE RUZfTUFDUk8oCiApCiAKIERFRl9NQUNSTygKKyAgICBmVlNBVEgsCisgICAgKGZWU0FUTigxNixW QUwpKSwKKyAgICAoKQorKQorCitERUZfTUFDUk8oCisgICAgZlZTQVRVSCwKKyAgICAoZlZTQVRV TigxNixWQUwpKSwKKyAgICAoKQorKQorCisKK0RFRl9NQUNSTygKICAgICBmU0FUVUIsCiAgICAg KGZTQVRVTig4LFZBTCkpLAogICAgICgpCkBAIC0yNjUsNiArMzAxLDIwIEBAIERFRl9NQUNSTygK ICkKIAogCitERUZfTUFDUk8oCisgICAgZlZTQVRVQiwKKyAgICAoZlZTQVRVTig4LFZBTCkpLAor ICAgICgpCispCitERUZfTUFDUk8oCisgICAgZlZTQVRCLAorICAgIChmVlNBVE4oOCxWQUwpKSwK KyAgICAoKQorKQorCisKKworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KIC8qIGltbWVkaWF0ZSBleHRlbnNpb24gICAgICAgICAgICAgICAqLwogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC01NTcsNiArNjA3LDE4IEBAIERFRl9NQUNS TygKICkKIAogREVGX01BQ1JPKAorICAgIGZDQVNUMl8ycywgLyogbWFjcm8gbmFtZSAqLworICAg ICgoc2l6ZTJzX3QpKEEpKSwKKyAgICAvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKK0RF Rl9NQUNSTygKKyAgICBmQ0FTVDJfMnUsIC8qIG1hY3JvIG5hbWUgKi8KKyAgICAoKHNpemUydV90 KShBKSksCisgICAgLyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorCitERUZfTUFDUk8oCiAg ICAgZkNBU1Q0XzRzLCAvKiBtYWNybyBuYW1lICovCiAgICAgKChzaXplNHNfdCkoQSkpLAogICAg IC8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KQEAgLTg3Niw2ICs5MzgsMTEgQEAgREVGX01BQ1JP KAogICAgICgoKHNpemU4c190KShBKSk8PE4pLAogICAgIC8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMg Ki8KICkKK0RFRl9NQUNSTygKKyAgICBmVlNBVFcsIC8qIHNhdHVyYXRpbmcgdG8gMzItYml0cyov CisgICAgZlZTQVROKDMyLCgobG9uZyBsb25nKUEpKSwKKyAgICAoKQorKQogCiBERUZfTUFDUk8o CiAgICAgZlNBVFcsIC8qIHNhdHVyYXRpbmcgdG8gMzItYml0cyovCkBAIC04ODQsNiArOTUxLDEy IEBAIERFRl9NQUNSTygKICkKIAogREVGX01BQ1JPKAorICAgIGZWU0FULCAvKiBzYXR1cmF0aW5n IHRvIDMyLWJpdHMqLworICAgIGZWU0FUTigzMiwoQSkpLAorICAgICgpCispCisKK0RFRl9NQUNS TygKICAgICBmU0FULCAvKiBzYXR1cmF0aW5nIHRvIDMyLWJpdHMqLwogICAgIGZTQVROKDMyLChB KSksCiAgICAgKCkKQEAgLTEzODksNiArMTQ2MiwxMSBAQCBERUZfTUFDUk8oZlNFVEJJVFMsCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIFVzZWQgZm9yIHBhcml0 eSwgZXRjLi4uLi4uLi4gICAgICAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCitERUZfTUFDUk8oZkNPVU5UT05FU18yLAorICAgIGNvdW50X29uZXNfMihWQUwpLAor ICAgIC8qIG5vdGhpbmcgKi8KKykKKwogREVGX01BQ1JPKGZDT1VOVE9ORVNfNCwKICAgICBjb3Vu dF9vbmVzXzQoVkFMKSwKICAgICAvKiBub3RoaW5nICovCkBAIC0xNDE5LDYgKzE0OTcsMTEgQEAg REVGX01BQ1JPKGZDTDFfNCwKICAgICAvKiBub3RoaW5nICovCiApCiAKK0RFRl9NQUNSTyhmQ0wx XzIsCisgICAgY291bnRfbGVhZGluZ19vbmVzXzIoVkFMKSwKKyAgICAvKiBub3RoaW5nICovCisp CisKIERFRl9NQUNSTyhmSU5URVJMRUFWRSwKICAgICBpbnRlcmxlYXZlKE9ERCxFVkVOKSwKICAg ICAvKiBub3RoaW5nICovCkBAIC0xNTc2LDMgKzE2NTksOCBAQCBERUZfTUFDUk8oZkJSQU5DSF9T UEVDVUxBVEVfU1RBTEwsCiAgICAgfSwKICAgICAoKQogKQorCitERUZfTUFDUk8oSVYxREVBRCwK KyAgICAsCisgICAgKCkKKykKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21t dmVjL21hY3Jvcy5kZWYgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9tbXZlYy9tYWNyb3MuZGVm Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjdlNTQzOGEKLS0tIC9kZXYvbnVs bAorKysgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9tbXZlYy9tYWNyb3MuZGVmCkBAIC0wLDAg KzEsODQyIEBACisvKgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjEgUXVhbGNvbW0gSW5ub3Zh dGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg KiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKK0RFRl9NQUNSTyhmRFVNUFEsCisJZG8g eworCQlwcmludGYoU1RSICI6IiAjUkVHICI6IDB4JTAxNmxseFxuIixSRUcudWRbMF0pOworCX0g d2hpbGUgKDApLAorCSgpCispCisKK0RFRl9NQUNSTyhmVVNFX0xPT0tVUF9BRERSRVNTX0JZX1JF ViwKKwlQUk9DLT5hcmNoX3Byb2Nfb3B0aW9ucy0+bW12ZWNfdXNlX2Z1bGxfdmFfZm9yX2xvb2t1 cCwKKwkoKQorKQorCitERUZfTUFDUk8oZlVTRV9MT09LVVBfQUREUkVTUywKKwkxLAorCSgpCisp CisKK0RFRl9NQUNSTyhmTk9UUSwKKwkoe21tcXJlZ190IF9yZXQgPSB7MH07IGludCBfaV87IGZv ciAoX2lfID0gMDsgX2lfIDwgZlZFQ1NJWkUoKS82NDsgX2lfKyspIF9yZXQudWRbX2lfXSA9IH5W QUwudWRbX2lfXTsgX3JldDt9KSwKKwkoKQorKQorCitERUZfTUFDUk8oZkdFVFFCSVRTLAorCSgo TUFTSykgJiAoUkVHLndbKEJJVE5PKT4+NV0gPj4gKChCSVROTykgJiAweDFmKSkpLAorCSgpCisp CisKK0RFRl9NQUNSTyhmR0VUUUJJVCwKKwlmR0VUUUJJVFMoUkVHLDEsMSxCSVROTyksCisJKCkK KykKKworREVGX01BQ1JPKGZHRU5NQVNLVywKKwkoKChmR0VUUUJJVChRUkVHLChJRFgqNCswKSkg PyAweEZGIDogMHgwKSA8PCAwKQorCXwoKGZHRVRRQklUKFFSRUcsKElEWCo0KzEpKSA/IDB4RkYg OiAweDApIDw8IDgpCisJfCgoZkdFVFFCSVQoUVJFRywoSURYKjQrMikpID8gMHhGRiA6IDB4MCkg PDwgMTYpCisJfCgoZkdFVFFCSVQoUVJFRywoSURYKjQrMykpID8gMHhGRiA6IDB4MCkgPDwgMjQp KSwKKwkoKQorKQorREVGX01BQ1JPKGZHRVQxMEJJVCwKKwl7CisJCUNPRSA9ICgoKCgoZkdFVFVC WVRFKDMsVkFMKSA+PiAoMiAqIFBPUykpICYgMykgPDwgOCkgfCBmR0VUVUJZVEUoUE9TLFZBTCkp IDw8IDYpOworCQlDT0UgPj49IDY7CisJfSwKKwkoKQorKQorCitERUZfTUFDUk8oZlZNQVgsCisJ KFg+WSkgPyBYIDogWSwKKwkoKQorKQorCisKK0RFRl9NQUNSTyhmR0VUTklCQkxFLAorICAgICgg ZlNYVE4oNCw4LChTUkMgPj4gKDQqSURYKSkgJiAweEYpICksCisgICAgKCkKKykKKworREVGX01B Q1JPKGZHRVRDUlVNQiwKKyAgICAoIGZTWFROKDIsOCwoU1JDID4+ICgyKklEWCkpICYgMHgzKSAp LAorICAgICgpCispCisKK0RFRl9NQUNSTyhmR0VUQ1JVTUJfU1lNTUVUUklDLAorICAgICggKGZH RVRDUlVNQihJRFgsU1JDKT49MCA/ICgyLWZHRVRDUlVNQihJRFgsU1JDKSkgOiBmR0VUQ1JVTUIo SURYLFNSQykgKSApLAorICAgICgpCispCisKKyNkZWZpbmUgWkVST19PRkZTRVRfMkIgKworCitE RUZfTUFDUk8oZkdFTk1BU0tILAorCSgoKGZHRVRRQklUKFFSRUcsKElEWCoyKzApKSA/IDB4RkYg OiAweDApIDw8IDApCisJfCgoZkdFVFFCSVQoUVJFRywoSURYKjIrMSkpID8gMHhGRiA6IDB4MCkg PDwgOCkpLAorCSgpCispCisKK0RFRl9NQUNSTyhmR0VUTUFTS1csCisJKFZSRUcud1tJRFhdICYg ZkdFTk1BU0tXKChRUkVHKSxJRFgpKSwKKwkoKQorKQorCitERUZfTUFDUk8oZkdFVE1BU0tILAor CShWUkVHLmhbSURYXSAmIGZHRU5NQVNLSCgoUVJFRyksSURYKSksCisJKCkKKykKKworREVGX01B Q1JPKGZDT05ETUFTSzgsCisJKGZHRVRRQklUKFFSRUcsSURYKSA/IChZRVNWQUwpIDogKE5PVkFM KSksCisJKCkKKykKKworREVGX01BQ1JPKGZDT05ETUFTSzE2LAorCSgoZkdFTk1BU0tIKFFSRUcs SURYKSAmIChZRVNWQUwpKSB8IChmR0VOTUFTS0goZk5PVFEoUVJFRyksSURYKSAmIChOT1ZBTCkp KSwKKwkoKQorKQorCitERUZfTUFDUk8oZkNPTkRNQVNLMzIsCisJKChmR0VOTUFTS1coUVJFRyxJ RFgpICYgKFlFU1ZBTCkpIHwgKGZHRU5NQVNLVyhmTk9UUShRUkVHKSxJRFgpICYgKE5PVkFMKSkp LAorCSgpCispCisKKworREVGX01BQ1JPKGZTRVRRQklUUywKKwlkbyB7CisJCXNpemU0dV90IF9f VE1QID0gKFZBTCk7CisJCVJFRy53WyhCSVROTyk+PjVdICY9IH4oKE1BU0spIDw8ICgoQklUTk8p ICYgMHgxZikpOworCQlSRUcud1soQklUTk8pPj41XSB8PSAoKChfX1RNUCkgJiAoTUFTSykpIDw8 ICgoQklUTk8pICYgMHgxZikpOworCX0gd2hpbGUgKDApLAorCSgpCispCisKK0RFRl9NQUNSTyhm U0VUUUJJVCwKKwlmU0VUUUJJVFMoUkVHLDEsMSxCSVROTyxWQUwpLAorCSgpCispCisKK0RFRl9N QUNSTyhmVkJZVEVTLAorCShmVkVDU0laRSgpKSwKKwkoKQorKQorCitERUZfTUFDUk8oZlZIQUxW RVMsCisJKGZWRUNTSVpFKCkvMiksCisJKCkKKykKKworREVGX01BQ1JPKGZWV09SRFMsCisJKGZW RUNTSVpFKCkvNCksCisJKCkKKykKKworREVGX01BQ1JPKGZWRFdPUkRTLAorCShmVkVDU0laRSgp LzgpLAorCSgpCispCisKK0RFRl9NQUNSTyhmVkFMSUdOLAorICAgICggQUREUiA9IEFERFIgJiB+ KExPRzJfQUxJR05NRU5ULTEpKSwKKyAgICAoKQorKQorCitERUZfTUFDUk8oZlZMQVNUQllURSwK KyAgICAoIEFERFIgPSBBRERSIHwgKExPRzJfQUxJR05NRU5ULTEpKSwKKyAgICAoKQorKQorCisK K0RFRl9NQUNSTyhmVkVMRU0sCisgICAgKChmVkVDU0laRSgpKjgpL1dJRFRIKSwKKyAgICAoKQor KQorCitERUZfTUFDUk8oZlZFQ0xPR1NJWkUsCisgICAgKG1tdmVjX2N1cnJlbnRfdmVjbG9nc2l6 ZSh0aHJlYWQpKSwKKyAgICAoKQorKQorCitERUZfTUFDUk8oZlZFQ1NJWkUsCisgICAgKDE8PGZW RUNMT0dTSVpFKCkpLAorICAgICgpCispCisKK0RFRl9NQUNSTyhmU1dBUEIsCisgICAgeworCQlz aXplMXVfdCB0bXAgPSBBOworCQlBID0gQjsKKwkJQiA9IHRtcDsKKwl9LAorICAgIC8qIE5PVEhJ TkcgKi8KKykKKworREVGX01BQ1JPKAorCWZWWkVSTywKKwltbXZlY196ZXJvX3ZlY3RvcigpLAor CSgpCispCisKK0RFRl9NQUNSTygKKyAgICBmTkVXVlJFRywKKyAgICAoKFRIUkVBRDJTVFJVQ1Qt PlZSZWdzX3VwZGF0ZWQgJiAoKChWUmVnTWFzaykxKTw8Vk5VTSkpID8gVEhSRUFEMlNUUlVDVC0+ ZnV0dXJlX1ZSZWdzW1ZOVU1dIDogbW12ZWNfemVyb192ZWN0b3IoKSksCisgICAgKEFfRE9UTkVX VkFMVUUsQV9SRVNUUklDVF9TTE9UME9OTFkpCispCisKK0RFRl9NQUNSTygKKwlmVl9BTF9DSEVD SywKKwlpZiAoKEVBKSAmIChNQVNLKSkgeworCQl3YXJuKCJhbGlnbmluZyBtaXNhbGlnbmVkIHZl Y3Rvci4gUEM9JTA4eCBFQT0lMDh4Iix0aHJlYWQtPlJlZ3NbUkVHX1BDXSwoRUEpKTsKKwl9LAor CSgpCispCitERUZfTUFDUk8oZlNDQVRURVJfSU5JVCwKKyAgICB7CisgICAgbWVtX3ZlY3Rvcl9z Y2F0dGVyX2luaXQodGhyZWFkLCBpbnNuLCAgIFJFR0lPTl9TVEFSVCwgTEVOR1RILCBFTEVNRU5U X1NJWkUpOworCWlmIChFWENFUFRJT05fREVURUNURUQpIHJldHVybjsKKyAgICB9LAorICAgIChB X1NUT1JFLEFfTUVNTElLRSxBX1JFU1RSSUNUX1NMT1QwT05MWSkKKykKKworREVGX01BQ1JPKGZH QVRIRVJfSU5JVCwKKyAgICB7CisgICAgbWVtX3ZlY3Rvcl9nYXRoZXJfaW5pdCh0aHJlYWQsIGlu c24sICAgUkVHSU9OX1NUQVJULCBMRU5HVEgsIEVMRU1FTlRfU0laRSk7CisJaWYgKEVYQ0VQVElP Tl9ERVRFQ1RFRCkgcmV0dXJuOworICAgIH0sCisgICAgKEFfTE9BRCxBX01FTUxJS0UsQV9SRVNU UklDVF9TTE9UMU9OTFkpCispCisKK0RFRl9NQUNSTyhmU0NBVFRFUl9GSU5JU0gsCisgICAgewor CWlmIChFWENFUFRJT05fREVURUNURUQpIHJldHVybjsKKyAgICBtZW1fdmVjdG9yX3NjYXR0ZXJf ZmluaXNoKHRocmVhZCwgaW5zbiwgT1ApOworICAgIH0sCisgICAgKCkKKykKKworREVGX01BQ1JP KGZHQVRIRVJfRklOSVNILAorICAgIHsKKwlpZiAoRVhDRVBUSU9OX0RFVEVDVEVEKSByZXR1cm47 CisgICAgbWVtX3ZlY3Rvcl9nYXRoZXJfZmluaXNoKHRocmVhZCwgaW5zbik7CisgICAgfSwKKyAg ICAoKQorKQorCisKK0RFRl9NQUNSTyhDSEVDS19WVENNX1BBR0UsCisgICAgIHsKKyAgICAgICAg aW50IHNsb3QgPSBpbnNuLT5zbG90OworICAgICAgICBwYWRkcl90IHBhID0gdGhyZWFkLT5tZW1f YWNjZXNzW3Nsb3RdLnBhZGRyK09GRlNFVDsKKyAgICAgICAgcGEgPSBwYSAmIH4oQUxJR05NRU5U LTEpOworICAgICAgICBGTEFHID0gKHBhIDwgKHRocmVhZC0+bWVtX2FjY2Vzc1tzbG90XS5wYWRk citMRU5HVEgpKTsKKyAgICAgfSwKKyAgICAoKQorKQorREVGX01BQ1JPKENPVU5UX09VVF9PRl9C T1VORFMsCisgICAgIHsKKyAgICAgICAgaWYgKCFGTEFHKQorICAgICAgICB7CisgICAgICAgICAg ICAgICBUSFJFQUQyU1RSVUNULT52dGNtX2xvZy5vb2JfYWNjZXNzICs9IFNJWkU7CisgICAgICAg ICAgICAgICB3YXJuKCJTY2F0dGVyL0dhdGhlciBvdXQgb2YgYm91bmRzIG9mIHJlZ2lvbiIpOwor ICAgICAgICB9CisgICAgIH0sCisgICAgKCkKKykKKworREVGX01BQ1JPKGZMT0dfU0NBVFRFUl9P UCwKKyAgICB7CisgICAgICAgIC8vIExvZyB0aGUgc2l6ZSBhbmQgaW5kaWNhdGUgdGhhdCB0aGUg ZXh0ZW5zaW9uIGV4dC5jIGZpbGUgbmVlZHMgdG8gaW5jcmVtZW50IHJpZ2h0IGJlZm9yZSBtZW1v cnkgd3JpdGUKKyAgICAgICAgVEhSRUFEMlNUUlVDVC0+dnRjbV9sb2cub3AgPSAxOworICAgICAg ICBUSFJFQUQyU1RSVUNULT52dGNtX2xvZy5vcF9zaXplID0gU0laRTsKKyAgICB9LAorICAgICgp CispCisKKworCitERUZfTUFDUk8oZlZMT0dfVlRDTV9XT1JEX0lOQ1JFTUVOVCwKKyAgICB7Cisg ICAgICAgIGludCBzbG90ID0gaW5zbi0+c2xvdDsKKyAgICAgICAgaW50IGxvZ19iYW5rID0gMDsK KyAgICAgICAgaW50IGxvZ19ieXRlID0wOworICAgICAgICBwYWRkcl90IHBhID0gdGhyZWFkLT5t ZW1fYWNjZXNzW3Nsb3RdLnBhZGRyKyhPRkZTRVQgJiB+KEFMSUdOTUVOVC0xKSk7CisgICAgICAg IHBhZGRyX3QgcGFfaGlnaCA9IHRocmVhZC0+bWVtX2FjY2Vzc1tzbG90XS5wYWRkcitMRU47Cisg ICAgICAgIGZvcihpbnQgaTAgPSAwOyBpMCA8IDQ7IGkwKyspCisgICAgICAgIHsKKyAgICAgICAg ICAgIGxvZ19ieXRlID0gICgoT0ZGU0VUPj0wKSYmKChwYStpMCk8PXBhX2hpZ2gpKTsKKyAgICAg ICAgICAgIGxvZ19iYW5rIHw9IChsb2dfYnl0ZTw8aTApOworICAgICAgICAgICAgTE9HX1ZUQ01f QllURShwYStpMCxsb2dfYnl0ZSxJTkMudWJbNCpJRFgraTBdLDQqSURYK2kwKTsKKyAgICAgICAg fQorICAgICAgICB7IExPR19WVENNX0JBTksocGEsIGxvZ19iYW5rLCBJRFgpOyB9CisgICAgfSwK KyAgICAoKQorKQorCitERUZfTUFDUk8oZlZMT0dfVlRDTV9IQUxGV09SRF9JTkNSRU1FTlQsCisg ICAgeworICAgICAgICBpbnQgc2xvdCA9IGluc24tPnNsb3Q7CisgICAgICAgIGludCBsb2dfYmFu ayA9IDA7CisgICAgICAgIGludCBsb2dfYnl0ZSA9IDA7CisgICAgICAgIHBhZGRyX3QgcGEgPSB0 aHJlYWQtPm1lbV9hY2Nlc3Nbc2xvdF0ucGFkZHIrKE9GRlNFVCAmIH4oQUxJR05NRU5ULTEpKTsK KyAgICAgICAgcGFkZHJfdCBwYV9oaWdoID0gdGhyZWFkLT5tZW1fYWNjZXNzW3Nsb3RdLnBhZGRy K0xFTjsKKyAgICAgICAgZm9yKGludCBpMCA9IDA7IGkwIDwgMjsgaTArKykgeworICAgICAgICAg ICAgbG9nX2J5dGUgPSAgKChPRkZTRVQ+PTApJiYoKHBhK2kwKTw9cGFfaGlnaCkpOworICAgICAg ICAgICAgbG9nX2JhbmsgfD0gKGxvZ19ieXRlPDxpMCk7CisgICAgICAgICAgICBMT0dfVlRDTV9C WVRFKHBhK2kwLGxvZ19ieXRlLElOQy51YlsyKklEWCtpMF0sMipJRFgraTApOworICAgICAgICB9 CisgICAgICAgIHsgTE9HX1ZUQ01fQkFOSyhwYSwgbG9nX2JhbmssSURYKTsgfQorICAgIH0sCisg ICAgKCkKKykKKworREVGX01BQ1JPKGZWTE9HX1ZUQ01fSEFMRldPUkRfSU5DUkVNRU5UX0RWLAor ICAgIHsKKyAgICAgICAgaW50IHNsb3QgPSBpbnNuLT5zbG90OworICAgICAgICBpbnQgbG9nX2Jh bmsgPSAwOworICAgICAgICBpbnQgbG9nX2J5dGUgPSAwOworICAgICAgICBwYWRkcl90IHBhID0g dGhyZWFkLT5tZW1fYWNjZXNzW3Nsb3RdLnBhZGRyKyhPRkZTRVQgJiB+KEFMSUdOTUVOVC0xKSk7 CisgICAgICAgIHBhZGRyX3QgcGFfaGlnaCA9IHRocmVhZC0+bWVtX2FjY2Vzc1tzbG90XS5wYWRk citMRU47CisgICAgICAgIGZvcihpbnQgaTAgPSAwOyBpMCA8IDI7IGkwKyspIHsKKyAgICAgICAg ICAgIGxvZ19ieXRlID0gICgoT0ZGU0VUPj0wKSYmKChwYStpMCk8PXBhX2hpZ2gpKTsKKyAgICAg ICAgICAgIGxvZ19iYW5rIHw9IChsb2dfYnl0ZTw8aTApOworICAgICAgICAgICAgTE9HX1ZUQ01f QllURShwYStpMCxsb2dfYnl0ZSxJTkMudWJbMipJRFgraTBdLDIqSURYK2kwKTsKKyAgICAgICAg fQorICAgICAgICB7IExPR19WVENNX0JBTksocGEsIGxvZ19iYW5rLCgyKklEWDIrSURYX0gpKTt9 CisgICAgfSwKKyAgICAoKQorKQorCisKKworREVGX01BQ1JPKEdBVEhFUl9GVU5DVElPTiwKK3sK KyAgICAgICAgaW50IHNsb3QgPSBpbnNuLT5zbG90OworICAgICAgICBpbnQgaTA7CisgICAgICAg IHBhZGRyX3QgcGEgPSB0aHJlYWQtPm1lbV9hY2Nlc3Nbc2xvdF0ucGFkZHIrT0ZGU0VUOworICAg ICAgICBwYWRkcl90IHBhX2hpZ2ggPSB0aHJlYWQtPm1lbV9hY2Nlc3Nbc2xvdF0ucGFkZHIrTEVO OworICAgICAgICBpbnQgbG9nX2JhbmsgPSAwOworICAgICAgICBpbnQgbG9nX2J5dGUgPSAwOwor ICAgICAgICBmb3IoaTAgPSAwOyBpMCA8IEVMRU1FTlRfU0laRTsgaTArKykKKyAgICAgICAgewor ICAgICAgICAgICAgbG9nX2J5dGUgPSAgKChPRkZTRVQ+PTApJiYoKHBhK2kwKTw9cGFfaGlnaCkp ICYmIFFWQUw7CisgICAgICAgICAgICBsb2dfYmFuayB8PSAobG9nX2J5dGU8PGkwKTsKKyAgICAg ICAgICAgIHNpemUxdV90IEIgID0gc2ltX21lbV9yZWFkMSh0aHJlYWQtPnN5c3RlbV9wdHIsIHRo cmVhZC0+dGhyZWFkSWQsIHRocmVhZC0+bWVtX2FjY2Vzc1tzbG90XS5wYWRkcitPRkZTRVQraTAp OworICAgICAgICAgICAgVEhSRUFEMlNUUlVDVC0+dG1wX1ZSZWdzWzBdLnViW0VMRU1FTlRfU0la RSpJRFgraTBdID0gQjsKKyAgICAgICAgICAgIExPR19WVENNX0JZVEUocGEraTAsbG9nX2J5dGUs QixFTEVNRU5UX1NJWkUqSURYK2kwKTsKKyAgICAgICAgfQorICAgICAgICBMT0dfVlRDTV9CQU5L KHBhLCBsb2dfYmFuayxCQU5LX0lEWCk7Cit9LAorKCkKKykKKworCisKK0RFRl9NQUNSTyhmVkxP R19WVENNX0dBVEhFUl9XT1JELAorICAgIHsKKwkJR0FUSEVSX0ZVTkNUSU9OKEVBLE9GRlNFVCxJ RFgsIExFTiwgNCwgSURYLCAxKTsKKyAgICB9LAorICAgICgpCispCitERUZfTUFDUk8oZlZMT0df VlRDTV9HQVRIRVJfSEFMRldPUkQsCisgICAgeworCQlHQVRIRVJfRlVOQ1RJT04oRUEsT0ZGU0VU LElEWCwgTEVOLCAyLCBJRFgsIDEpOworICAgIH0sCisgICAgKCkKKykKK0RFRl9NQUNSTyhmVkxP R19WVENNX0dBVEhFUl9IQUxGV09SRF9EViwKKyAgICB7CisJCUdBVEhFUl9GVU5DVElPTihFQSxP RkZTRVQsSURYLCBMRU4sIDIsICgyKklEWDIrSURYX0gpLCAxKTsKKyAgICB9LAorICAgICgpCisp CitERUZfTUFDUk8oZlZMT0dfVlRDTV9HQVRIRVJfV09SRFEsCisgICAgeworCQlHQVRIRVJfRlVO Q1RJT04oRUEsT0ZGU0VULElEWCwgTEVOLCA0LCBJRFgsIGZHRVRRQklUKFFzViw0KklEWCtpMCkp OworICAgIH0sCisgICAgKCkKKykKK0RFRl9NQUNSTyhmVkxPR19WVENNX0dBVEhFUl9IQUxGV09S RFEsCisgICAgeworCQlHQVRIRVJfRlVOQ1RJT04oRUEsT0ZGU0VULElEWCwgTEVOLCAyLCBJRFgs IGZHRVRRQklUKFFzViwyKklEWCtpMCkpOworICAgIH0sCisgICAgKCkKKykKKworREVGX01BQ1JP KGZWTE9HX1ZUQ01fR0FUSEVSX0hBTEZXT1JEUV9EViwKKyAgICB7CisJCUdBVEhFUl9GVU5DVElP TihFQSxPRkZTRVQsSURYLCBMRU4sIDIsICgyKklEWDIrSURYX0gpLCBmR0VUUUJJVChRc1YsMipJ RFgraTApKTsKKyAgICB9LAorICAgICgpCispCisKKworREVGX01BQ1JPKERFQlVHX0xPR19BRERS LAorICAgIHsKKworICAgICAgICBpZiAodGhyZWFkLT5wcm9jZXNzb3JfcHRyLT5hcmNoX3Byb2Nf b3B0aW9ucy0+bW12ZWNfbmV0d29ya19hZGRyX2xvZzIpCisgICAgICAgIHsKKworICAgICAgICAg ICAgaW50IHNsb3QgPSBpbnNuLT5zbG90OworICAgICAgICAgICAgcGFkZHJfdCBwYSA9IHRocmVh ZC0+bWVtX2FjY2Vzc1tzbG90XS5wYWRkcitPRkZTRVQ7CisgICAgICAgIH0KKyAgICB9LAorICAg ICgpCispCisKKworCisKKworCisKK0RFRl9NQUNSTyhTQ0FUVEVSX09QX1dSSVRFX1RPX01FTSwK KyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbW12ZWN4LT52dGNtX2xvZy5zaXpl OyBpKz1zaXplb2YoVFlQRSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggbW12ZWN4LT52 dGNtX2xvZy5tYXNrLnViW2ldICE9IDApIHsKKyAgICAgICAgICAgICAgICBUWVBFIGRzdCA9IDA7 CisgICAgICAgICAgICAgICAgVFlQRSBpbmMgPSAwOworICAgICAgICAgICAgICAgIGZvcihpbnQg aiA9IDA7IGogPCBzaXplb2YoVFlQRSk7IGorKykgeworICAgICAgICAgICAgICAgICAgICBkc3Qg fD0gKHNpbV9tZW1fcmVhZDEodGhyZWFkLT5zeXN0ZW1fcHRyLCB0aHJlYWQtPnRocmVhZElkLCBt bXZlY3gtPnZ0Y21fbG9nLnBhW2kral0pIDw8ICg4KmopKTsKKyAgICAgICAgICAgICAgICAgICAg aW5jIHw9IG1tdmVjeC0+dnRjbV9sb2cuZGF0YS51YltqK2ldIDw8ICg4KmopOworCisgICAgICAg ICAgICAgICAgICAgIG1tdmVjeC0+dnRjbV9sb2cubWFzay51YltqK2ldID0gMDsKKyAgICAgICAg ICAgICAgICAgICAgbW12ZWN4LT52dGNtX2xvZy5kYXRhLnViW2oraV0gPSAwOworICAgICAgICAg ICAgICAgICAgICBtbXZlY3gtPnZ0Y21fbG9nLm9mZnNldHMudWJbaitpXSA9IDA7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRzdCArPSBpbmM7CisgICAgICAgICAgICAgICAg Zm9yKGludCBqID0gMDsgaiA8IHNpemVvZihUWVBFKTsgaisrKSB7CisgICAgICAgICAgICAgICAg ICAgIHNpbV9tZW1fd3JpdGUxKHRocmVhZC0+c3lzdGVtX3B0cix0aHJlYWQtPnRocmVhZElkLCBt bXZlY3gtPnZ0Y21fbG9nLnBhW2kral0sIChkc3QgPj4gKDgqaikpJiAweEZGICk7CisgICAgICAg ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9CisgICAgfSwKKyAgICAoKQorKQorCitERUZf TUFDUk8oU0NBVFRFUl9GVU5DVElPTiwKK3sKKyAgICAgICAgaW50IHNsb3QgPSBpbnNuLT5zbG90 OworICAgICAgICBpbnQgaTA7CisgICAgICAgIHBhZGRyX3QgcGEgPSB0aHJlYWQtPm1lbV9hY2Nl c3Nbc2xvdF0ucGFkZHIrT0ZGU0VUOworICAgICAgICBwYWRkcl90IHBhX2hpZ2ggPSB0aHJlYWQt Pm1lbV9hY2Nlc3Nbc2xvdF0ucGFkZHIrTEVOOworICAgICAgICBpbnQgbG9nX2JhbmsgPSAwOwor ICAgICAgICBpbnQgbG9nX2J5dGUgPSAwOworICAgICAgICBmb3IoaTAgPSAwOyBpMCA8IEVMRU1F TlRfU0laRTsgaTArKykgeworICAgICAgICAgICAgbG9nX2J5dGUgPSAoKE9GRlNFVD49MCkmJigo cGEraTApPD1wYV9oaWdoKSkgJiYgUVZBTDsKKyAgICAgICAgICAgIGxvZ19iYW5rIHw9IChsb2df Ynl0ZTw8aTApOworICAgICAgICAgICAgTE9HX1ZUQ01fQllURShwYStpMCxsb2dfYnl0ZSxJTi51 YltFTEVNRU5UX1NJWkUqSURYK2kwXSxFTEVNRU5UX1NJWkUqSURYK2kwKTsKKyAgICAgICAgfQor ICAgICAgICBMT0dfVlRDTV9CQU5LKHBhLCBsb2dfYmFuayxCQU5LX0lEWCk7CisKK30sCisoKQor KQorCitERUZfTUFDUk8oZlZMT0dfVlRDTV9IQUxGV09SRCwKKyAgICB7CisJCVNDQVRURVJfRlVO Q1RJT04gKEVBLE9GRlNFVCxJRFgsIExFTiwgMiwgSURYLCAxLCBJTik7CisgICAgfSwKKyAgICAo KQorKQorREVGX01BQ1JPKGZWTE9HX1ZUQ01fV09SRCwKKyAgICB7CisJCVNDQVRURVJfRlVOQ1RJ T04gKEVBLE9GRlNFVCxJRFgsIExFTiwgNCwgSURYLCAxLCBJTik7CisgICAgfSwKKyAgICAoKQor KQorCitERUZfTUFDUk8oZlZMT0dfVlRDTV9IQUxGV09SRFEsCisgICAgeworCQlTQ0FUVEVSX0ZV TkNUSU9OIChFQSxPRkZTRVQsSURYLCBMRU4sIDIsIElEWCwgZkdFVFFCSVQoUXNWLDIqSURYK2kw KSwgSU4pOworICAgIH0sCisgICAgKCkKKykKK0RFRl9NQUNSTyhmVkxPR19WVENNX1dPUkRRLAor ICAgIHsKKwkJU0NBVFRFUl9GVU5DVElPTiAoRUEsT0ZGU0VULElEWCwgTEVOLCA0LCBJRFgsIGZH RVRRQklUKFFzViw0KklEWCtpMCksIElOKTsKKyAgICB9LAorICAgICgpCispCisKKworCisKKwor REVGX01BQ1JPKGZWTE9HX1ZUQ01fSEFMRldPUkRfRFYsCisgICAgeworCQlTQ0FUVEVSX0ZVTkNU SU9OIChFQSxPRkZTRVQsSURYLCBMRU4sIDIsICgyKklEWDIrSURYX0gpLCAxLCBJTik7CisgICAg fSwKKyAgICAoKQorKQorCitERUZfTUFDUk8oZlZMT0dfVlRDTV9IQUxGV09SRFFfRFYsCisgICAg eworCQlTQ0FUVEVSX0ZVTkNUSU9OIChFQSxPRkZTRVQsSURYLCBMRU4sIDIsICgyKklEWDIrSURY X0gpLCBmR0VUUUJJVChRc1YsMipJRFgraTApLCBJTik7CisgICAgfSwKKyAgICAoKQorKQorCisK KworCisKKworREVGX01BQ1JPKGZTVE9SRVJFTEVBU0UsCisgICAgeworICAgICAgICBmVl9BTF9D SEVDSyhFQSxmVkVDU0laRSgpLTEpOworCisgICAgICAgIG1lbV9zdG9yZV9yZWxlYXNlKHRocmVh ZCwgaW5zbiwgZlZFQ1NJWkUoKSwgRUEmfihmVkVDU0laRSgpLTEpLCBFQSwgVFlQRSwgZlVTRV9M T09LVVBfQUREUkVTU19CWV9SRVYodGhyZWFkLT5wcm9jZXNzb3JfcHRyKSk7CisgICAgfSwKKwko QV9TVE9SRSxBX01FTUxJS0UpCispCisKK0RFRl9NQUNSTyhmVkZFVENIX0FMLAorICAgIHsKKyAg ICBmVl9BTF9DSEVDSyhFQSxmVkVDU0laRSgpLTEpOworICAgIG1lbV9mZXRjaF92ZWN0b3IodGhy ZWFkLCBpbnNuLCBFQSZ+KGZWRUNTSVpFKCktMSksIGluc24tPnNsb3QsIGZWRUNTSVpFKCkpOwor ICAgIH0sCisgICAgKEFfTE9BRCxBX01FTUxJS0UpCispCisKKworREVGX01BQ1JPKGZMT0FETU1W X0FMLAorICAgIHsKKyAgICBmVl9BTF9DSEVDSyhFQSxBTElHTk1FTlQtMSk7CisJdGhyZWFkLT5s YXN0X3BrdC0+ZG91YmxlX2FjY2Vzc192ZWMgPSAwOworICAgIG1lbV9sb2FkX3ZlY3Rvcl9vZGR2 YSh0aHJlYWQsIGluc24sIEVBJn4oQUxJR05NRU5ULTEpLCBFQSwgaW5zbi0+c2xvdCwgTEVOLCAm RFNULnViWzBdLCBMRU4sIGZVU0VfTE9PS1VQX0FERFJFU1NfQllfUkVWKHRocmVhZC0+cHJvY2Vz c29yX3B0cikpOworICAgIH0sCisgICAgKEFfTE9BRCxBX01FTUxJS0UpCispCisKK0RFRl9NQUNS TyhmTE9BRE1NViwKKwlmTE9BRE1NVl9BTChFQSxmVkVDU0laRSgpLGZWRUNTSVpFKCksRFNUKSwK KwkoKQorKQorCitERUZfTUFDUk8oZkxPQURNTVZRLAorCWRvIHsKKwkJaW50IF9faTsKKwkJZkxP QURNTVZfQUwoRUEsZlZFQ1NJWkUoKSxmVkVDU0laRSgpLERTVCk7CisJCWZWRk9SRUFDSCg4LF9f aSkgaWYgKCFmR0VUUUJJVChRVkFMLF9faSkpIERTVC5iW19faV0gPSAwOworCX0gd2hpbGUgKDAp LAorCSgpCispCisKK0RFRl9NQUNSTyhmTE9BRE1NVk5RLAorCWRvIHsKKwkJaW50IF9faTsKKwkJ ZkxPQURNTVZfQUwoRUEsZlZFQ1NJWkUoKSxmVkVDU0laRSgpLERTVCk7CisJCWZWRk9SRUFDSCg4 LF9faSkgaWYgKGZHRVRRQklUKFFWQUwsX19pKSkgRFNULmJbX19pXSA9IDA7CisJfSB3aGlsZSAo MCksCisJKCkKKykKKworREVGX01BQ1JPKGZMT0FETU1WVV9BTCwKKyAgICB7CisgICAgc2l6ZTR1 X3Qgc2l6ZTIgPSAoRUEpJihBTElHTk1FTlQtMSk7CisgICAgc2l6ZTR1X3Qgc2l6ZTEgPSBMRU4t c2l6ZTI7CisJdGhyZWFkLT5sYXN0X3BrdC0+ZG91YmxlX2FjY2Vzc192ZWMgPSAxOworICAgIG1l bV9sb2FkX3ZlY3Rvcl9vZGR2YSh0aHJlYWQsIGluc24sIEVBK3NpemUxLCBFQStmVkVDU0laRSgp LCAvKiBzbG90ICovIDEsIHNpemUyLCAmRFNULnViW3NpemUxXSwgc2l6ZTIsIGZVU0VfTE9PS1VQ X0FERFJFU1MoKSk7CisgICAgbWVtX2xvYWRfdmVjdG9yX29kZHZhKHRocmVhZCwgaW5zbiwgRUEs IEVBLC8qIHNsb3QgKi8gMCwgc2l6ZTEsICZEU1QudWJbMF0sIHNpemUxLCBmVVNFX0xPT0tVUF9B RERSRVNTX0JZX1JFVih0aHJlYWQtPnByb2Nlc3Nvcl9wdHIpKTsKKyAgICB9LAorICAgIChBX0xP QUQsQV9NRU1MSUtFKQorKQorCitERUZfTUFDUk8oZkxPQURNTVZVLAorCXsKKwkJLyogaWYgYWRk cmVzcyBoYXBwZW5zIHRvIGJlIGFsaWduZWQsIG9ubHkgZG8gYWxpZ25lZCBsb2FkICovCisgICAg ICAgIHRocmVhZC0+bGFzdF9wa3QtPnBrdF9oYXNfdnRjbV9hY2Nlc3MgPSAwOworICAgICAgICB0 aHJlYWQtPmxhc3RfcGt0LT5wa3RfYWNjZXNzX2NvdW50ID0gMDsKKwkJaWYgKCAoRUEgJiAoZlZF Q1NJWkUoKS0xKSkgPT0gMCkgeworICAgICAgICAgICAgdGhyZWFkLT5sYXN0X3BrdC0+cGt0X2hh c192bWVtdV9hY2Nlc3MgPSAwOworCQkJdGhyZWFkLT5sYXN0X3BrdC0+ZG91YmxlX2FjY2VzcyA9 IDA7CisKKwkJCWZMT0FETU1WX0FMKEVBLGZWRUNTSVpFKCksZlZFQ1NJWkUoKSxEU1QpOworCQl9 IGVsc2UgeworICAgICAgICAgICAgdGhyZWFkLT5sYXN0X3BrdC0+cGt0X2hhc192bWVtdV9hY2Nl c3MgPSAxOworCQkJdGhyZWFkLT5sYXN0X3BrdC0+ZG91YmxlX2FjY2VzcyA9IDE7CisKKwkJCWZM T0FETU1WVV9BTChFQSxmVkVDU0laRSgpLGZWRUNTSVpFKCksRFNUKTsKKwkJfQorCX0sCisJKCkK KykKKworREVGX01BQ1JPKGZTVE9SRU1NVl9BTCwKKyAgICB7CisgICAgZlZfQUxfQ0hFQ0soRUEs QUxJR05NRU5ULTEpOworICAgIG1lbV9zdG9yZV92ZWN0b3Jfb2RkdmEodGhyZWFkLCBpbnNuLCBF QSZ+KEFMSUdOTUVOVC0xKSwgRUEsIGluc24tPnNsb3QsIExFTiwgJlNSQy51YlswXSwgMCwgMCwg ZlVTRV9MT09LVVBfQUREUkVTU19CWV9SRVYodGhyZWFkLT5wcm9jZXNzb3JfcHRyKSk7CisgICAg fSwKKyAgICAoQV9TVE9SRSxBX01FTUxJS0UpCispCisKK0RFRl9NQUNSTyhmU1RPUkVNTVYsCisJ ZlNUT1JFTU1WX0FMKEVBLGZWRUNTSVpFKCksZlZFQ1NJWkUoKSxTUkMpLAorCSgpCispCisKK0RF Rl9NQUNSTyhmU1RPUkVNTVZRX0FMLAorICAgIGRvIHsKKwltbXZlY3Rvcl90IG1hc2t2ZWM7CisJ aW50IGk7CisJZm9yIChpID0gMDsgaSA8IGZWRUNTSVpFKCk7IGkrKykgbWFza3ZlYy51YltpXSA9 IGZHRVRRQklUKE1BU0ssaSk7CisJbWVtX3N0b3JlX3ZlY3Rvcl9vZGR2YSh0aHJlYWQsIGluc24s IEVBJn4oQUxJR05NRU5ULTEpLCBFQSwgaW5zbi0+c2xvdCwgTEVOLCAmU1JDLnViWzBdLCAmbWFz a3ZlYy51YlswXSwgMCwgZlVTRV9MT09LVVBfQUREUkVTU19CWV9SRVYodGhyZWFkLT5wcm9jZXNz b3JfcHRyKSk7CisgICAgfSB3aGlsZSAoMCksCisgICAgKEFfU1RPUkUsQV9NRU1MSUtFKQorKQor CitERUZfTUFDUk8oZlNUT1JFTU1WUSwKKwlmU1RPUkVNTVZRX0FMKEVBLGZWRUNTSVpFKCksZlZF Q1NJWkUoKSxTUkMsTUFTSyksCisJKCkKKykKKworREVGX01BQ1JPKGZTVE9SRU1NVk5RX0FMLAor ICAgIHsKKwltbXZlY3Rvcl90IG1hc2t2ZWM7CisJaW50IGk7CisJZm9yIChpID0gMDsgaSA8IGZW RUNTSVpFKCk7IGkrKykgbWFza3ZlYy51YltpXSA9IGZHRVRRQklUKE1BU0ssaSk7CisgICAgICAg IGZWX0FMX0NIRUNLKEVBLEFMSUdOTUVOVC0xKTsKKwltZW1fc3RvcmVfdmVjdG9yX29kZHZhKHRo cmVhZCwgaW5zbiwgRUEmfihBTElHTk1FTlQtMSksIEVBLCBpbnNuLT5zbG90LCBMRU4sICZTUkMu dWJbMF0sICZtYXNrdmVjLnViWzBdLCAxLCBmVVNFX0xPT0tVUF9BRERSRVNTX0JZX1JFVih0aHJl YWQtPnByb2Nlc3Nvcl9wdHIpKTsKKyAgICB9LAorICAgIChBX1NUT1JFLEFfTUVNTElLRSkKKykK KworREVGX01BQ1JPKGZTVE9SRU1NVk5RLAorCWZTVE9SRU1NVk5RX0FMKEVBLGZWRUNTSVpFKCks ZlZFQ1NJWkUoKSxTUkMsTUFTSyksCisJKCkKKykKKworREVGX01BQ1JPKGZTVE9SRU1NVlVfQUws CisgICAgeworICAgIHNpemU0dV90IHNpemUxID0gQUxJR05NRU5ULSgoRUEpJihBTElHTk1FTlQt MSkpOworICAgIHNpemU0dV90IHNpemUyOworICAgIGlmIChzaXplMT5MRU4pIHNpemUxID0gTEVO OworICAgIHNpemUyID0gTEVOLXNpemUxOworICAgIG1lbV9zdG9yZV92ZWN0b3Jfb2RkdmEodGhy ZWFkLCBpbnNuLCBFQStzaXplMSwgRUErZlZFQ1NJWkUoKSwgLyogc2xvdCAqLyAxLCBzaXplMiwg JlNSQy51YltzaXplMV0sIDAsIDAsIGZVU0VfTE9PS1VQX0FERFJFU1MoKSk7CisgICAgbWVtX3N0 b3JlX3ZlY3Rvcl9vZGR2YSh0aHJlYWQsIGluc24sIEVBLCBFQSwgLyogc2xvdCAqLyAwLCBzaXpl MSwgJlNSQy51YlswXSwgMCwgMCwgZlVTRV9MT09LVVBfQUREUkVTU19CWV9SRVYodGhyZWFkLT5w cm9jZXNzb3JfcHRyKSk7CisgICAgfSwKKyAgICAoQV9TVE9SRSxBX01FTUxJS0UpCispCisKK0RF Rl9NQUNSTyhmU1RPUkVNTVZVLAorCXsKKyAgICAgICAgdGhyZWFkLT5sYXN0X3BrdC0+cGt0X2hh c192dGNtX2FjY2VzcyA9IDA7CisgICAgICAgIHRocmVhZC0+bGFzdF9wa3QtPnBrdF9hY2Nlc3Nf Y291bnQgPSAwOworCQlpZiAoIChFQSAmIChmVkVDU0laRSgpLTEpKSA9PSAwKSB7CisJCQl0aHJl YWQtPmxhc3RfcGt0LT5kb3VibGVfYWNjZXNzID0gMDsKKwkJCWZTVE9SRU1NVl9BTChFQSxmVkVD U0laRSgpLGZWRUNTSVpFKCksU1JDKTsKKwkJfSBlbHNlIHsKKwkJCXRocmVhZC0+bGFzdF9wa3Qt PmRvdWJsZV9hY2Nlc3MgPSAxOworICAgICAgICAgICAgdGhyZWFkLT5sYXN0X3BrdC0+cGt0X2hh c192bWVtdV9hY2Nlc3MgPSAxOworCQkJZlNUT1JFTU1WVV9BTChFQSxmVkVDU0laRSgpLGZWRUNT SVpFKCksU1JDKTsKKwkJfQorCX0sCisJKCkKKykKKworREVGX01BQ1JPKGZTVE9SRU1NVlFVX0FM LAorICAgIHsKKwlzaXplNHVfdCBzaXplMSA9IEFMSUdOTUVOVC0oKEVBKSYoQUxJR05NRU5ULTEp KTsKKwlzaXplNHVfdCBzaXplMjsKKwltbXZlY3Rvcl90IG1hc2t2ZWM7CisJaW50IGk7CisJZm9y IChpID0gMDsgaSA8IGZWRUNTSVpFKCk7IGkrKykgbWFza3ZlYy51YltpXSA9IGZHRVRRQklUKE1B U0ssaSk7CisJaWYgKHNpemUxPkxFTikgc2l6ZTEgPSBMRU47CisJc2l6ZTIgPSBMRU4tc2l6ZTE7 CisJbWVtX3N0b3JlX3ZlY3Rvcl9vZGR2YSh0aHJlYWQsIGluc24sIEVBK3NpemUxLCBFQStmVkVD U0laRSgpLC8qIHNsb3QgKi8gMSwgc2l6ZTIsICZTUkMudWJbc2l6ZTFdLCAmbWFza3ZlYy51Yltz aXplMV0sIDAsIGZVU0VfTE9PS1VQX0FERFJFU1MoKSk7CisJbWVtX3N0b3JlX3ZlY3Rvcl9vZGR2 YSh0aHJlYWQsIGluc24sIEVBLCAvKiBzbG90ICovIDAsIHNpemUxLCAmU1JDLnViWzBdLCAmbWFz a3ZlYy51YlswXSwgMCwgZlVTRV9MT09LVVBfQUREUkVTU19CWV9SRVYodGhyZWFkLT5wcm9jZXNz b3JfcHRyKSk7CisgICAgfSwKKyAgICAoQV9TVE9SRSxBX01FTUxJS0UpCispCisKK0RFRl9NQUNS TyhmU1RPUkVNTVZRVSwKKwl7CisgICAgICAgIHRocmVhZC0+bGFzdF9wa3QtPnBrdF9oYXNfdnRj bV9hY2Nlc3MgPSAwOworICAgICAgICB0aHJlYWQtPmxhc3RfcGt0LT5wa3RfYWNjZXNzX2NvdW50 ID0gMDsKKwkJaWYgKCAoRUEgJiAoZlZFQ1NJWkUoKS0xKSkgPT0gMCkgeworCQkJdGhyZWFkLT5s YXN0X3BrdC0+ZG91YmxlX2FjY2VzcyA9IDA7CisJCQlmU1RPUkVNTVZRX0FMKEVBLGZWRUNTSVpF KCksZlZFQ1NJWkUoKSxTUkMsTUFTSyk7CisJCX0gZWxzZSB7CisJCQl0aHJlYWQtPmxhc3RfcGt0 LT5kb3VibGVfYWNjZXNzID0gMTsKKyAgICAgICAgICAgIHRocmVhZC0+bGFzdF9wa3QtPnBrdF9o YXNfdm1lbXVfYWNjZXNzID0gMTsKKwkJCWZTVE9SRU1NVlFVX0FMKEVBLGZWRUNTSVpFKCksZlZF Q1NJWkUoKSxTUkMsTUFTSyk7CisJCX0KKwl9LAorCSgpCispCisKK0RFRl9NQUNSTyhmU1RPUkVN TVZOUVVfQUwsCisgICAgeworCXNpemU0dV90IHNpemUxID0gQUxJR05NRU5ULSgoRUEpJihBTElH Tk1FTlQtMSkpOworCXNpemU0dV90IHNpemUyOworCW1tdmVjdG9yX3QgbWFza3ZlYzsKKwlpbnQg aTsKKwlmb3IgKGkgPSAwOyBpIDwgZlZFQ1NJWkUoKTsgaSsrKSBtYXNrdmVjLnViW2ldID0gZkdF VFFCSVQoTUFTSyxpKTsKKwlpZiAoc2l6ZTE+TEVOKSBzaXplMSA9IExFTjsKKwlzaXplMiA9IExF Ti1zaXplMTsKKwltZW1fc3RvcmVfdmVjdG9yX29kZHZhKHRocmVhZCwgaW5zbiwgRUErc2l6ZTEs IEVBK2ZWRUNTSVpFKCksIC8qIHNsb3QgKi8gMSwgc2l6ZTIsICZTUkMudWJbc2l6ZTFdLCAmbWFz a3ZlYy51YltzaXplMV0sIDEsIGZVU0VfTE9PS1VQX0FERFJFU1MoKSk7CisJbWVtX3N0b3JlX3Zl Y3Rvcl9vZGR2YSh0aHJlYWQsIGluc24sIEVBLCBFQSwgLyogc2xvdCAqLyAwLCBzaXplMSwgJlNS Qy51YlswXSwgJm1hc2t2ZWMudWJbMF0sIDEsIGZVU0VfTE9PS1VQX0FERFJFU1NfQllfUkVWKHRo cmVhZC0+cHJvY2Vzc29yX3B0cikpOworICAgIH0sCisgICAgKEFfU1RPUkUsQV9NRU1MSUtFKQor KQorCitERUZfTUFDUk8oZlNUT1JFTU1WTlFVLAorCXsKKyAgICAgICAgdGhyZWFkLT5sYXN0X3Br dC0+cGt0X2hhc192dGNtX2FjY2VzcyA9IDA7CisgICAgICAgIHRocmVhZC0+bGFzdF9wa3QtPnBr dF9hY2Nlc3NfY291bnQgPSAwOworCQlpZiAoIChFQSAmIChmVkVDU0laRSgpLTEpKSA9PSAwKSB7 CisJCQl0aHJlYWQtPmxhc3RfcGt0LT5kb3VibGVfYWNjZXNzID0gMDsKKwkJCWZTVE9SRU1NVk5R X0FMKEVBLGZWRUNTSVpFKCksZlZFQ1NJWkUoKSxTUkMsTUFTSyk7CisJCX0gZWxzZSB7CisJCQl0 aHJlYWQtPmxhc3RfcGt0LT5kb3VibGVfYWNjZXNzID0gMTsKKyAgICAgICAgICAgIHRocmVhZC0+ bGFzdF9wa3QtPnBrdF9oYXNfdm1lbXVfYWNjZXNzID0gMTsKKwkJCWZTVE9SRU1NVk5RVV9BTChF QSxmVkVDU0laRSgpLGZWRUNTSVpFKCksU1JDLE1BU0spOworCQl9CisJfSwKKwkoKQorKQorCisK KworCitERUZfTUFDUk8oZlZGT1JFQUNILAorICAgIGZvciAoVkFSID0gMDsgVkFSIDwgZlZFTEVN KFdJRFRIKTsgVkFSKyspLAorICAgIC8qIE5PVEhJTkcgKi8KKykKKworREVGX01BQ1JPKGZWQVJS QVlfRUxFTUVOVF9BQ0NFU1MsCisgICAgQVJSQVkudlsoSU5ERVgpIC8gKGZWRUNTSVpFKCkvKHNp emVvZihBUlJBWS5UWVBFWzBdKSkpXS5UWVBFWyhJTkRFWCkgJSAoZlZFQ1NJWkUoKS8oc2l6ZW9m KEFSUkFZLlRZUEVbMF0pKSldLAorICAgICgpCispCisKK0RFRl9NQUNSTyhmVk5FV0NBTkNFTCwK KwlkbyB7IFRIUkVBRDJTVFJVQ1QtPlZSZWdzX3NlbGVjdCAmPSB+KDE8PChSRUdOVU0pKTsgfSB3 aGlsZSAoMCksCisJKCkKKykKKworREVGX01BQ1JPKGZUTVBWREFUQSwKKwltbXZlY192dG1wX2Rh dGEodGhyZWFkKSwKKwkoQV9DVkkpCispCisKK0RFRl9NQUNSTyhmVlNBVERXLAorICAgIGZWU0FU VyggKCAoICgobG9uZyBsb25nKVUpPDwzMiApIHwgZlpYVE4oMzIsNjQsVikgKSApLAorICAgIC8q IGF0dHJpYnMgKi8KKykKKworREVGX01BQ1JPKGZWQVNMX1NBVEhJLAorICAgIGZWU0FUVygoKFUp PDwxKSB8ICgoVik+PjMxKSksCisgICAgLyogYXR0cmlicyAqLworKQorCitERUZfTUFDUk8oZlZV QUREU0FULAorCWZWU0FUVU4oIFdJRFRILCBmWlhUTihXSURUSCwgMipXSURUSCwgVSkgICsgZlpY VE4oV0lEVEgsIDIqV0lEVEgsIFYpKSwKKwkvKiBhdHRyaWJzICovCispCisKK0RFRl9NQUNSTyhm VlNBRERTQVQsCisJZlZTQVROKCAgV0lEVEgsIGZTWFROKFdJRFRILCAyKldJRFRILCBVKSAgKyBm U1hUTihXSURUSCwgMipXSURUSCwgVikpLAorCS8qIGF0dHJpYnMgKi8KKykKKworREVGX01BQ1JP KGZWVVNVQlNBVCwKKwlmVlNBVFVOKCBXSURUSCwgZlpYVE4oV0lEVEgsIDIqV0lEVEgsIFUpICAt IGZaWFROKFdJRFRILCAyKldJRFRILCBWKSksCisJLyogYXR0cmlicyAqLworKQorCitERUZfTUFD Uk8oZlZTU1VCU0FULAorCWZWU0FUTiggIFdJRFRILCBmU1hUTihXSURUSCwgMipXSURUSCwgVSkg IC0gZlNYVE4oV0lEVEgsIDIqV0lEVEgsIFYpKSwKKwkvKiBhdHRyaWJzICovCispCisKK0RFRl9N QUNSTyhmVkFWR1UsCisJKChmWlhUTihXSURUSCwgMipXSURUSCwgVSkgKyBmWlhUTihXSURUSCwg MipXSURUSCwgVikpPj4xKSwKKwkvKiBhdHRyaWJzICovCispCisKK0RFRl9NQUNSTyhmVkFWR1VS TkQsCisJKChmWlhUTihXSURUSCwgMipXSURUSCwgVSkgKyBmWlhUTihXSURUSCwgMipXSURUSCwg VikrMSk+PjEpLAorCS8qIGF0dHJpYnMgKi8KKykKKworREVGX01BQ1JPKGZWTkFWR1UsCisJKChm WlhUTihXSURUSCwgMipXSURUSCwgVSkgLSBmWlhUTihXSURUSCwgMipXSURUSCwgVikpPj4xKSwK KwkvKiBhdHRyaWJzICovCispCisKK0RFRl9NQUNSTyhmVk5BVkdVUk5EU0FULAorCWZWU0FUVU4o V0lEVEgsKChmWlhUTihXSURUSCwgMipXSURUSCwgVSkgLSBmWlhUTihXSURUSCwgMipXSURUSCwg VikrMSk+PjEpKSwKKwkvKiBhdHRyaWJzICovCispCisKK0RFRl9NQUNSTyhmVkFWR1MsCisJKChm U1hUTihXSURUSCwgMipXSURUSCwgVSkgKyBmU1hUTihXSURUSCwgMipXSURUSCwgVikpPj4xKSwK KwkvKiBhdHRyaWJzICovCispCisKK0RFRl9NQUNSTyhmVkFWR1NSTkQsCisJKChmU1hUTihXSURU SCwgMipXSURUSCwgVSkgKyBmU1hUTihXSURUSCwgMipXSURUSCwgVikrMSk+PjEpLAorCS8qIGF0 dHJpYnMgKi8KKykKKworREVGX01BQ1JPKGZWTkFWR1MsCisJKChmU1hUTihXSURUSCwgMipXSURU SCwgVSkgLSBmU1hUTihXSURUSCwgMipXSURUSCwgVikpPj4xKSwKKwkvKiBhdHRyaWJzICovCisp CisKK0RFRl9NQUNSTyhmVk5BVkdTUk5ELAorCSgoZlNYVE4oV0lEVEgsIDIqV0lEVEgsIFUpIC0g ZlNYVE4oV0lEVEgsIDIqV0lEVEgsIFYpKzEpPj4xKSwKKwkvKiBhdHRyaWJzICovCispCisKK0RF Rl9NQUNSTyhmVk5BVkdTUk5EU0FULAorCWZWU0FUTihXSURUSCwoKGZTWFROKFdJRFRILCAyKldJ RFRILCBVKSAtIGZTWFROKFdJRFRILCAyKldJRFRILCBWKSsxKT4+MSkpLAorCS8qIGF0dHJpYnMg Ki8KKykKKworCitERUZfTUFDUk8oZlZOT1JPVU5ELAorCVZBTCwKKwkvKiBOT1RISU5HICovCisp CitERUZfTUFDUk8oZlZOT1NBVCwKKwlWQUwsCisJLyogTk9USElORyAqLworKQorCitERUZfTUFD Uk8oZlZST1VORCwKKwkoKFZBTCkgKyAoKChTSEFNVCk+MCk/KDFMTDw8KChTSEFNVCktMSkpOjAp KSwKKwkvKiBOT1RISU5HICovCispCisKK0RFRl9NQUNSTyhmQ0FSUllfRlJPTV9BREQzMiwKKwko KChmWlhUTigzMiw2NCxBKStmWlhUTigzMiw2NCxCKStDKSA+PiAzMikgJiAxKSwKKwkvKiBOT1RI SU5HICovCispCisKK0RFRl9NQUNSTyhmVUFSQ0hfTk9URV9QVU1QXzRYLAorCSwKKwkoKQorKQor CitERUZfTUFDUk8oZlVBUkNIX05PVEVfUFVNUF8yWCwKKwksCisJKCkKKykKLS0gCjIuNy40Cgo=