From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 21/22] drm/i915/perf: add KBL support Date: Tue, 16 May 2017 11:28:46 +0300 Message-ID: <87a86dfbnl.fsf@gaia.fi.intel.com> References: <20170511154345.962-1-lionel.g.landwerlin@intel.com> <20170511154345.962-22-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id E93096E3DE for ; Wed, 17 May 2017 11:17:31 +0000 (UTC) In-Reply-To: <20170511154345.962-22-lionel.g.landwerlin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lionel Landwerlin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org TGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPiB3cml0ZXM6 Cgo+IFNpZ25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGlu QGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAg ICB8ICAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9rYmxndDIuYyB8IDI5 ODkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9vYV9rYmxndDIuaCB8ICAgMzggKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X29hX2tibGd0My5jIHwgMzAzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9rYmxndDMuaCB8ICAgMzggKwo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyAgICAgIHwgICAzMCArLQo+ICA2IGZpbGVzIGNoYW5n ZWQsIDYxMzUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QyLmMKPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QyLmgKPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QzLmMKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QzLmgKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlCj4gaW5kZXggYWFiYzY2MGY5NGNiLi44NTllMTc1MWQ3YWIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9NYWtlZmlsZQo+IEBAIC0xMzQsNyArMTM0LDkgQEAgaTkxNS15ICs9IGk5MTVf cGVyZi5vIFwKPiAgCSAgaTkxNV9vYV9za2xndDIubyBcCj4gIAkgIGk5MTVfb2Ffc2tsZ3QzLm8g XAo+ICAJICBpOTE1X29hX3NrbGd0NC5vIFwKPiAtCSAgaTkxNV9vYV9ieHQubwo+ICsJICBpOTE1 X29hX2J4dC5vIFwKPiArCSAgaTkxNV9vYV9rYmxndDIubyBcCj4gKwkgIGk5MTVfb2Ffa2JsZ3Qz Lm8KPiAgCj4gIGlmZXEgKCQoQ09ORklHX0RSTV9JOTE1X0dWVCkseSkKPiAgaTkxNS15ICs9IGlu dGVsX2d2dC5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2Js Z3QyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2tibGd0Mi5jCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjZlM2NjYTI3MGIzNwo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2tibGd0Mi5jCj4gQEAg LTAsMCArMSwyOTg5IEBACj4gKy8qCj4gKyAqIEF1dG9nZW5lcmF0ZWQgZmlsZSwgRE8gTk9UIEVE SVQgbWFudWFsbHkhCgpZb3UgY291bGQgcmVhZGVyIGEgdGlwIG9uIHdoZXJlIHRvIGZpbmQgdG9v bHMgdG8gZ2VuZXJhdGUgdGhpcyBmaWxlLgoKLU1pa2EKCj4gKyAqCj4gKyAqIENvcHlyaWdodCAo YykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsg Kgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9zeXNmcy5oPgo+ICsKPiArI2luY2x1ZGUg Imk5MTVfZHJ2LmgiCj4gKyNpbmNsdWRlICJpOTE1X29hX2tibGd0Mi5oIgo+ICsKPiArZW51bSBt ZXRyaWNfc2V0X2lkIHsKPiArCU1FVFJJQ19TRVRfSURfUkVOREVSX0JBU0lDID0gMSwKPiArCU1F VFJJQ19TRVRfSURfQ09NUFVURV9CQVNJQywKPiArCU1FVFJJQ19TRVRfSURfUkVOREVSX1BJUEVf UFJPRklMRSwKPiArCU1FVFJJQ19TRVRfSURfTUVNT1JZX1JFQURTLAo+ICsJTUVUUklDX1NFVF9J RF9NRU1PUllfV1JJVEVTLAo+ICsJTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVEVOREVELAo+ICsJ TUVUUklDX1NFVF9JRF9DT01QVVRFX0wzX0NBQ0hFLAo+ICsJTUVUUklDX1NFVF9JRF9IRENfQU5E X1NGLAo+ICsJTUVUUklDX1NFVF9JRF9MM18xLAo+ICsJTUVUUklDX1NFVF9JRF9MM18yLAo+ICsJ TUVUUklDX1NFVF9JRF9MM18zLAo+ICsJTUVUUklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhF TF9CQUNLRU5ELAo+ICsJTUVUUklDX1NFVF9JRF9TQU1QTEVSLAo+ICsJTUVUUklDX1NFVF9JRF9U RExfMSwKPiArCU1FVFJJQ19TRVRfSURfVERMXzIsCj4gKwlNRVRSSUNfU0VUX0lEX0NPTVBVVEVf RVhUUkEsCj4gKwlNRVRSSUNfU0VUX0lEX1ZNRV9QSVBFLAo+ICsJTUVUUklDX1NFVF9JRF9URVNU X09BLAo+ICt9Owo+ICsKPiAraW50IGk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRzX2tibGd0 MiA9IDE4Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJf Y29uZmlnX3JlbmRlcl9iYXNpY1tdID0gewo+ICsJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAw IH0sCj4gKwl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzIw KSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljW10gPSB7Cj4gKwl7 IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKPiArCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAx MDAwMyB9LAo+ICsJeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCj4gKwl7IF9NTUlPKDB4 ZTc1OCksIDB4MDAwMTUwMTQgfSwKPiArCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAo+ ICsJeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCj4gKwl7IF9NTUlPKDB4ZTY1YyksIDB4 MDAwNTUwNTQgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg bXV4X2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNjZj MDFlMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEyMTcwMjgwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTIzNzAyODAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkzMDMxNyB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDE1OTMwM2RmIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 M2Y5MDAwMDMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYTRlMDA4MCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDBhNmMwMDUzIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDBhMWI0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWMxYzAwMDEgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwMDJmMTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MmYx MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0YzQwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwYTRjODQwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMGQyMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw ODBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhMGQyMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MGMwZjA0MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmNjYwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MTYyYzIyMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkODAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDA4MmQ4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMzMw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODEzMzAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDAwMTcwMDIwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgxNzAwMjEgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgxMDE3MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2 MzNjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgzM2MwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwNjM3MDgwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4MzcwODQwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAzNzAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwZDkzMzAzMSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBmOTMzZTNmIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDE5MzNkMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMzkzMDcz YyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA1OTMwMDBlIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWQ5MzAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkzMDAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDFiOTMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5 MDAxNTcgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwMDE1OCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDM1OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MmI5MDgwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDJmOTA4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDgwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgxNTkwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE3OTA4MDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgxYjkwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDExOTAwMDFmIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4NTE5MDQ0MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkw MDAyMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4NDU5MDBjMjEgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDA2MSB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDU3OTA0NDQwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 NDk5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDMzOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwNCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDQzOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDQ0NDQgfSwKPiArfTsK PiArCj4gK3N0YXRpYyBpbnQKPiArZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyAqKnJlZ3MsCj4gKwkJCSAgICBpbnQgKmxlbnMpCj4gK3sKPiArCWludCBuID0gMDsKPiAr Cj4gKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykg PCAxKTsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzX2xlbnMpIDwgMSk7Cj4gKwo+ICsJcmVnc1tuXSA9IG11eF9jb25maWdfcmVuZGVyX2Jhc2lj Owo+ICsJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19yZW5kZXJfYmFzaWMpOwo+ICsJ bisrOwo+ICsKPiArCXJldHVybiBuOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9iYXNpY1tdID0gewo+ICsJeyBfTU1J TygweDI3MTApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAwMDAg fSwKPiArCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MjQp LCAweDAwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKPiArfTsK PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29t cHV0ZV9iYXNpY1tdID0gewo+ICsJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCj4gKwl7 IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDAwMDMgfSwKPiArCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAw MjAwMSB9LAo+ICsJeyBfTU1JTygweGU3NTgpLCAweDAwNzc4MDA4IH0sCj4gKwl7IF9NTUlPKDB4 ZTQ1YyksIDB4MDAwODgwNzggfSwKPiArCXsgX01NSU8oMHhlNTVjKSwgMHgwMDgwODcwOCB9LAo+ ICsJeyBfTU1JTygweGU2NWMpLCAweDAwYTA4OTA4IH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfY29tcHV0ZV9iYXNpY1tdID0gewo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDEwNGYwMGUwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI0 ZjFjMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDBlMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDM3OTA2ODAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5MDAwMDMgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRlODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDFhNGUwODIwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM0ZTAwMDIgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwNjRmMDkwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4NGYwMDMy IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZjE4OTEgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzRmMGUwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlNGYwMDNjIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDA0ZjBkODAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRm MDAzYiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwNmMwMDAyIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDg2YzAxMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzZjMDAwYyB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDBlNmMwYjAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTg2YzAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDFlNmMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxYjQwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODFiODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDBjMWI0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUxYjgwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgxMDFjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFhMWM4 MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWMxYzAwMjQgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjViODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4NWI0MDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGE1YmMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw YzViODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlNWI0MDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MDA1YjgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjViNDAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFhNWM2MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MWM1YzAwMWIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMjVjODAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDE0NWM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0Yzgw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMjAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDBjNGMwMjA4IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZGEwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4 MGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEwZGEwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwYzBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZDIwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwYzBmNTQwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMGY1NTAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MTAwZjAxNTUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJjODAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMmNjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTYyY2ZiMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxODJjMDBiZSB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDAyMmNjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQy Y2MwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwMDE1NyB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDFiOTAwMTU4IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDAxMDUgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwMDEwMyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDM1OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDBmZmYgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQxOTAwODAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHg0NTkwMDgyMSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwODAyIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkw MDgwMiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4NGI5MDAwMDIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwNDIyIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 NTM5MDQ0NDQgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQKPiArZ2V0X2NvbXB1dGVfYmFzaWNf bXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgICAg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKPiArCQkJICAgICBpbnQgKmxlbnMpCj4g K3sKPiArCWludCBuID0gMDsKPiArCj4gKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Cj4gKwo+ICsJcmVnc1tuXSA9IG11 eF9jb25maWdfY29tcHV0ZV9iYXNpYzsKPiArCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25m aWdfY29tcHV0ZV9iYXNpYyk7Cj4gKwluKys7Cj4gKwo+ICsJcmV0dXJuIG47Cj4gK30KPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJf cGlwZV9wcm9maWxlW10gPSB7Cj4gKwl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKPiAr CXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MTQpLCAweGYw ODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8o MHgyNzQwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3NzApLCAweDAwMDdmZmVhIH0s Cj4gKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMDdmZmMgfSwKPiArCXsgX01NSU8oMHgyNzc4KSwg MHgwMDA3YWZmYSB9LAo+ICsJeyBfTU1JTygweDI3N2MpLCAweDAwMDBmNWZkIH0sCj4gKwl7IF9N TUlPKDB4Mjc4MCksIDB4MDAwNzlmZmEgfSwKPiArCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwZjNm YiB9LAo+ICsJeyBfTU1JTygweDI3ODgpLCAweDAwMDdiZjdhIH0sCj4gKwl7IF9NTUlPKDB4Mjc4 YyksIDB4MDAwMGY3ZTcgfSwKPiArCXsgX01NSU8oMHgyNzkwKSwgMHgwMDA3ZmVmYSB9LAo+ICsJ eyBfTU1JTygweDI3OTQpLCAweDAwMDBmN2NmIH0sCj4gKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAw NzdmZmEgfSwKPiArCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZWZkZiB9LAo+ICsJeyBfTU1JTygw eDI3YTApLCAweDAwMDZmZmZhIH0sCj4gKwl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGNmYmYgfSwK PiArCXsgX01NSU8oMHgyN2E4KSwgMHgwMDAzZmZmYSB9LAo+ICsJeyBfTU1JTygweDI3YWMpLCAw eDAwMDA1ZjdmIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IGZsZXhfZXVfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsKPiArCXsgX01NSU8oMHhl NDU4KSwgMHgwMDAwNTAwNCB9LAo+ICsJeyBfTU1JTygweGU1NTgpLCAweDAwMDE1MDE0IH0sCj4g Kwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMjUwMjQgfSwKPiArCXsgX01NSU8oMHhlNzU4KSwgMHgw MDAzNTAzNCB9LAo+ICsJeyBfTU1JTygweGU0NWMpLCAweDAwMDQ1MDQ0IH0sCj4gKwl7IF9NTUlP KDB4ZTU1YyksIDB4MDAwNTUwNTQgfSwKPiArCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2NCB9 LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmln X3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBlMDAx ZiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhMGYwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTAxMTY4MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNzhhMDNlMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDExODI0YzAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4 MzAwMjAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMzg0MDAyMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDExODUwMDE5IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4NjAwMDcgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg3MGM0MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDE3ODgwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjQwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwYTRjMDA0MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMGQ4MDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZDQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjBkMjAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMGU1NDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDAwZTAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODBm MDA0MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMGYwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTAwZjAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA0MCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDYxMDQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjExMDAxMiB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDA2MTMxMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDE4OTgwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg5MDEwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDAzODk4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MDgwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwYjgwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAzODBj MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGY4YTAwNzUgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgxZDhhMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDExOGE4MDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YTQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgx MzhhODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFkODFhMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MTU4MTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgxODAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBiODIwMDMwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDc4MjgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZDgyNDAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDBmODI4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MjQw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZDgzMDAwMyB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDA1ODMwMDBjIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzAwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwMzgzODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA3 ODM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGI4NDA5ODAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwMzg0NGQ4MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDExODQwMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDk4NDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwOTg1MDA4MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAzODUwMDAzIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDE4NTAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg2MDAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBmODYwNDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDk4NzAwMzIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg4ODA1MiB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDExODgwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDk4 ODQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkzMTAwMSB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDFkOTMwMDAxIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MzQwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYjk1ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDFkOTUwMDk0IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5NTgwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwOWU1ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBiZTU4MDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDNlNWMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwNTkyYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBiOTI4MDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGQ5MjQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZjky NDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDExOTI4MDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTM5MmMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwOTkyNDAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDAxOTg1MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDc5ODgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwOTk4MTAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDBiOTgyMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5ODIwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZjk4OTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDA1OTgyMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDQwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgyMTkwNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDIzOTA0 MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MjU5MDgwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgyNzkwNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDI5OTA4MDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MmI5MDQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgy ZjkwNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDMxOTA0MDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MTU5MDQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNzkwODAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE5OTA4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MWI5MDQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwYzA4MCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDA0 NDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDQ1OTAwNDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDBjMjEgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDQwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ5 OTAwMDQyIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgzMzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDI0IH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHg0MzkwMDg0MSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDUzOTAwNDAwIH0sCj4gK307Cj4g Kwo+ICtzdGF0aWMgaW50Cj4gK2dldF9yZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnICoqcmVncywKPiArCQkJCSAgIGludCAqbGVucykKPiArewo+ICsJaW50IG4gPSAw Owo+ICsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzKSA8IDEpOwo+ICsJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3NfbGVucykgPCAxKTsKPiArCj4gKwlyZWdzW25dID0gbXV4X2NvbmZpZ19yZW5kZXJf cGlwZV9wcm9maWxlOwo+ICsJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19yZW5kZXJf cGlwZV9wcm9maWxlKTsKPiArCW4rKzsKPiArCj4gKwlyZXR1cm4gbjsKPiArfQo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX21lbW9yeV9yZWFk c1tdID0gewo+ICsJeyBfTU1JTygweDI3MmMpLCAweGZmZmZmZmZmIH0sCj4gKwl7IF9NTUlPKDB4 MjcyOCksIDB4ZmZmZmZmZmYgfSwKPiArCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAo+ ICsJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcxYyksIDB4 ZmZmZmZmZmYgfSwKPiArCXsgX01NSU8oMHgyNzE4KSwgMHhmZmZmZmZmZiB9LAo+ICsJeyBfTU1J TygweDI3MTQpLCAweGYwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAg fSwKPiArCXsgX01NSU8oMHgyNzRjKSwgMHg4NjU0MzIxMCB9LAo+ICsJeyBfTU1JTygweDI3NDgp LCAweDg2NTQzMjEwIH0sCj4gKwl7IF9NTUlPKDB4Mjc0NCksIDB4MDAwMDY2NjcgfSwKPiArCXsg X01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3NWMpLCAweDg2NTQz MjEwIH0sCj4gKwl7IF9NTUlPKDB4Mjc1OCksIDB4ODY1NDMyMTAgfSwKPiArCXsgX01NSU8oMHgy NzU0KSwgMHgwMDAwNjQ2NSB9LAo+ICsJeyBfTU1JTygweDI3NTApLCAweDAwMDAwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2Y4MWEgfSwKPiArCXsgX01NSU8oMHgyNzc0KSwgMHgw MDAwZmUwMCB9LAo+ICsJeyBfTU1JTygweDI3NzgpLCAweDAwMDdmODJhIH0sCj4gKwl7IF9NTUlP KDB4Mjc3YyksIDB4MDAwMGZlMDAgfSwKPiArCXsgX01NSU8oMHgyNzgwKSwgMHgwMDA3Zjg3MiB9 LAo+ICsJeyBfTU1JTygweDI3ODQpLCAweDAwMDBmZTAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc4OCks IDB4MDAwN2Y4YmEgfSwKPiArCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZmUwMCB9LAo+ICsJeyBf TU1JTygweDI3OTApLCAweDAwMDdmODdhIH0sCj4gKwl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZl MDAgfSwKPiArCXsgX01NSU8oMHgyNzk4KSwgMHgwMDA3ZjhlYSB9LAo+ICsJeyBfTU1JTygweDI3 OWMpLCAweDAwMDBmZTAwIH0sCj4gKwl7IF9NTUlPKDB4MjdhMCksIDB4MDAwN2Y4ZTIgfSwKPiAr CXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmUwMCB9LAo+ICsJeyBfTU1JTygweDI3YTgpLCAweDAw MDdmOGYyIH0sCj4gKwl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGZlMDAgfSwKPiArfTsKPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfbWVtb3J5X3Jl YWRzW10gPSB7Cj4gKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKPiArCXsgX01NSU8o MHhlNTU4KSwgMHgwMDAxNTAxNCB9LAo+ICsJeyBfTU1JTygweGU2NTgpLCAweDAwMDI1MDI0IH0s Cj4gKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMzUwMzQgfSwKPiArCXsgX01NSU8oMHhlNDVjKSwg MHgwMDA0NTA0NCB9LAo+ICsJeyBfTU1JTygweGU1NWMpLCAweDAwMDU1MDU0IH0sCj4gKwl7IF9N TUlPKDB4ZTY1YyksIDB4MDAwNjUwNjQgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19tZW1vcnlfcmVhZHNbXSA9IHsKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgxMTgxMGMwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEzODEwMDFhIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDY4MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgzZjkwMDA2NCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAzODExMzAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDU4MTFiMTIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgxMDAx YSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFmODEwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTc4MTAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgxMDAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDFiODEwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4 MTAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkzMDA1NSB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDAzZTU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDVlNWMwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwN2U1NDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDEzOTAwMTUwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MjE5MDAxNTEgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgyMzkwMDE1MiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDI1OTAwMTUz IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4Mjc5MDAxNTQgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgyOTkwMDE1NSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDJiOTAwMTU2IH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDAxNTcgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgyZjkw MDE1ZiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDMxOTAwMTA1IH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTU5MDAxMDMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNzkwMDEwMSB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTk5MDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDFkOTA4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDgwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDUxOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBjNjAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAw YzAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDBjNjMgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHg1NzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwYzYzIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0 YjkwMDA2MyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4NDM5MDAwMDMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9 LAo+ICt9Owo+ICsKPiArc3RhdGljIGludAo+ICtnZXRfbWVtb3J5X3JlYWRzX211eF9jb25maWco c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkgICAgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnICoqcmVncywKPiArCQkJICAgIGludCAqbGVucykKPiArewo+ICsJaW50IG4g PSAwOwo+ICsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzKSA8IDEpOwo+ICsJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3NfbGVucykgPCAxKTsKPiArCj4gKwlyZWdzW25dID0gbXV4X2NvbmZpZ19tZW1v cnlfcmVhZHM7Cj4gKwlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX21lbW9yeV9yZWFk cyk7Cj4gKwluKys7Cj4gKwo+ICsJcmV0dXJuIG47Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfd3JpdGVzW10gPSB7Cj4g Kwl7IF9NTUlPKDB4MjcyYyksIDB4ZmZmZmZmZmYgfSwKPiArCXsgX01NSU8oMHgyNzI4KSwgMHhm ZmZmZmZmZiB9LAo+ICsJeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCj4gKwl7IF9NTUlP KDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzFjKSwgMHhmZmZmZmZmZiB9 LAo+ICsJeyBfTU1JTygweDI3MTgpLCAweGZmZmZmZmZmIH0sCj4gKwl7IF9NTUlPKDB4MjcxNCks IDB4ZjA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBf TU1JTygweDI3NGMpLCAweDg2NTQzMjEwIH0sCj4gKwl7IF9NTUlPKDB4Mjc0OCksIDB4ODY1NDMy MTAgfSwKPiArCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDAwNjY2NyB9LAo+ICsJeyBfTU1JTygweDI3 NDApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc1YyksIDB4ODY1NDMyMTAgfSwKPiAr CXsgX01NSU8oMHgyNzU4KSwgMHg4NjU0MzIxMCB9LAo+ICsJeyBfTU1JTygweDI3NTQpLCAweDAw MDA2NDY1IH0sCj4gKwl7IF9NTUlPKDB4Mjc1MCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8o MHgyNzcwKSwgMHgwMDA3ZjgxYSB9LAo+ICsJeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZTAwIH0s Cj4gKwl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2Y4MmEgfSwKPiArCXsgX01NSU8oMHgyNzdjKSwg MHgwMDAwZmUwMCB9LAo+ICsJeyBfTU1JTygweDI3ODApLCAweDAwMDdmODIyIH0sCj4gKwl7IF9N TUlPKDB4Mjc4NCksIDB4MDAwMGZlMDAgfSwKPiArCXsgX01NSU8oMHgyNzg4KSwgMHgwMDA3Zjhi YSB9LAo+ICsJeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZTAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc5 MCksIDB4MDAwN2Y4N2EgfSwKPiArCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmUwMCB9LAo+ICsJ eyBfTU1JTygweDI3OTgpLCAweDAwMDdmOGVhIH0sCj4gKwl7IF9NTUlPKDB4Mjc5YyksIDB4MDAw MGZlMDAgfSwKPiArCXsgX01NSU8oMHgyN2EwKSwgMHgwMDA3ZjhlMiB9LAo+ICsJeyBfTU1JTygw eDI3YTQpLCAweDAwMDBmZTAwIH0sCj4gKwl7IF9NTUlPKDB4MjdhOCksIDB4MDAwN2Y4ZjIgfSwK PiArCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwZmUwMCB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19tZW1vcnlfd3JpdGVzW10gPSB7 Cj4gKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKPiArCXsgX01NSU8oMHhlNTU4KSwg MHgwMDAxNTAxNCB9LAo+ICsJeyBfTU1JTygweGU2NTgpLCAweDAwMDI1MDI0IH0sCj4gKwl7IF9N TUlPKDB4ZTc1OCksIDB4MDAwMzUwMzQgfSwKPiArCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA0NTA0 NCB9LAo+ICsJeyBfTU1JTygweGU1NWMpLCAweDAwMDU1MDU0IH0sCj4gKwl7IF9NTUlPKDB4ZTY1 YyksIDB4MDAwNjUwNjQgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgbXV4X2NvbmZpZ19tZW1vcnlfd3JpdGVzW10gPSB7Cj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MTE4MTBjMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgxMDAxYSB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDM3OTA2ODAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5MDEw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgxMTMwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDA1ODExYjEyIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MTAwMWEgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgxZjgxMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE3 ODEwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MTAwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgxYjgxMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFkODEwMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzAwNTUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwM2U1ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA1ZTVjMDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDdlNTQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkwMDE2 MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDIxOTAwMTYxIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MjM5MDAxNjIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgyNTkwMDE2MyB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDI3OTAwMTY0IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4Mjk5 MDAxNjUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwMDE2NiB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDJkOTAwMTY3IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MmY5MDAxNTAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwMDEwNSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDE1OTAwMTAzIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDAxMDEgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE5OTA4MDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgxZDkwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFmOTA4MDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTE5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkw MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQxOTAwYzYwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4NTU5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMGMwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwYzYzIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 NTc5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMGM2MyB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDMzOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwNjMg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDQzOTAwMDAzIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKPiArfTsK PiArCj4gK3N0YXRpYyBpbnQKPiArZ2V0X21lbW9yeV93cml0ZXNfbXV4X2NvbmZpZyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgICAgY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnICoqcmVncywKPiArCQkJICAgICBpbnQgKmxlbnMpCj4gK3sKPiArCWludCBuID0gMDsK PiArCj4gKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn cykgPCAxKTsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzX2xlbnMpIDwgMSk7Cj4gKwo+ICsJcmVnc1tuXSA9IG11eF9jb25maWdfbWVtb3J5X3dy aXRlczsKPiArCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfbWVtb3J5X3dyaXRlcyk7 Cj4gKwluKys7Cj4gKwo+ICsJcmV0dXJuIG47Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkW10gPSB7Cj4g Kwl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzIwKSwgMHgw MDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCj4gKwl7IF9NTUlP KDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9 LAo+ICsJeyBfTU1JTygweDI3NzApLCAweDAwMDdmYzJhIH0sCj4gKwl7IF9NTUlPKDB4Mjc3NCks IDB4MDAwMGJmMDAgfSwKPiArCXsgX01NSU8oMHgyNzc4KSwgMHgwMDA3ZmM2YSB9LAo+ICsJeyBf TU1JTygweDI3N2MpLCAweDAwMDBiZjAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwN2Zj OTIgfSwKPiArCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwYmYwMCB9LAo+ICsJeyBfTU1JTygweDI3 ODgpLCAweDAwMDdmY2EyIH0sCj4gKwl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGJmMDAgfSwKPiAr CXsgX01NSU8oMHgyNzkwKSwgMHgwMDA3ZmMzMiB9LAo+ICsJeyBfTU1JTygweDI3OTQpLCAweDAw MDBiZjAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2ZjOWEgfSwKPiArCXsgX01NSU8o MHgyNzljKSwgMHgwMDAwYmYwMCB9LAo+ICsJeyBfTU1JTygweDI3YTApLCAweDAwMDdmZTZhIH0s Cj4gKwl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGJmMDAgfSwKPiArCXsgX01NSU8oMHgyN2E4KSwg MHgwMDA3ZmU3YSB9LAo+ICsJeyBfTU1JTygweDI3YWMpLCAweDAwMDBiZjAwIH0sCj4gK307Cj4g Kwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1 dGVfZXh0ZW5kZWRbXSA9IHsKPiArCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAo+ICsJ eyBfTU1JTygweGU1NTgpLCAweDAwMDAwMDAzIH0sCj4gKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAw MDIwMDEgfSwKPiArCXsgX01NSU8oMHhlNzU4KSwgMHgwMDc3ODAwOCB9LAo+ICsJeyBfTU1JTygw eGU0NWMpLCAweDAwMDg4MDc4IH0sCj4gKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDA4MDg3MDggfSwK PiArCXsgX01NSU8oMHhlNjVjKSwgMHgwMGEwODkwOCB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDBlMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDE0MWM4MTYwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTYxYzgwMTUgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgxODFjMDEyMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwNGU4MDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU0ZTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgxODRlODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFhNGVhYWEwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MWM0ZTAwMDIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRl ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0NGU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDY0ZTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODRlODAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDBhNGU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGU2YzBiMDEgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDZjMDIwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDAyNmMwMDBjIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxZTZjMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDFhNmMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUxYmMwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwMDFiODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMWJj MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxYzAwNDEgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjFjNDIwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4MWM0NDQzIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGExYzQ2NDUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw YzFjNzY0NyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MWM3MzU3IH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MWMxYzAwMzAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDFjMDAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFhMWMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MTIxYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRjODAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDBhNGNhYTJhIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAy YWEgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODRjYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDAwMGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDgwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwODBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBh MGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZGEwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwZTBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwYzBmNTQwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMGY1NTE1IH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MTAwZjAxNTUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJjODAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTYyY2FhMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxODJjMDBhYSB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDAyMmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQy YzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJjODAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDA4MmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwN2ZmZiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDUxOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDAwNDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwODAy IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDA4NDIgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHg1NzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwODQyIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkw MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4NTk5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDgwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50 Cj4gK2dldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICsJCQkJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKPiAr CQkJCWludCAqbGVucykKPiArewo+ICsJaW50IG4gPSAwOwo+ICsKPiArCUJVSUxEX0JVR19PTihB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwo+ICsJQlVJTERfQlVH X09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKPiAr Cj4gKwlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkOwo+ICsJbGVuc1tuXSA9 IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkKTsKPiArCW4rKzsKPiArCj4g KwlyZXR1cm4gbjsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBi X2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGVbXSA9IHsKPiArCXsgX01NSU8oMHgyNzEw KSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MTQpLCAweDMwODAwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzI0KSwgMHgzMDgw MDAwMCB9LAo+ICsJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 Mjc3MCksIDB4MDAwN2ZmZmEgfSwKPiArCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmVmZSB9LAo+ ICsJeyBfTU1JTygweDI3NzgpLCAweDAwMDdmZmZhIH0sCj4gKwl7IF9NTUlPKDB4Mjc3YyksIDB4 MDAwMGZlZmQgfSwKPiArCXsgX01NSU8oMHgyNzkwKSwgMHgwMDA3ZmZmYSB9LAo+ICsJeyBfTU1J TygweDI3OTQpLCAweDAwMDBmYmVmIH0sCj4gKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2ZmZmEg fSwKPiArCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmJkZiB9LAo+ICt9Owo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hl W10gPSB7Cj4gKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKPiArCXsgX01NSU8oMHhl NTU4KSwgMHgwMDAwMDAwMyB9LAo+ICsJeyBfTU1JTygweGU2NTgpLCAweDAwMDAyMDAxIH0sCj4g Kwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAxMDExMDAgfSwKPiArCXsgX01NSU8oMHhlNDVjKSwgMHgw MDIwMTIwMCB9LAo+ICsJeyBfTU1JTygweGU1NWMpLCAweDAwMzAxMzAwIH0sCj4gKwl7IF9NTUlP KDB4ZTY1YyksIDB4MDA0MDE0MDAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlW10gPSB7Cj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MTY2YzA3NjAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkzMDAxZSB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDNmOTAwMDAzIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDA0ZTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTRlODAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDE4NGU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWE0ZTgw MjAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYzRlMDAwMiB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDAwNmMwMDUxIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY2YzUwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwODZjNWM1ZCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBl NmM1ZTVmIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgxODZjMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFjNmMwMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWU2YzAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwMDFiNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MWI4MDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDgxYmMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFiYzAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEwMWM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWExY2UwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAzMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDAwNGM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0 YzJhMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRjMDI4MCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDAwMGQyMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDgwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDBlMGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZjA0MDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwZTBmMTUwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMTQw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAyYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwZTJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE2MmMwYTAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAwYTAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMzkz MzMwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA1OTMwMDMyIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTE5MzAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkzMDAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDFkOTAwMTU3IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MWY5MDAxNTggfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDE5OTA4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDgwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMDMwZiB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDUxOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDAwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAw MDIxIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgzNzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0 YjkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4NTM5MDQ0NDQgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMCB9 LAo+ICt9Owo+ICsKPiArc3RhdGljIGludAo+ICtnZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29u ZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCWNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyAqKnJlZ3MsCj4gKwkJCQlpbnQgKmxlbnMpCj4gK3sKPiArCWludCBuID0g MDsKPiArCj4gKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVncykgPCAxKTsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpIDwgMSk7Cj4gKwo+ICsJcmVnc1tuXSA9IG11eF9jb25maWdfY29tcHV0 ZV9sM19jYWNoZTsKPiArCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfY29tcHV0ZV9s M19jYWNoZSk7Cj4gKwluKys7Cj4gKwo+ICsJcmV0dXJuIG47Cj4gK30KPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19oZGNfYW5kX3NmW10gPSB7 Cj4gKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzQ0KSwg MHgwMDgwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9N TUlPKDB4MjcxNCksIDB4MTA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAw MCB9LAo+ICsJeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc3 MCksIDB4MDAwMDAwMDIgfSwKPiArCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmRmZiB9LAo+ICt9 Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19o ZGNfYW5kX3NmW10gPSB7Cj4gKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKPiArCXsg X01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAo+ICsJeyBfTU1JTygweGU2NTgpLCAweDAwMDEy MDExIH0sCj4gKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKPiArCXsgX01NSU8oMHhl NDVjKSwgMHgwMDA1MTA1MCB9LAo+ICsJeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCj4g Kwl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19oZGNfYW5kX3NmW10gPSB7Cj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MTA0ZjAyMzIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMjRmNDY0 MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMjMyIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTE4MzQ0MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRlODAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDBjNGU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0 ZjE4ODAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRmMDhiYiB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDA0NGYwMDFiIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ2YzAxMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjZjMDAwYiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDFhNmMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYjgwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwNjFiNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFhMWMxODAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA1YjgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwMjViYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0NWI0MDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTI1YzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNDVj ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE2NWM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTg1YzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDBhMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMGQ4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDIwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDA2MGQyMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZjUwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA1NSB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDAyMmNjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQyY2MwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwNjJjYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4MmNj MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBmODI4MDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGY4MzA1YzAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw OTgzMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA3ODMwMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MWQ5NTAwODAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkyODAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBmOTg4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MzE5MDQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZmMwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA0MCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDUxOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDA4MDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDg0MiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDUz OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgzMzkwMDAwMCB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGludAo+ICtnZXRfaGRj X2FuZF9zZl9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAr CQkJICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAo+ICsJCQkgIGludCAqbGVucykK PiArewo+ICsJaW50IG4gPSAwOwo+ICsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwo+ICsJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKPiArCj4gKwlyZWdzW25dID0g bXV4X2NvbmZpZ19oZGNfYW5kX3NmOwo+ICsJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZp Z19oZGNfYW5kX3NmKTsKPiArCW4rKzsKPiArCj4gKwlyZXR1cm4gbjsKPiArfQo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2wzXzFbXSA9IHsK PiArCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3NDQpLCAw eDAwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01N SU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAw IH0sCj4gKwl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzcw KSwgMHgwMDEwMDA3MCB9LAo+ICsJeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZmYxIH0sCj4gKwl7 IF9NTUlPKDB4Mjc3OCksIDB4MDAwMTQwMDIgfSwKPiArCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAw YzNmZiB9LAo+ICsJeyBfTU1JTygweDI3ODApLCAweDAwMDEwMDAyIH0sCj4gKwl7IF9NTUlPKDB4 Mjc4NCksIDB4MDAwMGM3ZmYgfSwKPiArCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwNDAwMiB9LAo+ ICsJeyBfTU1JTygweDI3OGMpLCAweDAwMDBkM2ZmIH0sCj4gKwl7IF9NTUlPKDB4Mjc5MCksIDB4 MDAxMDA3MDAgfSwKPiArCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmYxZiB9LAo+ICsJeyBfTU1J TygweDI3OTgpLCAweDAwMDAxNDAyIH0sCj4gKwl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZjM2Yg fSwKPiArCXsgX01NSU8oMHgyN2EwKSwgMHgwMDAwMTAwMiB9LAo+ICsJeyBfTU1JTygweDI3YTQp LCAweDAwMDBmYzdmIH0sCj4gKwl7IF9NTUlPKDB4MjdhOCksIDB4MDAwMDA0MDIgfSwKPiArCXsg X01NSU8oMHgyN2FjKSwgMHgwMDAwZmQzZiB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19sM18xW10gPSB7Cj4gKwl7IF9NTUlPKDB4 ZTQ1OCksIDB4MDAwMDUwMDQgfSwKPiArCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAo+ ICsJeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCj4gKwl7IF9NTUlPKDB4ZTc1OCksIDB4 MDAwMTUwMTQgfSwKPiArCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAo+ICsJeyBfTU1J TygweGU1NWMpLCAweDAwMDUzMDUyIH0sCj4gKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQg fSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZp Z19sM18xW10gPSB7Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI2YzdiNDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgxNjZjMDAyMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhNjAzNDQ0 IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE2MTM0MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgxYTRlYTgwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFjNGUwMDAyIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDI0ZTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRl ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDg0ZTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRlODAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDA2NGY0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGM2YzUzMjcgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTZjNTQyNSB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDAwNmMyYTAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI2YzI4NWIg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDZjMDA1YyB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDEwNmMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgxZTZjMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFhNmMw ODAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMxYmMwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwZTFiYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMWI4MDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDIxYmMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw NDFiYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFjMWMwMDNjIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MTIxYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFjODAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE2MWM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MTgxYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFjMDgwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDA2NWI0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWE1YzEw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDYwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDA0NjAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM2MTAwNDQgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgxMDYxMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2 NjEwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAyYTggfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwODRjYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDJhIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwZTBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMGQ4MDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTAwZjAxNTQgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmNTAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDU1IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTgy YzAwYWEgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJjODAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDA0MmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDBhMmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMyY2MwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgxMTkwZmZjMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDA0MjAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgzNzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwMjEgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkw MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4NDE5MDA0MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDQyMSB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 NDU5MDAwNDAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQKPiArZ2V0X2wzXzFfbXV4X2NvbmZp ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJICAgIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyAqKnJlZ3MsCj4gKwkJICAgIGludCAqbGVucykKPiArewo+ICsJaW50IG4g PSAwOwo+ICsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzKSA8IDEpOwo+ICsJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3NfbGVucykgPCAxKTsKPiArCj4gKwlyZWdzW25dID0gbXV4X2NvbmZpZ19sM18x Owo+ICsJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19sM18xKTsKPiArCW4rKzsKPiAr Cj4gKwlyZXR1cm4gbjsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBiX2NvdW50ZXJfY29uZmlnX2wzXzJbXSA9IHsKPiArCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAw MDAwMCB9LAo+ICsJeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 MjcxMCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAo+ ICsJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcyNCksIDB4 MDA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzcwKSwgMHgwMDEwMDA3MCB9LAo+ICsJeyBfTU1J TygweDI3NzQpLCAweDAwMDBmZmYxIH0sCj4gKwl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMjgwMDIg fSwKPiArCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwODdmZiB9LAo+ICsJeyBfTU1JTygweDI3ODAp LCAweDAwMDIwMDAyIH0sCj4gKwl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMDhmZmYgfSwKPiArCXsg X01NSU8oMHgyNzg4KSwgMHgwMDAwODAwMiB9LAo+ICsJeyBfTU1JTygweDI3OGMpLCAweDAwMDBh N2ZmIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhf ZXVfY29uZmlnX2wzXzJbXSA9IHsKPiArCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAo+ ICsJeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCj4gKwl7IF9NTUlPKDB4ZTY1OCksIDB4 MDAwMTIwMTEgfSwKPiArCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAo+ICsJeyBfTU1J TygweGU0NWMpLCAweDAwMDUxMDUwIH0sCj4gKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIg fSwKPiArCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAo+ICt9Owo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2wzXzJbXSA9IHsKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgxMjZjMDJlMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE0NmMwMDAx IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE2MjM0MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwNDRlODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDg0ZTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRl ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2NGY0MDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDI2YzMzMjQgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDZjMzQyMiB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MWE2YzAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjFiYzAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDA0MWJjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYzgwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNjFjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDE4MWM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWExYzA4MDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwNjViNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFhNWMx MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY2MTQwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzYyMDA0NCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEwNjIwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDY2MjAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw ODRjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDJhIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MGMwZjQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA1NSB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDA0MmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDBhMmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMyY2MwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZjgwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDM3 OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHg0MzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgzMzkwMDAwMCB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGludAo+ICtnZXRfbDNfMl9tdXhfY29u ZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkgICAgY29uc3Qgc3Ry dWN0IGk5MTVfb2FfcmVnICoqcmVncywKPiArCQkgICAgaW50ICpsZW5zKQo+ICt7Cj4gKwlpbnQg biA9IDA7Cj4gKwo+ICsJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3MpIDwgMSk7Cj4gKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwo+ICsKPiArCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2wz XzI7Cj4gKwlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2wzXzIpOwo+ICsJbisrOwo+ ICsKPiArCXJldHVybiBuOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIGJfY291bnRlcl9jb25maWdfbDNfM1tdID0gewo+ICsJeyBfTU1JTygweDI3NDApLCAweDAw MDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKPiArCXsgX01NSU8o MHgyNzEwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0s Cj4gKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzI0KSwg MHgwMDgwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3NzApLCAweDAwMTAwMDcwIH0sCj4gKwl7IF9N TUlPKDB4Mjc3NCksIDB4MDAwMGZmZjEgfSwKPiArCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAyODAw MiB9LAo+ICsJeyBfTU1JTygweDI3N2MpLCAweDAwMDA4N2ZmIH0sCj4gKwl7IF9NTUlPKDB4Mjc4 MCksIDB4MDAwMjAwMDIgfSwKPiArCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwOGZmZiB9LAo+ICsJ eyBfTU1JTygweDI3ODgpLCAweDAwMDA4MDAyIH0sCj4gKwl7IF9NTUlPKDB4Mjc4YyksIDB4MDAw MGE3ZmYgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxl eF9ldV9jb25maWdfbDNfM1tdID0gewo+ICsJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0s Cj4gKwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKPiArCXsgX01NSU8oMHhlNjU4KSwg MHgwMDAxMjAxMSB9LAo+ICsJeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCj4gKwl7IF9N TUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKPiArCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1 MiB9LAo+ICsJeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCj4gK307Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfbDNfM1tdID0gewo+ICsJeyBf TU1JTygweDk4ODgpLCAweDEyNmM0ZTgwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQ2YzAw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTYzMzQwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDA0NGU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTgwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwODRlODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBh NGU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM0ZTgwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwMjZjMzMyMSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0NmMzNDJmIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgxYTZjMjAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMWJjMDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDQxYmMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjFiNDAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE0MWM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTYxYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxODFjODAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDFhMWMxODAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY2 MDQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzYzMDA0NCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDEwNjMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY2MzAwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODRjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDBhNGMwMGFhIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZjQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwZTBmMDA1NSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MmM4MDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODJj ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGMyYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZjgwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 NTE5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDg0MiB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDUzOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMDIg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAo+ICt9Owo+ICsKPiArc3RhdGlj IGludAo+ICtnZXRfbDNfM19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiArCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKPiArCQkgICAg aW50ICpsZW5zKQo+ICt7Cj4gKwlpbnQgbiA9IDA7Cj4gKwo+ICsJQlVJTERfQlVHX09OKEFSUkFZ X1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Cj4gKwlCVUlMRF9CVUdfT04o QVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwo+ICsKPiAr CXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2wzXzM7Cj4gKwlsZW5zW25dID0gQVJSQVlfU0laRShtdXhf Y29uZmlnX2wzXzMpOwo+ICsJbisrOwo+ICsKPiArCXJldHVybiBuOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfcmFzdGVyaXplcl9h bmRfcGl4ZWxfYmFja2VuZFtdID0gewo+ICsJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0s Cj4gKwl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzEwKSwg MHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MTQpLCAweDMwODAwMDAwIH0sCj4gKwl7IF9N TUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAw MCB9LAo+ICsJeyBfTU1JTygweDI3NzApLCAweDAwMDAwMDAyIH0sCj4gKwl7IF9NTUlPKDB4Mjc3 NCksIDB4MDAwMGVmZmYgfSwKPiArCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwNjAwMCB9LAo+ICsJ eyBfTU1JTygweDI3N2MpLCAweDAwMDBmM2ZmIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2Jh Y2tlbmRbXSA9IHsKPiArCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAo+ICsJeyBfTU1J TygweGU1NTgpLCAweDAwMDEwMDAzIH0sCj4gKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEg fSwKPiArCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAo+ICsJeyBfTU1JTygweGU0NWMp LCAweDAwMDUxMDUwIH0sCj4gKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKPiArCXsg X01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRb XSA9IHsKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDJmMzgwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDE0NGQwNTAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTIwZDAzYzAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgxNDBkMDNjZiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBj MGYwMDA0IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM0ZTQwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwNDJmMDQ4MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4MmYwMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwYTRjMDA5MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2NGQwMDI3IH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDA0ZDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkMGQ0 MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMGQ4MDNmIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDQwZDgwMjMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBkMDAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIw ZjAwMTAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBmMDAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDBlMGYwMDUwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDExOTBmYzAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQxOTAxNDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDE0ODUgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHg1MzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAxIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQKPiAr Z2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyAqKnJlZ3MsCj4gKwkJCQkJICAgIGludCAqbGVucykKPiArewo+ICsJaW50IG4gPSAwOwo+ICsK PiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8 IDEpOwo+ICsJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3NfbGVucykgPCAxKTsKPiArCj4gKwlyZWdzW25dID0gbXV4X2NvbmZpZ19yYXN0ZXJpemVyX2Fu ZF9waXhlbF9iYWNrZW5kOwo+ICsJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19yYXN0 ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKPiArCW4rKzsKPiArCj4gKwlyZXR1cm4gbjsKPiAr fQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmln X3NhbXBsZXJbXSA9IHsKPiArCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBf TU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAw MDAgfSwKPiArCXsgX01NSU8oMHgyNzE0KSwgMHg3MDgwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3 MjApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKPiAr CXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwYzAwMCB9LAo+ICsJeyBfTU1JTygweDI3NzQpLCAweDAw MDBlN2ZmIH0sCj4gKwl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDMwMDAgfSwKPiArCXsgX01NSU8o MHgyNzdjKSwgMHgwMDAwZjlmZiB9LAo+ICsJeyBfTU1JTygweDI3ODApLCAweDAwMDAwYzAwIH0s Cj4gKwl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGZlN2YgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfc2FtcGxlcltdID0gewo+ICsJ eyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCj4gKwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAw MTAwMDMgfSwKPiArCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAo+ICsJeyBfTU1JTygw eGU3NTgpLCAweDAwMDE1MDE0IH0sCj4gKwl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwK PiArCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAo+ICsJeyBfTU1JTygweGU2NWMpLCAw eDAwMDU1MDU0IH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IG11eF9jb25maWdfc2FtcGxlcltdID0gewo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE0MTUyYzAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTYxNTAwMDUgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgxMjE2MDBhMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE0MzUyYzAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTYzNTAwMDUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMjM2 MDBhMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE0NTUyYzAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTY1NTAwMDUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMjU2MDBhMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MmY2MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDIyZjIwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRjMDA1MCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDBhNGMwMDEwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZDgwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDAwMGQ4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MGQy MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZjAzNTAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzBmYjAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMGRhIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAwMjggfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw YTJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMmRjMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MDQyZDQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzEzODAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMTMyMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDQxM2MwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYzE0MDAxOCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDBjMTU3MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUxNTAw NzggfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDE1MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDA0MTYyMTgwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIxNjAwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwNDE3NDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAy MzNhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQzMzMwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgxNDM0ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE2MzQ4MDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIzNTc4NzAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgxMDM1MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MzYwMDQzIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDIzNjAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDM3MTAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlNTM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDA1MzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjUzMzAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDFjNTQwMDIwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI1 NDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTU1NzAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDAwNTU3ODAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA1NTAwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjU2MDA0MyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDAyNTYwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY1NzEwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgxMTkwZmY4MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgzNzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwNjAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkw MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4NDE5MDBjMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDg0MiB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 NDU5MDAwNjAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQKPiArZ2V0X3NhbXBsZXJfbXV4X2Nv bmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJICAgICAgIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCj4gKwkJICAgICAgIGludCAqbGVucykKPiArewo+ ICsJaW50IG4gPSAwOwo+ICsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzKSA8IDEpOwo+ICsJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKPiArCj4gKwlyZWdzW25dID0gbXV4X2Nv bmZpZ19zYW1wbGVyOwo+ICsJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19zYW1wbGVy KTsKPiArCW4rKzsKPiArCj4gKwlyZXR1cm4gbjsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3RkbF8xW10gPSB7Cj4gKwl7IF9NTUlP KDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9 LAo+ICsJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcxNCks IDB4ZjA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBf TU1JTygweDI3MjQpLCAweDMwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAw MDIgfSwKPiArCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwN2ZmZiB9LAo+ICsJeyBfTU1JTygweDI3 NzgpLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMDlmZmYgfSwKPiAr CXsgX01NSU8oMHgyNzgwKSwgMHgwMDAwMDAwMiB9LAo+ICsJeyBfTU1JTygweDI3ODQpLCAweDAw MDBlZmZmIH0sCj4gKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8o MHgyNzhjKSwgMHgwMDAwZjNmZiB9LAo+ICsJeyBfTU1JTygweDI3OTApLCAweDAwMDAwMDAyIH0s Cj4gKwl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZkZmYgfSwKPiArCXsgX01NSU8oMHgyNzk4KSwg MHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3OWMpLCAweDAwMDBmZTdmIH0sCj4gK307Cj4g Kwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3RkbF8x W10gPSB7Cj4gKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKPiArCXsgX01NSU8oMHhl NTU4KSwgMHgwMDAxMDAwMyB9LAo+ICsJeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCj4g Kwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKPiArCXsgX01NSU8oMHhlNDVjKSwgMHgw MDA1MTA1MCB9LAo+ICsJeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCj4gKwl7IF9NTUlP KDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgbXV4X2NvbmZpZ190ZGxfMVtdID0gewo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDEyMTIwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTIzMjAwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgxMjUyMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMmY4MDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTRjMDAxNSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMGQ4MDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBk ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDQwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDEwMGYwM2EwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGMwZmYwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA5NSB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDA2MmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDBjMmQ4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUyZDQwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwNjJkNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMTA4 MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMGMwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjExODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MTFjMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDIxMjE4ODAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw NDEyMTliNSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMTIwMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MDIxMzQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDEzNTAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMzA4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MGUzMDQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMwNDAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDBjMzE4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUzMTQw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMxNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDBjMzIxYTgwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUzMjAwMzMgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwNjMyMDAzMSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAw MzIwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMzMzQwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwZTMzMTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MzMxMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU1MDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwMDUwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyNTA0MDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MGU1MTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDUxODAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyNTE0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MGU1MjE4ODAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDUyMWE4MCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDAyNTIwMDMzIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU1 MzQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDUzNDAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDAyNTMxMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGZmODAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDQ5OTAwODAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDYy IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHg1MTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQxOTAwYzAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1Mzkw MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDQwIH0sCj4gK307Cj4gKwo+ICtz dGF0aWMgaW50Cj4gK2dldF90ZGxfMV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiArCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCj4g KwkJICAgICBpbnQgKmxlbnMpCj4gK3sKPiArCWludCBuID0gMDsKPiArCj4gKwlCVUlMRF9CVUdf T04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKPiArCUJVSUxE X0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7 Cj4gKwo+ICsJcmVnc1tuXSA9IG11eF9jb25maWdfdGRsXzE7Cj4gKwlsZW5zW25dID0gQVJSQVlf U0laRShtdXhfY29uZmlnX3RkbF8xKTsKPiArCW4rKzsKPiArCj4gKwlyZXR1cm4gbjsKPiArfQo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3Rk bF8yW10gPSB7Cj4gKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8o MHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0s Cj4gKwl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzIwKSwg MHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCj4gK307Cj4g Kwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3RkbF8y W10gPSB7Cj4gKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKPiArCXsgX01NSU8oMHhl NTU4KSwgMHgwMDAxMDAwMyB9LAo+ICsJeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCj4g Kwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKPiArCXsgX01NSU8oMHhlNDVjKSwgMHgw MDA1MTA1MCB9LAo+ICsJeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCj4gKwl7IF9NTUlP KDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgbXV4X2NvbmZpZ190ZGxfMltdID0gewo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDEyMTI0ZDYwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTIzMjJlNjAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgxMjUyNGQ2MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMmYzMDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzAwMTQgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwMDBkODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBk MjAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMGZlMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGUwZjAwOTcgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODJjODAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDAyZDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkNDAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDA0MTBjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMWMwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDEyMWZiNyB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDAwMTIwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMzUwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwMDMwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MzA0 MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAzMTgwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjMxNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMzIxYjgwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMjAwM2YgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw MDMzNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MzMxMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MDI1MGMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjUxYzAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyNTIxZmI3IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDA1MjAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjUzNTAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDExOTBmYzAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDQxOTAwODAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwNjMgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ1 OTAwMDQwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKPiArfTsKPiArCj4g K3N0YXRpYyBpbnQKPiArZ2V0X3RkbF8yX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICsJCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywK PiArCQkgICAgIGludCAqbGVucykKPiArewo+ICsJaW50IG4gPSAwOwo+ICsKPiArCUJVSUxEX0JV R19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwo+ICsJQlVJ TERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAx KTsKPiArCj4gKwlyZWdzW25dID0gbXV4X2NvbmZpZ190ZGxfMjsKPiArCWxlbnNbbl0gPSBBUlJB WV9TSVpFKG11eF9jb25maWdfdGRsXzIpOwo+ICsJbisrOwo+ICsKPiArCXJldHVybiBuOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdf Y29tcHV0ZV9leHRyYVtdID0gewo+ICsJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzEwKSwgMHgw MDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0sCj4gKwl7IF9NTUlP KDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9 LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2Nv bmZpZ19jb21wdXRlX2V4dHJhW10gPSB7Cj4gKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDEwMDAg fSwKPiArCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAwMzAwMiB9LAo+ICsJeyBfTU1JTygweGU2NTgp LCAweDAwMDA1MDA0IH0sCj4gKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTEwMTAgfSwKPiArCXsg X01NSU8oMHhlNDVjKSwgMHgwMDA1MDAxMiB9LAo+ICsJeyBfTU1JTygweGU1NWMpLCAweDAwMDUy MDUxIH0sCj4gKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwMDAwMDggfSwKPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2V4dHJhW10g PSB7Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTIxMjAzZTAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgxMjMyMDNlMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEyNTIwM2UwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDIyZjQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRj MDA0MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDYwZDIwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA2YyB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDQyZDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjEwNDAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDA2MTE0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMjAwMzMg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDEyMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDA2MTMxMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQzMDgwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwNDMxODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MzIx OTgwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAzMjAwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDMzNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0NTA0MDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1MTQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw NDUyMDAzMyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwNTIwMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MDQ1MzEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZTAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4NTM5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMGMwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDQ1OTAwMDAyIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAw MDAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQKPiArZ2V0X2NvbXB1dGVfZXh0cmFfbXV4X2Nv bmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgICAgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKPiArCQkJICAgICBpbnQgKmxlbnMpCj4gK3sKPiAr CWludCBuID0gMDsKPiArCj4gKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVncykgPCAxKTsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2 LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Cj4gKwo+ICsJcmVnc1tuXSA9IG11eF9jb25m aWdfY29tcHV0ZV9leHRyYTsKPiArCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfY29t cHV0ZV9leHRyYSk7Cj4gKwluKys7Cj4gKwo+ICsJcmV0dXJuIG47Cj4gK30KPiArCj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ192bWVfcGlwZVtdID0g ewo+ICsJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcxMCks IDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAo+ICsJeyBf TU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcyNCksIDB4MzA4MDAw MDAgfSwKPiArCXsgX01NSU8oMHgyNzcwKSwgMHgwMDEwMDAzMCB9LAo+ICsJeyBfTU1JTygweDI3 NzQpLCAweDAwMDBmZmY5IH0sCj4gKwl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDAwMDIgfSwKPiAr CXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZmZmYyB9LAo+ICsJeyBfTU1JTygweDI3ODApLCAweDAw MDAwMDAyIH0sCj4gKwl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGZmZjMgfSwKPiArCXsgX01NSU8o MHgyNzg4KSwgMHgwMDEwMDE4MCB9LAo+ICsJeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZmNmIH0s Cj4gKwl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwMDAwMDIgfSwKPiArCXsgX01NSU8oMHgyNzk0KSwg MHgwMDAwZmZjZiB9LAo+ICsJeyBfTU1JTygweDI3OTgpLCAweDAwMDAwMDAyIH0sCj4gKwl7IF9N TUlPKDB4Mjc5YyksIDB4MDAwMGZmM2YgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfdm1lX3BpcGVbXSA9IHsKPiArCXsgX01NSU8o MHhlNDU4KSwgMHgwMDAwNTAwNCB9LAo+ICsJeyBfTU1JTygweGU1NTgpLCAweDAwMDA4MDAzIH0s Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdf dm1lX3BpcGVbXSA9IHsKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFhNTgwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDE2MWEwMGMwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTIxODAy NDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNDE4MDAwMiB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDE0M2E1ODAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTYzYTAwYzAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgxMjM4MDI0MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE0 MzgwMDAyIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAyZjEwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwMjJmODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MmYzMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0YzQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwYTRjMTUwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMGQyMDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDYwZDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODBkYTAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhMGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MGMwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmMDQwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDBlMGY5NTAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAw ZjAwMmEgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJjODAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDBlMmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTYyYzBhMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJkYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDBjMmRjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxOTMwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwODFhMjhjMSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMWEwMDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMzMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjEzYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4MTNmMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDAxNzIwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjE3 ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4MTdhMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDAxODAwMzcgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjE4MDk0MCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDA4MTgwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDIxODAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDE4MzAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDA2MzkzMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMzYTI4YzEg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDNhMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDBhMzNmMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMzM2YwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwYTM3YTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMzdh MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEzODA5NzcgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwODM4MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MzgwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzODMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgx MTkwMDBmZiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4NDE5MDAwNDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwODAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4NDc5MDEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDQ5OTAwODQ0IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAo+ICt9Owo+ICsKPiArc3Rh dGljIGludAo+ICtnZXRfdm1lX3BpcGVfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gKwkJCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCj4gKwkJ CWludCAqbGVucykKPiArewo+ICsJaW50IG4gPSAwOwo+ICsKPiArCUJVSUxEX0JVR19PTihBUlJB WV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwo+ICsJQlVJTERfQlVHX09O KEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKPiArCj4g KwlyZWdzW25dID0gbXV4X2NvbmZpZ192bWVfcGlwZTsKPiArCWxlbnNbbl0gPSBBUlJBWV9TSVpF KG11eF9jb25maWdfdm1lX3BpcGUpOwo+ICsJbisrOwo+ICsKPiArCXJldHVybiBuOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfdGVz dF9vYVtdID0gewo+ICsJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlP KDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9 LAo+ICsJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcyNCks IDB4ZjA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBf TU1JTygweDI3NzApLCAweDAwMDAwMDA0IH0sCj4gKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMDAw MDAgfSwKPiArCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwMDAwMyB9LAo+ICsJeyBfTU1JTygweDI3 N2MpLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDAwMDcgfSwKPiAr CXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3ODgpLCAweDAw MTAwMDAyIH0sCj4gKwl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGZmZjcgfSwKPiArCXsgX01NSU8o MHgyNzkwKSwgMHgwMDEwMDAwMiB9LAo+ICsJeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZmNmIH0s Cj4gKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAxMDAwODIgfSwKPiArCXsgX01NSU8oMHgyNzljKSwg MHgwMDAwZmZlZiB9LAo+ICsJeyBfTU1JTygweDI3YTApLCAweDAwMTAwMGMyIH0sCj4gKwl7IF9N TUlPKDB4MjdhNCksIDB4MDAwMGZmZTcgfSwKPiArCXsgX01NSU8oMHgyN2E4KSwgMHgwMDEwMDAw MSB9LAo+ICsJeyBfTU1JTygweDI3YWMpLCAweDAwMDBmZmU3IH0sCj4gK307Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2FbXSA9IHsK PiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ190 ZXN0X29hW10gPSB7Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MTAwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwNzgxMDAxMyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFmODEwMDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MTAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgxYjkzMDA0MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA3ZTU0MDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MWY5MDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkw MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4NTM5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50 Cj4gK2dldF90ZXN0X29hX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAo+ICsJCSAg ICAgICBpbnQgKmxlbnMpCj4gK3sKPiArCWludCBuID0gMDsKPiArCj4gKwlCVUlMRF9CVUdfT04o QVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKPiArCUJVSUxEX0JV R19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Cj4g Kwo+ICsJcmVnc1tuXSA9IG11eF9jb25maWdfdGVzdF9vYTsKPiArCWxlbnNbbl0gPSBBUlJBWV9T SVpFKG11eF9jb25maWdfdGVzdF9vYSk7Cj4gKwluKys7Cj4gKwo+ICsJcmV0dXJuIG47Cj4gK30K PiArCj4gK2ludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2tibGd0MihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X3Jl Z3MgPSAwOwo+ICsJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPSBOVUxMOwo+ICsJ ZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0gMDsKPiArCWRldl9wcml2LT5w ZXJmLm9hLmZsZXhfcmVncyA9IE5VTEw7Cj4gKwlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3Nf bGVuID0gMDsKPiArCj4gKwlzd2l0Y2ggKGRldl9wcml2LT5wZXJmLm9hLm1ldHJpY3Nfc2V0KSB7 Cj4gKwljYXNlIE1FVFJJQ19TRVRfSURfUkVOREVSX0JBU0lDOgo+ICsJCWRldl9wcml2LT5wZXJm Lm9hLm5fbXV4X3JlZ3MgPQo+ICsJCQlnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3By aXYsCj4gKwkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKPiArCQkJCQkJICAg IGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwo+ICsJCWlmIChkZXZfcHJpdi0+cGVy Zi5vYS5uX211eF9yZWdzID09IDApIHsKPiArCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFi bGUgTVVYIGNvbmZpZyBmb3IgXCJSRU5ERVJfQkFTSUNcIiBtZXRyaWMgc2V0XG4iKTsKPiArCj4g KwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRo aXMKPiArCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVz ZXJzcGFjZSBhbmQKPiArCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKPiAr CQkJICovCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCj4gKwkJZGV2X3ByaXYtPnBl cmYub2EuYl9jb3VudGVyX3JlZ3MgPQo+ICsJCQliX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNp YzsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQo+ICsJCQlBUlJB WV9TSVpFKGJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljKTsKPiArCj4gKwkJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzID0KPiArCQkJZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljOwo+ ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGZs ZXhfZXVfY29uZmlnX3JlbmRlcl9iYXNpYyk7Cj4gKwo+ICsJCXJldHVybiAwOwo+ICsJY2FzZSBN RVRSSUNfU0VUX0lEX0NPTVBVVEVfQkFTSUM6Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhf cmVncyA9Cj4gKwkJCWdldF9jb21wdXRlX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsCj4gKwkJ CQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCj4gKwkJCQkJCSAgICAgZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Cj4gKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5f bXV4X3JlZ3MgPT0gMCkgewo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVgg Y29uZmlnIGZvciBcIkNPTVBVVEVfQkFTSUNcIiBtZXRyaWMgc2V0XG4iKTsKPiArCj4gKwkJCS8q IEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKPiAr CQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFj ZSBhbmQKPiArCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKPiArCQkJICov Cj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eu Yl9jb3VudGVyX3JlZ3MgPQo+ICsJCQliX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfYmFzaWM7Cj4g KwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KPiArCQkJQVJSQVlfU0la RShiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfYmFzaWMpOwo+ICsKPiArCQlkZXZfcHJpdi0+cGVy Zi5vYS5mbGV4X3JlZ3MgPQo+ICsJCQlmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2Jhc2ljOwo+ICsJ CWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGZsZXhf ZXVfY29uZmlnX2NvbXB1dGVfYmFzaWMpOwo+ICsKPiArCQlyZXR1cm4gMDsKPiArCWNhc2UgTUVU UklDX1NFVF9JRF9SRU5ERVJfUElQRV9QUk9GSUxFOgo+ICsJCWRldl9wcml2LT5wZXJmLm9hLm5f bXV4X3JlZ3MgPQo+ICsJCQlnZXRfcmVuZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKGRldl9w cml2LAo+ICsJCQkJCQkJICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCj4gKwkJCQkJCQkg ICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKPiArCQlpZiAoZGV2X3ByaXYtPnBl cmYub2Eubl9tdXhfcmVncyA9PSAwKSB7Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRh YmxlIE1VWCBjb25maWcgZm9yIFwiUkVOREVSX1BJUEVfUFJPRklMRVwiIG1ldHJpYyBzZXRcbiIp Owo+ICsKPiArCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNo ZWNrZWQgdGhpcwo+ICsJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlz ZWQgdG8gdXNlcnNwYWNlIGFuZAo+ICsJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVl c3RlZAo+ICsJCQkgKi8KPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsKPiArCQlkZXZf cHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Cj4gKwkJCWJfY291bnRlcl9jb25maWdfcmVu ZGVyX3BpcGVfcHJvZmlsZTsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19s ZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmls ZSk7Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Cj4gKwkJCWZsZXhfZXVf Y29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGU7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9y ZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmVuZGVyX3BpcGVfcHJv ZmlsZSk7Cj4gKwo+ICsJCXJldHVybiAwOwo+ICsJY2FzZSBNRVRSSUNfU0VUX0lEX01FTU9SWV9S RUFEUzoKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9yZWdzID0KPiArCQkJZ2V0X21lbW9y eV9yZWFkc19tdXhfY29uZmlnKGRldl9wcml2LAo+ICsJCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3MsCj4gKwkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5z KTsKPiArCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9PSAwKSB7Cj4gKwkJCURS TV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTUVNT1JZX1JFQURT XCIgbWV0cmljIHNldFxuIik7Cj4gKwo+ICsJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVy X3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCj4gKwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBo YXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCj4gKwkJCSAqIHNvIHNob3VsZG4n dCBoYXZlIGJlZW4gcmVxdWVzdGVkCj4gKwkJCSAqLwo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiAr CQl9Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KPiArCQkJYl9j b3VudGVyX2NvbmZpZ19tZW1vcnlfcmVhZHM7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3Vu dGVyX3JlZ3NfbGVuID0KPiArCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX21lbW9yeV9y ZWFkcyk7Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Cj4gKwkJCWZsZXhf ZXVfY29uZmlnX21lbW9yeV9yZWFkczsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3Nf bGVuID0KPiArCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19tZW1vcnlfcmVhZHMpOwo+ICsK PiArCQlyZXR1cm4gMDsKPiArCWNhc2UgTUVUUklDX1NFVF9JRF9NRU1PUllfV1JJVEVTOgo+ICsJ CWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPQo+ICsJCQlnZXRfbWVtb3J5X3dyaXRlc19t dXhfY29uZmlnKGRldl9wcml2LAo+ICsJCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzLAo+ICsJCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwo+ICsJ CWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9yZWdzID09IDApIHsKPiArCQkJRFJNX0RFQlVH X0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJNRU1PUllfV1JJVEVTXCIgbWV0 cmljIHNldFxuIik7Cj4gKwo+ICsJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2Zz IGFscmVhZHkgY2hlY2tlZCB0aGlzCj4gKwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJl ZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCj4gKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZl IGJlZW4gcmVxdWVzdGVkCj4gKwkJCSAqLwo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQl9Cj4g Kwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KPiArCQkJYl9jb3VudGVy X2NvbmZpZ19tZW1vcnlfd3JpdGVzOwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9y ZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfd3JpdGVz KTsKPiArCj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KPiArCQkJZmxleF9ldV9j b25maWdfbWVtb3J5X3dyaXRlczsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVu ID0KPiArCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19tZW1vcnlfd3JpdGVzKTsKPiArCj4g KwkJcmV0dXJuIDA7Cj4gKwljYXNlIE1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRFTkRFRDoKPiAr CQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9yZWdzID0KPiArCQkJZ2V0X2NvbXB1dGVfZXh0ZW5k ZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwKPiArCQkJCQkJCWRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzLAo+ICsJCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Cj4gKwkJaWYg KGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPT0gMCkgewo+ICsJCQlEUk1fREVCVUdfRFJJ VkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkNPTVBVVEVfRVhURU5ERURcIiBtZXRy aWMgc2V0XG4iKTsKPiArCj4gKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMg YWxyZWFkeSBjaGVja2VkIHRoaXMKPiArCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVl biBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKPiArCQkJICogc28gc2hvdWxkbid0IGhhdmUg YmVlbiByZXF1ZXN0ZWQKPiArCQkJICovCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiAr Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQo+ICsJCQliX2NvdW50ZXJf Y29uZmlnX2NvbXB1dGVfZXh0ZW5kZWQ7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVy X3JlZ3NfbGVuID0KPiArCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0 ZW5kZWQpOwo+ICsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQo+ICsJCQlmbGV4 X2V1X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkOwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhf cmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0ZW5k ZWQpOwo+ICsKPiArCQlyZXR1cm4gMDsKPiArCWNhc2UgTUVUUklDX1NFVF9JRF9DT01QVVRFX0wz X0NBQ0hFOgo+ICsJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPQo+ICsJCQlnZXRfY29t cHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRldl9wcml2LAo+ICsJCQkJCQkJZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MsCj4gKwkJCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5z KTsKPiArCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9PSAwKSB7Cj4gKwkJCURS TV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVURV9MM19D QUNIRVwiIG1ldHJpYyBzZXRcbiIpOwo+ICsKPiArCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdp c3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwo+ICsJCQkgKiBhbmQgc28gaXQgd291bGRu J3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAo+ICsJCQkgKiBzbyBzaG91 bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAo+ICsJCQkgKi8KPiArCQkJcmV0dXJuIC1FSU5WQUw7 Cj4gKwkJfQo+ICsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Cj4gKwkJ CWJfY291bnRlcl9jb25maWdfY29tcHV0ZV9sM19jYWNoZTsKPiArCQlkZXZfcHJpdi0+cGVyZi5v YS5iX2NvdW50ZXJfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdf Y29tcHV0ZV9sM19jYWNoZSk7Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9 Cj4gKwkJCWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGU7Cj4gKwkJZGV2X3ByaXYtPnBl cmYub2EuZmxleF9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfY29t cHV0ZV9sM19jYWNoZSk7Cj4gKwo+ICsJCXJldHVybiAwOwo+ICsJY2FzZSBNRVRSSUNfU0VUX0lE X0hEQ19BTkRfU0Y6Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9Cj4gKwkJCWdl dF9oZGNfYW5kX3NmX211eF9jb25maWcoZGV2X3ByaXYsCj4gKwkJCQkJCSAgZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MsCj4gKwkJCQkJCSAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVu cyk7Cj4gKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPT0gMCkgewo+ICsJCQlE Uk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkhEQ19BTkRfU0Zc IiBtZXRyaWMgc2V0XG4iKTsKPiArCj4gKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJf c3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKPiArCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhh dmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKPiArCQkJICogc28gc2hvdWxkbid0 IGhhdmUgYmVlbiByZXF1ZXN0ZWQKPiArCQkJICovCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJ CX0KPiArCj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQo+ICsJCQliX2Nv dW50ZXJfY29uZmlnX2hkY19hbmRfc2Y7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVy X3JlZ3NfbGVuID0KPiArCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2hkY19hbmRfc2Yp Owo+ICsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQo+ICsJCQlmbGV4X2V1X2Nv bmZpZ19oZGNfYW5kX3NmOwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQo+ ICsJCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2hkY19hbmRfc2YpOwo+ICsKPiArCQlyZXR1 cm4gMDsKPiArCWNhc2UgTUVUUklDX1NFVF9JRF9MM18xOgo+ICsJCWRldl9wcml2LT5wZXJmLm9h Lm5fbXV4X3JlZ3MgPQo+ICsJCQlnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LAo+ICsJCQkJ CSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKPiArCQkJCQkgICAgZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3NfbGVucyk7Cj4gKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X3Jl Z3MgPT0gMCkgewo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmln IGZvciBcIkwzXzFcIiBtZXRyaWMgc2V0XG4iKTsKPiArCj4gKwkJCS8qIEVJTlZBTCBiZWNhdXNl ICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKPiArCQkJICogYW5kIHNvIGl0 IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKPiArCQkJICog c28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKPiArCQkJICovCj4gKwkJCXJldHVybiAt RUlOVkFMOwo+ICsJCX0KPiArCj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3Mg PQo+ICsJCQliX2NvdW50ZXJfY29uZmlnX2wzXzE7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9j b3VudGVyX3JlZ3NfbGVuID0KPiArCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2wzXzEp Owo+ICsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQo+ICsJCQlmbGV4X2V1X2Nv bmZpZ19sM18xOwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQo+ICsJCQlB UlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2wzXzEpOwo+ICsKPiArCQlyZXR1cm4gMDsKPiArCWNh c2UgTUVUUklDX1NFVF9JRF9MM18yOgo+ICsJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X3JlZ3Mg PQo+ICsJCQlnZXRfbDNfMl9tdXhfY29uZmlnKGRldl9wcml2LAo+ICsJCQkJCSAgICBkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncywKPiArCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3NfbGVucyk7Cj4gKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPT0gMCkgewo+ ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkwzXzJc IiBtZXRyaWMgc2V0XG4iKTsKPiArCj4gKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJf c3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKPiArCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhh dmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKPiArCQkJICogc28gc2hvdWxkbid0 IGhhdmUgYmVlbiByZXF1ZXN0ZWQKPiArCQkJICovCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJ CX0KPiArCj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQo+ICsJCQliX2Nv dW50ZXJfY29uZmlnX2wzXzI7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3Nf bGVuID0KPiArCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2wzXzIpOwo+ICsKPiArCQlk ZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQo+ICsJCQlmbGV4X2V1X2NvbmZpZ19sM18yOwo+ ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGZs ZXhfZXVfY29uZmlnX2wzXzIpOwo+ICsKPiArCQlyZXR1cm4gMDsKPiArCWNhc2UgTUVUUklDX1NF VF9JRF9MM18zOgo+ICsJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPQo+ICsJCQlnZXRf bDNfM19tdXhfY29uZmlnKGRldl9wcml2LAo+ICsJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVncywKPiArCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Cj4g KwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPT0gMCkgewo+ICsJCQlEUk1fREVC VUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkwzXzNcIiBtZXRyaWMgc2V0 XG4iKTsKPiArCj4gKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFk eSBjaGVja2VkIHRoaXMKPiArCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZl cnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKPiArCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiBy ZXF1ZXN0ZWQKPiArCQkJICovCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCj4gKwkJ ZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQo+ICsJCQliX2NvdW50ZXJfY29uZmln X2wzXzM7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KPiArCQkJ QVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2wzXzMpOwo+ICsKPiArCQlkZXZfcHJpdi0+cGVy Zi5vYS5mbGV4X3JlZ3MgPQo+ICsJCQlmbGV4X2V1X2NvbmZpZ19sM18zOwo+ICsJCWRldl9wcml2 LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmln X2wzXzMpOwo+ICsKPiArCQlyZXR1cm4gMDsKPiArCWNhc2UgTUVUUklDX1NFVF9JRF9SQVNURVJJ WkVSX0FORF9QSVhFTF9CQUNLRU5EOgo+ICsJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X3JlZ3Mg PQo+ICsJCQlnZXRfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9tdXhfY29uZmlnKGRldl9w cml2LAo+ICsJCQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKPiArCQkJCQkJ CQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Cj4gKwkJaWYgKGRldl9wcml2 LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPT0gMCkgewo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBz dWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJBU1RFUklaRVJfQU5EX1BJWEVMX0JBQ0tFTkRcIiBt ZXRyaWMgc2V0XG4iKTsKPiArCj4gKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lz ZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKPiArCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUg YmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKPiArCQkJICogc28gc2hvdWxkbid0IGhh dmUgYmVlbiByZXF1ZXN0ZWQKPiArCQkJICovCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0K PiArCj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQo+ICsJCQliX2NvdW50 ZXJfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQ7Cj4gKwkJZGV2X3ByaXYtPnBl cmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KPiArCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29u ZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwo+ICsKPiArCQlkZXZfcHJpdi0+cGVy Zi5vYS5mbGV4X3JlZ3MgPQo+ICsJCQlmbGV4X2V1X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhl bF9iYWNrZW5kOwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQo+ICsJCQlB UlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwo+ ICsKPiArCQlyZXR1cm4gMDsKPiArCWNhc2UgTUVUUklDX1NFVF9JRF9TQU1QTEVSOgo+ICsJCWRl dl9wcml2LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPQo+ICsJCQlnZXRfc2FtcGxlcl9tdXhfY29uZmln KGRldl9wcml2LAo+ICsJCQkJCSAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKPiAr CQkJCQkgICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Cj4gKwkJaWYgKGRl dl9wcml2LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPT0gMCkgewo+ICsJCQlEUk1fREVCVUdfRFJJVkVS KCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlNBTVBMRVJcIiBtZXRyaWMgc2V0XG4iKTsK PiArCj4gKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVj a2VkIHRoaXMKPiArCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2Vk IHRvIHVzZXJzcGFjZSBhbmQKPiArCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0 ZWQKPiArCQkJICovCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCj4gKwkJZGV2X3By aXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQo+ICsJCQliX2NvdW50ZXJfY29uZmlnX3NhbXBs ZXI7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KPiArCQkJQVJS QVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3NhbXBsZXIpOwo+ICsKPiArCQlkZXZfcHJpdi0+cGVy Zi5vYS5mbGV4X3JlZ3MgPQo+ICsJCQlmbGV4X2V1X2NvbmZpZ19zYW1wbGVyOwo+ICsJCWRldl9w cml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29u ZmlnX3NhbXBsZXIpOwo+ICsKPiArCQlyZXR1cm4gMDsKPiArCWNhc2UgTUVUUklDX1NFVF9JRF9U RExfMToKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9yZWdzID0KPiArCQkJZ2V0X3RkbF8x X211eF9jb25maWcoZGV2X3ByaXYsCj4gKwkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVncywKPiArCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwo+ICsJ CWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9yZWdzID09IDApIHsKPiArCQkJRFJNX0RFQlVH X0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJURExfMVwiIG1ldHJpYyBzZXRc biIpOwo+ICsKPiArCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5 IGNoZWNrZWQgdGhpcwo+ICsJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVy dGlzZWQgdG8gdXNlcnNwYWNlIGFuZAo+ICsJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJl cXVlc3RlZAo+ICsJCQkgKi8KPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsKPiArCQlk ZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Cj4gKwkJCWJfY291bnRlcl9jb25maWdf dGRsXzE7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KPiArCQkJ QVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3RkbF8xKTsKPiArCj4gKwkJZGV2X3ByaXYtPnBl cmYub2EuZmxleF9yZWdzID0KPiArCQkJZmxleF9ldV9jb25maWdfdGRsXzE7Cj4gKwkJZGV2X3By aXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25m aWdfdGRsXzEpOwo+ICsKPiArCQlyZXR1cm4gMDsKPiArCWNhc2UgTUVUUklDX1NFVF9JRF9URExf MjoKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9yZWdzID0KPiArCQkJZ2V0X3RkbF8yX211 eF9jb25maWcoZGV2X3ByaXYsCj4gKwkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn cywKPiArCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwo+ICsJCWlm IChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9yZWdzID09IDApIHsKPiArCQkJRFJNX0RFQlVHX0RS SVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJURExfMlwiIG1ldHJpYyBzZXRcbiIp Owo+ICsKPiArCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNo ZWNrZWQgdGhpcwo+ICsJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlz ZWQgdG8gdXNlcnNwYWNlIGFuZAo+ICsJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVl c3RlZAo+ICsJCQkgKi8KPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsKPiArCQlkZXZf cHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Cj4gKwkJCWJfY291bnRlcl9jb25maWdfdGRs XzI7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KPiArCQkJQVJS QVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3RkbF8yKTsKPiArCj4gKwkJZGV2X3ByaXYtPnBlcmYu b2EuZmxleF9yZWdzID0KPiArCQkJZmxleF9ldV9jb25maWdfdGRsXzI7Cj4gKwkJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdf dGRsXzIpOwo+ICsKPiArCQlyZXR1cm4gMDsKPiArCWNhc2UgTUVUUklDX1NFVF9JRF9DT01QVVRF X0VYVFJBOgo+ICsJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPQo+ICsJCQlnZXRfY29t cHV0ZV9leHRyYV9tdXhfY29uZmlnKGRldl9wcml2LAo+ICsJCQkJCQkgICAgIGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzLAo+ICsJCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz X2xlbnMpOwo+ICsJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9yZWdzID09IDApIHsKPiAr CQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJDT01QVVRF X0VYVFJBXCIgbWV0cmljIHNldFxuIik7Cj4gKwo+ICsJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3Jl Z2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCj4gKwkJCSAqIGFuZCBzbyBpdCB3b3Vs ZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCj4gKwkJCSAqIHNvIHNo b3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCj4gKwkJCSAqLwo+ICsJCQlyZXR1cm4gLUVJTlZB TDsKPiArCQl9Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KPiAr CQkJYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dHJhOwo+ICsJCWRldl9wcml2LT5wZXJmLm9h LmJfY291bnRlcl9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19j b21wdXRlX2V4dHJhKTsKPiArCj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KPiAr CQkJZmxleF9ldV9jb25maWdfY29tcHV0ZV9leHRyYTsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5m bGV4X3JlZ3NfbGVuID0KPiArCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4 dHJhKTsKPiArCj4gKwkJcmV0dXJuIDA7Cj4gKwljYXNlIE1FVFJJQ19TRVRfSURfVk1FX1BJUEU6 Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9Cj4gKwkJCWdldF92bWVfcGlwZV9t dXhfY29uZmlnKGRldl9wcml2LAo+ICsJCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywK PiArCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Cj4gKwkJaWYgKGRldl9w cml2LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPT0gMCkgewo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJO byBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlZNRV9QSVBFXCIgbWV0cmljIHNldFxuIik7Cj4g Kwo+ICsJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tl ZCB0aGlzCj4gKwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0 byB1c2Vyc3BhY2UgYW5kCj4gKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVk Cj4gKwkJCSAqLwo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwo+ICsJCWRldl9wcml2 LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KPiArCQkJYl9jb3VudGVyX2NvbmZpZ192bWVfcGlw ZTsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQo+ICsJCQlBUlJB WV9TSVpFKGJfY291bnRlcl9jb25maWdfdm1lX3BpcGUpOwo+ICsKPiArCQlkZXZfcHJpdi0+cGVy Zi5vYS5mbGV4X3JlZ3MgPQo+ICsJCQlmbGV4X2V1X2NvbmZpZ192bWVfcGlwZTsKPiArCQlkZXZf cHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KPiArCQkJQVJSQVlfU0laRShmbGV4X2V1X2Nv bmZpZ192bWVfcGlwZSk7Cj4gKwo+ICsJCXJldHVybiAwOwo+ICsJY2FzZSBNRVRSSUNfU0VUX0lE X1RFU1RfT0E6Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9Cj4gKwkJCWdldF90 ZXN0X29hX211eF9jb25maWcoZGV2X3ByaXYsCj4gKwkJCQkJICAgICAgIGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzLAo+ICsJCQkJCSAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19s ZW5zKTsKPiArCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9PSAwKSB7Cj4gKwkJ CURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiVEVTVF9PQVwi IG1ldHJpYyBzZXRcbiIpOwo+ICsKPiArCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9z eXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwo+ICsJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2 ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAo+ICsJCQkgKiBzbyBzaG91bGRuJ3Qg aGF2ZSBiZWVuIHJlcXVlc3RlZAo+ICsJCQkgKi8KPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJ fQo+ICsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Cj4gKwkJCWJfY291 bnRlcl9jb25maWdfdGVzdF9vYTsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVn c19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGVzdF9vYSk7Cj4gKwo+ ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Cj4gKwkJCWZsZXhfZXVfY29uZmlnX3Rl c3Rfb2E7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZ X1NJWkUoZmxleF9ldV9jb25maWdfdGVzdF9vYSk7Cj4gKwo+ICsJCXJldHVybiAwOwo+ICsJZGVm YXVsdDoKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHNzaXpl X3QKPiArc2hvd19yZW5kZXJfYmFzaWNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiArewo+ICsJcmV0dXJuIHNwcmludGYo YnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfUkVOREVSX0JBU0lDKTsKPiArfQo+ICsKPiArc3Rh dGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3JlbmRlcl9iYXNpY19pZCA9IHsK PiArCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAo+ICsJLnNob3cgPSBz aG93X3JlbmRlcl9iYXNpY19pZCwKPiArCS5zdG9yZSA9IE5VTEwsCj4gK307Cj4gKwo+ICtzdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfcmVuZGVyX2Jhc2ljW10gPSB7Cj4gKwkmZGV2X2F0 dHJfcmVuZGVyX2Jhc2ljX2lkLmF0dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmVuZGVyX2Jhc2ljID0gewo+ICsJLm5hbWUgPSAi ZjhkNjc3ZTktZmY2Zi00ZGYxLTkzMTAtMDMzNGM2ZWZhY2NlIiwKPiArCS5hdHRycyA9ICBhdHRy c19yZW5kZXJfYmFzaWMsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtzaG93X2NvbXB1 dGVfYmFzaWNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKPiArewo+ICsJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1F VFJJQ19TRVRfSURfQ09NUFVURV9CQVNJQyk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9jb21wdXRlX2Jhc2ljX2lkID0gewo+ICsJLmF0dHIgPSB7 IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCj4gKwkuc2hvdyA9IHNob3dfY29tcHV0ZV9i YXNpY19pZCwKPiArCS5zdG9yZSA9IE5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9iYXNpY1tdID0gewo+ICsJJmRldl9hdHRyX2NvbXB1dGVf YmFzaWNfaWQuYXR0ciwKPiArCU5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJp YnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2Jhc2ljID0gewo+ICsJLm5hbWUgPSAiZTE3ZmM0MmEt ZTYxNC00MWI2LTkwYzQtMTA3NDg0MWE2Yzc3IiwKPiArCS5hdHRycyA9ICBhdHRyc19jb21wdXRl X2Jhc2ljLAo+ICt9Owo+ICsKPiArc3RhdGljIHNzaXplX3QKPiArc2hvd19yZW5kZXJfcGlwZV9w cm9maWxlX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLCBjaGFyICpidWYpCj4gK3sKPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRS SUNfU0VUX0lEX1JFTkRFUl9QSVBFX1BST0ZJTEUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0 IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZCA9IHsKPiAr CS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAo+ICsJLnNob3cgPSBzaG93 X3JlbmRlcl9waXBlX3Byb2ZpbGVfaWQsCj4gKwkuc3RvcmUgPSBOVUxMLAo+ICt9Owo+ICsKPiAr c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsK PiArCSZkZXZfYXR0cl9yZW5kZXJfcGlwZV9wcm9maWxlX2lkLmF0dHIsCj4gKwlOVUxMLAo+ICt9 Owo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmVuZGVyX3BpcGVf cHJvZmlsZSA9IHsKPiArCS5uYW1lID0gImQ3YTE3YTNhLWNhNzEtNDBkMi1hOTE5LWFjZTgwZDUw NjMzZiIsCj4gKwkuYXR0cnMgPSAgYXR0cnNfcmVuZGVyX3BpcGVfcHJvZmlsZSwKPiArfTsKPiAr Cj4gK3N0YXRpYyBzc2l6ZV90Cj4gK3Nob3dfbWVtb3J5X3JlYWRzX2lkKHN0cnVjdCBkZXZpY2Ug KmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiAr CXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX01FTU9SWV9SRUFEUyk7 Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9tZW1v cnlfcmVhZHNfaWQgPSB7Cj4gKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQg fSwKPiArCS5zaG93ID0gc2hvd19tZW1vcnlfcmVhZHNfaWQsCj4gKwkuc3RvcmUgPSBOVUxMLAo+ ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX21lbW9yeV9yZWFkc1td ID0gewo+ICsJJmRldl9hdHRyX21lbW9yeV9yZWFkc19pZC5hdHRyLAo+ICsJTlVMTCwKPiArfTsK PiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX21lbW9yeV9yZWFkcyA9 IHsKPiArCS5uYW1lID0gIjU3YjU5MjAyLTE3MmItNDc3YS04N2RlLTMzZjg1NTcyYzU4OSIsCj4g KwkuYXR0cnMgPSAgYXR0cnNfbWVtb3J5X3JlYWRzLAo+ICt9Owo+ICsKPiArc3RhdGljIHNzaXpl X3QKPiArc2hvd19tZW1vcnlfd3JpdGVzX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiArCXJldHVybiBzcHJpbnRm KGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX01FTU9SWV9XUklURVMpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbWVtb3J5X3dyaXRlc19pZCA9 IHsKPiArCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAo+ICsJLnNob3cg PSBzaG93X21lbW9yeV93cml0ZXNfaWQsCj4gKwkuc3RvcmUgPSBOVUxMLAo+ICt9Owo+ICsKPiAr c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX21lbW9yeV93cml0ZXNbXSA9IHsKPiArCSZk ZXZfYXR0cl9tZW1vcnlfd3JpdGVzX2lkLmF0dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsKPiArc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbWVtb3J5X3dyaXRlcyA9IHsKPiArCS5u YW1lID0gIjNhZGRmOGVmLThlOWItNDBmNS1hNDQ4LTNkYmI1ZDUxMjhiMCIsCj4gKwkuYXR0cnMg PSAgYXR0cnNfbWVtb3J5X3dyaXRlcywKPiArfTsKPiArCj4gK3N0YXRpYyBzc2l6ZV90Cj4gK3No b3dfY29tcHV0ZV9leHRlbmRlZF9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICt7Cj4gKwlyZXR1cm4gc3ByaW50ZihidWYs ICIlZFxuIiwgTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVEVOREVEKTsKPiArfQo+ICsKPiArc3Rh dGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2NvbXB1dGVfZXh0ZW5kZWRfaWQg PSB7Cj4gKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKPiArCS5zaG93 ID0gc2hvd19jb21wdXRlX2V4dGVuZGVkX2lkLAo+ICsJLnN0b3JlID0gTlVMTCwKPiArfTsKPiAr Cj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19jb21wdXRlX2V4dGVuZGVkW10gPSB7 Cj4gKwkmZGV2X2F0dHJfY29tcHV0ZV9leHRlbmRlZF9pZC5hdHRyLAo+ICsJTlVMTCwKPiArfTsK PiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfZXh0ZW5k ZWQgPSB7Cj4gKwkubmFtZSA9ICI0YWYwNDAwYS04MWMzLTQ3ZGItYTZiNi1kZWRkYmQ3NTY4MGUi LAo+ICsJLmF0dHJzID0gIGF0dHJzX2NvbXB1dGVfZXh0ZW5kZWQsCj4gK307Cj4gKwo+ICtzdGF0 aWMgc3NpemVfdAo+ICtzaG93X2NvbXB1dGVfbDNfY2FjaGVfaWQoc3RydWN0IGRldmljZSAqa2Rl diwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiArewo+ICsJcmV0 dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfQ09NUFVURV9MM19DQUNIRSk7 Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9jb21w dXRlX2wzX2NhY2hlX2lkID0gewo+ICsJLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAw NDQ0IH0sCj4gKwkuc2hvdyA9IHNob3dfY29tcHV0ZV9sM19jYWNoZV9pZCwKPiArCS5zdG9yZSA9 IE5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29tcHV0 ZV9sM19jYWNoZVtdID0gewo+ICsJJmRldl9hdHRyX2NvbXB1dGVfbDNfY2FjaGVfaWQuYXR0ciwK PiArCU5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91 cF9jb21wdXRlX2wzX2NhY2hlID0gewo+ICsJLm5hbWUgPSAiMGUyMmY5OTUtNzljYS00ZjY3LTgz YWItZTlkOTc3MjQ4OGQ4IiwKPiArCS5hdHRycyA9ICBhdHRyc19jb21wdXRlX2wzX2NhY2hlLAo+ ICt9Owo+ICsKPiArc3RhdGljIHNzaXplX3QKPiArc2hvd19oZGNfYW5kX3NmX2lkKHN0cnVjdCBk ZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4g K3sKPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0hEQ19BTkRf U0YpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJf aGRjX2FuZF9zZl9pZCA9IHsKPiArCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0 NCB9LAo+ICsJLnNob3cgPSBzaG93X2hkY19hbmRfc2ZfaWQsCj4gKwkuc3RvcmUgPSBOVUxMLAo+ ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2hkY19hbmRfc2ZbXSA9 IHsKPiArCSZkZXZfYXR0cl9oZGNfYW5kX3NmX2lkLmF0dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsK PiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfaGRjX2FuZF9zZiA9IHsKPiAr CS5uYW1lID0gImJjMmEwMGY3LWNiOGEtNGZmMi04YWQwLWUyNDFkYWQxNjkzNyIsCj4gKwkuYXR0 cnMgPSAgYXR0cnNfaGRjX2FuZF9zZiwKPiArfTsKPiArCj4gK3N0YXRpYyBzc2l6ZV90Cj4gK3No b3dfbDNfMV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq YXR0ciwgY2hhciAqYnVmKQo+ICt7Cj4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVU UklDX1NFVF9JRF9MM18xKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlIGRldl9hdHRyX2wzXzFfaWQgPSB7Cj4gKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9k ZSA9IDA0NDQgfSwKPiArCS5zaG93ID0gc2hvd19sM18xX2lkLAo+ICsJLnN0b3JlID0gTlVMTCwK PiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19sM18xW10gPSB7Cj4g KwkmZGV2X2F0dHJfbDNfMV9pZC5hdHRyLAo+ICsJTlVMTCwKPiArfTsKPiArCj4gK3N0YXRpYyBz dHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2wzXzEgPSB7Cj4gKwkubmFtZSA9ICJkMmJiZTc5 MC1mMDU4LTQyZDktODFjNi1jZGVkY2Y2NTViYzIiLAo+ICsJLmF0dHJzID0gIGF0dHJzX2wzXzEs Cj4gK307Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtzaG93X2wzXzJfaWQoc3RydWN0IGRldmlj ZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiArewo+ ICsJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfTDNfMik7Cj4gK30K PiArCj4gK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9sM18yX2lkID0g ewo+ICsJLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCj4gKwkuc2hvdyA9 IHNob3dfbDNfMl9pZCwKPiArCS5zdG9yZSA9IE5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0cnNfbDNfMltdID0gewo+ICsJJmRldl9hdHRyX2wzXzJfaWQuYXR0 ciwKPiArCU5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBn cm91cF9sM18yID0gewo+ICsJLm5hbWUgPSAiMmY4ZTMyZTQtNTk1Ni00NmUyLWFmMzEtYzhlYTk1 ODg3MzMyIiwKPiArCS5hdHRycyA9ICBhdHRyc19sM18yLAo+ICt9Owo+ICsKPiArc3RhdGljIHNz aXplX3QKPiArc2hvd19sM18zX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2Vf YXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiArCXJldHVybiBzcHJpbnRmKGJ1Ziwg IiVkXG4iLCBNRVRSSUNfU0VUX0lEX0wzXzMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbDNfM19pZCA9IHsKPiArCS5hdHRyID0geyAubmFtZSA9 ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAo+ICsJLnNob3cgPSBzaG93X2wzXzNfaWQsCj4gKwkuc3Rv cmUgPSBOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2wz XzNbXSA9IHsKPiArCSZkZXZfYXR0cl9sM18zX2lkLmF0dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsK PiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbDNfMyA9IHsKPiArCS5uYW1l ID0gImNhMDQ2YWFkLWI1ZmItNDEwMS1hZGNlLTY0NzNlZTZlNWIxNCIsCj4gKwkuYXR0cnMgPSAg YXR0cnNfbDNfMywKPiArfTsKPiArCj4gK3N0YXRpYyBzc2l6ZV90Cj4gK3Nob3dfcmFzdGVyaXpl cl9hbmRfcGl4ZWxfYmFja2VuZF9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICt7Cj4gKwlyZXR1cm4gc3ByaW50ZihidWYs ICIlZFxuIiwgTUVUUklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhFTF9CQUNLRU5EKTsKPiAr fQo+ICsKPiArc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3Jhc3Rlcml6 ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQgPSB7Cj4gKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAu bW9kZSA9IDA0NDQgfSwKPiArCS5zaG93ID0gc2hvd19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNr ZW5kX2lkLAo+ICsJLnN0b3JlID0gTlVMTCwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyc19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kW10gPSB7Cj4gKwkmZGV2 X2F0dHJfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9pZC5hdHRyLAo+ICsJTlVMTCwKPiAr fTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3Jhc3Rlcml6ZXJf YW5kX3BpeGVsX2JhY2tlbmQgPSB7Cj4gKwkubmFtZSA9ICI2MDVmMzg4Zi0yNGJiLTQ1NWMtODhl My04ZDU3YWUwZDdlOWYiLAo+ICsJLmF0dHJzID0gIGF0dHJzX3Jhc3Rlcml6ZXJfYW5kX3BpeGVs X2JhY2tlbmQsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtzaG93X3NhbXBsZXJfaWQo c3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIg KmJ1ZikKPiArewo+ICsJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURf U0FNUExFUik7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZf YXR0cl9zYW1wbGVyX2lkID0gewo+ICsJLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAw NDQ0IH0sCj4gKwkuc2hvdyA9IHNob3dfc2FtcGxlcl9pZCwKPiArCS5zdG9yZSA9IE5VTEwsCj4g K307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfc2FtcGxlcltdID0gewo+ ICsJJmRldl9hdHRyX3NhbXBsZXJfaWQuYXR0ciwKPiArCU5VTEwsCj4gK307Cj4gKwo+ICtzdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9zYW1wbGVyID0gewo+ICsJLm5hbWUgPSAi MzFkZDE1N2MtYmY0ZS00YmFiLWJmMmItZjVjODE3NGFmMWFmIiwKPiArCS5hdHRycyA9ICBhdHRy c19zYW1wbGVyLAo+ICt9Owo+ICsKPiArc3RhdGljIHNzaXplX3QKPiArc2hvd190ZGxfMV9pZChz dHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAq YnVmKQo+ICt7Cj4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9U RExfMSk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0 cl90ZGxfMV9pZCA9IHsKPiArCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9 LAo+ICsJLnNob3cgPSBzaG93X3RkbF8xX2lkLAo+ICsJLnN0b3JlID0gTlVMTCwKPiArfTsKPiAr Cj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc190ZGxfMVtdID0gewo+ICsJJmRldl9h dHRyX3RkbF8xX2lkLmF0dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdGRsXzEgPSB7Cj4gKwkubmFtZSA9ICIxMDVkYjkyOC01NTQy LTQ2NmItOTEyOC1lMWYzYzkxNDI2Y2IiLAo+ICsJLmF0dHJzID0gIGF0dHJzX3RkbF8xLAo+ICt9 Owo+ICsKPiArc3RhdGljIHNzaXplX3QKPiArc2hvd190ZGxfMl9pZChzdHJ1Y3QgZGV2aWNlICpr ZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICt7Cj4gKwly ZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9URExfMik7Cj4gK30KPiAr Cj4gK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl90ZGxfMl9pZCA9IHsK PiArCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAo+ICsJLnNob3cgPSBz aG93X3RkbF8yX2lkLAo+ICsJLnN0b3JlID0gTlVMTCwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlICphdHRyc190ZGxfMltdID0gewo+ICsJJmRldl9hdHRyX3RkbF8yX2lkLmF0 dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAg Z3JvdXBfdGRsXzIgPSB7Cj4gKwkubmFtZSA9ICIwM2RiOTRkMi1iMzdmLTRjNTgtYTc5MS0wZDIw NjdiMDEzYmIiLAo+ICsJLmF0dHJzID0gIGF0dHJzX3RkbF8yLAo+ICt9Owo+ICsKPiArc3RhdGlj IHNzaXplX3QKPiArc2hvd19jb21wdXRlX2V4dHJhX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiArCXJldHVybiBz cHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhUUkEpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfY29tcHV0ZV9leHRy YV9pZCA9IHsKPiArCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAo+ICsJ LnNob3cgPSBzaG93X2NvbXB1dGVfZXh0cmFfaWQsCj4gKwkuc3RvcmUgPSBOVUxMLAo+ICt9Owo+ ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2NvbXB1dGVfZXh0cmFbXSA9IHsK PiArCSZkZXZfYXR0cl9jb21wdXRlX2V4dHJhX2lkLmF0dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsK PiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfY29tcHV0ZV9leHRyYSA9IHsK PiArCS5uYW1lID0gImFhN2EzZmI5LTIyZmItNDNmZi1hMzJkLTBhYjZjMTNiYmQxNiIsCj4gKwku YXR0cnMgPSAgYXR0cnNfY29tcHV0ZV9leHRyYSwKPiArfTsKPiArCj4gK3N0YXRpYyBzc2l6ZV90 Cj4gK3Nob3dfdm1lX3BpcGVfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiArewo+ICsJcmV0dXJuIHNwcmludGYoYnVmLCAi JWRcbiIsIE1FVFJJQ19TRVRfSURfVk1FX1BJUEUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0 IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfdm1lX3BpcGVfaWQgPSB7Cj4gKwkuYXR0ciA9IHsg Lm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKPiArCS5zaG93ID0gc2hvd192bWVfcGlwZV9p ZCwKPiArCS5zdG9yZSA9IE5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cnNfdm1lX3BpcGVbXSA9IHsKPiArCSZkZXZfYXR0cl92bWVfcGlwZV9pZC5hdHRyLAo+ ICsJTlVMTCwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3Vw X3ZtZV9waXBlID0gewo+ICsJLm5hbWUgPSAiMzk4YTQyNjgtZWY2Zi00ZmZjLWI1NWYtM2M3YjUz NjNjZTYxIiwKPiArCS5hdHRycyA9ICBhdHRyc192bWVfcGlwZSwKPiArfTsKPiArCj4gK3N0YXRp YyBzc2l6ZV90Cj4gK3Nob3dfdGVzdF9vYV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICt7Cj4gKwlyZXR1cm4gc3ByaW50 ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9URVNUX09BKTsKPiArfQo+ICsKPiArc3RhdGlj IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3Rlc3Rfb2FfaWQgPSB7Cj4gKwkuYXR0 ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKPiArCS5zaG93ID0gc2hvd190ZXN0 X29hX2lkLAo+ICsJLnN0b3JlID0gTlVMTCwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyc190ZXN0X29hW10gPSB7Cj4gKwkmZGV2X2F0dHJfdGVzdF9vYV9pZC5hdHRy LAo+ICsJTlVMTCwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdy b3VwX3Rlc3Rfb2EgPSB7Cj4gKwkubmFtZSA9ICJiYWEzYzdlNC01MmI2LTRiODUtODAxZS00NjVh OTRiNzQ2ZGQiLAo+ICsJLmF0dHJzID0gIGF0dHJzX3Rlc3Rfb2EsCj4gK307Cj4gKwo+ICtpbnQK PiAraTkxNV9wZXJmX3JlZ2lzdGVyX3N5c2ZzX2tibGd0MihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqbXV4X3JlZ3Nb QVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncyldOwo+ICsJaW50IG11eF9sZW5z W0FSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyldOwo+ICsJaW50IHJl dCA9IDA7Cj4gKwo+ICsJaWYgKGdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwg bXV4X3JlZ3MsIG11eF9sZW5zKSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZf cHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfYmFzaWMpOwo+ICsJCWlmIChy ZXQpCj4gKwkJCWdvdG8gZXJyb3JfcmVuZGVyX2Jhc2ljOwo+ICsJfQo+ICsJaWYgKGdldF9jb21w dXRlX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKPiAr CQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfY29tcHV0ZV9iYXNpYyk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBlcnJvcl9jb21w dXRlX2Jhc2ljOwo+ICsJfQo+ICsJaWYgKGdldF9yZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKPiArCQlyZXQgPSBzeXNmc19jcmVh dGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX3BpcGVf cHJvZmlsZSk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBlcnJvcl9yZW5kZXJfcGlwZV9wcm9m aWxlOwo+ICsJfQo+ICsJaWYgKGdldF9tZW1vcnlfcmVhZHNfbXV4X2NvbmZpZyhkZXZfcHJpdiwg bXV4X3JlZ3MsIG11eF9sZW5zKSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZf cHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9tZW1vcnlfcmVhZHMpOwo+ICsJCWlmIChy ZXQpCj4gKwkJCWdvdG8gZXJyb3JfbWVtb3J5X3JlYWRzOwo+ICsJfQo+ICsJaWYgKGdldF9tZW1v cnlfd3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKPiAr CQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfbWVtb3J5X3dyaXRlcyk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBlcnJvcl9tZW1v cnlfd3JpdGVzOwo+ICsJfQo+ICsJaWYgKGdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKPiArCQlyZXQgPSBzeXNmc19jcmVhdGVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRlbmRl ZCk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBlcnJvcl9jb21wdXRlX2V4dGVuZGVkOwo+ICsJ fQo+ICsJaWYgKGdldF9jb21wdXRlX2wzX2NhY2hlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpIHsKPiArCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYt PnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9sM19jYWNoZSk7Cj4gKwkJaWYgKHJl dCkKPiArCQkJZ290byBlcnJvcl9jb21wdXRlX2wzX2NhY2hlOwo+ICsJfQo+ICsJaWYgKGdldF9o ZGNfYW5kX3NmX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKPiAr CQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfaGRjX2FuZF9zZik7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBlcnJvcl9oZGNfYW5k X3NmOwo+ICsJfQo+ICsJaWYgKGdldF9sM18xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdz LCBtdXhfbGVucykpIHsKPiArCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBl cmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMSk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBl cnJvcl9sM18xOwo+ICsJfQo+ICsJaWYgKGdldF9sM18yX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpIHsKPiArCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3By aXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMik7Cj4gKwkJaWYgKHJldCkKPiArCQkJ Z290byBlcnJvcl9sM18yOwo+ICsJfQo+ICsJaWYgKGdldF9sM18zX211eF9jb25maWcoZGV2X3By aXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKPiArCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMyk7Cj4gKwkJaWYgKHJldCkK PiArCQkJZ290byBlcnJvcl9sM18zOwo+ICsJfQo+ICsJaWYgKGdldF9yYXN0ZXJpemVyX2FuZF9w aXhlbF9iYWNrZW5kX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsK PiArCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7Cj4gKwkJaWYgKHJldCkKPiAr CQkJZ290byBlcnJvcl9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOwo+ICsJfQo+ICsJaWYg KGdldF9zYW1wbGVyX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsK PiArCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfc2FtcGxlcik7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBlcnJvcl9zYW1wbGVy Owo+ICsJfQo+ICsJaWYgKGdldF90ZGxfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywg bXV4X2xlbnMpKSB7Cj4gKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJm Lm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8xKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVy cm9yX3RkbF8xOwo+ICsJfQo+ICsJaWYgKGdldF90ZGxfMl9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKSB7Cj4gKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8yKTsKPiArCQlpZiAocmV0KQo+ICsJ CQlnb3RvIGVycm9yX3RkbF8yOwo+ICsJfQo+ICsJaWYgKGdldF9jb21wdXRlX2V4dHJhX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKPiArCQlyZXQgPSBzeXNmc19j cmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9l eHRyYSk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBlcnJvcl9jb21wdXRlX2V4dHJhOwo+ICsJ fQo+ICsJaWYgKGdldF92bWVfcGlwZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKSB7Cj4gKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1l dHJpY3Nfa29iaiwgJmdyb3VwX3ZtZV9waXBlKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVy cm9yX3ZtZV9waXBlOwo+ICsJfQo+ICsJaWYgKGdldF90ZXN0X29hX211eF9jb25maWcoZGV2X3By aXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKPiArCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGVzdF9vYSk7Cj4gKwkJaWYgKHJl dCkKPiArCQkJZ290byBlcnJvcl90ZXN0X29hOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICsK PiArZXJyb3JfdGVzdF9vYToKPiArCWlmIChnZXRfdm1lX3BpcGVfbXV4X2NvbmZpZyhkZXZfcHJp diwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKPiArCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYt PnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdm1lX3BpcGUpOwo+ICtlcnJvcl92bWVfcGlwZToK PiArCWlmIChnZXRfY29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywg bXV4X2xlbnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF9jb21wdXRlX2V4dHJhKTsKPiArZXJyb3JfY29tcHV0ZV9leHRyYToKPiAr CWlmIChnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkK PiArCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfdGRsXzIpOwo+ICtlcnJvcl90ZGxfMjoKPiArCWlmIChnZXRfdGRsXzFfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKPiArCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2 X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzEpOwo+ICtlcnJvcl90ZGxfMToK PiArCWlmIChnZXRfc2FtcGxlcl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF9zYW1wbGVyKTsKPiArZXJyb3Jfc2FtcGxlcjoKPiArCWlmIChnZXRfcmFzdGVyaXpl cl9hbmRfcGl4ZWxfYmFja2VuZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKPiArZXJyb3JfcmFzdGVyaXpl cl9hbmRfcGl4ZWxfYmFja2VuZDoKPiArCWlmIChnZXRfbDNfM19tdXhfY29uZmlnKGRldl9wcml2 LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+ cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18zKTsKPiArZXJyb3JfbDNfMzoKPiArCWlmIChn ZXRfbDNfMl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5 c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18y KTsKPiArZXJyb3JfbDNfMjoKPiArCWlmIChnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVy Zi5tZXRyaWNzX2tvYmosICZncm91cF9sM18xKTsKPiArZXJyb3JfbDNfMToKPiArCWlmIChnZXRf aGRjX2FuZF9zZl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJ CXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9o ZGNfYW5kX3NmKTsKPiArZXJyb3JfaGRjX2FuZF9zZjoKPiArCWlmIChnZXRfY29tcHV0ZV9sM19j YWNoZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2Zz X3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRl X2wzX2NhY2hlKTsKPiArZXJyb3JfY29tcHV0ZV9sM19jYWNoZToKPiArCWlmIChnZXRfY29tcHV0 ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJ CXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9j b21wdXRlX2V4dGVuZGVkKTsKPiArZXJyb3JfY29tcHV0ZV9leHRlbmRlZDoKPiArCWlmIChnZXRf bWVtb3J5X3dyaXRlc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91 cF9tZW1vcnlfd3JpdGVzKTsKPiArZXJyb3JfbWVtb3J5X3dyaXRlczoKPiArCWlmIChnZXRfbWVt b3J5X3JlYWRzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJ c3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21l bW9yeV9yZWFkcyk7Cj4gK2Vycm9yX21lbW9yeV9yZWFkczoKPiArCWlmIChnZXRfcmVuZGVyX3Bp cGVfcHJvZmlsZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJ CXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9y ZW5kZXJfcGlwZV9wcm9maWxlKTsKPiArZXJyb3JfcmVuZGVyX3BpcGVfcHJvZmlsZToKPiArCWlm IChnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF9jb21wdXRlX2Jhc2ljKTsKPiArZXJyb3JfY29tcHV0ZV9iYXNpYzoKPiArCWlmIChn ZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykp Cj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdy b3VwX3JlbmRlcl9iYXNpYyk7Cj4gK2Vycm9yX3JlbmRlcl9iYXNpYzoKPiArCXJldHVybiByZXQ7 Cj4gK30KPiArCj4gK3ZvaWQKPiAraTkxNV9wZXJmX3VucmVnaXN0ZXJfc3lzZnNfa2JsZ3QyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnICptdXhfcmVnc1tBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz KV07Cj4gKwlpbnQgbXV4X2xlbnNbQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn c19sZW5zKV07Cj4gKwo+ICsJaWYgKGdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJp diwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKPiArCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYt PnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX2Jhc2ljKTsKPiArCWlmIChnZXRfY29t cHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJ CXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9j b21wdXRlX2Jhc2ljKTsKPiArCWlmIChnZXRfcmVuZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmln KGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfcGlwZV9wcm9maWxlKTsK PiArCWlmIChnZXRfbWVtb3J5X3JlYWRzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBt dXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX21lbW9yeV9yZWFkcyk7Cj4gKwlpZiAoZ2V0X21lbW9yeV93cml0ZXNfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKPiArCQlzeXNmc19yZW1vdmVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3dyaXRlcyk7 Cj4gKwlpZiAoZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkKPiArCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCk7Cj4gKwlpZiAoZ2V0X2NvbXB1dGVf bDNfY2FjaGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKPiArCQlz eXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29t cHV0ZV9sM19jYWNoZSk7Cj4gKwlpZiAoZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhkZXZfcHJp diwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKPiArCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYt PnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfaGRjX2FuZF9zZik7Cj4gKwlpZiAoZ2V0X2wzXzFf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKPiArCQlzeXNmc19yZW1v dmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMSk7Cj4gKwlp ZiAoZ2V0X2wzXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKPiAr CQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf bDNfMik7Cj4gKwlpZiAoZ2V0X2wzXzNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11 eF9sZW5zKSkKPiArCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19r b2JqLCAmZ3JvdXBfbDNfMyk7Cj4gKwlpZiAoZ2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tl bmRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKPiArCQlzeXNmc19y ZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmFzdGVyaXpl cl9hbmRfcGl4ZWxfYmFja2VuZCk7Cj4gKwlpZiAoZ2V0X3NhbXBsZXJfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKPiArCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3By aXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfc2FtcGxlcik7Cj4gKwlpZiAoZ2V0X3RkbF8x X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNfcmVt b3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8xKTsKPiAr CWlmIChnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkK PiArCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfdGRsXzIpOwo+ICsJaWYgKGdldF9jb21wdXRlX2V4dHJhX211eF9jb25maWcoZGV2X3ByaXYs IG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0cmEpOwo+ICsJaWYgKGdldF92bWVf cGlwZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2Zz X3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF92bWVfcGlw ZSk7Cj4gKwlpZiAoZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11 eF9sZW5zKSkKPiArCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19r b2JqLCAmZ3JvdXBfdGVzdF9vYSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9vYV9rYmxndDIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2Js Z3QyLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMWQ2NGM3 NmJiODI1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf b2Ffa2JsZ3QyLmgKPiBAQCAtMCwwICsxLDM4IEBACj4gKy8qCj4gKyAqIEF1dG9nZW5lcmF0ZWQg ZmlsZSwgRE8gTk9UIEVESVQgbWFudWFsbHkhCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAx NSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4g KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsg Ki8KPiArCj4gKyNpZm5kZWYgX19JOTE1X09BX0tCTEdUMl9IX18KPiArI2RlZmluZSBfX0k5MTVf T0FfS0JMR1QyX0hfXwo+ICsKPiArZXh0ZXJuIGludCBpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNf c2V0c19rYmxndDI7Cj4gKwo+ICtleHRlcm4gaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRf a2JsZ3QyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gKwo+ICtleHRlcm4g aW50IGk5MTVfcGVyZl9yZWdpc3Rlcl9zeXNmc19rYmxndDIoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKPiArCj4gK2V4dGVybiB2b2lkIGk5MTVfcGVyZl91bnJlZ2lzdGVyX3N5 c2ZzX2tibGd0MihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICsKPiArI2Vu ZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2tibGd0My5jCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjBlODE2MTNkZDBkZQo+IC0tLSAvZGV2L251bGwK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2tibGd0My5jCj4gQEAgLTAsMCAr MSwzMDM4IEBACj4gKy8qCj4gKyAqIEF1dG9nZW5lcmF0ZWQgZmlsZSwgRE8gTk9UIEVESVQgbWFu dWFsbHkhCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgo+ ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUK PiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJh Z3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP Ugo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElO R1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxs aW51eC9zeXNmcy5oPgo+ICsKPiArI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKyNpbmNsdWRlICJp OTE1X29hX2tibGd0My5oIgo+ICsKPiArZW51bSBtZXRyaWNfc2V0X2lkIHsKPiArCU1FVFJJQ19T RVRfSURfUkVOREVSX0JBU0lDID0gMSwKPiArCU1FVFJJQ19TRVRfSURfQ09NUFVURV9CQVNJQywK PiArCU1FVFJJQ19TRVRfSURfUkVOREVSX1BJUEVfUFJPRklMRSwKPiArCU1FVFJJQ19TRVRfSURf TUVNT1JZX1JFQURTLAo+ICsJTUVUUklDX1NFVF9JRF9NRU1PUllfV1JJVEVTLAo+ICsJTUVUUklD X1NFVF9JRF9DT01QVVRFX0VYVEVOREVELAo+ICsJTUVUUklDX1NFVF9JRF9DT01QVVRFX0wzX0NB Q0hFLAo+ICsJTUVUUklDX1NFVF9JRF9IRENfQU5EX1NGLAo+ICsJTUVUUklDX1NFVF9JRF9MM18x LAo+ICsJTUVUUklDX1NFVF9JRF9MM18yLAo+ICsJTUVUUklDX1NFVF9JRF9MM18zLAo+ICsJTUVU UklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhFTF9CQUNLRU5ELAo+ICsJTUVUUklDX1NFVF9J RF9TQU1QTEVSLAo+ICsJTUVUUklDX1NFVF9JRF9URExfMSwKPiArCU1FVFJJQ19TRVRfSURfVERM XzIsCj4gKwlNRVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhUUkEsCj4gKwlNRVRSSUNfU0VUX0lEX1ZN RV9QSVBFLAo+ICsJTUVUUklDX1NFVF9JRF9URVNUX09BLAo+ICt9Owo+ICsKPiAraW50IGk5MTVf b2Ffbl9idWlsdGluX21ldHJpY19zZXRzX2tibGd0MyA9IDE4Owo+ICsKPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpY1tdID0gewo+ ICsJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcxNCksIDB4 MDA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1J TygweDI3MjQpLCAweDAwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAg fSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9j b25maWdfcmVuZGVyX2Jhc2ljW10gPSB7Cj4gKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQg fSwKPiArCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAo+ICsJeyBfTU1JTygweGU2NTgp LCAweDAwMDEyMDExIH0sCj4gKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKPiArCXsg X01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAo+ICsJeyBfTU1JTygweGU1NWMpLCAweDAwMDUz MDUyIH0sCj4gKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9 IHsKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNjZjMDFlMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDEyMTcwMjgwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTIzNzAyODAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgxNmVjMDFlMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDExOTMw MzE3IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MzAzZGYgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgzZjkwMDAwMyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFhNGUwMzgwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGE2YzAwNTMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgx MDZjMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFjNmMwMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MGExYjQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAwMSB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMmYxMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDQyZjEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRjNDAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDBhNGM4NDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAw MDIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkMjAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDA2MGQ4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZGEwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwYTBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBj MGYwNDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjY2MDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgxMDBmMDAwMSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMmM4MDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTYyY2EyMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwNjJkODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4MmQ4MDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDAxMzMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODEzMzAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMTcwMDIwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDgxNzAwMjEgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDE3MDAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDA2MzNjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgz M2MwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM3MDgwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDA4MzcwODQwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAzNzAwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYWNlMDIwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDBhZWM1MzAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTBlYzAwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgxY2VjMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhOWI4MDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM5YzAwMDIgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwY2NjMDAwMiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhOGQ4MDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTA4ZjAwMDEgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNmFj ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBkOTMzMDMxIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGY5MzNlM2YgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMTkzM2QwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDAzOTMwNzNjIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDU5MzAwMGUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkzMDAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDE5OTMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzAwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkwMDE1NyB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDFmOTAwMTU4IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgyYjkwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDJkOTA4 MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MmY5MDgwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgzMTkwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE1OTA4MDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgx OTkwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFiOTA4MDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MTE5MDAwM2YgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMjI0MCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQxOTAwYzAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4NTU5MDAyNDIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDA4NCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDQ3OTAxNDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDIy MjAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMGM2MCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDM3OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU5 OTAwMDAyIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDBjNjMgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHg1MzkwMjIyMiB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGludAo+ICtnZXRfcmVu ZGVyX2Jhc2ljX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICsJCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKPiArCQkJICAgIGludCAq bGVucykKPiArewo+ICsJaW50IG4gPSAwOwo+ICsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwo+ICsJQlVJTERfQlVHX09OKEFSUkFZ X1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKPiArCj4gKwlyZWdz W25dID0gbXV4X2NvbmZpZ19yZW5kZXJfYmFzaWM7Cj4gKwlsZW5zW25dID0gQVJSQVlfU0laRSht dXhfY29uZmlnX3JlbmRlcl9iYXNpYyk7Cj4gKwluKys7Cj4gKwo+ICsJcmV0dXJuIG47Cj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19j b21wdXRlX2Jhc2ljW10gPSB7Cj4gKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKPiAr CXsgX01NSU8oMHgyNzE0KSwgMHgwMDgwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MjApLCAweDAw MDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKPiArCXsgX01NSU8o MHgyNzQwKSwgMHgwMDAwMDAwMCB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2Jhc2ljW10gPSB7Cj4gKwl7IF9NTUlP KDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKPiArCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAwMDAwMyB9 LAo+ICsJeyBfTU1JTygweGU2NTgpLCAweDAwMDAyMDAxIH0sCj4gKwl7IF9NTUlPKDB4ZTc1OCks IDB4MDA3NzgwMDggfSwKPiArCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA4ODA3OCB9LAo+ICsJeyBf TU1JTygweGU1NWMpLCAweDAwODA4NzA4IH0sCj4gKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDBhMDg5 MDggfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2Nv bmZpZ19jb21wdXRlX2Jhc2ljW10gPSB7Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA0ZjAwZTAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMjRmMWMwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDEwNmMwMGUwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDY4MDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgzZjkwMDAwMyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwNGU4 MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWE0ZTA4MjAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgxYzRlMDAwMiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2NGYwOTAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDg0ZjAwMzIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw YTRmMTg5MSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjNGYwZTAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MGU0ZjAwM2MgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRmMGQ4MCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyNGYwMDNiIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDA2YzAwMDIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODZjMDEwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDBjNmMwMDBjIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU2YzBi MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxODZjMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDFjNmMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWU2YzAwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwMDFiNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4 MWI4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMxYjQwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwZTFiODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEwMWM4MDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWExYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgxYzFjMDAyNCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2NWI4MDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDg1YjQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTViYzAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjNWI4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MGU1YjQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDViODAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDAyNWI0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWE1 YzYwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYzVjMDAxYiB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDEyNWM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQ1YzgwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDBhNGMyMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAyMDggfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwMDBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MGQ4MDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMGRhMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBk MjAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMGY1NDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGUwZjU1MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDE1NSB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGUyY2MwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNjJjZmIwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDE4MmMwMGJlIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIyY2MwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDE5OTAwMTU3IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDAxNTggfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgxZDkwMDEwNSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFmOTAw MTAzIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgxMTkwMGZmZiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDA4MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1 NTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwODIxIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4NDc5MDA4MDIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwODAyIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MzM5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDAwMiB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA0 MjIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwNDQ0NCB9LAo+ICt9Owo+ICsKPiArc3Rh dGljIGludAo+ICtnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiArCQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipy ZWdzLAo+ICsJCQkgICAgIGludCAqbGVucykKPiArewo+ICsJaW50IG4gPSAwOwo+ICsKPiArCUJV SUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwo+ ICsJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVu cykgPCAxKTsKPiArCj4gKwlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2Jhc2ljOwo+ICsJ bGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19jb21wdXRlX2Jhc2ljKTsKPiArCW4rKzsK PiArCj4gKwlyZXR1cm4gbjsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyBiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsKPiArCXsgX01N SU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAw IH0sCj4gKwl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzEw KSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2ZmZWEgfSwKPiArCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAw N2ZmYyB9LAo+ICsJeyBfTU1JTygweDI3NzgpLCAweDAwMDdhZmZhIH0sCj4gKwl7IF9NTUlPKDB4 Mjc3YyksIDB4MDAwMGY1ZmQgfSwKPiArCXsgX01NSU8oMHgyNzgwKSwgMHgwMDA3OWZmYSB9LAo+ ICsJeyBfTU1JTygweDI3ODQpLCAweDAwMDBmM2ZiIH0sCj4gKwl7IF9NTUlPKDB4Mjc4OCksIDB4 MDAwN2JmN2EgfSwKPiArCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZjdlNyB9LAo+ICsJeyBfTU1J TygweDI3OTApLCAweDAwMDdmZWZhIH0sCj4gKwl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGY3Y2Yg fSwKPiArCXsgX01NSU8oMHgyNzk4KSwgMHgwMDA3N2ZmYSB9LAo+ICsJeyBfTU1JTygweDI3OWMp LCAweDAwMDBlZmRmIH0sCj4gKwl7IF9NTUlPKDB4MjdhMCksIDB4MDAwNmZmZmEgfSwKPiArCXsg X01NSU8oMHgyN2E0KSwgMHgwMDAwY2ZiZiB9LAo+ICsJeyBfTU1JTygweDI3YTgpLCAweDAwMDNm ZmZhIH0sCj4gKwl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMDVmN2YgfSwKPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfcmVuZGVyX3BpcGVf cHJvZmlsZVtdID0gewo+ICsJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCj4gKwl7IF9N TUlPKDB4ZTU1OCksIDB4MDAwMTUwMTQgfSwKPiArCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAyNTAy NCB9LAo+ICsJeyBfTU1JTygweGU3NTgpLCAweDAwMDM1MDM0IH0sCj4gKwl7IF9NTUlPKDB4ZTQ1 YyksIDB4MDAwNDUwNDQgfSwKPiArCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1NTA1NCB9LAo+ICsJ eyBfTU1JTygweGU2NWMpLCAweDAwMDY1MDY0IH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZVtdID0gewo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMGUwMDFmIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGEwZjAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDExNjgwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDE3OGEwM2UwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MjRjMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgzMDAyMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDEzODQwMDIwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4NTAwMTkgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgxMTg2MDAwNyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAxODcw YzQwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTc4ODAwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjJmNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDQwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw NDBkNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MDIwZTU0MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBlMDAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4MGYwMDQwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDAwZjAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDBlMGYwMDQwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMyYzgw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjEwNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDA2MTEwMDEyIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMzEwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwMTg5ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBk ODkwMTAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDM4OTgwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwOTgwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBiODA4MDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MGMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwZjhhMDA3NSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFkOGEwMDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MTE4YTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYjhhNDAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEzOGE4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWQ4MWEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNTgxODAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDE3ODE4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGI4 MjAwMzAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgyODAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDBkODI0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGY4MjgwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgyNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDBkODMwMDAzIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MzAwMGMgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwOTgzMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAzODM4MDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwYjg0MDk4MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAzODQ0ZDgwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTE4NDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg0 ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA5ODUwMDgwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDM4NTAwMDMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg1MDAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDA3ODYwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGY4NjA0MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg3MDAzMiB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDAxODg4MDUyIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4ODAwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg4NDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDFiOTMxMDAxIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MzAwMDEgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgxOTkzNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFiOTU4 MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5NTAwOTQgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgxOTk1ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA5ZTU4MDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGJlNTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw M2U1YzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA1OTJjMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MGI5MjgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZDkyNDAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBmOTI0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MTE5MjgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkyYzAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDA5OTI0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDE5ODUw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNzk4ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDA5OTgxMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGI5ODIwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwZDk4MjAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBm OTg5MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDU5ODIwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgxMzkwNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDIxOTA0MDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MjM5MDQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgyNTkwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDI3OTA0MDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4Mjk5MDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwNDAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDJmOTA0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MzE5MDQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwNDAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDE3OTA4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5 MDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwNDAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDExOTBjMDgwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDQ0MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDU1OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDA0MDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHg0NzkwMGMyMSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU3OTAwNDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDAwNDIgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgzNzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwMjQgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkw MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwODQxIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4NTM5MDA0MDAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQKPiArZ2V0X3JlbmRl cl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gKwkJCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAo+ICsJCQkJICAg aW50ICpsZW5zKQo+ICt7Cj4gKwlpbnQgbiA9IDA7Cj4gKwo+ICsJQlVJTERfQlVHX09OKEFSUkFZ X1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Cj4gKwlCVUlMRF9CVUdfT04o QVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwo+ICsKPiAr CXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGU7Cj4gKwlsZW5zW25dID0g QVJSQVlfU0laRShtdXhfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwo+ICsJbisrOwo+ICsK PiArCXJldHVybiBuOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IGJfY291bnRlcl9jb25maWdfbWVtb3J5X3JlYWRzW10gPSB7Cj4gKwl7IF9NTUlPKDB4MjcyYyks IDB4ZmZmZmZmZmYgfSwKPiArCXsgX01NSU8oMHgyNzI4KSwgMHhmZmZmZmZmZiB9LAo+ICsJeyBf TU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAw MDAgfSwKPiArCXsgX01NSU8oMHgyNzFjKSwgMHhmZmZmZmZmZiB9LAo+ICsJeyBfTU1JTygweDI3 MTgpLCAweGZmZmZmZmZmIH0sCj4gKwl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKPiAr CXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3NGMpLCAweDg2 NTQzMjEwIH0sCj4gKwl7IF9NTUlPKDB4Mjc0OCksIDB4ODY1NDMyMTAgfSwKPiArCXsgX01NSU8o MHgyNzQ0KSwgMHgwMDAwNjY2NyB9LAo+ICsJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0s Cj4gKwl7IF9NTUlPKDB4Mjc1YyksIDB4ODY1NDMyMTAgfSwKPiArCXsgX01NSU8oMHgyNzU4KSwg MHg4NjU0MzIxMCB9LAo+ICsJeyBfTU1JTygweDI3NTQpLCAweDAwMDA2NDY1IH0sCj4gKwl7IF9N TUlPKDB4Mjc1MCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzcwKSwgMHgwMDA3Zjgx YSB9LAo+ICsJeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZTAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc3 OCksIDB4MDAwN2Y4MmEgfSwKPiArCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZmUwMCB9LAo+ICsJ eyBfTU1JTygweDI3ODApLCAweDAwMDdmODcyIH0sCj4gKwl7IF9NTUlPKDB4Mjc4NCksIDB4MDAw MGZlMDAgfSwKPiArCXsgX01NSU8oMHgyNzg4KSwgMHgwMDA3ZjhiYSB9LAo+ICsJeyBfTU1JTygw eDI3OGMpLCAweDAwMDBmZTAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2Y4N2EgfSwK PiArCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmUwMCB9LAo+ICsJeyBfTU1JTygweDI3OTgpLCAw eDAwMDdmOGVhIH0sCj4gKwl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZlMDAgfSwKPiArCXsgX01N SU8oMHgyN2EwKSwgMHgwMDA3ZjhlMiB9LAo+ICsJeyBfTU1JTygweDI3YTQpLCAweDAwMDBmZTAw IH0sCj4gKwl7IF9NTUlPKDB4MjdhOCksIDB4MDAwN2Y4ZjIgfSwKPiArCXsgX01NSU8oMHgyN2Fj KSwgMHgwMDAwZmUwMCB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyBmbGV4X2V1X2NvbmZpZ19tZW1vcnlfcmVhZHNbXSA9IHsKPiArCXsgX01NSU8oMHhlNDU4 KSwgMHgwMDAwNTAwNCB9LAo+ICsJeyBfTU1JTygweGU1NTgpLCAweDAwMDE1MDE0IH0sCj4gKwl7 IF9NTUlPKDB4ZTY1OCksIDB4MDAwMjUwMjQgfSwKPiArCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAz NTAzNCB9LAo+ICsJeyBfTU1JTygweGU0NWMpLCAweDAwMDQ1MDQ0IH0sCj4gKwl7IF9NTUlPKDB4 ZTU1YyksIDB4MDAwNTUwNTQgfSwKPiArCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2NCB9LAo+ ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX21l bW9yeV9yZWFkc1tdID0gewo+ICsJeyBfTU1JTygweDk4ODgpLCAweDExODEwYzAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTM4MTAwMWEgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkw NjgwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDNmOTAwMDY0IH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDM4MTEzMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgxMWIxMiB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDA3ODEwMDFhIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MWY4MTAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgxMDAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDE5ODEwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MTAwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgxMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDFiOTMwMDU1IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDNlNTgwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwNWU1YzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA3ZTU0 MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDAxNTAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgyMTkwMDE1MSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDIzOTAwMTUyIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MjU5MDAxNTMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgy NzkwMDE1NCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDI5OTAwMTU1IH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MmI5MDAxNTYgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwMDE1NyB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDJmOTAwMTVmIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MzE5MDAxMDUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwMDEwMyB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDE3OTAwMTAxIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDFiOTA4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDgwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEx OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHg0MTkwMGM2MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDBjMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHg0NzkwMGM2MyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4NDk5MDBjNjMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDYzIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4NTk5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMyB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50Cj4g K2dldF9tZW1vcnlfcmVhZHNfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gKwkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAo+ICsJCQkg ICAgaW50ICpsZW5zKQo+ICt7Cj4gKwlpbnQgbiA9IDA7Cj4gKwo+ICsJQlVJTERfQlVHX09OKEFS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Cj4gKwlCVUlMRF9CVUdf T04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwo+ICsK PiArCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX21lbW9yeV9yZWFkczsKPiArCWxlbnNbbl0gPSBBUlJB WV9TSVpFKG11eF9jb25maWdfbWVtb3J5X3JlYWRzKTsKPiArCW4rKzsKPiArCj4gKwlyZXR1cm4g bjsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJf Y29uZmlnX21lbW9yeV93cml0ZXNbXSA9IHsKPiArCXsgX01NSU8oMHgyNzJjKSwgMHhmZmZmZmZm ZiB9LAo+ICsJeyBfTU1JTygweDI3MjgpLCAweGZmZmZmZmZmIH0sCj4gKwl7IF9NTUlPKDB4Mjcy NCksIDB4ZjA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAo+ICsJ eyBfTU1JTygweDI3MWMpLCAweGZmZmZmZmZmIH0sCj4gKwl7IF9NTUlPKDB4MjcxOCksIDB4ZmZm ZmZmZmYgfSwKPiArCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAo+ICsJeyBfTU1JTygw eDI3MTApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc0YyksIDB4ODY1NDMyMTAgfSwK PiArCXsgX01NSU8oMHgyNzQ4KSwgMHg4NjU0MzIxMCB9LAo+ICsJeyBfTU1JTygweDI3NDQpLCAw eDAwMDA2NjY3IH0sCj4gKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01N SU8oMHgyNzVjKSwgMHg4NjU0MzIxMCB9LAo+ICsJeyBfTU1JTygweDI3NTgpLCAweDg2NTQzMjEw IH0sCj4gKwl7IF9NTUlPKDB4Mjc1NCksIDB4MDAwMDY0NjUgfSwKPiArCXsgX01NSU8oMHgyNzUw KSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3NzApLCAweDAwMDdmODFhIH0sCj4gKwl7 IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZlMDAgfSwKPiArCXsgX01NSU8oMHgyNzc4KSwgMHgwMDA3 ZjgyYSB9LAo+ICsJeyBfTU1JTygweDI3N2MpLCAweDAwMDBmZTAwIH0sCj4gKwl7IF9NTUlPKDB4 Mjc4MCksIDB4MDAwN2Y4MjIgfSwKPiArCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwZmUwMCB9LAo+ ICsJeyBfTU1JTygweDI3ODgpLCAweDAwMDdmOGJhIH0sCj4gKwl7IF9NTUlPKDB4Mjc4YyksIDB4 MDAwMGZlMDAgfSwKPiArCXsgX01NSU8oMHgyNzkwKSwgMHgwMDA3Zjg3YSB9LAo+ICsJeyBfTU1J TygweDI3OTQpLCAweDAwMDBmZTAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2Y4ZWEg fSwKPiArCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmUwMCB9LAo+ICsJeyBfTU1JTygweDI3YTAp LCAweDAwMDdmOGUyIH0sCj4gKwl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGZlMDAgfSwKPiArCXsg X01NSU8oMHgyN2E4KSwgMHgwMDA3ZjhmMiB9LAo+ICsJeyBfTU1JTygweDI3YWMpLCAweDAwMDBm ZTAwIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhf ZXVfY29uZmlnX21lbW9yeV93cml0ZXNbXSA9IHsKPiArCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAw NTAwNCB9LAo+ICsJeyBfTU1JTygweGU1NTgpLCAweDAwMDE1MDE0IH0sCj4gKwl7IF9NTUlPKDB4 ZTY1OCksIDB4MDAwMjUwMjQgfSwKPiArCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAzNTAzNCB9LAo+ ICsJeyBfTU1JTygweGU0NWMpLCAweDAwMDQ1MDQ0IH0sCj4gKwl7IF9NTUlPKDB4ZTU1YyksIDB4 MDAwNTUwNTQgfSwKPiArCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2NCB9LAo+ICt9Owo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX21lbW9yeV93cml0 ZXNbXSA9IHsKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgxMGMwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDEzODEwMDFhIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDY4MDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgzZjkwMTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDAzODExMzAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MTFiMTIgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwNzgxMDAxYSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFmODEwMDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MTAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgxOTgxMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFiODEwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MWQ4MTAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkz MDA1NSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAzZTU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDVlNWMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwN2U1NDAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDEzOTAwMTYwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MjE5MDAxNjEgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgyMzkwMDE2MiB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDI1OTAwMTYzIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4Mjc5MDAxNjQg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgyOTkwMDE2NSB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDJiOTAwMTY2IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDAxNjcgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgyZjkwMDE1MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDMxOTAw MTA1IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDAxMDMgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgxNzkwMDEwMSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgx YjkwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFkOTA4MDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MWY5MDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMDAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4NDE5MDBjNjAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDQ1OTAwYzAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDBj NjMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDQ5OTAwYzYzIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU5 OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDMgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHg1MzkwMDAwMCB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGludAo+ICtnZXRfbWVt b3J5X3dyaXRlc19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiArCQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAo+ICsJCQkgICAgIGlu dCAqbGVucykKPiArewo+ICsJaW50IG4gPSAwOwo+ICsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9T SVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwo+ICsJQlVJTERfQlVHX09OKEFS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKPiArCj4gKwly ZWdzW25dID0gbXV4X2NvbmZpZ19tZW1vcnlfd3JpdGVzOwo+ICsJbGVuc1tuXSA9IEFSUkFZX1NJ WkUobXV4X2NvbmZpZ19tZW1vcnlfd3JpdGVzKTsKPiArCW4rKzsKPiArCj4gKwlyZXR1cm4gbjsK PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29u ZmlnX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKPiArCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAw MCB9LAo+ICsJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjcx NCksIDB4ZjA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAo+ICsJ eyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAw N2ZjMmEgfSwKPiArCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwYmYwMCB9LAo+ICsJeyBfTU1JTygw eDI3NzgpLCAweDAwMDdmYzZhIH0sCj4gKwl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGJmMDAgfSwK PiArCXsgX01NSU8oMHgyNzgwKSwgMHgwMDA3ZmM5MiB9LAo+ICsJeyBfTU1JTygweDI3ODQpLCAw eDAwMDBiZjAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2ZjYTIgfSwKPiArCXsgX01N SU8oMHgyNzhjKSwgMHgwMDAwYmYwMCB9LAo+ICsJeyBfTU1JTygweDI3OTApLCAweDAwMDdmYzMy IH0sCj4gKwl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGJmMDAgfSwKPiArCXsgX01NSU8oMHgyNzk4 KSwgMHgwMDA3ZmM5YSB9LAo+ICsJeyBfTU1JTygweDI3OWMpLCAweDAwMDBiZjAwIH0sCj4gKwl7 IF9NTUlPKDB4MjdhMCksIDB4MDAwN2ZlNmEgfSwKPiArCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAw YmYwMCB9LAo+ICsJeyBfTU1JTygweDI3YTgpLCAweDAwMDdmZTdhIH0sCj4gKwl7IF9NTUlPKDB4 MjdhYyksIDB4MDAwMGJmMDAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29tcHV0ZV9leHRlbmRlZFtdID0gewo+ICsJeyBfTU1J TygweGU0NTgpLCAweDAwMDA1MDA0IH0sCj4gKwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDAwMDMg fSwKPiArCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAwMjAwMSB9LAo+ICsJeyBfTU1JTygweGU3NTgp LCAweDAwNzc4MDA4IH0sCj4gKwl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwODgwNzggfSwKPiArCXsg X01NSU8oMHhlNTVjKSwgMHgwMDgwODcwOCB9LAo+ICsJeyBfTU1JTygweGU2NWMpLCAweDAwYTA4 OTA4IH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9j b25maWdfY29tcHV0ZV9leHRlbmRlZFtdID0gewo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEwNmMw MGUwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYzgxNjAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgxNjFjODAxNSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE4MWMwMTIwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw ZTRlODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE4NGU4MDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MWE0ZWFhYTAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYzRlMDAwMiB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyNGU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDQ0ZTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlODAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDA4NGU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTZjMGIwMSB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDAwNmMwMjAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI2YzAwMGMgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFl NmMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWE2YzAwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwZTFiYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMWI4MDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIxYmMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwMDFjMDA0MSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MWM0MjAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDgxYzQ0NDMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTFjNDY0 NSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMWM3NjQ3IH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDQxYzczNTcgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAzMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDEwMWMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWEx YzAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMjFjODAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDAwNGM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0Y2FhMmEgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRjMDJhYSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDA4NGNhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZGEwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwNjBkODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4MGRhMDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBk YTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMGY1NDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGUwZjU1MTUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDE1NSB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGUyYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNjJjYWEwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDE4MmMwMGFhIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIyYzgwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDA2MmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDExOTA3 ZmZmIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHg0MTkwMDA0MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDA4MDIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0 NzkwMDg0MiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4NDk5MDA4NDIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4NGI5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDQzOTAwODAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAw MDAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQKPiArZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4 X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQljb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAo+ICsJCQkJaW50ICpsZW5zKQo+ICt7Cj4gKwlpbnQg biA9IDA7Cj4gKwo+ICsJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3MpIDwgMSk7Cj4gKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwo+ICsKPiArCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2Nv bXB1dGVfZXh0ZW5kZWQ7Cj4gKwlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2NvbXB1 dGVfZXh0ZW5kZWQpOwo+ICsJbisrOwo+ICsKPiArCXJldHVybiBuOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9sM19j YWNoZVtdID0gewo+ICsJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlP KDB4MjcxNCksIDB4MzA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9 LAo+ICsJeyBfTU1JTygweDI3MjQpLCAweDMwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc0MCks IDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzcwKSwgMHgwMDA3ZmZmYSB9LAo+ICsJeyBf TU1JTygweDI3NzQpLCAweDAwMDBmZWZlIH0sCj4gKwl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2Zm ZmEgfSwKPiArCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZmVmZCB9LAo+ICsJeyBfTU1JTygweDI3 OTApLCAweDAwMDdmZmZhIH0sCj4gKwl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZiZWYgfSwKPiAr CXsgX01NSU8oMHgyNzk4KSwgMHgwMDA3ZmZmYSB9LAo+ICsJeyBfTU1JTygweDI3OWMpLCAweDAw MDBmYmRmIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZs ZXhfZXVfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGVbXSA9IHsKPiArCXsgX01NSU8oMHhlNDU4KSwg MHgwMDAwNTAwNCB9LAo+ICsJeyBfTU1JTygweGU1NTgpLCAweDAwMDAwMDAzIH0sCj4gKwl7IF9N TUlPKDB4ZTY1OCksIDB4MDAwMDIwMDEgfSwKPiArCXsgX01NSU8oMHhlNzU4KSwgMHgwMDEwMTEw MCB9LAo+ICsJeyBfTU1JTygweGU0NWMpLCAweDAwMjAxMjAwIH0sCj4gKwl7IF9NTUlPKDB4ZTU1 YyksIDB4MDAzMDEzMDAgfSwKPiArCXsgX01NSU8oMHhlNjVjKSwgMHgwMDQwMTQwMCB9LAo+ICt9 Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2NvbXB1 dGVfbDNfY2FjaGVbXSA9IHsKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNjZjMDc2MCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDE1OTMwMDFlIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5 MDAwMDMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRlODAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDBlNGU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTg0ZTgwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYTRlODAyMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDFjNGUwMDAyIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA2YzAwNTEgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwNjZjNTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4NmM1YzVk IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU2YzVlNWYgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgxMDZjMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE4NmMwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxZTZj MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMWI0MDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDYxYjgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODFiYzAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMWJjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTAxYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFjZTAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDFjMWMwMDMwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0YzgwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMmEwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDBjNGMwMjgwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDIwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwNjBkODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4MGRh MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzBmMDQwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMGYxNTAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZjAxNDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw MDJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMmM4MDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MTYyYzBhMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxODJjMDBhMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAzOTMzMzAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDU5MzAwMzIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkzMDAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDFiOTMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDAx NTcgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwMDE1OCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDM1OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDgwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEx OTAwMzBmIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHg0MTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMjEgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHg0NzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4NTk5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwNDQ0NCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAwIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50Cj4g K2dldF9jb21wdXRlX2wzX2NhY2hlX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICsJCQkJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKPiArCQkJ CWludCAqbGVucykKPiArewo+ICsJaW50IG4gPSAwOwo+ICsKPiArCUJVSUxEX0JVR19PTihBUlJB WV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwo+ICsJQlVJTERfQlVHX09O KEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKPiArCj4g KwlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlOwo+ICsJbGVuc1tuXSA9IEFS UkFZX1NJWkUobXV4X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlKTsKPiArCW4rKzsKPiArCj4gKwly ZXR1cm4gbjsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2Nv dW50ZXJfY29uZmlnX2hkY19hbmRfc2ZbXSA9IHsKPiArCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAw MDAwMCB9LAo+ICsJeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 MjcxMCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzE0KSwgMHgxMDgwMDAwMCB9LAo+ ICsJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcyMCksIDB4 MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAo+ICsJeyBfTU1J TygweDI3NzApLCAweDAwMDAwMDAyIH0sCj4gKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZkZmYg fSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9j b25maWdfaGRjX2FuZF9zZltdID0gewo+ICsJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0s Cj4gKwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKPiArCXsgX01NSU8oMHhlNjU4KSwg MHgwMDAxMjAxMSB9LAo+ICsJeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCj4gKwl7IF9N TUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKPiArCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1 MiB9LAo+ICsJeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCj4gK307Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfaGRjX2FuZF9zZltdID0gewo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDEwNGYwMjMyIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTI0ZjQ2NDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDIzMiB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDExODM0NDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRlODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDAwNGYxODgwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI0ZjA4YmIgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwNDRmMDAxYiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0NmMw MTAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY2YzAwMGIgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgxYTZjMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MWI4MDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDYxYjQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgx YTFjMTgwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwNWI4MDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MDI1YmMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDViNDAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEyNWM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MTQ1YzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNjVjODAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDE4NWM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzAw YTAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkODAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDAyMGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBj MGY1MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwNTUgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwMjJjYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MmNjMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyY2MwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwODJjYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MGMyYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgyODAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBmODMwNWMwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDk4MzAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgzMDAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDFkOTUwMDgwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTM5 MjgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZjk4ODAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDMxOTA0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGZjMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDU5OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwNDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQxOTAwODAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4NDIgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHg1MzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQKPiAr Z2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gKwkJCSAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKPiArCQkJICBpbnQg KmxlbnMpCj4gK3sKPiArCWludCBuID0gMDsKPiArCj4gKwlCVUlMRF9CVUdfT04oQVJSQVlfU0la RShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKPiArCUJVSUxEX0JVR19PTihBUlJB WV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Cj4gKwo+ICsJcmVn c1tuXSA9IG11eF9jb25maWdfaGRjX2FuZF9zZjsKPiArCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11 eF9jb25maWdfaGRjX2FuZF9zZik7Cj4gKwluKys7Cj4gKwo+ICsJcmV0dXJuIG47Cj4gK30KPiAr Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19sM18x W10gPSB7Cj4gKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgy NzQ0KSwgMHgwMDgwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzIwKSwgMHgw MDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCj4gKwl7IF9NTUlP KDB4Mjc3MCksIDB4MDAxMDAwNzAgfSwKPiArCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZmMSB9 LAo+ICsJeyBfTU1JTygweDI3NzgpLCAweDAwMDE0MDAyIH0sCj4gKwl7IF9NTUlPKDB4Mjc3Yyks IDB4MDAwMGMzZmYgfSwKPiArCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAxMDAwMiB9LAo+ICsJeyBf TU1JTygweDI3ODQpLCAweDAwMDBjN2ZmIH0sCj4gKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwMDQw MDIgfSwKPiArCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZDNmZiB9LAo+ICsJeyBfTU1JTygweDI3 OTApLCAweDAwMTAwNzAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZmMWYgfSwKPiAr CXsgX01NSU8oMHgyNzk4KSwgMHgwMDAwMTQwMiB9LAo+ICsJeyBfTU1JTygweDI3OWMpLCAweDAw MDBmYzNmIH0sCj4gKwl7IF9NTUlPKDB4MjdhMCksIDB4MDAwMDEwMDIgfSwKPiArCXsgX01NSU8o MHgyN2E0KSwgMHgwMDAwZmM3ZiB9LAo+ICsJeyBfTU1JTygweDI3YTgpLCAweDAwMDAwNDAyIH0s Cj4gKwl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGZkM2YgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfbDNfMVtdID0gewo+ICsJeyBf TU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCj4gKwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAw MDMgfSwKPiArCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAo+ICsJeyBfTU1JTygweGU3 NTgpLCAweDAwMDE1MDE0IH0sCj4gKwl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKPiAr CXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAo+ICsJeyBfTU1JTygweGU2NWMpLCAweDAw MDU1MDU0IH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11 eF9jb25maWdfbDNfMVtdID0gewo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEyNmM3YjQwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTY2YzAwMjAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw YTYwMzQ0NCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhNjEzNDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MWE0ZWE4MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYzRlMDAwMiB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyNGU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDQ0ZTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlODAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDA4NGU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRmNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDBjNmM1MzI3IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU2YzU0MjUgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwMDZjMmEwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAy NmMyODViIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ2YzAwNWMgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgxMDZjMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFjNmMwMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWU2YzAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgxYTZjMDgwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMWJjMDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MGUxYmMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDFiODAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMWJjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDQxYmMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAzYyB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDEyMWM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQx YzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNjFjODAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDE4MWM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWExYzA4MDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjViNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDFhNWMxMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA2MDAwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwNDYwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjNjEwMDQ0 IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA2MTAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjYxMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjNGMwMmE4IH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDg0Y2EwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRj MDAyYSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGUwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkODAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDQwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDEwMGYwMTU0IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZjUwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA1NSB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDE4MmMwMGFhIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIyYzgwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwNDJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MmM4 MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwYTJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMmNjMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGZmYzAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1 NzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwNDIwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDIxIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4NTk5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDQxOTAwNDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA0 MjEgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDQ1OTAwMDQwIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2dldF9sM18xX211 eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCSAgICBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAo+ICsJCSAgICBpbnQgKmxlbnMpCj4gK3sKPiAr CWludCBuID0gMDsKPiArCj4gKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVncykgPCAxKTsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2 LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Cj4gKwo+ICsJcmVnc1tuXSA9IG11eF9jb25m aWdfbDNfMTsKPiArCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfbDNfMSk7Cj4gKwlu Kys7Cj4gKwo+ICsJcmV0dXJuIG47Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19sM18yW10gPSB7Cj4gKwl7IF9NTUlPKDB4Mjc0MCks IDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAo+ICsJeyBf TU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAw MDAgfSwKPiArCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3 MjQpLCAweDAwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAxMDAwNzAgfSwKPiAr CXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZmMSB9LAo+ICsJeyBfTU1JTygweDI3NzgpLCAweDAw MDI4MDAyIH0sCj4gKwl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMDg3ZmYgfSwKPiArCXsgX01NSU8o MHgyNzgwKSwgMHgwMDAyMDAwMiB9LAo+ICsJeyBfTU1JTygweDI3ODQpLCAweDAwMDA4ZmZmIH0s Cj4gKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwMDgwMDIgfSwKPiArCXsgX01NSU8oMHgyNzhjKSwg MHgwMDAwYTdmZiB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBmbGV4X2V1X2NvbmZpZ19sM18yW10gPSB7Cj4gKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUw MDQgfSwKPiArCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAo+ICsJeyBfTU1JTygweGU2 NTgpLCAweDAwMDEyMDExIH0sCj4gKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKPiAr CXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAo+ICsJeyBfTU1JTygweGU1NWMpLCAweDAw MDUzMDUyIH0sCj4gKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKPiArfTsKPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19sM18yW10gPSB7Cj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTI2YzAyZTAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgx NDZjMDAwMSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhNjIzNDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MDQ0ZTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlODAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4NGU4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MGE0ZTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRmNDAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDAyNmMzMzI0IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ2YzM0 MjIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDFhNmMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIxYmMwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwNDFiYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE0 MWM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTYxYzgwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgxODFjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFhMWMwODAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY1YjQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgxYTVjMTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2NjE0MDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MGM2MjAwNDQgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDYyMDAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2NjIwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDg0YzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDAyYSB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQw ZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDBjMGY0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwNTUgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDA2MmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMmNjMDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGY4MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgzNzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1Mzkw MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MzM5MDAwMDAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQKPiArZ2V0X2wzXzJf bXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJICAgIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCj4gKwkJICAgIGludCAqbGVucykKPiArewo+ ICsJaW50IG4gPSAwOwo+ICsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzKSA8IDEpOwo+ICsJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKPiArCj4gKwlyZWdzW25dID0gbXV4X2Nv bmZpZ19sM18yOwo+ICsJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19sM18yKTsKPiAr CW4rKzsKPiArCj4gKwlyZXR1cm4gbjsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2wzXzNbXSA9IHsKPiArCXsgX01NSU8oMHgyNzQw KSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgw MDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 MjcyNCksIDB4MDA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzcwKSwgMHgwMDEwMDA3MCB9LAo+ ICsJeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZmYxIH0sCj4gKwl7IF9NTUlPKDB4Mjc3OCksIDB4 MDAwMjgwMDIgfSwKPiArCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwODdmZiB9LAo+ICsJeyBfTU1J TygweDI3ODApLCAweDAwMDIwMDAyIH0sCj4gKwl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMDhmZmYg fSwKPiArCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwODAwMiB9LAo+ICsJeyBfTU1JTygweDI3OGMp LCAweDAwMDBhN2ZmIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIGZsZXhfZXVfY29uZmlnX2wzXzNbXSA9IHsKPiArCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAw NTAwNCB9LAo+ICsJeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCj4gKwl7IF9NTUlPKDB4 ZTY1OCksIDB4MDAwMTIwMTEgfSwKPiArCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAo+ ICsJeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCj4gKwl7IF9NTUlPKDB4ZTU1YyksIDB4 MDAwNTMwNTIgfSwKPiArCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAo+ICt9Owo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2wzXzNbXSA9IHsK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMjZjNGU4MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDE0NmMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE2MzM0MDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwNDRlODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDg0ZTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTRlODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjNGU4MDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDI2YzMzMjEgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDZj MzQyZiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MWE2YzIwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjFiYzAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MWJjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDYxYjQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFjODAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDE2MWM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTgxYzgwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFjMTgwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDA2NjA0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM2MzAwNDQgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgxMDYzMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2NjMw MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDg0YzgwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwYTRjMDBhYSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw NjBkMjAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMGY0MDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MGUwZjAwNTUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjODAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDgyYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDBjMmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGY4 MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDUxOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4NDIgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ1 OTAwMDAyIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKPiArfTsKPiArCj4g K3N0YXRpYyBpbnQKPiArZ2V0X2wzXzNfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gKwkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCj4g KwkJICAgIGludCAqbGVucykKPiArewo+ICsJaW50IG4gPSAwOwo+ICsKPiArCUJVSUxEX0JVR19P TihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwo+ICsJQlVJTERf QlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsK PiArCj4gKwlyZWdzW25dID0gbXV4X2NvbmZpZ19sM18zOwo+ICsJbGVuc1tuXSA9IEFSUkFZX1NJ WkUobXV4X2NvbmZpZ19sM18zKTsKPiArCW4rKzsKPiArCj4gKwlyZXR1cm4gbjsKPiArfQo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3Jhc3Rl cml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRbXSA9IHsKPiArCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAw MDAwMCB9LAo+ICsJeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 MjcxMCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzE0KSwgMHgzMDgwMDAwMCB9LAo+ ICsJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcyNCksIDB4 MDA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwMDAwMiB9LAo+ICsJeyBfTU1J TygweDI3NzQpLCAweDAwMDBlZmZmIH0sCj4gKwl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDYwMDAg fSwKPiArCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZjNmZiB9LAo+ICt9Owo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9w aXhlbF9iYWNrZW5kW10gPSB7Cj4gKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKPiAr CXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAo+ICsJeyBfTU1JTygweGU2NTgpLCAweDAw MDEyMDExIH0sCj4gKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKPiArCXsgX01NSU8o MHhlNDVjKSwgMHgwMDA1MTA1MCB9LAo+ICsJeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0s Cj4gKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9i YWNrZW5kW10gPSB7Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAyZjM4MDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgxNDRkMDUwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEyMGQwM2Mw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQwZDAzY2YgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzBmMDAwNCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjNGU0MDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDQyZjA0ODAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODJm MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMmYwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGE0YzAwOTAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRkMDAyNyB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDAwNGQwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDAwZDBkNDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkODAzZiB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDA0MGQ4MDIzIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZDAwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDAyMGYwMDEwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZjAwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwZTBmMDA1MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhMmM4 MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMyYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgxMTkwZmMwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0 MTkwMTQwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQzOTAxNDg1IH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMSB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMg aW50Cj4gK2dldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJCSAgICBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgKipyZWdzLAo+ICsJCQkJCSAgICBpbnQgKmxlbnMpCj4gK3sKPiArCWludCBuID0g MDsKPiArCj4gKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVncykgPCAxKTsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpIDwgMSk7Cj4gKwo+ICsJcmVnc1tuXSA9IG11eF9jb25maWdfcmFzdGVy aXplcl9hbmRfcGl4ZWxfYmFja2VuZDsKPiArCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25m aWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7Cj4gKwluKys7Cj4gKwo+ICsJcmV0dXJu IG47Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVy X2NvbmZpZ19zYW1wbGVyW10gPSB7Cj4gKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwK PiArCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MTApLCAw eDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcxNCksIDB4NzA4MDAwMDAgfSwKPiArCXsgX01N SU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAw IH0sCj4gKwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMGMwMDAgfSwKPiArCXsgX01NSU8oMHgyNzc0 KSwgMHgwMDAwZTdmZiB9LAo+ICsJeyBfTU1JTygweDI3NzgpLCAweDAwMDAzMDAwIH0sCj4gKwl7 IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGY5ZmYgfSwKPiArCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAw MGMwMCB9LAo+ICsJeyBfTU1JTygweDI3ODQpLCAweDAwMDBmZTdmIH0sCj4gK307Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3NhbXBsZXJbXSA9 IHsKPiArCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAo+ICsJeyBfTU1JTygweGU1NTgp LCAweDAwMDEwMDAzIH0sCj4gKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKPiArCXsg X01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAo+ICsJeyBfTU1JTygweGU0NWMpLCAweDAwMDUx MDUwIH0sCj4gKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKPiArCXsgX01NSU8oMHhl NjVjKSwgMHgwMDA1NTA1NCB9LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyBtdXhfY29uZmlnX3NhbXBsZXJbXSA9IHsKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgx NDE1MmMwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE2MTUwMDA1IH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MTIxNjAwYTAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNDM1MmMwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE2MzUwMDA1IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MTIzNjAwYTAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNDU1MmMwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDE2NTUwMDA1IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI1NjAw YTAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJmNjAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDAyMmYyMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAwNTAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDAxMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBj MGQ4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwMDBkODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwNjBkMjAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMzUwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MGMwZmIwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDBk YSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE4MmMwMDI4IH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MGEyYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJkYzAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDA0MmQ0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMx MzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTEzMjAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDA0MTNjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWMxNDAwMTggfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzE1NzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDBlMTUwMDc4IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAxNTAwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwNDE2MjE4MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMTYwMDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxNzQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwMjMzYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MzMzMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTQzNDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNjM0 ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMzU3ODcwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTAzNTAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDM2MDA0MyB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMzYwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDQzNzEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwZTUzODAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDAwNTM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY1MzMwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxYzU0MDAyMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDEyNTQ4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU1NTcwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwMDU1NzgwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEwNTUw MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY1NjAwNDMgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjU2MDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2NTcxMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGZmODAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1 NzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDYwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4NTk5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDQxOTAwYzAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4 NDIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDQ1OTAwMDYwIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2dldF9zYW1wbGVy X211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCSAgICAg ICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAo+ICsJCSAgICAgICBpbnQgKmxlbnMp Cj4gK3sKPiArCWludCBuID0gMDsKPiArCj4gKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Cj4gKwo+ICsJcmVnc1tuXSA9 IG11eF9jb25maWdfc2FtcGxlcjsKPiArCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdf c2FtcGxlcik7Cj4gKwluKys7Cj4gKwo+ICsJcmV0dXJuIG47Cj4gK30KPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ190ZGxfMVtdID0gewo+ICsJ eyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4 MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygw eDI3MTQpLCAweGYwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwK PiArCXsgX01NSU8oMHgyNzI0KSwgMHgzMDgwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3NzApLCAw eDAwMDAwMDAyIH0sCj4gKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMDdmZmYgfSwKPiArCXsgX01N SU8oMHgyNzc4KSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3N2MpLCAweDAwMDA5ZmZm IH0sCj4gKwl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDAwMDIgfSwKPiArCXsgX01NSU8oMHgyNzg0 KSwgMHgwMDAwZWZmZiB9LAo+ICsJeyBfTU1JTygweDI3ODgpLCAweDAwMDAwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGYzZmYgfSwKPiArCXsgX01NSU8oMHgyNzkwKSwgMHgwMDAw MDAwMiB9LAo+ICsJeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZGZmIH0sCj4gKwl7IF9NTUlPKDB4 Mjc5OCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmU3ZiB9LAo+ ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZp Z190ZGxfMVtdID0gewo+ICsJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCj4gKwl7IF9N TUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKPiArCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAx MSB9LAo+ICsJeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCj4gKwl7IF9NTUlPKDB4ZTQ1 YyksIDB4MDAwNTEwNTAgfSwKPiArCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAo+ICsJ eyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGRsXzFbXSA9IHsKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgxMjEyMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEyMzIwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTI1MjAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw MDJmODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMmYzMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MGE0YzAwMTUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBkODAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDAwZDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDIw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDNhMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDBjMGZmMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwOTUgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwNjJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4 MmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwYzJkODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMmQ0MDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZDQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwMjEwODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MTBjMDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDIxMTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDExYzAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMTIxODgwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDQxMjE5YjUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDEyMDAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDAyMTM0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQx MzUwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzMwODAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDBlMzA0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMDQwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzMxODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDBlMzE0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMTQwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwYzMyMWE4MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlMzIwMDMz IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMjAwMzEgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwMDMyMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMzM0MDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGUzMzEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMz MTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBlNTA4MDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDA1MDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjUwNDAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDBlNTE4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDA1MTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjUxNDAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDBlNTIxODgwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MjFhODAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjUyMDAzMyB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDBlNTM0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MzQwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwMjUzMTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDExOTBm ZjgwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHg0OTkwMDgwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0 YjkwMDA2MiB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMGMwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAzIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4NTM5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDA0MCB9LAo+ICt9Owo+ ICsKPiArc3RhdGljIGludAo+ICtnZXRfdGRsXzFfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipy ZWdzLAo+ICsJCSAgICAgaW50ICpsZW5zKQo+ICt7Cj4gKwlpbnQgbiA9IDA7Cj4gKwo+ICsJQlVJ TERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Cj4g KwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5z KSA8IDEpOwo+ICsKPiArCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3RkbF8xOwo+ICsJbGVuc1tuXSA9 IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZGxfMSk7Cj4gKwluKys7Cj4gKwo+ICsJcmV0dXJuIG47 Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2Nv bmZpZ190ZGxfMltdID0gewo+ICsJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAw MDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 MjcyMCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAo+ ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZp Z190ZGxfMltdID0gewo+ICsJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCj4gKwl7IF9N TUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKPiArCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAx MSB9LAo+ICsJeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCj4gKwl7IF9NTUlPKDB4ZTQ1 YyksIDB4MDAwNTEwNTAgfSwKPiArCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAo+ICsJ eyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGRsXzJbXSA9IHsKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgxMjEyNGQ2MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEyMzIyZTYwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTI1MjRkNjAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw MjJmMzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDE0IH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MDAwZDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDYwZDIwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmZTAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDBlMGYwMDk3IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDAwMmQ4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZDQwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwNDEwYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0 MTFjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMjFmYjcgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwMDEyMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MTM1MDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAzMDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwNjMwNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMzE4MDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDYzMTQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDMyMWI4 MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2MzIwMDNmIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDAzMzQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMzMTAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDAyNTBjMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI1 MWMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjUyMWZiNyB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDAwNTIwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MzUwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZmMwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDM3OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHg0MTkwMDgwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDYz IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHg0NTkwMDA0MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCj4gK307 Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2dldF90ZGxfMl9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAq KnJlZ3MsCj4gKwkJICAgICBpbnQgKmxlbnMpCj4gK3sKPiArCWludCBuID0gMDsKPiArCj4gKwlC VUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsK PiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xl bnMpIDwgMSk7Cj4gKwo+ICsJcmVnc1tuXSA9IG11eF9jb25maWdfdGRsXzI7Cj4gKwlsZW5zW25d ID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3RkbF8yKTsKPiArCW4rKzsKPiArCj4gKwlyZXR1cm4g bjsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJf Y29uZmlnX2NvbXB1dGVfZXh0cmFbXSA9IHsKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29tcHV0ZV9leHRyYVtdID0gewo+ICt9Owo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2NvbXB1dGVf ZXh0cmFbXSA9IHsKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMjEyMDNlMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDEyMzIwM2UwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI1MjAzZTAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMjkyMDNlMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDEyYjIwM2UwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTJkMjAzZTAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwMjRlYzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0NGVj MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZWMwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjJmNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4NGNhMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzAwNDIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw MDBkODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMGY1MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MGUwZjAwNmQgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJjODAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDA0MmM4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjODAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDA0MmQ4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMDQwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwNjExNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA2 MTIwMDMzIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMjAwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwNjEzMTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0MzA4MDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQzMTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgwNDMyMTk4MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMzIwMDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MDQzMzQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNDUwNDAw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0NTE0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDQ1MjAwMzMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMDUyMDAwMCB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDA0NTMxMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDBh ZjgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYWNjMDAwMSB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDAwOGQ4MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI4ZGEwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzhmYjAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDBlOGYwMDAxIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDZhYzgwMDAgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwMmFkNDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyOTA4MDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI5MTgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwMjkyMTk4MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwOTIwMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDI5MzQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMmIw NDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAyYjE0MDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDJiMjAwMzMgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMGIyMDAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDAyYjMxMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDBkMDgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMGQxODAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDAwZDIxOTgwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDBkMzQwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZmMwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDM3OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHg0MTkwMGMwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDQzOTAw MDAyIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDA0MjAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHg0NTkwMDBhMSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCj4g K307Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2dldF9jb21wdXRlX2V4dHJhX211eF9jb25maWcoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyAqKnJlZ3MsCj4gKwkJCSAgICAgaW50ICpsZW5zKQo+ICt7Cj4gKwlpbnQgbiA9 IDA7Cj4gKwo+ICsJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3MpIDwgMSk7Cj4gKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVnc19sZW5zKSA8IDEpOwo+ICsKPiArCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2NvbXB1 dGVfZXh0cmE7Cj4gKwlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2NvbXB1dGVfZXh0 cmEpOwo+ICsJbisrOwo+ICsKPiArCXJldHVybiBuOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfdm1lX3BpcGVbXSA9IHsKPiArCXsg X01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MTApLCAweDAwMDAw MDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKPiArCXsgX01NSU8oMHgy NzIwKSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3MjQpLCAweDMwODAwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAxMDAwMzAgfSwKPiArCXsgX01NSU8oMHgyNzc0KSwgMHgw MDAwZmZmOSB9LAo+ICsJeyBfTU1JTygweDI3NzgpLCAweDAwMDAwMDAyIH0sCj4gKwl7IF9NTUlP KDB4Mjc3YyksIDB4MDAwMGZmZmMgfSwKPiArCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAwMDAwMiB9 LAo+ICsJeyBfTU1JTygweDI3ODQpLCAweDAwMDBmZmYzIH0sCj4gKwl7IF9NTUlPKDB4Mjc4OCks IDB4MDAxMDAxODAgfSwKPiArCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZmZjZiB9LAo+ICsJeyBf TU1JTygweDI3OTApLCAweDAwMDAwMDAyIH0sCj4gKwl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZm Y2YgfSwKPiArCXsgX01NSU8oMHgyNzk4KSwgMHgwMDAwMDAwMiB9LAo+ICsJeyBfTU1JTygweDI3 OWMpLCAweDAwMDBmZjNmIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnIGZsZXhfZXVfY29uZmlnX3ZtZV9waXBlW10gPSB7Cj4gKwl7IF9NTUlPKDB4ZTQ1OCks IDB4MDAwMDUwMDQgfSwKPiArCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAwODAwMyB9LAo+ICt9Owo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3ZtZV9waXBl W10gPSB7Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYTU4MDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgxNjFhMDBjMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDEyMTgwMjQwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTQxODAwMDIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgx NDlhNTgwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE2OWEwMGMwIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4MTI5ODAyNDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNDk4MDAwMiB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFhNGUzZmMwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4MDAyZjEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJmODAwMCB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDA0MmYzMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0YzQw MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjOTUwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDBjNGMwMDJhIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDIwMDAgfSwKPiAr CXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4 MGRhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEwZGEwMDAgfSwKPiArCXsgX01NSU8o MHg5ODg4KSwgMHgwYzBkYTAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjMGYwNDAwIH0s Cj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjU1MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwg MHgxMDBmMDAxNSB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDAwMmM4MDAwIH0sCj4gKwl7IF9N TUlPKDB4OTg4OCksIDB4MGUyYzgwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNjJjYWEw MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDE4MmMwMDBhIH0sCj4gKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDQxOTMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwODFhMjhjMSB9LAo+ICsJ eyBfTU1JTygweDk4ODgpLCAweDAwMWEwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAx MzMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjEzYzAwMCB9LAo+ICsJeyBfTU1JTygw eDk4ODgpLCAweDA4MTNmMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxNzIwMDAgfSwK PiArCXsgX01NSU8oMHg5ODg4KSwgMHgwNjE3ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAw eDA4MTdhMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxODAwMzcgfSwKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgwNjE4MDk0MCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4MTgwMDAw IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIxODAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgwNDE4MzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA0YWZjMDAwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDZhZjMwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYWNj NDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBjY2MwMDE1IH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGE4ZGEwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzhkYTAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDBlOGY0MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTA4ZjAwMTUgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxNmFjYTAwMCB9LAo+ICsJeyBfTU1J TygweDk4ODgpLCAweDE4YWMwMDBhIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY5OTMwMDAg fSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgwYzlhMjhjMSB9LAo+ICsJeyBfTU1JTygweDk4ODgp LCAweDAwOWEwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE5M2YwMDAgfSwKPiArCXsg X01NSU8oMHg5ODg4KSwgMHgwYzkzZjAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDBhOTdh MDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM5N2EwMDAgfSwKPiArCXsgX01NSU8oMHg5 ODg4KSwgMHgwYTk4MDk3NyB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA4OTgwMDAwIH0sCj4g Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ5ODAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgw Njk4MzAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDExOTAwMGZmIH0sCj4gKwl7IF9NTUlP KDB4OTg4OCksIDB4NTE5MDAwNDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDAyMCB9 LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDA0IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCks IDB4NDU5MDA0MDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDhhNSB9LAo+ICsJeyBf TU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDAw MDIgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4 ODgpLCAweDMzOTAwMDAwIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2dldF92bWVfcGlw ZV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKPiArCQkJaW50ICpsZW5zKQo+ICt7Cj4gKwlp bnQgbiA9IDA7Cj4gKwo+ICsJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3MpIDwgMSk7Cj4gKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwo+ICsKPiArCXJlZ3Nbbl0gPSBtdXhfY29uZmln X3ZtZV9waXBlOwo+ICsJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ192bWVfcGlwZSk7 Cj4gKwluKys7Cj4gKwo+ICsJcmV0dXJuIG47Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hW10gPSB7Cj4gKwl7IF9NTUlP KDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9 LAo+ICsJeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4MjcxMCks IDB4MDAwMDAwMDAgfSwKPiArCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAo+ICsJeyBf TU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAw MDQgfSwKPiArCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwMDAwMCB9LAo+ICsJeyBfTU1JTygweDI3 NzgpLCAweDAwMDAwMDAzIH0sCj4gKwl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMDAwMDAgfSwKPiAr CXsgX01NSU8oMHgyNzgwKSwgMHgwMDAwMDAwNyB9LAo+ICsJeyBfTU1JTygweDI3ODQpLCAweDAw MDAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAxMDAwMDIgfSwKPiArCXsgX01NSU8o MHgyNzhjKSwgMHgwMDAwZmZmNyB9LAo+ICsJeyBfTU1JTygweDI3OTApLCAweDAwMTAwMDAyIH0s Cj4gKwl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZmY2YgfSwKPiArCXsgX01NSU8oMHgyNzk4KSwg MHgwMDEwMDA4MiB9LAo+ICsJeyBfTU1JTygweDI3OWMpLCAweDAwMDBmZmVmIH0sCj4gKwl7IF9N TUlPKDB4MjdhMCksIDB4MDAxMDAwYzIgfSwKPiArCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmZl NyB9LAo+ICsJeyBfTU1JTygweDI3YTgpLCAweDAwMTAwMDAxIH0sCj4gKwl7IF9NTUlPKDB4Mjdh YyksIDB4MDAwMGZmZTcgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgZmxleF9ldV9jb25maWdfdGVzdF9vYVtdID0gewo+ICt9Owo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3Rlc3Rfb2FbXSA9IHsKPiArCXsgX01N SU8oMHg5ODg4KSwgMHgxMTgxMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDA3ODEwMDEz IH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MTAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4 KSwgMHgxZDgxMDAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDFiOTMwMDQwIH0sCj4gKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDdlNTQwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkw ODAwMCB9LAo+ICsJeyBfTU1JTygweDk4ODgpLCAweDExOTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4 OTg4OCksIDB4Mzc5MDAwMDAgfSwKPiArCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAo+ ICsJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAwIH0sCj4gKwl7IF9NTUlPKDB4OTg4OCksIDB4 MzM5MDAwMDAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQKPiArZ2V0X3Rlc3Rfb2FfbXV4X2Nv bmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJICAgICAgIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCj4gKwkJICAgICAgIGludCAqbGVucykKPiArewo+ ICsJaW50IG4gPSAwOwo+ICsKPiArCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzKSA8IDEpOwo+ICsJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKPiArCj4gKwlyZWdzW25dID0gbXV4X2Nv bmZpZ190ZXN0X29hOwo+ICsJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29h KTsKPiArCW4rKzsKPiArCj4gKwlyZXR1cm4gbjsKPiArfQo+ICsKPiAraW50IGk5MTVfb2Ffc2Vs ZWN0X21ldHJpY19zZXRfa2JsZ3QzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiArewo+ICsJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9IDA7Cj4gKwlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9IE5VTEw7Cj4gKwlkZXZfcHJpdi0+cGVyZi5vYS5iX2Nv dW50ZXJfcmVnc19sZW4gPSAwOwo+ICsJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0gTlVM TDsKPiArCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPSAwOwo+ICsKPiArCXN3aXRj aCAoZGV2X3ByaXYtPnBlcmYub2EubWV0cmljc19zZXQpIHsKPiArCWNhc2UgTUVUUklDX1NFVF9J RF9SRU5ERVJfQkFTSUM6Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9Cj4gKwkJ CWdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKPiArCQkJCQkJICAgIGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzLAo+ICsJCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3NfbGVucyk7Cj4gKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPT0gMCkg ewo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJF TkRFUl9CQVNJQ1wiIG1ldHJpYyBzZXRcbiIpOwo+ICsKPiArCQkJLyogRUlOVkFMIGJlY2F1c2Ug Kl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwo+ICsJCQkgKiBhbmQgc28gaXQg d291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAo+ICsJCQkgKiBz byBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAo+ICsJCQkgKi8KPiArCQkJcmV0dXJuIC1F SU5WQUw7Cj4gKwkJfQo+ICsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9 Cj4gKwkJCWJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljOwo+ICsJCWRldl9wcml2LT5wZXJm Lm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZp Z19yZW5kZXJfYmFzaWMpOwo+ICsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQo+ ICsJCQlmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWM7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eu ZmxleF9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmVuZGVyX2Jh c2ljKTsKPiArCj4gKwkJcmV0dXJuIDA7Cj4gKwljYXNlIE1FVFJJQ19TRVRfSURfQ09NUFVURV9C QVNJQzoKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9yZWdzID0KPiArCQkJZ2V0X2NvbXB1 dGVfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKPiArCQkJCQkJICAgICBkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVncywKPiArCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19s ZW5zKTsKPiArCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9PSAwKSB7Cj4gKwkJ CURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVURV9C QVNJQ1wiIG1ldHJpYyBzZXRcbiIpOwo+ICsKPiArCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdp c3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwo+ICsJCQkgKiBhbmQgc28gaXQgd291bGRu J3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAo+ICsJCQkgKiBzbyBzaG91 bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAo+ICsJCQkgKi8KPiArCQkJcmV0dXJuIC1FSU5WQUw7 Cj4gKwkJfQo+ICsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Cj4gKwkJ CWJfY291bnRlcl9jb25maWdfY29tcHV0ZV9iYXNpYzsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5i X2NvdW50ZXJfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfY29t cHV0ZV9iYXNpYyk7Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Cj4gKwkJ CWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfYmFzaWM7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxl eF9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfY29tcHV0ZV9iYXNp Yyk7Cj4gKwo+ICsJCXJldHVybiAwOwo+ICsJY2FzZSBNRVRSSUNfU0VUX0lEX1JFTkRFUl9QSVBF X1BST0ZJTEU6Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9Cj4gKwkJCWdldF9y ZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2X3ByaXYsCj4gKwkJCQkJCQkgICBkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVncywKPiArCQkJCQkJCSAgIGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzX2xlbnMpOwo+ICsJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9yZWdzID09IDAp IHsKPiArCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJS RU5ERVJfUElQRV9QUk9GSUxFXCIgbWV0cmljIHNldFxuIik7Cj4gKwo+ICsJCQkvKiBFSU5WQUwg YmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCj4gKwkJCSAqIGFu ZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCj4g KwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCj4gKwkJCSAqLwo+ICsJCQly ZXR1cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzID0KPiArCQkJYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlOwo+ICsJ CWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUo Yl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlKTsKPiArCj4gKwkJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzID0KPiArCQkJZmxleF9ldV9jb25maWdfcmVuZGVyX3BpcGVfcHJv ZmlsZTsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KPiArCQkJQVJSQVlf U0laRShmbGV4X2V1X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlKTsKPiArCj4gKwkJcmV0dXJu IDA7Cj4gKwljYXNlIE1FVFJJQ19TRVRfSURfTUVNT1JZX1JFQURTOgo+ICsJCWRldl9wcml2LT5w ZXJmLm9hLm5fbXV4X3JlZ3MgPQo+ICsJCQlnZXRfbWVtb3J5X3JlYWRzX211eF9jb25maWcoZGV2 X3ByaXYsCj4gKwkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKPiArCQkJCQkJ ICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwo+ICsJCWlmIChkZXZfcHJpdi0+ cGVyZi5vYS5uX211eF9yZWdzID09IDApIHsKPiArCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3Vp dGFibGUgTVVYIGNvbmZpZyBmb3IgXCJNRU1PUllfUkVBRFNcIiBtZXRyaWMgc2V0XG4iKTsKPiAr Cj4gKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2Vk IHRoaXMKPiArCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRv IHVzZXJzcGFjZSBhbmQKPiArCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQK PiArCQkJICovCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCj4gKwkJZGV2X3ByaXYt PnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQo+ICsJCQliX2NvdW50ZXJfY29uZmlnX21lbW9yeV9y ZWFkczsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQo+ICsJCQlB UlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfbWVtb3J5X3JlYWRzKTsKPiArCj4gKwkJZGV2X3By aXYtPnBlcmYub2EuZmxleF9yZWdzID0KPiArCQkJZmxleF9ldV9jb25maWdfbWVtb3J5X3JlYWRz Owo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpF KGZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkcyk7Cj4gKwo+ICsJCXJldHVybiAwOwo+ICsJY2Fz ZSBNRVRSSUNfU0VUX0lEX01FTU9SWV9XUklURVM6Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfcmVncyA9Cj4gKwkJCWdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsCj4g KwkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCj4gKwkJCQkJCSAgICAgZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Cj4gKwkJaWYgKGRldl9wcml2LT5wZXJmLm9h Lm5fbXV4X3JlZ3MgPT0gMCkgewo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBN VVggY29uZmlnIGZvciBcIk1FTU9SWV9XUklURVNcIiBtZXRyaWMgc2V0XG4iKTsKPiArCj4gKwkJ CS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMK PiArCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJz cGFjZSBhbmQKPiArCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKPiArCQkJ ICovCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCj4gKwkJZGV2X3ByaXYtPnBlcmYu b2EuYl9jb3VudGVyX3JlZ3MgPQo+ICsJCQliX2NvdW50ZXJfY29uZmlnX21lbW9yeV93cml0ZXM7 Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KPiArCQkJQVJSQVlf U0laRShiX2NvdW50ZXJfY29uZmlnX21lbW9yeV93cml0ZXMpOwo+ICsKPiArCQlkZXZfcHJpdi0+ cGVyZi5vYS5mbGV4X3JlZ3MgPQo+ICsJCQlmbGV4X2V1X2NvbmZpZ19tZW1vcnlfd3JpdGVzOwo+ ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGZs ZXhfZXVfY29uZmlnX21lbW9yeV93cml0ZXMpOwo+ICsKPiArCQlyZXR1cm4gMDsKPiArCWNhc2Ug TUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVEVOREVEOgo+ICsJCWRldl9wcml2LT5wZXJmLm9hLm5f bXV4X3JlZ3MgPQo+ICsJCQlnZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2 LAo+ICsJCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCj4gKwkJCQkJCQlkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKPiArCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfcmVncyA9PSAwKSB7Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBj b25maWcgZm9yIFwiQ09NUFVURV9FWFRFTkRFRFwiIG1ldHJpYyBzZXRcbiIpOwo+ICsKPiArCQkJ LyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwo+ ICsJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNw YWNlIGFuZAo+ICsJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAo+ICsJCQkg Ki8KPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsKPiArCQlkZXZfcHJpdi0+cGVyZi5v YS5iX2NvdW50ZXJfcmVncyA9Cj4gKwkJCWJfY291bnRlcl9jb25maWdfY29tcHV0ZV9leHRlbmRl ZDsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQo+ICsJCQlBUlJB WV9TSVpFKGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9leHRlbmRlZCk7Cj4gKwo+ICsJCWRldl9w cml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Cj4gKwkJCWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0 ZW5kZWQ7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZ X1NJWkUoZmxleF9ldV9jb25maWdfY29tcHV0ZV9leHRlbmRlZCk7Cj4gKwo+ICsJCXJldHVybiAw Owo+ICsJY2FzZSBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfTDNfQ0FDSEU6Cj4gKwkJZGV2X3ByaXYt PnBlcmYub2Eubl9tdXhfcmVncyA9Cj4gKwkJCWdldF9jb21wdXRlX2wzX2NhY2hlX211eF9jb25m aWcoZGV2X3ByaXYsCj4gKwkJCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKPiArCQkJ CQkJCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwo+ICsJCWlmIChkZXZfcHJpdi0+ cGVyZi5vYS5uX211eF9yZWdzID09IDApIHsKPiArCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3Vp dGFibGUgTVVYIGNvbmZpZyBmb3IgXCJDT01QVVRFX0wzX0NBQ0hFXCIgbWV0cmljIHNldFxuIik7 Cj4gKwo+ICsJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hl Y2tlZCB0aGlzCj4gKwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNl ZCB0byB1c2Vyc3BhY2UgYW5kCj4gKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVz dGVkCj4gKwkJCSAqLwo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwo+ICsJCWRldl9w cml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KPiArCQkJYl9jb3VudGVyX2NvbmZpZ19jb21w dXRlX2wzX2NhY2hlOwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9 Cj4gKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlKTsKPiAr Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KPiArCQkJZmxleF9ldV9jb25maWdf Y29tcHV0ZV9sM19jYWNoZTsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0K PiArCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlKTsKPiArCj4g KwkJcmV0dXJuIDA7Cj4gKwljYXNlIE1FVFJJQ19TRVRfSURfSERDX0FORF9TRjoKPiArCQlkZXZf cHJpdi0+cGVyZi5vYS5uX211eF9yZWdzID0KPiArCQkJZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZp ZyhkZXZfcHJpdiwKPiArCQkJCQkJICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKPiArCQkJ CQkJICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKPiArCQlpZiAoZGV2X3ByaXYt PnBlcmYub2Eubl9tdXhfcmVncyA9PSAwKSB7Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1 aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiSERDX0FORF9TRlwiIG1ldHJpYyBzZXRcbiIpOwo+ICsK PiArCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQg dGhpcwo+ICsJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8g dXNlcnNwYWNlIGFuZAo+ICsJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAo+ ICsJCQkgKi8KPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsKPiArCQlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Cj4gKwkJCWJfY291bnRlcl9jb25maWdfaGRjX2FuZF9z ZjsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQo+ICsJCQlBUlJB WV9TSVpFKGJfY291bnRlcl9jb25maWdfaGRjX2FuZF9zZik7Cj4gKwo+ICsJCWRldl9wcml2LT5w ZXJmLm9hLmZsZXhfcmVncyA9Cj4gKwkJCWZsZXhfZXVfY29uZmlnX2hkY19hbmRfc2Y7Cj4gKwkJ ZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoZmxleF9l dV9jb25maWdfaGRjX2FuZF9zZik7Cj4gKwo+ICsJCXJldHVybiAwOwo+ICsJY2FzZSBNRVRSSUNf U0VUX0lEX0wzXzE6Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9Cj4gKwkJCWdl dF9sM18xX211eF9jb25maWcoZGV2X3ByaXYsCj4gKwkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzLAo+ICsJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsK PiArCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9PSAwKSB7Cj4gKwkJCURSTV9E RUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTDNfMVwiIG1ldHJpYyBz ZXRcbiIpOwo+ICsKPiArCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJl YWR5IGNoZWNrZWQgdGhpcwo+ICsJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFk dmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAo+ICsJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVu IHJlcXVlc3RlZAo+ICsJCQkgKi8KPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsKPiAr CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Cj4gKwkJCWJfY291bnRlcl9jb25m aWdfbDNfMTsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQo+ICsJ CQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfbDNfMSk7Cj4gKwo+ICsJCWRldl9wcml2LT5w ZXJmLm9hLmZsZXhfcmVncyA9Cj4gKwkJCWZsZXhfZXVfY29uZmlnX2wzXzE7Cj4gKwkJZGV2X3By aXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25m aWdfbDNfMSk7Cj4gKwo+ICsJCXJldHVybiAwOwo+ICsJY2FzZSBNRVRSSUNfU0VUX0lEX0wzXzI6 Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9Cj4gKwkJCWdldF9sM18yX211eF9j b25maWcoZGV2X3ByaXYsCj4gKwkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAo+ ICsJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKPiArCQlpZiAoZGV2 X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9PSAwKSB7Cj4gKwkJCURSTV9ERUJVR19EUklWRVIo Ik5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTDNfMlwiIG1ldHJpYyBzZXRcbiIpOwo+ICsK PiArCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQg dGhpcwo+ICsJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8g dXNlcnNwYWNlIGFuZAo+ICsJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAo+ ICsJCQkgKi8KPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsKPiArCQlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Cj4gKwkJCWJfY291bnRlcl9jb25maWdfbDNfMjsKPiAr CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpF KGJfY291bnRlcl9jb25maWdfbDNfMik7Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhf cmVncyA9Cj4gKwkJCWZsZXhfZXVfY29uZmlnX2wzXzI7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eu ZmxleF9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfbDNfMik7Cj4g Kwo+ICsJCXJldHVybiAwOwo+ICsJY2FzZSBNRVRSSUNfU0VUX0lEX0wzXzM6Cj4gKwkJZGV2X3By aXYtPnBlcmYub2Eubl9tdXhfcmVncyA9Cj4gKwkJCWdldF9sM18zX211eF9jb25maWcoZGV2X3By aXYsCj4gKwkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAo+ICsJCQkJCSAgICBk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKPiArCQlpZiAoZGV2X3ByaXYtPnBlcmYu b2Eubl9tdXhfcmVncyA9PSAwKSB7Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxl IE1VWCBjb25maWcgZm9yIFwiTDNfM1wiIG1ldHJpYyBzZXRcbiIpOwo+ICsKPiArCQkJLyogRUlO VkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwo+ICsJCQkg KiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFu ZAo+ICsJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAo+ICsJCQkgKi8KPiAr CQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2Nv dW50ZXJfcmVncyA9Cj4gKwkJCWJfY291bnRlcl9jb25maWdfbDNfMzsKPiArCQlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9j b25maWdfbDNfMyk7Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Cj4gKwkJ CWZsZXhfZXVfY29uZmlnX2wzXzM7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xl biA9Cj4gKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfbDNfMyk7Cj4gKwo+ICsJCXJldHVy biAwOwo+ICsJY2FzZSBNRVRSSUNfU0VUX0lEX1JBU1RFUklaRVJfQU5EX1BJWEVMX0JBQ0tFTkQ6 Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9Cj4gKwkJCWdldF9yYXN0ZXJpemVy X2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoZGV2X3ByaXYsCj4gKwkJCQkJCQkJICAgIGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAo+ICsJCQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVnc19sZW5zKTsKPiArCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVncyA9 PSAwKSB7Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9y IFwiUkFTVEVSSVpFUl9BTkRfUElYRUxfQkFDS0VORFwiIG1ldHJpYyBzZXRcbiIpOwo+ICsKPiAr CQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhp cwo+ICsJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNl cnNwYWNlIGFuZAo+ICsJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAo+ICsJ CQkgKi8KPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsKPiArCQlkZXZfcHJpdi0+cGVy Zi5vYS5iX2NvdW50ZXJfcmVncyA9Cj4gKwkJCWJfY291bnRlcl9jb25maWdfcmFzdGVyaXplcl9h bmRfcGl4ZWxfYmFja2VuZDsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19s ZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4 ZWxfYmFja2VuZCk7Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Cj4gKwkJ CWZsZXhfZXVfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQ7Cj4gKwkJZGV2X3By aXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25m aWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7Cj4gKwo+ICsJCXJldHVybiAwOwo+ICsJ Y2FzZSBNRVRSSUNfU0VUX0lEX1NBTVBMRVI6Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhf cmVncyA9Cj4gKwkJCWdldF9zYW1wbGVyX211eF9jb25maWcoZGV2X3ByaXYsCj4gKwkJCQkJICAg ICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAo+ICsJCQkJCSAgICAgICBkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKPiArCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhf cmVncyA9PSAwKSB7Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25m aWcgZm9yIFwiU0FNUExFUlwiIG1ldHJpYyBzZXRcbiIpOwo+ICsKPiArCQkJLyogRUlOVkFMIGJl Y2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwo+ICsJCQkgKiBhbmQg c28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAo+ICsJ CQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAo+ICsJCQkgKi8KPiArCQkJcmV0 dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJf cmVncyA9Cj4gKwkJCWJfY291bnRlcl9jb25maWdfc2FtcGxlcjsKPiArCQlkZXZfcHJpdi0+cGVy Zi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25m aWdfc2FtcGxlcik7Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Cj4gKwkJ CWZsZXhfZXVfY29uZmlnX3NhbXBsZXI7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdz X2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfc2FtcGxlcik7Cj4gKwo+ICsJ CXJldHVybiAwOwo+ICsJY2FzZSBNRVRSSUNfU0VUX0lEX1RETF8xOgo+ICsJCWRldl9wcml2LT5w ZXJmLm9hLm5fbXV4X3JlZ3MgPQo+ICsJCQlnZXRfdGRsXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwK PiArCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAo+ICsJCQkJCSAgICAgZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Cj4gKwkJaWYgKGRldl9wcml2LT5wZXJmLm9h Lm5fbXV4X3JlZ3MgPT0gMCkgewo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBN VVggY29uZmlnIGZvciBcIlRETF8xXCIgbWV0cmljIHNldFxuIik7Cj4gKwo+ICsJCQkvKiBFSU5W QUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCj4gKwkJCSAq IGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5k Cj4gKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCj4gKwkJCSAqLwo+ICsJ CQlyZXR1cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmJfY291 bnRlcl9yZWdzID0KPiArCQkJYl9jb3VudGVyX2NvbmZpZ190ZGxfMTsKPiArCQlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9j b25maWdfdGRsXzEpOwo+ICsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQo+ICsJ CQlmbGV4X2V1X2NvbmZpZ190ZGxfMTsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3Nf bGVuID0KPiArCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZGxfMSk7Cj4gKwo+ICsJCXJl dHVybiAwOwo+ICsJY2FzZSBNRVRSSUNfU0VUX0lEX1RETF8yOgo+ICsJCWRldl9wcml2LT5wZXJm Lm9hLm5fbXV4X3JlZ3MgPQo+ICsJCQlnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwKPiAr CQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAo+ICsJCQkJCSAgICAgZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Cj4gKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5f bXV4X3JlZ3MgPT0gMCkgewo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVgg Y29uZmlnIGZvciBcIlRETF8yXCIgbWV0cmljIHNldFxuIik7Cj4gKwo+ICsJCQkvKiBFSU5WQUwg YmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCj4gKwkJCSAqIGFu ZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCj4g KwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCj4gKwkJCSAqLwo+ICsJCQly ZXR1cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzID0KPiArCQkJYl9jb3VudGVyX2NvbmZpZ190ZGxfMjsKPiArCQlkZXZfcHJpdi0+cGVy Zi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25m aWdfdGRsXzIpOwo+ICsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQo+ICsJCQlm bGV4X2V1X2NvbmZpZ190ZGxfMjsKPiArCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVu ID0KPiArCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZGxfMik7Cj4gKwo+ICsJCXJldHVy biAwOwo+ICsJY2FzZSBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhUUkE6Cj4gKwkJZGV2X3ByaXYt PnBlcmYub2Eubl9tdXhfcmVncyA9Cj4gKwkJCWdldF9jb21wdXRlX2V4dHJhX211eF9jb25maWco ZGV2X3ByaXYsCj4gKwkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCj4gKwkJ CQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Cj4gKwkJaWYgKGRldl9w cml2LT5wZXJmLm9hLm5fbXV4X3JlZ3MgPT0gMCkgewo+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJO byBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkNPTVBVVEVfRVhUUkFcIiBtZXRyaWMgc2V0XG4i KTsKPiArCj4gKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBj aGVja2VkIHRoaXMKPiArCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRp c2VkIHRvIHVzZXJzcGFjZSBhbmQKPiArCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1 ZXN0ZWQKPiArCQkJICovCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCj4gKwkJZGV2 X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQo+ICsJCQliX2NvdW50ZXJfY29uZmlnX2Nv bXB1dGVfZXh0cmE7Cj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0K PiArCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0cmEpOwo+ICsKPiAr CQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQo+ICsJCQlmbGV4X2V1X2NvbmZpZ19jb21w dXRlX2V4dHJhOwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQo+ICsJCQlB UlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0cmEpOwo+ICsKPiArCQlyZXR1cm4g MDsKPiArCWNhc2UgTUVUUklDX1NFVF9JRF9WTUVfUElQRToKPiArCQlkZXZfcHJpdi0+cGVyZi5v YS5uX211eF9yZWdzID0KPiArCQkJZ2V0X3ZtZV9waXBlX211eF9jb25maWcoZGV2X3ByaXYsCj4g KwkJCQkJCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAo+ICsJCQkJCQlkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVnc19sZW5zKTsKPiArCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfcmVn cyA9PSAwKSB7Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcg Zm9yIFwiVk1FX1BJUEVcIiBtZXRyaWMgc2V0XG4iKTsKPiArCj4gKwkJCS8qIEVJTlZBTCBiZWNh dXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKPiArCQkJICogYW5kIHNv IGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKPiArCQkJ ICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKPiArCQkJICovCj4gKwkJCXJldHVy biAtRUlOVkFMOwo+ICsJCX0KPiArCj4gKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3Jl Z3MgPQo+ICsJCQliX2NvdW50ZXJfY29uZmlnX3ZtZV9waXBlOwo+ICsJCWRldl9wcml2LT5wZXJm Lm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZp Z192bWVfcGlwZSk7Cj4gKwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Cj4gKwkJ CWZsZXhfZXVfY29uZmlnX3ZtZV9waXBlOwo+ICsJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVn c19sZW4gPQo+ICsJCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3ZtZV9waXBlKTsKPiArCj4g KwkJcmV0dXJuIDA7Cj4gKwljYXNlIE1FVFJJQ19TRVRfSURfVEVTVF9PQToKPiArCQlkZXZfcHJp di0+cGVyZi5vYS5uX211eF9yZWdzID0KPiArCQkJZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhkZXZf cHJpdiwKPiArCQkJCQkgICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCj4gKwkJCQkJ ICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwo+ICsJCWlmIChkZXZfcHJp di0+cGVyZi5vYS5uX211eF9yZWdzID09IDApIHsKPiArCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8g c3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJURVNUX09BXCIgbWV0cmljIHNldFxuIik7Cj4gKwo+ ICsJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0 aGlzCj4gKwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1 c2Vyc3BhY2UgYW5kCj4gKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCj4g KwkJCSAqLwo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwo+ICsJCWRldl9wcml2LT5w ZXJmLm9hLmJfY291bnRlcl9yZWdzID0KPiArCQkJYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hOwo+ ICsJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Cj4gKwkJCUFSUkFZX1NJ WkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsKPiArCj4gKwkJZGV2X3ByaXYtPnBlcmYub2Eu ZmxleF9yZWdzID0KPiArCQkJZmxleF9ldV9jb25maWdfdGVzdF9vYTsKPiArCQlkZXZfcHJpdi0+ cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KPiArCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190 ZXN0X29hKTsKPiArCj4gKwkJcmV0dXJuIDA7Cj4gKwlkZWZhdWx0Ogo+ICsJCXJldHVybiAtRU5P REVWOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtzaG93X3JlbmRlcl9iYXNp Y19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwg Y2hhciAqYnVmKQo+ICt7Cj4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NF VF9JRF9SRU5ERVJfQkFTSUMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgZGV2X2F0dHJfcmVuZGVyX2Jhc2ljX2lkID0gewo+ICsJLmF0dHIgPSB7IC5uYW1lID0g ImlkIiwgLm1vZGUgPSAwNDQ0IH0sCj4gKwkuc2hvdyA9IHNob3dfcmVuZGVyX2Jhc2ljX2lkLAo+ ICsJLnN0b3JlID0gTlVMTCwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICph dHRyc19yZW5kZXJfYmFzaWNbXSA9IHsKPiArCSZkZXZfYXR0cl9yZW5kZXJfYmFzaWNfaWQuYXR0 ciwKPiArCU5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBn cm91cF9yZW5kZXJfYmFzaWMgPSB7Cj4gKwkubmFtZSA9ICIwMjg2YzkyMC0yZjZkLTQ5M2ItYjIy ZC03YTUyODBkZjQzZGUiLAo+ICsJLmF0dHJzID0gIGF0dHJzX3JlbmRlcl9iYXNpYywKPiArfTsK PiArCj4gK3N0YXRpYyBzc2l6ZV90Cj4gK3Nob3dfY29tcHV0ZV9iYXNpY19pZChzdHJ1Y3QgZGV2 aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICt7 Cj4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9DT01QVVRFX0JB U0lDKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRy X2NvbXB1dGVfYmFzaWNfaWQgPSB7Cj4gKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9 IDA0NDQgfSwKPiArCS5zaG93ID0gc2hvd19jb21wdXRlX2Jhc2ljX2lkLAo+ICsJLnN0b3JlID0g TlVMTCwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19jb21wdXRl X2Jhc2ljW10gPSB7Cj4gKwkmZGV2X2F0dHJfY29tcHV0ZV9iYXNpY19pZC5hdHRyLAo+ICsJTlVM TCwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1 dGVfYmFzaWMgPSB7Cj4gKwkubmFtZSA9ICI5ODIzYWFhMS1iMDZmLTQwY2UtODg0Yi1jZDc5OGM3 OWYwYzIiLAo+ICsJLmF0dHJzID0gIGF0dHJzX2NvbXB1dGVfYmFzaWMsCj4gK307Cj4gKwo+ICtz dGF0aWMgc3NpemVfdAo+ICtzaG93X3JlbmRlcl9waXBlX3Byb2ZpbGVfaWQoc3RydWN0IGRldmlj ZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiArewo+ ICsJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfUkVOREVSX1BJUEVf UFJPRklMRSk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZf YXR0cl9yZW5kZXJfcGlwZV9wcm9maWxlX2lkID0gewo+ICsJLmF0dHIgPSB7IC5uYW1lID0gImlk IiwgLm1vZGUgPSAwNDQ0IH0sCj4gKwkuc2hvdyA9IHNob3dfcmVuZGVyX3BpcGVfcHJvZmlsZV9p ZCwKPiArCS5zdG9yZSA9IE5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cnNfcmVuZGVyX3BpcGVfcHJvZmlsZVtdID0gewo+ICsJJmRldl9hdHRyX3JlbmRlcl9w aXBlX3Byb2ZpbGVfaWQuYXR0ciwKPiArCU5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yZW5kZXJfcGlwZV9wcm9maWxlID0gewo+ICsJLm5hbWUg PSAiYzdjNzM1ZjMtY2U1OC00NWNmLWFhMDQtMzBiMTgzZjFmYWZmIiwKPiArCS5hdHRycyA9ICBh dHRyc19yZW5kZXJfcGlwZV9wcm9maWxlLAo+ICt9Owo+ICsKPiArc3RhdGljIHNzaXplX3QKPiAr c2hvd19tZW1vcnlfcmVhZHNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiArewo+ICsJcmV0dXJuIHNwcmludGYoYnVmLCAi JWRcbiIsIE1FVFJJQ19TRVRfSURfTUVNT1JZX1JFQURTKTsKPiArfQo+ICsKPiArc3RhdGljIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX21lbW9yeV9yZWFkc19pZCA9IHsKPiArCS5h dHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAo+ICsJLnNob3cgPSBzaG93X21l bW9yeV9yZWFkc19pZCwKPiArCS5zdG9yZSA9IE5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0cnNfbWVtb3J5X3JlYWRzW10gPSB7Cj4gKwkmZGV2X2F0dHJfbWVt b3J5X3JlYWRzX2lkLmF0dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbWVtb3J5X3JlYWRzID0gewo+ICsJLm5hbWUgPSAiOTZlYzIy MTktMDQwYi00MjhhLTg1NmEtNmJjMDMzNjNhMDU3IiwKPiArCS5hdHRycyA9ICBhdHRyc19tZW1v cnlfcmVhZHMsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtzaG93X21lbW9yeV93cml0 ZXNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs IGNoYXIgKmJ1ZikKPiArewo+ICsJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19T RVRfSURfTUVNT1JZX1dSSVRFUyk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSBkZXZfYXR0cl9tZW1vcnlfd3JpdGVzX2lkID0gewo+ICsJLmF0dHIgPSB7IC5uYW1l ID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCj4gKwkuc2hvdyA9IHNob3dfbWVtb3J5X3dyaXRlc19p ZCwKPiArCS5zdG9yZSA9IE5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cnNfbWVtb3J5X3dyaXRlc1tdID0gewo+ICsJJmRldl9hdHRyX21lbW9yeV93cml0ZXNf aWQuYXR0ciwKPiArCU5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9n cm91cCBncm91cF9tZW1vcnlfd3JpdGVzID0gewo+ICsJLm5hbWUgPSAiMDMzNzJiNjQtNDk5Ni00 ZDNiLWFhMTgtNzkwZTc1ZWViOWMyIiwKPiArCS5hdHRycyA9ICBhdHRyc19tZW1vcnlfd3JpdGVz LAo+ICt9Owo+ICsKPiArc3RhdGljIHNzaXplX3QKPiArc2hvd19jb21wdXRlX2V4dGVuZGVkX2lk KHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFy ICpidWYpCj4gK3sKPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lE X0NPTVBVVEVfRVhURU5ERUQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgZGV2X2F0dHJfY29tcHV0ZV9leHRlbmRlZF9pZCA9IHsKPiArCS5hdHRyID0geyAubmFt ZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAo+ICsJLnNob3cgPSBzaG93X2NvbXB1dGVfZXh0ZW5k ZWRfaWQsCj4gKwkuc3RvcmUgPSBOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHJzX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKPiArCSZkZXZfYXR0cl9jb21wdXRl X2V4dGVuZGVkX2lkLmF0dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCA9IHsKPiArCS5uYW1lID0gIjMx YjRjZTVhLWJkNjEtNGMxZi1iYjVkLWYyZTczMTQxMjE1MCIsCj4gKwkuYXR0cnMgPSAgYXR0cnNf Y29tcHV0ZV9leHRlbmRlZCwKPiArfTsKPiArCj4gK3N0YXRpYyBzc2l6ZV90Cj4gK3Nob3dfY29t cHV0ZV9sM19jYWNoZV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICt7Cj4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxu IiwgTUVUUklDX1NFVF9JRF9DT01QVVRFX0wzX0NBQ0hFKTsKPiArfQo+ICsKPiArc3RhdGljIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2NvbXB1dGVfbDNfY2FjaGVfaWQgPSB7Cj4g KwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKPiArCS5zaG93ID0gc2hv d19jb21wdXRlX2wzX2NhY2hlX2lkLAo+ICsJLnN0b3JlID0gTlVMTCwKPiArfTsKPiArCj4gK3N0 YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19jb21wdXRlX2wzX2NhY2hlW10gPSB7Cj4gKwkm ZGV2X2F0dHJfY29tcHV0ZV9sM19jYWNoZV9pZC5hdHRyLAo+ICsJTlVMTCwKPiArfTsKPiArCj4g K3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfbDNfY2FjaGUgPSB7 Cj4gKwkubmFtZSA9ICIyY2UwOTExYS0yN2ZjLTQ4ODctOTZmMC0xMTA4NGZhODA3YzMiLAo+ICsJ LmF0dHJzID0gIGF0dHJzX2NvbXB1dGVfbDNfY2FjaGUsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3Np emVfdAo+ICtzaG93X2hkY19hbmRfc2ZfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiArewo+ICsJcmV0dXJuIHNwcmludGYo YnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfSERDX0FORF9TRik7Cj4gK30KPiArCj4gK3N0YXRp YyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9oZGNfYW5kX3NmX2lkID0gewo+ICsJ LmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCj4gKwkuc2hvdyA9IHNob3df aGRjX2FuZF9zZl9pZCwKPiArCS5zdG9yZSA9IE5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0cnNfaGRjX2FuZF9zZltdID0gewo+ICsJJmRldl9hdHRyX2hkY19h bmRfc2ZfaWQuYXR0ciwKPiArCU5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJp YnV0ZV9ncm91cCBncm91cF9oZGNfYW5kX3NmID0gewo+ICsJLm5hbWUgPSAiNTQ2YzRjMWQtOTli OC00MmZiLWExMDctNWFhYWJiNTMxNGE4IiwKPiArCS5hdHRycyA9ICBhdHRyc19oZGNfYW5kX3Nm LAo+ICt9Owo+ICsKPiArc3RhdGljIHNzaXplX3QKPiArc2hvd19sM18xX2lkKHN0cnVjdCBkZXZp Y2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sK PiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0wzXzEpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbDNfMV9pZCA9 IHsKPiArCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAo+ICsJLnNob3cg PSBzaG93X2wzXzFfaWQsCj4gKwkuc3RvcmUgPSBOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2wzXzFbXSA9IHsKPiArCSZkZXZfYXR0cl9sM18xX2lkLmF0 dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAg Z3JvdXBfbDNfMSA9IHsKPiArCS5uYW1lID0gIjRlOTNkMTU2LTliMzktNDI2OC04NTQ0LWE4ZTA0 ODA4MDZkNyIsCj4gKwkuYXR0cnMgPSAgYXR0cnNfbDNfMSwKPiArfTsKPiArCj4gK3N0YXRpYyBz c2l6ZV90Cj4gK3Nob3dfbDNfMl9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICt7Cj4gKwlyZXR1cm4gc3ByaW50ZihidWYs ICIlZFxuIiwgTUVUUklDX1NFVF9JRF9MM18yKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2wzXzJfaWQgPSB7Cj4gKwkuYXR0ciA9IHsgLm5hbWUg PSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKPiArCS5zaG93ID0gc2hvd19sM18yX2lkLAo+ICsJLnN0 b3JlID0gTlVMTCwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19s M18yW10gPSB7Cj4gKwkmZGV2X2F0dHJfbDNfMl9pZC5hdHRyLAo+ICsJTlVMTCwKPiArfTsKPiAr Cj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2wzXzIgPSB7Cj4gKwkubmFt ZSA9ICJkZTFiZWM4Ni1jYTkyLTRiNDMtODlmYS0xNDc2NTMyMjFjYzAiLAo+ICsJLmF0dHJzID0g IGF0dHJzX2wzXzIsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtzaG93X2wzXzNfaWQo c3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIg KmJ1ZikKPiArewo+ICsJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURf TDNfMyk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0 cl9sM18zX2lkID0gewo+ICsJLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0s Cj4gKwkuc2hvdyA9IHNob3dfbDNfM19pZCwKPiArCS5zdG9yZSA9IE5VTEwsCj4gK307Cj4gKwo+ ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbDNfM1tdID0gewo+ICsJJmRldl9hdHRy X2wzXzNfaWQuYXR0ciwKPiArCU5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJp YnV0ZV9ncm91cCBncm91cF9sM18zID0gewo+ICsJLm5hbWUgPSAiZTYzNTM3YmItMTBiZS00ZDRh LTkyYzQtYzZiMGM2NWUwMmVmIiwKPiArCS5hdHRycyA9ICBhdHRyc19sM18zLAo+ICt9Owo+ICsK PiArc3RhdGljIHNzaXplX3QKPiArc2hvd19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX2lk KHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFy ICpidWYpCj4gK3sKPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lE X1JBU1RFUklaRVJfQU5EX1BJWEVMX0JBQ0tFTkQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0 IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9p ZCA9IHsKPiArCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAo+ICsJLnNo b3cgPSBzaG93X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQsCj4gKwkuc3RvcmUgPSBO VUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3Jhc3Rlcml6 ZXJfYW5kX3BpeGVsX2JhY2tlbmRbXSA9IHsKPiArCSZkZXZfYXR0cl9yYXN0ZXJpemVyX2FuZF9w aXhlbF9iYWNrZW5kX2lkLmF0dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVj dCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCA9IHsK PiArCS5uYW1lID0gIjdhMDNhOWY4LWVjNWUtNDZiYi04YjY3LTFmMGZmMTQ3NjI4MSIsCj4gKwku YXR0cnMgPSAgYXR0cnNfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCwKPiArfTsKPiArCj4g K3N0YXRpYyBzc2l6ZV90Cj4gK3Nob3dfc2FtcGxlcl9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBz dHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICt7Cj4gKwlyZXR1cm4g c3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9TQU1QTEVSKTsKPiArfQo+ICsKPiAr c3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3NhbXBsZXJfaWQgPSB7Cj4g KwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKPiArCS5zaG93ID0gc2hv d19zYW1wbGVyX2lkLAo+ICsJLnN0b3JlID0gTlVMTCwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlICphdHRyc19zYW1wbGVyW10gPSB7Cj4gKwkmZGV2X2F0dHJfc2FtcGxlcl9p ZC5hdHRyLAo+ICsJTlVMTCwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwIGdyb3VwX3NhbXBsZXIgPSB7Cj4gKwkubmFtZSA9ICJiMjVkMmViZi1hNmUwLTRiMjktOTZi ZS1hOWIwMTBlZGVlZGEiLAo+ICsJLmF0dHJzID0gIGF0dHJzX3NhbXBsZXIsCj4gK307Cj4gKwo+ ICtzdGF0aWMgc3NpemVfdAo+ICtzaG93X3RkbF8xX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiArCXJldHVybiBz cHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1RETF8xKTsKPiArfQo+ICsKPiArc3Rh dGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3RkbF8xX2lkID0gewo+ICsJLmF0 dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCj4gKwkuc2hvdyA9IHNob3dfdGRs XzFfaWQsCj4gKwkuc3RvcmUgPSBOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHJzX3RkbF8xW10gPSB7Cj4gKwkmZGV2X2F0dHJfdGRsXzFfaWQuYXR0ciwKPiAr CU5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF90 ZGxfMSA9IHsKPiArCS5uYW1lID0gIjQ2OWEwNWU1LWUyOTktNDZmNy05NTk4LTdiMDVmM2MzNDk5 MSIsCj4gKwkuYXR0cnMgPSAgYXR0cnNfdGRsXzEsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3NpemVf dAo+ICtzaG93X3RkbF8yX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVk XG4iLCBNRVRSSUNfU0VUX0lEX1RETF8yKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlIGRldl9hdHRyX3RkbF8yX2lkID0gewo+ICsJLmF0dHIgPSB7IC5uYW1lID0g ImlkIiwgLm1vZGUgPSAwNDQ0IH0sCj4gKwkuc2hvdyA9IHNob3dfdGRsXzJfaWQsCj4gKwkuc3Rv cmUgPSBOVUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3Rk bF8yW10gPSB7Cj4gKwkmZGV2X2F0dHJfdGRsXzJfaWQuYXR0ciwKPiArCU5VTEwsCj4gK307Cj4g Kwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF90ZGxfMiA9IHsKPiArCS5u YW1lID0gIjUyZjkyNWM2LTc4NmEtNGVjNi04NmNlLWNiYTg1YzgzNDUzYSIsCj4gKwkuYXR0cnMg PSAgYXR0cnNfdGRsXzIsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtzaG93X2NvbXB1 dGVfZXh0cmFfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKPiArewo+ICsJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1F VFJJQ19TRVRfSURfQ09NUFVURV9FWFRSQSk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9jb21wdXRlX2V4dHJhX2lkID0gewo+ICsJLmF0dHIgPSB7 IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCj4gKwkuc2hvdyA9IHNob3dfY29tcHV0ZV9l eHRyYV9pZCwKPiArCS5zdG9yZSA9IE5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9leHRyYVtdID0gewo+ICsJJmRldl9hdHRyX2NvbXB1dGVf ZXh0cmFfaWQuYXR0ciwKPiArCU5VTEwsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJp YnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2V4dHJhID0gewo+ICsJLm5hbWUgPSAiZWZjNDk3YWMt ODg0ZS00ZWU0LWE0YTgtMTVmYmEyMmFhZjIxIiwKPiArCS5hdHRycyA9ICBhdHRyc19jb21wdXRl X2V4dHJhLAo+ICt9Owo+ICsKPiArc3RhdGljIHNzaXplX3QKPiArc2hvd192bWVfcGlwZV9pZChz dHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAq YnVmKQo+ICt7Cj4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9W TUVfUElQRSk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZf YXR0cl92bWVfcGlwZV9pZCA9IHsKPiArCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0g MDQ0NCB9LAo+ICsJLnNob3cgPSBzaG93X3ZtZV9waXBlX2lkLAo+ICsJLnN0b3JlID0gTlVMTCwK PiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc192bWVfcGlwZVtdID0g ewo+ICsJJmRldl9hdHRyX3ZtZV9waXBlX2lkLmF0dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsKPiAr c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdm1lX3BpcGUgPSB7Cj4gKwkubmFt ZSA9ICJiZmQ5NzY0ZC0yYzViLTRjMTYtYmZjMS04OWRlM2NhMTA5MTciLAo+ICsJLmF0dHJzID0g IGF0dHJzX3ZtZV9waXBlLAo+ICt9Owo+ICsKPiArc3RhdGljIHNzaXplX3QKPiArc2hvd190ZXN0 X29hX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRy LCBjaGFyICpidWYpCj4gK3sKPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNf U0VUX0lEX1RFU1RfT0EpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgZGV2X2F0dHJfdGVzdF9vYV9pZCA9IHsKPiArCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5t b2RlID0gMDQ0NCB9LAo+ICsJLnNob3cgPSBzaG93X3Rlc3Rfb2FfaWQsCj4gKwkuc3RvcmUgPSBO VUxMLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3Rlc3Rfb2Fb XSA9IHsKPiArCSZkZXZfYXR0cl90ZXN0X29hX2lkLmF0dHIsCj4gKwlOVUxMLAo+ICt9Owo+ICsK PiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdGVzdF9vYSA9IHsKPiArCS5u YW1lID0gImYxNzkyZjMyLTZkYjItNGI1MC1iNGIyLTU1NzEyOGYxNjg4ZCIsCj4gKwkuYXR0cnMg PSAgYXR0cnNfdGVzdF9vYSwKPiArfTsKPiArCj4gK2ludAo+ICtpOTE1X3BlcmZfcmVnaXN0ZXJf c3lzZnNfa2JsZ3QzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJ Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICptdXhfcmVnc1tBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzKV07Cj4gKwlpbnQgbXV4X2xlbnNbQVJSQVlfU0laRShkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW5zKV07Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwlpZiAoZ2V0 X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7 Cj4gKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29i aiwgJmdyb3VwX3JlbmRlcl9iYXNpYyk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBlcnJvcl9y ZW5kZXJfYmFzaWM7Cj4gKwl9Cj4gKwlpZiAoZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2Jhc2ljKTsK PiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVycm9yX2NvbXB1dGVfYmFzaWM7Cj4gKwl9Cj4gKwlp ZiAoZ2V0X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVy Zi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfcGlwZV9wcm9maWxlKTsKPiArCQlpZiAocmV0 KQo+ICsJCQlnb3RvIGVycm9yX3JlbmRlcl9waXBlX3Byb2ZpbGU7Cj4gKwl9Cj4gKwlpZiAoZ2V0 X21lbW9yeV9yZWFkc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7 Cj4gKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29i aiwgJmdyb3VwX21lbW9yeV9yZWFkcyk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBlcnJvcl9t ZW1vcnlfcmVhZHM7Cj4gKwl9Cj4gKwlpZiAoZ2V0X21lbW9yeV93cml0ZXNfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9tZW1vcnlfd3JpdGVzKTsK PiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVycm9yX21lbW9yeV93cml0ZXM7Cj4gKwl9Cj4gKwlp ZiAoZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11 eF9sZW5zKSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dGVuZGVkKTsKPiArCQlpZiAocmV0KQo+ICsJ CQlnb3RvIGVycm9yX2NvbXB1dGVfZXh0ZW5kZWQ7Cj4gKwl9Cj4gKwlpZiAoZ2V0X2NvbXB1dGVf bDNfY2FjaGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewo+ICsJ CXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9jb21wdXRlX2wzX2NhY2hlKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVycm9yX2Nv bXB1dGVfbDNfY2FjaGU7Cj4gKwl9Cj4gKwlpZiAoZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9oZGNfYW5kX3NmKTsKPiAr CQlpZiAocmV0KQo+ICsJCQlnb3RvIGVycm9yX2hkY19hbmRfc2Y7Cj4gKwl9Cj4gKwlpZiAoZ2V0 X2wzXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewo+ICsJCXJl dCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91 cF9sM18xKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVycm9yX2wzXzE7Cj4gKwl9Cj4gKwlp ZiAoZ2V0X2wzXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewo+ ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF9sM18yKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVycm9yX2wzXzI7Cj4gKwl9 Cj4gKwlpZiAoZ2V0X2wzXzNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5z KSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF9sM18zKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVycm9yX2wzXzM7 Cj4gKwl9Cj4gKwlpZiAoZ2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZp ZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0 ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yYXN0ZXJpemVyX2Fu ZF9waXhlbF9iYWNrZW5kKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVycm9yX3Jhc3Rlcml6 ZXJfYW5kX3BpeGVsX2JhY2tlbmQ7Cj4gKwl9Cj4gKwlpZiAoZ2V0X3NhbXBsZXJfbXV4X2NvbmZp ZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0 ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9zYW1wbGVyKTsKPiAr CQlpZiAocmV0KQo+ICsJCQlnb3RvIGVycm9yX3NhbXBsZXI7Cj4gKwl9Cj4gKwlpZiAoZ2V0X3Rk bF8xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKPiArCQlyZXQg PSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf dGRsXzEpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gZXJyb3JfdGRsXzE7Cj4gKwl9Cj4gKwlp ZiAoZ2V0X3RkbF8yX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsK PiArCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfdGRsXzIpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gZXJyb3JfdGRsXzI7Cj4g Kwl9Cj4gKwlpZiAoZ2V0X2NvbXB1dGVfZXh0cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+ cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dHJhKTsKPiArCQlpZiAocmV0KQo+ ICsJCQlnb3RvIGVycm9yX2NvbXB1dGVfZXh0cmE7Cj4gKwl9Cj4gKwlpZiAoZ2V0X3ZtZV9waXBl X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKPiArCQlyZXQgPSBz eXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdm1l X3BpcGUpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gZXJyb3Jfdm1lX3BpcGU7Cj4gKwl9Cj4g KwlpZiAoZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5z KSkgewo+ICsJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF90ZXN0X29hKTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGVycm9yX3Rl c3Rfb2E7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtlcnJvcl90ZXN0X29hOgo+ICsJ aWYgKGdldF92bWVfcGlwZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF92bWVfcGlwZSk7Cj4gK2Vycm9yX3ZtZV9waXBlOgo+ICsJaWYgKGdldF9jb21wdXRlX2V4 dHJhX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNf cmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVf ZXh0cmEpOwo+ICtlcnJvcl9jb21wdXRlX2V4dHJhOgo+ICsJaWYgKGdldF90ZGxfMl9tdXhfY29u ZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7Cj4gK2Vycm9yX3Rk bF8yOgo+ICsJaWYgKGdldF90ZGxfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tv YmosICZncm91cF90ZGxfMSk7Cj4gK2Vycm9yX3RkbF8xOgo+ICsJaWYgKGdldF9zYW1wbGVyX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3NhbXBsZXIpOwo+ICtl cnJvcl9zYW1wbGVyOgo+ICsJaWYgKGdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Jhc3Rlcml6ZXJfYW5k X3BpeGVsX2JhY2tlbmQpOwo+ICtlcnJvcl9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOgo+ ICsJaWYgKGdldF9sM18zX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykp Cj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdy b3VwX2wzXzMpOwo+ICtlcnJvcl9sM18zOgo+ICsJaWYgKGdldF9sM18yX211eF9jb25maWcoZGV2 X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzIpOwo+ICtlcnJvcl9sM18yOgo+ICsJ aWYgKGdldF9sM18xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4g KwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X2wzXzEpOwo+ICtlcnJvcl9sM18xOgo+ICsJaWYgKGdldF9oZGNfYW5kX3NmX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRl dl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2hkY19hbmRfc2YpOwo+ICtlcnJvcl9o ZGNfYW5kX3NmOgo+ICsJaWYgKGdldF9jb21wdXRlX2wzX2NhY2hlX211eF9jb25maWcoZGV2X3By aXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfbDNfY2FjaGUpOwo+ICtlcnJvcl9j b21wdXRlX2wzX2NhY2hlOgo+ICsJaWYgKGdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRl dl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0ZW5kZWQpOwo+ICtl cnJvcl9jb21wdXRlX2V4dGVuZGVkOgo+ICsJaWYgKGdldF9tZW1vcnlfd3JpdGVzX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3Vw KGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMpOwo+ICtl cnJvcl9tZW1vcnlfd3JpdGVzOgo+ICsJaWYgKGdldF9tZW1vcnlfcmVhZHNfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKPiArCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2 X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3JlYWRzKTsKPiArZXJyb3Jf bWVtb3J5X3JlYWRzOgo+ICsJaWYgKGdldF9yZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRl dl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwo+ ICtlcnJvcl9yZW5kZXJfcGlwZV9wcm9maWxlOgo+ICsJaWYgKGdldF9jb21wdXRlX2Jhc2ljX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfYmFzaWMp Owo+ICtlcnJvcl9jb21wdXRlX2Jhc2ljOgo+ICsJaWYgKGdldF9yZW5kZXJfYmFzaWNfbXV4X2Nv bmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKPiArCQlzeXNmc19yZW1vdmVfZ3Jv dXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX2Jhc2ljKTsKPiAr ZXJyb3JfcmVuZGVyX2Jhc2ljOgo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArdm9pZAo+ICtp OTE1X3BlcmZfdW5yZWdpc3Rlcl9zeXNmc19rYmxndDMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKm11eF9yZWdzW0FS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpXTsKPiArCWludCBtdXhfbGVuc1tB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpXTsKPiArCj4gKwlpZiAo Z2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9yZW5kZXJfYmFzaWMpOwo+ICsJaWYgKGdldF9jb21wdXRlX2Jhc2ljX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRl dl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfYmFzaWMpOwo+ICsJaWYg KGdldF9yZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBt dXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwo+ICsJaWYgKGdldF9tZW1vcnlfcmVh ZHNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKPiArCQlzeXNmc19y ZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3Jl YWRzKTsKPiArCWlmIChnZXRfbWVtb3J5X3dyaXRlc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9tZW1vcnlfd3JpdGVzKTsKPiArCWlmIChnZXRfY29tcHV0ZV9l eHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5 c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21w dXRlX2V4dGVuZGVkKTsKPiArCWlmIChnZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRl dl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZf cHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2wzX2NhY2hlKTsKPiArCWlm IChnZXRfaGRjX2FuZF9zZl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9oZGNfYW5kX3NmKTsKPiArCWlmIChnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVy Zi5tZXRyaWNzX2tvYmosICZncm91cF9sM18xKTsKPiArCWlmIChnZXRfbDNfMl9tdXhfY29uZmln KGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18yKTsKPiArCWlmIChnZXRfbDNf M19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2ZzX3Jl bW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18zKTsKPiAr CWlmIChnZXRfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9tdXhfY29uZmlnKGRldl9wcml2 LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+ cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsK PiArCWlmIChnZXRfc2FtcGxlcl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF9zYW1wbGVyKTsKPiArCWlmIChnZXRfdGRsXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwg bXV4X3JlZ3MsIG11eF9sZW5zKSkKPiArCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBl cmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzEpOwo+ICsJaWYgKGdldF90ZGxfMl9tdXhfY29u ZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2ZzX3JlbW92ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7Cj4gKwlpZiAoZ2V0 X2NvbXB1dGVfZXh0cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkK PiArCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfY29tcHV0ZV9leHRyYSk7Cj4gKwlpZiAoZ2V0X3ZtZV9waXBlX211eF9jb25maWcoZGV2X3By aXYsIG11eF9yZWdzLCBtdXhfbGVucykpCj4gKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3ZtZV9waXBlKTsKPiArCWlmIChnZXRfdGVzdF9v YV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQo+ICsJCXN5c2ZzX3Jl bW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZXN0X29hKTsK PiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2tibGd0My5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9rYmxndDMuaAo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xMGNjY2NiNDNhMWQKPiAtLS0gL2Rldi9udWxs Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9rYmxndDMuaAo+IEBAIC0wLDAg KzEsMzggQEAKPiArLyoKPiArICogQXV0b2dlbmVyYXRlZCBmaWxlLCBETyBOT1QgRURJVCBtYW51 YWxseSEKPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE1IEludGVsIENvcnBvcmF0aW9uCj4g KyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S Cj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFV VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H Uwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX0k5 MTVfT0FfS0JMR1QzX0hfXwo+ICsjZGVmaW5lIF9fSTkxNV9PQV9LQkxHVDNfSF9fCj4gKwo+ICtl eHRlcm4gaW50IGk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRzX2tibGd0MzsKPiArCj4gK2V4 dGVybiBpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9rYmxndDMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKPiArCj4gK2V4dGVybiBpbnQgaTkxNV9wZXJmX3JlZ2lzdGVy X3N5c2ZzX2tibGd0MyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICsKPiAr ZXh0ZXJuIHZvaWQgaTkxNV9wZXJmX3VucmVnaXN0ZXJfc3lzZnNfa2JsZ3QzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gKwo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BlcmYuYwo+IGluZGV4IDU4YzkyOGViNzBlNi4uNThiYjRiOGYwNGZkIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wZXJmLmMKPiBAQCAtMjAyLDYgKzIwMiw4IEBACj4gICNpbmNsdWRlICJpOTE1 X29hX3NrbGd0My5oIgo+ICAjaW5jbHVkZSAiaTkxNV9vYV9za2xndDQuaCIKPiAgI2luY2x1ZGUg Imk5MTVfb2FfYnh0LmgiCj4gKyNpbmNsdWRlICJpOTE1X29hX2tibGd0Mi5oIgo+ICsjaW5jbHVk ZSAiaTkxNV9vYV9rYmxndDMuaCIKPiAgCj4gIC8qIEhXIHJlcXVpcmVzIHRoaXMgdG8gYmUgYSBw b3dlciBvZiB0d28sIGJldHdlZW4gMTI4ayBhbmQgMTZNLCB0aG91Z2ggZHJpdmVyCj4gICAqIGlz IGN1cnJlbnRseSBnZW5lcmFsbHkgZGVzaWduZWQgYXNzdW1pbmcgdGhlIGxhcmdlc3QgMTZNIHNp emUgaXMgdXNlZCBzdWNoCj4gQEAgLTE3ODksNyArMTc5MSw4IEBAIHN0YXRpYyBpbnQgZ2VuOF9l bmFibGVfbWV0cmljX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkg KiBiZSByZWFkIGJhY2sgZnJvbSBhdXRvbWF0aWNhbGx5IHRyaWdnZXJlZCByZXBvcnRzLCBhcyBw YXJ0IG9mIHRoZQo+ICAJICogUlBUX0lEIGZpZWxkLgo+ICAJICovCj4gLQlpZiAoSVNfU0tZTEFL RShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpIHsKPiArCWlmIChJU19TS1lMQUtF KGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSB8fAo+ICsJICAgIElTX0tBQllMQUtF KGRldl9wcml2KSkgewo+ICAJCUk5MTVfV1JJVEUoR0VOOF9PQV9ERUJVRywKPiAgCQkJICAgX01B U0tFRF9CSVRfRU5BQkxFKEdFTjlfT0FfREVCVUdfRElTQUJMRV9DTEtfUkFUSU9fUkVQT1JUUyB8 Cj4gIAkJCQkJICAgICAgR0VOOV9PQV9ERUJVR19JTkNMVURFX0NMS19SQVRJTykpOwo+IEBAIC0y ODc2LDYgKzI4NzksMTUgQEAgdm9pZCBpOTE1X3BlcmZfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJfSBlbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkg ewo+ICAJCWlmIChpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNfYnh0KGRldl9wcml2KSkKPiAgCQkJ Z290byBzeXNmc19lcnJvcjsKPiArCX0gZWxzZSBpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7 Cj4gKwkJaWYgKElTX0tCTF9HVDIoZGV2X3ByaXYpKSB7Cj4gKwkJCWlmIChpOTE1X3BlcmZfcmVn aXN0ZXJfc3lzZnNfa2JsZ3QyKGRldl9wcml2KSkKPiArCQkJCWdvdG8gc3lzZnNfZXJyb3I7Cj4g KwkJfSBlbHNlIGlmIChJU19LQkxfR1QzKGRldl9wcml2KSkgewo+ICsJCQlpZiAoaTkxNV9wZXJm X3JlZ2lzdGVyX3N5c2ZzX2tibGd0MyhkZXZfcHJpdikpCj4gKwkJCQlnb3RvIHN5c2ZzX2Vycm9y Owo+ICsJCX0gZWxzZQo+ICsJCQlnb3RvIHN5c2ZzX2Vycm9yOwo+ICAJfQo+ICAKPiAgCWdvdG8g ZXhpdDsKPiBAQCAtMjkxNyw2ICsyOTI5LDEyIEBAIHZvaWQgaTkxNV9wZXJmX3VucmVnaXN0ZXIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCQlpOTE1X3BlcmZfdW5yZWdp c3Rlcl9zeXNmc19za2xndDQoZGV2X3ByaXYpOwo+ICAJfSBlbHNlIGlmIChJU19CUk9YVE9OKGRl dl9wcml2KSkKPiAgCQlpOTE1X3BlcmZfdW5yZWdpc3Rlcl9zeXNmc19ieHQoZGV2X3ByaXYpOwo+ ICsJZWxzZSBpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7Cj4gKwkJaWYgKElTX0tCTF9HVDIo ZGV2X3ByaXYpKQo+ICsJCQlpOTE1X3BlcmZfdW5yZWdpc3Rlcl9zeXNmc19rYmxndDIoZGV2X3By aXYpOwo+ICsJCWVsc2UgaWYgKElTX0tCTF9HVDMoZGV2X3ByaXYpKQo+ICsJCQlpOTE1X3BlcmZf dW5yZWdpc3Rlcl9zeXNmc19rYmxndDMoZGV2X3ByaXYpOwo+ICsJfQo+ICAKPiAgCWtvYmplY3Rf cHV0KGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaik7Cj4gIAlkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmogPSBOVUxMOwo+IEBAIC0zMDUwLDYgKzMwNjgsMTYgQEAgdm9pZCBpOTE1X3BlcmZf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCQkJaTkxNV9vYV9u X2J1aWx0aW5fbWV0cmljX3NldHNfYnh0Owo+ICAJCQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLnNl bGVjdF9tZXRyaWNfc2V0ID0KPiAgCQkJCQlpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2J4dDsK PiArCQkJfSBlbHNlIGlmIChJU19LQkxfR1QyKGRldl9wcml2KSkgewo+ICsJCQkJZGV2X3ByaXYt PnBlcmYub2Eubl9idWlsdGluX3NldHMgPQo+ICsJCQkJCWk5MTVfb2Ffbl9idWlsdGluX21ldHJp Y19zZXRzX2tibGd0MjsKPiArCQkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5zZWxlY3RfbWV0cmlj X3NldCA9Cj4gKwkJCQkJaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9rYmxndDI7Cj4gKwkJCX0g ZWxzZSBpZiAoSVNfS0JMX0dUMyhkZXZfcHJpdikpIHsKPiArCQkJCWRldl9wcml2LT5wZXJmLm9h Lm5fYnVpbHRpbl9zZXRzID0KPiArCQkJCQlpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19r YmxndDM7Cj4gKwkJCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMuc2VsZWN0X21ldHJpY19zZXQgPQo+ ICsJCQkJCWk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRfa2JsZ3QzOwo+ICAJCQl9Cj4gIAkJfQo+ ICAKPiAtLSAKPiAyLjExLjAKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK