From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 05/26] drm/dp_mst: Add sideband down request tracing + selftests Date: Tue, 27 Aug 2019 19:15:10 +0200 Message-ID: <20190827171510.GF2112@phenom.ffwll.local> References: <20190718014329.8107-1-lyude@redhat.com> <20190718014329.8107-6-lyude@redhat.com> <20190813145048.GV7444@phenom.ffwll.local> <70c42b3ae529d51c79b3ab9bb2c604549413d808.camel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id DF7B2896E4 for ; Tue, 27 Aug 2019 17:15:15 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id s49so32331937edb.1 for ; Tue, 27 Aug 2019 10:15:15 -0700 (PDT) Content-Disposition: inline In-Reply-To: <70c42b3ae529d51c79b3ab9bb2c604549413d808.camel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lyude Paul Cc: Thomas Hellstrom , Maxime Ripard , Sean Paul , Alexandru Gheorghe , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, David Airlie , Juston Li , Deepak Rawat , Harry Wentland List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBdWcgMjcsIDIwMTkgYXQgMTI6NDk6MTdQTSAtMDQwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBPbiBUdWUsIDIwMTktMDgtMTMgYXQgMTY6NTAgKzAyMDAsIERhbmllbCBWZXR0ZXIgd3Jv dGU6Cj4gPiBPbiBXZWQsIEp1bCAxNywgMjAxOSBhdCAwOTo0MjoyOFBNIC0wNDAwLCBMeXVkZSBQ YXVsIHdyb3RlOgo+ID4gPiBVbmZvcnR1bmF0ZWx5IHRoZSBEUCBNU1QgaGVscGVycyBkbyBub3Qg aGF2ZSBtdWNoIGluIHRoZSB3YXkgb2YKPiA+ID4gZGVidWdnaW5nIHV0aWxpdGllcy4gU28sIGxl dCdzIGFkZCBzb21lIQo+ID4gPiAKPiA+ID4gVGhpcyBhZGRzIGJhc2ljIGRlYnVnZ2luZyBvdXRw dXQgZm9yIGRvd24gc2lkZWJhbmQgcmVxdWVzdHMgdGhhdCB3ZSBzZW5kCj4gPiA+IGZyb20gdGhl IGRyaXZlciwgc28gdGhhdCB3ZSBjYW4gYWN0dWFsbHkgZGlzY2VybiB3aGF0J3MgaGFwcGVuaW5n IHdoZW4KPiA+ID4gc2lkZWJhbmQgcmVxdWVzdHMgdGltZW91dC4gTm90ZSB0aGF0IHdpdGggdGhp cyBjb21taXQsIHdlJ2xsIGJlIGR1bXBpbmcKPiA+ID4gb3V0IHNpZGViYW5kIHJlcXVlc3RzIHVu ZGVyIGJvdGggb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4gPiAKPiA+ID4gLSBXaGVu IHRoZSB1c2VyIGhhcyBlbmFibGVkIERSTV9VVF9EUCBvdXRwdXQsIG9mIGNvdXJzZS4KPiA+ID4g LSBXaGVuIHRoZSB1c2VyIGhhcyBlbmFibGVkIERSTV9VVF9LTVMgb3IgRFJNX1VUX0RQLCBhbmQg YSBzaWRlYmFuZAo+ID4gPiAgIHJlcXVlc3QgaGFzIGZhaWxlZCBpbiBzb21lIHdheS4gVGhpcyB3 aWxsIGFsbG93IGZvciBkZXZlbG9wZXJzIHRvIGdldAo+ID4gPiAgIGEgYmFzaWMgaWRlYSBvZiB3 aGF0J3MgYWN0dWFsbHkgaGFwcGVuaW5nIHdpdGggZmFpbGVkIG1vZGVzZXRzIG9uIE1TVCwKPiA+ ID4gICB3aXRob3V0IG5lZWRpbmcgdG8gaGF2ZSBEUk1fVVRfRFAgZXhwbGljaXRseSBlbmFibGVk Lgo+ID4gPiAKPiA+ID4gU2luY2UgdGhlcmUgd2Fzbid0IHJlYWxseSBhIGdvb2Qgd2F5IG9mIHRl c3RpbmcgdGhhdCBhbnkgb2YgdGhpcyB3b3JrZWQsCj4gPiA+IEkgZW5kZWQgdXAgd3JpdGluZyBz aW1wbGUgc2VsZnRlc3RzIHRoYXQgbGlnaHRseSB0ZXN0IHNpZGViYW5kIG1lc3NhZ2UKPiA+ID4g ZW5jb2RpbmcgYW5kIGRlY29kaW5nIGFzIHdlbGwuIEVuam95IQo+ID4gPiAKPiA+ID4gQ2M6IEp1 c3RvbiBMaSA8anVzdG9uLmxpQGludGVsLmNvbT4KPiA+ID4gQ2M6IEltcmUgRGVhayA8aW1yZS5k ZWFrQGludGVsLmNvbT4KPiA+ID4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+Cj4gPiA+IENjOiBIYXJyeSBXZW50bGFuZCA8aHdlbnRsYW5AYW1kLmNv bT4KPiA+ID4gU2lnbmVkLW9mZi1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4KPiA+ ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jICAgICAg ICAgfCAzMDggKysrKysrKysrKysrKysrKystCj4gPiA+ICAuLi4vZ3B1L2RybS9kcm1fZHBfbXN0 X3RvcG9sb2d5X2ludGVybmFsLmggICAgfCAgMjQgKysKPiA+ID4gIC4uLi9ncHUvZHJtL3NlbGZ0 ZXN0cy9kcm1fbW9kZXNldF9zZWxmdGVzdHMuaCB8ICAgMSArCj4gPiA+ICAuLi4vZHJtL3NlbGZ0 ZXN0cy90ZXN0LWRybV9kcF9tc3RfaGVscGVyLmMgICAgfCAyMTIgKysrKysrKysrKysrCj4gPiA+ ICAuLi4vZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9tb2Rlc2V0X2NvbW1vbi5oICAgfCAgIDEgKwo+ ID4gPiAgaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaCAgICAgICAgICAgICAgIHwgICAy ICstCj4gPiA+ICA2IGZpbGVzIGNoYW5nZWQsIDU0MyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9u cygtKQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0 X3RvcG9sb2d5X2ludGVybmFsLmgKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2RybV9k cF9tc3RfdG9wb2xvZ3kuYwo+ID4gPiBpbmRleCA5ZTM4MjExNzg5NmQuLmRlZmM1ZTA5ZmI5YSAx MDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwo+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCj4gPiA+IEBA IC0zNiw2ICszNiw4IEBACj4gPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPgo+ID4gPiAg I2luY2x1ZGUgPGRybS9kcm1fcHJvYmVfaGVscGVyLmg+Cj4gPiA+ICAKPiA+ID4gKyNpbmNsdWRl ICJkcm1fZHBfbXN0X3RvcG9sb2d5X2ludGVybmFsLmgiCj4gPiA+ICsKPiA+ID4gIC8qKgo+ID4g PiAgICogRE9DOiBkcCBtc3QgaGVscGVyCj4gPiA+ICAgKgo+ID4gPiBAQCAtNjgsNiArNzAsOCBA QCBzdGF0aWMgaW50IGRybV9kcF9tc3RfcmVnaXN0ZXJfaTJjX2J1cyhzdHJ1Y3QgZHJtX2RwX2F1 eAo+ID4gPiAqYXV4KTsKPiA+ID4gIHN0YXRpYyB2b2lkIGRybV9kcF9tc3RfdW5yZWdpc3Rlcl9p MmNfYnVzKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgpOwo+ID4gPiAgc3RhdGljIHZvaWQgZHJtX2Rw X21zdF9raWNrX3R4KHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyKTsKPiA+ID4g IAo+ID4gPiArI2RlZmluZSBEQkdfUFJFRklYICJbZHBfbXN0XSIKPiA+ID4gKwo+ID4gPiAgI2Rl ZmluZSBEUF9TVFIoeCkgW0RQXyAjIyB4XSA9ICN4Cj4gPiA+ICAKPiA+ID4gIHN0YXRpYyBjb25z dCBjaGFyICpkcm1fZHBfbXN0X3JlcV90eXBlX3N0cih1OCByZXFfdHlwZSkKPiA+ID4gQEAgLTEy NCw2ICsxMjgsNDMgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmRybV9kcF9tc3RfbmFrX3JlYXNvbl9z dHIodTgKPiA+ID4gbmFrX3JlYXNvbikKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAgI3VuZGVmIERQ X1NUUgo+ID4gPiArI2RlZmluZSBEUF9TVFIoeCkgW0RSTV9EUF9TSURFQkFORF9UWF8gIyMgeF0g PSAjeAo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqZHJtX2RwX21zdF9zaWRlYmFu ZF90eF9zdGF0ZV9zdHIoaW50IHN0YXRlKQo+ID4gPiArewo+ID4gPiArCXN0YXRpYyBjb25zdCBj aGFyICogY29uc3Qgc2lkZWJhbmRfcmVhc29uX3N0cltdID0gewo+ID4gPiArCQlEUF9TVFIoUVVF VUVEKSwKPiA+ID4gKwkJRFBfU1RSKFNUQVJUX1NFTkQpLAo+ID4gPiArCQlEUF9TVFIoU0VOVCks Cj4gPiA+ICsJCURQX1NUUihSWCksCj4gPiA+ICsJCURQX1NUUihUSU1FT1VUKSwKPiA+ID4gKwl9 Owo+ID4gPiArCj4gPiA+ICsJaWYgKHN0YXRlID49IEFSUkFZX1NJWkUoc2lkZWJhbmRfcmVhc29u X3N0cikgfHwKPiA+ID4gKwkgICAgIXNpZGViYW5kX3JlYXNvbl9zdHJbc3RhdGVdKQo+ID4gPiAr CQlyZXR1cm4gInVua25vd24iOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIHNpZGViYW5kX3JlYXNv bl9zdHJbc3RhdGVdOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50Cj4gPiA+ICtk cm1fZHBfbXN0X3JhZF90b19zdHIoY29uc3QgdTggcmFkWzhdLCB1OCBsY3QsIGNoYXIgKm91dCwg c2l6ZV90IGxlbikKPiA+ID4gK3sKPiA+ID4gKwlpbnQgaTsKPiA+ID4gKwl1OCB1bnBhY2tlZF9y YWRbMTZdOwo+ID4gPiArCj4gPiA+ICsJZm9yIChpID0gMDsgaSA8IGxjdDsgaSsrKSB7Cj4gPiA+ ICsJCWlmIChpICUgMikKPiA+ID4gKwkJCXVucGFja2VkX3JhZFtpXSA9IHJhZFtpIC8gMl0gPj4g NDsKPiA+ID4gKwkJZWxzZQo+ID4gPiArCQkJdW5wYWNrZWRfcmFkW2ldID0gcmFkW2kgLyAyXSAm IEJJVF9NQVNLKDQpOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCS8qIFRPRE86IEV2ZW50dWFs bHkgYWRkIHNvbWV0aGluZyB0byBwcmludGsgc28gd2UgY2FuIGZvcm1hdCB0aGUgcmFkCj4gPiA+ ICsJICogbGlrZSB0aGlzOiAxLjIuMwo+ID4gPiArCSAqLwo+ID4gCj4gPiAJbGN0ICo9MjsKPiA+ IAo+ID4gbWlzc2luZyBoZXJlPyBBbmQgeWVhaCB0aGUgdG9kbyB3b3VsZCBiZSBzd2VldCwgYnV0 IHF1aXRlIGEgYml0IG1vcmUKPiA+IHR5cGluZyBJIGd1ZXNzLgo+ID4gCj4gPiA+ICsJcmV0dXJu IHNucHJpbnRmKG91dCwgbGVuLCAiJSpwaEMiLCBsY3QsIHVucGFja2VkX3JhZCk7Cj4gPiA+ICt9 Cj4gPiA+ICAKPiA+ID4gIC8qIHNpZGViYW5kIG1zZyBoYW5kbGluZyAqLwo+ID4gPiAgc3RhdGlj IHU4IGRybV9kcF9tc2dfaGVhZGVyX2NyYzQoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IG51 bV9uaWJibGVzKQo+ID4gPiBAQCAtMjU2LDggKzI5Nyw5IEBAIHN0YXRpYyBib29sIGRybV9kcF9k ZWNvZGVfc2lkZWJhbmRfbXNnX2hkcihzdHJ1Y3QKPiA+ID4gZHJtX2RwX3NpZGViYW5kX21zZ19o ZHIgKmhkciwKPiA+ID4gIAlyZXR1cm4gdHJ1ZTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAtc3Rh dGljIHZvaWQgZHJtX2RwX2VuY29kZV9zaWRlYmFuZF9yZXEoc3RydWN0Cj4gPiA+IGRybV9kcF9z aWRlYmFuZF9tc2dfcmVxX2JvZHkgKnJlcSwKPiA+ID4gLQkJCQkgICAgICAgc3RydWN0IGRybV9k cF9zaWRlYmFuZF9tc2dfdHggKnJhdykKPiA+ID4gK3ZvaWQKPiA+ID4gK2RybV9kcF9lbmNvZGVf c2lkZWJhbmRfcmVxKGNvbnN0IHN0cnVjdCBkcm1fZHBfc2lkZWJhbmRfbXNnX3JlcV9ib2R5Cj4g PiA+ICpyZXEsCj4gPiA+ICsJCQkgICBzdHJ1Y3QgZHJtX2RwX3NpZGViYW5kX21zZ190eCAqcmF3 KQo+ID4gPiAgewo+ID4gPiAgCWludCBpZHggPSAwOwo+ID4gPiAgCWludCBpOwo+ID4gPiBAQCAt MzYyLDYgKzQwNCwyNDkgQEAgc3RhdGljIHZvaWQgZHJtX2RwX2VuY29kZV9zaWRlYmFuZF9yZXEo c3RydWN0Cj4gPiA+IGRybV9kcF9zaWRlYmFuZF9tc2dfcmVxX2JvZHkgKnJlcSwKPiA+ID4gIAl9 Cj4gPiA+ICAJcmF3LT5jdXJfbGVuID0gaWR4Owo+ID4gPiAgfQo+ID4gPiArRVhQT1JUX1NZTUJP TF9GT1JfVEVTVFNfT05MWShkcm1fZHBfZW5jb2RlX3NpZGViYW5kX3JlcSk7Cj4gPiA+ICsKPiA+ ID4gKy8qIERlY29kZSBhIHNpZGViYW5kIHJlcXVlc3Qgd2UndmUgZW5jb2RlZCwgbWFpbmx5IHVz ZWQgZm9yIGRlYnVnZ2luZyAqLwo+ID4gPiAraW50Cj4gPiA+ICtkcm1fZHBfZGVjb2RlX3NpZGVi YW5kX3JlcShjb25zdCBzdHJ1Y3QgZHJtX2RwX3NpZGViYW5kX21zZ190eCAqcmF3LAo+ID4gPiAr CQkJICAgc3RydWN0IGRybV9kcF9zaWRlYmFuZF9tc2dfcmVxX2JvZHkgKnJlcSkKPiA+ID4gK3sK PiA+ID4gKwljb25zdCB1OCAqYnVmID0gcmF3LT5tc2c7Cj4gPiA+ICsJaW50IGksIGlkeCA9IDA7 Cj4gPiA+ICsKPiA+ID4gKwlyZXEtPnJlcV90eXBlID0gYnVmW2lkeCsrXSAmIDB4N2Y7Cj4gPiA+ ICsJc3dpdGNoIChyZXEtPnJlcV90eXBlKSB7Cj4gPiA+ICsJY2FzZSBEUF9FTlVNX1BBVEhfUkVT T1VSQ0VTOgo+ID4gPiArCWNhc2UgRFBfUE9XRVJfRE9XTl9QSFk6Cj4gPiA+ICsJY2FzZSBEUF9Q T1dFUl9VUF9QSFk6Cj4gPiAKPiA+IE9DRCB3YXJuaW5nOiB0aGUgZW51bSBpc24ndCBvcmRlcmVk IHRoZSBzYW1lIHdheSBoZXJlIGFuZCBpbgo+ID4gZHJtX2RwX2VuY29kZV9zaWRlYmFuZF9yZXEo KS4KPiA+IAo+ID4gPiArCQlyZXEtPnUucG9ydF9udW0ucG9ydF9udW1iZXIgPSAoYnVmW2lkeF0g Pj4gNCkgJiAweGY7Cj4gPiA+ICsJCWJyZWFrOwo+ID4gPiArCWNhc2UgRFBfQUxMT0NBVEVfUEFZ TE9BRDoKPiA+ID4gKwkJewo+ID4gPiArCQkJc3RydWN0IGRybV9kcF9hbGxvY2F0ZV9wYXlsb2Fk ICphID0KPiA+ID4gKwkJCQkmcmVxLT51LmFsbG9jYXRlX3BheWxvYWQ7Cj4gPiA+ICsKPiA+ID4g KwkJCWEtPm51bWJlcl9zZHBfc3RyZWFtcyA9IGJ1ZltpZHhdICYgMHhmOwo+ID4gPiArCQkJYS0+ cG9ydF9udW1iZXIgPSAoYnVmW2lkeF0gPj4gNCkgJiAweGY7Cj4gPiA+ICsKPiA+ID4gKwkJCWEt PnZjcGkgPSBidWZbKytpZHhdICYgMHg3ZjsKPiA+IAo+ID4gQ29tcGxhaW4gaGVyZSBpZiAweDgw IGlzIHNldD8KPiA+IAo+ID4gPiArCj4gPiA+ICsJCQlhLT5wYm4gPSBidWZbKytpZHhdIDw8IDg7 Cj4gPiA+ICsJCQlhLT5wYm4gfD0gYnVmWysraWR4XTsKPiA+ID4gKwo+ID4gPiArCQkJaWR4Kys7 Cj4gPiA+ICsJCQlmb3IgKGkgPSAwOyBpIDwgYS0+bnVtYmVyX3NkcF9zdHJlYW1zOyBpKyspIHsK PiA+ID4gKwkJCQlhLT5zZHBfc3RyZWFtX3NpbmtbaV0gPQo+ID4gPiArCQkJCQkoYnVmW2lkeCAr IChpIC8gMildID4+ICgoaSAlIDIpID8gMCA6Cj4gPiA+IDQpKSAmIDB4ZjsKPiA+ID4gKwkJCX0K PiA+ID4gKwkJfQo+ID4gPiArCQlicmVhazsKPiA+ID4gKwljYXNlIERQX1FVRVJZX1BBWUxPQUQ6 Cj4gPiA+ICsJCXJlcS0+dS5xdWVyeV9wYXlsb2FkLnBvcnRfbnVtYmVyID0gKGJ1ZltpZHhdID4+ IDQpICYgMHhmOwo+ID4gPiArCQlyZXEtPnUucXVlcnlfcGF5bG9hZC52Y3BpID0gYnVmWysraWR4 XSAmIDB4N2Y7Cj4gPiAKPiA+IFNhbWUgaGVyZSBmb3IgdGhlIGhpZ2hlc3QgYml0Pwo+ID4gCj4g PiA+ICsJCWJyZWFrOwo+ID4gPiArCWNhc2UgRFBfUkVNT1RFX0RQQ0RfUkVBRDoKPiA+ID4gKwkJ ewo+ID4gPiArCQkJc3RydWN0IGRybV9kcF9yZW1vdGVfZHBjZF9yZWFkICpyID0gJnJlcS0+dS5k cGNkX3JlYWQ7Cj4gPiA+ICsKPiA+ID4gKwkJCXItPnBvcnRfbnVtYmVyID0gKGJ1ZltpZHhdID4+ IDQpICYgMHhmOwo+ID4gPiArCj4gPiA+ICsJCQlyLT5kcGNkX2FkZHJlc3MgPSAoYnVmW2lkeF0g PDwgMTYpICYgMHhmMDAwMDsKPiA+ID4gKwkJCXItPmRwY2RfYWRkcmVzcyB8PSAoYnVmWysraWR4 XSA8PCA4KSAmIDB4ZmYwMDsKPiA+ID4gKwkJCXItPmRwY2RfYWRkcmVzcyB8PSBidWZbKytpZHhd ICYgMHhmZjsKPiA+ID4gKwo+ID4gPiArCQkJci0+bnVtX2J5dGVzID0gYnVmWysraWR4XTsKPiA+ ID4gKwkJfQo+ID4gPiArCQlicmVhazsKPiA+ID4gKwljYXNlIERQX1JFTU9URV9EUENEX1dSSVRF Ogo+ID4gPiArCQl7Cj4gPiA+ICsJCQlzdHJ1Y3QgZHJtX2RwX3JlbW90ZV9kcGNkX3dyaXRlICp3 ID0KPiA+ID4gKwkJCQkmcmVxLT51LmRwY2Rfd3JpdGU7Cj4gPiA+ICsKPiA+ID4gKwkJCXctPnBv cnRfbnVtYmVyID0gKGJ1ZltpZHhdID4+IDQpICYgMHhmOwo+ID4gPiArCj4gPiA+ICsJCQl3LT5k cGNkX2FkZHJlc3MgPSAoYnVmW2lkeF0gPDwgMTYpICYgMHhmMDAwMDsKPiA+ID4gKwkJCXctPmRw Y2RfYWRkcmVzcyB8PSAoYnVmWysraWR4XSA8PCA4KSAmIDB4ZmYwMDsKPiA+ID4gKwkJCXctPmRw Y2RfYWRkcmVzcyB8PSBidWZbKytpZHhdICYgMHhmZjsKPiA+ID4gKwo+ID4gPiArCQkJdy0+bnVt X2J5dGVzID0gYnVmWysraWR4XTsKPiA+ID4gKwo+ID4gPiArCQkJdy0+Ynl0ZXMgPSBrbWVtZHVw KCZidWZbKytpZHhdLCB3LT5udW1fYnl0ZXMsCj4gPiA+ICsJCQkJCSAgIEdGUF9LRVJORUwpOwo+ ID4gCj4gPiBCdXQgaWYgd2UgZ28gcmVhbGx5IHN0cmljdCBvbiB2YWxpZGF0aW9uIHdlJ2QgbmVl ZCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QKPiA+IHdhbGsgcGFzdCByYXctPmN1cl9sZW4gLi4uIHBy b2JhYmx5IG5vdCB3b3J0aCBpdD8KPiA+IAo+ID4gPiArCQkJaWYgKCF3LT5ieXRlcykKPiA+ID4g KwkJCQlyZXR1cm4gLUVOT01FTTsKPiA+ID4gKwkJfQo+ID4gPiArCQlicmVhazsKPiA+ID4gKwlj YXNlIERQX1JFTU9URV9JMkNfUkVBRDoKPiA+ID4gKwkJewo+ID4gPiArCQkJc3RydWN0IGRybV9k cF9yZW1vdGVfaTJjX3JlYWQgKnIgPSAmcmVxLT51LmkyY19yZWFkOwo+ID4gPiArCQkJc3RydWN0 IGRybV9kcF9yZW1vdGVfaTJjX3JlYWRfdHggKnR4Owo+ID4gPiArCQkJYm9vbCBmYWlsZWQgPSBm YWxzZTsKPiA+ID4gKwo+ID4gPiArCQkJci0+bnVtX3RyYW5zYWN0aW9ucyA9IGJ1ZltpZHhdICYg MHgzOwo+ID4gPiArCQkJci0+cG9ydF9udW1iZXIgPSAoYnVmW2lkeF0gPj4gNCkgJiAweGY7Cj4g PiA+ICsJCQlmb3IgKGkgPSAwOyBpIDwgci0+bnVtX3RyYW5zYWN0aW9uczsgaSsrKSB7Cj4gPiA+ ICsJCQkJdHggPSAmci0+dHJhbnNhY3Rpb25zW2ldOwo+ID4gPiArCj4gPiA+ICsJCQkJdHgtPmky Y19kZXZfaWQgPSBidWZbKytpZHhdICYgMHg3ZjsKPiA+ID4gKwkJCQl0eC0+bnVtX2J5dGVzID0g YnVmWysraWR4XTsKPiA+ID4gKwkJCQl0eC0+Ynl0ZXMgPSBrbWVtZHVwKCZidWZbKytpZHhdLAo+ ID4gPiArCQkJCQkJICAgIHR4LT5udW1fYnl0ZXMsCj4gPiA+ICsJCQkJCQkgICAgR0ZQX0tFUk5F TCk7Cj4gPiA+ICsJCQkJaWYgKCF0eC0+Ynl0ZXMpIHsKPiA+ID4gKwkJCQkJZmFpbGVkID0gdHJ1 ZTsKPiA+ID4gKwkJCQkJYnJlYWs7Cj4gPiA+ICsJCQkJfQo+ID4gPiArCQkJCWlkeCArPSB0eC0+ bnVtX2J5dGVzOwo+ID4gPiArCQkJCXR4LT5ub19zdG9wX2JpdCA9IChidWZbaWR4XSA+PiA1KSAm IDB4MTsKPiA+ID4gKwkJCQl0eC0+aTJjX3RyYW5zYWN0aW9uX2RlbGF5ID0gYnVmW2lkeF0gJiAw eGY7Cj4gPiA+ICsJCQl9Cj4gPiA+ICsKPiA+ID4gKwkJCWlmIChmYWlsZWQpIHsKPiA+ID4gKwkJ CQlmb3IgKGkgPSAwOyBpIDwgci0+bnVtX3RyYW5zYWN0aW9uczsgaSsrKQo+ID4gPiArCQkJCQlr ZnJlZSh0eC0+Ynl0ZXMpOwo+ID4gPiArCQkJCXJldHVybiAtRU5PTUVNOwo+ID4gPiArCQkJfQo+ ID4gPiArCj4gPiA+ICsJCQlyLT5yZWFkX2kyY19kZXZpY2VfaWQgPSBidWZbKytpZHhdICYgMHg3 ZjsKPiA+ID4gKwkJCXItPm51bV9ieXRlc19yZWFkID0gYnVmWysraWR4XTsKPiA+ID4gKwkJfQo+ ID4gPiArCQlicmVhazsKPiA+ID4gKwljYXNlIERQX1JFTU9URV9JMkNfV1JJVEU6Cj4gPiA+ICsJ CXsKPiA+ID4gKwkJCXN0cnVjdCBkcm1fZHBfcmVtb3RlX2kyY193cml0ZSAqdyA9ICZyZXEtPnUu aTJjX3dyaXRlOwo+ID4gPiArCj4gPiA+ICsJCQl3LT5wb3J0X251bWJlciA9IChidWZbaWR4XSA+ PiA0KSAmIDB4ZjsKPiA+ID4gKwkJCXctPndyaXRlX2kyY19kZXZpY2VfaWQgPSBidWZbKytpZHhd ICYgMHg3ZjsKPiA+ID4gKwkJCXctPm51bV9ieXRlcyA9IGJ1ZlsrK2lkeF07Cj4gPiA+ICsJCQl3 LT5ieXRlcyA9IGttZW1kdXAoJmJ1ZlsrK2lkeF0sIHctPm51bV9ieXRlcywKPiA+ID4gKwkJCQkJ ICAgR0ZQX0tFUk5FTCk7Cj4gPiA+ICsJCQlpZiAoIXctPmJ5dGVzKQo+ID4gPiArCQkJCXJldHVy biAtRU5PTUVNOwo+ID4gPiArCQl9Cj4gPiA+ICsJCWJyZWFrOwo+ID4gPiArCX0KPiA+IAo+ID4g Rm9yIHNhZmV0eTogU2hvdWxkIHdlIHZhbGlkYXRlIGN1cl9sZW4gaGVyZT8gT3IgcmV0dXJuIGl0 LCBhbmQgbGV0IHRoZQo+ID4gY2FsbGVyIGRlYWwgd2l0aCBhbnkgbWlzbWF0Y2hlcy4KPiA+IAo+ ID4gQnV0IEknbSBraW5kYSBsZWFuaW5nIHRvd2FyZHMgbm8gc2FmZXR5IGhlcmUsIHNpbmNlIGl0 J3Mgbm90IGRlYWxpbmcgd2l0aAo+ID4gYW55IHJlcGxpZXMgd2UgZ2V0IGZyb20gdGhlIGh3L2V4 dGVybmFsbHksIHdoaWNoIG1pZ2h0IGJlIHVzZWQgZm9yCj4gPiBhdHRhY2tpbmcgdXMuIElmIHdl IGxhdGVyIG9uIGhhdmUgdGhlIHNhbWUgdGhpbmcgYnV0IGZvcgo+ID4gZHJtX2RwX3NpZGViYW5k X3BhcnNlX3JlcGx5KCkgdGhlbiBhIGxvdCBtb3JlIGZ1bi4KPiA+IAo+ID4gPiArCj4gPiA+ICsJ cmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICtFWFBPUlRfU1lNQk9MX0ZPUl9URVNUU19PTkxZKGRy bV9kcF9kZWNvZGVfc2lkZWJhbmRfcmVxKTsKPiA+ID4gKwo+ID4gPiArdm9pZAo+ID4gPiArZHJt X2RwX2R1bXBfc2lkZWJhbmRfbXNnX3JlcV9ib2R5KGNvbnN0IHN0cnVjdAo+ID4gPiBkcm1fZHBf c2lkZWJhbmRfbXNnX3JlcV9ib2R5ICpyZXEsCj4gPiA+ICsJCQkJICBpbnQgaW5kZW50LCBzdHJ1 Y3QgZHJtX3ByaW50ZXIgKnByaW50ZXIpCj4gPiA+ICt7Cj4gPiA+ICsJaW50IGk7Cj4gPiA+ICsK PiA+ID4gKyNkZWZpbmUgUChmLCAuLi4pIGRybV9wcmludGZfaW5kZW50KHByaW50ZXIsIGluZGVu dCwgZiwgIyNfX1ZBX0FSR1NfXykKPiA+ID4gKwlpZiAocmVxLT5yZXFfdHlwZSA9PSBEUF9MSU5L X0FERFJFU1MpIHsKPiA+ID4gKwkJLyogTm8gY29udGVudHMgdG8gcHJpbnQgKi8KPiA+ID4gKwkJ UCgidHlwZT0lc1xuIiwgZHJtX2RwX21zdF9yZXFfdHlwZV9zdHIocmVxLT5yZXFfdHlwZSkpOwo+ ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJUCgidHlwZT0lcyBjb250 ZW50czpcbiIsIGRybV9kcF9tc3RfcmVxX3R5cGVfc3RyKHJlcS0+cmVxX3R5cGUpKTsKPiA+ID4g KwlpbmRlbnQrKzsKPiA+ID4gKwo+ID4gPiArCXN3aXRjaCAocmVxLT5yZXFfdHlwZSkgewo+ID4g PiArCWNhc2UgRFBfRU5VTV9QQVRIX1JFU09VUkNFUzoKPiA+ID4gKwljYXNlIERQX1BPV0VSX0RP V05fUEhZOgo+ID4gPiArCWNhc2UgRFBfUE9XRVJfVVBfUEhZOgo+ID4gPiArCQlQKCJwb3J0PSVk XG4iLCByZXEtPnUucG9ydF9udW0ucG9ydF9udW1iZXIpOwo+ID4gPiArCQlicmVhazsKPiA+ID4g KwljYXNlIERQX0FMTE9DQVRFX1BBWUxPQUQ6Cj4gPiA+ICsJCVAoInBvcnQ9JWQgdmNwaT0lZCBw Ym49JWQgc2RwX3N0cmVhbXM9JWQgJSpwaFxuIiwKPiA+ID4gKwkJICByZXEtPnUuYWxsb2NhdGVf cGF5bG9hZC5wb3J0X251bWJlciwKPiA+ID4gKwkJICByZXEtPnUuYWxsb2NhdGVfcGF5bG9hZC52 Y3BpLCByZXEtPnUuYWxsb2NhdGVfcGF5bG9hZC5wYm4sCj4gPiA+ICsJCSAgcmVxLT51LmFsbG9j YXRlX3BheWxvYWQubnVtYmVyX3NkcF9zdHJlYW1zLAo+ID4gPiArCQkgIHJlcS0+dS5hbGxvY2F0 ZV9wYXlsb2FkLm51bWJlcl9zZHBfc3RyZWFtcywKPiA+ID4gKwkJICByZXEtPnUuYWxsb2NhdGVf cGF5bG9hZC5zZHBfc3RyZWFtX3NpbmspOwo+ID4gPiArCQlicmVhazsKPiA+ID4gKwljYXNlIERQ X1FVRVJZX1BBWUxPQUQ6Cj4gPiA+ICsJCVAoInBvcnQ9JWQgdmNwaT0lZFxuIiwKPiA+ID4gKwkJ ICByZXEtPnUucXVlcnlfcGF5bG9hZC5wb3J0X251bWJlciwKPiA+ID4gKwkJICByZXEtPnUucXVl cnlfcGF5bG9hZC52Y3BpKTsKPiA+ID4gKwkJYnJlYWs7Cj4gPiA+ICsJY2FzZSBEUF9SRU1PVEVf RFBDRF9SRUFEOgo+ID4gPiArCQlQKCJwb3J0PSVkIGRwY2RfYWRkcj0lMDV4IGxlbj0lZFxuIiwK PiA+ID4gKwkJICByZXEtPnUuZHBjZF9yZWFkLnBvcnRfbnVtYmVyLCByZXEtPnUuZHBjZF9yZWFk LmRwY2RfYWRkcmVzcywKPiA+ID4gKwkJICByZXEtPnUuZHBjZF9yZWFkLm51bV9ieXRlcyk7Cj4g PiA+ICsJCWJyZWFrOwo+ID4gPiArCWNhc2UgRFBfUkVNT1RFX0RQQ0RfV1JJVEU6Cj4gPiA+ICsJ CVAoInBvcnQ9JWQgYWRkcj0lMDV4IGxlbj0lZDogJSpwaFxuIiwKPiA+ID4gKwkJICByZXEtPnUu ZHBjZF93cml0ZS5wb3J0X251bWJlciwKPiA+ID4gKwkJICByZXEtPnUuZHBjZF93cml0ZS5kcGNk X2FkZHJlc3MsCj4gPiA+ICsJCSAgcmVxLT51LmRwY2Rfd3JpdGUubnVtX2J5dGVzLCByZXEtPnUu ZHBjZF93cml0ZS5udW1fYnl0ZXMsCj4gPiA+ICsJCSAgcmVxLT51LmRwY2Rfd3JpdGUuYnl0ZXMp Owo+ID4gPiArCQlicmVhazsKPiA+ID4gKwljYXNlIERQX1JFTU9URV9JMkNfUkVBRDoKPiA+ID4g KwkJUCgicG9ydD0lZCBudW1fdHg9JWQgaWQ9JWQgc2l6ZT0lZDpcbiIsCj4gPiA+ICsJCSAgcmVx LT51LmkyY19yZWFkLnBvcnRfbnVtYmVyLAo+ID4gPiArCQkgIHJlcS0+dS5pMmNfcmVhZC5udW1f dHJhbnNhY3Rpb25zLAo+ID4gPiArCQkgIHJlcS0+dS5pMmNfcmVhZC5yZWFkX2kyY19kZXZpY2Vf aWQsCj4gPiA+ICsJCSAgcmVxLT51LmkyY19yZWFkLm51bV9ieXRlc19yZWFkKTsKPiA+ID4gKwo+ ID4gPiArCQlpbmRlbnQrKzsKPiA+ID4gKwkJZm9yIChpID0gMDsgaSA8IHJlcS0+dS5pMmNfcmVh ZC5udW1fdHJhbnNhY3Rpb25zOyBpKyspIHsKPiA+ID4gKwkJCWNvbnN0IHN0cnVjdCBkcm1fZHBf cmVtb3RlX2kyY19yZWFkX3R4ICpydHggPQo+ID4gPiArCQkJCSZyZXEtPnUuaTJjX3JlYWQudHJh bnNhY3Rpb25zW2ldOwo+ID4gPiArCj4gPiA+ICsJCQlQKCIlZDogaWQ9JTAzZCBzaXplPSUwM2Qg bm9fc3RvcF9iaXQ9JWQgdHhfZGVsYXk9JTAzZDoKPiA+ID4gJSpwaFxuIiwKPiA+ID4gKwkJCSAg aSwgcnR4LT5pMmNfZGV2X2lkLCBydHgtPm51bV9ieXRlcywKPiA+ID4gKwkJCSAgcnR4LT5ub19z dG9wX2JpdCwgcnR4LT5pMmNfdHJhbnNhY3Rpb25fZGVsYXksCj4gPiA+ICsJCQkgIHJ0eC0+bnVt X2J5dGVzLCBydHgtPmJ5dGVzKTsKPiA+ID4gKwkJfQo+ID4gPiArCQlicmVhazsKPiA+ID4gKwlj YXNlIERQX1JFTU9URV9JMkNfV1JJVEU6Cj4gPiA+ICsJCVAoInBvcnQ9JWQgaWQ9JWQgc2l6ZT0l ZDogJSpwaFxuIiwKPiA+ID4gKwkJICByZXEtPnUuaTJjX3dyaXRlLnBvcnRfbnVtYmVyLAo+ID4g PiArCQkgIHJlcS0+dS5pMmNfd3JpdGUud3JpdGVfaTJjX2RldmljZV9pZCwKPiA+ID4gKwkJICBy ZXEtPnUuaTJjX3dyaXRlLm51bV9ieXRlcywgcmVxLT51LmkyY193cml0ZS5udW1fYnl0ZXMsCj4g PiA+ICsJCSAgcmVxLT51LmkyY193cml0ZS5ieXRlcyk7Cj4gPiA+ICsJCWJyZWFrOwo+ID4gPiAr CWRlZmF1bHQ6Cj4gPiA+ICsJCVAoIj8/P1xuIik7Cj4gPiA+ICsJCWJyZWFrOwo+ID4gPiArCX0K PiA+ID4gKyN1bmRlZiBQCj4gPiA+ICt9Cj4gPiA+ICtFWFBPUlRfU1lNQk9MX0ZPUl9URVNUU19P TkxZKGRybV9kcF9kdW1wX3NpZGViYW5kX21zZ19yZXFfYm9keSk7Cj4gPiA+ICsKPiA+ID4gK3N0 YXRpYyBpbmxpbmUgdm9pZAo+ID4gPiArZHJtX2RwX21zdF9kdW1wX3NpZGViYW5kX21zZ190eChz dHJ1Y3QgZHJtX3ByaW50ZXIgKnAsCj4gPiA+ICsJCQkJY29uc3Qgc3RydWN0IGRybV9kcF9zaWRl YmFuZF9tc2dfdHggKnR4bXNnKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fZHBfc2lkZWJh bmRfbXNnX3JlcV9ib2R5IHJlcTsKPiA+ID4gKwljaGFyIGJ1Zls2NF07Cj4gPiA+ICsJaW50IHJl dDsKPiA+ID4gKwlpbnQgaTsKPiA+ID4gKwo+ID4gPiArCWRybV9kcF9tc3RfcmFkX3RvX3N0cih0 eG1zZy0+ZHN0LT5yYWQsIHR4bXNnLT5kc3QtPmxjdCwgYnVmLAo+ID4gPiArCQkJICAgICAgc2l6 ZW9mKGJ1ZikpOwo+ID4gPiArCWRybV9wcmludGYocCwgInR4bXNnIGN1cl9vZmZzZXQ9JXggY3Vy X2xlbj0leCBzZXFubz0leCBzdGF0ZT0lcwo+ID4gPiBwYXRoX21zZz0lZCBkc3Q9JXNcbiIsCj4g PiA+ICsJCSAgIHR4bXNnLT5jdXJfb2Zmc2V0LCB0eG1zZy0+Y3VyX2xlbiwgdHhtc2ctPnNlcW5v LAo+ID4gPiArCQkgICBkcm1fZHBfbXN0X3NpZGViYW5kX3R4X3N0YXRlX3N0cih0eG1zZy0+c3Rh dGUpLAo+ID4gPiArCQkgICB0eG1zZy0+cGF0aF9tc2csIGJ1Zik7Cj4gPiA+ICsKPiA+ID4gKwly ZXQgPSBkcm1fZHBfZGVjb2RlX3NpZGViYW5kX3JlcSh0eG1zZywgJnJlcSk7Cj4gPiA+ICsJaWYg KHJldCkgewo+ID4gPiArCQlkcm1fcHJpbnRmKHAsICI8ZmFpbGVkIHRvIGRlY29kZSBzaWRlYmFu ZCByZXE6ICVkPlxuIiwgcmV0KTsKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCX0KPiA+ID4gKwlk cm1fZHBfZHVtcF9zaWRlYmFuZF9tc2dfcmVxX2JvZHkoJnJlcSwgMSwgcCk7Cj4gPiA+ICsKPiA+ ID4gKwlzd2l0Y2ggKHJlcS5yZXFfdHlwZSkgewo+ID4gPiArCWNhc2UgRFBfUkVNT1RFX0RQQ0Rf V1JJVEU6Cj4gPiA+ICsJCWtmcmVlKHJlcS51LmRwY2Rfd3JpdGUuYnl0ZXMpOwo+ID4gPiArCQli cmVhazsKPiA+ID4gKwljYXNlIERQX1JFTU9URV9JMkNfUkVBRDoKPiA+ID4gKwkJZm9yIChpID0g MDsgaSA8IHJlcS51LmkyY19yZWFkLm51bV90cmFuc2FjdGlvbnM7IGkrKykKPiA+ID4gKwkJCWtm cmVlKHJlcS51LmkyY19yZWFkLnRyYW5zYWN0aW9uc1tpXS5ieXRlcyk7Cj4gPiA+ICsJCWJyZWFr Owo+ID4gPiArCWNhc2UgRFBfUkVNT1RFX0kyQ19XUklURToKPiA+ID4gKwkJa2ZyZWUocmVxLnUu aTJjX3dyaXRlLmJ5dGVzKTsKPiA+ID4gKwkJYnJlYWs7Cj4gPiA+ICsJfQo+ID4gPiArfQo+ID4g PiAgCj4gPiA+ICBzdGF0aWMgdm9pZCBkcm1fZHBfY3JjX3NpZGViYW5kX2NodW5rX3JlcSh1OCAq bXNnLCB1OCBsZW4pCj4gPiA+ICB7Cj4gPiA+IEBAIC04OTMsNiArMTE3OCwxMSBAQCBzdGF0aWMg aW50IGRybV9kcF9tc3Rfd2FpdF90eF9yZXBseShzdHJ1Y3QKPiA+ID4gZHJtX2RwX21zdF9icmFu Y2ggKm1zdGIsCj4gPiA+ICAJCX0KPiA+ID4gIAl9Cj4gPiA+ICBvdXQ6Cj4gPiA+ICsJaWYgKHVu bGlrZWx5KHJldCA9PSAtRUlPICYmIGRybV9kZWJ1ZyAmIChEUk1fVVRfRFAgfCBEUk1fVVRfS01T KSkpIHsKPiA+IAo+ID4gSG0gSSdkIG9ubHkgY2hlY2sgZm9yIERSTV9VVF9EUCBoZXJlLgo+ID4g Cj4gPiA+ICsJCXN0cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX2RlYnVnX3ByaW50ZXIoREJHX1BS RUZJWCk7Cj4gPiA+ICsKPiA+ID4gKwkJZHJtX2RwX21zdF9kdW1wX3NpZGViYW5kX21zZ190eCgm cCwgdHhtc2cpOwo+ID4gPiArCX0KPiA+ID4gIAltdXRleF91bmxvY2soJm1nci0+cWxvY2spOwo+ ID4gPiAgCj4gPiA+ICAJcmV0dXJuIHJldDsKPiA+ID4gQEAgLTE5MjcsOCArMjIxNywxMSBAQCBz dGF0aWMgaW50IHByb2Nlc3Nfc2luZ2xlX3R4X3Fsb2NrKHN0cnVjdAo+ID4gPiBkcm1fZHBfbXN0 X3RvcG9sb2d5X21nciAqbWdyLAo+ID4gPiAgCWlkeCArPSB0b3NlbmQgKyAxOwo+ID4gPiAgCj4g PiA+ICAJcmV0ID0gZHJtX2RwX3NlbmRfc2lkZWJhbmRfbXNnKG1nciwgdXAsIGNodW5rLCBpZHgp Owo+ID4gPiAtCWlmIChyZXQpIHsKPiA+ID4gLQkJRFJNX0RFQlVHX0tNUygic2lkZWJhbmQgbXNn IGZhaWxlZCB0byBzZW5kXG4iKTsKPiA+ID4gKwlpZiAocmV0ICYmIHVubGlrZWx5KGRybV9kZWJ1 ZyAmIChEUk1fVVRfRFAgfCBEUk1fVVRfS01TKSkpIHsKPiA+IAo+ID4gU2FtZS4KPiA+IAo+ID4g PiArCQlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IGRybV9kZWJ1Z19wcmludGVyKERCR19QUkVGSVgp Owo+ID4gPiArCj4gPiA+ICsJCWRybV9wcmludGYoJnAsICJzaWRlYmFuZCBtc2cgZmFpbGVkIHRv IHNlbmRcbiIpOwo+ID4gPiArCQlkcm1fZHBfbXN0X2R1bXBfc2lkZWJhbmRfbXNnX3R4KCZwLCB0 eG1zZyk7Cj4gPiA+ICAJCXJldHVybiByZXQ7Cj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+IEBAIC0x OTkwLDYgKzIyODMsMTMgQEAgc3RhdGljIHZvaWQgZHJtX2RwX3F1ZXVlX2Rvd25fdHgoc3RydWN0 Cj4gPiA+IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCj4gPiA+ICB7Cj4gPiA+ICAJbXV0 ZXhfbG9jaygmbWdyLT5xbG9jayk7Cj4gPiA+ICAJbGlzdF9hZGRfdGFpbCgmdHhtc2ctPm5leHQs ICZtZ3ItPnR4X21zZ19kb3ducSk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAodW5saWtlbHkoZHJtX2Rl YnVnICYgRFJNX1VUX0RQKSkgewo+ID4gCj4gPiBMaWtlIHlvdSBkbyBoZXJlLgo+ID4gCj4gPiA+ ICsJCXN0cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX2RlYnVnX3ByaW50ZXIoREJHX1BSRUZJWCk7 Cj4gPiA+ICsKPiA+ID4gKwkJZHJtX2RwX21zdF9kdW1wX3NpZGViYW5kX21zZ190eCgmcCwgdHht c2cpOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiAgCWlmIChsaXN0X2lzX3Npbmd1bGFyKCZtZ3It PnR4X21zZ19kb3ducSkpCj4gPiA+ICAJCXByb2Nlc3Nfc2luZ2xlX2Rvd25fdHhfcWxvY2sobWdy KTsKPiA+ID4gIAltdXRleF91bmxvY2soJm1nci0+cWxvY2spOwo+ID4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3lfaW50ZXJuYWwuaAo+ID4gPiBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5X2ludGVybmFsLmgKPiA+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5lZWRhOWE2MWM2NTcKPiA+ ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90 b3BvbG9neV9pbnRlcm5hbC5oCj4gPiA+IEBAIC0wLDAgKzEsMjQgQEAKPiA+ID4gKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPiA+ID4gKyAqCj4gPiA+ICsgKiBEZWNs YXJhdGlvbnMgZm9yIERQIE1TVCByZWxhdGVkIGZ1bmN0aW9ucyB3aGljaCBhcmUgb25seSB1c2Vk IGluCj4gPiA+IHNlbGZ0ZXN0cwo+ID4gPiArICoKPiA+ID4gKyAqIENvcHlyaWdodCDCqSAyMDE4 IFJlZCBIYXQKPiA+ID4gKyAqIEF1dGhvcnM6Cj4gPiA+ICsgKiAgICAgTHl1ZGUgUGF1bCA8bHl1 ZGVAcmVkaGF0LmNvbT4KPiA+ID4gKyAqLwo+ID4gPiArCj4gPiA+ICsjaWZuZGVmIF9EUk1fRFBf TVNUX0hFTFBFUl9JTlRFUk5BTF9IXwo+ID4gPiArI2RlZmluZSBfRFJNX0RQX01TVF9IRUxQRVJf SU5URVJOQUxfSF8KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fZHBfbXN0X2hlbHBl ci5oPgo+ID4gPiArCj4gPiA+ICt2b2lkCj4gPiA+ICtkcm1fZHBfZW5jb2RlX3NpZGViYW5kX3Jl cShjb25zdCBzdHJ1Y3QgZHJtX2RwX3NpZGViYW5kX21zZ19yZXFfYm9keQo+ID4gPiAqcmVxLAo+ ID4gPiArCQkJICAgc3RydWN0IGRybV9kcF9zaWRlYmFuZF9tc2dfdHggKnJhdyk7Cj4gPiA+ICtp bnQgZHJtX2RwX2RlY29kZV9zaWRlYmFuZF9yZXEoY29uc3Qgc3RydWN0IGRybV9kcF9zaWRlYmFu ZF9tc2dfdHggKnJhdywKPiA+ID4gKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2RwX3NpZGViYW5kX21z Z19yZXFfYm9keSAqcmVxKTsKPiA+ID4gK3ZvaWQKPiA+ID4gK2RybV9kcF9kdW1wX3NpZGViYW5k X21zZ19yZXFfYm9keShjb25zdCBzdHJ1Y3QKPiA+ID4gZHJtX2RwX3NpZGViYW5kX21zZ19yZXFf Ym9keSAqcmVxLAo+ID4gPiArCQkJCSAgaW50IGluZGVudCwgc3RydWN0IGRybV9wcmludGVyICpw cmludGVyKTsKPiA+ID4gKwo+ID4gPiArI2VuZGlmIC8qICFfRFJNX0RQX01TVF9IRUxQRVJfSU5U RVJOQUxfSF8gKi8KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMv ZHJtX21vZGVzZXRfc2VsZnRlc3RzLmgKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3Rz L2RybV9tb2Rlc2V0X3NlbGZ0ZXN0cy5oCj4gPiA+IGluZGV4IGRlYzNlZTNlYzk2Zi4uMTg5OGRl MGI0YTRkIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL2RybV9t b2Rlc2V0X3NlbGZ0ZXN0cy5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMv ZHJtX21vZGVzZXRfc2VsZnRlc3RzLmgKPiA+ID4gQEAgLTMzLDMgKzMzLDQgQEAgc2VsZnRlc3Qo ZGFtYWdlX2l0ZXJfZGFtYWdlX29uZV9vdXRzaWRlLAo+ID4gPiBpZ3RfZGFtYWdlX2l0ZXJfZGFt YWdlX29uZV9vdXRzaWRlKQo+ID4gPiAgc2VsZnRlc3QoZGFtYWdlX2l0ZXJfZGFtYWdlX3NyY19t b3ZlZCwgaWd0X2RhbWFnZV9pdGVyX2RhbWFnZV9zcmNfbW92ZWQpCj4gPiA+ICBzZWxmdGVzdChk YW1hZ2VfaXRlcl9kYW1hZ2Vfbm90X3Zpc2libGUsCj4gPiA+IGlndF9kYW1hZ2VfaXRlcl9kYW1h Z2Vfbm90X3Zpc2libGUpCj4gPiA+ICBzZWxmdGVzdChkcF9tc3RfY2FsY19wYm5fbW9kZSwgaWd0 X2RwX21zdF9jYWxjX3Bibl9tb2RlKQo+ID4gPiArc2VsZnRlc3QoZHBfbXN0X3NpZGViYW5kX21z Z19yZXFfZGVjb2RlLAo+ID4gPiBpZ3RfZHBfbXN0X3NpZGViYW5kX21zZ19yZXFfZGVjb2RlKQo+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9kcF9t c3RfaGVscGVyLmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX2Rw X21zdF9oZWxwZXIuYwo+ID4gPiBpbmRleCA1MWIyNDg2ZWM5MTcuLmNlY2E4OWJhYmQ2NSAxMDA2 NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9kcF9tc3Rf aGVscGVyLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9k cF9tc3RfaGVscGVyLmMKPiA+ID4gQEAgLTgsNiArOCw3IEBACj4gPiA+ICAjaW5jbHVkZSA8ZHJt L2RybV9kcF9tc3RfaGVscGVyLmg+Cj4gPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPgo+ ID4gPiAgCj4gPiA+ICsjaW5jbHVkZSAiLi4vZHJtX2RwX21zdF90b3BvbG9neV9pbnRlcm5hbC5o Igo+ID4gPiAgI2luY2x1ZGUgInRlc3QtZHJtX21vZGVzZXRfY29tbW9uLmgiCj4gPiA+ICAKPiA+ ID4gIGludCBpZ3RfZHBfbXN0X2NhbGNfcGJuX21vZGUodm9pZCAqaWdub3JlZCkKPiA+ID4gQEAg LTM0LDMgKzM1LDIxNCBAQCBpbnQgaWd0X2RwX21zdF9jYWxjX3Bibl9tb2RlKHZvaWQgKmlnbm9y ZWQpCj4gPiA+ICAKPiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gIH0KPiA+ID4gKwo+ID4gPiArc3Rh dGljIGJvb2wKPiA+ID4gK3NpZGViYW5kX21zZ19yZXFfZXF1YWwoY29uc3Qgc3RydWN0IGRybV9k cF9zaWRlYmFuZF9tc2dfcmVxX2JvZHkgKmluLAo+ID4gPiArCQkgICAgICAgY29uc3Qgc3RydWN0 IGRybV9kcF9zaWRlYmFuZF9tc2dfcmVxX2JvZHkgKm91dCkKPiA+ID4gK3sKPiA+ID4gKwljb25z dCBzdHJ1Y3QgZHJtX2RwX3JlbW90ZV9pMmNfcmVhZF90eCAqdHhpbiwgKnR4b3V0Owo+ID4gPiAr CWludCBpOwo+ID4gPiArCj4gPiA+ICsJaWYgKGluLT5yZXFfdHlwZSAhPSBvdXQtPnJlcV90eXBl KQo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsKPiA+ID4gKwlzd2l0Y2ggKGluLT5yZXFf dHlwZSkgewo+ID4gPiArCWNhc2UgRFBfRU5VTV9QQVRIX1JFU09VUkNFUzoKPiA+ID4gKwljYXNl IERQX1BPV0VSX1VQX1BIWToKPiA+ID4gKwljYXNlIERQX1BPV0VSX0RPV05fUEhZOgo+ID4gPiAr CWNhc2UgRFBfQUxMT0NBVEVfUEFZTE9BRDoKPiA+ID4gKwljYXNlIERQX1FVRVJZX1BBWUxPQUQ6 Cj4gPiA+ICsJY2FzZSBEUF9SRU1PVEVfRFBDRF9SRUFEOgo+ID4gPiArCQlyZXR1cm4gbWVtY21w KGluLCBvdXQsIHNpemVvZigqaW4pKSA9PSAwOwo+ID4gCj4gPiBKdXN0IG1lbWNtcCB0aGUgZW50 aXJlIHRoaW5nIGZvciBldmVyeXJvbmUgKHdlIGFzc3VtZSBremFsbG9jIGFueXdheSksIGFuZAo+ ID4gdGhlbiBvbmx5IGhhdmUgdGhlIGFkZGl0aW9uYWwgY2hlY2tzIGZvciB0aGUgZmV3IGNhc2Vz IHdlIG5lZWQgaXQ/IFdvdWxkCj4gPiBzbGlnaHRseSByZWR1Y2UgdGhlIGNvZGUuCj4gCj4gSnVz dCByZWFsaXplZCBhbHNvIC0gdGhpcyB3b3VsZG4ndCB3b3JrOiByZW1lbWJlciB0aGF0IEkyQ19S RUFELCBEUENEX1dSSVRFLAo+IGFuZCBJMkNfV1JJVEUgY29udGFpbiBwb2ludGVycyB3aGljaCBv ZiBjb3Vyc2Ugd2lsbCBiZSBkaWZmZXJlbnQgZXZlbiBpZiB0aGUKPiBjb250ZW50cyBhcmUgdGhl IHNhbWUuIFVuZm9ydHVuYXRlbHkgSSBkb24ndCB0aGluayB0aGVyZSdzIHJlYWxseSBhIGdvb2QK PiBzb2x1dGlvbiBmb3IgdGhpcywgdW5sZXNzIHdlIHdhbnQgdG8ganVzdCByZW1vdmUgdGhlIHBv aW50ZXJzIGFuZCBzdG9yZSB0aGluZ3MKPiB3aXRoaW4gdGhlIGRvd24gcmVxdWVzdCBzdHJ1Y3Qg aXRzZWxmCgpVaCAuLi4gZGlzYXBwb2ludCA6LS8KClRoZW4gYXQgbGVhc3QgcHV0IHRoYXQgaW50 byBhIGNvbW1lbnQsIGFuZCBtYXliZSBtYWtlIHRoaXMgdGhlIGRlZmF1bHQ6CmhhbmRsZXI/Cj4g Cj4gPiAKPiA+ID4gKwo+ID4gPiArCWNhc2UgRFBfUkVNT1RFX0kyQ19SRUFEOgo+ID4gPiArI2Rl ZmluZSBJTiBpbi0+dS5pMmNfcmVhZAo+ID4gPiArI2RlZmluZSBPVVQgb3V0LT51LmkyY19yZWFk Cj4gPiA+ICsJCWlmIChJTi5udW1fYnl0ZXNfcmVhZCAhPSBPVVQubnVtX2J5dGVzX3JlYWQgfHwK PiA+ID4gKwkJICAgIElOLm51bV90cmFuc2FjdGlvbnMgIT0gT1VULm51bV90cmFuc2FjdGlvbnMg fHwKPiA+ID4gKwkJICAgIElOLnBvcnRfbnVtYmVyICE9IE9VVC5wb3J0X251bWJlciB8fAo+ID4g PiArCQkgICAgSU4ucmVhZF9pMmNfZGV2aWNlX2lkICE9IE9VVC5yZWFkX2kyY19kZXZpY2VfaWQp Cj4gPiA+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsKPiA+ID4gKwkJZm9yIChpID0gMDsgaSA8 IElOLm51bV90cmFuc2FjdGlvbnM7IGkrKykgewo+ID4gPiArCQkJdHhpbiA9ICZJTi50cmFuc2Fj dGlvbnNbaV07Cj4gPiA+ICsJCQl0eG91dCA9ICZPVVQudHJhbnNhY3Rpb25zW2ldOwo+ID4gPiAr Cj4gPiA+ICsJCQlpZiAodHhpbi0+aTJjX2Rldl9pZCAhPSB0eG91dC0+aTJjX2Rldl9pZCB8fAo+ ID4gPiArCQkJICAgIHR4aW4tPm5vX3N0b3BfYml0ICE9IHR4b3V0LT5ub19zdG9wX2JpdCB8fAo+ ID4gPiArCQkJICAgIHR4aW4tPm51bV9ieXRlcyAhPSB0eG91dC0+bnVtX2J5dGVzIHx8Cj4gPiA+ ICsJCQkgICAgdHhpbi0+aTJjX3RyYW5zYWN0aW9uX2RlbGF5ICE9Cj4gPiA+ICsJCQkgICAgdHhv dXQtPmkyY190cmFuc2FjdGlvbl9kZWxheSkKPiA+ID4gKwkJCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ ICsKPiA+ID4gKwkJCWlmIChtZW1jbXAodHhpbi0+Ynl0ZXMsIHR4b3V0LT5ieXRlcywKPiA+ID4g KwkJCQkgICB0eGluLT5udW1fYnl0ZXMpICE9IDApCj4gPiA+ICsJCQkJcmV0dXJuIGZhbHNlOwo+ ID4gPiArCQl9Cj4gPiA+ICsJCWJyZWFrOwo+ID4gPiArI3VuZGVmIElOCj4gPiA+ICsjdW5kZWYg T1VUCj4gPiA+ICsKPiA+ID4gKwljYXNlIERQX1JFTU9URV9EUENEX1dSSVRFOgo+ID4gPiArI2Rl ZmluZSBJTiBpbi0+dS5kcGNkX3dyaXRlCj4gPiA+ICsjZGVmaW5lIE9VVCBvdXQtPnUuZHBjZF93 cml0ZQo+ID4gPiArCQlpZiAoSU4uZHBjZF9hZGRyZXNzICE9IE9VVC5kcGNkX2FkZHJlc3MgfHwK PiA+ID4gKwkJICAgIElOLm51bV9ieXRlcyAhPSBPVVQubnVtX2J5dGVzIHx8Cj4gPiA+ICsJCSAg ICBJTi5wb3J0X251bWJlciAhPSBPVVQucG9ydF9udW1iZXIpCj4gPiA+ICsJCQlyZXR1cm4gZmFs c2U7Cj4gPiA+ICsKPiA+ID4gKwkJcmV0dXJuIG1lbWNtcChJTi5ieXRlcywgT1VULmJ5dGVzLCBJ Ti5udW1fYnl0ZXMpID09IDA7Cj4gPiA+ICsjdW5kZWYgSU4KPiA+ID4gKyN1bmRlZiBPVVQKPiA+ ID4gKwo+ID4gPiArCWNhc2UgRFBfUkVNT1RFX0kyQ19XUklURToKPiA+ID4gKyNkZWZpbmUgSU4g aW4tPnUuaTJjX3dyaXRlCj4gPiA+ICsjZGVmaW5lIE9VVCBvdXQtPnUuaTJjX3dyaXRlCj4gPiA+ ICsJCWlmIChJTi5wb3J0X251bWJlciAhPSBPVVQucG9ydF9udW1iZXIgfHwKPiA+ID4gKwkJICAg IElOLndyaXRlX2kyY19kZXZpY2VfaWQgIT0gT1VULndyaXRlX2kyY19kZXZpY2VfaWQgfHwKPiA+ ID4gKwkJICAgIElOLm51bV9ieXRlcyAhPSBPVVQubnVtX2J5dGVzKQo+ID4gPiArCQkJcmV0dXJu IGZhbHNlOwo+ID4gPiArCj4gPiA+ICsJCXJldHVybiBtZW1jbXAoSU4uYnl0ZXMsIE9VVC5ieXRl cywgSU4ubnVtX2J5dGVzKSA9PSAwOwo+ID4gPiArI3VuZGVmIElOCj4gPiA+ICsjdW5kZWYgT1VU Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIHRydWU7Cj4gPiA+ICt9Cj4gPiA+ICsK PiA+ID4gK3N0YXRpYyBpbnQKPiA+ID4gK19fc2lkZWJhbmRfbXNnX3JlcV9lbmNvZGVfZGVjb2Rl KGludCBsaW5lLAo+ID4gPiArCQkJCSBzdHJ1Y3QgZHJtX2RwX3NpZGViYW5kX21zZ19yZXFfYm9k eSAqaW4sCj4gPiA+ICsJCQkJIHN0cnVjdCBkcm1fZHBfc2lkZWJhbmRfbXNnX3JlcV9ib2R5ICpv dXQpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9wcmludGVyIHAgPSBkcm1fZXJyX3ByaW50 ZXIocHJfZm10KCkpOwo+ID4gPiArCXN0cnVjdCBkcm1fZHBfc2lkZWJhbmRfbXNnX3R4IHR4bXNn Owo+ID4gPiArCWludCBpLCByZXQ7Cj4gPiA+ICsJYm9vbCBlcTsKPiA+ID4gKwo+ID4gPiArCWRy bV9kcF9lbmNvZGVfc2lkZWJhbmRfcmVxKGluLCAmdHhtc2cpOwo+ID4gPiArCXJldCA9IGRybV9k cF9kZWNvZGVfc2lkZWJhbmRfcmVxKCZ0eG1zZywgb3V0KTsKPiA+ID4gKwlpZiAocmV0IDwgMCkg ewo+ID4gPiArCQlwcl9lcnIocHJfZm10KCJGYWlsZWQgdG8gZGVjb2RlIHNpZGViYW5kIHJlcXVl c3QgQCBsaW5lICVkOgo+ID4gPiAlZFxuIiksCj4gPiA+ICsJCSAgICAgICBsaW5lLCByZXQpOwo+ ID4gPiArCQlyZXR1cm4gcmV0Owo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCWVxID0gc2lkZWJh bmRfbXNnX3JlcV9lcXVhbChpbiwgb3V0KTsKPiA+ID4gKwlpZiAoIWVxKSB7Cj4gPiA+ICsJCXBy X2Vycihwcl9mbXQoIkVuY29kZS9kZWNvZGUgQCBsaW5lICVkIGZhaWxlZCwgZXhwZWN0ZWQ6XG4i KSwKPiA+ID4gKwkJICAgICAgIGxpbmUpOwo+ID4gPiArCQlkcm1fZHBfZHVtcF9zaWRlYmFuZF9t c2dfcmVxX2JvZHkoaW4sIDEsICZwKTsKPiA+ID4gKwkJcHJfZXJyKHByX2ZtdCgiR290OlxuIikp Owo+ID4gPiArCQlkcm1fZHBfZHVtcF9zaWRlYmFuZF9tc2dfcmVxX2JvZHkob3V0LCAxLCAmcCk7 Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJc3dpdGNoIChpbi0+cmVxX3R5cGUpIHsKPiA+ID4g KwljYXNlIERQX1JFTU9URV9EUENEX1dSSVRFOgo+ID4gPiArCQlrZnJlZShvdXQtPnUuZHBjZF93 cml0ZS5ieXRlcyk7Cj4gPiA+ICsJCWJyZWFrOwo+ID4gPiArCWNhc2UgRFBfUkVNT1RFX0kyQ19S RUFEOgo+ID4gPiArCQlmb3IgKGkgPSAwOyBpIDwgb3V0LT51LmkyY19yZWFkLm51bV90cmFuc2Fj dGlvbnM7IGkrKykKPiA+ID4gKwkJCWtmcmVlKG91dC0+dS5pMmNfcmVhZC50cmFuc2FjdGlvbnNb aV0uYnl0ZXMpOwo+ID4gPiArCQlicmVhazsKPiA+ID4gKwljYXNlIERQX1JFTU9URV9JMkNfV1JJ VEU6Cj4gPiA+ICsJCWtmcmVlKG91dC0+dS5pMmNfd3JpdGUuYnl0ZXMpOwo+ID4gPiArCQlicmVh azsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwkvKiBDbGVhciBldmVyeXRoaW5nIGJ1dCB0aGUg cmVxX3R5cGUgZm9yIHRoZSBpbnB1dCAqLwo+ID4gPiArCW1lbXNldCgmaW4tPnUsIDAsIHNpemVv Zihpbi0+dSkpOwo+ID4gPiArCj4gPiA+ICsJLyogQ2xlYXIgdGhlIG91dHB1dCBlbnRpcmVseSAq Lwo+ID4gPiArCW1lbXNldChvdXQsIDAsIHNpemVvZigqb3V0KSk7Cj4gPiA+ICsKPiA+ID4gKwly ZXR1cm4gZXEgPyAwIDogLUVJTlZBTDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAraW50IGlndF9k cF9tc3Rfc2lkZWJhbmRfbXNnX3JlcV9kZWNvZGUodm9pZCAqdW51c2VkKQo+ID4gPiArewo+ID4g PiArCXN0cnVjdCBkcm1fZHBfc2lkZWJhbmRfbXNnX3JlcV9ib2R5IGluID0geyAwIH0sIG91dCA9 IHsgMCB9Owo+ID4gPiArCXU4IGRhdGFbXSA9IHsgMHhmZiwgMHgwLCAweGRkIH07Cj4gPiA+ICsJ aW50IGk7Cj4gPiA+ICsKPiA+ID4gKyNkZWZpbmUKPiA+ID4gRE9fVEVTVCgpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ID4gKwlk byB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ID4gPiArCQlpZiAoX19zaWRlYmFuZF9tc2dfcmVxX2VuY29kZV9kZWNvZGUo X19MSU5FX18sICZpbiwgJm91dCkpIFwKPiA+ID4gKwkJCXJldHVybiAtRUlOVkFMOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ID4gKwl9IHdoaWxlICgwKQo+ID4gCj4g PiBJIGhhZCBhIHRpbnkgd3RmIG1vbWVudCBoZXJlIHVudGlsIEkgcmVhbGl6ZWQgdGhpcyBpcyBh IG1hY3JvIC4uLiBtYXliZQo+ID4gcHV0IHRoZSBkbyBvbiB0aGUgZmlyc3QgbGluZSBhbmQgaW5k ZW50IGV2ZXJ5dGhpbmc/IFB1cmUgYmlrZXNoZWQgdG8gaGVscAo+ID4gdGhlIGJsaW5kIC4uLgo+ ID4gCj4gPiA+ICsKPiA+ID4gKwlpbi5yZXFfdHlwZSA9IERQX0VOVU1fUEFUSF9SRVNPVVJDRVM7 Cj4gPiA+ICsJaW4udS5wb3J0X251bS5wb3J0X251bWJlciA9IDU7Cj4gPiA+ICsJRE9fVEVTVCgp Owo+ID4gPiArCj4gPiA+ICsJaW4ucmVxX3R5cGUgPSBEUF9QT1dFUl9VUF9QSFk7Cj4gPiA+ICsJ aW4udS5wb3J0X251bS5wb3J0X251bWJlciA9IDU7Cj4gPiA+ICsJRE9fVEVTVCgpOwo+ID4gPiAr Cj4gPiA+ICsJaW4ucmVxX3R5cGUgPSBEUF9QT1dFUl9ET1dOX1BIWTsKPiA+ID4gKwlpbi51LnBv cnRfbnVtLnBvcnRfbnVtYmVyID0gNTsKPiA+ID4gKwlET19URVNUKCk7Cj4gPiA+ICsKPiA+ID4g Kwlpbi5yZXFfdHlwZSA9IERQX0FMTE9DQVRFX1BBWUxPQUQ7Cj4gPiA+ICsJaW4udS5hbGxvY2F0 ZV9wYXlsb2FkLm51bWJlcl9zZHBfc3RyZWFtcyA9IDM7Cj4gPiA+ICsJZm9yIChpID0gMDsgaSA8 IGluLnUuYWxsb2NhdGVfcGF5bG9hZC5udW1iZXJfc2RwX3N0cmVhbXM7IGkrKykKPiA+ID4gKwkJ aW4udS5hbGxvY2F0ZV9wYXlsb2FkLnNkcF9zdHJlYW1fc2lua1tpXSA9IGkgKyAxOwo+ID4gPiAr CURPX1RFU1QoKTsKPiA+ID4gKwlpbi51LmFsbG9jYXRlX3BheWxvYWQucG9ydF9udW1iZXIgPSAw eGY7Cj4gPiA+ICsJRE9fVEVTVCgpOwo+ID4gPiArCWluLnUuYWxsb2NhdGVfcGF5bG9hZC52Y3Bp ID0gMHg3ZjsKPiA+ID4gKwlET19URVNUKCk7Cj4gPiA+ICsJaW4udS5hbGxvY2F0ZV9wYXlsb2Fk LnBibiA9IFUxNl9NQVg7Cj4gPiA+ICsJRE9fVEVTVCgpOwo+ID4gPiArCj4gPiA+ICsJaW4ucmVx X3R5cGUgPSBEUF9RVUVSWV9QQVlMT0FEOwo+ID4gPiArCWluLnUucXVlcnlfcGF5bG9hZC5wb3J0 X251bWJlciA9IDB4ZjsKPiA+ID4gKwlET19URVNUKCk7Cj4gPiA+ICsJaW4udS5xdWVyeV9wYXls b2FkLnZjcGkgPSAweDdmOwo+ID4gPiArCURPX1RFU1QoKTsKPiA+ID4gKwo+ID4gPiArCWluLnJl cV90eXBlID0gRFBfUkVNT1RFX0RQQ0RfUkVBRDsKPiA+ID4gKwlpbi51LmRwY2RfcmVhZC5wb3J0 X251bWJlciA9IDB4ZjsKPiA+ID4gKwlET19URVNUKCk7Cj4gPiA+ICsJaW4udS5kcGNkX3JlYWQu ZHBjZF9hZGRyZXNzID0gMHhmZWRjYjsKPiA+ID4gKwlET19URVNUKCk7Cj4gPiA+ICsJaW4udS5k cGNkX3JlYWQubnVtX2J5dGVzID0gVThfTUFYOwo+ID4gPiArCURPX1RFU1QoKTsKPiA+ID4gKwo+ ID4gPiArCWluLnJlcV90eXBlID0gRFBfUkVNT1RFX0RQQ0RfV1JJVEU7Cj4gPiA+ICsJaW4udS5k cGNkX3dyaXRlLnBvcnRfbnVtYmVyID0gMHhmOwo+ID4gPiArCURPX1RFU1QoKTsKPiA+ID4gKwlp bi51LmRwY2Rfd3JpdGUuZHBjZF9hZGRyZXNzID0gMHhmZWRjYjsKPiA+ID4gKwlET19URVNUKCk7 Cj4gPiA+ICsJaW4udS5kcGNkX3dyaXRlLm51bV9ieXRlcyA9IEFSUkFZX1NJWkUoZGF0YSk7Cj4g PiA+ICsJaW4udS5kcGNkX3dyaXRlLmJ5dGVzID0gZGF0YTsKPiA+ID4gKwlET19URVNUKCk7Cj4g PiA+ICsKPiA+ID4gKwlpbi5yZXFfdHlwZSA9IERQX1JFTU9URV9JMkNfUkVBRDsKPiA+ID4gKwlp bi51LmkyY19yZWFkLnBvcnRfbnVtYmVyID0gMHhmOwo+ID4gPiArCURPX1RFU1QoKTsKPiA+ID4g Kwlpbi51LmkyY19yZWFkLnJlYWRfaTJjX2RldmljZV9pZCA9IDB4N2Y7Cj4gPiA+ICsJRE9fVEVT VCgpOwo+ID4gPiArCWluLnUuaTJjX3JlYWQubnVtX3RyYW5zYWN0aW9ucyA9IDM7Cj4gPiA+ICsJ aW4udS5pMmNfcmVhZC5udW1fYnl0ZXNfcmVhZCA9IEFSUkFZX1NJWkUoZGF0YSkgKiAzOwo+ID4g PiArCWZvciAoaSA9IDA7IGkgPCBpbi51LmkyY19yZWFkLm51bV90cmFuc2FjdGlvbnM7IGkrKykg ewo+ID4gPiArCQlpbi51LmkyY19yZWFkLnRyYW5zYWN0aW9uc1tpXS5ieXRlcyA9IGRhdGE7Cj4g PiA+ICsJCWluLnUuaTJjX3JlYWQudHJhbnNhY3Rpb25zW2ldLm51bV9ieXRlcyA9IEFSUkFZX1NJ WkUoZGF0YSk7Cj4gPiA+ICsJCWluLnUuaTJjX3JlYWQudHJhbnNhY3Rpb25zW2ldLmkyY19kZXZf aWQgPSAweDdmICYgfmk7Cj4gPiA+ICsJCWluLnUuaTJjX3JlYWQudHJhbnNhY3Rpb25zW2ldLmky Y190cmFuc2FjdGlvbl9kZWxheSA9IDB4ZiAmCj4gPiA+IH5pOwo+ID4gPiArCX0KPiA+ID4gKwlE T19URVNUKCk7Cj4gPiA+ICsKPiA+ID4gKwlpbi5yZXFfdHlwZSA9IERQX1JFTU9URV9JMkNfV1JJ VEU7Cj4gPiA+ICsJaW4udS5pMmNfd3JpdGUucG9ydF9udW1iZXIgPSAweGY7Cj4gPiA+ICsJRE9f VEVTVCgpOwo+ID4gPiArCWluLnUuaTJjX3dyaXRlLndyaXRlX2kyY19kZXZpY2VfaWQgPSAweDdm Owo+ID4gPiArCURPX1RFU1QoKTsKPiA+ID4gKwlpbi51LmkyY193cml0ZS5udW1fYnl0ZXMgPSBB UlJBWV9TSVpFKGRhdGEpOwo+ID4gPiArCWluLnUuaTJjX3dyaXRlLmJ5dGVzID0gZGF0YTsKPiA+ ID4gKwlET19URVNUKCk7Cj4gPiA+ICsKPiA+ID4gKyN1bmRlZiBET19URVNUCj4gPiA+ICsJcmV0 dXJuIDA7Cj4gPiA+ICt9Cj4gPiAKPiA+IEV4dHJlbWVseSBuaWNlLCBtb3JlIHVuaXQgdGVzdHMg ZnR3IQo+ID4gCj4gPiBXaXRoIHRoZSBuaXRzIHNvbWVob3cgZmlndXJlZCBvdXQ6IFJldmlld2Vk LWJ5OiBEYW5pZWwgVmV0dGVyIDwKPiA+IGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gPiAKPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fbW9kZXNl dF9jb21tb24uaAo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fbW9k ZXNldF9jb21tb24uaAo+ID4gPiBpbmRleCA1OTBiZGEzNWE2ODMuLjBmY2I4YmJjNmExYiAxMDA2 NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9tb2Rlc2V0 X2NvbW1vbi5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1f bW9kZXNldF9jb21tb24uaAo+ID4gPiBAQCAtNDAsNSArNDAsNiBAQCBpbnQgaWd0X2RhbWFnZV9p dGVyX2RhbWFnZV9vbmVfb3V0c2lkZSh2b2lkICppZ25vcmVkKTsKPiA+ID4gIGludCBpZ3RfZGFt YWdlX2l0ZXJfZGFtYWdlX3NyY19tb3ZlZCh2b2lkICppZ25vcmVkKTsKPiA+ID4gIGludCBpZ3Rf ZGFtYWdlX2l0ZXJfZGFtYWdlX25vdF92aXNpYmxlKHZvaWQgKmlnbm9yZWQpOwo+ID4gPiAgaW50 IGlndF9kcF9tc3RfY2FsY19wYm5fbW9kZSh2b2lkICppZ25vcmVkKTsKPiA+ID4gK2ludCBpZ3Rf ZHBfbXN0X3NpZGViYW5kX21zZ19yZXFfZGVjb2RlKHZvaWQgKmlnbm9yZWQpOwo+ID4gPiAgCj4g PiA+ICAjZW5kaWYKPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVs cGVyLmgKPiA+ID4gYi9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCj4gPiA+IGluZGV4 IGMwMWYzZWE3Mjc1Ni4uNGM4ZDE3N2U4M2U1IDEwMDY0NAo+ID4gPiAtLS0gYS9pbmNsdWRlL2Ry bS9kcm1fZHBfbXN0X2hlbHBlci5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9kcF9tc3Rf aGVscGVyLmgKPiA+ID4gQEAgLTI5Myw3ICsyOTMsNyBAQCBzdHJ1Y3QgZHJtX2RwX3JlbW90ZV9k cGNkX3dyaXRlIHsKPiA+ID4gIHN0cnVjdCBkcm1fZHBfcmVtb3RlX2kyY19yZWFkIHsKPiA+ID4g IAl1OCBudW1fdHJhbnNhY3Rpb25zOwo+ID4gPiAgCXU4IHBvcnRfbnVtYmVyOwo+ID4gPiAtCXN0 cnVjdCB7Cj4gPiA+ICsJc3RydWN0IGRybV9kcF9yZW1vdGVfaTJjX3JlYWRfdHggewo+ID4gPiAg CQl1OCBpMmNfZGV2X2lkOwo+ID4gPiAgCQl1OCBudW1fYnl0ZXM7Cj4gPiA+ICAJCXU4ICpieXRl czsKPiA+ID4gLS0gCj4gPiA+IDIuMjEuMAo+ID4gPiAKPiAtLSAKPiBDaGVlcnMsCj4gCUx5dWRl IFBhdWwKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jw b3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWw=