From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0081.outbound.protection.outlook.com [104.47.2.81]) by dpdk.org (Postfix) with ESMTP id 86393374E for ; Thu, 7 Sep 2017 10:47:47 +0200 (CEST) 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; bh=g28CYletcGUiKi88fOQL04g52VDWcdQ+V4Vj2W27RFg=; b=L7nuhRAGTlZfwtHFMlDXT45xHPsiM6DHTJEwsafL+wAhG+QsM7Mw8FOlaD8+YLUJS6C9FlgfpI2qPvL1dRVwXgudETOSpRw1lK7cNACMSYMI8/YWcOBSvbjey9KURrUAQHV1Lw97uquXkeOYujqn6nf+m0MXhrnegttmx1R03CM= Received: from AM3PR05MB307.eurprd05.prod.outlook.com (10.242.247.152) by AM3PR05MB0869.eurprd05.prod.outlook.com (10.161.33.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.35.12; Thu, 7 Sep 2017 08:47:45 +0000 Received: from AM3PR05MB307.eurprd05.prod.outlook.com ([fe80::9432:5ada:16f6:e273]) by AM3PR05MB307.eurprd05.prod.outlook.com ([fe80::9432:5ada:16f6:e273%14]) with mapi id 15.20.0035.010; Thu, 7 Sep 2017 08:47:44 +0000 From: Wisam Monther To: "Hu, Jiayu" CC: "users@dpdk.org" , Raslan Darawsheh , Shahaf Shuler Thread-Topic: Unable to merge packets using GRO feature Thread-Index: AdMaTiF+8CYSsq4aQZ+8LenCiQpxYQAD6neAADXVIAAABK9KMAAAd2TQAFQNtLAAAYcosADMAwaAACXOZZAAC76hwAGa1cBQABz64GAADFFDsAAB9LoAAADl2aAAALoY0A== Date: Thu, 7 Sep 2017 08:47:44 +0000 Message-ID: References: <20170821091347.GA94297@dpdk15.sh.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=wisamm@mellanox.com; x-originating-ip: [195.35.85.130] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM3PR05MB0869; 6:yIm3rwhLYMxKRszHi2daEVPN8jZ7m0yy9U7+Nl+xpRAVz7CEicEZFxKt/xKvgbp7bRMJDJzqQai0IJnKkB0vdbUJwJK/FZlkfqRn3VZXCNzi+HVAw0sqIBmmndGccDuv5ydENTLu70yGUpJEeD247SrA9T+RCA0MpgsHrAuFJgqTiIfXbC0rdUZNjcdqlJcihW2dBgAOYQKbOyRZe1iCAphz7IwFOBmE18Ge6b+pVUPYEDgOU1AiUMaWoWmpRgrH66iV+JhNSty3XhEUSr6U7mcDCWIasMjIOH5ndsSuB3LnTFhT/SMREa0oGFBpCdxqjHeCfihw+4d9gzJGnMrI6Q==; 5:tnnxxd0li5QuuMbsgedfE2lM6B5SiVPhaHk1FG0fpfPECIgEWpJUTVw2g4HO6UXiANSmTdHtOTGeSyhzvidwcsmX+9Nh899TqtOcmeEMrxfZ72BN6bSkaA7mQ+Q5BANgGwVEHSgca3+YSm4yMH8u8Rm55AV1RKtSmw5GoXAqSDk=; 24:RwoB20k3NhVPU+1xSOTEkSQ9RF6vC80RbvSDM1GTcdOhmWnq5m0H5uM8K4E5jb4BDTTP3lhfmHwLOYgnavmkaglsw5MbDGOovAN/hRQZfk4=; 7:tuszyEPG2U3tN02ZwTHCzRxtEu2w90+uuQDNi9JZSa3y5KxHWi8sO0ns+AIiLPk5MtE6wsphkdp4Kmakkyx/qAgEhIbou7zokiQKJ0f2iArrftnqTFX2O2HnwcXyzei/pk4J/GYetdyF1grarlAM8wR7rOefrYQNif9z7QLT7uf7aXz2vQt2UNdIkeyF/tiO3sAngzP1NWJNLtgtUeaWlM75u9rdzTdO4dG/ayj831A= x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: 87cccee7-152e-4249-fd7e-08d4f5cd1bb3 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(300000502095)(300135100095)(22001)(2017030254152)(48565401081)(300000503095)(300135400095)(2017052603199)(49563074)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:AM3PR05MB0869; x-ms-traffictypediagnostic: AM3PR05MB0869: x-exchange-antispam-report-test: UriScan:(278428928389397)(228905959029699); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6055026)(6041248)(20161123558100)(20161123564025)(20161123562025)(20161123555025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM3PR05MB0869; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM3PR05MB0869; x-forefront-prvs: 04238CD941 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(377454003)(13464003)(199003)(189002)(24454002)(4326008)(53546010)(2900100001)(6916009)(7696004)(33656002)(2906002)(478600001)(14454004)(6436002)(345774005)(305945005)(7736002)(68736007)(74316002)(54356999)(97736004)(50986999)(76176999)(66066001)(101416001)(3280700002)(3660700001)(99936001)(25786009)(99286003)(93886005)(229853002)(8936002)(55016002)(5660300001)(54906002)(106356001)(81156014)(8676002)(5250100002)(81166006)(105586002)(6506006)(5890100001)(102836003)(6246003)(6116002)(53936002)(86362001)(9686003)(107886003)(110136004)(189998001)(3846002)(53946003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM3PR05MB0869; H:AM3PR05MB307.eurprd05.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Sep 2017 08:47:44.7026 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR05MB0869 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-users] Unable to merge packets using GRO feature X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Sep 2017 08:47:47 -0000 U29ycnkgSSBmb3JnZXQgdG8gYXR0YWNoIHRoZSBwY2FwIGZpbGUuDQpTZWUgYXR0YWNoZWQgcGxl YXNlIFt0aGUgb3V0cHV0IG9mIFRTTyBhbmQgdGhlIGlucHV0IG9mIEdST10NCg0KQlJzLA0KV2lz YW0gSmFkZG8NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFdpc2FtIE1vbnRo ZXIgDQpTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDcsIDIwMTcgMTE6MjQgQU0NClRvOiAnSHUs IEppYXl1Jw0KQ2M6IHVzZXJzQGRwZGsub3JnOyBSYXNsYW4gRGFyYXdzaGVoOyBTaGFoYWYgU2h1 bGVyDQpTdWJqZWN0OiBSRTogVW5hYmxlIHRvIG1lcmdlIHBhY2tldHMgdXNpbmcgR1JPIGZlYXR1 cmUNCg0KWWVzIHN1cmUsDQoNClRoaXMgaXMgdGhlIHBhY2tldCBJIHNlbnQgZm9yIHRoZSB0ZXN0 cG1kICJ0aGUgb25lIHRoYXQgZW5hYmxlZCB0c28iDQoiIg0KcD1FdGhlcihzcmM9Z2V0X2lmX2h3 YWRkcignZW5zMTAnKSwgZHN0PSAnZmY6ZmY6ZmY6ZmY6ZmY6ZmYnKQ0KcC5hZGRfcGF5bG9hZChE b3QxUSh2bGFuPTEpKQ0KcC5hZGRfcGF5bG9hZChJUChkc3Q9JzExLjEwLjEwLjIxJywgc3JjPScx MS4xMC4xMC4yMCcpKSBwLmFkZF9wYXlsb2FkKFRDUChzcG9ydD0yMDAwLCBkcG9ydD0zMDAwKSkN CnAuYWRkX3BheWxvYWQoJzAnKigxNTAwIC0gbGVuKHApKSkNCnNlbmRwKHAsIGlmYWNlPSdlbnMx MCcsIGNvdW50PTEgKQ0KIiIiDQoNCkFuZCB0aGlzIGlzIHRoZSBvdXRwdXQgZnJvbSBUU08gInRo ZSBpbnB1dCBmb3IgR1JPIg0KDQoiIiINCiMgdGNwZHVtcCAtaSBlbnM5IC12dnZlbiAtdmxhbg0K dGNwZHVtcDogbGlzdGVuaW5nIG9uIGVuczksIGxpbmstdHlwZSBFTjEwTUIgKEV0aGVybmV0KSwg Y2FwdHVyZSBzaXplIDI2MjE0NCBieXRlcw0KDQoxMToyMDo1MS40OTQ2NTEgMjQ6OGE6MDc6ODg6 MjY6NmEgPiAyNDo4YTowNzo4ODoyNjo1YSwgZXRoZXJ0eXBlIElQdjQgKDB4MDgwMCksIGxlbmd0 aCA1NTQ6ICh0b3MgMHgwLCB0dGwgNjQsIGlkIDEsIG9mZnNldCAwLCBmbGFncyBbbm9uZV0sIHBy b3RvIFRDUCAoNiksIGxlbmd0aCA1NDApDQogICAgMTEuMTAuMTAuMjAuMjAwMCA+IDExLjEwLjEw LjIxLjMwMDA6IEZsYWdzIFtTXSwgY2tzdW0gMHg0MTFiIChjb3JyZWN0KSwgc2VxIDA6NTAwLCB3 aW4gODE5MiwgbGVuZ3RoIDUwMA0KMTE6MjA6NTEuNDk0NjYwIDI0OjhhOjA3Ojg4OjI2OjZhID4g MjQ6OGE6MDc6ODg6MjY6NWEsIGV0aGVydHlwZSBJUHY0ICgweDA4MDApLCBsZW5ndGggNTU0OiAo dG9zIDB4MCwgdHRsIDY0LCBpZCAyLCBvZmZzZXQgMCwgZmxhZ3MgW25vbmVdLCBwcm90byBUQ1Ag KDYpLCBsZW5ndGggNTQwKQ0KICAgIDExLjEwLjEwLjIwLjIwMDAgPiAxMS4xMC4xMC4yMS4zMDAw OiBGbGFncyBbU10sIGNrc3VtIDB4M2YyNyAoY29ycmVjdCksIHNlcSA1MDA6MTAwMCwgd2luIDgx OTIsIGxlbmd0aCA1MDANCjExOjIwOjUxLjQ5NDY2MiAyNDo4YTowNzo4ODoyNjo2YSA+IDI0Ojhh OjA3Ojg4OjI2OjVhLCBldGhlcnR5cGUgSVB2NCAoMHgwODAwKSwgbGVuZ3RoIDQ5NjogKHRvcyAw eDAsIHR0bCA2NCwgaWQgMywgb2Zmc2V0IDAsIGZsYWdzIFtub25lXSwgcHJvdG8gVENQICg2KSwg bGVuZ3RoIDQ4MikNCiAgICAxMS4xMC4xMC4yMC4yMDAwID4gMTEuMTAuMTAuMjEuMzAwMDogRmxh Z3MgW1NdLCBja3N1bSAweGIyZTIgKGNvcnJlY3QpLCBzZXEgMTAwMDoxNDQyLCB3aW4gODE5Miwg bGVuZ3RoIDQ0MiAiIiINCg0KQlJzLA0KV2lzYW0gSmFkZG8NCg0KLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCkZyb206IEh1LCBKaWF5dSBbbWFpbHRvOmppYXl1Lmh1QGludGVsLmNvbV0NClNl bnQ6IFRodXJzZGF5LCBTZXB0ZW1iZXIgNywgMjAxNyAxMDo1OCBBTQ0KVG86IFdpc2FtIE1vbnRo ZXINCkNjOiB1c2Vyc0BkcGRrLm9yZzsgUmFzbGFuIERhcmF3c2hlaDsgU2hhaGFmIFNodWxlcg0K U3ViamVjdDogUkU6IFVuYWJsZSB0byBtZXJnZSBwYWNrZXRzIHVzaW5nIEdSTyBmZWF0dXJlDQoN CkhpIFdpc2FtLA0KDQpDYW4geW91IHNlbmQgbWUgdGhlIHBjYXAgZmlsZSBvZiB0aGUgVFNPZWQg cGFja2V0cz8gSSB3YW50IHRvIHNlZSB3aGF0IHRoZSBwYWNrZXRzIHRoYXQgdGhlIEdSTyBlbmFi bGVkIHBvcnQgcmVjZWl2ZXMgbG9vayBsaWtlLg0KDQpUaGFua3MsDQpKaWF5dQ0KDQo+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFdpc2FtIE1vbnRoZXIgW21haWx0bzp3aXNh bW1AbWVsbGFub3guY29tXQ0KPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDcsIDIwMTcgMzox OSBQTQ0KPiBUbzogSHUsIEppYXl1IDxqaWF5dS5odUBpbnRlbC5jb20+DQo+IENjOiB1c2Vyc0Bk cGRrLm9yZzsgUmFzbGFuIERhcmF3c2hlaCA8cmFzbGFuZEBtZWxsYW5veC5jb20+OyBTaGFoYWYg DQo+IFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5jb20+DQo+IFN1YmplY3Q6IFJFOiBVbmFibGUg dG8gbWVyZ2UgcGFja2V0cyB1c2luZyBHUk8gZmVhdHVyZQ0KPiANCj4gSGkgSmlheXUsDQo+IA0K PiBGaXJzdCBvZiBhbGwsIEkgYXBwcmVjaWF0ZSB5b3VyIGVmZm9ydHMgd2l0aCBtZSA6KSBUaGUg dGhpbmcgdGhhdCB0aGUgDQo+IHBhY2tldHMgZGlkbid0IGRyb3BwZWQgd2hlbiBJIHVzZWQgYSBw YWNrZXQgd2l0aCAxNTAwIGluIHRvdGFsIGFzIGEgDQo+IHRocmVlIHNlZ21lbnRzIG9mIDUwMCwg U28sIGV2ZW4gd2hlbiBlbmFibGUgZ3JvLCB0ZXN0cG1kIHdpbGwgZndkIHRoZSANCj4gcmVjZWl2 ZWQgc2VnbWVudHMgYXMgaXQuDQo+ICJTbyBhY2NvcmRpbmcgdG8gdGhpcyBiZWhhdmlvciB3ZSBj b25jbHVkZSB0aGF0IGl0J3MgZGlkbid0IHJlYWNoIHRoZSANCj4gbGltaXQsIGFuZCBhbHNvIHRo ZSBHUk8gZGlkbid0IHdvcmsiDQo+IA0KPiBDb3VsZCBiZSB0aGVyZSBzb21lIGNvbnN0cmFpbnRz IGZvciBNTFggZHJpdmVyIG9yIE1MWCBOSUNzIHJlZ2FyZHMgR1JPPw0KPiANCj4gQmVzdCByZWdh cmRzLA0KPiBXaXNhbSBKYWRkbw0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g RnJvbTogSHUsIEppYXl1IFttYWlsdG86amlheXUuaHVAaW50ZWwuY29tXQ0KPiBTZW50OiBUaHVy c2RheSwgU2VwdGVtYmVyIDcsIDIwMTcgNDoxNSBBTQ0KPiBUbzogV2lzYW0gTW9udGhlcg0KPiBD YzogdXNlcnNAZHBkay5vcmc7IFJhc2xhbiBEYXJhd3NoZWg7IFNoYWhhZiBTaHVsZXINCj4gU3Vi amVjdDogUkU6IFVuYWJsZSB0byBtZXJnZSBwYWNrZXRzIHVzaW5nIEdSTyBmZWF0dXJlDQo+IA0K PiBIaSBXaXNhbSwNCj4gDQo+IFdoZW4gd2UgcGVyZm9ybSBhIHNpbWlsYXIgdGVzdCBvbiBpNDBl LCB3ZSBmaW5kIGFuIGltcG9ydGFudCB0aGluZzoNCj4gdGhlcmUgaXMgYSBtYXggbnVtYmVyIGxp bWl0IGZvciBtYnVmLT5uYl9zZWdzLiBXaGVuIHRoZSBudW1iZXIgb2YgTUJVRiANCj4gc2VnbWVu dHMgb2YgdGhlIHBhY2tldCBpcyBsYXJnZXIgdGhhbiB0aGlzIGxpbWl0LCB0aGUgcGFja2V0IHdp bGwgYmUgZHJvcHBlZC4NCj4gDQo+IFRoZSBHUk9lZCBwYWNrZXQgaGFzIG11bHRpcGxlIE1CVUYg c2VnbWVudHMuIEZvciB2aG9zdC1kcGRrLCBpdCANCj4gZG9lc24ndCBoYXZlIGxpbWl0IGZvciB0 aGUgbnVtYmVyIG9mIHNlZ21lbnRzLiBCdXQgaXQncyBub3QgdGhlIHNhbWUgDQo+IGZvciBhbGwg TklDIGRyaXZlcnMuIFNvIEkgc3VnZ2VzdCB5b3UgdG8gY2hlY2sgaWYgdGhlIE1MWCBkcml2ZXIg aGFzIHRoaXMgbGltaXQgdG9vLg0KPiANCj4gVGhhbmtzLA0KPiBKaWF5dQ0KPiANCj4gPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFdpc2FtIE1vbnRoZXIgW21haWx0bzp3 aXNhbW1AbWVsbGFub3guY29tXQ0KPiA+IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDYsIDIw MTcgNzoxOCBQTQ0KPiA+IFRvOiBIdSwgSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbT4NCj4gPiBD YzogdXNlcnNAZHBkay5vcmc7IFJhc2xhbiBEYXJhd3NoZWggPHJhc2xhbmRAbWVsbGFub3guY29t PjsgU2hhaGFmIA0KPiA+IFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5jb20+DQo+ID4gU3ViamVj dDogUkU6IFVuYWJsZSB0byBtZXJnZSBwYWNrZXRzIHVzaW5nIEdSTyBmZWF0dXJlDQo+ID4NCj4g PiBIaSBKaWF5dSwNCj4gPg0KPiA+IEFueSBjb21tZW50IHJlZ2FyZCB3aGF0IEkgZGVzY3JpYmVk Pw0KPiA+DQo+ID4gQlJzLA0KPiA+IFdpc2FtIEphZGRvDQo+ID4NCj4gPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFdpc2FtIE1vbnRoZXINCj4gPiBTZW50OiBUdWVzZGF5 LCBBdWd1c3QgMjksIDIwMTcgMTA6NDkgQU0NCj4gPiBUbzogJ0h1LCBKaWF5dScNCj4gPiBDYzog dXNlcnNAZHBkay5vcmc7IFJhc2xhbiBEYXJhd3NoZWg7IFNoYWhhZiBTaHVsZXINCj4gPiBTdWJq ZWN0OiBSRTogVW5hYmxlIHRvIG1lcmdlIHBhY2tldHMgdXNpbmcgR1JPIGZlYXR1cmUNCj4gPg0K PiA+IEhpIEppYXl1LA0KPiA+DQo+ID4gTGV0IG1lIHJlLWRlc2NyaWJlIG15IHRvcG9sb2d5IGlu IGEgYmV0dGVyIHdheSwgc2VlIGF0dGFjaGVkIGltYWdlLg0KPiA+IEFuZCBpdCBpcyBjb25uZWN0 ZWQgcGh5c2ljYWxseSBhcyBkZXNjcmliZWQsIGFuZCBJJ20gdXNpbmcgaXQgd2l0aCANCj4gPiBN VFUNCj4gPiBzaXplPTE1MDAgaW4gb3JkZXIgdG8gbWFrZSBzdXJlIEV2ZXJ5IHBvcnQgY2FuIGhh bmRsZSBpdC4NCj4gPg0KPiA+IEFuZCB0aGlzIGlzIHRoZSBleGFjdCBjb25uZWN0aW9uIGJldHdl ZW4gdGhlIGludGVyZmFjZXMsIHNvIEknbSBzdXJlIA0KPiA+IHRoZSBwYWNrZXRzIHJlY2VpdmVk IGluIE5JQyBCIG1hY2hpbmUgQiBpcyBjb21pbmcgZnJvbSB0aGUgdGVzdHBtZCANCj4gPiB3aXRo IEdSTyBlbmFibGVkLg0KPiA+DQo+ID4gQnV0IGV2ZW4gc28sIEkgaW50ZW50aW9uYWxseSBtYWRl IHRoZSBwYWNrZXQgc2l6ZSAxNTAwLCB0byBiZSANCj4gPiBkaXZpZGVkIGludG8gMyAqICggNTAw KSBmcmFnbWVudHMgdXNpbmcgdGhlIFRTTywgYW5kIHRoZW4gbWVyZ2VkIA0KPiA+IGludG8gMTUw MCBwYWNrZXQgYWdhaW4gaW4gdGhlIEdSTy4NCj4gPiBTbyB0aGUgZXZlcnkgbWFjaGluZSBjYW4g bWFuYWdlIHRoaXMgbXR1IHNpemUuDQo+ID4NCj4gPiBUaGUgdGhpbmcgdGhhdCBJIG5lZWQgdG8g dGVzdCBHUk8gd2l0aCBlYWNoIHNldHVwcyB0eXBlcywgIlZNcyB3aXRoIA0KPiA+IEJhcmVtZXRh bCB3aXRoIHBhc3MgdGhyb3VnaCB3aXRoIFZGcyBldGMuLi4iLg0KPiA+IFNvIEkgbmVlZCB0byBz ZWUgdGhlIGZlYXR1cmUgd29ya3Mgb24gbGVhc3Qgd29yaywgaXQgd291bGQgYmUgbmljZSANCj4g PiB0byBzZW5kIElQVjRfVENQIGZyYWdtZW50ZWQgcGFja2V0IHVzaW5nICJzY2FweSwgSXBlcmYi DQo+ID4gQW5kIGNoZWNrIHRoZSBmd2QgcGFja2V0IGZyb20gR1JPIGRpcmVjdGx5Lg0KPiA+DQo+ ID4gQlJzLA0KPiA+IFdpc2FtIEphZGRvDQo+ID4NCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiA+IEZyb206IEh1LCBKaWF5dSBbbWFpbHRvOmppYXl1Lmh1QGludGVsLmNvbV0NCj4g PiBTZW50OiBUdWVzZGF5LCBBdWd1c3QgMjksIDIwMTcgNDo1MSBBTQ0KPiA+IFRvOiBXaXNhbSBN b250aGVyDQo+ID4gQ2M6IHVzZXJzQGRwZGsub3JnOyBSYXNsYW4gRGFyYXdzaGVoOyBTaGFoYWYg U2h1bGVyDQo+ID4gU3ViamVjdDogUkU6IFVuYWJsZSB0byBtZXJnZSBwYWNrZXRzIHVzaW5nIEdS TyBmZWF0dXJlDQo+ID4NCj4gPiBIaSBXaXNhbSwNCj4gPg0KPiA+IEluIHRoZSBwaWN0dXJlIG9m IHlvdXIgZXhwZXJpbWVudCB0b3BvbG9neSwgSSBndWVzcyBOSUMgQiBpbiB0aGUgDQo+ID4gbWFj aGluZSBCIGlzIGNvbm5lY3RlZCB3aXRoIGFub3RoZXIgaW50ZXJmYWNlIHBoeXNpY2FsbHkuIElm IHNvLCB0aGUgDQo+ID4gcGFja2V0cyB0aGF0IHRjcGR1bXAgY2FwdHVyZXMgYXJlIGZyb20gdGhl IHBoeXNpY2FsIGxpbmsuIEhvd2V2ZXIsIA0KPiA+IHBhY2tldHMgYWZ0ZXIgR1JPZWQgYXJlIG11 bHRpLSBzZWdtZW50IGxhcmdlIHBhY2tldHMsIHdoaWNoIGFyZSANCj4gPiBsYXJnZXIgdGhhbiBN VFUuIEkgYW0gbm90IHN1cmUgaWYgeW91IGhhdmUgbWFrZSBvdGhlciBjb25maWd1cmF0aW9ucyAN Cj4gPiB0byBlbmFibGUgdGhlc2UgbGFyZ2UgcGFja2V0cyB0byBwYXNzIHRoZSBwaHlzaWNhbCBs aW5rLCBhbmQgdGhlcmUgDQo+ID4gaXMganVtYm8gZnJhbWUgc2l6ZSBsaW1pdCBmb3IgZGlmZmVy ZW50IE5JQ3MuIFNvIHdvdWxkIHlvdSBwbGVhc2UgdG8gDQo+ID4gY2hlY2sgdGhpcz8gQlRXLCB5 b3UgY2FuIHVzZSB0aGUgVk0gdG8gdGVzdCB0aGlzIEdSTyBmZWF0dXJlLCBzaW5jZSANCj4gPiBs YXJnZQ0KPiBwYWNrZXRzIGNhbiBhbHdheXMgcGFzcyB0byB0aGUgVk0uDQo+ID4NCj4gPiBUaGFu a3MsDQo+ID4gSmlheXUNCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g PiA+IEZyb206IFdpc2FtIE1vbnRoZXIgW21haWx0bzp3aXNhbW1AbWVsbGFub3guY29tXQ0KPiA+ ID4gU2VudDogTW9uZGF5LCBBdWd1c3QgMjgsIDIwMTcgMzozNyBQTQ0KPiA+ID4gVG86IEh1LCBK aWF5dSA8amlheXUuaHVAaW50ZWwuY29tPg0KPiA+ID4gQ2M6IHVzZXJzQGRwZGsub3JnOyBSYXNs YW4gRGFyYXdzaGVoIDxyYXNsYW5kQG1lbGxhbm94LmNvbT47DQo+IFNoYWhhZg0KPiA+ID4gU2h1 bGVyIDxzaGFoYWZzQG1lbGxhbm94LmNvbT4NCj4gPiA+IFN1YmplY3Q6IFJFOiBVbmFibGUgdG8g bWVyZ2UgcGFja2V0cyB1c2luZyBHUk8gZmVhdHVyZQ0KPiA+ID4NCj4gPiA+IEhpIEppYXl1LA0K PiA+ID4NCj4gPiA+IEknbSBzb3JyeSBmb3IgYm90aGVyaW5nIHlvdSwgYnV0IGNvdWxkIHlvdSBj b25mb3JtIHRoYXQgdGhlIA0KPiA+ID4gZmVhdHVyZSBpcyB3b3JraW5nIHByb2JhYmx5IEJlY2F1 c2UsIHdoYXQgSSBldmVyICBkaWQsIEkgY291bGRuJ3QgDQo+ID4gPiBnZXQgdGhlIG1lcmdlZCBw YWNrZXRzLg0KPiA+ID4NCj4gPiA+IEJScywNCj4gPiA+IFdpc2FtIEphZGRvDQo+ID4gPg0KPiA+ ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFdpc2FtIE1vbnRoZXIN Cj4gPiA+IFNlbnQ6IFRodXJzZGF5LCBBdWd1c3QgMjQsIDIwMTcgOToxNSBBTQ0KPiA+ID4gVG86 ICdIdSwgSmlheXUnDQo+ID4gPiBDYzogdXNlcnNAZHBkay5vcmc7IFJhc2xhbiBEYXJhd3NoZWg7 IFNoYWhhZiBTaHVsZXINCj4gPiA+IFN1YmplY3Q6IFJFOiBVbmFibGUgdG8gbWVyZ2UgcGFja2V0 cyB1c2luZyBHUk8gZmVhdHVyZQ0KPiA+ID4NCj4gPiA+IEhpLA0KPiA+ID4NCj4gPiA+IEknbSB1 c2luZyBNZWxsYW5veCBOSUNzLCBhbmQgaXQgaXMgc3VwcG9ydGluZyBwYXJzZSBwYWNrZXQgdHlw ZXMuDQo+ID4gPg0KPiA+ID4gQmVzdCByZWdhcmRzLA0KPiA+ID4gV2lzYW0gSmFkZG8NCj4gPiA+ DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogSHUsIEppYXl1 IFttYWlsdG86amlheXUuaHVAaW50ZWwuY29tXQ0KPiA+ID4gU2VudDogVGh1cnNkYXksIEF1Z3Vz dCAyNCwgMjAxNyA4OjQ3IEFNDQo+ID4gPiBUbzogV2lzYW0gTW9udGhlcg0KPiA+ID4gQ2M6IHVz ZXJzQGRwZGsub3JnOyBSYXNsYW4gRGFyYXdzaGVoOyBTaGFoYWYgU2h1bGVyDQo+ID4gPiBTdWJq ZWN0OiBSRTogVW5hYmxlIHRvIG1lcmdlIHBhY2tldHMgdXNpbmcgR1JPIGZlYXR1cmUNCj4gPiA+ DQo+ID4gPiBIaSwNCj4gPiA+DQo+ID4gPiBDYW4geW91IHRlbGwgbWUgd2hhdCdzIHRoZSBOSUMg dHlwZSBvZiB0aGUgR1JPLWVuYWJsZWQgcG9ydD8NCj4gPiA+DQo+ID4gPiBTaW5jZSBHUk8gbGli cmFyeSB1c2VzIG1idWYtPnBhY2tldF90eXBlIHRvIHBhcnNlIHBhY2tldCBoZWFkZXJzLCANCj4g PiA+IGFwcGxpY2F0aW9ucyBuZWVkIHRvIGZpbGwgdGhpcyB2YWx1ZSBiZWZvcmUgY2FsbGluZyBH Uk8gcmVhc3NlbWJseSBBUElzLg0KPiA+ID4gT3RoZXJ3aXNlLCB0aGUgR1JPIGNhbid0IHdvcmsg Y29ycmVjdGx5Lg0KPiA+ID4NCj4gPiA+IEluIGNzdW0gZm9yd2FyZGluZyBlbmdpbmUgb2YgdGVz dHBtZCwgcGFja2V0X3R5cGUgaXMgZmlsbGVkIGJ5IE5JQyBkcml2ZXJzLg0KPiA+ID4gVGhlIGNz dW0gZm9yd2FyZGluZyBlbmdpbmUgd29uJ3Qgc2V0IHRoaXMgdmFsdWUuIFNvIGlmIHlvdXIgTklD IA0KPiA+ID4gZG9lc27igJl0IHN1cHBvcnQgdG8gcGFyc2UgcGFja2V0IHR5cGVzLCB0aGUgdmFs dWUgb2YgcGFja2V0X3R5cGUgaXMNCj4gPiA+IDAgYW5kIEdSTyBjYW4ndCB3b3JrIGNvcnJlY3Rs eS4NCj4gPiA+DQo+ID4gPiBCUnMsDQo+ID4gPiBKaWF5dQ0KPiA+ID4NCj4gPiA+ID4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogV2lzYW0gTW9udGhlciBbbWFpbHRv Ondpc2FtbUBtZWxsYW5veC5jb21dDQo+ID4gPiA+IFNlbnQ6IFR1ZXNkYXksIEF1Z3VzdCAyMiwg MjAxNyA5OjI1IFBNDQo+ID4gPiA+IFRvOiBIdSwgSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbT4N Cj4gPiA+ID4gQ2M6IHVzZXJzQGRwZGsub3JnOyBSYXNsYW4gRGFyYXdzaGVoIDxyYXNsYW5kQG1l bGxhbm94LmNvbT47DQo+ID4gU2hhaGFmDQo+ID4gPiA+IFNodWxlciA8c2hhaGFmc0BtZWxsYW5v eC5jb20+DQo+ID4gPiA+IFN1YmplY3Q6IFJFOiBVbmFibGUgdG8gbWVyZ2UgcGFja2V0cyB1c2lu ZyBHUk8gZmVhdHVyZQ0KPiA+ID4gPg0KPiA+ID4gPiBZZXMgaXQgaXMsDQo+ID4gPiA+IFRoZSBm cmFnbWVudGVkIHBhY2tldHMgY29tZXMgZnJvbSBwb3J0MSAvIE5JQyBiIGZyb20gbWFjaGluZSBB IA0KPiA+ID4gPiB0byBwb3J0DQo+ID4gPiA+IDEgaW4gTklDIEEgZm9yIG1hY2hpbmUgYiBTbyBp dCdzIHJlY2VpdmVkIG9uIHRoZSBwb3J0ICcxJywgd2hpY2ggDQo+ID4gPiA+IGlzIGNvbmZpZ3Vy ZWQgZ3JvIGFjdGl2ZSBvbiB0aGlzIHBvcnQuDQo+ID4gPiA+DQo+ID4gPiA+IEJlc3QgcmVnYXJk cywNCj4gPiA+ID4gV2lzYW0gSmFkZG8NCj4gPiA+ID4NCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogSHUsIEppYXl1IFttYWlsdG86amlheXUuaHVAaW50 ZWwuY29tXQ0KPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBBdWd1c3QgMjIsIDIwMTcgNDoyMSBQTQ0K PiA+ID4gPiBUbzogV2lzYW0gTW9udGhlcg0KPiA+ID4gPiBDYzogdXNlcnNAZHBkay5vcmc7IFJh c2xhbiBEYXJhd3NoZWg7IFNoYWhhZiBTaHVsZXINCj4gPiA+ID4gU3ViamVjdDogUkU6IFVuYWJs ZSB0byBtZXJnZSBwYWNrZXRzIHVzaW5nIEdSTyBmZWF0dXJlDQo+ID4gPiA+DQo+ID4gPiA+IEhp LA0KPiA+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ ID4gRnJvbTogV2lzYW0gTW9udGhlciBbbWFpbHRvOndpc2FtbUBtZWxsYW5veC5jb21dDQo+ID4g PiA+ID4gU2VudDogVHVlc2RheSwgQXVndXN0IDIyLCAyMDE3IDc6MDcgUE0NCj4gPiA+ID4gPiBU bzogSHUsIEppYXl1IDxqaWF5dS5odUBpbnRlbC5jb20+DQo+ID4gPiA+ID4gQ2M6IHVzZXJzQGRw ZGsub3JnOyBSYXNsYW4gRGFyYXdzaGVoIDxyYXNsYW5kQG1lbGxhbm94LmNvbT47DQo+ID4gPiBT aGFoYWYNCj4gPiA+ID4gPiBTaHVsZXIgPHNoYWhhZnNAbWVsbGFub3guY29tPg0KPiA+ID4gPiA+ IFN1YmplY3Q6IFJFOiBVbmFibGUgdG8gbWVyZ2UgcGFja2V0cyB1c2luZyBHUk8gZmVhdHVyZQ0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gSGV5IEppYXl1LA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhh bmsgeW91IGZvciB5b3VyIHJlcGx5Lg0KPiA+ID4gPiA+IEkgdHJpZWQgd2hhdCB5b3Ugc2FpZCB3 aXRoIHRoZSBjc3VtIGF0IGZ3ZCBtb2RlLg0KPiA+ID4gPiA+IEV2ZW4gc28gdGhlIEdSTyBkaWRu J3Qgd29ya3MgZmluZS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEkgZXZlbiB0ZXN0ZWQgd2l0aCBh IG5ldyBtZXRob2RvbG9neS4NCj4gPiA+ID4gPiBUd28gbWFjaGluZXMgd2l0aCB0d28gZGlmZmVy ZW50IG5pYyBmb3IgZWFjaC4NCj4gPiA+ID4gPiBUaGUgbWV0aG9kb2xvZ3kgdGhhdCBJIHVzZWQg dG8gdGVzdCBpdCBpcyBkZXNjcmliZWQgaW4gdGhlIGF0dGFjaGVkIGZpbGUuDQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiBXaGF0IEkgZGlkIGZyb20gZ3JvIHNpZGU6DQo+ID4gPiA+ID4gIiIiDQo+ID4g PiA+ID4gdGVzdHBtZD5ncm8gb24gMQ0KPiA+ID4gPg0KPiA+ID4gPiBEb2VzIHRoZSBwb3J0IG51 bWJlciBvZiBOSUMgQSBpbiBtYWNoaW5lIEIgaXMgJzEnPyBXaGVuIHlvdSANCj4gPiA+ID4gZW5h YmxlIEdSTyBmb3IgcG9ydCAnMScsIFRlc3RwbWQgb25seSB0cmllcyB0byBtZXJnZSBwYWNrZXRz IA0KPiA+ID4gPiByZWNlaXZlZCBmcm9tIHBvcnQNCj4gPiAnMScuDQo+ID4gPiA+DQo+ID4gPiA+ IEJScywNCj4gPiA+ID4gSmlheXUNCj4gPiA+ID4NCj4gPiA+ID4gPiBUZXN0cG1kPnNldCBmd2Qg Y3N1bQ0KPiA+ID4gPiA+IFRlc3RwbWQ+c3RhcnQNCj4gPiA+ID4gPiAiIiINCj4gPiA+ID4gPiBB bmQgdGhlIHBhY2tldCB3aXRoIGNvcnJlY3QgZHN0IG1hYy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ IEJlc3QgcmVnYXJkcywNCj4gPiA+ID4gPiBXaXNhbSBKYWRkbw0KPiA+ID4gPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gRnJvbTogSmlheXUgSHUgW21haWx0bzpqaWF5 dS5odUBpbnRlbC5jb21dDQo+ID4gPiA+ID4gU2VudDogTW9uZGF5LCBBdWd1c3QgMjEsIDIwMTcg MTI6MTQgUE0NCj4gPiA+ID4gPiBUbzogV2lzYW0gTW9udGhlcg0KPiA+ID4gPiA+IENjOiBUaG9t YXMgTW9uamFsb247IHVzZXJzQGRwZGsub3JnOyBSYXNsYW4gRGFyYXdzaGVoOyBTaGFoYWYgDQo+ ID4gPiA+ID4gU2h1bGVyDQo+ID4gPiA+ID4gU3ViamVjdDogUmU6IFVuYWJsZSB0byBtZXJnZSBw YWNrZXRzIHVzaW5nIEdSTyBmZWF0dXJlDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBIaSwNCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IE9uIE1vbiwgQXVnIDIxLCAyMDE3IGF0IDA3OjI1OjIzQU0gKzAwMDAs IFdpc2FtIE1vbnRoZXIgd3JvdGU6DQo+ID4gPiA+ID4gPiBIZWxsbyBHdXlzLA0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSSBob3BlIHRoaXMgZmlu ZHMgeW91IHdlbGwsIEnigJltIHRyeWluZyB0byB0ZXN0IHRoZSBHUk8gZmVhdHVyZS4NCj4gPiA+ ID4gPiA+IEJ1dCBJ4oCZbSBzdHVjayB3aXRoIHRoaXMgc2NlbmFyaW8uDQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gQXMgeW91IGtub3csIEdSTyBpcyBvbmx5IHN1cHBvcnQgVENQX0lQVjQgcGFj a2V0IHVudGlsIG5vdy4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBTbyBJ4oCZbSB0cnlpbmcg dG8gdGVzdCB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZiB0aGUgDQo+ID4gPiA+ID4gPiBmZWF0 dXJlLCBhcw0KPiA+IGZvbGxvd2luZzoNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBTdGFydCB0 ZXN0cG1kOg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IOKAnOKAneKAnQ0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+IC4veDg2XzY0LW5hdGl2ZS1saW51eGFwcC1nY2MvYnVpbGQvYXBwL3Rlc3Qt cG1kL3Rlc3RwbWQgLW4gNCANCj4gPiA+ID4gPiA+IC13DQo+ID4gPiA+ID4gPiAwMDowYS4wICAt dw0KPiA+ID4gPiA+ID4gMDA6MDkuMCAtLSAgLS1idXJzdD02NCAtLW1iY2FjaGU9NTEyIC0tcG9y dG1hc2sgMHhmIC1pDQo+ID4gPiA+ID4gPiAtLXR4ZD01MTINCj4gPiA+ID4gPiA+IC0tcnhkPTUx Mg0KPiA+ID4gPiA+ID4gLS1uYi1jb3Jlcz05ICAtLXJ4cT0yIC0tdHhxPTIgLS10eHFmbGFncz0w DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g4oCc4oCd4oCdDQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGVuIGVuYWJsZSBHUk8gYXQgdGhlIHR3 byBwb3J0czoNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiDigJzigJ3igJ0NCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiBUZXN0cG1kPmdybyBvbiAwDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g VGVzdHBtZD5ncm8gb24gMQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gV2hlbiB1c2UgR1JPIGluIHRl c3RwbWQsIHRoZXJlIGFyZSBmb2xsb3dpbmcgdGhpbmdzIHRvIG5vdGljZToNCj4gPiA+ID4gPg0K PiA+ID4gPiA+IDEuIEluIHRlc3RwbWQsIEdSTyBpcyBzdXBwb3J0ZWQgYnkgY3N1bSBmb3J3YXJk aW5nIGVuZ2luZS4NCj4gPiA+ID4gPiBUaGVyZWZvcmUsIHBsZWFzZSB1c2UgJ3NldCBmd2QgY3N1 bScgdG8gc3dpdGNoIGZvcndhcmRpbmcgZW5naW5lLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gMi4g QnkgZGVmYXVsdCwgY3N1bSBmb3J3YXJkaW5nIGVuZ2luZSBjb21wdWxzb3JpbHkgY2hhbmdlcyAN Cj4gPiA+ID4gPiBldGhlcm5ldCBhZGRyZXNzZXMuIFNvIHBsZWFzZSBtYWtlIHN1cmUgdGhhdCBN QUMgYWRkcmVzc2VzIGFyZQ0KPiA+IGNvcnJlY3QuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAzLiBX aGVuIGVuYWJsZSBHUk8gZm9yIHBvcnQwLCBjc3VtIGZvcndhcmRpbmcgZW5naW5lIHdpbGwgDQo+ ID4gPiA+ID4gbWVyZ2UgcGFja2V0cyByZWNlaXZlZCBmcm9tIHBvcnQwLiBJZiB0aGVyZSBhcmUg bm8gcGFja2V0cyANCj4gPiA+ID4gPiBmcm9tIHBvcnQxIHRvIHBvcnQwLCB5b3UgZG9uJ3QgbmVl ZCB0byBlbmFibGUgR1JPIGZvciBwb3J0MS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IDQuIEdSTyBs aWJyYXJ5IGRvZXNuJ3QgcmUtY2FsY3VsYXRlIGNoZWNrc3VtcyBmb3IgbWVyZ2VkIHBhY2tldHMu DQo+ID4gPiA+ID4gSWYgeW91IHdhbnQgbWVyZ2VkIHBhY2tldHMgaGF2ZSBjb3JyZWN0IGNoZWNr c3VtLCBwbGVhc2UgDQo+ID4gPiA+ID4gc2VsZWN0IEhXIElQIGFuZCBIVyBUQ1AgY2hlY2tzdW0g Y2FsY3VsYXRpb24gZm9yIHRoZSBwb3J0IA0KPiA+ID4gPiA+IHdoaWNoIHRoZSBtZXJnZWQgcGFj a2V0cyBhcmUgdHJhbnNtaXR0ZWQgdG8gaW4gY3N1bSBmb3J3YXJkaW5nIGVuZ2luZS4NCj4gPiA+ ID4gPiBUaGlzIGlzIGJlY2F1c2UgdGhlIG1lcmdlZCBwYWNrZXRzIGFyZSBtdWx0aS1zZWdtZW50 IG1idWZzLCANCj4gPiA+ID4gPiBidXQgY3N1bSBmb3J3YXJkaW5nIGVuZ2luZSBkb2Vzbid0IHN1 cHBvcnQgdG8gY2FsY3VsYXRlIA0KPiA+ID4gPiA+IGNoZWNrc3VtcyBmb3IgbXVsdGktc2VnbWVu dCBtYnVmcyBpbiBTVy4gU28gd2UgbmVlZCB0byBzZWxlY3QgDQo+ID4gPiA+ID4gSFcgY2hlY2tz dW0NCj4gPiA+IG9mZmxvYWRpbmcuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBlLmcuIElmIGRhdGEg ZmxvdyBpcyAicGFja2V0cyAtPiBwb3J0MCAtPiBwb3J0MSIsIGNvbW1hbmRzIA0KPiA+ID4gPiA+ IHVzZWQgaW4NCj4gPiA+IHRlc3RwbWQ6DQo+ID4gPiA+ID4gCWdybyBvbiBwb3J0MA0KPiA+ID4g PiA+IAlzZXQgZndkIGNzdW0NCj4gPiA+ID4gPiAJY3N1bSBzZXQgaXAgaHcgcG9ydDENCj4gPiA+ ID4gPiAJY3N1bSBzZXQgdGNwIGh3IHBvcnQxDQo+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4g PiA+IEJlc2lkZXMsIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdXIgUE1EIGRyaXZlciBk b2Vzbid0IA0KPiA+ID4gPiA+IHVzZSB2ZWN0b3IgVFggZnVuY3Rpb24sIHNpbmNlIHZlY3RvciBm dW5jdGlvbiBkb2Vzbid0IHN1cHBvcnQgDQo+ID4gPiA+ID4gY2hlY2tzdW0NCj4gPiA+IG9mZmxv YWRpbmcuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiDigJzigJ3igJ0NCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEFuZCB0cnlp bmcgdG8gc2VuZCBUQ1BfSVBWNCBmcmFnbWVudGVkIHBhY2tldCDigJxwYWNrZXQgd2l0aCANCj4g PiA+ID4gPiA+IGxlbmd0aA0KPiA+ID4gPiA+ID4gMTUwMCBmcmFnbWVudGVkIHRvIHRocmVlIHBh Y2tldHMgb2YgNTAw4oCdDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g4oCc4oCd4oCdDQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gcD1FdGhlcihzcmM9Z2V0X2lmX2h3YWRkcignZW5zMTAnKSwg ZHN0PQ0KPiA+ID4gPiA+ID4gJzI0OjhBOjA3Ojg4OjI2OjZCJykvSVAoKS9UQ1AoKQ0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IHAuYWRkX3BheWxvYWQoJ0YnKigxNTAwIC0gbGVuKHApKSkNCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBmcmFncz1mcmFnbWVudChwLGZyYWdzaXplPTUwMCkNCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBmb3IgZnJhZ21lbnQgaW4gZnJhZ3M6DQo+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gICAgICBzZW5kcChmcmFnbWVudCwgaWZhY2U9J2VuczEwJykNCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiDigJzigJ3igJ0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEJ1dCB0aGUgdGVzdHBtZCBmb3J3YXJkIHRoZSBwYWNr ZXRzIGFzIGl0IGlzLCDigJwgZG9lc27igJl0IGRvIGFueSBtZXJnZeKAnQ0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gVGNwZHVtcCBhdCB0aGUgVEcg c2lkZSwNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGUgc2VuZGluZyBmcmFnbWV0cyB1c2lu ZyBlbnMxMDoNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAjdGNwZHVtcCDigJNJIGVuczEwIOKA k3Z2dmVuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gMTU6NDU6MjkuMDgzNTE0IDI0OjhhOjA3 Ojg4OjI2OjViID4gMjQ6OGE6MDc6ODg6MjY6NmIsIA0KPiA+ID4gPiA+ID4gZXRoZXJ0eXBlDQo+ ID4gPiA+ID4gPiBJUHY0ICgweDA4MDApLCBsZW5ndGggNTM4OiAodG9zIDB4MCwgdHRsIDY0LCBp ZCAxLCBvZmZzZXQgMCwgDQo+ID4gPiA+ID4gPiBmbGFncyBbK10sIHByb3RvIE9wdGlvbnMgKDAp LCBsZW5ndGggNTI0KQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAgICAxMjcuMC4wLjEgPiAx MjcuMC4wLjE6ICBpcC1wcm90by0wIDUwNA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IDE1OjQ1 OjI5LjExNTI2NiAyNDo4YTowNzo4ODoyNjo1YiA+IDI0OjhhOjA3Ojg4OjI2OjZiLCANCj4gPiA+ ID4gPiA+IGV0aGVydHlwZQ0KPiA+ID4gPiA+ID4gSVB2NCAoMHgwODAwKSwgbGVuZ3RoIDUzODog KHRvcyAweDAsIHR0bCA2NCwgaWQgMSwgb2Zmc2V0IA0KPiA+ID4gPiA+ID4gNTA0LCBmbGFncyBb K10sIHByb3RvIE9wdGlvbnMgKDApLCBsZW5ndGggNTI0KQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ICAgICAxMjcuMC4wLjEgPiAxMjcuMC4wLjE6IGlwLXByb3RvLTANCj4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiAxNTo0NToyOS4xNDcyNTggMjQ6OGE6MDc6ODg6MjY6NWIgPiAyNDo4YTowNzo4 ODoyNjo2YiwgDQo+ID4gPiA+ID4gPiBldGhlcnR5cGUNCj4gPiA+ID4gPiA+IElQdjQgKDB4MDgw MCksIGxlbmd0aCA0OTI6ICh0b3MgMHgwLCB0dGwgNjQsIGlkIDEsIG9mZnNldCANCj4gPiA+ID4g PiA+IDEwMDgsIGZsYWdzIFtub25lXSwgcHJvdG8gT3B0aW9ucyAoMCksIGxlbmd0aCA0NzgpDQo+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gICAgIDEyNy4wLjAuMSA+IDEyNy4wLjAuMTogaXAtcHJv dG8tMA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g I3RjcGR1bXAgLWkgZW5zOSDigJN2dnZlbiAgLy8vIGhlcmUgd2lsbCBiZSByZWNlaXZlZCB0aGUg DQo+ID4gPiA+ID4gPiBmb3J3YXJkZWQgcGFja2V0cyBmcm9tDQo+ID4gPiA+ID4gPiB0ZXN0cG1k Og0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IDE1OjQ1OjI5LjA4Mzk5NiAyNDo4YTowNzo4ODoy Njo1YiA+IDI0OjhhOjA3Ojg4OjI2OjZiLCANCj4gPiA+ID4gPiA+IGV0aGVydHlwZQ0KPiA+ID4g PiA+ID4gSVB2NCAoMHgwODAwKSwgbGVuZ3RoIDUzODogKHRvcyAweDAsIHR0bCA2NCwgaWQgMSwg b2Zmc2V0IDAsIA0KPiA+ID4gPiA+ID4gZmxhZ3MgWytdLCBwcm90byBPcHRpb25zICgwKSwgbGVu Z3RoIDUyNCkNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgICAgMTI3LjAuMC4xID4gMTI3LjAu MC4xOiAgaXAtcHJvdG8tMCA1MDQNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAxNTo0NToyOS4x MTU0MjUgMjQ6OGE6MDc6ODg6MjY6NWIgPiAyNDo4YTowNzo4ODoyNjo2YiwgDQo+ID4gPiA+ID4g PiBldGhlcnR5cGUNCj4gPiA+ID4gPiA+IElQdjQgKDB4MDgwMCksIGxlbmd0aCA1Mzg6ICh0b3Mg MHgwLCB0dGwgNjQsIGlkIDEsIG9mZnNldCANCj4gPiA+ID4gPiA+IDUwNCwgZmxhZ3MgWytdLCBw cm90byBPcHRpb25zICgwKSwgbGVuZ3RoIDUyNCkNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAg ICAgMTI3LjAuMC4xID4gMTI3LjAuMC4xOiBpcC1wcm90by0wDQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gMTU6NDU6MjkuMTQ3NDkyIDI0OjhhOjA3Ojg4OjI2OjViID4gMjQ6OGE6MDc6ODg6MjY6 NmIsIA0KPiA+ID4gPiA+ID4gZXRoZXJ0eXBlDQo+ID4gPiA+ID4gPiBJUHY0ICgweDA4MDApLCBs ZW5ndGggNDkyOiAodG9zIDB4MCwgdHRsIDY0LCBpZCAxLCBvZmZzZXQgDQo+ID4gPiA+ID4gPiAx MDA4LCBmbGFncyBbbm9uZV0sIHByb3RvIE9wdGlvbnMgKDApLCBsZW5ndGggNDc4KQ0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+ICAgICAxMjcuMC4wLjEgPiAxMjcuMC4wLjE6IGlwLXByb3RvLTAN Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gQW0gSSBkb2luZyBzb21ldGhpbmcgd3Jvbmc/ISBPciBpdCBp cyBhIGJ1Zy4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiDDqCBBcyB5b3Ugc2VlIHRoZSB0Y3Bk dW1wIHNob3dzIHRoZSBvZmZzZXQgb2YgZWFjaCBmcmFnbWVudCwgDQo+ID4gPiA+ID4gPiBhbmQg dGVzdHBtZCBwcmludHMgTDRfRlJBRywgc28gdGhlIGJvdGggYXJlIHJlY29nbml6aW5nIHRoYXQg DQo+ID4gPiA+ID4gPiB0aGlzIGlzIGENCj4gPiA+ID4gPiBmcmFnbWVudGVkIHBhY2tldC4NCj4g PiA+ID4gPg0KPiA+ID4gPiA+IEdSTyBsaWJyYXJ5IG1lcmdlcyBUU09lZC9HU09lZCBwYWNrZXRz LCB3aG9zZSBJUCBJRHMgYW5kIFRDUA0KPiA+ID4gPiBzZXF1ZW5jZXMNCj4gPiA+ID4gPiBhcmUg Ym90aCBjb25zZWN1dGl2ZS4gSWYgaW5wdXQgcGFja2V0cyBoYXZlIHNhbWUgSVAgSURzLCBubyAN Cj4gPiA+ID4gPiBwYWNrZXRzIHdpbGwgYmUgbWVyZ2VkLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g QlRXLCB5b3UgY2FuIHVzZSBpcGVyZiB0byB0ZXN0IEdSTyBmZWF0dXJlLg0KPiA+ID4gPiA+DQo+ ID4gPiA+ID4gQmVzdCBSZWdhcmRzLA0KPiA+ID4gPiA+IEppYXl1DQo+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEJlc3QgcmVnYXJk cywNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBXaXNhbSBKYWRkbw0KPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0K