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 EFB63C3ABC0 for ; Thu, 8 May 2025 17:25:16 +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: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=gx74YLDh1wbEJsUkl0RjDl1SSa3MkVWZx5kkP4BvI2Q=; b=yXShX1kGn4Tya4 L6kR8gejdz2zIFSzkWEwghXPKam/eyCaRc8CuAtQCi6ln4NaZrnFgvXxJ6bV9WagJWZgsPcQn8m0v hWy95mmxOMHl94o6l8EPQ0zVqeRIGVgE0aeMwCXOPltlWRNQsvALBg0S399f1bUtD+iGmfJg7n7Od AE8bFLruc1yE7djSSpKWQySMbzkOFI2Kx8cIOnEDt8LgkujhyVIrDSILOyWcUB+viSVJ9ozud2TIT f+Vladz/Ybl7xbJm20zkJ8KHOOEgFM/goMnlXmDCUYsT+dI0Q8gwCOQlOceLerLr9DeyS/k49gljN xMakNt307z6RlVRGzgzw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uD4zg-00000001Pbi-1PZ6; Thu, 08 May 2025 17:25:12 +0000 Received: from gloria.sntech.de ([185.11.138.130]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uD4xh-00000001PCl-0oO2; Thu, 08 May 2025 17:23:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de; s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID; bh=EGPk/Tt/2qDyRfjXQZ3zYQiX9knYW6iwQMERQK1aJE4=; b=vOhdnG0qzqDU4CNFiUnuuoBqQH HBGomoXyfW5Qz/RqNR+35vtfzklUWfN9SCEqDgxUy6i6qpxZPW8nHZp7Ui4/1DmmPrkDr23v3YVDY /VkgTjFWwgBz5NoITHDbjESAkRSFkz1X9i7Ie8wAQiKOnpBGz01jPxaXZCcty1xJ4SWeFVcoLraY8 iE0OfxQM/pvpJI/cj1lKMm5X2vKLwpzS3dd8kQR2WMDd62i5fuPMmpacQuWHbI2BZiuHTDSYw4c/B /6clbreWO5UKQEysslFFkvR6BYuEufJnFHtyx+DOud/7Sek1VlpVRsy7y+Re5eUSI/7ohGbz3gt/+ ady/LVlA==; Received: from [61.8.144.177] (helo=phil.localnet) by gloria.sntech.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uD4xY-000812-CK; Thu, 08 May 2025 19:23:00 +0200 From: Heiko Stuebner To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yao Zi , Frank Wang , Andy Yan , Cristian Ciocaltea , Detlev Casanova , Shresth Prasad , Chukun Pan , Jonas Karlman , Yao Zi Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/5] phy: rockchip: naneng-combphy: Add SoC prefix to register definitions Date: Thu, 08 May 2025 19:22:58 +0200 Message-ID: <5378239.31r3eYUQgx@phil> In-Reply-To: <20250508135242.14706-1-ziyao@disroot.org> References: <20250508134332.14668-2-ziyao@disroot.org> <20250508135242.14706-1-ziyao@disroot.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250508_102309_525195_89F03A0B X-CRM114-Status: GOOD ( 19.92 ) 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 QW0gRG9ubmVyc3RhZywgOC4gTWFpIDIwMjUsIDE1OjUyOjQyIE1pdHRlbGV1cm9ww6Rpc2NoZSBT b21tZXJ6ZWl0IHNjaHJpZWIgWWFvIFppOgo+IEFsbCBzdXBwb3J0ZWQgdmFyaWFudHMgb2YgbmFu ZW5nLWNvbWJwaHkgZm9sbG93IGEgcmVnaXN0ZXIgbGF5b3V0Cj4gc2ltaWxhciB0byB0aGUgUksz NTY4IHZhcmlhbnQgd2l0aCBzb21lIGV4Y2VwdGlvbnMgb2YgU29DLXNwZWNpZmljCj4gcmVnaXN0 ZXJzLgo+IAo+IEFkZCBSSzM1NjggcHJlZml4IGZvciB0aGUgY29tbW9uIHNldCBvZiByZWdpc3Rl cnMgYW5kIHRoZSBjb3JyZXNwb25kaW5nCj4gU29DIHByZWZpeCBmb3IgU29DLXNwZWNpZmljIHJl Z2lzdGVycywgbWFraW5nIHVzYWdlIG9mIGRlZmluaXRpb25zIGNsZWFyCj4gYW5kIHByZXBhcmlu ZyBmb3IgZnV0dXJlIENPTUJQSFkgdmFyaWFudHMgd2l0aCBhIGRpZmZlcmVudCByZWdpc3Rlcgo+ IGxheW91dC4KClJldmlld2VkLWJ5OiBIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPgoK PiAKPiBTaWduZWQtb2ZmLWJ5OiBZYW8gWmkgPHppeWFvQGRpc3Jvb3Qub3JnPgo+IC0tLQo+ICAu Li4vcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21icGh5LmMgICAgfCA1NjAgKysrKysr KysrLS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAyODggaW5zZXJ0aW9ucygrKSwgMjcyIGRl bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9j a2NoaXAtbmFuZW5nLWNvbWJwaHkuYyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hp cC1uYW5lbmctY29tYnBoeS5jCj4gaW5kZXggY2U5MWZiMWQ1MTY3Li4xZDFjNzcyMzU4NGIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9waHkvcm9ja2NoaXAvcGh5LXJvY2tjaGlwLW5hbmVuZy1jb21i cGh5LmMKPiArKysgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtbmFuZW5nLWNv bWJwaHkuYwo+IEBAIC0yMSw3OCArMjEsODAgQEAKPiAgI2RlZmluZSBSRUZfQ0xPQ0tfMTAwTUh6 CQkoMTAwICogSFpfUEVSX01IWikKPiAgCj4gIC8qIENPTUJPIFBIWSBSRUcgKi8KPiAtI2RlZmlu ZSBQSFlSRUc2CQkJCTB4MTQKPiAtI2RlZmluZSBQSFlSRUc2X1BMTF9ESVZfTUFTSwkJR0VOTUFT Syg3LCA2KQo+IC0jZGVmaW5lIFBIWVJFRzZfUExMX0RJVl9TSElGVAkJNgo+IC0jZGVmaW5lIFBI WVJFRzZfUExMX0RJVl8yCQkxCj4gLQo+IC0jZGVmaW5lIFBIWVJFRzcJCQkJMHgxOAo+IC0jZGVm aW5lIFBIWVJFRzdfVFhfUlRFUk1fTUFTSwkJR0VOTUFTSyg3LCA0KQo+IC0jZGVmaW5lIFBIWVJF RzdfVFhfUlRFUk1fU0hJRlQJCTQKPiAtI2RlZmluZSBQSFlSRUc3X1RYX1JURVJNXzUwT0hNCQk4 Cj4gLSNkZWZpbmUgUEhZUkVHN19SWF9SVEVSTV9NQVNLCQlHRU5NQVNLKDMsIDApCj4gLSNkZWZp bmUgUEhZUkVHN19SWF9SVEVSTV9TSElGVAkJMAo+IC0jZGVmaW5lIFBIWVJFRzdfUlhfUlRFUk1f NDRPSE0JCTE1Cj4gLQo+IC0jZGVmaW5lIFBIWVJFRzgJCQkJMHgxQwo+IC0jZGVmaW5lIFBIWVJF RzhfU1NDX0VOCQkJQklUKDQpCj4gLQo+IC0jZGVmaW5lIFBIWVJFRzEwCQkJMHgyNAo+IC0jZGVm aW5lIFBIWVJFRzEwX1NTQ19QQ01fTUFTSwkJR0VOTUFTSygzLCAwKQo+IC0jZGVmaW5lIFBIWVJF RzEwX1NTQ19QQ01fMzUwMFBQTQk3Cj4gLQo+IC0jZGVmaW5lIFBIWVJFRzExCQkJMHgyOAo+IC0j ZGVmaW5lIFBIWVJFRzExX1NVX1RSSU1fMF83CQkweEYwCj4gLQo+IC0jZGVmaW5lIFBIWVJFRzEy CQkJMHgyQwo+IC0jZGVmaW5lIFBIWVJFRzEyX1BMTF9MUEZfQURKX1ZBTFVFCTQKPiAtCj4gLSNk ZWZpbmUgUEhZUkVHMTMJCQkweDMwCj4gLSNkZWZpbmUgUEhZUkVHMTNfUkVTSVNURVJfTUFTSwkJ R0VOTUFTSyg1LCA0KQo+IC0jZGVmaW5lIFBIWVJFRzEzX1JFU0lTVEVSX1NISUZUCQkweDQKPiAt I2RlZmluZSBQSFlSRUcxM19SRVNJU1RFUl9ISUdIX1oJMwo+IC0jZGVmaW5lIFBIWVJFRzEzX0NL UkNWX0FNUDAJCUJJVCg3KQo+IC0KPiAtI2RlZmluZSBQSFlSRUcxNAkJCTB4MzQKPiAtI2RlZmlu ZSBQSFlSRUcxNF9DS1JDVl9BTVAxCQlCSVQoMCkKPiAtCj4gLSNkZWZpbmUgUEhZUkVHMTUJCQkw eDM4Cj4gLSNkZWZpbmUgUEhZUkVHMTVfQ1RMRV9FTgkJQklUKDApCj4gLSNkZWZpbmUgUEhZUkVH MTVfU1NDX0NOVF9NQVNLCQlHRU5NQVNLKDcsIDYpCj4gLSNkZWZpbmUgUEhZUkVHMTVfU1NDX0NO VF9TSElGVAkJNgo+IC0jZGVmaW5lIFBIWVJFRzE1X1NTQ19DTlRfVkFMVUUJCTEKPiAtCj4gLSNk ZWZpbmUgUEhZUkVHMTYJCQkweDNDCj4gLSNkZWZpbmUgUEhZUkVHMTZfU1NDX0NOVF9WQUxVRQkJ MHg1Zgo+IC0KPiAtI2RlZmluZSBQSFlSRUcxNwkJCTB4NDAKPiAtCj4gLSNkZWZpbmUgUEhZUkVH MTgJCQkweDQ0Cj4gLSNkZWZpbmUgUEhZUkVHMThfUExMX0xPT1AJCTB4MzIKPiAtCj4gLSNkZWZp bmUgUEhZUkVHMjEJCQkweDUwCj4gLSNkZWZpbmUgUEhZUkVHMjFfUlhfU1FVRUxDSF9WQUwJCTB4 MEQKPiAtCj4gLSNkZWZpbmUgUEhZUkVHMjcJCQkweDZDCj4gLSNkZWZpbmUgUEhZUkVHMjdfUlhf VFJJTV9SSzM1ODgJCTB4NEMKPiAtCj4gLSNkZWZpbmUgUEhZUkVHMzAJCQkweDc0Cj4gLQo+IC0j ZGVmaW5lIFBIWVJFRzMyCQkJMHg3Qwo+IC0jZGVmaW5lIFBIWVJFRzMyX1NTQ19NQVNLCQlHRU5N QVNLKDcsIDQpCj4gLSNkZWZpbmUgUEhZUkVHMzJfU1NDX0RJUl9NQVNLCQlHRU5NQVNLKDUsIDQp Cj4gLSNkZWZpbmUgUEhZUkVHMzJfU1NDX0RJUl9TSElGVAkJNAo+IC0jZGVmaW5lIFBIWVJFRzMy X1NTQ19VUFdBUkQJCTAKPiAtI2RlZmluZSBQSFlSRUczMl9TU0NfRE9XTldBUkQJCTEKPiAtI2Rl ZmluZSBQSFlSRUczMl9TU0NfT0ZGU0VUX01BU0sJR0VOTUFTSyg3LCA2KQo+IC0jZGVmaW5lIFBI WVJFRzMyX1NTQ19PRkZTRVRfU0hJRlQJNgo+IC0jZGVmaW5lIFBIWVJFRzMyX1NTQ19PRkZTRVRf NTAwUFBNCTEKPiAtCj4gLSNkZWZpbmUgUEhZUkVHMzMJCQkweDgwCj4gLSNkZWZpbmUgUEhZUkVH MzNfUExMX0tWQ09fTUFTSwkJR0VOTUFTSyg0LCAyKQo+IC0jZGVmaW5lIFBIWVJFRzMzX1BMTF9L VkNPX1NISUZUCQkyCj4gLSNkZWZpbmUgUEhZUkVHMzNfUExMX0tWQ09fVkFMVUUJCTIKPiAtI2Rl ZmluZSBQSFlSRUczM19QTExfS1ZDT19WQUxVRV9SSzM1NzYJNAo+ICsjZGVmaW5lIFJLMzU2OF9Q SFlSRUc2CQkJCTB4MTQKPiArI2RlZmluZSBSSzM1NjhfUEhZUkVHNl9QTExfRElWX01BU0sJCUdF Tk1BU0soNywgNikKPiArI2RlZmluZSBSSzM1NjhfUEhZUkVHNl9QTExfRElWX1NISUZUCQk2Cj4g KyNkZWZpbmUgUkszNTY4X1BIWVJFRzZfUExMX0RJVl8yCQkxCj4gKwo+ICsjZGVmaW5lIFJLMzU2 OF9QSFlSRUc3CQkJCTB4MTgKPiArI2RlZmluZSBSSzM1NjhfUEhZUkVHN19UWF9SVEVSTV9NQVNL CQlHRU5NQVNLKDcsIDQpCj4gKyNkZWZpbmUgUkszNTY4X1BIWVJFRzdfVFhfUlRFUk1fU0hJRlQJ CTQKPiArI2RlZmluZSBSSzM1NjhfUEhZUkVHN19UWF9SVEVSTV81ME9ITQkJOAo+ICsjZGVmaW5l IFJLMzU2OF9QSFlSRUc3X1JYX1JURVJNX01BU0sJCUdFTk1BU0soMywgMCkKPiArI2RlZmluZSBS SzM1NjhfUEhZUkVHN19SWF9SVEVSTV9TSElGVAkJMAo+ICsjZGVmaW5lIFJLMzU2OF9QSFlSRUc3 X1JYX1JURVJNXzQ0T0hNCQkxNQo+ICsKPiArI2RlZmluZSBSSzM1NjhfUEhZUkVHOAkJCQkweDFD Cj4gKyNkZWZpbmUgUkszNTY4X1BIWVJFRzhfU1NDX0VOCQkJQklUKDQpCj4gKwo+ICsjZGVmaW5l IFJLMzU2OF9QSFlSRUcxMQkJCQkweDI4Cj4gKyNkZWZpbmUgUkszNTY4X1BIWVJFRzExX1NVX1RS SU1fMF83CQkweEYwCj4gKwo+ICsjZGVmaW5lIFJLMzU2OF9QSFlSRUcxMgkJCQkweDJDCj4gKyNk ZWZpbmUgUkszNTY4X1BIWVJFRzEyX1BMTF9MUEZfQURKX1ZBTFVFCTQKPiArCj4gKyNkZWZpbmUg UkszNTY4X1BIWVJFRzEzCQkJCTB4MzAKPiArI2RlZmluZSBSSzM1NjhfUEhZUkVHMTNfUkVTSVNU RVJfTUFTSwkJR0VOTUFTSyg1LCA0KQo+ICsjZGVmaW5lIFJLMzU2OF9QSFlSRUcxM19SRVNJU1RF Ul9TSElGVAkJMHg0Cj4gKyNkZWZpbmUgUkszNTY4X1BIWVJFRzEzX1JFU0lTVEVSX0hJR0hfWgkJ Mwo+ICsjZGVmaW5lIFJLMzU2OF9QSFlSRUcxM19DS1JDVl9BTVAwCQlCSVQoNykKPiArCj4gKyNk ZWZpbmUgUkszNTY4X1BIWVJFRzE0CQkJCTB4MzQKPiArI2RlZmluZSBSSzM1NjhfUEhZUkVHMTRf Q0tSQ1ZfQU1QMQkJQklUKDApCj4gKwo+ICsjZGVmaW5lIFJLMzU2OF9QSFlSRUcxNQkJCQkweDM4 Cj4gKyNkZWZpbmUgUkszNTY4X1BIWVJFRzE1X0NUTEVfRU4JCQlCSVQoMCkKPiArI2RlZmluZSBS SzM1NjhfUEhZUkVHMTVfU1NDX0NOVF9NQVNLCQlHRU5NQVNLKDcsIDYpCj4gKyNkZWZpbmUgUksz NTY4X1BIWVJFRzE1X1NTQ19DTlRfU0hJRlQJCTYKPiArI2RlZmluZSBSSzM1NjhfUEhZUkVHMTVf U1NDX0NOVF9WQUxVRQkJMQo+ICsKPiArI2RlZmluZSBSSzM1NjhfUEhZUkVHMTYJCQkJMHgzQwo+ ICsjZGVmaW5lIFJLMzU2OF9QSFlSRUcxNl9TU0NfQ05UX1ZBTFVFCQkweDVmCj4gKwo+ICsjZGVm aW5lIFJLMzU2OF9QSFlSRUcxOAkJCQkweDQ0Cj4gKyNkZWZpbmUgUkszNTY4X1BIWVJFRzE4X1BM TF9MT09QCQkweDMyCj4gKwo+ICsjZGVmaW5lIFJLMzU2OF9QSFlSRUczMgkJCQkweDdDCj4gKyNk ZWZpbmUgUkszNTY4X1BIWVJFRzMyX1NTQ19NQVNLCQlHRU5NQVNLKDcsIDQpCj4gKyNkZWZpbmUg UkszNTY4X1BIWVJFRzMyX1NTQ19ESVJfTUFTSwkJR0VOTUFTSyg1LCA0KQo+ICsjZGVmaW5lIFJL MzU2OF9QSFlSRUczMl9TU0NfRElSX1NISUZUCQk0Cj4gKyNkZWZpbmUgUkszNTY4X1BIWVJFRzMy X1NTQ19VUFdBUkQJCTAKPiArI2RlZmluZSBSSzM1NjhfUEhZUkVHMzJfU1NDX0RPV05XQVJECQkx Cj4gKyNkZWZpbmUgUkszNTY4X1BIWVJFRzMyX1NTQ19PRkZTRVRfTUFTSwlHRU5NQVNLKDcsIDYp Cj4gKyNkZWZpbmUgUkszNTY4X1BIWVJFRzMyX1NTQ19PRkZTRVRfU0hJRlQJNgo+ICsjZGVmaW5l IFJLMzU2OF9QSFlSRUczMl9TU0NfT0ZGU0VUXzUwMFBQTQkxCj4gKwo+ICsjZGVmaW5lIFJLMzU2 OF9QSFlSRUczMwkJCQkweDgwCj4gKyNkZWZpbmUgUkszNTY4X1BIWVJFRzMzX1BMTF9LVkNPX01B U0sJCUdFTk1BU0soNCwgMikKPiArI2RlZmluZSBSSzM1NjhfUEhZUkVHMzNfUExMX0tWQ09fU0hJ RlQJCTIKPiArI2RlZmluZSBSSzM1NjhfUEhZUkVHMzNfUExMX0tWQ09fVkFMVUUJCTIKPiArI2Rl ZmluZSBSSzM1NzZfUEhZUkVHMzNfUExMX0tWQ09fVkFMVUUJCTQKPiArCj4gKy8qIFJLMzU4OCBD T01CTyBQSFkgcmVnaXN0ZXJzICovCj4gKyNkZWZpbmUgUkszNTg4X1BIWVJFRzI3CQkJCTB4NkMK PiArI2RlZmluZSBSSzM1ODhfUEhZUkVHMjdfUlhfVFJJTQkJCTB4NEMKPiArCj4gKy8qIFJLMzU3 NiBDT01CTyBQSFkgcmVnaXN0ZXJzICovCj4gKyNkZWZpbmUgUkszNTc2X1BIWVJFRzEwCQkJCTB4 MjQKPiArI2RlZmluZSBSSzM1NzZfUEhZUkVHMTBfU1NDX1BDTV9NQVNLCQlHRU5NQVNLKDMsIDAp Cj4gKyNkZWZpbmUgUkszNTc2X1BIWVJFRzEwX1NTQ19QQ01fMzUwMFBQTQkJNwo+ICsKPiArI2Rl ZmluZSBSSzM1NzZfUEhZUkVHMTcJCQkJMHg0MAo+ICsKPiArI2RlZmluZSBSSzM1NzZfUEhZUkVH MjEJCQkJMHg1MAo+ICsjZGVmaW5lIFJLMzU3Nl9QSFlSRUcyMV9SWF9TUVVFTENIX1ZBTAkJMHgw RAo+ICsKPiArI2RlZmluZSBSSzM1NzZfUEhZUkVHMzAJCQkJMHg3NAo+ICAKPiAgc3RydWN0IHJv Y2tjaGlwX2NvbWJwaHlfcHJpdjsKPiAgCj4gQEAgLTQwNSw5ICs0MDcsOCBAQCBzdGF0aWMgaW50 IHJrMzU2Ml9jb21icGh5X2NmZyhzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2ICpwcml2KQo+ ICAJc3dpdGNoIChwcml2LT50eXBlKSB7Cj4gIAljYXNlIFBIWV9UWVBFX1BDSUU6Cj4gIAkJLyog U2V0IFNTQyBkb3dud2FyZCBzcHJlYWQgc3BlY3RydW0gKi8KPiAtCQlyb2NrY2hpcF9jb21icGh5 X3VwZGF0ZWwocHJpdiwgUEhZUkVHMzJfU1NDX01BU0ssCj4gLQkJCQkJIFBIWVJFRzMyX1NTQ19E T1dOV0FSRCA8PCBQSFlSRUczMl9TU0NfRElSX1NISUZULAo+IC0JCQkJCSBQSFlSRUczMik7Cj4g KwkJdmFsID0gUkszNTY4X1BIWVJFRzMyX1NTQ19ET1dOV0FSRCA8PCBSSzM1NjhfUEhZUkVHMzJf U1NDX0RJUl9TSElGVDsKPiArCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwocHJpdiwgUkszNTY4 X1BIWVJFRzMyX1NTQ19NQVNLLCB2YWwsIFJLMzU2OF9QSFlSRUczMik7Cj4gIAo+ICAJCXJvY2tj aGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0+cGh5X2dyZiwgJmNmZy0+Y29uMF9mb3JfcGNp ZSwgdHJ1ZSk7Cj4gIAkJcm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LT5waHlfZ3Jm LCAmY2ZnLT5jb24xX2Zvcl9wY2llLCB0cnVlKTsKPiBAQCAtNDE2LDI5ICs0MTcsMzAgQEAgc3Rh dGljIGludCByazM1NjJfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAq cHJpdikKPiAgCQlicmVhazsKPiAgCWNhc2UgUEhZX1RZUEVfVVNCMzoKPiAgCQkvKiBTZXQgU1ND IGRvd253YXJkIHNwcmVhZCBzcGVjdHJ1bSAqLwo+IC0JCXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRl bChwcml2LCBQSFlSRUczMl9TU0NfTUFTSywKPiAtCQkJCQkgUEhZUkVHMzJfU1NDX0RPV05XQVJE IDw8IFBIWVJFRzMyX1NTQ19ESVJfU0hJRlQsCj4gLQkJCQkJIFBIWVJFRzMyKTsKPiArCQl2YWwg PSBSSzM1NjhfUEhZUkVHMzJfU1NDX0RPV05XQVJEIDw8IFJLMzU2OF9QSFlSRUczMl9TU0NfRElS X1NISUZUOwo+ICsJCXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBSSzM1NjhfUEhZUkVH MzJfU1NDX01BU0ssIHZhbCwKPiArCQkJCQkgUkszNTY4X1BIWVJFRzMyKTsKPiAgCj4gIAkJLyog RW5hYmxlIGFkYXB0aXZlIENUTEUgZm9yIFVTQjMuMCBSeCAqLwo+IC0JCXJvY2tjaGlwX2NvbWJw aHlfdXBkYXRlbChwcml2LCBQSFlSRUcxNV9DVExFX0VOLAo+IC0JCQkJCSBQSFlSRUcxNV9DVExF X0VOLCBQSFlSRUcxNSk7Cj4gKwkJcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFJLMzU2 OF9QSFlSRUcxNV9DVExFX0VOLAo+ICsJCQkJCSBSSzM1NjhfUEhZUkVHMTVfQ1RMRV9FTiwgUksz NTY4X1BIWVJFRzE1KTsKPiAgCj4gIAkJLyogU2V0IFBMTCBLVkNPIGZpbmUgdHVuaW5nIHNpZ25h bHMgKi8KPiAtCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwocHJpdiwgUEhZUkVHMzNfUExMX0tW Q09fTUFTSywgQklUKDMpLCBQSFlSRUczMyk7Cj4gKwkJcm9ja2NoaXBfY29tYnBoeV91cGRhdGVs KHByaXYsIFJLMzU2OF9QSFlSRUczM19QTExfS1ZDT19NQVNLLAo+ICsJCQkJCSBCSVQoMyksIFJL MzU2OF9QSFlSRUczMyk7Cj4gIAo+ICAJCS8qIFNldCBQTEwgTFBGIFIxIHRvIHN1X3RyaW1bMTA6 N109MTAwMSAqLwo+IC0JCXdyaXRlbChQSFlSRUcxMl9QTExfTFBGX0FESl9WQUxVRSwgcHJpdi0+ bW1pbyArIFBIWVJFRzEyKTsKPiArCQl3cml0ZWwoUkszNTY4X1BIWVJFRzEyX1BMTF9MUEZfQURK X1ZBTFVFLCBwcml2LT5tbWlvICsgUkszNTY4X1BIWVJFRzEyKTsKPiAgCj4gIAkJLyogU2V0IFBM TCBpbnB1dCBjbG9jayBkaXZpZGVyIDEvMiAqLwo+IC0JCXZhbCA9IEZJRUxEX1BSRVAoUEhZUkVH Nl9QTExfRElWX01BU0ssIFBIWVJFRzZfUExMX0RJVl8yKTsKPiAtCQlyb2NrY2hpcF9jb21icGh5 X3VwZGF0ZWwocHJpdiwgUEhZUkVHNl9QTExfRElWX01BU0ssIHZhbCwgUEhZUkVHNik7Cj4gKwkJ dmFsID0gRklFTERfUFJFUChSSzM1NjhfUEhZUkVHNl9QTExfRElWX01BU0ssIFJLMzU2OF9QSFlS RUc2X1BMTF9ESVZfMik7Cj4gKwkJcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFJLMzU2 OF9QSFlSRUc2X1BMTF9ESVZfTUFTSywgdmFsLCBSSzM1NjhfUEhZUkVHNik7Cj4gIAo+ICAJCS8q IFNldCBQTEwgbG9vcCBkaXZpZGVyICovCj4gLQkJd3JpdGVsKFBIWVJFRzE4X1BMTF9MT09QLCBw cml2LT5tbWlvICsgUEhZUkVHMTgpOwo+ICsJCXdyaXRlbChSSzM1NjhfUEhZUkVHMThfUExMX0xP T1AsIHByaXYtPm1taW8gKyBSSzM1NjhfUEhZUkVHMTgpOwo+ICAKPiAgCQkvKiBTZXQgUExMIEtW Q08gdG8gbWluIGFuZCBzZXQgUExMIGNoYXJnZSBwdW1wIGN1cnJlbnQgdG8gbWF4ICovCj4gLQkJ d3JpdGVsKFBIWVJFRzExX1NVX1RSSU1fMF83LCBwcml2LT5tbWlvICsgUEhZUkVHMTEpOwo+ICsJ CXdyaXRlbChSSzM1NjhfUEhZUkVHMTFfU1VfVFJJTV8wXzcsIHByaXYtPm1taW8gKyBSSzM1Njhf UEhZUkVHMTEpOwo+ICAKPiAgCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtPnBo eV9ncmYsICZjZmctPnBpcGVfc2VsX3VzYiwgdHJ1ZSk7Cj4gIAkJcm9ja2NoaXBfY29tYnBoeV9w YXJhbV93cml0ZShwcml2LT5waHlfZ3JmLCAmY2ZnLT5waXBlX3R4Y29tcF9zZWwsIGZhbHNlKTsK PiBAQCAtNDU2LDExICs0NTgsMTIgQEAgc3RhdGljIGludCByazM1NjJfY29tYnBoeV9jZmcoc3Ry dWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdikKPiAgCWNhc2UgUkVGX0NMT0NLXzI0TUh6 Ogo+ICAJCWlmIChwcml2LT50eXBlID09IFBIWV9UWVBFX1VTQjMpIHsKPiAgCQkJLyogU2V0IHNz Y19jbnRbOTowXT0wMTAxMTExMTAxICYgMzEuNUtIeiAqLwo+IC0JCQl2YWwgPSBGSUVMRF9QUkVQ KFBIWVJFRzE1X1NTQ19DTlRfTUFTSywgUEhZUkVHMTVfU1NDX0NOVF9WQUxVRSk7Cj4gLQkJCXJv Y2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBQSFlSRUcxNV9TU0NfQ05UX01BU0ssCj4gLQkJ CQkJCSB2YWwsIFBIWVJFRzE1KTsKPiArCQkJdmFsID0gRklFTERfUFJFUChSSzM1NjhfUEhZUkVH MTVfU1NDX0NOVF9NQVNLLAo+ICsJCQkJCSBSSzM1NjhfUEhZUkVHMTVfU1NDX0NOVF9WQUxVRSk7 Cj4gKwkJCXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBSSzM1NjhfUEhZUkVHMTVfU1ND X0NOVF9NQVNLLAo+ICsJCQkJCQkgdmFsLCBSSzM1NjhfUEhZUkVHMTUpOwo+ICAKPiAtCQkJd3Jp dGVsKFBIWVJFRzE2X1NTQ19DTlRfVkFMVUUsIHByaXYtPm1taW8gKyBQSFlSRUcxNik7Cj4gKwkJ CXdyaXRlbChSSzM1NjhfUEhZUkVHMTZfU1NDX0NOVF9WQUxVRSwgcHJpdi0+bW1pbyArIFJLMzU2 OF9QSFlSRUcxNik7Cj4gIAkJfQo+ICAJCWJyZWFrOwo+ICAJY2FzZSBSRUZfQ0xPQ0tfMjVNSHo6 Cj4gQEAgLTQ3MCwxOSArNDczLDIwIEBAIHN0YXRpYyBpbnQgcmszNTYyX2NvbWJwaHlfY2ZnKHN0 cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYpCj4gIAkJcm9ja2NoaXBfY29tYnBoeV9w YXJhbV93cml0ZShwcml2LT5waHlfZ3JmLCAmY2ZnLT5waXBlX2Nsa18xMDBtLCB0cnVlKTsKPiAg CQlpZiAocHJpdi0+dHlwZSA9PSBQSFlfVFlQRV9QQ0lFKSB7Cj4gIAkJCS8qIFBMTCBLVkNPIHR1 bmluZyBmaW5lICovCj4gLQkJCXZhbCA9IEZJRUxEX1BSRVAoUEhZUkVHMzNfUExMX0tWQ09fTUFT SywgUEhZUkVHMzNfUExMX0tWQ09fVkFMVUUpOwo+IC0JCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0 ZWwocHJpdiwgUEhZUkVHMzNfUExMX0tWQ09fTUFTSywKPiAtCQkJCQkJIHZhbCwgUEhZUkVHMzMp Owo+ICsJCQl2YWwgPSBGSUVMRF9QUkVQKFJLMzU2OF9QSFlSRUczM19QTExfS1ZDT19NQVNLLAo+ ICsJCQkJCSBSSzM1NjhfUEhZUkVHMzNfUExMX0tWQ09fVkFMVUUpOwo+ICsJCQlyb2NrY2hpcF9j b21icGh5X3VwZGF0ZWwocHJpdiwgUkszNTY4X1BIWVJFRzMzX1BMTF9LVkNPX01BU0ssCj4gKwkJ CQkJCSB2YWwsIFJLMzU2OF9QSFlSRUczMyk7Cj4gIAo+ICAJCQkvKiBFbmFibGUgY29udHJvbGxp bmcgcmFuZG9tIGppdHRlciwgYWthIFJNSiAqLwo+IC0JCQl3cml0ZWwoMHg0LCBwcml2LT5tbWlv ICsgUEhZUkVHMTIpOwo+ICsJCQl3cml0ZWwoMHg0LCBwcml2LT5tbWlvICsgUkszNTY4X1BIWVJF RzEyKTsKPiAgCj4gLQkJCXZhbCA9IFBIWVJFRzZfUExMX0RJVl8yIDw8IFBIWVJFRzZfUExMX0RJ Vl9TSElGVDsKPiAtCQkJcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFBIWVJFRzZfUExM X0RJVl9NQVNLLAo+IC0JCQkJCQkgdmFsLCBQSFlSRUc2KTsKPiArCQkJdmFsID0gUkszNTY4X1BI WVJFRzZfUExMX0RJVl8yIDw8IFJLMzU2OF9QSFlSRUc2X1BMTF9ESVZfU0hJRlQ7Cj4gKwkJCXJv Y2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBSSzM1NjhfUEhZUkVHNl9QTExfRElWX01BU0ss Cj4gKwkJCQkJCSB2YWwsIFJLMzU2OF9QSFlSRUc2KTsKPiAgCj4gLQkJCXdyaXRlbCgweDMyLCBw cml2LT5tbWlvICsgUEhZUkVHMTgpOwo+IC0JCQl3cml0ZWwoMHhmMCwgcHJpdi0+bW1pbyArIFBI WVJFRzExKTsKPiArCQkJd3JpdGVsKDB4MzIsIHByaXYtPm1taW8gKyBSSzM1NjhfUEhZUkVHMTgp Owo+ICsJCQl3cml0ZWwoMHhmMCwgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxMSk7Cj4gIAkJ fQo+ICAJCWJyZWFrOwo+ICAJZGVmYXVsdDoKPiBAQCAtNDkzLDIwICs0OTcsMjEgQEAgc3RhdGlj IGludCByazM1NjJfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJp dikKPiAgCWlmIChwcml2LT5leHRfcmVmY2xrKSB7Cj4gIAkJcm9ja2NoaXBfY29tYnBoeV9wYXJh bV93cml0ZShwcml2LT5waHlfZ3JmLCAmY2ZnLT5waXBlX2Nsa19leHQsIHRydWUpOwo+ICAJCWlm IChwcml2LT50eXBlID09IFBIWV9UWVBFX1BDSUUgJiYgcmF0ZSA9PSBSRUZfQ0xPQ0tfMTAwTUh6 KSB7Cj4gLQkJCXZhbCA9IFBIWVJFRzEzX1JFU0lTVEVSX0hJR0hfWiA8PCBQSFlSRUcxM19SRVNJ U1RFUl9TSElGVDsKPiAtCQkJdmFsIHw9IFBIWVJFRzEzX0NLUkNWX0FNUDA7Cj4gLQkJCXJvY2tj aGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBQSFlSRUcxM19SRVNJU1RFUl9NQVNLLCB2YWwsIFBI WVJFRzEzKTsKPiAtCj4gLQkJCXZhbCA9IHJlYWRsKHByaXYtPm1taW8gKyBQSFlSRUcxNCk7Cj4g LQkJCXZhbCB8PSBQSFlSRUcxNF9DS1JDVl9BTVAxOwo+IC0JCQl3cml0ZWwodmFsLCBwcml2LT5t bWlvICsgUEhZUkVHMTQpOwo+ICsJCQl2YWwgPSBSSzM1NjhfUEhZUkVHMTNfUkVTSVNURVJfSElH SF9aIDw8IFJLMzU2OF9QSFlSRUcxM19SRVNJU1RFUl9TSElGVDsKPiArCQkJdmFsIHw9IFJLMzU2 OF9QSFlSRUcxM19DS1JDVl9BTVAwOwo+ICsJCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwocHJp diwgUkszNTY4X1BIWVJFRzEzX1JFU0lTVEVSX01BU0ssIHZhbCwKPiArCQkJCQkJIFJLMzU2OF9Q SFlSRUcxMyk7Cj4gKwo+ICsJCQl2YWwgPSByZWFkbChwcml2LT5tbWlvICsgUkszNTY4X1BIWVJF RzE0KTsKPiArCQkJdmFsIHw9IFJLMzU2OF9QSFlSRUcxNF9DS1JDVl9BTVAxOwo+ICsJCQl3cml0 ZWwodmFsLCBwcml2LT5tbWlvICsgUkszNTY4X1BIWVJFRzE0KTsKPiAgCQl9Cj4gIAl9Cj4gIAo+ ICAJaWYgKHByaXYtPmVuYWJsZV9zc2MpIHsKPiAtCQl2YWwgPSByZWFkbChwcml2LT5tbWlvICsg UEhZUkVHOCk7Cj4gLQkJdmFsIHw9IFBIWVJFRzhfU1NDX0VOOwo+IC0JCXdyaXRlbCh2YWwsIHBy aXYtPm1taW8gKyBQSFlSRUc4KTsKPiArCQl2YWwgPSByZWFkbChwcml2LT5tbWlvICsgUkszNTY4 X1BIWVJFRzgpOwo+ICsJCXZhbCB8PSBSSzM1NjhfUEhZUkVHOF9TU0NfRU47Cj4gKwkJd3JpdGVs KHZhbCwgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUc4KTsKPiAgCX0KPiAgCj4gIAlyZXR1cm4g MDsKPiBAQCAtNTUzLDkgKzU1OCw5IEBAIHN0YXRpYyBpbnQgcmszNTY4X2NvbWJwaHlfY2ZnKHN0 cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYpCj4gIAlzd2l0Y2ggKHByaXYtPnR5cGUp IHsKPiAgCWNhc2UgUEhZX1RZUEVfUENJRToKPiAgCQkvKiBTZXQgU1NDIGRvd253YXJkIHNwcmVh ZCBzcGVjdHJ1bS4gKi8KPiAtCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwocHJpdiwgUEhZUkVH MzJfU1NDX01BU0ssCj4gLQkJCQkJIFBIWVJFRzMyX1NTQ19ET1dOV0FSRCA8PCBQSFlSRUczMl9T U0NfRElSX1NISUZULAo+IC0JCQkJCSBQSFlSRUczMik7Cj4gKwkJdmFsID0gUkszNTY4X1BIWVJF RzMyX1NTQ19ET1dOV0FSRCA8PCBSSzM1NjhfUEhZUkVHMzJfU1NDX0RJUl9TSElGVDsKPiArCj4g KwkJcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFJLMzU2OF9QSFlSRUczMl9TU0NfTUFT SywgdmFsLCBSSzM1NjhfUEhZUkVHMzIpOwo+ICAKPiAgCQlyb2NrY2hpcF9jb21icGh5X3BhcmFt X3dyaXRlKHByaXYtPnBoeV9ncmYsICZjZmctPmNvbjBfZm9yX3BjaWUsIHRydWUpOwo+ICAJCXJv Y2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0+cGh5X2dyZiwgJmNmZy0+Y29uMV9mb3Jf cGNpZSwgdHJ1ZSk7Cj4gQEAgLTU2NSwzMCArNTcwLDI4IEBAIHN0YXRpYyBpbnQgcmszNTY4X2Nv bWJwaHlfY2ZnKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYpCj4gIAo+ICAJY2Fz ZSBQSFlfVFlQRV9VU0IzOgo+ICAJCS8qIFNldCBTU0MgZG93bndhcmQgc3ByZWFkIHNwZWN0cnVt LiAqLwo+IC0JCXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBQSFlSRUczMl9TU0NfTUFT SywKPiAtCQkJCQkgUEhZUkVHMzJfU1NDX0RPV05XQVJEIDw8IFBIWVJFRzMyX1NTQ19ESVJfU0hJ RlQsCj4gLQkJCQkJIFBIWVJFRzMyKTsKPiArCQl2YWwgPSBSSzM1NjhfUEhZUkVHMzJfU1NDX0RP V05XQVJEIDw8IFJLMzU2OF9QSFlSRUczMl9TU0NfRElSX1NISUZULAo+ICsJCXJvY2tjaGlwX2Nv bWJwaHlfdXBkYXRlbChwcml2LCBSSzM1NjhfUEhZUkVHMzJfU1NDX01BU0ssIHZhbCwgUkszNTY4 X1BIWVJFRzMyKTsKPiAgCj4gIAkJLyogRW5hYmxlIGFkYXB0aXZlIENUTEUgZm9yIFVTQjMuMCBS eC4gKi8KPiAtCQl2YWwgPSByZWFkbChwcml2LT5tbWlvICsgUEhZUkVHMTUpOwo+IC0JCXZhbCB8 PSBQSFlSRUcxNV9DVExFX0VOOwo+IC0JCXdyaXRlbCh2YWwsIHByaXYtPm1taW8gKyBQSFlSRUcx NSk7Cj4gKwkJdmFsID0gcmVhZGwocHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxNSk7Cj4gKwkJ dmFsIHw9IFJLMzU2OF9QSFlSRUcxNV9DVExFX0VOOwo+ICsJCXdyaXRlbCh2YWwsIHByaXYtPm1t aW8gKyBSSzM1NjhfUEhZUkVHMTUpOwo+ICAKPiAgCQkvKiBTZXQgUExMIEtWQ08gZmluZSB0dW5p bmcgc2lnbmFscy4gKi8KPiAtCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwocHJpdiwgUEhZUkVH MzNfUExMX0tWQ09fTUFTSywKPiAtCQkJCQkgUEhZUkVHMzNfUExMX0tWQ09fVkFMVUUgPDwgUEhZ UkVHMzNfUExMX0tWQ09fU0hJRlQsCj4gLQkJCQkJIFBIWVJFRzMzKTsKPiArCQl2YWwgPSBSSzM1 NjhfUEhZUkVHMzNfUExMX0tWQ09fVkFMVUUgPDwgUkszNTY4X1BIWVJFRzMzX1BMTF9LVkNPX1NI SUZUOwo+ICsJCXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBSSzM1NjhfUEhZUkVHMzNf UExMX0tWQ09fTUFTSywgdmFsLCBSSzM1NjhfUEhZUkVHMzMpOwo+ICAKPiAgCQkvKiBFbmFibGUg Y29udHJvbGxpbmcgcmFuZG9tIGppdHRlci4gKi8KPiAtCQl3cml0ZWwoUEhZUkVHMTJfUExMX0xQ Rl9BREpfVkFMVUUsIHByaXYtPm1taW8gKyBQSFlSRUcxMik7Cj4gKwkJd3JpdGVsKFJLMzU2OF9Q SFlSRUcxMl9QTExfTFBGX0FESl9WQUxVRSwgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxMik7 Cj4gIAo+ICAJCS8qIFNldCBQTEwgaW5wdXQgY2xvY2sgZGl2aWRlciAxLzIuICovCj4gLQkJcm9j a2NoaXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFBIWVJFRzZfUExMX0RJVl9NQVNLLAo+IC0JCQkJ CSBQSFlSRUc2X1BMTF9ESVZfMiA8PCBQSFlSRUc2X1BMTF9ESVZfU0hJRlQsCj4gLQkJCQkJIFBI WVJFRzYpOwo+ICsJCXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBSSzM1NjhfUEhZUkVH Nl9QTExfRElWX01BU0ssCj4gKwkJCQkJIFJLMzU2OF9QSFlSRUc2X1BMTF9ESVZfMiA8PCBSSzM1 NjhfUEhZUkVHNl9QTExfRElWX1NISUZULAo+ICsJCQkJCSBSSzM1NjhfUEhZUkVHNik7Cj4gIAo+ IC0JCXdyaXRlbChQSFlSRUcxOF9QTExfTE9PUCwgcHJpdi0+bW1pbyArIFBIWVJFRzE4KTsKPiAt CQl3cml0ZWwoUEhZUkVHMTFfU1VfVFJJTV8wXzcsIHByaXYtPm1taW8gKyBQSFlSRUcxMSk7Cj4g KwkJd3JpdGVsKFJLMzU2OF9QSFlSRUcxOF9QTExfTE9PUCwgcHJpdi0+bW1pbyArIFJLMzU2OF9Q SFlSRUcxOCk7Cj4gKwkJd3JpdGVsKFJLMzU2OF9QSFlSRUcxMV9TVV9UUklNXzBfNywgcHJpdi0+ bW1pbyArIFJLMzU2OF9QSFlSRUcxMSk7Cj4gIAo+ICAJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1f d3JpdGUocHJpdi0+cGh5X2dyZiwgJmNmZy0+cGlwZV9zZWxfdXNiLCB0cnVlKTsKPiAgCQlyb2Nr Y2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtPnBoeV9ncmYsICZjZmctPnBpcGVfdHhjb21w X3NlbCwgZmFsc2UpOwo+IEBAIC01OTgsMTYgKzYwMSwxNiBAQCBzdGF0aWMgaW50IHJrMzU2OF9j b21icGh5X2NmZyhzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2ICpwcml2KQo+ICAKPiAgCWNh c2UgUEhZX1RZUEVfU0FUQToKPiAgCQkvKiBFbmFibGUgYWRhcHRpdmUgQ1RMRSBmb3IgU0FUQSBS eC4gKi8KPiAtCQl2YWwgPSByZWFkbChwcml2LT5tbWlvICsgUEhZUkVHMTUpOwo+IC0JCXZhbCB8 PSBQSFlSRUcxNV9DVExFX0VOOwo+IC0JCXdyaXRlbCh2YWwsIHByaXYtPm1taW8gKyBQSFlSRUcx NSk7Cj4gKwkJdmFsID0gcmVhZGwocHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxNSk7Cj4gKwkJ dmFsIHw9IFJLMzU2OF9QSFlSRUcxNV9DVExFX0VOOwo+ICsJCXdyaXRlbCh2YWwsIHByaXYtPm1t aW8gKyBSSzM1NjhfUEhZUkVHMTUpOwo+ICAJCS8qCj4gIAkJICogU2V0IHR4X3J0ZXJtPTUwb2ht IGFuZCByeF9ydGVybT00NG9obSBmb3IgU0FUQS4KPiAgCQkgKiAwOiA2MG9obSwgODogNTBvaG0g MTU6IDQ0b2htIChieSBzdGVwIGFib3J0IDFvaG0pCj4gIAkJICovCj4gLQkJdmFsID0gUEhZUkVH N19UWF9SVEVSTV81ME9ITSA8PCBQSFlSRUc3X1RYX1JURVJNX1NISUZUOwo+IC0JCXZhbCB8PSBQ SFlSRUc3X1JYX1JURVJNXzQ0T0hNIDw8IFBIWVJFRzdfUlhfUlRFUk1fU0hJRlQ7Cj4gLQkJd3Jp dGVsKHZhbCwgcHJpdi0+bW1pbyArIFBIWVJFRzcpOwo+ICsJCXZhbCA9IFJLMzU2OF9QSFlSRUc3 X1RYX1JURVJNXzUwT0hNIDw8IFJLMzU2OF9QSFlSRUc3X1RYX1JURVJNX1NISUZUOwo+ICsJCXZh bCB8PSBSSzM1NjhfUEhZUkVHN19SWF9SVEVSTV80NE9ITSA8PCBSSzM1NjhfUEhZUkVHN19SWF9S VEVSTV9TSElGVDsKPiArCQl3cml0ZWwodmFsLCBwcml2LT5tbWlvICsgUkszNTY4X1BIWVJFRzcp Owo+ICAKPiAgCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtPnBoeV9ncmYsICZj ZmctPmNvbjBfZm9yX3NhdGEsIHRydWUpOwo+ICAJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3Jp dGUocHJpdi0+cGh5X2dyZiwgJmNmZy0+Y29uMV9mb3Jfc2F0YSwgdHJ1ZSk7Cj4gQEAgLTY0Miwx MSArNjQ1LDExIEBAIHN0YXRpYyBpbnQgcmszNTY4X2NvbWJwaHlfY2ZnKHN0cnVjdCByb2NrY2hp cF9jb21icGh5X3ByaXYgKnByaXYpCj4gIAljYXNlIFJFRl9DTE9DS18yNE1IejoKPiAgCQlpZiAo cHJpdi0+dHlwZSA9PSBQSFlfVFlQRV9VU0IzIHx8IHByaXYtPnR5cGUgPT0gUEhZX1RZUEVfU0FU QSkgewo+ICAJCQkvKiBTZXQgc3NjX2NudFs5OjBdPTAxMDExMTExMDEgJiAzMS41S0h6LiAqLwo+ IC0JCQl2YWwgPSBQSFlSRUcxNV9TU0NfQ05UX1ZBTFVFIDw8IFBIWVJFRzE1X1NTQ19DTlRfU0hJ RlQ7Cj4gLQkJCXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBQSFlSRUcxNV9TU0NfQ05U X01BU0ssCj4gLQkJCQkJCSB2YWwsIFBIWVJFRzE1KTsKPiArCQkJdmFsID0gUkszNTY4X1BIWVJF RzE1X1NTQ19DTlRfVkFMVUUgPDwgUkszNTY4X1BIWVJFRzE1X1NTQ19DTlRfU0hJRlQ7Cj4gKwkJ CXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBSSzM1NjhfUEhZUkVHMTVfU1NDX0NOVF9N QVNLLAo+ICsJCQkJCQkgdmFsLCBSSzM1NjhfUEhZUkVHMTUpOwo+ICAKPiAtCQkJd3JpdGVsKFBI WVJFRzE2X1NTQ19DTlRfVkFMVUUsIHByaXYtPm1taW8gKyBQSFlSRUcxNik7Cj4gKwkJCXdyaXRl bChSSzM1NjhfUEhZUkVHMTZfU1NDX0NOVF9WQUxVRSwgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlS RUcxNik7Cj4gIAkJfQo+ICAJCWJyZWFrOwo+ICAKPiBAQCAtNjU4LDI0ICs2NjEsMjYgQEAgc3Rh dGljIGludCByazM1NjhfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAq cHJpdikKPiAgCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtPnBoeV9ncmYsICZj ZmctPnBpcGVfY2xrXzEwMG0sIHRydWUpOwo+ICAJCWlmIChwcml2LT50eXBlID09IFBIWV9UWVBF X1BDSUUpIHsKPiAgCQkJLyogUExMIEtWQ08gIGZpbmUgdHVuaW5nLiAqLwo+IC0JCQl2YWwgPSBQ SFlSRUczM19QTExfS1ZDT19WQUxVRSA8PCBQSFlSRUczM19QTExfS1ZDT19TSElGVDsKPiAtCQkJ cm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFBIWVJFRzMzX1BMTF9LVkNPX01BU0ssCj4g LQkJCQkJCSB2YWwsIFBIWVJFRzMzKTsKPiArCQkJdmFsID0gUkszNTY4X1BIWVJFRzMzX1BMTF9L VkNPX1ZBTFVFIDw8IFJLMzU2OF9QSFlSRUczM19QTExfS1ZDT19TSElGVDsKPiArCQkJcm9ja2No aXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFJLMzU2OF9QSFlSRUczM19QTExfS1ZDT19NQVNLLAo+ ICsJCQkJCQkgdmFsLCBSSzM1NjhfUEhZUkVHMzMpOwo+ICAKPiAgCQkJLyogRW5hYmxlIGNvbnRy b2xsaW5nIHJhbmRvbSBqaXR0ZXIuICovCj4gLQkJCXdyaXRlbChQSFlSRUcxMl9QTExfTFBGX0FE Sl9WQUxVRSwgcHJpdi0+bW1pbyArIFBIWVJFRzEyKTsKPiArCQkJd3JpdGVsKFJLMzU2OF9QSFlS RUcxMl9QTExfTFBGX0FESl9WQUxVRSwgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxMik7Cj4g IAo+IC0JCQl2YWwgPSBQSFlSRUc2X1BMTF9ESVZfMiA8PCBQSFlSRUc2X1BMTF9ESVZfU0hJRlQ7 Cj4gLQkJCXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBQSFlSRUc2X1BMTF9ESVZfTUFT SywKPiAtCQkJCQkJIHZhbCwgUEhZUkVHNik7Cj4gKwkJCXZhbCA9IFJLMzU2OF9QSFlSRUc2X1BM TF9ESVZfMiA8PCBSSzM1NjhfUEhZUkVHNl9QTExfRElWX1NISUZUOwo+ICsJCQlyb2NrY2hpcF9j b21icGh5X3VwZGF0ZWwocHJpdiwgUkszNTY4X1BIWVJFRzZfUExMX0RJVl9NQVNLLAo+ICsJCQkJ CQkgdmFsLCBSSzM1NjhfUEhZUkVHNik7Cj4gIAo+IC0JCQl3cml0ZWwoUEhZUkVHMThfUExMX0xP T1AsIHByaXYtPm1taW8gKyBQSFlSRUcxOCk7Cj4gLQkJCXdyaXRlbChQSFlSRUcxMV9TVV9UUklN XzBfNywgcHJpdi0+bW1pbyArIFBIWVJFRzExKTsKPiArCQkJd3JpdGVsKFJLMzU2OF9QSFlSRUcx OF9QTExfTE9PUCwgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxOCk7Cj4gKwkJCXdyaXRlbChS SzM1NjhfUEhZUkVHMTFfU1VfVFJJTV8wXzcsIHByaXYtPm1taW8gKyBSSzM1NjhfUEhZUkVHMTEp Owo+ICAJCX0gZWxzZSBpZiAocHJpdi0+dHlwZSA9PSBQSFlfVFlQRV9TQVRBKSB7Cj4gIAkJCS8q IGRvd253YXJkIHNwcmVhZCBzcGVjdHJ1bSArNTAwcHBtICovCj4gLQkJCXZhbCA9IFBIWVJFRzMy X1NTQ19ET1dOV0FSRCA8PCBQSFlSRUczMl9TU0NfRElSX1NISUZUOwo+IC0JCQl2YWwgfD0gUEhZ UkVHMzJfU1NDX09GRlNFVF81MDBQUE0gPDwgUEhZUkVHMzJfU1NDX09GRlNFVF9TSElGVDsKPiAt CQkJcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFBIWVJFRzMyX1NTQ19NQVNLLCB2YWws IFBIWVJFRzMyKTsKPiArCQkJdmFsID0gUkszNTY4X1BIWVJFRzMyX1NTQ19ET1dOV0FSRCA8PCBS SzM1NjhfUEhZUkVHMzJfU1NDX0RJUl9TSElGVDsKPiArCQkJdmFsIHw9IFJLMzU2OF9QSFlSRUcz Ml9TU0NfT0ZGU0VUXzUwMFBQTSA8PAo+ICsJCQkgICAgICAgUkszNTY4X1BIWVJFRzMyX1NTQ19P RkZTRVRfU0hJRlQ7Cj4gKwkJCXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBSSzM1Njhf UEhZUkVHMzJfU1NDX01BU0ssIHZhbCwKPiArCQkJCQkJIFJLMzU2OF9QSFlSRUczMik7Cj4gIAkJ fQo+ICAJCWJyZWFrOwo+ICAKPiBAQCAtNjg3LDIwICs2OTIsMjEgQEAgc3RhdGljIGludCByazM1 NjhfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdikKPiAgCWlm IChwcml2LT5leHRfcmVmY2xrKSB7Cj4gIAkJcm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShw cml2LT5waHlfZ3JmLCAmY2ZnLT5waXBlX2Nsa19leHQsIHRydWUpOwo+ICAJCWlmIChwcml2LT50 eXBlID09IFBIWV9UWVBFX1BDSUUgJiYgcmF0ZSA9PSBSRUZfQ0xPQ0tfMTAwTUh6KSB7Cj4gLQkJ CXZhbCA9IFBIWVJFRzEzX1JFU0lTVEVSX0hJR0hfWiA8PCBQSFlSRUcxM19SRVNJU1RFUl9TSElG VDsKPiAtCQkJdmFsIHw9IFBIWVJFRzEzX0NLUkNWX0FNUDA7Cj4gLQkJCXJvY2tjaGlwX2NvbWJw aHlfdXBkYXRlbChwcml2LCBQSFlSRUcxM19SRVNJU1RFUl9NQVNLLCB2YWwsIFBIWVJFRzEzKTsK PiAtCj4gLQkJCXZhbCA9IHJlYWRsKHByaXYtPm1taW8gKyBQSFlSRUcxNCk7Cj4gLQkJCXZhbCB8 PSBQSFlSRUcxNF9DS1JDVl9BTVAxOwo+IC0JCQl3cml0ZWwodmFsLCBwcml2LT5tbWlvICsgUEhZ UkVHMTQpOwo+ICsJCQl2YWwgPSBSSzM1NjhfUEhZUkVHMTNfUkVTSVNURVJfSElHSF9aIDw8IFJL MzU2OF9QSFlSRUcxM19SRVNJU1RFUl9TSElGVDsKPiArCQkJdmFsIHw9IFJLMzU2OF9QSFlSRUcx M19DS1JDVl9BTVAwOwo+ICsJCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwocHJpdiwgUkszNTY4 X1BIWVJFRzEzX1JFU0lTVEVSX01BU0ssIHZhbCwKPiArCQkJCQkJIFJLMzU2OF9QSFlSRUcxMyk7 Cj4gKwo+ICsJCQl2YWwgPSByZWFkbChwcml2LT5tbWlvICsgUkszNTY4X1BIWVJFRzE0KTsKPiAr CQkJdmFsIHw9IFJLMzU2OF9QSFlSRUcxNF9DS1JDVl9BTVAxOwo+ICsJCQl3cml0ZWwodmFsLCBw cml2LT5tbWlvICsgUkszNTY4X1BIWVJFRzE0KTsKPiAgCQl9Cj4gIAl9Cj4gIAo+ICAJaWYgKHBy aXYtPmVuYWJsZV9zc2MpIHsKPiAtCQl2YWwgPSByZWFkbChwcml2LT5tbWlvICsgUEhZUkVHOCk7 Cj4gLQkJdmFsIHw9IFBIWVJFRzhfU1NDX0VOOwo+IC0JCXdyaXRlbCh2YWwsIHByaXYtPm1taW8g KyBQSFlSRUc4KTsKPiArCQl2YWwgPSByZWFkbChwcml2LT5tbWlvICsgUkszNTY4X1BIWVJFRzgp Owo+ICsJCXZhbCB8PSBSSzM1NjhfUEhZUkVHOF9TU0NfRU47Cj4gKwkJd3JpdGVsKHZhbCwgcHJp di0+bW1pbyArIFJLMzU2OF9QSFlSRUc4KTsKPiAgCX0KPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAt NzU5LDggKzc2NSw4IEBAIHN0YXRpYyBpbnQgcmszNTc2X2NvbWJwaHlfY2ZnKHN0cnVjdCByb2Nr Y2hpcF9jb21icGh5X3ByaXYgKnByaXYpCj4gIAlzd2l0Y2ggKHByaXYtPnR5cGUpIHsKPiAgCWNh c2UgUEhZX1RZUEVfUENJRToKPiAgCQkvKiBTZXQgU1NDIGRvd253YXJkIHNwcmVhZCBzcGVjdHJ1 bSAqLwo+IC0JCXZhbCA9IEZJRUxEX1BSRVAoUEhZUkVHMzJfU1NDX01BU0ssIFBIWVJFRzMyX1NT Q19ET1dOV0FSRCk7Cj4gLQkJcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFBIWVJFRzMy X1NTQ19NQVNLLCB2YWwsIFBIWVJFRzMyKTsKPiArCQl2YWwgPSBGSUVMRF9QUkVQKFJLMzU2OF9Q SFlSRUczMl9TU0NfTUFTSywgUkszNTY4X1BIWVJFRzMyX1NTQ19ET1dOV0FSRCk7Cj4gKwkJcm9j a2NoaXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFJLMzU2OF9QSFlSRUczMl9TU0NfTUFTSywgdmFs LCBSSzM1NjhfUEhZUkVHMzIpOwo+ICAKPiAgCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRl KHByaXYtPnBoeV9ncmYsICZjZmctPmNvbjBfZm9yX3BjaWUsIHRydWUpOwo+ICAJCXJvY2tjaGlw X2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0+cGh5X2dyZiwgJmNmZy0+Y29uMV9mb3JfcGNpZSwg dHJ1ZSk7Cj4gQEAgLTc3MCwzMiArNzc2LDMzIEBAIHN0YXRpYyBpbnQgcmszNTc2X2NvbWJwaHlf Y2ZnKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3ByaXYgKnByaXYpCj4gIAo+ICAJY2FzZSBQSFlf VFlQRV9VU0IzOgo+ICAJCS8qIFNldCBTU0MgZG93bndhcmQgc3ByZWFkIHNwZWN0cnVtICovCj4g LQkJdmFsID0gRklFTERfUFJFUChQSFlSRUczMl9TU0NfTUFTSywgUEhZUkVHMzJfU1NDX0RPV05X QVJEKTsKPiAtCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwocHJpdiwgUEhZUkVHMzJfU1NDX01B U0ssIHZhbCwgUEhZUkVHMzIpOwo+ICsJCXZhbCA9IEZJRUxEX1BSRVAoUkszNTY4X1BIWVJFRzMy X1NTQ19NQVNLLCBSSzM1NjhfUEhZUkVHMzJfU1NDX0RPV05XQVJEKTsKPiArCQlyb2NrY2hpcF9j b21icGh5X3VwZGF0ZWwocHJpdiwgUkszNTY4X1BIWVJFRzMyX1NTQ19NQVNLLCB2YWwsIFJLMzU2 OF9QSFlSRUczMik7Cj4gIAo+ICAJCS8qIEVuYWJsZSBhZGFwdGl2ZSBDVExFIGZvciBVU0IzLjAg UnggKi8KPiAtCQl2YWwgPSByZWFkbChwcml2LT5tbWlvICsgUEhZUkVHMTUpOwo+IC0JCXZhbCB8 PSBQSFlSRUcxNV9DVExFX0VOOwo+IC0JCXdyaXRlbCh2YWwsIHByaXYtPm1taW8gKyBQSFlSRUcx NSk7Cj4gKwkJdmFsID0gcmVhZGwocHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxNSk7Cj4gKwkJ dmFsIHw9IFJLMzU2OF9QSFlSRUcxNV9DVExFX0VOOwo+ICsJCXdyaXRlbCh2YWwsIHByaXYtPm1t aW8gKyBSSzM1NjhfUEhZUkVHMTUpOwo+ICAKPiAgCQkvKiBTZXQgUExMIEtWQ08gZmluZSB0dW5p bmcgc2lnbmFscyAqLwo+IC0JCXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBQSFlSRUcz M19QTExfS1ZDT19NQVNLLCBCSVQoMyksIFBIWVJFRzMzKTsKPiArCQlyb2NrY2hpcF9jb21icGh5 X3VwZGF0ZWwocHJpdiwgUkszNTY4X1BIWVJFRzMzX1BMTF9LVkNPX01BU0ssIEJJVCgzKSwKPiAr CQkJCQkgUkszNTY4X1BIWVJFRzMzKTsKPiAgCj4gIAkJLyogU2V0IFBMTCBMUEYgUjEgdG8gc3Vf dHJpbVsxMDo3XT0xMDAxICovCj4gLQkJd3JpdGVsKFBIWVJFRzEyX1BMTF9MUEZfQURKX1ZBTFVF LCBwcml2LT5tbWlvICsgUEhZUkVHMTIpOwo+ICsJCXdyaXRlbChSSzM1NjhfUEhZUkVHMTJfUExM X0xQRl9BREpfVkFMVUUsIHByaXYtPm1taW8gKyBSSzM1NjhfUEhZUkVHMTIpOwo+ICAKPiAgCQkv KiBTZXQgUExMIGlucHV0IGNsb2NrIGRpdmlkZXIgMS8yICovCj4gLQkJdmFsID0gRklFTERfUFJF UChQSFlSRUc2X1BMTF9ESVZfTUFTSywgUEhZUkVHNl9QTExfRElWXzIpOwo+IC0JCXJvY2tjaGlw X2NvbWJwaHlfdXBkYXRlbChwcml2LCBQSFlSRUc2X1BMTF9ESVZfTUFTSywgdmFsLCBQSFlSRUc2 KTsKPiArCQl2YWwgPSBGSUVMRF9QUkVQKFJLMzU2OF9QSFlSRUc2X1BMTF9ESVZfTUFTSywgUksz NTY4X1BIWVJFRzZfUExMX0RJVl8yKTsKPiArCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwocHJp diwgUkszNTY4X1BIWVJFRzZfUExMX0RJVl9NQVNLLCB2YWwsIFJLMzU2OF9QSFlSRUc2KTsKPiAg Cj4gIAkJLyogU2V0IFBMTCBsb29wIGRpdmlkZXIgKi8KPiAtCQl3cml0ZWwoUEhZUkVHMThfUExM X0xPT1AsIHByaXYtPm1taW8gKyBQSFlSRUcxOCk7Cj4gKwkJd3JpdGVsKFJLMzU2OF9QSFlSRUcx OF9QTExfTE9PUCwgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxOCk7Cj4gIAo+ICAJCS8qIFNl dCBQTEwgS1ZDTyB0byBtaW4gYW5kIHNldCBQTEwgY2hhcmdlIHB1bXAgY3VycmVudCB0byBtYXgg Ki8KPiAtCQl3cml0ZWwoUEhZUkVHMTFfU1VfVFJJTV8wXzcsIHByaXYtPm1taW8gKyBQSFlSRUcx MSk7Cj4gKwkJd3JpdGVsKFJLMzU2OF9QSFlSRUcxMV9TVV9UUklNXzBfNywgcHJpdi0+bW1pbyAr IFJLMzU2OF9QSFlSRUcxMSk7Cj4gIAo+ICAJCS8qIFNldCBSeCBzcXVlbGNoIGlucHV0IGZpbGxl ciBiYW5kd2lkdGggKi8KPiAtCQl3cml0ZWwoUEhZUkVHMjFfUlhfU1FVRUxDSF9WQUwsIHByaXYt Pm1taW8gKyBQSFlSRUcyMSk7Cj4gKwkJd3JpdGVsKFJLMzU3Nl9QSFlSRUcyMV9SWF9TUVVFTENI X1ZBTCwgcHJpdi0+bW1pbyArIFJLMzU3Nl9QSFlSRUcyMSk7Cj4gIAo+ICAJCXJvY2tjaGlwX2Nv bWJwaHlfcGFyYW1fd3JpdGUocHJpdi0+cGh5X2dyZiwgJmNmZy0+cGlwZV90eGNvbXBfc2VsLCBm YWxzZSk7Cj4gIAkJcm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LT5waHlfZ3JmLCAm Y2ZnLT5waXBlX3R4ZWxlY19zZWwsIGZhbHNlKTsKPiBAQCAtODA0LDE0ICs4MTEsMTQgQEAgc3Rh dGljIGludCByazM1NzZfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAq cHJpdikKPiAgCj4gIAljYXNlIFBIWV9UWVBFX1NBVEE6Cj4gIAkJLyogRW5hYmxlIGFkYXB0aXZl IENUTEUgZm9yIFNBVEEgUnggKi8KPiAtCQl2YWwgPSByZWFkbChwcml2LT5tbWlvICsgUEhZUkVH MTUpOwo+IC0JCXZhbCB8PSBQSFlSRUcxNV9DVExFX0VOOwo+IC0JCXdyaXRlbCh2YWwsIHByaXYt Pm1taW8gKyBQSFlSRUcxNSk7Cj4gKwkJdmFsID0gcmVhZGwocHJpdi0+bW1pbyArIFJLMzU2OF9Q SFlSRUcxNSk7Cj4gKwkJdmFsIHw9IFJLMzU2OF9QSFlSRUcxNV9DVExFX0VOOwo+ICsJCXdyaXRl bCh2YWwsIHByaXYtPm1taW8gKyBSSzM1NjhfUEhZUkVHMTUpOwo+ICAKPiAgCQkvKiBTZXQgdHhf cnRlcm0gPSA1MCBvaG0gYW5kIHJ4X3J0ZXJtID0gNDMuNSBvaG0gKi8KPiAtCQl2YWwgPSBQSFlS RUc3X1RYX1JURVJNXzUwT0hNIDw8IFBIWVJFRzdfVFhfUlRFUk1fU0hJRlQ7Cj4gLQkJdmFsIHw9 IFBIWVJFRzdfUlhfUlRFUk1fNDRPSE0gPDwgUEhZUkVHN19SWF9SVEVSTV9TSElGVDsKPiAtCQl3 cml0ZWwodmFsLCBwcml2LT5tbWlvICsgUEhZUkVHNyk7Cj4gKwkJdmFsID0gUkszNTY4X1BIWVJF RzdfVFhfUlRFUk1fNTBPSE0gPDwgUkszNTY4X1BIWVJFRzdfVFhfUlRFUk1fU0hJRlQ7Cj4gKwkJ dmFsIHw9IFJLMzU2OF9QSFlSRUc3X1JYX1JURVJNXzQ0T0hNIDw8IFJLMzU2OF9QSFlSRUc3X1JY X1JURVJNX1NISUZUOwo+ICsJCXdyaXRlbCh2YWwsIHByaXYtPm1taW8gKyBSSzM1NjhfUEhZUkVH Nyk7Cj4gIAo+ICAJCXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0+cGh5X2dyZiwg JmNmZy0+Y29uMF9mb3Jfc2F0YSwgdHJ1ZSk7Cj4gIAkJcm9ja2NoaXBfY29tYnBoeV9wYXJhbV93 cml0ZShwcml2LT5waHlfZ3JmLCAmY2ZnLT5jb24xX2Zvcl9zYXRhLCB0cnVlKTsKPiBAQCAtODMz LDE5ICs4NDAsMjEgQEAgc3RhdGljIGludCByazM1NzZfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tj aGlwX2NvbWJwaHlfcHJpdiAqcHJpdikKPiAgCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRl KHByaXYtPnBoeV9ncmYsICZjZmctPnBpcGVfY2xrXzI0bSwgdHJ1ZSk7Cj4gIAkJaWYgKHByaXYt PnR5cGUgPT0gUEhZX1RZUEVfVVNCMyB8fCBwcml2LT50eXBlID09IFBIWV9UWVBFX1NBVEEpIHsK PiAgCQkJLyogU2V0IHNzY19jbnRbOTowXT0wMTAxMTExMTAxICYgMzEuNUtIeiAqLwo+IC0JCQl2 YWwgPSBGSUVMRF9QUkVQKFBIWVJFRzE1X1NTQ19DTlRfTUFTSywgUEhZUkVHMTVfU1NDX0NOVF9W QUxVRSk7Cj4gLQkJCXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBQSFlSRUcxNV9TU0Nf Q05UX01BU0ssCj4gLQkJCQkJCSB2YWwsIFBIWVJFRzE1KTsKPiArCQkJdmFsID0gRklFTERfUFJF UChSSzM1NjhfUEhZUkVHMTVfU1NDX0NOVF9NQVNLLAo+ICsJCQkJCSBSSzM1NjhfUEhZUkVHMTVf U1NDX0NOVF9WQUxVRSk7Cj4gKwkJCXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBSSzM1 NjhfUEhZUkVHMTVfU1NDX0NOVF9NQVNLLAo+ICsJCQkJCQkgdmFsLCBSSzM1NjhfUEhZUkVHMTUp Owo+ICAKPiAtCQkJd3JpdGVsKFBIWVJFRzE2X1NTQ19DTlRfVkFMVUUsIHByaXYtPm1taW8gKyBQ SFlSRUcxNik7Cj4gKwkJCXdyaXRlbChSSzM1NjhfUEhZUkVHMTZfU1NDX0NOVF9WQUxVRSwgcHJp di0+bW1pbyArIFJLMzU2OF9QSFlSRUcxNik7Cj4gIAkJfSBlbHNlIGlmIChwcml2LT50eXBlID09 IFBIWV9UWVBFX1BDSUUpIHsKPiAgCQkJLyogUExMIEtWQ08gdHVuaW5nIGZpbmUgKi8KPiAtCQkJ dmFsID0gRklFTERfUFJFUChQSFlSRUczM19QTExfS1ZDT19NQVNLLCBQSFlSRUczM19QTExfS1ZD T19WQUxVRV9SSzM1NzYpOwo+IC0JCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwocHJpdiwgUEhZ UkVHMzNfUExMX0tWQ09fTUFTSywKPiAtCQkJCQkJIHZhbCwgUEhZUkVHMzMpOwo+ICsJCQl2YWwg PSBGSUVMRF9QUkVQKFJLMzU2OF9QSFlSRUczM19QTExfS1ZDT19NQVNLLAo+ICsJCQkJCSBSSzM1 NzZfUEhZUkVHMzNfUExMX0tWQ09fVkFMVUUpOwo+ICsJCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0 ZWwocHJpdiwgUkszNTY4X1BIWVJFRzMzX1BMTF9LVkNPX01BU0ssCj4gKwkJCQkJCSB2YWwsIFJL MzU2OF9QSFlSRUczMyk7Cj4gIAo+ICAJCQkvKiBTZXQgdXAgcnhfcGNrIGludmVydCBhbmQgcngg bXNiIHRvIGRpc2FibGUgKi8KPiAtCQkJd3JpdGVsKDB4MDAsIHByaXYtPm1taW8gKyBQSFlSRUcy Nyk7Cj4gKwkJCXdyaXRlbCgweDAwLCBwcml2LT5tbWlvICsgUkszNTg4X1BIWVJFRzI3KTsKPiAg Cj4gIAkJCS8qCj4gIAkJCSAqIFNldCB1cCBTVSBhZGp1c3Qgc2lnbmFsOgo+IEBAIC04NTMsMTEg Kzg2MiwxMSBAQCBzdGF0aWMgaW50IHJrMzU3Nl9jb21icGh5X2NmZyhzdHJ1Y3Qgcm9ja2NoaXBf Y29tYnBoeV9wcml2ICpwcml2KQo+ICAJCQkgKiBzdV90cmltWzE1OjhdLCAgUExMIExQRiBSMSBh ZHVqc3QgYml0c1s5OjddPTMnYjAxMQo+ICAJCQkgKiBzdV90cmltWzMxOjI0XSwgQ0tEUlYgYWRq dXN0Cj4gIAkJCSAqLwo+IC0JCQl3cml0ZWwoMHg5MCwgcHJpdi0+bW1pbyArIFBIWVJFRzExKTsK PiAtCQkJd3JpdGVsKDB4MDIsIHByaXYtPm1taW8gKyBQSFlSRUcxMik7Cj4gLQkJCXdyaXRlbCgw eDU3LCBwcml2LT5tbWlvICsgUEhZUkVHMTQpOwo+ICsJCQl3cml0ZWwoMHg5MCwgcHJpdi0+bW1p byArIFJLMzU2OF9QSFlSRUcxMSk7Cj4gKwkJCXdyaXRlbCgweDAyLCBwcml2LT5tbWlvICsgUksz NTY4X1BIWVJFRzEyKTsKPiArCQkJd3JpdGVsKDB4NTcsIHByaXYtPm1taW8gKyBSSzM1NjhfUEhZ UkVHMTQpOwo+ICAKPiAtCQkJd3JpdGVsKFBIWVJFRzE2X1NTQ19DTlRfVkFMVUUsIHByaXYtPm1t aW8gKyBQSFlSRUcxNik7Cj4gKwkJCXdyaXRlbChSSzM1NjhfUEhZUkVHMTZfU1NDX0NOVF9WQUxV RSwgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxNik7Cj4gIAkJfQo+ICAJCWJyZWFrOwo+ICAK PiBAQCAtODY5LDE1ICs4NzgsMTYgQEAgc3RhdGljIGludCByazM1NzZfY29tYnBoeV9jZmcoc3Ry dWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdikKPiAgCQlyb2NrY2hpcF9jb21icGh5X3Bh cmFtX3dyaXRlKHByaXYtPnBoeV9ncmYsICZjZmctPnBpcGVfY2xrXzEwMG0sIHRydWUpOwo+ICAJ CWlmIChwcml2LT50eXBlID09IFBIWV9UWVBFX1BDSUUpIHsKPiAgCQkJLyogZ2F0ZV90eF9wY2tf c2VsIGxlbmd0aCBzZWxlY3Qgd29yayBmb3IgTDFTUyAqLwo+IC0JCQl3cml0ZWwoMHhjMCwgcHJp di0+bW1pbyArIFBIWVJFRzMwKTsKPiArCQkJd3JpdGVsKDB4YzAsIHByaXYtPm1taW8gKyBSSzM1 NzZfUEhZUkVHMzApOwo+ICAKPiAgCQkJLyogUExMIEtWQ08gdHVuaW5nIGZpbmUgKi8KPiAtCQkJ dmFsID0gRklFTERfUFJFUChQSFlSRUczM19QTExfS1ZDT19NQVNLLCBQSFlSRUczM19QTExfS1ZD T19WQUxVRV9SSzM1NzYpOwo+IC0JCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwocHJpdiwgUEhZ UkVHMzNfUExMX0tWQ09fTUFTSywKPiAtCQkJCQkJIHZhbCwgUEhZUkVHMzMpOwo+ICsJCQl2YWwg PSBGSUVMRF9QUkVQKFJLMzU2OF9QSFlSRUczM19QTExfS1ZDT19NQVNLLAo+ICsJCQkJCSBSSzM1 NzZfUEhZUkVHMzNfUExMX0tWQ09fVkFMVUUpOwo+ICsJCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0 ZWwocHJpdiwgUkszNTY4X1BIWVJFRzMzX1BMTF9LVkNPX01BU0ssCj4gKwkJCQkJCSB2YWwsIFJL MzU2OF9QSFlSRUczMyk7Cj4gIAo+ICAJCQkvKiBTZXQgdXAgcnhfdHJpbTogUExMIExQRiBDMSA4 NXBmIFIxIDEuMjVrb2htICovCj4gLQkJCXdyaXRlbCgweDRjLCBwcml2LT5tbWlvICsgUEhZUkVH MjcpOwo+ICsJCQl3cml0ZWwoMHg0YywgcHJpdi0+bW1pbyArIFJLMzU4OF9QSFlSRUcyNyk7Cj4g IAo+ICAJCQkvKgo+ICAJCQkgKiBTZXQgdXAgU1UgYWRqdXN0IHNpZ25hbDoKPiBAQCAtODg3LDIw ICs4OTcsMjMgQEAgc3RhdGljIGludCByazM1NzZfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tjaGlw X2NvbWJwaHlfcHJpdiAqcHJpdikKPiAgCQkJICogc3VfdHJpbVsyMzoxNl0sIENLUkNWIGFkanVz dAo+ICAJCQkgKiBzdV90cmltWzMxOjI0XSwgQ0tEUlYgYWRqdXN0Cj4gIAkJCSAqLwo+IC0JCQl3 cml0ZWwoMHg5MCwgcHJpdi0+bW1pbyArIFBIWVJFRzExKTsKPiAtCQkJd3JpdGVsKDB4NDMsIHBy aXYtPm1taW8gKyBQSFlSRUcxMik7Cj4gLQkJCXdyaXRlbCgweDg4LCBwcml2LT5tbWlvICsgUEhZ UkVHMTMpOwo+IC0JCQl3cml0ZWwoMHg1NiwgcHJpdi0+bW1pbyArIFBIWVJFRzE0KTsKPiArCQkJ d3JpdGVsKDB4OTAsIHByaXYtPm1taW8gKyBSSzM1NjhfUEhZUkVHMTEpOwo+ICsJCQl3cml0ZWwo MHg0MywgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxMik7Cj4gKwkJCXdyaXRlbCgweDg4LCBw cml2LT5tbWlvICsgUkszNTY4X1BIWVJFRzEzKTsKPiArCQkJd3JpdGVsKDB4NTYsIHByaXYtPm1t aW8gKyBSSzM1NjhfUEhZUkVHMTQpOwo+ICAJCX0gZWxzZSBpZiAocHJpdi0+dHlwZSA9PSBQSFlf VFlQRV9TQVRBKSB7Cj4gIAkJCS8qIGRvd253YXJkIHNwcmVhZCBzcGVjdHJ1bSArNTAwcHBtICov Cj4gLQkJCXZhbCA9IEZJRUxEX1BSRVAoUEhZUkVHMzJfU1NDX0RJUl9NQVNLLCBQSFlSRUczMl9T U0NfRE9XTldBUkQpOwo+IC0JCQl2YWwgfD0gRklFTERfUFJFUChQSFlSRUczMl9TU0NfT0ZGU0VU X01BU0ssIFBIWVJFRzMyX1NTQ19PRkZTRVRfNTAwUFBNKTsKPiAtCQkJcm9ja2NoaXBfY29tYnBo eV91cGRhdGVsKHByaXYsIFBIWVJFRzMyX1NTQ19NQVNLLCB2YWwsIFBIWVJFRzMyKTsKPiArCQkJ dmFsID0gRklFTERfUFJFUChSSzM1NjhfUEhZUkVHMzJfU1NDX0RJUl9NQVNLLAo+ICsJCQkJCSBS SzM1NjhfUEhZUkVHMzJfU1NDX0RPV05XQVJEKTsKPiArCQkJdmFsIHw9IEZJRUxEX1BSRVAoUksz NTY4X1BIWVJFRzMyX1NTQ19PRkZTRVRfTUFTSywKPiArCQkJCQkgIFJLMzU2OF9QSFlSRUczMl9T U0NfT0ZGU0VUXzUwMFBQTSk7Cj4gKwkJCXJvY2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBS SzM1NjhfUEhZUkVHMzJfU1NDX01BU0ssIHZhbCwKPiArCQkJCQkJIFJLMzU2OF9QSFlSRUczMik7 Cj4gIAo+ICAJCQkvKiBzc2MgcHBtIGFkanVzdCB0byAzNTAwcHBtICovCj4gLQkJCXJvY2tjaGlw X2NvbWJwaHlfdXBkYXRlbChwcml2LCBQSFlSRUcxMF9TU0NfUENNX01BU0ssCj4gLQkJCQkJCSBQ SFlSRUcxMF9TU0NfUENNXzM1MDBQUE0sCj4gLQkJCQkJCSBQSFlSRUcxMCk7Cj4gKwkJCXJvY2tj aGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBSSzM1NzZfUEhZUkVHMTBfU1NDX1BDTV9NQVNLLAo+ ICsJCQkJCQkgUkszNTc2X1BIWVJFRzEwX1NTQ19QQ01fMzUwMFBQTSwKPiArCQkJCQkJIFJLMzU3 Nl9QSFlSRUcxMCk7Cj4gIAkJfQo+ICAJCWJyZWFrOwo+ICAKPiBAQCAtOTEyLDEyICs5MjUsMTMg QEAgc3RhdGljIGludCByazM1NzZfY29tYnBoeV9jZmcoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlf cHJpdiAqcHJpdikKPiAgCWlmIChwcml2LT5leHRfcmVmY2xrKSB7Cj4gIAkJcm9ja2NoaXBfY29t YnBoeV9wYXJhbV93cml0ZShwcml2LT5waHlfZ3JmLCAmY2ZnLT5waXBlX2Nsa19leHQsIHRydWUp Owo+ICAJCWlmIChwcml2LT50eXBlID09IFBIWV9UWVBFX1BDSUUgJiYgcmF0ZSA9PSBSRUZfQ0xP Q0tfMTAwTUh6KSB7Cj4gLQkJCXZhbCA9IEZJRUxEX1BSRVAoUEhZUkVHMzNfUExMX0tWQ09fTUFT SywgUEhZUkVHMzNfUExMX0tWQ09fVkFMVUVfUkszNTc2KTsKPiAtCQkJcm9ja2NoaXBfY29tYnBo eV91cGRhdGVsKHByaXYsIFBIWVJFRzMzX1BMTF9LVkNPX01BU0ssCj4gLQkJCQkJCSB2YWwsIFBI WVJFRzMzKTsKPiArCQkJdmFsID0gRklFTERfUFJFUChSSzM1NjhfUEhZUkVHMzNfUExMX0tWQ09f TUFTSywKPiArCQkJCQkgUkszNTc2X1BIWVJFRzMzX1BMTF9LVkNPX1ZBTFVFKTsKPiArCQkJcm9j a2NoaXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFJLMzU2OF9QSFlSRUczM19QTExfS1ZDT19NQVNL LAo+ICsJCQkJCQkgdmFsLCBSSzM1NjhfUEhZUkVHMzMpOwo+ICAKPiAgCQkJLyogU2V0IHVwIHJ4 X3RyaW06IFBMTCBMUEYgQzEgODVwZiBSMSAyLjVrb2htICovCj4gLQkJCXdyaXRlbCgweDBjLCBw cml2LT5tbWlvICsgUEhZUkVHMjcpOwo+ICsJCQl3cml0ZWwoMHgwYywgcHJpdi0+bW1pbyArIFJL MzU4OF9QSFlSRUcyNyk7Cj4gIAo+ICAJCQkvKgo+ICAJCQkgKiBTZXQgdXAgU1UgYWRqdXN0IHNp Z25hbDoKPiBAQCAtOTI3LDI1ICs5NDEsMjUgQEAgc3RhdGljIGludCByazM1NzZfY29tYnBoeV9j Zmcoc3RydWN0IHJvY2tjaGlwX2NvbWJwaHlfcHJpdiAqcHJpdikKPiAgCQkJICogc3VfdHJpbVsy MzoxNl0sIENLUkNWIGFkanVzdAo+ICAJCQkgKiBzdV90cmltWzMxOjI0XSwgQ0tEUlYgYWRqdXN0 Cj4gIAkJCSAqLwo+IC0JCQl3cml0ZWwoMHg5MCwgcHJpdi0+bW1pbyArIFBIWVJFRzExKTsKPiAt CQkJd3JpdGVsKDB4NDMsIHByaXYtPm1taW8gKyBQSFlSRUcxMik7Cj4gLQkJCXdyaXRlbCgweDg4 LCBwcml2LT5tbWlvICsgUEhZUkVHMTMpOwo+IC0JCQl3cml0ZWwoMHg1NiwgcHJpdi0+bW1pbyAr IFBIWVJFRzE0KTsKPiArCQkJd3JpdGVsKDB4OTAsIHByaXYtPm1taW8gKyBSSzM1NjhfUEhZUkVH MTEpOwo+ICsJCQl3cml0ZWwoMHg0MywgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxMik7Cj4g KwkJCXdyaXRlbCgweDg4LCBwcml2LT5tbWlvICsgUkszNTY4X1BIWVJFRzEzKTsKPiArCQkJd3Jp dGVsKDB4NTYsIHByaXYtPm1taW8gKyBSSzM1NjhfUEhZUkVHMTQpOwo+ICAJCX0KPiAgCX0KPiAg Cj4gIAlpZiAocHJpdi0+ZW5hYmxlX3NzYykgewo+IC0JCXZhbCA9IHJlYWRsKHByaXYtPm1taW8g KyBQSFlSRUc4KTsKPiAtCQl2YWwgfD0gUEhZUkVHOF9TU0NfRU47Cj4gLQkJd3JpdGVsKHZhbCwg cHJpdi0+bW1pbyArIFBIWVJFRzgpOwo+ICsJCXZhbCA9IHJlYWRsKHByaXYtPm1taW8gKyBSSzM1 NjhfUEhZUkVHOCk7Cj4gKwkJdmFsIHw9IFJLMzU2OF9QSFlSRUc4X1NTQ19FTjsKPiArCQl3cml0 ZWwodmFsLCBwcml2LT5tbWlvICsgUkszNTY4X1BIWVJFRzgpOwo+ICAKPiAgCQlpZiAocHJpdi0+ dHlwZSA9PSBQSFlfVFlQRV9QQ0lFICYmIHJhdGUgPT0gUkVGX0NMT0NLXzI0TUh6KSB7Cj4gIAkJ CS8qIFNldCBQTEwgbG9vcCBkaXZpZGVyICovCj4gLQkJCXdyaXRlbCgweDAwLCBwcml2LT5tbWlv ICsgUEhZUkVHMTcpOwo+IC0JCQl3cml0ZWwoUEhZUkVHMThfUExMX0xPT1AsIHByaXYtPm1taW8g KyBQSFlSRUcxOCk7Cj4gKwkJCXdyaXRlbCgweDAwLCBwcml2LT5tbWlvICsgUkszNTc2X1BIWVJF RzE3KTsKPiArCQkJd3JpdGVsKFJLMzU2OF9QSFlSRUcxOF9QTExfTE9PUCwgcHJpdi0+bW1pbyAr IFJLMzU2OF9QSFlSRUcxOCk7Cj4gIAo+ICAJCQkvKiBTZXQgdXAgcnhfcGNrIGludmVydCBhbmQg cnggbXNiIHRvIGRpc2FibGUgKi8KPiAtCQkJd3JpdGVsKDB4MDAsIHByaXYtPm1taW8gKyBQSFlS RUcyNyk7Cj4gKwkJCXdyaXRlbCgweDAwLCBwcml2LT5tbWlvICsgUkszNTg4X1BIWVJFRzI3KTsK PiAgCj4gIAkJCS8qCj4gIAkJCSAqIFNldCB1cCBTVSBhZGp1c3Qgc2lnbmFsOgo+IEBAIC05NTQs MTYgKzk2OCwxNyBAQCBzdGF0aWMgaW50IHJrMzU3Nl9jb21icGh5X2NmZyhzdHJ1Y3Qgcm9ja2No aXBfY29tYnBoeV9wcml2ICpwcml2KQo+ICAJCQkgKiBzdV90cmltWzIzOjE2XSwgQ0tSQ1YgYWRq dXN0Cj4gIAkJCSAqIHN1X3RyaW1bMzE6MjRdLCBDS0RSViBhZGp1c3QKPiAgCQkJICovCj4gLQkJ CXdyaXRlbCgweDkwLCBwcml2LT5tbWlvICsgUEhZUkVHMTEpOwo+IC0JCQl3cml0ZWwoMHgwMiwg cHJpdi0+bW1pbyArIFBIWVJFRzEyKTsKPiAtCQkJd3JpdGVsKDB4MDgsIHByaXYtPm1taW8gKyBQ SFlSRUcxMyk7Cj4gLQkJCXdyaXRlbCgweDU3LCBwcml2LT5tbWlvICsgUEhZUkVHMTQpOwo+IC0J CQl3cml0ZWwoMHg0MCwgcHJpdi0+bW1pbyArIFBIWVJFRzE1KTsKPiArCQkJd3JpdGVsKDB4OTAs IHByaXYtPm1taW8gKyBSSzM1NjhfUEhZUkVHMTEpOwo+ICsJCQl3cml0ZWwoMHgwMiwgcHJpdi0+ bW1pbyArIFJLMzU2OF9QSFlSRUcxMik7Cj4gKwkJCXdyaXRlbCgweDA4LCBwcml2LT5tbWlvICsg UkszNTY4X1BIWVJFRzEzKTsKPiArCQkJd3JpdGVsKDB4NTcsIHByaXYtPm1taW8gKyBSSzM1Njhf UEhZUkVHMTQpOwo+ICsJCQl3cml0ZWwoMHg0MCwgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcx NSk7Cj4gIAo+IC0JCQl3cml0ZWwoUEhZUkVHMTZfU1NDX0NOVF9WQUxVRSwgcHJpdi0+bW1pbyAr IFBIWVJFRzE2KTsKPiArCQkJd3JpdGVsKFJLMzU2OF9QSFlSRUcxNl9TU0NfQ05UX1ZBTFVFLCBw cml2LT5tbWlvICsgUkszNTY4X1BIWVJFRzE2KTsKPiAgCj4gLQkJCXZhbCA9IEZJRUxEX1BSRVAo UEhZUkVHMzNfUExMX0tWQ09fTUFTSywgUEhZUkVHMzNfUExMX0tWQ09fVkFMVUVfUkszNTc2KTsK PiAtCQkJd3JpdGVsKHZhbCwgcHJpdi0+bW1pbyArIFBIWVJFRzMzKTsKPiArCQkJdmFsID0gRklF TERfUFJFUChSSzM1NjhfUEhZUkVHMzNfUExMX0tWQ09fTUFTSywKPiArCQkJCQkgUkszNTc2X1BI WVJFRzMzX1BMTF9LVkNPX1ZBTFVFKTsKPiArCQkJd3JpdGVsKHZhbCwgcHJpdi0+bW1pbyArIFJL MzU2OF9QSFlSRUczMyk7Cj4gIAkJfQo+ICAJfQo+ICAKPiBAQCAtMTAzMywzMCArMTA0OCwyOCBA QCBzdGF0aWMgaW50IHJrMzU4OF9jb21icGh5X2NmZyhzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9w cml2ICpwcml2KQo+ICAJCWJyZWFrOwo+ICAJY2FzZSBQSFlfVFlQRV9VU0IzOgo+ICAJCS8qIFNl dCBTU0MgZG93bndhcmQgc3ByZWFkIHNwZWN0cnVtICovCj4gLQkJcm9ja2NoaXBfY29tYnBoeV91 cGRhdGVsKHByaXYsIFBIWVJFRzMyX1NTQ19NQVNLLAo+IC0JCQkJCSBQSFlSRUczMl9TU0NfRE9X TldBUkQgPDwgUEhZUkVHMzJfU1NDX0RJUl9TSElGVCwKPiAtCQkJCQkgUEhZUkVHMzIpOwo+ICsJ CXZhbCA9IFJLMzU2OF9QSFlSRUczMl9TU0NfRE9XTldBUkQgPDwgUkszNTY4X1BIWVJFRzMyX1NT Q19ESVJfU0hJRlQ7Cj4gKwkJcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFJLMzU2OF9Q SFlSRUczMl9TU0NfTUFTSywgdmFsLCBSSzM1NjhfUEhZUkVHMzIpOwo+ICAKPiAgCQkvKiBFbmFi bGUgYWRhcHRpdmUgQ1RMRSBmb3IgVVNCMy4wIFJ4LiAqLwo+IC0JCXZhbCA9IHJlYWRsKHByaXYt Pm1taW8gKyBQSFlSRUcxNSk7Cj4gLQkJdmFsIHw9IFBIWVJFRzE1X0NUTEVfRU47Cj4gLQkJd3Jp dGVsKHZhbCwgcHJpdi0+bW1pbyArIFBIWVJFRzE1KTsKPiArCQl2YWwgPSByZWFkbChwcml2LT5t bWlvICsgUkszNTY4X1BIWVJFRzE1KTsKPiArCQl2YWwgfD0gUkszNTY4X1BIWVJFRzE1X0NUTEVf RU47Cj4gKwkJd3JpdGVsKHZhbCwgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxNSk7Cj4gIAo+ ICAJCS8qIFNldCBQTEwgS1ZDTyBmaW5lIHR1bmluZyBzaWduYWxzLiAqLwo+IC0JCXJvY2tjaGlw X2NvbWJwaHlfdXBkYXRlbChwcml2LCBQSFlSRUczM19QTExfS1ZDT19NQVNLLAo+IC0JCQkJCSBQ SFlSRUczM19QTExfS1ZDT19WQUxVRSA8PCBQSFlSRUczM19QTExfS1ZDT19TSElGVCwKPiAtCQkJ CQkgUEhZUkVHMzMpOwo+ICsJCXZhbCA9IFJLMzU2OF9QSFlSRUczM19QTExfS1ZDT19WQUxVRSA8 PCBSSzM1NjhfUEhZUkVHMzNfUExMX0tWQ09fU0hJRlQsCj4gKwkJcm9ja2NoaXBfY29tYnBoeV91 cGRhdGVsKHByaXYsIFJLMzU2OF9QSFlSRUczM19QTExfS1ZDT19NQVNLLCB2YWwsIFJLMzU2OF9Q SFlSRUczMyk7Cj4gIAo+ICAJCS8qIEVuYWJsZSBjb250cm9sbGluZyByYW5kb20gaml0dGVyLiAq Lwo+IC0JCXdyaXRlbChQSFlSRUcxMl9QTExfTFBGX0FESl9WQUxVRSwgcHJpdi0+bW1pbyArIFBI WVJFRzEyKTsKPiArCQl3cml0ZWwoUkszNTY4X1BIWVJFRzEyX1BMTF9MUEZfQURKX1ZBTFVFLCBw cml2LT5tbWlvICsgUkszNTY4X1BIWVJFRzEyKTsKPiAgCj4gIAkJLyogU2V0IFBMTCBpbnB1dCBj bG9jayBkaXZpZGVyIDEvMi4gKi8KPiAtCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwocHJpdiwg UEhZUkVHNl9QTExfRElWX01BU0ssCj4gLQkJCQkJIFBIWVJFRzZfUExMX0RJVl8yIDw8IFBIWVJF RzZfUExMX0RJVl9TSElGVCwKPiAtCQkJCQkgUEhZUkVHNik7Cj4gKwkJcm9ja2NoaXBfY29tYnBo eV91cGRhdGVsKHByaXYsIFJLMzU2OF9QSFlSRUc2X1BMTF9ESVZfTUFTSywKPiArCQkJCQkgUksz NTY4X1BIWVJFRzZfUExMX0RJVl8yIDw8IFJLMzU2OF9QSFlSRUc2X1BMTF9ESVZfU0hJRlQsCj4g KwkJCQkJIFJLMzU2OF9QSFlSRUc2KTsKPiAgCj4gLQkJd3JpdGVsKFBIWVJFRzE4X1BMTF9MT09Q LCBwcml2LT5tbWlvICsgUEhZUkVHMTgpOwo+IC0JCXdyaXRlbChQSFlSRUcxMV9TVV9UUklNXzBf NywgcHJpdi0+bW1pbyArIFBIWVJFRzExKTsKPiArCQl3cml0ZWwoUkszNTY4X1BIWVJFRzE4X1BM TF9MT09QLCBwcml2LT5tbWlvICsgUkszNTY4X1BIWVJFRzE4KTsKPiArCQl3cml0ZWwoUkszNTY4 X1BIWVJFRzExX1NVX1RSSU1fMF83LCBwcml2LT5tbWlvICsgUkszNTY4X1BIWVJFRzExKTsKPiAg Cj4gIAkJcm9ja2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LT5waHlfZ3JmLCAmY2ZnLT5w aXBlX3R4Y29tcF9zZWwsIGZhbHNlKTsKPiAgCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRl KHByaXYtPnBoeV9ncmYsICZjZmctPnBpcGVfdHhlbGVjX3NlbCwgZmFsc2UpOwo+IEBAIC0xMDY0 LDE2ICsxMDc3LDE2IEBAIHN0YXRpYyBpbnQgcmszNTg4X2NvbWJwaHlfY2ZnKHN0cnVjdCByb2Nr Y2hpcF9jb21icGh5X3ByaXYgKnByaXYpCj4gIAkJYnJlYWs7Cj4gIAljYXNlIFBIWV9UWVBFX1NB VEE6Cj4gIAkJLyogRW5hYmxlIGFkYXB0aXZlIENUTEUgZm9yIFNBVEEgUnguICovCj4gLQkJdmFs ID0gcmVhZGwocHJpdi0+bW1pbyArIFBIWVJFRzE1KTsKPiAtCQl2YWwgfD0gUEhZUkVHMTVfQ1RM RV9FTjsKPiAtCQl3cml0ZWwodmFsLCBwcml2LT5tbWlvICsgUEhZUkVHMTUpOwo+ICsJCXZhbCA9 IHJlYWRsKHByaXYtPm1taW8gKyBSSzM1NjhfUEhZUkVHMTUpOwo+ICsJCXZhbCB8PSBSSzM1Njhf UEhZUkVHMTVfQ1RMRV9FTjsKPiArCQl3cml0ZWwodmFsLCBwcml2LT5tbWlvICsgUkszNTY4X1BI WVJFRzE1KTsKPiAgCQkvKgo+ICAJCSAqIFNldCB0eF9ydGVybT01MG9obSBhbmQgcnhfcnRlcm09 NDRvaG0gZm9yIFNBVEEuCj4gIAkJICogMDogNjBvaG0sIDg6IDUwb2htIDE1OiA0NG9obSAoYnkg c3RlcCBhYm9ydCAxb2htKQo+ICAJCSAqLwo+IC0JCXZhbCA9IFBIWVJFRzdfVFhfUlRFUk1fNTBP SE0gPDwgUEhZUkVHN19UWF9SVEVSTV9TSElGVDsKPiAtCQl2YWwgfD0gUEhZUkVHN19SWF9SVEVS TV80NE9ITSA8PCBQSFlSRUc3X1JYX1JURVJNX1NISUZUOwo+IC0JCXdyaXRlbCh2YWwsIHByaXYt Pm1taW8gKyBQSFlSRUc3KTsKPiArCQl2YWwgPSBSSzM1NjhfUEhZUkVHN19UWF9SVEVSTV81ME9I TSA8PCBSSzM1NjhfUEhZUkVHN19UWF9SVEVSTV9TSElGVDsKPiArCQl2YWwgfD0gUkszNTY4X1BI WVJFRzdfUlhfUlRFUk1fNDRPSE0gPDwgUkszNTY4X1BIWVJFRzdfUlhfUlRFUk1fU0hJRlQ7Cj4g KwkJd3JpdGVsKHZhbCwgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUc3KTsKPiAgCj4gIAkJcm9j a2NoaXBfY29tYnBoeV9wYXJhbV93cml0ZShwcml2LT5waHlfZ3JmLCAmY2ZnLT5jb24wX2Zvcl9z YXRhLCB0cnVlKTsKPiAgCQlyb2NrY2hpcF9jb21icGh5X3BhcmFtX3dyaXRlKHByaXYtPnBoeV9n cmYsICZjZmctPmNvbjFfZm9yX3NhdGEsIHRydWUpOwo+IEBAIC0xMDk1LDExICsxMTA4LDExIEBA IHN0YXRpYyBpbnQgcmszNTg4X2NvbWJwaHlfY2ZnKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3By aXYgKnByaXYpCj4gIAljYXNlIFJFRl9DTE9DS18yNE1IejoKPiAgCQlpZiAocHJpdi0+dHlwZSA9 PSBQSFlfVFlQRV9VU0IzIHx8IHByaXYtPnR5cGUgPT0gUEhZX1RZUEVfU0FUQSkgewo+ICAJCQkv KiBTZXQgc3NjX2NudFs5OjBdPTAxMDExMTExMDEgJiAzMS41S0h6LiAqLwo+IC0JCQl2YWwgPSBQ SFlSRUcxNV9TU0NfQ05UX1ZBTFVFIDw8IFBIWVJFRzE1X1NTQ19DTlRfU0hJRlQ7Cj4gLQkJCXJv Y2tjaGlwX2NvbWJwaHlfdXBkYXRlbChwcml2LCBQSFlSRUcxNV9TU0NfQ05UX01BU0ssCj4gLQkJ CQkJCSB2YWwsIFBIWVJFRzE1KTsKPiArCQkJdmFsID0gUkszNTY4X1BIWVJFRzE1X1NTQ19DTlRf VkFMVUUgPDwgUkszNTY4X1BIWVJFRzE1X1NTQ19DTlRfU0hJRlQ7Cj4gKwkJCXJvY2tjaGlwX2Nv bWJwaHlfdXBkYXRlbChwcml2LCBSSzM1NjhfUEhZUkVHMTVfU1NDX0NOVF9NQVNLLAo+ICsJCQkJ CQkgdmFsLCBSSzM1NjhfUEhZUkVHMTUpOwo+ICAKPiAtCQkJd3JpdGVsKFBIWVJFRzE2X1NTQ19D TlRfVkFMVUUsIHByaXYtPm1taW8gKyBQSFlSRUcxNik7Cj4gKwkJCXdyaXRlbChSSzM1NjhfUEhZ UkVHMTZfU1NDX0NOVF9WQUxVRSwgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxNik7Cj4gIAkJ fQo+ICAJCWJyZWFrOwo+ICAKPiBAQCAtMTExMCwyMyArMTEyMywyNSBAQCBzdGF0aWMgaW50IHJr MzU4OF9jb21icGh5X2NmZyhzdHJ1Y3Qgcm9ja2NoaXBfY29tYnBoeV9wcml2ICpwcml2KQo+ICAJ CXJvY2tjaGlwX2NvbWJwaHlfcGFyYW1fd3JpdGUocHJpdi0+cGh5X2dyZiwgJmNmZy0+cGlwZV9j bGtfMTAwbSwgdHJ1ZSk7Cj4gIAkJaWYgKHByaXYtPnR5cGUgPT0gUEhZX1RZUEVfUENJRSkgewo+ ICAJCQkvKiBQTEwgS1ZDTyBmaW5lIHR1bmluZy4gKi8KPiAtCQkJdmFsID0gNCA8PCBQSFlSRUcz M19QTExfS1ZDT19TSElGVDsKPiAtCQkJcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFBI WVJFRzMzX1BMTF9LVkNPX01BU0ssCj4gLQkJCQkJCSB2YWwsIFBIWVJFRzMzKTsKPiArCQkJdmFs ID0gNCA8PCBSSzM1NjhfUEhZUkVHMzNfUExMX0tWQ09fU0hJRlQ7Cj4gKwkJCXJvY2tjaGlwX2Nv bWJwaHlfdXBkYXRlbChwcml2LCBSSzM1NjhfUEhZUkVHMzNfUExMX0tWQ09fTUFTSywKPiArCQkJ CQkJIHZhbCwgUkszNTY4X1BIWVJFRzMzKTsKPiAgCj4gIAkJCS8qIEVuYWJsZSBjb250cm9sbGlu ZyByYW5kb20gaml0dGVyLiAqLwo+IC0JCQl3cml0ZWwoUEhZUkVHMTJfUExMX0xQRl9BREpfVkFM VUUsIHByaXYtPm1taW8gKyBQSFlSRUcxMik7Cj4gKwkJCXdyaXRlbChSSzM1NjhfUEhZUkVHMTJf UExMX0xQRl9BREpfVkFMVUUsIHByaXYtPm1taW8gKyBSSzM1NjhfUEhZUkVHMTIpOwo+ICAKPiAg CQkJLyogU2V0IHVwIHJ4X3RyaW06IFBMTCBMUEYgQzEgODVwZiBSMSAxLjI1a29obSAqLwo+IC0J CQl3cml0ZWwoUEhZUkVHMjdfUlhfVFJJTV9SSzM1ODgsIHByaXYtPm1taW8gKyBQSFlSRUcyNyk7 Cj4gKwkJCXdyaXRlbChSSzM1ODhfUEhZUkVHMjdfUlhfVFJJTSwgcHJpdi0+bW1pbyArIFJLMzU4 OF9QSFlSRUcyNyk7Cj4gIAo+ICAJCQkvKiBTZXQgdXAgc3VfdHJpbTogICovCj4gLQkJCXdyaXRl bChQSFlSRUcxMV9TVV9UUklNXzBfNywgcHJpdi0+bW1pbyArIFBIWVJFRzExKTsKPiArCQkJd3Jp dGVsKFJLMzU2OF9QSFlSRUcxMV9TVV9UUklNXzBfNywgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlS RUcxMSk7Cj4gIAkJfSBlbHNlIGlmIChwcml2LT50eXBlID09IFBIWV9UWVBFX1NBVEEpIHsKPiAg CQkJLyogZG93bndhcmQgc3ByZWFkIHNwZWN0cnVtICs1MDBwcG0gKi8KPiAtCQkJdmFsID0gUEhZ UkVHMzJfU1NDX0RPV05XQVJEIDw8IFBIWVJFRzMyX1NTQ19ESVJfU0hJRlQ7Cj4gLQkJCXZhbCB8 PSBQSFlSRUczMl9TU0NfT0ZGU0VUXzUwMFBQTSA8PCBQSFlSRUczMl9TU0NfT0ZGU0VUX1NISUZU Owo+IC0JCQlyb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwocHJpdiwgUEhZUkVHMzJfU1NDX01BU0ss IHZhbCwgUEhZUkVHMzIpOwo+ICsJCQl2YWwgPSBSSzM1NjhfUEhZUkVHMzJfU1NDX0RPV05XQVJE IDw8IFJLMzU2OF9QSFlSRUczMl9TU0NfRElSX1NISUZUOwo+ICsJCQl2YWwgfD0gUkszNTY4X1BI WVJFRzMyX1NTQ19PRkZTRVRfNTAwUFBNIDw8Cj4gKwkJCSAgICAgICBSSzM1NjhfUEhZUkVHMzJf U1NDX09GRlNFVF9TSElGVDsKPiArCQkJcm9ja2NoaXBfY29tYnBoeV91cGRhdGVsKHByaXYsIFJL MzU2OF9QSFlSRUczMl9TU0NfTUFTSywgdmFsLAo+ICsJCQkJCQkgUkszNTY4X1BIWVJFRzMyKTsK PiAgCQl9Cj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+IEBAIC0xMTM3LDIwICsxMTUyLDIxIEBA IHN0YXRpYyBpbnQgcmszNTg4X2NvbWJwaHlfY2ZnKHN0cnVjdCByb2NrY2hpcF9jb21icGh5X3By aXYgKnByaXYpCj4gIAlpZiAocHJpdi0+ZXh0X3JlZmNsaykgewo+ICAJCXJvY2tjaGlwX2NvbWJw aHlfcGFyYW1fd3JpdGUocHJpdi0+cGh5X2dyZiwgJmNmZy0+cGlwZV9jbGtfZXh0LCB0cnVlKTsK PiAgCQlpZiAocHJpdi0+dHlwZSA9PSBQSFlfVFlQRV9QQ0lFICYmIHJhdGUgPT0gUkVGX0NMT0NL XzEwME1Ieikgewo+IC0JCQl2YWwgPSBQSFlSRUcxM19SRVNJU1RFUl9ISUdIX1ogPDwgUEhZUkVH MTNfUkVTSVNURVJfU0hJRlQ7Cj4gLQkJCXZhbCB8PSBQSFlSRUcxM19DS1JDVl9BTVAwOwo+IC0J CQlyb2NrY2hpcF9jb21icGh5X3VwZGF0ZWwocHJpdiwgUEhZUkVHMTNfUkVTSVNURVJfTUFTSywg dmFsLCBQSFlSRUcxMyk7Cj4gLQo+IC0JCQl2YWwgPSByZWFkbChwcml2LT5tbWlvICsgUEhZUkVH MTQpOwo+IC0JCQl2YWwgfD0gUEhZUkVHMTRfQ0tSQ1ZfQU1QMTsKPiAtCQkJd3JpdGVsKHZhbCwg cHJpdi0+bW1pbyArIFBIWVJFRzE0KTsKPiArCQkJdmFsID0gUkszNTY4X1BIWVJFRzEzX1JFU0lT VEVSX0hJR0hfWiA8PCBSSzM1NjhfUEhZUkVHMTNfUkVTSVNURVJfU0hJRlQ7Cj4gKwkJCXZhbCB8 PSBSSzM1NjhfUEhZUkVHMTNfQ0tSQ1ZfQU1QMDsKPiArCQkJcm9ja2NoaXBfY29tYnBoeV91cGRh dGVsKHByaXYsIFJLMzU2OF9QSFlSRUcxM19SRVNJU1RFUl9NQVNLLCB2YWwsCj4gKwkJCQkJCSBS SzM1NjhfUEhZUkVHMTMpOwo+ICsKPiArCQkJdmFsID0gcmVhZGwocHJpdi0+bW1pbyArIFJLMzU2 OF9QSFlSRUcxNCk7Cj4gKwkJCXZhbCB8PSBSSzM1NjhfUEhZUkVHMTRfQ0tSQ1ZfQU1QMTsKPiAr CQkJd3JpdGVsKHZhbCwgcHJpdi0+bW1pbyArIFJLMzU2OF9QSFlSRUcxNCk7Cj4gIAkJfQo+ICAJ fQo+ICAKPiAgCWlmIChwcml2LT5lbmFibGVfc3NjKSB7Cj4gLQkJdmFsID0gcmVhZGwocHJpdi0+ bW1pbyArIFBIWVJFRzgpOwo+IC0JCXZhbCB8PSBQSFlSRUc4X1NTQ19FTjsKPiAtCQl3cml0ZWwo dmFsLCBwcml2LT5tbWlvICsgUEhZUkVHOCk7Cj4gKwkJdmFsID0gcmVhZGwocHJpdi0+bW1pbyAr IFJLMzU2OF9QSFlSRUc4KTsKPiArCQl2YWwgfD0gUkszNTY4X1BIWVJFRzhfU1NDX0VOOwo+ICsJ CXdyaXRlbCh2YWwsIHByaXYtPm1taW8gKyBSSzM1NjhfUEhZUkVHOCk7Cj4gIAl9Cj4gIAo+ICAJ cmV0dXJuIDA7Cj4gCgoKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1yb2NrY2hpcAo=