From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 247F7A0352; Tue, 5 Nov 2019 09:35:25 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3DA4D37AF; Tue, 5 Nov 2019 09:35:24 +0100 (CET) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20061.outbound.protection.outlook.com [40.107.2.61]) by dpdk.org (Postfix) with ESMTP id CFC962C12 for ; Tue, 5 Nov 2019 09:35:22 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UZ/9Fb4o/INptZEV9jXJ5jvBFH8hWQLXN76PUiMFPMgqig5+ukX44VzpIUVDZYf9Ky4hOJD8Zb96QT8tRF6J3EjnAPCBYYUOsadnK7QC4arDrskTWTW1dRHcTypPtAACFG4OX8ympgb21/aB5D55p0lvDYicgNPj6V//CG9indV7YlWPDDt1zzPwQ7VXtJmj+6F5I4dbYdJSZBxyXJ5srcBjmujFElQVpr3ziBcIurAehzamD7Ucev2waVphbxpkGWFuVfKbvOM7281CIurmEku5LBbKtulEid2/6x6wVNvXrfLSKcGKHz3gXIYItX0DAJ5ZVtzSAUQiwWu0q2G/MQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FrThekCWGPlqony//d5dfmQztPIjpeCjF3FaxOZhQpc=; b=cJ9k/eqOYbgkpr3zdyXR7++eLQzdSmSQ59nWawBgD9VLs4xpYpaCDtJIahkNPppj7Yn4LQ107IeJkzNlrAludxtNmBPuHsmLhyUV83dO0FBIZN50We9RBZOHgEWphV2mMTvtZza/rcXoV8I7p6YyOT7Yg9zyMA0cYxkveua0bDcMEjNqAkhzqMFS7QP2jHqoPd7PideUpa7FCWcz0Q8NmDKtik8Mz3XPiLmRpF1GRz1s9KW5G1vUi/KFg0PETq8bd/aIYMheg3ez4h++JlsFNi41gUMUiV2uyU5FHTZlCVc5qXZCPoi9O6nUHaMQyu5rVD4jhrJpjojxErr1N7wRIQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FrThekCWGPlqony//d5dfmQztPIjpeCjF3FaxOZhQpc=; b=oRK66nzuJUYpM7FClXr1Xvd8c7g4mHict6yf0wtphcrBYnBLKi901bVoGmGWGoZCqf1hD6EY1Yc8ivZgvkPsvFlVK3aLAQWidKzbAuKhvShu8kSZ5m7Bv8FEzm0dfJmEMT/wfpHA1u7uQqeT30aPbNVXOCReypktAklLflGpi6s= Received: from AM4PR05MB3425.eurprd05.prod.outlook.com (10.171.190.15) by AM4PR05MB3442.eurprd05.prod.outlook.com (10.170.126.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Tue, 5 Nov 2019 08:35:21 +0000 Received: from AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::70a7:a312:cbc6:d178]) by AM4PR05MB3425.eurprd05.prod.outlook.com ([fe80::70a7:a312:cbc6:d178%7]) with mapi id 15.20.2387.028; Tue, 5 Nov 2019 08:35:21 +0000 From: Ori Kam To: Andrew Rybchenko , Thomas Monjalon CC: "dev@dpdk.org" , "pbhagavatula@marvell.com" , "ferruh.yigit@intel.com" , "jerinj@marvell.com" , John McNamara , Marko Kovacevic , Adrien Mazarguil , "david.marchand@redhat.com" , "ktraynor@redhat.com" Thread-Topic: [dpdk-dev] [PATCH 1/2] ethdev: add flow action type update as an offload Thread-Index: AQHVjYZl8q5FcpyIsESPczhozmhwdadwBcuggASAAICAAFQEgIABW/IAgAMH4uCAAB6BAIAB/8LwgADTmYCAABQIcA== Date: Tue, 5 Nov 2019 08:35:20 +0000 Message-ID: References: <20191025152142.12887-1-pbhagavatula@marvell.com> <3078181.9TjvbByyqQ@xps> In-Reply-To: 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=orika@mellanox.com; x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 46cfca04-099c-4b70-f98a-08d761cb185a x-ms-traffictypediagnostic: AM4PR05MB3442: x-ms-exchange-purlcount: 1 x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 0212BDE3BE x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(136003)(346002)(396003)(366004)(376002)(51914003)(189003)(13464003)(51444003)(199004)(55016002)(30864003)(26005)(2906002)(6246003)(478600001)(45080400002)(66066001)(9686003)(14454004)(11346002)(476003)(966005)(54906003)(316002)(14444005)(256004)(15650500001)(6116002)(7736002)(76176011)(52536014)(5660300002)(74316002)(6506007)(305945005)(86362001)(4326008)(71190400001)(81156014)(486006)(446003)(186003)(110136005)(7416002)(8676002)(8936002)(53546011)(99286004)(66476007)(66946007)(66556008)(76116006)(66446008)(25786009)(64756008)(71200400001)(3846002)(6436002)(33656002)(7696005)(229853002)(81166006)(102836004)(6306002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB3442; H:AM4PR05MB3425.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vla46Esf/OIQ7ZWKCJPU7GxEKJrJ3A6OzBtPNbi3DZm8prJLA1zsV0clE48CPNnd2hsootm2NnfGstFedZ7HbX7gnn9E3M/zoKdw9+R9NccgwFYQOyMyCFYH/rZgP0CaWJkWL6xH+0PoPWO5WmCSgOQGx9CIGmcChIEyba1fbXCtYg1mI/joOxNZyeK8O6PX4VoRoY9GMeRzmWdJWlWSA8Rq25qhOUVu4v7/ROrySDdq7BFCIM7mHghue/BtcCqDLHdmlkvAsHMEz9HtZ3yz6O8VZa4vQRTOJLEfihJEeidU93yxBTVVvNq06QPEH2ezA8ZGhLxEXjRPAbq8Qjtv4dg1UIqQyoBJCVAwqGLeUpahHSIM+Sof7r6g8nhGRtZ8G0iJb4jG0b2KdLEfUvnMAna/dPNHhVsQQ+l0kab8+Mo5HNbhfqFJuPZFJlAMFSWaP4HoVtbnVG75VappPKB2ZuOAOUYJFGx8vs8bx/cEaNQ= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 46cfca04-099c-4b70-f98a-08d761cb185a X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Nov 2019 08:35:20.9426 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: DmF3GGaz7RdBccmyVvqbhqePvMQcG2VULuCI1mDJtZt7lfqMMXEfA91VViZq3SDrP2crdMenMrlViKCJP1NwFw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB3442 Subject: Re: [dpdk-dev] [PATCH 1/2] ethdev: add flow action type update as an offload 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQW5kcmV3IFJ5YmNoZW5r byA8YXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbT4NCj4gU2VudDogVHVlc2RheSwgTm92ZW1iZXIg NSwgMjAxOSA4OjUwIEFNDQo+IFRvOiBPcmkgS2FtIDxvcmlrYUBtZWxsYW5veC5jb20+OyBUaG9t YXMgTW9uamFsb24NCj4gPHRob21hc0Btb25qYWxvbi5uZXQ+DQo+IENjOiBkZXZAZHBkay5vcmc7 IHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbTsgZmVycnVoLnlpZ2l0QGludGVsLmNvbTsNCj4gamVy aW5qQG1hcnZlbGwuY29tOyBKb2huIE1jTmFtYXJhIDxqb2huLm1jbmFtYXJhQGludGVsLmNvbT47 IE1hcmtvDQo+IEtvdmFjZXZpYyA8bWFya28ua292YWNldmljQGludGVsLmNvbT47IEFkcmllbiBN YXphcmd1aWwNCj4gPGFkcmllbi5tYXphcmd1aWxANndpbmQuY29tPjsgZGF2aWQubWFyY2hhbmRA cmVkaGF0LmNvbTsNCj4ga3RyYXlub3JAcmVkaGF0LmNvbQ0KPiBTdWJqZWN0OiBSZTogW2RwZGst ZGV2XSBbUEFUQ0ggMS8yXSBldGhkZXY6IGFkZCBmbG93IGFjdGlvbiB0eXBlIHVwZGF0ZSBhcyBh bg0KPiBvZmZsb2FkDQo+IA0KPiBPbiAxMS80LzE5IDk6MzcgUE0sIE9yaSBLYW0gd3JvdGU6DQo+ ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEFuZHJldyBSeWJjaGVu a28gPGFyeWJjaGVua29Ac29sYXJmbGFyZS5jb20+DQo+ID4+IFNlbnQ6IFN1bmRheSwgTm92ZW1i ZXIgMywgMjAxOSAxOjQxIFBNDQo+ID4+IFRvOiBPcmkgS2FtIDxvcmlrYUBtZWxsYW5veC5jb20+ OyBUaG9tYXMgTW9uamFsb24NCj4gPj4gPHRob21hc0Btb25qYWxvbi5uZXQ+DQo+ID4+IENjOiBk ZXZAZHBkay5vcmc7IHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbTsgZmVycnVoLnlpZ2l0QGludGVs LmNvbTsNCj4gPj4gamVyaW5qQG1hcnZlbGwuY29tOyBKb2huIE1jTmFtYXJhIDxqb2huLm1jbmFt YXJhQGludGVsLmNvbT47IE1hcmtvDQo+ID4+IEtvdmFjZXZpYyA8bWFya28ua292YWNldmljQGlu dGVsLmNvbT47IEFkcmllbiBNYXphcmd1aWwNCj4gPj4gPGFkcmllbi5tYXphcmd1aWxANndpbmQu Y29tPjsgZGF2aWQubWFyY2hhbmRAcmVkaGF0LmNvbTsNCj4gPj4ga3RyYXlub3JAcmVkaGF0LmNv bQ0KPiA+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggMS8yXSBldGhkZXY6IGFkZCBm bG93IGFjdGlvbiB0eXBlIHVwZGF0ZSBhcw0KPiBhbg0KPiA+PiBvZmZsb2FkDQo+ID4+DQo+ID4+ IE9uIDExLzMvMTkgMToyMiBQTSwgT3JpIEthbSB3cm90ZToNCj4gPj4+IEhpLA0KPiA+Pj4NCj4g Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IGRldiA8ZGV2LWJv dW5jZXNAZHBkay5vcmc+IE9uIEJlaGFsZiBPZiBBbmRyZXcgUnliY2hlbmtvDQo+ID4+Pj4gU2Vu dDogRnJpZGF5LCBOb3ZlbWJlciAxLCAyMDE5IDE6MzUgUE0NCj4gPj4+PiBUbzogVGhvbWFzIE1v bmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0Pg0KPiA+Pj4+IENjOiBkZXZAZHBkay5vcmc7IE9y aSBLYW0gPG9yaWthQG1lbGxhbm94LmNvbT47DQo+ID4+Pj4gcGJoYWdhdmF0dWxhQG1hcnZlbGwu Y29tOyBmZXJydWgueWlnaXRAaW50ZWwuY29tOyBqZXJpbmpAbWFydmVsbC5jb207DQo+ID4+IEpv aG4NCj4gPj4+PiBNY05hbWFyYSA8am9obi5tY25hbWFyYUBpbnRlbC5jb20+OyBNYXJrbyBLb3Zh Y2V2aWMNCj4gPj4+PiA8bWFya28ua292YWNldmljQGludGVsLmNvbT47IEFkcmllbiBNYXphcmd1 aWwNCj4gPj4+PiA8YWRyaWVuLm1hemFyZ3VpbEA2d2luZC5jb20+OyBkYXZpZC5tYXJjaGFuZEBy ZWRoYXQuY29tOw0KPiA+Pj4+IGt0cmF5bm9yQHJlZGhhdC5jb20NCj4gPj4+PiBTdWJqZWN0OiBS ZTogW2RwZGstZGV2XSBbUEFUQ0ggMS8yXSBldGhkZXY6IGFkZCBmbG93IGFjdGlvbiB0eXBlIHVw ZGF0ZQ0KPiBhcw0KPiA+PiBhbg0KPiA+Pj4+IG9mZmxvYWQNCj4gPj4+Pg0KPiA+Pj4+IE9uIDEw LzMxLzE5IDU6NDkgUE0sIFRob21hcyBNb25qYWxvbiB3cm90ZToNCj4gPj4+Pj4gMzEvMTAvMjAx OSAxMDo0OSwgQW5kcmV3IFJ5YmNoZW5rbzoNCj4gPj4+Pj4+IE9uIDEwLzI4LzE5IDU6MDAgUE0s IE9yaSBLYW0gd3JvdGU6DQo+ID4+Pj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4+Pj4+Pj4gRnJvbTogQW5kcmV3IFJ5YmNoZW5rbyA8YXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNv bT4NCj4gPj4+Pj4+Pj4gT24gMTAvMjgvMTkgMTo1MCBQTSwgT3JpIEthbSB3cm90ZToNCj4gPj4+ Pj4+Pj4+IEhpIFBhdmFuLA0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IFNvcnJ5IGZvciBqdW1w aW5nIGluIGxhdGUuDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gSSBkb24ndCB1bmRlcnN0YW5k IHdoeSB3ZSBuZWVkIHRoaXMgZmVhdHVyZS4gSWYgdGhlIHVzZXIgZGlkbid0IHNldA0KPiBhbnkN Cj4gPj4+PiBmbG93DQo+ID4+Pj4+Pj4+IHdpdGggTUFSSw0KPiA+Pj4+Pj4+Pj4gdGhlbiB0aGUg dXNlciBkb2Vzbid0IG5lZWQgdG8gY2hlY2sgaXQuDQo+ID4+Pj4+Pj4+IFRoZXJlIGlzIHByZXR0 eSBsb25nIGRpc2N1c3Npb24gb24gdGhlIHRvcGljIGFscmVhZHksIHBsZWFzZSwgcmVhZCBbMV0u DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IFsxXQ0KPiA+Pj4+Pj4+Pg0KPiA+Pg0KPiBodHRwczov L2V1cjAzLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cCUzQSUyRiUy RmluYm94LmRwZGsNCj4gPj4+Pj4+Pj4+IEJlc3QsDQo+ID4+Pj4+Pj4+PiBPcmkNCj4gPj4+Pj4+ Pj4gLm9yZyUyRmRldiUyRjMyNTFmYzAwLTc1OTgtMWM0Zi1mYzJhLQ0KPiA+Pj4+Pj4+Pg0KPiA+ Pg0KPiAzODAwNjVmMGE0MzUlNDBzb2xhcmZsYXJlLmNvbSUyRiZhbXA7ZGF0YT0wMiU3QzAxJTdD b3Jpa2ElNDBtZWxsYW4NCj4gPj4NCj4gb3guY29tJTdDZTNmNzc5ZDRiN2M0NGI2ODJkNjUwOGQ3 NWI5ZDg2ODglN0NhNjUyOTcxYzdkMmU0ZDliYTZhNA0KPiA+Pg0KPiBkMTQ5MjU2ZjQ2MWIlN0Mw JTdDMCU3QzYzNzA3ODYwNDQzOTAxOTExNCZhbXA7c2RhdGE9c1lvb2MlMkZRM0MNCj4gPj4+Pj4+ Pj4ga1VaRzNnUkZQbFpybTh4TWZNQjlnT1dXZXg1WUlrV2hNYyUzRCZhbXA7cmVzZXJ2ZWQ9MA0K PiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+IFRoYW5rcyBmb3IgdGhlIGxpbmssIGl0IHdhcyBhbiBpbnRl cmVzdGluZyByZWFkaW5nLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBBbHNvIGl0IGJyZWFrcyBj b21wYXRpYmlsaXR5Lg0KPiA+Pj4+Pj4+PiBZZXMsIHRoZXJlIGlzIGEgZGVwcmVjYXRpb24gbm90 aWNlIGZvciBpdC4NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IElmIG15IHVuZGVyc3RhbmRpbmcg aXMgY29ycmVjdCB0aGUgTUFSSyBmaWVsZCBpcyBnb2luZyB0byBiZSBtb3ZlZA0KPiB0bw0KPiA+ Pj4+Pj4+PiBkeW5hbWljIGZpZWxkLCBhbmQgdGhpcw0KPiA+Pj4+Pj4+Pj4gd2lsbCBiZSB3YXkg dG8gY29udHJvbCB0aGUgdXNlIG9mIE1BUksuDQo+ID4+Pj4+Pj4+IFllcyBhbmQgSSB0aGluayB0 aGUgb2ZmbG9hZCBzaG91bGQgdXNlZCB0byByZXF1ZXN0IGR5bmFtaWMNCj4gPj4+Pj4+Pj4gZmll bGQgcmVnaXN0ZXIuIFNpbWlsYXIgdG8gdGltZXN0YW1wIGluIGR5bmFtaWMgbWJ1ZiBleGFtcGxl cy4NCj4gPj4+Pj4+Pj4gQXBwbGljYXRpb24gcmVxdWVzdHMgUnggdGltZXN0YW1wIG9mZmxvYWQs IFBNRCByZWdpc3RlcnMgZHluYW1pYw0KPiA+Pj4+Pj4+PiBmaWxlZC4NCj4gPj4+Pj4+Pj4NCj4g Pj4+Pj4+PiBJbiBnZW5lcmFsIGl0IHdhcyBkZWNpZGVkIHRoYXQgdGhlcmUgd2lsbCBiZSBubyBj YXBhYmlsaXR5IGZvciBydGVfZmxvdw0KPiA+PiBBUEksDQo+ID4+Pj4gZHVlIHRvIHRoZSBmYWN0 IHRoYXQNCj4gPj4+Pj4+PiBpdCBpcyBpbXBvc3NpYmxlIHRvIHN1cHBvcnQgYWxsIHBvc3NpYmxl IGNvbWJpbmF0aW9ucy4gRm9yIGV4YW1wbGUgYQ0KPiBQTUQNCj4gPj4+PiBjYW4gYWxsb3cgbWFy ayBvbiBSeA0KPiA+Pj4+Pj4+IHdoaWxlIG5vdCBzdXBwb3J0aW5nIGl0IG9uIGUtc3dpdGNoICh0 cmFuc2Zlcikgb3Igb24gVHguDQo+ID4+Pj4+Pj4gVGhlIG9ubHkgd2F5IHRvIHZhbGlkYXRlIGl0 IGlzIHZhbGlkYXRpbmcgYSBmbG93LiBJZiB0aGUgZmxvdyBpcyB2YWxpZGF0ZWQNCj4gPj4gdGhl bg0KPiA+Pj4+IHRoZSBhY3Rpb24gaXMgc3VwcG9ydGVkLg0KPiA+Pj4+Pj4+IFRoaXMgaXMgdGhl IGV4YWN0IGFwcHJvYWNoIHdlIGFyZSBpbXBsZW1lbnRpbmcgd2l0aCB0aGUgTWV0YQ0KPiBmZWF0 dXJlLg0KPiA+Pj4+Pj4+IFNvIGFzIEkgc2VlIGl0LCB0aGUgbG9naWMgc2hvdWxkIGJlIHNvbWV0 aGluZyBsaWtlIHRoaXM6DQo+ID4+Pj4+Pj4gMS4gcnVuIGRldmNvbmZpZ3VyZS4NCj4gPj4+Pj4+ PiAyLiBhbGxvY2F0ZSBtZW1wb29sDQo+ID4+Pj4+Pj4gMy4gc2V0dXAgcXVldWVzLg0KPiA+Pj4+ Pj4+IDQuIHJ1biBydGVfZmxvd192YWxpZGF0ZSB3aXRoIG1hcmsgYWN0aW9uLg0KPiA+Pj4+Pj4+ IElmIGZsb3cgdmFsaWRhdGVkIHJlZ2lzdGVyIG1hcmsgaW4gbWJ1ZiBlbHNlIGRvbid0IHJlZ2lz dGVyLg0KPiA+Pj4+Pj4+IElmIHRoZSBQTUQgbmVlZHMgc29tZSBzcGVjaWFsIHNldHRpbmcgZm9y IG1hcmsgaGUgY2FuIHVwZGF0ZSB0aGUNCj4gcXVldWUNCj4gPj4+PiB3aGVuIGhlIGdldHMgdGhl IGZsb3cgdG8gdmFsaWRhdGUuDQo+ID4+Pj4+Pj4gQXQgdGhpcyBzdGFnZSB0aGUgZGV2aWNlIGlz IG5vdCBzdGFydGVkIHNvIGFueSBjaGFuZ2UgaXMgYWxsb3dlZC4NCj4gPj4+Pj4+IEkgdW5kZXJz dGFuZCB3aHkgdGhlcmUgaXMgY2FwYWJpbGl0eSByZXBvcnRpbmcgaW4gcnRlX2Zsb3cgQVBJIHdo ZW4NCj4gPj4+Pj4+IGl0IGlzIGFib3V0IHJ0ZV9mbG93IEFQSSBpdHNlbGYuIFRoZSBwcm9ibGVt IGFwcGVhcnMgd2hlbiBydGVfZmxvdw0KPiA+Pj4+Pj4gQVBJIHN0YXJ0cyB0byBpbnRlcmFjdCB3 aXRoIG90aGVyIGZ1bmN0aW9uYWxpdHkuDQo+ID4+Pj4+PiBXaGljaCBwYXR0ZXJuL2FjdGlvbnMg c2hvdWxkIGFwcGxpY2F0aW9uIHRyeSBpbiBvcmRlciB0byBkZWNpZGUNCj4gPj4+Pj4+IGlmIE1B UksgaXMgc3VwcG9ydGVkIG9yIG5vdC4NCj4gPj4+Pj4gV2h5IGFwcGxpY2F0aW9uIHNob3VsZCBk ZWNpZGUgd2hldGhlciBNQVJLIGlzIHN1cHBvcnRlZCBvciBub3Q/DQo+ID4+Pj4+IEluIG15IHVu ZGVyc3RhbmRpbmcgaXQgY2FuIGJlIGVuYWJsZWQgZHluYW1pY2FsbHkgcGVyIGZsb3cuDQo+ID4+ Pj4gWWVzLCBpdCBpcyBwZXIgZmxvdyByaWdodCBub3csIGJ1dCBpdCBpcyByZXNvdXJjZSBjb25z dW1pbmcgdG8NCj4gPj4+PiBtYWtlIGEgZmxvdyBydWxlIGp1c3QgdG8gZGlzY2FyZCBpdCBhbmQg d29yayB3aXRob3V0IG9mZmxvYWQuDQo+ID4+Pj4gVGhlIGFwcGxpY2F0aW9uIGFscmVhZHkgc3Vm ZmVycyBhbmQgYXR0ZW1wdCB0byB1c2UgaGFyZHdhcmUNCj4gPj4+PiBvZmZsb2FkIG1ha2VzIGl0 IHN1ZmZlciBldmVuIG1vcmUuIE9mIGNvdXJzZSwgaGFyZHdhcmUgb2ZmbG9hZA0KPiA+Pj4+IGlu IGFwcGxpY2F0aW9uIG1heSBiZSBzaW1wbHkgZ2xvYmFsbCBkaXNhYmxlZCwgYnV0IHByZXNlbmNl IG9mDQo+ID4+Pj4gTUFSSyBvZmZsb2FkIGFsbG93cyB0byBkbyBpdCBkeW5hbWljYWxseSBiYXNl ZCBvbiBvZmZsb2FkDQo+ID4+Pj4gcmVwb3J0ZWQgYnkgUE1ELg0KPiA+Pj4+DQo+ID4+Pj4gQWxz byBJIHRoaW5rIHRoYXQgUWkgaGFzIGEgZ29vZCBleGFtcGxlIGZvciB2UE1EIHdoeQ0KPiA+Pj4+ IE1BUksgb2ZmbG9hZCB3b3VsZCBiZSB1c2VmdWwuDQo+ID4+Pj4NCj4gPj4+IEkgZG9uJ3QgdGhp bmsgdGhhdCBjcmVhdGluZyBhIHNpbXBsZSBmbG93IGR1cmluZyBzdGFydHVwIGlzIHJlc291cmNl DQo+IGNvbnN1bWluZy4NCj4gPj4gSXQgaXMgbm90IGFib3V0IHN0YXJ0dXAuIEl0IGlzIGZvciBl dmVyeSBydWxlIHdoaWNoIHdpbGwgYmUgcmVqZWN0ZWQgc2luY2UNCj4gPj4gTUFSSyBpcyBub3Qg c3VwcG9ydGVkLg0KPiA+Pg0KPiA+IEknbSBzb3JyeSBidXQgSSBkb24ndCB1bmRlcnN0YW5kLiBM aWtlIGV2ZXJ5dGhpbmcgZWxzZSBpbiBydGVfZmxvdywgaWYgZmxvdw0KPiB2YWxpZGF0aW9uIGZh aWxlZCwNCj4gPiB0aGUgZmxvdyBzaG91bGQgbm90IGJlIHRlc3RlZCBhZ2Fpbi4gSXQgaXMgcG9p bnRsZXNzLiBJZiB0aGUgZmxvdyBnb3QgcmVqZWN0ZWQNCj4gdGhlbiB0aGUgYXBwbGljYXRpb24N Cj4gPiBzaG91bGQgc2V0IGl0J3MgbG9naWMgYWNjb3JkaW5nbHkgYW5kIG5vdCB1c2UgTUFSSyBm bG93cy4NCj4gPiBTYW1lIGZvciBleGFtcGxlIHRoZSBwbWQgZG9lc24ndCBzdXBwb3J0IGVuY2Fw LCBzbyBhZnRlciB0aGUgYXBwbGljYXRpb24NCj4gdHJpZXMgYW5kIGZhaWxzLCBpdCBzaG91bGQN Cj4gPiB1bmRlcnN0YW5kIHRoYXQgaXQgbXVzdCBkbyB0aGUgZW5jYXAgaW4gU1cuDQo+IA0KPiBU aGUgcHJvYmxlbSBpcyB0aGF0IGZsb3cgdmFsaWRhdGlvbiBtYXkgZmFpbCBiZWNhdXNlIG9mIHZh cmlvdXMgcmVhc29ucy4NCj4gTWF5IGJlIHRoZSBmaXJzdCB2YWxpZGF0aW9uIGZhaWxzIGJlY2F1 c2Ugb2YgdGhlIHBhdHRlcm4gaXMgbm90DQo+IHN1cHBvcnRlZCwgb3INCj4gcGF0dGVybithY3Rp b24gaXMgbm90IHN1cHBvcnRlZCwgcGF0dGVybithY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBiZWNh dXNlDQo+IG9mIGFub3RoZXIgcnVsZSBpcyBpbnN0YWxsZWQgcmlnaHQgbm93LCBidXQgd291bGQg YmUgc3VwcG9ydGVkIHdpdGhvdXQgdGhlDQo+IHJ1bGUgaW5zdGFsbGVkLg0KPiANCg0KWW91IGFy ZSByaWdodCwgc28gdGhlIGFwcGxpY2F0aW9uIHNob3VsZCB0ZXN0IHdpdGggdGhlIG1vc3QgYmFz aWMgZmxvdywgb3IgdGhlIGZsb3cgdGhhdCANCnJlcHJlc2VudCBiZXN0IHdoYXQgdGhlIGFwcGxp Y2F0aW9uIHdpc2hlcy4gDQpTaW5jZSBpbiB0aGlzIHN0YWdlIGl0IGlzIG9ubHkgdmFsaWRhdGlv biB0aGVyZSBpcyBubyBwcm9ibGVtIHdpdGggY29uZmxpY3RpbmcgZmxvd3MuIA0KDQo+ID4+PiBJ IHRoaW5rIGFzIHdlIG1vdmUgbW9yZSBhbmQgbW9yZSB0byBydGVfZmxvdyB3ZSBjYW4ndCBjb250 aW51ZSB1c2luZw0KPiA+PiBvZmZsb2Fkcy4NCj4gPj4+IFRoZSBmYWN0IHRoYXQgb25lIFBNRCBk b2Vzbid0IHN1cHBvcnQgbWFyayBmaXJzdCBzaG91bGQgYmUgbGlzdGVkIGluIGENCj4gcmVsZWFz ZQ0KPiA+PiBub3RlcywNCj4gPj4NCj4gPj4gUmVsZWFzZSBub3RlcyBhcmUgbmljZSwgYnV0IGl0 IGlzIG5vdGhpbmcgZm9yIGF1dG9tYXRlZCBwcm9jZXNzaW5nLg0KPiA+Pg0KPiA+IEFncmVlLCB0 aGlzIGlzIHdoeSBpcyBzaG91bGQgYmUgdGVzdGVkIHVzaW5nIHJ0ZV9mbG93Lg0KPiA+DQo+ID4+ PiBJbiBRaSBleGFtcGxlIHRoZSBhcHBsaWNhdGlvbiBjYW4gc3RhcnQgd2l0aCBpdCdzIHByZWZl cnJlZCBQTUQgYW5kIHRlc3QgaWYNCj4gaXRzDQo+ID4+IHN1cHBvcnQgdGhlIG1hcmsgYWN0aW9u LA0KPiA+Pj4gaWYgbm90IHRyeSBvdGhlciBQTUQgb3IgdXNlIHNvbWUgZmFsbGJhY2suDQo+ID4+ IFByZXR0eSBvZnRlbiB0aGVyZSBpcyBubyBkaXJlY3QgY29udHJvbCBvdmVyIFBNRCB0byB1c2Uu IEl0IGlzIGVpdGhlcg0KPiA+PiB2ZW5kb3Igc3BlY2lmaWMNCj4gPj4gb3Igbm8gY29udHJvbCBh dCBhbGwuIFBNRCBjaG9pY2UgaXMgdGhlIHJlc3VsdCBvZiByZXF1ZXN0ZWQgb2ZmbG9hZHMuDQo+ ID4+DQo+ID4gV2UgaGF2ZSBkaWZmZXJlbnQgZGVmaW5pdGlvbiBmb3IgUE1EIPCfmIouIElmIEkg dW5kZXJzdGFuZCB5b3UgY29ycmVjdGx5IHlvdQ0KPiBtZWFuDQo+ID4gd2hpY2ggZnVuY3Rpb24g dGhlIFBNRCB1c2VzIGludGVybmFsbHksIGFtIEkgY29ycmVjdD8NCj4gDQo+IFllcywgbGlrZSB2 UE1EIGlzIHZlY3Rvci1iYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBSeC9UeCByb3V0aW5lcy4NCj4g DQo+ID4gSWYgc28gaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBQTUQgdGhhdCB3aGVu IGFwcGxpY2F0aW9uIHRyaWVzIHRvIHZhbGlkYXRlDQo+IGEgZmxvdyB3aXRoIG1hcmsNCj4gPiB0 byBzd2l0Y2ggdGhlIGZ1bmN0aW9ucyAvIFBNRCB0byBhIFBNRCB0aGF0IHN1cHBvcnRzIHRoaXMg a2luZCBvZiBhY3Rpb24uDQo+IA0KPiBJdCBpcyBpbXBvc3NpYmxlIHdoZW4gcXVldWVzIGFyZSBz ZXR1cCBhbmQgcG9ydCBpcyBydW5uaW5nLg0KPiBGbG93IHJ1bGVzIG1heSBiZSBhbmQgc2hvdWxk IGJlIGluc3RhbGxlZCB3aGVuIHRyYWZmaWMgaXMgcnVubmluZy4NCj4gDQoNCkknbSBub3Qgc2F5 aW5nIHRvIGNoYW5nZSB0aGUgUE1EIHdoaWxlIHRoZSB0cmFmZmljIGlzIHJ1bm5pbmcgdGhlIHZh bGlkYXRpb24gb2YgYSBmbG93DQpjYW4gYmUgZG9uZSBiZWZvcmUgc3RhcnRpbmcgdHJhZmZpYy4N Cg0KPiA+IEFnYWluIHRoaW5rIGFib3V0IGl0IGlmIHRoZSB1c2VyIHdhbnQgbWV0YSBmb3IgZXhh bXBsZSwgdGhlIFBNRCBzaG91bGQNCj4gYXNzdW1lIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHdhbnRz IHRoaXMNCj4gPiBraW5kIG9mIGFjdGlvbiBhbmQgdXNlIHRoZSBtYXRjaGluZyBQTUQuDQo+ID4N Cj4gPj4+IFRoaW5rIGFib3V0IGl0IGxpa2UgdGhpcywgYXNzdW1lIHRoYXQgb25lIFBNRCBzdXBw b3J0IHNvbWUgb3RoZXINCj4gPj4+IHJ0ZV9mbG93IHdoaWxlIHRoZSBzZWNvbmQgUE1EIGRvZXNu J3Qgc3VwcG9ydCBpdC4gc28gdGhlIGFwcGxpY2F0aW9uIHNob3VsZA0KPiA+PiBkZWNpZGUgd2hp Y2ggaXMgbW9yZSBpbXBvcnRhbnQNCj4gPj4+IHRvIGl0IGFuZCBlbmFibGUgdGhlIGJlc3QgUE1E Lg0KPiA+PiBBZ2FpbiwgaXQgaXMgbm90IGFib3V0IGZpbHRlcmluZyBvbmx5LiBJdCBpcyBkZWxp dmVyeSBvZiB0aGUgZXh0cmENCj4gPj4gaW5mb3JtYXRpb24gd2hpY2ggcmVxdWlyZXMNCj4gPj4g ZXh0cmEgcHJvY2Vzc2luZyBhbmQgZXh0cmEgcmVzb3VyY2VzLg0KPiA+Pg0KPiA+IFBsZWFzZSBz ZWUgbXkgY29tbWVudCBhYm92ZSByZWdhcmRpbmcgbWV0YWRhdGEuDQo+ID4gSSB1bmRlcnN0YW5k IHlvdXIgcG9pbnQsIHdlIGhhdmUgMiBkaWZmZXJlbnQgY29tcG9uZW50cywgdGhlIHJ0ZV9mbG93 DQo+ID4gYW5kIHRoZSBtYnVmLiBPbmUgaXMgdXNlZCBieSBIVyBhbmQgb25lIGlzIHVzZWQgYnkg U1cuDQo+ID4gQSBmZWF0dXJlIGxpa2UgdHlwZSBpcyByaWdodCBpbiB0aGUgbWlkZGxlLiBJIGhh ZCByZWxhdGVkIGFyZ3VtZW50IHdpdGggU2xhdmENCj4gPiBhYm91dCB3aGVyZSB0byBwbGFjZSB0 aGUgZHluYW1pYyBtYnVmIGZ1bmN0aW9uIGZvciB0aGUgbWV0YS4gSXQgd2FzIGRlY2lkZWQNCj4g PiBpdCBpcyBtb3JlIHJ0ZV9mbG93IHRoYW4gbWJ1Zi4NCj4gPiBBbHNvIHRoaW5rIGFib3V0IGl0 IGxpa2UgdGhpcywgaWYgKGFuZCBJIGhvcGUgd2UgY2FuKSBpbiBuZXh0IGdlbmVyYXRpb24gd2Ug d2lsbA0KPiBiZSBhYmxlIHRvDQo+ID4gd3JpdGUgZGF0YSB0byB0aGUgbWJ1ZiBmcm9tIHRoZSBI Vy4gVGhpcyB3aWxsIG1lYW4gaXQgd2lsbCBiZSBvbmx5IHVzZWQgaW4NCj4gcnRlX2Zsb3csIGFu ZCBub3QNCj4gPiBpbiB0aGUgcnhfYnVyc3QgZnVuY3Rpb24uDQo+IA0KPiBJIHRoaW5rIGl0IHdp bGwgbm90IG1ha2UgZmxvdyBtYXJrIHJ0ZV9mbG93IGVudGl0eSBvbmx5Lg0KPiANCg0KQnV0IGl0 IHdpbGwgYmUgc2V0IG9ubHkgdXNpbmcgcnRlX2Zsb3cgYW5kIHVzZWQgYnkgYXBwbGljYXRpb24g c28gdGhlIFR4L1J4IGZ1bmN0aW9uDQpwbGF5IG5vIHBhcnQgaW4gdGhpcyBjYXNlLg0KDQo+ID4+ Pj4+PiBUaGUgcmlnaHQgYW5zd2VyIGlzIGEgcGF0dGVybi9hY3Rpb24NCj4gPj4+Pj4+IHdoaWNo IHdpbGwgYmUgcmVhbGx5IHVzZWQsIGJ1dCB3aGF0IHRvIGRvIGlmIHRoZXJlIGFyZSBtYW55DQo+ ID4+Pj4+PiBjb21iaW5hdGlvbnMgb3IgaWYgdGhlc2UgY29tYmluYXRpb25zIGFyZSBub3Qga25v dyBpbiBhZHZhbmNlLg0KPiA+Pj4+Pj4gTWluaW1hbD8gQnV0IEkgZWFzaWx5IGltYWdpbmUgY2Fz ZXMgd2hlbiBtaW5pbWFsIGlzIG5vdCBzdXBwb3J0ZWQsDQo+ID4+Pj4+PiBidXQgbW9yZSBjb21w bGV4IHJlYWwgbGlmZSBwYXR0ZXJucyBhcmUgc3VwcG9ydGVkLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+ IFRoZSBtYWluIGlkZWEgYmVoaW5kIHRoZSBvZmZsb2FkIGlzIGFzIG11Y2ggYXMgeW91IGtub3cg aW4gYWR2YW5jZQ0KPiA+Pj4+Pj4gYXMgbXVjaCB5b3UgY2FuIG9wdGltaXplIHdpdGhvdXQgb3Zl cmNvbXBsaWNhdGluZyBkcml2ZXJzIGFuZCBIVy4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBJbiB0aGUg Y2FzZSBvZiBPVlMsIGFic2VuY2UgTUFSSyBvZmZsb2FkIHdvdWxkIG1lYW4gdGhhdCBPVlMNCj4g Pj4+Pj4+IHNob3VsZCBub3QgZXZlbiB0cnkgdG8gdXNlIHBhcnRpYWwgb2ZmbG9hZCBldmVuIGlm IGl0IGlzIGVuYWJsZWQuDQo+ID4+Pj4+PiBTbywgbm8gZWZmb3J0cyBhcmUgcmVxdWlyZWQgdG8g dHJ5IHRvIGNvbnZlcnQgZmxvdyBpbnRvIHBhdHRlcm4gYW5kDQo+ID4+Pj4+PiB2YWxpZGF0ZSB0 aGUgZmxvdyBydWxlLg0KPiA+Pj4+PiBUaGF0J3MgYW4gaW50ZXJlc3RpbmcgZmVlZGJhY2suDQo+ ID4+Pj4+IEkgd291bGQgbGlrZSB0byB1bmRlcnN0YW5kIHdoeSBPVlMgY2Fubm90IGFkYXB0IGl0 cyBkYXRhcGF0aCBvbg0KPiBkZW1hbmQNCj4gPj4+Pj4gcGVyIHBvcnQsIHBlciBxdWV1ZSBhbmQg cGVyIGZsb3c/DQo+ID4+Pj4gSSBndWVzcyB0aGVyZSBpcyBhIG1pc3VuZGVyc3RhbmRpbmcgaGVy ZS4gV2hhdCBJJ20gdHJ5aW5nIHRvIHNheQ0KPiA+Pj4+IGlzIHRoYXQgaW50cm9kdWN0aW9uIG9m IE1BUksgb2ZmbG9hZCB3b3VsZCBtYWtlIGNvZGUgYSBiaXQgbW9yZQ0KPiA+Pj4+IHNpbXBsZSBh bmQgZWZmaWNpZW50LiBCYXNpY2FsbHkgaXQgd291bGQgYmUgcG9zc2libGUgdG8gZW5hYmxlDQo+ ID4+Pj4gc28tY2FsbGVkIGhhcmR3YXJlIG9mZmxvYWQgaW4gT1ZTIGJ5IGRlZmF1bHQsIGJ1dCBm aW5hbGx5IG1ha2UNCj4gPj4+PiBhIGRlY2lzaW9uIHBlciBwb3J0IGJhc2VkIG9uIE1BUksgb2Zm bG9hZCBhdmFpbGFiaWxpdHkNCj4gPj4+PiAoc2hvdWxkIGl0IHRyeSB0byBtYWtlIHJ0ZV9mbG93 IHJ1bGUgYnkgZmxvdyBhbmQgaW5zZXJ0IGl0PykNCj4gPj4+IExpa2UgSSBzYWlkIHRoZSBQTUQg Y2FuIGNoZWNrIGlmIGl0IG1hcmsgaXMgYXZhaWwgaW4gdGhlIGJ1ZmYuIFNvIGhlIGNhbg0KPiBz ZWxlY3RlZA0KPiA+PiB0aGUNCj4gPj4+IGJlc3QgZnVuY3Rpb24uDQo+ID4+IFdoaWNoIGJ1ZmY/ DQo+ID4gU29ycnkgbWJ1Zi4gSSB0aG91Z2h0IGl0IHdhcyBkZWNpZGVkIGFsc28gdG8gbW92ZSB0 aGUgbWFyayB0byBkeW5hbWljIG1idWYuDQo+ID4NCj4gPiBKdXN0IHRvIHN1bW1hcml6ZSBJJ20g YWZyYWlkIHRoYXQgd2Ugd2lsbCBoYXZlIG1vcmUgZmllbGRzIGxpa2UgdGhlIG1hcmsgKHdlDQo+ IGFscmVhZHkgZG8gd2l0aCB0aGUNCj4gPiBtZXRhZGF0YSkgYW5kIHdlIG1pZ2h0IGV2ZW4gZ2V0 IG1vcmUuDQo+ID4gSSBkb24ndCB3YW50IHRvIGhhdmUgY2FwYWJpbGl0eSBvdmVyIHJ0ZV9mbG93 IGFjdGlvbnMsIHNpbmNlIGl0IGNhbiBiZSB2ZXJ5DQo+IHRyaWNreSBmb3IgZXhhbXBsZQ0KPiA+ IFBNRCBjYW4gc3VwcG9ydCBvbmx5IG1hcmsgb3IgbWV0YSBidXQgbm90IGJvdGgsIHdoaWxlIG90 aGVyIHdpbGwgYmUgYWJsZSB0bw0KPiBzdXBwb3J0IGJvdGguDQo+ID4gc29tZSB3aWxsIGhhdmUg bGltaXRhdGlvbiBvbiB0aGUgbWFyayBhY3Rpb24gc29tZSBQTUQgd2lsbCBub3QgKGZvciBleGFt cGxlDQo+IHNpemUpDQo+ID4gc28gaW4gYW55IGNhc2UgdGhlIGFwcGxpY2F0aW9uIG11c3QgdmFs aWRhdGUgaXQuDQo+ID4gT3IgaWYgeW91IHdhbnQgb3RoZXIgZXhhbXBsZSB3ZSBjYW4gc3VwcG9y dCBtYXJrIGJvdGggaW4gdHJhbnNmZXIgYW5kDQo+IG5vcm1hbCBtb2RlLiBUaGlzIGlzIG9ubHkN Cj4gPiB0cnVlIGZyb20gdGhpcyBEUERLIHZlcnNpb24uIFNvIHdoYXQgc2hvdWxkIFBNRCB0aGF0 IHN1cHBvcnRzIG1hcmsgb25seSBvbg0KPiBub24gdHJhbnNmZXIgZmxvd3MgcmVwb3J0Pw0KPiAN Cj4gTUFSSyBvZmZsb2FkIGlzIGp1c3QgYSBwb3NzaWJpbGl0eSB0byBkZWxpdmVyIE1BUksgZnJv bSBIVyB0byBtYnVmLiBBbGwNCj4gcnRlX2Zsb3cgc3BlY2lmaWNzDQo+IGlzIG91dC1vZi1zY29w ZS4gSXQgc2hvdWxkIGJlIGRlbGl2ZXJlZCB3aXRoIHRoZSBwYWNrZXQgKG9yIGFzc29jaWF0ZWQN Cj4gd2l0aCBkZWxpdmVyZWQgcGFja2V0DQo+IGluIHNvbWUgd2F5KS4NCj4gDQoNClllcyBidXQg bGlrZSBJIHNhaWQgaW4gTWVsbGFub3ggUE1EIGZvciBleGFtcGxlIHdlIHN1cHBvcnRlZCB0aGUg bWFyayBvbmx5IG9uIG5vbi10cmFuc2ZlciBmbG93cyB1bnRpbCB0aGlzIHJlbGVhc2UuDQpzbyB3 aGVuIHRoZSB1c2VyIHNldCBtYXJrIG9uIHRyYW5zZmVyIGZsb3cgaXQgd2FzIGludmFsaWQuIChp biB0cmFuc2ZlciBmbG93IGlmIHdlIGhhdmUgYSBtaXNzIHdlIHNlbmQgdGhlIHBhY2tldCBiYWNr IHRvIHRoZSBSeA0KcG9ydCBzbyB0aGUgYXBwbGljYXRpb24gY2FuIHVuZGVyc3RhbmQgb24gd2hp Y2ggdGFibGUgdGhlIG1pc3MgaGFwcGVuZWQpDQpJbiB0aGlzIHZlcnNpb24gd2UgYWRkZWQgdGhl IHN1cHBvcnQgZm9yIG1hcmsgYWxzbyBpbiB0cmFuc2ZlciAoRS1Td2l0Y2gpIGZsb3dzLg0KU28g bXkgcXVlc3Rpb24gYmVmb3JlIHRoaXMgcmVsZWFzZSB3aGF0IHNob3VsZCB0aGUgUE1EIHJlcG9y dD8gV2hhdCBzaG91bGQgdGhlIFBNRCByZXBvcnQgYWZ0ZXIgdGhpcyByZWxlYXNlPw0KDQpZb3Vy IGlkZWEgd2FzIG91ciBmaXJzdCB0aG91Z2h0IHdoZW4gYWRkaW5nIHRoZSBUeCBtZXRhLCBpbiB0 aGF0IGNhc2UgdGhlIG1ldGEgd2FzIGFsd2F5cyBzZXQgaW4gYXBwbGljYXRpb24NCnNvIHdlIHRo b3VnaHQgdGhhdCB0aGlzIG9mZmxvYWQgd2lsbCBlbmFibGUgdXMgYmV0dGVyIGZ1bmN0aW9uIHNl bGVjdGlvbiwgYnV0IGFzIHlvdSBrbm93IHdlIHJlbW92ZWQgdGhpcyBjYXBhYmlsaXR5DQpzaW5j ZSBpdCBpcyBub3QgY29ycmVjdCBhbnkgbW9yZS4NCg0KDQoNCj4gVGhlIGFib3ZlIGFsc28gaGln aGxpZ2h0cyBwcm9ibGVtcyBvZiB0aGUgbWV0YSB2cyBtYXJrIGRlc2lnbi4gVGhleSBhcmUgdmVy eQ0KPiBzaW1pbGFyIGFuZCB0aGVyZSBpcyBubyBhbnkgZ29vZCBkZWZpbml0aW9uIG9mIHRoZSBk aWZmZXJlbmNlIGFuZCBydWxlcw0KPiB3aGljaA0KPiBvbmUgc2hvdWxkIGJlIHVzZWQvc3VwcG9y dGVkIGluIHdoaWNoIGNvbmRpdGlvbnMuDQo+IA0KDQpNYXJrIGFuZCBNZXRhIGFyZSBleGFjdGx5 IHRoZSBzYW1lLCB0aGUgbWV0YSBpcyBqdXN0IGFub3RoZXIgdmFsdWUgdGhhdCB0aGUgYXBwbGlj YXRpb24gY2FuIHVzZS4NClRoaXMgaXMgd2h5IGJvdGggc2hvdWxkIGFjdCB0aGUgc2FtZS4NCg0K QW5kIG1heWJlIHRoaXMgaXMgdGhlIHdpbmluZyBhcmd1bWVudCwgdGhlIHJ0ZV9mbG93IHZhbGlk YXRpb24gYXBwcm9hY2ggd2FzIHVzZWQgYW5kIGFjY2VwdGVkIGZvciB0aGUgbWV0YS4NClNvIGxl dHMgdHJ5IGl0IGFsc28gd2l0aCB0aGUgbWFyay4gKHBsZWFzZSBhbHNvIHJlbWVtYmVyIHRoYXQg d2UgZGlkbid0IGhhdmUgdGhpcyBtYXJrIHVudGlsIG5vdyB0byBzb21laG93IHRoZSANClBNRCB3 b3JrZWQg8J+YiikNCg0KTGlrZSBJIHNhaWQgYmVmb3JlLCBJIHVuZGVyc3RhbmQgeW91ciBhcHBy b2FjaCwgYW5kIGVhY2ggb25lIG9mIHRoZW0gaGFzIGl0cyBvd24gYWR2YW50YWdlcyBhbmQgZHJh dyBiYWNrcy4NCkxldHMgc3RhcnQgdXNpbmcgdGhlIHJ0ZV9mbG93IGFwcHJvYWNoIGFuZCBzZWUg aG93IGl0IGdvZXMsIEkgcHJvbWlzZSB5b3UgdGhhdCBpZiBJIHNlZSB0aGF0IGl0IGRvZXNuJ3Qg c2NhbGUgb3IgY2F1c2UgbW9yZQ0KaXNzdWVzIEkgd2lsbCBiZSBmaXJzdCBvbmUgdG8gc3VibWl0 IGNoYW5nZXMuDQogDQoNCj4gQW5kcmV3Lg0KPiANCg0KQmVzdCwNCk9yaQ0K