From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id EB28F1B162 for ; Mon, 18 Sep 2017 18:58:23 +0200 (CEST) Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Sep 2017 09:58:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,413,1500966000"; d="scan'208";a="153163942" Received: from irsmsx104.ger.corp.intel.com ([163.33.3.159]) by fmsmga006.fm.intel.com with ESMTP; 18 Sep 2017 09:58:21 -0700 Received: from irsmsx103.ger.corp.intel.com ([169.254.3.49]) by IRSMSX104.ger.corp.intel.com ([163.33.3.159]) with mapi id 14.03.0319.002; Mon, 18 Sep 2017 17:58:19 +0100 From: "Singh, Jasvinder" To: "Singh, Jasvinder" , "dev@dpdk.org" CC: "Dumitrescu, Cristian" , "Yigit, Ferruh" , "thomas@monjalon.net" Thread-Topic: [dpdk-dev] [PATCH v4 1/4] net/softnic: add softnic PMD Thread-Index: AQHTMFxnA2ajwoRXJ0yi+78z7RCl+qK63UZA Date: Mon, 18 Sep 2017 16:58:17 +0000 Message-ID: <54CBAA185211B4429112C315DA58FF6D33253A21@IRSMSX103.ger.corp.intel.com> References: <20170811124929.118564-2-jasvinder.singh@intel.com> <20170918091015.82824-1-jasvinder.singh@intel.com> <20170918091015.82824-2-jasvinder.singh@intel.com> In-Reply-To: <20170918091015.82824-2-jasvinder.singh@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMjljOGJiZWEtODNlYS00NGZiLTgwMGQtYTg3NzkwNmUyODk0IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IktyOUZ2ZFA2aEpsRklcLzRWNUZncEpXRmxnRFREelBDT09NbjJKeEN0d0M4PSJ9 x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [163.33.239.181] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v4 1/4] net/softnic: add softnic PMD X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Sep 2017 16:58:25 -0000 SGkgVGhvbWFzLA0KDQpJIGRvbid0IHNlZSB0aGlzIHBhdGNoIGluIHBhdGNod29yaywgYWx0aG91 Z2ggaXQgaXMgcHJlc2VudCBpbiBlbWFpbCBhcmNoaXZlLiBBbnkgZ3Vlc3Mgd2h5IGl0IGlzIG5v dCBzaG93aW5nIHVwIHRoZXJlPw0KDQpUaGFuayB5b3UsDQpKYXN2aW5kZXINCg0KPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRr Lm9yZ10gT24gQmVoYWxmIE9mIEphc3ZpbmRlciBTaW5naA0KPiBTZW50OiBNb25kYXksIFNlcHRl bWJlciAxOCwgMjAxNyAxMDoxMCBBTQ0KPiBUbzogZGV2QGRwZGsub3JnDQo+IENjOiBEdW1pdHJl c2N1LCBDcmlzdGlhbiA8Y3Jpc3RpYW4uZHVtaXRyZXNjdUBpbnRlbC5jb20+OyBZaWdpdCwgRmVy cnVoDQo+IDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsgdGhvbWFzQG1vbmphbG9uLm5ldA0KPiBT dWJqZWN0OiBbZHBkay1kZXZdIFtQQVRDSCB2NCAxLzRdIG5ldC9zb2Z0bmljOiBhZGQgc29mdG5p YyBQTUQNCj4gDQo+IEFkZCBTb2Z0TklDIFBNRCB0byBwcm92aWRlIFNXIGZhbGwtYmFjayBmb3Ig ZXRoZGV2IEFQSXMuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBEdW1pdHJlc2N1IDxj cmlzdGlhbi5kdW1pdHJlc2N1QGludGVsLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogSmFzdmluZGVy IFNpbmdoIDxqYXN2aW5kZXIuc2luZ2hAaW50ZWwuY29tPg0KPiAtLS0NCj4gdjQgY2hhbmdlczoN Cj4gLSBJbXBsZW1lbnRlZCBmZWVkYmFjayBmcm9tIEZlcnJ1aCBbMV0NCj4gIC0gcmVuYW1lIG1h cCBmaWxlIHRvIHJ0ZV9wbWRfZXRoX3NvZnRuaWNfdmVyc2lvbi5tYXANCj4gIC0gYWRkIHJlbGVh c2Ugbm90ZXMgbGlicmFyeSB2ZXJzaW9uIGluZm8NCj4gIC0gZG94eWdlbjogZml4IGhvb2tzIGlu IGRvYy9hcGkvZG94eS1hcGktaW5kZXgubWQNCj4gIC0gYWRkIGRveHlnZW4gY29tbWVudCBmb3Ig cnRlX3BtZF9zb2Z0bmljX3J1bigpDQo+ICAtIGZyZWUgZGV2aWNlIG5hbWUgbWVtb3J5DQo+ICAt IHJlbW92ZSBzb2Z0X2RldiBwYXJhbSBpbiBwbWRfZXRoZGV2X3JlZ2lzdGVyKCkNCj4gIC0gZml4 IGNoZWNrcGF0Y2ggd2FybmluZ3MNCj4gDQo+IHYzIGNoYW5nZXM6DQo+IC0gcmViYXNlIHRvIGRw ZGsxNy4wOCByZWxlYXNlDQo+IA0KPiB2MiBjaGFuZ2VzOg0KPiAtIGZpeCBidWlsZCBlcnJvcnMN Cj4gLSByZWJhc2VkIHRvIFRNIEFQSXMgdjYgcGx1cyBkcGRrIG1hc3Rlcg0KPiANCj4gWzFdIEZl cnJ1aCBzIGZlZWRiYWNrIG9uIHYzOiBodHRwOi8vZHBkay5vcmcvbWwvYXJjaGl2ZXMvZGV2LzIw MTctDQo+IFNlcHRlbWJlci8wNzQ1NzYuaHRtbA0KPiANCj4gIE1BSU5UQUlORVJTICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICsNCj4gIGNvbmZpZy9jb21tb25f YmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1ICsNCj4gIGRvYy9hcGkv ZG94eS1hcGktaW5kZXgubWQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICstDQo+ICBk b2MvYXBpL2RveHktYXBpLmNvbmYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr DQo+ICBkb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzE3XzExLnJzdCAgICAgICAgICAgICB8 ICAgNiArDQo+ICBkcml2ZXJzL25ldC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNSArDQo+ICBkcml2ZXJzL25ldC9zb2Z0bmljL01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICAgICB8ICA1NiArKw0KPiAgZHJpdmVycy9uZXQvc29mdG5pYy9ydGVfZXRoX3NvZnRu aWMuYyAgICAgICAgICAgICAgfCA1OTUgKysrKysrKysrKysrKysrKysrKysrDQo+ICBkcml2ZXJz L25ldC9zb2Z0bmljL3J0ZV9ldGhfc29mdG5pYy5oICAgICAgICAgICAgICB8ICA2NyArKysNCj4g IGRyaXZlcnMvbmV0L3NvZnRuaWMvcnRlX2V0aF9zb2Z0bmljX2ludGVybmFscy5oICAgIHwgMTE0 ICsrKysNCj4gIC4uLi9uZXQvc29mdG5pYy9ydGVfcG1kX2V0aF9zb2Z0bmljX3ZlcnNpb24ubWFw ICAgIHwgICA3ICsNCj4gIG1rL3J0ZS5hcHAubWsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA1ICstDQo+ICAxMiBmaWxlcyBjaGFuZ2VkLCA4NjcgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBkcml2ZXJzL25ldC9zb2Z0 bmljL01ha2VmaWxlICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gZHJpdmVycy9uZXQvc29mdG5pYy9y dGVfZXRoX3NvZnRuaWMuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3NvZnRu aWMvcnRlX2V0aF9zb2Z0bmljLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9z b2Z0bmljL3J0ZV9ldGhfc29mdG5pY19pbnRlcm5hbHMuaA0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvbmV0L3NvZnRuaWMvcnRlX3BtZF9ldGhfc29mdG5pY192ZXJzaW9uLm1hcA0KPiAN Cj4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMNCj4gaW5kZXggYTBjZDc1 ZS4uYjZiNzM4ZCAxMDA2NDQNCj4gLS0tIGEvTUFJTlRBSU5FUlMNCj4gKysrIGIvTUFJTlRBSU5F UlMNCj4gQEAgLTUxMSw2ICs1MTEsMTEgQEAgTTogR2FldGFuIFJpdmV0IDxnYWV0YW4ucml2ZXRA NndpbmQuY29tPg0KPiAgRjogZHJpdmVycy9uZXQvZmFpbHNhZmUvDQo+ICBGOiBkb2MvZ3VpZGVz L25pY3MvZmFpbF9zYWZlLnJzdA0KPiANCj4gK1NvZnRuaWMgUE1EDQo+ICtNOiBKYXN2aW5kZXIg U2luZ2ggPGphc3ZpbmRlci5zaW5naEBpbnRlbC5jb20+DQo+ICtNOiBDcmlzdGlhbiBEdW1pdHJl c2N1IDxjcmlzdGlhbi5kdW1pdHJlc2N1QGludGVsLmNvbT4NCj4gK0Y6IGRyaXZlcnMvbmV0L3Nv ZnRuaWMNCj4gKw0KPiANCj4gIENyeXB0byBEcml2ZXJzDQo+ICAtLS0tLS0tLS0tLS0tLQ0KPiBk aWZmIC0tZ2l0IGEvY29uZmlnL2NvbW1vbl9iYXNlIGIvY29uZmlnL2NvbW1vbl9iYXNlIGluZGV4 DQo+IDVlOTdhMDguLjFhMGM3N2QgMTAwNjQ0DQo+IC0tLSBhL2NvbmZpZy9jb21tb25fYmFzZQ0K PiArKysgYi9jb25maWcvY29tbW9uX2Jhc2UNCj4gQEAgLTI3Myw2ICsyNzMsMTEgQEAgQ09ORklH X1JURV9MSUJSVEVfU0ZDX0VGWF9QTUQ9eQ0KPiBDT05GSUdfUlRFX0xJQlJURV9TRkNfRUZYX0RF QlVHPW4NCj4gDQo+ICAjDQo+ICsjIENvbXBpbGUgU09GVE5JQyBQTUQNCj4gKyMNCj4gK0NPTkZJ R19SVEVfTElCUlRFX1BNRF9TT0ZUTklDPXkNCj4gKw0KPiArIw0KPiAgIyBDb21waWxlIHNvZnR3 YXJlIFBNRCBiYWNrZWQgYnkgU1pFREFUQTIgZGV2aWNlICAjDQo+IENPTkZJR19SVEVfTElCUlRF X1BNRF9TWkVEQVRBMj1uIGRpZmYgLS1naXQgYS9kb2MvYXBpL2RveHktYXBpLQ0KPiBpbmRleC5t ZCBiL2RvYy9hcGkvZG94eS1hcGktaW5kZXgubWQgaW5kZXggMTllMGQ0Zi4uNjI2YWI1MSAxMDA2 NDQNCj4gLS0tIGEvZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZA0KPiArKysgYi9kb2MvYXBpL2Rv eHktYXBpLWluZGV4Lm1kDQo+IEBAIC01NSw3ICs1NSw4IEBAIFRoZSBwdWJsaWMgQVBJIGhlYWRl cnMgYXJlIGdyb3VwZWQgYnkgdG9waWNzOg0KPiAgICBbS05JXSAgICAgICAgICAgICAgICAoQHJl ZiBydGVfa25pLmgpLA0KPiAgICBbaXhnYmVdICAgICAgICAgICAgICAoQHJlZiBydGVfcG1kX2l4 Z2JlLmgpLA0KPiAgICBbaTQwZV0gICAgICAgICAgICAgICAoQHJlZiBydGVfcG1kX2k0MGUuaCks DQo+IC0gIFtjcnlwdG9fc2NoZWR1bGVyXSAgIChAcmVmIHJ0ZV9jcnlwdG9kZXZfc2NoZWR1bGVy LmgpDQo+ICsgIFtjcnlwdG9fc2NoZWR1bGVyXSAgIChAcmVmIHJ0ZV9jcnlwdG9kZXZfc2NoZWR1 bGVyLmgpLA0KPiArICBbc29mdG5pY10gICAgICAgICAgICAoQHJlZiBydGVfZXRoX3NvZnRuaWMu aCkNCj4gDQo+ICAtICoqbWVtb3J5Kio6DQo+ICAgIFttZW1zZWddICAgICAgICAgICAgIChAcmVm IHJ0ZV9tZW1vcnkuaCksDQo+IGRpZmYgLS1naXQgYS9kb2MvYXBpL2RveHktYXBpLmNvbmYgYi9k b2MvYXBpL2RveHktYXBpLmNvbmYgaW5kZXgNCj4gODIzNTU0Zi4uYjI3NzU1ZCAxMDA2NDQNCj4g LS0tIGEvZG9jL2FwaS9kb3h5LWFwaS5jb25mDQo+ICsrKyBiL2RvYy9hcGkvZG94eS1hcGkuY29u Zg0KPiBAQCAtMzIsNiArMzIsNyBAQCBQUk9KRUNUX05BTUUgICAgICAgICAgICA9IERQREsNCj4g IElOUFVUICAgICAgICAgICAgICAgICAgID0gZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZCBcDQo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcnMvY3J5cHRvL3NjaGVkdWxlciBcDQo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcnMvbmV0L2JvbmRpbmcgXA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJzL25ldC9zb2Z0bmljIFwNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgZHJpdmVycy9uZXQvaTQwZSBcDQo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRyaXZlcnMvbmV0L2l4Z2JlIFwNCj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUgXCBkaWZmIC0tZ2l0DQo+IGEvZG9jL2d1 aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8xN18xMS5yc3QNCj4gYi9kb2MvZ3VpZGVzL3JlbF9ub3Rl cy9yZWxlYXNlXzE3XzExLnJzdA0KPiBpbmRleCAxNzBmNGY5Li5kNWE3NjBiIDEwMDY0NA0KPiAt LS0gYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzE3XzExLnJzdA0KPiArKysgYi9kb2Mv Z3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzE3XzExLnJzdA0KPiBAQCAtNDEsNiArNDEsMTEgQEAg TmV3IEZlYXR1cmVzDQo+ICAgICAgIEFsc28sIG1ha2Ugc3VyZSB0byBzdGFydCB0aGUgYWN0dWFs IHRleHQgYXQgdGhlIG1hcmdpbi4NCj4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+IA0KPiArKiAqKkFkZGVkIFNvZnROSUMg UE1ELioqDQo+ICsNCj4gKyAgQWRkZWQgbmV3IFNvZnROSUMgUE1ELiBUaGlzIHZpcnR1YWwgZGV2 aWNlIG9mZmVycyBhcHBsaWNhdGlvbnMgYQ0KPiArIHNvZnR3YXJlICBmYWxsYmFjayBzdXBwb3J0 IGZvciB0cmFmZmljIG1hbmFnZW1lbnQuDQo+ICsNCj4gDQo+ICBSZXNvbHZlZCBJc3N1ZXMNCj4g IC0tLS0tLS0tLS0tLS0tLQ0KPiBAQCAtMTcwLDYgKzE3NSw3IEBAIFRoZSBsaWJyYXJpZXMgcHJl cGVuZGVkIHdpdGggYSBwbHVzIHNpZ24gd2VyZQ0KPiBpbmNyZW1lbnRlZCBpbiB0aGlzIHZlcnNp b24uDQo+ICAgICAgIGxpYnJ0ZV9waXBlbGluZS5zby4zDQo+ICAgICAgIGxpYnJ0ZV9wbWRfYm9u ZC5zby4xDQo+ICAgICAgIGxpYnJ0ZV9wbWRfcmluZy5zby4yDQo+ICsgICArIGxpYnJ0ZV9wbWRf c29mdG5pYy5zby4xDQo+ICAgICAgIGxpYnJ0ZV9wb3J0LnNvLjMNCj4gICAgICAgbGlicnRlX3Bv d2VyLnNvLjENCj4gICAgICAgbGlicnRlX3Jlb3JkZXIuc28uMQ0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9NYWtlZmlsZSBpbmRleA0KPiBkMzNjOTU5 Li5iNTUyYTUxIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL25ldC9NYWtlZmlsZQ0KPiArKysgYi9k cml2ZXJzL25ldC9NYWtlZmlsZQ0KPiBAQCAtMTEwLDQgKzExMCw5IEBAIERJUlMtJChDT05GSUdf UlRFX0xJQlJURV9QTURfVkhPU1QpICs9IHZob3N0DQo+IGVuZGlmICMgJChDT05GSUdfUlRFX0xJ QlJURV9WSE9TVCkgIERFUERJUlMtdmhvc3QgPSAkKGNvcmUtbGlicykNCj4gbGlicnRlX3Zob3N0 DQo+IA0KPiAraWZlcSAoJChDT05GSUdfUlRFX0xJQlJURV9TQ0hFRCkseSkNCj4gK0RJUlMtJChD T05GSUdfUlRFX0xJQlJURV9QTURfU09GVE5JQykgKz0gc29mdG5pYyBlbmRpZiAjDQo+ICskKENP TkZJR19SVEVfTElCUlRFX1NDSEVEKSBERVBESVJTLXNvZnRuaWMgPSAkKGNvcmUtbGlicykgbGli cnRlX3NjaGVkDQo+ICsNCj4gIGluY2x1ZGUgJChSVEVfU0RLKS9tay9ydGUuc3ViZGlyLm1rDQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zb2Z0bmljL01ha2VmaWxlIGIvZHJpdmVycy9uZXQv c29mdG5pYy9NYWtlZmlsZSBuZXcNCj4gZmlsZSBtb2RlIDEwMDY0NCBpbmRleCAwMDAwMDAwLi5j MmY0MmVmDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9uZXQvc29mdG5pYy9NYWtl ZmlsZQ0KPiBAQCAtMCwwICsxLDU2IEBADQo+ICsjICAgQlNEIExJQ0VOU0UNCj4gKyMNCj4gKyMg ICBDb3B5cmlnaHQoYykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gKyMgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArIw0KPiArIyAgIFJlZGlzdHJpYnV0 aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0K PiArIyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucw0KPiArIyAgIGFyZSBtZXQ6DQo+ICsjDQo+ICsjICAgICAqIFJlZGlz dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0 DQo+ICsjICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lci4NCj4gKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gKyMgICAgICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu DQo+ICsjICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQgd2l0aCB0aGUNCj4gKyMgICAgICAgZGlzdHJpYnV0aW9uLg0KPiArIyAgICAgKiBOZWl0 aGVyIHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzDQo+ ICsjICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg cHJvZHVjdHMgZGVyaXZlZA0KPiArIyAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+ICsjDQo+ICsjICAgVEhJUyBTT0ZU V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENPTlRSSUJV VE9SUw0KPiArIyAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF UywgSU5DTFVESU5HLCBCVVQNCj4gTk9UDQo+ICsjICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EDQo+IEZJVE5FU1MgRk9SDQo+ICsjICAg QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI RQ0KPiBDT1BZUklHSFQNCj4gKyMgICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP UiBBTlkgRElSRUNULCBJTkRJUkVDVCwNCj4gSU5DSURFTlRBTCwNCj4gKyMgICBTUEVDSUFMLCBF WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQNCj4gTk9U DQo+ICsjICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT RVJWSUNFUzsgTE9TUw0KPiBPRiBVU0UsDQo+ICsjICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRA0KPiBBTkQgT04gQU5ZDQo+ICsjICAg VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU WSwgT1INCj4gVE9SVA0KPiArIyAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YNCj4gVEhFIFVTRQ0KPiArIyAgIE9GIFRISVMgU09G VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSA0KPiBEQU1B R0UuDQo+ICsNCj4gK2luY2x1ZGUgJChSVEVfU0RLKS9tay9ydGUudmFycy5taw0KPiArDQo+ICsj DQo+ICsjIGxpYnJhcnkgbmFtZQ0KPiArIw0KPiArTElCID0gbGlicnRlX3BtZF9zb2Z0bmljLmEN Cj4gKw0KPiArQ0ZMQUdTICs9IC1PMw0KPiArQ0ZMQUdTICs9ICQoV0VSUk9SX0ZMQUdTKQ0KPiAr DQo+ICtFWFBPUlRfTUFQIDo9IHJ0ZV9wbWRfZXRoX3NvZnRuaWNfdmVyc2lvbi5tYXANCj4gKw0K PiArTElCQUJJVkVSIDo9IDENCj4gKw0KPiArIw0KPiArIyBhbGwgc291cmNlIGFyZSBzdG9yZWQg aW4gU1JDUy15DQo+ICsjDQo+ICtTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUE1EX1NPRlROSUMp ICs9IHJ0ZV9ldGhfc29mdG5pYy5jDQo+ICsNCj4gKyMNCj4gKyMgRXhwb3J0IGluY2x1ZGUgZmls ZXMNCj4gKyMNCj4gK1NZTUxJTksteS1pbmNsdWRlICs9IHJ0ZV9ldGhfc29mdG5pYy5oDQo+ICsN Cj4gK2luY2x1ZGUgJChSVEVfU0RLKS9tay9ydGUubGliLm1rDQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC9zb2Z0bmljL3J0ZV9ldGhfc29mdG5pYy5jDQo+IGIvZHJpdmVycy9uZXQvc29mdG5p Yy9ydGVfZXRoX3NvZnRuaWMuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwLi43OTJlN2VhDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9uZXQvc29mdG5p Yy9ydGVfZXRoX3NvZnRuaWMuYw0KPiBAQCAtMCwwICsxLDU5NSBAQA0KPiArLyotDQo+ICsgKiAg IEJTRCBMSUNFTlNFDQo+ICsgKg0KPiArICogICBDb3B5cmlnaHQoYykgMjAxNyBJbnRlbCBDb3Jw b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqICAgQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCj4gKyAqDQo+ICsgKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiArICogICBtb2RpZmljYXRpb24sIGFyZSBw ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4gKyAqICAg YXJlIG1ldDoNCj4gKyAqDQo+ICsgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiArICogICAgICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiAr ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZSBjb3B5cmlnaHQNCj4gKyAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbg0KPiArICogICAgICAgdGhlIGRv Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiAr ICogICAgICAgZGlzdHJpYnV0aW9uLg0KPiArICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBJ bnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KPiArICogICAgICAgY29udHJp YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk DQo+ICsgKiAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3 cml0dGVuIHBlcm1pc3Npb24uDQo+ICsgKg0KPiArICogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJ REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gQ09OVFJJQlVUT1JTDQo+ICsgKiAg ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H LCBCVVQNCj4gTk9UDQo+ICsgKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZIEFORA0KPiBGSVRORVNTIEZPUg0KPiArICogICBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQo+IENPUFlS SUdIVA0KPiArICogICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS RUNULCBJTkRJUkVDVCwNCj4gSU5DSURFTlRBTCwNCj4gKyAqICAgU1BFQ0lBTCwgRVhFTVBMQVJZ LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiArICog ICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT OyBMT1NTDQo+IE9GIFVTRSwNCj4gKyAqICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRA0KPiBBTkQgT04gQU5ZDQo+ICsgKiAgIFRIRU9S WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S DQo+IFRPUlQNCj4gKyAqICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ U0lORyBJTiBBTlkgV0FZIE9VVCBPRg0KPiBUSEUgVVNFDQo+ICsgKiAgIE9GIFRISVMgU09GVFdB UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSA0KPiBEQU1BR0Uu DQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiArI2luY2x1ZGUgPHN0ZGxp Yi5oPg0KPiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiArDQo+ICsjaW5jbHVkZSA8cnRlX2V0aGRl di5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9ldGhkZXZfdmRldi5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9t YWxsb2MuaD4NCj4gKyNpbmNsdWRlIDxydGVfdmRldi5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9rdmFy Z3MuaD4NCj4gKyNpbmNsdWRlIDxydGVfZXJybm8uaD4NCj4gKyNpbmNsdWRlIDxydGVfcmluZy5o Pg0KPiArDQo+ICsjaW5jbHVkZSAicnRlX2V0aF9zb2Z0bmljLmgiDQo+ICsjaW5jbHVkZSAicnRl X2V0aF9zb2Z0bmljX2ludGVybmFscy5oIg0KPiArDQo+ICsjZGVmaW5lIFBSSVZfVE9fSEFSRF9E RVYocCkJCQkJCVwNCj4gKwkoJnJ0ZV9ldGhfZGV2aWNlc1twLT5oYXJkLnBvcnRfaWRdKQ0KPiAr DQo+ICsjZGVmaW5lIFBNRF9QQVJBTV9IQVJEX05BTUUNCj4gCSJoYXJkX25hbWUiDQo+ICsjZGVm aW5lIFBNRF9QQVJBTV9IQVJEX1RYX1FVRVVFX0lEDQo+IAkiaGFyZF90eF9xdWV1ZV9pZCINCj4g Kw0KPiArc3RhdGljIGNvbnN0IGNoYXIgKnBtZF92YWxpZF9hcmdzW10gPSB7DQo+ICsJUE1EX1BB UkFNX0hBUkRfTkFNRSwNCj4gKwlQTURfUEFSQU1fSEFSRF9UWF9RVUVVRV9JRCwNCj4gKwlOVUxM DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJ0ZV9ldGhfZGV2X2luZm8gcG1k X2Rldl9pbmZvID0gew0KPiArCS5taW5fcnhfYnVmc2l6ZSA9IDAsDQo+ICsJLm1heF9yeF9wa3Rs ZW4gPSBVSU5UMzJfTUFYLA0KPiArCS5tYXhfcnhfcXVldWVzID0gVUlOVDE2X01BWCwNCj4gKwku bWF4X3R4X3F1ZXVlcyA9IFVJTlQxNl9NQVgsDQo+ICsJLnJ4X2Rlc2NfbGltID0gew0KPiArCQku bmJfbWF4ID0gVUlOVDE2X01BWCwNCj4gKwkJLm5iX21pbiA9IDAsDQo+ICsJCS5uYl9hbGlnbiA9 IDEsDQo+ICsJfSwNCj4gKwkudHhfZGVzY19saW0gPSB7DQo+ICsJCS5uYl9tYXggPSBVSU5UMTZf TUFYLA0KPiArCQkubmJfbWluID0gMCwNCj4gKwkJLm5iX2FsaWduID0gMSwNCj4gKwl9LA0KPiAr fTsNCj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK3BtZF9kZXZfaW5mb3NfZ2V0KHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2IF9fcnRlX3VudXNlZCwNCj4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXZfaW5mbyAq ZGV2X2luZm8pDQo+ICt7DQo+ICsJbWVtY3B5KGRldl9pbmZvLCAmcG1kX2Rldl9pbmZvLCBzaXpl b2YoKmRldl9pbmZvKSk7IH0NCj4gKw0KPiArc3RhdGljIGludA0KPiArcG1kX2Rldl9jb25maWd1 cmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpIHsNCj4gKwlzdHJ1Y3QgcG1kX2ludGVybmFscyAq cCA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ICsJc3RydWN0IHJ0ZV9ldGhfZGV2ICpoYXJk X2RldiA9IFBSSVZfVE9fSEFSRF9ERVYocCk7DQo+ICsNCj4gKwlpZiAoZGV2LT5kYXRhLT5uYl9y eF9xdWV1ZXMgPiBoYXJkX2Rldi0+ZGF0YS0+bmJfcnhfcXVldWVzKQ0KPiArCQlyZXR1cm4gLTE7 DQo+ICsNCj4gKwlpZiAocC0+cGFyYW1zLmhhcmQudHhfcXVldWVfaWQgPj0gaGFyZF9kZXYtPmRh dGEtPm5iX3R4X3F1ZXVlcykNCj4gKwkJcmV0dXJuIC0xOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3BtZF9yeF9xdWV1ZV9zZXR1cChzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldiwNCj4gKwl1aW50MTZfdCByeF9xdWV1ZV9pZCwNCj4gKwl1aW50MTZfdCBu Yl9yeF9kZXNjIF9fcnRlX3VudXNlZCwNCj4gKwl1bnNpZ25lZCBpbnQgc29ja2V0X2lkLA0KPiAr CWNvbnN0IHN0cnVjdCBydGVfZXRoX3J4Y29uZiAqcnhfY29uZiBfX3J0ZV91bnVzZWQsDQo+ICsJ c3RydWN0IHJ0ZV9tZW1wb29sICptYl9wb29sIF9fcnRlX3VudXNlZCkgew0KPiArCXN0cnVjdCBw bWRfaW50ZXJuYWxzICpwID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gKw0KPiArCWlmIChw LT5wYXJhbXMuc29mdC5pbnRydXNpdmUgPT0gMCkgew0KPiArCQlzdHJ1Y3QgcG1kX3J4X3F1ZXVl ICpyeHE7DQo+ICsNCj4gKwkJcnhxID0gcnRlX3ptYWxsb2Nfc29ja2V0KHAtPnBhcmFtcy5zb2Z0 Lm5hbWUsDQo+ICsJCQlzaXplb2Yoc3RydWN0IHBtZF9yeF9xdWV1ZSksIDAsIHNvY2tldF9pZCk7 DQo+ICsJCWlmIChyeHEgPT0gTlVMTCkNCj4gKwkJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJ CXJ4cS0+aGFyZC5wb3J0X2lkID0gcC0+aGFyZC5wb3J0X2lkOw0KPiArCQlyeHEtPmhhcmQucnhf cXVldWVfaWQgPSByeF9xdWV1ZV9pZDsNCj4gKwkJZGV2LT5kYXRhLT5yeF9xdWV1ZXNbcnhfcXVl dWVfaWRdID0gcnhxOw0KPiArCX0gZWxzZSB7DQo+ICsJCXN0cnVjdCBydGVfZXRoX2RldiAqaGFy ZF9kZXYgPSBQUklWX1RPX0hBUkRfREVWKHApOw0KPiArCQl2b2lkICpyeHEgPSBoYXJkX2Rldi0+ ZGF0YS0+cnhfcXVldWVzW3J4X3F1ZXVlX2lkXTsNCj4gKw0KPiArCQlpZiAocnhxID09IE5VTEwp DQo+ICsJCQlyZXR1cm4gLTE7DQo+ICsNCj4gKwkJZGV2LT5kYXRhLT5yeF9xdWV1ZXNbcnhfcXVl dWVfaWRdID0gcnhxOw0KPiArCX0NCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGludA0KPiArcG1kX3R4X3F1ZXVlX3NldHVwKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiAr CXVpbnQxNl90IHR4X3F1ZXVlX2lkLA0KPiArCXVpbnQxNl90IG5iX3R4X2Rlc2MsDQo+ICsJdW5z aWduZWQgaW50IHNvY2tldF9pZCwNCj4gKwljb25zdCBzdHJ1Y3QgcnRlX2V0aF90eGNvbmYgKnR4 X2NvbmYgX19ydGVfdW51c2VkKSB7DQo+ICsJdWludDMyX3Qgc2l6ZSA9IFJURV9FVEhfTkFNRV9N QVhfTEVOICsgc3RybGVuKCJfdHhxIikgKyA0Ow0KPiArCWNoYXIgbmFtZVtzaXplXTsNCj4gKwlz dHJ1Y3QgcnRlX3JpbmcgKnI7DQo+ICsNCj4gKwlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSks ICIlc190eHElMDR4IiwNCj4gKwkJZGV2LT5kYXRhLT5uYW1lLCB0eF9xdWV1ZV9pZCk7DQo+ICsJ ciA9IHJ0ZV9yaW5nX2NyZWF0ZShuYW1lLCBuYl90eF9kZXNjLCBzb2NrZXRfaWQsDQo+ICsJCVJJ TkdfRl9TUF9FTlEgfCBSSU5HX0ZfU0NfREVRKTsNCj4gKwlpZiAociA9PSBOVUxMKQ0KPiArCQly ZXR1cm4gLTE7DQo+ICsNCj4gKwlkZXYtPmRhdGEtPnR4X3F1ZXVlc1t0eF9xdWV1ZV9pZF0gPSBy Ow0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtwbWRfZGV2X3N0 YXJ0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQ0KPiArew0KPiArCXN0cnVjdCBwbWRfaW50ZXJu YWxzICpwID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gKw0KPiArCWRldi0+ZGF0YS0+ZGV2 X2xpbmsubGlua19zdGF0dXMgPSBFVEhfTElOS19VUDsNCj4gKw0KPiArCWlmIChwLT5wYXJhbXMu c29mdC5pbnRydXNpdmUpIHsNCj4gKwkJc3RydWN0IHJ0ZV9ldGhfZGV2ICpoYXJkX2RldiA9IFBS SVZfVE9fSEFSRF9ERVYocCk7DQo+ICsNCj4gKwkJLyogVGhlIGhhcmRfZGV2LT5yeF9wa3RfYnVy c3Qgc2hvdWxkIGJlIHN0YWJsZSBieSBub3cgKi8NCj4gKwkJZGV2LT5yeF9wa3RfYnVyc3QgPSBo YXJkX2Rldi0+cnhfcGt0X2J1cnN0Ow0KPiArCX0NCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0K PiArDQo+ICtzdGF0aWMgdm9pZA0KPiArcG1kX2Rldl9zdG9wKHN0cnVjdCBydGVfZXRoX2RldiAq ZGV2KQ0KPiArew0KPiArCWRldi0+ZGF0YS0+ZGV2X2xpbmsubGlua19zdGF0dXMgPSBFVEhfTElO S19ET1dOOyB9DQo+ICsNCj4gK3N0YXRpYyB2b2lkDQo+ICtwbWRfZGV2X2Nsb3NlKHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2KQ0KPiArew0KPiArCXVpbnQzMl90IGk7DQo+ICsNCj4gKwkvKiBUWCBx dWV1ZXMgKi8NCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGV2LT5kYXRhLT5uYl90eF9xdWV1ZXM7IGkr KykNCj4gKwkJcnRlX3JpbmdfZnJlZSgoc3RydWN0IHJ0ZV9yaW5nICopZGV2LT5kYXRhLT50eF9x dWV1ZXNbaV0pOyB9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3BtZF9saW5rX3VwZGF0ZShzdHJ1 Y3QgcnRlX2V0aF9kZXYgKmRldiBfX3J0ZV91bnVzZWQsDQo+ICsJaW50IHdhaXRfdG9fY29tcGxl dGUgX19ydGVfdW51c2VkKQ0KPiArew0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGV0aF9kZXZfb3BzIHBtZF9vcHMgPSB7DQo+ICsJLmRldl9jb25maWd1 cmUgPSBwbWRfZGV2X2NvbmZpZ3VyZSwNCj4gKwkuZGV2X3N0YXJ0ID0gcG1kX2Rldl9zdGFydCwN Cj4gKwkuZGV2X3N0b3AgPSBwbWRfZGV2X3N0b3AsDQo+ICsJLmRldl9jbG9zZSA9IHBtZF9kZXZf Y2xvc2UsDQo+ICsJLmxpbmtfdXBkYXRlID0gcG1kX2xpbmtfdXBkYXRlLA0KPiArCS5kZXZfaW5m b3NfZ2V0ID0gcG1kX2Rldl9pbmZvc19nZXQsDQo+ICsJLnJ4X3F1ZXVlX3NldHVwID0gcG1kX3J4 X3F1ZXVlX3NldHVwLA0KPiArCS50eF9xdWV1ZV9zZXR1cCA9IHBtZF90eF9xdWV1ZV9zZXR1cCwN Cj4gKwkudG1fb3BzX2dldCA9IE5VTEwsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgdWludDE2X3QN Cj4gK3BtZF9yeF9wa3RfYnVyc3Qodm9pZCAqcnhxLA0KPiArCXN0cnVjdCBydGVfbWJ1ZiAqKnJ4 X3BrdHMsDQo+ICsJdWludDE2X3QgbmJfcGt0cykNCj4gK3sNCj4gKwlzdHJ1Y3QgcG1kX3J4X3F1 ZXVlICpyeF9xdWV1ZSA9IHJ4cTsNCj4gKw0KPiArCXJldHVybiBydGVfZXRoX3J4X2J1cnN0KHJ4 X3F1ZXVlLT5oYXJkLnBvcnRfaWQsDQo+ICsJCXJ4X3F1ZXVlLT5oYXJkLnJ4X3F1ZXVlX2lkLA0K PiArCQlyeF9wa3RzLA0KPiArCQluYl9wa3RzKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHVpbnQx Nl90DQo+ICtwbWRfdHhfcGt0X2J1cnN0KHZvaWQgKnR4cSwNCj4gKwlzdHJ1Y3QgcnRlX21idWYg Kip0eF9wa3RzLA0KPiArCXVpbnQxNl90IG5iX3BrdHMpDQo+ICt7DQo+ICsJcmV0dXJuICh1aW50 MTZfdClydGVfcmluZ19lbnF1ZXVlX2J1cnN0KHR4cSwNCj4gKwkJKHZvaWQgKiopdHhfcGt0cywN Cj4gKwkJbmJfcGt0cywNCj4gKwkJTlVMTCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBfX3J0ZV9h bHdheXNfaW5saW5lIGludA0KPiArcnRlX3BtZF9zb2Z0bmljX3J1bl9kZWZhdWx0KHN0cnVjdCBy dGVfZXRoX2RldiAqZGV2KSB7DQo+ICsJc3RydWN0IHBtZF9pbnRlcm5hbHMgKnAgPSBkZXYtPmRh dGEtPmRldl9wcml2YXRlOw0KPiArDQo+ICsJLyogUGVyc2lzdGVudCBjb250ZXh0OiBSZWFkIE9u bHkgKHVwZGF0ZSBub3QgcmVxdWlyZWQpICovDQo+ICsJc3RydWN0IHJ0ZV9tYnVmICoqcGt0cyA9 IHAtPnNvZnQuZGVmLnBrdHM7DQo+ICsJdWludDE2X3QgbmJfdHhfcXVldWVzID0gZGV2LT5kYXRh LT5uYl90eF9xdWV1ZXM7DQo+ICsNCj4gKwkvKiBQZXJzaXN0ZW50IGNvbnRleHQ6IFJlYWQgLSBX cml0ZSAodXBkYXRlIHJlcXVpcmVkKSAqLw0KPiArCXVpbnQzMl90IHR4cV9wb3MgPSBwLT5zb2Z0 LmRlZi50eHFfcG9zOw0KPiArCXVpbnQzMl90IHBrdHNfbGVuID0gcC0+c29mdC5kZWYucGt0c19s ZW47DQo+ICsJdWludDMyX3QgZmx1c2hfY291bnQgPSBwLT5zb2Z0LmRlZi5mbHVzaF9jb3VudDsN Cj4gKw0KPiArCS8qIE5vdCBwYXJ0IG9mIHRoZSBwZXJzaXN0ZW50IGNvbnRleHQgKi8NCj4gKwl1 aW50MzJfdCBwb3M7DQo+ICsJdWludDE2X3QgaTsNCj4gKw0KPiArCS8qIFNvZnQgZGV2aWNlIFRY USByZWFkLCBIYXJkIGRldmljZSBUWFEgd3JpdGUgKi8NCj4gKwlmb3IgKGkgPSAwOyBpIDwgbmJf dHhfcXVldWVzOyBpKyspIHsNCj4gKwkJc3RydWN0IHJ0ZV9yaW5nICp0eHEgPSBkZXYtPmRhdGEt PnR4X3F1ZXVlc1t0eHFfcG9zXTsNCj4gKw0KPiArCQkvKiBSZWFkIHNvZnQgZGV2aWNlIFRYUSBi dXJzdCB0byBwYWNrZXQgZW5xdWV1ZSBidWZmZXIgKi8NCj4gKwkJcGt0c19sZW4gKz0gcnRlX3Jp bmdfc2NfZGVxdWV1ZV9idXJzdCh0eHEsDQo+ICsJCQkodm9pZCAqKikmcGt0c1twa3RzX2xlbl0s DQo+ICsJCQlERUZBVUxUX0JVUlNUX1NJWkUsDQo+ICsJCQlOVUxMKTsNCj4gKw0KPiArCQkvKiBJ bmNyZW1lbnQgc29mdCBkZXZpY2UgVFhRICovDQo+ICsJCXR4cV9wb3MrKzsNCj4gKwkJaWYgKHR4 cV9wb3MgPj0gbmJfdHhfcXVldWVzKQ0KPiArCQkJdHhxX3BvcyA9IDA7DQo+ICsNCj4gKwkJLyog SGFyZCBkZXZpY2UgVFhRIHdyaXRlIHdoZW4gY29tcGxldGUgYnVyc3QgaXMgYXZhaWxhYmxlICov DQo+ICsJCWlmIChwa3RzX2xlbiA+PSBERUZBVUxUX0JVUlNUX1NJWkUpIHsNCj4gKwkJCWZvciAo cG9zID0gMDsgcG9zIDwgcGt0c19sZW47ICkNCj4gKwkJCQlwb3MgKz0gcnRlX2V0aF90eF9idXJz dChwLT5oYXJkLnBvcnRfaWQsDQo+ICsJCQkJCXAtPnBhcmFtcy5oYXJkLnR4X3F1ZXVlX2lkLA0K PiArCQkJCQkmcGt0c1twb3NdLA0KPiArCQkJCQkodWludDE2X3QpKHBrdHNfbGVuIC0gcG9zKSk7 DQo+ICsNCj4gKwkJCXBrdHNfbGVuID0gMDsNCj4gKwkJCWZsdXNoX2NvdW50ID0gMDsNCj4gKwkJ CWJyZWFrOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJaWYgKGZsdXNoX2NvdW50ID49IEZMVVNI X0NPVU5UX1RIUkVTSE9MRCkgew0KPiArCQlmb3IgKHBvcyA9IDA7IHBvcyA8IHBrdHNfbGVuOyAp DQo+ICsJCQlwb3MgKz0gcnRlX2V0aF90eF9idXJzdChwLT5oYXJkLnBvcnRfaWQsDQo+ICsJCQkJ cC0+cGFyYW1zLmhhcmQudHhfcXVldWVfaWQsDQo+ICsJCQkJJnBrdHNbcG9zXSwNCj4gKwkJCQko dWludDE2X3QpKHBrdHNfbGVuIC0gcG9zKSk7DQo+ICsNCj4gKwkJcGt0c19sZW4gPSAwOw0KPiAr CQlmbHVzaF9jb3VudCA9IDA7DQo+ICsJfQ0KPiArDQo+ICsJcC0+c29mdC5kZWYudHhxX3BvcyA9 IHR4cV9wb3M7DQo+ICsJcC0+c29mdC5kZWYucGt0c19sZW4gPSBwa3RzX2xlbjsNCj4gKwlwLT5z b2Z0LmRlZi5mbHVzaF9jb3VudCA9IGZsdXNoX2NvdW50ICsgMTsNCj4gKw0KPiArCXJldHVybiAw Ow0KPiArfQ0KPiArDQo+ICtpbnQNCj4gK3J0ZV9wbWRfc29mdG5pY19ydW4odWludDhfdCBwb3J0 X2lkKQ0KPiArew0KPiArCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNl c1twb3J0X2lkXTsNCj4gKw0KPiArI2lmZGVmIFJURV9MSUJSVEVfRVRIREVWX0RFQlVHDQo+ICsJ UlRFX0VUSF9WQUxJRF9QT1JUSURfT1JfRVJSX1JFVChwb3J0X2lkLCAwKTsgI2VuZGlmDQo+ICsN Cj4gKwlyZXR1cm4gcnRlX3BtZF9zb2Z0bmljX3J1bl9kZWZhdWx0KGRldik7IH0NCj4gKw0KPiAr c3RhdGljIHN0cnVjdCBldGhlcl9hZGRyIGV0aF9hZGRyID0geyAuYWRkcl9ieXRlcyA9IHswfSB9 Ow0KPiArDQo+ICtzdGF0aWMgdWludDMyX3QNCj4gK2V0aF9kZXZfc3BlZWRfbWF4X21icHModWlu dDMyX3Qgc3BlZWRfY2FwYSkgew0KPiArCXVpbnQzMl90IHJhdGVfbWJwc1szMl0gPSB7DQo+ICsJ CUVUSF9TUEVFRF9OVU1fTk9ORSwNCj4gKwkJRVRIX1NQRUVEX05VTV8xME0sDQo+ICsJCUVUSF9T UEVFRF9OVU1fMTBNLA0KPiArCQlFVEhfU1BFRURfTlVNXzEwME0sDQo+ICsJCUVUSF9TUEVFRF9O VU1fMTAwTSwNCj4gKwkJRVRIX1NQRUVEX05VTV8xRywNCj4gKwkJRVRIX1NQRUVEX05VTV8yXzVH LA0KPiArCQlFVEhfU1BFRURfTlVNXzVHLA0KPiArCQlFVEhfU1BFRURfTlVNXzEwRywNCj4gKwkJ RVRIX1NQRUVEX05VTV8yMEcsDQo+ICsJCUVUSF9TUEVFRF9OVU1fMjVHLA0KPiArCQlFVEhfU1BF RURfTlVNXzQwRywNCj4gKwkJRVRIX1NQRUVEX05VTV81MEcsDQo+ICsJCUVUSF9TUEVFRF9OVU1f NTZHLA0KPiArCQlFVEhfU1BFRURfTlVNXzEwMEcsDQo+ICsJfTsNCj4gKw0KPiArCXVpbnQzMl90 IHBvcyA9IChzcGVlZF9jYXBhKSA/ICgzMSAtIF9fYnVpbHRpbl9jbHooc3BlZWRfY2FwYSkpIDog MDsNCj4gKwlyZXR1cm4gcmF0ZV9tYnBzW3Bvc107DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQN Cj4gK2RlZmF1bHRfaW5pdChzdHJ1Y3QgcG1kX2ludGVybmFscyAqcCwNCj4gKwlzdHJ1Y3QgcG1k X3BhcmFtcyAqcGFyYW1zLA0KPiArCWludCBudW1hX25vZGUpDQo+ICt7DQo+ICsJcC0+c29mdC5k ZWYucGt0cyA9IHJ0ZV96bWFsbG9jX3NvY2tldChwYXJhbXMtPnNvZnQubmFtZSwNCj4gKwkJMiAq IERFRkFVTFRfQlVSU1RfU0laRSAqIHNpemVvZihzdHJ1Y3QgcnRlX21idWYgKiksDQo+ICsJCTAs DQo+ICsJCW51bWFfbm9kZSk7DQo+ICsNCj4gKwlpZiAocC0+c29mdC5kZWYucGt0cyA9PSBOVUxM KQ0KPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgdm9pZA0KPiArZGVmYXVsdF9mcmVlKHN0cnVjdCBwbWRfaW50ZXJuYWxzICpwKQ0K PiArew0KPiArCWZyZWUoKHZvaWQgKilwLT5wYXJhbXMuaGFyZC5uYW1lKTsNCj4gKwlydGVfZnJl ZShwLT5zb2Z0LmRlZi5wa3RzKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgKg0KPiArcG1k X2luaXQoc3RydWN0IHBtZF9wYXJhbXMgKnBhcmFtcywgaW50IG51bWFfbm9kZSkgew0KPiArCXN0 cnVjdCBwbWRfaW50ZXJuYWxzICpwOw0KPiArCWludCBzdGF0dXM7DQo+ICsNCj4gKwlwID0gcnRl X3ptYWxsb2Nfc29ja2V0KHBhcmFtcy0+c29mdC5uYW1lLA0KPiArCQlzaXplb2Yoc3RydWN0IHBt ZF9pbnRlcm5hbHMpLA0KPiArCQkwLA0KPiArCQludW1hX25vZGUpOw0KPiArCWlmIChwID09IE5V TEwpDQo+ICsJCXJldHVybiBOVUxMOw0KPiArDQo+ICsJbWVtY3B5KCZwLT5wYXJhbXMsIHBhcmFt cywgc2l6ZW9mKHAtPnBhcmFtcykpOw0KPiArCXN0YXR1cyA9IHJ0ZV9ldGhfZGV2X2dldF9wb3J0 X2J5X25hbWUocGFyYW1zLT5oYXJkLm5hbWUsDQo+ICsJCSZwLT5oYXJkLnBvcnRfaWQpOw0KPiAr CWlmIChzdGF0dXMpIHsNCj4gKwkJcnRlX2ZyZWUocCk7DQo+ICsJCXJldHVybiBOVUxMOw0KPiAr CX0NCj4gKw0KPiArCS8qIERlZmF1bHQgKi8NCj4gKwlzdGF0dXMgPSBkZWZhdWx0X2luaXQocCwg cGFyYW1zLCBudW1hX25vZGUpOw0KPiArCWlmIChzdGF0dXMpIHsNCj4gKwkJcnRlX2ZyZWUocCk7 DQo+ICsJCXJldHVybiBOVUxMOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiBwOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgdm9pZA0KPiArcG1kX2ZyZWUoc3RydWN0IHBtZF9pbnRlcm5hbHMgKnApDQo+ ICt7DQo+ICsJZGVmYXVsdF9mcmVlKHApOw0KPiArDQo+ICsJcnRlX2ZyZWUocCk7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3BtZF9ldGhkZXZfcmVnaXN0ZXIoc3RydWN0IHJ0ZV92ZGV2 X2RldmljZSAqdmRldiwNCj4gKwlzdHJ1Y3QgcG1kX3BhcmFtcyAqcGFyYW1zLA0KPiArCXZvaWQg KmRldl9wcml2YXRlKQ0KPiArew0KPiArCXN0cnVjdCBydGVfZXRoX2Rldl9pbmZvIGhhcmRfaW5m bzsNCj4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXYgKnNvZnRfZGV2Ow0KPiArCXVpbnQzMl90IGhhcmRf c3BlZWQ7DQo+ICsJaW50IG51bWFfbm9kZTsNCj4gKwl1aW50OF90IGhhcmRfcG9ydF9pZDsNCj4g Kw0KPiArCXJ0ZV9ldGhfZGV2X2dldF9wb3J0X2J5X25hbWUocGFyYW1zLT5oYXJkLm5hbWUsDQo+ ICZoYXJkX3BvcnRfaWQpOw0KPiArCXJ0ZV9ldGhfZGV2X2luZm9fZ2V0KGhhcmRfcG9ydF9pZCwg JmhhcmRfaW5mbyk7DQo+ICsJaGFyZF9zcGVlZCA9IGV0aF9kZXZfc3BlZWRfbWF4X21icHMoaGFy ZF9pbmZvLnNwZWVkX2NhcGEpOw0KPiArCW51bWFfbm9kZSA9IHJ0ZV9ldGhfZGV2X3NvY2tldF9p ZChoYXJkX3BvcnRfaWQpOw0KPiArDQo+ICsJLyogRXRoZGV2IGVudHJ5IGFsbG9jYXRpb24gKi8N Cj4gKwlzb2Z0X2RldiA9IHJ0ZV9ldGhfZGV2X2FsbG9jYXRlKHBhcmFtcy0+c29mdC5uYW1lKTsN Cj4gKwlpZiAoIXNvZnRfZGV2KQ0KPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArCS8qIGRl diAqLw0KPiArCXNvZnRfZGV2LT5yeF9wa3RfYnVyc3QgPSAocGFyYW1zLT5zb2Z0LmludHJ1c2l2 ZSkgPw0KPiArCQlOVUxMIDogLyogc2V0IHVwIGxhdGVyICovDQo+ICsJCXBtZF9yeF9wa3RfYnVy c3Q7DQo+ICsJc29mdF9kZXYtPnR4X3BrdF9idXJzdCA9IHBtZF90eF9wa3RfYnVyc3Q7DQo+ICsJ c29mdF9kZXYtPnR4X3BrdF9wcmVwYXJlID0gTlVMTDsNCj4gKwlzb2Z0X2Rldi0+ZGV2X29wcyA9 ICZwbWRfb3BzOw0KPiArCXNvZnRfZGV2LT5kZXZpY2UgPSAmdmRldi0+ZGV2aWNlOw0KPiArDQo+ ICsJLyogZGV2LT5kYXRhICovDQo+ICsJc29mdF9kZXYtPmRhdGEtPmRldl9wcml2YXRlID0gZGV2 X3ByaXZhdGU7DQo+ICsJc29mdF9kZXYtPmRhdGEtPmRldl9saW5rLmxpbmtfc3BlZWQgPSBoYXJk X3NwZWVkOw0KPiArCXNvZnRfZGV2LT5kYXRhLT5kZXZfbGluay5saW5rX2R1cGxleCA9IEVUSF9M SU5LX0ZVTExfRFVQTEVYOw0KPiArCXNvZnRfZGV2LT5kYXRhLT5kZXZfbGluay5saW5rX2F1dG9u ZWcgPSBFVEhfTElOS19TUEVFRF9GSVhFRDsNCj4gKwlzb2Z0X2Rldi0+ZGF0YS0+ZGV2X2xpbmsu bGlua19zdGF0dXMgPSBFVEhfTElOS19ET1dOOw0KPiArCXNvZnRfZGV2LT5kYXRhLT5tYWNfYWRk cnMgPSAmZXRoX2FkZHI7DQo+ICsJc29mdF9kZXYtPmRhdGEtPnByb21pc2N1b3VzID0gMTsNCj4g Kwlzb2Z0X2Rldi0+ZGF0YS0+a2RydiA9IFJURV9LRFJWX05PTkU7DQo+ICsJc29mdF9kZXYtPmRh dGEtPm51bWFfbm9kZSA9IG51bWFfbm9kZTsNCj4gKwlzb2Z0X2Rldi0+ZGF0YS0+ZGV2X2ZsYWdz ID0gUlRFX0VUSF9ERVZfREVUQUNIQUJMRTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW50DQo+ICtnZXRfc3RyaW5nKGNvbnN0IGNoYXIgKmtleSBfX3J0ZV91bnVz ZWQsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkDQo+ICsqZXh0cmFfYXJncykgew0KPiArCWlmICgh dmFsdWUgfHwgIWV4dHJhX2FyZ3MpDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJKihj aGFyICoqKWV4dHJhX2FyZ3MgPSBzdHJkdXAodmFsdWUpOw0KPiArDQo+ICsJaWYgKCEqKGNoYXIg KiopZXh0cmFfYXJncykNCj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKwlyZXR1cm4gMDsN Cj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiArZ2V0X3VpbnQzMihjb25zdCBjaGFyICprZXkg X19ydGVfdW51c2VkLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZA0KPiArKmV4dHJhX2FyZ3MpIHsN Cj4gKwlpZiAoIXZhbHVlIHx8ICFleHRyYV9hcmdzKQ0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4g Kw0KPiArCSoodWludDMyX3QgKilleHRyYV9hcmdzID0gc3RydG91bGwodmFsdWUsIE5VTEwsIDAp Ow0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3BtZF9w YXJzZV9hcmdzKHN0cnVjdCBwbWRfcGFyYW1zICpwLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBj aGFyDQo+ICsqcGFyYW1zKSB7DQo+ICsJc3RydWN0IHJ0ZV9rdmFyZ3MgKmt2bGlzdDsNCj4gKwlp bnQgcmV0Ow0KPiArDQo+ICsJa3ZsaXN0ID0gcnRlX2t2YXJnc19wYXJzZShwYXJhbXMsIHBtZF92 YWxpZF9hcmdzKTsNCj4gKwlpZiAoa3ZsaXN0ID09IE5VTEwpDQo+ICsJCXJldHVybiAtRUlOVkFM Ow0KPiArDQo+ICsJLyogU2V0IGRlZmF1bHQgdmFsdWVzICovDQo+ICsJbWVtc2V0KHAsIDAsIHNp emVvZigqcCkpOw0KPiArCXAtPnNvZnQubmFtZSA9IG5hbWU7DQo+ICsJcC0+c29mdC5pbnRydXNp dmUgPSBJTlRSVVNJVkU7DQo+ICsJcC0+aGFyZC50eF9xdWV1ZV9pZCA9IFNPRlROSUNfSEFSRF9U WF9RVUVVRV9JRDsNCj4gKw0KPiArCS8qIEhBUkQ6IG5hbWUgKG1hbmRhdG9yeSkgKi8NCj4gKwlp ZiAocnRlX2t2YXJnc19jb3VudChrdmxpc3QsIFBNRF9QQVJBTV9IQVJEX05BTUUpID09IDEpIHsN Cj4gKwkJcmV0ID0gcnRlX2t2YXJnc19wcm9jZXNzKGt2bGlzdCwgUE1EX1BBUkFNX0hBUkRfTkFN RSwNCj4gKwkJCSZnZXRfc3RyaW5nLCAmcC0+aGFyZC5uYW1lKTsNCj4gKwkJaWYgKHJldCA8IDAp DQo+ICsJCQlnb3RvIG91dF9mcmVlOw0KPiArCX0gZWxzZSB7DQo+ICsJCXJldCA9IC1FSU5WQUw7 DQo+ICsJCWdvdG8gb3V0X2ZyZWU7DQo+ICsJfQ0KPiArDQo+ICsJLyogSEFSRDogdHhfcXVldWVf aWQgKG9wdGlvbmFsKSAqLw0KPiArCWlmIChydGVfa3ZhcmdzX2NvdW50KGt2bGlzdCwgUE1EX1BB UkFNX0hBUkRfVFhfUVVFVUVfSUQpID09IDEpDQo+IHsNCj4gKwkJcmV0ID0gcnRlX2t2YXJnc19w cm9jZXNzKGt2bGlzdCwNCj4gUE1EX1BBUkFNX0hBUkRfVFhfUVVFVUVfSUQsDQo+ICsJCQkmZ2V0 X3VpbnQzMiwgJnAtPmhhcmQudHhfcXVldWVfaWQpOw0KPiArCQlpZiAocmV0IDwgMCkNCj4gKwkJ CWdvdG8gb3V0X2ZyZWU7DQo+ICsJfQ0KPiArDQo+ICtvdXRfZnJlZToNCj4gKwlydGVfa3Zhcmdz X2ZyZWUoa3ZsaXN0KTsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50 DQo+ICtwbWRfcHJvYmUoc3RydWN0IHJ0ZV92ZGV2X2RldmljZSAqdmRldikgew0KPiArCXN0cnVj dCBwbWRfcGFyYW1zIHA7DQo+ICsJY29uc3QgY2hhciAqcGFyYW1zOw0KPiArCWludCBzdGF0dXM7 DQo+ICsNCj4gKwlzdHJ1Y3QgcnRlX2V0aF9kZXZfaW5mbyBoYXJkX2luZm87DQo+ICsJdWludDhf dCBoYXJkX3BvcnRfaWQ7DQo+ICsJaW50IG51bWFfbm9kZTsNCj4gKwl2b2lkICpkZXZfcHJpdmF0 ZTsNCj4gKw0KPiArCVJURV9MT0coSU5GTywgUE1ELA0KPiArCQkiUHJvYmluZyBkZXZpY2UgXCIl c1wiXG4iLA0KPiArCQlydGVfdmRldl9kZXZpY2VfbmFtZSh2ZGV2KSk7DQo+ICsNCj4gKwkvKiBQ YXJzZSBpbnB1dCBhcmd1bWVudHMgKi8NCj4gKwlwYXJhbXMgPSBydGVfdmRldl9kZXZpY2VfYXJn cyh2ZGV2KTsNCj4gKwlpZiAoIXBhcmFtcykNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4g KwlzdGF0dXMgPSBwbWRfcGFyc2VfYXJncygmcCwgcnRlX3ZkZXZfZGV2aWNlX25hbWUodmRldiks DQo+IHBhcmFtcyk7DQo+ICsJaWYgKHN0YXR1cykNCj4gKwkJcmV0dXJuIHN0YXR1czsNCj4gKw0K PiArCS8qIENoZWNrIGlucHV0IGFyZ3VtZW50cyAqLw0KPiArCWlmIChydGVfZXRoX2Rldl9nZXRf cG9ydF9ieV9uYW1lKHAuaGFyZC5uYW1lLCAmaGFyZF9wb3J0X2lkKSkNCj4gKwkJcmV0dXJuIC1F SU5WQUw7DQo+ICsNCj4gKwlydGVfZXRoX2Rldl9pbmZvX2dldChoYXJkX3BvcnRfaWQsICZoYXJk X2luZm8pOw0KPiArCW51bWFfbm9kZSA9IHJ0ZV9ldGhfZGV2X3NvY2tldF9pZChoYXJkX3BvcnRf aWQpOw0KPiArDQo+ICsJaWYgKHAuaGFyZC50eF9xdWV1ZV9pZCA+PSBoYXJkX2luZm8ubWF4X3R4 X3F1ZXVlcykNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwkvKiBBbGxvY2F0ZSBhbmQg aW5pdGlhbGl6ZSBzb2Z0IGV0aGRldiBwcml2YXRlIGRhdGEgKi8NCj4gKwlkZXZfcHJpdmF0ZSA9 IHBtZF9pbml0KCZwLCBudW1hX25vZGUpOw0KPiArCWlmIChkZXZfcHJpdmF0ZSA9PSBOVUxMKQ0K PiArCQlyZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArCS8qIFJlZ2lzdGVyIHNvZnQgZXRoZGV2ICov DQo+ICsJUlRFX0xPRyhJTkZPLCBQTUQsDQo+ICsJCSJDcmVhdGluZyBzb2Z0IGV0aGRldiBcIiVz XCIgZm9yIGhhcmQgZXRoZGV2IFwiJXNcIlxuIiwNCj4gKwkJcC5zb2Z0Lm5hbWUsIHAuaGFyZC5u YW1lKTsNCj4gKw0KPiArCXN0YXR1cyA9IHBtZF9ldGhkZXZfcmVnaXN0ZXIodmRldiwgJnAsIGRl dl9wcml2YXRlKTsNCj4gKwlpZiAoc3RhdHVzKSB7DQo+ICsJCXBtZF9mcmVlKGRldl9wcml2YXRl KTsNCj4gKwkJcmV0dXJuIHN0YXR1czsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludA0KPiArcG1kX3JlbW92ZShzdHJ1Y3QgcnRlX3ZkZXZfZGV2aWNl ICp2ZGV2KSB7DQo+ICsJc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYgPSBOVUxMOw0KPiArCXN0cnVj dCBwbWRfaW50ZXJuYWxzICpwOw0KPiArDQo+ICsJaWYgKCF2ZGV2KQ0KPiArCQlyZXR1cm4gLUVJ TlZBTDsNCj4gKw0KPiArCVJURV9MT0coSU5GTywgUE1ELCAiUmVtb3ZpbmcgZGV2aWNlIFwiJXNc IlxuIiwNCj4gKwkJcnRlX3ZkZXZfZGV2aWNlX25hbWUodmRldikpOw0KPiArDQo+ICsJLyogRmlu ZCB0aGUgZXRoZGV2IGVudHJ5ICovDQo+ICsJZGV2ID0gcnRlX2V0aF9kZXZfYWxsb2NhdGVkKHJ0 ZV92ZGV2X2RldmljZV9uYW1lKHZkZXYpKTsNCj4gKwlpZiAoZGV2ID09IE5VTEwpDQo+ICsJCXJl dHVybiAtRU5PREVWOw0KPiArCXAgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiArDQo+ICsJ LyogRnJlZSBkZXZpY2UgZGF0YSBzdHJ1Y3R1cmVzKi8NCj4gKwlwbWRfZnJlZShwKTsNCj4gKwly dGVfZnJlZShkZXYtPmRhdGEpOw0KPiArCXJ0ZV9ldGhfZGV2X3JlbGVhc2VfcG9ydChkZXYpOw0K PiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgcnRlX3ZkZXZf ZHJpdmVyIHBtZF9zb2Z0bmljX2RydiA9IHsNCj4gKwkucHJvYmUgPSBwbWRfcHJvYmUsDQo+ICsJ LnJlbW92ZSA9IHBtZF9yZW1vdmUsDQo+ICt9Ow0KPiArDQo+ICtSVEVfUE1EX1JFR0lTVEVSX1ZE RVYobmV0X3NvZnRuaWMsIHBtZF9zb2Z0bmljX2Rydik7DQo+ICtSVEVfUE1EX1JFR0lTVEVSX1BB UkFNX1NUUklORyhuZXRfc29mdG5pYywNCj4gKwlQTURfUEFSQU1fSEFSRF9OQU1FICI9PHN0cmlu Zz4gIg0KPiArCVBNRF9QQVJBTV9IQVJEX1RYX1FVRVVFX0lEICI9PGludD4iKTsNCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L3NvZnRuaWMvcnRlX2V0aF9zb2Z0bmljLmgNCj4gYi9kcml2ZXJz L25ldC9zb2Z0bmljL3J0ZV9ldGhfc29mdG5pYy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAuLmU2OTk2ZjMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJz L25ldC9zb2Z0bmljL3J0ZV9ldGhfc29mdG5pYy5oDQo+IEBAIC0wLDAgKzEsNjcgQEANCj4gKy8q LQ0KPiArICogICBCU0QgTElDRU5TRQ0KPiArICoNCj4gKyAqICAgQ29weXJpZ2h0KGMpIDIwMTcg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgKiAgIEFsbCByaWdo dHMgcmVzZXJ2ZWQuDQo+ICsgKg0KPiArICogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gKyAqICAgbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z DQo+ICsgKiAgIGFyZSBtZXQ6DQo+ICsgKg0KPiArICogICAgICogUmVkaXN0cmlidXRpb25zIG9m IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gKyAqICAgICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4NCj4gKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsgKiAgICAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gKyAqICAg ICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0 aCB0aGUNCj4gKyAqICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gKyAqICAgICAqIE5laXRoZXIgdGhl IG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4gKyAqICAg ICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZA0KPiArICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiArICoNCj4gKyAqICAgVEhJUyBTT0ZUV0FS RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENPTlRSSUJVVE9S Uw0KPiArICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs IElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiArICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQNCj4gRklUTkVTUyBGT1INCj4gKyAqICAg QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI RQ0KPiBDT1BZUklHSFQNCj4gKyAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+ICsgKiAgIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0KPiBO T1QNCj4gKyAqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP UiBTRVJWSUNFUzsgTE9TUw0KPiBPRiBVU0UsDQo+ICsgKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9OIEFOWQ0KPiAr ICogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB QklMSVRZLCBPUg0KPiBUT1JUDQo+ICsgKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YNCj4gVEhFIFVTRQ0KPiArICogICBPRiBU SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gN Cj4gREFNQUdFLg0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYgX19JTkNMVURFX1JURV9FVEhfU09G VE5JQ19IX18NCj4gKyNkZWZpbmUgX19JTkNMVURFX1JURV9FVEhfU09GVE5JQ19IX18NCj4gKw0K PiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiArDQo+ICsjaWZkZWYgX19jcGx1c3BsdXMNCj4gK2V4 dGVybiAiQyIgew0KPiArI2VuZGlmDQo+ICsNCj4gKyNpZm5kZWYgU09GVE5JQ19IQVJEX1RYX1FV RVVFX0lEDQo+ICsjZGVmaW5lIFNPRlROSUNfSEFSRF9UWF9RVUVVRV9JRAkJCTANCj4gKyNlbmRp Zg0KPiArDQo+ICsvKioNCj4gKyAqIFJ1biB0aGUgdHJhZmZpYyBtYW5hZ2VtZW50IGZ1bmN0aW9u IG9uIHRoZSBzb2Z0bmljIGRldmljZQ0KPiArICoNCj4gKyAqIFRoaXMgZnVuY3Rpb24gcmVhZCB0 aGUgcGFja2V0cyBmcm9tIHRoZSBzb2Z0bmljIGlucHV0IHF1ZXVlcywgaW5zZXJ0DQo+ICtpbnRv DQo+ICsgKiBRb1Mgc2NoZWR1bGVyIHF1ZXVlcyBiYXNlZCBvbiBtYnVmIHNjaGVkIGZpZWxkIHZh bHVlIGFuZCB0cmFuc21pdA0KPiArdGhlDQo+ICsgKiBzY2hlZHVsZWQgcGFja2V0cyBvdXQgdGhy b3VnaCB0aGUgaGFyZCBkZXZpY2UgaW50ZXJmYWNlLg0KPiArICoNCj4gKyAqIEBwYXJhbSBwb3J0 aWQNCj4gKyAqICAgIHBvcnQgaWQgb2YgdGhlIHNvZnQgZGV2aWNlLg0KPiArICogQHJldHVybg0K PiArICogICAgemVyby4NCj4gKyAqLw0KPiArDQo+ICtpbnQNCj4gK3J0ZV9wbWRfc29mdG5pY19y dW4odWludDhfdCBwb3J0X2lkKTsNCj4gKw0KPiArI2lmZGVmIF9fY3BsdXNwbHVzDQo+ICt9DQo+ ICsjZW5kaWYNCj4gKw0KPiArI2VuZGlmIC8qIF9fSU5DTFVERV9SVEVfRVRIX1NPRlROSUNfSF9f ICovDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zb2Z0bmljL3J0ZV9ldGhfc29mdG5pY19p bnRlcm5hbHMuaA0KPiBiL2RyaXZlcnMvbmV0L3NvZnRuaWMvcnRlX2V0aF9zb2Z0bmljX2ludGVy bmFscy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAuLjk2OTk1YjUN Cj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL25ldC9zb2Z0bmljL3J0ZV9ldGhfc29m dG5pY19pbnRlcm5hbHMuaA0KPiBAQCAtMCwwICsxLDExNCBAQA0KPiArLyotDQo+ICsgKiAgIEJT RCBMSUNFTlNFDQo+ICsgKg0KPiArICogICBDb3B5cmlnaHQoYykgMjAxNyBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4N Cj4gKyAqDQo+ICsgKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiArICogICBtb2RpZmljYXRpb24sIGFyZSBwZXJt aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4gKyAqICAgYXJl IG1ldDoNCj4gKyAqDQo+ICsgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiArICogICAgICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiArICog ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQNCj4gKyAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbg0KPiArICogICAgICAgdGhlIGRvY3Vt ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiArICog ICAgICAgZGlzdHJpYnV0aW9uLg0KPiArICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRl bCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KPiArICogICAgICAgY29udHJpYnV0 b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQo+ ICsgKiAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0 dGVuIHBlcm1pc3Npb24uDQo+ICsgKg0KPiArICogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gQ09OVFJJQlVUT1JTDQo+ICsgKiAgICJB UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC VVQNCj4gTk9UDQo+ICsgKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZIEFORA0KPiBGSVRORVNTIEZPUg0KPiArICogICBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQo+IENPUFlSSUdI VA0KPiArICogICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU LCBJTkRJUkVDVCwNCj4gSU5DSURFTlRBTCwNCj4gKyAqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiArICogICBM SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM T1NTDQo+IE9GIFVTRSwNCj4gKyAqICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRA0KPiBBTkQgT04gQU5ZDQo+ICsgKiAgIFRIRU9SWSBP RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SDQo+ IFRPUlQNCj4gKyAqICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO RyBJTiBBTlkgV0FZIE9VVCBPRg0KPiBUSEUgVVNFDQo+ICsgKiAgIE9GIFRISVMgU09GVFdBUkUs IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSA0KPiBEQU1BR0UuDQo+ ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfX0lOQ0xVREVfUlRFX0VUSF9TT0ZUTklDX0lOVEVSTkFM U19IX18NCj4gKyNkZWZpbmUgX19JTkNMVURFX1JURV9FVEhfU09GVE5JQ19JTlRFUk5BTFNfSF9f DQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRpbnQuaD4NCj4gKw0KPiArI2luY2x1ZGUgPHJ0ZV9tYnVm Lmg+DQo+ICsjaW5jbHVkZSA8cnRlX2V0aGRldi5oPg0KPiArDQo+ICsjaW5jbHVkZSAicnRlX2V0 aF9zb2Z0bmljLmgiDQo+ICsNCj4gKyNpZm5kZWYgSU5UUlVTSVZFDQo+ICsjZGVmaW5lIElOVFJV U0lWRQkJCQkJMA0KPiArI2VuZGlmDQo+ICsNCj4gK3N0cnVjdCBwbWRfcGFyYW1zIHsNCj4gKwkv KiogUGFyYW1ldGVycyBmb3IgdGhlIHNvZnQgZGV2aWNlICh0byBiZSBjcmVhdGVkKSAqLw0KPiAr CXN0cnVjdCB7DQo+ICsJCWNvbnN0IGNoYXIgKm5hbWU7IC8qKjwgTmFtZSAqLw0KPiArCQl1aW50 MzJfdCBmbGFnczsgLyoqPCBGbGFncyAqLw0KPiArDQo+ICsJCS8qKiAwID0gQWNjZXNzIGhhcmQg ZGV2aWNlIHRob3VnaCBBUEkgb25seSAocG90ZW50aWFsbHkNCj4gc2xvd2VyLA0KPiArCQkgKiAg ICAgIGJ1dCBzYWZlcik7DQo+ICsJCSAqICAxID0gQWNjZXNzIGhhcmQgZGV2aWNlIHByaXZhdGUg ZGF0YSBzdHJ1Y3R1cmVzIGlzIGFsbG93ZWQNCj4gKwkJICogICAgICAocG90ZW50aWFsbHkgZmFz dGVyKS4NCj4gKwkJICovDQo+ICsJCWludCBpbnRydXNpdmU7DQo+ICsJfSBzb2Z0Ow0KPiArDQo+ ICsJLyoqIFBhcmFtZXRlcnMgZm9yIHRoZSBoYXJkIGRldmljZSAoZXhpc3RpbmcpICovDQo+ICsJ c3RydWN0IHsNCj4gKwkJY2hhciAqbmFtZTsgLyoqPCBOYW1lICovDQo+ICsJCXVpbnQxNl90IHR4 X3F1ZXVlX2lkOyAvKio8IFRYIHF1ZXVlIElEICovDQo+ICsJfSBoYXJkOw0KPiArfTsNCj4gKw0K PiArLyoqDQo+ICsgKiBEZWZhdWx0IEludGVybmFscw0KPiArICovDQo+ICsNCj4gKyNpZm5kZWYg REVGQVVMVF9CVVJTVF9TSVpFDQo+ICsjZGVmaW5lIERFRkFVTFRfQlVSU1RfU0laRQkJCQkzMg0K PiArI2VuZGlmDQo+ICsNCj4gKyNpZm5kZWYgRkxVU0hfQ09VTlRfVEhSRVNIT0xEDQo+ICsjZGVm aW5lIEZMVVNIX0NPVU5UX1RIUkVTSE9MRAkJCSgxIDw8IDE3KQ0KPiArI2VuZGlmDQo+ICsNCj4g K3N0cnVjdCBkZWZhdWx0X2ludGVybmFscyB7DQo+ICsJc3RydWN0IHJ0ZV9tYnVmICoqcGt0czsN Cj4gKwl1aW50MzJfdCBwa3RzX2xlbjsNCj4gKwl1aW50MzJfdCB0eHFfcG9zOw0KPiArCXVpbnQz Ml90IGZsdXNoX2NvdW50Ow0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBQTUQgSW50ZXJuYWxz DQo+ICsgKi8NCj4gK3N0cnVjdCBwbWRfaW50ZXJuYWxzIHsNCj4gKwkvKiogUGFyYW1zICovDQo+ ICsJc3RydWN0IHBtZF9wYXJhbXMgcGFyYW1zOw0KPiArDQo+ICsJLyoqIFNvZnQgZGV2aWNlICov DQo+ICsJc3RydWN0IHsNCj4gKwkJc3RydWN0IGRlZmF1bHRfaW50ZXJuYWxzIGRlZjsgLyoqPCBE ZWZhdWx0ICovDQo+ICsJfSBzb2Z0Ow0KPiArDQo+ICsJLyoqIEhhcmQgZGV2aWNlICovDQo+ICsJ c3RydWN0IHsNCj4gKwkJdWludDhfdCBwb3J0X2lkOw0KPiArCX0gaGFyZDsNCj4gK307DQo+ICsN Cj4gK3N0cnVjdCBwbWRfcnhfcXVldWUgew0KPiArCS8qKiBIYXJkIGRldmljZSAqLw0KPiArCXN0 cnVjdCB7DQo+ICsJCXVpbnQ4X3QgcG9ydF9pZDsNCj4gKwkJdWludDE2X3QgcnhfcXVldWVfaWQ7 DQo+ICsJfSBoYXJkOw0KPiArfTsNCj4gKw0KPiArI2VuZGlmIC8qIF9fSU5DTFVERV9SVEVfRVRI X1NPRlROSUNfSU5URVJOQUxTX0hfXyAqLw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc29m dG5pYy9ydGVfcG1kX2V0aF9zb2Z0bmljX3ZlcnNpb24ubWFwDQo+IGIvZHJpdmVycy9uZXQvc29m dG5pYy9ydGVfcG1kX2V0aF9zb2Z0bmljX3ZlcnNpb24ubWFwDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAuLmZiMmNiNjgNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9k cml2ZXJzL25ldC9zb2Z0bmljL3J0ZV9wbWRfZXRoX3NvZnRuaWNfdmVyc2lvbi5tYXANCj4gQEAg LTAsMCArMSw3IEBADQo+ICtEUERLXzE3LjExIHsNCj4gKwlnbG9iYWw6DQo+ICsNCj4gKwlydGVf cG1kX3NvZnRuaWNfcnVuOw0KPiArDQo+ICsJbG9jYWw6ICo7DQo+ICt9Ow0KPiBkaWZmIC0tZ2l0 IGEvbWsvcnRlLmFwcC5tayBiL21rL3J0ZS5hcHAubWsgaW5kZXggYzI1ZmRkOS4uM2RjODJmYiAx MDA2NDQNCj4gLS0tIGEvbWsvcnRlLmFwcC5taw0KPiArKysgYi9tay9ydGUuYXBwLm1rDQo+IEBA IC02Nyw3ICs2Nyw2IEBAIF9MRExJQlMtJChDT05GSUdfUlRFX0xJQlJURV9ESVNUUklCVVRPUikg ICAgKz0gLQ0KPiBscnRlX2Rpc3RyaWJ1dG9yDQo+ICBfTERMSUJTLSQoQ09ORklHX1JURV9MSUJS VEVfSVBfRlJBRykgICAgICAgICs9IC1scnRlX2lwX2ZyYWcNCj4gIF9MRExJQlMtJChDT05GSUdf UlRFX0xJQlJURV9HUk8pICAgICAgICAgICAgKz0gLWxydGVfZ3JvDQo+ICBfTERMSUJTLSQoQ09O RklHX1JURV9MSUJSVEVfTUVURVIpICAgICAgICAgICs9IC1scnRlX21ldGVyDQo+IC1fTERMSUJT LSQoQ09ORklHX1JURV9MSUJSVEVfU0NIRUQpICAgICAgICAgICs9IC1scnRlX3NjaGVkDQo+ICBf TERMSUJTLSQoQ09ORklHX1JURV9MSUJSVEVfTFBNKSAgICAgICAgICAgICs9IC1scnRlX2xwbQ0K PiAgIyBsaWJydGVfYWNsIG5lZWRzIC0td2hvbGUtYXJjaGl2ZSBiZWNhdXNlIG9mIHdlYWsgZnVu Y3Rpb25zDQo+ICBfTERMSUJTLSQoQ09ORklHX1JURV9MSUJSVEVfQUNMKSAgICAgICAgICAgICs9 IC0td2hvbGUtYXJjaGl2ZQ0KPiBAQCAtOTksNiArOTgsNyBAQCBfTERMSUJTLSQoQ09ORklHX1JU RV9MSUJSVEVfUklORykgICAgICAgICAgICs9IC0NCj4gbHJ0ZV9yaW5nDQo+ICBfTERMSUJTLSQo Q09ORklHX1JURV9MSUJSVEVfRUFMKSAgICAgICAgICAgICs9IC1scnRlX2VhbA0KPiAgX0xETElC Uy0kKENPTkZJR19SVEVfTElCUlRFX0NNRExJTkUpICAgICAgICArPSAtbHJ0ZV9jbWRsaW5lDQo+ ICBfTERMSUJTLSQoQ09ORklHX1JURV9MSUJSVEVfUkVPUkRFUikgICAgICAgICs9IC1scnRlX3Jl b3JkZXINCj4gK19MRExJQlMtJChDT05GSUdfUlRFX0xJQlJURV9TQ0hFRCkgICAgICAgICAgKz0g LWxydGVfc2NoZWQNCj4gDQo+ICBpZmVxICgkKENPTkZJR19SVEVfRVhFQ19FTlZfTElOVVhBUFAp LHkpDQo+ICBfTERMSUJTLSQoQ09ORklHX1JURV9MSUJSVEVfS05JKSAgICAgICAgICAgICs9IC1s cnRlX2tuaQ0KPiBAQCAtMTM1LDYgKzEzNSw5IEBAIF9MRExJQlMtJChDT05GSUdfUlRFX0xJQlJU RV9QTURfTlVMTCkgICAgICAgKz0gLQ0KPiBscnRlX3BtZF9udWxsDQo+ICBfTERMSUJTLSQoQ09O RklHX1JURV9MSUJSVEVfUE1EX1BDQVApICAgICAgICs9IC1scnRlX3BtZF9wY2FwIC1scGNhcA0K PiAgX0xETElCUy0kKENPTkZJR19SVEVfTElCUlRFX1FFREVfUE1EKSAgICAgICArPSAtbHJ0ZV9w bWRfcWVkZQ0KPiAgX0xETElCUy0kKENPTkZJR19SVEVfTElCUlRFX1BNRF9SSU5HKSAgICAgICAr PSAtbHJ0ZV9wbWRfcmluZw0KPiAraWZlcSAoJChDT05GSUdfUlRFX0xJQlJURV9TQ0hFRCkseSkN Cj4gK19MRExJQlMtJChDT05GSUdfUlRFX0xJQlJURV9QTURfU09GVE5JQykgICAgICArPSAtbHJ0 ZV9wbWRfc29mdG5pYw0KPiArZW5kaWYNCj4gIF9MRExJQlMtJChDT05GSUdfUlRFX0xJQlJURV9T RkNfRUZYX1BNRCkgICAgKz0gLWxydGVfcG1kX3NmY19lZngNCj4gIF9MRExJQlMtJChDT05GSUdf UlRFX0xJQlJURV9QTURfU1pFREFUQTIpICAgKz0gLWxydGVfcG1kX3N6ZWRhdGEyIC0NCj4gbHN6 ZTINCj4gIF9MRExJQlMtJChDT05GSUdfUlRFX0xJQlJURV9QTURfVEFQKSAgICAgICAgKz0gLWxy dGVfcG1kX3RhcA0KPiAtLQ0KPiAyLjkuMw0KDQo=