From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Singh, Gaurav K" Subject: Re: [PATCH 1/3] drm/i915/dsi: clean up MIPI DSI pipe vs. port usage Date: Wed, 26 Nov 2014 22:50:46 +0530 Message-ID: <54760BEE.2060305@intel.com> References: <6d36c6473939f564f593f5d363dacdb92539db83.1415976065.git.jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id AAA6C6E0F5 for ; Wed, 26 Nov 2014 09:20:56 -0800 (PST) In-Reply-To: <6d36c6473939f564f593f5d363dacdb92539db83.1415976065.git.jani.nikula@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula , intel-gfx@lists.freedesktop.org, shobhit.kumar@linux.intel.com List-Id: intel-gfx@lists.freedesktop.org Ck9uIDExLzE0LzIwMTQgODoyNCBQTSwgSmFuaSBOaWt1bGEgd3JvdGU6Cj4gTUlQSSBEU0kgd29y a3Mgb24gcG9ydHMgQSBhbmQgQywgd2hpY2ggbWFwIHRvIHBpcGVzIEEgYW5kIEIsCj4gcmVzcGVj dGl2ZWx5LiBUaGluZ3MgYXJlIGdvaW5nIHRvIGdldCBtb3JlIGNvbXBsaWNhdGVkIHdpdGggdGhl Cj4gaW50cm9kdWN0aW9uIG9mIGR1YWwgbGluayBEU0kgc3VwcG9ydCwgc28gY2xlYW4gdXAgdGhl IHJlZ2lzdGVyIGRlZmluZXMKPiBhbmQgY29kZSB0byBtYXRjaCByZWFsaXR5Lgo+Cj4gU2lnbmVk LW9mZi1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KPiAtLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICB8IDMwMyArKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMg ICAgIHwgMTQ4ICsrKysrKysrLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kc2kuaCAgICAgfCAgMTYgKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9j bWQuYyB8ICA2NCArKysrLS0tLQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAyNzcgaW5zZXJ0aW9ucygr KSwgMjU0IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggYTE0 MzEyN2ViNDUxLi4yNTAwNDNmM2YyMmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBA QCAtMzEsNiArMzEsOCBAQAo+ICAgI2RlZmluZSBfUE9SVChwb3J0LCBhLCBiKSAoKGEpICsgKHBv cnQpKigoYiktKGEpKSkKPiAgICNkZWZpbmUgX1BJUEUzKHBpcGUsIGEsIGIsIGMpICgocGlwZSkg PT0gUElQRV9BID8gKGEpIDogXAo+ICAgCQkJICAgICAgIChwaXBlKSA9PSBQSVBFX0IgPyAoYikg OiAoYykpCj4gKyNkZWZpbmUgX1BPUlQzKHBvcnQsIGEsIGIsIGMpICgocG9ydCkgPT0gUE9SVF9B ID8gKGEpIDogXAo+ICsJCQkgICAgICAgKHBvcnQpID09IFBPUlRfQiA/IChiKSA6IChjKSkKPiAg IAo+ICAgI2RlZmluZSBfTUFTS0VEX0JJVF9FTkFCTEUoYSkgKCgoYSkgPDwgMTYpIHwgKGEpKQo+ ICAgI2RlZmluZSBfTUFTS0VEX0JJVF9ESVNBQkxFKGEpICgoYSkgPDwgMTYpCj4gQEAgLTE0OTIs NyArMTQ5NCw3IEBAIGVudW0gcHVuaXRfcG93ZXJfd2VsbCB7Cj4gICAjZGVmaW5lIEk5MTVfSVNQ X0lOVEVSUlVQVAkJCQkoMTw8MjIpCj4gICAjZGVmaW5lIEk5MTVfTFBFX1BJUEVfQl9JTlRFUlJV UFQJCQkoMTw8MjEpCj4gICAjZGVmaW5lIEk5MTVfTFBFX1BJUEVfQV9JTlRFUlJVUFQJCQkoMTw8 MjApCj4gLSNkZWZpbmUgSTkxNV9NSVBJQl9JTlRFUlJVUFQJCQkJKDE8PDE5KQo+ICsjZGVmaW5l IEk5MTVfTUlQSUNfSU5URVJSVVBUCQkJCSgxPDwxOSkKPiAgICNkZWZpbmUgSTkxNV9NSVBJQV9J TlRFUlJVUFQJCQkJKDE8PDE4KQo+ICAgI2RlZmluZSBJOTE1X1BJUEVfQ09OVFJPTF9OT1RJRllf SU5URVJSVVBUCQkoMTw8MTgpCj4gICAjZGVmaW5lIEk5MTVfRElTUExBWV9QT1JUX0lOVEVSUlVQ VAkJCSgxPDwxNykKPiBAQCAtNjYxMiwyOSArNjYxNCwzMCBAQCBlbnVtIHB1bml0X3Bvd2VyX3dl bGwgewo+ICAgI2RlZmluZSBQSVBFX0NTQ19QT1NUT0ZGX01FKHBpcGUpIF9QSVBFKHBpcGUsIF9Q SVBFX0FfQ1NDX1BPU1RPRkZfTUUsIF9QSVBFX0JfQ1NDX1BPU1RPRkZfTUUpCj4gICAjZGVmaW5l IFBJUEVfQ1NDX1BPU1RPRkZfTE8ocGlwZSkgX1BJUEUocGlwZSwgX1BJUEVfQV9DU0NfUE9TVE9G Rl9MTywgX1BJUEVfQl9DU0NfUE9TVE9GRl9MTykKPiAgIAo+IC0vKiBWTFYgTUlQSSByZWdpc3Rl cnMgKi8KPiArLyogTUlQSSBEU0kgcmVnaXN0ZXJzICovCj4gKwo+ICsjZGVmaW5lIF9NSVBJX1BP UlQocG9ydCwgYSwgYykJX1BPUlQzKHBvcnQsIGEsIDAsIGMpCS8qIHBvcnRzIEEgYW5kIEMgb25s eSAqLwo+ICAgCj4gICAjZGVmaW5lIF9NSVBJQV9QT1JUX0NUUkwJCQkoVkxWX0RJU1BMQVlfQkFT RSArIDB4NjExOTApCj4gLSNkZWZpbmUgX01JUElCX1BPUlRfQ1RSTAkJCShWTFZfRElTUExBWV9C QVNFICsgMHg2MTcwMCkKPiAtI2RlZmluZSBNSVBJX1BPUlRfQ1RSTCh0YykJCV9UUkFOU0NPREVS KHRjLCBfTUlQSUFfUE9SVF9DVFJMLCBcCj4gLQkJCQkJCV9NSVBJQl9QT1JUX0NUUkwpCj4gLSNk ZWZpbmUgIERQSV9FTkFCTEUJCQkJCSgxIDw8IDMxKSAvKiBBICsgQiAqLwo+ICsjZGVmaW5lIF9N SVBJQ19QT1JUX0NUUkwJCQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjE3MDApCj4gKyNkZWZpbmUg TUlQSV9QT1JUX0NUUkwocG9ydCkJX01JUElfUE9SVChwb3J0LCBfTUlQSUFfUE9SVF9DVFJMLCBf TUlQSUNfUE9SVF9DVFJMKQo+ICsjZGVmaW5lICBEUElfRU5BQkxFCQkJCQkoMSA8PCAzMSkgLyog QSArIEMgKi8KPiAgICNkZWZpbmUgIE1JUElBX01JUEk0RFBIWV9ERUxBWV9DT1VOVF9TSElGVAkJ MjcKPiAgICNkZWZpbmUgIE1JUElBX01JUEk0RFBIWV9ERUxBWV9DT1VOVF9NQVNLCQkoMHhmIDw8 IDI3KQo+ICAgI2RlZmluZSAgRFVBTF9MSU5LX01PREVfTUFTSwkJCQkoMSA8PCAyNikKPiAgICNk ZWZpbmUgIERVQUxfTElOS19NT0RFX0ZST05UX0JBQ0sJCQkoMCA8PCAyNikKPiAgICNkZWZpbmUg IERVQUxfTElOS19NT0RFX1BJWEVMX0FMVEVSTkFUSVZFCQkoMSA8PCAyNikKPiAtI2RlZmluZSAg RElUSEVSSU5HX0VOQUJMRQkJCQkoMSA8PCAyNSkgLyogQSArIEIgKi8KPiArI2RlZmluZSAgRElU SEVSSU5HX0VOQUJMRQkJCQkoMSA8PCAyNSkgLyogQSArIEMgKi8KPiAgICNkZWZpbmUgIEZMT1BQ RURfSFNUWAkJCQkJKDEgPDwgMjMpCj4gICAjZGVmaW5lICBERV9JTlZFUlQJCQkJCSgxIDw8IDE5 KSAvKiBYWFggKi8KPiAgICNkZWZpbmUgIE1JUElBX0ZMSVNEU0lfREVMQVlfQ09VTlRfU0hJRlQJ CTE4Cj4gICAjZGVmaW5lICBNSVBJQV9GTElTRFNJX0RFTEFZX0NPVU5UX01BU0sJCQkoMHhmIDw8 IDE4KQo+ICAgI2RlZmluZSAgQUZFX0xBVENIT1VUCQkJCQkoMSA8PCAxNykKPiAgICNkZWZpbmUg IExQX09VVFBVVF9IT0xECQkJCQkoMSA8PCAxNikKPiAtI2RlZmluZSAgTUlQSUJfRkxJU0RTSV9E RUxBWV9DT1VOVF9ISUdIX1NISUZUCQkxNQo+IC0jZGVmaW5lICBNSVBJQl9GTElTRFNJX0RFTEFZ X0NPVU5UX0hJR0hfTUFTSwkJKDEgPDwgMTUpCj4gLSNkZWZpbmUgIE1JUElCX01JUEk0RFBIWV9E RUxBWV9DT1VOVF9TSElGVAkJMTEKPiAtI2RlZmluZSAgTUlQSUJfTUlQSTREUEhZX0RFTEFZX0NP VU5UX01BU0sJCSgweGYgPDwgMTEpCj4gKyNkZWZpbmUgIE1JUElDX0ZMSVNEU0lfREVMQVlfQ09V TlRfSElHSF9TSElGVAkJMTUKPiArI2RlZmluZSAgTUlQSUNfRkxJU0RTSV9ERUxBWV9DT1VOVF9I SUdIX01BU0sJCSgxIDw8IDE1KQo+ICsjZGVmaW5lICBNSVBJQ19NSVBJNERQSFlfREVMQVlfQ09V TlRfU0hJRlQJCTExCj4gKyNkZWZpbmUgIE1JUElDX01JUEk0RFBIWV9ERUxBWV9DT1VOVF9NQVNL CQkoMHhmIDw8IDExKQo+ICAgI2RlZmluZSAgQ1NCX1NISUZUCQkJCQk5Cj4gICAjZGVmaW5lICBD U0JfTUFTSwkJCQkJKDMgPDwgOSkKPiAgICNkZWZpbmUgIENTQl8yME1IWgkJCQkJKDAgPDwgOSkK PiBAQCAtNjY0MywxMCArNjY0NiwxMCBAQCBlbnVtIHB1bml0X3Bvd2VyX3dlbGwgewo+ICAgI2Rl ZmluZSAgQkFOREdBUF9NQVNLCQkJCQkoMSA8PCA4KQo+ICAgI2RlZmluZSAgQkFOREdBUF9QTldf Q0lSQ1VJVAkJCQkoMCA8PCA4KQo+ICAgI2RlZmluZSAgQkFOREdBUF9MTkNfQ0lSQ1VJVAkJCQko MSA8PCA4KQo+IC0jZGVmaW5lICBNSVBJQl9GTElTRFNJX0RFTEFZX0NPVU5UX0xPV19TSElGVAkJ NQo+IC0jZGVmaW5lICBNSVBJQl9GTElTRFNJX0RFTEFZX0NPVU5UX0xPV19NQVNLCQkoNyA8PCA1 KQo+IC0jZGVmaW5lICBURUFSSU5HX0VGRkVDVF9ERUxBWQkJCQkoMSA8PCA0KSAvKiBBICsgQiAq Lwo+IC0jZGVmaW5lICBURUFSSU5HX0VGRkVDVF9TSElGVAkJCQkyIC8qIEEgKyBCICovCj4gKyNk ZWZpbmUgIE1JUElDX0ZMSVNEU0lfREVMQVlfQ09VTlRfTE9XX1NISUZUCQk1Cj4gKyNkZWZpbmUg IE1JUElDX0ZMSVNEU0lfREVMQVlfQ09VTlRfTE9XX01BU0sJCSg3IDw8IDUpCj4gKyNkZWZpbmUg IFRFQVJJTkdfRUZGRUNUX0RFTEFZCQkJCSgxIDw8IDQpIC8qIEEgKyBDICovCj4gKyNkZWZpbmUg IFRFQVJJTkdfRUZGRUNUX1NISUZUCQkJCTIgLyogQSArIEMgKi8KPiAgICNkZWZpbmUgIFRFQVJJ TkdfRUZGRUNUX01BU0sJCQkJKDMgPDwgMikKPiAgICNkZWZpbmUgIFRFQVJJTkdfRUZGRUNUX09G RgkJCQkoMCA8PCAyKQo+ICAgI2RlZmluZSAgVEVBUklOR19FRkZFQ1RfRFNJCQkJCSgxIDw8IDIp Cj4gQEAgLTY2NTgsOSArNjY2MSw5IEBAIGVudW0gcHVuaXRfcG93ZXJfd2VsbCB7Cj4gICAjZGVm aW5lICBMQU5FX0NPTkZJR1VSQVRJT05fRFVBTF9MSU5LX0IJCQkoMiA8PCAwKQo+ICAgCj4gICAj ZGVmaW5lIF9NSVBJQV9URUFSSU5HX0NUUkwJCQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjExOTQp Cj4gLSNkZWZpbmUgX01JUElCX1RFQVJJTkdfQ1RSTAkJCShWTFZfRElTUExBWV9CQVNFICsgMHg2 MTcwNCkKPiAtI2RlZmluZSBNSVBJX1RFQVJJTkdfQ1RSTCh0YykJCQlfVFJBTlNDT0RFUih0Yywg XAo+IC0JCQkJX01JUElBX1RFQVJJTkdfQ1RSTCwgX01JUElCX1RFQVJJTkdfQ1RSTCkKPiArI2Rl ZmluZSBfTUlQSUNfVEVBUklOR19DVFJMCQkJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDYxNzA0KQo+ ICsjZGVmaW5lIE1JUElfVEVBUklOR19DVFJMKHBvcnQpCQkJX01JUElfUE9SVChwb3J0LCBcCj4g KwkJCQlfTUlQSUFfVEVBUklOR19DVFJMLCBfTUlQSUNfVEVBUklOR19DVFJMKQo+ICAgI2RlZmlu ZSAgVEVBUklOR19FRkZFQ1RfREVMQVlfU0hJRlQJCQkwCj4gICAjZGVmaW5lICBURUFSSU5HX0VG RkVDVF9ERUxBWV9NQVNLCQkJKDB4ZmZmZiA8PCAwKQo+ICAgCj4gQEAgLTY2NzAsOSArNjY3Myw5 IEBAIGVudW0gcHVuaXRfcG93ZXJfd2VsbCB7Cj4gICAvKiBNSVBJIERTSSBDb250cm9sbGVyIGFu ZCBELVBIWSByZWdpc3RlcnMgKi8KPiAgIAo+ICAgI2RlZmluZSBfTUlQSUFfREVWSUNFX1JFQURZ CQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiMDAwKQo+IC0jZGVmaW5lIF9NSVBJQl9E RVZJQ0VfUkVBRFkJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI4MDApCj4gLSNkZWZp bmUgTUlQSV9ERVZJQ0VfUkVBRFkodGMpCQlfVFJBTlNDT0RFUih0YywgX01JUElBX0RFVklDRV9S RUFEWSwgXAo+IC0JCQkJCQlfTUlQSUJfREVWSUNFX1JFQURZKQo+ICsjZGVmaW5lIF9NSVBJQ19E RVZJQ0VfUkVBRFkJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI4MDApCj4gKyNkZWZp bmUgTUlQSV9ERVZJQ0VfUkVBRFkocG9ydCkJCV9NSVBJX1BPUlQocG9ydCwgX01JUElBX0RFVklD RV9SRUFEWSwgXAo+ICsJCQkJCQlfTUlQSUNfREVWSUNFX1JFQURZKQo+ICAgI2RlZmluZSAgQlVT X1BPU1NFU1NJT04JCQkJCSgxIDw8IDMpIC8qIHNldCB0byBnaXZlIGJ1cyB0byByZWNlaXZlciAq Lwo+ICAgI2RlZmluZSAgVUxQU19TVEFURV9NQVNLCQkJCSgzIDw8IDEpCj4gICAjZGVmaW5lICBV TFBTX1NUQVRFX0VOVEVSCQkJCSgyIDw8IDEpCj4gQEAgLTY2ODEsMTMgKzY2ODQsMTMgQEAgZW51 bSBwdW5pdF9wb3dlcl93ZWxsIHsKPiAgICNkZWZpbmUgIERFVklDRV9SRUFEWQkJCQkJKDEgPDwg MCkKPiAgIAo+ICAgI2RlZmluZSBfTUlQSUFfSU5UUl9TVEFUCQkoZGV2X3ByaXYtPm1pcGlfbW1p b19iYXNlICsgMHhiMDA0KQo+IC0jZGVmaW5lIF9NSVBJQl9JTlRSX1NUQVQJCShkZXZfcHJpdi0+ bWlwaV9tbWlvX2Jhc2UgKyAweGI4MDQpCj4gLSNkZWZpbmUgTUlQSV9JTlRSX1NUQVQodGMpCQlf VFJBTlNDT0RFUih0YywgX01JUElBX0lOVFJfU1RBVCwgXAo+IC0JCQkJCV9NSVBJQl9JTlRSX1NU QVQpCj4gKyNkZWZpbmUgX01JUElDX0lOVFJfU1RBVAkJKGRldl9wcml2LT5taXBpX21taW9fYmFz ZSArIDB4YjgwNCkKPiArI2RlZmluZSBNSVBJX0lOVFJfU1RBVChwb3J0KQkJX01JUElfUE9SVChw b3J0LCBfTUlQSUFfSU5UUl9TVEFULCBcCj4gKwkJCQkJX01JUElDX0lOVFJfU1RBVCkKPiAgICNk ZWZpbmUgX01JUElBX0lOVFJfRU4JCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiMDA4 KQo+IC0jZGVmaW5lIF9NSVBJQl9JTlRSX0VOCQkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSAr IDB4YjgwOCkKPiAtI2RlZmluZSBNSVBJX0lOVFJfRU4odGMpCQlfVFJBTlNDT0RFUih0YywgX01J UElBX0lOVFJfRU4sIFwKPiAtCQkJCQlfTUlQSUJfSU5UUl9FTikKPiArI2RlZmluZSBfTUlQSUNf SU5UUl9FTgkJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI4MDgpCj4gKyNkZWZpbmUg TUlQSV9JTlRSX0VOKHBvcnQpCQlfTUlQSV9QT1JUKHBvcnQsIF9NSVBJQV9JTlRSX0VOLCBcCj4g KwkJCQkJX01JUElDX0lOVFJfRU4pCj4gICAjZGVmaW5lICBURUFSSU5HX0VGRkVDVAkJCQkJKDEg PDwgMzEpCj4gICAjZGVmaW5lICBTUExfUEtUX1NFTlRfSU5URVJSVVBUCQkJCSgxIDw8IDMwKQo+ ICAgI2RlZmluZSAgR0VOX1JFQURfREFUQV9BVkFJTAkJCQkoMSA8PCAyOSkKPiBAQCAtNjcyMiw5 ICs2NzI1LDkgQEAgZW51bSBwdW5pdF9wb3dlcl93ZWxsIHsKPiAgICNkZWZpbmUgIFJYU09UX0VS Uk9SCQkJCQkoMSA8PCAwKQo+ICAgCj4gICAjZGVmaW5lIF9NSVBJQV9EU0lfRlVOQ19QUkcJCShk ZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGIwMGMpCj4gLSNkZWZpbmUgX01JUElCX0RTSV9G VU5DX1BSRwkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4YjgwYykKPiAtI2RlZmluZSBN SVBJX0RTSV9GVU5DX1BSRyh0YykJCV9UUkFOU0NPREVSKHRjLCBfTUlQSUFfRFNJX0ZVTkNfUFJH LCBcCj4gLQkJCQkJCV9NSVBJQl9EU0lfRlVOQ19QUkcpCj4gKyNkZWZpbmUgX01JUElDX0RTSV9G VU5DX1BSRwkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4YjgwYykKPiArI2RlZmluZSBN SVBJX0RTSV9GVU5DX1BSRyhwb3J0KQkJX01JUElfUE9SVChwb3J0LCBfTUlQSUFfRFNJX0ZVTkNf UFJHLCBcCj4gKwkJCQkJCV9NSVBJQ19EU0lfRlVOQ19QUkcpCj4gICAjZGVmaW5lICBDTURfTU9E RV9EQVRBX1dJRFRIX01BU0sJCQkoNyA8PCAxMykKPiAgICNkZWZpbmUgIENNRF9NT0RFX05PVF9T VVBQT1JURUQJCQkJKDAgPDwgMTMpCj4gICAjZGVmaW5lICBDTURfTU9ERV9EQVRBX1dJRFRIXzE2 X0JJVAkJCSgxIDw8IDEzKQo+IEBAIC02NzQ2LDkzICs2NzQ5LDkzIEBAIGVudW0gcHVuaXRfcG93 ZXJfd2VsbCB7Cj4gICAjZGVmaW5lICBEQVRBX0xBTkVTX1BSR19SRUdfTUFTSwkJCSg3IDw8IDAp Cj4gICAKPiAgICNkZWZpbmUgX01JUElBX0hTX1RYX1RJTUVPVVQJCShkZXZfcHJpdi0+bWlwaV9t bWlvX2Jhc2UgKyAweGIwMTApCj4gLSNkZWZpbmUgX01JUElCX0hTX1RYX1RJTUVPVVQJCShkZXZf cHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI4MTApCj4gLSNkZWZpbmUgTUlQSV9IU19UWF9USU1F T1VUKHRjKQlfVFJBTlNDT0RFUih0YywgX01JUElBX0hTX1RYX1RJTUVPVVQsIFwKPiAtCQkJCQlf TUlQSUJfSFNfVFhfVElNRU9VVCkKPiArI2RlZmluZSBfTUlQSUNfSFNfVFhfVElNRU9VVAkJKGRl dl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4YjgxMCkKPiArI2RlZmluZSBNSVBJX0hTX1RYX1RJ TUVPVVQocG9ydCkJX01JUElfUE9SVChwb3J0LCBfTUlQSUFfSFNfVFhfVElNRU9VVCwgXAo+ICsJ CQkJCV9NSVBJQ19IU19UWF9USU1FT1VUKQo+ICAgI2RlZmluZSAgSElHSF9TUEVFRF9UWF9USU1F T1VUX0NPVU5URVJfTUFTSwkJMHhmZmZmZmYKPiAgIAo+ICAgI2RlZmluZSBfTUlQSUFfTFBfUlhf VElNRU9VVAkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4YjAxNCkKPiAtI2RlZmluZSBf TUlQSUJfTFBfUlhfVElNRU9VVAkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4YjgxNCkK PiAtI2RlZmluZSBNSVBJX0xQX1JYX1RJTUVPVVQodGMpCV9UUkFOU0NPREVSKHRjLCBfTUlQSUFf TFBfUlhfVElNRU9VVCwgXAo+IC0JCQkJCV9NSVBJQl9MUF9SWF9USU1FT1VUKQo+ICsjZGVmaW5l IF9NSVBJQ19MUF9SWF9USU1FT1VUCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODE0 KQo+ICsjZGVmaW5lIE1JUElfTFBfUlhfVElNRU9VVChwb3J0KQlfTUlQSV9QT1JUKHBvcnQsIF9N SVBJQV9MUF9SWF9USU1FT1VULCBcCj4gKwkJCQkJX01JUElDX0xQX1JYX1RJTUVPVVQpCj4gICAj ZGVmaW5lICBMT1dfUE9XRVJfUlhfVElNRU9VVF9DT1VOVEVSX01BU0sJCTB4ZmZmZmZmCj4gICAK PiAgICNkZWZpbmUgX01JUElBX1RVUk5fQVJPVU5EX1RJTUVPVVQJKGRldl9wcml2LT5taXBpX21t aW9fYmFzZSArIDB4YjAxOCkKPiAtI2RlZmluZSBfTUlQSUJfVFVSTl9BUk9VTkRfVElNRU9VVAko ZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODE4KQo+IC0jZGVmaW5lIE1JUElfVFVSTl9B Uk9VTkRfVElNRU9VVCh0YykJX1RSQU5TQ09ERVIodGMsIFwKPiAtCQkJX01JUElBX1RVUk5fQVJP VU5EX1RJTUVPVVQsIF9NSVBJQl9UVVJOX0FST1VORF9USU1FT1VUKQo+ICsjZGVmaW5lIF9NSVBJ Q19UVVJOX0FST1VORF9USU1FT1VUCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI4MTgp Cj4gKyNkZWZpbmUgTUlQSV9UVVJOX0FST1VORF9USU1FT1VUKHBvcnQpCV9NSVBJX1BPUlQocG9y dCwgXAo+ICsJCQlfTUlQSUFfVFVSTl9BUk9VTkRfVElNRU9VVCwgX01JUElDX1RVUk5fQVJPVU5E X1RJTUVPVVQpCj4gICAjZGVmaW5lICBUVVJOX0FST1VORF9USU1FT1VUX01BU0sJCQkweDNmCj4g ICAKPiAgICNkZWZpbmUgX01JUElBX0RFVklDRV9SRVNFVF9USU1FUgkoZGV2X3ByaXYtPm1pcGlf bW1pb19iYXNlICsgMHhiMDFjKQo+IC0jZGVmaW5lIF9NSVBJQl9ERVZJQ0VfUkVTRVRfVElNRVIJ KGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4YjgxYykKPiAtI2RlZmluZSBNSVBJX0RFVklD RV9SRVNFVF9USU1FUih0YykJX1RSQU5TQ09ERVIodGMsIFwKPiAtCQkJX01JUElBX0RFVklDRV9S RVNFVF9USU1FUiwgX01JUElCX0RFVklDRV9SRVNFVF9USU1FUikKPiArI2RlZmluZSBfTUlQSUNf REVWSUNFX1JFU0VUX1RJTUVSCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI4MWMpCj4g KyNkZWZpbmUgTUlQSV9ERVZJQ0VfUkVTRVRfVElNRVIocG9ydCkJX01JUElfUE9SVChwb3J0LCBc Cj4gKwkJCV9NSVBJQV9ERVZJQ0VfUkVTRVRfVElNRVIsIF9NSVBJQ19ERVZJQ0VfUkVTRVRfVElN RVIpCj4gICAjZGVmaW5lICBERVZJQ0VfUkVTRVRfVElNRVJfTUFTSwkJCTB4ZmZmZgo+ICAgCj4g ICAjZGVmaW5lIF9NSVBJQV9EUElfUkVTT0xVVElPTgkJKGRldl9wcml2LT5taXBpX21taW9fYmFz ZSArIDB4YjAyMCkKPiAtI2RlZmluZSBfTUlQSUJfRFBJX1JFU09MVVRJT04JCShkZXZfcHJpdi0+ bWlwaV9tbWlvX2Jhc2UgKyAweGI4MjApCj4gLSNkZWZpbmUgTUlQSV9EUElfUkVTT0xVVElPTih0 YykJX1RSQU5TQ09ERVIodGMsIF9NSVBJQV9EUElfUkVTT0xVVElPTiwgXAo+IC0JCQkJCV9NSVBJ Ql9EUElfUkVTT0xVVElPTikKPiArI2RlZmluZSBfTUlQSUNfRFBJX1JFU09MVVRJT04JCShkZXZf cHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI4MjApCj4gKyNkZWZpbmUgTUlQSV9EUElfUkVTT0xV VElPTihwb3J0KQlfTUlQSV9QT1JUKHBvcnQsIF9NSVBJQV9EUElfUkVTT0xVVElPTiwgXAo+ICsJ CQkJCV9NSVBJQ19EUElfUkVTT0xVVElPTikKPiAgICNkZWZpbmUgIFZFUlRJQ0FMX0FERFJFU1Nf U0hJRlQJCQkJMTYKPiAgICNkZWZpbmUgIFZFUlRJQ0FMX0FERFJFU1NfTUFTSwkJCQkoMHhmZmZm IDw8IDE2KQo+ICAgI2RlZmluZSAgSE9SSVpPTlRBTF9BRERSRVNTX1NISUZUCQkJMAo+ICAgI2Rl ZmluZSAgSE9SSVpPTlRBTF9BRERSRVNTX01BU0sJCQkweGZmZmYKPiAgIAo+ICAgI2RlZmluZSBf TUlQSUFfREJJX0ZJRk9fVEhST1RUTEUJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4YjAy NCkKPiAtI2RlZmluZSBfTUlQSUJfREJJX0ZJRk9fVEhST1RUTEUJKGRldl9wcml2LT5taXBpX21t aW9fYmFzZSArIDB4YjgyNCkKPiAtI2RlZmluZSBNSVBJX0RCSV9GSUZPX1RIUk9UVExFKHRjKQlf VFJBTlNDT0RFUih0YywgXAo+IC0JCQlfTUlQSUFfREJJX0ZJRk9fVEhST1RUTEUsIF9NSVBJQl9E QklfRklGT19USFJPVFRMRSkKPiArI2RlZmluZSBfTUlQSUNfREJJX0ZJRk9fVEhST1RUTEUJKGRl dl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4YjgyNCkKPiArI2RlZmluZSBNSVBJX0RCSV9GSUZP X1RIUk9UVExFKHBvcnQpCV9NSVBJX1BPUlQocG9ydCwgXAo+ICsJCQlfTUlQSUFfREJJX0ZJRk9f VEhST1RUTEUsIF9NSVBJQ19EQklfRklGT19USFJPVFRMRSkKPiAgICNkZWZpbmUgIERCSV9GSUZP X0VNUFRZX0hBTEYJCQkJKDAgPDwgMCkKPiAgICNkZWZpbmUgIERCSV9GSUZPX0VNUFRZX1FVQVJU RVIJCQkJKDEgPDwgMCkKPiAgICNkZWZpbmUgIERCSV9GSUZPX0VNUFRZXzdfTE9DQVRJT05TCQkJ KDIgPDwgMCkKPiAgIAo+ICAgLyogcmVncyBiZWxvdyBhcmUgYml0cyAxNTowICovCj4gICAjZGVm aW5lIF9NSVBJQV9IU1lOQ19QQURESU5HX0NPVU5UCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2Ug KyAweGIwMjgpCj4gLSNkZWZpbmUgX01JUElCX0hTWU5DX1BBRERJTkdfQ09VTlQJKGRldl9wcml2 LT5taXBpX21taW9fYmFzZSArIDB4YjgyOCkKPiAtI2RlZmluZSBNSVBJX0hTWU5DX1BBRERJTkdf Q09VTlQodGMpCV9UUkFOU0NPREVSKHRjLCBcCj4gLQkJCV9NSVBJQV9IU1lOQ19QQURESU5HX0NP VU5ULCBfTUlQSUJfSFNZTkNfUEFERElOR19DT1VOVCkKPiArI2RlZmluZSBfTUlQSUNfSFNZTkNf UEFERElOR19DT1VOVAkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODI4KQo+ICsjZGVm aW5lIE1JUElfSFNZTkNfUEFERElOR19DT1VOVChwb3J0KQlfTUlQSV9QT1JUKHBvcnQsIFwKPiAr CQkJX01JUElBX0hTWU5DX1BBRERJTkdfQ09VTlQsIF9NSVBJQ19IU1lOQ19QQURESU5HX0NPVU5U KQo+ICAgCj4gICAjZGVmaW5lIF9NSVBJQV9IQlBfQ09VTlQJCShkZXZfcHJpdi0+bWlwaV9tbWlv X2Jhc2UgKyAweGIwMmMpCj4gLSNkZWZpbmUgX01JUElCX0hCUF9DT1VOVAkJKGRldl9wcml2LT5t aXBpX21taW9fYmFzZSArIDB4YjgyYykKPiAtI2RlZmluZSBNSVBJX0hCUF9DT1VOVCh0YykJCV9U UkFOU0NPREVSKHRjLCBfTUlQSUFfSEJQX0NPVU5ULCBcCj4gLQkJCQkJX01JUElCX0hCUF9DT1VO VCkKPiArI2RlZmluZSBfTUlQSUNfSEJQX0NPVU5UCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNl ICsgMHhiODJjKQo+ICsjZGVmaW5lIE1JUElfSEJQX0NPVU5UKHBvcnQpCQlfTUlQSV9QT1JUKHBv cnQsIF9NSVBJQV9IQlBfQ09VTlQsIFwKPiArCQkJCQlfTUlQSUNfSEJQX0NPVU5UKQo+ICAgCj4g ICAjZGVmaW5lIF9NSVBJQV9IRlBfQ09VTlQJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAw eGIwMzApCj4gLSNkZWZpbmUgX01JUElCX0hGUF9DT1VOVAkJKGRldl9wcml2LT5taXBpX21taW9f YmFzZSArIDB4YjgzMCkKPiAtI2RlZmluZSBNSVBJX0hGUF9DT1VOVCh0YykJCV9UUkFOU0NPREVS KHRjLCBfTUlQSUFfSEZQX0NPVU5ULCBcCj4gLQkJCQkJX01JUElCX0hGUF9DT1VOVCkKPiArI2Rl ZmluZSBfTUlQSUNfSEZQX0NPVU5UCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODMw KQo+ICsjZGVmaW5lIE1JUElfSEZQX0NPVU5UKHBvcnQpCQlfTUlQSV9QT1JUKHBvcnQsIF9NSVBJ QV9IRlBfQ09VTlQsIFwKPiArCQkJCQlfTUlQSUNfSEZQX0NPVU5UKQo+ICAgCj4gICAjZGVmaW5l IF9NSVBJQV9IQUNUSVZFX0FSRUFfQ09VTlQJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4 YjAzNCkKPiAtI2RlZmluZSBfTUlQSUJfSEFDVElWRV9BUkVBX0NPVU5UCShkZXZfcHJpdi0+bWlw aV9tbWlvX2Jhc2UgKyAweGI4MzQpCj4gLSNkZWZpbmUgTUlQSV9IQUNUSVZFX0FSRUFfQ09VTlQo dGMpCV9UUkFOU0NPREVSKHRjLCBcCj4gLQkJCV9NSVBJQV9IQUNUSVZFX0FSRUFfQ09VTlQsIF9N SVBJQl9IQUNUSVZFX0FSRUFfQ09VTlQpCj4gKyNkZWZpbmUgX01JUElDX0hBQ1RJVkVfQVJFQV9D T1VOVAkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODM0KQo+ICsjZGVmaW5lIE1JUElf SEFDVElWRV9BUkVBX0NPVU5UKHBvcnQpCV9NSVBJX1BPUlQocG9ydCwgXAo+ICsJCQlfTUlQSUFf SEFDVElWRV9BUkVBX0NPVU5ULCBfTUlQSUNfSEFDVElWRV9BUkVBX0NPVU5UKQo+ICAgCj4gICAj ZGVmaW5lIF9NSVBJQV9WU1lOQ19QQURESU5HX0NPVU5UCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jh c2UgKyAweGIwMzgpCj4gLSNkZWZpbmUgX01JUElCX1ZTWU5DX1BBRERJTkdfQ09VTlQJKGRldl9w cml2LT5taXBpX21taW9fYmFzZSArIDB4YjgzOCkKPiAtI2RlZmluZSBNSVBJX1ZTWU5DX1BBRERJ TkdfQ09VTlQodGMpCV9UUkFOU0NPREVSKHRjLCBcCj4gLQkJCV9NSVBJQV9WU1lOQ19QQURESU5H X0NPVU5ULCBfTUlQSUJfVlNZTkNfUEFERElOR19DT1VOVCkKPiArI2RlZmluZSBfTUlQSUNfVlNZ TkNfUEFERElOR19DT1VOVAkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODM4KQo+ICsj ZGVmaW5lIE1JUElfVlNZTkNfUEFERElOR19DT1VOVChwb3J0KQlfTUlQSV9QT1JUKHBvcnQsIFwK PiArCQkJX01JUElBX1ZTWU5DX1BBRERJTkdfQ09VTlQsIF9NSVBJQ19WU1lOQ19QQURESU5HX0NP VU5UKQo+ICAgCj4gICAjZGVmaW5lIF9NSVBJQV9WQlBfQ09VTlQJCShkZXZfcHJpdi0+bWlwaV9t bWlvX2Jhc2UgKyAweGIwM2MpCj4gLSNkZWZpbmUgX01JUElCX1ZCUF9DT1VOVAkJKGRldl9wcml2 LT5taXBpX21taW9fYmFzZSArIDB4YjgzYykKPiAtI2RlZmluZSBNSVBJX1ZCUF9DT1VOVCh0YykJ CV9UUkFOU0NPREVSKHRjLCBfTUlQSUFfVkJQX0NPVU5ULCBcCj4gLQkJCQkJX01JUElCX1ZCUF9D T1VOVCkKPiArI2RlZmluZSBfTUlQSUNfVkJQX0NPVU5UCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19i YXNlICsgMHhiODNjKQo+ICsjZGVmaW5lIE1JUElfVkJQX0NPVU5UKHBvcnQpCQlfTUlQSV9QT1JU KHBvcnQsIF9NSVBJQV9WQlBfQ09VTlQsIFwKPiArCQkJCQlfTUlQSUNfVkJQX0NPVU5UKQo+ICAg Cj4gICAjZGVmaW5lIF9NSVBJQV9WRlBfQ09VTlQJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2Ug KyAweGIwNDApCj4gLSNkZWZpbmUgX01JUElCX1ZGUF9DT1VOVAkJKGRldl9wcml2LT5taXBpX21t aW9fYmFzZSArIDB4Yjg0MCkKPiAtI2RlZmluZSBNSVBJX1ZGUF9DT1VOVCh0YykJCV9UUkFOU0NP REVSKHRjLCBfTUlQSUFfVkZQX0NPVU5ULCBcCj4gLQkJCQkJX01JUElCX1ZGUF9DT1VOVCkKPiAr I2RlZmluZSBfTUlQSUNfVkZQX0NPVU5UCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhi ODQwKQo+ICsjZGVmaW5lIE1JUElfVkZQX0NPVU5UKHBvcnQpCQlfTUlQSV9QT1JUKHBvcnQsIF9N SVBJQV9WRlBfQ09VTlQsIFwKPiArCQkJCQlfTUlQSUNfVkZQX0NPVU5UKQo+ICAgCj4gICAjZGVm aW5lIF9NSVBJQV9ISUdIX0xPV19TV0lUQ0hfQ09VTlQJKGRldl9wcml2LT5taXBpX21taW9fYmFz ZSArIDB4YjA0NCkKPiAtI2RlZmluZSBfTUlQSUJfSElHSF9MT1dfU1dJVENIX0NPVU5UCShkZXZf cHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI4NDQpCj4gLSNkZWZpbmUgTUlQSV9ISUdIX0xPV19T V0lUQ0hfQ09VTlQodGMpCV9UUkFOU0NPREVSKHRjLAlcCj4gLQkJX01JUElBX0hJR0hfTE9XX1NX SVRDSF9DT1VOVCwgX01JUElCX0hJR0hfTE9XX1NXSVRDSF9DT1VOVCkKPiArI2RlZmluZSBfTUlQ SUNfSElHSF9MT1dfU1dJVENIX0NPVU5UCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI4 NDQpCj4gKyNkZWZpbmUgTUlQSV9ISUdIX0xPV19TV0lUQ0hfQ09VTlQocG9ydCkJX01JUElfUE9S VChwb3J0LAlcCj4gKwkJX01JUElBX0hJR0hfTE9XX1NXSVRDSF9DT1VOVCwgX01JUElDX0hJR0hf TE9XX1NXSVRDSF9DT1VOVCkKPiAgIAo+ICAgLyogcmVncyBhYm92ZSBhcmUgYml0cyAxNTowICov Cj4gICAKPiAgICNkZWZpbmUgX01JUElBX0RQSV9DT05UUk9MCQkoZGV2X3ByaXYtPm1pcGlfbW1p b19iYXNlICsgMHhiMDQ4KQo+IC0jZGVmaW5lIF9NSVBJQl9EUElfQ09OVFJPTAkJKGRldl9wcml2 LT5taXBpX21taW9fYmFzZSArIDB4Yjg0OCkKPiAtI2RlZmluZSBNSVBJX0RQSV9DT05UUk9MKHRj KQkJX1RSQU5TQ09ERVIodGMsIF9NSVBJQV9EUElfQ09OVFJPTCwgXAo+IC0JCQkJCV9NSVBJQl9E UElfQ09OVFJPTCkKPiArI2RlZmluZSBfTUlQSUNfRFBJX0NPTlRST0wJCShkZXZfcHJpdi0+bWlw aV9tbWlvX2Jhc2UgKyAweGI4NDgpCj4gKyNkZWZpbmUgTUlQSV9EUElfQ09OVFJPTChwb3J0KQkJ X01JUElfUE9SVChwb3J0LCBfTUlQSUFfRFBJX0NPTlRST0wsIFwKPiArCQkJCQlfTUlQSUNfRFBJ X0NPTlRST0wpCj4gICAjZGVmaW5lICBEUElfTFBfTU9ERQkJCQkJKDEgPDwgNikKPiAgICNkZWZp bmUgIEJBQ0tMSUdIVF9PRkYJCQkJCSgxIDw8IDUpCj4gICAjZGVmaW5lICBCQUNLTElHSFRfT04J CQkJCSgxIDw8IDQpCj4gQEAgLTY4NDIsMzAgKzY4NDUsMzAgQEAgZW51bSBwdW5pdF9wb3dlcl93 ZWxsIHsKPiAgICNkZWZpbmUgIFNIVVRET1dOCQkJCQkoMSA8PCAwKQo+ICAgCj4gICAjZGVmaW5l IF9NSVBJQV9EUElfREFUQQkJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGIwNGMpCj4g LSNkZWZpbmUgX01JUElCX0RQSV9EQVRBCQkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4 Yjg0YykKPiAtI2RlZmluZSBNSVBJX0RQSV9EQVRBKHRjKQkJX1RSQU5TQ09ERVIodGMsIF9NSVBJ QV9EUElfREFUQSwgXAo+IC0JCQkJCV9NSVBJQl9EUElfREFUQSkKPiArI2RlZmluZSBfTUlQSUNf RFBJX0RBVEEJCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODRjKQo+ICsjZGVmaW5l IE1JUElfRFBJX0RBVEEocG9ydCkJCV9NSVBJX1BPUlQocG9ydCwgX01JUElBX0RQSV9EQVRBLCBc Cj4gKwkJCQkJX01JUElDX0RQSV9EQVRBKQo+ICAgI2RlZmluZSAgQ09NTUFORF9CWVRFX1NISUZU CQkJCTAKPiAgICNkZWZpbmUgIENPTU1BTkRfQllURV9NQVNLCQkJCSgweDNmIDw8IDApCj4gICAK PiAgICNkZWZpbmUgX01JUElBX0lOSVRfQ09VTlQJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2Ug KyAweGIwNTApCj4gLSNkZWZpbmUgX01JUElCX0lOSVRfQ09VTlQJCShkZXZfcHJpdi0+bWlwaV9t bWlvX2Jhc2UgKyAweGI4NTApCj4gLSNkZWZpbmUgTUlQSV9JTklUX0NPVU5UKHRjKQkJX1RSQU5T Q09ERVIodGMsIF9NSVBJQV9JTklUX0NPVU5ULCBcCj4gLQkJCQkJX01JUElCX0lOSVRfQ09VTlQp Cj4gKyNkZWZpbmUgX01JUElDX0lOSVRfQ09VTlQJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2Ug KyAweGI4NTApCj4gKyNkZWZpbmUgTUlQSV9JTklUX0NPVU5UKHBvcnQpCQlfTUlQSV9QT1JUKHBv cnQsIF9NSVBJQV9JTklUX0NPVU5ULCBcCj4gKwkJCQkJX01JUElDX0lOSVRfQ09VTlQpCj4gICAj ZGVmaW5lICBNQVNURVJfSU5JVF9USU1FUl9TSElGVAkJCTAKPiAgICNkZWZpbmUgIE1BU1RFUl9J TklUX1RJTUVSX01BU0sJCQkJKDB4ZmZmZiA8PCAwKQo+ICAgCj4gICAjZGVmaW5lIF9NSVBJQV9N QVhfUkVUVVJOX1BLVF9TSVpFCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGIwNTQpCj4g LSNkZWZpbmUgX01JUElCX01BWF9SRVRVUk5fUEtUX1NJWkUJKGRldl9wcml2LT5taXBpX21taW9f YmFzZSArIDB4Yjg1NCkKPiAtI2RlZmluZSBNSVBJX01BWF9SRVRVUk5fUEtUX1NJWkUodGMpCV9U UkFOU0NPREVSKHRjLCBcCj4gLQkJCV9NSVBJQV9NQVhfUkVUVVJOX1BLVF9TSVpFLCBfTUlQSUJf TUFYX1JFVFVSTl9QS1RfU0laRSkKPiArI2RlZmluZSBfTUlQSUNfTUFYX1JFVFVSTl9QS1RfU0la RQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODU0KQo+ICsjZGVmaW5lIE1JUElfTUFY X1JFVFVSTl9QS1RfU0laRShwb3J0KQlfTUlQSV9QT1JUKHBvcnQsIFwKPiArCQkJX01JUElBX01B WF9SRVRVUk5fUEtUX1NJWkUsIF9NSVBJQ19NQVhfUkVUVVJOX1BLVF9TSVpFKQo+ICAgI2RlZmlu ZSAgTUFYX1JFVFVSTl9QS1RfU0laRV9TSElGVAkJCTAKPiAgICNkZWZpbmUgIE1BWF9SRVRVUk5f UEtUX1NJWkVfTUFTSwkJCSgweDNmZiA8PCAwKQo+ICAgCj4gICAjZGVmaW5lIF9NSVBJQV9WSURF T19NT0RFX0ZPUk1BVAkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiMDU4KQo+IC0jZGVm aW5lIF9NSVBJQl9WSURFT19NT0RFX0ZPUk1BVAkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsg MHhiODU4KQo+IC0jZGVmaW5lIE1JUElfVklERU9fTU9ERV9GT1JNQVQodGMpCV9UUkFOU0NPREVS KHRjLCBcCj4gLQkJCV9NSVBJQV9WSURFT19NT0RFX0ZPUk1BVCwgX01JUElCX1ZJREVPX01PREVf Rk9STUFUKQo+ICsjZGVmaW5lIF9NSVBJQ19WSURFT19NT0RFX0ZPUk1BVAkoZGV2X3ByaXYtPm1p cGlfbW1pb19iYXNlICsgMHhiODU4KQo+ICsjZGVmaW5lIE1JUElfVklERU9fTU9ERV9GT1JNQVQo cG9ydCkJX01JUElfUE9SVChwb3J0LCBcCj4gKwkJCV9NSVBJQV9WSURFT19NT0RFX0ZPUk1BVCwg X01JUElDX1ZJREVPX01PREVfRk9STUFUKQo+ICAgI2RlZmluZSAgUkFORE9NX0RQSV9ESVNQTEFZ X1JFU09MVVRJT04JCQkoMSA8PCA0KQo+ICAgI2RlZmluZSAgRElTQUJMRV9WSURFT19CVEEJCQkJ KDEgPDwgMykKPiAgICNkZWZpbmUgIElQX1RHX0NPTkZJRwkJCQkJKDEgPDwgMikKPiBAQCAtNjg3 NCw5ICs2ODc3LDkgQEAgZW51bSBwdW5pdF9wb3dlcl93ZWxsIHsKPiAgICNkZWZpbmUgIFZJREVP X01PREVfQlVSU1QJCQkJKDMgPDwgMCkKPiAgIAo+ICAgI2RlZmluZSBfTUlQSUFfRU9UX0RJU0FC TEUJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGIwNWMpCj4gLSNkZWZpbmUgX01JUElC X0VPVF9ESVNBQkxFCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODVjKQo+IC0jZGVm aW5lIE1JUElfRU9UX0RJU0FCTEUodGMpCQlfVFJBTlNDT0RFUih0YywgX01JUElBX0VPVF9ESVNB QkxFLCBcCj4gLQkJCQkJX01JUElCX0VPVF9ESVNBQkxFKQo+ICsjZGVmaW5lIF9NSVBJQ19FT1Rf RElTQUJMRQkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4Yjg1YykKPiArI2RlZmluZSBN SVBJX0VPVF9ESVNBQkxFKHBvcnQpCQlfTUlQSV9QT1JUKHBvcnQsIF9NSVBJQV9FT1RfRElTQUJM RSwgXAo+ICsJCQkJCV9NSVBJQ19FT1RfRElTQUJMRSkKPiAgICNkZWZpbmUgIExQX1JYX1RJTUVP VVRfRVJST1JfUkVDT1ZFUllfRElTQUJMRQkJKDEgPDwgNykKPiAgICNkZWZpbmUgIEhTX1JYX1RJ TUVPVVRfRVJST1JfUkVDT1ZFUllfRElTQUJMRQkJKDEgPDwgNikKPiAgICNkZWZpbmUgIExPV19D T05URU5USU9OX1JFQ09WRVJZX0RJU0FCTEUJCSgxIDw8IDUpCj4gQEAgLTY4ODcsMzIgKzY4OTAs MzIgQEAgZW51bSBwdW5pdF9wb3dlcl93ZWxsIHsKPiAgICNkZWZpbmUgIEVPVF9ESVNBQkxFCQkJ CQkoMSA8PCAwKQo+ICAgCj4gICAjZGVmaW5lIF9NSVBJQV9MUF9CWVRFQ0xLCQkoZGV2X3ByaXYt Pm1pcGlfbW1pb19iYXNlICsgMHhiMDYwKQo+IC0jZGVmaW5lIF9NSVBJQl9MUF9CWVRFQ0xLCQko ZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODYwKQo+IC0jZGVmaW5lIE1JUElfTFBfQllU RUNMSyh0YykJCV9UUkFOU0NPREVSKHRjLCBfTUlQSUFfTFBfQllURUNMSywgXAo+IC0JCQkJCV9N SVBJQl9MUF9CWVRFQ0xLKQo+ICsjZGVmaW5lIF9NSVBJQ19MUF9CWVRFQ0xLCQkoZGV2X3ByaXYt Pm1pcGlfbW1pb19iYXNlICsgMHhiODYwKQo+ICsjZGVmaW5lIE1JUElfTFBfQllURUNMSyhwb3J0 KQkJX01JUElfUE9SVChwb3J0LCBfTUlQSUFfTFBfQllURUNMSywgXAo+ICsJCQkJCV9NSVBJQ19M UF9CWVRFQ0xLKQo+ICAgI2RlZmluZSAgTFBfQllURUNMS19TSElGVAkJCQkwCj4gICAjZGVmaW5l ICBMUF9CWVRFQ0xLX01BU0sJCQkJKDB4ZmZmZiA8PCAwKQo+ICAgCj4gICAvKiBiaXRzIDMxOjAg Ki8KPiAgICNkZWZpbmUgX01JUElBX0xQX0dFTl9EQVRBCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19i YXNlICsgMHhiMDY0KQo+IC0jZGVmaW5lIF9NSVBJQl9MUF9HRU5fREFUQQkJKGRldl9wcml2LT5t aXBpX21taW9fYmFzZSArIDB4Yjg2NCkKPiAtI2RlZmluZSBNSVBJX0xQX0dFTl9EQVRBKHRjKQkJ X1RSQU5TQ09ERVIodGMsIF9NSVBJQV9MUF9HRU5fREFUQSwgXAo+IC0JCQkJCV9NSVBJQl9MUF9H RU5fREFUQSkKPiArI2RlZmluZSBfTUlQSUNfTFBfR0VOX0RBVEEJCShkZXZfcHJpdi0+bWlwaV9t bWlvX2Jhc2UgKyAweGI4NjQpCj4gKyNkZWZpbmUgTUlQSV9MUF9HRU5fREFUQShwb3J0KQkJX01J UElfUE9SVChwb3J0LCBfTUlQSUFfTFBfR0VOX0RBVEEsIFwKPiArCQkJCQlfTUlQSUNfTFBfR0VO X0RBVEEpCj4gICAKPiAgIC8qIGJpdHMgMzE6MCAqLwo+ICAgI2RlZmluZSBfTUlQSUFfSFNfR0VO X0RBVEEJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGIwNjgpCj4gLSNkZWZpbmUgX01J UElCX0hTX0dFTl9EQVRBCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODY4KQo+IC0j ZGVmaW5lIE1JUElfSFNfR0VOX0RBVEEodGMpCQlfVFJBTlNDT0RFUih0YywgX01JUElBX0hTX0dF Tl9EQVRBLCBcCj4gLQkJCQkJX01JUElCX0hTX0dFTl9EQVRBKQo+ICsjZGVmaW5lIF9NSVBJQ19I U19HRU5fREFUQQkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4Yjg2OCkKPiArI2RlZmlu ZSBNSVBJX0hTX0dFTl9EQVRBKHBvcnQpCQlfTUlQSV9QT1JUKHBvcnQsIF9NSVBJQV9IU19HRU5f REFUQSwgXAo+ICsJCQkJCV9NSVBJQ19IU19HRU5fREFUQSkKPiAgIAo+ICAgI2RlZmluZSBfTUlQ SUFfTFBfR0VOX0NUUkwJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGIwNmMpCj4gLSNk ZWZpbmUgX01JUElCX0xQX0dFTl9DVFJMCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhi ODZjKQo+IC0jZGVmaW5lIE1JUElfTFBfR0VOX0NUUkwodGMpCQlfVFJBTlNDT0RFUih0YywgX01J UElBX0xQX0dFTl9DVFJMLCBcCj4gLQkJCQkJX01JUElCX0xQX0dFTl9DVFJMKQo+ICsjZGVmaW5l IF9NSVBJQ19MUF9HRU5fQ1RSTAkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4Yjg2YykK PiArI2RlZmluZSBNSVBJX0xQX0dFTl9DVFJMKHBvcnQpCQlfTUlQSV9QT1JUKHBvcnQsIF9NSVBJ QV9MUF9HRU5fQ1RSTCwgXAo+ICsJCQkJCV9NSVBJQ19MUF9HRU5fQ1RSTCkKPiAgICNkZWZpbmUg X01JUElBX0hTX0dFTl9DVFJMCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiMDcwKQo+ IC0jZGVmaW5lIF9NSVBJQl9IU19HRU5fQ1RSTAkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSAr IDB4Yjg3MCkKPiAtI2RlZmluZSBNSVBJX0hTX0dFTl9DVFJMKHRjKQkJX1RSQU5TQ09ERVIodGMs IF9NSVBJQV9IU19HRU5fQ1RSTCwgXAo+IC0JCQkJCV9NSVBJQl9IU19HRU5fQ1RSTCkKPiArI2Rl ZmluZSBfTUlQSUNfSFNfR0VOX0NUUkwJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI4 NzApCj4gKyNkZWZpbmUgTUlQSV9IU19HRU5fQ1RSTChwb3J0KQkJX01JUElfUE9SVChwb3J0LCBf TUlQSUFfSFNfR0VOX0NUUkwsIFwKPiArCQkJCQlfTUlQSUNfSFNfR0VOX0NUUkwpCj4gICAjZGVm aW5lICBMT05HX1BBQ0tFVF9XT1JEX0NPVU5UX1NISUZUCQkJOAo+ICAgI2RlZmluZSAgTE9OR19Q QUNLRVRfV09SRF9DT1VOVF9NQVNLCQkJKDB4ZmZmZiA8PCA4KQo+ICAgI2RlZmluZSAgU0hPUlRf UEFDS0VUX1BBUkFNX1NISUZUCQkJOAo+IEBAIC02OTI0LDkgKzY5MjcsOSBAQCBlbnVtIHB1bml0 X3Bvd2VyX3dlbGwgewo+ICAgLyogZGF0YSB0eXBlIHZhbHVlcywgc2VlIGluY2x1ZGUvdmlkZW8v bWlwaV9kaXNwbGF5LmggKi8KPiAgIAo+ICAgI2RlZmluZSBfTUlQSUFfR0VOX0ZJRk9fU1RBVAkJ KGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4YjA3NCkKPiAtI2RlZmluZSBfTUlQSUJfR0VO X0ZJRk9fU1RBVAkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4Yjg3NCkKPiAtI2RlZmlu ZSBNSVBJX0dFTl9GSUZPX1NUQVQodGMpCV9UUkFOU0NPREVSKHRjLCBfTUlQSUFfR0VOX0ZJRk9f U1RBVCwgXAo+IC0JCQkJCV9NSVBJQl9HRU5fRklGT19TVEFUKQo+ICsjZGVmaW5lIF9NSVBJQ19H RU5fRklGT19TVEFUCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODc0KQo+ICsjZGVm aW5lIE1JUElfR0VOX0ZJRk9fU1RBVChwb3J0KQlfTUlQSV9QT1JUKHBvcnQsIF9NSVBJQV9HRU5f RklGT19TVEFULCBcCj4gKwkJCQkJX01JUElDX0dFTl9GSUZPX1NUQVQpCj4gICAjZGVmaW5lICBE UElfRklGT19FTVBUWQkJCQkJKDEgPDwgMjgpCj4gICAjZGVmaW5lICBEQklfRklGT19FTVBUWQkJ CQkJKDEgPDwgMjcpCj4gICAjZGVmaW5lICBMUF9DVFJMX0ZJRk9fRU1QVFkJCQkJKDEgPDwgMjYp Cj4gQEAgLTY5NDMsMTcgKzY5NDYsMTcgQEAgZW51bSBwdW5pdF9wb3dlcl93ZWxsIHsKPiAgICNk ZWZpbmUgIEhTX0RBVEFfRklGT19GVUxMCQkJCSgxIDw8IDApCj4gICAKPiAgICNkZWZpbmUgX01J UElBX0hTX0xTX0RCSV9FTkFCTEUJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGIwNzgp Cj4gLSNkZWZpbmUgX01JUElCX0hTX0xTX0RCSV9FTkFCTEUJCShkZXZfcHJpdi0+bWlwaV9tbWlv X2Jhc2UgKyAweGI4NzgpCj4gLSNkZWZpbmUgTUlQSV9IU19MUF9EQklfRU5BQkxFKHRjKQlfVFJB TlNDT0RFUih0YywgXAo+IC0JCQlfTUlQSUFfSFNfTFNfREJJX0VOQUJMRSwgX01JUElCX0hTX0xT X0RCSV9FTkFCTEUpCj4gKyNkZWZpbmUgX01JUElDX0hTX0xTX0RCSV9FTkFCTEUJCShkZXZfcHJp di0+bWlwaV9tbWlvX2Jhc2UgKyAweGI4NzgpCj4gKyNkZWZpbmUgTUlQSV9IU19MUF9EQklfRU5B QkxFKHBvcnQpCV9NSVBJX1BPUlQocG9ydCwgXAo+ICsJCQlfTUlQSUFfSFNfTFNfREJJX0VOQUJM RSwgX01JUElDX0hTX0xTX0RCSV9FTkFCTEUpCj4gICAjZGVmaW5lICBEQklfSFNfTFBfTU9ERV9N QVNLCQkJCSgxIDw8IDApCj4gICAjZGVmaW5lICBEQklfTFBfTU9ERQkJCQkJKDEgPDwgMCkKPiAg ICNkZWZpbmUgIERCSV9IU19NT0RFCQkJCQkoMCA8PCAwKQo+ICAgCj4gICAjZGVmaW5lIF9NSVBJ QV9EUEhZX1BBUkFNCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiMDgwKQo+IC0jZGVm aW5lIF9NSVBJQl9EUEhZX1BBUkFNCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODgw KQo+IC0jZGVmaW5lIE1JUElfRFBIWV9QQVJBTSh0YykJCV9UUkFOU0NPREVSKHRjLCBfTUlQSUFf RFBIWV9QQVJBTSwgXAo+IC0JCQkJCV9NSVBJQl9EUEhZX1BBUkFNKQo+ICsjZGVmaW5lIF9NSVBJ Q19EUEhZX1BBUkFNCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODgwKQo+ICsjZGVm aW5lIE1JUElfRFBIWV9QQVJBTShwb3J0KQkJX01JUElfUE9SVChwb3J0LCBfTUlQSUFfRFBIWV9Q QVJBTSwgXAo+ICsJCQkJCV9NSVBJQ19EUEhZX1BBUkFNKQo+ICAgI2RlZmluZSAgRVhJVF9aRVJP X0NPVU5UX1NISUZUCQkJCTI0Cj4gICAjZGVmaW5lICBFWElUX1pFUk9fQ09VTlRfTUFTSwkJCQko MHgzZiA8PCAyNCkKPiAgICNkZWZpbmUgIFRSQUlMX0NPVU5UX1NISUZUCQkJCTE2Cj4gQEAgLTY5 NjUsMzYgKzY5NjgsMzYgQEAgZW51bSBwdW5pdF9wb3dlcl93ZWxsIHsKPiAgIAo+ICAgLyogYml0 cyAzMTowICovCj4gICAjZGVmaW5lIF9NSVBJQV9EQklfQldfQ1RSTAkJKGRldl9wcml2LT5taXBp X21taW9fYmFzZSArIDB4YjA4NCkKPiAtI2RlZmluZSBfTUlQSUJfREJJX0JXX0NUUkwJCShkZXZf cHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI4ODQpCj4gLSNkZWZpbmUgTUlQSV9EQklfQldfQ1RS TCh0YykJCV9UUkFOU0NPREVSKHRjLCBfTUlQSUFfREJJX0JXX0NUUkwsIFwKPiAtCQkJCQlfTUlQ SUJfREJJX0JXX0NUUkwpCj4gKyNkZWZpbmUgX01JUElDX0RCSV9CV19DVFJMCQkoZGV2X3ByaXYt Pm1pcGlfbW1pb19iYXNlICsgMHhiODg0KQo+ICsjZGVmaW5lIE1JUElfREJJX0JXX0NUUkwocG9y dCkJCV9NSVBJX1BPUlQocG9ydCwgX01JUElBX0RCSV9CV19DVFJMLCBcCj4gKwkJCQkJX01JUElD X0RCSV9CV19DVFJMKQo+ICAgCj4gICAjZGVmaW5lIF9NSVBJQV9DTEtfTEFORV9TV0lUQ0hfVElN RV9DTlQJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgXAo+ICAgCQkJCQkJCSsgMHhiMDg4KQo+ IC0jZGVmaW5lIF9NSVBJQl9DTEtfTEFORV9TV0lUQ0hfVElNRV9DTlQJCShkZXZfcHJpdi0+bWlw aV9tbWlvX2Jhc2UgXAo+ICsjZGVmaW5lIF9NSVBJQ19DTEtfTEFORV9TV0lUQ0hfVElNRV9DTlQJ CShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgXAo+ICAgCQkJCQkJCSsgMHhiODg4KQo+IC0jZGVm aW5lIE1JUElfQ0xLX0xBTkVfU1dJVENIX1RJTUVfQ05UKHRjKQlfVFJBTlNDT0RFUih0YywgXAo+ IC0JX01JUElBX0NMS19MQU5FX1NXSVRDSF9USU1FX0NOVCwgX01JUElCX0NMS19MQU5FX1NXSVRD SF9USU1FX0NOVCkKPiArI2RlZmluZSBNSVBJX0NMS19MQU5FX1NXSVRDSF9USU1FX0NOVChwb3J0 KQlfTUlQSV9QT1JUKHBvcnQsIFwKPiArCV9NSVBJQV9DTEtfTEFORV9TV0lUQ0hfVElNRV9DTlQs IF9NSVBJQ19DTEtfTEFORV9TV0lUQ0hfVElNRV9DTlQpCj4gICAjZGVmaW5lICBMUF9IU19TU1df Q05UX1NISUZUCQkJCTE2Cj4gICAjZGVmaW5lICBMUF9IU19TU1dfQ05UX01BU0sJCQkJKDB4ZmZm ZiA8PCAxNikKPiAgICNkZWZpbmUgIEhTX0xQX1BXUl9TV19DTlRfU0hJRlQJCQkJMAo+ICAgI2Rl ZmluZSAgSFNfTFBfUFdSX1NXX0NOVF9NQVNLCQkJCSgweGZmZmYgPDwgMCkKPiAgIAo+ICAgI2Rl ZmluZSBfTUlQSUFfU1RPUF9TVEFURV9TVEFMTAkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSAr IDB4YjA4YykKPiAtI2RlZmluZSBfTUlQSUJfU1RPUF9TVEFURV9TVEFMTAkJKGRldl9wcml2LT5t aXBpX21taW9fYmFzZSArIDB4Yjg4YykKPiAtI2RlZmluZSBNSVBJX1NUT1BfU1RBVEVfU1RBTEwo dGMpCV9UUkFOU0NPREVSKHRjLCBcCj4gLQkJCV9NSVBJQV9TVE9QX1NUQVRFX1NUQUxMLCBfTUlQ SUJfU1RPUF9TVEFURV9TVEFMTCkKPiArI2RlZmluZSBfTUlQSUNfU1RPUF9TVEFURV9TVEFMTAkJ KGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4Yjg4YykKPiArI2RlZmluZSBNSVBJX1NUT1Bf U1RBVEVfU1RBTEwocG9ydCkJX01JUElfUE9SVChwb3J0LCBcCj4gKwkJCV9NSVBJQV9TVE9QX1NU QVRFX1NUQUxMLCBfTUlQSUNfU1RPUF9TVEFURV9TVEFMTCkKPiAgICNkZWZpbmUgIFNUT1BfU1RB VEVfU1RBTExfQ09VTlRFUl9TSElGVAkJCTAKPiAgICNkZWZpbmUgIFNUT1BfU1RBVEVfU1RBTExf Q09VTlRFUl9NQVNLCQkJKDB4ZmYgPDwgMCkKPiAgIAo+ICAgI2RlZmluZSBfTUlQSUFfSU5UUl9T VEFUX1JFR18xCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiMDkwKQo+IC0jZGVmaW5l IF9NSVBJQl9JTlRSX1NUQVRfUkVHXzEJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI4 OTApCj4gLSNkZWZpbmUgTUlQSV9JTlRSX1NUQVRfUkVHXzEodGMpCV9UUkFOU0NPREVSKHRjLCBc Cj4gLQkJCQlfTUlQSUFfSU5UUl9TVEFUX1JFR18xLCBfTUlQSUJfSU5UUl9TVEFUX1JFR18xKQo+ ICsjZGVmaW5lIF9NSVBJQ19JTlRSX1NUQVRfUkVHXzEJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jh c2UgKyAweGI4OTApCj4gKyNkZWZpbmUgTUlQSV9JTlRSX1NUQVRfUkVHXzEocG9ydCkJX01JUElf UE9SVChwb3J0LCBcCj4gKwkJCQlfTUlQSUFfSU5UUl9TVEFUX1JFR18xLCBfTUlQSUNfSU5UUl9T VEFUX1JFR18xKQo+ICAgI2RlZmluZSBfTUlQSUFfSU5UUl9FTl9SRUdfMQkJKGRldl9wcml2LT5t aXBpX21taW9fYmFzZSArIDB4YjA5NCkKPiAtI2RlZmluZSBfTUlQSUJfSU5UUl9FTl9SRUdfMQkJ KGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4Yjg5NCkKPiAtI2RlZmluZSBNSVBJX0lOVFJf RU5fUkVHXzEodGMpCV9UUkFOU0NPREVSKHRjLCBfTUlQSUFfSU5UUl9FTl9SRUdfMSwgXAo+IC0J CQkJCV9NSVBJQl9JTlRSX0VOX1JFR18xKQo+ICsjZGVmaW5lIF9NSVBJQ19JTlRSX0VOX1JFR18x CQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiODk0KQo+ICsjZGVmaW5lIE1JUElfSU5U Ul9FTl9SRUdfMShwb3J0KQlfTUlQSV9QT1JUKHBvcnQsIF9NSVBJQV9JTlRSX0VOX1JFR18xLCBc Cj4gKwkJCQkJX01JUElDX0lOVFJfRU5fUkVHXzEpCj4gICAjZGVmaW5lICBSWF9DT05URU5USU9O X0RFVEVDVEVECQkJCSgxIDw8IDApCj4gICAKPiAgIC8qIFhYWDogb25seSBwaXBlIEEgPyE/ICov Cj4gQEAgLTcwMTMsOSArNzAxNiw5IEBAIGVudW0gcHVuaXRfcG93ZXJfd2VsbCB7Cj4gICAvKiBN SVBJIGFkYXB0ZXIgcmVnaXN0ZXJzICovCj4gICAKPiAgICNkZWZpbmUgX01JUElBX0NUUkwJCQko ZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiMTA0KQo+IC0jZGVmaW5lIF9NSVBJQl9DVFJM CQkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4YjkwNCkKPiAtI2RlZmluZSBNSVBJX0NU UkwodGMpCQkJX1RSQU5TQ09ERVIodGMsIF9NSVBJQV9DVFJMLCBcCj4gLQkJCQkJX01JUElCX0NU UkwpCj4gKyNkZWZpbmUgX01JUElDX0NUUkwJCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsg MHhiOTA0KQo+ICsjZGVmaW5lIE1JUElfQ1RSTChwb3J0KQkJCV9NSVBJX1BPUlQocG9ydCwgX01J UElBX0NUUkwsIFwKPiArCQkJCQlfTUlQSUNfQ1RSTCkKPiAgICNkZWZpbmUgIEVTQ0FQRV9DTE9D S19ESVZJREVSX1NISUZUCQkJNSAvKiBBIG9ubHkgKi8KPiAgICNkZWZpbmUgIEVTQ0FQRV9DTE9D S19ESVZJREVSX01BU0sJCQkoMyA8PCA1KQo+ICAgI2RlZmluZSAgRVNDQVBFX0NMT0NLX0RJVklE RVJfMQkJCQkoMCA8PCA1KQo+IEBAIC03MDI4LDI0ICs3MDMxLDI0IEBAIGVudW0gcHVuaXRfcG93 ZXJfd2VsbCB7Cj4gICAjZGVmaW5lICBSR0JfRkxJUF9UT19CR1IJCQkJKDEgPDwgMikKPiAgIAo+ ICAgI2RlZmluZSBfTUlQSUFfREFUQV9BRERSRVNTCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNl ICsgMHhiMTA4KQo+IC0jZGVmaW5lIF9NSVBJQl9EQVRBX0FERFJFU1MJCShkZXZfcHJpdi0+bWlw aV9tbWlvX2Jhc2UgKyAweGI5MDgpCj4gLSNkZWZpbmUgTUlQSV9EQVRBX0FERFJFU1ModGMpCQlf VFJBTlNDT0RFUih0YywgX01JUElBX0RBVEFfQUREUkVTUywgXAo+IC0JCQkJCV9NSVBJQl9EQVRB X0FERFJFU1MpCj4gKyNkZWZpbmUgX01JUElDX0RBVEFfQUREUkVTUwkJKGRldl9wcml2LT5taXBp X21taW9fYmFzZSArIDB4YjkwOCkKPiArI2RlZmluZSBNSVBJX0RBVEFfQUREUkVTUyhwb3J0KQkJ X01JUElfUE9SVChwb3J0LCBfTUlQSUFfREFUQV9BRERSRVNTLCBcCj4gKwkJCQkJX01JUElDX0RB VEFfQUREUkVTUykKPiAgICNkZWZpbmUgIERBVEFfTUVNX0FERFJFU1NfU0hJRlQJCQkJNQo+ICAg I2RlZmluZSAgREFUQV9NRU1fQUREUkVTU19NQVNLCQkJCSgweDdmZmZmZmYgPDwgNSkKPiAgICNk ZWZpbmUgIERBVEFfVkFMSUQJCQkJCSgxIDw8IDApCj4gICAKPiAgICNkZWZpbmUgX01JUElBX0RB VEFfTEVOR1RICQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiMTBjKQo+IC0jZGVmaW5l IF9NSVBJQl9EQVRBX0xFTkdUSAkJKGRldl9wcml2LT5taXBpX21taW9fYmFzZSArIDB4YjkwYykK PiAtI2RlZmluZSBNSVBJX0RBVEFfTEVOR1RIKHRjKQkJX1RSQU5TQ09ERVIodGMsIF9NSVBJQV9E QVRBX0xFTkdUSCwgXAo+IC0JCQkJCV9NSVBJQl9EQVRBX0xFTkdUSCkKPiArI2RlZmluZSBfTUlQ SUNfREFUQV9MRU5HVEgJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI5MGMpCj4gKyNk ZWZpbmUgTUlQSV9EQVRBX0xFTkdUSChwb3J0KQkJX01JUElfUE9SVChwb3J0LCBfTUlQSUFfREFU QV9MRU5HVEgsIFwKPiArCQkJCQlfTUlQSUNfREFUQV9MRU5HVEgpCj4gICAjZGVmaW5lICBEQVRB X0xFTkdUSF9TSElGVAkJCQkwCj4gICAjZGVmaW5lICBEQVRBX0xFTkdUSF9NQVNLCQkJCSgweGZm ZmZmIDw8IDApCj4gICAKPiAgICNkZWZpbmUgX01JUElBX0NPTU1BTkRfQUREUkVTUwkJKGRldl9w cml2LT5taXBpX21taW9fYmFzZSArIDB4YjExMCkKPiAtI2RlZmluZSBfTUlQSUJfQ09NTUFORF9B RERSRVNTCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiOTEwKQo+IC0jZGVmaW5lIE1J UElfQ09NTUFORF9BRERSRVNTKHRjKQlfVFJBTlNDT0RFUih0YywgXAo+IC0JCQkJX01JUElBX0NP TU1BTkRfQUREUkVTUywgX01JUElCX0NPTU1BTkRfQUREUkVTUykKPiArI2RlZmluZSBfTUlQSUNf Q09NTUFORF9BRERSRVNTCQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiOTEwKQo+ICsj ZGVmaW5lIE1JUElfQ09NTUFORF9BRERSRVNTKHBvcnQpCV9NSVBJX1BPUlQocG9ydCwgXAo+ICsJ CQkJX01JUElBX0NPTU1BTkRfQUREUkVTUywgX01JUElDX0NPTU1BTkRfQUREUkVTUykKPiAgICNk ZWZpbmUgIENPTU1BTkRfTUVNX0FERFJFU1NfU0hJRlQJCQk1Cj4gICAjZGVmaW5lICBDT01NQU5E X01FTV9BRERSRVNTX01BU0sJCQkoMHg3ZmZmZmZmIDw8IDUpCj4gICAjZGVmaW5lICBBVVRPX1BX R19FTkFCTEUJCQkJKDEgPDwgMikKPiBAQCAtNzA1MywyMiArNzA1NiwyMiBAQCBlbnVtIHB1bml0 X3Bvd2VyX3dlbGwgewo+ICAgI2RlZmluZSAgQ09NTUFORF9WQUxJRAkJCQkJKDEgPDwgMCkKPiAg IAo+ICAgI2RlZmluZSBfTUlQSUFfQ09NTUFORF9MRU5HVEgJCShkZXZfcHJpdi0+bWlwaV9tbWlv X2Jhc2UgKyAweGIxMTQpCj4gLSNkZWZpbmUgX01JUElCX0NPTU1BTkRfTEVOR1RICQkoZGV2X3By aXYtPm1pcGlfbW1pb19iYXNlICsgMHhiOTE0KQo+IC0jZGVmaW5lIE1JUElfQ09NTUFORF9MRU5H VEgodGMpCV9UUkFOU0NPREVSKHRjLCBfTUlQSUFfQ09NTUFORF9MRU5HVEgsIFwKPiAtCQkJCQlf TUlQSUJfQ09NTUFORF9MRU5HVEgpCj4gKyNkZWZpbmUgX01JUElDX0NPTU1BTkRfTEVOR1RICQko ZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiOTE0KQo+ICsjZGVmaW5lIE1JUElfQ09NTUFO RF9MRU5HVEgocG9ydCkJX01JUElfUE9SVChwb3J0LCBfTUlQSUFfQ09NTUFORF9MRU5HVEgsIFwK PiArCQkJCQlfTUlQSUNfQ09NTUFORF9MRU5HVEgpCj4gICAjZGVmaW5lICBDT01NQU5EX0xFTkdU SF9TSElGVChuKQkJCSg4ICogKG4pKSAvKiBuOiAwLi4uMyAqLwo+ICAgI2RlZmluZSAgQ09NTUFO RF9MRU5HVEhfTUFTSyhuKQkJCQkoMHhmZiA8PCAoOCAqIChuKSkpCj4gICAKPiAgICNkZWZpbmUg X01JUElBX1JFQURfREFUQV9SRVRVUk4wCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGIx MTgpCj4gLSNkZWZpbmUgX01JUElCX1JFQURfREFUQV9SRVRVUk4wCShkZXZfcHJpdi0+bWlwaV9t bWlvX2Jhc2UgKyAweGI5MTgpCj4gLSNkZWZpbmUgTUlQSV9SRUFEX0RBVEFfUkVUVVJOKHRjLCBu KSBcCj4gLQkoX1RSQU5TQ09ERVIodGMsIF9NSVBJQV9SRUFEX0RBVEFfUkVUVVJOMCwgX01JUElC X1JFQURfREFUQV9SRVRVUk4wKSBcCj4gKyNkZWZpbmUgX01JUElDX1JFQURfREFUQV9SRVRVUk4w CShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI5MTgpCj4gKyNkZWZpbmUgTUlQSV9SRUFE X0RBVEFfUkVUVVJOKHBvcnQsIG4pIFwKPiArCShfTUlQSV9QT1JUKHBvcnQsIF9NSVBJQV9SRUFE X0RBVEFfUkVUVVJOMCwgX01JUElDX1JFQURfREFUQV9SRVRVUk4wKSBcCj4gICAJCQkJCSsgNCAq IChuKSkgLyogbjogMC4uLjcgKi8KPiAgIAo+ICAgI2RlZmluZSBfTUlQSUFfUkVBRF9EQVRBX1ZB TElECQkoZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlICsgMHhiMTM4KQo+IC0jZGVmaW5lIF9NSVBJ Ql9SRUFEX0RBVEFfVkFMSUQJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAweGI5MzgpCj4g LSNkZWZpbmUgTUlQSV9SRUFEX0RBVEFfVkFMSUQodGMpCV9UUkFOU0NPREVSKHRjLCBcCj4gLQkJ CQlfTUlQSUFfUkVBRF9EQVRBX1ZBTElELCBfTUlQSUJfUkVBRF9EQVRBX1ZBTElEKQo+ICsjZGVm aW5lIF9NSVBJQ19SRUFEX0RBVEFfVkFMSUQJCShkZXZfcHJpdi0+bWlwaV9tbWlvX2Jhc2UgKyAw eGI5MzgpCj4gKyNkZWZpbmUgTUlQSV9SRUFEX0RBVEFfVkFMSUQocG9ydCkJX01JUElfUE9SVChw b3J0LCBcCj4gKwkJCQlfTUlQSUFfUkVBRF9EQVRBX1ZBTElELCBfTUlQSUNfUkVBRF9EQVRBX1ZB TElEKQo+ICAgI2RlZmluZSAgUkVBRF9EQVRBX1ZBTElEKG4pCQkJCSgxIDw8IChuKSkKPiAgIAo+ ICAgLyogRm9yIFVNUyBvbmx5IChkZXByZWNhdGVkKTogKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k c2kuYwo+IGluZGV4IDBiMTg0MDc5ZGUxNC4uMzU4NDJhNjY4N2Q4IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHNpLmMKPiBAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rz aV9kZXZpY2VfcmVhZHkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gICB7Cj4gICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5jb2Rlci0+YmFzZS5kZXYtPmRl dl9wcml2YXRlOwo+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwo+IC0JaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBl Owo+ICsJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kc2lfcGlwZV90b19wb3J0KGludGVsX2NydGMt PnBpcGUpOwo+ICAgCXUzMiB2YWw7Cj4gICAKPiAgIAlEUk1fREVCVUdfS01TKCJcbiIpOwo+IEBA IC0xMjAsMTcgKzEyMCwxNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfZGV2aWNlX3JlYWR5KHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAgCS8qIGJhbmRnYXAgcmVzZXQgaXMgbmVl ZGVkIGFmdGVyIGV2ZXJ5dGltZSB3ZSBkbyBwb3dlciBnYXRlICovCj4gICAJYmFuZF9nYXBfcmVz ZXQoZGV2X3ByaXYpOwo+ICAgCj4gLQlJOTE1X1dSSVRFKE1JUElfREVWSUNFX1JFQURZKHBpcGUp LCBVTFBTX1NUQVRFX0VOVEVSKTsKPiArCUk5MTVfV1JJVEUoTUlQSV9ERVZJQ0VfUkVBRFkocG9y dCksIFVMUFNfU1RBVEVfRU5URVIpOwo+ICAgCXVzbGVlcF9yYW5nZSgyNTAwLCAzMDAwKTsKPiAg IAo+IC0JdmFsID0gSTkxNV9SRUFEKE1JUElfUE9SVF9DVFJMKHBpcGUpKTsKPiAtCUk5MTVfV1JJ VEUoTUlQSV9QT1JUX0NUUkwocGlwZSksIHZhbCB8IExQX09VVFBVVF9IT0xEKTsKPiArCXZhbCA9 IEk5MTVfUkVBRChNSVBJX1BPUlRfQ1RSTChwb3J0KSk7Cj4gKwlJOTE1X1dSSVRFKE1JUElfUE9S VF9DVFJMKHBvcnQpLCB2YWwgfCBMUF9PVVRQVVRfSE9MRCk7Cj4gICAJdXNsZWVwX3JhbmdlKDEw MDAsIDE1MDApOwo+ICAgCj4gLQlJOTE1X1dSSVRFKE1JUElfREVWSUNFX1JFQURZKHBpcGUpLCBV TFBTX1NUQVRFX0VYSVQpOwo+ICsJSTkxNV9XUklURShNSVBJX0RFVklDRV9SRUFEWShwb3J0KSwg VUxQU19TVEFURV9FWElUKTsKPiAgIAl1c2xlZXBfcmFuZ2UoMjUwMCwgMzAwMCk7Cj4gICAKPiAt CUk5MTVfV1JJVEUoTUlQSV9ERVZJQ0VfUkVBRFkocGlwZSksIERFVklDRV9SRUFEWSk7Cj4gKwlJ OTE1X1dSSVRFKE1JUElfREVWSUNFX1JFQURZKHBvcnQpLCBERVZJQ0VfUkVBRFkpOwo+ICAgCXVz bGVlcF9yYW5nZSgyNTAwLCAzMDAwKTsKPiAgIH0KPiAgIAo+IEBAIC0xNDAsMTMgKzE0MCwxMyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGVuY29kZXItPmJhc2UuY3J0Yyk7Cj4gICAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0g ZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gLQlpbnQgcGlwZSA9IGludGVsX2Ny dGMtPnBpcGU7Cj4gKwllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RzaV9waXBlX3RvX3BvcnQoaW50 ZWxfY3J0Yy0+cGlwZSk7Cj4gICAJdTMyIHRlbXA7Cj4gICAKPiAgIAlEUk1fREVCVUdfS01TKCJc biIpOwo+ICAgCj4gICAJaWYgKGlzX2NtZF9tb2RlKGludGVsX2RzaSkpCj4gLQkJSTkxNV9XUklU RShNSVBJX01BWF9SRVRVUk5fUEtUX1NJWkUocGlwZSksIDggKiA0KTsKPiArCQlJOTE1X1dSSVRF KE1JUElfTUFYX1JFVFVSTl9QS1RfU0laRShwb3J0KSwgOCAqIDQpOwo+ICAgCWVsc2Ugewo+ICAg CQltc2xlZXAoMjApOyAvKiBYWFggKi8KPiAgIAkJZHBpX3NlbmRfY21kKGludGVsX2RzaSwgVFVS Tl9PTiwgRFBJX0xQX01PREVfRU4pOwo+IEBAIC0xNTgsMTAgKzE1OCwxMCBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9kc2lfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAgCQl3 YWl0X2Zvcl9kc2lfZmlmb19lbXB0eShpbnRlbF9kc2kpOwo+ICAgCj4gICAJCS8qIGFzc2VydCBp cF90Z19lbmFibGUgc2lnbmFsICovCj4gLQkJdGVtcCA9IEk5MTVfUkVBRChNSVBJX1BPUlRfQ1RS TChwaXBlKSkgJiB+TEFORV9DT05GSUdVUkFUSU9OX01BU0s7Cj4gKwkJdGVtcCA9IEk5MTVfUkVB RChNSVBJX1BPUlRfQ1RSTChwb3J0KSkgJiB+TEFORV9DT05GSUdVUkFUSU9OX01BU0s7Cj4gICAJ CXRlbXAgPSB0ZW1wIHwgaW50ZWxfZHNpLT5wb3J0X2JpdHM7Cj4gLQkJSTkxNV9XUklURShNSVBJ X1BPUlRfQ1RSTChwaXBlKSwgdGVtcCB8IERQSV9FTkFCTEUpOwo+IC0JCVBPU1RJTkdfUkVBRChN SVBJX1BPUlRfQ1RSTChwaXBlKSk7Cj4gKwkJSTkxNV9XUklURShNSVBJX1BPUlRfQ1RSTChwb3J0 KSwgdGVtcCB8IERQSV9FTkFCTEUpOwo+ICsJCVBPU1RJTkdfUkVBRChNSVBJX1BPUlRfQ1RSTChw b3J0KSk7Cj4gICAJfQo+ICAgfQo+ICAgCj4gQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9kc2lfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAg CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5i YXNlLmNydGMpOwo+ICAgCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190b19pbnRl bF9kc2koJmVuY29kZXItPmJhc2UpOwo+IC0JaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ ICsJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kc2lfcGlwZV90b19wb3J0KGludGVsX2NydGMtPnBp cGUpOwo+ICAgCXUzMiB0ZW1wOwo+ICAgCj4gICAJRFJNX0RFQlVHX0tNUygiXG4iKTsKPiBAQCAt MjQ2LDI5ICsyNDYsMjkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX2Rpc2FibGUoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIpCj4gICAJCXdhaXRfZm9yX2RzaV9maWZvX2VtcHR5KGludGVs X2RzaSk7Cj4gICAKPiAgIAkJLyogZGUtYXNzZXJ0IGlwX3RnX2VuYWJsZSBzaWduYWwgKi8KPiAt CQl0ZW1wID0gSTkxNV9SRUFEKE1JUElfUE9SVF9DVFJMKHBpcGUpKTsKPiAtCQlJOTE1X1dSSVRF KE1JUElfUE9SVF9DVFJMKHBpcGUpLCB0ZW1wICYgfkRQSV9FTkFCTEUpOwo+IC0JCVBPU1RJTkdf UkVBRChNSVBJX1BPUlRfQ1RSTChwaXBlKSk7Cj4gKwkJdGVtcCA9IEk5MTVfUkVBRChNSVBJX1BP UlRfQ1RSTChwb3J0KSk7Cj4gKwkJSTkxNV9XUklURShNSVBJX1BPUlRfQ1RSTChwb3J0KSwgdGVt cCAmIH5EUElfRU5BQkxFKTsKPiArCQlQT1NUSU5HX1JFQUQoTUlQSV9QT1JUX0NUUkwocG9ydCkp Owo+ICAgCj4gICAJCW1zbGVlcCgyKTsKPiAgIAl9Cj4gICAKPiAgIAkvKiBQYW5lbCBjb21tYW5k cyBjYW4gYmUgc2VudCB3aGVuIGNsb2NrIGlzIGluIExQMTEgKi8KPiAtCUk5MTVfV1JJVEUoTUlQ SV9ERVZJQ0VfUkVBRFkocGlwZSksIDB4MCk7Cj4gKwlJOTE1X1dSSVRFKE1JUElfREVWSUNFX1JF QURZKHBvcnQpLCAweDApOwo+ICAgCj4gLQl0ZW1wID0gSTkxNV9SRUFEKE1JUElfQ1RSTChwaXBl KSk7Cj4gKwl0ZW1wID0gSTkxNV9SRUFEKE1JUElfQ1RSTChwb3J0KSk7Cj4gICAJdGVtcCAmPSB+ RVNDQVBFX0NMT0NLX0RJVklERVJfTUFTSzsKPiAtCUk5MTVfV1JJVEUoTUlQSV9DVFJMKHBpcGUp LCB0ZW1wIHwKPiArCUk5MTVfV1JJVEUoTUlQSV9DVFJMKHBvcnQpLCB0ZW1wIHwKPiAgIAkJICAg aW50ZWxfZHNpLT5lc2NhcGVfY2xrX2RpdiA8PAo+ICAgCQkgICBFU0NBUEVfQ0xPQ0tfRElWSURF Ul9TSElGVCk7Cj4gICAKPiAtCUk5MTVfV1JJVEUoTUlQSV9FT1RfRElTQUJMRShwaXBlKSwgQ0xP Q0tTVE9QKTsKPiArCUk5MTVfV1JJVEUoTUlQSV9FT1RfRElTQUJMRShwb3J0KSwgQ0xPQ0tTVE9Q KTsKPiAgIAo+IC0JdGVtcCA9IEk5MTVfUkVBRChNSVBJX0RTSV9GVU5DX1BSRyhwaXBlKSk7Cj4g Kwl0ZW1wID0gSTkxNV9SRUFEKE1JUElfRFNJX0ZVTkNfUFJHKHBvcnQpKTsKPiAgIAl0ZW1wICY9 IH5WSURfTU9ERV9GT1JNQVRfTUFTSzsKPiAtCUk5MTVfV1JJVEUoTUlQSV9EU0lfRlVOQ19QUkco cGlwZSksIHRlbXApOwo+ICsJSTkxNV9XUklURShNSVBJX0RTSV9GVU5DX1BSRyhwb3J0KSwgdGVt cCk7Cj4gICAKPiAtCUk5MTVfV1JJVEUoTUlQSV9ERVZJQ0VfUkVBRFkocGlwZSksIDB4MSk7Cj4g KwlJOTE1X1dSSVRFKE1JUElfREVWSUNFX1JFQURZKHBvcnQpLCAweDEpOwo+ICAgCj4gICAJLyog aWYgZGlzYWJsZSBwYWNrZXRzIGFyZSBzZW50IGJlZm9yZSBzZW5kaW5nIHNodXRkb3duIHBhY2tl dCB0aGVuIGluCj4gICAJICogc29tZSBuZXh0IGVuYWJsZSBzZXF1ZW5jZSBzZW5kIHR1cm4gb24g cGFja2V0IGVycm9yIGlzIG9ic2VydmVkICovCj4gQEAgLTI4MiwyOSArMjgyLDI5IEBAIHN0YXRp YyB2b2lkIGludGVsX2RzaV9jbGVhcl9kZXZpY2VfcmVhZHkoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZW5jb2Rlci0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwo+IC0JaW50IHBp cGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICsJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kc2lfcGlw ZV90b19wb3J0KGludGVsX2NydGMtPnBpcGUpOwo+ICAgCXUzMiB2YWw7Cj4gICAKPiAgIAlEUk1f REVCVUdfS01TKCJcbiIpOwo+ICAgCj4gLQlJOTE1X1dSSVRFKE1JUElfREVWSUNFX1JFQURZKHBp cGUpLCBERVZJQ0VfUkVBRFkgfCBVTFBTX1NUQVRFX0VOVEVSKTsKPiArCUk5MTVfV1JJVEUoTUlQ SV9ERVZJQ0VfUkVBRFkocG9ydCksIERFVklDRV9SRUFEWSB8IFVMUFNfU1RBVEVfRU5URVIpOwo+ ICAgCXVzbGVlcF9yYW5nZSgyMDAwLCAyNTAwKTsKPiAgIAo+IC0JSTkxNV9XUklURShNSVBJX0RF VklDRV9SRUFEWShwaXBlKSwgREVWSUNFX1JFQURZIHwgVUxQU19TVEFURV9FWElUKTsKPiArCUk5 MTVfV1JJVEUoTUlQSV9ERVZJQ0VfUkVBRFkocG9ydCksIERFVklDRV9SRUFEWSB8IFVMUFNfU1RB VEVfRVhJVCk7Cj4gICAJdXNsZWVwX3JhbmdlKDIwMDAsIDI1MDApOwo+ICAgCj4gLQlJOTE1X1dS SVRFKE1JUElfREVWSUNFX1JFQURZKHBpcGUpLCBERVZJQ0VfUkVBRFkgfCBVTFBTX1NUQVRFX0VO VEVSKTsKPiArCUk5MTVfV1JJVEUoTUlQSV9ERVZJQ0VfUkVBRFkocG9ydCksIERFVklDRV9SRUFE WSB8IFVMUFNfU1RBVEVfRU5URVIpOwo+ICAgCXVzbGVlcF9yYW5nZSgyMDAwLCAyNTAwKTsKPiAg IAo+IC0JaWYgKHdhaXRfZm9yKCgoSTkxNV9SRUFEKE1JUElfUE9SVF9DVFJMKHBpcGUpKSAmIEFG RV9MQVRDSE9VVCkKPiArCWlmICh3YWl0X2ZvcigoKEk5MTVfUkVBRChNSVBJX1BPUlRfQ1RSTChw b3J0KSkgJiBBRkVfTEFUQ0hPVVQpCj4gICAJCSAgICAgID09IDB4MDAwMDApLCAzMCkpCj4gICAJ CURSTV9FUlJPUigiRFNJIExQIG5vdCBnb2luZyBMb3dcbiIpOwo+ICAgCj4gLQl2YWwgPSBJOTE1 X1JFQUQoTUlQSV9QT1JUX0NUUkwocGlwZSkpOwo+IC0JSTkxNV9XUklURShNSVBJX1BPUlRfQ1RS TChwaXBlKSwgdmFsICYgfkxQX09VVFBVVF9IT0xEKTsKPiArCXZhbCA9IEk5MTVfUkVBRChNSVBJ X1BPUlRfQ1RSTChwb3J0KSk7Cj4gKwlJOTE1X1dSSVRFKE1JUElfUE9SVF9DVFJMKHBvcnQpLCB2 YWwgJiB+TFBfT1VUUFVUX0hPTEQpOwo+ICAgCXVzbGVlcF9yYW5nZSgxMDAwLCAxNTAwKTsKPiAg IAo+IC0JSTkxNV9XUklURShNSVBJX0RFVklDRV9SRUFEWShwaXBlKSwgMHgwMCk7Cj4gKwlJOTE1 X1dSSVRFKE1JUElfREVWSUNFX1JFQURZKHBvcnQpLCAweDAwKTsKPiAgIAl1c2xlZXBfcmFuZ2Uo MjAwMCwgMjUwMCk7Cj4gICAKPiAgIAl2bHZfZGlzYWJsZV9kc2lfcGxsKGVuY29kZXIpOwo+IEBA IC0zMzgsOCArMzM4LDggQEAgc3RhdGljIGJvb2wgaW50ZWxfZHNpX2dldF9od19zdGF0ZShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBlbmNvZGVyLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJZW51 bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Cj4gLQl1MzIgcG9ydCwg ZnVuYzsKPiAtCWVudW0gcGlwZSBwOwo+ICsJdTMyIHBvcnRfY3RsLCBmdW5jOwo+ICsJZW51bSBw b3J0IHBvcnQ7Cj4gICAKPiAgIAlEUk1fREVCVUdfS01TKCJcbiIpOwo+ICAgCj4gQEAgLTM0OCwx MyArMzQ4LDEzIEBAIHN0YXRpYyBib29sIGludGVsX2RzaV9nZXRfaHdfc3RhdGUoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gICAJCXJldHVybiBmYWxzZTsKPiAgIAo+ICAgCS8qIFhY WDogdGhpcyBvbmx5IHdvcmtzIGZvciBvbmUgRFNJIG91dHB1dCAqLwo+IC0JZm9yIChwID0gUElQ RV9BOyBwIDw9IFBJUEVfQjsgcCsrKSB7Cj4gLQkJcG9ydCA9IEk5MTVfUkVBRChNSVBJX1BPUlRf Q1RSTChwKSk7Cj4gLQkJZnVuYyA9IEk5MTVfUkVBRChNSVBJX0RTSV9GVU5DX1BSRyhwKSk7Cj4g Kwlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCAoMSA8PCBQT1JUX0EpIHwgKDEgPDwgUE9SVF9DKSkg ewo+ICsJCXBvcnRfY3RsID0gSTkxNV9SRUFEKE1JUElfUE9SVF9DVFJMKHBvcnQpKTsKPiArCQlm dW5jID0gSTkxNV9SRUFEKE1JUElfRFNJX0ZVTkNfUFJHKHBvcnQpKTsKPiAgIAo+IC0JCWlmICgo cG9ydCAmIERQSV9FTkFCTEUpIHx8IChmdW5jICYgQ01EX01PREVfREFUQV9XSURUSF9NQVNLKSkg ewo+IC0JCQlpZiAoSTkxNV9SRUFEKE1JUElfREVWSUNFX1JFQURZKHApKSAmIERFVklDRV9SRUFE WSkgewo+IC0JCQkJKnBpcGUgPSBwOwo+ICsJCWlmICgocG9ydF9jdGwgJiBEUElfRU5BQkxFKSB8 fCAoZnVuYyAmIENNRF9NT0RFX0RBVEFfV0lEVEhfTUFTSykpIHsKPiArCQkJaWYgKEk5MTVfUkVB RChNSVBJX0RFVklDRV9SRUFEWShwb3J0KSkgJiBERVZJQ0VfUkVBRFkpIHsKPiArCQkJCSpwaXBl ID0gcG9ydCA9PSBQT1JUX0EgPyBQSVBFX0EgOiBQSVBFX0M7Cj4gICAJCQkJcmV0dXJuIHRydWU7 Cj4gICAJCQl9Cj4gICAJCX0KPiBAQCAtNDM3LDcgKzQzNyw3IEBAIHN0YXRpYyB2b2lkIHNldF9k c2lfdGltaW5ncyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+Y3J0Yyk7Cj4gICAJ c3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaShlbmNvZGVyKTsK PiAtCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiArCWVudW0gcG9ydCBwb3J0ID0gaW50 ZWxfZHNpX3BpcGVfdG9fcG9ydChpbnRlbF9jcnRjLT5waXBlKTsKPiAgIAl1bnNpZ25lZCBpbnQg YnBwID0gaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfYnBwOwo+ICAgCXVuc2lnbmVkIGludCBsYW5l X2NvdW50ID0gaW50ZWxfZHNpLT5sYW5lX2NvdW50Owo+ICAgCj4gQEAgLTQ2MCwxOCArNDYwLDE4 IEBAIHN0YXRpYyB2b2lkIHNldF9kc2lfdGltaW5ncyhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIsCj4gICAJCQkgICAgaW50ZWxfZHNpLT5idXJzdF9tb2RlX3JhdGlvKTsKPiAgIAloYnAgPSB0 eGJ5dGVjbGtocyhoYnAsIGJwcCwgbGFuZV9jb3VudCwgaW50ZWxfZHNpLT5idXJzdF9tb2RlX3Jh dGlvKTsKPiAgIAo+IC0JSTkxNV9XUklURShNSVBJX0hBQ1RJVkVfQVJFQV9DT1VOVChwaXBlKSwg aGFjdGl2ZSk7Cj4gLQlJOTE1X1dSSVRFKE1JUElfSEZQX0NPVU5UKHBpcGUpLCBoZnApOwo+ICsJ STkxNV9XUklURShNSVBJX0hBQ1RJVkVfQVJFQV9DT1VOVChwb3J0KSwgaGFjdGl2ZSk7Cj4gKwlJ OTE1X1dSSVRFKE1JUElfSEZQX0NPVU5UKHBvcnQpLCBoZnApOwo+ICAgCj4gICAJLyogbWVhbmlu Z2Z1bCBmb3IgdmlkZW8gbW9kZSBub24tYnVyc3Qgc3luYyBwdWxzZSBtb2RlIG9ubHksIGNhbiBi ZSB6ZXJvCj4gICAJICogZm9yIG5vbi1idXJzdCBzeW5jIGV2ZW50cyBhbmQgYnVyc3QgbW9kZXMg Ki8KPiAtCUk5MTVfV1JJVEUoTUlQSV9IU1lOQ19QQURESU5HX0NPVU5UKHBpcGUpLCBoc3luYyk7 Cj4gLQlJOTE1X1dSSVRFKE1JUElfSEJQX0NPVU5UKHBpcGUpLCBoYnApOwo+ICsJSTkxNV9XUklU RShNSVBJX0hTWU5DX1BBRERJTkdfQ09VTlQocG9ydCksIGhzeW5jKTsKPiArCUk5MTVfV1JJVEUo TUlQSV9IQlBfQ09VTlQocG9ydCksIGhicCk7Cj4gICAKPiAgIAkvKiB2ZXJ0aWNhbCB2YWx1ZXMg YXJlIGluIHRlcm1zIG9mIGxpbmVzICovCj4gLQlJOTE1X1dSSVRFKE1JUElfVkZQX0NPVU5UKHBp cGUpLCB2ZnApOwo+IC0JSTkxNV9XUklURShNSVBJX1ZTWU5DX1BBRERJTkdfQ09VTlQocGlwZSks IHZzeW5jKTsKPiAtCUk5MTVfV1JJVEUoTUlQSV9WQlBfQ09VTlQocGlwZSksIHZicCk7Cj4gKwlJ OTE1X1dSSVRFKE1JUElfVkZQX0NPVU5UKHBvcnQpLCB2ZnApOwo+ICsJSTkxNV9XUklURShNSVBJ X1ZTWU5DX1BBRERJTkdfQ09VTlQocG9ydCksIHZzeW5jKTsKPiArCUk5MTVfV1JJVEUoTUlQSV9W QlBfQ09VTlQocG9ydCksIHZicCk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkIGludGVsX2Rz aV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+IEBAIC00ODMs MzAgKzQ4MywzMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlcGFyZShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqaW50ZWxfZW5jb2RlcikKPiAgIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kg PSBlbmNfdG9faW50ZWxfZHNpKGVuY29kZXIpOwo+ICAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICphZGp1c3RlZF9tb2RlID0KPiAgIAkJJmludGVsX2NydGMtPmNvbmZpZy5hZGp1c3RlZF9tb2Rl Owo+IC0JaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICsJZW51bSBwb3J0IHBvcnQgPSBp bnRlbF9kc2lfcGlwZV90b19wb3J0KGludGVsX2NydGMtPnBpcGUpOwo+ICAgCXVuc2lnbmVkIGlu dCBicHAgPSBpbnRlbF9jcnRjLT5jb25maWcucGlwZV9icHA7Cj4gICAJdTMyIHZhbCwgdG1wOwo+ ICAgCj4gLQlEUk1fREVCVUdfS01TKCJwaXBlICVjXG4iLCBwaXBlX25hbWUocGlwZSkpOwo+ICsJ RFJNX0RFQlVHX0tNUygicGlwZSAlY1xuIiwgcGlwZV9uYW1lKGludGVsX2NydGMtPnBpcGUpKTsK PiAgIAo+ICAgCS8qIGVzY2FwZSBjbG9jayBkaXZpZGVyLCAyME1Ieiwgc2hhcmVkIGZvciBBIGFu ZCBDLiBkZXZpY2UgcmVhZHkgbXVzdCBiZQo+ICAgCSAqIG9mZiB3aGVuIGRvaW5nIHRoaXMhIHR4 Y2xrZXNjPyAqLwo+IC0JdG1wID0gSTkxNV9SRUFEKE1JUElfQ1RSTCgwKSk7Cj4gKwl0bXAgPSBJ OTE1X1JFQUQoTUlQSV9DVFJMKFBPUlRfQSkpOwo+ICAgCXRtcCAmPSB+RVNDQVBFX0NMT0NLX0RJ VklERVJfTUFTSzsKPiAtCUk5MTVfV1JJVEUoTUlQSV9DVFJMKDApLCB0bXAgfCBFU0NBUEVfQ0xP Q0tfRElWSURFUl8xKTsKPiArCUk5MTVfV1JJVEUoTUlQSV9DVFJMKFBPUlRfQSksIHRtcCB8IEVT Q0FQRV9DTE9DS19ESVZJREVSXzEpOwo+ICAgCj4gICAJLyogcmVhZCByZXF1ZXN0IHByaW9yaXR5 IGlzIHBlciBwaXBlICovCj4gLQl0bXAgPSBJOTE1X1JFQUQoTUlQSV9DVFJMKHBpcGUpKTsKPiAr CXRtcCA9IEk5MTVfUkVBRChNSVBJX0NUUkwocG9ydCkpOwo+ICAgCXRtcCAmPSB+UkVBRF9SRVFV RVNUX1BSSU9SSVRZX01BU0s7Cj4gLQlJOTE1X1dSSVRFKE1JUElfQ1RSTChwaXBlKSwgdG1wIHwg UkVBRF9SRVFVRVNUX1BSSU9SSVRZX0hJR0gpOwo+ICsJSTkxNV9XUklURShNSVBJX0NUUkwocG9y dCksIHRtcCB8IFJFQURfUkVRVUVTVF9QUklPUklUWV9ISUdIKTsKPiAgIAo+ICAgCS8qIFhYWDog d2h5IGhlcmUsIHdoeSBsaWtlIHRoaXM/IGhhbmRsaW5nIGluIGlycSBoYW5kbGVyPyEgKi8KPiAt CUk5MTVfV1JJVEUoTUlQSV9JTlRSX1NUQVQocGlwZSksIDB4ZmZmZmZmZmYpOwo+IC0JSTkxNV9X UklURShNSVBJX0lOVFJfRU4ocGlwZSksIDB4ZmZmZmZmZmYpOwo+ICsJSTkxNV9XUklURShNSVBJ X0lOVFJfU1RBVChwb3J0KSwgMHhmZmZmZmZmZik7Cj4gKwlJOTE1X1dSSVRFKE1JUElfSU5UUl9F Tihwb3J0KSwgMHhmZmZmZmZmZik7Cj4gICAKPiAtCUk5MTVfV1JJVEUoTUlQSV9EUEhZX1BBUkFN KHBpcGUpLCBpbnRlbF9kc2ktPmRwaHlfcmVnKTsKPiArCUk5MTVfV1JJVEUoTUlQSV9EUEhZX1BB UkFNKHBvcnQpLCBpbnRlbF9kc2ktPmRwaHlfcmVnKTsKPiAgIAo+IC0JSTkxNV9XUklURShNSVBJ X0RQSV9SRVNPTFVUSU9OKHBpcGUpLAo+ICsJSTkxNV9XUklURShNSVBJX0RQSV9SRVNPTFVUSU9O KHBvcnQpLAo+ICAgCQkgICBhZGp1c3RlZF9tb2RlLT52ZGlzcGxheSA8PCBWRVJUSUNBTF9BRERS RVNTX1NISUZUIHwKPiAgIAkJICAgYWRqdXN0ZWRfbW9kZS0+aGRpc3BsYXkgPDwgSE9SSVpPTlRB TF9BRERSRVNTX1NISUZUKTsKPiAgIAo+IEBAIC01MjIsNyArNTIyLDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfZHNpX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCj4g ICAJCS8qIFhYWDogY3Jvc3MtY2hlY2sgYnBwIHZzLiBwaXhlbCBmb3JtYXQ/ICovCj4gICAJCXZh bCB8PSBpbnRlbF9kc2ktPnBpeGVsX2Zvcm1hdDsKPiAgIAl9Cj4gLQlJOTE1X1dSSVRFKE1JUElf RFNJX0ZVTkNfUFJHKHBpcGUpLCB2YWwpOwo+ICsJSTkxNV9XUklURShNSVBJX0RTSV9GVU5DX1BS Ryhwb3J0KSwgdmFsKTsKPiAgIAo+ICAgCS8qIHRpbWVvdXRzIGZvciByZWNvdmVyeS4gb25lIGZy YW1lIElJVUMuIGlmIGNvdW50ZXIgZXhwaXJlcywgRU9UIGFuZAo+ICAgCSAqIHN0b3Agc3RhdGUu ICovCj4gQEAgLTU0MywyNSArNTQzLDI1IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVwYXJl KHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ICAgCj4gICAJaWYgKGlzX3Zp ZF9tb2RlKGludGVsX2RzaSkgJiYKPiAgIAkgICAgaW50ZWxfZHNpLT52aWRlb19tb2RlX2Zvcm1h dCA9PSBWSURFT19NT0RFX0JVUlNUKSB7Cj4gLQkJSTkxNV9XUklURShNSVBJX0hTX1RYX1RJTUVP VVQocGlwZSksCj4gKwkJSTkxNV9XUklURShNSVBJX0hTX1RYX1RJTUVPVVQocG9ydCksCj4gICAJ CQkgICB0eGJ5dGVjbGtocyhhZGp1c3RlZF9tb2RlLT5odG90YWwsIGJwcCwKPiAgIAkJCQkgICAg ICAgaW50ZWxfZHNpLT5sYW5lX2NvdW50LAo+ICAgCQkJCSAgICAgICBpbnRlbF9kc2ktPmJ1cnN0 X21vZGVfcmF0aW8pICsgMSk7Cj4gICAJfSBlbHNlIHsKPiAtCQlJOTE1X1dSSVRFKE1JUElfSFNf VFhfVElNRU9VVChwaXBlKSwKPiArCQlJOTE1X1dSSVRFKE1JUElfSFNfVFhfVElNRU9VVChwb3J0 KSwKPiAgIAkJCSAgIHR4Ynl0ZWNsa2hzKGFkanVzdGVkX21vZGUtPnZ0b3RhbCAqCj4gICAJCQkJ ICAgICAgIGFkanVzdGVkX21vZGUtPmh0b3RhbCwKPiAgIAkJCQkgICAgICAgYnBwLCBpbnRlbF9k c2ktPmxhbmVfY291bnQsCj4gICAJCQkJICAgICAgIGludGVsX2RzaS0+YnVyc3RfbW9kZV9yYXRp bykgKyAxKTsKPiAgIAl9Cj4gLQlJOTE1X1dSSVRFKE1JUElfTFBfUlhfVElNRU9VVChwaXBlKSwg aW50ZWxfZHNpLT5scF9yeF90aW1lb3V0KTsKPiAtCUk5MTVfV1JJVEUoTUlQSV9UVVJOX0FST1VO RF9USU1FT1VUKHBpcGUpLCBpbnRlbF9kc2ktPnR1cm5fYXJuZF92YWwpOwo+IC0JSTkxNV9XUklU RShNSVBJX0RFVklDRV9SRVNFVF9USU1FUihwaXBlKSwgaW50ZWxfZHNpLT5yc3RfdGltZXJfdmFs KTsKPiArCUk5MTVfV1JJVEUoTUlQSV9MUF9SWF9USU1FT1VUKHBvcnQpLCBpbnRlbF9kc2ktPmxw X3J4X3RpbWVvdXQpOwo+ICsJSTkxNV9XUklURShNSVBJX1RVUk5fQVJPVU5EX1RJTUVPVVQocG9y dCksIGludGVsX2RzaS0+dHVybl9hcm5kX3ZhbCk7Cj4gKwlJOTE1X1dSSVRFKE1JUElfREVWSUNF X1JFU0VUX1RJTUVSKHBvcnQpLCBpbnRlbF9kc2ktPnJzdF90aW1lcl92YWwpOwo+ICAgCj4gICAJ LyogZHBoeSBzdHVmZiAqLwo+ICAgCj4gICAJLyogaW4gdGVybXMgb2YgbG93IHBvd2VyIGNsb2Nr ICovCj4gLQlJOTE1X1dSSVRFKE1JUElfSU5JVF9DT1VOVChwaXBlKSwgdHhjbGtlc2MoaW50ZWxf ZHNpLT5lc2NhcGVfY2xrX2RpdiwgMTAwKSk7Cj4gKwlJOTE1X1dSSVRFKE1JUElfSU5JVF9DT1VO VChwb3J0KSwgdHhjbGtlc2MoaW50ZWxfZHNpLT5lc2NhcGVfY2xrX2RpdiwgMTAwKSk7Cj4gICAK PiAgIAl2YWwgPSAwOwo+ICAgCWlmIChpbnRlbF9kc2ktPmVvdHBfcGt0ID09IDApCj4gQEAgLTU3 MSwxNyArNTcxLDE3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVwYXJlKHN0cnVjdCBpbnRl bF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ICAgCQl2YWwgfD0gQ0xPQ0tTVE9QOwo+ICAgCj4g ICAJLyogcmVjb3ZlcnkgZGlzYWJsZXMgKi8KPiAtCUk5MTVfV1JJVEUoTUlQSV9FT1RfRElTQUJM RShwaXBlKSwgdmFsKTsKPiArCUk5MTVfV1JJVEUoTUlQSV9FT1RfRElTQUJMRShwb3J0KSwgdmFs KTsKPiAgIAo+ICAgCS8qIGluIHRlcm1zIG9mIGxvdyBwb3dlciBjbG9jayAqLwo+IC0JSTkxNV9X UklURShNSVBJX0lOSVRfQ09VTlQocGlwZSksIGludGVsX2RzaS0+aW5pdF9jb3VudCk7Cj4gKwlJ OTE1X1dSSVRFKE1JUElfSU5JVF9DT1VOVChwb3J0KSwgaW50ZWxfZHNpLT5pbml0X2NvdW50KTsK PiAgIAo+ICAgCS8qIGluIHRlcm1zIG9mIHR4Ynl0ZWNsa2hzLiBhY3R1YWwgaGlnaCB0byBsb3cg c3dpdGNoICsKPiAgIAkgKiBNSVBJX1NUT1BfU1RBVEVfU1RBTEwgKiBNSVBJX0xQX0JZVEVDTEsu Cj4gICAJICoKPiAgIAkgKiBYWFg6IHdyaXRlIE1JUElfU1RPUF9TVEFURV9TVEFMTD8KPiAgIAkg Ki8KPiAtCUk5MTVfV1JJVEUoTUlQSV9ISUdIX0xPV19TV0lUQ0hfQ09VTlQocGlwZSksCj4gKwlJ OTE1X1dSSVRFKE1JUElfSElHSF9MT1dfU1dJVENIX0NPVU5UKHBvcnQpLAo+ICAgCQkgICBpbnRl bF9kc2ktPmhzX3RvX2xwX2NvdW50KTsKPiAgIAo+ICAgCS8qIFhYWDogbG93IHBvd2VyIGNsb2Nr IGVxdWl2YWxlbmNlIGluIHRlcm1zIG9mIGJ5dGUgY2xvY2suIHRoZSBudW1iZXIKPiBAQCAtNTg5 LDE2ICs1ODksMTYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX3ByZXBhcmUoc3RydWN0IGludGVs X2VuY29kZXIgKmludGVsX2VuY29kZXIpCj4gICAJICogYW5kIHR4Y2xrZXNjLiB0eGNsa2VzYyB0 aW1lIC8gdHhieXRlY2xrIHRpbWUgKiAoMTA1ICsKPiAgIAkgKiBNSVBJX1NUT1BfU1RBVEVfU1RB TEwpIC8gMTA1Lj8/Pwo+ICAgCSAqLwo+IC0JSTkxNV9XUklURShNSVBJX0xQX0JZVEVDTEsocGlw ZSksIGludGVsX2RzaS0+bHBfYnl0ZV9jbGspOwo+ICsJSTkxNV9XUklURShNSVBJX0xQX0JZVEVD TEsocG9ydCksIGludGVsX2RzaS0+bHBfYnl0ZV9jbGspOwo+ICAgCj4gICAJLyogdGhlIGJ3IGVz c2VudGlhbCBmb3IgdHJhbnNtaXR0aW5nIDE2IGxvbmcgcGFja2V0cyBjb250YWluaW5nIDI1Mgo+ ICAgCSAqIGJ5dGVzIG1lYW50IGZvciBkY3Mgd3JpdGUgbWVtb3J5IGNvbW1hbmQgaXMgcHJvZ3Jh bW1lZCBpbiB0aGlzCj4gICAJICogcmVnaXN0ZXIgaW4gdGVybXMgb2YgYnl0ZSBjbG9ja3MuIGJh c2VkIG9uIGRzaSB0cmFuc2ZlciByYXRlIGFuZCB0aGUKPiAgIAkgKiBudW1iZXIgb2YgbGFuZXMg Y29uZmlndXJlZCB0aGUgdGltZSB0YWtlbiB0byB0cmFuc21pdCAxNiBsb25nIHBhY2tldHMKPiAg IAkgKiBpbiBhIGRzaSBzdHJlYW0gdmFyaWVzLiAqLwo+IC0JSTkxNV9XUklURShNSVBJX0RCSV9C V19DVFJMKHBpcGUpLCBpbnRlbF9kc2ktPmJ3X3RpbWVyKTsKPiArCUk5MTVfV1JJVEUoTUlQSV9E QklfQldfQ1RSTChwb3J0KSwgaW50ZWxfZHNpLT5id190aW1lcik7Cj4gICAKPiAtCUk5MTVfV1JJ VEUoTUlQSV9DTEtfTEFORV9TV0lUQ0hfVElNRV9DTlQocGlwZSksCj4gKwlJOTE1X1dSSVRFKE1J UElfQ0xLX0xBTkVfU1dJVENIX1RJTUVfQ05UKHBvcnQpLAo+ICAgCQkgICBpbnRlbF9kc2ktPmNs a19scF90b19oc19jb3VudCA8PCBMUF9IU19TU1dfQ05UX1NISUZUIHwKPiAgIAkJICAgaW50ZWxf ZHNpLT5jbGtfaHNfdG9fbHBfY291bnQgPDwgSFNfTFBfUFdSX1NXX0NOVF9TSElGVCk7Cj4gICAK PiBAQCAtNjA2LDcgKzYwNiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVwYXJlKHN0cnVj dCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ICAgCQkvKiBTb21lIHBhbmVscyBtaWdo dCBoYXZlIHJlc29sdXRpb24gd2hpY2ggaXMgbm90IGEgbXVsdGlwbGUgb2YKPiAgIAkJICogNjQg bGlrZSAxMzY2IHggNzY4LiBFbmFibGUgUkFORE9NIHJlc29sdXRpb24gc3VwcG9ydCBmb3Igc3Vj aAo+ICAgCQkgKiBwYW5lbHMgYnkgZGVmYXVsdCAqLwo+IC0JCUk5MTVfV1JJVEUoTUlQSV9WSURF T19NT0RFX0ZPUk1BVChwaXBlKSwKPiArCQlJOTE1X1dSSVRFKE1JUElfVklERU9fTU9ERV9GT1JN QVQocG9ydCksCj4gICAJCQkgICBpbnRlbF9kc2ktPnZpZGVvX2ZybXRfY2ZnX2JpdHMgfAo+ICAg CQkJICAgaW50ZWxfZHNpLT52aWRlb19tb2RlX2Zvcm1hdCB8Cj4gICAJCQkgICBJUF9UR19DT05G SUcgfAo+IEBAIC03NDgsNiArNzQ4LDEyIEBAIHZvaWQgaW50ZWxfZHNpX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgIAlpbnRlbF9jb25uZWN0b3ItPmdldF9od19zdGF0ZSA9IGludGVs X2Nvbm5lY3Rvcl9nZXRfaHdfc3RhdGU7Cj4gICAJaW50ZWxfY29ubmVjdG9yLT51bnJlZ2lzdGVy ID0gaW50ZWxfY29ubmVjdG9yX3VucmVnaXN0ZXI7Cj4gICAKPiArCS8qIFBpcGUgQSBtYXBzIHRv IE1JUEkgRFNJIHBvcnQgQSwgcGlwZSBCIG1hcHMgdG8gTUlQSSBEU0kgcG9ydCBDICovCj4gKwlp ZiAoZGV2X3ByaXYtPnZidC5kc2kucG9ydCA9PSBEVk9fUE9SVF9NSVBJQSkKPiArCQlpbnRlbF9l bmNvZGVyLT5jcnRjX21hc2sgPSAoMSA8PCBQSVBFX0EpOwo+ICsJZWxzZSBpZiAoZGV2X3ByaXYt PnZidC5kc2kucG9ydCA9PSBEVk9fUE9SVF9NSVBJQykKPiArCQlpbnRlbF9lbmNvZGVyLT5jcnRj X21hc2sgPSAoMSA8PCBQSVBFX0IpOwo+ICsKPiAgIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShpbnRlbF9kc2lfZGV2aWNlcyk7IGkrKykgewo+ICAgCQlkc2kgPSAmaW50ZWxfZHNpX2Rldmlj ZXNbaV07Cj4gICAJCWludGVsX2RzaS0+ZGV2ID0gKmRzaTsKPiBAQCAtNzYyLDggKzc2OCw2IEBA IHZvaWQgaW50ZWxfZHNpX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAl9Cj4gICAK PiAgIAlpbnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0RTSTsKPiAtCWludGVsX2Vu Y29kZXItPmNydGNfbWFzayA9ICgxIDw8IDApOyAvKiBYWFggKi8KPiAtCj4gICAJaW50ZWxfZW5j b2Rlci0+Y2xvbmVhYmxlID0gMDsKPiAgIAlkcm1fY29ubmVjdG9yX2luaXQoZGV2LCBjb25uZWN0 b3IsICZpbnRlbF9kc2lfY29ubmVjdG9yX2Z1bmNzLAo+ICAgCQkJICAgRFJNX01PREVfQ09OTkVD VE9SX0RTSSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmgKPiBpbmRleCA2NTdlYjVjMWI5ZDgu Ljk3YTZmNjIxNzc0ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k c2kuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5oCj4gQEAgLTEyNyw2 ICsxMjcsMjIgQEAgc3RydWN0IGludGVsX2RzaSB7Cj4gICAJdTE2IHBhbmVsX3B3cl9jeWNsZV9k ZWxheTsKPiAgIH07Cj4gICAKPiArLyogWFhYOiBUcmFuc2l0aW9uYWwgYmVmb3JlIGR1YWwgcG9y dCBjb25maWd1cmF0aW9uICovCj4gK3N0YXRpYyBpbmxpbmUgZW51bSBwb3J0IGludGVsX2RzaV9w aXBlX3RvX3BvcnQoZW51bSBwaXBlIHBpcGUpCj4gK3sKPiArCWlmIChwaXBlID09IFBJUEVfQSkK PiArCQlyZXR1cm4gUE9SVF9BOwo+ICsJZWxzZSBpZiAocGlwZSA9PSBQSVBFX0IpCj4gKwkJcmV0 dXJuIFBPUlRfQzsKPiArCj4gKwlXQVJOKDEsICJEU0kgb24gcGlwZSAlYywgYXNzdW1pbmcgcG9y dCBDXG4iLCBwaXBlX25hbWUocGlwZSkpOwo+ICsJcmV0dXJuIFBPUlRfQzsKPiArfQo+ICsKPiAr I2RlZmluZSBmb3JfZWFjaF9kc2lfcG9ydChfX3BvcnQsIF9fcG9ydHNfbWFzaykgXAo+ICsJZm9y ICgoX19wb3J0KSA9IFBPUlRfQTsgKF9fcG9ydCkgPCBJOTE1X01BWF9QT1JUUzsgKF9fcG9ydCkr KykJXAo+ICsJCWlmICgoX19wb3J0c19tYXNrKSAmICgxIDw8IChfX3BvcnQpKSkKPiArCj4gICBz dGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9kc2kgKmVuY190b19pbnRlbF9kc2koc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyKQo+ICAgewo+ICAgCXJldHVybiBjb250YWluZXJfb2YoZW5jb2Rl ciwgc3RydWN0IGludGVsX2RzaSwgYmFzZS5iYXNlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHNpX2NtZC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHNpX2NtZC5jCj4gaW5kZXggZjQ3NjdmZDJlYmViLi4wMDRmYTkxOGNhMDMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX2NtZC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHNpX2NtZC5jCj4gQEAgLTU0LDE1ICs1NCwxNSBAQCBzdGF0aWMg dm9pZCBwcmludF9zdGF0KHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSkKPiAgIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmNydGMpOwo+IC0JZW51bSBwaXBl IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICsJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kc2lf cGlwZV90b19wb3J0KGludGVsX2NydGMtPnBpcGUpOwo+ICAgCXUzMiB2YWw7Cj4gICAKPiAtCXZh bCA9IEk5MTVfUkVBRChNSVBJX0lOVFJfU1RBVChwaXBlKSk7Cj4gKwl2YWwgPSBJOTE1X1JFQUQo TUlQSV9JTlRSX1NUQVQocG9ydCkpOwo+ICAgCj4gICAjZGVmaW5lIFNUQVRfQklUKHZhbCwgYml0 KSAodmFsKSAmIChiaXQpID8gIiAiICNiaXQgOiAiIgo+IC0JRFJNX0RFQlVHX0tNUygiTUlQSV9J TlRSX1NUQVQoJWQpID0gJTA4eCIKPiArCURSTV9ERUJVR19LTVMoIk1JUElfSU5UUl9TVEFUKCVj KSA9ICUwOHgiCj4gICAJCSAgICAgICIlcyVzJXMlcyVzJXMlcyVzJXMlcyVzJXMlcyVzJXMlcyVz JXMlcyVzJXMlcyVzJXMlcyVzJXMlcyVzJXMlcyVzIgo+IC0JCSAgICAgICJcbiIsIHBpcGUsIHZh bCwKPiArCQkgICAgICAiXG4iLCBwb3J0X25hbWUocG9ydCksIHZhbCwKPiAgIAkJICAgICAgU1RB VF9CSVQodmFsLCBURUFSSU5HX0VGRkVDVCksCj4gICAJCSAgICAgIFNUQVRfQklUKHZhbCwgU1BM X1BLVF9TRU5UX0lOVEVSUlVQVCksCj4gICAJCSAgICAgIFNUQVRfQklUKHZhbCwgR0VOX1JFQURf REFUQV9BVkFJTCksCj4gQEAgLTExMCwxNiArMTEwLDE2IEBAIHZvaWQgZHNpX2hzX21vZGVfZW5h YmxlKHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwgYm9vbCBlbmFibGUpCj4gICAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5jcnRjKTsKPiAtCWVudW0gcGlw ZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiArCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZHNp X3BpcGVfdG9fcG9ydChpbnRlbF9jcnRjLT5waXBlKTsKPiAgIAl1MzIgdGVtcDsKPiAgIAl1MzIg bWFzayA9IERCSV9GSUZPX0VNUFRZOwo+ICAgCj4gLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChN SVBJX0dFTl9GSUZPX1NUQVQocGlwZSkpICYgbWFzaykgPT0gbWFzaywgNTApKQo+ICsJaWYgKHdh aXRfZm9yKChJOTE1X1JFQUQoTUlQSV9HRU5fRklGT19TVEFUKHBvcnQpKSAmIG1hc2spID09IG1h c2ssIDUwKSkKPiAgIAkJRFJNX0VSUk9SKCJUaW1lb3V0IHdhaXRpbmcgZm9yIERCSSBGSUZPIGVt cHR5XG4iKTsKPiAgIAo+IC0JdGVtcCA9IEk5MTVfUkVBRChNSVBJX0hTX0xQX0RCSV9FTkFCTEUo cGlwZSkpOwo+ICsJdGVtcCA9IEk5MTVfUkVBRChNSVBJX0hTX0xQX0RCSV9FTkFCTEUocG9ydCkp Owo+ICAgCXRlbXAgJj0gREJJX0hTX0xQX01PREVfTUFTSzsKPiAtCUk5MTVfV1JJVEUoTUlQSV9I U19MUF9EQklfRU5BQkxFKHBpcGUpLCBlbmFibGUgPyBEQklfSFNfTU9ERSA6IERCSV9MUF9NT0RF KTsKPiArCUk5MTVfV1JJVEUoTUlQSV9IU19MUF9EQklfRU5BQkxFKHBvcnQpLCBlbmFibGUgPyBE QklfSFNfTU9ERSA6IERCSV9MUF9NT0RFKTsKPiAgIAo+ICAgCWludGVsX2RzaS0+aHMgPSBlbmFi bGU7Cj4gICB9Cj4gQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgaW50IGRzaV92Y19zZW5kX3No b3J0KHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwgaW50IGNoYW5uZWwsCj4gICAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5jcnRjKTsKPiAtCWVudW0gcGlw ZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiArCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZHNp X3BpcGVfdG9fcG9ydChpbnRlbF9jcnRjLT5waXBlKTsKPiAgIAl1MzIgY3RybF9yZWc7Cj4gICAJ dTMyIGN0cmw7Cj4gICAJdTMyIG1hc2s7Cj4gQEAgLTE0MCwxNCArMTQwLDE0IEBAIHN0YXRpYyBp bnQgZHNpX3ZjX3NlbmRfc2hvcnQoc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpLCBpbnQgY2hh bm5lbCwKPiAgIAkJICAgICAgY2hhbm5lbCwgZGF0YV90eXBlLCBkYXRhKTsKPiAgIAo+ICAgCWlm IChpbnRlbF9kc2ktPmhzKSB7Cj4gLQkJY3RybF9yZWcgPSBNSVBJX0hTX0dFTl9DVFJMKHBpcGUp Owo+ICsJCWN0cmxfcmVnID0gTUlQSV9IU19HRU5fQ1RSTChwb3J0KTsKPiAgIAkJbWFzayA9IEhT X0NUUkxfRklGT19GVUxMOwo+ICAgCX0gZWxzZSB7Cj4gLQkJY3RybF9yZWcgPSBNSVBJX0xQX0dF Tl9DVFJMKHBpcGUpOwo+ICsJCWN0cmxfcmVnID0gTUlQSV9MUF9HRU5fQ1RSTChwb3J0KTsKPiAg IAkJbWFzayA9IExQX0NUUkxfRklGT19GVUxMOwo+ICAgCX0KPiAgIAo+IC0JaWYgKHdhaXRfZm9y KChJOTE1X1JFQUQoTUlQSV9HRU5fRklGT19TVEFUKHBpcGUpKSAmIG1hc2spID09IDAsIDUwKSkg ewo+ICsJaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoTUlQSV9HRU5fRklGT19TVEFUKHBvcnQpKSAm IG1hc2spID09IDAsIDUwKSkgewo+ICAgCQlEUk1fRVJST1IoIlRpbWVvdXQgd2FpdGluZyBmb3Ig SFMvTFAgQ1RSTCBGSUZPICFmdWxsXG4iKTsKPiAgIAkJcHJpbnRfc3RhdChpbnRlbF9kc2kpOwo+ ICAgCX0KPiBAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyBpbnQgZHNpX3ZjX3NlbmRfbG9uZyhz dHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIGludCBjaGFubmVsLAo+ICAgCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+Y3J0Yyk7Cj4gLQllbnVtIHBpcGUgcGlw ZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gKwllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RzaV9waXBl X3RvX3BvcnQoaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gICAJdTMyIGRhdGFfcmVnOwo+ICAgCWludCBp LCBqLCBuOwo+ICAgCXUzMiBtYXNrOwo+IEBAIC0xODIsMTQgKzE4MiwxNCBAQCBzdGF0aWMgaW50 IGRzaV92Y19zZW5kX2xvbmcoc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpLCBpbnQgY2hhbm5l bCwKPiAgIAkJICAgICAgY2hhbm5lbCwgZGF0YV90eXBlLCBsZW4pOwo+ICAgCj4gICAJaWYgKGlu dGVsX2RzaS0+aHMpIHsKPiAtCQlkYXRhX3JlZyA9IE1JUElfSFNfR0VOX0RBVEEocGlwZSk7Cj4g KwkJZGF0YV9yZWcgPSBNSVBJX0hTX0dFTl9EQVRBKHBvcnQpOwo+ICAgCQltYXNrID0gSFNfREFU QV9GSUZPX0ZVTEw7Cj4gICAJfSBlbHNlIHsKPiAtCQlkYXRhX3JlZyA9IE1JUElfTFBfR0VOX0RB VEEocGlwZSk7Cj4gKwkJZGF0YV9yZWcgPSBNSVBJX0xQX0dFTl9EQVRBKHBvcnQpOwo+ICAgCQlt YXNrID0gTFBfREFUQV9GSUZPX0ZVTEw7Cj4gICAJfQo+ICAgCj4gLQlpZiAod2FpdF9mb3IoKEk5 MTVfUkVBRChNSVBJX0dFTl9GSUZPX1NUQVQocGlwZSkpICYgbWFzaykgPT0gMCwgNTApKQo+ICsJ aWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoTUlQSV9HRU5fRklGT19TVEFUKHBvcnQpKSAmIG1hc2sp ID09IDAsIDUwKSkKPiAgIAkJRFJNX0VSUk9SKCJUaW1lb3V0IHdhaXRpbmcgZm9yIEhTL0xQIERB VEEgRklGTyAhZnVsbFxuIik7Cj4gICAKPiAgIAlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IG4p IHsKPiBAQCAtMjkyLDE0ICsyOTIsMTQgQEAgc3RhdGljIGludCBkc2lfcmVhZF9kYXRhX3JldHVy bihzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksCj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGVuY29kZXItPmRldjsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhlbmNvZGVyLT5jcnRjKTsKPiAtCWVudW0gcGlwZSBwaXBlID0gaW50ZWxf Y3J0Yy0+cGlwZTsKPiArCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZHNpX3BpcGVfdG9fcG9ydChp bnRlbF9jcnRjLT5waXBlKTsKPiAgIAlpbnQgaSwgbGVuID0gMDsKPiAgIAl1MzIgZGF0YV9yZWcs IHZhbDsKPiAgIAo+ICAgCWlmIChpbnRlbF9kc2ktPmhzKSB7Cj4gLQkJZGF0YV9yZWcgPSBNSVBJ X0hTX0dFTl9EQVRBKHBpcGUpOwo+ICsJCWRhdGFfcmVnID0gTUlQSV9IU19HRU5fREFUQShwb3J0 KTsKPiAgIAl9IGVsc2Ugewo+IC0JCWRhdGFfcmVnID0gTUlQSV9MUF9HRU5fREFUQShwaXBlKTsK PiArCQlkYXRhX3JlZyA9IE1JUElfTFBfR0VOX0RBVEEocG9ydCk7Cj4gICAJfQo+ICAgCj4gICAJ d2hpbGUgKGxlbiA8IGJ1Zmxlbikgewo+IEBAIC0zMTgsNyArMzE4LDcgQEAgaW50IGRzaV92Y19k Y3NfcmVhZChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIGludCBjaGFubmVsLCB1OCBkY3Nf Y21kLAo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7Cj4gICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+Y3J0 Yyk7Cj4gLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gKwllbnVtIHBvcnQg cG9ydCA9IGludGVsX2RzaV9waXBlX3RvX3BvcnQoaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gICAJdTMy IG1hc2s7Cj4gICAJaW50IHJldDsKPiAgIAo+IEBAIC0zMjcsMTQgKzMyNywxNCBAQCBpbnQgZHNp X3ZjX2Rjc19yZWFkKHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwgaW50IGNoYW5uZWwsIHU4 IGRjc19jbWQsCj4gICAJICogbG9uZ2VyIHRoYW4gTUlQSV9NQVhfUkVUVVJOX1BLVF9TSVpFCj4g ICAJICovCj4gICAKPiAtCUk5MTVfV1JJVEUoTUlQSV9JTlRSX1NUQVQocGlwZSksIEdFTl9SRUFE X0RBVEFfQVZBSUwpOwo+ICsJSTkxNV9XUklURShNSVBJX0lOVFJfU1RBVChwb3J0KSwgR0VOX1JF QURfREFUQV9BVkFJTCk7Cj4gICAKPiAgIAlyZXQgPSBkc2lfdmNfZGNzX3NlbmRfcmVhZF9yZXF1 ZXN0KGludGVsX2RzaSwgY2hhbm5lbCwgZGNzX2NtZCk7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0 dXJuIHJldDsKPiAgIAo+ICAgCW1hc2sgPSBHRU5fUkVBRF9EQVRBX0FWQUlMOwo+IC0JaWYgKHdh aXRfZm9yKChJOTE1X1JFQUQoTUlQSV9JTlRSX1NUQVQocGlwZSkpICYgbWFzaykgPT0gbWFzaywg NTApKQo+ICsJaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoTUlQSV9JTlRSX1NUQVQocG9ydCkpICYg bWFzaykgPT0gbWFzaywgNTApKQo+ICAgCQlEUk1fRVJST1IoIlRpbWVvdXQgd2FpdGluZyBmb3Ig cmVhZCBkYXRhLlxuIik7Cj4gICAKPiAgIAlyZXQgPSBkc2lfcmVhZF9kYXRhX3JldHVybihpbnRl bF9kc2ksIGJ1ZiwgYnVmbGVuKTsKPiBAQCAtMzU0LDcgKzM1NCw3IEBAIGludCBkc2lfdmNfZ2Vu ZXJpY19yZWFkKHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwgaW50IGNoYW5uZWwsCj4gICAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsKPiAgIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5jcnRjKTsKPiAtCWVu dW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiArCWVudW0gcG9ydCBwb3J0ID0gaW50 ZWxfZHNpX3BpcGVfdG9fcG9ydChpbnRlbF9jcnRjLT5waXBlKTsKPiAgIAl1MzIgbWFzazsKPiAg IAlpbnQgcmV0Owo+ICAgCj4gQEAgLTM2Myw3ICszNjMsNyBAQCBpbnQgZHNpX3ZjX2dlbmVyaWNf cmVhZChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIGludCBjaGFubmVsLAo+ICAgCSAqIGxv bmdlciB0aGFuIE1JUElfTUFYX1JFVFVSTl9QS1RfU0laRQo+ICAgCSAqLwo+ICAgCj4gLQlJOTE1 X1dSSVRFKE1JUElfSU5UUl9TVEFUKHBpcGUpLCBHRU5fUkVBRF9EQVRBX0FWQUlMKTsKPiArCUk5 MTVfV1JJVEUoTUlQSV9JTlRSX1NUQVQocG9ydCksIEdFTl9SRUFEX0RBVEFfQVZBSUwpOwo+ICAg Cj4gICAJcmV0ID0gZHNpX3ZjX2dlbmVyaWNfc2VuZF9yZWFkX3JlcXVlc3QoaW50ZWxfZHNpLCBj aGFubmVsLCByZXFkYXRhLAo+ICAgCQkJCQkgICAgICAgcmVxbGVuKTsKPiBAQCAtMzcxLDcgKzM3 MSw3IEBAIGludCBkc2lfdmNfZ2VuZXJpY19yZWFkKHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2Rz aSwgaW50IGNoYW5uZWwsCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiAgIAltYXNrID0gR0VOX1JF QURfREFUQV9BVkFJTDsKPiAtCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKE1JUElfSU5UUl9TVEFU KHBpcGUpKSAmIG1hc2spID09IG1hc2ssIDUwKSkKPiArCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFE KE1JUElfSU5UUl9TVEFUKHBvcnQpKSAmIG1hc2spID09IG1hc2ssIDUwKSkKPiAgIAkJRFJNX0VS Uk9SKCJUaW1lb3V0IHdhaXRpbmcgZm9yIHJlYWQgZGF0YS5cbiIpOwo+ICAgCj4gICAJcmV0ID0g ZHNpX3JlYWRfZGF0YV9yZXR1cm4oaW50ZWxfZHNpLCBidWYsIGJ1Zmxlbik7Cj4gQEAgLTM5NSw3 ICszOTUsNyBAQCBpbnQgZHBpX3NlbmRfY21kKHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwg dTMyIGNtZCwgYm9vbCBocykKPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ ZGV2Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGVuY29kZXItPmNydGMpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ ICsJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kc2lfcGlwZV90b19wb3J0KGludGVsX2NydGMtPnBp cGUpOwo+ICAgCXUzMiBtYXNrOwo+ICAgCj4gICAJLyogWFhYOiBwaXBlLCBocyAqLwo+IEBAIC00 MDUsMTYgKzQwNSwxNiBAQCBpbnQgZHBpX3NlbmRfY21kKHN0cnVjdCBpbnRlbF9kc2kgKmludGVs X2RzaSwgdTMyIGNtZCwgYm9vbCBocykKPiAgIAkJY21kIHw9IERQSV9MUF9NT0RFOwo+ICAgCj4g ICAJLyogY2xlYXIgYml0ICovCj4gLQlJOTE1X1dSSVRFKE1JUElfSU5UUl9TVEFUKHBpcGUpLCBT UExfUEtUX1NFTlRfSU5URVJSVVBUKTsKPiArCUk5MTVfV1JJVEUoTUlQSV9JTlRSX1NUQVQocG9y dCksIFNQTF9QS1RfU0VOVF9JTlRFUlJVUFQpOwo+ICAgCj4gICAJLyogWFhYOiBvbGQgY29kZSBz a2lwcyB3cml0ZSBpZiBjb250cm9sIHVuY2hhbmdlZCAqLwo+IC0JaWYgKGNtZCA9PSBJOTE1X1JF QUQoTUlQSV9EUElfQ09OVFJPTChwaXBlKSkpCj4gKwlpZiAoY21kID09IEk5MTVfUkVBRChNSVBJ X0RQSV9DT05UUk9MKHBvcnQpKSkKPiAgIAkJRFJNX0VSUk9SKCJTYW1lIHNwZWNpYWwgcGFja2V0 ICUwMnggdHdpY2UgaW4gYSByb3cuXG4iLCBjbWQpOwo+ICAgCj4gLQlJOTE1X1dSSVRFKE1JUElf RFBJX0NPTlRST0wocGlwZSksIGNtZCk7Cj4gKwlJOTE1X1dSSVRFKE1JUElfRFBJX0NPTlRST0wo cG9ydCksIGNtZCk7Cj4gICAKPiAgIAltYXNrID0gU1BMX1BLVF9TRU5UX0lOVEVSUlVQVDsKPiAt CWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKE1JUElfSU5UUl9TVEFUKHBpcGUpKSAmIG1hc2spID09 IG1hc2ssIDEwMCkpCj4gKwlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChNSVBJX0lOVFJfU1RBVChw b3J0KSkgJiBtYXNrKSA9PSBtYXNrLCAxMDApKQo+ICAgCQlEUk1fRVJST1IoIlZpZGVvIG1vZGUg Y29tbWFuZCAweCUwOHggc2VuZCBmYWlsZWQuXG4iLCBjbWQpOwo+ICAgCj4gICAJcmV0dXJuIDA7 Cj4gQEAgLTQyNiwxMiArNDI2LDEyIEBAIHZvaWQgd2FpdF9mb3JfZHNpX2ZpZm9fZW1wdHkoc3Ry dWN0IGludGVsX2RzaSAqaW50ZWxfZHNpKQo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBl bmNvZGVyLT5kZXY7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiAgIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoZW5jb2Rlci0+Y3J0Yyk7Cj4gLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMt PnBpcGU7Cj4gKwllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RzaV9waXBlX3RvX3BvcnQoaW50ZWxf Y3J0Yy0+cGlwZSk7Cj4gICAJdTMyIG1hc2s7Cj4gICAKPiAgIAltYXNrID0gTFBfQ1RSTF9GSUZP X0VNUFRZIHwgSFNfQ1RSTF9GSUZPX0VNUFRZIHwKPiAgIAkJTFBfREFUQV9GSUZPX0VNUFRZIHwg SFNfREFUQV9GSUZPX0VNUFRZOwo+ICAgCj4gLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChNSVBJ X0dFTl9GSUZPX1NUQVQocGlwZSkpICYgbWFzaykgPT0gbWFzaywgMTAwKSkKPiArCWlmICh3YWl0 X2ZvcigoSTkxNV9SRUFEKE1JUElfR0VOX0ZJRk9fU1RBVChwb3J0KSkgJiBtYXNrKSA9PSBtYXNr LCAxMDApKQo+ICAgCQlEUk1fRVJST1IoIkRQSSBGSUZPcyBhcmUgbm90IGVtcHR5XG4iKTsKPiAg IH0KClRoaXMgcGF0Y2ggaGFzIHNvbWUgc3R5bGUgaXNzdWVzLiAgUGxlYXNlIGFkZHJlc3MgdGhl bS4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==