From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D2980C07E9C for ; Fri, 9 Jul 2021 12:40:39 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id A061161220 for ; Fri, 9 Jul 2021 12:40:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A061161220 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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=YIwDsbLLPqgh1p2fT3Q3nTrb1wCr68DsEmg41EtZBjk=; b=L0PPp6DVwkV7oL aNC7dON8C8BqS35UlFIpoM9nWjfyrOn+PHjDO5RXtY8JU6/9HR0Xf+UfhmyDZyxlCTSUQRoXkLQL6 4hgROFEaumw45ycTGnf0vbsnmV6SPAmIMLiJNogVsetwhAtSObWI5Q5Ya+TmwxcHvioPz3uLt7CSl DpYEqY0VtRCt+nK0d53cXQrh1HJ1BlU8k5tY3tGJy3pzwrgD2OFuXS9oTX65d9mncghEBiYa4oCcs M0P4T9iYaFrhCw0vki5FrDS/uugbIIvxx8ay4pM9TUJuvyDQXFX/EW8QO7Xt7lar9PCaYM/Kve4qN UzBdts2w/7KvTYMCv6mw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m1pmO-001liv-NO; Fri, 09 Jul 2021 12:38:52 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1m1pmI-001lh4-DW for linux-arm-kernel@lists.infradead.org; Fri, 09 Jul 2021 12:38:50 +0000 Received: from gallifrey.ext.pengutronix.de ([2001:67c:670:201:5054:ff:fe8d:eefb] helo=[IPv6:::1]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m1pm7-0004J4-2v; Fri, 09 Jul 2021 14:38:35 +0200 Message-ID: <891447bb1780e365a9b4c730c27f1f34995a3176.camel@pengutronix.de> Subject: Re: [PATCH V8 3/4] soc: imx: Add generic blk-ctl driver From: Lucas Stach To: Peng Fan , "Peng Fan (OSS)" , "robh+dt@kernel.org" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" Cc: "kernel@pengutronix.de" , "festevam@gmail.com" , dl-linux-imx , "p.zabel@pengutronix.de" , "krzk@kernel.org" , "agx@sigxcpu.org" , "marex@denx.de" , "andrew.smirnov@gmail.com" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , Jacky Bai , "frieder.schrempf@kontron.de" , "aford173@gmail.com" , Abel Vesa , "jagan@amarulasolutions.com" Date: Fri, 09 Jul 2021 14:38:32 +0200 In-Reply-To: References: <20210629072941.7980-1-peng.fan@oss.nxp.com> <20210629072941.7980-4-peng.fan@oss.nxp.com> <0fc1f5043eeedb0c40ae9f76e245c648e0c88cde.camel@pengutronix.de> User-Agent: Evolution 3.40.1 (3.40.1-1.fc34) MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2001:67c:670:201:5054:ff:fe8d:eefb X-SA-Exim-Mail-From: l.stach@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210709_053846_840426_C7019D25 X-CRM114-Status: GOOD ( 79.90 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org QW0gRnJlaXRhZywgZGVtIDA5LjA3LjIwMjEgdW0gMTA6MDggKzAwMDAgc2NocmllYiBQZW5nIEZh bjoKPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggVjggMy80XSBzb2M6IGlteDogQWRkIGdlbmVyaWMg YmxrLWN0bCBkcml2ZXIKPiA+IAo+ID4gSGkgUGVuZywKPiA+IAo+ID4gQW0gTWl0dHdvY2gsIGRl bSAwNy4wNy4yMDIxIHVtIDA5OjU2ICswMDAwIHNjaHJpZWIgUGVuZyBGYW46Cj4gPiA+IEhpIEx1 Y2FzLAo+ID4gPiAKPiA+ID4gPiBTdWJqZWN0OiBSZTogW1BBVENIIFY4IDMvNF0gc29jOiBpbXg6 IEFkZCBnZW5lcmljIGJsay1jdGwKPiA+ID4gPiBkcml2ZXIKPiA+ID4gCj4gPiA+IEFmdGVyIHJl dGhpbmtpbmcgYWJvdXQgdGhpcyBkcml2ZXIsIEkgdGhpbmsgd2Ugc3RpbGwgbmVlZCBleHBvc2UK PiA+ID4gdG8KPiA+ID4gcGdjIHRvIHRvdWNoIHRoZSBibGstY3RsIGhhcmR3YXJlIGJ1cyBoYW5k c2hha2UuCj4gPiA+IAo+ID4gPiBDdXJyZW50bHkgd2UgYXJlIGFzc3VtaW5nIHRoZSBibGstY3Rs IHByb2JlIHdpbGwgZmluaXNoIHRoZQo+ID4gPiBoYW5kc2hha2UuCj4gPiA+IEJ1dCB0aGVyZSBp cyBhbm90aGVyIGNhc2UsIHNheWluZyBncHUuCj4gPiA+IAo+ID4gPiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gPiAt LS0tLS0+Cj4gPiA+IEdQVSBvbigxKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoFZQVU1JWCBv biAoMikKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgR1BVIG9mZigzKQo+ID4gPiAKPiA+ID4gQmV0d2VlbiBHUFUgb24vb2ZmLCBWUFVNSVgtQkxL LUNUTCBub3QgZG9uZSwgc28gdnB1bWl4IHBnYwo+ID4gPiBoYW5kc2hha2UKPiA+ID4gbm90IGRv bmUuIFRoZW4gR1BVIG9mZiAoMykgd2lsbCB0cmlnZ2VyIGZhaWxlZCB0byBjb21tYW5kIHBnYywK PiA+ID4gYmVjYXVzZQo+ID4gPiB0aGUgbGFzdCBwZ2ModnB1IHBvd2VyIG9uKSBub3QgZmluaXNo ZWQuCj4gPiA+IAo+ID4gPiBJIHRoaW5rIHRoaXMgY291bGQgYmUgbm90IGF2b2lkZWQgaWYgd2Ug c3BsaXQgdGhlIGhhbmRzaGFrZSBpbnRvCj4gPiA+IGJsay1jdGwgZHJpdmVyLiBIb3cgZG8geW91 IHRoaW5rPwo+ID4gPiAKPiA+IFRoaXMgaXMgcmVhbGx5IHVuZm9ydHVuYXRlLiBTbyB0aGUgUEdD IHN0YXRlIG1hY2hpbmUgcmVhbGx5IHdhaXRzCj4gPiBmb3IgdGhlIEFEQgo+ID4gaGFuZHNoYWtl PyAKPiAKPiBOb3QgdmVyeSBzdXJlLCBqdXN0IGEgZ3Vlc3MgaGVyZS4gQmVjYXVzZSBvZiAuLi4u LiwgSSBhbSBub3QgYWJsZSB0bwo+IGZpbmQKPiBIVyBwZW9wbGUgdG8gZ2l2ZSBleHBsYWluYXRp b24gZm9yIHRoZSBtZXNzeSBoYXJkd2FyZSBkZXNpZ24uCj4gCkl0J3Mgc29tZXdoYXQgZGlzaWxs dXNpb25pbmcgdG8gaGVhciB0aGF0IG5vdCBldmVuIHlvdSBhcmUgYWJsZSB0byBmaW5kCnBlb3Bs ZSBhYmxlIHRvIGdpdmUgYSBwcm9wZXIgZXhwbGFuYXRpb24gb24gaG93IHRob3NlIHRoaW5ncyBm aXQKdG9nZXRoZXIuIDovCgo+IEFib3V0IHlvdXIgaWRlYSB0byBub3QgY3JlYXRlIGEgcGxhdGZv cm0gZGV2aWNlIGFzIHdoYXQgZ3BjdjIgZHJpdmVyCj4gZGlkLAo+IEkgcmV0aGluayBhYm91dCB0 aGF0Lgo+IGlmIHdlIHNwbGl0IHRoZSBoYW5kc2hha2UgaW4gYmxrLWN0bCBkcml2ZXIsIHdlIG5l ZWQgc2F5aW5nCj4gdnB1bWl4LWJsay1jdGwgZGVwZW5kcyBvbiBwZ2NfdnB1bWl4Cj4gcGdjX3Zw dV9nMS9nMi9oMSBkZXBlbmRzIG9uIHZwdW1peC1ibGstY3RsIGJ1cyBkb21haW4uCj4gSXQgaXMg aGFyZCB0byBkbyBkZWZlciBwcm9iZSBpZiB3ZSBqdXN0IHVzZSBzaW1wbGUgcGFyZW50L2NoaWxk IHBkCj4gdHJlZS4KPiAKPiBJZiB3ZSBtb3ZlIHRoZSBoYW5kc2hha2UgYmFjayB0byBncGN2MiBk cml2ZXIsIHRoZSBibGstY3RsIGRyaXZlcgo+IGNvdWxkIGJlIHNpbXBsaWVyIEkgdGhpbmssIGJ1 dCBoYXZlIHRvIGFkZCByZWZlcmVuY2UgdG8gYmxrLWN0bCBub2RlCj4gaW4gcGdjIG5vZGUuCgpJ J2xsIHNwZW5kIHNvbWUgdGltZSBhbmQgc2VlIGlmIEkgY2FuIGNvbWUgdXAgd2l0aCBhIHByb3Bl ciBhYnN0cmFjdGlvbgpoZXJlLiBUaGlzIHdpbGwgcHJvYmFibHkgdGFrZSBhIGxpdHRsZSB3aGls ZSwgYXMgSSBkb24ndCBoYXZlIGEgZ29vZApwbGFuIHlldCwgc28gaXQgd2lsbCBpbnZvbHZlIHNv bWUgdHlwaW5nIG9mIHByb3RvdHlwZSBkcml2ZXIgY29kZSB0bwpzZWUgaG93IHRoaW5ncyB3b3Jr IG91dC4KCj4gCj4gQW5kIHJldGhpbmsgYWJvdXQgdGhlIGdwY3YyIGRyaXZlciwgc2hvdWxkIHdl IGFkZCBhIG11dGV4IGxvY2sKPiBpbiBwb3dlciBvbi9vZmY/IEkga25vdyB0aGF0IGdlbnBkIGhh cyBsb2NrLCBidXQgdGhlIGxvY2sgaXMgcGVyCj4gZ2VucGQuCj4gCj4gQ29uc2lkZXJpbmcgR1BV IHBvd2VyaW5nIG9uLCBWUFUgbWF5IGJlIHBvd2VyaW5nIG9mZiwgdGhlIHBvd2VyCj4gc2VxdWVu Y2UgbWF5YmUgaW50ZXJydXB0ZWQgYnkgdGhlIG90aGVyLiBJIHRob3VnaHQgdGhpcwo+IG1heSBj YXVzZSBmYWlsZWQgdG8gY29tbWFuZCBQR0MsIHNvIGJldHRlciBhZGQgYSBtdXRleCBsb2NrCj4g aW4gcGdjIHBvd2VyIG9uL29mZj8KPiAKSSBkb24ndCB0aGluayBzZXF1ZW5jZXMgZm9yIGRpZmZl cmVudCBkb21haW5zIGFyZSBpbnRlcmFjdGluZyB3aXRoIGVhY2gKb3RoZXIsIGF0IGxlYXN0IHRo YXQncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBQR0MgaGFyZHdhcmUuIFRoZQpleGFtcGxlIGNv ZGUgNSBpbiB0aGUgaS5NWDhNTSByZWZlcmVuY2UgbWFudWFsIGF0IGxlYXN0IGhpbnRzIGF0IGl0 CmJlaW5nIHRvdGFsbHkgbGVnYWwgdG8gcmVxdWVzdCBtdWx0aXBsZSBkb21haW5zIHRvIHBvd2Vy LXVwIGF0IHRoZSBzYW1lCnRpbWUgYW5kIGFsc28gdGhlcmUgYXJlIG5vIHdhaXRzIGZvciBzZXF1 ZW5jZSBjb21wbGV0aW9uIGJldHdlZW4KcmVxdWVzdCB0byBwb3dlci1kb3duIGRpZmZlcmVudCBk b21haW5zLgoKPiAKPiBVbnRpbCBub3cgbXkgdW5kZXJzdGFuZGluZyB3YXMgdGhhdCB0aGlzIGlz bid0IGhvb2tlZCB1cCBpbiB0aGUKPiA+IHN0YXRlIG1hY2hpbmUsIGJ1dCBzZXF1ZW5jZWQgYnkg c29mdHdhcmUgdGhyb3VnaCB3cml0aW5nIGFuZAo+ID4gd2FpdGluZyBmb3IgdGhlCj4gPiBiaXRz IGluIEdQQ19QVV9QV1JIU0suCj4gPiAKPiA+ID4gQlRXOiAjbGludXgtaW14IElSQyBtb3ZlZCB0 byBMaWJyZS5DaGF0Cj4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+IEhpIFBlbmcsCj4gPiA+ID4gCj4g PiA+ID4gQW0gRGllbnN0YWcsIGRlbSAyOS4wNi4yMDIxIHVtIDE1OjI5ICswODAwIHNjaHJpZWIg UGVuZyBGYW4KPiA+ID4gPiAoT1NTKToKPiA+ID4gPiA+IEZyb206IFBlbmcgRmFuIDxwZW5nLmZh bkBueHAuY29tPgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBUaGUgaS5NWDhNTSBpbnRyb2R1Y2VzIGFu IElQIG5hbWVkIEJMS19DVEwgYW5kIHVzdWFsbHkgaXMKPiA+ID4gPiA+IGNvbXByaXNlZCBvZiBz b21lIEdQUnMuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFRoZSBHUFJzIGhhcyBzb21lIGNsb2NrIGJp dHMgYW5kIHJlc2V0IGJpdHMsIGJ1dCBoZXJlIHdlIHRha2UKPiA+ID4gPiA+IGl0Cj4gPiA+ID4g PiBhcyB2aXJ0dWFsIFBEcywgYmVjYXVzZSBvZiB0aGUgY2xvY2sgYW5kIHBvd2VyIGRvbWFpbiBB L0IKPiA+ID4gPiA+IGxvY2sKPiA+ID4gPiA+IGlzc3VlIHdoZW4gdGFraW5nIGl0IGFzIGEgY2xv Y2sgY29udHJvbGxlci4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gRm9yIHNvbWUgYml0cywgaXQgbWln aHQgYmUgZ29vZCB0byBhbHNvIG1ha2UgaXQgYXMgYSByZXNldAo+ID4gPiA+ID4gY29udHJvbGxl ciwgYnV0IHRvIGkuTVg4TU0sIHdlIG5vdCBhZGQgdGhhdCBzdXBwb3J0IGZvciBub3cuCj4gPiA+ ID4gPiAKPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFBlbmcgRmFuIDxwZW5nLmZhbkBueHAuY29t Pgo+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiDCoGRyaXZlcnMvc29jL2lteC9NYWtlZmlsZSAgfCAg IDIgKy0KPiA+ID4gPiA+IMKgZHJpdmVycy9zb2MvaW14L2Jsay1jdGwuYyB8IDMyNAo+ID4gPiA+ ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gPiA+IMKgZHJp dmVycy9zb2MvaW14L2Jsay1jdGwuaCB8ICA4NSArKysrKysrKysrCj4gPiA+ID4gPiDCoDMgZmls ZXMgY2hhbmdlZCwgNDEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkgIGNyZWF0ZQo+ID4g PiA+ID4gbW9kZQo+ID4gPiA+ID4gMTAwNjQ0IGRyaXZlcnMvc29jL2lteC9ibGstY3RsLmMgIGNy ZWF0ZSBtb2RlIDEwMDY0NAo+ID4gPiA+ID4gZHJpdmVycy9zb2MvaW14L2Jsay1jdGwuaAo+ID4g PiA+ID4gCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvaW14L01ha2VmaWxlCj4g PiA+ID4gPiBiL2RyaXZlcnMvc29jL2lteC9NYWtlZmlsZQo+ID4gPiA+ID4gaW5kZXggMDc4ZGM5 MThmNGYzLi5kM2QyYjQ5YTM4NmMgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL3NvYy9p bXgvTWFrZWZpbGUKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvc29jL2lteC9NYWtlZmlsZQo+ID4g PiA+ID4gQEAgLTQsNCArNCw0IEBAIG9iai0kKENPTkZJR19BUkNIX01YQykgKz0gc29jLWlteC5v ICBlbmRpZgo+ID4gPiA+ID4gwqBvYmotJChDT05GSUdfSEFWRV9JTVhfR1BDKSArPSBncGMubwo+ ID4gPiA+ID4gwqBvYmotJChDT05GSUdfSU1YX0dQQ1YyX1BNX0RPTUFJTlMpICs9IGdwY3YyLm8K PiA+ID4gPiA+IC1vYmotJChDT05GSUdfU09DX0lNWDhNKSArPSBzb2MtaW14OG0ubwo+ID4gPiA+ ID4gK29iai0kKENPTkZJR19TT0NfSU1YOE0pICs9IHNvYy1pbXg4bS5vIGJsay1jdGwubwo+ID4g PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL2lteC9ibGstY3RsLmMgYi9kcml2ZXJzL3Nv Yy9pbXgvYmxrLQo+ID4gPiA+ID4gY3RsLmMKPiA+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 IGluZGV4IDAwMDAwMDAwMDAwMC4uY2VjMTg4NDIwMmUwCj4gPiA+ID4gPiAtLS0gL2Rldi9udWxs Cj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL3NvYy9pbXgvYmxrLWN0bC5jCj4gPiA+ID4gPiBAQCAt MCwwICsxLDMyNCBAQAo+ID4gPiA+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wCj4gPiA+ID4gPiArLyoKPiA+ID4gPiA+ICsgKiBDb3B5cmlnaHQgMjAyMSBOWFAuCj4gPiA+ ID4gPiArICovCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ ID4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KPiA+ID4gPiA+ICsjaW5jbHVkZSA8bGlu dXgvaW8uaD4KPiA+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiA+ID4gPiAr I2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+Cj4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+ Cj4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4KPiA+ID4gPiA+ICsjaW5j bHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRm b3JtX2RldmljZS5oPiAjaW5jbHVkZQo+ID4gPiA+ID4gPGxpbnV4L3BtX3J1bnRpbWUuaD4KPiA+ ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvcG1fZG9tYWluLmg+ICNpbmNsdWRlIDxsaW51eC9yZWdt YXAuaD4KPiA+ID4gPiA+ICNpbmNsdWRlCj4gPiA+ID4gPiArPGxpbnV4L3NsYWIuaD4KPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsjaW5jbHVkZSAiYmxrLWN0bC5oIgo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGlteF9ibGtfY3RsX2RvbWFpbgo+ID4gPiA+ID4gKnRv X2lteF9ibGtfY3RsX3BkKHN0cnVjdAo+ID4gPiA+ID4gK2dlbmVyaWNfcG1fZG9tYWluICpnZW5w ZCkgewo+ID4gPiA+ID4gKwlyZXR1cm4gY29udGFpbmVyX29mKGdlbnBkLCBzdHJ1Y3QKPiA+ID4g PiA+IGlteF9ibGtfY3RsX2RvbWFpbiwgZ2VucGQpOyB9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAr c3RhdGljIGludCBpbXhfYmxrX2N0bF9lbmFibGVfaHNrKHN0cnVjdCBkZXZpY2UgKmRldikgewo+ ID4gPiA+ID4gKwlzdHJ1Y3QgaW14X2Jsa19jdGwgKmJsa19jdGwgPSBkZXZfZ2V0X2RydmRhdGEo ZGV2KTsKPiA+ID4gPiA+ICsJY29uc3Qgc3RydWN0IGlteF9ibGtfY3RsX2h3ICpodyA9IGJsa19j dGwtPmRldl9kYXRhLQo+ID4gPiA+ID4gPmh3X2hzazsKPiA+ID4gPiA+ICsJc3RydWN0IHJlZ21h cCAqcmVnbWFwID0gYmxrX2N0bC0+cmVnbWFwOwo+ID4gPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gKwlpZiAoaHctPmZsYWdzICYgSU1YX0JMS19DVExfUERfUkVTRVQpIHsK PiA+ID4gPiA+ICsJCXJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhyZWdtYXAsIGh3LQo+ID4gPiA+ ID4gPnJzdF9vZmZzZXQsCj4gPiBody0+cnN0X21hc2ssCj4gPiA+ID4gaHctPnJzdF9tYXNrKTsK PiA+ID4gPiA+ICsJCWlmIChyZXQpCj4gPiA+ID4gPiArCQkJcmV0dXJuIHJldDsKPiA+ID4gPiA+ ICsJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlyZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMocmVn bWFwLCBody0+b2Zmc2V0LCBody0KPiA+ID4gPiA+ID5tYXNrLAo+ID4gPiA+ID4gK2h3LT5tYXNr KTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJLyogV2FpdCBmb3IgaGFuZHNoYWtlICovCj4gPiA+ ID4gPiArCXVkZWxheSg1KTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ ID4gPiA+ICt9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArc3RhdGljIGludCBpbXhfYmxrX2N0bF9w b3dlcl9vbihzdHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4KPiA+ID4gPiA+ICpkb21haW4pIHsKPiA+ ID4gPiA+ICsJc3RydWN0IGlteF9ibGtfY3RsX2RvbWFpbiAqcGQgPQo+ID4gPiA+ID4gdG9faW14 X2Jsa19jdGxfcGQoZG9tYWluKTsKPiA+ID4gPiA+ICsJc3RydWN0IGlteF9ibGtfY3RsICpibGtf Y3RsID0gcGQtPmJsa19jdGw7Cj4gPiA+ID4gPiArCXN0cnVjdCByZWdtYXAgKnJlZ21hcCA9IGJs a19jdGwtPnJlZ21hcDsKPiA+ID4gPiA+ICsJY29uc3Qgc3RydWN0IGlteF9ibGtfY3RsX2h3ICpo dyA9Cj4gPiAmYmxrX2N0bC0+ZGV2X2RhdGEtPnBkc1twZC0+aWRdOwo+ID4gPiA+ID4gKwlpbnQg cmV0Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwltdXRleF9sb2NrKCZibGtfY3RsLT5sb2NrKTsK PiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJcmV0ID0gY2xrX2J1bGtfcHJlcGFyZV9lbmFibGUoYmxr X2N0bC0+bnVtX2Nsa3MsCj4gPiA+ID4gPiBibGtfY3RsLT5jbGtzKTsKPiA+ID4gPiAKPiA+ID4g PiBJJ20gc3RpbGwgbm90IGEgZmFuIG9mIGVuYWJsaW5nIGFsbCB0aGUgY2xvY2tzIGdvaW5nIGlu dG8gdGhlCj4gPiA+ID4gYmxrLWN0bCB0byBwb3dlciB1cC9kb3duIG9uZSBzcGVjaWZpYyBkb21h aW4uIEl0J3Mgbm90IHJlYWxseSBhCj4gPiA+ID4gcHJvYmxlbSB3aXRoIGNsb2Nrcywgd2hlcmUg dGhlIHBhcmVudHMgYXJlIGFsd2F5cyBvbiwgYXMgdGhlCj4gPiA+ID4gY2xvY2sKPiA+ID4gPiBn YXRlL3VuZ2F0ZSBpcyBwcmV0dHkgY2hlYXAsIGJ1dCBhcyBzb29uIGFzIHlvdSBnZXQgdG8KPiA+ ID4gPiBzb21ldGhpbmcKPiA+ID4gPiBsaWtlIHRoZSBkaXNwbGF5IHBpeGVsIGNsb2NrLCB3aGVy ZSB0aGUgcGFyZW50IFBMTCBtYXkgYmUgc2h1dAo+ID4gPiA+IGRvd24sCj4gPiA+ID4gdGhlIGNs b2NrIGVuYWJsZSBtYXkgZWFzaWx5IGJlIHRoZSBtb3N0IGNvc3RseSBvcGVyYXRpb24gb2YKPiA+ ID4gPiB0aGlzCj4gPiA+ID4gd2hvbGUgZnVuY3Rpb24sIGV2ZW4gaWYgdGhpcyBzcGVjaWZpYyBj bG9jayBpc24ndCBldmVuIG5lZWRlZAo+ID4gPiA+IGZvciB0aGUgZG9tYWluCj4gPiBpbiBxdWVz dGlvbi4KPiA+ID4gCj4gPiA+IFdlIGhhZCBhbiBhZ3JlZW1lbnQgdG8gdXNlIGJ1bGsgY2xrcyBp biB0aGUgYmVnaW5uaW5nIDopIEJ1dCBJCj4gPiA+IGNvdWxkCj4gPiA+IGxvb2sgaW50byB1c2Ug ZGVkaWNhdGVkIGNsaywgYnV0IHRoYXQgcmVxdWlyZXMgbmV3IGxvZ2ljIHRvIG1hcAo+ID4gPiBl YWNoCj4gPiA+IHBkIHdpdGggbmVlZGVkIGNsa3MuCj4gPiA+IAo+ID4gWWVhLCBJIGRpZG4ndCB0 b3RhbGx5IHJlamVjdCB1c2luZyBidWxrIGNsa3MsIGJ1dCBsb29raW5nIGF0IHRoZQo+ID4gbnVt YmVyIG9mCj4gPiBkaWZmZXJlbnQgY2xvY2tzIGdvaW5nIGludG8gZS5nLiB0aGUgaS5NWDhNUCBN RURJQU1JWCBibGstY3RsLCBJCj4gPiBmZWFyIHRoYXQKPiA+IHVzaW5nIGJ1bGsgY2xvY2tzIGlz IGFjdHVhbGx5IG1ha2luZyB0aGUgcG93ZXIgdXAvZG93biBmb3IgdGhlIGJsay0KPiA+IGN0bAo+ ID4gZG9tYWlucyBtdWNoIG1vcmUgY29zdGx5IHRoYW4gaXQgbmVlZHMgdG8gYmUuIEkgdGhpbmsg d2Ugc2hvdWxkCj4gPiByZWFsbHkgdGhpbmsKPiA+IGFib3V0IHRoaXMgbm93LCBhcyB1c2luZyBi dWxrIGNsa3MgdnMuIGluZGl2aWR1YWwgY2xvY2tzIGZvciBlYWNoCj4gPiBkb21haW4gd2lsbAo+ ID4gbW9zdCBsaWtlbHkgaGF2ZSBhbiBpbXBhY3Qgb24gdGhlIERUIGJpbmRpbmcsIHNvIHdpbGwg YmUgdmVyeSBoYXJkCj4gPiB0byBjaGFuZ2UKPiA+IG9uY2UgdGhlIGRyaXZlciBpcyBhY2NlcHRl ZCB1cHN0cmVhbS4KPiAKPiBvaywgSSBzZWUuCj4gCj4gPiAKPiA+IAo+ID4gPiA+IAo+ID4gPiA+ ID4gKwlpZiAocmV0KSB7Cj4gPiA+ID4gPiArCQltdXRleF91bmxvY2soJmJsa19jdGwtPmxvY2sp Owo+ID4gPiA+ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwo+ID4g PiA+ID4gKwlpZiAoaHctPmZsYWdzICYgSU1YX0JMS19DVExfUERfSEFORFNIQUtFKSB7Cj4gPiA+ ID4gPiArCQlyZXQgPSBpbXhfYmxrX2N0bF9lbmFibGVfaHNrKGJsa19jdGwtPmRldik7Cj4gPiA+ ID4gPiArCQlpZiAocmV0KQo+ID4gPiA+ID4gKwkJCWRldl9lcnIoYmxrX2N0bC0+ZGV2LCAiSGFu ZHNoYWtlCj4gPiA+ID4gPiBmYWlsZWQgd2hlbiBwb3dlcgo+ID4gb25cbiIpOwo+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gKwkJLyogRXhwZWN0ZWQsIGhhbmRzaGFrZSBhbHJlYWR5IGhhbmRsZQo+ID4g PiA+ID4gcmVzZXQqLwo+ID4gPiA+ID4gKwkJZ290byBkaXNhYmxlX2NsazsKPiA+ID4gPiA+ICsJ fQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlpZiAoaHctPmZsYWdzICYgSU1YX0JMS19DVExfUERf UkVTRVQpIHsKPiA+ID4gPiA+ICsJCXJldCA9IHJlZ21hcF9jbGVhcl9iaXRzKHJlZ21hcCwgaHct Cj4gPiA+ID4gPiA+cnN0X29mZnNldCwKPiA+IGh3LT5yc3RfbWFzayk7Cj4gPiA+ID4gPiArCQlp ZiAocmV0KQo+ID4gPiA+ID4gKwkJCWdvdG8gZGlzYWJsZV9jbGs7Cj4gPiA+ID4gPiArCj4gPiA+ ID4gPiArCQkvKiBXYWl0IGZvciByZXNldCBwcm9wYWdhdGUgKi8KPiA+ID4gPiA+ICsJCXVkZWxh eSg1KTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJCXJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhy ZWdtYXAsIGh3LQo+ID4gPiA+ID4gPnJzdF9vZmZzZXQsCj4gPiBody0+cnN0X21hc2ssCj4gPiA+ ID4gaHctPnJzdF9tYXNrKTsKPiA+ID4gPiA+ICsJCWlmIChyZXQpCj4gPiA+ID4gPiArCQkJZ290 byBkaXNhYmxlX2NsazsKPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlyZXQg PSByZWdtYXBfdXBkYXRlX2JpdHMocmVnbWFwLCBody0+b2Zmc2V0LCBody0KPiA+ID4gPiA+ID5t YXNrLAo+ID4gPiA+ID4gK2h3LT5tYXNrKTsKPiA+ID4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+IEkg ZmluZCB0aGlzIHZlcnkgaGFyZCB0byBmb2xsb3cgYW5kIHJlYXNvbiBhYm91dC4gV2h5IGRvIHdl Cj4gPiA+ID4gZXZlbgo+ID4gPiA+IG5lZWQgdGhvc2UgZGlmZmVyZW50IHBhdGhzIGZvciBkb21h aW5zIHdpdGggb3Igd2l0aG91dCB0aGUKPiA+ID4gPiBoYW5kc2hha2U/Cj4gPiA+ID4gCj4gPiA+ ID4gU2hvdWxkbid0IGl0IGJlIGVub3VnaCB0byBqdXN0IGJlIGVub3VnaCB0byBkbyB0aGUgZm9s bG93aW5nIGluCj4gPiA+ID4gYWxsCj4gPiA+ID4gY2FzZXM6Cj4gPiA+ID4gMS4gcmVsZWFzZSBz ZnQgcmVzZXQKPiA+ID4gPiAyLiBlbmFibGUgc2Z0IGNsb2NrCj4gPiA+ID4gMy4gd2FpdCBhIGxp dHRsZSBmb3IgcmVzZXQgdG8gcHJvcGFnYXRlIG9yIEFEQiB0byBhY2sgcG93ZXIgdXAKPiA+ID4g Cj4gPiA+IFJlc2V0IGZsb3cgaXM6IGFzc2VydCByZXNldCwgZGVhc3NlcnQgcmVzZXQsIGVuYWJs ZSBjbGsgSGFuZHNoYWtlCj4gPiA+IGZsb3c6IGRlYXNzZXJ0IHJlc2V0LCBlbmFibGUgY2xrLgo+ ID4gPiAKPiA+ID4gUGVyIG15IHByZXZpb3VzIHRlc3QsIHVzZSByZXNldCBmbG93IGZvciBoYW5k c2hha2Ugc2VlbXMgbm90Cj4gPiA+IHdvcmsuIEkKPiA+ID4gY291bGQgcmVjYWxsIGNsZWFybHku Cj4gPiA+IAo+ID4gVGhhdCdzIHN1cnByaXNpbmcgdG8gbWUsIGdpdmVuIHRoYXQgdGhlIGJsay1j dGwgcmVzZXRzIHNob3VsZCBiZQo+ID4gYXNzZXJ0ZWQgd2hlbgo+ID4gd2UgcG93ZXIgdXAgdGhl IEdQQyBtaXggZG9tYWlucy4gSSBkb24ndCBkaXNwdXRlIHlvdXIgdGVzdGluZywgYnV0Cj4gPiBJ IHdvdWxkCj4gPiBiZSB2ZXJ5IGludGVyZXN0ZWQgdG8gbGVhcm4gd2hhdCdzIGdvaW5nIG9uIGlu IGhhcmR3YXJlIHRoYXQKPiA+IGFzc2VydGluZyBhCj4gPiBhbHJlYWR5IGFzc2VydGVkIHJlc2V0 IHdvdWxkIGJyZWFrIHRoZSBwb3dlci0gdXAgZmxvdy4KPiAKPiBJIGNvdWxkIGdpdmUgYSByZS10 cnksIGNvbnNpZGVyaW5nIHRoZSBjb2RlIGhhcyBjaGFuZ2VkIGEgbG90IGZyb20KPiB0aGUgYmVn aW5uaW5nLgo+IAo+IFlvdSBjb3VsZCBhbHNvIGdpdmUgYSBsb29rIGF0IE1hcmV4J3MgcmVzZXQg ZWFybHkgcGF0Y2gsIGl0IG1heWJlCj4gY2F1c2VkIGJ5Cj4gdGhlIGJsay1jdGwgcGF0Y2ggb3Ig bm90LCBidXQgaGUgY29uZmlybXMgYWZ0ZXIgYWRkIHJlc2V0IGVhcmx5LAo+IGdwdS92cHUKPiBu b3QgbWV0IGZhaWxlZCB0byBjb21tYW5kIFBHQyBhbnltb3JlLgoKSSdsbCB0YWtlIGEgbG9vayBh dCB0aGlzLiBJJ20gc3RpbGwgYSBiaXQgcHV6emxlZCBhcyB0byB3aHkgc29tZSBvZiB0aGUKZG9t YWlucyByZXF1aXJlIGEgbGF0ZSwgYXMgaW4gYWZ0ZXIgdGhlIHBvd2VyLXVwIHJlcXVlc3QsIHJl c2V0LgpOb3JtYWxseSBJIHdvdWxkIGV4cGVjdCB0aGUgcmVzZXQgdG8gYmUgbGV2ZWwgdHJpZ2dl cmVkLCBzbyBpdApzaG91bGRuJ3QgbWFrZSBhIGRpZmZlcmVuY2UgaWYgdGhlIHJlc2V0IGlzIGFz c2VydGVkIGJlZm9yZSBvciBhZnRlcgp0aGUgcG93ZXItdXAgcmVxdWVzdC4KCj4gPiAKPiA+ID4g PiAKPiA+ID4gPiA+ICtkaXNhYmxlX2NsazoKPiA+ID4gPiA+ICsJY2xrX2J1bGtfZGlzYWJsZV91 bnByZXBhcmUoYmxrX2N0bC0+bnVtX2Nsa3MsCj4gPiA+ID4gPiBibGtfY3RsLT5jbGtzKTsKPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZibGtfY3RsLT5sb2NrKTsKPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiArCj4g PiA+ID4gPiArc3RhdGljIGludCBpbXhfYmxrX2N0bF9wb3dlcl9vZmYoc3RydWN0IGdlbmVyaWNf cG1fZG9tYWluCj4gPiA+ID4gPiAqZG9tYWluKSB7Cj4gPiA+ID4gPiArCXN0cnVjdCBpbXhfYmxr X2N0bF9kb21haW4gKnBkID0KPiA+ID4gPiA+IHRvX2lteF9ibGtfY3RsX3BkKGRvbWFpbik7Cj4g PiA+ID4gPiArCXN0cnVjdCBpbXhfYmxrX2N0bCAqYmxrX2N0bCA9IHBkLT5ibGtfY3RsOwo+ID4g PiA+ID4gKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXAgPSBibGtfY3RsLT5yZWdtYXA7Cj4gPiA+ID4g PiArCWNvbnN0IHN0cnVjdCBpbXhfYmxrX2N0bF9odyAqaHcgPQo+ID4gJmJsa19jdGwtPmRldl9k YXRhLT5wZHNbcGQtPmlkXTsKPiA+ID4gPiA+ICsJaW50IHJldCA9IDA7Cj4gPiA+ID4gPiArCj4g PiA+ID4gPiArCW11dGV4X2xvY2soJmJsa19jdGwtPmxvY2spOwo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gKwlyZXQgPSBjbGtfYnVsa19wcmVwYXJlX2VuYWJsZShibGtfY3RsLT5udW1fY2xrcywKPiA+ ID4gPiA+IGJsa19jdGwtPmNsa3MpOwo+ID4gPiA+ID4gKwlpZiAocmV0KSB7Cj4gPiA+ID4gPiAr CQltdXRleF91bmxvY2soJmJsa19jdGwtPmxvY2spOwo+ID4gPiA+ID4gKwkJcmV0dXJuIHJldDsK PiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlpZiAoIShody0+ZmxhZ3MgJiBJ TVhfQkxLX0NUTF9QRF9IQU5EU0hBS0UpKSB7Cj4gPiA+ID4gPiArCQlyZXQgPSByZWdtYXBfY2xl YXJfYml0cyhyZWdtYXAsIGh3LT5vZmZzZXQsCj4gPiA+ID4gPiBody0+bWFzayk7Cj4gPiA+ID4g PiArCQlpZiAocmV0KQo+ID4gPiA+ID4gKwkJCWdvdG8gZGlzYWJsZV9jbGs7Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArCQlpZiAoaHctPmZsYWdzICYgSU1YX0JMS19DVExfUERfUkVTRVQpIHsKPiA+ ID4gPiA+ICsJCQlyZXQgPSByZWdtYXBfY2xlYXJfYml0cyhyZWdtYXAsIGh3LQo+ID4gPiA+ID4g PnJzdF9vZmZzZXQsCj4gPiA+ID4gaHctPnJzdF9tYXNrKTsKPiA+ID4gPiA+ICsJCQlpZiAocmV0 KQo+ID4gPiA+ID4gKwkJCQlnb3RvIGRpc2FibGVfY2xrOwo+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ ID4gKwl9IGVsc2Ugewo+ID4gPiA+ID4gKwkJcmV0ID0gaW14X2Jsa19jdGxfZW5hYmxlX2hzayhi bGtfY3RsLT5kZXYpOwo+ID4gPiA+IAo+ID4gPiA+IFdoeSB3b3VsZCB3ZSBuZWVkIHRvIGVuYWJs ZSB0aGUgaGFuZHNoYWtlIGFnYWluIGluIHRoZSBwb3dlcgo+ID4gPiA+IERPV04KPiA+ID4gPiBw YXRoPwo+ID4gPiA+IFRoZSBjbG9jay9yZXNldCBiaXRzIHNob3VsZCBzdGlsbCBiZSBzZXQgZnJv bSB0aGUgcG93ZXIgdXAuIFRoZQo+ID4gPiA+IHBvd2VyIGRvd24gc2hvdWxkIHByb2JhYmx5IGp1 c3QgYmUgYSBuby1vcCBmb3IgdGhlIGJsay1jdGwgYnVzCj4gPiA+ID4gZG9tYWlucywgdG8gYWxs b3cgdGhlIHByb3BlciBBREIgaGFuZHNoYWtlIGluIHRoZSBQR0MgZG9tYWluCj4gPiBwb3dlci1k b3duLgo+ID4gPiAKPiA+ID4gSSBleHBvcnRlZCBWUFUtSDEgYXMgVlBVLUJVUyBmb3IgaGFuZHNo YWtlLCBiZWNhdXNlIHRoZXkgc2hhcmUKPiA+ID4gc2FtZQo+ID4gPiBiaXRzLiAgQnV0IHlvdSBy YWlzZSBhIHZhbGlkIGlkZWEsIEkgdGhpbmsgSSBjb3VsZCBkcm9wIFZQVS1CVVMsCj4gPiA+IHRo ZW4KPiA+ID4ganVzdCBuby1vcCBoZXJlLgo+ID4gCj4gPiBCeSBzaGFyZSB0aGUgc2FtZSBiaXRz LCB5b3UgbWVhbiB0aGUgQURCIGlzIGNvbm5lY3RlZCB0byB0aGUgc2FtZQo+ID4gY2xvY2sgYW5k Cj4gPiByZXNldCBhcyBIMT8KPiAKPiBHMS9HMi9IMSBhbGwgdGhlc2UgdGhyZWUgYml0cyBjb3Vs ZCBiZSB1c2VkIGZvciBBREIgaGFuZHNoYWtlLCBJIGp1c3QKPiB1c2UgSDEgaGVyZS4KPiAKPiAK PiA+IAo+ID4gPiAKPiA+ID4gQlRXOiBidXMgc2hvdWxkIGJlIGVuYWJsZWQgd2hlbiBwb3dlciBk b3duIG90aGVycy4KPiA+IAo+ID4gSSBndWVzcyBidXMgc2hvdWxkIGp1c3QgYmUgYWx3YXlzIGVu YWJsZWQgYXMgbG9uZyBhcyB0aGUgUEdDIG1peAo+ID4gZG9tYWluIGlzCj4gPiBwb3dlcmVkLXVw LCByaWdodD8KPiAKPiBZZXMuIGNvcnJlY3QuCj4gCj4gPiAKPiA+ID4gCj4gPiA+ID4gCj4gPiA+ ID4gPiArCQlpZiAocmV0KQo+ID4gPiA+ID4gKwkJCWRldl9lcnIoYmxrX2N0bC0+ZGV2LCAiSGFu ZHNoYWtlCj4gPiA+ID4gPiBmYWlsZWQgd2hlbiBwb3dlcgo+ID4gb2ZmXG4iKTsKPiA+ID4gPiA+ ICsJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK2Rpc2FibGVfY2xrOgo+ID4gPiA+ID4gKwljbGtf YnVsa19kaXNhYmxlX3VucHJlcGFyZShibGtfY3RsLT5udW1fY2xrcywKPiA+ID4gPiA+IGJsa19j dGwtPmNsa3MpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwltdXRleF91bmxvY2soJmJsa19jdGwt PmxvY2spOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiA+ID4gK30K PiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMgaW50IGlteF9ibGtfY3RsX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpIHsKPiA+ID4gPiA+ICsJc3RydWN0IGlteF9ibGtfY3Rs X2RvbWFpbiAqZG9tYWluID0gcGRldi0KPiA+ID4gPiA+ID5kZXYucGxhdGZvcm1fZGF0YTsKPiA+ ID4gPiA+ICsJc3RydWN0IGlteF9ibGtfY3RsICpibGtfY3RsID0gZG9tYWluLT5ibGtfY3RsOwo+ ID4gPiA+ID4gKwlzdHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gKnBhcmVudF9nZW5wZDsKPiA+ID4g PiA+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiA+ID4gPiA+ICsJc3RydWN0 IGRldmljZSAqYWN0aXZlX3BkOwo+ID4gPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiA+ID4gKwo+ID4g PiA+ID4gKwlwZGV2LT5kZXYub2Zfbm9kZSA9IGJsa19jdGwtPmRldi0+b2Zfbm9kZTsKPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsJaWYgKGRvbWFpbi0+aHctPmFjdGl2ZV9wZF9uYW1lKSB7Cj4gPiA+ ID4gPiArCQlhY3RpdmVfcGQgPQo+ID4gPiA+ID4gZGV2X3BtX2RvbWFpbl9hdHRhY2hfYnlfbmFt ZShkZXYsCj4gPiA+ID4gZG9tYWluLT5ody0+YWN0aXZlX3BkX25hbWUpOwo+ID4gPiA+ID4gKwkJ aWYgKElTX0VSUl9PUl9OVUxMKGFjdGl2ZV9wZCkpIHsKPiA+ID4gPiA+ICsJCQlyZXQgPSBQVFJf RVJSKGFjdGl2ZV9wZCkgPyA6IC0KPiA+ID4gPiA+IEVOT0RBVEE7Cj4gPiA+ID4gPiArCQkJcGRl di0+ZGV2Lm9mX25vZGUgPSBOVUxMOwo+ID4gPiA+IAo+ID4gPiA+IFRoaXMgaXMgZXh0cmVtZWx5 IHVnbHkuIEkgdGhpbmsgd2Ugc2hvdWxkIG5vdCBldmVuIGhhdmUKPiA+ID4gPiBzZXBhcmF0ZQo+ ID4gPiA+IHBsYXRmb3JtIGRyaXZlcnMgZm9yIHRoZSBibGstY3RsIGRvbWFpbnMsIHRoZXJlIGlz IGp1c3Qgbm8KPiA+ID4gPiByZWFzb24KPiA+ID4gPiBmb3IgaXQuIFNlZSBiZWxvdyBmb3IgbW9y ZSBjb21tZW50cyBpbiB0aGF0IGRpcmVjdGlvbi4KPiA+ID4gPiAKPiA+ID4gPiA+ICsJCQlyZXR1 cm4gcmV0Owo+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJZG9tYWluLT5h Y3RpdmVfcGQgPSBhY3RpdmVfcGQ7Cj4gPiA+ID4gPiArCX0gZWxzZSB7Cj4gPiA+ID4gPiArCQlp ZiAoIWJsa19jdGwtPmJ1c19kb21haW4pIHsKPiA+ID4gPiA+ICsJCQlwZGV2LT5kZXYub2Zfbm9k ZSA9IE5VTEw7Cj4gPiA+ID4gPiArCQkJcmV0dXJuIC1FUFJPQkVfREVGRVI7Cj4gPiA+ID4gPiAr CQl9Cj4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJaWYgKGRvbWFpbi0+aHct PmFjdGl2ZV9wZF9uYW1lKQo+ID4gPiA+ID4gKwkJcGFyZW50X2dlbnBkID0gcGRfdG9fZ2VucGQo YWN0aXZlX3BkLQo+ID4gPiA+ID4gPnBtX2RvbWFpbik7Cj4gPiA+ID4gPiArCWVsc2UKPiA+ID4g PiA+ICsJCXBhcmVudF9nZW5wZCA9IGJsa19jdGwtPmJ1c19kb21haW47Cj4gPiA+ID4gPiArCj4g PiA+ID4gPiArCWlmIChwbV9nZW5wZF9hZGRfc3ViZG9tYWluKHBhcmVudF9nZW5wZCwgJmRvbWFp bi0KPiA+ID4gPiA+ID5nZW5wZCkpIHsKPiA+ID4gPiA+ICsJCWRldl93YXJuKGRldiwgImZhaWxl ZCB0byBhZGQgc3ViZG9tYWluOgo+ID4gPiA+ID4gJXNcbiIsCj4gPiA+ID4gZG9tYWluLT5nZW5w ZC5uYW1lKTsKPiA+ID4gPiAKPiA+ID4gPiBJIGRvbid0IHNlZSB3aGVyZSB0aGUgZGlzcG1peF9i dXMgZG9tYWluIGFuZCBjbG9jayBpcyBrZXB0Cj4gPiA+ID4gZW5hYmxlZC4KPiA+ID4gPiBJIHdv dWxkIGd1ZXNzIHRoYXQgdGhlIGJ1cyBkb21haW4gc2hvdWxkIGJlIHNvbWUga2luZCBvZiBwYXJl bnQKPiA+ID4gPiB0bwo+ID4gPiA+IHRoZSBsY2RpZiBhbmQgbWlwaSBkb21haW5zLAo+ID4gPiAK PiA+ID4gWWVzLiB2cHVtaXgtYmxrLWN0bCBidXMgZG9tYWluIGlzIHBhcmVudCB0byB2cHUtZzEv ZzIgYW5kIHNpbWlsYXIKPiA+ID4gdG8gb3RoZXJzLgo+ID4gPiAKPiA+ID4gwqBhcyBJIGRvbid0 IHRoaW5rIGl0IHdvdWxkIGJlIG9rYXkgdG8gZGlzYWJsZSB0aGUgYnVzIGNsb2NrLAo+ID4gPiB3 aGlsZSBhbnkKPiA+ID4gPiBvZiB0aGUgcGVyaXBoZXJhbHMgaW4gdGhlIGRpc3BtaXggY29tcGxl eCBhcmUgc3RpbGwgYWN0aXZlLiBBbQo+ID4gPiA+IEkKPiA+ID4gPiBtaXNzaW5nIHNvbWV0aGlu ZyBoZXJlPwo+ID4gPiAKPiA+ID4gWW91IGFyZSByaWdodCwgYnVzIGNsb2NrIHNob3VsZCBiZSBh bHdheXMga2VwdCBlbmFibGUgaWYgYW55Cj4gPiA+IHBlcmlwaGFscwo+ID4gPiBpbiBkaXNwbWl4 IGlzIGFsaXZlLgo+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiA+ICsJfSBlbHNlIHsKPiA+ID4gPiA+ ICsJCW11dGV4X2xvY2soJmJsa19jdGwtPmxvY2spOwo+ID4gPiA+ID4gKwkJZG9tYWluLT5ob29r ZWQgPSB0cnVlOwo+ID4gPiA+ID4gKwkJbXV0ZXhfdW5sb2NrKCZibGtfY3RsLT5sb2NrKTsKPiA+ ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gPiA+ICt9 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArc3RhdGljIGludCBpbXhfYmxrX2N0bF9yZW1vdmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ID4gPiA+IHsKPiA+ID4gPiA+ICsJc3RydWN0 IGlteF9ibGtfY3RsX2RvbWFpbiAqZG9tYWluID0gcGRldi0KPiA+ID4gPiA+ID5kZXYucGxhdGZv cm1fZGF0YTsKPiA+ID4gPiA+ICsJc3RydWN0IGlteF9ibGtfY3RsICpibGtfY3RsID0gZG9tYWlu LT5ibGtfY3RsOwo+ID4gPiA+ID4gKwlzdHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gKnBhcmVudF9n ZW5wZDsKPiA+ID4gPiA+ICsJc3RydWN0IGRldmljZSAqYWN0aXZlX3BkOwo+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gKwlpZiAoZG9tYWluLT5ody0+YWN0aXZlX3BkX25hbWUpCj4gPiA+ID4gPiArCQlw YXJlbnRfZ2VucGQgPSBwZF90b19nZW5wZChhY3RpdmVfcGQtCj4gPiA+ID4gPiA+cG1fZG9tYWlu KTsKPiA+ID4gPiAKPiA+ID4gPiBUaGlzIGhhcyBwcm9iYWJseSBuZXZlciBiZWVuIHRlc3RlZC4g YWN0aXZlX3BkIGlzIHVuZGVmaW5lZCBhdAo+ID4gPiA+IHRoaXMKPiA+ID4gPiBwb2ludCwgc28g d2lsbCBtb3N0IGxpa2VseSBsZWFkIHRvIGEga2VybmVsIGNyYXNoLgo+ID4gPiAKPiA+ID4gTXkg YmFkLiBJbmRlZWQsIHJlbW92ZSBub3QgdGVzdGVkLgo+ID4gPiAKPiA+ID4gPiA+ICsJZWxzZQo+ ID4gPiA+ID4gKwkJcGFyZW50X2dlbnBkID0gYmxrX2N0bC0+YnVzX2RvbWFpbjsKPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICsJcG1fZ2VucGRfcmVtb3ZlX3N1YmRvbWFpbihwYXJlbnRfZ2VucGQsICZk b21haW4tCj4gPiA+ID4gPiA+Z2VucGQpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwltdXRleF9s b2NrKCZibGtfY3RsLT5sb2NrKTsKPiA+ID4gPiA+ICsJZG9tYWluLT5ob29rZWQgPSBmYWxzZTsK PiA+ID4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZibGtfY3RsLT5sb2NrKTsKPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ICsJaWYgKGRvbWFpbi0+aHctPmFjdGl2ZV9wZF9uYW1lKQo+ID4gPiA+ID4gKwkJZGV2 X3BtX2RvbWFpbl9kZXRhY2goZG9tYWluLT5hY3RpdmVfcGQsCj4gPiA+ID4gPiBmYWxzZSk7Cj4g PiA+ID4gPiArCj4gPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsK PiA+ID4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBsYXRmb3JtX2RldmljZV9pZCBpbXhfYmxr X2N0bF9pZFtdID0gewo+ID4gPiA+ID4gKwl7ICJpbXgtdnB1bWl4LWJsay1jdGwiLCB9LAo+ID4g PiA+ID4gKwl7ICJpbXgtZGlzcG1peC1ibGstY3RsIiwgfSwKPiA+ID4gPiA+ICsJeyB9LAo+ID4g PiA+ID4gK307Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9k cml2ZXIgaW14X2Jsa19jdGxfZHJpdmVyID0gewo+ID4gPiA+ID4gKwkuZHJpdmVyID0gewo+ID4g PiA+ID4gKwkJLm5hbWUgPSAiaW14LWJsay1jdGwiLAo+ID4gPiA+ID4gKwl9LAo+ID4gPiA+ID4g KwkucHJvYmUgICAgPSBpbXhfYmxrX2N0bF9wcm9iZSwKPiA+ID4gPiA+ICsJLnJlbW92ZSAgID0g aW14X2Jsa19jdGxfcmVtb3ZlLAo+ID4gPiA+ID4gKwkuaWRfdGFibGUgPSBpbXhfYmxrX2N0bF9p ZCwKPiA+ID4gPiA+ICt9Owo+ID4gPiA+ID4gK2J1aWx0aW5fcGxhdGZvcm1fZHJpdmVyKGlteF9i bGtfY3RsX2RyaXZlcikKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMgc3RydWN0IGdlbmVy aWNfcG1fZG9tYWluCj4gPiA+ID4gPiAqaW14X2Jsa19jdGxfZ2VucGRfeGxhdGUoc3RydWN0Cj4g PiA+ID4gb2ZfcGhhbmRsZV9hcmdzICpnZW5wZHNwZWMsCj4gPiA+ID4gPiArCQkJCQkJCQo+ID4g PiA+ID4gdm9pZCAqZGF0YSkKPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiArCXN0cnVjdCBnZW5wZF9v bmVjZWxsX2RhdGEgKmdlbnBkX2RhdGEgPSBkYXRhOwo+ID4gPiA+ID4gKwl1bnNpZ25lZCBpbnQg aWR4ID0gZ2VucGRzcGVjLT5hcmdzWzBdOwo+ID4gPiA+ID4gKwlzdHJ1Y3QgaW14X2Jsa19jdGxf ZG9tYWluICpkb21haW47Cj4gPiA+ID4gPiArCXN0cnVjdCBnZW5lcmljX3BtX2RvbWFpbiAqZ2Vu cGQgPSBFUlJfUFRSKC0KPiA+ID4gPiA+IEVQUk9CRV9ERUZFUik7Cj4gPiA+ID4gPiArCj4gPiA+ ID4gPiArCWlmIChnZW5wZHNwZWMtPmFyZ3NfY291bnQgIT0gMSkKPiA+ID4gPiA+ICsJCXJldHVy biBFUlJfUFRSKC1FSU5WQUwpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlpZiAoaWR4ID49IGdl bnBkX2RhdGEtPm51bV9kb21haW5zKQo+ID4gPiA+ID4gKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZB TCk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWlmICghZ2VucGRfZGF0YS0+ZG9tYWluc1tpZHhd KQo+ID4gPiA+ID4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7Cj4gPiA+ID4gPiArCj4gPiA+ ID4gPiArCWRvbWFpbiA9IHRvX2lteF9ibGtfY3RsX3BkKGdlbnBkX2RhdGEtCj4gPiA+ID4gPiA+ ZG9tYWluc1tpZHhdKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJbXV0ZXhfbG9jaygmZG9tYWlu LT5ibGtfY3RsLT5sb2NrKTsKPiA+ID4gPiA+ICsJaWYgKGRvbWFpbi0+aG9va2VkKQo+ID4gPiA+ ID4gKwkJZ2VucGQgPSBnZW5wZF9kYXRhLT5kb21haW5zW2lkeF07Cj4gPiA+ID4gPiArCW11dGV4 X3VubG9jaygmZG9tYWluLT5ibGtfY3RsLT5sb2NrKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJ cmV0dXJuIGdlbnBkOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtpbnQgaW14 X2Jsa19jdGxfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2KSB7Cj4gPiA+ID4gPiArCXN0cnVj dCBpbXhfYmxrX2N0bCAqYmxrX2N0bCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ID4gPiA+ID4g Kwljb25zdCBzdHJ1Y3QgaW14X2Jsa19jdGxfZGV2X2RhdGEgKmRldl9kYXRhID0KPiA+ID4gPiA+ IGJsa19jdGwtPmRldl9kYXRhOwo+ID4gPiA+ID4gKwlpbnQgbnVtID0gZGV2X2RhdGEtPnBkc19u dW07Cj4gPiA+ID4gPiArCXN0cnVjdCBpbXhfYmxrX2N0bF9kb21haW4gKmRvbWFpbjsKPiA+ID4g PiA+ICsJc3RydWN0IGdlbmVyaWNfcG1fZG9tYWluICpnZW5wZDsKPiA+ID4gPiA+ICsJc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRfcGRldjsKPiA+ID4gPiA+ICsJaW50IGRvbWFpbl9pbmRleDsK PiA+ID4gPiA+ICsJaW50IGksIHJldDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJYmxrX2N0bC0+ b25lY2VsbF9kYXRhLm51bV9kb21haW5zID0gbnVtOwo+ID4gPiA+ID4gKwlibGtfY3RsLT5vbmVj ZWxsX2RhdGEueGxhdGUgPQo+ID4gPiA+ID4gaW14X2Jsa19jdGxfZ2VucGRfeGxhdGU7Cj4gPiA+ ID4gPiArCWJsa19jdGwtPm9uZWNlbGxfZGF0YS5kb21haW5zID0gZGV2bV9rY2FsbG9jKGRldiwK PiA+ID4gPiA+IG51bSwKPiA+ID4gPiA+ICtzaXplb2Yoc3RydWN0Cj4gPiA+ID4gZ2VuZXJpY19w bV9kb21haW4gKiksCj4gPiA+ID4gPiArCQkJCQkJICAgIAo+ID4gPiA+ID4gR0ZQX0tFUk5FTCk7 Cj4gPiA+ID4gPiArCWlmICghYmxrX2N0bC0+b25lY2VsbF9kYXRhLmRvbWFpbnMpCj4gPiA+ID4g PiArCQlyZXR1cm4gLUVOT01FTTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJZm9yIChpID0gMDsg aSA8IG51bTsgaSsrKSB7Cj4gPiA+ID4gPiArCQlkb21haW5faW5kZXggPSBkZXZfZGF0YS0+cGRz W2ldLmlkOwo+ID4gPiA+ID4gKwkJaWYgKGRvbWFpbl9pbmRleCA+PSBudW0pIHsKPiA+ID4gPiA+ ICsJCQlkZXZfd2FybihkZXYsICJEb21haW4gaW5kZXggJWQgaXMKPiA+ID4gPiA+IG91dCBvZiBi b3VuZHNcbiIsCj4gPiA+ID4gZG9tYWluX2luZGV4KTsKPiA+ID4gPiA+ICsJCQljb250aW51ZTsK PiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJCWRvbWFpbiA9IGRldm1fa3ph bGxvYyhkZXYsIHNpemVvZihzdHJ1Y3QKPiA+ID4gPiA+IGlteF9ibGtfY3RsX2RvbWFpbiksCj4g PiA+ID4gR0ZQX0tFUk5FTCk7Cj4gPiA+ID4gPiArCQlpZiAoIWRvbWFpbikKPiA+ID4gPiA+ICsJ CQlnb3RvIGVycm9yOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJcGRfcGRldiA9IHBsYXRmb3Jt X2RldmljZV9hbGxvYyhkZXZfZGF0YS0KPiA+ID4gPiA+ID5uYW1lLAo+ID4gZG9tYWluX2luZGV4 KTsKPiA+ID4gPiA+ICsJCWlmICghcGRfcGRldikgewo+ID4gPiA+ID4gKwkJCWRldl9lcnIoZGV2 LCAiRmFpbGVkIHRvIGFsbG9jYXRlCj4gPiA+ID4gPiBwbGF0Zm9ybSBkZXZpY2VcbiIpOwo+ID4g PiA+ID4gKwkJCWdvdG8gZXJyb3I7Cj4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gCj4gPiA+ID4gV2Ug ZG9uJ3QgbmVlZCBhIGZ1bGwgYmxvdyBwbGF0Zm9ybSBkZXZpY2UgYW5kIGEgZHJpdmVyIGZvciB0 aGUKPiA+ID4gPiBpbmRpdmlkdWFsIGRvbWFpbnMuIFRoZSBvbmx5IHBvaW50IHdoZXJlIHdlIG5l ZWQgdGhlIGRldmljZSBpcwo+ID4gPiA+IHRvCj4gPiA+ID4gYXR0YWNoIHRoZSBwYXJlbnQgUEdD IHBvd2VyIGRvbWFpbnMgYW5kIGZvciB0aGlzIHdlIG9ubHkgbmVlZCBhCj4gPiA+ID4gZGV2aWNl Lgo+ID4gPiA+IAo+ID4gPiA+IFNvIHdlIGNvdWxkIGVpdGhlciBoYXZlIGEgZHVtbXkgZGV2aWNl IGZvciB0aGlzIHVzYWdlIGluIHRoZQo+ID4gPiA+IGRvbWFpbgo+ID4gPiA+IG9yIHdlIGNvdWxk IGV2ZW4gcmV1c2UgdGhlIGRldmljZSBpbiB0aGUgZ2VucGQsIHdoaWNoIGlzCj4gPiA+ID4gaW5p dGlhbGl6ZWQKPiA+ID4gPiBpbiBwbV9nZW5wZF9pbml0Lgo+ID4gPiA+IAo+ID4gPiA+IE5vdyB3 aGlsZSBJIHRoaW5rIGFib3V0IGl0Li4uIGdlbnBkX2Rldl9wbV9hdHRhY2hfYnlfbmFtZQo+ID4g PiA+IGFscmVhZHkKPiA+ID4gPiBhbGxvY2F0ZXMgdGhlIHZpcnR1YWwgZHVtbXkgZGV2aWNlLiBJ IGRvbid0IHRoaW5rIHdlIG5lZWQgdG8gZG8KPiA+ID4gPiBhbnl0aGluZyBoZXJlIG9uIG91ciBv d24uIEp1c3QgZ2V0IHJpZCBvZiB0aGUgcGxhdGZvcm0gZGV2aWNlCj4gPiA+ID4gYW5kIGRyaXZl ci4KPiA+ID4gCj4gPiA+IG9rLCBsZXQgbWUgcmV0aGluayBhYm91dCBpdC4gSWYgeW91IGhhdmUg Y2hhbmNlIHRvIGJlIG9uIElSQywgSQo+ID4gPiBjb3VsZAo+ID4gPiB0YWxrIHdpdGggeW91IGxh dGVyIGlmIEkgY29tZSBhYm91dCBuZXcgaW1wbGVtZW50YXRpb24uCj4gPiAKPiA+IEknbSBpbiB0 aGUgSVJDIGNoYW5uZWwgaWYgeW91IHByZWZlciB0byB0YWxrIHRoZXJlLgo+IAo+IEJUVywgZG8g eW91IGhhdmUgdGltZSB0byBwaWNrIHVwIHRoZSBCTEstQ1RMIHBhcnQ/IEkgdGhpbmsgeW91IGhh dmUKPiBiZXR0ZXIgYXJjaGl0ZWN0dXJlIHZpZXcgdGhhbiBtZS4KClllcywgdGhpcyB3aG9sZSBw b3dlci1kb21haW4vYmxrLWN0bCBjb21wbGV4IGlzIGJsb2NraW5nIGEgbG90IG9mIG90aGVyCnRo aW5ncyBJJ20gc3VwcG9zZWQgdG8gbG9vayBpbnRvLiBJJ2xsIHNwZW5kIHNvbWUgdGltZSB0cnlp bmcgdG8gc29ydAp0aGlzIG91dC4KClJlZ2FyZHMsCkx1Y2FzCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxp c3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=