From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70085.outbound.protection.outlook.com [40.107.7.85]) by dpdk.org (Postfix) with ESMTP id A4CE31DA4 for ; Fri, 8 Mar 2019 16:05:16 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WX34ccbCVx3ByfjEgtQLhQragNaWPOTtIO10EwPP4E4=; b=sPssXPDU6l1tbFuDfDHhSv+uiW3AXamNqNIYmX/eNJ7Zlcc1b3J87UTAjW3vbXkuw0n0V5lS//sd7iMdBTz1DPvcmPeXCGtNWNvjLpuZ/OGfQEvo07tJEwJ2rm9mdTpkUMY3aAwV8DiaTeNm7xN7682BNv0Vu0zeOO9fLS/P0yQ= Received: from VI1PR08MB3167.eurprd08.prod.outlook.com (52.133.15.142) by VI1PR08MB4175.eurprd08.prod.outlook.com (20.178.204.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1686.18; Fri, 8 Mar 2019 15:05:14 +0000 Received: from VI1PR08MB3167.eurprd08.prod.outlook.com ([fe80::707a:b455:dcb2:9d40]) by VI1PR08MB3167.eurprd08.prod.outlook.com ([fe80::707a:b455:dcb2:9d40%2]) with mapi id 15.20.1686.019; Fri, 8 Mar 2019 15:05:14 +0000 From: "Gavin Hu (Arm Technology China)" To: "Ananyev, Konstantin" , Ilya Maximets , "dev@dpdk.org" CC: nd , "thomas@monjalon.net" , "jerinj@marvell.com" , "hemant.agrawal@nxp.com" , "Nipun.gupta@nxp.com" , Honnappa Nagarahalli , "olivier.matz@6wind.com" , "Richardson, Bruce" , "chaozhu@linux.vnet.ibm.com" Thread-Topic: [PATCH v2] ring: enforce reading the tails before ring operations Thread-Index: AQHU1LF27vtsQ2Xy+0iZsAZL3+5RW6X/3LWAgAAItaCAAAb/gIAADMAQgAEUeFCAAJmlgIAALgYQ Date: Fri, 8 Mar 2019 15:05:14 +0000 Message-ID: References: <1551841661-42892-1-git-send-email-gavin.hu@arm.com> <1551941137-33250-1-git-send-email-gavin.hu@arm.com> <3cdf6747-21f3-d77e-0935-d73b5cc617f6@samsung.com> <2601191342CEEE43887BDE71AB9772580136556E78@irsmsx105.ger.corp.intel.com> In-Reply-To: <2601191342CEEE43887BDE71AB9772580136556E78@irsmsx105.ger.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Gavin.Hu@arm.com; x-originating-ip: [113.29.88.7] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 574a84c5-c467-47f2-20a6-08d6a3d777ef x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR08MB4175; x-ms-traffictypediagnostic: VI1PR08MB4175: x-ms-exchange-purlcount: 2 x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr nodisclaimer: True x-microsoft-exchange-diagnostics: 1; VI1PR08MB4175; 20:jzQ8w/LFqdIuRuKWrq8ZnLBCVGpmwuQD/88PGaBtL7bUxi94ujhL8N2QRTEGn+1hhD0NVRC/qmJzDsNNdpii5x6gil3pb4vvXWzbaz/48srpjqxDbg/Wi+fWLEfmXMitCJT42xESfy4XpxRD+FSdHrMB27OGSOwZtNKoUtdqJxs= x-microsoft-antispam-prvs: x-forefront-prvs: 0970508454 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(136003)(39860400002)(376002)(396003)(52314003)(189003)(199004)(13464003)(68736007)(478600001)(26005)(6506007)(86362001)(81156014)(81166006)(11346002)(476003)(8676002)(99286004)(71190400001)(71200400001)(486006)(52536013)(446003)(33656002)(8936002)(6116002)(3846002)(7696005)(105586002)(106356001)(76176011)(97736004)(6246003)(7416002)(110136005)(186003)(54906003)(4326008)(53936002)(6436002)(55016002)(6306002)(9686003)(93886005)(5660300002)(25786009)(229853002)(66066001)(7736002)(966005)(14444005)(53546011)(305945005)(55236004)(102836004)(316002)(14454004)(256004)(2501003)(2906002)(74316002)(72206003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR08MB4175; H:VI1PR08MB3167.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: Y7uBKLgr2PkOynBINrIESwiWTSSV+ikLwyNJzErJNJ05lB+ux1eRIKsCC6pa4tzYJtpkfYCgz/ZD7ffvCJYrDIyAqiAvYJABCImWiu2d+nUYgCa/KoyDd6RscUJ/j8wiPR0IVI6lAPcMlSbjyQ0a3m/dYx8sbAp9C10a9Zt7vHGqrS1r+OJHr21E1BkPwJXdLlEGyQ6UztqKDIQOEnyCuy8y7fTJr5Lfn2PZZl5IdiC7cPXM1m+A0wDn5a8J0yy65A5G5g4B3X7lwm5csDPJPsEk+BbQDeHEzkvKkmDojwMpbsukwms/cgQ65/osvWS1P5X5EBDGFf5UcdB+aaLlwWN9KQN4HKhGtLvlt030sILqmWN7qjmKMzDUzYvqXiFk80/x/5of2LHCiE5dEXO2fPqm8nec8ZWm6NhQvcFXSuQ= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 574a84c5-c467-47f2-20a6-08d6a3d777ef X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Mar 2019 15:05:14.3349 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB4175 Subject: Re: [dpdk-dev] [PATCH v2] ring: enforce reading the tails before ring operations X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Mar 2019 15:05:16 -0000 SGkgS29uc3RhbnRpbiwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBB bmFueWV2LCBLb25zdGFudGluIDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPg0KPiBTZW50 OiBGcmlkYXksIE1hcmNoIDgsIDIwMTkgODoxMyBQTQ0KPiBUbzogR2F2aW4gSHUgKEFybSBUZWNo bm9sb2d5IENoaW5hKSA8R2F2aW4uSHVAYXJtLmNvbT47IElseWENCj4gTWF4aW1ldHMgPGkubWF4 aW1ldHNAc2Ftc3VuZy5jb20+OyBkZXZAZHBkay5vcmcNCj4gQ2M6IG5kIDxuZEBhcm0uY29tPjsg dGhvbWFzQG1vbmphbG9uLm5ldDsgamVyaW5qQG1hcnZlbGwuY29tOw0KPiBoZW1hbnQuYWdyYXdh bEBueHAuY29tOyBOaXB1bi5ndXB0YUBueHAuY29tOyBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KPiA8 SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47IG9saXZpZXIubWF0ekA2d2luZC5jb207IFJp Y2hhcmRzb24sDQo+IEJydWNlIDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT47IGNoYW96aHVA bGludXgudm5ldC5pYm0uY29tDQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjJdIHJpbmc6IGVuZm9y Y2UgcmVhZGluZyB0aGUgdGFpbHMgYmVmb3JlIHJpbmcNCj4gb3BlcmF0aW9ucw0KPiANCj4gDQo+ IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogR2F2aW4gSHUgKEFy bSBUZWNobm9sb2d5IENoaW5hKSBbbWFpbHRvOkdhdmluLkh1QGFybS5jb21dDQo+ID4gU2VudDog RnJpZGF5LCBNYXJjaCA4LCAyMDE5IDQ6MjMgQU0NCj4gPiBUbzogSWx5YSBNYXhpbWV0cyA8aS5t YXhpbWV0c0BzYW1zdW5nLmNvbT47IGRldkBkcGRrLm9yZw0KPiA+IENjOiBuZCA8bmRAYXJtLmNv bT47IHRob21hc0Btb25qYWxvbi5uZXQ7IGplcmluakBtYXJ2ZWxsLmNvbTsNCj4gaGVtYW50LmFn cmF3YWxAbnhwLmNvbTsgTmlwdW4uZ3VwdGFAbnhwLmNvbTsgSG9ubmFwcGENCj4gPiBOYWdhcmFo YWxsaSA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47DQo+IG9saXZpZXIubWF0ekA2d2lu ZC5jb207IFJpY2hhcmRzb24sIEJydWNlDQo+IDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT47 IEFuYW55ZXYsDQo+ID4gS29uc3RhbnRpbiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT47 DQo+IGNoYW96aHVAbGludXgudm5ldC5pYm0uY29tDQo+ID4gU3ViamVjdDogUkU6IFtQQVRDSCB2 Ml0gcmluZzogZW5mb3JjZSByZWFkaW5nIHRoZSB0YWlscyBiZWZvcmUgcmluZw0KPiBvcGVyYXRp b25zDQo+ID4NCj4gPg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ ID4gRnJvbTogR2F2aW4gSHUgKEFybSBUZWNobm9sb2d5IENoaW5hKQ0KPiA+ID4gU2VudDogVGh1 cnNkYXksIE1hcmNoIDcsIDIwMTkgNjo0NSBQTQ0KPiA+ID4gVG86IElseWEgTWF4aW1ldHMgPGku bWF4aW1ldHNAc2Ftc3VuZy5jb20+OyBkZXZAZHBkay5vcmcNCj4gPiA+IENjOiBuZCA8bmRAYXJt LmNvbT47IHRob21hc0Btb25qYWxvbi5uZXQ7IGplcmluakBtYXJ2ZWxsLmNvbTsNCj4gPiA+IGhl bWFudC5hZ3Jhd2FsQG54cC5jb207IE5pcHVuLmd1cHRhQG54cC5jb207IEhvbm5hcHBhDQo+IE5h Z2FyYWhhbGxpDQo+ID4gPiA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47IG9saXZpZXIu bWF0ekA2d2luZC5jb207DQo+ID4gPiBicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbTsga29uc3Rh bnRpbi5hbmFueWV2QGludGVsLmNvbTsNCj4gPiA+IGNoYW96aHVAbGludXgudm5ldC5pYm0uY29t DQo+ID4gPiBTdWJqZWN0OiBSRTogW1BBVENIIHYyXSByaW5nOiBlbmZvcmNlIHJlYWRpbmcgdGhl IHRhaWxzIGJlZm9yZSByaW5nDQo+IG9wZXJhdGlvbnMNCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4g PiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogSWx5YSBNYXhp bWV0cyA8aS5tYXhpbWV0c0BzYW1zdW5nLmNvbT4NCj4gPiA+ID4gU2VudDogVGh1cnNkYXksIE1h cmNoIDcsIDIwMTkgNTo0OCBQTQ0KPiA+ID4gPiBUbzogR2F2aW4gSHUgKEFybSBUZWNobm9sb2d5 IENoaW5hKSA8R2F2aW4uSHVAYXJtLmNvbT47DQo+ID4gPiBkZXZAZHBkay5vcmcNCj4gPiA+ID4g Q2M6IG5kIDxuZEBhcm0uY29tPjsgdGhvbWFzQG1vbmphbG9uLm5ldDsgamVyaW5qQG1hcnZlbGwu Y29tOw0KPiA+ID4gPiBoZW1hbnQuYWdyYXdhbEBueHAuY29tOyBOaXB1bi5ndXB0YUBueHAuY29t OyBIb25uYXBwYQ0KPiBOYWdhcmFoYWxsaQ0KPiA+ID4gPiA8SG9ubmFwcGEuTmFnYXJhaGFsbGlA YXJtLmNvbT47IG9saXZpZXIubWF0ekA2d2luZC5jb20NCj4gPiA+ID4gU3ViamVjdDogUmU6IFtQ QVRDSCB2Ml0gcmluZzogZW5mb3JjZSByZWFkaW5nIHRoZSB0YWlscyBiZWZvcmUgcmluZw0KPiA+ ID4gPiBvcGVyYXRpb25zDQo+ID4gPiA+DQo+ID4gPiA+IE9uIDA3LjAzLjIwMTkgMTI6MjcsIEdh dmluIEh1IChBcm0gVGVjaG5vbG9neSBDaGluYSkgd3JvdGU6DQo+ID4gPiA+ID4NCj4gPiA+ID4g Pg0KPiA+ID4gPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+PiBGcm9t OiBJbHlhIE1heGltZXRzIDxpLm1heGltZXRzQHNhbXN1bmcuY29tPg0KPiA+ID4gPiA+PiBTZW50 OiBUaHVyc2RheSwgTWFyY2ggNywgMjAxOSA0OjUyIFBNDQo+ID4gPiA+ID4+IFRvOiBHYXZpbiBI dSAoQXJtIFRlY2hub2xvZ3kgQ2hpbmEpIDxHYXZpbi5IdUBhcm0uY29tPjsNCj4gPiA+ID4gPj4g ZGV2QGRwZGsub3JnDQo+ID4gPiA+ID4+IENjOiBuZCA8bmRAYXJtLmNvbT47IHRob21hc0Btb25q YWxvbi5uZXQ7DQo+IGplcmluakBtYXJ2ZWxsLmNvbTsNCj4gPiA+ID4gPj4gaGVtYW50LmFncmF3 YWxAbnhwLmNvbTsgTmlwdW4uZ3VwdGFAbnhwLmNvbTsgSG9ubmFwcGENCj4gPiA+IE5hZ2FyYWhh bGxpDQo+ID4gPiA+ID4+IDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29tPjsgb2xpdmllci5t YXR6QDZ3aW5kLmNvbQ0KPiA+ID4gPiA+PiBTdWJqZWN0OiBSZTogW1BBVENIIHYyXSByaW5nOiBl bmZvcmNlIHJlYWRpbmcgdGhlIHRhaWxzIGJlZm9yZSByaW5nDQo+ID4gPiA+ID4+IG9wZXJhdGlv bnMNCj4gPiA+ID4gPj4NCj4gPiA+ID4gPj4gT24gMDcuMDMuMjAxOSA5OjQ1LCBnYXZpbiBodSB3 cm90ZToNCj4gPiA+ID4gPj4+IEluIHdlYWsgbWVtb3J5IG1vZGVscywgbGlrZSBhcm02NCwgcmVh ZGluZyB0aGUge3Byb2QsY29uc30udGFpbA0KPiBtYXkNCj4gPiA+IGdldA0KPiA+ID4gPiA+Pj4g cmVvcmRlcmVkIGFmdGVyIHJlYWRpbmcgb3Igd3JpdGluZyB0aGUgcmluZyBzbG90cywgd2hpY2gg Y29ycnVwdHMNCj4gdGhlDQo+ID4gPiByaW5nDQo+ID4gPiA+ID4+PiBhbmQgc3RhbGUgZGF0YSBp cyBvYnNlcnZlZC4NCj4gPiA+ID4gPj4+DQo+ID4gPiA+ID4+PiBUaGlzIGlzc3VlIHdhcyByZXBv cnRlZCBieSBOWFAgb24gOC1BNzIgRFBBQTIgYm9hcmQuIFRoZQ0KPiBwcm9ibGVtDQo+ID4gPiBp cw0KPiA+ID4gPiA+PiBtb3N0DQo+ID4gPiA+ID4+PiBsaWtlbHkgY2F1c2VkIGJ5IG1pc3Npbmcg dGhlIGFjcXVpcmUgc2VtYW50aWNzIHdoZW4gcmVhZGluZw0KPiBjb25zLnRhaWwNCj4gPiA+IChp bg0KPiA+ID4gPiA+Pj4gU1AgZW5xdWV1ZSkgb3IgcHJvZC50YWlsIChpbiBTQyBkZXF1ZXVlKSB3 aGljaCBtYWtlcyBpdCBwb3NzaWJsZQ0KPiB0bw0KPiA+ID4gPiByZWFkDQo+ID4gPiA+ID4+IGEN Cj4gPiA+ID4gPj4+IHN0YWxlIHZhbHVlIGZyb20gdGhlIHJpbmcgc2xvdHMuDQo+ID4gPiA+ID4+ Pg0KPiA+ID4gPiA+Pj4gRm9yIE1QIChhbmQgTUMpIGNhc2UsIHJ0ZV9hdG9taWMzMl9jbXBzZXQo KSBhbHJlYWR5IHByb3ZpZGVzDQo+IHRoZQ0KPiA+ID4gPiA+PiByZXF1aXJlZA0KPiA+ID4gPiA+ Pj4gb3JkZXJpbmcuIFRoaXMgcGF0Y2ggaXMgdG8gcHJldmVudCByZWFkaW5nIGFuZCB3cml0aW5n IHRoZSByaW5nDQo+IHNsb3RzIGdldA0KPiA+ID4gPiA+Pj4gcmVvcmRlcmVkIGJlZm9yZSByZWFk aW5nIHtwcm9kLGNvbnN9LnRhaWwgZm9yIFNQIChhbmQgU0MpIGNhc2UuDQo+ID4gPiA+ID4+DQo+ ID4gPiA+ID4+IFJlYWQgYmFycmllciBydGVfc21wX3JtYigpIGlzIE9LIHRvIHByZXZlbnQgcmVh ZGluZyB0aGUgcmluZyBnZXQNCj4gPiA+ID4gPj4gcmVvcmRlcmVkDQo+ID4gPiA+ID4+IGJlZm9y ZSByZWFkaW5nIHRoZSB0YWlsLiBIb3dldmVyLCB0byBwcmV2ZW50ICp3cml0aW5nKiB0aGUgcmlu ZyBnZXQNCj4gPiA+ID4gPj4gcmVvcmRlcmVkDQo+ID4gPiA+ID4+ICpiZWZvcmUgcmVhZGluZyog dGhlIHRhaWwgeW91IG5lZWQgYSBmdWxsIG1lbW9yeSBiYXJyaWVyLCBpLmUuDQo+ID4gPiA+ID4+ IHJ0ZV9zbXBfbWIoKS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IElTSExEKHJ0ZV9zbXBfcm1iIGlz IERNQihpc2hsZCkgb3JkZXJzIExEL0xEIGFuZCBMRC9TVCwgd2hpbGUNCj4gPiA+IFdNQihTVA0K PiA+ID4gPiBPcHRpb24pIG9yZGVycyBTVC9TVC4NCj4gPiA+ID4gPiBGb3IgbW9yZSBkZXRhaWxz LCBwbGVhc2UgcmVmZXIgdG86IFRhYmxlIEIyLTEgRW5jb2Rpbmcgb2YgdGhlIERNQg0KPiBhbmQN Cj4gPiA+IERTQg0KPiA+ID4gPiA8b3B0aW9uPiBwYXJhbWV0ZXIgIGluDQo+ID4gPiA+ID4gaHR0 cHM6Ly9kZXZlbG9wZXIuYXJtLmNvbS9kb2NzL2RkaTA0ODcvbGF0ZXN0L2FybS1hcmNoaXRlY3R1 cmUtDQo+ID4gPiA+IHJlZmVyZW5jZS1tYW51YWwtYXJtdjgtZm9yLWFybXY4LWEtYXJjaGl0ZWN0 dXJlLXByb2ZpbGUNCj4gPiA+ID4NCj4gPiA+ID4gSSBzZWUuIEJ1dCB5b3UgaGF2ZSB0byBjaGFu Z2UgdGhlIHJ0ZV9zbXBfcm1iKCkgZnVuY3Rpb24gZGVmaW5pdGlvbg0KPiBpbg0KPiA+ID4gPiBs aWIvbGlicnRlX2VhbC9jb21tb24vaW5jbHVkZS9nZW5lcmljL3J0ZV9hdG9taWMuaCBhbmQgYXNz dXJlIHRoYXQNCj4gYWxsDQo+ID4gPiA+IG90aGVyIGFyY2hpdGVjdHVyZXMgZm9sbG93cyBzYW1l IHJ1bGVzLg0KPiA+ID4gPiBPdGhlcndpc2UsIHRoaXMgY2hhbmdlIGlzIGxvZ2ljYWxseSB3cm9u ZywgYmVjYXVzZSByZWFkIGJhcnJpZXIgaW4NCj4gY3VycmVudA0KPiA+ID4gPiBkZWZpbml0aW9u IGNvdWxkIG5vdCBiZSB1c2VkIHRvIG9yZGVyIExvYWQgd2l0aCBTdG9yZS4NCj4gPiA+ID4NCj4g PiA+DQo+ID4gPiBHb29kIHBvaW50cywgbGV0IG1lIHJlLXRoaW5rIGhvdyB0byBoYW5kbGUgZm9y IG90aGVyIGFyY2hpdGVjdHVyZXMuDQo+ID4gPiBGdWxsIE1CIGlzIHJlcXVpcmVkIGZvciBvdGhl ciBhcmNoaXRlY3R1cmVzKHg4Nj8gUHBjPyksIGJ1dCBmb3IgYXJtLA0KPiByZWFkDQo+ID4gPiBi YXJyaWVyKGxvYWQvc3RvcmUgYW5kIGxvYWQvbG9hZCkgaXMgZW5vdWdoLg0KPiA+DQo+ID4gSGkg SWx5YSwNCj4gPg0KPiA+IEkgd291bGQgZXhwYW5kIHRoZSBybWIgZGVmaW5pdGlvbiB0byBjb3Zl ciBsb2FkL3N0b3JlLCBpbiBhZGRpdGlvbiB0bw0KPiBsb2FkL2xvYWQuDQo+ID4gRm9yIFg4Niwg YXMgYSBzdHJvbmcgbWVtb3J5IG9yZGVyIG1vZGVsLCBybWIgaXMgYWN0dWFsbHkgZXF1aXZhbGVu dCB0bw0KPiBtYiwNCj4gDQo+IFRoYXQncyBub3QgZXhhY3RseSB0aGUgY2FzZSwgb24geDg2IHdl IGhhdmU6DQo+IHNtcF9ybWIgPT0gY29tcGlsZXJfYmFycmllcg0KPiBzbXBfbWIgaXMgYSBwcm9w ZXIgbWVtb3J5IGJhcnJpZXIuDQo+IA0KPiBLb25zdGFudGluDQoNClNvcnJ5IEkgZGlkIG5vdCBt YWtlIGl0IGNsZWFyLg0KQW55d2F5LCBvbiB4ODYsIHNtcF9ybWIsIGFzIGEgY29tcGlsZXIgYmFy cmllciwgYXBwbGllcyB0byBsb2FkL3N0b3JlLCBub3Qgb25seSBsb2FkL2xvYWQuDQpUaGlzIGlz IHRoZSBjYXNlIGFsc28gZm9yIGFybSwgYXJtNjQsIHBwYzMyLCBwcGM2NC4NCkkgd2lsbCBzdWJt aXQgYSBwYXRjaCB0byBleHBhbmQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBBUEkuIA0KDQo+IA0K PiA+IGFzIGltcGxlbWVudGVkIGFzIGEgY29tcGlsZXIgYmFycmllcjogcnRlX2NvbXBpbGVyX2Jh cnJpZXIsDQo+ID4gYXJtMzIgaXMgYWxzbyB0aGlzIGNhc2UuDQo+ID4gRm9yIFBQQywgYm90aCAz MiBhbmQgNjQtYml0LCBybWI9d21iPW1iLCBsd3N5bmMvc3luYyBvcmRlcnMNCj4gbG9hZC9zdG9y ZSwgbG9hZC9sb2FkLCBzdG9yZS9sb2FkLCBzdG9yZS9zdG9yZSwgbG9va2luZyBhdCB0aGUgdGFi bGUgb24gdGhpcw0KPiA+IHBhZ2U6DQo+ID4gaHR0cHM6Ly93d3cuaWJtLmNvbS9kZXZlbG9wZXJ3 b3Jrcy9zeXN0ZW1zL2FydGljbGVzL3Bvd2VycGMuaHRtbA0KPiA+DQo+ID4gSW4gc3VtbWFyeSwg d2UgYXJlIHNhZmUgdG8gZXhwYW5kIHRoaXMgZGVmaW5pdGlvbiBmb3IgYWxsIHRoZQ0KPiBhcmNo aXRlY3R1cmVzIERQREsgc3VwcG9ydD8NCj4gPiBBbnkgY29tbWVudHMgYXJlIHdlbGNvbWUhDQo+ ID4NCj4gPiBCUi4gR2F2aW4NCj4gPg0K