From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id C3AFA6EB90 for ; Tue, 5 Nov 2019 23:50:58 +0000 (UTC) Date: Tue, 5 Nov 2019 15:50:57 -0800 From: Vanshidhar Konda Message-ID: <20191105235057.6ezzjcpp22njpcee@vrkonda-desk.ra.intel.com> References: <20191105111513.14278-1-chris@chris-wilson.co.uk> <20191105132528.GZ28532@kdec5-desk.ger.corp.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191105132528.GZ28532@kdec5-desk.ger.corp.intel.com> Subject: Re: [igt-dev] [PATCH i-g-t] igt: Another combinatorial exercise for blits List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Chris Wilson Cc: igt-dev@lists.freedesktop.org List-ID: T24gVHVlLCBOb3YgMDUsIDIwMTkgYXQgMDI6MjU6MjhQTSArMDEwMCwgS2F0YXJ6eW5hIERlYyB3 cm90ZToKPk9uIFR1ZSwgTm92IDA1LCAyMDE5IGF0IDExOjE1OjEzQU0gKzAwMDAsIENocmlzIFdp bHNvbiB3cm90ZToKPj4gVGhlIGFpbSBvZiB0aGlzIHRlc3QgaXMgdG8gY29tYmluZSBnZW1fbGlu ZWFyX2JsaXRzLCBnZW1fdGlsZWRfYmxpdHMgZXRjCj4+IGludG8gb25lIHRlc3QgcnVubmVyIHRo YXQgY292ZXJzIGludmVzdGlnYXRpb24gaW50byBIVyBhbGlnbm1lbnQgaXNzdWVzCj4+IGFzIHdl bGwgYXMgZHJpdmVyIGJvdW5kYXJpZXMgKHJlbG9jcywgYWNjZXNzLCB0aHJhc2hpbmcpLgo+Pgo+ PiBTZWUgYWxzbyBnZW1fY29uY3VycmVudF9ibGl0cyB3aGljaCBsb29rcyBmb3IgY29oZXJlbmN5 IGlzc3VlcyBiZXR3ZWVuCj4+IHBhcmFsbGVsIGV4ZWN1dGlvbi4KPj4KPj4gU2lnbmVkLW9mZi1i eTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4+IENjOiBLYXRhcnp5 bmEgRGVjIDxrYXRhcnp5bmEuZGVjQGludGVsLmNvbT4KPj4gQ2M6IFZhbnNoaWRoYXIgS29uZGEg PHZhbnNoaWRoYXIuci5rb25kYUBpbnRlbC5jb20+Cj4+IC0tLQo+PiAgdGVzdHMvTWFrZWZpbGUu c291cmNlcyB8ICAgMSArCj4+ICB0ZXN0cy9pOTE1L2dlbV9ibGl0cy5jIHwgNzk2ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICB0ZXN0cy9tZXNvbi5idWlsZCAg ICAgIHwgICAxICsKPj4gIDMgZmlsZXMgY2hhbmdlZCwgNzk4IGluc2VydGlvbnMoKykKPj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9ibGl0cy5jCj4+Cj4+IGRpZmYgLS1naXQg YS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+PiBpbmRl eCAwOTNlYjU3ZjMuLmY2MzYwMmVmMCAxMDA2NDQKPj4gLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291 cmNlcwo+PiArKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4+IEBAIC0yNCw2ICsyNCw3IEBA IFRFU1RTX3Byb2dzID0gXAo+PiAgCWRybV9pbXBvcnRfZXhwb3J0IFwKPj4gIAlkcm1fbW0gXAo+ PiAgCWRybV9yZWFkIFwKPj4gKwlpOTE1L2dlbV9ibGl0cyBcCj4+ICAJa21zXzNkIFwKPj4gIAlr bXNfYWRkZmJfYmFzaWMgXAo+PiAgCWttc19hdG9taWMgXAo+PiBkaWZmIC0tZ2l0IGEvdGVzdHMv aTkxNS9nZW1fYmxpdHMuYyBiL3Rlc3RzL2k5MTUvZ2VtX2JsaXRzLmMKPj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwLi5lNmE4NDBmZmIKPj4gLS0tIC9kZXYvbnVsbAo+ PiArKysgYi90ZXN0cy9pOTE1L2dlbV9ibGl0cy5jCj4+IEBAIC0wLDAgKzEsNzk2IEBACj4+ICsv Kgo+PiArICogQ29weXJpZ2h0IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KPk1pbm9yIHR5cG8s IGJ1dCBhcyB0aGlzIGlzIGEgbmV3IGZpbGUsIGl0IHdvdWxkIGJlIGdvb2QgdG8gdXBkYXRlIGRh dGUgOikKPj4gKyAqCj4+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+PiArICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwKPj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+PiArICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlCj4+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+PiArICoKPj4gKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKPj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPj4gKyAqIFNvZnR3YXJlLgo+PiArICoKPj4g KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G IEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPj4gKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBF VkVOVCBTSEFMTAo+PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPj4gKyAqIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H Cj4+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4+ICsg Kgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlICJpZ3QuaCIKPj4gKyNpbmNsdWRlICJpZ3RfeDg2 LmgiCj4+ICsKPj4gKyNkZWZpbmUgTUlfRkxVU0hfRFcgKDB4MjYgPDwgMjMpCj4+ICsKPj4gKyNk ZWZpbmUgQkNTX1NXQ1RSTCAweDIyMjAwCj4+ICsjZGVmaW5lIEJDU19TUkNfWSAoMSA8PCAwKQo+ PiArI2RlZmluZSBCQ1NfRFNUX1kgKDEgPDwgMSkKPj4gKwo+PiArc3RydWN0IGRldmljZSB7Cj4+ ICsJaW50IGZkOwo+PiArCWludCBnZW47Cj4+ICsJaW50IHBjaWlkOwo+PiArCWludCBsbGM7Cj4+ ICt9Owo+PiArCj4+ICtzdHJ1Y3QgYnVmZmVyIHsKPj4gKwl1aW50MzJfdCBoYW5kbGU7Cj4+ICsJ dWludDE2X3Qgd2lkdGg7Cj4+ICsJdWludDE2X3QgaGVpZ2h0Owo+PiArCXVpbnQxNl90IHN0cmlk ZTsKPj4gKwl1aW50MzJfdCBzaXplOwo+PiArCXVuc2lnbmVkIGludCB0aWxpbmc7Cj4+ICsJdW5z aWduZWQgaW50IGNhY2hpbmc7Cj4+ICsJdWludDY0X3QgZ3R0X29mZnNldDsKPj4gKwl1aW50MzJf dCBtb2RlbFtdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMTYpKSk7Cj4+ICt9Owo+PiArCj4+ICtl bnVtIG1vZGUgewo+PiArCUNQVSwKPj4gKwlQUlcsCj4+ICsJR1RULAo+PiArCVdDLAo+PiArfTsK Pj4gKwo+PiArc3RhdGljIGludCBmbHModWludDY0X3QgeCkKPj4gK3sKPj4gKwlpbnQgdDsKPj4g Kwo+PiArCWZvciAodCA9IDA7IHggPj4gdDsgdCsrKQo+PiArCQk7Cj4+ICsKPj4gKwlyZXR1cm4g dDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHVuc2lnbmVkIGludAo+PiArZ2V0X3RpbGluZ19zdHJp ZGUoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2aWNlLAo+PiArCQkgIHVuc2lnbmVkIGludCB3aWR0 aCwgdW5zaWduZWQgaW50IHRpbGluZykKPj4gK3sKPj4gKwl1bnNpZ25lZCBpbnQgc3RyaWRlID0g NHUgKiB3aWR0aDsKPj4gKwo+PiArCWlmICh0aWxpbmcpIHsKPj4gKwkJaWYgKGRldmljZS0+Z2Vu IDwgMykKPj4gKwkJCXN0cmlkZSA9IEFMSUdOKHN0cmlkZSwgMTI4KTsKPj4gKwkJZWxzZSBpZiAo ZGV2aWNlLT5nZW4gPCA0IHx8IHRpbGluZyA9PSBJOTE1X1RJTElOR19YKQo+PiArCQkJc3RyaWRl ID0gQUxJR04oc3RyaWRlLCA1MTIpOwo+PiArCQllbHNlCj4+ICsJCQlzdHJpZGUgPSBBTElHTihz dHJpZGUsIDEyOCk7Cj4+ICsJCWlmIChkZXZpY2UtPmdlbiA8IDQpCj4+ICsJCQlzdHJpZGUgPSAx IDw8IGZscyhzdHJpZGUgLSAxKTsKPj4gKwl9IGVsc2Ugewo+PiArCQlpZiAoZGV2aWNlLT5nZW4g Pj0gOCkKPj4gKwkJCXN0cmlkZSA9IEFMSUdOKHN0cmlkZSwgNjQpOwo+PiArCX0KPj4gKwo+PiAr CWlndF9hc3NlcnQoc3RyaWRlIDwgVUlOVDE2X01BWCAmJiBzdHJpZGUgPj0gNCp3aWR0aCk7Cj4+ ICsJcmV0dXJuIHN0cmlkZTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHVuc2lnbmVkIGludAo+PiAr Z2V0X3RpbGluZ19oZWlnaHQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2aWNlLAo+PiArCQkgIHVu c2lnbmVkIGludCBoZWlnaHQsIHVuc2lnbmVkIGludCB0aWxpbmcpCj4+ICt7Cj4+ICsJaWYgKCF0 aWxpbmcpCj4+ICsJCXJldHVybiBoZWlnaHQ7Cj4+ICsKPj4gKwlpZiAoZGV2aWNlLT5nZW4gPCAz KQo+PiArCQlyZXR1cm4gQUxJR04oaGVpZ2h0LCAxNik7Cj4+ICsJZWxzZSBpZiAoZGV2aWNlLT5n ZW4gPCA0IHx8IHRpbGluZyA9PSBJOTE1X1RJTElOR19YKQo+PiArCQlyZXR1cm4gQUxJR04oaGVp Z2h0LCA4KTsKPj4gKwllbHNlCj4+ICsJCXJldHVybiBBTElHTihoZWlnaHQsIDMyKTsKPj4gK30K Pj4gKwo+PiArc3RhdGljIHN0cnVjdCBidWZmZXIgKmJ1ZmZlcl9jcmVhdGUoY29uc3Qgc3RydWN0 IGRldmljZSAqZGV2aWNlLAo+PiArCQkJCSAgICB1bnNpZ25lZCBpbnQgd2lkdGgsCj4+ICsJCQkJ ICAgIHVuc2lnbmVkIGludCBoZWlnaHQpCj4+ICt7Cj4+ICsJc3RydWN0IGJ1ZmZlciAqYnVmZmVy Owo+PiArCj4+ICsJaWd0X2Fzc2VydCh3aWR0aCAmJiBoZWlnaHQpOwo+PiArCj4+ICsJYnVmZmVy ID0gbWFsbG9jKHNpemVvZigqYnVmZmVyKSArIDR1ICogd2lkdGggKiBoZWlnaHQpOwo+PiArCWlm ICghYnVmZmVyKQo+PiArCQlyZXR1cm4gTlVMTDsKPj4gKwo+PiArCWJ1ZmZlci0+d2lkdGggPSB3 aWR0aDsKPj4gKwlidWZmZXItPmhlaWdodCA9IGhlaWdodDsKPj4gKwo+PiArCWJ1ZmZlci0+dGls aW5nID0gSTkxNV9USUxJTkdfTk9ORTsKPj4gKwlidWZmZXItPnN0cmlkZSA9IGdldF90aWxpbmdf c3RyaWRlKGRldmljZSwgd2lkdGgsIEk5MTVfVElMSU5HX05PTkUpOwo+PiArCWJ1ZmZlci0+c2l6 ZSA9IEFMSUdOKGJ1ZmZlci0+c3RyaWRlICogaGVpZ2h0LCA0MDk2KTsKPj4gKwlidWZmZXItPmhh bmRsZSA9IGdlbV9jcmVhdGUoZGV2aWNlLT5mZCwgYnVmZmVyLT5zaXplKTsKPj4gKwlidWZmZXIt PmNhY2hpbmcgPSBkZXZpY2UtPmxsYzsKPj4gKwo+PiArCWJ1ZmZlci0+Z3R0X29mZnNldCA9IGJ1 ZmZlci0+aGFuZGxlICogYnVmZmVyLT5zaXplOwo+PiArCj4+ICsJZm9yIChpbnQgeSA9IDA7IHkg PCBoZWlnaHQ7IHkrKykgewo+PiArCQl1aW50MzJfdCAqcm93ID0gYnVmZmVyLT5tb2RlbCArIHkg KiB3aWR0aDsKPj4gKwo+PiArCQlmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyB4KyspCj4+ICsJ CQlyb3dbeF0gPSAoeSA8PCAxNiB8IHgpIF4gYnVmZmVyLT5oYW5kbGU7Cj4+ICsKPj4gKwkJZ2Vt X3dyaXRlKGRldmljZS0+ZmQsCj4+ICsJCQkgIGJ1ZmZlci0+aGFuZGxlLCA0dSAqIHkgKiB3aWR0 aCwKPj4gKwkJCSAgcm93LCA0dSAqIHdpZHRoKTsKPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gYnVm ZmVyOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBidWZmZXJfc2V0X3RpbGluZyhjb25zdCBz dHJ1Y3QgZGV2aWNlICpkZXZpY2UsCj4+ICsJCQkgICAgICBzdHJ1Y3QgYnVmZmVyICpidWZmZXIs Cj4+ICsJCQkgICAgICB1bnNpZ25lZCBpbnQgdGlsaW5nKQo+PiArewo+PiArCXN0cnVjdCBkcm1f aTkxNV9nZW1fZXhlY19vYmplY3QyIG9ialszXTsKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl bG9jYXRpb25fZW50cnkgcmVsb2NbMl07Cj4+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVm ZmVyMiBleGVjYnVmOwo+PiArCWNvbnN0IGJvb2wgaGFzXzY0Yl9yZWxvYyA9IGRldmljZS0+Z2Vu ID49IDg7Cj4+ICsJdWludDMyX3Qgc3RyaWRlLCBzaXplLCBwaXRjaDsKPj4gKwl1aW50MzJfdCAq YmF0Y2g7Cj4+ICsJaW50IGk7Cj4+ICsKPj4gKwlpZiAoYnVmZmVyLT50aWxpbmcgPT0gdGlsaW5n KQo+PiArCQlyZXR1cm47Cj4+ICsKPj4gKwlzdHJpZGUgPSBnZXRfdGlsaW5nX3N0cmlkZShkZXZp Y2UsIGJ1ZmZlci0+d2lkdGgsIHRpbGluZyk7Cj4+ICsJc2l6ZSA9IHN0cmlkZSAqIGdldF90aWxp bmdfaGVpZ2h0KGRldmljZSwgYnVmZmVyLT5oZWlnaHQsIHRpbGluZyk7Cj4+ICsJc2l6ZSA9IEFM SUdOKHNpemUsIDQwOTYpOwo+PiArCj4+ICsJbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhl Y2J1ZikpOwo+PiArCWV4ZWNidWYuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIob2JqKTsK Pj4gKwlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IEFSUkFZX1NJWkUob2JqKTsKPj4gKwlpZiAoZGV2 aWNlLT5nZW4gPj0gNikKPj4gKwkJZXhlY2J1Zi5mbGFncyA9IEk5MTVfRVhFQ19CTFQ7Cj4+ICsK Pj4gKwltZW1zZXQob2JqLCAwLCBzaXplb2Yob2JqKSk7Cj4+ICsJb2JqWzBdLmhhbmRsZSA9IGdl bV9jcmVhdGUoZGV2aWNlLT5mZCwgc2l6ZSk7Cj4+ICsJaWYgKHRpbGluZykgewo+PiArCQlvYmpb MF0uZmxhZ3MgPSBFWEVDX09CSkVDVF9ORUVEU19GRU5DRTsKPj4gKwkJZ2VtX3NldF90aWxpbmco ZGV2aWNlLT5mZCwgb2JqWzBdLmhhbmRsZSwgdGlsaW5nLCBzdHJpZGUpOwo+PiArCX0KPj4gKwo+ PiArCW9ialsxXS5oYW5kbGUgPSBidWZmZXItPmhhbmRsZTsKPj4gKwlvYmpbMV0ub2Zmc2V0ID0g YnVmZmVyLT5ndHRfb2Zmc2V0Owo+PiArCWlmIChidWZmZXItPnRpbGluZykKPj4gKwkJb2JqWzFd LmZsYWdzID0gRVhFQ19PQkpFQ1RfTkVFRFNfRkVOQ0U7Cj4+ICsKPj4gKwlvYmpbMl0uaGFuZGxl ID0gZ2VtX2NyZWF0ZShkZXZpY2UtPmZkLCA0MDk2KTsKPj4gKwlvYmpbMl0ucmVsb2NzX3B0ciA9 IHRvX3VzZXJfcG9pbnRlcihtZW1zZXQocmVsb2MsIDAsIHNpemVvZihyZWxvYykpKTsKPj4gKwlv YmpbMl0ucmVsb2NhdGlvbl9jb3VudCA9IDI7Cj4+ICsJYmF0Y2ggPSBnZW1fbW1hcF9fY3B1KGRl dmljZS0+ZmQsIG9ialsyXS5oYW5kbGUsIDAsIDQwOTYsIFBST1RfV1JJVEUpOwo+PiArCj4+ICsJ aSA9IDA7Cj4+ICsKPj4gKwlpZiAoKHRpbGluZyB8IGJ1ZmZlci0+dGlsaW5nKSA+PSBJOTE1X1RJ TElOR19ZKSB7Cj4+ICsJCXVuc2lnbmVkIGludCBtYXNrOwo+PiArCj4+ICsJCWJhdGNoW2krK10g PSBNSV9MT0FEX1JFR0lTVEVSX0lNTTsKPj4gKwkJYmF0Y2hbaSsrXSA9IEJDU19TV0NUUkw7Cj4+ ICsKPj4gKwkJbWFzayA9IChCQ1NfU1JDX1kgfCBCQ1NfRFNUX1kpIDw8IDE2Owo+PiArCQlpZiAo YnVmZmVyLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkKPj4gKwkJCW1hc2sgfD0gQkNTX1NSQ19Z Owo+PiArCQlpZiAodGlsaW5nID09IEk5MTVfVElMSU5HX1kpCj4+ICsJCQltYXNrIHw9IEJDU19E U1RfWTsKPj4gKwkJYmF0Y2hbaSsrXSA9IG1hc2s7Cj4+ICsJfQo+PiArCj4+ICsJYmF0Y2hbaV0g PSAoWFlfU1JDX0NPUFlfQkxUX0NNRCB8Cj4+ICsJCSAgICBYWV9TUkNfQ09QWV9CTFRfV1JJVEVf QUxQSEEgfAo+PiArCQkgICAgWFlfU1JDX0NPUFlfQkxUX1dSSVRFX1JHQik7Cj4+ICsJaWYgKGRl dmljZS0+Z2VuID49IDQgJiYgYnVmZmVyLT50aWxpbmcpCj4+ICsJCWJhdGNoW2ldIHw9IFhZX1NS Q19DT1BZX0JMVF9TUkNfVElMRUQ7Cj4+ICsJaWYgKGRldmljZS0+Z2VuID49IDQgJiYgdGlsaW5n KQo+PiArCQliYXRjaFtpXSB8PSBYWV9TUkNfQ09QWV9CTFRfRFNUX1RJTEVEOwo+PiArCWJhdGNo W2krK10gfD0gNiArIDIgKiBoYXNfNjRiX3JlbG9jOwo+PiArCj4+ICsJcGl0Y2ggPSBzdHJpZGU7 Cj4+ICsJaWYgKGRldmljZS0+Z2VuID49IDQgJiYgdGlsaW5nKQo+PiArCQlwaXRjaCAvPSA0Owo+ PiArCWJhdGNoW2krK10gPSAzIDw8IDI0IHwgMHhjYyA8PCAxNiB8IHBpdGNoOwo+PiArCWJhdGNo W2krK10gPSAwOwo+PiArCWJhdGNoW2krK10gPSBidWZmZXItPmhlaWdodCA8PCAxNiB8IGJ1ZmZl ci0+d2lkdGg7Cj4+ICsJcmVsb2NbMF0udGFyZ2V0X2hhbmRsZSA9IG9ialswXS5oYW5kbGU7Cj4+ ICsJcmVsb2NbMF0ucHJlc3VtZWRfb2Zmc2V0ID0gb2JqWzBdLm9mZnNldDsKPj4gKwlyZWxvY1sw XS5vZmZzZXQgPSBzaXplb2YoKmJhdGNoKSAqIGk7Cj4+ICsJcmVsb2NbMF0ucmVhZF9kb21haW5z ID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKPj4gKwlyZWxvY1swXS53cml0ZV9kb21haW4gPSBJ OTE1X0dFTV9ET01BSU5fUkVOREVSOwo+PiArCWJhdGNoW2krK10gPSBvYmpbMF0ub2Zmc2V0Owo+ PiArCWlmIChoYXNfNjRiX3JlbG9jKQo+PiArCQliYXRjaFtpKytdID0gb2JqWzBdLm9mZnNldCA+ PiAzMjsKPj4gKwo+PiArCWJhdGNoW2krK10gPSAwOwo+PiArCXBpdGNoID0gYnVmZmVyLT5zdHJp ZGU7Cj4+ICsJaWYgKGRldmljZS0+Z2VuID49IDQgJiYgYnVmZmVyLT50aWxpbmcpCj4+ICsJCXBp dGNoIC89IDQ7Cj4+ICsJYmF0Y2hbaSsrXSA9IHBpdGNoOwo+PiArCXJlbG9jWzFdLnRhcmdldF9o YW5kbGUgPSBvYmpbMV0uaGFuZGxlOwo+PiArCXJlbG9jWzFdLnByZXN1bWVkX29mZnNldCA9IG9i alsxXS5vZmZzZXQ7Cj4+ICsJcmVsb2NbMV0ub2Zmc2V0ID0gc2l6ZW9mKCpiYXRjaCkgKiBpOwo+ PiArCXJlbG9jWzFdLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7Cj4+ICsJ YmF0Y2hbaSsrXSA9IG9ialsxXS5vZmZzZXQ7Cj4+ICsJaWYgKGhhc182NGJfcmVsb2MpCj4+ICsJ CWJhdGNoW2krK10gPSBvYmpbMV0ub2Zmc2V0ID4+IDMyOwo+PiArCj4+ICsJaWYgKCh0aWxpbmcg fCBidWZmZXItPnRpbGluZykgPj0gSTkxNV9USUxJTkdfWSkgewo+PiArCQlpZ3RfYXNzZXJ0KGRl dmljZS0+Z2VuID49IDYpOwo+PiArCQliYXRjaFtpKytdID0gTUlfRkxVU0hfRFcgfCAyOwo+PiAr CQliYXRjaFtpKytdID0gMDsKPj4gKwkJYmF0Y2hbaSsrXSA9IDA7Cj4+ICsJCWJhdGNoW2krK10g PSAwOwo+PiArCj4+ICsJCWJhdGNoW2krK10gPSBNSV9MT0FEX1JFR0lTVEVSX0lNTTsKPj4gKwkJ YmF0Y2hbaSsrXSA9IEJDU19TV0NUUkw7Cj4+ICsJCWJhdGNoW2krK10gPSAoQkNTX1NSQ19ZIHwg QkNTX0RTVF9ZKSA8PCAxNjsKPj4gKwl9Cj4+ICsKPj4gKwliYXRjaFtpKytdID0gTUlfQkFUQ0hf QlVGRkVSX0VORDsKPj4gKwltdW5tYXAoYmF0Y2gsIDQwOTYpOwo+PiArCj4+ICsJZ2VtX2V4ZWNi dWYoZGV2aWNlLT5mZCwgJmV4ZWNidWYpOwo+PiArCj4+ICsJZ2VtX2Nsb3NlKGRldmljZS0+ZmQs IG9ialsyXS5oYW5kbGUpOwo+PiArCWdlbV9jbG9zZShkZXZpY2UtPmZkLCBvYmpbMV0uaGFuZGxl KTsKPj4gKwo+PiArCWJ1ZmZlci0+Z3R0X29mZnNldCA9IG9ialswXS5vZmZzZXQ7Cj4+ICsJYnVm ZmVyLT5oYW5kbGUgPSBvYmpbMF0uaGFuZGxlOwo+PiArCj4+ICsJYnVmZmVyLT50aWxpbmcgPSB0 aWxpbmc7Cj4+ICsJYnVmZmVyLT5zdHJpZGUgPSBzdHJpZGU7Cj4+ICsJYnVmZmVyLT5zaXplID0g c2l6ZTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGJvb2wgY2FuX2JsaXRfdG9fbGluZWFyKGNvbnN0 IHN0cnVjdCBkZXZpY2UgKmRldmljZSwKPj4gKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgYnVmZmVy ICpidWZmZXIpCj4+ICt7Cj4+ICsJaWYgKGJ1ZmZlci0+Y2FjaGluZyAmJiAhZGV2aWNlLT5sbGMp Cj4+ICsJCXJldHVybiBmYWxzZTsKPj4gKwo+PiArCWlmIChkZXZpY2UtPmdlbiA8IDMpCj4+ICsJ CXJldHVybiBmYWxzZTsKPj4gKwo+PiArCXJldHVybiB0cnVlOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgYm9vbCBibGl0X3RvX2xpbmVhcihjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsCj4+ICsJ CQkgICBjb25zdCBzdHJ1Y3QgYnVmZmVyICpidWZmZXIsCj4+ICsJCQkgICB2b2lkICpsaW5lYXIp Cj4+ICt7Cj4+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzNdOwo+PiAr CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvY1syXTsKPj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7Cj4+ICsJY29uc3QgYm9vbCBoYXNf NjRiX3JlbG9jID0gZGV2aWNlLT5nZW4gPj0gODsKPj4gKwl1aW50MzJfdCAqYmF0Y2g7Cj4+ICsJ dWludDMyX3QgcGl0Y2g7Cj4+ICsJaW50IGkgPSAwOwo+PiArCj4+ICsJaWd0X2Fzc2VydChidWZm ZXItPnRpbGluZyk7Cj4+ICsKPj4gKwlpZiAoIWNhbl9ibGl0X3RvX2xpbmVhcihkZXZpY2UsIGJ1 ZmZlcikpCj4+ICsJCXJldHVybiBmYWxzZTsKPj4gKwo+PiArCW1lbXNldCgmZXhlY2J1ZiwgMCwg c2l6ZW9mKGV4ZWNidWYpKTsKPj4gKwlleGVjYnVmLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2lu dGVyKG9iaik7Cj4+ICsJZXhlY2J1Zi5idWZmZXJfY291bnQgPSBBUlJBWV9TSVpFKG9iaik7Cj4+ ICsJaWYgKGRldmljZS0+Z2VuID49IDYpCj4+ICsJCWV4ZWNidWYuZmxhZ3MgPSBJOTE1X0VYRUNf QkxUOwo+PiArCj4+ICsJbWVtc2V0KG9iaiwgMCwgc2l6ZW9mKG9iaikpOwo+PiArCWlmIChfX2dl bV91c2VycHRyKGRldmljZS0+ZmQsIGxpbmVhciwgYnVmZmVyLT5zaXplLCAwLCAwLCAmb2JqWzBd LmhhbmRsZSkpCj4+ICsJCXJldHVybiBmYWxzZTsKPj4gKwo+PiArCW9ialsxXS5oYW5kbGUgPSBi dWZmZXItPmhhbmRsZTsKPj4gKwlvYmpbMV0ub2Zmc2V0ID0gYnVmZmVyLT5ndHRfb2Zmc2V0Owo+ PiArCW9ialsxXS5mbGFncyA9IEVYRUNfT0JKRUNUX05FRURTX0ZFTkNFOwo+PiArCj4+ICsJbWVt c2V0KHJlbG9jLCAwLCBzaXplb2YocmVsb2MpKTsKPj4gKwlvYmpbMl0uaGFuZGxlID0gZ2VtX2Ny ZWF0ZShkZXZpY2UtPmZkLCA0MDk2KTsKPj4gKwlvYmpbMl0ucmVsb2NzX3B0ciA9IHRvX3VzZXJf cG9pbnRlcihyZWxvYyk7Cj4+ICsJb2JqWzJdLnJlbG9jYXRpb25fY291bnQgPSBBUlJBWV9TSVpF KHJlbG9jKTsKPj4gKwliYXRjaCA9IGdlbV9tbWFwX19jcHUoZGV2aWNlLT5mZCwgb2JqWzJdLmhh bmRsZSwgMCwgNDA5NiwgUFJPVF9XUklURSk7Cj4+ICsKPj4gKwlpZiAoYnVmZmVyLT50aWxpbmcg Pj0gSTkxNV9USUxJTkdfWSkgewo+PiArCQl1bnNpZ25lZCBpbnQgbWFzazsKPj4gKwo+PiArCQli YXRjaFtpKytdID0gTUlfTE9BRF9SRUdJU1RFUl9JTU07Cj4+ICsJCWJhdGNoW2krK10gPSBCQ1Nf U1dDVFJMOwo+PiArCj4+ICsJCW1hc2sgPSAoQkNTX1NSQ19ZIHwgQkNTX0RTVF9ZKSA8PCAxNjsK Pj4gKwkJaWYgKGJ1ZmZlci0+dGlsaW5nID09IEk5MTVfVElMSU5HX1kpCj4+ICsJCQltYXNrIHw9 IEJDU19TUkNfWTsKPj4gKwkJYmF0Y2hbaSsrXSA9IG1hc2s7Cj4+ICsJfQo+PiArCj4+ICsJYmF0 Y2hbaV0gPSAoWFlfU1JDX0NPUFlfQkxUX0NNRCB8Cj4+ICsJCSAgICBYWV9TUkNfQ09QWV9CTFRf V1JJVEVfQUxQSEEgfAo+PiArCQkgICAgWFlfU1JDX0NPUFlfQkxUX1dSSVRFX1JHQik7Cj4+ICsJ aWYgKGRldmljZS0+Z2VuID49IDQgJiYgYnVmZmVyLT50aWxpbmcpCj4+ICsJCWJhdGNoW2ldIHw9 IFhZX1NSQ19DT1BZX0JMVF9TUkNfVElMRUQ7Cj4+ICsJYmF0Y2hbaSsrXSB8PSA2ICsgMiAqIGhh c182NGJfcmVsb2M7Cj4+ICsKPj4gKwliYXRjaFtpKytdID0gMyA8PCAyNCB8IDB4Y2MgPDwgMTYg fCBidWZmZXItPnN0cmlkZTsKPj4gKwliYXRjaFtpKytdID0gMDsKPj4gKwliYXRjaFtpKytdID0g YnVmZmVyLT5oZWlnaHQgPDwgMTYgfCBidWZmZXItPndpZHRoOwo+PiArCXJlbG9jWzBdLnRhcmdl dF9oYW5kbGUgPSBvYmpbMF0uaGFuZGxlOwo+PiArCXJlbG9jWzBdLnByZXN1bWVkX29mZnNldCA9 IG9ialswXS5vZmZzZXQ7Cj4+ICsJcmVsb2NbMF0ub2Zmc2V0ID0gc2l6ZW9mKCpiYXRjaCkgKiBp Owo+PiArCXJlbG9jWzBdLnJlYWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7Cj4+ ICsJcmVsb2NbMF0ud3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKPj4gKwli YXRjaFtpKytdID0gb2JqWzBdLm9mZnNldDsKPj4gKwlpZiAoaGFzXzY0Yl9yZWxvYykKPj4gKwkJ YmF0Y2hbaSsrXSA9IG9ialswXS5vZmZzZXQgPj4gMzI7Cj4+ICsKPj4gKwliYXRjaFtpKytdID0g MDsKPj4gKwlwaXRjaCA9IGJ1ZmZlci0+c3RyaWRlOwo+PiArCWlmIChkZXZpY2UtPmdlbiA+PSA0 ICYmIGJ1ZmZlci0+dGlsaW5nKQo+PiArCQlwaXRjaCAvPSA0Owo+PiArCWJhdGNoW2krK10gPSBw aXRjaDsKPj4gKwlyZWxvY1sxXS50YXJnZXRfaGFuZGxlID0gb2JqWzFdLmhhbmRsZTsKPj4gKwly ZWxvY1sxXS5wcmVzdW1lZF9vZmZzZXQgPSBvYmpbMV0ub2Zmc2V0Owo+PiArCXJlbG9jWzFdLm9m ZnNldCA9IHNpemVvZigqYmF0Y2gpICogaTsKPj4gKwlyZWxvY1sxXS5yZWFkX2RvbWFpbnMgPSBJ OTE1X0dFTV9ET01BSU5fUkVOREVSOwo+PiArCWJhdGNoW2krK10gPSBvYmpbMV0ub2Zmc2V0Owo+ PiArCWlmIChoYXNfNjRiX3JlbG9jKQo+PiArCQliYXRjaFtpKytdID0gb2JqWzFdLm9mZnNldCA+ PiAzMjsKPj4gKwo+PiArCWlmIChidWZmZXItPnRpbGluZyA+PSBJOTE1X1RJTElOR19ZKSB7Cj4+ ICsJCWlndF9hc3NlcnQoZGV2aWNlLT5nZW4gPj0gNik7Cj4+ICsJCWJhdGNoW2krK10gPSBNSV9G TFVTSF9EVyB8IDI7Cj4+ICsJCWJhdGNoW2krK10gPSAwOwo+PiArCQliYXRjaFtpKytdID0gMDsK Pj4gKwkJYmF0Y2hbaSsrXSA9IDA7Cj4+ICsKPj4gKwkJYmF0Y2hbaSsrXSA9IE1JX0xPQURfUkVH SVNURVJfSU1NOwo+PiArCQliYXRjaFtpKytdID0gQkNTX1NXQ1RSTDsKPj4gKwkJYmF0Y2hbaSsr XSA9IChCQ1NfU1JDX1kgfCBCQ1NfRFNUX1kpIDw8IDE2Owo+PiArCX0KPj4gKwo+PiArCWJhdGNo W2krK10gPSBNSV9CQVRDSF9CVUZGRVJfRU5EOwo+PiArCW11bm1hcChiYXRjaCwgNDA5Nik7Cj4+ ICsKPj4gKwlnZW1fZXhlY2J1ZihkZXZpY2UtPmZkLCAmZXhlY2J1Zik7Cj4+ICsJZ2VtX2Nsb3Nl KGRldmljZS0+ZmQsIG9ialsyXS5oYW5kbGUpOwo+PiArCj4+ICsJZ2VtX3N5bmMoZGV2aWNlLT5m ZCwgb2JqWzBdLmhhbmRsZSk7Cj4+ICsJZ2VtX2Nsb3NlKGRldmljZS0+ZmQsIG9ialswXS5oYW5k bGUpOwo+PiArCj4+ICsJcmV0dXJuIHRydWU7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkICpk b3dubG9hZChjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsCj4+ICsJCSAgICAgIGNvbnN0IHN0 cnVjdCBidWZmZXIgKmJ1ZmZlciwKPj4gKwkJICAgICAgZW51bSBtb2RlIG1vZGUpCj4+ICt7Cj4+ ICsJdm9pZCAqbGluZWFyLCAqc3JjOwo+PiArCj4+ICsJaWd0X2Fzc2VydChwb3NpeF9tZW1hbGln bigmbGluZWFyLCA0MDk2LCBidWZmZXItPnNpemUpID09IDApOwo+PiArCj4+ICsJc3dpdGNoICht b2RlKSB7Cj4+ICsJY2FzZSBDUFU6Cj4+ICsJCWlmIChidWZmZXItPnRpbGluZykgewo+PiArCQkJ aWYgKGJsaXRfdG9fbGluZWFyKGRldmljZSwgYnVmZmVyLCBsaW5lYXIpKQo+PiArCQkJCXJldHVy biBsaW5lYXI7Cj4+ICsKPj4gKwkJCW1vZGUgPSBHVFQ7Cj4+ICsJCX0KPj4gKwkJYnJlYWs7Cj4+ ICsKPj4gKwljYXNlIFdDOgo+PiArCQlpZiAoIWdlbV9tbWFwX19oYXNfd2MoZGV2aWNlLT5mZCkg fHwgYnVmZmVyLT50aWxpbmcpCj4+ICsJCQltb2RlID0gR1RUOwo+PiArCQlicmVhazsKPj4gKwo+ PiArCWNhc2UgUFJXOgo+PiArCQlpZiAoYnVmZmVyLT50aWxpbmcpCj4+ICsJCQltb2RlID0gR1RU Owo+PiArCQlicmVhazsKPj4gKwo+PiArCWNhc2UgR1RUOgo+PiArCQlicmVhazsKPj4gKwl9Cj4+ ICsKPj4gKwlzd2l0Y2ggKG1vZGUpIHsKPj4gKwljYXNlIENQVToKPj4gKwkJc3JjID0gZ2VtX21t YXBfX2NwdShkZXZpY2UtPmZkLCBidWZmZXItPmhhbmRsZSwKPj4gKwkJCQkgICAgMCwgYnVmZmVy LT5zaXplLAo+PiArCQkJCSAgICBQUk9UX1JFQUQpOwo+PiArCj4+ICsJCWdlbV9zZXRfZG9tYWlu KGRldmljZS0+ZmQsIGJ1ZmZlci0+aGFuZGxlLAo+PiArCQkJICAgICAgIEk5MTVfR0VNX0RPTUFJ Tl9DUFUsIDApOwo+PiArCQlpZ3RfbWVtY3B5X2Zyb21fd2MobGluZWFyLCBzcmMsIGJ1ZmZlci0+ c2l6ZSk7Cj4+ICsJCW11bm1hcChzcmMsIGJ1ZmZlci0+c2l6ZSk7Cj4+ICsJCWJyZWFrOwo+PiAr Cj4+ICsJY2FzZSBXQzoKPj4gKwkJc3JjID0gZ2VtX21tYXBfX3djKGRldmljZS0+ZmQsIGJ1ZmZl ci0+aGFuZGxlLAo+PiArCQkJCSAgIDAsIGJ1ZmZlci0+c2l6ZSwKPj4gKwkJCQkgICBQUk9UX1JF QUQpOwo+PiArCj4+ICsJCWdlbV9zZXRfZG9tYWluKGRldmljZS0+ZmQsIGJ1ZmZlci0+aGFuZGxl LAo+PiArCQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9XQywgMCk7Cj4+ICsJCWlndF9tZW1jcHlf ZnJvbV93YyhsaW5lYXIsIHNyYywgYnVmZmVyLT5zaXplKTsKPj4gKwkJbXVubWFwKHNyYywgYnVm ZmVyLT5zaXplKTsKPj4gKwkJYnJlYWs7Cj4+ICsKPj4gKwljYXNlIEdUVDoKPj4gKwkJc3JjID0g Z2VtX21tYXBfX2d0dChkZXZpY2UtPmZkLCBidWZmZXItPmhhbmRsZSwKPj4gKwkJCQkgICBidWZm ZXItPnNpemUsCj4+ICsJCQkJICAgUFJPVF9SRUFEKTsKPj4gKwo+PiArCQlnZW1fc2V0X2RvbWFp bihkZXZpY2UtPmZkLCBidWZmZXItPmhhbmRsZSwKPj4gKwkJCSAgICAgICBJOTE1X0dFTV9ET01B SU5fR1RULCAwKTsKPj4gKwkJaWd0X21lbWNweV9mcm9tX3djKGxpbmVhciwgc3JjLCBidWZmZXIt PnNpemUpOwo+PiArCQltdW5tYXAoc3JjLCBidWZmZXItPnNpemUpOwo+PiArCQlicmVhazsKPj4g Kwo+PiArCWNhc2UgUFJXOgo+PiArCQlnZW1fcmVhZChkZXZpY2UtPmZkLCBidWZmZXItPmhhbmRs ZSwgMCwgbGluZWFyLCBidWZmZXItPnNpemUpOwo+PiArCQlicmVhazsKPj4gKwl9Cj4+ICsKPj4g KwlyZXR1cm4gbGluZWFyOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgYm9vbCBidWZmZXJfY2hlY2so Y29uc3Qgc3RydWN0IGRldmljZSAqZGV2aWNlLAo+PiArCQkJIGNvbnN0IHN0cnVjdCBidWZmZXIg KmJ1ZmZlciwKPj4gKwkJCSBlbnVtIG1vZGUgbW9kZSkKPj4gK3sKPj4gKwl1bnNpZ25lZCBpbnQg bnVtX2Vycm9ycyA9IDA7Cj4+ICsJdWludDMyX3QgKmxpbmVhcjsKPj4gKwo+PiArCWxpbmVhciA9 IGRvd25sb2FkKGRldmljZSwgYnVmZmVyLCBtb2RlKTsKPj4gKwlpZ3RfYXNzZXJ0KGxpbmVhcik7 Cj4+ICsKPj4gKwlmb3IgKGludCB5ID0gMDsgeSA8IGJ1ZmZlci0+aGVpZ2h0OyB5KyspIHsKPj4g KwkJY29uc3QgdWludDMyX3QgKm1vZGVsID0gYnVmZmVyLT5tb2RlbCArIHkgKiBidWZmZXItPndp ZHRoOwo+PiArCQljb25zdCB1aW50MzJfdCAqcm93ID0KPj4gKwkJCWxpbmVhciArIHkgKiBidWZm ZXItPnN0cmlkZSAvIHNpemVvZih1aW50MzJfdCk7Cj4+ICsKPj4gKwkJaWYgKCFtZW1jbXAobW9k ZWwsIHJvdywgYnVmZmVyLT53aWR0aCAqIHNpemVvZih1aW50MzJfdCkpKQo+PiArCQkJY29udGlu dWU7Cj4+ICsKPj4gKwkJZm9yIChpbnQgeCA9IDA7IHggPCBidWZmZXItPndpZHRoOyB4KyspIHsK Pj4gKwkJCWlmIChyb3dbeF0gIT0gbW9kZWxbeF0gJiYgbnVtX2Vycm9ycysrIDwgNSkgewo+PiAr CQkJCWlndF93YXJuKCJidWZmZXIgaGFuZGxlPSVkIG1pc21hdGNoIGF0ICglZCwgJWQpOiBleHBl Y3RlZCAlMDh4LCBmb3VuZCAlMDh4XG4iLAo+PiArCQkJCQkgYnVmZmVyLT5oYW5kbGUsCj4+ICsJ CQkJCSB4LCB5LCBtb2RlbFt4XSwgcm93W3hdKTsKPj4gKwkJCX0KPj4gKwkJfQo+PiArCX0KPj4g Kwo+PiArCWZyZWUobGluZWFyKTsKPj4gKwo+PiArCXJldHVybiBudW1fZXJyb3JzID09IDA7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGJ1ZmZlcl9mcmVlKGNvbnN0IHN0cnVjdCBkZXZpY2Ug KmRldmljZSwgc3RydWN0IGJ1ZmZlciAqYnVmZmVyKQo+PiArewo+PiArCWlndF9hc3NlcnQoYnVm ZmVyX2NoZWNrKGRldmljZSwgYnVmZmVyLCBHVFQpKTsKPj4gKwlnZW1fY2xvc2UoZGV2aWNlLT5m ZCwgYnVmZmVyLT5oYW5kbGUpOwo+PiArCWZyZWUoYnVmZmVyKTsKPj4gK30KPj4gKwo+PiArc3Rh dGljIHZvaWQgbWVtY3B5X2JsdChjb25zdCB2b2lkICpzcmMsIHZvaWQgKmRzdCwKPj4gKwkJICAg ICAgIHVpbnQzMl90IHNyY19zdHJpZGUsIHVpbnQzMl90IGRzdF9zdHJpZGUsCj4+ICsJCSAgICAg ICB1aW50MTZfdCBzcmNfeCwgdWludDE2X3Qgc3JjX3ksCj4+ICsJCSAgICAgICB1aW50MTZfdCBk c3RfeCwgdWludDE2X3QgZHN0X3ksCj4+ICsJCSAgICAgICB1aW50MTZfdCB3aWR0aCwgdWludDE2 X3QgaGVpZ2h0KQo+PiArewo+PiArCWNvbnN0IHVpbnQ4X3QgKnNyY19ieXRlczsKPj4gKwl1aW50 OF90ICpkc3RfYnl0ZXM7Cj4+ICsJaW50IGJ5dGVfd2lkdGg7Cj4+ICsKPj4gKwlzcmNfYnl0ZXMg PSAoY29uc3QgdWludDhfdCAqKXNyYyArIHNyY19zdHJpZGUgKiBzcmNfeSArIHNyY194ICogNDsK Pj4gKwlkc3RfYnl0ZXMgPSAodWludDhfdCAqKWRzdCArIGRzdF9zdHJpZGUgKiBkc3RfeSArIGRz dF94ICogNDsKPj4gKwo+PiArCWJ5dGVfd2lkdGggPSB3aWR0aCAqIDQ7Cj4+ICsJaWYgKGJ5dGVf d2lkdGggPT0gc3JjX3N0cmlkZSAmJiBieXRlX3dpZHRoID09IGRzdF9zdHJpZGUpIHsKPj4gKwkJ Ynl0ZV93aWR0aCAqPSBoZWlnaHQ7Cj4+ICsJCWhlaWdodCA9IDE7Cj4+ICsJfQo+PiArCj4+ICsJ c3dpdGNoIChieXRlX3dpZHRoKSB7Cj4+ICsJY2FzZSA0Ogo+PiArCQlkbyB7Cj4+ICsJCQkqKHVp bnQzMl90ICopZHN0X2J5dGVzID0gKihjb25zdCB1aW50MzJfdCAqKXNyY19ieXRlczsKPj4gKwkJ CXNyY19ieXRlcyArPSBzcmNfc3RyaWRlOwo+PiArCQkJZHN0X2J5dGVzICs9IGRzdF9zdHJpZGU7 Cj4+ICsJCX0gd2hpbGUgKC0taGVpZ2h0KTsKPj4gKwkJYnJlYWs7Cj4+ICsKPj4gKwljYXNlIDg6 Cj4+ICsJCWRvIHsKPj4gKwkJCSoodWludDY0X3QgKilkc3RfYnl0ZXMgPSAqKGNvbnN0IHVpbnQ2 NF90ICopc3JjX2J5dGVzOwo+PiArCQkJc3JjX2J5dGVzICs9IHNyY19zdHJpZGU7Cj4+ICsJCQlk c3RfYnl0ZXMgKz0gZHN0X3N0cmlkZTsKPj4gKwkJfSB3aGlsZSAoLS1oZWlnaHQpOwo+PiArCQli cmVhazsKPj4gKwljYXNlIDE2Ogo+PiArCQlkbyB7Cj4+ICsJCQkoKHVpbnQ2NF90ICopZHN0X2J5 dGVzKVswXSA9ICgoY29uc3QgdWludDY0X3QgKilzcmNfYnl0ZXMpWzBdOwo+PiArCQkJKCh1aW50 NjRfdCAqKWRzdF9ieXRlcylbMV0gPSAoKGNvbnN0IHVpbnQ2NF90ICopc3JjX2J5dGVzKVsxXTsK Pj4gKwkJCXNyY19ieXRlcyArPSBzcmNfc3RyaWRlOwo+PiArCQkJZHN0X2J5dGVzICs9IGRzdF9z dHJpZGU7Cj4+ICsJCX0gd2hpbGUgKC0taGVpZ2h0KTsKPj4gKwkJYnJlYWs7Cj4+ICsKPj4gKwlk ZWZhdWx0Ogo+PiArCQlkbyB7Cj4+ICsJCQltZW1jcHkoZHN0X2J5dGVzLCBzcmNfYnl0ZXMsIGJ5 dGVfd2lkdGgpOwo+PiArCQkJc3JjX2J5dGVzICs9IHNyY19zdHJpZGU7Cj4+ICsJCQlkc3RfYnl0 ZXMgKz0gZHN0X3N0cmlkZTsKPj4gKwkJfSB3aGlsZSAoLS1oZWlnaHQpOwo+PiArCQlicmVhazsK Pj4gKwl9Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkCj4+ICtibGl0KGNvbnN0IHN0cnVjdCBk ZXZpY2UgKmRldmljZSwKPj4gKyAgICAgc3RydWN0IGJ1ZmZlciAqc3JjLCB1aW50MTZfdCBzcmNf eCwgdWludDE2X3Qgc3JjX3ksCj4+ICsgICAgIHN0cnVjdCBidWZmZXIgKmRzdCwgdWludDE2X3Qg ZHN0X3gsIHVpbnQxNl90IGRzdF95LAo+PiArICAgICB1aW50MTZfdCB3aWR0aCwgdWludDE2X3Qg aGVpZ2h0KQo+PiArCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIg b2JqWzNdOwo+PiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvY1sy XTsKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7Cj4+ICsJY29u c3QgYm9vbCBoYXNfNjRiX3JlbG9jID0gZGV2aWNlLT5nZW4gPj0gODsKPj4gKwl1aW50MzJfdCAq YmF0Y2g7Cj4+ICsJdWludDMyX3QgcGl0Y2g7Cj4+ICsJaW50IGkgPSAwOwo+PiArCj4+ICsJaWYg KHNyY194IDwgMCkgewo+PiArCQl3aWR0aCArPSBzcmNfeDsKPj4gKwkJZHN0X3ggLT0gc3JjX3g7 Cj4+ICsJCXNyY194ICA9IDA7Cj4+ICsJfQo+PiArCWlmIChzcmNfeSA8IDApIHsKPj4gKwkJaGVp Z2h0ICs9IHNyY195Owo+PiArCQlkc3RfeSAgLT0gc3JjX3k7Cj4+ICsJCXNyY195ICAgPSAwOwo+ PiArCX0KPj4gKwo+PiArCWlmIChkc3RfeCA8IDApIHsKPj4gKwkJd2lkdGggKz0gZHN0X3g7Cj4+ ICsJCXNyY194IC09IGRzdF94Owo+PiArCQlkc3RfeCAgPSAwOwo+PiArCX0KPj4gKwlpZiAoZHN0 X3kgPCAwKSB7Cj4+ICsJCWhlaWdodCArPSBkc3RfeTsKPj4gKwkJc3JjX3kgIC09IGRzdF95Owo+ PiArCQlkc3RfeSAgID0gMDsKPj4gKwl9Cj4+ICsKPj4gKwlpZiAoc3JjX3ggKyB3aWR0aCA+IHNy Yy0+d2lkdGgpCj4+ICsJCXdpZHRoID0gc3JjLT53aWR0aCAtIHNyY194Owo+PiArCWlmIChkc3Rf eCArIHdpZHRoID4gZHN0LT53aWR0aCkKPj4gKwkJd2lkdGggPSBkc3QtPndpZHRoIC0gZHN0X3g7 Cj4+ICsKPj4gKwlpZiAoc3JjX3kgKyBoZWlnaHQgPiBzcmMtPmhlaWdodCkKPj4gKwkJaGVpZ2h0 ID0gc3JjLT5oZWlnaHQgLSBzcmNfeTsKPj4gKwlpZiAoZHN0X3kgKyBoZWlnaHQgPiBkc3QtPmhl aWdodCkKPj4gKwkJaGVpZ2h0ID0gZHN0LT5oZWlnaHQgLSBkc3RfeTsKPj4gKwo+PiArCWlmIChk c3QtPmNhY2hpbmcpIHsKPj4gKwkJaWd0X2Fzc2VydChkZXZpY2UtPmdlbiA+PSAzKTsKPj4gKwkJ aWd0X2Fzc2VydChkZXZpY2UtPmxsYyB8fCAhc3JjLT5jYWNoaW5nKTsKPj4gKwl9Cj4+ICsKPj4g KwltZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7Cj4+ICsJZXhlY2J1Zi5idWZm ZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmopOwo+PiArCWV4ZWNidWYuYnVmZmVyX2NvdW50 ID0gQVJSQVlfU0laRShvYmopOwo+PiArCWlmIChkZXZpY2UtPmdlbiA+PSA2KQo+PiArCQlleGVj YnVmLmZsYWdzID0gSTkxNV9FWEVDX0JMVDsKPj4gKwo+PiArCW1lbXNldChvYmosIDAsIHNpemVv ZihvYmopKTsKPj4gKwlvYmpbMF0uaGFuZGxlID0gZHN0LT5oYW5kbGU7Cj4+ICsJb2JqWzBdLm9m ZnNldCA9IGRzdC0+Z3R0X29mZnNldDsKPj4gKwlpZiAoZHN0LT50aWxpbmcpCj4+ICsJCW9ialsw XS5mbGFncyA9IEVYRUNfT0JKRUNUX05FRURTX0ZFTkNFOwo+PiArCj4+ICsJb2JqWzFdLmhhbmRs ZSA9IHNyYy0+aGFuZGxlOwo+PiArCW9ialsxXS5vZmZzZXQgPSBzcmMtPmd0dF9vZmZzZXQ7Cj4+ ICsJaWYgKHNyYy0+dGlsaW5nKQo+PiArCQlvYmpbMV0uZmxhZ3MgPSBFWEVDX09CSkVDVF9ORUVE U19GRU5DRTsKPj4gKwo+PiArCW1lbXNldChyZWxvYywgMCwgc2l6ZW9mKHJlbG9jKSk7Cj4+ICsJ b2JqWzJdLmhhbmRsZSA9IGdlbV9jcmVhdGUoZGV2aWNlLT5mZCwgNDA5Nik7Cj4+ICsJb2JqWzJd LnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIocmVsb2MpOwo+PiArCW9ialsyXS5yZWxvY2F0 aW9uX2NvdW50ID0gQVJSQVlfU0laRShyZWxvYyk7Cj4+ICsJYmF0Y2ggPSBnZW1fbW1hcF9fY3B1 KGRldmljZS0+ZmQsIG9ialsyXS5oYW5kbGUsIDAsIDQwOTYsIFBST1RfV1JJVEUpOwo+PiArCj4+ ICsJaWYgKChzcmMtPnRpbGluZyB8IGRzdC0+dGlsaW5nKSA+PSBJOTE1X1RJTElOR19ZKSB7Cj4+ ICsJCXVuc2lnbmVkIGludCBtYXNrOwo+PiArCj4+ICsJCWJhdGNoW2krK10gPSBNSV9MT0FEX1JF R0lTVEVSX0lNTTsKPj4gKwkJYmF0Y2hbaSsrXSA9IEJDU19TV0NUUkw7Cj4+ICsKPj4gKwkJbWFz ayA9IChCQ1NfU1JDX1kgfCBCQ1NfRFNUX1kpIDw8IDE2Owo+PiArCQlpZiAoc3JjLT50aWxpbmcg PT0gSTkxNV9USUxJTkdfWSkKPj4gKwkJCW1hc2sgfD0gQkNTX1NSQ19ZOwo+PiArCQlpZiAoZHN0 LT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkKPj4gKwkJCW1hc2sgfD0gQkNTX0RTVF9ZOwo+PiAr CQliYXRjaFtpKytdID0gbWFzazsKPj4gKwl9Cj4+ICsKPj4gKwliYXRjaFtpXSA9IChYWV9TUkNf Q09QWV9CTFRfQ01EIHwKPj4gKwkJICAgIFhZX1NSQ19DT1BZX0JMVF9XUklURV9BTFBIQSB8Cj4+ ICsJCSAgICBYWV9TUkNfQ09QWV9CTFRfV1JJVEVfUkdCKTsKPj4gKwlpZiAoZGV2aWNlLT5nZW4g Pj0gNCAmJiBzcmMtPnRpbGluZykKPj4gKwkJYmF0Y2hbaV0gfD0gWFlfU1JDX0NPUFlfQkxUX1NS Q19USUxFRDsKPj4gKwlpZiAoZGV2aWNlLT5nZW4gPj0gNCAmJiBkc3QtPnRpbGluZykKPj4gKwkJ YmF0Y2hbaV0gfD0gWFlfU1JDX0NPUFlfQkxUX0RTVF9USUxFRDsKPj4gKwliYXRjaFtpKytdIHw9 IDYgKyAyICogaGFzXzY0Yl9yZWxvYzsKPj4gKwo+PiArCXBpdGNoID0gZHN0LT5zdHJpZGU7Cj4+ ICsJaWYgKGRldmljZS0+Z2VuID49IDQgJiYgZHN0LT50aWxpbmcpCj4+ICsJCXBpdGNoIC89IDQ7 Cj4+ICsJYmF0Y2hbaSsrXSA9IDMgPDwgMjQgfCAweGNjIDw8IDE2IHwgcGl0Y2g7Cj4+ICsKPj4g KwliYXRjaFtpKytdID0gZHN0X3kgPDwgMTYgfCBkc3RfeDsKPj4gKwliYXRjaFtpKytdID0gKGhl aWdodCArIGRzdF95KSA8PCAxNiB8ICh3aWR0aCArIGRzdF94KTsKPj4gKwlyZWxvY1swXS50YXJn ZXRfaGFuZGxlID0gb2JqWzBdLmhhbmRsZTsKPj4gKwlyZWxvY1swXS5wcmVzdW1lZF9vZmZzZXQg PSBvYmpbMF0ub2Zmc2V0Owo+PiArCXJlbG9jWzBdLm9mZnNldCA9IHNpemVvZigqYmF0Y2gpICog aTsKPj4gKwlyZWxvY1swXS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fUkVOREVSOwo+ PiArCXJlbG9jWzBdLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVI7Cj4+ICsJ YmF0Y2hbaSsrXSA9IG9ialswXS5vZmZzZXQ7Cj4+ICsJaWYgKGhhc182NGJfcmVsb2MpCj4+ICsJ CWJhdGNoW2krK10gPSBvYmpbMF0ub2Zmc2V0ID4+IDMyOwo+PiArCj4+ICsJYmF0Y2hbaSsrXSA9 IHNyY195IDw8IDE2IHwgc3JjX3g7Cj4+ICsJcGl0Y2ggPSBzcmMtPnN0cmlkZTsKPj4gKwlpZiAo ZGV2aWNlLT5nZW4gPj0gNCAmJiBzcmMtPnRpbGluZykKPj4gKwkJcGl0Y2ggLz0gNDsKPj4gKwli YXRjaFtpKytdID0gcGl0Y2g7Cj4+ICsJcmVsb2NbMV0udGFyZ2V0X2hhbmRsZSA9IG9ialsxXS5o YW5kbGU7Cj4+ICsJcmVsb2NbMV0ucHJlc3VtZWRfb2Zmc2V0ID0gb2JqWzFdLm9mZnNldDsKPj4g KwlyZWxvY1sxXS5vZmZzZXQgPSBzaXplb2YoKmJhdGNoKSAqIGk7Cj4+ICsJcmVsb2NbMV0ucmVh ZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKPj4gKwliYXRjaFtpKytdID0gb2Jq WzFdLm9mZnNldDsKPj4gKwlpZiAoaGFzXzY0Yl9yZWxvYykKPj4gKwkJYmF0Y2hbaSsrXSA9IG9i alsxXS5vZmZzZXQgPj4gMzI7Cj4+ICsKPj4gKwlpZiAoKHNyYy0+dGlsaW5nIHwgZHN0LT50aWxp bmcpID49IEk5MTVfVElMSU5HX1kpIHsKPj4gKwkJaWd0X2Fzc2VydChkZXZpY2UtPmdlbiA+PSA2 KTsKPj4gKwkJYmF0Y2hbaSsrXSA9IE1JX0ZMVVNIX0RXIHwgMjsKPj4gKwkJYmF0Y2hbaSsrXSA9 IDA7Cj4+ICsJCWJhdGNoW2krK10gPSAwOwo+PiArCQliYXRjaFtpKytdID0gMDsKPj4gKwo+PiAr CQliYXRjaFtpKytdID0gTUlfTE9BRF9SRUdJU1RFUl9JTU07Cj4+ICsJCWJhdGNoW2krK10gPSBC Q1NfU1dDVFJMOwo+PiArCQliYXRjaFtpKytdID0gKEJDU19TUkNfWSB8IEJDU19EU1RfWSkgPDwg MTY7Cj4+ICsJfQo+PiArCj4+ICsJYmF0Y2hbaSsrXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4+ ICsJbXVubWFwKGJhdGNoLCA0MDk2KTsKPj4gKwo+PiArCWdlbV9leGVjYnVmKGRldmljZS0+ZmQs ICZleGVjYnVmKTsKPj4gKwlnZW1fY2xvc2UoZGV2aWNlLT5mZCwgb2JqWzJdLmhhbmRsZSk7Cj4+ ICsKPj4gKwlkc3QtPmd0dF9vZmZzZXQgPSBvYmpbMF0ub2Zmc2V0Owo+PiArCXNyYy0+Z3R0X29m ZnNldCA9IG9ialsxXS5vZmZzZXQ7Cj4+ICsKPj4gKwltZW1jcHlfYmx0KHNyYy0+bW9kZWwsIGRz dC0+bW9kZWwsCj4+ICsJCSAgIDR1ICogc3JjLT53aWR0aCwgNHUgKiBkc3QtPndpZHRoLAo+PiAr CQkgICBzcmNfeCwgc3JjX3ksCj4+ICsJCSAgIGRzdF94LCBkc3RfeSwKPj4gKwkJICAgd2lkdGgs IGhlaWdodCk7Cj4+ICt9Cj4+ICsKPj4gK2VudW0gc3RhcnQgewo+PiArCVpFUk8sCj4+ICsJQUJP VkUsCj4+ICsJQkVMT1cKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgc3RhcnRfYXQoaW50IHgs IGVudW0gc3RhcnQgcykKPj4gK3sKPj4gKwlzd2l0Y2ggKHMpIHsKPj4gKwlkZWZhdWx0Ogo+PiAr CWNhc2UgWkVSTzoKPj4gKwkJcmV0dXJuIDA7Cj4+ICsJY2FzZSBBQk9WRToKPj4gKwkJcmV0dXJu IDE7Cj4+ICsJY2FzZSBCRUxPVzoKPj4gKwkJcmV0dXJuIHggLSAxOwo+PiArCX0KPj4gK30KPj4g Kwo+PiAraWd0X21haW4KPj4gK3sKPj4gKwlzdHJ1Y3QgZGV2aWNlIGRldmljZTsKPj4gKwo+PiAr CWlndF9maXh0dXJlIHsKPj4gKwkJZGV2aWNlLmZkID0gZHJtX29wZW5fZHJpdmVyX3JlbmRlcihE UklWRVJfSU5URUwpOwo+PiArCQlpZ3RfcmVxdWlyZV9nZW0oZGV2aWNlLmZkKTsKPj4gKwo+PiAr CQlkZXZpY2UucGNpaWQgPSBpbnRlbF9nZXRfZHJtX2RldmlkKGRldmljZS5mZCk7Cj4+ICsJCWRl dmljZS5nZW4gPSBpbnRlbF9nZW4oZGV2aWNlLnBjaWlkKTsKPj4gKwkJZGV2aWNlLmxsYyA9IGdl bV9oYXNfbGxjKGRldmljZS5mZCk7Cj4+ICsJfQo+PiArCj4+ICsJaWd0X3N1YnRlc3QoImJhc2lj Iikgewo+PiArCQlzdHJ1Y3QgYnVmZmVyICpzcmMsICpkc3Q7Cj4+ICsJCXVuc2lnbmVkIGludCB4 LCB5Owo+PiArCj4+ICsJCWZvciAodW5zaWduZWQgaW50IGhlaWdodCA9IDE7IGhlaWdodCA8PSAx NjsgaGVpZ2h0IDw8PSAxKSB7Cj4+ICsJCQlmb3IgKHVuc2lnbmVkIGludCB5MCA9IFpFUk87IHkw IDw9IChoZWlnaHQgPiAyID8gQkVMT1cgOiBaRVJPKTsgeTArKykgewo+PiArCQkJCWZvciAodW5z aWduZWQgaW50IHdpZHRoID0gMTsgd2lkdGggPD0gNjQ7IHdpZHRoIDw8PSAxKSB7Cj4+ICsJCQkJ CWZvciAodW5zaWduZWQgaW50IHgwID0gWkVSTzsgeDAgPD0gKHdpZHRoID4gMiA/IEJFTE9XIDog WkVSTyk7IHgwKyspIHsKPj4gKwo+PiArCQkJCQkJc3JjID0gYnVmZmVyX2NyZWF0ZSgmZGV2aWNl LAo+PiArCQkJCQkJCQkgICAgd2lkdGggKiAxNiwgaGVpZ2h0ICogNCk7Cj4+ICsJCQkJCQlkc3Qg PSBidWZmZXJfY3JlYXRlKCZkZXZpY2UsCj4+ICsJCQkJCQkJCSAgICB3aWR0aCAqIDE2LCBoZWln aHQgKiA0KTsKPj4gKwo+PiArCQkJCQkJeSA9IHN0YXJ0X2F0KGhlaWdodCwgeTApOwo+PiArCQkJ CQkJZm9yICh1bnNpZ25lZCBpbnQgc3JjX3RpbGluZyA9IEk5MTVfVElMSU5HX05PTkU7Cj4+ICsJ CQkJCQkgICAgIHNyY190aWxpbmcgPD0gKGRldmljZS5nZW4gPj0gNiA/IEk5MTVfVElMSU5HX1kg OiBJOTE1X1RJTElOR19YKTsKPj4gKwkJCQkJCSAgICAgc3JjX3RpbGluZysrKSB7Cj4+ICsJCQkJ CQkJYnVmZmVyX3NldF90aWxpbmcoJmRldmljZSwgc3JjLCBzcmNfdGlsaW5nKTsKPj4gKwo+PiAr CQkJCQkJCXggPSBzdGFydF9hdCh3aWR0aCwgeDApOwo+PiArCQkJCQkJCWZvciAodW5zaWduZWQg aW50IGRzdF90aWxpbmcgPSBJOTE1X1RJTElOR19OT05FOwo+PiArCQkJCQkJCSAgICAgZHN0X3Rp bGluZyA8PSAoZGV2aWNlLmdlbiA+PSA2ID8gSTkxNV9USUxJTkdfWSA6IEk5MTVfVElMSU5HX1gp Owo+PiArCQkJCQkJCSAgICAgZHN0X3RpbGluZysrKSB7Cj4+ICsJCQkJCQkJCWJ1ZmZlcl9zZXRf dGlsaW5nKCZkZXZpY2UsIGRzdCwgZHN0X3RpbGluZyk7Cj4+ICsKPj4gKwkJCQkJCQkJZm9yIChl bnVtIG1vZGUgZG93biA9IENQVTsgZG93biA8PSBXQzsgZG93bisrKSB7CgpJdCBzZWVtcyBsaWtl IG1vZGUgaXMgb25seSB1c2VkIGluIHRoZSBidWZmZXJfY2hlY2sgZnVuY3Rpb24sIHVubGVzcyBJ Cm1pc3NlZCBzb21ldGhpbmcuIE1heSBiZSBpbnN0ZWFkIG9mIGxvb3Bpbmcgb3ZlciBtb2RlIGFu ZCBkb2luZyB0aGUgc2FtZQpibGl0IG9wZXJhdGlvbiBtdWx0aXBsZSB0aW1lcyB3ZSBjYW4ganVz dCBkbyBtb2RlID0gKHdpZHRoICUgMyk/CgpPdGhlciB0aGFuIHRoYXQsIGxvb2tzIGdvb2QgdG8g bWUuCgpSZXZpZXdlZC1ieTogVmFuc2hpZGhhciBLb25kYSA8dmFuc2hpZGhhci5yLmtvbmRhQGlu dGVsLmNvbT4KCj4+ICsJCQkJCQkJCQlpZ3RfZGVidWcoIlRlc3Rpbmcgc3JjX3RpbGluZz0lZCwg ZHN0X3RpbGluZz0lZCwgZG93bj0lZCBhdCAoJWQsICVkKSB4ICglZCwgJWQpXG4iLAo+PiArCQkJ CQkJCQkJCSAgc3JjX3RpbGluZywKPj4gKwkJCQkJCQkJCQkgIGRzdF90aWxpbmcsCj4+ICsJCQkJ CQkJCQkJICBkb3duLCB4LCB5LAo+PiArCQkJCQkJCQkJCSAgd2lkdGgsIGhlaWdodCk7Cj4+ICsK Pj4gKwkJCQkJCQkJCWlndF9hc3NlcnQoeCArIHdpZHRoIDw9IGRzdC0+d2lkdGgpOwo+PiArCQkJ CQkJCQkJaWd0X2Fzc2VydCh5ICsgaGVpZ2h0IDw9IGRzdC0+aGVpZ2h0KTsKPj4gKwo+PiArCQkJ CQkJCQkJYmxpdCgmZGV2aWNlLAo+PiArCQkJCQkJCQkJICAgICBzcmMsIHgsIHksCj4+ICsJCQkJ CQkJCQkgICAgIGRzdCwgeCwgeSwKPj4gKwkJCQkJCQkJCSAgICAgd2lkdGgsIGhlaWdodCk7Cj4+ ICsJCQkJCQkJCQlpZ3RfYXNzZXJ0KGJ1ZmZlcl9jaGVjaygmZGV2aWNlLCBkc3QsIGRvd24pKTsK Pj4gKwo+PiArCQkJCQkJCQkJeCArPSB3aWR0aDsKPj4gKwkJCQkJCQkJfQo+PiArCQkJCQkJCX0K Pj4gKwo+PiArCQkJCQkJCXkgKz0gaGVpZ2h0Owo+PiArCQkJCQkJfQo+PiArCj4+ICsJCQkJCQli dWZmZXJfZnJlZSgmZGV2aWNlLCBkc3QpOwo+PiArCQkJCQkJYnVmZmVyX2ZyZWUoJmRldmljZSwg c3JjKTsKPj4gKwkJCQkJfQo+PiArCQkJCX0KPj4gKwkJCX0KPj4gKwkJfQo+PiArCX0KPj4gK30K Pj4gZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKPj4g aW5kZXggM2YzZWVlMjc3Li45OGYyZGI1NTUgMTAwNjQ0Cj4+IC0tLSBhL3Rlc3RzL21lc29uLmJ1 aWxkCj4+ICsrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCj4+IEBAIC0xMDYsNiArMTA2LDcgQEAgaTkx NV9wcm9ncyA9IFsKPj4gIAknZ2VuM19yZW5kZXJfdGlsZWR5X2JsaXRzJywKPj4gIAknZ2VtX2Jh ZF9yZWxvYycsCj4+ICAJJ2dlbV9iYXNpYycsCj4+ICsJJ2dlbV9ibGl0cycsCj4+ICAJJ2dlbV9i dXN5JywKPj4gIAknZ2VtX2NhY2hpbmcnLAo+PiAgCSdnZW1fY2xvc2UnLAo+PiAtLQo+PiAyLjI0 LjAKPj4KPkNvZGUgbG9va3MgZ29vZCwgYnV0IEkgdGhpbmsgdGhhdCBWYW5zaGlkaGFyIEtvbmRh IHNob3VsZCBsb29rIG1vcmUgY2xvc2VseSBhdAo+ZGV0YWlscy4KPkthc2lhCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0 CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==