From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeff McGee Subject: Re: [PATCH 3/8] drm/i915/huc: Add HuC fw loading support Date: Mon, 24 Oct 2016 15:25:27 -0700 Message-ID: <20161024222527.GM18646@jeffdesk> References: <1475520182-9224-1-git-send-email-anusha.srivatsa@intel.com> <1475520182-9224-4-git-send-email-anusha.srivatsa@intel.com> <20161013174241.GE18646@jeffdesk> <20161013205433.GG18646@jeffdesk> <1477344241.27435.3.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7A19689B7D for ; Mon, 24 Oct 2016 22:16:17 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1477344241.27435.3.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Carlos Santa Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBPY3QgMjQsIDIwMTYgYXQgMDI6MjQ6MDFQTSAtMDcwMCwgQ2FybG9zIFNhbnRhIHdy b3RlOgo+IE9uIFRodSwgMjAxNi0xMC0xMyBhdCAxMzo1NCAtMDcwMCwgSmVmZiBNY0dlZSB3cm90 ZToKPiA+IE9uIFRodSwgT2N0IDEzLCAyMDE2IGF0IDEwOjQyOjQyQU0gLTA3MDAsIEplZmYgTWNH ZWUgd3JvdGU6Cj4gPiA+IAo+ID4gPiBPbiBNb24sIE9jdCAwMywgMjAxNiBhdCAxMTo0Mjo1N0FN IC0wNzAwLCBBbnVzaGEgU3JpdmF0c2Egd3JvdGU6Cj4gPiA+ID4gCj4gPiA+ID4gRnJvbTogUGV0 ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+Cj4gPiA+ID4gCj4gPiA+ID4gVGhl IEh1QyBsb2FkaW5nIHByb2Nlc3MgaXMgc2ltaWxhciB0byBHdUMuIFRoZQo+ID4gPiA+IGludGVs X3VjX2Z3X2ZldGNoKCkKPiA+ID4gPiBpcyB1c2VkIGZvciBib3RoIGNhc2VzLgo+ID4gPiA+IAo+ ID4gPiA+IEh1QyBsb2FkaW5nIG5lZWRzIHRvIGJlIGJlZm9yZSBHdUMgbG9hZGluZy4gVGhlIFdP UENNIHNldHRpbmcKPiA+ID4gPiBtdXN0Cj4gPiA+ID4gYmUgZG9uZSBlYXJseSBiZWZvcmUgbG9h ZGluZyBhbnkgb2YgdGhlbS4KPiA+ID4gPiAKPiA+ID4gPiB2MjogcmViYXNlZCBvbi10b3Agb2Yg ZHJtLWludGVsLW5pZ2h0bHkuCj4gPiA+ID4gwqDCoMKgwqByZW1vdmVkIGlmKEhBU19HVUMoKSkg YmVmb3JlIHRoZSBndWMgY2FsbC4gKEQuR29yZG9uKQo+ID4gPiA+IMKgwqDCoMKgdXBkYXRlIGh1 Y192ZXJzaW9uIG51bWJlciBvZiBmb3JtYXQuCj4gPiA+ID4gdjM6IHJlYmFzZWQgdG8gZHJtLWlu dGVsLW5pZ2h0bHksIGNoYW5nZWQgdGhlIGZpbGUgbmFtZSBmb3JtYXQgdG8KPiA+ID4gPiDCoMKg wqDCoG1hdGNoIHRoZSBvbmUgaW4gdGhlIGh1YyBwYWNrYWdlLgo+ID4gPiA+IMKgwqDCoMKgQ2hh bmdlZCBkZXYtPmRldl9wcml2YXRlIHRvIHRvX2k5MTUoKQo+ID4gPiA+IHY0OiBtb3ZlZCBmdW5j dGlvbiBiYWNrIHRvIHdoZXJlIGl0IHdhcy4KPiA+ID4gPiDCoMKgwqDCoGNoYW5nZSB3YWl0X2Zv cl9hdG9taWMgdG8gd2FpdF9mb3IuCj4gPiA+ID4gdjU6IHJlYmFzZWQgKyBjb21tZW50IGNoYW5n ZXMuCj4gPiA+ID4gdjc6IHJlYmFzZWQuCj4gPiA+ID4gdjg6IHJlYmFzZWQuCj4gPiA+ID4gCj4g PiA+ID4gVGVzdGVkLWJ5OiBYaWFuZyBIYWloYW8gPGhhaWhhby54aWFuZ0BpbnRlbC5jb20+Cj4g PiA+ID4gU2lnbmVkLW9mZi1ieTogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50 ZWwuY29tPgo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29t Pgo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50 ZWwuY29tPgo+ID4gPiA+IFJldmlld2VkLWJ5OiBEYXZlIEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25A aW50ZWwuY29tPgo+ID4gPiA+IC0tLQo+ID4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDEgKwo+ID4gPiA+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuY8KgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqAzICsKPiA+ID4g PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKgwqDCoMKgwqB8wqDC oMKgMyArCj4gPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaMKgwqDC oMKgwqB8wqDCoMKgMyArCj4gPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMu aMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgMSArCj4gPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfbG9hZGVyLmMgfMKgwqDCoDYgKy0KPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2h1Yy5owqDCoMKgwqDCoMKgwqDCoHzCoMKgNDQgKysrKysrCj4gPiA+ID4g wqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMgfCAyNjgKPiA+ID4gPiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPiA+IMKgOCBmaWxlcyBjaGFuZ2Vk LCAzMjcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiA+ID4gPiDCoGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaAo+ID4gPiA+IMKgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwo+ID4g PiA+IAo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiA+ID4gPiBpbmRleCBlNmZl MDA0Li42ZTk5YzUxIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiA+ID4g PiBAQCAtNTMsNiArNTMsNyBAQCBpOTE1LXkgKz0gaTkxNV9jbWRfcGFyc2VyLm8gXAo+ID4gPiA+ IMKgCj4gPiA+ID4gwqAjIGdlbmVyYWwtcHVycG9zZSBtaWNyb2NvbnRyb2xsZXIgKEd1Qykgc3Vw cG9ydAo+ID4gPiA+IMKgaTkxNS15ICs9IGludGVsX2d1Y19sb2FkZXIubyBcCj4gPiA+ID4gKwnC oMKgaW50ZWxfaHVjX2xvYWRlci5vIFwKPiA+ID4gPiDCoAnCoMKgaTkxNV9ndWNfc3VibWlzc2lv bi5vCj4gPiA+ID4gwqAKPiA+ID4gPiDCoCMgYXV0b2dlbmVyYXRlZCBudWxsIHJlbmRlciBzdGF0 ZQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g PiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gPiA+ID4gaW5kZXggMzFi MmI2My4uN2FmN2JkNiAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ ID4gPiA+IEBAIC02MTMsNiArNjEzLDcgQEAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9p bml0KHN0cnVjdAo+ID4gPiA+IGRybV9kZXZpY2UgKmRldikKPiA+ID4gPiDCoAnCoCogd29ya2lu ZyBpcnFzIGZvciBlLmcuIGdtYnVzIGFuZCBkcCBhdXggdHJhbnNmZXJzLiAqLwo+ID4gPiA+IMKg CWludGVsX21vZGVzZXRfaW5pdChkZXYpOwo+ID4gPiA+IMKgCj4gPiA+ID4gKwlpbnRlbF9odWNf aW5pdChkZXYpOwo+ID4gPiA+IMKgCWludGVsX2d1Y19pbml0KGRldik7Cj4gPiA+ID4gwqAKPiA+ ID4gPiDCoAlyZXQgPSBpOTE1X2dlbV9pbml0KGRldik7Cj4gPiA+ID4gQEAgLTYzOCw2ICs2Mzks NyBAQCBzdGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0X2luaXQoc3RydWN0Cj4gPiA+ID4gZHJt X2RldmljZSAqZGV2KQo+ID4gPiA+IMKgY2xlYW51cF9nZW06Cj4gPiA+ID4gwqAJaTkxNV9nZW1f ZmluaShkZXYpOwo+ID4gPiA+IMKgY2xlYW51cF9pcnE6Cj4gPiA+ID4gKwlpbnRlbF9odWNfZmlu aShkZXYpOwo+ID4gPiA+IMKgCWludGVsX2d1Y19maW5pKGRldik7Cj4gPiA+ID4gwqAJZHJtX2ly cV91bmluc3RhbGwoZGV2KTsKPiA+ID4gPiDCoAlpbnRlbF90ZWFyZG93bl9nbWJ1cyhkZXYpOwo+ ID4gPiA+IEBAIC0xMzE1LDYgKzEzMTcsNyBAQCB2b2lkIGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1 Y3QgZHJtX2RldmljZQo+ID4gPiA+ICpkZXYpCj4gPiA+ID4gwqAJLyogRmx1c2ggYW55IG91dHN0 YW5kaW5nIHVucGluX3dvcmsuICovCj4gPiA+ID4gwqAJZHJhaW5fd29ya3F1ZXVlKGRldl9wcml2 LT53cSk7Cj4gPiA+ID4gwqAKPiA+ID4gPiArCWludGVsX2h1Y19maW5pKGRldik7Cj4gPiA+ID4g wqAJaW50ZWxfZ3VjX2ZpbmkoZGV2KTsKPiA+ID4gPiDCoAlpOTE1X2dlbV9maW5pKGRldik7Cj4g PiA+ID4gwqAJaW50ZWxfZmJjX2NsZWFudXBfY2ZiKGRldl9wcml2KTsKPiA+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiA+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiA+IGluZGV4IGUwY2I3MWMuLjYyNWFhOTIgMTAw NjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gPiBAQCAtNTUsNiAr NTUsNyBAQAo+ID4gPiA+IMKgI2luY2x1ZGUgImludGVsX2Jpb3MuaCIKPiA+ID4gPiDCoCNpbmNs dWRlICJpbnRlbF9kcGxsX21nci5oIgo+ID4gPiA+IMKgI2luY2x1ZGUgImludGVsX2d1Yy5oIgo+ ID4gPiA+ICsjaW5jbHVkZSAiaW50ZWxfaHVjLmgiCj4gPiA+ID4gwqAjaW5jbHVkZSAiaW50ZWxf bHJjLmgiCj4gPiA+ID4gwqAjaW5jbHVkZSAiaW50ZWxfcmluZ2J1ZmZlci5oIgo+ID4gPiA+IMKg Cj4gPiA+ID4gQEAgLTE3NjYsNiArMTc2Nyw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsK PiA+ID4gPiDCoAo+ID4gPiA+IMKgCXN0cnVjdCBpbnRlbF9ndnQgZ3Z0Owo+ID4gPiA+IMKgCj4g PiA+ID4gKwlzdHJ1Y3QgaW50ZWxfaHVjIGh1YzsKPiA+ID4gPiDCoAlzdHJ1Y3QgaW50ZWxfZ3Vj IGd1YzsKPiA+ID4gPiDCoAo+ID4gPiA+IMKgCXN0cnVjdCBpbnRlbF9jc3IgY3NyOwo+ID4gPiA+ IEBAIC0yODIyLDYgKzI4MjQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPiA+ID4g PiDCoCNkZWZpbmUgSEFTX0dVQyhkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5oYXNfZ3VjKQo+ID4g PiA+IMKgI2RlZmluZSBIQVNfR1VDX1VDT0RFKGRldikJKEhBU19HVUMoZGV2KSkKPiA+ID4gPiDC oCNkZWZpbmUgSEFTX0dVQ19TQ0hFRChkZXYpCShIQVNfR1VDKGRldikpCj4gPiA+ID4gKyNkZWZp bmUgSEFTX0hVQ19VQ09ERShkZXYpCShIQVNfR1VDKGRldikpCj4gPiA+ID4gwqAKPiA+ID4gPiDC oCNkZWZpbmUgSEFTX1JFU09VUkNFX1NUUkVBTUVSKGRldikgKElOVEVMX0lORk8oZGV2KS0KPiA+ ID4gPiA+aGFzX3Jlc291cmNlX3N0cmVhbWVyKQo+ID4gPiA+IMKgCj4gPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oCj4gPiA+ID4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+ID4gPiA+IGluZGV4IGE0N2UxZTQuLjY0ZTk0 MmEgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVn LmgKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+ID4g PiA+IEBAIC02MSw5ICs2MSwxMiBAQAo+ID4gPiA+IMKgI2RlZmluZcKgwqDCoERNQV9BRERSRVNT X1NQQUNFX0dUVAkJwqDCoCg4IDw8IDE2KQo+ID4gPiA+IMKgI2RlZmluZSBETUFfQ09QWV9TSVpF CQkJX01NSU8oMHhjMzEwKQo+ID4gPiA+IMKgI2RlZmluZSBETUFfQ1RSTAkJCV9NTUlPKDB4YzMx NCkKPiA+ID4gPiArI2RlZmluZcKgwqDCoEhVQ19VS0VSTkVMCQkJwqDCoCgxPDw5KQo+ID4gPiA+ IMKgI2RlZmluZcKgwqDCoFVPU19NT1ZFCQkJwqDCoCgxPDw0KQo+ID4gPiA+IMKgI2RlZmluZcKg wqDCoFNUQVJUX0RNQQkJCcKgwqAoMTw8MCkKPiA+ID4gPiDCoCNkZWZpbmUgRE1BX0dVQ19XT1BD TV9PRkZTRVQJCV9NTUlPKDB4YzM0MCkKPiA+ID4gPiArI2RlZmluZcKgwqDCoEhVQ19MT0FESU5H X0FHRU5UX1ZDUgkJwqDCoCgwPDwxKQo+ID4gPiA+ICsjZGVmaW5lwqDCoMKgSFVDX0xPQURJTkdf QUdFTlRfR1VDCQnCoMKgKDE8PDEpCj4gPiA+ID4gwqAjZGVmaW5lwqDCoMKgR1VDX1dPUENNX09G RlNFVF9WQUxVRQnCoMKgMHg4MDAwMAkvKgo+ID4gPiA+IDUxMktCICovCj4gPiA+ID4gwqAjZGVm aW5lIEdVQ19NQVhfSURMRV9DT1VOVAkJX01NSU8oMHhDM0U0KQo+ID4gPiA+IMKgCj4gPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gPiA+ID4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+ID4gPiA+IGluZGV4IDgxMmU0Y2EuLmFm NzZmZmUgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj LmgKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+ID4gPiA+ IEBAIC0xNjAsNiArMTYwLDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIKPiA+ID4gPiAqaW50ZWxfdWNf Zndfc3RhdHVzX3JlcHIoZW51bSBpbnRlbF91Y19md19zdGF0dXMgc3RhdHVzKTsKPiA+ID4gPiDC oGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4g PiA+ID4gwqBleHRlcm4gaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4gPiA+ID4gwqB2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdAo+ID4gPiA+IGludGVsX3VjX2Z3ICp1Y19mdyk7Cj4gPiA+ID4gK3UzMiBndWNf d29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gPiA+IMKg Cj4gPiA+ID4gwqAvKiBpOTE1X2d1Y19zdWJtaXNzaW9uLmMgKi8KPiA+ID4gPiDCoGludCBpOTE1 X2d1Y19zdWJtaXNzaW9uX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK PiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRl ci5jCj4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiA+ ID4gPiBpbmRleCAwYjg2M2ExLi4wZDIxNGI0IDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ID4gPiA+IEBAIC0zMDUsNyArMzA1LDggQEAg c3RhdGljIGludCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0Cj4gPiA+ID4gZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gPiA+ID4gwqAJSTkxNV9XUklURShETUFfQUREUl8xX0hJR0gsIERN QV9BRERSRVNTX1NQQUNFX1dPUENNKTsKPiA+ID4gPiDCoAo+ID4gPiA+IMKgCS8qIEZpbmFsbHkg c3RhcnQgdGhlIERNQSAqLwo+ID4gPiA+IC0JSTkxNV9XUklURShETUFfQ1RSTCwgX01BU0tFRF9C SVRfRU5BQkxFKFVPU19NT1ZFIHwKPiA+ID4gPiBTVEFSVF9ETUEpKTsKPiA+ID4gPiArCUk5MTVf V1JJVEUoRE1BX0NUUkwsIF9NQVNLRURfQklUX0VOQUJMRShVT1NfTU9WRSB8Cj4gPiA+ID4gU1RB UlRfRE1BKSB8Cj4gPiA+ID4gKwkJCV9NQVNLRURfQklUX0RJU0FCTEUoSFVDX1VLRVJORUwpKTsK PiA+ID4gPiDCoAo+ID4gPiA+IMKgCS8qCj4gPiA+ID4gwqAJwqAqIFdhaXQgZm9yIHRoZSBETUEg dG8gY29tcGxldGUgJiB0aGUgR3VDIHRvIHN0YXJ0IHVwLgo+ID4gPiA+IEBAIC0zMzAsNyArMzMx LDcgQEAgc3RhdGljIGludCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0Cj4gPiA+ID4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ID4gwqAJcmV0dXJuIHJldDsKPiA+ID4gPiDCoH0K PiA+ID4gPiDCoAo+ID4gPiA+IC1zdGF0aWMgdTMyIGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gPiArdTMyIGd1Y193b3BjbV9zaXplKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gPiDCoHsKPiA+ID4gPiDCoAl1MzIg d29wY21fc2l6ZSA9IEdVQ19XT1BDTV9UT1A7Cj4gPiA+ID4gwqAKPiA+ID4gPiBAQCAtNTA4LDYg KzUwOSw3IEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ ID4gPiDCoAkJaWYgKGVycikKPiA+ID4gPiDCoAkJCWdvdG8gZmFpbDsKPiA+ID4gPiDCoAo+ID4g PiA+ICsJCWludGVsX2h1Y19sb2FkKGRldik7Cj4gPiA+ID4gwqAJCWVyciA9IGd1Y191Y29kZV94 ZmVyKGRldl9wcml2KTsKPiA+ID4gPiDCoAkJaWYgKCFlcnIpCj4gPiA+ID4gwqAJCQlicmVhazsK PiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgKPiA+ ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oCj4gPiA+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiA+ID4gPiBpbmRleCAwMDAwMDAwLi45NDZjYWE3Cj4gPiA+ID4gLS0tIC9k ZXYvbnVsbAo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oCj4g PiA+ID4gQEAgLTAsMCArMSw0NCBAQAo+ID4gPiA+ICsvKgo+ID4gPiA+ICsgKiBDb3B5cmlnaHQg wqkgMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gPiBTaG91bGQgdGhpcyBiZSAyMDE2Pwo+ID4g PiAKPiA+ID4gPiAKPiA+ID4gPiArICoKPiA+ID4gPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkg Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KPiA+ID4gPiBvYnRhaW5pbmcg YQo+ID4gPiA+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l bnRhdGlvbiBmaWxlcyAodGhlCj4gPiA+ID4gIlNvZnR3YXJlIiksCj4gPiA+ID4gKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwo+ID4gPiA+ IHdpdGhvdXQgbGltaXRhdGlvbgo+ID4gPiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwKPiA+ID4gPiBzdWJsaWNlbnNlLAo+ ID4gPiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8KPiA+ID4gPiB3aG9tIHRoZQo+ID4gPiA+ICsgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZwo+ID4gPiA+IGNvbmRp dGlvbnM6Cj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlCj4gPiA+ID4gKGluY2x1ZGluZyB0aGUgbmV4dAo+ ID4gPiA+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwKPiA+ID4gPiBwb3J0aW9ucyBvZiB0aGUKPiA+ID4gPiArICogU29mdHdhcmUu Cj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQo+ID4gPiA+IEtJTkQsIEVYUFJFU1MgT1IKPiA+ID4g PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRgo+ID4gPiA+IE1FUkNIQU5UQUJJTElUWSwKPiA+ID4gPiArICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC7CoMKgSU4gTk8KPiA+ID4gPiBF VkVOVCBTSEFMTAo+ID4gPiA+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKPiA+ID4gPiBEQU1BR0VTIE9SIE9USEVSCj4gPiA+ID4g KyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IK PiA+ID4gPiBPVEhFUldJU0UsIEFSSVNJTkcKPiA+ID4gPiArICogRlJPTSwgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgo+ID4gPiA+IE9USEVS IERFQUxJTkdTCj4gPiA+ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+ID4gPiArICoKPiA+ID4g PiArICovCj4gPiA+ID4gKyNpZm5kZWYgX0lOVEVMX0hVQ19IXwo+ID4gPiA+ICsjZGVmaW5lIF9J TlRFTF9IVUNfSF8KPiA+ID4gPiArCj4gPiA+ID4gKyNpbmNsdWRlICJpbnRlbF9ndWMuaCIKPiA+ ID4gPiArCj4gPiA+ID4gKyNkZWZpbmUgSFVDX1NUQVRVUzIJCV9NTUlPKDB4RDNCMCkKPiA+ID4g PiArI2RlZmluZcKgwqDCoEhVQ19GV19WRVJJRklFRAkoMTw8NykKPiA+ID4gPiArCj4gPiA+ID4g K3N0cnVjdCBpbnRlbF9odWMgewo+ID4gPiA+ICsJLyogR2VuZXJpYyB1QyBmaXJtd2FyZSBtYW5h Z2VtZW50ICovCj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgaHVjX2Z3Owo+ID4gPiA+ICsK PiA+ID4gPiArCS8qIEh1Qy1zcGVjaWZpYyBhZGRpdGlvbnMgKi8KPiA+ID4gPiArfTsKPiA+ID4g PiArCj4gPiA+ID4gK2V4dGVybiB2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwo+ID4gPiA+ICtleHRlcm4gaW50IGludGVsX2h1Y19sb2FkKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwo+ID4gPiA+ICtleHRlcm4gdm9pZCBpbnRlbF9odWNfYXV0aChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKPiA+ID4gPiArZXh0ZXJuIHZvaWQgaW50ZWxfaHVjX2Zpbmkoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7Cj4gPiBUaGVzZSBkb24ndCBuZWVkIGV4dGVybi4gUGxlYXNlIHJl bW92ZS4gQWxzbyBpbnRlbF9odWNfYXV0aCBjb21lcyBpbgo+ID4gd2l0aAo+ID4gbGF0ZXIgcGF0 Y2ggaW4gdGhlIHNlcmllcyBzbyB3b3VsZCBiZSBiZXR0ZXIgdG8gZHJvcCBmcm9tIGhlcmUuCj4g PiAKPiAKPiBSZW1vdmluZyBpbnRlbF9odWNfYXV0aCBhY3R1YWxseSBicmFrZXMgdGhlIGNvbXBp bGF0aW9uIGFzIGl0J3MgYmVpbmcKPiBjYWxsZWQgZnJvbcKgaW50ZWxfZ3VjX2xvYWRlci5jCj4g Cj4gQ2FybG9zCj4gCk5vdCB1bnRpbCBwYXRjaCA1LiBUaGF0J3Mgd2h5IGl0IHdvdWxkIGJlIGNs ZWFuZXIgdG8gYWRkIGludGVsX2h1Y19hdXRoCmluIHBhdGNoIDUgcmF0aGVyIHRoYW4gaGVyZSAo cGF0Y2ggMykgd2hlcmUgaXQgaXMgbm90IGltbWVkaWF0ZWx5IHVzZWQuCk5vdCBhIGh1Z2UgZGVh bC4KSmVmZgoKPiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gKwo+ID4gPiA+ICsjZW5kaWYKPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jCj4g PiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMKPiA+ID4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiA+IGluZGV4IDAwMDAwMDAuLjFhYWZmNjcKPiA+ID4g PiAtLS0gL2Rldi9udWxsCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aHVjX2xvYWRlci5jCj4gPiA+ID4gQEAgLTAsMCArMSwyNjggQEAKPiA+ID4gPiArLyoKPiA+ID4g PiArICogQ29weXJpZ2h0IMKpIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24KPiA+ID4gU2hvdWxkIHRo aXMgYmUgMjAxNj8KPiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4g PiA+ID4gb2J0YWluaW5nIGEKPiA+ID4gPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+ID4gPiA+ICJTb2Z0d2FyZSIpLAo+ ID4gPiA+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcKPiA+ID4gPiB3aXRob3V0IGxpbWl0YXRpb24KPiA+ID4gPiArICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsCj4gPiA+ ID4gc3VibGljZW5zZSwKPiA+ID4gPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvCj4gPiA+ID4gd2hvbSB0aGUKPiA+ID4gPiAr ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcKPiA+ID4gPiBjb25kaXRpb25zOgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZQo+ID4gPiA+IChpbmNs dWRpbmcgdGhlIG5leHQKPiA+ID4gPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBp biBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsCj4gPiA+ID4gcG9ydGlvbnMgb2YgdGhlCj4gPiA+ ID4gKyAqIFNvZnR3YXJlLgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKPiA+ID4gPiBLSU5ELCBF WFBSRVNTIE9SCj4gPiA+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YKPiA+ID4gPiBNRVJDSEFOVEFCSUxJVFksCj4gPiA+ID4gKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuwqDC oElOIE5PCj4gPiA+ID4gRVZFTlQgU0hBTEwKPiA+ID4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09Q WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCj4gPiA+ID4gREFNQUdFUyBP UiBPVEhFUgo+ID4gPiA+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SCj4gPiA+ID4gT1RIRVJXSVNFLCBBUklTSU5HCj4gPiA+ID4gKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IKPiA+ID4gPiBPVEhFUiBERUFMSU5HUwo+ID4gPiA+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4g PiA+ID4gKyAqCj4gPiA+ID4gKyAqLwo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvZmlybXdhcmUu aD4KPiA+ID4gPiArI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gPiA+ID4gKyNpbmNsdWRlICJpbnRl bF9odWMuaCIKPiA+ID4gPiArCj4gPiA+ID4gKy8qKgo+ID4gPiA+ICsgKiBET0M6IEh1QyBGaXJt d2FyZQo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBNb3RpdmF0aW9uOgo+ID4gPiA+ICsgKiBHRU45 IGludHJvZHVjZXMgYSBuZXcgZGVkaWNhdGVkIGZpcm13YXJlIGZvciB1c2FnZSBpbiBtZWRpYQo+ ID4gPiA+IEhFVkMgKEhpZ2gKPiA+ID4gPiArICogRWZmaWNpZW5jeSBWaWRlbyBDb2RpbmcpIG9w ZXJhdGlvbnMuIFVzZXJzcGFjZSBjYW4gdXNlIHRoZQo+ID4gPiA+IGZpcm13YXJlCj4gPiA+ID4g KyAqIGNhcGFiaWxpdGllcyBieSBhZGRpbmcgSHVDIHNwZWNpZmljIGNvbW1hbmRzIHRvIGJhdGNo Cj4gPiA+ID4gYnVmZmVycy4KPiA+ID4gPiArICoKPiA+ID4gPiArICogSW1wbGVtZW50YXRpb246 Cj4gPiA+ID4gKyAqIE9uIHN1cHBvcnRlZCBwbGF0Zm9ybXMsIGk5MTUncyBqb2IgaXMgdG8gbG9h ZCB0aGUgZmlybXdhcmUKPiA+ID4gPiBzdG9yZWQgb24gdGhlCj4gPiA+ID4gKyAqIGZpbGUgc3lz dGVtIGFuZCBhc3Npc3Qgd2l0aCBhdXRoZW50aWNhdGlvbi4gSXQgaXMgdXAgdG8KPiA+ID4gPiB1 c2Vyc3BhY2UgdG8KPiA+ID4gPiArICogZGV0ZWN0IHRoZSBwcmVzZW5jZSBvZiBIdUMgc3VwcG9y dCBvbiBhIHBsYXRmb3JtLCBvbiB0aGVpcgo+ID4gPiA+IG93bi4KPiA+ID4gPiArICogRm9yIGRl YnVnZ2luZywgaTkxNSBwcm92aWRlcyBhIGRlYnVnZnMgZmlsZSwKPiA+ID4gPiBpOTE1X2h1Y19s b2FkX3N0YXR1c19pbmZvCj4gPiA+ID4gKyAqIHdoaWNoIGRpc3BsYXlzIHRoZSBmaXJtd2FyZSBs b2FkIHN0YXR1cy4KPiA+ID4gQWJvdmUgY29tbWVudCByZWZlcnMgdG8gZmVhdHVyZXMgYWRkZWQg aW4gc3Vic2VxdWVudCBwYXRjaGVzIGFuZCBpcwo+ID4gPiBub3QKPiA+ID4gZW50aXJlbHkgYWNj dXJhdGUgYXQgdGhhdC4gU28gSSB3b3VsZCBqdXN0IHJlbW92ZSB0aGlzIHdob2xlIGJsb2NrLgo+ ID4gPiBMZXNzCj4gPiA+IGNvbW1lbnRpbmcgaXMgYmV0dGVyIHRoYW4gbWlzbGVhZGluZyBjb21t ZW50aW5nLgo+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiArICoKPiA+ID4gPiArICogVGhlIHNhbWUg ZmlybXdhcmUgbG9hZGVyIGlzIHVzZWQgYXMgdGhlIEd1Qy4gRmlybXdhcmUgKgo+ID4gPiA+IGJp bmFyeSBpcyBmZXRjaGVkIGJ5Cj4gPiA+ID4gKyAqIHRoZSBsb2FkZXIgYXN5bmNocm9ub3VzbHkg ZnJvbSB0aGUgZHJpdmVyIGluaXQgcHJvY2Vzcy4KPiA+ID4gPiBIb3dldmVyLCB0aGUgYWN0dWFs Cj4gPiA+IFJlbW92ZSAqIGZyb20gIkZpcm13YXJlICogYmluYXJ5Ii4gTG9hZGluZyBpcyBub3Qg YXN5bmNocm9ub3VzIHNvCj4gPiA+IHJlbW92ZSB0aGlzCj4gPiA+IHN0YXRlbWVudC4KPiA+ID4g Cj4gPiA+ID4gCj4gPiA+ID4gKyAqIGxvYWRpbmcgdG8gSFcgaXMgZGVmZXJyZWQgdW50aWwgR0VN IGluaXRpYWxpemF0aW9uIGlzIGRvbmUuCj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIE5vdGUgdGhh dCBIdUMgZmlybXdhcmUgbG9hZGluZyBtdXN0IGJlIGRvbmUgYmVmb3JlIEd1Qwo+ID4gPiA+IGxv YWRpbmcuCj4gPiA+ID4gKyAqLwo+ID4gPiA+ICsKPiA+ID4gPiArI2RlZmluZSBJOTE1X1NLTF9I VUNfVUNPREUgImk5MTUvc2tsX2h1Y192ZXIwMV8wN18xMzk4LmJpbiIKPiA+ID4gPiArTU9EVUxF X0ZJUk1XQVJFKEk5MTVfU0tMX0hVQ19VQ09ERSk7Cj4gPiA+IFBsZWFzZSB1cGRhdGUgdG8gdXNl IHRoZSBuZXcgYXBwcm9hY2ggdXNlZCBieSBHdUMgZm9yIHNwZWNpZnlpbmcKPiA+ID4gcmVxdWly ZWQgdmVyc2lvbiBhbmQgY29uc3RydWN0aW5nIHRoZSBmaWxlIHBhdGguIFNlZQo+ID4gPiBpbnRl bF9ndWNfbG9hZGVyLmMuCj4gPiA+IEh1QyBmaXJtd2FyZSB2ZXJzaW9uaW5nIGluY2x1ZGVzIHRo ZSBidWlsZCBudW1iZXIgYWZ0ZXIgdGhlIG1pbm9yCj4gPiA+IHNvCj4gPiA+IHNvbWUgbW9kaWZp Y2F0aW9uIHdpbGwgYmUgbmVlZGVkLgo+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiArCj4gPiA+ID4g Ky8qKgo+ID4gPiA+ICsgKiBpbnRlbF9odWNfbG9hZF91Y29kZSgpIC0gRE1BJ3MgdGhlIGZpcm13 YXJlCj4gPiA+ID4gKyAqIEBkZXY6IHRoZSBkcm0gZGV2aWNlCj4gPiA+IEZpeCBuYW1lIGFuZCBw YXJhbWV0ZXIKPiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIFRoaXMgZnVu Y3Rpb24gdGFrZXMgdGhlIGdlbSBvYmplY3QgY29udGFpbmluZyB0aGUgZmlybXdhcmUsCj4gPiA+ ID4gc2V0cyB1cCB0aGUgRE1BCj4gPiA+ID4gKyAqIGVuZ2luZSBNTUlPLCB0cmlnZ2VycyB0aGUg RE1BIG9wZXJhdGlvbiBhbmQgd2FpdHMgZm9yIGl0IHRvCj4gPiA+ID4gZmluaXNoLgo+ID4gPiA+ ICsgKgo+ID4gPiA+ICsgKiBUcmFuc2ZlciB0aGUgZmlybXdhcmUgaW1hZ2UgdG8gUkFNIGZvciBl eGVjdXRpb24gYnkgdGhlCj4gPiA+ID4gbWljcm9jb250cm9sbGVyLgo+ID4gPiA+ICsgKgo+ID4g PiA+ICsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgbm9uLXplcm8gb24gZmFpbHVyZQo+ID4gPiA+ ICsgKi8KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBpbnQgaHVjX3Vjb2RlX3hmZXIoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3Qg aW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsKPiA+ID4gPiArCXN0 cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ID4gPiA+ICsJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwOwo+ ID4gPiA+ICsJdTMyIHNpemU7Cj4gPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiA+ICsKPiA+ID4gPiAr CXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihodWNfZnctCj4gPiA+ID4g PnVjX2Z3X29iaiwgZmFsc2UpOwo+ID4gPiA+ICsJaWYgKHJldCkgewo+ID4gPiA+ICsJCURSTV9E RUJVR19EUklWRVIoInNldC1kb21haW4gZmFpbGVkICVkXG4iLCByZXQpOwo+ID4gPiA+ICsJCXJl dHVybiByZXQ7Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJdm1hID0gaTkxNV9nZW1f b2JqZWN0X2dndHRfcGluKGh1Y19mdy0+dWNfZndfb2JqLCBOVUxMLAo+ID4gPiA+IDAsIDAsIDAp Owo+ID4gPiA+ICsJaWYgKElTX0VSUih2bWEpKSB7Cj4gPiA+ID4gKwkJRFJNX0RFQlVHX0RSSVZF UigicGluIGZhaWxlZCAlZFxuIiwKPiA+ID4gPiAoaW50KVBUUl9FUlIodm1hKSk7Cj4gPiA+ID4g KwkJcmV0dXJuIFBUUl9FUlIodm1hKTsKPiA+ID4gPiArCX0KPiA+ID4gPiArCj4gPiA+ID4gKwkv KiBJbnZhbGlkYXRlIEd1QyBUTEIgdG8gbGV0IEd1QyB0YWtlIHRoZSBsYXRlc3QgdXBkYXRlcwo+ ID4gPiA+IHRvIEdUVC4gKi8KPiA+ID4gPiArCUk5MTVfV1JJVEUoR0VOOF9HVENSLCBHRU44X0dU Q1JfSU5WQUxJREFURSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJV0FSTl9PTighbXV0ZXhfaXNfbG9j a2VkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCkpOwo+ID4gPiBJIGRvbid0IHNlZSByZWFz b24gZm9yIHRoaXMgV0FSTl9PTiBjaGVjay4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKPiA+ID4g aW4gd2VsbCBkZWZpbmVkIHBhdGhzIHRoYXQgcmVxdWlyZSBsb2NraW5nIHdheSB1cCB0aGUgY2hh aW4uCj4gPiA+IEkgdGhpbmsgd2UgY2FuIHJlbW92ZSBpdC4KPiA+ID4gCj4gPiA+ID4gCj4gPiA+ ID4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsJLyogaW5pdCBXT1BDTSAqLwo+ID4gPiA+ICsJSTkxNV9XUklU RShHVUNfV09QQ01fU0laRSwgZ3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKTsKPiA+ID4gPiArCUk5 MTVfV1JJVEUoRE1BX0dVQ19XT1BDTV9PRkZTRVQsIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUKPiA+ ID4gPiB8Cj4gPiA+ID4gKwkJCUhVQ19MT0FESU5HX0FHRU5UX0dVQyk7Cj4gPiA+ID4gKwo+ID4g PiA+ICsJLyogU2V0IHRoZSBzb3VyY2UgYWRkcmVzcyBmb3IgdGhlIHVDb2RlICovCj4gPiA+ID4g KwlvZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHZtYSkgKyBodWNfZnctPmhlYWRlcl9vZmZzZXQ7 Cj4gPiA+ID4gKwlJOTE1X1dSSVRFKERNQV9BRERSXzBfTE9XLCBsb3dlcl8zMl9iaXRzKG9mZnNl dCkpOwo+ID4gPiA+ICsJSTkxNV9XUklURShETUFfQUREUl8wX0hJR0gsIHVwcGVyXzMyX2JpdHMo b2Zmc2V0KSAmCj4gPiA+ID4gMHhGRkZGKTsKPiA+ID4gPiArCj4gPiA+ID4gKwkvKiBIYXJkd2Fy ZSBkb2Vzbid0IGxvb2sgYXQgZGVzdGluYXRpb24gYWRkcmVzcyBmb3IgSHVDLgo+ID4gPiA+IFNl dCBpdCB0byAwLAo+ID4gPiA+ICsJwqAqIGJ1dCBzdGlsbCBwcm9ncmFtIHRoZSBjb3JyZWN0IGFk ZHJlc3Mgc3BhY2UuCj4gPiA+ID4gKwnCoCovCj4gPiA+ID4gKwlJOTE1X1dSSVRFKERNQV9BRERS XzFfTE9XLCAwKTsKPiA+ID4gPiArCUk5MTVfV1JJVEUoRE1BX0FERFJfMV9ISUdILCBETUFfQURE UkVTU19TUEFDRV9XT1BDTSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc2l6ZSA9IGh1Y19mdy0+aGVh ZGVyX3NpemUgKyBodWNfZnctPnVjb2RlX3NpemU7Cj4gPiA+ID4gKwlJOTE1X1dSSVRFKERNQV9D T1BZX1NJWkUsIHNpemUpOwo+ID4gPiA+ICsKPiA+ID4gPiArCS8qIFN0YXJ0IHRoZSBETUEgKi8K PiA+ID4gPiArCUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURfQklUX0VOQUJMRShIVUNfVUtF Uk5FTCB8Cj4gPiA+ID4gU1RBUlRfRE1BKSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJLyogV2FpdCBm b3IgRE1BIHRvIGZpbmlzaCAqLwo+ID4gPiA+ICsJcmV0ID0gd2FpdF9mb3IoKEk5MTVfUkVBRChE TUFfQ1RSTCkgJiBTVEFSVF9ETUEpID09IDAsCj4gPiA+ID4gMTAwKTsKPiA+ID4gPiArCj4gPiA+ ID4gKwlEUk1fREVCVUdfRFJJVkVSKCJIdUMgRE1BIHRyYW5zZmVyIHdhaXQgb3ZlciB3aXRoIHJl dAo+ID4gPiA+ICVkXG4iLCByZXQpOwo+ID4gPiA+ICsKPiA+ID4gPiArCWludGVsX3VuY29yZV9m b3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiA+ID4gPiArCj4gPiA+ID4g KwkvKgo+ID4gPiA+ICsJwqAqIFdlIGtlZXAgdGhlIG9iamVjdCBwYWdlcyBmb3IgcmV1c2UgZHVy aW5nIHJlc3VtZS4gQnV0Cj4gPiA+ID4gd2UgY2FuIHVucGluIGl0Cj4gPiA+ID4gKwnCoCogbm93 IHRoYXQgRE1BIGhhcyBjb21wbGV0ZWQsIHNvIGl0IGRvZXNuJ3QgY29udGludWUgdG8KPiA+ID4g PiB0YWtlIHVwIHNwYWNlLgo+ID4gPiA+ICsJwqAqLwo+ID4gPiA+ICsJaTkxNV92bWFfdW5waW4o dm1hKTsKPiA+ID4gPiArCj4gPiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiA+ICt9Cj4gPiA+ID4g Kwo+ID4gPiA+ICsvKioKPiA+ID4gPiArICogaW50ZWxfaHVjX2luaXQoKSAtIGluaXRpYXRlIEh1 QyBmaXJtd2FyZSBsb2FkaW5nIHJlcXVlc3QKPiA+ID4gPiArICogQGRldjogdGhlIGRybSBkZXZp Y2UKPiA+ID4gPiArICoKPiA+ID4gPiArICogQ2FsbGVkIGVhcmx5IGR1cmluZyBkcml2ZXIgbG9h ZCwgYnV0IGFmdGVyIEdFTSBpcwo+ID4gPiA+IGluaXRpYWxpc2VkLiBUaGUgbG9hZGluZwo+ID4g PiA+ICsgKiB3aWxsIGNvbnRpbnVlIG9ubHkgd2hlbiBkcml2ZXIgZXhwbGljaXRseSBzcGVjaWZ5 IGZpcm13YXJlCj4gPiA+ID4gbmFtZSBhbmQgdmVyc2lvbi4KPiA+ID4gPiArICogQWxsIG90aGVy IGNhc2VzIGFyZSBjb25zaWRlcmVkIGFzIFVDX0ZJUk1XQVJFX05PTkUgZWl0aGVyCj4gPiA+ID4g YmVjYXVzZSBIVyBpcyBub3QKPiA+ID4gPiArICogY2FwYWJsZSBvciBkcml2ZXIgeWV0IHN1cHBv cnQgaXQuIEFuZCB0aGVyZSB3aWxsIGJlIG5vIGVycm9yCj4gPiA+ID4gbWVzc2FnZSBmb3IKPiA+ ID4gPiArICogVUNfRklSTVdBUkVfTk9ORSBjYXNlcy4KPiA+ID4gPiArICoKPiA+ID4gPiArICog VGhlIERNQS1jb3B5aW5nIHRvIEhXIGlzIGRvbmUgbGF0ZXIgd2hlbgo+ID4gPiA+IGludGVsX2h1 Y191Y29kZV9sb2FkKCkgaXMgY2FsbGVkLgo+ID4gPiBpbnRlbF9odWNfdWNvZGVfbG9hZCgpIHNo b3VsZCBiZSBpbnRlbF9odWNfbG9hZCgpLgo+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiArICovCj4g PiA+ID4gK3ZvaWQgaW50ZWxfaHVjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4g PiArewo+ID4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOwo+ID4gPiA+ICsJc3RydWN0IGludGVsX2h1YyAqaHVjID0gJmRldl9wcml2LT5odWM7 Cj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZodWMtPmh1Y19mdzsKPiA+ ID4gPiArCWNvbnN0IGNoYXIgKmZ3X3BhdGggPSBOVUxMOwo+ID4gPiA+ICsKPiA+ID4gPiArCWh1 Y19mdy0+dWNfZGV2ID0gZGV2Owo+ID4gPiA+ICsJaHVjX2Z3LT51Y19md19wYXRoID0gTlVMTDsK PiA+ID4gPiArCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKPiA+ID4g PiArCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9OT05FOwo+ID4gPiA+ICsJaHVj X2Z3LT5md190eXBlID0gVUNfRldfVFlQRV9IVUM7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKCFI QVNfSFVDX1VDT0RFKGRldl9wcml2KSkKPiA+ID4gPiArCQlyZXR1cm47Cj4gPiA+ID4gKwo+ID4g PiA+ICsJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKSB7Cj4gPiA+ID4gKwkJZndfcGF0aCA9IEk5 MTVfU0tMX0hVQ19VQ09ERTsKPiA+ID4gPiArCQlodWNfZnctPm1ham9yX3Zlcl93YW50ZWQgPSAx Owo+ID4gPiA+ICsJCWh1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IDc7Cj4gPiA+ID4gKwl9Cj4g PiA+ID4gKwo+ID4gPiA+ICsJaWYgKGZ3X3BhdGggPT0gTlVMTCkKPiA+ID4gPiArCQlyZXR1cm47 Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaHVjX2Z3LT51Y19md19wYXRoID0gZndfcGF0aDsKPiA+ID4g PiArCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfUEVORElORzsKPiA+ID4gPiAr Cj4gPiA+ID4gKwlEUk1fREVCVUdfRFJJVkVSKCJIdUMgZmlybXdhcmUgcGVuZGluZywgcGF0aCAl c1xuIiwKPiA+ID4gPiBmd19wYXRoKTsKPiA+ID4gPiArCj4gPiA+ID4gKwlpbnRlbF91Y19md19m ZXRjaChkZXYsIGh1Y19mdyk7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gKy8qKgo+ID4g PiA+ICsgKiBpbnRlbF9odWNfbG9hZCgpIC0gbG9hZCBIdUMgdUNvZGUgdG8gZGV2aWNlCj4gPiA+ ID4gKyAqIEBkZXY6IHRoZSBkcm0gZGV2aWNlCj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIENhbGxl ZCBmcm9tIGdlbV9pbml0X2h3KCkgZHVyaW5nIGRyaXZlciBsb2FkaW5nIGFuZCBhbHNvCj4gPiA+ ID4gYWZ0ZXIgYSBHUFUgcmVzZXQuCj4gPiA+ID4gKyAqIEJlIG5vdGUgdGhhdCBIdUMgbG9hZGlu ZyBtdXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBsb2FkaW5nLgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsg KiBUaGUgZmlybXdhcmUgaW1hZ2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGZldGNoZWQgaW50 bwo+ID4gPiA+IG1lbW9yeSBieSB0aGUKPiA+ID4gPiArICogZWFybGllciBjYWxsIHRvIGludGVs X2h1Y191Y29kZV9pbml0KCksIHNvIGhlcmUgd2UgbmVlZCBvbmx5Cj4gPiA+ID4gY2hlY2sgdGhh dAo+ID4gPiA+ICsgKiBpcyBzdWNjZWVkZWQsIGFuZCB0aGVuIHRyYW5zZmVyIHRoZSBpbWFnZSB0 byB0aGUgaC93Lgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBSZXR1cm46CW5vbi16ZXJvIGNvZGUg b24gZXJyb3IKPiA+ID4gPiArICovCj4gPiA+ID4gK2ludCBpbnRlbF9odWNfbG9hZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfdWNf ZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsKPiA+ID4gPiArCWludCBlcnI7Cj4g PiA+ID4gKwo+ID4gPiA+ICsJaWYgKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzID09IFVDX0ZJUk1XQVJF X05PTkUpCj4gPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJRFJNX0RFQlVH X0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPiA+ID4gPiArCQlo dWNfZnctPnVjX2Z3X3BhdGgsCj4gPiA+ID4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVj X2Z3LT5mZXRjaF9zdGF0dXMpLAo+ID4gPiA+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1 Y19mdy0+bG9hZF9zdGF0dXMpKTsKPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAoaHVjX2Z3LT5mZXRj aF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfU1VDQ0VTUyAmJgo+ID4gPiA+ICsJwqDCoMKgwqBodWNf ZnctPmxvYWRfc3RhdHVzID09IFVDX0ZJUk1XQVJFX0ZBSUwpCj4gPiA+ID4gKwkJcmV0dXJuIC1F Tk9FWEVDOwo+ID4gPiA+ICsKPiA+ID4gPiArCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJN V0FSRV9QRU5ESU5HOwo+ID4gPiA+ICsKPiA+ID4gPiArCXN3aXRjaCAoaHVjX2Z3LT5mZXRjaF9z dGF0dXMpIHsKPiA+ID4gPiArCWNhc2UgVUNfRklSTVdBUkVfRkFJTDoKPiA+ID4gPiArCQkvKiBz b21ldGhpbmcgd2VudCB3cm9uZyA6KCAqLwo+ID4gPiA+ICsJCWVyciA9IC1FSU87Cj4gPiA+ID4g KwkJZ290byBmYWlsOwo+ID4gPiA+ICsKPiA+ID4gPiArCWNhc2UgVUNfRklSTVdBUkVfTk9ORToK PiA+ID4gPiArCWNhc2UgVUNfRklSTVdBUkVfUEVORElORzoKPiA+ID4gPiArCWRlZmF1bHQ6Cj4g PiA+ID4gKwkJLyogImNhbid0IGhhcHBlbiIgKi8KPiA+ID4gPiArCQlXQVJOX09OQ0UoMSwgIkh1 QyBmdyAlcyBpbnZhbGlkIGZldGNoX3N0YXR1cyAlcwo+ID4gPiA+IFslZF1cbiIsCj4gPiA+ID4g KwkJCWh1Y19mdy0+dWNfZndfcGF0aCwKPiA+ID4gPiArCQkJaW50ZWxfdWNfZndfc3RhdHVzX3Jl cHIoaHVjX2Z3LQo+ID4gPiA+ID5mZXRjaF9zdGF0dXMpLAo+ID4gPiA+ICsJCQlodWNfZnctPmZl dGNoX3N0YXR1cyk7Cj4gPiA+ID4gKwkJZXJyID0gLUVOWElPOwo+ID4gPiA+ICsJCWdvdG8gZmFp bDsKPiA+ID4gPiArCj4gPiA+ID4gKwljYXNlIFVDX0ZJUk1XQVJFX1NVQ0NFU1M6Cj4gPiA+ID4g KwkJYnJlYWs7Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJZXJyID0gaHVjX3Vjb2Rl X3hmZXIoZGV2X3ByaXYpOwo+ID4gPiA+ICsJaWYgKGVycikKPiA+ID4gPiArCQlnb3RvIGZhaWw7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1NV Q0NFU1M7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc3RhdHVz OiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPiA+ID4gPiArCQlodWNfZnctPnVjX2Z3X3BhdGgsCj4g PiA+ID4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+ ID4gPiA+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsK PiA+ID4gPiArCj4gPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gPiArCj4gPiA+ID4gK2ZhaWw6Cj4g PiA+ID4gKwlpZiAoaHVjX2Z3LT5sb2FkX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9QRU5ESU5HKQo+ ID4gPiA+ICsJCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9GQUlMOwo+ID4gPiA+ ICsKPiA+ID4gPiArCURSTV9FUlJPUigiRmFpbGVkIHRvIGNvbXBsZXRlIEh1QyB1Q29kZSBsb2Fk IHdpdGggcmV0Cj4gPiA+ID4gJWRcbiIsIGVycik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJcmV0dXJu IGVycjsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArLyoqCj4gPiA+ID4gKyAqIGludGVs X2h1Y19maW5pKCkgLSBjbGVhbiB1cCByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciBIdUMKPiA+ID4g PiArICogQGRldjogdGhlIGRybSBkZXZpY2UKPiA+ID4gPiArICoKPiA+ID4gPiArICogQ2xlYW5z IHVwIGJ5IHJlbGVhc2luZyB0aGUgaHVjIGZpcm13YXJlIEdFTSBvYmouCj4gPiA+ID4gKyAqLwo+ ID4gPiA+ICt2b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+ ID4gK3sKPiA+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZGV2KTsKPiA+ID4gPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmRldl9wcml2 LT5odWMuaHVjX2Z3Owo+ID4gPiA+ICsKPiA+ID4gPiArCW11dGV4X2xvY2soJmRldi0+c3RydWN0 X211dGV4KTsKPiA+ID4gPiArCWlmIChodWNfZnctPnVjX2Z3X29iaikKPiA+ID4gPiArCQlkcm1f Z2VtX29iamVjdF91bnJlZmVyZW5jZSgmaHVjX2Z3LT51Y19md19vYmotCj4gPiA+ID4gPmJhc2Up Owo+ID4gPiBUaGVzZSBhcmUgbm93IHJlcGxhY2VkIHdpdGggaTkxNV9nZW1fb2JqZWN0X3B1dCho dWNfZnctPnVjX2Z3X29iaikKPiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gKwlodWNfZnctPnVjX2Z3 X29iaiA9IE5VTEw7Cj4gPiA+ID4gKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK PiA+ID4gPiArCj4gPiA+ID4gKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05P TkU7Cj4gPiA+ID4gK30KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==