From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 07/14] drm/i915: Start moving the cdclk stuff into a distinct state structure Date: Thu, 22 Dec 2016 16:33:48 +0200 Message-ID: <20161222143348.GO31595@intel.com> References: <20161219172840.31842-1-ville.syrjala@linux.intel.com> <20161219172840.31842-8-ville.syrjala@linux.intel.com> <1482416080.4759.61.camel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id DB0DB6F2CD for ; Thu, 22 Dec 2016 14:33:52 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1482416080.4759.61.camel@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan De Oliveira Cc: intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBEZWMgMjIsIDIwMTYgYXQgMDQ6MTQ6NDBQTSArMDIwMCwgQW5kZXIgQ29uc2VsdmFu IERlIE9saXZlaXJhIHdyb3RlOgo+IE9uIE1vbiwgMjAxNi0xMi0xOSBhdCAxOToyOCArMDIwMCwg dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20gd3JvdGU6Cj4gPiBGcm9tOiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gCj4gPiBJbnRyb2R1Y2Ug aW50ZWxfY2RjbGsgc3RhdGUgd2hpY2ggZm9yIG5vdyB3aWxsIHRyYWNrIHRoZSBjZGNsawo+ID4g ZnJlcXVlbmN5LCB0aGUgdmNvIGZyZXF1ZW5jeSBhbmQgdGhlIHJlZmVyZW5jZSBmcmVxdWVuY3kg KG5vdCBzdXJlIHdlCj4gPiB3YW50IHRoZSBsYXN0IG9uZSwgYnV0IEkgcHV0IGl0IHRoZXJlIGFu eXdheSkuIFdlJ2xsIGFsc28gbWFrZSB0aGUKPiA+IC5nZXRfY2RjbGsoKSBmdW5jdGlvbiBmaWxs IG91dCB0aGlzIHN0YXRlIHN0cnVjdHVyZSByYXRoZXIgdGhhbgo+ID4ganVzdCByZXR1cm5pbmcg dGhlIGN1cnJlbnQgY2RjbGsgZnJlcXVlbmN5Lgo+ID4gCj4gPiBPbmUgaW1tZWRpYXRlIGJlbmVm aXQgaXMgdGhhdCBjYWxsaW5nIC5nZXRfY2RjbGsoKSB3aWxsIG5vIGxvbmdlcgo+ID4gY2xvYmJl ciBzdGF0ZSBzdG9yZWQgdW5kZXIgZGV2X3ByaXYgdW5sZXNzIGV4W3BsaWNpdGx5IHRvbGQgdG8g ZG8KPiAKPiBUeXBvOiBleFtwbGljaXR5Cj4gCj4gPiBzby4gUHJldmlvdXNseSBpdCBjbG9iYmVy ZWQgdGhlIHZjbyBhbmQgcmVmZXJlbmNlIGNsb2NrcyBzdG9yZWQKPiA+IHRoZXJlIG9uIHNvbWUg cGxhdGZvcm1zLgo+ID4gCj4gPiBXZSdsbCBleHBhbmQgdGhlIHVzZSBvZiB0aGlzIHN0cnVjdHVy ZSB0byBhY3R1YWxseSBwcmVjb21wdXRpbmcgdGhlCj4gPiBzdGF0ZSBhbmQgd2hhdG5vdCBsYXRl ci4KPiA+IAo+ID4gdjI6IENvbnN0aWZ5IGludGVsX2NkY2xrX3N0YXRlX2NvbXBhcmUoKQo+ID4g Cj4gPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXgu aW50ZWwuY29tPgo+IAo+IEEgY291cGxlIG1vcmUgY29tbWVudHMgYmVsb2V3LCBidXQgZWl0aGVy IHdheSwKPiAKPiBSZXZpZXdlZC1ieTogQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJhIDxjb25z ZWx2YW4yQGdtYWlsLmNvbT4KPiAKPiA+IC0tLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuY8KgwqDCoMKgwqB8wqDCoMKgMiArLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5owqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxNCArLQo+ID4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jwqDCoMKgwqDCoMKgfMKgwqDCoDIgKy0KPiA+IMKg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuY8KgwqDCoMKgwqDCoHwgMzU5ICsrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuY8KgwqDCoMKgfMKgwqAxOCArLQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDIgKy0KPiA+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmjCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDMgKwo+ID4gwqBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuY8KgwqDCoMKgwqDCoMKgwqB8wqDCoMKgMiAr LQo+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jwqDCoMKgwqDCoMKgfMKg wqDCoDQgKy0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIHzC oMKgwqA1ICstCj4gPiDCoDEwIGZpbGVzIGNoYW5nZWQsIDI0MCBpbnNlcnRpb25zKCspLCAxNzEg ZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiBp bmRleCAxNWRlYjJiYzU2OGIuLmMwMTcxZWVmOGY5NiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+ID4gQEAgLTEyMzUsNyArMTIzNSw3IEBAIHN0YXRpYyBpbnQgaTkx NV9mcmVxdWVuY3lfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiA+IMKg CQlzZXFfcHV0cyhtLCAibm8gUC1zdGF0ZSBpbmZvIGF2YWlsYWJsZVxuIik7Cj4gPiDCoAl9Cj4g PiDCoAo+ID4gLQlzZXFfcHJpbnRmKG0sICJDdXJyZW50IENEIGNsb2NrIGZyZXF1ZW5jeTogJWQg a0h6XG4iLCBkZXZfcHJpdi0+Y2RjbGtfZnJlcSk7Cj4gPiArCXNlcV9wcmludGYobSwgIkN1cnJl bnQgQ0QgY2xvY2sgZnJlcXVlbmN5OiAlZCBrSHpcbiIsIGRldl9wcml2LT5jZGNsay5ody5jZGNs ayk7Cj4gPiDCoAlzZXFfcHJpbnRmKG0sICJNYXggQ0QgY2xvY2sgZnJlcXVlbmN5OiAlZCBrSHpc biIsIGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSk7Cj4gPiDCoAlzZXFfcHJpbnRmKG0sICJNYXgg cGl4ZWwgY2xvY2sgZnJlcXVlbmN5OiAlZCBrSHpcbiIsIGRldl9wcml2LT5tYXhfZG90Y2xrX2Zy ZXEpOwo+ID4gwqAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gaW5kZXggMzkzYjM0ZmIy ZDFhLi5hNGYxMjMxZmY4Y2EgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBA QCAtNjA5LDkgKzYwOSwxMSBAQCBzdHJ1Y3QgaW50ZWxfaW5pdGlhbF9wbGFuZV9jb25maWc7Cj4g PiDCoHN0cnVjdCBpbnRlbF9jcnRjOwo+ID4gwqBzdHJ1Y3QgaW50ZWxfbGltaXQ7Cj4gPiDCoHN0 cnVjdCBkcGxsOwo+ID4gK3N0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZTsKPiA+IMKgCj4gPiDCoHN0 cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKPiA+IC0JaW50ICgqZ2V0X2NkY2xrKShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gKwl2b2lkICgqZ2V0X2NkY2xrKShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiArCQkJwqDCoHN0cnVjdCBpbnRl bF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpOwo+ID4gwqAJaW50ICgqZ2V0X2ZpZm9fc2l6ZSko c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgcGxhbmUpOwo+ID4gwqAJaW50 ICgqY29tcHV0ZV9waXBlX3dtKShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKTsKPiA+ IMKgCWludCAoKmNvbXB1dGVfaW50ZXJtZWRpYXRlX3dtKShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ID4gQEAgLTIxMjYsNiArMjEyOCwxMCBAQCBzdHJ1Y3QgaTkxNV9vYV9vcHMgewo+ID4gwqAJ Ym9vbCAoKm9hX2J1ZmZlcl9pc19lbXB0eSkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKPiA+IMKgfTsKPiA+IMKgCj4gPiArc3RydWN0IGludGVsX2NkY2xrX3N0YXRlIHsKPiA+ ICsJdW5zaWduZWQgaW50IGNkY2xrLCB2Y28sIHJlZjsKPiA+ICt9Owo+ID4gKwo+IAo+IE1heWJl IGRvY3VtZW50IHRoZSBmaWVsZHMgd2hpbGUgYXQgaXQuCgpZZWFoLiBJIGd1ZXNzIEkgc2hvdWxk IHN0YXJ0IHByaW5rbGluZyBpbiBzb21lIGRvY3MgdG8gaGVscCBuZXdjb21lcnMuClVzdWFsbHkg SSBvbmx5IGRvY3VtZW50IHRoaW5ncyB0aGF0IGFyZW4ndCBhbGwgdGhhdCBvYnZpb3VzIChoYXJk d2FyZQpmYWlscyBhbmQgd2hhbm90KS4gSXQgZG9lc24ndCBoZWxwIHRoYXQgbXkgYnJhaW4gYXV0 b21hdGljYWxseSBmaWx0ZXJzCmNvbW1lbnRzIG91dCBzbyB0aGF0IEkgcm91dGluZWx5IGZhaWwg dG8gdXBkYXRlIHRoZW0gZXZlbiB3aGVuIHRoZXkKYWxyZWFkeSBleGlzdC4KCgo+IAo+ID4gwqBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gPiDCoAlzdHJ1Y3QgZHJtX2RldmljZSBkcm07Cj4g PiDCoAo+ID4gQEAgLTIyMjksNyArMjIzNSw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsK PiA+IMKgCj4gPiDCoAl1bnNpZ25lZCBpbnQgZnNiX2ZyZXEsIG1lbV9mcmVxLCBpc19kZHIzOwo+ ID4gwqAJdW5zaWduZWQgaW50IHNrbF9wcmVmZXJyZWRfdmNvX2ZyZXE7Cj4gPiAtCXVuc2lnbmVk IGludCBjZGNsa19mcmVxLCBtYXhfY2RjbGtfZnJlcTsKPiA+ICsJdW5zaWduZWQgaW50IG1heF9j ZGNsa19mcmVxOwo+ID4gwqAKPiA+IMKgCS8qCj4gPiDCoAnCoCogRm9yIHJlYWRpbmcgaG9sZGlu ZyBhbnkgY3J0YyBsb2NrIGlzIHN1ZmZpY2llbnQsCj4gPiBAQCAtMjI0Myw4ICsyMjQ5LDggQEAg c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ID4gwqAJdW5zaWduZWQgaW50IGN6Y2xrX2ZyZXE7 Cj4gPiDCoAo+ID4gwqAJc3RydWN0IHsKPiA+IC0JCXVuc2lnbmVkIGludCB2Y28sIHJlZjsKPiA+ IC0JfSBjZGNsa19wbGw7Cj4gPiArCQlzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgaHc7Cj4gPiAr CX0gY2RjbGs7Cj4gPiDCoAo+ID4gwqAJLyoqCj4gPiDCoAnCoCogd3EgLSBEcml2ZXIgd29ya3F1 ZXVlIGZvciBHRU0uCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXVkaW8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiA+IGluZGV4IDNi YmM5NmMxNzY3Zi4uYTI5MjI0Njk5NWVmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXVkaW8uYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXVkaW8uYwo+ID4gQEAgLTczNCw3ICs3MzQsNyBAQCBzdGF0aWMgaW50IGk5MTVfYXVkaW9fY29t cG9uZW50X2dldF9jZGNsa19mcmVxKHN0cnVjdCBkZXZpY2UgKmtkZXYpCj4gPiDCoAlpZiAoV0FS Tl9PTl9PTkNFKCFIQVNfRERJKGRldl9wcml2KSkpCj4gPiDCoAkJcmV0dXJuIC1FTk9ERVY7Cj4g PiDCoAo+ID4gLQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrX2ZyZXE7Cj4gPiArCXJldHVybiBkZXZf cHJpdi0+Y2RjbGsuaHcuY2RjbGs7Cj4gPiDCoH0KPiA+IMKgCj4gPiDCoC8qCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NkY2xrLmMKPiA+IGluZGV4IDg5YmU2MTBkMDg3OS4uMTNjM2I1NTU1NDcz IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYwo+ID4gQEAgLTIzLDM3ICsy Myw0NCBAQAo+ID4gwqAKPiA+IMKgI2luY2x1ZGUgImludGVsX2Rydi5oIgo+ID4gwqAKPiA+IC1z dGF0aWMgaW50IGZpeGVkXzEzM21oel9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ID4gK3N0YXRpYyB2b2lkIGZpeGVkXzEzM21oel9nZXRfY2RjbGsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gKwkJCQnCoMKgwqBzdHJ1Y3QgaW50ZWxf Y2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQo+ID4gwqB7Cj4gPiAtCXJldHVybiAxMzMzMzM7Cj4g PiArCWNkY2xrX3N0YXRlLT5jZGNsayA9IDEzMzMzMzsKPiA+IMKgfQo+ID4gwqAKPiA+IC1zdGF0 aWMgaW50IGZpeGVkXzIwMG1oel9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ID4gK3N0YXRpYyB2b2lkIGZpeGVkXzIwMG1oel9nZXRfY2RjbGsoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gKwkJCQnCoMKgwqBzdHJ1Y3QgaW50ZWxfY2Rj bGtfc3RhdGUgKmNkY2xrX3N0YXRlKQo+ID4gwqB7Cj4gPiAtCXJldHVybiAyMDAwMDA7Cj4gPiAr CWNkY2xrX3N0YXRlLT5jZGNsayA9IDIwMDAwMDsKPiA+IMKgfQo+ID4gwqAKPiA+IC1zdGF0aWMg aW50IGZpeGVkXzI2Nm1oel9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ID4gK3N0YXRpYyB2b2lkIGZpeGVkXzI2Nm1oel9nZXRfY2RjbGsoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gKwkJCQnCoMKgwqBzdHJ1Y3QgaW50ZWxfY2RjbGtf c3RhdGUgKmNkY2xrX3N0YXRlKQo+ID4gwqB7Cj4gPiAtCXJldHVybiAyNjY2Njc7Cj4gPiArCWNk Y2xrX3N0YXRlLT5jZGNsayA9IDI2NjY2NzsKPiA+IMKgfQo+ID4gwqAKPiA+IC1zdGF0aWMgaW50 IGZpeGVkXzMzM21oel9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ID4gK3N0YXRpYyB2b2lkIGZpeGVkXzMzM21oel9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gKwkJCQnCoMKgwqBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3Rh dGUgKmNkY2xrX3N0YXRlKQo+ID4gwqB7Cj4gPiAtCXJldHVybiAzMzMzMzM7Cj4gPiArCWNkY2xr X3N0YXRlLT5jZGNsayA9IDMzMzMzMzsKPiA+IMKgfQo+ID4gwqAKPiA+IC1zdGF0aWMgaW50IGZp eGVkXzQwMG1oel9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ID4gK3N0YXRpYyB2b2lkIGZpeGVkXzQwMG1oel9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ID4gKwkJCQnCoMKgwqBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUg KmNkY2xrX3N0YXRlKQo+ID4gwqB7Cj4gPiAtCXJldHVybiA0MDAwMDA7Cj4gPiArCWNkY2xrX3N0 YXRlLT5jZGNsayA9IDQwMDAwMDsKPiA+IMKgfQo+ID4gwqAKPiA+IC1zdGF0aWMgaW50IGZpeGVk XzQ1MG1oel9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4g K3N0YXRpYyB2b2lkIGZpeGVkXzQ1MG1oel9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ID4gKwkJCQnCoMKgwqBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNk Y2xrX3N0YXRlKQo+ID4gwqB7Cj4gPiAtCXJldHVybiA0NTAwMDA7Cj4gPiArCWNkY2xrX3N0YXRl LT5jZGNsayA9IDQ1MDAwMDsKPiA+IMKgfQo+ID4gwqAKPiA+IC1zdGF0aWMgaW50IGk4NXhfZ2V0 X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ICtzdGF0aWMgdm9p ZCBpODV4X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAr CQkJwqDCoMKgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkKPiA+IMKgewo+ ID4gwqAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXZfcHJpdi0+ZHJtLnBkZXY7Cj4gPiDCoAl1 MTYgaHBsbGNjID0gMDsKPiA+IEBAIC02Myw4ICs3MCwxMCBAQCBzdGF0aWMgaW50IGk4NXhfZ2V0 X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgCcKgKiBlbmNv ZGluZyBpcyBkaWZmZXJlbnQgOigKPiA+IMKgCcKgKiBGSVhNRSBpcyB0aGlzIHRoZSByaWdodCB3 YXkgdG8gZGV0ZWN0IDg1MkdNLzg1MkdNVj8KPiA+IMKgCcKgKi8KPiA+IC0JaWYgKHBkZXYtPnJl dmlzaW9uID09IDB4MSkKPiA+IC0JCXJldHVybiAxMzMzMzM7Cj4gPiArCWlmIChwZGV2LT5yZXZp c2lvbiA9PSAweDEpIHsKPiA+ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDEzMzMzMzsKPiA+ICsJ CXJldHVybjsKPiA+ICsJfQo+ID4gwqAKPiA+IMKgCXBjaV9idXNfcmVhZF9jb25maWdfd29yZChw ZGV2LT5idXMsCj4gPiDCoAkJCQnCoFBDSV9ERVZGTigwLCAzKSwgSFBMTENDLCAmaHBsbGNjKTsK PiA+IEBAIC03NiwzNyArODUsNDMgQEAgc3RhdGljIGludCBpODV4X2dldF9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoAljYXNlIEdDX0NMT0NLXzEzM18yMDA6 Cj4gPiDCoAljYXNlIEdDX0NMT0NLXzEzM18yMDBfMjoKPiA+IMKgCWNhc2UgR0NfQ0xPQ0tfMTAw XzIwMDoKPiA+IC0JCXJldHVybiAyMDAwMDA7Cj4gPiArCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAy MDAwMDA7Cj4gPiArCQlicmVhazsKPiA+IMKgCWNhc2UgR0NfQ0xPQ0tfMTY2XzI1MDoKPiA+IC0J CXJldHVybiAyNTAwMDA7Cj4gPiArCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAyNTAwMDA7Cj4gPiAr CQlicmVhazsKPiA+IMKgCWNhc2UgR0NfQ0xPQ0tfMTAwXzEzMzoKPiA+IC0JCXJldHVybiAxMzMz MzM7Cj4gPiArCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAxMzMzMzM7Cj4gPiArCQlicmVhazsKPiA+ IMKgCWNhc2UgR0NfQ0xPQ0tfMTMzXzI2NjoKPiA+IMKgCWNhc2UgR0NfQ0xPQ0tfMTMzXzI2Nl8y Ogo+ID4gwqAJY2FzZSBHQ19DTE9DS18xNjZfMjY2Ogo+ID4gLQkJcmV0dXJuIDI2NjY2NzsKPiA+ ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDI2NjY2NzsKPiA+ICsJCWJyZWFrOwo+ID4gwqAJfQo+ ID4gLQo+ID4gLQkvKiBTaG91bGRuJ3QgaGFwcGVuICovCj4gPiAtCXJldHVybiAwOwo+ID4gwqB9 Cj4gPiDCoAo+ID4gLXN0YXRpYyBpbnQgaTkxNWdtX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiArc3RhdGljIHZvaWQgaTkxNWdtX2dldF9jZGNsayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiArCQkJwqDCoMKgwqDCoHN0cnVjdCBp bnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gPiDCoHsKPiA+IMKgCXN0cnVjdCBwY2lf ZGV2ICpwZGV2ID0gZGV2X3ByaXYtPmRybS5wZGV2Owo+ID4gwqAJdTE2IGdjZmdjID0gMDsKPiA+ IMKgCj4gPiDCoAlwY2lfcmVhZF9jb25maWdfd29yZChwZGV2LCBHQ0ZHQywgJmdjZmdjKTsKPiA+ IMKgCj4gPiAtCWlmIChnY2ZnYyAmIEdDX0xPV19GUkVRVUVOQ1lfRU5BQkxFKQo+ID4gLQkJcmV0 dXJuIDEzMzMzMzsKPiA+ICsJaWYgKGdjZmdjICYgR0NfTE9XX0ZSRVFVRU5DWV9FTkFCTEUpIHsK PiA+ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDEzMzMzMzsKPiA+ICsJCXJldHVybjsKPiA+ICsJ fQo+ID4gwqAKPiA+IMKgCXN3aXRjaCAoZ2NmZ2MgJiBHQ19ESVNQTEFZX0NMT0NLX01BU0spIHsK PiA+IMKgCWNhc2UgR0NfRElTUExBWV9DTE9DS18zMzNfTUhaOgo+ID4gLQkJcmV0dXJuIDMzMzMz MzsKPiA+ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDMzMzMzMzsKPiA+ICsJCWJyZWFrOwo+ID4g wqAJZGVmYXVsdDoKPiA+IMKgCWNhc2UgR0NfRElTUExBWV9DTE9DS18xOTBfMjAwX01IWjoKPiA+ IC0JCXJldHVybiAxOTAwMDA7Cj4gPiArCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAxOTAwMDA7Cj4g PiArCQlicmVhazsKPiA+IMKgCX0KPiA+IMKgfQo+ID4gwqAKPiA+IEBAIC0xNzgsNyArMTkzLDgg QEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9ocGxsX3ZjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gPiDCoAlyZXR1cm4gdmNvOwo+ID4gwqB9Cj4gPiDCoAo+ID4gLXN0 YXRpYyBpbnQgZzMzX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gPiArc3RhdGljIHZvaWQgZzMzX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gPiArCQkJwqDCoHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3Rh dGUpCj4gPiDCoHsKPiA+IMKgCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYtPmRybS5w ZGV2Owo+ID4gwqAJc3RhdGljIGNvbnN0IHVpbnQ4X3QgZGl2XzMyMDBbXSA9IHsgMTIsIDEwLMKg wqA4LMKgwqA3LCA1LCAxNiB9Owo+ID4gQEAgLTE4Niw5ICsyMDIsMTEgQEAgc3RhdGljIGludCBn MzNfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgCXN0 YXRpYyBjb25zdCB1aW50OF90IGRpdl80ODAwW10gPSB7IDIwLCAxNCwgMTIsIDEwLCA4LCAyNCB9 Owo+ID4gwqAJc3RhdGljIGNvbnN0IHVpbnQ4X3QgZGl2XzUzMzNbXSA9IHsgMjAsIDE2LCAxMiwg MTIsIDgsIDI4IH07Cj4gPiDCoAljb25zdCB1aW50OF90ICpkaXZfdGFibGU7Cj4gPiAtCXVuc2ln bmVkIGludCBjZGNsa19zZWwsIHZjbyA9IGludGVsX2hwbGxfdmNvKGRldl9wcml2KTsKPiA+ICsJ dW5zaWduZWQgaW50IGNkY2xrX3NlbDsKPiA+IMKgCXVpbnQxNl90IHRtcCA9IDA7Cj4gPiDCoAo+ ID4gKwljZGNsa19zdGF0ZS0+dmNvID0gaW50ZWxfaHBsbF92Y28oZGV2X3ByaXYpOwo+ID4gKwo+ ID4gwqAJcGNpX3JlYWRfY29uZmlnX3dvcmQocGRldiwgR0NGR0MsICZ0bXApOwo+ID4gwqAKPiA+ IMKgCWNkY2xrX3NlbCA9ICh0bXAgPj4gNCkgJiAweDc7Cj4gPiBAQCAtMTk2LDcgKzIxNCw3IEBA IHN0YXRpYyBpbnQgZzMzX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gPiDCoAlpZiAoY2RjbGtfc2VsID49IEFSUkFZX1NJWkUoZGl2XzMyMDApKQo+ID4gwqAJ CWdvdG8gZmFpbDsKPiA+IMKgCj4gPiAtCXN3aXRjaCAodmNvKSB7Cj4gPiArCXN3aXRjaCAoY2Rj bGtfc3RhdGUtPnZjbykgewo+ID4gwqAJY2FzZSAzMjAwMDAwOgo+ID4gwqAJCWRpdl90YWJsZSA9 IGRpdl8zMjAwOwo+ID4gwqAJCWJyZWFrOwo+ID4gQEAgLTIxMywxNSArMjMxLDE4IEBAIHN0YXRp YyBpbnQgZzMzX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g PiDCoAkJZ290byBmYWlsOwo+ID4gwqAJfQo+ID4gwqAKPiA+IC0JcmV0dXJuIERJVl9ST1VORF9D TE9TRVNUKHZjbywgZGl2X3RhYmxlW2NkY2xrX3NlbF0pOwo+ID4gKwljZGNsa19zdGF0ZS0+Y2Rj bGsgPSBESVZfUk9VTkRfQ0xPU0VTVChjZGNsa19zdGF0ZS0+dmNvLAo+ID4gKwkJCQkJwqDCoMKg wqDCoMKgwqBkaXZfdGFibGVbY2RjbGtfc2VsXSk7Cj4gPiArCXJldHVybjsKPiA+IMKgCj4gPiDC oGZhaWw6Cj4gPiDCoAlEUk1fRVJST1IoIlVuYWJsZSB0byBkZXRlcm1pbmUgQ0RDTEsuIEhQTEwg VkNPPSV1IGtIeiwgQ0ZHQz0weCUwOHhcbiIsCj4gPiAtCQnCoMKgdmNvLCB0bXApOwo+ID4gLQly ZXR1cm4gMTkwNDc2Owo+ID4gKwkJwqDCoGNkY2xrX3N0YXRlLT52Y28sIHRtcCk7Cj4gPiArCWNk Y2xrX3N0YXRlLT5jZGNsayA9IDE5MDQ3NjsKPiA+IMKgfQo+ID4gwqAKPiA+IC1zdGF0aWMgaW50 IHBudl9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gK3N0 YXRpYyB2b2lkIHBudl9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ID4gKwkJCcKgwqBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQo+ID4g wqB7Cj4gPiDCoAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsKPiA+ IMKgCXUxNiBnY2ZnYyA9IDA7Cj4gPiBAQCAtMjMwLDMyICsyNTEsNDEgQEAgc3RhdGljIGludCBw bnZfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgCj4g PiDCoAlzd2l0Y2ggKGdjZmdjICYgR0NfRElTUExBWV9DTE9DS19NQVNLKSB7Cj4gPiDCoAljYXNl IEdDX0RJU1BMQVlfQ0xPQ0tfMjY3X01IWl9QTlY6Cj4gPiAtCQlyZXR1cm4gMjY2NjY3Owo+ID4g KwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gMjY2NjY3Owo+ID4gKwkJYnJlYWs7Cj4gPiDCoAljYXNl IEdDX0RJU1BMQVlfQ0xPQ0tfMzMzX01IWl9QTlY6Cj4gPiAtCQlyZXR1cm4gMzMzMzMzOwo+ID4g KwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gMzMzMzMzOwo+ID4gKwkJYnJlYWs7Cj4gPiDCoAljYXNl IEdDX0RJU1BMQVlfQ0xPQ0tfNDQ0X01IWl9QTlY6Cj4gPiAtCQlyZXR1cm4gNDQ0NDQ0Owo+ID4g KwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNDQ0NDQ0Owo+ID4gKwkJYnJlYWs7Cj4gPiDCoAljYXNl IEdDX0RJU1BMQVlfQ0xPQ0tfMjAwX01IWl9QTlY6Cj4gPiAtCQlyZXR1cm4gMjAwMDAwOwo+ID4g KwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gMjAwMDAwOwo+ID4gKwkJYnJlYWs7Cj4gPiDCoAlkZWZh dWx0Ogo+ID4gwqAJCURSTV9FUlJPUigiVW5rbm93biBwbnYgZGlzcGxheSBjb3JlIGNsb2NrIDB4 JTA0eFxuIiwgZ2NmZ2MpOwo+ID4gwqAJY2FzZSBHQ19ESVNQTEFZX0NMT0NLXzEzM19NSFpfUE5W Ogo+ID4gLQkJcmV0dXJuIDEzMzMzMzsKPiA+ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDEzMzMz MzsKPiA+ICsJCWJyZWFrOwo+ID4gwqAJY2FzZSBHQ19ESVNQTEFZX0NMT0NLXzE2N19NSFpfUE5W Ogo+ID4gLQkJcmV0dXJuIDE2NjY2NzsKPiA+ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDE2NjY2 NzsKPiA+ICsJCWJyZWFrOwo+ID4gwqAJfQo+ID4gwqB9Cj4gPiDCoAo+ID4gLXN0YXRpYyBpbnQg aTk2NWdtX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAr c3RhdGljIHZvaWQgaTk2NWdtX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gPiArCQkJwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtf c3RhdGUpCj4gPiDCoHsKPiA+IMKgCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYtPmRy bS5wZGV2Owo+ID4gwqAJc3RhdGljIGNvbnN0IHVpbnQ4X3QgZGl2XzMyMDBbXSA9IHsgMTYsIDEw LMKgwqA4IH07Cj4gPiDCoAlzdGF0aWMgY29uc3QgdWludDhfdCBkaXZfNDAwMFtdID0geyAyMCwg MTIsIDEwIH07Cj4gPiDCoAlzdGF0aWMgY29uc3QgdWludDhfdCBkaXZfNTMzM1tdID0geyAyNCwg MTYsIDE0IH07Cj4gPiDCoAljb25zdCB1aW50OF90ICpkaXZfdGFibGU7Cj4gPiAtCXVuc2lnbmVk IGludCBjZGNsa19zZWwsIHZjbyA9IGludGVsX2hwbGxfdmNvKGRldl9wcml2KTsKPiA+ICsJdW5z aWduZWQgaW50IGNkY2xrX3NlbDsKPiA+IMKgCXVpbnQxNl90IHRtcCA9IDA7Cj4gPiDCoAo+ID4g KwljZGNsa19zdGF0ZS0+dmNvID0gaW50ZWxfaHBsbF92Y28oZGV2X3ByaXYpOwo+ID4gKwo+ID4g wqAJcGNpX3JlYWRfY29uZmlnX3dvcmQocGRldiwgR0NGR0MsICZ0bXApOwo+ID4gwqAKPiA+IMKg CWNkY2xrX3NlbCA9ICgodG1wID4+IDgpICYgMHgxZikgLSAxOwo+ID4gQEAgLTI2Myw3ICsyOTMs NyBAQCBzdGF0aWMgaW50IGk5NjVnbV9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ID4gwqAJaWYgKGNkY2xrX3NlbCA+PSBBUlJBWV9TSVpFKGRpdl8zMjAwKSkK PiA+IMKgCQlnb3RvIGZhaWw7Cj4gPiDCoAo+ID4gLQlzd2l0Y2ggKHZjbykgewo+ID4gKwlzd2l0 Y2ggKGNkY2xrX3N0YXRlLT52Y28pIHsKPiA+IMKgCWNhc2UgMzIwMDAwMDoKPiA+IMKgCQlkaXZf dGFibGUgPSBkaXZfMzIwMDsKPiA+IMKgCQlicmVhazsKPiA+IEBAIC0yNzcsNTMgKzMwNyw2MiBA QCBzdGF0aWMgaW50IGk5NjVnbV9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ID4gwqAJCWdvdG8gZmFpbDsKPiA+IMKgCX0KPiA+IMKgCj4gPiAtCXJldHVybiBE SVZfUk9VTkRfQ0xPU0VTVCh2Y28sIGRpdl90YWJsZVtjZGNsa19zZWxdKTsKPiA+ICsJY2RjbGtf c3RhdGUtPmNkY2xrID0gRElWX1JPVU5EX0NMT1NFU1QoY2RjbGtfc3RhdGUtPnZjbywKPiA+ICsJ CQkJCcKgwqDCoMKgwqDCoMKgZGl2X3RhYmxlW2NkY2xrX3NlbF0pOwo+ID4gKwlyZXR1cm47Cj4g PiDCoAo+ID4gwqBmYWlsOgo+ID4gwqAJRFJNX0VSUk9SKCJVbmFibGUgdG8gZGV0ZXJtaW5lIENE Q0xLLiBIUExMIFZDTz0ldSBrSHosIENGR0M9MHglMDR4XG4iLAo+ID4gLQkJwqDCoHZjbywgdG1w KTsKPiA+IC0JcmV0dXJuIDIwMDAwMDsKPiA+ICsJCcKgwqBjZGNsa19zdGF0ZS0+dmNvLCB0bXAp Owo+ID4gKwljZGNsa19zdGF0ZS0+Y2RjbGsgPSAyMDAwMDA7Cj4gPiDCoH0KPiA+IMKgCj4gPiAt c3RhdGljIGludCBnbTQ1X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gPiArc3RhdGljIHZvaWQgZ200NV9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ID4gKwkJCcKgwqDCoHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2Rj bGtfc3RhdGUpCj4gPiDCoHsKPiA+IMKgCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYt PmRybS5wZGV2Owo+ID4gLQl1bnNpZ25lZCBpbnQgY2RjbGtfc2VsLCB2Y28gPSBpbnRlbF9ocGxs X3ZjbyhkZXZfcHJpdik7Cj4gPiArCXVuc2lnbmVkIGludCBjZGNsa19zZWw7Cj4gPiDCoAl1aW50 MTZfdCB0bXAgPSAwOwo+ID4gwqAKPiA+ICsJY2RjbGtfc3RhdGUtPnZjbyA9IGludGVsX2hwbGxf dmNvKGRldl9wcml2KTsKPiA+ICsKPiA+IMKgCXBjaV9yZWFkX2NvbmZpZ193b3JkKHBkZXYsIEdD RkdDLCAmdG1wKTsKPiA+IMKgCj4gPiDCoAljZGNsa19zZWwgPSAodG1wID4+IDEyKSAmIDB4MTsK PiA+IMKgCj4gPiAtCXN3aXRjaCAodmNvKSB7Cj4gPiArCXN3aXRjaCAoY2RjbGtfc3RhdGUtPnZj bykgewo+ID4gwqAJY2FzZSAyNjY2NjY3Ogo+ID4gwqAJY2FzZSA0MDAwMDAwOgo+ID4gwqAJY2Fz ZSA1MzMzMzMzOgo+ID4gLQkJcmV0dXJuIGNkY2xrX3NlbCA/IDMzMzMzMyA6IDIyMjIyMjsKPiA+ ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IGNkY2xrX3NlbCA/IDMzMzMzMyA6IDIyMjIyMjsKPiA+ ICsJCWJyZWFrOwo+ID4gwqAJY2FzZSAzMjAwMDAwOgo+ID4gLQkJcmV0dXJuIGNkY2xrX3NlbCA/ IDMyMDAwMCA6IDIyODU3MTsKPiA+ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IGNkY2xrX3NlbCA/ IDMyMDAwMCA6IDIyODU3MTsKPiA+ICsJCWJyZWFrOwo+ID4gwqAJZGVmYXVsdDoKPiA+IMKgCQlE Uk1fRVJST1IoIlVuYWJsZSB0byBkZXRlcm1pbmUgQ0RDTEsuIEhQTEwgVkNPPSV1LCBDRkdDPTB4 JTA0eFxuIiwKPiA+IC0JCQnCoMKgdmNvLCB0bXApOwo+ID4gLQkJcmV0dXJuIDIyMjIyMjsKPiA+ ICsJCQnCoMKgY2RjbGtfc3RhdGUtPnZjbywgdG1wKTsKPiA+ICsJCWNkY2xrX3N0YXRlLT5jZGNs ayA9IDIyMjIyMjsKPiA+ICsJCWJyZWFrOwo+ID4gwqAJfQo+ID4gwqB9Cj4gPiDCoAo+ID4gLXN0 YXRpYyBpbnQgaHN3X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gPiArc3RhdGljIHZvaWQgaHN3X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gPiArCQkJwqDCoHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3Rh dGUpCj4gPiDCoHsKPiA+IMKgCXVpbnQzMl90IGxjcGxsID0gSTkxNV9SRUFEKExDUExMX0NUTCk7 Cj4gPiDCoAl1aW50MzJfdCBmcmVxID0gbGNwbGwgJiBMQ1BMTF9DTEtfRlJFUV9NQVNLOwo+ID4g wqAKPiA+IMKgCWlmIChsY3BsbCAmIExDUExMX0NEX1NPVVJDRV9GQ0xLKQo+ID4gLQkJcmV0dXJu IDgwMDAwMDsKPiA+ICsJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDgwMDAwMDsKPiA+IMKgCWVsc2Ug aWYgKEk5MTVfUkVBRChGVVNFX1NUUkFQKSAmIEhTV19DRENMS19MSU1JVCkKPiA+IC0JCXJldHVy biA0NTAwMDA7Cj4gPiArCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSA0NTAwMDA7Cj4gPiDCoAllbHNl IGlmIChmcmVxID09IExDUExMX0NMS19GUkVRXzQ1MCkKPiA+IC0JCXJldHVybiA0NTAwMDA7Cj4g PiArCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSA0NTAwMDA7Cj4gPiDCoAllbHNlIGlmIChJU19IU1df VUxUKGRldl9wcml2KSkKPiA+IC0JCXJldHVybiAzMzc1MDA7Cj4gPiArCQljZGNsa19zdGF0ZS0+ Y2RjbGsgPSAzMzc1MDA7Cj4gPiDCoAllbHNlCj4gPiAtCQlyZXR1cm4gNTQwMDAwOwo+ID4gKwkJ Y2RjbGtfc3RhdGUtPmNkY2xrID0gNTQwMDAwOwo+ID4gwqB9Cj4gPiDCoAo+ID4gwqBzdGF0aWMg aW50IHZsdl9jYWxjX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ IEBAIC0zNDksMTAgKzM4OCwxMyBAQCBzdGF0aWMgaW50IHZsdl9jYWxjX2NkY2xrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IMKgCQlyZXR1cm4gMjAwMDAwOwo+ID4gwqB9 Cj4gPiDCoAo+ID4gLXN0YXRpYyBpbnQgdmx2X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gPiArc3RhdGljIHZvaWQgdmx2X2dldF9jZGNsayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiArCQkJwqDCoHN0cnVjdCBpbnRlbF9jZGNsa19z dGF0ZSAqY2RjbGtfc3RhdGUpCj4gPiDCoHsKPiA+IC0JcmV0dXJuIHZsdl9nZXRfY2NrX2Nsb2Nr X2hwbGwoZGV2X3ByaXYsICJjZGNsayIsCj4gPiAtCQkJCcKgwqDCoMKgwqDCoENDS19ESVNQTEFZ X0NMT0NLX0NPTlRST0wpOwo+ID4gKwljZGNsa19zdGF0ZS0+dmNvID0gdmx2X2dldF9ocGxsX3Zj byhkZXZfcHJpdik7Cj4gPiArCWNkY2xrX3N0YXRlLT5jZGNsayA9IHZsdl9nZXRfY2NrX2Nsb2Nr KGRldl9wcml2LCAiY2RjbGsiLAo+ID4gKwkJCQkJwqDCoMKgwqDCoMKgwqBDQ0tfRElTUExBWV9D TE9DS19DT05UUk9MLAo+ID4gKwkJCQkJwqDCoMKgwqDCoMKgwqBjZGNsa19zdGF0ZS0+dmNvKTsK PiA+IMKgfQo+ID4gwqAKPiA+IMKgc3RhdGljIHZvaWQgdmx2X3Byb2dyYW1fcGZpX2NyZWRpdHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gQEAgLTM2NCw3ICs0MDYsNyBA QCBzdGF0aWMgdm9pZCB2bHZfcHJvZ3JhbV9wZmlfY3JlZGl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gPiDCoAllbHNlCj4gPiDCoAkJZGVmYXVsdF9jcmVkaXRzID0gUEZJ X0NSRURJVCg4KTsKPiA+IMKgCj4gPiAtCWlmIChkZXZfcHJpdi0+Y2RjbGtfZnJlcSA+PSBkZXZf cHJpdi0+Y3pjbGtfZnJlcSkgewo+ID4gKwlpZiAoZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrID49 IGRldl9wcml2LT5jemNsa19mcmVxKSB7Cj4gPiDCoAkJLyogQ0hWIHN1Z2dlc3RlZCB2YWx1ZSBp cyAzMSBvciA2MyAqLwo+ID4gwqAJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiA+IMKg CQkJY3JlZGl0cyA9IFBGSV9DUkVESVRfNjM7Cj4gPiBAQCAtMzk2LDggKzQzOCw2IEBAIHN0YXRp YyB2b2lkIHZsdl9zZXRfY2RjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNkY2xrKQo+ ID4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ ID4gwqAJdTMyIHZhbCwgY21kOwo+ID4gwqAKPiA+IC0JV0FSTl9PTihkZXZfcHJpdi0+ZGlzcGxh eS5nZXRfY2RjbGsoZGV2X3ByaXYpICE9IGRldl9wcml2LT5jZGNsa19mcmVxKTsKPiA+IC0KPiA+ IMKgCWlmIChjZGNsayA+PSAzMjAwMDApIC8qIGp1bXAgdG8gaGlnaGVzdCB2b2x0YWdlIGZvciA0 MDBNSHogdG9vICovCj4gPiDCoAkJY21kID0gMjsKPiA+IMKgCWVsc2UgaWYgKGNkY2xrID09IDI2 NjY2NykKPiA+IEBAIC00NjEsOCArNTAxLDYgQEAgc3RhdGljIHZvaWQgY2h2X3NldF9jZGNsayhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY2RjbGspCj4gPiDCoAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiDCoAl1MzIgdmFsLCBjbWQ7Cj4g PiDCoAo+ID4gLQlXQVJOX09OKGRldl9wcml2LT5kaXNwbGF5LmdldF9jZGNsayhkZXZfcHJpdikg IT0gZGV2X3ByaXYtPmNkY2xrX2ZyZXEpOwo+ID4gLQo+ID4gwqAJc3dpdGNoIChjZGNsaykgewo+ ID4gwqAJY2FzZSAzMzMzMzM6Cj4gPiDCoAljYXNlIDMyMDAwMDoKPiA+IEBAIC01MDgsMjMgKzU0 NiwyNCBAQCBzdGF0aWMgaW50IGJkd19jYWxjX2NkY2xrKGludCBtYXhfcGl4Y2xrKQo+ID4gwqAJ CXJldHVybiAzMzc1MDA7Cj4gPiDCoH0KPiA+IMKgCj4gPiAtc3RhdGljIGludCBiZHdfZ2V0X2Nk Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ICtzdGF0aWMgdm9pZCBi ZHdfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICsJCQnC oMKgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkKPiA+IMKgewo+ID4gwqAJ dWludDMyX3QgbGNwbGwgPSBJOTE1X1JFQUQoTENQTExfQ1RMKTsKPiA+IMKgCXVpbnQzMl90IGZy ZXEgPSBsY3BsbCAmIExDUExMX0NMS19GUkVRX01BU0s7Cj4gPiDCoAo+ID4gwqAJaWYgKGxjcGxs ICYgTENQTExfQ0RfU09VUkNFX0ZDTEspCj4gPiAtCQlyZXR1cm4gODAwMDAwOwo+ID4gKwkJY2Rj bGtfc3RhdGUtPmNkY2xrID0gODAwMDAwOwo+ID4gwqAJZWxzZSBpZiAoSTkxNV9SRUFEKEZVU0Vf U1RSQVApICYgSFNXX0NEQ0xLX0xJTUlUKQo+ID4gLQkJcmV0dXJuIDQ1MDAwMDsKPiA+ICsJCWNk Y2xrX3N0YXRlLT5jZGNsayA9IDQ1MDAwMDsKPiA+IMKgCWVsc2UgaWYgKGZyZXEgPT0gTENQTExf Q0xLX0ZSRVFfNDUwKQo+ID4gLQkJcmV0dXJuIDQ1MDAwMDsKPiA+ICsJCWNkY2xrX3N0YXRlLT5j ZGNsayA9IDQ1MDAwMDsKPiA+IMKgCWVsc2UgaWYgKGZyZXEgPT0gTENQTExfQ0xLX0ZSRVFfNTRP X0JEVykKPiA+IC0JCXJldHVybiA1NDAwMDA7Cj4gPiArCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSA1 NDAwMDA7Cj4gPiDCoAllbHNlIGlmIChmcmVxID09IExDUExMX0NMS19GUkVRXzMzN181X0JEVykK PiA+IC0JCXJldHVybiAzMzc1MDA7Cj4gPiArCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAzMzc1MDA7 Cj4gPiDCoAllbHNlCj4gPiAtCQlyZXR1cm4gNjc1MDAwOwo+ID4gKwkJY2RjbGtfc3RhdGUtPmNk Y2xrID0gNjc1MDAwOwo+ID4gwqB9Cj4gPiDCoAo+ID4gwqBzdGF0aWMgdm9pZCBiZHdfc2V0X2Nk Y2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjZGNsaykKPiA+IEBAIC02MDEsOSArNjQw LDkgQEAgc3RhdGljIHZvaWQgYmR3X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgY2RjbGspCj4gPiDCoAo+ID4gwqAJaW50ZWxfdXBkYXRlX2NkY2xrKGRldl9wcml2KTsKPiA+ IMKgCj4gPiAtCVdBUk4oY2RjbGsgIT0gZGV2X3ByaXYtPmNkY2xrX2ZyZXEsCj4gPiArCVdBUk4o Y2RjbGsgIT0gZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrLAo+ID4gwqAJwqDCoMKgwqDCoCJjZGNs ayByZXF1ZXN0ZWQgJWQga0h6IGJ1dCBnb3QgJWQga0h6XG4iLAo+ID4gLQnCoMKgwqDCoMKgY2Rj bGssIGRldl9wcml2LT5jZGNsa19mcmVxKTsKPiA+ICsJwqDCoMKgwqDCoGNkY2xrLCBkZXZfcHJp di0+Y2RjbGsuaHcuY2RjbGspOwo+ID4gwqB9Cj4gPiDCoAo+ID4gwqBzdGF0aWMgaW50IHNrbF9j YWxjX2NkY2xrKGludCBtYXhfcGl4Y2xrLCBpbnQgdmNvKQo+ID4gQEAgLTYyOSwxMiArNjY4LDEz IEBAIHN0YXRpYyBpbnQgc2tsX2NhbGNfY2RjbGsoaW50IG1heF9waXhjbGssIGludCB2Y28pCj4g PiDCoAl9Cj4gPiDCoH0KPiA+IMKgCj4gPiAtc3RhdGljIHZvaWQgc2tsX2RwbGwwX3VwZGF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiArc3RhdGljIHZvaWQgc2tsX2Rw bGwwX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiArCQkJwqDC oMKgwqDCoHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gPiDCoHsKPiA+ IMKgCXUzMiB2YWw7Cj4gPiDCoAo+ID4gLQlkZXZfcHJpdi0+Y2RjbGtfcGxsLnJlZiA9IDI0MDAw Owo+ID4gLQlkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyA9IDA7Cj4gPiArCWNkY2xrX3N0YXRlLT5y ZWYgPSAyNDAwMDsKPiA+ICsJY2RjbGtfc3RhdGUtPnZjbyA9IDA7Cj4gPiDCoAo+ID4gwqAJdmFs ID0gSTkxNV9SRUFEKExDUExMMV9DVEwpOwo+ID4gwqAJaWYgKCh2YWwgJiBMQ1BMTF9QTExfRU5B QkxFKSA9PSAwKQo+ID4gQEAgLTY1NiwxMSArNjk2LDExIEBAIHN0YXRpYyB2b2lkIHNrbF9kcGxs MF91cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gwqAJY2FzZSBE UExMX0NUUkwxX0xJTktfUkFURShEUExMX0NUUkwxX0xJTktfUkFURV8xMzUwLCBTS0xfRFBMTDAp Ogo+ID4gwqAJY2FzZSBEUExMX0NUUkwxX0xJTktfUkFURShEUExMX0NUUkwxX0xJTktfUkFURV8x NjIwLCBTS0xfRFBMTDApOgo+ID4gwqAJY2FzZSBEUExMX0NUUkwxX0xJTktfUkFURShEUExMX0NU UkwxX0xJTktfUkFURV8yNzAwLCBTS0xfRFBMTDApOgo+ID4gLQkJZGV2X3ByaXYtPmNkY2xrX3Bs bC52Y28gPSA4MTAwMDAwOwo+ID4gKwkJY2RjbGtfc3RhdGUtPnZjbyA9IDgxMDAwMDA7Cj4gPiDC oAkJYnJlYWs7Cj4gPiDCoAljYXNlIERQTExfQ1RSTDFfTElOS19SQVRFKERQTExfQ1RSTDFfTElO S19SQVRFXzEwODAsIFNLTF9EUExMMCk6Cj4gPiDCoAljYXNlIERQTExfQ1RSTDFfTElOS19SQVRF KERQTExfQ1RSTDFfTElOS19SQVRFXzIxNjAsIFNLTF9EUExMMCk6Cj4gPiAtCQlkZXZfcHJpdi0+ Y2RjbGtfcGxsLnZjbyA9IDg2NDAwMDA7Cj4gPiArCQljZGNsa19zdGF0ZS0+dmNvID0gODY0MDAw MDsKPiA+IMKgCQlicmVhazsKPiA+IMKgCWRlZmF1bHQ6Cj4gPiDCoAkJTUlTU0lOR19DQVNFKHZh bCAmIERQTExfQ1RSTDFfTElOS19SQVRFX01BU0soU0tMX0RQTEwwKSk7Cj4gCj4gVGhpcyBmdW5j dGlvbiBpcyBhIGJpdCBmdW5ueSBub3csIHNpbmNlIGl0IHNldHMgdXAgdGhlIGNkY2xrIHN0YXRl IGJhc2VkIG9uCj4gY3VycmVudCBwbGwwIHByb2dyYW1taW5nLCBpbnN0ZWFkIG9mIGxvb2tpbmcg YXQgYW4gYXRvbWljIHN0YXRlLgoKV2Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSBpdCB0byBzb21l aHRpbmcgbW9yZSBkZXNjcmlwdGl2ZS4gc2tsX2dldF9kcGxsMCgpCm1heWJlLiBPciBtYXliZSBz a2xfZHBsbDBfZ2V0X2NvbmZpZyB0byBtYXRjaCB0aGUgLmdldF9jb25maWcoKQpub21lbmNsYXR1 cmUgdXNlZCBmb3IgZWcuIGVuY29kZXJzLiBUaG91Z2ggaWYgd2UgZ28gdGhlcmUgdGhlbgouZ2V0 X2NkY2xrKCkgbWlnaHQgbmVlZCB0byBiZSByZW5hbWVkIHRvIC5jZGNsa19nZXRfY29uZmlnIG9y IHNvbWV0aGluZy4KCj4gQnV0IHNvIGZhciBpdAo+IGlzIG9ubHkgdXNlZCB0byByZWFkIHRoZSBj dXJyZW50IGNkY2xrLCBzbyB0aGVyZSdzIG5vIGhhcm0uCj4gCj4gPiBAQCAtNjY4LDQ2ICs3MDgs NTcgQEAgc3RhdGljIHZvaWQgc2tsX2RwbGwwX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gPiDCoAl9Cj4gPiDCoH0KPiA+IMKgCj4gPiAtc3RhdGljIGludCBza2xf Z2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ICtzdGF0aWMg dm9pZCBza2xfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ ICsJCQnCoMKgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkKPiA+IMKgewo+ ID4gwqAJdTMyIGNkY3RsOwo+ID4gwqAKPiA+IC0Jc2tsX2RwbGwwX3VwZGF0ZShkZXZfcHJpdik7 Cj4gPiArCXNrbF9kcGxsMF91cGRhdGUoZGV2X3ByaXYsIGNkY2xrX3N0YXRlKTsKPiA+ICsKPiA+ ICsJY2RjbGtfc3RhdGUtPmNkY2xrID0gY2RjbGtfc3RhdGUtPnJlZjsKPiA+IMKgCj4gPiAtCWlm IChkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyA9PSAwKQo+ID4gLQkJcmV0dXJuIGRldl9wcml2LT5j ZGNsa19wbGwucmVmOwo+ID4gKwlpZiAoY2RjbGtfc3RhdGUtPnZjbyA9PSAwKQo+ID4gKwkJcmV0 dXJuOwo+ID4gwqAKPiA+IMKgCWNkY3RsID0gSTkxNV9SRUFEKENEQ0xLX0NUTCk7Cj4gPiDCoAo+ ID4gLQlpZiAoZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPT0gODY0MDAwMCkgewo+ID4gKwlpZiAo Y2RjbGtfc3RhdGUtPnZjbyA9PSA4NjQwMDAwKSB7Cj4gPiDCoAkJc3dpdGNoIChjZGN0bCAmIENE Q0xLX0ZSRVFfU0VMX01BU0spIHsKPiA+IMKgCQljYXNlIENEQ0xLX0ZSRVFfNDUwXzQzMjoKPiA+ IC0JCQlyZXR1cm4gNDMyMDAwOwo+ID4gKwkJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDQzMjAwMDsK PiA+ICsJCQlicmVhazsKPiA+IMKgCQljYXNlIENEQ0xLX0ZSRVFfMzM3XzMwODoKPiA+IC0JCQly ZXR1cm4gMzA4NTcxOwo+ID4gKwkJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDMwODU3MTsKPiA+ICsJ CQlicmVhazsKPiA+IMKgCQljYXNlIENEQ0xLX0ZSRVFfNTQwOgo+ID4gLQkJCXJldHVybiA1NDAw MDA7Cj4gPiArCQkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNTQwMDAwOwo+ID4gKwkJCWJyZWFrOwo+ ID4gwqAJCWNhc2UgQ0RDTEtfRlJFUV82NzVfNjE3Ogo+ID4gLQkJCXJldHVybiA2MTcxNDM7Cj4g PiArCQkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNjE3MTQzOwo+ID4gKwkJCWJyZWFrOwo+ID4gwqAJ CWRlZmF1bHQ6Cj4gPiDCoAkJCU1JU1NJTkdfQ0FTRShjZGN0bCAmIENEQ0xLX0ZSRVFfU0VMX01B U0spOwo+ID4gKwkJCWJyZWFrOwo+ID4gwqAJCX0KPiA+IMKgCX0gZWxzZSB7Cj4gPiDCoAkJc3dp dGNoIChjZGN0bCAmIENEQ0xLX0ZSRVFfU0VMX01BU0spIHsKPiA+IMKgCQljYXNlIENEQ0xLX0ZS RVFfNDUwXzQzMjoKPiA+IC0JCQlyZXR1cm4gNDUwMDAwOwo+ID4gKwkJCWNkY2xrX3N0YXRlLT5j ZGNsayA9IDQ1MDAwMDsKPiA+ICsJCQlicmVhazsKPiA+IMKgCQljYXNlIENEQ0xLX0ZSRVFfMzM3 XzMwODoKPiA+IC0JCQlyZXR1cm4gMzM3NTAwOwo+ID4gKwkJCWNkY2xrX3N0YXRlLT5jZGNsayA9 IDMzNzUwMDsKPiA+ICsJCQlicmVhazsKPiA+IMKgCQljYXNlIENEQ0xLX0ZSRVFfNTQwOgo+ID4g LQkJCXJldHVybiA1NDAwMDA7Cj4gPiArCQkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNTQwMDAwOwo+ ID4gKwkJCWJyZWFrOwo+ID4gwqAJCWNhc2UgQ0RDTEtfRlJFUV82NzVfNjE3Ogo+ID4gLQkJCXJl dHVybiA2NzUwMDA7Cj4gPiArCQkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNjc1MDAwOwo+ID4gKwkJ CWJyZWFrOwo+ID4gwqAJCWRlZmF1bHQ6Cj4gPiDCoAkJCU1JU1NJTkdfQ0FTRShjZGN0bCAmIENE Q0xLX0ZSRVFfU0VMX01BU0spOwo+ID4gKwkJCWJyZWFrOwo+ID4gwqAJCX0KPiA+IMKgCX0KPiA+ IC0KPiA+IC0JcmV0dXJuIGRldl9wcml2LT5jZGNsa19wbGwucmVmOwo+ID4gwqB9Cj4gPiDCoAo+ ID4gwqAvKiBjb252ZXJ0IGZyb20ga0h6IHRvIC4xIGZpeHBvaW50IE1IeiB3aXRoIC0xTUh6IG9m ZnNldCAqLwo+ID4gQEAgLTc3MCw3ICs4MjEsNyBAQCBzdGF0aWMgdm9pZCBza2xfZHBsbDBfZW5h YmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZjbykKPiA+IMKgCQkJ CcKgwqDCoMKgNSkpCj4gPiDCoAkJRFJNX0VSUk9SKCJEUExMMCBub3QgbG9ja2VkXG4iKTsKPiA+ IMKgCj4gPiAtCWRldl9wcml2LT5jZGNsa19wbGwudmNvID0gdmNvOwo+ID4gKwlkZXZfcHJpdi0+ Y2RjbGsuaHcudmNvID0gdmNvOwo+ID4gwqAKPiA+IMKgCS8qIFdlJ2xsIHdhbnQgdG8ga2VlcCB1 c2luZyB0aGUgY3VycmVudCB2Y28gZnJvbSBub3cgb24uICovCj4gPiDCoAlza2xfc2V0X3ByZWZl cnJlZF9jZGNsa192Y28oZGV2X3ByaXYsIHZjbyk7Cj4gPiBAQCAtNzg0LDcgKzgzNSw3IEBAIHN0 YXRpYyB2b2lkIHNrbF9kcGxsMF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiA+IMKgCQkJCcKgwqDCoDEpKQo+ID4gwqAJCURSTV9FUlJPUigiQ291bGRuJ3QgZGlz YWJsZSBEUExMMFxuIik7Cj4gPiDCoAo+ID4gLQlkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyA9IDA7 Cj4gPiArCWRldl9wcml2LT5jZGNsay5ody52Y28gPSAwOwo+ID4gwqB9Cj4gPiDCoAo+ID4gwqBz dGF0aWMgdm9pZCBza2xfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+IEBAIC04MzQsMTEgKzg4NSwxMSBAQCBzdGF0aWMgdm9pZCBza2xfc2V0X2NkY2xrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IMKgCQlicmVhazsKPiA+IMKgCX0K PiA+IMKgCj4gPiAtCWlmIChkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyAhPSAwICYmCj4gPiAtCcKg wqDCoMKgZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gIT0gdmNvKQo+ID4gKwlpZiAoZGV2X3ByaXYt PmNkY2xrLmh3LnZjbyAhPSAwICYmCj4gPiArCcKgwqDCoMKgZGV2X3ByaXYtPmNkY2xrLmh3LnZj byAhPSB2Y28pCj4gPiDCoAkJc2tsX2RwbGwwX2Rpc2FibGUoZGV2X3ByaXYpOwo+ID4gwqAKPiA+ IC0JaWYgKGRldl9wcml2LT5jZGNsa19wbGwudmNvICE9IHZjbykKPiA+ICsJaWYgKGRldl9wcml2 LT5jZGNsay5ody52Y28gIT0gdmNvKQo+ID4gwqAJCXNrbF9kcGxsMF9lbmFibGUoZGV2X3ByaXYs IHZjbyk7Cj4gPiDCoAo+ID4gwqAJSTkxNV9XUklURShDRENMS19DVEwsIGZyZXFfc2VsZWN0IHwg c2tsX2NkY2xrX2RlY2ltYWwoY2RjbGspKTsKPiA+IEBAIC04NjYsOCArOTE3LDggQEAgc3RhdGlj IHZvaWQgc2tsX3Nhbml0aXplX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiA+IMKgCj4gPiDCoAlpbnRlbF91cGRhdGVfY2RjbGsoZGV2X3ByaXYpOwo+ID4gwqAJLyog SXMgUExMIGVuYWJsZWQgYW5kIGxvY2tlZCA/ICovCj4gPiAtCWlmIChkZXZfcHJpdi0+Y2RjbGtf cGxsLnZjbyA9PSAwIHx8Cj4gPiAtCcKgwqDCoMKgZGV2X3ByaXYtPmNkY2xrX2ZyZXEgPT0gZGV2 X3ByaXYtPmNkY2xrX3BsbC5yZWYpCj4gPiArCWlmIChkZXZfcHJpdi0+Y2RjbGsuaHcudmNvID09 IDAgfHwKPiA+ICsJwqDCoMKgwqBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGsgPT0gZGV2X3ByaXYt PmNkY2xrLmh3LnJlZikKPiA+IMKgCQlnb3RvIHNhbml0aXplOwo+ID4gwqAKPiA+IMKgCS8qIERQ TEwgb2theTsgdmVyaWZ5IHRoZSBjZGNsb2NrCj4gPiBAQCAtODc4LDcgKzkyOSw3IEBAIHN0YXRp YyB2b2lkIHNrbF9zYW5pdGl6ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gPiDCoAnCoCovCj4gPiDCoAljZGN0bCA9IEk5MTVfUkVBRChDRENMS19DVEwpOwo+ID4g wqAJZXhwZWN0ZWQgPSAoY2RjdGwgJiBDRENMS19GUkVRX1NFTF9NQVNLKSB8Cj4gPiAtCQlza2xf Y2RjbGtfZGVjaW1hbChkZXZfcHJpdi0+Y2RjbGtfZnJlcSk7Cj4gPiArCQlza2xfY2RjbGtfZGVj aW1hbChkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGspOwo+ID4gwqAJaWYgKGNkY3RsID09IGV4cGVj dGVkKQo+ID4gwqAJCS8qIEFsbCB3ZWxsOyBub3RoaW5nIHRvIHNhbml0aXplICovCj4gPiDCoAkJ cmV0dXJuOwo+ID4gQEAgLTg4NywxNCArOTM4LDE0IEBAIHN0YXRpYyB2b2lkIHNrbF9zYW5pdGl6 ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoAlEUk1fREVC VUdfS01TKCJTYW5pdGl6aW5nIGNkY2xrIHByb2dyYW1tZWQgYnkgcHJlLW9zXG4iKTsKPiA+IMKg Cj4gPiDCoAkvKiBmb3JjZSBjZGNsayBwcm9ncmFtbWluZyAqLwo+ID4gLQlkZXZfcHJpdi0+Y2Rj bGtfZnJlcSA9IDA7Cj4gPiArCWRldl9wcml2LT5jZGNsay5ody5jZGNsayA9IDA7Cj4gPiDCoAkv KiBmb3JjZSBmdWxsIFBMTCBkaXNhYmxlICsgZW5hYmxlICovCj4gPiAtCWRldl9wcml2LT5jZGNs a19wbGwudmNvID0gLTE7Cj4gPiArCWRldl9wcml2LT5jZGNsay5ody52Y28gPSAtMTsKPiA+IMKg fQo+ID4gwqAKPiA+IMKgdm9pZCBza2xfdW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiA+IMKgewo+ID4gLQlza2xfc2V0X2NkY2xrKGRldl9wcml2LCBkZXZf cHJpdi0+Y2RjbGtfcGxsLnJlZiwgMCk7Cj4gPiArCXNrbF9zZXRfY2RjbGsoZGV2X3ByaXYsIGRl dl9wcml2LT5jZGNsay5ody5yZWYsIDApOwo+ID4gwqB9Cj4gPiDCoAo+ID4gwqB2b2lkIHNrbF9p bml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IEBAIC05MDMs MTQgKzk1NCwxNSBAQCB2b2lkIHNrbF9pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiA+IMKgCj4gPiDCoAlza2xfc2FuaXRpemVfY2RjbGsoZGV2X3ByaXYpOwo+ ID4gwqAKPiA+IC0JaWYgKGRldl9wcml2LT5jZGNsa19mcmVxICE9IDAgJiYgZGV2X3ByaXYtPmNk Y2xrX3BsbC52Y28gIT0gMCkgewo+ID4gKwlpZiAoZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrICE9 IDAgJiYKPiA+ICsJwqDCoMKgwqBkZXZfcHJpdi0+Y2RjbGsuaHcudmNvICE9IDApIHsKPiA+IMKg CQkvKgo+ID4gwqAJCcKgKiBVc2UgdGhlIGN1cnJlbnQgdmNvIGFzIG91ciBpbml0aWFsCj4gPiDC oAkJwqAqIGd1ZXNzIGFzIHRvIHdoYXQgdGhlIHByZWZlcnJlZCB2Y28gaXMuCj4gPiDCoAkJwqAq Lwo+ID4gwqAJCWlmIChkZXZfcHJpdi0+c2tsX3ByZWZlcnJlZF92Y29fZnJlcSA9PSAwKQo+ID4g wqAJCQlza2xfc2V0X3ByZWZlcnJlZF9jZGNsa192Y28oZGV2X3ByaXYsCj4gPiAtCQkJCQkJwqDC oMKgwqBkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyk7Cj4gPiArCQkJCQkJwqDCoMKgwqBkZXZfcHJp di0+Y2RjbGsuaHcudmNvKTsKPiA+IMKgCQlyZXR1cm47Cj4gPiDCoAl9Cj4gPiDCoAo+ID4gQEAg LTk1MCw3ICsxMDAyLDcgQEAgc3RhdGljIGludCBieHRfZGVfcGxsX3ZjbyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBjZGNsaykKPiA+IMKgewo+ID4gwqAJaW50IHJhdGlv Owo+ID4gwqAKPiA+IC0JaWYgKGNkY2xrID09IGRldl9wcml2LT5jZGNsa19wbGwucmVmKQo+ID4g KwlpZiAoY2RjbGsgPT0gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZikKPiA+IMKgCQlyZXR1cm4gMDsK PiA+IMKgCj4gPiDCoAlzd2l0Y2ggKGNkY2xrKSB7Cj4gPiBAQCAtOTY3LDE0ICsxMDE5LDE0IEBA IHN0YXRpYyBpbnQgYnh0X2RlX3BsbF92Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBpbnQgY2RjbGspCj4gPiDCoAkJYnJlYWs7Cj4gPiDCoAl9Cj4gPiDCoAo+ID4gLQlyZXR1 cm4gZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWYgKiByYXRpbzsKPiA+ICsJcmV0dXJuIGRldl9wcml2 LT5jZGNsay5ody5yZWYgKiByYXRpbzsKPiA+IMKgfQo+ID4gwqAKPiA+IMKgc3RhdGljIGludCBn bGtfZGVfcGxsX3ZjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBjZGNs aykKPiA+IMKgewo+ID4gwqAJaW50IHJhdGlvOwo+ID4gwqAKPiA+IC0JaWYgKGNkY2xrID09IGRl dl9wcml2LT5jZGNsa19wbGwucmVmKQo+ID4gKwlpZiAoY2RjbGsgPT0gZGV2X3ByaXYtPmNkY2xr Lmh3LnJlZikKPiA+IMKgCQlyZXR1cm4gMDsKPiA+IMKgCj4gPiDCoAlzd2l0Y2ggKGNkY2xrKSB7 Cj4gPiBAQCAtOTg3LDE1ICsxMDM5LDE2IEBAIHN0YXRpYyBpbnQgZ2xrX2RlX3BsbF92Y28oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgY2RjbGspCj4gPiDCoAkJYnJlYWs7 Cj4gPiDCoAl9Cj4gPiDCoAo+ID4gLQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWYgKiBy YXRpbzsKPiA+ICsJcmV0dXJuIGRldl9wcml2LT5jZGNsay5ody5yZWYgKiByYXRpbzsKPiA+IMKg fQo+ID4gwqAKPiA+IC1zdGF0aWMgdm9pZCBieHRfZGVfcGxsX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiArc3RhdGljIHZvaWQgYnh0X2RlX3BsbF91cGRhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gKwkJCcKgwqDCoMKgwqDCoHN0 cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gPiDCoHsKPiA+IMKgCXUzMiB2 YWw7Cj4gPiDCoAo+ID4gLQlkZXZfcHJpdi0+Y2RjbGtfcGxsLnJlZiA9IDE5MjAwOwo+ID4gLQlk ZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyA9IDA7Cj4gPiArCWNkY2xrX3N0YXRlLT5yZWYgPSAxOTIw MDsKPiA+ICsJY2RjbGtfc3RhdGUtPnZjbyA9IDA7Cj4gPiDCoAo+ID4gwqAJdmFsID0gSTkxNV9S RUFEKEJYVF9ERV9QTExfRU5BQkxFKTsKPiA+IMKgCWlmICgodmFsICYgQlhUX0RFX1BMTF9QTExf RU5BQkxFKSA9PSAwKQo+ID4gQEAgLTEwMDUsMjAgKzEwNTgsMjEgQEAgc3RhdGljIHZvaWQgYnh0 X2RlX3BsbF91cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gwqAJ CXJldHVybjsKPiA+IMKgCj4gPiDCoAl2YWwgPSBJOTE1X1JFQUQoQlhUX0RFX1BMTF9DVEwpOwo+ ID4gLQlkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyA9ICh2YWwgJiBCWFRfREVfUExMX1JBVElPX01B U0spICoKPiA+IC0JCWRldl9wcml2LT5jZGNsa19wbGwucmVmOwo+ID4gKwljZGNsa19zdGF0ZS0+ dmNvID0gKHZhbCAmIEJYVF9ERV9QTExfUkFUSU9fTUFTSykgKiBjZGNsa19zdGF0ZS0+cmVmOwo+ ID4gwqB9Cj4gPiDCoAo+ID4gLXN0YXRpYyBpbnQgYnh0X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiArc3RhdGljIHZvaWQgYnh0X2dldF9jZGNsayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiArCQkJwqDCoHN0cnVjdCBpbnRlbF9j ZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gPiDCoHsKPiA+IMKgCXUzMiBkaXZpZGVyOwo+ID4g LQlpbnQgZGl2LCB2Y287Cj4gPiArCWludCBkaXY7Cj4gPiDCoAo+ID4gLQlieHRfZGVfcGxsX3Vw ZGF0ZShkZXZfcHJpdik7Cj4gPiArCWJ4dF9kZV9wbGxfdXBkYXRlKGRldl9wcml2LCBjZGNsa19z dGF0ZSk7Cj4gPiDCoAo+ID4gLQl2Y28gPSBkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbzsKPiA+IC0J aWYgKHZjbyA9PSAwKQo+ID4gLQkJcmV0dXJuIGRldl9wcml2LT5jZGNsa19wbGwucmVmOwo+ID4g KwljZGNsa19zdGF0ZS0+Y2RjbGsgPSBjZGNsa19zdGF0ZS0+cmVmOwo+ID4gKwo+ID4gKwlpZiAo Y2RjbGtfc3RhdGUtPnZjbyA9PSAwKQo+ID4gKwkJcmV0dXJuOwo+ID4gwqAKPiA+IMKgCWRpdmlk ZXIgPSBJOTE1X1JFQUQoQ0RDTEtfQ1RMKSAmIEJYVF9DRENMS19DRDJYX0RJVl9TRUxfTUFTSzsK PiA+IMKgCj4gPiBAQCAtMTAzOCwxMCArMTA5MiwxMCBAQCBzdGF0aWMgaW50IGJ4dF9nZXRfY2Rj bGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gwqAJCWJyZWFrOwo+ID4g wqAJZGVmYXVsdDoKPiA+IMKgCQlNSVNTSU5HX0NBU0UoZGl2aWRlcik7Cj4gPiAtCQlyZXR1cm4g ZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWY7Cj4gPiArCQlyZXR1cm47Cj4gPiDCoAl9Cj4gPiDCoAo+ ID4gLQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QodmNvLCBkaXYpOwo+ID4gKwljZGNsa19zdGF0 ZS0+Y2RjbGsgPSBESVZfUk9VTkRfQ0xPU0VTVChjZGNsa19zdGF0ZS0+dmNvLCBkaXYpOwo+ID4g wqB9Cj4gPiDCoAo+ID4gwqBzdGF0aWMgdm9pZCBieHRfZGVfcGxsX2Rpc2FibGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gQEAgLTEwNTQsMTIgKzExMDgsMTIgQEAgc3Rh dGljIHZvaWQgYnh0X2RlX3BsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiA+IMKgCQkJCcKgwqDCoMKgMSkpCj4gPiDCoAkJRFJNX0VSUk9SKCJ0aW1lb3V0IHdh aXRpbmcgZm9yIERFIFBMTCB1bmxvY2tcbiIpOwo+ID4gwqAKPiA+IC0JZGV2X3ByaXYtPmNkY2xr X3BsbC52Y28gPSAwOwo+ID4gKwlkZXZfcHJpdi0+Y2RjbGsuaHcudmNvID0gMDsKPiA+IMKgfQo+ ID4gwqAKPiA+IMKgc3RhdGljIHZvaWQgYnh0X2RlX3BsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgdmNvKQo+ID4gwqB7Cj4gPiAtCWludCByYXRpbyA9IERJ Vl9ST1VORF9DTE9TRVNUKHZjbywgZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWYpOwo+ID4gKwlpbnQg cmF0aW8gPSBESVZfUk9VTkRfQ0xPU0VTVCh2Y28sIGRldl9wcml2LT5jZGNsay5ody5yZWYpOwo+ ID4gwqAJdTMyIHZhbDsKPiA+IMKgCj4gPiDCoAl2YWwgPSBJOTE1X1JFQUQoQlhUX0RFX1BMTF9D VEwpOwo+ID4gQEAgLTEwNzcsNyArMTEzMSw3IEBAIHN0YXRpYyB2b2lkIGJ4dF9kZV9wbGxfZW5h YmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZjbykKPiA+IMKgCQkJ CcKgwqDCoMKgMSkpCj4gPiDCoAkJRFJNX0VSUk9SKCJ0aW1lb3V0IHdhaXRpbmcgZm9yIERFIFBM TCBsb2NrXG4iKTsKPiA+IMKgCj4gPiAtCWRldl9wcml2LT5jZGNsa19wbGwudmNvID0gdmNvOwo+ ID4gKwlkZXZfcHJpdi0+Y2RjbGsuaHcudmNvID0gdmNvOwo+ID4gwqB9Cj4gPiDCoAo+ID4gwqBz dGF0aWMgdm9pZCBieHRfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+IEBAIC0xMTA1LDcgKzExNTksNyBAQCBzdGF0aWMgdm9pZCBieHRfc2V0X2NkY2xrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IMKgCQlkaXZpZGVyID0gQlhUX0NE Q0xLX0NEMlhfRElWX1NFTF8xOwo+ID4gwqAJCWJyZWFrOwo+ID4gwqAJZGVmYXVsdDoKPiA+IC0J CVdBUk5fT04oY2RjbGsgIT0gZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWYpOwo+ID4gKwkJV0FSTl9P TihjZGNsayAhPSBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmKTsKPiA+IMKgCQlXQVJOX09OKHZjbyAh PSAwKTsKPiA+IMKgCj4gPiDCoAkJZGl2aWRlciA9IEJYVF9DRENMS19DRDJYX0RJVl9TRUxfMTsK PiA+IEBAIC0xMTI0LDExICsxMTc4LDExIEBAIHN0YXRpYyB2b2lkIGJ4dF9zZXRfY2RjbGsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gwqAJCXJldHVybjsKPiA+IMKgCX0K PiA+IMKgCj4gPiAtCWlmIChkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyAhPSAwICYmCj4gPiAtCcKg wqDCoMKgZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gIT0gdmNvKQo+ID4gKwlpZiAoZGV2X3ByaXYt PmNkY2xrLmh3LnZjbyAhPSAwICYmCj4gPiArCcKgwqDCoMKgZGV2X3ByaXYtPmNkY2xrLmh3LnZj byAhPSB2Y28pCj4gPiDCoAkJYnh0X2RlX3BsbF9kaXNhYmxlKGRldl9wcml2KTsKPiA+IMKgCj4g PiAtCWlmIChkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyAhPSB2Y28pCj4gPiArCWlmIChkZXZfcHJp di0+Y2RjbGsuaHcudmNvICE9IHZjbykKPiA+IMKgCQlieHRfZGVfcGxsX2VuYWJsZShkZXZfcHJp diwgdmNvKTsKPiA+IMKgCj4gPiDCoAl2YWwgPSBkaXZpZGVyIHwgc2tsX2NkY2xrX2RlY2ltYWwo Y2RjbGspOwo+ID4gQEAgLTExNjUsOCArMTIxOSw4IEBAIHN0YXRpYyB2b2lkIGJ4dF9zYW5pdGl6 ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoAo+ID4gwqAJ aW50ZWxfdXBkYXRlX2NkY2xrKGRldl9wcml2KTsKPiA+IMKgCj4gPiAtCWlmIChkZXZfcHJpdi0+ Y2RjbGtfcGxsLnZjbyA9PSAwIHx8Cj4gPiAtCcKgwqDCoMKgZGV2X3ByaXYtPmNkY2xrX2ZyZXEg PT0gZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWYpCj4gPiArCWlmIChkZXZfcHJpdi0+Y2RjbGsuaHcu dmNvID09IDAgfHwKPiA+ICsJwqDCoMKgwqBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGsgPT0gZGV2 X3ByaXYtPmNkY2xrLmh3LnJlZikKPiA+IMKgCQlnb3RvIHNhbml0aXplOwo+ID4gwqAKPiA+IMKg CS8qIERQTEwgb2theTsgdmVyaWZ5IHRoZSBjZGNsb2NrCj4gPiBAQCAtMTE4NCwxMiArMTIzOCwx MiBAQCBzdGF0aWMgdm9pZCBieHRfc2FuaXRpemVfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ID4gwqAJY2RjdGwgJj0gfkJYVF9DRENMS19DRDJYX1BJUEVfTk9ORTsK PiA+IMKgCj4gPiDCoAlleHBlY3RlZCA9IChjZGN0bCAmIEJYVF9DRENMS19DRDJYX0RJVl9TRUxf TUFTSykgfAo+ID4gLQkJwqDCoMKgc2tsX2NkY2xrX2RlY2ltYWwoZGV2X3ByaXYtPmNkY2xrX2Zy ZXEpOwo+ID4gKwkJc2tsX2NkY2xrX2RlY2ltYWwoZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrKTsK PiA+IMKgCS8qCj4gPiDCoAnCoCogRGlzYWJsZSBTU0EgUHJlY2hhcmdlIHdoZW4gQ0QgY2xvY2sg ZnJlcXVlbmN5IDwgNTAwIE1IeiwKPiA+IMKgCcKgKiBlbmFibGUgb3RoZXJ3aXNlLgo+ID4gwqAJ wqAqLwo+ID4gLQlpZiAoZGV2X3ByaXYtPmNkY2xrX2ZyZXEgPj0gNTAwMDAwKQo+ID4gKwlpZiAo ZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrID49IDUwMDAwMCkKPiA+IMKgCQlleHBlY3RlZCB8PSBC WFRfQ0RDTEtfU1NBX1BSRUNIQVJHRV9FTkFCTEU7Cj4gPiDCoAo+ID4gwqAJaWYgKGNkY3RsID09 IGV4cGVjdGVkKQo+ID4gQEAgLTEyMDAsMTAgKzEyNTQsMTAgQEAgc3RhdGljIHZvaWQgYnh0X3Nh bml0aXplX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+IMKgCURS TV9ERUJVR19LTVMoIlNhbml0aXppbmcgY2RjbGsgcHJvZ3JhbW1lZCBieSBwcmUtb3NcbiIpOwo+ ID4gwqAKPiA+IMKgCS8qIGZvcmNlIGNkY2xrIHByb2dyYW1taW5nICovCj4gPiAtCWRldl9wcml2 LT5jZGNsa19mcmVxID0gMDsKPiA+ICsJZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrID0gMDsKPiA+ IMKgCj4gPiDCoAkvKiBmb3JjZSBmdWxsIFBMTCBkaXNhYmxlICsgZW5hYmxlICovCj4gPiAtCWRl dl9wcml2LT5jZGNsa19wbGwudmNvID0gLTE7Cj4gPiArCWRldl9wcml2LT5jZGNsay5ody52Y28g PSAtMTsKPiA+IMKgfQo+ID4gwqAKPiA+IMKgdm9pZCBieHRfaW5pdF9jZGNsayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiBAQCAtMTIxMiw3ICsxMjY2LDggQEAgdm9pZCBi eHRfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoAo+ ID4gwqAJYnh0X3Nhbml0aXplX2NkY2xrKGRldl9wcml2KTsKPiA+IMKgCj4gPiAtCWlmIChkZXZf cHJpdi0+Y2RjbGtfZnJlcSAhPSAwICYmIGRldl9wcml2LT5jZGNsa19wbGwudmNvICE9IDApCj4g PiArCWlmIChkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGsgIT0gMCAmJgo+ID4gKwnCoMKgwqDCoGRl dl9wcml2LT5jZGNsay5ody52Y28gIT0gMCkKPiA+IMKgCQlyZXR1cm47Cj4gPiDCoAo+ID4gwqAJ LyoKPiA+IEBAIC0xMjMzLDcgKzEyODgsMTMgQEAgdm9pZCBieHRfaW5pdF9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoAo+ID4gwqB2b2lkIGJ4dF91bmluaXRf Y2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gwqB7Cj4gPiAtCWJ4 dF9zZXRfY2RjbGsoZGV2X3ByaXYsIGRldl9wcml2LT5jZGNsa19wbGwucmVmLCAwKTsKPiA+ICsJ Ynh0X3NldF9jZGNsayhkZXZfcHJpdiwgZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiwgMCk7Cj4gPiAr fQo+ID4gKwo+ID4gK2Jvb2wgaW50ZWxfY2RjbGtfc3RhdGVfY29tcGFyZShjb25zdCBzdHJ1Y3Qg aW50ZWxfY2RjbGtfc3RhdGUgKmEsCj4gPiArCQkJwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3Qg aW50ZWxfY2RjbGtfc3RhdGUgKmIpCj4gPiArewo+ID4gKwlyZXR1cm4gbWVtY21wKGEsIGIsIHNp emVvZigqYSkpID09IDA7Cj4gPiDCoH0KPiA+IMKgCj4gPiDCoHN0YXRpYyBpbnQgYmR3X2FkanVz dF9taW5fcGlwZV9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAo+ID4gQEAgLTE1MzMsNyArMTU5NCw3IEBAIHZvaWQgaW50ZWxfdXBkYXRlX21heF9jZGNsayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoAkJZGV2X3ByaXYtPm1heF9j ZGNsa19mcmVxID0gNDAwMDAwOwo+ID4gwqAJfSBlbHNlIHsKPiA+IMKgCQkvKiBvdGhlcndpc2Ug YXNzdW1lIGNkY2xrIGlzIGZpeGVkICovCj4gPiAtCQlkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEg PSBkZXZfcHJpdi0+Y2RjbGtfZnJlcTsKPiA+ICsJCWRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSA9 IGRldl9wcml2LT5jZGNsay5ody5jZGNsazsKPiA+IMKgCX0KPiA+IMKgCj4gPiDCoAlkZXZfcHJp di0+bWF4X2RvdGNsa19mcmVxID0gaW50ZWxfY29tcHV0ZV9tYXhfZG90Y2xrKGRldl9wcml2KTsK PiA+IEBAIC0xNTQ3LDE1ICsxNjA4LDExIEBAIHZvaWQgaW50ZWxfdXBkYXRlX21heF9jZGNsayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoAo+ID4gwqB2b2lkIGludGVs X3VwZGF0ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoHsK PiA+IC0JZGV2X3ByaXYtPmNkY2xrX2ZyZXEgPSBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2RjbGso ZGV2X3ByaXYpOwo+ID4gKwlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsoZGV2X3ByaXYsICZk ZXZfcHJpdi0+Y2RjbGsuaHcpOwo+ID4gwqAKPiA+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOSkKPiA+IC0JCURSTV9ERUJVR19EUklWRVIoIkN1cnJlbnQgQ0QgY2xvY2sgcmF0ZTogJWQg a0h6LCBWQ086ICVkIGtIeiwgcmVmOiAlZCBrSHpcbiIsCj4gPiAtCQkJCcKgZGV2X3ByaXYtPmNk Y2xrX2ZyZXEsIGRldl9wcml2LT5jZGNsa19wbGwudmNvLAo+ID4gLQkJCQnCoGRldl9wcml2LT5j ZGNsa19wbGwucmVmKTsKPiA+IC0JZWxzZQo+ID4gLQkJRFJNX0RFQlVHX0RSSVZFUigiQ3VycmVu dCBDRCBjbG9jayByYXRlOiAlZCBrSHpcbiIsCj4gPiAtCQkJCcKgZGV2X3ByaXYtPmNkY2xrX2Zy ZXEpOwo+ID4gKwlEUk1fREVCVUdfRFJJVkVSKCJDdXJyZW50IENEIGNsb2NrIHJhdGU6ICVkIGtI eiwgVkNPOiAlZCBrSHosIHJlZjogJWQga0h6XG4iLAo+ID4gKwkJCcKgZGV2X3ByaXYtPmNkY2xr Lmh3LmNkY2xrLCBkZXZfcHJpdi0+Y2RjbGsuaHcudmNvLAo+ID4gKwkJCcKgZGV2X3ByaXYtPmNk Y2xrLmh3LnJlZik7Cj4gPiDCoAo+ID4gwqAJLyoKPiA+IMKgCcKgKiA5OjAgQ01CVVMgW3NpY10g Q0RDTEsgZnJlcXVlbmN5IChjZGZyZXEpOgo+ID4gQEAgLTE1NjUsNyArMTYyMiw3IEBAIHZvaWQg aW50ZWxfdXBkYXRlX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ IMKgCcKgKi8KPiA+IMKgCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllW SUVXKGRldl9wcml2KSkKPiA+IMKgCQlJOTE1X1dSSVRFKEdNQlVTRlJFUV9WTFYsCj4gPiAtCQkJ wqDCoMKgRElWX1JPVU5EX1VQKGRldl9wcml2LT5jZGNsa19mcmVxLCAxMDAwKSk7Cj4gPiArCQkJ wqDCoMKgRElWX1JPVU5EX1VQKGRldl9wcml2LT5jZGNsay5ody5jZGNsaywgMTAwMCkpOwo+ID4g wqB9Cj4gPiDCoAo+ID4gwqBzdGF0aWMgaW50IHBjaF9yYXdjbGsoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4g aW5kZXggNTE5ZTVkNjYzYzVmLi42YzM4YWIyOTk1MDYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gQEAgLTEzNiw3ICsxMzYsNyBAQCBzdHJ1Y3QgaW50ZWxf bGltaXQgewo+ID4gwqB9Owo+ID4gwqAKPiA+IMKgLyogcmV0dXJucyBIUExMIGZyZXF1ZW5jeSBp biBrSHogKi8KPiA+IC1zdGF0aWMgaW50IHZhbGxleXZpZXdfZ2V0X3ZjbyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAraW50IHZsdl9nZXRfaHBsbF92Y28oc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gwqB7Cj4gPiDCoAlpbnQgaHBsbF9mcmVxLCB2 Y29fZnJlcVtdID0geyA4MDAsIDE2MDAsIDIwMDAsIDI0MDAgfTsKPiA+IMKgCj4gPiBAQCAtMTcy LDcgKzE3Miw3IEBAIGludCB2bHZfZ2V0X2Nja19jbG9ja19ocGxsKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiA+IMKgCQkJwqDCoMKgY29uc3QgY2hhciAqbmFtZSwgdTMyIHJl ZykKPiA+IMKgewo+ID4gwqAJaWYgKGRldl9wcml2LT5ocGxsX2ZyZXEgPT0gMCkKPiA+IC0JCWRl dl9wcml2LT5ocGxsX2ZyZXEgPSB2YWxsZXl2aWV3X2dldF92Y28oZGV2X3ByaXYpOwo+ID4gKwkJ ZGV2X3ByaXYtPmhwbGxfZnJlcSA9IHZsdl9nZXRfaHBsbF92Y28oZGV2X3ByaXYpOwo+ID4gwqAK PiA+IMKgCXJldHVybiB2bHZfZ2V0X2Nja19jbG9jayhkZXZfcHJpdiwgbmFtZSwgcmVnLAo+ID4g wqAJCQkJwqBkZXZfcHJpdi0+aHBsbF9mcmVxKTsKPiA+IEBAIC0xMjQzNiw3ICsxMjQzNiw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfbW9kZXNldF9jaGVja3Moc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQo+ID4gwqAJwqAqLwo+ID4gwqAJaWYgKGRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRf Y2FsY19jZGNsaykgewo+ID4gwqAJCWlmICghaW50ZWxfc3RhdGUtPmNkY2xrX3BsbF92Y28pCj4g PiAtCQkJaW50ZWxfc3RhdGUtPmNkY2xrX3BsbF92Y28gPSBkZXZfcHJpdi0+Y2RjbGtfcGxsLnZj bzsKPiA+ICsJCQlpbnRlbF9zdGF0ZS0+Y2RjbGtfcGxsX3ZjbyA9IGRldl9wcml2LT5jZGNsay5o dy52Y287Cj4gPiDCoAkJaWYgKCFpbnRlbF9zdGF0ZS0+Y2RjbGtfcGxsX3ZjbykKPiA+IMKgCQkJ aW50ZWxfc3RhdGUtPmNkY2xrX3BsbF92Y28gPSBkZXZfcHJpdi0+c2tsX3ByZWZlcnJlZF92Y29f ZnJlcTsKPiA+IMKgCj4gPiBAQCAtMTI0NTYsOCArMTI0NTYsOCBAQCBzdGF0aWMgaW50IGludGVs X21vZGVzZXRfY2hlY2tzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+IMKgCQl9 Cj4gPiDCoAo+ID4gwqAJCS8qIEFsbCBwaXBlcyBtdXN0IGJlIHN3aXRjaGVkIG9mZiB3aGlsZSB3 ZSBjaGFuZ2UgdGhlIGNkY2xrLiAqLwo+ID4gLQkJaWYgKGludGVsX3N0YXRlLT5kZXZfY2RjbGsg IT0gZGV2X3ByaXYtPmNkY2xrX2ZyZXEgfHwKPiA+IC0JCcKgwqDCoMKgaW50ZWxfc3RhdGUtPmNk Y2xrX3BsbF92Y28gIT0gZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28pIHsKPiA+ICsJCWlmIChpbnRl bF9zdGF0ZS0+ZGV2X2NkY2xrICE9IGRldl9wcml2LT5jZGNsay5ody5jZGNsayB8fAo+ID4gKwkJ wqDCoMKgwqBpbnRlbF9zdGF0ZS0+Y2RjbGtfcGxsX3ZjbyAhPSBkZXZfcHJpdi0+Y2RjbGsuaHcu dmNvKSB7Cj4gPiDCoAkJCXJldCA9IGludGVsX21vZGVzZXRfYWxsX3BpcGVzKHN0YXRlKTsKPiA+ IMKgCQkJaWYgKHJldCA8IDApCj4gPiDCoAkJCQlyZXR1cm4gcmV0Owo+ID4gQEAgLTEyODc0LDgg KzEyODc0LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+IMKgCQlkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVf bGVnYWN5X21vZGVzZXRfc3RhdGUoc3RhdGUtPmRldiwgc3RhdGUpOwo+ID4gwqAKPiA+IMKgCQlp ZiAoZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jb21taXRfY2RjbGsgJiYKPiA+IC0JCcKgwqDC oMKgKGludGVsX3N0YXRlLT5kZXZfY2RjbGsgIT0gZGV2X3ByaXYtPmNkY2xrX2ZyZXEgfHwKPiA+ IC0JCcKgwqDCoMKgwqBpbnRlbF9zdGF0ZS0+Y2RjbGtfcGxsX3ZjbyAhPSBkZXZfcHJpdi0+Y2Rj bGtfcGxsLnZjbykpCj4gPiArCQnCoMKgwqDCoChpbnRlbF9zdGF0ZS0+ZGV2X2NkY2xrICE9IGRl dl9wcml2LT5jZGNsay5ody5jZGNsayB8fAo+ID4gKwkJwqDCoMKgwqDCoGludGVsX3N0YXRlLT5j ZGNsa19wbGxfdmNvICE9IGRldl9wcml2LT5jZGNsay5ody52Y28pKQo+ID4gwqAJCQlkZXZfcHJp di0+ZGlzcGxheS5tb2Rlc2V0X2NvbW1pdF9jZGNsayhzdGF0ZSk7Cj4gPiDCoAo+ID4gwqAJCS8q Cj4gPiBAQCAtMTQ3MjQsNyArMTQ3MjQsNyBAQCB2b2lkIGludGVsX21vZGVzZXRfaW5pdF9odyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gwqAKPiA+IMKgCWludGVsX3VwZGF0ZV9jZGNsayhk ZXZfcHJpdik7Cj4gPiDCoAo+ID4gLQlkZXZfcHJpdi0+YXRvbWljX2NkY2xrX2ZyZXEgPSBkZXZf cHJpdi0+Y2RjbGtfZnJlcTsKPiA+ICsJZGV2X3ByaXYtPmF0b21pY19jZGNsa19mcmVxID0gZGV2 X3ByaXYtPmNkY2xrLmh3LmNkY2xrOwo+ID4gwqAKPiA+IMKgCWludGVsX2luaXRfY2xvY2tfZ2F0 aW5nKGRldl9wcml2KTsKPiA+IMKgfQo+ID4gQEAgLTE0ODk3LDcgKzE0ODk3LDcgQEAgaW50IGlu dGVsX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gwqAKPiA+IMKgCWlu dGVsX3VwZGF0ZV9jemNsayhkZXZfcHJpdik7Cj4gPiDCoAlpbnRlbF91cGRhdGVfY2RjbGsoZGV2 X3ByaXYpOwo+ID4gLQlkZXZfcHJpdi0+YXRvbWljX2NkY2xrX2ZyZXEgPSBkZXZfcHJpdi0+Y2Rj bGtfZnJlcTsKPiA+ICsJZGV2X3ByaXYtPmF0b21pY19jZGNsa19mcmVxID0gZGV2X3ByaXYtPmNk Y2xrLmh3LmNkY2xrOwo+ID4gwqAKPiA+IMKgCWludGVsX3NoYXJlZF9kcGxsX2luaXQoZGV2KTsK PiA+IMKgCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+IGluZGV4IDQ1ZWJjOTYzMjYzMy4u NzNhNzA4YjhkODg3IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gQEAgLTg4 NSw3ICs4ODUsNyBAQCBzdGF0aWMgdWludDMyX3QgaWxrX2dldF9hdXhfY2xvY2tfZGl2aWRlcihz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgaW5kZXgpCj4gPiDCoAnCoCogZGl2aWRlIGJ5 IDIwMDAgYW5kIHVzZSB0aGF0Cj4gPiDCoAnCoCovCj4gPiDCoAlpZiAoaW50ZWxfZGlnX3BvcnQt PnBvcnQgPT0gUE9SVF9BKQo+ID4gLQkJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKGRldl9wcml2 LT5jZGNsa19mcmVxLCAyMDAwKTsKPiA+ICsJCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVChkZXZf cHJpdi0+Y2RjbGsuaHcuY2RjbGssIDIwMDApOwo+ID4gwqAJZWxzZQo+ID4gwqAJCXJldHVybiBE SVZfUk9VTkRfQ0xPU0VTVChkZXZfcHJpdi0+cmF3Y2xrX2ZyZXEsIDIwMDApOwo+ID4gwqB9Cj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5kZXggOGQ5M2I3YmRhM2ZmLi5jYzAxMjIy ODJhN2IgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IEBAIC0xMjI1LDEw ICsxMjI1LDEzIEBAIHZvaWQgaW50ZWxfaW5pdF9jZGNsa19ob29rcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gwqB2b2lkIGludGVsX3VwZGF0ZV9tYXhfY2RjbGsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+IMKgdm9pZCBpbnRlbF91cGRhdGVf Y2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+IMKgdm9pZCBpbnRl bF91cGRhdGVfcmF3Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiAr Ym9vbCBpbnRlbF9jZGNsa19zdGF0ZV9jb21wYXJlKGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19z dGF0ZSAqYSwKPiA+ICsJCQnCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19z dGF0ZSAqYik7Cj4gPiDCoAo+ID4gwqAvKiBpbnRlbF9kaXNwbGF5LmMgKi8KPiA+IMKgZW51bSB0 cmFuc2NvZGVyIGludGVsX2NydGNfcGNoX3RyYW5zY29kZXIoc3RydWN0IGludGVsX2NydGMgKmNy dGMpOwo+ID4gwqB2b2lkIGludGVsX3VwZGF0ZV9yYXdjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKPiA+ICtpbnQgdmx2X2dldF9ocGxsX3ZjbyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gwqBpbnQgdmx2X2dldF9jY2tfY2xvY2soc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gwqAJCcKgwqDCoMKgwqDCoGNvbnN0IGNoYXIg Km5hbWUsIHUzMiByZWcsIGludCByZWZfZnJlcSk7Cj4gPiDCoGludCB2bHZfZ2V0X2Nja19jbG9j a19ocGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2ZiYy5jCj4gPiBpbmRleCA0NjMwNTZkODBmOWIuLjM4NTI1MWU0OGM3NCAxMDA2NDQK PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ID4gQEAgLTgyOSw3ICs4MjksNyBAQCBzdGF0 aWMgYm9vbCBpbnRlbF9mYmNfY2FuX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ ID4gwqAKPiA+IMKgCS8qIFdhRmJjRXhjZWVkQ2RDbG9ja1RocmVzaG9sZDpoc3csYmR3ICovCj4g PiDCoAlpZiAoKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikp ICYmCj4gPiAtCcKgwqDCoMKgY2FjaGUtPmNydGMuaHN3X2Jkd19waXhlbF9yYXRlID49IGRldl9w cml2LT5jZGNsa19mcmVxICogOTUgLyAxMDApIHsKPiA+ICsJwqDCoMKgwqBjYWNoZS0+Y3J0Yy5o c3dfYmR3X3BpeGVsX3JhdGUgPj0gZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrICogOTUgLyAxMDAp IHsKPiA+IMKgCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAicGl4ZWwgcmF0ZSBpcyB0b28gYmlnIjsK PiA+IMKgCQlyZXR1cm4gZmFsc2U7Cj4gPiDCoAl9Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bh bmVsLmMKPiA+IGluZGV4IDFhNmZmMjZkZWEyMC4uY2I1MGM1Mjc0MDFmIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+ID4gQEAgLTEzMTUsNyArMTMxNSw3IEBAIHN0YXRp YyB1MzIgaTl4eF9oel90b19wd20oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1 MzIgcHdtX2ZyZXFfaHopCj4gPiDCoAlpZiAoSVNfUElORVZJRVcoZGV2X3ByaXYpKQo+ID4gwqAJ CWNsb2NrID0gS0h6KGRldl9wcml2LT5yYXdjbGtfZnJlcSk7Cj4gPiDCoAllbHNlCj4gPiAtCQlj bG9jayA9IEtIeihkZXZfcHJpdi0+Y2RjbGtfZnJlcSk7Cj4gPiArCQljbG9jayA9IEtIeihkZXZf cHJpdi0+Y2RjbGsuaHcuY2RjbGspOwo+ID4gwqAKPiA+IMKgCXJldHVybiBESVZfUk9VTkRfQ0xP U0VTVChjbG9jaywgcHdtX2ZyZXFfaHogKiAzMik7Cj4gPiDCoH0KPiA+IEBAIC0xMzMzLDcgKzEz MzMsNyBAQCBzdGF0aWMgdTMyIGk5NjVfaHpfdG9fcHdtKHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvciwgdTMyIHB3bV9mcmVxX2h6KQo+ID4gwqAJaWYgKElTX0c0WChkZXZfcHJpdikp Cj4gPiDCoAkJY2xvY2sgPSBLSHooZGV2X3ByaXYtPnJhd2Nsa19mcmVxKTsKPiA+IMKgCWVsc2UK PiA+IC0JCWNsb2NrID0gS0h6KGRldl9wcml2LT5jZGNsa19mcmVxKTsKPiA+ICsJCWNsb2NrID0g S0h6KGRldl9wcml2LT5jZGNsay5ody5jZGNsayk7Cj4gPiDCoAo+ID4gwqAJcmV0dXJuIERJVl9S T1VORF9DTE9TRVNUKGNsb2NrLCBwd21fZnJlcV9oeiAqIDEyOCk7Cj4gPiDCoH0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiA+IGluZGV4IDZkNWVmZWIzNTgyMy4u MTRiYmVjYzhmMmVkIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cnVudGltZV9wbS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1l X3BtLmMKPiA+IEBAIC05NjQsOSArOTY0LDEyIEBAIHN0YXRpYyB2b2lkIGdlbjlfYXNzZXJ0X2Ri dWZfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiDCoHN0YXRp YyB2b2lkIGdlbjlfZGNfb2ZmX3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiA+IMKgCQkJCQnCoMKgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93 ZXJfd2VsbCkKPiA+IMKgewo+ID4gKwlzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgY2RjbGtfc3Rh dGUgPSB7fTsKPiA+ICsKPiA+IMKgCWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFU RV9ESVNBQkxFKTsKPiA+IMKgCj4gPiAtCVdBUk5fT04oZGV2X3ByaXYtPmNkY2xrX2ZyZXEgIT0g ZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xrKGRldl9wcml2KSk7Cj4gPiArCWRldl9wcml2LT5k aXNwbGF5LmdldF9jZGNsayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlKTsKPiA+ICsJV0FSTl9PTigh aW50ZWxfY2RjbGtfc3RhdGVfY29tcGFyZSgmZGV2X3ByaXYtPmNkY2xrLmh3LCAmY2RjbGtfc3Rh dGUpKTsKPiA+IMKgCj4gPiDCoAlnZW45X2Fzc2VydF9kYnVmX2VuYWJsZWQoZGV2X3ByaXYpOwo+ ID4gwqAKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=