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 56ED9A04AB; Fri, 8 Nov 2019 13:42:38 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 589D21C12A; Fri, 8 Nov 2019 13:42:37 +0100 (CET) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60062.outbound.protection.outlook.com [40.107.6.62]) by dpdk.org (Postfix) with ESMTP id F189C1C11D for ; Fri, 8 Nov 2019 13:42:35 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N760vFLljxZfBLqnYRwTSvCGZpWtl39xOCydGqACZlYEHJTOgp8HOnzFo2COAYFeJKjpArYpo/TtowU9ctA9F89CJop/cMJvLWRHTp8XS+enYyhLC876ifquzHQNQDtLw6GokcNqXhMWomkCAcQJF+yAZ049hcYs5GvrMWRdSAnacRpRA08/HGLobUvn6J/2kb8Lvh5cctyoH18IyZOi6VF7UcYeQvDw9AW6XwqWJCvSbPiE03f4kSEvv9AWIvPSLSEoa4NTUBMhTQa7mMPjDRc0eC4b7zeEsOJJyVCWYzKWS+0uVGzjK9OQKL6LEuFjJDdv5nkBk/4jcj10sdEH3A== 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=Paj572hEUowVVeVx3kkxUL7aweyBmn4U0XXU/RxPXK4=; b=ERfMFzHUH+Fq+Y9LUFM/3m8TZjvjOxxq1c+NPSoBvamgteHdFTN5ogen/zN0B0/+mdgiQHtHERYSbo+QYLegym5/UhD8jMN3qSNIUZGbGPifoHn0c4iFhLOX6MzR/FI007oDlJAsFTkYH/u4ljXekYuQsvqWPAKFQKqH7VLSqRFE/da0oY2vJS1TZJS+tQzvlyt3WUje2GCb1xopv1mDfuiyVQWluE/VSP3YSCUV5LYPjVj3/NQJwTFvA7s/1k1CnK5BbOL5vMxpyKdlZ+v9i6k1EGcDq+67wcIZ6a2O3XKhUNWJQtUJthW2h/IlMLmzV1xkbNJBnAAruxpN4fEGyw== 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=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Paj572hEUowVVeVx3kkxUL7aweyBmn4U0XXU/RxPXK4=; b=aqGkZgBhcp34Pl+FYA9vq+dtBO++zS7PT5nscAjIMWterXIeJfr6wH96VYDuMG0UU55oBtC1rUWxUXeOXcObpO8XErfbyKpXNoHMpZV4qnnGGpH+/VV7gZ6esyiQZC9s1OgR43kiJ3kFB1mDwntNdHjGNNjC8iVO21G1D7pPZ1M= Received: from AM4PR05MB3425.eurprd05.prod.outlook.com (10.171.190.15) by AM4PR05MB3345.eurprd05.prod.outlook.com (10.171.189.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2430.23; Fri, 8 Nov 2019 12:42:34 +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.034; Fri, 8 Nov 2019 12:42:34 +0000 From: Ori Kam To: Andrew Rybchenko , "Zhang, Qi Z" , Thomas Monjalon CC: "dev@dpdk.org" , "pbhagavatula@marvell.com" , "Yigit, Ferruh" , "jerinj@marvell.com" , "Mcnamara, John" , "Kovacevic, Marko" , Adrien Mazarguil , "david.marchand@redhat.com" , "ktraynor@redhat.com" , Olivier Matz Thread-Topic: [dpdk-dev] [PATCH 1/2] ethdev: add flow action type update as an offload Thread-Index: AQHVli7rdz6hG6SOSEuB3dQ32pzel6eBN00g Date: Fri, 8 Nov 2019 12:42:34 +0000 Message-ID: References: <20191025152142.12887-1-pbhagavatula@marvell.com> <1594828.JO7TyvRWtP@xps> <1784584.NQqjHnNvIa@xps> <039ED4275CED7440929022BC67E7061153DC6603@SHSMSX105.ccr.corp.intel.com> <83dda74c-c5b4-13f4-626d-59cbb7793239@solarflare.com> In-Reply-To: <83dda74c-c5b4-13f4-626d-59cbb7793239@solarflare.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=orika@mellanox.com; x-originating-ip: [185.175.35.255] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 6f0bce4f-01fb-49d0-602b-08d7644920e8 x-ms-traffictypediagnostic: AM4PR05MB3345: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 0215D7173F x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(376002)(396003)(39860400002)(136003)(346002)(366004)(13464003)(199004)(189003)(446003)(14454004)(25786009)(7416002)(305945005)(74316002)(7736002)(8676002)(4326008)(478600001)(229853002)(86362001)(6246003)(6436002)(81166006)(8936002)(81156014)(53546011)(6506007)(71190400001)(316002)(66946007)(76116006)(102836004)(52536014)(15650500001)(33656002)(54906003)(99286004)(2906002)(9686003)(55016002)(5660300002)(110136005)(186003)(26005)(66066001)(256004)(14444005)(486006)(11346002)(476003)(71200400001)(64756008)(66476007)(76176011)(7696005)(3846002)(6116002)(66446008)(66556008)(30864003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR05MB3345; H:AM4PR05MB3425.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: wx0Kt5GfYWXwJHv/O4NupcY80Qdh5av2Z9FkYZCXDXmoDYDhi5VEG2M3lOLv3uUdYTgkPz45/vgiTne8ZydJCDZjpIe+nQRfY76NlIGDfZQ7xHmF3Aicm4VTYKmy5rAfRXvO2siZmy3v8rb68U7uS7jOusQkkoz4HtPJLpLZhCCve6ol2+/9DxkH9eZ2EB4b/nN+x1k1gzcA0ALcZxByjwGT4YguZglGRRIu1pAZ2pDzA41aMIIQD4tpCGhiT+WOE9ve3udRMMu0qzzMOJV2XB89SQafi+FE6wT/5EoChPTLgUM+PpbpJViFtbrrIF0VWNlsTp/87ALalU3H29H5Fhw3VAXKfpm2rDxXGSeYSyAX1uuGQq9AAIxX3wXwWi9wIywnBxK302szwyXFY8kmbbG1wqeoXZyIAXp+uvBLuXQNdLDAEyHNTjqHdAg2Ge0z 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: 6f0bce4f-01fb-49d0-602b-08d7644920e8 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Nov 2019 12:42:34.1895 (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: EPHBO1PhXezlwRaj3G5NAacHQJfQ0rdBd7tUtD72RzLqpJLSl1bfs6yUL/ZSXrxxrKXVaUQZX4TMAbsABk8q0Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB3345 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" WWVzIG1pc3NlZCBzb21laG93IDYuDQpPbmUgbW9yZSBnZW5lcmFsIGNvbW1lbnQsIHdoYXQgaGFw cGVuZWQgdW50aWwgbm93PyBUaGUgTWFyayBpcyANCmFscmVhZHkgaW1wbGVtZW50ZWQgYW5kIHdv cmtpbmcgbW9yZSB0aGVuIDIgeWVhcnMuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogQW5kcmV3IFJ5YmNoZW5rbyA8YXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbT4NCj4g U2VudDogRnJpZGF5LCBOb3ZlbWJlciA4LCAyMDE5IDI6MjAgUE0NCj4gVG86IE9yaSBLYW0gPG9y aWthQG1lbGxhbm94LmNvbT47IFpoYW5nLCBRaSBaIDxxaS56LnpoYW5nQGludGVsLmNvbT47DQo+ IFRob21hcyBNb25qYWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD4NCj4gQ2M6IGRldkBkcGRrLm9y ZzsgcGJoYWdhdmF0dWxhQG1hcnZlbGwuY29tOyBZaWdpdCwgRmVycnVoDQo+IDxmZXJydWgueWln aXRAaW50ZWwuY29tPjsgamVyaW5qQG1hcnZlbGwuY29tOyBNY25hbWFyYSwgSm9obg0KPiA8am9o bi5tY25hbWFyYUBpbnRlbC5jb20+OyBLb3ZhY2V2aWMsIE1hcmtvDQo+IDxtYXJrby5rb3ZhY2V2 aWNAaW50ZWwuY29tPjsgQWRyaWVuIE1hemFyZ3VpbA0KPiA8YWRyaWVuLm1hemFyZ3VpbEA2d2lu ZC5jb20+OyBkYXZpZC5tYXJjaGFuZEByZWRoYXQuY29tOw0KPiBrdHJheW5vckByZWRoYXQuY29t OyBPbGl2aWVyIE1hdHogPG9saXZpZXIubWF0ekA2d2luZC5jb20+DQo+IFN1YmplY3Q6IFJlOiBb ZHBkay1kZXZdIFtQQVRDSCAxLzJdIGV0aGRldjogYWRkIGZsb3cgYWN0aW9uIHR5cGUgdXBkYXRl IGFzDQo+IGFuIG9mZmxvYWQNCj4gDQo+IE9uIDExLzgvMTkgMzoxMiBQTSwgT3JpIEthbSB3cm90 ZToNCj4gPg0KPiA+IEhpIEFuZHJldywNCj4gPg0KPiA+IFRoYW5rcyB2ZXJ5IG11Y2ggZm9yIHRo ZSBzdW1tZXJ5LCBJIHRoaW5rIHRoaXMgbWFrZXMgdGhlIGRpc2N1c3Npb24gbXVjaA0KPiBiZXR0 ZXIuDQo+ID4gKHdlIGV2ZW4gZ290IHNvbWUgbmV3IGZvbGtzIPCfmIopDQo+ID4NCj4gPiBJIHZv dGUgZm9yIEIgYW5kIEMsDQo+ID4NCj4gPiBQbGVhc2UgcmVhZCBteSBjb21tZW50cyBiZWxvdy4N Cj4gPg0KPiA+IE9yaQ0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ IEZyb206IGRldiA8ZGV2LWJvdW5jZXNAZHBkay5vcmc+IE9uIEJlaGFsZiBPZiBaaGFuZywgUWkg Wg0KPiA+PiBTZW50OiBGcmlkYXksIE5vdmVtYmVyIDgsIDIwMTkgMTo0MSBQTQ0KPiA+PiBUbzog VGhvbWFzIE1vbmphbG9uIDx0aG9tYXNAbW9uamFsb24ubmV0PjsgQW5kcmV3IFJ5YmNoZW5rbw0K PiA+PiA8YXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbT4NCj4gPj4gQ2M6IE9yaSBLYW0gPG9yaWth QG1lbGxhbm94LmNvbT47IGRldkBkcGRrLm9yZzsNCj4gPj4gcGJoYWdhdmF0dWxhQG1hcnZlbGwu Y29tOyBZaWdpdCwgRmVycnVoIDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsNCj4gPj4gamVyaW5q QG1hcnZlbGwuY29tOyBNY25hbWFyYSwgSm9obiA8am9obi5tY25hbWFyYUBpbnRlbC5jb20+Ow0K PiA+PiBLb3ZhY2V2aWMsIE1hcmtvIDxtYXJrby5rb3ZhY2V2aWNAaW50ZWwuY29tPjsgQWRyaWVu IE1hemFyZ3VpbA0KPiA+PiA8YWRyaWVuLm1hemFyZ3VpbEA2d2luZC5jb20+OyBkYXZpZC5tYXJj aGFuZEByZWRoYXQuY29tOw0KPiA+PiBrdHJheW5vckByZWRoYXQuY29tOyBPbGl2aWVyIE1hdHog PG9saXZpZXIubWF0ekA2d2luZC5jb20+DQo+ID4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQ QVRDSCAxLzJdIGV0aGRldjogYWRkIGZsb3cgYWN0aW9uIHR5cGUgdXBkYXRlDQo+IGFzDQo+ID4+ IGFuIG9mZmxvYWQNCj4gPj4NCj4gPj4NCj4gPj4NCj4gPj4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+ID4+PiBGcm9tOiBkZXYgPGRldi1ib3VuY2VzQGRwZGsub3JnPiBPbiBCZWhhbGYg T2YgVGhvbWFzIE1vbmphbG9uDQo+ID4+PiBTZW50OiBGcmlkYXksIE5vdmVtYmVyIDgsIDIwMTkg NzowNCBQTQ0KPiA+Pj4gVG86IEFuZHJldyBSeWJjaGVua28gPGFyeWJjaGVua29Ac29sYXJmbGFy ZS5jb20+DQo+ID4+PiBDYzogT3JpIEthbSA8b3Jpa2FAbWVsbGFub3guY29tPjsgZGV2QGRwZGsu b3JnOw0KPiA+Pj4gcGJoYWdhdmF0dWxhQG1hcnZlbGwuY29tOyBZaWdpdCwgRmVycnVoIDxmZXJy dWgueWlnaXRAaW50ZWwuY29tPjsNCj4gPj4+IGplcmluakBtYXJ2ZWxsLmNvbTsgTWNuYW1hcmEs IEpvaG4gPGpvaG4ubWNuYW1hcmFAaW50ZWwuY29tPjsNCj4gPj4+IEtvdmFjZXZpYywgTWFya28g PG1hcmtvLmtvdmFjZXZpY0BpbnRlbC5jb20+OyBBZHJpZW4gTWF6YXJndWlsDQo+ID4+PiA8YWRy aWVuLm1hemFyZ3VpbEA2d2luZC5jb20+OyBkYXZpZC5tYXJjaGFuZEByZWRoYXQuY29tOw0KPiA+ Pj4ga3RyYXlub3JAcmVkaGF0LmNvbTsgT2xpdmllciBNYXR6IDxvbGl2aWVyLm1hdHpANndpbmQu Y29tPg0KPiA+Pj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIDEvMl0gZXRoZGV2OiBh ZGQgZmxvdyBhY3Rpb24gdHlwZQ0KPiB1cGRhdGUgYXMNCj4gPj4gYW4NCj4gPj4+IG9mZmxvYWQN Cj4gPj4+DQo+ID4+PiAwOC8xMS8yMDE5IDExOjQyLCBBbmRyZXcgUnliY2hlbmtvOg0KPiA+Pj4+ IE9uIDExLzgvMTkgMToyOCBQTSwgVGhvbWFzIE1vbmphbG9uIHdyb3RlOg0KPiA+Pj4+PiAwOC8x MS8yMDE5IDA5OjM1LCBBbmRyZXcgUnliY2hlbmtvOg0KPiA+Pj4+Pj4gVGhlIHByb2JsZW06DQo+ ID4+Pj4+PiB+fn5+fn5+fn5+fn4NCj4gPj4+Pj4+IFBNRCB3YW50cyB0byBrbm93IGJlZm9yZSBw b3J0IHN0YXJ0IGlmIGFwcGxpY2F0aW9uIHdhbnRzIHRvIHRvIHVzZQ0KPiA+Pj4+Pj4gZmxvdyBN QVJLL0ZMQUcgaW4gdGhlIGZ1dHVyZS4gSXQgaXMgcmVxdWlyZWQgYmVjYXVzZToNCj4gPj4+Pj4+ DQo+ID4+Pj4+PiAxLiBIVyBtYXkgYmUgY29uZmlndXJlZCBpbiBhIGRpZmZlcmVudCB3YXkgdG8g cmVzZXJ2ZSByZXNvdXJjZXMNCj4gPj4+Pj4+ICAgIGZvciBNQVJLL0ZMQUcgZGVsaXZlcnkNCj4g Pj4+Pj4+DQo+ID4+Pj4+PiAyLiBEYXRhcGF0aCBpbXBsZW1lbnRhdGlvbiBjaG9pY2UgbWF5IGRl cGVuZCBvbiBpdCAoZS5nLiB2UE1EDQo+ID4+Pj4+PiAgICBpcyBmYXN0ZXIsIGJ1dCBkb2VzIG5v dCBzdXBwb3J0IE1BUkspDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoYW5rIHlvdSBmb3IgdGhlIGNsZWFy IHByb2JsZW0gc3RhdGVtZW50Lg0KPiA+Pj4+PiBJIGFncmVlIHdpdGggaXQuIFRoaXMgaXMgYSBy ZWFsIGRlc2lnbiBpc3N1ZS4NCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4+IERpc2N1c3NlZCBz b2x1dGlvbnM6DQo+ID4+Pj4+PiB+fn5+fn5+fn5+fn5+fn5+fn5+fg0KPiA+Pj4+DQo+ID4+Pj4g TWF5IGJlIGl0IGlzIG5vdCAxMDAlIGNsZWFyIHNpbmNlIGJlbG93IGFyZSBhbHRlcm5hdGl2ZXMu DQo+ID4+Pj4NCj4gPj4+Pj4+IEEuIEV4cGxpY2l0IFJ4IG9mZmxvYWQgc3VnZ2VzdGVkIGJ5IHRo ZSBwYXRjaC4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBCLiBJbXBsaWNpdCBieSB2YWxpZGF0aW9uIG9m IGEgZmxvdyBydWxlIHdpdGggTUFSSy9GTEFHIGFjdGlvbnMgdXNlZC4NCj4gPj4+Pj4+DQo+ID4N Cj4gPiBJIGRvbuKAmXQgYWdyZWUgdGhhdCB0aGlzIG1ldGhvZCBpcyBpbXBsaWNpdCBpdCBpcyBx dWl0IGV4cGxpY2l0LCBkbyB3ZSBzdXBwb3J0IGl0IGluDQo+IFBNRA0KPiA+IHdpdGggdGhlIHVz ZSBjYXNlIG9yIG5vdC4gU291bmQgdmVyeSBleHBsaWNpdC4gWW91IGNhbiBhcmd1ZSB0aGF0IHRo ZSBQTUQNCj4gdXNlcw0KPiA+IHZhbGlkYXRpb24gZmxvdyB0byB1bmRlcnN0YW5kIHRoYXQgaXQg bmVlZCB0byBzdXBwb3J0IE1BUkssIGJ1dCBmcm9tDQo+IGV2ZXJ5IHBlcnNwZWN0aXZlDQo+ID4g aXQgaXMgbW9yZSBjb3JyZWN0IC4gd2hhdCBkb2VzIGl0IG1lYW4gaWYgdGhlIGFwcGxpY2F0aW9u IGVuYWJsZWQgbWFyayBhbmQNCj4gbmV2ZXIgZG93bmxvYWQgYSBmbG93Pw0KPiANCj4gSXQgaXMg aW1wbGljaXQgZnJvbSBQTUQgcG9pbnQgb2Ygdmlldywgc2luY2UgdGhlcmUgaXMgbm8gY29tbWFu ZA0KPiB0byBlbmFibGUgaXQuIFRoZSBkZWNpc2lvbiB0byBlbmFibGUgaXMgdGhlIHJlc3VsdCBv ZiBzZWVuDQo+IGF0dGVtcHQgdG8gdmFsaWRhdGUgbWFyay4gSWYgZmV3IHJ1bGVzIGFyZSB2YWxp ZGF0ZWQsIGJ1dCBhbg0KPiBhcHBsaWNhdGlvbiBkZWNpZGVzIHRvIGhhdmUgaXQgZGlzYWJsZWQg ZmluYWxseSwgaG93IHRvIGFjaGlldmUgaXQ/DQo+IExhc3QgdmFsaWRhdGlvbiBhdHRlbXB0IHdp bnM/DQo+IE90aGVyIHBvaW50cyBhcmUgY292ZXJlZCBieSAoNikgYmVsb3cuDQo+IA0KPiA+Pj4+ Pj4gQy4gVXNlIGR5bmFtaWMgZmllbGQvZmxhZyAoaS5lLiBhcHBsaWNhdGlvbiByZWdpc3RlcnMg ZHluYW1pYyBmaWVsZA0KPiA+Pj4+Pj4gICAgYW5kL29yIGZsYWcgYW5kIFBNRCB1c2VzIGxvb2t1 cCB0byBzb2x2ZSB0aGUgcHJvYmxlbSkgcGx1cyBwYXJ0DQo+ID4+Pj4+PiAgICBvZiAoQikgdG8g ZGlzY292ZXIgaWYgYSBmZWF0dXJlIGlzIHN1cHBvcnRlZC4NCj4gPj4+Pj4NCj4gPj4+Pj4gVGhl IGR5bmFtaWMgZmllbGQgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgdmlhIGEgbmV3IEFQSSBmdW5jdGlv biBuYW1lZA0KPiA+Pj4+PiAnPGZlYXR1cmU+X2luaXQnLg0KPiA+Pj4+PiBJdCBtZWFucyB0aGUg YXBwbGljYXRpb24gbXVzdCBleHBsaWNpdCByZXF1ZXN0IHRoZSBmZWF0dXJlLg0KPiA+Pj4+PiBJ IGFncmVlIHRoaXMgaXMgdGhlIHdheSB0byBnby4NCj4gPj4+Pg0KPiA+Pj4+IElmIEkgdW5kZXJz dGFuZCB5b3VyIHN0YXRlbWVudCBjb3JyZWN0bHksIGJ1dCAoQykgaXMgbm90IGlkZWFsIHNpbmNl DQo+ID4+Pj4gaXQgbG9va3MgZ2xvYmFsLiBJZiByZWdpc3RlcmVkIGR5bmFtaWMgZmllbGQgb2Yg bWJ1ZiBhbmQgaXMgZmxhZyB0aGF0DQo+ID4+Pj4gdGhlIGZlYXR1cmUgc2hvdWxkIGJlIGVuYWJs ZWQsIGl0IGlzIGEgZmxhZyB0byBhbGwgcG9ydHMvZGV2aWNlcy4NCj4gPj4+Pg0KPiA+Pj4+Pj4g QWxsIHNvbHV0aW9ucyByZXF1aXJlIGNoYW5nZXMgaW4gYXBwbGljYXRpb25zIHdoaWNoIHVzZSB0 aGVzZQ0KPiA+Pj4+Pj4gZmVhdHVyZXMuIFRoZXJlIGlzIGEgZGVwcmVjYXRpb24gbm90aWNlIGlu IHBsYWNlIHdoaWNoIGFkdmVydGlzZXMNCj4gPj4+Pj4+IERFVl9SWF9PRkZMT0FEX0ZMT1dfTUFS SyBhZGRpdGlvbiwgYnV0IG1heSBiZSBpdCBpcyBPSyB0bw0KPiA+Pj4+Pj4gc3Vic3RpdHV0ZSBp dCB3aXRoIHNvbHV0aW9uIChCKSBvciAoQykuIFNvbHV0aW9uIChDKSByZXF1aXJlcw0KPiA+Pj4+ Pj4gY2hhbmdlcyBzaW5jZSBpdCBzaG91bGQgYmUgY29tYmluZWQgd2l0aCAoQikgaW4gb3JkZXIg dG8gdW5kZXJzdGFuZA0KPiA+Pj4+Pj4gaWYgdGhlIGZlYXR1cmUgaXMgc3VwcG9ydGVkLg0KPiA+ Pj4+Pg0KPiA+Pj4+PiBJIGRvbid0IHVuZGVyc3RhbmQuDQo+ID4+Pj4+IEFwcGxpY2F0aW9uIHJl cXVlc3QgYW5kIFBNRCBzdXBwb3J0IGFyZSB0d28gZGlmZmVyZW50IHRoaW5ncy4NCj4gPj4+Pj4g UE1EIHN1cHBvcnQgbXVzdCBiZSB2aWEgcnRlX2Zsb3cgdmFsaWRhdGlvbiBvbiBhIGNhc2UgYnkg Y2FzZQ0KPiBhbnl3YXkuDQo+ID4+Pj4NCj4gPj4+PiBJIG1lYW4gdGhhdCBhcHBsaWNhdGlvbiB3 YW50cyB0byB1bmRlcnN0YW5kIGlmIHRoZSBmZWF0dXJlIGlzDQo+ID4+Pj4gc3VwcG9ydGVkLiBU aGVuLCBpdCB3YW50cyB0byBlbmFibGUgaXQuIEluIHRoZSBjYXNlIG9mIChCKSwgaWYgSQ0KPiA+ Pj4+IHVuZGVyc3RhbmQgdGhlIHNvbHV0aW9uIGNvcnJlY3RseSwgdGhlcmUgaXMgbm8gZXhwbGlj aXQgd2F5IHRvIGVuYWJsZSwNCj4gPj4+PiBQTUQganVzdCBkZXRlY3RzIGl0IGJlY2F1c2Ugb2Yg ZGlzY292ZXJ5IGlzIGRvbmUgKHRoYXQncyB3aGF0IEkgbWVhbg0KPiA+Pj4+IGJ5ICJpbXBsaWNp dCIgYW5kIGl0IGlzIGEgZHJhd2JhY2sgZnJvbSBteSBwb2ludCBvZiB2aWV3LCBidXQgc3RpbGwN Cj4gPj4+PiBjb3VsZCBiZSBjb25zaWRlcmVkKS4gKEMpIHNvbHZlcyB0aGUgcHJvYmxlbSBvZiAo QikuDQo+ID4+Pj4NCj4gPj4+Pj4+IEFkdmFudGFnZXMgYW5kIGRyYXdiYWNrcyBvZiBzb2x1dGlv bnM6DQo+ID4+Pj4+PiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fg0KPiA+ Pj4+Pj4gMS4gVGhlIG1haW4gZHJhd2JhY2sgb2YgKEEpIGlzIGEgImR1cGxpY2F0aW9uIiBzaW5j ZSB3ZSBhbHJlYWR5DQo+ID4+Pj4+PiAgICBoYXZlIGEgd2F5IHRvIHJlcXVlc3QgZmxvdyBNQVJL IHVzaW5nIHJ0ZV9mbG93IEFQSS4NCj4gPj4+Pj4+ICAgIEkgZG9uJ3QgZnVsbHkgYWdyZWUgdGhh dCBpdCBpcyBhIGR1cGxpY2F0aW9uLCBidXQgSSBhZ3JlZQ0KPiA+Pj4+Pj4gICAgdGhhdCBpdCBz b3VuZHMgbGlrZSBkdXBsaWNhdGlvbiBhbmQgY29tcGxpY2F0ZXMgYSBiaXQgZmxvdw0KPiA+Pj4+ Pj4gICAgTUFSSyB1c2FnZSBieSBhcHBsaWNhdGlvbnMuIChCKSBjb21wbGljYXRlcyBpdCBhcyB3 ZWxsLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IDIuIE9uZSBtb3JlIGRyYXdiYWNrIG9mIHRoZSBzb2x1 dGlvbiAoQSkgaXMgdGhlIG5lY2Vzc2l0eSBvZg0KPiA+Pj4+Pj4gICAgc2ltaWxhciBzb2x1dGlv biBmb3IgTUVUQSBhbmQgaXQgZWF0cyBvbmUgbW9yZSBvZmZsb2FkIGJpdC4NCj4gPj4+Pj4+ICAg IFllcywgdGhhdCdzIHRydWUgYW5kIEkgdGhpbmsgaXQgaXMgbm90IGEgcHJvYmxlbS4NCj4gPj4+ Pj4+ICAgIEl0IHdvdWxkIG1ha2UgaXQgZWFzaWVyIGZvciBhcHBsaWNhdGlvbnMgdG8gZmluZCBv dXQgaWYNCj4gPj4+Pj4+ICAgIGVpdGhlciBNQVJLIG9yIE1FVEEgaXMgc3VwcG9ydGVkLg0KPiA+ Pj4+Pj4NCj4gPj4+Pj4+IDMuIFRoZSBtYWluIGFkdmFudGFnZSBvZiB0aGUgc29sdXRpb24gKEEp IGlzIHNpbXBsaWNpdHkuDQo+ID4+Pj4+PiAgICBJdCBpcyBzaW1wbGUgZm9yIGFwcGxpY2F0aW9u IHRvIHVuZGVyc3RhbmQgaWYgaXQgc3VwcG9ydGVkLg0KPiA+Pj4+Pj4gICAgSXQgaXMgc2ltcGxl IGluIFBNRCB0byB1bmRlcnN0YW5kIHRoYXQgaXQgaXMgcmVxdWlyZWQuDQo+ID4+Pj4+PiAgICBJ dCBpcyBzaW1wbGUgdG8gZGlzYWJsZSBpdCAtIGp1c3QgcmVjb25maWd1cmUuDQo+ID4+Pj4+PiAg ICBBbHNvIGl0IGlzIGVhc2llciB0byBkb2N1bWVudCBpdCAtIGp1c3QgbWVudGlvbiB0aGF0DQo+ ID4+Pj4+PiAgICB0aGUgb2ZmbG9hZCBzaG91bGQgYmUgc3VwcG9ydGVkIGFuZCBlbmFibGVkLg0K PiA+Pj4+Pj4NCj4gPg0KPiA+IFRoaXMgaXMgbm90IHRydWUsIGZvciBleGFtcGxlIHRoZSBQTUQg c3VwcG9ydCBNYXJrIG9ubHkgaW4gTmljIG1vZGUNCj4gPiBXaGlsZSB0aGUgYXBwbGljYXRpb24g bmVlZHMgRS1Td2l0Y2ggdGhlbiB0aGUgUE1EIHJlcG9ydHMgaW5jb3JyZWN0bHkuDQo+ID4gT3Ig Zm9yIGV4YW1wbGUgaWYgdGhlIG1hcmsgaXMgc3VwcG9ydGVkIG9ubHkgYXMgb25seSBhY3Rpb24s IGFuZCB0aGUNCj4gYXBwbGljYXRpb24gbmVlZHMNCj4gPiBkZWNhcCBhbmQgbWFyay4gdGhpcyBt ZWFucyB0aGF0IHRoZSB1c2VyIHdpbGwgbmV2ZXIgYmUgYWJsZSB0byB1c2UgdGhlDQo+IG1hcmsN Cj4gPiBzbyB0aGUgUE1EIHVzZXMgc2xvd2VyIFJ4IGZ1bmN0aW9uIHdpdGhvdXQgdGhlIG1hcmsg ZXZlciBiZWluZyB1c2VkLg0KPiANCj4gSXQgaXMgY292ZXJlZCBieSAoNikgYmVsb3cuDQo+IA0K PiA+Pj4+Pj4gNC4gVGhlIG1haW4gYWR2YW50YWdlIG9mIHRoZSBzb2x1dGlvbiAoQikgaXMgbm8g ImR1cGxpY2F0aW9uIi4NCj4gPj4+Pj4+ICAgIEkgYWdyZWUgdGhhdCBpdCBpcyB2YWxpZCBhcmd1 bWVudC4gU29sdmluZyB0aGUgcHJvYmxlbQ0KPiA+Pj4+Pj4gICAgd2l0aG91dCBleHRyYSBlbnRp dGllcyBpcyBhbHdheXMgbmljZSwgYnV0IHVuZm9ydHVuYXRlbHkNCj4gPj4+Pj4+ICAgIGl0IGlz IHRvbyBjb21wbGV4IGluIHRoaXMgY2FzZS4NCj4gPj4+Pj4+DQo+ID4NCj4gPiBZb3UgZm9yZ290 IGEgb25lIG1vcmUgdmVyeSBpbXBvcnRhbnQgcmVhc29uLCB0aGUgZmFjdCB0aGF0IHRoZSBtYXJr DQo+ID4gbWF5IGJlIHN1cHBvcnRlZCBvbmx5IG9uIHNvbWUgZmxvd3MuIFNvIGlmIHRoZSB1c2Vy IG5lZWRzIG1hcmsgd2l0aA0KPiBkZWNhcA0KPiA+IGFuZCB0aGlzIGNvbWJpbmF0aW9uIGlzIG5v dCBzdXBwb3J0ZWQgdGhlIHVzZXIgd2lsbCBuZXZlciB3ZSBhYmxlIHRvIHVzZQ0KPiBtYXJrDQo+ ID4gd2hpbGUgdXNpbmcgbWFyayBSeCBmdW5jdGlvbi4gU28geW91IGdldCBzbG93IGRhdGEgcGF0 aCB3aXRoIG5vIGFiaWxpdHkgdG8NCj4gdXNlIGl0Lg0KPiANCj4gQWdhaW4sIHNlZSAoNikgYmVs b3cuDQo+IA0KPiA+Pj4+Pj4gNS4gVGhlIG1haW4gZHJhd2JhY2sgb2YgdGhlIHNvbHV0aW9uIChC KSBpcyB0aGUgY29tcGxleGl0eS4NCj4gPj4+Pj4+ICAgIEl0IGlzIG5lY2Vzc2FyeSB0byBjaG9v c2UgYSBmbG93IHJ1bGUgd2hpY2ggc2hvdWxkIGJlIHVzZWQNCj4gPj4+Pj4+ICAgIGFzIGEgY3Jp dGVyaWEuIEl0IGNvdWxkIGJlIGhhcmR3YXJlIGRlcGVuZGVudC4NCj4gPj4+Pj4+ICAgIENvbXBs ZXggbG9naWMgaXMgcmVxdWlyZSBpbiBQTUQgaWYgaXQgd2FudHMgdG8gYWRkcmVzcyB0aGUNCj4g Pj4+Pj4+ICAgIHByb2JsZW0gYW5kIGNvbnRyb2wgTUFSSyBkZWxpdmVyeSBiYXNlZCBvbiB2YWxp ZGF0ZWQgZmxvdw0KPiA+Pj4+Pj4gICAgcnVsZXMuIEl0IGFkZHMgZGVwZW5kZW5jeSBiZXR3ZWVu IHN0YXJ0L3N0b3AgcHJvY2Vzc2luZyBhbmQNCj4gPj4+Pj4+ICAgIGZsb3cgcnVsZXMgdmFsaWRh dGlvbiBjb2RlLg0KPiA+Pj4+Pj4gICAgSXQgaXMgcHJldHR5IGNvbXBsaWNhdGVkIHRvIGRvY3Vt ZW50IGl0Lg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IDYuIFVzZWxlc3MgZW5hYmxpbmcgb2YgdGhlIG9m ZmxvYWQgaW4gdGhlIGNhc2Ugb2Ygc29sdXRpb24gKEEpDQo+ID4+Pj4+PiAgICBpZiByZWFsbHkg dXNlZCBmbG93IHJ1bGVzIGRvIG5vdCBzdXBwb3J0IE1BUksgbG9va3MgbGlrZQ0KPiA+Pj4+Pj4g ICAgZHJhd2JhY2sgYXMgd2VsbCwgYnV0IGVhc2lseSBtaXRpZ2F0ZWQgYnkgYSBjb21iaW5hdGlv bg0KPiA+Pj4+Pj4gICAgd2l0aCBzb2x1dGlvbiAoQikgYW5kIG9ubHkgcmVxdWlyZWQgaWYgdGhl IGFwcGxpY2F0aW9uIHdhbnRzDQo+ID4+Pj4+PiAgICB0byBkaXZlIGluIHRoZSBsZXZlbCBvZiBv cHRpbWl6YXRpb24gYW5kIGNvbXBsZXhpdHkgYW5kDQo+ID4+Pj4+PiAgICBtYWtlcyBzZW5zZSBp ZiBhcHBsaWNhdGlvbiBrbm93cyByZXF1aXJlZCBmbG93IHJ1bGVzIGluDQo+ID4+Pj4+PiAgICBh ZHZhbmNlLiBTbywgaXQgaXMgbm90IGEgcHJvYmxlbSBpbiB0aGlzIGNhc2UuDQo+ID4+Pj4+Pg0K PiA+Pj4+Pj4gNy4gU29sdXRpb24gKEMpIGhhcyBkcmF3YmFja3Mgb2YgdGhlIHNvbHV0aW9uIChC KSBmb3INCj4gPj4+Pj4+ICAgIGFwcGxpY2F0aW9ucyB0byB1bmRlcnN0YW5kIGlmIHRoZXNlIGZl YXR1cmVzIGFyZSBzdXBwb3J0ZWQsDQo+ID4+Pj4+PiAgICBidXQgbm8gZHJhd2JhY2tzIGluIFBN RCwgc2luY2UgZXhwbGljaXQgY3JpdGVyaWEgaXMgdXNlZCB0bw0KPiA+Pj4+Pj4gICAgZW5hYmxl L2Rpc2FibGUgKGR5bmFtaWMgZmllbGQvZmxhZyBsb29rdXApLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+ IDguIFNvbHV0aW9uIChDKSBpcyBuaWNlIHNpbmNlIGl0IGF2b2lkcyAiZHVwbGljYXRpb24iLg0K PiA+Pj4+Pj4NCj4gPj4+Pj4+IDkuIFRoZSBtYWluIGRyYXdiYWNrIG9mIHRoZSBzb2x1dGlvbiAo QykgaXMgYXN5bW1ldHJ5Lg0KPiA+Pj4+Pj4gICAgQXMgaXQgd2FzIGRpc2N1c3NlZCBpbiB0aGUg Y2FzZSBvZiBSWF9USU1FU1RBTVANCj4gPj4+Pj4+ICAgIChpZiBJIHJlbWVtYmVyIGl0IGNvcnJl Y3RseSk6DQo+ID4+Pj4+PiAgICAgLSBQTUQgYWR2ZXJ0aXNlcyBSWF9USU1FU1RBTVAgb2ZmbG9h ZCBjYXBhYmlsaXR5DQo+ID4+Pj4+PiAgICAgLSBhcHBsaWNhdGlvbiBlbmFibGVzIHRoZSBvZmZs b2FkDQo+ID4+Pj4+PiAgICAgLSBQTUQgcmVnaXN0ZXJzIGR5bmFtaWMgZmllbGQgZm9yIHRpbWVz dGFtcA0KPiA+Pj4+Pj4gICAgU29sdXRpb24gKEMpOg0KPiA+Pj4+Pj4gICAgICAtIFBNRCBhZHZl cnRpc2VzIG5vdGhpbmcNCj4gPj4+Pj4+ICAgICAgLSBhcHBsaWNhdGlvbiB1c2VzIHNvbHV0aW9u IChCKSB0byB1bmRlcnN0YW5kIGlmDQo+ID4+Pj4+PiAgICAgICAgdGhlc2UgZmVhdHVyZXMgYXJl IHN1cHBvcnRlZA0KPiA+Pj4+Pj4gICAgICAtIGFwcGxpY2F0aW9uIHJlZ2lzdGVycyBkeW5hbWlj IGZpZWxkL2ZsYWcNCj4gPj4+Pj4+ICAgICAgLSBQTUQgZG9lcyBsb29rdXAgYW5kIHNvbHZlIHRo ZSBwcm9ibGVtDQo+ID4+Pj4+PiAgICBUaGUgYXN5bW1ldHJ5IGNvdWxkIGJlIHBhcnRpYWxseSBt aXRpZ2F0ZWQgaWYgUlhfVElNRVNUQU1QDQo+ID4+Pj4+PiAgICBzb2x1dGlvbiBpcyBjaGFuZ2Vk IHRvIHJlcXVpcmUgYW4gYXBwbGljYXRpb24gdG8gcmVnaXN0ZXINCj4gPj4+Pj4+ICAgIGR5bmFt aWMgZmllbGRzIGFuZCBQTUQgdG8gZG8gbG9va3VwIGlmIHRoZSBvZmZsb2FkIGlzDQo+ID4+Pj4+ PiAgICBlbmFibGVkLiBTbywgdGhlIG9ubHkgZGlmZmVyZW5jZSB3aWxsIGJlIGluIG5vIG9mZmxv YWQNCj4gPj4+Pj4+ICAgIGluIHRoZSBjYXNlIG9mIGZsb3cgTUFSSy9GTEFHIGFuZCB1c2FnZSBv ZiBjb21wbGV4IGxvZ2ljDQo+ID4+Pj4+PiAgICB0byB1bmRlcnN0YW5kIGlmIGl0IGlzIHN1cHBv cnRlZCBvciBuby4NCj4gPj4+Pj4+ICAgIE1heSBiZSBpdCB3b3VsZCBiZSByZWFsbHkgZ29vZCBz aW5jZSBpdCB3aWxsIGFsbG93IHRvDQo+ID4+Pj4+PiAgICBoYXZlIGR5bmFtaWMgZmllbGRzIHJl Z2lzdGVyZWQgYmVmb3JlIG1lbXBvb2wgcG9wdWxhdGlvbi4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiAx MC4gQ29tbW9uIGRyYXdiYWNrIG9mIHNvbHV0aW9ucyAoQikgYW5kIChDKSBpcyBubyBncmFudWxh cml0eS4NCj4gPj4+Pj4+ICAgICBTb2x1dGlvbiAoQSkgbWF5IGJlIHBlciBxdWV1ZSB3aGlsZSAo QikgYW5kIChDKSBjYW5ub3QgYmUNCj4gPj4+Pj4+ICAgICBwZXIgcXVldWUuIE1vcmVvdmVyIChD KSBsb29rcyBnbG9iYWwgLSBmb3IgYWxsIGRldmljZXMuDQo+ID4+Pj4+PiAgICAgSXQgY291bGQg YmUgcmVhbGx5IHBhaW5mdWwuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gKEMpIGlzIG5pY2UsIGJ1dCBJ IHN0aWxsIHZvdGUgZm9yIHNpbXBsaWNpdHkgYW5kIGdyYW51bGFyaXR5IG9mDQo+ID4+Pj4+PiAo QSkuDQo+ID4+Pj4+DQo+ID4+Pj4+IEkgdm90ZSBmb3IgY2xlYXIgc2VwYXJhdGlvbiBvZiBhcHBs aWNhdGlvbiBuZWVkcyBhbmQgUE1EIHN1cHBvcnQsIGJ5DQo+ID4+Pj4+IHVzaW5nIHRoZSBtZXRo b2QgQyAoZHluYW1pYyBmaWVsZHMpLg0KPiA+Pj4+PiBJIGFncmVlIHRpbWVzdGFtcCBtdXN0IHVz ZSB0aGUgc2FtZSBwYXRoLg0KPiA+Pj4+PiBJIGFncmVlIGl0J3MgY29tcGxpY2F0ZSBiZWNhdXNl IHdlIGRvbid0IGtub3cgaW4gYWR2YW5jZSB3aGV0aGVyIGENCj4gPj4+Pj4gZmxvdyBydWxlIHdp bGwgYmUgYWNjZXB0ZWQsIGJ1dCB0aGF0J3MgdGhlIHJlYWxpdHksIGNvbmZpZyBpcyBjb21wbGV4 Lg0KPiA+Pj4+DQo+ID4+Pj4gRG8geW91IHRoaW5rIHRoYXQgZ2xvYmFsIG5hdHVyZSBvZiB0aGUg KEMpIGlzIGFjY2VwdGFibGU/DQo+ID4+Pg0KPiA+Pj4gVGhhdCdzIGEgZ29vZCBxdWVzdGlvbi4N Cj4gPj4+IE1heWJlIHRoZSBmZWF0dXJlIHJlcXVlc3Qgc2hvdWxkIGJlIHBlciBwb3J0Lg0KPiA+ Pj4gSW4gdGhpcyBjYXNlLCB3ZSBhcmUgYmFjayB0byBzb2x1dGlvbiBBIHdpdGggYSBmbGFnIHBl ciBwb3J0Pw0KPiA+Pj4NCj4gPj4+IE5vdGUgdGhhdCBBIGFuZCBDIHdpbGwgbm90IGd1YXJhbnRl ZSB0aGF0IHRoZSBvZmZsb2FkIHdpbGwgYmUgcG9zc2libGUuDQo+ID4+PiBXZSBuZWVkIEIgKGZs b3cgcnVsZSB2YWxpZGF0aW9uKSBhbnl3YXkuDQo+ID4+DQo+ID4+IEkgbWF5IG5vdCB1bmRlcnN0 YW5kIGhvdyBzb2x1dGlvbiBCIGNhbiB3b3JrcyB3ZWxsIGZvciBhbGwgdGhlIGNhc2VzLg0KPiA+ Pg0KPiA+DQo+ID4gVGhhdCBpcyB0aGUgcG9pbnQgb2Ygc29sdXRpb24gQiBpdCBhbHdheXMgd29y aywgaXQgaXMgYSBiaXQgaGFyZGVyIHRvIHVzZSBtYXliZSwNCj4gPiBidXQgeW91IGNhbiBjaGVj ayBhbmQgZGVjaWRlIGV2ZXJ5dGhpbmcuDQo+ID4NCj4gPj4gQSBydGVfZmxvdyBydWxlIGNhbiBi ZSBpc3N1ZWQgYWZ0ZXIgZGV2X3N0YXJ0LCB3aGljaCBtZWFucyB0aGUgcnhfYnVyc3QNCj4gPj4g ZnVuY3Rpb24gaXMgYWxyZWFkeSBzZWxlY3RlZCBhdCB0aGF0IHRpbWUsDQo+ID4+IHNvIGRvZXMg dGhhdCBtZWFuIHRoZSBkcml2ZXIgbmVlZCB0byBzd2l0Y2ggZnJvbSBhIG5vbi0gbWFyayBvZmZs b2FkDQo+IGF3YXJlDQo+ID4+IHBhdGggdG8gYSBtYXJrIG9mZmxvYWQgYXdhcmUgcGF0aCB3aXRo b3V0IHN0b3AgZGV2aWNlPyBvciBpdCBoYXMgdG8gcmVqZWN0DQo+IHRoZQ0KPiA+PiBmbG93Pw0K PiA+PiBUaGUgcXVlc3Rpb24gaXMgaWYgd2UgaGF2ZSAyIGRhdGEgcGF0aCwgb25lIHN1cHBvcnQg c29tZSBvZmZsb2FkICwgb25lDQo+IG5vdA0KPiA+PiBidXQgbW9yZSBmYXN0LCB3aGljaCBvbmUg c2hvdWxkIGJlIHNlbGVjdGVkIGR1cmluZyBkZXZfc3RhcnQ/IElzbid0DQo+IE9mZmxvYWQNCj4g Pj4gd2lkZWx5IHVzZWQgdG8gc29sdmUgdGhpcyBwcm9ibGVtPw0KPiA+Pg0KPiA+PiBJIHRoaW5r IHRoZSBvcHRpb24gQSBzb2x2ZSBhbGwgdGhlIHByb2JsZW1zLCBvcHRpb24gQyBtaWdodCBhbHNv IHdvcmtzLCBidXQNCj4gQSBpcw0KPiA+PiBsb29rcyBtdWNoIHN0cmFpZ2h0Zm9yd2FyZCBmb3Ig bWUuDQo+ID4+DQo+ID4NCj4gPiBTb2x1dGlvbiBBIG15IHJlc3VsdCBpbiBzZWxlY3RpbmcgaW5j b3JyZWN0IGRhdGFwYXRoICBwbGVhc2Ugc2VlIG15IGFuc3dlcg0KPiBhYm92ZS4NCj4gPg0KPiA+ IEFzIHlvdSBjYW4gZ3Vlc3MgSSdtIGluIGZhdm9yIG9mIEIgYW5kIEMgKEMgbmVlZCBCKQ0KPiA+ DQo+ID4+IFJlZ2FyZHMNCj4gPj4gUWkNCj4gPj4NCj4gPj4NCj4gPj4+DQo+ID4+PiBJdCBzZWVt cyBBLCBCLCBDIGFyZSBub3QgYWx0ZXJuYXRpdmVzIGJ1dCBhbGwgcmVxdWlyZWQgYXMgcGllY2Vz IG9mIGENCj4gcHV6emxlLi4uDQo+ID4+Pg0KPiA+DQoNCg==