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 BADF5A056D; Tue, 3 Mar 2020 08:06:58 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 202801BF96; Tue, 3 Mar 2020 08:06:58 +0100 (CET) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20043.outbound.protection.outlook.com [40.107.2.43]) by dpdk.org (Postfix) with ESMTP id ADF662C02 for ; Tue, 3 Mar 2020 08:06:56 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j2CZ8V7HpE6Zo5erxQHuI1ItB7VilkCtAXkqvWYVYDarBAiz1I7Q2TjdJqiVlUrdgTfZF5Hr8mCmKn1rQR2F2RWgTZtBoW1hvrRXLQGAcvSrCpyoWpWFSBEWE9Ddnqhrhks9U23vuRbo6/cg5L8r2vHY3NtoJIbV0eAdY5Z72RtkKjc7cvzu0xkvNSRXb6TYvmqMglsfnQuSyLiBgFmUIVX2pjcyre5vcFMRX3ULYQaa0aXHIwD0JjwRMjpkX298k77dPaBP0NEZrxu/cPp1T/wO11CtGnj1fO+73ZHjEMjIOa41yU0jS4hziRZguKWVjlDt1Uk3VeUtikhgbxiOtg== 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=goYfo/nXZUR9rJg7LUlJBc7VgOY8QvqpdEXHaVPgQzo=; b=IsTI4qXL6+clqTjtwpIi7b4qmna9khvN2Xb2Qjd4oBHSK+choch5vPpRQlaxSgbiPv1xwwoQCw2p5nPBfJqsbgk3igWgkRJcnh0klQ45ly6bLo9VUTn64CoR6b0dkbudojWZ+AFcWoRatZdmkrZTqGnmfjMsq/tUqdVPz4E0jRYNSQlY+lFtqapb8K46dsJuc6QUthEojd0WGAyYL5XX/ZlOqooogORffcn8ekPizu48/te82SgMts+GmhLcSYErBtbY0yEBwV+pjEspPLBS7FMhJLs6Sar8RU1Holi34VDRdPZG6yg9yAboOdVGa+Mw/OEEbbJn4pmfXo3J+rMfyA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=goYfo/nXZUR9rJg7LUlJBc7VgOY8QvqpdEXHaVPgQzo=; b=FnkqL5T8GTrZb0HidUxwJgmn/FnlTjnyOeke1aVPHLaa3ZDZorzeVNQKup1enClO1HUtNHZU8UqwI0jUR0FyQYJ0En04+PMS1OYC3s/mxR5mu3Zgvjur7GLSwjqoANOJ4zSC+kr3DOHY5vLEOD83UPPUxfDiENuAw1+VCRYozto= Received: from AM6PR05MB5176.eurprd05.prod.outlook.com (20.177.196.158) by AM6PR05MB6533.eurprd05.prod.outlook.com (20.179.5.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2772.14; Tue, 3 Mar 2020 07:06:54 +0000 Received: from AM6PR05MB5176.eurprd05.prod.outlook.com ([fe80::1888:dbf5:a84e:c53b]) by AM6PR05MB5176.eurprd05.prod.outlook.com ([fe80::1888:dbf5:a84e:c53b%6]) with mapi id 15.20.2772.019; Tue, 3 Mar 2020 07:06:54 +0000 From: Ori Kam To: Jerin Jacob , Pavan Nikhilesh Bhagavatula CC: Jerin Jacob Kollanukkaran , "xiang.w.wang@intel.com" , "dev@dpdk.org" , Shahaf Shuler , "hemant.agrawal@nxp.com" , Opher Reviv , Alex Rosenbaum , Dovrat Zifroni , Prasun Kapoor , "nipun.gupta@nxp.com" , "bruce.richardson@intel.com" , "yang.a.hong@intel.com" , "harry.chang@intel.com" , "gu.jian1@zte.com.cn" , "shanjiangh@chinatelecom.cn" , "zhangy.yun@chinatelecom.cn" , "lixingfu@huachentel.com" , "wushuai@inspur.com" , "yuyingxia@yxlink.com" , "fanchenggang@sunyainfo.com" , "davidfgao@tencent.com" , "liuzhong1@chinaunicom.cn" , "zhaoyong11@huawei.com" , "oc@yunify.com" , "jim@netgate.com" , "hongjun.ni@intel.com" , "j.bromhead@titan-ic.com" , "deri@ntop.org" , "fc@napatech.com" , "arthur.su@lionic.com" , Thomas Monjalon Thread-Topic: [dpdk-dev] [EXT] [RFC v5] regexdev: introduce regexdev subsystem Thread-Index: AQHV7X/S8OFPtiIdU0S3b2gAwOWtcagzRfYAgAASjvCAAGWiAIAADOFQgAAIGoCAAAyQQIAACZsAgAEBXoCAAY6HgA== Date: Tue, 3 Mar 2020 07:06:53 +0000 Message-ID: References: <20190627155036.56940-1-jerinj@marvell.com> <1582816115-95871-1-git-send-email-orika@mellanox.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=orika@mellanox.com; x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 8bfd5df2-7112-4ed9-77fb-08d7bf41745c x-ms-traffictypediagnostic: AM6PR05MB6533:|AM6PR05MB6533: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 03319F6FEF x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(136003)(366004)(39860400002)(376002)(346002)(396003)(199004)(189003)(66446008)(52536014)(53546011)(6506007)(64756008)(7406005)(7416002)(186003)(26005)(71200400001)(76116006)(8676002)(66556008)(478600001)(2906002)(81156014)(66476007)(66946007)(8936002)(81166006)(5660300002)(54906003)(316002)(7696005)(110136005)(9686003)(55016002)(86362001)(30864003)(33656002)(4326008); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB6533; H:AM6PR05MB5176.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: IHBqKZ7DSQEkyRAkJhRKtVfsaBszS+QTye17Uzpl6rZf11glLnfUCqga168Z5uu2GOrEmt4fLFnbp4sBUa0zUBOxkyXSxLqrQRwe4pjzXm9ZO5ImC4YDNguRqJCdKuY5C6fUzcar+qiEy4B1VHqB9igwg4KTtwpnw52lCOlxSfBWMeMHnqztHg9Et6f8DQpgsiKQb+aaEcQF2vtYrGxe7irpWsH0fXqjSbYvNDbyPWz74dWAXEGorTrQdZqXR08HyhzlOybbmfkdS5AGYW2fNy8eIpJLjLxfnO2JAbbj9wlCv4aiqE8q3TfV35tdeFcmV1DL0Jw/fmo6Tj1s4prlA22oCnn6E9wEbTzaOU9Byrtq3IAr5AP7vxgg+1LVmbAqrkj1xjeVCoQODg3Qc2flmSONGiXAqJHaujhDlvutM+sQeNNrn/d4yaMfR6KKuBWt x-ms-exchange-antispam-messagedata: b7h45xgrJrQ6d8Zo3+/036PBYwnZBGwrzflOz05caaFk2dOhzLYaxCVBOBN4SSgaWYMU2Nl0UUsHyxckc2GE2HTjCsrSvoHX6ZYhbJa/CBc84sl74M0w1M/XWhMtbVJB6ZB33PnUZ7jRz+nm3M+AyA== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8bfd5df2-7112-4ed9-77fb-08d7bf41745c X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Mar 2020 07:06:53.9712 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8Kv1G560deJCS2GbIX1btKc/VTT03Wp11g2aQT933EK+jBcR1vk5AtOmNb7mIF9S/od5djrmslvqEe0LjHv3ZQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB6533 Subject: Re: [dpdk-dev] [EXT] [RFC v5] regexdev: introduce regexdev subsystem 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" SGkgQWxsLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEplcmluIEph Y29iIDxqZXJpbmphY29ia0BnbWFpbC5jb20+DQo+IFNlbnQ6IE1vbmRheSwgTWFyY2ggMiwgMjAy MCA5OjE5IEFNDQo+IFRvOiBQYXZhbiBOaWtoaWxlc2ggQmhhZ2F2YXR1bGEgPHBiaGFnYXZhdHVs YUBtYXJ2ZWxsLmNvbT4NCj4gQ2M6IE9yaSBLYW0gPG9yaWthQG1lbGxhbm94LmNvbT47IEplcmlu IEphY29iIEtvbGxhbnVra2FyYW4NCj4gPGplcmluakBtYXJ2ZWxsLmNvbT47IHhpYW5nLncud2Fu Z0BpbnRlbC5jb207IGRldkBkcGRrLm9yZzsgU2hhaGFmIFNodWxlcg0KPiA8c2hhaGFmc0BtZWxs YW5veC5jb20+OyBoZW1hbnQuYWdyYXdhbEBueHAuY29tOyBPcGhlciBSZXZpdg0KPiA8b3BoZXJA bWVsbGFub3guY29tPjsgQWxleCBSb3NlbmJhdW0gPGFsZXhyQG1lbGxhbm94LmNvbT47IERvdnJh dA0KPiBaaWZyb25pIDxkb3ZyYXRAbWFydmVsbC5jb20+OyBQcmFzdW4gS2Fwb29yIDxwa2Fwb29y QG1hcnZlbGwuY29tPjsNCj4gbmlwdW4uZ3VwdGFAbnhwLmNvbTsgYnJ1Y2UucmljaGFyZHNvbkBp bnRlbC5jb207IHlhbmcuYS5ob25nQGludGVsLmNvbTsNCj4gaGFycnkuY2hhbmdAaW50ZWwuY29t OyBndS5qaWFuMUB6dGUuY29tLmNuOyBzaGFuamlhbmdoQGNoaW5hdGVsZWNvbS5jbjsNCj4gemhh bmd5Lnl1bkBjaGluYXRlbGVjb20uY247IGxpeGluZ2Z1QGh1YWNoZW50ZWwuY29tOyB3dXNodWFp QGluc3B1ci5jb207DQo+IHl1eWluZ3hpYUB5eGxpbmsuY29tOyBmYW5jaGVuZ2dhbmdAc3VueWFp bmZvLmNvbTsNCj4gZGF2aWRmZ2FvQHRlbmNlbnQuY29tOyBsaXV6aG9uZzFAY2hpbmF1bmljb20u Y247DQo+IHpoYW95b25nMTFAaHVhd2VpLmNvbTsgb2NAeXVuaWZ5LmNvbTsgamltQG5ldGdhdGUu Y29tOw0KPiBob25nanVuLm5pQGludGVsLmNvbTsgai5icm9taGVhZEB0aXRhbi1pYy5jb207IGRl cmlAbnRvcC5vcmc7DQo+IGZjQG5hcGF0ZWNoLmNvbTsgYXJ0aHVyLnN1QGxpb25pYy5jb207IFRo b21hcyBNb25qYWxvbg0KPiA8dGhvbWFzQG1vbmphbG9uLm5ldD4NCj4gU3ViamVjdDogUmU6IFtk cGRrLWRldl0gW0VYVF0gW1JGQyB2NV0gcmVnZXhkZXY6IGludHJvZHVjZSByZWdleGRldiBzdWJz eXN0ZW0NCj4gDQo+IE9uIFN1biwgTWFyIDEsIDIwMjAgYXQgOToyOCBQTSBQYXZhbiBOaWtoaWxl c2ggQmhhZ2F2YXR1bGENCj4gPHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbT4gd3JvdGU6DQo+ID4N Cj4gPiBIaSBPckksDQo+ID4NCj4gPiA+DQo+ID4gPkhpIFBhdmFuLA0KPiA+ID4NCj4gPiA+DQo+ ID4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+PiBGcm9tOiBkZXYgPGRldi1i b3VuY2VzQGRwZGsub3JnPiBPbiBCZWhhbGYgT2YgUGF2YW4gTmlraGlsZXNoDQo+ID4gPkJoYWdh dmF0dWxhDQo+ID4gPj4gU2VudDogU3VuZGF5LCBNYXJjaCAxLCAyMDIwIDQ6MzggUE0NCj4gPiA+ PiBUbzogT3JpIEthbSA8b3Jpa2FAbWVsbGFub3guY29tPjsgSmVyaW4gSmFjb2IgS29sbGFudWtr YXJhbg0KPiA+ID4+IDxqZXJpbmpAbWFydmVsbC5jb20+OyB4aWFuZy53LndhbmdAaW50ZWwuY29t DQo+ID4gPj4gQ2M6IGRldkBkcGRrLm9yZzsgU2hhaGFmIFNodWxlciA8c2hhaGFmc0BtZWxsYW5v eC5jb20+Ow0KPiA+ID4+IGhlbWFudC5hZ3Jhd2FsQG54cC5jb207IE9waGVyIFJldml2IDxvcGhl ckBtZWxsYW5veC5jb20+Ow0KPiA+ID5BbGV4DQo+ID4gPj4gUm9zZW5iYXVtIDxhbGV4ckBtZWxs YW5veC5jb20+OyBEb3ZyYXQgWmlmcm9uaQ0KPiA+ID48ZG92cmF0QG1hcnZlbGwuY29tPjsNCj4g PiA+PiBQcmFzdW4gS2Fwb29yIDxwa2Fwb29yQG1hcnZlbGwuY29tPjsgbmlwdW4uZ3VwdGFAbnhw LmNvbTsNCj4gPiA+PiBicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbTsgeWFuZy5hLmhvbmdAaW50 ZWwuY29tOw0KPiA+ID5oYXJyeS5jaGFuZ0BpbnRlbC5jb207DQo+ID4gPj4gZ3UuamlhbjFAenRl LmNvbS5jbjsgc2hhbmppYW5naEBjaGluYXRlbGVjb20uY247DQo+ID4gPj4gemhhbmd5Lnl1bkBj aGluYXRlbGVjb20uY247IGxpeGluZ2Z1QGh1YWNoZW50ZWwuY29tOw0KPiA+ID53dXNodWFpQGlu c3B1ci5jb207DQo+ID4gPj4geXV5aW5neGlhQHl4bGluay5jb207IGZhbmNoZW5nZ2FuZ0BzdW55 YWluZm8uY29tOw0KPiA+ID4+IGRhdmlkZmdhb0B0ZW5jZW50LmNvbTsgbGl1emhvbmcxQGNoaW5h dW5pY29tLmNuOw0KPiA+ID4+IHpoYW95b25nMTFAaHVhd2VpLmNvbTsgb2NAeXVuaWZ5LmNvbTsg amltQG5ldGdhdGUuY29tOw0KPiA+ID4+IGhvbmdqdW4ubmlAaW50ZWwuY29tOyBqLmJyb21oZWFk QHRpdGFuLWljLmNvbTsgZGVyaUBudG9wLm9yZzsNCj4gPiA+PiBmY0BuYXBhdGVjaC5jb207IGFy dGh1ci5zdUBsaW9uaWMuY29tOyBUaG9tYXMgTW9uamFsb24NCj4gPiA+PiA8dGhvbWFzQG1vbmph bG9uLm5ldD4NCj4gPiA+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbRVhUXSBbUkZDIHY1XSBy ZWdleGRldjogaW50cm9kdWNlIHJlZ2V4ZGV2DQo+ID4gPnN1YnN5c3RlbQ0KPiA+ID4+DQo+ID4g Pj4gSGkgT3JpLA0KPiA+ID4+DQo+ID4gPj4gPg0KPiA+ID4+ID5IaSBQYXZhbiwNCj4gPiA+PiA+ DQo+ID4gPj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+PiA+PiBGcm9tOiBk ZXYgPGRldi1ib3VuY2VzQGRwZGsub3JnPiBPbiBCZWhhbGYgT2YgUGF2YW4NCj4gPiA+TmlraGls ZXNoDQo+ID4gPj4gPkJoYWdhdmF0dWxhDQo+ID4gPj4gPj4gU2VudDogU3VuZGF5LCBNYXJjaCAx LCAyMDIwIDM6MjMgUE0NCj4gPiA+PiA+PiBUbzogT3JpIEthbSA8b3Jpa2FAbWVsbGFub3guY29t PjsgSmVyaW4gSmFjb2IgS29sbGFudWtrYXJhbg0KPiA+ID4+ID4+IDxqZXJpbmpAbWFydmVsbC5j b20+OyB4aWFuZy53LndhbmdAaW50ZWwuY29tDQo+ID4gPj4gPj4gQ2M6IGRldkBkcGRrLm9yZzsg U2hhaGFmIFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5jb20+Ow0KPiA+ID4+ID4+IGhlbWFudC5h Z3Jhd2FsQG54cC5jb207IE9waGVyIFJldml2IDxvcGhlckBtZWxsYW5veC5jb20+Ow0KPiA+ID4+ ID5BbGV4DQo+ID4gPj4gPj4gUm9zZW5iYXVtIDxhbGV4ckBtZWxsYW5veC5jb20+OyBEb3ZyYXQg Wmlmcm9uaQ0KPiA+ID4+ID48ZG92cmF0QG1hcnZlbGwuY29tPjsNCj4gPiA+PiA+PiBQcmFzdW4g S2Fwb29yIDxwa2Fwb29yQG1hcnZlbGwuY29tPjsgbmlwdW4uZ3VwdGFAbnhwLmNvbTsNCj4gPiA+ PiA+PiBicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbTsgeWFuZy5hLmhvbmdAaW50ZWwuY29tOw0K PiA+ID4+ID5oYXJyeS5jaGFuZ0BpbnRlbC5jb207DQo+ID4gPj4gPj4gZ3UuamlhbjFAenRlLmNv bS5jbjsgc2hhbmppYW5naEBjaGluYXRlbGVjb20uY247DQo+ID4gPj4gPj4gemhhbmd5Lnl1bkBj aGluYXRlbGVjb20uY247IGxpeGluZ2Z1QGh1YWNoZW50ZWwuY29tOw0KPiA+ID4+ID53dXNodWFp QGluc3B1ci5jb207DQo+ID4gPj4gPj4geXV5aW5neGlhQHl4bGluay5jb207IGZhbmNoZW5nZ2Fu Z0BzdW55YWluZm8uY29tOw0KPiA+ID4+ID4+IGRhdmlkZmdhb0B0ZW5jZW50LmNvbTsgbGl1emhv bmcxQGNoaW5hdW5pY29tLmNuOw0KPiA+ID4+ID4+IHpoYW95b25nMTFAaHVhd2VpLmNvbTsgb2NA eXVuaWZ5LmNvbTsgamltQG5ldGdhdGUuY29tOw0KPiA+ID4+ID4+IGhvbmdqdW4ubmlAaW50ZWwu Y29tOyBqLmJyb21oZWFkQHRpdGFuLWljLmNvbTsgZGVyaUBudG9wLm9yZzsNCj4gPiA+PiA+PiBm Y0BuYXBhdGVjaC5jb207IGFydGh1ci5zdUBsaW9uaWMuY29tOyBUaG9tYXMgTW9uamFsb24NCj4g PiA+PiA+PiA8dGhvbWFzQG1vbmphbG9uLm5ldD4NCj4gPiA+PiA+PiBTdWJqZWN0OiBSZTogW2Rw ZGstZGV2XSBbRVhUXSBbUkZDIHY1XSByZWdleGRldjogaW50cm9kdWNlDQo+ID4gPnJlZ2V4ZGV2 DQo+ID4gPj4gPnN1YnN5c3RlbQ0KPiA+ID4+ID4+DQo+ID4gPj4gPj4gSGkgT3JpLA0KPiA+ID4+ ID4+DQo+ID4gPj4gPj4gPg0KPiA+ID4+ID4+ID5IaSBQYXZhbiwNCj4gPiA+PiA+PiA+VGhhbmtz IGZvciB0aGUgY29tbWVudHMgcGxlYXNlIHNlZSBiZWxvdy4NCj4gPiA+PiA+PiA+DQo+ID4gPj4g Pj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+PiA+PiA+PiBGcm9tOiBkZXYg PGRldi1ib3VuY2VzQGRwZGsub3JnPiBPbiBCZWhhbGYgT2YgUGF2YW4NCj4gPiA+PiA+TmlraGls ZXNoDQo+ID4gPj4gPj4gPkJoYWdhdmF0dWxhDQo+ID4gPj4gPj4gPj4gU2VudDogU3VuZGF5LCBN YXJjaCAxLCAyMDIwIDg6MTMgQU0NCj4gPiA+PiA+PiA+PiBUbzogT3JpIEthbSA8b3Jpa2FAbWVs bGFub3guY29tPjsgSmVyaW4gSmFjb2IgS29sbGFudWtrYXJhbg0KPiA+ID4+ID4+ID4+IDxqZXJp bmpAbWFydmVsbC5jb20+OyB4aWFuZy53LndhbmdAaW50ZWwuY29tDQo+ID4gPj4gPj4gPj4gQ2M6 IGRldkBkcGRrLm9yZzsgU2hhaGFmIFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5jb20+Ow0KPiA+ ID4+ID4+ID4+IGhlbWFudC5hZ3Jhd2FsQG54cC5jb207IE9waGVyIFJldml2DQo+ID4gPjxvcGhl ckBtZWxsYW5veC5jb20+Ow0KPiA+ID4+ID4+ID5BbGV4DQo+ID4gPj4gPj4gPj4gUm9zZW5iYXVt IDxhbGV4ckBtZWxsYW5veC5jb20+OyBEb3ZyYXQgWmlmcm9uaQ0KPiA+ID4+ID4+ID48ZG92cmF0 QG1hcnZlbGwuY29tPjsNCj4gPiA+PiA+PiA+PiBQcmFzdW4gS2Fwb29yIDxwa2Fwb29yQG1hcnZl bGwuY29tPjsNCj4gPiA+bmlwdW4uZ3VwdGFAbnhwLmNvbTsNCj4gPiA+PiA+PiA+PiBicnVjZS5y aWNoYXJkc29uQGludGVsLmNvbTsgeWFuZy5hLmhvbmdAaW50ZWwuY29tOw0KPiA+ID4+ID4+ID5o YXJyeS5jaGFuZ0BpbnRlbC5jb207DQo+ID4gPj4gPj4gPj4gZ3UuamlhbjFAenRlLmNvbS5jbjsg c2hhbmppYW5naEBjaGluYXRlbGVjb20uY247DQo+ID4gPj4gPj4gPj4gemhhbmd5Lnl1bkBjaGlu YXRlbGVjb20uY247IGxpeGluZ2Z1QGh1YWNoZW50ZWwuY29tOw0KPiA+ID4+ID4+ID53dXNodWFp QGluc3B1ci5jb207DQo+ID4gPj4gPj4gPj4geXV5aW5neGlhQHl4bGluay5jb207IGZhbmNoZW5n Z2FuZ0BzdW55YWluZm8uY29tOw0KPiA+ID4+ID4+ID4+IGRhdmlkZmdhb0B0ZW5jZW50LmNvbTsg bGl1emhvbmcxQGNoaW5hdW5pY29tLmNuOw0KPiA+ID4+ID4+ID4+IHpoYW95b25nMTFAaHVhd2Vp LmNvbTsgb2NAeXVuaWZ5LmNvbTsgamltQG5ldGdhdGUuY29tOw0KPiA+ID4+ID4+ID4+IGhvbmdq dW4ubmlAaW50ZWwuY29tOyBqLmJyb21oZWFkQHRpdGFuLWljLmNvbTsNCj4gPiA+ZGVyaUBudG9w Lm9yZzsNCj4gPiA+PiA+PiA+PiBmY0BuYXBhdGVjaC5jb207IGFydGh1ci5zdUBsaW9uaWMuY29t OyBUaG9tYXMgTW9uamFsb24NCj4gPiA+PiA+PiA+PiA8dGhvbWFzQG1vbmphbG9uLm5ldD4NCj4g PiA+PiA+PiA+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbRVhUXSBbUkZDIHY1XSByZWdleGRl djogaW50cm9kdWNlDQo+ID4gPj4gPnJlZ2V4ZGV2DQo+ID4gPj4gPj4gPnN1YnN5c3RlbQ0KPiA+ ID4+ID4+ID4+DQo+ID4gPj4gPj4gPj4gSGkgT3JpLA0KPiA+ID4+ID4+ID4+DQo+ID4gPj4gPj4g Pj4gTWlub3IgY29tbWVudHMgYmVsb3cuDQo+ID4gPj4gPj4gPj4NCj4gPiA+PiA+PiA+PiA8c25p cD4NCj4gPiA+PiA+PiA+Pg0KPiA+ID4+ID4+ID4+ID4rLyoqDQo+ID4gPj4gPj4gPj4gPisgKiBU aGUgZ2VuZXJpYyAqcnRlX3JlZ2V4X29wcyogc3RydWN0dXJlIHRvIGhvbGQgdGhlIFJlZ0V4DQo+ ID4gPj4gPj4gPmF0dHJpYnV0ZXMNCj4gPiA+PiA+PiA+PiA+KyAqIGZvciBlbnF1ZXVlIGFuZCBk ZXF1ZXVlIG9wZXJhdGlvbi4NCj4gPiA+PiA+PiA+PiA+KyAqLw0KPiA+ID4+ID4+ID4+ID4rc3Ry dWN0IHJ0ZV9yZWdleF9vcHMgew0KPiA+ID4+ID4+ID4+ID4rICAgICAvKiBXMCAqLw0KPiA+ID4+ ID4+ID4+ID4rICAgICB1aW50MTZfdCByZXFfZmxhZ3M7DQo+ID4gPj4gPj4gPj4gPisgICAgIC8q KjwgUmVxdWVzdCBmbGFncyBmb3IgdGhlIFJlZ0V4IG9wcy4NCj4gPiA+PiA+PiA+PiA+KyAgICAg ICogQHNlZSBSVEVfUkVHRVhfT1BTX1JFUV8qDQo+ID4gPj4gPj4gPj4gPisgICAgICAqLw0KPiA+ ID4+ID4+ID4+ID4rICAgICB1aW50MTZfdCByc3BfZmxhZ3M7DQo+ID4gPj4gPj4gPj4gPisgICAg IC8qKjwgUmVzcG9uc2UgZmxhZ3MgZm9yIHRoZSBSZWdFeCBvcHMuDQo+ID4gPj4gPj4gPj4gPisg ICAgICAqIEBzZWUgUlRFX1JFR0VYX09QU19SU1BfKg0KPiA+ID4+ID4+ID4+ID4rICAgICAgKi8N Cj4gPiA+PiA+PiA+PiA+KyAgICAgdWludDE2X3QgbmJfYWN0dWFsX21hdGNoZXM7DQo+ID4gPj4g Pj4gPj4gPisgICAgIC8qKjwgVGhlIHRvdGFsIG51bWJlciBvZiBhY3R1YWwgbWF0Y2hlcyBkZXRl Y3RlZCBieQ0KPiA+ID50aGUNCj4gPiA+PiA+PiA+PiA+UmVnZXggZGV2aWNlLiovDQo+ID4gPj4g Pj4gPj4gPisgICAgIHVpbnQxNl90IG5iX21hdGNoZXM7DQo+ID4gPj4gPj4gPj4gPisgICAgIC8q KjwgVGhlIHRvdGFsIG51bWJlciBvZiBtYXRjaGVzIHJldHVybmVkIGJ5IHRoZQ0KPiA+ID5SZWdF eA0KPiA+ID4+ID4+ID4+ID5kZXZpY2UgZm9yIHRoaXMNCj4gPiA+PiA+PiA+PiA+KyAgICAgICog c2Nhbi4gVGhlIHNpemUgb2YgKnJ0ZV9yZWdleF9vcHM6Om1hdGNoZXMqIHplcm8NCj4gPiA+bGVu Z3RoDQo+ID4gPj4gYXJyYXkNCj4gPiA+PiA+PiA+PiA+d2lsbCBiZQ0KPiA+ID4+ID4+ID4+ID4r ICAgICAgKiB0aGlzIHZhbHVlLg0KPiA+ID4+ID4+ID4+ID4rICAgICAgKg0KPiA+ID4+ID4+ID4+ ID4rICAgICAgKiBAc2VlIHN0cnVjdCBydGVfcmVnZXhfb3BzOjptYXRjaGVzLCBzdHJ1Y3QNCj4g PiA+PiA+PiA+PiA+cnRlX3JlZ2V4X21hdGNoDQo+ID4gPj4gPj4gPj4gPisgICAgICAqLw0KPiA+ ID4+ID4+ID4+ID4rDQo+ID4gPj4gPj4gPj4gPisgICAgIC8qIFcxICovDQo+ID4gPj4gPj4gPj4g PisgICAgIHN0cnVjdCBydGVfbWJ1ZiBtYnVmOyAvKio8IHNvdXJjZSBtYnVmLCB0byBzZWFyY2gg aW4uDQo+ID4gPiovDQo+ID4gPj4gPj4gPj4NCj4gPiA+PiA+PiA+PiBUaGlzIHNob3VsZCBiZSAq bWJ1Zi4NCj4gPiA+PiA+PiA+DQo+ID4gPj4gPj4gPlllcyB5b3UgYXJlIGNvcnJlY3Qgd2lsbCBm aXguDQo+ID4gPj4gPj4gPg0KPiA+ID4+ID4+ID4+DQo+ID4gPj4gPj4gPj4gPisNCj4gPiA+PiA+ PiA+PiA+KyAgICAgLyogVzIgKi8NCj4gPiA+PiA+PiA+PiA+KyAgICAgdWludDE2X3QgZ3JvdXBf aWQwOw0KPiA+ID4+ID4+ID4+DQo+ID4gPj4gPj4gPj4gVGhpcyBzaG91bGQgYmUgZ3JvdXBfaWQx Lg0KPiA+ID4+ID4+ID4+DQo+ID4gPj4gPj4gPk5vIHRoaXMgaXMgY29ycmVjdCBpcyBzaG91bGQg YmUgaWQwLiBXZSBhcmUgc3RhcnRpbmcgZnJvbSBncm91cCAwLg0KPiA+ID4+ID4+ID5UaGUgY29t bWVudCBiZWxvdyBzdGF0ZXMgdGhhdCB0aGUgZmlyc3QgZ3JvdXAsIG1lYW5pbmcgZ3JvdXAgMA0K PiA+ID4+ID5tdXN0DQo+ID4gPj4gPj4gPmJlDQo+ID4gPj4gPj4gPnZhbGlkIGdyb3VwIHdoaWxl IGdyb3VwIDEgZG9lc27igJl0IGhhdmUgdG8gYmUgdmFpbGQuDQo+ID4gPj4gPj4NCj4gPiA+PiA+ PiBXb3VsZCB0aGF0IG1lYW4gdGhhdCBncm91cF9pZDAgaXMgYWx3YXlzIHZhbGlkPw0KPiA+ID4+ ID4+IFNpbmNlIHRoZXJlIGlzIG5vIGBSVEVfUkVHRVhfT1BTX1JFUV9HUk9VUF9JRDBfVkFMSURf RmANCj4gPiA+ZmxhZy4NCj4gPiA+PiA+Pg0KPiA+ID4+ID5ZZXMsIHlvdSBtdXN0IGhhdmUgYXQg bGVhc3Qgb25lIGdyb3VwLg0KPiA+ID4+DQo+ID4gPj4gTWFrZXMgc2Vuc2UsIEkgdGhpbmsgd2Ug bmVlZCB0byB1cGRhdGUgdGhlIGNvbW1lbnQgYSBiaXQgYXMgaXQgb25seQ0KPiA+ID5tZW50aW9u cw0KPiA+ID4+IHRoYXQNCj4gPiA+PiBhdCBsZWFzdCBvbmUgZ3JvdXAgYnV0IGl0IHNob3VsZCBi ZSBncm91cF9pZDAgaGFzIHRvIGJlIGFsd2F5cyB2YWxpZC4NCj4gPiA+Pg0KPiA+ID4+IChBbiBh cHBsaWNhdGlvbiBjYW4gZXJyb25lb3VzbHkgc2V0IHZhbGlkIGdyb3VwX2lkMSBpbnN0ZWFkIG9m DQo+ID4gPmdyb3VwX2lkMCkNCj4gPiA+Pg0KPiA+ID4NCj4gPiA+V2hhdCBhYm91dCB0aGUgbmV4 dCBjb21tZW50Pw0KPiA+ID4vKio8IEZpcnN0IGdyb3VwX2lkIHRvIG1hdGNoIHRoZSBydWxlIGFn YWluc3QuIFRoaXMgZ3JvdXAgbXVzdCBiZSB2YWxpZC4NCj4gPiA+SW4NCj4gPiA+ICAqIG9yZGVy IHRvIHN1cHBvcnQgbW9yZSBncm91cCAodXAgdG8gNCBncm91cHMpLiBUaGUgZ3JvdXAgbnVtYmVy DQo+ID4gPnNob3VsZA0KPiA+ID4gICogYmUgc2V0LiBGb3IgZXhhbXBsZSB0byBlbmFibGUgZ3Jv dXAgMSBncm91cF9pZDEgc2hvdWxkIGJlIHNldA0KPiA+ID4gICogd2l0aCB0aGUgZ3JvdXAgdmFs dWUgYW5kICBhbmQgdGhlDQo+ID4gPlJURV9SRUdFWF9PUFNfUkVRX0dST1VQX0lEMV9WQUxJRF9G IGZsYWcgc2hvdWxkIGJlIHNldC4NCj4gPiA+ICAqIFJlc3BlY3RpdmVseSBzaW1pbGFyIGZsYWdz IGZvciBncm91cF9pZDIgYW5kIGdyb3VwX2lkMy4NCj4gPiA+ICAqIFVwb24gdGhlIG1hdGNoLCBz dHJ1Y3QgcnRlX3JlZ2V4X21hdGNoOjpncm91cF9pZCBzaGFsbCBiZSB1cGRhdGVkDQo+ID4gPiAg KiB3aXRoIG1hdGNoaW5nIGdyb3VwIElEIGJ5IHRoZSBkZXZpY2UuIEdyb3VwIElEIHNjaGVtZSBw cm92aWRlcw0KPiA+ID4gICogcnVsZSBpc29sYXRpb24gYW5kIGVmZmVjdGl2ZSBwYXR0ZXJuIG1h dGNoaW5nLg0KPiA+ID4qLw0KPiA+DQo+ID4gTG9va3MgZ29vZCB3aXRoIG1pbm9yIGNvcnJlY3Rp b25zIGFzIGJlbG93DQo+ID4NCj4gPiAvKio8IEZpcnN0IGdyb3VwX2lkIHRvIG1hdGNoIHRoZSBy dWxlIGFnYWluc3QuIFRoaXMgZ3JvdXAgbXVzdCBiZSB2YWxpZC4NCj4gPiAgICogSW4gb3JkZXIg dG8gc3VwcG9ydCBtb3JlIHRoYW4gb25lIGdyb3VwIHBlciBlYWNoIG9wICh1cCB0byA0IGdyb3Vw cyksIGFueQ0KPiBvZiB0aGUgZ3JvdXBfaWQ8MS0zPiBzaG91bGQNCj4gPiAgICogaG9sZCBhIHZh bGlkIGdyb3VwIGlkIGFsb25nIHdpdGggUlRFX1JFR0VYX09QU19SRVFfR1JPVVBfSUQ8MS0NCj4g Mz5fVkFMSURfRiBmbGFnIHNldC4NCj4gPiAgICogRm9yIGV4YW1wbGUsIHRvIG1hdGNoIGFnYWlu c3QgZ3JvdXAgMTAwIGFuZCAxMDEsIGdyb3VwX2lkMCBzaG91bGQgYmUgc2V0DQo+IHRvIDEwMCBh bmQgZ3JvdXBfaWQxIHNob3VsZA0KPiA+ICAgKiBiZSBzZXQgdG8gMTAxIGFuZCB0aGUgUlRFX1JF R0VYX09QU19SRVFfR1JPVVBfSUQxX1ZBTElEX0YgZmxhZw0KPiBzaG91bGQgYmUgc2V0Lg0KPiA+ ICAgKiBSZXNwZWN0aXZlbHkgc2ltaWxhciBmbGFncyBmb3IgZ3JvdXBfaWQyIGFuZCBncm91cF9p ZDMuDQo+ID4gICAqIFVwb24gdGhlIG1hdGNoLCBzdHJ1Y3QgcnRlX3JlZ2V4X21hdGNoOjpncm91 cF9pZCBzaGFsbCBiZSB1cGRhdGVkDQo+ID4gICAqIHdpdGggbWF0Y2hpbmcgZ3JvdXAgSUQgYnkg dGhlIGRldmljZS4gR3JvdXAgSUQgc2NoZW1lIHByb3ZpZGVzDQo+ID4gICAqIHJ1bGUgaXNvbGF0 aW9uIGFuZCBlZmZlY3RpdmUgcGF0dGVybiBtYXRjaGluZy4NCj4gPiAqLw0KPiANCj4gSSB0aGlu aywgd2UgY2FuIHJlbW92ZSB0aGUgbGltaXRhdGlvbiBvZiBncm91cDAgaXMgYWx3YXlzIHZhbGlk Lg0KPiBUaGVyZSBhcmUgdXNlIGNhc2VzIGxpa2UgZWFjaCBncm91cCBiZWxvbmdzIGNlcnRhaW4g ZnVuY3Rpb25hbGl0eSBhbmQNCj4gYmFzZWQgb24gdGhlIHBhY2tldCB0eXBlIG9yDQo+IHNvIGFw cGxpY2F0aW9uIGRlY2lkZXMgdGhlIGdyb3VwLiBJbiB0aGF0IGNhc2UsIGdyb3VwIDAgbWF5IG9y IG1heSBub3QgdmFsaWQuDQo+IA0KPiBJTU8sIEJ5IHNwZWMsIHdlIGNhbiBkaWN0YXRlLA0KPiAN Cj4gQXQgbWluaW11bSBvZiBvbmUgb2YgdGhlIGdyb3VwIHNob3VsZCBiZSB2YWxpZCBhbmQgc2Vs ZWN0ZWQsIEJlaGF2aW91cg0KPiBpcyB1bmRlZmluZWQgaWYgYW55IG9mIHRoZSBncm91cCBpcyBu b3Qgc2VsZWN0ZWQoVGhpcyBpcyB0byBhdm9pZCBmYXN0DQo+IHBhdGggY2hlY2spLg0KPiANCj4g VGhvdWdodHM/DQo+IA0KDQpJIGxpa2UgeW91ciBhcHByb2FjaCwgbGV0cyBnbyB3aXRoIHRoaXMg YXBwcm9hY2guDQoNCj4gDQo+IA0KPiANCj4gDQo+IA0KPiA+DQo+ID4gPg0KPiA+ID4vKio8IEZp cnN0IGdyb3VwX2lkIHRvIG1hdGNoIHRoZSBydWxlIGFnYWluc3QuIE1pbmltdW0gb25lIGdyb3Vw IGlkDQo+ID4gPiAgKiBtdXN0IGJlIHByb3ZpZGVkIGJ5IGFwcGxpY2F0aW9uLg0KPiA+ID4gICog V2hlbiBSVEVfUkVHRVhfT1BTX1JFUV9HUk9VUF9JRDFfVkFMSURfRiBzZXQgdGhlbg0KPiA+ID5n cm91cF9pZDENCj4gPiA+ICAqIGlzIHZhbGlkLCByZXNwZWN0aXZlbHkgc2ltaWxhciBmbGFncyBm b3IgZ3JvdXBfaWQyIGFuZCBncm91cF9pZDMuDQo+ID4gPiAgKiBVcG9uIHRoZSBtYXRjaCwgc3Ry dWN0IHJ0ZV9yZWdleF9tYXRjaDo6Z3JvdXBfaWQgc2hhbGwgYmUgdXBkYXRlZA0KPiA+ID4gICog d2l0aCBtYXRjaGluZyBncm91cCBJRCBieSB0aGUgZGV2aWNlLiBHcm91cCBJRCBzY2hlbWUgcHJv dmlkZXMNCj4gPiA+ICAqIHJ1bGUgaXNvbGF0aW9uIGFuZCBlZmZlY3RpdmUgcGF0dGVybiBtYXRj aGluZy4NCj4gPiA+DQo+ID4gPj4gPg0KPiA+ID4+ID4+ID4NCj4gPiA+PiA+PiA+PiA+KyAgICAg LyoqPCBGaXJzdCBncm91cF9pZCB0byBtYXRjaCB0aGUgcnVsZSBhZ2FpbnN0LiBNaW5pbXVtDQo+ ID4gPm9uZQ0KPiA+ID4+ID4+ID4+ID5ncm91cCBpZA0KPiA+ID4+ID4+ID4+ID4rICAgICAgKiBt dXN0IGJlIHByb3ZpZGVkIGJ5IGFwcGxpY2F0aW9uLg0KPiA+ID4+ID4+ID4+ID4rICAgICAgKiBX aGVuIFJURV9SRUdFWF9PUFNfUkVRX0dST1VQX0lEMV9WQUxJRF9GDQo+ID4gPnNldCB0aGVuDQo+ ID4gPj4gPj4gPj4gPmdyb3VwX2lkMQ0KPiA+ID4+ID4+ID4+ID4rICAgICAgKiBpcyB2YWxpZCwg cmVzcGVjdGl2ZWx5IHNpbWlsYXIgZmxhZ3MgZm9yIGdyb3VwX2lkMiBhbmQNCj4gPiA+PiBncm91 cF9pZDMuDQo+ID4gPj4gPj4gPj4gPisgICAgICAqIFVwb24gdGhlIG1hdGNoLCBzdHJ1Y3QgcnRl X3JlZ2V4X21hdGNoOjpncm91cF9pZA0KPiA+ID5zaGFsbCBiZQ0KPiA+ID4+ID4+ID4+ID51cGRh dGVkDQo+ID4gPj4gPj4gPj4gPisgICAgICAqIHdpdGggbWF0Y2hpbmcgZ3JvdXAgSUQgYnkgdGhl IGRldmljZS4gR3JvdXAgSUQNCj4gPiA+c2NoZW1lDQo+ID4gPj4gPj4gPj4gPnByb3ZpZGVzDQo+ ID4gPj4gPj4gPj4gPisgICAgICAqIHJ1bGUgaXNvbGF0aW9uIGFuZCBlZmZlY3RpdmUgcGF0dGVy biBtYXRjaGluZy4NCj4gPiA+PiA+PiA+PiA+KyAgICAgICovDQo+ID4gPj4gPj4gPj4gPisgICAg IHVpbnQxNl90IGdyb3VwX2lkMTsNCj4gPiA+PiA+PiA+PiA+KyAgICAgLyoqPCBTZWNvbmQgZ3Jv dXBfaWQgdG8gbWF0Y2ggdGhlIHJ1bGUgYWdhaW5zdC4NCj4gPiA+PiA+PiA+PiA+KyAgICAgICoN Cj4gPiA+PiA+PiA+PiA+KyAgICAgICogQHNlZSBSVEVfUkVHRVhfT1BTX1JFUV9HUk9VUF9JRDFf VkFMSURfRg0KPiA+ID4+ID4+ID4+ID4rICAgICAgKi8NCj4gPiA+PiA+PiA+Pg0KPiA+ID4+ID4+ ID4+IFRoZSBhYm92ZSBgZ3JvdXBfaWQxYCBzaG91bGQgYmUgcmVtb3ZlZCBhcyBpdHMgZHVwbGlj YXRlLg0KPiA+ID4+ID4+ID4+DQo+ID4gPj4gPj4gPg0KPiA+ID4+ID4+ID5UaGlzIGlzIG5vdCBk dXBsaWNhdGUsIHNlZSBhYm92ZSBjb21tZW50Lg0KPiA+ID4+ID4+ID4NCj4gPiA+PiA+PiA+PiA+ KyAgICAgdWludDE2X3QgZ3JvdXBfaWQyOw0KPiA+ID4+ID4+ID4+ID4rICAgICAvKio8IFRoaXJk IGdyb3VwX2lkIHRvIG1hdGNoIHRoZSBydWxlIGFnYWluc3QuDQo+ID4gPj4gPj4gPj4gPisgICAg ICAqDQo+ID4gPj4gPj4gPj4gPisgICAgICAqIEBzZWUgUlRFX1JFR0VYX09QU19SRVFfR1JPVVBf SUQyX1ZBTElEX0YNCj4gPiA+PiA+PiA+PiA+KyAgICAgICovDQo+ID4gPj4gPj4gPj4gPisgICAg IHVpbnQxNl90IGdyb3VwX2lkMzsNCj4gPiA+PiA+PiA+PiA+KyAgICAgLyoqPCBGb3J0aCBncm91 cF9pZCB0byBtYXRjaCB0aGUgcnVsZSBhZ2FpbnN0Lg0KPiA+ID4+ID4+ID4+ID4rICAgICAgKg0K PiA+ID4+ID4+ID4+ID4rICAgICAgKiBAc2VlIFJURV9SRUdFWF9PUFNfUkVRX0dST1VQX0lEM19W QUxJRF9GDQo+ID4gPj4gPj4gPj4gPisgICAgICAqLw0KPiA+ID4+ID4+ID4+ID4rDQo+ID4gPj4g Pj4gPj4gPisgICAgIC8qIFczICovDQo+ID4gPj4gPj4gPj4gPisgICAgIFJURV9TVERfQzExDQo+ ID4gPj4gPj4gPj4gPisgICAgIHVuaW9uIHsNCj4gPiA+PiA+PiA+PiA+KyAgICAgICAgICAgICB1 aW50NjRfdCB1c2VyX2lkOw0KPiA+ID4+ID4+ID4+ID4rICAgICAgICAgICAgIC8qKjwgQXBwbGlj YXRpb24gc3BlY2lmaWMgb3BhcXVlIHZhbHVlLiBBbg0KPiA+ID5hcHBsaWNhdGlvbg0KPiA+ID4+ ID4+ID4+ID5tYXkgdXNlDQo+ID4gPj4gPj4gPj4gPisgICAgICAgICAgICAgICogdGhpcyBmaWVs ZCB0byBob2xkIGFwcGxpY2F0aW9uIHNwZWNpZmljIHZhbHVlIHRvDQo+ID4gPnNoYXJlDQo+ID4g Pj4gPj4gPj4gPisgICAgICAgICAgICAgICogYmV0d2VlbiBkZXF1ZXVlIGFuZCBlbnF1ZXVlIG9w ZXJhdGlvbi4NCj4gPiA+PiA+PiA+PiA+KyAgICAgICAgICAgICAgKiBJbXBsZW1lbnRhdGlvbiBz aG91bGQgbm90IG1vZGlmeSB0aGlzIGZpZWxkLg0KPiA+ID4+ID4+ID4+ID4rICAgICAgICAgICAg ICAqLw0KPiA+ID4+ID4+ID4+ID4rICAgICAgICAgICAgIHZvaWQgKnVzZXJfcHRyOw0KPiA+ID4+ ID4+ID4+ID4rICAgICAgICAgICAgIC8qKjwgUG9pbnRlciByZXByZXNlbnRhdGlvbiBvZiAqdXNl cl9pZCogKi8NCj4gPiA+PiA+PiA+PiA+KyAgICAgfTsNCj4gPiA+PiA+PiA+PiA+Kw0KPiA+ID4+ ID4+ID4+ID4rICAgICAvKiBXNCAqLw0KPiA+ID4+ID4+ID4+ID4rICAgICBzdHJ1Y3QgcnRlX3Jl Z2V4X21hdGNoIG1hdGNoZXNbXTsNCj4gPiA+PiA+PiA+PiA+KyAgICAgLyoqPCBaZXJvIGxlbmd0 aCBhcnJheSB0byBob2xkIHRoZSBtYXRjaCB0dXBsZXMuDQo+ID4gPj4gPj4gPj4gPisgICAgICAq IFRoZSBzdHJ1Y3QgcnRlX3JlZ2V4X29wczo6bmJfbWF0Y2hlcyB2YWx1ZSBob2xkcw0KPiA+ID50 aGUNCj4gPiA+PiA+PiA+PiA+bnVtYmVyIG9mDQo+ID4gPj4gPj4gPj4gPisgICAgICAqIGVsZW1l bnRzIGluIHRoaXMgYXJyYXkuDQo+ID4gPj4gPj4gPj4gPisgICAgICAqDQo+ID4gPj4gPj4gPj4g PisgICAgICAqIEBzZWUgc3RydWN0IHJ0ZV9yZWdleF9vcHM6Om5iX21hdGNoZXMNCj4gPiA+PiA+ PiA+PiA+KyAgICAgICovDQo+ID4gPj4gPj4gPj4gPit9Ow0K