From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0047.outbound.protection.outlook.com [104.47.36.47]) by dpdk.org (Postfix) with ESMTP id 2406728EE for ; Thu, 30 Nov 2017 12:13:04 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=d+UeySut0QxWsznFdLeZt1gTr2bK3EQgYLvH48T/Cb8=; b=iYn7r41EwDXBcx1AYslf/BmlibemzGimyKyD7JLK4UZiaCgVUGXdGncQt21Rm3nSe+JqnDl0BRKk+agK1AdewIyGB0h81sfUc4poeepx+CMAHsYCOee4YSrxgi4iB61gEP46h9pY1yp5zBVjnt940E/dvwrlVOxL7btEm4TKEyY= Received: from BY1PR0701MB1111.namprd07.prod.outlook.com (10.160.104.21) by CO2PR0701MB1063.namprd07.prod.outlook.com (10.160.8.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.260.4; Thu, 30 Nov 2017 11:13:01 +0000 Received: from BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::c184:ee9b:3c4c:c97c]) by BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::c184:ee9b:3c4c:c97c%14]) with mapi id 15.20.0260.007; Thu, 30 Nov 2017 11:13:00 +0000 From: "Verma, Shally" To: "Trahe, Fiona" , "dev@dpdk.org" CC: "Athreya, Narayana Prasad" , "Challa, Mahipal" Thread-Topic: [RFC v1] doc compression API for DPDK Thread-Index: AdNpzBSo1ZjDhxTcR46UpkXBh0QrkQ== Date: Thu, 30 Nov 2017 11:13:00 +0000 Message-ID: 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=Shally.Verma@cavium.com; x-originating-ip: [14.140.2.178] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CO2PR0701MB1063; 6:MSd0V0M2WAoJx36tLeQ7SILbmE1W30ng/BmtFGvJipM+fxdC+wfyEXKTNbaOs7mxC1zaYU63AFxGWXGMRSfW93zCy9ilR0u4YSEoEZevblzbvl4jbIZ9m2+8e9xsUxgHbrFj4FU1TCRGM9GyoptNumKJpcAL9Cewn6Gvb8bYbijhvGRu4AP7kOqOZeAylj5j2i5W4xkAxc11b1vy2IH1jT2SHs7SU+r/ZOZPmFiTqTpmcBJj2hZ48/GyetygDOmknolowN+1Ezb0Gx5glunIpv9pjBdTKUveFdhs3dWGuTaZoxB54kxjVj/P4Qq6iIqtjNr1mMYVmrqKClg3GWMCKibtI/6I11+nukKrIRNC4vI=; 5:kwJVUttzLIyrl1ngYzdTHoUSXa4qiXsucpZJtOuAsu3ZfibQfyF2vqHx8ctqbr8A1zMDZGYReyQxRQbhpu/ZyX/CkmCG8vWyJKyQjB9bbJ9IPdV/2R1RaM5AgpINJHtp5qVyILHIiwRSMcqsOVcRRUjCEiNoV4jaGAW7Gaxh5uo=; 24:VeJUoET52AGcYy0cV1tnZmbAnvWCZFrlo6TJscgYWDmvasKiOSQG53IJkZT7nOSkmueCGOHCurOKVf5FIEHyF/zgGGrl69yoVb7R9c1BQTU=; 7:goQgWR0XwDy+e2qMNN8Fz9dVcmxL03f4vDJO3IeUvzXrn+fVUB23A+tGX8Iu8qURryU/Fpy74GiQFOHeSX8SRTfSBWb588YB0KthzR8qDy2k1OoIeD5zaL0gc3mFsKoaqIBLi1fJ/GXVuD43HZxFcu3XOzeGB6fH3wEQWYcL7avAr3t8faOr27ttZqzFhvkSxWX5+YHyRuNVMy6+bOarf6ZnV2kE51tEaiU9/kqJIZt6uU66/bpmgpQohkv9Jnz5 x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(6009001)(366004)(346002)(376002)(189002)(13464003)(199003)(102836003)(2501003)(7736002)(55016002)(6246003)(561944003)(5660300001)(107886003)(6116002)(53376002)(3846002)(6506006)(9686003)(33656002)(6306002)(4326008)(54906003)(68736007)(316002)(2906002)(53946003)(110136005)(3660700001)(86362001)(478600001)(54356010)(50986010)(229853002)(8936002)(8676002)(305945005)(72206003)(6436002)(1720100001)(14454004)(74316002)(81156014)(81166006)(3280700002)(66066001)(189998001)(2900100001)(966005)(106356001)(99286004)(105586002)(97736004)(53546010)(5250100002)(25786009)(53936002)(55236003)(7696005)(101416001)(5890100001); DIR:OUT; SFP:1101; SCL:1; SRVR:CO2PR0701MB1063; H:BY1PR0701MB1111.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; x-ms-office365-filtering-correlation-id: ea4fd86c-8d71-43cb-43be-08d537e35183 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(2017052603285); SRVR:CO2PR0701MB1063; x-ms-traffictypediagnostic: CO2PR0701MB1063: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(278428928389397)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231022)(6041248)(20161123560025)(20161123564025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148)(201708071742011); SRVR:CO2PR0701MB1063; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CO2PR0701MB1063; x-forefront-prvs: 05079D8470 received-spf: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-Network-Message-Id: ea4fd86c-8d71-43cb-43be-08d537e35183 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Nov 2017 11:13:00.6047 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR0701MB1063 Subject: Re: [dpdk-dev] [RFC v1] doc compression API for DPDK 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: Thu, 30 Nov 2017 11:13:05 -0000 SEkgRmlvbmENCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBUcmFoZSwg RmlvbmEgW21haWx0bzpmaW9uYS50cmFoZUBpbnRlbC5jb21dDQo+IFNlbnQ6IDI4IE5vdmVtYmVy IDIwMTcgMDA6MjUNCj4gVG86IFZlcm1hLCBTaGFsbHkgPFNoYWxseS5WZXJtYUBjYXZpdW0uY29t PjsgZGV2QGRwZGsub3JnOyBBdGhyZXlhLA0KPiBOYXJheWFuYSBQcmFzYWQgPE5hcmF5YW5hUHJh c2FkLkF0aHJleWFAY2F2aXVtLmNvbT47IENoYWxsYSwgTWFoaXBhbA0KPiA8TWFoaXBhbC5DaGFs bGFAY2F2aXVtLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJsbw0KPiA8cGFibG8uZGUubGFyYS5n dWFyY2hAaW50ZWwuY29tPg0KPiBDYzogVHJhaGUsIEZpb25hIDxmaW9uYS50cmFoZUBpbnRlbC5j b20+DQo+IFN1YmplY3Q6IFJFOiBbUkZDIHYxXSBkb2MgY29tcHJlc3Npb24gQVBJIGZvciBEUERL DQo+IA0KPiBIaSBTaGFsbHksDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ ID4gRnJvbTogVmVybWEsIFNoYWxseSBbbWFpbHRvOlNoYWxseS5WZXJtYUBjYXZpdW0uY29tXQ0K PiA+IFNlbnQ6IFR1ZXNkYXksIE9jdG9iZXIgMzEsIDIwMTcgMTE6MzkgQU0NCj4gPiBUbzogZGV2 QGRwZGsub3JnOyBUcmFoZSwgRmlvbmEgPGZpb25hLnRyYWhlQGludGVsLmNvbT47IEF0aHJleWEs DQo+IE5hcmF5YW5hIFByYXNhZA0KPiA+IDxOYXJheWFuYVByYXNhZC5BdGhyZXlhQGNhdml1bS5j b20+OyBDaGFsbGEsIE1haGlwYWwNCj4gPE1haGlwYWwuQ2hhbGxhQGNhdml1bS5jb20+DQo+ID4g U3ViamVjdDogW1JGQyB2MV0gZG9jIGNvbXByZXNzaW9uIEFQSSBmb3IgRFBESw0KPiA+DQo+ID4g SEkgRmlvbmENCj4gPg0KPiA+IFRoaXMgaXMgYW4gUkZDIGRvY3VtZW50IHRvIGJyaWVmIG91ciB1 bmRlcnN0YW5kaW5nIGFuZCByZXF1aXJlbWVudHMgb24NCj4gY29tcHJlc3Npb24gQVBJIHByb3Bv c2FsIGluDQo+ID4gRFBESy4gSXQgaXMgYmFzZWQgb24gIltSRkNdIENvbXByZXNzaW9uIEFQSSBp biBEUERLDQo+IGh0dHA6Ly9kcGRrLm9yZy9tbC9hcmNoaXZlcy9kZXYvMjAxNy0NCj4gPiBPY3Rv YmVyLzA3OTM3Ny5odG1sIi4NCj4gPiBJbnRlbnRpb24gb2YgdGhpcyBkb2N1bWVudCBpcyB0byBh bGlnbiBvbiBjb25jZXB0cyBidWlsdCBpbnRvIGNvbXByZXNzaW9uDQo+IEFQSSwgaXRzIHVzYWdl IGFuZCBpZGVudGlmeSBmdXJ0aGVyDQo+ID4gcmVxdWlyZW1lbnRzLg0KPiA+DQo+ID4gR29pbmcg ZnVydGhlciBpdCBjb3VsZCBiZSBhIGJhc2UgdG8gQ29tcHJlc3Npb24gTW9kdWxlIFByb2dyYW1t ZXINCj4gR3VpZGUuDQo+ID4NCj4gPiBDdXJyZW50IHNjb3BlIGlzIGxpbWl0ZWQgdG8NCj4gPiAt IGRlZmluaXRpb24gb2YgdGhlIHRlcm1pbm9sb2d5IHdoaWNoIG1ha2VzIHVwIGZvdW5kYXRpb24g b2YgY29tcHJlc3Npb24NCj4gQVBJDQo+ID4gLSB0eXBpY2FsIEFQSSBmbG93IGV4cGVjdGVkIHRv IHVzZSBieSBhcHBsaWNhdGlvbnMNCj4gPg0KPiA+IE92ZXJ2aWV3DQo+ID4gfn5+fn5+fn4NCj4g PiBBLiBOb3Rpb24gb2YgYSBzZXNzaW9uIGluIGNvbXByZXNzaW9uIEFQSQ0KPiA+ID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiBBIFNlc3Npb24gaXMgcGVyIGRldmljZSBs b2dpY2FsIGVudGl0eSB3aGljaCBpcyBzZXR1cCB3aXRoIGNoYWluZWQteGZvcm1zIHRvDQo+IGJl IHBlcmZvcm1lZCBvbiBidXJzdA0KPiA+IG9wZXJhdGlvbnMgd2hlcmUgaW5kaXZpZHVhbCBlbnRy eSBjb250YWlucyBvcGVyYXRpb24gdHlwZQ0KPiAoZGVjb21wcmVzcy9jb21wcmVzcykgYW5kIHJl bGF0ZWQgcGFyYW1ldGVyLg0KPiA+IEEgdHlwaWNhbCBTZXNzaW9uIHBhcmFtZXRlciBpbmNsdWRl czoNCj4gPiAtIGNvbXByZXNzIC8gZGVjb21wcmVzcw0KPiA+IC0gZGV2X2lkDQo+ID4gLSBjb21w cmVzc2lvbiBhbGdvcml0aG0gYW5kIG90aGVyIHJlbGF0ZWQgcGFyYW1ldGVycw0KPiA+IC0gbWVt cG9vbCAtIGZvciB1c2UgYnkgc2Vzc2lvbiBmb3IgcnVudGltZSByZXF1aXJlbWVudA0KPiA+IC0g YW5kIGFueSBvdGhlciBhc3NvY2lhdGVkIHByaXZhdGUgZGF0YSBtYWludGFpbmVkIGJ5IHNlc3Np b24NCj4gPg0KPiA+IEFwcGxpY2F0aW9uIGNhbiBzZXR1cCBtdWx0aXBsZSBzZXNzaW9ucyBvbiBh IGRldmljZSBhcyBkaWN0YXRlZCBieQ0KPiBkZXZfaW5mby5uYl9zZXNzaW9ucyBvcg0KPiA+IG5i X3Nlc3Npb25fcGVyX3FwLg0KPiA+DQo+IFtGaW9uYV0gVGhlIHNlc3Npb24gZGVzaWduIGlzIG1v ZGVsbGVkIG9uIHRoZSBjcnlwdG9kZXYgc2Vzc2lvbiBkZXNpZ24gYW5kDQo+IHNvIGFsbG93cw0K PiB0byBjcmVhdGUgYSBzZXNzaW9uIHdoaWNoIGNhbiBiZSB1c2VkIG9uIGRpZmZlcmVudCBkcml2 ZXIgdHlwZXMuIEUuZy4gIGENCj4gc2Vzc2lvbiBjb3VsZCBiZSBzZXQgdXAgYW5kIGluaXRpYWxp c2VkDQo+IHRvIHJ1biBvbiBhIFF1aWNrQXNzaXN0IGRldmljZSBhbmQgYSBTb2Z0d2FyZSBkZXZp Y2UuIFRoaXMgbWF5IGJlIHVzZWZ1bCBmb3INCj4gc3RhdGVsZXNzDQo+IHJlcXVlc3RzLCBhbmQg ZW5hYmxlIGxvYWQtYmFsYW5jaW5nLiBGb3Igc3RhdGVmdWwgZmxvd3MgdGhlIHNlc3Npb24gc2hv dWxkIGJlDQo+IHNldCB1cCBmb3INCj4gb25seSBvbmUgc3BlY2lmaWMgZHJpdmVyLXR5cGUgYXMg dGhlIHN0YXRlIGluZm9ybWF0aW9uIHdpbGwgYmUgc3RvcmVkIGluIHRoZQ0KPiBwcml2YXRlIGRh dGEgc3BlY2lmaWMgdG8gdGhlIGRyaXZlci10eXBlDQo+IGFuZCBub3QgdHJhbnNmZXJyYWJsZSBi ZXR3ZWVuIGRyaXZlci10eXBlcy4NCj4gU28gYSBzZXNzaW9uDQo+ICAtIGlzIG5vdCBwZXItZGV2 aWNlDQo+ICAtIGhhcyBubyBkZXZfaWQNCj4gIC0gaGFzIG5vIG1lbXBvb2wgc3RvcmVkIGluIGl0 IC0gdGhlIHBvb2wgaXMgY3JlYXRlZCBieSB0aGUgYXBwbGljYXRpb24sIHRoZSBsaWINCj4gY2Fu IHJldHJpZXZlIHRoZSBwb29sIGZyb20gdGhlIG9iamVjdCB3aXRoIHJ0ZV9tZW1wb29sX2Zyb21f b2JqKCkNCj4gIC0gZG9lcyBub3QgaGF2ZSBhIGxpbWl0IG51bWJlciBwZXIgZGV2aWNlLCBqdXN0 IHBlciBxcCwgaS5lLiB0aGVyZSBpcyBubw0KPiBkZXZfaW5mby5uYl9zZXNzaW9ucywganVzdCBk ZXZfaW5mby5tYXhfbmJfc2Vzc2lvbnNfcGVyX3FwDQo+IA0KPiBEbyB5b3UgdGhpbmsgYW55IG9m IHRoaXMgbmVlZHMgdG8gYmUgY2hhbmdlZD8NCg0KW1NoYWxseV0gUGxlYXNlIGhlbHAgY29uZmly bSBmb2xsb3dpbmcgYmVmb3JlIEkgY291bGQgYW5zd2VyIHRoaXMuDQoNCkluIGNyeXB0b2Rldiwg c2Vzc2lvbiBob2xkcyBhbiBkcml2ZXJzIGFycmF5IGluaXRpYWxpemVkIG9uIGl0IHdoZXJlIGVh Y2ggY2FuIGJlIHNldHVwIHRvIHBlcmZvcm0gc2FtZS9kaWZmZXJlbnQgb3BlcmF0aW9uIGluIGl0 cyBwcml2YXRlX2RhdGEuDQpPbiBtYXBwaW5nIGl0IHRvIGNvbXByZXNzaW9uIGl0IG1lYW4sIGEg c2Vzc2lvbjoNCi0gV2lsbCBub3QgcmV0YWluIGFueSBvZiB0aGUgaW5mbyBhcyBtZW50aW9uZWQg YWJvdmUgKHhmb3JtLCBtZW1wb29sLCBhbGdvcyBldCBlbCkuIEFsbCBzdWNoIGluZm9ybWF0aW9u IGlzIG1haW50YWluZWQgYXMgcGFydCBvZiBhc3NvY2lhdGVkIGRldmljZSBkcml2ZXIgcHJpdmF0 ZSBkYXRhLg0KLSBBcHAgY2FuIHVzZSBzYW1lIHNlc3Npb24gdG8gc2V0IGNvbXByZXNzIHhmb3Jt IGFuZCBkZWNvbXByZXNzIHhmb3JtIG9uIGRldmljZXMgYnV0IGlmIGJvdGggZGV2aWNlcyBtYXBz IHRvIHNhbWUgZHJpdmVyX2lkIHRoZW4gb25seSBlaXRoZXIgaXMgZWZmZWN0aXZlICh3aGljaGV2 ZXIgaXMgc2V0IGZpcnN0KT8NCg0KSXMgdGhpcyB1bmRlcnN0YW5kaW5nIGNvcnJlY3Q/DQoNCj4g DQo+ID4gQi4gTm90aW9uIG9mIGJ1cnN0IG9wZXJhdGlvbnMgaW4gY29tcHJlc3Npb24gQVBJDQo+ ID4gwqA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiBzdHJ1Y3Qg cnRlX2NvbXBfb3AgZGVmaW5lcyBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIG9wZXJhdGlvbmFs DQo+IHBhcmFtZXRlciBhbmQgbWFrZXMgdXAgb25lIHNpbmdsZQ0KPiA+IGVsZW1lbnQgb2YgYnVy c3QuIFRoaXMgaXMgYm90aCBhbiBpbnB1dC9vdXRwdXQgcGFyYW1ldGVyLg0KPiA+IFBNRCBnZXRz IHNvdXJjZSwgZGVzdGluYXRpb24gYW5kIGNoZWNrc3VtIGluZm9ybWF0aW9uIGF0IGlucHV0IGFu ZA0KPiB1cGRhdGVkIGl0IHdpdGggYnl0ZXMgY29uc3VtZWQgYW5kDQo+ID4gcHJvZHVjZWQgYXQg b3V0cHV0Lg0KPiBbRmlvbmFdIEFncmVlZA0KPiANCj4gPiBPbmNlIGVucXVldWVkIGZvciBwcm9j ZXNzaW5nLCBydGVfY29tcF9vcCAqY2Fubm90IGJlIHJldXNlZCogdW50aWwgaXRzDQo+IHN0YXR1 cyBpcyBzZXQgdG8NCj4gPiBSVEVfQ09NUF9PUF9GQUlMVVJFIG9yIFJURV9DT01QX09QX1NUQVRV U19TVUNDRVNTLg0KPiBbRmlvbmFdIGNhbm5vdCBiZSB1c2VkIHVudGlsIGl0cyBzdGF0dXMgaXMg c2V0IHRvIGFueSB2YWx1ZSBvdGhlciB0aGFuDQo+IFJURV9DT01QX09QX05PVF9QUk9DRVNTRUQN Cg0KW1NoYWxseV0gSG93IHVzZXIgd2lsbCBrbm93IHRoYXQgc3RhdHVzIGlzIE5PVF9QUk9DRVNT RUQgYWZ0ZXIgb3BzIGFyZSBlbnF1ZXVlZD8gDQpJIGFzc3VtZSBvbmx5IHdheSB0byBjaGVjayBl bnF1ZXVlZCBvcHMgc3RhdHVzIGlzIGRlcXVldWVfYnVyc3QoKSBhbmQgUE1EIHB1dCBhbiBvcCBp bnRvIGNvbXBsZXRpb24gcXVldWUgZm9yIGRlcXVldWUgKm9ubHkgd2hlbiogaXQgaXMgY29tcGxl dGVkIHdpdGggUGFzcy9GYWlsL091dF9vZl9zcGFjZSBjb25kaXRpb24gKm5vdCogd2hlbiBpdCdz IGluIHByb2dyZXNzIChlcXVpdmFsZW50IG9mIFJURV9DT01QX09QX05PVF9QUk9DRVNTRUQpLg0K DQpBbSBJIG1pc3NpbmcgYW55dGhpbmcgaGVyZT8NCg0KPiANCj4gDQo+ID4gQy4gU2Vzc2lvbiBh bmQgcnRlX2NvbXBfb3ANCj4gPiDCoD09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gRXZlcnkg b3BlcmF0aW9uIGluIGEgYnVyc3QgaXMgdGllZCB0byBhIFNlc3Npb24uIE1vcmUgdG8gY292ZXIg b24gdGhpcyB1bmRlcg0KPiBTdGF0ZWxlc3MgVnMgU3RhdGVmdWwgc2VjdGlvbi4NCj4gW0Zpb25h XSBBZ3JlZWQuIEkgd291bGQgYWRkIHRoYXQgZWFjaCBvcGVyYXRpb24gaW4gYSBidXJzdCBtYXkg YmUgYXR0YWNoZWQNCj4gdG8gYSBkaWZmZXJlbnQgc2Vzc2lvbi4NCj4gDQo+IA0KPiA+IEQuIFN0 YXRlbGVzcyBWcyBTdGF0ZWZ1bA0KPiA+ID09PT09PT09PT09PT09PT09PT0NCj4gPiBDb21wcmVz c2lvbiBBUEkgcHJvdmlkZSBSVEVfQ09NUF9GRl9TVEFURUZVTCBmZWF0dXJlIGZsYWcgZm9yIFBN RA0KPiB0byByZWZsZWN0IGl0cyBzdXBwb3J0IGZvciBTdGF0ZWZ1bA0KPiA+IG9wZXJhdGlvbi4N Cj4gW0Zpb25hXSBBZ3JlZWQuDQo+IA0KPiA+DQo+ID4gRC4xIENvbXByZXNzaW9uIEFQSSBTdGF0 ZWxlc3Mgb3BlcmF0aW9uDQo+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gQSBTdGF0ZWxlc3Mgb3BlcmF0aW9uIG1lYW5zIGFsbCBl bnF1ZXVlZCBwYWNrZXRzIGFyZSBpbmRlcGVuZGVudCBvZg0KPiBlYWNoIG90aGVyIGkuZS4gRWFj aCBwYWNrZXQgaGFzDQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRoZWlyIGZsdXNo IHZhbHVlIGlzIHNldCB0byBSVEVfRkxVU0hfRlVMTCBvciBSVEVfRkxVU0hfRklOQUwNCj4gKHJl cXVpcmVkIG9ubHkgb24gY29tcHJlc3Npb24NCj4gPiBzaWRlKSwNCj4gPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgQWxsLW9mIHRoZSByZXF1aXJlZCBpbnB1dCBhbmQgc3VmZmljaWVudCBs YXJnZSBidWZmZXIgc2l6ZSB0byBzdG9yZQ0KPiBvdXRwdXQgaS5lLiBPVVRfT0ZfU1BBQ0UgY2Fu DQo+ID4gbmV2ZXIgb2NjdXIgKHJlcXVpcmVkIGR1cmluZyBib3RoIGNvbXByZXNzaW9uIGFuZCBk ZWNvbXByZXNzaW9uKQ0KPiA+DQo+ID4gSW4gc3VjaCBjYXNlLCBQTUQgaW5pdGlhdGVzIHN0YXRl bGVzcyBwcm9jZXNzaW5nIGFuZCByZWxlYXNlcyBhY3F1aXJlZA0KPiByZXNvdXJjZXMgYWZ0ZXIg cHJvY2Vzc2luZyBvZiBjdXJyZW50DQo+ID4gb3BlcmF0aW9uIGlzIGNvbXBsZXRlIGkuZS4gZnVs bCBpbnB1dCBjb25zdW1lZCBhbmQgZnVsbCBvdXRwdXQgd3JpdHRlbi4NCj4gPiBBcHBsaWNhdGlv biBjYW4gYXR0YWNoIHNhbWUgb3IgZGlmZmVyZW50IHNlc3Npb24gdG8gZWFjaCBwYWNrZXQgYW5k IGNhbg0KPiBtYWtlIGNvbnNlY3V0aXZlIGVucXVlX2J1cnN0KCkNCj4gPiBjYWxscyBpLmUuIEZv bGxvd2luZyBpcyByZWxldmFudCB1c2FnZToNCj4gPg0KPiA+IGVucXVldWVkID0gcnRlX2NvbXBf ZW5xdWVfYnVyc3QgKGRldl9pZCwgcXBfaWQsIG9wczEsIG5iX29wcyk7DQo+ID4gZW5xdWV1ZWQg PSBydGVfY29tcF9lbnF1ZV9idXJzdChkZXZfaWQsIHFwX2lkLCBvcHMyLCBuYl9vcHMpOw0KPiA+ IGVucXVldWVkID0gcnRlX2NvbXBfZW5xdWVfYnVyc3QoZGV2X2lkLCBxcF9pZCwgb3BzMywgbmJf b3BzKTsNCj4gPg0KPiA+ICpOb3RlIOKAkyBFdmVyeSBjYWxsIGhhcyBkaWZmZXJlbnQgb3BzIGFy cmF5IGkuZS7CoCBzYW1lIHJ0ZV9jb21wX29wIGFycmF5DQo+ICpjYW5ub3QgYmUgcmV1c2VkKiB0 byBxdWV1ZSBuZXh0DQo+ID4gYmF0Y2ggb2YgZGF0YSB1bnRpbCBwcmV2aW91cyBvbmVzIGFyZSBj b21wbGV0ZWx5IHByb2Nlc3NlZC4NCj4gPg0KPiA+IEFsc28gaWYgbXVsdGlwbGUgdGhyZWFkcyBj YWxscyBlbnF1ZXVlX2J1cnN0KCkgb24gc2FtZSBxdWV1ZSBwYWlyIHRoZW4gaXTigJlzDQo+IGFw cGxpY2F0aW9uIG9udXMgdG8gdXNlIHByb3Blcg0KPiA+IGxvY2tpbmcgbWVjaGFuaXNtIHRvIGVu c3VyZSBzZXJpYWxpemVkIGVucXVldWluZyBvZiBvcGVyYXRpb25zLg0KPiBbRmlvbmFdIEFncmVl ZCB0byBhYm92ZSBzdGF0ZWxlc3MgZGVzY3JpcHRpb24uDQo+IA0KPiANCj4gPiBQbGVhc2Ugbm90 ZSBhbnkgdGltZSBvdXRwdXQgYnVmZmVyIHJhbiBvdXQgb2Ygc3BhY2UgZHVyaW5nIHdyaXRlIHRo ZW4NCj4gb3BlcmF0aW9uIHdpbGwgdHVybiDigJxTdGF0ZWZ1bOKAnS7CoCBTZWUNCj4gPiBtb3Jl IG9uIFN0YXRlZnVsIHVuZGVyIHJlc3BlY3RpdmUgc2VjdGlvbi4NCj4gW0Zpb25hXSBMZXQncyBj b21lIGJhY2sgdG8gdGhpcyBsYXRlci4gQW4gYWx0ZXJuYXRpdmUgaXMgdGhhdCBPVVRfT0ZfU1BB Q0UgaXMNCj4gcmV0dXJuZWQgYW5kIHRoZSAgYXBwbGljYXRpb24NCj4gbXVzdCB0cmVhdCBhcyBh IGZhaWwgYW5kIHJlc3VibWl0IHRoZSBvcGVyYXRpb24gd2l0aCBhIGxhcmdlciBkZXN0aW5hdGlv bg0KPiBidWZmZXIuDQoNCltTaGFsbHldIFRoZW4gSSBwcm9wb3NlIHRvIGFkZCBhIGZlYXR1cmUg ZmxhZyAiRkZfU1VQUE9SVF9PVVRfT0ZfU1BBQ0UiIHBlciB4Zm9ybSB0eXBlIGZvciBmbGV4aWJs ZSBQTUQgZGVzaWduLg0KQXMgdGhlcmUncmUgZGV2aWNlcyB3aGljaCB0cmVhdCBpdCBhcyBlcnJv ciBvbiBjb21wcmVzc2lvbiBidXQgbm90IG9uIGRlY29tcHJlc3Npb24uDQpJZiBpdCBpcyBub3Qg c3VwcG9ydGVkLCB0aGVuIGl0IHNob3VsZCBiZSB0cmVhdGVkIGFzIGZhaWx1cmUgY29uZGl0aW9u IGFuZCBhcHAgY2FuIHJlc3VibWl0IG9wZXJhdGlvbi4gDQppZiBzdXBwb3J0ZWQsIGJlaGF2aW91 ciAqVG8tYmUtRGVmaW5lZCogdW5kZXIgc3RhdGVmdWwuDQoNCj4gDQo+ID4gIFR5cGljYWwgQVBJ KGZsb3ctd2lzZSkgdG8gc2V0dXAgZm9yIHN0YXRlbGVzcyBvcGVyYXRpb246DQo+ID4gMS4gcnRl X2NvbXBfc2Vzc2lvbiAqc2VzcyA9IHJ0ZV9jb21wX3Nlc3Npb25fY3JlYXRlKHJ0ZV9tZW1wb29s DQo+ICpwb29sKTsNCj4gPiAyLiBydGVfY29tcF9zZXNzaW9uX2luaXQgKGludCBkZXZfaWQsIHJ0 ZV9jb21wX3Nlc3Npb24gKnNlc3MsDQo+IHJ0ZV9jb21wX3hmb3JtICp4Zm9ybSwgcnRlX21lbXBv b2wNCj4gPiAqc2Vzc19wb29sKTsNCj4gPiAzLiBydGVfY29tcF9vcF9wb29sX2NyZWF0ZShydGVf bWVtcG9vbCAuLikNCj4gPiA0LiBydGVfY29tcF9vcF9idWxrX2FsbG9jIChzdHJ1Y3QgcnRlX21l bXBvb2wgKm1lbXBvb2wsIHN0cnVjdA0KPiBydGVfY29tcF9vcCAqKm9wcywgdWludDE2X3QNCj4g PiBuYl9vcHMpOw0KPiA+IDUuIGZvciBldmVyeSBydGVfY29tcF9vcCBpbiBvcHNbXSwNCj4gPiDC oMKgwqAgNS4xIHJ0ZV9jb21wX29wX2F0dGFjaF9zZXNzaW9uKHJ0ZV9jb21wX29wICpvcCwgcnRl X2NvbXBfc2Vzc2lvbg0KPiAqc2Vzcyk7DQo+ID4gwqDCoMKgIDUuMiBzZXQgdXAgd2l0aCBzcmMv ZHN0IGJ1ZmZlcg0KPiA+IDYuIGVucSA9IHJ0ZV9jb21wZGV2X2VucXVldWVfYnVyc3QodWludDhf dCBkZXZfaWQsIHVpbnQxNl90IHFwX2lkLA0KPiBzdHJ1Y3QgcnRlX2NvbXBfb3AgKipvcHMsIHVp bnQxNl90DQo+ID4gbmJfb3BzKTsNCj4gPiA3LiBkcXUgPSBydGVfY29tcGRldl9kZXF1ZXVlX2J1 cnN0KGRldl9pZCwgcXBfaWQsIG9wcywgZW5xKTsNCj4gPiA4LiByZXBlYXQgNyB3aGlsZSAoZHF1 IDwgZW5xKSAvLyBXYWl0IHRpbGwgYWxsIG9mIGVucXVldWVkIGFyZSBkZXF1ZXVlZA0KPiA+IDku IFJlcGVhdCA1LjIgZm9yIG5leHQgYmF0Y2ggb2YgZGF0YQ0KPiA+IDEwLiBydGVfY29tcF9zZXNz aW9uX2NsZWFyICgpIC8vIG9ubHkgcmVzZXQgcHJpdmF0ZSBkYXRhIG1lbW9yeSBhcmVhIGFuZA0K PiAqbm90KiB0aGUgeGZvcm0gYW5kIGRldmlkDQo+ID4gaW5mb3JtYXRpb24uIEluIGNhc2UsIHlv dSB3YW50IHRvIHJlLXVzZSBzZXNzaW9uLg0KPiA+IDExLiBydGVfY29tcF9zZXNzaW9uX2ZyZWUo cmV0X2NvbXBfc2VzcyAqc2Vzc2lvbikNCj4gW0Zpb25hXSBvay4gVGhpcyBpcyBvbmUgcG9zc2li bGUgZmxvdy4gVGhlcmUgYXJlIHZhcmlhdGlvbnMgcG9zc2libGUNCj4gIC0gQWJvdmUgYXNzdW1l cyBhbGwgb3BzIGFyZSB1c2luZyB0aGUgc2FtZSBzZXNzaW9uLCB0aGlzIGlzIG5vdCBuZWNlc3Nh cmlseQ0KPiB0aGUgY2FzZS4gRS5nLiB0aGVyZQ0KPiAgICBjb3VsZCBiZSBhIGNvbXByZXNzaW9u IHNlc3Npb24gYW5kIGEgZGVjb21wcmVzc2lvbiBzZXNzaW9uIGFuZCBhIGJ1cnN0IG9mDQo+IG9w cyBtYXkgY29udGFpbiBib3RoLg0KDQpbU2hhbGx5XSBBZ3JlZSBidXQgYXNzdW1lIGFwcGxpY2Fi bGUgb25seSBmb3Igc3RhdGVsZXNzIHVudGlsIHdlIGNvdmVyIHN0YXRlZnVsDQoNCj4gICAgSW4g dGhpcyBjYXNlIFN0ZXAgOSB3b3VsZCBiZSBSZXBlYXQgNS4xIGFzIHdlbGwgYXMgNS4yDQo+ICAt IEFsc28gaXQgd291bGQgbm90IGJlIG5lY2Vzc2FyeSB0byB3YWl0IHVudGlsIHRoZSBmdWxsIGJ1 cnN0IGlzIGRlcXVldWVkDQo+IGJlZm9yZSBkb2luZw0KPiAgICBhbm90aGVyIGVucXVldWUgLSB0 aG91Z2ggb2YgY291cnNlIHRoZSBvcHMgd291bGQgbmVlZCB0byBiZSBtYW5hZ2VkIHNvDQo+IG9u bHkNCj4gICAgdGhvc2UgZmluaXNoZWQgd2l0aCBhcmUgcmV1c2VkLCBvciBtdWx0aXBsZSBzZXRz IG9mIG9wcyBjb3VsZCBiZSBhbGxvY2F0ZWQuDQoNCltTaGFsbHldIEFncmVlIA0KDQo+ICAtIFdo YXQgZG8geW91IG1lYW4gYnkgU3RlcCAxMCBjb21tZW50PyBUaGUgc2Vzc2lvbiBvbmx5IGhhcyBw cml2YXRlIGRhdGEuDQo+IEl0J3MgdXAgdG8gdGhlIFBNRCB0bw0KPiAgICBzdG9yZSB3aGF0ZXZl ciBpdCBuZWVkcyBmcm9tIHRoZSB4Zm9ybS4gSSB0aGluayBzZXNzaW9uX2NsZWFyIHNob3VsZCBt ZWFuDQo+IGFsbCB0aGUgZGF0YSBpcyB6ZXJvZWQgaW4gdGhlIHNlc3Npb24uDQo+ICAgIElmIHRo ZSBzZXNzaW9uIGlzIHRvIGJlIHJlLXVzZWQgdGhlbiBub3RoaW5nIG5lZWRzIHRvIGJlIGNsZWFy ZWQuIEVhY2ggb3AgaXMNCj4gYWxyZWFkeSByZS11c2luZyB0aGUgc2Vzc2lvbiBpbiB5b3VyDQo+ ICAgIGZsb3cgYWJvdmUgd2l0aG91dCBjbGVhcmluZyBiZXR3ZWVuIG9wcy4NCj4gICAgQlVUIHRo aXMgb25seSBhcHBsaWVzIHRvIHN0YXRlbGVzcyANCg0KW1NoYWxseV0gVGhpcyBjYW1lIGZyb20g bXkgcHJldmlvdXMgbm90aW9uIG9mIHNlc3Npb24uIE5vdyB3aGVuIEkgc2VlIGl0IGFuYWxvZ3kg dG8gY3J5cHRvZGV2LCBpdHMgcHVycG9zZSBpcyBjbGVhciB0byBtZS4gDQpCdXQgdGhlbiBJIHBy b3Bvc2UgdG8gcmVuYW1lIEFQSSB0byBydGVfY29tcGRldl9zZXNzX3Rlcm0oKSB0byBtYWtlIGl0 IHNlbGYtZXhwbGFuYXRvcnkuIA0KDQotIGZvciBzdGF0ZWZ1bCB3ZSBtYXkgbmVlZCBhIGRpZmZl cmVudA0KPiBiZWhhdmlvdXIgLSB0byBjbGVhciBzdGF0ZSBkYXRhIGJ1dA0KPiAgICBrZWVwIGFs Z28sIGxldmVsLCBIdWZmbWFuLXR5cGUsIGNoZWNrc3VtLXR5cGUuIExldCdzIGRpc2N1c3MgdW5k ZXIgc3RhdGVmdWwNCj4gLSB0aGlzIG1heSBuZWVkIGEgbmV3IEFQSS4NCj4gDQoNCltTaGFsbHld IE9yIFBNRCBjYW4gaW50ZXJuYWxseSByZXNldCBpdHMgc3RhdGUgb25jZSBpdCBwcm9jZXNzIGFu IG9wIHdpdGggRlVMTF9GTFVTSC9GSU5JU0guIFdpbGwgcmV2aXNpdCBpdCB1bmRlciBzdGF0ZWZ1 bC4NCg0KPiANCj4gPiBELjEuMiBSZXF1aXJlbWVudCBmb3IgU3RhdGVsZXNzDQo+ID4gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+IFNpbmNlIG9wZXJhdGlv biBjYW4gY29tcGxldGUgb3V0LW9mLW9yZGVyLiBUaGVyZSBzaG91bGQgYmUgb25lICh2b2lkDQo+ ICp1c2VyKSBwZXIgcnRlX2NvbXBfb3AgdG8gZW5hYmxlDQo+ID4gYXBwbGljYXRpb24gdG8gbWFw IGRlcXVldWVkIG9wIHRvIGVucXVldWVkIG9wLg0KPiBbRmlvbmFdIEluIGNyeXB0b2RldiB0aGVy ZSB3YXMgYW4gb3BhcXVlX2RhdGEgZmllbGQgaW4gdGhlIG9wIC0gaXQgd2FzDQo+IHJlbW92ZWQg YXMgdGhlIGFwcGxpY2F0aW9uIGNhbiBzdG9yZSBhbnkNCj4gcHJpdmF0ZSBkYXRhIGl0IG5lZWRz IGZvbGxvd2luZyB0aGUgb3AsIGFzIGl0IGNyZWF0ZXMgdGhlIG9wIHBvb2wgYW5kIGRpY3RhdGVz DQo+IHRoZSBzaXplLiBEbyB5b3UgdGhpbmsgd2UgbmVlZCBhbg0KPiBleHBsaWNpdCAodm9pZCAq dXNlcikgb3IgY2FuIHdlIGZvbGxvdyB0aGUgc2FtZSBhcHByb2FjaD8NCj4gDQoNCltTaGFsbHld IGlmIHByaXZfZGF0YSBpbiBjcnlwdG9fb3BfcG9vbF9jcmVhdGUoKSBpcyB1c2VyIGRhdGEsICB0 aGVuIHdlIGRvbid0IG5lZWQgZXhwbGljaXQgdXNlciAqLg0KQnV0IHRoZW4gSSBwcm9wb3NlIHZh cmlhYmxlIG5hbWUgc2hvdWxkIGJlIHJlbmFtZWQgdG8gdXNlcl9kYXRhIGluZGljYXRpbmcgaXQg aXMgYW4gYXBwIGRhdGEgb3BhcXVlIHRvIFBNRC4NCkFuZCwgX19ydGVfY29tcF9vcF9nZXRfcHJp dl9kYXRhX3NpemUgKCkgc2hvdWxkIGJlIGNoYW5nZWQgdG8gX19ydGVfY29tcF9vcF9nZXRfdXNl cl9kYXRhX3NpemUoKS4NCg0KPiBbRmlvbmFdIE91dCBvZiB0aW1lIC0gSSdsbCBjb250aW51ZSBm cm9tIGhlcmUgbGF0ZXIgaW4gdGhlIHdlZWsuDQpbU2hhbGx5XSBTdXJlLiBMb29rIGZvcndhcmQg dG8gdGhhdC4NCg0KVGhhbmtzDQpTaGFsbHkNCg0KPiANCj4gDQo+ID4gRC4yIENvbXByZXNzaW9u IEFQSSBTdGF0ZWZ1bCBvcGVyYXRpb24NCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gwqBBIFN0YXRlZnVsIG9wZXJhdGlv biBtZWFucyBmb2xsb3dpbmcgY29uZGl0aW9uczoNCj4gPiAtIEFQSSByYW4gaW50byBvdXRfb2Zf c3BhY2Ugc2l0dWF0aW9uIGR1cmluZyBwcm9jZXNzaW5nIG9mIGlucHV0LiBFeGFtcGxlLA0KPiBz dGF0ZWxlc3MgY29tcHJlc3NlZCBzdHJlYW0NCj4gPiBmZWQgZnVsbHkgdG8gZGVjb21wcmVzc29y IGJ1dCBvdXRwdXQgYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2ggdG8gaG9sZA0KPiBvdXRwdXQu DQo+ID4gLSBBUEkgd2FpdGluZyBmb3IgbW9yZSBpbnB1dCB0byBwcm9kdWNlIG91dHB1dC4gRXhh bXBsZSwgc3RhdGVsZXNzDQo+IGNvbXByZXNzZWQgc3RyZWFtIGZlZCBwYXJ0aWFsbHkgdG8NCj4g PiBkZWNvbXByZXNzb3IuDQo+ID4gLSBBUEkgaXMgZGVwZW5kZW50IG9uIHByZXZpb3VzIG9wZXJh dGlvbiBmb3IgZnVydGhlcg0KPiBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uDQo+ID4NCj4gPiBJ biBjYXNlIG9mIGVpdGhlciBvbmUgb3IgYWxsIG9mIHRoZSBhYm92ZSBjb25kaXRpb25zIFBNRCBp cyByZXF1aXJlZCB0bw0KPiBtYWludGFpbiBjb250ZXh0IG9mIG9wZXJhdGlvbnMNCj4gPiBhY3Jv c3MgZW5xdWVfYnVyc3QoKSBjYWxscywgdW50aWwgYSBwYWNrZXQgd2l0aMKgIFJURV9GTFVTSF9G VUxML0ZJTkFMIGFuZA0KPiBzdWZmaWNpZW50IGlucHV0L291dHB1dCBidWZmZXJzDQo+ID4gaXMg cmVjZWl2ZWQgYW5kIHByb2Nlc3NlZC4NCj4gPg0KPiA+IEQuMi4xIENvbXByZXNzaW9uIEFQSSBy ZXF1aXJlbWVudCBmb3IgU3RhdGVmdWwNCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPg0KPiA+IEQuMi4xLjEgU2xp ZGluZyBXaW5kb3cgU2l6ZQ0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiA+IE1heGltdW0gbGVuZ3RoIG9mIFNsaWRpbmcgV2luZG93IGluIGJ5dGVzLiBQcmV2aW91 cyBkYXRhIGxvb2t1cCB3aWxsIGJlDQo+IHBlcmZvcm1lZCB1cCB0byB0aGlzIGxlbmd0aC4gVG8N Cj4gPiBiZSBhZGRlZCBhcyBhbGdvcml0aG0gY2FwYWJpbGl0eSBwYXJhbWV0ZXIgYW5kIHNldCBi eSBQTUQuDQo+ID4NCj4gPiBELjIuMS4yIFN0YXRlZnVsIG9wZXJhdGlvbiBzdGF0ZSBtYWludGVu YW5jZQ0KPiA+IMKgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiA+IFRoaXMgc2VjdGlvbiBzdGFydHMgd2l0aCBkZXNjcmlwdGlv biBvZiBvdXIgdW5kZXJzdGFuZGluZyBhYm91dA0KPiBjb21wcmVzc2lvbiBBUEkgc3VwcG9ydCBm b3Igc3RhdGVmdWwuDQo+ID4gRGVwZW5kaW5nIHVwb24gdW5kZXJzdGFuZGluZyBidWlsZCB1cG9u IHRoZXNlIGNvbmNlcHRzLCB3ZSB3aWxsIGlkZW50aWZ5DQo+IHJlcXVpcmVkIGRhdGEgc3RydWN0 dXJlL3BhcmFtDQo+ID4gdG8gbWFpbnRhaW4gaW4tcHJvZ3Jlc3Mgb3BlcmF0aW9uIGNvbnRleHQg YnkgUE1ELg0KPiA+DQo+ID4gRm9yIHN0YXRlZnVsIGNvbXByZXNzaW9uLCBiYXRjaCBvZiBkZXBl bmRlbnQgcGFja2V0cyBzdGFydHMgYXQgYSBwYWNrZXQNCj4gaGF2aW5nDQo+ID4gUlRFX05PX0ZM VVNIL1JURV9TWU5DX0ZMVVNIIGZsdXNoIHZhbHVlIGFuZCBlbmQgYXQgcGFja2V0IGhhdmluZw0K PiBSVEVfRlVMTF9GTFVTSC9GSU5BTF9GTFVTSC4NCj4gPiBpLmUuIGFycmF5IG9mIG9wZXJhdGlv bnMgd2lsbCBjYXJyeSBzdHJ1Y3R1cmUgbGlrZSB0aGlzOg0KPiA+DQo+ID4gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+ID4gfG9wMS5ub19mbHVzaCB8IG9wMi5ub19mbHVzaCB8IG9wMy5u b19mbHVzaCB8IG9wNC5mdWxsX2ZsdXNofA0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiA+DQo+ID4gRm9yIHNha2Ugb2Ygc2ltcGxpY2l0eSwgd2Ugd2lsbCB1c2UgdGVybSAic3Ry ZWFtIiB0byBpZGVudGlmeSBzdWNoIHJlbGF0ZWQgc2V0DQo+IG9mIG9wZXJhdGlvbiBpbiBmb2xs b3dpbmcNCj4gPiBkZXNjcmlwdGlvbi4NCj4gPg0KPiA+IFN0cmVhbSBwcm9jZXNzaW5nIGltcG9z ZSBmb2xsb3dpbmcgbGltaXRhdGlvbnMgb24gdXNhZ2Ugb2YgZW5xdWVfYnVyc3QoKQ0KPiBBUEkN Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQWxsIGRlcGVuZGVudCBwYWNrZXRzIGlu IGEgc3RyZWFtIHNob3VsZCBjYXJyeSBzYW1lIHNlc3Npb24NCj4gPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaWYgc3RyZWFtIGlzIGJyb2tlbiBpbnRvIG11bHRpcGxlIGVucXVldWVfYnVy c3QoKSBjYWxsLCB0aGVuIG5leHQNCj4gZW5xdWV1ZV9idXJzdCgpIGNhbm5vdCBiZSBjYWxsZWQN Cj4gPiB1bnRpbCBwcmV2aW91cyBvbmUgaGFzIGZ1bGx5IHByb2Nlc3NlZC4gSS5FLg0KPiA+DQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDb25zaWRlciBmb3IgZXhhbXBsZSwgYSBz dHJlYW0gd2l0aCBvcHMxIC4ub3BzNywgIFRoaXMgaXMgKm5vdCoNCj4gYWxsb3dlZA0KPiA+DQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLS0tLS0tLS0tLS0NCj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW5xdWVfYnVyc3QofG9wMS5ub19mbHVz aCB8IG9wMi5ub19mbHVzaCB8IG9wMy5ub19mbHVzaCB8DQo+IG9wNC5ub19mbHVzaHwpDQo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAtLS0tLS0tLS0tLS0tLQ0KPiA+DQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBlbnF1ZV9idXJzdCh8b3A1Lm5vX2ZsdXNoIHwgb3A2Lm5vX2ZsdXNoIHwgb3A3LmZs dXNoX2ZpbmFsIHwpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPg0KPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoFRoaXMgKmlzKiBhbGxvd2VkDQo+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLS0tLS0tLS0tLS0NCj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVucXVlX2J1cnN0KHxvcDEubm9fZmx1c2ggfCBvcDIubm9f Zmx1c2ggfCBvcDMubm9fZmx1c2ggfA0KPiBvcDQubm9fZmx1c2h8KQ0KPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLS0tLS0tLS0tLS0NCj4gPg0KPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXF1ZV9idXJzdChvcHMxIC4ub3BzNCkNCj4gPg0KPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZW5xdWVfYnVyc3QofG9wNS5ub19mbHVzaCB8IG9wNi5ub19mbHVzaCB8IG9wNy5mbHVz aF9maW5hbCB8KQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4NCj4gPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQSBzaW5nbGUgZW5xdWVfYnVyc3QoKSBjYW4gY2Fy cnkgb25seSBvbmUgc3RyZWFtLiBJLkUuIFRoaXMgaXMgKm5vdCoNCj4gYWxsb3dlZA0KPiA+DQo+ ID4gwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVucXVlX2J1 cnN0ICh8b3AxLm5vX2ZsdXNoIHwgb3AyLm5vX2ZsdXNoIHwgb3AzLmZsdXNoX2ZpbmFsIHwNCj4g b3A0Lm5vX2ZsdXNoIHwgb3A1Lm5vX2ZsdXNoIHwpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4N Cj4gPiBJZiBhIHN0cmVhbSBpcyBicm9rZW4gaW4gdG8gc2V2ZXJhbCBlbnF1ZXVlX2J1cnN0KCkg Y2FsbHMsIHRoZW4gY29tcHJlc3MNCj4gQVBJIG5lZWQgdG8gbWFpbnRhaW4gb3BlcmF0aW9uYWwN Cj4gPiBzdGF0ZSBiZXR3ZWVuIGNhbGxzLiBGb3IgdGhpcywgY29uY2VwdCBvZiBydGVfY29tcF9z dHJlYW0gaXMgZW5hYmxlZCBpbiB0bw0KPiBjb21wcmVzc2lvbiBBUEkuDQo+ID4gSGVyZeKAmXJl IHRoZSBwcm9wb3NlZCBjaGFuZ2VzIHRvIGV4aXN0aW5nIGRlc2lnbjoNCj4gPg0KPiA+IDEuIEFk ZCBydGVfY29tcF9vcF90eXBlDQo+ID4gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLg0KPiA+IGVudW0gcnRlX2NvbXBfb3BfdHlwZSB7DQo+ID4gUlRFX0NPTVBfT1BfU1RB VEVMRVNTLA0KPiA+IFJURV9DT01QX09QX1NUQVRFRlVMDQo+ID4gfQ0KPiA+DQo+ID4gMi4gQWRk IG5ldyBkYXRhIHR5cGUgcnRlX2NvbXBfc3RyZWFtIHRvIG1haW50YWluIHN0cmVhbSBzdGF0ZQ0K PiA+IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uDQo+ID4g cnRlX2NvbXBfc3RyZWFtIGlzIGFuIG9wYXF1ZSBkYXRhIHN0cnVjdHVyZSB0byBhcHBsaWNhdGlv biB3aGljaCBpcw0KPiBleGNoYW5nZWQgYmFjayBhbmQgZm9ydGggYmV0d2Vlbg0KPiA+IGFwcGxp Y2F0aW9uIGFuZCBQTUQgZHVyaW5nIHN0YXRlZnVsIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24u DQo+ID4gSXQgc2hvdWxkIGJlIGFsbG9jYXRlZCBwZXIgc3RyZWFtIEFORCBiZWZvcmUgYmVnaW5u aW5nIG9mIHN0YXRlZnVsDQo+IG9wZXJhdGlvbi4gSWYgc3RyZWFtIGlzIGJyb2tlbiBpbnRvDQo+ ID4gbXVsdGlwbGUgZW5xdWV1ZV9idXJzdCgpIHRoZW4gZWFjaA0KPiA+IHJlc3BlY3RpdmUgZW5x dWV1ZV9idXJzdCgpIG11c3QgY2Fycnkgc2FtZSBydGVfY29tcF9zdHJlYW0gcG9pbnRlci4gSXQN Cj4gaXMgbWFuZGF0b3J5IGlucHV0IGZvciBzdGF0ZWZ1bA0KPiA+IG9wZXJhdGlvbnMuDQo+ID4g cnRlX2NvbXBfc3RyZWFtIGNhbiBiZSBjbGVhcmVkIGFuZCByZXVzZWQgdmlhIGNvbXByZXNzaW9u IEFQSQ0KPiBydGVfY29tcF9zdHJlYW1fY2xlYXIoKSBhbmQgZnJlZSB2aWENCj4gPiBydGVfY29t cF9zdHJlYW1fZnJlZSgpLiBDbGVhci9mcmVlIHNob3VsZCBub3QgYmUgY2FsbGVkIHdoZW4gaXQg aXMgaW4gdXNlLg0KPiA+DQo+ID4gVGhpcyBlbmFibGVzIHNoYXJpbmcgb2YgYSBzZXNzaW9uIGJ5 IG11bHRpcGxlIHRocmVhZHMgaGFuZGxpbmcgZGlmZmVyZW50DQo+IHN0cmVhbXMgYXMgZWFjaCBi dWxrIG9wcyBjYXJyeSBpdHMNCj4gPiBvd24gY29udGV4dC4gVGhpcyBjYW4gYWxzbyBiZSB1c2Vk IGJ5IFBNRCB0byBoYW5kbGUgT1VUX09GX1NQQUNFDQo+IHNpdHVhdGlvbi4NCj4gPg0KPiA+IDMu IEFkZCBzdHJlYW0gYWxsb2NhdGUsIGNsZWFyIGFuZCBmcmVlIEFQSQ0KPiA+IC4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4N Cj4gPiAzLjEuIHJ0ZV9jb21wX29wX3N0cmVhbV9hbGxvYyhydGVfbWVtcG9vbCAqcG9vbCwgcnRl X2NvbXBfb3BfdHlwZQ0KPiB0eXBlLCBydGVfY29tcF9zdHJlYW0NCj4gPiAqKnN0cmVhbSk7DQo+ ID4gMy4yLiBydGVfY29tcF9vcF9zdHJlYW1fY2xlYXIocnRlX2NvbXBfc3RyZWFtICpzdHJlYW0p OyAvLyBpbiB0aGlzDQo+IGNhc2Ugc3RyZWFtIHdpbGwgYmUgdXNlYWJsZSBmb3IgbmV3DQo+ID4g c3RhdGVmdWwgYmF0Y2gNCj4gPiAzLjMuIHJ0ZV9jb21wX29wX3N0cmVhbV9mcmVlKHJ0ZV9jb21w X3N0cmVhbSAqc3RyZWFtKTsgLy8gdG8gZnJlZQ0KPiBjb250ZXh0DQo+ID4NCj4gPiA0LiBBZGQg bmV3IEFQSSBydGVfY29tcGRldl9lbnF1ZXVlX3N0cmVhbSgpDQo+ID4gLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLg0KPiA+ICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJ0ZV9jb21wZGV2X2VucXVldWVf c3RyZWFtKHVpbnQ4X3QgZGV2X2lkLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBxcF9pZCwNCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9jb21wX29wICoqb3Bz LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50MTZfdCBuYl9vcHMsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcnRlX2NvbXBfc3RyZWFtICpzdHJlYW0pOyAvL3RvIGJlIHBhc3NlZCB3aXRo DQo+IGVhY2ggY2FsbA0KPiA+DQo+ID4gQXBwbGljYXRpb24gc2hvdWxkIGNhbGwgdGhpcyBBUEkg dG8gcHJvY2VzcyBkZXBlbmRlbnQgc2V0IG9mIGRhdGEgT1Igd2hlbg0KPiBvdXRwdXQgYnVmZmVy IHNpemUgaXMgdW5rbm93bi4NCj4gPg0KPiA+IHJ0ZV9jb21wX29wX3Bvb2xfY3JlYXRlKCkgc2hv dWxkIGNyZWF0ZSBtZW1wb29sIGxhcmdlIGVub3VnaCB0bw0KPiBhY2NvbW1vZGF0ZSBvcGVyYXRp b25hbCBzdGF0ZQ0KPiA+IChtYWludGFpbmVkIGJ5IHJ0ZV9jb21wX3N0cmVhbSkgYmFzZWQgb24g cnRlX2NvbXBfb3BfdHlwZS4gU2luY2UNCj4gcnRlX2NvbXBfc3RyZWFtIHdvdWxkIGJlDQo+ID4g bWFpbnRhaW5lZCBieSBQTUQsIHRodXMgYWxsb2NhdGluZyBpdCBmcm9tIFBNRCBtYW5hZ2VkIHBv b2wgb2ZmZXJzDQo+IHBlcmZvcm1hbmNlIGdhaW5zLg0KPiA+DQo+ID4gQVBJIGZsb3c6IHJ0ZV9j b21wX29wX3Bvb2xfY3JlYXRlKCkgLeKGkiBydGVfY29tcF9vcF9idWxrX2FsbG9jKCkgLS0tPg0K PiBydGVfY29tcF9vcF9zdHJlYW1fYWxsb2MoKSDihpINCj4gPiBlbnF1ZV9zdHJlYW0oLi5vcHMs IC4uLCBzdHJlYW0pDQo+ID4NCj4gPiBELjIuMS4zIEhpc3RvcnkgYnVmZmVyDQo+ID4gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiBXaWxsIGJlIG1haW50YWluZWQgYnkgUE1EIHdp dGggaW4gcnRlX2NvbXBfc3RyZWFtDQo+ID4NCj4gPiBUaGFua3MNCj4gPiBTaGFsbHkNCg0K