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 2BAE7A3160 for ; Wed, 9 Oct 2019 17:36:30 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id F1A411E9B0; Wed, 9 Oct 2019 17:36:29 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 2DAE41E9A6 for ; Wed, 9 Oct 2019 17:36:28 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x99FRbSK029315; Wed, 9 Oct 2019 08:36:27 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=GXhY++Jgi8diWJ4JP+dghh+pGqDW99DWNL/TSmQK2h4=; b=iPhWHG2cGOVMxx/Qgf9Doc4c4eeFQI0Yi4AJg35XFpqTLULd2ux6w3vxlIbq9k12XM+U OHwKF+E4iTVZ2yMprrogxhkoSAohb7ystWyTmHAFMbXo2/UJvyy6pAj6DjSnFn/AdQQ5 xiL292FGXSyc5gWWBnVUvoc75EpryaSAYCAjHMWfyX0/4V5rOMauvOdj+Fy1Wmn9VVEN TJ3ldXEWbeL5E4QdrZBXyQhN2aJM7Y1qSsVF6BjqqY6SZ1djk2WgB+pCAdoxVa5+Jd1z XfrR6Rs60DDEXiidWXT7ssvZ9OaxPu2hN+erxYHYtG/dsMlT5Rt0HGQhCVb+qV1TO4SR jQ== Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0a-0016f401.pphosted.com with ESMTP id 2vh5rqjqgp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 09 Oct 2019 08:36:27 -0700 Received: from SC-EXCH02.marvell.com (10.93.176.82) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Wed, 9 Oct 2019 08:36:26 -0700 Received: from NAM04-SN1-obe.outbound.protection.outlook.com (104.47.44.56) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Wed, 9 Oct 2019 08:36:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MXii6x3vMoIf/NRzufWXw7PBRDHuZOv1utlbY1PTVV2LZs3NRy3dEVToFsIIdzA54tmbUtSobf/SRk0jI43tM/+1OlQGvFXRrb6K20h29VMbV37EyVaVwOv8PyEJvDoTy46d1mXyF1txfkRqFlqmg0tIUrssjKohoiiRlCwL8ThJ22Rmfx0zOXmWaZop9rbDwC+JrU71H3UWLpe+Hdi/6pKFcO5y28A2mGjIyZV/fgZPqBo5NniyAyR+7pKH66xD+Ov83a8MgNnxm3DR5taZR6sHR7eSNX/3kbMW93PrYztBiwPnGl/HHAiMgAUsc97WcZqrjqmvFMw53N/L/F8ltg== 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=GXhY++Jgi8diWJ4JP+dghh+pGqDW99DWNL/TSmQK2h4=; b=Vudz3PgobB/y2pqG9ORvnmz7XgmflAqgoqJPlxXgiLhFXexuPNAHo18+melOF9djJNh51GBED3naSezpEGdZ9s1u4824HybcAzhMn7UcJ2DPseRsxrIY1Uxy4OUE/IRr23ZD4zGvbLk/PcNzi1/WPRr8TpMqvNNlnd+Bo2JC7zliribf0JhI+zqTj1/Lc9dMp/Ip5RD9oYb+HzAgQD3pRNikyozhkEhta+U+SiWP6u4bzGGh22EyGMsBc2jkoSjonDp0HMG2dSN6sug5lKUBej4nB4mRSJHiQg1R0yBLB0KeR74HcB9KzsSDHm4scQ0Trg+0iGn5LBBuaw4juOpI3g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector2-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GXhY++Jgi8diWJ4JP+dghh+pGqDW99DWNL/TSmQK2h4=; b=YvZiGbdoUR4Ndi/HaEeDXiAjvy7Ta1RehRo33mhcIk1Njrf0PGeqbM//hD75uLOLLzYKBNZ+qexSJvDeHj9kp7Y45r26eACudfb+q3YvWCB2MnHk+5fJKccUn95GplXvtR3EWrGMjZghkgJv35HeJWyZnmwPPItgr2NY0PmJxTM= Received: from MN2PR18MB2877.namprd18.prod.outlook.com (20.179.20.218) by MN2PR18MB3197.namprd18.prod.outlook.com (10.255.239.205) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2347.16; Wed, 9 Oct 2019 15:36:22 +0000 Received: from MN2PR18MB2877.namprd18.prod.outlook.com ([fe80::6d15:3367:4c9:5385]) by MN2PR18MB2877.namprd18.prod.outlook.com ([fe80::6d15:3367:4c9:5385%7]) with mapi id 15.20.2327.025; Wed, 9 Oct 2019 15:36:22 +0000 From: Anoob Joseph To: "Ananyev, Konstantin" , "Smoczynski, MarcinX" , "akhil.goyal@nxp.com" CC: "dev@dpdk.org" , Jerin Jacob Kollanukkaran , Narayana Prasad Raju Athreya , Archana Muniganti Thread-Topic: [dpdk-dev] [PATCH v3 0/3] add fallback session Thread-Index: AQHVcgRo85zyvQn15EqlYfBjRx4gCqc9gzWQgABnUACAAOcWgIAFcQcAgAAK3fCABMEHgIABgJgg Date: Wed, 9 Oct 2019 15:36:20 +0000 Message-ID: References: <20190904141642.14820-1-marcinx.smoczynski@intel.com> <20190923114415.17932-1-marcinx.smoczynski@intel.com> <2601191342CEEE43887BDE71AB977258019196B087@irsmsx105.ger.corp.intel.com> <2601191342CEEE43887BDE71AB977258019196D5B4@irsmsx105.ger.corp.intel.com> <2601191342CEEE43887BDE71AB97725801919709C0@irsmsx105.ger.corp.intel.com> In-Reply-To: <2601191342CEEE43887BDE71AB97725801919709C0@irsmsx105.ger.corp.intel.com> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [122.175.98.131] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3c9b6724-d67b-4e9c-2aa7-08d74cce701c x-ms-traffictypediagnostic: MN2PR18MB3197: x-ms-exchange-purlcount: 4 x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:33; x-forefront-prvs: 018577E36E x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(136003)(39860400002)(366004)(396003)(346002)(376002)(13464003)(199004)(189003)(64756008)(66556008)(6246003)(256004)(76116006)(478600001)(446003)(8676002)(14454004)(81156014)(81166006)(4326008)(19627235002)(14444005)(5660300002)(11346002)(26005)(966005)(2906002)(66476007)(107886003)(66446008)(476003)(186003)(3846002)(66946007)(486006)(6116002)(52536014)(33656002)(305945005)(55016002)(25786009)(6436002)(7736002)(316002)(74316002)(66066001)(6306002)(30864003)(54906003)(99286004)(110136005)(71190400001)(71200400001)(229853002)(2501003)(102836004)(53546011)(76176011)(7696005)(8936002)(86362001)(6506007)(9686003)(579004)(559001); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB3197; H:MN2PR18MB2877.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 74vy9Gnn+VsY1w7iebFMusqIWcnVEy5AsMN10eExqE5Rq5EcuP2nTBJsf0gHLroqudYTDuwcdT7Jxz37SRlgNKc7oz2Ia70srT5CX2m08xh0Icud5y5iG1F8+NJFkRF0uoG5F3lEa1Lhiclh2d4qDgqXaTM8YMM2ttZQb0rkiHNbtkIFw11gCzxAK6RbAk6LisRg+JdwYugQDgs5/XmoRIDoSdmornLt1PTUjS42X3VuLwqM6X0AxRgDxcUzEqSJi2tUeI2/ln21+LW/9lPSkn79q7ZswbJRP5RADhRNq+1f+9L0tMsBH0YMWmqCP4qvk2rbWrVfAoVt4N2QYC0eF7fY4EpgMYOCDQ5tKlVoFkt3nHcrLt4FmnZbf1hz8KgjmE6c4n3oAnBWqhjC6wIiVRuGU0T4Y5kZkKNh81oNj4nStgJWuOmjdxoU/x018SasOWw7kJz8YWpF0ag7ruBNzw== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 3c9b6724-d67b-4e9c-2aa7-08d74cce701c X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Oct 2019 15:36:21.6367 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: yQt8VUTAZGU8lGIYBRoydWik+QkkwjalRPYiR/Z7tBAjfz4l6EHxO4BYPpX/lZ+9VFzl9l8b2nJe4J8P5EibFA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR18MB3197 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,1.0.8 definitions=2019-10-09_07:2019-10-08,2019-10-09 signatures=0 Subject: Re: [dpdk-dev] [PATCH v3 0/3] add fallback session 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" SGkgS29uc3RhbnRpbiwNCg0KRm9sbG93aW5nIGFyZSB0aGUgbWFpbiBpc3N1ZXMgSSBoYWQgaWRl bnRpZmllZCwNCg0KMS4gRG9lc24ndCB3b3JrIGZvciBpbmxpbmUgcHJvdG9jb2wgb2ZmbG9hZCAo dGhlIHBsYW4gaXRzZWxmIHdvbid0IHNjYWxlIGZvciB0aGF0IGNhc2UpDQoyLiBJZ25vcmVzIHRo ZSBkYXRhIGZyb20gdGhlIGgvdyBsb29rdXANCjMuIFRoZSBmYWxsYmFjayBzdXBwb3J0IGlzIGFj dHVhbGx5IHN1cHBvcnRlZCBpbiBpcHNlYy1zZWNndyAoYXBwbGljYXRpb24pIGluc3RlYWQgb2Yg bGlicnRlX2lwc2VjLg0KNC4gUmVvcmRlcmluZyBpc3N1ZS4NCjUuIEludHJvZHVjZXMgY2hlY2tz IGluIGV4aXN0aW5nIGRhdGEgcGF0aCBldmVuIHdoZW4gdGhlIGZlYXR1cmUgaXMgbm90IHByb3Bl cmx5IGltcGxlbWVudGVkL2lzIG5vdCBzdWl0YWJsZSBmb3Igb3RoZXIgUE1Ecy4NCg0KRm9yIElz c3VlICMxLCBJIGdldCB0aGF0IEludGVsIGRvZXNuJ3QgaGF2ZSBwbGFucyB0byBzdXBwb3J0IHRo ZSBmZWF0dXJlIGFuZCB3b24ndCBiZSBzdWJtaXR0aW5nIGFueXRoaW5nIGluIHRoYXQgZGlyZWN0 aW9uLiBCdXQgYWRkaW5nIGNvZGUgdGhhdCBmdXJ0aGVyIGV4YWNlcmJhdGVzIHRoZSBzaXR1YXRp b24gaXMgcHJvYmFibHkgbm90IGRlc2lyZWQuDQoNCkZvciBJc3N1ZSAjMiwgc2luY2UgaXBzZWMt c2VjZ3cgaXMgbm90IHV0aWxpemluZyB0aGUgaC93IGxvb2t1cCBkYXRhLCB0aGUgc29sdXRpb24g aGVyZSBmb2xsb3dzIHN1aXQgYW5kIGlzIHByZXZlbnRpbmcgb3RoZXIgdXNhZ2UgbW9kZWxzIG9m IHRoZSBoYXJkd2FyZSB3aGljaCBhcmUgYWxsb3dlZCBieSB0aGUgbGlicmFyeS4NCg0KRm9yIElz c3VlICMzLCBsaWJydGVfaXBzZWMgaXMgc3RpbGwgZXhwZXJpbWVudGFsIGFuZCBpcyBqdXN0IDIt MyByZWxlYXNlcyBvbGQuIEl0IGhhcyBzY29wZSBmb3IgaW1wcm92ZW1lbnQgYW5kIGFsbCB0aGVz ZSBmZWF0dXJlcyB3b3VsZCd2ZSBhZGRlZCB2YWx1ZSB0byBpdHMgdXRpbGl0eS4gTm8gc3Ryb25n IGZlZWxpbmdzIGhlcmUuDQoNCkZvciBJc3N1ZSAjNCwgZ2xhZCB0aGF0IHlvdSBkb2N1bWVudGVk IHRoYXQgaXNzdWUuDQoNCkZvciBJc3N1ZSAjNSwgaW4geW91ciByZXBseSB5b3UgaGFkIG1lbnRp b25lZCB0aGF0IHRoZXJlIGlzIG5vIGFkZGl0aW9uYWwgY2hlY2sgZG9uZS4gSSBzZWUgYXRsZWFz dCBmZXcgY2hlY2tzIGluIHRoZSBkYXRhcGF0aC4gU2luY2UgdGhlIGZlYXR1cmUgaXRzZWxmIGlz IGV4cGVyaW1lbnRhbCwgaXQgd291bGQgYmUgbGVzcyBjb250ZW50aW91cyBpZiBpdCB3YXMgaW50 cm9kdWNlZCBhcyBhIG5ldyBkYXRhIHBhdGguDQoNCkFsc28sIHRvIHF1b3RlIGZyb20gdGhlIHJl cGx5LA0KDQo+ID4gW0Fub29iXSBTaG91bGRuJ3Qgd2UgZ2V0IHRoYXQgYWNjZXB0ZWQgZmlyc3Qg dGhlbj8NCj4gDQo+IEkgZG9uJ3QgdGhpbmsgc28uDQo+IEN1cnJlbnQgaW1wbGVtZW50YXRpb24g ZG9lcyBwcm92aWRlIGV4cGVjdGVkIGZ1bmN0aW9uYWxpdHkgKHdpdGgga25vd24NCj4gbGltaXRh dGlvbnMpLg0KPiBJbiBmdXR1cmUsIHdlIGNhbiB0cnkgdG8gaW1wcm92ZSBpdCBhbmQvb3IgcmVt b3ZlIGV4aXN0aW5nIGxpbWl0YXRpb25zLg0KPiBUaGF0J3MgYSBjb21tb24gaXRlcmF0aW9uIGRl dmVsb3BtZW50IGFwcHJvYWNoIHRoYXQgaXMgdXNlZCB0aG91Z2ggd2hvbGUNCj4gRFBESzoNCj4g LSBwcm92aWRlIGluaXRpYWwgc29sdXRpb24gd2l0aCBiYXNpYyBmdW5jdGlvbmFsaXR5IGZpcnN0 DQo+IC0gaW1wcm92ZS9leHRlbmQgd2l0aCBmdXR1cmUgcmVsZWFzZXMvcGF0Y2hlcw0KDQpJZiB5 b3VyIHN1Z2dlc3Rpb24gaXMgdG8gc3RpY2sgdG8gYWJvdmUgZ3VpZGVsaW5lcywgSSBkb24ndCB0 aGluayB0aGVyZSBpcyBhbnkgcG9pbnQgaW4gcHVzaGluZyBhbnkgZnVydGhlci4gSSBsZWF2ZSB0 aGlzIHRvIG1haW50YWluZXJzIHRvIGRlY2lkZS4gSSB3b3VsZCBhc3N1bWUgdGhlIHNhbWUgcnVs ZXMgd291bGQgYXBwbHkgdG8gZXZlcnkgZmVhdHVyZSB0aGF0IGlzIGJlaW5nIGF0dGVtcHRlZC4N Cg0KVGhhbmtzLA0KQW5vb2INCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t OiBkZXYgPGRldi1ib3VuY2VzQGRwZGsub3JnPiBPbiBCZWhhbGYgT2YgQW5hbnlldiwgS29uc3Rh bnRpbg0KPiBTZW50OiBUaHVyc2RheSwgT2N0b2JlciAzLCAyMDE5IDg6MTYgUE0NCj4gVG86IEFu b29iIEpvc2VwaCA8YW5vb2JqQG1hcnZlbGwuY29tPjsgU21vY3p5bnNraSwgTWFyY2luWA0KPiA8 bWFyY2lueC5zbW9jenluc2tpQGludGVsLmNvbT47IGFraGlsLmdveWFsQG54cC5jb20NCj4gQ2M6 IGRldkBkcGRrLm9yZzsgSmVyaW4gSmFjb2IgS29sbGFudWtrYXJhbiA8amVyaW5qQG1hcnZlbGwu Y29tPjsgTmFyYXlhbmENCj4gUHJhc2FkIFJhanUgQXRocmV5YSA8cGF0aHJleWFAbWFydmVsbC5j b20+OyBBcmNoYW5hIE11bmlnYW50aQ0KPiA8bWFyY2hhbmFAbWFydmVsbC5jb20+DQo+IFN1Ympl Y3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2MyAwLzNdIGFkZCBmYWxsYmFjayBzZXNzaW9uDQo+ IA0KPiBIaSBBbm9vYiwNCj4gDQo+ID4gPiA+ID4gPiBJJ3ZlIGZldyBtb3JlIG9ic2VydmF0aW9u cyByZWdhcmRpbmcgdGhlIHByb3Bvc2VkIGZlYXR1cmUuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gMS4gRnJvbSB3aGF0IEkgdW5kZXJzdG9vZCwgaWYgYW4gRVNQIHBhY2tldCBlbmRzIHVwIG9u IGFuDQo+ID4gPiA+ID4gPiB1bnByb3RlY3RlZCBpbnRlcmZhY2UgYW5kIGRvZXNuJ3QgaGF2ZSAn UEtUX1JYX1NFQ19PRkZMT0FEJw0KPiA+ID4gPiA+ID4gYml0IHNldCwgdGhlbiB0aGUgcGFja2V0 DQo+ID4gPiA+ID4gd291bGQgYmUgbG9va2VkIHVwIHRvIHNlZSB0aGUgYXNzb2NpYXRlZCBTQSBh bmQgdGhlbiBmYWxsYmFjaw0KPiA+ID4gPiA+IHNlc3Npb24gaXMgZmlndXJlZCBvdXQgYW5kIHRo ZW4gZnVydGhlciBwcm9jZXNzaW5nIGlzIGRvbmUuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g Q2FuIHlvdSBjb25maXJtIGlmIEkgdW5kZXJzdG9vZCB0aGUgc2VxdWVuY2UgY29ycmVjdGx5PyBJ Zg0KPiA+ID4gPiA+ID4geWVzLCB0aGVuIGFyZW4ndCB3ZSBkb2luZyBhbiBleHRyYSBsb29rdXAg aW4gdGhlIHMvdz8gVGhlDQo+ID4gPiA+ID4gPiBwYWNrZXQgbWF5IGJlIGxvb2tlZCBieSB0aGUg aC93IHVzaW5nIHJ0ZV9mbG93IGFuZCB0aGF0DQo+ID4gPiA+ID4gPiBpbmZvcm1hdGlvbiBjb3Vs ZCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUNCj4gPiA+ID4gPiBTQS4gQWxzbywgaWYgdGhlIEVT UCBwYWNrZXQgaXMgZXhwZWN0ZWQgdG8gYmUgZm9yd2FyZGVkLCB0aGVuDQo+ID4gPiA+ID4gdGhl IGFib3ZlIGxvZ2ljIHdpbGwgYWRkIGFuIHVubmVjZXNzYXJ5IGxvb2t1cCBldmVuIGFmdGVyIHlv dXINCj4gPiA+ID4gPiBoL3cgaGFzIGRldGVjdGVkIHRoYXQgdGhlIHBhY2tldCBuZWVkIG5vdCBi ZSBzZWN1cml0eSBwcm9jZXNzZWQuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBOb3Qgc3VyZSBJIHVu ZGVyc3Rvb2QgeW91ciB3aG9sZSBzdGF0ZW1lbnQgYWJvdmUuDQo+ID4gPiA+ID4gQUZBSUssIHJp Z2h0IG5vdyAod2l0aCBkcGRrIG1hc3RlcikgZm9yIHVucHJvdGVjdGVkIGlmYWNlIGl0IHdvcmtz IGxpa2UNCj4gdGhhdDoNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IDEuICBzbGl0IGluY29taW5nIHRy YWZmaWMgaW50byAzIGdyb3VwczogRVNQIHBhY2tldHMsIElQdjQNCj4gPiA+ID4gPiBwYWNrZXRz LCBJUHY2DQo+ID4gPiBwYWNrZXRzLg0KPiA+ID4gPiA+IEZvciBFU1AgcGFja2V0czoNCj4gPiA+ ID4gPiAyLiBwZXJmb3JtIFNBRCBsb29rdXANCj4gPiA+ID4gPiAgICAgYS4gaWYgaXQgZmFpbHMg KG5vbiBTQSBmb3VuZCBmb3IgdGhhdCBTUEkpLCB0aGVuIGRyb3AgdGhlIHBhY2tldC4NCj4gPiA+ ID4gPiAgICAgYi4gb3RoZXJ3aXNlIChTQSBmb3VuZCkgcHJvY2VzcyB0aGUgcGFja2V0IHVzaW5n IGZvdW5kIFNBDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBXaGF0IGZhbGwtYmFjayBwYXRjaCBhZGRz Og0KPiA+ID4gPiA+IEJlZm9yZSBzdGVwIDIuYiBjaGVjazoNCj4gPiA+ID4gPiBkb2VzIHRoYXQg U0EgaGFzIGl0cyBwcmltYXJ5IHNlc3Npb24gIHdpdGggdHlwZSBJTkxJTkUtQ1JZUFRPDQo+ID4g PiA+ID4gYW5kIGRvZXMgSFcgZmFpbCB0byBkbyBJUHNlYyByZWFsdGVkIHByb2Nlc3NpbmcgZm9y IGl0IChieSBzb21lIHJlYXNvbik/DQo+ID4gPiA+ID4gSWYgeWVzLCB0aGVuIG1hcmsgdGhpcyBw YWNrZXQgdG8gYmUgcHJvY2Vzc2VkIGJ5IGZhbGwtYmFjayBzZXNzaW9uLg0KPiA+ID4gPiA+IGlm IChNQlVGX05PX1NFQ19PRkZMT0FEKHBrdCkgJiYgc2EtPmZhbGxiYWNrX3Nlc3Npb25zID4gMCkg ew0KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICB1aW50cHRyX3QgaW50c2EgPSAodWludHB0cl90 KXNhOw0KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICBpbnRzYSB8PSBJUFNFQ19TQV9PRkZMT0FE X0ZBTExCQUNLX0ZMQUc7DQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgIHJlc3VsdF9zYSA9ICh2 b2lkICopaW50c2E7ICB9DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBTbyBmcm9tIG15IHBlcnNwZWN0 aXZlLCBubyBhZGRpdGlvbmFsIGxvb2t1cCB3aGVyZSBpbnRyb2R1Y2VkLg0KPiA+ID4gPg0KPiA+ ID4gPiBbQW5vb2JdIEZvciBpbmxpbmUgcHJvY2Vzc2luZywgaC93IGRvZXMgYSBsb29rdXAgYW5k IGZpZ3VyZXMgb3V0DQo+ID4gPiA+IHRoZSBzZWN1cml0eQ0KPiA+ID4gcHJvY2Vzc2luZyB0byBi ZSBkb25lIG9uIHRoZSBwYWNrZXQuDQo+ID4gPiA+ICJydGVfc2VjdXJpdHlfZ2V0X3VzZXJkYXRh KCkiIGFsbG93cyBzL3cgdG8gZnVydGhlciBzZWdyZWdhdGUgdGhhdA0KPiA+ID4gPiBpbmZvLiBJ biB0aGlzIGFwcHJvYWNoLCBJIGJlbGlldmUgd2UgZG9uJ3QgY29uc2lkZXIgaG93IHN1Y2ggaW5m bw0KPiA+ID4gPiBmcm9tIGgvdyBjYW4NCj4gPiA+IGJlIHVzZWQuDQo+ID4gPg0KPiA+ID4gUmln aHQgbm93IGl0IGlzIG5vdCB0aGUgY2FzZSB3aXRoIGlwc2VjLXNlY2d3Og0KPiA+DQo+ID4gW0Fu b29iXSBBcmUgeW91IHNheWluZyB0aGVyZSBpcyBubyBoL3cgbG9va3VwIGludm9sdmVkIHdoZW4g ZG9pbmcNCj4gPiBpbmxpbmUgY3J5cHRvIHByb2Nlc3Npbmc/IFRoZW4gSSdtIGNvbmZ1c2VkLiBN eSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgcnRlX2Zsb3cNCj4gd2l0aCBBQ1RJT04gdHlwZSBhcyBT RUNVUklUWSBpcyBiZWluZyB1c2VkIHRvIHNldHVwIGgvdyBsb29rdXBzLg0KPiANCj4gSSBhbSBz YXlpbmcgdGhhdCBjdXJyZW50IGlwc2VjLXNlY2d3IGNvZGUgZm9yIGVhY2ggaW5ib3VuZCBFU1Ag cGFja2V0DQo+ICphbHdheXMqIGRvZXMgU1cgbG9va3VwLg0KPiBObyBtYXR0ZXIgZGlkIEhXIGxv b2t1cCB0YWtlIHBsYWNlIGFscmVhZHkgYW5kIGRvZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhhdA0K PiBsb29rdXAgaXMgYXZhaWxhYmxlIHZpYSBtYnVmIGluIHNvbWUgd2F5IG9yIG5vdC4NCj4gSnVz dCBsb29rIGF0IHRoZSBpcHNlYy1zZWNndyBjb2RlIHlvdXJzZWxmOg0KPiANCj4gbmJfcnggPSBy dGVfZXRoX3J4X2J1cnN0KHBvcnRpZCwgcXVldWVpZCwgIHBrdHMsIE1BWF9QS1RfQlVSU1QpOw0K PiANCj4gaWYgKG5iX3J4ID4gMCkNCj4gCXByb2Nlc3NfcGt0cyhxY29uZiwgcGt0cywgbmJfcngs IHBvcnRpZCk7DQo+IA0KPiBJbnNpZGUgcHJvY2Vzc19wa3RzKCkNCj4gaHR0cHM6Ly91cmxkZWZl bnNlLnByb29mcG9pbnQuY29tL3YyL3VybD91PWh0dHAtDQo+IDNBX19seHIuZHBkay5vcmdfZHBk a19sYXRlc3RfaWRlbnRfcHJlcGFyZS01Rm9uZS0NCj4gNUZwYWNrZXQmZD1Ed0lHYVEmYz1uS2pX ZWMyYjZSMG1PeVBhejd4dGZRJnI9QlBjR09PdWRVTXJURFE5WWINCj4gZ0tjT2tPNUNoWWlVUFBs UE5JRXZUT2hqTkUmbT1LVkJndlhZbFVHeU1tdTI2MGVySVNLcjczUXQ2UEJMdXgwU0kNCj4gb1NP MWktTSZzPW9wYkdHSFVxZnh5OHBfNE52d0NHNm9kNlZkVjBxTjhYYWZhUGl1YmZPMUEmZT0NCj4g IGl0IGZpcnN0IGNhbGxzIHByZXBhcmVfdHJhZmZpYygpIHdoaWNoIGRvZXMgc29ydCBvZiBkZS1t dXhpbmc6DQo+IHB1dCBwYWNrZXQgaW4gb25lIG9mIDMgYXJyYXlzOg0KPiAgICAxKSBFU1AgcGFj a2V0cw0KPiAgICAyKSBub24gRVNQIElQdjQgcGFja2V0cw0KPiAgICAzKSBub24gRVNQIElQdjYg cGFja2V0cw0KPiBBbHNvIGl0IGNoZWNrcyBpcyBQS1RfUlhfU0VDX09GRkxPQUQgc2V0IGZvciB0 aGF0IHBhY2tldC4NCj4gSWYgeWVzLCBpdCByZXRyaWV2ZXMgYXNzb2NpYXRlZCBzZWN1cml0eSB1 c2VyLWRhdGEgYW5kIHN0b3JlcyBpdCBpbnNpZGUgcHJpdmF0ZSBtYnVmDQo+IGFyZWEuDQo+IA0K PiBUaGVuIGl0IGdvZXMgaW50byBwcm9jZXNzX3BrdHNfaW5ib3VuZCgpDQo+IGh0dHBzOi8vdXJs ZGVmZW5zZS5wcm9vZnBvaW50LmNvbS92Mi91cmw/dT1odHRwLQ0KPiAzQV9fbHhyLmRwZGsub3Jn X2RwZGtfbGF0ZXN0X2lkZW50X3Byb2Nlc3MtNUZwa3RzLQ0KPiA1RmluYm91bmQmZD1Ed0lHYVEm Yz1uS2pXZWMyYjZSMG1PeVBhejd4dGZRJnI9QlBjR09PdWRVTXJURFE5WQ0KPiBiZ0tjT2tPNUNo WWlVUFBsUE5JRXZUT2hqTkUmbT1LVkJndlhZbFVHeU1tdTI2MGVySVNLcjczUXQ2UEJMdXgwUw0K PiBJb1NPMWktTSZzPTJPeE1YdWc3anRVUVBjWWlETjRuVzlXYnJNdFJmVEp4NWstTjdpa09lTUUm ZT0NCj4gYW5kIGhlcmUgZm9yIGFsbCBFU1AgcGFja2V0czoNCj4gbGVnYWN5IGNvZGUgcGF0aDoN Cj4gaXBzZWNfaW5ib3VuZCgpLT5pbmJvdW5kX3NhX2xvb2t1cCgpLT5zaW5nbGVfaW5ib3VuZF9s b29rdXAoKQ0KPiBmb3IgbGlicnRlX2lwc2VjIGNvZGUgcGF0aDoNCj4gaW5ib3VuZF9zYV9sb29r dXAoKS0+c2luZ2xlX2luYm91bmRfbG9va3VwKCkNCj4gDQo+IHNpbmdsZV9pbmJvdW5kX2xvb2t1 cCgpIGlzIHRoZSBvbmUgdGhhdCBkb2VzIGFjdHVhbCBTVyBsb29rdXAgZm9yIGVhY2ggaW5wdXQN Cj4gcGFja2V0Lg0KPiBodHRwczovL3VybGRlZmVuc2UucHJvb2Zwb2ludC5jb20vdjIvdXJsP3U9 aHR0cC0NCj4gM0FfX2x4ci5kcGRrLm9yZ19kcGRrX2xhdGVzdF9pZGVudF9zaW5nbGUtNUZpbmJv dW5kLQ0KPiA1Rmxvb2t1cCZkPUR3SUdhUSZjPW5LaldlYzJiNlIwbU95UGF6N3h0ZlEmcj1CUGNH T091ZFVNclREUTlZYg0KPiBnS2NPa081Q2hZaVVQUGxQTklFdlRPaGpORSZtPUtWQmd2WFlsVUd5 TW11MjYwZXJJU0tyNzNRdDZQQkx1eDBTSQ0KPiBvU08xaS1NJnM9RDJaUFpQTGJjUVNiYWx1RzhL SDBGM3VVREhmUVdOWXh3NE1PYzBmU2tJOCZlPQ0KPiANCj4gPg0KPiA+ID4gZm9yIGVhY2ggaW5i b3VuZCBFU1AgcGFja2V0IGl0ICphbHdheXMqIGRvZXMgYSBsb29rdXAgaW4gU1cgYmFzZWQNCj4g PiA+IFNBREIsIGFuZCBpZiBsb29rdXAgZmFpbHMgLSBkcm9wcyB0aGUgcGFja2V0IChzZWUgMi5h IGFib3ZlKS4NCj4gPiA+IFNvLCBJIHN0aWxsIG5vdCBzZWUgYW55IGFkZGl0aW9uYWwgbG9va3Vw cyBpbnRyb2R1Y2VkIHdpdGggdGhlIHBhdGNoLg0KPiA+DQo+ID4gW0Fub29iXSBJbiBjYXNlIG9m IGlubGluZSBjcnlwdG8sIHlvdSBjb3VsZCBkbyB0aGF0LiBObyBkaXNhZ3JlZW1lbnQuDQo+ID4g QnV0IHRoYXQgZG9lc24ndCBtZWFuIHRoYXQgaXMgdGhlIG9ubHkgd2F5LiBJZiBQTURzIGNhbiBy ZXRyaWV2ZSBpbmZvIGFib3V0DQo+IGgvdyBsb29rdXBzIGFuZCBwYXNzIGl0IG9uIHRvIHRoZSB1 cHBlciBsYXllcnMsIGlzbid0IHRoYXQgdGhlIGJldHRlciBhcHByb2FjaD8NCj4gDQo+IFBsZWFz ZSBsZXQncyBrZWVwIG91ciBjb252ZXJzYXRpb24gaW4gYSBjb25zdHJ1Y3RpdmUgd2F5Lg0KPiBX ZSBhcmUgbm90IGRpc2N1c3Npbmcgd2hhdCBjb3VsZCBiZSBkb25lIGluIHRoZW9yeSwgYnV0IGEg cGFydGljdWxhciBwYXRjaCBmb3INCj4gaXBzZWMtc2VjZ3c6DQo+IFJpZ2h0IG5vdyBpcHNlYy1z ZWNndyBkb2VzIGEgU1cgbG9va3VwIGZvciBlYWNoIGluYm91bmQgRVNQIHBhY2tldCAobm8NCj4g bWF0dGVyIHdoYXQgSFcgb2ZmbG9hZCBkb2VzKSBhbmQgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJv ZHVjZSBhbnkgZXh0cmEgU1cNCj4gbG9va3Vwcy4NCj4gDQo+IElmIHlvdSBhcmUgbm90IGhhcHB5 IHdpdGggY3VycmVudCBpcHNlYy1zZWNndyBhcHByb2FjaCwgdGhhdCdzIGZpbmUgLSBmZWVsIGZy ZWUgdG8NCj4gc3VibWl0IFJGQy9wYXRjaCB0byBmaXggdGhhdCwgb3Igc3RhcnQgYSBkaXNjdXNz aW9uIGluIGEgbmV3IHRocmVhZC4NCj4gSSBqdXN0IGRvbid0IHNlZSB3aHkgd2UgaGF2ZSB0byBk aXNjdXNzIGl0IGluIGNvbnRleHQgb2YgdGhpcyBwYXRjaC4NCj4gDQo+ID4NCj4gPiA+DQo+ID4g PiA+DQo+ID4gPiA+ID4gQWxzbyBBRkFJSywgcmlnaHQgbm93IHRoZXJlIGlzIG5vIHBvc3NpYmls aXR5IHRvIGNvbmZpZ3VyZQ0KPiA+ID4gPiA+IGlwc2VjLXNlY2d3IHRvIEJZUEFTUyBzb21lIEVT UCB0cmFmZmljLg0KPiA+ID4gPiA+IFNob3VsZCB3ZSBkbyBpdCAodG8gY29uZm9ybSB0byBpcHNl YyBSRkMpIC0gdGhhdCdzIHByb2JhYmx5DQo+ID4gPiA+ID4gc3ViamVjdCBvZiBhbm90aGVyIGRp c2N1c3Npb24uDQo+ID4gPiA+DQo+ID4gPiA+IFtBbm9vYl0gVGhlIGFwcHJvYWNoIChjaG9pY2Ug b2YgZmxhZ3MpIGZvcmNlcyBhIHNvZnR3YXJlLWJhc2VkIFNBDQo+ID4gPiA+IGxvb2t1cCBmb3Ig cGFja2V0cyB0aGF0IG5lZWQgdG8gYmUgYnlwYXNzZWQgaW5zdGVhZCBvZiBsZXZlcmFnaW5nDQo+ ID4gPiA+IHBvc3NpYmxlDQo+ID4gPiBoYXJkd2FyZSBTQSBsb29rdXAuIEkgZG9uJ3QgdGhpbmsg d2hhdCBpcHNlYy1zZWNndyBkb2VzIG1hdHRlcnMgaGVyZS4NCj4gPiA+DQo+ID4gPiBJIGRvIG5v dCBhZ3JlZSB3aXRoIHRoYXQgc3RhdGVtZW50Lg0KPiA+ID4gRmlyc3Qgb2YgYWxsIC0gY3VycmVu dCBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSBhbnkgYWRkaXRpb25hbCBTVw0KPiA+ID4gbG9va3Vw cywgc2VlIGFib3ZlLg0KPiA+ID4gU2Vjb25kLCBpZiBzb21lb25lIHdvdWxkIGxpa2UgdG8gYWRk IEJZUEFTUyBmb3IgRVNQIHBhY2tldHMgaW50bw0KPiA+ID4gaXBzZWMtc2VjZ3csIEkgdGhpbmsg aGUgd291bGQgaGF2ZSB0byBpbnNlcnQgbmV3IGNvZGUgdGhhdCBkbyBkZS1tdXgNCj4gPiA+ICpi ZWZvcmUqIGFueSBFU1AgcmVsYXRlZCBwcm9jZXNzaW5nIHN0YXJ0cy4NCj4gPiA+IE1vc3Qgb2J2 aW91cyB2YXJpYW50OiBhdCBwcmVwYXJlX29uZV9wYWNrZXQoKSB3aGVuIHdlIHNwbGl0IG91cg0K PiA+ID4gaW5jb21pbmcgdHJhZmZpYyB0byBJUHNlYyBhbmQgbm9uLUlQc2VjIG9uZXMuDQo+ID4g PiBTZWNvbmQgdmFyaWFudCAtIGF0IGVhcmx5IHN0YWdlIG9mIHNpbmdsZV9pbmJvdW5kX2xvb2t1 cCgpLCBzdHJhaWdodA0KPiA+ID4gYWZ0ZXIgYWN0dWFsIFNBRCBsb29rdXAgZmFpbHVyZS4NCj4g PiA+IEluIGJvdGggY2FzZXMsIEkgZG9uJ3Qgc2VlIGhvdyBzZXNzaW9uIHNlbGVjdGlvbiAocHJp bWFyeSBvcg0KPiA+ID4gZmFpbGxiYWNrKSB3b3VsZCBhZmZlY3QgdXMgaGVyZSwgYWN0dWFsIGRl Y2lzaW9uIGRvIHdlIHdhbnQgdG8NCj4gPiA+IFBST0NFU1Mgb3IgQllQQVNTIHBhcnRpY3VsYXIg RVNQIHBhY2tldCBuZWVkcyB0byB0YWtlIHBsYWNlIGJlZm9yZSB0aGF0Lg0KPiA+ID4gU28gSSBz dGlsbCBiZWxpZXZlIHdlIGFyZSBvayBoZXJlLg0KPiA+DQo+ID4gW0Fub29iXSBJIGRvbid0IHRo aW5rIHlvdSB1bmRlcnN0b29kIHdoYXQgSSdtIHRyeWluZyB0byBoaWdobGlnaHQNCj4gPiBoZXJl LiBZb3UgY291bGQgaGF2ZSBhIHNpdHVhdGlvbiB3aGVuIGgvdyBjYW4gZGV0ZWN0IHRoYXQgdGhl IHBhY2tldA0KPiA+IGhhcyB0byBiZSAiUFJPVEVDVCJlZCB1c2luZyBhbiAiaW5saW5lIGNyeXB0 byIgc2Vzc2lvbi4gQnV0IHRoZW4gaXQNCj4gPiBtaWdodCBkZXRlY3QgdGhhdCBpdCBjYW5ub3Qg cHJvY2VlZCB3aXRoIGlubGluZSBwcm9jZXNzaW5nIGJlY2F1c2Ugb2Ygc29tZQ0KPiBpc3N1ZSAo ZnJhZ21lbnRhdGlvbiwgaC93IHF1ZXVlIG92ZXJmbG93IGV0YykuIE5vdyB0aGUgaC93IGhhcyBh bHJlYWR5IGZpZ3VyZWQNCj4gb3V0IHRoZSBhY3Rpb24gdG8gYmUgZG9uZSB0byB0aGUgcGFja2V0 LiBJZiBQTURzIGFsbG93IHRoaXMgdG8gYmUgY29tbXVuaWNhdGVkDQo+IHRvIHRoZSBhcHBsaWNh dGlvbiwgdGhlIGFwcGxpY2F0aW9uIHdvbid0IGJlIHJlcXVpcmVkIHRvIGRvIHRoZSBsb29rdXAu DQo+ID4NCj4gPiBJbiBpbmxpbmUgY3J5cHRvLCBhcHBsaWNhdGlvbiBjYW4gaWdub3JlIHRoZSBo L3cgbG9va3VwIGRhdGEgYW5kIGRvIGENCj4gPiBzL3cgbG9va3VwIHdpdGggdGhlIHByb3RvY29s IGhlYWRlcnMgYXMgdGhleSBhcmUgbm90IHN0cmlwcGVkIG9mZi4gSXQNCj4gPiB3YXMgZG9uZSB0 aGlzIHdheSwgYmVjYXVzZSBBUEkgYW5kIHRoZSBhc3NvY2lhdGVkIG1lYW5zIHRvIGdldCB0aGlz DQo+ID4gaW5mbyBmcm9tIFBNRCB3YXMgbm90IGludHJvZHVjZWQgd2hlbiBpbmxpbmUgY3J5cHRv IGFuZCBjb3JyZXNwb25kaW5nDQo+IHN1cHBvcnQgaW4gSW50ZWwncyBQTUQgd2FzIGFkZGVkLiBC dXQgaW5saW5lIHByb3RvY29sIGNhbm5vdCBkbyB0aGUgbG9va3VwIGluDQo+IHRoZSBhcHBsaWNh dGlvbiBhbmQgc28gdGhlIGNvbmNlcHQgb2YgdXNlcmRhdGEgZXRjIHdhcyBpbnRyb2R1Y2VkLiBU aGUgc2FtZQ0KPiBjYW4gYmUgYXBwbGllZCB0byBpbmxpbmUgY3J5cHRvIGFsc28uIEFkdmFudGFn ZT8gSXQgY291bGQgcmVtb3ZlIHRoZSBleHRyYQ0KPiBsb29rdXAgZG9uZSBpbiBzL3cuDQo+ID4N Cj4gPiBUbyBzdW1tYXJpemUsIHdlIGNhbm5vdCBhc3N1bWUgdGhhdCBldmVyeSBpbmxpbmUgY3J5 cHRvIHBhY2tldCBuZWVkIHRvDQo+ID4gbG9va2VkIHVwIGluIHRoZSBhcHBsaWNhdGlvbiB0byBm aWd1cmUgb3V0IHRoZSBwcm9jZXNzaW5nIGRvbmUgb24gdGhlIHBhY2tldC4NCj4gVGhlcmUgY2Fu IGJlIGFwcGxpY2F0aW9ucyB3aGljaCByZWxpZXMgb24gaC93IGxvb2t1cCBkYXRhIHRvIGZpZ3Vy ZSBvdXQgdGhlDQo+IHByb2Nlc3NpbmcgZG9uZS4NCj4gPg0KPiA+IEV4YW1wbGU6IFVzaW5nIHJ0 ZV9mbG93LCBJIGNhbiBjcmVhdGUgYSBydWxlIGZvciBFU1AgcGFja2V0cyB0byBiZQ0KPiA+IE1B UktlZC4gVGhlcmUgaXMgbm8gc2VjdXJpdHkgc2Vzc2lvbiBjcmVhdGVkIGZvciB0aGUgZmxvdyBh bmQgdGhlDQo+ID4gYXBwbGljYXRpb24gaW50ZW5kcyB0byBmb3J3YXJkIHRoaXMgZmxvdyBwYWNr ZXRzIHRvIGEgZGlmZmVyZW50IHBvcnQuIFdpdGggeW91cg0KPiBhcHByb2FjaCwgZXZlbiB0aGVz ZSBwYWNrZXRzIHdvdWxkIGJlIGxvb2tlZCB1cC4gVGhlIHBhY2tldCB3aWxsIGhhdmUgaW5mbw0K PiBmcm9tIHRoZSBoL3cgbG9va3VwIHdoaWNoIGRvZXNuJ3QgZ2V0IHVzZWQsIGJlY2F1c2UgdGhl IGFwcHJvYWNoIGZhaWxzIHRvDQo+IGludHJvZHVjZSB0aGUgcmVxdWlyZWQgY29uY2VwdHMuDQo+ IA0KPiBJIHRoaW5rIEkgdW5kZXJzdG9vZCB5b3VyIHBvaW50Lg0KPiBCYXNpY2FsbHkgeW91IHNh eWluZyB0aGF0IGluIGZ1dHVyZSB5b3VyIFBNRCBmb3IgdW5wcm9jZXNzZWQgRVNQIHBhY2tldHMg bWlnaHQNCj4gcHJvdmlkZSBzb21lIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gKHZpYSBydGVfc2Vj dXJpdHlfZ2V0X3VzZXJkYXRhKSB0aGF0IG1pZ2h0DQo+IGJlIHVzZWQgYnkgU1cgLSBsZXQgc2F5 IHRvIGNob29zZSBCWVBBU1MgZm9yIHN1Y2ggcGFja2V0cy4NCj4gQ3VycmVudCBpcHNlYy1zZWNn dyBkb2Vzbid0IHN1cHBvcnQgc3VjaCBhYmlsaXR5Lg0KPiBZb3VyIGNvbmNlcm4gaXMgdGhhdCB0 aGlzIHBhdGNoIHdpbGwgc29tZWhvdyBwcmV2ZW50IChvciB3aWxsIG1ha2UgaXQgaGFyZGVyKSBm b3INCj4geW91IHRvIG1ha2UgeW91ciBmdXR1cmUgY2hhbmdlcy4NCj4gQ29ycmVjdD8NCj4gSWYs IHNvIHRoZW4gSSBzYWlkIGJlZm9yZSwgSSBkb24ndCB0aGluayB0aGF0IGNvbmNlcm4gaXMgdmFs aWQuDQo+IE1vc3Qgb2J2aW91cyB2YXJpYW50IHdoZXJlIHRvIGFkZCBzdWNoIGNvZGUgaXMgaW5p c2RlIGluc2lkZQ0KPiBwcmVwYXJlX29uZV9wYWNrZXQoKSB3aGVuIHdlIHNwbGl0IG91ciBpbmNv bWluZyB0cmFmZmljIHRvIElQc2VjIGFuZCBub24tSVBzZWMNCj4gb25lcy4NCj4gVG8gYmUgbW9y ZSBzcGVjaWZpYyBzb21ldGhpbmcgbGlrZSB0aGF0DQo+IA0KPiBpZiAoZXRoLT5ldGhlcl90eXBl ID09IHJ0ZV9jcHVfdG9fYmVfMTYoUlRFX0VUSEVSX1RZUEVfSVBWNCkpIHsNCj4gDQo+ICAgICAg ICAgICAgICAgICBpcGg0ID0gKGNvbnN0IHN0cnVjdCBydGVfaXB2NF9oZHIgKilydGVfcGt0bWJ1 Zl9hZGoocGt0LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICBSVEVfRVRIRVJfSERSX0xFTik7 DQo+ICAgICAgICAgICAgICAgICBhZGp1c3RfaXB2NF9wa3RsZW4ocGt0LCBpcGg0LCAwKTsNCj4g DQo+IC0gICAgICAgICAgICAgICAgaWYgKGlwaDQtPm5leHRfcHJvdG9faWQgPT0gSVBQUk9UT19F U1ApDQo+ICsgICAgICAgICAgICAgICAgaWYgKGlwaDQtPm5leHRfcHJvdG9faWQgPT0gSVBQUk9U T19FU1ApIHsNCj4gKwkJaWYgKHBrdC0+b2xfZmxhZ3MgJiBQS1RfUlhfU0VDX09GRkxPQUQpIHsN Cj4gKwkJCS8qIGV4dHJhY3QgZXh0cmEgaW5mbywgbWFrZSBkZWNpc2lvbiBiYXNlZCBvbiB0aGF0 ICovDQo+ICsJCX0gZWxzZQ0KPiAJCQl0LT5pcHNlYy5wa3RzWyh0LT5pcHNlYy5udW0pKytdID0g cGt0Ow0KPiArCSAgIH0NCj4gDQo+IE9mIGNvdXJzZSBzb21lIGNvZGUgcmVvcmRlcmluZyBtaWdo dCBiZSBuZWVkZWQgdG8gYXZvaWQgcGVyZm9ybWFuY2UgZHJvcCwNCj4gYnV0IEkgc3VwcG9zZSB0 aGUgbWFpbiBpZGVhIGlzIGNsZWFyIGVub3VnaC4NCj4gIFNlY29uZCB2YXJpYW50IC0gYXQgZWFy bHkgc3RhZ2Ugb2Ygc2luZ2xlX2luYm91bmRfbG9va3VwKCksIGVpdGhlciBiZWZvcmUgb3INCj4g c3RyYWlnaHQgYWZ0ZXIgYWN0dWFsIFNBRCBTVyBsb29rdXAgZmFpbHVyZS4NCj4gSW4gYm90aCBj YXNlcywgdGhpcyBuZXcgY29kZSB3aWxsIGJlIGV4ZWN1dGVkICpiZWZvcmUqIHNlc3Npb24gc2Vs ZWN0aW9uIGNvZGUuDQo+IA0KPiA+DQo+ID4gRG9lcyB0aGUgYWJvdmUgc291bmQgbGlrZSBCWVBB U1M/IFllcy4NCj4gPiBEb2VzIGlwc2VjLXNlY2d3IGRvIGl0IHRoaXMgd2F5PyBOby4NCj4gDQo+ IENvcnJlY3QsIGl0IGRvZXNuJ3QuDQo+IFlvdSBoYXZlIHRvIHN1Ym1pdCBwYXRjaGVzIGlmIHlv dSdkIGxpa2UgdG8gc3VwcG9ydCBzdWNoIGFiaWxpdHkuDQo+IA0KPiA+IERvZXMgdGhpcyBhcHBy b2FjaCBwcmV2ZW50IGFuIGFwcGxpY2F0aW9uIGZyb20gaW50cm9kdWNpbmcgc3VjaCBhIEJZUEFT Uz8NCj4gWWVzLg0KPiANCj4gVGhhdCdzIG5vdCBjb3JyZWN0LCBJIGJlbGlldmUsIHNlZSBhYm92 ZS4NCj4gDQo+ID4NCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEZvciBleGFtcGxlLCBFU04gd2Fz IG5vdCBzdXBwb3J0ZWQgYnkgaXBzZWMtc2VjZ3cgKGJlZm9yZSBsaWJyYXJ5DQo+ID4gPiA+IG1v ZGUgd2FzIGludHJvZHVjZWQpLCBidXQgZXZlcnkgc2luZ2xlIGxpYnJhcnkgY2hhbmdlIGFuZA0K PiA+ID4gPiBhcHBsaWNhdGlvbiBjaGFuZ2Ugd2FzIGFkZGVkIGtlZXBpbmcgaW4gbWluZCB0aGF0 IEVTTiBpcyBhIHZhbGlkDQo+ID4gPiA+IGZlYXR1cmUgZm9yIGlwc2VjLiBTbyBpdCBpcw0KPiA+ ID4gb25lIHRoaW5nIHRvIHNheSBpcHNlYy1zZWNndyBkb2Vzbid0IHN1cHBvcnQgRVNQIGJ5cGFz cyBhbmQgc2F5aW5nDQo+ID4gPiB0aGUgc29sdXRpb24gZG9lc24ndCBjb25zaWRlciBhIHBvc3Np YmlsaXR5IG9mIEVTUCBieXBhc3MuDQo+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiAyLiBUaGUgc29sdXRpb24gcHJvcG9zZWQgaGVyZSBzZWVtcyBsaWtlIGFkZGlu ZyB0aGUgaGFuZGxpbmcNCj4gPiA+ID4gPiA+IGluIGlwc2VjLXNlY2d3IGluc3RlYWQgb2YgaXBz ZWMgbGlicmFyeS4gSW4gb3RoZXIgd29yZHMsIHRoaXMNCj4gPiA+ID4gPiA+IGZlYXR1cmUgaXMg bm90IGdldHRpbmcNCj4gPiA+ID4gPiBhZGRlZCBpbiBpcHNlYyBsaWJyYXJ5LCB3aGljaCB3YXMg c3VwcG9zZWQgdG8gc2ltcGxpZnkgdGhlIHdob2xlDQo+ID4gPiA+ID4gaXBzZWMgdXNhZ2UgaW4g RFBESywgYnV0IGZhaWxzIHRvIGhhbmRsZSB0aGUgY2FzZSBvZiBmcmFnbWVudGF0aW9uLg0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gV2hhdCB3ZSBoYXZlIHJpZ2h0IG5vdyB3aXRoIGlwc2VjIGxpYnJh cnkgaXMgU0EgKGxvdykgbGV2ZWwgQVBJLg0KPiA+ID4gPiA+IEl0IGNhbiBoYW5kbGUgbXVsdGkt c2VnbWVudCBwYWNrZXRzIHByb3Blcmx5LCBidXQgZXhwZWN0cw0KPiA+ID4gPiA+IHNvbWVvbmUg ZWxzZSB0byBkbyBvdGhlciBzdGVwcyAoZnJhZ21lbnRhdGlvbi9yZWFzc2VtYmx5KS4NCj4gPiA+ ID4gPiBpcHNlYy1zZWNndyBkZW1vbnN0cmF0ZXMgaG93IGxpYnJ0ZV9pcF9mcmFnIGFuZCBsaWJy dGVfaXBzZWMgY2FuDQo+ID4gPiA+ID4gYmUgdXNlZCB0b2dldGhlciB0byBkZWFsIHdpdGggZnJh Z21lbnRlZCBJUHNlYyB0cmFmZmljIGluIGEgcHJvcGVyDQo+IG1hbm5lci4NCj4gPiA+ID4gPiBQ cm9iYWJseSBpbiBmdXR1cmUgd2UnbGwgY29uc2lkZXIgYWRkaW5nIHNvbWUgaGlnaC1sZXZlbCBB UEkNCj4gPiA+ID4gPiB0aGF0IHdpbGwgYmUgYWJsZSB0byBkbyB3aG9sZSBwcm9jZXNzaW5nIHVu ZGVyIGhvb2QgKFNQRC9TQUQNCj4gPiA+ID4gPiBsb29rdXAsIGZyYWdtZW50L3JlYXNzZW1ibHks IGFjdHVhbCBJUHNlYyBwYWNrZXQgcHJvY2Vzc2luZywNCj4gPiA+ID4gPiBtYXRjaGluZyBpbmJv dW5kIHNlbGVjdG9ycywgZXRjLiksIGJ1dCByaWdodCBub3cgaXQgaXMgbm90IHRoZSBjYXNlLg0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBBbHNvLCBzaW5jZSB0aGUgZmFsbGJhY2sgZmVhdHVyZSBp cyBlbnRpcmVseSBkb25lIGluIHRoZQ0KPiA+ID4gPiA+ID4gYXBwbGljYXRpb24sIGl0IGJlZ3Mg dGhlDQo+ID4gPiA+ID4gcXVlc3Rpb24gd2h5IHRoZSBzYW1lIGZlYXR1cmUgaXMgb21pdHRlZCBm b3IgbGVnYWN5IHVzZSBjYXNlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQmVjYXVzZSBsZWdhY3kg bW9kZSBkb2Vzbid0IHN1cHBvcnQgbXVsdGktc2VnIHBhY2tldHMgYXQgZmlyc3QgcGxhY2UuDQo+ ID4gPiA+ID4gQWxzbyBpdCBpcyBhbiBleHRyYSBvdmVyaGVhZCB0byBzdXBwb3J0IDIgY29kZS1w YXRocyAobGVnYWN5IGFuZA0KPiA+ID4gPiA+IGxpYnJhcnkpIGZvciB0aGUgc2FtZSBhcHAsIHNv IHdlJ2QgbGlrZSBpbiBmdXR1cmUgdG8gZGVwcmVjYXRlDQo+ID4gPiA+ID4gYW5kIGxhdGVyIHJl bW92ZSBsZWdhY3kgY29kZS0gcGF0aC4NCj4gPiA+ID4gPiBBcyBhIGZpcnN0IHN0ZXAgd2UgcHJv cG9zZSB0byBtYWtlIGxpYnJhcnkgY29kZS1wYXRoIGEgZGVmYXVsdCBvbmU6DQo+ID4gPiA+ID4g aHR0cHM6Ly91cmxkZWZlbnNlLnByb29mcG9pbnQuY29tL3YyL3VybD91PWh0dHAtM0FfX3BhdGNo ZXMuZHBkaw0KPiA+ID4gPiA+IC5vcmcNCj4gPiA+ID4gPg0KPiA+ID4NCj4gX2NvdmVyXzU4MjQ3 XyZkPUR3SUZBZyZjPW5LaldlYzJiNlIwbU95UGF6N3h0ZlEmcj1qUGZCOHJ3d3ZpUlN4eUwNCj4g PiA+IFdzMg0KPiA+ID4gPiA+IG42Qi1XWUxuMXY5U3lUTXJUNUVRcWgyVFUmbT1iM0U0MjlmdW84 UC1LNVhmSDh3Ry0NCj4gPiA+IDdod3IxZDhvTTR1SkdFckFrYmYNCj4gPiA+ID4gPiBEdkEmcz12 ejdpb1V6Sk91em9KZG1WN1FPMFFMUEtZbjF5dEZzal8wZVlhdGJTQ3JnJmU9DQo+ID4gPiA+DQo+ ID4gPiA+IFtBbm9vYl0gRXZlbiBpZiB3ZSBuZWVkIHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGUg cmVhc3NlbWJseSwgaXQNCj4gPiA+ID4gd291bGQgbG9vayBzaW1wbGUgaWYgYXBwbGljYXRpb24g dXNlcyB0aGUgc2FtZSAicnRlX2lwc2VjX3Nlc3Npb24iDQo+ID4gPiA+IHRvIHByb2Nlc3MgdGhl DQo+ID4gPiBmYWxsYmFjayBwYWNrZXQuDQo+ID4gPg0KPiA+ID4gSSB0aGluayB0aGVyZSBpcyBz b21lIHNvcnQgb2YgbWlzdW5kZXJzdGFuZGluZyBoZXJlLg0KPiA+ID4gV2l0aCBjdXJyZW50IGxp YnJ0ZV9pcHNlYyBkZXNpZ246DQo+ID4gPiBydGVfaXBzZWNfc2EgLSBvcGFxdWUgU1cgcmVwcmVz ZW50YXRpb24gb2YgdGhlIFNBIChIVyBuZXV0cmFsKQ0KPiA+ID4gcnRlX2lwc2VjX3Nlc3Npb24g YXNzb2NpYXRlcyBTQSAocnRlX2lwc2VjX3NhKXdpdGggcGFydGljdWxhciBIVw0KPiA+ID4gZGV2 aWNlIChzZXNzaW9uKS4NCj4gPiA+IFNhbWUgU0EgY2FuIGJlIHJlZmVycmVkIGJ5IG11bHRpcGxl IHNlc3Npb25zLg0KPiA+ID4NCj4gPiA+IEZyb20gcnRlX2lwc2VjLmg6DQo+ID4gPiAvKioNCj4g PiA+ICAqIHJ0ZV9pcHNlY19zZXNzaW9uIGlzIGFuIGFnZ3JlZ2F0ZSBzdHJ1Y3R1cmUgdGhhdCBk ZWZpbmVzDQo+ID4gPiBwYXJ0aWN1bGFyDQo+ID4gPiAgKiBJUHNlYyBTZWN1cml0eSBBc3NvY2lh dGlvbiBJUHNlYyAoU0EpIG9uIGdpdmVuIHNlY3VyaXR5L2NyeXB0byBkZXZpY2U6DQo+ID4gPiAg KiAtIHBvaW50ZXIgdG8gdGhlIFNBIG9iamVjdA0KPiA+ID4gICogLSBzZWN1cml0eSBzZXNzaW9u IGFjdGlvbiB0eXBlDQo+ID4gPiAgKiAtIHBvaW50ZXIgdG8gc2VjdXJpdHkvY3J5cHRvIHNlc3Np b24sIHBsdXMgb3RoZXIgcmVsYXRlZCBkYXRhDQo+ID4gPiAgKiAtIHNlc3Npb24vZGV2aWNlIHNw ZWNpZmljIGZ1bmN0aW9ucyB0byBwcmVwYXJlL3Byb2Nlc3MgSVBzZWMgcGFja2V0cy4NCj4gPiA+ ICAqLw0KPiA+ID4NCj4gPiA+ID4gSW4gdGhhdCBjYXNlLCB0aGUgcHJvY2Vzc2luZyByZXF1aXJl ZCB0byBoYW5kbGUgdGhlIG90aGVyIHBhY2tldA0KPiA+ID4gPiB3aWxsIGJlIGhpZGRlbiBmcm9t IHRoZSBhcHBsaWNhdGlvbi4gSGVyZSBhcHBsaWNhdGlvbiBoYXMgdG8gbWFrZQ0KPiA+ID4gPiBz dXJlIGl0IGNob29zZXMNCj4gPiA+IHRoZSBjb3JyZWN0IHNlc3Npb24sIHdoaWNoIEkgYmVsaWV2 ZSBzaG91bGQgYmUgbW92ZWQgdG8gaXBzZWMgbGlicmFyeS4NCj4gPiA+DQo+ID4gPiBGcm9tIG15 IHNpZGUgaXQgaXMgYSBnb29kIHRoaW5nIHRvIGxldCBhcHBsaWNhdGlvbiBkZWZpbmUgaXRzIG93 biB1c2FnZSBtb2RlbC4NCj4gPiA+IEkuRS4gbGlicnRlX2lwc2VjIHN1cHBvcnRzIG11bHRpcGxl LXNlc3Npb25zIHBlciBTQSwgdXBwZXItbGF5ZXINCj4gPiA+IChhcHApIGRlY2lkZXMgaG93IGl0 IHdpbGwgdXNlIHRoYXQgZmVhdHVyZS4NCj4gPiA+IFRob3VnaCBpZiB5b3Ugc3Ryb25nbHkgZmVl bCB0aGF0IHNvbWUgaGlnaGVyLWxldmVsIEFQSSBpcyBuZWVkZWQNCj4gPiA+IGhlcmUsIGFuZCBo YXZlIHNvbWUgZ29vZCBpZGVhcyBhYm91dCBpdCAgLSBwbGVhc2UgZ28gYWhlYWQgYW5kIHN1Ym1p dCBSRkMNCj4gZm9yIGl0Lg0KPiA+DQo+ID4gW0Fub29iXSBJZiB5b3UgYXJlIG9rYXkgd2l0aCBh cHBsaWNhdGlvbiBkZWZpbmluZyBob3cgaXQgaW1wbGVtZW50cyBpcHNlYywNCj4gdGhlbiBwcm9i YWJseSB0aGVyZSBpcyBubyB1c2UgY2FzZSBmb3IgbGliIGlwc2VjPw0KPiANCj4gOikNCj4gT25j ZSBhZ2FpbiAtIGxpYnJhcnkgcHJvdmlkZXMgYW4gaW1wbGVtZW50YXRpb24uDQo+IEFwcGxpY2F0 aW9uIGRlZmluZXMgdGhlIHdheSB0byB1c2UgaXQsIGkuZS4gaG93IGl0IHdpbGwgYXBwbHkgZnVu Y3Rpb25hbGl0eSBsaWJyYXJ5DQo+IHByb3ZpZGVzIGZvciBkaWZmZXJlbnQgdXNlLWNhc2Ugc2Nl bmFyaW9zLg0KPiBBcyBhbiBleGFtcGxlOiBzbnByaXRuZigpIHByb3ZpZGVzIHVzZXIgd2l0aCBh YmlsaXR5IHRvIGZvcm1hdCBzdHJpbmdzLCBhcHBsaWNhdGlvbg0KPiBkZWNpZGVzIHdoYXQgZXhh Y3RseSBmb3JtYXQgdG8gdXNlIGFuZCBmb3Igd2hpY2ggc3RyaW5nLg0KPiBTYW1lIGZvciBsaWJy dGVfaXBzZWMsIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSB0byBwZXJmb3JtIHByb2Nl c3NpbmcgZm9yDQo+IEVTUCBwYWNrZXRzLg0KPiBBcHBsaWNhdGlvbiBkZWZpbmVzIHdoaWNoIHBh Y2tldHMgdG8gcHJvY2VzcyBhbmQgd2hhdCBzZXNzaW9uIHRvIHVzZS4NCj4gDQo+ID4NCj4gPiA+ DQo+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAzLiBJdCBzZWVt cyBsaWtlIG9yZGVyaW5nIHdvbid0IGJlIG1haW50YWluZWQgb25jZSB0aGlzDQo+ID4gPiA+ID4g PiBwcm9jZXNzaW5nIGlzIGRvbmUuIEFnYWluLCB0aGlzIGlzIHRoZSBzZXF1ZW5jZSBJIHVuZGVy c3Rvb2QuDQo+ID4gPiA+ID4gPiBQbGVhc2UgY29ycmVjdCBtZSBpZiBJIG1pc3NlZA0KPiA+ID4g PiA+IHNvbWV0aGluZywNCj4gPiA+ID4gPiA+ICAgICAgICBhLiBBcHBsaWNhdGlvbiByZWNlaXZl cyBhIGJ1bmNoIG9mIHBhY2tldHMgKGxldCdzIHNheSA2DQo+ID4gPiA+ID4gPiBwYWNrZXRzKSwg aW4gd2hpY2ggZmV3IGFyZSBmcmFnbWVudGVkIChQMyAmIFA0KSBhbmQgdGhlIHJlc3QNCj4gPiA+ ID4gPiA+IGNhbiBiZSBpbmxpbmUNCj4gPiA+ID4gPiBwcm9jZXNzZWQuDQo+ID4gPiA+ID4gPiAg ICAgICAgYi4gQXBwbGljYXRpb24gcmVjZWl2ZXMgUDEtPlAyLT5QMy0+UDQtPlA1LT5QNiAoaW4N Cj4gPiA+ID4gPiA+IHRoaXMsIFAxLCBQMiwgUDUsIFA2IGFyZQ0KPiA+ID4gPiA+IGlubGluZSBw cm9jZXNzZWQgc3VjY2Vzc2Z1bGx5KSBhbmQgUDQgJiBQNSBhcmUgdGhlIGZyYWdtZW50cw0KPiA+ ID4gPiA+ID4gICAgICAgIGMuIEFwcGxpY2F0aW9uIGdyb3VwcyBwYWNrZXRzLiBQMS0+UDItPlA1 LT5QNiBiZWNvbWVzDQo+ID4gPiA+ID4gPm9uZSBncm91cCBhbmQgUDMtDQo+ID4gPiA+ID4gPlA0 IGJlY29tZXMgYW5vdGhlciBhbmQgZ29lcyBmb3IgZmFsbGJhY2sgcHJvY2Vzc2luZy4NCj4gPiA+ ID4gPiA+IE5vdyBob3cgaXMgb3JkZXJpbmcgbWFpbnRhaW5lZD8gSSBjb3VsZG4ndCBmaWd1cmUg b3V0IGhvdyB0aGF0DQo+ID4gPiA+ID4gPmlzIGRvbmUgaW4gdGhpcw0KPiA+ID4gPiA+IGNhc2Uu DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBZb3UgcmlnaHQsIGZhbGxiYWNrIHNlc3Npb24gY2FuIGlu dHJvZHVjZSBwYWNrZXQgcmVvcmRlcmluZy4NCj4gPiA+ID4gPiBBdCBsZWFzdCB0aWxsIHdlJ2xs IGhhdmUgYWJpbGl0eSB0byBwcm9jZXNzIHBhY2tldHMgaW4gc3luYyBtb2RlIHRvby4NCj4gPiA+ ID4gPiBTZWUgb3VyIHByZXNlbnRhdGlvbiBhdCBkcGRrIHVzZXJzcGFjZSAoc2xpZGVzIDE3LCAx OCk6DQo+ID4gPiA+ID4gaHR0cHM6Ly91cmxkZWZlbnNlLnByb29mcG9pbnQuY29tL3YyL3VybD91 PWh0dHBzLTNBX19zdGF0aWMuc2NoZQ0KPiA+ID4gPiA+IGQuY28NCj4gPiA+ID4gPiBtX2hvc3Rl ZC01RmZpbGVzX2RwZGtib3JkZWF1eDIwMTlfOGZfRFBESy0NCj4gPiA+IDJESVBTRUN1OS5wZGYm ZD1Ed0lGQWcmYz1uDQo+ID4gPiA+ID4gS2pXZWMyYjZSMG1PeVBhejd4dGZRJnI9alBmQjhyd3d2 aVJTeHlMV3MybjZCLQ0KPiA+ID4gV1lMbjF2OVN5VE1yVDVFUXFoMlRVJg0KPiA+ID4gPiA+IG09 YjNFNDI5ZnVvOFAtSzVYZkg4d0ctDQo+ID4gPiA3aHdyMWQ4b000dUpHRXJBa2JmRHZBJnM9TUxS bm5ZY3lram5zcVhySEdVdVINCj4gPiA+ID4gPiBZSGM1dUR4YUFvZDBZbDdmMDZFUXIxTSZlPSBS aWdodCBub3cgdGhlIG9ubHkgd2F5IHRvIGRlYWwgd2l0aA0KPiA+ID4gPiA+IGl0IC0gaGF2ZSBy ZXBsYXkgd2luZG93IGJpZyBlbm91Z2ggdG8gc3VzdGFpbiByZW9yZGVyaW5nIGFuZA0KPiA+ID4g PiA+IGFzeW5jIHByb2Nlc3NpbmcgbGF0ZW5jeS4NCj4gPiA+ID4gPiBUaGF0J3MgYWN0dWFsbHkg YW5vdGhlciByZWFzb24gd2h5IHdlIGFkZCB0aGlzIGZlYXR1cmUgaW50bw0KPiA+ID4gPiA+IGlw c2VjLXNlY2d3IHNhbXBsZQ0KPiA+ID4gPiA+IGFwcDoNCj4gPiA+ID4gPiBzbyBwZW9wbGUgY2Fu IGV2YWx1YXRlIGl0IG9uIHRoZWlyIHBsYXRmb3JtcywgZGV0ZXJtaW5lIHdoYXQNCj4gPiA+ID4g PiByZXBsYXkgd2luZG93IHNpemUgd291bGQgYmUgbmVlZGVkLCB3aGF0IGlzc3Vlcy9zbG93ZG93 bnMgaXQgbWlnaHQNCj4gY2F1c2UsIGV0Yy4NCj4gPiA+ID4NCj4gPiA+ID4gW0Fub29iXSBUaGlz IGlzIHNvbWV0aGluZyBJIGhhZCBub3RpY2VkIHdoaWxlIGdvaW5nIHRocm91Z2ggdGhlIGNvZGUg Zmxvdy4NCj4gPiA+IFRoZSBvcmRlcmluZyBpbmZvIGlzIGxvc3QgYmVjYXVzZSBvZiB0aGUgYXBw cm9hY2guDQo+ID4gPg0KPiA+ID4gT25jZSBhZ2FpbiwgaXQgaXMgYSBrbm93biBsaW1pdGF0aW9u IGFuZCB3ZSBhcmUgbm90IHRyeWluZyB0byBoaWRlDQo+ID4gPiBpdCBmcm9tIHlvdSA6KQ0KPiA+ DQo+ID4gW0Fub29iXSBOZXZlciBzYWlkIGl0IHdhcyBoaWRkZW4uIEluaXRpYWxseSBJIGhhZCBv a2F5ZWQgdGhlIGFwcHJvYWNoDQo+ID4gZXZlbiB0aG91Z2ggaXQgd2Fzbid0IGEgc29sdXRpb24g c3VpdGFibGUgZm9yIGlubGluZSBwcm90b2NvbC4gQnV0IGFzIG1vcmUgY2FzZXMNCj4gd2VyZSBj b25zaWRlcmVkLCBmZXcgc2hvcnRjb21pbmdzIHdlcmUgb2JzZXJ2ZWQsIGFuZCBJIHdhcyBza2Vw dGljYWwgYWJvdXQNCj4gaG93IGFueSBvZiB0aGF0IHdvdWxkIGJlIHNvbHZlZCBpbiB0aGUgbG9u ZyBydW4uDQo+ID4NCj4gPiBNeSBzdWdnZXN0aW9uLCBpZiB0aGVzZSBsaW1pdGF0aW9ucyBhbmQg dGhlIHBsYW5zIHRvIGFkZHJlc3MgaXQgd2VyZSBtZW50aW9uZWQNCj4gaW4gdGhlIGNvdmVyIGxl dHRlciwgd2UgY291bGQndmUgc2F2ZWQgZmV3IGN5Y2xlcyBoZXJlLg0KPiANCj4gUG9pbnQgdGFr ZW4uDQo+IA0KPiA+IEJ1dCBteSByZXBseSB3b3VsZCBzdGlsbCBiZSB0aGUgc2FtZSDwn5iKDQo+ ID4NCj4gPiA+IEl0DQo+ID4gPiB3YXMgb3V0bGluZWQgaGVyZToNCj4gPiA+IGh0dHBzOi8vdXJs ZGVmZW5zZS5wcm9vZnBvaW50LmNvbS92Mi91cmw/dT1odHRwcy0NCj4gPiA+IDNBX19zdGF0aWMu c2NoZWQuY29tX2hvc3RlZC01RmZpbGVzX2RwZGtib3JkZWF1eDIwMTlfOGZfRFBESy0NCj4gPiA+ DQo+IDJESVBTRUN1OS5wZGYmZD1Ed0lGQWcmYz1uS2pXZWMyYjZSMG1PeVBhejd4dGZRJnI9alBm Qjhyd3d2aVJTeHlMDQo+ID4gPiBXczJuNkItV1lMbjF2OVN5VE1yVDVFUXFoMlRVJm09YjNFNDI5 ZnVvOFAtSzVYZkg4d0ctDQo+ID4gPg0KPiA3aHdyMWQ4b000dUpHRXJBa2JmRHZBJnM9TUxSbm5Z Y3lram5zcVhySEdVdVJZSGM1dUR4YUFvZDBZbDdmMDZFDQo+ID4gPiBRcjFNJmU9DQo+ID4gPiBB bmQgaW4gdGhlIGxhdGVzdCBwYXRjaCB2ZXJzaW9uIE1hcmNpbiBjbGVhcmx5IHN0YXRlZCBpdCBp bnNpZGUgdGhlIEFHIHNlc3Npb246DQo+ID4gPiBodHRwczovL3VybGRlZmVuc2UucHJvb2Zwb2lu dC5jb20vdjIvdXJsP3U9aHR0cC0NCj4gPiA+DQo+IDNBX19wYXRjaGVzLmRwZGsub3JnX3BhdGNo XzYwMDM5XyZkPUR3SUZBZyZjPW5LaldlYzJiNlIwbU95UGF6N3h0Zg0KPiA+ID4gUSZyPWpQZkI4 cnd3dmlSU3h5TFdzMm42Qi0NCj4gV1lMbjF2OVN5VE1yVDVFUXFoMlRVJm09YjNFNDI5ZnVvOFAt DQo+ID4gPiBLNVhmSDh3Ry0NCj4gPiA+DQo+IDdod3IxZDhvTTR1SkdFckFrYmZEdkEmcz16cm45 MVZqZl9aRWxBbERmN0llWkdtR2V2Y0E2Uk13cFBUTFVDR2xnWg0KPiA+ID4gY1kmZT0NCj4gPiA+ IElmIHlvdSB0aGluayBldmVuIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiB3aXRoaW4gdGhlIGRvYyBp cyBuZWVkZWQsDQo+ID4gPiBwbGVhc2UgbGV0IHVzIGtub3cuDQo+ID4gPg0KPiA+ID4gQWJvdXQg dGhlIGFjdHVhbCBwYWNrZXQgcmUtb3JpZGVyaW5nOg0KPiA+ID4gIEFGQUlLLCBmb3Igc29tZSB1 c2UtY2FzZXMgaXQgbWlnaHQgYmUgYWNjZXB0YWJsZSwgZm9yIG90aGVycyBub3QuDQo+ID4gPiBU aG91Z2ggaXQgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSwgdGhhdCB3b3VsZG4ndCBiZSBlbmFibGVk IGJ5DQo+ID4gPiBkZWZhdWx0LCBzbyB1c2VyIGNhbiBhbHdheXMgY2hvb3NlIGlzIGl0IGRvZXMg aGUgbmVlZHMvd2FudHMgdGhpcyBmZWF0dXJlIG9yDQo+IG5vdC4NCj4gPiA+IElmL3doZW4gd2Un bGwgaGF2ZSBDUFVfQ1JZUFRPIHByb2Nlc3NpbmcgbW9kZToNCj4gPg0KPiA+IFtBbm9vYl0gU2hv dWxkbid0IHdlIGdldCB0aGF0IGFjY2VwdGVkIGZpcnN0IHRoZW4/DQo+IA0KPiBJIGRvbid0IHRo aW5rIHNvLg0KPiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgcHJvdmlkZSBleHBlY3RlZCBm dW5jdGlvbmFsaXR5ICh3aXRoIGtub3duDQo+IGxpbWl0YXRpb25zKS4NCj4gSW4gZnV0dXJlLCB3 ZSBjYW4gdHJ5IHRvIGltcHJvdmUgaXQgYW5kL29yIHJlbW92ZSBleGlzdGluZyBsaW1pdGF0aW9u cy4NCj4gVGhhdCdzIGEgY29tbW9uIGl0ZXJhdGlvbiBkZXZlbG9wbWVudCBhcHByb2FjaCB0aGF0 IGlzIHVzZWQgdGhvdWdoIHdob2xlDQo+IERQREs6DQo+IC0gcHJvdmlkZSBpbml0aWFsIHNvbHV0 aW9uIHdpdGggYmFzaWMgZnVuY3Rpb25hbGl0eSBmaXJzdA0KPiAtIGltcHJvdmUvZXh0ZW5kIHdp dGggZnV0dXJlIHJlbGVhc2VzL3BhdGNoZXMNCj4gDQo+ID4NCj4gPiBBbHNvLCB0aGUgb3JkZXJp bmcgaXMgbG9zdCBiZWNhdXNlIGFwcGxpY2F0aW9uIGlzIG5vdCBjb25zaWRlcmluZyB0aGF0LiBX aHkgY2FuJ3QNCj4gd2UgdXNlIHJlLW9yZGVyaW5nIGxpYnJhcnk/IE9yIGFuIGV2ZW50LWRldj8N Cj4gDQo+IE5vLW9uZSBzYXlpbmcgaXQgY2FuJ3QgYmUgaW1wcm92ZWQgaW4gb25lIHdheSBvciBh bm90aGVyLg0KPiBXZSBkb24ndCBwbGFuIHRvIGludHJvZHVjZSBzdWNoIGNvZGUgcmlnaHQgbm93 IGR1ZSB0byBpdHMgY29tcGxleGl0eS4NCj4gTWlnaHQgYmUgc29tZXRoaW5nIGluIGZ1dHVyZS4N Cj4gVGhvdWdoIHlvdSBhcmUgd2VsY29tZSB0byBnbyBhaGVhZCBhbmQgc3VibWl0IHlvdXIgb3du IHBhdGNoZXMgdG8gaW1wcm92ZQ0KPiB0aGF0IHNvbHV0aW9uLg0KPiANCj4gPg0KPiA+ID4gaHR0 cHM6Ly91cmxkZWZlbnNlLnByb29mcG9pbnQuY29tL3YyL3VybD91PWh0dHAtDQo+ID4gPg0KPiAz QV9fcGF0Y2hlcy5kcGRrLm9yZ19jb3Zlcl81ODg2Ml8mZD1Ed0lGQWcmYz1uS2pXZWMyYjZSMG1P eVBhejd4dGYNCj4gPiA+IFEmcj1qUGZCOHJ3d3ZpUlN4eUxXczJuNkItDQo+IFdZTG4xdjlTeVRN clQ1RVFxaDJUVSZtPWIzRTQyOWZ1bzhQLQ0KPiA+ID4gSzVYZkg4d0ctDQo+ID4gPg0KPiA3aHdy MWQ4b000dUpHRXJBa2JmRHZBJnM9azF6ZWZfMXVxRUxYYmxLTjNfcWpYMDRXWE5GR0FVRUZJSUpy dktQcjYNCj4gPiA+IGVBJmU9DQo+ID4gPiB3ZSdsbCBhZGQgYWJpbGl0eSBmb3IgdGhlIHVzZXIg dG8gYXZvaWQgdGhpcyByZW9yZGVyaW5nIHByb2JsZW0NCj4gPiA+DQo+ID4gPiA+IEFzIHdlIGRp ZyBkZWVwZXIsIHRoZSBmZWF0dXJlIGxvb2tzIGhhcmRseSBjb21wbGV0ZS4gVGhlDQo+ID4gPiA+ IGNvbmNlcm5pbmcgcGFydCBpcyB0aGUgYXBwcm9hY2ggZG9lc24ndCBzZWVtIGNvbmR1Y2l2ZSB0 byBmaXhpbmcNCj4gPiA+ID4gYW55IG9mIHRoZXNlIGlzc3VlcyBpbiB0aGUNCj4gPiA+IGZ1dHVy ZS4NCj4gPiA+DQo+ID4gPiBBZ2FpbiwgZG9uJ3QgYWdyZWUgd2l0aCB0aGF0IHN0YXRlbWVudC4N Cj4gPiA+IEZyb20gbXkgcGVyc3BlY3RpdmU6IHdoaWxlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24g aGFzIGl0cw0KPiA+ID4gbGltaXRhdGlvbnMgKHBhY2tldCByZW9yZGVyaW5nLCBpbmxpbmUtcHJv dG8vbGtzZC1wcm90byksIGl0IGlzDQo+ID4gPiB0b3RhbGx5IGZ1bmN0aW9uYWwgYW5kIHByb3Zp ZGVzIHVzZXJzIHdpdGggYSByZWZlcmVuY2UgaG93IHRvIGRlYWwgd2l0aCBzdWNoDQo+IGtpbmQg b2YgcHJvYmxlbXMuDQo+ID4NCj4gPiBbQW5vb2JdIFdlbGwsIHRoYXQgaXMgZXhhY3RseSBteSBw cm9ibGVtLiBJdCBnaXZlcyBhIHNrZXdlZCByZWZlcmVuY2UNCj4gPiBvbiBob3cgdG8gZGVhbCB3 aXRoIHRoZSBwcm9ibGVtLCB3aXRob3V0IGNvbnNpZGVyaW5nIG90aGVyIHBvc3NpYmlsaXRpZXMu DQo+IA0KPiBPbmNlIGFnYWluLCBwbGVhc2UgZmVlbCBmcmVlIGFuZCBjb21lLXVwIHdpdGggeW91 ciBvd24gcGF0Y2hlcywgdGhhdCB3aWxsDQo+IGFkZHJlc3MgdGhpcyBwcm9ibGVtIGluIGEgc21h cnRlciB3YXkuDQo+IA0KPiA+IElmIGV2ZXJ5IGFwcGxpY2F0aW9uIHN0YXJ0cyBhZG9wdGluZyB0 aGlzIG1ldGhvZCBhbmQgc3RhcnRzIGRvaW5nDQo+ID4gbG9va3VwIGZvciBldmVyeSBFU1AgcGFj a2V0LCBoL3cgYmFzZWQgbG9va3VwcyAoYW5kIHRoZSBhc3NvY2lhdGVkDQo+ID4gaC93KSB3b3Vs ZCBiZSByZW5kZXJlZCB1c2VsZXNzLiBJIHJlYWxseSB0aGluayB0aGlzIHNlcmllcywgd2hpY2gg aGFwcGVucyB0byBiZQ0KPiB0aGUgZmlyc3Qgc3RlcCBpbiBzb2x2aW5nIGEgY29tcGxleCBwcm9i bGVtLCB3aWxsIGJlIHZlcnkgdXNlZnVsIGlmIGFsbCB0aGVzZSBpc3N1ZXMNCj4gYXJlIGFkZHJl c3NlZCBwcm9wZXJseS4NCj4gPg0KPiA+IElmIHlvdSBjYW4gaW50cm9kdWNlIHRoZSBpbmxpbmUr bG9va2FzaWRlIHZpYSBsaWJydGVfaXBzZWMsIGl0cw0KPiA+IHBlcmhhcHMgb2sgZm9yIHRoZSBw YXRjaCB0byBoYXZlIHNvbWUgbGltaXRhdGlvbnMobGlrZSBsYWNrIG9mIG9yZGVyaW5nLA0KPiBh c3N1bXB0aW9ucyBvbiBFU1AgZXRjKS4gSG93ZXZlciwgaWYgdGhlIHBhdGNoIGlzIGludHJvZHVj ZWQgZGlyZWN0bHkgaW50byBpcHNlYy0NCj4gc2VjZ3csIGl0IG5lZWRzIHRvIGJlIG1vcmUgY29t cHJlaGVuc2l2ZSBhbmQgcm9idXN0Lg0KPiANCj4gSSB0aGluayBjb21tb24gRFBESyBwb2xpY3kg aXMgZXhhY3RseSBvcHBvc2l0ZToNCj4gbGlicmFyeS9kcml2ZXIgaGFzIHRvIGJlIGFzIHJvYnVz dCBhbmQgY29tcHJlaGVuc2l2ZSBhcyBwb3NzaWJsZS4NCj4gc2FtcGxlIGFwcCBjb2RlIGFsbG93 ZWQgdG8gaGF2ZSBzb21lIGxpbWl0YXRpb25zIChhcyBsb25nIGFzIHRoZXkgYXJlDQo+IGRvY3Vt ZW50ZWQsIGV0Yy4pLg0KPiANCj4gPiBJIGFsc28gZXhwZWN0IHBlcmZvcm1hbmNlIGltcGFjdCBk dWUgdG8gdGhlc2UgY2hhbmdlcw0KPiANCj4gQ291bGQgeW91IGJlIG1vcmUgc3BlY2lmaWMgaGVy ZT8NCj4gV2hhdCBwZXJmb3JtYW5jZSBpbXBhY3QgZG8geW91IGV4cGVjdCBhbmQgd2h5Pw0KPiBD YW4geW91IHBvaW50IHRvIHRoZSBleGFjdCBwaWVjZSBvZiBwYXRjaCBjb2RlIHRoYXQgeW91IGJl bGlldmUgd291bGQgY2F1c2UgYQ0KPiBkZWdyYWRhdGlvbi4NCj4gSSBkb24ndCBleHBlY3QgYW55 IGFuZCBwZXJmb3JtYW5jZSB0ZXN0cyBvbiBvdXIgcGxhdGZvcm1zIGRpZG4ndCBzaG93IGFueQ0K PiByZWdyZXNzaW9uIHNvIGZhci4NCj4gDQo+ID4gYW5kIHNvIEkgcHJlZmVyIGlmIHRoZSBpbmxp bmUrbG9va2FzaWRlIGNhbiBiZSBtYWRlIHNlcGFyYXRlIGRhdGFwYXRoDQo+ID4gcmF0aGVyIHRo YW4gb3ZlcmxvYWRpbmcgdGhlIGV4aXN0aW5nIG9uZS4NCj4gDQo+IEkgZG9uJ3Qgc2VlIGFueSBn b29kIHJlYXNvbiBmb3IgdGhhdC4NCj4gVGhpcyBmZWF0dXJlIGlzIG9wdGlvbmFsLg0KPiBVc2Vy IGhhdmUgdG8gZW5hYmxlIGl0IG1hbnVhbGx5IGZvciBlYWNoIHNlc3Npb24gKHZpYSBjb25maWcg ZmlsZSkuDQo+IGZvciBhbGwgb3RoZXIgc2Vzc2lvbnMgdGhlcmUgaXMgbm8gaW1wYWN0Lg0KPiBX aGF0IHdlIHByb2JhYmx5IGNhbiBkbyAtIGFkZCBleHRyYSBjaGVjayBpbnNpZGUgc2EuYyB0byBh bGxvdyBmYWxsYmFjayBzZXNzaW9ucw0KPiBvbmx5IGZvciBpbmxpbmUtY3J5cHRvLW9mZmxvYWQg dHlwZSBvZiBzZXNzaW9ucy4NCj4gDQo+ID4NCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEFsc28s IGlmIHRoZSBuZXcgaXBzZWMgcmVsYXRlZCBmZWF0dXJlcyBhcmUgaW50cm9kdWNlZCB2aWENCj4g PiA+ID4gaXBzZWMtc2VjZ3cgdGhhbiB2aWEgcnRlX2lwc2VjLCB0aGVuIGl0IHJhaXNlcyBkb3Vi dHMgb3ZlciB0aGUgdXRpbGl0eSBvZg0KPiBydGVfaXBzZWMgbGlicmFyeS4NCj4gPiA+DQo+ID4g Pg0KDQo=