From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B7A6B41DFF; Tue, 7 Mar 2023 11:11:12 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5E54240E03; Tue, 7 Mar 2023 11:11:12 +0100 (CET) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 1BDEC4067E for ; Tue, 7 Mar 2023 11:11:10 +0100 (CET) Received: from frapeml100006.china.huawei.com (unknown [172.18.147.206]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4PWB6c2mcTz6J7Tt; Tue, 7 Mar 2023 18:11:04 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml100006.china.huawei.com (7.182.85.201) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 7 Mar 2023 11:11:09 +0100 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.021; Tue, 7 Mar 2023 11:11:09 +0100 From: Konstantin Ananyev To: Konstantin Ananyev , Fengchengwen , Ajit Khaparde , "Ferruh Yigit" CC: Konstantin Ananyev , Thomas Monjalon , Andrew Rybchenko , "dev@dpdk.org" Subject: RE: [PATCH 1/5] ethdev: fix race-condition of proactive error handling mode Thread-Topic: [PATCH 1/5] ethdev: fix race-condition of proactive error handling mode Thread-Index: AQHZS+uvQnCnmh+sv0S0/W2/2wgHVa7nZ26wgAHQp4CAAwPJgIABLjQAgAAlK+D///3qAIAAAVaAgAASk4CAAVMHgIAAKIowgAAEK2A= Date: Tue, 7 Mar 2023 10:11:09 +0000 Message-ID: References: <20230301030610.49468-1-fengchengwen@huawei.com> <20230301030610.49468-2-fengchengwen@huawei.com> <0f387ca1eee34a7f92745de7b59a71a1@huawei.com> <18c5b676-ae72-e646-89af-d6cd636d923f@yandex.ru> <5b40049f-6f22-fc3f-b13e-da1793c2fd1a@amd.com> <9092fdae9c1d4c53a00a8f23eb1129ec@huawei.com> <0effdaa9-5045-0635-775c-6e1eda0d5dba@amd.com> <9dc5d714-07a4-c32e-e557-efe8e7fe2d16@huawei.com> <4b22988ae22e4db08d1cb1f810832605@huawei.com> In-Reply-To: <4b22988ae22e4db08d1cb1f810832605@huawei.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.48.149.130] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4gPiA+Pj4+Pj4+Pj4gSW4gdGhlIHByb2FjdGl2ZSBlcnJvciBoYW5kbGluZyBtb2RlLCB0 aGUgUE1EIHdpbGwgc2V0IHRoZSBkYXRhIHBhdGgNCj4gPiA+Pj4+Pj4+Pj4gcG9pbnRlcnMgdG8g ZHVtbXkgZnVuY3Rpb25zIGFuZCB0aGVuIHRyeSByZWNvdmVyeSwgaW4gdGhpcyBwZXJpb2QgdGhl DQo+ID4gPj4+Pj4+Pj4+IGFwcGxpY2F0aW9uIG1heSBzdGlsbCBpbnZva2luZyBkYXRhIHBhdGgg QVBJLiBUaGlzIHdpbGwgaW50cm9kdWNlIGENCj4gPiA+Pj4+Pj4+Pj4gcmFjZS1jb25kaXRpb24g d2l0aCBkYXRhIHBhdGggd2hpY2ggbWF5IGxlYWQgdG8gY3Jhc2ggWzFdLg0KPiA+ID4+Pj4+Pj4+ Pg0KPiA+ID4+Pj4+Pj4+PiBBbHRob3VnaCB0aGUgUE1EIGFkZGVkIGRlbGF5IGFmdGVyIHNldHRp bmcgZGF0YSBwYXRoIHBvaW50ZXJzIHRvIGNvdmVyDQo+ID4gPj4+Pj4+Pj4+IHRoZSBhYm92ZSBy YWNlLWNvbmRpdGlvbiwgaXQgcmVkdWNlcyB0aGUgcHJvYmFiaWxpdHksIGJ1dCBpdCBkb2Vzbid0 DQo+ID4gPj4+Pj4+Pj4+IHNvbHZlIHRoZSBwcm9ibGVtLg0KPiA+ID4+Pj4+Pj4+Pg0KPiA+ID4+ Pj4+Pj4+PiBUbyBzb2x2ZSB0aGUgcmFjZS1jb25kaXRpb24gcHJvYmxlbSBmdW5kYW1lbnRhbGx5 LCB0aGUgZm9sbG93aW5nDQo+ID4gPj4+Pj4+Pj4+IHJlcXVpcmVtZW50cyBhcmUgYWRkZWQ6DQo+ ID4gPj4+Pj4+Pj4+IDEuIFRoZSBQTUQgc2hvdWxkIHNldCB0aGUgZGF0YSBwYXRoIHBvaW50ZXJz IHRvIGR1bW15IGZ1bmN0aW9ucyBhZnRlcg0KPiA+ID4+Pj4+Pj4+PiAgICAgcmVwb3J0IFJURV9F VEhfRVZFTlRfRVJSX1JFQ09WRVJJTkcgZXZlbnQuDQo+ID4gPj4+Pj4+Pj4+IDIuIFRoZSBhcHBs aWNhdGlvbiBzaG91bGQgc3RvcCBkYXRhIHBhdGggQVBJIGludm9jYXRpb24gd2hlbiBwcm9jZXNz DQo+ID4gPj4+Pj4+Pj4+ICAgICB0aGUgUlRFX0VUSF9FVkVOVF9FUlJfUkVDT1ZFUklORyBldmVu dC4NCj4gPiA+Pj4+Pj4+Pj4gMy4gVGhlIFBNRCBzaG91bGQgc2V0IHRoZSBkYXRhIHBhdGggcG9p bnRlcnMgdG8gdmFsaWQgZnVuY3Rpb25zIGJlZm9yZQ0KPiA+ID4+Pj4+Pj4+PiAgICAgcmVwb3J0 IFJURV9FVEhfRVZFTlRfUkVDT1ZFUllfU1VDQ0VTUyBldmVudC4NCj4gPiA+Pj4+Pj4+Pj4gNC4g VGhlIGFwcGxpY2F0aW9uIHNob3VsZCBlbmFibGUgZGF0YSBwYXRoIEFQSSBpbnZvY2F0aW9uIHdo ZW4gcHJvY2Vzcw0KPiA+ID4+Pj4+Pj4+PiAgICAgdGhlIFJURV9FVEhfRVZFTlRfUkVDT1ZFUllf U1VDQ0VTUyBldmVudC4NCj4gPiA+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+DQo+ID4gPj4+Pj4+PiBI b3cgdGhpcyBpcyBzb2x2aW5nIHRoZSByYWNlLWNvbmRpdGlvbiwgYnkgcHVzaGluZyByZXNwb25z aWJpbGl0eSB0bw0KPiA+ID4+Pj4+Pj4gc3RvcCBkYXRhIHBhdGggdG8gYXBwbGljYXRpb24/DQo+ ID4gPj4+Pj4+DQo+ID4gPj4+Pj4+IEV4YWN0bHksIGl0IGJlY29tZXMgYXBwbGljYXRpb24gcmVz cG9uc2liaWxpdHkgdG8gbWFrZSBzdXJlIGRhdGEtcGF0aCBpcw0KPiA+ID4+Pj4+PiBzdG9wcGVk L3N1c3BlbmRlZCBiZWZvcmUgcmVjb3Zlcnkgd2lsbCBjb250aW51ZS4NCj4gPiA+Pj4+Pj4NCj4g PiA+Pj4+Pg0KPiA+ID4+Pj4+IEZyb20gZG9jdW1lbnRhdGlvbiBvZiB0aGUgZmVhdHVyZToNCj4g PiA+Pj4+Pg0KPiA+ID4+Pj4+IGBgDQo+ID4gPj4+Pj4gQmVjYXVzZSB0aGUgUE1EIHJlY292ZXJz IGF1dG9tYXRpY2FsbHksDQo+ID4gPj4+Pj4gdGhlIGFwcGxpY2F0aW9uIGNhbiBvbmx5IHNlbnNl IHRoYXQgdGhlIGRhdGEgZmxvdyBpcyBkaXNjb25uZWN0ZWQgZm9yIGENCj4gPiA+Pj4+PiB3aGls ZSBhbmQgdGhlIGNvbnRyb2wgQVBJIHJldHVybnMgYW4gZXJyb3IgaW4gdGhpcyBwZXJpb2QuDQo+ ID4gPj4+Pj4NCj4gPiA+Pj4+PiBJbiBvcmRlciB0byBzZW5zZSB0aGUgZXJyb3IgaGFwcGVuaW5n L3JlY292ZXJpbmcsIGFzIHdlbGwgYXMgdG8gcmVzdG9yZQ0KPiA+ID4+Pj4+IHNvbWUgYWRkaXRp b25hbCBjb25maWd1cmF0aW9uLCB0aHJlZSBldmVudHMgYXJlIGF2YWlsYWJsZToNCj4gPiA+Pj4+ PiBgYA0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4gSXQgbG9va3MgbGlrZSBpbml0aWFsIGRlc2lnbiBp cyB0byB1c2UgZXZlbnRzIG1haW5seSBpbmZvcm0gYXBwbGljYXRpb24NCj4gPiA+Pj4+PiBhYm91 dCB3aGF0IGhhcHBlbmVkIGFuZCBtYWlubHkgZm9yIHJlLWNvbmZpZ3VyYXRpb24uDQo+ID4gPj4+ Pj4NCj4gPiA+Pj4+PiBBbHRob3VnaCBJIGFtIGRvbid0IGRpc2FncmVlIHRvIGludm9sdmUgdGhl IGFwcGxpY2F0aW9uLCBJIGFtIG5vdCBzdXJlDQo+ID4gPj4+Pj4gdGhhdCBpcyBwYXJ0IG9mIGN1 cnJlbnQgZGVzaWduLg0KPiA+ID4+Pj4NCj4gPiA+Pj4+IEkgdGhvdWdodCB3ZSBhbGwgYWdyZWVk IHRoYXQgaW5pdGlhbCBkZXNpZ24gY29udGFpbiBzb21lIGZhbGxhY2llcyB0aGF0DQo+ID4gPj4+ PiBuZWVkIHRvIGZpeGVkLCBubz8NCj4gPiA+Pj4+IFN0YXRlbWVudCB0aGF0IHdpdGggY3VycmVu dCBydGVfZXRoZGV2IGRlc2lnbiBlcnJvciByZWNvdmVyeSBjYW4gYmUgZG9uZQ0KPiA+ID4+Pj4g d2l0aG91dCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBhcHAgKHRvIHN0b3Avc3VzcGVuZCBkYXRhL2Nv bnRyb2wgcGF0aCkNCj4gPiA+Pj4+IGlzIHRoZSBtYWluIG9uZSBJIHRoaW5rLg0KPiA+ID4+Pj4g SXQgbmVlZHMgc29tZSBpbnRlcmFjdGlvbiB3aXRoIGFwcCBsYXllciwgb25lIHdheSBvciBhbm90 aGVyLg0KPiA+ID4+Pj4NCj4gPiA+Pj4+Pj4+DQo+ID4gPj4+Pj4+PiBXaGF0IGlmIGFwcGxpY2F0 aW9uIGlzIG5vdCBpbnRlcmVzdGVkIGluIHJlY292ZXJ5IG1vZGVzIGF0IGFsbCBhbmQgbm90DQo+ ID4gPj4+Pj4+PiByZWdpc3RlcmVkIGFueSBjYWxsYmFjayBmb3IgdGhlIHJlY292ZXJ5Pw0KPiA+ ID4+Pj4+Pg0KPiA+ID4+Pj4+Pg0KPiA+ID4+Pj4+PiBBcmUgeW91IHNheWluZyB0aGVyZSBpcyBu byB3YXkgZm9yIGFwcGxpY2F0aW9uIHRvIGRpc2FibGUNCj4gPiA+Pj4+Pj4gYXV0b21hdGljIHJl Y292ZXJ5IGluIFBNRCBpZiBpdCBpcyBub3QgaW50ZXJlc3RlZA0KPiA+ID4+Pj4+PiAob3IgY2Fu J3QgZnVsbC1maWxsIHBlci1yZXF1ZXN0aWVzIGZvciBpdCk/DQo+ID4gPj4+Pj4+IElmIHNvLCB0 aGVuIHllcyBpdCBpcyBhIHByb2JsZW0gYW5kIHdlIG5lZWQgdG8gZml4IGl0Lg0KPiA+ID4+Pj4+ PiBJIGFzc3VtZWQgdGhhdCBzdWNoIG1lY2hhbmlzbSB0byBkaXNhYmxlIHVud2FudGVkIGV2ZW50 cyBhbHJlYWR5IGV4aXN0cywNCj4gPiA+Pj4+Pj4gYnV0IEkgY2FuJ3QgZmluZCBhbnl0aGluZy4N Cj4gPiA+Pj4+Pj4gV29uZGVyIHdoYXQgd291bGQgYmUgdGhlIGVhc2llc3Qgd2F5IGhlcmUgLSBj YW4gUE1EIG1ha2UgYSBkZWNpc2lvbg0KPiA+ID4+Pj4+PiBiYXNlZCBvbiBjYWxsYmFjayByZXR1 cm4gdmFsdWUsIG9yIGRvIHdlIG5lZWQgYSBuZXcgQVBJIHRvDQo+ID4gPj4+Pj4+IGVuYWJsZS9k aXNhYmxlIGNhbGxiYWNrcywgb3IgLi4uPw0KPiA+ID4+Pj4+Pg0KPiA+ID4+Pj4+Pg0KPiA+ID4+ Pj4+DQo+ID4gPj4+Pj4gQXMgZmFyIGFzIEkgY2FuIHNlZSBhdXRvbWF0aWMgcmVjb3ZlcnkgaXMg bm90IGNvbmZpZ3VyYWJsZSBieSBhcHAuDQo+ID4gPj4+Pj4NCj4gPiA+Pj4+PiBCdXQgdGhhdCBp cyBub3QgYWxsLCBQTUQgc2VuZHMgZXZlbnRzIHRvIGFwcGxpY2F0aW9uIGJ1dCBQTUQgY2FuJ3Qg a25vdw0KPiA+ID4+Pj4+IGlmIGFwcGxpY2F0aW9uIGlzIGhhbmRsaW5nIHRoZW0gb3Igbm90LCBz byB3aXRoIGN1cnJlbnQgZGVzaWduIFBNRCBjYW4ndA0KPiA+ID4+Pj4+IHJlbHkgb24gdG8gYXBw Lg0KPiA+ID4+Pj4NCj4gPiA+Pj4+IFdlbGwsIFBNRCBpbnZva2VzIHVzZXIgcHJvdmlkZWQgY2Fs bGJhY2suDQo+ID4gPj4+PiBPbmUgd2F5IHRvIGZpeCB0aGF0IHByb2JsZW0gLSBpZiB0aGVyZSBp cyBubyBjYWxsYmFjayBwcm92aWRlZCwNCj4gPiA+Pj4+IG9yIGNhbGxiYWNrIHJldHVybnMgYW4g ZXJyb3IgY29kZSAtIFBNRCBjYW4gYXNzdW1lIHRoYXQgcmVjb3ZlcnkNCj4gPiA+Pj4+IHNob3Vs ZCBub3QgYmUgZG9uZS4NCj4gPiA+Pj4+IFRoYXQgaXMgcHJvYmFibHkgbm90IHRoZSBiZXN0IGRl c2lnbiBjaG9pY2UsIGJ1dCBhdCBsZWFzdCBpdCB3aWxsIGFsbG93DQo+ID4gPj4+PiB0byBmaXgg dGhlIHByb2JsZW0gd2l0aG91dCB0b28gbWFueSBjaGFuZ2VzIGFuZCBpbnRyb2R1Y2luZyBuZXcg QVBJLg0KPiA+ID4+Pj4gVGhhdCBjb3VsZCBiZSBzb3J0IG9mIGEgJ3F1aWNrIGZpeCcuDQo+ID4g Pj4+PiBJbiBhIG1lYW53aGlsZSB3ZSBjYW4gdGhpbmsgYWJvdXQgbmV3L2JldHRlciBhcHByb2Fj aCBmb3IgdGhhdC4NCj4gPiA+Pj4+DQo+ID4gPj4+DQo+ID4gPj4+IC1yYzIgZm9yIDIzLjAzIGlz IGEgZmV3IGRheXMgYXdheS4NCj4gPiA+Pj4NCj4gPiA+Pj4gV2hhdCBkbyB5b3UgdGhpbmsgdG8g aGF2ZSAncXVpY2sgZml4JyBhcyBtb2RpZnlpbmcgaG93IGRyaXZlciB1cGRhdGVzDQo+ID4gPj4+ IGJ1cnN0IG9wcyB0byBwcmV2ZW50IHRoZSByYWNlIGNvbmRpdGlvbiwgZm9yIHRoaXMgcmVsZWFz ZT8NCj4gPg0KPiA+IFRoZSAncXVpY2sgZml4JywgZG8geW91IG1lYW4gb25seSB1cGRhdGUgZnVu Y3Rpb24gcG9pbnRlciAod2l0aG91dCByeHEgc2V0dGluZykgPw0KPiA+IEN1cnJlbnRseSB0aGUg UE1EcyB3aGljaCBhbm5vdW5jZWQgc3VwcG9ydCAicHJvYWN0aXZlIGVycm9yIGhhbmRsaW5nIG1v ZGUiIGFscmVhZHkNCj4gPiBkbyB0aGlzLg0KPiANCj4gUmVhbGx5IHNvcnJ5IGd1eXMsIEkgd2Fz IHRvbyBmYXN0IG9uIHRoZSBrZXlib2FyZCwgYW5kIGRpZG4ndCByZWFkIHByb3Blcmx5IHdoYXQg RmVycnVoIHN1Z2dlc3RlZC4NCj4gUmVhZGluZyBpdCBvbmNlIGFnYWluIC0gbm8gSSBkb24gbm90 IGFncmVlIHdpdGggdGhhdC4NCj4gSXQgd291bGRuJ3QgZml4IGFueXRoaW5nLCBidXQgd2lsbCBq dXN0IGFkZCBleHRyYSBtZXNzIGludG8gdGhlIGNvZGUuDQo+IFNvcnJ5IGFnYWluIGZvciB0aGUg d3JvbmcgcmVwbHkuDQo+IEtvbnN0YW50aW4NCj4gDQoNClRoaW5raW5nIGFib3V0ICdxdWljayBm aXgnIG9uY2UgYWdhaW46IEkgdGhpbmsgdGhlIHBhdGNoZXMgRmVuZ2NoZW5nd2VuIGFscmVhZHkg cHJvdmlkZWQ6DQpodHRwczovL3BhdGNod29yay5kcGRrLm9yZy9wcm9qZWN0L2RwZGsvbGlzdC8/ c2VyaWVzPTI3MjAxDQppcyBhIG11Y2ggYmV0dGVyIGFwcHJvYWNoLg0KSSBiZWxpZXZlIGl0IHNo b3VsZCBzdG9wIHJhY2UgY29uZGl0aW9uIChhbmQgY3Jhc2hpbmcpIHdpdGggcHJvcGVybHkgd3Jp dHRlbiBjYWxsYmFjay4NCklmIHdlIHN0aWxsIGhhdmUgdGltZSBmb3IgaXQsIEknZCBzdWdnZXN0 IG9uZSBleHRyYSBjaGFuZ2UgaW4gUE1EOg0KY2hlY2sgdGhhdCByZWNvdmVyeSBjYWxsYmFjayBp cyBpbnN0YWxsZWQsIGlmIG5vdCBzaW1wbHkgbm90IHN0YXJ0IHJlY292ZXJ5IGF0IGFsbC4gIA0K DQo+ID4NCj4gPiA+Pj4NCj4gPiA+Pj4gQW5kIHBsYW4gYSBkZXNpZ24gdXBkYXRlIGZvciB0aGUg bmV4dCByZWxlYXNlPw0KPiA+ID4+ICsxIG9uIHRoZSBvdmVyYWxsIGFwcHJvYWNoLg0KPiA+ID4N Cj4gPiA+IFllcCwgYWdyZWUuDQo+ID4NCj4gPiBIb3BlIGZvciBiZXR0ZXIgc29sdXRpb24uDQo+ ID4gQW5kIGFsc28sIEkgbm90aWNlIG9ubHkgdGhlIG9wZW52c3dpdGNoIChmcm9tIGFsbCBvcGVu LXNvdXJjZSBzb2Z0d2FyZSB3aGljaCBiYXNlZC1vbiBEUERLKQ0KPiA+IHJlZ2lzdGVycyBSVEVf RVRIX0VWRU5UX0lOVFJfUkVTRVQgY2FsbGJhY2sgLg0KPiA+DQo+ID4gVGhlcmVmb3JlLCBob3Bl IHdlIGJ1aWxkIGEgcmVjb3ZlcnkgZnJhbWV3b3JrIGF0IHRoZSBEUERLIFNESyBsZXZlbCBhbmQg YmUgY29tcGF0aWJsZQ0KPiA+IHdpdGggUlRFX0VUSF9FVkVOVF9JTlRSX1JFU0VUIGFuZCBSVEVf RVRIX0VWRU5UX0VSUl9SRUNPVkVSSU5HIG1lY2hhbmlzbS4NCj4gPg0KPiA+ID4NCj4gPiA+Pg0K PiA+ID4+Pg0KPiA+ID4+Pg0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4+PiBJIHRoaW5rIGRyaXZlciBz aG91bGQgbm90IHJlbHkgb24gYXBwbGljYXRpb24gZm9yIHRoaXMsIHVubGVzcw0KPiA+ID4+Pj4+ Pj4gYXBwbGljYXRpb24gZXhwbGljaXRseSBzYXlzICh0byBkcml2ZXIpIHRoYXQgaXQgaXMgaGFu ZGxpbmcgcmVjb3ZlcnksDQo+ID4gPj4+Pj4+PiByaWdodCBub3cgdGhlcmUgaXMgbm8gd2F5IGZv ciBkcml2ZXIgdG8ga25vdyB0aGlzLg0KPiA+ID4+Pj4+Pg0KPiA+ID4+Pj4+PiBJIHRoaW5rIGl0 IGlzIHZpc2EtdmVyc2E6DQo+ID4gPj4+Pj4+IGFwcGxpY2F0aW9uIHNob3VsZCBub3QgZW5hYmxl IGF1dG8tcmVjb3ZlcnkgaWYgaXQgY2FuJ3QgbWVldA0KPiA+ID4+Pj4+PiBwZXItcmVxdWVzdHN0 aWVzIGZvciBpdCAocHJvdmlkZSBhcHByb3ByaWF0ZSBjYWxsYmFjaykuDQo+ID4gPj4+Pj4+DQo+ ID4gPj4+Pj4NCj4gPiA+Pj4+PiBJIGFncmVlIG9uIGFib3ZlLCB3ZSBhcmUgc2F5aW5nIHNpbWls YXIgdGhpbmcgaW4gZGlmZmVyZW50IHBlcnNwZWN0aXZlLg0KPiA+ID4+Pj4NCj4gPiA+Pj4+IE9r LCB0aGF0J3MgZ29vZCB3ZSBhcmUgb24gdGhlIHNhbWUgcGFnZS4NCj4gPiA+Pj4+DQo+ID4gPj4+ Pg0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4+DQo+ID4gPj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4+PiBBbHNv LCB0aGlzIHBhdGNoIGludHJvZHVjZSBhIGRyaXZlciBpbnRlcm5hbCBmdW5jdGlvbg0KPiA+ID4+ Pj4+Pj4+PiBydGVfZXRoX2ZwX29wc19zZXR1cCB3aGljaCB1c2VkIGFzIGFuIGhlbHAgZnVuY3Rp b24gZm9yIFBNRC4NCj4gPiA+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4gWzFdDQo+ID4gPj4+Pj4+ Pj4+IGh0dHA6Ly9wYXRjaHdvcmsuZHBkay5vcmcvcHJvamVjdC9kcGRrL3BhdGNoLzIwMjMwMjIw MDYwODM5LjEyNjczNDktMi1hc2hvay5rLmthbGFkaUBpbnRlbC5jb20vDQo+ID4gPj4+Pj4+Pj4+ DQo+ID4gPj4+Pj4+Pj4+IEZpeGVzOiBlYjBkNDcxYTg5NDEgKCJldGhkZXY6IGFkZCBwcm9hY3Rp dmUgZXJyb3IgaGFuZGxpbmcgbW9kZSIpDQo+ID4gPj4+Pj4+Pj4+IENjOiBzdGFibGVAZHBkay5v cmcNCj4gPiA+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogQ2hlbmd3ZW4g RmVuZyA8ZmVuZ2NoZW5nd2VuQGh1YXdlaS5jb20+DQo+ID4gPj4+Pj4+Pj4+IC0tLQ0KPiA+ID4+ Pj4+Pj4+PiAgIGRvYy9ndWlkZXMvcHJvZ19ndWlkZS9wb2xsX21vZGVfZHJ2LnJzdCB8IDIwICsr KysrKystLS0tLS0tLS0NCj4gPiA+Pj4+Pj4+Pj4gICBsaWIvZXRoZGV2L2V0aGRldl9kcml2ZXIu YyAgICAgICAgICAgICAgfCAgOCArKysrKysrDQo+ID4gPj4+Pj4+Pj4+ICAgbGliL2V0aGRldi9l dGhkZXZfZHJpdmVyLmggICAgICAgICAgICAgIHwgMTAgKysrKysrKysNCj4gPiA+Pj4+Pj4+Pj4g ICBsaWIvZXRoZGV2L3J0ZV9ldGhkZXYuaCAgICAgICAgICAgICAgICAgfCAzMg0KPiA+ID4+Pj4+ Pj4+PiArKysrKysrKysrKysrKystLS0tLS0tLS0tDQo+ID4gPj4+Pj4+Pj4+ICAgbGliL2V0aGRl di92ZXJzaW9uLm1hcCAgICAgICAgICAgICAgICAgIHwgIDEgKw0KPiA+ID4+Pj4+Pj4+PiAgIDUg ZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pDQo+ID4gPj4+ Pj4+Pj4+DQo+ID4gPj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUv cG9sbF9tb2RlX2Rydi5yc3QNCj4gPiA+Pj4+Pj4+Pj4gYi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUv cG9sbF9tb2RlX2Rydi5yc3QNCj4gPiA+Pj4+Pj4+Pj4gaW5kZXggYzE0NWE5MDY2Yy4uZTM4MGZm MTM1YSAxMDA2NDQNCj4gPiA+Pj4+Pj4+Pj4gLS0tIGEvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3Bv bGxfbW9kZV9kcnYucnN0DQo+ID4gPj4+Pj4+Pj4+ICsrKyBiL2RvYy9ndWlkZXMvcHJvZ19ndWlk ZS9wb2xsX21vZGVfZHJ2LnJzdA0KPiA+ID4+Pj4+Pj4+PiBAQCAtNjM4LDE0ICs2MzgsOSBAQCBk aWZmZXJlbnQgZnJvbSB0aGUgYXBwbGljYXRpb24gaW52b2tlcyByZWNvdmVyeQ0KPiA+ID4+Pj4+ Pj4+PiBpbiBQQVNTSVZFIG1vZGUsDQo+ID4gPj4+Pj4+Pj4+ICAgdGhlIFBNRCBhdXRvbWF0aWNh bGx5IHJlY292ZXJzIGZyb20gZXJyb3IgaW4gUFJPQUNUSVZFIG1vZGUsDQo+ID4gPj4+Pj4+Pj4+ ICAgYW5kIG9ubHkgYSBzbWFsbCBhbW91bnQgb2Ygd29yayBpcyByZXF1aXJlZCBmb3IgdGhlIGFw cGxpY2F0aW9uLg0KPiA+ID4+Pj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4+PiAtRHVyaW5nIGVycm9yIGRl dGVjdGlvbiBhbmQgYXV0b21hdGljIHJlY292ZXJ5LA0KPiA+ID4+Pj4+Pj4+PiAtdGhlIFBNRCBz ZXRzIHRoZSBkYXRhIHBhdGggcG9pbnRlcnMgdG8gZHVtbXkgZnVuY3Rpb25zDQo+ID4gPj4+Pj4+ Pj4+IC0od2hpY2ggd2lsbCBwcmV2ZW50IHRoZSBjcmFzaCksDQo+ID4gPj4+Pj4+Pj4+IC1hbmQg YWxzbyBtYWtlIHN1cmUgdGhlIGNvbnRyb2wgcGF0aCBvcGVyYXRpb25zIGZhaWwgd2l0aCBhIHJl dHVybg0KPiA+ID4+Pj4+Pj4+PiBjb2RlIGBgLUVCVVNZYGAuDQo+ID4gPj4+Pj4+Pj4+IC0NCj4g PiA+Pj4+Pj4+Pj4gLUJlY2F1c2UgdGhlIFBNRCByZWNvdmVycyBhdXRvbWF0aWNhbGx5LA0KPiA+ ID4+Pj4+Pj4+PiAtdGhlIGFwcGxpY2F0aW9uIGNhbiBvbmx5IHNlbnNlIHRoYXQgdGhlIGRhdGEg ZmxvdyBpcyBkaXNjb25uZWN0ZWQNCj4gPiA+Pj4+Pj4+Pj4gZm9yIGEgd2hpbGUNCj4gPiA+Pj4+ Pj4+Pj4gLWFuZCB0aGUgY29udHJvbCBBUEkgcmV0dXJucyBhbiBlcnJvciBpbiB0aGlzIHBlcmlv ZC4NCj4gPiA+Pj4+Pj4+Pj4gK0R1cmluZyBlcnJvciBkZXRlY3Rpb24gYW5kIGF1dG9tYXRpYyBy ZWNvdmVyeSwgdGhlIFBNRCBzZXRzIHRoZQ0KPiA+ID4+Pj4+Pj4+PiBkYXRhIHBhdGgNCj4gPiA+ Pj4+Pj4+Pj4gK3BvaW50ZXJzIHRvIGR1bW15IGZ1bmN0aW9ucyBhbmQgYWxzbyBtYWtlIHN1cmUg dGhlIGNvbnRyb2wgcGF0aA0KPiA+ID4+Pj4+Pj4+PiBvcGVyYXRpb25zDQo+ID4gPj4+Pj4+Pj4+ ICtmYWlsZWQgd2l0aCBhIHJldHVybiBjb2RlIGBgLUVCVVNZYGAuDQo+ID4gPj4+Pj4+Pj4+DQo+ ID4gPj4+Pj4+Pj4+ICAgSW4gb3JkZXIgdG8gc2Vuc2UgdGhlIGVycm9yIGhhcHBlbmluZy9yZWNv dmVyaW5nLA0KPiA+ID4+Pj4+Pj4+PiAgIGFzIHdlbGwgYXMgdG8gcmVzdG9yZSBzb21lIGFkZGl0 aW9uYWwgY29uZmlndXJhdGlvbiwNCj4gPiA+Pj4+Pj4+Pj4gQEAgLTY1Myw5ICs2NDgsOSBAQCB0 aHJlZSBldmVudHMgYXJlIGF2YWlsYWJsZToNCj4gPiA+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4g ICBgYFJURV9FVEhfRVZFTlRfRVJSX1JFQ09WRVJJTkdgYA0KPiA+ID4+Pj4+Pj4+PiAgICAgIE5v dGlmeSB0aGUgYXBwbGljYXRpb24gdGhhdCBhbiBlcnJvciBpcyBkZXRlY3RlZA0KPiA+ID4+Pj4+ Pj4+PiAtICAgYW5kIHRoZSByZWNvdmVyeSBpcyBiZWluZyBzdGFydGVkLg0KPiA+ID4+Pj4+Pj4+ PiArICAgYW5kIHRoZSByZWNvdmVyeSBpcyBhYm91dCB0byBzdGFydC4NCj4gPiA+Pj4+Pj4+Pj4g ICAgICBVcG9uIHJlY2VpdmluZyB0aGUgZXZlbnQsIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgbm90 IGludm9rZQ0KPiA+ID4+Pj4+Pj4+PiAtICAgYW55IGNvbnRyb2wgcGF0aCBmdW5jdGlvbiB1bnRp bCByZWNlaXZpbmcNCj4gPiA+Pj4+Pj4+Pj4gKyAgIGFueSBjb250cm9sIGFuZCBkYXRhIHBhdGgg QVBJIHVudGlsIHJlY2VpdmluZw0KPiA+ID4+Pj4+Pj4+PiAgICAgIGBgUlRFX0VUSF9FVkVOVF9S RUNPVkVSWV9TVUNDRVNTYGAgb3INCj4gPiA+Pj4+Pj4+Pj4gYGBSVEVfRVRIX0VWRU5UX1JFQ09W RVJZX0ZBSUxFRGBgIGV2ZW50Lg0KPiA+ID4+Pj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4+PiAgIC4uIG5v dGU6Og0KPiA+ID4+Pj4+Pj4+PiBAQCAtNjY2LDggKzY2MSw5IEBAIHRocmVlIGV2ZW50cyBhcmUg YXZhaWxhYmxlOg0KPiA+ID4+Pj4+Pj4+Pg0KPiA+ID4+Pj4+Pj4+PiAgIGBgUlRFX0VUSF9FVkVO VF9SRUNPVkVSWV9TVUNDRVNTYGANCj4gPiA+Pj4+Pj4+Pj4gICAgICBOb3RpZnkgdGhlIGFwcGxp Y2F0aW9uIHRoYXQgdGhlIHJlY292ZXJ5IGZyb20gZXJyb3IgaXMgc3VjY2Vzc2Z1bCwNCj4gPiA+ Pj4+Pj4+Pj4gLSAgIHRoZSBQTUQgYWxyZWFkeSByZS1jb25maWd1cmVzIHRoZSBwb3J0LA0KPiA+ ID4+Pj4+Pj4+PiAtICAgYW5kIHRoZSBlZmZlY3QgaXMgdGhlIHNhbWUgYXMgYSByZXN0YXJ0IG9w ZXJhdGlvbi4NCj4gPiA+Pj4+Pj4+Pj4gKyAgIHRoZSBQTUQgYWxyZWFkeSByZS1jb25maWd1cmVz IHRoZSBwb3J0Lg0KPiA+ID4+Pj4+Pj4+PiArICAgVGhlIGFwcGxpY2F0aW9uIHNob3VsZCByZXN0 b3JlIHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uLA0KPiA+ID4+Pj4+Pj4+PiBhbmQgdGhl bg0KPiA+ID4+Pj4+Pj4+PiArICAgZW5hYmxlIGRhdGEgcGF0aCBBUEkgaW52b2NhdGlvbi4NCj4g PiA+Pj4+Pj4+Pj4NCj4gPiA+Pj4+Pj4+Pj4gICBgYFJURV9FVEhfRVZFTlRfUkVDT1ZFUllfRkFJ TEVEYGANCj4gPiA+Pj4+Pj4+Pj4gICAgICBOb3RpZnkgdGhlIGFwcGxpY2F0aW9uIHRoYXQgdGhl IHJlY292ZXJ5IGZyb20gZXJyb3IgZmFpbGVkLA0KPiA+ID4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEv bGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmMgYi9saWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuYw0K PiA+ID4+Pj4+Pj4+PiBpbmRleCAwYmUxZThjYTA0Li5mOTk0NjUzZmU5IDEwMDY0NA0KPiA+ID4+ Pj4+Pj4+PiAtLS0gYS9saWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuYw0KPiA+ID4+Pj4+Pj4+PiAr KysgYi9saWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuYw0KPiA+ID4+Pj4+Pj4+PiBAQCAtNTE1LDYg KzUxNSwxNCBAQCBydGVfZXRoX2RtYV96b25lX2ZyZWUoY29uc3Qgc3RydWN0IHJ0ZV9ldGhfZGV2 DQo+ID4gPj4+Pj4+Pj4+ICpkZXYsIGNvbnN0IGNoYXIgKnJpbmdfbmFtZSwNCj4gPiA+Pj4+Pj4+ Pj4gICAgICAgcmV0dXJuIHJjOw0KPiA+ID4+Pj4+Pj4+PiAgIH0NCj4gPiA+Pj4+Pj4+Pj4NCj4g PiA+Pj4+Pj4+Pj4gK3ZvaWQNCj4gPiA+Pj4+Pj4+Pj4gK3J0ZV9ldGhfZnBfb3BzX3NldHVwKHN0 cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0KPiA+ID4+Pj4+Pj4+PiArew0KPiA+ID4+Pj4+Pj4+PiAr ICAgIGlmIChkZXYgPT0gTlVMTCkNCj4gPiA+Pj4+Pj4+Pj4gKyAgICAgICAgcmV0dXJuOw0KPiA+ ID4+Pj4+Pj4+PiArICAgIGV0aF9kZXZfZnBfb3BzX3NldHVwKHJ0ZV9ldGhfZnBfb3BzICsgZGV2 LT5kYXRhLT5wb3J0X2lkLCBkZXYpOw0KPiA+ID4+Pj4+Pj4+PiArfQ0KPiA+ID4+Pj4+Pj4+PiAr DQo+ID4gPj4+Pj4+Pj4+ICAgY29uc3Qgc3RydWN0IHJ0ZV9tZW16b25lICoNCj4gPiA+Pj4+Pj4+ Pj4gICBydGVfZXRoX2RtYV96b25lX3Jlc2VydmUoY29uc3Qgc3RydWN0IHJ0ZV9ldGhfZGV2ICpk ZXYsIGNvbnN0IGNoYXINCj4gPiA+Pj4+Pj4+Pj4gKnJpbmdfbmFtZSwNCj4gPiA+Pj4+Pj4+Pj4g ICAgICAgICAgICAgICAgdWludDE2X3QgcXVldWVfaWQsIHNpemVfdCBzaXplLCB1bnNpZ25lZCBp bnQgYWxpZ24sDQo+ID4gPj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L2V0aGRldl9k cml2ZXIuaCBiL2xpYi9ldGhkZXYvZXRoZGV2X2RyaXZlci5oDQo+ID4gPj4+Pj4+Pj4+IGluZGV4 IDJjOWQ2MTVmYjUuLjBkOTY0ZDFmNjcgMTAwNjQ0DQo+ID4gPj4+Pj4+Pj4+IC0tLSBhL2xpYi9l dGhkZXYvZXRoZGV2X2RyaXZlci5oDQo+ID4gPj4+Pj4+Pj4+ICsrKyBiL2xpYi9ldGhkZXYvZXRo ZGV2X2RyaXZlci5oDQo+ID4gPj4+Pj4+Pj4+IEBAIC0xNjIxLDYgKzE2MjEsMTYgQEAgaW50DQo+ ID4gPj4+Pj4+Pj4+ICAgcnRlX2V0aF9kbWFfem9uZV9mcmVlKGNvbnN0IHN0cnVjdCBydGVfZXRo X2RldiAqZXRoX2RldiwgY29uc3QNCj4gPiA+Pj4+Pj4+Pj4gY2hhciAqbmFtZSwNCj4gPiA+Pj4+ Pj4+Pj4gICAgICAgICAgICB1aW50MTZfdCBxdWV1ZV9pZCk7DQo+ID4gPj4+Pj4+Pj4+DQo+ID4g Pj4+Pj4+Pj4+ICsvKioNCj4gPiA+Pj4+Pj4+Pj4gKyAqIEBpbnRlcm5hbA0KPiA+ID4+Pj4+Pj4+ PiArICogU2V0dXAgZXRoIGZhc3QtcGF0aCBBUEkgdG8gZXRoZGV2IHZhbHVlcy4NCj4gPiA+Pj4+ Pj4+Pj4gKyAqDQo+ID4gPj4+Pj4+Pj4+ICsgKiBAcGFyYW0gZGV2DQo+ID4gPj4+Pj4+Pj4+ICsg KiAgUG9pbnRlciB0byBzdHJ1Y3QgcnRlX2V0aF9kZXYuDQo+ID4gPj4+Pj4+Pj4+ICsgKi8NCj4g PiA+Pj4+Pj4+Pj4gK19fcnRlX2ludGVybmFsDQo+ID4gPj4+Pj4+Pj4+ICt2b2lkIHJ0ZV9ldGhf ZnBfb3BzX3NldHVwKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsNCj4gPiA+Pj4+Pj4+Pj4gKw0K PiA+ID4+Pj4+Pj4+PiAgIC8qKg0KPiA+ID4+Pj4+Pj4+PiAgICAqIEBpbnRlcm5hbA0KPiA+ID4+ Pj4+Pj4+PiAgICAqIEF0b21pY2FsbHkgc2V0IHRoZSBsaW5rIHN0YXR1cyBmb3IgdGhlIHNwZWNp ZmljIGRldmljZS4NCj4gPiA+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2xpYi9ldGhkZXYvcnRlX2V0 aGRldi5oIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmgNCj4gPiA+Pj4+Pj4+Pj4gaW5kZXggMDQ5 NjQxZDU3Yy4uNDRlZTcyMjljMSAxMDA2NDQNCj4gPiA+Pj4+Pj4+Pj4gLS0tIGEvbGliL2V0aGRl di9ydGVfZXRoZGV2LmgNCj4gPiA+Pj4+Pj4+Pj4gKysrIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2 LmgNCj4gPiA+Pj4+Pj4+Pj4gQEAgLTM5NDQsMjUgKzM5NDQsMjggQEAgZW51bSBydGVfZXRoX2V2 ZW50X3R5cGUgew0KPiA+ID4+Pj4+Pj4+PiAgICAgICAgKi8NCj4gPiA+Pj4+Pj4+Pj4gICAgICAg UlRFX0VUSF9FVkVOVF9SWF9BVkFJTF9USFJFU0gsDQo+ID4gPj4+Pj4+Pj4+ICAgICAgIC8qKiBQ b3J0IHJlY292ZXJpbmcgZnJvbSBhIGhhcmR3YXJlIG9yIGZpcm13YXJlIGVycm9yLg0KPiA+ID4+ Pj4+Pj4+PiAtICAgICAqIElmIFBNRCBzdXBwb3J0cyBwcm9hY3RpdmUgZXJyb3IgcmVjb3Zlcnks DQo+ID4gPj4+Pj4+Pj4+IC0gICAgICogaXQgc2hvdWxkIHRyaWdnZXIgdGhpcyBldmVudCB0byBu b3RpZnkgYXBwbGljYXRpb24NCj4gPiA+Pj4+Pj4+Pj4gLSAgICAgKiB0aGF0IGl0IGRldGVjdGVk IGFuIGVycm9yIGFuZCB0aGUgcmVjb3ZlcnkgaXMgYmVpbmcgc3RhcnRlZC4NCj4gPiA+Pj4+Pj4+ Pj4gLSAgICAgKiBVcG9uIHJlY2VpdmluZyB0aGUgZXZlbnQsIHRoZSBhcHBsaWNhdGlvbiBzaG91 bGQgbm90IGludm9rZQ0KPiA+ID4+Pj4+Pj4+PiBhbnkgY29udHJvbCBwYXRoIEFQSQ0KPiA+ID4+ Pj4+Pj4+PiAtICAgICAqIChzdWNoIGFzIHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZS9ydGVfZXRoX2Rl dl9zdG9wLi4uKSB1bnRpbA0KPiA+ID4+Pj4+Pj4+PiByZWNlaXZpbmcNCj4gPiA+Pj4+Pj4+Pj4g LSAgICAgKiBSVEVfRVRIX0VWRU5UX1JFQ09WRVJZX1NVQ0NFU1Mgb3INCj4gPiA+Pj4+Pj4+Pj4g UlRFX0VUSF9FVkVOVF9SRUNPVkVSWV9GQUlMRUQgZXZlbnQuDQo+ID4gPj4+Pj4+Pj4+IC0gICAg ICogVGhlIFBNRCB3aWxsIHNldCB0aGUgZGF0YSBwYXRoIHBvaW50ZXJzIHRvIGR1bW15IGZ1bmN0 aW9ucywNCj4gPiA+Pj4+Pj4+Pj4gLSAgICAgKiBhbmQgcmUtc2V0IHRoZSBkYXRhIHBhdGggcG9p bnRlcnMgdG8gbm9uLWR1bW15IGZ1bmN0aW9ucw0KPiA+ID4+Pj4+Pj4+PiAtICAgICAqIGJlZm9y ZSByZXBvcnRpbmcgUlRFX0VUSF9FVkVOVF9SRUNPVkVSWV9TVUNDRVNTIGV2ZW50Lg0KPiA+ID4+ Pj4+Pj4+PiAtICAgICAqIEl0IG1lYW5zIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGNhbm5vdCBzZW5k IG9yIHJlY2VpdmUgYW55DQo+ID4gPj4+Pj4+Pj4+IHBhY2tldHMNCj4gPiA+Pj4+Pj4+Pj4gLSAg ICAgKiBkdXJpbmcgdGhpcyBwZXJpb2QuDQo+ID4gPj4+Pj4+Pj4+ICsgICAgICoNCj4gPiA+Pj4+ Pj4+Pj4gKyAgICAgKiBJZiBQTUQgc3VwcG9ydHMgcHJvYWN0aXZlIGVycm9yIHJlY292ZXJ5LCBp dCBzaG91bGQgdHJpZ2dlcg0KPiA+ID4+Pj4+Pj4+PiB0aGlzDQo+ID4gPj4+Pj4+Pj4+ICsgICAg ICogZXZlbnQgdG8gbm90aWZ5IGFwcGxpY2F0aW9uIHRoYXQgaXQgZGV0ZWN0ZWQgYW4gZXJyb3Ig YW5kIHRoZQ0KPiA+ID4+Pj4+Pj4+PiArICAgICAqIHJlY292ZXJ5IGlzIGFib3V0IHRvIHN0YXJ0 Lg0KPiA+ID4+Pj4+Pj4+PiArICAgICAqDQo+ID4gPj4+Pj4+Pj4+ICsgICAgICogVXBvbiByZWNl aXZpbmcgdGhlIGV2ZW50LCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIG5vdCBpbnZva2UgYW55DQo+ ID4gPj4+Pj4+Pj4+ICsgICAgICogY29udHJvbCBhbmQgZGF0YSBwYXRoIEFQSSB1bnRpbCByZWNl aXZpbmcNCj4gPiA+Pj4+Pj4+Pj4gKyAgICAgKiBSVEVfRVRIX0VWRU5UX1JFQ09WRVJZX1NVQ0NF U1Mgb3IgUlRFX0VUSF9FVkVOVF9SRUNPVkVSWV9GQUlMRUQNCj4gPiA+Pj4+Pj4+Pj4gKyAgICAg KiBldmVudC4NCj4gPiA+Pj4+Pj4+Pj4gKyAgICAgKg0KPiA+ID4+Pj4+Pj4+PiArICAgICAqIE9u Y2UgdGhpcyBldmVudCBpcyByZXBvcnRlZCwgdGhlIFBNRCB3aWxsIHNldCB0aGUgZGF0YSBwYXRo DQo+ID4gPj4+Pj4+Pj4+IHBvaW50ZXJzDQo+ID4gPj4+Pj4+Pj4+ICsgICAgICogdG8gZHVtbXkg ZnVuY3Rpb25zLCBhbmQgcmUtc2V0IHRoZSBkYXRhIHBhdGggcG9pbnRlcnMgdG8gdmFsaWQNCj4g PiA+Pj4+Pj4+Pj4gKyAgICAgKiBmdW5jdGlvbnMgYmVmb3JlIHJlcG9ydGluZyBSVEVfRVRIX0VW RU5UX1JFQ09WRVJZX1NVQ0NFU1MNCj4gPiA+Pj4+Pj4+Pj4gZXZlbnQuDQo+ID4gPj4+Pj4+Pj4+ ICsgICAgICoNCj4gPiA+Pj4+Pj4+Pj4gICAgICAgICogQG5vdGUgQmVmb3JlIHRoZSBQTUQgcmVw b3J0cyB0aGUgcmVjb3ZlcnkgcmVzdWx0LA0KPiA+ID4+Pj4+Pj4+PiAgICAgICAgKiB0aGUgUE1E IG1heSByZXBvcnQgdGhlIFJURV9FVEhfRVZFTlRfRVJSX1JFQ09WRVJJTkcgZXZlbnQNCj4gPiA+ Pj4+Pj4+Pj4gYWdhaW4sDQo+ID4gPj4+Pj4+Pj4+ICAgICAgICAqIGJlY2F1c2UgYSBsYXJnZXIg ZXJyb3IgbWF5IG9jY3VyIGR1cmluZyB0aGUgcmVjb3ZlcnkuDQo+ID4gPj4+Pj4+Pj4+ICAgICAg ICAqLw0KPiA+ID4+Pj4+Pj4+PiAgICAgICBSVEVfRVRIX0VWRU5UX0VSUl9SRUNPVkVSSU5HLA0K PiA+ID4+Pj4+Pj4+PiAgICAgICAvKiogUG9ydCByZWNvdmVycyBzdWNjZXNzZnVsbHkgZnJvbSB0 aGUgZXJyb3IuDQo+ID4gPj4+Pj4+Pj4+IC0gICAgICogVGhlIFBNRCBhbHJlYWR5IHJlLWNvbmZp Z3VyZWQgdGhlIHBvcnQsDQo+ID4gPj4+Pj4+Pj4+IC0gICAgICogYW5kIHRoZSBlZmZlY3QgaXMg dGhlIHNhbWUgYXMgYSByZXN0YXJ0IG9wZXJhdGlvbi4NCj4gPiA+Pj4+Pj4+Pj4gKyAgICAgKg0K PiA+ID4+Pj4+Pj4+PiArICAgICAqIFRoZSBQTUQgYWxyZWFkeSByZS1jb25maWd1cmVkIHRoZSBw b3J0Og0KPiA+ID4+Pj4+Pj4+PiAgICAgICAgKiBhKSBUaGUgZm9sbG93aW5nIG9wZXJhdGlvbiB3 aWxsIGJlIHJldGFpbmVkOiAoYWxwaGFiZXRpY2FsbHkpDQo+ID4gPj4+Pj4+Pj4+ICAgICAgICAq ICAgIC0gRENCIGNvbmZpZ3VyYXRpb24NCj4gPiA+Pj4+Pj4+Pj4gICAgICAgICogICAgLSBGRUMg Y29uZmlndXJhdGlvbg0KPiA+ID4+Pj4+Pj4+PiBAQCAtMzk4OSw2ICszOTkyLDkgQEAgZW51bSBy dGVfZXRoX2V2ZW50X3R5cGUgew0KPiA+ID4+Pj4+Pj4+PiAgICAgICAgKiAgICAgIChAc2VlIFJU RV9FVEhfREVWX0NBUEFfRkxPV19TSEFSRURfT0JKRUNUX0tFRVApDQo+ID4gPj4+Pj4+Pj4+ICAg ICAgICAqIGMpIEFueSBvdGhlciBjb25maWd1cmF0aW9uIHdpbGwgbm90IGJlIHN0b3JlZA0KPiA+ ID4+Pj4+Pj4+PiAgICAgICAgKiAgICBhbmQgd2lsbCBuZWVkIHRvIGJlIHJlLWNvbmZpZ3VyZWQu DQo+ID4gPj4+Pj4+Pj4+ICsgICAgICoNCj4gPiA+Pj4+Pj4+Pj4gKyAgICAgKiBUaGUgYXBwbGlj YXRpb24gc2hvdWxkIHJlc3RvcmUgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24NCj4gPiA+ Pj4+Pj4+Pj4gKyAgICAgKiAoc2VlIGFib3ZlIGNhc2UgYi9jKSwgYW5kIHRoZW4gZW5hYmxlIGRh dGEgcGF0aCBBUEkgaW52b2NhdGlvbi4NCj4gPiA+Pj4+Pj4+Pj4gICAgICAgICovDQo+ID4gPj4+ Pj4+Pj4+ICAgICAgIFJURV9FVEhfRVZFTlRfUkVDT1ZFUllfU1VDQ0VTUywNCj4gPiA+Pj4+Pj4+ Pj4gICAgICAgLyoqIFBvcnQgcmVjb3ZlcnkgZmFpbGVkLg0KPiA+ID4+Pj4+Pj4+PiBkaWZmIC0t Z2l0IGEvbGliL2V0aGRldi92ZXJzaW9uLm1hcCBiL2xpYi9ldGhkZXYvdmVyc2lvbi5tYXANCj4g PiA+Pj4+Pj4+Pj4gaW5kZXggMzU3ZDFhODhjMC4uYzI3M2UwYmRhZSAxMDA2NDQNCj4gPiA+Pj4+ Pj4+Pj4gLS0tIGEvbGliL2V0aGRldi92ZXJzaW9uLm1hcA0KPiA+ID4+Pj4+Pj4+PiArKysgYi9s aWIvZXRoZGV2L3ZlcnNpb24ubWFwDQo+ID4gPj4+Pj4+Pj4+IEBAIC0zMjAsNiArMzIwLDcgQEAg SU5URVJOQUwgew0KPiA+ID4+Pj4+Pj4+PiAgICAgICBydGVfZXRoX2RldmljZXM7DQo+ID4gPj4+ Pj4+Pj4+ICAgICAgIHJ0ZV9ldGhfZG1hX3pvbmVfZnJlZTsNCj4gPiA+Pj4+Pj4+Pj4gICAgICAg cnRlX2V0aF9kbWFfem9uZV9yZXNlcnZlOw0KPiA+ID4+Pj4+Pj4+PiArICAgIHJ0ZV9ldGhfZnBf b3BzX3NldHVwOw0KPiA+ID4+Pj4+Pj4+PiAgICAgICBydGVfZXRoX2hhaXJwaW5fcXVldWVfcGVl cl9iaW5kOw0KPiA+ID4+Pj4+Pj4+PiAgICAgICBydGVfZXRoX2hhaXJwaW5fcXVldWVfcGVlcl91 bmJpbmQ7DQo+ID4gPj4+Pj4+Pj4+ICAgICAgIHJ0ZV9ldGhfaGFpcnBpbl9xdWV1ZV9wZWVyX3Vw ZGF0ZTsNCj4gPiA+Pj4+Pj4+Pj4gLS0NCj4gPiA+Pj4+Pj4+PiAgIEFja2VkLWJ5OiBLb25zdGFu dGluIEFuYW55ZXYgPGtvbnN0YW50aW4uYW5hbnlldkBodWF3ZWkuY29tPg0KPiA+ID4+Pj4+Pj4+ DQo+ID4gPj4+Pj4+Pj4+IDIuMTcuMQ0KPiA+ID4+Pj4+Pj4+DQo+ID4gPj4+Pj4+Pg0KPiA+ID4+ Pj4+Pg0KPiA+ID4+Pj4NCj4gPiA+Pj4NCg==