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=-12.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,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 C3CE6C433E1 for ; Tue, 18 Aug 2020 16:12:38 +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 71620207DA for ; Tue, 18 Aug 2020 16:12:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="r6+hUKcf" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 71620207DA 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]:58716 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k84E1-0002L1-Nd for qemu-devel@archiver.kernel.org; Tue, 18 Aug 2020 12:12:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60780) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k83tM-0006kf-FZ for qemu-devel@nongnu.org; Tue, 18 Aug 2020 11:51:16 -0400 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:12947) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1k83tF-0005sa-Qk for qemu-devel@nongnu.org; Tue, 18 Aug 2020 11:51:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1597765869; x=1629301869; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ihRUx1xcJmNsWiTFAyr/jP786FX0UTZtmCyzFe5VxYQ=; b=r6+hUKcfBBlwaQacbHr9eY4nH+o/H7UsZyZSbYcsJe3gUU5qavLIqC1i LEajJM+qUvAaejK47cZ5rDz0KimjtK4Zj8v1ffGD0FEWyg4IatTk1MEjO q8t5Beoyc6Kt7VdRmavv9sj/a6tN/hrRQJp2LsQF6lXrud7nRPtUHKjxO 0=; Received: from unknown (HELO ironmsg01-sd.qualcomm.com) ([10.53.140.141]) by alexa-out-sd-02.qualcomm.com with ESMTP; 18 Aug 2020 08:50:58 -0700 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg01-sd.qualcomm.com with ESMTP; 18 Aug 2020 08:50:57 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id F3FD51B76; Tue, 18 Aug 2020 10:50:56 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH v3 17/34] Hexagon (target/hexagon/imported) arch import - macro definitions Date: Tue, 18 Aug 2020 10:50:30 -0500 Message-Id: <1597765847-16637-18-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1597765847-16637-1-git-send-email-tsimpson@quicinc.com> References: <1597765847-16637-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.39; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-02.qualcomm.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/18 11:50:57 X-ACL-Warn: Detected OS = FreeBSD 9.x or newer [fuzzy] X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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, riku.voipio@iki.fi, richard.henderson@linaro.org, laurent@vivier.eu, tsimpson@quicinc.com, philmd@redhat.com, aleksandar.m.mail@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" VGhlIG1hY3JvIGRlZmluaXRpb25zIHNwZWNpZnkgaW5zdHJ1Y3Rpb24gYXR0cmlidXRlcyB0aGF0 IGFyZSBhcHBsaWVkCnRvIGVhY2ggaW5zdHJ1Y3Rpb24gdGhhdCByZWZlcmVuY2VzIHRoZSBtYWNy by4gVGhlIGdlbmVyYXRvciB3aWxsCnJlY3Vyc2l2ZWx5IGFwcGx5IGF0dHJpYnV0ZXMgdG8gZWFj aCBpbnN0cnVjdGlvbiB0aGF0IHVzZWQgdGhlIG1hY3JvLgoKU2lnbmVkLW9mZi1ieTogVGF5bG9y IFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgotLS0KIHRhcmdldC9oZXhhZ29uL2ltcG9y dGVkL21hY3Jvcy5kZWYgfCAxNTI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogMSBmaWxlIGNoYW5nZWQsIDE1MjkgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNzU1 IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21hY3Jvcy5kZWYKCmRpZmYgLS1naXQgYS90YXJnZXQv aGV4YWdvbi9pbXBvcnRlZC9tYWNyb3MuZGVmIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbWFj cm9zLmRlZgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZmZiYjFkCi0tLSAv ZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbWFjcm9zLmRlZgpAQCAtMCww ICsxLDE1MjkgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJbm5v dmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworREVGX01BQ1JPKAorCUxJS0VMWSwJ CS8qIE5BTUUgKi8KKwlfX2J1aWx0aW5fZXhwZWN0KChYKSwxKSwgLyogQkVIICovCisJKCkJCS8q IGF0dHJpYnMgKi8KKykKKworREVGX01BQ1JPKAorCVVOTElLRUxZLAkvKiBOQU1FICovCisJX19i dWlsdGluX2V4cGVjdCgoWCksMCksIC8qIEJFSCAqLworCSgpCQkvKiBhdHRyaWJzICovCispCisK K0RFRl9NQUNSTygKKwlDQU5DRUwsIC8qIG1hY3JvIG5hbWUgKi8KKwl7aWYgKHRocmVhZC0+bGFz dF9wa3QpIHRocmVhZC0+bGFzdF9wa3QtPnNsb3RfY2FuY2VsbGVkIHw9ICgxPDxpbnNuLT5zbG90 KTsgcmV0dXJuO30gLCAvKiBiZWhhdmlvciAqLworCShBX0NPTkRFWEVDKQorKQorCitERUZfTUFD Uk8oCisJTE9BRF9DQU5DRUwsIC8qIG1hY3JvIG5hbWUgKi8KKwl7bWVtX2dlbmVyYWxfbG9hZF9j YW5jZWxsZWQodGhyZWFkLEVBLGluc24pO0NBTkNFTDt9ICwgLyogYmVoYXZpb3IgKi8KKwkoQV9D T05ERVhFQykKKykKKworREVGX01BQ1JPKAorCVNUT1JFX0NBTkNFTCwgLyogbWFjcm8gbmFtZSAq LworCXttZW1fZ2VuZXJhbF9zdG9yZV9jYW5jZWxsZWQodGhyZWFkLEVBLGluc24pO0NBTkNFTDt9 ICwgLyogYmVoYXZpb3IgKi8KKwkoQV9DT05ERVhFQykKKykKKworREVGX01BQ1JPKAorCWZNQVgs IC8qIG1hY3JvIG5hbWUgKi8KKwkoKChBKSA+IChCKSkgPyAoQSkgOiAoQikpLCAvKiBiZWhhdmlv ciAqLworCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01BQ1JPKAorCWZNSU4s IC8qIG1hY3JvIG5hbWUgKi8KKwkoKChBKSA8IChCKSkgPyAoQSkgOiAoQikpLCAvKiBiZWhhdmlv ciAqLworCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01BQ1JPKAorCWZBQlMs IC8qIG1hY3JvIG5hbWUgKi8KKwkoKChBKTwwKT8oLShBKSk6KEEpKSwgLyogYmVoYXZpb3IgKi8K KwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKKworLyogQml0IGluc2VydCAqLworREVG X01BQ1JPKAorCWZJTlNFUlRfQklUUywKKyAgICAgICAgeworCSAgIFJFRyA9ICgoUkVHKSAmIH4o KChmQ09OU1RMTCgxKTw8KFdJRFRIKSktMSk8PChPRkZTRVQpKSkgfCAoKChJTlZBTCkgJiAoKGZD T05TVExMKDEpPDwoV0lEVEgpKS0xKSkgPDwgKE9GRlNFVCkpOworICAgICAgICB9LAorCS8qIGF0 dHJpYnMgKi8KKykKKworLyogQml0IGV4dHJhY3QgKi8KK0RFRl9NQUNSTygKKwlmRVhUUkFDVFVf QklUUywKKwkoZlpYVE4oV0lEVEgsMzIsKElOUkVHID4+IE9GRlNFVCkpKSwKKwkvKiBhdHRyaWJz ICovCispCisKK0RFRl9NQUNSTygKKwlmRVhUUkFDVFVfQklESVIsCisJKGZaWFROKFdJRFRILDMy LGZCSURJUl9MU0hJRlRSKChJTlJFRyksKE9GRlNFVCksNF84KSkpLAorCS8qIGF0dHJpYnMgKi8K KykKKworREVGX01BQ1JPKAorCWZFWFRSQUNUVV9SQU5HRSwKKwkoZlpYVE4oKEhJQklULUxPV0JJ VCsxKSwzMiwoSU5SRUcgPj4gTE9XQklUKSkpLAorCS8qIGF0dHJpYnMgKi8KKykKKworREVGX01B Q1JPKAorCWY4QklUU09GLAorCSggKFZBTCkgPyAweGZmIDogMHgwMCksCisJLyogYXR0cmlicyAq LworKQorCitERUZfTUFDUk8oCisJZkxTQk9MRCwKKwkoKFZBTCkgJiAxKSwKKwkoKQorKQorCitE RUZfTUFDUk8oCisJZkxTQk5FVywKKwlwcmVkbG9nX3JlYWQodGhyZWFkLFBOVU0pLAorCSgpCisp CisKK0RFRl9NQUNSTygKKwlmTFNCTkVXMCwKKwlwcmVkbG9nX3JlYWQodGhyZWFkLDApLAorCSgp CispCisKK0RFRl9NQUNSTygKKwlmTFNCTkVXMSwKKwlwcmVkbG9nX3JlYWQodGhyZWFkLDEpLAor CSgpCispCisKK0RFRl9NQUNSTygKKwlmTFNCT0xETk9ULAorCSghZkxTQk9MRChWQUwpKSwKKwko KQorKQorCitERUZfTUFDUk8oCisJZkxTQk5FV05PVCwKKwkoIWZMU0JORVcoUE5VTSkpLAorCSgp CispCisKK0RFRl9NQUNSTygKKwlmTFNCTkVXME5PVCwKKwkoIWZMU0JORVcwKSwKKwkoKQorKQor CitERUZfTUFDUk8oCisJZkxTQk5FVzFOT1QsCisJKCFmTFNCTkVXMSksCisJKCkKKykKKworREVG X01BQ1JPKAorCWZORVdSRUcsCisJKHtpZiAobmV3dmFsdWVfbWlzc2luZyh0aHJlYWQsUk5VTSkg fHwKKyAgICAgIElTX0NBTkNFTExFRChpbnNuLT5uZXdfdmFsdWVfcHJvZHVjZXJfc2xvdCkpIENB TkNFTDsgcmVnbG9nX3JlYWQodGhyZWFkLFJOVU0pO30pLAorCShBX0RPVE5FV1ZBTFVFLEFfUkVT VFJJQ1RfU0xPVDBPTkxZKQorKQorLy8gU3RvcmUgbmV3IHdpdGggYSBtaXNzaW5nIG5ld3ZhbHVl IG9yIGNhbmNlbGxlZCBnb2VzIG91dCBhcyBhIHplcm8gYnl0ZSBzdG9yZSBpbiBWNjUKKy8vIHRh a2UgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgcmVnbG9nX3JlYWQgcmV0dXJucyB6ZXJvIGZv ciBub3QgdmFsaWQgcm51bQorREVGX01BQ1JPKAorCWZORVdSRUdfU1QsCisJKHtpZiAobmV3dmFs dWVfbWlzc2luZyh0aHJlYWQsUk5VTSkgfHwKKyAgICAgIElTX0NBTkNFTExFRChpbnNuLT5uZXdf dmFsdWVfcHJvZHVjZXJfc2xvdCkpIHsgU1RPUkVfWkVSTzsgUk5VTSA9IC0xOyB9OyByZWdsb2df cmVhZCh0aHJlYWQsUk5VTSk7fSksCisJKEFfRE9UTkVXVkFMVUUsQV9SRVNUUklDVF9TTE9UME9O TFkpCispCisKK0RFRl9NQUNSTygKKwlmU0FUVVZBTE4sCisJKHtmU0VUX09WRVJGTE9XKCk7ICgo VkFMKSA8IDApID8gMCA6ICgoMUxMPDwoTikpLTEpO30pLAorCSgpCispCisKK0RFRl9NQUNSTygK KwlmU0FUVkFMTiwKKwkoe2ZTRVRfT1ZFUkZMT1coKTsgKChWQUwpIDwgMCkgPyAoLSgxTEw8PCgo TiktMSkpKSA6ICgoMUxMPDwoKE4pLTEpKS0xKTt9KSwKKwkoKQorKQorCitERUZfTUFDUk8oCisJ ZlpYVE4sIC8qIG1hY3JvIG5hbWUgKi8KKwkoKFZBTCkgJiAoKDFMTDw8KE4pKS0xKSksCisJLyog YXR0cmlicyAqLworKQorCitERUZfTUFDUk8oCisJZlNYVE4sIC8qIG1hY3JvIG5hbWUgKi8KKwko KGZaWFROKE4sTSxWQUwpIF4gKDFMTDw8KChOKS0xKSkpIC0gKDFMTDw8KChOKS0xKSkpLAorCS8q IGF0dHJpYnMgKi8KKykKKworREVGX01BQ1JPKAorCWZTQVROLAorCSgoZlNYVE4oTiw2NCxWQUwp ID09IChWQUwpKSA/IChWQUwpIDogZlNBVFZBTE4oTixWQUwpKSwKKwkoKQorKQorCitERUZfTUFD Uk8oCisJZkFERFNBVDY0LAorCXsKKwkgIHNpemU4dV90IF9fYSA9IGZDQVNUOHUoQSk7CisJICBz aXplOHVfdCBfX2IgPSBmQ0FTVDh1KEIpOworCSAgc2l6ZTh1X3QgX19zdW0gPSBfX2EgKyBfX2I7 CisJICBzaXplOHVfdCBfX3hvciA9IF9fYSBeIF9fYjsKKwkgIGNvbnN0IHNpemU4dV90IF9fbWFz ayA9IDB4ODAwMDAwMDAwMDAwMDAwMFVMTDsKKwkgIGlmIChfX3hvciAmIF9fbWFzaykgeworCQkv KiBPcHBvc2l0ZSBzaWducywgT0sgKi8KKwkJRFNUID0gX19zdW07CisJICB9IGVsc2UgaWYgKChf X2EgXiBfX3N1bSkgJiBfX21hc2spIHsKKwkJLyogU2lnbnMgbWlzbWF0Y2ggKi8KKwkJaWYgKF9f c3VtICYgX19tYXNrKSB7CisJCQkvKiBvdmVyZmxvd2VkIHRvIG5lZ2F0aXZlLCBtYWtlIG1heCBw b3MgKi8KKwkJCURTVD0weDdGRkZGRkZGRkZGRkZGRkZMTDsgZlNFVF9PVkVSRkxPVygpOworCQl9 IGVsc2UgeworCQkJLyogb3ZlcmZsb3dlZCB0byBwb3NpdGl2ZSwgbWFrZSBtYXggbmVnICovCisJ CQlEU1Q9MHg4MDAwMDAwMDAwMDAwMDAwTEw7IGZTRVRfT1ZFUkZMT1coKTsKKwkJfQorCSAgfSBl bHNlIHsKKwkJLyogc2lnbnMgZGlkIG5vdCBtaXNtYXRjaCwgT0sgKi8KKwkJRFNUID0gX19zdW07 CisJICB9CisgICAgICAgIH0sCisJKCkKKykKKworREVGX01BQ1JPKAorCWZTQVRVTiwKKwkoKGZa WFROKE4sNjQsVkFMKSA9PSAoVkFMKSkgPyAoVkFMKSA6IGZTQVRVVkFMTihOLFZBTCkpLAorCSgp CispCisKK0RFRl9NQUNSTygKKwlmU0FUSCwKKwkoZlNBVE4oMTYsVkFMKSksCisJKCkKKykKKwor CitERUZfTUFDUk8oCisJZlNBVFVILAorCShmU0FUVU4oMTYsVkFMKSksCisJKCkKKykKKworREVG X01BQ1JPKAorCWZTQVRVQiwKKwkoZlNBVFVOKDgsVkFMKSksCisJKCkKKykKK0RFRl9NQUNSTygK KwlmU0FUQiwKKwkoZlNBVE4oOCxWQUwpKSwKKwkoKQorKQorCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworLyogaW1tZWRpYXRlIGV4dGVuc2lvbiAgICAgICAgICAg ICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworREVGX01B Q1JPKAorCWZJTU1FWFQsCisJKElNTSA9IElNTSksCisJKEFfRVhURU5EQUJMRSkKKykKKworREVG X01BQ1JPKAorCWZNVVNUX0lNTUVYVCwKKwlmSU1NRVhUKElNTSksCisJKEFfRVhURU5EQUJMRSkK KykKKworREVGX01BQ1JPKAorCWZQQ0FMSUdOLAorCUlNTT0oSU1NICYgflBDQUxJR05fTUFTSyks CisJKEFfRVhURU5EQUJMRSkKKykKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisvKiBSZWFkIGFuZCBXcml0ZSBJbXBsaWNpdCBSZWdzICAgICAgKi8KKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitERUZfTUFDUk8oCisJZlJFQURfTFIs IC8qIHJlYWQgbGluayByZWdpc3RlciAqLworCShSRUFEX1JSRUcoUkVHX0xSKSksICAgICAgICAg IC8qIGJlaGF2aW9yICovCisJKCkKKykKKworREVGX01BQ1JPKAorCWZXUklURV9MUiwgLyogd3Jp dGUgbHIgKi8KKwlXUklURV9SUkVHKFJFR19MUixBKSwgICAgICAgICAgLyogYmVoYXZpb3IgKi8K KwkoQV9JTVBMSUNJVF9XUklURVNfTFIpCispCisKK0RFRl9NQUNSTygKKwlmV1JJVEVfRlAsIC8q IHdyaXRlIHNwICovCisJV1JJVEVfUlJFRyhSRUdfRlAsQSksICAgICAgICAgIC8qIGJlaGF2aW9y ICovCisJKEFfSU1QTElDSVRfV1JJVEVTX0ZQKQorKQorCitERUZfTUFDUk8oCisJZldSSVRFX1NQ LCAvKiB3cml0ZSBzcCAqLworICAgICAgICBXUklURV9SUkVHKFJFR19TUCxBKSwgICAgICAgICAg LyogYmVoYXZpb3IgKi8KKwkoQV9JTVBMSUNJVF9XUklURVNfU1ApCispCisKK0RFRl9NQUNSTygK KwlmUkVBRF9TUCwgLyogcmVhZCBzdGFjayBwb2ludGVyICovCisJKFJFQURfUlJFRyhSRUdfU1Ap KSwgICAgICAgICAgLyogYmVoYXZpb3IgKi8KKwkoKQorKQorCitERUZfTUFDUk8oCisJZlJFQURf TEMwLCAvKiByZWFkIGxvb3AgY291bnQgKi8KKwkoUkVBRF9SUkVHKFJFR19MQzApKSwgICAgICAg ICAgLyogYmVoYXZpb3IgKi8KKwkoKQorKQorCitERUZfTUFDUk8oCisJZlJFQURfTEMxLCAvKiBy ZWFkIGxvb3AgY291bnQgKi8KKwkoUkVBRF9SUkVHKFJFR19MQzEpKSwgICAgICAgICAgLyogYmVo YXZpb3IgKi8KKwkoKQorKQorCitERUZfTUFDUk8oCisJZlJFQURfU0EwLCAvKiByZWFkIHN0YXJ0 IGFkZHIgKi8KKwkoUkVBRF9SUkVHKFJFR19TQTApKSwgICAgICAgICAgLyogYmVoYXZpb3IgKi8K KwkoKQorKQorCitERUZfTUFDUk8oCisJZlJFQURfU0ExLCAvKiByZWFkIHN0YXJ0IGFkZHIgKi8K KwkoUkVBRF9SUkVHKFJFR19TQTEpKSwgICAgICAgICAgLyogYmVoYXZpb3IgKi8KKwkoKQorKQor CisKK0RFRl9NQUNSTygKKwlmUkVBRF9GUCwgLyogcmVhZCBmcmFtZSBwb2ludGVyICovCisJKFJF QURfUlJFRyhSRUdfRlApKSwgICAgICAgICAgLyogYmVoYXZpb3IgKi8KKwkoKQorKQorCitERUZf TUFDUk8oCisJZlJFQURfR1AsIC8qIHJlYWQgZ2xvYmFsIHBvaW50ZXIgKi8KKwkoaW5zbi0+ZXh0 ZW5zaW9uX3ZhbGlkID8gMCA6IFJFQURfUlJFRyhSRUdfR1ApKSwgICAgICAgICAgLyogYmVoYXZp b3IgKi8KKwkoKQorKQorCitERUZfTUFDUk8oCisJZlJFQURfUEMsIC8qIHJlYWQgUEMgKi8KKwko UkVBRF9SUkVHKFJFR19QQykpLCAgICAgICAgICAvKiBiZWhhdmlvciAqLworCSgpCispCisKK0RF Rl9NQUNSTygKKwlmUkVBRF9OUEMsIC8qIHJlYWQgbmV4dCBQQyAqLworCSh0aHJlYWQtPm5leHRf UEMgJiAoMHhmZmZmZmZmZSkpLCAgICAgICAgICAvKiBiZWhhdmlvciAqLworCSgpCispCisKK0RF Rl9NQUNSTygKKwlmUkVBRF9QMCwgLyogcmVhZCBQcmVkaWNhdGUgMCAqLworCShSRUFEX1BSRUco MCkpLCAgICAgICAgICAvKiBiZWhhdmlvciAqLworCSgpCispCisKK0RFRl9NQUNSTygKKwlmUkVB RF9QMywgLyogcmVhZCBQcmVkaWNhdGUgMyAqLworCShSRUFEX1BSRUcoMykpLCAgICAgICAgICAv KiBiZWhhdmlvciAqLworCSgpCispCisKK0RFRl9NQUNSTygKKwlmQ0hFQ0tfUENBTElHTiwKKwlp ZiAoKChBKSAmIFBDQUxJR05fTUFTSykpIHsKKwkJcmVnaXN0ZXJfZXJyb3JfZXhjZXB0aW9uKHRo cmVhZCxQUkVDSVNFX0NBVVNFX1BDX05PVF9BTElHTkVELHRocmVhZC0+UmVnc1tSRUdfQkFEVkEw XSx0aHJlYWQtPlJlZ3NbUkVHX0JBRFZBMV0sR0VUX1NTUl9GSUVMRChTU1JfQlZTKSxHRVRfU1NS X0ZJRUxEKFNTUl9WMCksR0VUX1NTUl9GSUVMRChTU1JfVjEpLDApOworCX0sCisJKCkKKykKKwor REVGX01BQ1JPKAorCWZXUklURV9OUEMsIC8qIHdyaXRlIG5leHQgUEMgKi8KKwlpZiAoIXRocmVh ZC0+YnJhbmNoX3Rha2VuKSB7CisgICAgICAgICAgIGlmIChBICE9IHRocmVhZC0+bmV4dF9QQykg eworICAgICAgICAgICAgIHRocmVhZC0+bmV4dF9wa3RfZ3Vlc3M9dGhyZWFkLT5sYXN0X3BrdC0+ dGFrZW5fcHRyOworICAgICAgICAgICB9CisJICAgZkNIRUNLX1BDQUxJR04oQSk7CisgICAgICAg ICAgIHRocmVhZC0+YnJhbmNoZWQgPSAxOyB0aHJlYWQtPmJyYW5jaF90YWtlbiA9IDE7IHRocmVh ZC0+bmV4dF9QQyA9IEE7IFwKKyAgICAgICAgICAgdGhyZWFkLT5icmFuY2hfb2Zmc2V0ID0gaW5z bi0+ZW5jb2Rpbmdfb2Zmc2V0OyB0aHJlYWQtPmJyYW5jaF9vcGNvZGUgPSBpbnNuLT5vcGNvZGU7 CisgICAgICAgIH0KKyAgICAgICAgICwgICAgICAgICAgLyogYmVoYXZpb3IgKi8KKwkoQV9DT0Yp CispCisKK0RFRl9NQUNSTygKKwlmQlJBTkNILAorCWZXUklURV9OUEMoTE9DKTsgZkNPRl9DQUxM QkFDSyhMT0MsVFlQRSksCisJKCkKKykKKworREVGX01BQ1JPKAorCWZKVU1QUiwJLyogQSBqdW1w ciBoYXMgZXhlY3V0ZWQgKi8KKwl7ZkJSQU5DSChUQVJHRVQsQ09GX1RZUEVfSlVNUFIpO30sCisJ KEFfSU5ESVJFQ1QpCispCisKK0RFRl9NQUNSTygKKwlmSElOVEpSLAkvKiBBIGhpbnRqciBpbnN0 cnVjdGlvbiBoYXMgZXhlY3V0ZWQgKi8KKwl7IH0sCispCisKK0RFRl9NQUNSTygKKwlmQ0FMTCwJ LyogRG8gYSBjYWxsICovCisJaWYgKCF0aHJlYWQtPmJyYW5jaF90YWtlbikge2ZCUF9SQVNfQ0FM TChBKTsgZldSSVRFX0xSKGZSRUFEX05QQygpKTsgZkJSQU5DSChBLENPRl9UWVBFX0NBTEwpO30s CisJKEFfQ09GLEFfSU1QTElDSVRfV1JJVEVTX0xSLEFfQ0FMTCkKKykKKworREVGX01BQ1JPKAor CWZDQUxMUiwJLyogRG8gYSBjYWxsIFJlZ2lzdGVyICovCisJaWYgKCF0aHJlYWQtPmJyYW5jaF90 YWtlbikge2ZCUF9SQVNfQ0FMTChBKTsgZldSSVRFX0xSKGZSRUFEX05QQygpKTsgZkJSQU5DSChB LENPRl9UWVBFX0NBTExSKTt9LAorCShBX0NPRixBX0lNUExJQ0lUX1dSSVRFU19MUixBX0NBTEwp CispCisKK0RFRl9NQUNSTygKKwlmV1JJVEVfTE9PUF9SRUdTMCwgLyogd3JpdGUgbG4sc2EsZWEs bGMgKi8KKwl7V1JJVEVfUlJFRyhSRUdfTEMwLENPVU5UKTsKKyAgICAgICAgIFdSSVRFX1JSRUco UkVHX1NBMCxTVEFSVCk7fSwKKwkoQV9JTVBMSUNJVF9XUklURVNfTEMwLEFfSU1QTElDSVRfV1JJ VEVTX1NBMCkKKykKKworREVGX01BQ1JPKAorCWZXUklURV9MT09QX1JFR1MxLCAvKiB3cml0ZSBs bixzYSxlYSxsYyAqLworCXtXUklURV9SUkVHKFJFR19MQzEsQ09VTlQpOworICAgICAgICAgV1JJ VEVfUlJFRyhSRUdfU0ExLFNUQVJUKTt9LAorCShBX0lNUExJQ0lUX1dSSVRFU19MQzEsQV9JTVBM SUNJVF9XUklURVNfU0ExKQorKQorCitERUZfTUFDUk8oCisJZldSSVRFX0xDMCwKKwlXUklURV9S UkVHKFJFR19MQzAsVkFMKSwKKwkoQV9JTVBMSUNJVF9XUklURVNfTEMwKQorKQorCitERUZfTUFD Uk8oCisJZldSSVRFX0xDMSwKKwlXUklURV9SUkVHKFJFR19MQzEsVkFMKSwKKwkoQV9JTVBMSUNJ VF9XUklURVNfTEMxKQorKQorCitERUZfTUFDUk8oCisJZkNBUlJZX0ZST01fQURELAorCWNhcnJ5 X2Zyb21fYWRkNjQoQSxCLEMpLAorCS8qIE5PVEhJTkcgKi8KKykKKworREVGX01BQ1JPKAorCWZT RVRfT1ZFUkZMT1csCisJU0VUX1VTUl9GSUVMRChVU1JfT1ZGLDEpLAorCSgpCispCisKK0RFRl9N QUNSTygKKwlmU0VUX0xQQ0ZHLAorCVNFVF9VU1JfRklFTEQoVVNSX0xQQ0ZHLChWQUwpKSwKKwko KQorKQorCisKK0RFRl9NQUNSTygKKwlmR0VUX0xQQ0ZHLAorCShHRVRfVVNSX0ZJRUxEKFVTUl9M UENGRykpLAorCSgpCispCisKKworCitERUZfTUFDUk8oCisJZldSSVRFX1AwLCAvKiB3cml0ZSBQ cmVkaWNhdGUgMCAqLworCVdSSVRFX1BSRUcoMCxWQUwpLCAgICAgICAgICAvKiBiZWhhdmlvciAq LworCShBX0lNUExJQ0lUX1dSSVRFU19QMCkKKykKKworREVGX01BQ1JPKAorCWZXUklURV9QMSwg Lyogd3JpdGUgUHJlZGljYXRlIDAgKi8KKwlXUklURV9QUkVHKDEsVkFMKSwgICAgICAgICAgLyog YmVoYXZpb3IgKi8KKwkoQV9JTVBMSUNJVF9XUklURVNfUDEpCispCisKK0RFRl9NQUNSTygKKwlm V1JJVEVfUDIsIC8qIHdyaXRlIFByZWRpY2F0ZSAwICovCisJV1JJVEVfUFJFRygyLFZBTCksICAg ICAgICAgIC8qIGJlaGF2aW9yICovCisJKEFfSU1QTElDSVRfV1JJVEVTX1AyKQorKQorCitERUZf TUFDUk8oCisJZldSSVRFX1AzLCAvKiB3cml0ZSBQcmVkaWNhdGUgMCAqLworCVdSSVRFX1BSRUco MyxWQUwpLCAgICAgLyogYmVoYXZpb3IgKi8KKwkoQV9JTVBMSUNJVF9XUklURVNfUDMpCispCisK K0RFRl9NQUNSTygKKwlmUEFSVDEsIC8qIHdyaXRlIFByZWRpY2F0ZSAwICovCisJaWYgKGluc24t PnBhcnQxKSB7IFdPUks7IHJldHVybjsgfSwgICAgICAgICAgLyogYmVoYXZpb3IgKi8KKwkvKiBv cHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisvKiBDYXN0aW5nLCBTaWduLVplcm8gZXh0ZW5zaW9uLCBldGMgKi8KKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitERUZfTUFDUk8oCisJZkNB U1Q0dSwgLyogbWFjcm8gbmFtZSAqLworCSgoc2l6ZTR1X3QpKEEpKSwgICAgICAgICAgLyogYmVo YXZpb3IgKi8KKwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKK0RFRl9NQUNSTygKKwlm Q0FTVDRzLCAvKiBtYWNybyBuYW1lICovCisJKChzaXplNHNfdCkoQSkpLCAgICAgICAgICAvKiBi ZWhhdmlvciAqLworCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01BQ1JPKAor CWZDQVNUOHUsIC8qIG1hY3JvIG5hbWUgKi8KKwkoKHNpemU4dV90KShBKSksICAgICAgICAgIC8q IGJlaGF2aW9yICovCisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorCitERUZfTUFDUk8o CisJZkNBU1Q4cywgLyogbWFjcm8gbmFtZSAqLworCSgoc2l6ZThzX3QpKEEpKSwgICAgICAgICAg LyogYmVoYXZpb3IgKi8KKwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKK0RFRl9NQUNS TygKKwlmQ0FTVDRfNHMsIC8qIG1hY3JvIG5hbWUgKi8KKwkoKHNpemU0c190KShBKSksCisJLyog b3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorCitERUZfTUFDUk8oCisJZkNBU1Q0XzR1LCAvKiBt YWNybyBuYW1lICovCisJKChzaXplNHVfdCkoQSkpLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMg Ki8KKykKKworCitERUZfTUFDUk8oCisJZkNBU1Q0XzhzLCAvKiBtYWNybyBuYW1lICovCisJKChz aXplOHNfdCkoKHNpemU0c190KShBKSkpLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykK KworREVGX01BQ1JPKAorCWZDQVNUNF84dSwgLyogbWFjcm8gbmFtZSAqLworCSgoc2l6ZTh1X3Qp KChzaXplNHVfdCkoQSkpKSwKKwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKK0RFRl9N QUNSTygKKwlmQ0FTVDhfOHMsIC8qIG1hY3JvIG5hbWUgKi8KKwkoKHNpemU4c190KShBKSksCisJ Lyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorCitERUZfTUFDUk8oCisJZkNBU1Q4Xzh1LCAv KiBtYWNybyBuYW1lICovCisJKChzaXplOHVfdCkoQSkpLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0 ZXMgKi8KKykKKworREVGX01BQ1JPKAorCWZDQVNUMl84cywgLyogbWFjcm8gbmFtZSAqLworCSgo c2l6ZThzX3QpKChzaXplMnNfdCkoQSkpKSwKKwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICovCisp CitERUZfTUFDUk8oCisJZkNBU1QyXzh1LCAvKiBtYWNybyBuYW1lICovCisJKChzaXplOHVfdCko KHNpemUydV90KShBKSkpLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01B Q1JPKAorCWZaRThfMTYsIC8qIHplcm8tZXh0ZW5kIDggdG8gMTYgKi8KKwkoKHNpemUyc190KSgo c2l6ZTF1X3QpKEEpKSksCisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorREVGX01BQ1JP KAorCWZTRThfMTYsIC8qIHNpZ24tZXh0ZW5kIDggdG8gMTYgKi8KKwkoKHNpemUyc190KSgoc2l6 ZTFzX3QpKEEpKSksCisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorCisKK0RFRl9NQUNS TygKKwlmU0UxNl8zMiwgLyogc2lnbi1leHRlbmQgMTYgdG8gMzIgKi8KKwkoKHNpemU0c190KSgo c2l6ZTJzX3QpKEEpKSksICAgICAgICAgIC8qIGJlaGF2aW9yICovCisJLyogb3B0aW9uYWwgYXR0 cmlidXRlcyAqLworKQorCitERUZfTUFDUk8oCisJZlpFMTZfMzIsIC8qIHplcm8tZXh0ZW5kIDE2 IHRvIDMyICovCisJKChzaXplNHVfdCkoKHNpemUydV90KShBKSkpLCAgICAgICAgICAvKiBiZWhh dmlvciAqLworCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01BQ1JPKAorCWZT RTMyXzY0LAorCSggKHNpemU4c190KSgoc2l6ZTRzX3QpKEEpKSApLCAgICAgICAgICAvKiBiZWhh dmlvciAqLworCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01BQ1JPKAorCWZa RTMyXzY0LAorCSggKHNpemU4dV90KSgoc2l6ZTR1X3QpKEEpKSApLCAgICAgICAgICAvKiBiZWhh dmlvciAqLworCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01BQ1JPKAorCWZT RThfMzIsIC8qIHNpZ24tZXh0ZW5kIDggdG8gMzIgKi8KKwkoKHNpemU0c190KSgoc2l6ZTFzX3Qp KEEpKSksCisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorCitERUZfTUFDUk8oCisJZlpF OF8zMiwgLyogemVyby1leHRlbmQgOCB0byAzMiAqLworCSgoc2l6ZTRzX3QpKChzaXplMXVfdCko QSkpKSwKKwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworLyogRFNQIGFyaXRobWV0aWMgc3VwcG9ydCAgICAgICAg ICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworREVGX01BQ1JP KAorCWZNUFk4VVUsIC8qIG11bHRpcGx5IGhhbGYgaW50ZWdlciAqLworCShpbnQpKGZaRThfMTYo QSkqZlpFOF8xNihCKSksICAgICAvKiBiZWhhdmlvciAqLworCSgpCispCitERUZfTUFDUk8oCisJ Zk1QWThVUywgLyogbXVsdGlwbHkgaGFsZiBpbnRlZ2VyICovCisJKGludCkoZlpFOF8xNihBKSpm U0U4XzE2KEIpKSwgICAgIC8qIGJlaGF2aW9yICovCisJKCkKKykKK0RFRl9NQUNSTygKKwlmTVBZ OFNVLCAvKiBtdWx0aXBseSBoYWxmIGludGVnZXIgKi8KKwkoaW50KShmU0U4XzE2KEEpKmZaRThf MTYoQikpLCAgICAgLyogYmVoYXZpb3IgKi8KKwkoKQorKQorCitERUZfTUFDUk8oCisJZk1QWThT UywgLyogbXVsdGlwbHkgaGFsZiBpbnRlZ2VyICovCisJKGludCkoKHNob3J0KShBKSooc2hvcnQp KEIpKSwgICAgIC8qIGJlaGF2aW9yICovCisJKCkKKykKKworREVGX01BQ1JPKAorCWZNUFkxNlNT LCAvKiBtdWx0aXBseSBoYWxmIGludGVnZXIgKi8KKwlmU0UzMl82NChmU0UxNl8zMihBKSpmU0Ux Nl8zMihCKSksICAgICAvKiBiZWhhdmlvciAqLworCSgpCispCisKK0RFRl9NQUNSTygKKwlmTVBZ MTZVVSwgLyogbXVsdGlwbHkgdW5zaWduZWQgaGFsZiBpbnRlZ2VyICovCisJZlpFMzJfNjQoZlpF MTZfMzIoQSkqZlpFMTZfMzIoQikpLCAgICAgLyogYmVoYXZpb3IgKi8KKwkoKQorKQorCitERUZf TUFDUk8oCisJZk1QWTE2U1UsIC8qIG11bHRpcGx5IGhhbGYgaW50ZWdlciAqLworCWZTRTMyXzY0 KGZTRTE2XzMyKEEpKmZaRTE2XzMyKEIpKSwgICAgIC8qIGJlaGF2aW9yICovCisJKCkKKykKKwor REVGX01BQ1JPKAorCWZNUFkxNlVTLCAvKiBtdWx0aXBseSBoYWxmIGludGVnZXIgKi8KKwlmTVBZ MTZTVShCLEEpLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmTVBZMzJTUywgLyogbXVsdGlwbHkg aGFsZiBpbnRlZ2VyICovCisJKGZTRTMyXzY0KEEpKmZTRTMyXzY0KEIpKSwgICAgIC8qIGJlaGF2 aW9yICovCisJKCkKKykKKworREVGX01BQ1JPKAorCWZNUFkzMlVVLCAvKiBtdWx0aXBseSBoYWxm IGludGVnZXIgKi8KKwkoZlpFMzJfNjQoQSkqZlpFMzJfNjQoQikpLCAgICAgLyogYmVoYXZpb3Ig Ki8KKwkoKQorKQorCitERUZfTUFDUk8oCisJZk1QWTMyU1UsIC8qIG11bHRpcGx5IGhhbGYgaW50 ZWdlciAqLworCShmU0UzMl82NChBKSpmWkUzMl82NChCKSksICAgICAvKiBiZWhhdmlvciAqLwor CSgpCispCisKK0RFRl9NQUNSTygKKwlmTVBZMzIxNlNTLCAvKiBtdWx0aXBseSBtaXhlZCBwcmVj aXNpb24gKi8KKwkoZlNFMzJfNjQoQSkqZlNYVE4oMTYsNjQsQikpLCAgICAgLyogYmVoYXZpb3Ig Ki8KKwkoKQorKQorCitERUZfTUFDUk8oCisJZk1QWTMyMTZTVSwgLyogbXVsdGlwbHkgbWl4ZWQg cHJlY2lzaW9uICovCisJKGZTRTMyXzY0KEEpKmZaWFROKDE2LDY0LEIpKSwgICAgIC8qIGJlaGF2 aW9yICovCisJKCkKKykKKworREVGX01BQ1JPKAorCWZST1VORCwgLyogb3B0aW9uYWwgcm91bmRp bmcgKi8KKwkoQSsweDgwMDApLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVG X01BQ1JPKAorCWZDTElQLCAvKiBvcHRpb25hbCByb3VuZGluZyAqLworCXsgc2l6ZTRzX3QgbWF4 diA9ICgxPDxVKS0xOworCSBzaXplNHNfdCBtaW52ID0gLSgxPDxVKTsKKwkgRFNUID0gZk1JTiht YXh2LGZNQVgoU1JDLG1pbnYpKTsKKwl9LAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykK KworREVGX01BQ1JPKAorCWZDUk5ELCAvKiBvcHRpb25hbCByb3VuZGluZyAqLworCSgoKChBKSYw eDMpPT0weDMpPygoQSkrMSk6KChBKSkpLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykK KworREVGX01BQ1JPKAorCWZSTkROLCAvKiBSb3VuZGluZyB0byBhIGJvdW5kYXJ5ICovCisJKCgo KE4pPT0wKT8oQSk6KCgoZlNFMzJfNjQoQSkpKygxPDwoKE4pLTEpKSkpKSksCisJLyogb3B0aW9u YWwgYXR0cmlidXRlcyAqLworKQorCitERUZfTUFDUk8oCisJZkNSTkROLCAvKiBSb3VuZGluZyB0 byBhIGJvdW5kYXJ5ICovCisJKGNvbnZfcm91bmQoQSxOKSksCisJLyogb3B0aW9uYWwgYXR0cmli dXRlcyAqLworKQorCitERUZfTUFDUk8oCisJZkFERDEyOCwgLyogUm91bmRpbmcgdG8gYSBib3Vu ZGFyeSAqLworCShhZGQxMjgoQSwgQikpLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykK K0RFRl9NQUNSTygKKwlmU1VCMTI4LCAvKiBSb3VuZGluZyB0byBhIGJvdW5kYXJ5ICovCisJKHN1 YjEyOChBLCBCKSksCisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorREVGX01BQ1JPKAor CWZTSElGVFIxMjgsIC8qIFJvdW5kaW5nIHRvIGEgYm91bmRhcnkgKi8KKwkoc2hpZnRyMTI4KEEs IEIpKSwKKwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKK0RFRl9NQUNSTygKKwlmU0hJ RlRMMTI4LCAvKiBSb3VuZGluZyB0byBhIGJvdW5kYXJ5ICovCisJKHNoaWZ0bDEyOChBLCBCKSks CisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorCitERUZfTUFDUk8oCisJZkFORDEyOCwg LyogUm91bmRpbmcgdG8gYSBib3VuZGFyeSAqLworCShhbmQxMjgoQSwgQikpLAorCS8qIG9wdGlv bmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01BQ1JPKAorCWZDQVNUOFNfMTZTLCAvKiBSb3Vu ZGluZyB0byBhIGJvdW5kYXJ5ICovCisJKGNhc3Q4c190b18xNnMoQSkpLAorCS8qIG9wdGlvbmFs IGF0dHJpYnV0ZXMgKi8KKykKK0RFRl9NQUNSTygKKwlmQ0FTVDE2U184UywgLyogUm91bmRpbmcg dG8gYSBib3VuZGFyeSAqLworCShjYXN0MTZzX3RvXzhzKEEpKSwKKwkvKiBvcHRpb25hbCBhdHRy aWJ1dGVzICovCispCisKK0RFRl9NQUNSTygKKwlmRUFfUkksIC8qIENhbGN1bGF0ZSBFQSB3aXRo IFJlZ2lzdGVyICsgSW1tZWRpYXRlIE9mZnNldCAqLworCWRvIHsgRUE9UkVHK0lNTTsgZkRPQ0hL UEFHRUNST1NTKFJFRyxFQSk7IH0gd2hpbGUgKDApLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlm RUFfUlJzLCAvKiBDYWxjdWxhdGUgRUEgd2l0aCBSZWdpc3RlciArIFJlZ2lzdGVycyBzY2FsZWQg T2Zmc2V0ICovCisJZG8geyBFQT1SRUcrKFJFRzI8PFNDQUxFKTsgZkRPQ0hLUEFHRUNST1NTKFJF RyxFQSk7IH0gd2hpbGUgKDApLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmRUFfSVJzLCAvKiBD YWxjdWxhdGUgRUEgd2l0aCBJbW1lZGlhdGUgKyBSZWdpc3RlcnMgc2NhbGVkIE9mZnNldCAqLwor CWRvIHsgRUE9SU1NKyhSRUc8PFNDQUxFKTsgZkRPQ0hLUEFHRUNST1NTKElNTSxFQSk7IH0gd2hp bGUgKDApLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmRUFfSU1NLCAvKiBDYWxjdWxhdGUgRUEg d2l0aCBJbW1lZGlhdGUgKi8KKwlFQT1JTU0sCisJKCkKKykKKworREVGX01BQ1JPKAorCWZFQV9S RUcsIC8qIENhbGN1bGF0ZSBFQSB3aXRoIFJFR0lTVEVSICovCisJRUE9UkVHLAorCSgpCispCisK K0RFRl9NQUNSTygKKwlmRUFfR1BJLCAvKiBDYWxjdWxhdGUgRUEgd2l0aCBHbG9iYWwgUG9pdG5l ciArIEltbWVkaWF0ZSAqLworICAgIGRvIHsgRUE9ZlJFQURfR1AoKStJTU07IGZHUF9ET0NIS1BB R0VDUk9TUyhmUkVBRF9HUCgpLEVBKTsgfSB3aGlsZSAoMCksCisJKCkKKykKKworREVGX01BQ1JP KAorCWZQTV9JLCAvKiBQb3N0IE1vZGlmeSBSZWdpc3RlciBieSBJbW1lZGlhdGUqLworCWRvIHsg UkVHID0gUkVHICsgSU1NOyB9IHdoaWxlICgwKSwKKwkoKQorKQorCitERUZfTUFDUk8oCisJZlBN X00sIC8qIFBvc3QgTW9kaWZ5IFJlZ2lzdGVyIGJ5IE0gcmVnaXN0ZXIgKi8KKwlkbyB7IFJFRyA9 IFJFRyArIE1WQUw7IH0gd2hpbGUgKDApLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmU0NBTEUs IC8qIHNjYWxlIGJ5IE4gKi8KKwkoKChzaXplOHNfdCkoQSkpPDxOKSwKKwkvKiBvcHRpb25hbCBh dHRyaWJ1dGVzICovCispCisKK0RFRl9NQUNSTygKKwlmU0FUVywgLyogc2F0dXJhdGluZyB0byAz Mi1iaXRzKi8KKwlmU0FUTigzMiwoKGxvbmcgbG9uZylBKSksCisJKCkKKykKKworREVGX01BQ1JP KAorCWZTQVQsIC8qIHNhdHVyYXRpbmcgdG8gMzItYml0cyovCisJZlNBVE4oMzIsKEEpKSwKKwko KQorKQorCitERUZfTUFDUk8oCisJZlNBVF9PUklHX1NITCwgLyogU2F0dXJhdGluZyB0byAzMi1i aXRzLCB3aXRoIG9yaWdpbmFsIHZhbHVlLCBmb3Igc2hpZnQgbGVmdCAqLworCSgoKChzaXplNHNf dCkoKGZTQVQoQSkpIF4gKChzaXplNHNfdCkoT1JJR19SRUcpKSkpIDwgMCkgPworCQlmU0FUVkFM TigzMiwoKHNpemU0c190KShPUklHX1JFRykpKSA6CisJCSgoKChPUklHX1JFRykgPiAwKSAmJiAo KEEpID09IDApKSA/CisJCQlmU0FUVkFMTigzMiwoT1JJR19SRUcpKSA6CisJCQlmU0FUKEEpKSks CisJKCkKKykKKworREVGX01BQ1JPKAorCWZQQVNTLAorCUEsCispCisKK0RFRl9NQUNSTygKKwlm Uk5ELCAvKiBzYXR1cmF0aW5nIHRvIDMyLWJpdHMqLworCSgoKEEpKzEpPj4xKSwKKykKKworCitE RUZfTUFDUk8oCisJZkJJRElSX1NISUZUTCwKKwkoKChTSEFNVCkgPCAwKSA/ICgoZkNBU1QjI1JF R1NUWVBFKFNSQykgPj4gKCgtKFNIQU1UKSktMSkpID4+MSkgOiAoZkNBU1QjI1JFR1NUWVBFKFNS QykgPDwgKFNIQU1UKSkpLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmQklESVJfQVNISUZUTCwK KwlmQklESVJfU0hJRlRMKFNSQyxTSEFNVCxSRUdTVFlQRSMjcyksCisJKCkKKykKKworREVGX01B Q1JPKAorCWZCSURJUl9MU0hJRlRMLAorCWZCSURJUl9TSElGVEwoU1JDLFNIQU1ULFJFR1NUWVBF IyN1KSwKKwkoKQorKQorCitERUZfTUFDUk8oCisJZkJJRElSX0FTSElGVExfU0FULAorCSgoKFNI QU1UKSA8IDApID8gKChmQ0FTVCMjUkVHU1RZUEUjI3MoU1JDKSA+PiAoKC0oU0hBTVQpKS0xKSkg Pj4xKSA6IGZTQVRfT1JJR19TSEwoZkNBU1QjI1JFR1NUWVBFIyNzKFNSQykgPDwgKFNIQU1UKSwo U1JDKSkpLAorCSgpCispCisKKworREVGX01BQ1JPKAorCWZCSURJUl9TSElGVFIsCisJKCgoU0hB TVQpIDwgMCkgPyAoKGZDQVNUIyNSRUdTVFlQRShTUkMpIDw8ICgoLShTSEFNVCkpLTEpKSA8PCAx KSA6IChmQ0FTVCMjUkVHU1RZUEUoU1JDKSA+PiAoU0hBTVQpKSksCisJKCkKKykKKworREVGX01B Q1JPKAorCWZCSURJUl9BU0hJRlRSLAorCWZCSURJUl9TSElGVFIoU1JDLFNIQU1ULFJFR1NUWVBF IyNzKSwKKwkoKQorKQorCitERUZfTUFDUk8oCisJZkJJRElSX0xTSElGVFIsCisJZkJJRElSX1NI SUZUUihTUkMsU0hBTVQsUkVHU1RZUEUjI3UpLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmQklE SVJfQVNISUZUUl9TQVQsCisJKCgoU0hBTVQpIDwgMCkgPyBmU0FUX09SSUdfU0hMKChmQ0FTVCMj UkVHU1RZUEUjI3MoU1JDKSA8PCAoKC0oU0hBTVQpKS0xKSkgPDwgMSwoU1JDKSkgOiAoZkNBU1Qj I1JFR1NUWVBFIyNzKFNSQykgPj4gKFNIQU1UKSkpLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlm QVNISUZUUiwKKwkoZkNBU1QjI1JFR1NUWVBFIyNzKFNSQykgPj4gKFNIQU1UKSksCisJLyogKi8K KykKKworREVGX01BQ1JPKAorCWZMU0hJRlRSLAorCSgoKFNIQU1UKSA+PSA2NCk/MDooZkNBU1Qj I1JFR1NUWVBFIyN1KFNSQykgPj4gKFNIQU1UKSkpLAorCS8qICovCispCisKK0RFRl9NQUNSTygK KwlmUk9UTCwKKwkoKChTSEFNVCk9PTApID8gKFNSQykgOiAoKGZDQVNUIyNSRUdTVFlQRSMjdShT UkMpIDw8IChTSEFNVCkpIHwgXAorCQkoKGZDQVNUIyNSRUdTVFlQRSMjdShTUkMpID4+ICgoc2l6 ZW9mKFNSQykqOCktKFNIQU1UKSkpKSkpLAorCS8qICovCispCisKK0RFRl9NQUNSTygKKwlmUk9U UiwKKwkoKChTSEFNVCk9PTApID8gKFNSQykgOiAoKGZDQVNUIyNSRUdTVFlQRSMjdShTUkMpID4+ IChTSEFNVCkpIHwgXAorCQkoKGZDQVNUIyNSRUdTVFlQRSMjdShTUkMpIDw8ICgoc2l6ZW9mKFNS QykqOCktKFNIQU1UKSkpKSkpLAorCS8qICovCispCisKK0RFRl9NQUNSTygKKwlmQVNISUZUTCwK KwkoKChTSEFNVCkgPj0gNjQpPzA6KGZDQVNUIyNSRUdTVFlQRSMjcyhTUkMpIDw8IChTSEFNVCkp KSwKKwkvKiAqLworKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K Ky8qIEZsb2F0aW5nLVBvaW50IFN1cHBvcnQgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworREVGX01BQ1JPKAorCWZGTE9BVCwgLyogbmFtZSAq LworCSh7IHVuaW9uIHsgZmxvYXQgZjsgc2l6ZTR1X3QgaTsgfSBfZmlwdW47IF9maXB1bi5pID0g KEEpOyBfZmlwdW4uZjsgfSksICAgICAvKiBiZWhhdmlvciAqLworCShBX0ZQT1ApCispCisKK0RF Rl9NQUNSTygKKwlmVU5GTE9BVCwgLyogbXVsdGlwbHkgaGFsZiBpbnRlZ2VyICovCisJKHsgdW5p b24geyBmbG9hdCBmOyBzaXplNHVfdCBpOyB9IF9maXB1bjsgX2ZpcHVuLmYgPSAoQSk7IGlzbmFu KF9maXB1bi5mKSA/IDB4RkZGRkZGRkZVIDogX2ZpcHVuLmk7IH0pLCAgICAgLyogYmVoYXZpb3Ig Ki8KKwkoQV9GUE9QKQorKQorCitERUZfTUFDUk8oCisJZlNGTkFOVkFMLAorCTB4ZmZmZmZmZmYs CisJKCkKKykKKworREVGX01BQ1JPKAorCWZTRklORlZBTCwKKwkoKChBKSAmIDB4ODAwMDAwMDAp IHwgMHg3ZjgwMDAwMCksCisJKCkKKykKKworREVGX01BQ1JPKAorCWZTRk9ORVZBTCwKKwkoKChB KSAmIDB4ODAwMDAwMDApIHwgZlVORkxPQVQoMS4wKSksCisJKCkKKykKKworREVGX01BQ1JPKAor CWZDSEVDS1NGTkFOLAorCWRvIHsKKwkJaWYgKGlzbmFuKGZGTE9BVChBKSkpIHsKKwkJCWlmICgo ZkdFVEJJVCgyMixBKSkgPT0gMCkgZlJBSVNFRkxBR1MoRkVfSU5WQUxJRCk7CisJCQlEU1QgPSBm U0ZOQU5WQUwoKTsKKwkJfQorCX0gd2hpbGUgKDApLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlm Q0hFQ0tTRk5BTjMsCisJZG8geworCQlmQ0hFQ0tTRk5BTihEU1QsQSk7CisJCWZDSEVDS1NGTkFO KERTVCxCKTsKKwkJZkNIRUNLU0ZOQU4oRFNULEMpOworCX0gd2hpbGUgKDApLAorCSgpCispCisK K0RFRl9NQUNSTygKKwlmU0ZfQklBUywKKwkxMjcsCisJKCkKKykKKworREVGX01BQ1JPKAorCWZT Rl9NQU5UQklUUywKKwkyMywKKwkoKQorKQorCitERUZfTUFDUk8oCisJZlNGX01VTF9QT1cyLAor CShmVU5GTE9BVChmRkxPQVQoQSkgKiBmRkxPQVQoKGZTRl9CSUFTKCkgKyAoQikpIDw8IGZTRl9N QU5UQklUUygpKSkpLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmU0ZfR0VURVhQLAorCSgoKEEp ID4+IGZTRl9NQU5UQklUUygpKSAmIDB4ZmYpLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmU0Zf TUFYRVhQLAorCSgyNTQpLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmU0ZfUkVDSVBfQ09NTU9O LAorCWFyY2hfc2ZfcmVjaXBfY29tbW9uKCZOLCZELCZPLCZBKSwKKwkoQV9GUE9QKQorKQorCitE RUZfTUFDUk8oCisJZlNGX0lOVlNRUlRfQ09NTU9OLAorCWFyY2hfc2ZfaW52c3FydF9jb21tb24o Jk4sJk8sJkEpLAorCShBX0ZQT1ApCispCisKK0RFRl9NQUNSTygKKwlmRk1BRlgsCisJaW50ZXJu YWxfZm1hZngoQSxCLEMsZlNYVE4oOCw2NCxBREopKSwKKwkoKQorKQorCitERUZfTUFDUk8oCisJ ZkZNQUYsCisJaW50ZXJuYWxfZm1hZngoQSxCLEMsMCksCisJKCkKKykKKworREVGX01BQ1JPKAor CWZTRk1QWSwKKwlpbnRlcm5hbF9tcHlmKEEsQiksCisJKCkKKykKKworREVGX01BQ1JPKAorCWZN QUtFU0YsCisJKCgoKFNJR04pICYgMSkgPDwgMzEpIHwgKCgoRVhQKSAmIDB4ZmYpIDw8IGZTRl9N QU5UQklUUygpKSB8CisJCSgoTUFOVCkgJiAoKDE8PGZTRl9NQU5UQklUUygpKS0xKSkpLAorCSgp CispCisKKworREVGX01BQ1JPKAorCWZET1VCTEUsIC8qIG11bHRpcGx5IGhhbGYgaW50ZWdlciAq LworCSh7IHVuaW9uIHsgZG91YmxlIGY7IHNpemU4dV90IGk7IH0gX2ZpcHVuOyBfZmlwdW4uaSA9 IChBKTsgX2ZpcHVuLmY7IH0pLCAgICAgLyogYmVoYXZpb3IgKi8KKwkoQV9GUE9QKQorKQorCitE RUZfTUFDUk8oCisJZlVORE9VQkxFLCAvKiBtdWx0aXBseSBoYWxmIGludGVnZXIgKi8KKwkoeyB1 bmlvbiB7IGRvdWJsZSBmOyBzaXplOHVfdCBpOyB9IF9maXB1bjsgX2ZpcHVuLmYgPSAoQSk7IGlz bmFuKF9maXB1bi5mKSA/IDB4RkZGRkZGRkZGRkZGRkZGRlVMTCA6IF9maXB1bi5pOyB9KSwgICAg IC8qIGJlaGF2aW9yICovCisJKEFfRlBPUCkKKykKKworREVGX01BQ1JPKAorCWZERk5BTlZBTCwK KwkweGZmZmZmZmZmZmZmZmZmZmZVTEwsCisJKCkKKykKKworREVGX01BQ1JPKAorCWZERl9JU05P Uk1BTCwKKwkoZnBjbGFzc2lmeShmRE9VQkxFKFgpKSA9PSBGUF9OT1JNQUwpLAorCSgpCispCisK K0RFRl9NQUNSTygKKwlmREZfSVNERU5PUk0sCisJKGZwY2xhc3NpZnkoZkRPVUJMRShYKSkgPT0g RlBfU1VCTk9STUFMKSwKKwkoKQorKQorCitERUZfTUFDUk8oCisJZkRGX0lTQklHLAorCShmREZf R0VURVhQKFgpID49IDUxMiksCisJKCkKKykKKworREVGX01BQ1JPKAorCWZERl9NQU5UQklUUywK Kwk1MiwKKwkoKQorKQorCitERUZfTUFDUk8oCisJZkRGX0dFVEVYUCwKKwkoKChBKSA+PiBmREZf TUFOVEJJVFMoKSkgJiAweDdmZiksCisJKCkKKykKKworREVGX01BQ1JPKAorCWZGTUEsCisJaW50 ZXJuYWxfZm1hKEEsQixDKSwKKwkvKiBub3RoaW5nICovCispCisKK0RFRl9NQUNSTygKKwlmREZf TVBZX0hILAorCWludGVybmFsX21weWhoKEEsQixBQ0MpLAorCS8qIG5vdGhpbmcgKi8KKykKKwor REVGX01BQ1JPKAorCWZGUE9QX1NUQVJULAorCWFyY2hfZnBvcF9zdGFydCh0aHJlYWQpLAorCS8q IG5vdGhpbmcgKi8KKykKKworREVGX01BQ1JPKAorCWZGUE9QX0VORCwKKwlhcmNoX2Zwb3BfZW5k KHRocmVhZCksCisJLyogbm90aGluZyAqLworKQorCitERUZfTUFDUk8oCisJZkZQU0VUUk9VTkRf TkVBUkVTVCwKKwlmZXNldHJvdW5kKEZFX1RPTkVBUkVTVCksCisJLyogbm90aGluZyAqLworKQor CitERUZfTUFDUk8oCisJZkZQU0VUUk9VTkRfQ0hPUCwKKwlmZXNldHJvdW5kKEZFX1RPV0FSRFpF Uk8pLAorCS8qIG5vdGhpbmcgKi8KKykKKworREVGX01BQ1JPKAorCWZGUENBTkNFTEZMQUdTLAor CWZlY2xlYXJleGNlcHQoRkVfQUxMX0VYQ0VQVCksCisJLyogbm90aGluZyAqLworKQorCitERUZf TUFDUk8oCisJZklTSU5GUFJPRCwKKwkoKGlzaW5mKEEpICYmIGlzaW5mKEIpKSB8fAorCQkoaXNp bmYoQSkgJiYgaXNmaW5pdGUoQikgJiYgKChCKSAhPSAwLjApKSB8fAorCQkoaXNpbmYoQikgJiYg aXNmaW5pdGUoQSkgJiYgKChBKSAhPSAwLjApKSksCisJLyogbm90aGluZyAqLworKQorCitERUZf TUFDUk8oCisJZklTWkVST1BST0QsCisJKCgoKEEpID09IDAuMCkgJiYgaXNmaW5pdGUoQikpIHx8 ICgoKEIpID09IDAuMCkgJiYgaXNmaW5pdGUoQSkpKSwKKwkvKiBub3RoaW5nICovCispCisKK0RF Rl9NQUNSTygKKwlmUkFJU0VGTEFHUywKKwlhcmNoX3JhaXNlX2ZwZmxhZyhBKSwKKwkvKiBOT1RI SU5HICovCispCisKK0RFRl9NQUNSTygKKwlmREZfTUFYLAorCSgoKEEpPT0oQikpCisJCT8gZkRP VUJMRShmVU5ET1VCTEUoQSkgJiBmVU5ET1VCTEUoQikpCisJCTogZm1heChBLEIpKSwKKwkoQV9G UE9QKQorKQorCitERUZfTUFDUk8oCisJZkRGX01JTiwKKwkoKChBKT09KEIpKQorCQk/IGZET1VC TEUoZlVORE9VQkxFKEEpIHwgZlVORE9VQkxFKEIpKQorCQk6IGZtaW4oQSxCKSksCisJKEFfRlBP UCkKKykKKworREVGX01BQ1JPKAorCWZTRl9NQVgsCisJKCgoQSk9PShCKSkKKwkJPyBmRkxPQVQo ZlVORkxPQVQoQSkgJiBmVU5GTE9BVChCKSkKKwkJOiBmbWF4ZihBLEIpKSwKKwkoQV9GUE9QKQor KQorCitERUZfTUFDUk8oCisJZlNGX01JTiwKKwkoKChBKT09KEIpKQorCQk/IGZGTE9BVChmVU5G TE9BVChBKSB8IGZVTkZMT0FUKEIpKQorCQk6IGZtaW5mKEEsQikpLAorCShBX0ZQT1ApCispCisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogTG9hZC9TdG9yZSBz dXBwb3J0ICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKworREVGX01BQ1JPKGZMT0FELAorCXsgRFNUID0gKHNpemUjI1NJWkUjI1NJR04j I190KU1FTV9MT0FEIyNTSVpFKHRocmVhZCxFQSxpbnNuKTsgfSwKKwkoQV9MT0FELEFfTUVNTElL RSkKKykKKworREVGX01BQ1JPKGZNRU1PUCwKKwl7IG1lbW9wIyNTSVpFIyNfIyNGTlRZUEUodGhy ZWFkLEVBLFZBTFVFKTsgfSwKKwkoQV9MT0FELEFfU1RPUkUsQV9NRU1MSUtFKQorKQorCitERUZf TUFDUk8oZkdFVF9GUkFNRUtFWSwKKwlSRUFEX1JSRUcoUkVHX0ZSQU1FS0VZKSwKKwkoKQorKQor CitERUZfTUFDUk8oZkZSQU1FX1NDUkFNQkxFLAorCSgoVkFMKSBeIChmQ0FTVDh1KGZHRVRfRlJB TUVLRVkoKSkgPDwgMzIpKSwKKwkvKiBBVFRSSUJTICovCispCisKK0RFRl9NQUNSTyhmRlJBTUVf VU5TQ1JBTUJMRSwKKwlmRlJBTUVfU0NSQU1CTEUoVkFMKSwKKwkvKiBBVFRSSUJTICovCispCisK K0RFRl9NQUNSTyhmRlJBTUVDSEVDSywKKwlzeXNfY2hlY2tfZnJhbWVsaW1pdCh0aHJlYWQsQURE UixFQSksCisJKCkKKykKKworREVGX01BQ1JPKGZMT0FEX0xPQ0tFRCwKKwl7ICAgICBEU1QgPSAo c2l6ZSMjU0laRSMjU0lHTiMjX3QpbWVtX2xvYWRfbG9ja2VkKHRocmVhZCxFQSxTSVpFLGluc24p OworICB9LAorCShBX0xPQUQsQV9NRU1MSUtFKQorKQorCitERUZfTUFDUk8oZlNUT1JFLAorCXsg TUVNX1NUT1JFIyNTSVpFKHRocmVhZCxFQSxTUkMsaW5zbik7IH0sCisJKEFfU1RPUkUsQV9NRU1M SUtFKQorKQorCisKK0RFRl9NQUNSTyhmU1RPUkVfTE9DS0VELAorCXsgUFJFRCA9IChtZW1fc3Rv cmVfY29uZGl0aW9uYWwodGhyZWFkLEVBLFNSQyxTSVpFLGluc24pID8gMHhmZiA6IDApOyB9LAor CShBX1NUT1JFLEFfTUVNTElLRSkKKykKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisvKiBGdW5jdGlvbnMgdG8gaGVscCB3aXRoIGJ5dGVzICAgICAgKi8KKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitERUZfTUFDUk8oZkdFVEJZVEUs CisgICAgICAgICAoKHNpemUxc190KSgoU1JDPj4oKE4pKjgpKSYweGZmKSksCisJLyogbm90aGlu ZyAqLworKQorCitERUZfTUFDUk8oZkdFVFVCWVRFLAorICAgICAgICAgKChzaXplMXVfdCkoKFNS Qz4+KChOKSo4KSkmMHhmZikpLAorCS8qIG5vdGhpbmcgKi8KKykKKworREVGX01BQ1JPKGZTRVRC WVRFLAorCXsKKwlEU1QgPSAoRFNUICYgfigweDBmZkxMPDwoKE4pKjgpKSkgfCAoKChzaXplOHVf dCkoKFZBTCkgJiAweDBmZkxMKSkgPDwgKChOKSo4KSk7CisJfSwKKwkvKiBub3RoaW5nICovCisp CisKK0RFRl9NQUNSTyhmR0VUSEFMRiwKKyAgICAgICAgICgoc2l6ZTJzX3QpKChTUkM+PigoTikq MTYpKSYweGZmZmYpKSwKKwkvKiBub3RoaW5nICovCispCisKK0RFRl9NQUNSTyhmR0VUVUhBTEYs CisgICAgICAgICAoKHNpemUydV90KSgoU1JDPj4oKE4pKjE2KSkmMHhmZmZmKSksCisJLyogbm90 aGluZyAqLworKQorCitERUZfTUFDUk8oZlNFVEhBTEYsCisJeworCURTVCA9IChEU1QgJiB+KDB4 MGZmZmZMTDw8KChOKSoxNikpKSB8ICgoKHNpemU4dV90KSgoVkFMKSAmIDB4MGZmZmYpKSA8PCAo KE4pKjE2KSk7CisJfSwKKwkvKiBub3RoaW5nICovCispCisKKworCitERUZfTUFDUk8oZkdFVFdP UkQsCisgICAgICAgICAoKHNpemU4c190KSgoc2l6ZTRzX3QpKChTUkM+PigoTikqMzIpKSYweDBm ZmZmZmZmZkxMKSkpLAorCS8qIG5vdGhpbmcgKi8KKykKKworREVGX01BQ1JPKGZHRVRVV09SRCwK KyAgICAgICAgICgoc2l6ZTh1X3QpKChzaXplNHVfdCkoKFNSQz4+KChOKSozMikpJjB4MGZmZmZm ZmZmTEwpKSksCisJLyogbm90aGluZyAqLworKQorCitERUZfTUFDUk8oZlNFVFdPUkQsCisJewor CURTVCA9IChEU1QgJiB+KDB4MGZmZmZmZmZmTEw8PCgoTikqMzIpKSkgfCAoKChWQUwpICYgMHgw ZmZmZmZmZmZMTCkgPDwgKChOKSozMikpOworCX0sCisJLyogbm90aGluZyAqLworKQorCitERUZf TUFDUk8oZlNFVEJJVCwKKwl7CisJRFNUID0gKERTVCAmIH4oMVVMTDw8KE4pKSkgfCAoKChzaXpl OHVfdCkoVkFMKSk8PChOKSk7CisJfSwKKwkvKiBub3RoaW5nICovCispCisKK0RFRl9NQUNSTyhm R0VUQklULAorCSgoKFNSQyk+Pk4pJjEpLAorCS8qIG5vdGhpbmcgKi8KKykKKworCitERUZfTUFD Uk8oZlNFVEJJVFMsCisJZG8geworICAgICAgICBpbnQgajsKKyAgICAgICAgZm9yIChqPUxPO2o8 PUhJO2orKykgeworICAgICAgICAgIGZTRVRCSVQoaixEU1QsVkFMKTsKKyAgICAgICAgfQorCX0g d2hpbGUgKDApLAorCS8qIG5vdGhpbmcgKi8KKykKKworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisvKiBVc2VkIGZvciBwYXJpdHksIGV0Yy4uLi4uLi4uICAgICAgKi8K Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworREVGX01BQ1JPKGZDT1VO VE9ORVNfNCwKKwljb3VudF9vbmVzXzQoVkFMKSwKKwkvKiBub3RoaW5nICovCispCisKK0RFRl9N QUNSTyhmQ09VTlRPTkVTXzgsCisJY291bnRfb25lc184KFZBTCksCisJLyogbm90aGluZyAqLwor KQorCitERUZfTUFDUk8oZkJSRVZfOCwKKwlyZXZlcnNlX2JpdHNfOChWQUwpLAorCS8qIG5vdGhp bmcgKi8KKykKKworREVGX01BQ1JPKGZCUkVWXzQsCisJcmV2ZXJzZV9iaXRzXzQoVkFMKSwKKwkv KiBub3RoaW5nICovCispCisKK0RFRl9NQUNSTyhmQ0wxXzgsCisJY291bnRfbGVhZGluZ19vbmVz XzgoVkFMKSwKKwkvKiBub3RoaW5nICovCispCisKK0RFRl9NQUNSTyhmQ0wxXzQsCisJY291bnRf bGVhZGluZ19vbmVzXzQoVkFMKSwKKwkvKiBub3RoaW5nICovCispCisKK0RFRl9NQUNSTyhmSU5U RVJMRUFWRSwKKwlpbnRlcmxlYXZlKE9ERCxFVkVOKSwKKwkvKiBub3RoaW5nICovCispCisKK0RF Rl9NQUNSTyhmREVJTlRFUkxFQVZFLAorCWRlaW50ZXJsZWF2ZShNSVhFRCksCisJLyogbm90aGlu ZyAqLworKQorCitERUZfTUFDUk8oZkhJREUsCisJQSwKKwkoKQorKQorCitERUZfTUFDUk8oZkNP TlNUTEwsCisJQSMjTEwsCispCisKKy8qIERvIHRoZSB0aGluZ3MgaW4gdGhlIHBhcmVucywgYnV0 IGRvbid0IHByaW50IHRoZSBwYXJlbnMuICovCitERUZfTUFDUk8oZkVDSE8sCisJKEEpLAorCS8q IG5vdGhpbmcgKi8KKykKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisvKiBPUyBpbnRlcmZhY2UgYW5kIHN0b3Avd2FpdCAgICAgICAgICAgICAgICov CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0RFRl9N QUNSTyhmVFJBUCwKKyAgICB3YXJuKCJUcmFwIE5QQz0leCAiLGZSRUFEX05QQygpKTsKKwl3YXJu KCJUcmFwIGV4Y2VwdGlvbiwgUENZQ0xFPSVsbGQgVFlQRT0lZCBOUEM9JXggSU1NPTB4JXgiLHRo cmVhZC0+cHJvY2Vzc29yX3B0ci0+cHN0YXRzW3BjeWNsZXNdLFRSQVBUWVBFLGZSRUFEX05QQygp LElNTSk7CisJcmVnaXN0ZXJfdHJhcF9leGNlcHRpb24odGhyZWFkLGZSRUFEX05QQygpLFRSQVBU WVBFLElNTSk7LAorCSgpCispCisKK0RFRl9NQUNSTyhmQUxJR05fUkVHX0ZJRUxEX1ZBTFVFLAor CSgoVkFMKTw8cmVnX2ZpZWxkX2luZm9bRklFTERdLm9mZnNldCksCisJLyogKi8KKykKKworREVG X01BQ1JPKGZHRVRfUkVHX0ZJRUxEX01BU0ssCisJKCgoMTw8cmVnX2ZpZWxkX2luZm9bRklFTERd LndpZHRoKS0xKTw8cmVnX2ZpZWxkX2luZm9bRklFTERdLm9mZnNldCksCisJLyogKi8KKykKKwor REVGX01BQ1JPKGZSRUFEX1JFR19GSUVMRCwKKwlmRVhUUkFDVFVfQklUUyh0aHJlYWQtPlJlZ3Nb UkVHXyMjUkVHXSwKKyAgICAgICAgICAgIHJlZ19maWVsZF9pbmZvW0ZJRUxEXS53aWR0aCwKKyAg ICAgICAgICAgIHJlZ19maWVsZF9pbmZvW0ZJRUxEXS5vZmZzZXQpLAorCS8qIEFUVFJJQlMgKi8K KykKKworREVGX01BQ1JPKGZHRVRfRklFTEQsCisJZkVYVFJBQ1RVX0JJVFMoVkFMLAorCQlyZWdf ZmllbGRfaW5mb1tGSUVMRF0ud2lkdGgsCisJCXJlZ19maWVsZF9pbmZvW0ZJRUxEXS5vZmZzZXQp LAorCS8qIEFUVFJJQlMgKi8KKykKKworREVGX01BQ1JPKGZTRVRfRklFTEQsCisJZklOU0VSVF9C SVRTKFZBTCwKKwkJcmVnX2ZpZWxkX2luZm9bRklFTERdLndpZHRoLAorCQlyZWdfZmllbGRfaW5m b1tGSUVMRF0ub2Zmc2V0LAorCQkoTkVXVkFMKSksCisJLyogQVRUUklCUyAqLworKQorCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBDYWNoZSBNYW5h Z2VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKK0RFRl9NQUNSTyhmQkFSUklFUiwKKyAgICAgewor ICAgICAgICBzeXNfYmFycmllcih0aHJlYWQsIGluc24tPnNsb3QpOworICAgICB9LAorCSgpCisp CisKK0RFRl9NQUNSTyhmU1lOQ0gsCisgIHsKKyAgICAgIHN5c19zeW5jKHRocmVhZCwgaW5zbi0+ c2xvdCk7CisgIH0sCisJKCkKKykKKworREVGX01BQ1JPKGZJU1lOQywKKyAgeworICAgICAgc3lz X2lzeW5jKHRocmVhZCwgaW5zbi0+c2xvdCk7CisgIH0sCisJKCkKKykKKworCitERUZfTUFDUk8o ZkRDRkVUQ0gsCisJc3lzX2RjZmV0Y2godGhyZWFkLCAoUkVHKSwgaW5zbi0+c2xvdCksCisJKEFf TUVNTElLRSkKKykKKworREVGX01BQ1JPKGZJQ0lOVkEsCisJeworCWFyY2hfaW50ZXJuYWxfZmx1 c2godGhyZWFkLT5wcm9jZXNzb3JfcHRyLCAwLCAweGZmZmZmZmZmKTsKKyAgIAlzeXNfaWNpbnZh KHRocmVhZCwgKFJFRyksaW5zbi0+c2xvdCk7CisJfSwKKwkoQV9JQ0lOVkEpCispCisKK0RFRl9N QUNSTyhmTDJGRVRDSCwKKwlzeXNfbDJmZXRjaCh0aHJlYWQsIEFERFIsSEVJR0hULFdJRFRILFNU UklERSxGTEFHUywgaW5zbi0+c2xvdCksCisJKEFfTUVNTElLRSxBX0wyRkVUQ0gpCispCisKK0RF Rl9NQUNSTyhmRENDTEVBTkEsCisJc3lzX2RjY2xlYW5hKHRocmVhZCwgKFJFRykpLAorCShBX01F TUxJS0UpCispCisKK0RFRl9NQUNSTyhmRENDTEVBTklOVkEsCisJc3lzX2RjY2xlYW5pbnZhKHRo cmVhZCwgKFJFRyksIGluc24tPnNsb3QpLAorCShBX01FTUxJS0UsQV9EQ0NMRUFOSU5WQSkKKykK KworREVGX01BQ1JPKGZEQ1pFUk9BLAorCXN5c19kY3plcm9hKHRocmVhZCwgKFJFRykpLAorCShB X01FTUxJS0UpCispCisKK0RFRl9NQUNSTyhmQ0hFQ0tGT1JQUklWLAorCXtzeXNfY2hlY2tfcHJp dnModGhyZWFkKTsgaWYgKEVYQ0VQVElPTl9ERVRFQ1RFRCkgcmV0dXJuOyB9LAorCSgpCispCisK K0RFRl9NQUNSTyhmQ0hFQ0tGT1JHVUVTVCwKKwl7c3lzX2NoZWNrX2d1ZXN0KHRocmVhZCk7IGlm IChFWENFUFRJT05fREVURUNURUQpIHJldHVybjsgfSwKKwkoKQorKQorCitERUZfTUFDUk8oZkJS QU5DSF9TUEVDVUxBVEVfU1RBTEwsCisJeworc3lzX3NwZWN1bGF0ZV9icmFuY2hfc3RhbGwodGhy ZWFkLCBpbnNuLT5zbG90LCBKVU1QX0NPTkQoSlVNUF9QUkVEX1NFVCksCisJCQkJCQkJCQkJICAg U1BFQ19ESVIsCisJCQkJCQkJCQkJICAgRE9UTkVXVkFMLAorCQkJCQkJCQkJCSAgIEhJTlRCSVRO VU0sCisJCQkJCQkJCQkJICAgU1RSQklUTlVNLAorCQkJCQkJCQkJCSAgIDAsCisJCQkJCQkJCQkJ ICAgdGhyZWFkLT5sYXN0X3BrdC0+cGt0X2hhc19kdWFsX2p1bXAsCisJCQkJCQkJCQkJICAgaW5z bi0+aXNfMm5kX2p1bXAsCisJCQkJCQkJCQkJICAgKHRocmVhZC0+ZmV0Y2hfYWNjZXNzLnZhZGRy ICsgaW5zbi0+ZW5jb2Rpbmdfb2Zmc2V0KjQpKTsKKyAgfSwKKwkoKQorKQorCi0tIAoyLjcuNAoK