From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <5a53e150.89076b0a.ac184.df8d@mx.google.com> Date: Mon, 08 Jan 2018 16:23:26 -0500 From: Greg Gallagher In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 Subject: Re: [Xenomai] [PATCH] Fix up the imx uart driver so it now compiles with new kernels. List-Id: Discussions about the Xenomai project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Michael Welling Cc: "xenomai@xenomai.org" CkhhZCBpdCBjb3JyZWN0IHRoZSBmaXJzdCB0aW1lLCBJJ2xsIGZpeCB0aGF0IHVwLgoKVGhhbmtz CgpHcmVnCgrCoCBPcmlnaW5hbCBNZXNzYWdlIMKgCkZyb206IG13ZWxsaW5nQGllZWUub3JnClNl bnQ6IEphbnVhcnkgOCwgMjAxOCA0OjE2IFBNClRvOiBncmVnQGVtYmVkZGVkZ3JlZy5jb20KQ2M6 IHhlbm9tYWlAeGVub21haS5vcmcKU3ViamVjdDogUmU6IFtQQVRDSF0gRml4IHVwIHRoZSBpbXgg dWFydCBkcml2ZXIgc28gaXQgbm93IGNvbXBpbGVzIHdpdGggbmV3IGtlcm5lbHMuCgpPbiBNb24s IEphbiA4LCAyMDE4IGF0IDM6MDkgUE0sIEdyZWcgR2FsbGFnaGVyIDxncmVnQGVtYmVkZGVkZ3Jl Zy5jb20+IHdyb3RlOgo+Cj4gRnJvbTogTWljaGFlbCBXZWxsaW5nIDxtd2VsbGluZ0BpZWVlLm9y Zz4KPgo+IFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gb25lIHRoYXQgd2FzIHN1Ym1pdHRlZCBieSBN aWNoYWVsIFdlbGxpbmcgYmFjayBpbiBGZWIKPiAyMDE2IGJ1dCBhIGZvcm1hbCBwYXRjaCB3YXMg bmV2ZXIgc3VibWl0dGVkLsKgIFRoZSBvcmlnaW5hbCB0aHJlYWQgdGhhdCB0aGlzCj4gcGF0Y2gg d2FzIGRlcml2ZWQgZnJvbSBpcyBsb2NhdGVkIGhlcmUgaHR0cHM6Ly94ZW5vbWFpLm9yZy9waXBl cm1haWwveGVub21haS8yMDE2LUZlYnJ1YXJ5LzAzNTkyNC5odG1sCgoKSWYgeW91IGxvb2sgY2xv c2VseSBpdCB3YXMgYSBwYXRjaCBmcm9tIFdvbGZnYW5nIE5ldGJhbC4KCj4KPgo+Cj4KPiBGaXhl ZCB1cCBrZXJuZWwgc3R5bGUgZXJyb3JzIGFuZCBJIGFkZGVkIGEgY291cGxlIHNtYWxsIGNoYW5n ZXMgYW5kIHRlc3RlZCBvbiBhIGlteDdkIGJvYXJkLgo+IE9uZSBxdWljayBub3RlLCB0aGUgSU1Y N0QgZGVmaW5lIG1heSBub3QgcmVhbGx5IGJlIG5lZWRlZCBzaW5jZSBtb3N0IGlteDcgdWFydHMg bG9vayB0byBiZQo+IGNvbXBhdGlibGUgd2l0aCBpbXg2Lgo+Cj4gU2lnbmVkLW9mZi1ieTogR3Jl ZyBHYWxsYWdoZXIgPGdyZWdAZW1iZWRkZWRncmVnLmNvbT4KPiAtLS0KPsKgIGtlcm5lbC9kcml2 ZXJzL3NlcmlhbC9ydF9pbXhfdWFydC5jIHwgMzM3ICsrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLQo+wqAgMSBmaWxlIGNoYW5nZWQsIDIyOSBpbnNlcnRpb25zKCspLCAxMDggZGVs ZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEva2VybmVsL2RyaXZlcnMvc2VyaWFsL3J0X2lteF91 YXJ0LmMgYi9rZXJuZWwvZHJpdmVycy9zZXJpYWwvcnRfaW14X3VhcnQuYwo+IGluZGV4IDA5MmNl Y2MuLjJjOTM3ODkgMTAwNjQ0Cj4gLS0tIGEva2VybmVsL2RyaXZlcnMvc2VyaWFsL3J0X2lteF91 YXJ0LmMKPiArKysgYi9rZXJuZWwvZHJpdmVycy9zZXJpYWwvcnRfaW14X3VhcnQuYwo+IEBAIC0z Niw4ICszNiwxMCBAQAo+wqAgI2luY2x1ZGUgPGFzbS9pcnEuaD4KPsKgICNpbmNsdWRlIDxhc20v ZG1hLmg+Cj7CoCAjaW5jbHVkZSA8YXNtL2RpdjY0Lmg+Cj4gLSNpbmNsdWRlIDxtYWNoL2hhcmR3 YXJlLmg+Cj4gLSNpbmNsdWRlIDxtYWNoL2lteC11YXJ0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9w bGF0Zm9ybV9kYXRhL3NlcmlhbC1pbXguaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4KPgo+ wqAgI2luY2x1ZGUgPHJ0ZG0vc2VyaWFsLmg+Cj7CoCAjaW5jbHVkZSA8cnRkbS9kcml2ZXIuaD4K PiBAQCAtNjUsNyArNjcsMTAgQEAgTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+wqAgI2RlZmluZSBV Qk1SwqDCoCAweGE4IC8qIEJSTSBNb2R1bGF0b3IgUmVnaXN0ZXIgKi8KPsKgICNkZWZpbmUgVUJS Q8KgwqAgMHhhYyAvKiBCYXVkIFJhdGUgQ291bnQgUmVnaXN0ZXIgKi8KPsKgICNkZWZpbmUgTVgy X09ORU1TIDB4YjAgLyogT25lIE1pbGxpc2Vjb25kIHJlZ2lzdGVyICovCj4gLSNkZWZpbmUgVVRT IChjcHVfaXNfbXgxKCkgPyAweGQwIDogMHhiNCkgLyogVUFSVCBUZXN0IFJlZ2lzdGVyICovCj4g KyNkZWZpbmUgSU1YMV9VVFMgMHhkMCAvKiBVQVJUIFRlc3QgUmVnaXN0ZXIgb24gaS5teDEgKi8K PiArI2RlZmluZSBJTVgyMV9VVFMgMHhiNCAvKiBVQVJUIFRlc3QgUmVnaXN0ZXIgb24gYWxsIG90 aGVyIGkubXgqLwo+ICsKPiArCj4KPsKgIC8qIFVBUlQgQ29udHJvbCBSZWdpc3RlciBCaXQgRmll bGRzLiovCj7CoCAjZGVmaW5lIFVSWERfQ0hBUlJEWcKgwqAgKDE8PDE1KQo+IEBAIC0xNDMsNyAr MTQ4LDcgQEAgTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+wqAgI2RlZmluZSBVU1IxX0RUUkTCoMKg wqDCoMKgICgxPDw3KcKgIC8qIERUUiBEZWx0YSAqLwo+wqAgI2RlZmluZSBVU1IxX1JYRFPCoMKg wqDCoMKgICgxPDw2KcKgIC8qIFJlY2VpdmVyIGlkbGUgaW50ZXJydXB0IGZsYWcgKi8KPsKgICNk ZWZpbmUgVVNSMV9BSVJJTlTCoMKgwqAgKDE8PDUpwqAgLyogQXN5bmMgSVIgd2FrZSBpbnRlcnJ1 cHQgZmxhZyAqLwo+IC0jZGVmaW5lIFVTUjFfQVdBS0XCoMKgwqDCoCAoMTw8NCnCoCAvKiBBeXNu YyB3YWtlIGludGVycnVwdCBmbGFnICovCj4gKyNkZWZpbmUgVVNSMV9BV0FLRcKgwqDCoMKgICgx PDw0KcKgIC8qIEFzeW5jIHdha2UgaW50ZXJydXB0IGZsYWcgKi8KPsKgICNkZWZpbmUgVVNSMl9B REVUwqDCoMKgwqDCoCAoMTw8MTUpIC8qIEF1dG8gYmF1ZCByYXRlIGRldGVjdCBjb21wbGV0ZSAq Lwo+wqAgI2RlZmluZSBVU1IyX1RYRkXCoMKgwqDCoMKgICgxPDwxNCkgLyogVHJhbnNtaXQgYnVm ZmVyIEZJRk8gZW1wdHkgKi8KPsKgICNkZWZpbmUgVVNSMl9EVFJGwqDCoMKgwqDCoCAoMTw8MTMp IC8qIERUUiBlZGdlIGludGVycnVwdCBmbGFnICovCj4gQEAgLTE4OSw5ICsxOTQsMjUgQEAgTU9E VUxFX0xJQ0VOU0UoIkdQTCIpOwo+wqAgI2RlZmluZSBSVF9JTVhfVUFSVF9NQVjCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgNQo+Cj7CoCBzdGF0aWMgaW50IHR4X2ZpZm9bUlRfSU1YX1VB UlRfTUFYXTsKPiAtY29tcGF0X21vZHVsZV9wYXJhbV9hcnJheSh0eF9maWZvLCBpbnQsIFJUX0lN WF9VQVJUX01BWCwgMDQwMCk7Cj4gK21vZHVsZV9wYXJhbV9hcnJheSh0eF9maWZvLCBpbnQsIE5V TEwsIDA0MDApOwo+wqAgTU9EVUxFX1BBUk1fREVTQyh0eF9maWZvLCAiVHJhbnNtaXR0ZXIgRklG TyBzaXplIik7Cj4KPiArLyogaS5NWDIxIHR5cGUgdWFydCBydW5zIG9uIGFsbCBpLm14IGV4Y2Vw dCBpLk1YMSBhbmQgaS5NWDZxICovCj4gK2VudW0gaW14X3VhcnRfdHlwZSB7Cj4gK8KgwqDCoMKg wqDCoCBJTVgxX1VBUlQsCj4gK8KgwqDCoMKgwqDCoCBJTVgyMV9VQVJULAo+ICvCoMKgwqDCoMKg wqAgSU1YNTNfVUFSVCwKPiArwqDCoMKgwqDCoMKgIElNWDZRX1VBUlQsCj4gK8KgwqDCoMKgwqDC oCBJTVg3RF9VQVJULAo+ICt9Owo+ICsKPiArLyogZGV2aWNlIHR5cGUgZGVwZW5kZW50IHN0dWZm ICovCj4gK3N0cnVjdCBpbXhfdWFydF9kYXRhIHsKPiArwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGlu dCB1dHNfcmVnOwo+ICvCoMKgwqDCoMKgwqAgZW51bSBpbXhfdWFydF90eXBlIGRldnR5cGU7Cj4g K307Cj4gKwo+ICsKPsKgIHN0cnVjdCBydF9pbXhfdWFydF9wb3J0IHsKPsKgwqDCoMKgwqDCoMKg wqAgdW5zaWduZWQgY2hhciBfX2lvbWVtICptZW1iYXNlOyAvKiByZWFkL3dyaXRlW2J3bF0gKi8K PsKgwqDCoMKgwqDCoMKgwqAgcmVzb3VyY2Vfc2l6ZV90IG1hcGJhc2U7wqDCoMKgwqDCoMKgwqAg LyogZm9yIGlvcmVtYXAgKi8KPiBAQCAtMjAwLDExICsyMjEsNzkgQEAgc3RydWN0IHJ0X2lteF91 YXJ0X3BvcnQgewo+wqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgaGF2ZV9ydHNjdHM7Cj7C oMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCB1c2VfZGNlZHRlOwo+wqDCoMKgwqDCoMKgwqDC oCB1bnNpZ25lZCBpbnQgdXNlX2h3ZmxvdzsKPiAtwqDCoMKgwqDCoMKgIHN0cnVjdCBjbGsgKmNs azvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogY2xvY2sgaWQgZm9yIFVBUlQgY2xv Y2sgKi8KPiArwqDCoMKgwqDCoMKgIHN0cnVjdCBjbGsgKmNsa19pcGc7wqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAvKiBjbG9jayBpZCBmb3IgVUFSVCBjbG9jayAqLwo+ICvCoMKgwqDCoMKgwqAgc3Ry dWN0IGNsayAqY2xrX3BlcjvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGNsb2NrIGlkIGZvciBV QVJUIGNsb2NrICovCj4gK8KgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgaW14X3VhcnRfZGF0YSAq ZGV2ZGF0YTsKPsKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IHVhcnRjbGs7wqDCoMKgwqDC oMKgwqDCoMKgwqAgLyogYmFzZSB1YXJ0IGNsb2NrICovCj7CoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCBydGRtX2RldmljZSBydGRtX2RldjvCoMKgwqAgLyogUlRETSBkZXZpY2Ugc3RydWN0dXJlICov Cj7CoCB9Owo+Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGlteF91YXJ0X2RhdGEgaW14X3VhcnRfZGV2 ZGF0YVtdID0gewo+ICvCoMKgwqDCoMKgwqAgW0lNWDFfVUFSVF0gPSB7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLnV0c19yZWcgPSBJTVgxX1VUUywKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAuZGV2dHlwZSA9IElNWDFfVUFSVCwKPiArwqDCoMKgwqDCoMKgIH0sCj4g K8KgwqDCoMKgwqDCoCBbSU1YMjFfVUFSVF0gPSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLnV0c19yZWcgPSBJTVgyMV9VVFMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLmRldnR5cGUgPSBJTVgyMV9VQVJULAo+ICvCoMKgwqDCoMKgwqAgfSwKPiArwqDCoMKgwqDC oMKgIFtJTVg1M19VQVJUXSA9IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAudXRz X3JlZyA9IElNWDIxX1VUUywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuZGV2dHlw ZSA9IElNWDUzX1VBUlQsCj4gK8KgwqDCoMKgwqDCoCB9LAo+ICvCoMKgwqDCoMKgwqAgW0lNWDZR X1VBUlRdID0gewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC51dHNfcmVnID0gSU1Y MjFfVVRTLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5kZXZ0eXBlID0gSU1YNlFf VUFSVCwKPiArwqDCoMKgwqDCoMKgIH0sCj4gK8KgwqDCoMKgwqDCoCBbSU1YN0RfVUFSVF0gPSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLnV0c19yZWcgPSBJTVgyMV9VVFMsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmRldnR5cGUgPSBJTVg3RF9VQVJULAo+ICvC oMKgwqDCoMKgwqAgfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlX2lkIHJ0X2lteF91YXJ0X2lkX3RhYmxlW10gPSB7Cj4gK8KgwqDCoMKgwqDCoCB7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLm5hbWUgPSAiaW14MS11YXJ0IiwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAoa2VybmVsX3Vsb25nX3Qp ICZpbXhfdWFydF9kZXZkYXRhW0lNWDFfVUFSVF0sCj4gK8KgwqDCoMKgwqDCoCB9LCB7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLm5hbWUgPSAiaW14MjEtdWFydCIsCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmRyaXZlcl9kYXRhID0gKGtlcm5lbF91bG9uZ190KSAm aW14X3VhcnRfZGV2ZGF0YVtJTVgyMV9VQVJUXSwKPiArwqDCoMKgwqDCoMKgIH0sIHsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAubmFtZSA9ICJpbXg1My11YXJ0IiwKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuZHJpdmVyX2RhdGEgPSAoa2VybmVsX3Vsb25nX3QpICZp bXhfdWFydF9kZXZkYXRhW0lNWDUzX1VBUlRdLAo+ICvCoMKgwqDCoMKgwqAgfSwgewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5uYW1lID0gImlteDZxLXVhcnQiLAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5kcml2ZXJfZGF0YSA9IChrZXJuZWxfdWxvbmdfdCkgJmlt eF91YXJ0X2RldmRhdGFbSU1YNlFfVUFSVF0sCj4gK8KgwqDCoMKgwqDCoCB9LCB7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLm5hbWUgPSAiaW14LXVhcnQiLAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC5kcml2ZXJfZGF0YSA9IChrZXJuZWxfdWxvbmdfdCkgJmlteF91 YXJ0X2RldmRhdGFbSU1YN0RfVUFSVF0sCj4gK8KgwqDCoMKgwqDCoCB9LCB7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogc2VudGluZWwgKi8KPiArwqDCoMKgwqDCoMKgIH0KPiAr fTsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShwbGF0Zm9ybSwgcnRfaW14X3VhcnRfaWRfdGFibGUp Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnRfaW14X3VhcnRfZHRf aWRzW10gPSB7Cj4gK8KgwqDCoMKgwqDCoCB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLmNvbXBhdGlibGUgPSAiZnNsLGlteDdkLXVhcnQiLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC5kYXRhID0gJmlteF91YXJ0X2RldmRhdGFbSU1YN0RfVUFSVF0sIH0sCj4gK8Kg wqDCoMKgwqDCoCB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmNvbXBhdGlibGUg PSAiZnNsLGlteDZxLXVhcnQiLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5kYXRh ID0gJmlteF91YXJ0X2RldmRhdGFbSU1YNlFfVUFSVF0sIH0sCj4gK8KgwqDCoMKgwqDCoCB7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmNvbXBhdGlibGUgPSAiZnNsLGlteDUzLXVh cnQiLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5kYXRhID0gJmlteF91YXJ0X2Rl dmRhdGFbSU1YNTNfVUFSVF0sIH0sCj4gK8KgwqDCoMKgwqDCoCB7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLmNvbXBhdGlibGUgPSAiZnNsLGlteDEtdWFydCIsCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLmRhdGEgPSAmaW14X3VhcnRfZGV2ZGF0YVtJTVgxX1VBUlRd LCB9LAo+ICvCoMKgwqDCoMKgwqAgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5j b21wYXRpYmxlID0gImZzbCxpbXgyMS11YXJ0IiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAuZGF0YSA9ICZpbXhfdWFydF9kZXZkYXRhW0lNWDIxX1VBUlRdLCB9LAo+ICvCoMKgwqDC oMKgwqAgeyAvKiBzZW50aW5lbCAqLyB9Cj4gK307Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2Ys IHJ0X2lteF91YXJ0X2R0X2lkcyk7Cj4gKwo+wqAgc3RydWN0IHJ0X2lteF91YXJ0X2N0eCB7Cj7C oMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBydHNlcl9jb25maWcgY29uZmlnO8KgwqDCoMKgIC8qIGN1 cnJlbnQgZGV2aWNlIGNvbmZpZ3VyYXRpb24gKi8KPgo+IEBAIC0yMTcsNiArMzA2LDcgQEAgc3Ry dWN0IHJ0X2lteF91YXJ0X2N0eCB7Cj7CoMKgwqDCoMKgwqDCoMKgIGludCBpbl9ud2FpdDvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogYnl0ZXMgdGhlIHVzZXIgd2FpdHMg Zm9yICovCj7CoMKgwqDCoMKgwqDCoMKgIHJ0ZG1fZXZlbnRfdCBpbl9ldmVudDvCoMKgwqDCoMKg wqDCoMKgwqAgLyogcmFpc2VkIHRvIHVuYmxvY2sgcmVhZGVyICovCj7CoMKgwqDCoMKgwqDCoMKg IGNoYXIgaW5fYnVmW0lOX0JVRkZFUl9TSVpFXTvCoMKgwqAgLyogUlggcmluZyBidWZmZXIgKi8K PiArCj7CoMKgwqDCoMKgwqDCoMKgIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgaW5fbG9jazsgLyog c2luZ2xlLXJlYWRlciBsb2NrICovCj7CoMKgwqDCoMKgwqDCoMKgIHVpbnQ2NF90ICppbl9oaXN0 b3J5O8KgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFJYIHRpbWVzdGFtcCBidWZmZXIgKi8KPgo+IEBA IC0zNDQsNiArNDM0LDcgQEAgc3RhdGljIGludCBydF9pbXhfdWFydF9yeF9jaGFycyhzdHJ1Y3Qg cnRfaW14X3VhcnRfY3R4ICpjdHgsCj7CoCBzdGF0aWMgdm9pZCBydF9pbXhfdWFydF90eF9jaGFy cyhzdHJ1Y3QgcnRfaW14X3VhcnRfY3R4ICpjdHgpCj7CoCB7Cj7CoMKgwqDCoMKgwqDCoMKgIGlu dCBjaCwgY291bnQ7Cj4gK8KgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgdXRzX3JlZyA9IGN0eC0+ cG9ydC0+ZGV2ZGF0YS0+dXRzX3JlZzsKPgo+wqDCoMKgwqDCoMKgwqDCoCBmb3IgKGNvdW50ID0g Y3R4LT5wb3J0LT50eF9maWZvOwo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGNvdW50ID4g MCkgJiYgKGN0eC0+b3V0X25wZW5kID4gMCk7Cj4gQEAgLTM1Miw3ICs0NDMsNyBAQCBzdGF0aWMg dm9pZCBydF9pbXhfdWFydF90eF9jaGFycyhzdHJ1Y3QgcnRfaW14X3VhcnRfY3R4ICpjdHgpCj7C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3cml0ZWwoY2gsIGN0eC0+cG9ydC0+bWVt YmFzZSArIFVSVFgwKTsKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGN0eC0+b3V0 X2hlYWQgJj0gKE9VVF9CVUZGRVJfU0laRSAtIDEpOwo+Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaWYgKHJlYWRsKGN0eC0+cG9ydC0+bWVtYmFzZSArIFVUUykgJiBVVFNfVFhGVUxM KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZWFkbChjdHgtPnBvcnQtPm1l bWJhc2UgKyB1dHNfcmVnKSAmIFVUU19UWEZVTEwpCj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj7CoMKgwqDCoMKgwqDCoMKgIH0KPsKgIH0K PiBAQCAtNDU4LDcgKzU0OSw3IEBAIHN0YXRpYyBpbnQgcnRfaW14X3VhcnRfaW50KHJ0ZG1faXJx X3QgKmlycV9jb250ZXh0KQo+wqDCoMKgwqDCoMKgwqDCoCBydGRtX2xvY2tfcHV0KCZjdHgtPmxv Y2spOwo+Cj7CoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQgIT0gUlRETV9JUlFfSEFORExFRCkKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcmludGsoS0VSTl9XQVJOSU5HICIlczogdW5o YW5kbGVkIGludGVycnVwdFxuIiwgX19mdW5jX18pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHByX3dhcm4oIiVzOiB1bmhhbmRsZWQgaW50ZXJydXB0XG4iLCBfX2Z1bmNfXyk7Cj7C oMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj7CoCB9Cj4KPiBAQCAtNDkzLDkgKzU4NCwxMCBA QCBzdGF0aWMgdW5zaWduZWQgaW50IHJ0X2lteF91YXJ0X2dldF9tc3Ioc3RydWN0IHJ0X2lteF91 YXJ0X2N0eCAqY3R4KQo+wqAgc3RhdGljIHZvaWQgcnRfaW14X3VhcnRfc2V0X21jcihzdHJ1Y3Qg cnRfaW14X3VhcnRfY3R4ICpjdHgsCj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBtY3IpCj7CoCB7Cj4g K8KgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgdXRzX3JlZyA9IGN0eC0+cG9ydC0+ZGV2ZGF0YS0+ dXRzX3JlZzsKPsKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyB1Y3IyID0gcmVhZGwoY3R4 LT5wb3J0LT5tZW1iYXNlICsgVUNSMik7Cj7CoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcg dWNyMyA9IHJlYWRsKGN0eC0+cG9ydC0+bWVtYmFzZSArIFVDUjMpOwo+IC3CoMKgwqDCoMKgwqAg dW5zaWduZWQgbG9uZyB1dHMgPSByZWFkbChjdHgtPnBvcnQtPm1lbWJhc2UgKyBVVFMpOwo+ICvC oMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyB1dHMgPSByZWFkbChjdHgtPnBvcnQtPm1lbWJhc2Ug KyB1dHNfcmVnKTsKPgo+wqDCoMKgwqDCoMKgwqDCoCBpZiAobWNyICYgUlRTRVJfTUNSX1JUUykg ewo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPiBAQCAtNTIzLDcgKzYxNSw3 IEBAIHN0YXRpYyB2b2lkIHJ0X2lteF91YXJ0X3NldF9tY3Ioc3RydWN0IHJ0X2lteF91YXJ0X2N0 eCAqY3R4LAo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdXRzIHw9IFVUU19MT09Q Owo+wqDCoMKgwqDCoMKgwqDCoCBlbHNlCj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1dHMgJj0gflVUU19MT09QOwo+IC3CoMKgwqDCoMKgwqAgd3JpdGVsKHV0cywgY3R4LT5wb3J0 LT5tZW1iYXNlICsgVVRTKTsKPiArwqDCoMKgwqDCoMKgIHdyaXRlbCh1dHMsIGN0eC0+cG9ydC0+ bWVtYmFzZSArIHV0c19yZWcpOwo+wqAgfQo+Cj7CoCBzdGF0aWMgdm9pZCBydF9pbXhfdWFydF9i cmVha19jdGwoc3RydWN0IHJ0X2lteF91YXJ0X2N0eCAqY3R4LAo+IEBAIC01NTcsNyArNjQ5LDgg QEAgc3RhdGljIGludCBydF9pbXhfdWFydF9zZXRfY29uZmlnKHN0cnVjdCBydF9pbXhfdWFydF9j dHggKmN0eCwKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGN0eC0+Y29uZmlnLnN0 b3BfYml0cyA9IGNvbmZpZy0+c3RvcF9iaXRzICYgU1RPUF9CSVRTX01BU0s7Cj4KPsKgwqDCoMKg wqDCoMKgwqAgLyogVGltZW91dCBtYW5pcHVsYXRpb24gaXMgbm90IGF0b21pYy4gVGhlIHVzZXIg aXMgc3VwcG9zZWQgdG8gdGFrZQo+IC3CoMKgwqDCoMKgwqDCoMKgwqAgY2FyZSBub3QgdG8gdXNl IGFuZCBjaGFuZ2UgdGltZW91dHMgYXQgdGhlIHNhbWUgdGltZS4gKi8KPiArwqDCoMKgwqDCoMKg wqAgKiBjYXJlIG5vdCB0byB1c2UgYW5kIGNoYW5nZSB0aW1lb3V0cyBhdCB0aGUgc2FtZSB0aW1l Lgo+ICvCoMKgwqDCoMKgwqDCoCAqLwo+wqDCoMKgwqDCoMKgwqDCoCBpZiAoY29uZmlnLT5jb25m aWdfbWFzayAmIFJUU0VSX1NFVF9USU1FT1VUX1JYKQo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgY3R4LT5jb25maWcucnhfdGltZW91dCA9IGNvbmZpZy0+cnhfdGltZW91dDsKPsKg wqDCoMKgwqDCoMKgwqAgaWYgKGNvbmZpZy0+Y29uZmlnX21hc2sgJiBSVFNFUl9TRVRfVElNRU9V VF9UWCkKPiBAQCAtNzIzLDcgKzgxNiw3IEBAIHN0YXRpYyBpbnQgcnRfaW14X3VhcnRfc2V0dXBf dWZjcihzdHJ1Y3QgcnRfaW14X3VhcnRfcG9ydCAqcG9ydCkKPsKgwqDCoMKgwqDCoMKgwqDCoCAq IFJGRElWIGlzIHNldCBzdWNoIHdheSB0byBzYXRpc2Z5IHJlcXVlc3RlZCB1YXJ0Y2xrIHZhbHVl Cj7CoMKgwqDCoMKgwqDCoMKgwqAgKi8KPsKgwqDCoMKgwqDCoMKgwqAgdmFsID0gVFhUTCA8PCAx MCB8IFJYVEw7Cj4gLcKgwqDCoMKgwqDCoCB1ZmNyX3JmZGl2ID0gKGNsa19nZXRfcmF0ZShwb3J0 LT5jbGspICsgcG9ydC0+dWFydGNsayAvIDIpIC8KPiArwqDCoMKgwqDCoMKgIHVmY3JfcmZkaXYg PSAoY2xrX2dldF9yYXRlKHBvcnQtPmNsa19wZXIpICsgcG9ydC0+dWFydGNsayAvIDIpIC8KPsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvcnQtPnVhcnRjbGs7Cj4KPsKgwqDCoMKg wqDCoMKgwqAgaWYgKCF1ZmNyX3JmZGl2KQo+IEBAIC04NTIsOCArOTQ1LDcgQEAgdm9pZCBydF9p bXhfdWFydF9jbG9zZShzdHJ1Y3QgcnRkbV9mZCAqZmQpCj7CoMKgwqDCoMKgwqDCoMKgIHJ0ZG1f aXJxX2ZyZWUoJmN0eC0+aXJxX2hhbmRsZSk7Cj7CoMKgwqDCoMKgwqDCoMKgIHJ0X2lteF91YXJ0 X2NsZWFudXBfY3R4KGN0eCk7Cj4KPiAtwqDCoMKgwqDCoMKgIGlmIChpbl9oaXN0b3J5KQo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGtmcmVlKGluX2hpc3RvcnkpOwo+ICvCoMKgwqDC oMKgwqAga2ZyZWUoaW5faGlzdG9yeSk7Cj7CoCB9Cj4KPsKgIHN0YXRpYyBpbnQgcnRfaW14X3Vh cnRfaW9jdGwoc3RydWN0IHJ0ZG1fZmQgKmZkLAo+IEBAIC04OTcsNyArOTg5LDcgQEAgc3RhdGlj IGludCBydF9pbXhfdWFydF9pb2N0bChzdHJ1Y3QgcnRkbV9mZCAqZmQsCj7CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4KPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmICgoY29uZmlnLT5jb25maWdfbWFzayAmIFJUU0VSX1NFVF9CQVVEKSAmJgo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGNvbmZpZy0+YmF1ZF9yYXRlID4gY2xrX2dl dF9yYXRlKGN0eC0+cG9ydC0+Y2xrKSAvIDE2IHx8Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAoY29uZmlnLT5iYXVkX3JhdGUgPiBjbGtfZ2V0X3JhdGUoY3R4LT5wb3J0 LT5jbGtfcGVyKSAvIDE2IHx8Cj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgY29uZmlnLT5iYXVkX3JhdGUgPD0gMCkpCj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogaW52YWxpZCBiYXVkcmF0ZSBmb3IgdGhpcyBwb3J0 ICovCj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FSU5WQUw7Cj4gQEAgLTkxMCw3ICsxMDAyLDggQEAgc3RhdGljIGludCBydF9pbXhfdWFy dF9pb2N0bChzdHJ1Y3QgcnRkbV9mZCAqZmQsCj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJ0ZG1faW5fcnRfY29udGV4dCgpKQo+wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gLUVOT1NZUzsKPgo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoY29uZmlnLT50aW1lc3RhbXBfaGlzdG9yeSAmIFJUU0VSX1JYX1RJTUVTVEFN UF9ISVNUT1JZKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZiAoY29uZmlnLT50aW1lc3RhbXBfaGlzdG9yeSAmCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFJUU0VSX1JYX1RJTUVTVEFNUF9ISVNUT1JZKQo+wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBoaXN0 X2J1ZiA9IGttYWxsb2MoSU5fQlVGRkVSX1NJWkUgKgo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemVvZihuYW5vc2Vjc19hYnNfdCksCj7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0ZQX0tFUk5FTCk7Cj4gQEAgLTkx OCw5ICsxMDExLDcgQEAgc3RhdGljIGludCBydF9pbXhfdWFydF9pb2N0bChzdHJ1Y3QgcnRkbV9m ZCAqZmQsCj4KPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJ0X2lteF91YXJ0X3Nl dF9jb25maWcoY3R4LCBjb25maWcsICZoaXN0X2J1Zik7Cj4KPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAoaGlzdF9idWYpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGtmcmVlKGhpc3RfYnVmKTsKPiAtCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAga2ZyZWUoaGlzdF9idWYpOwo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYnJlYWs7Cj7CoMKgwqDCoMKgwqDCoMKgIH0KPgo+IEBAIC05OTQsNyArMTA4NSw4IEBA IHN0YXRpYyBpbnQgcnRfaW14X3VhcnRfaW9jdGwoc3RydWN0IHJ0ZG1fZmQgKmZkLAo+Cj7CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAoIWN0eC0+aW9jX2V2ZW50cykgewo+ wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIE9ubHkg ZW5hYmxlIGVycm9yIGludGVycnVwdAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB3aGVuIHRoZSB1c2VyIHdhaXRzIGZvciBpdC4gKi8KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHdoZW4gdGhlIHVz ZXIgd2FpdHMgZm9yIGl0Lgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICovCj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKGN0eC0+Y29uZmlnLmV2ZW50X21hc2sgJiBSVFNFUl9FVkVOVF9FUlJQRU5EKSB7 Cj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGN0eC0+aWVyX3N0YXR1cyB8PSBJRVJfU1RBVDsKPsKgICNpZmRlZiBGSVhNRQo+ IEBAIC0xMTQ0LDcgKzEyMzYsOCBAQCBzc2l6ZV90IHJ0X2lteF91YXJ0X3JlYWQoc3RydWN0IHJ0 ZG1fZmQgKmZkLCB2b2lkICpidWYsIHNpemVfdCBuYnl0ZSkKPsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBEbyB3ZSBoYXZlIHRvIHdyYXAgYXJvdW5k IHRoZSBidWZmZXIgZW5kPyAqLwo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlmIChpbl9wb3MgKyBzdWJibG9jayA+IElOX0JVRkZFUl9TSVpFKSB7Cj7C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC8qIFRyZWF0IHRoZSBibG9jayBiZXR3ZWVuIGhlYWQgYW5kIGJ1ZmZlciBlbmQKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHNlcGFyYXRlbHkuICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogc2VwYXJhdGVseS4KPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Ki8KPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3ViYmxvY2sgPSBJTl9CVUZGRVJfU0laRSAtIGluX3BvczsKPgo+wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpZiAocnRkbV9mZF9pc191c2VyKGZkKSkgewo+IEBAIC0xMTk2LDggKzEyODksOSBAQCBzc2l6 ZV90IHJ0X2lteF91YXJ0X3JlYWQoc3RydWN0IHJ0ZG1fZmQgKmZkLCB2b2lkICpidWYsIHNpemVf dCBuYnl0ZSkKPgo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKG5vbmJsb2Nr aW5nKQo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8q IHJldCB3YXMgc2V0IHRvIEVBR0FJTiBpbiBjYXNlIG9mIGEgcmVhbAo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBub24tYmxvY2tpbmcgY2FsbCBv ciBjb250YWlucyB0aGUgZXJyb3IKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuZWQgYnkgcnRkbV9ldmVudF93YWl0W191bnRpbF0gKi8K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIG5vbi1i bG9ja2luZyBjYWxsIG9yIGNvbnRhaW5zIHRoZSBlcnJvcgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogcmV0dXJuZWQgYnkgcnRkbV9ldmVudF93YWl0 W191bnRpbF0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqLwo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJy ZWFrOwo+Cj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjdHgtPmluX253YWl0ID0g bmJ5dGU7Cj4gQEAgLTEyMTAsNyArMTMwNCw4IEBAIHNzaXplX3QgcnRfaW14X3VhcnRfcmVhZChz dHJ1Y3QgcnRkbV9mZCAqZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IG5ieXRlKQo+wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA8IDApIHsKPsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0ID09IC1FSURSTSkgewo+wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAvKiBEZXZpY2UgaGFzIGJlZW4gY2xvc2VkIC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBpbW1lZGlh dGVseS4gKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKiByZXR1cm4gaW1tZWRpYXRlbHkuCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj7CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiAtRUJBREY7Cj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfQo+Cj4gQEAgLTEyMTksNyArMTMxNCw4IEBAIHNzaXplX3QgcnRfaW14X3Vh cnRfcmVhZChzdHJ1Y3QgcnRkbV9mZCAqZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IG5ieXRlKQo+wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5vbmJsb2NraW5n ID0gMTsKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAoY3R4LT5pbl9ucGVuZCA+IDApIHsKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogRmluYWwgdHVybjogY29sbGVjdCBw ZW5kaW5nIGJ5dGVzCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBiZWZvcmUgZXhpdC4gKi8KPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBiZWZv cmUgZXhpdC4KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKi8KPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Cj4gQEAgLTEyODcsNyArMTM4Myw4 IEBAIHN0YXRpYyBzc2l6ZV90IHJ0X2lteF91YXJ0X3dyaXRlKHN0cnVjdCBydGRtX2ZkICpmZCwg Y29uc3Qgdm9pZCAqYnVmLAo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC8qIERvIHdlIGhhdmUgdG8gd3JhcCBhcm91bmQgdGhlIGJ1ZmZlciBlbmQ/ICov Cj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKG91 dF9wb3MgKyBzdWJibG9jayA+IE9VVF9CVUZGRVJfU0laRSkgewo+wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBUcmVhdCB0 aGUgYmxvY2sgYmV0d2VlbiBoZWFkIGFuZCBidWZmZXIKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVuZCBzZXBhcmF0 ZWx5LiAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqIGVuZCBzZXBhcmF0ZWx5Lgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz dWJibG9jayA9IE9VVF9CVUZGRVJfU0laRSAtIG91dF9wb3M7Cj4KPsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJ0ZG1f ZmRfaXNfdXNlcihmZCkpIHsKPiBAQCAtMTM0NCw3ICsxNDQxLDggQEAgc3RhdGljIHNzaXplX3Qg cnRfaW14X3VhcnRfd3JpdGUoc3RydWN0IHJ0ZG1fZmQgKmZkLCBjb25zdCB2b2lkICpidWYsCj7C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkgewo+wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQgPT0gLUVJRFJN KSB7Cj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIC8qIERldmljZSBoYXMgYmVlbiBjbG9zZWQgLQo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIGltbWVkaWF0ZWx5LiAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHJldHVybiBpbW1lZGlhdGVseS4KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKi8KPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FQkFERjsKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA9PSAtRVdPVUxEQkxPQ0spIHsKPiBAQCAtMTM4Miw0 MiArMTQ4MCw5NiBAQCBzdGF0aWMgc3RydWN0IHJ0ZG1fZHJpdmVyIGlteF91YXJ0X2RyaXZlciA9 IHsKPsKgwqDCoMKgwqDCoMKgwqAgfSwKPsKgIH07Cj4KPiArCj4gKyNpZmRlZiBDT05GSUdfT0YK PiArCj4gKy8qCj4gKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAxIGlmZiBwZGV2IGlzbid0IGEg ZGV2aWNlIGluc3RhdGlhdGVkIGJ5IGR0LCAwIGlmZiBpdAo+ICsgKiBjb3VsZCBzdWNjZXNzZnVs bHkgZ2V0IGFsbCBpbmZvcm1hdGlvbiBmcm9tIGR0IG9yIGEgbmVnYXRpdmUgZXJybm8uCj4gKyAq Lwo+ICtzdGF0aWMgaW50IHJ0X2lteF91YXJ0X3Byb2JlX2R0KHN0cnVjdCBydF9pbXhfdWFydF9w b3J0ICpwb3J0LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICvC oMKgwqDCoMKgwqAgc3RydWN0IGRldmljZV9ub2RlICpucCA9IHBkZXYtPmRldi5vZl9ub2RlOwo+ ICvCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2ZfaWQgPQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvZl9tYXRjaF9kZXZpY2Uo cnRfaW14X3VhcnRfZHRfaWRzLCAmcGRldi0+ZGV2KTsKPiArwqDCoMKgwqDCoMKgIGludCByZXQ7 Cj4gKwo+ICvCoMKgwqDCoMKgwqAgaWYgKCFucCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAvKiBubyBkZXZpY2UgdHJlZSBkZXZpY2UgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gMTsKPiArCj4gK8KgwqDCoMKgwqDCoCByZXQgPSBvZl9hbGlhc19nZXRf aWQobnAsICJzZXJpYWwiKTsKPiArwqDCoMKgwqDCoMKgIGlmIChyZXQgPCAwKSB7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGdl dCBhbGlhcyBpZCwgZXJybm8gJWRcbiIsIHJldCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIHJldDsKPiArwqDCoMKgwqDCoMKgIH0KPiArCj4gK8KgwqDCoMKgwqDCoCBw ZGV2LT5pZCA9IHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoCBpZiAob2ZfZ2V0X3Byb3BlcnR5KG5w LCAiZnNsLHVhcnQtaGFzLXJ0c2N0cyIsIE5VTEwpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHBvcnQtPmhhdmVfcnRzY3RzID0gMTsKPiArwqDCoMKgwqDCoMKgIGlmIChvZl9nZXRf cHJvcGVydHkobnAsICJmc2wsaXJkYS1tb2RlIiwgTlVMTCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZGV2X3dhcm4oJnBkZXYtPmRldiwgIklSREEgbm90IHlldCBzdXBwb3J0ZWRc biIpOwo+ICsKPiArwqDCoMKgwqDCoMKgIGlmIChvZl9nZXRfcHJvcGVydHkobnAsICJmc2wsZHRl LW1vZGUiLCBOVUxMKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb3J0LT51c2Vf ZGNlZHRlID0gMTsKPiArCj4gK8KgwqDCoMKgwqDCoCBwb3J0LT5kZXZkYXRhID0gb2ZfaWQtPmRh dGE7Cj4gKwo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4gK30KPiArI2Vsc2UKPiArc3RhdGlj IGlubGluZSBpbnQgcnRfaW14X3VhcnRfcHJvYmVfZHQoc3RydWN0IHJ0X2lteF91YXJ0X3BvcnQg KnBvcnQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp Cj4gK3sKPiArwqDCoMKgwqDCoMKgIHJldHVybiAxOwo+ICt9Cj4gKyNlbmRpZgo+ICsKPiArc3Rh dGljIHZvaWQgcnRfaW14X3VhcnRfcHJvYmVfcGRhdGEoc3RydWN0IHJ0X2lteF91YXJ0X3BvcnQg KnBvcnQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sK PiArwqDCoMKgwqDCoMKgIHN0cnVjdCBpbXh1YXJ0X3BsYXRmb3JtX2RhdGEgKnBkYXRhID0gZGV2 X2dldF9wbGF0ZGF0YSgmcGRldi0+ZGV2KTsKPiArCj4gK8KgwqDCoMKgwqDCoCBwb3J0LT5kZXZk YXRhID0gKHN0cnVjdCBpbXhfdWFydF9kYXRhwqAgKikgcGRldi0+aWRfZW50cnktPmRyaXZlcl9k YXRhOwo+ICsKPiArwqDCoMKgwqDCoMKgIGlmICghcGRhdGEpCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuOwo+ICsKPiArwqDCoMKgwqDCoMKgIGlmIChwZGF0YS0+ZmxhZ3Mg JiBJTVhVQVJUX0hBVkVfUlRTQ1RTKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBv cnQtPmhhdmVfcnRzY3RzID0gMTsKPiArfQo+ICsKPsKgIHN0YXRpYyBpbnQgcnRfaW14X3VhcnRf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPsKgIHsKPiAtwqDCoMKgwqDCoMKg IHN0cnVjdCBpbXh1YXJ0X3BsYXRmb3JtX2RhdGEgKnBkYXRhOwo+wqDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3QgcnRkbV9kZXZpY2UgKmRldjsKPsKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHJ0X2lteF91 YXJ0X3BvcnQgKnBvcnQ7Cj7CoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCByZXNvdXJjZSAqcmVzOwo+ IC3CoMKgwqDCoMKgwqAgaW50IGVycjsKPiArwqDCoMKgwqDCoMKgIGludCByZXQ7Cj4KPiAtwqDC oMKgwqDCoMKgIHBvcnQgPSBremFsbG9jKHNpemVvZigqcG9ydCksIEdGUF9LRVJORUwpOwo+ICvC oMKgwqDCoMKgwqAgcG9ydCA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnBvcnQp LCBHRlBfS0VSTkVMKTsKPsKgwqDCoMKgwqDCoMKgwqAgaWYgKCFwb3J0KQo+wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07Cj4KPiArwqDCoMKgwqDCoMKgIHJl dCA9IHJ0X2lteF91YXJ0X3Byb2JlX2R0KHBvcnQsIHBkZXYpOwo+ICvCoMKgwqDCoMKgwqAgaWYg KHJldCA+IDApCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcnRfaW14X3VhcnRfcHJv YmVfcGRhdGEocG9ydCwgcGRldik7Cj4gK8KgwqDCoMKgwqDCoCBlbHNlIGlmIChyZXQgPCAwKQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4gKwo+wqDCoMKgwqDC oMKgwqDCoCByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0s IDApOwo+IC3CoMKgwqDCoMKgwqAgaWYgKCFyZXMpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBlcnIgPSAtRU5PREVWOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdv dG8ga2ZyZWVfb3V0Owo+IC3CoMKgwqDCoMKgwqAgfQo+IC3CoMKgwqDCoMKgwqAgcG9ydC0+bWFw YmFzZSA9IHJlcy0+c3RhcnQ7Cj4gK8KgwqDCoMKgwqDCoCBpZiAoIXJlcykKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT0RFVjsKPgo+wqDCoMKgwqDCoMKgwqDCoCBw b3J0LT5pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOwo+IC3CoMKgwqDCoMKgwqAgaWYg KHBvcnQtPmlycSA8PSAwKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyID0g LUVOT0RFVjsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGtmcmVlX291dDsK PiAtwqDCoMKgwqDCoMKgIH0KPgo+IC3CoMKgwqDCoMKgwqAgaWYgKCFyZXF1ZXN0X21lbV9yZWdp b24ocG9ydC0+bWFwYmFzZSwgUEFHRV9TSVpFLCBEUklWRVJfTkFNRSkpIHsKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBlcnIgPSAtRUJVU1k7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZ290byBrZnJlZV9vdXQ7Cj4gLcKgwqDCoMKgwqDCoCB9Cj4gLQo+IC3CoMKgwqDC oMKgwqAgcG9ydC0+bWVtYmFzZSA9IGlvcmVtYXAocG9ydC0+bWFwYmFzZSwgUEFHRV9TSVpFKTsK PiAtwqDCoMKgwqDCoMKgIGlmICghcG9ydC0+bWVtYmFzZSkgewo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGVyciA9IC1FTk9NRU07Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZ290byByZWxlYXNlX21lbV9yZWdpb25fb3V0Owo+IC3CoMKgwqDCoMKgwqAgfQo+ICvCoMKg wqDCoMKgwqAgaWYgKHBvcnQtPmlycSA8PSAwKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiAtRU5PREVWOwo+Cj4gK8KgwqDCoMKgwqDCoCBwb3J0LT5tZW1iYXNlID0gZGV2 bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7Cj4gK8KgwqDCoMKgwqDCoCBpZiAo SVNfRVJSKHBvcnQtPm1lbWJhc2UpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiBQVFJfRVJSKHBvcnQtPm1lbWJhc2UpOwo+Cj7CoMKgwqDCoMKgwqDCoMKgIGRldiA9ICZw b3J0LT5ydGRtX2RldjsKPsKgwqDCoMKgwqDCoMKgwqAgZGV2LT5kcml2ZXIgPSAmaW14X3VhcnRf ZHJpdmVyOwo+IEBAIC0xNDI5LDU0ICsxNTgxLDI5IEBAIHN0YXRpYyBpbnQgcnRfaW14X3VhcnRf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPsKgwqDCoMKgwqDCoMKgwqAgZWxz ZQo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcG9ydC0+dHhfZmlmbyA9IHR4X2Zp Zm9bcGRldi0+aWRdOwo+Cj4gLcKgwqDCoMKgwqDCoCBwb3J0LT5jbGsgPSBjbGtfZ2V0KCZwZGV2 LT5kZXYsICJ1YXJ0Iik7Cj4gLcKgwqDCoMKgwqDCoCBpZiAoSVNfRVJSKHBvcnQtPmNsaykpIHsK PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlcnIgPSBQVFJfRVJSKHBvcnQtPmNsayk7 Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBpb3VubWFwX291dDsKPiAtwqDC oMKgwqDCoMKgIH0KPiAtwqDCoMKgwqDCoMKgIGNsa19lbmFibGUocG9ydC0+Y2xrKTsKPiAtwqDC oMKgwqDCoMKgIHBvcnQtPnVhcnRjbGsgPSBjbGtfZ2V0X3JhdGUocG9ydC0+Y2xrKTsKPiArwqDC oMKgwqDCoMKgIHBvcnQtPmNsa19pcGcgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgImlwZyIp Owo+ICvCoMKgwqDCoMKgwqAgaWYgKElTX0VSUihwb3J0LT5jbGtfaXBnKSkKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gUFRSX0VSUihwb3J0LT5jbGtfaXBnKTsKPgo+IC3C oMKgwqDCoMKgwqAgcG9ydC0+dXNlX2h3ZmxvdyA9IDE7Cj4gK8KgwqDCoMKgwqDCoCBwb3J0LT5j bGtfcGVyID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJwZXIiKTsKPiArwqDCoMKgwqDCoMKg IGlmIChJU19FUlIocG9ydC0+Y2xrX3BlcikpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIFBUUl9FUlIocG9ydC0+Y2xrX3Blcik7Cj4KPiAtwqDCoMKgwqDCoMKgIHBkYXRh ID0gcGRldi0+ZGV2LnBsYXRmb3JtX2RhdGE7Cj4gLcKgwqDCoMKgwqDCoCBpZiAocGRhdGEgJiYg KHBkYXRhLT5mbGFncyAmIElNWFVBUlRfSEFWRV9SVFNDVFMpKQo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHBvcnQtPmhhdmVfcnRzY3RzID0gMTsKPiAtwqDCoMKgwqDCoMKgIGlmIChw ZGF0YSAmJiAocGRhdGEtPmZsYWdzICYgSU1YVUFSVF9VU0VfRENFRFRFKSkKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBwb3J0LT51c2VfZGNlZHRlID0gMTsKPiAtwqDCoMKgwqDCoMKg IGlmIChwZGF0YSAmJiBwZGF0YS0+aW5pdCkgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGVyciA9IHBkYXRhLT5pbml0KHBkZXYpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChlcnIpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGdvdG8gY2xrX2Rpc2FibGVfb3V0Owo+IC3CoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqDCoMKg wqAgY2xrX2VuYWJsZShwb3J0LT5jbGtfaXBnKTsKPiArwqDCoMKgwqDCoMKgIGNsa19lbmFibGUo cG9ydC0+Y2xrX3Blcik7Cj4gK8KgwqDCoMKgwqDCoCBwb3J0LT51YXJ0Y2xrID0gY2xrX2dldF9y YXRlKHBvcnQtPmNsa19wZXIpOwo+Cj4gLcKgwqDCoMKgwqDCoCBlcnIgPSBydGRtX2Rldl9yZWdp c3RlcihkZXYpOwo+IC3CoMKgwqDCoMKgwqAgaWYgKGVycikKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBnb3RvIHBkYXRhX2V4aXRfb3V0Owo+ICvCoMKgwqDCoMKgwqAgcG9ydC0+dXNl X2h3ZmxvdyA9IDE7Cj4KPiAtwqDCoMKgwqDCoMKgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYs IHBvcnQpOwo+ICvCoMKgwqDCoMKgwqAgcmV0ID0gcnRkbV9kZXZfcmVnaXN0ZXIoZGV2KTsKPiAr wqDCoMKgwqDCoMKgIGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIHJldDsKPgo+IC3CoMKgwqDCoMKgwqAgcHJpbnRrKEtFUk5fSU5GTwo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAiJXMgb24gSU1YIFVBUlQlZDogbWVtYmFzZT0weCVwIG1hcGJhc2U9 JSN4IGlycT0lZCB1YXJ0Y2xrPSVkXG4iLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk ZXYtPm5hbWUsIHBkZXYtPmlkLCBwb3J0LT5tZW1iYXNlLCAodTMyKXBvcnQtPm1hcGJhc2UsCj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvcnQtPmlycSwgcG9ydC0+dWFydGNsayk7Cj4g K8KgwqDCoMKgwqDCoCBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwb3J0KTsKPgo+ICvCoMKg wqDCoMKgwqAgcHJfaW5mbygiJXMgb24gSU1YIFVBUlQlZDogbWVtYmFzZT0weCVwIGlycT0lZCB1 YXJ0Y2xrPSVkXG4iLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXYtPm5hbWUsIHBk ZXYtPmlkLCBwb3J0LT5tZW1iYXNlLCBwb3J0LT5pcnEsIHBvcnQtPnVhcnRjbGspOwo+wqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gMDsKPiAtCj4gLXBkYXRhX2V4aXRfb3V0Ogo+IC3CoMKgwqDCoMKg wqAgaWYgKHBkYXRhICYmIHBkYXRhLT5leGl0KQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHBkYXRhLT5leGl0KHBkZXYpOwo+IC1jbGtfZGlzYWJsZV9vdXQ6Cj4gLcKgwqDCoMKgwqDC oCBjbGtfcHV0KHBvcnQtPmNsayk7Cj4gLcKgwqDCoMKgwqDCoCBjbGtfZGlzYWJsZShwb3J0LT5j bGspOwo+IC1pb3VubWFwX291dDoKPiAtwqDCoMKgwqDCoMKgIGlvdW5tYXAocG9ydC0+bWVtYmFz ZSk7Cj4gLXJlbGVhc2VfbWVtX3JlZ2lvbl9vdXQ6Cj4gLcKgwqDCoMKgwqDCoCByZWxlYXNlX21l bV9yZWdpb24ocG9ydC0+bWFwYmFzZSwgU1pfNEspOwo+IC1rZnJlZV9vdXQ6Cj4gLcKgwqDCoMKg wqDCoCBrZnJlZShwb3J0KTsKPiAtCj4gLcKgwqDCoMKgwqDCoCByZXR1cm4gZXJyOwo+wqAgfQo+ Cj7CoCBzdGF0aWMgaW50IHJ0X2lteF91YXJ0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQo+IEBAIC0xNDkwLDI2ICsxNjE3LDkgQEAgc3RhdGljIGludCBydF9pbXhfdWFydF9y ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPgo+wqDCoMKgwqDCoMKgwqDCoCBy dGRtX2Rldl91bnJlZ2lzdGVyKGRldik7Cj4KPiAtwqDCoMKgwqDCoMKgIGlmIChwb3J0LT5jbGsp IHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjbGtfcHV0KHBvcnQtPmNsayk7Cj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xrX2Rpc2FibGUocG9ydC0+Y2xrKTsKPiAt wqDCoMKgwqDCoMKgIH0KPiAtCj4gLcKgwqDCoMKgwqDCoCBpZiAocGRhdGEgJiYgcGRhdGEtPmV4 aXQpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGRhdGEtPmV4aXQocGRldik7Cj4g LQo+IC3CoMKgwqDCoMKgwqAgaW91bm1hcChwb3J0LT5tZW1iYXNlKTsKPiAtwqDCoMKgwqDCoMKg IHJlbGVhc2VfbWVtX3JlZ2lvbihwb3J0LT5tYXBiYXNlLCBQQUdFX1NJWkUpOwo+IC3CoMKgwqDC oMKgwqAga2ZyZWUocG9ydCk7Cj4gLQo+wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPsKgIH0K Pgo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHBsYXRmb3JtX2RldmljZV9pZCBydF9pbXhfdWFydF9p ZF90YWJsZVtdID0gewo+IC3CoMKgwqDCoMKgwqAgeyJpbXgtdWFydCIsfSwKPiAtwqDCoMKgwqDC oMKgIHt9LAo+IC19Owo+IC0KPsKgIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHJ0X2lt eF91YXJ0X2RyaXZlciA9IHsKPsKgwqDCoMKgwqDCoMKgwqAgLnByb2JlID0gcnRfaW14X3VhcnRf cHJvYmUsCj7CoMKgwqDCoMKgwqDCoMKgIC5yZW1vdmUgPSBydF9pbXhfdWFydF9yZW1vdmUsCj4g QEAgLTE1MTcsMTUgKzE2MjcsMjYgQEAgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcnRf aW14X3VhcnRfZHJpdmVyID0gewo+wqDCoMKgwqDCoMKgwqDCoCAuZHJpdmVyID0gewo+wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLm5hbWUgPSBEUklWRVJfTkFNRSwKPsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5vd25lciA9IFRISVNfTU9EVUxFLAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5vZl9tYXRjaF90YWJsZSA9IHJ0X2lteF91YXJ0X2R0X2lk cywKPsKgwqDCoMKgwqDCoMKgwqAgfSwKPiArwqDCoMKgwqDCoMKgIC5wcmV2ZW50X2RlZmVycmVk X3Byb2JlID0gdHJ1ZSwKPsKgIH07Cj4KPiArCj7CoCBzdGF0aWMgaW50IF9faW5pdCBydF9pbXhf dWFydF9pbml0KHZvaWQpCj7CoCB7Cj4gK8KgwqDCoMKgwqDCoCBpbnQgcmV0Owo+ICsKPsKgwqDC oMKgwqDCoMKgwqAgaWYgKCFyZWFsdGltZV9jb3JlX2VuYWJsZWQoKSkKPsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+Cj4gLcKgwqDCoMKgwqDCoCByZXR1cm4gcGxh dGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZydF9pbXhfdWFydF9kcml2ZXIpOwo+ICvCoMKgwqDCoMKg wqAgcmV0ID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZydF9pbXhfdWFydF9kcml2ZXIpOwo+ ICvCoMKgwqDCoMKgwqAgaWYgKHJldCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHByX2VycigiJXM7IENvdWxkIG5vdCByZWdpc3RlcsKgIGRyaXZlciAoZXJyPSVkKVxuIiwKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19mdW5jX18sIHJl dCk7Cj4gK8KgwqDCoMKgwqDCoCB9Cj4gKwo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPsKg IH0KPgo+wqAgc3RhdGljIHZvaWQgX19leGl0IHJ0X2lteF91YXJ0X2V4aXQodm9pZCkKPiAtLQo+ IDIuNy40Cj4KCgoKLS0gCk1pY2hhZWwgV2VsbGluZwoKRW1iZWRkZWQgU3lzdGVtIEFyY2hpdGVj dCAvIEZvdW5kZXIKUVdFUlRZIEVtYmVkZGVkIERlc2lnbiwgTExDIC0gd3d3LnF3ZXJ0eWVtYmVk ZGVkLmNvbQo=