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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 014CDC77B6F for ; Tue, 11 Apr 2023 15:16:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=vUifefdU1ytZd/PEhYoR2mLyd6cISAXEQXobtKcMi5E=; b=YGge5AMYP7pwLc 9xeP9z7ukUOwXm/VBO1pWb0vE56dDmsnURvWVVN0tws6Ukj3fX+Vohdnz80bnZ+hJUbXZI5iP/q6Y hfyP54pnBvLZ0UpmMa8pNn3BC3rDY+z03/XSSdZu90s6KAugB2FUYnk1iz5It7xtrY1+r3htmxrW0 MFNZ0gKTFy918xYBEL5PzYVp9ZIth1gOhcAbwBP2fhWiyMRhmAgeKckJxPq5uF1uD8KoyLS+8gUc6 bOxt7wOtwR2JXRPbl0jGp6kg4aeL+HqimdZLUJ8H7uA/Mhj2Y11QhIXg/R5GENlhVlTsWm4HJplpj 9DF+QJAewTQsm942rZOA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pmFj5-000OjI-0M; Tue, 11 Apr 2023 15:16:07 +0000 Received: from madras.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e5ab]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pmFix-000Ohs-1t; Tue, 11 Apr 2023 15:16:04 +0000 Received: from nicolas-tpx395.localdomain (unknown [IPv6:2606:6d00:15:199e::580]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: nicolas) by madras.collabora.co.uk (Postfix) with ESMTPSA id 7AE8966031C2; Tue, 11 Apr 2023 16:15:56 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1681226157; bh=hKXlhLCaYvCfTEJz2/jhqxts6aPgvzMaxe40n05eiK4=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=nyzLPSu8XRTgrgAk6yfScQ8ios/pXiEhg0XTouBSotHE1PV+g7J3Y/0oXUt1WUZyh N9Vpn1EmQtaFqCvEZSlBi5tCYvmqaQW+WC7dRgFfPiF+SehryfM79Rq04A/gK1Fn0r JogiZLRlb9ROCmEw20OJGk9NtIKsno6J3CO0U/tyxz339pPIRyKTNJPQa+poRMM7F6 kj/F23no/ezvoXNMiCBWQjMT1C4IqLhkiGvFPOOIfu1rbCwnCE30tz7Ol6inmGJ7jn KDy/tqJZSE+zN6Yc83bT4oKWkD0KVupxoD481rMhcTCRbWbuOjseK5Cxj7LLGYWisV 2Y/JqTPjytG5g== Message-ID: <2c18f5fb9c6fbaf8f96a6540e109050bc9bb367d.camel@collabora.com> Subject: Re: [PATCH v5 09/13] media: verisilicon: Add Rockchip AV1 decoder From: Nicolas Dufresne To: Benjamin Gaignard , ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, mchehab@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, heiko@sntech.de, hverkuil-cisco@xs4all.nl Cc: linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com Date: Tue, 11 Apr 2023 11:15:46 -0400 In-Reply-To: <20230330154043.1250736-10-benjamin.gaignard@collabora.com> References: <20230330154043.1250736-1-benjamin.gaignard@collabora.com> <20230330154043.1250736-10-benjamin.gaignard@collabora.com> User-Agent: Evolution 3.46.4 (3.46.4-1.fc37) MIME-Version: 1.0 X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org TGUgamV1ZGkgMzAgbWFycyAyMDIzIMOgIDE3OjQwICswMjAwLCBCZW5qYW1pbiBHYWlnbmFyZCBh IMOpY3JpdMKgOgo+IEltcGxlbWVudCBBVjEgc3RhdGVsZXNzIGRlY29kZXIgZm9yIHJvY2tjaGlw IFZQVTk4MS4KPiBJdCBkZWNvZGUgOCBhbmQgMTAgYml0cyBBVjEgYml0c3RyZWFtcy4KPiBBVjEg c2NhbGluZyBmZWF0dXJlIGlzIGRvbmUgYnkgdGhlIHBvc3Rwcm9jZXNzb3IuCj4gCj4gU2lnbmVk LW9mZi1ieTogQmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGNvbGxhYm9yYS5j b20+Cj4gCj4gCj4gKHdpdGggSGFucycgcmVxdWVzdGVkIGNoYW5nZXMgb2YgY291cnNlKQo+IApS ZXZpZXdlZC1ieTogTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEu Y29tPj4gCj4gLS0tCj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vTWFrZWZp bGUgICB8ICAgIDEgKwo+ICAuLi4vbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJvX2h3 LmggICAgfCAgIDY0ICstCj4gIC4uLi92ZXJpc2lsaWNvbi9yb2NrY2hpcF92cHU5ODFfaHdfYXYx X2RlYy5jICB8IDIwMjQgKysrKysrKysrKysrKysrKysKPiAgLi4uL3ZlcmlzaWxpY29uL3JvY2tj aGlwX3ZwdTk4MV9yZWdzLmggICAgICAgIHwgIDQ3NyArKysrCj4gIDQgZmlsZXMgY2hhbmdlZCwg MjU2NCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9yb2NrY2hpcF92cHU5ODFfaHdfYXYx X2RlYy5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zlcmlz aWxpY29uL3JvY2tjaGlwX3ZwdTk4MV9yZWdzLmgKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vdmVyaXNpbGljb24vTWFrZWZpbGUKPiBpbmRleCBkMmIyNjc5YzAwZWIuLmM5YTk4MDZhYjhj NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL01ha2Vm aWxlCj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNvbi9NYWtlZmlsZQo+ IEBAIC0xOCw2ICsxOCw3IEBAIGhhbnRyby12cHUteSArPSBcCj4gIAkJcm9ja2NoaXBfdnB1Ml9o d19oMjY0X2RlYy5vIFwKPiAgCQlyb2NrY2hpcF92cHUyX2h3X21wZWcyX2RlYy5vIFwKPiAgCQly b2NrY2hpcF92cHUyX2h3X3ZwOF9kZWMubyBcCj4gKwkJcm9ja2NoaXBfdnB1OTgxX2h3X2F2MV9k ZWMubyBcCj4gIAkJcm9ja2NoaXBfYXYxX2VudHJvcHltb2RlLm8gXAo+ICAJCWhhbnRyb19qcGVn Lm8gXAo+ICAJCWhhbnRyb19oMjY0Lm8gXAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL3ZlcmlzaWxpY29uL2hhbnRyb19ody5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92 ZXJpc2lsaWNvbi9oYW50cm9faHcuaAo+IGluZGV4IGQ3NjQxZWNlZDMyZS4uMjU0NTZmYjk2MGM4 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJv X2h3LmgKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL2hhbnRyb19o dy5oCj4gQEAgLTM3LDYgKzM3LDggQEAKPiAgCj4gICNkZWZpbmUgTlVNX1JFRl9QSUNUVVJFUwko VjRMMl9IRVZDX0RQQl9FTlRSSUVTX05VTV9NQVggKyAxKQo+ICAKPiArI2RlZmluZSBBVjFfTUFY X0ZSQU1FX0JVRl9DT1VOVAkoVjRMMl9BVjFfVE9UQUxfUkVGU19QRVJfRlJBTUUgKyAxKQo+ICsK PiAgc3RydWN0IGhhbnRyb19kZXY7Cj4gIHN0cnVjdCBoYW50cm9fY3R4Owo+ICBzdHJ1Y3QgaGFu dHJvX2J1ZjsKPiBAQCAtMjUwLDIzICsyNTIsODEgQEAgc3RydWN0IGhhbnRyb192cDlfZGVjX2h3 X2N0eCB7Cj4gIH07Cj4gIAo+ICAvKioKPiAtICogaGFudHJvX2F2MV9kZWNfaHdfY3R4Cj4gKyAq IHN0cnVjdCBoYW50cm9fYXYxX2RlY19jdHJscwo+ICsgKiBAc2VxdWVuY2U6CQlBVjEgU2VxdWVu Y2UKPiArICogQHRpbGVfZ3JvdXBfZW50cnk6CUFWMSBUaWxlIEdyb3VwIGVudHJ5Cj4gKyAqIEBm cmFtZToJCUFWMSBGcmFtZSBIZWFkZXIgT0JVCj4gKyAqIEBmaWxtX2dyYWluOgkJQVYxIEZpbG0g R3JhaW4KPiArICovCj4gK3N0cnVjdCBoYW50cm9fYXYxX2RlY19jdHJscyB7Cj4gKwljb25zdCBz dHJ1Y3QgdjRsMl9jdHJsX2F2MV9zZXF1ZW5jZSAqc2VxdWVuY2U7Cj4gKwljb25zdCBzdHJ1Y3Qg djRsMl9jdHJsX2F2MV90aWxlX2dyb3VwX2VudHJ5ICp0aWxlX2dyb3VwX2VudHJ5Owo+ICsJY29u c3Qgc3RydWN0IHY0bDJfY3RybF9hdjFfZnJhbWUgKmZyYW1lOwo+ICsJY29uc3Qgc3RydWN0IHY0 bDJfY3RybF9hdjFfZmlsbV9ncmFpbiAqZmlsbV9ncmFpbjsKPiArfTsKPiArCj4gK3N0cnVjdCBo YW50cm9fYXYxX2ZyYW1lX3JlZiB7Cj4gKwlpbnQgd2lkdGg7Cj4gKwlpbnQgaGVpZ2h0Owo+ICsJ aW50IG1pX2NvbHM7Cj4gKwlpbnQgbWlfcm93czsKPiArCXU2NCB0aW1lc3RhbXA7Cj4gKwllbnVt IHY0bDJfYXYxX2ZyYW1lX3R5cGUgZnJhbWVfdHlwZTsKPiArCWJvb2wgdXNlZDsKPiArCXUzMiBv cmRlcl9oaW50Owo+ICsJdTMyIG9yZGVyX2hpbnRzW1Y0TDJfQVYxX1RPVEFMX1JFRlNfUEVSX0ZS QU1FXTsKPiArCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnZiMl9yZWY7Cj4gK307Cj4gKwo+ICsv KioKPiArICogc3RydWN0IGhhbnRyb19hdjFfZGVjX2h3X2N0eAo+ICsgKiBAZGJfZGF0YV9jb2w6 CWRiIHRpbGUgY29sIGRhdGEgYnVmZmVyCj4gKyAqIEBkYl9jdHJsX2NvbDoJZGIgdGlsZSBjb2wg Y3RybCBidWZmZXIKPiArICogQGNkZWZfY29sOgkJY2RlZiB0aWxlIGNvbCBidWZmZXIKPiArICog QHNyX2NvbDoJCXNyIHRpbGUgY29sIGJ1ZmZlcgo+ICsgKiBAbHJfY29sOgkJbHIgdGlsZSBjb2wg YnVmZmVyCj4gKyAqIEBnbG9iYWxfbW9kZWw6CWdsb2JhbCBtb2RlbCBidWZmZXIKPiArICogQHRp bGVfaW5mbzoJCXRpbGUgaW5mbyBidWZmZXIKPiArICogQHNlZ21lbnQ6CQlzZWdtZW50YXRpb24g aW5mbyBidWZmZXIKPiArICogQHByb2JfdGJsOgkJcHJvYmFiaWxpdHkgdGFibGUKPiArICogQHBy b2JfdGJsX291dDoJcHJvYmFiaWxpdHkgdGFibGUgb3V0cHV0Cj4gKyAqIEB0aWxlX2J1ZjoJCXRp bGUgYnVmZmVyCj4gKyAqIEBjdHJsczoJCVY0TDIgY29udHJvbHMgYXR0YWNoZWQgdG8gYSBydW4K PiArICogQGZyYW1lX3JlZnM6CQlyZWZlcmVuY2UgZnJhbWVzIGluZm8gc2xvdHMKPiArICogQHJl Zl9mcmFtZV9zaWduX2JpYXM6IGFycmF5IG9mIHNpZ24gYmlhcwo+ICsgKiBAbnVtX3RpbGVfY29s c19hbGxvY2F0ZWQ6IG51bWJlciBvZiBhbGxvY2F0ZWQgdGlsZXMKPiAgICogQGNkZnM6CQljdXJy ZW50IHByb2JhYmlsaXRpZXMgc3RydWN0dXJlCj4gICAqIEBjZGZzX25kdmM6CQljdXJyZW50IG12 IHByb2JhYmlsaXRpZXMgc3RydWN0dXJlCj4gICAqIEBkZWZhdWx0X2NkZnM6CWRlZmF1bHQgcHJv YmFiaWxpdGllcyBzdHJ1Y3R1cmUKPiAgICogQGRlZmF1bHRfY2Rmc19uZHZjOglkZWZhdWx0IG12 IHByb2JhYmlsdGllcyBzdHJ1Y3R1cmUKPiAgICogQGNkZnNfbGFzdDoJCXN0b3JlZCBwcm9iYWJp bGl0aWVzIHN0cnVjdHVyZXMKPiAgICogQGNkZnNfbGFzdF9uZHZjOglzdG9yZWQgbXYgcHJvYmFi aWxpdGllcyBzdHJ1Y3R1cmVzCj4gKyAqIEBjdXJyZW50X2ZyYW1lX2luZGV4OiBpbmRleCBvZiB0 aGUgY3VycmVudCBpbiBmcmFtZV9yZWZzIGFycmF5Cj4gICAqLwo+ICBzdHJ1Y3QgaGFudHJvX2F2 MV9kZWNfaHdfY3R4IHsKPiArCXN0cnVjdCBoYW50cm9fYXV4X2J1ZiBkYl9kYXRhX2NvbDsKPiAr CXN0cnVjdCBoYW50cm9fYXV4X2J1ZiBkYl9jdHJsX2NvbDsKPiArCXN0cnVjdCBoYW50cm9fYXV4 X2J1ZiBjZGVmX2NvbDsKPiArCXN0cnVjdCBoYW50cm9fYXV4X2J1ZiBzcl9jb2w7Cj4gKwlzdHJ1 Y3QgaGFudHJvX2F1eF9idWYgbHJfY29sOwo+ICsJc3RydWN0IGhhbnRyb19hdXhfYnVmIGdsb2Jh bF9tb2RlbDsKPiArCXN0cnVjdCBoYW50cm9fYXV4X2J1ZiB0aWxlX2luZm87Cj4gKwlzdHJ1Y3Qg aGFudHJvX2F1eF9idWYgc2VnbWVudDsKPiArCXN0cnVjdCBoYW50cm9fYXV4X2J1ZiBwcm9iX3Ri bDsKPiArCXN0cnVjdCBoYW50cm9fYXV4X2J1ZiBwcm9iX3RibF9vdXQ7Cj4gKwlzdHJ1Y3QgaGFu dHJvX2F1eF9idWYgdGlsZV9idWY7Cj4gKwlzdHJ1Y3QgaGFudHJvX2F2MV9kZWNfY3RybHMgY3Ry bHM7Cj4gKwlzdHJ1Y3QgaGFudHJvX2F2MV9mcmFtZV9yZWYgZnJhbWVfcmVmc1tBVjFfTUFYX0ZS QU1FX0JVRl9DT1VOVF07Cj4gKwl1MzIgcmVmX2ZyYW1lX3NpZ25fYmlhc1tWNEwyX0FWMV9UT1RB TF9SRUZTX1BFUl9GUkFNRV07Cj4gKwl1bnNpZ25lZCBpbnQgbnVtX3RpbGVfY29sc19hbGxvY2F0 ZWQ7Cj4gIAlzdHJ1Y3QgYXYxY2RmcyAqY2RmczsKPiAgCXN0cnVjdCBtdmNkZnMgICpjZGZzX25k dmM7Cj4gIAlzdHJ1Y3QgYXYxY2RmcyBkZWZhdWx0X2NkZnM7Cj4gIAlzdHJ1Y3QgbXZjZGZzICBk ZWZhdWx0X2NkZnNfbmR2YzsKPiAgCXN0cnVjdCBhdjFjZGZzIGNkZnNfbGFzdFtOVU1fUkVGX0ZS QU1FU107Cj4gIAlzdHJ1Y3QgbXZjZGZzICBjZGZzX2xhc3RfbmR2Y1tOVU1fUkVGX0ZSQU1FU107 Cj4gKwlpbnQgY3VycmVudF9mcmFtZV9pbmRleDsKPiAgfTsKPiAtCj4gIC8qKgo+ICAgKiBzdHJ1 Y3QgaGFudHJvX3Bvc3Rwcm9jX2N0eAo+ICAgKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL3ZlcmlzaWxpY29uL3JvY2tjaGlwX3ZwdTk4MV9od19hdjFfZGVjLmMgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxpY29uL3JvY2tjaGlwX3ZwdTk4MV9od19hdjFfZGVj LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYTJjOWJjZWJk OGJiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNp bGljb24vcm9ja2NoaXBfdnB1OTgxX2h3X2F2MV9kZWMuYwo+IEBAIC0wLDAgKzEsMjAyNCBAQAo+ ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Cj4gKy8qCj4gKyAqIENv cHlyaWdodCAoYykgMjAyMSwgQ29sbGFib3JhCj4gKyAqCj4gKyAqIEF1dGhvcjogQmVuamFtaW4g R2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGNvbGxhYm9yYS5jb20+Cj4gKyAqLwo+ICsKPiAr I2luY2x1ZGUgPG1lZGlhL3Y0bDItbWVtMm1lbS5oPgo+ICsjaW5jbHVkZSAiaGFudHJvLmgiCj4g KyNpbmNsdWRlICJoYW50cm9fdjRsMi5oIgo+ICsjaW5jbHVkZSAicm9ja2NoaXBfdnB1OTgxX3Jl Z3MuaCIKPiArCj4gKyNkZWZpbmUgQVYxX0RFQ19NT0RFCQkxNwo+ICsjZGVmaW5lIEdNX0dMT0JB TF9NT0RFTFNfUEVSX0ZSQU1FCTcKPiArI2RlZmluZSBHTE9CQUxfTU9ERUxfVE9UQUxfU0laRQko NiAqIDQgKyA0ICogMikKPiArI2RlZmluZSBHTE9CQUxfTU9ERUxfU0laRQlBTElHTihHTV9HTE9C QUxfTU9ERUxTX1BFUl9GUkFNRSAqIEdMT0JBTF9NT0RFTF9UT1RBTF9TSVpFLCAyMDQ4KQo+ICsj ZGVmaW5lIEFWMV9NQVhfVElMRVMJCTEyOAo+ICsjZGVmaW5lIEFWMV9USUxFX0lORk9fU0laRQko QVYxX01BWF9USUxFUyAqIDE2KQo+ICsjZGVmaW5lIEFWMURFQ19NQVhfUElDX0JVRkZFUlMJMjQK PiArI2RlZmluZSBBVjFfUkVGX1NDQUxFX1NISUZUCTE0Cj4gKyNkZWZpbmUgQVYxX0lOVkFMSURf SURYCQktMQo+ICsjZGVmaW5lIE1BWF9GUkFNRV9ESVNUQU5DRQkzMQo+ICsjZGVmaW5lIEFWMV9Q UklNQVJZX1JFRl9OT05FCTcKPiArI2RlZmluZSBBVjFfVElMRV9TSVpFCQlBTElHTigzMiAqIDEy OCwgNDA5NikKPiArLyoKPiArICogVGhlc2UgMyB2YWx1ZXMgYXJlbid0IGRlZmluZWQgZW51bSB2 NGwyX2F2MV9zZWdtZW50X2ZlYXR1cmUgYmVjYXVzZQo+ICsgKiB0aGV5IGFyZSBub3QgcGFydCBv ZiB0aGUgc3BlY2lmaWNhdGlvbgo+ICsgKi8KPiArI2RlZmluZSBWNEwyX0FWMV9TRUdfTFZMX0FM VF9MRl9ZX0gJMgo+ICsjZGVmaW5lIFY0TDJfQVYxX1NFR19MVkxfQUxUX0xGX1UJMwo+ICsjZGVm aW5lIFY0TDJfQVYxX1NFR19MVkxfQUxUX0xGX1YJNAo+ICsKPiArI2RlZmluZSBTVVBFUlJFU19T Q0FMRV9CSVRTIDMKPiArI2RlZmluZSBTQ0FMRV9OVU1FUkFUT1IgOAo+ICsjZGVmaW5lIFNVUEVS UkVTX1NDQUxFX0RFTk9NSU5BVE9SX01JTiAoU0NBTEVfTlVNRVJBVE9SICsgMSkKPiArCj4gKyNk ZWZpbmUgUlNfU1VCUEVMX0JJVFMgNgo+ICsjZGVmaW5lIFJTX1NVQlBFTF9NQVNLICgoMSA8PCBS U19TVUJQRUxfQklUUykgLSAxKQo+ICsjZGVmaW5lIFJTX1NDQUxFX1NVQlBFTF9CSVRTIDE0Cj4g KyNkZWZpbmUgUlNfU0NBTEVfU1VCUEVMX01BU0sgKCgxIDw8IFJTX1NDQUxFX1NVQlBFTF9CSVRT KSAtIDEpCj4gKyNkZWZpbmUgUlNfU0NBTEVfRVhUUkFfQklUUyAoUlNfU0NBTEVfU1VCUEVMX0JJ VFMgLSBSU19TVUJQRUxfQklUUykKPiArI2RlZmluZSBSU19TQ0FMRV9FWFRSQV9PRkYgKDEgPDwg KFJTX1NDQUxFX0VYVFJBX0JJVFMgLSAxKSkKPiArCj4gKyNkZWZpbmUgSVNfSU5UUkEodHlwZSkg KCh0eXBlID09IFY0TDJfQVYxX0tFWV9GUkFNRSkgfHwgKHR5cGUgPT0gVjRMMl9BVjFfSU5UUkFf T05MWV9GUkFNRSkpCj4gKwo+ICsjZGVmaW5lIExTVF9CVUZfSURYIChWNEwyX0FWMV9SRUZfTEFT VF9GUkFNRSAtIFY0TDJfQVYxX1JFRl9MQVNUX0ZSQU1FKQo+ICsjZGVmaW5lIExTVDJfQlVGX0lE WCAoVjRMMl9BVjFfUkVGX0xBU1QyX0ZSQU1FIC0gVjRMMl9BVjFfUkVGX0xBU1RfRlJBTUUpCj4g KyNkZWZpbmUgTFNUM19CVUZfSURYIChWNEwyX0FWMV9SRUZfTEFTVDNfRlJBTUUgLSBWNEwyX0FW MV9SRUZfTEFTVF9GUkFNRSkKPiArI2RlZmluZSBHTERfQlVGX0lEWCAoVjRMMl9BVjFfUkVGX0dP TERFTl9GUkFNRSAtIFY0TDJfQVYxX1JFRl9MQVNUX0ZSQU1FKQo+ICsjZGVmaW5lIEJXRF9CVUZf SURYIChWNEwyX0FWMV9SRUZfQldEUkVGX0ZSQU1FIC0gVjRMMl9BVjFfUkVGX0xBU1RfRlJBTUUp Cj4gKyNkZWZpbmUgQUxUMl9CVUZfSURYIChWNEwyX0FWMV9SRUZfQUxUUkVGMl9GUkFNRSAtIFY0 TDJfQVYxX1JFRl9MQVNUX0ZSQU1FKQo+ICsjZGVmaW5lIEFMVF9CVUZfSURYIChWNEwyX0FWMV9S RUZfQUxUUkVGX0ZSQU1FIC0gVjRMMl9BVjFfUkVGX0xBU1RfRlJBTUUpCj4gKwo+ICsjZGVmaW5l IERJVl9MVVRfUFJFQ19CSVRTIDE0Cj4gKyNkZWZpbmUgRElWX0xVVF9CSVRTIDgKPiArI2RlZmlu ZSBESVZfTFVUX05VTSBCSVQoRElWX0xVVF9CSVRTKQo+ICsjZGVmaW5lIFdBUlBfUEFSQU1fUkVE VUNFX0JJVFMgNgo+ICsjZGVmaW5lIFdBUlBFRE1PREVMX1BSRUNfQklUUyAxNgo+ICsKPiArI2Rl ZmluZSBBVjFfRElWX1JPVU5EX1VQX1BPVzIodmFsdWUsIG4pCQkJXAo+ICsoewkJCQkJCQlcCj4g Kwl0eXBlb2YobikgX24gID0gbjsJCQkJXAo+ICsJdHlwZW9mKHZhbHVlKSBfdmFsdWUgPSB2YWx1 ZTsJCQlcCj4gKwkoX3ZhbHVlICsgKEJJVChfbikgPj4gMSkpID4+IF9uOwkJXAo+ICt9KQo+ICsK PiArI2RlZmluZSBBVjFfRElWX1JPVU5EX1VQX1BPVzJfU0lHTkVEKHZhbHVlLCBuKQkJCQlcCj4g Kyh7CQkJCQkJCQkJXAo+ICsJdHlwZW9mKG4pIF9uXyAgPSBuOwkJCQkJCVwKPiArCXR5cGVvZih2 YWx1ZSkgX3ZhbHVlXyA9IHZhbHVlOwkJCQkJXAo+ICsJKCgoX3ZhbHVlXykgPCAwKSA/IC1BVjFf RElWX1JPVU5EX1VQX1BPVzIoLShfdmFsdWVfKSwgKF9uXykpCVwKPiArCQk6IEFWMV9ESVZfUk9V TkRfVVBfUE9XMigoX3ZhbHVlXyksIChfbl8pKSk7CQlcCj4gK30pCj4gKwo+ICtzdHJ1Y3Qgcm9j a2NoaXBfYXYxX2ZpbG1fZ3JhaW4gewo+ICsJdTggc2NhbGluZ19sdXRfeVsyNTZdOwo+ICsJdTgg c2NhbGluZ19sdXRfY2JbMjU2XTsKPiArCXU4IHNjYWxpbmdfbHV0X2NyWzI1Nl07Cj4gKwlzMTYg Y3JvcHBlZF9sdW1hX2dyYWluX2Jsb2NrWzQwOTZdOwo+ICsJczE2IGNyb3BwZWRfY2hyb21hX2dy YWluX2Jsb2NrWzEwMjQgKiAyXTsKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzaG9ydCBkaXZf bHV0W0RJVl9MVVRfTlVNICsgMV0gPSB7Cj4gKwkxNjM4NCwgMTYzMjAsIDE2MjU3LCAxNjE5NCwg MTYxMzIsIDE2MDcwLCAxNjAwOSwgMTU5NDgsIDE1ODg4LCAxNTgyOCwgMTU3NjgsCj4gKwkxNTcw OSwgMTU2NTAsIDE1NTkyLCAxNTUzNCwgMTU0NzcsIDE1NDIwLCAxNTM2NCwgMTUzMDgsIDE1MjUy LCAxNTE5NywgMTUxNDIsCj4gKwkxNTA4NywgMTUwMzMsIDE0OTgwLCAxNDkyNiwgMTQ4NzMsIDE0 ODIxLCAxNDc2OSwgMTQ3MTcsIDE0NjY1LCAxNDYxNCwgMTQ1NjQsCj4gKwkxNDUxMywgMTQ0NjMs IDE0NDEzLCAxNDM2NCwgMTQzMTUsIDE0MjY2LCAxNDIxOCwgMTQxNzAsIDE0MTIyLCAxNDA3NSwg MTQwMjgsCj4gKwkxMzk4MSwgMTM5MzUsIDEzODg4LCAxMzg0MywgMTM3OTcsIDEzNzUyLCAxMzcw NywgMTM2NjIsIDEzNjE4LCAxMzU3NCwgMTM1MzAsCj4gKwkxMzQ4NywgMTM0NDMsIDEzNDAwLCAx MzM1OCwgMTMzMTUsIDEzMjczLCAxMzIzMSwgMTMxOTAsIDEzMTQ4LCAxMzEwNywgMTMwNjYsCj4g KwkxMzAyNiwgMTI5ODUsIDEyOTQ1LCAxMjkwNiwgMTI4NjYsIDEyODI3LCAxMjc4OCwgMTI3NDks IDEyNzEwLCAxMjY3MiwgMTI2MzMsCj4gKwkxMjU5NiwgMTI1NTgsIDEyNTIwLCAxMjQ4MywgMTI0 NDYsIDEyNDA5LCAxMjM3MywgMTIzMzYsIDEyMzAwLCAxMjI2NCwgMTIyMjgsCj4gKwkxMjE5Mywg MTIxNTcsIDEyMTIyLCAxMjA4NywgMTIwNTMsIDEyMDE4LCAxMTk4NCwgMTE5NTAsIDExOTE2LCAx MTg4MiwgMTE4NDgsCj4gKwkxMTgxNSwgMTE3ODIsIDExNzQ5LCAxMTcxNiwgMTE2ODMsIDExNjUx LCAxMTYxOSwgMTE1ODYsIDExNTU1LCAxMTUyMywgMTE0OTEsCj4gKwkxMTQ2MCwgMTE0MjksIDEx Mzk4LCAxMTM2NywgMTEzMzYsIDExMzA1LCAxMTI3NSwgMTEyNDUsIDExMjE1LCAxMTE4NSwgMTEx NTUsCj4gKwkxMTEyNSwgMTEwOTYsIDExMDY3LCAxMTAzOCwgMTEwMDksIDEwOTgwLCAxMDk1MSwg MTA5MjMsIDEwODk0LCAxMDg2NiwgMTA4MzgsCj4gKwkxMDgxMCwgMTA3ODIsIDEwNzU1LCAxMDcy NywgMTA3MDAsIDEwNjczLCAxMDY0NSwgMTA2MTgsIDEwNTkyLCAxMDU2NSwgMTA1MzgsCj4gKwkx MDUxMiwgMTA0ODYsIDEwNDYwLCAxMDQzNCwgMTA0MDgsIDEwMzgyLCAxMDM1NiwgMTAzMzEsIDEw MzA1LCAxMDI4MCwgMTAyNTUsCj4gKwkxMDIzMCwgMTAyMDUsIDEwMTgwLCAxMDE1NiwgMTAxMzEs IDEwMTA3LCAxMDA4MiwgMTAwNTgsIDEwMDM0LCAxMDAxMCwgOTk4NiwKPiArCTk5NjMsICA5OTM5 LCAgOTkxNiwgIDk4OTIsICA5ODY5LCAgOTg0NiwgIDk4MjMsICA5ODAwLCAgOTc3NywgIDk3NTQs ICA5NzMyLAo+ICsJOTcwOSwgIDk2ODcsICA5NjY0LCAgOTY0MiwgIDk2MjAsICA5NTk4LCAgOTU3 NiwgIDk1NTQsICA5NTMzLCAgOTUxMSwgIDk0ODksCj4gKwk5NDY4LCAgOTQ0NywgIDk0MjUsICA5 NDA0LCAgOTM4MywgIDkzNjIsICA5MzQxLCAgOTMyMSwgIDkzMDAsICA5Mjc5LCAgOTI1OSwKPiAr CTkyMzksICA5MjE4LCAgOTE5OCwgIDkxNzgsICA5MTU4LCAgOTEzOCwgIDkxMTgsICA5MDk4LCAg OTA3OSwgIDkwNTksICA5MDM5LAo+ICsJOTAyMCwgIDkwMDEsICA4OTgxLCAgODk2MiwgIDg5NDMs ICA4OTI0LCAgODkwNSwgIDg4ODYsICA4ODY3LCAgODg0OSwgIDg4MzAsCj4gKwk4ODEyLCAgODc5 MywgIDg3NzUsICA4NzU2LCAgODczOCwgIDg3MjAsICA4NzAyLCAgODY4NCwgIDg2NjYsICA4NjQ4 LCAgODYzMCwKPiArCTg2MTMsICA4NTk1LCAgODU3NywgIDg1NjAsICA4NTQyLCAgODUyNSwgIDg1 MDgsICA4NDkwLCAgODQ3MywgIDg0NTYsICA4NDM5LAo+ICsJODQyMiwgIDg0MDUsICA4Mzg5LCAg ODM3MiwgIDgzNTUsICA4MzM5LCAgODMyMiwgIDgzMDYsICA4Mjg5LCAgODI3MywgIDgyNTcsCj4g Kwk4MjQwLCAgODIyNCwgIDgyMDgsICA4MTkyLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCByb2Nr Y2hpcF92cHU5ODFfZ2V0X2ZyYW1lX2luZGV4KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsIGludCBy ZWYpCj4gK3sKPiArCXN0cnVjdCBoYW50cm9fYXYxX2RlY19od19jdHggKmF2MV9kZWMgPSAmY3R4 LT5hdjFfZGVjOwo+ICsJc3RydWN0IGhhbnRyb19hdjFfZGVjX2N0cmxzICpjdHJscyA9ICZhdjFf ZGVjLT5jdHJsczsKPiArCWNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfYXYxX2ZyYW1lICpmcmFtZSA9 IGN0cmxzLT5mcmFtZTsKPiArCXU2NCB0aW1lc3RhbXA7Cj4gKwlpbnQgaSwgaWR4ID0gZnJhbWUt PnJlZl9mcmFtZV9pZHhbcmVmXTsKPiArCj4gKwlpZiAoaWR4ID49IFY0TDJfQVYxX1RPVEFMX1JF RlNfUEVSX0ZSQU1FIHx8IGlkeCA8IDApCj4gKwkJcmV0dXJuIEFWMV9JTlZBTElEX0lEWDsKPiAr Cj4gKwl0aW1lc3RhbXAgPSBmcmFtZS0+cmVmZXJlbmNlX2ZyYW1lX3RzW2lkeF07Cj4gKwlmb3Ig KGkgPSAwOyBpIDwgQVYxX01BWF9GUkFNRV9CVUZfQ09VTlQ7IGkrKykgewo+ICsJCWlmICghYXYx X2RlYy0+ZnJhbWVfcmVmc1tpXS51c2VkKQo+ICsJCQljb250aW51ZTsKPiArCQlpZiAoYXYxX2Rl Yy0+ZnJhbWVfcmVmc1tpXS50aW1lc3RhbXAgPT0gdGltZXN0YW1wKQo+ICsJCQlyZXR1cm4gaTsK PiArCX0KPiArCj4gKwlyZXR1cm4gQVYxX0lOVkFMSURfSURYOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IHJvY2tjaGlwX3ZwdTk4MV9nZXRfb3JkZXJfaGludChzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4 LCBpbnQgcmVmKQo+ICt7Cj4gKwlzdHJ1Y3QgaGFudHJvX2F2MV9kZWNfaHdfY3R4ICphdjFfZGVj ID0gJmN0eC0+YXYxX2RlYzsKPiArCWludCBpZHggPSByb2NrY2hpcF92cHU5ODFfZ2V0X2ZyYW1l X2luZGV4KGN0eCwgcmVmKTsKPiArCj4gKwlpZiAoaWR4ICE9IEFWMV9JTlZBTElEX0lEWCkKPiAr CQlyZXR1cm4gYXYxX2RlYy0+ZnJhbWVfcmVmc1tpZHhdLm9yZGVyX2hpbnQ7Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfZnJh bWVfcmVmKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgsCj4gKwkJCQkJICAgICB1NjQgdGltZXN0YW1w KQo+ICt7Cj4gKwlzdHJ1Y3QgaGFudHJvX2F2MV9kZWNfaHdfY3R4ICphdjFfZGVjID0gJmN0eC0+ YXYxX2RlYzsKPiArCXN0cnVjdCBoYW50cm9fYXYxX2RlY19jdHJscyAqY3RybHMgPSAmYXYxX2Rl Yy0+Y3RybHM7Cj4gKwljb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2F2MV9mcmFtZSAqZnJhbWUgPSBj dHJscy0+ZnJhbWU7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVYxX01BWF9G UkFNRV9CVUZfQ09VTlQ7IGkrKykgewo+ICsJCWludCBqOwo+ICsKPiArCQlpZiAoYXYxX2RlYy0+ ZnJhbWVfcmVmc1tpXS51c2VkKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJYXYxX2RlYy0+ZnJh bWVfcmVmc1tpXS53aWR0aCA9IGZyYW1lLT5mcmFtZV93aWR0aF9taW51c18xICsgMTsKPiArCQlh djFfZGVjLT5mcmFtZV9yZWZzW2ldLmhlaWdodCA9IGZyYW1lLT5mcmFtZV9oZWlnaHRfbWludXNf MSArIDE7Cj4gKwkJYXYxX2RlYy0+ZnJhbWVfcmVmc1tpXS5taV9jb2xzID0gRElWX1JPVU5EX1VQ KGZyYW1lLT5mcmFtZV93aWR0aF9taW51c18xICsgMSwgOCk7Cj4gKwkJYXYxX2RlYy0+ZnJhbWVf cmVmc1tpXS5taV9yb3dzID0gRElWX1JPVU5EX1VQKGZyYW1lLT5mcmFtZV9oZWlnaHRfbWludXNf MSArIDEsIDgpOwo+ICsJCWF2MV9kZWMtPmZyYW1lX3JlZnNbaV0udGltZXN0YW1wID0gdGltZXN0 YW1wOwo+ICsJCWF2MV9kZWMtPmZyYW1lX3JlZnNbaV0uZnJhbWVfdHlwZSA9IGZyYW1lLT5mcmFt ZV90eXBlOwo+ICsJCWF2MV9kZWMtPmZyYW1lX3JlZnNbaV0ub3JkZXJfaGludCA9IGZyYW1lLT5v cmRlcl9oaW50Owo+ICsJCWlmICghYXYxX2RlYy0+ZnJhbWVfcmVmc1tpXS52YjJfcmVmKQo+ICsJ CQlhdjFfZGVjLT5mcmFtZV9yZWZzW2ldLnZiMl9yZWYgPSBoYW50cm9fZ2V0X2RzdF9idWYoY3R4 KTsKPiArCj4gKwkJZm9yIChqID0gMDsgaiA8IFY0TDJfQVYxX1RPVEFMX1JFRlNfUEVSX0ZSQU1F OyBqKyspCj4gKwkJCWF2MV9kZWMtPmZyYW1lX3JlZnNbaV0ub3JkZXJfaGludHNbal0gPSBmcmFt ZS0+b3JkZXJfaGludHNbal07Cj4gKwkJYXYxX2RlYy0+ZnJhbWVfcmVmc1tpXS51c2VkID0gdHJ1 ZTsKPiArCQlhdjFfZGVjLT5jdXJyZW50X2ZyYW1lX2luZGV4ID0gaTsKPiArCj4gKwkJcmV0dXJu IGk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIEFWMV9JTlZBTElEX0lEWDsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfZnJhbWVfdW5yZWYoc3RydWN0IGhhbnRy b19jdHggKmN0eCwgaW50IGlkeCkKPiArewo+ICsJc3RydWN0IGhhbnRyb19hdjFfZGVjX2h3X2N0 eCAqYXYxX2RlYyA9ICZjdHgtPmF2MV9kZWM7Cj4gKwo+ICsJaWYgKGlkeCA+PSAwKQo+ICsJCWF2 MV9kZWMtPmZyYW1lX3JlZnNbaWR4XS51c2VkID0gZmFsc2U7Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX2NsZWFuX3JlZnMoc3RydWN0IGhhbnRyb19jdHgg KmN0eCkKPiArewo+ICsJc3RydWN0IGhhbnRyb19hdjFfZGVjX2h3X2N0eCAqYXYxX2RlYyA9ICZj dHgtPmF2MV9kZWM7Cj4gKwlzdHJ1Y3QgaGFudHJvX2F2MV9kZWNfY3RybHMgKmN0cmxzID0gJmF2 MV9kZWMtPmN0cmxzOwo+ICsKPiArCWludCByZWYsIGlkeDsKPiArCj4gKwlmb3IgKGlkeCA9IDA7 IGlkeCA8IEFWMV9NQVhfRlJBTUVfQlVGX0NPVU5UOyBpZHgrKykgewo+ICsJCXU2NCB0aW1lc3Rh bXAgPSBhdjFfZGVjLT5mcmFtZV9yZWZzW2lkeF0udGltZXN0YW1wOwo+ICsJCWJvb2wgdXNlZCA9 IGZhbHNlOwo+ICsKPiArCQlpZiAoIWF2MV9kZWMtPmZyYW1lX3JlZnNbaWR4XS51c2VkKQo+ICsJ CQljb250aW51ZTsKPiArCj4gKwkJZm9yIChyZWYgPSAwOyByZWYgPCBWNEwyX0FWMV9UT1RBTF9S RUZTX1BFUl9GUkFNRTsgcmVmKyspIHsKPiArCQkJaWYgKGN0cmxzLT5mcmFtZS0+cmVmZXJlbmNl X2ZyYW1lX3RzW3JlZl0gPT0gdGltZXN0YW1wKQo+ICsJCQkJdXNlZCA9IHRydWU7Cj4gKwkJfQo+ ICsKPiArCQlpZiAoIXVzZWQpCj4gKwkJCXJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX2ZyYW1lX3Vu cmVmKGN0eCwgaWR4KTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHNpemVfdCByb2NrY2hpcF92 cHU5ODFfYXYxX2RlY19sdW1hX3NpemUoc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPiArewo+ICsJ cmV0dXJuIGN0eC0+ZHN0X2ZtdC53aWR0aCAqIGN0eC0+ZHN0X2ZtdC5oZWlnaHQgKiBjdHgtPmJp dF9kZXB0aCAvIDg7Cj4gK30KPiArCj4gK3N0YXRpYyBzaXplX3Qgcm9ja2NoaXBfdnB1OTgxX2F2 MV9kZWNfY2hyb21hX3NpemUoc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPiArewo+ICsJc2l6ZV90 IGNyX29mZnNldCA9IHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX2x1bWFfc2l6ZShjdHgpOwo+ICsK PiArCXJldHVybiBBTElHTigoY3Jfb2Zmc2V0ICogMykgLyAyLCA2NCk7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX3RpbGVzX2ZyZWUoc3RydWN0IGhhbnRy b19jdHggKmN0eCkKPiArewo+ICsJc3RydWN0IGhhbnRyb19kZXYgKnZwdSA9IGN0eC0+ZGV2Owo+ ICsJc3RydWN0IGhhbnRyb19hdjFfZGVjX2h3X2N0eCAqYXYxX2RlYyA9ICZjdHgtPmF2MV9kZWM7 Cj4gKwo+ICsJaWYgKGF2MV9kZWMtPmRiX2RhdGFfY29sLmNwdSkKPiArCQlkbWFfZnJlZV9jb2hl cmVudCh2cHUtPmRldiwgYXYxX2RlYy0+ZGJfZGF0YV9jb2wuc2l6ZSwKPiArCQkJCSAgYXYxX2Rl Yy0+ZGJfZGF0YV9jb2wuY3B1LAo+ICsJCQkJICBhdjFfZGVjLT5kYl9kYXRhX2NvbC5kbWEpOwo+ ICsJYXYxX2RlYy0+ZGJfZGF0YV9jb2wuY3B1ID0gTlVMTDsKPiArCj4gKwlpZiAoYXYxX2RlYy0+ ZGJfY3RybF9jb2wuY3B1KQo+ICsJCWRtYV9mcmVlX2NvaGVyZW50KHZwdS0+ZGV2LCBhdjFfZGVj LT5kYl9jdHJsX2NvbC5zaXplLAo+ICsJCQkJICBhdjFfZGVjLT5kYl9jdHJsX2NvbC5jcHUsCj4g KwkJCQkgIGF2MV9kZWMtPmRiX2N0cmxfY29sLmRtYSk7Cj4gKwlhdjFfZGVjLT5kYl9jdHJsX2Nv bC5jcHUgPSBOVUxMOwo+ICsKPiArCWlmIChhdjFfZGVjLT5jZGVmX2NvbC5jcHUpCj4gKwkJZG1h X2ZyZWVfY29oZXJlbnQodnB1LT5kZXYsIGF2MV9kZWMtPmNkZWZfY29sLnNpemUsCj4gKwkJCQkg IGF2MV9kZWMtPmNkZWZfY29sLmNwdSwgYXYxX2RlYy0+Y2RlZl9jb2wuZG1hKTsKPiArCWF2MV9k ZWMtPmNkZWZfY29sLmNwdSA9IE5VTEw7Cj4gKwo+ICsJaWYgKGF2MV9kZWMtPnNyX2NvbC5jcHUp Cj4gKwkJZG1hX2ZyZWVfY29oZXJlbnQodnB1LT5kZXYsIGF2MV9kZWMtPnNyX2NvbC5zaXplLAo+ ICsJCQkJICBhdjFfZGVjLT5zcl9jb2wuY3B1LCBhdjFfZGVjLT5zcl9jb2wuZG1hKTsKPiArCWF2 MV9kZWMtPnNyX2NvbC5jcHUgPSBOVUxMOwo+ICsKPiArCWlmIChhdjFfZGVjLT5scl9jb2wuY3B1 KQo+ICsJCWRtYV9mcmVlX2NvaGVyZW50KHZwdS0+ZGV2LCBhdjFfZGVjLT5scl9jb2wuc2l6ZSwK PiArCQkJCSAgYXYxX2RlYy0+bHJfY29sLmNwdSwgYXYxX2RlYy0+bHJfY29sLmRtYSk7Cj4gKwlh djFfZGVjLT5scl9jb2wuY3B1ID0gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIGludCByb2NrY2hp cF92cHU5ODFfYXYxX2RlY190aWxlc19yZWFsbG9jYXRlKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgp Cj4gK3sKPiArCXN0cnVjdCBoYW50cm9fZGV2ICp2cHUgPSBjdHgtPmRldjsKPiArCXN0cnVjdCBo YW50cm9fYXYxX2RlY19od19jdHggKmF2MV9kZWMgPSAmY3R4LT5hdjFfZGVjOwo+ICsJc3RydWN0 IGhhbnRyb19hdjFfZGVjX2N0cmxzICpjdHJscyA9ICZhdjFfZGVjLT5jdHJsczsKPiArCXVuc2ln bmVkIGludCBudW1fdGlsZV9jb2xzID0gMSA8PCBjdHJscy0+dGlsZV9ncm91cF9lbnRyeS0+dGls ZV9jb2w7Cj4gKwl1bnNpZ25lZCBpbnQgaGVpZ2h0ID0gQUxJR04oY3RybHMtPmZyYW1lLT5mcmFt ZV9oZWlnaHRfbWludXNfMSArIDEsIDY0KTsKPiArCXVuc2lnbmVkIGludCBoZWlnaHRfaW5fc2Ig PSBoZWlnaHQgLyA2NDsKPiArCXVuc2lnbmVkIGludCBzdHJpcGVfbnVtID0gKChoZWlnaHQgKyA4 KSArIDYzKSAvIDY0Owo+ICsJc2l6ZV90IHNpemU7Cj4gKwo+ICsJaWYgKGF2MV9kZWMtPmRiX2Rh dGFfY29sLnNpemUgPj0KPiArCSAgICBBTElHTihoZWlnaHQgKiAxMiAqIGN0eC0+Yml0X2RlcHRo IC8gOCwgMTI4KSAqIG51bV90aWxlX2NvbHMpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcm9ja2No aXBfdnB1OTgxX2F2MV9kZWNfdGlsZXNfZnJlZShjdHgpOwo+ICsKPiArCXNpemUgPSBBTElHTiho ZWlnaHQgKiAxMiAqIGN0eC0+Yml0X2RlcHRoIC8gOCwgMTI4KSAqIG51bV90aWxlX2NvbHM7Cj4g KwlhdjFfZGVjLT5kYl9kYXRhX2NvbC5jcHUgPSBkbWFfYWxsb2NfY29oZXJlbnQodnB1LT5kZXYs IHNpemUsCj4gKwkJCQkJCSAgICAgICZhdjFfZGVjLT5kYl9kYXRhX2NvbC5kbWEsCj4gKwkJCQkJ CSAgICAgIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFhdjFfZGVjLT5kYl9kYXRhX2NvbC5jcHUpCj4g KwkJZ290byBidWZmZXJfYWxsb2NhdGlvbl9lcnJvcjsKPiArCWF2MV9kZWMtPmRiX2RhdGFfY29s LnNpemUgPSBzaXplOwo+ICsKPiArCXNpemUgPSBBTElHTihoZWlnaHQgKiAyICogMTYgLyA0LCAx MjgpICogbnVtX3RpbGVfY29sczsKPiArCWF2MV9kZWMtPmRiX2N0cmxfY29sLmNwdSA9IGRtYV9h bGxvY19jb2hlcmVudCh2cHUtPmRldiwgc2l6ZSwKPiArCQkJCQkJICAgICAgJmF2MV9kZWMtPmRi X2N0cmxfY29sLmRtYSwKPiArCQkJCQkJICAgICAgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWF2MV9k ZWMtPmRiX2N0cmxfY29sLmNwdSkKPiArCQlnb3RvIGJ1ZmZlcl9hbGxvY2F0aW9uX2Vycm9yOwo+ ICsJYXYxX2RlYy0+ZGJfY3RybF9jb2wuc2l6ZSA9IHNpemU7Cj4gKwo+ICsJc2l6ZSA9IEFMSUdO KGhlaWdodF9pbl9zYiAqIDQ0ICogY3R4LT5iaXRfZGVwdGggKiAxNiAvIDgsIDEyOCkgKiBudW1f dGlsZV9jb2xzOwo+ICsJYXYxX2RlYy0+Y2RlZl9jb2wuY3B1ID0gZG1hX2FsbG9jX2NvaGVyZW50 KHZwdS0+ZGV2LCBzaXplLAo+ICsJCQkJCQkgICAmYXYxX2RlYy0+Y2RlZl9jb2wuZG1hLAo+ICsJ CQkJCQkgICBHRlBfS0VSTkVMKTsKPiArCWlmICghYXYxX2RlYy0+Y2RlZl9jb2wuY3B1KQo+ICsJ CWdvdG8gYnVmZmVyX2FsbG9jYXRpb25fZXJyb3I7Cj4gKwlhdjFfZGVjLT5jZGVmX2NvbC5zaXpl ID0gc2l6ZTsKPiArCj4gKwlzaXplID0gQUxJR04oaGVpZ2h0X2luX3NiICogKDMwNDAgKyAxMjgw KSwgMTI4KSAqIG51bV90aWxlX2NvbHM7Cj4gKwlhdjFfZGVjLT5zcl9jb2wuY3B1ID0gZG1hX2Fs bG9jX2NvaGVyZW50KHZwdS0+ZGV2LCBzaXplLAo+ICsJCQkJCQkgJmF2MV9kZWMtPnNyX2NvbC5k bWEsCj4gKwkJCQkJCSBHRlBfS0VSTkVMKTsKPiArCWlmICghYXYxX2RlYy0+c3JfY29sLmNwdSkK PiArCQlnb3RvIGJ1ZmZlcl9hbGxvY2F0aW9uX2Vycm9yOwo+ICsJYXYxX2RlYy0+c3JfY29sLnNp emUgPSBzaXplOwo+ICsKPiArCXNpemUgPSBBTElHTihzdHJpcGVfbnVtICogMTUzNiAqIGN0eC0+ Yml0X2RlcHRoIC8gOCwgMTI4KSAqIG51bV90aWxlX2NvbHM7Cj4gKwlhdjFfZGVjLT5scl9jb2wu Y3B1ID0gZG1hX2FsbG9jX2NvaGVyZW50KHZwdS0+ZGV2LCBzaXplLAo+ICsJCQkJCQkgJmF2MV9k ZWMtPmxyX2NvbC5kbWEsCj4gKwkJCQkJCSBHRlBfS0VSTkVMKTsKPiArCWlmICghYXYxX2RlYy0+ bHJfY29sLmNwdSkKPiArCQlnb3RvIGJ1ZmZlcl9hbGxvY2F0aW9uX2Vycm9yOwo+ICsJYXYxX2Rl Yy0+bHJfY29sLnNpemUgPSBzaXplOwo+ICsKPiArCWF2MV9kZWMtPm51bV90aWxlX2NvbHNfYWxs b2NhdGVkID0gbnVtX3RpbGVfY29sczsKPiArCXJldHVybiAwOwo+ICsKPiArYnVmZmVyX2FsbG9j YXRpb25fZXJyb3I6Cj4gKwlyb2NrY2hpcF92cHU5ODFfYXYxX2RlY190aWxlc19mcmVlKGN0eCk7 Cj4gKwlyZXR1cm4gLUVOT01FTTsKPiArfQo+ICsKPiArdm9pZCByb2NrY2hpcF92cHU5ODFfYXYx X2RlY19leGl0KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4gK3sKPiArCXN0cnVjdCBoYW50cm9f ZGV2ICp2cHUgPSBjdHgtPmRldjsKPiArCXN0cnVjdCBoYW50cm9fYXYxX2RlY19od19jdHggKmF2 MV9kZWMgPSAmY3R4LT5hdjFfZGVjOwo+ICsKPiArCWlmIChhdjFfZGVjLT5nbG9iYWxfbW9kZWwu Y3B1KQo+ICsJCWRtYV9mcmVlX2NvaGVyZW50KHZwdS0+ZGV2LCBhdjFfZGVjLT5nbG9iYWxfbW9k ZWwuc2l6ZSwKPiArCQkJCSAgYXYxX2RlYy0+Z2xvYmFsX21vZGVsLmNwdSwKPiArCQkJCSAgYXYx X2RlYy0+Z2xvYmFsX21vZGVsLmRtYSk7Cj4gKwlhdjFfZGVjLT5nbG9iYWxfbW9kZWwuY3B1ID0g TlVMTDsKPiArCj4gKwlpZiAoYXYxX2RlYy0+dGlsZV9pbmZvLmNwdSkKPiArCQlkbWFfZnJlZV9j b2hlcmVudCh2cHUtPmRldiwgYXYxX2RlYy0+dGlsZV9pbmZvLnNpemUsCj4gKwkJCQkgIGF2MV9k ZWMtPnRpbGVfaW5mby5jcHUsCj4gKwkJCQkgIGF2MV9kZWMtPnRpbGVfaW5mby5kbWEpOwo+ICsJ YXYxX2RlYy0+dGlsZV9pbmZvLmNwdSA9IE5VTEw7Cj4gKwo+ICsJaWYgKGF2MV9kZWMtPnByb2Jf dGJsLmNwdSkKPiArCQlkbWFfZnJlZV9jb2hlcmVudCh2cHUtPmRldiwgYXYxX2RlYy0+cHJvYl90 Ymwuc2l6ZSwKPiArCQkJCSAgYXYxX2RlYy0+cHJvYl90YmwuY3B1LCBhdjFfZGVjLT5wcm9iX3Ri bC5kbWEpOwo+ICsJYXYxX2RlYy0+cHJvYl90YmwuY3B1ID0gTlVMTDsKPiArCj4gKwlpZiAoYXYx X2RlYy0+cHJvYl90Ymxfb3V0LmNwdSkKPiArCQlkbWFfZnJlZV9jb2hlcmVudCh2cHUtPmRldiwg YXYxX2RlYy0+cHJvYl90Ymxfb3V0LnNpemUsCj4gKwkJCQkgIGF2MV9kZWMtPnByb2JfdGJsX291 dC5jcHUsCj4gKwkJCQkgIGF2MV9kZWMtPnByb2JfdGJsX291dC5kbWEpOwo+ICsJYXYxX2RlYy0+ cHJvYl90Ymxfb3V0LmNwdSA9IE5VTEw7Cj4gKwo+ICsJaWYgKGF2MV9kZWMtPnRpbGVfYnVmLmNw dSkKPiArCQlkbWFfZnJlZV9jb2hlcmVudCh2cHUtPmRldiwgYXYxX2RlYy0+dGlsZV9idWYuc2l6 ZSwKPiArCQkJCSAgYXYxX2RlYy0+dGlsZV9idWYuY3B1LCBhdjFfZGVjLT50aWxlX2J1Zi5kbWEp Owo+ICsJYXYxX2RlYy0+dGlsZV9idWYuY3B1ID0gTlVMTDsKPiArCj4gKwlyb2NrY2hpcF92cHU5 ODFfYXYxX2RlY190aWxlc19mcmVlKGN0eCk7Cj4gK30KPiArCj4gK2ludCByb2NrY2hpcF92cHU5 ODFfYXYxX2RlY19pbml0KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4gK3sKPiArCXN0cnVjdCBo YW50cm9fZGV2ICp2cHUgPSBjdHgtPmRldjsKPiArCXN0cnVjdCBoYW50cm9fYXYxX2RlY19od19j dHggKmF2MV9kZWMgPSAmY3R4LT5hdjFfZGVjOwo+ICsKPiArCW1lbXNldChhdjFfZGVjLCAwLCBz aXplb2YoKmF2MV9kZWMpKTsKPiArCj4gKwlhdjFfZGVjLT5nbG9iYWxfbW9kZWwuY3B1ID0gZG1h X2FsbG9jX2NvaGVyZW50KHZwdS0+ZGV2LCBHTE9CQUxfTU9ERUxfU0laRSwKPiArCQkJCQkJICAg ICAgICZhdjFfZGVjLT5nbG9iYWxfbW9kZWwuZG1hLAo+ICsJCQkJCQkgICAgICAgR0ZQX0tFUk5F TCk7Cj4gKwlpZiAoIWF2MV9kZWMtPmdsb2JhbF9tb2RlbC5jcHUpCj4gKwkJcmV0dXJuIC1FTk9N RU07Cj4gKwlhdjFfZGVjLT5nbG9iYWxfbW9kZWwuc2l6ZSA9IEdMT0JBTF9NT0RFTF9TSVpFOwo+ ICsKPiArCWF2MV9kZWMtPnRpbGVfaW5mby5jcHUgPSBkbWFfYWxsb2NfY29oZXJlbnQodnB1LT5k ZXYsIEFWMV9NQVhfVElMRVMsCj4gKwkJCQkJCSAgICAmYXYxX2RlYy0+dGlsZV9pbmZvLmRtYSwK PiArCQkJCQkJICAgIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFhdjFfZGVjLT50aWxlX2luZm8uY3B1 KQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJYXYxX2RlYy0+dGlsZV9pbmZvLnNpemUgPSBBVjFf TUFYX1RJTEVTOwo+ICsKPiArCWF2MV9kZWMtPnByb2JfdGJsLmNwdSA9IGRtYV9hbGxvY19jb2hl cmVudCh2cHUtPmRldiwKPiArCQkJCQkJICAgQUxJR04oc2l6ZW9mKHN0cnVjdCBhdjFjZGZzKSwg MjA0OCksCj4gKwkJCQkJCSAgICZhdjFfZGVjLT5wcm9iX3RibC5kbWEsCj4gKwkJCQkJCSAgIEdG UF9LRVJORUwpOwo+ICsJaWYgKCFhdjFfZGVjLT5wcm9iX3RibC5jcHUpCj4gKwkJcmV0dXJuIC1F Tk9NRU07Cj4gKwlhdjFfZGVjLT5wcm9iX3RibC5zaXplID0gQUxJR04oc2l6ZW9mKHN0cnVjdCBh djFjZGZzKSwgMjA0OCk7Cj4gKwo+ICsJYXYxX2RlYy0+cHJvYl90Ymxfb3V0LmNwdSA9IGRtYV9h bGxvY19jb2hlcmVudCh2cHUtPmRldiwKPiArCQkJCQkJICAgICAgIEFMSUdOKHNpemVvZihzdHJ1 Y3QgYXYxY2RmcyksIDIwNDgpLAo+ICsJCQkJCQkgICAgICAgJmF2MV9kZWMtPnByb2JfdGJsX291 dC5kbWEsCj4gKwkJCQkJCSAgICAgICBHRlBfS0VSTkVMKTsKPiArCWlmICghYXYxX2RlYy0+cHJv Yl90Ymxfb3V0LmNwdSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCWF2MV9kZWMtPnByb2JfdGJs X291dC5zaXplID0gQUxJR04oc2l6ZW9mKHN0cnVjdCBhdjFjZGZzKSwgMjA0OCk7Cj4gKwlhdjFf ZGVjLT5jZGZzID0gJmF2MV9kZWMtPmRlZmF1bHRfY2RmczsKPiArCWF2MV9kZWMtPmNkZnNfbmR2 YyA9ICZhdjFfZGVjLT5kZWZhdWx0X2NkZnNfbmR2YzsKPiArCj4gKwlyb2NrY2hpcF9hdjFfc2V0 X2RlZmF1bHRfY2RmcyhhdjFfZGVjLT5jZGZzLCBhdjFfZGVjLT5jZGZzX25kdmMpOwo+ICsKPiAr CWF2MV9kZWMtPnRpbGVfYnVmLmNwdSA9IGRtYV9hbGxvY19jb2hlcmVudCh2cHUtPmRldiwKPiAr CQkJCQkJICAgQVYxX1RJTEVfU0laRSwKPiArCQkJCQkJICAgJmF2MV9kZWMtPnRpbGVfYnVmLmRt YSwKPiArCQkJCQkJICAgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWF2MV9kZWMtPnRpbGVfYnVmLmNw dSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCWF2MV9kZWMtPnRpbGVfYnVmLnNpemUgPSBBVjFf VElMRV9TSVpFOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHJvY2tj aGlwX3ZwdTk4MV9hdjFfZGVjX3ByZXBhcmVfcnVuKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4g K3sKPiArCXN0cnVjdCBoYW50cm9fYXYxX2RlY19od19jdHggKmF2MV9kZWMgPSAmY3R4LT5hdjFf ZGVjOwo+ICsJc3RydWN0IGhhbnRyb19hdjFfZGVjX2N0cmxzICpjdHJscyA9ICZhdjFfZGVjLT5j dHJsczsKPiArCj4gKwljdHJscy0+c2VxdWVuY2UgPSBoYW50cm9fZ2V0X2N0cmwoY3R4LCBWNEwy X0NJRF9TVEFURUxFU1NfQVYxX1NFUVVFTkNFKTsKPiArCWlmIChXQVJOX09OKCFjdHJscy0+c2Vx dWVuY2UpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWN0cmxzLT50aWxlX2dyb3VwX2Vu dHJ5ID0KPiArCSAgICBoYW50cm9fZ2V0X2N0cmwoY3R4LCBWNEwyX0NJRF9TVEFURUxFU1NfQVYx X1RJTEVfR1JPVVBfRU5UUlkpOwo+ICsJaWYgKFdBUk5fT04oIWN0cmxzLT50aWxlX2dyb3VwX2Vu dHJ5KSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwljdHJscy0+ZnJhbWUgPSBoYW50cm9f Z2V0X2N0cmwoY3R4LCBWNEwyX0NJRF9TVEFURUxFU1NfQVYxX0ZSQU1FKTsKPiArCWlmIChXQVJO X09OKCFjdHJscy0+ZnJhbWUpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWN0cmxzLT5m aWxtX2dyYWluID0KPiArCSAgICBoYW50cm9fZ2V0X2N0cmwoY3R4LCBWNEwyX0NJRF9TVEFURUxF U1NfQVYxX0ZJTE1fR1JBSU4pOwo+ICsKPiArCXJldHVybiByb2NrY2hpcF92cHU5ODFfYXYxX2Rl Y190aWxlc19yZWFsbG9jYXRlKGN0eCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IHJv Y2tjaGlwX3ZwdTk4MV9hdjFfZGVjX2dldF9tc2IodTMyIG4pCj4gK3sKPiArCWlmIChuID09IDAp Cj4gKwkJcmV0dXJuIDA7Cj4gKwlyZXR1cm4gMzEgXiBfX2J1aWx0aW5fY2x6KG4pOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgc2hvcnQgcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfcmVzb2x2ZV9kaXZpc29y XzMyKHUzMiBkLCBzaG9ydCAqc2hpZnQpCj4gK3sKPiArCWludCBmOwo+ICsJdTY0IGU7Cj4gKwo+ ICsJKnNoaWZ0ID0gcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfZ2V0X21zYihkKTsKPiArCS8qIGUg aXMgb2J0YWluZWQgZnJvbSBEIGFmdGVyIHJlc2V0dGluZyB0aGUgbW9zdCBzaWduaWZpY2FudCAx IGJpdC4gKi8KPiArCWUgPSBkIC0gKCh1MzIpMSA8PCAqc2hpZnQpOwo+ICsJLyogR2V0IHRoZSBt b3N0IHNpZ25pZmljYW50IERJVl9MVVRfQklUUyAoOCkgYml0cyBvZiBlIGludG8gZiAqLwo+ICsJ aWYgKCpzaGlmdCA+IERJVl9MVVRfQklUUykKPiArCQlmID0gQVYxX0RJVl9ST1VORF9VUF9QT1cy KGUsICpzaGlmdCAtIERJVl9MVVRfQklUUyk7Cj4gKwllbHNlCj4gKwkJZiA9IGUgPDwgKERJVl9M VVRfQklUUyAtICpzaGlmdCk7Cj4gKwlpZiAoZiA+IERJVl9MVVRfTlVNKQo+ICsJCXJldHVybiAt MTsKPiArCSpzaGlmdCArPSBESVZfTFVUX1BSRUNfQklUUzsKPiArCS8qIFVzZSBmIGFzIGxvb2t1 cCBpbnRvIHRoZSBwcmVjb21wdXRlZCB0YWJsZSBvZiBtdWx0aXBsaWVycyAqLwo+ICsJcmV0dXJu IGRpdl9sdXRbZl07Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK3JvY2tjaGlwX3ZwdTk4MV9h djFfZGVjX2dldF9zaGVhcl9wYXJhbXMoY29uc3QgdTMyICpwYXJhbXMsIHM2NCAqYWxwaGEsCj4g KwkJCQkJIHM2NCAqYmV0YSwgczY0ICpnYW1tYSwgczY0ICpkZWx0YSkKPiArewo+ICsJY29uc3Qg aW50ICptYXQgPSBwYXJhbXM7Cj4gKwlzaG9ydCBzaGlmdDsKPiArCXNob3J0IHk7Cj4gKwlsb25n IGxvbmcgZ3YsIGR2Owo+ICsKPiArCWlmIChtYXRbMl0gPD0gMCkKPiArCQlyZXR1cm47Cj4gKwo+ ICsJKmFscGhhID0gY2xhbXBfdmFsKG1hdFsyXSAtICgxIDw8IFdBUlBFRE1PREVMX1BSRUNfQklU UyksIFMxNl9NSU4sIFMxNl9NQVgpOwo+ICsJKmJldGEgPSBjbGFtcF92YWwobWF0WzNdLCBTMTZf TUlOLCBTMTZfTUFYKTsKPiArCj4gKwl5ID0gcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfcmVzb2x2 ZV9kaXZpc29yXzMyKGFicyhtYXRbMl0pLCAmc2hpZnQpICogKG1hdFsyXSA8IDAgPyAtMSA6IDEp Owo+ICsKPiArCWd2ID0gKChsb25nIGxvbmcpbWF0WzRdICogKDEgPDwgV0FSUEVETU9ERUxfUFJF Q19CSVRTKSkgKiB5Owo+ICsKPiArCSpnYW1tYSA9IGNsYW1wX3ZhbCgoaW50KUFWMV9ESVZfUk9V TkRfVVBfUE9XMl9TSUdORUQoZ3YsIHNoaWZ0KSwgUzE2X01JTiwgUzE2X01BWCk7Cj4gKwo+ICsJ ZHYgPSAoKGxvbmcgbG9uZyltYXRbM10gKiBtYXRbNF0pICogeTsKPiArCSpkZWx0YSA9IGNsYW1w X3ZhbChtYXRbNV0gLQo+ICsJCShpbnQpQVYxX0RJVl9ST1VORF9VUF9QT1cyX1NJR05FRChkdiwg c2hpZnQpIC0gKDEgPDwgV0FSUEVETU9ERUxfUFJFQ19CSVRTKSwKPiArCQlTMTZfTUlOLCBTMTZf TUFYKTsKPiArCj4gKwkqYWxwaGEgPSBBVjFfRElWX1JPVU5EX1VQX1BPVzJfU0lHTkVEKCphbHBo YSwgV0FSUF9QQVJBTV9SRURVQ0VfQklUUykKPiArCQkgKiAoMSA8PCBXQVJQX1BBUkFNX1JFRFVD RV9CSVRTKTsKPiArCSpiZXRhID0gQVYxX0RJVl9ST1VORF9VUF9QT1cyX1NJR05FRCgqYmV0YSwg V0FSUF9QQVJBTV9SRURVQ0VfQklUUykKPiArCQkqICgxIDw8IFdBUlBfUEFSQU1fUkVEVUNFX0JJ VFMpOwo+ICsJKmdhbW1hID0gQVYxX0RJVl9ST1VORF9VUF9QT1cyX1NJR05FRCgqZ2FtbWEsIFdB UlBfUEFSQU1fUkVEVUNFX0JJVFMpCj4gKwkJICogKDEgPDwgV0FSUF9QQVJBTV9SRURVQ0VfQklU Uyk7Cj4gKwkqZGVsdGEgPSBBVjFfRElWX1JPVU5EX1VQX1BPVzJfU0lHTkVEKCpkZWx0YSwgV0FS UF9QQVJBTV9SRURVQ0VfQklUUykKPiArCQkqICgxIDw8IFdBUlBfUEFSQU1fUkVEVUNFX0JJVFMp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCByb2NrY2hpcF92cHU5ODFfYXYxX2RlY19zZXRfZ2xv YmFsX21vZGVsKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4gK3sKPiArCXN0cnVjdCBoYW50cm9f YXYxX2RlY19od19jdHggKmF2MV9kZWMgPSAmY3R4LT5hdjFfZGVjOwo+ICsJc3RydWN0IGhhbnRy b19hdjFfZGVjX2N0cmxzICpjdHJscyA9ICZhdjFfZGVjLT5jdHJsczsKPiArCWNvbnN0IHN0cnVj dCB2NGwyX2N0cmxfYXYxX2ZyYW1lICpmcmFtZSA9IGN0cmxzLT5mcmFtZTsKPiArCWNvbnN0IHN0 cnVjdCB2NGwyX2F2MV9nbG9iYWxfbW90aW9uICpnbSA9ICZmcmFtZS0+Z2xvYmFsX21vdGlvbjsK PiArCXU4ICpkc3QgPSBhdjFfZGVjLT5nbG9iYWxfbW9kZWwuY3B1Owo+ICsJc3RydWN0IGhhbnRy b19kZXYgKnZwdSA9IGN0eC0+ZGV2Owo+ICsJaW50IHJlZl9mcmFtZSwgaTsKPiArCj4gKwltZW1z ZXQoZHN0LCAwLCBHTE9CQUxfTU9ERUxfU0laRSk7Cj4gKwlmb3IgKHJlZl9mcmFtZSA9IDA7IHJl Zl9mcmFtZSA8IFY0TDJfQVYxX1JFRlNfUEVSX0ZSQU1FOyArK3JlZl9mcmFtZSkgewo+ICsJCXM2 NCBhbHBoYSA9IDAsIGJldGEgPSAwLCBnYW1tYSA9IDAsIGRlbHRhID0gMDsKPiArCj4gKwkJZm9y IChpID0gMDsgaSA8IDY7ICsraSkgewo+ICsJCQlpZiAoaSA9PSAyKQo+ICsJCQkJKihzMzIgKilk c3QgPQo+ICsJCQkJCWdtLT5wYXJhbXNbVjRMMl9BVjFfUkVGX0xBU1RfRlJBTUUgKyByZWZfZnJh bWVdWzNdOwo+ICsJCQllbHNlIGlmIChpID09IDMpCj4gKwkJCQkqKHMzMiAqKWRzdCA9Cj4gKwkJ CQkJZ20tPnBhcmFtc1tWNEwyX0FWMV9SRUZfTEFTVF9GUkFNRSArIHJlZl9mcmFtZV1bMl07Cj4g KwkJCWVsc2UKPiArCQkJCSooczMyICopZHN0ID0KPiArCQkJCQlnbS0+cGFyYW1zW1Y0TDJfQVYx X1JFRl9MQVNUX0ZSQU1FICsgcmVmX2ZyYW1lXVtpXTsKPiArCQkJZHN0ICs9IDQ7Cj4gKwkJfQo+ ICsKPiArCQlpZiAoZ20tPnR5cGVbVjRMMl9BVjFfUkVGX0xBU1RfRlJBTUUgKyByZWZfZnJhbWVd IDw9IFY0TDJfQVYxX1dBUlBfTU9ERUxfQUZGSU5FKQo+ICsJCQlyb2NrY2hpcF92cHU5ODFfYXYx X2RlY19nZXRfc2hlYXJfcGFyYW1zKCZnbS0+cGFyYW1zW1Y0TDJfQVYxX1JFRl9MQVNUX0ZSQU1F ICsgcmVmX2ZyYW1lXVswXSwKPiArCQkJCQkJCQkgJmFscGhhLCAmYmV0YSwgJmdhbW1hLCAmZGVs dGEpOwo+ICsKPiArCQkqKHMxNiAqKWRzdCA9IGFscGhhOwo+ICsJCWRzdCArPSAyOwo+ICsJCSoo czE2ICopZHN0ID0gYmV0YTsKPiArCQlkc3QgKz0gMjsKPiArCQkqKHMxNiAqKWRzdCA9IGdhbW1h Owo+ICsJCWRzdCArPSAyOwo+ICsJCSooczE2ICopZHN0ID0gZGVsdGE7Cj4gKwkJZHN0ICs9IDI7 Cj4gKwl9Cj4gKwo+ICsJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBBVjFfR0xPQkFMX01PREVMLCBh djFfZGVjLT5nbG9iYWxfbW9kZWwuZG1hKTsKPiArfQo+ICsKPiArc3RhdGljIGludCByb2NrY2hp cF92cHU5ODFfYXYxX3RpbGVfbG9nMihpbnQgdGFyZ2V0KQo+ICt7Cj4gKwlpbnQgazsKPiArCj4g KwkvKgo+ICsJICogcmV0dXJucyB0aGUgc21hbGxlc3QgdmFsdWUgZm9yIGsgc3VjaCB0aGF0IDEg PDwgayBpcyBncmVhdGVyCj4gKyAgICAgICAgICogdGhhbiBvciBlcXVhbCB0byB0YXJnZXQKPiAr CSAqLwo+ICsJZm9yIChrID0gMDsgKDEgPDwgaykgPCB0YXJnZXQ7IGsrKyk7Cj4gKwo+ICsJcmV0 dXJuIGs7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX3Nl dF90aWxlX2luZm8oc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPiArewo+ICsJc3RydWN0IGhhbnRy b19hdjFfZGVjX2h3X2N0eCAqYXYxX2RlYyA9ICZjdHgtPmF2MV9kZWM7Cj4gKwlzdHJ1Y3QgaGFu dHJvX2F2MV9kZWNfY3RybHMgKmN0cmxzID0gJmF2MV9kZWMtPmN0cmxzOwo+ICsJc3RydWN0IHY0 bDJfYXYxX3RpbGVfaW5mbyB0aWxlX2luZm8gPSBjdHJscy0+ZnJhbWUtPnRpbGVfaW5mbzsKPiAr CWNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfYXYxX3RpbGVfZ3JvdXBfZW50cnkgKmdyb3VwX2VudHJ5 ID0KPiArCSAgICBjdHJscy0+dGlsZV9ncm91cF9lbnRyeTsKPiArCWludCBjb250ZXh0X3VwZGF0 ZV95ID0KPiArCSAgICB0aWxlX2luZm8uY29udGV4dF91cGRhdGVfdGlsZV9pZCAvIHRpbGVfaW5m by50aWxlX2NvbHM7Cj4gKwlpbnQgY29udGV4dF91cGRhdGVfeCA9Cj4gKwkgICAgdGlsZV9pbmZv LmNvbnRleHRfdXBkYXRlX3RpbGVfaWQgJSB0aWxlX2luZm8udGlsZV9jb2xzOwo+ICsJaW50IGNv bnRleHRfdXBkYXRlX3RpbGVfaWQgPQo+ICsJICAgIGNvbnRleHRfdXBkYXRlX3ggKiB0aWxlX2lu Zm8udGlsZV9yb3dzICsgY29udGV4dF91cGRhdGVfeTsKPiArCXU4ICpkc3QgPSBhdjFfZGVjLT50 aWxlX2luZm8uY3B1Owo+ICsJc3RydWN0IGhhbnRyb19kZXYgKnZwdSA9IGN0eC0+ZGV2Owo+ICsJ aW50IHRpbGUwLCB0aWxlMTsKPiArCj4gKwltZW1zZXQoZHN0LCAwLCBhdjFfZGVjLT50aWxlX2lu Zm8uc2l6ZSk7Cj4gKwo+ICsJZm9yICh0aWxlMCA9IDA7IHRpbGUwIDwgdGlsZV9pbmZvLnRpbGVf Y29sczsgdGlsZTArKykgewo+ICsJCWZvciAodGlsZTEgPSAwOyB0aWxlMSA8IHRpbGVfaW5mby50 aWxlX3Jvd3M7IHRpbGUxKyspIHsKPiArCQkJaW50IHRpbGVfaWQgPSB0aWxlMSAqIHRpbGVfaW5m by50aWxlX2NvbHMgKyB0aWxlMDsKPiArCQkJdTMyIHN0YXJ0LCBlbmQ7Cj4gKwkJCXUzMiB5MCA9 Cj4gKwkJCSAgICB0aWxlX2luZm8uaGVpZ2h0X2luX3Nic19taW51c18xW3RpbGUxXSArIDE7Cj4g KwkJCXUzMiB4MCA9IHRpbGVfaW5mby53aWR0aF9pbl9zYnNfbWludXNfMVt0aWxlMF0gKyAxOwo+ ICsKPiArCQkJLy8gdGlsZSBzaXplIGluIFNCIHVuaXRzICh3aWR0aCxoZWlnaHQpCj4gKwkJCSpk c3QrKyA9IHgwOwo+ICsJCQkqZHN0KysgPSAwOwo+ICsJCQkqZHN0KysgPSAwOwo+ICsJCQkqZHN0 KysgPSAwOwo+ICsJCQkqZHN0KysgPSB5MDsKPiArCQkJKmRzdCsrID0gMDsKPiArCQkJKmRzdCsr ID0gMDsKPiArCQkJKmRzdCsrID0gMDsKPiArCj4gKwkJCS8vIHRpbGUgc3RhcnQgcG9zaXRpb24K PiArCQkJc3RhcnQgPSBncm91cF9lbnRyeVt0aWxlX2lkXS50aWxlX29mZnNldCAtIGdyb3VwX2Vu dHJ5WzBdLnRpbGVfb2Zmc2V0Owo+ICsJCQkqZHN0KysgPSBzdGFydCAmIDI1NTsKPiArCQkJKmRz dCsrID0gKHN0YXJ0ID4+IDgpICYgMjU1Owo+ICsJCQkqZHN0KysgPSAoc3RhcnQgPj4gMTYpICYg MjU1Owo+ICsJCQkqZHN0KysgPSAoc3RhcnQgPj4gMjQpICYgMjU1Owo+ICsKPiArCQkJLy8gIyBv ZiBieXRlcyBpbiB0aWxlIGRhdGEKPiArCQkJZW5kID0gc3RhcnQgKyBncm91cF9lbnRyeVt0aWxl X2lkXS50aWxlX3NpemU7Cj4gKwkJCSpkc3QrKyA9IGVuZCAmIDI1NTsKPiArCQkJKmRzdCsrID0g KGVuZCA+PiA4KSAmIDI1NTsKPiArCQkJKmRzdCsrID0gKGVuZCA+PiAxNikgJiAyNTU7Cj4gKwkJ CSpkc3QrKyA9IChlbmQgPj4gMjQpICYgMjU1Owo+ICsJCX0KPiArCX0KPiArCj4gKwloYW50cm9f cmVnX3dyaXRlKHZwdSwgJmF2MV9tdWx0aWNvcmVfZXhwZWN0X2NvbnRleHRfdXBkYXRlLAo+ICsJ CQkgISEoY29udGV4dF91cGRhdGVfeCA9PSAwKSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwg JmF2MV90aWxlX2VuYWJsZSwKPiArCQkJICEhKCh0aWxlX2luZm8udGlsZV9jb2xzID4gMSkgfHwg KHRpbGVfaW5mby50aWxlX3Jvd3MgPiAxKSkpOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZh djFfbnVtX3RpbGVfY29sc184aywgdGlsZV9pbmZvLnRpbGVfY29scyk7Cj4gKwloYW50cm9fcmVn X3dyaXRlKHZwdSwgJmF2MV9udW1fdGlsZV9yb3dzXzhrLCB0aWxlX2luZm8udGlsZV9yb3dzKTsK PiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2NvbnRleHRfdXBkYXRlX3RpbGVfaWQsCj4g KwkJCSBjb250ZXh0X3VwZGF0ZV90aWxlX2lkKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAm YXYxX3RpbGVfdHJhbnNwb3NlLCAxKTsKPiArCWlmIChyb2NrY2hpcF92cHU5ODFfYXYxX3RpbGVf bG9nMih0aWxlX2luZm8udGlsZV9jb2xzKSB8fAo+ICsJICAgIHJvY2tjaGlwX3ZwdTk4MV9hdjFf dGlsZV9sb2cyKHRpbGVfaW5mby50aWxlX3Jvd3MpKQo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1 LCAmYXYxX2RlY190aWxlX3NpemVfbWFnLCB0aWxlX2luZm8udGlsZV9zaXplX2J5dGVzIC0gMSk7 Cj4gKwllbHNlCj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZGVjX3RpbGVfc2l6ZV9t YWcsIDMpOwo+ICsKPiArCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgQVYxX1RJTEVfQkFTRSwgYXYx X2RlYy0+dGlsZV9pbmZvLmRtYSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcm9ja2NoaXBfdnB1 OTgxX2F2MV9kZWNfZ2V0X2Rpc3Qoc3RydWN0IGhhbnRyb19jdHggKmN0eCwKPiArCQkJCQkgICAg aW50IGEsIGludCBiKQo+ICt7Cj4gKwlzdHJ1Y3QgaGFudHJvX2F2MV9kZWNfaHdfY3R4ICphdjFf ZGVjID0gJmN0eC0+YXYxX2RlYzsKPiArCXN0cnVjdCBoYW50cm9fYXYxX2RlY19jdHJscyAqY3Ry bHMgPSAmYXYxX2RlYy0+Y3RybHM7Cj4gKwlpbnQgYml0cyA9IGN0cmxzLT5zZXF1ZW5jZS0+b3Jk ZXJfaGludF9iaXRzIC0gMTsKPiArCWludCBkaWZmLCBtOwo+ICsKPiArCWlmICghY3RybHMtPnNl cXVlbmNlLT5vcmRlcl9oaW50X2JpdHMpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJZGlmZiA9IGEg LSBiOwo+ICsJbSA9IDEgPDwgYml0czsKPiArCWRpZmYgPSAoZGlmZiAmIChtIC0gMSkpIC0gKGRp ZmYgJiBtKTsKPiArCj4gKwlyZXR1cm4gZGlmZjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcm9j a2NoaXBfdnB1OTgxX2F2MV9kZWNfc2V0X2ZyYW1lX3NpZ25fYmlhcyhzdHJ1Y3QgaGFudHJvX2N0 eCAqY3R4KQo+ICt7Cj4gKwlzdHJ1Y3QgaGFudHJvX2F2MV9kZWNfaHdfY3R4ICphdjFfZGVjID0g JmN0eC0+YXYxX2RlYzsKPiArCXN0cnVjdCBoYW50cm9fYXYxX2RlY19jdHJscyAqY3RybHMgPSAm YXYxX2RlYy0+Y3RybHM7Cj4gKwljb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2F2MV9mcmFtZSAqZnJh bWUgPSBjdHJscy0+ZnJhbWU7Cj4gKwljb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2F2MV9zZXF1ZW5j ZSAqc2VxdWVuY2UgPSBjdHJscy0+c2VxdWVuY2U7Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAoIXNl cXVlbmNlLT5vcmRlcl9oaW50X2JpdHMgfHwgSVNfSU5UUkEoZnJhbWUtPmZyYW1lX3R5cGUpKSB7 Cj4gKwkJZm9yIChpID0gMDsgaSA8IFY0TDJfQVYxX1RPVEFMX1JFRlNfUEVSX0ZSQU1FOyBpKysp Cj4gKwkJCWF2MV9kZWMtPnJlZl9mcmFtZV9zaWduX2JpYXNbaV0gPSAwOwo+ICsKPiArCQlyZXR1 cm47Cj4gKwl9Cj4gKwkvLyBJZGVudGlmeSB0aGUgbmVhcmVzdCBmb3J3YXJkIGFuZCBiYWNrd2Fy ZCByZWZlcmVuY2VzLgo+ICsJZm9yIChpID0gMDsgaSA8IFY0TDJfQVYxX1RPVEFMX1JFRlNfUEVS X0ZSQU1FIC0gMTsgaSsrKSB7Cj4gKwkJaWYgKHJvY2tjaGlwX3ZwdTk4MV9nZXRfZnJhbWVfaW5k ZXgoY3R4LCBpKSA+PSAwKSB7Cj4gKwkJCWludCByZWxfb2ZmID0KPiArCQkJICAgIHJvY2tjaGlw X3ZwdTk4MV9hdjFfZGVjX2dldF9kaXN0KGN0eCwKPiArCQkJCQkJCSAgICAgcm9ja2NoaXBfdnB1 OTgxX2dldF9vcmRlcl9oaW50KGN0eCwgaSksCj4gKwkJCQkJCQkgICAgIGZyYW1lLT5vcmRlcl9o aW50KTsKPiArCQkJYXYxX2RlYy0+cmVmX2ZyYW1lX3NpZ25fYmlhc1tpICsgMV0gPSAocmVsX29m ZiA8PSAwKSA/IDAgOiAxOwo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiArc3RhdGljIGJvb2wKPiAr cm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfc2V0X3JlZihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LCBp bnQgcmVmLCBpbnQgaWR4LAo+ICsJCQkJaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQo+ICt7Cj4gKwlz dHJ1Y3QgaGFudHJvX2F2MV9kZWNfaHdfY3R4ICphdjFfZGVjID0gJmN0eC0+YXYxX2RlYzsKPiAr CXN0cnVjdCBoYW50cm9fYXYxX2RlY19jdHJscyAqY3RybHMgPSAmYXYxX2RlYy0+Y3RybHM7Cj4g Kwljb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2F2MV9mcmFtZSAqZnJhbWUgPSBjdHJscy0+ZnJhbWU7 Cj4gKwlzdHJ1Y3QgaGFudHJvX2RldiAqdnB1ID0gY3R4LT5kZXY7Cj4gKwlzdHJ1Y3QgaGFudHJv X2RlY29kZWRfYnVmZmVyICpkc3Q7Cj4gKwlkbWFfYWRkcl90IGx1bWFfYWRkciwgY2hyb21hX2Fk ZHIsIG12X2FkZHIgPSAwOwo+ICsJc2l6ZV90IGNyX29mZnNldCA9IHJvY2tjaGlwX3ZwdTk4MV9h djFfZGVjX2x1bWFfc2l6ZShjdHgpOwo+ICsJc2l6ZV90IG12X29mZnNldCA9IHJvY2tjaGlwX3Zw dTk4MV9hdjFfZGVjX2Nocm9tYV9zaXplKGN0eCk7Cj4gKwlpbnQgY3VyX3dpZHRoID0gZnJhbWUt PmZyYW1lX3dpZHRoX21pbnVzXzEgKyAxOwo+ICsJaW50IGN1cl9oZWlnaHQgPSBmcmFtZS0+ZnJh bWVfaGVpZ2h0X21pbnVzXzEgKyAxOwo+ICsJaW50IHNjYWxlX3dpZHRoID0KPiArCSAgICAoKHdp ZHRoIDw8IEFWMV9SRUZfU0NBTEVfU0hJRlQpICsgY3VyX3dpZHRoIC8gMikgLyBjdXJfd2lkdGg7 Cj4gKwlpbnQgc2NhbGVfaGVpZ2h0ID0KPiArCSAgICAoKGhlaWdodCA8PCBBVjFfUkVGX1NDQUxF X1NISUZUKSArIGN1cl9oZWlnaHQgLyAyKSAvIGN1cl9oZWlnaHQ7Cj4gKwo+ICsJc3dpdGNoIChy ZWYpIHsKPiArCWNhc2UgMDoKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWYwX2hl aWdodCwgaGVpZ2h0KTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWYwX3dpZHRo LCB3aWR0aCk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcmVmMF92ZXJfc2NhbGUs IHNjYWxlX3dpZHRoKTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWYwX2hvcl9z Y2FsZSwgc2NhbGVfaGVpZ2h0KTsKPiArCQlicmVhazsKPiArCWNhc2UgMToKPiArCQloYW50cm9f cmVnX3dyaXRlKHZwdSwgJmF2MV9yZWYxX2hlaWdodCwgaGVpZ2h0KTsKPiArCQloYW50cm9fcmVn X3dyaXRlKHZwdSwgJmF2MV9yZWYxX3dpZHRoLCB3aWR0aCk7Cj4gKwkJaGFudHJvX3JlZ193cml0 ZSh2cHUsICZhdjFfcmVmMV92ZXJfc2NhbGUsIHNjYWxlX3dpZHRoKTsKPiArCQloYW50cm9fcmVn X3dyaXRlKHZwdSwgJmF2MV9yZWYxX2hvcl9zY2FsZSwgc2NhbGVfaGVpZ2h0KTsKPiArCQlicmVh azsKPiArCWNhc2UgMjoKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWYyX2hlaWdo dCwgaGVpZ2h0KTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWYyX3dpZHRoLCB3 aWR0aCk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcmVmMl92ZXJfc2NhbGUsIHNj YWxlX3dpZHRoKTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWYyX2hvcl9zY2Fs ZSwgc2NhbGVfaGVpZ2h0KTsKPiArCQlicmVhazsKPiArCWNhc2UgMzoKPiArCQloYW50cm9fcmVn X3dyaXRlKHZwdSwgJmF2MV9yZWYzX2hlaWdodCwgaGVpZ2h0KTsKPiArCQloYW50cm9fcmVnX3dy aXRlKHZwdSwgJmF2MV9yZWYzX3dpZHRoLCB3aWR0aCk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2 cHUsICZhdjFfcmVmM192ZXJfc2NhbGUsIHNjYWxlX3dpZHRoKTsKPiArCQloYW50cm9fcmVnX3dy aXRlKHZwdSwgJmF2MV9yZWYzX2hvcl9zY2FsZSwgc2NhbGVfaGVpZ2h0KTsKPiArCQlicmVhazsK PiArCWNhc2UgNDoKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWY0X2hlaWdodCwg aGVpZ2h0KTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWY0X3dpZHRoLCB3aWR0 aCk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcmVmNF92ZXJfc2NhbGUsIHNjYWxl X3dpZHRoKTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWY0X2hvcl9zY2FsZSwg c2NhbGVfaGVpZ2h0KTsKPiArCQlicmVhazsKPiArCWNhc2UgNToKPiArCQloYW50cm9fcmVnX3dy aXRlKHZwdSwgJmF2MV9yZWY1X2hlaWdodCwgaGVpZ2h0KTsKPiArCQloYW50cm9fcmVnX3dyaXRl KHZwdSwgJmF2MV9yZWY1X3dpZHRoLCB3aWR0aCk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUs ICZhdjFfcmVmNV92ZXJfc2NhbGUsIHNjYWxlX3dpZHRoKTsKPiArCQloYW50cm9fcmVnX3dyaXRl KHZwdSwgJmF2MV9yZWY1X2hvcl9zY2FsZSwgc2NhbGVfaGVpZ2h0KTsKPiArCQlicmVhazsKPiAr CWNhc2UgNjoKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWY2X2hlaWdodCwgaGVp Z2h0KTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWY2X3dpZHRoLCB3aWR0aCk7 Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcmVmNl92ZXJfc2NhbGUsIHNjYWxlX3dp ZHRoKTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWY2X2hvcl9zY2FsZSwgc2Nh bGVfaGVpZ2h0KTsKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJcHJfd2FybigiQVYxIGlu dmFsaWQgcmVmZXJlbmNlIGZyYW1lIGluZGV4XG4iKTsKPiArCX0KPiArCj4gKwlkc3QgPSB2YjJf dG9faGFudHJvX2RlY29kZWRfYnVmKCZhdjFfZGVjLT5mcmFtZV9yZWZzW2lkeF0udmIyX3JlZi0+ dmIyX2J1Zik7Cj4gKwlsdW1hX2FkZHIgPSBoYW50cm9fZ2V0X2RlY19idWZfYWRkcihjdHgsICZk c3QtPmJhc2UudmIudmIyX2J1Zik7Cj4gKwljaHJvbWFfYWRkciA9IGx1bWFfYWRkciArIGNyX29m ZnNldDsKPiArCW12X2FkZHIgPSBsdW1hX2FkZHIgKyBtdl9vZmZzZXQ7Cj4gKwo+ICsJaGFudHJv X3dyaXRlX2FkZHIodnB1LCBBVjFfUkVGRVJFTkNFX1kocmVmKSwgbHVtYV9hZGRyKTsKPiArCWhh bnRyb193cml0ZV9hZGRyKHZwdSwgQVYxX1JFRkVSRU5DRV9DQihyZWYpLCBjaHJvbWFfYWRkcik7 Cj4gKwloYW50cm9fd3JpdGVfYWRkcih2cHUsIEFWMV9SRUZFUkVOQ0VfTVYocmVmKSwgbXZfYWRk cik7Cj4gKwo+ICsJcmV0dXJuIChzY2FsZV93aWR0aCAhPSAoMSA8PCBBVjFfUkVGX1NDQUxFX1NI SUZUKSkgfHwKPiArCQkoc2NhbGVfaGVpZ2h0ICE9ICgxIDw8IEFWMV9SRUZfU0NBTEVfU0hJRlQp KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfc2V0X3Np Z25fYmlhcyhzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LAo+ICsJCQkJCQkgIGludCByZWYsIGludCB2 YWwpCj4gK3sKPiArCXN0cnVjdCBoYW50cm9fZGV2ICp2cHUgPSBjdHgtPmRldjsKPiArCj4gKwlz d2l0Y2ggKHJlZikgewo+ICsJY2FzZSAwOgo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYx X3JlZjBfc2lnbl9iaWFzLCB2YWwpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSAxOgo+ICsJCWhhbnRy b19yZWdfd3JpdGUodnB1LCAmYXYxX3JlZjFfc2lnbl9iaWFzLCB2YWwpOwo+ICsJCWJyZWFrOwo+ ICsJY2FzZSAyOgo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3JlZjJfc2lnbl9iaWFz LCB2YWwpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSAzOgo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1 LCAmYXYxX3JlZjNfc2lnbl9iaWFzLCB2YWwpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSA0Ogo+ICsJ CWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3JlZjRfc2lnbl9iaWFzLCB2YWwpOwo+ICsJCWJy ZWFrOwo+ICsJY2FzZSA1Ogo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3JlZjVfc2ln bl9iaWFzLCB2YWwpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSA2Ogo+ICsJCWhhbnRyb19yZWdfd3Jp dGUodnB1LCAmYXYxX3JlZjZfc2lnbl9iaWFzLCB2YWwpOwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVs dDoKPiArCQlwcl93YXJuKCJBVjEgaW52YWxpZCBzaWduIGJpYXMgaW5kZXhcbiIpOwo+ICsJCWJy ZWFrOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCByb2NrY2hpcF92cHU5ODFfYXYxX2Rl Y19zZXRfc2VnbWVudGF0aW9uKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4gK3sKPiArCXN0cnVj dCBoYW50cm9fYXYxX2RlY19od19jdHggKmF2MV9kZWMgPSAmY3R4LT5hdjFfZGVjOwo+ICsJc3Ry dWN0IGhhbnRyb19hdjFfZGVjX2N0cmxzICpjdHJscyA9ICZhdjFfZGVjLT5jdHJsczsKPiArCWNv bnN0IHN0cnVjdCB2NGwyX2N0cmxfYXYxX2ZyYW1lICpmcmFtZSA9IGN0cmxzLT5mcmFtZTsKPiAr CWNvbnN0IHN0cnVjdCB2NGwyX2F2MV9zZWdtZW50YXRpb24gKnNlZyA9ICZmcmFtZS0+c2VnbWVu dGF0aW9uOwo+ICsJdTMyIHNlZ3ZhbFtWNEwyX0FWMV9NQVhfU0VHTUVOVFNdW1Y0TDJfQVYxX1NF R19MVkxfTUFYXSA9IHsgMCB9Owo+ICsJc3RydWN0IGhhbnRyb19kZXYgKnZwdSA9IGN0eC0+ZGV2 Owo+ICsJdTggc2Vnc2lnbiA9IDAsIHByZXNraXBfc2VnaWQgPSAwLCBsYXN0X2FjdGl2ZV9zZWcg PSAwLCBpLCBqOwo+ICsKPiArCWlmICghIShzZWctPmZsYWdzICYgVjRMMl9BVjFfU0VHTUVOVEFU SU9OX0ZMQUdfRU5BQkxFRCkgJiYKPiArCSAgICBmcmFtZS0+cHJpbWFyeV9yZWZfZnJhbWUgPCBW NEwyX0FWMV9SRUZTX1BFUl9GUkFNRSkgewo+ICsJCWludCBpZHggPSByb2NrY2hpcF92cHU5ODFf Z2V0X2ZyYW1lX2luZGV4KGN0eCwgZnJhbWUtPnByaW1hcnlfcmVmX2ZyYW1lKTsKPiArCj4gKwkJ aWYgKGlkeCA+PSAwKSB7Cj4gKwkJCWRtYV9hZGRyX3QgbHVtYV9hZGRyLCBtdl9hZGRyID0gMDsK PiArCQkJc3RydWN0IGhhbnRyb19kZWNvZGVkX2J1ZmZlciAqc2VnOwo+ICsJCQlzaXplX3QgbXZf b2Zmc2V0ID0gcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfY2hyb21hX3NpemUoY3R4KTsKPiArCj4g KwkJCXNlZyA9IHZiMl90b19oYW50cm9fZGVjb2RlZF9idWYoJmF2MV9kZWMtPmZyYW1lX3JlZnNb aWR4XS52YjJfcmVmLT52YjJfYnVmKTsKPiArCQkJbHVtYV9hZGRyID0gaGFudHJvX2dldF9kZWNf YnVmX2FkZHIoY3R4LCAmc2VnLT5iYXNlLnZiLnZiMl9idWYpOwo+ICsJCQltdl9hZGRyID0gbHVt YV9hZGRyICsgbXZfb2Zmc2V0Owo+ICsKPiArCQkJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBBVjFf U0VHTUVOVEFUSU9OLCBtdl9hZGRyKTsKPiArCQkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFf dXNlX3RlbXBvcmFsM19tdnMsIDEpOwo+ICsJCX0KPiArCX0KPiArCj4gKwloYW50cm9fcmVnX3dy aXRlKHZwdSwgJmF2MV9zZWdtZW50X3RlbXBfdXBkX2UsCj4gKwkJCSAhIShzZWctPmZsYWdzICYg VjRMMl9BVjFfU0VHTUVOVEFUSU9OX0ZMQUdfVEVNUE9SQUxfVVBEQVRFKSk7Cj4gKwloYW50cm9f cmVnX3dyaXRlKHZwdSwgJmF2MV9zZWdtZW50X3VwZF9lLAo+ICsJCQkgISEoc2VnLT5mbGFncyAm IFY0TDJfQVYxX1NFR01FTlRBVElPTl9GTEFHX1VQREFURV9NQVApKTsKPiArCWhhbnRyb19yZWdf d3JpdGUodnB1LCAmYXYxX3NlZ21lbnRfZSwKPiArCQkJICEhKHNlZy0+ZmxhZ3MgJiBWNEwyX0FW MV9TRUdNRU5UQVRJT05fRkxBR19FTkFCTEVEKSk7Cj4gKwo+ICsJaGFudHJvX3JlZ193cml0ZSh2 cHUsICZhdjFfZXJyb3JfcmVzaWxpZW50LAo+ICsJCQkgISEoZnJhbWUtPmZsYWdzICYgVjRMMl9B VjFfRlJBTUVfRkxBR19FUlJPUl9SRVNJTElFTlRfTU9ERSkpOwo+ICsKPiArCWlmIChJU19JTlRS QShmcmFtZS0+ZnJhbWVfdHlwZSkgfHwKPiArCSAgICAhIShmcmFtZS0+ZmxhZ3MgJiBWNEwyX0FW MV9GUkFNRV9GTEFHX0VSUk9SX1JFU0lMSUVOVF9NT0RFKSkgewo+ICsJCWhhbnRyb19yZWdfd3Jp dGUodnB1LCAmYXYxX3VzZV90ZW1wb3JhbDNfbXZzLCAwKTsKPiArCX0KPiArCj4gKwlpZiAoc2Vn LT5mbGFncyAmIFY0TDJfQVYxX1NFR01FTlRBVElPTl9GTEFHX0VOQUJMRUQpIHsKPiArCQlpbnQg czsKPiArCj4gKwkJZm9yIChzID0gMDsgcyA8IFY0TDJfQVYxX01BWF9TRUdNRU5UUzsgcysrKSB7 Cj4gKwkJCWlmIChzZWctPmZlYXR1cmVfZW5hYmxlZFtzXSAmCj4gKwkJCSAgICBWNEwyX0FWMV9T RUdNRU5UX0ZFQVRVUkVfRU5BQkxFRChWNEwyX0FWMV9TRUdfTFZMX0FMVF9RKSkgewo+ICsJCQkJ c2VndmFsW3NdW1Y0TDJfQVYxX1NFR19MVkxfQUxUX1FdID0KPiArCQkJCSAgICBjbGFtcChhYnMo c2VnLT5mZWF0dXJlX2RhdGFbc11bVjRMMl9BVjFfU0VHX0xWTF9BTFRfUV0pLAo+ICsJCQkJCSAg MCwgMjU1KTsKPiArCQkJCXNlZ3NpZ24gfD0KPiArCQkJCQkoc2VnLT5mZWF0dXJlX2RhdGFbc11b VjRMMl9BVjFfU0VHX0xWTF9BTFRfUV0gPCAwKSA8PCBzOwo+ICsJCQl9Cj4gKwo+ICsJCQlpZiAo c2VnLT5mZWF0dXJlX2VuYWJsZWRbc10gJgo+ICsJCQkgICAgVjRMMl9BVjFfU0VHTUVOVF9GRUFU VVJFX0VOQUJMRUQoVjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZfWV9WKSkKPiArCQkJCXNlZ3ZhbFtz XVtWNEwyX0FWMV9TRUdfTFZMX0FMVF9MRl9ZX1ZdID0KPiArCQkJCQljbGFtcChhYnMoc2VnLT5m ZWF0dXJlX2RhdGFbc11bVjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZfWV9WXSksCj4gKwkJCQkJICAg ICAgLTYzLCA2Myk7Cj4gKwo+ICsJCQlpZiAoc2VnLT5mZWF0dXJlX2VuYWJsZWRbc10gJgo+ICsJ CQkgICAgVjRMMl9BVjFfU0VHTUVOVF9GRUFUVVJFX0VOQUJMRUQoVjRMMl9BVjFfU0VHX0xWTF9B TFRfTEZfWV9IKSkKPiArCQkJCXNlZ3ZhbFtzXVtWNEwyX0FWMV9TRUdfTFZMX0FMVF9MRl9ZX0hd ID0KPiArCQkJCSAgICBjbGFtcChhYnMoc2VnLT5mZWF0dXJlX2RhdGFbc11bVjRMMl9BVjFfU0VH X0xWTF9BTFRfTEZfWV9IXSksCj4gKwkJCQkJICAtNjMsIDYzKTsKPiArCj4gKwkJCWlmIChzZWct PmZlYXR1cmVfZW5hYmxlZFtzXSAmCj4gKwkJCSAgICBWNEwyX0FWMV9TRUdNRU5UX0ZFQVRVUkVf RU5BQkxFRChWNEwyX0FWMV9TRUdfTFZMX0FMVF9MRl9VKSkKPiArCQkJCXNlZ3ZhbFtzXVtWNEwy X0FWMV9TRUdfTFZMX0FMVF9MRl9VXSA9Cj4gKwkJCQkgICAgY2xhbXAoYWJzKHNlZy0+ZmVhdHVy ZV9kYXRhW3NdW1Y0TDJfQVYxX1NFR19MVkxfQUxUX0xGX1VdKSwKPiArCQkJCQkgIC02MywgNjMp Owo+ICsKPiArCQkJaWYgKHNlZy0+ZmVhdHVyZV9lbmFibGVkW3NdICYKPiArCQkJICAgIFY0TDJf QVYxX1NFR01FTlRfRkVBVFVSRV9FTkFCTEVEKFY0TDJfQVYxX1NFR19MVkxfQUxUX0xGX1YpKQo+ ICsJCQkJc2VndmFsW3NdW1Y0TDJfQVYxX1NFR19MVkxfQUxUX0xGX1ZdID0KPiArCQkJCSAgICBj bGFtcChhYnMoc2VnLT5mZWF0dXJlX2RhdGFbc11bVjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZfVl0p LAo+ICsJCQkJCSAgLTYzLCA2Myk7Cj4gKwo+ICsJCQlpZiAoZnJhbWUtPmZyYW1lX3R5cGUgJiYg c2VnLT5mZWF0dXJlX2VuYWJsZWRbc10gJgo+ICsJCQkgICAgVjRMMl9BVjFfU0VHTUVOVF9GRUFU VVJFX0VOQUJMRUQoVjRMMl9BVjFfU0VHX0xWTF9SRUZfRlJBTUUpKQo+ICsJCQkJc2VndmFsW3Nd W1Y0TDJfQVYxX1NFR19MVkxfUkVGX0ZSQU1FXSsrOwo+ICsKPiArCQkJaWYgKHNlZy0+ZmVhdHVy ZV9lbmFibGVkW3NdICYKPiArCQkJICAgIFY0TDJfQVYxX1NFR01FTlRfRkVBVFVSRV9FTkFCTEVE KFY0TDJfQVYxX1NFR19MVkxfUkVGX1NLSVApKQo+ICsJCQkJc2VndmFsW3NdW1Y0TDJfQVYxX1NF R19MVkxfUkVGX1NLSVBdID0gMTsKPiArCj4gKwkJCWlmIChzZWctPmZlYXR1cmVfZW5hYmxlZFtz XSAmCj4gKwkJCSAgICBWNEwyX0FWMV9TRUdNRU5UX0ZFQVRVUkVfRU5BQkxFRChWNEwyX0FWMV9T RUdfTFZMX1JFRl9HTE9CQUxNVikpCj4gKwkJCQlzZWd2YWxbc11bVjRMMl9BVjFfU0VHX0xWTF9S RUZfR0xPQkFMTVZdID0gMTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IFY0 TDJfQVYxX01BWF9TRUdNRU5UUzsgaSsrKSB7Cj4gKwkJZm9yIChqID0gMDsgaiA8IFY0TDJfQVYx X1NFR19MVkxfTUFYOyBqKyspIHsKPiArCQkJaWYgKHNlZy0+ZmVhdHVyZV9lbmFibGVkW2ldCj4g KwkJCSAgICAmIFY0TDJfQVYxX1NFR01FTlRfRkVBVFVSRV9FTkFCTEVEKGopKSB7Cj4gKwkJCQlw cmVza2lwX3NlZ2lkIHw9IChqID49IFY0TDJfQVYxX1NFR19MVkxfUkVGX0ZSQU1FKTsKPiArCQkJ CWxhc3RfYWN0aXZlX3NlZyA9IG1heChpLCBsYXN0X2FjdGl2ZV9zZWcpOwo+ICsJCQl9Cj4gKwkJ fQo+ICsJfQo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2xhc3RfYWN0aXZlX3Nl ZywgbGFzdF9hY3RpdmVfc2VnKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3ByZXNr aXBfc2VnaWQsIHByZXNraXBfc2VnaWQpOwo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAm YXYxX3NlZ19xdWFudF9zaWduLCBzZWdzaWduKTsKPiArCj4gKwkvKiBXcml0ZSBRUCwgZmlsdGVy IGxldmVsLCByZWYgZnJhbWUgYW5kIHNraXAgZm9yIGV2ZXJ5IHNlZ21lbnQgKi8KPiArCWhhbnRy b19yZWdfd3JpdGUodnB1LCAmYXYxX3F1YW50X3NlZzAsCj4gKwkJCSBzZWd2YWxbMF1bVjRMMl9B VjFfU0VHX0xWTF9BTFRfUV0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZmlsdF9s ZXZlbF9kZWx0YTBfc2VnMCwKPiArCQkJIHNlZ3ZhbFswXVtWNEwyX0FWMV9TRUdfTFZMX0FMVF9M Rl9ZX1ZdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxfZGVsdGEx X3NlZzAsCj4gKwkJCSBzZWd2YWxbMF1bVjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZfWV9IXSk7Cj4g KwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9maWx0X2xldmVsX2RlbHRhMl9zZWcwLAo+ICsJ CQkgc2VndmFsWzBdW1Y0TDJfQVYxX1NFR19MVkxfQUxUX0xGX1VdKTsKPiArCWhhbnRyb19yZWdf d3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxfZGVsdGEzX3NlZzAsCj4gKwkJCSBzZWd2YWxbMF1b VjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZfVl0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZh djFfcmVmcGljX3NlZzAsCj4gKwkJCSBzZWd2YWxbMF1bVjRMMl9BVjFfU0VHX0xWTF9SRUZfRlJB TUVdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3NraXBfc2VnMCwKPiArCQkJIHNl Z3ZhbFswXVtWNEwyX0FWMV9TRUdfTFZMX1JFRl9TS0lQXSk7Cj4gKwloYW50cm9fcmVnX3dyaXRl KHZwdSwgJmF2MV9nbG9iYWxfbXZfc2VnMCwKPiArCQkJIHNlZ3ZhbFswXVtWNEwyX0FWMV9TRUdf TFZMX1JFRl9HTE9CQUxNVl0pOwo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3F1 YW50X3NlZzEsCj4gKwkJCSBzZWd2YWxbMV1bVjRMMl9BVjFfU0VHX0xWTF9BTFRfUV0pOwo+ICsJ aGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZmlsdF9sZXZlbF9kZWx0YTBfc2VnMSwKPiArCQkJ IHNlZ3ZhbFsxXVtWNEwyX0FWMV9TRUdfTFZMX0FMVF9MRl9ZX1ZdKTsKPiArCWhhbnRyb19yZWdf d3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxfZGVsdGExX3NlZzEsCj4gKwkJCSBzZWd2YWxbMV1b VjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZfWV9IXSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwg JmF2MV9maWx0X2xldmVsX2RlbHRhMl9zZWcxLAo+ICsJCQkgc2VndmFsWzFdW1Y0TDJfQVYxX1NF R19MVkxfQUxUX0xGX1VdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2 ZWxfZGVsdGEzX3NlZzEsCj4gKwkJCSBzZWd2YWxbMV1bVjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZf Vl0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcmVmcGljX3NlZzEsCj4gKwkJCSBz ZWd2YWxbMV1bVjRMMl9BVjFfU0VHX0xWTF9SRUZfRlJBTUVdKTsKPiArCWhhbnRyb19yZWdfd3Jp dGUodnB1LCAmYXYxX3NraXBfc2VnMSwKPiArCQkJIHNlZ3ZhbFsxXVtWNEwyX0FWMV9TRUdfTFZM X1JFRl9TS0lQXSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9nbG9iYWxfbXZfc2Vn MSwKPiArCQkJIHNlZ3ZhbFsxXVtWNEwyX0FWMV9TRUdfTFZMX1JFRl9HTE9CQUxNVl0pOwo+ICsK PiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3F1YW50X3NlZzIsCj4gKwkJCSBzZWd2YWxb Ml1bVjRMMl9BVjFfU0VHX0xWTF9BTFRfUV0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZh djFfZmlsdF9sZXZlbF9kZWx0YTBfc2VnMiwKPiArCQkJIHNlZ3ZhbFsyXVtWNEwyX0FWMV9TRUdf TFZMX0FMVF9MRl9ZX1ZdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2 ZWxfZGVsdGExX3NlZzIsCj4gKwkJCSBzZWd2YWxbMl1bVjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZf WV9IXSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9maWx0X2xldmVsX2RlbHRhMl9z ZWcyLAo+ICsJCQkgc2VndmFsWzJdW1Y0TDJfQVYxX1NFR19MVkxfQUxUX0xGX1VdKTsKPiArCWhh bnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxfZGVsdGEzX3NlZzIsCj4gKwkJCSBz ZWd2YWxbMl1bVjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZfVl0pOwo+ICsJaGFudHJvX3JlZ193cml0 ZSh2cHUsICZhdjFfcmVmcGljX3NlZzIsCj4gKwkJCSBzZWd2YWxbMl1bVjRMMl9BVjFfU0VHX0xW TF9SRUZfRlJBTUVdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3NraXBfc2VnMiwK PiArCQkJIHNlZ3ZhbFsyXVtWNEwyX0FWMV9TRUdfTFZMX1JFRl9TS0lQXSk7Cj4gKwloYW50cm9f cmVnX3dyaXRlKHZwdSwgJmF2MV9nbG9iYWxfbXZfc2VnMiwKPiArCQkJIHNlZ3ZhbFsyXVtWNEwy X0FWMV9TRUdfTFZMX1JFRl9HTE9CQUxNVl0pOwo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1 LCAmYXYxX3F1YW50X3NlZzMsCj4gKwkJCSBzZWd2YWxbM11bVjRMMl9BVjFfU0VHX0xWTF9BTFRf UV0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZmlsdF9sZXZlbF9kZWx0YTBfc2Vn MywKPiArCQkJIHNlZ3ZhbFszXVtWNEwyX0FWMV9TRUdfTFZMX0FMVF9MRl9ZX1ZdKTsKPiArCWhh bnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxfZGVsdGExX3NlZzMsCj4gKwkJCSBz ZWd2YWxbM11bVjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZfWV9IXSk7Cj4gKwloYW50cm9fcmVnX3dy aXRlKHZwdSwgJmF2MV9maWx0X2xldmVsX2RlbHRhMl9zZWczLAo+ICsJCQkgc2VndmFsWzNdW1Y0 TDJfQVYxX1NFR19MVkxfQUxUX0xGX1VdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYx X2ZpbHRfbGV2ZWxfZGVsdGEzX3NlZzMsCj4gKwkJCSBzZWd2YWxbM11bVjRMMl9BVjFfU0VHX0xW TF9BTFRfTEZfVl0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcmVmcGljX3NlZzMs Cj4gKwkJCSBzZWd2YWxbM11bVjRMMl9BVjFfU0VHX0xWTF9SRUZfRlJBTUVdKTsKPiArCWhhbnRy b19yZWdfd3JpdGUodnB1LCAmYXYxX3NraXBfc2VnMywKPiArCQkJIHNlZ3ZhbFszXVtWNEwyX0FW MV9TRUdfTFZMX1JFRl9TS0lQXSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9nbG9i YWxfbXZfc2VnMywKPiArCQkJIHNlZ3ZhbFszXVtWNEwyX0FWMV9TRUdfTFZMX1JFRl9HTE9CQUxN Vl0pOwo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3F1YW50X3NlZzQsCj4gKwkJ CSBzZWd2YWxbNF1bVjRMMl9BVjFfU0VHX0xWTF9BTFRfUV0pOwo+ICsJaGFudHJvX3JlZ193cml0 ZSh2cHUsICZhdjFfZmlsdF9sZXZlbF9kZWx0YTBfc2VnNCwKPiArCQkJIHNlZ3ZhbFs0XVtWNEwy X0FWMV9TRUdfTFZMX0FMVF9MRl9ZX1ZdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYx X2ZpbHRfbGV2ZWxfZGVsdGExX3NlZzQsCj4gKwkJCSBzZWd2YWxbNF1bVjRMMl9BVjFfU0VHX0xW TF9BTFRfTEZfWV9IXSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9maWx0X2xldmVs X2RlbHRhMl9zZWc0LAo+ICsJCQkgc2VndmFsWzRdW1Y0TDJfQVYxX1NFR19MVkxfQUxUX0xGX1Vd KTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxfZGVsdGEzX3NlZzQs Cj4gKwkJCSBzZWd2YWxbNF1bVjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZfVl0pOwo+ICsJaGFudHJv X3JlZ193cml0ZSh2cHUsICZhdjFfcmVmcGljX3NlZzQsCj4gKwkJCSBzZWd2YWxbNF1bVjRMMl9B VjFfU0VHX0xWTF9SRUZfRlJBTUVdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3Nr aXBfc2VnNCwKPiArCQkJIHNlZ3ZhbFs0XVtWNEwyX0FWMV9TRUdfTFZMX1JFRl9TS0lQXSk7Cj4g KwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9nbG9iYWxfbXZfc2VnNCwKPiArCQkJIHNlZ3Zh bFs0XVtWNEwyX0FWMV9TRUdfTFZMX1JFRl9HTE9CQUxNVl0pOwo+ICsKPiArCWhhbnRyb19yZWdf d3JpdGUodnB1LCAmYXYxX3F1YW50X3NlZzUsCj4gKwkJCSBzZWd2YWxbNV1bVjRMMl9BVjFfU0VH X0xWTF9BTFRfUV0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZmlsdF9sZXZlbF9k ZWx0YTBfc2VnNSwKPiArCQkJIHNlZ3ZhbFs1XVtWNEwyX0FWMV9TRUdfTFZMX0FMVF9MRl9ZX1Zd KTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxfZGVsdGExX3NlZzUs Cj4gKwkJCSBzZWd2YWxbNV1bVjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZfWV9IXSk7Cj4gKwloYW50 cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9maWx0X2xldmVsX2RlbHRhMl9zZWc1LAo+ICsJCQkgc2Vn dmFsWzVdW1Y0TDJfQVYxX1NFR19MVkxfQUxUX0xGX1VdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUo dnB1LCAmYXYxX2ZpbHRfbGV2ZWxfZGVsdGEzX3NlZzUsCj4gKwkJCSBzZWd2YWxbNV1bVjRMMl9B VjFfU0VHX0xWTF9BTFRfTEZfVl0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcmVm cGljX3NlZzUsCj4gKwkJCSBzZWd2YWxbNV1bVjRMMl9BVjFfU0VHX0xWTF9SRUZfRlJBTUVdKTsK PiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3NraXBfc2VnNSwKPiArCQkJIHNlZ3ZhbFs1 XVtWNEwyX0FWMV9TRUdfTFZMX1JFRl9TS0lQXSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwg JmF2MV9nbG9iYWxfbXZfc2VnNSwKPiArCQkJIHNlZ3ZhbFs1XVtWNEwyX0FWMV9TRUdfTFZMX1JF Rl9HTE9CQUxNVl0pOwo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3F1YW50X3Nl ZzYsCj4gKwkJCSBzZWd2YWxbNl1bVjRMMl9BVjFfU0VHX0xWTF9BTFRfUV0pOwo+ICsJaGFudHJv X3JlZ193cml0ZSh2cHUsICZhdjFfZmlsdF9sZXZlbF9kZWx0YTBfc2VnNiwKPiArCQkJIHNlZ3Zh bFs2XVtWNEwyX0FWMV9TRUdfTFZMX0FMVF9MRl9ZX1ZdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUo dnB1LCAmYXYxX2ZpbHRfbGV2ZWxfZGVsdGExX3NlZzYsCj4gKwkJCSBzZWd2YWxbNl1bVjRMMl9B VjFfU0VHX0xWTF9BTFRfTEZfWV9IXSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9m aWx0X2xldmVsX2RlbHRhMl9zZWc2LAo+ICsJCQkgc2VndmFsWzZdW1Y0TDJfQVYxX1NFR19MVkxf QUxUX0xGX1VdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxfZGVs dGEzX3NlZzYsCj4gKwkJCSBzZWd2YWxbNl1bVjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZfVl0pOwo+ ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcmVmcGljX3NlZzYsCj4gKwkJCSBzZWd2YWxb Nl1bVjRMMl9BVjFfU0VHX0xWTF9SRUZfRlJBTUVdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1 LCAmYXYxX3NraXBfc2VnNiwKPiArCQkJIHNlZ3ZhbFs2XVtWNEwyX0FWMV9TRUdfTFZMX1JFRl9T S0lQXSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9nbG9iYWxfbXZfc2VnNiwKPiAr CQkJIHNlZ3ZhbFs2XVtWNEwyX0FWMV9TRUdfTFZMX1JFRl9HTE9CQUxNVl0pOwo+ICsKPiArCWhh bnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3F1YW50X3NlZzcsCj4gKwkJCSBzZWd2YWxbN11bVjRM Ml9BVjFfU0VHX0xWTF9BTFRfUV0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZmls dF9sZXZlbF9kZWx0YTBfc2VnNywKPiArCQkJIHNlZ3ZhbFs3XVtWNEwyX0FWMV9TRUdfTFZMX0FM VF9MRl9ZX1ZdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxfZGVs dGExX3NlZzcsCj4gKwkJCSBzZWd2YWxbN11bVjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZfWV9IXSk7 Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9maWx0X2xldmVsX2RlbHRhMl9zZWc3LAo+ ICsJCQkgc2VndmFsWzddW1Y0TDJfQVYxX1NFR19MVkxfQUxUX0xGX1VdKTsKPiArCWhhbnRyb19y ZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxfZGVsdGEzX3NlZzcsCj4gKwkJCSBzZWd2YWxb N11bVjRMMl9BVjFfU0VHX0xWTF9BTFRfTEZfVl0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUs ICZhdjFfcmVmcGljX3NlZzcsCj4gKwkJCSBzZWd2YWxbN11bVjRMMl9BVjFfU0VHX0xWTF9SRUZf RlJBTUVdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3NraXBfc2VnNywKPiArCQkJ IHNlZ3ZhbFs3XVtWNEwyX0FWMV9TRUdfTFZMX1JFRl9TS0lQXSk7Cj4gKwloYW50cm9fcmVnX3dy aXRlKHZwdSwgJmF2MV9nbG9iYWxfbXZfc2VnNywKPiArCQkJIHNlZ3ZhbFs3XVtWNEwyX0FWMV9T RUdfTFZMX1JFRl9HTE9CQUxNVl0pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCByb2NrY2hpcF92 cHU5ODFfYXYxX2RlY19pc19sb3NzbGVzcyhzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+ICt7Cj4g KwlzdHJ1Y3QgaGFudHJvX2F2MV9kZWNfaHdfY3R4ICphdjFfZGVjID0gJmN0eC0+YXYxX2RlYzsK PiArCXN0cnVjdCBoYW50cm9fYXYxX2RlY19jdHJscyAqY3RybHMgPSAmYXYxX2RlYy0+Y3RybHM7 Cj4gKwljb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2F2MV9mcmFtZSAqZnJhbWUgPSBjdHJscy0+ZnJh bWU7Cj4gKwljb25zdCBzdHJ1Y3QgdjRsMl9hdjFfc2VnbWVudGF0aW9uICpzZWdtZW50YXRpb24g PSAmZnJhbWUtPnNlZ21lbnRhdGlvbjsKPiArCWNvbnN0IHN0cnVjdCB2NGwyX2F2MV9xdWFudGl6 YXRpb24gKnF1YW50aXphdGlvbiA9ICZmcmFtZS0+cXVhbnRpemF0aW9uOwo+ICsJaW50IGk7Cj4g Kwo+ICsJZm9yIChpID0gMDsgaSA8IFY0TDJfQVYxX01BWF9TRUdNRU5UUzsgaSsrKSB7Cj4gKwkJ aW50IHFpbmRleCA9IHF1YW50aXphdGlvbi0+YmFzZV9xX2lkeDsKPiArCj4gKwkJaWYgKHNlZ21l bnRhdGlvbi0+ZmVhdHVyZV9lbmFibGVkW2ldICYKPiArCQkgICAgVjRMMl9BVjFfU0VHTUVOVF9G RUFUVVJFX0VOQUJMRUQoVjRMMl9BVjFfU0VHX0xWTF9BTFRfUSkpIHsKPiArCQkJcWluZGV4ICs9 IHNlZ21lbnRhdGlvbi0+ZmVhdHVyZV9kYXRhW2ldW1Y0TDJfQVYxX1NFR19MVkxfQUxUX1FdOwo+ ICsJCX0KPiArCQlxaW5kZXggPSBjbGFtcChxaW5kZXgsIDAsIDI1NSk7Cj4gKwo+ICsJCWlmIChx aW5kZXggfHwKPiArCQkgICAgcXVhbnRpemF0aW9uLT5kZWx0YV9xX3lfZGMgfHwKPiArCQkgICAg cXVhbnRpemF0aW9uLT5kZWx0YV9xX3VfZGMgfHwKPiArCQkgICAgcXVhbnRpemF0aW9uLT5kZWx0 YV9xX3VfYWMgfHwKPiArCQkgICAgcXVhbnRpemF0aW9uLT5kZWx0YV9xX3ZfZGMgfHwKPiArCQkg ICAgcXVhbnRpemF0aW9uLT5kZWx0YV9xX3ZfYWMpCj4gKwkJCXJldHVybiBmYWxzZTsKPiArCX0K PiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCByb2NrY2hpcF92cHU5ODFf YXYxX2RlY19zZXRfbG9vcGZpbHRlcihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+ICt7Cj4gKwlz dHJ1Y3QgaGFudHJvX2F2MV9kZWNfaHdfY3R4ICphdjFfZGVjID0gJmN0eC0+YXYxX2RlYzsKPiAr CXN0cnVjdCBoYW50cm9fYXYxX2RlY19jdHJscyAqY3RybHMgPSAmYXYxX2RlYy0+Y3RybHM7Cj4g Kwljb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2F2MV9mcmFtZSAqZnJhbWUgPSBjdHJscy0+ZnJhbWU7 Cj4gKwljb25zdCBzdHJ1Y3QgdjRsMl9hdjFfbG9vcF9maWx0ZXIgKmxvb3BfZmlsdGVyID0gJmZy YW1lLT5sb29wX2ZpbHRlcjsKPiArCWJvb2wgZmlsdGVyaW5nX2RpcyA9IChsb29wX2ZpbHRlci0+ bGV2ZWxbMF0gPT0gMCkgJiYgKGxvb3BfZmlsdGVyLT5sZXZlbFsxXSA9PSAwKTsKPiArCXN0cnVj dCBoYW50cm9fZGV2ICp2cHUgPSBjdHgtPmRldjsKPiArCj4gKwloYW50cm9fcmVnX3dyaXRlKHZw dSwgJmF2MV9maWx0ZXJpbmdfZGlzLCBmaWx0ZXJpbmdfZGlzKTsKPiArCWhhbnRyb19yZWdfd3Jp dGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxfYmFzZV9ndDMyLCBsb29wX2ZpbHRlci0+bGV2ZWxbMF0g PiAzMik7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9maWx0X3NoYXJwbmVzcywgbG9v cF9maWx0ZXItPnNoYXJwbmVzcyk7Cj4gKwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFf ZmlsdF9sZXZlbDAsIGxvb3BfZmlsdGVyLT5sZXZlbFswXSk7Cj4gKwloYW50cm9fcmVnX3dyaXRl KHZwdSwgJmF2MV9maWx0X2xldmVsMSwgbG9vcF9maWx0ZXItPmxldmVsWzFdKTsKPiArCWhhbnRy b19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWwyLCBsb29wX2ZpbHRlci0+bGV2ZWxbMl0p Owo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZmlsdF9sZXZlbDMsIGxvb3BfZmlsdGVy LT5sZXZlbFszXSk7Cj4gKwo+ICsJaWYgKGxvb3BfZmlsdGVyLT5mbGFncyAmIFY0TDJfQVYxX0xP T1BfRklMVEVSX0ZMQUdfREVMVEFfRU5BQkxFRCAmJgo+ICsJICAgICFyb2NrY2hpcF92cHU5ODFf YXYxX2RlY19pc19sb3NzbGVzcyhjdHgpICYmCj4gKwkgICAgIShmcmFtZS0+ZmxhZ3MgJiBWNEwy X0FWMV9GUkFNRV9GTEFHX0FMTE9XX0lOVFJBQkMpKSB7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2 cHUsICZhdjFfZmlsdF9yZWZfYWRqXzAsCj4gKwkJCQkgbG9vcF9maWx0ZXItPnJlZl9kZWx0YXNb MF0pOwo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfcmVmX2Fkal8xLAo+ICsJ CQkJIGxvb3BfZmlsdGVyLT5yZWZfZGVsdGFzWzFdKTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZw dSwgJmF2MV9maWx0X3JlZl9hZGpfMiwKPiArCQkJCSBsb29wX2ZpbHRlci0+cmVmX2RlbHRhc1sy XSk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZmlsdF9yZWZfYWRqXzMsCj4gKwkJ CQkgbG9vcF9maWx0ZXItPnJlZl9kZWx0YXNbM10pOwo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1 LCAmYXYxX2ZpbHRfcmVmX2Fkal80LAo+ICsJCQkJIGxvb3BfZmlsdGVyLT5yZWZfZGVsdGFzWzRd KTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9maWx0X3JlZl9hZGpfNSwKPiArCQkJ CSBsb29wX2ZpbHRlci0+cmVmX2RlbHRhc1s1XSk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUs ICZhdjFfZmlsdF9yZWZfYWRqXzYsCj4gKwkJCQkgbG9vcF9maWx0ZXItPnJlZl9kZWx0YXNbNl0p Owo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfcmVmX2Fkal83LAo+ICsJCQkJ IGxvb3BfZmlsdGVyLT5yZWZfZGVsdGFzWzddKTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwg JmF2MV9maWx0X21iX2Fkal8wLAo+ICsJCQkJIGxvb3BfZmlsdGVyLT5tb2RlX2RlbHRhc1swXSk7 Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZmlsdF9tYl9hZGpfMSwKPiArCQkJCSBs b29wX2ZpbHRlci0+bW9kZV9kZWx0YXNbMV0pOwo+ICsJfSBlbHNlIHsKPiArCQloYW50cm9fcmVn X3dyaXRlKHZwdSwgJmF2MV9maWx0X3JlZl9hZGpfMCwgMCk7Cj4gKwkJaGFudHJvX3JlZ193cml0 ZSh2cHUsICZhdjFfZmlsdF9yZWZfYWRqXzEsIDApOwo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1 LCAmYXYxX2ZpbHRfcmVmX2Fkal8yLCAwKTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2 MV9maWx0X3JlZl9hZGpfMywgMCk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZmls dF9yZWZfYWRqXzQsIDApOwo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfcmVm X2Fkal81LCAwKTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9maWx0X3JlZl9hZGpf NiwgMCk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZmlsdF9yZWZfYWRqXzcsIDAp Owo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbWJfYWRqXzAsIDApOwo+ICsJ CWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbWJfYWRqXzEsIDApOwo+ICsJfQo+ICsK PiArCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgQVYxX0RCX0RBVEFfQ09MLCBhdjFfZGVjLT5kYl9k YXRhX2NvbC5kbWEpOwo+ICsJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBBVjFfREJfQ1RSTF9DT0ws IGF2MV9kZWMtPmRiX2N0cmxfY29sLmRtYSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHJvY2tj aGlwX3ZwdTk4MV9hdjFfZGVjX3VwZGF0ZV9wcm9iKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4g K3sKPiArCXN0cnVjdCBoYW50cm9fYXYxX2RlY19od19jdHggKmF2MV9kZWMgPSAmY3R4LT5hdjFf ZGVjOwo+ICsJc3RydWN0IGhhbnRyb19hdjFfZGVjX2N0cmxzICpjdHJscyA9ICZhdjFfZGVjLT5j dHJsczsKPiArCWNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfYXYxX2ZyYW1lICpmcmFtZSA9IGN0cmxz LT5mcmFtZTsKPiArCWJvb2wgZnJhbWVfaXNfaW50cmEgPSBJU19JTlRSQShmcmFtZS0+ZnJhbWVf dHlwZSk7Cj4gKwlzdHJ1Y3QgYXYxY2RmcyAqb3V0X2NkZnMgPSAoc3RydWN0IGF2MWNkZnMgKilh djFfZGVjLT5wcm9iX3RibF9vdXQuY3B1Owo+ICsJaW50IGk7Cj4gKwo+ICsJaWYgKGZyYW1lLT5m bGFncyAmIFY0TDJfQVYxX0ZSQU1FX0ZMQUdfRElTQUJMRV9GUkFNRV9FTkRfVVBEQVRFX0NERikK PiArCQlyZXR1cm47Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IE5VTV9SRUZfRlJBTUVTOyBpKysp IHsKPiArCQlpZiAoZnJhbWUtPnJlZnJlc2hfZnJhbWVfZmxhZ3MgJiAoMSA8PCBpKSkgewo+ICsJ CQlzdHJ1Y3QgbXZjZGZzIHN0b3JlZF9tdl9jZGY7Cj4gKwo+ICsJCQlyb2NrY2hpcF9hdjFfZ2V0 X2NkZnMoY3R4LCBpKTsKPiArCQkJc3RvcmVkX212X2NkZiA9IGF2MV9kZWMtPmNkZnMtPm12X2Nk ZjsKPiArCQkJKmF2MV9kZWMtPmNkZnMgPSAqb3V0X2NkZnM7Cj4gKwkJCWlmIChmcmFtZV9pc19p bnRyYSkgewo+ICsJCQkJYXYxX2RlYy0+Y2Rmcy0+bXZfY2RmID0gc3RvcmVkX212X2NkZjsKPiAr CQkJCSphdjFfZGVjLT5jZGZzX25kdmMgPSBvdXRfY2Rmcy0+bXZfY2RmOwo+ICsJCQl9Cj4gKwkJ CXJvY2tjaGlwX2F2MV9zdG9yZV9jZGZzKGN0eCwKPiArCQkJCQkJZnJhbWUtPnJlZnJlc2hfZnJh bWVfZmxhZ3MpOwo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwl9Cj4gK30KPiArCj4gK3ZvaWQgcm9j a2NoaXBfdnB1OTgxX2F2MV9kZWNfZG9uZShzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+ICt7Cj4g Kwlyb2NrY2hpcF92cHU5ODFfYXYxX2RlY191cGRhdGVfcHJvYihjdHgpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCByb2NrY2hpcF92cHU5ODFfYXYxX2RlY19zZXRfcHJvYihzdHJ1Y3QgaGFudHJv X2N0eCAqY3R4KQo+ICt7Cj4gKwlzdHJ1Y3QgaGFudHJvX2F2MV9kZWNfaHdfY3R4ICphdjFfZGVj ID0gJmN0eC0+YXYxX2RlYzsKPiArCXN0cnVjdCBoYW50cm9fYXYxX2RlY19jdHJscyAqY3RybHMg PSAmYXYxX2RlYy0+Y3RybHM7Cj4gKwljb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2F2MV9mcmFtZSAq ZnJhbWUgPSBjdHJscy0+ZnJhbWU7Cj4gKwljb25zdCBzdHJ1Y3QgdjRsMl9hdjFfcXVhbnRpemF0 aW9uICpxdWFudGl6YXRpb24gPSAmZnJhbWUtPnF1YW50aXphdGlvbjsKPiArCXN0cnVjdCBoYW50 cm9fZGV2ICp2cHUgPSBjdHgtPmRldjsKPiArCWJvb2wgZXJyb3JfcmVzaWxpZW50X21vZGUgPQo+ ICsJICAgICEhKGZyYW1lLT5mbGFncyAmIFY0TDJfQVYxX0ZSQU1FX0ZMQUdfRVJST1JfUkVTSUxJ RU5UX01PREUpOwo+ICsJYm9vbCBmcmFtZV9pc19pbnRyYSA9IElTX0lOVFJBKGZyYW1lLT5mcmFt ZV90eXBlKTsKPiArCj4gKwlpZiAoZXJyb3JfcmVzaWxpZW50X21vZGUgfHwgZnJhbWVfaXNfaW50 cmEgfHwKPiArCSAgICBmcmFtZS0+cHJpbWFyeV9yZWZfZnJhbWUgPT0gQVYxX1BSSU1BUllfUkVG X05PTkUpIHsKPiArCQlhdjFfZGVjLT5jZGZzID0gJmF2MV9kZWMtPmRlZmF1bHRfY2RmczsKPiAr CQlhdjFfZGVjLT5jZGZzX25kdmMgPSAmYXYxX2RlYy0+ZGVmYXVsdF9jZGZzX25kdmM7Cj4gKwkJ cm9ja2NoaXBfYXYxX2RlZmF1bHRfY29lZmZfcHJvYnMocXVhbnRpemF0aW9uLT5iYXNlX3FfaWR4 LAo+ICsJCQkJCQkgYXYxX2RlYy0+Y2Rmcyk7Cj4gKwl9IGVsc2Ugewo+ICsJCXJvY2tjaGlwX2F2 MV9nZXRfY2RmcyhjdHgsIGZyYW1lLT5yZWZfZnJhbWVfaWR4W2ZyYW1lLT5wcmltYXJ5X3JlZl9m cmFtZV0pOwo+ICsJfQo+ICsJcm9ja2NoaXBfYXYxX3N0b3JlX2NkZnMoY3R4LCBmcmFtZS0+cmVm cmVzaF9mcmFtZV9mbGFncyk7Cj4gKwo+ICsJbWVtY3B5KGF2MV9kZWMtPnByb2JfdGJsLmNwdSwg YXYxX2RlYy0+Y2Rmcywgc2l6ZW9mKHN0cnVjdCBhdjFjZGZzKSk7Cj4gKwo+ICsJaWYgKGZyYW1l X2lzX2ludHJhKSB7Cj4gKwkJaW50IG12X29mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBhdjFjZGZz LCBtdl9jZGYpOwo+ICsJCS8qIE92ZXJ3cml0ZSBNViBjb250ZXh0IGFyZWEgd2l0aCBpbnRyYWJj IE1WIGNvbnRleHQgKi8KPiArCQltZW1jcHkoYXYxX2RlYy0+cHJvYl90YmwuY3B1ICsgbXZfb2Zm c2V0LCBhdjFfZGVjLT5jZGZzX25kdmMsCj4gKwkJICAgICAgIHNpemVvZihzdHJ1Y3QgbXZjZGZz KSk7Cj4gKwl9Cj4gKwo+ICsJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBBVjFfUFJPUF9UQUJMRV9P VVQsIGF2MV9kZWMtPnByb2JfdGJsX291dC5kbWEpOwo+ICsJaGFudHJvX3dyaXRlX2FkZHIodnB1 LCBBVjFfUFJPUF9UQUJMRSwgYXYxX2RlYy0+cHJvYl90YmwuZG1hKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfc2V0X2NkZWYoc3RydWN0IGhhbnRyb19j dHggKmN0eCkKPiArewo+ICsJc3RydWN0IGhhbnRyb19hdjFfZGVjX2h3X2N0eCAqYXYxX2RlYyA9 ICZjdHgtPmF2MV9kZWM7Cj4gKwlzdHJ1Y3QgaGFudHJvX2F2MV9kZWNfY3RybHMgKmN0cmxzID0g JmF2MV9kZWMtPmN0cmxzOwo+ICsJY29uc3Qgc3RydWN0IHY0bDJfY3RybF9hdjFfZnJhbWUgKmZy YW1lID0gY3RybHMtPmZyYW1lOwo+ICsJY29uc3Qgc3RydWN0IHY0bDJfYXYxX2NkZWYgKmNkZWYg PSAmZnJhbWUtPmNkZWY7Cj4gKwlzdHJ1Y3QgaGFudHJvX2RldiAqdnB1ID0gY3R4LT5kZXY7Cj4g Kwl1MzIgbHVtYV9wcmlfc3RyZW5ndGggPSAwOwo+ICsJdTE2IGx1bWFfc2VjX3N0cmVuZ3RoID0g MDsKPiArCXUzMiBjaHJvbWFfcHJpX3N0cmVuZ3RoID0gMDsKPiArCXUxNiBjaHJvbWFfc2VjX3N0 cmVuZ3RoID0gMDsKPiArCWludCBpOwo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYx X2NkZWZfYml0cywgY2RlZi0+Yml0cyk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9j ZGVmX2RhbXBpbmcsIGNkZWYtPmRhbXBpbmdfbWludXNfMyk7Cj4gKwo+ICsJZm9yIChpID0gMDsg aSA8ICgxIDw8IGNkZWYtPmJpdHMpOyBpKyspIHsKPiArCQlsdW1hX3ByaV9zdHJlbmd0aCB8PSBj ZGVmLT55X3ByaV9zdHJlbmd0aFtpXSA8PCAoaSAqIDQpOwo+ICsJCWlmIChjZGVmLT55X3NlY19z dHJlbmd0aFtpXSA9PSA0KQo+ICsJCQlsdW1hX3NlY19zdHJlbmd0aCB8PSAzIDw8IChpICogMik7 Cj4gKwkJZWxzZQo+ICsJCQlsdW1hX3NlY19zdHJlbmd0aCB8PSBjZGVmLT55X3NlY19zdHJlbmd0 aFtpXSA8PCAoaSAqIDIpOwo+ICsKPiArCQljaHJvbWFfcHJpX3N0cmVuZ3RoIHw9IGNkZWYtPnV2 X3ByaV9zdHJlbmd0aFtpXSA8PCAoaSAqIDQpOwo+ICsJCWlmIChjZGVmLT51dl9zZWNfc3RyZW5n dGhbaV0gPT0gNCkKPiArCQkJY2hyb21hX3NlY19zdHJlbmd0aCB8PSAzIDw8IChpICogMik7Cj4g KwkJZWxzZQo+ICsJCQljaHJvbWFfc2VjX3N0cmVuZ3RoIHw9IGNkZWYtPnV2X3NlY19zdHJlbmd0 aFtpXSA8PCAoaSAqIDIpOwo+ICsJfQo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYx X2NkZWZfbHVtYV9wcmltYXJ5X3N0cmVuZ3RoLAo+ICsJCQkgbHVtYV9wcmlfc3RyZW5ndGgpOwo+ ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfY2RlZl9sdW1hX3NlY29uZGFyeV9zdHJlbmd0 aCwKPiArCQkJIGx1bWFfc2VjX3N0cmVuZ3RoKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAm YXYxX2NkZWZfY2hyb21hX3ByaW1hcnlfc3RyZW5ndGgsCj4gKwkJCSBjaHJvbWFfcHJpX3N0cmVu Z3RoKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2NkZWZfY2hyb21hX3NlY29uZGFy eV9zdHJlbmd0aCwKPiArCQkJIGNocm9tYV9zZWNfc3RyZW5ndGgpOwo+ICsKPiArCWhhbnRyb193 cml0ZV9hZGRyKHZwdSwgQVYxX0NERUZfQ09MLCBhdjFfZGVjLT5jZGVmX2NvbC5kbWEpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCByb2NrY2hpcF92cHU5ODFfYXYxX2RlY19zZXRfbHIoc3RydWN0 IGhhbnRyb19jdHggKmN0eCkKPiArewo+ICsJc3RydWN0IGhhbnRyb19hdjFfZGVjX2h3X2N0eCAq YXYxX2RlYyA9ICZjdHgtPmF2MV9kZWM7Cj4gKwlzdHJ1Y3QgaGFudHJvX2F2MV9kZWNfY3RybHMg KmN0cmxzID0gJmF2MV9kZWMtPmN0cmxzOwo+ICsJY29uc3Qgc3RydWN0IHY0bDJfY3RybF9hdjFf ZnJhbWUgKmZyYW1lID0gY3RybHMtPmZyYW1lOwo+ICsJY29uc3Qgc3RydWN0IHY0bDJfYXYxX2xv b3BfcmVzdG9yYXRpb24gKmxvb3BfcmVzdG9yYXRpb24gPQo+ICsJICAgICZmcmFtZS0+bG9vcF9y ZXN0b3JhdGlvbjsKPiArCXN0cnVjdCBoYW50cm9fZGV2ICp2cHUgPSBjdHgtPmRldjsKPiArCXUx NiBscl90eXBlID0gMCwgbHJfdW5pdF9zaXplID0gMDsKPiArCXU4IHJlc3RvcmF0aW9uX3VuaXRf c2l6ZVtWNEwyX0FWMV9OVU1fUExBTkVTX01BWF0gPSB7IDMsIDMsIDMgfTsKPiArCWludCBpOwo+ ICsKPiArCWlmIChsb29wX3Jlc3RvcmF0aW9uLT5mbGFncyAmIFY0TDJfQVYxX0xPT1BfUkVTVE9S QVRJT05fRkxBR19VU0VTX0xSKSB7Cj4gKwkJcmVzdG9yYXRpb25fdW5pdF9zaXplWzBdID0gMSAr IGxvb3BfcmVzdG9yYXRpb24tPmxyX3VuaXRfc2hpZnQ7Cj4gKwkJcmVzdG9yYXRpb25fdW5pdF9z aXplWzFdID0KPiArCQkgICAgMSArIGxvb3BfcmVzdG9yYXRpb24tPmxyX3VuaXRfc2hpZnQgLSBs b29wX3Jlc3RvcmF0aW9uLT5scl91dl9zaGlmdDsKPiArCQlyZXN0b3JhdGlvbl91bml0X3NpemVb Ml0gPQo+ICsJCSAgICAxICsgbG9vcF9yZXN0b3JhdGlvbi0+bHJfdW5pdF9zaGlmdCAtIGxvb3Bf cmVzdG9yYXRpb24tPmxyX3V2X3NoaWZ0Owo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBW NEwyX0FWMV9OVU1fUExBTkVTX01BWDsgaSsrKSB7Cj4gKwkJbHJfdHlwZSB8PQo+ICsJCSAgICBs b29wX3Jlc3RvcmF0aW9uLT5mcmFtZV9yZXN0b3JhdGlvbl90eXBlW2ldIDw8IChpICogMik7Cj4g KwkJbHJfdW5pdF9zaXplIHw9IHJlc3RvcmF0aW9uX3VuaXRfc2l6ZVtpXSA8PCAoaSAqIDIpOwo+ ICsJfQo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2xyX3R5cGUsIGxyX3R5cGUp Owo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfbHJfdW5pdF9zaXplLCBscl91bml0X3Np emUpOwo+ICsJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBBVjFfTFJfQ09MLCBhdjFfZGVjLT5scl9j b2wuZG1hKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNf c2V0X3N1cGVycmVzX3BhcmFtcyhzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+ICt7Cj4gKwlzdHJ1 Y3QgaGFudHJvX2F2MV9kZWNfaHdfY3R4ICphdjFfZGVjID0gJmN0eC0+YXYxX2RlYzsKPiArCXN0 cnVjdCBoYW50cm9fYXYxX2RlY19jdHJscyAqY3RybHMgPSAmYXYxX2RlYy0+Y3RybHM7Cj4gKwlj b25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2F2MV9mcmFtZSAqZnJhbWUgPSBjdHJscy0+ZnJhbWU7Cj4g KwlzdHJ1Y3QgaGFudHJvX2RldiAqdnB1ID0gY3R4LT5kZXY7Cj4gKwl1OCBzdXBlcnJlc19zY2Fs ZV9kZW5vbWluYXRvciA9IFNDQUxFX05VTUVSQVRPUjsKPiArCWludCBzdXBlcnJlc19sdW1hX3N0 ZXAgPSBSU19TQ0FMRV9TVUJQRUxfQklUUzsKPiArCWludCBzdXBlcnJlc19jaHJvbWFfc3RlcCA9 IFJTX1NDQUxFX1NVQlBFTF9CSVRTOwo+ICsJaW50IHN1cGVycmVzX2x1bWFfc3RlcF9pbnZyYSA9 IFJTX1NDQUxFX1NVQlBFTF9CSVRTOwo+ICsJaW50IHN1cGVycmVzX2Nocm9tYV9zdGVwX2ludnJh ID0gUlNfU0NBTEVfU1VCUEVMX0JJVFM7Cj4gKwlpbnQgc3VwZXJyZXNfaW5pdF9sdW1hX3N1YnBl bF94ID0gMDsKPiArCWludCBzdXBlcnJlc19pbml0X2Nocm9tYV9zdWJwZWxfeCA9IDA7Cj4gKwlp bnQgc3VwZXJyZXNfaXNfc2NhbGVkID0gMDsKPiArCWludCBtaW5fdyA9IG1pbl90KHVpbnQzMl90 LCAxNiwgZnJhbWUtPnVwc2NhbGVkX3dpZHRoKTsKPiArCWludCB1cHNjYWxlZF9sdW1hLCBkb3du c2NhbGVkX2x1bWE7Cj4gKwlpbnQgZG93bnNjYWxlZF9jaHJvbWEsIHVwc2NhbGVkX2Nocm9tYTsK PiArCWludCBzdGVwX2x1bWEsIHN0ZXBfY2hyb21hOwo+ICsJaW50IGVycl9sdW1hLCBlcnJfY2hy b21hOwo+ICsJaW50IGluaXRpYWxfbHVtYSwgaW5pdGlhbF9jaHJvbWE7Cj4gKwlpbnQgd2lkdGgg PSAwOwo+ICsKPiArCWlmIChmcmFtZS0+ZmxhZ3MgJiBWNEwyX0FWMV9GUkFNRV9GTEFHX1VTRV9T VVBFUlJFUykKPiArCQlzdXBlcnJlc19zY2FsZV9kZW5vbWluYXRvciA9IGZyYW1lLT5zdXBlcnJl c19kZW5vbTsKPiArCj4gKwlpZiAoc3VwZXJyZXNfc2NhbGVfZGVub21pbmF0b3IgPD0gU0NBTEVf TlVNRVJBVE9SKQo+ICsJCWdvdG8gc2V0X3JlZ3M7Cj4gKwo+ICsJd2lkdGggPSAoZnJhbWUtPnVw c2NhbGVkX3dpZHRoICogU0NBTEVfTlVNRVJBVE9SICsKPiArCQkoc3VwZXJyZXNfc2NhbGVfZGVu b21pbmF0b3IgLyAyKSkgLyBzdXBlcnJlc19zY2FsZV9kZW5vbWluYXRvcjsKPiArCj4gKwlpZiAo d2lkdGggPCBtaW5fdykKPiArCQl3aWR0aCA9IG1pbl93Owo+ICsKPiArCWlmICh3aWR0aCA9PSBm cmFtZS0+dXBzY2FsZWRfd2lkdGgpCj4gKwkJZ290byBzZXRfcmVnczsKPiArCj4gKwlzdXBlcnJl c19pc19zY2FsZWQgPSAxOwo+ICsJdXBzY2FsZWRfbHVtYSA9IGZyYW1lLT51cHNjYWxlZF93aWR0 aDsKPiArCWRvd25zY2FsZWRfbHVtYSA9IHdpZHRoOwo+ICsJZG93bnNjYWxlZF9jaHJvbWEgPSAo ZG93bnNjYWxlZF9sdW1hICsgMSkgPj4gMTsKPiArCXVwc2NhbGVkX2Nocm9tYSA9ICh1cHNjYWxl ZF9sdW1hICsgMSkgPj4gMTsKPiArCXN0ZXBfbHVtYSA9Cj4gKwkJKChkb3duc2NhbGVkX2x1bWEg PDwgUlNfU0NBTEVfU1VCUEVMX0JJVFMpICsKPiArCQkgKHVwc2NhbGVkX2x1bWEgLyAyKSkgLyB1 cHNjYWxlZF9sdW1hOwo+ICsJc3RlcF9jaHJvbWEgPQo+ICsJCSgoZG93bnNjYWxlZF9jaHJvbWEg PDwgUlNfU0NBTEVfU1VCUEVMX0JJVFMpICsKPiArCQkgKHVwc2NhbGVkX2Nocm9tYSAvIDIpKSAv IHVwc2NhbGVkX2Nocm9tYTsKPiArCWVycl9sdW1hID0KPiArCQkodXBzY2FsZWRfbHVtYSAqIHN0 ZXBfbHVtYSkKPiArCQktIChkb3duc2NhbGVkX2x1bWEgPDwgUlNfU0NBTEVfU1VCUEVMX0JJVFMp Owo+ICsJZXJyX2Nocm9tYSA9Cj4gKwkJKHVwc2NhbGVkX2Nocm9tYSAqIHN0ZXBfY2hyb21hKQo+ ICsJCS0gKGRvd25zY2FsZWRfY2hyb21hIDw8IFJTX1NDQUxFX1NVQlBFTF9CSVRTKTsKPiArCWlu aXRpYWxfbHVtYSA9Cj4gKwkJKCgtKCh1cHNjYWxlZF9sdW1hIC0gZG93bnNjYWxlZF9sdW1hKSA8 PCAoUlNfU0NBTEVfU1VCUEVMX0JJVFMgLSAxKSkKPiArCQkgICsgdXBzY2FsZWRfbHVtYSAvIDIp Cj4gKwkJIC8gdXBzY2FsZWRfbHVtYSArICgxIDw8IChSU19TQ0FMRV9FWFRSQV9CSVRTIC0gMSkp IC0gZXJyX2x1bWEgLyAyKQo+ICsJCSYgUlNfU0NBTEVfU1VCUEVMX01BU0s7Cj4gKwlpbml0aWFs X2Nocm9tYSA9Cj4gKwkJKCgtKCh1cHNjYWxlZF9jaHJvbWEgLSBkb3duc2NhbGVkX2Nocm9tYSkg PDwgKFJTX1NDQUxFX1NVQlBFTF9CSVRTIC0gMSkpCj4gKwkJICArIHVwc2NhbGVkX2Nocm9tYSAv IDIpCj4gKwkJIC8gdXBzY2FsZWRfY2hyb21hICsgKDEgPDwgKFJTX1NDQUxFX0VYVFJBX0JJVFMg LSAxKSkgLSBlcnJfY2hyb21hIC8gMikKPiArCQkmIFJTX1NDQUxFX1NVQlBFTF9NQVNLOwo+ICsJ c3VwZXJyZXNfbHVtYV9zdGVwID0gc3RlcF9sdW1hOwo+ICsJc3VwZXJyZXNfY2hyb21hX3N0ZXAg PSBzdGVwX2Nocm9tYTsKPiArCXN1cGVycmVzX2x1bWFfc3RlcF9pbnZyYSA9Cj4gKwkJKCh1cHNj YWxlZF9sdW1hIDw8IFJTX1NDQUxFX1NVQlBFTF9CSVRTKSArIChkb3duc2NhbGVkX2x1bWEgLyAy KSkKPiArCQkvIGRvd25zY2FsZWRfbHVtYTsKPiArCXN1cGVycmVzX2Nocm9tYV9zdGVwX2ludnJh ID0KPiArCQkoKHVwc2NhbGVkX2Nocm9tYSA8PCBSU19TQ0FMRV9TVUJQRUxfQklUUykgKyAoZG93 bnNjYWxlZF9jaHJvbWEgLyAyKSkKPiArCQkvIGRvd25zY2FsZWRfY2hyb21hOwo+ICsJc3VwZXJy ZXNfaW5pdF9sdW1hX3N1YnBlbF94ID0gaW5pdGlhbF9sdW1hOwo+ICsJc3VwZXJyZXNfaW5pdF9j aHJvbWFfc3VicGVsX3ggPSBpbml0aWFsX2Nocm9tYTsKPiArCj4gK3NldF9yZWdzOgo+ICsJaGFu dHJvX3JlZ193cml0ZSh2cHUsICZhdjFfc3VwZXJyZXNfcGljX3dpZHRoLCBmcmFtZS0+dXBzY2Fs ZWRfd2lkdGgpOwo+ICsKPiArCWlmIChmcmFtZS0+ZmxhZ3MgJiBWNEwyX0FWMV9GUkFNRV9GTEFH X1VTRV9TVVBFUlJFUykKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9zY2FsZV9kZW5v bV9taW51czksCj4gKwkJCQkgZnJhbWUtPnN1cGVycmVzX2Rlbm9tIC0gU1VQRVJSRVNfU0NBTEVf REVOT01JTkFUT1JfTUlOKTsKPiArCWVsc2UKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2 MV9zY2FsZV9kZW5vbV9taW51czksIGZyYW1lLT5zdXBlcnJlc19kZW5vbSk7Cj4gKwo+ICsJaGFu dHJvX3JlZ193cml0ZSh2cHUsICZhdjFfc3VwZXJyZXNfbHVtYV9zdGVwLCBzdXBlcnJlc19sdW1h X3N0ZXApOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfc3VwZXJyZXNfY2hyb21hX3N0 ZXAsIHN1cGVycmVzX2Nocm9tYV9zdGVwKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYx X3N1cGVycmVzX2x1bWFfc3RlcF9pbnZyYSwKPiArCQkJIHN1cGVycmVzX2x1bWFfc3RlcF9pbnZy YSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9zdXBlcnJlc19jaHJvbWFfc3RlcF9p bnZyYSwKPiArCQkJIHN1cGVycmVzX2Nocm9tYV9zdGVwX2ludnJhKTsKPiArCWhhbnRyb19yZWdf d3JpdGUodnB1LCAmYXYxX3N1cGVycmVzX2luaXRfbHVtYV9zdWJwZWxfeCwKPiArCQkJIHN1cGVy cmVzX2luaXRfbHVtYV9zdWJwZWxfeCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9z dXBlcnJlc19pbml0X2Nocm9tYV9zdWJwZWxfeCwKPiArCQkJIHN1cGVycmVzX2luaXRfY2hyb21h X3N1YnBlbF94KTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3N1cGVycmVzX2lzX3Nj YWxlZCwgc3VwZXJyZXNfaXNfc2NhbGVkKTsKPiArCj4gKwloYW50cm9fd3JpdGVfYWRkcih2cHUs IEFWMV9TUl9DT0wsIGF2MV9kZWMtPnNyX2NvbC5kbWEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCByb2NrY2hpcF92cHU5ODFfYXYxX2RlY19zZXRfcGljdHVyZV9kaW1lbnNpb25zKHN0cnVjdCBo YW50cm9fY3R4ICpjdHgpCj4gK3sKPiArCXN0cnVjdCBoYW50cm9fYXYxX2RlY19od19jdHggKmF2 MV9kZWMgPSAmY3R4LT5hdjFfZGVjOwo+ICsJc3RydWN0IGhhbnRyb19hdjFfZGVjX2N0cmxzICpj dHJscyA9ICZhdjFfZGVjLT5jdHJsczsKPiArCWNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfYXYxX2Zy YW1lICpmcmFtZSA9IGN0cmxzLT5mcmFtZTsKPiArCXN0cnVjdCBoYW50cm9fZGV2ICp2cHUgPSBj dHgtPmRldjsKPiArCWludCBwaWNfd2lkdGhfaW5fY2JzID0gRElWX1JPVU5EX1VQKGZyYW1lLT5m cmFtZV93aWR0aF9taW51c18xICsgMSwgOCk7Cj4gKwlpbnQgcGljX2hlaWdodF9pbl9jYnMgPSBE SVZfUk9VTkRfVVAoZnJhbWUtPmZyYW1lX2hlaWdodF9taW51c18xICsgMSwgOCk7Cj4gKwlpbnQg cGljX3dpZHRoX3BhZCA9IEFMSUdOKGZyYW1lLT5mcmFtZV93aWR0aF9taW51c18xICsgMSwgOCkK PiArCQkJICAgIC0gKGZyYW1lLT5mcmFtZV93aWR0aF9taW51c18xICsgMSk7Cj4gKwlpbnQgcGlj X2hlaWdodF9wYWQgPSBBTElHTihmcmFtZS0+ZnJhbWVfaGVpZ2h0X21pbnVzXzEgKyAxLCA4KQo+ ICsJCQkgICAgIC0gKGZyYW1lLT5mcmFtZV9oZWlnaHRfbWludXNfMSArIDEpOwo+ICsKPiArCWhh bnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3BpY193aWR0aF9pbl9jYnMsIHBpY193aWR0aF9pbl9j YnMpOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcGljX2hlaWdodF9pbl9jYnMsIHBp Y19oZWlnaHRfaW5fY2JzKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3BpY193aWR0 aF9wYWQsIHBpY193aWR0aF9wYWQpOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcGlj X2hlaWdodF9wYWQsIHBpY19oZWlnaHRfcGFkKTsKPiArCj4gKwlyb2NrY2hpcF92cHU5ODFfYXYx X2RlY19zZXRfc3VwZXJyZXNfcGFyYW1zKGN0eCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHJv Y2tjaGlwX3ZwdTk4MV9hdjFfZGVjX3NldF9vdGhlcl9mcmFtZXMoc3RydWN0IGhhbnRyb19jdHgg KmN0eCkKPiArewo+ICsJc3RydWN0IGhhbnRyb19hdjFfZGVjX2h3X2N0eCAqYXYxX2RlYyA9ICZj dHgtPmF2MV9kZWM7Cj4gKwlzdHJ1Y3QgaGFudHJvX2F2MV9kZWNfY3RybHMgKmN0cmxzID0gJmF2 MV9kZWMtPmN0cmxzOwo+ICsJY29uc3Qgc3RydWN0IHY0bDJfY3RybF9hdjFfZnJhbWUgKmZyYW1l ID0gY3RybHMtPmZyYW1lOwo+ICsJc3RydWN0IGhhbnRyb19kZXYgKnZwdSA9IGN0eC0+ZGV2Owo+ ICsJYm9vbCB1c2VfcmVmX2ZyYW1lX212cyA9Cj4gKwkgICAgISEoY3RybHMtPmZyYW1lLT5mbGFn cyAmIFY0TDJfQVYxX0ZSQU1FX0ZMQUdfVVNFX1JFRl9GUkFNRV9NVlMpOwo+ICsJaW50IGN1cl9m cmFtZV9vZmZzZXQgPSBmcmFtZS0+b3JkZXJfaGludDsKPiArCWludCBhbHRfZnJhbWVfb2Zmc2V0 ID0gMDsKPiArCWludCBnbGRfZnJhbWVfb2Zmc2V0ID0gMDsKPiArCWludCBid2RfZnJhbWVfb2Zm c2V0ID0gMDsKPiArCWludCBhbHQyX2ZyYW1lX29mZnNldCA9IDA7Cj4gKwlpbnQgcmVmc19zZWxl Y3RlZFszXSA9IHsgMCwgMCwgMCB9Owo+ICsJaW50IGN1cl9taV9jb2xzID0gRElWX1JPVU5EX1VQ KGZyYW1lLT5mcmFtZV93aWR0aF9taW51c18xICsgMSwgOCk7Cj4gKwlpbnQgY3VyX21pX3Jvd3Mg PSBESVZfUk9VTkRfVVAoZnJhbWUtPmZyYW1lX2hlaWdodF9taW51c18xICsgMSwgOCk7Cj4gKwlp bnQgY3VyX29mZnNldFtWNEwyX0FWMV9UT1RBTF9SRUZTX1BFUl9GUkFNRSAtIDFdOwo+ICsJaW50 IGN1cl9yb2Zmc2V0W1Y0TDJfQVYxX1RPVEFMX1JFRlNfUEVSX0ZSQU1FIC0gMV07Cj4gKwlpbnQg bWZfdHlwZXNbM10gPSB7IDAsIDAsIDAgfTsKPiArCWludCByZWZfc3RhbXAgPSAyOwo+ICsJaW50 IHJlZl9pbmQgPSAwOwo+ICsJaW50IHJmLCBpZHg7Cj4gKwo+ICsJYWx0X2ZyYW1lX29mZnNldCA9 IHJvY2tjaGlwX3ZwdTk4MV9nZXRfb3JkZXJfaGludChjdHgsIEFMVF9CVUZfSURYKTsKPiArCWds ZF9mcmFtZV9vZmZzZXQgPSByb2NrY2hpcF92cHU5ODFfZ2V0X29yZGVyX2hpbnQoY3R4LCBHTERf QlVGX0lEWCk7Cj4gKwlid2RfZnJhbWVfb2Zmc2V0ID0gcm9ja2NoaXBfdnB1OTgxX2dldF9vcmRl cl9oaW50KGN0eCwgQldEX0JVRl9JRFgpOwo+ICsJYWx0Ml9mcmFtZV9vZmZzZXQgPSByb2NrY2hp cF92cHU5ODFfZ2V0X29yZGVyX2hpbnQoY3R4LCBBTFQyX0JVRl9JRFgpOwo+ICsKPiArCWlkeCA9 IHJvY2tjaGlwX3ZwdTk4MV9nZXRfZnJhbWVfaW5kZXgoY3R4LCBMU1RfQlVGX0lEWCk7Cj4gKwlp ZiAoaWR4ID49IDApIHsKPiArCQlpbnQgYWx0X2ZyYW1lX29mZnNldF9pbl9sc3QgPQo+ICsJCQlh djFfZGVjLT5mcmFtZV9yZWZzW2lkeF0ub3JkZXJfaGludHNbVjRMMl9BVjFfUkVGX0FMVFJFRl9G UkFNRV07Cj4gKwkJYm9vbCBpc19sc3Rfb3ZlcmxheSA9Cj4gKwkJICAgIChhbHRfZnJhbWVfb2Zm c2V0X2luX2xzdCA9PSBnbGRfZnJhbWVfb2Zmc2V0KTsKPiArCj4gKwkJaWYgKCFpc19sc3Rfb3Zl cmxheSkgewo+ICsJCQlpbnQgbHN0X21pX2NvbHMgPSBhdjFfZGVjLT5mcmFtZV9yZWZzW2lkeF0u bWlfY29sczsKPiArCQkJaW50IGxzdF9taV9yb3dzID0gYXYxX2RlYy0+ZnJhbWVfcmVmc1tpZHhd Lm1pX3Jvd3M7Cj4gKwkJCWJvb2wgbHN0X2ludHJhX29ubHkgPQo+ICsJCQkgICAgSVNfSU5UUkEo YXYxX2RlYy0+ZnJhbWVfcmVmc1tpZHhdLmZyYW1lX3R5cGUpOwo+ICsKPiArCQkJaWYgKGxzdF9t aV9jb2xzID09IGN1cl9taV9jb2xzICYmCj4gKwkJCSAgICBsc3RfbWlfcm93cyA9PSBjdXJfbWlf cm93cyAmJiAhbHN0X2ludHJhX29ubHkpIHsKPiArCQkJCW1mX3R5cGVzW3JlZl9pbmRdID0gVjRM Ml9BVjFfUkVGX0xBU1RfRlJBTUU7Cj4gKwkJCQlyZWZzX3NlbGVjdGVkW3JlZl9pbmQrK10gPSBM U1RfQlVGX0lEWDsKPiArCQkJfQo+ICsJCX0KPiArCQlyZWZfc3RhbXAtLTsKPiArCX0KPiArCj4g KwlpZHggPSByb2NrY2hpcF92cHU5ODFfZ2V0X2ZyYW1lX2luZGV4KGN0eCwgQldEX0JVRl9JRFgp Owo+ICsJaWYgKHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX2dldF9kaXN0KGN0eCwgYndkX2ZyYW1l X29mZnNldCwgY3VyX2ZyYW1lX29mZnNldCkgPiAwKSB7Cj4gKwkJaW50IGJ3ZF9taV9jb2xzID0g YXYxX2RlYy0+ZnJhbWVfcmVmc1tpZHhdLm1pX2NvbHM7Cj4gKwkJaW50IGJ3ZF9taV9yb3dzID0g YXYxX2RlYy0+ZnJhbWVfcmVmc1tpZHhdLm1pX3Jvd3M7Cj4gKwkJYm9vbCBid2RfaW50cmFfb25s eSA9Cj4gKwkJICAgIElTX0lOVFJBKGF2MV9kZWMtPmZyYW1lX3JlZnNbaWR4XS5mcmFtZV90eXBl KTsKPiArCj4gKwkJaWYgKGJ3ZF9taV9jb2xzID09IGN1cl9taV9jb2xzICYmIGJ3ZF9taV9yb3dz ID09IGN1cl9taV9yb3dzICYmCj4gKwkJICAgICFid2RfaW50cmFfb25seSkgewo+ICsJCQltZl90 eXBlc1tyZWZfaW5kXSA9IFY0TDJfQVYxX1JFRl9CV0RSRUZfRlJBTUU7Cj4gKwkJCXJlZnNfc2Vs ZWN0ZWRbcmVmX2luZCsrXSA9IEJXRF9CVUZfSURYOwo+ICsJCQlyZWZfc3RhbXAtLTsKPiArCQl9 Cj4gKwl9Cj4gKwo+ICsJaWR4ID0gcm9ja2NoaXBfdnB1OTgxX2dldF9mcmFtZV9pbmRleChjdHgs IEFMVDJfQlVGX0lEWCk7Cj4gKwlpZiAocm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfZ2V0X2Rpc3Qo Y3R4LCBhbHQyX2ZyYW1lX29mZnNldCwgY3VyX2ZyYW1lX29mZnNldCkgPiAwKSB7Cj4gKwkJaW50 IGFsdDJfbWlfY29scyA9IGF2MV9kZWMtPmZyYW1lX3JlZnNbaWR4XS5taV9jb2xzOwo+ICsJCWlu dCBhbHQyX21pX3Jvd3MgPSBhdjFfZGVjLT5mcmFtZV9yZWZzW2lkeF0ubWlfcm93czsKPiArCQli b29sIGFsdDJfaW50cmFfb25seSA9Cj4gKwkJICAgIElTX0lOVFJBKGF2MV9kZWMtPmZyYW1lX3Jl ZnNbaWR4XS5mcmFtZV90eXBlKTsKPiArCj4gKwkJaWYgKGFsdDJfbWlfY29scyA9PSBjdXJfbWlf Y29scyAmJiBhbHQyX21pX3Jvd3MgPT0gY3VyX21pX3Jvd3MgJiYKPiArCQkgICAgIWFsdDJfaW50 cmFfb25seSkgewo+ICsJCQltZl90eXBlc1tyZWZfaW5kXSA9IFY0TDJfQVYxX1JFRl9BTFRSRUYy X0ZSQU1FOwo+ICsJCQlyZWZzX3NlbGVjdGVkW3JlZl9pbmQrK10gPSBBTFQyX0JVRl9JRFg7Cj4g KwkJCXJlZl9zdGFtcC0tOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZHggPSByb2NrY2hpcF92cHU5 ODFfZ2V0X2ZyYW1lX2luZGV4KGN0eCwgQUxUX0JVRl9JRFgpOwo+ICsJaWYgKHJvY2tjaGlwX3Zw dTk4MV9hdjFfZGVjX2dldF9kaXN0KGN0eCwgYWx0X2ZyYW1lX29mZnNldCwgY3VyX2ZyYW1lX29m ZnNldCkgPiAwICYmCj4gKwkgICAgcmVmX3N0YW1wID49IDApIHsKPiArCQlpbnQgYWx0X21pX2Nv bHMgPSBhdjFfZGVjLT5mcmFtZV9yZWZzW2lkeF0ubWlfY29sczsKPiArCQlpbnQgYWx0X21pX3Jv d3MgPSBhdjFfZGVjLT5mcmFtZV9yZWZzW2lkeF0ubWlfcm93czsKPiArCQlib29sIGFsdF9pbnRy YV9vbmx5ID0KPiArCQkgICAgSVNfSU5UUkEoYXYxX2RlYy0+ZnJhbWVfcmVmc1tpZHhdLmZyYW1l X3R5cGUpOwo+ICsKPiArCQlpZiAoYWx0X21pX2NvbHMgPT0gY3VyX21pX2NvbHMgJiYgYWx0X21p X3Jvd3MgPT0gY3VyX21pX3Jvd3MgJiYKPiArCQkgICAgIWFsdF9pbnRyYV9vbmx5KSB7Cj4gKwkJ CW1mX3R5cGVzW3JlZl9pbmRdID0gVjRMMl9BVjFfUkVGX0FMVFJFRl9GUkFNRTsKPiArCQkJcmVm c19zZWxlY3RlZFtyZWZfaW5kKytdID0gQUxUX0JVRl9JRFg7Cj4gKwkJCXJlZl9zdGFtcC0tOwo+ ICsJCX0KPiArCX0KPiArCj4gKwlpZHggPSByb2NrY2hpcF92cHU5ODFfZ2V0X2ZyYW1lX2luZGV4 KGN0eCwgTFNUMl9CVUZfSURYKTsKPiArCWlmIChpZHggPj0gMCAmJiByZWZfc3RhbXAgPj0gMCkg ewo+ICsJCWludCBsc3QyX21pX2NvbHMgPSBhdjFfZGVjLT5mcmFtZV9yZWZzW2lkeF0ubWlfY29s czsKPiArCQlpbnQgbHN0Ml9taV9yb3dzID0gYXYxX2RlYy0+ZnJhbWVfcmVmc1tpZHhdLm1pX3Jv d3M7Cj4gKwkJYm9vbCBsc3QyX2ludHJhX29ubHkgPQo+ICsJCSAgICBJU19JTlRSQShhdjFfZGVj LT5mcmFtZV9yZWZzW2lkeF0uZnJhbWVfdHlwZSk7Cj4gKwo+ICsJCWlmIChsc3QyX21pX2NvbHMg PT0gY3VyX21pX2NvbHMgJiYgbHN0Ml9taV9yb3dzID09IGN1cl9taV9yb3dzICYmCj4gKwkJICAg ICFsc3QyX2ludHJhX29ubHkpIHsKPiArCQkJbWZfdHlwZXNbcmVmX2luZF0gPSBWNEwyX0FWMV9S RUZfTEFTVDJfRlJBTUU7Cj4gKwkJCXJlZnNfc2VsZWN0ZWRbcmVmX2luZCsrXSA9IExTVDJfQlVG X0lEWDsKPiArCQkJcmVmX3N0YW1wLS07Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWZvciAocmYgPSAw OyByZiA8IFY0TDJfQVYxX1RPVEFMX1JFRlNfUEVSX0ZSQU1FIC0gMTsgKytyZikgewo+ICsJCWlk eCA9IHJvY2tjaGlwX3ZwdTk4MV9nZXRfZnJhbWVfaW5kZXgoY3R4LCByZik7Cj4gKwkJaWYgKGlk eCA+PSAwKSB7Cj4gKwkJCWludCByZl9vcmRlcl9oaW50ID0gcm9ja2NoaXBfdnB1OTgxX2dldF9v cmRlcl9oaW50KGN0eCwgcmYpOwo+ICsKPiArCQkJY3VyX29mZnNldFtyZl0gPQo+ICsJCQkgICAg cm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfZ2V0X2Rpc3QoY3R4LCBjdXJfZnJhbWVfb2Zmc2V0LCBy Zl9vcmRlcl9oaW50KTsKPiArCQkJY3VyX3JvZmZzZXRbcmZdID0KPiArCQkJICAgIHJvY2tjaGlw X3ZwdTk4MV9hdjFfZGVjX2dldF9kaXN0KGN0eCwgcmZfb3JkZXJfaGludCwgY3VyX2ZyYW1lX29m ZnNldCk7Cj4gKwkJfSBlbHNlIHsKPiArCQkJY3VyX29mZnNldFtyZl0gPSAwOwo+ICsJCQljdXJf cm9mZnNldFtyZl0gPSAwOwo+ICsJCX0KPiArCX0KPiArCj4gKwloYW50cm9fcmVnX3dyaXRlKHZw dSwgJmF2MV91c2VfdGVtcG9yYWwwX212cywgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwg JmF2MV91c2VfdGVtcG9yYWwxX212cywgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2 MV91c2VfdGVtcG9yYWwyX212cywgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV91 c2VfdGVtcG9yYWwzX212cywgMCk7Cj4gKwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFf bWYxX2xhc3Rfb2Zmc2V0LCAwKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX21mMV9s YXN0Ml9vZmZzZXQsIDApOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfbWYxX2xhc3Qz X29mZnNldCwgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9tZjFfZ29sZGVuX29m ZnNldCwgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9tZjFfYndkcmVmX29mZnNl dCwgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9tZjFfYWx0cmVmMl9vZmZzZXQs IDApOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfbWYxX2FsdHJlZl9vZmZzZXQsIDAp Owo+ICsKPiArCWlmICh1c2VfcmVmX2ZyYW1lX212cyAmJiByZWZfaW5kID4gMCAmJgo+ICsJICAg IGN1cl9vZmZzZXRbbWZfdHlwZXNbMF0gLSBWNEwyX0FWMV9SRUZfTEFTVF9GUkFNRV0gPD0gTUFY X0ZSQU1FX0RJU1RBTkNFICYmCj4gKwkgICAgY3VyX29mZnNldFttZl90eXBlc1swXSAtIFY0TDJf QVYxX1JFRl9MQVNUX0ZSQU1FXSA+PSAtTUFYX0ZSQU1FX0RJU1RBTkNFKSB7Cj4gKwkJaW50IHJm ID0gcm9ja2NoaXBfdnB1OTgxX2dldF9vcmRlcl9oaW50KGN0eCwgcmVmc19zZWxlY3RlZFswXSk7 Cj4gKwkJaW50IGlkeCA9IHJvY2tjaGlwX3ZwdTk4MV9nZXRfZnJhbWVfaW5kZXgoY3R4LCByZWZz X3NlbGVjdGVkWzBdKTsKPiArCQl1MzIgKm9oID0gYXYxX2RlYy0+ZnJhbWVfcmVmc1tpZHhdLm9y ZGVyX2hpbnRzOwo+ICsJCWludCB2YWw7Cj4gKwo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAm YXYxX3VzZV90ZW1wb3JhbDBfbXZzLCAxKTsKPiArCj4gKwkJdmFsID0gcm9ja2NoaXBfdnB1OTgx X2F2MV9kZWNfZ2V0X2Rpc3QoY3R4LCByZiwgb2hbVjRMMl9BVjFfUkVGX0xBU1RfRlJBTUVdKTsK PiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9tZjFfbGFzdF9vZmZzZXQsIHZhbCk7Cj4g Kwo+ICsJCXZhbCA9IHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX2dldF9kaXN0KGN0eCwgcmYsIG9o W1Y0TDJfQVYxX1JFRl9MQVNUMl9GUkFNRV0pOwo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAm YXYxX21mMV9sYXN0Ml9vZmZzZXQsIHZhbCk7Cj4gKwo+ICsJCXZhbCA9IHJvY2tjaGlwX3ZwdTk4 MV9hdjFfZGVjX2dldF9kaXN0KGN0eCwgcmYsIG9oW1Y0TDJfQVYxX1JFRl9MQVNUM19GUkFNRV0p Owo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX21mMV9sYXN0M19vZmZzZXQsIHZhbCk7 Cj4gKwo+ICsJCXZhbCA9IHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX2dldF9kaXN0KGN0eCwgcmYs IG9oW1Y0TDJfQVYxX1JFRl9HT0xERU5fRlJBTUVdKTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZw dSwgJmF2MV9tZjFfZ29sZGVuX29mZnNldCwgdmFsKTsKPiArCj4gKwkJdmFsID0gcm9ja2NoaXBf dnB1OTgxX2F2MV9kZWNfZ2V0X2Rpc3QoY3R4LCByZiwgb2hbVjRMMl9BVjFfUkVGX0JXRFJFRl9G UkFNRV0pOwo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX21mMV9id2RyZWZfb2Zmc2V0 LCB2YWwpOwo+ICsKPiArCQl2YWwgPSByb2NrY2hpcF92cHU5ODFfYXYxX2RlY19nZXRfZGlzdChj dHgsIHJmLCBvaFtWNEwyX0FWMV9SRUZfQUxUUkVGMl9GUkFNRV0pOwo+ICsJCWhhbnRyb19yZWdf d3JpdGUodnB1LCAmYXYxX21mMV9hbHRyZWYyX29mZnNldCwgdmFsKTsKPiArCj4gKwkJdmFsID0g cm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfZ2V0X2Rpc3QoY3R4LCByZiwgb2hbVjRMMl9BVjFfUkVG X0FMVFJFRl9GUkFNRV0pOwo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX21mMV9hbHRy ZWZfb2Zmc2V0LCB2YWwpOwo+ICsJfQo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYx X21mMl9sYXN0X29mZnNldCwgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9tZjJf bGFzdDJfb2Zmc2V0LCAwKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX21mMl9sYXN0 M19vZmZzZXQsIDApOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfbWYyX2dvbGRlbl9v ZmZzZXQsIDApOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfbWYyX2J3ZHJlZl9vZmZz ZXQsIDApOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfbWYyX2FsdHJlZjJfb2Zmc2V0 LCAwKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX21mMl9hbHRyZWZfb2Zmc2V0LCAw KTsKPiArCj4gKwlpZiAodXNlX3JlZl9mcmFtZV9tdnMgJiYgcmVmX2luZCA+IDEgJiYKPiArCSAg ICBjdXJfb2Zmc2V0W21mX3R5cGVzWzFdIC0gVjRMMl9BVjFfUkVGX0xBU1RfRlJBTUVdIDw9IE1B WF9GUkFNRV9ESVNUQU5DRSAmJgo+ICsJICAgIGN1cl9vZmZzZXRbbWZfdHlwZXNbMV0gLSBWNEwy X0FWMV9SRUZfTEFTVF9GUkFNRV0gPj0gLU1BWF9GUkFNRV9ESVNUQU5DRSkgewo+ICsJCWludCBy ZiA9IHJvY2tjaGlwX3ZwdTk4MV9nZXRfb3JkZXJfaGludChjdHgsIHJlZnNfc2VsZWN0ZWRbMV0p Owo+ICsJCWludCBpZHggPSByb2NrY2hpcF92cHU5ODFfZ2V0X2ZyYW1lX2luZGV4KGN0eCwgcmVm c19zZWxlY3RlZFsxXSk7Cj4gKwkJdTMyICpvaCA9IGF2MV9kZWMtPmZyYW1lX3JlZnNbaWR4XS5v cmRlcl9oaW50czsKPiArCQlpbnQgdmFsOwo+ICsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwg JmF2MV91c2VfdGVtcG9yYWwxX212cywgMSk7Cj4gKwo+ICsJCXZhbCA9IHJvY2tjaGlwX3ZwdTk4 MV9hdjFfZGVjX2dldF9kaXN0KGN0eCwgcmYsIG9oW1Y0TDJfQVYxX1JFRl9MQVNUX0ZSQU1FXSk7 Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfbWYyX2xhc3Rfb2Zmc2V0LCB2YWwpOwo+ ICsKPiArCQl2YWwgPSByb2NrY2hpcF92cHU5ODFfYXYxX2RlY19nZXRfZGlzdChjdHgsIHJmLCBv aFtWNEwyX0FWMV9SRUZfTEFTVDJfRlJBTUVdKTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwg JmF2MV9tZjJfbGFzdDJfb2Zmc2V0LCB2YWwpOwo+ICsKPiArCQl2YWwgPSByb2NrY2hpcF92cHU5 ODFfYXYxX2RlY19nZXRfZGlzdChjdHgsIHJmLCBvaFtWNEwyX0FWMV9SRUZfTEFTVDNfRlJBTUVd KTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9tZjJfbGFzdDNfb2Zmc2V0LCB2YWwp Owo+ICsKPiArCQl2YWwgPSByb2NrY2hpcF92cHU5ODFfYXYxX2RlY19nZXRfZGlzdChjdHgsIHJm LCBvaFtWNEwyX0FWMV9SRUZfR09MREVOX0ZSQU1FXSk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2 cHUsICZhdjFfbWYyX2dvbGRlbl9vZmZzZXQsIHZhbCk7Cj4gKwo+ICsJCXZhbCA9IHJvY2tjaGlw X3ZwdTk4MV9hdjFfZGVjX2dldF9kaXN0KGN0eCwgcmYsIG9oW1Y0TDJfQVYxX1JFRl9CV0RSRUZf RlJBTUVdKTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9tZjJfYndkcmVmX29mZnNl dCwgdmFsKTsKPiArCj4gKwkJdmFsID0gcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfZ2V0X2Rpc3Qo Y3R4LCByZiwgb2hbVjRMMl9BVjFfUkVGX0FMVFJFRjJfRlJBTUVdKTsKPiArCQloYW50cm9fcmVn X3dyaXRlKHZwdSwgJmF2MV9tZjJfYWx0cmVmMl9vZmZzZXQsIHZhbCk7Cj4gKwo+ICsJCXZhbCA9 IHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX2dldF9kaXN0KGN0eCwgcmYsIG9oW1Y0TDJfQVYxX1JF Rl9BTFRSRUZfRlJBTUVdKTsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9tZjJfYWx0 cmVmX29mZnNldCwgdmFsKTsKPiArCX0KPiArCj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2 MV9tZjNfbGFzdF9vZmZzZXQsIDApOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfbWYz X2xhc3QyX29mZnNldCwgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9tZjNfbGFz dDNfb2Zmc2V0LCAwKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX21mM19nb2xkZW5f b2Zmc2V0LCAwKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX21mM19id2RyZWZfb2Zm c2V0LCAwKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX21mM19hbHRyZWYyX29mZnNl dCwgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9tZjNfYWx0cmVmX29mZnNldCwg MCk7Cj4gKwo+ICsJaWYgKHVzZV9yZWZfZnJhbWVfbXZzICYmIHJlZl9pbmQgPiAyICYmCj4gKwkg ICAgY3VyX29mZnNldFttZl90eXBlc1syXSAtIFY0TDJfQVYxX1JFRl9MQVNUX0ZSQU1FXSA8PSBN QVhfRlJBTUVfRElTVEFOQ0UgJiYKPiArCSAgICBjdXJfb2Zmc2V0W21mX3R5cGVzWzJdIC0gVjRM Ml9BVjFfUkVGX0xBU1RfRlJBTUVdID49IC1NQVhfRlJBTUVfRElTVEFOQ0UpIHsKPiArCQlpbnQg cmYgPSByb2NrY2hpcF92cHU5ODFfZ2V0X29yZGVyX2hpbnQoY3R4LCByZWZzX3NlbGVjdGVkWzJd KTsKPiArCQlpbnQgaWR4ID0gcm9ja2NoaXBfdnB1OTgxX2dldF9mcmFtZV9pbmRleChjdHgsIHJl ZnNfc2VsZWN0ZWRbMl0pOwo+ICsJCXUzMiAqb2ggPSBhdjFfZGVjLT5mcmFtZV9yZWZzW2lkeF0u b3JkZXJfaGludHM7Cj4gKwkJaW50IHZhbDsKPiArCj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUs ICZhdjFfdXNlX3RlbXBvcmFsMl9tdnMsIDEpOwo+ICsKPiArCQl2YWwgPSByb2NrY2hpcF92cHU5 ODFfYXYxX2RlY19nZXRfZGlzdChjdHgsIHJmLCBvaFtWNEwyX0FWMV9SRUZfTEFTVF9GUkFNRV0p Owo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX21mM19sYXN0X29mZnNldCwgdmFsKTsK PiArCj4gKwkJdmFsID0gcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfZ2V0X2Rpc3QoY3R4LCByZiwg b2hbVjRMMl9BVjFfUkVGX0xBU1QyX0ZSQU1FXSk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUs ICZhdjFfbWYzX2xhc3QyX29mZnNldCwgdmFsKTsKPiArCj4gKwkJdmFsID0gcm9ja2NoaXBfdnB1 OTgxX2F2MV9kZWNfZ2V0X2Rpc3QoY3R4LCByZiwgb2hbVjRMMl9BVjFfUkVGX0xBU1QzX0ZSQU1F XSk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfbWYzX2xhc3QzX29mZnNldCwgdmFs KTsKPiArCj4gKwkJdmFsID0gcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfZ2V0X2Rpc3QoY3R4LCBy Ziwgb2hbVjRMMl9BVjFfUkVGX0dPTERFTl9GUkFNRV0pOwo+ICsJCWhhbnRyb19yZWdfd3JpdGUo dnB1LCAmYXYxX21mM19nb2xkZW5fb2Zmc2V0LCB2YWwpOwo+ICsKPiArCQl2YWwgPSByb2NrY2hp cF92cHU5ODFfYXYxX2RlY19nZXRfZGlzdChjdHgsIHJmLCBvaFtWNEwyX0FWMV9SRUZfQldEUkVG X0ZSQU1FXSk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfbWYzX2J3ZHJlZl9vZmZz ZXQsIHZhbCk7Cj4gKwo+ICsJCXZhbCA9IHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX2dldF9kaXN0 KGN0eCwgcmYsIG9oW1Y0TDJfQVYxX1JFRl9BTFRSRUYyX0ZSQU1FXSk7Cj4gKwkJaGFudHJvX3Jl Z193cml0ZSh2cHUsICZhdjFfbWYzX2FsdHJlZjJfb2Zmc2V0LCB2YWwpOwo+ICsKPiArCQl2YWwg PSByb2NrY2hpcF92cHU5ODFfYXYxX2RlY19nZXRfZGlzdChjdHgsIHJmLCBvaFtWNEwyX0FWMV9S RUZfQUxUUkVGX0ZSQU1FXSk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfbWYzX2Fs dHJlZl9vZmZzZXQsIHZhbCk7Cj4gKwl9Cj4gKwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZh djFfY3VyX2xhc3Rfb2Zmc2V0LCBjdXJfb2Zmc2V0WzBdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUo dnB1LCAmYXYxX2N1cl9sYXN0Ml9vZmZzZXQsIGN1cl9vZmZzZXRbMV0pOwo+ICsJaGFudHJvX3Jl Z193cml0ZSh2cHUsICZhdjFfY3VyX2xhc3QzX29mZnNldCwgY3VyX29mZnNldFsyXSk7Cj4gKwlo YW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9jdXJfZ29sZGVuX29mZnNldCwgY3VyX29mZnNldFsz XSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9jdXJfYndkcmVmX29mZnNldCwgY3Vy X29mZnNldFs0XSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9jdXJfYWx0cmVmMl9v ZmZzZXQsIGN1cl9vZmZzZXRbNV0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfY3Vy X2FsdHJlZl9vZmZzZXQsIGN1cl9vZmZzZXRbNl0pOwo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUo dnB1LCAmYXYxX2N1cl9sYXN0X3JvZmZzZXQsIGN1cl9yb2Zmc2V0WzBdKTsKPiArCWhhbnRyb19y ZWdfd3JpdGUodnB1LCAmYXYxX2N1cl9sYXN0Ml9yb2Zmc2V0LCBjdXJfcm9mZnNldFsxXSk7Cj4g KwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9jdXJfbGFzdDNfcm9mZnNldCwgY3VyX3JvZmZz ZXRbMl0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfY3VyX2dvbGRlbl9yb2Zmc2V0 LCBjdXJfcm9mZnNldFszXSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9jdXJfYndk cmVmX3JvZmZzZXQsIGN1cl9yb2Zmc2V0WzRdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAm YXYxX2N1cl9hbHRyZWYyX3JvZmZzZXQsIGN1cl9yb2Zmc2V0WzVdKTsKPiArCWhhbnRyb19yZWdf d3JpdGUodnB1LCAmYXYxX2N1cl9hbHRyZWZfcm9mZnNldCwgY3VyX3JvZmZzZXRbNl0pOwo+ICsK PiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX21mMV90eXBlLCBtZl90eXBlc1swXSAtIFY0 TDJfQVYxX1JFRl9MQVNUX0ZSQU1FKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX21m Ml90eXBlLCBtZl90eXBlc1sxXSAtIFY0TDJfQVYxX1JFRl9MQVNUX0ZSQU1FKTsKPiArCWhhbnRy b19yZWdfd3JpdGUodnB1LCAmYXYxX21mM190eXBlLCBtZl90eXBlc1syXSAtIFY0TDJfQVYxX1JF Rl9MQVNUX0ZSQU1FKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcm9ja2NoaXBfdnB1OTgxX2F2 MV9kZWNfc2V0X3JlZmVyZW5jZV9mcmFtZXMoc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPiArewo+ ICsJc3RydWN0IGhhbnRyb19hdjFfZGVjX2h3X2N0eCAqYXYxX2RlYyA9ICZjdHgtPmF2MV9kZWM7 Cj4gKwlzdHJ1Y3QgaGFudHJvX2F2MV9kZWNfY3RybHMgKmN0cmxzID0gJmF2MV9kZWMtPmN0cmxz Owo+ICsJY29uc3Qgc3RydWN0IHY0bDJfY3RybF9hdjFfZnJhbWUgKmZyYW1lID0gY3RybHMtPmZy YW1lOwo+ICsJaW50IGZyYW1lX3R5cGUgPSBmcmFtZS0+ZnJhbWVfdHlwZTsKPiArCWJvb2wgYWxs b3dfaW50cmFiYyA9ICEhKGN0cmxzLT5mcmFtZS0+ZmxhZ3MgJiBWNEwyX0FWMV9GUkFNRV9GTEFH X0FMTE9XX0lOVFJBQkMpOwo+ICsJaW50IHJlZl9jb3VudFtBVjFERUNfTUFYX1BJQ19CVUZGRVJT XSA9IHsgMCB9Owo+ICsJc3RydWN0IGhhbnRyb19kZXYgKnZwdSA9IGN0eC0+ZGV2Owo+ICsJaW50 IGksIHJlZl9mcmFtZXMgPSAwOwo+ICsJYm9vbCBzY2FsZV9lbmFibGUgPSBmYWxzZTsKPiArCj4g KwlpZiAoSVNfSU5UUkEoZnJhbWVfdHlwZSkgJiYgIWFsbG93X2ludHJhYmMpCj4gKwkJcmV0dXJu Owo+ICsKPiArCWlmICghYWxsb3dfaW50cmFiYykgewo+ICsJCWZvciAoaSA9IDA7IGkgPCBWNEwy X0FWMV9SRUZTX1BFUl9GUkFNRTsgaSsrKSB7Cj4gKwkJCWludCBpZHggPSByb2NrY2hpcF92cHU5 ODFfZ2V0X2ZyYW1lX2luZGV4KGN0eCwgaSk7Cj4gKwo+ICsJCQlpZiAoaWR4ID49IDApCj4gKwkJ CQlyZWZfY291bnRbaWR4XSsrOwo+ICsJCX0KPiArCj4gKwkJZm9yIChpID0gMDsgaSA8IEFWMURF Q19NQVhfUElDX0JVRkZFUlM7IGkrKykgewo+ICsJCQlpZiAocmVmX2NvdW50W2ldKQo+ICsJCQkJ cmVmX2ZyYW1lcysrOwo+ICsJCX0KPiArCX0gZWxzZSB7Cj4gKwkJcmVmX2ZyYW1lcyA9IDE7Cj4g Kwl9Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWZfZnJhbWVzLCByZWZfZnJhbWVz KTsKPiArCj4gKwlyb2NrY2hpcF92cHU5ODFfYXYxX2RlY19zZXRfZnJhbWVfc2lnbl9iaWFzKGN0 eCk7Cj4gKwo+ICsJZm9yIChpID0gVjRMMl9BVjFfUkVGX0xBU1RfRlJBTUU7IGkgPCBWNEwyX0FW MV9UT1RBTF9SRUZTX1BFUl9GUkFNRTsgaSsrKSB7Cj4gKwkJdTMyIHJlZiA9IGkgLSAxOwo+ICsJ CWludCBpZHggPSAwOwo+ICsJCWludCB3aWR0aCwgaGVpZ2h0Owo+ICsKPiArCQlpZiAoYWxsb3df aW50cmFiYykgewo+ICsJCQlpZHggPSBhdjFfZGVjLT5jdXJyZW50X2ZyYW1lX2luZGV4Owo+ICsJ CQl3aWR0aCA9IGZyYW1lLT5mcmFtZV93aWR0aF9taW51c18xICsgMTsKPiArCQkJaGVpZ2h0ID0g ZnJhbWUtPmZyYW1lX2hlaWdodF9taW51c18xICsgMTsKPiArCQl9IGVsc2Ugewo+ICsJCQlpZiAo cm9ja2NoaXBfdnB1OTgxX2dldF9mcmFtZV9pbmRleChjdHgsIHJlZikgPiAwKQo+ICsJCQkJaWR4 ID0gcm9ja2NoaXBfdnB1OTgxX2dldF9mcmFtZV9pbmRleChjdHgsIHJlZik7Cj4gKwkJCXdpZHRo ID0gYXYxX2RlYy0+ZnJhbWVfcmVmc1tpZHhdLndpZHRoOwo+ICsJCQloZWlnaHQgPSBhdjFfZGVj LT5mcmFtZV9yZWZzW2lkeF0uaGVpZ2h0Owo+ICsJCX0KPiArCj4gKwkJc2NhbGVfZW5hYmxlIHw9 Cj4gKwkJICAgIHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX3NldF9yZWYoY3R4LCByZWYsIGlkeCwg d2lkdGgsCj4gKwkJCQkJCSAgICBoZWlnaHQpOwo+ICsKPiArCQlyb2NrY2hpcF92cHU5ODFfYXYx X2RlY19zZXRfc2lnbl9iaWFzKGN0eCwgcmVmLAo+ICsJCQkJCQkgICAgICBhdjFfZGVjLT5yZWZf ZnJhbWVfc2lnbl9iaWFzW2ldKTsKPiArCX0KPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYx X3JlZl9zY2FsaW5nX2VuYWJsZSwgc2NhbGVfZW5hYmxlKTsKPiArCj4gKwloYW50cm9fcmVnX3dy aXRlKHZwdSwgJmF2MV9yZWYwX2dtX21vZGUsCj4gKwkJCSBmcmFtZS0+Z2xvYmFsX21vdGlvbi50 eXBlW1Y0TDJfQVYxX1JFRl9MQVNUX0ZSQU1FXSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwg JmF2MV9yZWYxX2dtX21vZGUsCj4gKwkJCSBmcmFtZS0+Z2xvYmFsX21vdGlvbi50eXBlW1Y0TDJf QVYxX1JFRl9MQVNUMl9GUkFNRV0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcmVm Ml9nbV9tb2RlLAo+ICsJCQkgZnJhbWUtPmdsb2JhbF9tb3Rpb24udHlwZVtWNEwyX0FWMV9SRUZf TEFTVDNfRlJBTUVdKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3JlZjNfZ21fbW9k ZSwKPiArCQkJIGZyYW1lLT5nbG9iYWxfbW90aW9uLnR5cGVbVjRMMl9BVjFfUkVGX0dPTERFTl9G UkFNRV0pOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcmVmNF9nbV9tb2RlLAo+ICsJ CQkgZnJhbWUtPmdsb2JhbF9tb3Rpb24udHlwZVtWNEwyX0FWMV9SRUZfQldEUkVGX0ZSQU1FXSk7 Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWY1X2dtX21vZGUsCj4gKwkJCSBmcmFt ZS0+Z2xvYmFsX21vdGlvbi50eXBlW1Y0TDJfQVYxX1JFRl9BTFRSRUYyX0ZSQU1FXSk7Cj4gKwlo YW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9yZWY2X2dtX21vZGUsCj4gKwkJCSBmcmFtZS0+Z2xv YmFsX21vdGlvbi50eXBlW1Y0TDJfQVYxX1JFRl9BTFRSRUZfRlJBTUVdKTsKPiArCj4gKwlyb2Nr Y2hpcF92cHU5ODFfYXYxX2RlY19zZXRfb3RoZXJfZnJhbWVzKGN0eCk7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX3NldF9wYXJhbWV0ZXJzKHN0cnVjdCBo YW50cm9fY3R4ICpjdHgpCj4gK3sKPiArCXN0cnVjdCBoYW50cm9fZGV2ICp2cHUgPSBjdHgtPmRl djsKPiArCXN0cnVjdCBoYW50cm9fYXYxX2RlY19od19jdHggKmF2MV9kZWMgPSAmY3R4LT5hdjFf ZGVjOwo+ICsJc3RydWN0IGhhbnRyb19hdjFfZGVjX2N0cmxzICpjdHJscyA9ICZhdjFfZGVjLT5j dHJsczsKPiArCj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9za2lwX21vZGUsCj4gKwkJ CSAhIShjdHJscy0+ZnJhbWUtPmZsYWdzICYgVjRMMl9BVjFfRlJBTUVfRkxBR19TS0lQX01PREVf UFJFU0VOVCkpOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfdGVtcG9yX212cF9lLAo+ ICsJCQkgISEoY3RybHMtPmZyYW1lLT5mbGFncyAmIFY0TDJfQVYxX0ZSQU1FX0ZMQUdfVVNFX1JF Rl9GUkFNRV9NVlMpKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2RlbHRhX2xmX3Jl c19sb2csCj4gKwkJCSBjdHJscy0+ZnJhbWUtPmxvb3BfZmlsdGVyLmRlbHRhX2xmX3Jlcyk7Cj4g KwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9kZWx0YV9sZl9tdWx0aSwKPiArCQkJICEhKGN0 cmxzLT5mcmFtZS0+bG9vcF9maWx0ZXIuZmxhZ3MKPiArCQkJICAgICYgVjRMMl9BVjFfTE9PUF9G SUxURVJfRkxBR19ERUxUQV9MRl9NVUxUSSkpOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZh djFfZGVsdGFfbGZfcHJlc2VudCwKPiArCQkJICEhKGN0cmxzLT5mcmFtZS0+bG9vcF9maWx0ZXIu ZmxhZ3MKPiArCQkJICAgICYgVjRMMl9BVjFfTE9PUF9GSUxURVJfRkxBR19ERUxUQV9MRl9QUkVT RU5UKSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9kaXNhYmxlX2NkZl91cGRhdGUs Cj4gKwkJCSAhIShjdHJscy0+ZnJhbWUtPmZsYWdzICYgVjRMMl9BVjFfRlJBTUVfRkxBR19ESVNB QkxFX0NERl9VUERBVEUpKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2FsbG93X3dh cnAsCj4gKwkJCSAhIShjdHJscy0+ZnJhbWUtPmZsYWdzICYgVjRMMl9BVjFfRlJBTUVfRkxBR19B TExPV19XQVJQRURfTU9USU9OKSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9zaG93 X2ZyYW1lLAo+ICsJCQkgISEoY3RybHMtPmZyYW1lLT5mbGFncyAmIFY0TDJfQVYxX0ZSQU1FX0ZM QUdfU0hPV19GUkFNRSkpOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfc3dpdGNoYWJs ZV9tb3Rpb25fbW9kZSwKPiArCQkJICEhKGN0cmxzLT5mcmFtZS0+ZmxhZ3MgJiBWNEwyX0FWMV9G UkFNRV9GTEFHX0lTX01PVElPTl9NT0RFX1NXSVRDSEFCTEUpKTsKPiArCWhhbnRyb19yZWdfd3Jp dGUodnB1LCAmYXYxX2VuYWJsZV9jZGVmLAo+ICsJCQkgISEoY3RybHMtPnNlcXVlbmNlLT5mbGFn cyAmIFY0TDJfQVYxX1NFUVVFTkNFX0ZMQUdfRU5BQkxFX0NERUYpKTsKPiArCWhhbnRyb19yZWdf d3JpdGUodnB1LCAmYXYxX2FsbG93X21hc2tlZF9jb21wb3VuZCwKPiArCQkJICEhKGN0cmxzLT5z ZXF1ZW5jZS0+ZmxhZ3MKPiArCQkJICAgICYgVjRMMl9BVjFfU0VRVUVOQ0VfRkxBR19FTkFCTEVf TUFTS0VEX0NPTVBPVU5EKSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9hbGxvd19p bnRlcmludHJhLAo+ICsJCQkgISEoY3RybHMtPnNlcXVlbmNlLT5mbGFncwo+ICsJCQkgICAgJiBW NEwyX0FWMV9TRVFVRU5DRV9GTEFHX0VOQUJMRV9JTlRFUklOVFJBX0NPTVBPVU5EKSk7Cj4gKwlo YW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9lbmFibGVfaW50cmFfZWRnZV9maWx0ZXIsCj4gKwkJ CSAhIShjdHJscy0+c2VxdWVuY2UtPmZsYWdzCj4gKwkJCSAgICAmIFY0TDJfQVYxX1NFUVVFTkNF X0ZMQUdfRU5BQkxFX0lOVFJBX0VER0VfRklMVEVSKSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZw dSwgJmF2MV9hbGxvd19maWx0ZXJfaW50cmEsCj4gKwkJCSAhIShjdHJscy0+c2VxdWVuY2UtPmZs YWdzICYgVjRMMl9BVjFfU0VRVUVOQ0VfRkxBR19FTkFCTEVfRklMVEVSX0lOVFJBKSk7Cj4gKwlo YW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9lbmFibGVfam50X2NvbXAsCj4gKwkJCSAhIShjdHJs cy0+c2VxdWVuY2UtPmZsYWdzICYgVjRMMl9BVjFfU0VRVUVOQ0VfRkxBR19FTkFCTEVfSk5UX0NP TVApKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2VuYWJsZV9kdWFsX2ZpbHRlciwK PiArCQkJICEhKGN0cmxzLT5zZXF1ZW5jZS0+ZmxhZ3MgJiBWNEwyX0FWMV9TRVFVRU5DRV9GTEFH X0VOQUJMRV9EVUFMX0ZJTFRFUikpOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcmVk dWNlZF90eF9zZXRfdXNlZCwKPiArCQkJICEhKGN0cmxzLT5mcmFtZS0+ZmxhZ3MgJiBWNEwyX0FW MV9GUkFNRV9GTEFHX1JFRFVDRURfVFhfU0VUKSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwg JmF2MV9hbGxvd19zY3JlZW5fY29udGVudF90b29scywKPiArCQkJICEhKGN0cmxzLT5mcmFtZS0+ ZmxhZ3MgJiBWNEwyX0FWMV9GUkFNRV9GTEFHX0FMTE9XX1NDUkVFTl9DT05URU5UX1RPT0xTKSk7 Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9hbGxvd19pbnRyYWJjLAo+ICsJCQkgISEo Y3RybHMtPmZyYW1lLT5mbGFncyAmIFY0TDJfQVYxX0ZSQU1FX0ZMQUdfQUxMT1dfSU5UUkFCQykp Owo+ICsKPiArCWlmICghKGN0cmxzLT5mcmFtZS0+ZmxhZ3MgJiBWNEwyX0FWMV9GUkFNRV9GTEFH X0FMTE9XX1NDUkVFTl9DT05URU5UX1RPT0xTKSkKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwg JmF2MV9mb3JjZV9pbnRlcmdlcl9tdiwgMCk7Cj4gKwllbHNlCj4gKwkJaGFudHJvX3JlZ193cml0 ZSh2cHUsICZhdjFfZm9yY2VfaW50ZXJnZXJfbXYsCj4gKwkJCQkgISEoY3RybHMtPmZyYW1lLT5m bGFncyAmIFY0TDJfQVYxX0ZSQU1FX0ZMQUdfRk9SQ0VfSU5URUdFUl9NVikpOwo+ICsKPiArCWhh bnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2JsYWNrd2hpdGVfZSwgMCk7Cj4gKwloYW50cm9fcmVn X3dyaXRlKHZwdSwgJmF2MV9kZWx0YV9xX3Jlc19sb2csIGN0cmxzLT5mcmFtZS0+cXVhbnRpemF0 aW9uLmRlbHRhX3FfcmVzKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2RlbHRhX3Ff cHJlc2VudCwKPiArCQkJICEhKGN0cmxzLT5mcmFtZS0+cXVhbnRpemF0aW9uLmZsYWdzCj4gKwkJ CSAgICAmIFY0TDJfQVYxX1FVQU5USVpBVElPTl9GTEFHX0RFTFRBX1FfUFJFU0VOVCkpOwo+ICsK PiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2lkcl9waWNfZSwgIWN0cmxzLT5mcmFtZS0+ ZnJhbWVfdHlwZSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9xdWFudF9iYXNlX3Fp bmRleCwgY3RybHMtPmZyYW1lLT5xdWFudGl6YXRpb24uYmFzZV9xX2lkeCk7Cj4gKwloYW50cm9f cmVnX3dyaXRlKHZwdSwgJmF2MV9iaXRfZGVwdGhfeV9taW51czgsIGN0eC0+Yml0X2RlcHRoIC0g OCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9iaXRfZGVwdGhfY19taW51czgsIGN0 eC0+Yml0X2RlcHRoIC0gOCk7Cj4gKwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfbWNv bXBfZmlsdF90eXBlLCBjdHJscy0+ZnJhbWUtPmludGVycG9sYXRpb25fZmlsdGVyKTsKPiArCWhh bnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2hpZ2hfcHJlY19tdl9lLAo+ICsJCQkgISEoY3RybHMt PmZyYW1lLT5mbGFncyAmIFY0TDJfQVYxX0ZSQU1FX0ZMQUdfQUxMT1dfSElHSF9QUkVDSVNJT05f TVYpKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2NvbXBfcHJlZF9tb2RlLAo+ICsJ CQkgKGN0cmxzLT5mcmFtZS0+ZmxhZ3MgJiBWNEwyX0FWMV9GUkFNRV9GTEFHX1JFRkVSRU5DRV9T RUxFQ1QpID8gMiA6IDApOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfdHJhbnNmb3Jt X21vZGUsIChjdHJscy0+ZnJhbWUtPnR4X21vZGUgPT0gMSkgPyAzIDogNCk7Cj4gKwloYW50cm9f cmVnX3dyaXRlKHZwdSwgJmF2MV9tYXhfY2Jfc2l6ZSwKPiArCQkJIChjdHJscy0+c2VxdWVuY2Ut PmZsYWdzCj4gKwkJCSAgJiBWNEwyX0FWMV9TRVFVRU5DRV9GTEFHX1VTRV8xMjhYMTI4X1NVUEVS QkxPQ0spID8gNyA6IDYpOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfbWluX2NiX3Np emUsIDMpOwo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2NvbXBfcHJlZF9maXhl ZF9yZWYsIDApOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfY29tcF9wcmVkX3Zhcl9y ZWYwX2F2MSwgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9jb21wX3ByZWRfdmFy X3JlZjFfYXYxLCAwKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxf c2VnMCwgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9maWx0X2xldmVsX3NlZzEs IDApOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZmlsdF9sZXZlbF9zZWcyLCAwKTsK PiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxfc2VnMywgMCk7Cj4gKwlo YW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9maWx0X2xldmVsX3NlZzQsIDApOwo+ICsJaGFudHJv X3JlZ193cml0ZSh2cHUsICZhdjFfZmlsdF9sZXZlbF9zZWc1LCAwKTsKPiArCWhhbnRyb19yZWdf d3JpdGUodnB1LCAmYXYxX2ZpbHRfbGV2ZWxfc2VnNiwgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRl KHZwdSwgJmF2MV9maWx0X2xldmVsX3NlZzcsIDApOwo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUo dnB1LCAmYXYxX3FwX2RlbHRhX3lfZGNfYXYxLCBjdHJscy0+ZnJhbWUtPnF1YW50aXphdGlvbi5k ZWx0YV9xX3lfZGMpOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcXBfZGVsdGFfY2hf ZGNfYXYxLCBjdHJscy0+ZnJhbWUtPnF1YW50aXphdGlvbi5kZWx0YV9xX3VfZGMpOwo+ICsJaGFu dHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcXBfZGVsdGFfY2hfYWNfYXYxLCBjdHJscy0+ZnJhbWUt PnF1YW50aXphdGlvbi5kZWx0YV9xX3VfYWMpOwo+ICsJaWYgKGN0cmxzLT5mcmFtZS0+cXVhbnRp emF0aW9uLmZsYWdzICYgVjRMMl9BVjFfUVVBTlRJWkFUSU9OX0ZMQUdfVVNJTkdfUU1BVFJJWCkg ewo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3FtbGV2ZWxfeSwgY3RybHMtPmZyYW1l LT5xdWFudGl6YXRpb24ucW1feSk7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcW1s ZXZlbF91LCBjdHJscy0+ZnJhbWUtPnF1YW50aXphdGlvbi5xbV91KTsKPiArCQloYW50cm9fcmVn X3dyaXRlKHZwdSwgJmF2MV9xbWxldmVsX3YsIGN0cmxzLT5mcmFtZS0+cXVhbnRpemF0aW9uLnFt X3YpOwo+ICsJfSBlbHNlIHsKPiArCQloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9xbWxldmVs X3ksIDB4ZmYpOwo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3FtbGV2ZWxfdSwgMHhm Zik7Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcW1sZXZlbF92LCAweGZmKTsKPiAr CX0KPiArCj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9sb3NzbGVzc19lLCByb2NrY2hp cF92cHU5ODFfYXYxX2RlY19pc19sb3NzbGVzcyhjdHgpKTsKPiArCWhhbnRyb19yZWdfd3JpdGUo dnB1LCAmYXYxX3F1YW50X2RlbHRhX3ZfZGMsIGN0cmxzLT5mcmFtZS0+cXVhbnRpemF0aW9uLmRl bHRhX3Ffdl9kYyk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9xdWFudF9kZWx0YV92 X2FjLCBjdHJscy0+ZnJhbWUtPnF1YW50aXphdGlvbi5kZWx0YV9xX3ZfYWMpOwo+ICsKPiArCWhh bnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3NraXBfcmVmMCwKPiArCQkJIChjdHJscy0+ZnJhbWUt PnNraXBfbW9kZV9mcmFtZVswXSkgPyBjdHJscy0+ZnJhbWUtPnNraXBfbW9kZV9mcmFtZVswXSA6 IDEpOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfc2tpcF9yZWYxLAo+ICsJCQkgKGN0 cmxzLT5mcmFtZS0+c2tpcF9tb2RlX2ZyYW1lWzFdKSA/IGN0cmxzLT5mcmFtZS0+c2tpcF9tb2Rl X2ZyYW1lWzFdIDogMSk7Cj4gKwo+ICsJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBBVjFfTUNfU1lO Q19DVVJSLCBhdjFfZGVjLT50aWxlX2J1Zi5kbWEpOwo+ICsJaGFudHJvX3dyaXRlX2FkZHIodnB1 LCBBVjFfTUNfU1lOQ19MRUZULCBhdjFfZGVjLT50aWxlX2J1Zi5kbWEpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZAo+ICtyb2NrY2hpcF92cHU5ODFfYXYxX2RlY19zZXRfaW5wdXRfYnVmZmVyKHN0 cnVjdCBoYW50cm9fY3R4ICpjdHgsCj4gKwkJCQkJIHN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnZi Ml9zcmMpCj4gK3sKPiArCXN0cnVjdCBoYW50cm9fYXYxX2RlY19od19jdHggKmF2MV9kZWMgPSAm Y3R4LT5hdjFfZGVjOwo+ICsJc3RydWN0IGhhbnRyb19hdjFfZGVjX2N0cmxzICpjdHJscyA9ICZh djFfZGVjLT5jdHJsczsKPiArCWNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfYXYxX3RpbGVfZ3JvdXBf ZW50cnkgKmdyb3VwX2VudHJ5ID0KPiArCSAgICBjdHJscy0+dGlsZV9ncm91cF9lbnRyeTsKPiAr CXN0cnVjdCBoYW50cm9fZGV2ICp2cHUgPSBjdHgtPmRldjsKPiArCWRtYV9hZGRyX3Qgc3JjX2Rt YTsKPiArCXUzMiBzcmNfbGVuLCBzcmNfYnVmX2xlbjsKPiArCWludCBzdGFydF9iaXQsIG9mZnNl dDsKPiArCj4gKwlzcmNfZG1hID0gdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2FkZHIoJnZiMl9z cmMtPnZiMl9idWYsIDApOwo+ICsJc3JjX2xlbiA9IHZiMl9nZXRfcGxhbmVfcGF5bG9hZCgmdmIy X3NyYy0+dmIyX2J1ZiwgMCk7Cj4gKwlzcmNfYnVmX2xlbiA9IHZiMl9wbGFuZV9zaXplKCZ2YjJf c3JjLT52YjJfYnVmLCAwKTsKPiArCj4gKwlzdGFydF9iaXQgPSAoZ3JvdXBfZW50cnlbMF0udGls ZV9vZmZzZXQgJiAweGYpICogODsKPiArCW9mZnNldCA9IGdyb3VwX2VudHJ5WzBdLnRpbGVfb2Zm c2V0ICYgfjB4ZjsKPiArCj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9zdHJtX2J1ZmZl cl9sZW4sIHNyY19idWZfbGVuKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3N0cm1f c3RhcnRfYml0LCBzdGFydF9iaXQpOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfc3Ry ZWFtX2xlbiwgc3JjX2xlbik7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9zdHJtX3N0 YXJ0X29mZnNldCwgMCk7Cj4gKwloYW50cm9fd3JpdGVfYWRkcih2cHUsIEFWMV9JTlBVVF9TVFJF QU0sIHNyY19kbWEgKyBvZmZzZXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtyb2NrY2hp cF92cHU5ODFfYXYxX2RlY19zZXRfb3V0cHV0X2J1ZmZlcihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4 KQo+ICt7Cj4gKwlzdHJ1Y3QgaGFudHJvX2F2MV9kZWNfaHdfY3R4ICphdjFfZGVjID0gJmN0eC0+ YXYxX2RlYzsKPiArCXN0cnVjdCBoYW50cm9fZGV2ICp2cHUgPSBjdHgtPmRldjsKPiArCXN0cnVj dCBoYW50cm9fZGVjb2RlZF9idWZmZXIgKmRzdDsKPiArCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIg KnZiMl9kc3Q7Cj4gKwlkbWFfYWRkcl90IGx1bWFfYWRkciwgY2hyb21hX2FkZHIsIG12X2FkZHIg PSAwOwo+ICsJc2l6ZV90IGNyX29mZnNldCA9IHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX2x1bWFf c2l6ZShjdHgpOwo+ICsJc2l6ZV90IG12X29mZnNldCA9IHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVj X2Nocm9tYV9zaXplKGN0eCk7Cj4gKwo+ICsJdmIyX2RzdCA9IGF2MV9kZWMtPmZyYW1lX3JlZnNb YXYxX2RlYy0+Y3VycmVudF9mcmFtZV9pbmRleF0udmIyX3JlZjsKPiArCWRzdCA9IHZiMl90b19o YW50cm9fZGVjb2RlZF9idWYoJnZiMl9kc3QtPnZiMl9idWYpOwo+ICsJbHVtYV9hZGRyID0gaGFu dHJvX2dldF9kZWNfYnVmX2FkZHIoY3R4LCAmZHN0LT5iYXNlLnZiLnZiMl9idWYpOwo+ICsJY2hy b21hX2FkZHIgPSBsdW1hX2FkZHIgKyBjcl9vZmZzZXQ7Cj4gKwltdl9hZGRyID0gbHVtYV9hZGRy ICsgbXZfb2Zmc2V0Owo+ICsKPiArCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgQVYxX1RJTEVfT1VU X0xVLCBsdW1hX2FkZHIpOwo+ICsJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBBVjFfVElMRV9PVVRf Q0gsIGNocm9tYV9hZGRyKTsKPiArCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgQVYxX1RJTEVfT1VU X01WLCBtdl9hZGRyKTsKPiArfQo+ICsKPiAraW50IHJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX3J1 bihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+ICt7Cj4gKwlzdHJ1Y3QgaGFudHJvX2RldiAqdnB1 ID0gY3R4LT5kZXY7Cj4gKwlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICp2YjJfc3JjOwo+ICsJaW50 IHJldDsKPiArCj4gKwloYW50cm9fc3RhcnRfcHJlcGFyZV9ydW4oY3R4KTsKPiArCj4gKwlyZXQg PSByb2NrY2hpcF92cHU5ODFfYXYxX2RlY19wcmVwYXJlX3J1bihjdHgpOwo+ICsJaWYgKHJldCkK PiArCQlnb3RvIHByZXBhcmVfZXJyb3I7Cj4gKwo+ICsJdmIyX3NyYyA9IGhhbnRyb19nZXRfc3Jj X2J1ZihjdHgpOwo+ICsJaWYgKCF2YjJfc3JjKSB7Cj4gKwkJcmV0ID0gLUVJTlZBTDsKPiArCQln b3RvIHByZXBhcmVfZXJyb3I7Cj4gKwl9Cj4gKwo+ICsJcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNf Y2xlYW5fcmVmcyhjdHgpOwo+ICsJcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfZnJhbWVfcmVmKGN0 eCwgdmIyX3NyYy0+dmIyX2J1Zi50aW1lc3RhbXApOwo+ICsKPiArCXJvY2tjaGlwX3ZwdTk4MV9h djFfZGVjX3NldF9wYXJhbWV0ZXJzKGN0eCk7Cj4gKwlyb2NrY2hpcF92cHU5ODFfYXYxX2RlY19z ZXRfZ2xvYmFsX21vZGVsKGN0eCk7Cj4gKwlyb2NrY2hpcF92cHU5ODFfYXYxX2RlY19zZXRfdGls ZV9pbmZvKGN0eCk7Cj4gKwlyb2NrY2hpcF92cHU5ODFfYXYxX2RlY19zZXRfcmVmZXJlbmNlX2Zy YW1lcyhjdHgpOwo+ICsJcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfc2V0X3NlZ21lbnRhdGlvbihj dHgpOwo+ICsJcm9ja2NoaXBfdnB1OTgxX2F2MV9kZWNfc2V0X2xvb3BmaWx0ZXIoY3R4KTsKPiAr CXJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX3NldF9waWN0dXJlX2RpbWVuc2lvbnMoY3R4KTsKPiAr CXJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX3NldF9jZGVmKGN0eCk7Cj4gKwlyb2NrY2hpcF92cHU5 ODFfYXYxX2RlY19zZXRfbHIoY3R4KTsKPiArCXJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX3NldF9w cm9iKGN0eCk7Cj4gKwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZGVjX21vZGUsIEFW MV9ERUNfTU9ERSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9kZWNfb3V0X2VjX2J5 dGVfd29yZCwgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV93cml0ZV9tdnNfZSwg MSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9kZWNfb3V0X2VjX2J5cGFzcywgMSk7 Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9kZWNfY2xrX2dhdGVfZSwgMSk7Cj4gKwo+ ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZGVjX2Fib3J0X2UsIDApOwo+ICsJaGFudHJv X3JlZ193cml0ZSh2cHUsICZhdjFfZGVjX3RpbGVfaW50X2UsIDApOwo+ICsKPiArCWhhbnRyb19y ZWdfd3JpdGUodnB1LCAmYXYxX2RlY19hbGlnbm1lbnQsIDY0KTsKPiArCWhhbnRyb19yZWdfd3Jp dGUodnB1LCAmYXYxX2FwZl9kaXNhYmxlLCAwKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAm YXYxX2FwZl90aHJlc2hvbGQsIDgpOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfZGVj X2J1c3dpZHRoLCAyKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2RlY19tYXhfYnVy c3QsIDE2KTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2Vycm9yX2NvbmNlYWxfZSwg MCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9heGlfcmRfb3N0ZF90aHJlc2hvbGQs IDY0KTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2F4aV93cl9vc3RkX3RocmVzaG9s ZCwgNjQpOwo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2V4dF90aW1lb3V0X2N5 Y2xlcywgMHhmZmZmZmZmKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2V4dF90aW1l b3V0X292ZXJyaWRlX2UsIDEpOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfdGltZW91 dF9jeWNsZXMsIDB4ZmZmZmZmZik7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV90aW1l b3V0X292ZXJyaWRlX2UsIDEpOwo+ICsKPiArCXJvY2tjaGlwX3ZwdTk4MV9hdjFfZGVjX3NldF9v dXRwdXRfYnVmZmVyKGN0eCk7Cj4gKwlyb2NrY2hpcF92cHU5ODFfYXYxX2RlY19zZXRfaW5wdXRf YnVmZmVyKGN0eCwgdmIyX3NyYyk7Cj4gKwo+ICsJaGFudHJvX2VuZF9wcmVwYXJlX3J1bihjdHgp Owo+ICsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2RlY19lLCAxKTsKPiArCj4gKwly ZXR1cm4gMDsKPiArCj4gK3ByZXBhcmVfZXJyb3I6Cj4gKwloYW50cm9fZW5kX3ByZXBhcmVfcnVu KGN0eCk7Cj4gKwloYW50cm9faXJxX2RvbmUodnB1LCBWQjJfQlVGX1NUQVRFX0VSUk9SKTsKPiAr CXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHJvY2tjaGlwX3ZwdTk4MV9wb3N0 cHJvY19lbmFibGUoc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPiArewo+ICsJc3RydWN0IGhhbnRy b19kZXYgKnZwdSA9IGN0eC0+ZGV2Owo+ICsJaW50IHdpZHRoID0gY3R4LT5kc3RfZm10LndpZHRo Owo+ICsJaW50IGhlaWdodCA9IGN0eC0+ZHN0X2ZtdC5oZWlnaHQ7Cj4gKwlzdHJ1Y3QgdmIyX3Y0 bDJfYnVmZmVyICp2YjJfZHN0Owo+ICsJc2l6ZV90IGNocm9tYV9vZmZzZXQ7Cj4gKwlkbWFfYWRk cl90IGRzdF9kbWE7Cj4gKwo+ICsJdmIyX2RzdCA9IGhhbnRyb19nZXRfZHN0X2J1ZihjdHgpOwo+ ICsKPiArCWRzdF9kbWEgPSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcigmdmIyX2RzdC0+ dmIyX2J1ZiwgMCk7Cj4gKwljaHJvbWFfb2Zmc2V0ID0gY3R4LT5kc3RfZm10LnBsYW5lX2ZtdFsw XS5ieXRlc3BlcmxpbmUgKgo+ICsJICAgIGN0eC0+ZHN0X2ZtdC5oZWlnaHQ7Cj4gKwo+ICsJLyog ZW5hYmxlIHBvc3QgcHJvY2Vzc29yICovCj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9w cF9vdXRfZSwgMSk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9wcF9pbl9mb3JtYXQs IDApOwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcHAwX2R1cF9ob3IsIDEpOwo+ICsJ aGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcHAwX2R1cF92ZXIsIDEpOwo+ICsKPiArCWhhbnRy b19yZWdfd3JpdGUodnB1LCAmYXYxX3BwX2luX2hlaWdodCwgaGVpZ2h0IC8gMik7Cj4gKwloYW50 cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9wcF9pbl93aWR0aCwgd2lkdGggLyAyKTsKPiArCWhhbnRy b19yZWdfd3JpdGUodnB1LCAmYXYxX3BwX291dF9oZWlnaHQsIGhlaWdodCk7Cj4gKwloYW50cm9f cmVnX3dyaXRlKHZwdSwgJmF2MV9wcF9vdXRfd2lkdGgsIHdpZHRoKTsKPiArCWhhbnRyb19yZWdf d3JpdGUodnB1LCAmYXYxX3BwX291dF95X3N0cmlkZSwKPiArCQkJIGN0eC0+ZHN0X2ZtdC5wbGFu ZV9mbXRbMF0uYnl0ZXNwZXJsaW5lKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3Bw X291dF9jX3N0cmlkZSwKPiArCQkJIGN0eC0+ZHN0X2ZtdC5wbGFuZV9mbXRbMF0uYnl0ZXNwZXJs aW5lKTsKPiArCXN3aXRjaCAoY3R4LT5kc3RfZm10LnBpeGVsZm9ybWF0KSB7Cj4gKwljYXNlIFY0 TDJfUElYX0ZNVF9QMDEwOgo+ICsJCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3BwX291dF9m b3JtYXQsIDEpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBWNEwyX1BJWF9GTVRfTlYxMjoKPiArCQlo YW50cm9fcmVnX3dyaXRlKHZwdSwgJmF2MV9wcF9vdXRfZm9ybWF0LCAzKTsKPiArCQlicmVhazsK PiArCWRlZmF1bHQ6Cj4gKwkJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcHBfb3V0X2Zvcm1h dCwgMCk7Cj4gKwl9Cj4gKwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcHBkX2JsZW5k X2V4aXN0LCAwKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3BwZF9kaXRoX2V4aXN0 LCAwKTsKPiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX2FibGVuZF9jcm9wX2UsIDApOwo+ ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcHBfZm9ybWF0X2N1c3RvbWVyMV9lLCAwKTsK PiArCWhhbnRyb19yZWdfd3JpdGUodnB1LCAmYXYxX3BwX2Nyb3BfZXhpc3QsIDApOwo+ICsJaGFu dHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcHBfdXBfbGV2ZWwsIDApOwo+ICsJaGFudHJvX3JlZ193 cml0ZSh2cHUsICZhdjFfcHBfZG93bl9sZXZlbCwgMCk7Cj4gKwloYW50cm9fcmVnX3dyaXRlKHZw dSwgJmF2MV9wcF9leGlzdCwgMCk7Cj4gKwo+ICsJaGFudHJvX3dyaXRlX2FkZHIodnB1LCBBVjFf UFBfT1VUX0xVLCBkc3RfZG1hKTsKPiArCWhhbnRyb193cml0ZV9hZGRyKHZwdSwgQVYxX1BQX09V VF9DSCwgZHN0X2RtYSArIGNocm9tYV9vZmZzZXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBy b2NrY2hpcF92cHU5ODFfcG9zdHByb2NfZGlzYWJsZShzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+ ICt7Cj4gKwlzdHJ1Y3QgaGFudHJvX2RldiAqdnB1ID0gY3R4LT5kZXY7Cj4gKwo+ICsJLyogZGlz YWJsZSBwb3N0IHByb2Nlc3NvciAqLwo+ICsJaGFudHJvX3JlZ193cml0ZSh2cHUsICZhdjFfcHBf b3V0X2UsIDApOwo+ICt9Cj4gKwo+ICtjb25zdCBzdHJ1Y3QgaGFudHJvX3Bvc3Rwcm9jX29wcyBy b2NrY2hpcF92cHU5ODFfcG9zdHByb2Nfb3BzID0gewo+ICsJLmVuYWJsZSA9IHJvY2tjaGlwX3Zw dTk4MV9wb3N0cHJvY19lbmFibGUsCj4gKwkuZGlzYWJsZSA9IHJvY2tjaGlwX3ZwdTk4MV9wb3N0 cHJvY19kaXNhYmxlLAo+ICt9Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L3ZlcmlzaWxpY29uL3JvY2tjaGlwX3ZwdTk4MV9yZWdzLmggYi9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL3ZlcmlzaWxpY29uL3JvY2tjaGlwX3ZwdTk4MV9yZWdzLmgKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMTgyZTZjODMwZmY2Cj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vcm9ja2NoaXBfdnB1OTgx X3JlZ3MuaAo+IEBAIC0wLDAgKzEsNDc3IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9ubHkgKi8KPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDIyLCBDb2xsYWJv cmEKPiArICoKPiArICogQXV0aG9yOiBCZW5qYW1pbiBHYWlnbmFyZCA8YmVuamFtaW4uZ2FpZ25h cmRAY29sbGFib3JhLmNvbT4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9ST0NLQ0hJUF9WUFU5ODFf UkVHU19IXwo+ICsjZGVmaW5lIF9ST0NLQ0hJUF9WUFU5ODFfUkVHU19IXwo+ICsKPiArI2luY2x1 ZGUgImhhbnRyby5oIgo+ICsKPiArI2RlZmluZSBBVjFfU1dSRUcobnIpCSgobnIpICogNCkKPiAr Cj4gKyNkZWZpbmUgQVYxX0RFQ19SRUcoYiwgcywgbSkgXAo+ICsJKChjb25zdCBzdHJ1Y3QgaGFu dHJvX3JlZykgeyBcCj4gKwkJLmJhc2UgPSBBVjFfU1dSRUcoYiksIFwKPiArCQkuc2hpZnQgPSBz LCBcCj4gKwkJLm1hc2sgPSBtLCBcCj4gKwl9KQo+ICsKPiArI2RlZmluZSBBVjFfUkVHX0lOVEVS UlVQVAkJQVYxX1NXUkVHKDEpCj4gKyNkZWZpbmUgQVYxX1JFR19JTlRFUlJVUFRfREVDX1JEWV9J TlQJQklUKDEyKQo+ICsKPiArI2RlZmluZSBBVjFfUkVHX0NPTkZJRwkJCUFWMV9TV1JFRygyKQo+ ICsjZGVmaW5lIEFWMV9SRUdfQ09ORklHX0RFQ19DTEtfR0FURV9FCUJJVCgxMCkKPiArCj4gKyNk ZWZpbmUgYXYxX2RlY19lCQkJQVYxX0RFQ19SRUcoMSwgMCwgMHgxKQo+ICsjZGVmaW5lIGF2MV9k ZWNfYWJvcnRfZQkJCUFWMV9ERUNfUkVHKDEsIDUsIDB4MSkKPiArI2RlZmluZSBhdjFfZGVjX3Rp bGVfaW50X2UJCUFWMV9ERUNfUkVHKDEsIDcsIDB4MSkKPiArCj4gKyNkZWZpbmUgYXYxX2RlY19j bGtfZ2F0ZV9lCQlBVjFfREVDX1JFRygyLCAxMCwgMHgxKQo+ICsKPiArI2RlZmluZSBhdjFfZGVj X291dF9lY19ieXBhc3MJCUFWMV9ERUNfUkVHKDMsIDgsICAweDEpCj4gKyNkZWZpbmUgYXYxX3dy aXRlX212c19lCQkJQVYxX0RFQ19SRUcoMywgMTIsIDB4MSkKPiArI2RlZmluZSBhdjFfZmlsdGVy aW5nX2RpcwkJQVYxX0RFQ19SRUcoMywgMTQsIDB4MSkKPiArI2RlZmluZSBhdjFfZGVjX291dF9k aXMJCQlBVjFfREVDX1JFRygzLCAxNSwgMHgxKQo+ICsjZGVmaW5lIGF2MV9kZWNfb3V0X2VjX2J5 dGVfd29yZAlBVjFfREVDX1JFRygzLCAxNiwgMHgxKQo+ICsjZGVmaW5lIGF2MV9za2lwX21vZGUJ CQlBVjFfREVDX1JFRygzLCAyNiwgMHgxKQo+ICsjZGVmaW5lIGF2MV9kZWNfbW9kZQkJCUFWMV9E RUNfUkVHKDMsIDI3LCAweDFmKQo+ICsKPiArI2RlZmluZSBhdjFfcmVmX2ZyYW1lcwkJCUFWMV9E RUNfUkVHKDQsIDAsIDB4ZikKPiArI2RlZmluZSBhdjFfcGljX2hlaWdodF9pbl9jYnMJCUFWMV9E RUNfUkVHKDQsIDYsIDB4MWZmZikKPiArI2RlZmluZSBhdjFfcGljX3dpZHRoX2luX2NicwkJQVYx X0RFQ19SRUcoNCwgMTksIDB4MWZmZikKPiArCj4gKyNkZWZpbmUgYXYxX3JlZl9zY2FsaW5nX2Vu YWJsZQkJQVYxX0RFQ19SRUcoNSwgMCwgMHgxKQo+ICsjZGVmaW5lIGF2MV9maWx0X2xldmVsX2Jh c2VfZ3QzMglBVjFfREVDX1JFRyg1LCAxLCAweDEpCj4gKyNkZWZpbmUgYXYxX2Vycm9yX3Jlc2ls aWVudAkJQVYxX0RFQ19SRUcoNSwgMiwgMHgxKQo+ICsjZGVmaW5lIGF2MV9mb3JjZV9pbnRlcmdl cl9tdgkJQVYxX0RFQ19SRUcoNSwgMywgMHgxKQo+ICsjZGVmaW5lIGF2MV9hbGxvd19pbnRyYWJj CQlBVjFfREVDX1JFRyg1LCA0LCAweDEpCj4gKyNkZWZpbmUgYXYxX2FsbG93X3NjcmVlbl9jb250 ZW50X3Rvb2xzCUFWMV9ERUNfUkVHKDUsIDUsIDB4MSkKPiArI2RlZmluZSBhdjFfcmVkdWNlZF90 eF9zZXRfdXNlZAkJQVYxX0RFQ19SRUcoNSwgNiwgMHgxKQo+ICsjZGVmaW5lIGF2MV9lbmFibGVf ZHVhbF9maWx0ZXIJCUFWMV9ERUNfUkVHKDUsIDcsIDB4MSkKPiArI2RlZmluZSBhdjFfZW5hYmxl X2pudF9jb21wCQlBVjFfREVDX1JFRyg1LCA4LCAweDEpCj4gKyNkZWZpbmUgYXYxX2FsbG93X2Zp bHRlcl9pbnRyYQkJQVYxX0RFQ19SRUcoNSwgOSwgMHgxKQo+ICsjZGVmaW5lIGF2MV9lbmFibGVf aW50cmFfZWRnZV9maWx0ZXIJQVYxX0RFQ19SRUcoNSwgMTAsIDB4MSkKPiArI2RlZmluZSBhdjFf dGVtcG9yX212cF9lCQlBVjFfREVDX1JFRyg1LCAxMSwgMHgxKQo+ICsjZGVmaW5lIGF2MV9hbGxv d19pbnRlcmludHJhCQlBVjFfREVDX1JFRyg1LCAxMiwgMHgxKQo+ICsjZGVmaW5lIGF2MV9hbGxv d19tYXNrZWRfY29tcG91bmQJQVYxX0RFQ19SRUcoNSwgMTMsIDB4MSkKPiArI2RlZmluZSBhdjFf ZW5hYmxlX2NkZWYJCQlBVjFfREVDX1JFRyg1LCAxNCwgMHgxKQo+ICsjZGVmaW5lIGF2MV9zd2l0 Y2hhYmxlX21vdGlvbl9tb2RlCUFWMV9ERUNfUkVHKDUsIDE1LCAweDEpCj4gKyNkZWZpbmUgYXYx X3Nob3dfZnJhbWUJCQlBVjFfREVDX1JFRyg1LCAxNiwgMHgxKQo+ICsjZGVmaW5lIGF2MV9zdXBl cnJlc19pc19zY2FsZWQJCUFWMV9ERUNfUkVHKDUsIDE3LCAweDEpCj4gKyNkZWZpbmUgYXYxX2Fs bG93X3dhcnAJCQlBVjFfREVDX1JFRyg1LCAxOCwgMHgxKQo+ICsjZGVmaW5lIGF2MV9kaXNhYmxl X2NkZl91cGRhdGUJCUFWMV9ERUNfUkVHKDUsIDE5LCAweDEpCj4gKyNkZWZpbmUgYXYxX3ByZXNr aXBfc2VnaWQJCUFWMV9ERUNfUkVHKDUsIDIwLCAweDEpCj4gKyNkZWZpbmUgYXYxX2RlbHRhX2xm X3ByZXNlbnQJCUFWMV9ERUNfUkVHKDUsIDIxLCAweDEpCj4gKyNkZWZpbmUgYXYxX2RlbHRhX2xm X211bHRpCQlBVjFfREVDX1JFRyg1LCAyMiwgMHgxKQo+ICsjZGVmaW5lIGF2MV9kZWx0YV9sZl9y ZXNfbG9nCQlBVjFfREVDX1JFRyg1LCAyMywgMHgzKQo+ICsjZGVmaW5lIGF2MV9zdHJtX3N0YXJ0 X2JpdAkJQVYxX0RFQ19SRUcoNSwgMjUsIDB4N2YpCj4gKwo+ICsjZGVmaW5lCWF2MV9zdHJlYW1f bGVuCQkJQVYxX0RFQ19SRUcoNiwgMCwgMHhmZmZmZmZmZikKPiArCj4gKyNkZWZpbmUgYXYxX2Rl bHRhX3FfcHJlc2VudAkJQVYxX0RFQ19SRUcoNywgMCwgMHgxKQo+ICsjZGVmaW5lIGF2MV9kZWx0 YV9xX3Jlc19sb2cJCUFWMV9ERUNfUkVHKDcsIDEsIDB4MykKPiArI2RlZmluZSBhdjFfY2RlZl9k YW1waW5nCQlBVjFfREVDX1JFRyg3LCAzLCAweDMpCj4gKyNkZWZpbmUgYXYxX2NkZWZfYml0cwkJ CUFWMV9ERUNfUkVHKDcsIDUsIDB4MykKPiArI2RlZmluZSBhdjFfYXBwbHlfZ3JhaW4JCQlBVjFf REVDX1JFRyg3LCA3LCAweDEpCj4gKyNkZWZpbmUgYXYxX251bV95X3BvaW50c19iCQlBVjFfREVD X1JFRyg3LCA4LCAweDEpCj4gKyNkZWZpbmUgYXYxX251bV9jYl9wb2ludHNfYgkJQVYxX0RFQ19S RUcoNywgOSwgMHgxKQo+ICsjZGVmaW5lIGF2MV9udW1fY3JfcG9pbnRzX2IJCUFWMV9ERUNfUkVH KDcsIDEwLCAweDEpCj4gKyNkZWZpbmUgYXYxX292ZXJsYXBfZmxhZwkJQVYxX0RFQ19SRUcoNywg MTEsIDB4MSkKPiArI2RlZmluZSBhdjFfY2xpcF90b19yZXN0cmljdGVkX3JhbmdlCUFWMV9ERUNf UkVHKDcsIDEyLCAweDEpCj4gKyNkZWZpbmUgYXYxX2Nocm9tYV9zY2FsaW5nX2Zyb21fbHVtYQlB VjFfREVDX1JFRyg3LCAxMywgMHgxKQo+ICsjZGVmaW5lIGF2MV9yYW5kb21fc2VlZAkJCUFWMV9E RUNfUkVHKDcsIDE0LCAweGZmZmYpCj4gKyNkZWZpbmUgYXYxX2JsYWNrd2hpdGVfZQkJQVYxX0RF Q19SRUcoNywgMzAsIDB4MSkKPiArCj4gKyNkZWZpbmUgYXYxX3NjYWxpbmdfc2hpZnQJCUFWMV9E RUNfUkVHKDgsIDAsIDB4ZikKPiArI2RlZmluZSBhdjFfYml0X2RlcHRoX2NfbWludXM4CQlBVjFf REVDX1JFRyg4LCA0LCAweDMpCj4gKyNkZWZpbmUgYXYxX2JpdF9kZXB0aF95X21pbnVzOAkJQVYx X0RFQ19SRUcoOCwgNiwgMHgzKQo+ICsjZGVmaW5lIGF2MV9xdWFudF9iYXNlX3FpbmRleAkJQVYx X0RFQ19SRUcoOCwgOCwgMHhmZikKPiArI2RlZmluZSBhdjFfaWRyX3BpY19lCQkJQVYxX0RFQ19S RUcoOCwgMTYsIDB4MSkKPiArI2RlZmluZSBhdjFfc3VwZXJyZXNfcGljX3dpZHRoCQlBVjFfREVD X1JFRyg4LCAxNywgMHg3ZmZmKQo+ICsKPiArI2RlZmluZSBhdjFfcmVmNF9zaWduX2JpYXMJCUFW MV9ERUNfUkVHKDksIDIsIDB4MSkKPiArI2RlZmluZSBhdjFfcmVmNV9zaWduX2JpYXMJCUFWMV9E RUNfUkVHKDksIDMsIDB4MSkKPiArI2RlZmluZSBhdjFfcmVmNl9zaWduX2JpYXMJCUFWMV9ERUNf UkVHKDksIDQsIDB4MSkKPiArI2RlZmluZSBhdjFfbWYxX3R5cGUJCQlBVjFfREVDX1JFRyg5LCA1 LCAweDcpCj4gKyNkZWZpbmUgYXYxX21mMl90eXBlCQkJQVYxX0RFQ19SRUcoOSwgOCwgMHg3KQo+ ICsjZGVmaW5lIGF2MV9tZjNfdHlwZQkJCUFWMV9ERUNfUkVHKDksIDExLCAweDcpCj4gKyNkZWZp bmUgYXYxX3NjYWxlX2Rlbm9tX21pbnVzOQkJQVYxX0RFQ19SRUcoOSwgMTQsIDB4NykKPiArI2Rl ZmluZSBhdjFfbGFzdF9hY3RpdmVfc2VnCQlBVjFfREVDX1JFRyg5LCAxNywgMHg3KQo+ICsjZGVm aW5lIGF2MV9jb250ZXh0X3VwZGF0ZV90aWxlX2lkCUFWMV9ERUNfUkVHKDksIDIwLCAweGZmZikK PiArCj4gKyNkZWZpbmUgYXYxX3RpbGVfdHJhbnNwb3NlCQlBVjFfREVDX1JFRygxMCwgMCwgMHgx KQo+ICsjZGVmaW5lIGF2MV90aWxlX2VuYWJsZQkJCUFWMV9ERUNfUkVHKDEwLCAxLCAweDEpCj4g KyNkZWZpbmUgYXYxX211bHRpY29yZV9mdWxsX3dpZHRoCUFWMV9ERUNfUkVHKDEwLAkyLCAweGZm KQo+ICsjZGVmaW5lIGF2MV9udW1fdGlsZV9yb3dzXzhrCQlBVjFfREVDX1JFRygxMCwgMTAsIDB4 N2YpCj4gKyNkZWZpbmUgYXYxX251bV90aWxlX2NvbHNfOGsJCUFWMV9ERUNfUkVHKDEwLCAxNywg MHg3ZikKPiArI2RlZmluZSBhdjFfbXVsdGljb3JlX3RpbGVfc3RhcnRfeAlBVjFfREVDX1JFRygx MCwgMjQsIDB4ZmYpCj4gKwo+ICsjZGVmaW5lIGF2MV91c2VfdGVtcG9yYWwzX212cwkJQVYxX0RF Q19SRUcoMTEsIDAsIDB4MSkKPiArI2RlZmluZSBhdjFfdXNlX3RlbXBvcmFsMl9tdnMJCUFWMV9E RUNfUkVHKDExLCAxLCAweDEpCj4gKyNkZWZpbmUgYXYxX3VzZV90ZW1wb3JhbDFfbXZzCQlBVjFf REVDX1JFRygxMSwgMiwgMHgxKQo+ICsjZGVmaW5lIGF2MV91c2VfdGVtcG9yYWwwX212cwkJQVYx X0RFQ19SRUcoMTEsIDMsIDB4MSkKPiArI2RlZmluZSBhdjFfY29tcF9wcmVkX21vZGUJCUFWMV9E RUNfUkVHKDExLCA0LCAweDMpCj4gKyNkZWZpbmUgYXYxX2hpZ2hfcHJlY19tdl9lCQlBVjFfREVD X1JFRygxMSwgNywgMHgxKQo+ICsjZGVmaW5lIGF2MV9tY29tcF9maWx0X3R5cGUJCUFWMV9ERUNf UkVHKDExLCA4LCAweDcpCj4gKyNkZWZpbmUgYXYxX211bHRpY29yZV9leHBlY3RfY29udGV4dF91 cGRhdGUJQVYxX0RFQ19SRUcoMTEsIDExLCAweDEpCj4gKyNkZWZpbmUgYXYxX211bHRpY29yZV9z Ynhfb2Zmc2V0CUFWMV9ERUNfUkVHKDExLCAxMiwgMHg3ZikKPiArI2RlZmluZSBhdjFfdWx0aWNv cmVfdGlsZV9jb2wJCUFWMV9ERUNfUkVHKDExLCAxOSwgMHg3ZikKPiArI2RlZmluZSBhdjFfdHJh bnNmb3JtX21vZGUJCUFWMV9ERUNfUkVHKDExLCAyNywgMHg3KQo+ICsjZGVmaW5lIGF2MV9kZWNf dGlsZV9zaXplX21hZwkJQVYxX0RFQ19SRUcoMTEsIDMwLCAweDMpCj4gKwo+ICsjZGVmaW5lIGF2 MV9zZWdfcXVhbnRfc2lnbgkJQVYxX0RFQ19SRUcoMTIsIDIsIDB4ZmYpCj4gKyNkZWZpbmUgYXYx X21heF9jYl9zaXplCQkJQVYxX0RFQ19SRUcoMTIsIDEwLCAweDcpCj4gKyNkZWZpbmUgYXYxX21p bl9jYl9zaXplCQkJQVYxX0RFQ19SRUcoMTIsIDEzLCAweDcpCj4gKyNkZWZpbmUgYXYxX2NvbXBf cHJlZF9maXhlZF9yZWYJCUFWMV9ERUNfUkVHKDEyLCAxNiwgMHg3KQo+ICsjZGVmaW5lIGF2MV9t dWx0aWNvcmVfdGlsZV93aWR0aAlBVjFfREVDX1JFRygxMiwgMTksIDB4N2YpCj4gKyNkZWZpbmUg YXYxX3BpY19oZWlnaHRfcGFkCQlBVjFfREVDX1JFRygxMiwgMjYsIDB4NykKPiArI2RlZmluZSBh djFfcGljX3dpZHRoX3BhZAkJQVYxX0RFQ19SRUcoMTIsIDI5LCAweDcpCj4gKwo+ICsjZGVmaW5l IGF2MV9zZWdtZW50X2UJCQlBVjFfREVDX1JFRygxMywgMCwgMHgxKQo+ICsjZGVmaW5lIGF2MV9z ZWdtZW50X3VwZF9lCQlBVjFfREVDX1JFRygxMywgMSwgMHgxKQo+ICsjZGVmaW5lIGF2MV9zZWdt ZW50X3RlbXBfdXBkX2UJCUFWMV9ERUNfUkVHKDEzLCAyLCAweDEpCj4gKyNkZWZpbmUgYXYxX2Nv bXBfcHJlZF92YXJfcmVmMF9hdjEJQVYxX0RFQ19SRUcoMTMsIDMsIDB4NykKPiArI2RlZmluZSBh djFfY29tcF9wcmVkX3Zhcl9yZWYxX2F2MQlBVjFfREVDX1JFRygxMywgNiwgMHg3KQo+ICsjZGVm aW5lIGF2MV9sb3NzbGVzc19lCQkJQVYxX0RFQ19SRUcoMTMsIDksIDB4MSkKPiArI2RlZmluZSBh djFfcXBfZGVsdGFfY2hfYWNfYXYxCQlBVjFfREVDX1JFRygxMywgMTEsIDB4N2YpCj4gKyNkZWZp bmUgYXYxX3FwX2RlbHRhX2NoX2RjX2F2MQkJQVYxX0RFQ19SRUcoMTMsIDE4LCAweDdmKQo+ICsj ZGVmaW5lIGF2MV9xcF9kZWx0YV95X2RjX2F2MQkJQVYxX0RFQ19SRUcoMTMsIDI1LCAweDdmKQo+ ICsKPiArI2RlZmluZSBhdjFfcXVhbnRfc2VnMAkJCUFWMV9ERUNfUkVHKDE0LCAwLCAweGZmKQo+ ICsjZGVmaW5lIGF2MV9maWx0X2xldmVsX3NlZzAJCUFWMV9ERUNfUkVHKDE0LCA4LCAweDNmKQo+ ICsjZGVmaW5lIGF2MV9za2lwX3NlZzAJCQlBVjFfREVDX1JFRygxNCwgMTQsIDB4MSkKPiArI2Rl ZmluZSBhdjFfcmVmcGljX3NlZzAJCQlBVjFfREVDX1JFRygxNCwgMTUsIDB4ZikKPiArI2RlZmlu ZSBhdjFfZmlsdF9sZXZlbF9kZWx0YTBfc2VnMAlBVjFfREVDX1JFRygxNCwgMTksIDB4N2YpCj4g KyNkZWZpbmUgYXYxX2ZpbHRfbGV2ZWwwCQkJQVYxX0RFQ19SRUcoMTQsIDI2LCAweDNmKQo+ICsK PiArI2RlZmluZSBhdjFfcXVhbnRfc2VnMQkJCUFWMV9ERUNfUkVHKDE1LCAwLCAweGZmKQo+ICsj ZGVmaW5lIGF2MV9maWx0X2xldmVsX3NlZzEJCUFWMV9ERUNfUkVHKDE1LCA4LCAweDNmKQo+ICsj ZGVmaW5lIGF2MV9za2lwX3NlZzEJCQlBVjFfREVDX1JFRygxNSwgMTQsIDB4MSkKPiArI2RlZmlu ZSBhdjFfcmVmcGljX3NlZzEJCQlBVjFfREVDX1JFRygxNSwgMTUsIDB4ZikKPiArI2RlZmluZSBh djFfZmlsdF9sZXZlbF9kZWx0YTBfc2VnMQlBVjFfREVDX1JFRygxNSwgMTksIDB4N2YpCj4gKyNk ZWZpbmUgYXYxX2ZpbHRfbGV2ZWwxCQkJQVYxX0RFQ19SRUcoMTUsIDI2LCAweDNmKQo+ICsKPiAr I2RlZmluZSBhdjFfcXVhbnRfc2VnMgkJCUFWMV9ERUNfUkVHKDE2LCAwLCAweGZmKQo+ICsjZGVm aW5lIGF2MV9maWx0X2xldmVsX3NlZzIJCUFWMV9ERUNfUkVHKDE2LCA4LCAweDNmKQo+ICsjZGVm aW5lIGF2MV9za2lwX3NlZzIJCQlBVjFfREVDX1JFRygxNiwgMTQsIDB4MSkKPiArI2RlZmluZSBh djFfcmVmcGljX3NlZzIJCQlBVjFfREVDX1JFRygxNiwgMTUsIDB4ZikKPiArI2RlZmluZSBhdjFf ZmlsdF9sZXZlbF9kZWx0YTBfc2VnMglBVjFfREVDX1JFRygxNiwgMTksIDB4N2YpCj4gKyNkZWZp bmUgYXYxX2ZpbHRfbGV2ZWwyCQkJQVYxX0RFQ19SRUcoMTYsIDI2LCAweDNmKQo+ICsKPiArI2Rl ZmluZSBhdjFfcXVhbnRfc2VnMwkJCUFWMV9ERUNfUkVHKDE3LCAwLCAweGZmKQo+ICsjZGVmaW5l IGF2MV9maWx0X2xldmVsX3NlZzMJCUFWMV9ERUNfUkVHKDE3LCA4LCAweDNmKQo+ICsjZGVmaW5l IGF2MV9za2lwX3NlZzMJCQlBVjFfREVDX1JFRygxNywgMTQsIDB4MSkKPiArI2RlZmluZSBhdjFf cmVmcGljX3NlZzMJCQlBVjFfREVDX1JFRygxNywgMTUsIDB4ZikKPiArI2RlZmluZSBhdjFfZmls dF9sZXZlbF9kZWx0YTBfc2VnMwlBVjFfREVDX1JFRygxNywgMTksIDB4N2YpCj4gKyNkZWZpbmUg YXYxX2ZpbHRfbGV2ZWwzCQkJQVYxX0RFQ19SRUcoMTcsIDI2LCAweDNmKQo+ICsKPiArI2RlZmlu ZSBhdjFfcXVhbnRfc2VnNAkJCUFWMV9ERUNfUkVHKDE4LCAwLCAweGZmKQo+ICsjZGVmaW5lIGF2 MV9maWx0X2xldmVsX3NlZzQJCUFWMV9ERUNfUkVHKDE4LCA4LCAweDNmKQo+ICsjZGVmaW5lIGF2 MV9za2lwX3NlZzQJCQlBVjFfREVDX1JFRygxOCwgMTQsIDB4MSkKPiArI2RlZmluZSBhdjFfcmVm cGljX3NlZzQJCQlBVjFfREVDX1JFRygxOCwgMTUsIDB4ZikKPiArI2RlZmluZSBhdjFfZmlsdF9s ZXZlbF9kZWx0YTBfc2VnNAlBVjFfREVDX1JFRygxOCwgMTksIDB4N2YpCj4gKyNkZWZpbmUgYXYx X2xyX3R5cGUJCQlBVjFfREVDX1JFRygxOCwgMjYsIDB4M2YpCj4gKwo+ICsjZGVmaW5lIGF2MV9x dWFudF9zZWc1CQkJQVYxX0RFQ19SRUcoMTksIDAsIDB4ZmYpCj4gKyNkZWZpbmUgYXYxX2ZpbHRf bGV2ZWxfc2VnNQkJQVYxX0RFQ19SRUcoMTksIDgsIDB4M2YpCj4gKyNkZWZpbmUgYXYxX3NraXBf c2VnNQkJCUFWMV9ERUNfUkVHKDE5LCAxNCwgMHgxKQo+ICsjZGVmaW5lIGF2MV9yZWZwaWNfc2Vn NQkJCUFWMV9ERUNfUkVHKDE5LCAxNSwgMHhmKQo+ICsjZGVmaW5lIGF2MV9maWx0X2xldmVsX2Rl bHRhMF9zZWc1CUFWMV9ERUNfUkVHKDE5LCAxOSwgMHg3ZikKPiArI2RlZmluZSBhdjFfbHJfdW5p dF9zaXplCQlBVjFfREVDX1JFRygxOSwgMjYsIDB4M2YpCj4gKwo+ICsjZGVmaW5lIGF2MV9maWx0 X2xldmVsX2RlbHRhMV9zZWcwCUFWMV9ERUNfUkVHKDIwLCAwLCAweDdmKQo+ICsjZGVmaW5lIGF2 MV9maWx0X2xldmVsX2RlbHRhMl9zZWcwCUFWMV9ERUNfUkVHKDIwLCA3LCAweDdmKQo+ICsjZGVm aW5lIGF2MV9maWx0X2xldmVsX2RlbHRhM19zZWcwCUFWMV9ERUNfUkVHKDIwLCAxNCwgMHg3ZikK PiArI2RlZmluZSBhdjFfZ2xvYmFsX212X3NlZzAJCUFWMV9ERUNfUkVHKDIwLCAyMSwgMHgxKQo+ ICsjZGVmaW5lIGF2MV9tZjFfbGFzdF9vZmZzZXQJCUFWMV9ERUNfUkVHKDIwLCAyMiwgMHgxZmYp Cj4gKwo+ICsjZGVmaW5lIGF2MV9maWx0X2xldmVsX2RlbHRhMV9zZWcxCUFWMV9ERUNfUkVHKDIx LCAwLCAweDdmKQo+ICsjZGVmaW5lIGF2MV9maWx0X2xldmVsX2RlbHRhMl9zZWcxCUFWMV9ERUNf UkVHKDIxLCA3LCAweDdmKQo+ICsjZGVmaW5lIGF2MV9maWx0X2xldmVsX2RlbHRhM19zZWcxCUFW MV9ERUNfUkVHKDIxLCAxNCwgMHg3ZikKPiArI2RlZmluZSBhdjFfZ2xvYmFsX212X3NlZzEJCUFW MV9ERUNfUkVHKDIxLCAyMSwgMHgxKQo+ICsjZGVmaW5lIGF2MV9tZjFfbGFzdDJfb2Zmc2V0CQlB VjFfREVDX1JFRygyMSwgMjIsIDB4MWZmKQo+ICsKPiArI2RlZmluZSBhdjFfZmlsdF9sZXZlbF9k ZWx0YTFfc2VnMglBVjFfREVDX1JFRygyMiwgMCwgMHg3ZikKPiArI2RlZmluZSBhdjFfZmlsdF9s ZXZlbF9kZWx0YTJfc2VnMglBVjFfREVDX1JFRygyMiwgNywgMHg3ZikKPiArI2RlZmluZSBhdjFf ZmlsdF9sZXZlbF9kZWx0YTNfc2VnMglBVjFfREVDX1JFRygyMiwgMTQsIDB4N2YpCj4gKyNkZWZp bmUgYXYxX2dsb2JhbF9tdl9zZWcyCQlBVjFfREVDX1JFRygyMiwgMjEsIDB4MSkKPiArI2RlZmlu ZSBhdjFfbWYxX2xhc3QzX29mZnNldAkJQVYxX0RFQ19SRUcoMjIsIDIyLCAweDFmZikKPiArCj4g KyNkZWZpbmUgYXYxX2ZpbHRfbGV2ZWxfZGVsdGExX3NlZzMJQVYxX0RFQ19SRUcoMjMsIDAsIDB4 N2YpCj4gKyNkZWZpbmUgYXYxX2ZpbHRfbGV2ZWxfZGVsdGEyX3NlZzMJQVYxX0RFQ19SRUcoMjMs IDcsIDB4N2YpCj4gKyNkZWZpbmUgYXYxX2ZpbHRfbGV2ZWxfZGVsdGEzX3NlZzMJQVYxX0RFQ19S RUcoMjMsIDE0LCAweDdmKQo+ICsjZGVmaW5lIGF2MV9nbG9iYWxfbXZfc2VnMwkJQVYxX0RFQ19S RUcoMjMsIDIxLCAweDEpCj4gKyNkZWZpbmUgYXYxX21mMV9nb2xkZW5fb2Zmc2V0CQlBVjFfREVD X1JFRygyMywgMjIsIDB4MWZmKQo+ICsKPiArI2RlZmluZSBhdjFfZmlsdF9sZXZlbF9kZWx0YTFf c2VnNAlBVjFfREVDX1JFRygyNCwgMCwgMHg3ZikKPiArI2RlZmluZSBhdjFfZmlsdF9sZXZlbF9k ZWx0YTJfc2VnNAlBVjFfREVDX1JFRygyNCwgNywgMHg3ZikKPiArI2RlZmluZSBhdjFfZmlsdF9s ZXZlbF9kZWx0YTNfc2VnNAlBVjFfREVDX1JFRygyNCwgMTQsIDB4N2YpCj4gKyNkZWZpbmUgYXYx X2dsb2JhbF9tdl9zZWc0CQlBVjFfREVDX1JFRygyNCwgMjEsIDB4MSkKPiArI2RlZmluZSBhdjFf bWYxX2J3ZHJlZl9vZmZzZXQJCUFWMV9ERUNfUkVHKDI0LCAyMiwgMHgxZmYpCj4gKwo+ICsjZGVm aW5lIGF2MV9maWx0X2xldmVsX2RlbHRhMV9zZWc1CUFWMV9ERUNfUkVHKDI1LCAwLCAweDdmKQo+ ICsjZGVmaW5lIGF2MV9maWx0X2xldmVsX2RlbHRhMl9zZWc1CUFWMV9ERUNfUkVHKDI1LCA3LCAw eDdmKQo+ICsjZGVmaW5lIGF2MV9maWx0X2xldmVsX2RlbHRhM19zZWc1CUFWMV9ERUNfUkVHKDI1 LCAxNCwgMHg3ZikKPiArI2RlZmluZSBhdjFfZ2xvYmFsX212X3NlZzUJCUFWMV9ERUNfUkVHKDI1 LCAyMSwgMHgxKQo+ICsjZGVmaW5lIGF2MV9tZjFfYWx0cmVmMl9vZmZzZXQJCUFWMV9ERUNfUkVH KDI1LCAyMiwgMHgxZmYpCj4gKwo+ICsjZGVmaW5lIGF2MV9maWx0X2xldmVsX2RlbHRhMV9zZWc2 CUFWMV9ERUNfUkVHKDI2LCAwLCAweDdmKQo+ICsjZGVmaW5lIGF2MV9maWx0X2xldmVsX2RlbHRh Ml9zZWc2CUFWMV9ERUNfUkVHKDI2LCA3LCAweDdmKQo+ICsjZGVmaW5lIGF2MV9maWx0X2xldmVs X2RlbHRhM19zZWc2CUFWMV9ERUNfUkVHKDI2LCAxNCwgMHg3ZikKPiArI2RlZmluZSBhdjFfZ2xv YmFsX212X3NlZzYJCUFWMV9ERUNfUkVHKDI2LCAyMSwgMHgxKQo+ICsjZGVmaW5lIGF2MV9tZjFf YWx0cmVmX29mZnNldAkJQVYxX0RFQ19SRUcoMjYsIDIyLCAweDFmZikKPiArCj4gKyNkZWZpbmUg YXYxX2ZpbHRfbGV2ZWxfZGVsdGExX3NlZzcJQVYxX0RFQ19SRUcoMjcsIDAsIDB4N2YpCj4gKyNk ZWZpbmUgYXYxX2ZpbHRfbGV2ZWxfZGVsdGEyX3NlZzcJQVYxX0RFQ19SRUcoMjcsIDcsIDB4N2Yp Cj4gKyNkZWZpbmUgYXYxX2ZpbHRfbGV2ZWxfZGVsdGEzX3NlZzcJQVYxX0RFQ19SRUcoMjcsIDE0 LCAweDdmKQo+ICsjZGVmaW5lIGF2MV9nbG9iYWxfbXZfc2VnNwkJQVYxX0RFQ19SRUcoMjcsIDIx LCAweDEpCj4gKyNkZWZpbmUgYXYxX21mMl9sYXN0X29mZnNldAkJQVYxX0RFQ19SRUcoMjcsIDIy LCAweDFmZikKPiArCj4gKyNkZWZpbmUgYXYxX2NiX29mZnNldAkJCUFWMV9ERUNfUkVHKDI4LCAw LCAweDFmZikKPiArI2RlZmluZSBhdjFfY2JfbHVtYV9tdWx0CQlBVjFfREVDX1JFRygyOCwgOSwg MHhmZikKPiArI2RlZmluZSBhdjFfY2JfbXVsdAkJCUFWMV9ERUNfUkVHKDI4LCAxNywgMHhmZikK PiArI2RlZmluZQlhdjFfcXVhbnRfZGVsdGFfdl9kYwkJQVYxX0RFQ19SRUcoMjgsIDI1LCAweDdm KQo+ICsKPiArI2RlZmluZSBhdjFfY3Jfb2Zmc2V0CQkJQVYxX0RFQ19SRUcoMjksIDAsIDB4MWZm KQo+ICsjZGVmaW5lIGF2MV9jcl9sdW1hX211bHQJCUFWMV9ERUNfUkVHKDI5LCA5LCAweGZmKQo+ ICsjZGVmaW5lIGF2MV9jcl9tdWx0CQkJQVYxX0RFQ19SRUcoMjksIDE3LCAweGZmKQo+ICsjZGVm aW5lCWF2MV9xdWFudF9kZWx0YV92X2FjCQlBVjFfREVDX1JFRygyOSwgMjUsIDB4N2YpCj4gKwo+ ICsjZGVmaW5lIGF2MV9maWx0X3JlZl9hZGpfNQkJQVYxX0RFQ19SRUcoMzAsIDAsIDB4N2YpCj4g KyNkZWZpbmUgYXYxX2ZpbHRfcmVmX2Fkal80CQlBVjFfREVDX1JFRygzMCwgNywgMHg3ZikKPiAr I2RlZmluZSBhdjFfZmlsdF9tYl9hZGpfMQkJQVYxX0RFQ19SRUcoMzAsIDE0LCAweDdmKQo+ICsj ZGVmaW5lIGF2MV9maWx0X21iX2Fkal8wCQlBVjFfREVDX1JFRygzMCwgMjEsIDB4N2YpCj4gKyNk ZWZpbmUgYXYxX2ZpbHRfc2hhcnBuZXNzCQlBVjFfREVDX1JFRygzMCwgMjgsIDB4NykKPiArCj4g KyNkZWZpbmUgYXYxX3F1YW50X3NlZzYJCQlBVjFfREVDX1JFRygzMSwgMCwgMHhmZikKPiArI2Rl ZmluZSBhdjFfZmlsdF9sZXZlbF9zZWc2CQlBVjFfREVDX1JFRygzMSwgOCwgMHgzZikKPiArI2Rl ZmluZSBhdjFfc2tpcF9zZWc2CQkJQVYxX0RFQ19SRUcoMzEsIDE0LCAweDEpCj4gKyNkZWZpbmUg YXYxX3JlZnBpY19zZWc2CQkJQVYxX0RFQ19SRUcoMzEsIDE1LCAweGYpCj4gKyNkZWZpbmUgYXYx X2ZpbHRfbGV2ZWxfZGVsdGEwX3NlZzYJQVYxX0RFQ19SRUcoMzEsIDE5LCAweDdmKQo+ICsjZGVm aW5lIGF2MV9za2lwX3JlZjAJCQlBVjFfREVDX1JFRygzMSwgMjYsIDB4ZikKPiArCj4gKyNkZWZp bmUgYXYxX3F1YW50X3NlZzcJCQlBVjFfREVDX1JFRygzMiwgMCwgMHhmZikKPiArI2RlZmluZSBh djFfZmlsdF9sZXZlbF9zZWc3CQlBVjFfREVDX1JFRygzMiwgOCwgMHgzZikKPiArI2RlZmluZSBh djFfc2tpcF9zZWc3CQkJQVYxX0RFQ19SRUcoMzIsIDE0LCAweDEpCj4gKyNkZWZpbmUgYXYxX3Jl ZnBpY19zZWc3CQkJQVYxX0RFQ19SRUcoMzIsIDE1LCAweGYpCj4gKyNkZWZpbmUgYXYxX2ZpbHRf bGV2ZWxfZGVsdGEwX3NlZzcJQVYxX0RFQ19SRUcoMzIsIDE5LCAweDdmKQo+ICsjZGVmaW5lIGF2 MV9za2lwX3JlZjEJCQlBVjFfREVDX1JFRygzMiwgMjYsIDB4ZikKPiArCj4gKyNkZWZpbmUgYXYx X3JlZjBfaGVpZ2h0CQkJQVYxX0RFQ19SRUcoMzMsIDAsIDB4ZmZmZikKPiArI2RlZmluZSBhdjFf cmVmMF93aWR0aAkJCUFWMV9ERUNfUkVHKDMzLCAxNiwgMHhmZmZmKQo+ICsKPiArI2RlZmluZSBh djFfcmVmMV9oZWlnaHQJCQlBVjFfREVDX1JFRygzNCwgMCwgMHhmZmZmKQo+ICsjZGVmaW5lIGF2 MV9yZWYxX3dpZHRoCQkJQVYxX0RFQ19SRUcoMzQsIDE2LCAweGZmZmYpCj4gKwo+ICsjZGVmaW5l IGF2MV9yZWYyX2hlaWdodAkJCUFWMV9ERUNfUkVHKDM1LCAwLCAweGZmZmYpCj4gKyNkZWZpbmUg YXYxX3JlZjJfd2lkdGgJCQlBVjFfREVDX1JFRygzNSwgMTYsIDB4ZmZmZikKPiArCj4gKyNkZWZp bmUgYXYxX3JlZjBfdmVyX3NjYWxlCQlBVjFfREVDX1JFRygzNiwgMCwgMHhmZmZmKQo+ICsjZGVm aW5lIGF2MV9yZWYwX2hvcl9zY2FsZQkJQVYxX0RFQ19SRUcoMzYsIDE2LCAweGZmZmYpCj4gKwo+ ICsjZGVmaW5lIGF2MV9yZWYxX3Zlcl9zY2FsZQkJQVYxX0RFQ19SRUcoMzcsIDAsIDB4ZmZmZikK PiArI2RlZmluZSBhdjFfcmVmMV9ob3Jfc2NhbGUJCUFWMV9ERUNfUkVHKDM3LCAxNiwgMHhmZmZm KQo+ICsKPiArI2RlZmluZSBhdjFfcmVmMl92ZXJfc2NhbGUJCUFWMV9ERUNfUkVHKDM4LCAwLCAw eGZmZmYpCj4gKyNkZWZpbmUgYXYxX3JlZjJfaG9yX3NjYWxlCQlBVjFfREVDX1JFRygzOCwgMTYs IDB4ZmZmZikKPiArCj4gKyNkZWZpbmUgYXYxX3JlZjNfdmVyX3NjYWxlCQlBVjFfREVDX1JFRygz OSwgMCwgMHhmZmZmKQo+ICsjZGVmaW5lIGF2MV9yZWYzX2hvcl9zY2FsZQkJQVYxX0RFQ19SRUco MzksIDE2LCAweGZmZmYpCj4gKwo+ICsjZGVmaW5lIGF2MV9yZWY0X3Zlcl9zY2FsZQkJQVYxX0RF Q19SRUcoNDAsIDAsIDB4ZmZmZikKPiArI2RlZmluZSBhdjFfcmVmNF9ob3Jfc2NhbGUJCUFWMV9E RUNfUkVHKDQwLCAxNiwgMHhmZmZmKQo+ICsKPiArI2RlZmluZSBhdjFfcmVmNV92ZXJfc2NhbGUJ CUFWMV9ERUNfUkVHKDQxLCAwLCAweGZmZmYpCj4gKyNkZWZpbmUgYXYxX3JlZjVfaG9yX3NjYWxl CQlBVjFfREVDX1JFRyg0MSwgMTYsIDB4ZmZmZikKPiArCj4gKyNkZWZpbmUgYXYxX3JlZjZfdmVy X3NjYWxlCQlBVjFfREVDX1JFRyg0MiwgMCwgMHhmZmZmKQo+ICsjZGVmaW5lIGF2MV9yZWY2X2hv cl9zY2FsZQkJQVYxX0RFQ19SRUcoNDIsIDE2LCAweGZmZmYpCj4gKwo+ICsjZGVmaW5lIGF2MV9y ZWYzX2hlaWdodAkJCUFWMV9ERUNfUkVHKDQzLCAwLCAweGZmZmYpCj4gKyNkZWZpbmUgYXYxX3Jl ZjNfd2lkdGgJCQlBVjFfREVDX1JFRyg0MywgMTYsIDB4ZmZmZikKPiArCj4gKyNkZWZpbmUgYXYx X3JlZjRfaGVpZ2h0CQkJQVYxX0RFQ19SRUcoNDQsIDAsIDB4ZmZmZikKPiArI2RlZmluZSBhdjFf cmVmNF93aWR0aAkJCUFWMV9ERUNfUkVHKDQ0LCAxNiwgMHhmZmZmKQo+ICsKPiArI2RlZmluZSBh djFfcmVmNV9oZWlnaHQJCQlBVjFfREVDX1JFRyg0NSwgMCwgMHhmZmZmKQo+ICsjZGVmaW5lIGF2 MV9yZWY1X3dpZHRoCQkJQVYxX0RFQ19SRUcoNDUsIDE2LCAweGZmZmYpCj4gKwo+ICsjZGVmaW5l IGF2MV9yZWY2X2hlaWdodAkJCUFWMV9ERUNfUkVHKDQ2LCAwLCAweGZmZmYpCj4gKyNkZWZpbmUg YXYxX3JlZjZfd2lkdGgJCQlBVjFfREVDX1JFRyg0NiwgMTYsIDB4ZmZmZikKPiArCj4gKyNkZWZp bmUgYXYxX21mMl9sYXN0Ml9vZmZzZXQJCUFWMV9ERUNfUkVHKDQ3LCAwLCAweDFmZikKPiArI2Rl ZmluZSBhdjFfbWYyX2xhc3QzX29mZnNldAkJQVYxX0RFQ19SRUcoNDcsIDksIDB4MWZmKQo+ICsj ZGVmaW5lIGF2MV9tZjJfZ29sZGVuX29mZnNldAkJQVYxX0RFQ19SRUcoNDcsIDE4LCAweDFmZikK PiArI2RlZmluZSBhdjFfcW1sZXZlbF95CQkJQVYxX0RFQ19SRUcoNDcsIDI3LCAweGYpCj4gKwo+ ICsjZGVmaW5lIGF2MV9tZjJfYndkcmVmX29mZnNldAkJQVYxX0RFQ19SRUcoNDgsIDAsIDB4MWZm KQo+ICsjZGVmaW5lIGF2MV9tZjJfYWx0cmVmMl9vZmZzZXQJCUFWMV9ERUNfUkVHKDQ4LCA5LCAw eDFmZikKPiArI2RlZmluZSBhdjFfbWYyX2FsdHJlZl9vZmZzZXQJCUFWMV9ERUNfUkVHKDQ4LCAx OCwgMHgxZmYpCj4gKyNkZWZpbmUgYXYxX3FtbGV2ZWxfdQkJCUFWMV9ERUNfUkVHKDQ4LCAyNywg MHhmKQo+ICsKPiArI2RlZmluZSBhdjFfZmlsdF9yZWZfYWRqXzYJCUFWMV9ERUNfUkVHKDQ5LCAw LCAweDdmKQo+ICsjZGVmaW5lIGF2MV9maWx0X3JlZl9hZGpfNwkJQVYxX0RFQ19SRUcoNDksIDcs IDB4N2YpCj4gKyNkZWZpbmUgYXYxX3FtbGV2ZWxfdgkJCUFWMV9ERUNfUkVHKDQ5LCAxNCwgMHhm KQo+ICsKPiArI2RlZmluZSBhdjFfc3VwZXJyZXNfY2hyb21hX3N0ZXAJQVYxX0RFQ19SRUcoNTEs IDAsIDB4M2ZmZikKPiArI2RlZmluZSBhdjFfc3VwZXJyZXNfbHVtYV9zdGVwCQlBVjFfREVDX1JF Ryg1MSwgMTQsIDB4M2ZmZikKPiArCj4gKyNkZWZpbmUgYXYxX3N1cGVycmVzX2luaXRfY2hyb21h X3N1YnBlbF94CUFWMV9ERUNfUkVHKDUyLCAwLCAweDNmZmYpCj4gKyNkZWZpbmUgYXYxX3N1cGVy cmVzX2luaXRfbHVtYV9zdWJwZWxfeAkJQVYxX0RFQ19SRUcoNTIsIDE0LCAweDNmZmYpCj4gKwo+ ICsjZGVmaW5lIGF2MV9jZGVmX2Nocm9tYV9zZWNvbmRhcnlfc3RyZW5ndGgJQVYxX0RFQ19SRUco NTMsIDAsIDB4ZmZmZikKPiArI2RlZmluZSBhdjFfY2RlZl9sdW1hX3NlY29uZGFyeV9zdHJlbmd0 aAlBVjFfREVDX1JFRyg1MywgMTYsIDB4ZmZmZikKPiArCj4gKyNkZWZpbmUgYXYxX2FwZl90aHJl c2hvbGQJCUFWMV9ERUNfUkVHKDU1LCAwLCAweGZmZmYpCj4gKyNkZWZpbmUgYXYxX2FwZl9zaW5n bGVfcHVfbW9kZQkJQVYxX0RFQ19SRUcoNTUsIDMwLCAweDEpCj4gKyNkZWZpbmUgYXYxX2FwZl9k aXNhYmxlCQkJQVYxX0RFQ19SRUcoNTUsIDMwLCAweDEpCj4gKwo+ICsjZGVmaW5lIGF2MV9kZWNf bWF4X2J1cnN0CQlBVjFfREVDX1JFRyg1OCwgMCwgMHhmZikKPiArI2RlZmluZSBhdjFfZGVjX2J1 c3dpZHRoCQlBVjFfREVDX1JFRyg1OCwgOCwgMHg3KQo+ICsjZGVmaW5lIGF2MV9kZWNfbXVsdGlj b3JlX21vZGUJCUFWMV9ERUNfUkVHKDU4LCAxMSwgMHgzKQo+ICsjZGVmaW5lIGF2MV9kZWNfYXhp X3dkX2lkX2UJCUFWMV9ERUNfUkVHKDU4LAkxMywgMHgxKQo+ICsjZGVmaW5lIGF2MV9kZWNfYXhp X3JkX2lkX2UJCUFWMV9ERUNfUkVHKDU4LCAxNCwgMHgxKQo+ICsjZGVmaW5lIGF2MV9kZWNfbWNf cG9sbHRpbWUJCUFWMV9ERUNfUkVHKDU4LCAxNywgMHgzZmYpCj4gKyNkZWZpbmUgYXYxX2RlY19t Y19wb2xsbW9kZQkJQVYxX0RFQ19SRUcoNTgsCTI3LCAweDMpCj4gKwo+ICsjZGVmaW5lIGF2MV9m aWx0X3JlZl9hZGpfMwkJQVYxX0RFQ19SRUcoNTksIDAsIDB4M2YpCj4gKyNkZWZpbmUgYXYxX2Zp bHRfcmVmX2Fkal8yCQlBVjFfREVDX1JFRyg1OSwgNywgMHgzZikKPiArI2RlZmluZSBhdjFfZmls dF9yZWZfYWRqXzEJCUFWMV9ERUNfUkVHKDU5LCAxNCwgMHgzZikKPiArI2RlZmluZSBhdjFfZmls dF9yZWZfYWRqXzAJCUFWMV9ERUNfUkVHKDU5LCAyMSwgMHgzZikKPiArI2RlZmluZSBhdjFfcmVm MF9zaWduX2JpYXMJCUFWMV9ERUNfUkVHKDU5LCAyOCwgMHgxKQo+ICsjZGVmaW5lIGF2MV9yZWYx X3NpZ25fYmlhcwkJQVYxX0RFQ19SRUcoNTksIDI5LCAweDEpCj4gKyNkZWZpbmUgYXYxX3JlZjJf c2lnbl9iaWFzCQlBVjFfREVDX1JFRyg1OSwgMzAsIDB4MSkKPiArI2RlZmluZSBhdjFfcmVmM19z aWduX2JpYXMJCUFWMV9ERUNfUkVHKDU5LCAzMSwgMHgxKQo+ICsKPiArI2RlZmluZSBhdjFfY3Vy X2xhc3Rfcm9mZnNldAkJQVYxX0RFQ19SRUcoMTg0LCAwLCAweDFmZikKPiArI2RlZmluZSBhdjFf Y3VyX2xhc3Rfb2Zmc2V0CQlBVjFfREVDX1JFRygxODQsIDksIDB4MWZmKQo+ICsjZGVmaW5lIGF2 MV9tZjNfbGFzdF9vZmZzZXQJCUFWMV9ERUNfUkVHKDE4NCwgMTgsIDB4MWZmKQo+ICsjZGVmaW5l IGF2MV9yZWYwX2dtX21vZGUJCUFWMV9ERUNfUkVHKDE4NCwgMjcsIDB4MykKPiArCj4gKyNkZWZp bmUgYXYxX2N1cl9sYXN0Ml9yb2Zmc2V0CQlBVjFfREVDX1JFRygxODUsIDAsIDB4MWZmKQo+ICsj ZGVmaW5lIGF2MV9jdXJfbGFzdDJfb2Zmc2V0CQlBVjFfREVDX1JFRygxODUsIDksIDB4MWZmKQo+ ICsjZGVmaW5lIGF2MV9tZjNfbGFzdDJfb2Zmc2V0CQlBVjFfREVDX1JFRygxODUsIDE4LCAweDFm ZikKPiArI2RlZmluZSBhdjFfcmVmMV9nbV9tb2RlCQlBVjFfREVDX1JFRygxODUsIDI3LCAweDMp Cj4gKwo+ICsjZGVmaW5lIGF2MV9jdXJfbGFzdDNfcm9mZnNldAkJQVYxX0RFQ19SRUcoMTg2LCAw LCAweDFmZikKPiArI2RlZmluZSBhdjFfY3VyX2xhc3QzX29mZnNldAkJQVYxX0RFQ19SRUcoMTg2 LCA5LCAweDFmZikKPiArI2RlZmluZSBhdjFfbWYzX2xhc3QzX29mZnNldAkJQVYxX0RFQ19SRUco MTg2LCAxOCwgMHgxZmYpCj4gKyNkZWZpbmUgYXYxX3JlZjJfZ21fbW9kZQkJQVYxX0RFQ19SRUco MTg2LCAyNywgMHgzKQo+ICsKPiArI2RlZmluZSBhdjFfY3VyX2dvbGRlbl9yb2Zmc2V0CQlBVjFf REVDX1JFRygxODcsIDAsIDB4MWZmKQo+ICsjZGVmaW5lIGF2MV9jdXJfZ29sZGVuX29mZnNldAkJ QVYxX0RFQ19SRUcoMTg3LCA5LCAweDFmZikKPiArI2RlZmluZSBhdjFfbWYzX2dvbGRlbl9vZmZz ZXQJCUFWMV9ERUNfUkVHKDE4NywgMTgsIDB4MWZmKQo+ICsjZGVmaW5lIGF2MV9yZWYzX2dtX21v ZGUJCUFWMV9ERUNfUkVHKDE4NywgMjcsIDB4MykKPiArCj4gKyNkZWZpbmUgYXYxX2N1cl9id2Ry ZWZfcm9mZnNldAkJQVYxX0RFQ19SRUcoMTg4LCAwLCAweDFmZikKPiArI2RlZmluZSBhdjFfY3Vy X2J3ZHJlZl9vZmZzZXQJCUFWMV9ERUNfUkVHKDE4OCwgOSwgMHgxZmYpCj4gKyNkZWZpbmUgYXYx X21mM19id2RyZWZfb2Zmc2V0CQlBVjFfREVDX1JFRygxODgsIDE4LCAweDFmZikKPiArI2RlZmlu ZSBhdjFfcmVmNF9nbV9tb2RlCQlBVjFfREVDX1JFRygxODgsIDI3LCAweDMpCj4gKwo+ICsjZGVm aW5lIGF2MV9jdXJfYWx0cmVmMl9yb2Zmc2V0CQlBVjFfREVDX1JFRygyNTcsIDAsIDB4MWZmKQo+ ICsjZGVmaW5lIGF2MV9jdXJfYWx0cmVmMl9vZmZzZXQJCUFWMV9ERUNfUkVHKDI1NywgOSwgMHgx ZmYpCj4gKyNkZWZpbmUgYXYxX21mM19hbHRyZWYyX29mZnNldAkJQVYxX0RFQ19SRUcoMjU3LCAx OCwgMHgxZmYpCj4gKyNkZWZpbmUgYXYxX3JlZjVfZ21fbW9kZQkJQVYxX0RFQ19SRUcoMjU3LCAy NywgMHgzKQo+ICsKPiArI2RlZmluZSBhdjFfc3RybV9idWZmZXJfbGVuCQlBVjFfREVDX1JFRygy NTgsIDAsIDB4ZmZmZmZmZmYpCj4gKwo+ICsjZGVmaW5lIGF2MV9zdHJtX3N0YXJ0X29mZnNldAkJ QVYxX0RFQ19SRUcoMjU5LCAwLCAweGZmZmZmZmZmKQo+ICsKPiArI2RlZmluZSBhdjFfcHBkX2Js ZW5kX2V4aXN0CQlBVjFfREVDX1JFRygyNjAsIDIxLCAweDEpCj4gKyNkZWZpbmUgYXYxX3BwZF9k aXRoX2V4aXN0CQlBVjFfREVDX1JFRygyNjAsIDIzLCAweDEpCj4gKyNkZWZpbmUgYXYxX2FibGVu ZF9jcm9wX2UJCUFWMV9ERUNfUkVHKDI2MCwgMjQsIDB4MSkKPiArI2RlZmluZSBhdjFfcHBfZm9y bWF0X3AwMTBfZQkJQVYxX0RFQ19SRUcoMjYwLCAyNSwgMHgxKQo+ICsjZGVmaW5lIGF2MV9wcF9m b3JtYXRfY3VzdG9tZXIxX2UJQVYxX0RFQ19SRUcoMjYwLCAyNiwgMHgxKQo+ICsjZGVmaW5lIGF2 MV9wcF9jcm9wX2V4aXN0CQlBVjFfREVDX1JFRygyNjAsIDI3LCAweDEpCj4gKyNkZWZpbmUgYXYx X3BwX3VwX2xldmVsCQkJQVYxX0RFQ19SRUcoMjYwLCAyOCwgMHgxKQo+ICsjZGVmaW5lIGF2MV9w cF9kb3duX2xldmVsCQlBVjFfREVDX1JFRygyNjAsIDI5LCAweDMpCj4gKyNkZWZpbmUgYXYxX3Bw X2V4aXN0CQkJQVYxX0RFQ19SRUcoMjYwLCAzMSwgMHgxKQo+ICsKPiArI2RlZmluZSBhdjFfY3Vy X2FsdHJlZl9yb2Zmc2V0CQlBVjFfREVDX1JFRygyNjIsIDAsIDB4MWZmKQo+ICsjZGVmaW5lIGF2 MV9jdXJfYWx0cmVmX29mZnNldAkJQVYxX0RFQ19SRUcoMjYyLCA5LCAweDFmZikKPiArI2RlZmlu ZSBhdjFfbWYzX2FsdHJlZl9vZmZzZXQJCUFWMV9ERUNfUkVHKDI2MiwgMTgsIDB4MWZmKQo+ICsj ZGVmaW5lIGF2MV9yZWY2X2dtX21vZGUJCUFWMV9ERUNfUkVHKDI2MiwgMjcsIDB4MykKPiArCj4g KyNkZWZpbmUgYXYxX2NkZWZfbHVtYV9wcmltYXJ5X3N0cmVuZ3RoCUFWMV9ERUNfUkVHKDI2Mywg MCwgMHhmZmZmZmZmZikKPiArCj4gKyNkZWZpbmUgYXYxX2NkZWZfY2hyb21hX3ByaW1hcnlfc3Ry ZW5ndGggQVYxX0RFQ19SRUcoMjY0LCAwLCAweGZmZmZmZmZmKQo+ICsKPiArI2RlZmluZSBhdjFf YXhpX2FycW9zCQkJQVYxX0RFQ19SRUcoMjY1LCAwLCAweGYpCj4gKyNkZWZpbmUgYXYxX2F4aV9h d3FvcwkJCUFWMV9ERUNfUkVHKDI2NSwgNCwgMHhmKQo+ICsjZGVmaW5lIGF2MV9heGlfd3Jfb3N0 ZF90aHJlc2hvbGQJQVYxX0RFQ19SRUcoMjY1LCA4LCAweDNmZikKPiArI2RlZmluZSBhdjFfYXhp X3JkX29zdGRfdGhyZXNob2xkCUFWMV9ERUNfUkVHKDI2NSwgMTgsIDB4M2ZmKQo+ICsjZGVmaW5l IGF2MV9heGlfd3JfNGtfZGlzCQlBVjFfREVDX1JFRygyNjUsIDMxLCAweDEpCj4gKwo+ICsjZGVm aW5lIGF2MV8xMjhiaXRfbW9kZQkJCUFWMV9ERUNfUkVHKDI2NiwgNSwgMHgxKQo+ICsjZGVmaW5l IGF2MV93cl9zaGFwZXJfYnlwYXNzCQlBVjFfREVDX1JFRygyNjYsIDEwLCAweDEpCj4gKyNkZWZp bmUgYXYxX2Vycm9yX2NvbmNlYWxfZQkJQVYxX0RFQ19SRUcoMjY2LCAzMCwgMHgxKQo+ICsKPiAr I2RlZmluZSBhdjFfc3VwZXJyZXNfY2hyb21hX3N0ZXBfaW52cmEJQVYxX0RFQ19SRUcoMjk4LCAw LCAweGZmZmYpCj4gKyNkZWZpbmUgYXYxX3N1cGVycmVzX2x1bWFfc3RlcF9pbnZyYQlBVjFfREVD X1JFRygyOTgsIDE2LCAweGZmZmYpCj4gKwo+ICsjZGVmaW5lIGF2MV9kZWNfYWxpZ25tZW50CQlB VjFfREVDX1JFRygzMTQsIDAsIDB4ZmZmZikKPiArCj4gKyNkZWZpbmUgYXYxX2V4dF90aW1lb3V0 X2N5Y2xlcwkJQVYxX0RFQ19SRUcoMzE4LCAwLCAweDdmZmZmZmZmKQo+ICsjZGVmaW5lIGF2MV9l eHRfdGltZW91dF9vdmVycmlkZV9lCUFWMV9ERUNfUkVHKDMxOCwgMzEsIDB4MSkKPiArCj4gKyNk ZWZpbmUgYXYxX3RpbWVvdXRfY3ljbGVzCQlBVjFfREVDX1JFRygzMTksIDAsIDB4N2ZmZmZmZmYp Cj4gKyNkZWZpbmUgYXYxX3RpbWVvdXRfb3ZlcnJpZGVfZQkJQVYxX0RFQ19SRUcoMzE5LCAzMSwg MHgxKQo+ICsKPiArI2RlZmluZSBhdjFfcHBfb3V0X2UJCQlBVjFfREVDX1JFRygzMjAsIDAsIDB4 MSkKPiArI2RlZmluZSBhdjFfcHBfY3JfZmlyc3QJCQlBVjFfREVDX1JFRygzMjAsIDEsIDB4MSkK PiArI2RlZmluZSBhdjFfcHBfb3V0X21vZGUJCQlBVjFfREVDX1JFRygzMjAsIDIsIDB4MSkKPiAr I2RlZmluZSBhdjFfcHBfb3V0X3RpbGVfZQkJQVYxX0RFQ19SRUcoMzIwLCAzLCAweDEpCj4gKyNk ZWZpbmUgYXYxX3BwX3N0YXR1cwkJCUFWMV9ERUNfUkVHKDMyMCwgNCwgMHhmKQo+ICsjZGVmaW5l IGF2MV9wcF9pbl9ibGtfc2l6ZQkJQVYxX0RFQ19SRUcoMzIwLCA4LCAweDcpCj4gKyNkZWZpbmUg YXYxX3BwX291dF9wMDEwX2ZtdAkJQVYxX0RFQ19SRUcoMzIwLCAxMSwgMHgzKQo+ICsjZGVmaW5l IGF2MV9wcF9vdXRfcmdiX2ZtdAkJQVYxX0RFQ19SRUcoMzIwLCAxMywgMHgxZikKPiArI2RlZmlu ZSBhdjFfcmdiX3JhbmdlX21heAkJQVYxX0RFQ19SRUcoMzIwLCAxOCwgMHhmZmYpCj4gKyNkZWZp bmUgYXYxX3BwX3JnYl9wbGFuYXIJCUFWMV9ERUNfUkVHKDMyMCwgMzAsIDB4MSkKPiArCj4gKyNk ZWZpbmUgYXYxX3NjYWxlX2hyYXRpbwkJQVYxX0RFQ19SRUcoMzIyLCAwLCAweDNmZmZmKQo+ICsj ZGVmaW5lIGF2MV9wcF9vdXRfZm9ybWF0CQlBVjFfREVDX1JFRygzMjIsIDE4LCAweDFmKQo+ICsj ZGVmaW5lIGF2MV92ZXJfc2NhbGVfbW9kZQkJQVYxX0RFQ19SRUcoMzIyLCAyMywgMHgzKQo+ICsj ZGVmaW5lIGF2MV9ob3Jfc2NhbGVfbW9kZQkJQVYxX0RFQ19SRUcoMzIyLCAyNSwgMHgzKQo+ICsj ZGVmaW5lIGF2MV9wcF9pbl9mb3JtYXQJCUFWMV9ERUNfUkVHKDMyMiwgMjcsIDB4MWYpCj4gKwo+ ICsjZGVmaW5lIGF2MV9wcF9vdXRfY19zdHJpZGUJCUFWMV9ERUNfUkVHKDMyOSwgMCwgMHhmZmZm KQo+ICsjZGVmaW5lIGF2MV9wcF9vdXRfeV9zdHJpZGUJCUFWMV9ERUNfUkVHKDMyOSwgMTYsIDB4 ZmZmZikKPiArCj4gKyNkZWZpbmUgYXYxX3BwX2luX2hlaWdodAkJQVYxX0RFQ19SRUcoMzMxLCAw LCAweGZmZmYpCj4gKyNkZWZpbmUgYXYxX3BwX2luX3dpZHRoCQkJQVYxX0RFQ19SRUcoMzMxLCAx NiwgMHhmZmZmKQo+ICsKPiArI2RlZmluZSBhdjFfcHBfb3V0X2hlaWdodAkJQVYxX0RFQ19SRUco MzMyLCAwLCAweGZmZmYpCj4gKyNkZWZpbmUgYXYxX3BwX291dF93aWR0aAkJQVYxX0RFQ19SRUco MzMyLCAxNiwgMHhmZmZmKQo+ICsKPiArI2RlZmluZSBhdjFfcHAxX2R1cF92ZXIJCQlBVjFfREVD X1JFRygzOTQsIDAsIDB4ZmYpCj4gKyNkZWZpbmUgYXYxX3BwMV9kdXBfaG9yCQkJQVYxX0RFQ19S RUcoMzk0LCA4LCAweGZmKQo+ICsjZGVmaW5lIGF2MV9wcDBfZHVwX3ZlcgkJCUFWMV9ERUNfUkVH KDM5NCwgMTYsIDB4ZmYpCj4gKyNkZWZpbmUgYXYxX3BwMF9kdXBfaG9yCQkJQVYxX0RFQ19SRUco Mzk0LCAyNCwgMHhmZikKPiArCj4gKyNkZWZpbmUgQVYxX1RJTEVfT1VUX0xVCQkJKEFWMV9TV1JF Ryg2NSkpCj4gKyNkZWZpbmUgQVYxX1JFRkVSRU5DRV9ZKGkpCQkoQVYxX1NXUkVHKDY3KSArICgo aSkgKiAweDgpKQo+ICsjZGVmaW5lIEFWMV9TRUdNRU5UQVRJT04JCShBVjFfU1dSRUcoODEpKQo+ ICsjZGVmaW5lIEFWMV9HTE9CQUxfTU9ERUwJCShBVjFfU1dSRUcoODMpKQo+ICsjZGVmaW5lIEFW MV9DREVGX0NPTAkJCShBVjFfU1dSRUcoODUpKQo+ICsjZGVmaW5lIEFWMV9TUl9DT0wJCQkoQVYx X1NXUkVHKDg5KSkKPiArI2RlZmluZSBBVjFfTFJfQ09MCQkJKEFWMV9TV1JFRyg5MSkpCj4gKyNk ZWZpbmUgQVYxX0ZJTE1fR1JBSU4JCQkoQVYxX1NXUkVHKDk1KSkKPiArI2RlZmluZSBBVjFfVElM RV9PVVRfQ0gJCQkoQVYxX1NXUkVHKDk5KSkKPiArI2RlZmluZSBBVjFfUkVGRVJFTkNFX0NCKGkp CQkoQVYxX1NXUkVHKDEwMSkgKyAoKGkpICogMHg4KSkKPiArI2RlZmluZSBBVjFfVElMRV9PVVRf TVYJCQkoQVYxX1NXUkVHKDEzMykpCj4gKyNkZWZpbmUgQVYxX1JFRkVSRU5DRV9NVihpKQkJKEFW MV9TV1JFRygxMzUpICsgKChpKSAqIDB4OCkpCj4gKyNkZWZpbmUgQVYxX1RJTEVfQkFTRQkJCShB VjFfU1dSRUcoMTY3KSkKPiArI2RlZmluZSBBVjFfSU5QVVRfU1RSRUFNCQkoQVYxX1NXUkVHKDE2 OSkpCj4gKyNkZWZpbmUgQVYxX1BST1BfVEFCTEVfT1VUCQkoQVYxX1NXUkVHKDE3MSkpCj4gKyNk ZWZpbmUgQVYxX1BST1BfVEFCTEUJCQkoQVYxX1NXUkVHKDE3MykpCj4gKyNkZWZpbmUgQVYxX01D X1NZTkNfQ1VSUgkJKEFWMV9TV1JFRygxNzUpKQo+ICsjZGVmaW5lIEFWMV9NQ19TWU5DX0xFRlQJ CShBVjFfU1dSRUcoMTc3KSkKPiArI2RlZmluZSBBVjFfREJfREFUQV9DT0wJCQkoQVYxX1NXUkVH KDE3OSkpCj4gKyNkZWZpbmUgQVYxX0RCX0NUUkxfQ09MCQkJKEFWMV9TV1JFRygxODMpKQo+ICsj ZGVmaW5lIEFWMV9QUF9PVVRfTFUJCQkoQVYxX1NXUkVHKDMyNikpCj4gKyNkZWZpbmUgQVYxX1BQ X09VVF9DSAkJCShBVjFfU1dSRUcoMzI4KSkKPiArCj4gKyNlbmRpZiAvKiBfUk9DS0NISVBfVlBV OTgxX1JFR1NfSF8gKi8KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LXJvY2tjaGlwCg==