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 C6C9FC77B73 for ; Tue, 2 May 2023 11:28:32 +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:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=XYhHrX2wMQoy0U+SnmwbnOdcEwGwec1RTLjQAcJZCDg=; b=w93xuZTNke16Cd J+306vMhm2ArGlQ6H2QKwdjN437GqllH0GdCZ2FTymxzXLUjnyAK8CCTjcrfrWRq4h2iileNnT2XF QRvzXlD6bOlS7QkILP2wlJwzUPG+6Uga6KbbjoroyU/JoZ9LyoagMiWMcFB28mAbKJZU188c6BdkG iPXxFdg1xsgyCKtCPJwf3Mw6/vrMx4LtDAEa+0V8XPtM4NDgta8n/cmIBqeScla/mDOMUcuSJ0WRN ZH+4mvjtVj0fYOPj3wgMrMA2x8rD3fwXpEpJVkSx/qy743+E2DxcfmAdbtahhQz2vFoEdYFwYl0Kp 3A4I60nmtKULjXxM7ZKA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1ptoAn-001EDH-2O; Tue, 02 May 2023 11:27:57 +0000 Received: from relay6-d.mail.gandi.net ([217.70.183.198]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1ptoAi-001EBU-2V; Tue, 02 May 2023 11:27:55 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 1A031C0008; Tue, 2 May 2023 11:27:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1683026868; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=v5uZzLTFj4JCdpkIdpRTcXSLdigmmlJ0kUKE2R8/0Y0=; b=QUn/PyRfXaOFOdB4jIFGk9BmWbv6JBk7SNDTzb1WIjTDj6KPPex59UjoQvArhtTWZoftiV y0AOLzuljE7TG/nOJo6aW5+70z36bzIrh3DnbsxExIsL5Ob6X0dcRpi7JKzFIiWoXvQWyS E/VSAcxUDjLbW+hFmfhQ6esIjgwwY6BKR7m33nPgxuJ99TxoS1ME6FJY+lsv7pVVMwuJtC TbRbedMCT6GI0cvG/ZawyPo0Dq4wi9NPDJolhy1UT5xNIZRZCyB3LqcxFYkCgXdko+Ruo/ 55HVunOgyeqCkxst4o9KeFEnegBarXONo8JO2bK8arEGuvu9Ir4P3DIzmOcweQ== Date: Tue, 2 May 2023 13:27:45 +0200 From: Miquel Raynal To: Arseniy Krasnov Cc: Liang Yang , Richard Weinberger , Vignesh Raghavendra , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Jianxin Pan , Yixun Lan , , , , , , , "yonghui.yu" Subject: Re: [PATCH v1 4/5] mtd: rawnand: meson: clear OOB buffer before read Message-ID: <20230502132745.14349770@xps-13> In-Reply-To: <2274b432-d1a9-b3cf-4f7b-08c4a4c580b5@sberdevices.ru> References: <20230412061700.1492474-1-AVKrasnov@sberdevices.ru> <7520e512-8a19-ff04-364c-b5be0a579ef0@sberdevices.ru> <20230413102200.309fbe9c@xps-13> <20230413122252.0a8efcd8@xps-13> <569a948e-654a-b21f-8a4f-55dc4b295387@sberdevices.ru> <60fa656e-bda1-1de6-a79e-3e3041cd69a8@sberdevices.ru> <780c0cae-18b6-2652-1c2c-6d398ea60451@amlogic.com> <20230418152505.72fc16da@xps-13> <15a6e415-1489-a81f-fc8f-2372678ad2cb@sberdevices.ru> <5e4b395e-bf9d-0123-a0f2-2b378d950b29@sberdevices.ru> <20230502115913.78012d98@xps-13> <2274b432-d1a9-b3cf-4f7b-08c4a4c580b5@sberdevices.ru> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230502_042753_083287_3FC70BCD X-CRM114-Status: GOOD ( 44.90 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org SGkgQXJzZW5peSwKCmF2a3Jhc25vdkBzYmVyZGV2aWNlcy5ydSB3cm90ZSBvbiBUdWUsIDIgTWF5 IDIwMjMgMTM6MTE6MzggKzAzMDA6Cgo+IE9uIDAyLjA1LjIwMjMgMTI6NTksIE1pcXVlbCBSYXlu YWwgd3JvdGU6Cj4gPiBIaSBBcnNlbml5LAo+ID4gCj4gPiBhdmtyYXNub3ZAc2JlcmRldmljZXMu cnUgd3JvdGUgb24gV2VkLCAyNiBBcHIgMjAyMyAxNzo0NjoxOSArMDMwMDoKPiA+ICAgCj4gPj4g T24gMjYuMDQuMjAyMyAxNjo1MSwgTGlhbmcgWWFuZyB3cm90ZTogIAo+ID4+PiBIaSBBcnNlbml5 LAo+ID4+Pgo+ID4+PiBPbiAyMDIzLzQvMjAgMTc6MzcsIEFyc2VuaXkgS3Jhc25vdiB3cm90ZTog ICAgCj4gPj4+PiBbIEVYVEVSTkFMIEVNQUlMIF0KPiA+Pj4+Cj4gPj4+PiBPbiAxOS4wNC4yMDIz IDA5OjQxLCBBcnNlbml5IEtyYXNub3Ygd3JvdGU6ICAgIAo+ID4+Pj4+Cj4gPj4+Pj4KPiA+Pj4+ PiBPbiAxOS4wNC4yMDIzIDA2OjA1LCBMaWFuZyBZYW5nIHdyb3RlOiAgICAKPiA+Pj4+Pj4gSGkg QXJzZW5peSwKPiA+Pj4+Pj4KPiA+Pj4+Pj4gT24gMjAyMy80LzE4IDIyOjU3LCBBcnNlbml5IEty YXNub3Ygd3JvdGU6ICAgIAo+ID4+Pj4+Pj4gWyBFWFRFUk5BTCBFTUFJTCBdCj4gPj4+Pj4+Pgo+ ID4+Pj4+Pj4KPiA+Pj4+Pj4+Cj4gPj4+Pj4+PiBPbiAxOC4wNC4yMDIzIDE2OjI1LCBNaXF1ZWwg UmF5bmFsIHdyb3RlOiAgICAKPiA+Pj4+Pj4+PiBIaSBBcnNlbml5LAo+ID4+Pj4+Pj4+ICAgIAo+ ID4+Pj4+Pj4+Pj4+IEhlbGxvIGFnYWluIEBMaWFuZyBATWlxdWVsIQo+ID4+Pj4+Pj4+Pj4+Cj4g Pj4+Pj4+Pj4+Pj4gT25lIG1vcmUgcXVlc3Rpb24gYWJvdXQgT09CIGFjY2VzcywgYXMgSSBjYW4g c2VlIGN1cnJlbnQgZHJpdmVyIHVzZXMgdGhlIGZvbGxvd2luZwo+ID4+Pj4+Pj4+Pj4+IGNhbGxi YWNrczoKPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IMKgwqDCoMKgwqAgbmFuZC0+ZWNjLndy aXRlX29vYl9yYXcgPSBuYW5kX3dyaXRlX29vYl9zdGQ7Cj4gPj4+Pj4+Pj4+Pj4gwqDCoMKgwqDC oCBuYW5kLT5lY2Mud3JpdGVfb29iID0gbmFuZF93cml0ZV9vb2Jfc3RkOwo+ID4+Pj4+Pj4+Pj4+ Cj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+PiBGdW5jdGlvbiAnbmFuZF93cml0ZV9vb2Jfc3Rk KCknIHdyaXRlcyBkYXRhIHRvIHRoZSBlbmQgb2YgdGhlIHBhZ2UuIEJ1dCBhcyBJCj4gPj4+Pj4+ Pj4+Pj4gY2FuIHNlZSBieSBkdW1waW5nICdkYXRhX2J1ZicgZHVyaW5nIHJlYWQsIHBoeXNpY2Fs IGxheW91dCBvZiBlYWNoIHBhZ2UgaXMgdGhlCj4gPj4+Pj4+Pj4+Pj4gZm9sbG93aW5nICgxS0Ig RUNDKToKPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IDB4MDAwOiBbwqDCoMKgwqDCoMKgwqDC oCAxIEtCIG9mIGRhdGHCoMKgwqDCoMKgwqDCoCBdCj4gPj4+Pj4+Pj4+Pj4gMHg0MDA6IFsgMkIg dXNlciBkYXRhXSBbIDE0QiBFQ0MgY29kZV0KPiA+Pj4+Pj4+Pj4+PiAweDQxMDogW8KgwqDCoMKg wqDCoMKgwqAgMSBLQiBvZiBkYXRhwqDCoMKgwqDCoMKgwqAgXcKgwqDCoCAoQSkKPiA+Pj4+Pj4+ Pj4+PiAweDgxMDogWyAyQiB1c2VyIGRhdGFdIFsgMTRCIEVDQyBjb2RlXQo+ID4+Pj4+Pj4+Pj4+ IDB4ODIwOiBbwqDCoMKgwqDCoMKgwqAgMzJCIHVudXNlZMKgwqDCoMKgwqDCoMKgwqDCoMKgIF0K PiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+PiBT bywgYWZ0ZXIgJ25hbmRfd3JpdGVfb29iX3N0ZCgpJyAobGV0IGRhdGEgYmUgc2VxdWVuY2UgZnJv bSBbMHgwIC4uLiAweDNmXSksCj4gPj4+Pj4+Pj4+Pj4gcGFnZSB3aWxsIGxvb2sgbGlrZSB0aGlz Ogo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gMHgwMDA6IFvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMHhGRsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXQo+ID4+Pj4+Pj4+Pj4+IDB4NDAwOiBb wqDCoMKgwqDCoMKgwqDCoMKgwqAgLi4uLi4uLi7CoMKgwqDCoMKgwqDCoMKgwqAgXQo+ID4+Pj4+ Pj4+Pj4+IDB4N2YwOiBbwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4RkbCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIF0KPiA+Pj4+Pj4+Pj4+PiAweDgwMDogWyAwMCAuLi4uLi4uLi4uLi4uLi4uLi4u Li4uLsKgIF0KPiA+Pj4+Pj4+Pj4+PiAweDgzMDogWyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4g M2YgXQo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gSGVyZSB3ZSBoYXZlIHR3byBwcm9ibGVt czoKPiA+Pj4+Pj4+Pj4+PiAxKSBBdHRlbXB0IHRvIGRpc3BsYXkgcmF3IGRhdGEgYnkgJ25hbmRk dW1wJyB1dGlsaXR5IHByb2R1Y2VzIGEgbGl0dGxlIGJpdAo+ID4+Pj4+Pj4+Pj4+IMKgwqDCoMKg wqAgaW52YWxpZCBvdXRwdXQsIGFzIGRyaXZlciByZWxpZXMgb24gbGF5b3V0IChBKSBmcm9tIGFi b3ZlLiBFLmcuIE9PQiBkYXRhCj4gPj4+Pj4+Pj4+Pj4gwqDCoMKgwqDCoCBpcyBhdCAweDQwMCBh bmQgMHg4MTAuIEhlcmUgaXMgYW4gZXhhbXBsZSAoYXR0ZW1wdCB0byB3cml0ZSAweDExIDB4MjIg MHgzMyAweDQ0KToKPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IDB4MDAwMDA3ZjA6IDExIDIy IGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmwqAgfC4iLi4uLi4uLi4u Li4uLi58Cj4gPj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgT09CIERhdGE6IGZmIGZmIGZmIGZmIGZmIGZm IGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmwqAgfC4uLi4uLi4uLi4uLi4uLi58Cj4gPj4+ Pj4+Pj4+Pj4gwqDCoMKgwqAgT09CIERhdGE6IDMzIDQ0IGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZm IGZmIGZmIGZmIGZmIGZmIGZmwqAgfDNELi4uLi4uLi4uLi4uLi58Cj4gPj4+Pj4+Pj4+Pj4gwqDC oMKgwqAgT09CIERhdGE6IGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZm IGZmIGZmwqAgfC4uLi4uLi4uLi4uLi4uLi58Cj4gPj4+Pj4+Pj4+Pj4gwqDCoMKgwqAgT09CIERh dGE6IGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmwqAgfC4u Li4uLi4uLi4uLi4uLi58Cj4gPj4+Pj4+Pj4+Pj4gICAgCj4gPj4+Pj4+Pj4+PiBIaSBBcnNlbml5 LAo+ID4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+IEkgcmVhbGl6ZWQgdGhlIHdyaXRlX29vYl9yYXco KSBhbmQgd3JpdGVfb29iKCkgYXJlIHdyb25nIGluIG1lc29uX25hbmQuYy4gSSBzdWdnZXN0IGJv dGggb2YgdGhlbSBzaG91bGQgYmUgcmV3b3JrZWQgYW5kIGZvbGxvdyB0aGUgZm9ybWF0IG9mIG1l c29uIG5hbmQgY29udHJvbGxlci4gaS5lLiBmaXJzdGx5IGZvcm1hdCB0aGUgZGF0YSBpbiBMYXlv dXQgKEEpIGFuZCB0aGVuIHdyaXRlLiByZWFkaW5nIGlzIGZpcnN0bHkgcmVhZGluZyB0aGUgZGF0 YSBvZiBsYXlvdXQgKEEpIGFuZCB0aGVuIGNvbXBvc3QgdGhlIGxheW91dCAoQikuICAgIAo+ID4+ Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBJSVVDIGFmdGVyIHN1Y2ggd3JpdGluZyBvbmx5IE9PQiAoZS5n LiB1c2VyIGJ5dGVzKSBhY2NvcmRpbmcgbGF5b3V0IChBKSwgaHcgd2lsbCBhbHNvIHdyaXRlIEVD QyBjb2Rlcywgc28KPiA+Pj4+Pj4+Pj4gaXQgd2lsbCBiZSBpbXBvc3NpYmxlIHRvIHdyaXRlIGRh dGEgdG8gdGhpcyBwYWdlIGxhdGVyLCBiZWNhdXNlIHdlIGNhbm5vdCB1cGRhdGUgRUNDIGNvZGVz IHByb3Blcmx5IGZvciB0aGUgbmV3bHkKPiA+Pj4+Pj4+Pj4gd3JpdHRlbiBkYXRhICh3ZSBjYW4n dCB1cGRhdGUgYml0cyBmcm9tIDAgdG8gMSkuCj4gPj4+Pj4+Pj4+ICAgIAo+ID4+Pj4+Pj4+Pj4K PiA+Pj4+Pj4+Pj4+ICAgIAo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gMikgQXR0ZW1wdCB0 byByZWFkIGRhdGEgaW4gRUNDIG1vZGUgd2lsbCBmYWlsLCBiZWNhdXNlIElJVUMgcGFnZSBpcyBp biBkaXJ0eQo+ID4+Pj4+Pj4+Pj4+IMKgwqDCoMKgwqAgc3RhdGUgKEkgbWVhbiB3YXMgd3JpdHRl biBhdCBsZWFzdCBvbmNlKSBhbmQgTkFORCBjb250cm9sbGVyIHRyaWVzIHRvIHVzZQo+ID4+Pj4+ Pj4+Pj4+IMKgwqDCoMKgwqAgRUNDIGNvZGVzIGF0IDB4NDAwIGFuZCAweDgxMCwgd2hpY2ggYXJl IG9idmlvdXNseSBicm9rZW4gaW4gdGhpcyBjYXNlLiBUaHVzICAgIAo+ID4+Pj4+Pj4+Pj4KPiA+ Pj4+Pj4+Pj4+IEFzIGkgc2FpZCBhYm92ZSwgd3JpdGVfb29iX3JhdygpIGFuZCB3cml0ZV9vb2Io KSBzaG91bGQgYmUgcmV3b3JrZWQuCj4gPj4+Pj4+Pj4+PiBpIGRvbid0IGtub3cgd2hhdCBkbyB5 b3UgbWVhbiBwYWdlIHdhcyB3cml0dGVuIGF0IGxlYXN0IG9uY2UuIGFueXdheSB0aGUgcGFnZSBz aG91bGQgYmUgd3JpdHRlbiBvbmNlLCBldmVuIGp1c3Qgd3JpdGVfb29iX3JhdygpLiAgICAKPiA+ Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gU29ycnksIFlvdSBtZWFuIHRoYXQgYWZ0ZXIgT09CIHdyaXRl LCB3ZSBjYW5ub3Qgd3JpdGUgdG8gdGhlIGRhdGEgYXJlYSAoZS5nLiAweDAgLi4gMHg4MTApIHVu dGlsIHBhZ2Ugd2lsbCBiZSBlcmFzZWQ/IEZvciBleGFtcGxlCj4gPj4+Pj4+Pj4+IEpGRlMyIHdy aXRlcyB0byBPT0Igb3duIG1hcmtlcnMsIHRoZW4gaXQgdHJpZXMgdG8gd3JpdGUgdG8gdGhlIGRh dGEgYXJlYSBvZiBzdWNoIHBhZ2UuICAgIAo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IEBMaWFuZywgSSds bCBkZXNjcmliZSBjdXJyZW50IHRlc3QgY2FzZSBpbiBkZXRhaWxzOgo+ID4+Pj4+Pj4gMSkgSSBo YXZlIGVyYXNlZCBwYWdlLCBJIGNhbiByZWFkIGl0IGluwqAgYm90aCByYXcgYW5kIGVjYyBtb2Rl cyAtIG5vIHByb2JsZW0gKGl0IGlzIGZ1bGwgb2YgMHhGRikuCj4gPj4+Pj4+PiAyKSBJIChKRkZT MiBmb3IgZXhhbXBsZSkgd2FudCB0byB3cml0ZSBvbmx5IE9PQiAtIGxldCBpdCBiZSBjbGVhbiBt YXJrZXJzLgo+ID4+Pj4+Pj4gMykgSSB1c2UgcmF3IHdyaXRlIHRvIHRoZSBuZWVkZWQgcGFnZSAo cGxlYXNlIGNvcnJlY3QgbWUgaWYgaSdtIHdyb25nKS4gRm91ciBieXRlcwo+ID4+Pj4+Pj4gwqDC oMKgwqAgYXQgMHg0MDAgYW5kIDB4ODEwIGFyZSB1cGRhdGVkLiBBbGwgb3RoZXIgYnl0ZXMgc3Rp bGwgMHhmZi4KPiA+Pj4+Pj4+IDQpIE5vdywgd2hlbiBpJ20gdHJ5aW5nIHRvIHJlYWQgdGhpcyBw YWdlIGluIEVDQyBtb2RlLCBJIGdldCBFQ0MgZXJyb3JzOiBJSVVDIHRoaXMKPiA+Pj4+Pj4+IMKg wqDCoMKgIGhhcHBlbnMgYmVjYXVzZSBmcm9tIGNvbnRyb2xsZXIgcG9pbnQgb2YgdmlldyBFQ0Mg Y29kZXMgYXJlIGludmFsaWQgZm9yIGN1cnJlbnQKPiA+Pj4+Pj4+IMKgwqDCoMKgIGRhdGEgKGFs bCBFQ0NzIGFyZSAweGZmKS4gSXMgdGhpcyBiZWhhdmlvdXIgaXMgb2s/ICAgIAo+ID4+Pj4+Pgo+ ID4+Pj4+PiBZZXMsIGl0IGlzIGV4YWN0bHkgcmVwb3J0ZWQgRUNDIGVycm9ycy4gICAgCj4gPj4+ Pj4KPiA+Pj4+PiBJIHNlZSwgc28gaWYgd2Ugd3JpdGUgT09CIChlLmcuIHVzaW5nIHJhdyBtb2Rl KSwgdGhlcmUgaXMgbm8gd2F5IHRvIHJlYWQgdGhpcyBwYWdlIGluIEVDQyBtb2RlIGxhdGVyPyBB bmQgdGhlICAgIAo+ID4+Pgo+ID4+PiBPZiBjb3Vyc2UsIHRoZXJlIGlzIG5vIEVDQyBwYXJpdHkg Ynl0ZXMgaW4gaXQ7IG9yIHJhdyB3cml0ZSB0aGUgZGF0YSB3aXRoIHRoZSBFQ0MgcGFyaXR5IGJ5 dGVzIHBlciB0aGUgbGF5b3V0IChBKSB5b3UgZGVzY3JpYmUgYWJvdmUuCj4gPj4+ICAgICAKPiA+ Pgo+ID4+IEJ1dCBkb24ndCBpdCBsb29rcyBsaWtlIHN0cmFuZ2U/IEp1c3Qgd3JpdGluZyBPT0Ig bWFrZXMgcGFnZSB1bnJlYWRhYmxlPyBNYXkgYmUgaXQgaXMgYmV0dGVyIHRvIG1vdmUgT09CIGRh dGEKPiA+PiBvdXQgb2YgRUNDIGFyZWEgYXMgSSBzdWdnZXN0ZWQgaW4gdjI/Cj4gPj4gIAo+ID4+ Pj4+IG9ubHkgd2F5IHRvIG1ha2UgaXQgcmVhZGFibGUgaXMgdG8gd3JpdGUgaXQgaW4gRUNDIG1v ZGUsIGJ1dCBiZWZvcmUgdGhpcyB3cml0ZSwgd2UgbmVlZCB0byByZWFkIGl0J3MKPiA+Pj4+PiB1 c2VyJ3MgYnl0ZSAoZnJvbSBwcmV2aW91cyBPT0Igd3JpdGUpIGluIHJhdyBtb2RlLCBwdXQgaXQg dG8gaW5mbyBidWYgKGFzIHVzZXIncyBieXRlcykgYW5kIHdyaXRlIHRoaXMgcGFnZS4gSW4gdGhp cwo+ID4+Pj4+IGNhc2UgTkFORCBjb250cm9sbGVyIHdpbGwgZ2VuZXJhdGUgRUNDIGNvZGVzIGlu Y2x1ZGluZyB1c2VyJ3MgYnl0ZSBhbmQgcGFnZSBiZWNvbWUgcmVhZGFibGUgaW4gRUNDIG1vZGUK PiA+Pj4+PiBhZ2Fpbi4gICAgCj4gPj4+Cj4gPj4+IHllcywgeW91IGFyZSByaWdodC4KPiA+Pj4g ICAgIAo+ID4+Pj4+ICAgIAo+ID4+Pj4+PiAgICAKPiA+Pj4+Pj4+IDUpIE9rLCBkb24ndCBjYXJl IG9uIHRoZXNlIEVDQyBlcnJvcnMsIGxldCdzIGdvIGZ1cnRoZXIuCj4gPj4+Pj4+PiA2KSBJJ20g Z29pbmcgdG8gd3JpdGUgc2FtZSBwYWdlIGluIEVDQyBtb2RlIC0gaG93IHRvIGRvIGl0IGNvcnJl Y3RseT8gVGhlcmUgaXMgYWxyZWFkeQo+ID4+Pj4+Pj4gwqDCoMKgwqAgNCBPT0IgYnl0ZXMsIGNv bnNpZGVyZWQgdG8gYmUgY292ZXJlZCBieSBFQ0MgKGJ1dCBpbiBmYWN0IG5vdyAtIEVDQyBhcmVh IGlzIEZGZWQpLiAgICAKPiA+Pj4+Pj4KPiA+Pj4+Pj4gSWYgc3RlcCA0IGhhcyBleGN1dGVkICJw cm9ncmFtIiBjb21tYW5kIGF0IHRoZSBwYWdlIChuYW5kX3dyaXRlX29vYl9zdGQoKSBkb2VzKSwg aXQgY2FuJ3QgYmUgd3JpdHRlbiBhZ2FpbiBiZWZvcmUgZXJhc2luZyB0aGUgcGFnZShibG9jayku IHNvIHdlIGhhdmUgdG8gcmVhZCB0aGUgd2hvbGUgcGFnZSBpbiB0aGUgZGRyIGFuZCBjaGFuZ2Ug dGhlIGNvbnRlbnQsIGVyYXNlIGJsb2NrLCB3cml0ZSBpdCBhZ2Fpbi4KPiA+Pj4+Pj4KPiA+Pj4+ Pj4gSSBkb24ndCB0aGluayBKZmZzMiBoYXMgdGhlIHNhbWUgc3RlcHMgKDEtNikgYXMgeW91IHNh aWQgYWJvdmUuIGFyZSB5b3Ugc3VyZSB0aGF0IGhhcHBlcyBvbiBKZmZzMiBvciBqdXN0IGFuIGV4 YW1wbGU/ICAgIAo+ID4+Pj4KPiA+Pj4+ICAgIAo+ID4+Pj4+Cj4gPj4+Pj4gSSBqdXN0IGNoZWNr ZWQgSkZGUzIgbW91bnQvdW1vdW50IGFnYWluLCBoZXJlIGlzIHdoYXQgaSBzZWU6Cj4gPj4+Pj4g MCkgRmlyc3QgYXR0ZW1wdCB0byBtb3VudCBKRkZTMi4KPiA+Pj4+PiAxKSBJdCB3cml0ZXMgT09C IHRvIHBhZ2UgTiAoaSdtIHVzaW5nIHJhdyB3cml0ZSkuIEl0IGlzIGNsZWFubWFya2VyIHZhbHVl IDB4ODUgMHgxOSAweDAzIDB4MjAuIE1vdW50IGlzIGRvbmUuCj4gPj4+Pj4gMikgVW1vdW50IEpG RlMyLiBEb25lLgo+ID4+Pj4+IDMpIFNlY29uZCBhdHRlbXB0IHRvIG1vdW50IEpGRlMyLgo+ID4+ Pj4+IDQpIEl0IHJlYWRzIE9PQiBmcm9tIHBhZ2UgTiAoaSdtIHVzaW5nIHJhdyByZWFkKS4gVmFs dWUgaXMgMHg4NSAweDE5IDB4MDMgMHgyMC4gRG9uZS4KPiA+Pj4+PiA1KSBJdCByZWFkcyBwYWdl IE4gaW4gRUNDIG1vZGUsIGFuZCBpIGdldDoKPiA+Pj4+PiDCoMKgwqDCoCBqZmZzMjogbXRkLT5y ZWFkKDB4MTAwIGJ5dGVzIGZyb20gTikgcmV0dXJuZWQgRUNDIGVycm9yCj4gPj4+Pj4gNikgTW91 bnQgZmFpbGVkLgo+ID4+Pj4+Cj4gPj4+Pj4gV2UgYWxyZWFkeSBoYWQgcHJvYmxlbSB3aGljaCBs b29rcyBsaWtlIHRoaXMgb24gYW5vdGhlciBkZXZpY2UuIFNvbHV0aW9uIHdhcyB0byB1c2UgT09C IGFyZWEgd2hpY2ggaXMKPiA+Pj4+PiBub3QgY292ZXJlZCBieSBFQ0MgZm9yIEpGRlMyIGNsZWFu bWFya2Vycy4gICAgCj4gPj4+Cj4gPj4+IG9rLCBzbyB0aGVyZSBpcyBub3QgRUNDIHBhcml0eSBi eXRlcyBhbmQgbXRkLT5yZWFkKCkgcmV0dXJucyBFQ0MgZXJyb3IuCj4gPj4+IGRvZXMgaXQgaGF2 ZSB0byB1c2UgcmF3IHdyaXRlL3JlYWQgb24gc3RlcCAxKSBhbmQgNCk/Cj4gPj4+ICAgICAKPiA+ Pgo+ID4+IElmIGknbSB1c2luZyBub24gcmF3IGFjY2VzcyB0byBPT0IsIGZvciBleGFtcGxlIHdy aXRlIE9PQiAodXNlciBieXRlcykgaW4gRUNDIG1vZGUsIHRoZW4KPiA+PiBzdGVwcyAxKSBhbmQg NCkgYW5kIDUpIHBhc3NlcyBvaywgYnV0IHdyaXRlIHRvIHRoaXMgcGFnZSB3aWxsIGJlIGltcG9z c2libGUgKGZvciBleGFtcGxlIEpGRlMyCj4gPj4gd3JpdGVzIHRvIHN1Y2ggcGFnZXMgbGF0ZXIp IC0gd2UgY2FuJ3QgdXBkYXRlIEVDQyBjb2RlcyBwcm9wZXJseSB3aXRob3V0IGVyYXNpbmcgd2hv bGUgcGFnZS4KPiA+PiBXcml0ZSBvcGVyYXRpb24gd2lsbCBiZSBkb25lIHdpdGhvdXQgcHJvYmxl bSwgYnV0IHJlYWQgd2lsbCB0cmlnZ2VyIEVDQyBlcnJvcnMgZHVlIHRvIGJyb2tlbgo+ID4+IEVD QyBjb2Rlcy4KPiA+Pgo+ID4+IEluIGdlbmVyYWwgcHJvYmxlbSB0aGF0IHdlIGRpc2N1c3MgaXMg dGhhdCBpbiBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRhdGEgYW5kIE9PQiBjb25mbGljdHMKPiA+ PiB3aXRoIGVhY2ggb3RoZXIgYnkgc2hhcmluZyBzYW1lIEVDQyBjb2RlcywgdGhlc2UgRUNDIGNv ZGVzIGNvdWxkIGJlIHdyaXR0ZW4gb25seSBvbmNlICh3aXRob3V0Cj4gPj4gZXJhc2luZyksIHdo aWxlIGRhdGEgYW5kIE9PQiBoYXMgZGlmZmVyZW50IGNhbGxiYWNrcyB0byBhY2Nlc3MgYW5kIHRo dXMgc3VwcG9zZWQgdG8gd29yawo+ID4+IHNlcGFyYXRlbHkuICAKPiA+IAo+ID4gVGhlIGZhY3Qg dGhhdCB0aGVyZSBtaWdodCBiZSBoZWxwZXJzIGp1c3QgZm9yIHdyaXRpbmcgT09CIGFyZWFzIG9y IGp1c3QKPiA+IGluLWJhbmQgYXJlYXMgYXJlIG9wdGltaXphdGlvbnMuIE5BTkQgcGFnZXMgYXJl IG1lYW50IHRvIGJlIHdyaXR0ZW4gYQo+ID4gc2luZ2xlIHRpbWUsIG5vIG1hdHRlciB3aGF0IHBv cnRpb24geW91IHdyaXRlLiBJbiBzb21lIGNhc2VzLCBpdCBpcwo+ID4gcG9zc2libGUgdG8gcGVy Zm9ybSBzdWJwYWdlIHdyaXRlcyBpZiB0aGUgY2hpcCBzdXBwb3J0cyBpdC4gUGFnZXMgbWF5Cj4g PiBiZSBzcGxpdCBpbnRvIHNldmVyYWwgYXJlYXMgd2hpY2ggY292ZXIgYSBwYXJ0aWFsIGluLWJh bmQgYXJlYSAqYW5kKiBhCj4gPiBwYXJ0aWFsIE9PQiBhcmVhLiBJZiB5b3Ugd3JpdGUgaW50byB0 aGUgaW4tYmFuZCAqb3IqIG91dC1vZi1iYW5kIGFyZWFzCj4gPiBvZiBhIGdpdmVuIHN1YnBhZ2Us IHlvdSAqY2Fubm90KiB3cml0ZSB0aGUgb3RoZXIgcGFydCBsYXRlciB3aXRob3V0ICAKPiAKPiBU aGFua3MgZm9yIGRldGFpbHMhIFNvIGluIGNhc2Ugb2YgSkZGUzIgaXQgbG9va3MgbGlrZSBzdHJh bmdlLCB0aGF0IGl0IHRyaWVzCj4gdG8gd3JpdGUgcGFnZSBhZnRlciB3cml0aW5nIGNsZWFuIG1h cmtlcnMgdG8gaXQgYmVmb3JlPyBJbiB0aGUgb2xkIHZlbmRvcidzCj4gZHJpdmVyIE9PQiB3cml0 ZSBjYWxsYmFjayBpcyBzdXBwcmVzc2VkIGJ5IHJldHVybiAwIGFsd2F5cyBhbmQgSkZGUzIgd29y a3MKPiBjb3JyZWN0bHkuCgpDYW4geW91IHBvaW50IHRoZSBjb2RlIHlvdSdyZSBtZW50aW9uaW5n PyAoYm90aCB3aGF0IEpGRlMyIHdoaWNoIGxvb2tzCnN0cmFuZ2UgdG8geW91IGFuZCB0aGUgb2xk IHZlbmRvciBoYWNrKQoKClRoYW5rcywKTWlxdcOobAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4IE1URCBkaXNjdXNzaW9uIG1haWxp bmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LW10ZC8K